KR19980703033A - 프로세서 - Google Patents

프로세서 Download PDF

Info

Publication number
KR19980703033A
KR19980703033A KR1019970706441A KR19970706441A KR19980703033A KR 19980703033 A KR19980703033 A KR 19980703033A KR 1019970706441 A KR1019970706441 A KR 1019970706441A KR 19970706441 A KR19970706441 A KR 19970706441A KR 19980703033 A KR19980703033 A KR 19980703033A
Authority
KR
South Korea
Prior art keywords
field
calculation
command
code
information
Prior art date
Application number
KR1019970706441A
Other languages
English (en)
Other versions
KR100325658B1 (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 KR19980703033A publication Critical patent/KR19980703033A/ko
Application granted granted Critical
Publication of KR100325658B1 publication Critical patent/KR100325658B1/ko

Links

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/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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
    • 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]

Landscapes

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

Abstract

디지탈 애니메이션이나 3차원 그래픽과 같은 멀티미디어 처리에 적합한 프로세서에 관한 것으로서, 코드크기를 축소함과 동시에 성능의 향상을 위해 처리의 병렬계산을 증가시킨 구조를 갖는 프로세서를 제공하기 위해, 명령코드를 저장하는 메모리, 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드유지수단 및 명령코드유지수단에 유지된 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서, 메모리에 저장된 명령코드내에 여러개의 계산유닛에서의 계산의 실행을 명령하는 특정정보를 마련하고, 명령코드에 의해 특정된 여러개의 계산부를 결정하도록 특정정보를 분석하고 명령코드를 여러개의 특정된 계산유닛에 입력하기 위해서 분석수단이 마련되며, 여러개의 계산유닛의 각종 계산을 단일명령코드에 의해 제어한다.
이렇게 하는 것에 의해, 멀티미디어 처리와 동일한 계산을 각각 실행하는 병렬 프로세서를 위한 명령코드의 양을 효율적으로 저감시킬 수 있고, 계산유닛설계 단계의 수를 저감할 수 있음과 동시에, 계산유닛의 수를 증가시키는 것에 의해서만 병렬계산을 실행할 수 있으므로 하드웨어에서의 실행을 간략화할 수 있다는 효과가 얻어진다.

Description

프로세서
최근, 대부분의 퍼스널컴퓨터 및 워크스테이션은 점점 멀티미디어 겸용식으로 제작되고 있다. 멀티미디어가 요구되는 용량은 주로 동화상의 압축과 확장, 음성의 압축과 확장, 3차원 그래픽 처리 및 각종 인식처리를 포함한다. 음성처리 등에 대해서 종래에는 수십개의 MOPS의 성능을 갖는 DSP(디지탈신호 처리장치)가 사용되고 있었다. 그러나, 동화상이나 그래픽의 처리에는 매우 높은 성능의 프로세서가 필요로 된다. 예를 들면, 동화상의 확장에는 2GOPS정도의 성능이 요구되고, 동화상의 압축에는 50GOPS정도의 성능이 요구된다. 이러한 성능요구를 만족시키기 위해서는 계산유닛의 성능을 향상시켜야 한다. 계산유닛의 성능은 연산빈도의 증가 및 병렬계산의 2가지 방식으로 높일 수 있다.
전자는 비교적 간단하게 달성할 수 있지만, 일괄설계의 문제점이 증가하므로 비용이 상승하게 된다. 적당한 비용으로 성능을 실행하기 위해서는 후자의 해결방법도 필요하게 된다. 그러나, 병렬계산방식은 병렬계산을 위해 응용이 준비되어 있는가와 여러개의 계산유닛을 효과적으로 사용하기 위한 제어가 복잡하다는 문제점이 있다. 응용에 관해서는 멀티미디어가 관련된 이상 매우 높은 병렬계산이 된다. 예를들면, 동화상 압축에 있어서 8개의 계산동작은 동시에 실행할 수 있어야 한다.
여러개의 계산유닛을 양호하게 사용하기 위한 방식은 슈퍼스칼라 구조 및 VLIW(Very Long Instruction Word)를 포함한다. 전자는 주로 일반용 프로세서에서 사용되며, 각종 계산동작을 동시에 실행하기 위한 스케쥴링(scheduling)은 이들 프로세서에 의해 실행된다. 이 방식은 헌존하는 단일처리프로세서와의 호환성을 갖는다는 이점이 있지만, 스케쥴링이 프로세서에 의해 동적으로 실행되기 때문에 코스트에 있어서 매우 복잡한 하드웨어로 된다. 한편, VLIW는 현존하는 프로세서와의 호환성 면에서는 문제점을 갖지만, 명령 디코더를 필요로 하지 않으므로 그의 하드웨어가 단순하다는 이점이 있다.
VLIW하드웨어 단순화의 한가지 포인트는 그의 명령포맷에 있다. 이 명령포맷은 계산유닛을 직접 제어하기 위한 필드로 이루어져 하드웨어에 의한 제어를 매우 단순하게 한다. 이러한 명령포맷을 갖는 프로세서는 예를들면 일본국 특허공개공보 소화63-98733 컴퓨터회로 제어방법에 개시되어 있다. 이 문헌에 있어서는 계산을 위한 마이크로 명령을 나타내는 연산필드는 계산을 위한 명령을 갖고, 계산회로를 제어하기 위한 여러개의 제어비트가 마련되며, 이들 각 제어비트에 의해서 계산회로의 각부를 직접 제어한다. 따라서, VLIW는 병렬처리를 비교적 간단한 하드웨어에 의해 실행할 수 있다.
상술한 바와 같이, 슈퍼스칼라 구조와 VLIW는 성능을 증가시키기 위해 처리를 병렬로 향상시키는 실행수단을 마련한다.
전체적으로 병렬계산을 실행하기 위해서, 콤파일러의 절반은 독립되어 있다. 구체적으로는 루프확장과 같은 기술이 알려져 있다. 이 기술에 있어서는 프로그램의 루프본체가 여러회 복제(확장)되고, 확장된 루프내의 코드가 스케쥴된다. 즉, 루프복귀분기 사이에서 실행되는 명령의 수가 증가하면 여러개의 명령을 동시에 실행할 가능성이 증가한다.
상술한 기술에서는 루프를 복제하기 때문에 코드크기가 증가하는 문제점이 생긴다. 코드크기가 커지면 프로그램이 저장되는 메모리용량을 증대시킬 필요가 있고, 그 결과 시스템 비용이 증가하게 된다. 캐시메모리를 공유하는 프로세서에 있어서는 증대된 코드크기가 히트율을 저하시키므로, 시스템성능이 떨어진다.
프로세서의 병렬계산이 증가하면 계산유닛의 수가 늘어난다. 이것은 회로규모를 증대시키게 되므로, 개발단계수가 증가하게 된다. 컴퓨터시장에서는 주로 퍼스널컴퓨터가 지배적이며, 시장으로의 적시의 새로운 상품 도입은 비지니스에 있어서 중요하다. 이러한 요구를 만족시키기 위해서, 개발단계수를 저감하는 것이 중요하다.
본 발명의 목적은 코드크기를 축소함과 동시에 성능의 향상을 위해 처리의 병렬계산을 증가시킨 구조를 갖는 프로세서를 제공하는 것이다.
본 발명의 다른 목적은 적은 수의 명령코드로 많은 계산동작을 실행할 수 있는 프로세서를 제공하는 것이다.
본 발명의 다른 목적은 정적 스케쥴링에 따른 VLIW프로세서를 제공하는 것이다.
본 발명의 다른 목적은 각종 응용에 적합하고 또한 계산유닛의 연산율이 증가한 VLIW프로세서를 제공하는 것이다.
본 발명의 또 다른 목적은 멀티미디어 처리와 동일 종류의 계산동작을 반복해서 실행하는 병렬프로세서의 명령코드량을 저감하는데 효과적인 멀티미디어 처리에 적합한 프로세서를 제공하는 것이다.
본 발명의 또 다른 목적은 코드크기를 저감하는데 효과적인 슈퍼스칼라 프로세서를 제공하는 것이다.
본 발명의 또 다른 목적은 처리의 병렬계산을 증가시킴과 동시에 개발단계수를 저감할 수 있는 프로세서 구조를 제공하는 것이다.
본 발명은 디지탈 애니메이션이나 3차원 그래픽과 같은 멀티미디어 처리에 적합한 프로세서에 관한 것으로서, 특히 작은 코드크기로 또한 고밀도의 병렬계산의 처리를 실행하기 위한 처리에 관한 것이다.
도 1은 본 발명의 제1의 실시예로서 실행된 프로세서를 나타내는 블럭도,
도 2는 프로세서의 명령포맷을 나타내는 도면,
도 3은 명령메모리(1)로 프로그램을 저장하는 예를 나타내는 도면,
도 4는 헤더의 포맷을 나타내는 도면,
도 5는 특정명령코드의 예를 나타내는 도면,
도 6은 특정명령코드의 예를 나타내는 도면,
도 7은 명령확장회로(2)를 상세하게 나타낸 블럭도,
도 8은 필드콘트롤러(42)를 상세하게 나타낸 블럭도,
도 9는 프로그램의 예를 나타내는 도면,
도 10은 프로그램의 동작 흐름을 나타내는 도면,
도 11은 헤드분석기(60)을 상세하게 나타낸 블럭도,
도 12는 부분 라이트 콘트롤러(62)을 상세하게 나타낸 블럭도,
도 13은 어드레스 콘트롤러(61)을 상세하게 나타낸 블럭도,
도 14는 선택신호 발생기(63)을 상세하게 나타낸 블럭도,
도 15는 오프셋 발생회로(120)을 상세하게 나타내는 블럭도,
도 16은 SIMD콘트롤러(46)을 상세하게 나타내는 블럭도,
도 17은 본 발명의 제2의 실시예로서 실행된 프로세서를 나타내는 블럭도,
도 18은 제2의 실시예를 지시하는 명령 포맷을 나타내는 도면,
도 19는 명령확장회로(200)을 상세하게 나타낸 블럭도,
도 20은 필드 콘트롤러(201)을 상세하게 나타낸 블럭도,
도 21은 동기화기(210)을 상세하게 나타낸 블럭도,
도 22는 선택신호 발생기(63)을 상세하게 나타낸 블럭도,
도 23은 본 발명의 제3의 실시예로서 실행된 프로세서를 나타내는 도면,
도 24는 제3의 실시예를 지시하는 명령포맷을 나타내는 도면,
도 25는 명령확장회로(241)을 상세하게 나타낸 블럭도,
도 26은 레지스터 조정기(250)의 능력을 이행하기 위한 진리표를 나타내는 도면,
도 27은 본 발명의 제4의 실시예로서 실행된 프로세서를 나타내는 블럭도,
도 28은 제4의 실시예를 지시하는 명령포맷을 나타내는 도면,
도 29는 명령확장회로(260)을 상세하게 나타낸 블럭도,
도 30은 본 발명과 관련된 IFG계산 유닛의 1실시예를 나타내는 구성도.
상기 제1의 문제점을 해결하기 위해서, 본 발명에 있어서는 가능한 멀티미디어 처리와 관련하여 동일종류의 여러가지 계산이 동시에 자주 실행되도록 하고, 명령포맷에 있어서 단일명령으로 여러개의 계산부를 제어하기 위한 모드정보를 준비한다.
예를들면, 단일명령으로 여러가지 계산을 여러개의 계산부에 의해 실행하기 위해서, 1개의 명령이 계산부를 제어하기 위한 여러개의 필드로 구성되는 VLIW프로세서에 있어서 여러개의 계산부를 제어하기 위한 모드정보를 1개의 필드에 마련한다. 또, 1개의 명령으로 1개의 필드에서 여러개의 필드를 생성하기 위한 명령확장회로가 마련되고, 상기 여러개의 계산부는 동일기능을 갖는 여러개의 계산부를 배치하는 것에 의해 구성된다.
슈퍼스칼라 프로세서에 있어서는 여러개의 계산부를 동시에 제어하기 위한 모드정보가 1개의 명령에 마련된다. 또, 1개의 명령에서 여러개의 명령을 생성하기 위한 명령확장회로가 마련되고, 동일기능을 갖는 여러개의 계산부는 생성되는 여러개의 명령을 동시에 실행할 수 있도록 배치된다.
3개 이상의 계산부를 갖는 프로세서에 있어서는 동시에 실행될 계산부를 특정하기 위한 특정정보가 마련되고, 상기 명령확장회로에는 VLIW프로세서를 위해 필요한 명령필드의 수를 발생하고 또 상기 특정정보에 따라서 슈퍼스칼라 프로세서용 명령을 발생하는 기능이 구비되어 있다.
상기 제2의 문제점을 해결하기 위해서, 본 발명에 있어서는 동일기능의 여러가지 계산을 동시에 실행하는 계산부로 구성된 여러개의 계산유닛, 메모리에서 상기 계산부로 공급되는 오퍼랜드를 주로 리드하는 정수계산부 및 상기 2가지 종류의 계산부에서 사용되는 오퍼랜드를 저장하는 레지스터파일을 마련한다.
즉, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서, 상기 메모리에 저장된 명령코드내에 여러개의 계산유닛에서의 계산의 실행을 명령하는 특정정보를 마련하고, 상기 명령코드에 의해 특정된 여러개의 계산부를 결정하도록 상기 특정정보를 분석하고 상기 명령코드를 상기 여러개의 특정된 계산유닛에 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛의 각종 계산을 단일명령코드에 의해 제어한다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서, 상기 메모리에 저장된 명령코드내에 여러개의 계산유닛에서 계산의 실행을 명령하는 특정정보를 마련하고, 상기 명령코드에 의해 특정된 여러개의 계산부를 결정하도록 상기 특정정보를 분석하고 상기 명령코드를 상기 여러개의 특정된 계산유닛에 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛에서 상기 여러개의 명령과 동일한 계산을 단일명령코드에 의해 실행한다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서, 계산종류와 오퍼랜드를 나타내는 ope 코드에 부가해서, 특정정보로서 실행모드를 특정하는 필드가 상기 메모리에 저장된 상기 명령코드내에 마련되고, 상기 필드를 분석하고 실행모드가 여러개의 계산유닛에서 인에이블되는 명령의 ope 코드와 오퍼랜드를 적어도 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛에서 동일종류의 계산을 실행한다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서, 계산종류와 오퍼랜드를 나타내는 ope 코드에 부가해서, 특정정보로서 실행모드를 특정하는 필드와 상기 계산유닛을 특정하는 계산유닛 특정필드가 상기 메모리에 저장된 상기 명령코드에 마련되고, 상기 필드를 분석하고 실행모드가 상기 계산유닛 특정필드에서 특정된 계산유닛에서 인에이블되는 명령의 ope 코드와 오퍼랜드를 적어도 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛에서 동일종류의 특정계산을 실행한다.
또, 본 발명은 상기 프로세서에 있어서 상기 여러개의 계산유닛의 각각이 유일한 레지스터파일을 갖고 있다. 또, 본 발명은 상기 프로세서에 있어서 상기 여러개의 계산유닛의 각각은 유일한 레지스터파일을 갖고, 상기 오퍼랜드필드는 상기 여러개의 계산유닛의 각각에서 서로 다른 계산데이타를 형성하도록 유일한 레지스터파일의 레지스터 특정을 상기 여러개의 계산유닛의 각각에서 실행한다.
또한, 본 발명에 의한 상기 프로세서에 있어서는 상기 여러개의 계산부의 각각이 레지스터파일을 공통으로 갖고 있다.
또, 본 발명은 상기 프로세서에 있어서 상기 여러개의 계산유닛의 각각은 공통의 레지스터파일을 갖고, 상기 레지스터파일에서 레지스터수를 특정하는 오퍼랜드필드를 갖고, 특정될 상기 계산유닛의 유일한 오프셋값을 상기 오퍼랜드 필드의 값에 부가하여, 다른 레지스터를 유용화할 수 있고, 다른 종류의 데이타를 계산할 수 있다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드유지수단 및 여러개의 계산유닛을 갖는 프로세서로서, 상기 명령코드는 상기 여러개의 계산유닛에 따라 여러개의 필드로 구성되고, 여러개의 계산유닛을 제어하는 제어정보와 대응하는 계산유닛으로 특정하기 위한 각각의 필드에 대한 필드정보가 이 명령코드의 임의의 하나의 필드에 마련되고, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 필드정보와 상기 제어정보를 분석하고 상기 필드를 상기 식별된 계산유닛에 입력하기 위해 분석수단이 마련되고, 상기 명령코드내의 하나의 필드가 여러개의 계산유닛을 제어하여 상기 계산보다 작은 필드수로 구성된 짧은 명령코드로 여러개의 계산을 실행한다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드유지수단 및 여러개의 계산유닛을 갖는 프로세서로서, 상기 명령코드는 상기 여러개의 계산유닛에 따라 여러개의 필드로 구성되고, 이 명령코드내의 임의의 하나의 필드를 지정하는 제어정보는 상기 여러개의 계산유닛을 제어하고, 상기 명령코드내에 존재하는 필드의 수를 지정하는 헤더정보는 상기 메모리에 미리 저장되고, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 헤더정보와 상기 제어정보를 분석하고 상기 필드를 상기 식별된 계산유닛에 입력하기 위해 분석수단이 마련되고, 상기 명령코드내의 하나의 필드가 여러개의 계산유닛을 제어하여 상기 헤더정보의 사용에 의해 작은수의 필드로 구성된 짧은 명령코드로 여러개의 계산을 실행한다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드유지수단과 상기 명령코드 유지수단에 유지된 정보에 의해 제어되는 적어도 하나의 계산부와 상기 계산부의 오퍼랜드 정보를 저장하는 레지스터파일로 구성되는 여러개의 계산유닛을 갖는 프로세서로서, 상기 명령코드는 상기 계산유닛의 수에 따라 여러개의 필드로 구성되고, 상기 하나의 명령코드는 여러개의 계산유닛을 동작시키며, 동일기능을 갖는 적어도 하나의 계산부가 상기 모든 계산유닛에 마련되어, 모든 계산유닛의 각각은 동일계산을 실행한다.
또, 본 발명은 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드 유지수단, 상기 명령코드 유지수단에 유지된 정보에 의해 제어되는 적어도 하나의 계산부와 상기 계산부의 오퍼랜드정보를 저장하는 레지스터파일로 구성되는 여러개의 계산유닛을 갖는 프로세서로서, 상기 명령코드는 상기 계산유닛의 수에 따라 여러개의 필드로 구성되고, 상기 하나의 명령코드는 여러개의 계산유닛을 동작시키며, 동일기능을 갖는 적어도 하나의 계산부는 상기 계산유닛의 전부에 마련되고 상기 레지스터파일의 레지스터에 의해 특정되도록 너무 큰 비트폭을 갖는 데이타종류를 유지하는 특정레지스터가 상기 계산유닛의 각각에 마련되어 상기 레지스터파일의 레지스터에 의해 특정할 수 있는 비트폭을 가진 데이타종류와 상기 특정데이타 종류로 저장된 상기 데이타종류의 양쪽을 계산처리하는 것을 특징으로 한다.
또, 본 발명에 의한 프로세서는 여러개의 계산유닛의 실행을 지정하는 특정정보를 갖는 명령코드를 저장하는 메모리, 상기 명령코드에 의해 특정된 여러개의 계산유닛을 결정하기 위해 상기 메모리에 저장된 상기 명령코드의 상기 특정정보를 분석하는 분석수단, 상기 분석수단에 의해 결정된 상기 여러개의 계산유닛을 특정하는 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 상기 명령에 따라 병렬로 계산을 실행하는 여러개의 계산유닛을 포함한다.
또, 본 발명에 의한 프로세서는 여러개의 계산유닛의 실행을 지정하는 특정정보를 갖는 명령코드를 저장하는 메모리, 여러개의 명령과 동일한 계산을 단일의 명령코드에 의해 실행하도록 단일 명령코드에 의해 특정된 여러개의 계산유닛을 결정하기 위해 상기 메모리에 저장된 상기 명령코드의 특정정보를 분석하는 분석수단, 상기 분석수단에 의해 결정된 여러개의 계산유닛을 특정하는 상기 단일 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드유지수단에 유지된 상기 단일 명령코드에 따라 병렬로 계산을 실행하는 여러개의 계산유닛을 포함한다.
또, 본 발명에 의한 상기 프로세서는 상기 여러개의 계산부의 각각이 다른 종류의 계산을 실행하도록 구성되어 있다.
또, 본 발명에 의한 프로세서는 계산종류를 지정하는 ope 코드, 오퍼랜드 및 특정정보로서 실행모드를 특정하는 필드를 갖는 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드의 필드를 분석하고, 적어도 상기 ope 코드와 상기 실행모드가 여러개의 계산유닛으로 인에이블되는 명령의 오퍼랜드를 입력하는 분석수단, 적어도 상기 분석수단에 의해 입력된 상기 명령의 오퍼랜드와 ope코드를 유지하고 상기 실행모드가 상기 여러개의 계산유닛을 인에이블하게 하는 명령코드 유지수단 및 적어도 상기 명령코드 유지수단에 유지된 상기 ope 코드와 상기 오퍼랜드에 따라 병렬로 동일종류의 계산을 실행하는 여러개의 계산유닛을 포함한다.
또, 본 발명에 의한 프로세서는 계산정보를 지정하는 ope 코드, 오퍼랜드와 특정정보로서 실행모드를 특정하는 필드 및 계산유닛을 특정하는 계산유닛 특정필드를 갖는 명령코드를 저장하는 메모리, 적어도 상기 ope 코드와 상기 실행모드가 상기 계산유닛 특정필드에 의해 특정한 상기 계산유닛으로 인에이블되는 명령의 오퍼랜드를 입력하고, 상기 메모리에서 리드된 상기 필드를 분석하는 분석수단, 적어도 상기 분석수단에 의해 입력된 상기 명령의 상기 오퍼랜드와 상기 ope코드를 유지하고, 상기 실행유닛이 상기 계산유닛 특정필드에 의해 특정된 상기 계산유닛을 인에이블하게 하는 명령코드 유지수단 및 적어도 상기 명령코드 유지수단에 유지된 상기 오퍼랜드와 상기 ope코드에 따라 동일종류의 계산을 실행하는 여러개의 계산유닛을 포함한다.
또, 본 발명에 의한 상기 프로세서에 있어서는 상기 여러개의 계산유닛의 각각은 유일한 레지스터 파일을 갖고, 상기 오퍼랜드필드는 상기 여러개의 계산유닛의 각각에서 서로 다른 계산데이타를 형성하도록 유일한 레지스터파일의 레지스터 특정을 상기 여러개의 계산유닛의 각각에서 실행한다.
또, 본 발명에 의한 상기 프로세서에 있어서는 상기 여러개의 계산유닛의 각각은 공통의 레지스터파일을 갖는다.
또한, 본 발명에 의한 상기 프로세서에 있어서는 상기 여러개의 계산유닛의 각각은 공통의 레지스터파일을 갖고, 상기 레지스터파일에서 레지스터수를 특정하는 오퍼랜드필드를 갖고, 특정될 상기 계산유닛의 유일한 오프셋값을 상기 오퍼랜드필드의 값에 부가하여, 다른 레지스터를 유용화할 수 있고, 다른 종류의 데이타를 계산할 수 있는 것을 특징으로 한다.
또, 본 발명에 의한 프로세서는 여러개의 계산유닛에 따라 여러개의 필드에 의해 구성된 명령코드를 저장하고 상기 여러개의 필드 중의 임의의 하나에서 여러개의 계산유닛을 제어하는 제어정보와 각각의 필드가 대응하는 계산유닛을 특정하는 필드정보를 갖는 메모리, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 메모리에서 리드된 상기 명령코드의 상기 제어정보와 상기 필드정보를 분석하고 상기 필드를 상기 식별된 계산유닛으로 입력하는 분석수단, 상기 분석수단에 의한 상기 필드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 상기 필드에 따라 계산을 병렬로 실행하는 여러개의 계산유닛을 포함하고, 상기 명령코드중의 하나의 필드가 상기 여러개의 계산유닛을 제어하여 상기의 계산보다 작은 필드수로 구성된 짧은 명령코드로 여러개의 계산을 실행한다.
또, 본 발명에 의한 프로세서는 계산유닛의 수에 따라 여러개의 필드로 구성된 명령코드를 저장하고, 상기 여러개의 필드중의 임의의 하나의 필드가 여러개의 계산유닛을 제어하는 것을 지정하는 제어정보와 상기 명령코드내에 존재하는 필드의 수를 지정하는 헤더정보를 갖는 메모리, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 메모리에서 리드된 상기 헤더정보와 상기 제어정보를 분석하고 상기 필드를 상기 식별된 계산유닛으로 입력하는 분석수단, 상기 분석수단에 의해 입력된 상기 필드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 상기 필드에 따라 계산을 병렬로 실행하는 여러개의 계산유닛을 포함하고, 상기 명령코드내의 하나의 필드가 상기 여러개의 계산유닛을 제어하여 상기 헤더정보의 사용에 의해 작은수의 필드로 구성된 짧은 명령코드로 여러개의 계산을 실행한다.
또, 본 발명에 의한 상기 프로세서에 있어서는 상기 분석수단은 상기 메모리에서 압축된 명령코드를 리드하는 명령확장수단을 갖고, 상기 압축된 명령코드를 즉시 실행가능한 확장된 명령코드로 변환한다.
또, 본 발명에 의한 상기 프로세서에 있어서는 상기 분석수단은 상기 메모리에서 압축된 하나의 명령코드중의 적어도 하나의 필드를 리드하고 상기 필드를 즉시 실행가능한 여러개의 필드로 구성된 확장된 명령코드로 변환하는 명령확장수단을 갖는다.
또한, 본 발명에 의한 상기 프로세서에 있어서는 상기 분석수단은 상기 메모리에서 압축된 명령코드를 래치하는 명령버퍼, 상기 명령코드내에 존재하는 필드의 수를 지정하는 헤더정보를 분석하는 필드콘트롤러 및 확장된 필드를 형성하기 위해 각 필드의 유무를 지정하는 신호와 각 필드에 대응하고 상기 필드콘트롤러에 의해 분석된 상기 필드의 선택신호에 따라 각 필드의 유무를 포함하는 필드를 소트하는 선택기를 포함한다.
또, 본 발명에 의한 상기 프로세서에 있어서는 상기 분석수단은 상기 명령코드의 각 필드의 SIMD와 실행모드(S모드)를 분석하고 선택적으로 각 필드의 복사소스 필드를 선택적으로 결정하는 SIMD콘트롤러 및 상기 SIMD 컨트롤러에 의해 선택적으로 결정된 상기 복사소스 필드를 복사하고, 상기 복사를 각 계산유닛으로 입력하는 선택기를 포함한다.
또, 본 발명에 의한 프로세서는 여러개의 계산유닛을 동작시키기 위해 계산유닛의 수에 따라 여러개의 필드로 구성하는 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드 유지수단과 상기 명령코드 유지수단에 유지된 명령에 의해 제어된 동일 기능을 갖는 적어도 하나의 계산부 및 상기 계산부의 오퍼랜드 정보를 저장하는 레지스터파일로 구성된 여러개의 계산유닛을 포함하고, 상기 여러개의 계산유닛은 동일 계산을 실행한다.
또, 본 발명에 의한 프로세서는 여러개의 계산유닛을 동작시키기 위해 계산유닛의 수에 따라 여러개의 필드로 구성하는 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드 유지수단과 상기 명령코드 유지수단에 유지된 명령에 의해 제어된 동일 기능을 갖는 적어도 하나의 계산부 및 상기 계산부의 오퍼랜드정보를 저장하는 레지스터파일로 구성된 여러개의 계산유닛을 포함하고, 상기 여러개의 계산유닛은 동일 계산을 실행한다.
또, 본 발명에 의한 프로세서는 명령코드와 데이타를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 여러개의 명령코드에 따라 병렬로 연산하는 여러개의 계산유닛을 갖고, 각각의 계산유닛은 여러개의 계산부와 여러개의 액세스포트 레지스터파일로 구성되고, 상기 여러개의 계산부의 각각은 계산을 위해 대응하는 액세스포트에서 상기 레지스터파일의 각각의 내용을 리드하고, 상기 여러개의 계산유닛은 동일한 기능을 갖는다.
또, 본 발명에 의한 프로세서는 명령코드와 데이타를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 여러개의 명령코드에 따라 병렬로 연산하는 여러개의 계산유닛을 갖고, 각각의 계산유닛은 여러개의 계산부와 여러개의 액세스포트 레지스터파일로 구성되고, 상기 여러개의 계산부의 각각은 계산을 위해 대응하는 액세스포트에서 상기 레지스터파일의 각각의 내용을 리드하고, 상기 여러개의 계산유닛은 동일기능의 서브세트를 갖는다.
또, 본 발명에 의한 상기 프로세서에 있어서는 상기 계산유닛에 있어서 적어도 하나의 계산부는 상기 메모리와 상기 레지스터파일 사이에서 데이타를 전송하는 데이타전송명령을 실행할 수 있는 것을 특징으로 한다.
상기한 바와 같은 본 발명에 의하면, VLIW프로세서가 8개의 계산부를 갖고 있는 경우에는 1개의 명령이 8개의 필드로 구성된다. 1필드는 연산정보, 오퍼랜드정보 및 상술한 모드정보를 갖는다. 이 모드정보가 여러개의 계산부를 제어하기 위한 동시계산모드를 특정하면, 1개의 명령리드시에 나머지 7개의 필드는 메모리에 존재하지 않는다. 따라서, 명령확장회로는 연산정보를 복사하고, 이 연산정보는 상기 1필드에 특정되어 나머지 7개의 필드를 생성한다. 이와 같이, 8개의 필드와 동일한 1개의 명령은 1필드에 대해 코드크기로 발생된다. 모든 계산부가 동일기능을 갖고 있으므로 여러개의 계산명령을 문제없이 병렬로 실행할 수 있게 되어 코드크기를 1/8로 축소할 수 있게 된다. 특히, 계산부의 특정정보가 모드정보로 설정되어 있으며, 이 설정정보에 대응하는 필드만이 생성되므로, 설정정보가 3개의 비트로 마련되면 동시계산수를 2/8의 범위내로 제어할 수 있다.
상기 슈퍼스칼라 프로세서가 4개의 계산부를 갖고 있으면, 1개의 명령은 연산정보, 오퍼랜드정보 및 상기 모드정보를 갖는다. 이 모드정보가 동시계산모드를 특정하면, 명령확장회로는 상기 명령에 특정된 연산정보 및 오퍼랜드정보를 생성하고, 3개의 명령을 생성한다. 모든 계산부가 동일기능을 갖고 있기 때문에 1개의 명령에 대한 코드크기로 4개의 명령과 동일한 여러개의 계산명령을 병렬로 실행할 수 있으므로, 코드크기를 1/4로 축소할 수 있게된다. 특히, 계산부의 특정정보가 이 모드정보에 설정되어 있으면 이 설정정보에 대응하는 명령만이 생성되므로, 설정정보가 2개의 비트로 마련되면 동시계산수를 2/4의 범위내로 제어할 수 있다.
이와 같이, 본 발명은 동시계산처리에 있어서의 병렬처리를 증가시킬 수 있고 또 코드크기를 작은 범위로 저감할 수 있다.
따라서, 기본계산유닛상에서 처리의 병렬화를 증가시키거나 또는 감소시키는 구조가 적용되고 또한 예를들면 2개의 계산유닛을 갖는 프로세서의 개발에 있어서 1개의 계산유닛의 회로가 개발되면, 2개의 계산유닛용 계산부를 이 1개의 명령유닛의 회로를 복사하는 것에 의해 개발할 수 있다. 따라서, 2개의 계산유닛용 계산부의 개발단계수는 통상 1개의 계산유닛용 계산부의 개발단계수와 동일하게 된다. 또, 장래 칩을 더욱 미세화하는 기술의 진전에 따라 4개의 계산유닛이나 8개의 계산유닛 등을 사용하는 높은 병렬처리 프로세서가 개발되면, 계산부 개발단계수는 증가하지 않을 것이다.
앞에서 기술한 바와 같이, 멀티미디어 처리에 있어서 동일형태의 계산을 여러회 반복해서 실행하므로, 병렬계산 처리가 확실히 증가하여 성능이 향상된다.
또한, 1개의 계산유닛에 있어서 정수계산부가 다음사이클에서 처리할 데이타를 로드할 수 있음과 동시에, 멀티미디어 계산부가 그 처리를 실행한다. 로드된 데이타는 계산유닛내의 레지스터파일에 저장되고, 이 데이타는 멀티미디어 계산부에서 처리되는 오퍼랜드로서 사용할 수가 있다.
따라서, 기본계산유닛상에서 처리가 실행되는 소프트웨어구조를 적용하는 것에 의해, 계산유닛용 프로그램 단위로 계산유닛의 수를 조절할 수가 있다. 따라서, 개발된 프로그램을 계산유닛의 수가 변경된 프로세서로 이동시키면, 계산유닛수의 변화에 따라 소프트웨어 개발단계수를 감소시킬 수 있다.
상술한 바와 같이 본 발명에 의하면, 하드웨어 개발단계수 뿐만 아니라 소프트웨어 개발단계수를 감소시키고 또한 프로세서 처리의 병렬계산을 증가시킬 수가 있다.
이하, 본 발명의 실시예를 설명한다.
도 1은 본 발명이 적용된 VLIW프로세서를 나타내는 블럭도이다. 도면에 있어서, (1)은 압축된 명령을 저장하는 명령메모리, (2)는 본 발명의 주블럭으로서 명령메모리(1)에서 리드한 압축된 명령코드를 실제로 실행 가능한 코드로 확장하는 명령확장회로, (3)은 명령메모리(1)의 어드레스버스, (4)는 명령메모리(1)의 데이타버스, (5)~(12)는 명령확장회로(2)가 확장된 코드를 출력하는 필드버스, (14)~(21)는 필드버스(5)~(12)를 거쳐 전송된 확장코드를 유지하는 명령레지스터, (22)~(25)는 동일 구성을 갖고, 명령레지스터(14)~(21)에 유지된 확장코드에 따라 다양한 계산 동작 실행하는 계산유닛, (26)은 다수의 연산이 8비트 또는 16비트 조건과 곱셈으로 실행되는 멀티미디어 계산동작과 같이 복잡한 계산동작을 실행하는 IFG(Integer Floating Graphics) 계산유닛, (27)은 데이타메모리(30)과 레지스터 파일사이에서 데이타전송을 실행하는 데이타 전송 명령 등의 단순한 계산동작과 논리연산을 실행하는 INT(Integer)계산유닛, (28)은 연산될 값과 연산결과 값을 유지하고, 32×64비트레지스트로 이루어지며, 4리드포트와 3라이트 포트를 구비한 레지스터 파일, (29)는 계산유닛(22)~(25)의 연산결과를 다른 연산유닛으로 전송하는 선택회로, (30)은 계산유닛(22)~(25)내의 레지스터 파일과 함께 데이타가 전송되는 데이타 메모리이다.
도면에 있어서, 이 VLIW프로세서는 단일 LSI상에 형성된다. 명령코드 등을 일시적으로 기억하는 캐시메모리와 프로세서의 외부에서 명령코드등을 리드하고 외부로 연산결과를 출력하는 LSI단자의 설명은 이하의 기술에서 생략한다.
본 발명의 특징은 계산유닛(22)가 IFG계산유닛(26), INT 계산유닛(27) 및 레지스터파일(28)로 이루어지고, 일치계산유닛(23)~(25)가 병렬로 배열된 것에 있다.
이하, 도 1도에 도시한 동작에 대해 설명한다. 명령확장회로(2)는 어드레스버스(3)을 거쳐 주어진 어드레스명령에 의해 명령메모리(1)에서 압축된 명령코드를 리드하고, 이 명령을 계산유닛(22)~(25)에서 직접 실행할 수 있는 확장된 명령으로 변환한다. 하나의 명령에 대응하는 확장명령코드는 대응하는 명령 레지스터(14)~(21)로 전송되는 8필드로 구성된다. 이 필드는 IFG 필드와 INT필드 2종류이다. IFG 필드는 명령 레지스터(14), (16), (18) 및 (20)으로 전송되고, INT필드는 명령레지스터(15), (17), (19) 및 (21)로 전송된다.
명령 레지스터(14)내에 저장된 IFG필드는 계산유닛(22)내의 IFG 계산부(26)과 관련된 계산적인 연산을 제어한다. 한편, 명령레지스터(15)에 저장된 INT필드는 계산유닛(22)내의 INT계산부와 관련된 계산적인 연산을 제어한다. 마찬가지로, 명령레지스터(16)과 (17)은 계산유닛(23)내의 IFG계산부와 INT계산부를 제어하고, 명령 레지스터(18)과 (19)는 계산유닛(24)내의 IFG계산부와 INT계산부를 제어하며, 레지스터(20)과 (21)은 계산유닛(25)내의 IFG계산부와 INT계산부를 제어한다.
IFG계산부(26)과 INT계산부(27)에서 계산되는 데이타는 레지스터 파일(28)에서 리드된다. 계산결과는 선택회로(29)로 출력되고 임의의 계산유닛의 레지스터파일(28)로 라이트될 수 있다.
데이타전송명령이 발행되면, 데이타는 선택회로(29)를 거여서 레지스터파일(28)과 데이타메모리(30)사이로 전송된다. 즉, IFG계산부(26)은 연산명령을 실행하고, 데이타전송 명령은 다음 사이클에서 INT연산부(27)이 IFG계산부(26)에 의해 계산될 데이타를 메모리(30)에서 레지스터파일(28)로 전송하기 위한 명령을 실행하게 한다. 또, INT계산부(27)에 의해 레지스터 파일(28)로 전송된 데이타는 IFG 계산부(22)에서 리드될 수 있으며, IFG계산부는 사이클마다 연산 명령을 실행할 수 있다.
화상처리 등의 멀티미디아 처리를 고려하면, 프로그램 구조는 처리될 화상을 위한 영역이 4개로 분할되고 이들 4개의 영역이 4개의 연산부에 할당되게 설계하는 것이 좋다. 이 경우에 이들 영역에서 처리내용이 동일하고 계산유닛의 기능이 동일하므로, 기본적으로 이들 계산유닛에서 실행될 프로그램은 하나이다.
따라서, 하나의 계산 유닛을 위한 프로그램만 개발하고, 이 프로그램을 다른 3개의 계산유닛에서 사용해도 좋다. 이 실시예에서는 4개의 계산유닛이 마련되었지만, 반도체기술의 진전에 따라 8개의 계산유닛이 마련되어도 처리될 화상영역이 8개로 분할된 프로그램 구조가 8개의 계산유닛에서 사용될 하나의 프로그램으로 되면, 소프트웨어 개발 단계의 횟수를 감소시킬 수 있다.
이들 효과는 상술한 화상처리등과 같은 멀티미디아 처리에 있어서 동일동작의 반복처리가 빈번하게 발생하는 것에 사용하여 반복처리동작을 병렬로 하는 것에 의해 효율을 향상시킬 수 있다.
계산유닛이 기본적으로 회로내에서 동일하므로, 이들 계산유닛을 이루는 프로세서를 위한 하드웨어 개발단계의 횟수를 저감할 수 있다.
도 1에 도시된 실시예에 있어서, 코드크기는 동시에 실행될 처리 동작의 병렬화를 향상시키면서 최소화할 수 있다.
이하, 계산유닛(22)~(25)를 제어하는 확장된 명령코드의 필드를 상세하게 설명한다.
도 2는 IFG필드와 INT필드의 포맷을 나타낸 것이다.
[1] 먼저, IFG필드를 구성하는 블럭을 설명한다.
비트 0~7로 이루어지는 ope코드 블럭(이하 ope코드라 한다)는 연산의 종류를 나타내고 256형으로 지정해도 좋다. ope코드=0이면, 비연산(NOP)가 마련된다. 비트8로 나타낸 이미디어트(immediate)블럭 (이하, 이미디어트라 한다)은 비트 22~26으로 이루어진 소스1블럭(이하 소스1이라 한다)의 내용의 의미를 나타내고, 이미디어트가 1이면 이미디어트값을 나타내고, 이미디어트가 0이면 레지스터 번호를 나타낸다. 레지스터번호는 관련된 계산유닛내의 레지스터 파일의 32개 레지스터중의 하나를 나타낸다. 마찬가지로, 비트17~21로 이루어진 소스0블럭(이하 소스0이라 한다)은 관련된 계산유닛내의 레지스터파일의 32개 레지스터중의 하나를 나타낸다.
비트27로 표시된 S모드블럭(이하 S모드라 한다)는 본 발명의 포인트인 병행연산모드를 지정한다. 이 비트(S모드)가 0이면 정상모드를 나타내고, 이 비트가 1이면 SIND(Single Instruction Multiple Data Stream)모드 (병행연산모드)를 나타낸다.
비트9~11로 표시된 SIMD/테스트뱅크블럭은 정상모드에서 테스트모드와 SIMD모드에서 SIMD로서 표시된다.
정상모드(S모드가 0)에 있어서, 각각의 계산유닛의 연산결과는 다른 계산유닛내의 레지스터 파일의 레지스터로 라이트될 수 있다. 따라서, 정상모드에 있어서, 계산유닛은 dest . bank에 의해 식별되고, 그 계산유닛내의 레지스터는 비트12~16으로 이루어진 수신지블럭(이하 수신지라 한다)에 의해 식별된다. 계산유닛(22)는 뱅크0에 대응하고, 계산유닛(23)은 뱅크1에 대응하고, 계산유닛(24)는 뱅크2에 대응하며, 계산유닛(25)는 뱅크3에 대응한다. 수신지는 32개의 레지스터번호를 지정할 수 있고, dest . bank는 8개의 계산유닛을 지정할 수 있다. 이 실시예는 4개의 계산유닛(22)~(25)로 구성되어 있지만, 그 자체의 명령포맷을 8개의 계산유닛으로 구성된 VLIW프로세서에 적용할 수 있다.
한편, SIMD모드(S모드가 1)에 있어서, 단일의 IFG필드로 여러개의 계산유닛을 제어하기 위해 각각의 계산유닛의 계산 결과가 관련된 계산유닛내의 레지스터파일의 레지스터에만 라이트된다. 따라서, SIMD모드에서 계산결과가 라이트될 레지스터는 수신지에 의해 지정하는 32개의 레지스터번호에 의해 지정된다. 또한, 동시에 동작될 다른 계산유닛을 지정하기 위해 dest . bank와 필드를 공유하는 SIMD가 사용된다.
SIMD는 3개의 비트로 이루어지고, 다른 3개의 계산유닛이 동일 연산을 실행하는지 아닌지를 표시한다. 1은 동일 연산의 실행을 나타내고, 0은 실행하지 않는 것 즉 비연산(이하, NOP라 한다)을 나타낸다. 3개의 비트와 계산유닛 사이의 관계는 IFG필드가 유지되는 명령 레지스터에 의존한다. 즉, IFG필드가 뱅크0에 대응하는 명령 레지스터(14)내에 유지되면, SIMD의 3비트는 뱅크1, 뱅크2, 뱅크3에 대응한다. 따라서, SIMD가 110(2진수)이면, 동일 명령이 명령 레지스터(14)와 (15), (16)과 (17), (18)과 (19)에 설정된다. IFG필드가 뱅크2에 대응하는 명령레지스터(18)내에 유지되면, SIMD의 3비트는 뱅크0, 뱅크1, 뱅크3에 대응한다. IFG필드가 뱅크3에 대응하는 명령레지스터(20)내에 유지되면, SIMD의 3비트는 뱅크0, 뱅크1, 뱅크2에 대응한다.
수신지, 소스0 및 소스1은 오퍼랜드를 구성한다.
[2] 다음에 INT필드를 설명한다.
INT필드는 3개의 관점에서 IFG필드와 다르다. 첫 번째 다른점은 ope코드의 1비트가 삭제되고 계산동작의 지정할 수 있는 번호가 128인 것이다. 두번째 다른점은 소스1의 비트수가 8비트로 증가하고 이미디어트값의 지정할 수 있는 번호가 0~255인 것이다. 마지막으로 다른점을 IFG필드를 위해 마련되지 않은 분기 테스트블럭(이하, 분기 테스트라 한다)이 부가된 것이다. 분기 테스트는 프로그램 분기제어를 위한 것이다. 계산유닛(22)~(25)의 각각은 조건분기를 위해 각각 1비트로 이루어진 6개의 분기 뱅크 레지스터를 구비한다. 이들 레지스터에 있어서, 1은 분기이고, 0은 비분기이다. 분기 테스트가 000(2진수)이면, 분기는 발생하지 않는다. 001이면, 무조건 분기가 발행한다. 010~111이면, 대응하는 분기 뱅크 레지스터의 내용에 따라 분기(조건분기)가 발생한다.
다음에 IFG와 INT필드로 구성된 명령을 명령메모리(1)에 저장하는 프로세스를 설명한다. 도 3은 프로그램을 명령메모리(1)로 저장하는 예를 도시한 것이다. 도면에 있어서, 8개의 명령은 어드레스 0~95에서 저장된다. 각각의 정보가 필드인가 아닌가를 나타내는 정보인 헤드는 4개의 명령마다 마련된다. 필드 0, 1, 2, 3, 4, 5, 6 및 7은 각각 명령 레지스터(14), (15), (16), (17), (18), (19), (20) 및 (21)에 대응한다. 필드가 없는 것은 NOP 또는 SIMD모드를 위해 생략된 필드를 나타낸다.
이 실시예에 있어서, NOP필드는 저장되지 않고, 제1의 명령이 필드 0, 1, 4, 6 및 7로 구성되고, 제2의 명령이 필드 0, 1 및 2로 구성되고, 제3의 명령이 필드 0, 1, 2, 4, 6 및 7로 구성되고, 제4의 명령이 필드4와 7로 구성되고, 제5의 명령이 필드 0과 1로 구성되고, 제6의 명령이 필드2와 3으로 구성되고, 제7의 명령이 필드 6으로 구성되며, 제8의 명령이 필드 4로 구성된다.
다음에 상술한 프로세스를 구체적으로 설명한다. 도 4는 도 3에 도시된 헤더의 포맷을 나타낸다. 하나의 헤드는 1필드와 동일 크기인 32비트로 구성되고, 4개의 명령에 대한 필드 존재 유무정보(4×8=32)를 나타낸다.
특정 예에서와 같이, 도 5는 도 3에 도시된 헤더0과 대응하는 확장명령 포맷1~4를 나타낸다. 이들 4개의 명령이 모두 정상모드로 지정된 것으로 가정한다. 확장명령포맷은 명령확장회로(2)에 의해 필드 존재유무명령에서 발생된다. 명령메모리(1)에 있어서, 생략된 NOP필드가 생성되고 필드는 소트된다.
한편, SIMD모드지정의 특정예에서와 같이, 도 6은 도 3에 도시된 헤어1과 대응확장명령포맷5~8을 도시한 것이다. 이들 명령의 S모드와 SIMD가 도시된 값으로 프리세트된 것으로 가정한다.
도면에 있어서, 제5의 명령에서 SIMD모드는 필드0에서 S모드=1로 지정되고 SIMD가 111이며, 필드0과 1의 내용이 필드2와 3, 필드4와 5, 필드6과 7로 복사된다. 제6의 명령에서 SIMD모드는 필드2에서 S모드=1로 지정되고 SIMD가 010이며, 필드2와 3의 내용이 필드4와 5로 복사된다. 제7의 명령에서. SIMD모드는 필드6에서 S모드=1로 지정되고 SIMD가 101이며, 필드6과 7의 내용이 필드 0과 1 및 필드4와 5로 복사된다. 제6의 명령에서 SIMD모드는 필드4에서 지정되고 SIMD가 001(0=NOP, 1=동일 명령실행)이고, 필드4와 5의 내용이 필드6과 7로 복사된다.
지금까지는 본 발명에 따른 압축명령코드를 확장하는 방법에 대해 설명한다.
다음에 상술한 방법을 실행하는 명령확장회로(2)를 상세히 기술한다. 도 7은 명령확장회로(2)를 상세하게 도시한 블럭도이다. 도 7에 있어서, 도 1에 도시된 회로블럭과 신호선은 동일 부호를 부여한다. (40)은 데이타버스(4)에서 압축된 명령코드(32바이트)를 래치하는 명령버퍼, (41)(41a~41h)은 4바이트(2필드 또는 1헤드)×8의 구성을 갖는 압축필드버스, (42)는 헤더정보를 분석하는 필드콘트롤러, (43)은 기본 4바이트로 라이트 동작을 인에이블하기 위해 8개의 신호로 구성된 라이트 인에이블버스, (44)는 필드를 소트하는 필드선택신호, (45a)~(45h)는 압축필드버스(41)의 8개의 4바이트신호의 하나를 선택하는 선택기, (67)은 필드0~7의 존재의 유무를 나타내는 8필드신호선, (49)는 필드를 소트한 후의 확장필드버스, (46)은 SIMD모드에서 각각의 명령의 필드 복사 동작을 제어하는 SIMD콘트롤러, (47)은 복사될 필드의 선택을 제어하는 SIMD선택신호선, (48)은 임의의 2개의 필드(IFG필드와 INT필드)를 선택하는 이중 선택기이다.
다음에 상세한 동작을 설명한다. 필드콘트롤러(42)는 명령버퍼(40)내에 유지된 정보를 참조하여 분석을 위한 헤더정보를 인출한다. 분석 결과에 따라 명령버퍼(40)으로 페치될 명령의 어드레스정보를 어드레스버스(3)으로 출력하고, 기본 4바이트로 명령버퍼(40)에 페치를 인에이블하기 위한 정보를 라이트 인에이블버스(43)으로 출력하고, 압축필드버스(41)로 부터의 명령의 필드0을 선택하는 정보를 필드선택신호선(44)로 출력한다. 마찬가지로, 필드1~7의 선택정보가 각각 선택기(45b)~(45h)로 출력된다. 각각의 필드의 유/무를 나타내는 정보는 필드신호선(67)로 출력된다.
명령버퍼(40)이 32바이트길이이므로, 동시에 헤더와 8개의 필드로 이루어진 가장 긴 명령을 유지할 수 없다. 따라서, 이 경우 2개의 페치동작이 요구된다. 필드콘트롤러(42)는 리페치(refetch)신호선(13)으로 제2의 페치를 나타내는 정보를 출력한다. 이 신호는 도 1에 도시된 명령레지스터(14)~(21)로 보내진다. 리페치 사이클에서 필드7의 정보만 출력되게 하기 위해 이 사이클에 있어서 필드7에 대응하는 명령레지스터(21)만 필드 데이타를 래치(업데이타)한다.
필드신호선(67)의 필드0에 대응하는 신호선이 필드가 아닌 것을 나타내는 경우, 선택기(45a)는 필드정보로서 0을 출력한다. 즉, 이 실시예에 있어서, ope코드=0이 NOP이므로, NOP가 출력된다. 반대로, 신호선이 필드의 존재를 나타내면, 필드 선택신호선(44)의 정보에 따라 확장필드버스(49)로 출력될 압축필드버스(41)에서 필드0의 정보가 선택된다. 마찬가지로, 필드콘트롤러(42)에서 들어오는 정보에 따라 대응하는 정보를 확장필드버스(49)로 출력하도록 다른 필드에 대응하는 선택기(45b)~(45h)가 이들 필드를 선택한다. 따라서 확장되어 소트된 명령코드가 확장필드버스(49)로 출력된다.
SIMD콘트롤러(46)은 확장필드버스(49)에서 필드0, 2, 4 및 6의 S모드와 SIMD를 분석하고 이들 각각의 필드의 복사소스필드를 결정하고, 복사소스필드를 선택하기 위한 정보를 이중 선택기(48a)로 출력한다.
정상 모드시, SIMD콘트롤러(46)은 복사소스필드0과 1을 선택하기 위한 선택정보를 이중선택기(48a)로 출력한다. 이 선택정보에 따라서, 이중선택기(48a)는 확장필드버스(49)에서 8개의 필드에서 2개를 선택하고, 필드0을 필드버스(5)로 또 필드1을 필드버스(6)으로 출력한다.
마찬가지로 필드2와 3, 필드 4와 5, 필드6과 7을 위한 복사소드필드를 선택하는 정보가 대응하는 이중선택기(48b)~(48d)로 출력된다. 각각의 이중선택기(48b)~(48d)는 확장필드버스(49)에서 8개의 필드에서 2개를 선택하고, 필드2를 필드버스(7)로, 필드3을 필드버스(8)로, 필드4를 필드버스(9)로, 필드5를 필드버스(10)으로, 필드6을 필드버스(11)로 필드7을 필드버스(12)로 출력한다. 따라서, SIMD모드에서 각각의 명령에서 지정된 정보에 따라 특정 필드의 내용을 다른 필드로 복사할 수 있다. 이것은 적은 명령의 수로 계산동작을 하게 한다. 다음에 예로서 도 3의 예에 도시된 제1의 명령의 연산을 기술한다. 명령버퍼(40)은 제2의 명령의 필드1을 거쳐 헤더0을 유지한다. 이 상태에서 각각의 필드에 대응하는 선택기(45a)~(45h)는 필드 콘트롤러(42)에서 헤더0의 분석정보에 따라서 도 5에 도시된 제1의 명령포맷을 생성하고, 생성된 명령포맷을 확장필드버스(49)로 출력한다.
이와 같이하여 필드콘트롤러(42)는 명령버퍼(40)에서 제1의 명령과 동등한 5개의 필드와 헤더0의 전체24바이트에서 다음 명령을 페치하기 위한 정보를 라이트 인에이블버스(43)으로 출력한다. 라이트 인에이블버스(43)으로 출력될 정보는 각각 4바이트 경계에서 실행될 라이트 연산을 제어하기 위해 8비트로 구성된다.
한편, 어드레스버스(3)의 어드레스정보를 다음 명령이 개시(도 3에 도시된 제2의 명령의 필드0)를 나타내고, 그 어드레스에서 계속된 32바이트로 이루어진 데이타(어드레스24~어드레스55)가 데이타버스(4)로 출력된다. 이 상태에서 라이트 인에이블버스(43)의 상술한 정보에 따라 다음 사이클에서 24바이트의 데이타(어드레스32~어드레스55)가 갱신된다. 계속해서 명령버퍼(40)은 어드레스32~어드레스55와 어드레스(24)~어드레스(31)에서 32바이트의 정보를 유지한다. 이 상태로부터 각각의 필드에 대응하는 선택기(45a)~(45h)는 필드콘트롤러(42)의 헤더0의 분석정보에 따라 도5에 도시된 제2의 명령포맷을 생성하고 확장 필드버스(49)로 생성된 명령포맷을 출력한다.
이와 같이하여 필드콘트롤러(42)는 명령버퍼(40)에서 제2의 명령과 동등한 3개의 필드를 위해 전체12바이트를 페치하는 정보를 라이트 인에이블버스(43)으로 전송한다. 한편, 어드레스버스(3)의 어드레스정보는 다음 명령의 개시(도 3에 도시된 제3의 명령의 필드0)을 나타내고, 그 어드레스에서 계속된 32바이트로 이루어진 데이타(어드레스36~어드레스67)가 데이타버스(4)로 리드된다. 이 상태에서 라이트 인에이블버스(43)의 상술한 정보에 따라서 다음 사이클에서 12바이트의 데이타(어드레스56~어드레스67)가 갱신된다. 계속해서, 명령버퍼(40)은 어드레스 64~어드레스67과 어드레스36~어드레스63에서 32바이트의 정보를 유지한다. 따라서, 필드 콘트롤러(42)는 어드레스버스(3)과 라이트 인에이블버스(42)를 거쳐 제어를 실행하여 명령버퍼(40)은 항상 데이타로 충전된다. 이 필드 콘트롤러(42)의 설명은 다음에 기술한다.
이와 같이 생성된 확장필드버스(49)상의 각각의 필드의 S모드는 SIMD콘트롤로(46)에서 검사된다. S모드비트가 유효로 발견되면, SIMD콘트롤러(46)은 도 6에 도시된 바와 같이 복사가 될 필드와 복사하기 위한 필드를 식별한다.
예를들면, 복사가 필드0과 1에서 이루어지면, 복사소스필드의 필드선택정보는 SIMD선택신호선(47)을 거쳐 이중선택기(48a)로 보내진다. 필드0과 1이 통상모드(S모드=0인 경우) 또는 SIMD모드 (S모드=1인 경우)에서 복사소스인 경우, 필드선택정보는 그 자체의 필드, 즉 필드0과 1을 선택한다. 마찬가지로, 필드2와 3, 필드와 5, 필드6과 7에 대한 필드 선택정보는 대응하는 이중 선택기(48b)~(48d)로 보내진다.
필드버스(5)와 (6)은 이중선택기(48a)에서 출력되고, 필드버스(5)의 필드0은 확장필드버스(49)의 필드 0, 2, 4, 6에서 선택되며, 필드버스(6)의 필드1은 확장필드버스(49)의 필드 1, 3, 5 및 7에서 선택된다. 마찬가지로, 필드버스(7)~(12)상의 필드 2~7이 생성된다. 이 SIMD 콘트롤러(46)의 설명은 후술한다.
이하, 필드콘트롤러(42)와 SIMD콘트롤러(46)의 구성을 상세하게 설명한다.
먼저, 필드콘트롤러(42)의 상세한 구성을 도 8에 도신한다. 도면에 있어서, 도 7에 기술한 것과 동일한 회로블럭과 신호선은 동일 부호를 부여한다. 도면에 있어서, (60)은 헤더정보를 분석하는 헤더 분석기, (67)은 헤더의 필드 구성을 나타내는 8비트 필드신호선, (68)은 압축으로 명령길이(0~33)을 나타내는 명령길이 신호선, (61)은 어드레스버스(3)으로 주어질 어드레스정보를 생성하는 어드레스 콘트롤러, (64)는 실행시의 명령 어드레스정보를 전송하는 명령 어드레스버스, (65)는 헤더에 포함된 4개의 명령중의 하나를 나타내는 2비트 헤더 어드레스버스, (66)은 헤더 어드레스가 0인 경우의 헤더0 신호선, (62)는 라이트 인에이블 버스(43)으로 주어질 페치명령을 생성하는 부분 라이트 콘트롤러, (63)은 필드선택신호선(44)로 주어질 필드선택정보를 생성하는 선택신호 발생기이다. 이하, 특정예를 사용하여 필드 콘트롤러의 동작을 설명한다.
도 9는 명령메모리(1)내에 저장된 명령열을 나타낸다. 이 예에서 7개의 명령이 어드레스 0~127에 저장된다.
도 10은 이들 명령을 순차적으로 실행하는 동작을 설명하기 위한 타이밍도이다. 도면에 있어서는 T0~T8의 9사이클 동안의 동작을 도시하였다. 각각의 명령은 기본적으로 4단 파이프라인에 의해 실행된다. 4단은 명령 페치단인 IF, 명령확장단인 EXP, 연산실행단인 EXE, 연산결과 라이트단인 WB이다. 이 도면은 명령1~명령6에 대한 타이밍도이다.
먼저, 명령1을 기술한다. 명령1은 초기상태에서 개시되고 T0사이클에서 각각의 신호선이 개시값을 나타낸다. 명령 어드레스버스(64)가 0이므로, 어드레스 0~어드레스 31이 명령메모리(1)에서 리드된다. 또, T0에서 T1사이클로 천이된 경우, 라이트 인에이블버스(43)을 11111111(2진수)이고 어드레스 0~어드레스 31이 명령버퍼(40)으로 래치된다.
T1사이클에서 명령1의 EXP단이 실행된다. 특히, 명령어드레스버스(64)와 헤더 어드레스버스(65)에서 출력된 정보에 따라 헤더분석기(60)은 압축필드버스(41)에서 입력된 정보와 명령버퍼(40)에 래치된 정보에서 헤더정보를 식별한다. 즉, 명령어드레스버스(64)가 0이므로, 명령1~4의 헤더는 어드레스0~3에서 발견되고, 이 4바이트정보가 래치된다. 또, 헤더어드레스버스(65)가 0이므로, 명령1에 대응하는 헤더 정보는 어드레스 0에서 8비트로 되어 발견된다.
이 정보로부터 헤더분석기(60)은 명령1이 5개의 필드 0, 1, 4, 6 및 7로 이루어진 것을 발견한다. 따라서, 명령1의 헤더정보 11001011(2진수)는 변경없이 필드신호선(67)로 출력된다. 또, 명령1은 헤더를 포함하는 긴 24바이트이고, 24를 나타내는 정보 011000(2진수)가 명령길이 신호선(68)로 출력된다. 명령길이가 32를 초과하지 않으므로, 리페치신호선이 어서트되지 않는다.
초기사이클 이외의 다른 사이클에 있어서, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 값에 32를 부가하여 얻어진 값을 어드레스버스(3)으로 출력한다. 따라서, T1사이클에 있어서, 32는 어드레스버스(3)으로 출력된다.
명령길이신호선(68)과 명령어드레스버스(64)의 명령으로부터 부분 라이트콘트롤러(62)는 명령버퍼(40)에 유지된 명령1의 필드의 위치 정보를 라이트 인에이블버스(43)으로 출력한다. 이 위치 정보는 기본 4비트로 제어되고 8비트로 구성된다. T2사이클에 있어서, 명령 어드레스버스(64)가 0이고 명령길이신호버스(68)이 24이며, 명령버퍼(40)의 개시에서 24바이트가 명령1에 대응하고 11111100(2진수)가 라이트 인에이블버스(43)으로 출력된다.
명령 어드레스버스(64), 헤더0신호선(66)과 필드신호선(67)로부터 선택신호 발생기(63)은 명령버퍼(40)에서 각각의 필드명령을 선택하는 정보를 생성하고 선택된 정보를 출력한다. 예를들어, 필드0의 선택정보는 필드선택신호선(44)로 출력된다. 마찬가지로, 필드1~7의 선택정보가 대응하는 필드선택신호선으로 출력된다. 선택정보는 4바이트경계 위치를 나타내는 3비트로 구성되고, 리드동작이 명령버퍼(40)에서 실행된다. T1사이클에서 명령어드레스버스(64)가 0이고 헤더0신호선(66)이 어서트되므로, 명령1의 필드가 명령버퍼(40)의 제2의 32비트경계에 이어서 유지된 것이 발견된다. 또, 필드신호선(67)의 명령에서 필드가 존재한다는 것을 알 수 있다. 따라서, 제2의 32비트경계에서 필드0이 유지되고 필드0을 나타내는 선택정보가 1로 되며 필드선택신호선(44)로 출력되는 것을 알 수 있다.
마찬가지로, 필드1을 나타내는 선택정보가 2로 되며, 필드4를 나타내는 선택정보가 3으로 되며, 필드6를 나타내는 선택정보가 4로 되며, 필드 7를 나타내는 선택정보가 5로 된다.
T1에서 T2사이클로의 천이시 어드레스버스(3)이 32이고 라이트 인에이블버스(43)이 11111100(2진수)이므로, 어드레스32~어드레스55는 명령버퍼(40)에 새롭게 래치되고, 이미 유지되어 있던 어드레스24~어드레스 31의 정보는 변경없이 유지된다. 동시에 명령길이신호선(68)이 24이므로, 명령어드레스버스(64)의 정보는 0에 24를 부가하여 24로 되고, 헤더 어드레스버스(65)의 정보는 그것에 1이 부가되어 1로 된다.
다음에 명령2에 대해 상술한 T1사이클은 IF단으로 되고, T2사이클에서 명령2는 명령버퍼(40)에 유지된다. T2사이클에서 명령2의 EXP단이 실행된다.
특히, 헤더어드레스버스(65)가 1이므로, 헤더분석기(60)은 명령2에 대응하는 헤더 정보가 T1사이클에서 래치된 정보의 어드레스1의 8비트인 것을 발견한다. 이 정보로부터 헤더분석기(60)은 명령2가 3개의 필드0, 1, 2로 이루어진 것을 발견한다. 따라서, 명령2의 헤더정보11100000(2진수)가 변경없이 필드신호선(67)로 출력된다. 또, 명령2가 긴 12바이트이고, 24를 나타내는 001100(2진수)의 정보가 명령길이신호선(68)로 출력된다. 명령길이가 32를 초과하지 않으므로, 리페치신호선(13)이 어서트되지 않는다.
초기사이클 이외의 다른 사이클에 있어서, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 값에 32를 부가하여 얻어진 값을 어드레스버스(3)으로 출력한다. 따라서, T2사이클에 있어서, 56이 어드레스버스(3)으로 출력된다.
T2사이클에 있어서, 명령 어드레스버스(64)가 24이고 명령길이신호선(68)이 12이므로, 부분 라이트 콘트롤러(62)는 명령버퍼(40)에서 제7의 4바이트 경계에서 3바이트가 명령2에 대응하는 것을 발견하고 10000011(2진수)가 라이트 인에이블버스(43)으로 출력된다. 이 위치적정보는 기본 4비트로 제어되고 8비트로 이루어진다.
T2사이클에서 명령어드레스버스(64)가 24이고 헤더0신호선(66)이 어서트되지 않으므로, 선택신호 발생기(63)은 명령2의 필드가 명령버퍼(40)에서 제7의 32비트 경계에 이어서 유지된 것을 발견한다. 또, 필드신호선(67)의 정보에서 필드가 존재하는 것을 알 수 있다. 따라서, 제7의 32비트 경계에서 필드 0이 유지되고 필드0을 나타내는 선택정보가 6으로 되며 필드 선택 신호선(44)로 출력되는 것을 알 수 있다. 마찬가지로, 필드 1을 나타내는 선택정보가 7로 되고 필드2를 나타내는 선택정보가 0으로 된다.
T2 사이클에서 T3 사이클로의 천이시 어드레스 버스(3)이 56이고 라이트 인에이블 버스(43)이 1000011(2진수)이므로, 어드레스 56~67은 명령버퍼(40)에서 새롭게 래치되고, 이미 유지되고 있던 어드레스 36~어드레스 55의 정보는 변경없이 유지된다. 동시에 명령 길이 신호선(68)이 12이므로, 명령 어드레스 버스(64)의 정보가 24에 12를 부가하여 36으로 되고 헤더 어드레스 버스(65)의 정보는 그것에 1을 부가하여 2로 된다.
다음에 명령3에 대해 상술한 T2사이클은 IF단으로 되고, T3사이클에서 명령3은 명령버퍼(40)에 유지된다. T3사이클에서 명령3의 EXP단이 실행된다.
특히, 헤더어드레스버스(65)가 2이므로, 헤더분석기(60)은 명령3에 대응하는 헤더정보가 T1사이클에서 래치된 정보의 어드레스2의 8비트인 것을 발견한다. 이 정보로부터 헤더분석기(60)은 명령3이 8개의 필드 0, 1, 2, 3, 4, 5, 6, 7로 이루어진 것을 발견한다. 따라서, 명령3의 헤더정보11111111(2진수)가 변경없이 필드신호선(67)로 출력된다. 또, 명령3이 긴 32바이트이고, 32를 나타내는 100000(2진수)의 정보가 명령길이신호선(68)로 출력된다. 명령길이가 32를 초과하지 않으므로, 리페치신호선(13)이 어서트되지 않는다.
초기사이클 이외의 다른 사이클에 있어서, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 값에 32를 부가하여 얻어진 값을 어드레스버스(3)으로 출력한다. 따라서, T3사이클에 있어서, 68이 어드레스버스(3)으로 출력된다.
T3사이클에 있어서, 명령 어드레스버스(64)가 36이고 명령길이신호선(68)이 32이므로, 부분 라이트 콘트롤러(62)는 명령버퍼(40)에서 제2의 4바이트 경계에서 32바이트가 명령3에 대응하는 것을 발견하고 11111111(2진수)가 라이트 인에이블버스(43)으로 출력된다.
T3사이클에서 명령어드레스버스(64)가 36이고 헤더0신호선(66)이 어서트되지 않으므로, 선택신호 발생기(63)은 명령3의 필드가 명령버퍼(40)에서 제2의 32비트 경계에 이어서 유지된 것을 발견한다. 또, 필드신호선(67)의 정보에서 필드가 존재하는 것을 알 수 있다. 따라서, 제2의 32비트 경계에서 필드 0이 유지되고 필드0을 나타내는 선택정보가 1로 되며 필드 선택 신호선(44)로 출력되는 것을 알 수 있다. 마찬가지로, 필드 1을 나타내는 선택정보가 2로 되고 필드 2를 나타내는 선택정보가 3으로 되고, 필드 3을 나타내는 선택정보가 4로 되고, 필드 4를 나타내는 선택정보가 5로 되고, 필드 5를 나타내는 선택정보가 6으로 되고, 필드 6을 나타내는 선택정보가 7로 되고, 필드 7를 나타내는 선택정보가 0으로 된다.
T3 사이클에서 T4 사이클로의 천이시 어드레스 버스(3)이 68이고 라이트인에이블 버스(43)이 1111111(2진수)이므로, 어드레스 68~어드레스 99는 명령버퍼(40)에서 새롭게 래치된다. 동시에 명령 길이 신호선(68)이 32이므로, 명령 어드레스 버스(64)의 정보가 36에 32를 부가하여 68로 되고 헤더 어드레스 버스(65)의 정보는 그것에 1을 부가하여 3으로 된다.
다음에 명령4에 대해 상술한 T3사이클은 IF단으로 되고, T4사이클에서 명령 4는 명령버퍼(40)에 유지된다. T4사이클에서 명령4의 EXP단이 실행된다.
특히, 헤더어드레스버스(65)가 3이므로, 헤더분석기(60)은 명령4에 대응하는 헤더정보가 T1사이클에서 래치된 정보의 어드레스3의 8비트인 것을 발견한다. 이 정보로부터 헤더분석기(60)은 명령4가 1개의 필드0으로 이루어진 것을 발견한다. 따라서, 명령4의 헤더정보10000000(2진수)가 변경없이 필드신호선(67)로 출력된다. 또, 명령4가 긴 4바이트이고, 4를 나타내는 000100(2진수)의 정보가 명령길이신호선(68)로 출력된다. 명령길이가 32를 초과하지 않으므로, 리페치신호선(13)이 어서트되지 않는다.
초기사이클 이외의 다른 사이클에 있어서, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 값에 32를 부가하여 얻어진 값을 어드레스버스(3)으로 출력한다. 따라서, T4사이클에 있어서, 100이 어드레스버스(3)으로 출력된다.
T4사이클에 있어서, 명령 어드레스버스(64)가 68이고 명령길이신호선(68)이 4이므로, 부분 라이트 콘트롤러(62)는 명령버퍼(40)에서 제2의 4바이트 경계에서 4바이트가 명령4에 대응하는 것을 발견하고 0100000(2진수)가 라이트 인에이블버스(43)으로 출력된다.
T4사이클에서 명령어드레스버스(64)가 68이고 헤더0신호선(66)이 어서트되지 않으므로, 선택신호 발생기(63)은 명령4의 필드가 명령버퍼(40)에서 제2의 32비트 경계에 이어서 유지된 것을 발견한다. 또, 필드신호선(67)의 정보에서 필드가 존재하는 것을 알 수 있다. 따라서, 제2의 32비트 경계에서 필드 0이 유지되고 필드0을 나타내는 선택정보가 1로 되며 필드 선택 신호선(44)로 출력되는 것을 알 수 있다.
T4 사이클에서 T5 사이클로의 천이시 어드레스 버스(3)이 68이고 라이트 인에이블 버스(43)이 0100000(2진수)이므로, 어드레스 100~103은 명령버퍼(40)에서 새롭게 래치외고, 이미 유지되고 있던 어드레스 72~어드레스 99의 정보는 변경없이 유지된다. 동시에 명령 길이 신호선(68)이 4이므로, 명령 어드레스 버스(64)의 정보가 68에 4를 부가하여 72으로 되고 헤더 어드레스 버스(65)의 정보는 3에 1을 부가하여 0으로 된다(부가 결과는 0~3으로 겹친다).
다음에 명령5에 대해 상술한 T4사이클은 IF단으로 되고, T5사이클에서 명령5는 명령버퍼(40)에 유지된다. T5사이클에서 명령5의 EXP단이 실행된다.
특히, 헤더어드레스버스(64)가 72이므로, 헤더분석기(60)은 명령5~7의 헤더가 어드레스 72~어드레스 75에 존재하고 명령 버퍼(40)에 유지된 이 4바이트 정보를 래치하는 것을 알 수 있다. 또, 헤더어드레스버스(65)가 0이므로, 명령 5에 대응하는 헤더정보가 어드레스 72의 8비트인 것을 발견한다. 이 정보로부터 헤더 분석기(60)은 명령 5가 8개의 필드로 이루어진 것을 발견한다. 따라서 명령5의 헤더정보 11111111(2진수)가 변경없이 필드신호선(67)로 출력된다. 또, 명령5가 헤더를 포함하는 긴 36바이트이고, 36을 나타내는 100100(2진수)의 정보가 명령길이신호선(68)로 출력된다. 명령길이가 32를 초과하므로, 리페치신호선(13)이 T5에서 T6으로 천이시 어서트된다.
초기사이클 이외의 다른 사이클에 있어서, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 값에 32를 부가하여 얻어진 값을 어드레스버스(3)으로 출력한다. 따라서, T5사이클에 있어서, 104가 어드레스버스(3)으로 출력된다.
T5사이클에 있어서, 명령 어드레스버스(64)가 72이고 명령길이신호선(68)이 36이므로, 부분 라이트 콘트롤러(62)는 명령버퍼(40)에서 제3의 4바이트 경계에서 32바이트가 명령 5에 대응하는 것을 발견하고 11111111(2진수)가 라이트 인에이블버스(43)으로 출력된다.
T5사이클에서 명령어드레스버스(64)가 72이고 헤더0신호선(66)이 어서트되므로, 선택신호 발생기(63)은 명령5의 필드가 명령버퍼(40)에서 제4의 32비트경계에 이어서 유지된 것을 발견한다. 또, 필드신호선(67)의 정보에서 필드가 존재하는 것을 알 수 있다. 따라서, 제4의 32비트 경계에서 필드 0이 유지되고 필드0을 나타내는 선택정보가 3으로 되며 필드 선택 신호선(44)로 출력되는 것을 알 수 있다. 마찬가지로, 필드 1을 나타내는 선택정보가 4로 되고 필드 2를 나타내는 선택정보가 5로 되고, 필드 3을 나타내는 선택정보가 6으로 되고, 필드 4를 나타내는 선택정보가 7로 되고, 필드 5를 나타내는 선택정보가 0으로 되고, 필드 6을 나타내는 선택정보가 1로 된다. 명령 길이가 32를 초과하므로, 필드 7의 명령이 명령 버퍼(40)에 유지되지 않고, 선택정보가 다음의 사이클(T6)에서 출력된다.
T5 사이클에서 T6 사이클로의 천이시 어드레스 버스(3)이 104이고 라이트 인에이블 버스(43)이 1111111(2진수)이므로, 어드레스 104~135는 명령버퍼(40)에서 새롭게 래치된다. 동시에 명령 길이 신호선(68)이 36이므로, 명령 어드레스 버스(64)의 정보가 72에 36을 부가하여 108로 되고, 헤더 어드레스 버스(65)의 정보는 0에 1을 부가하여 1로 된다.
상술한 바와 같이, T5 사이클에 있어서 명령5의 필드 7이 생성되지 않으므로, T6 사이클은 명령 5의 부가적인 EXP(EXP2)단으로 요구된다.
T6 사이클에서 어서트되는 리페치 신호선(13)이 EXP2단을 나타낸다. 리페치 신호선(13)이 어서트 될 때, 헤더 분석기(60), 어드레스 콘트롤러(61), 부분 라이트 콘트롤러(62) 및 선택신호 발생기(63)이 특정동작을 실행한다.
특히, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 108에 28을 부가하여 얻어진 136을 어드레스버스(3)으로 출력한다. T6에서 T7로의 천이시, 헤더어드레스에는 1이 부가되지 않고, 그대로 1로 된다.
헤더 분석기(60)은 명령 길이 신호선(68)로 0을 출력한다. 따라서, T6에서 T7로의 천이시, 명령어드레스버스(64)의 정보가 변경없이 108로 유지된다. 명령어드레스버스(64)가 108이고 명령 5의 필드 7이 명령 메모리(1)의 어드레스 104에 존재하므로, 부분라이트 콘트롤러(62)는 명령버퍼(40)내에 제3의 4바이트 경게에서 헤더정보가 존재하는 것을 발견하고 라이트 인에이블 버스(43)으로 00100000(2진수)를 출력한다.
마찬가지로, 명령어드레스버스(64)가 108이고 명령 5의 필드 7이 명령(1)의 어드레스 104에 존재하므로, 선택신호 발생기(63)은 명령버퍼(40)내에 제3의 4바이트 경계에 헤더정보가 존재하는 것을 발견하고 필드7에 대응하는 필드 선택신호선으로 3을 출력한다.
T5 사이클에서 T6 사이클로의 천이시 어드레스 버스(3)이 136이고 라이트 인에이블 버스(43)이 00100000(2진수)이므로, 어드레스 136~어드레스 139는 명령버퍼(40)에서 새롭게 래치되고 어드레스 108~어드레스 135의 정보가 변경없이 유지된다.
다음에 명령 6에 대해 상술한 T6사이클은 IF단으로 되고, T7사이클에서 명령 6은 명령버퍼(40)에 유지된다. T7사이클에서 명령6의 EXP단이 실행된다.
특히, 헤더어드레스버스(65)가 1이므로, 헤더분석기(60)은 명령6에 대응하는 헤더정보가 T5사이클에서 래치된 정보의 제2의 바이트경계에 있는 것을 발견한다. 이 정보로부터 헤더분석기(60)은 명령6이 3개의 필드 1, 2, 3으로 이루어진 것을 발견한다. 따라서, 명령 6의 헤더정보01110000(2진수)가 변경없이 필드신호선(67)로 출력된다. 또, 명령6이 긴 12바이트이고, 12를 나타내는 001100(2진수)의 정보가 명령길이신호선(68)로 출력된다. 명령길이가 32를 초과하지 않으므로, 리페치신호선(13)이 어서트되지 않는다.
초기사이클 이외의 다른 사이클에 있어서, 어드레스 콘트롤러(61)은 명령어드레스버스(64)의 값에 32를 부가하여 얻어진 값을 어드레스버스(3)으로 출력한다. 따라서, T7사이클에 있어서, 140이 어드레스버스(3)으로 출력된다.
T7사이클에 있어서, 명령 어드레스버스(64)가 108이고 명령길이신호선(68)이 12이므로, 부분 라이트 콘트롤러(62)는 명령버퍼(40)에서 제4의 4바이트 경계에서 12바이트가 명령6에 대응하는 것을 발견하고 00011100(2진수)가 라이트 인에이블버스(43)으로 출력된다.
T7 사이클에서 명령어드레스버스(64)가 108이고 헤더0신호선(66)이 어서트되지 않으므로, 선택신호 발생기(63)은 명령6의 필드가 명령버퍼(40)에서 제4의 32비트 경계에 이어서 유지된 것을 발견한다. 또, 필드신호선(67)의 정보에서 필드가 존재하는 것을 알 수 있다. 따라서, 제4의 32비트 경계에서 필드 1이 유지되고 필드2를 나타내는 선택정보가 3으로 되며 필드 선택 신호선(44)로 출력되는 것을 알 수 있다. 마찬가지로, 필드 2을 나타내는 선택정보가 4로 되고 필드 3을 나타내는 선택정보가 5로 된다.
T7 사이클에서 T8 사이클로의 천이시 어드레스 버스(3)이 140이고 라이트 인에이블 버스(43)이 00011100(2진수)이므로, 어드레스 140~151은 명령버퍼(40)에서 새롭게 래치된다. 이미 유지되고 있던 어드레스 120~어드레스 139의 정보는 변경없이 유지된다. 동시에 명령 길이 신호선(68)이 12이므로, 명령 어드레스 버스(64)의 정보는 108에 12를 부가하여 120으로 되고 헤더 어드레스 버스(65)의 정보는 1에 1을 부가하여 2로 된다.
디코더(100)은 도면에 도시한 변환표에 따라서 8비트정보를 발생한다.
이 정보는 명령어드레스버스(64)의 3비트(IA2~IA4)정보에 따른 배럴시프터(101)에서 순환된다. 따라서, 배럴시프터(101)에서 출력된 정보는 명령어드레스버스(64)에 의해 지시된 명령이 명령버퍼(40)에 유지되는 기본 4바이트로 표시된다. 즉, 이 정보는 다음 사이클로의 천이로 갱신되는 명령버퍼(40)의 위치를 나타낸다.
따라서, 리페치신호선(13)이 어서트되지 않으면, 선택기(104)는 이 정보를 선택하고 이 선택한 정보를 라이트 인에이블버스(43)로 출력한다. 한편, 리페치신호선(13)이 어서트되는 사이클에서는 명령어드레스버스가 다음의 명령의 개시어드레스를 나타내므로, 그 어드레스에서 4를 뺀 값이 명령 필드 7이 저장되는 어드레스로 된다.
명령버퍼(40)내에서 필드 7의 저장위치를 얻기 위해서 가산기(102)는 명령어드레스버스(64)의 3비트(IA2~IA4) 정보에 7(2진수로 110)을 가산한다. 이 가산의 결과, 라이트 인에이블버스(43)으로 출력될 정보가 디코더(103)에 도시된 변환표에 따라서 발생된다.
그 때문에, 선택기(104)는 리페치신호선(13)이 어서트되면 디코더(103)의 출력을 선택한다.
그리고, 부분 라이트 콘트롤러(62)는 라이트 인에이블버스(43)으로 필요한 정보를 출력할 수 있다.
이하, 어드레스 콘트롤러(61)의 동작을 상세하게 설명한다. 도 13은 어드레스 콘트롤러의 구성을 상세하게 도시한 블럭도이다. 도면에 있어서, 도 8에 도시된 것과 동일한 회로블럭과 신호선에는 동일 부호를 부여한다.
도면에 있어서, (110)은 32비트 어드레스 명령어드레스정보를 유지하는 프로그램카운터, (111)은 32비트가산기, (112)는 2비트 헤더카운터 레지스터, (113)은 2비트 가산기, (114)는 OR연산의 부의 정보를 출력하는 2입력 NOR회로, (115)는 '32' 또는 '28'을 선택하는 선택기, (116)은 셀렉터(115)의 출력 또는 '0'을 선택하는 셀렉터, (117)은 32비트 가산기이다.
프로그램카운터(110)은 천이가 발생하는 1사이클마다 명령어드레스정보를 갱신한다. 갱신정보는 가산기(111)에 의해 프로그램카운터(110)의 명령어드레스정보에 명령길이신호선(68)의 정보를 가산하는 것에 의해서 발생한다. 발생된 정보는 명령어드레스버스(64)로 출력된다.
헤더카운터레지스터(112)는 헤더어드레스정보(0~2)를 유지하고, 프로그램카운터(110)은 천이가 발생하는 1사이클마다 헤더어드레스정보를 갱신한다. 이 갱신정보는 가산기(111)에 의해 헤더어드레스정보에 1을 가산하는 것에 의해서 발생한다. 발생된 정보는 헤더어드레스버스(65)로 출력된다.
NOR회로(114)는 헤더어드레스정보가 0인 것을 검출하고 헤더0신호선(66)을 어서트한다.
선택기(115)는 리페치신호선(13)이 어서트되지 않으면 32를 선택하고, 리페치신호선(13)이 어서트 되면 28을 선택하고, 그 선택을 출력한다.
선택기(116)은 초기상태에서만 0을 선택하고 다른 경우에는 셀렉터(115)의 출력을 선택하고, 그 선택을 출력한다.
가산기(117)은 선택기(116)의 출력정보에 명령어드레스버스(64)의 정보를 가산하여 얻은 결과를 어드레스버스(3)으로 출력한다.
그리고, 어드레스 컨트롤러(61)은 필요한 정보를 명령어드레스버스(64), 헤더어드레스버스(65), 헤더0 신호선(66) 및 어드레스버스(3)으로 출력할 수 있다.
이하, 선택신호발생기의 동작에 대해서 상세하게 설명한다. 도 14는 셀렉터발생기(63)을 상세하게 도시한 블럭도이다. 도면에 있어서, 도 8에 도시된 것과 동일한 회로블럭과 신호선에는 동일 부호를 붙이고 있다.
도면에 있어서, (120)은 오프셋 발생회로, (121)은 3비트 가산기, (122)~(128)은 3비트 가산기, (129)는 3비트 가산기, (130)은 선택기이다.
오프셋 발생회로(120)은 제1의 필드 위치가 0이고 필드1~7의 각각의 관련위치를 나타내는 3비트 정보를 발생한다. 대응 위치는 명령메모리(1)내에 저장되어 있는 압축상태의 관련위치를 나타낸다. 따라서, 오프셋 발생회로(120)은 필드가 존재하는 관련 위치에 대해서만 유효한 정보를 출력한다. 오프셋 발생회로에 대한 상세한 것은 후술한다.
가산기(121)은 명령어드레스버스의 3비트정보(IA2~IA4)에 헤더0신호선(66)의 1비트정보를 가산하고, 가산 결과를 출력한다. 헤더를 포함하는 명령에 있어서, 명령어드레스버스(63)의 정보는 헤더위치에 나타나므로, 그 명령의 제1 필드의 필드위치를 찾아내기 위해서는 가산기(121)에 의해 가산이 필요하다. 필드0이 존재하면, 필드0의 위치에 그 결과가 나타나므로 필드선택신호선(44)로 그 가산 결과가 출력된다.
가산기(122)는 오프셋 발생회로에 의해 출력된 필드1의 관련 위치정보를 제1의 필드 위치정보에 가산하는 것에 의해 필드1의 절대위치정보를 발생한다. 마찬가지로 가산기(123)~(128)은 오프셋 발생회로(120)에 의해 출력된 필드2~7의 관련 위치정보를 제1의 필드 위치정보에 가산하는 것에 의해 필드2~7의 절대 위치정보를 발생한다.
특히, 셀렉터(130)은 리페치신호선(13)이 어서트되지 않으면 레지스터파일(28)의 출력을 선택하고, 리페치신호선(13)이 어서트되면 가산기(129)의 출력을 선택하여, 필드7의 선택정보로서 선택을 출력한다.
리페치신호선(13)이 어서트되면, 명령어드레스버스(64)가 다음의 명령어드레스정보를 나타내므로, 필드7의 어드레스정보는 상기한 어드레스정보 -4이다. 따라서, 가산기(121), 가산기(129)는 명령어드레스버스(64)의 3비트(IA2~IA4)정보에 -1(2진수의 111)을 가산하는 것에 의해 필드7의 선택정보를 발생시킨다.
그리고, 선택신호발생기(63)은 필드선택신호선(44) 등으로 필요한 정보를 출력할 수 있다.
도 15는 상기한 오프셋 발생회로의 구성을 상세하게 도시한 도면이다.
도면에 있어서, 도 14에 도시한 것과 동일한 회로블럭과 신호선에는 동일 부호를 붙이고 있다.
도면에 있어서, (131)은 2개의 1비트신호 입력가산기, (132)는 3개의 1비트 입력가산기, (133)은 4개의 1비트 입력가산기, (134)는 5개의 1비트 입력가산기, (135)는 6개의 1비트 입력가산기, (136)은 7개의 1비트 입력가산기이다.
오프셋 발생회로(120)에 있어서, 필드1의 관련 위치정보는 필드0이 존재하면 1이고 필드0이 존재하지 않으면 0이므로, 관련 위치정보는 필드신호선(67)의 필드0의 자체 정보이다. 필드2의 관련 위치정보는 필드0과 필드1의 유무에 의존한다. 즉, 필드가 존재하지 않으면 관련 위치정보는 0이고, 필드가 존재하면 관련 위치정보는 1이며, 필드가 모두 존재하면 관련 위치정보는 2이다. 따라서, 필드0의 1비트정보가 가산기(131)에 의해 필드1의 1비트정보에 가산되면, 관련 위치정보가 발생한다.
또한, 필드3의 관련 위치정보는 필드0~2의 유무에 의존한다. 관련 위치정보는 가산기(132)에 의해 필드0~2의 1비트정보를 함께 가산하는 것에 의해 발생한다. 또, 필드 4의 관련 위치정보는 필드0~3의 유무에 의존한다. 관련 위치정보는 가산기(133)에 의해 필드0~3의 1비트정보를 함께 가산하는 것에 의해 발생한다. 또, 필드 5의 관련 위치정보는 필드 0~4의 유무에 의존한다. 관련 위치정보는 가산기(134)에 의해 필드 0~4의 1비트정보를 함께 가산하는 것에 의해 발생한다. 또, 필드6의 관련 위치정보는 필드 0~5의 유무에 의존한다. 관련 위치정보는 가산기(135)에 의해 필드 0~5의 1비트정보를 함께 가산하는 것에 의해 발생한다. 또, 필드7의 관련 위치정보는 필드0~6의 유무에 의존한다. 관련 위치정보는 가산기(136)에 의해 필드0~6의 1비트정보를 함께 가산하는 것에 의해 발생한다.
지금까지 필드콘트롤러(42)에 대해서 상세하게 설명하였다. 다음에는 SIMD콘트롤러(46)에 대해서 상세하게 설명한다.
도 16은 SIMD컨트롤러(46)을 상세하게 도시한 블럭도이다. 도면에 있어서 도 7에 도시한 것과 동일한 회로블럭과 신호선에는 동일 부호를 붙이고 있다. 도면에 있어서, (140)은 인에이블 분석기, (141)~(143)은 인에이블 분석기(140)과 기능이 동일한 인에이블 분석기, (144)는 신호발생기, (148)~(150)은 2입력 AND회로, (151)~(154) 및 (156)은 좌측의 입력 1비트가 0이면 0을 출력하고 좌측 입력 1비트가 1이면 우측의 2비트정보를 출력하는 AND회로, (155)는 4입력 1비트 OR의 부의 정보를 출력하는 NOR회로이다.
인에이블 분석기(140)은 필드0에 SIMD가 특정되어 있는지를 검출하고, 필드0의 비트9~11(SIMD) 및 비트27(S모드)(도 2참조)의 4비트를 확장 필드버스(49)에서 입력받는다. S모드가 0이면, AND회로(148), (149) 및 (150)은 0을 출력한다. 한편, S모드 비트가 1이면, AND회로(148)은 비트 9의 정보를 출력하고, AND회로(149)는 비트10의 정보를 출력하고, AND회로(150)은 비트11의 정보를 출력한다. 도 2에 도시한 SIMD의 의미에 따르면, AND회로(148)의 정보가 1이면 필드0 및 1의 내용이 필드1 및 2에 복사되는 것을 나타낸다. 또한, AND회로(149)의 정보가 1이면 필드0 및 1의 내용이 필드4 및 5에 복사되는 것을 나타내고, AND회로(150)의 정보가 1이면 필드0 및 1의 내용이 필드6 및 7에 복사되는 것을 나타낸다.
또한, 인에이블 분석기(141)은 필드2내에 SIMD모드가 특정되어 있는지를 검출하고, 인에이블 분석기(142)는 필드 4내에 SIMD모드가 특정되어 있는지를 검출하고, 인에이블 분석기(143)은 필드6내에 SIMD모드가 특정되어 있는지를 검출하여 복사수신지를 식별한다. 인에이블 분석기(140)~(143)에서 발생된 복사명령은 신호발생기로 보내진다. 더욱 구체적으로, 신호발생기(144)는 필드0~1이 복사될 필드를 결정한다. 필드2 및 3으로부터의 복사명령은 AND회로(152)로 보내지고, 필드 4 및 5로부터의 복사명령은 AND회로(153)으로 보내지고, 필드 6 및 7로부터의 복사명령은 AND회로(154)로 보내진다. 이들 복사명령은 여러개의 인에이블 분석기에서 동시에 보내지지 않는다. 이것은 기본적으로 컴파일러에 의해 보증된다. 그 때문에, 복사명령이 인에이블 분석기(140)에서 신호발생기(144)로 보내지는 일이 없으므로, AND회로(151)로의 입력은 0으로 고정된다.
복사명령을 수신하면, AND회로(152)는 복사소스로서 필드2 및 3을 선택하는 정보인 1을 출력한다. 또한, AND회로(153)은 2를 출력하고, AND회로(154)는 3을 출력한다. 복사명령이 발행되지 않으면(즉, SIMD모드가 아니면), NOR회로(155)는 이것을 검출하고, AND회로(156)은 필드0 및 1이 선택되도록 선택정보0을 출력한다. 마지막으로, OR회로(157)은 필드 0 및 1의 선택정보로서 AND회로(151)~(154) 및 (156)에서 출력된 3비트 정보의 논리합을 SIMD선택신호선(47)로 출력한다.
명령6에 계속되는 명령은 동일 시퀀스내에서 재차 순차적으로 실행된다. 각 명령의 EXP단에서 EXE단으로의 천이시, 확장명령필드는 각각의 명령레지스터(14)~(21)에 래치된다. 따라서, EXE단에 있어서, 계산유닛(22)~(25)는 명령레지스터(14)~(21)의 제어하에 계산동작을 실행한다. WB단에서 결과는 명령필드에 의해 특정된 레지스터로 라이트되고 나서 명령실행은 종료된다.
지금까지, 필드콘트롤러(42)의 동작이 실행되었다. 다음에, 그의 구성, 즉 헤더분석기(60), 어드레스 콘트롤러(61), 부분 라이트 콘트롤러(62) 및 선택 신호 발생기(63)에 대해 상세하게 설명한다.
도 11은 헤더분석기(60)을 상세하게 나타낸 블럭도이다. 도 11에 있어서, 도 8과 동일한 회로블럭과 신호선에는 동일부호를 부여한다. 도면에 있어서, (80)은 8개의 4바이트 데이타중의 하나를 선택하는 선택기, (81)~(83)은 1바이트 데이타를 각각 유지하는 래치회로, (84)는 4개의 1바이트 데이타 중의 하나를 선택하는 선택기, (85)는 9개의 1비트 신호 입력 가산기, (86)은 4비트 디코더, (87)은 AND회로, (88)은 1비트 래치회로, (89)는 1비트 인버터, (90)은 AND회로이다.
32비트 명령 어드레스 버스(64)(IA31~IA0)중에서, 선택기(80)은 IA4~IA2중의 3개의 비트중에서 헤더의 위치를 결정하고, 4바이트(4개의 명령에 대해)헤더정보를 출력한다. 헤더0 신호선(66)이 어서트될 때, 헤더정보중에서 제1의 명령헤더는 선택기(84)로 출력되고, 제2의 명령헤더는 래치회로(81)로 출력되고, 제3의 명령헤더는 래치회로(82)로 출력되며, 4개의 명령헤더는 래치회로(83)으로 출력된다.
헤더 어드레스 버스(65)의 정보에 따르면, 선택기(84)는 0일 때 상기 제1의 헤더 정보, 1일 때 상기 래치회로(81)에 유지된 헤더정보, 2일 때 상기 래치회로(82)에 유지된 헤더정보 또는 3일 때 상기 래치회로(83)에 유지된 헤더정보를 선택하고, 상기 선택된 헤더정보를 필드신호선(67)로 출력한다.
필드신호선(67)의 정보에서 가산기(85)는 명령길이정보를 생성한다. 9개의 입력은 필드신호선(67)의 8개의 비트와 헤더0 신호선(66)의 1개의 비트를 포함한다. 기본적으로, 명령길이는 필드신호선(67)의 필드수를 계수하는 것에 의해 알려진다. 또한, 헤더0 신호선(66)이 어서트되는 사이클에 있어서, 명령은 헤더정보를 포함하므로 필드번호에서 발생되는 명령길이에 1이 가해진다. 따라서, 가산기(85)에 의해 가산결과는 0~9의 범위에 있고, 명령길이는 4비트정보로 출력된다. 상기의 승산에 의해 얻어진 실제의 명령길이는 4씩 가산되고, 그 결과 0~36이다.
디코더(86)은 36바이트 명령을 검출하는 회로이고, 입력정보가 9일 때 출력을 어서트한다.
디코더(86)의 출력이 어서트될 때, 래치회로(88)은 사이클사이에서의 천이시 리페치신호선(13)을 어서트한다.
리페치신호선(13)이 어서트될 때, 인버터(89)의 출력은 부정으로 되고, AND회로(87)은 디코더(86)의 출력을 마스크한다.
이 상태에 있어서, 사이클에서의 천이시, 래치회로(88)은 리페치신호선(13)을 부정으로 한다. 즉, 리페치신호선(13)은 항상 사이클에서 부정으로 되고, 다음 사이클에서 리페치신호선(13)은 어서트된다. 리페치신호선(13)이 어서트되는 경우, 인버터(89)의 출력은 가산기(85)의 출력을 마스크하고, AND회로(90)은 명령길이 0의 정보를 명령길이신호선(68)로 출력한다. 리페치신호선이 어서트되지 않으면, 가산기(85)에서 출력된 명령길이정보는 명령신호선(68)로 출력된다.
따라서, 헤더분석기(60)은 필요한 정보를 명령길이신호선(68), 필드신호선(67), 리페치신호선(13)로 출력한다.
다음에, 부분 라이트 콘트롤러(62)의 동작을 상세하게 설명한다. 도 12는 부분 라이트 콘트롤러(62)의 상세한 구조를 나타내는 블럭도이다. 이 도면에 있어서, 도 8가 동일한 회로블럭과 신호선에는 동일부호를 부여한다.
도면에 있어서, (100)은 4비트 입력과 8비트 출력 디코더이고, (101)은 8비트 배럴 시프터이고, (102)는 3비트 가산기, (103)은 어드레스 버스 3비트 입력과 8비트 출력 디코더이고, (104)는 배럴시프터(101)과 디코더(103)의 출력을 선택하고 선택된 출력을 라이트 인에이블 버스(43)으로 출력하는 선택기이다.
신호발생기(145)는 기본적으로 신호발생기(144)와 동일한 방법으로 동작한다. 그러나, 필드2 및 3의 선택정보가 출력되고 비복사명령이 인에이블 분석기(141)에서 전송되므로, 비복사명령(즉, SIMD모드 없음)이 검출될 때 그의 해당하는 출력이 0으로 고정되고, 선택정보 1은 필드2 및 3이 선택되도록 출력된다.
마찬가지로, 신호발생기(146)은 기본적으로 신호발생기(144)와 동일한 방법으로 동작한다. 그러나, 필드 4 및 5의 선택정보가 출력되고 비복사명령이 인에이블 분석기(142)에서 전송되므로, 비복사명령(즉, SIMD모드 없음)이 검출될 때 그에 해당하는 출력은 0으로 고정되고 선택정보 2는 필드4 및 5가 선택되도록 출력된다.
또한, 신호발생기(147)은 기본적으로 신호발생기(144)와 동일한 방법으로 동작한다. 그러나, 필드 6 및 7의 선택정보가 출력되고 비복사명령이 인에이블 분석기(143)에서 전송되므로, 비복사명령(즉, SIMD모드에 없음)이 검출될 때 그에 해당하는 출력은 0으로 고정되고, 선택정보 3은 필드 2 및 3이 선택되도록 출력된다.
이상, 도 1에 도시한 제1 실시예를 설명하였다. 이 실시예에 있어서는 NOP압축헤더가 가정되고 이 헤더가 SIMD모드에도 사용된다.
일반적으로, VLIW에 있어서, 목표의 약 80%가 NOP에 의해 달성된다. 따라서, 메모리이용효율을 고려할 때 NOP압축은 필수적인 기술이다. 이러한 기술에서 사용된 헤더를 SIMD모드에도 적용하는 것으로 오버헤드를 저감시키는 것이 이 실시예의 특징이다.
상술한 실시예에 있어서, SIMD모드는 각각의 필드에 4비트를 부가하는 것에 의해 실행된다. 헤더가 없는 것으로 가정하면, SIMD모드를 실행시키기 위해 각각의 필드에 7비트를 부가할 필요가 있다. 즉, 이 실시예에서 사용된 4비트에 부가하여 필드어드레스용의 2비트 및 동기화제어용의 1비트가 요구된다.
SIMD모드에 생략된 필드가 존재하기 때문에, 각 필드는 필드0, 1, 필드 2, 3, 필드 4, 5 또는 필드 6, 7을 알기 위해 필요하다. 이를 위해 필드어드레스용 2비트가 필요하다. 또한, 하나의 명령의 필드수는 일정하지 않기 때문에 명령간의 구별은 알 수 없다. 구별을 명확히 하기 위해, 동기화제어의 1비트가 요구된다. 모든 명령에 대한 이 비트의 정보를 반전하는 것에 의해, 구별을 검출할수 있게 된다. 따라서, 1필드 단위의 압축을 이 실시예와 같이 고려하면, 하나의 명령에 대해 다음의 비트수(32비트×8=256비트)가 요구된다.
8[필드]×(2[필드 어드레스]+1[동기제어])+8[필드]/2×(3[SIMD]+1[S모드])=40비트
여기서, [ ]안의 단어는 이전의 수자의 의미를 나타낸다. 2필드 단위의 압축을 고려하면, 하나의 명령에 대해 다음의 비트수가 요구된다.
8/2×(2+1)+8/2×(3+1)=28비트
한편, 본 실시예는 다음의 헤더를 포함하는 수만이 요구된다.
8[헤더]+8/2×(3+1)=24비트
따라서, SIMD모드를 실행하기 위한 오버헤드를 저감시킬 수 있다.
다음에, 도 17에 따라 본 발명의 제2 실시예로서 실행된 상술한 헤더를 가정하지 않는 방법을 기술한다. 특히, 제 2 실시예에 있어서는 상술한 2필드 단위의 압축에 대해서 고려된다. 도 17은 VLIW 처리의 전체를 도시한 블럭도이다. 도면에 있어서, 상술한 도 1과 동일한 회로블럭 및 신호선은 동일부호로 나타낸다. 도면에 있어서, (200)은 도 1에 도시한 것과는 다른 명령 확장회로이다. 이 실시예에 있어서, 헤더가 사용되지 않고 하나의 명령은 항상 32비트이하로 구성되고 도 1의 리페치신호선(13)은 요구되지 않는다. 즉, 도 10에 도시한 명령 5에 의해 요구되는 EXP2단이 존재하지 않는다. 이것은 이 실시예의 특징중의 하나이다. 이것과 명령확장회로(200)의 내부 동작을 제외하고, 이 실시예는 도 1의 실시예와 동일하다.
도 18은 이 실시예의 명령포맷을 도시한 것이다. 도면에 있어서, INT필드의 0~27비트 및 IFG필드는 제1 실시예와 동일하다. IFG필드의 비트28 및 29는 그 필드의 어드레스로 나타낸다. IFG필드는 필드 0, 2, 4 및 6중 하나이고, 필드할당은 도면에 도시한 바와 같다. IFG필드의 비트(30)(sync)는 동기신호를 나타낸다. 모든 명령에 대한 동기 비트를 반전하는 것에 의해, 명령간의 구별을 인식할 수 있게 된다. 도면에 있어서, 동기비트는 짝수명령에 대해 0, 홀수명령에 대해 1로 되게 특정된다. 이러한 명령포맷에 따라서, 이하 이 실시예의 핵심인 명령확장회로(200)의 상세한 동작을 설명한다.
도 19는 명령확장회로(200)을 상세하게 설명한 블럭도이다. 도면에 있어서, 상술한 도 7 및 도 17과 동일한 회로블럭 및 신호선은 동일부호로 나타낸다.
도면에 있어서, (201)은 하나의 명령을 발생하기 위해 압축필드버스(41)에서 각각의 필드를 선택하기 위한 정보를 발생하는 필드콘트롤러, (206)~(209)는 상기 선택정보를 전송하는 선택정보선, (202)는 필드 0, 1을 발생하는 이중선택기, (203)은 필드 2, 3을 발생하는 이중선택기, (204)는 필드 4, 5를 선택하는 이중선택기 (205)는 필드 6, 7을 발생하는 이중선택기이다. 도시하지 않지만, 이중선택기(203)~(205)는 이중선택기(202)의 회로구성과 동일하다. 명령버퍼(40)에서 동시에 리드된 32바이트가 1필드에 상당하는 4바이트의 단위로 8개의 신호선(41a~41h)에 의해 구성된다. (41a)는 어드레스(32xN)에서 리드된 데이타에 해당하고, (41b)는 어드레스(32xN+4)에서 리드된 데이타에 해당하고, ……, (41h)는 어드레스(32xN+28)에서 리드된 데이타에 해당한다.
이중선택기(202)는 선택정보선(206)의 선택정보에 따라서 압축필드버스(41a), (41c), (41e) 및 (41g)에서 선택된 필드0의 데이타를 필드버스(5)로 출력하고, 압출필드버스(41b), (41d), (41f) 및 (41h)에서 선택된 필드1의 데이타를 필드버스(6)으로 출력한다. 선택정보선(206)의 선택정보는 4비트로 구성되고, 기본적으로 1비트로 단정된다. 그들 4비트가 어서트되지 않으면, NOP필드는 가정되고 NOP필드에 해당하는 0이 출력된다. 이 때문에 기본 2필드상의 NOP압축이 가능하다. 마찬가지로, 이중선택기(203)~(205)은 필드 2~7의 데이타를 발생하고, 발생된 데이타를 출력한다.
다음에, 필드콘트롤러(201)을 상세하게 설명한다. 도 20은 필드콘트롤러(201)을 상세하게 설명한 블럭도이다. 도면에 있어서, 도 8 및 도 19에 도시한 것과 동일한 회로블럭 및 신호선은 동일 부호로 나타낸다.
도면에 있어서, (210)은 압축필드버스(41) 및 명령어드레스버스(64)의 정보에서 정보길이 신호선(68) 및 라이트 인에이블버스(43)으로 출력될 정보를 발생하는 동기화기를 나타내고, (211)은 압축필드버스(41) 및 라이트 인에이블버스(43)의 정보에서 선택정보선(206)~(209)로 출력될 선택정보를 발생하는 선택신호 발생기를 나타낸다. 어드레스콘트롤러(61)은 기본적으로 도 8에 도시한 어드레스콘트롤러(61)의 기능과 동일하다.
동기화기(210)은 동기비트(41a), (41c), (41e) 및 (41g)를 압축필드버스(41)에서 입력한다. 그리고, 명령어드레스버스(64)로부터 명령어드레스를 입력하는 것에 의해, 동기비트가 실행시의 명령에 대응하는 것을 알 수 있다. 또, 동기비트의 변환점을 검사하는 것에 의해 명령의 길이를 알 수 있다. 또한, 동기화기는 명령이 존재하는 상기한 압축필드버스에서 데이타를 식별하고, 데이타가 라이트되어 있는 명령버퍼(40)의 위치를 나타내는 정보를 명령길이신호선(68)로 출력한다.
선택신호 발생기(211)은 SIMD 및 S모드의 라이트인에이블버스(43), (41a), (41c), (41e) 및 (41g)의 정보와 어드레스정보를 압축필드(41)에서 수신한다. 각각의 정보에서 선택신호발생기는 필드 0의 위치정보(4비트(41a), (41c), (41e) 및 (41h)중 하나를 나타내는 정보)의 4비트를 선택정보선(206)으로 출력한다. 필드 0이 NOP압축이면, 4비트 모두는 0으로 된다. 이것은 동시에 필드 1의 선택정보(4비트(41b), (41d), (41f) 및 (41g)중 하나를 나타내는 정보)를 마련한다. 마찬가지로, 선택신호발생기는 필드 2의 위치정보((41a), (41c), (41e) 및 (41h)중 하나를 나타내는 정보)의 4비트를 선택정보선(207)로 출력하고, 필드 4의 위치정보((41a), (41c), (41e) 및 (41h)중 하나를 나타내는 정보)의 4비트를 선택정보선(208)로 출력하고, 필드 6으 위치정보((41a), (41c), (41e) 및 (41h)중 하나를 나타내는 정보)의 4비트를 선택정보선(209)로 출력한다.
도 21은 동기화기(21)을 상세하게 도시한 블럭도이다. 도면에 있어서, 상술한 도 20과 동일한 회로블럭 및 신호선은 동일부호로 나타낸다.
도면에 있어서, (220)은 라이트동작을 유효화하는 정보를 명령버퍼(40)의 (41a) 및 (41b)로 발생하는 라이트 인에이블발생기를 나타내고, (221)~(223)은 라이트인에이블발생회로(220)과 기능이 동일하고 라이트동작을 유효화하는 정보를 명령버퍼(40)의 (41c)와 (41d), (41e)와 (41f), (41g)와 (41h)로 발생하는 라이트인에이블발생회로를 나타내고, (224)는 명령어드레스버스(64)의 정보의 IA4 및 IA3의 2비트를 디코드하는 디코더이다. 디코더(224)에 출력된 4개의 신호선은 선택신호발생기(63)에 의한 신호지시(41a), (41b), 신호지시(41c), (41d), 신호지시(41e), (41f) 및 신호지시 (41g), (41h)를 나타낸다.
라이트 인에이블 발생회로(220)은 (41a), (41b)의 라이트 유효정보를 발생한다. 라이트 인에이블 발생회로는 압축필드버스(41)에서 (41a), (41g)의 동기정보, 디코더(223)에서 (41a), (41b)의 디코드신호, 라이트 인에이블 발생회로(223)에서의 라이트 유효정보를 각각 수신한다. 디코더(224)로부터의 디코드신호가 어서트되면, 라이트 인에이블 발생회로(220)은 라이트 유효정보를 어서트한다. 디코드신호가 어서트되지 않고 라이트 인에이블 발생신호(223)의 출력도 어서트되지 않으면, 라이트 인에이블 발생회로(220)은 라이트 유효정보를 부정한다. 디코드신호는 어서트되지 않고 라이트 인에이블 발생신호(223)의 출력이 어서트되면, 라이트 인에이블 발생회로(220)은 (41g)의 동기비트와 (41a)의 동기정보를 비교한다. 일치로 판정되면, 라이트 인에이블 발생회로(220)은 명령간의 차이점이 검출되지 않은 것으로 판정하고 라이트 유효정보를 어서트한다. 반대로, 불일치라고 판정되면, 라이트 인에이블 발생회로(220)은 명령간의 차이점이 검출된 것으로 판정하고 라이트 유효정보를 부정한다.
그리고, 라이트 인에이블 발생회로(220)은 (41a), (41b)의 라이트 유효정보를 발생한다. 이것은 다음 사이클로의 천이시에 명령버퍼(40)에서 라이트동작을 실행할지의 여부를 제어한다. 또한, 라이트 인에이블 발생회로(221)은 (41c), (41d)의 라이트 유효정보를 발생하고, 라이트 인에이블 발생회로(222)는 (41e), (41f)의 라이트 유효정보를 발생하고, 라이트 인에이블 발생회로(223)은 (41g), (41h)의 라이트 유효정보를 발생하고, 이 발생된 정보를 각각 라이트 인에이블버스(43)으로 출력한다. 가산기(225)는 라이트 인에이블 발생회로(220)~(223)에서 4개의 신호를 수신하여 4입력 가산의 결과를 명령길이신호선(68)로 출력한다. 1비트는 8바이트(2필드당)이므로, 가산 결과는 최대 32바이트이다. 가산 결과는 명령길이정보로서 명령길이신호선(68)로 출력된다.
이하, 선택신호발생기(211)의 동작에 대해서 상세하게 설명한다. 도 22는 선택신호발생기(211)을 상세하게 도시한 블럭도이다. 도면에 있어서, 도 20에 도시한 것과 동일한 회로블럭 및 신호선에는 동일 부호를 부여한다.
(230)~(233)은 동일기능을 갖는 수신지신호 발생회로이다. 수신지신호 발생회로(230)에 있어서, (234)는 도면에 도시한 진리표를 실행하기 위한 조합회로를 나타내고, (235)는 2비트 디코더를 나타내며, (236)~(239)는 동일기능을 갖는 논리회로를 나타낸다.
수신지신호 발생회로(230)은 (41a)와 (41c)에 대응하는 필드를 결정한다. 논리회로(236)은 필드 0과 필드 1에 대응하는 (41a)와 (41c)를 나타내고, 논리회로(237)은 필드 2와 필드 3에 대응하는 (41a)와 (41c)를 나타내고, 논리회로(238)은 필드 4와 필드 5에 대응하는 (41a)와 (41c)를 나타내고, 논리회로(239)는 필드 6과 필드 7에 대응하는 (41a)와 (41c)를 나타낸다. 따라서, (41a)와 (41b)가 필드 0과 필드 1에 대응하면 논리회로(236)의 출력을 어서트하고, (41a)와 (41b)가 필드 2와 필드 3에 대응하면 논리회로(237)의 출력을 어서트하고, (41a)와 (41b)가 필드 4와 필드 5에 대응하면 논리회로(238)의 출력을 어서트하고, (41a)와 (41b)가 필드 6와 필드 7에 대응하면 논리회로(239)의 출력을 어서트한다. (41a)의 명령은 SIMD모드를 지정하면, 수신지신호 발생회로(230)은 동시에 여러개의 신호를 어서트한다. 예를 들면, 복사는 모두 서로 다른 3개의 필드에서 이루어지고, 논리회로(236)~(239)의 출력신호가 모두 어서트된다.
수신지신호 발생회로(230)은 압축필드버스(41)에서 (41a)의 SIMD, S-모드 및 어드레스를 수신한다. 이들 입력정보의 일부로 부터 조합회로(234)는 도면에 도시한 진리표에 의한 출력정보 sf0~sf3을 발생한다. sf0~sf3은 (41a)의 필드가 S모드를 지정하는 경우, (41a)의 복사 수신지 필드를 지정하기 위한 신호이다. 도면에 있어서, a, b, c는 SIMD의 3비트 논리값을 나타낸다. 따라서, sf0~sf3의 a, b, c는 논리값이 그대로 출력되는 것을 나타낸다. sf0은 (41a)의 필드가 SIMD모드를 지정하고 필드 0이 복사 수신지로서 지정된 경우에 어서트된다. 마찬가지로, sf1~sf3은 필드 2, 4 및 6이 복사 수신지로서 어서트된 경우에 어서트된다.
디코더(235)는 필드 어드레스 정보를 디코드하고, (41a)가 필드를 나타낸다. (41a)가 필드 0이면, 논리회로(236)으로 출력이 어서트되고, (41a)가 필드 2이면 논리회로(237)로 출력이 어서트되고, (41a)가 필드 4이면 논리회로(238)로 출력이 어서트되며, (41a)가 필드 6이면 논리회로(239)로 출력이 어서트된다.
또, 수신지신호 발생회로(230)은 라이트 인에이블 버스(43)에서 라이트 유효 정보(43a)을 수신한다. 이 정보가 어서트된다는 것은 (43a)가 실행명령의 필드라는 것을 나타낸다. 따라서, 이 신호가 어서트되지 않으면 논리회로(236)~(239)의 출력은 모두 어서트되지 않는다. 반대로, 이들 출력이 어서트되면, 디코더(235)의 출력선을 따라 어서트된 1개의 신호선에 접속된 논리회로는 출력신호를 어서트한다. 어드레스가 00(2진수)이면 논리회로(236)은 출력신호를 어서트하고, 어드레스가 01(2진수)이면 논리회로(237)은 출력신호를 어서트하고, 어드레스가 10(2진수)이면 논리회로(238)은 출력신호를 어서트하고, 어드레스가 11(2진수)이면 논리회로(239)는 출력신호를 어서트한다. 예를 들면, SIMD 모드에서 논리회로(236)이 출력신호를 어서트하고 필드 2와 필드 4의 복사가 지정되는 경우, 논리회로(236)과 (237)의 출력신호가 모두 어서트되도록 수신지신호 발생회로(230)은 논리회로(237)과 (238)로 신호를 어서트한다.
그리고, 수신지신호 발생회로(230)은 (41a)에 대응하는 명령필드를 결정하고 SIMD모드에서의 복사 수신지 필드를 결정하며, 선택정보선(206)을 거쳐 이중의 선택기(202)로 (41a)의 수신지필드를 지정한다. 마찬가지로, SIMD모드에서 복사 수신지 필드를 결정하는 것에 의해, 수신지신호 발생회로(231)은 (41c)에 대응하는 명령필드를 결정하고, 수신지신호 발생회로(232)는 (41e)에 대응하는 명령필드를 결정하고, 수신지신호 발생회로(233)은 (41g)에 대응하는 명령필드를 결정하여(41c), (41e), (41g)의 필드정보의 수신지필드수를 이중 선택기로 지정한다.
수신지가 필드 0인 수신지신호 발생회로(230)~(233)의 출력신호는 선택신호선(206)으로 출력된다. 마찬가지로, 수신지가 필드 2인 수신지신호 발생회로(230)~(233)의 출력신호는 선택신호선(207)로 출력되고, 수신지가 필드 4인 수신지신호 발생회로(230)~(233)의 출력신호는 선택신호선(208)로 출력되고, 수신지가 필드 6인 수신지신호 발생회로(230)~(233)의 출력신호는 선택신호선(209)로 출력된다. 이들 선택정보의 일부를 사용하는 것에 의해, 도 19에 도시한 바와 같이 이중 선택기(202)~(205)는 압축필드버스(41)의 정보에서 각각의 필드정보를 선택할 수 있다.
지금까지 본 발명의 제2 실시예를 설명하였다. 상기한 제1 실시예와 달리 이 실시예는 SIMD모드가 헤더정보를 사용하는 일 없이 실행된다는 특징이 있다. 최대명령길이가 32바이트이므로, 다음에 실행될 명령이 명령버퍼(40)(32바이트)에 항상 미리 준비되어 있으므로, 하나의 명령의 대기를 위해 필요한 다른 1사이클을 간단한 파이프라인 제어를 위해 제거할 수 있다는 이점을 갖는다. 제 1 실시예에 있어서 상기한 1사이클 이상을 제거하기 위해서는 64바이트 버퍼가 마련되어야만 한다. 그러나, 제2 실시예에 있어서는 보다 작은 하드웨어량에 의해 그러한 버퍼를 필요로 하지 않는다.
다음에, 도 23을 참조해서 본 발명의 제 3 실시예를 설명한다. 도면에 있어서, 도 17에서 설명한 것과 동일한 회로블럭과 신호선은 동일한 부호로 나타낸다.
도면에 있어서, (240)은 모든 계산유닛에 공통된 레지스터파일을 나타내고, (241)은 이 실시예의 독특한 명령확장회로를 나타낸다. 이 실시예는 레지스터 파일(240)이 계산유닛에 공통되는 것에 특징이 있다. 이 경우, 레지스터 지정방법은 명령포맷과는 다르다.
도 24는 이 실시예의 특정명령포맷을 도시한 도면이다. 이 도면에 도시된 명령포맷은 도 18에 도시한 것과 기본적으로 동일하다. 그 차이는 다음과 같다. 수신지로서의 뱅크지정이 불필요하므로, IFG필드의 비트 9~11은 SIMD에서만 유효하고 정상모드에서는 중요하지 않다. 마찬가지로, INF필드의 비트 11~13도 유효하지 않다. 이 경우, SIMD모드에서 문제가 발생한다. 즉, 필드에 의해 지정된 레지스터수가 물리적으로 동일 레지스터를 나타내어 레지스터 리소스 논쟁을 야기시킨다. 그러므로, SIMD모드에 의해 복사된 필드의 레지스터수를 조정할 필요가 있고, 그것에 의해 야기되는 논쟁을 방지할 수 있다. 이 동작은 명령확장회로(241)에 의해 실행된다.
도 25는 명령확장회로(241)을 상세하게 설명한 블럭도이다. 도면에 있어서, 도 23과 도 19에서 설명한 것과 동일한 회로블럭과 신호선은 동일한 부호를 부여한다.
도면에 있어서, (250)~(253)은 레지스터 조정기이다. 레지스터 조정기 (250)은 입력된 필드의 비트 27을 검사한다. 정상모드에 있어서 레지스터수는 실행할 필드에 있어서 변경되지 않는다. 반대로, SIMD모드에서 레지스터 조정기는 비트 28과 비트 29의 어드레스를 검사한다. 따라서 어드레스가 필드 0이면, 필드는 복사 소스 필드로서 레지스터수의 변경을 실행하지 않는다. 반대로, 어드레스가 필드 0 이외이면, 필드는 복사 수신지 필드이고, 레지스터수(비트 12~16, 비트 17~21, 비트 22~26)는 갱신된다. 특히, 필드가 필드 3이면 오프셋값 1이 각각의 레지스터수에 부가되고, 필드가 필드 2이면 오프셋값 2가 각각의 레지스터수에 부가되고, 필드가 피드 1이면 오프셋값 3은 각각의 레지스터수에 부가된다.
레지스터 조정기(251)도 마찬가지로 동작한다. 레지스터 조정기(251)은 입력필드의 비트 27을 체크한다. 정상의 모드에 있어서, 레지스터수는 실행할 필드에 있어서 변경되지 않는다. 반대로, SIMD모드에서 레지스터 조정기는 비트 28과 비트 29의 어드레스를 검사한다. 따라서, 어드레스가 필드 1이면 필드는 복사 소스 필드로서 레지스터수의 변경을 실행하지 않는다. 반대로, 어드레스가 필드 0이외이면 필드는 복사 수신지 필드이고 레지스터수(비트12~16, 비트 17~21, 비트 22~26)가 갱신된다. 특히, 필드가 필드 0이면 오프셋값 1은 각각의 레지스터수에 부가되고, 필드가 필드 3이면 오프셋값 2는 각각의 레지스터수에 부가되고, 필드가 필드 2이면 오프셋값 3은 각각의 레지스터 수에 부가된다. 레지스터 조정기(252)와 (253)은 일반적으로 동일한 방식으로 동작한다. 이 레지스터 조정기(250)~(253)은 상기 동작을 실행하기 위한 조합회로에 의해 실행될 수 있다.
도 26은 조합회로를 실행하기 위한 진리표를 도시한 도면이다. 도면에 있어서, 입력필드의 S모드는 비트 27을 나타내고, 어드레스는 비트 28과 비트 29를 나타내고, 레지스터 #은 입력값(0~31)의 비트 12~16, 17~21, 22~26을 나타낸다. 출력필드의 레지스터 #은 출력값의 비트 12~16, 17~21, 22~26을 나타낸다. 특히, 출력레지스터 #이 31을 초과하면 32를 감산해서 얻어진 값이 사용된다.
상술한 바와 같이 본 발명은 레지스터 파일이 여러개의 계산부에 의해 공유된 프로세서에도 적용할 수 있다.
상술한 실시예에서 사용된 명령포맷은 다른 포맷으로도 사용될 수 있다.
상술한 실시예 1, 2 및 3은 스테이틱 스케쥴링을 가정한 VLIW프로세서에 적용되지만 본 발명은 그것에 한정할 필요는 없다. 예를 들면, 본 발명은 다이나믹 스케쥴링을 실행하는 슈퍼스칼라 프로세서에 적용할 수도 있다. 슈퍼스칼라 프로세서에서의 명령은 기본적으로 상술한 실시예와 같이 1개의 필드의 고정길이에 의해 이루어진다. 이러한 프로세서는 여러개의 계산유닛과 명령큐를 내장하고 여러개의 명령큐 사이의 관계를 검사하는 디스패쳐(dispatcher)를 갖고, 의존상태 및 여러개의 실행가능한 명령이 발견되지 않으면, 이 명령을 여러개의 계산유닛으로 동시에 전송한다. 그러므로, 본 발명의 도 2에 도시한 바와 같이, SIMD모드가 S모드와 SIMD에 의해 명령포맷에서 지정되면, 상술한 발송유닛은 여러개의 계산유닛으로 명령을 전송하여 슈퍼스칼라 프로세서의 SIMD모드를 용이하게 실행한다.
도 27은 특정 종합적인 블럭도를 도시한 도면이다. 도면에 있어서, 도 23에서 설명한 것과 동일한 회로블럭과 신호선은 동일한 부호로 나타낸다. 도면에 있어서, (260)은 슈퍼스칼라 구조에 대응하는 명령확장회로를 나타낸다.
도 28은 이 실시예에서 사용된 명령을 도시한 도면이다. 도시한 바와 같이, IFG필드와 INT필드는 각각 하나의 명령을 구성한다. 따라서, 명령이 속하는 포맷을 알 필요가 있으므로, 비트31이 0일 때 IFG포맷을 나타내고, 비트 31이 1일 때 INT포맷을 나타낸다. 순차비트는 도 24의 수단과 동일수단을 갖는다. 그러나, 수신지, 소스0, 소스1 및 INT명령에서의 여분의 블럭은 다른 비트위치에 있다. 따라서, 명령확장회로(260)은 동시에 실행할 수 있는 여러개의 명령을 추출하고, 추출된 명령을 계산유닛에 입력한다.
도 29는 명령확장회로(260)의 상세한 구성을 도시한 도면이다. 도면에 있어서, 도 27 및 도 25에 도시한 것과 동일한 회로블럭과 신호선은 동일부호를 부가하고 있다.
도면에 있어서, (270)은 스케쥴된 명령을 계산부로 입력하는 것을 제어하고 스케쥴링하는 명령을 실행하는 디스페처이고, (271)은 명령큐를 나타낸다. 도면에 있어서, 명령큐(271)은 최대 8개의 명령을 저장할 수 있다. 압축 필드버스(41a)~(41h)를 통해 디스패처(270)은 이 모든 명령을 알 수 있다.
디스패처(270)은 프로세서에서 내부자원 사이에서의 의존성을 검사하기 위해 각각의 명령필드의 내용을 분석한다. 그 결과, 디스패처는 서로의 독립적인 여러개의 명령을 결정하고, 이들 명령을 전용 계산부로 입력하기 위한 데이타를 이중선택기(202)~(205)로 전송한다. 한편, 라이트 인에이블 버스(43)는 명령큐(271)에서 명령이 실행되는 명령큐(271)을 통지함과 동시에 어드레스버스(3)을 거쳐서 명령큐(271)에 유지된 명령코드를 포함하는 어드레스정보를 어드레스버스(3)으로 출력한다. 예를 들어, 3개의 명령(41a)~(41c)가 실행되면, 명령큐(271)은 5개의 명령(41d)~(41h)를 (41a)~(41e)의 위치로 전송함과 동시에 어드레스버스(3)의 정보에 따라 전송된 3개의 명령을 (41f)~(41h)로 래치한다.
상술한 구성을 갖는 슈퍼스칼라 프로세서에 있어서, 도 19에 도시한 필드 콘트롤러(201)의 구성은 디스패처(270)이 SIMD를 분석하고, 하나의 명령을 여러개의 계산유닛에 입력하는 것을 참조하면 용이하게 실행된다.
상술한 슈퍼스칼라 프로세서가 동적으로 스케쥴하더라도, 컴파일러는 활성으로 병렬계산을 실행하기 위해 명령을 소트한다(예를 들면 루프확장). 이것은 목표코드 크기를 증가시키므로, 여러개의 명령을 하나씩 실행하는 본 발명이 슈퍼스칼라 프로세서의 코드크기를 감소시키는데 효율적이다.
본 발명의 도 1의 실시예에 있어서, 계산유닛(22)~(25)는 기능적으로 동일한 것으로 가정하였다. 그러나, 본 발명은 그것에 한정되는 것은 아니다. 예를 들면, SIMD모드에서 동작가능한 명령은 제한되어도 좋다. 좀 더 구체적으로, 계산유닛(22)~(25)가 분기명령이 아니고 SIMD모드에 따라 멀티미디어에 유효한 계산을 위해 명령세트만으로 이루어진 경우, 계산유닛(22)~(25)는 기능적으로 전부 동일하지 않아도 된다. 이 경우의 이점은 각 계산유닛을 지원하는 동작의 수를 증가시킬 수 있다.
예를 들면, 도 2에 도시한 IFG필드에 있어서, 256명령을 8비트 ope 코드와 1비트 S 모드에 의해 실행할 수 있고, SIMD모드는 이들 명령의 각각에 대해 특정될 수 있다. SIMD모드에서의 동작가능한 명령의 수가 128로 한정되어 있으면, 계산유닛(22)~(25)를 384명령까지 지원할 수 있다. 즉, 128명령이므로, 8비트 ope코드에 의해 특정된 명령의 1/2은 SIMD모드를 지정하지 않고, 1비트의 S모드가 ope 코드의 일부로서 사용할 수 있으며, SIMD모드와 대응하지 않는 것은 256명령을 지원한다.
또한, 본 발명이 SIMD모드를 사용하고 있으므로, 도 1에 도시한 계산유닛 (22)~(25)는 동일기능을 갖는다. 이 구조는 SIMD모드를 사용에 부가해서 다음의 이점을 갖는다.
첫번째로, 프로세서 개발단계의 수를 감소시킬 수 있다. 즉, 계산유닛(22)의 회로를 복사하는 것에 의해 계산유닛(23)~(25)의 회로를 개발할 수 있다. 즉, 회로의 개발단계를 종래의 개발의 25%로 할 수 있다.
두번째로, 각 계산유닛의 유용성을 증가시킬 수 있다. 각 계산유닛에 있어서의 IFG계산부가 숫자계산명령과 멀티미디어 처리명령 등의 여러가지의 사용에 호환성을 갖는다. 이 구성은 4개의 계산유닛(22)~(25)의 IFG계산부에 의해 숫자계산을 요구하는 적용에 따라 숫자계산명령을 실행하고, 4개의 계산유닛의 IFG계산부에 의해 처리되는 멀티미디어를 요구하는 적용에 대해 멀티미디어 처리명령을 실행하는 것에 의해 각종의 운용에 대해 충분히 유용하게 될 IFG계산부의 용량을 갖게 한다.
본 발명의 요지인 IFG계산부의 구성의 1예를 다음에 설명한다. 구체적으로, 숫자계산에서 사용하는 32x32비트 다중명령과 멀티미디어에서 사용하는 128비트 데이타상에서 16개의 8x8비트의 계산동작을 정확하게 실행하는 분할명령을 실행할 수 있는 IFG계산부를 구성하는 방법을 설명한다. 통상, 32x32비트 다중의 결과는 데이타를 4개의 8비트 부분으로 분할하고, 연산을 16개의 8x8비트 다중연산으로 분할하며, 이들 연산의 결과의 합을 얻는 것에 의해 얻어진다. 따라서, 16개의 8비트 승수를 필요로 한다. 이것에 따라, 멀티미디어 처리에서 자주 사용되는 8비트 승산을 16개의 연산에 있어서 정확하게 실행할 수 있다. 따라서, IFG계산부는 대부분의 회로를 공유하면서 각종 적용과 호환성을 갖게 실행할 수 있다. 이하, IFG계산부의 상세한 구성을 도 30에 따라 설명한다.
도 30에 있어서, 도 1과 동일한 회로블럭과 신호선에는 동일부호를 부여한다.
도면에 있어서, (300)과 (301)은 멀티미디어에서 사용하는 분할된 승산 명령의 오퍼랜드를 유지하는 128비트 레지스터, (302)는 기본 8비트상에서 32비트 승산용 데이타를 분배하는 오퍼랜드루터, (303)은 256비트 2입력 선택기, (304)는 8비트 승산기, (305)는 승산결과를 가산하기 위한 가산기이다.
먼저, 분할된 승산명령에 대해 설명한다. 분할된 승산 명령은 레지스터(300)에 저장된 8비트 데이타의 16개(a0~a15)와 레지스터(301)에 저장된 8비트 데이타의 16개(b1~b15)상에 (a0xb0+a1xb1+a2xb2+a3xb3+a4xb4+a5xb5+a6xb6+…a15xb15)의 계산을 실행한다. 이 계산을 위해 이 승산명령이 실행되기 전에 데이타는 레지스터(300)과 (301)에 세트된다.
이 명령이 실행될 때, 선택기(303)은 레지스터(300)과 (301)의 데이타를 선택하고, 선택된 데이타를 각 승산기로 출력한다. 승산기(304)는 a0xb0의 항을 계산한다. 마찬가지로, 나머지 15개의 승산기는 각각 a1xb1, a2xb2, a3xb3, …, a15xb15를 계산한다. 이들 승산기연산의 결과는 가산기(305)로 보내진다.
이 명령이 실행되고 있는 동안, 가산기(305)는 16개의 승산결과를 합한 결과를 출력한다.
한편, 32비트x32비트 승산명령에 있어서, 데이타는 4개의 8비트 데이타(a0~a3 및 b0~b3)로 분할되고, 승산은 16개의 8비트 승산동작으로 분할된다.
(c0=a0xb0, c1=a0xb1, c2=a0xb2, c3=a0xb3, c4=a1xb0, c5=a1xb1,
c6=a1xb2, c7=a1xb3, c8=a2xb0, c9=a2xb1, c10=a2xb2, c11=a2xb3,
c12=a3xb0, c13=a3xb1, c14=a3xb2, c15=a3xb3)
이들 16개의 8비트 승산연산을 가능하게 하기 위해, 오퍼랜드 루터(302)는 공급될 오퍼랜드 데이타를 각각의 승산기로 출력한다.
승산명령의 실행에서, 선택기(303)은 오퍼랜드 루터(302)의 출력을 선택하고, 선택된 데이타를 각각 8비트 승산기로 출력한다. 또한, 승산결과는 가산기(305)로 보내진다. 가산기(305)는 다음과 같이 상술한 16개의 승산결과를 가산한다.
(c0+(c1+c4)x16+(c2+c5+c8)x162+(c3+c6+c9+c12)x163+
(c7+c10+c13)x164+(c11+c14)x165+c15x166)
상기 계산의 결과는 32비트x32비트 승산결과로서 출력된다.
상술한 바와 같이, 회로의 대부분을 차지하는 16개의 8비트 승산기가 통상의 승산명령과 분할된 승수명령에 공유할 수 있다. 상술한 계산부로 구성된 여러개의 계산유닛의 배열은 다양한 응용과 호환성을 갖는 프로세서를 이루고 있으므로, 프로세서를 구성하는 각각의 계산부의 유용성을 향상시킨 VLIW프로세서를 실행할 수 있다.
상술한 본 발명에 따르면, 멀티미디어 처리와 동일한 계산을 각각 실행하는 병렬 프로세서를 위한 명령코드의 양을 효율적으로 저감시킬 수 있다. 또한, 본 발명은 동일 기능을 갖는 여러개의 계산유닛을 배열한 구성을 가지므로 계산유닛설계 단계의 수를 저감할 수 있음과 동시에, 계산유닛의 수를 증가시키는 것에 의해서만 병렬계산을 실행할 수 있으므로 하드웨어에서의 실행을 간략화 할 수 있다.
또한, 화상처리 등의 멀티미디어 처리를 고려할 때, 프로그램의 구조는 처리될 화상의 영역을 분할할 수 있고, 각 분할된 영역의 처리를 각 실행유닛에서 할당되게 설계할 수 있다. 따라서, 하나의 실행유닛을 위해 개발된 프로그램을 다른 3개의 실행유닛에 대해서도 사용할 수 있어 소프트웨어 개발단계의 수를 저감할 수 있다.
또한, 본 발명은 VLIW와 슈퍼스칼라 등의 다양한 구조의 프로세서에 적용할 수 있다.

Claims (32)

  1. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러계의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서,
    상기 메모리에 저장된 명령코드내에 여러개의 계산유닛에서의 계산의 실행을 명령하는 특정정보를 마련하고, 상기 명령코드에 의해 특정된 여러개의 계산부를 결정하도록 상기 특정정보를 분석하고 상기 명령코드를 상기 여러개의 특정된 계산유닛에 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛의 각종 계산을 단일명령코드에 의해 제어하는 것을 특징으로 하는 프로세서.
  2. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러계의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서,
    상기 메모리에 저장된 명령코드내에 여러개의 계산유닛에서의 계산의 실행을 명령하는 특정정보를 마련하고, 상기 명령코드에 의해 특정된 여러개의 계산부를 결정하도록 상기 특정정보를 분석하고 상기 명령코드를 상기 여러개의 특정된 계산유닛에 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛에서 상기 여러개의 명령과 동일한 계산을 단일명령코드에 의해 실행하는 것을 특징으로 하는 프로세서.
  3. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러계의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서,
    계산종류와 오퍼랜드를 나타내는 ope 코드에 부가해서, 특정정보로서 실행모드를 특정하는 필드가 상기 메모리에 저장된 상기 명령코드내에 마련되고, 상기 필드를 분석하고 실행모드가 여러개의 계산유닛에서 인에이블되는 명령의 ope 코드와 오퍼랜드를 적어도 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛에서 동일종류의 계산을 실행하는 것을 특징으로 하는 프로세서.
  4. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 여러개의 명령코드에 따라 계산동작을 병렬로 실행할 수 있는 여러개의 계산유닛을 갖는 프로세서로서,
    계산종류와 오퍼랜드를 나타내는 ope 코드에 부가해서, 특정정보로서 실행모드를 특정하는 필드와 상기 계산유닛을 특정하는 계산유닛 특정필드가 상기 메모리에 저장된 상기 명령코드에 마련되고, 상기 필드를 분석하고 실행모드가 상기 계산유닛 특정필드에서 특정된 계산유닛에서 인에이블되는 명령의 ope 코드와 오퍼랜드를 적어도 입력하기 위해서 분석수단이 마련되며, 상기 여러개의 계산유닛에서 동일종류의 특정계산을 실행하는 것을 특징으로 하는 프로세서.
  5. 제3항 또는 제4항에 있어서,
    상기 여러개의 계산유닛의 각각은 유일한 레지스터파일을 갖는 것을 특징으로 하는 프로세서.
  6. 제3항 또는 제4항에 있어서,
    상기 여러개의 계산유닛의 각각은 유일한 레지스터파일을 갖고, 상기 오퍼랜드필드는 상기 여러개의 계산유닛의 각각에서 서로 다른 계산데이타를 형성하도록 유일한 레지스터파일의 레지스터 특정을 상기 여러개의 계산유닛의 각각에서 실행하는 것을 특징으로 하는 프로세서.
  7. 제3항 또는 제4항에 있어서,
    상기 여러개의 계산유닛의 각각은 공통한 레지스터파일을 갖는 것을 특징으로 하는 프로세서,
  8. 제3항 또는 제4항에 있어서,
    상기 여러개의 계산유닛의 각각은 공통의 레지스터파일을 갖고, 상기 레지스터파일에서 레지스터수를 특정하는 오퍼랜드필드를 갖고, 특정될 상기 계산유닛의 유일한 오프셋값을 상기 오퍼랜드필드의 값에 부가하여, 다른 레지스터를 유용화할 수 있고, 다른 종류의 데이타를 계산할 수 있는 것을 특징으로 하는 프로세서.
  9. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드 유지수단 및 여러개의 계산유닛을 갖는 프로세서로서,
    상기 명령코드는 상기 여러개의 계산유닛에 따라 여러개의 필드로 구성되고, 여러개의 계산유닛을 제어하는 제어정보와 대응하는 계산유닛으로 특정하기 위한 각각의 필드에 대한 필드정보가 이 명령코드의 임의의 하나의 필드에 마련되고, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 필드정보와 상기 제어정보를 분석하고 상기 필드를 상기 식별된 계산유닛에 입력하기 위해 분석수단이 마련되고, 상기 명령코드내의 하나의 필드가 여러개의 계산유닛을 제어하여 상기의 계산보다 작은 필드수로 구성된 짧은 명령코드로 여러개의 계산을 실행하도록 한 것을 특징으로 하는 프로세서.
  10. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드유지수단 및 여러개의 계산유닛을 갖는 프로세서로서,
    상기 명령코드는 상기 여러개의 계산유닛에 따라 여러개의 필드로 구성되고, 이 명령코드내의 임의의 하나의 필드를 지정하는 제어정보는 상기 여러개의 계산유닛을 제어하고, 상기 명령코드내에 존재하는 필드의 수를 지정하는 헤더정보는 상기 메모리에 미리 저장되고, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 헤더정보와 상기 제어정보를 분석하고 상기 필드를 상기 식별된 계산유닛에 입력하기 위해 분석수단이 마련되고, 상기 명령코드내의 하나의 필드가 여러개의 계산유닛을 제어하여 상기 헤더정보의 사용에 의해 작은수의 필드로 구성된 짧은 명령코드로 여러개의 계산을 실행하도록 한 것을 특징으로 하는 프로세서.
  11. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드유지수단과 상기 명령코드 유지수단에 유지된 정보에 의해 제어되는 적어도 하나의 계산부와 상기 계산부의 오퍼랜드정보를 저장하는 레지스터파일로 구성되는 여러개의 계산유닛을 갖는 프로세서로서,
    상기 명령코드는 상기 계산유닛의 수에 따라 여러개의 필드로 구성되고, 상기 하나의 명령코드는 여러개의 계산유닛을 동작시키며, 동일기능을 갖는 적어도 하나의 계산부가 상기 모든 계산유닛에 마련되어, 모든 계산유닛의 각각은 동일계산을 실행하도록 한 것을 특징으로 하는 프로세서.
  12. 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드유지수단, 상기 명령코드 유지수단에 유지된 정보에 의해 제어되는 적어도 하나의 계산부와 상기 계산부의 오퍼랜드정보를 저장하는 레지스터파일로 구성되는 여러개의 계산유닛을 갖는 프로세서로서,
    상기 명령코드는 상기 계산유닛의 수에 따라 여러개의 필드로 구성되고, 상기 하나의 명령코드는 여러개의 계산유닛을 동작시키며, 동일기능을 갖는 적어도 하나의 계산부는 상기 모든 계산유닛의 전부에 마련되어 상기 레지스터파일의 레지스터에 의해 특정되도록 너무 큰 비트폭을 갖는 데이타종류를 유지하는 특정레지스터가 상기 계산유닛의 각각에 마련되어 상기 레지스터파일의 레지스터에 의해 특정할 수 있는 비트폭을 가진 데이타종류와 상기 특정데이타 종류로 저장된 상기 데이타종류의 양쪽을 계산처리하도록 하는 것을 특징으로 하는 프로세서.
  13. 여러개의 계산유닛의 실행을 지정하는 특정정보를 갖는 명령코드를 저장하는 메모리, 상기 명령코드에 의해 특정된 여러개의 계산유닛을 결정하기 위해 상기 메모리에 저장된 상기 명령코드의 상기 특정정보를 분석하는 분석수단, 상기 분석수단에 의해 결정된 상기 여러개의 계산유닛을 특정하는 명령코드를 유지하는 명령코드유지수단 및 상기 명령코드유지수단에 유지된 상기 명령에 따라 병렬로 계산을 실행하는 여러개의 계산유닛을 포함하는 것을 특징으로 하는 프로세서.
  14. 여러개의 계산유닛의 실행을 지정하는 특정정보를 갖는 명령코드를 저장하는 메모리, 여러개의 명령과 동일한 계산을 단일의 명령코드에 의해 실행하도록 단일 명령코드에 의해 특정된 여러개의 계산유닛을 결정하기 위해 상기 메모리에 저장된 상기 명령코드의 특정정보를 분석하는 분석수단, 상기 분석수단에 의해 결정된 상기 여러개의 계산유닛을 특정하는 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 상기 단일 명령코드에 따라 병렬로 계산을 실행하는 여러개의 계산유닛을 포함하는 것을 특징으로 하는 프로세서.
  15. 제13항 또는 제14항에 있어서,
    상기 여러개의 계산유닛의 각각은 다른 종류의 계산을 실행하도록 구성된 것을 특징으로 하는 프로세서.
  16. 계산종류를 지정하는 ope 코드, 오퍼랜드 및 특정정보로서 실행모드를 특정하는 필드를 갖는 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드의 필드를 분석하고, 적어도 상기 ope 코드와 상기 실행모드가 여러개의 계산유닛으로 인에이블되는 명령의 오퍼랜드를 입력하는 분석수단, 적어도 상기 분석수단에 의해 입력된 상기 명령의 오퍼랜드와 ope코드를 유지하고 상기 실행모드가 상기 여러개의 계산유닛을 인에이블하게 하는 명령코드 유지수단 및 적어도 상기 명령코드 유지수단에 유지된 상기 ope 코드와 상기 오퍼랜드에 따라 병렬로 동일종류의 계산을 실행하는 여러개의 계산유닛을 포함하는 것을 특징으로 하는 프로세서.
  17. 계산정보를 지정하는 ope코드, 오퍼랜드와 특정정보로서 실행모드를 특정하는 필드 및 계산유닛을 특정하는 계산유닛 특정필드를 갖는 명령코드를 저장하는 메모리, 적어도 상기 ope 코드와 상기 실행모드가 상기 계산유닛 특정필드에 의해 특정한 상기 계산유닛으로 인에이블되는 명령의 오퍼랜드를 입력하고, 상기 메모리에서 리드된 상기 필드를 분석하는 분석수단, 적어도 상기 분석수단에 의해 입력된 상기 명령의 상기 오퍼랜드와 상기 ope코드를 유지하고, 상기 실행유닛이 상기 계산유닛 특정필드에 의해 특정된 상기 계산유닛을 인에이블하게 하는 명령코드 유지수단 및 적어도 상기 명령코드 유지수단에 유지된 상기 오퍼랜드와 상기 ope코드에 따라 동일종류의 계산을 실행하는 여러개의 계산유닛을 포함하는 것을 특징으로 하는 프로세서.
  18. 제16항 또는 제17항에 있어서,
    상기 여러개의 계산유닛의 각각은 유일한 레지스터파일을 갖는 것을 특징으로 하는 프로세서.
  19. 제16항 또는 제17항에 있어서,
    상기 여러개의 계산유닛의 각각은 유일한 레지스터파일을 갖고, 상기 오퍼랜드필드는 상기 여러개의 계산유닛의 각각에서 서로 다른 계산데이타를 형성하도록 유일한 레지스터파일의 레지스터 특정을 상기 여러개의 계산유닛의 각각에서 실행하는 것을 특징으로 하는 프로세서.
  20. 제16항 또는 제17항에 있어서,
    상기 여러개의 계산유닛의 각각은 공통의 레지스터파일을 갖는 것을 특징으로 하는 프로세서.
  21. 제16항 또는 제17항에 있어서,
    상기 여러개의 계산유닛의 각각은 공통의 레지스터파일을 갖고, 상기 레지스터파일에서 레지스터수를 특정하는 오퍼랜드필드를 갖고, 특정될 상기 계산유닛의 유일한 오프셋값을 상기 오퍼랜드필드의 값에 부가하여, 다른 레지스터를 유용화할 수 있고, 다른 종류의 데이타를 계산할 수 있는 것을 특징으로 하는 프로세서.
  22. 여러개의 계산유닛에 따라 여러개의 필드에 의해 구성된 명령코드를 저장하고 상기 여러개의 필드 중의 임의의 하나에서 여러개의 계산유닛을 제어하는 제어정보와 각각의 필드가 대응하는 계산유닛을 특정하는 필드정보를 갖는 메모리, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 메모리에서 리드된 상기 명령코드의 상기 제어정보와 상기 필드정보를 분석하고, 상기 필드를 상기 식별된 계산유닛으로 입력하는 분석수단, 상기 분석수단에 의한 상기 필드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 상기 필드에 따라 계산을 병렬로 실행하는 여러개의 계산유닛을 포함하고,
    상기 명령코드중의 하나의 필드가 상기 여러개의 계산유닛을 제어하여 상기의 계산보다 작은 필드수로 구성된 짧은 명령코드로 여러개의 계산을 실행하도록 한 것을 특징으로 하는 프로세서.
  23. 계산유닛의 수에 따라 여러개의 필드로 구성된 명령코드를 저장하고, 상기 여러개의 필드중의 임의의 하나의 필드가 여러개의 계산유닛을 제어하는 것을 지정하는 제어정보와 상기 명령코드내에 존재하는 필드의 수를 지정하는 헤더정보를 갖는 메모리, 상기 필드에 의해 제어될 상기 계산유닛을 식별하기 위해 상기 메모리에서 리드된 상기 헤더정보와 상기 제어정보를 분석하고 상기 필드를 상기 식별된 계산유닛으로 입력하는 분석수단, 상기 분석수단에 의해 입력된 상기 필드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 상기 필드에 따라 계산을 병렬로 실행하는 여러개의 계산유닛을 포함하고, 상기 명령코드내의 하나의 필드가 상기 여러개의 계산유닛을 제어하여 상기 헤더정보의 사용에 의해 작은수의 필드로 구성된 짧은 명령코드로 여러개의 계산을 실행하도록 한 것을 특징으로 하는 프로세서.
  24. 제16, 제17, 제22항 또는 제23항에 있어서,
    상기 분석수단은 상기 메모리에서 압축된 명령코드를 리드하는 명령확장 수단을 갖고, 상기 압축된 명령코드를 즉시 실행가능한 확장된 명령코드로 변환하는 것을 특징으로 하는 프로세서.
  25. 제16, 제17, 제22항 또는 제23항에 있어서,
    상기 분석수단은 상기 메모리에서 압축된 하나의 명령코드중의 적어도 하나의 필드를 리드하고 상기 필드를 즉시 실행가능한 여러개의 필드로 구성된 확장된 명령코드로 변환하는 명령확장수단을 갖는 것을 특징으로 하는 프로세서.
  26. 제16, 제17, 제22항 또는 제23항에 있어서,
    상기 분석수단은 상기 메모리에서 압축된 명령코드를 래치하는 명령버퍼, 상기 명령코드내에 존재하는 필드의 수를 지정하는 헤더정보를 분석하는 필드콘트롤러 및 확장된 필드를 형성하기 위해 각 필드의 유무를 지정하는 신호와 각 필드에 대응하고 상기 필드콘트롤러에 의해 분석된 상기 필드의 선택신호에 따라 각 필드의 유무를 포함하는 필드를 소트하는 선택기를 포함하는 것을 특징으로 하는 프로세서.
  27. 제16, 제17, 제22항 또는 제23항에 있어서,
    상기 분석수단은 상기 명령코드의 각 필드의 SIMD와 실행모드(S모드)를 분석하고 선택적으로 각 필드의 복사소스 필드를 선택적으로 결정하는 SIMD콘트롤러 및 상기 SIMD 컨트롤러에 의해 선택적으로 결정된 상기 복사소스 필드를 복사하고, 상기 복사를 각 계산유닛으로 입력하는 선택기를 포함하는 것을 특징으로 하는 프로세서.
  28. 여러개의 계산유닛을 동작시키기 위해 계산유닛의 수에 따라 여러개의 필드로 구성하는 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드 유지수단과 상기 명령코드 유지수단에 유지된 명령에 의해 제어된 동일 기능을 갖는 적어도 하나의 계산부 및 상기 계산부의 오퍼랜드 정보를 저장하는 레지스터파일로 구성된 여러개의 계산유닛을 포함하고, 상기 여러개의 계산유닛은 동일 계산을 실행하는 것을 특징으로 하는 프로세서.
  29. 계산유닛의 수에 따라 여러개의 필드로 구성되는 명령코드를 저장하는 메모리, 상기 메모리에서 리드된 상기 명령코드를 유지하는 명령코드 유지수단과 상기 명령코드 유지수단에 유지된 명령에 의해 제어될 동일기능을 갖는 적어도 하나의 계산부, 상기 계산부의 오퍼랜드정보를 저장하는 레지스터파일 및 상기 레지스터파일에서 레지스터를 특정하기 위해 큰 비트폭을 갖는 데이타종류를 유지하는 특징레지스터로 구성된 여러개의 계산유닛을 포함하고, 상기 여러개의 계산유닛 상기 레지스터파일의 레지스터에 의해 특정할 수 있는 비트폭을 갖는 데이타종류와 상기 특정의 레지스터에 저장된 데이타종류의 양쪽의 계산처리를 실행할 수 있는 것을 특징으로 하는 프로세서.
  30. 명령코드와 데이타를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 여러개의 명령코드에 따라 병렬로 연산하는 여러개의 계산유닛을 갖고,
    각각의 계산유닛은 여러개의 계산부와 여러개의 액세스포트 레지스터파일로 구성되고, 상기 여러개의 계산부의 각각은 계산을 위해 대응하는 액세스포트에서 상기 레지스터파일의 각각의 내용을 리드하고, 상기 여러개의 계산유닛은 동일한 기능을 갖는 것을 특징으로 하는 프로세서.
  31. 명령코드와 데이타를 저장하는 메모리, 상기 메모리에서 리드된 여러개의 명령코드를 유지하는 명령코드 유지수단 및 상기 명령코드 유지수단에 유지된 여러개의 명령코드에 따라 병렬로 연산하는 여러개의 계산유닛을 갖고,
    각각의 계산유닛은 여러개의 계산부와 여러개의 액세스포트 레지스터파일로 구성되고, 상기 여러개의 계산부의 각각은 계산을 위해 대응하는 액세스포트에서 상기 레지스터파일의 각각의 내용을 리드하고, 상기 여러개의 계산유닛은 동일기능의 서브세트를 갖는 것을 특징으로 하는 프로세서.
  32. 제30항 또는 제31항에 있어서,
    상기 계산유닛에 있어서 적어도 하나의 계산부는 상기 메모리와 상기 레지스터파일 사이에서 데이타를 전송하는 데이타전송명령을 실행할 수 있는 것을 특징으로 하는 프로세서.
KR1019970706441A 1995-03-17 1996-03-15 프로세서 KR100325658B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP95-58790 1995-03-17
JP5879095 1995-03-17
PCT/JP1996/000673 WO1996029646A1 (fr) 1995-03-17 1996-03-15 Processeur

Publications (2)

Publication Number Publication Date
KR19980703033A true KR19980703033A (ko) 1998-09-05
KR100325658B1 KR100325658B1 (ko) 2002-08-08

Family

ID=13094375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970706441A KR100325658B1 (ko) 1995-03-17 1996-03-15 프로세서

Country Status (4)

Country Link
US (3) US6401190B1 (ko)
JP (1) JP3547139B2 (ko)
KR (1) KR100325658B1 (ko)
WO (1) WO1996029646A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100888369B1 (ko) * 2006-06-20 2009-03-13 가부시끼가이샤 르네사스 테크놀로지 영상 처리 엔진 및 그것을 포함하는 영상 처리 시스템
KR20150112328A (ko) * 2014-03-27 2015-10-07 삼성전자주식회사 구성 데이터를 압축 및 복원하는 방법

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6859870B1 (en) * 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
WO2001067234A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US6895494B1 (en) * 2000-06-26 2005-05-17 Texas Instruments Incorporated Sub-pipelined and pipelined execution in a VLIW
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6848074B2 (en) * 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
ITMI20022003A1 (it) * 2002-09-20 2004-03-21 Atmel Corp Apparecchio e metodo per la decompressione dinamica di programmi.
US20040128482A1 (en) * 2002-12-26 2004-07-01 Sheaffer Gad S. Eliminating register reads and writes in a scheduled instruction cache
JP2005056311A (ja) * 2003-08-07 2005-03-03 Matsushita Electric Ind Co Ltd 情報処理装置及びそれを用いた電子機器
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
JP4300151B2 (ja) * 2004-04-19 2009-07-22 Okiセミコンダクタ株式会社 演算処理装置
JP5240424B2 (ja) * 2004-11-05 2013-07-17 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
AT501213B1 (de) * 2004-12-03 2006-10-15 On Demand Microelectronics Gmb Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung
US7954062B2 (en) * 2005-01-03 2011-05-31 International Business Machines Corporation Application status board mitigation system and method
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US20110152392A1 (en) * 2009-12-17 2011-06-23 Honeywell International Inc. Catalysts For Polyurethane Foam Polyol Premixes Containing Halogenated Olefin Blowing Agents
US7631168B1 (en) 2006-05-10 2009-12-08 The Math Works, Inc. Graphical interface for grouping concurrent computing units executing a concurrent computing process
US9405564B2 (en) * 2006-05-10 2016-08-02 The Mathworks, Inc. System and method for targeting commands to concurrent computing units executing a concurrent computing process
DE602006006990D1 (de) * 2006-06-28 2009-07-09 St Microelectronics Nv SIMD-Prozessorarchitektur mit gruppierten Verarbeitungseinheiten
JP5481793B2 (ja) 2008-03-21 2014-04-23 富士通株式会社 演算処理装置および同装置の制御方法
JP5206240B2 (ja) * 2008-08-29 2013-06-12 日本電気株式会社 情報処理装置および情報処理方法
US8458443B2 (en) 2008-09-08 2013-06-04 Smsc Holdings S.A.R.L. VLIW processor with execution units executing instructions from instruction queues and accessing data queues to read and write operands
US8135941B2 (en) * 2008-09-19 2012-03-13 International Business Machines Corporation Vector morphing mechanism for multiple processor cores
US20110264892A1 (en) * 2008-10-14 2011-10-27 National University Corporation NARA Institute of Science and Technology Data processing device
KR101520624B1 (ko) * 2008-12-31 2015-05-15 삼성전자주식회사 비트 맵 방식의 영상 인코딩/디코딩 방법 및 장치
JP5495707B2 (ja) * 2009-10-16 2014-05-21 三菱電機株式会社 並列信号処理装置
JP5511400B2 (ja) * 2010-01-12 2014-06-04 三菱電機株式会社 並列信号処理プロセッサ
US8527804B2 (en) * 2010-11-01 2013-09-03 Qualcomm Incorporated Architecture and method for eliminating store buffers in a DSP/processor with multiple memory accesses
KR102056730B1 (ko) * 2013-04-22 2019-12-17 삼성전자주식회사 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법
US10514928B2 (en) * 2014-04-17 2019-12-24 Arm Limited Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result
US10346170B2 (en) * 2015-05-05 2019-07-09 Intel Corporation Performing partial register write operations in a processor
JP6694284B2 (ja) * 2016-01-29 2020-05-13 シナプティクス・ジャパン合同会社 画像データ伝送システム、送信回路及び受信回路

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6397833A (ja) 1986-10-13 1988-04-28 Mitsui Eng & Shipbuild Co Ltd 固体燃料のガス化生成ガスを燃料とするガスタ−ビンプラント
JPS6398733A (ja) 1986-10-16 1988-04-30 Fujitsu Ltd 演算回路制御方式
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
JP2729795B2 (ja) * 1987-11-19 1998-03-18 株式会社日立製作所 並列計算機及びその制御方法
JP2617974B2 (ja) * 1988-03-08 1997-06-11 富士通株式会社 データ処理装置
US5313551A (en) * 1988-12-28 1994-05-17 North American Philips Corporation Multiport memory bypass under software control
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0474297B1 (en) * 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
EP0479390B1 (en) * 1990-10-05 1999-01-07 Koninklijke Philips Electronics N.V. Processing device including a memory circuit and a group of functional units
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JP2883465B2 (ja) * 1991-04-05 1999-04-19 株式会社東芝 電子計算機
JPH0553805A (ja) * 1991-08-29 1993-03-05 Toshiba Corp 電子計算機
JP2848727B2 (ja) * 1991-11-18 1999-01-20 株式会社東芝 並列演算処理装置
US5437043A (en) * 1991-11-20 1995-07-25 Hitachi, Ltd. Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
JP3526976B2 (ja) * 1995-08-03 2004-05-17 株式会社日立製作所 プロセッサおよびデータ処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100888369B1 (ko) * 2006-06-20 2009-03-13 가부시끼가이샤 르네사스 테크놀로지 영상 처리 엔진 및 그것을 포함하는 영상 처리 시스템
KR20150112328A (ko) * 2014-03-27 2015-10-07 삼성전자주식회사 구성 데이터를 압축 및 복원하는 방법

Also Published As

Publication number Publication date
US6401190B1 (en) 2002-06-04
US20020099924A1 (en) 2002-07-25
WO1996029646A1 (fr) 1996-09-26
KR100325658B1 (ko) 2002-08-08
JP3547139B2 (ja) 2004-07-28
US20060053271A1 (en) 2006-03-09
US6965981B2 (en) 2005-11-15

Similar Documents

Publication Publication Date Title
KR19980703033A (ko) 프로세서
US7424598B2 (en) Data processor
Kapasi et al. Efficient conditional operations for data-parallel architectures
JP4879307B2 (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
US6356994B1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
US8321849B2 (en) Virtual architecture and instruction set for parallel thread computing
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
US6330657B1 (en) Pairing of micro instructions in the instruction queue
US6128721A (en) Temporary pipeline register file for a superpipelined superscalar processor
JPH0926878A (ja) データ処理装置
US5577256A (en) Data driven type information processor including a combined program memory and memory for queuing operand data
JPH04336378A (ja) 情報処理装置
US6496924B2 (en) Data processing apparatus including a plurality of pipeline processing mechanisms in which memory access instructions are carried out in a memory access pipeline
US5890009A (en) VLIW architecture and method for expanding a parcel
US20040199749A1 (en) Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
KR100267089B1 (ko) 스칼라/벡터연산이조합된단일명령복수데이터처리
JPH10143365A (ja) 並列処理装置及びその命令発行方式
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
JP2934003B2 (ja) データ処理装置
JP2828219B2 (ja) オブジェクト・コード互換性を与える方法、オブジェクト・コード互換性並びにスカラ・プロセッサ及びスーパスカラ・プロセッサとの互換性を与える方法、ツリー命令を実行するための方法、データ処理システム
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
US7779231B2 (en) Pipelined processing using option bits encoded in an instruction
EP0251716A2 (en) Instruction decoding microengines
US20040073776A1 (en) Instruction encoding

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20120119

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130118

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee