KR100636596B1 - 고에너지 효율 병렬 처리 데이터 패스 구조 - Google Patents

고에너지 효율 병렬 처리 데이터 패스 구조 Download PDF

Info

Publication number
KR100636596B1
KR100636596B1 KR1020040097665A KR20040097665A KR100636596B1 KR 100636596 B1 KR100636596 B1 KR 100636596B1 KR 1020040097665 A KR1020040097665 A KR 1020040097665A KR 20040097665 A KR20040097665 A KR 20040097665A KR 100636596 B1 KR100636596 B1 KR 100636596B1
Authority
KR
South Korea
Prior art keywords
instruction
signal
unit
data
register file
Prior art date
Application number
KR1020040097665A
Other languages
English (en)
Other versions
KR20060058579A (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 KR1020040097665A priority Critical patent/KR100636596B1/ko
Priority to US11/144,703 priority patent/US7461235B2/en
Publication of KR20060058579A publication Critical patent/KR20060058579A/ko
Application granted granted Critical
Publication of KR100636596B1 publication Critical patent/KR100636596B1/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/30141Implementation provisions of register files, e.g. ports
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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, look ahead
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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)
  • Computing Systems (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 고에너지 효율 병렬 처리 데이터 패스 구조에 관한 것으로, 특히 고에너지 효율을 위해 다수의 병렬 프로세스 유닛 및 이 프로세스 유닛을 구성하는 다수의 펑크션 유닛을 명령어에 의해 제어하여 병렬 처리로 성능을 향상시킬 수 있고, 필요한 프로세스 유닛 및 펑크션 유닛만 사용하므로 소비 전력을 줄여 에너지 효율을 향상시킬 수 있는 저 전력/고 성능 병렬 처리 데이터 패스 구조를 제공한다. 또한 간단한 명령어 포맷으로 성능과 소비 전력을 동시에 만족할 수 있는 고 에너지 효율 병렬 처리 데이터 패스 구조로서 프로그램에 의하여 하드웨어를 구성할 수 있어 하드웨어 유연성이 우수하다.
프로세서, 병렬 처리, 데이터 패스, 명령어 포맷

Description

고에너지 효율 병렬 처리 데이터 패스 구조{Parallel Data Path Architecture for High Energy Efficient}
도 1은 종래의 VLIW(Very Long Instruction Word) 명령어 포맷을 나타내는 도면이다.
도 2는 도 1의 명령어 포맷을 이용한 데이터 패스 구조에 대한 블록도이다.
도 3은 본 발명의 실시예에 따른 병렬 처리 데이터 패스 구조에 대한 블록도이다.
도 4는 본 발명의 실시예에 따른 프로세스 유닛에 대한 블록도이다.
도 5는 본 발명의 실시예에 따른 병렬 처리 데이터 패스 구조에 채용할 수 있는 명령어 포맷에 대한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
100 : 프로세스 유닛 어레이
110 : 프로세스 유닛
D_xx<K-1:0> : K 비트 데이터 버스
Instruction<K-1:0> : K 비트 명령어 버스
K : K 비트 버스
K/2 : K/2 비트 버스
CLK1 : 제 1 클럭
CLK2 : 제 2 클럭
RB : 리셋 신호
DIN : K 비트 데이터 입력
DOUT : K 비트 데이터 출력
ADDEN : 덧셈기 인에이블 신호
SHEN : 쉬프터 인에이블 신호
MULEN : 곱셈기 인에이블 신호
ADDOP : 덧셈기 동작 신호
SHOP : 쉬프터 동작 신호
MULOP : 곱셈기 동작 신호
RFIN : 레지스터 파일 선택 입력 신호
PUIN : 프로세스 유닛 선택 입력 신호
RFSel<N×M-1:0> : N×M개의 레지스터 파일 선택 신호
PUSel<N×M-1:0> : N×M개의 프로세스 유닛 선택 신호
본 발명은 고에너지 효율 병렬 처리 데이터 패스 구조에 관한 것이다.
데이터 패스는 연산 및 신호 처리에서 매우 중요한 블록으로, 프로세스 (MPU/MCU/DSP)의 성능을 결정한다. 일반적으로 데이터 패스는 명령어(Instruction)를 명령어를 읽음/패치(Fetch), 디코딩(Decoding), 실행(Execution) 등과 같이 데이터를 가공 처리하여 가공된 데이터를 읽고 쓰는 일련의 작업을 처리하는 블록이다. 따라서 프로세스의 성능을 향상시키기 위한 많은 구조가 제안되었다. 그 중에서 병렬-파이프라인 구조는 IPC(Instruction Per Cycle)를 증가시켜 성능을 향상하는 방법으로 널리 사용되고 있다.
프로세서(MPU/MCU/DSP) 데이터 패스의 성능 향상을 위해 많이 사용되고 있는 병렬-파이프라인 구조는 대표적으로 SIMD(Single Instruction Multiple Data)와 MIMD(Multiple Instruction Multiple Data)가 있다. SIMD는 한 개의 명령어로 여러 개의 데이터를 가공 및 처리하는 구조이고, MIMD는 여러 개의 명령어로 여러 개의 데이터를 가공 및 처리하는 구조이다. 이러한 SIMD 구조로는 프로세서가 실행중에 동시에 처리할 수 있는 명령어를 찾아서 처리하도록 하는 슈퍼스칼라(Superscalar) 구조와, 컴파일러가 동시에 처리할 수 있는 명령어를 길게 늘어놓아 긴 명령어를 한 사이클에 하나씩 처리하도록 하는 VILW 구조가 있다.
도 1은 종래의 VLIW(Very Long Instruction Word) 명령어 포맷에 대한 블록도이고, 도 2는 도 1의 VLIW 명령어 포맷을 이용한 데이터 패스 구조에 대한 블록도이다. 도 1 및 도 2에 도시한 바와 같이, 종래의 VLIW을 이용한 프로세스 구조는 프로그램 메모리(10)로부터의 여러 개의 명령어를 한 개의 압축된 명령어로 구성한 VLIW 명령어가 입력되면, 디스패치 유닛(dispatch unit, 12)을 통해 압축된 명령어를 풀어서 적어도 두 개의 실행 유닛(14, 16)을 통해 병렬로 각각의 명령어를 수행 하는 구조이다. 수행된 명령어에 따라 프로세서는 데이터 메모리(18)에서 데이터를 읽거나 데이터 메모리(18)에 데이터를 기록한다. 이 구조는 각 명령어를 한 개의 명령어로 압축시 각 명령어가 서로 각각 독립된 명령이어야 하므로, 명령어 자체의 처리 단위가 좀 더 복잡해진다.
이와 같이, 종래의 VLIW(Very Long Instruction Word) 구조에서는 명령어가 복잡하고 이를 해독하는 해독기 또한 매우 복잡하여 하드웨어(Hardware)가 매우 복잡해진다. 또한 긴 명령어를 한 사이클에 수행하기 위해 반드시 성능이 우수한 컴파일러가 필요하고 VLIW 구조에 알맞은 응용 프로그램을 짜기가 어려워 활용되지 않는 하드웨어 펑크션 유닛(Hardware Function Unit) 때문에 소비 전력은 증가한다.
또한 상술한 종래의 VLIW 구조와 유사하게 종래의 슈퍼스칼라 구조에서는 성능 향상을 위해 병렬 프로세스 유닛의 개수가 증가하면 하드웨어 펑크션 유닛이 증가하고 ILP(Instruction Level Parallelism) 적용시 병렬 하드웨어 펑크션 유닛을 완전히 활용하기가 어렵고, 또한 활용되지 않는 하드웨어 펑크션 유닛 때문에 소비 전력은 증가한다.
상기의 이유로 종래의 SIMD 슈퍼스칼라 구조 및 SIMD VLIW 구조는 프로세서의 성능을 향상시킬 수 있으나 소비 전력이 매우 크다는 단점이 있다.
상술한 종래 기술의 문제점을 극복하기 위해 도출된 것으로, 본 발명은 성능 은 향상되고 소비 전력은 감소하는 고에너지 효율 병렬 처리 데이터 패스 구조를 제공하는 것을 그 목적으로 한다.
상술한 목적을 달성하기 위하여, 본 발명의 일 측면에 따르면, 복수의 프로세스 유닛을 구비하고 병렬 처리 데이터 패스 구조를 가지는 프로세스 유닛 어레이에 있어서, 상기 각 프로세스 유닛은, 리셋 신호를 받고, 명령어 버스를 통해 입력되는 명령어를 제 1 클럭 신호에 동기하여 저장하는 명령어 레지스터, 상기 제 1 클럭 신호 및 제 2 클럭 신호를 받고, 상기 명령어를 디코딩하며 상기 명령어에 상응하는 제 1, 제 2 및 제 3 제어 신호를 발생시키는 명령어 디코더, 상기 리셋 신호를 받고, 상기 제 1 제어 신호에 응답하여 상기 디코딩된 명령어에 상응하는 레지스터 파일을 선택 및 제어하는 레지스터 파일, 상기 제 1 및 제 2 클럭 신호를 받고, 상기 제 2 제어 신호에 응답하여 데이터 버스에 접속된 외부 메모리와의 데이터 입출력을 제어하며 상기 레지스터 파일과 데이터를 주고받는 인터페이스 유닛, 및 상기 제 3 제어 신호에 응답하여 선택적으로 동작하고 그 출력을 상기 레지스터 파일에 각각 전달하는 복수의 연산 로직 유닛을 포함하는 프로세스 유닛 어레이가 제공된다.
바람직하게, 상기 프로세스 유닛 각각은 상기 각 레지스터 파일에 데이터를 쓰거나 상기 외부 메모리에서 상기 레지스터 파일의 상기 데이터를 읽을 수 있도록 상기 명령어 버스에 의하여 제어되는 레지스터 파일 선택 신호 및 레지스터 입력 신호를 상기 명령어 디코더에 구비한다.
또한, 상기 프로세스 유닛 어레이는 어플리케이션에 따라서 동작하는 상기 프로세스 유닛을 결정할 수 있도록 상기 명령어 버스에 의하여 제어되는 프로세스 유닛 선택 신호 및 프로세스 유닛 입력 신호를 상기 각 프로세스 유닛 내의 상기 각 명령어 디코더에 구비한다.
또한, 상기 제 1 내지 제 3 연산 로직 유닛은 덧셈 유닛, 쉬프터 유닛 및 곱셈 유닛을 포함하며, 상기 명령어 버스에 의해 제어되는 상기 제 3 제어 신호 내의 복수의 연산 로직 제어 신호들의 조합에 의해 적어도 하나의 연산 로직 유닛이 선택적으로 동작하도록 이루어진다.
또한, 상기 각 프로세스 유닛은 하나의 상기 명령어 버스에 병렬 접속되며 상기 각 데이터 버스를 통해 상기 외부 메모리에 접속되는 데이터 패스 구조를 구비한다.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나, 다음에 예시하는 본 발명의 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것이다.
도 3은 본 발명의 실시예에 따른 병렬 처리 데이터 패스 구조에 대한 블록도이다. 도 3에서, 설명의 편의상 제 1 행의 첫번째 열의 프로세스 유닛은 참조부호 PU_11로 표시하고, 제 1 행의 마지막 N번째 열의 프로세스 유닛을 참조부호 PU_N1로 표시하고, 제 1 열의 마지막 M번째 행의 프로세스 유닛을 PU_1M으로 표시하고, 제 N 열의 마지막 M번째 행의 프로세스 유닛을 PU_NM으로 표시한다. 그리고, 상술한 각 프로세스 유닛에 접속되는 데이터 버스 각각은 D_11<K-1:0>에서 D_N1<K-1:0>, D_1M<K-1:0>에서 D_NM<K-1:0>으로 표시한다.
도 3을 참조하면, 본 발명의 고에너지 효율 N×M 병렬 처리 데이터 패스 구조는 하나의 명령어 버스(IB<K-1:0>)에 병렬 접속된 복수의 프로세스 유닛(Process Unit, PU)을 구비한 N×M 프로세스 유닛 어레이에 구현된다.
상술한 N×M 프로세스 유닛 어레이 내의 각 프로세스 유닛(PU)은 리셋 신호(RB), 제 1 클럭(CLK1), 제 2 클럭(CLK2), K 비트 명령어 버스(K bit Instruction Bus(IB<K-1:0>)), K 비트 데이터 버스(K bit Data Buses(D_NM<K-1:0>))(여기서, N 및 M은 임의의 자연수이다), 레지스터 파일 선택 신호(RFSel<N×M-1:0>), 프로세스 유닛 선택 신호(PUSel<N×M-1:0>), 레지스터 파일 선택 입력 신호(RFIN) 및 프로세스 유닛 선택 입력 신호(PUIN)들을 구비한다.
여기서 리셋 신호(RB), 제 1 클럭(CLK1), 제 2 클럭(CLK2), 명령어 버스(IB<K-1:0>), 레지스터 파일 선택 입력 신호(RFIN) 및 프로세스 유닛 선택 입력 신호(PUIN)은 입력 신호이며, 레지스터 파일 선택 신호(RFSel<N×M-1:0>) 및 프로세스 유닛 선택 신호(PUSel<K×M-1:0>)는 출력 신호이고, 데이터 버스(D_11<K-1:0>, …, D_N1<K-1:0>, …, D_1M<K-1:0>, …, D_NM<K-1:0>)는 입출력 신호이다.
본 발명에 따른 N×M 프로세스 유닛 어레이는 리셋 신호(RB), 제 1 클럭 (CLK1), 제 2 클럭(CLK2), K 비트 명령어 버스(IB<K-1:0>), N×M개의 K 비트 데이터 버스(D_11<K-1:0)>, …, D_NM<K-1:0>), N×M개의 레지스터 파일 선택 신호(RFSel<N×M-1:0>), 프로세스 유닛 선택 신호(PUSel<N×M-1:0>), 레지스터 파일 선택 입력 신호(RFIN) 및 프로세스 유닛 선택 입력 신호(PUIN)들이 유기적으로 연결되어 있다.
구체적으로, 리셋 신호(RB)는 초기 레지스터 값을 초기화하기 위한 입력 신호이고, 모든 N×M 프로세스 유닛에 연결되어 있다. 제 1 클럭(CLK1) 및 제 2 클럭(CLK2) 신호는 프로세스 유닛들을 수행하기 위한 메인 클럭 신호들로서, 모든 N×M 프로세스 유닛에 연결되어 있다. 모든 명령어는 제 1 클럭(CLK1) 및 제 2 클럭(CLK2)에 동기되고, 1 사이클(Cycle) 동작을 한다. 1 사이클은 제 1 클럭(CLK1)과 제 2 클럭(CLK2)을 합친 시간이다.
한 개의 K 비트 명령어 버스(IB<K-1:0>)는 모든 프로세스 유닛들에 연결되어 있고, K 비트 명령어에 의해 모든 프로세스 유닛들이 제어된다. N×M 프로세스 유닛 어레이로 구성된 병렬 구조에서 명령어 버스는 한 개만 있다.
K 비트 데이터 버스(D_11<K-1:0)>, …, D_NM<K-1:0>)는 각각의 프로세스 유닛에 한 개씩 연결되어 있고, 각각의 프로세스 유닛에 데이터를 읽고 쓰기 위한 입출력 신호들이다. 본 발명에서 외부 메모리로의 데이터 입출력은 N×M개의 K 비트 데이터 버스(D_11<K-1:0)>, …, D_NM<K-1:0>)로만 가능하다.
레지스터 파일 선택 신호(RFSel<N×M-1:0>는 각각의 프로세스 유닛 어레이에 개별적으로 데이터를 읽고 쓰기 위한 신호들로 K 비트 명령어 버스(IB<K-1:0>)에 의하여 콘트롤(control)된다. 레지스터 파일 선택 입력 신호(RFIN)는 K 비트 명령어 버스(IB<K-1:0>)에 의하여 기선택된 N×M개의 레지스터 파일 선택 신호들(RFSel<N×M-1:0>) 중 하나를 받아들이는 입력 신호이다. 본 발명에서는 레지스터 파일 선택 신호(RFSel<N×M-1:0>)와 레지스터 파일 선택 입력 신호(RFIN)의 조합에 의하여 외부 메모리에서 N×M 프로세스 유닛들의 내부 레지스터 파일들로 데이터를 쓸 수 있고 또한 N×M 프로세스 유닛들의 내부 레지스터의 데이터를 외부 메모리에서 읽을 수 있다.
이로써, 본 발명은 외부 메모리에 접근(access)할 때 N×M 프로세스 유닛들에 개별적으로 연결되는 N×M개의 K 비트 데이터 버스(D_11<K-1:0)>, …, D_NM<K-1:0>)를 통해 데이터를 읽거나 쓰도록 이루어진 구조를 구비한다. 이것은 본 발명에 따른 병렬 처리 데이터 패스 구조가 동일한 명령어에 의하여 병렬 처리되는 SIMD 구조를 갖는다는 것을 나타낸다. 따라서, 본 발명에 따른 병렬 처리 데이터 패스 구조는 명령어 포맷이 간단할 뿐만 아니라 기존의 RISC(Reduced Inㅁstruction Set Computing) 타입의 명령어와 호완성이 뛰어나다.
프로세스 유닛 선택 신호(PUSel<N×M-1:0>)는 N×M 프로세스 유닛을 선택하여 프로세스 유닛 어레이를 콘트롤할 수 있다. 이러한 프로세스 유닛 선택 신호(PUSel<N×M-1:0>)는 K 비트 명령어 버스(IB<K-1:0>)에 의하여 콘트롤된다. 프로세스 유닛 선택 입력 신호(PUIN)는 K 비트 명령어 버스(IB<K-1:0>)에 의하여 선택된 N×M개의 프로세스 유닛 선택 신호들(PUSel<N×M-1:0>) 중 하나를 받아들이는 입력 신호이다. 프로세스 유닛 선택 신호(PUSel<N×M-1:0>)와 프로세스 유닛 선택 입력 신호(PUIN)의 조합에 의하여 N×M 프로세스 유닛 어레이를 콘트롤하여 응용(application)에 따라서 동작하는 프로세스 유닛을 결정할 수 있다. 다시 말해서, 본 발명에 따르면, N×M 프로세스 유닛을 모두 동작시키거나 원하는 프로세스 유닛만 선택하여 동작시킬 수 있으므로 소비전력을 줄일 수 있다.
상술한 프로세스 유닛 어레이의 각 프로세스 유닛은 여러 개의 펑크션 유닛(Function Unit, FU)으로 구성되어 있다. 프로세스 유닛에 대하여 아래에서 보다 상세히 설명한다.
도 4는 본 발명의 실시예에 따른 프로세스 유닛에 대한 블록도이다.
도 4를 참조하면, 본 발명에 따른 프로세스 유닛(110)은 리셋 신호(RB), 리셋 신호(RB), 제 1 클럭(CLK1), 제 2 클럭(CLK2), K 비트 명령어 버스(IB<K-1:0>), K 비트 데이터 버스(D_NM<K-1:0>))(여기서, N 및 M은 임의의 자연수이다), 레지스터 파일 선택 신호(RFSel<N×M-1:0>), 프로세스 유닛 선택 신호(PUSel<N×M-1:0>), 레지스터 파일 선택 입력 신호(RFIN), 프로세스 유닛 선택 입력 신호(PUIN) 및 연산 로직 유닛을 제어하기 위한 신호들(ADDEN, SHEN, MULEN, ADDOP, SHOP, MULOP)을 구비한다.
또한, 프로세스 유닛(110)은 명령어 레지스터(Instruction Register, 111), 명령어 디코더(Instruction Decoder, 112), 레지스터 파일(Register Files, 113), 인터페이스 유닛(Load/Store Unit, 114) 및 연산 로직 유닛을 구비한다.
구체적으로, 명령어 레지스터(111)는 리셋 신호(RB)와 제 1 클럭(CLK1)을 입 력 받고, K 비트 명령어 버스(IB<K-1:0>)에 연결된다.
명령어 디코더(112)는 K 비트 버스를 통해 명령어 레지스터(111)에 연결되고, 제 1 클럭(CLK1), 제 2 클럭(CLK2), 레지스터 파일 선택 입력 신호(RFIN) 및 프로세스 유닛 선택 입력 신호를 입력 받고, 레지스터 파일(113) 및 인터페이스 유닛(114)을 제어하기 위한 제 1 및 제 2 제어 신호와 연산 로직 유닛을 제어하기 위한 제 3 제어 신호를 생성하여 출력한다. 여기서, 제 3 제어 신호는 연산 로직 유닛 내의 복수의 연산 로직을 선택적으로 동작시키기 위하여 복수의 연산 로직 제어 신호를 포함한다.
또한, 명령어 디코더(112)는 레지스터 파일 선택 신호(RFSel<N×M-1:0>) 및 프로세스 유닛 선택 신호(PUSel<N×M-1:0>)을 출력하고, 레지스터 파일 선택 입력 신호(RFIN) 및 프로세스 유닛 선택 입력 신호(PUIN)를 입력 받는다.
레지스터 파일(K bit × L Register Files, 113)은 리셋 신호(RB) 및 명령어 디코더(112)로부터의 제 1 제어 신호를 받고, K 비트, K/2 비트, 가변 비트(P) 등의 폭을 가진 버스를 통해 연산 로직 유닛에 접속되며, 연산 로직 유닛의 출력 신호를 입력 받는다. 또한, 레지스터 파일(113)은 인터페이스 유닛(114)에 연결되어 데이터를 입출력한다.
인터페이스 유닛(Load/Store Unit, 114)은 제 1 및 제 2 클럭(CLK1, CLK2)과 명령어 디코더(112)로부터의 제 2 제어 신호를 받고, 외부 메모리와 연결되어 있는 데이터 버스(D_NM<K-1:0>)에 접속된다.
연산 로직 유닛은 복수의 연산 로직 유닛을 포함하며, 적어도 K 비트 덧셈기 (K bit Adder, 115), K 비트 가변 쉬프터(K bit Variable Shifter, 117) 및 K/2 비트 곱셈기(K/2 bit Multiplier, 119)를 구비한다. K 비트 덧셈기(115)는 명령어 디코더(112)의 덧셈기 인에이블(enable) 신호(ADDEN)에 의해 제어되며, 그 출력단에는 명령어 디코더(112)의 덧셈기 동작 신호(ADDOP) 및 제 2 클럭(CLK2)에 의해 제어되어 동작되는 출력 버퍼(116, 121)가 구비된다. K 비트 가변 쉬프터(117)는 명령어 디코더(112)의 쉬프터 인에이블 신호(SHEN)에 의해 제어되며, 그 출력단에는 명령어 디코더(112)의 쉬프터 동작 신호(SHOP) 및 제 2 클럭(CLK2)에 의해 제어되어 동작되는 출력 버퍼(118, 121)가 구비된다. K/2 비트 곱셈기(119)는 명령어 디코더(112)의 곱셈기 인에이블 신호(MULEN)에 의해 제어되며, 그 출력단에는 명령어 디코더(112)의 곱셈기 동작 신호(MULOP) 및 제 2 클럭(CLK2)에 의해 제어되어 동작되는 출력 버퍼(120, 121)가 구비된다. 여기서, 각 출력 버퍼는 2개의 인버터로 구성되며, 그 중에 제 2 클럭(CLK2)에 의해 제어되는 인버터(121)는 각 출력 버퍼가 공유하도록 형성된다.
본 발명에 따른 프로세스 유닛(110)의 동작을 설명하면 다음과 같다.
먼저, 명령어 레지스터(111)에 K 비트 명령어가 입력되면 명령어 디코더(112)에서 K 비트 명령어를 해독하여 여러 가지의 제어 신호들을 발생시킨다. 발생된 제어 신호들은 레지스터 파일(113)로 입력되어 입력된 명령어에 맞는 레지스터 파일들을 선택 및 제어하고, 인터페이스 유닛(114)으로 입력되어 외부 메모리에서 데이터 입력 및 외부 메모리로의 데이터 출력을 제어하는데 사용된다.
또한, 명령어 디코더(112)는 K 비트 및 K/2 비트 연산 로직 유닛들을 제어하 여 위한 제어 신호들을 발생시킨다. 이 제어 신호들의 조합으로 연산 로직 유닛에서는 필요한 연산 로직 유닛만을 동작시킨다.
예를 들면, 명령어 디코더(112)에서 덧셈기 인에이블 신호(ADDEN)와 덧셈기 동작 신호(ADDOP)가 발생하면 K 비트 덧셈기(115)만 동작하고 나머지 연산 로직 유닛들(117, 119)은 디스에이블(Disable)된다. 다른 한편으로, 명령어 디코더(112)에서 쉬프터 인에이블 신호(SHEN)와 쉬프터 동작 신호(SHOP)가 발생하면 K 비트 가변 쉬프터(117)만 동작한다. 또 다른 한편으로, 곱셈기 인에이블 신호(MULEN)와 곱셈기 동작 신호(MULOP)가 발생하면 K/2 비트 곱셈기(119)만 동작한다. 이와 같이 본 발명에 따르면 연산 로직 제어 신호들의 조합으로 필요한 연산 로직 유닛만 동작 시키고, 나머지 연산 로직 유닛들을 디스에이블시켜 소비전력을 줄일 수 있다.
다음, K 비트×L개로 구성되는 레지스터 파일(113)은 인터페이스 유닛(114)에 연결되어 명령어 디코더(112)의 제어 신호에 따라 외부 데이터를 받아들이거나 내부 데이터를 외부 메모리로 출력한다(DIN, DOUT). 또한 레지스터 파일(113)은 명령어 수행시 필요한 데이터들을 공급하고 연산 로직 유닛으로부터 받은 명령어 수행 결과 데이터들을 저장한다. 그리고 레지스터 파일(113)은 외부 메모리 억세스 명령어(Load, Store)를 제외한 모든 명령어들의 입출력 데이터를 입력 또는 출력한다.
여기서, K 비트 덧셈기(115), K 비트 가변 쉬프터(117) 및 K/2 비트 곱셈기(119)는 명령어를 한 사이클에 수행하고, 해독된 명령어에 맞는 K 비트 데이터 혹은 K/2 비트 데이터들을 레지스터 파일(113)로부터 받아 연산을 수행하여 K 비트 결과 데이터를 레지스터 파일(113)에 전달한다. 이때, 연산 로직 유닛들은 명령어에 의하여 하나의 연산 로직 유닛만 선택되어 동작한다. 즉, 여러 개의 연산 로직 유닛(115, 117, 119)들은 K 비트 명령어 버스(IB<K-1:0>)에 의하여 콘트롤되어 여러 개의 연산 로직 유닛들 중 한 개의 연산 로직 유닛만이 동작하도록 선택된다.
한편, 에너지 효율은 "Performance/Total Power"로 정의할 수 있다. 그러므로, 데이터 패스의 정보 처리 및 가공 능력을 소비 전력으로 나눈 것은 에너지 효율이고, 그 단위는 MIPS/mW가 된다. MIPS(Million Instruction Per Second)는 성능을 표시하는 일반적인 단위로 초당 몇 백만개의 명령어를 처리할 수 있는지를 나타낸다. 이러한 기준에 의하면, 본 발명에 따른 병렬 처리 데이터 패스 구조는 프로세서 데이터 패스의 성능이 증가하고 소비 전력이 감소하는 고 에너지 효율을 달성한다.
도 5는 본 발명의 실시예에 따른 병렬 처리 데이터 패스 구조에 채용할 수 있는 명령어 포맷에 대한 도면이다.
본 발명에 따른 병렬 처리 데이터 패스 구조에 채용가능한 명령어 포맷은 도 5에 도시한 바와 같이 32 비트 명령어로서 다음과 같은 구성을 구비한다.
IB<31:24> : Opcode
IB<23:20> : Register File Selection
IB<19:16> : Destination Register
IB<15:12> : Source 1 Register
IB<11:8> : Source 2 Register
IB<7:0> : Immediate Data
상술한 명령어 포맷의 각 비트 설정은 다음과 같다.
IB<31:30> : Operation Selection
00: ALU Operation
01: Multiplier Operation
10: Shifter Operation
11: Load/Store Operation
IB<29>: Load/Stroe EN
0: Load EN
1: Store EN
IB<28>: Carry In Cin
IB<27:25>: ALU Function Selection
0000: ADD Function
0010: SUB Function
0100: SUB1 Function
1000: OR Function
1010: XOR Function
1100: AND Function
1110: MOV Function
IB<24>: External/Internal Memory Access Selection
0: Internal Memory Access
1: External Memory Access
IB<23:22>: Register File Selection
00: First RF
01: Second RF
10: Third RF
11: Fourth RF
IB<21:20>:
IB<19:16>: Destination Register
IB<15:12>: Source 1 Register
IB<11:8>: Source 2 Register
IB<7:0>: Immediate Data
이와 같이, 본 발명은 간단한 명령어를 이용하여 리셋 신호, 제 1 클럭, 제 2 클럭, K 비트 명령어 버스, K 비트 데이터 버스, 레지스터 파일 선택 신호, 프로세스 유닛 선택 신호, 레지스터 파일 선택 입력 신호, 프로세스 유닛 선택 입력 신호 및 연산 로직 제어 신호들을 생성하고, 그것에 의해 각 프로세스 유닛과 각 프로세스 유닛 내의 레지스터 파일 및 복수의 연산 로직 유닛을 응용에 따라 필요한 유닛만을 동작시켜 저 전력 및 고 성능(고 에너지 효율)을 가진 N×M 프로세스 유닛 어레이를 제공한다. 또한, 도 5와 같은 명령어 포맷을 이용함으로써, RISC 타입 의 명령어와 호완성이 뛰어나다.
이상에서와 같이 상세한 설명과 도면을 통해 본 발명의 최적 실시예를 개시하였다. 용어들은 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 따르면, 고에너지 효율을 위해 다수의 병렬 프로세스 유닛 및 이 프로세스 유닛을 구성하는 복수의 유닛을 명령어에 의해 제어하여 병렬 처리로 성능을 향상시킬 수 있고, 필요한 프로세스 유닛 및 연산 로직 유닛만 사용하므로 소비 전력을 줄여 에너지 효율을 향상시킬 수 있다. 또한 간단한 명령어 포맷으로 성능과 소비 전력을 동시에 만족할 수 있는 고 에너지 효율 병렬 처리 데이터 패스 구조로서 프로그램에 의하여 하드웨어를 구성할 수 있어 하드웨어 유연성이 우수하다.

Claims (5)

  1. 복수의 프로세스 유닛을 구비하고 병렬 처리 데이터 패스 구조를 가지는 프로세스 유닛 어레이에 있어서, 상기 각 프로세스 유닛은,
    리셋 신호를 받고, 명령어 버스를 통해 입력되는 명령어를 제 1 클럭 신호에 동기하여 저장하는 명령어 레지스터;
    상기 제 1 클럭 신호 및 제 2 클럭 신호를 받고, 상기 명령어를 디코딩하며 상기 명령어에 상응하는 제 1, 제 2 및 제 3 제어 신호를 발생시키는 명령어 디코더;
    상기 리셋 신호를 받고, 상기 제 1 제어 신호에 응답하여 상기 디코딩된 명령어에 상응하는 레지스터 파일을 선택 및 제어하는 레지스터 파일;
    상기 제 1 및 제 2 클럭 신호를 받고, 상기 제 2 제어 신호에 응답하여 데이터 버스에 접속된 외부 메모리와의 데이터 입출력을 제어하며 상기 레지스터 파일과 데이터를 주고받는 인터페이스 유닛; 및
    상기 제 3 제어 신호에 응답하여 선택적으로 동작하고 그 출력을 상기 레지스터 파일에 각각 전달하는 제 1, 제 2 및 제 3 연산 로직 유닛을 포함하는 프로세스 유닛 어레이.
  2. 제 1 항에 있어서,
    상기 프로세스 유닛 각각은 상기 각 레지스터 파일에 데이터를 쓰거나 상기 외부 메모리에서 상기 레지스터 파일의 상기 데이터를 읽을 수 있도록 상기 명령어 버스에 의하여 제어되는 레지스터 파일 선택 신호 및 레지스터 입력 신호를 상기 명령어 디코더에 구비하는 프로세스 유닛 어레이.
  3. 제 1 항에 있어서,
    상기 프로세스 유닛 어레이는 응용에 따라서 동작하는 상기 프로세스 유닛을 결정할 수 있도록 상기 명령어 버스에 의하여 제어되는 프로세스 유닛 선택 신호 및 프로세스 유닛 입력 신호를 상기 각 프로세스 유닛 내의 상기 각 명령어 디코더에 구비하는 프로세스 유닛 어레이.
  4. 제 1 항에 있어서,
    상기 제 1 내지 제 3 연산 로직 유닛은 덧셈 유닛, 쉬프터 유닛 및 곱셈 유닛을 포함하며, 상기 명령어 버스에 의해 제어되는 상기 제 3 제어 신호 내의 복수의 연산 로직 제어 신호들의 조합에 의해 적어도 하나의 연산 로직 유닛이 선택적으로 동작하는 프로세스 유닛 어레이.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 각 프로세스 유닛은 하나의 상기 명령어 버스에 병렬 접속되며 상기 데이터 버스를 통해 상기 외부 메모리에 각각 접속되는 데이터 패스를 구비하는 프로세스 유닛 어레이.
KR1020040097665A 2004-11-25 2004-11-25 고에너지 효율 병렬 처리 데이터 패스 구조 KR100636596B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040097665A KR100636596B1 (ko) 2004-11-25 2004-11-25 고에너지 효율 병렬 처리 데이터 패스 구조
US11/144,703 US7461235B2 (en) 2004-11-25 2005-06-06 Energy-efficient parallel data path architecture for selectively powering processing units and register files based on instruction type

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040097665A KR100636596B1 (ko) 2004-11-25 2004-11-25 고에너지 효율 병렬 처리 데이터 패스 구조

Publications (2)

Publication Number Publication Date
KR20060058579A KR20060058579A (ko) 2006-05-30
KR100636596B1 true KR100636596B1 (ko) 2006-10-23

Family

ID=36462234

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040097665A KR100636596B1 (ko) 2004-11-25 2004-11-25 고에너지 효율 병렬 처리 데이터 패스 구조

Country Status (2)

Country Link
US (1) US7461235B2 (ko)
KR (1) KR100636596B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255674B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Implied storage operation decode using redundant target address detection
US20110004703A1 (en) * 2009-07-02 2011-01-06 Nanya Technology Corporation Illegal command handling
CN101763244B (zh) * 2010-01-21 2013-09-18 龙芯中科技术有限公司 存储器与寄存器之间的数据传输装置和方法
US8589665B2 (en) 2010-05-27 2013-11-19 International Business Machines Corporation Instruction set architecture extensions for performing power versus performance tradeoffs
CN104216842B (zh) * 2013-06-05 2017-06-06 上海华虹宏力半导体制造有限公司 寄存器组与存储器数据双向传输结构及数据双向传输方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0426393A2 (en) 1989-11-01 1991-05-08 Fujitsu Limited Instructing method and execution system
US5390358A (en) 1991-07-18 1995-02-14 Seikosha Co., Ltd. Arithmetic unit that requires only one byte instructions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
JP3520611B2 (ja) * 1995-07-06 2004-04-19 株式会社日立製作所 プロセッサの制御方法
JP3623840B2 (ja) 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
ATE362623T1 (de) 1997-11-07 2007-06-15 Altera Corp Verfahren und gerät für effiziente, synchrone mimd-operationen mit ivliw pe-zu-pe kommunikationen
US6219796B1 (en) * 1997-12-23 2001-04-17 Texas Instruments Incorporated Power reduction for processors by software control of functional units
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6205543B1 (en) * 1998-12-03 2001-03-20 Sun Microsystems, Inc. Efficient handling of a large register file for context switching
US7107471B2 (en) * 2001-03-21 2006-09-12 Apple Computer, Inc. Method and apparatus for saving power in pipelined processors
WO2004034252A2 (en) * 2002-10-11 2004-04-22 Koninklijke Philips Electronics N.V. Vliw processor with instruction address modification
WO2004051449A2 (en) * 2002-12-04 2004-06-17 Koninklijke Philips Electronics N.V. Register file gating to reduce microprocessor power dissipation
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0426393A2 (en) 1989-11-01 1991-05-08 Fujitsu Limited Instructing method and execution system
US5390358A (en) 1991-07-18 1995-02-14 Seikosha Co., Ltd. Arithmetic unit that requires only one byte instructions

Also Published As

Publication number Publication date
US20060112258A1 (en) 2006-05-25
KR20060058579A (ko) 2006-05-30
US7461235B2 (en) 2008-12-02

Similar Documents

Publication Publication Date Title
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
EP1550030B1 (en) Method and apparatus for register file port reduction in a multithreaded processor
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
JP4986431B2 (ja) プロセッサ
US9575753B2 (en) SIMD compare instruction using permute logic for distributed register files
US9766894B2 (en) Method and apparatus for enabling a processor to generate pipeline control signals
US20020169942A1 (en) VLIW processor
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
RU2636669C2 (ru) Устройство и способ реверсирования и перестановки битов в регистре маски
US7313671B2 (en) Processing apparatus, processing method and compiler
JP2011090592A (ja) 情報処理装置とその命令デコーダ
JP5326314B2 (ja) プロセサおよび情報処理装置
US20220035635A1 (en) Processor with multiple execution pipelines
US7461235B2 (en) Energy-efficient parallel data path architecture for selectively powering processing units and register files based on instruction type
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
US20120110037A1 (en) Methods and Apparatus for a Read, Merge and Write Register File
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
CN112506468B (zh) 支持高吞吐多精度乘法运算的risc-v通用处理器
KR100896269B1 (ko) SIMD/SISD/Row/Column 동작을 할 수있는 SIMD 병렬 프로세서
WO2010016097A1 (ja) 演算処理装置
JP5786719B2 (ja) ベクトルプロセッサ
JP2000003279A (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
US20240118891A1 (en) Processor
JP3524240B2 (ja) 並列命令処理装置
Lee et al. Design of a high performance self-timed ARM9 processor

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
FPAY Annual fee payment

Payment date: 20121011

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130923

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140926

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150925

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181001

Year of fee payment: 13