KR20000076285A - 기계 판독가능 매체 및 초대형 인스트럭션 워드 프로세서와, 컴퓨터 프로그램의 실행 방법 및 컴파일 방법 - Google Patents

기계 판독가능 매체 및 초대형 인스트럭션 워드 프로세서와, 컴퓨터 프로그램의 실행 방법 및 컴파일 방법 Download PDF

Info

Publication number
KR20000076285A
KR20000076285A KR1019997008382A KR19997008382A KR20000076285A KR 20000076285 A KR20000076285 A KR 20000076285A KR 1019997008382 A KR1019997008382 A KR 1019997008382A KR 19997008382 A KR19997008382 A KR 19997008382A KR 20000076285 A KR20000076285 A KR 20000076285A
Authority
KR
South Korea
Prior art keywords
command
functional unit
instruction
fields
commands
Prior art date
Application number
KR1019997008382A
Other languages
English (en)
Other versions
KR100715055B1 (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 KR20000076285A publication Critical patent/KR20000076285A/ko
Application granted granted Critical
Publication of KR100715055B1 publication Critical patent/KR100715055B1/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, 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Abstract

VLIW 프로세서는 제 1 인스트럭션 워드 내에서 제 1 및 제 2 커맨드를 실행하는 제 1 및 제 2 기능 유닛을 갖는다. 제 1 및 제 2 커맨드는 각각 필드들의 제 1 필드 및 제 2 필드를 포함한다. 프로세서는 제 2 인스트럭션 워드 내의 제 3 커맨드를 실행하는 제 3 기능 유닛을 갖는다. 제 3 커맨드는 제 1 및 제 2 필드를 모두 포함한다.

Description

기계 판독가능 매체 및 초대형 인스트럭션 워드 프로세서와, 컴퓨터 프로그램의 실행 방법 및 컴파일 방법{VLIW PROCESSOR PROCESSES COMMANDS OF DIFFERENT WIDTHS}
VLIW 프로세서의 예로는 필립스사의 TM-1000 프로세서(TriMedia)가 있다. 이 프로세서는 예를 들면, (현재 포기된 미국 특허출원 제 07/999,080 호에 상당한; PHA 21777) 유럽 특허출원 제 EP605927 호에 기술되어 있다. VLIW 프로세서에서, 인스트럭션들을 병렬로 실행하는 것은 하나의 긴 인스트럭션 워드내 다수의 기본적인 기계 커맨드들(machine commands)을 결합함으로써 가능하다. 전형적으로, 이러한 기본적인 커맨드들의 각각은 RISC 동작을 나타낸다. 클럭 사이클당, 하나의 긴 인스트럭션 워드는 로킹된 단계(lock-step)로 동작하는 기능 유닛(functional units)의 병렬 배치내로 공급된다. 각 커맨드는 적절한 유닛에 공급된다. 전형적으로, 이 유닛은 파이프라인 실행을 수행한다.
TM-1000 프로세서는 초대형 인스트럭션 워드 발생 레지스터(very long instruction word issue register)의 각 발생 슬롯(issue slot)에서 병렬로 커맨드들을 발생한다. 각 발생 슬롯은 각 기능 유닛의 그룹 및 레지스터 파일의 2개의 판독 포트 및 하나의 기록 포트와 관련있다. 특정한 커맨드는 특정한 발생 슬롯과 관계있는 그룹의 기능 유닛들중에 특정한 기능 유닛으로 향한다. 커맨드는 전형적으로 한 개의 연산 코드, 2개의 소스 피연산자 정의 및 하나의 결과 피연산자 정의를 포함한다. 소스 피연산자 정의 및 결과 피연산자 정의는 레지스터 파일의 레지스터를 참조한다. 커맨드의 실행동안, 피연산자를 인출하기 위하여 특정한 발생 슬롯과 관련된 판독 포트로 인출 신호(fetch signals)를 공급함으로써, 이 발생 슬롯으로부터 소스 피연산자를 판독한다. 전형적으로, 기능 유닛은 이들 판독 포트로부터 피연산자를 수신하여, 연산 코드에 따라 커맨드를 수행하고, 그 결과를 특정 발생 슬롯과 관련된 기록 포트를 통하여 레지스터 파일에 되기록한다. 이 대신에, 커맨드는 2개 이하의 피연산자를 사용할 수 있고, 그리고/혹은 레지스터 파일에 대한 결과를 발생하지 못할 수도 있다.
VLIW 프로세서를 위한 전형적인 프로그램은 기능 유닛을 위한 커맨드 세트로 번역된다. 컴파일 시간 스케줄러는 긴 인스트럭션 워드상에 이들 커맨드들을 분산시킨다. 스케줄러는 병렬성(parallelism)을 최적화시킴으로써 프로그램을 실행하는 데 필요한 시간을 감소시키려 한다. 스케줄러는, 동일한 인스트럭션으로 배정된 커맨드가 병렬로 실행될 수 있다는 제한조건 및 데이터 종속성의 제한조건하에서 커맨드들을 인스트럭션 워드속으로 결합시킨다.
발명의 요약
본 발명의 목적은 종래의 VLIW 프로세서에 비해 프로그램의 실행을 위해 필요한 인스트럭션 워드의 수를 줄일 수 있는 구조를 가지는 VLIW 프로세서를 제공하는 데 있다.
이러한 목적을 위하여, VLIW 프로세서는 제 1 및 제 2 의 초대형 인스트럭션 워드를 순차적으로 제공하기 위한 인스트럭션 발생 포트를 구비한다. 각 워드는 각 연결된 커맨드들내로 분산되는 순서화된 각 연결 필드를 구비한다. 제 1 워드는 제 1 필드를 가지는 제 1 커맨드 및 제 2 필드를 가지는 제 2 커맨드를 포함한다. 제 2 워드는 제 1 및 제 2 필드를 가지는 제 3 커맨드를 포함한다. 프로세서는 제 1 커맨드를 처리하기 위하여 발생 포트에 연결된 제 1 기능 유닛 및 제 1 기능 유닛과 로킹된 단계로 제 2 커맨드를 처리하기 위하여 발생 포트에 연결된 제 2 기능 유닛을 가진다. 또한, 프로세서는 제 3 커맨드를 처리하기 위하여 발생 포트에 연결된 제 3 기능 유닛을 가진다.
본 발명에서는 인스트럭션 발생 포트를 발생 슬롯으로 융통성있게 분배한다. 이것은 예를 들면, 피연산자를 위한 상이한 수의 필드들을 사용하는 다른 커맨드들을 사용할 수 있다는 것을 의미한다. 또한, 상이한 커맨드들은 상이한 크기의 연산 코드를 가질 수 있다. 커맨드를 처리하는 회로의 특별화된 자원, 여기서는 기능 유닛과 관련된 필드는 상이한 발생 슬롯과 관련된 상이한 그룹으로부터의 기능 유닛과 함께 결합되어 사용될 수 있다. 이것은 고정된 발생 슬롯으로 나뉘어진 인스트럭션 발생 포트에서의 커맨드보다 더 복잡한 커맨드들을 사용할 수 있게 한다. 가장 복잡한 커맨드를 처리하기 위하여 발생 슬롯에 더 많은 공간을 확보해 둘 필요는 없다. 종래의 VLIW 프로세서에서, 다수의 인스트럭션 워드열에서 덜 복잡한 몇몇 커맨드를 사용하여 이러한 복잡한 커맨드는 구현해야 했다. 따라서, 본 발명에서는 프로그램을 종료시키기 위해 보다 적은 수의 인스트럭션 워드를 필요로 하므로 종래의 VLIW 프로세서에서 가능했던 것 보다 더 신속하게 프로그램을 실행할 수 있다.
예를 들면, TM-1000과 같은 기계에서, 3개의 피연산자로부터의 결과를 계산하는 연산은(예를 들면, 평균 연산) 연속적으로 실행되는 적어도 2개의 커맨드를 필요로 하고, 따라서, 적어도 2개의 인스트럭션이 필요하다. 2개 이상의 피연산자를 위한 필드를 가지는 하나의 커맨드를 제공함으로써, 연산은 이 한 커맨드를 사용하여 실행될 수 있다. 또한, 필드들은 커맨드에 융통성 있게 배정되므로, 모든 커맨드에 대해 피연산자를 위한 둘 이상의 필드를 확보하지 않아도 된다.
본 발명의 실시예에서, 제 3 커맨드는 제 1 커맨드 및 제 2 커맨드를 실행하는 데 사용되는 모든 필드를 포함한다. 따라서, 예를 들면, 제 1 커맨드 및 제 2 커맨드를 각각 발생시키는 데 제각기의 제 1 및 제 2 고정크기 발생 슬롯을 사용하는 경우, 제 3 커맨드는 제 1 발생 슬롯 및 제 2 발생 슬롯의 결합을 사용할 수 있다. 이것은 스케줄링을 단순화시킨다.
각 커맨드, 즉, 각 발생 슬롯의 상이한 필드들은 각각 피연산자 레지스터의 판독 주소를 나타내거나 혹은 결과 레지스터의 기록 주소를 나타내거나 혹은 연산 코드를 나타내는 것과 같은 고정된 기능성을 가질 수 있다. 이들 상이한 필드들은 판독 포트 또는 연산 코드 디코더와 같은, 인스트럭션 처리 회로의 고정된 부분과 관련있을 것이다. 이 경우에, 제 3 인스트럭션은 2배수의 피연산를 사용하고, 그리고/혹은 2배수의 결과를 발생하고, 그리고/혹은 2배 크기의 연산 코드를 사용할 수 있다. 각 발생 슬롯이 제각기의 기능 유닛 그룹과 관련있을 때, 제 3 커맨드를 수행하는 기능 유닛은 동시에 두 그룹에 속하게 된다.
VLIW 프로세서에서 한 커맨드가 사용하는 결합된 필드들은 하나의 발생 슬롯에 대응한다. 전형적으로, 정상적인 발생 슬롯의 크기는 제 1 커맨드 및 제 2 커맨드와 동일하고, (하나의 연산 코드 필드, 2개의 입력 레지스터 선택 필드 및 하나의 결과 레지스터 선택 필드를 포함한 발생 슬롯을 사용하는) 정상적인 커맨드를 위한 것이다. 이 경우에, 본 실시예에서 제 3 커맨드를 위해 사용되는 필드는 정상 발생 슬롯의 전체 수를 좌우한다. VLIW 프로세서 프로그램에서, 커맨드를 위해 사용되는 발생 슬롯은 부족한 자원이다: 프로그램에서 커맨드를 위해 더 많은 수의 발생 슬롯을 사용할수록(각 인스트럭션에 사용되는 각 발생 슬롯의 수의 합), 프로그램의 속도는 느려진다. 따라서, 제 3 커맨드를 위해 사용되는 정상적인 발생 슬롯의 수는 바람직하게, 정상 커맨드의 소정 결합을 가지는 제 3 커맨드와 동일한 기능을 실현시키기 위하여 필요한 정상적인 발생 슬롯의 수보다 작다. 단지 이경우에 제 3 커맨드는 부족한 자원인 발생 슬롯을 절약한다.
또한, 정상 커맨드를 사용하여 제 3 커맨드를 구현하는 것은 이들 정상 커맨드의 중간 결과가 정상적인 레지스터 크기(예를 들면, 64 비트 또는, 8비트의 8 요소의 벡터)에 대응하는 정확성을 가지고 표현되어야 한다는 것을 의미한다. 다수의 정상 커맨드의 효과를 결합한 제 3 커맨드를 사용하면, 중간 결과는 (예를 들면, 화상 또는 오디오 신호의) 다수의 신호 처리 응용에서와 같이 필요한 경우에 보다 높은 정확성을 가지고 표현될 수 있다.
바람직하게, 각 인스럭션은 고정된 수의 발생 슬롯으로 구성되고, 여기서, 각 발생 슬롯은 커맨드를 처리할 수 있는 하나 또는 그이상의 기능 유닛과 관련있다. 상이한 커맨드 그룹을 위해 상이한 기능 유닛이 제공된다. 이 기능 유닛은 발생 슬롯과 관련있다. 인스트럭션이 발생될 때, 발생 슬롯으로부터 커맨드가 이 발생 슬롯과 관련된 기능 유닛으로 제공된다. 제 1 커맨드 및 제 2 커맨드를 각각 발생하는 발생 슬롯과 제각기 관련된 제 1 기능 유닛 및 제 2 기능 유닛과, 제 1 발생 슬롯 및 제 2 발생 슬롯의 모두와 관련있는 제 3 기능 유닛이 제공된다. 따라서, 제 1 및 제 2 커맨드는 상이한 기능 유닛으로 송출된다. 제 3 커맨드의 경우에, 제 3 기능 유닛은 제 1 발생 슬롯 및 제 2 발생 슬롯의 모두를 사용하여야 하며, 제 1 기능 유닛 및 제 2 기능 유닛은 제 1 발생 유닛 및 제 2 발생 유닛을 사용해서는 안된다는 것을 알 수 된다. 제 3 기능 유닛의 활성화는 제 1 발생 슬롯 및 제 2 발생 슬롯중의 한 슬롯에서의 연산 코드에 의해 시작된다. 바람직하게, 이 연산 코드 필드는 제 3 기능 유닛이 제 1 발생 슬롯 및 제 2 발생 슬롯의 모두에서 참조되는 오퍼랜드를 처리하는 동작을 제어한다. 이것은 제 1 발생 슬롯 및 제 2 발생 슬롯중의 한 슬롯은 다른 발생 슬롯을 사용하지 않고 그 자신의 슬롯에서만 실행 될 수 있는 정상 커맨드만을 포함할 수 있도록 하려는 것도 아니며, 다른 발생 슬롯이 피연산자의 사전처리 또는 후처리, 조건적 실행등과 같은 정상 커맨드의 변형을 시그널링하도록 하려는 것도 아니다. 이것은 제 3 기능 유닛을 위한 커맨드의 가능한 기능을 하나의 발생 슬롯을 사용하여 실행될 수 있는 정상 커맨드로서 사용가능한 커맨드 및 이들 커맨드의 변형으로 제한한다는 것이다. 이러한 제한은 다중매체 신호처리 응용을 위해 다수의 유용한 커맨드를 사용하지 못하게 한다.
또한, 본 발명은 인스트럭션으로 필드를 융통성있게 배정하는, VLIW 프로세서를 위한 프로그램을 컴파일하기 위한 컴파일러와 이러한 융통성있는 배정을 가지는 프로그램에 관한 것이다.
본 발명은 VLIW(Very Large Instruction Word) 프로세서에 관한 것으로, 특히 이러한 프로세서를 위한 프로그램 및 이 프로그램의 컴파일(compilation)에 관한 것이다.
본 발명의 상기 및 다른 양상들은 첨부 도면을 참조하여 기술된다.
도 1은 본 발명에 따르는 VLIW 프로세서의 블럭도이다.
도 2(a)-(c)는 인스트럭션 워드 포맷을 도시한 도면이다.
도 3은 발생 슬롯을 위한 디코드 회로를 그린 블럭도이다.
도 4는 프로그램을 컴파일하기 위한 흐름을 도시한 도면이다.
도 5는 인스트럭션 슬롯에 커맨드를 배정하는 것을 도시한 도면이다.
도 1은 VLIW 프로세서를 도시한 것이다. 이 VLIW 프로세서는 인스트럭션 워드 메모리 시스템(10), 프로그램 카운터(11), 디코드 및 착수 회로(12), 기능 유닛(14a-14k) 및 다중포트 레지스터 파일(16)를 구비한다. 카운터(11)는 메모리 시스템(10)의 주소 입력부에 연결된다. 메모리 시스템(10)은 발생 슬롯들(또한 인스트럭션 버스로 참조)로 분할되는 (도시되지 않은) 인스트럭션 발생 레지스터를 가진다. 하나의 발생 슬롯은 발생 레지스터에 현재 버퍼링된 인스트럭션 워드의 개별 비트들을 경로배정(routing)하기 위한 기능적으로 병렬인 다수의 경로를 가진다. 회로(12)의 출력은 기능 유닛(14a-14k) 및 다중포트 레지스터 파일(16)에 연결된다. 레지스터 파일(16)의 판독 포트 및 기록 포트가 기능 유닛(14a-14k)에 연결된다. 메모리 시스템(10)은 카운터의 제어하에 디코딩 및 착수 회로(12)에 연속적으로 인스트럭션 워드를 공급한다. 바람직하게, 시스템(10)은 인스트럭션 캐싱(caching) 및/또는 사전인출을 사용하지만, 이것은 본 발명에 반드시 필수적인 것은 아니다. 또한, 시스템(10)은 압축된 포맷으로 저장된 인스트럭션 워드상의 연산(operations)을 압축해제한 후 출력시킬 수 있다. 디코드 및 착수 회로(12)는 이 인스트럭션 워드를 수신한다. 회로(12)는 메모리 시스템(10)으로부터의 기능적으로 병렬인 경로들을 필드의 집합으로서 다루는 데, 각 필드는 하나 또는 그이상의 경로와 관련있다. 필드들의 집합은 하나의 커맨드를 구성한다. 커맨드들의 집합은 단일 인스트럭션 워드를 형성한다.
도 2(a)는 제 1 포맷의 인스트럭션 워드를 도시하며, 이 워드는 다수의 슬롯(20a-20e)으로 나뉘어 진다. 슬롯(20a-20e)의 각 슬롯은 제각기의 커맨드에 대응한다. 각 슬롯은 연산 코드(22a-22e)를 위한 한 필드, (레지스터 파일(16)의 적절한 레지스터에 대한 참조를 표시하는) 피연산자를 위한 두 필드(24a-24e, 26a-26e) 및 (레지스터 파일(16)의 적절한 레지스터에 대한 참조를 표시하는) 결과 및 목표를 위한 한 필드(28a-28e)를 가진다.
도 2(b) 및 도 2(c)는 제 2 포맷의 인스트럭션 워드를 도시하는 데, 여기서 다수의 슬롯들은 "수퍼슬롯(superslots)"으로 결합된다. 예를 들면, 수퍼슬롯(29a)은 종래의 슬롯(20a)와 슬롯(20b)의 필드들을 결합한 것이고, 수퍼슬롯(29b)은 슬롯(20c), 슬롯(20d), 슬롯(20e)의 필드들을 결합한 것이다. 수퍼슬롯 포맷은 종래의 단일 슬롯으로 구현할 수 잇었던 것 보다 더 많은 피연산자를 사용하는 커맨드를 구현할 수 있게 한다. 일반적으로, 필드(22a-22e, 24a-24e, 26a-26e, 28a-28e)의 각 필드는 종래의 슬롯(20a-20e)에서의 기능과 동일한 기능을 수퍼슬롯(29a 및 29e)에서도 가질 수 있거나, 혹은 전혀 이러한 기능을 가지지 못할 수도 있다. 예를 들면, 필드(24a-24e) 및 필드(26a-26e)중의 한 특정한 필드는 제 2 포맷에서와 마찬가지로 제 1 포맷에서 피연산자를 정의하거나, 혹은 전혀 사용되지 않는다. 필드들(22a-22e)중의 특정한 한 필드는 제 2 포맷에서 뿐만 아니라 제 1 포맷에서 연산 코드를 위해 사용되거나, 혹은 전혀 사용되지 않는다. 필드(28a-28e)중의 특정한 한 필드는 제 2 포맷에서와 마찬가지로 제 1 포맷에서도 목표를 위해 사용되거나, 혹은 전혀 사용되지 않을 수 있다. 이 대신에, 제 2 포맷의 필드(22a-22e, 24a-24e, 26a-26e, 28a-28e)는 제 1 포맷의 필드와 다른 목적을 가질 수 있다.
도 3은 디코드 및 착수 회로(30), 기능 유닛(32a-32c) 및 다중포트 레지스터 파일(34)을 구비한 VLIW 프로세서를 도시한다. 디코드 및 착수 회로(30)는 기능 유닛(32a-32c)에 연결된 인스트럭션 디코더(300)를 포함한다. 기능 유닛(32a-32c)은 레지스터 파일(34)의 판독 포트(302a, 302b)에 연결된다. 결과 기록 유닛(304)은 레지스터 파일(34)의 기록 포트(342)에 연결된다. 판독 포트(302a, 302b)의 출력은 기능 유닛(32a-32c)의 입력에 연결된다. 기능 유닛(32a-32c)의 출력은 기록 포트(342)에 연결된다. 디코드 및 착수 회로(12)는 각 발생 슬롯을 위하여 도 3과 동일한 회로를 포함한다. 디코드 및 착수 회로(12)는 각 필드의 기능에 따라 필드(22a-22e, 24a-24e, 26a-26e, 28a-28e)로부터의 정보를 처리한다. 피연산자 필드(24a-24e, 26a-26e)의 각 필드는 레지스터 파일(16)의 각 판독 포트와 관련있다. 디코드 및 착수 회로(12)는 관련된 판독 포트를 다루기 위하여 필드(24a-24e, 26a-26e)의 내용을 사용한다. 유사하게, 목표 필드(28a-28e)는 레지스터 파일(16)의 기록 포트에 대응한다. 디코드 및 착수 회로(12)는 필드(28a-28e)의 내용을 사용하여 관련된 기록 포트를 다룬다. 연산 코드 필드(22a-22e)의 각 필드는 디코드 및 착수 회로(12)의 인스트럭션 디코더(300)로 공급되고, 디코딩된 연산 코드는 기능 유닛(14a-14k)중의 선택된 유닛으로 공급된다. 전형적으로, 디코드 및 착수 회로(12)는 예를 들어, 인스트럭션 워드를 디코딩하는 동안 피연산자 인출을 개시하는 것과 같이 파이프라인 동작(pipelined operation)을 사용한다. 인스트럭션 워드로부터 커맨드를 디코딩 및 인출하는 동작은 이전 인스트럭션 워드로부터 커맨드가 여전히 실행되는 동안, 그리고, 그보다 더 이전의 인스트럭션 워드로부터의 커맨드의 결과가 그의 목표 위치에 기록되는 동안에, 수행된다. 필드(22a-22e, 24a-24e, 26a-26e, 28a-28e)의 기능은 포맷에 관계없이 사전정의되므로, 인스트럭션의 디코딩이 종료되기 전에 피연산자의 인출을 시작할 수 있다.
다수의 기능 유닛(14a-14k)은 도 3의 그룹과 같은 그룹들로 구성된다. 각 그룹은 제 1 포맷의 인스트럭션 워드에서의 각 발생 슬롯과 관련있다. 디코드 및 착수 회로(12)가 제 1 포맷의 인스트럭션 워드를 검출할 때, 회로(12)는 각 슬롯에 대하여, 있는 경우에 커맨드를 실행해야할 슬롯과 관련된 그룹의 유닛을 결정한다. 이 기능 유닛은 후속적으로 커맨드를 실행하기 위한 제어 신호를 수신한다. 따라서, 디코드 및 착수 회로(12)는 한 그룹의 기능 유닛이 동시에 하나의 실행을 개시할 수 있도록 할 것이다. 전형적으로, 동일한 유형의 기능 유닛이 상이한 그룹에 제공된다. 예를 들면, 각 그룹은 ALU(Arithmetic Logic Unit)를 포함한다. ALU는 동시에 각 그룹의 하나의 기능 유닛만을 사용하므로 인해 발생되는 병목 현상을 방지한다.
기능 유닛(14a-14c)중의 일부 유닛은 하나의 그룹에만 속하지 않는다. 이들 유닛은 후술되는 바와 같이 수퍼 기능 유닛(super functional units)으로 참조된다. 수퍼유닛(14a-14c)의 각각은 둘 또는 그이상의 특정한 그룹과 관련있다. 이것은 수퍼유닛(14a-14c)의 각각이 이들 특정 그룹과 관련있는, 레지스터 파일(16)의 판독 포트로부터의 피연산자를 사용할 수 있다는 것을 의미한다. 또한, 수퍼유닛(14a-14c)은 이들 특정 그룹과 관련된, 레지스터 파일(16)의 기록 포트를 사용할 수 있다. 수퍼 기능 유닛(14a-14c)을 위한 커맨드는 제 2 포맷의 인스트럭션 워드로부터 온다. 이러한 커맨드는 수퍼슬롯(29a 및 29b)에 위치한다. 수퍼슬롯에서의 피연산자 필드(24a, 24b 및 26a, 26b)는 수퍼유닛(14a-14c)을 위해 레지스터 파일(16)로부터의 피연산자를 인출하도록 동작한다. 필드(24a, 24b 및 26a, 26b)는 인스트럭션 워드의 포맷에는 관계없이 모든 인스트럭션 워드에 대해 동일한 판독 포트와 관련있다. 그 결과, 포맷이 결정되기 전에 인출이 개시될 수 있다. 유사하게, 목표 필드(28a, 28b)는 레지스터 파일(16)의 기록 포트를 제어한다. 이들 각 필드는 포맷에 관계없이 모든 인스럭션 워드에 대하여 동일한 기록 포트와 관련있다. 디코드 및 착수 회로(12)가 특정한 수퍼유닛이 커맨드의 실행을 시작할 수 있게 할 때, 이 회로(12)는 어떠한 기능 유닛(14d-14k)도 그 수퍼유닛과 관련된 그룹의 커맨드 실행을 시작하지 못하게 할 것이다. 수퍼슬롯(29a, 29b)의 디코딩된 연산 코드 필드(22a, 22b)는 이들 그룹과 관련된 종래의 슬롯(20a, 20b)의 연산 코드(22a, 22b)에 대응하며, 적절한 수퍼유닛(14a-14c)만을 제어하는데 사용된다. 예를 들면, 수퍼유닛을 제어하기 위해 한 슬롯의 연산 코드만을 사용할 수 있지만, 또한, 둘 또는 그이상의 슬롯의 연산 코드들을 결합하기 위한 결합 회로를 사용할 수 있다. 따라서, 각 수퍼유닛(14a-14c)을 위해 상당수의 상이한 연산을 정의할 수 있다. 수퍼유닛(14a-14c)은 둘 이상의 피연산자를 필요로하고, 그리고/혹은 둘 이상의 결과를 발생하는 연산을 구현하는 커맨드를 실행한다. 이러한 연산의 예로는:
AV(R1,R2,R3...) 3 또는 그이상의 피연산자(R1,R2,R3...)의 평균을 생성
ME(R1,R2,R3...) 3 또는 그이상의 피연산자(R1,R2,R3...)의 중간값을 생성
SO(R1,R2) 두 피연산자 R1 및 R2를 정렬(sorting)하여, 보다 큰 피연산자를 한 결과 레지스터에 배치시키고, 보다 작은 피연산자는 또다른 결과 레지스터에 배치
TP(R1,R2,R3,R4...) 행(R1,R2,R3,R4)을 가지는 행렬의 전치(transposition)
RT(R1,R2,R3) 특정한 각상에서 성분(R1,R2,R3)을 가지는 벡터의 회전
종래의 VLIW 프로세서에서, 전술한 연산은 몇몇 커맨드를 순차적으로 실행할 것을 요구한다. 다중포트 레지스터 파일의 레지스터는 작은 숫자 세트의 결합을 나타내기 위한 소정의 경우에 사용된다. 예를 들면, 레지스터가 64 비트폭인 경우, 레지스터당 4개의 16 비트 숫자를 표현할 수 있다. 이 경우에, 이들 숫자의 각각은 독립적으로 동작할 수 있다. 예를 들면, ADD 커맨드에 응답하여, 기능 유닛은 2개의 레지스터로부터의 4쌍의 숫자를 가산할 수 있다.
이러한 접근방안은 수퍼유닛을 위해서도 또한 사용될 수 있다. 예를 들면, 4개의 레지스터는 16 비트 숫자의 4x4 행렬을 나타낼 수 있다. 각 레지스터는 행렬의 각 행을 나타내는 R1=(a11,a12,a13,a14), R2=(a21,a22,a23,a24), R3=(a31,a32,a33,a34), R4=(a41,a42,a43,a44)를 포함한다. 상이한 레지스터에 저장되지만 대응하는 4성분쌍의 동일한 위치에 있는 성분 세트는 행렬의 열을 나타낸다. 전치 연산시에, 상이한 행이자 동일한 위치에 있는 성분들은 함께 레지스터 RESULT1=(a11,a21,a31,a41) 및 RESULT2=(a12,a22,a32,a42)에 배치된다. 행렬을 전치하기 위한 수퍼유닛은 2개의 발생 슬롯을 사용할 수 있고, 4x4 행렬의 두 행을 생성한다. 이러한 기능 유닛에, 전치된 행렬의 2개의 상부 행을 생성하기 위한 커맨드 및 2개의 하부 행을 생성하기 위한 한 커맨드를 포함하는 2개의 커맨드를 제공함으로써, 전치는 신속하게 이루어진다.
유사한 연산은 셔플 연산(shuffle operation)이다:
SH R1,R2,R3 → R4(,R5)
이 동작은 레지스터 R3에 정의된 순열에 따라 레지스터 R1 및 레지스터 R2에 저장된 숫자들의 순서를 바꾸고, 그리고/혹은 선택하고, 이 숫자를 레지스터 R4 및 선택적으로는 레지스터 R5에, 변경된 순서대로 저장시킨다.
소정의 경우에, 하나 또는 그이상의 피연산자는 표준 값을 가진다. 이들 경우에, 단일 발생 슬롯에 맞는 부가적인 커맨드를 정의하는 데 유리하다. 이러한 부가적인 커맨드에서, 연산 코드는 특정한 연산을 정의하고, 하나 또는 그이상의 피연산자의 표준값을 정의한다. 이 표준값은 함축적으로 정의될 수 있다. 부가적인 커맨드는 단지 나머지 피연산자들에 대한 피연산자 참조를 포함한다. 이러한 커맨드는 제 1 포맷 또는 제 2 포맷을 가지는 인스트럭션 워드의 단일 발생 슬롯에 사용될 수 있다. 디코드 및 착수 회로(12)가 이러한 인스트럭션을 만나면, 이 회로는 수퍼유닛 자체에 표준 인수를 제공한다. 따라서, 수퍼유닛은 하나의 발생 슬롯을 사용하는 커맨드 및 2 또는 그이상의 발생 슬롯을 사용하는 커맨드를 수신할 수 있다. 전자의 경우에 표준 값이 사용되고, 인스트럭션 워드에 상당수의 커맨드가 포함될 수 있다.
도 1에 도시된 실시예에서, 각 수퍼유닛은 기능 유닛 그룹의 전체수와 관련있는 발생 슬롯의 모든 필드를 사용한다. 대체 수퍼유닛은 발생 슬롯의 일부 필드를 사용하거나 또는 하나도 사용하지 않을 수 있다. 예를 들면, 이러한 대체 유닛은 하나의 특정한 발생 슬롯의 필드로부터 온 두 오퍼랜드와, 또다른 발생 슬롯의 필드로부터 온 한 오퍼랜드를 포함한 3개의 오퍼랜드를 처리하 수 있다. 이러한 대체 유닛을 사용하는 경우, 이 대체 수퍼유닛과 병렬로 실행을 개시할 수 있는 다른 유닛을 위해 다른 적절한 발생 슬롯의 필드를 이용할 수 있다. 이들 다른 기능 유닛은 예를 들면, 단지 하나의 피연산자를 가질 수도 있고 혹은 피연산자를 하나도 가지지 못할 수도 있고, 혹은 어떠한 결과도 발생하지 못할 수도 있다. 이들 다른 기능 유닛은 대체 유닛이 사용하지 않고 남긴 소정의 필드만을 사용한다. 또한, 이들 다른 기능 유닛은 또다른 발생 슬롯의 필드에 부가적으로 소정의 발생 유닛의 필드를 사용하는, 대체 수퍼 기능 유닛, 그자체일 수 있다. 그러나, 대체 기능 유닛을 사용하면 단일 인스트럭션 워드로부터의 커맨드를 수신할 수 있는 유닛들의 결합을 복합적으로 제약할 수 있다. 발생 유닛의 모든 필드를 사용하거나 혹은 적어도 부분적으로 배정된 슬롯에서 나머지 필드를 사용하지 않으므로써, 이러한 제약조건을 피할 수 있다. 이것은 보다 높은 병렬성을 활용할 수 있게 하고, 인스트럭션 워드의 컴파일을 보다 신속하게 만든다.
컴파일러는 VLIW 프로세서를 위한 인스트럭션 워드를 발생한다. 컴파일러는 커맨드들간의 데이터 종속성을 가지는 다수의 커맨드에 의해 프로그램을 기술한다. 컴파일러는 인스트럭션 워드 세트에 모든 커맨드를 배치할 방법을 찾는다. 컴파일러는 프로그램의 실행동안 순차적으로 실행해야할 인스트럭션 워드의 수를 최소화시킨다. 도 4는 컴파일 프로그램의 방법을 나타내는 흐름도이다. 제 1 단계(40)에서, 연산들간의 데이터 종속성의 명시를 함께 수신한다. 후속적으로, 컴파일러는 인스트럭션 워드 세트에서 연산을 위한 커맨드를 배치할 방법을 찾기 시작한다. 제 2 단계(42)에서, 수신한 모든 연산을 위해 커맨드를 배치했는 지의 여부를 검사한다. 만약 그렇다면, 컴파일 처리는 종료된다. 만약 그렇지 않은 경우, 제 3 단계(44)에서, 커맨드가 아직 배치되지 않은 연산으로서, 그의 선행된 "소스 연산"이 이미 배치되어 그의 피연산자를 생성하는, 연산을 선택한다. 또한, 소스 연산을 위한 커맨드가 배치된 인스트럭션 워드 다음의 인스트럭션 워드 세트로부터 최초 인스트럭션 워드를 선택한다. 제 4 단계(46)에서, 최초 인스트럭션 워드에 이미 포함된 커맨드에 더해, 선택된 연산을 위한 커맨드를 포함하여 인스트럭션 워드를 구성할 수 있는 지의 여부를 검사한다. 단계(46)는 커맨드의 특성 및 기능 유닛의 그룹화를 고려한다. 다음의 두가지가 가능한 지의 여부를 검사한다:
- 상이한 그룹에 커맨드들을 배치
- 다른 커맨드가 이들 수퍼 기능 유닛과 관련된 그룹을 위한 발생 슬롯을 사용하지 못하도록 수퍼 기능 유닛을 위해 커맨드를 배치
만약 상술한 내용이 가능하다면, 선택된 인스트럭션 워드는 갱신되고, 이 방법은 두 번째 단계(42)로 복귀한다. 만약 상술한 내용이 불가능하다면, 제 5 단계(48)에서는 선택된 인스트럭션 워드에 후속하는 인스트럭션 워드를 선택하고, 제 4 단계(46)를 반복한다.
도 5는 제 4 단계(46)를 더 상세히 설명하기 위해 도시한 것이다. 좌측에는 다수의 연산 번호가 제 1 노드(50a-50d)로 도시된다. 우측에는 다수의 발생 슬롯이 제 2 노드(52a-52e)로 도시된다. 제 4 단계의 작업은 제 1 노드(50a-50d)로부터 제 2 노드(52a-52e)로의 매핑(mapping)이 있는 지의 여부를 검사하는 것이다. 이러한 매핑에서 수퍼 기능 유닛을 위한 연산(50d)은 2 또는 그이상의 발생 슬롯(52d, 52e)으로 매핑된다. 다른 제 1 노드들(50a-50e)는 종래의 연산에 대응하고, 제 2 노드(52a-52e)의 각 노드에 제각기 매핑된다. 노드(52a-52e)의 각각은 적절한 연산을 수행할 수 있는 기능 유닛을 포함한 그룹과 관련있는 발생 슬롯에 대응한다. 물론, 도 4의 흐름도는 단순한 예를 나타낸 것이다. 일반적으로, 최소화는 커맨드들간의 데이터 종속성의 제한조건하에 수행된다(즉, 제 1 커맨드가 제 2 커맨드로부터의 결과를 입력으로 사용하는 경우, 이들 커맨드는 상이한 인스트럭션 워드에 배치되어야 하고, 제 1 커맨드를 포함한 인스트럭션 워드는 제 2 커맨드를 포함하는 인스트럭션 워드에 후속된다). 또한, 최소화는 기능 유닛이 각 인스트럭션 워드에 대하여 모든 커맨드를 병렬로 실행할 수 있다는 제한조건 하에 수행된다.

Claims (13)

  1. 각 워드가 몇몇 커맨드 및 상기 커맨드들사이에 분산된 필드(22a-28a; 22b-28b; 22e-28e)를 포함하는, 초대형 인스트럭션 워드(very long instruction word)를 공급하기 위한 인스트럭션 발생 포트(instruction issue port)와,
    제 1 필드(28a)를 포함한 제 1 커맨드(20a) 및 제 2 필드(28b)를 포함한 제 2 커맨드(20b)를 구비하는, 상기 초대형 인스트럭션 워드들중의 제 1 워드(도 2(a))와,
    상기 제 1 및 제 2 필드의 모두를 포함한 제 3 커맨드(29a)를 구비하는 초대형 인스트럭션 워들들중의 제 2 워드(도 2(b))와,
    상기 제 1 커맨드를 처리하기 위하여 상기 발생 포트에 연결된 제 1 기능 유닛(14d)과,
    상기 제 1 유닛과 동시에 상기 제 2 커맨드를 처리하기 위하여 상기 발생 포트에 연결된 제 2 기능 유닛(14g)과,
    상기 제 3 커맨드를 처리하기 위하여 상기 발생 포트에 연결된 제 3 기능 유닛(14a)
    을 포함하는 VLIW 프로세서(도 1).
  2. 제 1 항에 있어서,
    상기 제 3 커맨드는 상기 제 1 커맨드의 모든 필드들을 포함하는 VLIW 프로세서.
  3. 제 1 항에 있어서,
    상기 프로세서는 다중포트 레지스터 파일(16)을 가지고.
    상기 인스트럭션 발생 포트는 상기 레지스터 파일에 상기 제 1 필드를 제공함으로써, 상기 제 1 기능 유닛이 상기 제 1 커맨드를 실행할시에 사용하기 위한 제 1 피연산자를 인출하고,
    상기 인스트럭션 발생 포트는 상기 레지스터 파일에 상기 제 2 필드를 제공함으로써, 상기 제 2 기능 유닛이 상기 제 2 커맨드를 실행할시에 사용하기 위한 제 2 피연산자를 인출하고,
    상기 인스트럭션 발생 포트는 상기 레지스터 파일에 상기 제 1 및 제 2 필드를 제공함으로써, 상기 제 3 기능 유닛이 상기 제 3 커맨드를 실행할시에 사용하기 위한 다수의 피연산자를 인출하는
    VLIW 프로세서.
  4. 제 3 항에 있어서,
    상기 제 1 기능 유닛은 상기 제 1 커맨드를 실행한 제 1 결과를, 상기 제 1 커맨드의 절적한 제 1 필드에서 지시한 상기 레지스터 파일의 제 1 어드레스에 기록하고,
    상기 제 2 기능 유닛은 상기 제 2 커맨드를 실행한 제 2 결과를, 상기 제 2 커맨드의 적절한 제 2 필드에서 지시한 상기 레지스터 파일의 제 2 어드레스에 기록하고,
    상기 제 3 기능 유닛은 상기 제 3 커맨드를 실행한 제 3 및 제 4 결과를, 상기 제 3 커맨드의 적절한 상기 제 1 및 제 2 필드에서 지시한 상기 레지스터 파일의 제 3 및 제 4 어드레스에 각각 기록하는
    VLIW 프로세서.
  5. 제 1 항에 있어서,
    상기 커맨드들중의 상기 제 1 커맨드 및/또는 제 2 커맨드의 실행 단계는 상기 제 3 커맨드의 또다른 실행 단계와 동시에 수행되도록 배치되는 VLIW 프로세서.
  6. 제 5 항에 있어서,
    상기 제 1 및 제 3 커맨드를 실행할 수 있는 제 4 기능 유닛(14b)을 더 포함하고, 상기 제 4 유닛은 상기 제 1 커맨드가 실행될 때 상기 기능 유닛에 상기 제 2 필드의 내용으로부터의 정보 대신에 표준 내용을 제공하도록 동작되는 VLIW 프로세서.
  7. VLIW 프로세서(도 1)를 위한 인스트럭션을 컴파일하는 방법으로서, 상기 프로세서는 기능 유닛 그룹(14a-14k)을 포함하고, 각 인스트럭션 워드는 각 기능 유닛 그룹을 위한 최대 하나의 커맨드를 포함할 수 있고, 또한, 상기 프로세서는 적어도 2개의 그룹과 관련된 적어도 하나의 부가적인 기능 유닛(14a-14c)을 포함하고, 상기 부가적인 기능 유닛을 위한 커맨드를 포함하는 각 인스트럭션 워드는 상기 적어도 2개의 그룹에서의 소정의 기능 유닛을 위한 커맨드를 포함할 수 없는 상기 컴파일 방법은,
    상기 기능 유닛이 실행해야 하는 커맨드 세트를 수신하는 단계와,
    인스트럭션 워드로의 커맨드의 일정한 배정을 조사하는 단계
    를 포함하고,
    상기 조사 단계는 상기 기능 유닛을 위한 한 커맨드 및 상기 적어도 2개의 그룹으로부터의 한 기능 유닛을 위한 적어도 하나의 커맨드의 모두를 포함하는 인스트럭션 워드를 조사하지 않도록 하는 단계를 포함하는
    인스트럭션을 컴파일하는 방법.
  8. VLIW 프로세서를 위한 인스트럭션을 컴파일하는 방법을 수행하기 위한 프로그램을 구비한 기계 판독가능 매체(machine readable medium)에 있어서, 상기 프로세서는 기능 유닛 그룹(14a-14k)을 포함하고, 각 인스트럭션 워드는 각 기능 유닛 그룹을 위한 최대 하나의 커맨드를 포함할 수 있고, 또한, 상기 프로세서는 적어도 2개의 그룹과 관련된 적어도 하나의 부가적인 기능 유닛(14a-14c)을 포함하고, 상기 부가적인 기능 유닛을 위한 커맨드를 포함하는 각 인스트럭션 워드는 상기 적어도 2개의 그룹에서의 소정의 기능 유닛을 위한 커맨드를 포함할 수 없는 상기 컴파일 방법은,
    상기 기능 유닛이 실행해야 하는 커맨드 세트를 수신하는 단계와,
    인스트럭션 워드로의 커맨드의 일정한 배정을 조사하는 단계
    를 포함하고,
    상기 조사 단계는 상기 기능 유닛을 위한 한 커맨드 및 상기 적어도 2개의 그룹으로부터의 한 기능 유닛을 위한 적어도 하나의 커맨드의 모두를 포함하는 인스트럭션 워드를 조사하지 않도록 하는 단계를 포함하는
    기계 판독가능 매체.
  9. 인스트럭션 발생 포트의 필드(22a-28a; ...22e-28e)에서 연속적인 인스트럭션 워드를 발생하기 위하여 상기 인스트럭션 발생 포트를 구비한 VLIW 프로세서상에서 컴퓨터 프로그램을 실행하는 방법에 있어서,
    상기 인스트럭션 발생 포트로부터의 제 1 및 제 2 필드(28a, 28b)를 포함하는 제 1 및 제 2 커맨드(20a, 20b)를 구비한 제 1 인스트럭션 워드(도 2(a))를 실행하는 단계와,
    상기 제 1 및 제 2 필드의 모두를 포함하는 제 3 커맨드(29a)를 구비한 제 2 인스트럭션(도 2(b))을 실행하는 단계
    를 포함하는 컴퓨터 프로그램을 실행하는 방법.
  10. 제 10 항에 있어서,
    상기 제 1 커맨드에 사용된 모든 필드로 구성되는 필드 세트(22a-28a;22b-28b)는 상기 제 3 커맨드에 포함되고, 상기 방법은 상기 필드 세트의 필드를 사용하여 상기 제 3 커맨드를 실행하는 단계를 더 포함하는 컴퓨터 프로그램을 실행하는 방법.
  11. VLIW 프로세서를 위한 프로그램을 포함한 기계 판독가능 매체로서, 상기 프로그램은 제 1 및 제 2 필드(28a, 28b)를 포함하는 제 1 및 제 2 커맨드(20a;20b)를 가지는 제 1 인스트럭션 워드(도 2(a))와, 상기 제 1 및 제 2 필드의 모두를 포함하는 제 3 커맨드(29a)를 가지는 제 2 인스트럭션 워드(도 2(b))를 포함하는 기계 판독가능 매체.
  12. 제 12 항에 있어서,
    상기 제 1 커맨드에 사용된 모든 필드로 구성되는 필드 세트(22a-28a; 22b-28b)는 제 3 커맨드에 포함되는 기계 판독가능 매체.
  13. 제 13 항에 있어서,
    상기 제 2 커맨드에 사용된 모든 필드로 구성되는 필드 세트(22a-28a; 22b-28b)는 상기 제 3 커맨드에 포함되는 기계 판독가능 매체.
KR1019997008382A 1998-01-16 1999-01-15 Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 KR100715055B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/008,339 US6076154A (en) 1998-01-16 1998-01-16 VLIW processor has different functional units operating on commands of different widths
US09/008,339 1998-01-16
US9/008,339 1998-01-16
PCT/IB1999/000044 WO1999036845A2 (en) 1998-01-16 1999-01-15 Vliw processor processes commands of different widths

Publications (2)

Publication Number Publication Date
KR20000076285A true KR20000076285A (ko) 2000-12-26
KR100715055B1 KR100715055B1 (ko) 2007-05-07

Family

ID=21731066

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997008382A KR100715055B1 (ko) 1998-01-16 1999-01-15 Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법

Country Status (8)

Country Link
US (1) US6076154A (ko)
EP (1) EP0968463B1 (ko)
JP (1) JP3976082B2 (ko)
KR (1) KR100715055B1 (ko)
CN (2) CN1516003A (ko)
DE (1) DE69933088T2 (ko)
TW (1) TW469407B (ko)
WO (1) WO1999036845A2 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
JP4156794B2 (ja) * 1997-11-07 2008-09-24 アルテラ コーポレイション iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
WO2000079395A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for establishing port priority functions in a vliw processor
GB2352066B (en) * 1999-07-14 2003-11-05 Element 14 Ltd An instruction set for a computer
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
EP1340142A2 (en) * 2000-11-27 2003-09-03 Koninklijke Philips Electronics N.V. Data processing apparatus with many-operand instruction
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US6552625B2 (en) 2001-06-01 2003-04-22 Microchip Technology Inc. Processor with pulse width modulation generator with fault input prioritization
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US6601160B2 (en) 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6604169B2 (en) 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6889242B1 (en) 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
US6851010B1 (en) 2001-06-29 2005-02-01 Koninklijke Philips Electronics N.V. Cache management instructions
US6886091B1 (en) 2001-06-29 2005-04-26 Koninklijke Philips Electronics N.V. Replacing VLIW operation with equivalent operation requiring fewer issue slots
US20040021483A1 (en) * 2001-09-28 2004-02-05 Brian Boles Functional pathway configuration at a system/IC interface
US6552567B1 (en) 2001-09-28 2003-04-22 Microchip Technology Incorporated Functional pathway configuration at a system/IC interface
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
AU2003282553A1 (en) * 2002-08-05 2004-02-25 Koninklijke Philips Electronics N.V. Processor and method for processing vliw instructions
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7315935B1 (en) * 2003-10-06 2008-01-01 Advanced Micro Devices, Inc. Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
DE602005019180D1 (de) 2004-09-22 2010-03-18 Koninkl Philips Electronics Nv Datenverarbeitungsschaltung mit funktionseinheiten mit gemeinsamen leseports
CN100461716C (zh) * 2005-01-28 2009-02-11 华为技术有限公司 基于模拟端口的通信方法
US8713286B2 (en) * 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US20070027944A1 (en) * 2005-07-28 2007-02-01 James Wilson Instruction based parallel median filtering processor and method
US8321490B2 (en) 2005-07-28 2012-11-27 Analog Devices, Inc. Instruction-based parallel median filtering
KR20090078790A (ko) * 2006-09-26 2009-07-20 샌드브리지 테크놀로지스, 인코포레이티드 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법
US8495604B2 (en) * 2009-12-30 2013-07-23 International Business Machines Corporation Dynamically distribute a multi-dimensional work set across a multi-core system
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
KR102593320B1 (ko) * 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
EP0855647A1 (en) * 1992-01-06 1998-07-29 Hitachi, Ltd. Computer for performing data fetch and data prefetch in parallel
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
DE69325785T2 (de) * 1992-12-29 2000-02-17 Koninkl Philips Electronics Nv Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
JPH07104996A (ja) * 1993-10-05 1995-04-21 Kofu Nippon Denki Kk マイクロプログラム制御装置
WO1996008777A1 (en) * 1994-09-15 1996-03-21 Philips Electronics N.V. A data processing system comprising data processing units and an expander
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
WO1997043710A2 (en) * 1996-05-15 1997-11-20 Philips Electronics N.V. Vliw processor which processes compressed instruction format
US5787302A (en) * 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor

Also Published As

Publication number Publication date
WO1999036845A3 (en) 1999-10-07
JP3976082B2 (ja) 2007-09-12
DE69933088D1 (de) 2006-10-19
CN1516003A (zh) 2004-07-28
WO1999036845A2 (en) 1999-07-22
CN1258361A (zh) 2000-06-28
KR100715055B1 (ko) 2007-05-07
TW469407B (en) 2001-12-21
US6076154A (en) 2000-06-13
EP0968463A2 (en) 2000-01-05
CN1126027C (zh) 2003-10-29
EP0968463B1 (en) 2006-09-06
JP2001515635A (ja) 2001-09-18
DE69933088T2 (de) 2007-04-05

Similar Documents

Publication Publication Date Title
KR100715055B1 (ko) Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법
US7493474B1 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
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
US5649135A (en) Parallel processing system and method using surrogate instructions
US7028170B2 (en) Processing architecture having a compare capability
US9329866B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
JP2816248B2 (ja) データプロセッサ
US7350055B2 (en) Tightly coupled accelerator
JP2002333978A (ja) Vliw型プロセッサ
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
EP1261914B1 (en) Processing architecture having an array bounds check capability
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
JP3595158B2 (ja) 命令割り当て方法及び命令割り当て装置
US20040059894A1 (en) Process for running programs on processors and corresponding processor system
JP2008513878A (ja) 機能単位が読み出しポートを共有するデータ処理回路
US6857063B2 (en) Data processor and method of operation
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
EP0862111B1 (en) Dynamic conversion between different instruction codes by recombination of instruction elements
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
EP1378825A1 (en) A method for executing programs on selectable-instruction-length processors and corresponding processor system
Choe et al. A VLSI multistreaming RISC processor

Legal Events

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

Payment date: 20130426

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140428

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150417

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170425

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180419

Year of fee payment: 12

EXPY Expiration of term