KR101978409B1 - 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 - Google Patents

재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 Download PDF

Info

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
Application number
KR1020120020560A
Other languages
English (en)
Other versions
KR20130098773A (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 KR1020120020560A priority Critical patent/KR101978409B1/ko
Priority to US13/779,961 priority patent/US20130227255A1/en
Priority to JP2013039961A priority patent/JP6317065B2/ja
Priority to CN201310063870.9A priority patent/CN103294643B/zh
Publication of KR20130098773A publication Critical patent/KR20130098773A/ko
Application granted granted Critical
Publication of KR101978409B1 publication Critical patent/KR101978409B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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 processor, apparatus and method for converting code}
재구성가능 프로세서 및 재구성가능 프로세서용 컴파일러와 관련된다.
통상적으로, 재구성 가능 아키텍처(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은 일 실시예에 따른 재구성가능 프로세서를 위한 코드 변환 장치를 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 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: 글로벌 레지스터 파일

Claims (14)

  1. 다수의 펑션 유닛(function unit, FU)을 포함하고, 실행 모드로서 제 1 FU 그룹에 기초한 VLIW(very long instruction word) 모드, 제 2 FU 그룹의 전체 FU에 기초한 제 1 CGA 모드, 및 제 2 FU 그룹의 일부 FU에 기초한 제 2 CGA 모드를 갖는 처리부;
    상기 각각의 모드를 위한 구성 정보가 저장되는 구성 메모리;
    소정의 모드 전환 신호에 따라 상기 구성 메모리에 저장된 구성 정보를 상기 각각의 모드에 맞게 상기 처리부로 전달하는 디코더; 및
    상기 각각의 모드에 따라 동작하지 아니하는 FU로 공급되는 전원을 차단하고, 상기구성 메모리 중 상기 제2 CGA 모드의 구성 정보가 저장된 메모리 영역의 일부 영역의 전원을 차단하는 전원부;를 포함하는 재구성가능 프로세서.
  2. 삭제
  3. 제 1 항에 있어서, 상기 구성 메모리는
    상기 제 1 CGA 모드를 위한 제 1 CGA 구성 정보와 상기 제 2 CGA 모드를 위한 제 2 CGA 구성 정보를 서로 다른 메모리 영역에 저장하는 것을 특징으로 하는 재구성가능 프로세서.
  4. 제 3 항에 있어서, 상기 디코더는
    상기 제 1 CGA 모드에서 상기 제 1 CGA 구성 정보를 상기 처리부로 그대로 전달하고,
    상기 제 2 CGA 모드에서 상기 제 2 CGA 구성 정보를 상기 처리부로 변환하여 전달하는 것을 특징으로 하는 재구성가능 프로세서.
  5. 제 4 항에 있어서, 상기 디코더는
    상기 제 2 CGA 구성 정보 중에서 상기 제 2 FU 그룹의 일부 FU에 매핑되지 아니한 구성 정보를 설정된 값으로 변경하는 것을 특징으로 하는 재구성가능 프로세서.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 제 1 CGA 모드와 상기 제 2 CGA 모드 간의 전환은 상기 VLIW 모드를 거쳐서 이루어지는 것을 특징으로 하는 재구성가능 프로세서.
  8. 제 1 항에 있어서, 상기 처리부는
    상기 제 2 FU 그룹의 일부 FU와 상이한 다른 FU에 기초한 제 3 CGA 모드를 더 갖는 것을 특징으로 하는 재구성가능 프로세서.
  9. 다수의 펑션 유닛(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 모드의 구성 정보가 저장된 메모리 영역의 일부 영역의 전원을 차단하는 전원부를 포함하는 코드 변환 장치.
  10. 제 9 항에 있어서, 상기 하드웨어 정보 제공부는
    코드의 성질 또는 사용자의 명령에 따라 상기 각각의 하드웨어 정보 중 어느 하나를 선택하는 것을 특징으로 하는 코드 변환 장치.
  11. 제 9 항에 있어서, 상기 컴파일부는
    상기 제공된 하드웨어 정보에 기초하여 상기 제 2 FU 그룹의 일부 FU를 제외한 나머지 FU에 상기 코드와 관련된 인스트럭션 또는 데이터를 매핑하지 아니하는 것을 특징으로 하는 코드 변환 장치.
  12. 삭제
  13. 삭제
  14. 삭제
KR1020120020560A 2012-02-28 2012-02-28 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법 KR101978409B1 (ko)

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)

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009530924A (ja) * 2006-03-17 2009-08-27 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ 再構成可能なマルチ処理粗粒アレイ

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어

Patent Citations (1)

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