KR101978409B1 - 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 - Google Patents
재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 Download PDFInfo
- Publication number
- KR101978409B1 KR101978409B1 KR1020120020560A KR20120020560A KR101978409B1 KR 101978409 B1 KR101978409 B1 KR 101978409B1 KR 1020120020560 A KR1020120020560 A KR 1020120020560A KR 20120020560 A KR20120020560 A KR 20120020560A KR 101978409 B1 KR101978409 B1 KR 101978409B1
- Authority
- KR
- South Korea
- Prior art keywords
- cga
- mode
- group
- configuration information
- configuration
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 18
- 230000015654 memory Effects 0.000 claims description 37
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7892—Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Logic Circuits (AREA)
- Stored Programmes (AREA)
- Microcomputers (AREA)
Abstract
일 양상에 따른 재구성가능 프로세서는, 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 처리부를 포함할 수 있다.
Description
재구성가능 프로세서 및 재구성가능 프로세서용 컴파일러와 관련된다.
통상적으로, 재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 디지털 신호 처리 분야에서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다.
재구성 가능 아키텍처의 종류는 여러 가지가 있는데 그 중 코어스 그레인 어레이(Coarse-Grained Array)가 대표적이다. 코어스 그레인 어레이는 여러 개의 프로세싱 유닛으로 이루어진다. 그리고 프로세싱 유닛들 간의 연결 상태가 조절됨에 따라 어떤 작업에 최적화되는 것이 가능하다.
한편 최근에는 코어스 그레인 어레이의 특정 프로세싱 유닛을 VLIW(very long instruction word) 머신으로 활용하는 재구성 가능 아키텍처가 등장하게 되었다. 이러한 재구성 가능 아키텍처는 두 개의 실행 모드를 갖는다. 통상적으로, CGA 모드 및 VLIW 모드를 갖는 재구성 가능 아키텍쳐는 CGA 모드에서는 동일한 연산이 반복되는 루프를 처리하고 VLIW 모드에서는 루프 연산 외에 일반적인 연산을 처리한다.
애플리케이션이 요구하는 성능에 따라 최적화된 자원을 사용하는 재구성가능 프로세서 및 이를 위한 컴파일러 기술이 제시된다.
일 양상에 따른 재구성가능 프로세서는, 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 처리부를 포함할 수 있다.
다른 양상에 따른 재구성가능 프로세서는, 각각의 모드를 위한 구성 정보가 저장되는 구성 메모리와 소정의 모드 전환 신호에 따라 구성 메모리에 저장된 구성 정보를 각각의 모드에 맞게 처리부로 전달하는 디코더를 더 포함할 수 있다.
또 다른 양상에 따른 재구성가능 프로세서는, 각각의 모드에 따라 동작하지 아니하는 FU로 공급되는 전원을 차단하는 전원부를 더 포함할 수도 있다.
일 양상에 따른 재구성가능 프로세서를 위한 코드 변환 장치는, 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 재구성가능 프로세서를 위한 코드 변환 장치로서, 제 1 FU 그룹에 관한 하드웨어 정보로 정의되는 VLIW 하드웨어 정보, 제 2 FU 그룹의 전체 FU에 관한 하드웨어 정보로 정의되는 제 1 CGA 하드웨어 정보, 및 제 2 FU 그룹의 일부 FU에 관한 하드웨어 정보로 정의되는 제 2 CGA 하드웨어 정보 중 어느 하나를 선택적으로 제공하는 하드웨어 정보 제공부와 하드웨어 정보 제공부에 의해 제공된 하드웨어 정보에 따라 코드를 컴파일하는 컴파일부를 포함할 수 있다.
일 양상에 따른 재구성가능 프로세서를 위한 코드 변환 방법은, 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 재구성가능 프로세서를 위한 코드 변환 방법으로서, 코드의 성질 또는 사용자의 명령에 따라, 제 1 FU 그룹에 관한 하드웨어 정보로 정의되는 VLIW 하드웨어 정보, 제 2 FU 그룹의 전체 FU에 관한 하드웨어 정보로 정의되는 제 1 CGA 하드웨어 정보, 및 제 2 FU 그룹의 일부 FU에 관한 하드웨어 정보로 정의되는 제 2 CGA 하드웨어 정보 중 어느 하나를 선택하는 단계와 선택된 하드웨어 정보에 따라 코드를 컴파일하는 단계를 포함할 수 있다.
서로 다른 개수의 펑션 유닛을 갖는 펑션 유닛 그룹에 기초하여 여러 개의 CGA 모드가 제공되기 때문에, 애플리케이션이 요구하는 성능에 최적화되어 재구성가능 프로세서가 동작하는 것이 가능하고, 이에 따라 전력 절감 및 성능 향상을 기대할 수가 있다.
도 1은 일 실시예에 따른 재구성가능 프로세서의 구성을 도시한다.
도 2는 일 실시예에 따른 구성 메모리를 도시한다.
도 3은 일 실시예에 따른 디코더의 구성을 도시한다.
도 4는 일 실시예에 따른 재구성가능 프로세서의 모드 전환 방법을 도시한다.
도 5는 다른 실시예에 따른 재구성가능 프로세서의 모드 전환 방법을 도시한다.
도 6은 일 실시예에 따른 제 1 CGA 모드와 제 2 CGA 모드 간의 전환 방법을 도시한다.
도 7은 일 실시예에 따른 재구성가능 프로세서를 위한 코드 변환 장치를 도시한다.
도 2는 일 실시예에 따른 구성 메모리를 도시한다.
도 3은 일 실시예에 따른 디코더의 구성을 도시한다.
도 4는 일 실시예에 따른 재구성가능 프로세서의 모드 전환 방법을 도시한다.
도 5는 다른 실시예에 따른 재구성가능 프로세서의 모드 전환 방법을 도시한다.
도 6은 일 실시예에 따른 제 1 CGA 모드와 제 2 CGA 모드 간의 전환 방법을 도시한다.
도 7은 일 실시예에 따른 재구성가능 프로세서를 위한 코드 변환 장치를 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 일 실시예에 따른 재구성가능 프로세서의 구성을 도시한다.
도 1을 참조하면, 재구성가능 프로세서(100)는 처리부(101), 구성 메모리(102), 및 디코더(103)를 포함한다. 추가적으로, 재구성가능 프로세서(100)는 제어부(104) 및 글로벌 레지스터 파일(global register file, GRF)(105)을 더 포함할 수 있다.
처리부(101)는 다수의 펑션 유닛(function unit, 이하, FU라 함)을 포함한다. 각각의 FU는 각종 산술 또는 논리 연산을 수행하는 프로세싱 엘리먼트(processing element, PE), 연산 결과를 저장하기 위한 로컬 레지스터 파일(local register file, LRF) 등을 포함할 수 있다. FU의 개수는 제한되지 아니하며 응용 목적에 따라 가변될 수 있다.
처리부(101)는 크게 두 개의 실행 모드를 갖는다. 하나는 VLIW 모드이고 다른 하나는 CGA 모드가 그것이다. VLIW 모드에서 처리부(101)는 제 1 FU 그룹(110)에 기초하여 연산을 실행한다. 예컨대, VLIW 모드에서 구성 메모리(102) 또는 별도의 VLIW 메모리(미도시)에 저장된 VLIW 인스트럭션이 제 1 FU 그룹(110)에 속한 FU0~FU3으로 전달되고, 각각의 FU0~FU3이 VLIW 인스트럭션을 실행하는 것이 가능하다. CGA 모드에서 처리부(101)는 제 2 FU 그룹(120)에 기초하여 연산을 실행한다. 예컨대, CGA 모드에서 구성 메모리(102)에 저장된 CGA 인스트럭션이 제 2 FU 그룹(120)에 속한 FU0~FU15로 전달되고, 각각의 FU0~FU15가 CGA 인스트럭션을 실행하는 것이 가능하다. 여기서 FU0~FU3은 VLIW 모드와 CGA 모드에서 공통적으로 사용되었으나, 반드시 이럴 필요는 없고 VLIW 모드를 위한 별도의 FU가 사용될 수도 있다. 또한 VLIW 인스트럭션을 위한 VLIW 메모리가 별도로 형성될 수도 있음은 물론이다. 글로벌 레지스터 파일(105)은 모드 전환시의 Live-in/Live-out 데이터를 임시로 저장할 수 있다.
처리부(101)는 루프와 같은 반복적인 연산을 CGA 모드에서 처리하고 그 이외의 연산을 VLIW 모드에서 처리할 수 있다. 예컨대, VLIW 모드에서 OS(operating system)가 실행되다가 제어부(104)의 모드 전환 신호에 따라 컨텍스트 정보를 글로벌 레지스터 파일(106)에 저장한 후, CGA 모드에서 루프 연산이 실행되는 것이 가능하다. 이후 루프 연산이 종료되면 다시 VLIW 모드로 복귀되고 글로벌 레지스터 파일(106)에 저장되어 있던 컨텍스트 정보가 리턴될 수 있다.
처리부(101)의 CGA 모드는 다시 여러 개의 세부 모드로 나뉠 수가 있다. 예컨대, CGA 모드는 제 2 FU 그룹(120)의 모든 FU를 이용하는 제 1 CGA 모드와 제 2 FU 그룹(120)의 일부 FU(예컨대, 121)를 이용하는 제 2 CGA 모드를 포함할 수 있다. 또한 제 2 FU 그룹(120)의 일부 FU(121)와 상이한 FU를 이용하는 제 3 CGA 모드를 더 포함할 수도 있다. 여기서 일부 FU(121)와 상이하다고 함은 제 3 CGA 모드의 FU들이 일부 FU(121)들과 완전히 다르거나, 일부 FU(121)들을 부분적으로 포함함으로써 전체적으로 달라지는 것을 의미할 수 있다. 제 1 CGA 모드는 MxN 모드로, 제 2 CGA 모드를 KxL 모드로 표현될 수도 있다(MxN>KxL).
구성 메모리(102)는 처리부(101)의 각 실행 모드를 위한 구성 정보를 저장할 수 있다. 구성 정보는 각각의 FU가 처리할 인스트럭션 정보와 각각의 FU들의 연결 상태 정보를 포함할 수 있다. 다시 말해, 구성 정보에 따라 처리부(101)의 하드웨어적 구성이 가변될 수 있다.
구성 메모리(102)는 제 1 CGA 모드를 위한 제 1 CGA 구성 정보와 제 2 CGA 모드를 위한 제 2 CGA 구성 정보를 저장할 수 있다. 구성 메모리(102)는 제 1 CGA 구성 정보와 제 2 CGA 구성 정보를 서로 다른 메모리 영역에 저장할 수 있다. 제 2 CGA 구성 정보는 제 2 FU 그룹(120)의 일부 FU를 위한 구성 정보이므로 제 1 CGA 구성 정보보다 그 크기가 작을 수 있다.
디코더(103)는 제어부(104)의 모드 전환 신호에 따라 구성 메모리(102)에 저장된 구성 정보를 각각의 모드에 맞게 처리부(101)로 전달할 수 있다. 예컨대, 디코더(103)는 제 1 CGA 모드에서 제 1 CGA 구성 정보를 처리부(101)로 그대로 전달하고, 제 2 CGA 모드에서 제 2 CGA 구성 정보를 처리부(101)로 변환하여 전달할 수 있다. 이 변환과 관련하여, 디코더(103)는 제 2 CGA 구성 정보 중에서 제 2 FU 그룹(120)의 일부 FU에 매핑되지 아니한 구성 정보를 설정된 값으로 변경할 수 있다. 예를 들어, 제 2 CGA 모드에서 참조번호 121로 표시된 4개의 FU(즉, FU9, FU10, FU13, FU14)만 동작하는 경우, 나머지 FU로 전달되는 구성 정보를 무의미한 값으로 변경하는 것이 가능하다.
추가적 양상에 따라, 제어부(104)는 각각의 모드에 따라 동작하지 아니하는 FU로 공급되는 전원을 차단하는 전원부(미도시)를 포함할 수 있다. 또한 선택적으로, 전원부는 구성 메모리(102)에서 제 2 CGA 구성 정보가 저장된 메모리 영역의 일부 영역의 전원을 차단하는 것도 가능하다.
또 다른 추가적 양상에 따라, 재구성가능 프로세서(100)는 제 1 CGA 모드와 제 2 CGA 모드가 전환될 때 VLIW 모드를 통해서 전환을 제어하는 것이 가능하다.
도 2는 일 실시예에 따른 구성 메모리를 도시한다.
도 2를 참조하면, 구성 메모리의 영역(200)은 제 1 영역(201)과 제 2 영역(202)을 포함할 수 있다. 제 1 영역(201)에는 제 1 CGA 구성 정보가 저장되고, 제 2 영역(202)에는 제 2 CGA 구성 정보가 저장될 수 있다. 전술하였듯이, 제 2 CGA 구성 정보는 제 1 CGA 구성 정보에 비해 그 크기가 작음을 알 수 있다. 다시 말해, 제 2 CGA 구성 정보는 유효한 부분(210)가 비유효한 부분(220)으로 구분될 수 있다. 유효한 부분(210)에 매핑되는 FU는 제 2 CGA 모드에서 동작하는 FU들이 될 수 있다.
일 양상에 따라, 제 2 CGA 모드에서 비유효한 부분(220)으로는 제어부(104, 도 1)에 의해 전원 공급이 차단될 수 있다.
도 3은 일 실시예에 따른 디코더의 구성을 도시한다.
도 3을 참조하면, 디코더(300)는 다수의 변환부(301)를 포함할 수 있다. 각 변환부(301)의 입력은 구성 메모리(102, 도 1)의 출력과 연결되고, 각 변환부(301)의 출력은 처리부(101, 도 1)의 각 FU의 입력과 연결될 수 있다.
일 양상에 따라, 디코더(300)는 각각의 모드에 맞도록 구성 메모리(102)의 구성 정보를 적절하게 변환할 수 있다. 예컨대, 각각의 변환부(301)는 제 1 CGA 구성 정보는 그대로 각 FU로 전달하고, 제 2 CGA 구성 정보에서 사용되지 않는 부분을 무의미한 값(예컨대, '0')으로 변환하여 각 FU로 전달할 수 있다.
도 4는 일 실시예에 따른 재구성가능 프로세서의 모드 전환 방법을 도시한다. 이것은 VLIW 모드에서 CGA 모드로의 전환에 관한 일 예가 될 수 있다.
도 1 및 도 4를 참조하면, CGA 모드 전환 신호에 따라 다수의 sub-CGA 모드 중에서 어느 하나가 선택된다(401). 예컨대, 전술한 제 1 CGA 모드(MxN 모드) 또는 제 2 CGA 모드(KxL 모드) 중 어느 하나가 선택될 수 있다. 그리고 선택된 sub-CGA 모드에 따라 메모리 Retention이 조절된다(402). 예컨대, CGA 모드 전환 신호에 따라 구성 메모리(102)가 활성화되고, 제 2 CGA 모드가 선택된 경우, 일부 메모리 영역(예컨대, 도 2의 220)으로의 전원 공급이 차단될 수 있다. 이어서 선택된 sub-CGA 모드에 대응되는 FU들(예컨대, 120 또는 121)의 전원이 조절된다(403). 예컨대, 구성 메모리(102) 및 처리부(101)의 각 FU를 연결하는 Isolation Cell의 전원을 OFF하는 것이 가능하다. 그리고 선택된 sub-CGA 모드가 실행된다(404).
도 5는 다른 실시예에 따른 재구성가능 프로세서의 모드 전환 방법을 도시한다. 이것은 CGA 모드에서 VLIW 모드로의 전환에 관한 일 예가 될 수 있다.
도 1 및 도 5를 참조하면, VLIW 모드 전환 신호에 따라 글로벌 레지스터 파일(105)에 컨텍스트가 저장된다(501). 컨텍스트는 CGA 모드의 실행 결과를 포함할 수 있다. 그리고 VLIW 모드에 대응되는 FU들(예컨대, 110)의 전원 공급이 조절된다(502). 예컨대, 제 1 FU 그룹(110)을 제외한 나머지 FU들로의 전원 공급이 차단될 수 있다. 이어서 VLIW 모드에 대응되는 구성 메모리(102)의 영역이 비활성화된다(503). 예컨대, 별도의 VLIW 메모리(미도시)가 존재하는 경우, 구성 메모리(102)를 Retention하고 VLIW 메모리로부터 VLIW 인스트럭션을 페치(fetch)하는 것이 가능하다. 그리고 VLIW 모드가 실행된다(504).
도 6은 일 실시예에 따른 제 1 CGA 모드와 제 2 CGA 모드 간의 전환 방법을 도시한다.
도 6을 참조하면, OS는 VLIW 모드(600a, 600b, 600c)에, 오디오 데이터 처리는 2x2 CGA 모드(601)에, 비디오 데이터 처리는 3x3 CGA 모드(602)에 매핑될 수 있다. 2x2 CGA 모드(601)에서 2x2개의 FU들(610)이 제 2 CGA 구성 정보(630)에 따라 오디오 데이터를 처리할 수 있다. 이때, 나머지 FU들(620)은 비활성화 상태이다. 오디오 데이터의 처리가 끝나면 VLIW 모드(600b)로 전환되고 다시 3x3 CGA 모드(602)가 호출된다. 3x3 CGA 모드(602)에서는 3x3개의 FU들(650)이 제 1 CGA 구성 정보(640)에 따라 비디오 데이터를 처리할 수 있다. 이때, 제 2 CGA 구성 정보(630)는 비활성화 될 수 있다.
도 7은 일 실시예에 따른 재구성가능 프로세서를 위한 코드 변환 장치를 도시한다. 이것은 전술한 재구성가능 프로세서의 컴파일러에 관한 일 예가 될 수 있다.
도 1 및 도 7을 참조하면, 코드 변환 장치(700)는 하드웨어 정보 제공부(701)와 컴파일부(702)를 포함할 수 있다.
하드웨어 정보 제공부(701)는 제 1 FU 그룹(110)에 관한 하드웨어 정보로 정의되는 VLIW 하드웨어 정보, 제 2 FU 그룹(120)의 전체 FU에 관한 하드웨어 정보로 정의되는 제 1 CGA 하드웨어 정보, 및 제 2 FU 그룹(120)의 일부 FU(예컨대, 121)에 관한 하드웨어 정보로 정의되는 제 2 CGA 하드웨어 정보 중 어느 하나를 선택적으로 제공한다. 예컨대, 하드웨어 정보 제공부(701)는 코드의 성질 또는 사용자 명령에 따라 VLIW 하드웨어 정보, 제 1 CGA 하드웨어 정보, 및 제 2 CGA 하드웨어 정보 중 어느 하나를 선택할 수 있다.
컴파일부(702)는 하드웨어 정보 제공부(701)에 의해 제공된 하드웨어 정보에 따라 코드를 컴파일한다. 예컨대, 제 2 CGA 하드웨어 정보가 선택된 경우, 컴파일부(702)는 제 2 FU 그룹(120)의 일부 FU(121)를 제외한 나머지 FU들(즉, FU0~8, FU11, FU12, FU14, FU15)은 없는 것으로 간주하고 컴파일을 수행할 수 있다. 즉 컴파일부(702)는 제 2 CGA 하드웨어 정보에 따라, 제 2 FU 그룹(120)의 일부 FU(121)를 제외한 나머지 FU에 코드와 관련된 인스트럭션 또는 데이터를 매핑하지 아니할 수 있다.
한편 도 1 및 도 7을 참조하여 일 실시예에 따른 재구성가능 프로세서를 위한 코드 변환 방법을 설명하면 다음과 같다.
먼저 하드웨어 정보 제공부(701)가 코드의 성질 또는 사용자의 명령에 따라, 제 1 FU 그룹(110)에 관한 하드웨어 정보로 정의되는 VLIW 하드웨어 정보, 제 2 FU 그룹(120)의 전체 FU에 관한 하드웨어 정보로 정의되는 제 1 CGA 하드웨어 정보, 및 제 2 FU 그룹(120)의 일부 FU(예컨대, 121)에 관한 하드웨어 정보로 정의되는 제 2 CGA 하드웨어 정보 중 어느 하나를 선택한다. 이어서 컴파일부(702)가 선택된 하드웨어 정보에 따라 코드를 컴파일한다.
이상에서 살펴본 것과 같이, 개시된 실시예에 의하면, 서로 다른 개수의 펑션 유닛을 갖는 펑션 유닛 그룹에 기초하여 여러 개의 CGA 모드가 제공되기 때문에, 애플리케이션이 요구하는 성능에 최적화되어 재구성가능 프로세서가 동작하는 것이 가능하고, 이에 따라 전력 절감 및 성능 향상을 기대할 수가 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
101: 처리부
102: 구성 메모리
103: 디코더
104: 제어부
105: 글로벌 레지스터 파일
102: 구성 메모리
103: 디코더
104: 제어부
105: 글로벌 레지스터 파일
Claims (14)
- 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 처리부;
상기 각각의 모드를 위한 구성 정보가 저장되는 구성 메모리;
소정의 모드 전환 신호에 따라 상기 구성 메모리에 저장된 구성 정보를 상기 각각의 모드에 맞게 상기 처리부로 전달하는 디코더; 및
상기 각각의 모드에 따라 동작하지 아니하는 FU로 공급되는 전원을 차단하고, 상기구성 메모리 중 상기 제2 CGA 모드의 구성 정보가 저장된 메모리 영역의 일부 영역의 전원을 차단하는 전원부;를 포함하는 재구성가능 프로세서.
- 삭제
- 제 1 항에 있어서, 상기 구성 메모리는
상기 제 1 CGA 모드를 위한 제 1 CGA 구성 정보와 상기 제 2 CGA 모드를 위한 제 2 CGA 구성 정보를 서로 다른 메모리 영역에 저장하는 것을 특징으로 하는 재구성가능 프로세서.
- 제 3 항에 있어서, 상기 디코더는
상기 제 1 CGA 모드에서 상기 제 1 CGA 구성 정보를 상기 처리부로 그대로 전달하고,
상기 제 2 CGA 모드에서 상기 제 2 CGA 구성 정보를 상기 처리부로 변환하여 전달하는 것을 특징으로 하는 재구성가능 프로세서.
- 제 4 항에 있어서, 상기 디코더는
상기 제 2 CGA 구성 정보 중에서 상기 제 2 FU 그룹의 일부 FU에 매핑되지 아니한 구성 정보를 설정된 값으로 변경하는 것을 특징으로 하는 재구성가능 프로세서.
- 삭제
- 제 1 항에 있어서,
상기 제 1 CGA 모드와 상기 제 2 CGA 모드 간의 전환은 상기 VLIW 모드를 거쳐서 이루어지는 것을 특징으로 하는 재구성가능 프로세서.
- 제 1 항에 있어서, 상기 처리부는
상기 제 2 FU 그룹의 일부 FU와 상이한 다른 FU에 기초한 제 3 CGA 모드를 더 갖는 것을 특징으로 하는 재구성가능 프로세서.
- 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 처리부를 포함하는 재구성가능 프로세서를 위한 코드 변환 장치로서,
상기 제 1 FU 그룹에 관한 하드웨어 정보로 정의되는 VLIW 하드웨어 정보, 상기 제 2 FU 그룹의 전체 FU에 관한 하드웨어 정보로 정의되는 제 1 CGA 하드웨어 정보, 및 상기 제 2 FU 그룹의 일부 FU에 관한 하드웨어 정보로 정의되는 제 2 CGA 하드웨어 정보 중 어느 하나를 선택적으로 제공하는 하드웨어 정보 제공부; 및
상기 하드웨어 정보 제공부에 의해 제공된 하드웨어 정보에 따라 코드를 컴파일하는 컴파일부; 를 포함하되,
상기 재구성가능 프로세서는,
상기 각각의 모드를 위한 구성 정보가 저장되는 구성 메모리;
소정의 모드 전환 신호에 따라 상기 구성 메모리에 저장된 구성 정보를 상기 각각의 모드에 맞게 상기 처리부로 전달하는 디코더; 및
상기 각각의 모드에 따라 동작하지 아니하는 FU로 공급되는 전원을 차단하고, 상기구성 메모리 중 상기 제2 CGA 모드의 구성 정보가 저장된 메모리 영역의 일부 영역의 전원을 차단하는 전원부를 포함하는 코드 변환 장치.
- 제 9 항에 있어서, 상기 하드웨어 정보 제공부는
코드의 성질 또는 사용자의 명령에 따라 상기 각각의 하드웨어 정보 중 어느 하나를 선택하는 것을 특징으로 하는 코드 변환 장치.
- 제 9 항에 있어서, 상기 컴파일부는
상기 제공된 하드웨어 정보에 기초하여 상기 제 2 FU 그룹의 일부 FU를 제외한 나머지 FU에 상기 코드와 관련된 인스트럭션 또는 데이터를 매핑하지 아니하는 것을 특징으로 하는 코드 변환 장치.
- 삭제
- 삭제
- 삭제
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120020560A KR101978409B1 (ko) | 2012-02-28 | 2012-02-28 | 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 |
US13/779,961 US20130227255A1 (en) | 2012-02-28 | 2013-02-28 | Reconfigurable processor, code conversion apparatus thereof, and code conversion method |
JP2013039961A JP6317065B2 (ja) | 2012-02-28 | 2013-02-28 | 再構成可能プロセッサ及びそのコード変換装置及び方法 |
CN201310063870.9A CN103294643B (zh) | 2012-02-28 | 2013-02-28 | 可重构处理器、代码转换设备及其代码转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120020560A KR101978409B1 (ko) | 2012-02-28 | 2012-02-28 | 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130098773A KR20130098773A (ko) | 2013-09-05 |
KR101978409B1 true KR101978409B1 (ko) | 2019-05-14 |
Family
ID=49004587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120020560A KR101978409B1 (ko) | 2012-02-28 | 2012-02-28 | 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20130227255A1 (ko) |
JP (1) | JP6317065B2 (ko) |
KR (1) | KR101978409B1 (ko) |
CN (1) | CN103294643B (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102070199B1 (ko) * | 2012-05-11 | 2020-01-28 | 삼성전자주식회사 | 재구성가능 프로세서 및 재구성가능 프로세서의 코드 압축해제 방법 |
KR102122455B1 (ko) * | 2013-10-08 | 2020-06-12 | 삼성전자주식회사 | 프로세서의 디코더 검증을 위한 테스트 벤치 생성 방법 및 이를 위한 장치 |
KR102130813B1 (ko) * | 2013-10-08 | 2020-07-06 | 삼성전자주식회사 | 재구성 가능 프로세서 및 재구성 가능 프로세서를 동작하는 방법 |
US10831507B2 (en) * | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US11386038B2 (en) | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US11327771B1 (en) | 2021-07-16 | 2022-05-10 | SambaNova Systems, Inc. | Defect repair circuits for a reconfigurable data processor |
US11409540B1 (en) | 2021-07-16 | 2022-08-09 | SambaNova Systems, Inc. | Routing circuits for defect repair for a reconfigurable data processor |
US11556494B1 (en) | 2021-07-16 | 2023-01-17 | SambaNova Systems, Inc. | Defect repair for a reconfigurable data processor for homogeneous subarrays |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009530924A (ja) * | 2006-03-17 | 2009-08-27 | アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ | 再構成可能なマルチ処理粗粒アレイ |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
AU2003228062A1 (en) * | 2002-06-03 | 2003-12-19 | Koninklijke Philips Electronics N.V. | Reconfigurable integrated circuit |
EP1573490A2 (en) * | 2002-12-04 | 2005-09-14 | Koninklijke Philips Electronics N.V. | Software-based control of microprocessor power dissipation |
AU2005322593A1 (en) * | 2004-04-26 | 2006-07-06 | Replidyne, Inc. | Bacterial replication systems and methods |
JP3810419B2 (ja) * | 2004-12-07 | 2006-08-16 | 松下電器産業株式会社 | 再構成可能な信号処理プロセッサ |
EP1868094B1 (en) * | 2006-06-12 | 2016-07-13 | Samsung Electronics Co., Ltd. | Multitasking method and apparatus for reconfigurable array |
US20080244238A1 (en) * | 2006-09-01 | 2008-10-02 | Bogdan Mitu | Stream processing accelerator |
US20090113256A1 (en) * | 2007-10-24 | 2009-04-30 | Nokia Corporation | Method, computer program product, apparatus and device providing scalable structured high throughput LDPC decoding |
KR101335001B1 (ko) * | 2007-11-07 | 2013-12-02 | 삼성전자주식회사 | 프로세서 및 인스트럭션 스케줄링 방법 |
WO2009063584A1 (ja) * | 2007-11-13 | 2009-05-22 | Panasonic Corporation | プログラマブルデバイス、デバイス制御方法及び情報処理システム |
KR101581882B1 (ko) * | 2009-04-20 | 2015-12-31 | 삼성전자주식회사 | 재구성 가능한 프로세서 및 그 재구성 방법 |
KR101622266B1 (ko) * | 2009-04-22 | 2016-05-18 | 삼성전자주식회사 | 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법 |
KR101636377B1 (ko) * | 2009-10-23 | 2016-07-06 | 삼성전자주식회사 | 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법 |
KR101738941B1 (ko) * | 2010-03-23 | 2017-05-24 | 삼성전자주식회사 | 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법 |
KR101912427B1 (ko) * | 2011-12-12 | 2018-10-29 | 삼성전자주식회사 | 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어 |
-
2012
- 2012-02-28 KR KR1020120020560A patent/KR101978409B1/ko active IP Right Grant
-
2013
- 2013-02-28 CN CN201310063870.9A patent/CN103294643B/zh active Active
- 2013-02-28 JP JP2013039961A patent/JP6317065B2/ja active Active
- 2013-02-28 US US13/779,961 patent/US20130227255A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009530924A (ja) * | 2006-03-17 | 2009-08-27 | アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ | 再構成可能なマルチ処理粗粒アレイ |
Also Published As
Publication number | Publication date |
---|---|
KR20130098773A (ko) | 2013-09-05 |
JP2013178770A (ja) | 2013-09-09 |
CN103294643B (zh) | 2018-04-24 |
US20130227255A1 (en) | 2013-08-29 |
JP6317065B2 (ja) | 2018-04-25 |
CN103294643A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101978409B1 (ko) | 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 | |
KR101738941B1 (ko) | 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법 | |
KR101710116B1 (ko) | 프로세서, 메모리 관리 장치 및 방법 | |
KR101622266B1 (ko) | 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법 | |
KR101738640B1 (ko) | 트레이스 데이터 압축 장치 및 방법 | |
EP1368732B1 (en) | Digital signal processing apparatus | |
KR20150005062A (ko) | 미니-코어를 사용하는 프로세서 | |
KR20140131472A (ko) | 상수 저장 레지스터를 구비하는 재구성 가능 프로세서 | |
US20140137123A1 (en) | Microcomputer for low power efficient baseband processing | |
US7313671B2 (en) | Processing apparatus, processing method and compiler | |
US20140317388A1 (en) | Apparatus and method for supporting multi-modes of processor | |
KR101929754B1 (ko) | 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법 | |
US6675289B1 (en) | System and method for executing hybridized code on a dynamically configurable hardware environment | |
KR100663709B1 (ko) | 재구성 아키텍처에서의 예외 처리 방법 및 장치 | |
KR101571882B1 (ko) | 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법 | |
US7472257B2 (en) | Rerouting VLIW instructions to accommodate execution units deactivated upon detection by dispatch units of dedicated instruction alerting multiple successive removed NOPs | |
EP1443418A1 (en) | Architecture for reconfigurable digital signal processor | |
Jeong et al. | Vegeta: Vertically-integrated extensions for sparse/dense gemm tile acceleration on cpus | |
KR101912427B1 (ko) | 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어 | |
KR20140097651A (ko) | 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 | |
KR20130091113A (ko) | 재구성 기반 컴퓨팅 장치의 제1메모리 제어기 및 제2메모리 제어기와, 디버깅용 트레이스 데이터 처리가 가능한 재구성 기반 컴퓨팅 장치 | |
KR20130131789A (ko) | 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법 | |
KR101901332B1 (ko) | 부분적 전원 관리에 기반한 재구성가능 프로세서, 이 재구성가능 프로세서를 위한 코드 변환 장치 및 방법 | |
KR100861073B1 (ko) | 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조 | |
JP2016004383A (ja) | 半導体装置および半導体装置の動作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |