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

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

Info

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
Application number
KR1020130044432A
Other languages
English (en)
Other versions
KR20140126192A (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. 삭제
  3. 제1항에 있어서, 상기 판단부는
    상기 프로그램의 루프의 라이브-인/아웃(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. 프로그램의 루프에 필요한 비회전 레지스터(non-rotating register)의 사이즈를 산출하는 단계;
    상기 산출된 비회전 레지스터의 사이즈와 중앙 레지스터 파일(central register file)의 비회전 레지스터(non-rotating register)를 비교하여 상기 중앙 레지스터 파일의 비회전 레지스터가 프로그램의 루프를 스케줄링하기에 충분한지를 판단하는 단계;
    상기 판단 결과 충분하지 않으면 부족한 비회전 레지스터를 할당하기 위한 로컬 레지스터 파일을 하나 이상 선택하는 단계;
    상기 선택된 각 로컬 레지스터 파일에 비회전 레지스터를 스케줄링하는 단계; 및
    상기 판단 결과 충분하면, 상기 중앙 레지스터 파일에 비회전 레지스터를 스케줄링하는 단계;를 포함하는 스케줄링 방법.
  10. 삭제
  11. 제9항에 있어서, 상기 비회전 레지스터의 사이즈를 산출하는 단계는
    상기 프로그램의 루프의 라이브-인/아웃(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 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)

* 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
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)

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

* Cited by examiner, † Cited by third party
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 삼성전자주식회사 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
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
US20140282607A1 (en) System management and instruction counting
CN107368367B (zh) 资源分配的处理方法、装置及电子设备
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
JP2006244479A (ja) 実行可能プログラムをスケジューリングするためのシステム及び方法
KR101392584B1 (ko) 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법
KR101998278B1 (ko) 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
US9471387B2 (en) Scheduling in job execution
US20110153971A1 (en) Data Processing System Memory Allocation
US20150143378A1 (en) Multi-thread processing apparatus and method for sequentially processing threads
CN106775975B (zh) 进程调度方法及装置
US10203988B2 (en) Adaptive parallelism of task execution on machines with accelerators
US10379900B2 (en) Dispatching jobs for execution in parallel by multiple processors
US10877790B2 (en) Information processing apparatus, control method and storage medium
KR101867960B1 (ko) 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
KR20130051076A (ko) 응용프로그램 스케줄링 방법 및 장치
JP6435980B2 (ja) 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
JP2015152987A (ja) 制御装置
JP2006195985A (ja) リソース利用率を制御する方法およびコンピュータシステム
KR101869325B1 (ko) 이종 멀티코어 환경에서의 코어 배정 장치
KR102022972B1 (ko) 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법
JP6157719B2 (ja) 計算機
KR101470695B1 (ko) 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템
JP6540141B2 (ja) 割り当て装置、割り当て方法、割り当てプログラム、及び、通信ネットワーク装置

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