JPH0784965A - Method and apparatus for sequencing of processor of multiprocessor computer system - Google Patents

Method and apparatus for sequencing of processor of multiprocessor computer system

Info

Publication number
JPH0784965A
JPH0784965A JP20941894A JP20941894A JPH0784965A JP H0784965 A JPH0784965 A JP H0784965A JP 20941894 A JP20941894 A JP 20941894A JP 20941894 A JP20941894 A JP 20941894A JP H0784965 A JPH0784965 A JP H0784965A
Authority
JP
Japan
Prior art keywords
circuit
physical
micro
memory
register
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.)
Pending
Application number
JP20941894A
Other languages
Japanese (ja)
Inventor
Jeffrey M Abramson
ジェフリイ・エム・アブラムソン
Haitham Akkary
ハイサム・アッカリイ
Andrew F Glew
アンドリュ・エフ・グルー
J Hinton Glen
グレン・ジェイ・ヒントン
Kris G Konigsfeld
クリス・ジイ・コニグスフェルド
Paul D Madland
ポール・ディ・マドランド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH0784965A publication Critical patent/JPH0784965A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

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)
  • Multi Processors (AREA)

Abstract

PURPOSE: To maintain the processor order in a multiprocessor computer system. CONSTITUTION: A processor 22 snoops on a multiprocessor bus 28 for the external storage operation to a memory address of respective executed and non-saved loading memory instructions. In the case that the corresponding external storage operation is not detected, the processor 22 commits the result data value of the executed and non-saved loading memory instruction in a sequential program order to an architecture state. On the other hand, in the case that the corresponding external storage operation is detected, the result data value of the executed and non-saved loading memory instruction is discarded. Then, the processor 22 re-executes an instruction stream started from the loading memory instruction for causing external storage snooping detection.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、コンピュータ・システ
ムの分野に関する。更に詳細には、本発明は、マルチプ
ロセッサ・コンピュータ・システムにおいて、アウト・
オブ・オーダー(out of order)命令を採
用するプロセッサ順序付け一貫性(processor
ordering consistency)を維持
することに関する。
FIELD OF THE INVENTION This invention relates to the field of computer systems. More particularly, the present invention provides an out-of-process for a multiprocessor computer system.
Processor ordering processor that employs out of order instructions
maintaining the ordering consistency).

【0002】[0002]

【従来の技術】典型的なマルチプロセッサ・コンピュー
タ・システムにおけるプロセッサ間通信は、一つ以上の
プロデューサ(producer)プロセッサと一つ以
上のコンシューマ(consumer)プロセッサとの
間の情報転送としてモデル化されている。典型的なマル
チプロセッサ・コンピュータ・システムにおいては、プ
ロデューサ・プロセッサは、共有メモリ・サブシステム
に格納されたメッセージを介して情報をコンシューマ・
プロセッサへ転送する。
Interprocessor communication in a typical multiprocessor computer system is modeled as the transfer of information between one or more producer processors and one or more consumer processors. There is. In a typical multiprocessor computer system, a producer processor consumes information via messages stored in a shared memory subsystem.
Transfer to processor.

【0003】このようなマルチプロセッサ・システムに
おける各プロセッサは、メモリ・サブシステムを通して
コンシューマ・プロセッサへ流れる情報を一貫性のある
ものとするために、通常、一般的なプロセッサ順序付け
モデルに従わなければならない。プロセッサ順序付けモ
デルは、各コンシューマ・プロセッサが同じ順序でプロ
デューサ・プロセッサから格納を行うことが必要であ
る。
Each processor in such a multiprocessor system must generally follow a common processor ordering model to make the information flowing through the memory subsystem to the consumer processors consistent. . The processor ordering model requires each consumer processor to store from the producer processor in the same order.

【0004】たとえば、一般的なプロセッサ間通信トラ
ンザクションにおいては、プロデューサ・プロセッサ
は、メッセージ・データをメモリ・サブシステムに書き
込み、次いで、メッセージ・フラグをメモリ・サブシス
テムにセットして有効なメッセージ・データであること
を示す。各コンシューマ・プロセッサは、メッセージ・
フラグを読み、次いで、メッセージ・フラグが有効なデ
ータであることを示している場合には、メッセージ・デ
ータを読む。各コンシューマ・プロセッサが同じ順序で
プロデューサ・プロセッサから格納を行うことが必要で
あるプロセッサ順序付けモデルは、各コンシューマ・プ
ロセッサがメッセージ・フラグの格納の前にメッセージ
・データの格納を行うことを確実にする。このようなプ
ロセッサ順序付けモデルにより、メッセージ・フラグの
格納の前にメッセージ・データの格納が生じた場合に
は、各コンシューマ・プロセッサに有効メッセージ・デ
ータの読み取りを行わせる。
For example, in a typical interprocessor communication transaction, the producer processor writes message data to the memory subsystem and then sets a message flag in the memory subsystem to make the valid message data valid. Is shown. Each consumer processor
Read the flag and then the message data if the message flag indicates that it is valid data. A processor ordering model that requires each consumer processor to store from the producer processor in the same order ensures that each consumer processor stores message data before storing message flags . Such a processor ordering model causes each consumer processor to read valid message data if message data storage occurs prior to message flag storage.

【0005】マルチプロセッサ・システムにおける典型
的な従来のプロセッサは、イン・オーダー(in−or
der)の命令を実行するパイプラインを備えている。
このようなイン・オーダーのプロセッサは、通常、命令
ストリームをフェッチし、命令ストリームをシーケンシ
ャルなプログラム順序に従って実行し、ロード及び格納
をシーケンシャルなプログラム順序に従ってディスパッ
チする。各コンシューマ・プロセッサは、ロード命令を
実行してメッセージ・フラグと共にメッセージ・データ
を同じ順序で読むので、このような命令ストリームのイ
ン・オーダーの処理により、マルチプロセッサ・システ
ムにおける各コンシューマ・プロセッサが、同じ順序で
プロデューサ・プロセッサから格納を行うことが確実に
なる。
A typical conventional processor in a multiprocessor system is in-or.
der) instruction is executed.
Such an in-order processor typically fetches an instruction stream, executes the instruction stream according to a sequential program order, and dispatches loads and stores according to the sequential program order. Because each consumer processor executes load instructions and reads message data with message flags in the same order, such in-order processing of instruction streams causes each consumer processor in a multiprocessor system to It ensures that the store is done from the producer processor in the same order.

【0006】プロセッサは、命令実行性能を改善するた
めに、アウト・オブ・オーダー命令を実行するパイプラ
インを備えることができる。このようなアウト・オブ・
オーダー・プロセッサは、命令ストリームをフェッチ
し、先にある未準備の命令より前に、命令ストリーム内
の準備済の命令を実行する。準備済の命令は、典型的に
は完全にアセンブルされたソース・データと利用可能な
実行資源を有する命令である。
The processor may include a pipeline for executing out-of-order instructions to improve instruction execution performance. Like this out of
The order processor fetches the instruction stream and executes the prepared instructions in the instruction stream before any unprepared instructions that precede it. Prepared instructions are typically instructions that have fully assembled source data and available execution resources.

【0007】プロセッサの命令実行パイプラインは、準
備済でない命令のためのソース・データをアセンブルし
ている間は停止しないので、このようなアウト・オブ・
オーダー実行は、プロセッサの性能を改善する。たとえ
ば、浮動点演算からのソース・データを待っている準備
済でない命令は、実行準備済の命令ストリームにおける
後の命令の実行を停止させることがない。
[0007] The instruction execution pipeline of the processor does not stall while assembling source data for unprepared instructions, so such out-of-line
Order fulfillment improves processor performance. For example, an unprepared instruction waiting for source data from a floating point operation does not stop the execution of subsequent instructions in the instruction stream ready to execute.

【0008】命令ストリーム中の命令は、アウト・オブ
・オーダーで実行されるので、アウト・オブ・オーダー
命令を実行するパイプラインを備えたプロセッサは、ア
ウト・オブ・オーダーの結果のデータを生成する。アウ
ト・オブ・オーダー・プロセッサは、命令の実行の後に
結果のデータを元のプログラムの順序とするために、並
び替え(reorder)レジスタ・ファイルを備える
ことができる。
Since the instructions in the instruction stream are executed out-of-order, a processor with a pipeline for executing out-of-order instructions produces data that is out-of-order. . The out-of-order processor may include a reorder register file to place the resulting data in the original program order after execution of the instruction.

【0009】マルチプロセッサ・システムにおけるプロ
セッサによるアウト・オブ・オーダー命令の実行は、プ
ロセッサ順序付けモデルに違反する可能性がある。アウ
ト・オブ・オーダーのロード命令を実行するコンシュー
マ・プロセッサは、異なった順序でプロデューサ・プロ
セッサから格納することがある。
Execution of out-of-order instructions by a processor in a multiprocessor system can violate the processor ordering model. Consumer processors that execute out-of-order load instructions may store from the producer processor in a different order.

【0010】たとえば、メッセージ・データ用のロード
命令の前にメッセージ・フラグ用のロード命令を効率的
に実行するコンシューマ・プロセッサは、メッセージ・
フラグ用のロード命令の前にメッセージ・データ用のロ
ード命令を実行するコンシューマ・プロセッサとは異な
った順序のメッセージ・データ及びメッセージ・フラグ
に対するプロデューサ・プロセッサの格納を監視する。
For example, a consumer processor that efficiently executes a load instruction for message flags before a load instruction for message data is
Monitor the producer processor's storage of message data and message flags out of order with the consumer processor executing the load instruction for message data before the load instruction for flag.

【0011】このようなプロセッサ順序付けモデルの違
反により、コンシューマ・プロセッサが異なったメッセ
ージ・データを読む可能性がある。コンシューマ・プロ
セッサの一つは、プロデューサ・プロセッサがメッセー
ジ・データを格納する前に、メッセージ・データをロー
ドする可能性があり、また、プロデューサ・プロセッサ
がメッセージ・フラグを格納した後に、メッセージ・フ
ラグをロードする可能性がある。このような場合、コン
シューマ・プロセッサは無効メッセージ・データをロー
ドし、有効メッセージ・データを示すメッセージ・フラ
グをロードする。その結果として、コンシューマ・プロ
セッサは、無効メッセージ・データを誤って処理する。
Violations of such a processor ordering model may cause consumer processors to read different message data. One of the consumer processors may load the message data before the producer processor stores the message data, and may also set the message flag after the producer processor stores the message flag. May load. In such cases, the consumer processor loads the invalid message data and the message flag indicating the valid message data. As a result, the consumer processor mishandles invalid message data.

【0012】[0012]

【発明が解決しようとする課題】本発明の一つの目的
は、アウト・オブ・オーダー命令を実行するパイプライ
ンを有するプロセッサのためのマルチプロセッサ・コン
ピュータ・システムにおけるプロセッサの順序を維持す
ることである。
SUMMARY OF THE INVENTION One object of the present invention is to maintain processor order in a multiprocessor computer system for a processor having a pipeline to execute out-of-order instructions. .

【0013】本発明の他の目的は、アウト・オブ・オー
ダー命令を実行するパイプラインを有するプロセッサの
ためのプロセッサの順序を維持することであり、そこで
はマルチプロセッサ・コンピュータ・システムにおける
各コンシューマ・プロセッサが同じ順序でプロデューサ
・プロセッサからのメモリ格納を監視することが必要で
ある。
Another object of the present invention is to maintain processor order for processors having a pipeline to execute out-of-order instructions, where each consumer in a multiprocessor computer system. It is necessary for the processor to monitor memory storage from the producer processor in the same order.

【0014】本発明の更なる目的は、実行され且つまだ
退避されていない(unretired)ロード・メモ
リ命令に対応するメモリ・アドレスを目標とする外部メ
モリ格納動作を検出することにより、アウト・オブ・オ
ーダー命令を実行するパイプラインを備えたプロセッサ
用のマルチプロセッサ・コンピュータ・システムにおけ
るプロセッサの順序を維持することである。
A further object of the present invention is to detect an out-of-memory store operation targeting a memory address corresponding to a load memory instruction that has been executed and has not yet been retired. Maintaining the order of processors in a multiprocessor computer system for a processor with a pipeline for executing order instructions.

【0015】[0015]

【課題を解決するための手段】本発明のこれら及び他の
目的は、マルチプロセッサ・コンピュータ・システムに
おけるプロセッサを順序付ける方法により与えられる。
アウト・オブ・オーダー命令を実行するパイプラインを
有するプロセッサは、命令ストリームを外部メモリから
シーケンシャルなプログラム順序に従ってフェッチす
る。命令ストリームは、ロード・メモリ命令を含んでお
り、そこでは、各ロード・メモリ命令は、マルチプロセ
ッサ・コンピュータ・システムのマルチプロセッサ・バ
スのメモリ・アドレスからロード・メモリを特定する。
These and other objects of the invention are provided by a method of ordering processors in a multiprocessor computer system.
A processor having a pipeline for executing out-of-order instructions fetches an instruction stream from external memory according to sequential program order. The instruction stream includes load memory instructions, where each load memory instruction identifies a load memory from a memory address on a multiprocessor bus of a multiprocessor computer system.

【0016】プロセッサは、各ロード・メモリ命令毎に
少なくとも一つのソース・データ値をアセンブルし、ソ
ース・データ値が、対応するロード・メモリ命令のメモ
リ・アドレスを特定するようにする。プロセッサは、対
応するソース・データ値が、ロード・メモリ命令のシー
ケンシャルなプログラム順序に無関係にアセンブルされ
た後に、各ロード・メモリ命令を実行する。それぞれの
実行されたロード・メモリ命令は、結果のデータ値を生
成する。
The processor assembles at least one source data value for each load memory instruction such that the source data value identifies the memory address of the corresponding load memory instruction. The processor executes each load memory instruction after the corresponding source data value has been assembled regardless of the sequential program order of the load memory instructions. Each executed load memory instruction produces a resulting data value.

【0017】プロセッサは、それぞれの実行されたロー
ド・メモリ命令のメモリ・アドレスに対する外部格納動
作のためにマルチプロセッサ・バスを調べる。実行され
たロード・メモリ命令のメモリ・アドレスに対する外部
格納動作が検出されない場合は、プロセッサは、それぞ
れの実行されたロード・メモリ命令の結果のデータ値
を、シーケンシャルなプログラム順序に従ってアーキテ
クチャ状態にコミットする。
The processor examines the multiprocessor bus for external store operations for the memory address of each executed load memory instruction. If no external store operation is detected for the memory address of the executed load memory instruction, the processor commits the resulting data value of each executed load memory instruction to the architectural state in sequential program order. .

【0018】結果のデータ値がアーキテクチャ状態にコ
ミットされる前に、実行されたロード・メモリ命令のメ
モリ・アドレスに対する外部格納動作が検出された場合
には、プロセッサは、それぞれの実行されたロード・メ
モリ命令の結果のデータ値を捨てる。次いでプロセッサ
は、捨てられた結果のデータ値に対応するロード・メモ
リ命令から始まる命令ストリームを再実行する。
If an external store operation for the memory address of the executed load memory instruction is detected before the resulting data value is committed to the architectural state, then the processor is responsible for each executed load memory instruction. Discard the data value resulting from the memory instruction. The processor then re-executes the instruction stream starting with the load memory instruction corresponding to the discarded resulting data value.

【0019】[0019]

【実施例】本発明の他の目的、特徴及び利点は、添付の
図面及び以下の詳細な説明から明らかになるであろう。
Other objects, features and advantages of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.

【0020】本発明は、例により図解されるが、同じ参
照番号が同様な要素を示す添付の図面に限定されるもの
ではない。
The present invention is illustrated by way of example and not limitation in the accompanying figures, in which like reference numbers indicate similar elements.

【0021】図1は、マルチプロセッサ・コンピュータ
・システム20を示す。マルチプロセッサ・コンピュー
タ・システム20は、一組のプロセッサ22〜24、及
びメモリ・サブシステム26からなる。プロセッサ22
〜24及びメモリ・サブシステム26は、マルチプロセ
ッサ・バス28を介して通信する。
FIG. 1 illustrates a multiprocessor computer system 20. The multiprocessor computer system 20 comprises a set of processors 22-24 and a memory subsystem 26. Processor 22
24 and memory subsystem 26 communicate via a multiprocessor bus 28.

【0022】プロセッサ22〜24のそれぞれは、マク
ロ命令のストリームをメモリ・サブシステム26からマ
ルチプロセッサ・バス28を介してフェッチする。プロ
セッサ22〜24のそれぞれは、対応するマクロ命令の
ストリームを実行し、メモリ・サブシステム26内に格
納されているデータを維持する。
Each of the processors 22-24 fetches a stream of macroinstructions from the memory subsystem 26 via the multiprocessor bus 28. Each of the processors 22-24 executes a corresponding stream of macroinstructions and maintains the data stored in the memory subsystem 26.

【0023】図2は、プロセッサ22を示す。プロセッ
サ22は、バス・インタフェース回路30と命令フェッ
チ及びマイクロ演算(micro−op)発行回路32
を含むフロントエンド部を含んでいる。プロセッサ22
は、レジスタ・エイリアス回路34及び割り当て回路3
6を含むレジスタ・リネーム部も含んでいる。また、プ
ロセッサ22は、予約及びディスパッチ回路38、実行
回路40、並び替え回路42、及び実レジスタ回路44
からなるアウト・オブ・オーダー実行部も含んでいる。
FIG. 2 shows the processor 22. The processor 22 includes a bus interface circuit 30 and an instruction fetch and micro operation (micro-op) issuing circuit 32.
Includes the front end part including. Processor 22
Is a register alias circuit 34 and an allocation circuit 3
It also includes a register rename section including 6. The processor 22 also includes a reservation and dispatch circuit 38, an execution circuit 40, a rearrangement circuit 42, and a real register circuit 44.
It also includes an out-of-order execution unit consisting of.

【0024】バス・インタフェース回路30は、マルチ
プロセッサ・バス28を介してアドレス、データ及び制
御情報の転送を可能にする。命令フェッチ及びマイクロ
演算発行回路32は、マクロ命令のストリームをメモリ
・サブシステム26からマルチプロセッサ・バス28を
介してバス・インタフェース回路30を通してフェッチ
する。命令フェッチ及びマイクロ演算発行回路32は、
推論的(speculative)分岐予測を実施し、
マクロ命令フェッチ処理能力を最大化する。
The bus interface circuit 30 enables transfer of address, data and control information via the multiprocessor bus 28. The instruction fetch and micro operation issue circuit 32 fetches a stream of macro instructions from the memory subsystem 26 via the multiprocessor bus 28 and through the bus interface circuit 30. The instruction fetch and micro operation issue circuit 32
Perform speculative branch prediction,
Maximize macro instruction fetch processing capacity.

【0025】一つの実施例では、マルチプロセッサ・バ
ス28を介してフェッチされたマクロ命令のストリーム
はインテル・アーキテクチャ・マイクロプロセッサ(I
ntel Architecture Micropr
ocessor)マクロ命令を含んでいる。インテル・
アーキテクチャ・マイクロプロセッサ・マクロ命令は、
EAXレジスタ、EBXレジスタ、ECXレジスタ、及
びEDXレジスタ等を含む一組のアーキテクチャ・レジ
スタ(architectual register)
上で動作する。
In one embodiment, the stream of macroinstructions fetched over the multiprocessor bus 28 is an Intel architecture microprocessor (I
ntel Architecture Micropr
processor) macro instruction. Intel
Architecture microprocessor microprocessor instructions
A set of architectural registers including EAX registers, EBX registers, ECX registers, EDX registers, etc.
Works on.

【0026】命令フェッチ及びマイクロ演算発行回路3
2は、マクロ命令の入力ストリームのマクロ命令を論理
マイクロ演算のイン・オーダーのストリームに変換す
る。命令フェッチ及びマイクロ演算発行回路32は、各
入力マクロ命令毎に一つ以上の論理マイクロ演算を生成
する。各マクロ命令に対応した論理マイクロ演算は、対
応するマクロ命令の機能を実行する縮小命令セットのマ
クロ動作である。論理マイクロ演算は、メモリ・サブシ
ステム26に対するロード及び格納動作と同様に、算術
及び論理演算を特定する。
Instruction fetch and micro operation issuing circuit 3
2 converts the macroinstructions in the input stream of macroinstructions into an in-order stream of logic micro-operations. The instruction fetch and micro operation issuing circuit 32 generates one or more logical micro operations for each input macro instruction. The logic micro operation corresponding to each macro instruction is a macro operation of a reduced instruction set that executes the function of the corresponding macro instruction. Logic micro-operations specify arithmetic and logic operations, as well as load and store operations for memory subsystem 26.

【0027】命令フェッチ及びマイクロ演算発行回路3
2は、論理マイクロ演算のイン・オーダーのストリーム
を、論理マイクロ演算バス50を介して、レジスタ・ア
イリアス回路34及び割り当て回路36に転送する。一
つの実施例では、命令フェッチ及びマイクロ演算発行回
路32は、プロセッサ22の各クロック・サイクルの期
間中に四つ迄のイン・オーダーの論理マイクロ演算を発
行する。また、イン・オーダーの論理マイクロ演算を、
各クロック・サイクルの期間中に四つに限定して、プロ
セッサ22の集積回路の無効領域を最少化することがで
きる。
Instruction fetch and micro operation issue circuit 3
2 transfers the in-order stream of logic micro-operations to the register alias circuit 34 and the allocation circuit 36 via the logic micro-operation bus 50. In one embodiment, instruction fetch and micro-op issue circuit 32 issues up to four in-order logic micro-ops during each clock cycle of processor 22. In addition, in-order logic micro-operation,
Limited to four during each clock cycle, the dead area of the integrated circuit of the processor 22 can be minimized.

【0028】命令フェッチ及びマイクロ演算発行回路3
2は、マイクロ命令シーケンサ及び関連する制御記憶
(store)を含んでいる。マイクロ命令シーケンサ
は、プロセッサ22の、障害回復機能及びプロセッサ順
序付け機能を含む各種の機能を実行するためのマイクロ
・プログラムを実施する。
Instruction fetch and micro operation issue circuit 3
2 includes a microinstruction sequencer and associated control store. The microinstruction sequencer implements microprograms for performing various functions of processor 22, including fault recovery and processor sequencing functions.

【0029】命令フェッチ及びマイクロ演算発行回路3
2により生成された各論理マイクロ演算は、演算コード
(op code)、一対の論理ソース、及び論理デス
ティネーションを含んでいる。各論理ソースは、レジス
タを特定したり即時データ値を与えたりすることができ
る。論理マイクロ演算のレジスタ論理ソース及び論理デ
スティネーションは、元のマクロ命令のアーキテクチャ
・レジスタを特定する。加えて、論理マイクロ演算のレ
ジスタ論理ソース及び論理デスティネーションは、命令
フェッチ及びマイクロ演算発行回路32のマイクロ命令
シーケンサにより実施されたマイクロコード用のテンポ
ラリ・レジスタを特定する。
Instruction fetch and micro operation issue circuit 3
Each logic micro-operation generated by 2 includes an operation code (op code), a pair of logic sources, and a logic destination. Each logical source can specify a register or provide an immediate data value. The register logic source and destination of the logic micro-operation identifies the architectural register of the original macroinstruction. In addition, the register logic sources and destinations of the logic micro-ops specify temporary registers for micro-code implemented by the micro-instruction sequencer of the instruction fetch and micro-op issue circuit 32.

【0030】レジスタ・エイリアス回路34は、イン・
オーダーの論理マイクロ演算を論理マイクロ演算バス5
0を介して受信し、論理マイクロ演算の論理ソース及び
論理デスティネーションをリネームすることにより対応
する一組のイン・オーダーの物理マイクロ演算を生成す
る。レジスタ・エイリアス回路34は、イン・オーダー
の論理マイクロ演算を論理マイクロ演算バス50を介し
て受け、各論理マイクロ演算の論理ソース及び論理デス
ティネーションを物理ソース及び物理デスティネーショ
ンにマッピングし、イン・オーダーの物理マイクロ演算
を物理マイクロ演算バス52を介して転送する。
The register alias circuit 34 is
Logic micro arithmetic bus 5 for ordering logic micro arithmetic
Receiving via 0 and renaming the logical source and destination of the logical micro-operation produces a corresponding set of in-order physical micro-operations. The register alias circuit 34 receives in-order logical micro-operations via the logical micro-operation bus 50, maps the logical source and logical destination of each logical micro-operation to a physical source and physical destination, and in-orders. Of the physical micro-calculations are transferred via the physical micro-calculation bus 52.

【0031】各物理マイクロ演算は、対応する論理マイ
クロ演算の演算コード、一対の物理ソース、及び物理デ
スティネーションを含んでいる。各物理ソースは、物理
レジスタを特定したり即時データ値を与えたりすること
ができる。物理マイクロ演算のレジスタ物理ソースは、
並び替え回路42に含まれる物理レジスタと実レジスタ
回路44に含まれるコミットされた状態レジスタを特定
する。物理マイクロ演算の物理デスティネーションは、
並び替え回路42に含まれる物理レジスタを特定する。
Each physical micro operation includes an operation code of a corresponding logical micro operation, a pair of physical sources, and a physical destination. Each physical source can specify a physical register or provide an immediate data value. Physical micro arithmetic register physical source is
The physical register included in the rearrangement circuit 42 and the committed state register included in the real register circuit 44 are specified. The physical destination of physical micro operation is
The physical register included in the rearrangement circuit 42 is specified.

【0032】レジスタ・エイリアス回路34は、論理マ
イクロ演算の論理デスティネーションを論理デスティネ
ーション・バス54を介して転送する。論理デスティネ
ーションバス54を介して転送された論理デスティネー
ションは、物理マイクロ演算バス52上の物理デスティ
ネーションに対応するアーキテクチャ・レジスタを識別
する。
The register alias circuit 34 transfers the logical destination of the logical micro operation via the logical destination bus 54. The logical destination transferred via logical destination bus 54 identifies the architectural register corresponding to the physical destination on physical micro-op bus 52.

【0033】割り当て回路36は、並び替え回路42、
予約及びディスパッチ回路38、及び実行回路40の中
の利用可能な資源を探知する。割り当て回路36は、並
び替え回路42内の物理デスティネーションと予約及び
ディスパッチ回路38内の予約ステーション・エントリ
を、物理マイクロ演算バス52上の物理マイクロ演算に
割り当てる。割り当て回路36は、また、実行回路40
内のメモリ順序付けバッファ内のロード・バッファ・エ
ントリを、ロード・メモリ動作を特定する演算コードを
有する物理マイクロ演算バス52上の物理マイクロ演算
に割り当てる。
The allocation circuit 36 includes a rearrangement circuit 42,
Locate available resources in reservation and dispatch circuit 38, and execution circuit 40. The allocation circuit 36 allocates the physical destination in the reordering circuit 42 and the reservation station entry in the reservation and dispatch circuit 38 for physical micro-computation on the physical micro-computation bus 52. The allocation circuit 36 also includes an execution circuit 40.
The load buffer entries in the memory ordering buffers in are assigned to physical micro-ops on the physical micro-op bus 52 having opcodes that specify load memory operations.

【0034】割り当て回路36は、割り当てられた物理
デスティネーションを、物理デスティネーション・バス
56を介してレジスタ・エイリアス回路34に転送す
る。割り当てられた物理デスティネーションは、並び替
え回路42内の物理レジスタを特定し、物理マイクロ演
算のための推論的な結果を緩衝する。割り当てられた物
理デスティネーションは、レジスタ・エイリアス回路3
4により使用されて、論理マイクロ演算の論理デスティ
ネーションを物理デスティネーションにリネームする。
The allocation circuit 36 transfers the allocated physical destination to the register alias circuit 34 via the physical destination bus 56. The assigned physical destination identifies the physical register within the reordering circuit 42 and buffers speculative results for physical micro-operations. The assigned physical destination is the register alias circuit 3
Used by 4 to rename a logical destination of a logical micro operation to a physical destination.

【0035】割り当て回路36は、並び替え回路42の
物理レジスタを、物理マイクロ演算に、論理マイクロ演
算が論理マイクロ演算バス50を介して受信されたのと
同じ順序で割り当てる。割り当て回路36は、並び替え
回路42の物理レジスタを割り当てるための割り当てポ
インタを維持する。割り当てポインタは、論理マイクロ
演算バス50を介して受信された論理マイクロ演算の各
組毎に、並び替え回路42内の連続する物理レジスタの
次の組を指し示す。並び替え回路42内の物理マイクロ
演算に割り当てられた物理レジスタの順序付けは、元の
論理マイクロ演算の順序付けを反映している。
Assignment circuit 36 assigns the physical registers of reordering circuit 42 to physical micro-ops in the same order in which the logical micro-ops were received via logical micro-op bus 50. The allocation circuit 36 maintains an allocation pointer for allocating the physical register of the rearrangement circuit 42. The allocation pointer points to the next set of consecutive physical registers in the reordering circuit 42 for each set of logical micro-ops received via the logical micro-op bus 50. The ordering of the physical registers assigned to the physical micro-operations in the rearrangement circuit 42 reflects the ordering of the original logical micro-operations.

【0036】割り当て回路36は、予約ステーション選
択バス66を介して予約及びディスパッチ回路38に対
する予約ステーションエントリ選択信号を転送すること
により、物理マイクロ演算バス52上の物理マイクロ演
算のための予約ステーションエントリを特定する。
The allocation circuit 36 transfers the reservation station entry selection signal to the reservation and dispatch circuit 38 via the reservation station selection bus 66, thereby allocating the reservation station entry for the physical micro operation on the physical micro operation bus 52. Identify.

【0037】割り当て回路36は、ロード・バッファ・
エントリを、ロード・メモリ演算コードを特定する物理
マイクロ演算バス52上の各物理マイクロ演算に割り当
てる。割り当て回路36は、ロード・バッファ識別子
を、ロード・バッファIDバス72を介して、予約及び
ディスパッチ回路38に転送することによりロード・バ
ッファ・エントリを割り当てる。
The allocation circuit 36 uses the load buffer
An entry is assigned to each physical micro-op on the physical micro-op bus 52 that identifies a load memory opcode. The allocation circuit 36 allocates the load buffer entry by transferring the load buffer identifier to the reservation and dispatch circuit 38 via the load buffer ID bus 72.

【0038】予約及びディスパッチ回路38は、実行回
路40により実行されるのを待っている物理マイクロ演
算を保持する。予約及びディスパッチ回路38は、物理
マイクロ演算バス52を介してイン・オーダー物理マイ
クロ演算を受信し、物理マイクロ演算用のソース・デー
タをアセンブリし、物理マイクロ演算を実行回路40へ
ディスパッチする。
The reservation and dispatch circuit 38 holds the physical micro-operations waiting to be executed by the execution circuit 40. The reservation and dispatch circuit 38 receives the in-order physical micro-operations via the physical micro-operation bus 52, assembles the source data for the physical micro-operations, and dispatches the physical micro-operations to the execution circuit 40.

【0039】予約及びディスパッチ回路38は、物理マ
イクロ演算バス52を介して物理マイクロ演算を受信
し、利用可能な予約ステーション・エントリへ物理マイ
クロ演算を格納する。予約及びディスパッチ回路38
は、物理マイクロ演算用のソース・データをアセンブル
し、ソース・データがアセンブルされたときに、実行回
路40内の適切な実行ユニットへ物理マイクロ演算をデ
ィスパッチする。
The reservation and dispatch circuit 38 receives physical micro-ops via the physical micro-op bus 52 and stores the physical micro-ops in the available reservation station entries. Reservation and dispatch circuit 38
Assembles the source data for the physical micro-operations and dispatches the physical micro-operations to the appropriate execution units within execution circuit 40 when the source data is assembled.

【0040】予約及びディスパッチ回路38は、物理マ
イクロ演算を保留するためのソース・データを、ソース
・データ・バス58を介して並び替え回路42及び実レ
ジスタ回路44から受信する。予約及びディスパッチ回
路38は、また、実行回路40からの並び替え回路42
への推論的なライト・バック(write back)
の期間に、物理マイクロ演算を保留するためのソース・
データを、結果バス(result bus)62を介
して実行回路40からも受信する。
The reservation and dispatch circuit 38 receives the source data for suspending the physical micro operation from the rearrangement circuit 42 and the real register circuit 44 via the source data bus 58. The reservation and dispatch circuit 38 also includes a rearrangement circuit 42 from the execution circuit 40.
Speculative write back to (write back)
Sources for holding physical micro-operations during
Data is also received from the execution circuit 40 via the result bus 62.

【0041】予約及びディスパッチ回路38は、実行の
ために完全にアセンブルされたソース・データを有する
物理マイクロ演算をスケジューリングする。予約及びデ
ィスパッチ回路38は、準備のできた物理マイクロ演算
をマイクロ演算ディスパッチ・バス60を介して実行回
路40へディスパッチする。予約及びディスパッチ回路
38は、物理マイクロ演算のためのソース・データの使
用可能度(availability)に従って、ま
た、実行回路40におけるユニット・ソースの実行の使
用可能度に従って、アウト・オブ・オーダーの物理マイ
クロ演算の実行をスケジューリングする。
Reservation and dispatch circuit 38 schedules physical micro-operations with fully assembled source data for execution. The reserve and dispatch circuit 38 dispatches the ready physical micro-operations to the execution circuit 40 via the micro-operation dispatch bus 60. The reservation and dispatch circuit 38 is out-of-order physical micro according to the availability of source data for physical micro-operations and according to the availability of execution of unit sources in the execution circuit 40. Schedule the execution of operations.

【0042】実行回路40は、推論的な結果を、物理マ
イクロ演算のアウト・オブ・オーダー実行から並び替え
回路42へ結果バス62を介してライトバックする。予
約及びディスパッチ回路38によるアウト・オブ・オー
ダー・ディスパッチングによるアウト・オブ・オーダー
と、異なった形式の物理マイクロ演算の実行に必要とさ
れるプロセッサ22のサイクルの数とは異なっているこ
とにより、実行回路40による推論的な結果のライトバ
ックはアウト・オブ・オーダーである。
The execution circuit 40 writes back speculative results from out-of-order execution of physical micro-operations to the reordering circuit 42 via the result bus 62. Due to the different out-of-order due to out-of-order dispatching by the reservation and dispatch circuit 38 and the number of processor 22 cycles required to perform different forms of physical micro-operations, Writeback of speculative results by the execution circuit 40 is out of order.

【0043】一つの実施例では、実行回路40は、五つ
の実行ユニットEU0〜EU4を含んでいる。予約及び
ディスパッチ回路38は、マイクロ演算ディスパッチ・
バス60を介して実行ユニットEU0〜EU4へ同時に
五つまでの物理マイクロ演算をディスパッチする。
In one embodiment, execution circuit 40 includes five execution units EU0-EU4. The reservation and dispatch circuit 38 is a micro arithmetic dispatch
Up to five physical micro-operations are dispatched simultaneously to execution units EU0-EU4 via bus 60.

【0044】実行ユニットEU0は、浮動小数点の加
算、減算、乗算及び除算のマイクロ演算と同様に、整数
の乗算及び除算を含む算術論理ユニット(ALU)機能
を実行する。実行ユニットEU1は、ALU整数機能及
びジャンプ動作機能を実行する。実行ユニットEU2
は、ロード・リニア・アドレス機能及びセグメント・レ
ジスタ動作と同様に、メモリからの整数及び浮動小数点
のロード動作を実行する。実行ユニットEU3は、整数
及び浮動小数点の格納とセグメンターション・レジスタ
動作を実行する。実行ユニットEU4は、整数及び浮動
小数点の格納データ動作を実行する。
The execution unit EU0 performs arithmetic logic unit (ALU) functions including integer multiplication and division, as well as floating point addition, subtraction, multiplication and division micro-operations. The execution unit EU1 executes the ALU integer function and the jump operation function. Execution unit EU2
Performs integer and floating point load operations from memory, as well as load linear address functions and segment register operations. Execution unit EU3 performs integer and floating point storage and segmentation register operations. Execution unit EU4 performs integer and floating point stored data operations.

【0045】並び替え回路42は、物理マイクロ演算の
ための推論的な結果を緩衝する物理レジスタを含んでい
る。並び替え回路42内の各物理レジスタは、整数デー
タ値と浮動小数点データ値とを収納する。
The reordering circuit 42 includes physical registers that buffer speculative results for physical micro-operations. Each physical register in the rearrangement circuit 42 stores an integer data value and a floating point data value.

【0046】実レジスタ回路44は、マクロ命令の元の
ストリーム・アーキテクチャ・レジスタに対応するコミ
ットされた状態レジスタを含んでいる。実レジスタ回路
44内のそれぞれのコミットされた状態レジスタは、整
数データ値と浮動小数点データ値とを収納する。
The real register circuit 44 contains the committed state register corresponding to the original stream architecture register of the macroinstruction. Each committed state register in the real register circuit 44 contains an integer data value and a floating point data value.

【0047】一つの実施例では、実レジスタ回路44の
コミットされた状態レジスタは、インテル・アーキテク
チャ・マイクロプロセッサ用のアーキテクチャ・フラグ
と同様に、インテル・アーキテクチャ・マイクロプロセ
ッサのEAX、EBX、ECX及びEDXレジスタ等を
含んでいる。実レジスタ回路44は、また、命令フェッ
チ及びマイクロ演算発行回路32内のマイクロコード実
行により使用されるマイクロコード・レジスタのための
コミットされた状態レジスタも含んでいる。
In one embodiment, the committed status register of the real register circuit 44 is similar to the architecture flags for Intel architecture microprocessors, as well as the EAX, EBX, ECX and EDX of Intel architecture microprocessors. Includes registers etc. The real register circuit 44 also includes a committed state register for the microcode registers used by the microcode execution within the instruction fetch and microop issue circuit 32.

【0048】並び替え回路42及び実レジスタ回路44
は、物理マイクロ演算を物理マイクロ演算バス52を介
して受信する。物理マイクロ演算の物理ソースは、並び
替え回路42内の物理レジスタと物理マイクロ演算用の
ソース・データを保持する実レジスタ・ファイル44内
のコミットされた状態レジスタを特定する。
Rearrangement circuit 42 and real register circuit 44
Receives physical micro-computations via the physical micro-computation bus 52. The physical source of the physical micro operation identifies the physical register in the reordering circuit 42 and the committed state register in the real register file 44 that holds the source data for the physical micro operation.

【0049】並び替え回路42及び実レジスタ回路44
は、物理ソースにより特定されたソース・データを読み
取り、ソース・データを予約及びディスパッチ回路38
へソース・データ・バス58を介して転送する。物理マ
イクロ演算の各物理ソースは、ソース・データが並び替
え回路42内の物理レジスタに含まれているか、或い
は、実レジスタ・ファイル44内のコミットされた状態
レジスタに含まれているかを示す実レジスタ・ファイル
有効(RRFV)フラグを含んでいる。
The rearrangement circuit 42 and the actual register circuit 44.
Reads the source data specified by the physical source and reserves the source data and dispatch circuit 38.
To the source data bus 58. Each physical source of physical micro-operations is a real register that indicates whether the source data is contained in a physical register in the reordering circuit 42 or in a committed state register in the real register file 44. Includes a file valid (RRFV) flag.

【0050】物理マイクロ演算バス52上の物理マイク
ロ演算の物理デスティネーションは、物理マイクロ演算
のアウト・オブ・オーダー実行の推論的結果を緩衝する
ために、並び替え回路42内の物理レジスタを特定す
る。並び替え回路42は、物理マイクロ演算の物理デス
ティネーションを物理マイクロ演算バス52を介して受
信し、物理デスティネーションにより特定された物理レ
ジスタをクリアする。
The physical destination of the physical micro-operations on the physical micro-operation bus 52 identifies the physical registers within the reordering circuit 42 to buffer the speculative results of out-of-order execution of the physical micro-operations. . The rearrangement circuit 42 receives the physical destination of the physical micro operation via the physical micro operation bus 52, and clears the physical register specified by the physical destination.

【0051】並び替え回路42は、物理マイクロ演算に
対応する論理デスティネーションを論理デスティネーシ
ョン・バス54を介して受信し、論理デスティネーショ
ンを、物理マイクロ演算の物理デスティネーションによ
り特定された物理レジスタに格納する。並び替え回路4
2の物理レジスタ内の論理デスティネーションは、物理
マイクロ演算の退避(retirement)のために
実レジスタ回路44内のコミットされた状態レジスタを
特定する。
The rearrangement circuit 42 receives the logical destination corresponding to the physical micro operation via the logical destination bus 54, and stores the logical destination in the physical register specified by the physical destination of the physical micro operation. Store. Sorting circuit 4
The logical destination in the second physical register identifies the committed state register in the real register circuit 44 for physical micro-operation retirement.

【0052】退避論理回路46は、並び替え回路42の
物理レジスタ内に保持されていた推論的な結果を、アー
キテクチャ状態に、元の論理マイクロ演算が受信された
のと同じ順序でコミットすることにより、物理マイクロ
演算に順序を課する。退避論理回路46は、並び替え回
路42内の推論的な結果のデータの、退避バス64を介
しての、実レジスタ回路44内の対応するコミットされ
た状態レジスタへの転送を引き起こす。一つの実施例で
は、退避論理回路46は、プロセッサ22の各サイクル
の期間中に、四つまでの物理レジスタを退避する。他の
実施例では、退避論理回路46は、プロセッサ22の各
サイクルの期間中に、三つまでの物理レジスタを退避し
て、集積回路の無効領域を最少化する。
The save logic circuit 46 commits the speculative results held in the physical registers of the reordering circuit 42 to the architectural state in the same order in which the original logical micro-operation was received. , Impose order on physical micro-operations. The save logic circuit 46 causes the data of the speculative result in the rearrangement circuit 42 to be transferred via the save bus 64 to the corresponding committed state register in the real register circuit 44. In one embodiment, the save logic circuit 46 saves up to four physical registers during each cycle of the processor 22. In another embodiment, the save logic circuit 46 saves up to three physical registers during each cycle of the processor 22 to minimize the invalid area of the integrated circuit.

