JP3714999B2 - 命令キューをスキャンするための装置およびその方法 - Google Patents
命令キューをスキャンするための装置およびその方法 Download PDFInfo
- Publication number
- JP3714999B2 JP3714999B2 JP20876895A JP20876895A JP3714999B2 JP 3714999 B2 JP3714999 B2 JP 3714999B2 JP 20876895 A JP20876895 A JP 20876895A JP 20876895 A JP20876895 A JP 20876895A JP 3714999 B2 JP3714999 B2 JP 3714999B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- issue
- array
- opcode
- bits
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 28
- 238000012545 processing Methods 0.000 claims abstract description 16
- 206010038933 Retinopathy of prematurity Diseases 0.000 claims description 225
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 20
- 230000000873 masking effect Effects 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 claims description 4
- 230000001902 propagating effect Effects 0.000 claims 9
- 238000009795 derivation Methods 0.000 claims 2
- 238000006243 chemical reaction Methods 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 37
- 238000003491 array Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Radar Systems Or Details Thereof (AREA)
- Ultra Sonic Daignosis Equipment (AREA)
- Vehicle Body Suspensions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【関連出願の相互参照】
この出願は、1994年10月26日に共同発明者デイビッド・ビィ・ウィット(David B. Witt )およびマイケル・ディ・ゴダード(Michael D. Goddard)の名前で出願されかつ「スーパスカラ命令デコード/発行装置(Superscalar Instruction Decoder )」と題された特願平6−262437の一部継続出願であり、その全体を引用によりここに援用する。
【0002】
【発明の分野】
この発明は、命令デコードに関し、より特定的には、命令要素を識別してデコードするための可変長命令のキューのスキャンに関する。
【0003】
【関連技術の説明】
汎用プロセッサは、典型的にはスカラ命令セットに基づく。プロセッサアーキテクチャは、RISC(縮小命令セットコンピュータ)(Reduced Instruction Set Computer)ベースであるか、またはCISC(複雑命令セットコンピュータ)(Complex Instruction Set Computer)ベースである。各アプローチとも、文献で広く議論されているように利点および欠点がある。
【0004】
RISCアーキテクチャは、スーパスカラコンピュータデザインにおいて用いられている。「スーパスカラ」という用語は、スカラ命令の同時実行によって性能を改良するコンピュータ構造のことである。スーパスカラRISCアーキテクチャの実現はかなり進歩してきている。スーパスカラRISCアーキテクチャは、典型的にはパイプライン構造を考慮して規定されており、スーパスカラ構造を容易にする多くの特徴を含む。これらの特徴は、固定フォーマットおよび固定長命令、簡潔な命令オペランド、ならびにロード/ストアアーキテクチャを含む。スーパスカラRISCアーキテクチャは、ここにその全体を引用によって援用する、1991年、ニュージャージー州、エングルウッドクリフス(Englewood Cliffs)の、プレンティスホール社(Prentice Hall )出版、ジョンソン(Johnson )著、「スーパスカラマイクロプロセッサデザイン」(Superscalar Microprocessor Design )に説明される。
【0005】
スーパスカラCISCアーキテクチャを達成することが関心を呼んでいるが、スーパスカラ構造を考慮して規定されるCISCアーキテクチャがほとんどないこともあって、進歩が遅れている。CISCアーキテクチャは、主要な実現技術が命令セットのマイクロコード変換であったときに規定されており、演算が重なるように設計することではなく、どの演算が命令に組合されるべきかということに重点がおかれていた。非常に用途が広い一方で、マイクロコード変換は、パイプラインアーキテクチャまたはスーパスカラアーキテクチャの開発を促進するものではない。命令フォーマットの複雑さを含め、従来のCISCアーキテクチャの数々の局面から困難が生じている。命令フォーマットの複雑さの一面は、命令長の可変性である。
【0006】
CISC命令フォーマットの一例は、カリフォルニア州、サンタクララ(Santa Clara )のインテル社(Intel Corporation )から入手可能である、80486型マイクロプロセッサおよびペンティアム(Pentium )(登録商標)マイクロプロセッサの命令フォーマットである。より初期のインテル命令セットからの特性を受継ぎ、かつ一般にx86フォーマットとして知られている、この命令フォーマットにおいて、命令は、1つまたは2つのopコードバイトからなるオペレーションコード(「opコード」)、修飾レジスタまたはメモリ(「mod r/m」)バイト、スケールインデックスベース(「sib」)バイト、変位バイト、および即値データバイトを有し得る。opコードはオペレーションコードを特定し、またレジスタ識別子を含み得る。mod r/mバイトは、オペランドがレジスタにあるか、またはメモリにあるかを特定する。オペランドがメモリにあれば、mod r/mバイトにおけるフィールドは使用されるべきアドレスモードを特定する。mod r/mバイトのあるコード化は、第2のバイトであるsibバイトが後に続いてアドレスモードを完全に特定することを示す。sibバイトは、2ビットスケールフィールド、3ビットインデックスフィールド、および3ビットベースフィールドからなる。これらのフィールドは、アドレス計算がどのように行なわれるかを特定するために複雑メモリアドレスモードにおいて用いられる。変位バイトはアドレス計算の際に用いられる。即値データバイトは命令オペランドのために用いられる。プレフィックスバイトとして知られる1つまたはそれ以上の付加的なバイトが、opコードバイトの前に表われるかもしれない。プレフィックスバイトは、命令の解釈を変更し、さらに複雑にする。
【0007】
上述の説明から明らかであるように、x86フォーマットの命令の長さは幅広く可変である。最小命令は1つのopコードバイトからなり、8ビット長である。プレフィックスバイトを含む長い命令は104ビット長であり得る。2つ以上のプレフィックスバイトを含む、より長い命令もまた可能である。
【0008】
x86命令フォーマットの可変命令長および他の複雑化は、複雑で比較的遅いデコード回路をもたらしている。遅いデコード回路は、複雑な命令を扱ういくつかのCISCマイクロプロセッサおよび遅いマイクロプロセッサにおいて受入可能であるかもしれないが、各機能要素が速度に対して最適化されるアーキテクチャを有するマイクロプロセッサの性能に深刻な影響を及ぼす。
【0009】
【発明の概要】
利点として、この発明は、1つまたはそれ以上の命令の方向を、スーパスカラプロセッサの発行位置に適切なように制御するためのスーパスカラプロセッサの命令のキューの高速スキャンを提供する。
【0010】
このおよび他の利点は、第1および第2の発行位置それぞれに対する第1および第2のステージを含むスキャン装置において達成される。第1のステージは、opコード位置識別要素に結合された入力を有するマスク論理の複数個のグループと、識別要素に結合された入力と第1のステージのマスク論理グループの上位のものに結合された出力とを有するルックアヘッド発生器と、第1のステージのマスク論理グループの出力に結合されたマッピング命令情報発生器とを含む。第2のステージは、第1のステージの対応するマスク論理グループの出力に結合された入力を有するマスク論理の複数個のグループと、マッピング命令情報発生器の出力および第1のステージのマスク論理グループの出力に結合された入力と第2のステージのマスク論理グループの上位のものに結合された出力とを有するルックアヘッド発生器とを含む。
【0011】
このおよび他の利点はまた、第1の組のopコード位置識別子(「OLI」)により識別されるキューのそれぞれの位置に1つまたはそれ以上のopコードを有する1次命令のキューをスキャンするための方法において得られ、各1次命令は、多くの1つまたはそれ以上の2次命令のシーケンスにマッピングする。第1の組のOLIの第1および第2のサブセットが識別され、第1の発行位置に対して、第1の組のOLIの第1および第2のサブセットに対応する第1および第2のサブセットを有する第2の組のOLIが発生されるが、そこではいかなる最初にアサートされたOLIも識別される。第1の組のOLIの第1のサブセットがいかなるアサートされたOLIも含まなければ、第1の発行位置に対してルックアヘッド信号も発生される。ルックアヘッド信号は、第2の組のOLIの第2のサブセットに与えられ、第2の組のOLIから第1の発行位置に対して、第1の組の最初にアサートされたOLIを示しかつ第1の組のいかなる続いてアサートされたOLIも示さない第3の組のOLIを発生する。第4の組のOLIは第1の組から導出され、同様の一連のステップが第2の発行位置に対して与えられる。変更例において、第1の発行位置が2次命令のシーケンスの最後の2次命令を含むとき、第1の組のOLIの最初にアサートされたOLIを阻止することにより、第4の組のOLIが導出され、それ以外のときは、第1の組のOLIの最初にアサートされたOLIが伝搬される。
【0012】
【好ましい実施例の詳細な説明】
図面において、同じ参照符号が同じ部分を示す。
【0013】
CISC命令のスーパスカラ実行を実現するためのプロセッサ100のアーキテクチャが図1に示される。プロセッサ100は、スーパスカラRISC類似コア110に基づき、コア110で処理するための、CISC命令をRISC類似演算またはROPに変換するさまざまな要素を含む。ROPは、「ソースA−演算−ソースB→デスティネーション」構造、opコードおよびソースオペランドの固定位置、ロード/ストアアーキテクチャ、およびロード/ストアアドレスモードの直接計算を含めて、多くの有用な特性を有する。コア110のためのROPは、3つのオペランド命令、すなわち2つのソースオペランドAおよびB、ならびに1つのデスティネーションオペランドである。
【0014】
プロセッサ100の主な機能ブロック間、ならびに外部メモリへおよびそこからの、CISCアドレス、データおよび制御の転送は、内部アドレスおよびデータ(「IAD」)バス102を介して伝達され、これは、物理タグ記憶装置162およびメモリ管理ユニット164と関連してバスインタフェースユニット(「BIU」)160によって外部バス(図示せず)にインタフェースされる。IADバス102は64ビットバスである。転送先バスまたはXTARGETバス103は、32ビットバスであり、マイクロブランチ誤予測、例外、およびリセットの際の分岐セクションBRNSEC135からのIDECODE108の更新、およびIDECODEからのBRNSEC135における分岐FIFOの更新を含む、種々の優先順位をつけられた使用に供される。
【0015】
CISC命令をROPに変換するさまざまな要素は、命令キャッシュまたはICACHE104と、バイトキューまたはBYTEQ106と、命令デコーダまたはIDECODE108とを含む。CISC命令、例としてx86クラスマイクロプロセッサにより用いられる命令(これ以降x86命令)は、ICACHE104において分解されかつプリデコードされる。ICACHE104は、未処理のx86命令開始および終了点を識別し、マークし、「プリデコード」情報をコード化する第1レベルの(1次)命令キャッシュである。プリデコードされたx86命令は、概念的には「予測実行」状態にある0、1またはそれ以上のプリデコードされたx86命令を表わす、最大16エントリのキューであるBYTEQ106にコピーされる。プリデコードされたx86命令の各々は、命令開始で開始し、命令終了で終了し、1つまたはそれ以上の要素からなる。各要素は、有効ビット、x86命令バイト、予測実行状態のプリデコード情報、および分岐誤予測情報を含む。x86命令がBYTEQ106から発行され、後続のx86命令がキューの先頭に進められると、プリデコードされたx86命令は利用可能なスペースがあればBYTEQ106の位置にコピーされる。BYTEQ106からのプリデコードされたx86命令は、命令デコーダ(「IDECODE」)108においてROPのそれぞれのシーケンスにマッピングされる。IDECODE108は、BYTEQ106内のプリデコードされたx86命令に基づくすべてのROPについてのタイプ、opコード、およびポインタ値を発生し、BYTEQ106をシフトするために発行可能なx86命令の数を決定する。IDECODE108はまた、推論ROPのプログラムカウンタ値を維持し、推論浮動小数点実行のための浮動小数点ポインタの推論マッピングを維持する。どれだけのROPにx86命令がマッピングするかに依存して、4つまでのx86命令が同時に発行され得る。
【0016】
BYTEQ106は、ICACHE104とIDECODE108との間に示されるが、いずれかと一体化されても、両方にわたって分散されても、また別個のユニットとして実現されてもよい。
【0017】
ROP命令はさまざまなバスを介してコア110に発行される。コア110は、4つのROP発行、5つのROP結果、および16までの推論実行ROPをサポートする。AおよびBソースオペランドに対する4つまでの組のポインタが、IDECODE108によってそれぞれのバスを介してコア110内のレジスタファイル(「REGF」)112とリオーダバッファ(「ROB」)114とに供給される。REGF112は、整数および浮動小数点命令に関するマッピングされたx86レジスタを含む物理レジスタファイルである。ROB114は、推論実行ROPの相対的な順番を追跡するための先頭および末尾キューポインタを備えた環状FIFOである。ストア位置は、命令結果にダイナミックに割当てられる。推論実行状態オペランドは、ライトバックバス113を介してROB114からREGF112に放棄される。
【0018】
REGF112およびROB114は、RISCオペランドAおよびBの適切な「実行された」および「予測実行された」ものをAおよびBソースオペランドバス116を介してコア110内のさまざまな機能ユニットに供給する。コア110内のさまざまな機能ユニットは、第1の算術演算論理装置(「ALU0」)131、第2の算術演算論理およびシフトユニット(「ALU1およびSHF」)132、特殊レジスタブロック(「SRB」)133、ロード/ストアセクション(「LSSEC」)134、分岐セクション(「BRNSEC」)135、および浮動小数点ユニット(「FPU」)136である。機能ユニット131、132、133、134、135および136は、オペランドバス116およびTADバス118に接続される入力を有するそれぞれの待合せステーション121、122、124、125および126を含む。RISCopコード情報は、タイプおよび発行情報(「TAD」)バス118を介してIDECODE108から発行される。機能ユニット131−136の実行の完了から結果が得られると、結果およびそれらのそれぞれの結果タグが、4バス幅の結果タグおよび結果バス140を介してROB114に、ならびに待合せステーション121−122および124−126に供給される。
【0019】
DCACHE150は、整数および浮動小数点ロードおよびストア演算の両方を扱うLSSEC134と密接して整列される。2つまでのロード動作が同時にDCACHE150にアクセスし、それらの動作を結果バス140に転送する。DCACHE150内にストアされたデータに関するキャッシュヒット/ミスチェックもまたLSSEC134によって行なわれる。
【0020】
プロセッサ100はまた、物理タグ記憶装置162、メモリ管理ユニット164、および従来の外部メモリ166に結合される従来の外部バスとインタフェースするバスインタフェースユニット160を含む。物理タグ記憶装置162は、ICACHE104およびDCACHE150の内容に関するタグを含む。メモリ管理ユニット164は、メモリアドレス変換を行なう。バスインタフェースユニット160は、物理タグ記憶装置162からの読出/書込サイクルに関するリクエストをとり、外部バスにおける読出/書込サイクルを見て、物理タグ記憶装置162、ICACHE104、およびDCACHE150におけるキャッシュ一致性を確実にし、検出の際に適宜データを更新するか、無効にするか、または与える。
【0021】
図1のプロセッサ100は、フェッチステージ、2つのデコードステージDECODE1およびDECODE2、実行ステージ、結果ステージ、ならびに放棄ステージを有する5段のパイプラインとして動作する。
【0022】
ICACHE104は、1994年10月25日出願の特願平6−260701(デイビッド・ビィ・ウィットおよびマイケル・ディ・ゴダードの「可変バイト長命令フォーマットを有するタイプのプロセッサのための命令キャッシュ」(Pre-Decode Instruction Cache and Method Therefor Particularly Suitable for Variable Byte-Length Instructions))にさらに詳細に記載され、その全体を引用によりここに援用する。BYTEQ106は、1994年10月25日出願の特願平6−260700(デイビッド・ビィ・ウィットの「可変バイト長命令フォーマットを有するタイプのプロセッサのための推論的命令キュー」(Speculative Instruction Queue and Method Therefor Particularly Suitable for Variable Byte-Length Instructions ))にさらに詳細に記載され、その全体を引用によりここに援用する。IDECODE108は、1994年10月26日出願の特願平6−262437(デイビッド・ビィ・ウィットおよびマイケル・ディ・ゴダードの「スーパスカラ命令デコード/発行装置」(Superscalar Instruction Decoder ))にさらに詳細に記載され、その全体を引用によりここに援用する。コア110のための適切なユニットは、1994年10月27日出願の特願平6−263317(デイビッド・ビィ・ウィットおよびウィリアム・エム・ジョンソン(William M. Johnson)の「スーパースカラマイクロプロセッサ」(High Performance Superscalar Microprocessor ))に開示され、その全体を引用によりここに援用する。他の適切なスーパスカラRISCコアおよび適切なRISC命令セットもこの技術分野においてよく知られている。DCACHE150およびLSSEC134は、1994年10月24日出願の特願平6−257826(デイビッド・ビィ・ウィットの「プロセッサ、キャッシュ、およびエイリアシングが発生するのを防ぐための方法」(Linearly Addressed Microprocessor Cache ))にさらに記載され、その全体を引用によりここに援用する。物理タグ記憶装置162およびLSSEC134は、1994年10月25日出願の特願平6−260699(ウィリアム・エム・ジョンソン、デイビッド・ビィ・ウィットおよびミュラリ・チナコンダ(Murali Chinnakonda)の「マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置」(High Performance Load/Store Functional Unit and Data Cache))にさらに記載され、その全体を引用によりここに援用する。
【0023】
ICACHE104におけるx86命令の処理の結果として生じるプリデコードされたx86命令の一般的な表現は、図2に示される。プリデコードされたx86命令は6つまでの命令「要素」を有し得る。未処理のx86命令において1つまたはそれ以上のプレフィックスが存在すれば、プリデコードされたx86命令は1つまたはそれ以上のプレフィックス要素を含む。最後のプレフィックス要素は、IDECODE108のための完全プレフィックス情報を含む統合プレフィックス要素であり、一方その他のプレフィックス要素は、部分的な情報を含む再コード化されたプレフィックス要素であり、IDECODE108によって使用されない。図2は、再コード化されたプレフィックス要素202および統合プレフィックス要素204を示す。x86命令opコードバイトを含むOPCODE要素210がプレフィックス要素202および204に続く。未処理のx86命令が特殊なメモリアドレスを実行する場合には、プリデコードされたx86命令はmod r/m要素、たとえばmod r/m要素212を含む。未処理のx86命令があるアドレスモードを必要とすれば、プリデコードされたx86命令はsib要素、たとえばsib要素214を含む。未処理のx86命令がアドレス計算に関する変位情報を必要とするか、または即値データを含む場合には、プリデコードされたx86命令は変位/即値データ要素、たとえば変位/即値データ要素216を含む。
【0024】
プリデコード情報は、コードv、s、e、rop、およびopにより識別されるさまざまなビットにより伝えられる。ビット「v」は、特定の要素が有効命令の一部分であるかどうかを示す有効ビットであり、ビット「s」は、プリデコードされたx86命令の最初の要素を識別する開始ビットであり、ビット「rop」は、x86命令に必要とされるROPの数を示し、ビット「op」は、x86命令opコード要素を識別し、ビット「e」は、プリデコードされたx86命令の最後の要素を識別する終了ビットである。
【0025】
図2は、アサートされたプリデコード情報ビットを示す。図2の、示されるプリデコードされたx86命令におけるすべての要素は、アサートされた「v」ビットにより示されるように、有効である。図2のプリデコードされたx86命令の最初の要素である再コード化されたプレフィックス202は、アサートされた「s」ビットによって識別される。再コード化動作が有効なrop情報をもたらさないかもしれないので、ビット「rop」は、再コード化されたプレフィックス要素202にアサートされて示されてはいない。しかしながら、ropビットが最後の再コード化動作において有効であると、プリデコードされたx86命令の統合プレフィックス204および後続の要素すべてが使用可能なropビットを含む。ビット「op」は、x86命令opコード要素210を識別する。変位−即値要素216は、アサートされた「e」ビットによって、プリデコードされたx86命令の最後の要素としてマークされる。
【0026】
BYTEQ106は、図3の代表的なバイトキュー要素「x」に示されるような、いくつかのアレイで維持される。アレイBTYEQは、再コード化されたプレフィックス情報、統合プレフィックス情報、opコード情報、mod r/m情報、sib情報、または変位もしくは即値データ情報を含めて、未処理のx86命令のバイトから選択されるかまたはそれらから導出されるバイトを含む。したがって、図3の代表的なバイトキュー要素「x」は、ビットBYTEQx[7:0]を含む。アレイBYTEQVは有効ビットを含む。したがって、図3の代表的なバイトキュー要素「x」は、x番目の要素が有効であるかどうかを示すビットBYTEQV[x]を含む。バイト誤予測情報は、BYTEQNS[x]、BYTEQCLM0[x]およびBYTEQCLM1[x]を含む。
【0027】
プリデコード情報ビットs、e、opおよびropは、sビットアレイBYTEQS、eビットアレイBYTEQE、opビットアレイBYTEQP2、ならびにrop情報の2ビットのためのropビットアレイBYTEQP1およびBYTEQP0に含まれ、その各エントリはBYTEQ106における位置に対応する。図3において、x番目の要素についてのプリデコード情報は、論理1であるとき、付随する未処理のバイトがopコードバイトであることを示すBYTEQP2[x]と、x86命令を実行するのに必要なROPの数を示すBYTEQP1[x]およびBYTEQP0[x]と、付随する未処理のバイトがx86命令の最初のバイトであるかどうかを示すBYTEQS[x]と、付随する未処理のバイトがx86命令の最後のバイトであるかどうかを示すBYTEQE[x]とを含む。
【0028】
図4に、より詳細に示されるIDECODE108は、2段のパイプラインデコーダであり、BYTEQ106からプリデコードされたx86命令バイトを受け、それらをROPのそれぞれのシーケンスに変換し、複数の発行位置からROPを迅速に発行する。複数命令投入の機会を最大にするために、ほとんどの単純な命令に関しては変換はハードワイヤの高速変換経路で扱われ、これは図4の実施例において3つ以下のROPにマッピングするx86命令に適用される。3を越えるROPを必要とする命令および頻繁には用いられない命令は、マイクロコードROMに含まれるマイクロコードシーケンスによって扱われる。x86命令が複数ROP命令にマッピングされても、マイクロコードROMにマッピングされても、プリデコードされたx86命令情報は複数の発行位置で複写され、各発行位置が独立して、および他の発行位置と並列に作用することを可能にする。
【0029】
IDECODE108において、ROPマルチプレクサROPMUX400は、BYTEQ106のエントリを4つの発行位置410、420、430および440に送る。各発行位置において、高速コンバータ(たとえばFASTCONV0 412、FASTCONV1 422、FASTCONV2 432、またはFASTCONV3 442)は、「単純な」x86命令(すなわち3つ以下のROPへのマッピングをする命令)の、x86命令のマッピング先のシーケンスのROPの1つへの高速変換を行なう。各発行位置はまた、マイクロコードROM(たとえばMROM0 416、MROM1 426、MROM2 436、またはMROM3 446)を有し、マイクロコードROMを用いて、滅多に用いられないx86命令および3を越えるROPのROPシーケンスを必要とするx86命令を、x86命令がマッピングするシーケンスのROPの1つに変換する。共通ステージICOMMON0 414、ICOMMON1 424、ICOMMON2 434、およびICOMMON3 444は、命令が高速経路命令であるかまたはマイクロコードROM命令であるかにかかわらず特定の態様で効果的に扱うことができる、x86命令変換動作の一部を処理しかつパイプライン化する。ROPSELECT0 418、ROPSELECT1 428、ROPSELECT2 438、およびROPSELECT3 448の各々は、その関連する高速コンバータおよび共通経路の出力、またはその関連するメモリROMおよび共通経路の出力のいずれかを選択し、発行情報を発生する。ROPSHARED490は、ROPSELECT0 418、ROPSELECT1 428、ROPSELECT2 438、およびROPSELECT3
448からの情報に応答して、すべての発行位置によって共有されている資源に関する発行情報を発生する。IDECODE108はIDECCNTL460によって制御される。
【0030】
ROPMUX400は、BYTEQ106における完全なプリデコードx86命令をIDECODE108内の発行位置410、420、430および440の1つまたはそれ以上に割当てる機能を果たす。1つまたはそれ以上のプリデコードされたx86命令は、BYTEQ106の先頭にあるx86命令から始まって、BYTEQ106から、発行位置410、420、430および440の利用可能なものに同時に送られる。たとえば、すべての発行位置が利用可能であると仮定して、BYTEQ106における最初の4つのプリデコードされたx86命令の各々が1つのROPにマッピングするのであれば、BYTEQ106の先頭にある第1のプリデコードされたx86命令は発行位置0にマルチプレクスされ、第2のプリデコードされたx86命令は発行位置1にマルチプレクスされ、第3のプリデコードされたx86命令は発行位置2にマルチプレクスされ、第4のプリデコードされたx86命令は発行位置3にマルチプレクスされる。その代わりに、BYTEQ106の第2のプリデコードされたx86命令が2つのROPにマッピングするのであれば、第1のプリデコードされたx86命令は発行位置0にマルチプレクスされ、第2のプリデコードされたx86命令は発行位置1および2にマルチプレクスされ、第3のプリデコードされたx86命令は発行位置3にマルチプレクスされる。
【0031】
マイクロコードROMにマッピングせず、発行ウィンドウに完全に収まらないプリデコードされたx86命令は、第1の発行ウィンドウにおいて利用可能であるできるだけ多くの発行位置410、420、430、および440に割当てられる。IDECCNTL460は信号PARTIALDISP[1:0]を用いて、次のサイクルのキューの先頭にあるプリデコードされたx86命令のために発行されるべき次のROPの数を示し、既に発行されたROPには発行位置が割当てられないようにする。
【0032】
PARTIALDISP[1:0]は、IDECCNTL460において信号ROPxDIFF[1:0]から得られ、発行位置「x」(x=0、1、2、3)の各々に関して発行されないで残っている次のROPの番号を示す。シーケンスの第1のROPは0番と考えられ、第2は1番と考えられ、以下同様である。具体的に言えば、PARTIALDISP[1:0]は、現在の発行ウィンドウから発行されると予測されたROPの数に基づいて選択されるROPxDIFF信号の1つから次のサイクルの間ラッチされる。たとえば、キューの先頭にある命令および次の命令の両方が3つのROPにマッピングすれば、ROP0DIFFおよびROP1DIFFはキューの先頭にある命令に対応し、一方ROP2DIFFおよびROP3DIFFは次の命令に対応する。ROP0DIFFは1であり、ROP1DIFFは2であり、ROP2DIFFは0であり、ROP3DIFFは1である。IDECCNTL460が発行ウィンドウ内の4つのROPすべてが発行されるべきであると判断すると仮定すれば、ROP3DIFFがPARTIALDISPとして選択され、ラッチされる。PARTIALDISPの値は、次の発行ウィンドウではしたがって1である。
【0033】
ROPMUX400の動作は、BYTEQ106に関して行なわれるスキャン機能のフローチャートである図5ないし図7に示される。BYTEQ106がシフト動作の後で有効になると、ROPMUX400はBYTEQ106を迅速に「スキャン」して、完全なプリデコードx86命令およびこれらがマッピングするROPの数を識別し、これについてのある情報を得る。高速スキャンは、変換処理に対しより多くの時間を与え、プロセッサ100において迅速に完了する必要がある。不必要な遅延を避けるために、スキャンは、好ましくは図14ないし図57に示される回路および同様の他のものを用いて本質的に同時に行なわれるが、他の論理回路も図8ないし図13のアーキテクチャに示される機能を行なうように用いられ得る。図5ないし図7のフローチャートは行なわれるさまざまなスキャン動作を示し、これらのさまざまな動作の逐次的順序を示すものとして解釈されるべきではない。
【0034】
動作502において、バイトキュースキャン機能は、BYTEQ106の先頭から始まり、全体で4つのROPにマッピングするすべての有効かつ完全な命令を識別する。4つのROPが検出される前にキューの最後に出会えば、バイトキュースキャン機能はBYTEQ106のすべての有効かつ完全な命令を識別する。命令は、アレイBYTEQSにおけるそのそれぞれの開始ビットならびにアレイBYTEQVにおける有効ビットを検出することによって識別される。完全な命令は、命令の開始ビットがアレイBYTEQEに対抗の終了ビットを有すると判定することによって識別される。
【0035】
動作502において、ROPMUX400はまた、発行位置「x」に関してそれが発行されるべき現在のROPのメンバーであるROPシーケンスにおける番号ならびにそれが発行されるべき次のROPのメンバーであるROPシーケンスにおける番号をそれぞれ示す制御信号ROPxNUM[1:0]およびROPxDIFF[1:0]を発生する。たとえば、キューの先頭にある命令および次の命令の両方が3つのROPにマッピングすると、ROP0NUMは0であり、ROP1NUMは1であり、ROP2NUMは2であり、ROP3NUMは0であり、一方ROP0DISPは1であり、ROP1DISPは2であり、ROP2DISPは0であり、ROP3DISPは1である。
【0036】
ROPMUX400はまた、発行位置「x」のROPが、対応するx86命令からマッピングされるROPシーケンスの最後のROPであるかどうかを示す制御信号PGNXT[x]を発生する。ROPxDIFFが、次の発行位置が新しいx86命令からマッピングされる最初のROPを発行すべきであることを示す00であると、PGNXT[x]は0であり、それ以外ではPGNXT[x]は1である。PGNXT[x]は、そのような情報を必要とする他のバイトキュースキャン論理回路、たとえば図58に示されるバイトキューSEスキャン論理5210に供給される。
【0037】
動作504において、動作502において識別された命令の各々におけるopコードの位置は、アレイISEL0、ISEL1、ISEL2およびISEL3において識別され、かつ報告される。
【0038】
動作506において、BYTEQ106の先頭にあるプリデコードされたx86命令が、BYTEQP1[x]、BYTEQP0[x]が11であるときに示されるマイクロコードROMマッピング命令であるかどうかの判断が行なわれる。この判断はROPMUX400において行なわれ、信号ROPMROMとして報告される。BYTEQ106の先頭にあるプリデコードされたx86命令がマイクロコードROMマッピング命令であれば、図6の動作が行なわれる。BYTEQ106の先頭にあるプリデコードされたx86命令がマイクロコードROMマッピング命令でなければ、図7の動作が行なわれる。
【0039】
BYTEQ106の先頭にあるプリデコードされたx86命令がマイクロコードROMマッピング命令でなければ、発行位置410、420、430および440が、動作532(図7)で、各プリデコードされたx86命令がマッピングするROPの数および利用可能である発行位置の数に依存して、プリデコードされたx86命令に割当てられる。この態様で割当てられた発行位置に関するROPxNUMはそのそれぞれの値を割当てられ、制御信号ROPMROMはアサートされず、各発行位置についてのMUXVAL[x]はアサートされる。
【0040】
たとえば、キューの先頭にある命令I1に関するopコードがBYTEQ106の位置0にあると仮定する。命令I1に関するBYTEQP1[0]およびBYTEQP0[0]の値は、命令I1が3つのROPにマッピングすることを示す10である。最初の3つの発行位置0、1および2が利用可能であり、命令I1に割当てられる。次の命令I2に関するopコードがBYTEQ106の位置5にあるとさらに仮定する。BYTEQP1[5]およびBYTEQP0[5]の値もまた、命令I2が3つのROPにマッピングすることを示す10である。発行位置は1つしか利用可能でないので、これは命令I2に割当てられる。発行位置資源は、現在のデコードステージでは命令I2に対して完全に割当てるには利用可能でないことに注目されたい。必要とされる残りの2つの発行位置は次のサイクルで命令I2に割当てられ、これは命令I2がBYTEQ106の先頭に、発行されるべき次のROPの番号を示す1にセットされる制御信号PARTIALDISPに従ってシフトされた後に行なわれる。現在の発行ウィンドウでは未使用でありBYTEQ106の先頭にない何らかのx86命令がマイクロコードROMにマッピングする場合には、発行位置がまだ割当てられる。しかしながら、このような態様で割当てられた発行位置に関するROPxNUMは「ドントケア」である、というのは制御信号ROPMROMがアサートされず、マイクロコードROMにマッピングされるがキューの先頭にはないx86命令に割当てられる発行位置から発行されるROPは有効とマークされないからである(発行位置xに関するMUXVAL[x]はアサートされない)。無効ROPはプロセッサ100の後続のパイプラインステージで処理されない。
【0041】
動作534において、各発行位置はBYTEQ106にストアされたプリデコードx86命令からの4つの要素を受ける。4つの要素とは、バイトキュー位置Y−1にある統合プレフィックスデータ要素、バイトキュー位置Yにあるopコード要素、バイトキュー位置Y+1にあるmod r/m要素、および位置Y+2にあるsib要素であり、ここでYは命令のopコード要素のBYTEQ106における位置である。
【0042】
動作536において、キューの次の先頭は、発行される1、2、3および4のROPに関して定められる。この情報は、ICACHE104に供給され、BYTEQ106をシフトするのに用いられる。
【0043】
BYTEQ106の先頭にあるx86命令がマイクロコードROMマッピング命令であれば、4つの発行位置のすべてがマイクロコードROMマッピング命令に割当てられる。マイクロコードROMマッピング命令に関しては、BYTEQP1およびBYTEQP0の値は11であり、命令がマイクロコードROMマッピングであることを示す。4つの発行位置資源の割当が、x86命令がマッピングするROPシーケンスの発行を完了させるのに十分でない場合には、4つの発行位置資源が、再び次のサイクルでマイクロコードマッピング命令に割当てられる。この態様で割当てられた発行位置に関するROPxNUMは使用されていないので「ドントケア」であり、発行位置は有効とマークされ(MUXVAL[3:0]ビットはアサートされる)、制御信号ROPMROMは、マイクロコードマッピングx86命令がキューの先頭にあるのでアサートされる。
【0044】
動作522において、IDECCNTL460はマイクロコードROMエントリポイントを形成し、MROM0 416、MROM1 426、MROM2436、およびMROM3 446に含まれるROPシーケンスにアクセスする。
【0045】
動作524において、BYTEQ106の先頭にあるマイクロコードマッピングx86命令からの統合プレフィックスデータ要素、opコード要素、modr/m要素、およびsib要素は、信号ROPxPRE、ROPxOP、ROPxMODRM、およびROPxSIB要素としてICOMMONxによって使用されるためにすべての発行位置に供給される。統合プレフィックスデータ要素はバイトキュー位置Y−1にあり、opコード要素はバイトキュー位置Yにあり、mod r/m要素はバイトキュー位置Y+1にあり、sib要素は位置Y+2にあり、ここでYはキューの先頭にある命令のopコード要素のBYTEQ106における位置である。命令の開始および終了ビットから定められるとき、プリデコードされたx86命令に要素がなければ、不在の要素に対応する発行位置で受けられる情報は「ドントケア」情報として扱われる。
【0046】
動作526において、キューの次の先頭が、発行される1、2、3および4のROPに関して定められる。この情報は、マイクロコードマッピングx86命令がすべて発行される場合にBYTEQ106のシフトのために用いられる。
【0047】
opコードならびにrop数アレイBYTEQP2、BYTEQP1およびBYTEQP0を処理するためのROPMUX400において用いられるのに適している高速バイトキュースキャン論理アーキテクチャ690が図8および図9に示される。スキャン論理アーキテクチャ690は、それぞれ発行位置0、1、2および3に対応する4つのステージ600、610、620および630を含むが、より小さい数またはより大きい数のステージが所望されるように用いられてもよい。スキャン論理アーキテクチャ690への入力の1つは、アレイBYTEQP2[15:0]の出力であり、これは、BYTEQ106のopコードバイトの位置を示す16ビットバスである。スキャン論理アーキテクチャ690のステージ600、610、620および630からの出力は、それぞれISEL0、ISEL1、ISEL2およびISEL3を含む。出力ビットISEL0[15:0]は、第1の発行位置に関するopコードバイトの位置を示す16ビット出力バスを構成する。ビットISEL1[15:0]は、第2の発行位置に関するopコードバイトの位置を示す16ビット出力バスを構成する。ビットISEL2[15:0]は、第3の発行位置に関するopコードバイトの位置を示す16ビット出力バスを構成する。ビットISEL3[15:0]は、第4のopコード位置に関するopコードバイトの位置を示す16ビット出力バスを構成する。これらの出力は、ROPMUX400の16:1マルチプレクサ(図示せず)のような切換論理に与えられ、BYTEQ106から、それぞれの処理経路FASTCONV0 412およびICOMMON0 414、FASTCONV1422およびICOMMON1 424、FASTCONV2 432およびICOMMON2 434、ならびにFASTCONV3 442およびICOMMON3 444に命令opコードを送る。
【0048】
次の例は、入力バスBYTEQP2[15:0]のビットと、出力バスISEL0[15:0]、ISEL1[15:0]、ISEL2[15:0]およびISEL3[15:0]のビットとの関係を示す。たとえば、信号BYTEQP2[15:0]が、第1の命令の第1のopコードバイトがバイトキュー位置0にあり、第2の命令の第1のopコードバイトがバイトキュー位置3にあり、第3の命令の第1のopコードバイトがバイトキュー位置10にあり、第4の命令の第1のopコードバイトがバイトキュー位置13にあることを示す2進1010−0100−0000−1001であると仮定する。第1の例に関しては、キューの先頭にある命令およびすぐ後に続く命令の両方が3つのROPにマッピングすると仮定する。この場合、スキャン論理1700の出力ISEL0[15:0]、ISEL1[15:0]、ISEL2[15:0]およびISEL3[15:0]は以下の表1に示される。
【0049】
【表1】
【0050】
同じopコードが最初の3つの発行位置に送られるので、ISEL0、ISEL1およびISEL2が同じであることに注目されたい。第2の例については、比較の目的のために、BYTEQ106の最初の4つの命令が各々、1つのROPにマッピングすると仮定する。この場合、スキャン論理1700の出力ISEL0[15:0]、ISEL1[15:0]、ISEL2[15:0]およびISEL3[15:0]は、以下の表2に示される。
【0051】
【表2】
【0052】
異なるopコードが4つの発行位置に送られるので、ISEL0、ISEL1、ISEL2およびISEL3が異なっていることに注目されたい。
【0053】
利点として、スキャン論理アーキテクチャ690は、高速スキャンを達成するようにルックアヘッド論理を用いる。4つのステージ600、610、620および630の各々は、ルックアヘッドを容易にするようにビット処理論理の4つのグループを含むが、より小さい数またはより大きい数のグループが必要に応じて用いられてもよい。たとえば、発行位置0に関するステージ600は、第1のグループGP(0、0)と、グループGP(1、0)、GP(2、0)およびGP(3、0)に接続されるルックアヘッド信号発生論理LAG(0)と、部分的発行信号発生論理PDG(0)と、第1のopコード識別信号発生論理FOG(0)とを含み、発行位置1に関するステージ610は、第1のグループGP(0、1)と、グループGP(1、1)、GP(2、1)およびGP(3、1)に接続されるルックアヘッド信号発生論理LAG(1)と、第1のopコード識別信号発生論理FOG(1)とを含み、発行位置2に関するステージ620は、第1のグループGP(0、2)と、グループGP(1、2)、GP(2、2)およびGP(3、2)に接続されるルックアヘッド信号発生論理LAG(2)と、第1のopコード識別信号発生論理FOG(2)とを含み、発行位置3に関するステージ630は、第1のグループGP(0、3)と、グループGP(1、3)、GP(2、3)およびGP(3、3)に接続されるルックアヘッド信号発生論理LAG(3)と、第1のopコード識別信号発生論理FOG(3)とを含む。
【0054】
各グループの出力は、3つの異なる行先に供給される。たとえば、グループGP(0、0)の出力を考える。第1の組の出力602は、次の発行位置に割当てられるべきROPのROP数に関し、ROP数信号発生論理RNG(0)に供給され、たとえば図11のXDSP0[x]およびXDSP0[x+16]に示される。RNG(0)は、第1のステージ600のすべてのグループGP(0、0)、GP(0、1)、GP(0、2)およびGP(0、3)から入力を受け、ROP数信号ROP0DIFF[1:0]、ROP1NUM[1:0]およびPGNXT[0]を発生する。第2の組の出力604は、まだ完全に発行位置に割当てられていない命令のためのopコード位置の識別に関し、第2のステージ610のFOG(1)およびLAG(1)に供給され、たとえば図11のXN1[x]に示される。FOG(1)およびLAG(1)は、第1のステージ600のすべてのグループGP(0、0)、GP(0、1)、GP(0、2)およびGP(0、3)から入力を受け、それぞれ第2のステージ610のグループに対する第1のopコード識別信号およびルックアヘッド信号を発生する。第3の組の出力606は、発行位置を最も新しく割当てられたROPの番号、および関連するx86命令がマッピングするROPの数に関し、第2のステージ610のグループGP(0、1)に供給され、たとえばD1N1[x]、D0N1[x]、NBQP1[x]、NBQP0[x]である(信号XN1[x]がこの第3の組の一部でもあることに注目されたい)。
【0055】
ステージ600、610、620および630の間で、発行位置を最も新しく割当てられたROPの番号、および関連するx86命令がマッピングするROPの数に関する信号は、以下の表3に示されるように伝搬し、処理され、たとえば、キューの先頭にある命令およびすぐに後に続く命令の両方が3つのROPにマッピングし、すべての後続のROPが1つのROPにマッピングし、最初にキューの先頭にある命令がマッピングするROPシーケンスは、部分的に発行されていない。
【0056】
【表3】
【0057】
第1の発行ウィンドウにおいて、PARTIALDISP[1:0]は00である。第1のステージにおいて、第1のバイトキュー位置0がopコードを含むので、「ROPの数」データは、ROPの数アレイの位置0からとられ、PARTIALDISP[1:0]から導出されるROP数と比較される。一致しなければ、ROP数は、1だけインクリメントされ、変更されない「opコード位置」アレイとともに第2のステージに供給される。第2のステージにおいて、「ROPの数」データは、ROPの数アレイの位置0からとられ、第1のステージにより供給されるROP数と比較される。一致しなければ、ROP数は、1だけインクリメントされ、変更されない「opコード位置」アレイとともに第3のステージに供給される。第3のステージにおいて、「ROPの数」データは、ROPの数アレイの位置0からとられ、第2のステージにより供給されるROP数と比較される。一致すれば、ROP数は、00にリセットされ、第4のステージに供給される。「opコード位置」アレイは、発行位置が完全に割当てられていないopコードを識別するビットをマスクすることにより変更され、第4のステージに供給される。第4のステージにおいて、「ROPの数」データは、ROPの数アレイの位置3からとられ、第3のステージにより供給されるROP数と比較される。一致がなければ、PARTIALDISP[1:0]は、01にセットされ、キューの次の先頭であるべき命令からマッピングされる3つのROPのうちの1つが発行されていることを示す。
【0058】
次の発行ウィンドウの準備をするために、第2の命令はキューの先頭にシフトされる。PARTIALDISP[1:0]は現在01である。第1のステージにおいて、第1のバイトキュー位置0がまた、偶然opコードを含むので、「ROPの数」データは、ROPの数アレイの位置0からとられ、PARTIALDISP[1:0]から導出されるROP数と比較される。一致がなければ、ROP数は、1だけインクリメントされ、変更されない「opコード位置」アレイとともに第2のステージに供給される。第2のステージにおいて、「ROPの数」データは、ROPの数アレイの位置0からとられ、第1のステージにより供給されるROP数と比較される。一致すれば、ROP数は、00にリセットされ、第3のステージに供給される。「opコード位置」アレイは、発行位置が完全に割当てられていないopコードを識別するビットをマスクすることにより変更され、第3のステージに供給される。第3のステージにおいて、「ROPの数」データは、ROPの数アレイの位置7からとられ、第2のステージにより供給されるROP数と比較される。一致すれば、ROP数は、00にリセットされ、第4のステージに供給される。「opコード位置」アレイは、発行位置が完全に割当てられていないopコードを識別するビットをマスクすることにより変更され、第4のステージに供給される。第4のステージにおいて、「ROPの数」データは、ROPの数アレイの位置10からとられ、第3のステージにより供給されるROP数と比較される。一致すれば、PARTIALDISP[1:0]は、00にセットされ、キューの次の先頭であるべき命令からマッピングされるROPのどれも発行されていないことを示す。
【0059】
図10−図13は、他の発行位置の対応する要素の典型例であるが同一ではない、スキャン論理アーキテクチャ690のいくつかの要素をより詳細に示す。図10ないし図13に示される要素のいくつかが、はっきりとさせるために図8および図9から省かれていることに注目されたい。たとえば、図10は、FOG(1)、FOG(2)およびFOG(3)に対応するFOG(0)と、LAG(1)とLAG(2)およびLAG(3)に対応するLAG(0)とを示し、図10はまたPDG(0)も示す。図11は、グループGP(0、1)、GP(0、2)およびGP(0、3)の同様のビット処理論理回路に対応する4つのビット処理論理回路F7(0、0)、F7(1、0)、F7(2、0)およびF7(3、0)を示すGP(0、0)の詳細である。図11はまた、ROP数信号発生回路F8(0、0)、F9(0、0)およびF10(0、0)も示す。図12は、グループGP(1、1)、GP(1、2)、GP(1、3)、GP(2、0)、GP(2、1)、GP(2、2)、GP(2、3)、GP(3、0)、GP(3、1)、GP(3、2)およびGP(3、3)の同様のビット処理論理回路に対応する4つのビット処理論理回路F11(4、0)、F11(5、0)、F11(6、0)およびF11(7、0)を示すGP(1、0)の詳細である。図12はまた、ROP情報発生回路F12(1、0)およびF13(1、0)も示す。図13は、グループGP(1、1)の4つのビット処理論理回路F14(4、1)、F14(5、1)、F14(6、1)およびF14(7、1)を示す。図13はまた、ROP情報発生回路F15(1、1)およびF16(1、1)も示す。図10ないし図13のアーキテクチャにおいて、スキャン機能は、多くのサブ回路を4ビットのグループへグループ化し、ルックアヘッドサブ回路がその発行位置に関して、より上位のグループへの入力を与えることにより、各発行位置に関して、高速化される。
【0060】
発行位置0に関するスキャン論理アーキテクチャ690の動作は、図10、図11、図12および図13に示される実施例に対しては以下のとおりである。図10を参照する。PDG(0)は、キューの先頭にあるプリデコードされたx86命令のために発行されるべき次のROPの番号を示す2進量PDISP1、PDISP0を発生する要素F1およびF2を含む。図14および図15に示される要素F1およびF2の実施例において、量PDISP1、PDISP0は、インバータを介してPARTIALDISP[1:0]から直接に得られる。量PDISP1、PDISP0は、第1のステージの4つのグループGP(0、0)、GP(1、0)、GP(2、0)およびGP(3、0)の各々に供給される。BYTEQP2アレイからの4ビットのグループの各々に関しては、FOG(0)は、グループの最初にアサートされたビットを識別する。FOG(0)は、要素F3およびF4を含み、その実施例は、それぞれ図16ならびに図17および図18に示される。それぞれの識別指示は、ステージ0の4つのグループGP(0、0)、GP(1、0)、GP(2、0)およびGP(3、0)の各々に供給される。BYTEQP2アレイからの第1のグループ以外の4ビットのグループの各々に関しては、LAG(0)は、最初にアサートされたビットが、該グループより先行しているグループのいずれかに現われるかどうかを指示する。LAG(0)は、要素F5およびF6を含み、その実施例は、それぞれ図19および図20に示される。要素F6は、ROPMUX400の別の回路、たとえばバイトキューSEスキャン論理5210(図58)などから信号ASKMROM[0]を受ける。ASKMROM[0]は、メモリROM命令がキューの先頭にあることを示す。最初にアサートされたビットがグループより先行しているグループのいずれかに現われるかどうかのそれぞれの指示は、ステージ0の3つのグループGP(1、0)、GP(2、0)およびGP(3、0)の各々に供給される。
【0061】
図11は、グループGP(0、0)のためのビット処理論理回路F7(0、0)、F7(1、0)、F7(2、0)およびF7(3、0)を示す。要素F7は、出力ISEL0[x]に加えて、出力XN1[x]を有し、信号BYTEQP2[x]は、反転状態で要素F7を通過されるか、またはマスクされる。要素F7はまた、そのXSEL0[x]入力が、アサートされて、BYTEQP2[x]が該ビットグループの最初にアサートされたビットであることを示すのでなければ、量D1N1、D0N1に対して00などのデフォルト値を与える。この場合、2つの条件のうち1つが起こり得る。すなわち(a)発行位置を割当てられているROPがシーケンスの最後のROPでないか、または(b)発行位置を割当てられているROPがシーケンスの最後のROPである。「(a)」の場合、要素F7は、そのISEL0[x]出力をアサートし、量PDISP1[x]、PDISP0[x]を1だけインクリメントし、その結果を次のステージに量D1N1、D0N1として供給し、ビットBYTEQP2[x]を反転状態で通過させる。「(b)」の場合、要素F7は、そのISEL0[x]出力をアサートし、量PDISP1[x]、PDISP0[x]を0にリセットし、その結果を次のステージに量D1N1、D0N1として供給し、ビットBYTEQP2[x]を出力XN1[x]でマスクする。
【0062】
信号D1N1およびD0N1は、反転され、信号XDSP0[x]およびXDSP0[x+16]として、それぞれ要素F8およびF9に供給される。要素F8およびF9は組合わされて、信号P1FF0[0]およびP0FF0[0]を発生し、これらは、アレイBYTEQP2の最初にアサートされたビットがグループGP(0、0)に発生せず、かつ発行位置のROPがROPシーケンスの最後のROPでない場合には、1だけインクリメントされる値PARTIALDISP[1:0]を事実上表わす。それ以外では、信号P1FF0[0]およびP0FF0[0]は、デフォルト値を有する。
【0063】
ステージ0のすべてのグループからの信号P1FF0およびP0FF0は、要素F10において組合わされる。これらの信号はすべて、アレイBYTEQP2の最初にアサートされたビットがステージ0に発生する場合を除いて、デフォルト値を有する。この場合、1対の信号P1FF0およびP0FF0は、変更された値PARTIALDISP[1、0]を表わし、この値は、量ROP0DIFF[1:0]およびROP1NUM[1:0]、ならびに信号PGNXT[0]を導出するように用いられる。
【0064】
図12は、グループGP(1、0)のためのビット処理論理回路F11(4、0)、F11(5、0)、F11(6、0)およびF11(7、0)を示す。要素F11は、要素F7のXSEL0[x]入力に対応する、その入力SEL0[x]の影響を除いて、要素F7と同様である。SEL0[x]が、アサートされて、BYTEQP2[x]が、ビットグループの最初にアサートされたビットであることを示す。しかしながら、P0[x]がアサートされて、アレイBYTEQP2の最初にアサートされたビットが、ステージ0の先行しているビットグループに存在しないことを示すのでなければ、入力P0[x]は、SEL0[x]を阻止する。
【0065】
信号D1N1およびD0N1は、反転され、信号XDSP0[x]およびXDSP0[x+16]としてそれぞれ要素F12およびF13に供給される。組合わされて、要素F12およびF13は、信号P1FF0[1]およびP0FF0[1]を発生し、これらは、アレイBYTEQP2の最初にアサートされたビットがグループGP(1、0)に発生し、かつ発行位置のROPがROPシーケンスの最後のROPでない場合には、1だけインクリメントされた値PARTIALDISP[1、0]を事実上表わす。そうでなければ、信号P1FF0[1]およびP0FF0[1]は、デフォルト値を有する。要素F12およびF13からの信号P1FF0およびP0FF0は、要素F10に送られる。
【0066】
図13は、グループGP(1、1)のためのビット処理論理回路F14(4、1)、F14(5、1)、F14(6、1)およびF14(7、1)を示す。要素F14は、本質的には要素F11と同じであるが、入力および出力信号名が異なっている。
【0067】
信号D1N2およびD0N2は、反転され、信号XDSP1[x]およびXDSP1[x+16]としてそれぞれ要素F15およびF16に供給される。要素F15およびF16は要素F12およびF13と本質的には同じであるが、入力および出力信号名が異なっている。
【0068】
スキャン論理アーキテクチャ690の要素の実施例が図14−図57に示される。図14−図57のゲートのいくつかは、高速トランジスタに接続されるべき入力を示すドットによりマークをつけられた1つの入力を有する。図14−図57のゲートの他のものは、パスゲートが論理機能を実現するように用いられることを示す「CK」によりマークをつけられた1つの入力を有する。第1の発行位置に関するステージ0は、図14−図27に示され、ここでPDGが図14(F1)および図15(F2)に示され、FOG(0)が図16(F3)、図17(F4A)および図18(F4B)に示され、LAG(0)が図19(F5)および図20(F6)に示され、グループGP(0、0)が図21(F7)、図22(F8)および図23(F9)に示され、グループGP(1、0)、GP(2、0)およびGP(3、0)が図25(F11)、図26(F12)および図27(F13)に示され、ステージ0のROP数信号発生論理RNG(0)が図24(F10)に示される。第2の発行位置に関するステージ1は、図28−図37に示され、ここでFOG(1)が図28および図29に示され、LAG(1)が図30に示され、グループGP(0、1)が図31、図32および図33に示され、グループGP(1、1)、GP(2、1)およびGP(3、1)が図35、図36、および図37に示され、ステージ1のROP数信号発生論理RNG(1)が図34に示される。第3の発行位置に関するステージ2は、図38−図47に示され、ここでFOG(2)が図38および図39に示され、LAG(2)が図40に示され、グループGP(0、2)が図41、図42および図43に示され、グループGP(1、2)、GP(2、2)およびGP(3、2)が図45、図46および図47に示され、ステージ2のROP数信号発生論理RNG(2)が図44に示される。第4の発行位置に関するステージ3は、図48−図57に示され、ここでFOG(3)が図48および図49に示され、LAG(3)が図50に示され、グループGP(0、3)が図51、図52および図53に示され、グループGP(1、3)、GP(2、3)およびGP(3、3)が図55、図56および図57に示され、ステージ3のROP数信号発生論理RNG(3)が図54に示される。
【0069】
図14−図57のゲートレベル回路の多くは、グループGP(0、0)、GP(1、0)およびGP(1、1)に含まれる他の回路と同様の回路構造を含むか、またはその単純にされた変更例である。したがって、次の回路動作の説明では、グループGP(0、0)、GP(1、0)およびGP(1、1)に含まれる回路に焦点を合わせ、不必要に長い明細書を避ける。図14−図57に示される他の回路の動作は、図面および次の説明から容易に明らかになる。
【0070】
要素F1のための論理回路の実施例は、図14に示される。信号PARTIALDISP[1]は、インバータ802および804によりバッファされ、PDISP1[0]を発生し、インバータ802および806によりバッファされPDISP1[1]を発生し、インバータ802および808によりバッファされPDISP1[2]を発生し、インバータ802および810によりバッファされPDISP1[3]を発生し、インバータ802および812によりバッファされROP0NUM[1]を発生する。
【0071】
要素F2のための論理回路の実施例は、図15に示される。信号PARTIALDISP[0]は、インバータ902および904によりバッファされ、PDISP0[0]を発生し、インバータ902および906によりバッファされPDISP0[1]を発生し、インバータ902および908によりバッファされPDISP0[2]を発生し、インバータ902および910によりバッファされPDISP0[3]を発生し、インバータ902および912によりバッファされROP0NUM[0]を発生する。
【0072】
要素F3のための論理回路の実施例は、図16に示される。アレイBYTEQP2[15:0]は、1組の16のインバータによりビット単位で反転され、アレイXIN[15:0]を発生する。
【0073】
要素F4のための論理回路の実施例は、図17および図18に示される。図17に示されるように、ビットXIN[0]が、2つの直列接続されたインバータを含むゲートグループ1102によりバッファされ、信号XSEL0[0]を発生する。XSEL0[0]は、本質的にはBYTEQP2[0]の反転されたものである。ビットXIN[1:0]が、インバータを介してXIN[1]を受けかつXIN[0]を直接に受けるNANDゲートを含むゲートグループ1104に与えられ、信号XSEL0[1]を発生する。信号XSEL0[1]は、XIN[0]がアサートされなければ(論理1)、本質的にはBYTEQP2[1]の反転されたものであり、それ以外では論理1である。ビットXIN[2:0]が、XIN[2]をインバータを介して受けかつXIN[1:0]を直接に受けるNANDゲートを含むゲートグループ1106に与えられ、信号XSEL0[2]を発生する。信号XSEL0[2]は、XIN[1]およびXIN[0]がアサートされなければ(論理1)、本質的にはBYTEQP2[2]の反転されたものであり、そうでなければ論理1である。ビットXIN[3:0]が、XIN[3]をインバータを介して受けかつXIN[2:0]を直接に受けるNANDゲートを含むゲートグループ1108に与えられ、信号XSEL0[3]を発生する。信号XSEL0[3]は、XIN[2]、XIN[1]およびXIN[0]がアサートされなければ(論理1)、本質的にはBYTEQP2[3]の反転されたものであり、そうでなければ論理1である。
【0074】
図18は、ビットグループXIN[7:4]、XIN[11:8]およびXIN[15:12]のための機能F4を示す。たとえばビットグループXIN[7:4]に適用される機能F4を考える。ビットXIN[4]が、1つのインバータを含むゲートグループ1202によりバッファされ、信号SEL0[4]を発生する。SEL0[4]は本質的にはBYTEQP2[4]である。ビットXIN[5:4]が、XIN[5]をインバータを介して受けかつXIN[4]を直接に受けるNANDゲートを含むゲートグループ1204に与えられ、次にインバータに与えられ、信号SEL0[5]を発生する。信号SEL0[5]は、XIN[4]がアサートされなければ(論理1)、本質的にはBYTEQP2[5]であり、そうでなければ論理0である。ビットXIN[6:4]が、XIN[6]をインバータを介して受けかつXIN[5:4]を直接に受けるNANDゲートを含むゲートグループ1206に与えられ、信号SEL0[6]を発生する。信号XSEL0[6]は、XIN[5]およびXIN[4]がアサートされなければ(論理1)、本質的にはBYTEQP2[6]の反転されたものであり、そうでなければ論理0である。ビットXIN[7:4]が、XIN[7]をインバータを介して受けかつXIN[6:4]を直接に受けるNANDゲートを含むゲートグループ1208に与えられ、信号SEL0[7]を発生する。信号SEL0[7]は、XIN[6]、XIN[5]およびXIN[4]がアサートされなければ(論理1)、本質的にはBYTEQP2[7]の反転されたものであり、そうでなければ論理0である。
【0075】
要素F5のための論理回路の実施例は、図19に示される。ビットBYTEQP2[3:0]が、インバータ1303が後に続くNORゲート1302によりOR処理され、ビットBYTEQP2[7:4]が、インバータ1305が後に続くNORゲート1304によりOR処理され、ビットBYTEQP2[11:8]が、インバータ1307が後に続くNORゲート1306によりOR処理され、ビットBYTEQP2[15:12]が、インバータ1309が後に続くNORゲート1308によりOR処理される。
【0076】
要素F6のための論理回路の実施例は、図20に示される。グループGP(1、0)に関するルックアヘッド信号P0[1]は、ゲートグループ1402で反転された信号BQP2OR[0]である。グループGP(2、0)に関するルックアヘッド信号P0[2]は、ゲートグループ1404でのNOR(BQP2OR[1]、BQP2OR[0])である。グループGP(3、0)に関するルックアヘッド信号P0[3]は、ゲートグループ1406でのNOR(BQP2OR[2]、BQP2OR[1]、BQP2OR[0])である。ルックアヘッド信号P0[4]は、ゲートグループ1408でのINV(NAND(INV(BQP2OR[3])、P0[3]))である。FASTVAL[0]は、ゲートグループ1410の2つのインバータによりバッファされるNOR(ASKMROM[0]、P0[4])である。
【0077】
要素F7およびF11のための論理回路の実施例は、図21および図25にそれぞれ示される。F7のISEL0[I]は、XSEL0[I]からインバータ1506を介して直接に導出され、F11のISEL0[4*J+I]は、SEL0[4*J+I]およびP0[J]からNANDゲート1904およびインバータ1906を介して導出される。BYTEQ106のアサートされたopコードビットの最初の発生の位置は、ISEL0アレイの論理1の位置により示される。F7の信号XSEL0[I]およびF11のNANDゲート1904の出力はまた、ゲートグループ1502および1902、ゲートグループ1512および1912、ならびにゲートグループ1518および1918にそれぞれ与えられる。
【0078】
OR−NANDゲート1502および1902にそれぞれ与えられるように、F7の信号XSEL0[I]およびF11のNANDゲート1904の出力は、BYTEQP1[x]、BYTEQP0[x]がPDISP1[x]、PDISP0[x]と同じであれば、アレイBYTEQP2をマスクするように用いられ、ビット位置xから、アサートされたopコードビットの最初の発生をなくす。発行位置がシーケンスの最後のROPに割当てられるのを識別するこの条件は、ゲートグループ1500および1900により検出される。マスクされたアレイは、次のステージ610にopコード位置アレイXN1として与えられる。
【0079】
ゲートグループ1512および1912にそれぞれ与えられるように、F7の信号XSEL0[I]およびF11のNANDゲート1904の出力が、ゲートグループ1508および1908の出力をイネーブルするように用いられ、これらから信号D0N1が導出され、次のステージに供給される。ゲートグループ1518および1918にそれぞれ与えられるように、F7の信号XSEL0[I]およびF11のNANDゲート1904の出力が、ゲートグループ1516および1916の出力をイネーブルするように用いられ、これらから信号D1N1が導出され、次のステージに供給される。事実上、F7のゲートグループ1508および1516、ならびにF11のゲートグループ1908および1916は、BYTEQP1[x]、BYTEQP0[x]とPDISP1[x]、PDISP0[x]とが同じでなければ、PDISP1[x]、PDISP0[x]を1だけインクリメントする。この場合、D1N1[x]、D0N1[x]が00に強制される。
【0080】
要素F7およびF11は、アレイBYTEQP2を、マスクされるいずれのビットも除いてXN1として送り、アレイBYTEQP1およびBYTEQP0をそれぞれNBQP1およびNBQP0として送る。
【0081】
ステージ0に関するROP数信号ROP0DIFF[1:0]およびPGNXT[0]と、ステージ1に関するROP数信号ROP1NUM[1:0]とは、図22、図23、図24、図26および図27にそれぞれ示される、要素F8、F9、F10、F12およびF13により得られる。要素F8、F9、F12およびF13は、インバータが後に続くNANDゲートを用いる4ビットAND演算である。要素F8はビットXDSP0[3:0]の演算をする。要素F9はビットXDSP0[19:16]の演算をする。要素F12は、要素XDSP0[7:4]、XDSP0[11:8]、およびXDSP0[15:12]の演算をする。要素F13は、要素XDSP0[23:20]、XDSP0[27:24]、およびXDSP0[31:28]の演算をする。要素F8、F9、F12およびF13の出力P1FF0[3:0]およびP0FF0[3:0]は、要素F10に与えられる。P1FF0[3:0]がNANDゲート1802に与えられ、その出力は、インバータ1804および1806によりバッファされ、ビットROP0DIFF[1]を発生し、インバータ1804および1808によりバッファされ、ビットROP1NUM[1]を発生する。P0FF0[3:0]がNANDゲート1814に与えられ、その出力は、インバータ1816および1818によりバッファされ、ビットROP0DIFF[0]を発生し、インバータ1816および1820によりバッファされ、ビットROP1NUM[0]を発生する。NANDゲート1802および1814の出力はまたNORゲート1810に与えられ、その出力は、インバータ1812により反転され、信号PGNXT[0]として供給される。
【0082】
高速バイトキュースキャン論理アーキテクチャ690のアーキテクチャは、他の高速スキャン適用例に適している。たとえば、図58は、開始および終了ビットアレイBYTEQSおよびBYTEQE、ならびにopコードおよびROP数アレイBYTEQP2、BYTEQP1およびBYTEQP0を処理するためにROPMUX400において用いるのに適している高速バイトキュースキャナ5200を示す。バイトキュースキャナ5200において、スキャン論理690は、開始および終了ビットアレイBYTEQSおよびBYTEQEを処理する第2のスキャン論理5210と組合わされて、4つの要素出力アレイESEL0[15:0]、ESEL1[15:0]、ESEL2[15:0]およびESEL3[15:0]を生じ、その各要素は、対応する発行位置を割当てられたROPに関して、ROPがマッピングされるx86命令の終了ビットの位置を識別する。この識別は、BYTEQ106の最初の4つの命令のための終了ビットの位置をそれぞれが識別する4つの要素の動作アレイを最初に発生させることにより行なわれる。誤り検査もまた行なわれ、たとえば、終了ビットが各開始ビット(アレイBYTEQSの最初のビットであると仮定される最初のものを除く)の直前にあるのを確実にするように検査が行なわれる。ここで、上で述べられたように、スキャン論理690からのものであり、かつ発行位置「x」のROPが、対応するx86命令からマッピングされるROPシーケンスの最後のROPであるかどうかを示す信号PGNXT[3:0]が、マルチプレクサ制御信号として用いられ、動作アレイの最初の要素を、キューの先頭にある命令に割当てられた発行位置の数と同じ数の、出力アレイの要素に送り、動作アレイの次の要素を、BYTEQ106の次の命令に割当てられる発行位置の数と同じ数の、出力アレイの利用可能な要素に送り、以下同様である。
【0083】
スキャン論理5210は、第2、第3および第4のステージにおいて図8および図9のアーキテクチャで用いられるものと同様のグループ化およびルックアヘッド技術を用いる。第1のステージは、開始ビットがキューの先頭のビット位置にあると仮定されるので、この態様で処理されなくてもよい。スキャナ5210の第2、第3および第4のステージについては、一般に第1のopコード識別信号発生論理FOGと同様の論理が、アレイBYTEQEからの4ビットの各グループの最初に発生する終了ビットを識別するために用いられる。ルックアヘッド信号発生論理LAGと同様の論理は、ステージの先行するグループのいずれかが最初に発生する終了ビットを含むかどうかを判断するために用いられる。各ステージは、スキャン論理690におけるように、4つのグループを含む。
【0084】
メモリROM命令の存在は、BYTEQP1、BYTEQP0を監視することにより、第1のステージにおいて検出される。メモリROM命令が検出されると、信号ASKMROM[0]がアサートされ、スキャン論理690に与えられる。
【0085】
さまざまな実施例を参照してこの発明を説明したが、これらの実施例が例示的なものであり、かつこの発明の範囲がそれらに限定されないことが理解されるであろう。説明された実施例の変更例、変形例、追加および改善が可能である。ステージの数および各ステージ内のグループの数を変更してもよい。さらに、この発明は、BYTEQ106以外のスキャンキューに用いられてもよい。これらのおよび他の変更例、変形例、追加および改善は、前掲の特許請求の範囲に規定されるこの発明の範囲内である。
【図面の簡単な説明】
【図1】CISC命令セットのスーパスカラ実行を達成するためのプロセッサのアーキテクチャレベルのブロック図である。
【図2】図1のプロセッサのバイトキューでのストアに適しているプリデコードされたx86命令の図的表現を示す図である。
【図3】図2のプリデコードされたx86命令の要素の図的表現を示す図である。
【図4】図1の命令デコーダのアーキテクチャレベルのブロック図である。
【図5】図4のROPマルチプレクサにより実現される方法を示すフローチャートの図である。
【図6】図4のROPマルチプレクサにより実現される方法を示すフローチャートの図である。
【図7】図4のROPマルチプレクサにより実現される方法を示すフローチャートの図である。
【図8】図4のROPマルチプレクサのバイトキューROP選択スキャン論理のアーキテクチャレベルのブロック図の一部分である。
【図9】図4のROPマルチプレクサのバイトキューROP選択スキャン論理のアーキテクチャレベルのブロック図の一部分である。
【図10】図8および図9のバイトキューROP選択スキャン論理のある要素をより詳細に示すブロック図の一部分である。
【図11】図8および図9のバイトキューROP選択スキャン論理のある要素をより詳細に示すブロック図の一部分である。
【図12】図8および図9のバイトキューROP選択スキャン論理のある要素をより詳細に示すブロック図の一部分である。
【図13】図8および図9のバイトキューROP選択スキャン論理のある要素をより詳細に示すブロック図の一部分である。
【図14】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図15】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図16】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図17】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図18】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図19】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図20】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図21】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図22】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図23】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図24】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図25】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図26】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図27】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図28】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図29】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図30】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図31】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図32】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図33】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図34】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図35】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図36】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図37】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図38】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図39】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図40】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図41】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図42】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図43】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図44】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図45】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図46】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図47】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図48】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図49】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図50】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図51】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図52】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図53】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図54】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図55】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図56】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図57】図8および図9のバイトキューROP選択スキャン論理の実施例のゲートレベルの概略図である。
【図58】図4のROPマルチプレクサのバイトキューROP選択スキャン論理とバイトキューSEスキャン論理との関係を示すブロック図である。
【符号の説明】
100 スーパスカラプロセッサ
110 スーパスカラコア
104 命令キャッシュ
106 バイトキュー
108 命令デコーダ
400 ROPマルチプレクサ
600 第1のステージ
610 第2のステージ
620 第3のステージ
630 第4のステージ
690 高速バイトキュースキャン論理アーキテクチャ
Claims (24)
- 複数個の発行位置を有するスーパスカラプロセッサの命令キューをスキャンするための装置であって、前記命令キューは、実行のため1以上の第2の命令に各々マッピングする命令を含み、前記命令は、それぞれの識別要素により識別される位置にopコードを含み、前記装置は、
前記スーパスカラプロセッサの第1の発行位置のための第1のステージを含み、前記第1のステージは、識別要素に結合された入力を有するマスク論理の複数個のグループと、前記識別要素に結合された入力と前記第1のステージの前記マスク論理グループのうちの上位のものに結合された出力とを有するルックアヘッド発生器と、前記第1のステージの前記マスク論理グループの出力に結合されたマッピング命令情報発生器とを含み、前記装置はさらに
前記スーパスカラプロセッサの第2の発行位置のための第2のステージを含み、前記第2のステージは、前記第1のステージの対応するマスク論理グループの出力に結合された入力を有するマスク論理の複数個のグループと、前記マッピング命令情報発生器の出力および前記第1のステージの前記マスク論理グループの出力に結合された入力と前記第2のステージの前記マスク論理グループのうち上位のものに結合された出力とを有するルックアヘッド発生器とを含む、命令キュースキャン装置。 - 前記第2のステージはさらに、前記第2のステージの前記マスク論理グループの出力に結合されたマッピング命令情報発生器を含み、前記装置はさらに、前記スーパスカラプロセッサの第3の発行位置のための第3のステージを含み、前記第3のステージは、前記第2のステージの対応するビットマスク論理グループの出力に結合された入力を有するマスク論理の複数個のグループと、前記マッピング命令情報発生器の出力および前記第2のステージの前記マスク論理グループの出力に結合された入力と前記第3のステージの前記マスク論理グループのうち上位のものに結合された出力とを有するルックアヘッド発生器とを含む、請求項1に記載の装置。
- 前記命令キューの前記命令は、x86命令であり、前記第2の命令はRISC類似演算(「ROP」)であり、前記マッピング命令情報は、発行されないまま残っている次のマッピングされたROPの番号を示す2進信号を含む、請求項1に記載の装置。
- 前記ステージのROPが対応のx86命令からマッピングされたROPシーケンスの最後のROPであるかどうかを示す信号をさらに含む、請求項3に記載の装置。
- 複数個の発行位置を有するスーパスカラプロセッサの命令キューの1次命令をスキャンするための装置であって、各1次命令は、opコードと、前記命令キュー内の該opコードの位置を識別するopコード識別子とを含み、各1次命令は、1つまたはそれ以上の数の2次命令にマッピングし、前記装置は、前記1次命令に割当てられた発行位置に対応する複数個のステージを有し、各ステージは、
opコード識別子を受けるための入力と第1の出力とを有するルックアヘッド信号発生論理と、
opコード識別子マスク回路の第1のグループとを含み、各々は、
opコード識別子、発行位置を最も新しく割当てられたROPの番号、および1次命令がマッピングするROPの数を受けるための入力と、
マスクされた/マスクされないopコード識別子、発行位置を最も新しく割当てられたROPの番号のインクリメントされたもの、および1次命令がマッピングするROPの数を供給するための出力とを有し、各ステージは、
opコード識別子マスクおよびブロック回路の第2のグループをさらに含み、各々は、
opコード識別子、発行位置を最も新しく割当てられたROPの番号、および1次命令がマッピングするROPの数を受けるための入力を有し、前記ルックアヘッド信号発生論理の第1の出力に結合された入力をさらに有し、
マスクされた/マスクされないopコード識別子、発行位置を最も新しく割当てられたROPの番号のインクリメントされたもの、および1次命令がマッピングするROPの数を供給するための出力を有する、装置。 - 前記ルックアヘッド信号発生論理は、第2の出力を含み、前記装置はさらに、
opコード識別子マスクおよびブロック回路の第3のグループを含み、各々は、
opコード識別子、発行位置を最も新しく割当てられたROPの番号、および1次命令がマッピングするROPの数を受けるための入力を有し、前記ルックアヘッド信号発生論理の第2の出力に結合された入力をさらに有し、
マスクされた/マスクされないopコード識別子、発行位置を最も新しく割当てられたROPの番号のインクリメントされたもの、および1次命令がマッピングするROPの数を供給するための出力を有する、請求項5に記載の装置。 - 複数個の発行位置を有するスーパスカラプロセッサの命令キューの命令をスキャンするための装置であって、各命令は、opコードと、前記命令キュー内の該opコードの位置を識別するopコード識別子とを含み、各命令は、1つまたはそれ以上の数のRISC類似演算(「ROP」)にマッピングし、前記装置は、
各命令がマッピングするROPの数、および利用可能な発行位置の数に依存して、前記発行位置を前記命令に割当てるための手段と、
前記発行位置にそれぞれ対応し、前記割当て手段において前記発行位置が割当てられる命令のための前記命令キュー内のopコードの位置を識別してそれぞれの発行位置へ報告する複数個のステージとを含み、
各ステージは、opコード識別子の入力アレイとopコード識別子の出力アレイとを有し、かつ
前記入力アレイの最初のopコードの位置を識別するための手段と、
opコード識別子を前記入力アレイから前記出力アレイに伝搬するための手段とを含み、該伝搬しているアレイは、対応する発行位置が特定の命令に最後に割当てられた発行位置であるとマスクされる前記識別手段において識別される位置を有し、
前記ステージは、互いに直列に結合され、前記ステージのうち先頭のものは、その入力アレイが前記命令キューのopコード識別子に結合され、他のステージの各々は、その入力アレイがすぐ前のステージの出力アレイに結合され、かつ
各ステージは、opコード識別子処理論理の複数個のグループに分けられ、前記ステージ内の伝搬遅延を少なくするために該ステージの上位グループへの入力を与えるルックアヘッド手段を含む、装置。 - 前記割当て手段は、前記ステージにわたって分散される、請求項7に記載の装置。
- 前記命令キューは、キューの先頭にある完全プリデコードx86命令を含む、複数個の完全プリデコードx86命令を保持する、請求項7に記載の装置。
- 各命令がマッピングするROPは、順序づけられたシーケンスにあり、前記順序づけられたシーケンスでそれぞれの番号を有し、前記ステージの各々はさらに、
発行位置を最も新しく割当てられたROPの番号に関する出力アレイと、
関連するx86命令がマッピングするROPの数に関する出力アレイとを含み、前記ステージの各々はさらに、
すぐ前のステージのopコード識別子の出力アレイに結合され、該ステージのグループに対しそれぞれ第1のopコード識別信号およびルックアヘッド信号を発生する手段と、
発行位置を最も新しく割り当てられたROPの番号に関するすぐ前のステージの出力アレイに結合され、かつ関連するx86命令がマッピングするROPの数に関するすぐ前のステージの出力アレイに結合され、発行位置を最も新しく割当てられたROPの番号と、関連するx86命令がマッピングするROPの数とが同じであれば、すぐ前のステージのopコード識別子の出力アレイをマスクする手段とを含む、請求項7に記載の装置。 - 前記ステージの各々はさらに、次の発行位置を割当てられるべきROPのROP数を識別する第3の出力を含む、請求項10に記載の装置。
- 複数個の発行位置を有するスーパスカラプロセッサの命令キューのプリデコードされたx86命令をスキャンするための装置であって、各命令は、opコードと、前記命令キュー内のopコードの位置を識別するopコード識別子ビットとを含み、各命令は、1つまたはそれ以上の数のRISC類似演算(「ROP」)にマッピングし、前記装置は、第1のステージと第2のステージとを含み、前記第1のステージは、
前記命令キューのopコードビットおよびopコード識別子ビットに結合される入力を有する第1の第1opコード識別信号発生論理と、
部分的発行信号を受けるための入力を有する部分的発行信号発生論理と、
前記命令キューのopコードビットおよびopコード識別子ビットに結合された入力を有する第1のルックアヘッド信号発生論理と、
前記第1の第1opコード識別信号発生論理の第1フィールド出力と前記部分的発行信号発生論理とに結合された入力を有し、かつ前記命令キューの前記第1フィールドの最も早く発生するopコード識別子ビットの位置を識別するための出力を有するビットマスク論理の第1のグループと、
前記第1の第1opコード識別信号発生論理の第2フィールド出力と前記部分的発行信号発生論理の出力と前記第1のルックアヘッド信号発生論理の出力とに結合された入力を有し、かつ前記命令キューの前記第2フィールドの最も早く発生するopコード識別子ビットの位置を識別するための出力を有するビットマスク論理の第2のグループとを含み、
前記第2のステージは、
ビットマスク論理の前記第1および第2のグループのopコードビット出力およびopコード識別子ビット出力に結合された入力を有する第2の第1opコード識別信号発生論理と、
前記命令キューのopコードビットおよびopコード識別子ビットに結合された入力を有する第2のルックアヘッド信号発生論理と、
前記第2の第1opコード識別信号発生論理の第1フィールド出力とビットマスク論理の前記第1のグループのopコードビット出力およびopコード識別子ビット出力とに結合される入力を有するビットマスク論理の第3のグループと、 前記第2の第1opコード識別信号発生論理の第2フィールド出力とビットマスク論理の前記第2のグループのopコードビット出力およびopコード識別子ビット出力とに結合された入力を有するビットマスク論理の第4のグループとを含む、装置。 - スーパスカラプロセッサの1次命令のキューをスキャンするための方法であって、前記1次命令のキューは、第1の組のopコード位置識別子(「OLI」)により識別される前記キューのそれぞれの位置にある1つまたはそれ以上のopコードを有し、各1次命令は、1つまたはそれ以上の数の2次命令のシーケンスにマッピングし、前記方法は、
前記第1の組のOLIの第1および第2のサブセットを識別するステップと、 前記スーパスカラプロセッサの第1の発行位置に対し、そのいかなる最初にアサートされたOLIも識別される第1および第2のサブセットを有する第2の組のOLIを発生するステップとを含み、前記第2の組のOLIの前記第1および第2のサブセットは、前記第1の組のOLIの前記第1および第2のサブセットに対応し、さらに
前記第1の組のOLIの前記第1のサブセットがいかなるアサートされたOLIも含まなければ、前記第1の発行位置に対しルックアヘッド信号を発生するステップと、
前記第1の発行位置に関する前記ルックアヘッド信号を前記第2の組のOLIの前記第2のサブセットに与え、前記第2の組のOLIから前記第1の発行位置に対し、前記第1の組の最初にアサートされたOLIを示しかつ前記第1の組のいかなる続いてアサートされたOLIも示さない第3の組のOLIを発生するステップと、
前記第1の組から第4の組のOLIを導出するステップと、
前記スーパスカラプロセッサの第2の発行位置に対し、そのいかなる最初にアサートされたOLIも識別される第1および第2のサブセットを有する第5の組のOLIを発生するステップとを含み、前記第5の組のOLIの前記第1および第2のサブセットは、前記第4の組のOLIの前記第1および第2のサブセットに対応し、さらに
前記第4の組のOLIの前記第1のサブセットがいかなるアサートされたOLIも含まなければ、前記第2の発行位置に対しルックアヘッド信号を発生するステップと、
前記第2の発行位置に関するルックアヘッド信号を前記第5の組のOLIの前記第2のサブセットに与え、前記第5の組のOLIから前記第2の発行位置に対し、前記第4の組の最初にアサートされたOLIを示しかつ前記第4の組のいかなる続いてアサートされたOLIも示さない第6の組のOLIを発生するステップとを含む、方法。 - 第4の組のOLIを導出する前記ステップは、前記第1の発行位置が2次命令のシーケンスの最後の2次命令を含む場合には、前記第1の組のOLIの最初にアサートされたOLIを阻止し、そうでなければ、前記第1の組のOLIの最初にアサートされたOLIを伝搬するステップを含む、請求項13に記載の方法。
- スーパスカラプロセッサの1次命令のキューをスキャンするための方法であって、前記1次命令のキューは、第1のアレイのアサートされたビットによりそれぞれ識別される前記キューのそれぞれの位置にある1つまたはそれ以上のopコードバイトを有し、各1次命令は、1つまたはそれ以上の数の2次命令のシーケンスにマッピングし、前記方法は、
前記第1のアレイのビットの第1および第2のサブセットを識別するステップと、
前記スーパスカラプロセッサの第1の発行位置に対し、前記第1のアレイのビットの第1および第2のサブセットそれぞれの最初にアサートされたビットを示すビットの第1および第2のサブセットを有する第2のアレイを発生するステップと、
前記第1のアレイのビットの第1のサブセットがアサートされたビットを含まなければ、前記第1の発行位置に対しルックアヘッド信号を発生するステップと、
前記第1の発行位置に関する前記ルックアヘッド信号を前記第2のアレイのビットの第2のサブセットに与え、前記第2のアレイから前記第1の発行位置に対し、前記第1のアレイの最初にアサートされたビットを示しかつ前記第1のアレイのいかなる続いてアサートされたビットも示さないビットの第3のアレイを発生するステップと、
前記第1のアレイから第4のアレイを導出するステップと、
前記第4のアレイのビットの第1および第2のサブセットを識別するステップと、
前記スーパスカラプロセッサの第2の発行位置に対し、前記第4のアレイのビットの第1および第2のサブセットそれぞれの最初にアサートされたビットを示すビットの第1および第2のサブセットを有する第5のアレイを発生するステップと、
前記第4のアレイのビットの前記第1のサブセットがアサートされたビットを含まなければ、前記第2の発行位置に対しルックアヘッド信号を発生するステップと、
前記第2の発行位置に関するルックアヘッド信号を前記第5のアレイのビットの前記第2のサブセットに与え、前記第5のアレイから前記第2の発行位置に対し、前記第4のアレイの最初にアサートされたビットを示しかつ前記第4のアレイのいかなる続いてアサートされたビットも示さないビットの第6のアレイを発生するステップとを含む、方法。 - 第4のアレイを導出する前記ステップは、前記第1のアレイをマスクし、前記第1の発行位置が2次命令のシーケンスの最後の2次命令を含む場合には、前記第1のアレイの最初にアサートされたビットを阻止し、それ以外の時前記第1のアレイの最初にアサートされたビットを伝搬するステップを含む、請求項15に記載の方法。
- 第4のアレイを導出する前記ステップの前に、さらに、
前記第1の発行位置に対し、前記第1の発行位置の2次命令のシーケンス数を示す部分的発行値を発生するステップと、
前記部分的発行値と前記第1の発行位置に関する完全発行値とを比較するステップとを含み、前記第1の発行位置に関する前記完全発行値は、前記第1の発行位置の2次命令がマッピングされる1次命令からマッピングされる2次命令の数であり、
前記第1の発行位置に対する前記導出ステップはさらに、前記部分的発行値が前記第1の発行位置に関する前記完全発行値と同じである場合には、前記第1のアレイの最初にアサートされたビットをマスクし、それ以外の時前記第1のアレイの最初にアサートされたビットを伝搬するステップを含む、請求項16に記載の方法。 - 前記第4のアレイから第7のアレイを導出するステップと、
前記第7のアレイのビットの第1および第2のサブセットを識別するステップと、
前記スーパスカラプロセッサの第3の発行位置に対し、前記第7のアレイのビットの第1および第2のサブセットそれぞれの最初にアサートされたビットを示すビットの第1および第2のサブセットを有する第8のアレイを発生するステップと、
前記第7のアレイのビットの第1のサブセットがアサートされたビットを含まなければ、前記第3の発行位置に対しルックアヘッド信号を発生するステップと、
前記第3の発行位置に関する前記ルックアヘッド信号を前記第8のアレイのビットの第2のサブセットに与え、前記第8のアレイから前記第3の位置に対し、前記第7のアレイの最初にアサートされたビットを示しかつ前記第7のアレイのいかなる続いてアサートされたビットも示さないビットの第9のアレイを発生するステップとをさらに含む、請求項15に記載の方法。 - 前記第7のアレイを導出するステップは、前記第4のアレイをマスクし、前記第2の発行位置が2次命令のシーケンスの最後の2次命令を含む場合には、前記第4のアレイの最初にアサートされたビットを阻止し、それ以外の時には前記第4のアレイの最初にアサートされたビットを伝搬するステップを含む、請求項18に記載の方法。
- 第7のアレイを導出する前記ステップの前に、さらに、
前記第2の発行位置に対し、部分的発行値から発行値を導出するステップを含み、該導出された発行値は、前記第2の発行位置の2次命令のシーケンス数が前記第2の発行位置に関する完全発行値より小さい場合には、前記部分的発行値のインクリメントされたものであり、前記第2の発行位置に関する前記完全発行値は、前記第2の発行位置の2次命令がマッピングされる1次命令からマッピングされる2次命令の数であり、前記導出された発行値は、それ以外の時デフォルト値であり、さらに
前記導出された発行値と前記第2の発行位置に関する前記完全発行値とを比較するステップを含み、
前記第2の発行位置に対する前記導出ステップはさらに、前記導出された発行値が前記第2の発行位置に関する前記完全発行値と同じである場合には、前記第4のアレイの最初にアサートされたビットをマスクし、それ以外の時前記第4のアレイの最初にアサートされたビットを伝搬するステップを含む、請求項19に記載の方法。 - 前記第1のアレイのビットの前記第1および第2のサブセットを識別する前記ステップはさらに、前記第1のアレイのビットの第3のサブセットを識別するステップを含み、
第2のアレイを発生する前記ステップはさらに、前記第1のアレイのビットの前記第3のサブセットの最初にアサートされたビットを示すビットの第3のサブセットを前記第2のアレイに含ませるステップを備え、
前記第1の発行位置に対しルックアヘッド信号を発生する前記ステップはさらに、前記第1のアレイのビットの前記第1または前記第2のサブセットのいずれも最初にアサートされたビットを含まない場合には、前記第1の発行位置に対し付加的なルックアヘッド信号を発生するステップを含み、
前記第1の発行位置に関する前記ルックアヘッド信号を与える前記ステップはさらに、前記第1の発行位置に関する前記付加的なルックアヘッド信号を前記第2のアレイのビットの第3のサブセットに与えることにより、前記第3のアレイを発生するステップを含む、請求項15に記載の方法。 - 前記1次命令はプリデコードされたx86命令であり、前記2次命令はRISC類似演算である、請求項15に記載の方法。
- 複数個の発行位置および複数個のそれぞれのスキャンステージを有するスーパスカラプロセッサの命令キューの命令をスキャンするための方法であって、各命令は、opコードと、前記命令キュー内のopコードの位置を識別するopコード識別子とを含み、各命令は、1つまたはそれ以上の数のRISC類似演算(「ROP」)にマッピングし、前記方法は、
各命令がマッピングするROPの数および利用可能な発行位置の数に依存して、前記発行位置を前記命令に割当てるステップと、
前記発行位置が割当てられる命令に対する前記命令キューのopコードの位置を識別するステップと、
前記識別ステップからのopコード位置をそれぞれの発行位置に報告するステップとを含み、
各ステージが、opコード識別子の入力アレイとopコード識別子の出力アレイとを有する、ステージ単位で、
前記入力アレイの第1のopコードの位置を識別するステップと、
opコード識別子を前記入力アレイから前記出力アレイに伝搬するステップとを含み、該伝搬しているアレイは、対応する発行位置が特定の命令に最後に割当てられた発行位置であるときにマスクされる識別手段において識別される位置を有し、
前記ステージは、互いに直列に結合され、前記ステージのうち先頭のものは、その入力アレイが前記命令キューのopコード識別子に結合され、他のステージの各々は、その入力アレイがすぐ前のステージの出力アレイに結合され、
各ステージは、opコード識別子処理論理の複数個のグループに分けられ、
前記ステージ内の伝搬遅延を少なくするために、ルックアヘッド信号をステージの上位グループに与えるステップをさらに含む、方法。 - 各命令がマッピングするROPは、順序づけられたシーケンスであり、かつ前記順序づけられたシーケンスでそれぞれの番号を有し、前記ステージの各々は、
発行位置を最も新しく割当てられたROPの番号に関する出力アレイと、
関連するx86命令がマッピングするROPの数に関する出力アレイとを含み、前記方法はさらに
前記ステージのグループに対しそれぞれ第1のopコード識別信号およびルックアヘッド信号を発生するステップと、
発行位置を最も新しく割当てられたROPの番号と、関連するx86命令がマッピングするROPの数とが同じである場合には、すぐ前のステージのopコード識別子の出力アレイをマスクするステップとを含む、請求項23に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/292649 | 1994-08-18 | ||
US08/292,649 US5630082A (en) | 1993-10-29 | 1994-08-18 | Apparatus and method for instruction queue scanning |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08190482A JPH08190482A (ja) | 1996-07-23 |
JP3714999B2 true JP3714999B2 (ja) | 2005-11-09 |
Family
ID=23125583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20876895A Expired - Lifetime JP3714999B2 (ja) | 1994-08-18 | 1995-08-16 | 命令キューをスキャンするための装置およびその方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US5630082A (ja) |
EP (1) | EP0697650B1 (ja) |
JP (1) | JP3714999B2 (ja) |
KR (1) | KR100354324B1 (ja) |
AT (1) | ATE202644T1 (ja) |
DE (1) | DE69521461T2 (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US5822558A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor |
US5790824A (en) * | 1996-03-18 | 1998-08-04 | Advanced Micro Devices, Inc. | Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions |
US6041403A (en) * | 1996-09-27 | 2000-03-21 | Intel Corporation | Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction |
DE19737658C2 (de) * | 1996-10-18 | 1999-10-14 | Nat Semiconductor Corp | Befehlsdecoder für einen Mikroprozessor |
US6148393A (en) * | 1997-03-10 | 2000-11-14 | Advanced Micro Devices, Inc. | Apparatus for generating a valid mask |
US5968163A (en) | 1997-03-10 | 1999-10-19 | Advanced Micro Devices, Inc. | Microcode scan unit for scanning microcode instructions using predecode data |
US6016544A (en) * | 1997-06-09 | 2000-01-18 | Ip First Llc | Apparatus and method for tracking changes in address size and for different size retranslate second instruction with an indicator from address size |
US5940602A (en) * | 1997-06-11 | 1999-08-17 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations |
US6105125A (en) * | 1997-11-12 | 2000-08-15 | National Semiconductor Corporation | High speed, scalable microcode based instruction decoder for processors using split microROM access, dynamic generic microinstructions, and microcode with predecoded instruction information |
US6134649A (en) * | 1997-11-17 | 2000-10-17 | Advanced Micro Devices, Inc. | Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction |
US6167506A (en) | 1997-11-17 | 2000-12-26 | Advanced Micro Devices, Inc. | Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location |
US6134650A (en) * | 1997-12-12 | 2000-10-17 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data |
US6061775A (en) * | 1997-12-12 | 2000-05-09 | Advanced Micro Devices, Inc. | Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types |
US6061786A (en) * | 1998-04-23 | 2000-05-09 | Advanced Micro Devices, Inc. | Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction |
WO2000000878A2 (en) * | 1998-06-26 | 2000-01-06 | Chi Lan Wong Derek | Methods for increasing instruction-level parallelism in microprocessors and digital systems |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6636959B1 (en) | 1999-10-14 | 2003-10-21 | Advanced Micro Devices, Inc. | Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition |
US6647490B2 (en) | 1999-10-14 | 2003-11-11 | Advanced Micro Devices, Inc. | Training line predictor for branch targets |
US6546478B1 (en) | 1999-10-14 | 2003-04-08 | Advanced Micro Devices, Inc. | Line predictor entry with location pointers and control information for corresponding instructions in a cache line |
US6523108B1 (en) | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
US20030188044A1 (en) * | 2002-03-28 | 2003-10-02 | International Business Machines Corporation | System and method for verifying superscalar computer architectures |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US7774748B1 (en) * | 2004-08-03 | 2010-08-10 | Tensilica, Inc. | System and method for automatic conversion of a partially-explicit instruction set to an explicit instruction set |
CN100530164C (zh) | 2007-12-29 | 2009-08-19 | 中国科学院计算技术研究所 | 一种risc处理器及其寄存器标志位处理方法 |
US8201067B2 (en) * | 2008-02-25 | 2012-06-12 | International Business Machines Corporation | Processor error checking for instruction data |
US10496412B2 (en) | 2016-02-08 | 2019-12-03 | International Business Machines Corporation | Parallel dispatching of multi-operation instructions in a multi-slice computer processor |
US11132599B2 (en) | 2017-02-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Multi-function unit for programmable hardware nodes for neural network processing |
US11467838B2 (en) * | 2018-05-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Fastpath microcode sequencer |
CN111030788B (zh) * | 2018-10-10 | 2022-05-31 | 上海朗帛通信技术有限公司 | 一种被用于无线通信的用户设备、基站中的方法和装置 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3781808A (en) * | 1972-10-17 | 1973-12-25 | Ibm | Virtual memory system |
AT354159B (de) * | 1975-02-10 | 1979-12-27 | Siemens Ag | Assoziativspeicher mit getrennt assoziierbaren bereichen |
US4179737A (en) * | 1977-12-23 | 1979-12-18 | Burroughs Corporation | Means and methods for providing greater speed and flexibility of microinstruction sequencing |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US4453212A (en) * | 1981-07-13 | 1984-06-05 | Burroughs Corporation | Extended address generating apparatus and method |
US4928223A (en) * | 1982-10-06 | 1990-05-22 | Fairchild Semiconductor Corporation | Floating point microprocessor with directable two level microinstructions |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPH0658631B2 (ja) * | 1983-12-19 | 1994-08-03 | 株式会社日立製作所 | デ−タ処理装置 |
US5426914A (en) * | 1989-02-24 | 1995-06-27 | Highland Supply Corporation | Band applicator for applying a band about a sheet of material and a pot |
DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
CA1271561A (en) * | 1986-07-02 | 1990-07-10 | Jeffry M. Bram | Instruction decoding microengines |
CA1278382C (en) * | 1986-12-15 | 1990-12-27 | Brian J. Sprague | Reduced instruction set computing apparatus and methods |
US4992934A (en) * | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5131086A (en) * | 1988-08-25 | 1992-07-14 | Edgcore Technology, Inc. | Method and system for executing pipelined three operand construct |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5155816A (en) * | 1989-02-10 | 1992-10-13 | Intel Corporation | Pipelined apparatus and method for controlled loading of floating point data in a microprocessor |
US5155820A (en) * | 1989-02-21 | 1992-10-13 | Gibson Glenn A | Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
JP2725450B2 (ja) * | 1989-08-28 | 1998-03-11 | 日本電気株式会社 | マイクロプロセッサ |
US5185868A (en) * | 1990-01-16 | 1993-02-09 | Advanced Micro Devices, Inc. | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5128888A (en) * | 1990-04-02 | 1992-07-07 | Advanced Micro Devices, Inc. | Arithmetic unit having multiple accumulators |
CA2037708C (en) * | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
DE69123629T2 (de) * | 1990-05-04 | 1997-06-12 | International Business Machines Corp., Armonk, N.Y. | Maschinenarchitektur für skalaren Verbundbefehlssatz |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
WO1992006426A1 (en) * | 1990-10-09 | 1992-04-16 | Nexgen Microsystems | Method and apparatus for parallel decoding of instructions with branch prediction look-up |
JPH04156613A (ja) * | 1990-10-20 | 1992-05-29 | Fujitsu Ltd | 命令バッファ装置 |
EP0498654B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | Cache memory processing instruction data and data processor including the same |
JPH052484A (ja) * | 1991-06-24 | 1993-01-08 | Mitsubishi Electric Corp | スーパースカラプロセツサ |
KR100299691B1 (ko) * | 1991-07-08 | 2001-11-22 | 구사마 사부로 | 확장가능알아이에스씨마이크로프로세서구조 |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
SG45269A1 (en) * | 1992-02-06 | 1998-01-16 | Intel Corp | End bit markers for instruction decode |
GB2263985B (en) * | 1992-02-06 | 1995-06-14 | Intel Corp | Two stage window multiplexors for deriving variable length instructions from a stream of instructions |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
IE80854B1 (en) * | 1993-08-26 | 1999-04-07 | Intel Corp | Processor ordering consistency for a processor performing out-of-order instruction execution |
EP0651320B1 (en) * | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superscalar instruction decoder |
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
-
1994
- 1994-08-18 US US08/292,649 patent/US5630082A/en not_active Expired - Lifetime
-
1995
- 1995-07-17 DE DE69521461T patent/DE69521461T2/de not_active Expired - Lifetime
- 1995-07-17 AT AT95304957T patent/ATE202644T1/de not_active IP Right Cessation
- 1995-07-17 EP EP95304957A patent/EP0697650B1/en not_active Expired - Lifetime
- 1995-08-16 JP JP20876895A patent/JP3714999B2/ja not_active Expired - Lifetime
- 1995-08-18 KR KR1019950025425A patent/KR100354324B1/ko not_active IP Right Cessation
-
1997
- 1997-02-04 US US08/795,330 patent/US5896518A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR960008542A (ko) | 1996-03-22 |
EP0697650B1 (en) | 2001-06-27 |
JPH08190482A (ja) | 1996-07-23 |
KR100354324B1 (ko) | 2003-01-08 |
DE69521461D1 (de) | 2001-08-02 |
US5896518A (en) | 1999-04-20 |
DE69521461T2 (de) | 2002-04-18 |
EP0697650A3 (en) | 1998-04-01 |
ATE202644T1 (de) | 2001-07-15 |
US5630082A (en) | 1997-05-13 |
EP0697650A2 (en) | 1996-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3714999B2 (ja) | 命令キューをスキャンするための装置およびその方法 | |
US5590352A (en) | Dependency checking and forwarding of variable width operands | |
US6189087B1 (en) | Superscalar instruction decoder including an instruction queue | |
JP3628379B2 (ja) | 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置 | |
US5689693A (en) | Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead | |
US5675758A (en) | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations | |
US6260134B1 (en) | Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte | |
JPH07334364A (ja) | スーパースカラマイクロプロセッサおよびropを処理する方法 | |
JPH10124391A (ja) | マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法 | |
US5815420A (en) | Microprocessor arithmetic logic unit using multiple number representations | |
JP3781519B2 (ja) | プロセッサの命令制御機構 | |
WO2012144374A1 (ja) | データプロセッサ | |
US6286094B1 (en) | Method and system for optimizing the fetching of dispatch groups in a superscalar processor | |
US6442675B1 (en) | Compressed string and multiple generation engine | |
CN116893848A (zh) | 对指令解码集群的可变长度指令引导 | |
EP4016290A1 (en) | Efficient multiply and accumulate instruction when an operand is equal to or near a power of two | |
JP3732233B2 (ja) | スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置 | |
US20230205522A1 (en) | Conversion instructions | |
US20230221958A1 (en) | Memory controller with arithmetic logic unit and/or floating point unit | |
US20220413861A1 (en) | Dual sum of quadword 16x16 multiply and accumulate | |
US20230205521A1 (en) | Conversion instructions | |
US20230205527A1 (en) | Conversion instructions | |
EP4016289A1 (en) | Efficient divide and accumulate instruction when an operand is equal to or near a power of two | |
JP2023035849A (ja) | Bfloat16平方根および/または逆数平方根命令 | |
CN115729618A (zh) | Bfloat16算术指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050328 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050405 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050704 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050726 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050824 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080902 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100902 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110902 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110902 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120902 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130902 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |