KR100534967B1 - 코드효율이높은초장명령어를실행하는프로세서 - Google Patents

코드효율이높은초장명령어를실행하는프로세서 Download PDF

Info

Publication number
KR100534967B1
KR100534967B1 KR1019980022512A KR19980022512A KR100534967B1 KR 100534967 B1 KR100534967 B1 KR 100534967B1 KR 1019980022512 A KR1019980022512 A KR 1019980022512A KR 19980022512 A KR19980022512 A KR 19980022512A KR 100534967 B1 KR100534967 B1 KR 100534967B1
Authority
KR
South Korea
Prior art keywords
field
code
format
decoding
instruction
Prior art date
Application number
KR1019980022512A
Other languages
English (en)
Other versions
KR19990007023A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=15685098&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100534967(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마츠시타 덴끼 산교 가부시키가이샤 filed Critical 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR19990007023A publication Critical patent/KR19990007023A/ko
Application granted granted Critical
Publication of KR100534967B1 publication Critical patent/KR100534967B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

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

Abstract

32비트 길이의 명령(50)은 4비트 길이의 포맷 필드(51)와, 4비트 길이의 연산 필드(52) 및 2개의 12비트 길이의 연산 필드(59, 60)로 이루어진다. 4비트 길이의 연산 필드(52)에는 암묵적으로 지정된 정수 레지스터(36)의 저장값을 분기장소 어드레스로 하는 분기 연산을 지정하는 연산 코드 "cc"만이 배치되거나, 또는 정수 레지스터(36)에 세트되는 정수"const"가 배치된다. 어느 것이 배치되어 있는지는 포맷 필드(51)에 배치된 포맷 코드에 따라 특정된다.

Description

코드 효율이 높은 초장 명령어를 실행하는 프로세서{PROCESSOR FOR EXECUTING HIGHLY EFFICIENT VLIW}
본 발명은 초장 명령어(Very Long Instruction Word ; 이하 VLIW라 함) 아키텍처를 채용하는 프로세서에 관한 것으로, 특히 비교적 짧은 워드 길이로서 코드 효율이 높은 명령을 실행하는 프로세서에 관한 것이다.
최근의 멀티미디어 관련기기의 수요 증대와 전자기기의 소형화에 따라 음성이나 화상 데이터 등의 멀티미디어 데이터를 고속으로 처리할 수 있는 마이크로 프로세서가 필요해지고 있다. 이러한 요구에 부응하는 마이크로 프로세서로서 VLIW 아키텍처를 채용하는 프로세서(이하, 「VLIW 프로세서」라 함)가 있다.
VLIW 프로세서는 내부에 복수의 연산유니트를 구비하고 1개의 VLIW에 배치된 복수의 연산을 동시 병렬로 실행한다. 이러한 VLIW는 컴파일러에 의해 소스 프로그램에 있어서의 연산 레벨에서의 병렬성이 검출되고 스케쥴링된 후에 생성된 것이다. 그런데 특히 기기 조립 용도에 있어서는 프로그램의 코드 사이즈가 문제가 되기 때문에 256비트와 같이 긴 VLIW나 무동작 명령(이하 「NOP 명령」이라 함)이 빈번히 삽입된 코드 효율이 나쁜 VLIW는 바람직하지 못하다.
비교적 짧은 워드 길이의 명령을 실행하는 종래의 VLIW 프로세서로서 최대 2개의 연산을 동시에 지정할 수 있는 32비트의 명령을 실행하는 VLIW 프로세서가 있다(예를 들면 일본국 특개평 9-26878호에 개시(開示)된 데이터 처리장치).
도 1의 (a) 및 (b)는 상기 종래 기술에서의 명령 포맷을 도시한 것으로, 각각 동시에 2개의 연산을 지정하는 명령 포맷, 1개의 연산만을 지정하는 명령 포맷을 도시한다. 이 종래 기술은 2비트의 포맷 필드(410)의 값에 의해 그 명령에 배치된 연산의 수나 실행순서를 제어함으로써 코드 효율을 향상시키는 것이다.
그렇지만 상기 종래 기술에서는 32비트 길이의 1개의 명령으로 동시에 지정할 수 있는 연산의 수는 최고 2개이고, 그 병렬성은 충분하다고 할 수는 없다. 또한 어떤 길이의 워드 길이를 넘는 정수를 이용한 연산을 행하게 하는 경우에는 명령의 코드 효율이 저하되는 문제점이 있다. 예를 들면 32비트의 정수를 레지스터에 세트하기 위해 그 정수를 2개로 분할하고, 정수의 상위 16비트를 세트한 후에 하위 16비트를 세트한 경우에는 그들 연산의 지정을 위해서만 2개의 32비트 길이 명령이 소비된다.
본 발명은 이러한 문제점을 감안하여 이루어진 것으로서, 본 발명의 제 1의 목적은 비교적 짧은 워드 길이의 명령이면서 많은 연산을 지정할 수 있는 코드 효율이 좋은 구조를 갖는 명령, 예를 들면 32비트 길이의 명령이면 3개 이상의 연산을 지정할 수 있는 병렬성이 높은 명령을 실행하는 VLIW 프로세서를 제공하기 위한 것이다.
또한 본 발명의 제 2의 목적은 비교적 짧은 워드 길이의 명령이면서 비교적 긴 워드 길이의 정수를 취급하는 경우에 있어서도 코드 효율이 쉽게 저하되지 않는 구조를 갖는 명령을 실행하는 VLIW 프로세서를 제공하기 위한 것이다.
상기 제 1의 목적을 달성하기 위해, 본 발명은 2개 이상의 연산 필드를 포함하는 명령을 해독하여 실행하는 초장 명령어(VLIW) 프로세서로서, 제 1의 상기 연산 필드에는 연산의 종류를 지정하는 1개의 연산 코드만이 배치되고, 제 2의 상기 연산 필드에는 1개의 연산 코드와 연산의 대상이 되는 데이터를 지정하는 1개 이상의 오퍼랜드의 조(組)가 배치되고, 상기 제 1 연산 필드에 배치된 연산 코드를 해독하는 제 1 해독수단과, 상기 제 1 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 연산을 실행하는 제 1 실행수단과, 상기 제 2 연산 필드에 배치된 연산 코드를 해독하는 제 2 해독수단과, 상기 제 2 해독수단에 의한 해독결과에 따라 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 2 실행수단을 구비하는 것으로 할 수도 있다. 이것에 의해 명령중의 적어도 1개의 연산에는 명시적인 오퍼랜드를 수반하지 않는 연산 코드만을 배치할 수 있으므로 명령어 길이는 단축되고, 비교적 짧은 워드 길이의 명령이며 또한 동시에 많은 연산을 지정할 수 있는 코드 효율이 좋은 구조를 갖는 명령을 실행하는 VLIW 프로세서가 실현된다.
또한 상기 제 1 연산 필드에 배치된 연산 코드의 자리수는 상기 제 2 연산 필드에 배치된 연산 코드의 자리수와 같다고 할 수도 있다. 이것에 의해 명령중에 배치되는 모든 연산 코드의 자리수를 공통으로 할 수 있으므로 디코더 회로 등이 간단화된다.
또한 상기 명령에 포함되는 연산 필드는 3개이고, 제 3의 상기 연산 필드는 상기 제 2 연산 필드와 같은 자리수로서 1개의 연산 코드와 1개 이상의 오퍼랜드의 조가 배치되며, 상기 VLIW 프로세서는 또한 상기 제 3 연산 필드에 연산 코드가 배치된 경우에 상기 연산 코드를 해독하는 제 3 해독수단과, 상기 제 3 해독수단에 의한 해독결과에 따라 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 3 실행수단을 구비하는 것으로 할 수도 있다. 이것에 의해 동시에 3개의 연산을 실행하는 병렬성이 높은 VLIW 프로세서가 실현된다.
또한 상기 제 1 실행수단은 실행할 명령이 포함되는 프로그램의 흐름을 제어하는 것으로 할 수도 있다. 이것에 의해 일반적으로 많은 자리수를 필요로 하지 않는 분기 연산이 자리수가 작은 연산 필드에 할당되므로 코드 효율이 좋은 명령세트가 정의된다.
또한 상기 제 2 실행수단은 상기 제 2 연산 필드에 배치된 오퍼랜드에 의해 지정된 데이터의 전송을 제어하고, 상기 제 3 실행수단은 상기 제 3 연산 필드에 배치된 오퍼랜드에 의해 지정된 데이터의 산술 논리연산을 실행하는 것으로 할 수도 있다. 이것에 의해 외부 메모리와의 데이터 전송은 명령중의 1개의 연산만에 의해 지정되게 되므로 VLIW 프로세서가 구비할 오퍼랜드 액세스 회로는 간단화된다.
또 상기 제 2 목적을 달성하기 위해, 본 발명은 2개 이상의 연산 필드를 포함하는 명령을 해독하여 실행하는 VLIW 프로세서로서, 제 1의 상기 연산 필드에는 연산의 종류를 지정하는 1개의 연산 코드만 또는 정수만이 배치되고, 제 2의 상기 연산 필드에는 1개의 연산 코드와 연산의 대상이 되는 데이터를 지정하는 1개 이상의 오퍼랜드의 조 또는 정수만이 배치되고, 상기 제 1 연산 필드에 연산 코드가 배치된 경우에 상기 연산 코드를 해독하는 제 1 해독수단과, 상기 제 1 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 연산을 실행하는 제 1 실행수단과, 상기 제 2 연산 필드에 연산 코드가 배치된 경우에 상기 연산 코드를 해독하는 제 2 해독수단과, 상기 제 2 해독수단에 의한 해독결과에 따라 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 2 실행수단을 구비하는 것으로 할 수도 있다. 이것에 의해 명령중의 어떤 연산 필드에 쓸모없는 코드를 배치할 필요가 생긴 경우에도 다른 연산으로 사용되는 정수로 채워 두는 것이 가능해지므로, 비교적 짧은 워드 길이의 명령이라도 코드 효율이 쉽게 저하되지 않는 구조를 갖는 명령을 실행하는 VLIW 프로세서가 실현된다.
또한 상기 명령은 또한 상기 제 1 및 제 2 연산 필드 각각에 정수만이 배치되어 있는지의 여부를 지정하는 포맷 코드가 배치된 포맷 필드를 포함하며, 상기 VLIW 프로세서는 또한 상기 포맷 코드를 해독하는 포맷 해독수단과, 상기 포맷 해독수단에 의해 상기 제 1, 제 2 및 제 3의 적어도 1개의 연산 필드에 정수만이 배치되어 있다고 해독된 경우, 그 정수를 페치하여 기억하는 정수 기억수단을 구비한다고 할 수도 있다. 이것에 의해 연산 필드에 채워진 정수는 정수 기억수단에 저장되어, 다른 명령중에 배치된 연산에 의해 그 정수를 이용하는 것이 가능해지므로, 비교적 짧은 워드 길이의 명령이고 또한 비교적 긴 워드 길이의 정수를 취급하는 경우에서도 코드 효율의 저하가 회피된다.
또한 상기 포맷 필드의 자리수, 상기 제 1 연산 필드의 자리수, 상기 제 2 및 제 3 연산 필드에 배치된 연산 코드의 자리수, 상기 제 2 및 제 3 연산 필드에 배치된 각 오퍼랜드의 자리수는 모두 n비트로 할 수도 있다. 이것에 의해 1개의 명령을 구성하는 모든 필드의 자리수가 같아지므로 VLIW 프로세서의 내부회로가 간단화된다.
또한 본 발명은 복수의 연산 필드로 이루어지는 명령을 실행하는 VLIW 프로세서에 있어서, 상기 연산 필드의 크기가 불균일하고, 또한 상기 명령의 명령어 길이는 상기 명령이 갖는 연산 필드의 수로 나누어 떨어지지 않는 것이라고 할 수도 있다. 이것에 의해 명령중의 모든 연산 필드가 같은 워드 길이가 되어야 한다는 제한으로부터 해방되어 코드 효율이 좋은 명령 포맷을 정의할 수 있게 되므로, 비교적 짧은 워드 길이의 명령인 동시에 많은 연산을 지정할 수 있는 코드 효율이 좋은 구조를 갖는 명령을 실행하는 VLIW 프로세서가 실현된다.
또한 본 발명은 복수의 연산 필드로 이루어지는 명령을 실행하는 VLIW 프로세서에 있어서, 상기 연산 필드의 크기가 불균일하고, 또한 상기 명령은 3가지의 연산 필드를 32비트의 명령어 길이중에 갖는 것이라고 할 수도 있다. 이것에 의해 32비트 길이로 3개의 연산을 지정할 수 있는 병렬성이 높은 명령을 실행하는 VLIW 프로세서가 실현된다.
또한 본 발명은 복수의 연산 필드로 이루어지는 명령을 실행하는 VLIW 프로세서에 있어서, 상기 연산 필드중 적어도 1개는 오퍼랜드의 수가 다른 것이라고 할 수도 있다. 이것에 의해 명령중의 모든 연산 필드가 같은 개수의 오퍼랜드를 갖지 않으면 안 되는 제한으로부터 해방되므로 코드 효율이 좋은 명령 포맷을 정의할 수 있게 된다.
또한 본 발명은 복수의 연산 필드로 이루어지는 명령을 실행하는 VLIW 프로세서에 있어서, 상기 연산 필드중 1개는 연산 코드만으로 이루어진다고 할 수도 있다. 이것에 의해 명령중의 모든 연산 필드에 연산 코드와 오퍼랜드의 조가 배치되는 경우에 비해 명령의 워드 길이는 단축되므로, 코드 효율이 좋은 구조를 갖는 명령을 실행하는 VLIW 프로세서가 실현된다.
이상과 같이 본 발명에 의해 비교적 짧은 워드 길이의 명령이며, 또한 동시에 많은 연산을 지정할 수 있는 코드 효율이 좋은 구조를 갖는 명령을 실행하는 VLIW 프로세서가 실현되고, 특히 멀티미디어 데이터를 처리하는 조립 용도의 프로세서로서 그 실용적 가치는 크다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부도면과 관련한 다음의 상세한 설명을 통해 보다 분명해질 것이다.
( 실시예 )
이하 본 발명에 관한 프로세서의 실시예에 대하여 도면을 이용하여 상세히 설명하기로 한다. 또한 본 명세서에서 「명령」이란 본 프로세서가 동시 병렬로 해독하여 실행하는 코드 전체를 의미하며, 「연산」이란 본 프로세서가 병렬로 실행할 수 있는 수치연산, 논리연산, 전송, 분기 등의 처리단위 또는 그 처리단위를 지정하기 위한 코드를 의미한다.
( 명령 포맷 )
우선 본 프로세서가 해독 실행하는 명령의 구조에 대하여 설명하기로 한다.
본 프로세서는 VLIW 프로세서이고 32비트 고정길이의 명령을 해독 실행한다.
도 2의 (a)는 본 프로세서가 실행하는 명령(50)의 필드 구성을 도시한 도면이다. 도 2의 (b)∼도 2의 (d)는 16종류의 명령 포맷을 도시한 도면이고, 그 중 도 2의 (b)는 3연산, 도 2의 (c)는 2연산, 도 2의 (d)는 1연산을 동시에 지정할 수 있는 명령 포맷이다.
이 명령(50)은 32비트 고정길이이고, 4비트씩으로 구분된 8개의 물리 필드(상위로부터 P0.0 필드(51), P1.0 필드(52), …, P3.2 필드(58))로 이루어진다. 또한 P2.0 필드(53)∼P2.2 필드(55)의 그룹을 정리하여 제 1 연산 필드(59)라 하고, P3.0 필드(56)∼P3.2 필드(58)의 그룹을 정리하여 제 2 연산 필드(60)라 한다.
도 2의 (b)∼도 2의 (d)에 있어서 "const"는 정수이고, 이것이 이용되는 연산의 종류에 따라서는 즉치(卽値), 절대 어드레스, 디스플레이스먼트(displacement) 등의 수치정수나 문자정수를 의미한다. "op"는 연산의 종류를 지정하는 연산 코드를 의미하고, "Rs"는 소스 오퍼랜드(source operand)가 되는 레지스터를 의미하고, "Rd"는 데스티네이션 오퍼랜드(destination operand)가 되는 레지스터를 의미하며, "cc"는 본 프로세서가 구비하는 전용 32비트 레지스터(도 4에 도시되는 정수 레지스터(36))의 저장값을 분기장소의 절대 어드레스 또는 상대 어드레스(디스플레이스먼트)로 하는 분기 연산을 지정하는 연산 코드를 의미한다.
또한 이들 코드의 직후에 첨부된 수치는 제 1 연산 필드(59) 및 제 2 연산 필드(60) 중 어느 한쪽의 연산을 위해 이용되는 것인지를 도시한다. 예를 들면 포맷 코드가 "6"인 명령 포맷인 경우이면 P1.0 필드(52)에 배치된 4비트의 정수 "constl"과 P2.1 필드(54)에 배치된 4비트의 정수"constl"가 결합되어, 8비트의 정수로서 제 1 연산 필드(59)의 연산 코드 "opl"에 대응하는 소스 오퍼랜드가 되는 것을 의미한다.
또한 수치를 동반하지 않는 정수 "const"는 본 프로세서가 구비하는 전용 32비트 레지스터(도 4에 도시되는 정수 레지스터(36))에 저장되는 정수를 도시한다. 예를 들면 포맷 코드가 "O"인 명령 포맷에 있어서의 P1.0 필드(52)에 배치된 4비트의 정수 "const"는 암묵적으로 지정된 정수 레지스터(36)에 저장되는 정수이다.
도 3은 도 2에서 이용되고 있는 3종류의 연산 코드 "cc", "op1" 및 "op2" 각각에 의해 지정되는 구체적인 연산을 설명하는 도면이다.
4비트의 연산 코드 "cc"는 16종류의 분기 연산 중의 하나를 지정한다. 하나의 분기 연산은 분기조건과 분기형식에 의해 특정된다. 분기조건에는 균등함("eq"), 균등하지 않음("neq"), 보다 큼("gt") 등이 있다. 분기형식에는 상기 정수 레지스터(36)의 저장값을 분기장소의 절대 어드레스로서 분기하는 형식(니모닉(mnemonic) 표시에서 "i"가 첨부되어 있지 않는 것)과 상대 어드레스로서 분기하는 형식(니모닉 표시에서 "i"가 첨부되어 있는 것)이 있다. 예를 들면 연산 코드 "eq"는 직전의 비교결과가 균등한 경우에 절대 어드레스 지정에 의한 분기를 행하는 연산을 의미하고, 연산 코드 "eqi"는 직전의 비교결과가 같은 경우에 상대 어드레스 지정에 의한 분기를 행하는 연산을 의미한다.
4비트의 연산 코드 "op1"은 "add"(가산), "sub"(감산), "mu1"(승산), "and"(논리곱), "or"(논리합) 등의 산술 논리연산에 속하는 연산의 하나를 지정하는 경우와, "mov"(워드(32비트) 데이터의 전송), "movh"(하프 워드 데이터의 전송), "movb"(바이트 데이터의 전송) 등의 레지스터와 레지스터간 전송에 속하는 연산의 하나를 지정하는 경우가 있다.
4비트의 연산 코드 "op2"는 상기 연산 코드 "op1"과 같은 산술 논리연산 및 레지스터와 레지스터간 전송에 덧붙여 "1d"(메모리로부터 레지스터로의 1워드 데이터의 로드), "st"(레지스터로부터 메모리로의 워드 데이터의 스토어) 등의 레지스터와 메모리간 전송에 속하는 연산의 하나를 지정하는 경우가 있다.
다음으로 도 2(a)에 도시된 각 필드(51, 52, 59, 60)의 특징을 설명하기로 한다.
P0.0 필드(51)는 이 명령(50)의 포맷을 특정하는 4비트의 포맷 코드를 배치하기 위한 필드이고, 구체적으로는 도 2의 (b)∼도 2의 (d)에 도시된 16종류의 명령 포맷의 하나를 특정한다.
P1.0 필드(52)는 정수 또는 분기용 연산 코드를 배치하기 위한 필드이다.
이 P1.0 필드(52)에 정수가 배치된 경우(포맷 코드 = 0, 1, 4∼9인 경우)에는, 그 정수는 정수 레지스터(36)에 저장하는 대상이 되는 경우(포맷 코드 = 0, 1, 4, 5인 경우)와, 제 1 연산 필드(59) 또는 제 2 연산 필드(60)의 오퍼랜드의 일부를 구성하는 경우(포맷 코드) = 5, 7, 8, 9, B인 경우)가 있다. 또 정수 레지스터(36)에 저장되는 대상이 되는 경우에는, 그 4비트의 정수만이 저장되는 경우(포맷 코드 = 0, 1인 경우)와, 제 1 연산 필드(59) 또는 제 2 연산 필드(60)에 배치된 12비트의 정수와 함께 저장되는 경우(포맷 코드 = 4, 5의 경우)가 있다.
한편 이 P1.0 필드(52)에 분기용 연산 코드 "cc"가 배치된 경우(포맷 코드 = 2, 3, A인 경우)에는, 정수 레지스터(36)에 저장된 정수를 분기장소의 절대 어드레스로서 또는 상대 어드레스(디스플레이스먼트)로서 분기하는 것을 의미한다.
제 1 연산 필드(59)는 본 프로세서와 외부(메모리)의 데이터의 전송을 수반하지 않는 연산(산술 논리연산, 레지스터간 전송)을 지정하기 위한 연산 코드와 오퍼랜드(소스 및 데스티네이션)의 조 또는 정수가 배치된다.
제 2 연산 필드(60)는 상기 제 1 연산 필드(59)의 경우에 덧붙여 본 프로세서와 외부(메모리)의 데이터의 전송을 수반하지 않는 연산(레지스터와 메모리간 전송)을 지정하기 위한 연산 코드와 오퍼랜드의 조가 배치되는 것도 있다.
또한 이상과 같은 연산의 종류의 각 필드에 대한 할당은 노이만형인 본 프로세서에 있어서는 2개 이상의 분기 연산을 동시에 실행할 필요가 없는 것, 본 프로세서와 외부(메모리)와의 오퍼랜드의 입출력 포트(도 4에 있어서의 오퍼랜드 액세스부(40))를 1개로 한정하고 있는 것 등에 기초한다.
여기에서 도 2의 (b)∼도 2의 (d)에 도시된 명령 포맷에는 이하의 특징이 있다.
첫 번째로 정수 "const"에 착안하여 판단하는 바와 같이 정수 레지스터(36)에 정수를 저장시키는 명령 포맷은 다음의 3가지이다.
(1) 포맷 코드가 "O" 또는 "1"인 경우:
이 명령으로는 P1.0 필드(52)에 배치된 4비트의 정수가 정수 레지스터(36)에 저장된다.
(2) 포맷 코드가 "4"인 경우:
이 명령으로는 P1.0 필드(52)∼P2.2 필드(55)에 배치된 16비트의 정수가 정수 레지스터(36)에 저장된다.
(3) 포맷 코드가 "5"인 경우:
이 명령으로는 P1.0 필드(52)와 P3.0 필드(56)∼P3.2 필드(58)에 배치된 16비트의 정수가 정수 레지스터(36)에 저장된다.
두 번째로 본 프로세서에서는 하나의 명령에 최대 3가지의 연산을 지정할 수 있지만, 그 경우에는 도 2의 (b)에 표시된 3연산용 명령 포맷으로부터 판단할 수 있는 바와 같이 그들 3가지의 연산의 종류는 다음 중 어느 하나의 조합이 된다.
(1) 4비트의 정수를 정수 레지스터(36)에 세트하는 연산과 2개의 범용 연산(포맷 코드가 "O", "1"인 경우)
(2) 정수 레지스터(36)에 세트된 값을 절대 어드레스 또는 상대 어드레스로서 분기하는 연산과 2개의 범용 연산(포맷 코드가 "2", "3"인 경우)
이와 같이 본 프로세서의 명령은 불과 32비트 길이이면서 최대 3개의 연산을 동시에 지정할 수 있는 코드 효율이 높은 필드 구성을 갖고 있다.
( 프로세서의 하드웨어 구성 )
다음으로 본 프로세서의 하드웨어 구성을 설명하기로 한다.
도 4는 본 발명에 관한 프로세서의 하드웨어 구성을 도시하는 블록도이다.
본 프로세서는 상술한 바와 같이 최대 3개의 연산을 병렬 실행하는 VLIW 프로세서이고, 크게 나누어 명령 레지스터(10), 해독부(20) 및 실행부(30)로 구성된다.
명령 레지스터(10)는 명령 페치부(39)로부터 송신된 1개의 명령을 보유하는 32비트의 레지스터이다.
해독부(20)는 명령 레지스터(10)에 보유된 명령을 해독하고, 그 해독결과에 따른 제어선을 실행부(30)에 출력하는 것으로, 크게 나누어 포맷 디코더(21)와 명령 디코더(22)로 이루어진다.
명령 디코더(22)는 또한 P1.0 필드(12)에 보유된 연산 코드 "cc"를 해독하여 그 결과에 따라 PC부(33)를 제어하는 분기 디코더(23)와, P2.0 필드(13)에 보유된 연산 코드를 해독하여 그 결과에 따라 제 1 연산부(37)를 제어하는 제 1 연산 디코더(24)와, P3.0 필드(16)에 보유된 연산 코드를 해독하여 그 결과에 따라 제 2 연산부(38) 및 오퍼랜드 액세스부(40)를 제어하는 제 2 연산 디코더(25)로 이루어진다.
포맷 디코더(21)는, P0.0 필드(11)에 보유된 4비트의 포맷 코드를 디코드함으로써 명령 레지스터(10)에 보유된 명령의 포맷이 도 2의 (b)∼도 2의 (d)에 도시된 16종류 중의 어느 하나를 특정하고, 그 결과에 따라 분기 디코더(23), 제 1 연산 디코더(24) 및 제 2 연산 디코더(25)에 의한 해독동작을 허가 또는 금지하거나, 실행부(30)의 정수 레지스터 제어부(32)를 동작시키기도 한다.
또한 상기 디코더(21, 23∼25)는 기본적으로는 한 사이클에 하나의 연산을 해독하고 실행부(30)에 제어신호를 준다. 또한 명령 레지스터(10)와 실행부(30)를 접속하는 26비트의 정수 신호선(26)은 명령 레지스터(10)에 배치된 정수나 오퍼랜드를 실행부(30)에 전송하기 위한 버스이다.
실행부(30)는 해독부(20)에서의 해독결과에 기초하여 최대 3개의 연산을 병렬 실행하는 회로 유니트이고, 실행 제어부(31), PC부(33), 레지스터군(34), 제 1 연산부(37), 제 2 연산부(38), 명령 페치부(39) 및 오퍼랜드 액세스부(40)로 이루어진다. 또 이 실행부(30)중 정수 레지스터 제어부(32), PC부(33) 및 정수 레지스터(36)에 있어서는 별도의 도면에서 추가로 상세한 구성을 도시하고 있다.
실행 제어부(31)는 해독부(20)에서의 실행결과에 기초하여 실행부(30)의 각 구성요소(33∼40)를 제어하는 제어회로나 배선의 총칭이고, 보통의 프로세서가 구비하는 구성요소(타이밍 제어, 동작허가 금지제어, 스테이터스 관리, 인터럽트 제어 등의 회로) 외에 본 프로세서에 특유의 정수 레지스터 제어부(32)를 갖는다. 정수 레지스터 제어부(32)는 포맷 디코더(21)로부터의 지시에 따라 명령 레지스터(10)에 보유된 4비트 또는 16비트의 정수(const)를 정수 레지스터(36)에 저장하는 제어를 행한다.
PC(Program Counter)부(33)는 분기 디코더(23)에 의한 제어하에서 다음에 해독 실행할 명령이 배치되어 있는 도시되지 않은 외부 메모리상의 어드레스를 명령 페치부(39)에 출력한다.
명령 페치부(39)는 32비트의 IA(명령 어드레스) 버스 및 32비트의 ID(명령 데이터)버스를 통하여, 도시되어 있지 않는 외부 메모리로부터 명령 블록을 페치하여 내부의 명령 캐쉬에 보유하는 것과 함께 PC부(33)로부터 출력된 어드레스에 상당하는 명령을 명령 레지스터(10)에 공급한다.
레지스터군(34)은 15개의 32비트 범용 레지스터(35)와 1개의 32비트 정수 레지스터(36)로 구성된다. 이들 16개의 레지스터(35, 36)에 저장된 값은 제 1 연산 디코더(24) 및 제 2 연산 디코더(25)에서의 해독결과에 따라 제 1 연산부(37) 및 제 2 연산부(38)에 전송되고, 여기에서 연산이 실시되거나 또는 여기를 단순히 통과한 후에 레지스터군(34)이나 오퍼랜드 액세스부(40)에 송신된다. 또 정수 레지스터(36)에 저장된 값은 제 1 연산부(37) 및 제 2 연산부(38)에서의 연산에 이용되는 것 외에 PC부(33)에도 전송되고, 여기에서 분기장소가 되는 유효 어드레스를 생성하기 위해 이용된다.
제 1 연산부(37)는 2개의 32비트 데이터에 대하여 산술논리연산을 행하는 ALU와 승산을 행하는 승산기를 내부에 갖고, 제 1 연산 디코더(24)에 의한 제어하에서 2종류의 연산(산술 논리연산과 레지스터간 전송)을 실행한다.
제 2 연산부(38)도 제 1 연산부(37)와 마찬가지로 2개의 32비트 데이터에 대하여 산술논리연산을 행하는 ALU와 승산을 행하는 승산기를 내부에 갖고, 제 2 연산 디코더(25)에 의한 제어하에서 2종류의 연산(산술 논리연산과 레지스터간 전송)을 실행한다.
오퍼랜드 액세스부(40)는 제 2 연산 디코더(25)에 의한 제어하에서 레지스터군(34)과 도시되어 있지 않는 외부 메모리 사이에서 오퍼랜드의 전송을 행하는 회로이고, 그 오퍼랜드나 오퍼랜드 어드레스를 유지하는 버퍼를 내부에 갖는다. 구체적으로는 예를 들면 명령 레지스터(10)의 P3.1 필드(16)에 연산 코드"1d"가 배치되어 있는 경우에는 외부 메모리에 배치된 1워드의 데이터가 오퍼랜드 액세스부(40)를 거쳐 레지스터군(34)중 어느 하나의 레지스터에 로드되고, 연산 코드 "st"가 배치된 경우에는 레지스터군(34)중 어느 하나의 레지스터의 저장값이 외부 메모리에 스토어(store)된다.
상기 PC부(33), 레지스터군(34), 제 1 연산부(37), 제 2 연산부(38) 및 오퍼랜드 액세스부(40)는, 도시된 바와 같이 내부 버스(L1 버스, R1 버스, L2 버스, R2버스, D1 버스, D2 버스)로 접속되어 있다. 또 L1 버스 및 R1 버스는 각각 제 1 연산부(37)의 2개의 입력포트에 접속되어 있고, L2 버스 및 R2 버스는 각각 제 2 연산부(38)의 2개의 입력포트에 접속되어 있으며, D1 버스 및 D2 버스는 각각 제 1 연산부(37) 및 제 2 연산부(38)의 출력포트에 접속되어 있다.
( 정수 레지스터(36) 및 그 주변회로의 상세한 구성 )
다음으로 정수 레지스터(36) 및 그 주변회로에 대하여 상세히 설명하기로 한다.
도 5는 정수 레지스터(36) 및 그 주변회로의 상세한 구성과 접속관계를 도시한 블록도이다. 또 도면 중의 고정값("0")(27)은 정수 "0"을 도시한 4개의 신호선의 고정적인 배선을 의미한다.
정수 레지스터 제어부(32)는 5개의 3입력 셀렉터(32a∼32e)와 3개의 4입력 셀렉터(32f∼32h)로 이루어지고, 정수 레지스터(36)는 8개의 4비트폭 레지스터(36a∼36h)로 이루어진다. 또 각 입출력 데이터는 병렬 4비트이다.
정수 레지스터 제어부(32)는 포맷 디코더(21) 및 명령 디코더(22)로부터의 제어신호에 따라 상기 8개의 입력 셀렉터(32a∼32h)를 제어함으로써 이하에 도시한 4가지의 저장방법중 어느 한 방법에 의해 명령 레지스터(10)에 보유된 정수 또는 제로(zero)를 정수 레지스터(36)에 저장시킨다.
도 6의 (a)∼도 6의 (d)는 그 4가지의 저장방법을 설명하는 도면이다.
도 6의 (a)는 포맷 디코더(21)에 의해 P0.0 필드(11)에 보유된 값이 "0" 또는 "1"로 해독된 경우의 저장방법을 도시한다. 이것은 P1.0 필드(12)에 배치된 4비트의 정수만을 정수 레지스터(36)에 저장하는 경우에 상당한다. 구체적으로는 정수 레지스터(36)에 보유된 데이터를 4비트 단위로 상위에 시프트시키는 동시에, 명령 레지스터(10)의 P1.0 필드(12)에 보유된 4비트의 정수를 정수 레지스터(36)의 최하위의 4비트 레지스터(36h)에 저장한다.
도 6의 (b)는 포맷 디코더(21)에 의해 P0.0 필드(11)에 보유된 값이 "4"로 해독된 경우의 저장방법을 도시한다. 이것은 P1.0 필드(12)∼P2.2 필드(15)에 배치된 16비트의 정수를 정수 레지스터(36)에 저장하는 경우에 상당한다. 구체적으로는 정수 레지스터(36)의 하위 16비트(36e∼36h)에 보유된 데이터를 상위 16비트(36a∼36d)에 시프트시키는 동시에, 명령 레지스터(10)의 P1.0 필드(12)∼P2.2 필드(15)에 보유된 16비트의 정수를 정수 레지스터(36)의 하위 16비트(36e∼36h)에 저장한다.
도 6의 (c)는 포맷 디코더(21)에 의해 P0.0 필드(11)에 보유된 값이 "5"로 해독된 경우의 저장방법을 도시한다. 이것은 P1.0 필드(12)와 P3.0 필드(16)∼P3.2 필드(18)에 배치된 16비트의 정수를 정수 레지스터(36)에 저장하는 경우에 상당한다. 구체적으로는 정수 레지스터(36)의 하위 16비트(36e∼36h)에 보유된 데이터를 상위 16비트(36a∼36d)에 시프트시키는 동시에, 명령 레지스터(10)의 P1.0 필드(12)와 P3.0 필드(16)∼P3.2 필드(18)에 보유된 16비트의 정수를 정수 레지스터(36)의 하위 16비트(36e∼36h)에 저장한다.
도 6의 (d)는 포맷 디코더(21)에 의해 P0.0 필드(11)에 보유된 값이 "2", "3" 및 "A"중 어느 하나로 해독된 경우, 또는 명령 디코더(22)에 의해 P2.1 필드(14), P2.2 필드(15), P3.2 필드(17) 및 P3.3 필드(18)의 적어도 하나에서 정수 레지스터(R15)가 지정되어 있다고 해독된 경우의 저장방법을 도시한다. 이것은 P1.0 필드(12)에 배치된 분기 연산, 제 1 연산 필드(59) 및 제 2 연산 필드(60)의 적어도 하나의 연산에 의해 정수 레지스터(36)의 저장값이 사용된(판독된) 후에 정수 레지스터(36)에 모두 제로를 저장할(정수 레지스터(36)를 클리어할) 경우에 상당한다. 구체적으로는 정수 레지스터(36)의 저장값이 PC부(33), 제 1 연산부(37) 및 제 2 연산부(38)중 어느 하나로 판독된 직후에 32비트의 정수 "0"을 정수 레지스터(36)에 저장한다.
또 정수 레지스터(36)의 사용후 클리어해 두는 것은 정수 레지스터(36)에는 항상 제로 확장된 값이 저장되어 있는 것을 보증하기 위해서이다. 여기에서 제로 확장은 어떤 수치의 유효자리수가 일정한 자리수에 차지 않는 경우 그 유효자리수보다 상위의 자리수 모두를 제로로 채우는 처리를 말한다.
이상과 같이 명령 레지스터(10)의 PO.0 필드(11)의 값이 "O", "1", "4", "5"인 경우에는 정수 레지스터(36)에 이미 저장된 정수를 시프트시키면서 새로운 정수가 정수 레지스터(36)에 저장된다. 또한 정수 레지스터(36)는 그 저장값이 일단 판독되고 사용되면 그 내용은 소거된다. 이렇게 하여 정수 레지스터(36)는 그 내용이 판독될 때까지 차례로 저장되는 정수를 축적해 갈 수 있다.
( PC부(33)의 상세한 구성 )
다음으로 PC부(33)의 상세한 구성을 설명하기로 한다.
도 7은 PC부(33)의 상세한 구성을 도시한 블록도이다.
PC부(33)는 정수 "4"를 도시하는 고정적인 배선인 고정값("4")(33a), 2입력 셀렉터(33b), 가산기(33c), 다음에 해독 실행할 명령의 어드레스를 유지하는 PC(33d) 및 4입력 셀렉터(33e)로 구성된다.
이 PC부(33)에서는 해독부(20)로부터의 제어신호에 따라 셀렉터(33b, 33e)가 동작함으로써 이하의 3가지의 값 중 어느 하나가 유효 어드레스로서 셀렉터(33e)에서 명령 페치부(39)에 출력된다.
(1) PC(33d)의 내용에 "4"를 가산한 값
이것은 분기하지 않고 차례로 실행하는 경우, 즉 해독 실행된 명령에 분기 연산이 지정되어 있지 않은 경우에 상당한다. 또 "4"를 가산하는 것은 하나의 명령의 길이가 4바이트(32비트)인 것에 의한다.
(2) PC(33d)의 내용에 정수 레지스터(36)의 내용을 가산한 값
이것은 정수 레지스터(36)의 내용을 상대 어드레스로서 분기하는 경우, 예를 들면 P1.0 필드(12)에 의해 상대 어드레스에 의한 분기가 지정되어 있다고 분기 디코더(23)가 해독한 경우에 해당한다.
(3) 정수 레지스터(36)의 내용
이것은 정수 레지스터(36)의 내용을 절대 어드레스로서 분기하는 경우, 예를 들면 P1.0 필드(12)에 의해 절대 어드레스에 의한 분기가 지정되어 있다고 분기 디코더(23)가 해독한 경우에 해당한다.
이상과 같이 이 PC부(33)는 전용 가산기(33c)를 구비하여, 정수 레지스터(36)에 보유된 값을 직접 이용하는 구성으로 되어 있으므로 제 1 연산부(37)나 제 2 연산부(38)에서의 연산과는 독립 병행하여 정수 레지스터(36)의 저장값을 절대 어드레스 또는 상대 어드레스로서 분기하는 실행제어를 행할 수 있다.
( 프로세서의 동작 )
다음으로 구체적인 명령을 해독 실행한 경우의 본 프로세서의 동작에 대하여 설명하기로 한다.
도 8은 32비트의 정수를 취급하는 처리의 일례를 도시하는 흐름도이다.
본 도면에는 레지스터(R0와 R1)의 저장값의 차를 구하고(단계 S80), 그 결과에 레지스터(R2)의 저장값을 곱하고(단계 S81), 또한 그 결과에 32비트의 정수"0x 87654321"(16진수의 "87654321")을 더하고(단계 S82, S83), 마지막으로 레지스터(R3)를 클리어해 두는(단계 S84) 처리가 나타나 있다.
도 9는 도 8에 표시된 처리내용을 본 프로세서에 행하게 하는 프로그램의 예를 도시한 도면이다. 이 프로그램은 3개의 명령(71∼73)으로 구성되어 있다. 1행이 1개의 명령에 상당하며, 각 명령의 내용은 각 필드에 배치된 니모닉으로 표현되어 있다. 또 정수는 모두 16진수로 표현되어 있다. 또한 "fmtn(n = 0∼F)"은 포맷 코드 "n"을 나타내며, "Rn(n = 0∼15)"은 레지스터군(34) 중의 하나의 레지스터를 나타낸다. 또 "R15"는 정수 레지스터(36)를 의미한다.
도 10은 도 9에 나타난 프로그램을 실행한 경우의 본 프로세서의 동작을 도시한 타이밍도이다. 본 도면에는 클록 사이클, 범용 레지스터(R0∼R3) 및 정수 레지스터(R15)의 내용, 4개의 버스(L1, Rl, L2, R2)를 흐르는 데이터가 나타나 있다.
상기 도 9 및 도 10을 이용하여 각 명령(71∼73)마다의 본 프로세서의 동작을 설명하기로 한다.
( 명령 71 )
명령 71이 명령 레지스터(10)에 로드되면 본 프로세서는 도 10의 클록 사이클(t0∼t1)에 나타난 동작을 한다. 포맷 디코더(21)는 명령 레지스터(10)의 P0.0 필드(11)의 값("fmt4")으로부터 이 명령은 포맷 코드가 "4"인 2연산 명령으로 판단하여, 이하의 2개의 연산이 병렬 실행되도록 실행부(30)를 제어한다.
(1) 제 1 연산
정수 레지스터제어부(32)는 내부의 8개의 셀렉터(32a∼32h)를 제어하는 것으로, 도 6의 (b)에 표시된 저장방법에 의해 P1.0 필드(12)∼P2.2 필드(15)에 보유된 16비트의 정수(0x8765)를 정수 레지스터(36)의 하위 16비트에 저장한다. 그 결과 도 10의 클록 사이클(t0∼t1)에 나타나는 바와 같이 정수 레지스터(R15)의 내용은 그때까지의 "0x00000000"으로부터 "0x00008765"로 변화한다.
(2) 제 2 연산
제 2 연산부(38)는 범용 레지스터(R0)의 내용("0x33333333")과 범용 레지스터(R1)의 내용("0x22222222")을 입력으로 하고, 여기에서 감산한 후에 그 결과를 다시 범용 레지스터(R0)에 저장한다. 그 결과 도 10의 클록 사이클(t0∼t1)에 나타난 바와 같이 범용 레지스터(R0)의 내용은 그때까지의 "0x33333333"으로부터 "0x11111111"로 변화한다.
( 명령 72 )
다음으로 명령 72가 명령 레지스터(10)에 로드되면 본 프로세서는 도 10의 클록 사이클(t1∼t2)에 나타난 동작을 한다. 포맷 디코더(21)는 상기 명령 71의 경우와 마찬가지로 명령 레지스터(10)의 P0.0 필드(11)의 값("fmt4")으로부터, 이 명령은 포맷 코드가 "4"인 2연산 명령으로 판단하여 이하의 2개의 연산이 병렬 실행되도록 실행부(30)를 제어한다.
(l) 제 1 연산
정수 레지스터 제어부(32)는 내부의 8개의 셀렉터(32a∼32h)를 제어하는 것으로, 도 6의 (b)에 표시된 저장방법에 의해 P1.0 필드(12)∼P2.2 필드(15)에 보유된 16비트의 정수(0x4321)를 정수 레지스터(36)의 하위 16비트에 저장한다. 그 결과 도 10의 클록 사이클(t1∼t2)에 나타난 바와 같이 정수 레지스터(R15)의 내용은 그때까지의 "0x00008765"로부터 "0x87654321"로 변화한다.
(2) 제 2 연산
제 2 연산부(38)는 범용 레지스터(R2)의 내용("0x00000004")와 범용 레지스터(R0)의 내용("0x11111111")을 입력으로 하고, 여기에서 승산한 후 그 결과를 다시 범용 레지스터(R0)에 저장한다. 그 결과 도 10의 클록 사이클(t1∼t2)에 나타난 바와 같이 범용 레지스터(R0)의 내용은 그때까지의 "0xl1111111"로부터 "0x44444444"로 변화한다.
( 명령 73 )
마지막으로 명령 73이 명령 레지스터(10)에 로드되면 본 프로세서는 도 10의 클록 사이클(t2∼t3)에 나타난 동작을 한다. 포맷 디코더(21)는 명령 레지스터(10)의 P0.0 필드(11)의 값("fmt7")으로부터, 이 명령은 포맷 코드가 "7"인 2연산 명령으로 판단하여 이하의 2개의 연산이 병렬 실행되도록 실행부(30)를 제어한다.
(1) 제 1 연산
제 1 연산부(37)는 정수 레지스터(R15)의 내용("0x87654321")값과 범용 레지스터(R0)의 내용("0x44444444")을 입력으로 하고, 그들을 가산한 후에 그 결과를 다시 범용 레지스터(R0)에 저장한다. 그 결과 도 10의 클록 사이클(t2∼t3)에 나타난 바와 같이 범용 레지스터(R0)의 내용은 그때까지의 "0x44444444"로부터 "0xCBA98765"로 변화하고 정수 레지스터(R15)의 내용은 클리어된다.
(2) 제 2 연산
제 2 연산부(38)는 P1.0 필드(12)와 P3.1 필드(17)로 분할하여 배치된 8비트의 정수("0x00")를 입력으로 하여 그대로 통과시켜 범용 레지스터(R3)에 저장한다. 그 결과 도 10의 클록 사이클(t2∼t3)에 나타난 바와 같이 범용 레지스터(R3)의 내용은 그때까지의 "0xFEDCBA98"로부터 "0x00000000"으로 변화한다.
이상과 같이 하여 본 프로세서에 있어서 32비트의 정수 "0x876521"은 2개의 명령(71, 72)에 걸쳐 분할 배치되어 차례로 정수 레지스터(36)에 시프트되면서 저장된 후 세 번째의 명령 73에 의해 이용된다. 이렇게 하여 도 8의 흐름도에 나타난 처리가 3개의 명령(71∼73)에 실행된다.
다음으로 16비트의 정수를 취급하는 별도의 프로그램을 이용하여 본 프로세서의 동작을 설명하기로 한다.
도 11은 16비트의 정수를 취급하는 프로그램의 예를 도시한 도면이다. 이 프로그램은 5개의 명령(74∼78)으로 구성되어 있다.
각 명령(74∼78)마다의 본 프로세서의 동작은 이하와 같다.
( 명령 74 )
명령 74가 명령 레지스터(10)에 로드되면, 포맷 디코더(21)는 명령 레지스터(10)의 PO.O 필드(11)의 값("fmtO")으로부터 이 명령은 포맷 코드가 "0"인 3연산 명령으로 판단하여 이하의 3가지의 연산이 병렬 실행되도록 실행부(30)를 제어한다.
(1) 제 1 연산
정수 레지스터 제어부(32)는 내부의 8개의 셀렉터(32a∼32h)를 제어함으로써, 도 6의 (a)에 나타난 저장방법에 의해 P1.0 필드(12)에 보유된 4비트의 정수("0x8")를 정수 레지스터(36)의 최하위의 4비트 레지스터(36h)에 저장한다.
(2) 제 2 연산
제 1 연산부(37)는 범용 레지스터(R6)의 값을 입력으로 하고 그대로 통과시켜 범용 레지스터(R1)에 저장한다.
(3) 제 3 연산
마찬가지로 제 2 연산부(38)는 범용 레지스터(R7)의 값을 입력으로 하고 그대로 통과시켜 범용 레지스터(R2)에 저장한다.
( 명령 75 )
마찬가지로 하여 명령 75가 명령 레지스터(10)에 로드되면, 포맷 디코더(21)는 이 명령은 포맷 코드가 "0"인 3연산 명령으로 판단하여 이하의 3개의 연산이 병렬 실행되도록 실행부(30)를 제어한다.
(1) 제 1 연산
정수 레지스터 제어부(32)는 내부의 8개의 셀렉터(32a∼32h)를 제어함으로써, 도 6의 (a)에 나타난 저장방법에 의해 P1.0 필드(12)에 보유된 4비트의 정수("0x")를 정수 레지스터(36)의 최하위 4비트 레지스터(36h)에 저장한다. 이 결과 정수 레지스터(36)의 하위 8비트에는 정수"0x87"이 세트된다.
(2) 제 2 연산
제 1 연산부(37)는 범용 레지스터(R0 와 R1)의 값을 입력으로 하고, 여기에서 가산한 후 그 결과를 다시 범용 레지스터(R1)에 저장한다.
(3) 제 3 연산
마찬가지로 제 2 연산부(38)는 범용 레지스터(R0와 R2)의 값을 입력으로 하고, 여기에서 가산한 후 그 결과를 다시 범용 레지스터(R2)에 저장한다.
( 명령 76, 명령 77 )
마찬가지로 하여 명령(76, 77)이 실행됨으로써 정수 레지스터(36)의 하위 16비트에는 정수 "0x8765"가 세트된다.
( 명령 78 )
명령 78이 명령 레지스터(10)에 로드되면 본 프로세서는 도 9에 나타난 명령 73의 경우와 같은 동작을 한다.
이상과 같이 하여 본 프로세서에 있어서는 16비트의 정수 "0x8765"는 4개의 명령(74∼77)에 걸쳐 분할 배치되어 차례로 정수 레지스터(36)에 시프트되면서 저장된 후 다섯 번째의 명령 78에 의해 이용되었다.
( 보통의 프로세서와의 비교 )
다음으로 상기 도 9 및 도 11에 나타난 프로그램과 동일 내용의 처리를 통상의 프로세서에 행하게 한 경우에 대하여 설명하고, 본 발명에 관한 프로세서와 비교하기로 한다. 또 여기에서 말하는 보통의 프로세서는 본 발명에 관한 프로세서의 정수 레지스터(36)나 정수 레지스터 제어부(32)와 같이 분할된 정수를 축적하여 저장하는 수단만을 갖지 않는 프로세서를 말하며, 32비트 고정길이의 명령을 실행하는 것으로 한다.
도 12의 (a)는 이 보통의 프로세서가 실행하는 명령의 필드 정의를 나타내며, 도 12의 (b)는 그 명령의 포맷을 나타낸다. 요컨대 통상의 프로세서는 3종류의 2연산 명령(101∼103)과 1종류의 1연산 명령(104)을 실행하는 것으로 한다.
도 13은 도 9에 나타난 프로그램과 동일내용의 처리, 즉 도 8의 흐름도에 나타난 처리를 통상의 프로세서에 행하게 하는 프로그램의 예이다.
도 13과 도 9를 비교하여 판단할 수 있는 바와 같이 보통의 프로세서용 프로그램은 본 발명에 관한 프로세서용보다 2개의 명령만이 많게 되어 있다.
또 명령(105, 106)에 nop 코드가 포함되는 것은 명령 106은 명령 105에서의 연산결과를 이용하므로 이들 명령을 병렬로 실행시킬 수 없기 때문이다. 또한 1개의 정수 "0x87654321"을 상위 16비트와 하위 16비트의 2개로 분할하여 정수 레지스터(Ri)에 세트하고 있는 것은(명령 107, 108), 32비트의 1개의 명령중에 세트 명령의 연산 코드와 32비트의 정수의 양쪽을 동시에 배치하는 것은 불가능하기 때문이다.
마찬가지로 도 14는 도 11에 나타난 프로그램의 동일내용의 처리를 통상의 프로세서에 행하게 하는 프로그램의 예이다.
도 14와 도 11을 비교하여 판단할 수 있는 바와 같이 보통의 프로세서용 프로그램은 본 발명에 관한 프로세서용보다 1개의 명령만이 많게 되어 있다.
이상과 같이 본 발명에 관한 프로세서가 실행하는 명령은 32비트라는 비교적 짧은 워드 길이이면서 최대 3개의 연산을 동시에 지정할 수 있는 코드 효율이 높은 필드 구성을 갖고 있다.
그리고 본 발명에 관한 프로세서에 의하면 16비트나 32비트의 정수가 복수의 명령에 걸쳐 분할 배치되어 있어도, 그들은 정수 레지스터(36)에 축적하여 저장됨으로써 원래의 정수로 복원되어, 분기나 산술연산 등의 연산에 사용된다. 요컨대 명령중에 생긴 작은 영역이라도 정수를 분할하여 채워 놓을 수 있으므로 통상의 프로세서에 실행시키는 경우보다 프로그램의 코드 사이즈는 축소된다.
( 변형예 )
도 15의 (a)∼도 15의 (d)는 본 발명의 변형예에 관한 VLIW 프로세서의 명령 포맷을 도시한다. 이들 도면중에서 세로선의 최소간격은 1비트 길이를 나타내고 "fmt"는 포맷 필드를 나타낸다.
도 15의 (a)에 나타난 명령은 5비트 길이의 포맷 필드, 7비트 길이의 연산 필드 및 2개의 10비트 길이의 연산 필드로 이루어진다. 도 15의 (b)에 나타난 명령은 2비트 길이의 포맷 필드, 4비트 길이의 연산 필드 및 2개의 13비트 길이의 연산 필드로 이루어진다. 도 15의 (c)에 나타난 명령은 3비트 길이의 포맷 필드, 3비트 길이의 연산 필드 및 2개의 13비트 길이의 연산 필드로 이루어진다. 도 15의 (d)에 나타난 명령은 4비트 길이의 포맷 필드, 2비트 길이의 연산 필드 및 2개의 13비트 길이의 연산 필드로 이루어진다.
이들 4종류의 명령은 이하의 점에 있어서 도 2의 (a)에 나타난 상기 실시예에서의 명령 50과 공통된다. 요컨대 (ⅰ) 32비트 고정길이이고, (ⅱ) 하나의 포맷 필드와 3개의 연산 필드를 포함하며, (ⅲ) 그들 3개의 연산 필드의 구성은 균일하지 않고, 즉 2개의 연산 필드는 동일한 필드구성이지만 다른 1개는 짧은 필드구성이다.
따라서 이들 4종류의 명령은 상기 실시예에서의 명령 50과 같이 이하의 특징을 갖는다. 요컨대 (ⅰ) 32비트라는 비교적 짧은 워드 길이이면서 최대 3개의 연산을 동시에 지정할 수 있는 필드구성을 갖고 있다. (ⅱ) 사이즈가 짧은 명령, 예를 들면 2개의 오퍼랜드조차도 필요로 하지 않은 분기 명령 등을 배치하기에 좋은 짧은 사이즈의 연산 필드를 갖고 있으므로, 명령의 코드 효율이 높다. (ⅲ) NOP 명령을 배치할 필요가 있는 연산 필드에 정수나 분할 정수를 배치시킨 것을 지시하기 위한 포맷 필드를 갖기 때문에, 동일내용의 프로그램이어도 코드 사이즈의 축소화가 지원된다.
한편 상기 4종류의 명령은 상기 실시예에서의 명령 50과 달리 이하의 특징을 갖는다. 요컨대 도 15의 (a)에 나타난 명령은 포맷 필드의 자리수가 보다 크므로 보다 많은 명령 포맷을 정의할 수 있은 점 및 3개의 연산 필드 각각에 적어도 1개의 오퍼랜드를 배치할 수 있는 점에서 우수하다. 또한 도 15의 (b)∼도 15의 (d)에 나타난 명령은 2개의 연산 코드("op2", "op3")의 자리수가 크므로 보다 많은 종류의 연산을 정의할 수 있는 점에서 우수하다.
도 16은 도 15의 (a)에 나타난 명령을 실행하는 본 발명의 변형예에 관한 VLIW 프로세서의 구성을 도시한 블록도이다. 상기 실시예에서의 도 4에 나타난 블록도와 비교하여 알 수 있는 바와 같이 기본적인 구성은 동일하다. 명령 레지스터(10, 110)와 명령 디코더(20, 120)의 접속관계가 다르다. 이와 같이 도 15의 (a)∼도 15의 (d)에 표시된 변형예에 관한 명령을 실행하는 VLIW 프로세서는 상기 실시예의 VLIW 프로세서의 일부를 변경함으로써 용이하게 실현할 수 있다.
이상 본 발명에 관한 프로세서에 대하여 실시예 및 변형예에 기초하여 설명하였지만, 본 발명은 이들 실시예 및 변형예에 한정되지 않은 것은 물론 이다. 즉,
(1) 상기 실시예 및 변형예로서는, 명령은 32비트 길이이고, 최대 3개의 연산을 지정할 수 있는 구조를 가졌지만, 본 발명은 이들 수치에 한정되는 것은 아니다.
예를 들면 도 2의 (a)에 표시된 명령 50에 1개의 4비트 길이의 연산 코드와 1개의 4비트 길이의 오퍼랜드의 조로 이루어지는 8비트 길이의 연산 필드를 더함으로써 합계 40비트 길이의 명령으로 할 수도 있다. 이것에 의해 40비트라는 비교적 짧은 워드 길이의 명령이면서 최대 4개의 연산을 동시에 실행시킬 수 있는 코드 효율이 높은 명령이 정의된다.
(2) 또한 상기 실시예의 명령 50에서는 암묵적인 오퍼랜드(정수 레지스터(36)의 저장값)를 이용하는 필드는 1개소(P1.0 필드(52))뿐이지만 이것에 한정되는 것이 아니라 2개소 이상이어도 된다. 새로운 명령 포맷을 정의하는 것으로 대응하면 된다.
(3) 또한 상기 실시예에서는 수치 정수를 취급하는 예가 표시되었지만 문자 정수이어도 되는 것은 말할 필요도 없다. 복수의 명령에 걸쳐 분할 배치된 문자 정수이어도 정수 레지스터(36)로의 복수회의 저장에 의해 자리수가 긴 원래의 문자 정수가 복원되기 때문이다.
(4) 또한 상기 실시예에서는 도 2의 (b)∼도 2의 (d)의 명령 포맷으로 알 수 있는 바와 같이 1개의 명령에 의해 정수 레지스터(36)에 저장시킬 수 있는 정수의 자리수는 4비트 및 16비트중 어느 하나이지만, 본 발명은 이 자리수에 한정되는 것이 아니다. 예를 들면 12비트나 28비트의 정수를 정수 레지스터(36)에 저장하기 위한 명령 포맷을 정의해도 된다. 그를 위해서는 정수 레지스터(36)의 주변회로의 접속관계를 변경하면 된다.
상술한 바와 같이 본 발명에 의하면 비교적 짧은 워드 길이이면서 많은 연산을 지정할 수 있을 뿐만 아니라, 비교적 긴 워드 길이의 정수를 취급하는 경우에 있어서도 코드 효율이 쉽게 저하되지 않는 구조를 갖는 명령을 실행하는 VLIW 프로세서를 구현할 수 있게 된다.
본 발명의 바람직한 실시예들은 예시의 목적을 위해 개시된 것이며, 당업자라면 첨부된 특허청구범위에 개시된 본 발명의 사상과 범위를 통해 각종 수정, 변경, 대체 및 부가가 가능할 것이다.
도 1의 (a) 및 (b)는 종래 기술에서의 명령 포맷을 도시하며, 각각 동시에 2개의 연산을 지정하는 명령 포맷, 1개의 연산만을 지정하는 명령 포맷을 도시한 도면.
도 2(a)는 본 발명에 관한 프로세서가 실행하는 명령의 필드 구성을 도시한 도면.
도 2의 (b)∼(d)는 16종류의 명령 포맷을 도시한 도면으로, (b)는 3연산, (c)는 2연산, (d)는 1연산을 동시에 지정할 수 있는 명령 포맷.
도 3은 도 2에서 이용되고 있는 3종류의 연산 코드 "cc", "op1" 및 "op2" 각각에 의해 지정되는 구체적인 연산을 설명하는 도면.
도 4는 본 발명에 관한 프로세서의 하드웨어 구성을 도시한 블록도.
도 5는 본 발명에 관한 프로세서의 정수 레지스터(36) 및 그 주변 회로의 상세한 구성을 도시한 블록도.
도 6의 (a)∼(d)는 도 5에 도시된 정수 레지스터 제어부(32)에 의한 정수의 저장방법을 도시한 도면으로, (a)는 포맷 코드가 "0" 또는 "1"인 경우, (b)는 포맷 디코드가 "4"인 경우, (c)는 포맷 디코드가 "5"인 경우, 도 6(d)는 포맷 코드가 "2", "3" 및 "A" 중 어느 하나인 경우 또는 정수 레지스터(36)의 저장값이 오퍼랜드로서 지정되어 있는 경우의 저장방법을 도시하는 도면.
도 7은 본 발명에 관한 프로세서의 PC부(33)의 상세한 구성을 도시한 블록도.
도 8은 32비트의 정수를 취급하는 처리의 일례를 도시한 흐름도.
도 9는 도 8에 도시된 처리를 본 발명에 관한 프로세서로 행하게 하는 프로그램의 예를 도시한 도면.
도 10은 도 9에 도시된 프로그램을 실행한 경우의 본 프로세서의 동작을 도시한 타이밍도.
도 11은 16비트의 정수를 취급하는 처리를 본 발명에 관한 프로세서로 행하게 하는 프로그램의 예를 도시한 도면.
도 12의 (a)는 보통의 프로세서가 실행하는 명령의 필드 정의를 도시한 도면.
도 12의 (b)는 보통의 명령 포맷을 도시한 도면.
도 13은 도 9에 도시된 프로그램과 동일 내용의 처리를 상기 보통의 프로세서로 행하게 하는 프로그램의 예를 도시한 도면.
도 14는 도 11에 도시된 프로그램과 동일 내용의 처리를 상기 보통의 프로세서로 행하게 하는 프로그램의 예를 도시한 도면.
도 15의 (a)∼(d)는 본 발명의 VLIW 프로세서에 관련된 명령구조의 변형예를 도시한 도면.
도 16은 도 15(a)에 나타난 명령을 실행하는 본 발명의 변형예에 관한 VLIW 프로세서의 구성을 도시한 블록도.

