KR100662846B1 - 데이터 처리 시스템 및 데이터 처리방법 - Google Patents
데이터 처리 시스템 및 데이터 처리방법 Download PDFInfo
- Publication number
- KR100662846B1 KR100662846B1 KR1020050107084A KR20050107084A KR100662846B1 KR 100662846 B1 KR100662846 B1 KR 100662846B1 KR 1020050107084 A KR1020050107084 A KR 1020050107084A KR 20050107084 A KR20050107084 A KR 20050107084A KR 100662846 B1 KR100662846 B1 KR 100662846B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- registers
- program
- static
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012545 processing Methods 0.000 title claims abstract description 20
- 230000003068 static effect Effects 0.000 claims abstract description 54
- 238000013519 translation Methods 0.000 claims description 14
- 238000003672 processing method Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 5
- 230000004083 survival effect Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4452—Software pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
Claims (14)
- 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 상기 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하여 상기 프로그램을 컴파일하는 단계; 및,상기 컴파일링된 프로그램을 수행하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
- 제 1 항에 있어서,상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는,상기 프로그램 수행 중에 발생하는 스필/필(spill/fill)코드 생성을 최소화할 수 있도록 결정되는 것을 특징으로 하는 데이터 처리방법.
- 제 2 항에 있어서,상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는 상기 프로그램에 포함된 루프마다 결정되는 것을 특징으로 하는 데이터 처리방법.
- 제 2 항에 있어서, 상기 컴파일 단계는,상기 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하는 단계;상기 결정된 정적 레지스터의 수와 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하는 단계; 및,상기 결정된 회전 레지스터의 수에 대응하는 값을 소정의 특별 레지스터에 저장하도록 하는 명령어를 상기 프로그램에 추가하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
- 제 4 항에 있어서, 상기 프로그램 수행 단계는,상기 회전 레지스터의 수에 대응하는 값을 상기 특별 레지스터에 저장하도록 하는 명령어를 실행하는 단계; 및,상기 특별 레지스터에 저장된 값을 기초로 레지스터의 논리 주소로부터 물리 주소를 구하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
- 제 5 항에 있어서,상기 구해진 물리 주소에 대응하는 레지스터에 액세스하는 단계; 를 더 포함하는 것을 특징으로 하는 데이터 처리방법.
- 제 6 항에 있어서, 상기 물리주소를 구하는 단계는,상기 논리 주소와 상기 특별 레지스터에 저장된 값의 크기를 비교하는 단계; 및,상기 비교 결과, 상기 논리 주소가 상기 특별 레지스터에 저장된 값 이상인 경우 상기 논리 주소를 상기 물리 주소로 결정하는 단계; 를 포함하는 것을 특징으로 하는 데이터 처리방법.
- 제 7 항에 있어서,상기 비교 결과, 상기 논리주소가 상기 특별 레지스터에 저장된 값 이상인 경우, 아래 수식에 의해 상기 물리주소를 결정하는 것을 특징으로 하는 데이터 처리방법:PR={(LR+RRB)%R}여기서, PR은 상기 레지스터의 물리주소, LR은 상기 레지스터의 논리주소, RRB는 상기 베이스 레지스터에 저장된 현재의 반복 횟수에 해당하는 값, R은 상기 특별 레지스터에 저장된 값이며, %는 나머지 연산자이다.
- 소정 프로그램에 포함된 변수들에 대한 레지스터 할당에서 필요한 정적 레지스터의 수 및 회전 레지스터의 수를 결정하고, 상기 결정된 정적 레지스터의 수 및 회전 레지스터의 수에 기초하여 상기 변수들에 레지스터를 할당하여 상기 프로그램을 컴파일하는 컴파일러; 및,상기 정적 레지스터와 상기 회전 레지스터로 이루어진 레지스터 파일을 포함하고, 상기 컴파일링된 프로그램을 수행하는 프로세서; 를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
- 제 9 항에 있어서,상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는,상기 프로그램 수행 중에 발생하는 스필/필(spill/fill)코드 생성을 최소화할 수 있도록 결정되는 것을 특징으로 하는 데이터 처리 시스템.
- 제 9 항에 있어서,상기 정적 레지스터의 수 및 상기 회전 레지스터의 수는 상기 프로그램에 포함된 루프마다 결정되는 것을 특징으로 하는 데이터 처리 시스템.
- 제 9 항에 있어서, 상기 컴파일러는,상기 결정된 회전 레지스터의 수에 대응하는 값을 소정의 특별 레지스터에 저장하도록 하는 명령어를 상기 프로그램에 추가하여 컴파일하는 것을 특징으로 하는 데이터 처리 시스템.
- 제 12 항에 있어서, 상기 프로세서는,상기 회전 레지스터의 수에 대응하는 값을 저장하는 특별 레지스터;상기 회전 레지스터의 수에 대응하는 값을 상기 특별 레지스터에 저장하도록 하는 명령어를 실행하는 실행부; 및,상기 특별 레지스터에 저장된 값을 기초로 레지스터의 논리 주소로부터 물리 주소를 구하는 주소 번역부; 를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
- 제 13 항에 있어서, 상기 주소 번역부는,상기 베이스 레지스터에 저장된 현재의 반복횟수에 해당하는 값(RRB), 상기 레지스터의 논리주소(LR), 상기 특별 레지스터에 저장된 값(R)을 입력받아 아래 수학식에 의해 산출된 값(PR)을 출력하는 연산부;상기 레지스터의 논리주소 및 상기 특별 레지스터에 저장된 값을 비교하는 비교부; 및,상기 연산부에서 출력된 값과 상기 레지스터의 논리주소 중 하나를 상기 비교부의 비교 결과에 따라 선택적으로 출력하는 선택부; 를 포함하는 것을 특징으로 하는 데이터 처리 시스템:PR={(LR+RRB)%R}여기서, %는 나머지 연산자이다.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050107084A KR100662846B1 (ko) | 2005-11-09 | 2005-11-09 | 데이터 처리 시스템 및 데이터 처리방법 |
US11/506,887 US7660970B2 (en) | 2005-11-09 | 2006-08-21 | Register allocation method and system for program compiling |
EP06122609A EP1785857A3 (en) | 2005-11-09 | 2006-10-19 | Data processing system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050107084A KR100662846B1 (ko) | 2005-11-09 | 2005-11-09 | 데이터 처리 시스템 및 데이터 처리방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100662846B1 true KR100662846B1 (ko) | 2007-01-02 |
Family
ID=37546783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050107084A KR100662846B1 (ko) | 2005-11-09 | 2005-11-09 | 데이터 처리 시스템 및 데이터 처리방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7660970B2 (ko) |
EP (1) | EP1785857A3 (ko) |
KR (1) | KR100662846B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140126192A (ko) * | 2013-04-22 | 2014-10-30 | 삼성전자주식회사 | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8191324B2 (en) * | 2007-07-23 | 2012-06-05 | Arne Wallin | Modular pre-cast composite flooring panel and floor system |
US9009692B2 (en) * | 2009-12-26 | 2015-04-14 | Oracle America, Inc. | Minimizing register spills by using register moves |
KR20140122564A (ko) * | 2013-04-10 | 2014-10-20 | 삼성전자주식회사 | 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법 |
KR102545176B1 (ko) | 2015-11-16 | 2023-06-19 | 삼성전자주식회사 | 레지스터 관리 방법 및 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040081379A (ko) * | 2003-03-13 | 2004-09-21 | 노스랍 그루만 코포레이션 | 극한 파이프라인 및 최적화된 재배열 기술 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0676691A3 (en) * | 1994-04-06 | 1996-12-11 | Hewlett Packard Co | Device for saving and restoring registers in a digital computer. |
US6230317B1 (en) * | 1997-07-11 | 2001-05-08 | Intel Corporation | Method and apparatus for software pipelining of nested loops |
US6321330B1 (en) * | 1999-05-28 | 2001-11-20 | Intel Corporation | Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch |
US6507947B1 (en) * | 1999-08-20 | 2003-01-14 | Hewlett-Packard Company | Programmatic synthesis of processor element arrays |
GB0002848D0 (en) | 2000-02-08 | 2000-03-29 | Siroyan Limited | Communicating instruction results in processors and compiling methods for processors |
US6651247B1 (en) * | 2000-05-09 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form |
TW525091B (en) * | 2000-10-05 | 2003-03-21 | Koninkl Philips Electronics Nv | Retargetable compiling system and method |
US20020144092A1 (en) * | 2001-01-31 | 2002-10-03 | Siroyan Limited. | Handling of loops in processors |
US7272832B2 (en) * | 2001-10-25 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform |
US6986131B2 (en) * | 2002-06-18 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for efficient code generation for modulo scheduled uncounted loops |
US20030237080A1 (en) * | 2002-06-19 | 2003-12-25 | Carol Thompson | System and method for improved register allocation in an optimizing compiler |
US7316012B2 (en) * | 2003-09-29 | 2008-01-01 | Intel Corporation | System, method, and apparatus for spilling and filling rotating registers in software-pipelined loops |
US7617496B2 (en) * | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
US7395419B1 (en) * | 2004-04-23 | 2008-07-01 | Apple Inc. | Macroscalar processor architecture |
-
2005
- 2005-11-09 KR KR1020050107084A patent/KR100662846B1/ko active IP Right Grant
-
2006
- 2006-08-21 US US11/506,887 patent/US7660970B2/en active Active
- 2006-10-19 EP EP06122609A patent/EP1785857A3/en not_active Ceased
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040081379A (ko) * | 2003-03-13 | 2004-09-21 | 노스랍 그루만 코포레이션 | 극한 파이프라인 및 최적화된 재배열 기술 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140126192A (ko) * | 2013-04-22 | 2014-10-30 | 삼성전자주식회사 | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 |
KR101998278B1 (ko) * | 2013-04-22 | 2019-10-01 | 삼성전자주식회사 | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US7660970B2 (en) | 2010-02-09 |
EP1785857A3 (en) | 2009-01-28 |
EP1785857A2 (en) | 2007-05-16 |
US20070169032A1 (en) | 2007-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5689712A (en) | Profile-based optimizing postprocessors for data references | |
US7603546B2 (en) | System, method and apparatus for dependency chain processing | |
US5303357A (en) | Loop optimization system | |
US7103881B2 (en) | Virtual machine to provide compiled code to processing elements embodied on a processor device | |
JP3180075B2 (ja) | 異なる命令コード相互間の動的変換装置及び方法 | |
US5721927A (en) | Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions | |
JP3601341B2 (ja) | 並列プログラム生成方法 | |
US7007271B2 (en) | Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer | |
US8893104B2 (en) | Method and apparatus for register spill minimization | |
KR100662846B1 (ko) | 데이터 처리 시스템 및 데이터 처리방법 | |
JPH11288376A (ja) | キャッシュにおけるコ―ド変換方法 | |
CN111399990A (zh) | 解释执行智能合约指令的方法及装置 | |
GB2308470A (en) | Bit-width reduction of processor instructions | |
Gerzhoy et al. | Nested mimd-simd parallelization for heterogeneous microprocessors | |
US6954927B2 (en) | Hardware supported software pipelined loop prologue optimization | |
US8549466B2 (en) | Tiered register allocation | |
KR101670916B1 (ko) | 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치 | |
Bordawekar et al. | E cient compilation of out-of-core data parallel programs | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
Huynh et al. | Evaluation of offset assignment heuristics | |
US11947963B2 (en) | Computing resource management with fast sorting using vector instructions | |
Bernstein et al. | Usable assembly language for GPUs: a success story | |
KR20090059337A (ko) | 내장형 소프트웨어의 성능 향상을 위한 컴파일러의레지스터 할당 방법 | |
Adriaansen | Code generation for a Coarse-Grained Reconfigurable Architecture | |
Chen et al. | ORC2DSP: Compiler Infrastructure Supports for VLIW DSP Processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20121115 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20131122 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20141119 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20151118 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20161121 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20171121 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20181119 Year of fee payment: 13 |