【0053】退避論理回路46は、また、退避の期間に
マクロ命令ポインタ・オフセット・バス120を介し
て、並び替え回路42に物理マイクロ演算の退避のため
のマクロ命令ポインタ・デルタ値を転送させる。
The save logic circuit 46 also causes the rearrangement circuit 42 to transfer the macro instruction pointer delta value for saving the physical micro operation via the macro instruction pointer offset bus 120 during the save period.

【0054】再開始回路48は、マクロ命令ポインタ・
オフセット・バス120を介して、マクロ命令ポインタ
・デルタ値を受信する。再開始回路48は、退避ROB
エントリのためのマクロ命令ポインタ・デルタに従っ
て、コミットされた命令ポインタ値を計算する。
The restart circuit 48 uses the macro instruction pointer
The macro instruction pointer delta value is received via the offset bus 120. The restart circuit 48 uses the save ROB
Calculate the committed instruction pointer value according to the macro instruction pointer delta for the entry.

【0055】退避論理回路46は、並び替え回路42内
の物理レジスタに対する退避ポインタを維持する。退避
ポインタは、退避のために連続する物理レジスタの組を
指し示す。退避ポインタは、退避論理がコミットされた
状態に対する物理レジスタの推論的な結果を退避するに
従って、並び替え回路42内の物理レジスタを通して割
り当てポインタに従う。退避論理回路46は、物理レジ
スタが物理マイクロ演算に順序通りに割り当てられてい
るので、物理レジスタを順序通りに退避する。
The save logic circuit 46 maintains a save pointer for the physical register in the rearrangement circuit 42. The save pointer points to a set of consecutive physical registers for saving. The save pointer follows the allocation pointer through the physical register in the rearrangement circuit 42 as the speculative result of the physical register for the state where the save logic is committed is saved. The save logic circuit 46 saves the physical registers in order because the physical registers are assigned to the physical micro operation in order.

【0056】退避論理回路46は、退避ポインタにより
退避通知バス70を介して特定された退避物理デスティ
ネーションをブロードキャストする。実行回路40内の
メモリ順序付けバッファは、退避物理デスティネーショ
ンを受信し、一組のメモリ順序付け再開始信号76を発
行する。メモリ順序付け再開始信号76は、退避物理デ
スティネーションの一つに対応するメモリ・ロード動作
が、発生し得るプロセッサの順序付け違反を引き起こし
たかどうかを示す。メモリ順序付け再開始信号76は、
どの退避物理デスティネーションが、発生し得るプロセ
ッサの順序付け違反を引き起こしたかを示す。
The save logic circuit 46 broadcasts the specified save physical destination via the save notification bus 70 by the save pointer. The memory ordering buffer in the execution circuit 40 receives the saved physical destination and issues a set of memory ordering restart signals 76. The memory ordering restart signal 76 indicates whether the memory load operation corresponding to one of the saved physical destinations caused a possible processor ordering violation. The memory ordering restart signal 76 is
Indicates which saved physical destination caused a possible processor ordering violation.

【0057】メモリ順序付け再開始信号76は、再開始
回路48により受信される。メモリ順序付け再開始信号
76が、発生し得るプロセッサの順序付け違反を示す場
合には、再開始回路48は、並び替えクリア信号78を
発行する。並び替えクリア信号78は、並び替え回路4
2に、退避されていない物理マイクロ演算のための推論
的な結果のデータをクリアさせる。並び替えクリア信号
78は、予約及びディスパッチ回路38に、実行回路4
0へのディスパッチを待っている保留物理マイクロ演算
をクリアさせる。並び替えクリア信号78は、また、割
り当て回路36に、並び替え回路42内の物理レジスタ
を割り当てるための割り当てポインタをリセットさせ、
退避論理回路46に、物理レジスタを退避するための退
避ポインタをリセットさせる。
The memory ordering restart signal 76 is received by the restart circuit 48. If the memory ordering restart signal 76 indicates a possible processor ordering violation, the restart circuit 48 issues a reorder clear signal 78. The rearrangement clear signal 78 is the rearrangement circuit 4
2 causes the data of the speculative result for the physical micro operation which has not been saved to be cleared. The rearrangement clear signal 78 is sent to the reservation and dispatch circuit 38 by the execution circuit 4
Clear pending physical micro-ops awaiting dispatch to 0. The rearrangement clear signal 78 also causes the allocation circuit 36 to reset the allocation pointer for allocating the physical register in the rearrangement circuit 42,
The save logic circuit 46 resets the save pointer for saving the physical register.

【0058】メモリ順序付け再開始信号76が、発生し
得るプロセッサの順序付け違反を示す場合には、再開始
回路48は、マクロ命令ポインタ・オフセット・バス1
20を介して受信されたマクロ命令ポインタ・デルタ値
を使用して、再開始命令ポインタ値を計算する。再開始
命令ポインタ値は、発生し得るメモリ順序付け違反を引
き起こす物理マイクロ演算に対応するマクロ命令を特定
する。再開始回路48は、再開始命令ポインタ値を命令
フェッチ及びマイクロ演算発行回路32に再開始ベクト
ル・バス122を介して転送する。
If the memory ordering restart signal 76 indicates a possible processor ordering violation, the restart circuit 48 causes the macroinstruction pointer offset bus 1 to
The macro instruction pointer delta value received via 20 is used to calculate the restart instruction pointer value. The restart instruction pointer value identifies the macroinstruction corresponding to the physical micro-operation that causes the possible memory ordering violation. The restart circuit 48 transfers the restart instruction pointer value to the instruction fetch and micro operation issue circuit 32 via the restart vector bus 122.

【0059】命令フェッチ及びマイクロ演算発行回路3
2は、再開始命令ポインタ値を再開始ベクトル・バス1
22を介して受信する。順序付けクリア信号78は、命
令フェッチ及びマイクロ演算発行回路32のマイクロ命
令シーケンスに、退避の前に並び替え回路42からクリ
アされた論理マイクロ演算のイン・オーダー・ストリー
ムを再発行させる。命令フェッチ及びマイクロ演算発行
回路32は、再開始命令ポインタ値により特定されるマ
クロ命令アドレスから始まるマクロ命令ストリームをフ
ェッチし、マクロ命令ストリームを論理マイクロ演算に
変換し、論理マイクロ演算を論理マイクロ演算バス50
を介して転送することにより、論理マイクロ演算を再発
行する。
Instruction fetch and micro operation issue circuit 3
2 sets the restart instruction pointer value to restart vector bus 1
22 to receive. The ordering clear signal 78 causes the instruction fetch and microinstruction issuing circuit 32 microinstruction sequence to reissue the in-order stream of logical microops that was cleared from the reordering circuit 42 prior to saving. The instruction fetch and micro operation issue circuit 32 fetches a macro instruction stream starting from the macro instruction address specified by the restart instruction pointer value, converts the macro instruction stream into a logic micro operation, and converts the logic micro operation into a logic micro operation bus. Fifty
Reissue the logic micro-operation by transferring through.

【0060】メモリ順序付け再開始信号76が、発生し
得るプロセッサの順序付け違反を示さない場合には、退
避物理デスティネーションにより特定された物理レジス
タの退避が進行する。並び替え回路42は、退避物理デ
スティネーションのための有効フラグをテストする。並
び替え回路42は、退避物理レジスタの有効フラグが有
効な推論的なデータを示す場合には、各退避物理レジス
タ毎に推論的な結果データを退避する。並び替え回路4
2は、推論的な結果データを、物理レジスタの論理デス
ティネーションにより特定された実レジスタ回路44内
のコミットされた状態レジスタへ転送させることによ
り、物理レジスタを退避する。
If the memory ordering restart signal 76 does not indicate a possible processor ordering violation, the saving of the physical register identified by the saving physical destination proceeds. The rearrangement circuit 42 tests the valid flag for the saved physical destination. The rearrangement circuit 42 saves the speculative result data for each save physical register when the valid flag of the save physical register indicates valid speculative data. Sorting circuit 4
2 transfers the speculative result data to the committed state register in the real register circuit 44 specified by the logical destination of the physical register, thereby saving the physical register.

【0061】レジスタ・エイリアス回路34及び割り当
て回路36は、退避物理デスティネーションを退避通知
バス70を介して受信する。したがって、レジスタ・エ
イリアス回路34は、レジスタ・エイリアス・テーブル
を更新して退避を反映する。割り当て回路36は、並び
替え回路42内の退避物理レジスタを、割り当て可能で
あるとして記録する。
The register alias circuit 34 and the allocation circuit 36 receive the save physical destination via the save notification bus 70. Therefore, the register alias circuit 34 updates the register alias table to reflect the saving. The allocation circuit 36 records the saved physical registers in the rearrangement circuit 42 as allocatable.

【0062】図3は、レジスタ・エイリアス回路34の
機能を示す図である。レジスタ・エイリアス回路34
は、論理マイクロ演算を論理マイクロ演算バス50を介
してイン・オーダーに受け、論理ソース及びデスティネ
ーションを物理ソース及びデスティネーションにマッピ
ングすることにより、論理マイクロ演算を対応する物理
マイクロ演算に変換し、次いで、物理マイクロ演算を物
理マイクロ演算バス52を介してイン・オーダーに転送
する。
FIG. 3 is a diagram showing the function of the register / alias circuit 34. Register alias circuit 34
Receives a logical micro-operation in-order via the logical micro-operation bus 50 and maps the logical source and destination to the physical source and destination to convert the logical micro-operation to a corresponding physical micro-operation, The physical micro-computation is then transferred in-order via the physical micro-computation bus 52.

【0063】レジスタ・エイリアス回路34は、レジス
タ・エイリアス・テーブル80を備えている。レジスタ
・エイリアス・テーブル80は、論理マイクロ演算の論
理ソース及びデスティネーションを、対応する物理マイ
クロ演算の物理ソース及びデスティネーションにマッピ
ングすることにより、論理レジスタから物理レジスタの
リネームを実行する。物理マイクロ演算の物理ソース及
びデスティネーションは、並び替え回路42内の物理レ
ジスタと実レジスタ回路44内のコミットされた状態レ
ジスタを特定する。
The register alias circuit 34 includes a register alias table 80. The register alias table 80 performs the renaming of physical registers from logical registers by mapping the logical sources and destinations of logical micro-operations to the physical sources and destinations of the corresponding physical micro-operations. The physical source and destination of the physical micro-operation identifies the physical register in the reordering circuit 42 and the committed state register in the real register circuit 44.

【0064】レジスタ・エイリアス・テーブル80内の
エントリは、元のマクロ命令ストリームのアーキテクチ
ャ・レジスタに対応している。一つの実施例では、レジ
スタ・エイリアス・テーブル80のEAX、EBX、E
CX及びEDXエントリは、インテル・アーキテクチャ
・マイクロプロセッサのEAX、EBX、ECX及びE
DXレジスタに対応している。
The entries in the register alias table 80 correspond to architectural registers in the original macro instruction stream. In one embodiment, register alias table 80 EAX, EBX, E
The CX and EDX entries are EAX, EBX, ECX and E for Intel architecture microprocessors.
It corresponds to the DX register.

【0065】レジスタ・エイリアス・テーブル80内の
各エントリは、並び替えバッファ(ROB)ポインタを
含んでいる。ROBポインタは、対応するアーキテクチ
ャ・レジスタのための推論的な結果のデータを保持する
並び替え回路42内の物理レジスタを特定する。レジス
タ・エイリアス・テーブル80内の各エントリは、ま
た、対応するアーキテクチャ・レジスタのための推論的
な結果のデータが、実レジスタ回路44内の適当なコミ
ットされた状態レジスタに退避されているかどうかを示
す実レジスタ・ファイル有効(RRFV)フラグをも含
んでいる。
Each entry in the register alias table 80 contains a reordering buffer (ROB) pointer. The ROB pointer identifies the physical register within reordering circuit 42 that holds the speculative result data for the corresponding architectural register. Each entry in the register alias table 80 also indicates whether the speculative result data for the corresponding architectural register has been saved to the appropriate committed state register in the real register circuit 44. It also contains the Real Register File Valid (RRFV) flag shown.

【0066】レジスタ・エイリアス回路34は、一組の
イン・オーダー論理マイクロ演算(lmop_0〜lm
op_3)を論理マイクロ演算バス50を介して受信す
る。各論理マイクロ演算は、演算コード、一対の論理ソ
ースlsrc1及びlsrc2、論理デスティネーショ
ンldst、及びマクロ命令ポインタ・データmipd
を含んでいる。論理ソースlsrc1及びlsrc2、
及び、論理デスティネーションldstは、それぞれマ
クロ命令の元のアーキテクチャ・レジスタを特定する。
The register alias circuit 34 includes a set of in-order logic micro-operations (lmop_0-lm).
op_3) via the logic micro arithmetic bus 50. Each logical micro-operation consists of an operation code, a pair of logical sources lsrc1 and lsrc2, a logical destination ldst, and a macroinstruction pointer data mipd.
Is included. Logical sources lsrc1 and lsrc2,
And, the logical destination ldst identifies the original architectural register of the macroinstruction, respectively.

【0067】レジスタ・エイリアス回路34は、また、
一組の割り当てられた物理デスティネーション(all
oc_pdst_0〜alloc_pdst_3)も、
割り当て回路36から物理デスティネーション・バス5
6を介して受信する。物理デスティネーションallo
c_pdst_0〜alloc_pdst_3は、論理
マイクロ演算lmop_0〜lmop_3のための並び
替え回路42内の新たに割り当てられた物理レジスタを
特定する。物理デスティネーションalloc_pds
t_0〜alloc_pdst_3により特定された並
び替え回路42内の物理レジスタは、論理マイクロ演算
lmop_0〜lmop_3に対応する物理マイクロ演
算のための推論的な結果のデータを保持するこになる。
The register alias circuit 34 also
A set of assigned physical destinations (all
oc_pdst_0 to alloc_pdst_3)
Assignment circuit 36 to physical destination bus 5
6 through 6. Physical destination allo
c_pdst_0 to alloc_pdst_3 identify the newly allocated physical registers in the reordering circuit 42 for the logical micro-operations lmop_0 to lmop_3. Physical destination alloc_pds
The physical register in the rearrangement circuit 42 specified by t_0 to alloc_pdst_3 holds the data of the speculative result for the physical micro operation corresponding to the logical micro operation lmop_0 to lmop_3.

【0068】レジスタ・エイリアス回路34は、一組の
イン・オーダー物理マイクロ演算(pmop_0〜pm
op_3)を物理マイクロ演算バス52を介して転送す
る。各物理マイクロ演算は、演算コード、一対の物理ソ
ースpsrc1及びpsrc2及び物理デスティネーシ
ョンpdstを含んでいる。物理ソースpsrc1及び
psrc2は、それぞれ、並び替え回路42内の物理レ
ジスタ、或いは、実レジスタ回路44内のコミットされ
た状態レジスタを特定する。物理デスティネーションp
dstは、並び替え回路42内の物理レジスタを特定し
て、対応する物理マイクロ演算のための推論的な結果の
データを保持する。
The register alias circuit 34 includes a set of in-order physical micro-operations (pmop_0-pm).
op_3) via the physical micro arithmetic bus 52. Each physical micro operation includes an operation code, a pair of physical sources psrc1 and psrc2, and a physical destination pdst. The physical sources psrc1 and psrc2 specify the physical register in the reordering circuit 42 or the committed state register in the real register circuit 44, respectively. Physical destination p
The dst specifies the physical register in the rearrangement circuit 42 and holds the data of the speculative result for the corresponding physical micro operation.

【0069】レジスタ・エイリアス回路34は、論理マ
イクロ演算lmop_0〜lmop_3の論理ソース
を、並び替え回路42の物理レジスタ、及び、レジスタ
・エイリアス・テーブル80により特定されたような、
実レジスタ回路44の特定されたコミットされた状態レ
ジスタへマッピングすることにより、物理マイクロ演算
pmop_0〜pmop_3を生成する。レジスタ・エ
イリアス回路34は、物理デスティネーションallo
c_pdst_0〜alloc_pdst_3を、物理
マイクロ演算pmop_0〜pmop_3へマージす
る。
The register alias circuit 34 determines the logical sources of the logical micro-operations lmop — 0 to lmop — 3 as specified by the physical register of the rearrangement circuit 42 and the register alias table 80.
Generate physical micro-operations pmop_0-pmop_3 by mapping to the identified committed state registers of the real register circuit 44. The register / alias circuit 34 is connected to the physical destination allo.
Merge c_pdst_0 to alloc_pdst_3 into physical micro-operations pmap_0 to pmap_3.

【0070】物理マイクロ演算pmop_0〜pmop
_3の演算コードは、論理マイクロ演算lmop_0〜
lmop_3の対応する演算コードと同じである。たと
えば、レジスタ・エイリアス回路34は、pmop_0
の演算コードがlmop_0の演算コードと等しくなる
ようにpmop_0を生成する。
Physical micro operation pmop_0 to pmop
The operation code of _3 is the logical micro operation lmop_0.
This is the same as the corresponding operation code of lmap_3. For example, the register alias circuit 34 uses pmop_0.
Pmop_0 is generated so that the operation code of 1 is equal to the operation code of lmop_0.

【0071】たとえば、レジスタ・エイリアス回路34
は、lmop_0の論理ソースlrsc1により特定さ
れたレジスタ・エイリアス・テーブル80のエントリを
読むことにより、物理マイクロ演算pmop_0のため
の物理ソースpsrc1を生成する。特定されたレジス
タ・エイリアス・テーブル80のエントリのRRFVフ
ラグがセットされていない場合には、次いで、レジスタ
・エイリアス回路34は、pmop_0のための物理ソ
ースpsrc1と同様に、物理マイクロ演算バス52を
介してRRFVフラグと共に特定されたレジスタ・エイ
リアス・テーブル80のエントリからROBポインタを
転送する。RRFVビットがセットされている場合に
は、次いで、レジスタ・エイリアス回路34は、ポイン
タを、pmop_0のための物理ソースpsrc1とし
て物理マイクロ演算バス52を介してRRFVフラグと
共に論理ソースlsrc1に対応する実レジスタ回路4
4内のコミットされた状態レジスタに転送する。
For example, register alias circuit 34
Generates a physical source psrc1 for the physical micro-operation pmop_0 by reading the entry in the register alias table 80 identified by the logical source lrsc1 of lmop_0. If the RRFV flag of the identified register alias table 80 entry is not set, then the register alias circuit 34, via the physical micro-op bus 52, as well as the physical source psrc1 for pmop_0. The ROB pointer from the register alias table 80 entry identified with the RRFV flag. If the RRFV bit is set, then the register alias circuit 34 uses the pointer as the physical source psrc1 for pmop_0 via the physical micro-op bus 52 along with the RRFV flag to the real register corresponding to the logical source lsrc1. Circuit 4
Transfer to the committed state register in 4.

【0072】レジスタ・エイリアス回路34は、lmo
p_0の論理ソースlrsc2に対応するレジスタ・エ
イリアス・テーブル80のエントリを読むことにより、
物理マイクロ演算pmop_0のための物理ソースps
rc2を生成する。RRFVフラグがセットされていな
い場合には、次いで、レジスタ・エイリアス回路34
は、pmop_0のための物理ソースpsrc2と同様
に、物理マイクロ演算バス52を介してRRFVフラグ
と共に特定されたレジスタ・エイリアス・テーブル80
のエントリからROBポインタを転送する。RRFVビ
ットがセットされている場合には、次いで、レジスタ・
エイリアス回路34は、ポインタを、pmop_0のた
めの物理ソースpsrc2として物理マイクロ演算バス
52を介してRRFVフラグと共に論理ソースlsrc
2に対応する実レジスタ回路44内のコミットされた状
態レジスタに転送する。
The register / alias circuit 34 uses lmo
By reading the entry in the register alias table 80 corresponding to the logical source lrsc2 of p_0,
Physical source ps for physical micro-operation pmop_0
Generate rc2. If the RRFV flag is not set, then register alias circuit 34
Register alias table 80 identified with RRFV flag via physical micro-op bus 52 as well as physical source psrc2 for pmop_0.
The ROB pointer is transferred from the entry. If the RRFV bit is set, then the register
The alias circuit 34 uses the pointer as a physical source psrc2 for pmop_0 through the physical micro-op bus 52 along with the RRFV flag to the logical source lsrc.
2 to the committed state register in the real register circuit 44 corresponding to 2.

【0073】レジスタ・エイリアス回路34は、物理デ
スティネーションalloc_pdst_0を、lmo
p_0の論理デスティネーションldstにより特定さ
れたレジスタ・エイリアス・テーブル80のエントリの
ROBポインタ・フィールドへ格納し、対応するRRF
Vビットをクリアする。クリアRRFVビットは、対応
するアーキテクチャ・レジスタの現在の状態が、対応す
るROBポインタにより特定された並び替え回路42の
物理レジスタ内に推論的に保持されていることを示す。
The register / alias circuit 34 sets the physical destination alloc_pdst_0 to lmo.
Store in the ROB pointer field of the entry in the register alias table 80 identified by the logical destination ldst of p_0 and store the corresponding RRF
Clear the V bit. The clear RRFV bit indicates that the current state of the corresponding architectural register is speculatively held in the physical register of the reordering circuit 42 identified by the corresponding ROB pointer.

【0074】レジスタ・エイリアス回路34は、一組の
論理デスティネーションldst0〜ldst_3及び
対応するマクロ命令ポインタ・デルタmipd_0〜m
ipd_3を、論理デスティネーション・バス54を介
して転送する。論理デスティネーションldst_0〜
ldst_3は、論理マイクロ演算lmop_0〜lm
op_3の論理デスティネーションldstである。
The register alias circuit 34 includes a set of logical destinations ldst0 to ldst_3 and corresponding macroinstruction pointer delta mipd_0 to m.
ipd_3 is transferred via the logical destination bus 54. Logical destination ldst_0
ldst_3 is a logical micro operation lmop_0 to lm.
This is the logical destination ldst of op_3.

【0075】マクロ命令ポインタ・デルタmipd_0
〜mipd_3は、論理マイクロ演算lmop_0〜l
mop_3のマクロ命令ポインタ・デルタmipdであ
る。マクロ命令ポインタ・デルタmipd_0は、lm
op_0の論理デスティネーションldstであり、マ
クロ命令ポインタ・デルタmipd_1は、lmop_
1の論理デスティネーションldstであり、以下同様
である。マクロ命令ポインタ・デルタmipd_0〜m
ipd_3は、物理マイクロ演算pmop_0〜pmo
p_3に対応する元のマクロ命令を識別する。
Macro instruction pointer delta mipd_0
~ Mipd_3 are logical micro-operations lmap_0 to l
It is the macro instruction pointer delta mipd of mop_3. The macro instruction pointer delta mipd_0 is lm
is a logical destination ldst of op_0, and the macro instruction pointer delta mipd_1 is lmop_
1 logical destination ldst, and so on. Macro instruction pointer delta mipd_0-m
ipd_3 is a physical micro operation pmop_0 to pmo
Identify the original macroinstruction corresponding to p_3.

【0076】図4は、並び替え回路42を示す。並び替
え回路42は、一組のROBエントリ(RE0〜RE
n)を含む並び替えバッファ82を備えている。ROB
エントリRE0〜REnは、物理マイクロ演算のアウト
・オブ・オーダー実行から推論的な結果のデータを緩衝
する物理レジスタである。一つの実施例では、ROBエ
ントリRE0〜REnは、一組64個の物理レジスタを
含んでいる。他の実施例では、ROBエントリRE0〜
REnは、一組40個の物理レジスタを含んでいる。
FIG. 4 shows the rearrangement circuit 42. The rearrangement circuit 42 includes a set of ROB entries (RE0 to RE
n) is included in the rearrangement buffer 82. ROB
Entries RE0-REn are physical registers that buffer speculative result data from out-of-order execution of physical micro-operations. In one embodiment, ROB entries RE0-REn include a set of 64 physical registers. In another embodiment, ROB entries RE0-RE0
REn includes a set of 40 physical registers.

【0077】各ROBエントリは、有効フラグ(V)、
結果データ値、一組のフラグ、フラグ・マスク、論理デ
スティネーション(LDST)、障害データ、及び命令
ポインタ・データ(IPDELTA)を含んでいる。
Each ROB entry has a valid flag (V),
It includes a result data value, a set of flags, a flag mask, a logical destination (LDST), fault data, and instruction pointer data (IPDELTA).

【0078】有効フラグは、対応するROBエントリの
ための結果データ値が有効であるか否かを示す。並び替
え回路42は、それぞれの新たに割り当てられたROB
エントリのための有効フラグをクリアし、無効な結果デ
ータ値であることを示す。並び替え回路42は、推論的
な結果データがROBエントリに実行回路40からライ
ト・バックされたときに、有効フラグをセットする。
The valid flag indicates whether the result data value for the corresponding ROB entry is valid. The rearrangement circuit 42 uses the newly assigned ROBs.
Clear the valid flag for the entry, indicating an invalid result data value. The rearrangement circuit 42 sets the valid flag when the speculative result data is written back to the ROB entry from the execution circuit 40.

【0079】結果データ値は、対応する物理マイクロ演
算のアウト・オブ・オーダー実行からの推論的な結果で
ある。結果データ値は、整数データ値或いは浮動小数点
データのいずれであってもよい。一つの実施例では、R
OBエントリRE0〜REnのそれぞれの結果データ値
フィールドは、整数と浮動小数点データ値の双方を収納
するために86ビットからなる。
Result data values are speculative results from out-of-order execution of corresponding physical micro-operations. The result data value may be either an integer data value or floating point data. In one embodiment, R
The result data value field of each of the OB entries RE0-REn consists of 86 bits to accommodate both integer and floating point data values.

【0080】フラグ及びフラグ・マスクは、推論的なア
ーキテクチャ・フラグ情報を提供する。推論的なアーキ
テクチャ・フラグ情報は、対応するROBエントリの退
避時に実レジスタ回路44のアーキテクチャ・フラグに
転送される。
Flags and flag masks provide speculative architectural flag information. The speculative architecture flag information is transferred to the architecture flag of the real register circuit 44 when the corresponding ROB entry is saved.

【0081】論理デスティネーションLDSTは、実レ
ジスタ回路44内のコミットされた状態レジスタを特定
する。対応するROBエントリの結果データ値は、RO
Bエントリの退避の間にLDSTにより特定されたコミ
ットされた状態レジスタに転送される。
The logical destination LDST identifies the committed state register in the real register circuit 44. The result data value of the corresponding ROB entry is RO
Transferred to the committed state register specified by LDST during the saving of the B entry.

【0082】障害データは、命令フェッチ及びマイクロ
演算発行回路32において実行される障害処理マイクロ
・コードのための障害情報を含んでいる。障害が発生し
たときには、障害取扱マイクロ・コードは、障害データ
を読んで障害の原因を決定する。
The fault data includes fault information for the fault handling micro code executed in the instruction fetch and micro operation issuing circuit 32. When a fault occurs, the fault handling microcode reads the fault data to determine the cause of the fault.

【0083】IPDELTAは、物理レジスタに対応す
るマクロ命令を識別するマクロ命令ポインタ・デルタ値
である。
IPDELTA is a macroinstruction pointer delta value that identifies the macroinstruction corresponding to the physical register.

【0084】並び替え回路42は、物理マイクロ演算p
mop_0〜pmop_3を、物理マイクロ演算バス5
2を介して受ける。並び替え回路42は、物理マイクロ
演算pmop_0〜pmop_3により特定されたソー
ス・データを、並び替えバッファ82から読む。並び替
え回路42は、結果データ値及び有効フラグを、物理マ
イクロ演算の物理ソースpsrc1及びpsrc2によ
り特定されたROBエントリから、予約及びディスパッ
チ回路38へソース・データ・バス58を介して転送す
る。
The rearrangement circuit 42 uses the physical micro operation p.
The physical micro arithmetic bus 5 is connected to mop_0 to pmop_3.
Receive through 2. The rearrangement circuit 42 reads, from the rearrangement buffer 82, the source data specified by the physical micro operation pmop_0 to pmop_3. The reordering circuit 42 transfers the resulting data value and the valid flag from the ROB entry identified by the physical sources psrc1 and psrc2 of the physical micro-operation to the reservation and dispatch circuit 38 via the source data bus 58.

【0085】たとえば、pmop 0の物理ソースps
rc1及びpsrc2により特定されたROBエントリ
からの結果データ値及び有効フラグは、ソース・データ
src1/src2data_0として、ソース・デー
タ・バス58を介して転送される。ソース・データsr
c1/src2data_0は、対応する有効フラグが
有効ソース・データを示している場合には、pmop_
0の物理ソースpsrc1及びpsrc2により特定さ
れたデータ・ソースを提供する。
For example, the physical source ps of pmap 0
The result data value and the valid flag from the ROB entry specified by rc1 and psrc2 are transferred via the source data bus 58 as the source data src1 / src2data_0. Source data sr
c1 / src2data_0 is pmap__ if the corresponding valid flag indicates valid source data.
Provides a data source identified by zero physical sources psrc1 and psrc2.

【0086】同様に、並び替え回路42は、結果データ
値及び有効フラグを、適当なROBエントリから、ソー
ス・データsrc1/src2data_1〜ソース・
データsrc1/src2data_3として、物理マ
イクロ演算pmop_1〜pmop_3のために、ソー
ス・データ・バス58を介して転送する。
Similarly, the rearrangement circuit 42 sets the result data value and the valid flag to the source data src1 / src2data_1 to the source data from the appropriate ROB entry.
The data src1 / src2data_3 is transferred via the source data bus 58 for the physical micro-operations pmop_1 to pmop_3.

【0087】並び替え回路42は、物理マイクロ演算バ
ス52を介して受信された物理マイクロ演算pmop_
0〜pmop_3の物理デスティネーションpdstに
より特定されたROBエントリの有効ビットをクリアす
る。並び替え回路42は、結果データ値を生成する物理
マイクロ演算pmop_0〜pmop_3が予約及びデ
ィスパッチ回路38においてアセンブルされていないの
で、有効ビットをクリアして、対応する結果データ値が
有効でないことを示す。
The rearrangement circuit 42 receives the physical micro-operation pmop__ received via the physical micro-operation bus 52.
The valid bit of the ROB entry specified by the physical destination pdst of 0 to pmop_3 is cleared. The reordering circuit 42 clears the valid bit to indicate that the corresponding result data value is not valid, because the physical micro-operations pmop_0 to pmop_3 that generate the result data value have not been assembled in the reservation and dispatch circuit 38.

【0088】並び替え回路42は、論理デスティネーシ
ョンldst_0〜ldst_3及びマクロ命令ポイン
タ・デルタmipd_0〜mipd_3を、論理デステ
ィネーション・バス54を介して受信する。並び替え回
路42は、論理デスティネーションldst_0〜ld
st_3を、物理マイクロ演算pmop_0〜pmop
_3)の物理デスティネーションpdstにより特定さ
れるROBエントリのLDSTフィールドに格納する。
並び替え回路42は、マクロ命令ポインタ・デルタmi
pd_0〜mipd_3を、物理マイクロ演算pmop
_0〜pmop_3)の物理デスティネーションpds
tにより特定されるROBエントリのIPDELTAフ
ィールドに格納する。
The rearrangement circuit 42 receives the logical destinations ldst_0 to ldst_3 and the macro instruction pointer deltas mipd_0 to mipd_3 via the logical destination bus 54. The rearrangement circuit 42 uses the logical destinations ldst_0 to ld.
st_3 is a physical micro operation pmop_0 to pmop
_3) stored in the LDST field of the ROB entry specified by the physical destination pdst.
The rearrangement circuit 42 uses the macro instruction pointer / delta mi
pd_0 to mipd_3 are converted to physical micro operation pmop
_0 to pmop_3) physical destination pds
It is stored in the IPDELTA field of the ROB entry specified by t.

【0089】たとえば、並び替え回路42は、ldst
_0及びmipd_0を、pmop_0の物理デスティ
ネーションpdstにより特定されるROBエントリの
LDST及びIPDELTAに格納する。ROBエント
リのLDSTフィールド内の論理デスティネーション
は、対応するROBエントリの退避のために、実レジス
タ回路44内のコミットされた状態レジスタを特定す
る。ROBエントリのIPDELTAフィールド内のマ
クロ命令ポインタ・デルタは、対応するROBエントリ
の元のマクロ命令を特定する。
For example, the rearrangement circuit 42 uses the ldst
_0 and mipd_0 are stored in the LDST and IPDELTA of the ROB entry specified by the physical destination pdst of pmop_0. The logical destination in the LDB field of the ROB entry identifies the committed state register in the real register circuit 44 for saving the corresponding ROB entry. The macroinstruction pointer delta in the IPDELTA field of the ROB entry identifies the original macroinstruction of the corresponding ROB entry.

【0090】並び替え回路42は、ライト・バックされ
た推論的な結果情報を、実行回路40から結果バス62
を介して受信する。実行ユニットEU0〜EU4からの
ライト・バックされた推論的な結果情報は、結果データ
値、物理デスティネーションpdst及び障害データを
含んでいる。
The rearrangement circuit 42 transfers the written back speculative result information from the execution circuit 40 to the result bus 62.
To receive via. The written back speculative result information from the execution units EU0 to EU4 contains the result data value, the physical destination pdst and the fault data.

【0091】並び替え回路42は、ライト・バックされ
た推論的な結果情報を、実行ユニットEU0〜EU4か
ら、結果バス62上で物理デスティネーションpdst
により特定されるROBエントリへ格納する。実行ユニ
ットEU0〜EU4のそれぞれ毎に、並び替え回路42
は、結果データ値を結果データ値フィールドへ格納し、
障害データを、物理デスティネーションpdstにより
特定されるROBエントリの障害データ・フィールドへ
格納する。
The rearrangement circuit 42 transfers the written back speculative result information from the execution units EU0 to EU4 on the result bus 62 to the physical destination pdst.
Stored in the ROB entry specified by. The rearrangement circuit 42 is provided for each of the execution units EU0 to EU4.
Stores the result data value in the result data value field,
The fault data is stored in the fault data field of the ROB entry identified by the physical destination pdst.

【0092】実行回路40からの結果データ値は、それ
ぞれ有効フラグを含んでいる。各有効フラグは、物理デ
スティネーションpdstにより特定されるROBエン
トリの有効フラグ・フィールドに格納される。実行ユニ
ットEU0〜EU4は、有効フラグをセットして、対応
する結果データ値が有効であることを示す。
The result data values from the execution circuit 40 each include a valid flag. Each valid flag is stored in the valid flag field of the ROB entry identified by the physical destination pdst. Execution units EU0-EU4 set a valid flag to indicate that the corresponding result data value is valid.

【0093】並び替え回路42は、退避物理デスティネ
ーションを、退避通知バス70を介して受信する。退避
物理デスティネーションは、推論的な結果データ値を実
レジスタ回路44へ退避バス64を介して転送すること
により、並び替え回路42に、ROBエントリRE0〜
REn内の推論的な結果データ値をアーキテクチャ状態
へコミットさせる。
The rearrangement circuit 42 receives the save physical destination via the save notification bus 70. The evacuation physical destination transfers the speculative result data value to the real register circuit 44 via the evacuation bus 64 so that the rearrangement circuit 42 receives the ROB entries RE0 to RE0.
Commit the speculative result data value in REn to the architectural state.

【0094】退避バス64は、一組の退避マイクロ演算
rm_0〜rm_4のための推論的な結果を運ぶ。退避
マイクロ演算rm_0〜rm_4のそれぞれは、ROB
エントリRE0〜REnの一つからの結果データ値及び
論理デスティネーションldstを含んでいる。
The save bus 64 carries speculative results for a set of save micro-operations rm_0 to rm_4. Each of the save micro-operations rm_0 to rm_4 is a ROB.
It contains the result data value from one of the entries RE0-REn and the logical destination ldst.

【0095】退避論理回路46からの退避物理デスティ
ネーションは、また、並び替え回路42に、退避ROB
エントリのためのマクロ命令ポインタ・デルタを、再開
始回路48へマクロ命令ポインタ・オフセット・バス1
20を介して転送させる。
The save physical destination from the save logic circuit 46 is also sent to the rearrangement circuit 42 by the save ROB.
Macro instruction pointer delta for entry to restart circuit 48 Macro instruction pointer offset bus 1
Transfer via 20.

【0096】並び替え回路42は、並び替えクリア信号
78を再開始回路48から受信する。並び替えクリア信
号78は、並び替え回路42に全てのROBエントリを
クリアさせる。
The rearrangement circuit 42 receives the rearrangement clear signal 78 from the restart circuit 48. The rearrangement clear signal 78 causes the rearrangement circuit 42 to clear all ROB entries.

【0097】図5は、予約及びディスパッチ回路38を
示す。予約及びディスパッチ回路38は、一組の予約ス
テーション・エントリRS0〜RSxを含む予約ディス
パッチ・テーブル84を備えている。予約及びディスパ
ッチ回路38は、物理マイクロ演算pmop_0〜pm
op_3を受信し、利用可能な予約ステーション・エン
トリRS0〜RSxに格納し、物理マイクロ演算のため
のソース・データを予約ステーション・エントリRS0
〜RSxにアセンブルし、準備済物理マイクロ演算を実
行回路40にディスパッチする。物理マイクロ演算は、
ソース・データが予約ステーション・エントリRS0〜
RSxにおいて完全にアセンブルされたとときに準備済
状態である。
FIG. 5 shows the reservation and dispatch circuit 38. The reservation and dispatch circuit 38 comprises a reservation dispatch table 84 containing a set of reservation station entries RS0-RSx. The reservation and dispatch circuit 38 uses physical micro-operations pmop_0-pm
Op_3 is received and stored in the available reservation station entries RS0-RSx and the source data for physical micro-computation is reserved station entry RS0.
Assemble to RSx and dispatch the prepared physical micro operation to the execution circuit 40. Physical micro operation
Source data is reserved station entry RS0
It is ready when it is fully assembled in RSx.

【0098】予約ステーション・エントリRS0〜RS
xのそれぞれは、エントリ有効フラグ、演算コード、一
対のソース・データ値(SRC1/SRC2 DAT
A)及び対応する有効フラグ(V)、一対の物理ソース
(PSRC1/PSRC2)、物理デスティネーション
(PDST)、及びロード・バッファ識別子(LBI
D)を含んでいる。
Reserved station entries RS0 to RS
Each x is an entry valid flag, an operation code, a pair of source data values (SRC1 / SRC2 DAT
A) and the corresponding valid flag (V), a pair of physical sources (PSRC1 / PSRC2), a physical destination (PDST), and a load buffer identifier (LBI).
D) is included.

【0099】エントリ有効フラグは、対応する予約ステ
ーション・エントリRS0〜RSxが、ディスパッチを
待っている物理マイクロ演算を保持しているか否かを示
す。
The entry valid flag indicates whether or not the corresponding reservation station entry RS0 to RSx holds a physical micro operation waiting for dispatch.

【0100】演算コードは、対応する予約ステーション
・エントリRS0〜RSxにおいて、物理マイクロ演算
のための実行ユニット回路40の動作を特定する。
The operation code specifies the operation of the execution unit circuit 40 for the physical micro operation in the corresponding reservation station entries RS0 to RSx.

【0101】予約ステーション・エントリRS0〜RS
xのSRC1/SRC2 DATAフィールドは、対応
するマイクロ演算のためのソース・データ値を保持す
る。対応する有効フラグは、ソース・データ値が有効で
あるか否かを示す。
Reserved station entries RS0 to RS
The SRC1 / SRC2 DATA field of x holds the source data value for the corresponding micro operation. The corresponding valid flag indicates whether the source data value is valid.

【0102】予約ステーション・エントリRS0〜RS
xのそれぞれの物理ソースPSRC1/PSRC2は、
対応する物理マイクロ演算のためのソース・データを保
持する並び替え回路42内の物理デスティネーションを
特定する。予約及びディスパッチ回路38は、物理ソー
スPSRC1/PSRC2を使用して実行回路40から
並び替え回路42への保留ソース・データのライト・バ
ックを検出する。
Reserved station entries RS0 to RS
Each physical source PSRC1 / PSRC2 of x is
Identify the physical destination within the reordering circuit 42 that holds the source data for the corresponding physical micro operation. The reservation and dispatch circuit 38 uses the physical sources PSRC1 / PSRC2 to detect write back of pending source data from the execution circuit 40 to the reordering circuit 42.

【0103】予約ステーション・エントリRS0〜RS
xのそれぞれの物理デスティネーションは、並び替え回
路42における物理デスティネーションを特定して、対
応する物理マイクロ演算のための推論的な結果を保持す
る。
Reserved station entries RS0 to RS
Each physical destination of x identifies the physical destination in the reordering circuit 42 and holds the speculative result for the corresponding physical micro-operation.

【0104】予約ステーション・エントリRS0〜RS
xのそれぞれのロード・バッファ識別子LBIDは、実
行回路40においてメモリ順序付け回路内のロード・バ
ッファ・エントリを特定する。ロード・バッファ・エン
トリは、対応する予約ステーション・エントリがロード
・メモリ物理マイクロ演算を保持する場合に有効であ
る。
Reserved station entries RS0 to RS
Each load buffer identifier LBID of x identifies a load buffer entry in the memory ordering circuit at execution circuit 40. A load buffer entry is valid if the corresponding reservation station entry holds a load memory physical micro operation.

【0105】予約及びディスパッチ回路38は、物理マ
イクロ演算pmop_0〜pmop_3を物理マイクロ
演算バス52を介して受信する。予約及びディスパッチ
回路38は、また、予約ステーション・エントリ選択信
号66も割り当て回路36から受信する。予約ステーシ
ョン・エントリ選択信号66は、新しい予約ステーショ
ン・エントリを特定する。
The reservation and dispatch circuit 38 receives the physical micro operation pmop_0 to pmop_3 via the physical micro operation bus 52. The reservation and dispatch circuit 38 also receives a reservation station entry select signal 66 from the allocation circuit 36. Reserved station entry select signal 66 identifies a new reserved station entry.

