KR100991700B1 - 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체 - Google Patents

처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체 Download PDF

Info

Publication number
KR100991700B1
KR100991700B1 KR1020057002496A KR20057002496A KR100991700B1 KR 100991700 B1 KR100991700 B1 KR 100991700B1 KR 1020057002496 A KR1020057002496 A KR 1020057002496A KR 20057002496 A KR20057002496 A KR 20057002496A KR 100991700 B1 KR100991700 B1 KR 100991700B1
Authority
KR
South Korea
Prior art keywords
instruction
control word
vliw
instructions
width
Prior art date
Application number
KR1020057002496A
Other languages
English (en)
Other versions
KR20050037575A (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 KR20050037575A publication Critical patent/KR20050037575A/ko
Application granted granted Critical
Publication of KR100991700B1 publication Critical patent/KR100991700B1/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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

컴퓨터 아키택쳐는 제어 워드 세트에 의해 제어되는 고정된 데이터 경로로 구성된다. 각 제어 워드는 데이터 경로의 일부를 제어한다. 각 명령 세트는 새로운 제어 워드 세트를 생성한다. VLIW 프로세서의 경우, 다수의 명령은 하나의 소위 VLIW 명령으로 패킷화된다. VLIW 프로세서는 이들 다수의 명령을 병렬로 수행하기 위해 다수의 독립적인 기능 유닛을 사용한다. VLIW 프로세서의 응용 특정 영역 튜닝은, 필요로 하는 명령 비트 수에 관해 가변 요건을 갖는 명령이 명령의 효율적인 인코딩이 유지되도록 단일 VLIW 명령으로 인코딩될 수 있어야 하는 것을 요구한다. 본 발명은 이러한 비대칭 명령 세트를 사용하게 하는 처리 데이터의 처리 방법 및 처리 장치를 기술한다. 처리 장치는 적어도 제 1(UC0) 및 제 2 발급 슬롯(UC3)을 포함하며, 각 발급 슬롯은 복수의 기능 유닛(FU01-FU02, FU30-FU32)을 포함한다. 제 1 발급 슬롯(UCO)은 제 1 명령(InstrA)으로부터 생성되는 제 1 제어 워드(411)에 의해 제어되고 있으며, 제 2 발급 슬롯은 제 2 명령(InstrD)으로부터 생성되는 제 2 제어 워드(417)에 의해 제어되고 있으며, 제 1 제어 워드(411)의 폭은 제 2 제어 워드(417)의 폭과는 다르다. 대응하는 제어 워드의 폭을 변경시킴으로써, 서로 다른 비트 수를 필요로 하는 명령은 효율적인 명령 디코딩을 또한 허용하면서도 VLIW 명령으로 효율적으로 인코딩될 수 있다.

Description

처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체 {PROCESSING APPARATUS, PROCESSING METHOD, COMPILER PROGRAM PRODUCT, COMPUTER PROGRAM AND INFORMATION CARRIER}
본 발명은 처리 장치로서:
데이터를 입력하기 위한 입력 수단과;
상기 입력 데이터를 저장하기 위한 레지스터 파일과;
복수의 기능 유닛을 각각 포함하는 적어도 제 1 및 제 2 발급 슬롯을 포함하고, 여기서, 상기 처리 장치는 병렬로 수행되고 있는 명령 세트로부터 생성된 제어 신호를 기초로 해서 상기 레지스터 파일로부터 검색된 데이터를 처리하기 위한 것이고, 상기 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고, 상기 제 1 발급 슬롯은 상기 제 1 명령에 대응하는 제 1 제어 워드에 의해 제어되며, 및 상기 제 2 발급 슬롯은 상기 제 2 명령에 대응하는 제 2 제어 워드에 의해 제어되는, 처리 장치에 관한 것이다.
또한, 본 발명은 데이터를 처리하기 위한 처리 방법에 관한 것으로, 상기 방법은,
입력 데이터를 레지스터 파일에 저장하는 단계와;
병렬로 수행되는 명령 세트로부터 생성된 제어 신호를 기초로 해서 상기 레 지스터 파일로부터 검색된 데이터를 처리하는 단계로서, 상기 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고, 제 1 발급 슬롯은 상기 제 1 명령에 대응하는 제 1 제어 워드에 의해 제어되고, 제 2 발급 슬롯은 상기 제 2 명령에 대응하는 제 2 제어 워드에 의해 제어되며, 상기 제 1 및 제 2 발급 슬롯은 복수의 기능 유닛을 포함하는, 처리 단계를 포함한다.
또한, 본 발명은 명령 세트 시퀀스를 생성하기 위한 컴파일러 프로그램 제품에 관한 것으로, 하나의 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고 병렬 수행을 위해 배치된다.
또한, 본 발명은 명령 세트 시퀀스를 포함하는 정보 캐리어에 관한 것으로, 하나의 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고 병렬 수행을 위해 배치된다.
또한, 본 발명은 상기 방법의 단계들을 실행할 것을 컴퓨터 시스템에게 지시하기 위한 컴퓨터 프로그램 코드 수단을 포함하는 컴퓨터 프로그램에 관한 것이다.
컴퓨터 아키택쳐는 제어 워드 세트에 의해 제어되는 고정된 데이터 경로로 구성된다. 각 제어 워드는 데이터 경로의 부분들을 제어하며, 이들 부분들은 산술논리유닛(ALU)나 다른 기능 유닛용의 레지스터 어드레스 및 동작 코드를 포함한다. 각 명령 세트는 보통 이 명령의 2진 포맷을 대응하는 제어 워드로 변환하는 명령 디코더에 의해, 또는 미세 저장소, 즉 제어 워드를 직접 포함하는 메모리에 의해 제어 워드의 새로운 세트를 생성한다. 전형적으로, 제어 워드는 연산 코드, 두 개 의 피연산자 레지스터 인덱스, 및 결과 레지스터 인덱스를 포함하는 RISC 형 연산을 나타낸다. 피연산자 레지스터 인덱스 및 결과 레지스터 인덱스는 레지스터 파일에서 레지스터를 지칭한다.
매우 큰 명령 워드(VLIW: Very Large Instruction Word) 프로세서의 경우, 다수의 명령은 하나의 긴 명령, 즉 소위 VLIW 명령으로 패킷화된다. VLIW 프로세서는 이들 다수의 명령을 병렬로 수행하기 위해 다수의 독립적인 기능 유닛을 사용한다. 프로세서는 프로그램에서의 명령-레벨 병렬화의 사용을 허용하고, 그에 따라 한번에 하나 이상의 명령을 수행하게 한다. 소프트웨어 프로그램이 VLIW 프로세서 상에서 실행되기 위해, 이것은 VLIW 명령 세트로 변환되어야 한다. 컴파일러는 최적 병렬화에 의해 프로그램을 실행하는데 필요한 시간을 최소화하고자 한다. 컴파일러는, 하나의 VLIW 명령에 할당된 명령들은 병렬로 실행될 수 있다는 제약 및 데이터 의존성 제약 아래에서 명령을 VLIW 명령으로 결합한다. 명령의 인코딩은 데이터 고정(stationary) VLIW 프로세서나 시간 고정 VLIW 프로세서 각각에 대해 두 개의 서로 다른 방식으로 실행될 수 있다. 데이터 고정 VLIW 프로세서의 경우, 주어진 데이터 아이템 상에서 실행될 연산의 주어진 파이프라인에 관계된 모든 정보는 단일 VLIW 명령으로 인코딩된다. 시간 고정 VLIW 프로세서에 대해, 주어진 데이터 아이템 상에서 실행될 연산의 파이프라인에 관계된 정보는 서로 다른 VLIW 명령에서 다수의 명령에 걸쳐서 확산되며, 프로그램에서 프로세서의 상기 파이프라인을 노출시키게 한다.
실제 애플리케이션에서, 기능 유닛이 모두 함께 활성화되는 것은 매우드믈 것이다. 그러므로, 어떤 VLIW 프로세서에서, 모든 기능 유닛에 함께 필요한 것보다는 각 VLIW 명령에서 더 작은 수의 명령이 제공된다. 각 명령은 예컨대 멀티플렉서를 사용함으로써 활성화되어야 하는 선택된 기능 유닛에 보내진다. 이렇게 성능을 거의 손상시키지 않으면서 명령 메모리 크기를 절약하는 것이 가능하다. 이 아키택쳐에서, 명령은 서로 다른 클록 사이클에서 서로 다른 기능 유닛에 보내진다. 대응하는 제어 워드는 VLIW 발급 레지스터의 각 발급 슬롯으로 발급된다. 각 발급 슬롯은 기능 유닛 그룹과 관련된다. 특정한 제어 워드는 특정한 발급 슬롯과 관련된 그룹 내의 기능 유닛 중 특정한 하나에 보내진다.
VLIW 명령에서의 병렬 명령 인코딩은 코드 크기를 상당히 크게 한다. 큰 코드 크기는 필요한 메모리 크기와 필요한 메모리 대역폭 측면에서 프로그램 메모리 비용을 증가시킨다. 최신 VLIW 프로세서에서, 코드 크기를 감소시키기 위한 서로 다른 수단이 취해진다. 하나의 중요한 예는 데이터 고정 VLIW 프로세서에서 NOP(No Operation) 연산의 간략한 표현이며, 예컨대, NOP 연산은 VLIW 명령의 전면에 부착된 특수한 헤더에서 하나의 비트에 의해 인코딩될 수 있어서, 결국 압축된 VLIW 명령을 초래한다. 명령 비트는 또한 VLIW 명령의 각 명령에서 소모될 수 있으며, 이는 몇몇 명령은 다른 명령들보다 더 간소하게 인코딩될 수 있기 때문이다. 예컨대 몇몇 대응하는 연산이 다른 연산자보다 더 많은 피연산자를 필요로 하거나 더 많은 결과를 생성하기 때문에, 또는 어떤 즉각적인 피연산자도 필요치 않거나 적은 즉각적인 피연산자를 필요로 하는 다른 연산에 비해 특정한 연산은 매우 큰 즉각적인 피연산자를 필요로 하게 될 경우에, 명령의 인코딩 효율간에 차이가 발생한다. 이 들 차이는 특히 VLIW 프로세서의 애플리케이션 영역 특정 튜닝이 그 효율을 증가시키고자할 때 발생한다.
강력한 맞춤(custom) 연산은 두 피연산자보다 더 많이 소모할 수 있고 및/또는 하나의 결과보다 더 많은 결과를 생성할 수 있는 명령 세트에서의 연산을 허용함으로써 달성될 수 있다. 튜닝되고, 또한 융통성이 있는 프로세서에서, 이들 복잡한 연산은 보통 단지 두 개의 피연산자를 보통 소비하여 단지 하나의 결과를 생성하는 기본 연산과 보통 공존한다. 좀더 복잡하게 될 디코딩 하드웨어로 인해 성능, 전력 및 면적에 대해 큰 부정적인 영향을 끼치지 않고도 간소한 코드 크기를 얻을 수 있게 하는 효율적인 명령 인코딩을 발견해야 한다. EP 1.113.356은 고정된 제어 워드 폭을 구비한 VLIW 프로세서를 기술하며, 모든 명령은 동일한 수의 비트를 사용하여 인코딩된다. 프로세서는 복수의 실행 유닛 및 레지스터 파일을 포함한다. 디코딩된 명령은 실행 유닛에 제공되고, 데이터는 레지스터 파일 내외로 제공된다.
필요로 하는 명령 비트 수에 대해 가변적인 요건을 갖는 명령이 하나의 VLIW 명령으로 효율적으로 인코딩될 수 없는 것이 종래기술의 프로세서의 단점이다.
본 발명의 목적은 명령의 효율적인 인코딩 및 디코딩을 유지하면서 기본 연산 뿐만 아니라 강력한 맞춤 연산을 포함하는 명령 세트를 사용하게 하는 처리 장치를 제공하는 것이다.
이러한 목적은 제 1 제어 워드의 폭이 제 2 제어 워드의 폭과는 다른 것을 특징으로 하는 전술된 종류의 처리 장치를 통해 달성된다. 본 발명에 따른 처리 장치에서, 제어 워드의 폭, 즉 비트 수는 대응하는 발급 슬롯에 존재하는 복수의 기능 유닛의 복잡도에 적응된다. 예컨대 둘 이상의 피연산자를 필요로 하거나 및/또는 하나 이상의 결과를 생성하는 기능 유닛과 같은 상대적으로 복잡한 기능 유닛을 갖는 이들 발급 슬롯은 동시에 상대적으로 간단한 기능 유닛을 갖는 발급 슬롯이 상대적으로 작은 크기의 제어 워드에 의해 제어되면서 상대적으로 넓은 제어 워드에 의해 제어된다. 이렇게, VLIW 명령의 전체 크기가 상대적으로 간소한(modest) 크기를 가질 수 있으면서 한편 강력한 맞춤 연산이 기본 연산과 함께 허용된다. 효율적인 디코딩은 디코딩 방법을 제어 워드의 폭에 적응시킴으로써 허용되며, 이것은 덜 복잡한 디코딩 하드웨어로 인해 처리 장치의 성능을 증가시킨다. 더나아가, 상대적으로 간단한 기능 유닛을 포함하는 발급 슬롯뿐만 아니라 더 복잡한 기능 유닛을 포함하는 발급 슬롯 둘 모두를 갖는 처리 장치가 설계될 수 있다. 이러한 아키택쳐는 처리 장치의 설계를 주어진 범위의 애플리케이션의 특정한 요건에 적응시키게 한다.
본 발명에 따른 처리 장치의 실시예는 상기 처리 장치가 VLIW 프로세서인 것을 특징으로 하고, 여기서, 상기 명령 세트는 VLIW 명령으로 그룹화된다. VLIW 프로세서는 상대적으로 간단한 하드웨어를 가지면서 다수의 명령을 병렬로 실행하게 하며, 전체 연산 속도를 증가시킨다.
본 발명에 따른 처리 장치의 실시예는 NOP 연산의 인코딩용의 전용 비트를 포함하는 VLIW 명령이 압축된 VLIW 명령인 것을 특징으로 한다. NOP 연산의 인코딩 용의 전용 비트를 사용하면, VLIW 명령의 코드 크기를 상당히 감소시키며, 필요한 메모리 크기 및 대역폭을 감소시킨다.
본 발명에 따른 처리 장치의 실시예는 압축된 VLIW 명령을 압축해제시키기 위한 압축해제 수단을 더 포함하고, 압축해제 수단은 전용 비트를 사용하여 제어 워드 폭에 관한 정보를 유도하기 위한 것이다. 전용 비트는 VLIW 명령과 관련된 어떤 제어 워드가 비-NOP 연산을 포함함을 지시하여, 장치가 VLIW 명령을 효율적으로 압축해제하게 하는데 사용된다.
본 발명에 따른 처리 장치의 실시예는 제 1 및 제 2 제어 워드의 폭이 미리 결정된 값의 정수배인 것을 특징으로 한다. 그 결과, 압축해제 로직은 덜 복잡하게 만들어질 수 있고, 압축해제 방법은 더 빠르게 될 수 있다.
본 발명에 따라서, 처리 방법은 제 1 제어 워드의 폭이 제 2 제어 워드의 폭과는 서로 다른 것을 특징으로 한다. 이 방법은, 효율적인 디코딩 방법을 유지하면서 필요로 하는 명령 비트 수에 대해 매우 가변적인 요건을 갖는 명령을 효율적으로 인코딩할 수 있게 한다.
본 발명의 바람직한 실시예는 종속항에 한정되어 있다. 데이터 처리에 대한 본 발명에 따른 처리 장치에 의해 실행하는데 적절한 명령 세트 시퀀스를 생성하기 위한 컴파일러 프로그램 제품은 청구항 12에 한정되어있다. TriMedia 프로세서용의 컴파일러가 알려져 있고, 이러한 컴파일러는 명령 세트 시퀀스를 생성하며, 여기서 명령 세트가 서로 다른 폭을 갖는 두 개의 명령을 포함함을 주목해야 한다. 그러나, 이들 명령에 대응하는 제어 워드는 동일한 폭을 갖는다. 데이터 처리에 대한 본 발명에 따른 방법을 구현하기 위한 컴퓨터 프로그램은 청구항 13에 한정되어있다. 데이터를 처리하기 위한 본 발명에 따른 처리 장치에 의해 실행되는 명령 세트 시퀀스를 포함하는 정보 캐리어가 청구항 14에 한정되어 있다.
도 1은 본 발명에 따른 VLIW 프로세서의 개략도.
도 2는 상대적으로 간단한 기능 유닛 세트를 포함하는 발급 슬롯(UCO)의 개략도.
도 3은 더 복잡한 기능 유닛 세트를 포함하는 발급 슬롯(UC3)의 개략도.
도 4는 압축된 VLIW 명령 및 대응하는 압축되지 않은 VLIW 명령을 도시한 도면.
도 1을 참조하면, 개략적인 블록도는 발급 슬롯(UCO, UC1, UC2, UC3, 및 UC4)을 포함하는 복수의 발급 슬롯과, 레지스터 파일 세그먼트(RF0 및 RF1)를 포함하는 레지스터 파일을 포함하는 VLIW 프로세서를 예시한다. 프로세서는 레지스터 파일 세그먼트(RF0 및 RF1)와 발급 슬롯(UC0, UC1, UC2, UC3, 및 UC4)을 결합하기 위한 연결 네트워크(CN) 및 제어기(SQ)를 갖는다. 레지스터 파일 세그먼트(RF0 및 RF1)는 도 1에 도시되어 있지 않지만 버스에 결합되며, 이 버스를 통해 레지스터 파일 세그먼트가 입력 데이터를 수신한다. 발급 슬롯(UC0, UC1, UC2, 및 UC4)은 단지 두 개의 피연산자를 필요로 하고 단 하나의 결과를 생성하는 상대적으로 간단한 기능 유닛의 작은 개수만을 구비한 발급 슬롯을 나타낸다. 발급 슬롯(UC3)은 둘 이상의 피연산자를 필요로 하고 및/또는 하나 이상의 결과를 생성하는 더 큰 수의 더 복잡한 기능 유닛을 포함한다. 이것은 또한 더 큰 연산 세트와 더 많은 즉각적인 값을 지원할 수 있거나, 더 큰 레지스터 어드레스 공간에 액세스할 수 있다. 그 결과, 더 많은 비트가 이러한 발급 슬롯에 대한 명령을 인코딩하기 위해 필요하고, 더 큰 대응하는 제어 워드를 필요로 한다. 연결 네트워크(CN)는 레지스터 파일 세그먼트(RF0 및 RF1)와 발급 슬롯(UC0, UC1, UC2, UC3, 및 UC4) 사이에 입력 데이터와 결과 데이터를 통과시킨다.
몇몇 실시예에서, 레지스터 파일 세그먼트(RF0 및 RF1)는 분산된 레지스터 파일이다, 즉 각각 제한된 세트의 발급 슬롯에 대한 것인 몇 개의 레지스터 파일이 모든 발급 슬롯(UC0 내지 UC4)에 대한 하나의 중앙 레지스터 파일 대신에 사용된다. 분산된 레지스터 파일의 장점은, 파일이 레지스터 파일 세그먼트 당 더 적은 판독 및 기록 포트를 필요로 하여, 결국 더 작은 레지스터 파일 면적을 초래하고, 전력 소비를 감소시키고 연산 속도를 증가시키는 것이다. 더나아가, 이것은 중앙 레지스터 파일에 비교할 때 프로세서의 스케일러빌러티(scalability)를 개선한다.
몇몇 실시예에서, 연결 네트워크(CN)는 부분적으로 연결된 네트워크이다, 즉 각 발급 슬롯(UC0 내지 UC4)이 각 레지스터 파일(RF0 및 RF1)에 연결되지 않는다. 부분적으로 연결된 통신 네트워크를 사용하면, 전력 소비뿐만 아니라 코드 크기를 감 소시키며, 또한 프로세서의 성능을 증가시킨다. 더나아가, 이것은 완전히 연결된 통신 네트워크에 비교할 때 프로세서의 스케일러빌러티를 개선시킨다.
도 2를 참조하면, 개략적인 블록도는 발급 슬롯(UC0)의 실시예를 예시한다. 도 3을 참조하면, 개략적인 블록도는 발급 슬롯(UC3)의 실시예를 도시한다. 이제 도 2 및 도 3 모두를 참조하면, 각 발급 슬롯은 디코더(DEC), 시간 형성 제어기(TSC), 및 입력 라우팅 네트워크(IRN), 출력 라우팅 네트워크(ORN), 및 각각 발급 슬롯(UC0)용의 복수의 기능 유닛(FU01 및 FU02) 및 발급 슬롯(UC3)용의 FU30, FU31, 및 FU32를 포함한다. 디코더(DEC)는 각 클록 사이클에서 발급 슬롯에 인가된 제어 워드(CW)를 디코딩한다. 디코딩 단계의 결과는 피연산자 레지스터 인덱스(ORI)이며, 인덱스는 레지스터 파일 세그먼트(RF0 및 RF1)에서의 레지스터를 지칭하며, 이 세그먼트에 실행될 연산용의 피연산자 데이터가 저장된다. 디코딩 단계의 추가적인 결과는 결과적인 파일 인덱스(RFI) 및 결과적인 레지스터 인덱스(RRI)이며, 이것은 레지스터 파일 세그먼트(RF0 및 RF1)에서 레지스터를 지칭하며, 세그먼트에서 결과적인 데이터가 저장되어야 한다. 디코더(DEC)는 인덱스(ORI, RFI 및 RRI)를 시간 형성 제어기(TSC)에 결합(I)을 통해 전달한다. 시간 형성 제어기(TSC)는 연산이 실행되는 기능 유닛의 입력/출력 동작에 따라서 적절한 양만큼 인덱스(ORI, RFI 및 RRI)를 지연시키며, 이 인덱스를 도 1에 도시된 연결 네트워크(CN)에 전달한다. 만약 VLIW 명령이 발급 슬롯(UC0 및 UC3)에 대한 명령을 포함한다면, 디코더(DEC)는 또한 연산을 실행하기 위해 발급 슬롯(UC0)에 대해 기능 유닛(FU01 또는 FU02) 중 하나와 발급 슬롯(UC3)에 대해 기능 유닛(FU30, FU31, 또는 FU32) 중 하나를 결합(SEL)을 통해 선택한다. 더나아가, 디코더(DEC)는 결합(OPT)을 사용하여 이 기능 유닛에 의해 실행되어야 하는 연산 유형에 관한 정보를 전달한다. 입력 라우팅 네트워크(IRN)는 피연산자 데이터(OPD)를 발급 슬롯(UC0)의 기능 유닛(FU01 및 FU02) 및 발급 슬롯(UC3)의 기능 유닛(FU30, FU31 및 FU32)에 결합(ID)을 통해서 전달한다. 발급 슬롯(UC0)의 기능 유닛(FU01, FU02)과, 발급 슬롯(UC3)의 기능 유닛(FU30, FU31, 및 FU32)은 그 결과 데이터를 출력 라우팅 네트워크(ORN)에 결합(OD)을 통해서 전달하고, 후속하여, 출력 라우팅 네트워크(ORN)는 결과 데이터(RD)를 도 1에 도시된 통신 네트워크(CN)에 전달한다.
도 2를 참조하여, 기능 유닛(FU01 및 FU02)은 두 개의 피연산자를 필요로 하고, 결합(ID 및 OD) 각각의 그 대응하는 수로부터 볼 수 있는 바와 같이 하나의 결과적인 데이터를 생성한다. 기능 유닛(FU01 및 FU02)은 피연산자 데이터로서 임의의 큰 즉각적인 값을 필요로 하지 않는다. 그러므로, 발급 슬롯(UC0)과 관련된 명령뿐만 아니라 대응하는 제어 워드는 상대적으로 작게 유지될 수 있으며, 이는 이들이 단지 하나의 피연산자 코드와, 두 개의 피연산자 레지스터 인덱스(ORI), 및 하나의 결과적인 파일 인덱스(RFI) 또는 결과적인 레지스터 인덱스(RRI)를 포함하기 때문이다.
도 3을 참조하면, 기능 유닛(FU30, FU31, 및 FU32)은 더 복잡한 기능 유닛이다. 기능 유닛(FU30 및 FU31)은 세 개의 피연산자 데이터를 필요로 하고, 기능 유닛(FU31 및 FU32)은 두 개의 출력 데이터를 생성한다. 더나아가, 기능 유닛은 피연산자로서 큰 즉각적인 값을 사용할 수 있다. 발급 슬롯(UC3)과 관련된 명령의 폭은 발급 슬롯(UC0)과 관련된 명령의 폭보다 더 커야 하며, 이는 제 1 기능 유닛이 피연산자 코드, 세 개의 피연산자 레지스터 인덱스, 및 두 개의 결과적인 레지스터 인덱스를 포함하기 때문이다. 그러므로, 발급 슬롯(UC3)에 발급된 대응하는 제어 워드의 폭은 발급 슬롯(UC0)에 발급된 제어 워드의 폭보다 더 커야 한다.
도 4를 참조하면, VLIW 명령의 예가 도 1에 도시된 VLIW 프로세서에 대해 도시된다. 압축해제된 VLIW 명령(401)은 다섯 개의 제어 워드(411 내지 419)를 포함하고, 각 제어워드에는 대응하는 발급 슬롯(UC0, UC1, UC2, UC3, 및 UC4) 각각에 대해 하나의 명령이 매핑된다. 제어 워드(413, 415, 및 419)는 발급 슬롯(UC1, UC2, 및 UC4) 각각과 관련된 NOP 연산을 포함한다. 제어 워드(411)는 명령(InstrA)을 포함하고, 제어 워드(417)는 명령(InstrD)을 포함하며, 이들 명령은 각각 발급 슬롯(UC0 및 UC3) 각각에 대응한다. 제어 워드(411 내지 419)의 폭은 서로 다르며, 상대적으로 간단한 발급 슬롯과 관련된 더 간단한 명령이나 명령의 더 작은 세트의 인코딩, 및 더 복잡한 발급 슬롯과 관련된 더 복잡한 명령이나 명령의 더 큰 세트의 인코딩을 가능케 한다. 예컨대, 명령(InstrA)은 상대적으로 작은 폭을 가지며, 이는 이것이 발급 슬롯(UC0)에 대응하기 때문인 반면, 명령(InstrD)은 더 큰 폭을 가지며, 이는 이것이 발급 슬롯(UC3)과 관련되기 때문이다.
서로 다른 명령 포맷은 동일한 제어 워드(411 내지 419)에서 매핑된 서로 다른 명령에 대해 사용될 수 있다. 명령 포맷은 수행되어야 하는 명령 유형이나, 예컨대 레지스터 파일로부터 하나를 검색하는 것과는 대조적으로 하나의 피연산자로서 즉각적인 값을 사용하는 것에 따라서 변할 수 있다. 명령(InstrA)에 대한 두 개의 가능한 명령 포맷은 각각 명령(403) 및 명령(407)으로 도시된다. 명령(403)은 연산 코드(OC1), 결과적인 레지스터 인덱스(D1), 및 두 개의 피연산자 레지스터 인덱스(S1 및 S2) 각각을 구비하는 네 개의 필드(421 내지 427)를 포함한다. 대안적으로, 명령(407)은 연산 코드(OC3), 결과적인 레지스터 인덱스(D4), 큰 즉각적인 피연산자 값(IV2) 각각을 구비하는 세 개의 필드(429 내지 433)를 포함한다. 명령(InstrD)에 대한 가능한 명령 포맷이 명령(405)에 의해 도시되어 있으며, 이 명령(405)은 연산 코드(OC2), 두 개의 결과적인 레지스터 인덱스(D2 및 D3), 두 개의 피연산자 레지스터 인덱스(S3 및 S4), 및 즉각적인 피연산자 값(IV1) 각각과 관련된 여섯 개의 필드(435 내지 445)를 구비한다. 제어 워드(417)에서 인코딩된 서로 다른 명령에 대한 서로 다른 포맷이 또한 가능하며, 이것은 도 4에 도시되어 있지 않다. 예컨대, 명령(405)에서, 더 많은 비트는 더 많은 연산이나 더 큰 즉각적인 값을 인코딩하는데 사용될 수 있고, 피연산자 레지스터 인덱스에는 덜 사용된다.
도 1에 도시된 VLIW 프로세서는 특정 애플리케이션 영역뿐만 아니라 RISC 유형 연산에 대한 맞춤 연산을 수행할 수 있다. 발급 슬롯(UC0, UC1, UC2, UC3, 및 UC4)의 복잡도 차이는 VLIW 명령(401)의 제어 워드(411 내지 419)에 매핑된 명령 사이의 명령 폭 차이에 의해 반영된다. 명령과 관련되고, 발급 슬롯(UC0 내지 UC4) 각각에 발급된 제어 워드의 폭은 특정한 발급 슬롯에 대한 명령의 폭에 적응된다. 더나아가, 제어 워드의 폭은 VLIW 프로세서의 설계 동안에 고정된다. 예컨대, 명령(InstrA)의 폭은 명령(InstrD)의 폭에 비할 때 더 작으며, 이는 결국 발급 슬롯(UC0)에 발급된 제어 워드(411)가 발급 슬롯(UC3)에 발급된 제어 워드(417)의 폭에 비해 더 작은 폭을 갖게 한다.
압축되지 않은 VLIW 명령(401)은 전용 비트 세트를 사용하여 NOP 연산을 인코딩함으로서 압축될 수 있다. 압축된 명령의 예가, VLIW 명령(401)을 압축한 이후 VLIW 명령(409)으로 도시되며, 이 명령(409)은 전용 비트 세트를 구비하는 필드(447)와, 명령(InstrA 및 InstrD) 각각을 구비하는 제어 워드(449 및 451)를 포함한다. 전용 비트 세트 내의 단일 비트는 VLIW 명령(401)의 제어 워드(413, 415, 및 417)에 매핑된 NOP 연산을 인코딩한다. 비트 '0'은 NOP 연산을 가리키며, 필드(447) 내의 비트 위치는 이 NOP 연산을 보유한, VLIW 명령(401) 내의 제어 워드를 지칭한다. 필드(447) 내의 위치(2, 3 및 5)에서의 '0'비트는 제어 워드(413, 415, 및 419) 각각의 VLIW 명령(401)에 존재하는 NOP 연산을 가르킨다. 필드(447) 내에 존재하는 비트 '1'은 비-NOP 연산을 갖는 명령을 지칭하며, 필드(447) 내의 비트의 위치는 VLIW 명령(401) 내에서 이 명령이 매핑되는 제어 워드를 가리킨다. 필드(447) 내의 위치(1 및 4)에서의 '1'비트는 각각 제어 워드(411 및 417)의 명령(InstrA 및 InstrD)을 지칭한다. 다른 실시예에서, VLIW 명령을 압축하는 다양한 방식이 당업자에 의해 알려진 바와 같이 적용될 수 있다.
유리한 실시예에서, VLIW 명령은 압축된 VLIW 명령이다. 압축된 VLIW 명령은 제어기(SQ)에 존재하는 압축해제 로직에 의해 압축해제된다. 각 제어 워드의 폭은 압축해제 로직의 하드웨어에 저장된다. 시퀀서(SQ)에 의한 압축된 VLIW 명령의 디코딩은 다음과 같이 실행된다. 압축된 VLIW 명령은, '0'비트 및 필드(447) 내의 그 위치뿐만 아니라 발급 슬롯(UC0 내지 UC4) 각각에 발급된 각 제어 워드의 폭에 관한 압축해제 로직상의 정보를 사용하여, NOP 연산을 포함하는 제어 워드를 VLIW 명령(409)에 더함으로서 압축해제된다. 제어 워드의 디코딩은 대응하는 발급 슬롯(UC0 내지 UC4) 내부에서 이 발급 슬롯 상의 디코더(DEC)에 의해 발생한다. 각 발급 슬롯에 대해, 서로 다른 명령 포맷뿐만 아니라 대응하는 제어 워드의 폭은 이 발급 슬롯과 관련된 디코더(DEC)의 하드웨어에 저장된다. 서로 다른 발급 슬롯과 관련된 제어 워드의 폭이 서로 다를 수 있으므로, 대응하는 디코더(DEC)의 설계는 그 성능을 최적화하기 위해 또한 다를 수 있다. VLIW 명령(409) 내에 어떠한 추가적인 비트도 제어 워드의 폭을 지시하는데 필요치 않으므로, 효율적인 명령 인코딩이 달성된다. 그 결과, 간소한 코드 크기가 달성된다. 더나아가, VLIW 프로세서는 압축된 VLIW 명령(409)이 제어 워드(449 내지 451)에 매핑된 각 명령에 속해 있는 런타임 (runtime)과, 이 명령(409) 중 얼마나 많은 비트가 제어 워드(449 내지 451)에 매핑된 각 명령에 속해있는지를 더 빠르게 결정하며, 이는 필드(447) 내의 전용 비트가 VLIW 명령(401) 내의 어떤 제어 워드가 비-NOP 연산을 구비하는 명령을 포함하는지를 지시하기 때문이며, 각 제어 워드의 폭이 압축해제 로직에 의해 알려져 있기 때문이다. 발급 슬롯(UC0 내지 UC4) 내에서 실행된 디코딩은 또한 효율적으로 실행될 수 있으며, 이는 대응하는 제어 워드의 폭과 대응하는 서로 다른 명령 포맷이 특정한 발급 슬롯과 관련된 디코더(DEC)에 의해 알려져 있기 때문이다. 그 결과, 명령을 빠르고 효율적으로 디코딩하게 된다.
바람직하게, 발급 슬롯(UC1 내지 UC4)에 대응하는 모든 제어 워드의 폭은 예컨대 미리 결정된 값으로서 하나의 바이트를 구비하는 미리 결정된 값의 정수배이다. 그 결과, 압축해제 로직의 복잡도는 감소되며, 이는 비트 이동이 이제 이 미리 결정된 값인 슬라이스 단계에서 일어날 수 있어서, 한 단계 이동해야 하는 비트의 최대 수를 제한할 수 있기 때문이다. 한 바이트인 미리 결정된 값을 사용하는 것의 추가적인 장점은 VLIW 명령이 프로그램 메모리에 바이트-정렬 방식으로 이상적으로는 저장된다는 점에 관련된다. 한 바이트인 미리 결정된 값을 선택하는 것뿐만 아니라, 한 바이트의 정수배인 압축된 VLIW 명령(409)에서의 전용 비트 세트를 포함하는 필드(447)의 폭을 선택하는 것은, 자동으로 압축된 VLIW 명령의 바이트-정렬을 초래한다.
수퍼스칼라(superscalar) 프로세서는 또한 VLIW 프로세서의 경우에서처럼 다 수의 연산을 병렬로 실행할 수 있는 다수의 발급 슬롯을 포함한다. 그러나, 프로세서 하드웨어 자체는, 어떠한 자원 충돌도 일어나지 않게 하면서도, 연산 의존성이 존재하는 런타임을 결정하고, 이들 의존성을 기초로 해서 병렬로 실행될 연산을 결정한다. 이러한 실시예부분에 기술된 VLIW 프로세서에 대한 실시예의 원리는 또한 수퍼스칼라 프로세서에 적용된다. 일반적으로, VLIW 프로세서는 수퍼스칼라 프로세서에 비해 더 많은 발급 슬롯을 가질 수 있다. VLIW 프로세서의 하드웨어는 수퍼스칼라 프로세서에 비해 덜 복잡하며, 이는 결국 더 양호하게 스케일러블(scalable)한 아키택쳐를 얻게 한다. 발급 슬롯의 수 및 각 발급 슬롯의 복잡도는, 특히 본 발명을 사용하여 달성될 장점의 양을 결정할 것이다.
전술된 예는 본 발명을 제한하기 보다는 예시하는 것임과, 당업자는 첨부된 청구항의 범주에서 벗어나지 않고도 많은 대안적인 실시예를 의도할 수 있음을 주목해야 한다. 청구항에서, 괄호 내의 임의의 참조번호는 청구항을 제한하는 것으로 해석되지 않아야 한다. 단어 "포함하다"는 청구항에 개시된 요소나 단계이외의 요소나 단계의 존재를 배제하지 않는다. 단수형태로 기재된 요소는 이러한 요소가 복수개 존재함을 배제하지 않는다. 여러 수단을 나열하는 디바이스 청구항에서, 이들 수단 중 몇몇은 하드웨어의 하나의 동일한 아이템으로 구현될 수 있다. 특정한 수단이 서로 다른 종속항에 나열되어 있다는 단순한 사실은 이들 수단의 조합이 유리하게 사용될 수 없다는 점을 지시하지는 않는다.
상술한 바와 같이, 본 발명은 매우 긴 명령 워드 프로세서에서 가변 길이 명 령을 처리할 수 있는 장치, 방법, 및 컴파일러에 이용된다.

Claims (14)

  1. 처리 장치로서,
    데이터를 입력하기 위한 입력 수단과;
    상기 입력 데이터를 저장하기 위한 레지스터 파일과;
    복수의 기능 유닛을 각각 포함하는 적어도 제 1 및 제 2 발급 슬롯을 포함하고, 상기 처리 장치는 병렬로 수행되고 있는 명령 세트로부터 생성된 제어 신호를 기초로 해서 상기 레지스터 파일로부터 검색된 데이터를 처리하기 위한 것이고, 상기 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고, 상기 제 1 발급 슬롯은 상기 제 1 명령에 대응하는 제 1 제어 워드에 의해 제어되며, 상기 제 2 발급 슬롯은 상기 제 2 명령에 대응하는 제 2 제어 워드에 의해 제어되고,
    상기 제 1 제어 워드의 폭은 상기 제 2 제어 워드의 폭과는 다른 것특징으로 하는, 처리 장치.
  2. 제 1 항에 있어서, 상기 처리 장치는 VLIW 프로세서이며, 상기 명령 세트는 VLIW 명령으로 그룹화되는, 처리 장치.
  3. 제 2 항에 있어서, 상기 VLIW 명령은 NOP 동작의 인코딩용의 전용 비트를 포함하는 압축된 VLIW 명령인, 처리 장치.
  4. 제 3 항에 있어서, 상기 압축된 VLIW 명령을 압축해제하기 위한 압축해제 수단을 포함하며, 상기 압축해제 수단은 상기 전용 비트를 사용하여 상기 제어 워드 폭에 관한 정보를 유도하기 위한 것인, 처리 장치.
  5. 제 1 항에 있어서, 상기 레지스터 파일과 상기 발급 슬롯을 결합하기 위한 연결 네트워크를 더 포함하는, 처리 장치.
  6. 제 2 항에 있어서, 상기 레지스터 파일은 분산된 레지스터 파일인, 처리 장치.
  7. 제 1 항에 있어서, 상기 제 1 및 제 2 제어 워드의 폭은 미리 결정된 값의 정수배인, 처리 장치.
  8. 데이터를 처리하는 처리 방법으로서,
    입력 데이터를 레지스터 파일에 저장하는 단계와;
    병렬로 수행되는 명령 세트로부터 생성된 제어 신호를 기초로 해서 상기 레지스터 파일로부터 검색된 데이터를 처리하는 단계를 포함하고, 상기 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고, 제 1 발급 슬롯은 상기 제 1 명령에 대응하는 제 1 제어 워드에 의해 제어되고, 제 2 발급 슬롯은 상기 제 2 명령에 대응하는 제 2 제어 워드에 의해 제어되며, 상기 제 1 및 제 2 발급 슬롯은 복수의 기능 유닛을 포함하고,
    상기 제 1 제어 워드의 폭은 상기 제 2 제어 워드의 폭과는 다른 것특징으로 하는, 데이터 처리 방법.
  9. 제 8 항에 있어서, 상기 명령 세트는 VLIW 명령으로 그룹화되는, 데이터 처리 방법.
  10. 제 9 항에 있어서, 상기 VLIW 명령은 NOP 연산의 인코딩용의 전용 비트를 포함하는 압축된 VLIW 명령인, 데이터 처리 방법.
  11. 제 10 항에 있어서, 압축해제 수단에 의해 상기 압축된 VLIW 명령을 압축해제하는 단계를 더 포함하며, 상기 압축해제 수단은 상기 전용 비트를 사용하여 상기 제어 워드 폭에 관한 정보를 유도하는, 데이터 처리 방법.
  12. 명령 세트 시퀀스를 생성하기 위한 컴파일러 프로그램 제품을 저장하는 컴퓨터로 판독가능한 기록 매체로서, 하나의 명령 세트는 적어도 제 1 및 제 2 명령을 포함하고 병렬 수행을 위해 배치되는, 컴퓨터로 판독가능한 기록 매체에 있어서,
    상기 생성된 명령 세트 시퀀스는 적어도 제 1 및 제 2 발급 슬롯을 포함하는 처리 장치에 의해 수행하기 위해 배치되고, 상기 제 1 발급 슬롯은 상기 제 1 명령에 대응하는 제 1 제어 워드에 의해 제어되고, 상기 제 2 발급 슬롯은 상기 제 2 명령에 대응하는 제 2 제어 워드에 의해 제어되며, 상기 제 1 제어 워드의 폭은 상기 제 2 제어 워드의 폭과는 다른 것을,
    특징으로 하는 컴퓨터로 판독가능한 기록 매체.
  13. 제 8항에 기재된 방법의 단계를 실행할 것을 컴퓨터 시스템에게 지시하기 위한 컴퓨터 프로그램 코드 수단을 포함하는 컴퓨터 프로그램을 저장하는 컴퓨터로 판독가능한 기록 매체.
  14. 삭제
KR1020057002496A 2002-08-16 2003-07-18 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체 KR100991700B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02078393.2 2002-08-16
EP02078393 2002-08-16

Publications (2)

Publication Number Publication Date
KR20050037575A KR20050037575A (ko) 2005-04-22
KR100991700B1 true KR100991700B1 (ko) 2010-11-04

Family

ID=31725469

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057002496A KR100991700B1 (ko) 2002-08-16 2003-07-18 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체

Country Status (8)

Country Link
US (1) US7313671B2 (ko)
EP (1) EP1530755B1 (ko)
JP (1) JP2005535974A (ko)
KR (1) KR100991700B1 (ko)
CN (1) CN1675619A (ko)
AU (1) AU2003249515A1 (ko)
TW (1) TW200413945A (ko)
WO (1) WO2004017197A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2414308B (en) 2004-05-17 2007-08-15 Advanced Risc Mach Ltd Program instruction compression
US8745627B2 (en) * 2005-06-27 2014-06-03 Qualcomm Incorporated System and method of controlling power in a multi-threaded processor
DE602007006215D1 (de) 2006-09-06 2010-06-10 Silicon Hive Bv Datenverarbeitungsschaltung mit mehreren anweisungchaltung und scheduling-verfahren für eine solche datenschaltung
CN101382884B (zh) * 2007-09-07 2010-05-19 上海奇码数字信息有限公司 指令编码方法、指令编码系统及数字信号处理器
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
TWI396132B (zh) * 2008-08-06 2013-05-11 Nat Univ Tsing Hua 非規則性暫存器集之指令管線化方法
KR101545701B1 (ko) 2008-10-07 2015-08-19 삼성전자 주식회사 프로세서 및 그 명령어 번들 복원 방법
KR101553652B1 (ko) * 2009-02-18 2015-09-16 삼성전자 주식회사 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US10120692B2 (en) * 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
CN102707929A (zh) * 2012-04-12 2012-10-03 江苏中科芯核电子科技有限公司 一种并行指令打包方法
FR3021427B1 (fr) * 2014-05-22 2016-06-24 Kalray Structure de paquet d'instructions de type vliw et processeur adapte pour traiter un tel paquet d'instructions
US10127043B2 (en) * 2016-10-19 2018-11-13 Rex Computing, Inc. Implementing conflict-free instructions for concurrent operation on a processor
US11934945B2 (en) 2017-02-23 2024-03-19 Cerebras Systems Inc. Accelerated deep learning
JP6854473B2 (ja) 2017-04-17 2021-04-07 セレブラス システムズ インク. 加速化ディープラーニングのデータフロー・トリガー・タスク
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
EP3607503B1 (en) 2017-04-17 2022-03-09 Cerebras Systems Inc. Task activating for accelerated deep learning
WO2020044152A1 (en) 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
US11328208B2 (en) 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
US11321087B2 (en) 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
US20220385218A1 (en) * 2021-06-01 2022-12-01 Chicony Power Technology Co., Ltd. Sensorless motor rotor angle correction method and system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2806359B2 (ja) 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
US5870576A (en) 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6173389B1 (en) * 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置

Also Published As

Publication number Publication date
EP1530755A2 (en) 2005-05-18
AU2003249515A8 (en) 2004-03-03
US20050257027A1 (en) 2005-11-17
WO2004017197A3 (en) 2004-07-22
KR20050037575A (ko) 2005-04-22
AU2003249515A1 (en) 2004-03-03
US7313671B2 (en) 2007-12-25
CN1675619A (zh) 2005-09-28
JP2005535974A (ja) 2005-11-24
TW200413945A (en) 2004-08-01
EP1530755B1 (en) 2019-11-06
WO2004017197A2 (en) 2004-02-26

Similar Documents

Publication Publication Date Title
KR100991700B1 (ko) 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US6839828B2 (en) SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US6775766B2 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6848041B2 (en) Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
JP3741551B2 (ja) データ処理装置
US5337415A (en) Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US20060174089A1 (en) Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US7581082B2 (en) Software source transfer selects instruction word sizes
KR0178078B1 (ko) 2개의 명령이 동시 실행 가능한 데이타 프로세서
AU6864300A (en) Program product and data processing system
EP3343360A1 (en) Apparatus and methods of decomposing loops to improve performance and power efficiency
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
WO2002065276A2 (en) Apparatus and method for effecting changes in program control flow
JP5122277B2 (ja) データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム
EP2798479A1 (en) Encoding to increase instruction set density
US6877082B1 (en) Central processing unit including address generation system and instruction fetch apparatus
WO2005036384A2 (en) Instruction encoding for vliw processors
Wong et al. Multimedia enhanced general-purpose processors
US6922773B2 (en) System and method for encoding constant operands in a wide issue processor
TWI309802B (en) Apparatus for removing unnecessary instruction and method thereof
JPH09330219A (ja) 命令解読器切替型プロセッサ及び翻訳装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151002

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 7