KR101998278B1 - 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 - Google Patents
회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 Download PDFInfo
- Publication number
- KR101998278B1 KR101998278B1 KR1020130044432A KR20130044432A KR101998278B1 KR 101998278 B1 KR101998278 B1 KR 101998278B1 KR 1020130044432 A KR1020130044432 A KR 1020130044432A KR 20130044432 A KR20130044432 A KR 20130044432A KR 101998278 B1 KR101998278 B1 KR 101998278B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- rotating
- mode
- register file
- live
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 42
- 238000012545 processing Methods 0.000 claims description 16
- 230000007704 transition Effects 0.000 claims 1
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000012546 transfer Methods 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/46—Multiprogramming arrangements
-
- 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
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- 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
-
- 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
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
런타임시에 로컬 레지스터 파일의 회전 레지스터를 동적으로 설정하도록 스케줄링하는 장치에 관한 것이다. 일 양상에 따른 스케줄링 장치는 중앙 레지스터 파일(central register file)에 미리 할당된 비회전 레지스터가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 판단부와, 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 선택부 및 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링하는 스케줄링부를 포함할 수 있다.
Description
런타임시에 로컬 레지스터 파일의 회전 레지스터 사이즈를 동적으로 설정하도록 스케줄링하는 장치 및 방법에 관한 것이다.
일반적으로 CGRA 기반의 프로세서에서 중앙 레지스터 파일(central register file)은 비회전 레지스터(non-rotating register)와 회전 레지스터(rotating register)로 구분된다. 비회전 레지스터는 라이브-인 및 라이브-아웃 값들을 저장하는데 이용되며, 회전 레지스터는 임시 값을 저장하는데 사용된다. 일반적으로 회전 레지스터의 사이즈와 비회전 레지스터의 사이즈는 하드웨어 설계시 결정된다. 이와 같이, 중앙 레지스터 파일의 비회전 레지스터 및 회전 레지스터의 사이즈는 하드웨어 설계 단계에서 결정되므로 프로그램 루프의 라이브-인/아웃 값에 따라 비회전 레지스터의 사이즈가 부족해지는 경우가 발생할 수 있다. 이로 인해 오버헤드가 증가하여 프로세서의 처리 성능의 감소를 초래하게 된다.
프로그램 루프의 라이브-인, 라이브-아웃 값을 기초로 런타임시에 동적으로 로컬 레지스터 파일의 회전 레지스터 크기를 설정하여 로컬 레지스터 파일에 비회전 레지스터를 할당하고 라이브-인/아웃 값을 처리하도록 스케줄링 하는 장치 및 방법이 제시된다.
일 양상에 따르면, 스케줄링 장치는 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 판단부, 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 선택부 및 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링하는 스케줄링부를 포함할 수 있다.
판단부는 프로그램의 루프에 대하여 필요한 비회전 레지스터의 사이즈를 산출하고, 산출된 비회전 레지스터의 사이즈와 중앙 레지스터 파일의 비회전 레지스터의 사이즈를 비교하여 비회전 레지스터가 충분한지를 판단할 수 있다.
판단부는 프로그램 루프의 라이브-인/아웃(live-in/out) 값을 기초로 비회전 레지스터의 사이즈를 산출할 수 있다.
스케줄링부는 각 로컬 레지스터 파일에 대하여 회전 레지스터의 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성할 수 있다.
회전 구성 명령어는 프로세서의 VLIW(Very Long Instruction Word) 모드에서 CGA(Coarse Grain Array) 모드로 전환하기 이전에 수행될 수 있다.
스케줄링부는 각 로컬 레지스터 파일에 대하여 비회전 레지스터로 할당될 레지스터 인덱스를 결정하고, 결정된 레지스터 인덱스를 이용하여 라이브-인/아웃 값을 처리하는 명령어를 생성할 수 있다.
라이브-인/아웃 값을 처리하는 명령어는 프로세서의 VLIW 모드에서 CGA 모드로 전환되기 전에 VLIW 모드에서 중앙 레지스터 파일의 비회전 레지스터에 저장된 라이브-인 값을 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 할 수 있다.
라이브-인/아웃 값을 처리하는 명령어는 프로세서의 CGA 모드에서 VLIW 모드로 전환되면 CGA 모드에서 각 로컬 레지스터 파일의 비회전 레지스터에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 할 수 있다.
일 양상에 따르면, 스케줄링 방법은 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 단계, 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 단계 및 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링하는 단계를 포함할 수 있다.
비회전 레지스터가 충분한지 판단하는 단계는 프로그램의 루프에 대하여 필요한 비회전 레지스터의 사이즈를 산출하는 단계 및 산출된 비회전 레지스터의 사이즈와 중앙 레지스터 파일의 비회전 레지스터의 사이즈를 비교하는 단계를 포함할 수 있다.
비회전 레지스터의 사이즈를 산출하는 단계는 프로그램 루프의 라이브-인/아웃(live-in/out) 값을 기초로 비회전 레지스터의 사이즈를 산출할 수 있다.
비회전 레지스터를 스케줄링하는 단계는 각 로컬 레지스터 파일에 대하여 회전 레지스터의 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성할 수 있다.
회전 구성 명령어는 프로세서의 VLIW(Very Long Instruction Word) 모드에서 CGA(Coarse Grain Array) 모드로 전환하기 이전에 수행될 수 있다.
스케줄링 방법은 각 로컬 레지스터 파일에 대하여 비회전 레지스터로 할당될 레지스터 인덱스를 결정하는 단계 및 결정된 레지스터 인덱스를 이용하여 라이브-인/아웃 값을 처리하는 명령어를 생성하는 단계를 포함할 수 있다.
라이브-인/아웃 값을 처리하는 명령어는 프로세서의 VLIW 모드에서 CGA 모드로 전환되기 전에 상기 VLIW 모드에서 중앙 레지스터 파일의 비회전 레지스터에 저장된 라이브-인 값을 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 할 수 있다.
라이브-인/아웃 값을 처리하는 명령어는 프로세서의 CGA 모드에서 VLIW 모드로 전환되면 CGA 모드에서 각 로컬 레지스터 파일의 비회전 레지스터에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 할 수 있다.
프로그램 루프의 라이브-인/아웃 값에 따라 런타임시에 동적으로 로컬 레지스터 파일의 회전 레지스터 사이즈를 설정할 수 있으며, 이로 인해 중앙 레지스터 파일의 비회전 레지스터 사이즈가 라이브-인/아웃 값을 저장하기에 부족한 경우에 발생하는 성능 저하를 방지할 수 있다.
도 1은 일 실시예에 따른 스케줄링 장치의 블록도이다.
도 2는 일 실시예에 따른 재구성 가능 프로세서를 도시한 것이다.
도 3은 일 실시예에 따른 재구성 가능 프로세서의 VLIW 모드를 위한 스케줄링의 일 예이다.
도 4a 내지 도 4c는 일 실시예에 따른 재구성 가능 프로세서의 CGA 모드를 위한 스케줄링의 일 예이다.
도 5는 일 실시예에 따른 스케줄링 방법의 흐름도이다.
도 2는 일 실시예에 따른 재구성 가능 프로세서를 도시한 것이다.
도 3은 일 실시예에 따른 재구성 가능 프로세서의 VLIW 모드를 위한 스케줄링의 일 예이다.
도 4a 내지 도 4c는 일 실시예에 따른 재구성 가능 프로세서의 CGA 모드를 위한 스케줄링의 일 예이다.
도 5는 일 실시예에 따른 스케줄링 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 스케줄링 장치의 블록도이다. 도 2는 일 실시예에 따른 재구성 가능 프로세서(Reconfigurable processor)를 도시한 것이다.
도 2에 도시된 바와 같이, 재구성 가능 프로세서(200)는 연산(operation) 또는 명령어를 처리하는 다수의 기능 유닛(FU), 중앙 레지스터 파일(210) 및 로컬 레지스터 파일(220)을 포함하여 구성될 수 있다. 중앙 레지스터 파일 및 로컬 레지스터 파일(220)은 다수의 기능 유닛(FU)들 간의 데이터 전달을 위해 사용되거나 각종 연산 수행 결과를 저장한다.
재구성 가능 프로세서(200)는 일반적인 연산을 처리하기 위한 VLIW(very logn instruction) 모드와, 루프 연산을 처리하기 위한 CGA(coarse-grained array) 모드로 구동될 수 있다. 이때, VLIW 모드와 CGA 모드 간의 데이터 통신은 중앙 레지스터 파일(210)을 통해 이루어진다.
예를 들어, VLIW 모드는 일부의 기능 유닛을 이용하여 VLIW 인스트럭션 워드에 포함된 다수의 인스트럭션을 병렬 처리하고, 처리 결과를 중앙 레지스터 파일(210)에 저장한다. 루프 연산을 처리하기 위해 CGA 모드로 전환되기 전에 중앙 레지스터 파일(210)에 저장된 데이터 중 CGA 모드에서 사용될 라이브-인(live-in) 데이터는 로컬 레지스터 파일(220)로 이동되고 CGA 모드에서 기능 유닛은 로컬 레지스터 파일(220)를 통해 데이터를 읽고 기록할 수 있다
중앙 레지스터 파일(210)은 도시된 바와 같이 기능 유닛(FU)의 수행 결과 중의 임시 데이터를 저장하기 위한 회전 레지스터(R)와 CGA 모드의 라이브-인/아웃(live-in/out) 값을 저장하는 비회전 레지스터(N)로 구분될 수 있다. 중앙 레지스터 파일(210)의 회전 레지스터(R)와 비회전 레지스터(N)의 사이즈는 아키텍처 설계 단계에서 결정될 수 있다. 아키텍처 설계 단계에서 결정된 비회전 레지스터(N)의 사이즈가 라이브-인/아웃 값을 저장하기에 충분하지 않은 경우에는 많은 오버헤드가 발생할 수 있다.
도 1 및 도 2를 참조하면, 일 실시예에 따른 스케줄링 장치(100)는 재구성 가능 프로세서(200)가 연산을 처리할 때 중앙 레지스터 파일(210)의 비회전 레지스터(N) 사이즈가 라이브-인/아웃 데이터를 저장하기에 충분하지 않은 경우 로컬 레지스터 파일(220)에 동적으로 비회전 레지스터를 할당함으로써 오버헤드 없이 효율적인 처리가 가능하도록 프로그램을 스케줄링할 수 있다. 일반적으로 로컬 레지스터 파일(220)은 CGA 모드에서 처리되는 임시 데이터를 저장하기 위해 회전 레지스터로 구성된다.
도 1에 도시된 바와 같이, 스케줄링 장치(100)는 판단부(110), 선택부(120) 및 스케줄링부(130)를 포함한다. 이때, 판단부(110), 선택부(120) 및 스케줄링부(130)는 그 기능에 따른 논리적인 구분으로서 둘 이상의 구성 요소들이 통합되어 일체로 구현될 수 있다. 또한, 각 구성요소들(110,120,130)의 논리적인 기능 구분도 단지 설명의 편의를 위한 것으로서 그 본질에 반하지 않는 한 어느 하나의 구성요소에서 수행되는 일부 기능이 다른 구성요소에서 수행될 수 있다.
판단부(110)는 중앙 레지스터 파일(210)의 비회전 레지스터가 프로그램의 루프를 스케줄링하기에 충분한지를 판단한다. 예를 들어, 판단부(110)는 재구성 가능 프로세서(200)의 CGA 모드에서 처리될 프로그램의 각 루프에 대하여 라이브-인/아웃 값을 분석하여 필요한 비회전 레지스터의 사이즈를 산출할 수 있다. 산출된 비회전 레지스터의 사이즈를 중앙 레지스터 파일(210)의 비회전 레지스터(N) 사이즈와 비교하여 충분한지 여부를 판단할 수 있다. 예컨대, 산출된 비회전 레지스터의 사이즈에서 중앙 레지스터 파일(210)의 비회전 레지스터(N)의 사이즈를 뺀 값이 미리 설정된 임계치를 초과하는 경우에 충분하지 않은 것으로 판단할 수 있다.
선택부(120)는 판단 결과 산출된 비회전 레지스터가 부족한 경우 그 부족한 비회전 레지스터를 할당하기 위하여 로컬 레지스터 파일을 하나 이상 선택할 수 있다. 이때, 기능 유닛(FU)들 간의 연결 관계를 고려하여 로컬 레지스터 파일을 하나 이상 선택할 수 있다.
스케줄링부(130)는 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링할 수 있다. 또한, 스케줄링부(130)는 재구성 가능 프로세서(200)의 VLIW 모드에서 일반적인 연산을 처리하도록 VLIW 인스트럭션 워드를 생성하고, 루프 연산을 CGA 모드에서 처리하도록 하는 명령어 코드를 생성할 수 있다.
예를 들어, 스케줄링부(130)는 선택부(120)에서 하나 이상의 로컬 레지스터 파일이 선택되면 각 로컬 레지스터 파일에 대하여 회전 레지스터 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성할 수 있다. 회전 구성 명령어는 재구성 가능 프로세서(200)의 VLIW 모드에서 CGA 모드로 전환되기 이전에 수행되도록 생성될 수 있다. 회전 레지스터 사이즈는 선택된 각 로컬 레지스터 파일마다 다르게 설정될 수 있으며, 각 로컬 레지스터 파일에 회전 레지스터 사이즈를 설정함으로써 비회전 레지스터 사이즈가 결정될 수 있다.
스케줄링부(130)는 선택된 각 로컬 레지스터 파일에서 비회전 레지스터로 할당될 인덱스를 결정하고, 재구성 가능 프로세서(200)가 결정된 인덱스를 이용하여 라이브-인/아웃 값을 처리하도록 하는 명령어를 생성할 수 있다.
이때, 라이브-인/아웃 값을 처리하도록 하는 명령어에는 재구성 가능 프로세서(200)의 VLIW 모드에서 루프 연산을 처리하기 위해 CGA 모드로 전환되기 전에 중앙 레지스터 파일(210)의 비회전 레지스터에 저장된 라이브-인 값을 선택된 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 하는 코드를 포함할 수 있다.
또한, 라이브-인/아웃 값을 처리하도록 하는 명령어에는 재구성 가능 프로세서(200)의 CGA 모드에서 루프 연산을 처리한 후 VLIW 모드로 전환되면 각 로컬 레지스터 파일에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 하는 코드를 포함할 수 있다.
한편, 스케줄링부(130)는 판단부(110)의 판단 결과 중앙 레지스터 파일(210)의 비회전 레지스터(N)가 충분하면 중앙 레지스터 파일(210)의 비회전 레지스터(N)를 이용하여 라이브-인/아웃 값을 처리하도록 스케줄링할 수 있다. 스케줄링부(130)는 중앙 레지스터 파일(210)의 회전 레지스터 사이즈를 설정하는 명령어를 생성할 수 있다.
도 3은 일 실시예에 따른 재구성 가능 프로세서의 VLIW 모드를 위한 스케줄링의 일 예이다. 도 1 및 도 3을 참조하면, 스케줄링 장치(100)는 재구성 가능 프로세서(300)의 VLIW 모드에서 일반 연산 및 루프 연산을 처리하도록 스케줄링할 수 있다. 이때, VLIW 모드에서 매우 긴 인스트럭션 워드에 포함된 다수의 인스트럭션을 병렬 처리하는 기능 유닛들은 중앙 레지스터 파일(310)을 이용하여 데이터를 읽거나 기록한다. 전술한 바와 같이 스케줄링 장치(100)는 중앙 레지스터 파일(310)에 라이브-인/아웃 값을 처리하기 위한 비회전 레지스터(N)가 충분하지 않은 경우 로컬 레지스터 파일(320)에 비회전 레지스터를 할당하여 라이브-인/아웃 값을 읽거나 쓰도록 스케줄링할 수 있다. 도 3은 모든 로컬 레지스터 파일(320)에 비회전 레지스터를 할당한 것을 예시하였으나, 이는 하나의 예에 불과하고 일부의 로컬 레지스터 파일(320)에 비회전 레지스터를 할당하는 것이 가능하다.
스케줄링 장치(100)의 판단부(110)는 VLIW 모드에서 루프 연산의 라이브-인/아웃 데이터를 처리하기에 중앙 레지스터 파일(310)의 비회전 레지스터(N)가 충분하지 않은지를 판단하고, 선택부(120)는 그 판단 결과에 따라 하나 이상의 로컬 레지스터 파일(320)을 선택할 수 있다. 스케줄링부(130)는 선택된 하나 이상의 로컬 레지스터 파일(320) 각각의 회전 레지스터 사이즈를 설정하는 회전 구성 명령어를 생성할 수 있다. 이때, 회전 구성 명령어는 루프 연산의 처리 전에 수행되도록 할 수 있다.
도 4a 내지 도 4c는 일 실시예에 따른 재구성 가능 프로세서의 CGA 모드를 위한 스케줄링의 일 예이다. 도 1 및 도 4a 내지 도 4c를 참조하면, 스케줄링 장치(100)는 재구성 가능 프로세서(400)의 VLIW 모드에서 일반 연산을 처리하고, CGA 모드에서 루프 연산을 처리하도록 스케줄링할 수 있다. 예를 들어, 스케줄링 장치(100)는 전술한 바와 같이, 비회전 레지스터를 할당할 로컬 레지스터 파일의 번호와, 선택된 로컬 레지스터 파일에서 비회전 레지스터로 할당될 인덱스 정보를 포함하고, 라이브-인/아웃 데이터를 처리하도록 하는 명령어를 생성할 수 있다.
도 4a에 도시된 바와 같이, 재구성 가능 프로세서(400)는 생성된 명령어를 이용하여 VLIW 모드에서 CGA 모드로 전환되기 전에 중앙 레지스터 파일(410)의 비회전 레지스터(N)에 저장된 라이브-인 값을 로컬 레지스터 파일의 비회전 레지스터에 이동할 수 있다. 도 4b는 재구성 가능 프로세서(400)의 CGA 모드에서 비회전 레지스터가 할당된 하나 이상의 로컬 레지스터 파일(420)을 이용하여 루프 연산을 처리하는 것을 예시한 것이다. 도 4c는 도 4b의 CGA 모드에서 다시 VLIW 모드로 전환된 재구성 가능 프로세서(400)를 도시한 것이다. 재구성 가능 프로세서(400)는 스케줄링 장치(100)에서 생성된 라이브-아웃 값의 처리 명령어에 따라 CGA 모드에서 루프 연산의 처리 결과 생성되어 로컬 레지스터 파일(420)의 비회전 레지스터에 저장된 라이브 아웃 값을 중앙 레지스터 파일(410)의 비회전 레지스터에 이동할 수 있다.
도 5는 일 실시예에 따른 스케줄링 방법의 흐름도이다. 도 5에 도시된 바와 같은 스케줄링 방법은 도 1의 실시예에 따른 스케줄링 장치(100)에 의해 수행될 수 있다.
스케줄링 장치(100)는 중앙 레지스터 파일의 비회전 레지스터가 프로그램의 루프를 스케줄링하기에 충분한지를 판단한다(단계 510). 스케줄링 장치(100)는 프로그램의 각 루프에 대하여 라이브-인/아웃 값을 분석하여 필요한 비회전 레지스터의 사이즈를 산출하고, 산출된 비회전 레지스터의 사이즈를 중앙 레지스터 파일에 미리 할당된 비회전 레지스터 사이즈와 비교하여 그 충분 여부를 판단할 수 있다. 예를 들어, 산출된 비회전 레지스터의 사이즈가 중앙 레지스터 파일의 비회전 레지스터 사이즈보다 크거나, 산출된 비회전 레지스터의 사이즈에서 중앙 레지스터 파일의 비회전 레지스터의 사이즈를 뺀 값이 미리 설정된 임계치를 초과하는 경우에 충분하지 않은 것으로 판단할 수 있다.
그 다음, 산출된 비회전 레지스터가 충분하지 않은 것으로 판단되면 기능 유닛들 간의 연결 관계를 고려하여 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택할 수 있다(단계 520).
그 다음, 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링할 수 있다(단계 530). 또한, 스케줄링 장치(100)는 재구성 가능 프로세서(200)의 VLIW 모드에서 일반적인 연산을 처리하도록 VLIW 인스트럭션 워드를 생성하고, 루프 연산을 CGA 모드에서 처리하도록 하는 각종 연산 및 명령어를 생성할 수 있다.
예를 들어, 하나 이상의 로컬 레지스터 파일이 선택되면 각 로컬 레지스터 파일에 대하여 회전 레지스터 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성할 수 있다. 또한, 선택된 각 로컬 레지스터 파일 번호 및 그 로컬 레지스터 파일에서 비회전 레지스터로 할당될 인덱스를 지시하고, 재구성 가능 프로세서가 선택된 로컬 레지스터 파일 번호 및 인덱스를 이용하여 라이브-인/아웃 값을 처리하도록 하는 명령어를 생성할 수 있다. 이때, 회전 구성 명령어는 재구성 가능 프로세서의 VLIW 모드에서 CGA 모드로 전환되기 이전에 수행되도록 생성될 수 있다.
예를 들어, 라이브-인/아웃 값을 처리하도록 하는 명령어에는 재구성 가능 프로세서의 VLIW 모드에서 루프 연산을 처리하기 위해 CGA 모드로 전환되기 전에 중앙 레지스터 파일(210)의 비회전 레지스터에 저장된 라이브-인 값을 선택된 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 하는 코드를 포함할 수 있다. 또한, CGA 모드에서 루프 연산을 처리한 후 VLIW 모드로 전환되면 각 로컬 레지스터 파일에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 하는 코드를 포함할 수 있다.
한편, 판단 결과(단계 510) 중앙 레지스터 파일의 비회전 레지스터가 충분하면 중앙 레지스터 파일의 비회전 레지스터를 이용하여 라이브-인/아웃 값을 처리하도록 스케줄링할 수 있다(단계 540).
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 스케줄링 장치 110: 판단부
120: 선택부 130: 스케줄링부
120: 선택부 130: 스케줄링부
Claims (16)
- 프로그램의 루프에 필요한 비회전 레지스터의 사이즈를 산출하고, 상기 산출된 비회전 레지스터의 사이즈와 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)를 비교하여 상기 중앙 레지스터 파일의 비회전 레지스터가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 판단부;
상기 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 선택부; 및
상기 선택된 각 로컬 레지스터 파일에 비회전 레지스터를 스케줄링하는 스케줄링부;를 포함하고,
상기 스케줄링부는,
상기 판단 결과 충분하면, 상기 중앙 레지스터 파일에 비회전 레지스터를 스케줄링하는, 스케줄링 장치. - 삭제
- 제1항에 있어서, 상기 판단부는
상기 프로그램의 루프의 라이브-인/아웃(live-in/out) 값을 기초로 상기 비회전 레지스터의 사이즈를 산출하는 스케줄링 장치. - 제1항에 있어서, 상기 스케줄링부는
상기 각 로컬 레지스터 파일에 대하여 회전 레지스터의 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성하는 스케줄링 장치. - 제4항에 있어서, 상기 회전 구성 명령어는
프로세서의 VLIW(Very Long Instruction Word) 모드에서 CGA(Coarse Grain Array) 모드로 전환하기 이전에 수행되는 스케줄링 장치. - 제1항에 있어서, 상기 스케줄링부는
상기 각 로컬 레지스터 파일에 대하여 비회전 레지스터로 할당될 레지스터 인덱스를 결정하고, 상기 결정된 레지스터 인덱스를 이용하여 라이브-인/아웃 값을 처리하는 명령어를 생성하는 스케줄링 장치. - 제6항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
프로세서의 VLIW 모드에서 CGA 모드로 전환되기 전에 상기 VLIW 모드에서 상기 중앙 레지스터 파일의 비회전 레지스터에 저장된 라이브-인 값을 상기 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 장치. - 제6항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
프로세서의 CGA 모드에서 VLIW 모드로 전환되면 상기 CGA 모드에서 상기 각 로컬 레지스터 파일의 비회전 레지스터에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 장치. - 프로그램의 루프에 필요한 비회전 레지스터(non-rotating register)의 사이즈를 산출하는 단계;
상기 산출된 비회전 레지스터의 사이즈와 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)를 비교하여 상기 중앙 레지스터 파일의 비회전 레지스터가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 단계;
상기 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 단계;
상기 선택된 각 로컬 레지스터 파일에 비회전 레지스터를 스케줄링하는 단계; 및
상기 판단 결과 충분하면, 상기 중앙 레지스터 파일에 비회전 레지스터를 스케줄링하는 단계;를 포함하는 스케줄링 방법. - 삭제
- 제9항에 있어서, 상기 비회전 레지스터의 사이즈를 산출하는 단계는
상기 프로그램의 루프의 라이브-인/아웃(live-in/out) 값을 기초로 상기 비회전 레지스터의 사이즈를 산출하는 스케줄링 방법. - 제9항에 있어서, 상기 비회전 레지스터를 스케줄링하는 단계는
상기 각 로컬 레지스터 파일에 대하여 회전 레지스터의 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성하는 스케줄링 방법. - 제12항에 있어서, 상기 회전 구성 명령어는
프로세서의 VLIW(Very Long Instruction Word) 모드에서 CGA(Coarse Grain Array) 모드로 전환하기 이전에 수행되는 스케줄링 방법. - 제9항에 있어서,
상기 각 로컬 레지스터 파일에 대하여 비회전 레지스터로 할당될 레지스터 인덱스를 결정하는 단계; 및
상기 결정된 레지스터 인덱스를 이용하여 라이브-인/아웃 값을 처리하는 명령어를 생성하는 단계;를 포함하는 스케줄링 방법. - 제14항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
프로세서의 VLIW 모드에서 CGA 모드로 전환되기 전에 상기 VLIW 모드에서 상기 중앙 레지스터 파일의 비회전 레지스터에 저장된 라이브-인 값을 상기 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 방법. - 제14항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
프로세서의 CGA 모드에서 VLIW 모드로 전환되면 상기 CGA 모드에서 상기 각 로컬 레지스터 파일의 비회전 레지스터에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130044432A KR101998278B1 (ko) | 2013-04-22 | 2013-04-22 | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 |
US14/258,526 US9678752B2 (en) | 2013-04-22 | 2014-04-22 | Scheduling apparatus and method of dynamically setting the size of a rotating register |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130044432A KR101998278B1 (ko) | 2013-04-22 | 2013-04-22 | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140126192A KR20140126192A (ko) | 2014-10-30 |
KR101998278B1 true KR101998278B1 (ko) | 2019-10-01 |
Family
ID=51730054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130044432A KR101998278B1 (ko) | 2013-04-22 | 2013-04-22 | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9678752B2 (ko) |
KR (1) | KR101998278B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10007518B2 (en) * | 2013-07-09 | 2018-06-26 | Texas Instruments Incorporated | Register file structures combining vector and scalar data with global and local accesses |
KR101550638B1 (ko) | 2014-09-22 | 2015-09-07 | 현대자동차 주식회사 | 차량 구동 제어 방법 및 시스템 |
US10990290B2 (en) * | 2017-05-15 | 2021-04-27 | Alibaba Group Holding Limited | High-volume, low-latency data processing in flexibly configured local heterogeneous computing environments |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100662846B1 (ko) * | 2005-11-09 | 2007-01-02 | 삼성전자주식회사 | 데이터 처리 시스템 및 데이터 처리방법 |
KR100663709B1 (ko) | 2005-12-28 | 2007-01-03 | 삼성전자주식회사 | 재구성 아키텍처에서의 예외 처리 방법 및 장치 |
Family Cites Families (10)
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 |
US7114056B2 (en) * | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
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 |
US20040025153A1 (en) | 2002-07-30 | 2004-02-05 | Johnson Teresa L. | System and method for software pipelining loops with multiple control flow paths |
US20040221283A1 (en) | 2003-04-30 | 2004-11-04 | Worley Christopher S. | Enhanced, modulo-scheduled-loop extensions |
US7493611B2 (en) | 2004-08-30 | 2009-02-17 | International Business Machines Corporation | Pinning internal slack nodes to improve instruction scheduling |
KR101335001B1 (ko) * | 2007-11-07 | 2013-12-02 | 삼성전자주식회사 | 프로세서 및 인스트럭션 스케줄링 방법 |
KR101738941B1 (ko) * | 2010-03-23 | 2017-05-24 | 삼성전자주식회사 | 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법 |
KR20120036210A (ko) | 2010-10-07 | 2012-04-17 | 삼성전자주식회사 | 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법 |
-
2013
- 2013-04-22 KR KR1020130044432A patent/KR101998278B1/ko active IP Right Grant
-
2014
- 2014-04-22 US US14/258,526 patent/US9678752B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100662846B1 (ko) * | 2005-11-09 | 2007-01-02 | 삼성전자주식회사 | 데이터 처리 시스템 및 데이터 처리방법 |
KR100663709B1 (ko) | 2005-12-28 | 2007-01-03 | 삼성전자주식회사 | 재구성 아키텍처에서의 예외 처리 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
US9678752B2 (en) | 2017-06-13 |
US20140317627A1 (en) | 2014-10-23 |
KR20140126192A (ko) | 2014-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101644800B1 (ko) | 컴퓨팅 시스템 및 방법 | |
US8782649B2 (en) | Real-time scheduling of task sets and determination of task sets based on verified weight, cache hit radio of the tasks and available processing cores | |
CN107368367B (zh) | 资源分配的处理方法、装置及电子设备 | |
JP2006244479A (ja) | 実行可能プログラムをスケジューリングするためのシステム及び方法 | |
US9471387B2 (en) | Scheduling in job execution | |
KR101392584B1 (ko) | 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 | |
US8352702B2 (en) | Data processing system memory allocation | |
KR101998278B1 (ko) | 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 | |
US10203988B2 (en) | Adaptive parallelism of task execution on machines with accelerators | |
US10877790B2 (en) | Information processing apparatus, control method and storage medium | |
KR101603752B1 (ko) | 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 | |
US20150143378A1 (en) | Multi-thread processing apparatus and method for sequentially processing threads | |
CN106775975B (zh) | 进程调度方法及装置 | |
US10379900B2 (en) | Dispatching jobs for execution in parallel by multiple processors | |
US20130117757A1 (en) | Method and apparatus for scheduling application programs | |
KR101867960B1 (ko) | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 | |
JP6435980B2 (ja) | 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム | |
JP2015152987A (ja) | 制御装置 | |
JP2006195985A (ja) | リソース利用率を制御する方法およびコンピュータシステム | |
KR101869325B1 (ko) | 이종 멀티코어 환경에서의 코어 배정 장치 | |
KR102022972B1 (ko) | 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법 | |
JP6157719B2 (ja) | 計算機 | |
KR101470695B1 (ko) | 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템 | |
JP6322968B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
US20240303113A1 (en) | Compiler-directed graph-based command dispatch for accelerators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |