JP3681761B2 - ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック - Google Patents
ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック Download PDFInfo
- Publication number
- JP3681761B2 JP3681761B2 JP52687497A JP52687497A JP3681761B2 JP 3681761 B2 JP3681761 B2 JP 3681761B2 JP 52687497 A JP52687497 A JP 52687497A JP 52687497 A JP52687497 A JP 52687497A JP 3681761 B2 JP3681761 B2 JP 3681761B2
- Authority
- JP
- Japan
- Prior art keywords
- group
- entry
- entries
- logic
- store
- 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 - Fee Related
Links
- 238000012545 processing Methods 0.000 claims description 151
- 238000000034 method Methods 0.000 claims description 29
- 238000001514 detection method Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 15
- 239000002131 composite material Substances 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000011664 signaling Effects 0.000 claims description 4
- 230000001934 delay Effects 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims 7
- 241000219495 Betulaceae Species 0.000 claims 1
- 238000013461 design Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 238000006073 displacement reaction Methods 0.000 description 8
- 101150108116 PGLYRP1 gene Proteins 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100478266 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SPT10 gene Proteins 0.000 description 1
- 101100352819 Schizosaccharomyces pombe (strain 972 / ATCC 24843) pop2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 101150095121 sud1 gene Proteins 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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)
Description
本発明はプロセッサに関し、特に複数の実行ユニットを有するプロセッサに於けるOUT−OF−ORDER実行コントロールに関する。
背景技術
通常、汎用コンピュータは、順序付けられたマシン命令のシーケンスとして実行可能な形態で提供されるプログラムを実行する。人が読める表現形態のプログラムは、コンパイルとして知られているプロセスにより、所望のターゲットアーキテクチャ用のマシン命令のシーケンス、例えばx86プロセッサアーキテクチャに適合したプロセッサ用のオブジェクトコードに変換される。コンピュータプログラムは、通常、単純化のための仮定、即ち変換の結果得られるオブジェクトがシーケンスの順番に実行されるという仮定に基づいて、デザインされ、コード化され、コンパイルされる。しかしこのような仮定にも関わらず、最近のプロセッサデザイン技術では、マシン命令の同時実行、即ち命令並行実行可能性(instruction parallelism)の利用に努めている。
計算の処理能力を最大にするために、命令並行実行を多数の実行ユニットにマップするためのスーパスケーラ技術を用いることができる。これとは対照的に、パイプライン処理技術では、1つの機能的単位、又は実行経路の一段階の中での命令並行実行を採用している。スーパスケーラ技術は、スーパスケーラデザインの分野に於いて知られている技術であり、この技術ではOUT−OF−ORDER命令発行、OUT−OF−ORDER命令完了、及び命令の投機的実行が行われる。
OUT−OF−ORDER命令発行では、実行コードに於ける実際の命令の順序とは殆ど無関係な順序で実行ユニットへの命令の発行が行われる。OUT−OF−ORDER発行を利用するスーパスケーラプロセッサは、その命令ディスパッチシーケンスのフォーマッティングに於いて、所定の命令の出力(計算結果)と後続の命令の入力(オペランド)との間の依存性によってのみ条件付けられる必要がある。一方、OUT−OF−ORDER完了は、プログラムシーケンスの中で先行する命令が完了する前に所定の命令が完了(例えば計算結果を格納すること)できるようにする技術である。最後に投機的実行は、予測された結果(例えば分岐)に基づいて命令シーケンスの実行を行う。投機的実行(即ち分岐が正確に予測されているという仮定のもとでの実行)により、命令を分岐条件が実際に評価されるまで待機することなくプロセッサが命令を実行可能となる。分岐が正しく予測されることが不正確に予測されることより多く、かつ不正確な予測結果を実行しない合理的で効率的な方法が利用可能であると仮定すると、命令並行実行可能性(即ち並行実行が利用可能な命令の数)は、投機的実行により増加することになる(Johnson、Superscalar processor Design, Prentice-Hall, Inc., New Jersey, 1991,pp.63-77 for an analysis参照)。
シーケンスの順番とは異なる順番での命令の実行、即ちシーケンスの順序とは異なる順序で命令を発行及び完了することにより、スーパスケーラプロセッサが多数の実行ユニットを同時並行的に動作させた状態を維持することが可能であるため、スーパスケーラプロセッサの処理能力は高くなる。従って、スーパスケーラプロセッサ用のスケジューラは、OUT−OF−ORDER実行される命令が何れであるかを判定し、それらの命令を適当な実行ユニットに供給又はディスパッチすることにより全体の処理能力を改善することができる。スーパスケーラプロセッサ用のスケジューラは、割り込み及びトラップの処理も行わなければならない。x86プロセッサアーキテクチャを含む多くのプロセッサアーキテクチャでは、命令がエラー、割り込み、またはトラップを発生する直前又は直後にアーキテクチャーの状態を認識している必要がある。これにより命令のOUT−OF−ORDER実行が困難になる。従って、スケジューラは命令の取り消しや、命令があたかも順序通りに実行されたかのようなシステム状態の再構築ができなければならない。
これらの技術のそれぞれに関連をもつ、命令並行実行可能性を利用するためのアーキテクチャのデザインが様々な文献やテキストにおいて提案されてきた。Johnson pp.127-146(OUT−OF−ORDER発行)、pp103-126(OUT−OF−ORDER完了及び依存性)pp87-102(誤り分岐予測の回復)を参照されたい。
発明の開示
ロードオペレーション及びストアオペレーション(以下「オペレーション」を省略し単にロード、ストアと表記する)のOUT−OF−ORDER実行コントロールシステムを提供するプロセッサに於いて、ロード及びストアが互いに独立してOUT−OF−ORDER実行され得ることがわかった。特定のロードに対するストアの相対的古さ(及び特定のストアに対するロードの相対的古さ)追跡するスキャンロジックにより、本発明に基づいて構築されたロード/ストア実行コントロールシステムが、ロードが完了するまで新しいストアを停止(hold)(及び古いストアが完了するまで新しいロードを停止)させることが可能となる。特に、本発明に基づいて構築された、ツリー構造で階層的に編成されたスキャンロジックの様々な実施例は、多数のオペレーションを同時並行的に評価するために適合されたプロセッサの実施例においてすら、ゲートでの遅れが殆ど無しに、ストアオペレーションが古いことを表すストアオルダ指示信号、及びロードオペレーションが古いことを表すロードオルダ指示信号を提供する。アドレスマッチングロジックは、このスキャンロジックとともに動作して、ロード−ストア実行コントロールシステムが、ロード−ストア間(及びストア−ロード間)の依存性を回避して処理できるようにする。ロードオペレーションを実行するロードユニット及びストアオペレーションを実行するストアユニットを有するプロセッサに於いて、このようなロード/ストア実行コントロールシステムにより、ロード命令及びストア命令を、それらの間のデータ依存性を強制しつつ、それら相互について概ね順不同に実行、即ちOUT−OF−ORDER実行することが可能となる。
【図面の簡単な説明】
以下に説明する添付の図面を参照することにより、本発明はより良く理解され、またその様々な目的、特徴及び利点が当業者には明らかとなろう。
第1図は、本発明の一実施例によるOUT−OF−ORDER実行コントロールとなるスーパスケーラコンピュータプロセッサのブロック図である。
第2図は、本発明の一実施例によるスケジューラのブロック図である。
第3図は、本発明の一実施例による命令の実行に於けるアーキテクチャーの段階を示すパイプライン処理の各段階を示した図である。
第4図は、本発明の一実施例によるロード及びストアOUT−OF−ORDER実行コントロール要素のブロック図である。
第5図は、本発明の一実施例によるロード停止ロジックの回路図である。
第6図は、本発明の一実施例によるストア停止ロジックの回路図である。
第7図は、本発明の一実施例によるスキャンロジックのブロック図である。
第8図は、本発明の典型的な実施例によるスキャンロジックのためのグループ内ロジックの論理図である。
第9図は、本発明の一実施例によるスキャンロジックのための第1及び第2レベル一括グループロジックの論理図である。
第10図は、本発明の一実施例によるスキャンロジックのための第3レベル一括グループロジックの論理図である。
第11図は、本発明の一実施例による、OUT−OF−ORDERロード/ストア実行コントロールを提供するプロセッサを組み込んだコンピュータシステムのブロック図である。
第12図は、スキャンロジックのOpクワッド依存部分のスピード経路処理能力を改善するための別形態のスキャン結合ロジックの論理図である。
図面全体に於いて同一の又は類似した構成要素には同じ符号を付して示した。
発明の実施の形態
第2図は24個のエントリ(列として示す)を有するスケジューラ180の例示的実施例であって、各エントリが継続中のOpと関連している例示的実施例を示す。各エントリは継続中のOpに関連する静的及び動的データを表すためのスケジューラリザーバ240として一括して示される一連のフィールドを含む。付け加えるに、スケジューラ180は継続中のOpsに関連したデータを受け取るためにスケジュールリザーバ240のエントリに接続された制御ロジック230として一括して示される一連の特殊ロジックブロックを提供する。制御ロジック230の特殊ロジックブロック(桁231、232、233、235及び236として示す)はOp実行並びに実行ユニットへのオペランドの供給と実行ユニットからの結果の分配の順序付けを制御する信号を供給する。制御ロジック230は発行選択ロジック231、オペランド選択ロジック232、ロード・ストア命令ロジック234、状態フラグ処理ロジック235、及び自己修飾コード支援ロジック536を含む。
発行選択ロジック231は各サイクルの間有効な実行ユニットへの発行のためスケジュールリザーバ240からのOpsの選択を制御する。オペランド選択ロジック232は実行ユニットに対して発行されたOpsに必要とされるオペランドデータのための適当なソースを識別する。データ依存性と実行エンジン150内のOpsの順序付けに依拠して適当なソースはレジスタファイル190であり、他の継続中のOpエントリ(スケジューラエントリのためのデスティネーション値フィールドは250として一括して示される)に関連するデスティネーション値フィールドまたは結果バス(結果バス272として一括して示される)の1つの供給される完了Opの結果がある。発行選択ロジック231とオペランド選択ロジック232によって供給される制御信号はスケジューラ180がスケジュールリザーバ240より有効実行ユニットへOpsを発行しかつ発行された各Opのための適当なオペランドソースを選択するのを可能とする。
スケジューラ180は、各スケジューラエントリに関連したデスティネーション値フィールドを含む。これらのデスティネーション値フィールドは250として一括的に示されている。オペランド選択ロジック232との関係に於いて、デスティネーション値フィールド250は、リオーダバッファと暗黙レジスタの再命名を実施する。レジスタファイル190のアーキテクチュ配列ジスタに関連するオペランド値は、デスティネーション値フィールド250内に表され、典型的には、オペランドバス271を介してレジスタオペランド値として実行ユニットに供給される。しかしながら、デスティネーション値フィールド250のいずれもより現時点に近いレジスタ状態を表していない場合(すなわち、未だコミットされていないレジスタ状態)には、これに代えてオペランド値をレジスタファイル190から供給する事ができる。完了したOpsの結果は結果バス272を介して完了したOpに関連するスケジューラエントリのデスティネーション値フィールドに供給される。付け加えるに、これらの結果は、また継続中のOpsのためのオペランドとして実行ユニットに供給することができる。結果は、結果バス272を介して転送される。
スケジュールリザーバエントリ(例証的にはスケジュールリザーバエントリ240.1)のフィールドは、実行を待っているか、実行される過程にあるか、または完了されたか、であるオペレーション(Op)に関する情報を含んでいる。スケジュールリザーバエントリのフィールドの大部分は、命令デコーダ130が新規のOpをスケジュールリザーバ240にロードしたときに初期化される。しかしながら、他のフィールドは、後にロードされ又は更新される。例えば、状態フィールド(各エントリに対してフィールド242として示される)は符合するOpが実行パイプラインの段階を通って進むのに伴って更新される。Opがスケジュールリザーバ240内にロードされる時からスケジューラ180から退避される時までの値を保持する記憶フィールドは「静的フィールド」として言及される。新規の値によって更新されることのできるフィールドは「動的フィールド」として言及される。静的フィールドデータ及び動的フィールドの初期データ値は命令デコーダ140によって供給される。
各スケジュールリザーバエントリ(第2図中タイプフィールド241として示される)の3ビットフィールド、タイプ〔2:0〕は、スケジュールリザーバエントリに関連したOpのタイプを特定する。Opのタイプは発行選択目的のために特に重要である(例えば、LdOpsは150の様なロードユニットに発行しなければならない);しかしながら、ロード/ストア命令制御はまたタイプフィールド241も利用する。下記の信号は、タイプフィールド241から解読したものである:
各スケジュールリザーバエントリ(図中タイプフィールド242として示されている)の4ビットフィールド、状態[3:0]はOp(S3,S2,S1及びS0は状態[3:0]の交番信号名である)の現実行状態を示す。タイプフィールド242の5つの可能状態は以下の様なシフトフィールドによって符号化される:
即時の状態は、タイプフィールドが現れるエントリに符合したOpのための現実行段階に符合する。ビットは、Opが段階の外で支承なく発行され進むのに伴って更新される(実際的には左シフトによって)。状態[3:0]はまた中心サイクルの間に1111に設定される。
スケジューラOpクワッド構成
スケジューラ180はスケジュールリザーバ240内の24個のエントリと、FIFOとして扱われるデスティネーション値フィールド250を含む。新規のOpsに符号するデータは、最上部にロードされ実行の進行に伴って最下位に向かってシフトされ、スケジューラリザーバ240の最下位から退避される。制御の単純化のためにスケジューラ180は、スケジュールリザーバ240とデスティネーション値フィールド250をOpクワッドに基づいて処理する。Opsは、4つのグループにてスケジュールリザーバ240にロードされ、スケジュールリザーバ240を通してシフトされ、且つスケジュールリザーバ240から退避される。このようにして、スケジューラの細分性が命令デコーダ140のエンコードROM142及びNacDec141の両者のデコード帯域幅に適合する。スケジューラ180は、したがって深さ6幅4のFIFO内の6個のOpクワッドエントリとして24個のOpエントリを処理する。
スケジューラ180をOpクワッドにて編成しているが、スケジューラの動作の多くの側面は、スケジューリングリザーバ240、デスティネーション値フィールド250、及びコントロールロジック230を考察することにより良く理解されよう。例示のため、以下の議論は24エントリスケジューラ180について説明しているが、上述の共願の特許出願の明細書に説明されているOpクワッドの細分性の利点について、当業者は理解されよう。
オペレーション(Op)のタイミング及び実行段階
スケジューラリザーバ240の各エントリは、未定のOpsを記述するフィールドを含む。これらのフィールドは、命令デコーダ140によって取り出され又は解読されたOpsから生来的に得られた静的状態情報及びOp実行から結果し、又は、与えられたOpの実行パイプライン状態を特徴づける動的状態情報を格納する。
プロセッサ制御の概観からスケジューラ180は、関連する制御ロジック230を備えたOp状態情報(スケジュールリザーバ240)の命令順序指定配列であって制御ロジック230は、配列から各実行ユニットへの発行Ops、パイプライン段階のシーケンスを介する制御Op実行及び最終的にはスケジューラからの退避Opsに対し、制御信号を発生する。第2図に示すように、制御ロジック230は、制御ロジックの5つの特殊ブロック(発行選択ロジック231、オペランド選択ロジック232、ロード・ストア命令ロジック234、状態フラグ処理ロジック235及び自己修飾コード支援ロジック236)を含み、その各々は、スケジューラリザーバ240の符合するエントリから情報を受け取る部分(ロード・ストア命令ロジック234の例証的部分234.3)を有する。制御ロジックブロックは、実行ユニットに制御信号を供給する。例えば、ロード・ストア命令ロジック234は、273として一括して表される制御線を介してロードユニット152とストアユニット153に制御信号を供給する。
スケジュールリザーバ240の制御ロジックブロックによって供給される特定制御信号はOpエントリ内のフィールドの状態に依存する。詳細には、状態〔3:0〕フィールドは、関連オペレーションの実行の進行を表わす。ロジックの概観からスケジューラ内の全ての状態順序付けは性質上単一サイクルである。状態遷移決定はそのサイクルの間の機械状態に基づいて各サイクルごとに行われる。スケジューラ180の構成はOp実行のパイプライン特性を反映する。スケジューラ180(及び符合する各エントリ)は、その各々がオペレーション又は実行パイプラインの与えられたタイプの特定進行段階に直接関連する多数の別個の、より正確には独立のロジック部に分割することができる。
実行エンジン150のパイプラインステージンクすなわち段階配置構成がここで第3図を参照して記述される。Opが一旦実行エンジン150内にロードされると、そのOpは、3又は4段階パイプラインを通り符号的にそのOpに関連するスケジューラエントリ内のフィールド状態〔3:0〕によって表される4又は5状態の間の遷移を通る。命令フェッチ及び解読は実行エンジン150の前に遂行される。従って、第1のスケジューラに関連するパイプライン段階は発行段階である。第3図は、RegOps及びLdStObsのためのパイプラインステージングを示す。
スケジューラ180は、発行段階及びオペランドフェッチ段階330及び340の間実行パイプライン上に基本的な制御を加える。発行段階330内及びオペランドフェッチ段階340内の処理は段階ごとに2個のフェーズに分割することができ、各フェーズは、公式的には半クロックサイクルを占める。発行段階330は、発行選択フェーズとブロードキャストフェーズを含み、一方オペランドフェッチ段階340は、オペランド選択フェーズとオペランド送りフェーズを含む。
発行段階
発行段階330の発行選択フェーズ330.1の間に於いて、スケジューラ180は、ロードユニット152、ストアユニット153,レジスタユニットX154、及びレジスタユニットY155に関連したパイプラインに入れるための次のOpsを選択する(4つのOp選択が一時に生起する)。発行段階330のブロードキャストフェーズ330.2の間に於いて、各選択されたOpのためのレジスタオペランドの各々に関する情報が全てのスケジューラエントリ及び外部ロジック(レジスタファイル190及び実行ユニットを含む)に同報的に送られる。このようにして、ブロードキャストフェーズ330.2は、スケジューラ180のデスティネーション値フィールド250の1つ又はレジスタフアイル190に存在するオペランド値又は結果バス272に生成する結果に符合するオペランド値を実行ユニット(例えばロードユニット152、ストアユニット153又はレジスタユニット154と155)の1つに位置づけるように設定する。
オペランドフェッチ段階
オペランドフェッチ段階340のオペランド選択フェーズ340.1の間に於いてスケジューラ180は、8までのオペランド値(4Ops*2オペランド/Op)を位置づけ、そして各オペランド値の状態、すなわち指定されたソースからの有効値が実際に利用可能であるかどうかを決定する。この情報に基づいてスケジューラ180は、オペランドフェッチ段階0(段階340)のどのOpsがオペランド送りフェーズに続いて例えば段階1(段階350)であるそれらの各々の実行パイプ内に進むかを決定する。進めることの決定は、各Opのために独立して行われ、オペレーションが実際に実行される順序がオペランド依存性によって拘束されることのみが必要である。そのようなデータ依存性が無い場合には異なる実行ユニットに発行するOpsは一般的に他の実行ユニットに割り当てられたこれらのOpsに関する任意の順序にてそれらの各々のパイプラインを通って処理される。この一般的ルールに対する1つの例外はロード及びストアの個別的指定(すなわちLdOpsとStOps)を含みこれは以下に詳細に説明される。
LdStOp実行段階
第1の2個のスケジューラ関連段階であるオペランド発行段階330とオペランドフェッチ段階340は、RegOps及びLdStOpsに共通である。後続段階は、実行段階である。RegOpsは、全てのRegOpsが単一サイクルにて実行するので単一実行段階350で更に、一旦RegOpが実行段階に入るとそれは常に支障なく完了し、そのクロックサイクルの終わりに於いて段階350を出る。一方LdStOpsは、2個の実行段階352及び360をこの間に於いてアドレス計算、区分及びページ変換(及び記憶保護チェック)並びに(LdOpsの場合に)データキャッシュアクセスの全てが行われる。RegOpsとは異なり、LdStOpsは、任意の長さの時間に亘って段階360又は370のいずれかに停止せしめることができる。この停止の大部分は、第2の段階370に於いてである。最も共通的には段階370の停止は、データキャッシュ170の失敗、データTLB171の欠落及びページフォールトから結果する。段階360での停止は、メモリ引用の非整合から結果しまた完了へと進まないLdStOpによって占拠されブロックされた段階370から結果する。
オペランドフェッチ段階340のオペランド送りフェーズ340.2の間において、スケジューラ180は指定されたソースからのオペランド値を第2図においてバス271と272として一括して示されるオペランドバス及び/または結果バスを介してロードユニット152、ストアユニット153、レジスタユニットX154及びレジスタユニットY155のような実行ユニットへ転送する。例示的実施例は9個のオペランドバス271を含みそのうち8個は段階0でのオペレーションのためのオペランド値を提供する。例示的実施例においてはまた、値が有効であるか否かに関わりなくオペランド転送が生じ、これによって制御ロジックが単純化される。オペランド値が無効の場合には、スケジューラ180が関連するオペレーションを段階1へ進めないのでこれは各実行ユニットによって無視される。RegOpsのための即値は上述のレジスタオペランドを送る機構の一部として処理される。そのような場合、即値はそのOpに関連したスケジューラ180エントリのデスティネーション値フィールド250の特定の1つから直接送られる。
オペランド送りフェーズ340.2の間において変位値もまた変位バス189.4を介してロードユニット152とストアユニット153(各ユニットに独立値)に転送される。これらの変位値は32ビット値であり常にスケジューラ180のエントリから来る。ソースエントリの選択はオペランド選択フェーズ340.1の間に生起する。LdOpまたはStOpが段階1に入った場合にはロードユニット152とストアユニット153が関連する変位値及びオペランド値をラッチする。
スケジューラ180はアドレスオペランドと変位を提供するために(上述したように)4フェーズ制御機構を実施するが、StOpsはアドレスオペランド及び変位値に加えるにストアデータオペランドを必要とする。スケジューラ180はStOpのためのストアデータを得るために4フェーズプロセスを遂行する。StOpデータを取得するプロセスは上述したものと類似するが、そのストアデータは実行段階2(370)の間に得られる。ストアデータを提供するプロセスはStOpの段階1及び2に同期され、実行段階1においてStOpを識別する選択フェーズ390.1、データオペランドのソースを記述する情報を伝送するブロードキャストフェーズ390.2、データオペランド選択フェーズ390.3及びデータオペランド送りフェーズ390.4を含む。ストアデータはStOp実行により並列に取り出され、実際のデータ値はStOp処理の完了の際に取得されストアキュー159に提供される。有効ストアデータ値が利用できない場合にはStOpが段階2に停止される。
ロード/ストア実行順序付けの制約
ある程度の実行順序付けが、(レジスタのリネームを用いてスケジューラ180によって回避される、アーキテクチャのレジスタに対して希に発生する競合とは異なる)真のデータ依存性を示すOps間で継続されなければならないのと同様に、実行順序付けは同じメモリの場所から読み出される(又は書き込まれる)LdOpsとStOpsとの間でも継続されなければならない。
一般に、ロード及びストアはお互いに対してOUT−OF−ORDER実行しうるが、メモリの同じ場所に新しいロードと古いストアがアクセスする場合は、古いストアは新しいロードのためのデータを供給すべきである。(即ち、新しいロードは古いストアを待機すべきである)。このような場合、ストアデータはデータキャッシュ170により新しいロードに供給される。同様に、新しいストアがメモリの同じ場所に書き込みを許可される前に、古いロードが完了しなくてはならない。このような場合、古いストアは待機しなくてはならない。スケジューラ180へのコントロールロジックとロード−ストアユニット152、153との組み合わせにより、このようなロード−ストア順序付けの制約が強制されている。
ロード−ストア順序付けコントロール
オペレーション(及びオペランドフェッチに関係するスケジューラロジックに加えて、スケジューラ180のエントリは、ロード−ストアOUT−OF−ORDER実行コントロールを提供するロード−ストア順序付けロジック234を有する。ロード−ストア順序付けロジック234の2つの部分は、それぞれロードユニット152及びストアユニット153に関係し、ロード順序付けロジック434a及びストア順序付けロジック434bとして第4図に示されている。各実行ユニットにおけるロード停止ロジック403及びストア停止ロジック413と共に、ロード−ストア順序付けロジック234はロード−ストア順序付け制約を強制する。
ロード停止ロジック
実例としてロードユニット152に焦点を合わせると、ロード停止ロジック403はロードユニット152の段階2(LU2 402)におけるLdOpより古い様々なパイプライン処理段階におけるStOpsの存在をチェックする。特に、ロード停止ロジック403は、段階0、段階1(SU1 411)、及び段階2(SU2 412)、即ち第3図の段階340、352、及び360における古いStOpsの存在をチェックする。3つの信号(SC_SU2OLDER,SC_SU1OLDER及びSC_SU0OLDER)は、ロード順序付けロジック434aによりロード停止ロジック403に供給され、段階2、段階1、及び段階0それぞれにおける古いStOpの損残を信号化している。より正確にいえば、SC_SUOLDERは、実行段階1及び2より早い処理の段階(例えばオペランドフェッチ段階0 340又は発行段階330)における古いStOpの存在を表示する。ロード停止ロジック403は、ロードユニット152の段階2(LU2 402)におけるLdOpに対する部分的なメモリアドレスを受け取り、ここに記述した条件のもと、LU2 402に対する停止信号(LU2_Hold)を選択的に供給することも行う。
段階0(又は初期の段階)での古いStOpによりロード停止ロジック403が、ロードユニット152の段階2における現在LdOpを無条件に停止させる。一方、段階2又は段階1における古いStOpは、段階2におけるLdOpに対するメモリアドレスと古いStOpとの間の一致が存在するときに現在LdOpを停止させる。以下のRTLはロード停止ロジック403のデザイン及びオペレーションを記述したものである。
ロード停止ロジック403はLU2 402にLU2_Hold信号を供給し、上述の部分的アドレス一致の組み合わせのいずれか(AddrMatch1又はAddrMatch2)及びスケジューラ108からの相対的古さ指示信号(SC_SU2OLDER,SC_SU1OLDER及びSC_SU0OLDER)が存在するときに、段階2のLdOpの実行を抑止する。段階1におけるStOpに対してリニアアドレスがまだ計算されてないことから、段階2における新しいLdOpは古い段階0のStOpが終わるのを無条件に待機することになる。古いStOpが段階1及び2に進んだとき、部分的アドレス不一致によって、新しいLdOpと古いStOpとのOUT−OF−ORDER競合により順序付け条件または制約が破られないことが確実となり、ロード停止ロジック403はLU2_Hold式に従って停止を解除する。
ここに記述された例では、部分的アドレスマッチオペレーションは、部分的に一致するLdOp及びStOpのためのリニアアドレスの下側部分に基づいて実行される。部分的マッチは、アドレスマッチ回路のクリティカルパスインパクトとスピードとのバランスをとりつつ、偽のマッチの数を制限するに十分な大きさのビットセットを選択するように設計される。この実施例においては、部分リニアアドレスマッチが各リニアアドレスの下側ビット(即ちLinAddr(9,3),SU2_PageOffset(9,3)及びSU1_LinAddr(9,3))に基づいており、所望の一致速度と許容範囲内の誤り一致程度とのバランスをとっているが、別の実施例では、より多い又はより少ないアドレスビット数のマッチングがとられ、ベースアドレス、論理アドレス、リニアアドレス、又は物理的アドレスに基づいてマッチ判定オペレーションを実行し得る。
8ビットバイトマーク(ByteMark,SU1_Bytemark及びSU2_ByteMark)も部分的アドレスマッチに含められる。これらのバイトマークは所定のLdOp又はStOpが対応する特定のバイトを指定する対応するアドレスビット0、1及び2の拡張された可変部であるが、これはこの実施例(x86プロセッサアーキテクチャに適合したプロセッサインプリメンテーション)では、1バイト、2バイト、4バイト、及び8バイトのロード及びストアが全てサポートされているからである。この実施例では、これらのバイトマークが比較されて、オーバーラップを同定し、従ってLdOpが読み出す特定のバイトとStOpが書き込む特定のバイトとの間の依存性が同定される。
いくつかの追加のターム(term)がロード停止ロジック403を記述するRTLに含められる。例えば、ロード停止ロジック403は、非投機的LdOp、即ちDTB_InhSptivLdに示されているように古いメモリトランザクションにおいて読み出されることを許可されていないLdOpの実行も抑止する。非投機的LdOpsは、単に古いStOpsだけでなく全ての古いLdStOpに従った厳格な順序付けを維持する。非投機的ロードの場合は、ロード停止ロジック403が、古いメモリトランザクションが未完了の(ペンディングされていない)状態を確保する。スケジューラ180が互いの順序付けに従ってロードを発行することから、データキャッシュ170にコミット(commit)された古いStOpsが存在しない状態が確保されることになる。スケジューラ180は、データキャッシュ170へのストアキュー159を通してStOpsのステータスを追跡し、データキャッシュ170にまだコミットされていない古いStOpsが存在しないことを示すSC_LdOldest信号を供給する。
第4図によれば、ロード停止ロジック403がロード順序付けロジック434aからロードユニット152のLU2402におけるLdOpの相対的古さの指示信号を受け取る。特に、ロード停止ロジック403はロード順序付けロジック434aの各スキャンチェーン(SU2オルダスキャンチェーン434a.1、SU1オルダスキャンチェーン434a.2、及び
SU0オルダスキャンチェーン434a.3)からSU_SU2OLDER指示信号、SU_SU1OLDER指示信号、及びSU_SU0OLDER指示信号を受け取る。ロード停止ロジック403はストアユニット153のSU1段階411及びSU2段階412におけるStOpsに対する部分的アドレス信号、及びロードユニット152のLU2402におけるLdOpに対する部分的アドレス信号も受け取る。これらの入力に基づいて、ロード停止ロジック403は上述のRTL記述に従って、LU2402におけるLdOp(及び後続のLdOps)を機能停止する停止信号(LU2_Hold)を選択的にアサートする。
LdOps(Ops、オペランド、変位値、及びコントロール信号を含む)は、共同バス189として示されているバス及びラインを介してLU1401に達する。LU2402におけるLdOpsによりアドレス指定されたメモリロケーションは、LU2_Holdがアンアサート即ちアクティブ状態から解放され、共同バス189の結果バス189.2(図示せず)を介して実行ユニット及びスケジューラ180に供給されたとき、データキャッシュ170を介してアクセスされる。ロードユニット152の両段階(LU1 401及びLU2 402)は、データTLB171及びメモリ階層の様々なレベルに存在する(L1データキャッシュ170、L2キャッシュ110、主メモリ等)他のメモリ管理構造とやりとりし、仮想アドレス(又はリニアアドレス)を物理的アドレスに変換する。
当業者は上述のRTLに適合するロード停止ロジック403の様々なインプリメンテーションを理解することができるであろう。ロード停止ロジック403は適切なものであれば、どのようなインプリメンテーションでもよい。第5図には、ロード停止ロジックの組み合わせ論理回路としての実現形態の一例を示したものである。
ストア停止ロジック
ストアユニット153は類似した形態のオペレーション停止ロジック、即ち、ストアユニット153の段階2(SU2 412)におけるStOpより古い様々なパイプライン処理の段階におけるLdOpsの存在をチェックするストア停止ロジック413を有する。ストア停止ロジック413のデザインはロード停止ロジック403に類似しているが、両者は対称的ではない。ストア停止ロジック413は段階1(LU1 401)及び段階2(LU2 402)、即ち第3図の段階352及び360における古いLdOpsの存在をチェックする。ストア順序付けロジック434bによりストア停止ロジック413に供給される2つの信号(SC_LU2OLDER及びSC_LU1OLDER)は、段階2及び1におけるそれぞれの古いLdOpの存在を示す信号である。より正確に言えば、SC_LU1OLDERは、実行段階2より早い処理の段階(例えば実行段階1352、オペランドフェッチ段階0340、又は発行段階330)における古いLdOPの存在を表示する。ストア停止ロジック413はストアユニット153の段階2(SU2412)におけるStOpに対する部分的メモリアドレスを受け取り、上述の条件のもと停止信号(SU2_Hold)を選択的にSU2 412にアサートする。
段階1(又はより早い段階)における古いLdOpによりストア停止ロジック413が、無条件にストアユニット153の段階2における現在StOpを停止する。一方、段階2における古いLdOpは段階2におけるStOpに対するメモリアドレスと古いLdOpとの間の一致がありさえすれば現在StOpを停止する。以下のRTLはストア停止ロジック413のデザイン及びオペレーションを記述したものである。
ストア停止ロジック413は、部分アドレス一致(AddrMatch2)とスケジューラ180からの相対的古さ指示信号(SC_LU2OLDER及びSC_LU1OLDER)との上に指定した組み合わせのいずれかが存在するとき、SU2_Hold信号をSU2 412に供給して、段階2StOpの実行を抑止する。段階2における新しいStOpは古い段階1(又は早い)LdOpを無条件に待機する。古いLdOpが段階2に進むと、部分アドレス不一致が新しいStOpと古いLdOpのOUT−OF−ORDER競合により順序付け制約が破られていないことを確定し、ストア停止ロジック413はSU2_Hold式に従って停止を解放する。
ロード停止ロジック403については、ストア停止ロジック413がStOp及びLdOpsに対するリニアアドレスの下側部分(即ちLinAddr(9,3)及びLU2_PageOffset(9,3))に基づいて部分的アドレスマッチング処理を実行する。バイトマーク(ByteMark及びLU2_ByteMark)も部分的アドレスマッチに含められる。
この実施例においては、ロード停止ロジック403に類似したストア停止ロジック413が、停止を開始(trigger)する条件の組を過剰に含んでいる。しかし、ストア停止ロジック413のデザインはロード停止ロジック403よりより過剰に包括的である。例えば、ストア停止ロジック413はアドレスマッチの存在をチェックする古い段階1のLdOpに対する新しい段階2のStOpを停止する。別の実施例では、一層厳格に(又はより厳格度を小さくして)ストア停止ロジック413おける停止か、ストア停止ロジック413の動作そのもの、またはその両方を開始する条件の組を限定している。しかし、この実施例では、ストア停止ロジック413は一般的な命令プロフィールにおいてLdOpsがStOpsに依存していることが多い、又は逆のことが多いという推定に基づいて、停止条件の限定度を緩めている。
第4図を参照すると、ストア停止ロジック413がストア順序付けロジック434bからのストアユニット453のSU2 412におけるLdOpの相対的古さの指示信号を受け取る。特に、ストア停止ロジック413はストア順序付けロジック434bの各スキャンチェーン(LU2オルダスキャンチェーン434b.1及びLU1オルダスキャンチェーン434b.2)からのSC_LU1OLDER及びSC_LU2OLDER指示信号を受け取る。ストア停止ロジック413はロードユニット152のLU2 402段階におけるLdOpsに対する部分的アドレス信号、及びストアユニット153のSU2 412におけるStOpに対する部分的アドレス信号も受け取る。これらの入力に基づいて、ストア停止ロジック413は供述のRTL記述に従ってSU2 412におけるStOp(及び後続のStOps)を機能停止する停止信号(SU2_Hold)を選択的にアサートする。
StOps(Ops、オペランド、変位値、及びコントロール信号を含む)は、共同バス189として図示されている各バス及びラインを介してSU1 411に達する。SU2 412におけるStOpsに対するメモリアドレス及びストアオペランドは、SU2_Holdが逆アサート(又は解放)されたときストアキュー159に供給される。次いで、ストアキュー159はストアオペランドをデータキャッシュ170を介してアドレス空間に書き込む。ストアユニット153の両段階(SU1 411及びSU2 412)はデータTLB171及びメモリ階層の様々なレベル(L1データキャッシュ170、L2キャッシュ110、主メモリ等)に存在する他のメモリ管理構造とやりとりし、仮想アドレス(又はリニアアドレス)を物理的アドレスに変換する。
当業者は上述のRTLに適合するストア停止ロジック413の様々なインプリメンテーションを理解することができるであろう。ストア停止ロジック413は適切なものであれば、どのようなインプリメンテーションでもよい。第6図には、ストア停止ロジックの組み合わせ論理回路としての実施形態の一例を示したものである。
スキャンチェーンを含むスケジューラロジック
スケジューラ180はLdOpsとStOpsとの間の十分な実行順序付けを維持するためのサボートも提供する。この実施例においては、このサポートはロード停止ロジック403及びストア停止ロジック413へ相対的古さ指示信号を供給するスキャンチェーンの形態である。上述のように、順序付けはロード及びストアパイプライン処理の段階2(即ちLU2402及びSU2412)においてオペレーションを停止することにより維持される。実行順序付けは、メモリ位置を参照するStOpsに対して維持される。この実施例では、実際にメモリをアドレス指定しないLEAStOps(ロード実行アドレス)に対しては順序付けは強制されていないが、誤りである可能性のあるアドレスを発生するCDA及びCIAStOps(チェックデータ実行アドレス及びチェック命令実行アドレス)は順序付けスキームの中に含められ、回路デザインが単純化されている。LdOpsの中に順序付けスキームから除外されているものはないが、これは全てのLdOpstがメモリを参照するからである。別の実施例には、LEA、CDA、及びCIAStOpsのようなOpsを適切なものとして含むものか、除外しているものかの何れかの場合がある。
第2図に戻ると、スケジューラ180内のロード−ストア順序付けロジック234は、ロード実行ユニット及びストア実行ユニットのそれぞれの段階2における特定のLdOps及びStOpsに関してLdStOpsの相対古さ指示信号を供給する。ロード−ストア順序付けロジック234は、スケジューリングリザーバ240における各Opエントリ(例えばOpエントリ240.1)のType[2:0]フィールド241及びState[3:0]フィールド242にアクセスし、相対ストア古さ指示信号(例えばSC_LU2OLDER、及びSC_LU1OLDER、及びSC_LU0OLDER)をロードユニット152に図面において189.5として示されている共通のラインを介して供給し、相対ロード古さ指示信号(例えばSC_LU2OLDER、及びSC_LU1OLDER)を同様に共通のラインを介してストアユニット153に供給する。
第4図には、ロード/ストア順序付けロジック234がロード順序付けロジック434a及びストア順序付けロジック434bの一部分として示されている。LdOpsの場合にはロード順序付けロジック434aが、SU2 412に於けるStOpsがあればそれに関連して、SU1 411に於けるStOpsがあればそれに関連して、また処理の早い段階に於ける他のStOpsに関連して、LU1 401に於けるLdOpの相対的古さを決定する。StOpsについては、ストア順序付けロジック434bが、LU2 402に於けるLdOpがあればそれに関連して、また処理の早い段階に於ける他のLdOpsに関連してSU1 411に於けるSTOPの相対的古さを決定する。
第4図には、3要素スキャンチェーンSU、即ちオルダスキャンチェーン434a.1、SU1オルダスキャンチェーン434a.2、及びSU0オルダスキャンチェーン434a.3を含むロード順序付けロジック434aが示されている。各要素スキャンチェーンは、スケジューリングリザバ240に於けるOpエントリのType[2:0]フィールド241及びState[3:0]フィールド242(図示せず)に基づいて各相対的古さ指示信号を供給する。SU2オルダスキャンチェーン434a.1は、SC_SU2OLDERを供給し、SU1オルダスキャンチェーン434a.2は、SC_SU1OLDERを供給し、SU0オルダスキャンチェーン434a.3は、SC_SU0OLDERを供給する。
ストア順序付けロジック434bのデザインは、ロード順序付けロジック434aに類似しているが対称的ではない。特に、ストア順序付けロジック434bは成分スキャンチェーンLU2、オルダスキャンチェーン434b.1及びLU1オルダスキャンチェーン434b.2を含む。ノード順序付けロジック434aの場合と同様にストア順序付けロジック434bの各成文スキャンチェーンは、Type[2:0]フィールド241及びState[3:0]フィールド242を用いて、各相対的古さ指示信号を供給する。LU2オルダスキャンチェーン434b.1は、SC_SU2OLDERを供給し、LU1オルダスキャンチェーン434b.2は、SC_LU1OLDERを供給する。説明のため各スキャンチェーンは独立したスキャンチェーンとして示されているが、当業者は、ロード順序付けロジック434a及びストア順序付けロジック434bがロジックを共有し得る、例えばType[2:0]及びState[3:0]検出回路を各成分スキャンチェーンの後で共有し得るということを理解できよう。
この好適実施例では、ロード順序付けロジック434a及びストア順序付けロジック434bが(ルックアヘッドでなく)階層的設計のスキャンロジックを有しており、これについて第4図〜第10図を参照しつつここに説明する。LdStOpのための段階2の第1フェーズの間、ロード順序付けロジック434aまたはストア順序付けロジック434b、若しくはその双方のスキャンロジックは、スケジューラ180の古さで順序づけられたOpエントリ240の中から互いに反対の型の古いLdStOpをスキャンする。即ちロード順序付けロジック434aは、古いStOpsをスキャンし、ストア順序付けロジック434bは古いLdStOpをスキャンする。この実施例では、ロード順序付けロジック434aのスキャンロジックの3つのインスタンスのそれぞれ、及びストア順序付けロジック434bのスキャンロジックの2つのインスタンスのそれぞれが、古さで順序づけられたOpエントリ240のグループ内のスキャンと、及びグループ群の一括スキャンの双方を行うための階層的に編成されたスキャンロジックを含む。第7図〜第10図には、それぞれ3つのOpエントリからなる8つのグループに編成された24個のOpエントリを有するスケジューラの実施例のスキャンロジックが示されている。しかし、当業者は以下の説明に基づいて、異なる数のOpエントリ及び異なる数のグループから成る編成の実施例を理解することもできよう。
240pエントリ/8グループのスケジューラ180の実施例のためのスキャンロジックの例の一般的な構造について第7図を参照しつつここに説明する。存在指示ロジック(presence indication logic)710のインスタンスは、インプリメントされた特定のスキャンロジック(即ちSU2オルダスキャンロジック434a.1、SU1オルダスキャンロジック434a.2、SU0オルダスキャンロジック434a.3、LU2オルダスキャンロジック434b.1、又はLU1オルダスキャンロジック434b.2)が関係するType[2:0]及びState[3:0]の組み合わせを検出する。例えば、第7図のようにインプリメントされたSU1オルダスキャンロジック434a.2のための存在指示ロジック710は、対応するOpエントリが段階1StOpを含んでいるか否かを検出する。存在指示ロジック710の23個のインスタンスのそれぞれは、グループ内処理ロジック740か、グループ群一括処理ロジック、若しくはその両方(即ち第1レベルグループ群一括処理ロジック760、第2レベルグループ群一括処理ロジック750、及び第3レベルグループ群一括処理ロジック730の何れか、若しくはその全て)が使用するためのスキャンロジックの特定のインスタンスに適切な対応する存在指示信号(即ちP[1]、p[2]、...p[23])を供給する。第7図の実施例では、P[0]が使用されない。
選択指示ロジック720の対応するインスタンスも、Type[2:0]フィールド値とState[3:0]フィールド値の組み合わせを検出する。しかし、選択指示ロジック720のインスタンスの場合、検出されたType[2:0]及びState[3:0]フィールド値は、ストア順序付けロジック434bのスキャンロジックインスタンスのための段階2StOp(即ちSU2412におけるStOp)のスキャンロジックインスタンス、及びロード順序付けロジック434aのスキャンロジックインスタンスのための段階2LdOp(即ちLU2402におけるLdOp)を表す。選択指示ロジック720の23個のインスタンスのそれぞれは、グループ内ロジック740とグループ群一括処理ロジックの何れか、若しくはその両方(即ち第1レベルグループ群一括処理ロジック760、第2レベルグループ群一括処理ロジック750、及び第2レベルグループ群一括処理ロジック730の何れか、若しくはその全部)が使用するための特定のスキャンロジックインスタンスのロード又はストア順序付け機能に適した対応する選択指示信号
を供給する。第7図の実施例では、SEL[23]は使用されない。
グループ内処理ロジック740は、それぞれが、特定のスキャンロジックの存在指示ロジック710によって検出されたType[2:0]及びState[3:0]の組み合わせに一致し、同じグループ内の選択されたOpエントリより古いOpの各Opグループ内に存在していることを示す指示信号を供給する。スケジューリングリザーバ240のOpエントリが関係する各選択指示信号
は、古いOpエントリのスキャンする場合の基礎となる選択されたOpエントリを示す。ここで説明する、ロード順序付けロジック434a及びストア順序付けロジック434bのスキャンロジックを実現する実施例では、1つのOpエントリ選択指示信号が、第7図のように実現されたスキャンロジックの各インスタンスに供給される。そのように供給された1つのOpエントリ選択は、それがあれば、ロードユニット152又はストアユニット153の段階2におけるLdStOpに対応している。即ちSC_SuxOLDERスキャンロジックのための段階2LdOpに対応し、且つSC_SUxOLDERスキャンロジックのための段階2StOpに対応している。別の実施例では、Opエントリ選択指示ロジックに適切な変更を加えて、異なる実行段階における異なる型のOpを選択し、更に、その様にして表示された多数のOpエントリに対して、相対的な古さ(又は他の優先順位で)の比較のための多数の選択指示信号を供給し得る。
第8図の実施例では、グループ内処理ロジック740が、6入力OR−NAND複合ゲートによって実現された各グループのためのロジック(例示的には、within−grp_2ロジック842)を含む。勿論、当業者は、特定のOpエントリグループ内で選択されたOpエントリ及び古いオペレーション検出を示す指示信号を供給するための他の様々な適切なロジック構成を考えることができよう。各グループに対するグループ内指示信号(即ちSUM[0]、SUM[1]、...SUM[7])は、結合処理ロジック770に部分的に結合され、そのいくつかのゲートは第7図に示されている。
第9図に示すのは、第1レベルグループ群一括処理ロジック760と第2レベルグループ群一括処理ロジック750共通の重複ロジック部分である。第1レベルグループ群一括処理ロジック760は、Opエントリの第1グループにおける選択されたOpエントリと、隣接する古いOpエントリのグループにおける古いオペレーション検出とを示す(例えばgrp_0における選択されたOpエントリとgrp_1における古いOp検出や、grp_2における選択されたOpエントリとgrp_3における古いOp検出等を示す)指示信号(S0P1_S2P3及びS4P5_S6P7)を供給する。第9図の実施例では、第1レベルグループ群一括処理ロジック760が、NANDゲートの第1段階とANDゲートの第2段階の機能性によりインプリメントされている。ANDゲートの機能性は、4入力複合AND−NORゲート772及び773と結合処理ロジック770が関係するNOR機能により与えられている。勿論、当業者は、Opエントリの第1グループにおける選択されたOpエントリとOpエントリの第2グループにおける古いオペレーション検出を示す指示信号を供給するための他の様々な適切なロジック構成を考えることができよう。隣接する2グループの組のそれぞれに対する第1レベルグループ群一括処理指示信号は、部分的に結合処理ロジック770に結合され、そのいくつかのゲートは第9図に示されている。
第2レベルグループ群一括処理ロジック750は、2つの隣接するOpエントリのグループの何れかにおける選択されたOpエントリと、2つの隣接する古いOpエントリのグループの何れかにおける古いオペレーション検出とを示す(例えばgrp_0かgrp_1の何れかにおける選択されたOpエントリとgrp_2かgrp_3における古いOp検出や、grp_4かgrp_5の何れかにおける選択されたOpエントリとgrp_6かgrp_7における古いOp検出等を示す)指示信号(S01P23及びS45P67)を供給する。第9図の実施例では、第2レベルグループ群一括処理ロジック750が、NANDゲートの第1段階、4入力複合OR−NANDゲート(951及び952)の第2段階、及びインバータの第3段階によって実現されている。勿論、当業者は、2つのOpエントリのグループの何れかにおける選択されたOpエントリと2つの古いOpエントリのグループの何れかにおける古いオペレーション検出とを示す指示信号を供給するための他の様々な適切なロジック構成を考えることができよう。
第10図に示すのは、初めの4つのOpエントリのグループの1つにある選択されたOpエントリと他の4つの古いOpエントリのグループの任意のグループにおける古いオペレーション検出とを示す(即ち、grp_0、grp_1、grp_2、又はgrp_3における選択されたOpエントリとgrp_4、grp_5、grp_6、又はgrp_7における古いOp検出とを示す)即値指示信号(Sgrp_1023及びPgrp_4567)を供給する第3レベルグループ一括処理ロジック730である。第7図及び第10図の実施例では、Sgrp_1023及びPgrp_4567即値指示信号は、NANDゲートの第1段階及びORゲートの第2段階によって供給され、Sgrp_1023及びPgrp_4567の結合即値指示信号は、3入力の複合AND−NORゲート771のAND機能性により供給される。このようにして、第3レベルグループ群一括処理ロジックの機能性及び結合処理ロジック機能性の一部は、複合AND−NORゲート771により与えられる。勿論、当業者は、4つのOpエントリのグループの何れかにおける選択されたOpエントリと他の4つの古いOpエントリグループの1つにおける古いオペレーション検出とを示す指示信号を供給する様々な他の適切なロジック構成を考えることができよう。
第7図を再び参照されたい。ここで結合処理ロジック770は、グループ内処理ロジック740及びグループ群一括処理ロジック(即ち第1レベルグループ群一括処理ロジック760、第2レベルグループ群一括処理ロジック750、及び第3レベルグループ群一括処理ロジック730)からの指示信号を結合して、特定の実現されたスキャンロジックのための相対的古さ指示信号を供給する。結合処理ロジック770のORゲート、NORゲート、及びNANDゲート段階を総合することにより、ORツリーのド・モルガン等価論理(DeMorgan equivalent)が提供される。勿論、当業者は、グループ内処理及びグループ群一括処理指示信号を結合して、複合相対古さ指示信号を供給するための他の様々な適切なロジック構成を考えることができよう。有利な点は、結合処理ロジック770のロジック設計が、グループ内処理ロジック740、第1レベルグループ群一括処理ロジック760、第2レベルグループ群一括処理ロジック750、及び第3レベルグループ群一括処理ロジック730をまとめて考えたとき、どのような経路に沿ってもインバータゲート遅延が5未満で済む点である。
Opエントリの数がこれより多い場合や少ない場合も、同様にゲート遅延の数が少なくて済むという利点が得られる。例えば、当業者は、2x、4x等のOpエントリカウントが、Opエントリカウント増加の二進法で示す大きさの各オーダーに対して追加のインバータゲート遅延を与える似たようなグループ内処理ロジック、グループ群一括処理ロジック、及び結合処理ロジックでサポートされ得ることを理解されよう。Opエントリの数が少ない場合には、同様にインバータゲート遅延が少なくなり得る。より一般的には、本発明による、3つのグループとしてスキャンされるスキャンロジックのインプリメンテーションで、Opエントリの数が多いものや少ないもの(例えばOpエントリの数が3、6、12、48、96、...)では、インバータゲート遅延がLog2(N/3)+2となる。ここでNはOpエントリの数である。このようなスキャンロジックインプリメンテーションの実施例は、階層的に編成されたグループ群一括処理ロジックのLog2(N/3)個の連続したレベルを有する。
ここに開示した24個のOpエントリの実施例では、3つのメンバからなるグループが有利である。というのは、3の倍数の全ての数は24個のOpエントリエントリにマップでき、ロジックセルライブラリのスーツ(suite)が利用可能だからである。にもかかわらず、より多い或いは少ないグループの数も、グループ群一括処理階層の各レベルにおいて適するものである。ゲート及び複合ゲートの適切な選択は当業者には明らかであろう。更に、ここでは各グループが同一の大きさのものとして示されており、グループ群一括処理ロジックが、グループ群一括処理階層の各連続したレベルでOpエントリ範囲が倍増してゆく形で示されているが、グループの大きさが一様でなく、グループ群一括処理階層の連続した各レベルにおいてOpエントリの範囲の増加度が異なっている別の実施例も可能である。スキャンロジックに適切な改変を加えることは、当業者には明らかであろう。
当業者には明らかなように、グループ内処理ロジック及びグループ群一括処理ロジック(例えばグループ群一括処理ロジック740、第1レベルグループ群一括処理ロジック760、第2レベルグループ群一括処理ロジック750、及び第3レベルグループ群一括処理ロジック730)、及び結合処理ロジック770の間の境界は、ある程度は任意であり。様々な境界の定義が可能である。更に、あるロジックの機能性が、異なる図面において示されたロジックブロックの間で共有され得る。例えば、第9図及び第10図の双方に示された、グループ選択指示信号(例えばSELgrp[0]、SELgrp[1]、SELgrp[2]、及びSELgrp[3])及びグループ存在指示信号(例えばPgrp[4]、Pgrp[5]、Pgrp[6]、及びPgrp[7])に対するロジックは、第1レベルグループ群一括処理ロジック760、第2レベルグループ群一括処理ロジック750、及び第3レベルグループ群一括処理ロジック730の間で共有され得る。
スキャンロジックの1個のインスタンスに焦点を当てて説明すると、第7図〜第10図に示すように実現されたSU2オルダスキャンロジック434a.1は、段階2StOpが関係するOpエントリ240のOpエントリの存在指示信号を供給するように構成された存在指示ロジック710を含む。選択指示信号は、段階2LdOp(即ちLU2402におけるLdOp)が関係するOpエントリ240の特定のOpエントリを表示する選択指示ロジック720のインスタンスにより供給される。存在指示信号及び選択指示信号に基づき、グループ内処理ロジック740は、1つのグループが関係するOpエントリの1つにおける段階2LdOp、及び同じグループの古いOpエントリにおける段階2StOpの存在を示すグループ内指示信号を供給する。第2レベルグループ群一括処理ロジック760は、特定のグループが関係するOpエントリの1つにおける段階2LdOpと、隣接する古いグループが関係するOpエントリにおける段階2StOpの存在とを示す第1レベルグループ群一括処理指示信号を供給する。それと同様に、第2レベルグループ群一括処理ロジック750は、一対の隣接するグループが関係するOpエントリの1つにおける段階2LdOpと、一対の隣接する古いグループが関係するOpエントリにおける段階2StOpの存在とを示す第2レベルグループ群一括処理指示信号を供給する。最後に、第3レベルグループ群一括処理ロジック730は、4つの隣接するグループの組が関係するOpエントリの1つにおける段階2LdOpと、4つの隣接する古いグループの組が関係するOpエントリの1つにおける段階LdOpと、隣接する4つの古いグループの組が関係するOpエントリにおける段階2StOpの存在とを示す第3レベルグループ群一括処理指示信号を供給する。古い段階2StOp指示信号は、グループ内処理ロジック又はグループ群一括処理ロジックの任意のものが対応する古い段階2StOp指示信号を供給する場合、結合処理ロジック770から(SC_SU2Older信号として)供給される。
ロード順序付けロジック434aの残りのスキャンロジックの設計及び動作は類似している。例えば、SU1オルダスキャンロジック434a.2のグループ内処理ロジック及びグループ群一括処理ロジックは、スケジューラ180のエントリをスキャンし、結合多重化ロジック434a.5は、ロード停止ロジック403にSC_SU1Older信号を供給する。同様に、SU0オルダスキャンロジック434a.3のグループ内処理ロジック及びグループ群一括処理ロジックは、スケジューラ180のエントリをスキャンし、関連する結合処理ロジック434a.6は、ロード停止ロジック403にSC_SU0Older信号を供給する。相対的古さ指示信号(SC_SU2Older、SC_SU1Older、及びSC_SU0Older)がロード停止ロジック403に供給され、そこで5のSUアドレスコンパレータ信号(AddrMatch1及びAddrMatch2)が検証するべきか、より一般的には段階2LdOpを停止するべきか否かを決定する。
ストア順序付けロジック434bに対するスキャンロジックインスタンスは類似している。スキャンロジックの1つのインスタンスに焦点を当てて説明すると、第7図〜第10図に示すように実現されたLU2オルダスキャンロジック434b.1は、段階2LdOpが関係するOpエントリ240のOpエントリにおける存在指示信号を供給するように構成された存在指示ロジック710を含む。選択指示信号は、段階2StOp(即ちSU2412におけるStOp)が関係するOpエントリ240の特定のOpエントリを表示する選択指示ロジック720のインスタンスにより供給される。存在指示信号及び選択指示信号に基づき、グループ内処理ロジック740は、特定のグループが関係するOpエントリの1つにおける段階2StOpと、同じグループの古いOpエントリにおける段階2LdOpの存在とを示すグループ内指示信号を供給する。第1レベルグループ群一括処理ロジック760は、特定のグループが関係するOpエントリの1つにおける段階2StOpと、隣接する古いグループが関係するOpエントリにおける段階2LdOpの存在とを示す第1レベルグループ群一括処理指示信号を供給する。ここから類推されるように、第2レベルグループ群一括処理ロジック750は、一対の隣接するグループが関係するOpエントリの1つにおける段階2StOpと、隣接する一対の古いグループが関係するOpエントリにおける段階2LdOpの存在とを示す第2レベルグループ群一括処理指示信号を供給する。最後に、第3レベルグループ群一括処理ロジック730は、4つの隣接するグループの組が関係するOpエントリの1つにおける段階2StOpと、4つの隣接する古いグループの組が関係するOpエントリにおける段階2LdOpとを示す第3レベルグループ群一括処理指示信号を供給する。古い段階2LdOp指示信号は、グループ内処理ロジック又はグループ群一括処理ロジックの任意のものが対応する古い段階2LdOp指示信号を供給する場合、結合処理ロジック770から(SC_SU2Older信号として)供給される。
ストア順序付けロジック434bのスキャンロジックの残りのインスタンスの設計及び動作は類似している。具体的には、LU2オルダスキャンロジック434b.2のグループ内処理ロジック及びグループ群一括処理ロジックは、スケジューラ180のエントリをスキャンし、結合処理ロジック434b.5が、ストア停止ロジック413にSC_SU1Older信号を供給する。相対的古さ指示信号(SC_SU2Older及びSC_SU1Older)は、ストア停止ロジック413に供給され、そこで、LU段階2アドレスコンパレータ(AddrMatch2)を検証すべきか否か、及び段階2StOpを停止すべきか否かが決定される。
Opエントリレベル存在指示信号P[x]は、エントリのState[3:0]フィールド(特にS1、S2、及びS3ビット)及びType[2:0]フィールド(ST又はLU)に基づいている。LdOpスキャンロジックの3つのインスタンスに対して、STタイプビットがSUビットの代わりに用いられる。これにより論理アドレスを発生するだけのLEAオペレーションが実際にメモリを参照するStOpが区別される。
後続の、Lust2、LUst1、及びLUst0という添え字が付されたOpエントリ方程式は、SU2オルダスキャンロジック434a.1、SU1オルダスキャンロジック434a.2、及びSU0オルダスキャンロジック434a.3として上述のようにそれぞれエミュレートされたスキャンロジックに対するOpエントリxに対応するP[x]タームを表示する。同様に、SUld2及びSUld1という符号が付されたOpエントリ方程式は、LU2オルダスキャンロジック434b.1及びLU1オルダスキャンロジック434b.2として上述のようにエミュレートされたスキャンロジックに対するOpエントリにxに対応するP[x]タームを表示する。
ビットラベルまたはOpエントリ方程式
この実施例に於いては、(S2+S1 SU2_FirstAddrV)及び(S2+S1 LU2_FirstAddrV)タームは、位置合わせされていないメモリアクセスオペレーションの前半を実行する段階1LdStOpsの機能停止を管理するためにOpエントリ方程式を拡張する。
再度第8図を参照すると、SUM_01決定ゲートを含むスキャン及び結合処理ロジック841の実施例が示されている。この実施例の設計は、同様に図示されているSUM_234及びSUM_567決定ゲートの設計に類似している。第1Opクワッドが関係するOpエントリ、即ちgrp_0及びgrp_1のOpエントリ0、1、2、及び3に対するエントリ指示信号の相対的な遅さを取り扱うための実施例では、別のSUM_01決定ロジック841aが好適である。このような別のSUM_01決定ロジック841aは、第12図に示されており、複合ゲート1201、1202、及び1203を含む。有利な点は、代わりのSUM_01決定ロジック841aでは、命令デコーダ140から供給されるOpクワッド0のOpエントリフィールド値によって決まる信号経路におけるインバータゲートの遅れが3で済む点である。特に、代わりSUM_01決定ロジック841aは、Ops0、1、2、及び3のType[2:0]及びState[3:0]フィールド値に応じて信号の為のより短い信号経路を提供し、それらの信号に複合ゲート1201、1202、及び1203のより速い入力を割り当てる。このようにして、Opエントリの到着遅れの影響が低減される。
プロセッサ及びシステムの実例
第1図はこの発明のスーパースケーラプロセッサ実施例を示す。スーパースケーラプロセッサ100は限定命令セット計算(RISC)アーキテクチャを実施する実行エンジン150、命令デコーダ140、キャッシュ、及びメモリサブシステム122に表現されるアドレス空間へのアクセス及びローカルバス(図示しない)上のデバイスへのアクセスを提供するシステムインターフェース120を含む。
スーパースケーラプロセッサ100は、ここに記載の実施例においては別個のデータ及び命令部として構成されたキャッシュを含む。データキャッシュ170及び命令キャッシュ130は、主メモリを含みかつオプションとして例証的にはL2キャッシュである追加的レベルのキャッシュを含むメモリサブシステム122に表されるアドレス空間に(キャッシュ制御ロジック160を介してかつシステムインターフェース120によって)接続される。L2レベルキャッシュへのアクセス、即ちL2キャッシュ制御ロジック及びL2データ部(図示しない)へのアクセスはシステムインターフェース120を介して提供される。代替的には、L2キャッシュ制御ロジックは(L1のための)キャッシュ制御ロジック160とシステムインターフェース120の間に介装することができる。
キャッシュシステム設計は当業界において周知である。特に、分割、ハーバードアーキテクチャ命令及びデータキャッシュ(符号170及び130のような)、並びに多重レベルキャッシュ階層構造を実現する適当な設計がキャッシュ技術分野において周知である。多くの点において、スーバースケーラプロセッサ100のキャッシュサブシステム(即ちデータキャッシュ170、命令キャッシュ130、キャッシュ制御ロジック160、及びオプションであるL2キャッシュ)はそのような適当な設計の何れかである。しかしながら、そのキャッシュ性能からは別個の理由により命令キャッシュ130はプレデコードロジック(図示しない)と一体にされている。そのように一体化されたプレデコードロジックは取り出された命令ストリーム内のx86命令境界を識別し、命令デコーダ140による命令の迅速なデコーディングを促進する。
第1図を再び参照するに、命令シーケンスは実行エンジン150により予想される実行のためにメモリサブシステムから命令キャッシュ130へとロードされる。第1図に示されるプロセッサ100の実施例に従い、命令キャッシュ130内の命令はx86プロセッサアーキテクチャに適合するプロセッサによって実施されるx86命令のような複合命令セットから選択されたCISC命令である。命令デコーダ140は命令キャッシュ130から受け取ったCISC命令を実行エンジン150での実行のためのオペレーションへと変換する。第1図の実施例において、これらのオペレーションはRISC類似オペレーション(以下「OPs」と言う)であり、命令キャッシュ130からの単一x86命令は実行エンジン150のための1以上のOPsに復号する。個々のOPsはレジスタオペレーション(RegOps)、ロード−ストアオペレーション(LdStOps)、ロード即値オペレーション(LIMMOps)、特殊オペレーション(SpecOps)、及び浮動小数点オペレーション(FpOps)を含む数種の型のグループの1つに分かれる。代替的実施例では異なる命令セットを解読して実行のために異なるオペレーション形式を供給してもよい。
命令デコーダ140は分岐予測ロジック143と共にハードウェア変換部MacDec141及びROMベース変換部142である2個の命令変換部を含む。最も共通的なx86命令はハードウェア変換部141内に含まれる多重並列ハードウェアデコーダを使用する1乃至4のOPsの短いシーケンスに変換される。ハードウェア変換部141は命令キャッシュ130から受け取ったこれらの共通的なx86命令を短いシーケンスに解読しこれは次にスケジューラ180に供給される。あまり共通的でないx86命令及び4OPsよりも長いOPシーケンスに変換するこれらのx86命令は変換されるべき特定x86命令に符合したOPsの変換シーケンスを(ROMから)取り出すROMベース変換部142によって変換される。何れかのソースからの変換されたOPシーケンスは、ハードウェアデコーダによって生成されたかROMから取り出されたかに係わりなく、実行エンジン150による実行のためにスケジューラ180に供給される。
第1図を再度参照するに、実行エンジン150はスケジューラ180、レジスタファイル190及びスケジューラ180によってディスパッチされたOPsを受取り実行する多重実行ユニットを含む。代替的実施例においては実行ユニットのセットに追加しまたはこれから差し引くことが可能であるが、第1図の実施例においては実行エンジン150はロードユニット152、ストアユニット153、レジスタユニット154及び155、浮動小数点ユニット156、マルチメディアユニット157、並びに分岐ユニット158である7つの実行ユニットを含む。例示的実施例においては、浮動小数点ユニット156とマルチメディアユニット157を省略する。実行エンジン150はまたストアユニット153とデータキャッシュ170の間に介装されるストアキュー159を含む。
スケジューラ180は記憶エントリとこれに接続するロジックブロックの指定された配列として構成され、この記憶エントリとロジックブロックは協働してOpsの実行ユニットへのOUT−OF−ORDERディスパッチのため且つOp結果の1以上の実行ユニットへの転送のための支援を提供する。記憶エントリとロジックブロックの指定された配列はまた再命令バッファを実施し、レジスタファイル190内に形成されたアーキテクチャレジスタの再命名を提供し、投機的実行の回復を提供する。命令デコーダ140はスケジューラ180に命令ストリームから解読された新規のOpsを供給する。次に、スケジューラ180は受け取った新規の各Opに関連したデータを(記憶エントリ内に)格納し保持する。このようにして、Opが実行ユニットに発行されかつ実行ユニットによって実行されるに伴いスケジューラ180が各Opの状態とその関連するデータを追跡調査する。与えられたOpが完全に実行されかつデータ依存性が明瞭になった後に、それは退避(retire)されそして符合するスケジューラエントリは解除される。
スケジューラ180はバス189として一括して示される一群のバス及び制御線を介して実行ユニット(即ち、ロードユニット152、ストアユニット153、レジスタユニット154及び155、浮動小数点ユニット156、マルチメディアユニット157並びに分岐ユニット158)に接続される。スケジューラ180は実行ユニットにOps、レジスタオペランド及び制御信号を供給し、例証的にはバス189を介して実行ユニットから戻される結果値及び状態指示信号を受け取る。もちろん、全てのバスと制御線とは完全に接合している必要はなく、バス189は実行ユニットに対するスケジューラ180の双方向接続の単なる例示である。
ロードユニット152とストアユニット153は、それぞれアドレス可能なメモリからのロードしたデータとアドレス可能なメモリへの格納したデータであるLdStOps(即ちLdOpsとStOps)を実行する。特定のメモリアドレスのキャッシュ状態に依拠して、LdStOpはL1データキャッシュ170、L2キャッシュ(図示しない)、主メモリ(図示しない)のいずれかにおいて完了する。ストアキュー159はストアユニット153からのデータを一時的に格納しストアユニット153とロードユニット152とはデータキャッシュ170へのアクセス競合無しに並行して演算することができる。レジスタユニット154と155はRegOpsを実行しこのRegOpsはレジスタファイル190のアーキテクチャレジスタに関連したデータに基づいて演算する。
本発明に基づくロード/ストアオペレーションのOUT−OF−ORDER実行コントロールを実現する様々なコンピュータシステムコンフィギュレーションが考えられる。例えば、このようなコンピュータシステム(例えばコンピュータシステム1000)は、本発明によるロード/ストアOUT−OF−ORDER実行コントロールを提供するプロセッサ100、メモリサブシステム(例えばRAM1020)、ディスプレイアダプタ1010、ディスクコントローラ/アダプタ1030、様々な入力/出力インタフェース及びアダプタ(例えば並列インタフェース1009、直列インタフェース1008、LANアダプタ107等)、及び対応する外部装置(例えばディスプレイデバイス1001、プリンタ1002、モデム1003、キーボード1006、及びデータ記憶装置)を含む。データ記憶装置には、例えばハードディスク1032、フロッピーディスク1031、テープユニット、CD−ROM、ジュークボックス、RAID(redundant array of inexpensive disks)、フラッシュメモリ等のような装置が含まれる。
追加実施例
以下は追加の本発明による実施例である。
オペレーションエントリの古さ順配列において、オペレーションタイプ基準と一致する1つ或いはそれ以上の古いエントリからなる選択されたエントリを含む存在エントリをシグナリングするためのスキャンロジックが提供される。このスキャンロジックは、第1グループ内のオペレーションエントリの各エントリに対する選択指示信号及びオペレーションタイプ基準指示信号を受信するために接続される第1グループ内処理ロジックを有する。このような選択指示信号はそれぞれ対応するエントリが選択されたエントリであるか否かを指示し、第1グループ内処理ロジックは、第1グループ内において選択されたエントリ、並びにオペレーションタイプ基準と一致する古いオペレーションの第1の結合を識別する。このスキャンロジックはまた、第2グループのオペレーションエントリ内の各エントリに対する選択指示信号及びオペレーションタイプ基準指示信号を受信するために接続される第2グループ内処理ロジックを有する。そのような各選択指示信号はそれぞれ対応するエントリが選択されたエントリであるか否かを指示し、第2グループ内処理ロジックは、第2のグループにおいて選択されたエントリ、並びにオペレーションタイプ基準と一致する古いオペレーションの第2の結合を識別する。このスキャンロジックは更に、第1グループのオペレーションエントリ内の各エントリに対する選択指示信号及び第2グループのオペレーションエントリ内の各エントリに対する選択指示信号を受信するために接続される第1グループ群一括処理ロジックを有する。この第1のグループ群一括処理ロジックは、第1グループ内の選択されたエントリ、並びに第2グループ内のオペレーションタイプ基準と一致する古いオペレーションの第3の結合を識別する。前記スキャンロジックはまた、第1グループ内処理ロジック、第2グループ内処理ロジック並びに第1グループ群一括処理ロジックに接続される結合処理ロジックを有し、この結合処理ロジックは、それらの識別信号を受信し、任意の識別信号に応じてオルダ(older)エントリ識別信号を供給する。
上述のスキャンロジックはさらに、それぞれ第3及び第4のグループのオペレーションエントリにおける各エントリに対する選択指示信号及びオペレーションタイプ基準指示信号を受信するためにそれぞれ接続される第3及び第4のグループ内処理ロジック、及び第3グループのオペレーションエントリにおける各エントリに対する選択指示信号、並びに第4のグループのオペレーションエントリにおける各エントリに対するオペレーションタイプ基準指示信号を受信するために接続される第2のグループ群一括処理ロジックを有していてもよい。上述の第3及び第4のグループ内処理ロジックはそれぞれ、第3及び第4のグループのそれぞれにおける選択されたエントリ及びオペレーションタイプ基準に一致する古いオペレーションの第4及び第5の結合を識別する。また、上述の第2グループ群一括処理ロジックは第3グループ内の選択されたエントリ、並びに第3及び第4グループ内のオペレーションタイプ基準と一致する古いオペレーションの第6の結合を識別する。上述の結合処理ロジックはさらに第3グループ内処理ロジック、第4グループ内処理ロジック並びに第2グループ群一括処理ロジックに接続され、第4、第5並びに第6の結合信号をそこから受信し、また結合処理ロジックが任意の第1、第2、第3、第4、第5並びに第6の結合信号に応じてオルダエントリ識別信号を供給する。
別形態では、前記スキャンロジックがさらに、それぞれ第3及び第4グループのオペレーションエントリ内の各エントリに対する選択指示信号及びオペレーションタイプ基準指示信号を受信するためにそれぞれ接続される第3及び第4グループ内処理ロジック、及び第3グループのオペレーションエントリ内の各エントリに対する選択指示信号、並びに第4グループのオペレーションエントリ内の各エントリに対するオペレーションタイプ基準指示信号を受信するために接続される第2グループ群一括処理ロジックを有していてもよい。上述の第3及び第4グループ内処理ロジックは、それぞれ第3及び第のグループ内の選択されたエントリ及びオペレーションタイプ基準に一致する古いオペレーションの第4及び第5の結合を識別する。上述の第2グループ群一括処理ロジックは第3グループ内の選択されたエントリ、並びに第3及び第4のグループ内オペレーションタイプ基準と一致する古いオペレーションの第6の結合を識別する。上述の結合処理ロジックはさらに第3グループ内処理ロジック、第4グループ内処理ロジック並びに第2グループ群一括処理ロジックに接続され、第4、第5並びに第6の結合信号をそこから受信し、また結合処理ロジックが任意の第1、第2、第3、第4、第5並びに第6の結合信号に応じてオルダエントリ識別信号を供給する。
別実施例によれば、ロードユニット及びストアユニットを有するプロセッサにおいて、ロード及びストア命令間でデータ依存性を強いる一方で、ロード及びストア命令が互いに関して普通にOUT−OF−ORDER実行できるようにするためのロード/ストア実行コントローラが提供される。このロード/ストア実行コントローラは、古さ順配列のスケジューラオペレーションエントリを有する。各スケジューラオペレーションエントリはオペレーションシーケンス内の対応するオペレーションを指示する。ロード停止ロジックは、ロードユニットに接続され、ストアオルダ指示信号(store older indication)受信時に、ロードユニット内のロードオペレーションを選択的に禁止する。スキャンチェーンロジックは、オペレーションエントリ及びロード停止ロジックに接続され、ロードユニット内のロードオペレーションに関連する古いストアオペレーションの存在を指示するストアオルダ指示信号を供給する。このスキャンロジックはさらに、それぞれの第1レベルグループの隣接エントリ内の各エントリに対する選択信号及び第1の基準信号を受信し、それぞれの第1レベルグループ内の選択されたエントリ及びより高次のエントリのそれぞれの結合を識別するために接続されるグループ内処理ロジックと、隣接ずるより低次の及びより高次の第1レベルグループからのエントリに対応するそれぞれの選択信号及び第1の基準信号を受信し、低次第1レベルグループの1つにおいて選択されたエントリの結合を識別し、それぞれの高次第1レベルグループ内の高次エントリを識別するために接続される第1レベルグループ群一括処理ロジックと、グループ内処理ロジック及び第1レベルグループ群一括処理ロジックに接続され、そこからの結合信号を受信し、さらに任意の結合信号に応じて高次エントリ識別信号を供給する結合処理ロジックとを含む。
本発明は種々の実施例を参照して記載されているが、これらの実施例は例示にすぎず、本発明の範囲を制限するものではないことは理解されよう。ここで記載される実施例の種々の変形、変更、追加或いは改良が可能である。例えば、Opクワッドとしてスケジューラ180内にあるOpエントリの機構は単なる例示である。別の実施例では、他の構造並びにまた方法が組み込まれ、多重或いはパイプライン化実行ユニットを有するコンピュータにおけるオペレーションの性質或いは状態を表せるかもしれない。スキャンロジックは、より大きな或いはより小さなグループにグループ化された多数の或いは少数のOpエントリを収容するように構成されるかもしれない。ここに記載された階層的な機構から逸脱することなく、さらに種々のゲート/複雑ゲートレベルロジックにより設計することが適当である。別の実施例では、ロードユニット152及びストアユニット153において異なる構造及び機能が配分されるかもしれない。例えば、ロードユニット152及びストアユニット153は別々に変更され、多数の或いは少数の実行段階を含むかもしれない。所要のスキャンロジックインスタンスのセットへの相応の変更は、当業者には明らかであろう。アドレス比較を行うための構造は、ロードユニット152とストアユニット153との間で異なって配分されるかもしれない。さらに別の実施例では、多数の或いは少数のスキャンロジックインスタンスが組み込まれ、LdOps及びStOpsを停止するかもしれない。アドレス比較は、多くの従来の停止に関するポリシーを選択すればなくせるかもしれない。さらに、典型的な実施例においてハードウエアで提供される構造及び機能は、別の実施例では、ソフトウエア、ファームウエア或いはマイクロコードで実現されるかもしれない。以上の或いはこれ以外の変形、変更、追加並びに改良は以下に示す請求の範囲において画定される本発明の範囲内に含まれるであろう。
Claims (18)
- 順序付けされた配列(240)のN個のエントリにおいて第1の基準と一致するエントリの存在をシグナリングするためのスキャンロジック(700)であって、
前記エントリが最も低い順序のエントリから最も高い順序のエントリまでの範囲にあり、各エントリが前記順序内に画定された位置を有し、前記配列が選択されたエントリを含み、
前記第1基準と一致する前記エントリが、前記選択されたエントリより、前記順序において高い位置を有する場合、
各エントリは対応する選択信号及び第1の基準一致信号を供給するためのロジック(720,710)を有し、
前記スキャンロジック(700)が、エントリのグループのレベルを画定するための階層的に構成され、前記スキャンロジックが、
それぞれの第1レベルグループの隣接エントリ内の各エントリに対する選択信号及び第1基準信号を受信し、かつそれぞれの前記第1レベルグループ内の前記選択されたエントリ及び前記高次エントリのそれぞれの結合を識別し、グループ内処理結合信号を与えるために接続されるグループ内処理ロジック(740)と、
隣接する低次及び高次第1レベルグループからのエントリに対応するそれぞれの選択信号及び第1基準信号を受信し、かつ前記低次第1レベルグループの1つにおける前記選択されたエントリ、並びにそれぞれの前記高次第1レベルグループ内の前記高次エントリのそれぞれの結合を識別し、グループ群一括処理結合信号を供給するために接続される第1レベルグループ群一括処理ロジック(760)と、
前記グループ内処理ロジック及び前記第1レベルグループ群一括処理ロジックに接続され、そこから結合信号を受信し、さらに任意の前記結合信号に応じて、前記選択されたエントリ及び少なくとも1つの前記第1基準と一致する高次エントリの存在を指示する高次エントリ識別信号を供給する結合処理ロジック(770)とを有することを特徴とするスキャンロジック。 - 前記エントリが多重化実行ユニットプロセッサの実行ユニット(152−158)で評価するためのオペレーション(Op)エントリからなり、
前記Opエントリが古さ順、すなわちより古いOpエントリからなる高次エントリ並びに新しいOpエントリからなる低次エントリからなり、
前記選択されたエントリがロードオペレーション(LdOp)エントリからなり、
前記第1の基準がストアオペレーション(StOp)エントリに一致することを特徴とする請求項1に記載のスキャンロジック。 - 前記エントリが多重化実行ユニットプロセッサの実行ユニット(152−158)で評価するためのオペレーション(Op)エントリからなり、
前記Opエントリが古さ順、すなわちより古いOpエントリからなる高次エントリ並びに新しいOpエントリからなる低次エントリからなり、
前記選択されたエントリがストアオペレーション(StOp)エントリからなり、
前記第1の基準がロードオペレーション(LdOp)エントリに一致することを特徴とする請求項1に記載のスキャンロジック。 - 前記エントリが多重化実行ユニットプロセッサの実行ユニット(152−158)で評価するためのオペレーション(Op)エントリからなり、前記多重化実行ユニットプロセッサがロードユニット(152)及びストアユニット(153)からなり、
前記Opエントリが古さ順、すなわちより古いOpエントリからなる高次エントリ並びに新しいOpエントリからなる低次エントリからなり、
前記選択されたエントリが、対応するいずれか1つの前記ストアユニット及び前記ロードユニットでの評価の第1段階におけるストアオペレーション(StOp)及びロードオペレーション(LdOp)のうちの一方に対応する選択されたOpエントリからなり、
前記第1の基準が、前記ストアユニット及び前記ロードユニットの前記対応する1つでの評価の所定段階におけるストアオペレーション(StOp)及びロードオペレーション(LdOp)のうちの他方に一致することを特徴とする請求項1に記載のスキャンロジック。 - 請求項4に記載のスキャンロジックのストアオルダインスタンス及びロードオルダインスタンスであって、
前記ストアオルダスキャンロジックに対する前記選択信号が、もしあるなら、前記ロードユニットにおける段階2LdOpに対応する前記Opエントリの1つを指示し、前記ロードオルダスキャンロジックに対する選択信号が、もしあるなら、前記ストアユニットにおける段階2StOpに対応する前記Opエントリの1つを指示し、前記ストアオルダスキャンロジックに対する前記第1の基準信号が前記ストアユニットでの評価の第1の所定段階におけるStOpを指示し、前記ロードオルダスキャンロジックに対する第1の基準信号が、前記ロードユニットでの評価の第2の所定段階におけるLdOpを指示し、前記ストアオルダスキャンロジックの前記高次エントリ識別信号がストアオルダ信号であり、前記ロードオルダスキャンロジックの前記高次エントリ識別信号がロードオルダ信号であることを特徴とするスキャンロジックのストアオルダインスタンス及びロードオルダインスタンス。 - 隣接する低次及び高次第2レベルグループからのエントリに対応するそれぞれの選択信号及び第1の基準信号を受信し、かつ前記低次第2レベルグループの1つにおける前記選択されたエントリ及び前記それぞれの高次第2レベルグループにおける高次エントリのそれぞれの結合を識別するために接続される第2レベルグループ群一括処理ロジック(750)と、
前記第2レベルグループ群一括処理ロジックにさらに接続され、そこから結合信号を受信し、かつ第2レベルグループ群一括処理ロジックからの信号を含む、任意の前記結合信号に応じて高次エントリ識別信号を供給する結合処理ロジック(770)とをさらに有することを特徴とする請求項1に記載のスキャンロジック。 - 各前記第1次グループが前記第2レベルグループ内に階層的に定義されることを特徴とする請求項6に記載のスキャンロジック。
- 各前記第1レベルグループが順序付け配列の3つのエントリ(240)を含み、各前記第2レベルグループが前記順序付け配列の6つのエントリを含むことを特徴とする請求項6に記載のスキャンロジック。
- 連続的でより大きなグループの隣接エントリからのエントリに対応するそれぞれの選択信号及び第1の基準一致信号を受信し、かつより低次のグループにおける選択された信号、並びに前記それぞれの高次グループにおける高次エントリのそれぞれの結合を識別するために接続される階層構造を有するグループ群一括処理ロジック(750,730)の連続するレベルをさらに有し、
前記結合処理ロジック(770)がさらに階層構造を有するグループ群一括処理ロジックの各前記連続レベルに接続され、そこから結合信号を受信し、さらに階層構造を有するグループ群一括処理ロジックの連続レベルからの信号を含む、任意の前記結合信号に応じて高次エントリ識別信号を供給することを特徴とする請求項1に記載のスキャンロジック。 - 各前記第1次グループが順序付け配列の3つのエントリを含み、各前記連続的で大きなグループの隣接エントリはそこに含まれる順序付け配列のエントリ数を2倍にすることを特徴とする請求項9に記載のスキャンロジック。
- 前記順序付け配列は古さ順であり、24オペレーションエントリを含み、
前記第1次グループのそれぞれが前記古さ順配列からの3つのエントリを含み、
前記第1レベルグループ及び連続的に大きなグループの隣接エントリのそれぞれは共に、階層的に画定されたグループの隣接エントリの4レベルを画定し、それぞれそこにおいて含まれる隣接エントリの数を2倍することを特徴とする請求項9に記載のスキャンロジック。 - 前記順序付け配列は古さ順であり、24オペレーションエントリを含み、
エントリレベル選択からの前記高次エントリ識別信号及び第1の基準指示信号を計算するためにスキャンロジックを介して画定されるロジックパスは、一律に5ゲート遅延よりは大きくはないことを特徴とする請求項9に記載のスキャンロジック。 - 前記順序付け配列が古さ順配列のオペレーショエントリであり、
前記エントリの前記選択された1つが選択された実行段階のロード及びストアオペレーションの一方に対応し、
前記第1の基準が前記ストア及びロードオペレーションの他方に等しいオペレーションタイプであることを特徴とする請求項9に記載のスキャンロジック。 - スーパスケーラプロセッサであって、
ロードユニット(152)及びストアユニット(153)と、
前記ロードユニット及び前記ストアユニットに接続されるロード及びストア実行制御ロジック(180)であって、前記ロード及びストア実行制御ロジックは、あるロード及びストア命令間でデータ依存性を強いる一方で、ロード及びストア命令が互いに関して普通にOUT−OF−ORDER実行できるようにし、ロード/ストア実行コントローラが請求項1に記載のスキャンロジックからなることを特徴とするスーパスケーラプロセッサ。 - 第1レベルグループが、3つの隣接する配列エントリのグループからなり、
階層構造を有するグループ群一括処理ロジックのlog2(N/3)レベルが連続する大きなグループの隣接するエントリからのエントリに対応するそれぞれの選択信号及び第1基準一致信号を受信し、各連続レベルにて、低次グループにおいて前記選択されたエントリの、並びに前記それぞれの高次グループ内の高次配列エントリのそれぞれの結合を識別するために接続され、
前記階層構造を有するスキャンロジックが、わずかlog2(N/3)+2反転ゲート遅延からなることを特徴とする請求項1に記載のスキャンロジック。 - 選択されたOpエントリを含む、古さ順配列(240)のオペレーション(Op)エントリにおいて、オペレーションタイプ基準と一致する1つ或いはそれ以上の古いエントリの存在をシグナリングするための方法であって、前記エントリが所定サイズのグループ内で構成され、各エントリが画定された順序位置を有し、前記方法が、
第1グループの前記Opエントリにおける前記選択されたOpエントリ及び前記オペレーションタイプ基準に一致する古いOpのグループ内結合を検出する過程と、
連続する第2、第3並びに第4のグループの前記Opエントリを含む、連続オルダグループ内の前記選択されたエントリ及び前記オペレーションタイプ基準と一致する古いOpのグループ内結合を検出する過程と、
前記第1グループのOpエントリの前記選択されたOpエントリ及び第2グループのOpエントリの前記オペレーションタイプ基準に一致する古いOpの第1レベルグループ間結合を検出する過程と、
前記連続する第3及び第4グループのOpエントリを含む、Opエントリのグループの各連続する組における、前記選択されたOpエントリ及び前記オペレーションタイプ基準と一致する古いOpの第1レベルグループ間結合を検出する過程と、
前記第1グループに対するグループ内結合検出、各連続グループに対するグループ内結合検出、第1及び第2グループに対する第1レベルグループ間結合検出、並びに各連続するグループの組に対する第1レベルグループ間結合検出を結合し、前記オペレーションタイプ基準と一致し、前記Opエントリの配列内に現れる前記選択されたOpより古いOpの信号指示を供給する過程とを有することを特徴とする方法。 - 前記第1及び第2グループの1つにおける前記選択されたOpエントリ及び前記第3及び第4グループのいずれかにおける前記オペレーションタイプ基準と一致する古いOpの第2レベルグループ間結合を検出する過程を有し、前記結合過程がさらに、前記第2レベルグループ間結合検出と、前記グループ内及び第1レベルグループ間検出とを結合する過程を含み、前記オペレーションタイプ基準と一致し、かつOpエントリの前記配列内に現れる前記選択されたOpより古い信号指示を供給する過程を有することを特徴とする請求項16に記載の方法。
- 連続レベルの階層構造を有する複合グループにおいて連続レベルのグループ間結合を検出過程であって、前記選択されたOpエントリが複合グループの1組の第1グループ内にあり、かつ前記オペレーションタイプ基準と一致する古いOpが前記1組の複合グループの第2グループ内にあるとき、特定のレベルの複合グループにおける結合が生じる、該過程をさらに有し、前記結合過程がさらに、各連続レベルの階層構造を有する複合グループでのグループ間結合検出と、前記グループ内及び第1レベルグループ間検出とを結合する過程を含み、前記オペレーションタイプ基準と一致し、かつ前記Opエントリの配列内に現れる前記選択されたOpより古いOpの信号指示を供給する過程を有することを特徴とする請求項16に記載の方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US592,209 | 1990-10-03 | ||
US08/592,209 US5754812A (en) | 1995-10-06 | 1996-01-26 | Out-of-order load/store execution control |
US08/740,119 US5835747A (en) | 1996-01-26 | 1996-10-23 | Hierarchical scan logic for out-of-order load/store execution control |
US740,119 | 1996-10-23 | ||
PCT/US1997/000294 WO1997027538A1 (en) | 1996-01-26 | 1997-01-22 | Hierarchical scan logic for out-of-order load/store execution control |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000515268A JP2000515268A (ja) | 2000-11-14 |
JP3681761B2 true JP3681761B2 (ja) | 2005-08-10 |
Family
ID=27081403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52687497A Expired - Fee Related JP3681761B2 (ja) | 1996-01-26 | 1997-01-22 | ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック |
Country Status (6)
Country | Link |
---|---|
US (1) | US5835747A (ja) |
EP (1) | EP0876646B1 (ja) |
JP (1) | JP3681761B2 (ja) |
AU (1) | AU1530997A (ja) |
DE (1) | DE69736105T2 (ja) |
WO (1) | WO1997027538A1 (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987595A (en) * | 1997-11-25 | 1999-11-16 | Intel Corporation | Method and apparatus for predicting when load instructions can be executed out-of order |
US6192464B1 (en) * | 1997-12-31 | 2001-02-20 | Intel Corporation | Method and apparatus for decoding one or more instructions after renaming destination registers |
US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
KR100608389B1 (ko) * | 1998-08-24 | 2006-08-09 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 저장 어드레스 생성에 대한 적재 블록을 위한 메커니즘 |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
US6122727A (en) * | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6141747A (en) * | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6223259B1 (en) | 1998-10-30 | 2001-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Reducing read cycle of memory read request for data to be partially modified by a pending write request |
US6167492A (en) | 1998-12-23 | 2000-12-26 | Advanced Micro Devices, Inc. | Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system |
US6304955B1 (en) * | 1998-12-30 | 2001-10-16 | Intel Corporation | Method and apparatus for performing latency based hazard detection |
EP1050806A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Memory access address comparison |
US6523109B1 (en) | 1999-10-25 | 2003-02-18 | Advanced Micro Devices, Inc. | Store queue multimatch detection |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6622235B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Scheduler which retries load/store hit situations |
US6651161B1 (en) | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
US6564315B1 (en) | 2000-01-03 | 2003-05-13 | Advanced Micro Devices, Inc. | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction |
US6694424B1 (en) | 2000-01-03 | 2004-02-17 | Advanced Micro Devices, Inc. | Store load forward predictor training |
US6622237B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
DE10110578B4 (de) * | 2000-03-29 | 2004-06-03 | International Business Machines Corporation | Hierarchisches Prioritätsfilter mit integrierter Serialisierung |
US6662293B1 (en) | 2000-05-23 | 2003-12-09 | Sun Microsystems, Inc. | Instruction dependency scoreboard with a hierarchical structure |
US6857060B2 (en) | 2001-03-30 | 2005-02-15 | Intel Corporation | System, apparatus and method for prioritizing instructions and eliminating useless instructions |
US6963961B1 (en) * | 2001-07-09 | 2005-11-08 | Lsi Logic Corporation | Increasing DSP efficiency by independent issuance of store address and data |
US6803786B1 (en) * | 2003-03-11 | 2004-10-12 | Xilinx, Inc. | Structures and methods providing columns of tightly coupled processor and RAM blocks within an array of logic blocks |
US7321964B2 (en) * | 2003-07-08 | 2008-01-22 | Advanced Micro Devices, Inc. | Store-to-load forwarding buffer using indexed lookup |
US7376817B2 (en) * | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US11106469B2 (en) | 2019-08-14 | 2021-08-31 | International Business Machines Corporation | Instruction selection mechanism with class-dependent age-array |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4180861A (en) * | 1978-03-31 | 1979-12-25 | Ncr Corporation | Selectively operable mask generator |
JPS55147744A (en) * | 1979-05-07 | 1980-11-17 | Hitachi Ltd | Memory controlling unit |
JPS6462764A (en) * | 1987-09-03 | 1989-03-09 | Agency Ind Science Techn | Vector computer |
WO1990010267A1 (en) * | 1989-02-24 | 1990-09-07 | Nexgen Microsystems | Distributed pipeline control for a computer |
US5095458A (en) * | 1990-04-02 | 1992-03-10 | Advanced Micro Devices, Inc. | Radix 4 carry lookahead tree and redundant cell therefor |
JPH0820949B2 (ja) * | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
DE69327688T2 (de) * | 1992-08-12 | 2000-09-07 | Advanced Micro Devices, Inc. | Befehlsdecoder |
KR100248903B1 (ko) * | 1992-09-29 | 2000-03-15 | 야스카와 히데아키 | 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템 |
US5450560A (en) * | 1992-12-21 | 1995-09-12 | Motorola, Inc. | Pointer for use with a buffer and method of operation |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
JPH0793152A (ja) * | 1993-09-20 | 1995-04-07 | Fujitsu Ltd | マイクロプロセッサ制御装置 |
EP0651320B1 (en) * | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superscalar instruction decoder |
US5724536A (en) * | 1994-01-04 | 1998-03-03 | Intel Corporation | Method and apparatus for blocking execution of and storing load operations during their execution |
US5689693A (en) * | 1994-04-26 | 1997-11-18 | Advanced Micro Devices, Inc. | Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead |
US5559975A (en) * | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
US5745726A (en) * | 1995-03-03 | 1998-04-28 | Fujitsu, Ltd | Method and apparatus for selecting the oldest queued instructions without data dependencies |
US5745724A (en) * | 1996-01-26 | 1998-04-28 | Advanced Micro Devices, Inc. | Scan chain for rapidly identifying first or second objects of selected types in a sequential list |
US5754812A (en) * | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
US5748934A (en) * | 1996-05-31 | 1998-05-05 | Hewlett-Packard Company | Operand dependency tracking system and method for a processor that executes instructions out of order and that permits multiple precision data words |
-
1996
- 1996-10-23 US US08/740,119 patent/US5835747A/en not_active Expired - Lifetime
-
1997
- 1997-01-22 EP EP97901401A patent/EP0876646B1/en not_active Expired - Lifetime
- 1997-01-22 AU AU15309/97A patent/AU1530997A/en not_active Abandoned
- 1997-01-22 JP JP52687497A patent/JP3681761B2/ja not_active Expired - Fee Related
- 1997-01-22 DE DE69736105T patent/DE69736105T2/de not_active Expired - Lifetime
- 1997-01-22 WO PCT/US1997/000294 patent/WO1997027538A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
JP2000515268A (ja) | 2000-11-14 |
AU1530997A (en) | 1997-08-20 |
DE69736105D1 (de) | 2006-07-27 |
EP0876646A1 (en) | 1998-11-11 |
US5835747A (en) | 1998-11-10 |
WO1997027538A1 (en) | 1997-07-31 |
DE69736105T2 (de) | 2007-01-11 |
EP0876646B1 (en) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3681761B2 (ja) | ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック | |
JP3714961B2 (ja) | ロード/ストアオペレーションのout−of−order実行の制御 | |
JP3977016B2 (ja) | 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ | |
US5630149A (en) | Pipelined processor with register renaming hardware to accommodate multiple size registers | |
US5721855A (en) | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer | |
US6138230A (en) | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline | |
CN100357884C (zh) | 用于处理指令的方法、处理器以及系统 | |
EP0853785B1 (en) | Self-modifying code handling system | |
EP0779577B1 (en) | Micoprocessor pipe control and register translation | |
US6119223A (en) | Map unit having rapid misprediction recovery | |
JPH07334364A (ja) | スーパースカラマイクロプロセッサおよびropを処理する方法 | |
JP3597540B2 (ja) | 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置 | |
US6073231A (en) | Pipelined processor with microcontrol of register translation hardware | |
JP2001297000A (ja) | 1次発行キューと2次発行キューを持つマイクロプロセッサ | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
KR19990066800A (ko) | 프로세싱 시스템에서 복수의 저장 인스트럭션 완료를 처리하는방법 및 시스템 | |
CN114675882A (zh) | 用于可缩放预留站的方法、系统和装置 | |
JP3866920B2 (ja) | 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ | |
JP3736866B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット | |
US6038657A (en) | Scan chains for out-of-order load/store execution control | |
CN117270971B (zh) | 加载队列控制方法、装置及处理器 | |
EP0778519B1 (en) | Multiple instruction dispatch system for pipelined microprocessor without branch breaks | |
US6658555B1 (en) | Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline | |
JPH117389A (ja) | プロセサ用の命令を処理するシステム及び方法 | |
US20040193845A1 (en) | Stall technique to facilitate atomicity in processor execution of helper set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20031222 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20031222 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040114 |
|
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: 20050510 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050519 |
|
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: 20080527 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090527 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090527 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100527 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110527 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110527 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120527 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |