JPH07182163A - スーパスカラ命令デコード/発行装置 - Google Patents

スーパスカラ命令デコード/発行装置

Info

Publication number
JPH07182163A
JPH07182163A JP6262437A JP26243794A JPH07182163A JP H07182163 A JPH07182163 A JP H07182163A JP 6262437 A JP6262437 A JP 6262437A JP 26243794 A JP26243794 A JP 26243794A JP H07182163 A JPH07182163 A JP H07182163A
Authority
JP
Japan
Prior art keywords
instruction
rop
cisc
rops
issue
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
JP6262437A
Other languages
English (en)
Inventor
David B Witt
デイビッド・ビィ・ウィット
Michael D Goddard
マイケル・ディ・ゴダード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH07182163A publication Critical patent/JPH07182163A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result 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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】 CISCプロセッサの性能を容易に改良する
ための方法および装置を提供する。 【構成】 RISCスーパースカラコア110を有する
スーパースカラCISCプロセッサ100は、命令キャ
ッシュ104と、バイトキュー106と、命令デコーダ
108とを含む。命令デコーダは、各発行位置において
CISC命令をRISC類似演算ROPに変換するため
の論理変換経路とメモリ変換経路と共通変換経路とを含
む。ROPマルチプレクサはx86命令をバイトキュー
から変換経路に送り、選択回路は適切な変換経路からR
OP情報を集め、共有回路が共有される資源のための選
択回路からのROP情報を処理する。ROPタイプおよ
びopコード情報が命令デコーダからRISCコアに発
行される。

Description

【発明の詳細な説明】
【0001】
【発明の背景】本発明はマイクロプロセッサアーキテク
チャに関し、より特定的にはスーパースカラ命令デコー
ダアーキテクチャに関する。
【0002】
【関連技術の説明】汎用プロセッサは、典型的にはスカ
ラ命令セットに基づく。プロセッサアーキテクチャは、
RISC(縮小命令セットコンピュータ)ベースである
か、またはCISC(複雑命令セットコンピュータ)ベ
ースである。各アプローチとも、文献で広く議論されて
いるように利点および欠点がある。
【0003】「スーパースカラ」という用語は、スカラ
命令の同時実行によって性能を改良するコンピュータ構
造のことである。スーパースカラRISCアーキテクチ
ャの実現はかなり進歩してきている。スーパースカラR
ISCアーキテクチャは、典型的にはパイプライン構造
を考慮して規定されており、スーパースカラ構造を容易
にする多くの特徴を含む。これらの特徴は、固定フォー
マットおよび固定長命令、簡潔な命令オペランド、なら
びにロード/ストアアーキテクチャを含む。スーパース
カラRISCアーキテクチャはここにその全体を引用に
よって援用する、1991年、ニュージャージー州、エ
ングルウッドクリフス(Englewood Cliffs)の、プレン
ティスホール社(Prentice Hall )出版、ジョンソン
(Johnson)著「スーパースカラマイクロプロセッサデ
ザイン」(Superscalar Microprocessor Design )に説
明される。
【0004】スーパースカラCISCアーキテクチャを
達成することが関心を呼んでいるが、スーパースカラ構
造を考慮して規定されるCISCアーキテクチャがほと
んどないこともあって、進歩が遅れている。CISCア
ーキテクチャは、主要な実現技術が命令セットのマイク
ロコード変換であったときに規定されており、演算が重
なるように設計することではなく、どの演算が命令に組
合わされるべきかということに重点が置かれていた。非
常に用途が広い一方で、マイクロコード変換は、パイプ
ライン化されたアーキテクチャまたはスーパースカラア
ーキテクチャの開発を促進するものではない。命令フォ
ーマットの複雑さ、頻繁なレジスタの再使用、頻繁なメ
モリアクセス、および著しく複雑な命令を含むこと等の
従来のCISCアーキテクチャの数々の局面から困難が
生じている。
【0005】CISC命令フォーマットの一例は、カリ
フォルニア州、サンタクララ(Santa Clara )のインテ
ル社(Intel Corporation )から入手可能である、イン
テルi486(登録商標)マイクロプロセッサの命令フ
ォーマットである。この命令フォーマットでは、命令
は、1つまたは2つのopコードバイトからなる操作コ
ード(「opコード」)、修飾レジスタまたはメモリ
(「mod r/m」)バイト、スケールインデックス
ベース(「sib」)バイト、変位バイト、および即値
データバイトを有し得る。opコードは操作コードを特
定し、レジスタ識別子を含み得る。mod r/mバイ
トは、オペランドがレジスタにあるか、またはメモリに
あるかを特定する。オペランドがメモリにあれば、mo
d r/mバイトにおけるフィールドは使用されるべき
アドレスモードを特定する。modr/mバイトのある
コード化は、第2のバイトであるsibバイトが後に続
いてアドレスモードを完全に特定することを示す。si
bバイトは、2ビットスケールフィールド、3ビットイ
ンデックスフィールド、および3ビットベースフィール
ドからなる。これらのフィールドは、アドレス計算がど
のように行なわれるかを特定するために複雑メモリアド
レスモードにおいて用いられる。変位バイトはアドレス
計算の際に用いられる。即値データバイトは命令オペラ
ンドのために用いられる。プレフィックスバイトとして
知られる1つまたはそれ以上の付加的なバイトが、op
コードバイトの前に現われるかもしれない。プレフィッ
クスバイトは命令の解釈を変更し、さらに複雑にする。
命令の長さもまた変化し得る。最小の命令は単一のop
コードバイトからなり、8ビット長である。プレフィッ
クスバイトを含む長い命令は、104ビット長にもなり
得る。2つ以上のプレフィックスバイトを含む、より長
い命令も可能である。
【0006】CISCスーパースカラアーキテクチャを
有する最近のマイクロプロセッサの一例は、カリフォル
ニア州、サンタクララのインテル社から入手可能である
ペンティアム(Pentium )(登録商標)マイクロプロセ
ッサである。i486マイクロプロセッサと比較してペ
ンティアムマイクロプロセッサの性能が向上したのは、
そのスーパースカラアーキテクチャによる部分もある。
残念ながら、ペンティアムマイクロプロセッサ等の新規
のスーパースカラCISCアーキテクチャでさえも、命
令フォーマットの複雑さ、頻繁なレジスタの再使用、頻
繁なメモリアクセス、著しく複雑な命令を含むこと等
の、従来のCISCアーキテクチャの種々の局面によっ
て制限されたままである。
【0007】
【発明の概要】一実施例において、それぞれのROP群
にマッピングするCISC命令のCISCopコードお
よびアドレス情報が識別され、命令がマッピングするR
OPの数に基づいて、発行位置に整列される命令のデコ
ード方法である本発明によって、プロセッサの性能を改
良することが容易になる。ROP opコードおよびア
ドレス情報は、各CISC命令について、CISC命令
をデコードする発行位置の、同じCISC命令をデコー
ドする他の発行位置に関しての位置に基づいて、CIS
C opコードおよびアドレス情報からデコードされ
る。発行位置からのROP opコードおよびアドレス
情報は、RISCコアに並列に追いやられる。
【0008】本発明の他の実施例は、上述の方法を実行
するための手段を含む。本発明の別の実施例は、複数個
「m」までのROPを並列に発行するための装置であ
り、ROPは1つまたはそれ以上のCISC命令からマ
ッピングされる。この装置は、CISC命令およびプリ
デコード情報をストアするためのメモリを含み、これは
CISC命令がマッピングするROPの数を識別する値
を含む。複数個「m」の出力を有するマルチプレクサが
メモリに結合され、「m」個までの、CISC命令がマ
ッピングするROPの数に等しいマルチプレクサ出力の
割当てられていないものにCISC命令から情報を送
る。複数の変換経路がそれぞれマルチプレクサ出力に結
合され、CISC命令情報をCISC命令がマッピング
するそれぞれのROPに変換する。変換経路に発行論理
が結合されて、現在の発行ウィンドウ内のROPを発行
する。
【0009】別の実施例において、単純かつ共通のCI
SC命令が、基本ROPの1ないし3のROPシーケン
スにコード化され、次にこれらが並列に発行される。符
号化は「高速経路」における各発行位置について行なわ
れ、これがCISC命令をROPにデコードし、それを
RISCコアに発行する。高速経路は、命令の境界がど
こにあるのか、および各CISC命令についてのROP
の数を決定するのに、各CISC命令バイトに付随する
プリデコード情報を用いる。
【0010】別の実施例において、複雑な命令、すなわ
ち4つ以上のROPを必要とするものであっても頻繁に
は使用されない命令は、マイクロコードROMへのエン
トリポイントを用いて符号化される。エントリポイント
において、さらなるCISC命令は発行されず、そのた
め複雑な命令のために全発行幅が利用可能である。ルー
チンは4つのROP位置から発行する。
【0011】
【好ましい実施例の詳細な説明】CISC命令セットの
スーパースカラ実行を実現するためのプロセッサ100
のアーキテクチャが図1に示される。プロセッサ100
の主な機能ブロック間、ならびに外部メモリへおよびそ
こからの、CISCアドレス、データおよび制御転送
は、内部アドレスおよびデータ(「IAD」)バス10
2を介して通信され、これは、物理タグ記憶装置162
およびメモリ管理ユニット164と関連してバスインタ
フェースユニット(「BIU」)160によって外部バ
ス(図示せず)にインタフェースされる。IADバス1
02は64ビットバスである。転送先バス、またはXT
ARGETバス103と称する別のバスは32ビットバ
スであり、マイクロブランチ誤予測、例外、およびリセ
ットの際の分岐セクションBRNSEC135からのI
DECODE108の更新、およびIDECODEから
のBRNSEC135における分岐FIFOの更新を含
む、種々の優先順位をつけられた使用に供される。
【0012】例示的にx86クラスマイクロプロセッサ
によって使用される命令(以下x86命令)であるCI
SC命令は、命令キャッシュ(「ICACHE」)10
4において分解され、プリデコードされ、プリデコード
されたx86命令はバイトキュー(「BYTEQ」)1
06にコピーされ、次に、プリデコードされたx86命
令は命令デコーダ(「IDECODE」)108におい
てRISC類似演算(「ROP」)のためのそれぞれの
命令シーケンスにマッピングされる。これらのROP
は、「ソースA−演算−ソースB−デスティネーショ
ン」構造、opコードおよびソースオペランドの固定位
置、ロード/ストアアーキテクチャ、およびロード/ス
トアアドレスモードの直接計算を含む幾つかの有用な特
性を有する。
【0013】RISCコア110に関するROPは3つ
のオペランドの命令、すなわち2つのソースオペランド
AおよびBと1つのデスティネーションオペランドとで
ある。主なROPフィールドは表1ないし表5に挙げら
れる。
【0014】
【表1】
【0015】
【表2】
【0016】
【表3】
【0017】
【表4】
【0018】
【表5】
【0019】ICACHE104は、未処理のx86命
令開始および終了点を識別し、マークし、「プリデコー
ド」情報を符号化する第1レベル命令キャッシュであ
る。BYTEQ106は、「予測実行」状態のプリデコ
ード情報および命令のキューである。BYTEQ106
は、実際にはICACHE104とIDECODE10
8との間のインタフェースであり、いずれかと一体化さ
れても、両方にわたって分散されても、別個のユニット
として実現されてもよい。x86命令が幾つのROPに
マッピングするかに依存して、4つまでのx86命令が
同時に発行され得る。ICACHE104は、同時係属
中の米国特許出願連続番号第145,905 号(デイビッド・
ビィ・ウィット(David B. Witt )およびマイケル・デ
ィ・ゴダード(Michael D. Goddard)の「可変バイト長
命令に特に適したプリデコード命令キャッシュおよびそ
の方法」(“Pre-Decode Instruction Cache and Metho
d Therefor Particularly Suitable for Vaviable Byte
-Length Instructions”)に詳細に説明され、その全体
をここに引用によって援用する。BYTEQ106は、
同時係属中の米国特許出願連続番号第145,902 号(デイ
ビッド・ビィ・ウィットの「可変バイト長命令に特に適
した推論命令キューおよびその方法」(“Speculative
Instruction Queue and Method Therefor Particularly
Suitable forVaviable Byte-Length Instructions
”)に詳細に説明され、その全体をここに引用によっ
て援用する。
【0020】IDECODE108は、BYTEQ10
6内のプリデコードされたx86命令に基づいて、すべ
てのROPについてタイプ、opコード、およびポイン
タ値を発生し、BYTEQ106をシフトするために可
能なx86命令発行の数を決定する。IDECODE1
08はまた、推論ROPのプログラムカウンタ値を維持
し、推論浮動小数点実行のための浮動小数点ポインタの
推論マッピングを維持する。
【0021】ROP命令は種々のバスを介してスーパー
スカラRISCコア110に発行される。RISCコア
110は、4つのROP発行、5つのROP結果、およ
び16までの推論実行ROPをサポートする。Aおよび
Bソースオペランドに対する4つまでの組のポインタ
が、IDECODE108によってそれぞれのバスを介
してRISCコア110内のレジスタファイルREGF
112とリオーダバッファROB114とに供給され
る。REGF112およびROB114は、RISCオ
ペランドAおよびBの適切な「予測実行された」ものを
AおよびBソースオペランドバス116を介してRIS
Cコア110内の種々の機能ユニットに供給する。RI
SC opコード情報は、IDECODE108からタ
イプおよび発行情報(「TAD」)バス118を介して
発行される。
【0022】RISCコア110は、第1の算術演算論
理装置(「ALU0」)131、第2の算術演算論理お
よびシフトユニット(「ALU1およびSHF」)13
2、特殊レジスタブロック(「SRB」)133、ロー
ド/ストアセクション(「LSSEC」)134、分岐
セクション(「BRNSEC」)135、浮動小数点ユ
ニット(「FPU」)136等の多くの機能ユニットを
含む。機能ユニットはALU0 131のように特定の
タイプの機能の専用であってもよく、またはALU1お
よびSHF132、ならびにLSSEC134のように
複数の機能を組合せてもよい。機能ユニット131、1
32、133、134、135および136は、オペラ
ンドバス116およびTADバス118に接続される入
力を有するそれぞれの待合せステーション121、12
2、124、125および126を含む。待合せステー
ションは、推論ROPが機能ユニット131−132お
よび134−136に、それらのソースオペランドが現
在利用可能であるかどうかにかかわらず、発行されるこ
とを可能にする。
【0023】REGF112は整数および浮動小数点命
令に関するマッピングされたx86レジスタを含む物理
レジスタファイルであり、中間計算値を保持するための
一時整数および浮動小数点レジスタも含む。REGF1
12は、4つまでの同時に発行されたROPの各々につ
いて2つまでのレジスタポインタをデコードし、選択さ
れたエントリの値をその8つの読出ポートから適切にA
およびBソースオペランドバス116へと供給する。R
EGF112は、ライトバックバス113を介してRO
B114から推論実行状態オペランドを放棄するための
4つの書込ポートを含む。ROB114は推論実行RO
Pの相対的な順番を追跡するための先頭および末尾キュ
ーポインタを備えた環状FIFOである。ストア位置は
命令結果にダイナミックに割当てられる。命令がデコー
ドされると、その結果値にはROB114内の位置、ま
たは行先が割当てられ、その行先レジスタ番号がこの位
置と関連づけられる。従属性を持たない後続の命令に関
しては、オペランドバス116がREGF112から駆
動される。しかしながら、後続の命令が従属性を有し、
そこにストアされたと考えられる値を得るために再び示
された行先レジスタを参照すれば、命令はその代わりに
ROB114内にストアされた値、または値が決定され
ていなければこの値に割当てられたROB114内の位
置に関するタグを得る。値またはタグはTAD118バ
スを介して機能ユニットに供給される。機能ユニット1
31−136における実行の完了から結果が得られれ
ば、結果およびそのそれぞれの結果タグが、4バス幅の
結果タグおよび結果バス140を介してROB114
と、待合せステーション121−122および124−
126とに供給される。ROB114はまた例外および
誤予測を扱い、プログラムカウンタおよび実行フラグを
含むある可視レジスタの状態を維持する。RISCコア
110に適したユニットは、同時係属中の米国特許出願
連続番号第146,382 号(デイビッド・ビィ・ウィットお
よびウィリアム・エム・ジョンソン(WilliamM. Johnso
n)の「高性能スーパースカラマイクロプロセッサ」
(“High Performance Superscalar Microprocessor
”)に開示され、その全体がここに引用によって援用
される。適切なRISC命令セットおよび他の適切なR
ISCコアは当該分野では周知である。
【0024】図1のプロセッサ100は、IDECOD
E108からのROPの順序通りの発行、機能ユニット
間の命令の投入に関して順序通りでない投入、機能ユニ
ットへのそれぞれの待合せステーションからの命令の投
入に関しての順序通りの投入、順序通りでない完了を用
いる。したがって、IDECODE108は、RISC
コア110の機能ユニット内の完了から分離され、その
ため機能停止を除いては、IDECODE108は命令
を迅速に完了できるかどうかにかかわらずデコードし続
ける。ルックアヘッドを活用するために、IDECOD
E108は命令をデコードし、待合せステーションがそ
れらを受取ることができる限り、これらを機能ユニット
131−132および134−136の待合せステーシ
ョン121−122および124−126内の利用可能
な位置に置く。
【0025】DCACHE150は、整数および浮動小
数点ロードおよびストア演算の両方を扱うLSSEC1
34ときっちりと整列される。2つまでのロード動作が
同時にDCACHE150にアクセスし、それらの動作
を結果バス140に転送する。DCACHE150内に
ストアされたデータに関するキャッシュヒット/ミスチ
ェックもまたLSSEC134によって行なわれる。
【0026】プロセッサ100はまた、物理タグ記憶装
置162、メモリ管理ユニット164、および従来の外
部メモリ166に結合される従来の外部バスとインタフ
ェースするバスインタフェースユニット160を含む。
物理タグ記憶装置162は、ICACHE104および
DCACHE150の内容に関するタグを含む。メモリ
管理ユニット164はメモリアドレス変換を行なう。バ
スインタフェースユニット160は物理タグ記憶装置1
62からの読出/書込サイクルに関するリクエストをと
り、外部バスにおける読出/書込サイクルを見て、物理
タグ記憶装置162、ICACHE104、およびDC
ACHE150におけるキャッシュ一致性を確実にし、
検出の際にデータを適切なように更新するか、無効にす
るか、または与える。DCACHE150およびLSS
EC134は、同時係属中の米国特許連続出願番号第14
6,381 号(デイビッド・ビィ・ウィット)の「線形にア
ドレスされるマイクロプロセッサキャッシュ」(“Line
arly Addressed Microprocessor Cache ”」にさらに説
明され、その全体をここに引用によって援用する。物理
タグ記憶装置162およびLSSEC134は、同時継
続中の米国特許連続出願番号第146,376 号(ウィリアム
・エム・ジョンソン、デイビッド・ビィ・ウィット、お
よびミュラリ・チコナンダ(Murali Chinnakonda)の
「高性能ロード/ストア機能ユニットおよびデータキャ
ッシュ」(“High Performance Load/Store Functional
Unit and Data Cache”」にさらに説明され、その全体
がここに引用によって援用される。
【0027】図1のプロセッサ100は、実際には5ス
テージパイプラインとして動作する。逐次実行パイプラ
インのタイミング図が図2に示される。第1のパイプラ
インステージはフェッチステージであり、フェッチプロ
グラムカウンタFPC[31:0]の値が決定され、I
CACHE104のタグと比較されてキャッシュヒット
またはミスを決定する。次の2つのパイプラインステー
ジはデコードステージDECODE1およびDECOD
E2である。次の推論命令である複数の命令ICBYT
EnB[12:0]が、DECODE1ステージの段階
1においてFPCに従ってフェッチされ、BYTEQ1
06に送られる。BYTEQ106のエントリBYTE
Qn[7:0]は種々のROPフィールドROPMAX
[3:0]にデコードされ、これらはDECODE1ス
テージの段階2で有効となる。IDECODE108の
種々の出力は、DECODE2ステージの段階1および
2において有効になる。たとえば、4つのROPに関す
るAおよびBオペランドポインタは、DECODE2ス
テージの段階1において有効となり、それによってRE
GF112およびROB114からのAおよびBオペラ
ンドまたはROB114からのそれらのタグが、DEC
ODE2ステージの段階2においてアクセスされること
が可能になる。後続の実行、結果、および放棄ステージ
において、AおよびBソースオペランドとタグが有効と
なり、機能ユニット待合せステーション121−122
および124−126に供給され、機能ユニット131
−136はROPを実行し、結果バス140に対して仲
裁し、結果が待合せステーション121−122および
124−126とROB114とに書込まれ、オペラン
ドはROB114からREGF112に放棄される。
【0028】誤予測された分岐を有する逐次実行パイプ
ラインのためのタイミング図は図3に示される。分岐の
実行から訂正された経路の実行記憶までのこの誤予測の
ペナルティは3クロックサイクルである。分岐命令の実
行の間に分岐比較が行なわれる。分岐誤予測が検出され
れば、フェッチステージに入る。分岐先アドレスXTA
RGET[31:0]がフェッチの段階1において有効
となり、FPCとしてバスへと送られ、複数命令ICB
YTEnB[12:0]がFPCに従ってフェッチされ
る。次の2つのパイプラインステージはデコードステー
ジDECODE1およびDECODE2であり、これら
は本質的には図2に示した逐次実行パイプラインに関し
て説明したように進行する。
【0029】[バイトキュー特性]BYTEQ106
は、ICACHE104とIDECODE108との間
のインタフェースとして機能する。概念的には、バイト
キューBYTEQ106は、0、1またはそれ以上のプ
リデコードされたx86命令を表わす16までのエント
リのキューである。各プリデコードされたx86命令は
命令開始で始まり、命令終了で終了し、1つまたはそれ
以上の要素からなる。各要素は、有効ビット、x86命
令バイト、予測実行された状態のプリデコード情報、お
よび分岐誤予測情報を含む。
【0030】ICACHE104におけるx86命令の
処理の結果として生じるプリデコードされたx86命令
の一般的な表現は、図4に示される。ICACHE10
4は、x86命令を分解し、プリデコードし、結果をス
トアする。x86命令がBYTEQ106から発行さ
れ、後続のx86命令がキューの先頭に進められると、
プリデコードされたx86命令は利用可能なスペースが
あればBYTEQ106の位置にコピーされる。未処理
のx86命令において1つまたはそれ以上のプレフィッ
クスが存在すれば、プリデコードされたx86命令は1
つまたはそれ以上のプレフィックス要素を含む。最後の
プレフィックス要素は、IDECODE108のための
完了プレフィックス情報を含む統合プレフィックス要素
であり、一方その他のプレフィックス要素は、部分的な
情報を含む再コード化されたプレフィックス要素であ
り、IDECODE108によって使用されない。図4
は、再コード化されたプレフィックス要素402および
統合プレフィックス要素404を示す。x86命令op
コードバイトを含むOPCODE要素410がプレフィ
ックス要素402および404に続く。未処理のx86
命令が特殊なメモリアドレスを実行する場合には、プリ
デコードされたx86命令はmod r/m要素、たと
えばmod r/m要素412を含む。未処理のx86
命令があるアドレスモードを必要とすれば、プリデコー
ドされたx86命令はsib要素、たとえばsib要素
414を含む。未処理のx86命令がアドレス計算に関
する変位情報を必要とするか、または即値データを含む
場合には、プリデコードされたx86命令は変位/即値
データ要素、たとえば変位/即値データ要素416を含
む。
【0031】図4はまた、プリデコード情報がいかにア
サートされるかの例を示す。示されるプリデコードされ
たx86命令におけるすべての要素は、アサートされた
「v」ビットによって示されるように有効である。図4
のプリデコードされたx86命令の第1の要素である再
コード化されたプレフィックス402は、アサートされ
た「s」ビットによって識別される。x86命令に必要
とされるROPの数を示すropビットは、再コード化
動作が有効なrop情報をもたらさないかもしれないの
で、アサートされて示されていない。図4のプリデコー
ドされたx86命令の次の要素は統合プレフィックス4
04であり、有効ropビットを伴う(プリデコードさ
れたx86命令の後続の要素すべてが有効ropビット
を含む)。これに続くx86命令opコード要素410
は、アサートされた「op」ビットによって識別され
る。変位−即値エレメント416は、アサートされた
「e」ビットによって、プリデコードされたx86命令
の最後の要素としてマークされる。
【0032】未処理のx86命令が2バイトopコード
を含む場合には、第1のバイトはICACHE104に
よってプレフィックスバイトのように扱われ、そのため
プリデコードされたx86命令の統合プレフィックス
が、未処理のx86命令の第2のopコードバイトを含
むopコード要素の直前にあることとなる。この際に、
統合プレフィックスの直前にある再コード化されたプレ
フィックスは有効ropビットを含まない。
【0033】BYTEQ106の代表的な要素が図5に
詳細に示される。ビットBYTEQV[x]は要素が有
効であるかどうかを示す。未処理のx86命令のバイト
から選択された、またはそれから導出されたバイトは、
BYTEQx[7:0]に含まれ、再コード化されたプ
レフィックス情報、統合プレフィックス情報、opコー
ド情報、mod r/m情報、sib情報、または変位
もしくは即値データ情報であるかもしれない。プリデコ
ード情報は、論理1であるときに付随する未処理のバイ
トがopコードバイトであることを示すBYTEQP2
[x]と、x86命令を実行するのに必要なROPの数
を示す(表6参照)BYTEQP1[x]およびBYT
EQP0[x]と、付随する未処理のバイトがx86命
令の最初のバイトであるかどうかを示すBYTEQS
[x]と、付随する未処理のバイトがx86命令の最後
のバイトであるかどうかを示すBYTEQE[x]とを
含む。分岐誤予測情報は、BYTEQNS[x]、BY
TEQCLM0[x]およびBYTEQCLM2[x]
を含む。
【0034】
【表6】
【0035】図6は、一般的なx86命令の形態の1つ
の分解、およびプリデコードされたx86命令がBYT
EQ106の位置にいかにストアされるかの一例であ
る。たとえば、所望の演算が、EBX+ECX*8によ
って指されたメモリ位置の量への32ビット汎用レジス
タEAXの量の、レジスタ−メモリ加算であり、その和
がEBX+ECX*8によって指されたメモリ位置に置
かれると仮定する。EBX+ECX*8を用いるアドレ
スモードは、複雑なx86アドレスモードのうちの1つ
である。命令は、単一の命令、ADD[EBX+ECX
*8],EAXによってx86アセンブリ言語で表わさ
れる。3オペランドRISCアーキテクチャの一実施例
では、x86ADD命令に等価な算術演算を行なうのに
3つのROPの以下のシーケンスを必要とする。
【0036】
【数1】
【0037】LOAD ROPは、ECX×8の量に加
えられたEBXの量によって決定されるアドレスでメモ
リにストアされた量を一時レジスタTEMPに書込む。
ADD ROPはレジスタTEMPの量とレジスタEA
Xの量とを加え、その結果をレジスタTEMPにストア
する。STORE ROPは、レジスタTEMPの量を
ECX×8の量に加えられたEBXの量によって決定さ
れるアドレスでメモリにストアする。
【0038】図6に示されるように、レジスターメモリ
加算命令は、3つの未処理バイトであるADDopコー
ドバイト、mod r/mバイト、およびsibバイト
に含まれる。ICACHE104は、適切なプリデコー
ド情報を発生し、x86命令にBYTEQ106の3つ
の位置を割当て、プリデコード情報およびx86命令バ
イト(明瞭にするために分岐誤予測情報は省かれてい
る)をBYTEQ106のそれぞれの位置に書込む。す
べての位置が有効と示される。プレフィックスバイトは
存在しない。opコードバイトに関するプリデコード情
報は11001であり、第1の位置におけるバイトキュ
ーエントリが、実行するのに3つのROPのシーケンス
を必要とするx86命令のopコードであり、プリデコ
ードされたx86命令の最後のバイトではなく、プリデ
コードされたx86命令の開始バイトであることを示
す。mod r/mバイトのプリデコード情報は010
00であり、この要素がopコードではなく、実行する
のに3つのROPのシーケンスを必要とするx86命令
の一部であり、プリデコードされたx86命令の最後の
バイトではなく、かつ割当てられたx86命令の開始バ
イトでもないことを示す。sibバイトに関するプリデ
コード情報は01010であり、この要素がopコード
ではなく、実行するのに3つのROPのシーケンスを必
要とするx86命令の一部であり、プリデコードされた
x86命令の最後のバイトであって、プリデコードされ
たx86命令の開始バイトではないことを示す。
【0039】図6はまた、3つを上回るROPにマッピ
ングするx86命令の形態の分解、およびプリデコード
されたx86命令がBYTEQ106の位置にいかにス
トアされるかを示す一例を含む。たとえば、所望の演算
が、EAXレジスタによって指されたメモリ内の量をE
CXレジスタにロードし、EAXレジスタによって指さ
れたメモリ内の量とECXレジスタの元の量との和をE
AXレジスタにロードすることであると仮定する。命令
は、単一の命令、XADD[EAX],ECXによって
x86アセンブリ言語で表わされる。3オペランドRI
SCアーキテクチャの一実施例では、x86XADD命
令に等価な算術演算を行なうのに4つのROPの以下の
シーケンスを必要とする。
【0040】
【数2】
【0041】LOAD ROPは、EAXレジスタによ
って特定されたアドレスを用いてメモリ内にストアされ
た量を一時レジスタTEMP1に書込む。ADD RO
PはTEMP1レジスタ内の量とECXレジスタ内の量
とを加え、その結果を別の一時レジスタTEMP0にス
トアする。STORE ROPは、EAXレジスタによ
って特定されたアドレスを用いて一時レジスタTEMP
0内の和をメモリにストアする。OR命令は、0とTE
MP1内の量の論理和演算を行ない、その結果をECX
レジスタに置くことによって一時レジスタTEMP1内
の量をレジスタECXに動かす。
【0042】図6に示されるように、XADD命令は3
つの未処理バイトである第2バイトプレフィックスバイ
ト、第2バイトXADDopコードバイト、mod r
/mバイトに含まれる。ICACHE104は、適切な
プリデコード情報を発生し、BYTEQ106の4つの
位置すべてをx86命令に割当て、プリデコード情報お
よびx86命令バイト(明瞭にするために分岐誤予測情
報は省かれる)をBYTEQ106のそれぞれの位置に
書込む。すべての位置は有効と示される。未処理の第2
バイトプレフィックスバイト00001111は、IC
ACHE104によってコード化され、統合プレフィッ
クス00000001としてBYTEQ106にストア
されることに留意されたい。統合プレフィックスバイト
に関するプリデコード情報は01101であり、第1の
位置のバイトキューエントリがopコードでないことを
示す。XADD命令の第2バイトに関するプリデコード
情報は11100であり、第2の位置のバイトキューエ
ントリが実行するのに4つのROPのシーケンスを必要
とするx86命令のopコードであり、プリデコードさ
れたx86命令の最後のバイトではなく、プリデコード
されたx86命令の開始バイトでもないことを示す。m
od r/mバイトに関するプリデコード情報は011
10であり、この要素がopコードではなく、プリデコ
ードされたx86命令の最後のバイトであることを示
す。
【0043】[IDECODE概論]IDECODE1
08は2ステージパイプラインデコーダであり、BYT
EQ106からプリデコードされたx86命令バイトを
受取り、それらをそれぞれのROPのシーケンスに変換
し、複数の発行位置からROPを迅速に発行する。複数
命令投入の機会を最大にするために、ほとんどの単純な
命令に関しては変換はハードワイヤの高速変換経路で扱
われ、これは図7の実施例において3つ以下のROPに
マッピングするx86命令に適用される。3つを上回る
ROPを必要とする命令および頻繁には用いられない命
令は、マイクロコードROMに含まれるマイクロコード
シーケンスによって扱われる。x86命令が複数ROP
命令にマッピングされても、マイクロコードROMにマ
ッピングされても、プリデコードされたx86命令情報
は複数の発行位置で複写され、各発行位置が独立して、
および他の発行位置と並列に作用することを可能にす
る。
【0044】DECODE1ステージにおいて、IDE
CODE108は、x86プリデコード命令のROPが
高速経路で発生されるべきか、またはマイクロコードR
OM経路で発生されるべきかを決定する。図7の実施例
において、ROPシーケンスに関する情報は、1サイク
ルについて4つまでのx86命令については4つまでの
ROPを用いて高速経路論理によって発生されるか、ま
たは1つのプリデコードされたx86命令についてはマ
イクロコードROMから読出される。ROPを発生する
のに必要とされるマイクロコードROM経路および高速
経路からの情報は、ROPが進むように指定される機能
ユニットのタイプ、その機能ユニットで実行されるべき
特定の単純なRISC類似命令、ROPに関するソース
および行先ポインタ、ROPのサイズ情報、ロードまた
はストアROPであればアドレスモード、およびROP
に関する命令からのものがあれば即値フィールドを含
む。好ましくは、マイクロコードROMアクセスは高速
経路デコードとは混合されず、このことはマイクロコー
ドROMをシフトする必要をなくす。DECODE2ス
テージにおいて、IDECODE108は高速経路また
はマイクロコードROMからのROP情報を選択し、増
大して、完全なROPを供給して、これらは機能ユニッ
ト131−136で実行される。
【0045】IDECODE108はまた、完全に発行
されたプリデコードx86命令がBYTEQ106から
シフトされ、次の未発行または部分的に発行されたプリ
デコードx86命令が「キューの先頭」にシフトされる
ように、BYTEQ106のシフトを制御する。
【0046】IDECODE108はまた、BYTEQ
106における問題を検出し、マイクロコードエントリ
ポイントを強制することによって適切なようにICAC
HE104に間接的に再び指示を与える。IDECOD
E108はまた、ICACHE104内のキャッシュリ
フィル論理によって、およびBRNSEC135内の例
外およびマイクロブランチ誤予測論理によって始まりを
示されたマイクロコードROMエントリポイントを受入
れる。BRNSEC135によって発生されたマイクロ
コードエントリポイントは、XTARGETバス103
を介してIDECODE108に送られる。
【0047】IDECODE108のアーキテクチャは
図7に示され、IDECODE108における主な事象
に関するタイミング図は図8に示される。ROPマルチ
プレクサROPMUX700は、BYTEQ106のエ
ントリを4つの発行位置710、720、730および
740に送り、これらはそれぞれの高速コンバータFA
STCONV0 712、FASTCONV1 72
2、FASTCONV2732、およびFASTCON
V3 742と、それぞれの共通ステージICOMMO
N0 714、ICOMMON1 724、ICOMM
ON2 734、およびICOMMON3 744と、
それぞれのマイクロコードROMであるMROM0 7
16、MROM1 726、MROM2 736、およ
びMROM3 746とを含む。MROM0 716、
MROM1 726、MROM2736、およびMRO
M3 746は、マイクロコードROMコントローラI
DECCNTL760によって制御される。これらの要
素は一般にIDECODE108の第1ステージを形成
する。IDECODE108の第2のステージは、一般
にROPSELECT0 718、ROPSELECT
1 728、ROPSELECT2 738、およびR
OPSELECT3 748において、ならびにROP
SHARED790において実現される。
【0048】IDECODE108はIDECCNTL
760によって制御される。IDECCNTL760は
組合せ論理またはプログラマブルアレイ論理の論理構造
を含み、TADバス118に命令タイプ情報を供給する
こと、現在の発行ウィンドウ内の幾つのROPがRIS
Cコア110に受入れられるかを予測すること、予測に
鑑みてBYTEQ106をいかにシフトするかをICA
CHE104に知らせること、BYTEQ106の先頭
にあるプリデコードされたx86命令についてまだ発行
されていないROPの数をROPMUX700に知らせ
ること、マイクロコードおよび制御ROMにアクセスす
ること等の一般的な制御機能を行なう。これらの機能を
行なうために、IDECCNTL760は、RISCコ
ア110の機能ユニット131−136、およびプロセ
ッサ100の他のユニットから種々の情報を受取る。
【0049】FASTCONVx902(図9および図
17)は、高速コンバータFASTCONV0 71
2、FASTCONV1 722、FASTCONV2
732、およびFASTCONV3 742の各々を
表わす。FASTCONVx902は多くのタイプの
「単純な」x86命令(すなわち3つ以下のROPへの
マッピングをするもの)のROPへの高速変換を行な
う。各発行位置におけるFASTCONVx902は、
x86命令を実行するのに必要なROPのシーケンス
(シーケンスは1つまたはそれ以上のROPである)の
それぞれの1つにx86命令を変換し、あるプレフィッ
クスおよびSIBバイトに関してROPの動作を変更す
る。FASTCONVx902は、DECODE2ステ
ージの段階1の早い時期にラッチされる組合せ論理また
はプログラムアレイ論理のいずれとしても実現される。
【0050】あまり使用されないx86命令および実行
するのに3つを上回るROPのROPシーケンスを必要
とするx86命令は、マイクロコードROMにマッピン
グされる。一般に、3つを上回るROPにマッピングす
るx86命令は、CALLゲート命令、STRINGム
ーブ命令、および超越浮動小数点ルーチン等の複雑な対
話型命令である。その場合、IDECODE108にお
ける制御論理はエントリポイントとして知られるマイク
ロコードROMアドレスを形成し、そのエントリポイン
トに基づいて、1サイクルあたり4つのROPについて
MROM0 716、MROM 726、MROM2
736、およびMROM3 746にストアされたマイ
クロコードROM命令からROPシーケンスを読出す。
MROMx906(図9および図17)は、マイクロコ
ードROMであるMROM0 716、MROM1 7
26、MROM2 736、およびMROM3 746
の各々を表わす。MROMx906は、FASTCON
Vx902において互換性のないx86命令を扱うため
の1024×59ROMアレイである。
【0051】発行位置710、720、730および7
40はまた、それぞれのパイプラインステージICOM
MON0 714、ICOMMON1 724、ICO
MMON2 734、およびICOMMON3 744
を含む。ICOMMONx904(図9および図17)
は、パイプラインステージICOMMON0 714、
ICOMMON1 724、ICOMMON2 73
4、およびICOMMON3 744の各々を表わす。
ICOMMONx904は、発行位置x(x=0,1,
2,3)のFASTCONVx902およびMROMx
906と関連する。命令が高速経路命令であるかまたは
マイクロコードROM命令であるかにかかわらず特定の
態様で効果的に扱うことができ、かつMROMx906
における発生を必要としない、x86命令変換動作の一
部が実行され、FASTCONVx902またはMRO
Mx906の種々のステージにおける命令の部分の処理
と歩調を合わせて、変換を必要としない共通データとと
もにICOMMONx904を介してパイプライン化さ
れる。ICOMMONx904はまた、高速経路命令お
よびMROM命令の両方によって用いられるアドレス計
算を行なうために使用されるレジスタポインタを追跡す
る。有利に、FASTCONVx902の設計およびM
ROMx906の設計は簡略化される。ICOMMON
x904は、DECODE2ステージの段階1の早い時
期にラッチされるプログラマブルアレイ論理または組合
せ論理として実現される。すべてのx86命令がこの論
理を用いる。
【0052】セレクタ回路ROPSELECTx150
0(図17)は、ROPSELECT0 718、RO
PSELECT1 728、ROPSELECT2 7
38、およびROPSELECT3 748の各々を表
わす。ROPSELECTx1500は、FASTCO
NVx902およびICOMMONx904の出力、ま
たはMROMx906およびICOMMONx904の
出力のいずれかを選択し、発行情報を発生する。ROP
SELECTx1500はまた、即値アドレスまたは定
数を機能ユニット131−136に送るために即値フィ
ールド定数値を選択する。別のユニットであるROPS
HARED790は、発行位置710、720、730
および740の各々におけるROPSELECTx15
00からの情報に応答して、すべての発行位置によって
共有されている資源に関する発行情報を発生する。
【0053】IDECCNTL760は、IDECOD
E108の種々のユニットの動作を制御するための何ら
かの適切なステートマシンである。3つ以下のROPに
マッピングする、頻繁に使用されるx86命令に関して
の、図7のIDECODE108の機能は、図6のAD
D命令がいかに処理されるかで示される。ROPMUX
700は、ADD命令を最初の3つの発行位置710、
720、および730に送る。ADD命令は、発行位置
710、720および730のFASTCONVx90
2およびICOMMONx904ユニットで処理され
る。したがって、FASTCONV0 712およびI
COMMON0714は、ADD命令を第1のROP
LOAD TEMP←[EBX+ECX*8]に変換す
るための初期論理演算を与える。同様の態様で、FAS
TCONV1 722およびICOMMON1 724
は、ADD命令を第2のROPADD TEMP,TE
MP,EAXに変換するための初期論理演算を与え、F
ASTCONV2 732およびICOMMON2 7
34は、ADD命令を第3のROP STORE[EB
X+ECX*8]←TEMPに変換するための初期論理
演算を与える。
【0054】頻繁には使用されないx86命令および4
つ以上のROPのシーケンスにマッピングするx86命
令に関しての図7のIDECODE108の機能は、図
6のXADD命令がいかに処理されるかで示される。B
YTEQ106の先頭に位置するXADD命令は、RO
PMUX700によって4つの発行位置710、72
0、730および740のすべてに送られ、発行位置7
10、720、730および740のICOMMONx
904ユニットで処理される。XADD命令はIDEC
CNTL760にも供給され、これはMROM0 71
6、MROM1726、MROM2 736およびMR
OM3 746にアクセスするための、および制御RO
M750にアクセスするためのエントリポイント値を決
定する。エントリポイントに基づいて、シーケンスにお
ける第1のROPに関するROP情報がMROM0 7
16から読出され、ICOMMON0 714の出力と
組合わされて、第1のROP LOAD TEMP1,
[EBX]を供給する。同様の態様で、シーケンスの第
2のROPに関するROP情報が、エントリポイントの
値に従ってMROM1 726から読出され、ICOM
MON1 724の出力と組合わされて、第2のROP
ADD TEMP0,TEMP1,ECXを供給し、
シーケンスの第3のROPに関するROP情報は、エン
トリポイントの値に従ってMROM2 736から読出
され、ICOMMON2 734の出力と組合わされて
第3のROP STORE[EAX],TEMP0を供
給し、シーケンスの第4のROPに関するROP情報
は、エントリポイントの値に従ってMROM3 746
から読出され、ICOMMON3 744の出力と組合
わされて、第4のROP OR ECX,TEMP1を
供給する。x86命令がそれを処理するのに利用可能な
発行位置の数を上回ってマッピングするべきであれば
(4つのROPにマッピングするXADD命令は該当し
ない)、処理は次のサイクルでも続き、第5のROPが
発行位置0から発行されるであろう。
【0055】[ROPマルチプレクサROPMUX]図
1に示されるプロセッサ100のアーキテクチャにおけ
る種々の機能ブロックおよびIDECODE108の他
の要素に関連して図9に示されるROPMUX700
は、BYTEQ106における完全なプリデコードx8
6命令をIDECODE108内の発行位置710、7
20、730および740の1つまたはそれ以上に割当
てる機能を果たす。1つまたはそれ以上のプリデコード
されたx86命令は、BYTEQ106から、BYTE
Q106の先頭にあるx86命令から始まって、発行位
置710、720、730および740の利用可能なも
のに同時に送られる。たとえば、BYTEQ106にお
ける最初の4つのプリデコードされたx86命令の各々
が1つのROPにマッピングするのであれば、BYTE
Q106の先頭にある第1のプリデコードされたx86
命令は発行位置0にマルチプレクスされ、第2のプリデ
コードされたx86命令は発行位置1にマルチプレクス
され、第3のプリデコードされたx86命令は発行位置
2にマルチプレクスされ、第4のプリデコードされたx
86命令は発行位置3にマルチプレクスされる。その代
わりに、BYTEQ106の第2のプリデコードされた
x86命令が2つのROPにマッピングするのであれ
ば、第1のプリデコードされたx86命令は発行位置0
にマルチプレクスされ、第2のプリデコードされたx8
6命令は発行位置1および2にマルチプレクスされ、第
3のプリデコードされたx86命令は発行位置3にマル
チプレクスされる。
【0056】マイクロコードROMにマッピングせず、
発行ウィンドウに完全に納まらないプリデコードされた
x86命令は、第1の発行ウィンドウにおいて利用可能
であるできるだけ多くの発行位置710、720、73
0および740に割当てられる。IDECCNTL76
0は信号PARTIALDISP[1:0]を用いて、
発行ウィンドウの前部にあるx86命令の幾つかのRO
Pが発行されたかどうかを判断し、既に発行されたRO
Pには発行位置が割当てられないようにする。
【0057】マイクロコードROMにマッピングし、B
YTEQ106のキューの先頭にある、プリデコードさ
れたx86命令のバイトキューエントリは、4つの発行
位置710、720、730および740のすべてに送
られる。
【0058】ROPMUX700の動作は、BYTEQ
106に関するスキャン機能のフローチャートである図
10ないし図12と、BYTEQ106の特定のタイプ
のプリデコードされたx86命令の要素がROPMUX
700によってIDECODE108内の発行位置にい
かに送られるかを示す図13および図14とに示され
る。BYTEQ106がシフト動作の後で有効になる
と、ROPMUX700はBYTEQ106を「スキャ
ン」して、完全なプリデコードx86命令およびこれら
がマッピングするROPの数を識別し、これについての
ある情報を得る。不必要な遅延を避けるために、スキャ
ンは、好ましくは組合せ論理またはプログラマブルアレ
イ論理を用いて本質的に同時に行なわれる。図10ない
し図12のフローチャートは、バイトキュースキャン論
理によって行なわれる種々の動作を示すためのものであ
り、これらの種々の動作の逐次的順序を必ずしも示すわ
けではないと解釈されたい。
【0059】動作1002において、バイトキュースキ
ャン機能は、キューの先頭から始まって、全体で4つの
ROPにマッピングするBYTEQ106の命令を識別
する。4つのROPが検出される前にキューの最後に出
会えば、バイトキュースキャン機能はBYTEQS10
6のすべての命令を識別する。命令はアレイBYTEQ
におけるそのそれぞれの開始ビットを検出することによ
って識別され、各命令に関連するROPの数は、そのo
pコードバイトを識別し、opコードバイトに関連する
ROPビットの値を検出することによって決定される。
完全な命令は、命令の開始ビットがアレイBYTEQE
の対向する終了ビットを有することを定めることによっ
て識別される。
【0060】たとえば、図13に示されるキューエント
リに与えられるスキャン機能を検討する。ビットBYT
EQS[0]は第1の命令I1の開始を識別し、命令I
1のopコードバイトI1−OCはビットBYTEQP
2[0]によって識別され、ROPの数、したがって命
令I1に割当てられるのに必要な発行位置の数は、op
コードビットBYTEQP1[0]およびBYTEQP
0[0]によって示される。同様の態様で、第2の命令
I2の開始はビットBYTEQS[3]によって識別さ
れ、そのopコードバイトはビットBYTEQP2
[5]によって識別され、命令I2がマッピングするR
OPの数はビットBYTEQP1[5]およびBYTE
QP0[5]によって識別される。命令I1およびI2
は完全な命令である、というのはセットビットBYTE
QS[0]が反対のセットビットBYTEQE[2]を
有し、セットビットBYTEQS[3]が反対のセット
ビットBYTEQE[11]を有するからである。
【0061】動作1004において、ROPMUX70
0は、発行位置内のROPに関して、所与の命令につい
てのROPシーケンスにおけるそれぞれの位置を示すた
めの制御信号ROPxNUM[1:0]を発生する(図
8の事象804)。図13の例では、ROP0NUMは
0であり、ROP1NUMは1であり、ROP2NUM
は2であり、ROP3NUMは0である。
【0062】動作1006において、BYTEQ106
の先頭にあるプリデコードされたx86命令がマイクロ
コードROMマッピング命令であるかどうかの判断が行
なわれる。BYTEQ106の先頭にあるプリデコード
されたx86命令がマイクロコードROMマッピング命
令であれば、図11の動作が行なわれる。BYTEQ1
06の先頭にあるプリデコードされたx86命令がマイ
クロコードROMマッピング命令でなければ、図12の
動作が行なわれる。
【0063】BYTEQ106の先頭にあるプリデコー
ドされたx86命令がマイクロコードROMマッピング
命令でなければ、発行位置710、720、730およ
び740が、動作1032(図12)で、各プリデコー
ドされたx86命令がマッピングするROPの数および
利用可能である発行位置の数に依存して、プリデコード
されたx86命令に割当てられる(図8の事象80
6)。この態様で割当てられた発行位置に関するROP
xNUMはそのそれぞれの値を割当てられ、制御信号R
OPMROMはアサートされず、各発行位置についての
MUXVAL[x]はアサートされる。たとえば、命令
I1のBYTEQP1[0]およびBYTEQP0
[0]の値が、命令I1が3つのROPにマッピングす
ることを示す10であると仮定する。最初の3つの発行
位置0、1および2が利用可能であり、命令1に割当て
られ、図13に示されるとおりである。命令I2に関し
て、BYTEQP1[5]およびBYTEQP0[5]
の値も、命令I2が3つのROPにマッピングすること
を示す10であると仮定する。発行位置は1つしか利用
可能でないので、これは命令I2に割当てられる。発行
位置資源は、現在のデコードステージでは命令I2に対
して完全に割当てるには利用可能でないことに注目され
たい。必要とされる残りの2つの発行位置は次のサイク
ルで命令I2に割当てられ、これは命令I2がBYTE
Q106の先頭に、値2にセットされる制御信号PAR
TIALDISPに従ってシフトされた後である。現在
の発行ウィンドウでは未使用でありBYTEQ106の
先頭にない何らかのx86命令がマイクロコードROM
にマッピングする場合には、発行位置がまだ割当てられ
る。しかしながら、このような態様で割当てられた発行
位置に関するROPxNUMは「ドントケア」である、
というのは制御信号ROPMROMがアサートされず、
マイクロコードROMにマッピングされるがキューの先
頭にないx86命令に割当てられる発行位置から発行さ
れるROPは有効とマークされないからである(発行位
置xに関するMUXVAL[x]はアサートされな
い)。有効でないROPはプロセッサ100の後続のパ
イプラインステージで処理されない。
【0064】動作1034において、各発行位置はBY
TEQ106にストアされたプリデコードx86命令か
らの4つの要素を受取る。4つの要素とは、統合プレフ
ィックスデータ要素、opコード要素、mod r/m
要素、およびsib要素である。命令の開始および終了
ビットから定められるように、プリデコードされたx8
6命令に要素が存在しなければ、不在の要素に対応する
発行位置で受取られる情報は「ドントケア」情報として
扱われる。たとえば、統合プレフィックス要素は図13
の命令I1には存在しない。
【0065】図13の例では、発行位置が割当てられる
命令は命令I1およびI2である。第1の命令I1はバ
イトキュー要素I1−OC、I1−MRMおよびI1−
SIBを含み、これらはそれぞれ、例示的に図6のAD
D命令のopコード要素、mod r/m要素、および
sib要素である。ROPMUX700は、これらの3
つのバイトキュー要素を、不在の統合プレフィックス要
素に対応する空要素とともにそれが割当てられた発行位
置、すなわち第1、第2および第3の発行位置に送る。
第2のプリデコードされたx86命令I2は、例示的
に、プレフィックス変更子、2つのopコード、mod
r/mデータ、sibデータ、および変位/即値デー
タを有するx86命令から得られる。第2の命令I2
は、2つのプレフィックス要素である再コード化された
プレフィックス要素I2−PREIとそれに続く統合プ
レフィックス要素I2−PRECから始まる。それに続
くのは、opコード要素I2−OC(2opコード命令
であることを知らせる未処理のx86命令の第1のop
コードは、統合プレフィックス要素I2−PRECにお
けるビットによって表わされる)、mod r/m要素
I2−MODRM、およびsib要素I2−SIBであ
る。これに続く4つのバイトキュー要素は、命令I2の
すべての変位/中間バイトである。ROPMUX700
は、I2−PREC、I2−OC、I2−MRM、およ
びI2−SIBをそれに割当てられた発行位置、すなわ
ち第4の発行位置に送る。
【0066】動作1036において、キューの次の先頭
は、発行される1、2、3および4のROPに関して定
められる。この情報はBYTEQ106をシフトするの
に用いられる。図14は、命令I2がBYTEQ106
の先頭にシフトされた後の命令の発行を示す。命令I2
がマッピングする3つのROPは図13に示されるデコ
ードステージでは部分的にしか発行されていないので、
最初の2つの発行位置0および1は、2の値(2進法1
0)を有する制御信号PARTIALDISP[1:
0]に従って命令I2に割当てられる。命令I3および
I4の各々が1つのROPにマッピングすると仮定すれ
ば、発行位置2は命令I3に割当てられ、発行位置3は
命令I4に割当てられる。
【0067】BYTEQ106の先頭にあるプリデコー
ドされたx86命令がマイクロコードROMマッピング
命令であれば、4つの発行位置のすべてがマイクロコー
ドROMマッピング命令に割当てられる。マイクロコー
ドROMマッピング命令に関しては、BYTEQP1お
よびBYTEQP0の値は11であり、命令がマイクロ
コードROMマッピングであることを示す。4つの発行
位置資源の割当が、x86命令がマッピングするROP
シーケンスの発行を完了させるのに十分でない場合に
は、4つの発行位置資源が、再び次のサイクルでマイク
ロコードマッピング命令に割当てられる。この態様で割
当てられた発行位置に関するROPxNUMは使用され
ていないので「ドントケア」であり、発行位置は有効と
マークされ(MUXVAL[3:0]ビットはアサート
される)、制御信号ROPMROMは、マイクロコード
マッピングx86命令がキューの先頭にあるのでアサー
トされる。
【0068】動作1022において、IDECCNTL
760はマイクロコードROMエントリポイントを形成
し、MROM0 716、MROM1 726、MRO
M2736、およびMROM3 746に含まれるRO
Pシーケンスにアクセスする。最初は、エントリポイン
トは、BYTEQ106の先頭にあるROP0PRE、
ROP0OP、ROP0MODRM、およびROP0S
IB要素と、プリデコードされたx86命令から得られ
るモード(リアル/プロテクト)および優先順位レベル
情報等のプロセッサ状態情報とに基づき、その後マイク
ロコードシーケンス自体からの他の情報に基づく。
【0069】動作1024において、BYTEQ106
の先頭にあるマイクロコードマッピングx86命令から
の統合プレフィックスデータ要素、opコード要素、m
odr/m要素、およびsib要素は、信号ROPxP
RE、ROPxOP、ROPxMODRM、およびRO
PxSIB要素としてICOMMONxによって使用さ
れるためにすべての発行位置に供給される。命令の開始
および終了ビットから定められるとき、プリデコードさ
れたx86命令に要素がなければ、不在の要素に対応す
る発行位置で受取られる情報は「ドントケア」情報とし
て扱われる。
【0070】動作1026において、キューの次の先頭
が、発行される1、2、3および4のROPに関して定
められる。この情報は、マイクロコードマッピングx8
6命令がフルに発行される場合にBYTEQ106のシ
フトのために用いられる。
【0071】ROPMUX700に関連する種々のデー
タ、アドレス、および制御信号は、2つのデコードステ
ージだけで命令デコードを完了するために、FETC
H、DECODE1、およびDECODE2パイプライ
ンステージの異なる時間に有効となる。FETCHステ
ージの間、ICACHE104からROPMUX700
へのある分岐情報が有効になる。分岐予測は、その技術
が分岐が存在する際の十分な命令フェッチ速度を可能に
するので図1のプロセッサ100において使用され、複
数の投入を伴なう性能の実現には必要である。分岐は、
同時係属中の米国特許出願連続番号第146,382号
(デイビッド・ビィ・ウィットおよびマイケル・ディ・
ゴダードの「高性能スーパースカラマイクロプロセッ
サ」に開示され、その全体をここに引用によって援用す
る。他の適切な分岐技術およびシステムは当該分野では
周知である。
【0072】図8に示されるように、BYTEQ106
からROPMUX700への16の未処理バイトBYT
EQx[7:0]は、DECODE1ステージの段階1
の早い時期に有効になる。DECODE1ステージの段
階1の早い時点ではまた、BYTEQ106からROP
MUX700へのプリデコード情報入力が有効になる。
これらは、プリデコード開始バイト指示BYTEQS
[15:0]、プリデコード有効バイト指示BYTEQ
V[15:0]、プリデコード終了バイト指示BYTE
QE[15:0]、バイトプリデコード情報BYTEQ
P2[15:0]、BYTEQP1[15:0]、およ
びBYTEQP0[15:0]である。BYTEQP2
は、関連のバイトがopコードバイトであればセットさ
れる。段階1の早い時点でまた有効となるのは、IDE
CCNTL760からの制御信号PARTIALDIS
P[1:0]であり、これはBYTEQ106の先頭に
あるx86命令について発行されずに残っているROP
の数を示す。
【0073】DECODE1ステージの段階1の早い時
点ではまた、BYTEQ106からROPMUX700
への分岐情報入力が有効になる。これらは、バイト非順
次指示BYTEQNS[15:0]、バイトキャッシュ
カラム指示BYTEQCLM1[15:0]およびBY
TEQCLM0[15:0]である。この情報の使用
は、同時係属中の米国特許連続出願番号第145,90
5号、デイビッド・ビィ・ウィットおよびマイケル・デ
ィ・ゴダードの「可変バイト長命令に特に適したプリデ
コードされた命令キャッシュおよびその方法」に議論さ
れ、その全体がここに引用によって援用される。
【0074】発行位置に供給される幾つかの信号は、D
ECODE1ステージの段階1の遅くに有効になる。図
8に示されるように、信号ROPxNUM[1:0]は
FASTCONVx902に供給されて、発行位置が特
定のROPシーケンスの第1、第2、または第3のRO
Pに割当てられるか、またはマイクロコードROMに割
当てられるのかを示す。バイトキューの先頭にあるx8
6命令がマイクロコードROM命令であるかどうかを示
す、IDECCNTL760への信号ROPMROMは
有効となる。
【0075】DECODE1ステージの段階1の遅くに
はまた、IDECCNTL760への信号ROPxDI
FFが有効となり、各可能な発行について、割当てられ
る486の命令の中で残っているROPの数を示す。R
OPxDIFFはIDECCNTL760に供給され
る。ROPxDIFFはIDECCNTL760によっ
て用いられて、次のサイクルでキューの先頭にあるプリ
デコードされたx86命令に関して発行されないで残っ
ているROPの数であるPARTIALDISPを定め
る。PARTIALDISP[1:0]は、現在の発行
ウィンドウから発行されると予測されたROPの数に基
づいて選択されるROPxDIFF信号の1つから次の
サイクルの間ラッチされる。図13の例に関しては、R
OP0DIFFは2であり、ROP1DIFFは1であ
り、ROP2DIFFは0であり、ROP3DIFFは
2である。IDECCNTL760が発行ウィンドウ内
の4つのROPすべてが発行されるべきであると判断す
ると仮定すれば、ROP3DIFFがPARTIALD
ISPとして選択され、ラッチされる。PARTIAL
DISPの値は、図14に示される次のサイクルではし
たがって2である。
【0076】DECODE1ステージの段階1の遅くに
有効となる以下の信号が、発行位置710、720、7
30および740の各々の種々のブロックに供給され
る。信号MUXVAL[3:0]は、それぞれ発行位置
710、720、730および740に関するROP有
効ビットを含む。MUXVALのビットは、それぞれ発
行位置710、720、730および740のICOM
MONx904ブロックに供給され、これらはその値に
基づいて発行制御信号を発生する。FASTCONVx
902、ICOMMONx904、およびIDECCN
TL760(x=0,1,2,3)に全体でまたは部分
的に供給される、信号ROPxPRE[7:0]、RO
PxOP[7:0]、ROPxMODRM[7:0]、
およびROPxSIB[7:0]は、発行位置xが割当
てられるx86命令のプレフィックス、opコード、m
odrm、およびsibバイトである。特定のバイトが
特定の命令に適用されないと仮定すれば、これはドント
ケアとして扱われることに注目されたい。たとえば、図
13は、命令I1がプレフィックスバイトを含まないの
で、発行位置0、1および2はプレフィックスバイトに
対応する位置において無効データを受取ることを示す。
この無効データは、たとえばプレフィックスバイトの不
在下でプレフィックスバイト位置におけるすべてのビッ
トをリセットした結果であってもよいが、他の構成もま
た適切である。いずれにしても、ROPMUX700
は、データを、それが命令開始および終了ビットによっ
て識別される範囲外であるので無効と識別し、それを無
視する。
【0077】ROPxPRE[7:0]のどのビット
も、バイトが有効でありその終了ビットがセットされな
い(これはそれが前の命令の一部であることを示す)こ
とがない限り、セットされない。プレフィックス情報
は、opコードの直前の統合バイトに要約され、以下の
表7に挙げられる情報を含む。
【0078】
【表7】
【0079】ROPMUX700からICACHE10
4への信号D1SHFT[15:0]ないしD4SHF
T[15:0]もまた、図8に示されるようにDECO
DE1ステージの段階1の遅くに有効になる。これらの
信号はICACHE104に、発行されるROPの可能
な数すべて、すなわち1、2、3、または4のROPに
ついてバイトキューの前部にシフトされるべきバイトの
位置を示す。どの信号が使用されるかは、IDECCN
TL760によって定められて信号DISPATCH0
ないしDISPATCH4としてICACHE104に
送られる推定に依存する。
【0080】ROPSELECTx1500(図17参
照)に供給される以下の信号は、DECODE2ステー
ジの段階1の早くに有効となる。信号ROPxDI[6
3:0]は、割当てられたx86命令の最後のバイトに
従って正しく位置調整されたバイトキューからの未処理
の命令バイトを含む。4バイトの変位/即値データを含
む命令、たとえばROPxDI[63:0]は、未処理
のプレフィックスバイト、未処理のopコードバイト、
未処理の修飾r/mバイト、未処理のsibバイト、お
よび未処理の変位/即値データの4バイトを含むであろ
う。信号ROPPRDTKN[3:0]は、x86命令
の最後のバイトからの割当てられた非順次指示である。
信号ROPxCLM[1:0]は、x86命令の最後の
バイトからの割当てられたキャッシュカラム指示であ
る。
【0081】32ビットまたは16ビット指示を与える
コードセグメントレジスタからの信号CS32X16
は、プロセッサ状態関連信号である。この信号は実際に
はシリアルな態様で変えられ、IDECODE108が
活性のときにはスタティックである。
【0082】[バイトキューシフト動作の制御]ROP
発行が完了したプリデコードx86命令のバイトキュー
エントリは、BYTEQ106からシフトアウトされ
て、新しいプリデコードx86命令の要素のための空間
を与える。BYTEQ106は、1サイクルに0ないし
15の位置をシフトすることのできるバレルシフタを含
む。BYTEQ106のシフトは、信号D1SHFT
[15:0]ないしD4SHFT[15:0]とDIS
PATCH0ないしDISPATCH4によって制御さ
れ、これらは有利に、BYTEQ106が次のデコード
サイクルのためにタイムリーな態様でシフトされ得るよ
うに、DECODE1ステージの適切な時間にそれぞれ
ROPMUX700およびIDECCNTL760によ
って発生される。
【0083】IDECODE108が、DECODE2
ステージで発行が起こる2ステージデコーダなので、B
YTEQ106は、発行されたROPの実際の数がわか
る前にシフトされなくてはならない。ROPMUX70
0は、DECODE1ステージの段階1の早くに有効で
ある種々の入力をICACHE104から受取り、DE
CODE1ステージの段階1の遅くには、信号D1SH
FT[15:0]ないしD4SHFT[15:0]によ
ってICACHE104に、可能な発行シナリオ、すな
わち0、1、2、3または4のROPの発行の各々につ
いてバイトをいかにシフトするかを示す。ICACHE
104は、DECODE1ステージの段階2でこの情報
を用いてBYTEQ106のためのロード/シフト論理
を設定する。DECODE1ステージの段階2の非常に
遅い時点で、IDECCNTL760はBYTEQ10
6から幾つのROPがシフトされるかの予測を伝え、I
CACHE104は次のDECODE1ステージの段階
1においてダイナミックにバイトキューをシフトし、充
填する。予測が用いられるのは、ROPタイプおよび機
能ユニットのフルの状態に関する情報がDECODE1
ステージの後までわからないからである。
【0084】ROPMUX700におけるD1SHFT
[15:0]ないしD4SHFT[15:0]の評価
は、発行位置0、1、2および3がBYTEQ106か
らプリデコードされたx86命令を受取るとすぐに始ま
り、D1SHFT[15:0]ないしD4SHFT[1
5:0]がDECODE1ステージの第1の段階の遅く
に有効になる。D1SHFT[15:0]は、ROPが
1つだけ発行されるのであればBYTEQ106の先頭
にシフトされるべきバイトキューエントリを示し、D2
SHFT[15:0]は、2つのROPが発行される場
合にBYTEQ106の先頭にシフトされるべきバイト
キューエントリを示し、D3SHFT[15:0]は3
つのROPが発行される場合にBYTEQ106の先頭
にシフトされるべきバイトキューエントリを示し、D4
SHFT[15:0]は4つのROPが発行される場合
にBYTEQ106の先頭にシフトされるべきバイトキ
ューエントリを示す。有利に、D1SHFT[15:
0]ないしD4SHFT[15:0]の評価は、できる
だけ早く、かつ発行されたROPの実際の数がわかる前
に始められ、クロックサイクルを無駄にするのを防ぐ。
【0085】幾つのROPが発行されるかの予測はID
ECCNTL760で行なわれ、信号DISPATCH
0(どのROPも発行されない)ないしDISPATC
H4(4つのROPが発行される)のうちの適切な1つ
によってICACHE104に伝えられる。信号DIS
PATCH0ないしDISPATCH4は、信号D0S
HFT[15:0]ないしD4SHFT[15:0]の
うちのどれも選択しないか、またはその対応する1つを
選択し、これがBYTEQ106のシフトを制御する。
【0086】図9の実施例において、予測は2つの規則
を適用することによって達成される。まず、過去に発生
と予測された分岐(次のROP非順次)は発行されず、
プログラムカウンタ維持を簡略にする。第2に、浮動小
数点演算のために使用される2つのROPは同じサイク
ルに発行されなくてはならず、一実施例においては、初
めの2つの発行位置から、または別の実施例では初めの
3つの発行位置のうちの2つから発行されなくてはなら
ない。典型的には、すべてのROPが高速経路整数RO
Pであれば、IDECCNTL760は4つのROPの
発行を予測する。多くの異なる予測ルールが可能であ
り、過去に発生と予測された分岐が発生されることを可
能にするものや、いかなる位置からでも、異なる発行ウ
ィンドウからでも浮動小数点演算の2つの浮動小数点R
OPが発行されることを可能にするルールでさえも可能
であるが、このようなルールを使用するとより複雑な論
理計算をより速く実行することが必要となるであろう。
【0087】予測は、ROPSELECTx1500
(図17)からの信号QVAL[3:0]およびQPR
DTKN[3:0]に基づき、これらのすべて、および
未処理のx86opコードバイトの上位5ビットがDE
CODE1ステージの段階2の中ほどで有効になる。信
号QVAL[3:0]は、MUXVALの段階2でラッ
チされたものである。QVAL[3:0]は予測の際に
無効ROPの非発行を考慮に入れるために用いられる。
発行ウィンドウ内のROPが発生と予測された分岐にあ
るかどうかを示す信号QPRDTKN[3:0]は、B
YTEQNS[x]の段階2でラッチされたものであ
る。QPRDTKN[3:0]は予測の際に過去に発生
と予測された分岐(次のROP非順次)を検出するため
に用いられ、そのため発行ウィンドウ内の後続のROP
は発行されないこととなる。
【0088】発行されたROPの実際の数は、機能ユニ
ット131−136から、およびROB114からの種
々の信号に基づいて、DECODE2の第2段階の非常
に遅い時点になって初めてわかる。これらの信号は、機
能ユニットフル信号ALU0FULL、ALU1FUL
L、LSFULL[1:0]、BRNFULL[1:
0]およびFPTFULLと、リオーダバッファ割当指
示ROBSTAT[3:0]と、ROB空指示ROBE
MPTYとを含む。デコード中の各有効ROPについ
て、ROBSTAT[3:0]の対応するビットは、R
OB114の位置がそれに対する割当のために利用可能
であるかどうかを示す。ROB空指示ROBEMPTY
はアサートされて、直列化事象を始めることができると
きを示す。
【0089】図9の実施例の予測技術は、最終的に発行
された実際のROPの数に等しいか、またはそれより多
い予測をもたらすので、発行されたROPの実際の数
は、DECODE1ステージの第1段階の遅くに行なわ
れる予測とは一致しないかもしれない。この場合、ID
ECODE108は、後続のサイクルで残りの未発行の
ROPが発行されるまで機能停止となる。この機能停止
は、IDECCNTL760からROPMUX700へ
の信号DISPALLによって制御される。DISPA
LLがDECODE1ステージの第2段階の遅い時点ま
でにアサートしなければ、これはDECODE2ステー
ジにおいて発行するべきROPが発行されないことを後
続の段階1に知らせる。DISPALLがアサートされ
ないとき、DECODE2ステージの間DECODE1
ステージ信号をラッチするROPSELECTx150
0内のラッチは、DECODE1信号がDECODE2
ステージに動くことを防ぐように、活性化されない。
【0090】図13の例において、ROPMUX700
は第1のプリデコードされたx86命令の要素(I1−
OC、I1−MRM、およびI1−SIB)を第1、第
2および第3の発行位置に送り、第2のプリデコードさ
れたx86命令の要素(I2−PREC、I2−OC、
I2−MRM、およびI2−SIB)を第3の発行位置
に送る。D1SHFTおよびD2SHFTの両方にシフ
トなしを表わすビットパターン「0000000000
000001」(ビットパターンにおける2進数1の位
置はキューの先頭の位置にシフトされるべきバイトを示
す)が割当てられる。第1のx86命令は、第1のx8
6命令を完全に実行するのに必要な数である3つ未満の
ROPが発行されるのであれば、BYTEQ106の先
頭に残っているべきだからである。D3SHFTには3
つのエントリを左シフトする(第4のバイトをキューの
先頭に置く)ことを表わすビットパターン「00000
00000001000」が割当てられる。第1のx8
6命令I−1は、ROPが最初の3つの発行位置から発
行されるのであれば完全に実行され、したがってBYT
EQ106から外にシフトされるべきであり、第2のプ
リデコードされたx86命令I−2がBYTEQ106
の前部にシフトされて新しいプリデコードされたx86
命令のために空間を設けるべきだからである。D4SH
FTにも3つのエントリを左シフトすることを表わす同
じビットパターン「000000000000100
0」が割当てられる、というのは第2のx86命令I−
2は、第2のx86命令I−2を完全に実行するのに必
要な数である3つ未満のROPが発行されるのであれば
BYTEQ106の先頭に進み、そこに留まるべきであ
るからである。
【0091】その後、DECODE1ステージの第2段
階の非常に遅い時点で、DISPATCH0が、現在の
サイクルでどのROPも予測発行されないのであればア
サートされ、その結果、次のサイクルではBYTEQ1
06のシフトは生じず、第1の発行位置から現在のサイ
クルで予測発行されるROPが1つだけであればDIS
PATCH1がアサートされて、その結果次のサイクル
でBYTEQ106のシフトが生じず、現在のサイクル
において最初の2つの発行位置から2つのROPが予測
発行されるのであればDISPATCH2がアサートさ
れ、その結果次のサイクルでBYTEQ106のシフト
は生じず、現在のサイクルで最初の3つの発行位置から
3つのROPが予測発行されるのであればDISPAT
CH3がアサートされ、その結果次のサイクルでBYT
EQ106の3つのエントリの左シフトが起こり、現在
のサイクルにおいて発行位置すべてから4つのROPが
予測発行されるのであればDISPATCH4がアサー
トされ、その結果次のサイクルでBYTEQ106の3
つのエントリの左シフトが起こる。図14は、先のデコ
ードサイクルで4つのROPすべてが発行された後の第
2のプリデコードされたx86命令I−2、第3のプリ
デコードされたx86命令I−3、および第4のプリデ
コードされたx86命令I−4のBYTEQ106にお
ける位置を示す。
【0092】[ROPMUX−FASTCONVx−I
COMMONx−ROPSELECTx演算]FAST
CONVx902およびICOMMONx904は、R
OPMUX700から受取った信号を用いての種々のタ
イプの「単純な」x86命令のROPへの高速変換に関
与する。
【0093】まずFASTCONVx902に与えられ
る信号を検討する。ROPxNUMは、x86命令を実
行するのに必要なROPのシーケンスにおけるROP位
置xで発生されるべきROPの数を特定し、シーケンス
におけるROPの総数は、ビットBYTEQP2[a]
がセットされるバイトキュー要素「a」に対応するビッ
トBYTEQP1[a]およびBYTEQP0[a]に
よって特定される。図13の例において、BYTEQP
2[0]はセットされ、これはADDopコードを含む
第1のバイトキュー要素I1−OCに対応する。FAS
TCONV0に与えられるROP0NUMは00であ
り、FASTCONV1に与えられるROP1NUMは
01であり、FASTCONV2に与えられるROP2
NUMは10である。図13の例において、BYTEQ
P2[5]もセットされ、これはBYTEQ106の先
頭から第6のバイトキュー要素に含まれる第2の命令I
2のopコードに対応する。FASTCONV3に与え
られるROP3NUMは00である。
【0094】ROPMUX700からの信号ROPxP
RE[2:0]は統合プレフィックスからのビットであ
り、表7に述べられる情報を与える。特に、ビット
[2]はオペランドサイズプレフィックスが存在するか
どうかを示す。オペランドサイズプレフィックスは、コ
ードセグメント記述レジスタCS_desc(図示せ
ず)におけるDefaultAttrフラグによって特
定されるデフォルトオペランドサイズ属性によって特定
されるデフォルトオペランドサイズの意味を反転する。
ビット[1]はアドレスサイズプレフィックスが存在す
るかどうかを示す。アドレスサイズプレフィックスは、
コードセグメント記述レジスタCS_desc(図示せ
ず)におけるDefaultAttrフラグによって特
定されるデフォルトアドレスサイズ属性によって特定さ
れるデフォルトアドレスサイズの意味を反転する。ビッ
ト[0]は2バイトopコードが存在するかどうかを示
す。ICACHE104はこのような2opコード命令
をすべて検出し、第1のインジケータopコードをRO
PxPRE[0]として表わす。
【0095】図13の例に関して、第1のプリデコード
された命令I1がそこから導出される未処理のx86命
令は図6に示されるADD命令であり、これはプレフィ
ックスを持たず、単一のopコード命令である。したが
って、発行位置0、1および2におけるそれぞれROP
0PRE[2:0]、ROP1PRE[2:0]および
ROP2PRE[2:0]は000である。第2の未処
理のx86命令I2が386命令セットのために加えら
れた「符号拡張付移動」命令MOVSX等の2opコー
ド命令であると仮定し、かつデフォルトアドレスおよび
デフォルトオペランドサイズの意味を反転する2つのプ
レフィックスを有すると仮定すれば、発行位置3のRO
P2PRE[2:0]は111であろう。
【0096】図13の例に関して、信号ROP0OP、
ROP1OP、およびROP2OPは信号BYTEQ0
[7:0]であり、これはx86ADD命令バイト00
000001であり、一方、信号ROP3OPはBYT
EQ5[7:0]であり、これはプリデコードされたx
86命令I2がそこから導出される未処理のx86命令
の第2の命令バイトである。
【0097】さらに図13の例に関して、信号ROP0
MODRM[7:0]、ROP1MODRM[7:
0]、およびROP2MODRM[7:0]は、信号B
YTEQ1[7:0]であり、これはプリデコードされ
たx86命令I1がそこから導出される未処理のx86
命令のmod r/mバイト00000011である。
信号ROP3MODRM[7:0]は信号BYTEQ6
[7:0]であり、これはプリデコードされたx86命
令I2がそこから導出される未処理のx86命令のmo
d r/mバイトである。
【0098】何らかの適切な組合せ論理またはプログラ
マブルアレイ論理を用いて、各発行位置のFASTCO
NVx902は、発行位置xのためのROP制御および
データ信号をアセンブルし、そのオペランドおよび行先
ポインタを符号化する際にROPSELECTx150
0によって用いられるための適切な信号にROPxOP
[7:0]を変換する。選択されたROPは、ROPx
NUM[1:0]に基づき、ROPxPRE[2:0]
およびROPxMODRM[7:0]に従って定められ
た未処理のx86命令がマッピングするシーケンスのR
OPのうちの適切な1つである。FASTCONVx9
02は、例示的に、レジスタ−レジスタ命令、メモリ−
レジスタ命令、レジスタ−メモリ命令、算術演算命令、
シフト命令、および分岐命令を含む単純なx86命令の
すべてについてこの機能を実行する。
【0099】DECODE1ステージの段階2の遅くに
有効になる、FASTCONVx902の出力での信号
は、機能ユニットのうちの適切な1つを選択するための
ROPのタイプを示すITYPE[2:0]と、RIS
Copコード自体を示すIOP[7:0]と、ROPを
構成する際にAオペランドが用いられるべきであること
を示すUSEAと、ROPを構成する際にBオペランド
が用いられるべきであることを示すUSEBと、Aオペ
ランドに関してREGF112およびROB114への
オペランドポインタを含むAREG[9:0]と、Bオ
ペランドに関してREGF112およびROB114へ
のオペランドポインタを含むBREG[9:0]と、R
EGF112およびROB114への行先ポインタを含
むBREG[9:0]と、REGF112およびROB
114への行先ポインタを含むDREG[9:0]と、
ROB114に整数および浮動小数点フラグ更新制御情
報を供給するROBDEC[6:0]と、変位フィール
ドが用いられるべきであることを示すUSEDISP
と、さらなるROPが発行される前にパイプラインが空
にされなくてはならないことを示すことによって状態可
変更新およびテスト可変読出等の直列化事象に備えるS
ERIALと、演算がバイト向き演算であることを示す
FORCE8BITと、即値データのどの部分が選択さ
れるべきかあるかを示すIMMSEL[2:0]とであ
る。これらの信号は、図17に示されるように、同じ名
前で、しかし「F」プレフィックスを伴ってROPSE
LECTx1500に供給される。
【0100】何らかの適切な、ラッチ型組合せ論理を用
いて、各発行位置におけるICOMMONx904は、
その入力信号をパイプライン化し、ROPを符号化する
際にROPSELECTx1500によって用いられる
ための制御信号に変換し、また浮動小数点演算のための
ある情報を与える。ICOMMONx904は、IDE
CCNTL760の制御下でMROM0 716、MR
OM1 726、MROM2 736、MROM3 7
46から読出される頻繁には使用されない、かつ複雑な
命令、およびFASTCONVx902において変換さ
れる単純な命令を含むすべてのx86命令についてこの
機能を実行する。
【0101】ROPMUX700からICOMMONx
への入力は以下のとおりである。ビットROPxPRE
[7:1]は、もし存在すれば統合プレフィックスバイ
トからのものであり、表7に述べられる情報を与える。
特に、ビット[7:5]はデフォルトセグメントが無効
にされるべきかどうか、そしてもしそうであればどのセ
グメントディスクリプタによるかを示す。ビット[4:
3]は、ロックプレフィックスまたはリピートプレフィ
ックスが存在するかどうか、そしてもしそうであればど
のプレフィックスかを示す。ビット[2]はオペランド
サイズプレフィックスが存在するかどうかを示す。ビッ
ト[1]はアドレスサイズプレフィックスが存在するか
どうかを示す。図13の例において、第1のプリデコー
ドされた命令I1がそこから導出される未処理のx86
命令は、図6に示されるADD命令であり、これはプレ
フィックスを持たず、単一のopコード命令である。し
たがって、発行位置0,1および2のそれぞれROP0
PRE[7:1]、ROP1PRE[7:1]およびR
OP2PRE[7:1]は000である。第2の未処理
のx86命令I2が、386命令セットに関して加えら
れる「符号拡張付移動」等の2opコード命令であり、
かつCSセグメント無効を示しデフォルトオペランドサ
イズおよびデフォルトアドレスの意味を反転する2つの
プレフィックスを有すると仮定すれば、発行位置3のR
OP3PRE[2:0]は0010011である。ビッ
トROP0OP[2:0]、ROP1OP[2:0]お
よびROP2OP[2:0]は、x86ADD命令バイ
ト部分001であるビットBYTEQ0[2:0]から
ラッチされ、一方ビットROP3OP[2:0]は、プ
リデコードされたx86命令I2がそこから導出される
未処理のx86命令の第2の命令バイトの一部であるビ
ットBYTEQ5[2:0]である。ビットROP0M
ODRM[7:0]、ROP1MODRM[7:0]、
およびROP2MODRM[7:0]はBYTEQ1
[7:0]から与えられ、これはプリデコードされたx
86命令I1がそこから導出される未処理のx86命令
のmod r/mバイト00000011である。ビッ
トROP3MODRM[7:0]はBYTEQ6[7:
0]から与えられ、これはプリデコードされたx86命
令I2がそこから導出される未処理のx86命令のmo
d r/mバイトである。同様に、ビットROP0SI
B[7:0]、ROP1SIB[7:0]およびROP
2SIB[7:0]はBYTEQ2[7:0]から与え
られ、これはプリデコードされたx86命令I1がそこ
から導出される未処理のx86命令のsibバイト11
001011である。ビットROP3SIB[7:0]
はBYTEQ7[7:0]からであり、これはプリデコ
ードされたx86命令I2がそこから導出される未処理
のx86命令のsibバイトである。
【0102】ICOMMONx904は、入力信号RO
PxOP[2:0]、ROPxMODRM[7:0]お
よびROPxSIB[7:0]のあるビットを分離し、
行先およびオペランドポインタの決定ならびにレジスタ
選択および他の制御情報のためにこれらをROPSEL
ECTx1500に供給する。レジスタポインタは5つ
の位置のうちの何らかの1つまたはそれ以上に現われ得
る、すなわちopコードバイトのビット[2:0]、m
odrmバイトのビット[5:3](REG1)、mo
drmバイトのビット[2:0](REG2)、sib
バイトのビット[5:3](ADDR1)、sibバイ
トのビット[2:0](ADDR2)である。これらの
ビットは、FASTCONVx902によってROP命
令に関するopコードおよびレジスタ情報を得るために
用いられ、これは信号ROPOPREG[2:0]、R
OPREG1[2:0]、ROPREG2[2:0]、
ROPADDR1[2:0]、およびROPADDR2
[2:0]に含まれる。命令フォーマットおよびタイミ
ング情報は、1992年、カリフォルニア州、サンタク
ララのインテル社の出版物である「インテル486(登
録商標)マイクロプロセッサファミリー:プログラマの
手引書」(Intel486 Microprocessor Family:Programme
r's Reference Manual) 」の補遺Eにより詳細に述べら
れ、その全体をここに引用によって援用する。
【0103】MUXVALL[3:0]は4つの発行位
置のそれぞれのROPに関する4つの有効ビットを含
む。発行位置xからの各ビットMUXVALxは、発行
位置xのROPがそこから導出されるプリデコードされ
たx86命令の有効ビットから得られる。発行位置xの
ROPに関するMUXVALxは、ROPのプリデコー
ドソースx86命令が有効でありかつROP自体が有効
であるときのみアサートされる。
【0104】ROPSELECTx1500に供給され
る、ICOMMONx904の出力での信号は図17に
示される。これらの信号はDECODE2ステージの段
階1の早くに有効となる。信号の多くはメモリオペラン
ド符号化に関する。信号ADDR32X16は、アドレ
スサイズが32ビットであるか16ビットであるかを示
す。信号DATA32X16は、命令のオペランドが倍
長語または語であるかを示す。信号SELADDRA1
6はAオペランドに関し、16ビットアドレスモードに
おけるBXレジスタまたはBPレジスタの選択を制御す
る。信号SELADDRB16[1:0]はBオペラン
ドに関し、16ビットアドレスモードにおけるBX,B
P,SIまたはDIレジスタの選択を制御する。信号S
ELADDRB32[1:0]は32ビットアドレスモ
ードにおいてREG2、ADDR1、またはADDR2
が使用されているかを示す。この態様で、高速経路およ
びマイクロコードマッピング経路に関するx86アドレ
スモードのすべてが共通して扱われる。信号ADDRU
SEAは、すべてのアドレスモードで用いられるわけで
はないAオペランドを用いるかどうかを示す。信号AD
DRUSEBは、すべてのアドレスモードで使用される
わけでないBオペランドを使用するかどうかを示す。信
号DISPSEL[1:0]は、変位フィールドがいか
に扱われるかを示し、以下のように解釈される、すなわ
ち0xx(2進)−ゼロ拡張、1xx(2進)−32ビ
ットに符号拡張、x00(2進)−なし、x01(2
進)−8ビット、x10(2進)−16ビット、x11
(2進)−32ビットである。信号FPREINS
[6:0]は、LSSEC134に関してモード無効化
として作用するプリ命令ロード/ストア信号である。ア
サートされると、ビット6はプロセッサの状態を変える
ことなく32ビットアドレスモードにする。アサートさ
れると、ビット5はアクセスをロックさせる。0のと
き、ビット4はx86命令によって示されたアドレスセ
グメントの使用を命じ、1のとき、ビット4はセグメン
トがビット[3:0]において特定されることを示す。
信号の幾つかは浮動小数点演算で用いられる。信号FP
REOP[10:0]は、ビットROPxMODRM
[2:0]およびROPxOP[7:0]を含む。信号
FPREVALは、MUXVALがラッチされたもので
ある。信号ROPOPREG[2:0]、ROPREG
1[2:0]、ROPREG2[2:0]、ROPAD
DR1[2:0]およびROPADDR2[2:0]は
上述のとおりである。
【0105】[ROPMUX−IDECCNTL−MR
OMx−ROPSELECT演算]マイクロコードRO
M命令の順序付はIDECCNTL760によって制御
され、これは、プレフィックス、opコード、mod
r/m、sib、プロセッサ状態および例外情報に基づ
いてエントリポイントを確立し、そのエントリポイント
を、1サイクルにつき4のROPの割合でMROM0
716、MROM1726、MROM2 736、およ
びMROM3 746からROPシーケンスを読出すた
めに用いる。順序付論理はIDECCNTL760内に
配置され、これが制御ROM750から信号MROMC
[11:0]を受取り、MROM0716、MROM1
726、MROM2 736、MROM3 746、
および制御ROM750にアクセスするために信号GO
MROMおよびMROMMADDR[9:0]を供給す
る。
【0106】図10はROPの順序付を制御するための
ステップを示す。信号ROPMROMは、マイクロコー
ドマッピングプリデコードx86命令がBYTEQ10
6の先頭にあるとアサートされる。動作1022に示さ
れるように、IDECCNTL760は、BYTEQ1
06の先頭にあるマイクロコードマッピングx86命令
から受取った4つの要素に基づいてMROMエントリポ
イントを定める。4つの要素とは、統合プレフィックス
データ要素、opコード要素、mod r/m要素、お
よびsib要素である。プリデコードされたx86命令
に要素がなければ、命令の開始および終了ビットから定
められるとき、不在の要素に対応する発行位置で受取ら
れる情報は「ドントケア」情報として扱われる。
【0107】動作1024によって示されるように、I
DECCNTL760は、MROMx906にアクセス
するために信号ROP0PRE、ROP0OP、ROP
0MODRM、およびROP0SIBを用いる。これは
図8では事象808として示される。図15は、IDE
CCNTL760のMROM制御部分のブロック図であ
る。IDECCNTL760は、DECODE1ステー
ジの第2段階において幾つかの発行位置のMROMx9
06にアクセスする。順序付制御論理1302は、MR
OMADDR[9:0]におけるマイクロコードROM
エントリポイントアドレスを供給するためのマルチプレ
クサ1306を制御する何らかの適切な設計のステート
マシンである。順序付制御論理1302は、制御ROM
750からの制御語と、IDECODE108の種々の
ユニットおよびプロセッサ100の他のユニットからの
プレフィックス、opコード、mod r/m、si
b、プロセッサ状態および例外指示信号とに応答する。
初期マイクロコードエントリポイントは、何らかの適切
な設計のプログラマブル論理アレイである初期エントリ
ポイントジェネレータ1304によって、ROP0PR
E、ROP0OP、ROP0MODRM、およびROP
0SIBに基づいて発生され、これらはマイクロコード
ROMの第2段階アクセスの前に有効となり、図8のR
OPMUX事象806を参照されたい。
【0108】特定のマイクロコードROMシーケンスの
初めにMROM0 716、MROM1 726、MR
OM2 736およびMROM3 746にアクセスす
るために、初期エントリポイントジェネレータ1304
の出力は、マルチプレクサ1306によって選択され、
制御ROM750と各発行位置xのMROMx906と
に与えられる。後続のMROMx906アクセスは、順
序付機構に依存して、インクリメンタ1310、リター
ンラッチ1308、およびバスXTARGET[9:
0]から選択される。MROMx906におけるROP
の位置は固定される。したがって、特定のラインのすべ
てのROPが、次のラインのものが発行される前に発行
される。ラインの最後のROPが発行されたときを定め
る論理を簡略化するために、部分的に充填されたライン
はROPを第3の発行位置740に右詰めして、未使用
の発行位置がもしあれば空タイプを示す。
【0109】ROPの順序付の制御には2つの機構、す
なわちシーケンス制御フィールドおよびマイクロ分岐R
OPが使用される。シーケンス制御フィールドはDEC
ODE1ステージにおいて効果を発し、これはMROM
x906がアクセスされるステージである。一方、マイ
クロ分岐ROPは実行のためにBRNSEC135に発
行され、遅延効果を有する。
【0110】シーケンス制御フィールドは、インクリメ
ンタ1310およびリターンラッチ1308を介して幾
つかの能力、すなわちマイクロコードサブルーチンコー
ル/リターン(信号レベルはサポートされる)、ブロッ
ク整列単位での何らかのMROM位置への無条件分岐、
プロセッサ状態に基づいてのプラスまたはマイナス32
ブロック以内の条件付分岐、およびシーケンスの終了指
示を与える。シーケンス制御フィールドの制御語は制御
ROM750にストアされ、これは1024の制御語を
含む。制御語の各々は12ビット長である。図16に示
される例示的な符号化機構では、「4つ1組」の発行ウ
ィンドウの各々に制御語が1つ与えられる。各制御語は
その先頭ビットに依存した態様で解釈される。制御RO
Mビット[11:10]が00であれば、「雑制御」フ
ォーマットフィールドが示される。雑制御フォーマット
フィールドのビット[9:8]が00(2進)であれば
インクリメンタ1310によって実現される順序付を示
し、01(2進)であれば現在の発行ウィンドウ内の4
つのROPが発行された後リターンラッチ1308に含
まれる値への無条件分岐を示し、10であれば出口を示
す。制御ROMビット[11:10]が01であれば、
無条件分岐が示され、分岐アドレスがビット[9:0]
によって示される。制御ROMビット[11:10]が
10であれば、条件付分岐が、現在の発行ウィンドウ内
の4つのROPが発行された後、「条件特定子」(テス
トプレフィックス、opコード、mod r/m、si
b、プロセッサ状態、または例外指示)に基づく「分岐
発生アドレス」とともにSEQMADDR[9:5]に
示される。条件はビット[9:6]によって特定され、
分岐オフセットはビット[5:0]によって特定され
る。制御ROMビット[11:10]が11であれば、
コール先が示され、その行先はビット[9:0]によっ
て示される。「コール先」は、現在の発行ウィンドウ内
の4つのROPが発行された後「サブルーチンエントリ
ポイント」への無条件分岐を起こし、リターンラッチ1
308が次の順次アドレスで更新される。マイクロサブ
ルーチンコール制御語はまた、「リターンラッチ130
8」が現在有効でなければ無条件分岐絶対としても有用
であることに注目されたい。
【0111】マイクロ分岐ROPは命令レベル分岐のよ
うに行なわれ、実行のためにBRNSEC135に発行
され、誤予測の訂正が施される。マイクロ分岐は、シー
ケンス制御フィールドにおける出口コードおよびマイク
ロ分岐のデコード位置によって命令レベル分岐から識別
される。命令レベル分岐ROPはシーケンスの最後のR
OPであり、したがってシーケンス出口コードを伴って
第3の発行位置に現われる。他の分岐はマイクロ分岐と
考えられる。INSBRNにおけるビット[0]はBR
NSEC135へのROPに付随する。ターゲットアド
レス形成または分岐訂正のために命令アドレスではなく
MROMアドレスが送られる。分岐訂正の際に、BRN
SEC135は、XTARGETバス103を介してI
DECODE108に、訂正アドレスがPCではなくM
ROMアドレスであることを示す。マイクロ分岐ROP
は、基本的に、ゼロ、非ゼロ、正または負であるレジス
タ値に基づいた条件付分岐および無条件分岐能力を与え
る。
【0112】[ROPSELECTxおよびROPSH
ARED]各発行位置にあるROPSELECTx15
00は、FASTCONVx902、ICOMMONx
904、MROMx906、およびROPMUX700
からの情報を選択し、この情報をREGF112および
ROB114、ならびにプロセッサ100の種々の機能
ユニットに送る。ROPSELECTx1500はま
た、共有される資源への発行のためにROPSHARE
D790にも情報を供給する。発行される情報は、Aオ
ペランドポインタ、Bオペランドポインタ、行先ポイン
タ、命令タイプに関する情報、命令opコード、割込イ
ネーブル、バックアップイネーブル、命令終了、および
定数値を含む。例示的な機能ユニットFU、リオーダバ
ッファROB114、レジスタファイルREGF11
2、ROPSELECTx1500およびICACHE
104の他の要素の間の種々のデータおよび制御経路は
図17に示される。
【0113】ROPSELECTx1500に関連する
種々の入力信号は、DECODE1およびDECODE
2パイプラインステージの様々な時間に有効となる。信
号の1つSS32X16は、スタックセグメントレジス
タからの32ビットまたは16ビット指示であり、プロ
セッサ状態関連信号である。信号は、効果においてシリ
アルな態様で変えられ、IDECODE108が活性の
ときにはスタティックである。
【0114】DECODE1ステージの段階1の遅く
に、ROPMUX700からの未処理のx86命令情報
は有効になる。ROPDI[63:0]は、割当てられ
たx86命令の最後のバイトに従って適切に位置調整さ
れるBYTEQ106からの未処理の命令バイトを含
む。ROPPRDTKNは、割当てられたx86命令の
最後のバイトからの割当てられた非順次指示であり、B
RNSEC135によって命令が読出されたときに分岐
が発生と予測されたか、または発生されないと予測され
たかを定める。ROPCLM[1:0]は、割当てられ
たx86命令の最後のバイトから割当てられたキャッシ
ュカラム指示であり、キャッシュ更新の間にICACH
E104の適切な位置にアクセスするために用いられ
る。
【0115】DECODE1ステージの段階2の早く
に、幾つかの汎用入力が有効となる。USEMROMは
アサートされると、ROPSELECT MROMx9
06入力がFASTCONVx902入力の代わりに用
いられるべきであることを示す。
【0116】FASTCONVx902、ICOMMO
Nx904およびMROMx906からの信号は、DE
CODE2ステージの第1段階の早くに有効となる。
【0117】ROPSHARED790は、有効タイプ
に従って共有される資源に発行情報を割当てる。DEC
ODE2ステージの段階1の中ほどで、IDECCNT
LからROB114へのROP有効ビットである入力R
OPVAL[3:0]が有効となる。ROPSHARE
D790はまた、処理および共有される資源への発行の
ために発行位置の各々のROPSELECTx1500
からの信号を受取る。これらの信号は、DECODE2
ステージの段階1の中ほど、および段階2の早くに有効
となる。
【0118】DECODE2ステージの段階1の中ほど
で、発行位置の各々におけるROPSELECTx15
00からのopコードPREOPxB[7:0](x=
0,1,2,3)および命令タイプPRExTYP
[2:0](x=0,1,2,3)が有効になる。命令
タイプ情報PRETYP[2:0]は、USEMROM
に基づいてMITYPEおよびFITYPEから選択さ
れる。opコード情報PREOPB[7:0]は、US
EMROMに基づいて値MIOPまたはFIOPをとる
が、PREOPB[7:6]は幾つかのopコードタイ
プに関しては行先サイズDESTSIZEにとって代わ
られる。
【0119】DECODE2ステージの段階2の早く
に、ROPSELECTx1500からROPSHAR
ED790への以下の入力、すなわちDISPxB[3
1:0](x=0,1,2,3)、PRExINS
[7:0](x=0,1,2,3)、FPTxOP[1
0:0](x=0,1,2,3)、CLMx[1:0]
(x=0,1,2,3)およびPRDTKNxが有効と
なる。DISPxB[31:0]は、以下のようにFU
SEDISPおよびMUSEDISPならびにDISP
SEL[1:0]の値に依存してROPDI[63:
0]から選択される32ビット変位フィールドである。
DISPSEL[1:0]はアドレスモードから定めら
れ、以下のように解釈される、すなわち00(2進)−
なし、01(2進)−8ビット、32ビットに符号拡
張、10(2進)−16ビット、32ビットに符号拡
張、および11(2進)−32ビットである。FUSE
DISP/MUSEDISPは、変位が実際に用いられ
るべきであるか否かを定める。FUSEDISP/MU
SEDISPがアサートされなければ、ゼロ変位が与え
られる。PRExINS[7:0]は、ロードおよびス
トアのための追加のopコード情報であり、PREIN
S[7:6]はスケールビットであり、PREINS
[5]はアドレス「32X16」ビットであり、PRE
INS[4]はロックビットであり、PREINS
[3:0]はセグメントビットである。PRExINS
は、高速経路プリ命令情報FPREINSか、またはマ
イクロコードROMプリ命令情報MPREINSから、
USEMROMおよびDISPALLに従って選択され
る。FPTOPx[10:0]は、FPREOP[1
0:0]の遅延されたものである。CLMx[1:0]
は、ROPCLMの遅延されたものであり、x86命令
の最後のバイトからのキャッシュカラムである。PRD
TKN[3:0]は、ROPPRDTKNの遅延された
ものであり、非順次指示である。
【0120】発行位置の各々におけるROPSELEC
Tx1500およびROPSHARED790は、プロ
セッサ100の種々の機能ユニットに発行される命令の
ためのオペランドを協働して選択する。REGFは、例
示的に汎用レジスタの大きな組である。レジスタ番号
は、REGF112によって単にデコードされ、選択さ
れたエントリにおける値が与えられる。対照的に、RO
B114は、命令結果にダイナミックに割当てられるい
くつかの記憶位置を含むユニットである。命令がデコー
ドされると、その結果値にはリオーダバッファ位置が割
当てられ、その行先レジスタ番号は、この位置と関連
し、リオーダバッファ位置に行先レジスタを指定し直
す。後続の命令が、レジスタ内にストアされた値を得る
ために指定し直された行先レジスタを参照するとき、命
令はその代わりにリオーダバッファにストアされた値、
または値がまだ計算されていなければこの値に関するタ
グ(リオーダバッファへのインデックス)を得る。この
能力を与えるために、ROB114は、例示的に内容参
照メモリとして実現され、そのためROB114はレジ
スタ番号をすべてのエントリにおけるレジスタ番号と比
較し、一致するレジスタ番号を有するエントリにおける
タグまたは値があれば戻す。
【0121】命令がデコードされると、そのソースオペ
ランドのレジスタ番号がROB114およびREGF1
12に同時にアクセスするのに用いられる。リオーダバ
ッファが、そのレジスタ番号がソースレジスタ番号と一
致するエントリを持たない場合には、レジスタファイル
内の値がオペランドとして選択される。リオーダバッフ
ァが1つまたはそれ以上の一致するエントリを有する場
合には、最も最近のエントリの値が利用可能であれば選
択され、そうでなければその値に関するタグが選択され
る。値またはそのタグが、プロセッサ100の種々の機
能ユニットの待合せステーションの適切な1つにコピー
される。
【0122】オペランド供給機能は、REGF112お
よびROB114に供給されるROPSHARED79
0およびROPSELECTx1500の種々の出力を
用いて実現される。これらの出力は、EXECUTEス
テージに備えてDECODE2ステージの間に有効とな
る。ROPSELECTx1500からREGF112
およびROB114への信号USEARD、USEBR
D、およびROBALLOCと、ROPSELECTx
1500からROB114への信号RDAPTER、R
DBPTR、およびDESTREGBは、DESODE
2の段階1の中ほどで有効となる。USEARDは、R
OB114およびREGF112に対するレジスタ使用
インジケータである。USEARDは、x86命令がF
ASTCONVx902において処理されているか、M
ROMx906において処理されているか、または特殊
x86アドレスモードに関わるかに依存して、それぞれ
FUSEA、MUSEA、およびADDRUSEAから
導出される。USEBRDはUSEARDのBオペラン
ドのバージョンであり、USEARDに類似した態様で
導出される。ROBALLOC[15:0]は、ROP
割当情報を示し、USEMROMおよびDISPALL
に依存してFROBDECまたはMROBDECから導
出される。ROBALLOCは、デコード中の各有効R
OPについて4ビットの割当データを含み、ビット
[3]においてレジスタライトバックのためのその要
件、およびビット[2:0]において整数/浮動小数点
フラグ変更のための要件を符号化する。RDAPTR
[8:0]は、ROB114に対するAソースオペラン
ドポインタである。一般に、RDAPTR[6:3]
は、命令が行先もしくはソースレジスタまたは特殊x8
6モードに関与するとき、ICOMMONx904から
の入力ROPOPREG、ROPREG1、およびRO
PREG2から導出される。しかしながら、x86命令
がFASTCONVx902またはMROMx906に
おいて処理されているときには、RDAPTRはFAR
EGまたはMAREGから得られる。RDBPTR
[8:0]は、RDAPTRのBオペランドバージョン
であり、入力信号のBオペランドバージョンからを除い
ては、RDAPTRに類似した態様で導出される。DE
STREGB[8:0]は、ROB114に対する行先
ポインタであり、入力信号の行先バージョンからを除い
ては、RDAPTRに類似した態様で導出される。
【0123】発行される命令はまた、タイプおよびop
コード情報を必要とし、これはIDECCNTL760
によって供給され、EXECUTEステージのための準
備にあたってDECODE2ステージの間に有効とな
る。信号INSDISP[3:0]は、現在のサイクル
でROPがそこから発行されるべき発行位置を示す。タ
イプ信号INSxTYPE[2:0]の各々は、特定の
機能ユニットに発行位置xからの命令を処理するように
知らせる。機能ユニットの各々について異なるタイプ信
号が用いられ、ALU0 131とALU1 132と
の間でのトグル算術および論理演算の能力、および複数
の目的のために1つの機能ユニット(たとえば、算術お
よび論理演算とシフト演算とのためにALU1)を用い
る能力を含む種々の能力を与える。信号XINSDIS
P[3:0]は、どのROPが発行されるかを示す。信
号WRITEFIFOは、BRNSEC135が予測F
IFOにXTARGETバスを介して予測発生アドレス
を書込むべきであることを示す。信号COMMITは、
直列化された事象が発行されているかどうかを示す。
【0124】DECODE2ステージの段階1の遅く
に、ROPSHARED790からREGF112およ
びROB114への信号RDFLGPTRおよびUSE
FLGRDが有効になる。整数フラグソースオペランド
ポインタであるRDFLGPTR[2:0]は、分岐セ
クションBRNSEC135にマッピングされる第1の
未発行ROPの発行位置に基づいて適切なRDxFLG
PTR[2:0]にセットされる。どのROPも分岐セ
クションBRNSEC135にマッピングされなけれ
ば、RDFLGPTR[2:0]は0にセットされる。
使用指示であるUSEFLGRD[1:0]は、分岐セ
クションBRNSEC135にマッピングされる第1の
未発行ROPの発行位置を示すように符号化される。
【0125】DECODE2ステージの段階2の早く
に、ROPSELECTx1500およびROPSHA
RED790からROB114、および場合によっては
REGF112への残っている信号が有効となる。CO
NSTB[31:0]はREGF112への32ビット
定数フィールドであり、以下のようにMUSEBおよび
FUSEBおよびIMMSEL[2:0]の値に依存し
てROPDI[63:0]から選択される。IMMSE
L[2:0]は486命令から定められ、以下のように
解釈される、すなわち0xx(2進)−ゼロ拡張、1x
x(2進)−32ビットに符号拡張、x00(2進)−
なし、x01(2進)−8ビット、x10(2進)−1
6ビット、x11 (2進)−32ビットである。FU
SEB/MUSEBがアサートされると、ゼロ定数が与
えられる。FUSEB/MUSEBがアサートされなけ
れば、定数は以下のようにFBREG[9:8]/MB
REG[9:8]に基づいて選択される、すなわち00
2進−なし、01 2進−x86命令即値データ使
用、10 2進−FBREG[7:0]/MBREG
[7:0]からの8ビット定数、符号拡張なし、11
2進−FBREG[7:0]/MBREG[7:0]か
らの8ビット定数、符号拡張である。さらに、FUSE
A/MUSEAがアサートされず、かつFBREG
[9]/MBREG[9]がアサートされると、8ビッ
ト定数は16ビットに拡張され得る。INSTEIは、
ROB114に関する命令終了情報であり、プログラム
カウンタ維持に使用される。ENINTRは、ROB1
14に関する外部割込イネーブル指示である。INST
EIおよびENINTRは、USEMROMおよびDI
SPALLに依存してFROBDECまたはMROBD
ECから導出される。実行される最後のx86浮動小数
点命令の浮動小数点opコードであり、浮動小数点命令
の放棄の際の状態更新に用いられるFPTOPC[1
0:0]は、浮動小数点セクションにマッピングされる
第1の未発行ROPの発行位置に基づいてROPxMO
DRM[7:0]で適切な浮動小数点opコードROP
xOP[2:0]にセットされる。どのROPも浮動小
数点セクションにマッピングされなければ、FPTOP
C[9:0]は「ドントケア」である。
【0126】ROPSELECTx1500およびRO
PSHARED790は、プロセッサ100内の種々の
機能ユニットに情報を発行し、これはDECODE2ス
テージの段階2の早くに有効になる。各発行位置のRO
PSELECTx1500は、機能ユニットに対するソ
ースオペランド上位バイト指示である、AHIGHBY
TEおよびBHIGHBYTEを供給する。AHIGH
BYTEは、FAREGから導出され、BHIGHBY
TEは、FBREGから導出される。ROPSHARE
D790は、INSOPxB[7:0](x=0,1,
2,3)を供給し、これらは命令ROPopコード符号
であり、ALU0 131、ALU1およびSHF13
2、LSSEC134、およびBRNSEC135に発
行される。
【0127】INSOPxBに加えて、LSSEC13
4はまた、DECODE2ステージの段階2の中ほどで
有効となるROPSHARED790の幾つかの出力を
受取る。INSLS0B[7:0]およびINSLS1
B[7:0]は追加のROP情報であり、ロード/スト
アセクションに対する最初の2つの未発行ROPにマッ
ピングされるPRExINS[7:0]のマルチプレク
スされてラッチされたものであり、以下のとおりであ
る、すなわちINSLSxB[7:6]、スケールファ
クタ;INSLSxB[5]、アドレスサイズ(32X
16);INSLSxB[4]、ロックプレフィック
ス;およびINSLSxB[3:0]0000 保存
(未使用)、0001 CS、0010 DS、001
1 ES、0100 FS、0101 GS、0110
SSであり、その他はマイクロコードによって規定さ
れる。FASTCN0B[31:0]およびFASTC
N1B[31:0]は、ロード/ストアセクションLS
SEC134への高速変位経路であり、ロード/ストア
セクションにマッピングされる最初の2つの未発行RO
PにマッピングされるDISPxB[31:0]のマル
チプレクスされてラッチされたものである。これらのバ
スは、ロード/ストアセクションへの対応する発行がな
ければ、「ドントケア」である。
【0128】INSOPxBに加えて、BRNSEC1
35はまた、DECODE2ステージの段階2の中ほど
で有効となるROPSHARED790の出力を受取
る。INSBRN[4:0]は、以下のように分岐セク
ションに対しての最初の未発行ROPにマッピングされ
る追加ROP情報(信号USEFLGRD[1:0]に
よって示される)である、すなわちINSBRN[4]
−交換アンダフロー、INSBRN[3:2]−CLM
x[1:0]から選択されたキャッシュカラム、INS
BRN[1]−PRDTKNxから選択された発生予測
された分岐、およびINSBRN[0]マイクロ分岐指
示(1:ICACHE104、0:IDECODE10
8)である。
【0129】DECODE1ステージの段階2の非常に
遅い時点で、DISPALLは有効となり、信号USE
MROMと関連して、表8に示されるようにROPSE
LECTx1500からの発行を制御する。DISPA
LLは、アサートされるとPH1で発行されると予想さ
れるものすべてが発行されることを示す。
【0130】
【表8】
【0131】本発明を種々の実施例を参照して説明した
が、これらの実施例は例示的なものであり、本発明の範
囲はこれに制限されるものではないことを理解された
い。説明した実施例の多くの変更、変形、付加、および
改良が可能である。たとえば、各発行ウィンドウ内のR
OPの数は例示的なものであり、変えられてもよい。I
CACHE104およびBYTEQ106のサイズ、I
DECODE108における発行位置の数、ソースオペ
ランドバスの数、TADバスの数、結果バスの数、およ
びライトバックバスの数は例示的なものであり、変えら
れてもよい。種々の信号のうちの多くの段階付も例示的
なものであり、変えられてもよい。種々の信号の機能は
例示的であり、信号は、ある機能を他の信号に割当てる
か、または他の機能を信号に統合することによって変更
できる。リードオンリメモリ以外のタイプのメモリをM
ROMx906内で用いてもよい。IDECODE10
8にさらに機能を加えてもよい。プロセッサの推論実行
状態維持の態様は例示的であり、単一の待合せステーシ
ョン等の他の構成も用いられる。これらのおよび他の変
形、変更、付加、および改良は、前掲の特許請求の範囲
によって規定される本発明の範囲内である。
【図面の簡単な説明】
【図1】CISC命令セットのスーパースカラ実行を達
成するためのプロセッサのアーキテクチャレベルのブロ
ック図である。
【図2】図1のプロセッサにおける5実効ステージ逐次
実行パイプラインのタイミング図である。
【図3】図1のプロセッサにおける誤予測ペナルティを
有する5実効ステージ実行パイプラインのタイミング図
である。
【図4】図1のプロセッサのバイトキューでのストアに
適した、プリデコードされたx86命令の図的表現の図
である。
【図5】図4のプリデコードされたx86命令の要素の
図的表現の図である。
【図6】プリデコードされたx86命令へのADD命令
として知られるx86命令の変換の図的表現の図であ
る。
【図7】命令デコーダのアーキテクチャレベルのブロッ
ク図である。
【図8】図7の命令デコーダのメモリROM経路および
高速変換経路に関わる主な事象のタイミング図である。
【図9】図7の命令デコーダのROPマルチプレクサと
図1のプロセッサの他の種々の機能ブロックとの間の相
互接続を示すデータ−アドレス−制御信号レベルのブロ
ック図である。
【図10】図9のROPマルチプレクサによって実現さ
れる方法を示すフローチャートの図である。
【図11】図9のROPマルチプレクサによって実現さ
れる方法を示すフローチャートの図である。
【図12】図9のROPマルチプレクサによって実現さ
れる方法を示すフローチャートの図である。
【図13】図9のROPマルチプレクサによるプリデコ
ードされたx86命令の発行の図的表現の図である。
【図14】図9のROPマルチプレクサによるプリデコ
ードされたx86命令の発行の図的表現の図である。
【図15】図7の命令デコーダで有用なマイクロコード
ROMコントローラの機能ブロック図である。
【図16】図13のマイクロコードROMコントローラ
において有用な制御ROMの内容に関する種々のフォー
マットの図的表現の図である。
【図17】IDECODEのROP選択機能ブロックと
図1のプロセッサの種々の他の機能ブロックとの間の相
互接続を示す、データ−アドレス−制御信号レベルのブ
ロック図である。
【図18】IDECODEのROP共有機能ブロックと
図1のプロセッサの種々の他の機能ブロックとの間の相
互接続を示す、データ−アドレス−制御信号レベルのブ
ロック図である。
【符号の説明】
100 スーパースカラ複雑命令セットコンピュータ
(CISC)プロセッサ 104 命令キャッシュ 106 バイトキュー 108 命令デコーダ 110 縮小命令セットコンピュータ(RISC)スー
パースカラコア
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デイビッド・ビィ・ウィット アメリカ合衆国、78759 テキサス州、オ ースティン、パスファインダー・ドライ ブ、6318 (72)発明者 マイケル・ディ・ゴダード アメリカ合衆国、78739 テキサス州、オ ースティン、オールド・ハーバー・レイ ン、6434

Claims (49)

    【特許請求の範囲】
  1. 【請求項1】 複数個「m」までのRISC類似演算
    (「ROP」)を並列に発行するための装置であって、
    ROPは1つまたはそれ以上のCISC命令からマッピ
    ングされ、 CISC命令およびプリデコード情報をストアするため
    のメモリを含み、前記プリデコード情報は、CISC命
    令がマッピングするROPの数を識別する値を含み、さ
    らに複数個「m」の出力を有し、前記メモリに結合され
    るマルチプレクサを含み、前記マルチプレクサは、前記
    CISC命令からの情報を、前記CISC命令がマッピ
    ングする「m」までのROPの数に等しい前記マルチプ
    レクサ出力の割当てられていないものに送り、さらにそ
    れぞれ前記マルチプレクサ出力に結合されて、前記マル
    チプレクサ出力に存在する前記CISC命令情報を、前
    記CISC命令がマッピングするそれぞれのROPに変
    換するための複数の変換経路と、 前記変換経路に結合されて、現在の発行ウィンドウ内の
    ROPを発行するための発行論理とを含む、装置。
  2. 【請求項2】 前記プリデコード情報が、命令開始識別
    子および命令終了識別子を含み、さらに前記マルチプレ
    クサが、前記CISC命令が前記開始および終了識別子
    によって示されるようにメモリ内に完全に含まれるかど
    うかを検出するための命令完全論理を含み、 前記マルチプレクサは、前記命令完全論理に応答して、
    前記CISC命令が完全にメモリに含まれていると、前
    記CISC命令情報を前記マルチプレクサ出力の群に送
    る、請求項1に記載の装置。
  3. 【請求項3】 前記プリデコード情報がopコード識別
    子を含み、 前記マルチプレクサが、前記CISC命令情報に含むた
    めに前記CISC命令のopコードバイトを選択するた
    めの選択論理を含む、請求項2に記載の装置。
  4. 【請求項4】 前記マルチプレクサが、前記CISC命
    令情報に含むための、前記opコードに対して予め定め
    られた関係を有する前記CISC命令の付加的なバイト
    を選択するための選択論理を含み、前記予め定められた
    関係は、前記付加的なバイトをプレフィックス、MOD
    RM、およびSIBバイトとして修飾する、請求項3に
    記載の装置。
  5. 【請求項5】 前記マルチプレクサが、メモリに結合さ
    れるスキャン論理を含み、前記スキャン論理は、前記変
    換経路のうちの割当てられていないものを検出し、前記
    割当てられていない変換経路を前記CISC命令に割当
    てる、請求項1に記載の装置。
  6. 【請求項6】 RISCプロセッサへの発行のためにC
    ISC命令をRISC類似演算(「ROP」)にデコー
    ドするための装置であって、 それぞれの数のROPにマッピングする複数のCISC
    命令のアドレス情報およびCISCopコードを前記C
    ISC命令がマッピングする複数のROPの前記数に基
    づいて発行位置に整列させるための手段と、 前記CISCopコードおよびアドレス情報を、各CI
    SC命令について、前記CISC命令をデコードする前
    記発行位置の、同じCISC命令をデコードする他の発
    行位置に関しての位置に基づいてROPopコードおよ
    びアドレス情報にデコードするための手段と、 前記発行位置から前記ROPopコードおよびアドレス
    情報を前記RISCプロセッサに並列に送るための手段
    とを含む、装置。
  7. 【請求項7】 RISCプロセッサへの発行のためにC
    ISC命令をRISC類似演算(「ROP」)にデコー
    ドするための方法であって、 それぞれの数のROPにマッピングするCISC命令の
    アドレス情報およびCISCopコードを前記CISC
    命令がマッピングするROPの数に基づいて発行位置に
    整列させるためのステップと、 前記CISCopコードおよびアドレス情報を、各CI
    SC命令について、前記CISC命令をデコードする発
    行位置の、同じCISC命令をデコードする他の発行位
    置に関しての位置に基づいて、ROPopコードおよび
    アドレス情報にデコードするステップと、 前記発行位置から前記ROPopコードおよびアドレス
    情報を前記RISCプロセッサに並列に送るステップと
    を含む、方法。
  8. 【請求項8】 前記整列させるステップが、 割当てられていない発行位置を識別するステップと、 前記CISCopコードおよびアドレス情報の1つを、
    前記識別された割当てられていない発行位置に送り、さ
    らに、前記送られたCISCopコードがマッピングす
    るROPの数に従って、後続の発行位置に最後の発行位
    置まで送るステップと、 割当てられていない発行位置がなくなるまで、前記識別
    するステップおよび送るステップを繰返すステップとを
    含み、 前記デコードするステップが、前記発行位置の前記CI
    SCopコードをそれぞれROPopコードに変換する
    ステップを含む、請求項7に記載の方法。
  9. 【請求項9】 前記整列させるステップが、前記CIS
    Copコードおよびアドレス情報の1つを、第1の割当
    てられていない発行位置に送り、さらに、前記送られた
    CISCopコードがマッピングするROPの数に従っ
    て、後続の発行位置に最後の発行位置まで送るステップ
    を含み、前記デコードするステップが、 前記送られたCISCopコードから初期エントリポイ
    ントを発生するステップと、 前記初期エントリポイントに従ってマイクロコードRO
    Mから前記送られたCISCopコードがマッピングす
    るROPopコードを読出すステップとを含む、請求項
    7に記載の方法。
  10. 【請求項10】 前記デコードするステップがさらに、
    前記読出すステップの後に、 前記送られたCISCopコードから後続のエントリポ
    イントを発生するステップと、 前記後続のエントリポイントに従ってマイクロコードR
    OMから前記送られたCISCopコードがマッピング
    するROPopコードを読出すステップとを含む、請求
    項9に記載の方法。
  11. 【請求項11】 縮小命令セットコンピュータ(「RI
    SC」)スーパースカラコアを有する複雑命令セットコ
    ンピュータ(「CISC」)プロセッサのための命令デ
    コーダであって、 複数の発行位置と、 RISC類似演算(「ROP」)のシーケンスにマッピ
    ングするCISC命令を前記発行位置に並列に送るため
    の手段と、 前記発行位置の各々において、前記送る手段からの前記
    送られたCISC命令を前記ROP命令シーケンスのR
    OPのそれぞれに並列に変換するための手段と、 変換手段からの前記ROPを前記発行位置から並列に前
    記スーパースカラRISCコアに発行するための手段と
    を含む、命令デコーダ。
  12. 【請求項12】 縮小命令セットコンピュータ(「RI
    SC」)スーパースカラコアを有する複雑命令セットコ
    ンピュータ(「CISC」)プロセッサのための命令デ
    コーダであって、 プログラムからの少なくとも1つのCISC命令のシー
    ケンスを複数のRISC類似演算(「ROP」)に変換
    するための複数の発行位置を含み、前記CISC命令シ
    ーケンス内の各CISC命令は少なくとも1つのROP
    のシーケンスにマッピングし、さらにデコードサイクル
    の間に前記発行位置をプログラム順に前記CISC命令
    シーケンスに、前記CISC命令シーケンス内の各CI
    SC命令がマッピングされるROPの数に従って、割当
    てるための手段と、 前記CISC命令シーケンスの各CISC命令をデコー
    ドサイクルの間に前記発行位置の少なくとも1つに、前
    記割当手段の割当に従って送るための手段と、前記発行
    位置の各々において、前記送るための手段によってそれ
    に送られたCISC命令をデコードサイクルの間にその
    前記ROP命令シーケンスの前記ROPの1つに変換す
    るための手段と、 前記変換する手段からの前記ROPを含む現在の発行ウ
    ィンドウからのROPを前記発行位置から前記スーパー
    スカラRISCコアに発行するための手段とを含む、命
    令デコーダ。
  13. 【請求項13】 前記現在の発行ウィンドウ内のすべて
    のROPがデコードサイクルの間に発行されない場合に
    は、未発行のROPが後続の発行のために利用可能であ
    るように、前記デコーダを機能停止にするための手段を
    さらに含む、請求項12に記載の命令デコーダ。
  14. 【請求項14】 前記割当てる手段が、 前記発行位置のうちの割当てられていないものを順次識
    別するための手段と、 前記割当てられていない発行位置を識別する手段に応答
    して、前記割当てられていない発行位置をプログラム順
    にCISC命令シーケンスに順次割当てるための手段
    と、 前記割当てる手段に応答して、前記発行位置の各々を前
    記ROP命令シーケンス内のそれぞれの未発行のROP
    と関連づけるための手段を含む、請求項12に記載の命
    令デコーダ。
  15. 【請求項15】 前記発行位置の各々が、前記複数の発
    行位置よりも少ない数のROPにマッピングするCIS
    C命令を、前記現在の発行ウィンドウ内の前記ROP
    の、ROP命令シーケンスの他のROPに関しておよび
    発行された前記ROP命令シーケンスのROPの数に関
    しての位置に従って、前記ROP命令シーケンス内の特
    定のROPに変換するための手段を含む、請求項14に
    記載の命令デコーダ。
  16. 【請求項16】 前記CISC命令シーケンスの各CI
    SC命令がCISCopコードを含み、前記変換する手
    段が、CISCopコードを特定のROPタイプおよび
    opコードに、前記現在の発行ウィンドウ内の前記RO
    Pの、前記ROP命令シーケンスの他のROPに関して
    および発行された前記ROP命令シーケンスのROPの
    数に関しての位置に従って、変換するための手段を含
    む、請求項14に記載の命令デコーダ。
  17. 【請求項17】 前記変換する手段が組合せ論理を含
    む、請求項16に記載の命令デコーダ。
  18. 【請求項18】 前記変換する手段がプログラマブルア
    レイ論理を含む、請求項16に記載の命令デコーダ。
  19. 【請求項19】 前記変換する手段が、前記ROP命令
    シーケンスをストアするためのメモリを含み、 前記命令デコーダはさらに、CISCopコードに従っ
    て前記メモリへのエントリポイントを発生するためのメ
    モリコントローラを含む、請求項16に記載の命令デコ
    ーダ。
  20. 【請求項20】 前記複数の発行位置に等しい、または
    それよりも多い数のROPにマッピングするCISC命
    令を前記ROP命令シーケンス内の特定のROPに、前
    記現在の発行ウィンドウ内の前記ROPの、前記ROP
    命令シーケンスの他のROPに関しておよび発行された
    前記ROP命令シーケンスのROPの数に関しての位置
    に従って、変換するためのメモリ手段をさらに含む、請
    求項14に記載の命令デコーダ。
  21. 【請求項21】 前記メモリ手段が、 それぞれの発行位置と関連づけられる複数のメモリを含
    み、前記メモリは、前記ROPシーケンスのマイクロコ
    ード化された命令のそれぞれの組を含み、さらに変換の
    ために与えられるCISC命令に従ってエントリポイン
    トを発生するための手段と、 前記発行位置の各々から特定のROPタイプおよびop
    コードを、前記現在の発行ウィンドウ内の前記ROP
    の、前記ROP命令シーケンスの他のROPに関してお
    よび発行される前記ROP命令シーケンスのROPの数
    に関しての位置に従って供給するように、前記エントリ
    ポイントに従って前記メモリの各々の読出を制御するた
    めの手段とを含む、請求項20に記載の命令デコーダ。
  22. 【請求項22】 前記メモリ制御手段が、変換のために
    与えられる前記CISC命令に従って初期エントリポイ
    ントを定めるための手段をさらに含む、請求項21に記
    載の命令デコーダ。
  23. 【請求項23】 後続のエントリポイントが逐次定めら
    れる、請求項22に記載の命令デコーダ。
  24. 【請求項24】 後続のエントリポイントが無条件分岐
    によって定められる、請求項22に記載の命令デコー
    ダ。
  25. 【請求項25】 後続のエントリポイントが条件付分岐
    によって定められる、請求項22に記載の命令デコー
    ダ。
  26. 【請求項26】 後続のエントリポイントがコール先に
    よって定められる、請求項22に記載の命令デコーダ。
  27. 【請求項27】 後続のエントリポイントがマイクロ分
    岐ROPによって定められる、請求項22に記載の命令
    デコーダ。
  28. 【請求項28】 前記発行位置の各々が、 前記複数の発行位置よりも少ない数のROPにマッピン
    グするCISC命令を、前記ROP命令シーケンス内の
    特定のROPに関するROPタイプおよびopコード情
    報に、前記ROP命令シーケンスの他のROPに関し
    て、および発行された前記ROP命令シーケンスのRO
    Pの数に関して前記現在の発行ウィンドウにおける前記
    ROPの位置に従って、変換するための論理手段と、 CISC命令を前記ROP命令シーケンス内の特定のR
    OPに関するROPタイプおよびopコードに、前記R
    OP命令シーケンスの他のROPに関して、および発行
    された前記ROP命令シーケンスのROPの数に関して
    の前記ROPの位置に従って変換するためのメモリ手段
    と、 前記論理変換手段および前記メモリ変換手段に共通し
    て、CISC命令をオペランドポインタ情報に変換する
    ための手段とを含む、請求項14に記載の命令デコー
    ダ。
  29. 【請求項29】 前記共通の変換手段が論理を含む、請
    求項28に記載の命令デコーダ。
  30. 【請求項30】 変換のために前記メモリ手段に与えら
    れるCISC命令が、前記複数の発行位置に等しいか、
    またはそれよりも多い数のROPにマッピングする、請
    求項28に記載の命令デコーダ。
  31. 【請求項31】 変換のために前記メモリ手段に与えら
    れるCISC命令が、頻繁には用いられないCISC命
    令である、請求項28に記載の命令デコーダ。
  32. 【請求項32】 縮小命令セットコンピュータ(「RI
    SC」)スーパースカラコアを有する複雑命令セットコ
    ンピュータ(「CISC」)プロセッサのための命令デ
    コーダであって、 プログラムからの少なくとも1つのCISC命令のシー
    ケンスをプログラム順に待ち行列に入れるための手段を
    含み、前記シーケンスの第1のCISC命令はキューの
    先頭に整列され、さらに待ち行列化手段における前記C
    ISC命令をRISC類似演算(「ROP」)に変換す
    るための複数の発行位置を含み、前記待ち行列化手段に
    おける前記CISC命令の各々は、少なくとも1つのR
    OPのシーケンスにマッピングし、さらに発行位置を前
    記待ち行列化手段内の前記CISC命令に、デコードサ
    イクルの間にキューの前記先頭にある前記CISC命令
    から始まって、前記待ち行列化手段におけるCISC命
    令がマッピングするROPの数に従って、順次割当てる
    ための手段と、 前記待ち行列化手段における前記CISC命令の少なく
    とも1つをデコードサイクルの間に前記割当手段による
    割当に従って前記発行位置に送るための手段と、 前記発行位置の各々において、前記送るための手段によ
    ってそれに送られた前記CISC命令をデコードサイク
    ルの間に前記ROP命令シーケンスのROPに変換する
    ための手段と、 前記変換するための手段からのROPを含む現在の発行
    ウィンドウからのROPを、前記発行位置から前記スー
    パースカラRISCコアに発行するための手段とを含
    む、命令デコーダ。
  33. 【請求項33】 前記待ち行列化手段においてストアさ
    れた各CISC命令が、マッピングされるROPの数の
    指示およびopコード要素識別子を含むopコード要素
    を含み、前記送る手段が前記待ち行列化手段におけるC
    ISC命令の前記opコード要素識別子を検出して、そ
    の前記opコード要素を識別するための手段と、 前記識別されたopコード要素と、前記識別されたop
    コード要素に対する第1の相対的な位置を有し、かつ存
    在すればプレフィックス情報を表わすための第1の付加
    的な要素と、前記識別されたopコード要素に対する第
    2の相対的な位置を有し、かつ存在すればmod r/
    m情報を表わす第2の付加的な要素と、前記識別された
    opコード要素に対する第3の相対的な位置を有し、か
    つ存在すればsib情報を表わす第3の付加的な要素と
    を、前記割当手段の割当に従って、デコードサイクルの
    間にマッピングされるROPの数の前記指示までの数の
    割当てられていない発行位置に送るための手段とを含
    む、請求項32に記載の命令デコーダ。
  34. 【請求項34】 前記発行位置の各々が、 前記複数の発行位置を下回る数のROPにマッピングす
    るCISC命令のopコード要素を、前記ROP命令シ
    ーケンスの特定のROPのROPタイプおよびopコー
    ドに、前記現在の発行ウィンドウ内の前記特定のROP
    の、前記ROP命令シーケンスの他のROPに関して、
    および発行された前記ROP命令シーケンスのROPの
    数に関しての位置に従って、変換するための論理手段
    と、 前記複数の発行位置に等しい、またはそれよりも多い数
    のROPにマッピングするCISC命令のopコード要
    素を、前記ROP命令シーケンスの特定のROPのRO
    Pタイプおよびopコードに、前記現在の発行ウィンド
    ウ内の前記特定のROPの、前記ROP命令シーケンス
    の他のROPに関して、および発行された前記ROP命
    令シーケンスのROPの数に関しての位置に従って、変
    換するためのメモリ手段と、 前記論理変換手段および前記メモリ手段に共通して、C
    ISC命令のプレフィックス、mod r/m、および
    sib要素をROPオペランドポインタ情報に変換する
    ための手段とを含む、請求項33に記載の命令デコー
    ダ。
  35. 【請求項35】 前記待ち行列化手段内のどの命令がキ
    ューの次の先頭であるかを、前記待ち行列化手段内の各
    CISC命令がマッピングされるROPの数およびタイ
    プに従って識別するための手段をさらに含む、請求項3
    2に記載の命令デコーダ。
  36. 【請求項36】 前記識別手段が、 ROP発行の可能なすべてのシナリオに関してキューの
    次の先頭を識別するための手段と、 ROP発行の可能なシナリオの1つを選択するための手
    段とを含む、請求項35に記載の命令デコーダ。
  37. 【請求項37】 予め定められた予測基準に従って、前
    記ROP発行の可能なシナリオのどれが最も起こりそう
    かを予測するための手段と、 前記予測手段に応答して、前記予測に従って前記ROP
    の発行の可能なシナリオの1つを選択するための手段と
    を含む、請求項36に記載の命令デコーダ。
  38. 【請求項38】 前記予め定められた予測基準が、予測
    発生された分岐を超えてROPを発行しないことを含
    む、請求項37に記載の命令デコーダ。
  39. 【請求項39】 前記予め定められた予測基準が、2R
    OP浮動小数点命令の2つのROPの両方が前記現在の
    発行ウィンドウにおいて発行され得ないときには、前記
    浮動小数点命令を超えてROPを発行しないことを含
    む、請求項38に記載の命令デコーダ。
  40. 【請求項40】 前記予め定められた予測基準が、2R
    OP浮動小数点命令の2つのROPの両方が前記現在の
    発行ウィンドウにおいて発行され得ないときには、前記
    ROP浮動小数点命令を超えてROPを発行しないこと
    を含む、請求項37に記載の命令デコーダ。
  41. 【請求項41】 縮小命令セットコンピュータ(「RI
    SC」)スーパースカラコアを有する複雑命令セットコ
    ンピュータ(「CISC」)プロセッサのための命令デ
    コーダであって、 プログラムからの少なくとも1つのCISC命令のシー
    ケンスを複数のRISC類似演算(「ROP」)に変換
    するための複数の発行位置を含み、前記CISC命令シ
    ーケンスの各CISC命令は、少なくとも1つのROP
    のシーケンスにマッピングし、さらに前記発行位置をデ
    コードサイクルの間にプログラム順に前記CISC命令
    シーケンスに、前記CISC命令シーケンスの各CIS
    C命令がマッピングされるROPの数に従って割当てる
    ための手段と、 前記CISC命令シーケンスの各CISC命令を、デコ
    ードサイクルの間に前記発行位置の少なくとも1つに、
    前記割当手段による割当に従って送るための手段と、 前記発行位置の各々において、前記ROP命令シーケン
    スにおける第1の特定のROPに関して第1のタイプの
    CISC命令をROP情報に、現在の発行ウィンドウ内
    の前記第1の特定のROPの、前記ROP命令シーケン
    スの他のROPに関して、および前記ROP命令シーケ
    ンスから発行されたROPの数に関しての位置に従っ
    て、変換するための論理手段と、 前記発行位置の各々において、前記ROP命令シーケン
    スにおける第2の特定のROPに関して第2のタイプの
    CISC命令をROP情報に、前記現在の発行ウィンド
    ウ内の前記第2の特定のROPの、前記ROP命令シー
    ケンスの他のROPに関して、および発行された前記R
    OP命令シーケンスのROPの数に関しての位置に従っ
    て、変換するためのメモリ手段と、 第1のタイプのCISC命令からマッピングされるRO
    Pのための前記論理手段から、および第2のタイプのC
    ISC命令からマッピングされるROPのための前記メ
    モリ手段からのROP情報を選択するための手段と、 前記選択手段からのROPを含む現在の発行ウィンドウ
    内のROPをデコードサイクルの間に前記スーパースカ
    ラRISCコアに発行するための手段とを含む、命令デ
    コーダ。
  42. 【請求項42】 前記選択手段の出力に従って、共有さ
    れる資源に関する制御情報を発生するための手段をさら
    に含む、請求項41に記載の命令デコーダ。
  43. 【請求項43】 縮小命令セットコンピュータ(「RI
    SC」)スーパースカラコアを有する複雑命令セットコ
    ンピュータ(「CISC」)プロセッサのための命令デ
    コーダであって、 プログラムからの少なくとも1つのCISC命令のシー
    ケンスを複数のRISC類似演算(「ROP」)に変換
    するための複数の発行位置を含み、各CISC命令は少
    なくとも1つのROPのシーケンスにマッピングし、さ
    らに前記発行位置をデコードサイクルの間にプログラム
    順に前記CISC命令シーケンスに、前記CISCシー
    ケンスにおける各CISC命令がマッピングされるRO
    Pの前記数に従って割当てるための手段と、 前記CISC命令シーケンスの各CISC命令をデコー
    ドサイクルの間に前記発行位置の少なくとも1つに、前
    記割当手段による割当に従って送るための手段と、 前記発行位置の各々において、前記ROP命令シーケン
    スの第1の特定のROPに関して第1のタイプのCIS
    C命令のopコード要素をROPタイプおよびopコー
    ドに、前記現在の発行ウィンドウ内の前記第1の特定の
    ROPの、前記ROP命令シーケンスの他のROPに関
    して、および前記ROP命令シーケンスから発行された
    ROPの数に関しての位置に従って、変換するための論
    理手段と、 前記発行位置の各々において、前記ROP命令シーケン
    スにおける第2の特定のROPに関して第2のタイプの
    CISC命令のopコード要素をROPタイプおよびo
    pコードに、前記現在の発行ウィンドウ内の前記第2の
    特定のROPの、前記ROP命令シーケンスの他のRO
    Pに関して、および発行された前記ROP命令シーケン
    スのROPの数に関しての位置に従って、変換するため
    のメモリ手段と、 前記発行位置の各々において、論理変換手段および前記
    メモリ変換手段に共通して、CISC命令のプレフィッ
    クス、mod r/m、およびsib要素をROPオペ
    ランドポインタ情報に変換するための手段と、 第1のタイプのCISC命令からマッピングされたRO
    Pに関して共通手段および論理手段の出力を組合せ、第
    2のタイプのCISC命令からマッピングされたROP
    に関して前記共通手段および前記メモリ手段の出力を組
    合せるための手段と、 前記組合せる手段からのROPを含む現在の発行ウィン
    ドウからのROPを前記組合せ手段から前記スーパース
    カラRISCコアに発行するための手段とを含む、命令
    デコーダ。
  44. 【請求項44】 前記組合せ手段の出力に従って共有さ
    れる資源に関する制御情報を発生するための手段をさら
    に含む、請求項43に記載の命令デコーダ。
  45. 【請求項45】 複数個の発行位置から発行ウィンドウ
    内の複数のRISC類似演算(「ROP」)をRISC
    類似プロセッサコアに発行するための装置であって、前
    記ROPは1つまたはそれ以上のCISC命令からマッ
    ピングされ、 アドレス情報に基づいてCISC命令にアクセスするた
    めのインタフェースユニットと、 アドレス情報を前記インタフェースユニットに供給し、
    CISC命令を受取り、前記受取られたCISC命令を
    プリデコードするための命令キャッシュとを含み、前記
    プリデコードされたCISC命令は、それぞれの前記プ
    リデコードされたCISC命令がマッピングするROP
    の数を識別するプリデコード情報を含み、さらに実行順
    にプリデコードされたCISC命令をストアするための
    メモリと、 前記CISC命令がマッピングするROPの数と各発行
    ウィンドウについての発行位置の数とのうちの少ない方
    にまで、実行順での前記プリデコードされたCISC命
    令への前記発行位置の割当を定めるためのコントローラ
    と、 前記発行位置における複数のそれぞれの変換経路と、 前記コントローラに応答して、前記割当に従って前記変
    換経路に前記プリデコードされたCISC命令を供給す
    るためのマルチプレクサとを含む、装置。
  46. 【請求項46】 CISC命令をストアするための外部
    メモリと、 前記外部メモリおよび前記インタフェースユニットに結
    合される外部バスとをさらに含む、請求項45に記載の
    装置。
  47. 【請求項47】 前記コントローラは、各発行位置につ
    いてROPの数を定めて、自身と共通して1つのCIS
    C命令に割当てられた他の発行位置に関してのその相対
    的な位置を示すためのROP数論理を含み、前記コント
    ローラは、それぞれ前記変換経路に結合されてそれに前
    記ROP数を供給するための出力を有し、 前記変換経路の各々は、自身に供給された前記ROP数
    に応答して、1つまたはそれ以上のROPのシーケンス
    にマッピングする供給されたCISC命令を、前記シー
    ケンスの前記ROPの特定の1つに変換するための論理
    を含む、請求項45に記載の装置。
  48. 【請求項48】 前記変換経路が、CISC命令のため
    のROPのそれぞれのシーケンスをストアするためのそ
    れぞれのROPメモリを含み、 前記コントローラが、供給されたCISC命令に関して
    前記変換経路における前記ROPメモリに対するエント
    リポイントを定めるためのメモリ制御論理を含み、 前記ROPメモリは、前記供給されたCISC命令に関
    してROPのシーケンスを供給する、請求項45に記載
    の装置。
  49. 【請求項49】 前記変換経路の各々が、 それに供給されるROP数に応答して、1つまたはそれ
    以上のROPのシーケンスにマッピングする供給された
    CISC命令を前記ROPの特定の1つに変換するため
    の変換論理と、 CISC命令に関するROPのそれぞれのシーケンスを
    ストアするためのそれぞれのROPメモリとを含み、 前記コントローラが、 各発行位置についてROP数を定め、共通にあるCIS
    C命令に割当てられた他の発行位置に関してのその相対
    位置を示すためのROP数論理を含み、前記コントロー
    ラは、前記変換経路にそれぞれ結合されて、それに前記
    ROP数を供給するための出力を有し、前記コントロー
    ラはさらに供給されたCISC命令に関して前記変換経
    路における前記ROPメモリに対するエントリポイント
    を定めるためのメモリ制御論理を含み、前記ROPメモ
    リは前記供給されたCISC命令に関するROPのシー
    ケンスを供給し、 前記装置はさらに、それぞれの変換位置において前記R
    OPメモリと前記変換論理との間で選択するための、前
    記発行位置それぞれにおける複数の選択回路をさらに含
    む、請求項45に記載の装置。
JP6262437A 1993-10-29 1994-10-26 スーパスカラ命令デコード/発行装置 Withdrawn JPH07182163A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14638393A 1993-10-29 1993-10-29
US146383 1993-10-29

Publications (1)

Publication Number Publication Date
JPH07182163A true JPH07182163A (ja) 1995-07-21

Family

ID=22517123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6262437A Withdrawn JPH07182163A (ja) 1993-10-29 1994-10-26 スーパスカラ命令デコード/発行装置

Country Status (4)

Country Link
US (2) US6189087B1 (ja)
EP (1) EP0651320B1 (ja)
JP (1) JPH07182163A (ja)
DE (1) DE69427265T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000515268A (ja) * 1996-01-26 2000-11-14 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック
JP2007095061A (ja) * 2005-09-27 2007-04-12 Internatl Business Mach Corp <Ibm> 情報処理システムにおいて命令を発行キューから発行するための方法及び装置
JP2010066893A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
GB2290395B (en) 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
WO1997013195A1 (en) * 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5787266A (en) * 1996-02-20 1998-07-28 Advanced Micro Devices, Inc. Apparatus and method for accessing special registers without serialization
JPH10177482A (ja) * 1996-10-31 1998-06-30 Texas Instr Inc <Ti> マイクロプロセッサおよび動作方法
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5845102A (en) * 1997-03-03 1998-12-01 Advanced Micro Devices, Inc. Determining microcode entry points and prefix bytes using a parallel logic technique
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
US5933629A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US5930491A (en) * 1997-06-18 1999-07-27 International Business Machines Corporation Identification of related instructions resulting from external to internal translation by use of common ID field for each group
US5875316A (en) * 1997-06-25 1999-02-23 Sun Microsystems, Inc. Method for handling complex instructions in an out-of-order processor
US6098165A (en) * 1997-06-25 2000-08-01 Sun Microsystems, Inc. Fetching and handling a bundle of instructions comprising instructions and non-complex instructions
US6192398B1 (en) * 1997-10-17 2001-02-20 International Business Machines Corporation Remote/shared browser cache
US6253311B1 (en) * 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
US6546479B1 (en) * 1998-02-10 2003-04-08 Koninklijke Philips Electronics N.V. Reduced instruction fetch latency in a system including a pipelined processor
US6249855B1 (en) * 1998-06-02 2001-06-19 Compaq Computer Corporation Arbiter system for central processing unit having dual dominoed encoders for four instruction issue per machine cycle
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6442707B1 (en) 1999-10-29 2002-08-27 Advanced Micro Devices, Inc. Alternate fault handler
US6539470B1 (en) 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
US6502185B1 (en) * 2000-01-03 2002-12-31 Advanced Micro Devices, Inc. Pipeline elements which verify predecode information
WO2002035466A1 (fr) * 2000-10-23 2002-05-02 Stmicroelectronics Sa Circuit de detection et de mise en forme de trames de donnees
US7149878B1 (en) 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7599981B2 (en) 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US7074489B2 (en) * 2001-05-23 2006-07-11 Air Products And Chemicals, Inc. Low dielectric constant material and method of processing by CVD
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
US7181596B2 (en) * 2002-02-12 2007-02-20 Ip-First, Llc Apparatus and method for extending a microprocessor instruction set
US7315921B2 (en) 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US7328328B2 (en) * 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
US7395412B2 (en) * 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US7155598B2 (en) * 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7185180B2 (en) * 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
US7380103B2 (en) * 2002-04-02 2008-05-27 Ip-First, Llc Apparatus and method for selective control of results write back
US7373483B2 (en) * 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7302551B2 (en) * 2002-04-02 2007-11-27 Ip-First, Llc Suppression of store checking
US7380109B2 (en) * 2002-04-15 2008-05-27 Ip-First, Llc Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor
US6957322B1 (en) 2002-07-25 2005-10-18 Advanced Micro Devices, Inc. Efficient microcode entry access from sequentially addressed portion via non-sequentially addressed portion
US7822955B2 (en) * 2003-01-21 2010-10-26 Arm Limited Data processing apparatus and method for utilizing endianess independent data values
US6957319B1 (en) 2003-02-19 2005-10-18 Advanced Micro Devices, Inc. Integrated circuit with multiple microcode ROMs
US20040193845A1 (en) * 2003-03-24 2004-09-30 Sun Microsystems, Inc. Stall technique to facilitate atomicity in processor execution of helper set
US20040193844A1 (en) * 2003-03-24 2004-09-30 Sun Microsystems, Inc. Load and/or store queue emptying technique to facilitate atomicity in processor execution of helper set
US7219218B2 (en) * 2003-03-31 2007-05-15 Sun Microsystems, Inc. Vector technique for addressing helper instruction groups associated with complex instructions
JP3752493B2 (ja) * 2003-03-31 2006-03-08 東芝マイクロエレクトロニクス株式会社 レジスタ・リネーミング機能を有するプロセッサ
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7707387B2 (en) * 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US7793040B2 (en) 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US7451297B2 (en) 2005-06-01 2008-11-11 Microsoft Corporation Computing system and method that determines current configuration dependent on operand input from another configuration
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7624253B2 (en) * 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
US8219788B1 (en) 2007-07-23 2012-07-10 Oracle America, Inc. Virtual core management
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法
CN101216755B (zh) * 2008-01-02 2011-10-12 中国科学院计算技术研究所 Risc处理器及其浮点寄存器的非对齐访存方法
CN101216778B (zh) * 2008-01-21 2011-04-13 中国科学院计算技术研究所 一种risc处理器装置及其指令地址转换查找方法
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US8639886B2 (en) * 2009-02-03 2014-01-28 International Business Machines Corporation Store-to-load forwarding mechanism for processor runahead mode operation
US8589661B2 (en) * 2010-12-07 2013-11-19 Advanced Micro Devices, Inc. Odd and even start bit vectors
US9280352B2 (en) * 2011-11-30 2016-03-08 Apple Inc. Lookahead scanning and cracking of microcode instructions in a dispatch queue
US9710278B2 (en) * 2014-09-30 2017-07-18 International Business Machines Corporation Optimizing grouping of instructions
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US11977890B2 (en) * 2021-12-30 2024-05-07 Advanced Micro Devices, Inc. Stateful microcode branching

Family Cites Families (48)

* Cited by examiner, † Cited by third party
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
US4161784A (en) 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4502111A (en) 1981-05-29 1985-02-26 Harris Corporation Token generator
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 株式会社日立製作所 デ−タ処理装置
EP0239081B1 (en) 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
AU587714B2 (en) 1986-08-27 1989-08-24 Amdahl Corporation Cache storage queue
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US4926322A (en) 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US5222230A (en) 1988-01-29 1993-06-22 Texas Instruments Incorporated Circuitry for transferring data from a data bus and temporary register into a plurality of input registers on clock edges
US5155817A (en) 1988-04-01 1992-10-13 Kabushiki Kaisha Toshiba Microprocessor
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
US5056006A (en) 1988-09-12 1991-10-08 General Electric Company Parallel processor with single program storage and sequencer and simultaneous instruction processing
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
CA2016068C (en) 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
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 日本電気株式会社 マイクロプロセッサ
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
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
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5128888A (en) 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. Arithmetic unit having multiple accumulators
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
CA2037708C (en) 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
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 スーパースカラプロセツサ
EP1526446A3 (en) 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
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
GB2263895B (en) 1992-02-07 1995-06-28 Aeb Jacked Structures Ltd Improvements in and relating to moving a structure relative to the ground
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
US5465373A (en) 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
EP0651321B1 (en) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5632023A (en) 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000515268A (ja) * 1996-01-26 2000-11-14 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック
JP2007095061A (ja) * 2005-09-27 2007-04-12 Internatl Business Mach Corp <Ibm> 情報処理システムにおいて命令を発行キューから発行するための方法及び装置
JP2010066893A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ

Also Published As

Publication number Publication date
DE69427265D1 (de) 2001-06-28
US6189087B1 (en) 2001-02-13
US5796973A (en) 1998-08-18
EP0651320B1 (en) 2001-05-23
DE69427265T2 (de) 2002-05-02
EP0651320A1 (en) 1995-05-03

Similar Documents

Publication Publication Date Title
JPH07182163A (ja) スーパスカラ命令デコード/発行装置
JP3628379B2 (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
US5796974A (en) Microcode patching apparatus and method
US5689672A (en) Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
JP3662296B2 (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
EP0651323B1 (en) Microprocessors load/store functional units and data caches
US5826053A (en) Speculative instruction queue and method therefor particularly suitable for variable byte-length instructions
US5630082A (en) Apparatus and method for instruction queue scanning
US5655097A (en) High performance superscalar microprocessor including an instruction cache circuit for byte-aligning CISC instructions stored in a variable byte-length format
US5600806A (en) Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
US5913047A (en) Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US6684323B2 (en) Virtual condition codes
JP2002521761A (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
JP2002521762A (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US5940602A (en) Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations
US5898851A (en) Method and apparatus for five bit predecoding variable length instructions for scanning of a number of RISC operations

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20020115