【0106】予約及びディスパッチ回路38は、演算コ
ード及び物理ソースpsrc1及びpsrc2を、物理
マイクロ演算pmop_0〜pmop_3のそれぞれ毎
に、予約ステーション・エントリ選択信号66により特
定される新しい予約ステーション・エントリRS0〜R
Sxに格納する。予約及びディスパッチ回路38は、新
しい予約ステーション・エントリのそれぞれ毎にエント
リ有効フラグをセットする。
The reservation and dispatch circuit 38 assigns the operation code and the physical sources psrc1 and psrc2 to the new reservation station entries RS0 to RS specified by the reservation station entry selection signal 66 for each of the physical micro operations pmop_0 to pmop_3.
Store in Sx. The reservation and dispatch circuit 38 sets an entry valid flag for each new reservation station entry.

【0107】予約及びディスパッチ回路38は、ロード
・メモリ物理マイクロ演算のためのロード・バッファ識
別子を、ロード・バッファIDバス72を介して割り当
て回路36から受信する。予約及びディスパッチ回路3
8は、ロード・バッファ識別子を、新しい予約ステーシ
ョン・エントリRS0〜RSxの適当なLBIDフィー
ルドに格納する。
The reservation and dispatch circuit 38 receives the load buffer identifier for the load memory physical micro operation from the allocation circuit 36 via the load buffer ID bus 72. Reservation and dispatch circuit 3
8 stores the load buffer identifier in the appropriate LBID field of the new reservation station entries RS0-RSx.

【0108】予約及びディスパッチ回路38は、ソース
・データ・バス58を介しての並び替え回路42及び実
レジスタ回路44からの物理マイクロ演算pmop_0
〜pmop_3の物理ソースpsrc1及びpsrc2
により特定される。予約及びディスパッチ回路38は、
ソース・データ値及び有効フラグを、SRC1/SRC
2 DATAフィールド及び物理マイクロ演算pmop
_0〜pmop_3に対応する新しい予約ステーション
・エントリの有効フラグに転送する。
The reservation and dispatch circuit 38 uses the physical micro-operation pmop_0 from the rearrangement circuit 42 and the real register circuit 44 via the source data bus 58.
~ Physical sources ppm_3 psrc1 and psrc2
Specified by. The reservation and dispatch circuit 38
Set source data value and valid flag to SRC1 / SRC
2 DATA field and physical micro operation pmop
Transfer to the valid flag of the new reservation station entry corresponding to _0 to pmop_3.

【0109】エントリ有効フラグが、予約ステーション
・テーブル・エントリRS0〜RSxのためのソース・
データ値の一方或いは双方が無効であることを示す場合
には、次いで、予約及びディスパッチ回路38は、実行
回路40が先にディスパッチされた物理マイクロ演算を
実行するのを待ち、要求されたソース・データ値を生成
する。
The entry valid flag indicates the source for reserved station table entries RS0-RSx.
If one or both of the data values indicate that they are invalid, then the reservation and dispatch circuit 38 waits for the execution circuit 40 to execute the previously dispatched physical micro-operation and waits for the requested source Generate a data value.

【0110】予約及びディスパッチ回路38は、実行回
路40が結果データ値を、並び替え回路40にライト・
バックするのにつれて、結果バス62上の物理デスティ
ネーションpdstをモニタする。結果バス62上の物
理デスティネーションpdstが予約ステーション・テ
ーブル・エントリRS0〜RSxのための保留ソース・
データの物理デスティネーションに対応している場合に
は、次いで、予約及びディスパッチ回路38は、結果デ
ータ値を結果バス62を介して受信し、結果データ値を
対応するSRC1/SRC2 DATAフィールド及び
有効フラグに格納する。予約及びディスパッチ回路38
は、双方のソース・データ値が有効である場合には、保
留物理マイクロ演算を実行回路40にディスパッチす
る。
In the reservation and dispatch circuit 38, the execution circuit 40 writes the result data value to the rearrangement circuit 40.
As it goes back, it monitors the physical destination pdst on the result bus 62. The physical destination pdst on the result bus 62 is the pending source for reserved station table entries RS0-RSx.
If it corresponds to the physical destination of the data, then the reservation and dispatch circuit 38 receives the result data value via the result bus 62 and sends the result data value to the corresponding SRC1 / SRC2 DATA field and valid flag. To store. Reservation and dispatch circuit 38
Dispatches pending physical micro-operations to the execution circuit 40 if both source data values are valid.

【0111】図6は、実レジスタ回路44を示す。実レ
ジスタ回路44は、実レジスタ・ファイル86を備えて
いる。実レジスタ・ファイル86は、コミットされた結
果データ値を保持する一組のコミットされた状態レジス
タを含んでいる。コミットされた状態レジスタは、命令
フェッチ及びマイクロ演算発行回路32によりフェッチ
された元のマクロ命令のストリームのアーキテクチャ・
レジスタのためのコミットされた結果を緩衝する。
FIG. 6 shows the real register circuit 44. The real register circuit 44 includes a real register file 86. The real register file 86 contains a set of committed state registers that hold committed result data values. The committed state register is the architecture of the original macroinstruction stream fetched by the instruction fetch and micro-op issue circuit 32.
Buffer committed results for registers.

【0112】それぞれのコミットされた状態レジスタ内
の結果データ値は、整数データ値或いは浮動小数点デー
タ値のいずれかとすることができる。一つの実施例で
は、それぞれのコミットされた状態レジスタの結果デー
タ値フィールドは、整数と浮動小数点データ値の双方を
収納するため86ビットからなる。
The result data value in each committed state register can be either an integer data value or a floating point data value. In one embodiment, the result data value field of each committed state register consists of 86 bits to accommodate both integer and floating point data values.

【0113】一つの実施例では、コミットされた状態レ
ジスタは、インテル・アーキテクチャ・マイクロプロセ
ッサのアーキテクチャ・レジスタに対応するEAX、E
BX、ECX及びEDXのコミットされた状態レジスタ
等を含んでいる。実レジスタ・ファイル86は、また、
インテル・アーキテクチャ・マイクロプロセッサのアー
キテクチャ・フラグに対応するコミットされた状態フラ
グも含んでいる。実レジスタ・ファイル86は、また、
命令フェッチ及びマイクロ演算発行回路32におけるマ
イクロコードの実行により使用されるマイクロコード・
レジスタを含んでいる。
In one embodiment, the committed state register is the EAX, E corresponding to the architecture register of the Intel architecture microprocessor.
It contains the BX, ECX and EDX committed status registers. The real register file 86 also
It also contains the committed state flags that correspond to the architecture flags of the Intel architecture microprocessor. The real register file 86 also
Microcode used by instruction fetch and execution of microcode in the micro operation issuing circuit 32
Contains registers.

【0114】実レジスタ回路44は、物理マイクロ演算
pmop_0〜pmop_3を、物理マイクロ演算バス
52を介して受信する。実レジスタ回路44は、RRF
Vフラグが物理ソースが退避したことを示す場合には、
結果データ値を、実レジスタ・ファイル86からの物理
マイクロ演算pmop_0〜pmop_3の物理ソース
psrc1及びpsrc2により特定されるコミットさ
れた状態レジスタから読む。
The actual register circuit 44 receives the physical micro arithmetic operations pmop — 0 to pmop — 3 via the physical micro arithmetic operation bus 52. The real register circuit 44 is the RRF
If the V flag indicates that the physical source has been saved,
The resulting data value is read from the committed state register specified by the physical sources psrc1 and psrc2 of the physical micro-operations pmop_0 to pmop_3 from the real register file 86.

【0115】実レジスタ回路44は、物理ソースが実レ
ジスタ・ファイル内に退避したことをRRFVフラグが
示す場合には、結果データ値を、物理マイクロ演算の物
理ソースpsrc1及びpsrc2により特定されるコ
ミットされた状態レジスタから、予約及びディスパッチ
回路38へ、ソース・データ・バス58を介して転送す
る。コミットされた状態レジスタ内の結果データは常に
有効であるので、実レジスタ回路44は、ソース・デー
タを予約及びディスパッチ回路38へソース・データ・
バス58を介して転送している間に、常にソース・デー
タ有効フラグをセットする。
The real register circuit 44 commits the result data value specified by the physical sources psrc1 and psrc2 of the physical micro operation when the RRFV flag indicates that the physical source has been saved in the real register file. From the selected status register to the reservation and dispatch circuit 38 via the source data bus 58. Since the resulting data in the committed status register is always valid, real register circuit 44 reserves the source data to dispatch and dispatch circuit 38.
The source data valid flag is always set while transferring via bus 58.

【0116】pmop_0の物理ソースpsrc1のた
めのRRFVフラグがセットされている場合には、たと
えば、物理ソースpsrc1及びpsrc2により特定
されるコミットされた状態レジスタからの結果データ値
は、ソース・データsrcdata_0として、ソース
・データ・バス58を介して転送される。pmop_0
の物理ソースpsrc2のためのRRFVフラグがセッ
トされている場合には、pmop_0の物理ソースps
rc2により特定されるコミットされた状態レジスタか
らの結果データ値は、ソース・データsrc2data
_0として、ソース・データ・バス58を介して転送さ
れる。
If the RRFV flag for the physical source psrc_0 of psrc_0 is set, then the resulting data value from the committed state register identified by the physical sources psrc1 and psrc2 is the source data srcdata_0. , Source data bus 58. pmop_0
Physical source ps of pmap_0 if the RRFV flag for that physical source psrc2 is set
The result data value from the committed state register identified by rc2 is the source data src2data.
_0 is transferred via the source data bus 58.

【0117】同様に、物理マイクロ演算pmop_1〜
pmop_3の適切なRRFVフラグがセットされてい
る場合には、実レジスタ回路44は、ソース・データs
rc1/src2data_1からソース・データsr
c1/src2data_3を、ソース・データ・バス
58を介して転送して、物理マイクロ演算pmop_1
〜pmop_3のためのソース・データを提供する。
Similarly, the physical micro-operations pmop — 1 to
If the appropriate RRFV flag in pmop_3 is set, the real register circuit 44 will
Source data sr from rc1 / src2data_1
c1 / src2data_3 is transferred via the source data bus 58 to the physical micro-operation pmop_1.
Provide the source data for pmop_3.

【0118】実レジスタ回路44は、退避マイクロ演算
rm_0〜rm_3を並び替え回路42から退避バス6
4を介して受信する。退避マイクロ演算rm_0〜rm
_3のそれぞれは、並び替えバッファ82内のROBエ
ントリRE0〜REnの一つからの推論的な結果を含ん
でいる。
The real register circuit 44 transfers the save micro-operations rm_0 to rm_3 from the rearrangement circuit 42 to the save bus 6.
Received via 4. Evacuation micro operation rm_0 to rm
Each _3 contains the speculative result from one of the ROB entries RE0-REn in the reordering buffer 82.

【0119】退避マイクロ演算rm_0〜rm_3のそ
れぞれは、結果データ値及び論理デスティネーションl
dstを含んでいる。実レジスタ回路44は、退避マイ
クロ演算rm_0〜rm_3の結果データ値を、退避マ
イクロ演算rm_0〜rm_3の論理デスティネーショ
ンldstにより特定される実レジスタファイルのコミ
ットされた状態レジスタに格納する。
Each of the save micro operations rm_0 to rm_3 has a result data value and a logical destination l.
It contains dst. The real register circuit 44 stores the result data value of the save micro operation rm_0 to rm_3 in the committed state register of the real register file specified by the logical destination ldst of the save micro operation rm_0 to rm_3.

【0120】図7は、実行回路40内のロード・メモリ
回路を示す。ロード・メモリ回路は、アドレス生成回路
100、メモリ順序付け回路102、データ変換ルック
アサイド・バッファ(DTLB)回路104、及びデー
タ・キャッシュ回路106を備えている。
FIG. 7 shows a load memory circuit in the execution circuit 40. The load memory circuit includes an address generation circuit 100, a memory ordering circuit 102, a data conversion lookaside buffer (DTLB) circuit 104, and a data cache circuit 106.

【0121】アドレス生成回路100は、ディスパッチ
されたロード・メモリ物理マイクロ演算を予約及びディ
スパッチ回路38からマイクロ演算ディスパッチ・バス
60を介して受信する。マイクロ演算ディスパッチ・バ
ス60上のそれぞれのディスパッチされたロード・メモ
リ物理マイクロ演算は、演算コード、一対のソース・デ
ータ値src1_data及びsrc2_data、物
理デスティネーションpdst、及びロード・バッファ
識別子lbidを含んでいる。
Address generation circuit 100 receives dispatched load memory physical micro-operations from reservation and dispatch circuit 38 via micro-operation dispatch bus 60. Each dispatched load memory physical micro operation on the micro operation dispatch bus 60 includes an operation code, a pair of source data values src1_data and src2_data, a physical destination pdst, and a load buffer identifier lbid.

【0122】アドレス生成回路100は、ソース・デー
タ値src1_data及びsrc2_dataに従っ
て、それぞれのディスパッチされたロード・メモリ物理
マイクロ演算毎にリニア・アドレスを決定する。リニア
・アドレスは、また、仮想アドレスとして参照すること
もできる。一つの実施例では、アドレス生成回路100
は、メモリ・セグメント・レジスタを備えており、イン
テル・アーキテクチャ・マイクロプロセッサのメモリ・
セグメントに従ってリニア・アドレスを生成する。
The address generation circuit 100 determines a linear address for each dispatched load memory physical micro operation according to the source data values src1_data and src2_data. Linear addresses can also be referred to as virtual addresses. In one embodiment, the address generation circuit 100
Has a memory segment register, which enables the Intel architecture microprocessor memory
Generate linear address according to segment.

【0123】アドレス生成回路100は、リニア・ロー
ド・メモリ・マイクロ演算を、メモリ順序付け回路10
2へ、リニア動作バス90を介して転送する。リニア動
作バス90上の各リニア・ロード・メモリ動作は、マイ
クロ演算ディスパッチ・バス60を介して受信されたデ
ィスパッチされたロード・メモリ物理マイクロ演算に対
応している。各リニア・ロード・メモリ・マイクロ演算
は、対応するロード・メモリ物理マイクロ演算、対応す
るソース・データ値src1_data及びsrc2_
dataから決定されたリニア・アドレスl_add
r、対応する物理デスティネーションpdst、及び対
応するロード・バッファ識別子lbidを含んでいる。
The address generation circuit 100 executes the linear load memory micro operation in the memory ordering circuit 10.
2 through the linear operation bus 90. Each linear load memory operation on linear operation bus 90 corresponds to a dispatched load memory physical micro operation received via micro operation dispatch bus 60. Each linear load memory micro-operation corresponds to a corresponding load memory physical micro-operation and the corresponding source data values src1_data and src2_
Linear address l_add determined from data
r, the corresponding physical destination pdst, and the corresponding load buffer identifier lbid.

【0124】メモリ順序付け回路102は、ロード・バ
ッファを含んでいる。メモリ順序付け回路102は、リ
ニア・ロード・メモリ・マイクロ演算をリニア動作バス
90を介して受信する。メモリ順序付け回路102は、
対応するロード・バッファ識別子lbidに従って、リ
ニア・ロード・メモリ・マイクロ演算をロード・バッフ
ァに格納する。メモリ順序付け回路102は、リニア・
ロード・メモリ・マイクロ演算を、ロード・バッファか
らDTLB回路104へリニア動作バス90を介してデ
ィスパッチする。
The memory ordering circuit 102 includes a load buffer. The memory ordering circuit 102 receives linear load memory micro-operations via the linear operation bus 90. The memory ordering circuit 102
Store the linear load memory micro operation in the load buffer according to the corresponding load buffer identifier lbid. The memory ordering circuit 102 is a linear
Load memory micro operations are dispatched from the load buffer to the DTLB circuit 104 via the linear operation bus 90.

【0125】DTLB回路104は、ディスパッチされ
たリニア・ロード・メモリ・マイクロ演算を、メモリ順
序付け回路102からリニア動作バス90を介して受信
する。DTLB回路104は、メモリ順序付け回路10
2から受信した各リニア・ロード・メモリ・マイクロ演
算毎に、物理アドレスをデータ・キャッシュ回路106
へ、読み取りバス94を介して与える。
DTLB circuit 104 receives dispatched linear load memory micro-operations from memory ordering circuit 102 via linear operation bus 90. The DTLB circuit 104 is the memory ordering circuit 10
For each linear load memory micro operation received from 2, the physical address is assigned to the data cache circuit 106.
To the read bus 94.

【0126】DTLB回路104は、対応するリニア・
アドレスl_addrを、メモリ・ーサブシステム26
のための物理アドレスへ変換する。DTLB回路104
は、各リニア・ロード・メモリ・マイクロ演算のリニア
・アドレスl_addrを、所定のメモリ・ページング
・システムに従って物理アドレスにマッピングする。
The DTLB circuit 104 has a corresponding linear
The address l_addr is assigned to the memory subsystem 26
To a physical address for. DTLB circuit 104
Maps the linear address l_addr of each linear load memory micro-operation to a physical address according to a given memory paging system.

【0127】DTLB回路104は、各リニア・ロード
・メモリ・マイクロ演算のリニア・アドレスl_add
rに対応するマッピングされた物理アドレスを、メモリ
順序付け回路102に物理アドレス・バス96を介して
転送する。メモリ順序付け回路102は、対応するロー
ド・バッファ・エントリ内の各リニア・ロード・メモリ
・マイクロ演算毎に物理アドレスを格納する。一つの実
施例では、メモリ順序付け回路102は、対応するロー
ド・バッファ・エントリ内の各リニア・ロード・メモリ
・マイクロ演算毎に物理アドレスの部分を格納する。
The DTLB circuit 104 uses the linear address l_add of each linear load memory micro operation.
The mapped physical address corresponding to r is transferred to the memory ordering circuit 102 via the physical address bus 96. The memory ordering circuit 102 stores the physical address for each linear load memory micro-operation in the corresponding load buffer entry. In one embodiment, the memory ordering circuit 102 stores a portion of the physical address for each linear load memory micro-operation in the corresponding load buffer entry.

【0128】データ・キャッシュ回路106は、読み取
りバス94上の物理アドレスにより特定されるデータを
読む。物理アドレスがキャッシュ・ミスを引き起こした
場合には、データ・キャッシュ回路106は、メモリ・
サブシステム26から必要とされるキャッシュ・ライン
をフェッチする。データ・キャッシュ回路106は、キ
ャッシュ・ラインを、メモリ・サブシステム26から、
マルチプロセッサ・バス28に結合されたバス・インタ
フェース回路30を通し、インタフェース・バス74を
介して受信する。
The data cache circuit 106 reads the data specified by the physical address on the read bus 94. If the physical address causes a cache miss, the data cache circuit 106
Fetch required cache lines from subsystem 26. The data cache circuit 106 sends the cache line from the memory subsystem 26 to
Received through interface bus 74 through bus interface circuit 30 coupled to multiprocessor bus 28.

【0129】データ・キャッシュ回路106は、読み取
り結果データ、対応する有効ビット、及び読み取りアク
セスの障害データを、並び替え回路42と予約及びディ
スパッチ回路38に、結果バス62を介して転送する。
結果バス62は、また、メモリ順序付け回路102内の
対応するロード・バッファから物理デスティネーション
を運ぶ。
The data cache circuit 106 transfers the read result data, the corresponding valid bit, and the read access fault data to the rearrangement circuit 42 and the reservation and dispatch circuit 38 via the result bus 62.
Result bus 62 also carries the physical destination from the corresponding load buffer in memory ordering circuit 102.

【0130】メモリ順序付け回路102は、マルチプロ
セッサ・バス28上のバス・サイクルを、バス・インタ
フェース回路30を通し、インタフェース・バス74を
介して感知或いは「スヌープ(snoop)」する。メ
モリ順序付け回路102は、外部記憶のために、或い
は、ディスパッチされたリニア・ロード・メモリ・マイ
クロ演算の一つに対してプロセッサの順序違反を引き起
こす可能性のあるプロセッサ23〜24の一つによる所
有権動作(ownership_operation)
の読み取りのために、マルチプロセッサ・バス28を
「スヌープ」する。メモリ順序付け回路102は、ロー
ド・バッファ内に格納された既にディスパッチされたリ
ニア・ロード・メモリ・マイクロ演算の物理アドレスが
目標とされた外部記憶動作のために、マルチプロセッサ
・バス28を「スヌープ」する。
Memory ordering circuit 102 senses or "snoops" bus cycles on multiprocessor bus 28 through bus interface circuit 30 and through interface bus 74. The memory ordering circuit 102 is owned by one of the processors 23-24, which may cause a processor order violation for external storage or for one of the dispatched linear load memory micro-operations. Right action (ownership_operation)
"Snoop" the multiprocessor bus 28 for the read. The memory ordering circuit 102 "snoops" the multiprocessor bus 28 for external storage operations targeted at the physical address of a previously dispatched linear load memory micro-operation stored in the load buffer. To do.

【0131】各ロード・メモリ・物理マイクロ演算の退
避の間、メモリ順序付け回路102は、メモリ順序付け
再開始信号76を生成して、「スヌープ」検知に従って
発生し得るプロセッサ順序付け違反を示す。
During each load-memory-physical micro-op save, the memory ordering circuit 102 generates a memory ordering restart signal 76 to indicate possible processor ordering violations in accordance with "snoop" detection.

【0132】図8は、メモリ順序付け回路102を示
す。メモリ順序付け回路102は、一組のロード・バッ
ファ・エントリLB0〜LBnを含むロード・バッファ
88を備えている。ロード・バッファ・エントリLB0
〜LBnのそれぞれは、アドレス生成回路100からの
リニア・ロード・メモリ・マイクロ演算を保持する。
FIG. 8 shows the memory ordering circuit 102. The memory ordering circuit 102 comprises a load buffer 88 including a set of load buffer entries LB0-LBn. Load buffer entry LB0
Each of ˜LBn holds the linear load memory micro operation from the address generation circuit 100.

【0133】バッファ・エントリLB0〜LBnのそれ
ぞれは、演算コード、物理デスティネーション(PDS
T)、リニア・アドレス、物理アドレス、ロード状態、
及びスヌープ・ヒット・フラグを含んでいる。
Each of the buffer entries LB0 to LBn has an operation code and a physical destination (PDS).
T), linear address, physical address, load status,
And a snoop hit flag.

【0134】メモリ順序付け回路102は、リニア・ロ
ード・メモリ・マイクロ演算を、マイクロ演算ディスパ
ッチ・バス60を介して受信する。メモリ順序付け回路
102は、各リニア・ロード・メモリ・マイクロ演算
を、対応するロード・バッファ識別子lbidにより特
定されるロード・バッファ・エントリLB0〜LBnに
格納する。
The memory ordering circuit 102 receives linear load memory micro-ops via the micro-ops dispatch bus 60. The memory ordering circuit 102 stores each linear load memory micro-operation in the load buffer entries LB0-LBn identified by the corresponding load buffer identifier lbid.

【0135】メモリ順序付け回路102は、ロード・バ
ッファ88内のそれぞれの新しいリニア・ロード・メモ
リ・マイクロ演算毎に「有効」状態をセットする。「有
効」状態は、対応するロード・バッファ・エントリLB
0〜LBnが退避されていないロード・メモリ・マイク
ロ演算を保持していることを示す。
The memory ordering circuit 102 sets the "valid" state for each new linear load memory micro-operation in the load buffer 88. The "valid" state is the corresponding load buffer entry LB.
Indicates that 0 to LBn hold a load memory micro operation that has not been saved.

【0136】メモリ順序付け回路102は、演算コー
ド、物理デスティネーションpdst、各リニア・ロー
ド・メモリ・マイクロ演算のリニア・アドレスl_ad
drをリニア・ロード・メモリ・マイクロ演算のロード
・バッファ識別子lbidにより特定されるロード・バ
ッファ・エントリLB0〜LBnの対応するフィールド
に格納する。
The memory ordering circuit 102 has an operation code, a physical destination pdst, and a linear address l_ad of each linear load memory micro operation.
The dr is stored in the corresponding field of the load buffer entry LB0 to LBn specified by the load buffer identifier lbid of the linear load memory micro operation.

【0137】メモリ順序付け回路102は、リニア・ロ
ード・メモリ・マイクロ演算に対応する物理アドレスp
_addrをDTLB回路104から物理アドレス・バ
ス96を介して受信する。メモリ順序付け回路102
は、各リニア・ロード・メモリ・マイクロ演算毎に物理
アドレスを、対応するロード・バッファ・エントリLB
0〜LBnの物理アドレス・フィールドに格納する。
The memory ordering circuit 102 determines the physical address p corresponding to the linear load memory micro operation.
_Addr is received from the DTLB circuit 104 via the physical address bus 96. Memory ordering circuit 102
Is the physical address for each linear load memory micro operation, and the corresponding load buffer entry LB
It is stored in the physical address field of 0 to LBn.

【0138】一つの実施例では、物理アドレス・バス9
6上の物理アドレスは、対応するリニア・ロード・メモ
リ・マイクロ演算のためのDTLB回路104により生
成された物理アドレスのビット12〜19を含んでい
る。
In one embodiment, physical address bus 9
The physical address on 6 includes bits 12-19 of the physical address generated by the DTLB circuit 104 for the corresponding linear load memory micro operation.

【0139】メモリ順序付け回路102は、DTLB回
路104内の資源の使用可能度に従って、リニア・ロー
ド・メモリ・マイクロ演算をロード・バッファ・エント
リLB0〜LBnからリニア動作バス90を介してディ
スパッチする。メモリ順序付け回路102は、DTLB
回路104にディスパッチされた各リニア・ロード・メ
モリ・マイクロ演算毎に「完了(complete)」
状態をセットする。
The memory ordering circuit 102 dispatches linear load memory micro-operations from the load buffer entries LB0-LBn via the linear operation bus 90 according to the availability of resources in the DTLB circuit 104. The memory ordering circuit 102 uses the DTLB
"Complete" for each linear load memory micro operation dispatched to the circuit 104
Set the state.

【0140】メモリ順序付け回路102は、プロセッサ
順序付け違反を引き起こす可能性のある外部格納動作の
ためにマルチプロセッサ・バス28を「スヌープす
る」。メモリ順序付け回路102は、「完了」状態を有
するロード・バッファ・エントリLB0〜LBnを特定
した物理アドレスの一つに対する外部格納のために、マ
ルチプロセッサ・バス28を「スヌープする」。メモリ
順序付け回路102は、外部物理アドレスsnoop_
addr及び対応するsnoop_addr_vali
d信号を、マルチプロセッサ・バス28からインタフェ
ース・バス74を介して検出する。snoop_add
r_valid信号は、マルチプロセッサ・バス28上
の格納動作のための有効アドレスを特定する。
The memory ordering circuit 102 "snoops" the multiprocessor bus 28 for external store operations that can cause processor ordering violations. The memory ordering circuit 102 "snoops" the multiprocessor bus 28 for external storage on one of the physical addresses that specified the load buffer entries LB0-LBn having a "done" state. The memory ordering circuit 102 uses the external physical address snoop_
addr and corresponding snoop_addr_vali
The d signal is detected from multiprocessor bus 28 via interface bus 74. snoop_add
The r_valid signal specifies the effective address for the store operation on multiprocessor bus 28.

【0141】一つの実施例では、マルチプロセッサ・バ
ス上の物理アドレスは、40ビット(ビット0〜39)
からなる。リニア・ロード・メモリ・マイクロ演算のた
めのリニア・アドレスのビット0〜11は、対応する物
理アドレスのビット0〜11に等しい。メモリ順序付け
回路102は、マルチプロセッサ・バス28上の外部格
納動作の物理アドレスのビット5〜11を、「完了」状
態を有するロード・バッファ・エントリLB0〜LBn
のリニア・アドレスのビット5〜11と比較することに
より、プロセッサ順序付け「スヌープ・ヒット」を検出
する。メモリ順序付け回路102は、また、マルチプロ
セッサ・バス28上の外部格納動作の物理アドレスのビ
ット12〜19を、「完了」状態を有するロード・バッ
ファ・エントリLB0〜LBnの物理アドレスと比較す
る。
In one embodiment, the physical address on the multiprocessor bus is 40 bits (bits 0-39).
Consists of. Bits 0-11 of the linear address for a linear load memory micro operation are equal to bits 0-11 of the corresponding physical address. The memory ordering circuit 102 loads bits 5-11 of the physical address of the external store operation on the multiprocessor bus 28 into the load buffer entries LB0-LBn having a "complete" state.
Detect the processor ordering "snoop hit" by comparing bits 5-11 of the linear address of The memory ordering circuit 102 also compares bits 12-19 of the physical address of the external store operation on the multiprocessor bus 28 with the physical address of the load buffer entry LB0-LBn having a "done" state.

【0142】メモリ順序付け回路102は、プロセッサ
順序付けスヌープ・ヒットを引き起こすロード・バッフ
ァ・エントリLB0〜LBnのためのスヌープ・ヒット
・フラグをセットする。メモリ順序付け回路102は、
プロセッサ順序付けスヌープ・ヒットを引き起こすロー
ド・バッファ・エントリLB0〜LBnが、ロード・バ
ッファ88内の最も古いリニア・ロード・メモリ・マイ
クロ演算を保持している場合には、スヌープ・ヒット・
フラグをセットしない。ロード・バッファ88内の最も
古いリニア・ロード・メモリ・マイクロ演算のためのス
ヌーピングは、適当なロード・バッファ・エントリLB
0〜LBnの対応するスヌープ・イネーブル・フラグを
クリアすることによりディスエイブルされる。
The memory ordering circuit 102 sets a snoop hit flag for the load buffer entries LB0-LBn which causes a processor ordering snoop hit. The memory ordering circuit 102
If the load buffer entries LB0-LBn causing the processor-ordered snoop hit hold the oldest linear load memory micro-operation in load buffer 88, the snoop hit.
Do not set the flag. Snooping for the oldest linear load memory micro-operation in load buffer 88 is done by loading the appropriate load buffer entry LB.
It is disabled by clearing the corresponding snoop enable flag from 0 to LBn.

【0143】メモリ順序付け回路102は、退避物理デ
スティネーションを、退避論理回路46から、退避通知
バス70を介して受信する。メモリ順序付け回路102
は、退避物理デスティネーションにより特定されたロー
ド・バッファ・エントリLB0〜LBnの一つが、セッ
トされた対応するスヌープ・ヒット・フラグを有する場
合には、メモリ順序付け再開信号76を発行し、可能性
のあるプロセッサ順序付け違反を示す。
The memory ordering circuit 102 receives the save physical destination from the save logic circuit 46 via the save notification bus 70. Memory ordering circuit 102
Issues a memory ordering resume signal 76 if one of the load buffer entries LB0-LBn identified by the saved physical destination has the corresponding snoop hit flag set, and Indicates a processor ordering violation.

【0144】図9は、メモリ順序付け回路102内のス
ヌープ検出回路を示す。スヌープ検出回路は、メモリ順
序付け回路102内のロード・バッファ・エントリLB
0〜LBnのそれぞれに対応するスヌープ検出回路を含
んでいる。
FIG. 9 shows a snoop detection circuit within the memory ordering circuit 102. The snoop detection circuit uses the load buffer entry LB in the memory ordering circuit 102.
A snoop detection circuit corresponding to each of 0 to LBn is included.

【0145】たとえば、スヌープ検出回路200は、ロ
ード・バッファ・エントリLB0に対応している。スヌ
ープ検出回路200は、有効レジスタ210、完了レジ
スタ214、物理アドレスレジスタ216、リニア・ア
ドレス・レジスタ218、スヌープ・イネーブル・レジ
スタ212、及び、スヌープ・ヒット・レジスタ222
を含んでいる。
For example, snoop detection circuit 200 corresponds to load buffer entry LB0. The snoop detection circuit 200 includes a valid register 210, a completion register 214, a physical address register 216, a linear address register 218, a snoop enable register 212, and a snoop hit register 222.
Is included.

【0146】有効レジスタ210は、ロード・バッファ
・エントリLB0が有効ロード・メモリ動作を含んでい
るか否かを示す「有効」状態を含んでいる。完了レジス
タ214は、対応するロード・バッファ・エントリLB
0のためのロード・メモリ動作がディスパッチされたか
否かを示す「完了」状態を保持している。物理アドレス
レジスタ216は、ロード・バッファ・エントリLB0
に対応する物理アドレス・ビット19〜12を保持して
いる。リニア・アドレス・レジスタ218は、ロード・
バッファ・エントリLB0に対応するロード・メモリ動
作のためのリニア・アドレスのビット11〜5を格納す
る。スヌープ・イネーブル・レジスタ212は、ロード
・バッファ・エントリLB0のための外部格納スヌーピ
ングをイネーブルにするかディスエーブルにするスヌー
プ・イネーブル・フラグを保持する。
Valid register 210 contains a "valid" state that indicates whether load buffer entry LB0 contains a valid load memory operation. Completion register 214 contains the corresponding load buffer entry LB
It holds a "done" state that indicates whether a load memory operation for 0 has been dispatched. The physical address register 216 stores the load buffer entry LB0.
Holds the physical address bits 19-12 corresponding to. The linear address register 218 is loaded
Store bits 11-5 of the linear address for the load memory operation corresponding to buffer entry LB0. Snoop enable register 212 holds a snoop enable flag that enables or disables external store snooping for load buffer entry LB0.

【0147】物理アドレスレジスタ216は、一組のス
ヌープ・アドレス・ビット230を受信する。スヌープ
・アドレス・ビットは、インタフェース・バス74を介
して受信したsnoop_addrのビット19〜12
を含んでいる。物理アドレスレジスタ216は、物理ア
ドレスビット230がロード・バッファ・エントリLB
0に対応する物理アドレスビット19〜12に等しいと
き物理アドレス検出信号236をアサートする。
Physical address register 216 receives a set of snoop address bits 230. The snoop address bits are bits 19-12 of snoop_addr received via interface bus 74.
Is included. In the physical address register 216, the physical address bit 230 is the load buffer entry LB.
The physical address detect signal 236 is asserted when equal to the physical address bits 19-12 corresponding to 0.

【0148】リニア・アドレス・レジスタ218は、一
組の物理アドレス・ビット232を受信する。物理アド
レス・ビット232は、インタフェース・バス74を介
して受信したsnoop_addrのビット11〜5を
含んでいる。リニア・アドレス・レジスタ218は、物
理アドレス・ビット232がロード・バッファ・エント
リLB0に対応するリニア・アドレスのビット11〜5
に等しいとリニア・アドレス検出信号237を生成す
る。
The linear address register 218 receives a set of physical address bits 232. Physical address bits 232 include bits 11-5 of snoop_addr received via interface bus 74. The linear address register 218 has bits 11-5 of the linear address whose physical address bit 232 corresponds to the load buffer entry LB0.
If it is equal to, a linear address detection signal 237 is generated.

【0149】snoop_addr_valid信号2
34は、インタフェース・バス74を介して受信され
る。snoop_addr_valid信号234は、
インタフェース・バス74上のsnoop_addrが
有効外部格納動作に対応していることを示す。ANDゲ
ート220の出力は、物理アドレス検出信号236と、
リニア・アドレス検出信号237、「完了」及び「有効
状態」、及びスヌープ・イネーブル・フラグとを結合す
ることにより、スヌープ・ヒット・レジスタ222内の
スヌープ・ヒット・フラグをセットする。
Snoop_addr_valid signal 2
34 is received via interface bus 74. The snoop_addr_valid signal 234 is
Indicates that snoop_addr on interface bus 74 corresponds to a valid external store operation. The output of the AND gate 220 is the physical address detection signal 236,
The snoop hit flag in the snoop hit register 222 is set by combining the linear address detect signal 237, the "done" and "valid states", and the snoop enable flag.

【0150】図10は、メモリ順序付け再開始信号76
を生成するメモリ順序付け回路102内の通知回路を示
す。メモリ順序付け回路102は、ロード・バッファ・
エントリLB0〜LBnのそれぞれ毎に通知回路を含ん
でいる。
FIG. 10 shows the memory ordering restart signal 76.
3 shows a notification circuit within the memory ordering circuit 102 for generating The memory ordering circuit 102 includes a load buffer,
Each of the entries LB0 to LBn includes a notification circuit.

【0151】たとえば、通知回路250は、ロード・バ
ッファ・エントリLB0に対応している。スヌープ・ヒ
ット・レジスタ222は、ロード・バッファ・エントリ
LB0のためのスヌープ・ヒット・フラグを含んでい
る。物理デスティネーション(PDST)・レジスタ2
60は、ロード・バッファ・エントリLB0に対応する
物理デスティネーションを保持している。
For example, the notification circuit 250 corresponds to the load buffer entry LB0. Snoop hit register 222 contains the snoop hit flag for load buffer entry LB0. Physical destination (PDST) register 2
60 holds the physical destination corresponding to the load buffer entry LB0.

【0152】PDSTレジスタ260は、一組の退避物
理デスティネーション270〜272を次の退避物理マ
イクロ演算の組を示す退避通知バス70を介して受信す
る。PDSTレジスタ260は、一組の制御信号300
〜302を生成する。制御信号300〜302は、退避
物理デスティネーション270〜272のいずれかがロ
ード・バッファ・エントリLB0内の物理デスティネー
ションに一致しているか否かを示す。
The PDST register 260 receives a set of save physical destinations 270 to 272 via the save notification bus 70 indicating the set of the next save physical micro operation. The PDST register 260 includes a set of control signals 300.
~ 302 are generated. The control signals 300 to 302 indicate whether or not any of the saved physical destinations 270 to 272 matches the physical destination in the load buffer entry LB0.

【0153】たとえば、PDSTレジスタ260は、制
御信号300を生成して、退避物理デスティネーション
270がロード・バッファ・エントリLB0内の物理デ
スティネーションに一致していることを示す。同様に、
PDSTレジスタ260は、制御信号301を生成し
て、退避物理デスティネーション271がロード・バッ
ファ・エントリLB0内の物理デスティネーションに一
致していることを示し、制御信号302を生成して、退
避物理デスティネーション272がロード・バッファ・
エントリLB0内の物理デスティネーションに一致して
いることを示す。
For example, the PDST register 260 generates the control signal 300 to indicate that the saved physical destination 270 matches the physical destination in the load buffer entry LB0. Similarly,
The PDST register 260 generates a control signal 301 to indicate that the saved physical destination 271 matches the physical destination in the load buffer entry LB0, and generates a control signal 302 to save the saved physical destination. Nation 272 is the load buffer
It indicates that the physical destination in the entry LB0 matches.

【0154】メモリ順序付け再開始回路250は、一組
の退避物理デスティネーション有効フラグ280〜28
2を、退避通知バス70を介して受信する。退避物理デ
スティネーション有効フラグ280〜282は、退避物
理デスティネーション270〜272が有効であるか否
かを示す。
The memory ordering restart circuit 250 uses a set of saved physical destination valid flags 280-28.
2 is received via the evacuation notification bus 70. The save physical destination valid flags 280 to 282 indicate whether the save physical destinations 270 to 272 are valid.

【0155】たとえば、退避物理デスティネーション有
効フラグ280は、退避物理デスティネーション270
が有効であるか否かを示す。同様に、退避物理デスティ
ネーション有効フラグ281は、退避物理デスティネー
ション271が有効であるか否かを示し、退避物理デス
ティネーション有効フラグ282は、退避物理デスティ
ネーション272が有効であるか否かを示す。
For example, the save physical destination valid flag 280 is set to the save physical destination 270.
Indicates whether is valid. Similarly, the save physical destination valid flag 281 indicates whether the save physical destination 271 is valid, and the save physical destination valid flag 282 indicates whether the save physical destination 272 is valid. .

【0156】制御信号300〜302及び退避物理デス
ティネーションフラグ280〜282は、一組のAND
ゲート310〜312により、スヌープ・ヒット・フラ
グと結合される。ANDゲート310〜312の出力
は、レジスタ262内に格納される。レジスタ262の
出力は、クロック信号350により同期がとられる。
The control signals 300 to 302 and the save physical destination flags 280 to 282 are a set of ANDs.
It is combined with the snoop hit flag by gates 310-312. The outputs of AND gates 310-312 are stored in register 262. The output of register 262 is synchronized by clock signal 350.

【0157】レジスタ262は、ロード・バッファ・エ
ントリLB0のためのメモリ順次付け再開始フラグを格
納する。ANDゲート320〜322の出力は、一組の
プル・ダウン・トランジスタQ1、Q2、及びQ3を制
御する。プル・ダウン・トランジスタQ1、Q2、及び
Q3は、一組のメモリ順次付け再開始信号ライン290
〜292に結合されている。メモリ順次付け再開始信号
ライン290〜292は、また、クロック信号350に
より同期がとられた一組のプル・アップ・トランジスタ
Q4、Q5、及びQ6にも結合されている。
Register 262 stores the memory serialization restart flag for load buffer entry LB0. The outputs of AND gates 320-322 control a set of pull-down transistors Q1, Q2, and Q3. The pull-down transistors Q1, Q2, and Q3 form a set of memory sequential restart signal lines 290.
˜292. Memory serialization restart signal lines 290-292 are also coupled to a set of pull-up transistors Q4, Q5, and Q6 synchronized by clock signal 350.

【0158】制御信号300が、退避物理デスティネー
ション270がロード・バッファ・エントリLB0内の
物理デスティネーションに一致することを示す場合、ま
た、退避物理デスティネーション有効フラグ280が、
退避物理デスティネーション270が有効であることを
示す場合、また、ロード・バッファ・エントリLB0の
ためのスヌープ・ヒット・フラグがセットされている場
合には、ANDゲート320の出力は、トランジスタQ
1をオンに切り換える。トランジスタQ1は、メモリ順
序付け再開始信号ライン290の電圧をプル・ダウン
し、退避物理デスティネーション270により特定され
た物理マイクロ演算が、可能性のあるプロセッサ順序付
け違反を引き起こしたことを示す。
If the control signal 300 indicates that the saved physical destination 270 matches the physical destination in the load buffer entry LB0, and the saved physical destination valid flag 280 is
If the evacuation physical destination 270 indicates that it is valid, and if the snoop hit flag for load buffer entry LB0 is set, the output of AND gate 320 is the output of transistor Q.
Switch 1 on. Transistor Q1 pulls down the voltage on the memory ordering restart signal line 290, indicating that the physical micro-operation specified by the retired physical destination 270 caused a possible processor ordering violation.

【0159】同様に、メモリ順序付け再開始信号ライン
291は、退避物理デスティネーション271により特
定された物理マイクロ演算が、可能性のあるプロセッサ
順序付け違反を引き起こしたことを示し、メモリ順序付
け再開始信号ライン292は、退避物理デスティネーシ
ョン272により特定された物理マイクロ演算が、可能
性のあるプロセッサ順序付け違反を引き起こしたことを
示す。
Similarly, the memory ordering restart signal line 291 indicates that the physical micro-operation specified by the saved physical destination 271 caused a possible processor ordering violation, and the memory ordering restart signal line 292. Indicates that the physical micro-operation identified by the retired physical destination 272 caused a possible processor ordering violation.

【0160】図11は、命令フェッチ及びマイクロ演算
発行回路32により発行されたロード・マイクロ演算を
示す。論理マイクロ演算(ld 0x100、EBX、
EAX)は、命令フェッチ及びマイクロ演算発行回路3
2により、論理マイクロ演算バス50を介して転送され
る。論理マイクロ演算ld_0x100、EBX、EA
Xは、メモリ・サブシステム26からのアーキテクチャ
・レジスタEAXへのロード・メモリ動作を特定する。
アドレスは、アーキテクチャ・レジスタEBX及びオフ
セット100(16進数)の内容により特定される。
FIG. 11 shows a load micro operation issued by the instruction fetch and micro operation issuing circuit 32. Logical micro operation (ld 0x100, EBX,
EAX) is an instruction fetch and micro operation issuing circuit 3
2 is transferred via the logic micro arithmetic bus 50. Logical micro operation ld_0x100, EBX, EA
X specifies a load memory operation from memory subsystem 26 to architectural register EAX.
The address is specified by the contents of architecture register EBX and offset 100 (hex).

【0161】割り当て回路36は、論理マイクロ演算l
d 0x100、EBX、EAXを、論理マイクロ演算
バス50を介して受信し、42に等しい物理デスティネ
ーションpdstを生成する。割り当て回路36は、p
dstをレジスタ・エイリアス回路34に物理デスティ
ネーション・バス56を介して転送する。
The assignment circuit 36 uses the logic micro-operation l.
d 0x100, EBX, EAX are received via the logical micro-op bus 50 and a physical destination pdst equal to 42 is generated. The allocation circuit 36 uses p
Transfer dst to register alias circuit 34 via physical destination bus 56.

【0162】レジスタ・エイリアス回路34は、物理デ
スティネーションpdst及び物理デスティネーション
pdst42を受信し、論理マイクロ演算ld 0x1
00、EBX、EAXを物理マイクロ演算ld 10
0、35、42に変換する。引き数35は、psrc2
が、ROBポインタとレジスタ・エイリアス・テーブル
80内のEBXエントリのためのRRFVフラグに従っ
て並び替えバッファ82内のRE35エントリであると
特定する。
The register / alias circuit 34 receives the physical destination pdst and the physical destination pdst 42, and the logical micro-operation ld 0x1.
00, EBX, EAX physical micro operation ld 10
Convert to 0, 35, 42. Argument 35 is psrc2
Is a RE35 entry in the reordering buffer 82 according to the ROB pointer and the RRFV flag for the EBX entry in the register alias table 80.

【0163】レジスタ・エイリアス回路34は、物理マ
イクロ演算ld 100、35、42を、予約及びディ
スパッチ回路38、並び替え回路42、及び実レジスタ
回路44に、物理マイクロ演算バス52を介して転送す
る。
The register alias circuit 34 transfers the physical micro operation ld 100, 35, 42 to the reservation and dispatch circuit 38, the rearrangement circuit 42, and the real register circuit 44 via the physical micro operation bus 52.

【0164】レジスタ・エイリアス回路34は、物理マ
イクロ演算ld 100、35、42のための割り当て
られたpdstを、レジスタ・エイリアス・テーブル8
0内のEAXエントリのROBポインタ内に格納する。
レジスタ・エイリアス回路34は、また、レジスタ・エ
イリアス・テーブル80内のEAXエントリのためのR
RFVビットをクリアする。
The register alias circuit 34 stores the allocated pdst for the physical micro-operations ld 100, 35, 42 in the register alias table 8
Store in the ROB pointer of the EAX entry in 0.
The register alias circuit 34 also includes an R for an EAX entry in the register alias table 80.
Clear the RFV bit.

【0165】並び替え回路42及び実レジスタ回路44
は、物理マイクロ演算ld 100、35、42を、物
理マイクロ演算バス52を介して受信する。並び替え回
路42は、並び替えバッファ82のROBエントリRE
35を読むことにより、物理ソースpsrc2のための
ソース・データを読む。並び替えバッファ82のROB
エントリRE35は、2000に等しい結果データ値及
びEBXアーキテクチャ・レジスタの現在の推論的な状
態のための有効ビットの組を含んでいる。
Rearrangement circuit 42 and real register circuit 44
Receives physical micro-computation Id 100, 35, 42 via physical micro-computation bus 52. The rearrangement circuit 42 uses the ROB entry RE of the rearrangement buffer 82.
Read the source data for physical source psrc2 by reading 35. ROB of sorting buffer 82
Entry RE35 contains the result data value equal to 2000 and the set of valid bits for the current speculative state of the EBX architecture register.

【0166】並び替え回路42は、対応する有効ビット
に沿って、結果データ値2000及び定数データ値10
0を、予約及びディスパッチ回路38に、ソース・デー
タ・バス58を介してソース・データ対src1/sr
c2 dataとして転送する。
The sorting circuit 42 arranges the result data value 2000 and the constant data value 10 along with the corresponding valid bits.
0 to the reservation and dispatch circuit 38 via the source data bus 58, source data pair src1 / sr
Transfer as c2 data.

【0167】並び替え回路42は、物理マイクロ演算l
d 100、35、42のための論理デスティネーショ
ンldst EAXを、論理デスティネーション・バス
54を介して受信する。並び替え回路42は、論理デス
ティネーションldst EAXを、並び替えバッファ
82のエントリRE42のLDSTに格納する。並び替
え回路42は、並び替えバッファ82のエントリRE4
2の有効フラグをクリアし、対応する結果データが有効
でないことを示す。
The rearrangement circuit 42 uses the physical micro operation l.
Receive logical destination ldst EAX for d 100, 35, 42 via logical destination bus 54. The rearrangement circuit 42 stores the logical destination ldst EAX in the LDST of the entry RE42 of the rearrangement buffer 82. The sorting circuit 42 uses the entry RE4 of the sorting buffer 82.
The valid flag 2 is cleared to indicate that the corresponding result data is not valid.

【0168】予約及びディスパッチ回路38は、物理マ
イクロ演算ld 100、35、42を、物理マイクロ
演算バス52を介して受信する。予約及びディスパッチ
回路38は、演算コードldを、割り当て回路36によ
り特定された予約ステーション・テーブル84のエント
リRS0の演算コード・フィールドに格納する。予約及
びディスパッチ回路38は、物理デスティネーションp
dst_42を、予約ステーション・テーブル84のエ
ントリRS0のPSDTに格納する。予約及びディスパ
ッチ回路38は、物理ソースpsrc1 xxx及びp
sr2 35を、予約ステーション・テーブル84のエ
ントリRS0のPSRC1/PSRC2に格納する。予
約及びディスパッチ回路38は、また、予約ステーショ
ン・テーブル84のエントリRS0のエントリ有効フラ
グもセットする。
The reservation and dispatch circuit 38 receives the physical micro-operations Id 100, 35, 42 via the physical micro-operation bus 52. The reservation and dispatch circuit 38 stores the operation code ld in the operation code field of the entry RS0 of the reservation station table 84 specified by the allocation circuit 36. The reservation and dispatch circuit 38 uses the physical destination p.
The dst_42 is stored in the PSDT of the entry RS0 of the reservation station table 84. The reservation and dispatch circuit 38 uses physical sources psrc1 xxx and p.
The sr2 35 is stored in PSRC1 / PSRC2 of the entry RS0 of the reservation station table 84. The reservation and dispatch circuit 38 also sets the entry valid flag of entry RS0 of the reservation station table 84.

【0169】予約及びディスパッチ回路38は、ソース
・データ値src1/src2 data 100及び
2000と、対応する有効フラグを、ソース・データ・
バス58を介して受信する。予約及びディスパッチ回路
38は、ソース・データ値src1/src2 dat
a 100及び2000と、対応する有効フラグを、予
約ステーション・テーブル84のエントリRS0のSR
C1/SRC2とVフィールドに格納する。
The reservation and dispatch circuit 38 sets the source data values src1 / src2 data 100 and 2000 and the corresponding valid flags to the source data values.
Receive via bus 58. The reservation and dispatch circuit 38 uses the source data values src1 / src2 dat
a 100 and 2000 and the corresponding valid flag in the SR of the entry RS0 of the reservation station table 84
Store in C1 / SRC2 and V field.

【0170】予約及びディスパッチ回路38は、物理マ
イクロ演算ld 100、35、42のためのロード・
バッファ識別子lbid=4を、割り当て回路36か
ら、ロード・バッファIDバス72を介して受信する。
予約及びディスパッチ回路38は、ロード・バッファ識
別子lbid=4を、予約ステーション・テーブル84
のエントリRS0のLBIDフィールドに格納する。
The reservation and dispatch circuit 38 is responsible for loading and unloading physical math operations ld 100, 35, 42.
The buffer identifier lbid = 4 is received from the allocation circuit 36 via the load buffer ID bus 72.
The reservation and dispatch circuit 38 assigns the load buffer identifier lbid = 4 to the reservation station table 84.
Stored in the LBID field of the entry RS0.

【0171】予約及びディスパッチ回路38は、ロード
・メモリ物理マイクロ演算ld 100、2000、4
2、lbid=4を、アドレス生成回路100に、マイ
クロ演算ディスパッチ・バス60を介してディスパッチ
する。アドレス生成回路100は、セグメント・レジス
タ値に従って、ソース・データ値100、2000をリ
ニア・アドレス32100に変換する。アドレス生成回
路100は、次いで、対応するリニア・ロード・メモリ
・マイクロ演算ld 32100、42、lbid=4
を、メモリ順序付け回路102に、リニア動作バス90
を介して転送する。
The reservation and dispatch circuit 38 uses the load memory physical micro-operations ld 100, 2000, 4
2, lbid = 4 is dispatched to the address generation circuit 100 via the micro operation dispatch bus 60. The address generation circuit 100 converts the source data values 100, 2000 into linear addresses 32100 according to the segment register values. The address generator circuit 100 then outputs the corresponding linear load memory micro-operations ld 32100, 42, lbid = 4.
To the memory ordering circuit 102 for the linear operation bus 90.
Transfer through.

【0172】メモリ順序付け回路102は、リニア・ロ
ード・メモリ・マイクロ演算ld32100、42、l
bid=4を、リニア動作バス90を介して受信する。
メモリ順序付け回路102は、リニア・ロード・メモリ
・マイクロ演算ld 32100、42、lbid=4
を、対応するロード・バッファ識別子lbid=4によ
り識別されたように、ロード・バッファ88のエントリ
LB4に格納する。メモリ順序付け回路102は、ロー
ド・バッファ・エントリLB4のための「有効」ロード
状態をセットする。
The memory ordering circuit 102 uses the linear load memory micro-operations ld32100, 42, l.
bid = 4 is received via the linear operation bus 90.
The memory ordering circuit 102 uses linear load memory micro-operations ld 32100, 42, lbid = 4.
Is stored in entry LB4 of load buffer 88 as identified by the corresponding load buffer identifier lbid = 4. The memory ordering circuit 102 sets the "valid" load state for load buffer entry LB4.

【0173】メモリ順序付け回路102は、また、「完
了」状態を有するロード・バッファ88のエントリLB
3内の、より古いリニア・ロード・メモリ・マイクロ演
算ld 31000、41も含んでいる。「完了」状態
は、リニア・ロード・メモリ・マイクロ演算ld 31
000、41が、実行のためにDTLB回路104にデ
ィスパッチされたことを示す。ロード・バッファ・エン
トリLB3は、1040(16進数)に等しい物理アド
レス・ビット6〜19を含んでおり、これらはリニア・
アドレス31000のためにDTLB回路104により
生成された41000に等しい物理アドレスに対応して
いる。
The memory ordering circuit 102 also has an entry LB of the load buffer 88 which has a "done" state.
It also contains the older linear load memory micro-operation ld 31000, 41 in 3. The "completed" state is the linear load memory micro operation ld 31
000, 41 have been dispatched to the DTLB circuit 104 for execution. Load buffer entry LB3 contains physical address bits 6-19 equal to 1040 (hex), which are linear
Corresponds to a physical address equal to 41000 generated by DTLB circuit 104 for address 31000.

【0174】図12は、リニア・ロード・メモリ・マイ
クロ演算ld 32100、42、lbid=4を示
す。メモリ順序付け回路102は、リニア・ロード・メ
モリ・マイクロ演算ld 32100、42を、ロード
・バッファ・エントリLB4からDTLB回路104
に、リニア動作バス90を介してディスパッチする。メ
モリ順序付け回路102は、次いで、ロード・バッファ
・エントリLB4のために「完了」状態をセットする。
FIG. 12 shows the linear load memory micro operation ld 32100, 42, lbid = 4. The memory ordering circuit 102 transfers the linear load memory micro-operations ld 32100, 42 from the load buffer entry LB4 to the DTLB circuit 104.
To be dispatched via the linear operation bus 90. The memory ordering circuit 102 then sets the "done" state for load buffer entry LB4.

【0175】DTLB回路104は、リニア・ロード・
メモリ・マイクロ演算ld 32100、42のリニア
・アドレス32100のための42100に等しい物理
アドレスを生成する。DTLB回路104は、データ・
キャッシュ回路106の読み取りアクセスを、物理アド
レス42100において、読み取りバス94を介して実
行する。
The DTLB circuit 104 has a linear load
Generate a physical address equal to 42100 for the linear address 32100 of the memory micro-operation ld 32100,42. The DTLB circuit 104 uses the data
A read access to cache circuit 106 is performed at read address 94 at physical address 42100.

【0176】メモリ順序付け回路102は、リニア・ロ
ード・メモリ・マイクロ演算ld32100、42に対
応する1084に等しい物理アドレス・ビット6〜19
を、物理アドレス・バス96を介して受信する。メモリ
順序付け回路102は、1084に等しい物理アドレス
・ビット6〜19を、ロード・バッファ・エントリLB
4の物理アドレス・フィールドに格納する。
The memory ordering circuit 102 has physical address bits 6-19 equal to 1084 corresponding to the linear load memory micro-operations ld32100, 42.
Are received via the physical address bus 96. The memory ordering circuit 102 assigns physical address bits 6-19 equal to 1084 to the load buffer entry LB.
4 physical address field.

【0177】データ・キャッシュ回路106は、物理ア
ドレス42100に対する読み取りのための225に等
しい結果データ値、対応する有効ビット、及び並び替え
回路42及び予約及びディスパッチ回路38に対する読
み取りアクセスのための障害データを、結果バス62を
介して転送する。結果バス62は、また、リニア・ロー
ド・メモリ・マイクロ演算ld 32100、42のた
めに結果データに対応する物理デスティネーション42
を運ぶ。
The data cache circuit 106 provides a result data value equal to 225 for a read to the physical address 42100, the corresponding valid bit, and fault data for a read access to the reordering circuit 42 and the reservation and dispatch circuit 38. , Transfer via result bus 62. The result bus 62 also has a physical destination 42 corresponding to the result data for the linear load memory micro-operations ld 32100, 42.
carry.

【0178】並び替え回路42は、255に等しい結果
データ及び対応する有効ビットを、結果バス62上の物
理デスティネーション42により特定されたように、並
び替えバッファ82のエントリ42に格納する。
The reordering circuit 42 stores the result data equal to 255 and the corresponding valid bit in the entry 42 of the reordering buffer 82 as specified by the physical destination 42 on the result bus 62.

【0179】メモリ順序付け回路102は、1084に
等しい物理アドレス・ビット6〜19を有する外部格納
のためのマルチプロセッサ・バス28上のスヌープ・ヒ
ットを検出する。1084に等しい物理アドレス・ビッ
ト6〜19は、ロード・バッファ88のエントリLB4
に対応している。メモリ順序付け回路102は、エント
リLB4のためのスヌープ・ヒット・フラグをセットし
て、プロセッサ順序付けスヌープがヒットしたことを示
す。
Memory ordering circuit 102 detects snoop hits on multiprocessor bus 28 for external storage having physical address bits 6-19 equal to 1084. Physical address bits 6-19, equal to 1084, are for entry LB4 of load buffer 88.
It corresponds to. The memory ordering circuit 102 sets the snoop hit flag for entry LB4 to indicate that the processor ordering snoop was hit.

【0180】メモリ順序付け回路102は、また、10
40に等しい物理アドレス・ビット6〜19を有する外
部格納のためのマルチプロセッサ・バス28上のスヌー
プ・ヒットを検出する。メモリ順序付け回路102は、
リニア・ロード・メモリ・マイクロ演算ld 3100
0、41がロード・バッファ88内で最も古いリニア・
ロード・メモリ・マイクロ演算であるので、エントリL
B3のためのスヌープ・ヒット・フラグをセットしな
い。
The memory ordering circuit 102 also includes 10
Detect a snoop hit on multiprocessor bus 28 for external storage with physical address bits 6-19 equal to 40. The memory ordering circuit 102
Linear load memory micro operation ld 3100
0 and 41 are the oldest linear in load buffer 88
Entry L because it is a load memory micro operation
Don't set the snoop hit flag for B3.

【0181】メモリ順序付け回路102は、次いで、一
組の退避物理デスティネーション40、41、42を、
退避論理回路46から、退避通知バス70を介して受信
する。これに応答して、メモリ順序付け回路102は、
メモリ順序付け再開始信号76を発行し、リニア・ロー
ド・メモリ・マイクロ演算ld 32100、42のた
めの可能性のあるプロセッサ順序付け違反を示す。
The memory ordering circuit 102 then sets a set of evacuation physical destinations 40, 41, 42,
It is received from the save logic circuit 46 through the save notification bus 70. In response, the memory ordering circuit 102
Issue a memory ordering restart signal 76 to indicate a possible processor ordering violation for linear load memory micro-operation ld 32100,42.

【0182】メモリ順序付け再開始信号76は、再開始
回路48に、並び替えクリア信号78を発行させる。並
び替えクリア信号78は、並び替え回路42に、並び替
えバッファ82内の退避されていない物理マイクロ演算
のための推論的な結果データをクリアさせ、予約及びデ
ィスパッチ回路38に、実行回路40にディスパッチさ
れるのを待っている保留物理マイクロ演算をクリアさせ
る。並び替えクリア信号78は、また、割り当て回路3
6に、並び替え回路42内の物理レジスタを割り当てる
ための割り当てポインタをリセットさせ、退避論理回路
46に、物理レジスタを退避するための退避ポインタを
リセットさせる。
The memory ordering restart signal 76 causes the restart circuit 48 to issue a rearrangement clear signal 78. The rearrangement clear signal 78 causes the rearrangement circuit 42 to clear the speculative result data for the non-evacuated physical micro operation in the rearrangement buffer 82, and dispatches the reservation and dispatch circuit 38 to the execution circuit 40. Clear pending physics micro operations waiting to be done. The rearrangement clear signal 78 is also sent to the allocation circuit 3
6 resets the allocation pointer for allocating the physical register in the rearrangement circuit 42, and causes the save logic circuit 46 to reset the save pointer for saving the physical register.

【0183】再開始回路48は、マクロ命令ポインタ・
オフセット・バス120を介してマクロ命令ポインタ・
デルタ値を使用し、再開始命令ポインタ値を計算する。
再開始回路48は、再開始命令ポインタ値を、命令フェ
ッチ及びマイクロ演算発行回路32に、再開始ベクトル
・バス122を介して転送する。
The restart circuit 48 uses the macro instruction pointer /
Macro instruction pointer via offset bus 120
Calculate the restart instruction pointer value using the delta value.
The restart circuit 48 transfers the restart instruction pointer value to the instruction fetch and micro-op issue circuit 32 via the restart vector bus 122.

【0184】並び替えクリア信号78は、命令フェッチ
及びマイクロ演算発行回路32のマイクロ命令シーケン
サに、退避の前に並び替え回路42からクリアされた論
理マイクロ演算のイン・オーダーのストリームを発行さ
せる。
The rearrangement clear signal 78 causes the microinstruction sequencer of the instruction fetch and microoperation issuing circuit 32 to issue the in-order stream of the logic microoperations which was cleared from the rearrangement circuit 42 before saving.

【0185】本明細書においては、本発明は特定の実施
例を参照して説明されている。しかしながら、特許請求
の範囲に記載されているように、本発明の広範囲な精神
及び範囲から離れることなく、種々の修正や変形を行う
ことができることは明らかである。明細書及び図面は、
例示されたものであってこれに限定されるものではな
い。
The invention has been described herein with reference to specific embodiments. It will be apparent, however, that various modifications and variations may be made without departing from the broad spirit and scope of the invention, as set forth in the appended claims. The description and drawings are
It is only an example and is not limited to this.

【図面の簡単な説明】[Brief description of drawings]

【図1】 一組のプロセッサ及びメモリ・サブシステム
を含むマルチプロセッサ・コンピュータ・システムを示
す。
FIG. 1 illustrates a multiprocessor computer system including a set of processors and a memory subsystem.

【図2】 マルチプロセッサ・コンピュータ・システム
におけるプロセッサのブロック図である。
FIG. 2 is a block diagram of a processor in a multiprocessor computer system.

【図3】 論理ソースとデスティネーションを物理ソー
スとデスティネーションにマッピングすることにより、
論理マイクロ演算を対応する物理マイクロ演算に変換す
るレジスタ・エイリアス回路の機能を示す。
FIG. 3 By mapping logical sources and destinations to physical sources and destinations,
3 shows the function of a register alias circuit that converts a logical micro operation to a corresponding physical micro operation.

【図4】 物理マイクロ演算のアウト・オブ・オーダー
の推論的な実行から推論的な結果のデータを緩衝する一
組のROBエントリ(RE0〜REn)からなる並び替
えバッファを含む並び替え回路を示す。
FIG. 4 shows a reordering circuit including a reordering buffer consisting of a set of ROB entries (RE0-REn) to buffer speculative result data from out-of-order speculative execution of physical micro-operations. .

【図5】 マイクロ演算をアセンブルしディスパッチす
るRS0〜RSxの一組の予約ステーション・エントリ
からなる予約ディスパッチ・テーブルを含む予約及びデ
ィスパッチ回路を示す。
FIG. 5 shows a reservation and dispatch circuit including a reservation dispatch table consisting of a set of reservation station entries RS0 to RSx for assembling and dispatching micro operations.

【図6】 コミットされた結果のデータ値を緩衝する一
組のコミットされた状態レジスタを含む実レジスタ回路
を示す。
FIG. 6 illustrates a real register circuit that includes a set of committed state registers that buffer the committed resulting data values.

【図7】 アドレス生成回路、メモリ順序付け回路、デ
ータ変換ルックアサイド・バッファ(DTLB)回路、
及びデータ・キャッシュ回路を含むロード・メモリ回路
を示す。
FIG. 7 is an address generation circuit, a memory ordering circuit, a data conversion lookaside buffer (DTLB) circuit,
And a load memory circuit including a data cache circuit.

【図8】 LB0〜LBnの一組のロード・バッファ・
エントリからなるロード・バッファを含むメモリ順序付
け回路を示す。
FIG. 8: A set of load buffers LB0 to LBn
3 illustrates a memory ordering circuit including a load buffer of entries.

【図9】 それぞれのロード・バッファ・エントリLB
0〜LBnに対応するスヌープ検出回路を含むメモリ順
序付け回路内のスヌープ検出回路を示す。
FIG. 9: Each load buffer entry LB
1 shows a snoop detection circuit in a memory ordering circuit including a snoop detection circuit corresponding to 0 to LBn.

【図10】 メモリ順序付け再開始信号を生成するメモ
リ順序付け回路内の報知回路を示す。
FIG. 10 shows an annunciation circuit within the memory ordering circuit that generates the memory ordering restart signal.

【図11】 命令フェッチ及びマイクロ演算発行回路に
より発行されるロード・マイクロ演算 ld_0x10
0、EBX、EAXの処理を示す。
FIG. 11: Load micro operation ld — 0x10 issued by instruction fetch and micro operation issuing circuit
0, EBX, EAX processing is shown.

【図12】 ロード・マイクロ演算ld_0x100、
EBX、EAXに対応するリニア・ロード・メモリ・マ
イクロ演算ld_32100、42、ldid=4のデ
ィスパッチ及び退避を示す。
FIG. 12: Load micro operation ld_0x100,
The dispatch and save of the linear load memory micro-operations ld_32100, 42, ldid = 4 corresponding to EBX, EAX are shown.

【符号の説明】[Explanation of symbols]

20:マルチプロセッサ・コンピュータ・システム 22〜24:プロセッサ 26:メモリ・サブシステム 28:マルチプロセッサ・バス 30:バス・インタフェース回路 32:命令フェッチ及びマイクロ演算発行回路 34:レジスタ・エイリアス回路 36:割り当て回路 38:予約及びディスパッチ回路 40:実行回路 42:並び替え回路 44:実レジスタ回路 46:退避論理回路 48:再開始回路 50:論理マイクロ演算バス 52:物理マイクロ演算バス 54:論理デスティネーション・バス 56:物理デスティネーション・バス 58:ソース・データ・バス 60:マイクロ演算ディスパッチ・バス 62:結果バス 64:退避バス 66:予約ステーション選択バス 70:退避通知バス 72:ロード・バッファIDバス 74:インタフェース・バス 76:メモリ順序付け再開始信号 78:並び替えクリア信号 80:レジスタ・エイリアス・テーブル 82:並び替えバッファ 84:予約ステーション・テーブル 86:実レジスタ・ファイル 88:ロード・バッファ 90:リニア動作バス 94:読み取りバス 96:物理アドレス・バス 20: Multiprocessor computer system 22-24: Processor 26: Memory subsystem 28: Multiprocessor bus 30: Bus interface circuit 32: Instruction fetch and micro operation issuing circuit 34: Register alias circuit 36: Allocation circuit 38: reservation and dispatch circuit 40: execution circuit 42: rearrangement circuit 44: real register circuit 46: save logic circuit 48: restart circuit 50: logical micro operation bus 52: physical micro operation bus 54: logical destination bus 56 : Physical destination bus 58: Source data bus 60: Micro operation dispatch bus 62: Result bus 64: Evacuation bus 66: Reserved station selection bus 70: Evacuation notification bus 72: Load buffer ID bus 74 : Interface bus 76: Memory order restart signal 78: Sort clear signal 80: Register alias table 82: Sort buffer 84: Reserved station table 86: Real register file 88: Load buffer 90: Linear operation Bus 94: Read bus 96: Physical address bus

───────────────────────────────────────────────────── フロントページの続き (72)発明者 ハイサム・アッカリイ アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト アナスタシ ア ドライブ・17937 (72)発明者 アンドリュ・エフ・グルー アメリカ合衆国 97124 オレゴン州・ヒ ルズボロ・ノースイースト カスリン・ 825 (72)発明者 グレン・ジェイ・ヒントン アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト 185ティエ イチ アヴェニュ・6130 (72)発明者 クリス・ジイ・コニグスフェルド アメリカ合衆国 97229 オレゴン州・ポ ートランド・ノースウエスト アナスタシ ア ドライブ・17937 (72)発明者 ポール・ディ・マドランド アメリカ合衆国 97007 オレゴン州・ビ ーバートン・サウスウエスト キャロル グレン プレイス・7905 ─────────────────────────────────────────────────── ─── Continuation of the front page (72) Inventor Highham Akcarii United States 97229 Portland Northwest Anastasia Drive, Oregon 17937 (72) Inventor Andrew F. Glue United States 97124 Hillsboro Northeast Kaslin, Oregon 825 (72) Inventor Glenn Jay Hinton, USA 97229 Portland Northwest, Oregon 185 Tieich Avenue, 6130 (72) Inventor, Chris Konigsfeld, USA 97229 Portland Northwest, Anastasia Drive, Oregon 17937 (72) Inventor Paul Di Madland United States 97007 Oregon Over Burton South West Carroll Glen Place 7905

Claims (2)

【特許請求の範囲】[Claims] 【請求項1】 ロード・メモリ動作をメモリ・アドレス
からマルチプロセッサ・バスを介して特定するロード・
メモリ命令を、外部メモリからシーケンシャルなプログ
ラム順序でフェッチし、 ロード・メモリ命令を実行し、メモリ・アドレスでのプ
ロセッサ順序付け衝突を検出するためにマルチプロセッ
サ・バスをスヌープし、 メモリ・アドレスに対する外部格納動作が検出されない
場合には、アーキテクチャ状態に対するロード・メモリ
命令を、シーケンシャルなプログラム順序でコミット
し、 メモリ・アドレスに対する外部格納動作が検出された場
合には、ロード・メモリ命令を再実行するマルチプロセ
ッサ・コンピュータ・システムのプロセッサ順序付け方
法。
1. A load specifying a load memory operation from a memory address via a multiprocessor bus.
Fetch memory instructions from external memory in sequential program order, execute load memory instructions, snoop the multiprocessor bus to detect processor ordering collisions at memory addresses, and store externally to memory addresses A multiprocessor that commits load memory instructions to the architectural state in sequential program order if no activity is detected and re-executes the load memory instruction if an external store operation to a memory address is detected. A method for processor ordering in a computer system.
【請求項2】 ロード・メモリ動作をメモリ・アドレス
からマルチプロセッサ・バスを介して特定するロード・
メモリ命令を、外部メモリからシーケンシャルなプログ
ラム順序でフェッチする手段と、 ロード・メモリ命令を実行し、メモリ・アドレスでのプ
ロセッサ順序付け衝突を検出するためにマルチプロセッ
サ・バスをスヌープする手段と、 メモリ・アドレスに対する外部格納動作が検出されない
場合には、アーキテクチャ状態に対するロード・メモリ
命令を、シーケンシャルなプログラム順序でコミットす
る手段と、 メモリ・アドレスに対する外部格納動作が検出された場
合には、ロード・メモリ命令を再実行する手段を含むマ
ルチプロセッサ・コンピュータ・システムのプロセッサ
順序付け装置。
2. A load memory specifying a load memory operation from a memory address via a multiprocessor bus.
Means for fetching memory instructions from external memory in sequential program order, means for executing load memory instructions and snooping the multiprocessor bus to detect processor ordering conflicts at memory addresses, and memory A means for committing load memory instructions for the architectural state in sequential program order if no external store operation for the address is detected, and a load memory instruction if an external store operation for the memory address is detected. A processor ordering device for a multiprocessor computer system including means for re-executing.
JP20941894A 1993-08-26 1994-08-11 Method and apparatus for sequencing of processor of multiprocessor computer system Pending JPH0784965A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11266893A 1993-08-26 1993-08-26
US112668 1998-07-09

Publications (1)

Publication Number Publication Date
JPH0784965A true JPH0784965A (en) 1995-03-31

Family

ID=22345221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20941894A Pending JPH0784965A (en) 1993-08-26 1994-08-11 Method and apparatus for sequencing of processor of multiprocessor computer system

Country Status (5)

Country Link
JP (1) JPH0784965A (en)
DE (1) DE4429921A1 (en)
GB (1) GB2281422B (en)
IE (1) IE80854B1 (en)
SG (1) SG49220A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148467A (en) * 2005-11-24 2007-06-14 Nec Computertechno Ltd Information processor and its error processing method, and control program
JP2009048637A (en) * 2007-08-15 2009-03-05 Nvidia Corp Shared readable and writable global values in graphics processor unit pipeline
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8775777B2 (en) 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations

Families Citing this family (168)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69427734T2 (en) * 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearly addressed microprocessor cache
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
EP0651320B1 (en) 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
DE69429061T2 (en) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
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
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
EP0651324B1 (en) * 1993-10-29 2006-03-22 Advanced Micro Devices, Inc. Speculative instruction queue for variable byte length instructions
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
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
JPH07302200A (en) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> Loading instruction method of computer provided with instruction forcing sequencing loading operation and sequencing storage
US5632023A (en) * 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US6006324A (en) 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5819057A (en) * 1995-01-25 1998-10-06 Advanced Micro Devices, Inc. Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units
US5832249A (en) * 1995-01-25 1998-11-03 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5758114A (en) * 1995-04-12 1998-05-26 Advanced Micro Devices, Inc. High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
US5819059A (en) * 1995-04-12 1998-10-06 Advanced Micro Devices, Inc. Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
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
US5835753A (en) * 1995-04-12 1998-11-10 Advanced Micro Devices, Inc. Microprocessor with dynamically extendable pipeline stages and a classifying circuit
US5900012A (en) * 1995-05-10 1999-05-04 Advanced Micro Devices, Inc. Storage device having varying access times and a superscalar microprocessor employing the same
US5768610A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5878255A (en) * 1995-06-07 1999-03-02 Advanced Micro Devices, Inc. Update unit for providing a delayed update to a branch prediction array
US5859991A (en) * 1995-06-07 1999-01-12 Advanced Micro Devices, Inc. Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method
US5875324A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US6604190B1 (en) 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5875315A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Parallel and scalable instruction scanning unit
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5826071A (en) * 1995-08-31 1998-10-20 Advanced Micro Devices, Inc. Parallel mask decoder and method for generating said mask
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5892936A (en) * 1995-10-30 1999-04-06 Advanced Micro Devices, Inc. Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register
US5765035A (en) * 1995-11-20 1998-06-09 Advanced Micro Devices, Inc. Recorder buffer capable of detecting dependencies between accesses to a pair of caches
US5787474A (en) * 1995-11-20 1998-07-28 Advanced Micro Devices, Inc. Dependency checking structure for a pair of caches which are accessed from different pipeline stages of an instruction processing pipeline
US5835744A (en) * 1995-11-20 1998-11-10 Advanced Micro Devices, Inc. Microprocessor configured to swap operands in order to minimize dependency checking logic
US5903910A (en) * 1995-11-20 1999-05-11 Advanced Micro Devices, Inc. Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US5742791A (en) * 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US5848287A (en) 1996-02-20 1998-12-08 Advanced Micro Devices, Inc. Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches
US5687110A (en) * 1996-02-20 1997-11-11 Advanced Micro Devices, Inc. Array having an update circuit for updating a storage location with a value stored in another storage location
US5790821A (en) 1996-03-08 1998-08-04 Advanced Micro Devices, Inc. Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5752259A (en) * 1996-03-26 1998-05-12 Advanced Micro Devices, Inc. Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache
US5838943A (en) * 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US5918056A (en) * 1996-05-17 1999-06-29 Advanced Micro Devices, Inc. Segmentation suspend mode for real-time interrupt support
US5748978A (en) * 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
US5835511A (en) * 1996-05-17 1998-11-10 Advanced Micro Devices, Inc. Method and mechanism for checking integrity of byte enable signals
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5822560A (en) * 1996-05-23 1998-10-13 Advanced Micro Devices, Inc. Apparatus for efficient instruction execution via variable issue and variable control vectors per issue
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US5903740A (en) 1996-07-24 1999-05-11 Advanced Micro Devices, Inc. Apparatus and method for retiring instructions in excess of the number of accessible write ports
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5872943A (en) * 1996-07-26 1999-02-16 Advanced Micro Devices, Inc. Apparatus for aligning instructions using predecoded shift amounts
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5900013A (en) * 1996-07-26 1999-05-04 Advanced Micro Devices, Inc. Dual comparator scheme for detecting a wrap-around condition and generating a cancel signal for removing wrap-around buffer entries
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US6175906B1 (en) 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
US5870580A (en) * 1996-12-13 1999-02-09 Advanced Micro Devices, Inc. Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US5983321A (en) * 1997-03-12 1999-11-09 Advanced Micro Devices, Inc. Cache holding register for receiving instruction packets and for providing the instruction packets to a predecode unit and instruction cache
US5862065A (en) * 1997-02-13 1999-01-19 Advanced Micro Devices, Inc. Method and circuit for fast generation of zero flag condition code in a microprocessor-based computer
US5768555A (en) 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US6141740A (en) * 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US6233672B1 (en) 1997-03-06 2001-05-15 Advanced Micro Devices, Inc. Piping rounding mode bits with floating point instructions to eliminate serialization
US5850532A (en) * 1997-03-10 1998-12-15 Advanced Micro Devices, Inc. Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
US5968163A (en) * 1997-03-10 1999-10-19 Advanced Micro Devices, Inc. Microcode scan unit for scanning microcode instructions using predecode data
US5859992A (en) * 1997-03-12 1999-01-12 Advanced Micro Devices, Inc. Instruction alignment using a dispatch list and a latch list
US5828873A (en) * 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US5859998A (en) * 1997-03-19 1999-01-12 Advanced Micro Devices, Inc. Hierarchical microcode implementation of floating point instructions for a microprocessor
US5930492A (en) * 1997-03-19 1999-07-27 Advanced Micro Devices, Inc. Rapid pipeline control using a control word and a steering word
US5987235A (en) * 1997-04-04 1999-11-16 Advanced Micro Devices, Inc. Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
US5901076A (en) * 1997-04-16 1999-05-04 Advanced Micro Designs, Inc. Ripple carry shifter in a floating point arithmetic unit of a microprocessor
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US5845101A (en) * 1997-05-13 1998-12-01 Advanced Micro Devices, Inc. Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
US6122729A (en) 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
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
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US5933629A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for detecting microbranches early
US5983337A (en) * 1997-06-12 1999-11-09 Advanced Micro Devices, Inc. Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US5978901A (en) * 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
US6101577A (en) * 1997-09-15 2000-08-08 Advanced Micro Devices, Inc. Pipelined instruction cache and branch prediction mechanism therefor
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US5974542A (en) * 1997-10-30 1999-10-26 Advanced Micro Devices, Inc. Branch prediction unit which approximates a larger number of branch predictions using a smaller number of branch predictions and an alternate target indication
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6516395B1 (en) 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
US6079003A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US5974432A (en) * 1997-12-05 1999-10-26 Advanced Micro Devices, Inc. On-the-fly one-hot encoding of leading zero count
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6018798A (en) * 1997-12-18 2000-01-25 Advanced Micro Devices, Inc. Floating point unit using a central window for storing instructions capable of executing multiple instructions in a single clock cycle
US6112018A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6230262B1 (en) 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6122656A (en) * 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6415360B1 (en) 1999-05-18 2002-07-02 Advanced Micro Devices, Inc. Minimizing self-modifying code checks for uncacheable memory types
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6427193B1 (en) 1999-05-18 2002-07-30 Advanced Micro Devices, Inc. Deadlock avoidance using exponential backoff
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6442707B1 (en) 1999-10-29 2002-08-27 Advanced Micro Devices, Inc. Alternate fault handler
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7321964B2 (en) 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US10311191B2 (en) 2017-01-26 2019-06-04 Advanced Micro Devices, Inc. Memory including side-car arrays with irregular sized entries

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2704560C2 (en) * 1977-02-03 1979-01-18 Siemens Ag, 1000 Berlin Und 8000 Muenchen Data processing system with parallel provision and execution of machine commands

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148467A (en) * 2005-11-24 2007-06-14 Nec Computertechno Ltd Information processor and its error processing method, and control program
JP2009048637A (en) * 2007-08-15 2009-03-05 Nvidia Corp Shared readable and writable global values in graphics processor unit pipeline
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8599208B2 (en) 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8775777B2 (en) 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US9448766B2 (en) 2007-08-15 2016-09-20 Nvidia Corporation Interconnected arithmetic logic units
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations

Also Published As

Publication number Publication date
DE4429921A1 (en) 1995-03-09
SG49220A1 (en) 1998-05-18
GB2281422B (en) 1997-09-10
GB2281422A (en) 1995-03-01
IE940337A1 (en) 1995-03-08
IE80854B1 (en) 1999-04-07
GB9408016D0 (en) 1994-06-15

Similar Documents

Publication Publication Date Title
JPH0784965A (en) Method and apparatus for sequencing of processor of multiprocessor computer system
US5721855A (en) Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US8032734B2 (en) Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US7647475B2 (en) System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US5623628A (en) Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5961636A (en) Checkpoint table for selective instruction flushing in a speculative execution unit
US6021485A (en) Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US5867725A (en) Concurrent multitasking in a uniprocessor
US6341324B1 (en) Exception processing in superscalar microprocessor
US5860107A (en) Processor and method for store gathering through merged store operations
US6336183B1 (en) System and method for executing store instructions
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
EP0649085B1 (en) Microprocessor pipe control and register translation
US5778210A (en) Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5721857A (en) Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US5664137A (en) Method and apparatus for executing and dispatching store operations in a computer system
US6134646A (en) System and method for executing and completing store instructions
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
US5748937A (en) Computer system that maintains processor ordering consistency by snooping an external bus for conflicts during out of order execution of memory access instructions
JP2000181708A (en) Computer system
JPH10312282A (en) Method and device for improving insruction completion
US5689674A (en) Method and apparatus for binding instructions to dispatch ports of a reservation station
US6324640B1 (en) System and method for dispatching groups of instructions using pipelined register renaming
US6298435B1 (en) Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor