KR100233897B1 - 2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서 - Google Patents

2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서 Download PDF

Info

Publication number
KR100233897B1
KR100233897B1 KR1019910012236A KR910012236A KR100233897B1 KR 100233897 B1 KR100233897 B1 KR 100233897B1 KR 1019910012236 A KR1019910012236 A KR 1019910012236A KR 910012236 A KR910012236 A KR 910012236A KR 100233897 B1 KR100233897 B1 KR 100233897B1
Authority
KR
South Korea
Prior art keywords
instruction
decoder
command
output
unit
Prior art date
Application number
KR1019910012236A
Other languages
English (en)
Other versions
KR920003153A (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 KR920003153A publication Critical patent/KR920003153A/ko
Application granted granted Critical
Publication of KR100233897B1 publication Critical patent/KR100233897B1/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/22Microcontrol or microprogram arrangements
    • 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
    • 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/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Abstract

내용 없음.

Description

2개의 명령을 병렬디코드할 수 있는 마이크로프로세서
제1도는 본 발명의 1실시예인 마이크로프로세서의 블럭도.
제2도는 본 실시예의 마이크로프로세서가 갖는 가변길이 명령세트의 6종류의 명령길이를 도시한 도면.
제3도는 본 실시예의 명령세트에서의 메모리상의 명령의 열의 1예를 도시한 도면.
제4a,b도는 제1도에 도시한 마이크로프로세서가 제3도의 명령열을 실행할 때의 신호선 i0-5의 값을 어떤 2개의 시점에 대해서 도시한 도면.
제5도는 제1도의 마이크로프로세서의 구성요소의 하나인 제어회로PCNT의 상세한 구성도.
제6a도는 제1도의 마이크로프로세서에서 제3도의 명령열을 실행했을 때, 명령디코드에 의해 생성되는 제어신호의 변화를 도시한 도면.
제6b도는 제1도의 마이크로프로세서에서 명령디코더가 1개밖에 없는 구성을 취한 경우의 제어신호의 변화를 도시한 도면.
본 발명은 가변길이 명령세트를 처리할 수 있음과 동시에 여러 명령의 병렬디코드를 실행하는 마이크로프로세서에 관한 것이다.
가변길이 명령세트를 처리할 수 있는 종래의 마이크로프로세서에서 명령의 병렬디코드는 실행되고 있지 않다.
본 발명에 관한 공지된 예로서는 1989년 9월 11일에 발간된 닛케이 일렉트로닉스 북스 "신세대 마이크로프로세서 RISC, CISC, TRON"의 195페이지 내지 206페이지의 문헌" 캐시와 분기예측기구의 내장등으로 파이프라인의 혼란을 억제해서 성능을 올린 32비트 마이크로프로세서 v80"에 기재된 명령디코드방식을 들 수가 있다.
상기 공지된 마이크로프로세서에서는 병렬로 여러개의 명령을 디코드하지 않지만, 2단계로 나누어서 명령을 디코드하는 것으로 디코드능력의 스루풋을 향상시키고 있다. 이 공지된 마이크로프로세서의 1단째의 디코드회로는 프리디코드유닛이라 불리우고, 가변길이명령을 고정길이의 요소로 분해하는 기능을 갖고 있다. 이와같이 고정길이의 요소로 분해된 명령은 우선 프리디코드유닛내의 삐삐(레지스터)에 저장되고, 명령디코드유닛의 요구에 따라 프리디코드유닛에서 명령디코드유닛으로의 고정길이의 요소로 분해된 명령의 전송이 실행된다.
한편, 일본국특허공개공보 소화 63-244233호에는 여러개의 단위명령을 병행하게 디코드하는 것에 의해 가변길이 기계어의 디코드시간을 단축하기 위해 외부에서 2바이트씩 기계어 명령을 배치하여, 1바이트째의 단위명령과 2바이트째의 단위명령을 제 1 의 디코더와 제 2 의 디코더에서 각각 디코드하고, 제 1 의 셀렉터는 제 1 의 디코더에서 출력되는 여러개의 디코드결과에서 1개의 디코드결과를 선택하고, 제 1 의 셀렉터에서 출력되는 디코드정보에 따라 제 2 의 셀렉터는 제 2 의 디코더에서 출력되는 여러개의 디코드결과에서 1개의 디코드결과를 선택하고, 제 2 의 셀렉터에서 출력되는 디코드정보에 따라 제 1 의 셀렉터의 선택동작을 결정하도록 구성된 마이크로프로세서가 개시되어 있다. 이러한 구성의 마이크로프로세서에 의하면 2바이트의 기계어명령을 1기계사이클에서 디코드할 수 있어 가변길이명령의 디코드시간을 단축할 수가 있다.
그러나 본 발명자들의 검토에 의하면 상기 문헌에 개시된 종래 기술에서는 마이크로프로세서의 처리를 더욱 고속화하는 경우에 2개의 문제가 발생한다는 것이 분명하게 되었다.
그 첫째문제는 명령디코드가 파이프 라인중 2개의 스테이지를 사용하므로 그 만큼 분기처리가 지연되는 것이다.
즉, 분기처리가 기동되고 나서 분기행선지 명령의 개시, 프리디코드와 처리가 진행되는 경우 디코드처리에 1단밖에 요하지 않는 마이크로프로세서에 비해서 스테이지 1단분만을 분기에 요하는 시간이 증가한다.
둘째문제는 여러개의 명령을 병렬실행하는 마이크로프로세서에서 상기 종래기술과 같은 2단계로 나누어서 명령을 디코드하는 디코드방식을 취한 경우 프리디코드유닛이 마이크로프로세서 전체의 성능을 규제하는 것이다. 그것은 처리해야할 명령은 가변길이의 상태이므로 프리디코드유닛이 선행하는 명령의 프리디코드를 실행하지 않으면 후속의 명령의 프리디코드를 실행할 수 없기 때문이다. 즉, 프리디코드유닛이 한번에 1개의 명령밖에 프리디코드할 수 없기 때문이다.
이 둘째문제에 대해서는 3개의 해결방법이 있는것도 본 발명자들의 검토에 의해 분명하게 되었다.
첫째 해결책은 여러개의 명령을 프리디코드하는 여러개의 프리디코드회로를 직렬로 접속하는 것이다. 즉, 후속의 프리디코드회로는 선행하는 프리디코드회로의 출력을 참조하게 한다. 그리고나서 이들 여러개의 프리디코드회로를 1사이클내에 동작할 수 있게 설계하면, 이 문제는 해결할 수 있다. 단, 이 경우에는 직렬로 접속한 프리디코드회로의 지연시간이 문제로 된다.
둘째의 해결책은 프리디코드부의 성능을 1사이클에 1명령을 프리디코드할 수 있게한 다음에 프리디코더와 명령디코더의 처리성능차를 이 양자간의 버퍼에서 흡수하는 방법이다. 단, 이 방법에서는 최대 스루풋이 1병렬/사이클로 되므로, 모처럼 다른 스테이지에서는 여러개의 명령을 실행할 수 있게 했는데도 성능이 그다지 향상되지 않는다.
셋째의 해결책은 본 발명과 같이 선행하는 명령의 포맷에 어떠한 가정을 놓고, 후속 명령을 디코드하는 것이다.
한편, 본 발명자들의 검토에 의하면 상기 특허공개공보에 개시된 종래기술에서는 단위명령의 모든 패턴을 디코드하기 위해서는 제 1 과 제 2 의 명령디코더중에서 많은 명령디코드를 병렬로 실행할 필요가 있음과 동시에 많은 디코드결과에서 1개의 디코드결과를 셀렉터에 의해 선택할 필요가 있으므로 명령디코더 및 셀렉터의 하드웨어량이 대단히 명백한 것으로 된다는 결점이 분명하게 되었다.
본 발명의 목적은 상기 셋째의 해결책을 구체적으로 실현하기 위해 이루어진 것으로서, 가변길이 명령세트를 처리할 때 여러개의 명령을 고속으로 또한 병렬로 디코드할 수 있는 마이크로프로세서를 제공하는 것이다.
본 발명의 다른 목적은 하드웨어량을 최소한도로 제한하면서 여러개의 명령을 고속으로 또한 병렬로 디코드할 수 있는 마이크로프로세서를 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명에서는 명령의 명령길이를 가정해서 디코드를 실행한다.
그리고 명령의 디코드에 의해 가정이 옳다고 판단했을 때에는 후속명령의 디코드결과도 옳다고 판단하고, 반대로 가정이 틀렸다고 판단했을 때에는 후속명령의 디코드결과는 틀렸다고 판단하여 그 디코드결과를 무효화한다.
또, 가정하는 명령길이를 명령세트 중의 최단의 명령포맷의 길이로 하는 것이 바람직하다. 왜냐하면 가변길이 명령세트에 있어서 최단의 명령포맷은 사용빈도가 높은 명령에 대응하고, 그러므로 가정이 성립될 확률이 높기 때문이다.
또, 여러개의 명령을 병렬로 디코드하기 위해 명령프리페치유닛은 적어도 최단의 명령포맷의 2배길이의 명령코드를 명령디코드유닛에 전송한다.
명령디코드유닛에서는 그 명령코드를 최단의 명령포맷의 길이마다 각각의 명령디코더에 입력한다. 각 명령디코더는 적어도 최단의 명령포맷을 갖는 명령을 디코드하는 능력을 가지며, 또한 적어도 1개의 명령디코더는 명령세트의 모든 명령을 디코드하는 능력을 갖는다. 각각의 명령디코더의 출력은 각각 다른 출력페치에 유지될 수도 있다.
본 출원에서 개시되는 발명중 대표적인 실시예에 의한 마이크로프로세서의 개요는 다음과 같다.
즉, (1) 소정의 비트폭(16비트)의 명령길이의 제 1 및 제 2 의 명령을 마이크로프로세서의 외부에서 페치하고, 적어도 상기 소정의 비트폭의 2배의 비트폭(32비트)을 갖는 출력선에 상기 제 1 및 제 2 의 명령을 병행하게 출력하는 페치유닛(IU), (2) 그 입력에 상기 페치유닛(IU)의 상기 출력선의 상기 제 1 의 명령이 공급되는 제 1 의 명령디코더(ID1), (3) 그 입력에 상기 페치유닛(IU)의 상기 출력선의 상기 제 2 의 명령이 공급되는 제 2 의 명령디코더(ID1), (4) 상기 제 1 의 명령디코더의 디코드 결과(id0_out)와 상기 제 2 의 명령디코더의 디코드 결과(id1_out)가 공급되는 제어부(PCNT) 및 (5) 상기 제어부(PCNT)에서의 출력에 응답하는 명령실행부(EU)를 구비하고, 상기 소정의 비트폭의 2배의 비트폭을 적어도 갖는 출력선에서 상기 소정의 명령길이의 상기 제 1 의 명령이 출력되는 조건에서는 상기 제어부(PCNT)는 제 1 의 명령디코더(ID0)의 디코드 결과(id0_out)중의 이 조건성립의 정보에 응답해서 상기 제 2 의 명령디코더(ID1)의 디코드 결과(id1_out)를 유효로 하고, 그 결과 상기 명령실행부(EU)는 상기 제어부의 출력에 전달되는 상기 제 1 과 제 2 의 명령디코더의 디코드결과(id0_out, id1_out)에 응답해서 상기 제 1 의 명령과 상기 제 2 의 명령을 병렬로 실행하고, 한편 상기 페치유닛(IU)의 상기 출력선에서 상기 소정의 비트폭과 다른 명령길이의 명령이 출력되는 다른 조건에서 상기 제어부(PCNT)는 제 1 디코더(ID0)의 디코드 결과(id0_out)중의 이 다른 조건성립의 정보에 응답해서 상기 제 2 의 디코더(ID1)의 디코드결과(id1_out)를 무효화하고, 그 결과 상기 명령실행부(EU)는 상기 제어부(PCNT)의 출력에 전달되는 상기 제 1 의 명령디코더(ID0)의 상기 디코드결과(id0_out)에 응답해서 상기 제 1 의 명령을 실행하는 것을 특징으로 한다.
각 명령디코더가 처리한 명령코드가 각 명령디코더에서 디코드 가능한 명령(즉, 최단의 명령포맷을 갖는 명령)인가 아닌가의 판정을 실행한다. 판정의 결과, 그렇지 않는 명령포맷을 갖는 명령의 디코드를 실행한 명령디코더가 있었던 경우 그 명령에 후속하는 명령코드의 디코드결과를 모두 무효화한다. 무효화는 제어회로를 사용해서 용이하게 실현할 수 있다. 반대로 판정의 결과, 모든 명령디코더가 최단의 명령포맷을 갖는 명령을 디코드할 경우에는 전 디코드결과가 유효하다. 이때 명령디코드의 스루풋은 최대이고, 명령디코더수와 같은 수의 명령이 1사이클에서 처리된다.
이렇게 하는 것으로 가정이 옳았던 경우에 한정되기는 하지만, 명령디코드의 최대 스루풋은 2명령/사이클 이상으로 할 수 있어 상기 둘째의 문제점이 해결된다. 또, 명령길이를 가정하므로 프리디코드회로에 의해 가변길이명령을 고정길이 요소로 분해할 필요가 없게 되어 상기 셋째의 문제가 해결된다.
또, 본 발명에 의하면 제 2 의 명령디코더는 명령의 명령선두코드에만 관해서 의미있는 디코드(즉, 1종류의 디코드)를 실행하고, 그 이외의 다른 조건(즉, 비선두코드의 경우)에서는 제 2 의 명령디코더의 의미없는 디코드결과는 무효화되므로 제 2 의 명령디코더의 하드웨어량을 최소한도로 제한하면서 여러개의 명령을 고속으로 또한 병렬로 디코드할 수 있다.
본 발명의 명령디코드방식은 종래부터 공지된 프리디코드방식과는 달리 명령을 잘못된 가정하에 디코드하는 경우가 있다.
이 경우에는 상기한 바와같이 그 디코드결과를 무효로 하게 되고, 그 경우의 스루풋은 1명령/사이클로 되고 만다. 이와같이 본 방식에서는 프리디코드방식에 비해서 명령포맷으로의 처리성능의 의존도가 높게 된다. 이점에 관해서는 가능한한 상기 가정이 성립하는 포맷을 갖는 명령을 프로그램중에서 사용하는 것으로 대처할 수 있다.
본 발명의 그밖의 목적과 특징은 다음의 실시예의 설명에서 명확하게 될 것이다.
이하 본 발명의 구성에 대해서는 실시예와 함께 설명한다.
제1도는 본 발명을 적용한 마이크로프로세서의 블럭도이다. 본 발명은 여러개의 명령의 병렬디코드를 가능하게 한다. 여기서는 그 중에서 가장 간단한 2명령을 병렬로 디코드하는 마이크로프로세서의 내부구조와 그 동작을 설명한다.
[마이크로프로세서의 내부구조]
먼저 제1도에 따라 마이크로프로세서의 내부구조를 설명한다. 제1도의 마이크로프로세서는 기본적으로 인터페이스유닛 IOU, 명령프리페치유닛 IU, 명령디코드유닛 DU, 연산유닛 EU로 구성된다. 이들 유닛은 병렬동작이 가능하며, 명령디코드유닛 DU의 제어하에 파이프 라인처리를 실행한다.
[인터페이스 유닛 IOU]
마이크로프로세서는 인터페이스 유닛 IOU를 통해서 외부의 디바이스(예를들면, 메인 메모리)와 접속되어 있다. 이 인터페이스 유닛 IOU는 명령과 데이타 양쪽에 대해서 마이크로프로세서와 메인메모리 사이의 전송을 실행한다.
즉, 메인메모리로부터 리드된 명령은 64비트폭의 신호선을 거쳐서 인터페이스 유닛 IOU에서 명령프리페치유닛 IU로 전송된다.
이것에 대해서 32비트의 신호선 2조를 통해서 연산유닛 EU에 의해 연산된 데이타는 연산유닛 EU에서 인터페이스유닛 IOU로 전송되고, 또는 메인메모리로부터 리드된 데이타는 인터페이스유닛 IOU에서 명령디코드유닛 DU로 전송된다.
[명령프리페치유닛 IU]
명령프리페치유닛 IU는 프리페치큐 PFQ를 갖는다. 인터페이스유닛 IOU에서 전송된 명령은 한번 프리페치큐 PFQ에 페치되고, 16비트 단위로 래치되고, 16비트 단위로 얼라인먼트되고 나서 명령디코드유닛 DU에 출력된다. 프리페치큐 PFQ는 FIFO(First-In First Out)의 큐이다.
6조의 16비트 신호선 10에서 15를 거쳐서 얼라인먼트 후의 명령이 명령프리페치유닛 IU에서 명령디코드유닛 DU로 전송된다. 여기서 신호선 10은 다음의 기계사이클에서 디코드해야할 명령의 선두코드이고, 신호 11에서 15는 신호선 10의 명령에 계속되는 명령의 열이다. 신호선 10은 제 1 의 명령디코더 ID0에 입력된다. 마찬가지로 신호선 11은 제 2 의 명령디코더 ID1에 입력된다. 제 2 의 명령디코더 ID1의 입력이 신호선 11로 오로지 결정되어 있고, 신호선 11 내지 15중에서 선택하도록 되어있지 않는것이 본 발명의 실시예의 특징이다. 또, 제 1 의 명령디코더 ID0은 본 마이크로프로세서에서 처리할 수 있는 모든 명령을 디코드할 수 있는 기능을 갖고 있다. 이것에 대해서 제 2 의 명령디코더 ID1은 본 마이크로프로세서가 실행 가능한 명령중 16비트 또는 32비트 길이의 명령포맷을 갖는 명령만을 디코드가 가능하다. 제 1 의 명령디코더 ID0과 제 2 의 명령디코더 ID1의 명령의 디코드결과는 각각 신호선 id0_out와 id1_out에 출력되어 파이프라인제어부 PCNT로 보내진다.
[이프라인제어부 PCNT]
파이프라인제어부 PCNT는 신호선 id0_out와 id1_out 및 각 유닛 IOU, IU, EU의 상태를 나타내는 신호(도시하지 않음)를 기본으로 각 유닛 IOU, IU, EU를 위한 제어신호를 생성한다.
[확장부 생성회로 EG]
또, 명령디코드유닛 DU에는 확장부생성회로 EG가 있고, 확장부 생성회로 EG는 명령중의 이미디어트 데이타 또는 디스플레이스먼트 데이타를 32비트로 확장해서 출력한다. 명령중의 이미디어트 데이타나 디스플레이스먼트 데이타의 위치와 그 길이는 명령의 연산코드에서 지정되어 있고, 연산코드를 디코드하는 것으로 알려진다. 확장부생성회로 EG에서는 그 지정에 따라서 데이타를 가공하여 버스 d0 또는 d2에 출력한다. 확장부생성회로 EG의 32비트 출력선이 2조 있는 것은 제 1 의 명령디코더 ID0과 제 2 의 명령디코더 ID1 각각의 제어하에 독립으로 데이타의 전송을 실행하기 위함이다.
[연산유닛 EU]
연산유닛 EU내의 정수는 이 연산기 ALU에 대해서도 마찬가지로 제 1 의 명령디코더 ID0과 제 2 의 명령디코더 ID1 각각에 대응해서 2조가 있다.
[레지스터 파일 RF]
명령디코드유닛 DU내의 레지스터파일 RF는 레지스터 R0에서 R15까지의 16개의 32비트 레지스터로 구성되어 있고, 각 레지스터는 4개의 리드포트와 2개의 라이트포트인 계 6포트를 갖는다. 그 포트중 절반(2개의 리드포트와 1개의 라이트포트)이 제 1 의 명령디코더 ID0쪽에 대응하고 있고, 제 1 의 논리 연산기 ALU0에 접속되어 있다. 나머지 절반의 포트도 마찬가지로 제 2 의 명령디코더 ID1쪽에 대응하고 있고, 제 2 의 논리연산기 ALU1에 접속되어 있다.
[32비트폭의 신호선]
명령디코드유닛 DU와 연산유닛 EU는 6조의 32비트폭의 신호선 d0, d1, d2, d3, e0, e1으로 접속된다. 그 중 4조(d0, d1, d2, d3)는 명령디코드유닛 DU에서 연산유닛 EU로의, 한편 나머지 2조(e0, e1)는 연산유닛 EU에서 명령디코드유닛 DU로의 데이타전송에 사용된다.
예를들면, 레지스터 R0과 레지스터 R1의 값을 가산해서 레지스터 R1에 세트하는 명령을 제 1 의 논리연산기 ALU0이 처리하는 경우, 우선 레지스터파일 RF에서 레지스터 R0과 R1의 값이 리드되고, 각각 32비트 신호선 d0과 d1에 출력된다. 파이프라인에서의 명령디코드유닛 DU의 다음의 실행스페이지, 즉 연산유닛 EU에서 제 1 의 논리연산기 ALU0은 신호선 d0과 d1에서 값을 입력해서 이들의 가산을 실행한다. 그리고 가산결과가 신호선 e0에 출력된다. 또, 다음의 처리인 레지스터 저장의 스테이지에서는 재차 명령디코드유닛 DU내의 처리로 되돌아가고, 신호선 e0 상의 값이 레지스터파일 RF내의 레지스터 R1에 세트된다. 이상은 제 1 의 명령디코더 ID0, 폭을 사용한 동작이다. 제 2 의 명령디코더 ID1 폭을 사용한 경우 각각 신호선 d2, d3, e1 그리고 제 2 의 논리연산기 ALU1이 사용된다. 즉, 레지스터 R0과 R1의 값은 신호선 d2와 d3에 각각 출력되고, 제 2 의 논리연산기 ALU1에서 가산이 실행된후 신호선 e1을 사용해서 가산결과가 레지스터 R1에 전송된다.
마이크로프로세서와 메모리 사이에서 데이타의 전송을 실행하는 경우 신호선 e0, e1과 IOU 사이의 2조의 32비트폭의 신호선이 사용된다. 이 부분의 동작은 본 발명과 그다지 관계가 없으므로 설명은 생략한다.
본 발명의 효과는 여러개의 명령의 병렬디코드가 가능하게 되는 것이다. 본 실시예에서는 가변길이 명령의 명령세트를 갖는 마이크로프로세서를 예로 설명한다. 여기서, 우선 가변길이명령이라 함은 어떠한 것인가를 간단히 설명한다.
[가변길이명령]
가변길이명령이라 함은 한마디로 말하자면 여러개의 명령포맷을 갖고, 다른 명령포맷을 취했을 때에 길이가 변화하는 명령을 말한다. 즉, 길이가 다른 명령을 1개라도 갖는 명령세트는 가변길이의 명령을 갖는다고 말할 수 있다.
[고정길이명령]
이것에 대해서 모든 명령의 길이가 일정한 경우는 고정길이의 명령세트 라고 일반적으로 부르고 있다.
[본 실시예의 명령세트]
본 실시예에서는 제2도에 도시한 바와같이 16비트를 단위로 해서 16비트에서 96비트까지의 6종류의 길이를 갖는 명령세트를 가정한다. 이들의 명령은 메모리상에서 16비트길이로 놓여진다. 즉, 명령의 각 16비트 단위는 모두 우수바이트어드레스로 놓여진다. 이 상태를 도시한 것이 제3도이다.
이어서 본 실시예에서의 명령의 병렬디코드의 동작을 설명한다.
제3도는 메모리상에서의 명령의 임의 하나의 예를 도시한 것이다. 각 명령은, 예를들면 inst0, inst1이라는 상태로 나타냈다. 16비트를 넘는 길이를 갖는 명령에는 하이픈과 숫자를 부가해서 inst2_0, inst2_1이라는 상태로 나타냈다. 즉, 16비트를 넘는 길이를 갖는 명령은 여러개로 분할된다. 또, 각 명령에서 디코드처리를 실행하지 않으면 안되는 코드는 이 명령의 선두코드에 제안된다고 가정한다. 즉, 명령의 선두 이외의 코드는 이미디어트데이타 또는 디스플레이스먼트 데이타이라고 한다. 예를 들면, inst2의 경우 최초의 코드 inst2_0은 디코드가 필요하지만, 후속의 코드 inst2_1은 디코드가 불필요하다.
이상의 전제하에 명령프리페치유닛 IU에서 명령디코드유닛 DU로의 전송패스인 16비트신호선 10-5의 이전 2개의 시점에서의 상태를 제4도(a), (b)에 도시한다. 제4도(a)는 제3도의 명령열이 이미 명령프리패치유닛 IU의 프리페치큐 PFQ로 패치되고, 최초의 명령 inst0이 디코드되고자 하고 있는 상태를 도시하고 있다. 다음의 기계사이클의 전반에서는 최초의 명령 inst0의 디코드가 제 1 의 명령디코더 ID0에서 실행되고, 후속의 명령 inst1의 디코드가 제 2 의 디코더 ID1에서 실행된다. 이 디코드의 결과, 2개의 명령 inst0, inst1이 함께 최단의 길이를 갖는 명령포맷인 것이 판명되어, 명령디코드유닛 DU에서 명령프리페치유닛 IU로 32비트만 명령의 포인터를 진행시키도록 지시를 내보낸다. 그 결과, 또 반기계사이클후의 명령프리페치유닛 IU와 명령디코드유닛 DU 사이의 신호선 10-5의 상태는 2개의 명령 inst0, inst1이 제거되고, 그 대신 명령 inst5, inst6이 추가되어서 제4도(b)와 같이 된다. 이때에는 명령코드 inst_2의 디코드가 제 1 의 디코더 ID0에서 실행되고, 명령코드 inst2_1의 제 2 의 디코드가 ID1에서 실행된다. 제 1 의 디코더 ID0에서의 명령코드 inst2_0의 디코드의 결과, 명령 inst2는 최단의 길이를 갖는 명령포맷이 아닌 것을 알 수 있다.
제 1 의 명령디코더 ID0에 최단명령이 입력된 경우에는 제 2 의 명령디코더 ID1에는 다음의 명령의 선두연산코드가 입력된다. 제 2 의 명령디코더 ID1은 이와같은 다음의 명령의 선두연산코드의 입력을 가정해서 명령디코드를 실행하고 있다. 그 때문에 제 1 의 명령디코더 ID0에서 디코드한 명령이 비최단명령이었던 경우 제 2 의 명령디코더 ID1에서 실행된 명령디코드는 잘못되어 있다고 판단되고, 그 에러의 판단결과는 제 1 의 명령디코더 ID0의 출력 id0_out에 반영되어 있고, 이 판단결과에 응답해서 무효화처리가 파인트라인제어부 PCNT에서 실행된다. 제1도에 도시한 바와같이 제 1 과 제 2 의 명령디코더 ID0, ID1에서 파이프라인제어부 PCNT 또는 디코드결과, 즉 id0_out과 id1_out의 출력이 보내진다. 출력 id0_out에는 제 1 디코더 ID0에서 디코드한 명령이 최단의 길이의 명령포맷인가 아닌가를 나타내는 정보가 포함되어 있다. 또, 출력 id0_out에는 제 2 의 디코더 ID1이 디코드할 수 없는 명령이 입력된 것을 나타내는 정보를 포함하고 있어도 좋다. 단, 본 실시예의 경우에는 출력 id1_out에 그와같은 정보는 포함되어 있지 않는 것으로 한다.
제 1 의 명령디코더 ID0에 입력된 명령의 길이가 최단, 즉 16비트가 아니라는 출력 id0_out에 포함된 정보에 의해서는 제 2 의 명령디코더 ID1의 디코드결과를 무효화하지 않으면 안된다. 그 무효화처리는 상술한 바와같이 파이프라인제어부 PCNT에서 실행된다.
[파이프 라인제어부 PCNT 의 상세한 블럭도]
제5도에 파이프라인제어부 PCNT의 상세한 블럭도를 도시한다.
파이프라인제어부 PCNT는 파이프라인의 스테이지제어부 pipe_CNTL과 셀렉터SEL, 노오퍼레이션 지시부NOP로 구성되어 있고, id0_out, id1_out 및 각 유닛(IU, DU, EU, IOU)의 상태를 기본으로 마이크로프로세서 전체의 파이프라인동작을 제어한다. 이 파이프라인처리에서의 각 처리스테이지의 제어는 제5도의 파이프 제어부PCNT내의 파이프라인스테이지제어부pipe_CNTL에서 실행된다. 또, 제 2 의 명령디코더ID1의 출력정보의 무효화처리는 이 파이프라인스테이지제어부pipe_CNTL의 바로 앞에서 실행된다.
즉, 제 2 의 명령디코더ID1의 출력id1_out의 무효화는 다음과 같이 실행된다. 먼저 제 2 의 명령디코더ID1의 출력id1_out는 셀렉터 SEL의 한쪽의 입력에 공급된다. 셀렉터SEL의 다른쪽의 입력의 한쪽은 특히 한정되지 않지만, 본 실시예에서는 고정값NOP가 공급된다. 이 고정값NOP는 id1_out와 모두 동일한 필드를 갖고, 소위 "no operation"이라 하는 불실행지시명령을 지시한다. NOP는 "no operation"을 지시하는 명령으로서 일반적으로 사용되는 nop명령의 디코드정보와 동일해도 좋고, 달리해도 좋다. 필요한 것은 NOP가 "no operation"을 지시하는 것으로서 예를 들면 취급하는 데이타의 크기지정 등은 어떠한 값이라도 상관없다. 셀렉터SEL에서의 NOP와 id1_out의 선택은 제 1 의 명령디코더ID0의 디코드결과인 id0_out에 포함되는 제 1 의 명령디코더ID0에서 디코드한 명령의 전체의 길이가 16비트인가 아닌가라는 정보id1_vaild에 의해 실행된다. 명령길이가 16비트였던 경우에는 id1_out가 선택된다. 반대로 명령길이가 16비트를 넘고 있던 경우에는 NOP가 선택된다. 이와 같이 해서 파이프라인제어신호pcnt0, pcnt1이 얻어진다.
재차 제3도의 명령열의 실행을 가정한다. 이 때의 파이프라인제어신호pcnt0, pcnt1의 변화를 제6도 (a)에 도시한다. 제6도 (a)는 제3도와는 달리 종축이 시간으로 되어 있는 것에 주의하기 바란다. 예를 들면 제4도 (a)에서 제4도 (b)의 상태로 이행할 때에는 명령inst0, inst1의 디코드가 실행된다. 이것이 제6도 (a), (b)에서는 제일 위의 라인으로 표시되어 있다. 그리고, 다음의 기계사이클에서는 inst2_0 및 inst2_1이 디코드되고, pcnt0, pcnt1에는 inst2_0의 디크드결과와 NOP가 출력된다. 이하 마찬가지로 해서 inst0에서 inst6까지는 4기계사이클에서 디코드처리가 실행된다.
이것과 마찬가지의 처리를 제 1 의 명령디코더 ID0만을 사용해서 실행한 종래의 처리인 경우의 PCNT0의 변화를 제6도(b)에 도시한다. 이 종래의 경우 inst0에서 inst6까지의 명령의 디코드처리에는 제6도(b)에 도시한 바와같이 7기계사이클을 요한다.
이와같이 본 실시예에서는 명령디코드성능은 피크시에 2배, 최악의 경우라도 단일의 명령디코드를 사용한 경우와 같은 성능이 얻어진다.
다음에 상기 명령 inst0, inst1, inst2_0, inst2_1의 처리를 보다 구체적인 예를 사용해서 설명한다. 예를들면, 명령 inst0이 레지스터 R0과 레지스터 R1의 값을 가산해서 레지스터 R1에 그 결과를 세트하는 고정길이명령, 명령 inst1이 레지스터 R2와 레지스터 R3의 값을 가산해서 레지스터 R3에 그 결과를 세트하는 고정길이명령으로 하고, 또 명령 inst2는 레지스터 R4의 값에 디스플레이스먼트 데이타를 가산해서 어드레스로 하고, 그 어드레스의 데이타를 메인메모리에서 페치해서 레지스터 R5에 세트하는 가변길이 명령이라고 한다. 여기서 명령 inst2_0은 연산코드이고, inst2_1은 디스플레이스먼트이다.
먼저 명령 inst0과 inst1의 처리에 대해서 설명한다.
2개의 명령 inst0과 inst1은 제4도 (a)와 같이해서 프리페치큐 PFQ에서의 96비트의 신호선에 출력된다. 그리고 제 1 의 명령디코더 ID0에서는 inst0이 디코드되고, 제 2 의 명령디코더 ID1에서는 inst1이 디코드된다.
이 경우 inst0의 디코드결과, 명령 inst0이 최단명령인 것이 판명되고, 그 판정결과는 디코드결과의 id0_put 중의 신호 id1_valid를 어서트하는 것으로 나타낸다. id0_out와 id1_out는 상술한 파이프라인제어부 PCNT를 통해서 제어신호 pcnt0, pcnt1로서 출력된다. 그리고 이들의 제어신호의 지시에 의해 다음의 동작이 실행된다.
먼저 제어신호 pcnt0의 지시에 의해 레지스터 R0의 값이 신호선 d0에, 레지스터 R1의 값이 신호선 d1에 각각 출력된다. 또, 동시에 제어신호 pcnt1의 지시에 의해 레지스터 R2의 값이 신호선 d2에, 레지스터 R3 값이 신호선 d3에 출력된다. 이어서 논리연산기 ALU0에서는 신호선 d0과 d1의 값을 가산해서 신호선 e0에 출력하고, 논리연산기 ALU1에서는 신호선 d2와 d3의 값을 가산해서 신호선 e1에 출력한다. 또, 그것에 이어지는 레지스터저장의 스테이지에서는 신호선 e0의 값이 레지스터 R1에 세트되고, 센호선 e1의 값이 레지스터 R3에 세트된다.
다음에 명령 inst2의 처리동작을 설명한다.
명령 inst2는 제4도 (a)와 같이해서 프리페치큐 PFQ에서의 96비트의 신호선에 출력된다. 그리고 제 1 의 명령디코더 ID0에서는 inst_2이 디코드되고, 제 2 의 명령디코더 ID1에서는 inst2_1이 다음의 명령의 선두 코드이라고 가정해서 디코드된다.
이 경우에는 inst2_0의 디코드의 결과, 명령 inst2가 비최단명령인 것이 판명되고, 그 판정결과는 디코드결과의 id0_out 중의 신호 id1_vaild를 니게이트하는 것으로 나타낸다. id0_out는 상술한 파이프 라인제어부 PCNT를 통해서 제어신호 pcnt0으로서 출력된다. 동시에 id1_vaild가 니게이트되어 있으므로 파이프 라인제어부 PCNT내의 셀렉터 SEL에서 no operation 지시인 NOP가 선택되어 pcnt1로서 출력된다. 그리고 이들 제어신호의 지시에 의해 다음의 동작이 실행된다.
현재 제어신호 pcnt0의 지시에 의해 레지스터 R4의 값이 신호선 d0에 출력되어, 또 16비트의 디스프레이스먼트 inst2_1이 확장부생성부 EG에서 32비트로 확장되어 신호선 d1에 출력된다.
또, 제어신호 pcnt1의 지시는 NOP이므로, 신호선 d2와 신호선 d3에는 특히 출력이 지시되지 않는다. 이어서 정수는 논리연산기 ALU0에서는 신호선 d0과 d1의 값을 가산(어드레스 계산)해서 신호선 e0에 출력한다. 논리연산기 ALU1에 대한 지시는 역시 NOP이고, 신호선 e1로의 출력은 특히 지시되지 않는다.
또, 그것에 이어지는 스테이지에서는 제어신호 pcnt0의 지시에 의해 신호선 e0의 값을 어드레스로한 메인메모리의 액세스에 의해 오퍼랜드의 페치가 실행되고, 또 페치데이타가 레지스터 R5에 세트된다. 제어신호 pcnt1 중에서의 인터페이스 유닛 IOU와 명령디코드유닛 DU(레지스터저장)로의 지시는 NOP이므로, 메인메모리액세스나 신호선 e1에서 레지스터로의 값의 전송, 설정은 실행하지 않는다.
본 실시예에 의하면 마이크로프로세서 전체의 처리스루풋이 향상하고, CPI(1명령당 실행에 요하는 기계사이클수)를 1이하로 할 수 있다.
또, 여러개의 명령디코더중 모든 명령포맷을 디코드할 수 있는 명령디코더는 단지 1개로 좋다. 나머지 명령디코더는최단의 명령포맷을 디코드하는 기능만 있으면 좋으므로 적은 하드웨어로 여러개의 명령디코드를 실현할 수 있다. 이것은, 또 마이크로프로세서의 테스트, 진단시의 처리량과 그 시간을 삭감하게 된다.
또, 여러개의 명령디코더에 입력하는 명령코드는 최단의 명령포맷의 길이로 한결같이 분할되어 각각의 명령디코더에 입력된다. 즉, 모든 명령디코더의 입력의 선택이 용이하다. 이것은 하드웨어량의 억제와 함께 고속성의 실현에 도움이 된다.
또, 본 발명의 실시예는 고정길이 명령세트를 갖는 마이크로프로세서에도 적용할 수 있다. 즉, 여러개의 명령디코더 중 대다수를 빈도가 높은 명령만을 디코드 가능하게 해주는 것에 의해 적은 하드웨어이며, 또한 고속의 여러개의 명령을 병렬로 처리하는 명령디코더가 실현된다.
또한, 고정길이 명령세트나 가변길이 명령세트에 관계없이 각 명령디코더가 디코드 가능한 명령을 그 명령디코더가 제어하는 회로에 대응해서 정할 수가 있다. 예를 들면, 논리연산기를 제어하는 명령디코더는 논리연산명령만 디코드 가능하고, 그밖의 명령은 디코드할 수 없었던 것을 나타내는 결과를 출력한다. 이와같이 하면 명령디코더에서 피제어회로로의 신호선수가 적게 된다는 효과가 발생한다.
본 발명에 의해 가변길이명령세트에서 여러개의 고정길이명령의 병렬디코드가 가능하게 된다. 따라서 종래의 방법과 비교해서 명령디코드성능의 최대스루풋이 향상된다.

Claims (3)

  1. 소정 비트폭의 명령길이의 제1 및 제2의 명령을 마이크로프로세서의 외부에서 페치하고, 적어도 상기 소정 비트폭의 2배의 비트폭을 갖는 출력선으로 상기 제1 및 제2의 명령을 병행해서 출력하는 페치유닛, 그의 입력에 상기 페치유닛의 상기 출력선의 상기 제1의 명령이 공급되는 제1의 명령디코더, 그의 입력에 상기 페치유닛의 상기 출력선의 상기 제2의 명령이 공급되는 제2의 명령디코더, 상기 제1의 명령디코더와 상기 제2의 명령디코더의 제어하에서 데이타의 전송을 실행하는 확장부 생성수단, 상기 제1의 명령디코더의 제1의 디코드결과와 상기 제2의 명령디코더의 제2의 디코드결과가 공급되는 제어부 및 상기 제어부로부터의 출력에 응답하는 명령실행부를 구비해서 이루어지고, 상기 제어부는 셀렉터를 포함하고, 상기 셀렉터의 한쪽의 입력에는 상기 제2의 명령디코더의 제2의 디코드결과와 불실행지시명령이 각각 공급되고, 상기 제2의 디코드결과와 불실행지시명령중 어느 1개를 선택해서 출력하기 위해 상기 셀렉터의 제어입력에는 제1의 명령의 소정명령길이를 나타내는 정보가 공급되고, 상기 정보가 상기 소정 명령길이가 소정 비트길이인 것을 나타내고 있는 유효조건에서는 상기 셀렉터는 상기 제2의 디코드결과를 선택하고, 상기 제어부는 상기 제1의 명령디코더의 제1의 디코드결과와 상기 제2의 명령디코더의 제2의 디코드결과를 상기 제어부의 출력으로 전달하고, 그 결과 상기 명령실행부는 상기 제어부의 출력으로 전달되는 상기 제1 및 제2의 명령디코더의 상기 디코드결과에 응답해서 상기 제1의 명령과 상기 제2의 명령을 병렬로 실행하고, 상기 정보가 상기 소정 명령길이가 소정 비트길이와 다른 것을 나타내고 있는 무효조건에서는 상기 셀렉터는 상기 불실행지시명령을 선택하고, 상기 제2의 명령디코더의 제2의 명령디코드결과를 무효로 하기 위해 상기 제어부는 상기 제1의 명령디코더의 제1의 디코드결과와 상기 불실행지시명령을 상기 제어부의 출력으로 전달하는 마이크로프로세서.
  2. 제1항에 있어서, 상기 제어부가 상기 제2의 디코더의 제2의 디코드결과를 무효화할 때에 이 무효화된 상기 제2의 디코더의 제2의 디코드결과의 비트위치에 대응한 상기 패치유닛의 상기 출력선의 비트정보에 응답해서 상기 명령실행부는 오퍼랜드의 어드레스를 결정하는 마이크로프로세서.
  3. 상기 소정 비트폭이 최단명령길이인 마이크로프로세서.
KR1019910012236A 1990-07-20 1991-07-18 2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서 KR100233897B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP90-190661 1990-07-20
JP2190661A JP2834289B2 (ja) 1990-07-20 1990-07-20 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
KR920003153A KR920003153A (ko) 1992-02-29
KR100233897B1 true KR100233897B1 (ko) 1999-12-15

Family

ID=16261802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019910012236A KR100233897B1 (ko) 1990-07-20 1991-07-18 2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서

Country Status (5)

Country Link
US (1) US5408625A (ko)
EP (1) EP0467152B1 (ko)
JP (1) JP2834289B2 (ko)
KR (1) KR100233897B1 (ko)
DE (1) DE69133134D1 (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0651984A (ja) * 1992-06-05 1994-02-25 Hitachi Ltd マイクロプロセッサ
US5859994A (en) * 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
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
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
US5825921A (en) * 1993-03-19 1998-10-20 Intel Corporation Memory transfer apparatus and method useful within a pattern recognition system
US5819057A (en) * 1995-01-25 1998-10-06 Advanced Micro Devices, Inc. Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5809273A (en) * 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
AU7168496A (en) * 1995-10-06 1997-04-28 Advanced Micro Devices Inc. Instruction predecode and multiple instruction decode
US5864704A (en) * 1995-10-10 1999-01-26 Chromatic Research, Inc. Multimedia processor using variable length instructions with opcode specification of source operand as result of prior instruction
US5768553A (en) * 1995-10-30 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to define DSP instructions
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
EP0896700A1 (en) * 1996-05-01 1999-02-17 Advanced Micro Devices, Inc. Superscalar microprocessor including a high performance instruction alignment unit
JPH1011289A (ja) * 1996-06-19 1998-01-16 Mitsubishi Electric Corp 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ
WO1998002798A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A superscalar microprocesser including a high speed instruction alignment unit
WO1998020421A1 (en) * 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6324639B1 (en) 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
EP0992893B1 (en) * 1998-10-06 2008-12-31 Texas Instruments Inc. Verifying instruction parallelism
US6742110B2 (en) 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
US6178496B1 (en) 1999-02-17 2001-01-23 Motorola, Inc. System for converting instructions, and method therefore
US6820189B1 (en) * 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US7366352B2 (en) * 2003-03-20 2008-04-29 International Business Machines Corporation Method and apparatus for performing fast closest match in pattern recognition
US7227994B2 (en) * 2003-03-20 2007-06-05 International Business Machines Corporation Method and apparatus for imbedded pattern recognition using dual alternating pointers
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US7587579B2 (en) * 2004-12-28 2009-09-08 Ceva D.S.P. Ltd. Processor core interface for providing external hardware modules with access to registers of the core and methods thereof
CN100543669C (zh) * 2005-04-22 2009-09-23 Mips技术公司 用于对指令进行再编码的方法与装置
US9304773B2 (en) * 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
US9710277B2 (en) * 2010-09-24 2017-07-18 Intel Corporation Processor power management based on class and content of instructions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL149925C (ko) * 1968-10-25 1976-06-15
USRE32493E (en) * 1980-05-19 1987-09-01 Hitachi, Ltd. Data processing unit with pipelined operands
JPS6224326A (ja) * 1985-07-24 1987-02-02 Hitachi Ltd デ−タ処理装置
JPH0760383B2 (ja) * 1987-03-31 1995-06-28 株式会社東芝 プロセツサ
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
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
US5148528A (en) * 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length

Also Published As

Publication number Publication date
JP2834289B2 (ja) 1998-12-09
EP0467152A2 (en) 1992-01-22
KR920003153A (ko) 1992-02-29
JPH0477925A (ja) 1992-03-12
DE69133134D1 (de) 2002-11-21
EP0467152A3 (en) 1993-05-05
US5408625A (en) 1995-04-18
EP0467152B1 (en) 2002-10-16

Similar Documents

Publication Publication Date Title
KR100233897B1 (ko) 2개의 명령을 병렬 디코드 할수 있는 마이크로프로세서
US6041403A (en) Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
US5293592A (en) Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
US5235686A (en) Computer system having mixed macrocode and microcode
EP0427245B1 (en) Data processor capable of simultaneously executing two instructions
US4740893A (en) Method for reducing the time for switching between programs
US5822555A (en) Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
KR101081623B1 (ko) 적절한 프리-디코딩을 이용하여 가변-길이 명령 세트로부터의 명령들을 프리로딩하기 위한 시스템, 방법 및 소프트웨어
US5398321A (en) Microcode generation for a scalable compound instruction set machine
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
KR100266424B1 (ko) 롬(rom)용량을 저감한 데이타 프로세서
JP2000222206A (ja) データ処理装置
US5502827A (en) Pipelined data processor for floating point and integer operation with exception handling
EP0220682A2 (en) Data processing system
EP0279953B1 (en) Computer system having mixed macrocode and microcode instruction execution
US7134000B2 (en) Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
EP0573071A2 (en) A microprocessor
GB2230116A (en) Pipelined instruction decoding apparatus
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JPH0752402B2 (ja) データ処理装置
JPH06250856A (ja) マイクロコンピュータ
JPH10187444A (ja) データ処理装置及び方法
JPH0667882A (ja) データ処理装置

Legal Events

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

Payment date: 20040830

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee