KR20140126192A - 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 - Google Patents

회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 Download PDF

Info

Publication number
KR20140126192A
KR20140126192A KR1020130044432A KR20130044432A KR20140126192A KR 20140126192 A KR20140126192 A KR 20140126192A KR 1020130044432 A KR1020130044432 A KR 1020130044432A KR 20130044432 A KR20130044432 A KR 20130044432A KR 20140126192 A KR20140126192 A KR 20140126192A
Authority
KR
South Korea
Prior art keywords
register
rotating
register file
mode
size
Prior art date
Application number
KR1020130044432A
Other languages
English (en)
Other versions
KR101998278B1 (ko
Inventor
김태송
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130044432A priority Critical patent/KR101998278B1/ko
Priority to US14/258,526 priority patent/US9678752B2/en
Publication of KR20140126192A publication Critical patent/KR20140126192A/ko
Application granted granted Critical
Publication of KR101998278B1 publication Critical patent/KR101998278B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction 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

회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법{SCHEDULING APPARATUS AND METHOD FOR DYNAMICALLY SETTING ROTATING REGISTER SIZE}
런타임시에 로컬 레지스터 파일의 회전 레지스터 사이즈를 동적으로 설정하도록 스케줄링하는 장치 및 방법에 관한 것이다.
일반적으로 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는 일 실시예에 따른 스케줄링 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 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: 스케줄링부

Claims (16)

  1. 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 판단부;
    상기 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 선택부; 및
    상기 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링하는 스케줄링부;를 포함하는 스케줄링 장치.
  2. 제1항에 있어서, 상기 판단부는
    상기 프로그램의 루프에 대하여 필요한 비회전 레지스터의 사이즈를 산출하고, 상기 산출된 비회전 레지스터의 사이즈와 상기 중앙 레지스터 파일의 비회전 레지스터의 사이즈를 비교하여 상기 비회전 레지스터가 충분한지를 판단하는 스케줄링 장치.
  3. 제2항에 있어서, 상기 판단부는
    상기 프로그램 루프의 라이브-인/아웃(live-in/out) 값을 기초로 상기 비회전 레지스터의 사이즈를 산출하는 스케줄링 장치.
  4. 제1항에 있어서, 상기 스케줄링부는
    상기 각 로컬 레지스터 파일에 대하여 회전 레지스터의 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성하는 스케줄링 장치.
  5. 제4항에 있어서, 상기 회전 구성 명령어는
    프로세서의 VLIW(Very Long Instruction Word) 모드에서 CGA(Coarse Grain Array) 모드로 전환하기 이전에 수행되는 스케줄링 장치.
  6. 제1항에 있어서, 상기 스케줄링부는
    상기 각 로컬 레지스터 파일에 대하여 비회전 레지스터로 할당될 레지스터 인덱스를 결정하고, 상기 결정된 레지스터 인덱스를 이용하여 라이브-인/아웃 값을 처리하는 명령어를 생성하는 스케줄링 장치.
  7. 제6항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
    프로세서의 VLIW 모드에서 CGA 모드로 전환되기 전에 상기 VLIW 모드에서 상기 중앙 레지스터 파일의 비회전 레지스터에 저장된 라이브-인 값을 상기 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 장치.
  8. 제6항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
    프로세서의 CGA 모드에서 VLIW 모드로 전환되면 상기 CGA 모드에서 상기 각 로컬 레지스터 파일의 비회전 레지스터에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 장치.
  9. 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 단계;
    상기 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 단계; 및
    상기 선택된 각 로컬 레지스터 파일에 대하여 비회전 레지스터를 스케줄링하는 단계;를 포함하는 스케줄링 방법.
  10. 제9항에 있어서, 상기 비회전 레지스터가 충분한지 판단하는 단계는
    상기 프로그램의 루프에 대하여 필요한 비회전 레지스터의 사이즈를 산출하는 단계; 및
    상기 산출된 비회전 레지스터의 사이즈와 상기 중앙 레지스터 파일의 비회전 레지스터의 사이즈를 비교하는 단계;를 포함하는 스케줄링 방법.
  11. 제10항에 있어서, 상기 비회전 레지스터의 사이즈를 산출하는 단계는
    상기 프로그램 루프의 라이브-인/아웃(live-in/out) 값을 기초로 상기 비회전 레지스터의 사이즈를 산출하는 스케줄링 방법.
  12. 제9항에 있어서, 상기 비회전 레지스터를 스케줄링하는 단계는
    상기 각 로컬 레지스터 파일에 대하여 회전 레지스터의 사이즈를 설정하도록 하는 회전 구성 명령어(rotating configuration instruction)를 생성하는 스케줄링 방법.
  13. 제12항에 있어서, 상기 회전 구성 명령어는
    프로세서의 VLIW(Very Long Instruction Word) 모드에서 CGA(Coarse Grain Array) 모드로 전환하기 이전에 수행되는 스케줄링 방법.
  14. 제9항에 있어서,
    상기 각 로컬 레지스터 파일에 대하여 비회전 레지스터로 할당될 레지스터 인덱스를 결정하는 단계; 및
    상기 결정된 레지스터 인덱스를 이용하여 라이브-인/아웃 값을 처리하는 명령어를 생성하는 단계;를 포함하는 스케줄링 방법.
  15. 제14항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
    프로세서의 VLIW 모드에서 CGA 모드로 전환되기 전에 상기 VLIW 모드에서 상기 중앙 레지스터 파일의 비회전 레지스터에 저장된 라이브-인 값을 상기 각 로컬 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 방법.
  16. 제14항에 있어서, 상기 라이브-인/아웃 값을 처리하는 명령어는
    프로세서의 CGA 모드에서 VLIW 모드로 전환되면 상기 CGA 모드에서 상기 각 로컬 레지스터 파일의 비회전 레지스터에 저장된 라이브-아웃 값을 중앙 레지스터 파일의 비회전 레지스터로 이동하도록 하는 스케줄링 방법.

KR1020130044432A 2013-04-22 2013-04-22 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법 KR101998278B1 (ko)

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 true KR20140126192A (ko) 2014-10-30
KR101998278B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014117409A1 (de) 2014-09-22 2016-03-24 Hyundai Motor Company Verfahren und System zum Steuern des Betreibens eines Fahrzeugs

Families Citing this family (2)

* Cited by examiner, † Cited by third party
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
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281897A (ja) * 1994-04-06 1995-10-27 Hewlett Packard Co <Hp> レジスタ割当て方法及びレジスタファイルポートアクセス装置
KR100662846B1 (ko) * 2005-11-09 2007-01-02 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리방법
KR100663709B1 (ko) * 2005-12-28 2007-01-03 삼성전자주식회사 재구성 아키텍처에서의 예외 처리 방법 및 장치
KR20090047326A (ko) * 2007-11-07 2009-05-12 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
KR20110106717A (ko) * 2010-03-23 2011-09-29 삼성전자주식회사 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR20120036210A (ko) 2010-10-07 2012-04-17 삼성전자주식회사 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281897A (ja) * 1994-04-06 1995-10-27 Hewlett Packard Co <Hp> レジスタ割当て方法及びレジスタファイルポートアクセス装置
KR100662846B1 (ko) * 2005-11-09 2007-01-02 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리방법
KR100663709B1 (ko) * 2005-12-28 2007-01-03 삼성전자주식회사 재구성 아키텍처에서의 예외 처리 방법 및 장치
KR20090047326A (ko) * 2007-11-07 2009-05-12 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
KR20110106717A (ko) * 2010-03-23 2011-09-29 삼성전자주식회사 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014117409A1 (de) 2014-09-22 2016-03-24 Hyundai Motor Company Verfahren und System zum Steuern des Betreibens eines Fahrzeugs

Also Published As

Publication number Publication date
US9678752B2 (en) 2017-06-13
KR101998278B1 (ko) 2019-10-01
US20140317627A1 (en) 2014-10-23

Similar Documents

Publication Publication Date Title
US9298438B2 (en) Profiling application code to identify code portions for FPGA implementation
CN105988872B (zh) 一种cpu资源分配的方法、装置及电子设备
US8813073B2 (en) Compiling apparatus and method of a multicore device
US20130346985A1 (en) Managing use of a field programmable gate array by multiple processes in an operating system
US20120222043A1 (en) Process Scheduling Using Scheduling Graph to Minimize Managed Elements
US20110072437A1 (en) Computer job scheduler with efficient node selection
CN107368367B (zh) 资源分配的处理方法、装置及电子设备
US9471387B2 (en) Scheduling in job execution
US9612867B2 (en) Apparatus and method for data partition and allocation in heterogeneous multi-processor environment
KR20140126190A (ko) 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
KR20110032346A (ko) 병렬 프로그래밍 조절 장치 및 방법
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
JP2008522277A (ja) 優先度の付けられたタスク間の効率的な切り換え
KR20140126192A (ko) 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
CN106775975B (zh) 进程调度方法及装置
US9344115B2 (en) Method of compressing and restoring configuration data
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
KR101869325B1 (ko) 이종 멀티코어 환경에서의 코어 배정 장치
KR20150051083A (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
US10339063B2 (en) Scheduling independent and dependent operations for processing
US11822967B2 (en) Task distribution method for minimizing preemption between tasks and apparatus for performing the same
KR102168175B1 (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
US20230126185A1 (en) Apparatus and method for executing automation scenario in parallel
KR20190106577A (ko) 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법
KR20130111027A (ko) 임베디드 시스템에서의 동적 메모리 관리방법

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