Claims (32)

  1. 2개 이상의 연산 필드를 갖는 명령을 해독하여 실행하는 초장 명령어(Very Long Instruction Word: VLIW) 프로세서로서,
    제 1의 상기 연산 필드에는 연산의 종류를 지정하는 1개의 연산 코드만이 배치되고, 제 2의 상기 연산 필드에는 1개의 연산 코드와 연산의 대상이 되는 데이터를 지정하는 1개 이상의 오퍼랜드(operand)의 조(組)가 배치되며,
    상기 제 1 연산 필드에 배치된 연산 코드를 해독하는 제 1 해독수단과,
    상기 제 1 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 연산을 실행하는 제 1 실행수단과,
    상기 제 2 연산 필드에 배치된 연산 코드를 해독하는 제 2 해독수단과,
    상기 제 2 해독수단에 의한 해독결과에 기초하여 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 2 실행수단을 포함하는 것을 특징으로 하는 VLIW 프로세서.
  2. 제 1항에 있어서,
    상기 제 1 연산 필드의 자리수는 상기 제 2 연산 필드의 자리수보다 작은 것을 특징으로 하는 VLIW 프로세서.
  3. 제 2항에 있어서,
    상기 제 1 연산 필드에 배치된 연산 코드의 자리수는 상기 제 2 연산 필드에 배치된 연산 코드의 자리수와 같은 것을 특징으로 하는 VLIW 프로세서.
  4. 제 3항에 있어서,
    상기 명령에 포함되는 연산 필드는 3개이고,
    제 3의 상기 연산 필드는 상기 제 2 연산 필드와 같은 자리수로서 1개의 연산 코드와 1개 이상의 오퍼랜드의 조가 배치되며,
    상기 VLIW 프로세서는,
    상기 제 3 연산 필드에 연산 코드가 배치된 경우에 상기 연산 코드를 해독하는 제 3 해독수단과,
    상기 제 3 해독수단에 의한 해독결과에 따라 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 3 실행수단을 추가로 구비하는 것을 특징으로 하는 VLIW 프로세서.
  5. 제 4항에 있어서,
    상기 제 1 실행수단은 실행할 명령이 포함되는 프로그램의 흐름을 제어하는 것을 특징으로 하는 VLIW 프로세서.
  6. 제 5항에 있어서,
    상기 제 2 실행수단은 상기 제 2 연산 필드에 배치된 오퍼랜드에 의해 지정된 데이터의 전송을 제어하고,
    상기 제 3 실행수단은 상기 제 3 연산 필드에 배치된 오퍼랜드에 의해 지정된 데이터의 산술 논리연산을 실행하는 것을 특징으로 하는 VLIW 프로세서.
  7. 2개 이상의 연산 필드를 갖는 명령을 해독하여 실행하는 VLIW 프로세서로서,
    제 1의 상기 연산 필드에는 연산의 종류를 지정하는 1개의 연산 코드만 또는 정수(定數)만 배치되고, 제 2의 상기 연산 필드에는 1개의 연산 코드와 연산의 대상이 되는 데이터를 지정하는 1개 이상의 오퍼랜드의 조 또는 정수만이 배치되며,
    상기 제 1 연산 필드에 연산 코드가 배치된 경우에 상기 연산 코드를 해독하는 제 1 해독수단과,
    상기 제 1 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 연산을 실행하는 제 1 실행수단과,
    상기 제 2 연산 필드에 연산 코드가 배치된 경우에 상기 연산 코드를 해독하는 제 2 해독수단과,
    상기 제 2 해독수단에 의한 해독결과에 따라 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 2 실행수단을 포함하는 것을 특징으로 하는 VLIW 프로세서.
  8. 제 7항에 있어서,
    상기 명령은, 상기 제 1 및 제 2 연산 필드 각각에 정수만이 배치되어 있는지의 여부를 지정하는 포맷 코드가 배치된 포맷 코드를 포함하며,
    상기 VLIW 프로세서는,
    상기 포맷 코드를 해독하는 포맷 해독수단과,
    상기 포맷 해독수단에 의해 상기 제 1 및 제 2의 적어도 하나의 연산 필드에 정수만이 배치되어 있다고 해독된 경우 그 정수를 페치하여 기억하는 정수 기억수단을 더 구비하는 것을 특징으로 하는 VLIW 프로세서.
  9. 제 8항에 있어서,
    상기 제 1 연산 필드의 자리수는 상기 제 2 연산 필드의 자리수보다 작은 것을 특징으로 하는 VLIW 프로세서.
  10. 제 9항에 있어서,
    상기 제 1 연산 필드에 배치된 연산 코드의 자리수는 상기 제 2 연산 필드에 배치된 연산 코드의 자리수와 같은 것을 특징으로 하는 VLIW 프로세서.
  11. 제 10항에 있어서,
    상기 명령에 포함되는 연산 필드는 3개이고,
    제 3의 상기 연산 필드는 상기 제 2 연산 필드와 같은 자리수로서 1개의 연산 코드와 1개 이상의 오퍼랜드의 조가 배치되고,
    상기 VLIW 프로세서는,
    상기 제 3 연산 필드에 연산 코드가 배치된 경우 상기 연산 코드를 해독하는 제 3 해독수단과,
    상기 제 3 해독수단에 의한 해독결과에 따라 상기 오퍼랜드에 의해 지정된 데이터에 대하여 상기 연산 코드에 의해 지정된 연산을 실행하는 제 3 실행수단을 더 구비하는 것을 특징으로 하는 VLIW 프로세서.
  12. 제 11항에 있어서,
    상기 제 1 실행수단은 실행할 명령이 포함되는 프로그램의 흐름을 제어하는 것을 특징으로 하는 VLIW 프로세서.
  13. 제 12항에 있어서,
    상기 제 2 실행수단은 상기 제 2 연산 필드에 배치된 오퍼랜드에 의해 지정된 데이터의 전송을 제어하고,
    상기 제 3 실행수단은 상기 제 3 연산 필드에 배치된 오퍼랜드에 의해 지정된 데이터의 산술논리연산을 실행하는 것을 특징으로 하는 VLIW 프로세서.
  14. 제 13항에 있어서,
    상기 포맷 필드의 자리수, 상기 제 1 연산 필드의 자리수, 상기 제 2 및 제 3 연산 필드에 배치된 연산 코드의 자리수, 상기 제 2 및 제 3 연산 필드에 배치된 각 오퍼랜드의 자리수는 모두 n비트인 것을 특징으로 하는 VLIW 프로세서.
  15. 제 14항에 있어서,
    상기 명령은 32비트 길이이고,
    상기 n은 4인 것을 특징으로 하는 VLIW 프로세서.
  16. 3개 이상의 연산 필드와 포맷 필드를 갖는 명령을 해독하여 실행하는 VLIW 프로세서로서,
    제 1의 상기 연산 필드에는 실행할 명령이 포함되는 프로그램의 흐름을 제어하는 연산 코드 또는 정수가 배치되며, 제 2의 상기 연산 필드에는 데이터 전송을 제어하는 연산 코드 또는 정수가 배치되고, 제 3의 상기 연산 필드에는 산술논리연산을 제어하는 연산 코드 또는 정수가 배치되며, 상기 포맷 필드에는 상기 제 1, 제 2 및 제 3 연산 필드 각각에 정수가 배치되어 있는지의 여부를 지정하는 포맷 코드가 배치되고,
    상기 제 1 연산 필드에 배치된 연산 코드를 해독하는 제 1 해독수단과,
    상기 제 1 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 실행할 명령의 흐름의 제어를 실행하는 제 1 실행수단과,
    상기 제 2 연산 필드에 배치된 연산 코드를 해독하는 제 2 해독수단과,
    상기 제 2 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 데이터 전송의 제어를 실행하는 제 2 실행수단과,
    상기 제 3 연산 필드에 배치된 연산 코드를 해독하는 제 3 해독수단과,
    상기 제 3 해독수단에 의한 해독결과에 따라 상기 연산 코드에 의해 지정된 산술논리연산을 실행하는 제 3 실행수단과,
    상기 포맷 코드를 해독하는 포맷 해독수단과,
    상기 포맷 해독수단에 의해 상기 제 1, 제 2 및 제 3의 적어도 하나의 연산 필드에 정수가 배치되어 있다고 해독된 경우 그 정수를 페치하고 기억하는 정수 기억수단을 포함하는 것을 특징으로 하는 VLIW 프로세서.
  17. 제 16항에 있어서,
    상기 명령이 32비트 길이인 것을 특징으로 하는 VLIW 프로세서.
  18. 포맷 코드를 포함하는 포맷 필드 및 적어도 하나의 연산 필드를 포함하는 명령을 해독 및 실행하는 초장 명령어(Very Long Instruction Word: VLIW) 프로세서로서,
    상기 포맷 필드 내의 포맷 코드를 해독하고, 상기 연산 필드 내의 연산의 종류를 지정하며, 상기 포맷 코드에 의해 지정된 연산의 종류에 의해 특정되는 방식으로 연산 필드를 해독하는 해독부와,
    상기 해독부에 의해 산출된 해독결과에 따라 상기 연산 필드에 의해 지정된 연산을 실행하는 실행부를 포함하는 것을 특징으로 하는 VLIW 프로세서.
  19. 제 18항에 있어서,
    상기 명령은 복수의 연산 필드를 포함하고, 상기 포맷 코드는 상기 각각의 연산 필드의 연산 종류를 추가로 지정하는 것을 특징으로 하는 VLIW 프로세서.
  20. 제 19항에 있어서,
    상기 각각의 연산 필드의 연산의 종류는 상기 명령내의 상기 연산 필드의 위치에 의해 추가로 특정되는 것을 특징으로 하는 VLIW 프로세서.
  21. 제 18항에 있어서,
    상기 해독부는 연산 필드 내에 포함된 연산 코드를 해독하고, 상기 실행부는 상기 해독된 연산 코드에 대응하는 연산을 실행하는 것을 특징으로 하는 VLIW 프로세서.
  22. 제 18항에 있어서,
    상기 해독부에 의해 상기 연산 필드 내의 연산의 종류가 정수를 기억하는 연산인 것으로 지정되는 경우, 상기 실행부는 상기 포맷 코드에 의해 지정된 연산 필드에 위치된 정수를 레지스터에 기억시키도록 제어를 실행하는 실행 제어수단을 포함하는 것을 특징으로 하는 VLIW 프로세서.
  23. 제 18항에 있어서,
    상기 해독부는 상기 연산 필드 내에 포함된 연산 코드를 해독하고, 상기 해독부에 의해 상기 연산 필드가 상기 연산 코드, 소스 레지스터 코드, 및 데스티네이션 레지스터 코드를 포함하는 것으로 추가로 지정되면, 상기 실행부는 상기 소스 레지스터 코드 및 상기 데스티네이션 레지스터 코드를 이용하는 상기 해독된 연산 코드에 대응하는 연산을 실행하는 것을 특징으로 하는 VLIW 프로세서.
  24. 제 18항에 있어서,
    상기 명령은 분기 필드를 추가로 포함하고,
    상기 해독부는 상기 분기 필드에 포함되는 분기 연산 코드를 해독하며,
    상기 해독부에 의해, 상기 연산 필드 내의 연산의 종류가 상기 분기 필드에 상기 분기 연산 코드가 포함됨을 나타내는 것으로 추가로 지정되면, 상기 실행부는 상기 해독된 분기 연산 코드에 대응하는 분기 연산을 실행하는 것을 특징으로 하는 VLIW 프로세서.
  25. 제 18항에 있어서,
    상기 포맷 코드는 상기 포맷 필드 외의 적어도 하나의 필드가 보유되어 있음을 추가로 지정하는 것을 특징으로 하는 VLIW 프로세서.
  26. VLIW 프로세서에 의해 해독 및 실행되는 VLIW 명령을 기록하는 기록매체로서,
    상기 VLIW 명령은,
    하나 이상의 연산 필드 각각에 대한 연산의 종류를 정의한 포맷 코드를 갖는 포맷 필드와;
    상기 포맷 코드에 의해 정의된 연산의 종류에 따라 상기 VLIW 프로세서에 의해 해독되는 값을 각각 갖는 하나 이상의 연산 필드를 포함하는 것을 특징으로 하는 기록매체.
  27. 제 26항에 있어서,
    상기 VLIW 명령은 복수의 연산 필드를 포함하며, 상기 포맷 코드는 상기 각각의 연산 필드의 연산의 종류를 추가로 지정하는 것을 특징으로 하는 기록매체.
  28. 제 27항에 있어서,
    상기 각각의 연산 필드의 연산의 종류는 상기 명령내의 상기 연산 필드의 위치에 의해 추가로 특정되는 것을 특징으로 하는 기록매체.
  29. VLIW 프로세서에 의해 해독 및 실행되는 VLIW 명령을 기록하는 기록매체로서,
    상기 VLIW 명령은 제 1 연산 필드 및 제 2 연산 필드를 포함하는 2개 이상의 연산 필드를 포함하며,
    상기 제 1 연산 필드는 한 종류의 연산을 특정하는 하나의 연산 코드만 갖고, 상기 제 2 연산 필드는 하나의 연산 코드, 및 각각이 하나의 연산에 사용되는 데이터를 특정하는 하나 이상의 오퍼랜드를 갖는 것을 특징으로 하는 기록매체.
  30. 제 29항에 있어서,
    상기 제 1 연산 필드의 비트수는 상기 제 2 연산 필드의 비트수 보다 작은 것을 특징으로 하는 기록매체.
  31. 제 30항에 있어서,
    상기 제 1 연산 필드 내의 상기 연산 코드의 비트수는 상기 제 2 연산 필드 내의 상기 연산 코드의 비트수와 같은 것을 특징으로 하는 기록매체.
  32. 포맷 코드를 포함하는 포맷 필드 및 적어도 하나의 연산 필드를 포함하는 명령을 해독 및 실행하는 초장 명령어(Very Long Instruction Word: VLIW)에서 이용하는 명령 해독/실행 방법에 있어서,
    상기 포맷 필드 내의 포맷 코드를 해독하고, 상기 연산 필드 내의 연산의 종류를 지정하며, 상기 포맷 코드에 의해 지정된 연산의 종류에 의해 특정되는 방식으로 연산 필드를 해독하는 해독단계; 및
    상기 해독단계에 의해 산출된 해독결과에 따라 상기 연산 필드에 의해 지정된 연산을 실행하는 실행단계를 포함하는 것을 특징으로 하는 명령 해독/실행 방법.
KR1019980022512A 1997-06-16 1998-06-16 코드효율이높은초장명령어를실행하는프로세서 KR100534967B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP15904897A JP3790607B2 (ja) 1997-06-16 1997-06-16 Vliwプロセッサ
JP9-159048 1997-06-16
JP???9-159048 1997-06-16

Publications (2)

Publication Number Publication Date
KR19990007023A KR19990007023A (ko) 1999-01-25
KR100534967B1 true KR100534967B1 (ko) 2006-03-23

Family

ID=15685098

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980022512A KR100534967B1 (ko) 1997-06-16 1998-06-16 코드효율이높은초장명령어를실행하는프로세서

Country Status (10)

Country Link
US (7) US6085306A (ko)
EP (4) EP2138932B1 (ko)
JP (1) JP3790607B2 (ko)
KR (1) KR100534967B1 (ko)
CN (2) CN100339824C (ko)
DE (1) DE69838966T2 (ko)
IL (1) IL124904A (ko)
MY (2) MY135426A (ko)
SG (3) SG91248A1 (ko)
TW (1) TW490636B (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
EP0953898A3 (en) * 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
JP2001034471A (ja) 1999-07-19 2001-02-09 Mitsubishi Electric Corp Vliw方式プロセッサ
NZ516680A (en) * 1999-08-30 2004-01-30 Ip Flex Inc Program product for specifying an input and/or output interface of a processing unit independently of the timing of execution of the processing unit
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US20030023830A1 (en) * 2001-07-25 2003-01-30 Hogenauer Eugene B. Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
AU2003282553A1 (en) * 2002-08-05 2004-02-25 Koninklijke Philips Electronics N.V. Processor and method for processing vliw instructions
EP1530755B1 (en) 2002-08-16 2019-11-06 Intel Corporation Apparatus, method, and compiler enabling processing of variable length isntructions in a very long instruction word processor
AU2003253159A1 (en) * 2002-09-24 2004-04-19 Koninklijke Philips Electronics N.V. Apparatus, method ,and compiler enabling processing of load immediate instructions in a very long instruction word processor
JP4283226B2 (ja) * 2002-10-11 2009-06-24 エヌエックスピー ビー ヴィ アドレス範囲に依存した命令並行処理を行うデータ処理装置
US8211338B2 (en) 2003-07-01 2012-07-03 Transitions Optical, Inc Photochromic compounds
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US7146491B2 (en) * 2004-10-26 2006-12-05 Arm Limited Apparatus and method for generating constant values
KR100636596B1 (ko) 2004-11-25 2006-10-23 한국전자통신연구원 고에너지 효율 병렬 처리 데이터 패스 구조
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US7849466B2 (en) * 2005-07-12 2010-12-07 Qualcomm Incorporated Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
JP4916151B2 (ja) * 2005-09-29 2012-04-11 ルネサスエレクトロニクス株式会社 並列演算装置
CN101467128B (zh) * 2006-06-15 2012-09-26 日本电气株式会社 处理器和指令控制方法
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US9280480B2 (en) 2008-01-11 2016-03-08 International Business Machines Corporation Extract target cache attribute facility and instruction therefor
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US20100004542A1 (en) 2008-07-03 2010-01-07 Texas Instruments Incorporated System and method for ultrasound color doppler imaging
US8418268B2 (en) * 2009-12-04 2013-04-16 Global Trademarks, Llc Garment having support
US9678754B2 (en) * 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
US8228109B2 (en) 2010-06-28 2012-07-24 Freescale Semiconductor, Inc. Transmission gate circuitry for high voltage terminal
US8804764B2 (en) 2010-12-21 2014-08-12 International Business Machines Corporation Data path for data extraction from streaming data
US20120198213A1 (en) * 2011-01-31 2012-08-02 International Business Machines Corporation Packet handler including plurality of parallel action machines
JP5813484B2 (ja) * 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9886277B2 (en) 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
CA2957729C (en) 2014-10-23 2019-02-26 Talon Technologies, Inc. Garment with multilayer internal abdominal support panels
CN106160717B (zh) 2015-04-03 2020-08-18 恩智浦美国有限公司 传输门电路
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930016896A (ko) * 1992-01-06 1993-08-30 가나이 쯔도무 병렬연산기능을 가지는 계산기
EP0689129A1 (en) * 1994-06-21 1995-12-27 STMicroelectronics Limited Processing of computer instructions with a reduced number of bits for operand specifiers

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5000000A (en) * 1988-08-31 1991-03-19 University Of Florida Ethanol production by Escherichia coli strains co-expressing Zymomonas PDC and ADH genes
US5615349A (en) 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
DE4040382C2 (de) * 1989-12-15 1999-03-11 Hitachi Ltd Integrierte Halbleiterschaltungsanordnung mit niederer Leistungsaufnahme und Verfahren zu ihrem Betrieb
JPH04143819A (ja) * 1989-12-15 1992-05-18 Hitachi Ltd 消費電力制御方法、半導体集積回路装置およびマイクロプロセツサ
EP0450658B1 (en) * 1990-04-06 2001-08-01 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
JP3186095B2 (ja) 1991-07-05 2001-07-11 日本電気株式会社 演算処理装置
JPH0527970A (ja) * 1991-07-18 1993-02-05 Seikosha Co Ltd 演算装置
JP2848727B2 (ja) 1991-11-18 1999-01-20 株式会社東芝 並列演算処理装置
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5371864A (en) * 1992-04-09 1994-12-06 International Business Machines Corporation Apparatus for concurrent multiple instruction decode in variable length instruction set computer
US5617549A (en) * 1992-10-06 1997-04-01 Hewlett-Packard Co System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
US6002880A (en) * 1992-12-29 1999-12-14 Philips Electronics North America Corporation VLIW processor with less instruction issue slots than functional units
US5485629A (en) * 1993-01-22 1996-01-16 Intel Corporation Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines
US5384722A (en) * 1993-03-10 1995-01-24 Intel Corporation Apparatus and method for determining the Manhattan distance between two points
JP2636136B2 (ja) 1993-04-27 1997-07-30 工業技術院長 演算処理装置及び演算処理方法
EP0950946B1 (en) 1993-11-05 2001-08-16 Intergraph Corporation Software scheduled superscaler computer architecture
JP3199205B2 (ja) * 1993-11-19 2001-08-13 株式会社日立製作所 並列演算装置
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
ZA9510127B (en) * 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
JP3547139B2 (ja) * 1995-03-17 2004-07-28 株式会社 日立製作所 プロセッサ
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5774726A (en) * 1995-04-24 1998-06-30 Sun Microsystems, Inc. System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5848288A (en) 1995-09-20 1998-12-08 Intel Corporation Method and apparatus for accommodating different issue width implementations of VLIW architectures
US5884323A (en) * 1995-10-13 1999-03-16 3Com Corporation Extendible method and apparatus for synchronizing files on two different computer systems
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
US5822606A (en) * 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5826054A (en) 1996-05-15 1998-10-20 Philips Electronics North America Corporation Compressed Instruction format for use in a VLIW processor
US5852741A (en) 1996-05-15 1998-12-22 Philips Electronics North America Corporation 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
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
JP3442225B2 (ja) 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
JPH10232779A (ja) 1997-01-24 1998-09-02 Texas Instr Inc <Ti> 命令並列処理方法及び装置
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
JP3578883B2 (ja) * 1997-01-31 2004-10-20 三菱電機株式会社 データ処理装置
US5881307A (en) * 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6219779B1 (en) * 1997-06-16 2001-04-17 Matsushita Electric Industrial Co., Ltd. Constant reconstructing processor which supports reductions in code size
US6256709B1 (en) * 1997-06-26 2001-07-03 Sun Microsystems, Inc. Method for storing data in two-way set associative odd and even banks of a cache memory
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
JP3414209B2 (ja) * 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
JP3892118B2 (ja) * 1997-07-31 2007-03-14 高砂香料工業株式会社 2,2’−ビス(ジアリールホスフィノ)−6,6’−ビス(トリフルオロメチル)−1,1’−ビフェニル、これを配位子とする遷移金属錯体および光学活性な3−ヒドロキシ酪酸エステル誘導体あるいはβ−ブチロラクトンの製造方法
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US5922065A (en) 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
US6173389B1 (en) * 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6446190B1 (en) * 1998-03-12 2002-09-03 Bops, Inc. Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP3541669B2 (ja) 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
US6275927B2 (en) * 1998-09-21 2001-08-14 Advanced Micro Devices. Compressing variable-length instruction prefix bytes
US6058306A (en) * 1998-11-02 2000-05-02 Hughes Electronics Corporation Compensation of dynamic doppler frequency of large range in satellite communication systems
US6314509B1 (en) * 1998-12-03 2001-11-06 Sun Microsystems, Inc. Efficient method for fetching instructions having a non-power of two size
JP3841967B2 (ja) * 1999-01-19 2006-11-08 株式会社ルネサステクノロジ マイクロプロセッサ
WO2000043580A1 (en) * 1999-01-25 2000-07-27 E.I. Du Pont De Nemours And Company Polysaccharide fibers
US6116806A (en) * 1999-02-17 2000-09-12 Chang; Chin Pao Connection tightness and swing angle adjustable pivot
US6405301B1 (en) * 1999-06-15 2002-06-11 U.S. Philips Corporation Parallel data processing
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor
JP4502532B2 (ja) * 2001-02-23 2010-07-14 株式会社ルネサステクノロジ データ処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930016896A (ko) * 1992-01-06 1993-08-30 가나이 쯔도무 병렬연산기능을 가지는 계산기
EP0689129A1 (en) * 1994-06-21 1995-12-27 STMicroelectronics Limited Processing of computer instructions with a reduced number of bits for operand specifiers

Also Published As

Publication number Publication date
EP1734440B1 (en) 2014-02-12
EP0886210B1 (en) 2008-01-09
IL124904A (en) 2002-07-25
EP2138932A1 (en) 2009-12-30
JPH117387A (ja) 1999-01-12
MY135426A (en) 2008-04-30
EP2138932B1 (en) 2012-02-29
US6834336B2 (en) 2004-12-21
US8250340B2 (en) 2012-08-21
EP1734440A3 (en) 2007-01-17
US6085306A (en) 2000-07-04
SG91248A1 (en) 2002-09-17
US6397319B1 (en) 2002-05-28
MY116751A (en) 2004-03-31
US20090193226A1 (en) 2009-07-30
JP3790607B2 (ja) 2006-06-28
EP1734440A2 (en) 2006-12-20
DE69838966D1 (de) 2008-02-21
KR19990007023A (ko) 1999-01-25
US8019971B2 (en) 2011-09-13
US20020129223A1 (en) 2002-09-12
TW490636B (en) 2002-06-11
US20100169614A1 (en) 2010-07-01
SG111062A1 (en) 2005-05-30
EP0886210A2 (en) 1998-12-23
US20020144084A1 (en) 2002-10-03
CN100339824C (zh) 2007-09-26
US7533243B2 (en) 2009-05-12
EP0886210A3 (en) 2001-09-05
EP2138933A1 (en) 2009-12-30
US20120272044A1 (en) 2012-10-25
CN1178145C (zh) 2004-12-01
IL124904A0 (en) 1999-01-26
SG111061A1 (en) 2005-05-30
DE69838966T2 (de) 2008-12-24
CN1523495A (zh) 2004-08-25
CN1208197A (zh) 1999-02-17

Similar Documents

Publication Publication Date Title
KR100534967B1 (ko) 코드효율이높은초장명령어를실행하는프로세서
USRE40498E1 (en) Variable address length compiler and processor improved in address management
EP1063586B1 (en) Apparatus and method for processing data with a plurality of flag groups
US6195740B1 (en) Constant reconstructing processor that execute an instruction using an operand divided between instructions
USRE32493E (en) Data processing unit with pipelined operands
KR100618247B1 (ko) 코드크기의축소화를지원하는정수복원형프로세서
CN111406286A (zh) 具有数据元素提升的查找表
US20230043776A1 (en) Look-up table read
JP3412462B2 (ja) プロセッサ
JP3670801B2 (ja) プロセッサ
JP2004005733A (ja) Vliwプロセッサ
JPH1185514A (ja) 情報処理装置

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: 20121119

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141117

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20161122

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 13

EXPY Expiration of term