JP3096451B2 - データを転送する方法およびプロセッサ - Google Patents

データを転送する方法およびプロセッサ

Info

Publication number
JP3096451B2
JP3096451B2 JP10091330A JP9133098A JP3096451B2 JP 3096451 B2 JP3096451 B2 JP 3096451B2 JP 10091330 A JP10091330 A JP 10091330A JP 9133098 A JP9133098 A JP 9133098A JP 3096451 B2 JP3096451 B2 JP 3096451B2
Authority
JP
Japan
Prior art keywords
store
instruction
load
address
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP10091330A
Other languages
English (en)
Other versions
JPH10320198A (ja
Inventor
カート・アラン・ファイスト
ジョン・スティーブン・ムーヒック
ラリー・エドワード・サッチャー
スティーブン・ウェイン・ホワイト
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10320198A publication Critical patent/JPH10320198A/ja
Application granted granted Critical
Publication of JP3096451B2 publication Critical patent/JP3096451B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Memory System (AREA)
  • Communication Control (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Sink And Installation For Waste Water (AREA)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)
  • Coloring Foods And Improving Nutritive Qualities (AREA)
  • Peptides Or Proteins (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にはデータ処
理システムに関し、具体的にはプロセッサにおけるロー
ド命令とストア命令の順序外れの実行に係わる。
【0002】
【従来の技術】パフォーマンスの向上を達成するため
に、プロセッサおよびシステムの設計者はプロセッサ速
度とシステム・クロック速度を高速化し、1クロック期
間に実行される作業量を増大させようと試みている。多
くの影響の中でも特に、クロック速度向上を目指す努力
は、ユニット間の同期化を最小限にした分離設計と半自
立ユニットに向かう傾向にある。1クロック期間当たり
の作業量の増大は、追加の機能ユニットを使用し、使用
可能な命令レベルの並列性を十分に活用しようと試みる
ことによって達成されることが多い。
【0003】コンパイラは、プログラム中に存在する命
令レベルの並列性の現出を試みることができるが、経路
長を最短にする試みとアーキテクチャ・レジスタの数が
有限であることとが組合わさって、コンパイラがプログ
ラムの本質的な並列性を十分に現出できないようにしば
しば人為的に妨げられる。レジスタ資源が命令のより最
適な順序づけを妨げる(以下の命令シーケンスのよう
な)状況が多い。 FM FPR5<− FPR4、FPR4 FMA FPR2<− FPR3、FPR4、FPR5 FMA FPR4<− FPR6、FPR7、FPR8
【0004】上記の例で、ほとんどのプロセッサが複数
サイクル浮動小数点パイプラインを備えていると仮定す
れば、第2の命令は第1の命令が実行を開始してから数
サイクル後まで実行することができない。この場合、第
3の命令のソース・レジスタが使用可能であると予測さ
れる場合があり、第3の命令は第2の命令の前に実行可
能状態になっていると予測されるが、(第3の命令が命
令2が使用しているFPR4値を並行して上書きするた
め)コンパイラは異なるレジスタ割振りを選択せずにこ
の2つの命令を入れ替えることができない。この命令対
にとってより最適であると思われるレジスタ割振りを選
択すると、プログラム中の他の命令対のための最適レジ
スタ割振りと競合することが多い。
【0005】キャッシュ・ミスの動的作用は、順序外れ
の実行の方がインオーダー機で可能なよりも高い命令レ
ベル並列度を利用することができる他の例を示す。 Loop: Load GPR4,8(GPR5) Add GPR6,GPR6,GPR4 Load GPR7,8(GPR3) Add GPR8,GPR8,GPR7 Load GPR9,0(GPR6) Load GPR2,0(GPR8) ... branch conditional Loop
【0006】この例では、第1のロードについてキャッ
シュ・ミスが発生する反復もあれば、第2のロードにつ
いてキャッシュ・ミスが発生する場合もある。論理的に
は2つの独立した演算の流れがあるが、インオーダー・
プロセッサではキャッシュ・ミス直後に処理が停止し、
キャッシュ・ミスが解決されるまで再開しない。
【0007】この例は、順序外れの実行のカスケード効
果も示す。ストールした命令(この例ではキャッシュ・
ミスのあるロードに依存する命令)を超えて進むことが
できるようにすることによって、その後のキャッシュ・
ミスを検出することができ、それに付随するキャッシュ
・ミス・ペナルティを(少なくとも部分的に)元のミス
とオーバーラップさせることができる。複数ミスの場合
にオーバーラップするキャッシュ・ミス・ペナルティの
確率は、順序外れのロード/ストア命令をサポートする
能力と共に高くなる。
【0008】クロック速度がますます高くなるにつれ
て、キャッシュ・ミス・ペナルティを有用な演算や他の
キャッシュ・ミスとオーバーラップさせることができる
ことがますます重要になる。
【0009】現在の多くのプロセッサは、ロード/スト
ア・ユニットを除くすべてのユニットについて順序外れ
の実行を可能にすることによって、利用可能な多くの命
令レベル並列度を抽出する。非ロード/非ストアユニッ
トについて順序外れの実行をサポートする機構について
はよくわかっている。2つの命令の間に発生する可能性
のある競合はすべて、命令内に静的に指定されているレ
ジスタ・フィールドを比較するだけで検出することがで
きる。
【0010】競合が記憶場所によって生じる可能性があ
り、参照されるアドレスを知らなければそれらの競合を
検出することができないため、記憶域参照命令の順序外
れの実行ははるかに難しい問題である。有効/仮想アド
レスの生成と実アドレスへの変換は、通常、記憶域参照
命令の実行の一部として行われる。したがって、記憶域
参照命令が論理上それより前にある命令よりも先に実行
されると、現行命令の実行中に論理上前にある命令のア
ドレスを比較のために使用することができない。
【0011】順序外れの実行とオーバーラップ実行を行
う機械でロードおよびストア命令を実行するとき、実行
中のロード命令が、まだ完了していない前のストア命令
とオーバーラップするアドレスを持っている場合、通常
はストアが完了するまでロード命令をストールするか、
またはロード命令とその後続の命令を取り消す必要があ
る。
【0012】本出願は以下の出願と関連している。米国
特許出願第08/829662号「METHOD FO
R FAST UNIFIED INTERRUPT
AND BRANCH RECOVERYSUPPOR
TING FULL OUT−OF−ORDER EX
ECUTION」(特開平10−283181号公
報)。米国特許出願第08/934960号「CHEC
KPOINT TABLEFOR SELECTIVE
INSTRUCTION FLUSHING IN
A SPECULATIVE EXECUTION U
NIT」(米国特許第5961636号明細書)。米国
特許出願第08/829669号「SUPPORT F
OR OUT−OF−ORDER EXECUTION
OF LOADS AND STORES IN A
PROCESSOR」(米国特許第5931957号
明細書)。
【0013】
【発明が解決しようとする課題】したがって、当技術分
野では、ストアが完了するまでロード命令をストールさ
せたり、ロード命令とその後続の命令を取り消したりす
ることなく、ストアされたデータをそのデータを必要と
するロード命令に転送するシステムおよび方法が必要で
ある。
【0014】
【課題を解決するための手段】本発明は、ストア命令が
すでに変換されており、ロード・アドレス範囲がストア
・アドレス範囲内に含まれ、ストア・データが使用可能
である場合、ストア・データをロード命令に転送するこ
とによって、上記の必要に対処する。
【0015】一実施例では、本発明は、12ビットのス
ケールでストア命令とロード命令の有効アドレス・ビッ
トの突き合わせを行う。一致がある場合、16ビットの
スケールでもう一度有効アドレス・ビットの突き合わせ
を行う。このプロセスで一致がある場合、ロード命令と
ストア命令の実アドレスに関して比較を行う。実アドレ
スが一致する場合、ストア・データをロード命令に転送
する。
【0016】他の実施例では、実アドレスが一致する場
合、ストア転送プロセスが使用可能になっているか使用
不能になっているかを判断する。
【0017】ストア・データの転送を行う場合、ロード
命令はそのデータをメモリ・サブシステムではなくスト
ア・データ待ち行列から受け取る。
【0018】
【発明の実施の形態】以下の説明では、本発明を十分に
理解することができるように、特定のワード長やバイト
長など多くの特定の詳細を記載する。しかし、本発明は
そのような特定の詳細がなくても実施可能であることが
当業者には明らかであろう。他の場合には、無用な詳細
で本発明が不明瞭にならないように、周知の回路につい
てはブロック図の形で示してある。多くの場合、タイミ
ング上考慮すべき事柄などに関する詳細は、そのような
詳細が本発明を完全に理解するのに必要ではなく、当業
者の技術の範囲内に収まるため省略した。
【0019】次に図面を参照すると、図示されている要
素は必ずしも一定の縮尺で図示されているわけではな
く、いくつかの図面を通して同様または類似の要素は同
じ参照番号で示してある。
【0020】まず図1を参照すると、本発明により構成
可能なデータ処理システムの例が図示されている。この
システムは、「PowerPC Architectu
re:A Specification for a
New Family ofRISC Process
or」(第2版、1994年、Cathy May等
編。これは参照により本明細書に組み込まれる。)に準
拠したPowerPCマイクロプロセッサ(「Powe
rPC」はアイ・ビー・エム・コーポレイションの商
標)などの中央演算処理装置(「CPU」)210を有
する。PowerPCマイクロプロセッサのより具体的
な実施態様については「PowerPC604 RIS
C Microprocessor User's M
anual」(1994年、IBM Corporat
ion)に記載されており、これは参照により本明細書
に組み込まれる。本明細書で(たとえば特定の命令を説
明するために)記載されている頭字語の多くはPowe
rPC命令であり、これらの参照資料に詳細に記載され
ている。
【0021】CPU210はシステム・バス211によ
って他の様々な構成要素に結合されている。読取り専用
メモリ(「ROM」)116がシステム・バス211に
結合され、基本入出力システム(「BIOS」)が組み
込まれている。システム・バス211には、ランダム・
アクセス・メモリ(「RAM」)250、入出力アダプ
タ118、通信アダプタ134も結合されている。入出
力アダプタ118は、ディスク記憶装置120またはテ
ープ記憶ドライブ140と通信する小型コンピュータ・
システム・インタフェース(「SCSI」)アダプタと
することができる。本明細書では、入出力アダプタ11
8、ディスク記憶装置120、およびテープ記憶装置1
40を大容量記憶装置252とも呼ぶ。通信アダプタ1
34は、バス211を外部ネットワークと相互接続す
る。外部ネットワークは、この種のデータ処理システム
が他のこの種のデータ処理システムと通信することがで
きるようにする。システム・バス211にはユーザ・イ
ンタフェース・アダプタ122およびディスプレイ・ア
ダプタ136を介して入出力装置も接続される。キーボ
ード124、トラックボール132、マウス126、お
よびスピーカ128はすべてユーザ・インタフェース・
アダプタ122を介してバス211に相互接続されてい
る。ディスプレイ・モニタ138がディスプレイ・アダ
プタ136によってシステム・バス211に接続され
る。このようにして、ユーザはキーボード124、トラ
ックボール132、またはマウス126を介してシステ
ムに入力したり、スピーカ128およびディスプレイ1
38を介してシステムから出力信号を受け取ったりする
ことができる。さらに、AIX(「AIX」はアイ・ビ
ー・エム・コーポレイションの商標)などのオペレーテ
ィング・システムを使用して、図1に示す様々な構成要
素の機能を調整する。
【0022】次に図2を参照すると、添付の特許請求の
範囲に記載されている本発明により情報を処理する、デ
ータ処理システムの実施例のブロック図が図示されてい
る。図の実施例では、CPU210は単一の集積回路ス
ーパスカラ・マイクロプロセッサを含む。したがって、
以下で詳述するように、CPU210は様々な実行ユニ
ット、レジスタ、バッファ、メモリ、およびその他の機
能ユニットを含み、これらはすべて集積回路によって形
成される。図2に示すように、CPU210はバス・イ
ンタフェース・ユニット(「BIU」)212およびプ
ロセッサ・バス213を介してシステム・バス211に
結合されている。プロセッサ・バス213はシステム・
バス211と同様にアドレス・バス、データ・バス、お
よび制御バスを含む。BIU212は、バス・アービト
レーションに関与することによって、プロセッサ210
と、メイン・メモリ(「RAM」)250や不揮発性大
容量記憶装置252などシステム・バス211に結合さ
れている他の装置との間の情報の伝送を制御する。図2
に示すデータ処理システムは、システム・バス211に
結合されたその他の図示されていない装置を含むことも
できるが、それらは以下の説明を理解するのに必要では
なく、したがって説明を簡単にするために省略してい
る。
【0023】BIU212は命令キャッシュおよびMM
U(メモリ管理ユニット)214と、CPU210内の
データ・キャッシュおよびMMU216とに接続されて
いる。命令キャッシュおよびMMU214とデータ・キ
ャッシュおよびMMU216内にあるような高速キャッ
シュによって、CPU210は、メイン・メモリ250
からキャッシュに前に転送されているデータおよび命令
のサブセットへの比較的高速のアクセス時間を達成する
ことができ、したがって、データ処理システムの動作速
度が向上する。それぞれデータ・キャッシュおよび命令
キャッシュに記憶されているデータおよび命令は、アド
レス・タグによって識別され、アクセスされる。各アド
レス・タグは、メイン・メモリ250内のデータまたは
命令の物理アドレスの選択された数の上位ビットを含
む。命令キャッシュとMMU214は、さらに順次フェ
ッチ機構217に結合されている。順次フェッチ機構2
17は、各サイクル中に命令キャッシュとMMU214
から実行のために命令をフェッチする。順次フェッチ機
構217は、命令キャッシュおよびMMU214からフ
ェッチした分岐命令を実行のために分岐処理ユニット
(「BPU」)218に送るが、順次命令はCPU21
0内の他の実行回路によって実行するために命令待ち行
列219に一時的に格納する。
【0024】図の実施例では、CPU210の実行回路
はBPU218のほかに、順次命令を実行する複数の実
行ユニットを含み、これには固定小数点ユニット(「F
XU」)222、ロード/ストア・ユニット(「LS
U」)228、および浮動小数点ユニット(「FP
U」)230が含まれる。各実行ユニット222、22
8、および230は、典型的には、各プロセッサ・サイ
クル中に特定のタイプの順次命令の1つまたは複数の命
令を実行する。たとえば、FXU222は、指定された
汎用レジスタ(「GPR」)232から受け取ったソー
ス・オペランドを使用して、加算、減算、論理積、論理
和、排他的論理和などの固定小数点数学演算および論理
演算を実行する。固定小数点命令の実行に続いて、FX
Uは、結果バス262で受け取った結果に記憶域を提供
するGPRバッファ232に命令のデータ結果を出力す
る。それに対してFPU230は、典型的には、浮動小
数点レジスタ(「FPR」)236から受け取ったソー
ス・オペランドに対して、浮動小数点乗算および除算な
どの単精度および倍精度浮動小数点算術演算および論理
演算を実行する。FPU230は、浮動小数点命令の結
果であるデータを、結果データを記憶する選択されたF
PRバッファ236に出力する。名前が示すように、L
SU228は典型的には、メモリ(すなわちデータ・キ
ャッシュおよびMMU216内のデータ・キャッシュ、
またはメイン・メモリ250)からデータを選択された
GPR232またはFPR236にロードするか、また
はGPR232またはFPR236のうちの選択された
一方からメモリ250にデータをストアする、浮動小数
点命令および固定小数点命令を実行する。
【0025】CPU210は、命令のパイプライン実行
と順序外れの実行の両方を使用して、そのスーパースカ
ラ・アーキテクチャのパフォーマンスをさらに向上させ
る。したがって、データ依存関係が守られている限り、
命令はFXU222、LSU228、およびFPU23
0によって任意の順序で実行することができる。さら
に、命令は一連のパイプライン・ステージでFXU22
2、LSU228、およびFPU230のそれぞれによ
って処理される。高パフォーマンス・プロセッサに典型
的である通り、各順次命令は5段階の別個のパイプライ
ン・ステージ、すなわちフェッチ、デコード/ディスパ
ッチ、実行、終了、および完了ステージで処理される。
【0026】フェッチ・ステージ中には、順次フェッチ
機構217が命令キャッシュおよびMMU214から1
つまたは複数のメモリ・アドレスに関連づけられらた1
つまたは複数の命令を取り出す。命令キャッシュおよび
MMU214からフェッチされた順次命令は、順次フェ
ッチ機構217によって命令待ち行列219に格納され
る。それに対して、順次フェッチ機構217は命令スト
リームから分岐命令を除去(フォールド・アウト)し、
それらを実行のためにBPU218に転送する。BPU
218は分岐予測機構を含む。分岐予測機構は、一実施
例では分岐履歴テーブルなどの動的予測機構を含む。分
岐履歴テーブルによって、BPU218は分岐をとるか
とらないかをを予測することによって未解決の条件付き
分岐命令を推測的に実行する。
【0027】デコード/ディスパッチ・ステージでは、
ディスパッチ・ユニット220が命令待ち行列219か
ら1つまたは複数の命令を実行ユニット222、22
8、および230に、典型的にはプログラム順序でディ
スパッチする。従来のプロセッサでは、ディスパッチユ
ニット220は、各ディスパッチ命令の結果データのた
めにGPRリネーム・バッファ233またはFPRリネ
ーム・バッファ237内にリネーム・バッファを割り振
り、ディスパッチ時に、命令は完了ユニット240の複
数スロット完了バッファにも格納される。しかし、本発
明は、リネーム・レジスタも完了ユニットも必要としな
い実施態様に適応させることができる。図の実施例によ
ると、CPU210は順序外れの実行中に固有の命令識
別子を使用してディスパッチ命令のプログラム順序を追
跡する。
【0028】実行ステージでは、実行ユニット222、
228、および230がディスパッチ・ユニット220
から受け取った命令を、指示された演算のためにオペラ
ンドと実行資源が使用可能になるとその機会をつかんで
実行する。一実施例では、各実行ユニット222、22
8、および230は、その実行ユニットにディスパッチ
された命令をオペランドまたは実行資源が使用可能にな
るまで格納しておくリザベーション・ステーションを備
える。命令の実行が終了した後、実行ユニット222、
228、および230はデータ結果があればそれを命令
のタイプに応じてGPRまたはFPRに格納する。従来
のプロセッサでは、実行ユニット222、228、およ
び230は完了ユニット240にどの命令が実行を終了
したかを通知する。最後に、命令は完了ユニット240
の完了バッファからプログラム順序で完了する。FXU
222およびFPU230によって実行された命令は、
命令のデータ結果をGPRリネーム・バッファ233お
よびFPRリネーム・バッファ237からそれぞれGP
R232およびFPR236に転送することによって完
了する。LSU228によって実行されたロードおよび
ストア命令は、終了した命令を、ストア完了待ち行列ま
たはロード完了待ち行列に転送することによって完了
し、それらの待ち行列から、命令によって開始されたロ
ード操作とストア操作が行われることになる。
【0029】本発明は、プロセッサのディスパッチ論理
回路を使用して、従来のフォン・ノイマン命令ストリー
ムをデータ・フロースタイル形式に「トークン化」す
る。したがって、データ依存関係を、レジスタ・リネー
ムの場合のように各命令が必要とするソース・データの
記憶場所を追跡することによって処理するのではなく、
ソース・データを供給する他の命令を参照することによ
ってソース・データの追跡を可能にする特定の情報を命
令に関連づけることによって処理する。したがって、プ
ロセッサは、トークン、すなわち各タグがディスパッチ
時に命令に固有に関連づけられるタグを生成するターゲ
ット標識(「TID」)生成機構を備える。TIDは、
プログラム順序情報を保持し、データ依存関係を追跡す
るのに使用される。
【0030】本発明のディスパッチ・ユニット220
は、TIDを割り当てて命令をディスパッチするだけで
なく、ディスパッチされた命令の状況を追跡するために
使用される様々なテーブルの更新も行う。
【0031】CPU210は、順序外れの推測命令実行
をサポートする。命令は、予測分岐方向に対する推測命
令か、または割込み条件を生じさせる可能性がある命令
を超える推測命令の場合がある。分岐予測外れまたは割
込みが起こった場合、ハードウェアは望ましくない命令
をパイプラインから自動的にフラッシュし、望ましくな
い結果を破棄して、正確な例外と順次実行された命令の
効果を適切な分岐経路に送る。誤った推測結果は、1ク
ロック・サイクル中にすべてのユニットから選択的にフ
ラッシュされ、命令ディスパッチはその次のクロック・
サイクルを開始することができる。未解決の分岐または
割込み可能命令によって区切られた1組の命令に1つの
グループ識別子タグ(「GID」)が割り当てられる。
【0032】以下に、本発明について、複数のロード・
ユニットと単一のストア・ユニットを含む実施態様に関
して説明する。しかし、当業者なら、本発明は単一のロ
ード/ストア・ユニットなど他の構成を扱うように修正
することができることは明らかであろう。提案する本発
明によって、ロードは他のロードおよびストアを基準に
して順序外れで実行することができ、ストアはすべての
ロードを基準にして順序外れで実行することができる。
【0033】前述のように、任意の2つの命令の間の相
対的エイジが容易に判断できるようにしてすべての命令
にタグが付けられる。この説明で前提とする機構は、単
調に増加する値(TID)である。各命令のTID値
は、その命令が入っている待ち行列項目とパイプライン
・ステージに関連づけられる。
【0034】このTIDに基づく手法によって、ハード
ウェアは、プロセッサが生成したフラッシュ・コマンド
に応答して、そのフラッシュ・コマンドに関連づけられ
たTIDと特定の待ち行列項目または機能ユニット・ス
テージに関連づけられたTIDの値の絶対値比較を行
い、その項目がフラッシュした命令と同じかまたはそれ
より若い命令の項目である場合、その項目を無効化する
ように、命令フラッシュ機構を実施することができる。
フラッシュされた命令の残り全部(およびすべての後続
命令)はCPUから「フラッシュ」され、フェッチ・ユ
ニットは「フラッシュ」された命令のアドレスからフェ
ッチを開始するようにリダイレクトされる。
【0035】次に図3を参照すると、命令待ち行列21
9と命令キャッシュ214に結合されたロード/ストア
・ユニット228が図示されている。浮動小数点ユニッ
ト230も図示されている。図3には、基本機能ユニッ
トと命令待ち行列が図示されている。機能ユニットはク
ラスタA307、クラスタB308、およびストア・ユ
ニット302である。本発明は、3つの待ち行列と、こ
れらの待ち行列とロード・ユニットとストア・ユニット
の両方の間の連動とを中心にしている。待ち行列は次の
3つである。 ・ ストア・アドレス待ち行列303 ・ 「プリロード」待ち行列309 ・ 「ロード−ヒット−ロード」待ち行列315
【0036】これらの各待ち行列内の項目は典型的に
は、その項目に関連づけられた命令のTID(またはエ
ージ標識)と、オペランド・アドレスと、オペランド・
バイト・カウントとを含む。この情報によって、項目と
他の記憶参照との間の相対エージ判断が可能になるだけ
でなく、所望の場合はバイト・レベルまでのオーバーラ
ップ検出が可能になる。
【0037】一実施例では、ディスパッチ・ユニットの
「下」とロードおよびストア・ユニットの「上」に2つ
の命令待ち行列がある。ディスパッチされたロードはす
べて、ストア・ユニット302を待つ間、「PEQ」3
06内で待機し、ストアはすべて、ストア・ユニット3
02を待つ間、「SPQ」301内で待機する。各サイ
クルの始めにハードウェアウェアは、まだ変換されてい
ないディスパッチ済みストアがある場合、どれが最も古
いストアであるかを判断する。上述の命令待ち行列構造
の場合、これは1つまたは複数のストア・ユニットの中
に未変換ストアがないか検査するステップから成る。未
変換ストアがある場合、最も古いものが「最も古い未変
換ストア」とみなされる。未変換ストアが1つもない場
合、SPQ301を調べて最も古い未変換ストアを探
す。そのようなストアが見つかった場合、それが「最も
古い未変換ストア」とみなされる。見つからなかった場
合、「最も古い未変換ストア」ポインタは次にディスパ
ッチされる命令をデフォルトとしてとる。
【0038】ストア・アドレス待ち行列303は、変換
されたがそれに付随するデータがまだL1キャッシュ3
10、311に書き込まれていないすべてのストアのF
IFOリストである。項目は、実行時にストア命令の変
換の結果として作成される。付随データがL1キャッシ
ュ310、311に書き込まれた結果として項目が削除
される。ストア・アドレス待ち行列303にはストア・
データ待ち行列304が関連づけられている。ストアが
ディスパッチされると、ストア・データ待ち行列304
内に項目が割り振られる。項目が割り振られるときにス
トア・データが使用可能な場合、そのデータがストア・
データ待ち行列304に入れられる。そうでない場合
は、機能ユニットによってデータが生成されると、スト
ア・データ待ち行列304は結果バスをスヌープし、ス
トア・データ待ち行列304内のデータをキャプチャす
る。ストア・アドレス待ち行列303と同様に、バイト
がL1キャッシュ310、311に書き込まれると項目
が削除される。
【0039】ストア・データ待ち行列304およびスト
ア・アドレス待ち行列303はストア・データ待ち行列
処理ユニット305に結合され、ストア・データ待ち行
列処理ユニット305はロード・ミス待ち行列312に
結合されている。ロード・ミス待ち行列312はL2キ
ャッシュ・アービトレーション論理回路313に結合さ
れている。これらのユニットの詳細は、本発明を説明す
るのに必要でないため詳述しない。ロード/ストア実行
ユニット228内には他の機能ブロックも実装可能であ
るが、説明を簡単にし明確にするために図示していない
ことに留意されたい。
【0040】実行ユニット302とSPQ301の両方
を同時に同じ重みで検査したとすれば、本発明はストア
が他のストアを基準にして順序外れで実行される事例に
拡張することができる。この説明では、ストアが順序通
りに実行されるものと仮定しているため、ストアを「最
も古い未変換ストア」として確立するために実行ユニッ
ト302の方を先に、より高い優先順位で検査する。ス
トアのインオーダー実行は、ストア・アドレス待ち行列
303を先入れ先出し(FIFO)待ち行列として管理
することができると同時に、ストア・アドレス待ち行列
空間から生じるデッドロック問題が回避される。
【0041】プリロード待ち行列309は本発明に特有
のものであり、論理的に「最も古い未変換ストア」の後
に続くすべての変換済みロードのアドレスを保持する。
各サイクルの始めに、ロード・ユニットで実行されてい
るロードが「最も古い未変換ストア」の論理的な後続命
令であるかどうかを判断する。そうである場合、それら
の命令は「プリロード」とみなされ、実行のためにプリ
ロード待ち行列309内に項目を必要とする。プリロー
ド待ち行列309に空きがなく、項目が必要な場合、以
下の2つの処置のいずれかが行われる。 ・ 実行中のロードがプリロード待ち行列309内のす
べてのロードより若い(論理的に後にある)場合、当該
ロード(およびすべての後続命令)が装置210からフ
ラッシュされ、命令フェッチ・ユニット217はフラッ
シュされたロード命令のアドレスからフェッチを開始す
るようにリダイレクトされる。 ・ プリロード待ち行列309内の項目がプリロード待
ち行列項目を必要とする実行中のロードよりも若い場
合、プリロード待ち行列309内の最も若いロード(お
よびその後続命令)がフラッシュされ、再フェッチさ
れ、実行中のロードにプリロード待ち行列309内のフ
ラッシュされたロードの項目が与えられる。
【0042】同じサイクル中に実行中の複数のロードが
プリロード待ち行列項目を必要とすることが可能な実施
態様の場合、上述の態様を簡単な方式で修正する。すな
わち、ロードは、上述の規則により、最も古いロードか
ら始めて一度に1ロードずつ処理されたかのような結果
になる。たとえば、実行中の2つのロードがそれぞれプ
リロード待ち行列項目を必要とし、項目が1つしかない
場合、実行中の最も古いロードがその使用可能な項目を
獲得し、実行中の最も若いロードは、いっぱいになった
待ち行列309に関する上述の規則に従う。
【0043】各サイクルの終わりに、プリロード待ち行
列309内の有効な項目が「最も古い未変換ストア」エ
ージと比較される。「最も古い未変換ストア」よりも古
い(論理的に前にある)項目は無効化(廃棄)される。
プリロード待ち行列項目は、プリロード待ち行列項目が
フラッシュ・コマンドの対象となる(すなわちより若
い)ロード命令の項目である場合にフラッシュ・コマン
ドの結果として無効化されることもある。
【0044】ストア・アドレス待ち行列303には、変
換されたがそのデータがまだL1キャッシュ310、3
11に書き込まれていないストアのアドレスが入れられ
る。本発明で使用する目的のほかに、この待ち行列30
3によって、ストア・データを待たずに、ストアの変換
と例外の検出を行うことができる。ストア命令のこの2
つの部分を分離することが、プロセッサ210の(通常
は記憶参照のためのアドレス生成/変換を行う)固定小
数点部230を、(浮動小数点データの生成/正規化を
行う)浮動小数点から分離する鍵になる。現在のいくつ
かの設計には、このようなストア・アドレス待ち行列3
03が含まれている。大部分の既存の実施態様のよう
に、ストア・アドレス待ち行列303はFIFO方式で
管理され、ストア・アドレス待ち行列303内の最も古
い項目が次にL1キャッシュ310、311に書き込ま
れる。当業者なら、最も古い項目以外の項目をL1キャ
ッシュ310、311に書き込んで、データを持ってい
るより若いストアが、データを処理するより古いストア
より前に書込みを行えるようにすることができることは
明らかであろう。また、上述の本発明はこの改良を扱う
ために修正を必要としないことも明らかであろう。
【0045】ストア・アドレス待ち行列項目は以下の2
つの条件の下で無効化(廃棄)される。 ・ 関連づけられたストア操作がL1キャッシュ31
0、311に対して行われる。 ・ ストア・アドレス待ち行列項目が命令フラッシュ・
コマンドの対象よりも若いため、廃棄されるべきである
ことがフラッシュ・コマンドによって通知される。
【0046】ロード−ヒット−ロード待ち行列315は
本発明に特有のものであり、最も古い未変換ロードまた
はストアより論理的に後にあるすべての変換済みロード
のアドレスを保持する。各サイクルの始めに、ロード・
ユニットで実行中のロードが、最も古い未変換ロードま
たはストアより論理的に後の命令であるかどうかが判断
される。そうである場合、それらの命令は実行のために
ロード−ヒット−ロード待ち行列315内に項目を必要
とする。ロード−ヒット−ロード待ち行列315に空き
がなく、項目が必要な場合、以下の2つの処置のいずれ
かが行われる。 ・ 実行中のロードがロード−ヒット−ロード待ち行列
315内のすべてのロードよりも若い(論理的に後にあ
る)場合、当該ロード(およびすべての後続命令)が装
置210からフラッシュされ、命令フェッチ・ユニット
217はフラッシュされたロード命令のアドレスからフ
ェッチを開始するようにリダイレクトされる。 ・ ロード−ヒット−ロード待ち行列315内の項目
が、プリロード待ち行列項目を必要とする実行中のロー
ドよりも若い場合、ロード−ヒット−ロード待ち行列3
15内の最も若いロード(および後続命令)がフラッシ
ュされ、再フェッチされ、実行中のロードに、ロード−
ヒット−ロード待ち行列315内のフラッシュされたロ
ードの項目が与えられる。
【0047】同じサイクル中に実行中の複数のロードが
ロード−ヒット−ロード待ち行列を必要とすることがあ
る実施態様の場合、上記の態様を簡単な方式で修正す
る。すなわち、ロードが上述の規則によって最も古いロ
ードから始めて一度に1ロードずつ処理されたかのよう
な結果になる。たとえば、実行中の2つのロードがそれ
ぞれロード−ヒット−ロード待ち行列項目を必要とし、
項目が1つしかない場合、実行中の最も古いロードがそ
の使用可能な項目を獲得し、実行中の最も若いロード
は、いっぱいになった待ち行列315に関する上述の規
則に従う。
【0048】各サイクルの終わりに、ロード−ヒット−
ロード待ち行列315内の有効な項目が最も古い未変換
ロードまたはストアのエージと比較される。最も古い未
変換ロードまたは最も古い未変換ストアよりも古い(論
理的に前にある)項目は無効化(廃棄)される。ロード
−ヒット−ロード待ち行列項目は、ロード−ヒット−ロ
ード待ち行列項目がフラッシュ・コマンドの対象となる
(すなわちより若い)命令であるロード命令の項目であ
る場合、フラッシュ・コマンドの結果として無効化され
ることもある。
【0049】プリロード待ち行列309およびロード−
ヒット−ロード待ち行列315には同様の情報が入れら
れ、実施態様によっては併合して単一の構造体とするこ
ともできることに留意されたい。
【0050】以上の説明では、プリロード待ち行列30
9とストア・アドレス待ち行列303とロード−ヒット
−ロード待ち行列315という本発明のための3つの基
本待ち行列において項目の作成と廃棄が行われる条件に
ついて詳述した。以下では、前述のアーキテクチャ記憶
整合性要件に対応するために待ち行列間で行われるアド
レス検査について詳述する。
【0051】考慮する例は以下の場合である。 ・ ロードがストアからデータを必要とする ・ ストアが実行された後でロードを実行する ・ ストア操作がまだストア・アドレス待ち行列303
に入れられている間に(すなわち、完了とも呼ぶL1キ
ャッシュ310、311を更新するストア操作の前)、
ロード操作がL1キャッシュ310、311からデータ
を入手した
【0052】ストアがすでに変換されており、ロード・
アドレス範囲がストア・アドレス範囲内に含まれ、スト
ア・データが使用可能である場合、ストア・データをロ
ード命令に転送して装置210が実行に取りかかれるよ
うにすることができる。本発明のストア転送/ロード−
ヒット−ストア検出論理回路は、プロセッサ210がロ
ードおよびストアをそれぞれ32バイト境界および16
バイト境界を超えて分割することによって可能な最適化
を利用する。さらに、どのデータが転送可能であるかに
関する制限によって、フォーマットおよび転送ハードウ
ェアを最適化することができる。ロード/ストア実行サ
イクル中のアドレス変換の待ち時間のために、パフォー
マンス上の理由からページ・オフセット・ビットに基づ
いて転送検査を複数の検査に区分化してからロードおよ
びストア・アドレスの変換済みビットを検査するのが望
ましい場合がある。別名化の可能性があるため、命令の
コミットを含むオーバーラップ検査は実アドレスに基づ
いて行う。しかし、推測実行の場合、ロード−ヒット−
ストアと可能性のある転送の予測は有効アドレスに基づ
いて行う。
【0053】ストア転送は、ロード−ヒット−ストア事
例の特殊な場合であり、したがって、ロード−ヒット−
ストア検出論理とハードウェアの一部を共用する。ロー
ド−ヒット−ストア機構およびストア−ヒット−ロード
機構については、前述の米国特許出願第08/8296
69号(米国特許第5931957号明細書)に記載さ
れている。ロード−ヒット−ストア状況が発生したと
き、ロード・アドレス範囲がストア・アドレス範囲内に
含まれ、後述の条件が満たされている場合、ロード命令
は、L1キャッシュ310、311またはその他のメモ
リ・サブシステム構成要素からではなくストア・データ
待ち行列304からデータを受け取る。
【0054】以下に、転送操作の概要を述べる。サイク
ル1中にロード命令(ロード複数/ストリングLMW、
LSWX、およびLSWIを除き、すべての固定小数点
ロードおよび浮動小数点ロード、LWARX、ECIW
Xを含む)を実行し、それがストア・アドレス待ち行列
303に入っている(論理的に前にある)ストア操作と
ぶつかる場合(この文脈では「ストア」にはストア・ア
ドレス待ち行列項目を必要とするすべての命令、すなわ
ち固定小数点および浮動小数点ストア、STWCX、S
YNC、ICBI、DCBx、EIEIO、TLBSY
NC、TLBIE、およびECOWXを含む)、ロード
はクラスタ実行ユニット307、308内に保持され、
1サイクルの間に再実行される。ストア・アドレス待ち
行列項目が対象となるロードより論理的に前にあるかど
うかを判断する際、それに関連づけられたTIDを比較
する。「コミット済み」(ストアが変換され、IIT
(図示せず)から除去された)としてマークされたすべ
てのストア・アドレス待ち行列項目は、TID比較の結
果に関係なく、このロードよりも古いと見なされる。ロ
ードが複数のストア・アドレス待ち行列項目とぶつかる
場合、最も若い障害となるストアのみがヒットと見なさ
れる。
【0055】サイクル2では、ロードおよびストア命令
の32ビットの実アドレス(「RA」)ビットを比較し
て、真のロード−ヒット−ストア条件であるかどうかを
判断する。サイクル2ではアドレス/TID比較が行わ
れ、サイクル1で変換されたストアはストア・アドレス
待ち行列303に組み込まれるが、ライトバック比較サ
イクル(サイクル2)で変換するストアは組み込まれな
い。
【0056】32ビットの実アドレス比較によってそれ
がロード−ヒット−ストアではない(すなわちバイト・
オーバーラップがない)ことが示された場合、IDU2
20はサイクル3でフラッシュを通知する。32ビット
の実アドレス比較によって、ロード−ヒット−ストア
(すなわち1つまたは複数のバイト・オーバーラップが
ある)であることが示された場合、 a)ストア転送が使用不能化されている場合は、IDU
220はサイクル3でロードのフラッシュを通知し、 b)ストア転送が使用可能になっている場合は、データ
が使用可能であれば再実行の最初のサイクル中にロード
は(フラッシュなしに)完了する。データが使用可能な
のは次の場合である。 a)単一のSDQ項目にロード・データが入っている b)SDQ項目内のデータが有効である c)ロードもストアもI=1スペースではない(両方と
もキャッシュ可能なアドレスである) d)ロードが16バイト境界を超えていない e)以下のストア/ロードのサイズ/位置合わせの対が
真である 1.STB LBへの転送 2.STH LHへの転送 3.STW/STFS LWまたはLFSへの 転送 4.STWBRX LWBRXへの転送 5.STHWBRX LHBRXへの転送 6.ワード位置合わせされたSTW LBまたはLHの転送 7.ワード位置合わせされたSTFS LB、LH、LW、ま たはLFSへの転送 8.ワード位置合わせされたSTFD LB、LH、LW、ま たはLFSへの転送 9.ワード位置合わせされたSTMW LB、LH、LW、ま たはLFSへの転送 10.ワード位置合わせされたSTSWX/I LB、LH、LWまた はLFSへの転送
【0057】9および10の事例は、SDQ項目が個々
のワード位置合わせされたワード・アクセス(6の事
例)の集合によって作成されたかのように適用される。
事例10で、ワードに入っているのが4バイト未満の場
合、転送はできない。
【0058】データが使用可能でない場合、IDU22
0はサイクル3中にロードのフラッシュを通知する。デ
ータが使用可能な場合、データ転送はL1キャッシュ−
ヒットの場合と比較して1サイクル遅延される。
【0059】ストア・アドレス待ち行列303およびス
トア・データ待ち行列304には、潜在的なストア転送
シナリオの検出に関連づけられた追加の論理が含まれ、
ストア転送のためのデータを供給し、有用なストア転送
機械をフラッシュする。ロード−ヒット−ストア論理
と、ストア転送論理がどのように有効アドレスおよび実
アドレス比較を使用するかを以下に説明する。ここで
は、ストア/ロード・サイズおよび位置合わせ(上記の
規則)によってどのようにしてストア転送を行うことが
できるか、また、必要なフォーマット化を行う方法につ
いて説明する。この説明では、ロード−ヒット−ストア
・オーバーラップが検証済みであるものと仮定する。次
に、データ使用可能性と最も若い障害となるストア/ロ
ード・サイズ/位置合わせ(上記のa〜eの規則)によ
って、転送を行うかどうかを決定する。
【0060】上記の「規則e」の最初の5項目は、ロー
ドとストアとの間の厳密なサイズおよび位置合わせの一
致に対応する。この条件の検出には、単にロードとスト
アとの厳密な実アドレス比較(したがって同じ位置合わ
せ)と、ロードとストアが同じサイズであることが必要
なだけである。ロードとストアは16バイト境界を超え
ない限りは位置合わせされていなくてもよい。
【0061】「規則e」の項目6〜10では、異なるサ
イズのロードとストアの限定された転送が可能である。
ストア・ワードまたはストア・ダブルがワード位置合わ
せされている場合、ストア・データをロード・ワード
(これも最初の5項目に含まれる)に加えてロードバイ
トおよびロード・ハーフに転送することができる。項目
6〜10が適用可能であるかどうかの検出には、最後の
2ビットを除くロードとストアの厳密な実アドレス比較
が必要である。ロードがバイト・ロードの場合、ストア
・ワードをロードに転送することができる。ロードがハ
ーフ・ワードである場合、ロード・アドレスの最後の2
ビットがb'11'でない限り、ストア・ワードをロード
に転送することができる。
【0062】「規則e」の最初の5項目は、ストア転送
を行うためにフォーマット化を必要としない。各実行ク
ラスタ307、308の12ポート・マルチプレクサ
(図示せず)が、転送するストア・データ待ち行列を選
択する。フォーマット化が不要なため、クラスタに信号
を送って項目を結果バス262に直接渡す。項目6〜1
0は、ストア・データを結果バス262で返す前に0バ
イトから3バイトにシフトさせる必要があることがあ
る。これらの規則におけるストアはワード位置合わせさ
れるため、実行クラスタはロード・アドレスによって正
しいシフト量に合わせてすでに適切に構成されている制
御を使用してL1キャッシュの出力から必要な同じフォ
ーマッタを使用することができる。ストア転送論理は、
転送データをそのままの状態でとるべきか、またはロー
ド・フォーマッタがロード・アドレスに基づいてデータ
をシフトさせなければならないかどうかを示すだけで済
む。
【0063】ロード−ヒット−ストアが検出されると、
最も若い障害となるストアが判断され、それに対応する
ストア・データ待ち行列項目が12ポート・マルチプレ
クサ(図示せず)によって選択される。実行クラスタ3
07、308がロード−ヒット−ストア条件のために保
留状態にされると、クラスタ307、308はストア・
データ待ち行列304から有効データを受け取るものと
見なす。上記のストア転送規則が満たされていない場
合、ストア転送論理はロード命令のFLUSHを発行す
る。
【0064】図4に、ストア転送を実施しないストア検
出を示す。図5に、L1キャッシュ・ヒットとTSA
(変換シャドウ・アレイ)ヒットを前提としたロードに
ついて可能なタイミングを示す。ロードの実行サイクル
中に、ロードと、ストア・アドレス待ち行列303内の
すべての有効項目との間で12ビット有効アドレス・オ
ーバーラップ比較が行われる。実行サイクル中の12ビ
ット有効アドレス・オーバーラップ比較によって、変換
アドレスが使用可能な場合に次のサイクルで必要な比較
論理が最小限になる。次のサイクルで、ロードが正常に
変換された場合、実アドレス比較が行われる。前のサイ
クルで実行された12ビット・オーバーラップ有効アド
レス比較のためと、32バイト境界および16バイト境
界を超える場合にロードおよびストアが複数のロードお
よびストアに分割されるため、24ビット・ページ・ア
ドレス等価比較だけを行うだけでよい。12ビット・オ
ーバーラップ検査は24ビット等価比較よりも遅い1組
の絶対値比較から成るため、全変換アドレスの前に12
ビット・オーバーラップ比較を行うことができることに
よってクリティカル・パス・タイミングが削減される。
ストア転送がサポートされていないとき、順序外れの実
行機でのデッドロックを避けるため、ロードがストア・
アドレス待ち行列303内のストアとオーバーラップす
る場合、ロードとそのロードに続くすべての命令および
結果をプロセッサ210からフラッシュする。
【0065】図6に、一実施例におけるロード−ヒット
−ストア・シナリオの検出とストア転送の実施のフロー
チャートを示す。図7に、そのようなロード−ヒット−
ストア・シナリオのあるストア転送のサイクルごとのタ
イミングを示す。ロードの実行サイクル中に、ロードと
ストア・アドレス待ち行列303内のすべての有効項目
との12ビット有効アドレス・オーバーラップ比較が行
われる。12ビット有効アドレスがストア・アドレス待
ち行列と一致する場合、実行クラスタ307、308が
保留にされる(ストールされる)。次のサイクルで、ロ
ードが正常に変換されると、実アドレス比較が行われ
る。実アドレスが一致しない場合、前のサイクルでL1
キャッシュ310、311からロードされたデータが結
果バス262でGPR232に返される。実アドレスが
一致し、ストア転送規則が満たされている場合、ストア
・データがロードに転送される。実アドレスは一致して
いるが、ストア転送要求を満たすことができない場合、
ロードはフラッシュされる。
【0066】残念ながら、図7に示す事例Bでは、実行
クラスタ307、308は実行サイクル中にL1キャッ
シュ310、311からロードされたデータを保持でき
なければならず、ロード−ヒット−ストア条件が偽であ
る場合、次のサイクルで結果バス262でデータを転送
できなければならない。その結果、すでにタイミング・
クリティカル・パスで必要サイクル時間が増大する。調
査したもう一つの選択肢では、12ビットEAオーバー
ラップ比較を使用してクラスタ307、308を保留
(ストール)すべきかどうかを判断し、その後、次のサ
イクル中に、ストア・データ転送がロード要求を満たす
ことができればロードがフラッシュされることになる。
この選択肢の結果、余分なロード・フラッシュが行わ
れ、それによって全体的なパフォーマンスが低下する。
【0067】本発明は、すでに設計済みのロード−ヒッ
ト−ストア・ハードウェアに基づいて構築された他のス
トア転送機構を実施する。ストア転送の結果として最終
的なパフォーマンス向上を実現するためには、図6およ
び図7の実施例のようにプロセッサのサイクル時間を長
くすることはできない。図6および図7の実施例は、ロ
ード−ヒット−ストアを判断する間、ロードの結果を1
サイクルの間保持するデータフロー経路を必要とする。
このデータフロー経路によってチップ全体のサイクル時
間が決まる可能性があり、したがってストア転送を行う
経路を長くすると全体的パフォーマンスが向上しない。
したがって、実行後のサイクルまで実アドレス比較が行
われなくてもロード結果の保持を必要としない代替策を
開発した。実行クラスタを保留状態にするかどうかの決
定を実行サイクル中に行うが、実行クラスタが保留(ス
トール)されると、ストア待ち行列からデータを転送す
るかまたはロードをフラッシュしなければならない。
【0068】この代替実施例を図8および図9に示す。
事例A、B、C、Dについては以下で詳述する。実行サ
イクル中に、12ビットと16ビットの両方の有効アド
レス・オーバーラップ比較を行う。12ビット有効アド
レス・オーバーラップ比較がすべての有効ストア・アド
レス待ち行列項目について偽の場合、ロード−ヒット−
ストアはなく、ロードはその結果バス262でGPR2
32にデータを返すことができる。12ビット有効アド
レスはストア・アドレス待ち行列項目と一致するが、1
6ビット有効アドレスは一致しない場合、本発明はロー
ド−ヒット−ストアがないものと推測予測し、クラスタ
307、308は保留(ストール)されない。まれに仮
想−実別名アドレス化がある場合で、有効アドレスはオ
ーバーラップしないが実アドレスはオーバーラップする
場合、ロードはフラッシュされる。(実行クラスタ30
7、308は保留(ストール)されないため、プロセッ
サ210はストア・データをロードに転送することがで
きない。)ロードの16ビット有効アドレスがストア・
アドレス待ち行列項目と一致する場合、ロード−ヒット
・ストア・フラッシュまたはストア・データ転送を見越
して実行クラスタ307、308は保留(ストール)さ
れる。次のサイクルで実アドレスが一致する場合、本発
明は転送が前述の規則に従っているかどうかを判断す
る。一致しない場合はロードがフラッシュされる。
【0069】16ビット有効アドレスは一致するが実ア
ドレスは一致しない場合、ロード−ヒット−ストア条件
が発生しない場合でもフラッシュが行われる。その結
果、偽ロード−ヒット−ストアが検出され、それによっ
て命令実行の不要な取消しが行われることに留意された
い。本発明は4ビットの追加有効アドレス・ビットを比
較してこれが発生するのを少なくする。これらの偽ロー
ド−ヒット−ストアの不利は、ストア転送の発生によっ
て得られるパフォーマンス向上よりもはるかに少なかっ
た。その結果としてのストア転送の実施によって、サイ
クル時間を増大させずに実行することができるロードの
割合が大きくなる。したがって、このストア転送の実施
によってマイクロプロセッサ210の全体的パフォーマ
ンスが向上する。
【0070】図8の注1を参照すると、前のサイクル中
にロード・データは正しく取り出すことができた。しか
し、16ビットEA比較のために、このプロセスは潜在
的なロード−ヒット−ストア条件が発生したと判断し、
実行クラスタ307、308を保留にすることを選択
し、ストア・ユニット302に強制的にストア・データ
待ち行列304からデータを転送させるか、またはロー
ド命令をフラッシュさせる。
【0071】図8の注2を参照すると、16ビット有効
アドレスはオーバーラップしないが、実アドレスがオー
バーラップする場合、アドレス空間別名化が行われる。
プロセッサ210はこの状況を検出して適切に実行す
る。実行クラスタ307、308は保留(ストール)さ
れなかったため、本発明はストア・データをロードに転
送する選択肢を失う。しかし、この状況はきわめてまれ
である。
【0072】12ビット比較で使用される下位アドレス
・ビットは変換の影響を受けず、一致がないことによっ
てロード−ヒット−ストア競合やストア転送の機会がな
いことが保証される。しかし、16ビット比較を行うた
めに使用される残りのビットは変換される。したがっ
て、16ビット比較の結果によって生じる初期ステップ
は基本的に、追加の有効アドレス・ビット間の一致(ま
たは不一致)が両方のアドレスの変換済みビットの組全
体の間の一致(または不一致)を実際に反映していると
いう予測に基づく。この予測が誤っている場合はすべ
て、ロード操作(およびその後続命令)はフラッシュさ
れ、再フェッチされて、予測外れから回復することに留
意されたい。
【0073】図8および図9に示す事例は以下の通りで
ある。 事例A−ロード・ストア・オーバーラップなし。EAの
下位12ビットがどのストア項目とも一致しなかった
か、または下位12ビットが一致した場合は、EAの下
位16ビットが一致せず、次のサイクルのページ・アド
レス比較がそのストア項目について偽だった。 事例B−クラスタ保留が行われ、データを転送すること
ができない。16ビットEAオーバーラップ比較を行
い、データ転送が不能ー>フラッシュ。ロード−ヒット
−ストアを行い、データ転送不能、またはページ・アド
レス不一致でデータ転送不能。 事例C−ロードへのデータのストア転送を行うロード−
ヒット−ストア。 事例D−下位16ビット有効アドレスが一致しないが、
仮想アドレスから実アドレスへの別名化のために、ロー
ドの実アドレスがストアの実アドレスとオーバーラップ
する。このまれな別名化の場合に、実アドレスは等しい
が有効アドレスが一致しない場合、プロセッサ210は
データを転送せず、サイクル時間問題が緩和される。
【0074】
【0075】
【図面の簡単な説明】
【図1】本発明により構成可能なデータ処理システムを
示す図である。
【図2】本発明により構成されたプロセッサを示す図で
ある。
【図3】本発明により構成されたロード/ストア・ユニ
ットを詳細に示す図である。
【図4】ストア転送が実施されていないロード−ヒット
−ストアのフローチャートである。
【図5】ストア転送が実施されていないロード−ヒット
−ストア事例のサイクルごとのタイミングを示す図であ
る。
【図6】ロード−ヒット−ストア事例の検出とストア転
送の実施を示すフローチャートである。
【図7】本発明による、ロード−ヒット−ストア事例に
おけるストア転送のサイクルごとのタイミングを示す図
である。
【図8】本発明による、ロード−ヒット−ストアの検出
とストア転送の実施を示すフローチャートである。
【図9】本発明によるストア転送のロード−ヒット−ス
トア事例のサイクルごとのタイミングを示す図である。
【符号の説明】
118 入出力アダプタ 120 ディスク記憶装置 122 ユーザ・インタフェース・アダプタ 134 通信アダプタ 136 ディスプレイ・アダプタ 140 テープ記憶ドライブ 210 中央演算処理装置 211 システム・バス 214 命令キャッシュ 216 メモリ管理ユニット 217 順次フェッチ機構 219 命令待ち行列 222 固定小数点ユニット 228 ロード/ストア・ユニット 230 浮動小数点ユニット 232 汎用レジスタ 236 浮動小数点レジスタ 240 完了ユニット 250 ランダム・アクセス・メモリ 252 大容量記憶装置 302 ストア・ユニット 307 クラスタA 308 クラスタB
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スティーブン・ムーヒック アメリカ合衆国78731 テキサス州オー スチン スピネーカー・コーブ 4203 (72)発明者 ラリー・エドワード・サッチャー アメリカ合衆国78759 テキサス州オー スチン ディーケイ・ランチ・ロード 11507 (72)発明者 スティーブン・ウェイン・ホワイト アメリカ合衆国 78750 テキサス州オ ースチン・ウェスターカーク・ドライブ 9104 (56)参考文献 特開 昭58−161043(JP,A) 特開 平3−36646(JP,A) 特開 平5−143335(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38 G06F 12/00 - 12/06

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】ロード命令がアクセスしようとしているデ
    ータをストア命令がまだ更新していない場合に、前記ス
    トア命令の結果であるデータを前記ロード命令に転送す
    る方法であって、 前記ロード命令及び前記ストア命令の有効アドレスのう
    ち変換の影響を受けない下位Nビットを比較するステッ
    プと、 前記下位Nビットが一致した場合に、前記ロード命令及
    び前記ストア命令の前記有効アドレスのうち変換される
    ビットを含む下位Mビットを比較するステップと、 前記下位Mビットが一致した場合に、前記ロード命令及
    び前記ストア命令の実アドレスを比較するステップと、 前記ロード命令が前記ストア命令より論理的に後にある
    か否かを判断するステップと、 前記ロード命令及び前記ストア命令の前記実アドレスが
    一致し、且つ前記ロード命令が前記ストア命令より論理
    的に後にある場合、前記データを前記ロード命令に転送
    するステップと、 を含む方法。
  2. 【請求項2】前記データが使用可能か否かを判断するス
    テップをさらに含む、請求項1に記載の方法。
  3. 【請求項3】前記実アドレスが一致し且つ前記データが
    使用可能であれば、前記データを前記ロード命令に転送
    し、前記実アドレスが一致しないかまたは前記データが
    使用可能でなければ、前記ロード命令をフラッシュす
    る、請求項2に記載の方法。
  4. 【請求項4】前記下位Mビットが一致しない場合に、前
    記ロード命令及び前記ストア命令の実アドレスを比較
    し、該実アドレスが一致すれば前記ロード命令をフラッ
    シュし、前記実アドレスが一致しなければ前記ロード命
    令の通常の実行に進む、請求項2に記載の方法。
  5. 【請求項5】システム・バスを介してメモリに結合され
    たプロセッサを含むデータ処理システムにおいて、 ストア実行ユニットにストア命令をディスパッチするス
    テップと、 前記ストア実行ユニットで前記ストア命令を実行するス
    テップと、 前記ストア命令に付随するデータがストア・データ待ち
    行列内にあり、前記ストア命令の実行後に前記ストア命
    令をストア・アドレス待ち行列に転送するステップと、 前記ストア命令より論理的に後にあるロード命令をロー
    ド実行ユニットにディスパッチするステップと、 前記ロード実行ユニットで前記ロード命令を実行するス
    テップと、 前記ロード命令及び前記ストア命令の有効アドレスのう
    ち変換の影響を受けない下位Nビットを比較するステッ
    プと、 前記下位Nビットが一致した場合に、前記有効アドレス
    のうち変換されるビットを含む下位Mビットを比較する
    ステップと、 前記下位Mビットが一致した場合に、前記ロード命令及
    び前記ストア命令の実アドレスを比較するステップと、 前記実アドレスが一致したる場合に、前記ストア・デー
    タ待ち行列から前記データを前記ロード命令に転送する
    ステップと、 を含む方法。
  6. 【請求項6】命令ディスパッチ・ユニットと、 前記命令ディスパッチ・ユニットからロード命令を受け
    取るように動作可能なロード実行ユニットと、 前記ロード命令より論理的に前にあるストア命令を前記
    命令ディスパッチ・ユニットから受け取るように動作可
    能なストア実行ユニットと、 前記ストア実行ユニットに結合され、前記ストア命令に
    付随するデータを受け取るストア・データ待ち行列と、 前記ストア実行ユニットに結合されたストア・アドレス
    待ち行列と、 前記ストア実行ユニットで前記ストア命令を実行する回
    路と、 前記ストア命令の実行後に前記ストア命令を前記ストア
    ・アドレス待ち行列に転送する回路と、 前記ロード実行ユニットで前記ロード命令を実行する回
    路と、 前記ロード命令のアドレスを前記ストア命令のアドレス
    と比較する回路と、 前記ロード命令の前記アドレスが前記ストア命令の前記
    アドレスと一致する場合、前記ストア・データ待ち行列
    から前記データを前記ロード命令に転送する回路とを含
    み、 前記比較する回路が、 前記ロード命令及び前記ストア命令の有効アドレスのう
    ち変換の影響を受けない下位Nビットを比較し、前記下
    位Nビットが一致した場合に、前記有効アドレスのうち
    変換されるビットを含む下位Mビットを比較し、前記下
    位Mビットが一致した場合に、前記ロード命令及び前記
    ストア命令の実アドレスを比較することを特徴とする、 プロセッサ。
  7. 【請求項7】プロセッサにおいて、ロード実行ユニット
    内でロード命令が実行されている間に、ストア命令の結
    果であるデータをストア・データ待ち行列から前記ロー
    ド命令に転送する方法であって、 前記ロード命令及び前記ストア命令の有効アドレスのう
    ち、変換の影響を受けない下位Nビットを比較するステ
    ップと、 前記下位Nビットが一致した場合に、前記ロード命令及
    び前記ストア命令の前記有効アドレスのうち、変換され
    るビットを含む下位Mビットを比較するステップと、 前記下位Mビットが一致した場合に、前記ロード実行ユ
    ニット内に前記ロード命令を保持するステップと、 前記ロード命令の実アドレスが前記ストア命令の実アド
    レスと一致するか否かを判断するステップと、 前記実アドレスが一致した場合に、前記データを前記ロ
    ード実行ユニットに転送するステップと、 を含む方法。
  8. 【請求項8】プロセッサにおいて、 ロード命令の有効アドレスとストア命令の有効アドレス
    とを比較するステップと、 前記ロード命令の前記有効アドレスが前記ストア命令の
    前記有効アドレスと一致するか否かに応じて、前記ロー
    ド命令の実アドレスが前記ストア命令の実アドレスと一
    致するか否かを予測するステップと、 を含み、前記予測するステップが、前記ロード命令及び
    前記ストア命令の前記有効アドレスのうち変換されるビ
    ットを含む下位Mビットが一致した場合に、前記ロード
    命令の前記実アドレスが前記ストア命令の前記実アドレ
    スと一致すると予測するステップをさらに含むむ方法。
  9. 【請求項9】プロセッサにおいて、 ロード命令の有効アドレスとストア命令の有効アドレス
    とを比較するステップと、 前記ロード命令の前記有効アドレスが前記ストア命令の
    前記有効アドレスと一致するか否かに応じて、前記ロー
    ド命令の実アドレスが前記ストア命令の実アドレスと一
    致するか否かを予測するステップと、 前記ロード命令の前記実アドレスが前記ストア命令の前
    記実アドレスと一致しない場合、前記ロード命令をフラ
    ッシュするステップと、 を含む方法。
JP10091330A 1997-04-10 1998-04-03 データを転送する方法およびプロセッサ Expired - Fee Related JP3096451B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US826854 1997-04-10
US08/826,854 US6021485A (en) 1997-04-10 1997-04-10 Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US08/826854 1997-04-10

Publications (2)

Publication Number Publication Date
JPH10320198A JPH10320198A (ja) 1998-12-04
JP3096451B2 true JP3096451B2 (ja) 2000-10-10

Family

ID=25247703

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10091330A Expired - Fee Related JP3096451B2 (ja) 1997-04-10 1998-04-03 データを転送する方法およびプロセッサ

Country Status (11)

Country Link
US (1) US6021485A (ja)
EP (1) EP0871109B1 (ja)
JP (1) JP3096451B2 (ja)
KR (1) KR100303673B1 (ja)
CN (1) CN1095117C (ja)
AT (1) ATE242509T1 (ja)
BR (1) BR9801230A (ja)
DE (1) DE69815201D1 (ja)
IL (1) IL123426A (ja)
MY (1) MY121300A (ja)
TW (1) TW360848B (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990003937A (ko) * 1997-06-26 1999-01-15 김영환 프리페치 장치
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
US6141747A (en) * 1998-09-22 2000-10-31 Advanced Micro Devices, Inc. System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US7779236B1 (en) * 1998-12-31 2010-08-17 Stmicroelectronics, Inc. Symbolic store-load bypass
US6349382B1 (en) * 1999-03-05 2002-02-19 International Business Machines Corporation System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
EP1050807A1 (en) 1999-05-03 2000-11-08 Sgs Thomson Microelectronics Sa Memory access in a computer memory
US6523109B1 (en) 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6717577B1 (en) * 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6662280B1 (en) * 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6970996B1 (en) * 2000-01-04 2005-11-29 National Semiconductor Corporation Operand queue for use in a floating point unit to reduce read-after-write latency and method of operation
US6640293B1 (en) * 2000-07-24 2003-10-28 International Business Machines Corporation Apparatus and method of utilizing Alias Hit signals to detect errors within the real address tag arrays
US6678807B2 (en) * 2000-12-21 2004-01-13 Intel Corporation System and method for multiple store buffer forwarding in a system with a restrictive memory model
US6941449B2 (en) * 2002-03-04 2005-09-06 Hewlett-Packard Development Company, L.P. Method and apparatus for performing critical tasks using speculative operations
US20030177312A1 (en) * 2002-03-15 2003-09-18 Aravindh Baktha Controlling a store data forwarding mechanism during execution of a load operation
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7222226B1 (en) 2002-04-30 2007-05-22 Advanced Micro Devices, Inc. System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US7089400B1 (en) 2002-08-29 2006-08-08 Advanced Micro Devices, Inc. Data speculation based on stack-relative addressing patterns
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7434031B1 (en) * 2004-04-12 2008-10-07 Sun Microsystems, Inc. Execution displacement read-write alias prediction
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US7376816B2 (en) * 2004-11-12 2008-05-20 International Business Machines Corporation Method and systems for executing load instructions that achieve sequential load consistency
US7363468B2 (en) * 2004-11-18 2008-04-22 International Business Machines Corporation Load address dependency mechanism system and method in a high frequency, low power processor system
US7900023B2 (en) * 2004-12-16 2011-03-01 Intel Corporation Technique to enable store forwarding during long latency instruction execution
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US7461238B2 (en) * 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode
US20070288725A1 (en) * 2006-06-07 2007-12-13 Luick David A A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism
US7600097B1 (en) * 2006-09-05 2009-10-06 Sun Microsystems, Inc. Detecting raw hazards in an object-addressed memory hierarchy by comparing an object identifier and offset for a load instruction to object identifiers and offsets in a store queue
US7594100B2 (en) * 2006-09-29 2009-09-22 Sun Microsystems, Inc. Efficient store queue architecture
US8627047B2 (en) 2008-02-15 2014-01-07 International Business Machines Corporation Store data forwarding with no memory model restrictions
EP2202637B1 (en) * 2008-12-25 2018-02-07 STMicroelectronics (Beijing) R&D Co. Ltd. Reduced power load/store queue searching mechanism
US8086826B2 (en) * 2009-03-24 2011-12-27 International Business Machines Corporation Dependency tracking for enabling successive processor instructions to issue
US20130326200A1 (en) * 2011-02-11 2013-12-05 Freescale Semiconductor, Inc. Integrated circuit devices and methods for scheduling and executing a restricted load operation
US9069563B2 (en) 2011-09-16 2015-06-30 International Business Machines Corporation Reducing store-hit-loads in an out-of-order processor
CN102364431B (zh) * 2011-10-20 2014-09-10 北京北大众志微系统科技有限责任公司 一种实现读指令执行的方法及装置
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
TWI599879B (zh) 2012-06-15 2017-09-21 英特爾股份有限公司 在處理器中之免消歧義失序載入儲存佇列方法和微處理器
KR101996592B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
KR20170102576A (ko) 2012-06-15 2017-09-11 인텔 코포레이션 분산된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
EP2862061A4 (en) 2012-06-15 2016-12-21 Soft Machines Inc MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE
CN104583956B (zh) 2012-06-15 2019-01-04 英特尔公司 用于实现加载存储重新排序和优化的指令定义
CN104823168B (zh) 2012-06-15 2018-11-09 英特尔公司 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统
US9003225B2 (en) * 2012-10-17 2015-04-07 Advanced Micro Devices, Inc. Confirming store-to-load forwards
US8977821B2 (en) * 2012-10-25 2015-03-10 Texas Instruments Incorporated Parallel processing of multiple block coherence operations
US9535695B2 (en) * 2013-01-25 2017-01-03 Apple Inc. Completing load and store instructions in a weakly-ordered memory model
US9361113B2 (en) 2013-04-24 2016-06-07 Globalfoundries Inc. Simultaneous finish of stores and dependent loads
US9619382B2 (en) 2013-08-19 2017-04-11 Intel Corporation Systems and methods for read request bypassing a last level cache that interfaces with an external fabric
US9632947B2 (en) * 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US9665468B2 (en) 2013-08-19 2017-05-30 Intel Corporation Systems and methods for invasive debug of a processor without processor execution of instructions
US9361227B2 (en) 2013-08-30 2016-06-07 Soft Machines, Inc. Systems and methods for faster read after write forwarding using a virtual address
US10303480B2 (en) * 2013-10-30 2019-05-28 Advanced Micro Devices Unified store queue for reducing linear aliasing effects
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US9940264B2 (en) * 2014-10-10 2018-04-10 International Business Machines Corporation Load and store ordering for a strongly ordered simultaneous multithreading core
US9996356B2 (en) * 2015-12-26 2018-06-12 Intel Corporation Method and apparatus for recovering from bad store-to-load forwarding in an out-of-order processor
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) * 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10417002B2 (en) * 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10534616B2 (en) * 2017-10-06 2020-01-14 International Business Machines Corporation Load-hit-load detection in an out-of-order processor
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US10579387B2 (en) * 2017-10-06 2020-03-03 International Business Machines Corporation Efficient store-forwarding with partitioned FIFO store-reorder queue in out-of-order processor
CN112445587A (zh) * 2019-08-30 2021-03-05 上海华为技术有限公司 一种任务处理的方法以及任务处理装置
US11113056B2 (en) * 2019-11-27 2021-09-07 Advanced Micro Devices, Inc. Techniques for performing store-to-load forwarding
US11687337B2 (en) * 2021-08-20 2023-06-27 International Business Machines Corporation Processor overriding of a false load-hit-store detection
CN113961247B (zh) * 2021-09-24 2022-10-11 北京睿芯众核科技有限公司 一种基于risc-v处理器的向量存/取指令执行方法、系统及装置
CN117478089B (zh) * 2023-12-28 2024-03-29 北京微核芯科技有限公司 存数指令执行方法、装置及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5588126A (en) * 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5666506A (en) * 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5784586A (en) * 1995-02-14 1998-07-21 Fujitsu Limited Addressing method for executing load instructions out of order with respect to store instructions
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US6047367A (en) * 1998-01-20 2000-04-04 International Business Machines Corporation Microprocessor with improved out of order support

Also Published As

Publication number Publication date
BR9801230A (pt) 1999-04-27
US6021485A (en) 2000-02-01
EP0871109A2 (en) 1998-10-14
ATE242509T1 (de) 2003-06-15
JPH10320198A (ja) 1998-12-04
CN1195809A (zh) 1998-10-14
DE69815201D1 (de) 2003-07-10
EP0871109A3 (en) 2000-12-06
IL123426A0 (en) 1998-09-24
KR100303673B1 (ko) 2001-09-24
TW360848B (en) 1999-06-11
IL123426A (en) 2001-04-30
MY121300A (en) 2006-01-28
KR19980079702A (ko) 1998-11-25
CN1095117C (zh) 2002-11-27
EP0871109B1 (en) 2003-06-04

Similar Documents

Publication Publication Date Title
JP3096451B2 (ja) データを転送する方法およびプロセッサ
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
US5751983A (en) Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US6748518B1 (en) Multi-level multiprocessor speculation mechanism
US6625660B1 (en) Multiprocessor speculation mechanism for efficiently managing multiple barrier operations
US6609192B1 (en) System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6691220B1 (en) Multiprocessor speculation mechanism via a barrier speculation flag
US6279105B1 (en) Pipelined two-cycle branch target address cache
US6963967B1 (en) System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
EP2674856B1 (en) Zero cycle load instruction
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US7111126B2 (en) Apparatus and method for loading data values
US7523266B2 (en) Method and apparatus for enforcing memory reference ordering requirements at the L1 cache level
US6606702B1 (en) Multiprocessor speculation mechanism with imprecise recycling of storage operations
JP3132755B2 (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
US5664137A (en) Method and apparatus for executing and dispatching store operations in a computer system
JP2003514274A (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
JPH10283181A (ja) プロセッサ内で命令を発行するための方法および装置
US6697939B1 (en) Basic block cache microprocessor with instruction history information
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
JPH10312282A (ja) 命令完了を改良するための方法および装置
JPH10283180A (ja) プロセッサ内で命令をディスパッチする方法および装置
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
US6725340B1 (en) Mechanism for folding storage barrier operations in a multiprocessor system
US6728873B1 (en) System and method for providing multiprocessor speculation within a speculative branch path

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees