KR100962932B1 - Vliw 프로세서 - Google Patents

Vliw 프로세서 Download PDF

Info

Publication number
KR100962932B1
KR100962932B1 KR1020057004579A KR20057004579A KR100962932B1 KR 100962932 B1 KR100962932 B1 KR 100962932B1 KR 1020057004579 A KR1020057004579 A KR 1020057004579A KR 20057004579 A KR20057004579 A KR 20057004579A KR 100962932 B1 KR100962932 B1 KR 100962932B1
Authority
KR
South Korea
Prior art keywords
standard
output
high speed
input
fast
Prior art date
Application number
KR1020057004579A
Other languages
English (en)
Other versions
KR20050057397A (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 엔엑스피 비 브이
Publication of KR20050057397A publication Critical patent/KR20050057397A/ko
Application granted granted Critical
Publication of KR100962932B1 publication Critical patent/KR100962932B1/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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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/38Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • 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
    • G06F9/3891Concurrent 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 organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Saccharide Compounds (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 고 주파수 동작 프로세서 및 고성능 프로세서 모두를 생성하는 완전히 합성 가능한 수퍼 파이프라인 VLIW 프로세서를 생성하는 방법에 관한 것이다. VLIW의 연산 장치를 두 개의 서브세트로 분리하는 것이 제안된다. 제 1 서브세트 유닛은 루프 내에 단지 하나의 레지스터 지연만 가지고 기본 루프를 실행하는 반면에, 다른 유닛은 제 1 유닛 주위에 접속되어 있지만, 루프 내에 종래의 지연을 갖는다.

Description

VLIW 프로세서{SYSTEM AND METHOD FOR A FULLY SYNTHESIZABLE SUPERPIPELINED VLIW PROCESSOR}
본 발명은 고주파수 동작 프로세서 및 고성능 프로세서를 모두 생성하는 완전히 합성가능한 수퍼 파이프라인(fully synthesizable super-pipelined)) VLIW(Very Long Instruction Word) 프로세서를 생성하는 방법에 관한 것이다.
VLIW CPU(Central Processor Unit)는 특히 신호 처리 및 기타 병렬화가능한 계산 시에, 다른 CPU 아키텍처에 비해 실리콘 영역 당 매우 양호한 성능을 갖는 공지된 CPU 아키텍처이다. VLIW CPU 구성의 설명에 대해서는 "Computer Architecture: A Quantitative Approach', John L. Hennessy, David A. Patterson, David Goldberg, Morgan Kaufmann Pulishers; ISBN:1558605967; 3rd edition (May 15, 2002)"를 참조하라.
VLIW CPU는 통상 RISC 프로세서와 동일한 기술 및 동일한 설계 양식으로 RISC 프로세서보다는 약간 늦지만 거의 이것에 가까운 클록 속도를 획득한다. 예를 들면, .12u CMOS 기술에서, 완전히 합성가능한(fully synthesizable) ARM 및 MIPS RISC CPU는 250 내지 350 MHz의 최악의 경우의 클록 속도를 획득하는 반면에, 필립스 TriMedia TM3260 CPU 코어와 같은 완전히 합성가능한 VLIW CPU는 240 MHz의 클록 속도를 획득한다. VLIW CPU 클록 속도는 RISC CPU의 클록 속도보다 다소 낮지만, 동시에 보다 많은 동작을 수행하며, 따라서 병렬화 가능한 애플리케이션에 대해 실질적으로 보다 높은 성능을 갖는다.
VLIW CPU의 클록 속도는 여러 문제점에 의해 제한되는데, 특히 다음과 같은 문제점에 의해 제한된다.
1. 내부 정적 RAM 메모리의 속도.
2. 기능 유닛 내의 기본 산술 연산을 수행하는 고유 로직 게이트 깊이.
3. 기본적인 이른 바 VLIW CPU 바이패스 루프.
VLIW CPU 바이패스 루프는 신호가 VLIW CPU의 기능 유닛의 출력으로부터 동일한 VLIW CPU 유닛의 입력으로 또는 다른 VLIW CPU의 기능 유닛의 입력으로 진행할 수 있는 경로를 포함한다. 이 경로는 (통상 완전한 크로스바 스위치로서 구현된) 바이패스 네트워크를 포함한다
수퍼 파이프라이닝은 문제점 1 및 2를 해결할 수 있으며, 이에 대해서는 아래에 설명한다. VLIW CPU 바이패스 루프와 관련된 문제점 3은 근원적인 문제점이다. 바이패스 루프는 RISC CPU에도 존재하지만, RISC CPU의 바이패스 루프가 VLIW CPU보다 적은 소스(또는 입력의 개수) 및 수신지(또는 출력의 개수)를 포함하기 때문에, RISC CPU가 VLIW CPU보다 다소 빠른 클록으로 실행될 수 있다.
도 1은 레지스터 파일(114), 바이패스 네트워크(120), 단일 사이클 기능 유닛(FU)(single cycle functional unit)(102) 및 두 개의 사이클 FU(two cycle functional unit)(104)를 포함하는 간단한 파이프라인 VLIW 프로세서(100) 예의 데이터 경로를 도시하고 있다(각 클록 사이클에서, 데이터 경로는 각각의 기능 유닛 상에서 하나씩 5개 이하의 계산을 개시할 수 있으며, 데이터는 먼저 레지스터(106)에서 클로킹된다(레지스터는 또한 파이프라인 레지스터라고도 지칭된다)). 데이터는 클로킹된 후, FU 입력(122)으로서 기능 유닛(FU)에 들어가고, FU 출력(118)으로서 나온다. 바이패스 네트워크(120)로부터 나와서 단일 사이클 기능 유닛(FU)(102)에 들어가는 데이터는 단일 레지스터(106) 및 단일 스테이지 기능 유닛(FU)(108)을 통과한다. 바이패스 네트워크(120)로부터 나와서 두 개의 사이클 FU(104)로 들어가는 데이터는 두 개의 레지스터(106, 107) 및 스테이지(111, 112)를 통과한다. 각 계산의 변수(argument)는 중앙 레지스터 파일(114)로부터 레지스터 출력(116)으로서 나오거나, 또는 이전의 사이클에서 완료된 계산의 결과, FU 출력(118)으로부터 나올 수 있다.
바이패스 루프 속도 제한은 다음과 같이 이해될 수 있다.
· 클록 사이클 'i' 내의 기능 유닛 'm'의 마지막 스테이지에서 생성된 결과는 클록 사이클 'i+1' 내의 기능 유닛 'n' 내의 좌측 또는 우측 변수로서 필요할 수도 있다.
· 따라서, 매 FU 출력(118)으로부터 기능 유닛의 각 입력, 즉 FU 입력(122)으로의 접속이 필요하며, (하나 이하의 클록 주기만큼 지연시키기 위해서는) 이 접속은 많아야 하나의 파이프라인 레지스터와 교차한다.
· 이 기본 루프가 동작하는 속도는 이 기술에 의해 결정되는데, 특히 각 기능 유닛의 입력 파이프라인 레지스터 상의 멀티플렉서에 대한 입력의 수 및 총 배선 길이에 의해 결정된다(도 1의 바이패스 네트워크(120)는 각 기능 유닛 입력에 대해 하나의 멀티플렉서를 포함하고, 이 멀티플렉서의 입력으로서 하나의 레지스터 파일 출력 및 모든 기능 유닛의 출력을 갖는다).
· 배선 길이는 기능 유닛의 수에 따라서 증가하며, 마찬가지로 멀티플렉서의 입력의 수도 똑같이 증가한다.
VLIW CPU 데이터 경로의 많은 변형들이 가능한데, 예를 들어, 참조로서 본 명세서에 인용된 US 6,122,722(1999년 3월 17일 출원. 출원번호 09/271,202, 발명자: Gerrit Slavenburg)는 성능을 크게 줄이지 않고 중앙 레지스터 파일 판독 포트 및 기록 포트의 수와 기록 버스를 줄이는 방법을 개시하고 있다. 다른 VLIW CPU 머신은 부동 소수점 계산에 사용하기 위해 정수 결과를 전송하거나 또는 그 반대의 경우를 위한 몇 개의 통신 버스에 의해 상호접속된 2개 부분, 즉 프라이비트 중앙 레지스터 파일을 포함하는 정수 계산을 위한 데이터 경로와, 프라이비트 중앙 레지스터 파일을 포함하는 부동 소수점 계산을 위한 데이터 경로로 VLIW CPU를 분할했을 수도 있다. 또한, 파이프라인 레지스터 스테이지를 기능 유닛의 입력부가 아니라 기능 유닛의 출력부 및/또는 기타 영역에 두는 것이 가능하다. 이러한 모든 변형은 관련 기본적인 속도 제한과 함께 실질적으로 유사한 단일 클록 사이클의 바이패스 루프 신호 지연을 초래한다.
CPU가 프로세서 인스트럭션을 더 빠르게 실행하게 하는 공지되어 있는 기법은 수퍼 파이프라이닝이라고 하는 기법이다. 도 2a는 입력부로부터 출력부로의 CPU의 전형적인 파이프라인 로직 스테이지에서의 데이터 흐름을 나타낸다. 데이터는 레지스터(206)에서 클로킹되고 게이트 깊이가 P인 결합 로직(combinatorial logic)(208)에서 처리된 후, 다른 레지스터(206)에서 클로킹된다. 도 2b는 입력부로부터 출력부로의 CPU의 전형적인 수퍼 파이프라인 로직 스테이지에서의 데이터 흐름을 나타낸다. 데이터는 레지스터(206)에서 클로킹되고, 게이트의 깊이가 P/2인 결합 로직(211)에서 처리되며, 그 다음에 레지스터(206)에서 클로킹되고, 게이트의 깊이가 P/2인 결합 로직(212)에서 처리되며, 마지막으로 레지스터(206)에서 다시 클로킹된다. 도 3a는 CPU 내의 전형적인 파이프라인 메모리 스테이지를 나타내고, 도 3b는 CPU 내의 전형적인 수퍼 파이프라인 메모리 스테이지를 나타낸다. 로직 스테이지는 결합 로직의 중간에 여분의 파이프라인 레지스터를 삽입함으로써 2배만큼 수퍼 파이프라인될 수 있으며, 따라서 클록 사이의 게이트 깊이를 2배 줄일 수 있다. 이로 인해 클록의 속도를 2배 가까이 증가시킬 수 있지만, 각각의 출력 값에 대해서는 한 클록 사이클 이상의 지연이 소요될 것이다. 클록의 속도 증가는 클록 스큐(skew), 셋업 시간 및 파이프라인 레지스터를 통과하는 지연 시간으로 인해 2x보다 약간 작다. CPU 내의 메모리 스테이지는 도 3b에 도시된 바와 같이 교번 사이클로 메모리의 두 카피(메모리 카피 1(344) 및 메모리 카피2 (346))를 사용하여 2x 수퍼 파이프라인될 수 있다. 도 3b는 짝수 사이클 클록 어드레스 레지스터(358), 홀수 사이클 클록 어드레스 레지스터(360), 홀수/짝수 메모리 출력 선택기(340) 및 레지스터(356)를 더 포함한다. 두 메모리 카피(344, 346)는 두 메모리 모두 동일한 데이터를 받을 필요가 있는 기록(write) 중에 가능하게는 스톨(stall) 사이클을 포함하는 특별한 동작을 삽입하는 것을 요구하는 동일한 컨텐츠를 가질 필요가 있다.
클록 스큐, 각 추가된 파이프라인 레지스터의 셋업 및 지연 시간으로 인해 보다 큰 수퍼 파이프라인은 덜 효율적이긴 하지만, 2배 이상의 수퍼 파이프라인도 가능하다. .12u CMOS 기술에 있어서, 2x 수퍼 파이프라이닝에 의해 약 1.8x의 클록 속도 증가가 얻어진다.
바이패스 루프는 양호하게 균형잡힌 VLIW CPU 구성에 대한 제한 인자이거나 또는 제한 인자에 가깝기 때문에, 바이패스 루프를 처리하지 않고 VLIW CPU를 수퍼 파이프라이닝하면 일반적으로 동작 주파수의 속도를 증가시킬 수 없다. 만약 바이패스 루프 그 자체가, 예를 들어 하나의 여분의 파이프라인 스테이지를 그 내부에 삽입시키는 것에 의해 수퍼 파이프라인되면, VLIW CPU가 1.8x 클록 속도에서 효율적으로 실행되지만, 모든 것이 2배 더 많은 클록이 걸리기 때문에 모든 계산을 위한 클록 사이클 내의 임계 경로가 2배로 되어, 결국 실질적인 속도 증가는 이루어지지 않는다. 시간 단위마다 더 많은 연산이 이루어지므로, 일부 속도 증가는 가능하지만, 계산 임계 경로에 의해 한정된 프로그램이 없다면, 즉 원래의 VLIW CPU 내의 기능 유닛이 줄어들지 않으면, 전체 속도의 이점은 얻어지지 않는다.
본 발명은 수퍼 파이프라인 VLIW CPU를 설계하는 새로운 방법 및 구성을 제공한다. VLIW CPU를 파이프라이닝하는 새로운 방법은 프로그램의 기준(benchmark) 세트를 분석하는 것에 기반하고 있다. 모든 동작 지연이 두 배로 되고(전체 구성을 수퍼 파이프라이닝하는데), 다음과 같은 동작의 서브세트(subset)가 선택된다.
· 이 서브세트의 임의의 동작들은 최소 로직 게이트 깊이로 수행될 수 있다.
· 이 서브세트의 동작을 수행할 때(한 사이클의 기본 루프로), 결국 클록 사이클의 수를 고려하면 원래의 기준 실행 시간이 되거나 적어도 이것에 가깝게 된다.
부가적인 이점 및 신규한 특징은 다음의 상세한 설명에 개시되어 있고, 이 상세한 설명은 부분적으로는 다음의 검토를 통해 당업자들에게 명확해질 것이며 본 발명의 실시를 통해 습득할 수도 있다.
본 발명은 첨부 도면을 참고로 하여 예를 통해 보다 상세히 설명한다.
도 1은 전형적인 종래 기술의 VLIW 프로세서의 예를 도시한 도면.
도 2a는 전형적인 종래 기술의 파이프라인 로직 스테이지를 도시한 도면.
도 2b는 전형적인 종래 기술의 수퍼 파이프라인 로직 스테이지를 도시한 도면.
도 3a는 전형적인 종래 기술의 파이프라인 메모리 스테이지를 도시한 도면.
도 3b는 전형적인 종래 기술의 수퍼 파이프라인 메모리 스테이지를 도시한 도면.
도 4는 새로운 수퍼 파이프라인 VLIW CPU를 도시한 도면.
도 5는 다른 새로운 수퍼 파이프라인 VLIW의 예시적인 구성을 도시한 도면.
도 4는 본 발명에 따른 새로운 수퍼 파이프라인 VLIW CPUU(400)의 예시적인 구성을 도시한 도면이다(CPU는 프로세서로 지칭될 수도 있다). 새로운 수퍼 파이프라인 VLIW CPU(400)는 레지스터 파일(414), 바이패스 네트워크(420), 고속 기능 유닛(FU) 클러스터(430) 및 표준 FU 클러스터(440)를 포함한다. 고속 FU 클러스터(430)는 단일 레지스터 지연만을 갖는 기본 루프 내에 선택된 동작 서브세트를 구현하는 적은 수의 기능 유닛(FU)을 포함한다. 임의의 다른 기능 유닛 또는 이것의 클러스터가 이 기본 코어 주위에 접속되지만(표준 FU 클러스터(440)는 VLIW CPU(400) 내에 도시되어 있다), 다수의 클록 사이클을 포함하는 기본 루프의 일부이다. 고속 FU 클러스터(430)는 고속 FU(460)의 세 개의 표면상의 동일한 카피 주위의 회로 및 배선을 나타낸다. 그러나, 실제 VLIW CPU 구성에서 고속 FU의 수는 변할 수도 있으며, 이들 주위의 배선 및 레지스터와 각각의 고속 FU(460)는 구성이 동일하거나 상이할 수도 있다. 바이패스 네트워크(420)로부터 고속 FU 클러스터(430)로 진행하는 데이터는 고속 선택기(403)(고속 멀티플렉서라고도 함), 레지스터(406a), 고속 FU(460)를 통과한다. 데이터는 고속 FU 입력부(422)에서 고속 FU(460)에 들어가고 고속 FU 출력부(424)에서 나온다. 이 때 데이터는 고속 선택기(403) 및 레지스터(406b)로 진행하며, 레지스터(406b)의 출력은 표준 FU 클러스 터(440)로 라우팅된다. 바이패스 네트워크(420)로부터 표준 FU 클러스터(440)로 진행하는 데이터는 레지스터(406c), 표준 선택기(405)(표준 멀티플렉서라고도 함), 표준 FU(470)를 통과한다. 데이터는 표준 FU 입력부(426)에서 표준 FU(470)에 들어가고, 표준 FU 스테이지1(411) 레지스터(406d) 및 표준 FU 스테이지2(412)를 통과하여, 고속 FU 표준(428)에서 FU(470)를 나온다. 이 때 데이터는 레지스터(406e)로 진행하며, 레지스터(406e)의 출력은 바이패스 네트워크(420)로 라우팅된다.
도 4의 고속 FU 클러스터(430) 내의 기본 루프 신호 경로는 고속 FU(460)와, 각각의 고속 FU(460)의 각 입력부 앞에 4 입력 고속 멀티플렉서(403)(고속 선택기라고도 함) 및 지연 레지스터(406a)를 포함한다. 이 기본 루프는 비교적 짧은 배선만 가지며, 그 신호 경로는 단지 작은 팬아웃(fan-out)을 가지기 때문에 기본 루프를 고속으로 실행시킬 수 있다. 통상, 표준 FU 스테이지1(411) 내의 조합 로직은 깊지 않거나 또는 비어 있을 수 있다. 레지스터(406b)(고속 FU(460)에 접속된)로부터 표준 선택기(405)로의 실질적인 배선 길이로 인한 지연은 표준 FU 스테이지(411)의 조합 로직으로 인한 허용가능한 지연이 더욱 제한되도록 한다. 고속 FU의 클러스터(또는 표준 FU의 클러스터) 내의 배선은 통상적으로 비교적 짧다. 그러나, 고속 FU의 클러스터와 표준 FU의 클러스터 사이의 배선은 통상적으로 비교적 길다. 또한 고속 FU의 클러스터와 표준 FU의 클러스터 사이의 배선은 통상적으로 보다 높은 팬아웃을 갖는다(도 4에는 두 개의 표준 FU만 도시하였고, 표준 FU의 수는 예를 들어 20개로 상당히 클 수 있다). 비교적 긴 배선 및 높은 팬아웃으로 인 해, 이들 배선 상의 신호 지연은 통상적으로 비교적 높을 것이다. 따라서, FU의 고속 클러스터 내의 바이패스 루프 지연은 통상적으로 고속 클러스터로부터 바이패스를 통한 표준 FU로의 지연보다 훨씬 더 작을 것이다.
기술적 변수에 따라서 다른 변형예도 가능하다. 0.12u CMOS 기술에서 기본 루프 구현을 위한 최선의 실시예가 도 4에 도시되어 있다. 도 5는 새로운 수퍼 파이프라인 VLIW CPU의 본 발명의 다른 실시예를 도시한 것으로, 여기서 고속 선택기(403)는 레지스터(406) 뒤에 위치한다. 도 5는 다른 특성을 갖는 기술을 나타낼 수도 있는데, 여기서 레지스터(406a) 뒤에 고속 선택기(403)(도면에는 4:1 선택기로 도시되어 있음)를 갖는 것이 더 바람직하다. 또한 고속 코어 내의 세 개의 고속 기능 유닛보다 더 많거나 적은 것도 가능하다(기능 유닛은 ALU라고도 하며, 그 출력부에서 클로킹된 레지스터를 포함할 수도 있다). 통상 표준 기능 유닛의 수는 고속 기능 유닛의 수보다 훨씬 더 많다.
최선의 실시예를 이하에 설명한다. 이것은 새로운 수퍼 파이프라이닝 방법을 필립스 PNX1300)의 기능 유닛 구성과 동작 세트를 갖는 5-이슈(issue) VLIW 프로세스에 적용시키는 것으로 설명한다(5-이슈(issue) VLIW 프로세스 및 그 동작의 상세한 설명은 참조로서 본원 명세서에 포함된 필립스 반도체의 'TriMedia TM-1300 media processor data-book'를 참조하라).
종래 기술의 VLIW CPU(PNX1300):
Figure 112005014022244-pct00001
종래 기술의 VLIW 프로세서에서, 다음의 연산이 1 사이클 길이의 바이패스 루프 내에 있다.
CONST: imm, uimm
ALU: iadd isub igtr igeq ieql ineq ileqi igtri igeqi ilesi ieqli ineqi ugtr ugeq uleqi ugtri ugeqi ulesi ueqli uneqi bitand bitor bitxor bitandinv bitinv h_iabs sex 16 iaddi isubi carry izero inonzero packbytes mergemsb mergelsb packl6msb packl6lsb ubytesel ibytesel
SHIFTER: asli roli asri lsri asl rol asr lsr dualasr mergedual16lsb funshiftl funshift2 funshift3
본 발명에서, 다음의 연산의 서브세트, 즉, imm, uimm, iadd, isub, iaddi, isubi, bitor, bitand, bitxor, bitandinv, bitinv가 논리 회로의 단순화 및 성능 분석에 기초하여 선택되었다. 예를 들어 비교적 간단한 연산 및 빈번히 사용되는 연산은 통상 덧셈, 뺄셈 및 간단한 비트 연산 등과 같은 일반적으로 사용된 연산과 같은 서브세트 내에 포함된다.
본 발명의 수퍼 파이프라인 VLIW는 1 사이클 바이패스 루프와 함께 고속 유닛 코어를 포함한다. 테스트된 바람직한 실시예에서, 이것은 선택된 연산 서브세트만 실시하는 ALU1 기능 유닛의 세 개의 카피를 포함한다(도 4에 도시된 것과 유사함). 다른 ALU 연산은 바이패스 루프에 대해 2 사이클을 취하는(2x 수퍼 파이프라인) 새로운 ALU 기능 유닛의 세 개의 카피 상에서 실행된다. 도 4에는, 바이패스 루프에 대해 2 사이클을 취하는 두 개의 ALU 기능 유닛이 도시되어 있다. 마찬가지로, 모든 다른 유닛은 원래 지연(latency)의 (거의) 2배의 지연을 갖는다. 예를 들면, 비교적 복잡한 연산 및 덜 빈번하게 사용되는 연산이 통상 곱셈, 나눗셈 및 복잡한 수학 연산 등과 같은 연산과 같은 서브세트에 포함된다.
Figure 112005014022244-pct00002
종래 기술의 PNX1300 대 본 발명의 수퍼 파이프라인 VLIW CPU의 실행 시간 성능 데이터는 다음과 같다(실행 시간을 사이클로 표현).
Figure 112005014022244-pct00003
종래 기술의 PNX1300 대 본 발명의 1.8 배 클로킹된 수퍼 파이프라인 VLIW CPU의 실행 시간 성능 데이터는 다음과 같다(실행 시간을 mSec로 표현).
Figure 112005014022244-pct00004
실제로, 수퍼 파이프라인 VLIW CPU의 새로운 구성 및 방법은 동일한 기술 및 설계 방법에 대해 본 발명에서는 1.8x의 클록 속도 증가를 이루었고 애플리케이션에서는 1.73x까지의 속도 증가를 이루었다. 본 발명은 보다 최적화가 이루어질 때 및/또는 애플리케이션이 재컴파일된 후 등에 보다 높은 효율적인 속도 증가를 달성한다.
전술한 사항은 단순히 본 발명의 원리를 나타낸다. 따라서 당업자들은, 비록 본 명세서에 명시적으로 기재되어 있지 않다 하더라도 본 발명의 사상 및 범주 내에서 본 발명의 원리를 구현하는 다양한 장치를 고안할 수 있다는 것을 알 수 있을 것이다. 예를 들면, 명세서에 구체적으로 언급되어 있지는 않지만, 한 요소로부터 다른 요소로의 접속이 레지스터를 포함할 수도 있고 포함하지 않을 수도 있다. 또한, 도 4 및 5에 도시된 바와 같은 기능 유닛이 모두 상이한 복잡도를 가질 수도 있고, 표준 기능 유닛뿐만 아니라 고속 기능 유닛도 변할 수도 있다. 이들 및 다른 시스템의 구성 및 최적화 특성은 이상의 기재로부터 당업자에게 명백할 것이며, 첨부한 청구범위 내에 포함된다.

Claims (20)

  1. VLIW 프로세서(400)로서,
    고속 기능 유닛(FU; functional unit) 클러스터(430)와,
    표준 FU 클러스터(440)와,
    레지스터 파일 출력부를 포함하는 레지스터 파일(414)과,
    상기 레지스터 파일 출력부에 접속된 제 1 크로스바 입력부, 고속 FU 클러스터 출력부에 접속된 제 2 크로스바 입력부, 표준 FU 클러스터 출력부에 접속된 제 3 크로스바 입력부, 제 1 고속 멀티플렉서 입력부에 접속된 제 1 크로스바 출력부 및 제 1 표준 멀티플렉서 입력부에 접속된 제 2 크로스바 출력부를 구비한 크로스바 스위치(420)를 포함하되,
    상기 고속 FU 클러스터는
    고속 FU 클러스터 입력부 및 상기 고속 FU 클러스터 출력부와,
    고속 FU 입력부 및 고속 FU 출력부를 포함하는 고속 FU와,
    상기 제 1 고속 멀티플렉서 입력부, 상기 고속 FU 출력부에 접속된 제 2 고속 멀티플렉서 입력부, 고속 스테이지 FU 입력부에 접속된 고속 멀티플렉서 출력부를 구비한 고속 멀티플렉서를 포함하고,
    상기 표준 FU 클러스터는
    표준 FU 클러스터 입력부 및 상기 표준 FU 클러스터 출력부와,
    표준 FU 입력부 및 표준 FU 출력부를 포함하는 표준 FU와,
    상기 제 2 크로스바 출력부에 접속된 상기 제 1 표준 멀티플렉서 입력부, 상기 고속 FU 출력부에 접속된 제 2 표준 멀티플렉서 입력부 및 상기 표준 FU 입력부에 접속된 표준 멀티플렉서 출력부를 구비한 표준 멀티플렉서를 포함하며,
    상기 고속 FU 출력부와 상기 고속 FU 입력부 사이의 제 1 신호 경로는 단일 레지스터를 포함하고,
    상기 표준 FU 출력부와 상기 표준 FU 입력부 사이의 제 2 신호 경로는 두 개의 래치 레지스터를 포함하며,
    상기 고속 FU 출력부와 상기 표준 FU 입력부 사이의 제 3 경로는 단일 래치 레지스터를 포함하는
    VLIW 프로세서.
  2. 제 1 항에 있어서,
    n-이슈(n-issue) 슬롯 VLIW 프로세서를 포함하되, n은 1보다 큰
    VLIW 프로세서.
  3. 제 2 항에 있어서,
    적어도 하나의 고속 FU의 개수와 적어도 하나의 표준 FU의 개수의 합이 n 이상인
    VLIW 프로세서.
  4. 제 1 항에 있어서,
    상기 고속 FU는 비교적 간단한 연산과 빈번하게 사용되는 연산 중 하나를 포함하는
    VLIW 프로세서.
  5. 제 4 항에 있어서,
    상기 간단한 연산은 덧셈과 뺄셈 중 하나를 포함하는
    VLIW 프로세서.
  6. 제 4 항에 있어서,
    상기 간단한 연산은 로드(load) 및 저장(store) 중 하나를 포함하는
    VLIW 프로세서.
  7. 제 1 항에 있어서,
    상기 표준 FU는 비교적 복잡한 연산과 덜 빈번하게 사용되는 연산 중 하나를 포함하는
    VLIW 프로세서.
  8. 제 7 항에 있어서,
    상기 복잡한 연산은 곱셈 및 나눗셈 중 하나를 포함하는
    VLIW 프로세서.
  9. 제 1 항에 있어서,
    임의의 표준 FU는 임의의 고속 FU보다 적어도 하나의 래치 스테이지를 더 포함하는
    VLIW 프로세서.
  10. 제 1 항에 있어서,
    고속 바이패스 루프 지연(a fast bypass-loop delay)이 상기 고속 FU와 상기 표준 FU 사이의 어떠한 바이패스 루프 지연보다도 실질적으로 더 작은
    VLIW 프로세서.
  11. VLIW 프로세서(400)로서,
    고속 기능 유닛(FU)(460)과,
    고속 FU 클러스터(430)와,
    표준 FU 클러스터(440)와,
    레지스터 파일 출력부를 포함하는 레지스터 파일(414)과,
    상기 레지스터 파일 출력부에 접속된 제 1 크로스바 입력부, 고속 FU 클러스터 출력부에 접속된 제 2 크로스바 입력부, 표준 FU 클러스터 출력부에 접속된 제 3 크로스바 입력부, 제 1 고속 멀티플렉서 입력부에 접속된 제 1 크로스바 출력부 및 제 1 표준 멀티플렉서 입력부에 접속된 제 2 크로스바 출력부를 구비한 크로스바 스위치(420)를 포함하되,
    상기 고속 FU 클러스터는
    고속 FU 클러스터 입력부 및 상기 고속 FU 클러스터 출력부와,
    고속 FU 입력부 및 고속 FU 출력부를 포함하는 고속 FU와,
    상기 제 1 고속 멀티플렉서 입력부, 상기 고속 FU 출력부에 접속된 제 2 고속 멀티플렉서 입력부, 고속 스테이지 FU 입력부에 접속된 고속 멀티플렉서 출력부를 구비한 고속 멀티플렉서를 포함하고,
    상기 표준 FU 클러스터는
    표준 FU 클러스터 입력부 및 상기 표준 FU 클러스터 출력부와,
    표준 FU 입력부 및 표준 FU 출력부를 포함하는 표준 FU와,
    상기 제 2 크로스바 출력부에 접속된 상기 제 1 표준 멀티플렉서 입력부, 상기 고속 FU 출력부에 접속된 제 2 표준 멀티플렉서 입력부 및 상기 표준 FU 입력부에 접속된 표준 멀티플렉서 출력부를 구비한 표준 멀티플렉서를 포함하며,
    상기 고속 FU 출력부와 상기 고속 FU 입력부 사이의 제 1 신호 경로는 단일 래치 레지스터를 포함하고,
    상기 표준 FU 출력부와 상기 표준 FU 입력부 사이의 제 2 신호 경로는 두 개의 래치 레지스터를 포함하며,
    상기 고속 FU 출력부와 상기 표준 FU 입력부 사이의 제 3 신호 경로는 단일 래치 레지스터를 포함하는
    VLIW 프로세서.
  12. 제 11 항에 있어서,
    n-이슈(n-issue) 슬롯 VLIW 프로세서를 포함하되, n은 1보다 큰
    VLIW 프로세서.
  13. 제 12 항에 있어서,
    적어도 하나의 고속 FU의 개수와 적어도 하나의 표준 FU의 개수의 합이 n 이상인
    VLIW 프로세서.
  14. 제 11 항에 있어서,
    상기 고속 FU는 비교적 간단한 연산과 빈번하게 사용되는 연산 중 하나를 포함하는
    VLIW 프로세서.
  15. 제 14 항에 있어서,
    상기 간단한 연산은 덧셈과 뺄셈 중 하나를 포함하는
    VLIW 프로세서.
  16. 제 14 항에 있어서,
    상기 간단한 연산은 로드(load) 및 저장(store) 중 하나를 포함하는
    VLIW 프로세서.
  17. 제 11 항에 있어서,
    상기 표준 FU는 비교적 복잡한 연산과 덜 빈번하게 사용되는 연산 중 하나를 포함하는
    VLIW 프로세서.
  18. 제 17 항에 있어서,
    상기 복잡한 연산은 곱셈 및 나눗셈 중 하나를 포함하는
    VLIW 프로세서.
  19. 제 11 항에 있어서,
    임의의 표준 FU는 임의의 고속 FU보다 적어도 하나의 래치 스테이지를 더 포함하는
    VLIW 프로세서.
  20. 제 11 항에 있어서,
    고속 바이패스 루프 지연이 어떠한 표준 바이패스 루프 지연보다 실질적으로 더 작은
    VLIW 프로세서.
KR1020057004579A 2002-09-17 2003-09-17 Vliw 프로세서 KR100962932B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US41158902P 2002-09-17 2002-09-17
US60/411,589 2002-09-17
US46893103P 2003-05-07 2003-05-07
US60/468,931 2003-05-07

Publications (2)

Publication Number Publication Date
KR20050057397A KR20050057397A (ko) 2005-06-16
KR100962932B1 true KR100962932B1 (ko) 2010-06-10

Family

ID=32033554

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057004579A KR100962932B1 (ko) 2002-09-17 2003-09-17 Vliw 프로세서

Country Status (8)

Country Link
EP (1) EP1546868B1 (ko)
JP (1) JP4230461B2 (ko)
KR (1) KR100962932B1 (ko)
CN (1) CN100337193C (ko)
AT (1) ATE414946T1 (ko)
AU (1) AU2003299004A1 (ko)
DE (1) DE60324818D1 (ko)
WO (1) WO2004027602A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101553780A (zh) * 2006-12-11 2009-10-07 Nxp股份有限公司 Vliw处理器的虚拟功能单元
KR102177871B1 (ko) * 2013-12-20 2020-11-12 삼성전자주식회사 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
CN103955353B (zh) * 2014-05-05 2017-01-18 中国人民解放军国防科学技术大学 具有面向全分布式超长指令字的高能效局部互连结构的装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020026545A1 (en) * 2000-08-28 2002-02-28 Mitsubishi Denki Kabushiki Kaisha Data processing apparatus of high speed process using memory of low speed and low power consumption

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128721A (en) * 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020026545A1 (en) * 2000-08-28 2002-02-28 Mitsubishi Denki Kabushiki Kaisha Data processing apparatus of high speed process using memory of low speed and low power consumption

Also Published As

Publication number Publication date
AU2003299004A1 (en) 2004-04-08
EP1546868B1 (en) 2008-11-19
JP2005539333A (ja) 2005-12-22
KR20050057397A (ko) 2005-06-16
CN100337193C (zh) 2007-09-12
DE60324818D1 (de) 2009-01-02
ATE414946T1 (de) 2008-12-15
WO2004027602A1 (en) 2004-04-01
CN1682182A (zh) 2005-10-12
JP4230461B2 (ja) 2009-02-25
EP1546868A1 (en) 2005-06-29

Similar Documents

Publication Publication Date Title
US11900124B2 (en) Memory-network processor with programmable optimizations
US10445098B2 (en) Processors and methods for privileged configuration in a spatial array
US10445234B2 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US20190101952A1 (en) Processors and methods for configurable clock gating in a spatial array
US5815715A (en) Method for designing a product having hardware and software components and product therefor
US20190004955A1 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
WO2020005448A1 (en) Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
EP3776228A1 (en) Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator
US9329866B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
CN111767080A (zh) 用于可配置空间加速器中的操作的设备、方法和系统
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
CN112148647A (zh) 用于存储器接口电路仲裁的装置、方法和系统
Repetti et al. Pipelining a triggered processing element
Uhrig et al. A two-dimensional superscalar processor architecture
Saghir et al. Datapath and ISA customization for soft VLIW processors
KR100962932B1 (ko) Vliw 프로세서
US10127048B2 (en) Architecture for long latency operations in emulated shared memory architectures
Lines The Vortex: A superscalar asynchronous processor
Forsell et al. REPLICA MBTAC: multithreaded dual-mode processor
Stavrou et al. Chip multiprocessor based on data-driven multithreading model
Chouliaras et al. VThreads: A novel VLIW chip multiprocessor with hardware-assisted PThreads
Sica Design of an edge-oriented vector accelerator based on RISC-V" V" extension
Schaffer et al. A prototype multithreaded associative SIMD processor

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee