KR100354324B1 - 명령어큐스캐닝장치및그방법 - Google Patents
명령어큐스캐닝장치및그방법 Download PDFInfo
- Publication number
- KR100354324B1 KR100354324B1 KR1019950025425A KR19950025425A KR100354324B1 KR 100354324 B1 KR100354324 B1 KR 100354324B1 KR 1019950025425 A KR1019950025425 A KR 1019950025425A KR 19950025425 A KR19950025425 A KR 19950025425A KR 100354324 B1 KR100354324 B1 KR 100354324B1
- Authority
- KR
- South Korea
- Prior art keywords
- array
- instruction
- dispatch
- offcode
- location
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 31
- 238000012545 processing Methods 0.000 claims abstract description 16
- 206010038933 Retinopathy of prematurity Diseases 0.000 claims description 173
- 230000000873 masking effect Effects 0.000 claims description 44
- 230000011664 signaling Effects 0.000 claims description 23
- 230000000903 blocking effect Effects 0.000 claims description 4
- 230000001902 propagating effect Effects 0.000 claims 8
- 230000001939 inductive effect Effects 0.000 claims 3
- 101000574648 Homo sapiens Retinoid-inducible serine carboxypeptidase Proteins 0.000 claims 1
- 102100025483 Retinoid-inducible serine carboxypeptidase Human genes 0.000 claims 1
- 230000037452 priming Effects 0.000 claims 1
- 238000006243 chemical reaction Methods 0.000 abstract description 11
- 238000003491 array Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 7
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 6
- 101100074187 Caenorhabditis elegans lag-1 gene Proteins 0.000 description 4
- 101100510617 Caenorhabditis elegans sel-8 gene Proteins 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- JXSJBGJIGXNWCI-UHFFFAOYSA-N diethyl 2-[(dimethoxyphosphorothioyl)thio]succinate Chemical compound CCOC(=O)CC(SP(=S)(OC)OC)C(=O)OCC JXSJBGJIGXNWCI-UHFFFAOYSA-N 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 101100510615 Caenorhabditis elegans lag-2 gene Proteins 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 102100022668 Pro-neuregulin-2, membrane-bound isoform Human genes 0.000 description 1
- 101100224360 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) DON1 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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)
- Radar Systems Or Details Thereof (AREA)
- Ultra Sonic Daignosis Equipment (AREA)
- Vehicle Body Suspensions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
감소된 명령어 세트 컴퓨터("RISC")를 가지는 수퍼스칼라 복소수 명령어 세트 컴퓨터("CISC") 프로세서(100)는 생 x 86 명령어 시작 및 끝점을 인식하여 마크하고 "사전-복호화" 정보를 부호화하는 명령어 캐시(104), "예견된 수행" 상태의 할당된 명령어 큐 및 사전-복호화 정보인 바이트 큐(106) 및, 바이트 큐에 있는 정렬된 사전-복호화 x 86 명령어를 기본으로 RISC-GUD 연산(ROPs)을 위한 타입, 오프코드 및 오퍼랜드 포인터값을 발생하는 명령어 디코더(108)를 포함한다. 명령어 디코더는 각각의 디스패치 위치에 CISC 명령어를 ROPs로 변환하기 위하여 논리 기본 변환경로(712, 722, 732, 742), 메모리 기본 변환경로(716, 726, 736, 746) 및, 공통 변환경로(714, 724, 734, 744)를 포함한다. ROP 멀티플렉서(400)는 바이트 큐에서 변환경로를 x 86 명령어를 향하게 한다. ROP 멀티플렉서는 바이트 큐를 신속하게 스캐닝하는 스캔논리(690)를 포함하여 각각의 디스패치 위치를 위하여 오프코드의 장소아, ROP 정보신호(ROPxNUM, ROPxDIFF, PGNXT[x])를 인식하는 어레이의 비트(ISELx)를 발생한다. 스캔논리는 그룹의 비트 처리논리(GP(x, Y))로 분리되고, 그룹사이에 예견능력(LAG(x))을 포함한다.
Description
본 출원은 David B. Witt와 Michael D. Goddard의 1993년 10월 29일 출원된, 발명의 명칭이 "수퍼스칼라 명령어 디코더"인 미국 특허출원 제 08/146,383호의 부분계속출원이다. 이 출원은 완전히 이하 참고로서 인용된다.
본 발명은 명령어 복호화(instruction decoding)에 관한 것으로, 특히, 복호화에 필요한 명령어소자을 인식하기 위하여 가변적인 길이 명령어의 큐를 스캐닝하는 것에 관한 것이다.
일반적인 목적의 프로세서는 통상 스칼라 명령어 세트를 기본으로 한다. 프로세서 구조는 RISC (감소된 명령어 세트 컴퓨터)를 기본으로 하거나 또는 CISC (복소수 명령어 세트 컴퓨터)를 기본으로 한다. 연구논문에서 광범위하게 논의되는바와 같이, 위의 방법 각각은 장점 및 단점을 가진다.
RISC 구조는 수퍼스칼라 컴퓨터 디자인에서 사용되어왔다. "수퍼스칼라"라는 용어는 스칼라 명령어의 동시실행에 의한 수행능력을 향상시키는 컴퓨터장치를 의미하는 것이다. 수직스칼라 RISC 구조를 실행하는데 관한 발전은 좋았다. 스칼라 RISC 구조는 통상 파이프 라인 실행으로 정의되며, 수퍼스칼라 실행을 용이하게 하는 많은 특징을 포함하고 있다. 이러한 특징은, 고정된 포맷과 고정된 길이의 명령어, 명시 명령어 오퍼랜드(operand) 및, 부하/저장 구조를 포함한다. 수퍼스칼라 RISC 구조는 Johnson (수퍼스칼라 마이크로프로세서 디자인, Prentice Hall, Englewood Cliffs, New Jersey, 1991)에 개시 되어있다. 이는 완전히 이하 참고로서 인용된다.
수퍼스칼라 CISC 구조를 성취하는 것이 중요하다고 나타났음에도 불구하고, 몇몇 CISC 구조가 수퍼스칼라 실행으로 정의되기때문에 발전이 부분적으로 방해되었다. 연산이 중복될 수 있도록 연산을 디자인하기 보다는 명령어에 연산이 조합되도록 결정하는 것에 대한 강조를, 중요 실행기술이 명령어 세트와 마이크로코드 해석일 때 CISC 구조가 정의된다. 응용가능성이 대단히 많는 반면에, 마이크로 코드 해석이 파이프라인 구조 또는 수퍼스칼라 구조의 개발하는 것은 용이하지 않다. 명령어 포맷 복잡성을 내포하는 통상적인 CISC 구조의 수 많은 양상으로 부터 어려움이 제기된다. 명령어 포맷 복잡성의 일양상은 명령어 길이 가변성이다.
CISC 명령어포맷의 일예는 Califonia, Santa Clara 의 Intel Corporation으로 부터 입수가능한 PentiumTM마이크로프로세서와 80486 마이크로프로세서의 명령어포맷이다. 초기 Intel 명령어 세트로부터 특성을 물려받고 통상 x 86 포맷으로 알려진, 이러한 명령어포맷에 있어서, 명령어는 하나 또는 2개의 오프코드 바이트로 구성된 연산코드(operation code;"opcode"), 수정 레지스터 즉 메모리("mod r/m) 바이트, 스케일-인덱스-베이스(scale-index-base;"sib") 바이트, 변위 바이트 및 즉시데이타 바이트를 가질 수 있다. 오프코드는 연산 코드를 규정하고, 레지스터 인식자를 또한 포함할 수 있다. mod r/m 바이트는 오퍼랜드가 레지스터에 있는지 또는 메모리에 있는지를 규정한다. 오퍼랜드가 메모리에 있다면, mod r/m 바이트에서의 영역은 사용되어질 어드레싱 모드를 규정한다. mod r/m 바이트의 일정한 부호화는 제 2 바이트, sib 바이트가 어드레싱 모드를 완전하게 규정하기 위하여 후속하는 것을 나타낸다. sib 바이트는 2-비트 스케일 영역, 3-비트 인덱스 영역 및 3-비트 베이스 영역으로 구성된다. 이러한 영역은 어드레스 계산이 어떻게 수행되는지를 규정하기 위하여 복소수 메모리 어드레싱모드에서 사용된다. 변위 바이트는 어드레스 계산에서 사용된다. 즉시데이타 바이트는 명령어 오퍼랜드를 위해 사용된다. 프리픽스 바이트와 같이 알려진, 하나 또는 그 이상의 부가적인 바이트는 오프코드 바이트이전에 나타난다. 프리픽스 바이트는 부가적인 복잡성을 부가한, 명령어의 해석을 변경한다.
앞서 논의된 것으로 부터 명백한 바와 같이, x 86 포맷에서의 명령어의 길이는 폭넓게 변화할 수 있다. 최소 명령어는 단일의 오프코드 바이트이고 8비트 길이이다. 프리픽스 바이트를 포함하는 긴 명령어는 104 비트 길이이다. 단일 프리픽스 바이트이상을 포함하는 더욱 긴 명령어도 물론 가능하다.
x 86 명령어 포맷의 가변적인 명령어길이 및 다른 복잡함은 복잡하고 상대적으로 느린 복호화 회로를 초래한다. 느린 복호화 회로는 복소수 명령어를 처리하는 몇몇 CISC 마이크로프로세서와 느린 마이크로프로세서에서 받아들일 수 있으며, 이는 기능 소자 각각의 속도가 최적인 구조를 가진 마이크로프로세서에서의 수행능력에 심각하게 영향을 줄 수 있다.
본 발명은 수퍼스칼라 프로세서에서 위치를 디스패치하기에 적절한 바와 같은 하나 또는 그 이상의 방향을 제어하는 수퍼스칼라 프로세서의 명령어 큐의 신속한 스캔을 제공한다.
상기 및 그 밖에 장점은 제 1 및 제 2 디스패치에 각각 필요한 제 1 및 제 2 단계로 이루어진 스캐닝장치에서 성취된다. 제 1 단계는 오프코드 장소 인식화 소자에 연결된 입력을 가지는 다수 그룹의 마스킹논리, 입력이 인식화 소자에 연결되고 출력이 제 1 단계의 마스킹 논리그룹중 더 높은 순서의 마스킹 논리그룹에 연결된 예견 능력 발생기 및, 제 1 단계의 마스킹 논리그룹의 출력에 연결된 맵된 명령어 정보발생기로 이루어진다. 제 2 단계는 제 1 단계에 있는 대응하는 마스킹 논리그룹의 출력에 연결된 입력을 가지는 다수 그룹의 마스킹 논리그룹, 입력이 맵된 명령어 정보발생기와 제 1 단계에 있는 마스킹 논리그룹의 출력에 연결되고 출력이 제 2 단계의 마스킹 논리그룹중 더 높은 순서의 마스킹 논리그룹에 연결된 예견 능력 발생기로 이루어진다.
상기 및 그 밖에 장점은 제 1 세트의 오프코드 장소 인식기("OLI")에 의해 인식된 큐에서의 개별적인 장소에 있는 하나 또는 그 이상의 오프코드를 가지는 원시 명령어와 큐를 스캐닝하는 방법으로 또한 구해진다. 여기서, 원시 명령어 각각은 하나 또는 그 이상의 2차 명령어의 수의 시퀀스로 행한다. OLI의 제 1 세트에 있는 제 1 및 제 2 부분집합이 인식되고, OLI의 제 1 세트에 있는 제 1 및 제 2 부분집합에 대응하는 제 1 및 제 2 부분집합을 가지는 OLI 의 제 2 세트는 제 1 디스패치 위치에 대해 발생된다. 그러나, 어떠한 가정된 제 1 OLI는 인식되어진다. 예견 능력 신호는 OLI의 제 1 세트의 제 1 부분집합이 어떠한 가정된 OLI 를 포함하지 않는 경우, 또한 제 1 디스패치 위치에 대하여 발생된다. 예견 능력 신호는 OLI의 제 2 세트의 제 2 부분집합에 인가되어, 제 1 세트에 있는 가정된 제 1 OLI를 나타내며 제 1 세트에 있는 연속적으로 가정된 어떤 OLI도 나타내지 않는 제 1 디스패치 위치를 위하여 OLI의 제 2 세트로 부터 OLI의 제 3 세트를 발생한다. OLI의 제 4 세트는 제 1 세트로 부터 유도되고, 유사한 일련의 단계가 제 2 디스패치 위치에 적용된다. 변화시, OLI의 제 4 세트는 제 1 디스패치 위치가 제 2 명령어의 시퀀스에 있는 마지막의 제 2 명령어를 포함하는 경우, OLI의 제 1 세트에 있는 가정된 OLI를 차단함으로써 유도되고, 그렇지 않으면, OLI의 제 1 세트에 있는 가정된 제 1 OLI가 전파된다.
도면에 있어서, 동일한 도면부호는 동일한 구성부품을 나타낸다.
CISC 명령어 세트의 수퍼스칼라 수행을 성취하는 프로세서(100)의 구조를 제 1 도에 도시하였다. 프로세서(100)는 수퍼스칼라 RISC-형 코어(110)를 기본으로 하며, 코어(110)에 의해 프로세스하기 위하여, CISC 명령어를 RISC-형 연산 또는 ROP로 변환하는 다양한 소자를 포함한다. ROP 는 "소오스 A - 연산 - 소오스 B-> 수신지", 오프코드(opcode)와 소오스 오퍼랜드의 고정된 위치, 부하/저장 구조 및 부하/저장 어드레스모드의 직접계산을 포함하는, 다수의 유용한 특징을 가진다. 코어(110)용 ROP는 세개의 오퍼랜드 명령어 즉, 2개의 소오스 오퍼랜드(A 과 B) 및, 하나의 수신지 오퍼랜드이다.
프로세서(100)의 주요 기능블록사이는 물론 외부 메모리에서 외부 메모리까지 CISC 어드레스, 데이타 및 제어 전송은 물리적 태그저장(162) 및 메모리 운용유니트(164)와 연결된 버스 인터페이스 유니트("BIU")에 의해 외부버스(도시하지 않음)로 인터페이스되는, 내부 어드레스 및 데이타("IAD") 버스(102)에서 통신된다. IAD 버스(102)는 64-비트 버스이다. 전송 목표버스 즉, XTARGET 버스(103)는 다양한 우선사용이 있는 32-비트 버스로서, 마이크로브렌치(microbranch)오예측, 예외 및 리셋트의 경우 브렌치 부(BRNSEC 135)에서 IDECODE(108)를 갱신하고 IDECODE에서 BRNSEC(135)에 있는 브렌치 FIFO를 갱신하는 것을 포함한다.
CISC 명령어를 ROP 로 변환하는 다양한 소자는 명령어 캐시(cache) 즉, ICACHE(104), 바이트 큐 즉, BYTEQ(106) 및, 명령어 디코더 즉, IDECODE(108)을 포함한다. CISC 명령어, 예시적으로 x 86 클래스 마이크로프로세서(이하 x 86 명령어)에 의해 사용되는 명령어는 ICACHE(104)에서 이해되어 사전에 복호화된다. ICACHE(104)는 생(raw) x 86 명령어 시작 및 끝지점을 인식하여 "사전-복호화" 정보를 부호화하는 제 1 레벨의 명령어 캐시이다. 사전-복호화 x 86 명령어는 개념적으로, 0을 나타내는 16 엔트리까지의 큐, "예측되는 수행" 상태에서의 하나 또는 그 이상의 사전-복호화 x 86 명령어인, BYTEQ(106)에 대하여 복사된다. 사전-복호화 x 86 명령어 각각은 명령어 시작에서 시작하고 명령어 끝에서 끝이나며, 하나 또는 그 이상의 소자로 이루어진다. 소자 각각은 유효비트, x 86 명령어 바이트, 예측된 수행상태의 사전-복호화정보 및 브렌치 오계측 정보를 포함한다. x 86 명령어가 BYTEQ(106)로 부터 디스패치되고, 후속하는 x 86 명령어가 큐의 헤드까지 나아가기때문에, 사전-복호화 x 86 명령어는 이용가능한 공간이 제공된 BYTEQ(106)로 복사된다. BYTEQ(106)에서 나온 사전-복호화 x 86 명령어는 ROP의 각 시퀀스에 대하여 명령어 디코더("IDECODE")에서 맵된다. IDECOED(108)는 오프코드 형태 및 BYTEQ(106)에서 사전-복호화 x 86 명령어를 기본으로 모든 ROP에 필요한 포인터값을 발생하여 BYTEQ(106)를 시프트하는 x 86 명령어 디스패치의 가능한 수를 결정한다. IDECOED(108)는 또한 불확실한(speculative) 부동점수행을 위한 부동점 포인터의 불확실한 맵핑을 유지한다. x 86 명령어가 몇개의 ROP로 맵하는지에 따라, 동시에 4개의 x 86 명령어까지 디스패치될 수 있다.
ICACHE(104)와 IDECODE(108)사이에 BYTEQ(106)를 도시하였으나, 이것은 함께 집적되거나, 이들 사이에서 분포되거나 또는, 분리 유니트와 같이 실행될 수 있다.
ROP 명령어는 다양한 버스를 통해 코어(110)까지 디스패치된다. 코어(110)는 4개의 ROP 이슈, 5개의 ROP 결과 및, 불확실하게 실행되는 16 개의 ROP까지 지지한다. A와 B 소오스 오퍼랜드에 대하여 4 세트의 포인터는 코어(110)내에 있는 레지스터 파일("REGF")(112)와 리오더(reorder) 버퍼("ROB")(114)에 대하여IDECODE(108)에 의해 각각의 버스를 통해 공급된다. REGF(112)는 정수 및 부동점 명령어에 필요한 맵된 x 86 레지스터를 포함하는 물리적인 레지스터 파일이다. ROB(114)는 불확실하게 수행되는 ROP의 상대적인 순서의 트랙을 유지하기 위하여 헤드 및 테일 큐 포인터를 갖춘 순환 FIFO이다. 저장장소는 명령어 결과로 동적으로 할된된다. 불확실한 실행상태 오퍼랜드는 ROB(114)에서 REGF(112)까지 기록후진(writeback) 버스(113)를 지나 복귀된다.
REGF(112)와 ROB(114)는 A & B 소오스 오퍼랜드 버스(116)를 경유하여 코어(110)에 있는 다양한 기능의 유니트에 RISC 오퍼랜드(A, B)의 전용(appropriate) "수행" 및 "예견 수행" 버전을 공급한다. 코어(110)에 있는 다양한 기능의 유니트는 제 1 산술논리 유니트("ALUO")(131), 제 2 산술논리 및 시프트 유니트("ALUI & SHF")(132), 특정 레지스터블록("SRB")(133), 부하/저장부("LSSEC")(134), 분기부(branch section; "BRNSEC")(135) 및, 플로팅 포인트 유니트("FPU")(136)이다. 기능 유니트(131, 132, 133, 134, 135 및, 136)는 입력이 오퍼랜드 버스(116)와 TAD 버스(118)에 연결된 각각의 보류상태(reservation status)(121, 122, 124, 125 및, 126)를 포함한다. RISC 오프코드 정보는 IDECODE(108)로 부터 형태 및 디스패치(type and dispatch) 정보 ("TAD") 버스(118)를 경유하여 디스패치된다. 기능 유니트(131-136)에서의 실행종료로 부터 결과과 구해질때, 그 결과와 그 각각의 결과 태그는 4개의 버스폭 결과 태그 및 결과버스(140)위에 ROB(114)는 물론, 보류상태(121-122 및, 124-126)에 공급된다.
DCACHE(150)는 정수 및 플로팅 포인트 부하 및 저장연산을 처리하는 LSSEC(134)에 밀접하게 연결된다. 2개의 부하연산까지 동시에 DCACHE(150)를 억세스하고 그 연산을 결과버스(140)까지 전송한다. DACHE(150)에 저장된 데이타를 검사하는 캐시 히트/미스는 LSSEC(134)에 의해 또한 수행된다.
프로세서(100)는 또한 물리적 태그 저장부(162), 메모리 운용유니트(164) 및, 버스 인터페이스 유니트(160)를 포함하는 바, 버스 인터페이스 유니트(160)는 통상적인 외부 메모리(166)에 연결된 통상적인 외부 버스와 인터페이스한다. 물리적 태그 저장부(162)는 ICACHE(104)와 DCACHE(150)의 내용에 관한 태그를 포함한다. 메모리 운용유니트(164)는 메모리 어드레스 변환을 수행한다. 버스 인터페이스 유니트(160)는 물리적 태그 저장부(162)로 부터 판독/기록 사이클에 필요한 요구를 취하여, 외부버스상에 판독/기록 사이클을 감시하여 물리적 태그 저장부(162), ICACHE(104) 및, DCACHE(150)에 있는 캐시 일관성을 보증하고, 검색시, 적절한 데이타를 갱신하거나, 무효화하거나 또는 제공한다.
제 1 도의 프로세서(100)는 인출단계, 2 개의 복호화 단계(DECODE1, DECODE2), 수행단계, 결과단계 및 은퇴단계를 가지는 5 단계의 파이프라인과 같이 연산한다.
ICACHE(104)는 1993년 10월 29일 출원된 미국 특허출원 제 08/145,905 호(David B. Witt 와 Michael D. Goddard 의 "다양한 바이트-길이 명령어에 특히 적합한 사전-복호화 명령어 캐시 및 그 방법", 대리인 서류번호 M-2278)에 더욱 상세히 개시되어있다. 이 출원은 완전히 이하 참고로서 인용된다. BYTEQ(106)는 1993년 10월 29일 출원된 미국 특허출원 제 08/145,902호(David B. Witt의 "다양한 바이트-길이 명령어에 특히 적합한 추리적인 명령어 큐 및 그 방법", 대리인 서류번호 M-2279)에 더욱 상세히 개시되어있다. 이 출원은 완전히 이하 참고로서 인용된다. IDECODE(108)는 1993 년 10 월 29 일 출원된 미국 특허출원 제 08/146,383 호(David B. Witt 와 Michael D. Goddard의 "수퍼스칼라 명령어 디코더", 대리인 서류번호 M-2280)에 더욱 상세히 개시되어있다. 이 출원은 완전히 이하 참고로서 인용된다. 코어(110)에 적합한 유니트는 1993년 10월 29일 출원된 미국 특허출원 제 08/146,382호(David B. Witt와 Willam M. Johnson의 "고성능 수퍼스칼라 마이크로프로세서", 대리인 서류번호 M-2518)에 더욱 상세히 개시되어있다. 이 출원은 완전히 이하 참고로서 인용된다. 다른 적절한 수퍼스칼라 RISC 코어는 물론 적절한 RISC 명령어 세트가 본 기술분야에서 잘 알려져있다. DCACHE(150)과 LSSEC(134)는 1993년 10월 29일 출원된 미국 특허출원 제 08/146,381 호(David B. Witt의 "선형 어드레스의 마이크로프로세서 캐시", 대리인 서류번호 M-2412)에 더욱 상세히 개시되어있다. 이 출원은 완전히 이하 참고로서 인용된다. 물리적 태그 저장부(162)와 LSSEC(134)는 1993 년 10월 29 일 출원된 미국 특허출원 제 08/146,376 호(Willam M. Johnson, David B. Witt 및, Murali Chinnakonda의 "고성능 부하/저장 기능 유니트 및 데이타 캐시", 대리인 서류번호 M-2281)에 더욱 상세히 개시되어있다. 이 출원은 완전히 이하 참고로서 인용된다.
ICACHE(104)에서의 x 86 명령어의 프로세싱을 초래하는 사전-복호화 x 86 명령어의 일반적인 표시는 제 2 도에 도시하였다. 사전-복호화 x 86 명령어는 6개의명령어 "소자"로 구성된다. 하나 또는 그 이상의 프리픽스(prefix)는 생 x 86 명령어에 제공된다면, 사전-복호화 x 86 명령어는 하나 또는 그 이상의 프리픽스 소자를 포함한다. 최종 프리픽스 소자는 IDECODE(108)를 위한 완전한 프리픽스 정보를 포함하는 연합 프리픽스 소자인 반면, 나머지 프리픽스 소자는 부분적인 정보를 포함하는 재-부호(re-coded) 프리픽스 소자이며, IDECODE(108)에 의해 사용되지 않는다. 제 2 도는 재-부호 프리픽스 소자(202)와 연합 프리픽스 소자(204)를 도시한 도면이다. x 86 명령어 오프코드 바이트를 포함하는 OPCODE 소자(210)는 프리픽스 소자 (202, 204)를 따른다. 생 x 86 명령어가 특별한 메모리 어드레싱을 수행한다면, 사전-복호화 x 86 명령어는 모드(mod) r/m 소자 예컨대, 모드 r/m 소자(212)를 포함한다. 생 x 86 명령어가 특정한 어드레싱 모드를 필요로 한다면, 사전-복호화 x 86 명령어는 시브(sib) 소자 예컨대, 시브 소자(214)를 포함한다. 생 x 86 명령어가 어드레스 계산을 위한 변위 소자를 필요로 하거나 즉시데이타를 포함한다면, 사전-복호화 x 86 명령어는 변위/즉시데이타 소자 예컨대, 변위/즉시데이타 소자(216)를 포함한다.
사전-복호화 정보는 코드(v, s, e, rop 및 op)에 의해 인식되는 다양한 비트에 운반된다. 비트 "v"는 특별한 소자가 유효 명령어의 일부인지의 여부를 나타내는 유효비트이다. 비트 "s"는 사전-복호화 x 86 명령어의 제 1 소자를 인식하는 시작 비트이다. 비트 "rop"는 x 86 명령어에 필요한 ROP의 수를 나타낸다. 비트 "op"는 x 86 명령어 오프코드를 인식하고, 비트 "e"는 사전-복호화 x 86 명령어의 마지막 소자를 인식하는 끝비트이다.
제 2 도는 가정된 사전-복호화 정보비트를 도시한 것이다. 가정된 "v" 비트로 표시되는 바와 같이, 제 2 도에 예시된 사전-복호화 x 86 명령어에 있는 모든 소자는 유효하다. 제 2 도의 사전-복호화 x 86 명령어의 제 1 소자 즉, 재-부호화 프리픽스(202)는 가정된 "s" 비트에 의해 인식된다. 비트 "rop"는 재-부호화 프리픽스 소자(202)에서 가정되는 것으로 나타나지 않는다. 왜냐하면, 재-부호화 연산은 유효한 rop 정보를 생산하지 않기 때문이다. 그러나, rop 비트가 최종 재-부호 연산에서 유효함에 따라, 사전-복호화 x 86 명령어의 연합 프리픽스(204)와 후속하는 모든 소자는 유용한 rop 비트를 포함한다. 비트 "op"는 x 86 명령어 오프코드 소자(210)를 인식한다. 변위/즉시 소자(216)는 가정된 "c" 비트에 의해 사전-복호화 x 86 명령어의 마지막 소자와 같이 마크(mark)된다.
BYTEQ(106)는 제 3 도의 대표적인 바이트 큐소자("x")로 도시된 바와 같이, 복수개의 어레이내에 유지된다. 어레이(BYTEQ)는 재-부호화 프리픽스 정보, 연합 프리픽스 정보, 오프코드 정보, 모드 r/m 정보, 시브 정보 또는 변위나 즉시데이타 정보를 포함하는, 생 x 86 명령어의 바이트에서 선택되거나 유도된 바이트를 포함한다. 그러면, 제 3 도의 대표적인 바이트 큐소자("x")는 비트 BYTEQx[7:0]를 포함한다. 어레이(BYTEQ)는 유효데이타를 포함한다. 그러면, 제 3 도의 대표적인 바이트 큐소자("x")는 x 번째 소자가 유효한지의 여부를 표시하는 비트 BYTEQV[x]를 포함한다. 바이트 오예측 정보는 BYTEQNS[x], BYTEQCLM0[x] 및, BYTEQCLM1[x]를 포함한다.
사전-복호화 정보비트(S, E, OP 및 ROP)는 s 비트 어레이(BYTEQS), op 비트어레이(BYTEQP2) 및, 2 비트의 rop 정보를 위한 rop 비트 어레이(BYTEQP1, BYTEQP0)에 포함되며, 각각의 엔트리는 BYTEQ(106)에서의 장소와 부합한다. 제 3 도에 있어서, x 번째 소자에 필요한 사전-복호화 정보는 수반하는 생바이트가 오프코드 바이트인 논리 1 인 경우를 나타내는 BYTEQP2[x], x 86 명령어를 수행하는데 필요한 ROP 의 수를 나타내는 BYTEQP1[x]와 BYTEQP0[x], 수반하는 생바이트가 x 86 명령어의 제 1 바인트인지의 여부를 나타내는 BYTEQS[x] 및, 수반하는 생바이트가 x 86 명령어의 최종 바이트인지의 여부를 나타내는 BYTEQE[x]를 포함한다.
제 4 도에 더욱 상세히 도시한 바와 같이, IDECODE(108)는 BYTEQ(106)으로 부터 사전-복호화 x 86 명령어 바이트를 수신하고, ROP의 각 시퀀스로 이 명령어 바이트를 번역하여, 다수의 디스패치 위치로 부터 ROP를 신속하게 급송하는 2 단계 파이프라인 디코더이다. 다중 명령어 발행(issue)을 위한 기회를 최대화 하기 위하여, 번역은 x 86 명령어에 인가된 제 4 도의 실시예에 있어서, 3개의 ROP 또는 그 미만으로 맵하는, 가장 단순한 명령어를 위한 고정배선(hardwired)의 빠른 변환경로로 처리된다. 3개의 ROP를 필요로 하는 명령어와 드물게 사용되는 명령어는 마이크로코드 ROM에 포함된 마이크로코드 시퀀스에 의해 처리된다. x 86 명령어가 다중 ROP 명령어 또는 마이크로코드 ROM으로 맵하는지 아닌지, 사전-복호화 x 86 명령어 정보는 다중 디스패치 위치에서 복사되어 디스패치 위치 각각을 다른 디스패치 위치와 무관하게 평행으로 작동하도록 한다.
IDECODE(108)에 있어서, ROP 멀티플렉서(ROPMUX;400)는 BYTEQ(106)의 엔트리를 네곳의 디스패치 위치(410, 420, 430 및 440)으로 향하게 한다. 각각의 디스패치 위치에 있어서, 빠른 컨버터(예를 들면, FASTCONV0(412), FASTCONV1(412), FASTOCONV2(432), 또는 FASTCONV3(442))는 x 86 명령어가 맵하는 시퀀스의 ROP 중 하나로 "간단한" x 86 명령어(예를 들면, 3 또는 그 이하의 ROP로 맵하는 명령어)의 빠른 변환을 실행한다. 디스패치 위치 각각은 마이크로코드 ROM(예를 들면, MROMO(416), MROM1(426), MROM2(436) 또는 MROM3(446))을 갖춘다. 이는 마이크로코드 ROM을 사용하여 가끔 사용되는 x 86 명령어와 3개의 ROP 이상의 ROP 시퀀스를 필요로 하는 x 86 명령어를 x 86 명령어를 맵하는 시퀀스에서의 ROP중 하나로 변환한다. 공통 단계(ICOMMON0(414), ICOMMON1(424), ICOMMON2(434), 및 ICOMMON3(444))는 명령어가 빠른 경로 또는 마이크로코드 ROM 명령어인지의 여부에 관계없이 특정한 방식으로 효과적으로 처리될 수 있는 x 86 명령어 변환연산의 일부를 프로세스하여 파이프라인한다. ROPSELECT0(418), ROPSELECT1(428), ROPSELECT2(438), 및, ROPSELECT3(448) 각각은 관련된 빠른 컨버터 및 공통 경로의 출력이나 또는 관련된 메모리 ROM 및 공통 경로의 출력을 선택하여 디스패치 정보를 발생한다. ROPSIIARED(490)은 모든 디스패치 위치에 의해 공유되는 디스패치 정보를 발생하는 ROPSELECT0(418), ROPSELECT1(428), ROPSELECT2(438), 및, ROPSELECT3(448)에서 나온 정보에 응답한다. IDECODE(108)는 IDECCNTL(460)에 의해 제어된다.
ROPMUX(400)는 BYTEQ(106)에 있는 완전한 사전-복호화 x 86 명령어를 IDECODE(108)에 있는 디스패치 위치(410, 420, 430 및, 440)중 하나 또는 그 이상으로 할당한다. 하나 또는 그 이상의 사전-복호화 x 86 명령어는 BYTEQ(106)에서BYTEQ(106)의 헤드에 있는 x 86 명령어부터 시작하는, 디스패치 위치(410, 420, 430 및, 440)중 이용가능한 위치로 동시에 향하게 한다. 예를 들어, 모든 디스패치 위치가 이용가능하다고 가정하는 것은, BYTEQ(106)에 있는 제 1의 4개의 사건-복호화 x 86 명령어가 하나의 ROP 로 맵한다면, BYTEQ(106)의 헤드에 있는 제 1 사전-복호화 x 86 명령어는 디스패치 인치 0 으로 다중화되며, 제 2 사전-복호화 x 86 명령어는 디스패치 위치 1 로 다중화되고, 제 3 사전-복호화 x 86 명령어는 디스패치 위치 2 로 다중화되며, 제 4 사전-복호화 x 86 명령어는 디스패치 위치 3 으로 다중화된다. 이와는 달리, BYTEQ(106)에 있는 제 2의 사전-복호화 x 86 명령어가 2개의 ROP로 맵한다면, 제 1 사전-복호화 x 86 명령어는 디스패치 위치 0 으로 다중화되며, 제 2 사전-복호화 x 86 명령어는 디스패치 위치 1과 2로 다중화되고, 제 3 사전-복호화 x 86 명령어는 디스패치 위치 3 으로 다중화된다.
마이크로코드 ROM 으로 맵하지 않고 디스패치 윈도우에 완전히 고정되지 않는 사전-복호화 x 86 명령어는 제 1 디스패치 윈도우에서 이용가능한 것과 같이 많은 디스패치 위치(410, 420, 430 및, 440)로 다중화된다. IDECCNTL(460)은 신호(PARTIALDISP[1:0]를 사용하여 다음 사이클에서의 큐의 헤드에 있는 사전-복호화 x 86 명령어를 위해 디스패치되어질 다음 ROP의 수를 표시함으로써, 이미 디스패치된 ROP는 디스패치 위치로 할당되지 않는다.
PARTIALDISP[1:0]는 디스패치 위치 "x"(x-0, 1, 2, 3)을 위하여 디스패치되어질 남아있는 다음 ROP의 수를 표히하는, 신호(ROPxDIFF[1:0])에서 나온 IDECCNRL(460)에서 구해진다. 시퀀스에서의 제 1 ROP는 수 0으로 간주되고, 제 2ROP는 수 1등으로 간주된다. 특히, PARTALDISP[1:0]는 현재 디스패치 윈도우로 부터 디스패치되어질 예측된 ROP의 수의 기초에서 선택된 ROPxDIFF 신호중 하나로 부터 다음사이클에 대해 래치된다. 예를 들면, 큐의 헤드에 있는 명령어와 다음 명령어 모두 3개의 ROP로 맵한다면, ROP0DIFF와 ROP1DIFF는 큐의 헤드에 있는 명령어와 부합하며 반면에, ROP2DIFF와 ROP3DIFF 는 다음 명령어와 부합한다. ROP0DIFF은 1 이고, ROP1DIFF는 2이며 ROP2DIFF는 0이고 ROP3DIFF는 1이다. 디스패치 윈도에 있는 4개의 ROP 모두가 디스패치될 것으로 결정하는 IDECCNTL(460)을 가정하여, ROP3DIFF는 PARTIALDISP와 같이 선택되고 래치된다. 따라서, 다음 디스패치 윈도우를 위한 PARTIALDISP의 값은 1 이다.
ROPMUX(400)의 연산을 BYTEQ(106)상에서 수행되는 스캐닝기능의 순서도인, 제 5 도에 도시하였다. 시프팅 연산후에 BYTEQ(106)가 유효하면, ROPMUX(400)은 BYTEQ(106)를 신속하게 스캐닝하여 완전한 사전-복호화 x 86 명령어와 맵하는 ROP의 수에 대하여 특정정보를 인식하고 획득한다. 신속한 스캐닝은 프로세서(100)에서 재빨리 종료하는데 필요한, 변환 프로세스를 위하여 좀더 많은 시간을 제공한다. 불필요한 딜레이를 피하기 위하여, 스캐닝은 나머지 논리회로가 제 6 도 및 제 7 도의 구조에 도시한 기능을 수행하는데 사용될 수 있더라도, 제 8 도 내지 제 51 도에 도시한 회로와 다른 비슷한 회로를 사용하여 본질적으로 동시에 수행된다. 제 5 도의 순서도는 수행되는 다양한 스캐닝연산을 예시하며, 이 도면은 이러한 다양한 연산의 순차적인 순서대로 해석해서는 안된다.
연산(502)에 있어서, 바이트큐 스캐닝기능은 byteq(106)에서 시작하고 4개의ROP로 집합적으로 맵하는 모든 유효하며 완전한 명령어를 인식한다. 4개의 ROP가 검색되기 전에 큐의 끝을 만난다면, 바이트 큐 스캐닝기능은 BYTEQ(106)에서 모든 유효하며 완전한 명령어를 인식한다. 명령어은 어레이 BYTEQS에 있는 각각의 시작비트와 어레이 BYTEQV에 있는 유효비트를 검색함으로써 인식된다. 완전한 명령어는 명령어의 시작비트가 어레이 BYTEQE에 있는 반대의 끝비트를 가지는지를 결정함으로써 인식된다.
연산(502)에 있어서, ROPMUX(400)는 디스패치 위치("x")를 위한 ROP 시퀀스에 있는 수를 각각 나타내는 제어신호(ROPxNUM[1:0], ROPxDIFF[1:0]를 또한 발생한다. ROP 시퀀스에 있는 수는 디스패치되어질 현재 ROP의 멤버(membr)이며 ROP 시퀀스에 있는 수는 디스패치되어질 다음 ROP의 멤버이다. 예를 들면, 큐의 헤드에 있는 명령어와 다음 명령어가 둘 다 3 개의 ROP 로 맵한다면, ROP0NUM은 0이고, ROP1NUM은 1이며, ROP2NUM은 2이고, ROP3NUM은 0이다. 반면에, ROP0DISP는 1이고, ROP1DISP는 2 이며, ROP2DISP 는 0 이고, ROP3DISP는 1 이다.
ROPMUX(400)은 디스패치 위치("x")에 있는 ROP가 대응하는 x86 명령어로 부터 맵된 ROP 시퀀스에 있는 최종 ROP 인지의 여부를 나타내는, 제어신호(PGNXT[x])를 또한 발생한다. 다음 디스패치 위치가 새로운 x 86 명령어로 부터 맵된 제 1 ROP를 디스패치하는 것을 표시하는, ROPDIFF가 00 이면, PGNXT[x]는 0 이고 그 밖에, PGNXT[x]는 1이다. PGNXT[x]는 제 52 도에 도시한 바이트큐 SE 스캐닝논리(5200)과 같은 정보를 필요로 하는 다른 바이트큐 스케닝 논리회로에 공급된다.
연산(504)에 있어서, 연산(502)에서 인식된 명령어 각각에 있는 오프코드의 위치는 어레이(ISEL0, ISEL1, ISEL2 및, ISEL3)에서 인식되어 보고된다.
연산(506)에 있어서, BYTEQ(106)의 헤드에 있는 사전-복호화 x 86 명령어가 BYTEQP1[x], BYTEQP0[x]이 11인 경우 표시되는, 마이크로코드 ROM 맵 명령어인지의 여부로 결정이 구성된다. 결정은 ROPMUX(400)로 이루어지며 신호(ROPMROM)와 같이 보고된다. 제 5B 도의 연산은 BYTEQ(106)의 헤드에 있는 사전-복호화 x 86 명령어가 마이크로코드 ROM 맵 명령어인 경우 수행된다. 제 5C 도의 연산은 BYTEQ(106)의 헤드에 있는 사전-복호화 x 86 명령어가 마이크로코드 ROM 맵 명령어가 아닌 경우 수행된다.
BYTEQ(106)의 헤드에 있는 사전-복호화 x 86 명령어가 마이크로코드 ROM 맵 명령어가 아닐 경우, 디스패치 위치(410, 420, 430 및 440)는 연산(532)(제 5C 도)에서 사전-복호화 x 86 명령어 각각이 맵하는 ROP의 수화 이용가능한 디스패치 위치의 수에 의존하는 사전-복호화 x 86 명령어로 할당된다. 이러한 방식으로 할당된 디스패치 위치에 필요한 ROPxNUM은 그 각각의 값으로 할당되고, 제어신호 (ROPMROM)는 가정되지 않으며, 디스패치 위치 각각에 필요한 MUXVAL[x]는 가정된다.
예를 들면, 큐의 헤드에 있는 명령어(I1)에 필요한 오프코드가 BYTEQ(106)에서의 위치 0에 있다고 가정한다. 명령어(I1)에 필요한 BYTEQP1[0]과 BYTEQ0[0]의 값은 10 로서, 명령어(I1)가 3개의 ROP로 맵하는 것을 나타낸다. 제 1 의 3 곳의 디스패치 위치(0, 1, 2)는 이용가능하고 명령어(I1)로 할당된다. 다음 명령어(I2)에 필요한 오프코드도 BYTEQ(106)에서의 위치 5에 있다고 또한 가정한다. BYTEQP1[5]과 BYTEQ0[5]의 값은 또한 10로서, 명령어(I2)가 3개의 ROP로 맵하는 것을 나타낸다. 단지 하나의 디스패치 위치만이 이용가능하기 때문에, 이 위치는 명령어(I2)로 할당된다. 디스패치 위치 리소스가 명령어(I2)에 대한 완전한 할당을 위한 현재 복호화단계에서 이용가능하지 않다는 것에 주목한다. 남아있는 2 곳의 필요한 디스패치 위치는 명령어(I2)가 BYTEQ(106)의 헤드로 할당된 다음 제어신호(PARTIALDISP)에 따라서, 다음 사이클에서의 명령어(I2)로 할당된다. 제어신호는 디스패치되어질 다음 ROP의 수를 나타내기 위하여 1 로 세트된다. x 86 명령어중 어느 것이라도 현재 디스패치 윈도우에 대하여 미정이고 BYTEQ(106)의 헤드에서 마이크로코드 ROM으로 맵하지 않는다면, 디스패치 위치는 여전히 할당된다. 그러나, 이러한 방식으로 할당된 디스패치 위치에 필요한 ROPxNUM은 가정되지 않으며, ROP는 x 86 명령어로 할당된 디스패치 위치로 부터 디스패치된다. x 86 명령어는 마이크로코드 ROM으로 맵하거나 큐의 헤드에는 없이 유효하게 마크되지 않는다(디스패치 위치(x)에 필요한 MUXVAL[x] 는 가정되지 않는다). 무효 ROP는 프로세서(100)의 후속하는 파이프라인 단계에서 처리되지 않는다.
연산(534)에 있어서, 디스패치 위치 각각은 BYTEQ(106)에 저장된 사전-복호화 x 86 명령어에서 나온 4개의 소자를 수신한다. 4 개의 소자는 바이트큐 장소(Y-1)에 있는 연합 프리픽스 데이타소자, 바이트큐 장소(Y)에 있는 오프코드소자, 바이트큐 장소(Y+1)에 있는 모드 r/m 소자 및, 장소(Y+2)에 있는 시브소자이다. 여기서, Y는 명령어 오프소자의 BYTEQ(106)에서의 장소이다.
연산(536)에 있어서, 큐의 다음 헤드는 디스패치된 1, 2, 3 및, 4의 ROP로 결정된다. 이러한 정보는 ICACHE(104)에 공급되며, 여기서 정보는 BYTEQ(106)를 시프트하는데 사용된다.
BYTEQ(106)의 헤드에 있는 사전-복호화 x 86 명령어가 마이크로코드 ROM 맵된 명령인 경우, 4곳의 디스패치 위치는 모두, 마이크로코드 ROM 맵 명령어로 할당된다. 마이크로코드 ROM 맵 명령어의 경우, BYTEQP1과 BYTEQP0의 값은 11로서, 명령어가 마이크로코드 ROM 맵인지를 표시한다. 4 곳의 디스패치 위치 리소스의 할당이 x 86 명령어를 맵하는 ROP 시퀀스의 디스패치를 종료하기에 충분하지 않으면, 4 곳의 디스패치 위치 리소스는 다음 사이클에서의 마이크로코드 맵 명령어로 다시 할당된다. ROPxNUM이 사용되지 않으므로, 이러한 방식으로 할당된 디스패치 위치에 필요한 ROPxNUM은 "돈 캐어(don't care)"이다. 디스패치 위치는 유효하게 마크되고(MUXVAL[3:0] 비트는 가정되고), 마이크로코드 맵 x 86 명령어가 큐의 헤드에 있기때문에, 제어신호는 가정된다.
연산(522)에 있어서, IDECCNTL(460)은 마이크로코드 ROM 엔트리 포인트(entrypoint)를 형성하고 MROM0(416), MROM1(426), MROM2(436) 및 MROM3(446)에 포함된 ROP 시퀀스를 억세스한다.
연산(524)에 있어서, BYTEQ(106)의 헤드에 있는 마이크로코드 맵 x 86 명령어에서 나온 연합 프리픽스 데이타소자, 오프코드소자, 모드 r/m 소자 및 시브 소자는 신호(ROPzxPRE, ROPxO[, RO[xMODRM 및, ROPxSIB)와 같이 소자를 ICOMMONx에 의해 사용하는 디스패치 위치 모두에 공급한다. 연합 프리픽스 데이타소자는 바이트큐 장소(Y-1)에 있으며, 오프코드소자는 바이트큐 장소(Y)에 있고, 모드 r/m 소자는 바이트큐 장소(Y+1)에 있으며, 시브소자는 장소(Y+2)에 있다. 여기서, Y는 큐의 헤드에 있는 명령어의 오프코드 소자의 BYTEQ(106)에서의 장소이다. 소자가 사전-복호화 x 86 명령어에 제공하지 않는다면 명령어의 시작 및 끝비트로 부터 결정되는 바와 같이, 부재(abscent)소자에 부합하는 디스패치 위치에서 수신된 정보는 "돈 캐어"정보와 같이 취급된다.
연산(526)에 있어서, 큐의 다음 헤드는 디스패치된 1, 2, 3 및, 4 ROP로 결정된다. 이러한 정보는 마이크로코드 맵 x 86 명령어가 완전히 디스패치되는 경우에 BYTEQ(106)를 시프트하는데 사용된다.
오프코드와 rop 수 어레이(BYTEQP2, BYTEQP1 및 BYTEQ0)를 처리하는 ROPMUX(400)에서 사용하기에 적합한 빠른 바이트큐 스캐닝 논리구조(690)가 제 6A도와 제 6B 도에 도시되어있다. 스캐닝 논리구조(690)는 디스패치 위치(0, 1, 2, 및, 3)에 각각 부합하는 4개의 단계(600, 610, 620 및, 630)를 포함하는 바, 이 단계는 단계의 수가 더 적거나 또는 더 많더라도 바람직하게 사용될 수 있다. 스캐닝 논리구조(690)에 대한 한 입력은 어레이(BYTEQP2)의 출력이며, 이 출력은 BYTEQ(106)에 있는 오프코드 바이트의 장소를 나타내는 16-비트 버스이다. 스캐닝 논리구조(690)의 단계((600, 610, 620 및, 630)에서 나온 출력은 각각 ISEL0, ISEL1, ISEL2 및, ISEL3을 포함한다. 출력비트(ISEL0[15:0])는 제 1 디스패치 위치에 필요한 오프코드 바이트의 장소를 나타내는 16-비트 출력버스로 구성된다. 비트(ISEL1[15:0])는 제 2 디스패치 위치에 필요한 오프코드 바이트의 장소를 나타내는 16-비트 출력버스로 구성된다. 비트(ISEL2[15:0])는 제 3 디스패치 위치에 필요한 오프코드 바이트의 장소를 나타내는 16-비트 출력버스로 구성된다. 비트(ISEL32[15:0])는 제 4 오프코드 위치에 필요한 오프코드 바이트의 장소를 나타내는 16-비트 출력버스로 구성된다. 이러한 출력은 ROPMUX(400)에 있는 16:1 멀티플렉서(도시하지 않음)와 같은 스티어링(steering) 논리에 인가되어 BYTEQ(106)에서 나온 명령어 오프코드를 각각의 프로세싱 경로(FASTCONV0)와, ICOMMON0(414), FASTCONV1(422)와 ICOMMON1(424), FASTCONV2(423)와 ICOMMON2(434) 및, FASTCONV3(442)와 ICOMMON3(444)로 향하게 한다.
후속하는 실시예는 입력버스(BYTEQP2[15:0]의 비트와 출력버스(ISEL0[15:0], ISEL1[15:0], ISEL2[15:0] 및, ISEL3[15:0])의 비트사이에 관계를 예시한다. 예를 들면, 신호(BYTEQP[15:0])가 다음과 같은 것을 나타내는 이진 1010-0100-0000-1001이라고 가정한다. 즉, 제 1 명령어의 제 1 오프코드 바이트는 바이트큐 장소(0)에 있으며, 제 2 명령어의 제 1 오프코드 바이트는 바이트큐 장소(3)에 있고, 제 3 명령어의 제 1 오프코드 바이트는 바이트큐 장소(10)에 있으며, 제 4 명령어의 제 1 오프코드 바이트는 바이트큐 장소(13)에 있다고 가정한다. 제 1 실시예의 경우, 큐의 헤드에 있는 명령어와 바로 뒤따르는 명령어는 둘다 3개의 ROP로 맵한다고 가정한다. 이 경우, 스캐닝논리(1700)의 출력(ISEL0[15:0], ISEL1[15:0], ISEL2[15:0] 및 ISEL3[15:0]을 이하 표 1에 도시하였다.
표 1
동일한 오프코드가 제 1의 3곳의 디스패치 위치로 향하기 때문에, ISEL0, ISEL1 및, ISEL2는 동일한 것에 주목한다. 제 2 실시예의 경우, 비교하기 위하여 BYTEQ(106)에 있는 제 1의 4개 명령어가 하나의 ROP으로 맵한다고 가정한다. 이 경우, 스캐닝논리(1700)의 출력(ISEL0[15:0], ISEL1[15:0], ISEL2[15:0] 및 ISEL3[15:0]을 이하 표 2 에 도시하였다.
표 2
상이한 오프코드가 4 곳의 디스패치 위치로 향하기 때문에, ISEL0, ISEL1, ISEL2 및, ISEL3은 동일한 것에 주목한다.
이와는 달리, 스캐닝 논리구조(690)는 고속 스캐닝을 성취하기 위하여 예견 능력(look ahead)을 사용한다. 4개의 단계(600, 610, 620 및, 630)는 각각 비트 처리논리의 4그룹을 포함하여 그룹의 수가 그 미만이거나 그 이상이더라도 바람직하게 사용될 수 있는, 예견 능력을 용이하게 한다. 예를 들면, 디스패치 위치(0)에 필요한 단계(600)는 제 1 그룹(GP(0, 0))과 그룹(GP(1, 0), GP(2, 0) 및, GP(3, 0))에 연결된 예견 능력 신호발생 논리(LAG(0))는 물론, 부분적인 디스패치 신호발생 논리(PDG(0)) 및, 제 1 오프코드 인식화 신호발생 논리(FOG(0))를 포함한다. 디스패치 위치(1)에 필요한 단계(610)는 제 1 그룹(GP(0, 1))과 그룹(GP(1, 1), GP(2, 1) 및, GP(3, 1))에 연결된 예견 능력 신호발생 논리(LAG(1))는 물론, 제 1 오프코드 인식화 신호발생 논리(FOG(1))를 포함한다. 디스패치 위치(2)에 필요한 단계(620)는 제 1 그룹(GP(0, 2))과 그룹(GP(1, 2), GP(2, 2) 및, GP(3, 2))에 연결된 예견 능력 신호발생 논리(LAG(2))는 물론, 제 1 오프코드 인식화 신호발생 논리(FOG(2))를 포함한다. 디스패치 위치(3)에 필요한 단계 (630)는 제 1 그룹(GP(0, 3))과 그룹(GP(1, 3), GP(2, 3) 및, GP(3, 3))에 연결된 예견 능력 신호발생 논리(LAG(3))는 물론, 제 1 오프코드 인식화 신호발생 논리(FOG(3))를 포함한다.
그룹 각각의 출력은 3 곳의 서로 다른 수신지에 공급된다. 예컨대, 그룹(GP(0, 0))의 출력을 숙고하라. 출력(602)의 제 1 세트는 할당되어질 ROP의 ROP 수를 다음 디스패치 위치에 속하고, ROP 수 신호발생 논리(RNG(0))에 공급된다. 예를 들어, 제 7B 도에 도시한 XDISP0[x]와 XDSP0[x+16]를 참조하라. RNG(0)은 제 1 단계(600)에 있는 그룹(GP(0, 0), GP(0, 1), GP(0, 2) 및, GP(0, 3)) 모두에서 나온 입력을 수신하여, ROP 수 신호(ROP0DIFF[1:0], ROP1NUM[1:0] 및, PGNXT[0])를 발생한다. 출력(604)의 제 2 세트는 명령어를 위한 오프코드 장소의인식을 아직 완전하게 할당되지 않은 디스패치 위치에 속하여 제 2 단계(610)에 있는 FOG(1)과 LAG(1)에 공급된다. 예를 들어, 제 7B 도에 도시한 XN1[x]를 참조하라. FOG(1)와 LAG(1)는 제 1 단계(600)에 있는 그룹(GP(0, 0), GP(0, 1), GP(0, 2) 및, GP(0, 3)) 모두에서 나온 입력을 수신하여, 제 2 단계(610)의 그룹을 위해 제 1 오프코드 인식화 신호 및 예견 능력 신호를 각각 발생한다. 출력(606)의 제 3 세트는 디스패치 위치를 가장 최근에 할당된 ROP의 수와 관련되 x 86 명령어가 맵하는 ROP의 수에 속하여 제 2 단계(610)에 있는 FOG(1)과 LAG(1)에 공급된다. 예를 들어, D1N1[x], DON1[x], NBQP1[x], NBQP0[x](신호(XN1[x]는 또한 이러한 제 3 세트의 일부분이다)를 참조하라.
단계(600, 610, 620 및 630)중에서, 가장 최근에 할당된 ROP의 수에 속하는 신호는 위치와 관련된 x 86 명령어 맵이 전파하는 ROP의 수를 디스패치하고, 이하 표 3에 도시한 바와 같이 처리된다. 예컨대, 큐의 헤드에 있는 명령어와 바로 뒤따르는 명령어 둘다 3개의 ROP로 맵하고, 모든 후속하는 ROP는 하나의 ROP로 맵하며, 초기에 큐의 헤드에 있는 명령어가 맵하는 ROP 시퀀스는 부분적으로 디스패치하지 않는다.
표 3
제 1 디스패치 윈도우에 있어서, PARTIALDISP[1:0]은 00이다. 제 1 단계에 있어서, 제 1 바이트 큐 장소(0)가 오프코드를 포함하기 때문에, "ROP의 수"는 ROP 어레이의 수의 위치(0)로 부터 취하게 되고, PARTIALDISP[1:0]에서 유도된 ROP의 수와 비교된다. 어떠한 매치도 일어나지 않으며, ROP 수는 1 씩 증가하고, 불변의 "오프코드 장소" 어레이가 함께 제 2 단계로 공급된다. 제 2 단계에 있어서, "ROOP의 수" 데이타는 ROP 어레이의 수의 위치(0)로 부터 취해지고, 제 1 단계에 의해 공급된 ROP의 수와 비교된다. 어떠한 매치도 일어나지 않으며 ROP 수는 1씩 증가하고 불변의 "오프코드 장소" 어레이와 함께 제 3 단계로 공급된다. 제 3 단계에 있어서, "ROP의 수" 데이타는 ROP 어레이의 수의 위치(0)로 부터 취해지고, 제 2 단계에 의해 공급된 ROP의 수와 비교된다. 매치가 일어나고, ROP 수는 00으로 리세트되고 제 4 단계로 공급된다. "오프코드 장소" 어레이는 디스패치 위치가 완전하게 할당된 오프코드를 인식하는 비트를 마스킹함으로써 수정되고, 제 4 단계로 공급된다. 제 4 단계에 있어서, "ROP의 수" 데이타는 ROP 어레이의 수의 위치(3)로 부터 취해지고, 제 3 단계에 의해 공급된 ROP 수와 비교된다. 어떠한 매치도 일어나지 않으며, PARTIALDISP[1:0]은 큐의 다음 헤드에 있을 명령어로 부터 맵된 3개의 ROP 중 한 ROP가 디스패치되었는지를 인식하기 위하여 01로 세트된다.
다음 디스패치 윈도우에 대해 비교하기 위하여, 제 2 명령어는 큐의 헤드로 시프트된다. PARTIALDISP[1:0]는 현재 01 이다. 제 1 단계에 있어서, 제 1 바이트 큐 장소(0)가 오프코드를 포함하기 위하여 다시 일어나기 때문에, "ROP의 수" 데이타는 ROP 어레이의 수의 위치(0)로 부터 취해지고, PARTIALDISP[1:0]에서 유도된ROP 수와 비교된다. 어떠한 매치도 일어나지 않으며, ROP 수는 1씩 증가하고 불변의 "오프코드 장소" 어레이와 함께 제 2 단계로 공급된다. 제 2 단계에 있어서, "ROP의 수" 데이타는 ROP 어레이의 수의 위치(0)로 부터 취해지고, 제 1 단계에 의해 공급된 ROP 수와 비교 된다. 매치가 일어나고, ROP 수는 00으로 리세트되고 제 3 단계로 공급된다. "오프코드 장소" 어레이는 디스패치 위치가 완전하게 할당된 오프코드를 인식하는 비트를 마스킹함으로써 수정되고, 제 3 단계로 공급된다. 제 3 단계에 있어서, "ROP의 수" 데이타는 ROP 어레이의 수의 위치(7)로 부터 취해지고, 제 2 단계에 의해 공급된 ROP 수와 비교된다. 매치가 일어나고, ROP 수는 00 으로 리세트되고 제 4 단계로 공급된다. "오프코드 장소" 어레이는 디스패치 위치가 완전하게 할당된 오프코드를 인식하는 비트를 마스킹함으로써 수정되고, 제 4 단계로 공급된다. 제 4 단계에 있어서, "ROP의 수" 데이타는 ROP 어레이의 수의 위치(10)로 부터 취해지고, 제 3 단계에 의해 공급된 ROP 수와 비교된다. 매치가 일어나며, PARTIALDISP[1:0]은 큐의 다음 헤드에 있을 명령어로 부터 맵된 ROP 중 어느 ROP도 디스패치되지 않는 것을 인식하기 위하여 00로 세트된다.
제 7A 도 내지 제 7D 도는 동일하지 않은 나머지 디스패치 위치에 있는 대응소자를 대표하는, 스캔 논리구조(690)의 몇몇 소자를 더욱 상세히 도시한 도면이다. 도면을 명백하게 나타내기 위해 제 7 도에 도시한 소자중 몇몇 소자를 제 6 도로 부터 생략하였다. 예를 들면, 제 7A 도는 FOG(1), FOG(2) 및, FOG(3)와 대응하는 FOG(0)와 LAG(1), LAG(2) 및, LAG(3)와 대응하는 LAG(0)을 도시한 것이다. 제 7A 도는 또한 PDG(0)를 도시한다. 제 7B 도는 GP(0, 0)를 상세히 도시하여,그룹(GP(0, 1), GP(0, 2) 및, GP(0, 3)에서의 유사한 비트 처리 논리회로와 대응하는, 4개의 비트 처리 논리회로(F7(0, 0). F7(1, 0) F7(2, 0) 및, F7(3, 0))를 도시한다. 제 7B 도는 또한, ROP 수 신호 발생회로(F8(0, 0), F9(0, 0) 및, F10(0, 0)를 도시한다. 제 7C 도는 GP(1, 0)를 상세히 도시하여, 그룹(GP(1, 1), GP(1, 2), GP(1, 3), GP(2, 0), GP(2, 1), GP(2, 2), GP(2, 3), GP(3, 0), GP(3, 1), GP(3, 2) 및, GP(3, 3))에서의 유사한 비트 처리 논리회로와 대응하는, 4 개의 비트 처리 논리회로(F11(4, 0), F11(5, 0) F11(6, 0) 및, F11(7, 0))를 도시한다. 제 7C 도는 또한 ROP 정보 발생회로(F12(1, 0)와 F13(1, 0))를 도시한다. 제 7D 도는 그룹(GP(1, 1))에서의 4개의 비트처리 논리회로(F14(4, 1), F14(5, 1) F14(6, 1) 및, F14(7, 1))를 도시한다. 제 7D 도는 또한 ROP 정보 발생회로(F15(1, 1), F16(1, 1))를 도시한다. 제 7 도의 구조에 있어서, 스캐닝 기능은 4개 비트의 그룹에서의 많은 하위회로(sucircuit)를 그룹지움으로써 디스패치 위치 각각에 대하여 가속된다. 예견 능력 하위회로는 디스패치 위치를 위하여 더 높은 순서의 그룹으로 입력을 제공한다.
디스패치 위치(0)에 필요한 스캔 논리회로(690)의 연산은 다음과 같이 제 7A 도, 제 7B 도, 제 7C 도 및, 제 7D 도에 도시한 실시예의 경우와 같다. 제 7A 도를 참고하라. PDG(0)는 큐의 헤드에 있는 사전-복호화 x 86 명령어를 위하여 디스패치되어질 다음 ROP의 수를 나타내는 이진 양(PDISP1, PDISP0)을 발생하는 소자(F1, F2)를 발생한다. 제 8 도 및 제 9 도에 도시한 소자(F1, F2)의 실시예에 있어서, 양(PDISP1, PDISP0)은 제 1 단계에서의 4 개 그룹(GP(0, 0), GP(1, 0), GP(2, 0)및, GP(3, 0)) 각각에 제공된다. BYTEQP2 어레이에서 나온 4 개의 비트의 그룹 각각의 경우, FOG(0)는 그룹의 가정된 제 1 비트를 인식한다. FOG(0)는 소자(F3, F4)를 포함하며, 그 실시예는 제 10 도 제 11 도 및 제 12 도에 각각 도시하였다. 각각의 지시는 단계(0)에서의 4 개 그룹(GP(0, 0), GP(1, 0), GP(2, 0) 및, GP(3, 0))의 각각에 제공된다. BYTEQP2 어레이에서 나온 제 1 그룹 이외에 4개의 비트의 그룹 각각의 경우, LAG(0)는 가정된 제 1 비트가 그룹을 선행하는 어떤 그룹에서 나타나는지의 여부를 지시하는 지시를 제공한다. LAG(0)는 소자(F5, F6)를 포함하며, 이 실시예는 제 13 도와 제 14 도에 각각 도시되어있다. 소자(F6)는 바이트 큐 SE 스캔논리(5200)(제 52 도)와 같은, ROPMUX 에서의 다른 회로에서 나온 신호(ASKMROM[0])를 수신한다. ASKMROM[0]는 메모리 ROM 지시가 큐의 헤드에 있는지를 나타낸다. 가정된 제 1 비트가 그룹에 선행하는 어떤 그룹에 나타나는지에 대한 각각의 지시어는 단계(0)에 있는 3개 그룹(GP(1, 0), GP(2, 0) 및, GP(3, 0)) 각각에 제공된다.
제 7B 도는 그룹(GP(0, 0))에 필요한 비트 처리 논리회로(F7(0, 0), F7(1, 0), F7(2, 0) 및, F7(3, 0)을 도시한 도면이다. 출력(ISEL0[x])이외에, 소자(F7)는 출력(XN1[x])을 가지며, 신호(BYTEQP2[x])는 역전된 상태에 있는 소자(F7)를 통과하거나 또는 마스크된다. BYTEQP2[x]가 비트그룹에서 가정된 제 1 비트인지를 나타내기 위하여 그 XSEL0[x] 입력이 가정되지 않으면, 소자(F7)는 또한 양(D1N1, D0N1)에 필요한 00과 같은 기본값(default value)을 제공한다. 이 경우, 다음의 2가지 조건중 한 조건이 일어날 수 있다. 그 조건은 (a) 디스패치 위치가 할당되는ROP는 시퀀스에 있는 마지막 ROP가 아니다 또는, (b) 디스패치 위치가 할당되는 ROP는 시퀀스에 있는 마지막 ROP 이다. "(a)" 의 경우에 있어서, 소자(F7)는 그 ISEL0[x] 출력을 가정하고, 양(PDISP1[x], PDISP0[x])를 1 씩 증가하여 양(D1N1, D0N1)과 같이 다음 단계에 결과를 제공하고, 역전상태에 있는 비트(BYTEQP2[x])를 통과한다. "(b)"의 경우에 있어서, 소자(F7)는 그 ISEL0[x] 출력을 가정하고, 양(PDISP1[x], PDISP0[x]를 0으로 리세트하여 양(D1N1, D0N1)과 같이 다음 단계에 결과를 제공하여, 비트(BYTEQP2[x])를 출력(XN1[x])에서 마스크한다.
신호(D1N1, D0N1)는 신호(XDSP0[x], XDSP0[x+16] 와 같이 소자(F8, F9)에 각각 제공된다. 조합시, 소자(F8, F9)는 신호(P1FF0[0], P0FF0[0])를 발생한다. 신호는 사실상 어레이(BTEQP2)의 가정된 제 1비트가 그룹(GP(0, 0))에서 일어나고, 디스패치 위치에 있는 ROP가 ROP 시퀀스에 있는 마지막 ROP가 아닌 경우 1 씩 증가되는 값(PARTIALDISP[1, 0])을 나타낸다. 그렇지 않으면, 신호(P1FF0[0], P0FF0[0])는 기본값을 가진다.
단계(0)의 그룹 모두에서 나온 신호(P1FF0, P0FF0)는 소자(F10)에서 결합된다. 이러한 신호는 모두 어레이(BYTEQP2)의 가정된 제 1 비트가 단계(0)에서 일어나는 경우를 제외하곤 기본값을 가질 것이다. 이 경우, 한쌍의 신호(P1FF0, P0FF0)는 수정되어진 값(PARTIALDISP[1:0]을 나타내고, 이 값은 양(ROP0DIFF[1:0], FOP1DIFF[1:0])과 신호(PGNXT[0])를 유도하는데 사용된다.
제 7C 도는 그룹(GP(1, 0))에 필요한 비트 처리 논리회로(F11(4, 0), F11(5, 0), F11(6, 0) 및, F11(7, 0))를 도시한 도면이다. 소자(F11)는 소자(F7)의XSEL0[x] 입력과 대응하는, 그 입력(SEL0[x])의 효과를 제외하고 소자(F7)와 유사하다. SEL0[x]는 BYTEQP2[x]가 비트그룹에서의 가정된 제 1 비트인지를 나타내기 위하여 가정된다. 그러나, 입력(P0[x])은 어레이(BYTEQP2)의 가정된 제 1 비트가 단계(0)의 선행 비트에 있는지를 나타내기 위하여 가정되지 않으면, P0[x]는 SEL0[x]를 차단한다.
신호(D1N1, D0N1)는 신호(XDSP0[x], XDSP0[x+16])와 같이 소자(F12, F13)에 각각 공급된다. 조합시, 소자(F12, F13)는 신호(P1FF0[0], P0FF0[0])를 발생한다. 신호는 사실상 어레이(BTEQP2)의 가정된 제 1 비트가 그룹(GP(1, 0))에서 일어나고, 디스패치 위치에 있는 ROP가 ROP 시퀀스에 있는 마지막 ROP가 아닌 경우 1 씩 증가되는 값(PARTIALDISP[1, 0])을 나타낸다. 그렇지 않으면, 신호(PIFF0[0], P0FF0[0])는 기본값을 가진다. 소자(F12, F13)에서 나온 신호(PIFF0[0], P0FF0[0])는 소자(F10)를 향한다.
제 7D 도는 그룹(GF(1, 1))에 필요한 비트 처리 논리회로(F14(4, 1), F14(5, 1), F14(6, 1) 및, F14(7, 1))를 도시한 도면이다. 소자(F14)는 입력파 출력신호 명칭이 서로 상이하더라도, 본질적으로는 소자(F11)와 일치한다.
신호(D1N2, D0N2)는 역전되어 신호(XDSP1[x], XDSP1[x+16])와 같이 소자(F15, F15)에 각각 제공된다. 소자(F15, F16)는 입력과 출력신호 명칭이 서로 상이하더라도, 본질적으로는 소자(F12, F13)와 일치한다.
스캔 논리구조(690)에서의 소자의 실시예를 제 8 도 내지 제 51 도에 도시하였다. 제 8 도 내지 제 51 도에 있는 몇몇 게이트는 빠른 트랜지스터에 연결되어야하는 입력을 나타내기 위하여 점으로 표시된 한 입력을 가진다. 제 8 도 내지 제 51 도에 있는 나머지 게이트는 통과 게이트가 논리기능을 실행하는데 사용되는지를 나타내기 위하여 "CK"로 표시되는 하나의 입력을 가진다. 제 1 디스패치 위치에 필요한 단계(0)를 제 8 도 내지 제 21 도에 도시하였다. PDG는 제 8 도(F1)와 제 9 도(F2)에 도시하였고, FOG(0)는 제 10 도(F3), 제 11 도(F4A) 및, 제 12 도(F4B)에 도시하였으며, LAG(0)는 제 13 도(F5)와 제 14 도(F6)에 도시하였고, 그룹(GP(0, 0))은 제 15 도(F7), 제 16 도(F8) 및, 제 17 도(F9)에 도시하였고, 그룹(GP(1, 0), GP(2, 0) 및, GP(3, 0))은 제 19 도(F11), 제 20 도(F12) 및, 제 21 도(F13)에 도시하였다. 단계(0)의 ROP 수 신호 발생논리(RNG(0))는 제 18 도(F10)에 도시하였다. 제 2 디스패치 위치에 필요한 단계(1)를 제 22 도 내지 제 31 도에 도시하였다. FOG(1)는 제 22 도와 제 23 도에 도시하였고, LAG(1)는 제 24 도에 도시하였고, 그룹(GP(0, 1))은 제 25 도, 제 26 도 및, 제 27 도에 도시하였고, 그룹(GF(1, 1), GP(2, 1) 및, GP(3, 1))은 제 29 도, 제 30 도 및, 제 31 도에 도시하였다. 단계(1)의 ROP 수 신호 발생논리(RNG(1))는 제 28 도에 도시하였다. 제 3 디스패치 위치에 필요한 단계(2)를 제 32 도 내지 제 41 도에 도시하였다. FOG(2)는 제 32 도와 제 33 도에 도시하였고, LAG(2)는 제 34 도에 도시하였고, 그룹(GP(0, 2))은 제 35 도, 제 36 도 및, 제 37 도에 도시하였고, 그룹(GP(1, 2), GP(2, 2) 및, GP(3, 2))은 제 39 도, 제 40 도 및, 제 41 도에 도시하였다. 단계(2)의 ROP 수 신호 발생논리(RNG(2))는 제 38 도에 도시하였다. 제 4 디스패치 위치에 필요한 단계(3)를 제 42 도 내지 제 51 도에 도시하였다. FOG(3)는 제 42 도와 제 43 도에도시하였고, LAG(3)는 제 44 도에 도시하였고, 그룹(GP(0, 3))은 제 45 도, 제 46 도 및, 제 47 도에 도시하였고, 그룹(GP(1, 3), GP(2, 3) 및, GP(3, 3))은 제 49 도, 제 50 도 및, 제 51 도에 도시하였다. 단계(3)의 ROP 수 신호 발생논리(RNG(3))는 제 48 도에 도시하였다.
제 8 도 내지 제 51 도의 많은 게이트레벨 회로는 그룹(GP(0, 0), GP(1, 0) 및, GP(1, 1))에 포함된 나머지 회로와 유사한 회로구조를 포함하거나, 이러한 나머지 회로의 간단해진 변형이다. 따라서, 회로 연산의 후속하는 설명은 그룹(GP(0, 0), GP(1, 0), 및, GP(1, 1))에 포함된 회로로 촛점을 맞춘 것이므로, 불필요하게 긴 문장을 피하게 되었다. 제 8 도 내지 제 51 도에 도시한 나머지 회로의 연산은 도면과 후속하는 설명으로 부터 더욱 쉽게 명백해진다.
소자(F1)에 필요한 논리회로의 실시예를 제 8 도에 도시하였다. 신호(PARTIALDISP[1])는 인버터(802, 804)에 의해 버퍼되어 PDISP1[0]을 발생하고, 인버터(802, 806)에 의해 버퍼되어 PDISP1[1]을 발생하고, 인버터(802, 808)에 의해 버퍼되어 PDISP1[2]을 발생하고, 인버터(802, 810)에 의해 버퍼되어 PDISP1[3]을 발생하고, 인버터(802, 812)에 의해 버퍼되어 ROP0NUM[1]을 발생한다.
소자(F2)에 필요한 논리회로의 실시예를 제 9 도에 도시하였다. 신호(PARTIALDISP[0])는 인버터(902, 904)에 의해 버퍼되어 PDISP0[0]을 발생하고, 인버터(902, 906)에 의해 버퍼되어 PDISP0[1]을 발생하고 인버터(902, 908)에 의해 버퍼되어 PDISP0[2]을 발생하고, 인버터(902, 910)에 의해 버퍼되어 PDISP0[3]을 발생하고, 인버터(902, 912)에 의해 버퍼되어 ROP0NUM[0]을 발생한다.
소자(F3)에 필요한 논리회로의 실시예를 제 10 도에 도시하였다. 어레이(BYTEQP2[15:0]는 16개의 인버터 세트에 의해 역전되어 어레이(XIN[15:0]를 발생한다.
소자(F4)에 필요한 논리회로의 실시예를 제 11 도와 제 12 도에 도시하였다. 제 11 도에 도시한 바와 같이, 비트(XIN[0])는 2개의 직렬 연결 인버터를 포함하는 게이트 그룹(1102)으로 버퍼되어, 신호(XSEL0[0])를 발생한다. XSEL0[0]는 본질적으로 역전된 버전의 BYTEQP2[0]이다. 비트(XIN[1:0])는 인버터와 XIN[0]를 통해 직접 XIN[1]을 수신하는 NAND 게이트를 포함하는 게이트 그룹(1104)에 인가되어 신호(XSEL0[1])를 발생한다. 신호(XSEL0[1])가 본질적으로 역전된 버전의 BYTEQP2[1]이기 때문에, 제공된 XIN[0]은 가정되지 않으며(논리 1), 만약 그렇지 않다면, 논리 1 이다. 비트(XIN[2:0])는 인버터와 XIN[1:0]를 통해 직접 XIN[2]을 수신하는 NAND 게이트를 포함하는 게이트 그룹(1106)에 인가되어 신호(XSEL0[2])를 발생한다. 신호(XSEL0[2])가 본질적으로 역전된 버전의 BYTEQP2[2]이기 때문에, 제공된 XIN[1]과 XIN[0]은 가정되지 않으며(논리 1), 만약 그렇지 않다면, 논리 1이다. 비트(XIN[3:0])는 인버터와 XIN[2:0]를 통해 직접 XIN[3]을 수신하는 NAND 게이트를 포함하는 게이트 그룹(1108)에 인가되어 신호(XSEL0[3])를 발생한다. 신호(XSEL0[3])가 본질적으로 역전된 버전의 BYTEQP2[3]이기 때문에, 제공된 XIN[2], XIN[1] 및, XIN[0]은 가정되지 않으며(논리 1), 만약 그렇지 않다면, 논리 1 이다.
제 12 도는 비트그룹(XIN[7:4], XIN[11:8] 및, XIN[15:12])를 위한 기능(F4)을 도시한 도면이다. 기능(F4)은 예를 들어, 비트그룹(XIN[7:4])에 인가된 바와 같다고 간주한다. 비트(XIN[4])는 단일 인버터를 포함하는 게이트 그룹(1202)에 의해 버퍼되어 신호(SEL0[4])를 발생한다. SEL0[4]는 본질적으로 BYTEQP2[4]이다. 비트(XIN[5:4])는 인버터와 XIN[4]를 통해 직접 XIN[5]를 수신하는 NAND 게이트를 포함하는 게이트 그룹(1204)에 인가되어 인버터에 의해 후속하여 신호(SEL0[5])를 발생한다. 신호(SEL0[5])는 본질적으로 BYTEQP2[5]이고, 제공된 XIN[4]는 않으며(논리 1), 만약 그렇지 않다면, 논리 0이다. 비트(XIN[6:4])는 인버터와 XIN[5:4]를 통해 직접 XIN[6]를 수신하는 NAND 게이트를 포함하는 게이트 그룹(1206)에 인가되어 신호(SEL0[6])를 발생한다. 신호(SEL0[6])는 본질적으로 역전된 버전의 BYTEQP2[6]이고, 제공된 XIN[5]과 XIN[4]은 가정되지 않으며(논리 1), 만약 그렇지 않다면, 논리 0이다. 비트(XIN[7:4])는 인버터와 XIN[6:4]를 통해 직접 XIN[7]를 수신하는 NAND 게이트를 포함하는 게이트 그룹(1208)에 인가되어 신호(SEL0[7])를 발생한다. 신호 (SEL0[7])는 본질적으로 역전된 버전의 BYTEQP2[7]이고, 제공된 XIN[6]과 XIN[5]은 가정되지 않으며(논리 1), 만약 그렇지 않다면, 논리 0 이다.
소자(F5)에 필요한 논리회로의 일실시예를 제 13 도에 도시하였다. 비트(BYTEQP2[3:0]는 인버터(1303)가 후속하는 NOR 게이트(1302)에 의해 논리합되고, 비트(BYTEQP2[7:4])는 인버터(1305)가 후속하는 NOR 게이트(1304)에 의해 논리합되고, 비트(BYTEQP2[11:8])는 인버터(1307)가 후속하는 NOR 게이트(1306)에 의해 논리합되고, 비트(BYTEQP2[15:12])는 인버터(1309)가 후속하는 NOR 게이트(1308)에 의해 논리합된다.
소자(F6)에 필요한 논리회로의 일실시예를 제 14 도에 도시하였다. 그룹(GP(1, 0))에 필요한 예견 능력신호(P0[1])는 게이트 그룹(1402)에서 역전된 신호(BQP2OR[0])이다. 그룹(GP(2, 0))에 필요한 예견 능력 신호(P0[2])는 게이트 그룹(1404)에 있는 NOR(BQP2OR[1], BQP2OR[0])이다. 그룹(GP(3, 0))에 필요한 예견 능력신호(P0[3])는 게이트 그룹(1406)에 있는 NOR(BQP2OR[2], BQP2OR[1], BQP2OR[0])이다. 예견 능력신호(P0[4])는 게이트 그룹(1408)에 있는 INV(NAND(INV(BQP2OR[3], P0[3]))이다. FASTVAL[0]는 게이트 그룹(1410)에 있는 2개의 인버터에 의해 버퍼된다.
소자(F7)에 필요한 논리회로의 일실시예를 제 15 도와 제 19 도에 각각 도시하였다. F7에 있는 ISEL0[I] 는 인버터(1506)를 통해 XSEL0[I]에서 직접 유도되고, F11에 있는 ISEL0[4*J+I]는 NAND 게이트(1904)와 인버터(1906)를 통해 SEL0[4*J+I]와 P0[J]에서 유도된다. BYTQ(106)에 있는 가정된 오프코드 비트의 제 1 발생 위치는 ISEL0 어레이에 있는 논리 1의 위치에 의해 표시된다. F7에 있는 신호(XSEL0[I])와 F11에 있는 NAND 게이트(1904)의 출력은 또한 게이트 그룹(1502, 1902), 게이트 그룹(1512, 1912) 및, 게이트 그룹(1518, 1918)에 각각 인가된다.
OR-NAND 게이트(1502, 1902)에 각각 인가된 바와 같이, F7에 있는 신호(XSEL0[I])와 F11 에 있는 NAND 게이트(1904)는 어레이(BYTEQP2)를 마스크하는데 사용되어 BYTEQP1[x], BYTEQP0[x] 이 PDISP1[x], PDISP0[x]와 같으면 비트위치(x)로 부터 가정된 오프코드 비트의 제 1 발생을 제거한다. 디스패치 위치가 시퀀스에 있는 마지막 ROP로 할당되는 것을 인식하는, 이러한 조건은 게이트 그룹(1500, 1900)에 의해 검색된다. 마스크된 어레이는 오프코드 장소 어레이(XN1)와 같이 다음 단계(610)에 제공된다.
게이트 그룹(1512, 1912)에 각각 인가된 바와 같이, F7에 있는 신호(XSEL0[I])와 F11에 있는 NAND 게이트(1904)는 게이트 그룹(1508, 1908)을 인에이블하는데 사용된다. 여기서, 신호(D0N1)는 유도되어 다음 단계에 제공된다. 게이트 그룹(1518, 1918)에 각각 인가된 바와 같이, F7에 있는 신호(XSEL0[I])와 F11에 있는 NAND 게이트(1904)는 게이트 그룹(1516, 1916)을 인에이블하는데 사용된다. 여기서 신호(D1N1)는 유도되어 다음 단계에 제공된다. 사실상, F7의 게이트 그룹(1508, 1516)과, F11 의 게이트 그룹(1908, 1916)은 BYTEQP1[x], BYTEQP0[x] 및, PDISP1[x], PDISP0[x]이 동일하지 않다면 1 씩 PDISP1[x], PDISP0[x]을 증가한다. 이 경우에 있어서, D1N1[x], D0N1[x]는 00이 된다.
소자(F7, F11)는 마스크되는 어떠한 비트를 제외한 XN1과 같이 어레이(BYTEQP2)를 따라 통과하고 NBQP1과 NBQP0와 같이 어레이(BYTEQP1, BYTQP0)를 따라 통과한다.
단계(0)에 필요한 ROP 수 신호(ROP0DIFF[1:0], PGNXT[0])와 단계(1)에 필요한 ROP 수 신호(ROP1NUM[1:0])는 제 16 도, 제 17 도, 제 18 도, 제 20 도 및 제 21 도에 각각 도시한 소자(F8, F9, F10, F12 및, T13)에 의해 구해진다. 소자(F8, F9, F12 및, F13)는 인버터가 후속하는 NAND 게이트를 사용하는 4-비트 AND 연산을 한다. 소자(F8)는 비트(XDISP[3:0]에서 연산한다. 소자(F9)는 비트(XDISP[19:16])에서 연산한다. 소자(F20)는 소자(XDISP[7:4], XDISP[11:8] 및, XDISP[15:12])에서연산한다. 소자(F21)는 소자(XDISP[23:20], XDISP[27:24] 및, XDISP[31:28])에서 연산한다. 소자(F8, F9, F20 및, F21)의 출력(P1FF0[3:0], P0FF0[3:0])은 소자(F10)에 인가된다. P1FF0[3:0]은 NAND 게이트(1802)에 인가되고, 그 출력은 인버퍼(1804, 1806)에 의해 버퍼되어 비트(ROP0DIFF[1])를 발생하고, 인버터(1804, 1808)에 의해 버퍼되어 비트(ROP1NUM[1])를 발생한다. P0FF0[3:0]은 NAND 게이트(1814)에 인가되고, 그 출력은 인버터(1816, 1818)에 의해 버퍼되어 비트(ROP0DIFF[0])를 발생하고, 인버터(1816, 1820)에 의해 버퍼되어 비트(ROP1NUM[0])를 발생한다. NAND 게이트(1802, 1804)의 출력은 또한 NOR 게이트(1810)에 인가되고, 그 출력은 인버터(1812)에 의해 인버터되어 신호(PGNXT[0])와 같이 제공된다.
빠른 바이트 큐 스캔 논리구조(690)의 구조는 다른 신속한 스캐닝 분야에도 적절하다. 예를 들면, 제 52 도는 시작 및 끝 비트어레이(BYTEQS, BYTEQE)는 물론 오프코드 및 로프 수 어레이(BYTEQP2, BYTEQP1 및, BYTEQP0)를 처리하는 ROPMUX(400)에서 사용하기에 적절하다. 바이트큐 스캐너(5200)에 있어서, 스캔논리(690)는 시작 및 끝 비트어레이(BYTEQS, BYTEQE)를 처리하는 제 2 스캔논리(5210)과 조합하여 4 개 소자의 출력어레이(ESEL0[15:0], ESELL1[15:0], ESEL2[15:0] 및, ESEL3[15:0])를 생성한다. 소자 각각은 대응하는 디스패치 위치가 할당된 ROP를 위하여 맵된 ROP로부터 x 86 명령어의 단부비트의 장소를 인식한다. BYTEQ(106)에 있는 4개의 제 l 명령어에 필요한 단부비트의 장소를 각각 인식하는 4개 소자의 작업어레이를 우선 발생함으로써 인식이 수행된다. 에러 검색이 또한수행되는 바, 예를 들어, 각각의 시작비트(어레이 (BYTEQS)에 있는 제 1 비트로 가정되는 첫번째를 제외한)가 단부비트에 의해 바로 선행되는 것을 보장하기 위하여 검사가 수행된다. 그런 다음, 상술한 바와 같이, 스캔논리(690)에서 나오고 디스패치 위치("x")에 있는 ROP가 대응하는 x 86 명령어로 부터 맵된 ROP시퀀스에 있는 마지막 ROP 인지의 여부를 나타내는 신호(PGNXT[3:0])는 멀티플렉서 제어신호와 같이 사용되어, 큐의 헤드에 있는 명령어에 할당된 디스패치 위치가 있는 것과 같이 작업어레이의 제 1 소자를 같은 수의 출력 어레이의 소자에 향하게 하고, BYTEQ(106)에 있는 다음 명령어에 할당된 디스패치 위치가 있는 것과 같이 작업어레이의 다음 소자를 같은 수의 출력어레이의 이용 가능한 소자에 향하게 한다.
스캔논리(5210)는 제 2, 제 3 및, 제 4 단계의 제 6A 도와 제 6B 도의 구조에서 사용된 것과 유사한 그룹화 및 예견 능력 기술을 사용한다. 제 1 단계는 시작비트가 큐의 헤드에 있는 비트위치에 있다고 가정하기때문에 이러한 방식으로 처리될 필요는 없다. 스캐너(5210)에서의 제 2, 제 3 및 제 4 단계의 경우, 일반적으로 제 1 오프코드 인식화 신호 발생논리(FOG)와 유사한 논리는 어레이(BYTEQE)로 부터 4개 비트의 그룹 각각에서의 제 1 발생 단부비트를 인식하는데 사용된다. 예견 능력신호 논리(LAG)와 유사한 논리는 단계에 있는 어떠한 선행 그룹이 제 1 발생 단부비트를 포함하는지의 여부를 결정하는데 사용된다. 각각의 단계는 스캔논리(690)에서와 같이, 4개의 그룹을 포함한다.
메모리 ROM 명령어의 존재는 BYTEQP1, BYTEQP0를 모니터함으로써 제 1 단계에서 검색된다. 메모리 ROM 명령어가 검색된다면, 신호(ASKMROM[0])는 가정되고 스캔논리(690)에 인가된다.
본 발명은 여러 실시예를 참고로 하여 공지되며, 이런한 실시예는 예시를 위한 것이며, 본 발명의 범위가 이에 한정되지 않는다는 것을 알 수 있다. 공지된 본 실시예의 변형, 수정, 첨가 및 개선이 가능하다. 단계의 수와 각 단계내에 그룹의 수는 변경할 수 있다. 더욱이, 본 발명은 BYTEQ(106)이외에 스캔 큐에 사용될 수 있다. 상기 및 그 밖에 변형, 수정, 첨가 및 개선은 후속하는 청구 범위에 정의한 바와 같이, 본 발명의 범위내에 있다.
제 1 도는 CISC 명령어(instruction) 세트의 수퍼스칼라 (superscalar) 실행을 성취하는 프로세서의 구조(architecture)적인 블록도.
제 2 도는 제 1 도에 따른 프로세서의 바이트큐(queue)에 저장하기에 적합한 사전-복호화 x 86 명령어를 도시한 도면.
제 3 도는 제 2 도에 따른 사전-복호화 x 86 명령어의 소자를 도시한 도면.
제 4 도는 제 1 도에 따른 명령어 디코더의 구조적인 블록도.
제 5A 도, 제 5B 도 및 제 5C 도는 제 4 도의 ROP 멀티플렉서에 의해 실행되는 방법을 도시한 순서도.
제 6A 도와 제 6B 도는 제 4 도의 ROP 멀티플렉서의 바이트 큐 ROP 선택 스캐닝논리의 구조적인 블록도의 일부 도면.
제 7A 도, 제 7B 도 제 7C 도 및 제 7D 도는 제 6A 도와 제 6B 도의 바이트 큐 ROP 선택 스캐닝논리의 특정 소자를 더욱 상세히 도시한 블록도의 일부 도면.
제 8 도 내지 제 51 도는 제 6A 도와 제 6B 도의 바이트 큐 ROP 선택 스캐닝논리의 일실시예에 대한 게이트-레벨 개략도.
제 52 도는 제 4 도에 따른 ROP 멀티플렉서의 바이트 큐 ROP 선택 스캐닝논리와 바이트 큐 SE 스캐닝논리사이에 관계를 도시한 블록도.
** 도면의 주요부분에 대한 부호의 설명 **
100 : CISC 프로세서 104 : 명령어 캐시
106 : 바이트 큐 108 : 명령어 디코더
110 : RISC 수퍼스칼라 코어 400 : ROP 멀티플렉서
690 : 스캔논리
712, 722, 732, 742 : 논리기본 변환경로
714, 724, 734, 744 : 공통 변환경로
716, 726, 736, 746 : 메모리기본 변환경로
Claims (24)
- 다수의 디스패치 위치를 가지는 수퍼스칼라 프로세서의 명령어큐를 스캐닝하는 장치로서, 상기 명령어 큐는 맵된 명령어로 맵하는 명령어를 포함하며, 상기 명령어는 각각의 인식화 소자에 의해 인식된 장소에 오프코드를 포함하고, 상기 장치는상기 수퍼스칼라 프로세서의 제 1 디스패치 위치에 필요하고, 입력이 상기 인식화 소자에 연결된 다수 그룹의 마스킹 논리, 입력이 상기 인식화 소자에 연결되고 출력이 본 단계의 상기 마스킹 논리 그룹중 더 높은 순서의 마스킹 논리그룹에 연결된 예견 능력 발생기 및, 본 단계의 상기 마스킹 논리그룹의 출력에 연결된 맵된 명령어 정보 발생기를 포함하는 제 1 단계 및,상기 수퍼스칼라 프로세서의 제 2 디스패치 위치에 필요하고, 입력이 상기 제 1 단계에서의 대응하는 마스킹 논리그룹의 출력에 연결된 다수 그룹의 마스킹 논리 및, 입력이 상기 맵된 명령어 정보 발생기의 출력과 상기 제 1 단계에서의 마스킹 논리그룹의 출력에 연결되고 출력이 본 단계의 상기 마스킹 논리그룹중 더 높은 순서의 마스킹 논리그룹에 연결된 예견 능력 발생기를 포함하는 제 2 단계로 이루어지는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 1 항에 있어서, 상기 제 2 단계는 상기 제 2 단계의 상기 마스킹 논리그룹의 출력에 연결된 맵된 명령어 정보 발생기를 포함하며, 상기 장치는 상기 수퍼스칼라 프로세서의 제 3 디스패치 위치에 필요한 제 3 단계를 포함하고, 상기 제 3 단계는 입력이 상기 제 2 단계에서의 대응하는 비트 마스킹 논리그룹의 출력에 연결된 다수 그룹의 마스킹 논리 및, 입력이 상기 ROP 정보 발생기의 출력과 상기 제 2 단계에서의 상기 마스킹 논리그룹의 출력에 연결되고, 출력이 상기 제 3 단계의 상기 마스킹 논리그룹중 더 높은 순서의 마스킹 논리그룹에 연결된 예견 능력 발생기를 포함하는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 1 항에 있어서, 상기 명령어 큐에 있는 상기 명령어는 x 86 명령어이며, 상기 맵된 명령어는 RISC - 형 연산("ROPs")이고, 상기 맵된 명령어 정보는 디스패치되어질 남아있는 다음의 맵된 ROP의 수를 나타내는 이진 신호로 이루어지는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 3 항에 있어서, 상기 단계내에 있는 ROP는 대응하는 x 86 명령어로 부터 맵된 ROP 시퀀스에 있는 마지막 ROP 인지의 여부를 나타내는 신호를 포함하는 것을 특징으로 하는 명령어 큐 스캐닝장치.
- 다수의 디스패치 위치를 가지는 수퍼스칼라 프로세서의 명령어 큐에 있는 원시 명령어를 스캐닝하는 장치로서, 원시 명령어 각각은 오프코드와 명령어 큐내에 오프코드의 장소를 인식하는 오프코드 인식기를 포함하고, 하나 또는 그 이상의 2차 명령어의 수로 맵하며, 상기 장치는 상기 원시 명령어에 할당된 디스패치 위치에 대응하는 다수의 단계를 가지며, 단계 각각은,오프코드 인식기를 수신하는 입력과, 제 1 출력을 가지는 예견 능력 신호발생기 논리,각각, 오프코드 인식기, 디스패치 위치가 가장 최근에 할당된 상기 ROP의 수 및 원시명령어가 맵하는 ROPs의 수를 수신하는 입력과,마스크된/비마스크된 오프코드 인식기, 디스패치 위치가 가장 최근에 할당된 증가된 버전의 상기 ROP의 수 및, 원시 명령어가 맵하는 ROP의 수를 공급하는 출력을 가지는 오프코드 인식기 마스킹 회로의 제 1 그룹 및,각각, 오프코드 인식기, 디스패치 위치가 가장 최근에 할당된 상기 ROP의 수 및, 원시 명령어가 맵하는 ROP의 수를 수신하고, 입력이 상기 예견 능력 신호발생기 논리의 상기 제 1 출력에 연결된 입력과,마스크된/비마스크된 오프코드 인식기, 디스패치 위치가 가장 최근에 할당된 증가된 버전의 상기 ROP의 수 및, 원시 명령어가 맵하는 ROP의 수를 공급하는 출력을 가지는 오프코드 인식기 마스킹 및 차단회로의 제 2 그룹으로 이루어지는 것을 특징으로 하는 원시 명령어 스캐닝 장치.
- 제 5 항에 있어서, 상기 예견 능력 신호발생 논리는 제 2 출력을 포함하며, 상기 장치는각각, 오프코드 인식기, 디스패치 위치가 가장 최근에 할당된 상기 ROP 의 수 및, 원시 명령어가 맵하는 ROP의 수를 수신하고, 입력이 상기 예견 능력 신호발생기 논리의 상기 제 2 출력에 연결된 입력과,마스크된/비마스크된 오프코드 인식기, 디스패치 위치가 가장 최근에 할당된 증가된 버전의 상기 ROP의 수 및, 원시 명령어가 맵하는 ROP의 수를 공급하는 출력을 가지는 오프코드 인식기 마스킹 및 차단회로의 제 3 그룹을 포함하는 것을 특징으로 하는 원시 명령어 스캐닝 장치.
- 다수의 디스패치 위치를 가지는 수직스칼라 프로세서의 명령어 큐에 있는 명령어를 스캐닝하는 장치로서, 명령어 각각은 오프코드와 명령어 큐내에 상기 오프코드의 장소를 인식하는 오프코드 인식기를 포함하고, 하나 또는 그 이상의 RISC -형 연산(ROPs)으로 맵하며, 상기 장치는명령어 각각이 맵하는 ROPs의 수와 이용가능한 디스패치 위치의 수에 좌우되는 명령어에 디스패치 위치를 할당하는 할당수단 및,상기 디스패치 위치가 상기 할당수단에 할당된 명령어에 필요한 명령어 큐에 있는 오프코드의 각각의 디스패치 위치 장소에 대하여 인식하고 보고하는 디스패치 위치에 개별적으로 대응하는 다수의 단계로 이루어지며,여기서, 단계 각각은 오프코드 인식기의 입력 어레이와 오프코드 인식기의 출력 어레이를 가지며, 또한,상기 입력 어레이에 있는 상기 제 1 오프코드의 장소를 인식하는 인식수단 및,상기 입력 어레이에서 상기 출력 어레이로 어레이를 전파하는 전파수단을 포함하며, 상기 전파 어레이는 상기 대응하는 디스패치 위치가 특정 명령에 대하여 마지막으로 할당된 디스패치 위치인 경우 마스크되는 상기 인식수단에서 인식된 장소를 가지고,상기 단계는 상기 명령어 큐에 있는 상기 오프코드인 식에 연결된 상기 입력어레이를 가지는 상기 단계중 선행 단계와 함께 서로 직렬로 연결되고, 상기 나머지 단계 각각은 바로 선행하는 단계의 상기 출력 어레이에 연결된 상기 입력 어레이를 가지며,여기서, 단계 각각은 오프코드 인식기 처리논리의 다수 그룹으로 분할되고 상기 단계내에 전파 딜레이를 감소시키는 상기 단계중 더 높은 순서의 그룹에 입력을 제공하는 예견 능력 수단을 포함하는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 7 항에 있어서, 상기 할당수단은 상기 단계를 통해 분산되는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 7 항에 있어서, 상기 명령어 큐는 상기 큐의 헤드에 완전 사전-복호화 x 86 명령어를 포함하는, 다수의 완전한 사전-복호화 x 86 명령어를 포함하는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 7 항에 있어서, 각각의 명령어가 맵하는 상기 ROPs는 배열된 시퀀스에 있으며 상기 배열된 시퀀스내에 각각의 수를 가지고, 상기 단계 각각은,디스패치 위치가 가장 최근에 할당된 ROP의 수에 속하는 출력 어레이 및,상기 관련 x 86 명령어가 맵하는 ROPs의 수에 속하는 출력어레이를 포함하며,상기 단계 각각은,상기 단계의 상기 그룹에 대하여 개별적으로 제 1 오프코드 인식화 신호 및 예견 능력 신호를 발생하는 바로 선행하는 단계의 상기 오프코드 인식기의 출력 어레이에 연결되는 연결수단 및,디스패치 위치가 가장 최근에 할당된 상기 ROP의 수와 상기 관련 x 86 명령어가 맵하는 상기 ROPs의 수가 동일한 경우 상기 바로 선행하는 단계의 상기 오프코드 인식기의 출력 어레이를 마스크하기 위하여, 디스패치 위치가 가장 최근에 할당된 상기 ROP의 수에 속하는 상기 바로 선행하는 단계의 상기 출력 어레이에 연결되고, 관련 x 86 명령어가 맵하는 상기 ROPs의 수에 속하는 상기 바로 선행하는 단계의 상기 출력 어레이에 연결되는 연결수단을 포함하는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 제 10 항에 있어서, 상기 단계 각각은 상기 다음 디스패치 위치가 할당되어질 상기 ROP의 상기 ROP의 수를 인식하는 제 3 출력을 포함하는 것을 특징으로 하는 명령어 큐 스캐닝 장치.
- 다수의 디스패치 위치를 가지는 수퍼스칼라 프로세서의 명령어 큐에 있는 사전-복호화 x 86 명령어를 스캐닝하는 장치로서, 명령어 각각은 상기 명령어 큐내에 있는 오프코드와 상기 오프코드의 장소를 인식하는 오프코드 인식기 비트를 포함하고, 하나 또는 그 이상의 RISC - 형 연산("ROPs")의 수로 맵하며, 상기 장치는 제 1 단계과 제 2 단계로 이루어지고, 여기서, 상기 제 1 단계는,입력이 상기 명령어 큐의 상기 오프코드 인식기 비트와 상기 오프코드 비트에 연결된 첫번째 제 1 오프코드 인식화 신호발생 논리,부분적인 디스패치 신호를 수신하는 입력을 가지는 부분적인 디스패치 신호발생 논리,상기 명령어 큐의 상기 오프코드 비트와 상기 오프코드 인식기 비트에 연결된 제 1 예견 능력 신호발생 논리,입력이 상기 첫번째 제 1 오프코드 인식화 신호발생논리와 상기 부분적인 디스패치 신호발생 논리에 연결되고, 출력이 상기 명령어 큐의 상기 제 1 영역에 있는 최초-발생 오프코드 인식기 비트의 장소를 인식하는 제 1 그룹의 비트 마스킹 논리 및,입력이 상기 첫번째 제 1 오프코드 인식화 신호발생 논리, 상기 부분적인 디스패치 신호발생 논리의 출력 및, 상기 제 1 예견 능력 신호발생 논리의 출력에 연결되고, 출력이 상기 명령어 큐의 상기 제 2 영역에 있는 최초-발생 오프코드 인식기 비트의 장소를 인식하는 제 2 그룹의 비트 마스킹 논리를 포함하며,여기서, 상기 제 2 단계는,입력이 상기 제 1 및 제 2 그룹의 비트 마스킹 논리의 오프코드 비트 출력과 오프코드 인식기 비트 출력에 연결된 두번째 제 1 오프코드 인식화 신호발생 논리,상기 명령어 큐의 상기 오프코드 비트와 상기 오프코드 인식기 비트에 연결된 제 2 예견 능력 신호발생 논리,입력이 상기 두번째 제 1 오프코드 인식화 신호발생 논리와 상기 제 1 그룹의 비트 마스킹 논리의 오프코드 비트 출력과 오프코드 인식기 비트 출력에 연결된 제 3 그룹의 비트 마스킹 논리 및,입력이 상기 두번째 제 1 오프코드 인식화 신호발생 논리와 상기 제 2 그룹의 비트 마스킹 논리의 오프코드 비트 출력과 오프코도 인식기 비트 출력에 연결된 제 4 그룹의 비트 마스킹 논리를 포함하는 것을 특징으로 하는 사전-복호화 x 86 명령어 스캐닝 장치.
- 수퍼스칼라 프로세서에 있는 원시명령어의 큐를 스캐닝하는 방법으로서, 상기 원시명령어의 큐는 제 1 세트의 오프코드 장소 인식기("OLI")에 의해 인식된 상기 큐에 있는 각각의 장소에 하나 또는 그 이상의 오프코드를 가지며, 원시명령어 각각은 하나 또는 그 이상의 2차 명령어의 수의 시퀀스로 맵하고, 상기 방법은,상기 제 1 세트의 OLIs에 있는 제 1 및 제 2 부분집합을 인식하는 인식단계,상기 수퍼스칼라 프로세서에 있는 제 1 디스패치 위치를 위하여 상기 제 1 세트의 OLIs의 상기 제 1 및 제 2 부분집합에 대응하며, 어떤 가정된 제 1의 OLIs를 인식하는 제 1 및 제 2 부분집합을 가지는 제 2 세트의 OLIs를 발생하는 발생단계,상기 제 1 세트의 OLIs의 상기 제 1 부분집합이 어떤 가정된 OLIs를 포함하지 않을 경우 상기 제 1 디스패치 위치를 위하여 예견 능력 신호를 발생하는 발생단계,상기 제 1 세트에 있는 가정된 제 1 OLIs를 나타내고 상기 제 1 세트에 있는 어떤 연속적으로 가정된 OLIs를 나타내지 않는 상기 제 1 디스패치 위치를 위하여 제 3 세트의 OLIs를 상기 제 2 세트의 OLIs로 부터 발생하기 위하여 상기 제 2 세트의 OLIs의 세트의 상기 제 2 부분집합에 상기 제 1 디스패치 위치를 위한 상기 예견 능력 신호를 인가하는 인가단계,상기 제 1 세트로 부터 제 4 세트의 OLIs를 유도하는 단계,상기 수퍼스칼라 프로세서에 있는 제 2 디스패치 위치를 위하여 상기 제 4 세트의 OLIs의 상기 제 1 및 제 2 부분집합에 대응하며, 어떤 가정된 제 1의 OLIs를 인식하는 제 1 및 제 2 부분집합을 가지는 제 5 세트의 OLIs를 발생하는 발생단계,상기 제 4 세트의 OLIs의 상기 제 1 부분집합이 어떤 가정된 OLIs를 포함하지 않을 경우 상기 제 2 디스패치 위치를 위하여 예견 능력 신호를 발생하는 발생단계 및,상기 제 4 세트에 있는 가정된 제 1 OLIs를 나타내고 상기 제 4 세트에 있는 어떤 연속적으로 가정된 OLIs를 나타내지 않는 상기 제 2 디스패치 위치를 위하여 제 6 세트의 OLIs를 상기 제 5 세트의 OLIs로 부터 발생하기 위하여 상기 제 5 세트의 OLIs의 세트의 상기 제 2 부분집합에 상기 제 2 디스패치 위치를 위한 상기 예견 능력 신호를 인가하는 단계로 구성되는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 13 항에 있어서, 제 4 세트의 OLIs를 유도하는 유도단계는 상기 제 1 디스패치 위치가 상기 2차 명령어의 시퀀스에 있는 마지막 2차 명령어를 포함하는 경우 상기 제 1 세트의 OLIs에 있는 상기 가정된 제 1 OLI를 차단하는 단계를 포함하며, 그렇지 않으면, 상기 제 1 세트의 OLIs에 있는 상기 가정된 제 1 OLI를 전파하는 단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 수퍼스칼라 프로세서에 있는 원시명령어의 큐를 스캐닝하는 방법으로서, 상기 원시명령어의 큐는 제 1 어레이의 가정된 비트에 의해 각각 인식된 상기 큐에 있는 각각의 장소에 하나 또는 그 이상의 오프코드 바이트를 가지며, 원시명령어 각각은 하나 또는 그 이상의 2차 명령어의 수의 시퀀스로 맵하고, 상기 방법은,상기 제 1 어레이에 있는 비트의 제 1 및 제 2 부분집합을 인식하는 인식단계,상기 수퍼스칼라 프로세서에 있는 제 1 디스패치 위치를 위하여 상기 제 1 어레이 비트의 상기 제 1 및 제 2 부분집합 각각에 있는 가정된 제 1 비트를 나타내는 비트의 제 1 및 제 2 부분집합을 가지는 제 2 어레이를 발생하는 발생단계,상기 제 1 어레이에 있는 비트의 상기 제 1 부분집합이 가정된 비트를 포함하지 않는 경우, 상기 제 1 디스패치 위치를 위하여 예견 능력 신호를 발생하는 발생단계,상기 제 1 어레이에 있는 가정된 제 1 비트를 나타내고 상기 제 1 어레이에 있는 어떤 연속적으로 가정된 비트를 나타내지 않는 상기 제 1 디스패치 위치를 위하여 제 3 어레이의 비트를 상기 제 2 어레이로 부터 발생하기 위하여 상기 제 2 어레이의 비트의 상기 제 2 부분집합에 상기 제 1 디스패치 위치를 위한 상기 예견 능력 신호를 인가하는 인가단계,상기 제 1 어레이로 부터 제 4 어레이를 유도하는 유도단계,상기 제 4 어레이에 있는 비트의 제 1 및 제 2 부분집합을 인식하는 인식단계,상기 수퍼스칼라 프로세서에 있는 제 2 디스패치 위치를 위하여 상기 제 4 어레이 비트의 상기 제 1 및 제 2 부분집합 각각에서 가정된 제 1 비트를 나타내는 비트의 제 1 및 제 2 부분집합을 가지는 제 5 비트를 를 발생하는 발생단계,상기 제 4 어레이에 있는 비트의 상기 제 1 부분집합이 가정된 비트를 포함하지 않을 경우 상기 제 2 디스패치 위치를 위하여 예견 능력 신호를 발생하는 발생단계 및,상기 제 4 어레이에 있는 가정된 제 1 비트를 나타내고 상기 제 4 어레이에 있는 어떤 연속적으로 가정된 비트를 나타내지 않는 상기 제 2 디스패치 위치를 위하여 제 6 어레이의 비트를 상기 제 5 어레이로 부터 발생하기 위하여 상기 제 5 어레이 비트의 상기 제 2 부분 집합에 상기 제 2 디스패치 위치를 위한 상기 예견능력 신호를 인가하는 단계로 구성되는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 15 항에 있어서, 제 4 어레이를 유도하는 유도단계는 상기 제 1 디스패치 위치가 상기 2차 명령어의 시퀀스에 있는 마지막 2차 명령어를 포함하는 경우 상기 제 1 어레이에 있는 상기 가정된 제 1 비트를 차단하기 위하여 상기 제 1 어레이를 마스킹하는 마스킹단계를 포함하며, 그렇지 않으면, 상기 제 1 어레이에 있는 상기 가정된 제 1 비트를 전파하는 전파단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 16 항에 있어서, 제 4 어레이를 유도하는 단계 이전에,상기 제 1 디스패치 위치를 위하여 상기 제 1 디스패치 위치에 있는 상기 2차 명령어의 상기 시퀀스수를 나타내는 부분적인 디스패치값을 발생하는 발생단계 및,상기 부분적인 디스패치값과 상기 디스패치 위치를 위한 완전한 디스패치값을 비교하는 단계를 포함하며, 상기 제 1 디스패치 위치를 위한 상기 완전한 디스패치값은 상기 제 1 디스패치 위치에 있는 상기 2차 명령어가 맵되는 상기 원시명령어로 부터 맵된 2차 명령어의 수이고,상기 제 1 디스패치 위치를 위한 상기 유도단계는 상기 부분적인 디스패치값이 상기 제 1 디스패치 위치를 위한 상기 완전한 디스패치 값과 동일한 경우 상기제 1 어레이에 있는 상기 가정된 제 1 비트를 마스킹하는 단계를 포함하며, 그렇지않으면, 상기 제 1 어레이에 있는 상기 가정된 제 1 비트를 전파하는 전파단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 15 항에 있어서, 상기 방법은,상기 제 4 어레이로 부터 제 7 어레이를 유도하는 유도단계,상기 제 7 어레이에 있는 비트의 제 1 및 제 2 부분집합을 인식하는 인식단계,상기 수퍼스칼라 프로세서에 있는 제 3 디스패치 위치를 위하여 상기 제 7 어레이 비트의 상기 제 1 및 제 2 부분집합 각각에 있는 가정된 제 1 비트를 나타내는 비트의 제 1 및 제 2 부분집합을 가지는 제 8 어레이를 발생하는 발생단계,상기 제 7 어레이에 있는 비트의 상기 제 1 부분집합이 가정된 비트를 포함하지 않는 경우, 상기 제 3 디스패치 위치를 위하여 예견 능력 신호를 발생하는 발생단계 및,상기 제 7 어레이에 있는 가정된 제 1 비트를 나타내고 상기 제 7 어레이에 있는 어떤 연속적으로 가정된 비트를 나타내지 않는 상기 제 3 디스패치 위치를 위하여 제 9 어레이의 비트를 상기 제 8 어레이로 부터 발생하기 위하여 상기 제 8 어레이의 비트의 상기 제 2 부분집합에 상기 제 3 디스패치 위치를 위한 상기 예견 능력 신호를 인가하는 인가단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 18 항에 있어서, 제 7 어레이를 유도하는 유도단계는 상기 제 2 디스패치 위치가 상기 2차 명령어의 시퀀스에 있는 마지막 2차 명령어를 포함하는 경우 상기 제 4 어레이에 있는 상기 가정된 제 1 비트를 차단하기 위하여 상기 제 4 어레이를 마스킹하는 마스킹단계를 포함하며, 그렇지 않으면, 상기 제 4 어레이에 있는 상기 가정된 제 1 비트를 전파하는 전파단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 19 항에 있어서, 제 7 어레이를 유도하는 유도단계 이전에,상기 제 2 디스패치 위치를 위하여 상기 부분적인 디스패치값으로 부터 디스패치 값을 유도하는 유도단계 및,상기 유도된 디스패치값과 상기 제 2 디스패치 위치를 위한 상기 완전한 디스패치 값을 비교하는 단계를 포함하며,상기 유도된 디스패치값은 상기 제 2 디스패치 위치에 있는 상기 2차 명령어의 상기 시퀀스수가 상기 제 2 디스패치 위치를 위한 상기 완전한 디스패치값 미만일 경우 상기 부분적인 디스패치값의 증가된 버젼이고, 상기 제 2 디스패리 위츠를 위한 상기 완전한 디스패치값은 상기 제 2 디스패치 위치에 있는 상기 2차 명령어가 맵된 상기 원시명령어로 부터 맵된 2차 명령어의 수이고, 그렇지 않으면, 기본값을 가지고,상기 제 2 디스패치 위치를 위한 상기 유도단계는 상기 유도된 디스패치값이상기 제 2 디스패치 위치를 위한 상기 완전한 디스패치값과 동일한 경우 상기 제 4 어레이에 있는 상기 가정된 제 1 비트를 마스킹하는 단계를 포함하며, 그렇지않으면, 상기 제 4 어레이에 있는 상기 가정된 제 1 비트를 전파하는 전파단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 15 항에 있어서,상기 제 1 어레이에 있는 비트의 제 1 및 제 2 부분집합을 인식하는 인식단계는 상기 제 1 어레이에 있는 비트의 제 3 부분집합을 인식하는 단계를 포함하고,제 2 어레이를 발생하는 발생단계는 상기 제 1 어레이의 비트의 상기 제 3 부분집합에 있는 가정된 제 1 비트를 나타내는 비트의 제 3 부분집합을 상기 제 2 어레이에서 포함하는 포함단계를 포함하고,상기 제 1 디스패치 위치를 위한 예견 능력 신호를 발생하는 발생단계는 상기 제 1 어레이에 있는 비트의 상기 제 1 부분집합도 상기 제 2 부분집합도 가정된 제 1 비트를 포함하지 않는 경우 상기 제 1 디스채치 위치를 위하여 부가적인 예견 능력 신호를 발생하는 발생단계를 포함하고,상기 제 1 디스패치 위치를 위한 상기 예견 능력 신호를 인가하는 인가단계는 상기 제 1 디스패치 위치를 위한 상기 부가적인 예견 능력 신호를 상기 제 2 어레이에 있는 비트의 상기 제 3 부분집합에 인가함으로써 상기 제 3 어레이를 발생하는 발생단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 15 항에 있어서, 상기 원시명령어는 사전-복호화 x 86 명령어이고, 상기 2차 명령어는 RISC - 형 연산인 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 다수의 디스패치 위치와 다수의 개별적인 스캐닝단계를 가지는 수퍼스칼라 프로세서의 명령어 큐에 있는 명령어를 스캐닝하는 방법으로서, 명령어 각각은 상기 오프코드와 명령어 큐내에 상기 오프코드의 장소를 인식하기 위하여 오프코드 인식기를 포함하고, 하나 또는 그 이상의 RISC - 형 연산("ROPs")의 수로 맵하며, 상기 방법은,명령어 각각이 맵하는 ROPs의 수와 이용가능한 디스패치 위치의 수에 좌우되는 상기 명령어에 상기 디스패치 위치를 할당하는 할당단계,상기 디스패치 위치가 할당되는 명령어를 위하여 상시 명령어 큐에 있는 오프코드의 장소를 인식하는 단계 및,상기 인식단계로 부터 상기 각각의 디스패치 위치에 상기 오프코드 장소를 보고하는 단계로 구성되며,한 단계씩을 기본으로 하고, 각 단계는 오프코드 인식기의 입력 어레이와 오프코드 인식기의 출력어레이를 가지고,상기 입력 어레이에 있는 상기 제 1 오프코드의 장소를 인식하는 단계와,상기 입력 어레이로 부터 상기 출력 어레이까지 어레이를 전파하는 전파단계를 포함하며, 상기 전파어레이는 상기 대응하는 디스패치 위치가 특정 명령어에 대하여 마지막으로 할당된 디스패치 위치일 경우 마스크되는 상기 인식수단에서 인식되는 상기 장소를 가지고,상기 단계는 다수 그룹의 오프코드 인식기 처리논리로 분할되며, 상기 단계내에 전파 딜레이를 감소시키기 위하여 상기 단계의 더 높은 순서의 그룹에 예견 능력 신호를 제공하는 제공단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
- 제 23 항에 있어서, 명령어 각각이 맵하는 상기 ROPs는 순서대로 배열된 시퀀스에 있으며 상기 순서대로 배열된 시퀀스에 있는 각각의 수를 가지며, 상기 단계 각각은,디스패치 위치가 가장 최근에 할당된 상기 ROP의 수에 속하는 입력 어레이 및,상기 관련 x 86 명령어가 맵하는 상기 ROPs의 수에 속하는 출력 어레이를 포함하며,상기 단계의 상기 그룹을 위하여 제 1 오프코드 인식화 신호와 예견 능력 신호를 각각 발생하는 발생단계 및,디스패치 위치가 가장 최근에 할당된 상기 ROP의 수와 상기 관련 x 86 명령어가 맵하는 ROPs의 수가 동일한 경우 상기 바로 선행하는 단계의 오프코드 인식기의 상기 출력 어레이를 마스킹하는 단계를 포함하는 것을 특징으로 하는 원시명령어 큐의 스캐닝 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/292649 | 1994-08-18 | ||
US08/292,649 | 1994-08-18 | ||
US08/292,649 US5630082A (en) | 1993-10-29 | 1994-08-18 | Apparatus and method for instruction queue scanning |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960008542A KR960008542A (ko) | 1996-03-22 |
KR100354324B1 true KR100354324B1 (ko) | 2003-01-08 |
Family
ID=23125583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950025425A KR100354324B1 (ko) | 1994-08-18 | 1995-08-18 | 명령어큐스캐닝장치및그방법 |
Country Status (6)
Country | Link |
---|---|
US (2) | US5630082A (ko) |
EP (1) | EP0697650B1 (ko) |
JP (1) | JP3714999B2 (ko) |
KR (1) | KR100354324B1 (ko) |
AT (1) | ATE202644T1 (ko) |
DE (1) | DE69521461T2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101139395B1 (ko) | 2007-12-29 | 2012-04-27 | 룽신 테크놀로지 코퍼레이션 리미티드 | Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US5822558A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor |
US5790824A (en) * | 1996-03-18 | 1998-08-04 | Advanced Micro Devices, Inc. | Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions |
US6041403A (en) * | 1996-09-27 | 2000-03-21 | Intel Corporation | 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 |
DE19737658C2 (de) * | 1996-10-18 | 1999-10-14 | Nat Semiconductor Corp | Befehlsdecoder für einen Mikroprozessor |
US6148393A (en) * | 1997-03-10 | 2000-11-14 | Advanced Micro Devices, Inc. | Apparatus for generating a valid mask |
US5968163A (en) | 1997-03-10 | 1999-10-19 | Advanced Micro Devices, Inc. | Microcode scan unit for scanning microcode instructions using predecode data |
US6016544A (en) * | 1997-06-09 | 2000-01-18 | Ip First Llc | Apparatus and method for tracking changes in address size and for different size retranslate second instruction with an indicator from address size |
US5940602A (en) * | 1997-06-11 | 1999-08-17 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations |
US6105125A (en) * | 1997-11-12 | 2000-08-15 | National Semiconductor Corporation | High speed, scalable microcode based instruction decoder for processors using split microROM access, dynamic generic microinstructions, and microcode with predecoded instruction information |
US6134649A (en) * | 1997-11-17 | 2000-10-17 | Advanced Micro Devices, Inc. | Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction |
US6167506A (en) | 1997-11-17 | 2000-12-26 | Advanced Micro Devices, Inc. | Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location |
US6134650A (en) * | 1997-12-12 | 2000-10-17 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data |
US6061775A (en) * | 1997-12-12 | 2000-05-09 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types |
US6061786A (en) * | 1998-04-23 | 2000-05-09 | Advanced Micro Devices, Inc. | Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction |
WO2000000878A2 (en) * | 1998-06-26 | 2000-01-06 | Chi Lan Wong Derek | Methods for increasing instruction-level parallelism in microprocessors and digital systems |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6636959B1 (en) | 1999-10-14 | 2003-10-21 | Advanced Micro Devices, Inc. | Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition |
US6647490B2 (en) | 1999-10-14 | 2003-11-11 | Advanced Micro Devices, Inc. | Training line predictor for branch targets |
US6546478B1 (en) | 1999-10-14 | 2003-04-08 | Advanced Micro Devices, Inc. | Line predictor entry with location pointers and control information for corresponding instructions in a cache line |
US6523108B1 (en) | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
US20030188044A1 (en) * | 2002-03-28 | 2003-10-02 | International Business Machines Corporation | System and method for verifying superscalar computer architectures |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US7774748B1 (en) * | 2004-08-03 | 2010-08-10 | Tensilica, Inc. | System and method for automatic conversion of a partially-explicit instruction set to an explicit instruction set |
US8201067B2 (en) * | 2008-02-25 | 2012-06-12 | International Business Machines Corporation | Processor error checking for instruction data |
US10496412B2 (en) | 2016-02-08 | 2019-12-03 | International Business Machines Corporation | Parallel dispatching of multi-operation instructions in a multi-slice computer processor |
US11132599B2 (en) | 2017-02-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Multi-function unit for programmable hardware nodes for neural network processing |
US11467838B2 (en) * | 2018-05-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Fastpath microcode sequencer |
CN111030788B (zh) * | 2018-10-10 | 2022-05-31 | 上海朗帛通信技术有限公司 | 一种被用于无线通信的用户设备、基站中的方法和装置 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3781808A (en) * | 1972-10-17 | 1973-12-25 | Ibm | Virtual memory system |
AT354159B (de) * | 1975-02-10 | 1979-12-27 | Siemens Ag | Assoziativspeicher mit getrennt assoziierbaren bereichen |
US4179737A (en) * | 1977-12-23 | 1979-12-18 | Burroughs Corporation | Means and methods for providing greater speed and flexibility of microinstruction sequencing |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US4453212A (en) * | 1981-07-13 | 1984-06-05 | Burroughs Corporation | Extended address generating apparatus and method |
US4928223A (en) * | 1982-10-06 | 1990-05-22 | Fairchild Semiconductor Corporation | Floating point microprocessor with directable two level microinstructions |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPH0658631B2 (ja) * | 1983-12-19 | 1994-08-03 | 株式会社日立製作所 | デ−タ処理装置 |
US5426914A (en) * | 1989-02-24 | 1995-06-27 | Highland Supply Corporation | Band applicator for applying a band about a sheet of material and a pot |
DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
CA1271561A (en) * | 1986-07-02 | 1990-07-10 | Jeffry M. Bram | Instruction decoding microengines |
CA1278382C (en) * | 1986-12-15 | 1990-12-27 | Brian J. Sprague | Reduced instruction set computing apparatus and methods |
US4992934A (en) * | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5131086A (en) * | 1988-08-25 | 1992-07-14 | Edgcore Technology, Inc. | Method and system for executing pipelined three operand construct |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5155816A (en) * | 1989-02-10 | 1992-10-13 | Intel Corporation | Pipelined apparatus and method for controlled loading of floating point data in a microprocessor |
US5155820A (en) * | 1989-02-21 | 1992-10-13 | Gibson Glenn A | Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
JP2725450B2 (ja) * | 1989-08-28 | 1998-03-11 | 日本電気株式会社 | マイクロプロセッサ |
US5185868A (en) * | 1990-01-16 | 1993-02-09 | Advanced Micro Devices, Inc. | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5128888A (en) * | 1990-04-02 | 1992-07-07 | Advanced Micro Devices, Inc. | Arithmetic unit having multiple accumulators |
CA2037708C (en) * | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
DE69123629T2 (de) * | 1990-05-04 | 1997-06-12 | International Business Machines Corp., Armonk, N.Y. | Maschinenarchitektur für skalaren Verbundbefehlssatz |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
JPH04156613A (ja) * | 1990-10-20 | 1992-05-29 | Fujitsu Ltd | 命令バッファ装置 |
EP0498654B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | Cache memory processing instruction data and data processor including the same |
JPH052484A (ja) * | 1991-06-24 | 1993-01-08 | Mitsubishi Electric Corp | スーパースカラプロセツサ |
KR100299691B1 (ko) * | 1991-07-08 | 2001-11-22 | 구사마 사부로 | 확장가능알아이에스씨마이크로프로세서구조 |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
SG45269A1 (en) * | 1992-02-06 | 1998-01-16 | Intel Corp | End bit markers for instruction decode |
GB2263985B (en) * | 1992-02-06 | 1995-06-14 | Intel Corp | Two stage window multiplexors for deriving variable length instructions from a stream of instructions |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
IE80854B1 (en) * | 1993-08-26 | 1999-04-07 | Intel Corp | Processor ordering consistency for a processor performing out-of-order instruction execution |
EP0651320B1 (en) * | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superscalar instruction decoder |
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
-
1994
- 1994-08-18 US US08/292,649 patent/US5630082A/en not_active Expired - Lifetime
-
1995
- 1995-07-17 DE DE69521461T patent/DE69521461T2/de not_active Expired - Lifetime
- 1995-07-17 AT AT95304957T patent/ATE202644T1/de not_active IP Right Cessation
- 1995-07-17 EP EP95304957A patent/EP0697650B1/en not_active Expired - Lifetime
- 1995-08-16 JP JP20876895A patent/JP3714999B2/ja not_active Expired - Lifetime
- 1995-08-18 KR KR1019950025425A patent/KR100354324B1/ko not_active IP Right Cessation
-
1997
- 1997-02-04 US US08/795,330 patent/US5896518A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101139395B1 (ko) | 2007-12-29 | 2012-04-27 | 룽신 테크놀로지 코퍼레이션 리미티드 | Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법 |
Also Published As
Publication number | Publication date |
---|---|
KR960008542A (ko) | 1996-03-22 |
EP0697650B1 (en) | 2001-06-27 |
JPH08190482A (ja) | 1996-07-23 |
JP3714999B2 (ja) | 2005-11-09 |
DE69521461D1 (de) | 2001-08-02 |
US5896518A (en) | 1999-04-20 |
DE69521461T2 (de) | 2002-04-18 |
EP0697650A3 (en) | 1998-04-01 |
ATE202644T1 (de) | 2001-07-15 |
US5630082A (en) | 1997-05-13 |
EP0697650A2 (en) | 1996-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100354324B1 (ko) | 명령어큐스캐닝장치및그방법 | |
US5799162A (en) | Program counter update mechanism | |
US5303356A (en) | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag | |
US6490673B1 (en) | Processor, compiling apparatus, and compile program recorded on a recording medium | |
US5504932A (en) | System for executing scalar instructions in parallel based on control bits appended by compounding decoder | |
US6256726B1 (en) | Data processor for the parallel processing of a plurality of instructions | |
KR100431168B1 (ko) | 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템 | |
JP2616182B2 (ja) | データ処理装置 | |
JP2816248B2 (ja) | データプロセッサ | |
US6128721A (en) | Temporary pipeline register file for a superpipelined superscalar processor | |
JPH07182163A (ja) | スーパスカラ命令デコード/発行装置 | |
EP0372865A2 (en) | Cache device for supplying a fixed word length of a variable length instruction code and instruction fetch device | |
WO2012144374A1 (ja) | データプロセッサ | |
JP2556182B2 (ja) | デ−タ処理装置 | |
JP2504312B2 (ja) | プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置 | |
EP0545927B1 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
CN113779755A (zh) | 一种硅基多光谱集成电路芯片的设计方法和集成电路芯片 | |
US7047400B2 (en) | Single array banked branch target buffer | |
US5072372A (en) | Indirect literal expansion for computer instruction sets | |
JP3732233B2 (ja) | スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置 | |
EP0825529A2 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
US20040054874A1 (en) | Data processing device with a spare field in the instruction | |
EP0919025B1 (en) | A parallel and scalable instruction scanning unit | |
KR100448676B1 (ko) | 슈퍼스칼라 마이크로프로세서 내에서 가변 바이트 길이 명령어들을 프리디코딩하는 방법 및 장치 | |
JPH06332701A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120830 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20130820 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20140825 Year of fee payment: 13 |
|
EXPY | Expiration of term |