KR20010031884A - iVLIW PE 대 PE 통신으로 효율적인 동기식MIMD 연산을 위한 방법 및 장치 - Google Patents

iVLIW PE 대 PE 통신으로 효율적인 동기식MIMD 연산을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20010031884A
KR20010031884A KR1020007004975A KR20007004975A KR20010031884A KR 20010031884 A KR20010031884 A KR 20010031884A KR 1020007004975 A KR1020007004975 A KR 1020007004975A KR 20007004975 A KR20007004975 A KR 20007004975A KR 20010031884 A KR20010031884 A KR 20010031884A
Authority
KR
South Korea
Prior art keywords
vim
vliw
instructions
pes
instruction
Prior art date
Application number
KR1020007004975A
Other languages
English (en)
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 KR20010031884A publication Critical patent/KR20010031884A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3802Instruction prefetching
    • 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
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Plural Heterocyclic Compounds (AREA)
  • Radio Transmission System (AREA)

Abstract

통신 위험들을 효율적인 방식으로 제거하는 다수의 병렬 프로세서(PE들)을 사용하는 SIMD 기계에 관한 것이다. 간접적인 매우 긴 명령 워드 명령 메모리(VIM)은 실행 및 딜리미터 명령들과 함께 사용된다. 마스킹 매카니즘은 PE들이 로딩되는 자신들의 VIM들을 갖도록 제어하기 위하여 사용될 수 있다. 게다가, 동작 수신 모델이 사용되는 것이 바람직하다. 한 양상에서, 각 PE는 어느 PE가 수신하는지를 선택하는 스위치를 제어하도록 동작한다. 본 발명은 SIMD 및 MIMD 기계들 둘다의 최적의 특성을 유지하고 통신 레이턴시를 최소화하면서 하드웨어 비용 및 복잡도를 감소시키는 병렬 알고리즘들을 실행하기 위한 보다 우수산 기계 구조에 관한 것이다. 본 발명은 SIMD 기계 구조에 사용되는 단일의 제어열을 유지하면서 MIMD 계산 자율 레벨을 SIMD 간접적인 매우 긴 명령 워드(iVLIW) 처리 소자들로 이동시킨다. 결국, 용어 동기식 MIMD(SMIMD)는 본 방식을 설명하기 위하여 사용된다.

Description

iVLIW PE 대 PE 통신으로 효율적인 동기식 MIMD 연산을 위한 방법 및 장치 {METHODS AND APPARATUS FOR EFFICIENT SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-to-PE COMMUNICATION}
발명의 배경
두 개의 주요한 병렬 프로그래밍 모델들, 즉 SIMD 및 MIMD가 존재한다. SIMD 모델에서, 동기식 고정 단계 모드(synchronous lock-step mode)로 다수의 처리 소자들(PE들 : Processing elements)을 제어하는 단일 프로그램 열이 존재한다. 이것은 다수의 프로그램 제어열이 존재하고, 통신하기 앞서 독립적인 프로그램 열들을 동기화시키기 위한 필요조건으로 인해 다수의 프로세서들간을 통신시 발생하는 레이턴시와 임의의 프로세서간 연산이 경쟁해야만 하는 MIMD 모델과 대조적이다. SIMD가 지닌 문제는 이 프로세서에 존재하는 활용가능한 병렬성(paralleism)을 모든 알고리즘들이 효율적으로 사용할 수 없다는 것이다. 상이한 알고리즘들에서 고유의 병렬성의 양(the amount of parallelism)이 변화하여 SIMD 기계들에 대한 각종 다양한 알고리즘들을 효율적으로 수행하는데 어려움을 초래한다. MIMD 기계들이 지닌 문제는 다수의 프로세서들간의 통신 레이턴시인데, 이 통신 레이턴시는 알고리즘들을 처리시에 효율적으로 동기화하는 프로세서들을 협동시키는 것을 곤란하게 한다. 전형적으로, 각 MIMD PE가 상당한 양의 하드웨어를 필요로하는 자신의 명령 시퀀싱 매카니즘을 갖아야만 하기 때문에, MIMD 기계들은 SIMD 기계들과 비교시 보다 많은 수행 비용을 초래한다. MIMD 기계들은 본래 독립적인 병렬 처리 소자들을 관리하는데 필요로되는 보다 복잡한 프로그래밍 제어를 갖는다. 결국, 프로그래밍 복잡도의 레벨들 및 통신 레이턴시는 병렬 처리 소자들이 사용될 때 각종 컨텍스트(context)에서 초래한다. 보다 상세하게 후술되는 바와같이 이와같은 문제들을 효과적으로 설명하는 것이 매우 유용하다.
관련 출원들
본 발명은 1997년 11월 7일 출원된 ″ 효율적인 동기식 MIMD VLIW 통신용 방법 및 장치″라는 명칭의 미국 임시 출원 제 60/064,619의 이점을 청구한 것이다.
발명의 분야
소정수의 병렬 처리 소자들을 갖는 임의의 단일 명령 다수 데이터 스트림(SIMD : Single Instruction Multiple Data Stream) 기계에 대해서, 활용가능한 병렬 처리 소자들, 즉 활용가능한 계산 자원들을 효율적으로 사용할 수 없게 하는 알고리즘들이 존재한다. 다수 명령 다수 데이터 스트림(MIMD: Multiple Data Mutiple Data stream) 류의 기계들은 보다 효율적으로 이들 알고리즘들중 일부를 실행하지만, 각 프로세서에 대한 각각의 명령 스트림을 지원하기 위한 부가적인 하드웨어를 필요로하고 타이트하게 결합된 프로그램 수행으로 인한 통신 레이턴시(communication latency)로 인해 수행성능이 손실된다. 본 발명은 SIMD 및 MIMD 기계들 둘다의 특성들을 최적으로 유지시키고 통신 레이턴스를 최소화하면서 하드웨어 비용 및 복잡도를 감소시키는 이들 알고리즘들을 실행하는 보다 우수한 기계 구조에 관한 것이다. 본 발명은 SMID 기계 구조에 사용되는 단일의 제어 열(single thread of control)을 유지하면서 MIMD 계산 자율의 레벨(level of MIMD computational autonomy)을 SIMD 간접적인 매우 긴 명령 워드(iVLIW : indirect Very Long Instruction Word) 처리 소자들에 제공한다. 결국, 용어 동기식 MIMD(SMIMD)는 본 발명을 설명하기 위하여 사용된다.
도1은 본 발명을 따른 ManArray 간접적인 VLIW 명령 메모리의 각종 양상들을 도시한 도면.
도2는 기본적인 iVLIW 데이터 경로를 도시한 도면.
도3은 ALU 슬롯의 확대도로 5개의 슬롯의 iVLIW를 도시한 도면.
도4A는 LV 로드/수정 VLIW 명령을 도시한 도면.
도4B는 XV 실행 VLIW 명령을 도시한 도면.
도4C는 명령 필드 규정을 도시한 도면.
도4D는 부가적인 명령 필드 규정을 도시한 도면.
도4E는 ADD 명령을 도시한 도면.
도4F는 2×2 ManArray 형태에서 3개의 동기식 MIMD iVLIW를 위한 슬롯 기억장치를 도시한 도면.
도5는 본 발명을 따른 iVLIW 로드 및 페치 파이프라인을 도시한 도면.
도6은 SIMD iVLIW Array 처리 양상들을 도시한 도면.
도7은 iVLIW 트랜스레이션 확장자를 도시한 도면.
도8A는 iVLIW 트랜스레이션 확장자 로드 및 페치 파이프라인을 도시한 도면.
도8B는 VIM iVLIW 기억장치에 대한 또다른 포맷을 도시한 도면.
도9는 전송 모델을 사용하는 SMIMD 통신에 전형적인 위험 및 전송 모델 클러스터 스위치 제어를 도시한 도면.
도10은 집중화된 클러스터 스위치 제어로 전송 모델을 도시한 도면.
도11은 SMIMD 연산 모드에서 통신 위험들을 피하기 위하여 사용되는 수신 모델 클러스터 스위치 제어를 도시한 도면.
발명의 요약
본 발명은 ManArray 아키텍쳐와 결합하여 바람직하게 사용되는데, 이 아키텍쳐의 각종 양상들은 1997년 6월 30일에 출원된 미국 특허 08/885,310호와, 1997년 10월 10일에 출원된 미국 특허 출원 08/949,122호와, 1998년 10월 9일 출원된 미국 특허 출원 09/169,255호와, 1998년 10월 9일 출원된 미국 특허 출원 09/169,256호와, 1998년 10월 9일 출원된 미국 특허 출원 09/169,072호와, 1997년 12월 4일 출원된 발명의 명칭이 ″매우 긴 명령 워드 프로세서에서 명령들을 다이나믹하게 수정하는 방법 및 장치″인 가출원 번호 60/067,511호와, 1997년 12월 18일에 출원된 발명의 명칭이 ″ 스케일러블 명령 세트 아키텍쳐를 위한 방법 및 장치″인 가출원 번호 제 60/068,021호와, 1998년 1월 12일에 출원된 발명의 명칭이 ″ 매우 긴 명령 워드 프로세서의 명령 파이프라인을 다이나믹하게 확장하기 위한 방법 및 장치″인 가출원 번호 제 60/071,248호와, 1998년 1월 28일 출원된 발명의 명칭이 ″ 서브워드 실행으로 VLIW 토대로한 어레이 프로세서에서 조건부 실행을 지원하기 위한 방법 및 장치″인 가출원 번호 제 60/072,915호와, 1998년 3월 12일에 출원된 발명의 명칭이 ″ VLIW 프로세서에서 레지스터의 간접적인 제어를 제공하는 레지스터 파일 인덱싱 방법 및 장치″인 가출원 번호 제 60/077,766호와, 1998년 7월 9일에 출원된 발명의 명칭이 ″간접적인 VLIW 프로세서에서 명령 어드레싱하기 위한 방법 및 장치″인 가출원 번호 제60/092,130호와, 1998년 10월 9일 출원된 발명의 명칭이 ″ManArray상에서 효율적인 복소 승산 및 고속 퓨리에 변환(FFT) 수행″인 가출원 번호 제 60/103,712호 및 1998년 11월 3일에 출원된 발명의 명칭이 ″ 비디오 엔코딩용 개선된 모션 추정을 위한 방법 및 장치″인 가출원 번호 제------호 각각에 보다 상세하게 서술되어 있으며, 이들 모두가 본 발명의 양수인에게 양도되고 본원에 참조되어 있다.
본 발명에 따라서 ManArray 간접적인 매우 긴 명령 워드들(iVLIW들)과 결합하여 사용하는데 적합한 ManArray 프로세서는 간접적인 매우 긴 명령 워드 아키텍쳐를 제공하기 위한 처리 소자들(PE들)의 스케일러블 어레이용 어레이 제어기로서 작용하는 시퀀스 프로세서(SP)를 갖는 어레이 프로세서로서 수행될 수 있다. 본 발명에 따라서 간접적인 매우 긴 명령 워드들(iVLIW들)은 SIMD 어레이 제어기 시퀀스 프로세서, 즉 SP에 의해 iVLIW 명령 메모리에서 이루어질 수 있다. VIM은 각 처리 소자 ,즉 PE에 존재하고 다수의 iVLIW들을 포함하는 것이 바람직하다. iVLIW가 VIM에서 이루어진 후, 또다른 SP 명령, 즉 본 실시예에서 ″실행 iVLIW″을 위하여 지정된 XV는 모든 PE들의 동일한 VIM 어드레스에서 iVLIW를 동시에 실행한다. 모 든 PE VIM들이 동일한 명령들을 포함하는 경우, SIMD 연산이 발생된다. 일 대 일 매핑(mapping)은 XV 명령 및 각 PE에 존재하는 단일의 동일한 iVLIW간에 존재한다.
ManArray에 대해 실행되는 어떤 알고리즘의 효율성을 증가시키기 위하여, 실행 VLIW(XV) 명령에 의해 초기화된 간접적인 실행 명령 및 동일한 VLIW 메모리 어드레서 다수의 PE들에 기억된 여러 VLIW 명령과 함께 VLIW 메모리에 기억된 VLIW 명령들에 대해 간접적으로 연산할 수 있다. SP 명령이 이 iVLIW들의 세트가 모든 PE들에 걸쳐서 동시에 실행하도록 할 때, 동기식 MIMD 또는 SMIMD 연산이 발생한다. 일 대 다수 매핑이 XV 명령 및 각 PE에 존재하는 다수의 상이한 iVLIW들간에 존재한다. 다수의 상이한 iVLIW 실행이 단일의 제어 포인트(SP)에 의해 XV 명령 발부와 동기화되기 때문에, 특정화된 동기화 매카니즘이 필요치 않다. PE들 및 ManArray 네트워크간의 통신을 관리하기 위하여 수신기 모델을 사용함으로써, MIMD 연산들에 공통되는 통신 레이턴시 특성은 후술되는 바와같이 피해진다. 게다가, 단지 하나의 동기식 실행 장소가 존재하기 때문에, 각 PE에서 각 프로그램 흐름을 위한 부가적인 MIMD 하드웨어가 필요치 않게 된다. 이 방식에서, 기계는 통신 레이턴시를 최소화하면서 감소된 하드웨어 비용으로 SMIMD 연산을 지원하도록 조직된다.
iVLIW들의 직접 메모리 액세스(DMA) 로딩 및 고정된 iVLIW들을 포함하는 ROM으로 VIM 어드레스 공간의 섹션을 수행하는 것의 양자중 하나가 배제되지 않을지라도, ManArray 간접적인 VLIW 또는 iVLIW는 프로그램 제어하에서 로딩되는 것이 바람직하다. 어떤 레벨의 다이나믹 프로그램 유동성을 유지하기 위하여, VIM 전부는 아니지만, VIM의 일부는 전형적으로 랜덤 액세스 메모리 타잎으로 될 것이다. 랜덤 액세스 타잎의 VIM을 로딩하기 위하여, 로드 iVLIW를 위한 딜리미터(delimiter) 명령 LV은 이 딜리미터를 따르는 임의 수의 명령들이 실행되기보다는 차라리 VIM에 로딩되어야만 한다는 것을 나타낸다. SIMD 연산을 위하여, 각 PE는 각 VIM 어드레스를 위한 동일한 명령들을 얻는다. SMIMD 연산을 설정하기 위하여, 각 PE의 동일한 VIM 어드레스에서 상이한 명령들을 로딩하는 것이 필요하다.
본 바람직한 실시예에서, 이것은 VIM 만의 로딩이 마스킹 온되는 PE들에 대해서 발생하도록 기능하는 마스킹 매카니즘에 의해 성취된다. 마스킹 오프되는 PE들은 딜리미터 명령을 실행하지 않음으로 이 딜리미터를 따르는 규정된 명령들의 세트를 VIM에 로딩하지 않는다. 또한, 여러 명령들이 PE 국부 메모리로부터 병렬로 로딩될 수 있거나, VIM이 DMA 운반의 목표가 될 수 있다. 여러 명령들을 동일한 VIM 어드레스에 로딩하는 또다른 대안은 LV 명령을 따르는 제2의 32 비트 제어 워드를 갖는 제2 LV 명령, 즉 LV2의 사용을 통한 것이다. 제1 및 제2 제어 워드들은 PE 라벨이 부가될 수 있도록 이들간에 비트들을 재배열한다. 이 제2의 LV2 방식은 마스킹될 PE들을 필요로하지 않고 상이한 시스템 수행시 일부 장점들을 제공할 수 있다. 여러 PE들에 대한 동일한 VIM 어드레스에 여러 명령들을 선택적으로 로딩함으로써, ManArray는 SMIMD 연산을 위하여 설정된다.
SMIMD 연산을 수행시 부딪히는 한가지 문제는 처리 소자간 통신을 취급하는 것이다. SIMD 모드에서, 어레이내의 모든 PE들은 동일한 명령을 실행한다. 통상적으로, 이들 SIMD PE 대 PE 통신 명령들은 전송 모델을 사용하는 것으로서 여겨진다. 즉, SIMD 전송 모델 통신 명령들은 각 PE가 자신의 데이터를 어느 방향으로 또는 어느 목표 PE로 전송하는지를 표시한다. SEND-WEST와 같은 통신 명령이 조우될때, 각 PE는 데이터를 서쪽의 이웃으로서 지형학적으로 규정된 PE에 전송한다. 전송 모델은 송신기 및 수신기 PE들 둘다를 규정한다. SEND-WEST 예에서, 각 PE는 자신의 데이터를 WEST PE에 전송하고 자신의 EAST PE로부터 데이터를 수신한다. SIMD 모드에서, 이것은 문제가 되지 않는다.
전송 모델을 사용하는 SMIMD 연산 모드에서, 다수의 처리 소자들 모두가 데이터를 동일한 이웃에 전송하도록 시도할 수 있다. 이 시도는 ManArray의 처리 소자들과 같은 처리 소자들이 동시에 단지 하나의 다른 처리 소자로부터 수신할 수 있는 단지 하나의 수신 포트를 갖는 것으로서 규정될 수 있기 때문에 위험한 상황을 제공한다. 각 처리 소자가 하나의 수신 포트를 갖는 것으로서 규정될 때, 이와같이 시도된 연산은 완전히 성공적이지 않음으로 통신 위험을 초래한다.
상술된 통신 위험을 피하기 위하여, 수신 모델은 PE들간의 통신을 위하여 사용된다. 수신 모델을 사용하면, 각 처리 소자는 스위치를 제어하는데, 이 스위치는
어느 처리 소자로부터 수신되는지를 선택한다. 임의의 두 개의 처리 소자들이 동일한 수신 포트에 대하여 경쟁하는 것이 불가능하기 때문에, 통신 위험이 초래하는 것은 불가능하다. 정의에 의하면, 각 PE는 자신의 수신 포트를 제어하여 목표 PE 사양(specification)없이 데이터를 활용가능하게 한다. 어떤 의미있는 통신이 수신 모델을 사용하여 처리 소자들간에서 발생시키기 위하여, PE들은 활용가능한 데이터의 수신시 협동하도록 프로그램되어야만 된다. 동기식 MIMD(SMIMD)를 사용하면, 이것은 협동하는 명령들 모두가 동일한 iVLIW 장소에 존재하는 경우에 발생하도록 보장된다. SMIMD 없이, 복소 매카니즘은 통신들을 동기화하고 수신 모델을 사용하기 위하여 필요로된다.
본 발명의 보다 완전한 이해 뿐만아니라 부가적인 특징 및 장점이 이하의 상세한 설명 및 도면으로부터 명백하게 될 것이다.
본 발명과 결합하여 사용하기 위한 한 세트의 현재 바람직한 간접적인 매우 긴 명령 워드(iVLIW) 제어 명령들이 후술된다. 도1은 어드레스 ″i″에서 iVLIW의 실행을 위한 시스템을 도시한 것인데, 이 iVLIW은 PE들(104), 즉 PE0 - PE3 의 2×2 ManArray내의 S=기억, L = 부하, A = 연산 논리 장치(ALU), M = 승산 누산 장치(MAU) 및 D = 데이터 선택 장치(DSU) 명령들의 세트를 표시하는 각 VIM내의 수직의 박스 세트 SLAMD(105)로 표시된다. 도1에서, 2×2 ManArray(100)는 32개의 비트 명령들을 단일의 32 비트 버스를 통해서 어레이 PE들에 전달하는 시퀀스 처리기(SP) 제어기(102)를 더 포함한다. 한가지 타잎의 32-비트 명령은 실행되는 것이 바람직한 iVLIW에 포인터를 발생시키기 위하여 VIM 베이스 어드레스와 결합하여 사용되는 VIM 어드레스 옵셋 값을 포함하는 실행 iVLIW(XV) 명령이다. PE들(104)은 클러스터 스위치(107)에 의해 상호접속된다.
본 발명에 따라서 사용하기 위하여 적응되는 바와같은 ManArray 아키텍쳐에서 SP(102) 및 각 PE(104)는 도1에 도시된 바와같은 iVLIW 메모리(VIM)(106)의 양을 포함한다. 각 VIM(106)은 다수의 VLIWAUDFUD 어드레스들(103)을 보유하기 위한 기억 공간을 포함하고 각 어드레스는 8개의 단일의 명령들까지 기억할 수 있다. 현재 바람직한 수행들은 각 iVLIW 명령이 5개의 단일의 명령들까지 포함하도록 하는 것인데, 하나의 명령은 기억 장치(108), 부하 장치(110), 연산 논리 장치(112)(ALU), 승산-누산 장치(114)(MAU) 및 데이터 선택 장치(116)(DSU)와 각각 관계된다. 예를들어, VIM 어드레스 ″i″(105)에서 iVLIW 명령은 5개의 명령들 SLAMD를 포함한다.
도2는 기본적인 iVLIW 데이터 경로 장치(200)를 도시한 것인데, 이 경로 장치에 의해 페치된 명령(fetched instruction)이 VIM 로드 및 기억 제어 기능(22)에 접속되는 명령 레지스터(20)에 기억된다. VIM 로드 및 기억 제어 기능은 인터페이스 신호들을 VIM(24)에 제공한다. VIM(24)은 VIM(106)에 대응하는데, 도1의 각각의 VIM(106)은 레지스터들과 관계되고 도2에 도시된 바와같이 제어한다. VIM(24)의 출력은 iVLIW 레지스터(26)에 파이프라인된다. 도3은 N개의 엔트리들 0, 1...N-1을 갖는 5개의 슬롯 iVLIW VIM(300)을 도시한 것이다. 각 VIM (300) 어드레스된 장소는 기억, 로드, ALU, MAU 및 DSU 명령들(301 내지 305)용 기억 장소를 포함한다. 확장된 ALU 슬롯 뷰(303')는 하이라이트된(highlighted) 비트-31 ″d″를 갖는 32-비트 기억 공간을 도시한 것이다. VIM 기억 장치의 명령 비트들을 사용하는 것이 보다 상세하게 후술될 것이다.
iVLIW 명령들은 PE VIMs의 어레이에 집중적으로 로딩될 수 있으며, 또는 PE 또는 PE들을 마스크하기 위하여 특정한 명령들을 사용함으로써, 각 PE VIM은 각각 로딩될 수 있다. VIM에서 iVLIW 명령들은 단일 명령으로서 실행될 때 VIM 메모리 어드레스에 위치되는 단일의 명령들의 동시 실행을 초래하는 실행 VLIW(XV) 명령을 통해 실행하기 위하여 액세스된다. XV 명령은,
1. 각각의 SP들 또는 PE들의 VIM 어드레스에 위치되는 모든 단일 명령들,
2. 동일한 관계 VIM 어드레스들에서의 모든 PE들에 위치되는 모든 명령들 또는,
3. 동일한 관계 VIM 어드레스에서의 모든 PE들의 서브셋 또는 그룹에 위치된모든 명령들을 동시에 실행하도록 할 수 있다.
단지 두 개의 제어 명령들은 iVLIW 메모리들을 로딩/수정하는데 필요하고 iVLIW 명령들을 실행하는데 필요로한다. 이들은 :
1. 도4A에 도시된 로드/수정 VLIW 메모리 어드레스(LV) 및
2. 도4B에 도시된 실행 VLIW(XV) 이다.
도4A에 도시된 LV 명령(400)은 엔코딩 블록(410)에서 도시된 바와같은 32 비트 엔코딩을 위한 것이고 후술되는 바와같이 신택스/연산 블록(420)에서 도시된 현재 바람직한 신택스/연산을 갖는다. LV 명령(400)은 규정된 SP 또는 PE VLIW 메모리(VIM)의 각각의 명령 슬롯들을 로딩 및/또는 디스에이블하기 위하여 사용된다. VIM 어드레스는 베이스 VIM 어드레스 레지스터 Vb(V0 또는 V1) 더하기 비트들 0 내지 7, 즉 도4A의 엔코딩 블록(410)의 비트들의 블럭(411)에 도시된 부호화되지 않은 8-비트 옵셋 VIMOFFS의 합으로서 계산된다. VIM 어드레스는 하드웨어 형태를 위한 유효 범위내에 있어야만 되는데, 그렇치않다면 이 명령의 연산은 규정되지 않는다.
각 명령 슬롯들의 어떤 조합은 디스에이블 슬롯 파라미터 'd = {SLAMD}'를 통해서 디스에이블될 수 있으며, 여기서 S = 기억 장치(SU), L = 부하 장치(LU), A = 연산 논리 장치(ALU), M = 승산 누산 장치(MAU) 및 D = 데이터 선택 장치(DSU) 이다. 블랭크 'd = ' 파라미터가 어떤 슬롯도 디스에이블 하지 않는다. 규정된 슬롯들은 로딩될 임의의 명령들에 앞서 디스에이블된다.
로딩하기 위한 명령들의 수는 규정되어 있고 InstrCnt 파라미터를 활용한다. 본 수행을 위하여, 유효한 값들은 0-5이다. LV를 따르는 다음 InstrCnt 명령들은 규정된 VIM에 로딩된다. 장치에 영향을 미치는 플래그(UAF : Unit Affecting Flags) 파라미터 'F = [AMD]'는 어느 연산 명령 슬롯(A = ALU, M = MAU, D = DSU)이 실행될 때 규정된 VIM을 위하여 조건부 플래그들을 설정하도록 허용되는지를 선택한다. 블랭크 'F'는 ALU 명령 슬롯을 선택한다. LV 명령의 처리 동안, 연산 플래그들은 영향받지 않고 사이클 수는 1 더하기 로딩된 명령들의 수이다.
도4B에 도시된 XV 명령(425)은 또한 엔코딩 블록(430)에 도시된 바와같은 32 비트 엔코딩을 위한 것이고 후술된 바와같이 신택스/연산 블록(435)에 도시된 현재 바람직한 신택스/연산을 갖는다. XV 명령(425)은 규정된 SP 또는 PE VLIW 메모리(VIM)의 각 명령 슬롯들을 실행하기 위하여 사용된다. VIM 어드레스는 베이스 VIM 어드레스 레지스터 Vb(V0 또는 V1) 더하기 비트들 0 내지 7, 즉 도4B의 엔코딩 블록(430)의 비트들의 블록(431)에 도시된 부호화되지 않은 8-비트 옵셋 VIMOFFS의 합으로서 계산된다. VIM 어드레스는 하드웨어 형태를 위하여 유효 범위내에 있어야만되는데, 그렇치 않다면 이 명령의 연산은 규정되지 않는다.
각 명령 슬롯들의 임의의 조합은 실행 슬롯 파라미터 ' E = {SLAMD}'를 통해서 실행될 수 있는데, 여기서 S = 기억 장치(SU), L = 부하 장치(LU), A = 연산 논리 장치(ALU), M = 승산 - 누산 장치(MAU), D = 데이터 선택 장치(DSU)이다. 블랭크 ' E =' 파라미터는 어떠한 슬롯도 실행하지 않는다. 장치에 영향을 미치는 플래그들(UAF) 파라미터 'F = [AMDN]'은 LV 명령을 통해서 로딩될 때 VLIW에 대해 규정된 UAF를 무시(override)한다. 이 무시는 어느 연산 명령 슬롯(A = ALU, M = MAU, D = DSU) 또는 넌(N = NONE)이 VLIW의 이 실행을 위한 조건부 플래그들을 설정하도록 허용되는지를 선택한다. 이 무시는 LV 명령에 의해 규정된 UAF 설정에 영향을 미치지 않는다. 블랭크 'F ='는 VLIW가 로딩될 때 규정된 UAF를 선택한다.
조건부 플래그들은 원래의 LV 명령으로부터 F = 파라미터의 설정에 의해 규정되거나 XV 명령에서 'F=[AMD]'파라미터에 의해 무시된 바와같은 슬롯에서 각각의 단일의 명령에 의해 설정된다. 조건부 플래그들은 'F =N'일 때 영향받지 않는다. 연산은 1 사이클에서 발생한다. 파이프라인 고려상항은 실행되는 슬롯들 각각의 개개 단일의 명령들을 토대로 고려되어야만 된다. 이들 iVLIW에서 각 필드들의 설명들이 도4C 및 도4D에 도시되어 있다. 도4C 및 도4D는 명칭(442), 비트들의 수(444) 및 설명 값들(description values)(446)로 도표화된 명령 필드 정의들(440)을 도시한다. 도4E 및 도4F는 현재 바람직한 ADD 명령 및 2×2 ManArray 형태에서 3개의 동기식 MIMD iVLIW를 위한 슬롯 기억 장치를 각각 도시한다.
도4E에 도시된 ADD 명령은 또다시 엔코딩 블록(455)에 도시된 바와같은 32 비트 엔코딩을 위한 것이고 후술되는 바와같은 신택스/연산 블록(460)에서 도시된 현재 바람직한 신택스/연산을 갖는다. ADD 명령(450)은 목표 레지스터(Rt)에 소스 레지스터들(Rx및 Ry)의 합을 기억시키기 위하여 사용된다. 연산 스칼라 플래그들은 N = 합 결과인 MSB이고, 결과가 0이면 Z =1이고 그렇치 않다면 0이며, 오버플로우가 발생하는 경우 V =1이고 그렇치 않다면 0이고, 캐리가 발생하면 C = 1이고 그렇치 않다면 0인 최하위 연산시에 영향을 받는다. v 비트들은 부호화된 연산에 대하여 의미가 있고 C 비트는 부호화되지 않은 연산에 대하여 의미가 있다. 사이클의 수는 1이다.
개개, 그룹 및 ″ 동기식 MIMD″ PE iVLIW 연산(Individual, Group, and ″ Synchronous MIMD″ PE iVLIW Operations)
LV 및 XV 명령들은 프로그래머에 의해 규정된 개개 PE들 또는 PE 그룹들에서 iVLIW를 로딩, 수정, 디스에이블 또는 실행하도록 사용될 수 있다. 이를 위하여, 개객 PE들은 각 PE에 위치되는 제어 레지스터를 수정하는 명령에 의해 인에이블되거나 디스에이블되는데, 제어 레지스터는 무엇보다도 각 PE를 인에이블하거나 디스에이블 한다. 개개 PE 또는 PE들의 그룹을 로딩하고 연산하기 위하여, 제어 레지스터들은 개개 PE(s)를 인에이블하도록 수정되고 그 외 다른 모든 것들을 디스에이블하도록 수정된다. 그리고나서, 정상적인 iVLIW 명령들은 인에이블되는 PE들에 대해서만 연산할 것이다.
도5를 참조하여, iVLIW 로드 및 페치 파이프라인의 양상들은 iVLIW 시스템(500)과 관계하여 설명된다. 여러 가지 양상들 중에서, 도5는 VIM 메모리에서 명령들을 선택하는 선택 매카니즘을 도시한 것이다. 페치된 명령은 제1 명령 레지스터(IR1)(510)에 로딩된다. 레지스터(510)는 일반적으로 도2의 명령 레지스터와 대응한다. IR1의 출력은 프리디코더에서 프리디코딩되거나 제2 명령 레지스터(IR2)(514)를 로딩하기 앞서 파이프라인 사이클에서 초기에 기능(512)을 프리코딩한다. IR1에서의 명령이 로드 iVLIW 명령(LV)을 비제로 명령 카운트에 로딩할 때, 프리디코더(512)는 LVc1 제어 신호(515)를 발생시키는데, 이 신호는 LV 연산 사이클을 설정하기 위하여 사용되고 VIM 어드레스(511)는 가산기(504)에 의해 경로(503)를 통해서 LV 명령에 포함된 옵셋 값에 가산되는 규정된 Vb 레지스터(502)의 사용에 의해 계산된다. 이로인한 VIM 어드레스(511)는 레지스터(506)에 기억되고 멀티플렉서(508)를 통과하여 VIM(516)을 어드레스한다. VIM(516)은 일반적으로 도1의 VIM(106)에 대응한다. 레지스터(506)는 LV 연산동안 VIM 어드레스(507)를 유지하도록 요구된다. VIM 어드레스(511) 및 LV 제어 상태는 LV 명령 후 수신되는 명령들을 VIM(516)으로 로딩시킨다. LV가 수신되는 사이클의 끝에서, 도4A에 도시된 디스에이블 비트들(10 내지17)은 명령들을 VIM(516)에 로딩할 때 사용하기 위한 d-비트들 레지스터(518)로 로딩된다. VIM(516)에 로딩될 IR1(510)에서 다음 명령을 수신시, 적절한 제어 신호가 명령 타잎, Storec1(519), Loadc1(521), ALUc1(523) MAUc1(525), 또는 DSUc1(527)에 따라서 발생된다. 프리 디코드 기능(512)은 도4A, 도4B 및 도4E에 도시된 명령 타잎을 규정하는 그룹 비트들(비트들 30 및 31) 및 도4D 및 도4E에 도시된 단위 필드 비트들(실행 비트들을 규정하는 비트들(27 및 28))을 간단한 디코딩을 토대로 제공된다. 이 프리 디코드 단계를 사용함으로써, IR1(510)에서의 명령은 적절한 기능 장치 위치의 VIM(516)으로 로딩될 수 있다. 예를들어, 이 명령이 IR1(510)으로 수신될 때, 명령들의 LV 리스트에 포함되는 도4E의 ADD 명령에 대하여, 이 명령이 VIM(516)의 ALU 명령 슬롯(520)으로 로딩되었다는 것을 프리디코드 기능(512)에 의해 결정될 수 있다. 게다가, 이 기능적인 슬롯 위치를 위한 적절한 d-비트(531)는 이 슬롯의 비트-31로 로딩된다. 이 로딩된 비트는 원래 명령으로부터의 그룹 코드 비트 위치들중 하나의 위치를 점유한다.
IR1(510)에서 XV 명령을 수신시, VIM 어드레스(511)는 가산기(504)에 의해 경로(503)를 통해서 XV 명령에 포함되는 옵셋 값에 가산되는 규정된 Vb 레지스터(502)를 사용함으로써 계산된다. 이로인한 VIM 어드레스(507)는 멀티플렉서(508)를 통과하여 VIM을 어드레스한다. 규정된 어드레스에서의 iVLIW은 VIM(516)에서 판독되고 멀티플렉서(530, 532, 534, 536 및 538)을 통해서 IR2 레지스터(514)로 통과한다. 대안적으로 판독 VIM 액세스 타이밍 임계 경로를 최소화하기 위하여, VIM(516)의 출력은 레지스터로 래치될 수 있는데, 이 레지스터의 출력은 디코드 상태 논리에 앞서 멀티플렉서를 통과한다.
XV 명령을 실행하기 위하여, 프리디코드 XVc1 제어 신호(517)와 결합하는 IR2MUX1 제어 신호(533)는 모든 IR2 멀티플렉서들(530, 532, 534, 536 및 538)로 하여금 VIM 출력 경로들(541, 543, 545, 547 및 549)를 선택하도록 한다. 이 때에, 파이프라인(540, 542, 544, 546 및 548)의 5개의 개개 디코드 및 실행 스테이지들은 iVLIW 병렬 실행 수행성능을 제공하면서 동시에 완료된다. 단일 32-비트 명령이 PE 또는 SP에서 실행되도록 하기 위하여, 바이패스 VIM 경로(535)가 도시된다. 예를들어, 단일의 ADD 명령이 병렬 어레이 실행을 위하여 IR1(510)으로 수신될 때, 프리 디코드 기능(512)은 IR2MUX1(533) 제어 신호를 발생시키는데, 이 제어 신호는 ADD의 경우에 명령 타잎 프리디코드 신호(523)와 결합하고 XV(517) 또는 LV(515)가 없는 경우에 활성 제어 신호와 결합하여 ALU 멀티플렉서(534)로 하여금 바이패스 경로(535)를 선택하도록 한다.
ManArray가 다양한 수의 PE들로 구성될 수 있기 때문에, 도6은 도5에 도시된 시스템(500)과 같은 iVLIW 시스템의 전형적인 SIMD iVLIW 사용을 도시한 것이다. 도6에서, PE0 내지 PEJ로 번호가 매겨진 PE로 표시된 바와같은 J + 1 PE들이 존재한다. LV 코드의 부분은 3개의 명령들이 디스에이블되는 부하 장치 및 MAU 명령 슬롯들을 갖는 VIM 어드레스(27)에서 로딩된다는 것을 표시하는 도6에 도시되어 있다. 이 로딩 동작은 도4A에 도시된 신택스를 토대로한 LV 명령(601)으로부터 결정된다. 모든 PE들이 마스킹 온되면, 표시된 3개의 명령들(603,605 및 607)은 어레이내의 J + 1 PE들 각각의 VIM 어드레스에서 로딩될 것이다. 이 로딩 결과는 VIM의 적절한 실행 슬롯에 기억된 명령들, 즉 ALU 슬롯의 명령(603), DSU 슬롯의 명령(605) 및 기억 장치 슬롯의 명령(607)을 도시함으로써 도6에 표시된다.
도3, 5 및 6에 의해 커버된 상기 논의에서, VIM 로딩 시퀀스를 초기화하는 LV 명령으로부터 발생되는 VIM 슬롯 필드들의 프리디코드 기능은 다수의 비트-31 위치들이 도5에 도시된 기억된 d-비트들 (518)과 함께 기록되도록 한다는 것에 유의하라. 또한, 예를들어 도4E를 참조하면 연산 명령들에서 단위 필드 비트들(27 및 28)은 연산 명령이 어느 VIM 슬롯에 로딩되는지를 결정하는데 필요로된다는 것에 유의하라. 결국, IR1에서 명령이 특히 프리디코드 기능을 사용함으로써 VIM에서 실행 장치 슬롯과 관계될 수 있기 때문에, 그룹 비트들 및 단위 필드 비트들은 VIM에 기억될 필요가 없고 상기 논의에서 단일 d-비트를 사용함으로써 증명된 바와같은 다른 목적들을 위하여 사용될 수 있다. VIM 슬롯들에서 특정 비트 위치들은 도7에서 VIM(700)에 도시되어 있는데, 여기서, 명령 그룹 비트들중 하나의 비트, 즉 도4E의 비트(30) 및 명령 단위 필드 비트들, 즉(비트 27 및 28)은 VIM(700)에서 도7의 (721)로 라벨된 옵코드 확장자 비트-30을 위한 트랜스레이션 확장자 옵션 비트들 ″o″, (723)으로 라벨된 레지스터 파일 확장자 비트-28용 ″r″ 및 (725)로 라벨된 조건부 실행 확장자 비트-27용 ″c″로 대체된다. 이들 조건부 비트들 각각은 프로그래머가 로딩하거나 기억할 수 있는 도8A에 도시된 각양의 레지스터(850)에 각각 기억된다. 이들 비트들은 32-비트 명령 포맷에서 명령 엔토딩 비트들이 없음으로 인해 제공될 수 없는 확장된 캐퍼빌리티들을 제공한다. 옵코드 확장 비트 ″o″의 경우에, 한세트이 명령들을 새로운 세트의 명령들로 맵할 수 있다. 레지스터 확장 비트 ″r″의 경우에, 레지스터 파일 공간을 두배로 하고 부가적인 레지스터 공간을 제공하는 두뱅크의 레지스터들을 갖거나 두 개의 레지스터 뱅크들이 두 개의 컨텍스트간을 분할하도록 하는 고속 컨텍스트 스위칭 매카니즘으로서 작용한다. 조건부 실행 확장자 비트 ″c″의 경우에, 프로그래머 제어하에서 두 개의 상이한 세트들의 조건들을 규정하거나 상이한 조건부 실행 기능성을 규정할 수 있다. 도8A는 iVLIW 트랜스레이션 확장자 로드의 양상들을 나타내는 iVLIW 시스템(800) 및 o, r 및 c 비트들 레지스터(850)와 프리디코드 제어 신호들(815, 817, 819, 821, 823, 825, 827 및 833)의 세트의 가산을 도시하는 페치 파이프라인을 도시한 것이다. 이들 프리드 업 비트(freed up bits)의 다른 사용들이 가능하다는 것에 유의하라. 예를들어, 모든 3개의 비트들이 개개의 제어를 3개의 피연산자 명령들에 제공하거나 32 ×32 레지스터들의 8개의 뱅크들까지 제공하는 레지스터 파일 확장자를 위하여 사용된다.
단일 32비트 명령만이 iVLIW PE 또는 iVLIW SP에서 실행되도록 하기 위하여, 바이패스 VIM 경로(835)는 도8A에 도시된다. 예를들어, 간단한 ADD 명령들이 병렬 어레이 실행을 위하여 IR1(810)에 수신될 때, 프리디코드 기능(812)은 IR2MUX2 833 제어 신호를 발생시키는데, 이 제어 신호는 ADD의 경우에 이 명령 타잎 프리디코드 신호(823)와 결합하고 XV(817) 또는 LV(815)가 없는 경우에 활성 제어 신호와 결합하여, ALU 멀티플렉서(834)가 바이패스 경로(835)를 선택하도록 한다. 본원에 서술된 바와같이, 바이패스 동작이 파이프라인의 전체 단계동안 발생하기 때문에, 그룹 비트들 및 단위 필드 비트들이 IR2 래치 스테이지로 입력될 때 바이패스된 명령들에서 대체할 수 있다. 멀티플렉서들(830, 832, 834, 836 및 838)에 입력시에 적절한 비트 위치들을 대체하도록 사용되는 ″o, r 및 c″ 비트들 신호 경로(851)로 도8A에 표시되어 있다.
VIM iVLIW 기억을 위한 또다른 포맷들이 가능하고 기술 및 설계를 고려함에 따라서 바람직하게 될 수 있다는 점에 유의하라. 예를들어, 도8B는 도7 및 도8A에 도시된 또다른 형태의 VIM 800'을 도시한 것이다. 실행 슬롯당 d-비트들은 부가적인 비트들 ″ o, r, c 및 uaf″ 비트들과 함께 그룹화된다. 이들 10개의 비트들은 각 슬롯당 비트들 0 내지 26, 29에서 규정된 실행 장치 기능 비트들로부터 각각 그룹화된다. LV 명령들로 부터의 도4A의 장치에 영향을 미치는 필드(uaf) 비트들(22 및 23)은 ″uaf″ 비트들이 실행시에 플래그에 영향을 미치는 연산 장치에 포함되기 때문에 단일의 iVLIW VIMDJEMFPTMDPTJ 기억될 필요가 있다. 예를들어, 다른 기억 장치 포맷들은 예를들어 기능 비트들 및 각각 기억된 ″uaf″ 비트들과 같은 전체 iVLIW와 관계되는 비트들과 함께 d-비트들을 기억할 수 있다. k-슬롯 iVLIW 경우에, k*32-비트들은 반드시 VIM에 기억될 필요가 없다는 점에 또한 유의하라. 프리 디코드 기능으로 인해, k 32 비트 명령들을 기억하는 것이 필요로된다고 여겨지는 k*32 비트 공간에 부가적인 비트들이 기억될 뿐만아니라 k *32 비트 공간은 비트들의 완전한 활용이 필요치 않는 경우 감소될 수 있다. 이것이 도8B에 도시되어 있는데, 이 도면에서, VIM 어드레스당 기억 비트들의 전체 수는 필요로된다고 여겨질 수 있는 5*32 = 160 비트들 보다 10개 작은 iVLIW 어드레스당 전체 150개의 비트들에 대하여실행 유닛 슬롯 위치(0-26 및 29)당 필요로되는 28비트 더하기 5개의 d-비트들 더하기 3개의 ″ o, r 및 c″ 비트들 더하기 2개의 ″uaf″의 5배로 주어진다. VIM 메모리 공간 감소를 초래하면서 기능성이 증가된다. 일반적으로, 부가적인 정보는 실행 장치당 각각 VIM에 기억되거나 이 VIM 어드레스에 기억된 iVLIW에 걸쳐서 제어에 영향을 미치는 각각의 비트들을 분리할 수 있다. 예를들어, 16개의 부가적인 로드 인접 비트들(immediate bits)은 각각의 ″상수″ 레지스터에 기억될 수 있고 인접 데이터의 32비트들을 로딩하기 위한 부하 장치의 용량을 확장시키기 위하여 VIM 어드레스에서 로딩될 수 있다. 이 확장을 이루기 위하여, VIM 데이터 폭은 적절하게 확장되어야만 된다. 기억된 iVLIW의 크기가 다수의 명령 크기로부터 분리됨으로써 기억된 iVLIW가 필요에 따라서 k 명령 iVLIW에 대한 k*32 비트보다 크거나 작게되도록 한다.
도9 또는 도10에서 간결성을 위하여 도시되지 않았지만, 도1에서와 같이 SP 제어기(102)를 포함하는 프로세서 및 도9의 프로세서(900) 또는 도10의 프로세서(1000)와 같은 PE들의 어레이에서, PE간의 통신을 취급할때 SMIMD 연산을 수행하는 경우 문제에 부딪힐 수 있다. 전형적인 SIMD 통신 모드는 모든 PE들이 동일한 PE간 통신 명령을 실행하도록 규정한다. 각 PE에서 동일하게 되는 이 SIMD PE간 명령은 PE들간에 규정된 공통적인 연산과 일치시키기 위한 통상적인 제어 매카니즘을 필요로한다. 전형적으로, 전송 모델은 SEND-WEST와 같은 단일 명령이 어레이내의 모든 PE들에 전송되는 곳에서 사용된다. SIMD PE간 통신 명령은 PE들간의 네트워크 인터페이스의 조화된 제어가 각 PE로 하여금 데이터를 PE간 명령에 의해 지형적으로 규정된 PE에 전송하도록 한다. 모든 PE들이 동일한 명령을 수신하기 때문에 이 단일 SIMD 명령은 해석될 수 있고 네트워크 인터페이스(911)은 도9에 도시된 바와같은 단일 PE에 의해 제어될 수 있다. 도9에 도시된 ManArray 2×2 클러스터 스위치는 DSU간의 인터페이스 입력/출력(I/O) 버스들용 4개의 4-대-1 멀티플렉서들(920,922,924 및 926)으로 이루어진다. 이들 버스들은 8,9,16,32,64 또는 그 외 다른 비트 수, 즉 제한되지 않는 비트 버스들 일 수 있다. 단일의 4 대 1 멀티플렉서의 제어는 가능한 경로들중 4개의 경로에서 하나의 경로를 선택하기 위하여 단지 두 개의 제어 비트들을 필요로한다. 이것은 많은 멀티플렉서들에 필요로되는 바와같은 PE들의 많은 클러스터들을 위하여 확장될 수 있다. 도10에서, 집중화된 제어기(1010)는 네트워크에서 다른 PE들이 행하는 바와같이 SP 제어기로부터 동일한 전송된 PE간 통신 명령(1011)을 수신한다. 이 매카니즘은 네트워크 접속들이 한 사이클 마다 변경되도록 한다. SIMD 전송 모델의 두 가지 속성들은 모든 PE들 및 송신기 수신 둘다의 사양에 대한 공통 명령이다. SIMD 모드에서, 이 방식은 문제가 되지 않는다.
전송 모델을 SMIMD 모드로 확장하기 위한 시도에서, 다른 문제들이 초래될 수 있다. 한가지 문제는 각 PE가 상이한 PE간 통신 명령을 수신할 수 있기 때문에 SMIMD 모드에서 다수의 프로세싱 소자들이 데이터를 단일 PE에 전송하도록하는 모든 시도를 할 수 있다는 것이다. SIMD 전송 모델의 두가지 속성들은 즉각적으로 브레이크 다운되는데, 즉 공통 PE간 명령을 갖고 소스 및 목표, 즉 송신기 및 수신기 둘다를 규정한다. 단일 사이클 통신을 갖는 SIMD 모델에서 동일한 PE인 하나 보다 많은 PE 목표를 갖을 통신 위험이 존재한다. 이 통신 위험은 도9에 도시되어 있는데, PE들(1, 2 및 3)용 DSU들은 PE0는 PE3에 데이터를 전송하는 동안.데이터를 PEO에 전송하여야 한다. PE0로의 3개의 데이터 입력들은 수신될 수 없다. 다른 시스템들에서, 이 타잎의 문제의 해결책은 인터페이스 버퍼들 및 우선순위 제어 논리의 삽입하여 하나 또는 그보다 많은 경쟁 경로들을 지연시키는 것이다. 이것은 단일 사이클 통신 동작의 스케쥴링이 PE들에서 실행될 iVLIW 명령들의 프로그래밍 동안 행해져야 하기 때문에 원래 동기식 SMIMD 처리 특성을 반한다. 동기식 MIMD 필요조건을 위반함이 없이 통신 위험을 피하기 위하여, 수신 모델이 유용하게 사용된다. 전송 모델에 의해 손쉽게되는 단일 PE 또는 집중화된 제어 매카니즘에 위치되면, 네트워크 제어의 단일 포인트는 분산된 네트워크 인터페이스 제어를 갖는 수신 모델로 대체된다. 각 PE는 자신의 수신 포트를 제어한다. 수신 모델은 네트워크 인터페이스를 통해서 수신 경로를 규정한다. ManArray 네트워크의 경우에, 각 PE는 클러스터 스위치의 자신의 멀티플렉서 입력 경로를 제어한다.
이 장치는 도11의 2×2 어레이 프로세서(1100)을 위하여 도시되는데, 각 PE는 자신의 입력 멀티플렉서(1120, 1122, 1124 또는 1126) 각각의 제어를 갖는다. 예를들어, PE0는 자신의 입력 멀티플렉서(1120)을 제어하기 위한 제어 신호들(1111)를 갖는다. 수신 모델은 또한 데이타가 목표 PE 사양없이 인터페이스 네트워크에 PE들의 출력 포트상에서 활용될 수 있도록 할 필요가 있다. 결국, 수신 모델을 사용하는 처리 소자들간에 어떤 의미있는 통신이 발생하는 경우에, PE들은 활용가능하게 되는 데이터의 수신시에 협동하도록 프로그램되어야만 된다. 동기식 MIMD를 사용하면, 이 협동은 협동 명령들이 동일한 iVLIW 위치에 존재하는 경우에 발생하도록 보장된다. XV 명령이 실행될 때 이 명령 위치에 따라서, 협동하는 PE들은 적절한 PE간 통신 명령으로 하여금 임의 두 개 또는 그보다 많은 PE들간에서 데이터를 이동시키도록 한다. 각각의 이와같은 그룹에서, 하나 또는 그보다 많은 PE들은 또다른 PE로부터 데이터를 수신할 수 있는 한편, 또다른 그룹에선 하나 또는 그보다 많은 PE들이 상이한 PE로부터 데이터를 수신할 수 있다. 그룹은 크기면서 2개의 PE들에서 전체 어레이의 PE들로 변화할 수 있다. 도11은 설명을 쉽고 간결하게 하기 위하여 도1의 SP 제어기와 같은 SP를 도시하지 않지만, SP 기능성이 본원에 이미 참조된 미국 가출원 제60/077,457호에서 교시된 바와같은 PEO와 같은 PE와 병합되거나, 기능성을 증가시킴에 따라서 상대적으로 비용이 들지라도 이와같은 기능성이 모든 PE들에 부가될 수 있다는 것을 인지할지라도 이와같은 제어기가 포함되는 것이 바람직하다.
도4E는 2×2 ManArray 형태에서 3개의 동기식 MIMD iVLIW들의 정의(470)를 도시한 것이다. 하부 섹션(409)은 LU, MAU, ALU, DSU 및 SU 각각에 로딩되는 대응하는 명령 연상기호를 제공한다. 각 iVLIW은 두꺼운 블랙 라인들간에 4개의 로우들을 포함하는데, 한 로우는 각 PE를 위한 것이다. 도면의 최좌측 칼럼은 iVLIW가 PE iVLIW 명령 메모리(VIM)에 로딩되는 어드레스를 도시한다. 다음 칼럼은 PE 번호를 도시한다. 각 iVLIW은 각 PE를 위한 하나의 로우를 포함하며, PE들의 VIM 엔트리로 로딩되는 명령들을 도시한다. 나머지 칼럼들은 5개의 실행 장치들, 즉 부하 장치(LU), 승산-누산 장치(MAU), 연산 논리 장치(ALU), 데이터 선택 장치(DSU) 및 기억 장치(SU) 각각을 위한 명령 리스트이다.
예를들어, PE2 495에서 VIM 엔트리 번호 29는 4개의 명령들, 즉 li.p.w R3, A1 + A7, fmpy.pm. 1 fw R5, R2, R31, fadd.pa.1 fw R9, R7, R5 및 pexchg.pd. w R8, R0, 2 × 2-PE3와 함께 로딩된다. 이들 명령들은 도4FDML 최종 로우 다음에 발견되는 명령들이다. 동일한 VIM 엔트리(29)는 PE0491, PE2 493, 및 PE3 497에 대한 VIM 엔트리(29)에 대한 이들 PE들에 대응하는 로우들에 의해 도시된 바와같이 PE들 0, 1 및 3에서 상이한 명령들을 포함한다.
다음 예 1-1은 도4F에 규정된 바와같은 PE VIM을 로딩하는 명령들의 시퀀스를 도시한 것이다. PE 마스킹이 상이한 명령들을 동일한 어드레스에서의 상이한 PE VIM들로 도딩하기 위하여 사용된다는 것에 유의하라.
수행되는 전형적인 알고리즘 설명
도4F에 규정된 iVLIW들은 PE 로컬 데이터 메모리들에 기억된 변수 3×1 벡터들의 스트림과 상수 3×1 벡터의 도트 곱을 실행하도록 하는데 사용된다. 각 PE는 벡터의 한 요소를 기억한다. PE1은 x 성분을 기억하며, PE2는 y 성분을 기억하고 PE3는 z 성분을 기억한다. PE0는 성분을 전혀 기억하지 않는다. 상수 벡터는 PE 레지스터, 이 경우에, 컴퓨터 레지스터(R31)에 동일한 형대로 유지된다. 용장적인 계산들 또는 아이들 PE들을 피하기 위하여, iVLIW들은 동시에 3개의 변수 벡터들에 대하여 연산한다. PE들에 대한 벡터 성분들의 분포로 인하여, PE0가 4번째 벡터 도프 곱을 계산하도록 할 수 없다. PE0가 부가적인 알고리즘 스테이지를 위한 어떤 설정을 돌보도록 하기 위하여 대신 유용하게 사용된다. 이것은 iVLIW 로드 슬롯들에 보여질 수 있는데, 벡터 1은 iVLIW 27(상술된 바와같은 PE들을 가로지르는 성분처럼)에 로딩되며, 벡터 2는 iVLIW 28에 로딩되고 벡터 3는 iVLIW 29 (li.p.w R*, A1 +, A7)에 로딩된다. PE1은 3개의 벡터들 각각에 대한 도트 곱의 x 성분을 계산한다. PE2는 y 성분을 계산하고 PE3는 z성분(fmpy. pm. 1fw R*, R*, R31)을 계산한다. 이 때에, PE들간의 통신은 PE1에 대한 벡터 1 도트 곱의 y 성분 및 z 성분, PE2에 대한 벡터 2 도트 곱의 x 및 z 성분 및 PE3에 대한 벡터 3 도트 곱의 x 및 y 성분을 얻기 위하여 발생되어어야만 한다. 이 방식으로, 각 PE는 특정한 도트 곱 결고를 동시에 합산한다(fadd. pa. 1fw R9, R7, R*및 fadd. pa. 1 fw R10, R9, R8)이다. 그리고나서, 이들 결과들은 PE 메모리들에 기억된다(si.p.w R10, + A2, A6). 각 PE는 3번째 결과마다 계산하여 기억할 것이다. 그리고나서, 최종 결과 세트는 PE들(1, 2 및 3)으로부터 라운드 로빈 방식으로 액세스된다.
게다가, 각 PE는 자신의 도트 곱 결과를 제로(PE 레지스터 RO에 보유됨)와의 비교(fcmpLE.pa.1fw R10, R0)를 수행하고 도트 곱이 부인 경우 게산된 도트 곱의 위치에 제로(t.sii.p.w R0, A2 +, 0)를 기억시킨다. 다른 말로서, 이 비교가 R0보다 작은 R10인지를 결정한 것이 참이다. 부의 값들의 제거와 함께 도트 곱의 수행은 예를들어 3D 그래픽 장치를 위한 계산들을 고려시 사용된다.
본 발명을 실행하는 바람직한 방법 및 장치의 컨텍스트에 서술되었지만, 각종 대안적인 수행 및 변경이 당업자에게 명백할 것이다. 예를들어, 본 발명은 명령을 VIM에 로딩하는 능력을 배제하지 않고 또한 명령을 실행한다. 이 능력은 명령 포맷들 및 하드웨어 복잡도와 같은 여러 고려사항들 중에서 바람직한 프로그래밍 모델을 위하여 불필요하게 복잡하게 하는 것으로 간주된다. 결국, 로드 iVLIW 딜리미터 방식이 선택된다.

Claims (41)

  1. 간접적인 매우 긴 명령 워드(VLIW) 처리 시스템에 있어서,
    VIM 메모리 장소들 내의 슬롯들에 명령들을 기억시키는 VLIW 명령 메모리(VIM)을 갖는 제1 처리 소자(PE)와,
    명령 타잎을 규정하는 다수의 그룹 비트들 및 실행 장치 타잎을 규정하는 다수의 단위 필드 비트들을 갖는 기능 명령을 기억하는 제1 레지스터와,
    상기 다수의 그룹 비트들 및 상기 다수의 단위 필드 비트들을 디코딩하는 프리코더와,
    상기 디코딩을 토대로 VIM의 상기 슬롯들중 적절한 한 슬롯에 상기 기능 명령을 로딩시키는 로드 매카니즘을 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  2. 제1항에 있어서,
    VLIW들을 간접적인적으로 실행하기 위한 베이스 어드레스 레지스터에 대한 베이스 포인터 및 어드레스 옵셋을 포함하는 실행 VLIW 명령(XV)인 제어 명령을 더 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  3. 제1항에 있어서,
    VLIW들을 간접적인적으로 실행하기 위한 베이스 어드레스 포인터에 대한 베이스 포인터 및 어드레스 옵셋을 포함하는 로드/수정 VLIW 명령(LV)인 제어 명령을 더 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  4. 제1항에 있어서,
    상기 그룹 및 단위 필드 비트들은 보다 컴팩트한 기억을 발생시키도록 VIM에 기억되기 전 기능 명령으로부터 제거되는 간접적인 매우 긴 명령 워드 처리 시스템.
  5. 제1항에 있어서,
    상기 그룹 및 단위 필드 비트들은 상기 기능 명령으로부터 제거되고 적어도 하나의 대체 비트는 제어 명령이 VIM에 기억되기 전 상기 그룹 또는 단위 필드 비트 위치들중 한 위치에 가산되는 간접적인 매우 긴 명령 워드 처리 시스템.
  6. 제5항에 있어서,
    상기 대체 비트는 인에이블/디스에이블 비트인 간접적인 매우 긴 명령 워드 처리 시스템.
  7. 제5항에 있어서,
    상기 대체 비트는 연산 코드 확장 비트인 간접적인 매우 긴 명령 워드 처리 시스템.
  8. 제5항에 있어서,
    상기 대체 비트는 레지스터 파일 확장 비트인 간접적인 매우 긴 명령 워드 처리 시스템.
  9. 제5항에 있어서,
    상기 대체 비트는 조건부 실행 확장 비트인 간접적인 매우 긴 명령 워드 처리 시스템.
  10. 제8항에 있어서,
    다수의 실행 장치들 및 제1 및 제2 뱅크들의 레지스터들을 더 포함하고, 상기 레지스터 파일 확장 비트가 활용되며, 상기 다수의 실행 장치들은 상기 제1 뱅크의 레지스터들 또는 상기 제2 뱅크의 레지스터들로부터 판독하거나 상기 레지스터들에 기록하는 간접적인 매우 긴 명령 워드 처리 시스템.
  11. 제1항에 있어서,
    상기 기능 명령을 기억하는 제2 레지스터와, 상기 제1 레지스터의 출력을 상기 제2 레지스터의 입력에 접속시키는 바이패스 경로와, 상기 기능 명령이 VIM으로 로딩됨이 없이 상기 제1 레지스터에서 상기 제2 레지스터로 통과되는 바이패스 동작을 선택하는 선택 매카니즘을 더 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  12. 제11항에 있어서,
    하나 또는 그보다 많은 상기 그룹 비트들 및 단위 필드 비트들은 상기 제2 레지스터에 상기 제어 명령을 기억시키기 전 대체되는 간접적인 매우 긴 명령 워드 처리 시스템.
  13. 제1항에 있어서,
    네트워크 인터페이스 접속을 통해서 상기 제1 PE에 접속되는 적어도 하나의 부가적인 PE를 더 포함하고, 각 PE는 수신 포트에 접속되는 관계된 클러스터 스위치를 갖는데, 상기 수신 포트는 상기 스위치에 의해 제어되는 간접적인 매우 긴 명령 워드 처리 시스템.
  14. 제13항에 있어서,
    상기 관계된 클러스터 스위치는 PE들의 클러스터의 상기 PE들 간에 독립적인 경로들을 제공하기 위하여 상호접속된 멀티플렉서를 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  15. 제1항에 있어서,
    상기 제1 PE에 접속되는 시퀀스 프로세서(SP)를 더 포함하고 제어 명령 및 상기 기능 명령 둘다를 상기 제1 PE에 제공하며, 상기 제어 명령은 VLIW 명령(XV) 또는 로드/수정 VLIW 명령(LV)중 하나이며, 상기 XV 및 LV 명령들 둘다는 VLIW들을 간접적인적으로 실행하기 위한 베이스 포인터 및 어드레스 옵셋을 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  16. 제15항에 있어서,
    상기 SP에 접속되는 적어도 하나의 부가적인 PE를 더 구비하며, 상기 제어 명령들은 동일한 VIM 어드레스에서 상이한 VLIW들을 실행시 상기 제1 PE 및 상기 PE들이 동기식 다수의 명령 다수의 데이터 스트림(SMIMD) 기계로서 작용하도록 하는 상기 적어도 하나의 부가적인 PE 및 상기 제1 PE 둘다에 동기적으로 제공되고 그렇치 않다면 상기 PE들은 SMID 기계로서 동작하는 간접적인 매우 긴 명령 워드 처리 시스템.
  17. 제16항에 있어서,
    다수의 PE들은 상기 SP 에 접속되고 상기 다수의 PE들은 하나 또는 그보다 많은 PE들의 제1 및 제2 그룹들로 조직되는 간접적인 매우 긴 명령 워드 처리 시스템.
  18. 제17항에 있어서,
    상기 제1 그룹의 PE들은 1 사이클의 동작동안 제1 VIM 어드레스에서 VLIW 명령에 대해 간접적인적으로 연산하고 상기 제2 그룹의 PE들은 상기 동작 사이클동안 동일한 제1 VIM 어드레스에서 상이한 VLIW 명령에 대해 간접적인적으로 연산하는 간접적인 매우 긴 명령 워드 처리 시스템.
  19. 제17항에 있어서,
    상기 다수의 PE들은 각 PE가 수신 포트를 갖고 데이터가 상기 수신된 포트에서 수신되는지를 제어하는 통신 제어의 수신 모델 다음에 동작하는 간접적인 매우 긴 명령 워드 처리 시스템.
  20. 제19항에 있어서,
    각각의 PE는 상기 수신 포트에 접속되는 입력 멀티플렉서를 갖고 상기 입력 멀티플렉서를 제어함으로써 통신을 제어하는 간접적인 매우 긴 명령 워드 처리 시스템.
  21. 제19항에 있어서,
    상기 다수의 PE들은 협동하는 명령을 기억함으로써 협동하도록 프로그램되어, 다른 PE가 상기 다수의 PE들 각각에 대한 VIM의 동일한 장소에서 데이터를 활용하도록 경로를 규정하는 수신 명령을 하나의 PE가 갖는 긴 명령 워드 처리 시스템.
  22. 제17항에 있어서,
    개별적인 PE들을 마스킹 온 또는 오프하기 위한 마스킹 매카니즘을 더 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  23. 제22항에 있어서,
    마스킹 온된 PE들에 대한 VIM들은 로딩되고 마스킹 오프된 PE들에 대한 VIM들은 로드 VLIW 연산동안 로딩되지 않는 간접적인 매우 긴 명령 워드 처리 시스템.
  24. 제17항에 있어서,
    상이한 PE들은 동일한 사이클동안 상이한 VLIW들을 실행하는 간접적인 매우 긴 명령 워드 처리 시스템.
  25. 제1항에 있어서,
    상기 VIM은 다음 타잎의 기능 명령들, 즉 기억 장치 명령들, 부하 장치 명령들, 연산 논리 장치 명령들, 승산-누산 장치 명령들 또는 데이터 선택 장치 명령들을 기억하기 위한 슬롯들을 포함하는 간접적인 매우 긴 명령 워드 처리 시스템.
  26. 제25항에 있어서,
    다수의 PE들이 사용되고 VLIW 슬롯 또는 슬롯들은 PE가 동일한 사이클에서 동시에 여러 가지 작업들에 대해 다수의 연산들을 수행하도록 여러 가지 작업들과 관계되는 간접적인 매우 긴 명령 워드 처리 시스템.
  27. 매우 긴 명령 워드(VLIW) 프로세싱 시스템에 있어서,
    규정된 VIM 어드레스에서의 슬롯들에 VLIW들을 기억시키는 VLIW 메모리(VIM)을 갖는 제1 처리 소자(PE)와,
    제어 및 기능 명령들 둘다를 기억하는 제1 레지스터와,
    다수의 그룹 비트들을 디코딩함으로써 상기 제어 및 기능 명령들간을 구별하는 프리디코더와,
    상기 제어 명령의 상기 디코딩을 토대로 VIM의 상기 슬롯들중 적절한 하나의 슬롯에 상기 기능 명령들을 로딩시키는 로드 매카니즘을 포함하는 매우 긴 명령 워드(VLIW) 처리 시스템.
  28. 제27항에 있어서,
    LV 딜리미터(delimiter)에 규정된 상기 VIM의 VIM 어드레스로 로딩될 명령들의 시퀀스보다 앞서있는 로드 VLIW(LV) 딜리미터를 상기 PE에 전달하는 시퀀스 프로세서(SP) 제어기를 더 포함하는 매우 긴 명령 워드(VLIW) 처리 시스템.
  29. 적어도 두 개의 프로세싱 소자를 갖는 단일 명령 다수 데이터 스트림(SIMD) 기계에 있어서,
    상기 SIMD 기계의 각 PE는 실행 VLIW(XV) 명령 및 동일한 VIM 어드레스의 PE들에 기억된 상이한 VLIW 명령에 의해 초기화된 간접적인 실행으로 VLIW 메모리(VIM)에 기억된 VLIW 명령들을 연산하는 단일 명령 다수 데이터 스트림(SIMD) 기계.
  30. 제29항에 있어서,
    상기 XV 명령은 VLIW들을 간접적인적으로 실행하기 위한 PE들 각각에 대한 베이스 어드레스 레지스터에 대한 포인터 및 옵셋 어드레스를 포함하는 단일 명령 다수 데이터 스트림(SIMD) 기계.
  31. 제29항에 있어서,
    상기 명령들은 로딩 처리를 설정하고 다수의 PE들의 VIM들로 수신될 때 상기 명령들을 로딩시키는 로드 제어 명령(LV)를 활용하는 다수의 PE VIM들에 기억되는 단일 명령 다수 데이터 스트림(SIMD) 기계.
  32. 제30항에 있어서,
    SIMD 시퀀스 프로세서(SP) 제어기를 더 포함하는데, 상기 제어 명령들 XV 및 LV는 상기 SIMD SP 제어기에 의해 상기 PE들에 전달되는 단일 명령 다수 데이터 스트림(SIMD) 기계.
  33. 간접적인 매우 긴 명령 워드(VLIW) 처리 방법에 있어서,
    제1 처리 소자(PE)의 VLIW 명령 메모리(VIM)에 기억될 제1 VLIW 기능 명령을 페치하는 단계로서, 상기 VLIW 기능 명령은 명령 타잎을 규정하는 다수의 그룹 비트들을 갖고 다수의 단위 필드 비트들은 실행 유닛 타잎을 규정하는, 상기 페치 단계와,
    상기 제1 기능 명령을 제 1 레지스터에 기억시키는 단계와,
    프리디코더를 활용하는 상기 다수의 그룹 비트들 및 상기 다수의 단위 필드 비트들을 디코딩하는 단계와,
    상기 디코딩을 토대로 상기 VIM에 대한 로드 매카니즘으로 적절한 어드레스에서의 상기 VIM에 상기 기능 명령을 로딩시키는 단계를 포함하는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  34. 제33항에 있어서,
    VLIW들을 간접적인적으로 실행하기 위하여 베이스 어드레스 레지스터에 대한 베이스 포인터 및 어드레스 옵셋을 포함하는 실행 VLIW 명령(XV)인 제어 명령을 수신하는 단계를 더 포함하는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  35. 제33항에 있어서,
    VLIW들을 간접적인적으로 실행하기 위하여 베이스 어드레스 레지스터에 대한 베이스 포인터 및 어드레스 옵셋을 포함하는 로드/수정 VLIW 명령(LV)인 제어 명령을 수신하는 단계를 더 포함하는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  36. 제33항에 있어서,
    보다 컴팩트한 기억이 발생하도록 VIM에 기억되기 전 명령 기능으로부터 상기 그룹 및 단위 필드 비트들을 제거하는 단계를 더 포함하는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  37. 제33항에 있어서,
    상기 기능 명령으로부터 사기 그룹 및 단위 필드 비트들을 제거하고 상기 제어 명령이 VIM에 기억되기 전 상기 그룹 또는 단위 필드 비트 위치들중 하나에 적어도 하나의 대체 비트를 가산하는 단계를 더 포함하는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  38. 제33항에 있어서,
    바이패스 명령을 수신하고 VIM으로 로딩함이 없이 상기 제1 VLIW 기능 명령을 제2 레지스터에 기억시키는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  39. 제33항에 있어서,
    제어 명령 및 상기 기능 명령 둘다를 상기 제1 PE에 수신하는 단계를 더 포함하며, 상기 제어 명령은 실행 VLIW 명령(XV) 또는 로드/수정 VLIW 명령(LV)중 하나이며, 상기 XV 및 LV 명령들 둘다는 상기 제1 PE에 접속된 시퀀스 프로세서(SP)로부터 VLIW들을 간접적인적으로 실행하기 위한 베이스 포인터 및 어드레스 옵셋을 포함하는 간접적인 매우 긴 명령 워드(VLIW) 처리 방법.
  40. 매우 긴 명령 워드(VLIW) 처리 방법에 있어서,
    규정된 VIM 어드레스에서의 슬롯들에 VLIW 명령들을 기억시키기 위하여 제1 처리 소자(PE)의 VLIW 메모리(VIM)에 기억될 기능 명령들을 페치하는 단계와,
    제1 레지스터에 상기 제1 기능 명령들 및 제어 명령들을 기억시키는 단계와,
    상기 제어 및 기능 명령들간을 구별하기 위하여 프리디코더를 활용하는 다수의 그룹 비트들을 디코딩하는 단계와,
    상기 제어 명령의 상기 디코딩을 토대로 VIM의 상기 슬롯들중 적절한 하나의 슬롯에 상기 기능 명령들을 로딩하는 단계를 포함하는 매우 긴 명령 워드(VLIW) 처리 방법.
  41. 제38항에 있어서,
    LV 딜리미터에 규정된 상기 VIM의 VIM 어드레스로 로딩될 명령들의 시퀀스보다 앞서 있는 로드 VLIW(LV) 딜리미터를 시퀀스 프로세서(SP) 제어기로부터 수신하는 단계를 더 포함하는 매우 긴 명령 워드(VLIW) 처리 방법.
KR1020007004975A 1997-11-07 1998-11-06 iVLIW PE 대 PE 통신으로 효율적인 동기식MIMD 연산을 위한 방법 및 장치 KR20010031884A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US6461997P 1997-11-07 1997-11-07
US60/064,619 1997-11-07
PCT/US1998/023650 WO1999024903A1 (en) 1997-11-07 1998-11-06 METHODS AND APPARATUS FOR EFFICIENT SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-to-PE COMMUNICATION

Publications (1)

Publication Number Publication Date
KR20010031884A true KR20010031884A (ko) 2001-04-16

Family

ID=22057176

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007004975A KR20010031884A (ko) 1997-11-07 1998-11-06 iVLIW PE 대 PE 통신으로 효율적인 동기식MIMD 연산을 위한 방법 및 장치

Country Status (10)

Country Link
US (3) US6151668A (ko)
EP (1) EP1029266B1 (ko)
JP (1) JP4156794B2 (ko)
KR (1) KR20010031884A (ko)
CN (1) CN100380313C (ko)
AT (1) ATE362623T1 (ko)
CA (1) CA2310584A1 (ko)
DE (1) DE69837791T2 (ko)
IL (1) IL135953A0 (ko)
WO (1) WO1999024903A1 (ko)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6798834B1 (en) 1996-08-15 2004-09-28 Mitsubishi Denki Kabushiki Kaisha Image coding apparatus with segment classification and segmentation-type motion prediction circuit
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
US6356994B1 (en) * 1998-07-09 2002-03-12 Bops, Incorporated Methods and apparatus for instruction addressing in indirect VLIW processors
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6826522B1 (en) * 1999-06-21 2004-11-30 Pts Corporation Methods and apparatus for improved efficiency in pipeline simulation and emulation
US6748517B1 (en) * 1999-06-22 2004-06-08 Pts Corporation Constructing database representing manifold array architecture instruction set for use in support tool code creation
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
JP3971535B2 (ja) * 1999-09-10 2007-09-05 株式会社リコー Simd型プロセッサ
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US20020010810A1 (en) * 2000-03-01 2002-01-24 Ming-Kang Liu xDSL function ASIC processor & method of operation
RU2158319C1 (ru) * 2000-04-25 2000-10-27 Институт металлургии и материаловедения им. А.А. Байкова РАН Высокопрочная коррозионно- и износостойкая аустенитная сталь
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
JP4502532B2 (ja) * 2001-02-23 2010-07-14 株式会社ルネサステクノロジ データ処理装置
US20030090190A1 (en) 2001-06-14 2003-05-15 Hyperion Catalysis International, Inc. Field emission devices using modified carbon nanotubes
GB2382886B (en) * 2001-10-31 2006-03-15 Alphamosaic Ltd Vector processing system
US7398374B2 (en) * 2002-02-27 2008-07-08 Hewlett-Packard Development Company, L.P. Multi-cluster processor for processing instructions of one or more instruction threads
WO2003084243A1 (en) 2002-03-28 2003-10-09 Sony Corporation Image compression/encoding device, method, and program
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
JP4570962B2 (ja) * 2002-12-30 2010-10-27 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理システム
WO2004090716A1 (en) * 2003-04-07 2004-10-21 Koninklijke Philips Electronics N.V. Data processing system with clustered ilp processor
US7725681B2 (en) * 2003-08-15 2010-05-25 Nxp B.V. Parallel processing array
US20050216700A1 (en) * 2004-03-26 2005-09-29 Hooman Honary Reconfigurable parallelism architecture
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
JP5240424B2 (ja) * 2004-11-05 2013-07-17 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
US7493474B1 (en) * 2004-11-10 2009-02-17 Altera Corporation Methods and apparatus for transforming, loading, and executing super-set instructions
KR100636596B1 (ko) * 2004-11-25 2006-10-23 한국전자통신연구원 고에너지 효율 병렬 처리 데이터 패스 구조
US7912311B2 (en) * 2005-03-21 2011-03-22 Intel Corporation Techniques to filter media signals
WO2006123822A1 (ja) * 2005-05-20 2006-11-23 Sony Corporation 信号処理装置
US7634637B1 (en) * 2005-12-16 2009-12-15 Nvidia Corporation Execution of parallel groups of threads with per-instruction serialization
US8077174B2 (en) 2005-12-16 2011-12-13 Nvidia Corporation Hierarchical processor array
US20080046684A1 (en) * 2006-08-17 2008-02-21 International Business Machines Corporation Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US7797514B2 (en) * 2006-11-16 2010-09-14 Texas Instruments Incorporated Scalable multi-threaded sequencing/synchronizing processor architecture
US9354890B1 (en) 2007-10-23 2016-05-31 Marvell International Ltd. Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
US8261025B2 (en) * 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8095775B1 (en) * 2007-11-21 2012-01-10 Marvell International Ltd. Instruction pointers in very long instruction words
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US7917703B2 (en) * 2007-12-13 2011-03-29 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8473667B2 (en) 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US7841436B2 (en) 2008-01-21 2010-11-30 Amigo Mobility International Personal mobility vehicle
US8018466B2 (en) * 2008-02-12 2011-09-13 International Business Machines Corporation Graphics rendering on a network on chip
US8490110B2 (en) 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US7913010B2 (en) * 2008-02-15 2011-03-22 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US8103853B2 (en) * 2008-03-05 2012-01-24 The Boeing Company Intelligent fabric system on a chip
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8078850B2 (en) * 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
KR100960148B1 (ko) * 2008-05-07 2010-05-27 한국전자통신연구원 데이터 프로세싱 회로
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US7861065B2 (en) * 2008-05-09 2010-12-28 International Business Machines Corporation Preferential dispatching of computer program instructions
US7991978B2 (en) * 2008-05-09 2011-08-02 International Business Machines Corporation Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US7958340B2 (en) * 2008-05-09 2011-06-07 International Business Machines Corporation Monitoring software pipeline performance on a network on chip
US8494833B2 (en) 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US8392664B2 (en) 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
US8214845B2 (en) 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8230179B2 (en) 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
JP2010039625A (ja) * 2008-08-01 2010-02-18 Renesas Technology Corp 並列演算装置
US8195884B2 (en) * 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
WO2011094346A1 (en) * 2010-01-26 2011-08-04 Hobbs Barry L Integrated concurrent multi-standard encoder, decoder and transcoder
US9582443B1 (en) 2010-02-12 2017-02-28 Marvell International Ltd. Serial control channel processor for executing time-based instructions
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US8884920B1 (en) 2011-05-25 2014-11-11 Marvell International Ltd. Programmatic sensing of capacitive sensors
US9098694B1 (en) 2011-07-06 2015-08-04 Marvell International Ltd. Clone-resistant logic
US9069553B2 (en) 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
CN112230995B (zh) * 2020-10-13 2024-04-09 广东省新一代通信与网络创新研究院 一种指令的生成方法、装置以及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0740252B2 (ja) * 1986-03-08 1995-05-01 株式会社日立製作所 マルチプロセツサシステム
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US6002880A (en) * 1992-12-29 1999-12-14 Philips Electronics North America Corporation VLIW processor with less instruction issue slots than functional units
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5680597A (en) * 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US5659785A (en) * 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
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
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths

Also Published As

Publication number Publication date
WO1999024903A1 (en) 1999-05-20
EP1029266A4 (en) 2005-08-17
US6446191B1 (en) 2002-09-03
JP4156794B2 (ja) 2008-09-24
IL135953A0 (en) 2001-05-20
CN1278342A (zh) 2000-12-27
JP2001523023A (ja) 2001-11-20
CA2310584A1 (en) 1999-05-20
DE69837791T2 (de) 2007-10-18
CN100380313C (zh) 2008-04-09
EP1029266A1 (en) 2000-08-23
US6151668A (en) 2000-11-21
USRE41703E1 (en) 2010-09-14
ATE362623T1 (de) 2007-06-15
DE69837791D1 (de) 2007-06-28
EP1029266B1 (en) 2007-05-16

Similar Documents

Publication Publication Date Title
KR20010031884A (ko) iVLIW PE 대 PE 통신으로 효율적인 동기식MIMD 연산을 위한 방법 및 장치
US7100026B2 (en) System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6356994B1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
US6851041B2 (en) Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6366998B1 (en) Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6219775B1 (en) Massively parallel computer including auxiliary vector processor
US5203002A (en) System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
EP0314277B1 (en) Simd array processor
US6128720A (en) Distributed processing array with component processors performing customized interpretation of instructions
US6366999B1 (en) Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6301653B1 (en) Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
JPH0922404A (ja) 同報通信プロセッサ命令を備えたアレイ・プロセッサ通信アーキテクチャ
WO2000022535A1 (en) Methods and apparatus for dynamically merging an array controller with an array processing element
US6269435B1 (en) System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US20050055539A1 (en) Methods and apparatus for general deferred execution processors
MXPA00003803A (en) METHODS AND APPARATUS FOR EFFICIENT SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-to-PE COMMUNICATION

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid