JPH09223013A - 高性能プロセッサにおける投機ロード命令の実行方法 - Google Patents

高性能プロセッサにおける投機ロード命令の実行方法

Info

Publication number
JPH09223013A
JPH09223013A JP9004243A JP424397A JPH09223013A JP H09223013 A JPH09223013 A JP H09223013A JP 9004243 A JP9004243 A JP 9004243A JP 424397 A JP424397 A JP 424397A JP H09223013 A JPH09223013 A JP H09223013A
Authority
JP
Japan
Prior art keywords
speculative load
load instruction
state
bit
speculative
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.)
Granted
Application number
JP9004243A
Other languages
English (en)
Other versions
JP3336892B2 (ja
Inventor
Albert J Loper
アルバート・ジョン・ロパー
Marric Somia
ソウミャ・マリック
Michael Putrino
マイケル・パトリノ
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 JPH09223013A publication Critical patent/JPH09223013A/ja
Application granted granted Critical
Publication of JP3336892B2 publication Critical patent/JP3336892B2/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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/383Operand prefetching
    • 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

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)

Abstract

(57)【要約】 【課題】 高性能プロセッサにおいて、投機ロード命令
を選択的に実行する方法を提供する。 【解決手段】 本発明によれば、データ・キャッシュに
記憶されていないデータに対する投機ロード命令に遭遇
するとき、その特定の投機ロード命令に関連付けられる
投機ロード許可テーブル内のビットが読出され、その状
態が判断される。関連ビットが第1の状態の場合、投機
ロード命令に対するデータがシステム・バスから要求さ
れ、更に投機ロード命令の実行が延期されて、分岐処理
ユニットからの制御信号を待機する。関連ビットが第2
の状態の場合、投機ロード命令の実行が即時延期され、
分岐処理ユニットからの制御信号を待機する。投機ロー
ド命令が制御信号に応答して実行される場合、投機ロー
ド許可テーブル内の関連ビットが、第1の状態にセット
される。しかしながら、投機ロード命令が制御信号に応
答して実行されない場合、投機ロード許可テーブル内の
関連ビットが、第2の状態にセットされる。このように
して、投機ロード命令の不正な実行によるデータ・キャ
ッシュ内の有用なデータの置換が、回避される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にデータ処理を
改良する方法に関し、特に、プロセッサ内で投機命令を
実行する方法に関する。より詳細には、本発明は、デー
タ・キャッシュ内の有用なデータの不当な置換が回避さ
れるように、高性能プロセッサ内で、投機(speculativ
e)ロード命令を選択的に実行する方法に関する。
【0002】
【従来の技術】高性能プロセッサは、分岐が正しく予測
されるとの仮定の下で命令をフェッチ及びディスパッチ
することにより高度な命令スループットを達成し、以前
の命令の完了を待つこと無しに命令の実行を可能にす
る。これは一般に投機実行として知られる。通常、プロ
セッサは遊休状態の資源を有する場合、投機的に命令を
実行し、それによりオペレーションが最小のコストで、
またはコストを要せずに実行される。続く事象が投機命
令が実行されるべきでなかったことを示す場合、プロセ
ッサは単に投機命令が生成した結果を廃棄する。
【0003】プロセッサがスカラ・プロセッサにおける
ような単純な順次法(sequential method)に従うと思
われる場合、ほとんどのオペレーションは投機的に実行
され得る。しかしながら、幾つかのアプリケーションで
は、投機オペレーションがプロセッサの性能にとって重
大な障害となり得る。例えば、分岐命令後にロード命令
を実行する場合では(どの分岐パスが実行されるかを正
確に知ること無しに、ロード命令が投機的に実行される
ために投機ロードとして知られる)、予測された実行パ
スが不正な場合、命令ストリーム内の保留の投機ロード
に関連付けられる高度な遅延障害が生じ、システム・バ
スから要求データを要求する。多くのアプリケーション
では誤って予測される分岐の割合が十分に高く、システ
ム・バスを投機的にアクセスするコストが許容できない
ほど高価である。更に、データ・キャッシュに記憶され
る本来のデータが予測誤りにより生じる投機ロード命令
の不当な実行のために、システム・バスから獲得される
不適当なデータにより置換され得る。
【0004】従って、より優れた予測機構を使用するこ
とにより、高性能プロセッサにおいて、投機ロード命令
を選択的に実行する方法を提供することが望ましい。
【0005】
【発明が解決しようとする課題】従って本発明の目的
は、データ処理のための改良された方法を提供すること
である。
【0006】本発明の別の目的は、プロセッサ内で投機
命令を実行する改良された方法を提供することである。
【0007】更に本発明の別の目的は、データ・キャッ
シュ内の有用なデータの不正な置換を回避するように、
高性能プロセッサ内で投機ロード命令を実行する改良さ
れた方法を提供することである。
【0008】
【課題を解決するための手段】投機ロード命令を選択的
に実行する方法及びプロセッサが開示される。プロセッ
サが命令を記憶する複数のバッファ、及び命令を実行す
る様々な実行ユニットを有する。本発明によれば、デー
タ・キャッシュに記憶されていないデータに対する投機
ロード命令に遭遇するとき、その特定の投機ロード命令
に関連付けられる投機ロード許可テーブル内のビットが
読出され、その状態が判断される。関連ビットが第1の
状態の場合、投機ロード命令に対するデータがシステム
・バスから要求され、更に投機ロード命令の実行が延期
されて、分岐処理ユニットからの制御信号を待機する。
関連ビットが第2の状態の場合、投機ロード命令の実行
が即時延期され、分岐処理ユニットからの制御信号を待
機する。投機ロード命令が、分岐処理ユニットからの制
御信号にもとづき実行される場合、投機ロード許可テー
ブル内の関連ビットが、その後、第1の状態にセットさ
れる。しかしながら、投機ロード命令が分岐処理ユニッ
トからの制御信号に応じて実行されない場合、投機ロー
ド許可テーブル内の関連ビットが、その後、第2の状態
にセットされる。このようにして、投機ロード命令の不
正な実行によるデータ・キャッシュ内の有用なデータの
置換が回避される。
【0009】本発明の目的、特長及び利点が、後述の詳
細な説明から明らかとなろう。
【0010】
【発明の実施の形態】本発明は、パイプライン・アーキ
テクチャを有する様々なプロセッサ上で実現され得る。
説明の都合上、後述の実施例は、縮小命令セット・コン
ピュータ(RISC)技術に従い動作するIBMにより
製造されるPowerPC(商標)群のマイクロプロセッサの
1つ上で実現される。
【0011】図1を参照すると、データ処理のためのプ
ロセッサ10のブロック図が示される。図示の実施例で
は、プロセッサ10は単一の集積回路スーパスカラ・マ
イクロプロセッサであり、様々なレジスタ、バッファ、
実行ユニット、及び機能ユニットを含む。図1に示され
るように、プロセッサ10はプロセッサ10内のバス・
インタフェース・ユニット(BIU)12を介して、シ
ステム・バス11に接続される。BIU12は、プロセ
ッサ10とシステム・バス11に接続される主メモリ
(図示せず)などの、他の装置との間の情報の転送を制
御する。プロセッサ10、システム・バス11及びシス
テム・バス11に接続される他の装置は、一緒にホスト
・データ処理システムを形成する。
【0012】プロセッサ10内において、BIU12は
命令キャッシュ14及びデータ・キャッシュ16に接続
される。命令キャッシュ14及びデータ・キャッシュ1
6の両者は高速キャッシュであり、プロセッサ10によ
る、主メモリからキャッシュ14及び16に以前に転送
された命令またはデータのサブセットへの相当に高速の
アクセス時間を達成し、それによりホスト・データ処理
システムの動作速度を改良する。命令キャッシュ14は
更に順次フェッチャ17に接続され、後者は各実行サイ
クルの間に命令を命令キャッシュ14からフェッチす
る。順次フェッチャ17は、命令キャッシュ14からフ
ェッチされる分岐命令を実行のために分岐処理ユニット
(BPU)18に転送するが、順次命令についてはプロ
セッサ10内の他の実行回路による後の実行のために一
時的に命令キュー19に記憶する。
【0013】BPU18に加え、プロセッサ10の実行
回路は3つの実行ユニット、すなわち固定小数点ユニッ
ト(FXU)22、ロード/ストア・ユニット(LS
U)28、及び浮動小数点ユニット(FPU)32を含
む。コンピュータ分野の当業者には既知のように、3つ
の実行ユニットの各々は1つ以上の命令クラスを実行可
能で、全ての実行ユニットが各プロセッサ・サイクルの
間に同時に動作する。例えばFXU22は、指定汎用レ
ジスタ(GPR)24またはGPRリネーム・バッファ
25から受信されるソース・オペランドを用いて、加
算、減算、論理積、論理和及び排他的論理和などの固定
小数点算術演算を実行する。固定小数点命令の実行に続
き、FXU22は命令のデータ結果をGPRリネーム・
バッファ25に出力する。GPRリネーム・バッファ2
5は命令が完了されるまで、データ結果の一時的な記憶
を提供し、その後、データ結果をGPR24の少なくと
も1つに転送する。逆にFPU32は、浮動小数点レジ
スタ(FPR)34またはFPRリネーム・バッファ3
5から受信されるソース・オペランドに対して、浮動小
数点乗算及び除算などの浮動小数点演算を実行する。F
PU32は浮動小数点命令の実行の結果のデータを選択
されたFPRリネーム・バッファ35に出力する。FP
Rリネーム・バッファ35は命令が完了されるまで、デ
ータ結果を一時的に記憶し、その後、データ結果を選択
FPR34に転送する。その名が示すようにLSU28
は浮動小数点命令及び固定小数点命令を実行し、データ
をメモリ(例えばデータ・キャッシュ16または主メモ
リ)から、選択されたGPR24またはFPR34にロ
ードするか、或いはGPR24、GPRリネーム・バッ
ファ25、FPR34またはFPRリネーム・バッファ
35の内の選択されたものから、メモリにデータを記憶
する。
【0014】プロセッサ10は、命令のパイプライン実
行及び非プログラム順序実行の両方を採用することによ
り、更にそのスーパスカラ・アーキテクチャの性能を改
良する。従って命令はデータ依存性が観察される限り、
FXU22、LSU28及びFPU32により、任意の
順序で実行され得る。加えて命令はFXU22、LSU
28、及びFPU32の各々により、一連のパイプライ
ン・ステージにおいて処理される。任意の高性能プロセ
ッサ同様、プロセッサ10は各命令を5つの別個のパイ
プライン・ステージ、すなわちフェッチ、解読/ディス
パッチ、実行、終了、及び完了/書戻しにおいて処理す
る。しかしながら、特定の設計技法では、幾つかのパイ
プライン・ステージが低減されたり、組み合わされたり
する。
【0015】フェッチ・ステージの間、順次フェッチャ
16が命令キャッシュ14から、1つ以上のメモリ・ア
ドレスに関連付けられる1つ以上の命令を取り出す。命
令キャッシュ14からフェッチされる順次命令が順次フ
ェッチャ17により、命令キュー19に記憶される。そ
れに対して順次フェッチャ17は命令ストリームから分
岐命令を除去し、それらをBPU18に実行のために転
送する。BPU18は分岐予測機構を含み、これは実施
例では、分岐履歴テーブルなどの動的予測機構を含む。
これは分岐が発生するか否かを予測することにより、B
PU18が未解決の条件付き分岐命令を投機的に実行す
ることを可能にする。
【0016】解読/ディスパッチ・ステージの間、ディ
スパッチ・ユニット20が命令キュー19からの1つ以
上の命令を解読し、それらを適切な実行ユニット22、
28及び32の1つにディスパッチする。また解読/デ
ィスパッチ・ステージの間、ディスパッチ・ユニット2
0は、ディスパッチされた各命令のデータ結果に対して
GPRリネーム・バッファ25またはFPRリネーム・
バッファ35内のリネーム・バッファを割当てる。
【0017】実行ステージの間、実行ユニット22、2
8及び32は、ディスパッチ・ユニット20から受信さ
れた命令を指示されるオペレーションに対するオペラン
ド及び実行資源が使用可能な時に適宜実行する。実行ユ
ニット22、28及び32の各々は、オペランドまたは
実行資源が使用不能なディスパッチ済み命令を記憶する
予約テーブルを装備する。
【0018】実行の終了後、実行ユニット22、28及
び32は、命令タイプに依存してデータ結果をGPRリ
ネーム・バッファ25またはFPRリネーム・バッファ
35に記憶する。次に実行ユニット22、28及び32
は、完了ユニット40に実行ユニットが命令を終了した
ことを知らせる。最後に、結果データをGPRリネーム
・バッファ25またはFPRリネーム・バッファ35か
ら、GPR24またはFPR34にそれぞれ転送するこ
とにより命令がプログラム順序に実行される。
【0019】図2を参照すると、本発明の実施例に従
い、投機ロード命令の選択実行を容易にする投機ロード
許可(ESL:Enable Speculative Load)テーブルの
ブロック図が示される。ESLテーブル60は、好適に
はプロセッサ10内の小さなメモリ位置であり、ロード
命令アドレスの低位部分により指標付け(index)され
る。図2に示されるように、ESLテーブル60は1ビ
ット幅でnビット長である。ここでnは、指標付けに使
用されるロード命令の最下位ビット(LSB)の数であ
る。図示の実施例では、ESLテーブルへの指標付けに
使用されるロード命令のLSBの数nは8である。しか
しながら、nは特定の設計において適切と見なされる任
意の整数であってよい。図3では、32ビット・ロード
命令62の最後の8ビット(ビット24乃至32)が、
本発明の目的に従う指標付けのために使用され得る。8
ビットに対して256の順列(すなわち28=256)
が存在するので、ESLテーブル64の長さも同様に2
56である。
【0020】図示の指標付け機構は極めて直接的であ
る。すなわち、ロード命令のLSBの10進数がESL
テーブル内のビット位置を指し示す。例えば、ロード命
令62の8LSBが"0000 0000"の場合、ロード命令6
2はESLテーブル64の0番目のビットを指し示し、
ロード命令62の8LSBが"0000 0001"の場合、ロー
ド命令62はESLテーブル64の1番目のビットを指
し示し、ロード命令62の8LSBが"0000 0010"の場
合、ロード命令62はESLテーブル64の2番目のビ
ットを指し示す(以下同様)。
【0021】ESLテーブル64の各ビットは、対応す
る指標付けLSBを有するロード命令62が以前に分岐
命令後に実行されたか否かを示す。図示の実施例で
は、"0"ビットは"未実行"を示し、"1"ビットは"実行
済み"を示すが、逆の割当ても可能である。プロセッサ
10が最初に開始されるとき、ESLテーブル64内の
全てのビットは0であるべきである。時間が経過し、分
岐命令後の異なるロード命令が実行されると、ESLテ
ーブル64内の幾つかのビットが、後述のようにそれに
従い変更される。
【0022】図4を参照すると、本発明の実施例に従
い、投機ロード命令を実行する方法のハイレベル論理フ
ロー図が示される。ブロック50で開始し、ロード命令
がディスパッチ・ユニット20からディスパッチされ
る。ロード命令に対するデータの有効アドレスがブロッ
ク52で計算される。計算された有効アドレスにもとづ
き、ブロック54でロード命令に対するデータが、現在
データ・キャッシュ16に記憶されているか否かが判断
される。データが現在データ・キャッシュ16に記憶さ
れている場合、ブロック56でデータがデータ・キャッ
シュから獲得され、プロセスはブロック99で終了し、
ロード命令が投機的か否かに関わらず、ロード命令が実
行され得る。このことは、たとえそれが投機ロード命令
であっても、予測誤りによる実行の障害が発生しないこ
とによる。
【0023】しかしながら、データが現在データ・キャ
ッシュ16に記憶されていない場合には、ブロック58
で、ロード命令が投機的か否かに関する別の判断が実行
されなければならない。ロード命令が投機的でない場
合、プロセスはブロック60で、システム・バス11か
ら要求データを要求する以外に、他の選択を有さず、次
にブロック99で終了する。ロード命令が投機的の場合
には、プロセスはブロック62でESLテーブルを読出
す。次にブロック64で、要求データがシステム・バス
11から獲得されるべきか否かが判断される。こうした
判断は、上述の指標付け機構に従い、ESLテーブルに
おいて、投機ロード命令に関連付けられる対応位置のビ
ットを読出し、そのビットの状態を判断することにより
実行される。ブロック64で示される例では、32ビッ
ト・ロード命令の最後の8LSB(すなわちEA[2
4:31])が指標付けのために使用される。
【0024】投機ロード命令により指標付けされるES
Lテーブル内の関連ビットが、第1の状態の場合、ブロ
ック66で、データがシステム・バス11から要求され
る。図示の実施例では、第1の状態は論理"1"である。
続いてブロック68で、投機ロード命令の実行が延期さ
れ、投機ロード命令の実行を進行すべきか否かを判断す
るために分岐処理ユニット(BPU)18から幾つかの
制御信号を待機する。こうした判断の結果がブロック7
0でBPU18から獲得される。BPU18からの制御
信号にもとづく指示が、ロード命令の実行の取り消しを
指示する場合(この時点で、ロード命令はもはや投機的
でない点に注意)、ESLテーブル内の関連ビットが、
図示の実施例に従いブロック72で、関連ビットを"1"
から"0"に反転することにより更新され、プロセスはブ
ロック99で終了する。BPU18からの制御信号にも
とづく指示が、ロード命令の実行のクリアを指示する場
合には、プロセスは単にブロック99で終了する。
【0025】投機ロード命令により指標付けされるES
Lテーブル内の関連ビットが、第2の状態の場合、ブロ
ック74で、投機命令の実行が即時延期され、投機ロー
ド命令の実行を進行すべきか否かを判断するために、B
PU18からの制御信号を待機する。図示の実施例で
は、第2の状態は論理"0"である。こうした判断の結果
が、ブロック76でBPU18から獲得される。BPU
18からの制御信号にもとづく指示がロード命令の実行
のクリアを指示する場合(再度、この時点で、ロード命
令はもはや投機的でない)、ブロック78で、要求デー
タがシステム・バス11から要求される。続いてESL
テーブル内の関連ビットが、図示の実施例に従いブロッ
ク72で、関連ビットを"0"から"1"に反転することに
より更新され、プロセスはブロック99で終了する。B
PU18からの制御信号にもとづく指示がロード命令の
実行の取り消しを指示する場合には、プロセスは単にブ
ロック99で終了する。
【0026】この時点で、プロセッサ設計に携わる当業
者においては、1つのソフトウェア・プログラム内に同
一のLSBを有する相当数のロード命令が存在し得り、
またESLテーブル内において一致したLSBを有する
投機ロード命令が、本当に以前に指標付けされた同一の
ロード命令であるのか否か、疑念を抱くかもしれない。
換言すると、ESLテーブル内のビットが、同一のLS
Bを有する別のロード命令により指標付けされたかも知
れないと言うことである。しかしながら、これは重要な
問題ではない。なぜなら、こうしたエラーの発生は、多
分極めて稀であり、本発明の目的のために許容できると
見なされるからである。誤った指標付けによる投機ロー
ド命令の不正な実行が、プロセッサの性能に影響を及ぼ
し始める場合には、指標付けのために使用するLSBの
数を増加することによりESLテーブルの分解能を拡張
してもよい。
【0027】上述のように、本発明は高性能プロセッサ
において、投機ロード命令を選択的に実行する方法を提
供する。ESLテーブルの使用により、本発明は、投機
ロード命令に対するデータがデータ・キャッシュ内で見
い出されない場合に、投機ロード命令の実行のために、
データ要求がシステム・バスに生成されるべきか否かを
判断する独自の方法を提供する。
【0028】本発明は特定の実施例に関連して述べられ
てきたが、当業者には、本発明の趣旨及び範囲から逸脱
すること無しに、その形態及び詳細における様々な変更
が可能であることが理解されよう。
【0029】まとめとして、本発明の構成として以下の
事項を開示する。
【0030】(1)プロセッサ内で投機ロード命令を選
択的に実行する方法であって、前記投機ロード命令との
遭遇に応答して、前記投機ロード命令に対するデータが
データ・キャッシュに記憶されていない場合、投機ロー
ド許可テーブル内の前記投機ロード命令に関連付けられ
るビットを読出し、前記ビットの状態を判断するステッ
プと、前記関連ビットが第1の状態であるとの判断に応
答して、システム・バスを用いて、前記投機ロード命令
に対する前記データを要求し、分岐処理ユニットからの
制御信号を待機する間、前記投機ロード命令の実行を延
期するステップと、前記関連ビットが第2の状態である
との判断に応答して、前記分岐処理ユニットからの前記
制御信号を待機する間、前記投機ロード命令の実行を延
期するステップと、前記制御信号にもとづく前記投機ロ
ード命令の実行に応答して、前記投機ロード許可テーブ
ル内の前記関連ビットを前記第1の状態にセットするス
テップと、前記制御信号にもとづく前記投機ロード命令
の非実行に応答して、前記投機ロード許可テーブル内の
前記関連ビットを前記第2の状態にセットするステップ
と、を含み、前記投機ロード命令の不正な実行により、
前記データ・キャッシュ内の有用なデータを置換する可
能性を回避する、方法。 (2)前記プロセッサの初期化の間に、前記投機ロード
許可テーブル内の全てのビットを前記第2の状態にセッ
トするステップを含む、前記(1)記載の方法。 (3)前記関連ビットが前記第1の状態であるとの判断
に対する前記応答が、前記関連ビットが論理"1"である
との判断に応答し、前記関連ビットが前記第2の状態で
あるとの判断に対する前記応答が、前記関連ビットが論
理"0"であるとの判断に応答する、前記(1)記載の方
法。 (4)投機ロード命令を選択的に実行するプロセッサで
あって、前記投機ロード命令との遭遇、並びに前記投機
ロード命令に対するデータがデータ・キャッシュに記憶
されていないことに応答して、投機ロード許可テーブル
内の前記投機ロード命令に関連付けられるビットを読出
し、前記ビットの状態を判断する手段と、前記関連ビッ
トが第1の状態であるとの判断に応答して、システム・
バスを用いて前記投機ロード命令に対する前記データを
要求し、分岐処理ユニットからの制御信号を待機する
間、前記投機ロード命令の実行を延期する手段と、前記
関連ビットが第2の状態であるとの判断に応答して、前
記分岐処理ユニットからの前記制御信号を待機する間、
前記投機ロード命令の実行を延期する手段と、前記制御
信号にもとづく前記投機ロード命令の実行に応答して、
前記投機ロード許可テーブル内の前記関連ビットを前記
第1の状態にセットする手段と、前記制御信号にもとづ
く前記投機ロード命令の非実行に応答して、前記投機ロ
ード許可テーブル内の前記関連ビットを前記第2の状態
にセットする手段と、を含み、前記投機ロード命令の不
正な実行により、前記データ・キャッシュ内の有用なデ
ータを置換する可能性を回避する、プロセッサ。 (5)前記プロセッサの初期化の間に、前記投機ロード
許可テーブル内の全てのビットを前記第2の状態にセッ
トする手段を含む、前記(4)記載のプロセッサ。 (6)前記第1の状態が論理"1"であり、前記第2の状
態が論理"0"である、前記(4)記載のプロセッサ。 (7)前記投機ロード許可テーブルが1ビット幅であ
り、前記投機ロード命令のアドレスの複数の最下位ビッ
トにより指標付けされる、前記(4)記載のプロセッ
サ。 (8)投機ロード命令を選択的に実行するデータ処理シ
ステムであって、メモリと、プロセッサとを含み、前記
プロセッサが、前記投機ロード命令との遭遇、並びに前
記投機ロード命令に対するデータがデータ・キャッシュ
に記憶されていないことに応答して、投機ロード許可テ
ーブル内の前記投機ロード命令に関連付けられるビット
を読出し、前記ビットの状態を判断する手段と、前記関
連ビットが第1の状態であるとの判断に応答して、シス
テム・バスを用いて、前記投機ロード命令に対する前記
データを要求し、分岐処理ユニットからの制御信号を待
機する間、前記投機ロード命令の実行を延期する手段
と、前記関連ビットが第2の状態であるとの判断に応答
して、前記分岐処理ユニットからの前記制御信号を待機
する間、前記投機ロード命令の実行を延期する手段と、
前記制御信号にもとづく前記投機ロード命令の実行に応
答して、前記投機ロード許可テーブル内の前記関連ビッ
トを前記第1の状態にセットする手段と、前記制御信号
にもとづく前記投機ロード命令の非実行に応答して、前
記投機ロード許可テーブル内の前記関連ビットを前記第
2の状態にセットする手段と、を含み、前記投機ロード
命令の不正な実行により、前記データ・キャッシュ内の
有用なデータを置換する可能性を回避する、データ処理
システム。 (9)前記プロセッサの初期化の間に、前記投機ロード
許可テーブル内の全てのビットを前記第2の状態にセッ
トする手段を含む、前記(8)記載のデータ処理システ
ム。 (10)前記第1の状態が論理"1"であり、前記第2の
状態が論理"0"である、前記(8)記載のデータ処理シ
ステム。 (11)前記投機ロード許可テーブルが1ビット幅であ
り、前記投機ロード命令のアドレスの複数の最下位ビッ
トにより指標付けされる、前記(8)記載のデータ処理
システム。
【図面の簡単な説明】
【図1】本発明の方法を使用するプロセッサの実施例の
ブロック図である。
【図2】本発明の実施例に従う投機ロード許可テーブル
のブロック図である。
【図3】本発明の実施例に従い、32ビット・ロード命
令を1×256投機ロード許可テーブルに指標化する機
構のブロック図である。
【図4】本発明の実施例に従い、投機ロード命令を選択
的に実行する方法のハイレベル論理フロー図である。
【符号の説明】
10 プロセッサ 11 システム・バス 12 バス・インタフェース・ユニット(BIU) 14 命令キャッシュ 16 データ・キャッシュ 17 順次フェッチ 18 分岐処理ユニット(BPU) 19 命令キュー 20 ディスパッチ・ユニット 22 固定少数点ユニット(FXU) 24 指定汎用レジスタ 25 GPRリネーム・バッファ 28 ロード/ストア・ユニット(LSU) 32 浮動少数点ユニット(FPU) 34 浮動少数点レジスタ(FPR) 35 FPRリネーム・バッファ 60、64 投機ロード許可(ESL)テーブル 62 ロード命令
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ソウミャ・マリック アメリカ合衆国78729、テキサス州オース ティン、パートリッジ・ベンド・ドライブ 13032 (72)発明者 マイケル・パトリノ アメリカ合衆国78717、テキサス州オース ティン、エファレイム・ロード 8411

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ内で投機ロード命令を選択的に
    実行する方法であって、 前記投機ロード命令との遭遇に応答して、前記投機ロー
    ド命令に対するデータがデータ・キャッシュに記憶され
    ていない場合、投機ロード許可テーブル内の前記投機ロ
    ード命令に関連付けられるビットを読出し、前記ビット
    の状態を判断するステップと、 前記関連ビットが第1の状態であるとの判断に応答し
    て、システム・バスを用いて、前記投機ロード命令に対
    する前記データを要求し、分岐処理ユニットからの制御
    信号を待機する間、前記投機ロード命令の実行を延期す
    るステップと、 前記関連ビットが第2の状態であるとの判断に応答し
    て、前記分岐処理ユニットからの前記制御信号を待機す
    る間、前記投機ロード命令の実行を延期するステップ
    と、 前記制御信号にもとづく前記投機ロード命令の実行に応
    答して、前記投機ロード許可テーブル内の前記関連ビッ
    トを前記第1の状態にセットするステップと、 前記制御信号にもとづく前記投機ロード命令の非実行に
    応答して、前記投機ロード許可テーブル内の前記関連ビ
    ットを前記第2の状態にセットするステップと、 を含み、前記投機ロード命令の不正な実行により、前記
    データ・キャッシュ内の有用なデータを置換する可能性
    を回避する、方法。
  2. 【請求項2】前記プロセッサの初期化の間に、前記投機
    ロード許可テーブル内の全てのビットを前記第2の状態
    にセットするステップを含む、請求項1記載の方法。
  3. 【請求項3】前記関連ビットが前記第1の状態であると
    の判断に対する前記応答が、前記関連ビットが論理"1"
    であるとの判断に応答し、前記関連ビットが前記第2の
    状態であるとの判断に対する前記応答が、前記関連ビッ
    トが論理"0"であるとの判断に応答する、請求項1記載
    の方法。
  4. 【請求項4】投機ロード命令を選択的に実行するプロセ
    ッサであって、 前記投機ロード命令との遭遇、並びに前記投機ロード命
    令に対するデータがデータ・キャッシュに記憶されてい
    ないことに応答して、投機ロード許可テーブル内の前記
    投機ロード命令に関連付けられるビットを読出し、前記
    ビットの状態を判断する手段と、 前記関連ビットが第1の状態であるとの判断に応答し
    て、システム・バスを用いて前記投機ロード命令に対す
    る前記データを要求し、分岐処理ユニットからの制御信
    号を待機する間、前記投機ロード命令の実行を延期する
    手段と、 前記関連ビットが第2の状態であるとの判断に応答し
    て、前記分岐処理ユニットからの前記制御信号を待機す
    る間、前記投機ロード命令の実行を延期する手段と、 前記制御信号にもとづく前記投機ロード命令の実行に応
    答して、前記投機ロード許可テーブル内の前記関連ビッ
    トを前記第1の状態にセットする手段と、 前記制御信号にもとづく前記投機ロード命令の非実行に
    応答して、前記投機ロード許可テーブル内の前記関連ビ
    ットを前記第2の状態にセットする手段と、 を含み、前記投機ロード命令の不正な実行により、前記
    データ・キャッシュ内の有用なデータを置換する可能性
    を回避する、プロセッサ。
  5. 【請求項5】前記プロセッサの初期化の間に、前記投機
    ロード許可テーブル内の全てのビットを前記第2の状態
    にセットする手段を含む、請求項4記載のプロセッサ。
  6. 【請求項6】前記第1の状態が論理"1"であり、前記第
    2の状態が論理"0"である、請求項4記載のプロセッ
    サ。
  7. 【請求項7】前記投機ロード許可テーブルが1ビット幅
    であり、前記投機ロード命令のアドレスの複数の最下位
    ビットにより指標付けされる、請求項4記載のプロセッ
    サ。
  8. 【請求項8】投機ロード命令を選択的に実行するデータ
    処理システムであって、 メモリと、 プロセッサとを含み、前記プロセッサが、 前記投機ロード命令との遭遇、並びに前記投機ロード命
    令に対するデータがデータ・キャッシュに記憶されてい
    ないことに応答して、投機ロード許可テーブル内の前記
    投機ロード命令に関連付けられるビットを読出し、前記
    ビットの状態を判断する手段と、 前記関連ビットが第1の状態であるとの判断に応答し
    て、システム・バスを用いて、前記投機ロード命令に対
    する前記データを要求し、分岐処理ユニットからの制御
    信号を待機する間、前記投機ロード命令の実行を延期す
    る手段と、 前記関連ビットが第2の状態であるとの判断に応答し
    て、前記分岐処理ユニットからの前記制御信号を待機す
    る間、前記投機ロード命令の実行を延期する手段と、 前記制御信号にもとづく前記投機ロード命令の実行に応
    答して、前記投機ロード許可テーブル内の前記関連ビッ
    トを前記第1の状態にセットする手段と、 前記制御信号にもとづく前記投機ロード命令の非実行に
    応答して、前記投機ロード許可テーブル内の前記関連ビ
    ットを前記第2の状態にセットする手段と、 を含み、前記投機ロード命令の不正な実行により、前記
    データ・キャッシュ内の有用なデータを置換する可能性
    を回避する、データ処理システム。
  9. 【請求項9】前記プロセッサの初期化の間に、前記投機
    ロード許可テーブル内の全てのビットを前記第2の状態
    にセットする手段を含む、請求項8記載のデータ処理シ
    ステム。
  10. 【請求項10】前記第1の状態が論理"1"であり、前記
    第2の状態が論理"0"である、請求項8記載のデータ処
    理システム。
  11. 【請求項11】前記投機ロード許可テーブルが1ビット
    幅であり、前記投機ロード命令のアドレスの複数の最下
    位ビットにより指標付けされる、請求項8記載のデータ
    処理システム。
JP00424397A 1996-02-06 1997-01-14 高性能プロセッサにおける投機ロード命令の実行方法、プロセッサ、およびデータ処理システム Expired - Fee Related JP3336892B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/597647 1996-02-06
US08/597,647 US5611063A (en) 1996-02-06 1996-02-06 Method for executing speculative load instructions in high-performance processors

Publications (2)

Publication Number Publication Date
JPH09223013A true JPH09223013A (ja) 1997-08-26
JP3336892B2 JP3336892B2 (ja) 2002-10-21

Family

ID=24392381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00424397A Expired - Fee Related JP3336892B2 (ja) 1996-02-06 1997-01-14 高性能プロセッサにおける投機ロード命令の実行方法、プロセッサ、およびデータ処理システム

Country Status (5)

Country Link
US (1) US5611063A (ja)
EP (1) EP0789299A1 (ja)
JP (1) JP3336892B2 (ja)
KR (1) KR100237985B1 (ja)
TW (1) TW397953B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988334B1 (ko) * 2008-03-26 2010-10-18 후지쯔 가부시끼가이샤 캐쉬 제어 장치, 정보 처리 장치
JP2018156497A (ja) * 2017-03-21 2018-10-04 日本電気株式会社 メモリアクセス装置、命令制御方法、プログラム、情報処理装置
JP2019212127A (ja) * 2018-06-06 2019-12-12 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2021509743A (ja) * 2018-01-03 2021-04-01 エイアールエム リミテッド 推測バリア命令

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802340A (en) * 1995-08-22 1998-09-01 International Business Machines Corporation Method and system of executing speculative store instructions in a parallel processing computer system
US5926645A (en) * 1997-07-22 1999-07-20 International Business Machines Corporation Method and system for enabling multiple store instruction completions in a processing system
US5961615A (en) * 1997-12-31 1999-10-05 Intel Corporation Method and apparatus for queuing data
US6216221B1 (en) * 1997-12-31 2001-04-10 Intel Corporation Method and apparatus for expanding instructions
US6260190B1 (en) * 1998-08-11 2001-07-10 Hewlett-Packard Company Unified compiler framework for control and data speculation with recovery code
US6519694B2 (en) 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US6321328B1 (en) * 1999-03-22 2001-11-20 Hewlett-Packard Company Processor having data buffer for speculative loads
US6487637B1 (en) 1999-07-30 2002-11-26 International Business Machines Corporation Method and system for clearing dependent speculations from a request queue
US6473833B1 (en) 1999-07-30 2002-10-29 International Business Machines Corporation Integrated cache and directory structure for multi-level caches
US6418516B1 (en) * 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US6766447B1 (en) * 2000-01-25 2004-07-20 Dell Products L.P. System and method of preventing speculative reading during memory initialization
US7353368B2 (en) * 2000-02-15 2008-04-01 Intel Corporation Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support
JP3518510B2 (ja) * 2001-01-10 2004-04-12 日本電気株式会社 リオーダバッファの管理方法及びプロセッサ
KR20020096252A (ko) * 2001-06-19 2002-12-31 인터내셔널 비지네스 머신즈 코포레이션 프로세서에서의 명령 실행 방법, 컴퓨터 시스템에사용하기 위한 프로세서 및 데이터 처리 시스템
US6718839B2 (en) * 2001-06-26 2004-04-13 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
WO2003001383A2 (en) * 2001-06-26 2003-01-03 Sun Microsystems, Inc. Using an l2 directory to facilitate speculative loads in a multiprocessor system
US6854048B1 (en) * 2001-08-08 2005-02-08 Sun Microsystems Speculative execution control with programmable indicator and deactivation of multiaccess recovery mechanism
US20040193849A1 (en) * 2003-03-25 2004-09-30 Dundas James D. Predicated load miss handling
US7325228B1 (en) 2003-04-30 2008-01-29 Hewlett-Packard Development Company, L.P. Data speculation across a procedure call using an advanced load address table
US7103880B1 (en) 2003-04-30 2006-09-05 Hewlett-Packard Development Company, L.P. Floating-point data speculation across a procedure call using an advanced load address table
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
US7774531B1 (en) * 2005-09-13 2010-08-10 Oracle America, Inc. Allocating processor resources during speculative execution using a temporal ordering policy
US8266413B2 (en) * 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
KR100867269B1 (ko) * 2007-02-22 2008-11-06 삼성전자주식회사 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서
US7711936B2 (en) * 2007-08-28 2010-05-04 Sun Microsystems, Inc. Branch predictor for branches with asymmetric penalties
WO2013095392A1 (en) * 2011-12-20 2013-06-27 Intel Corporation Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch
US20170090936A1 (en) * 2015-09-25 2017-03-30 Qualcomm Incorporated Method and apparatus for dynamically tuning speculative optimizations based on instruction signature
US10423423B2 (en) 2015-09-29 2019-09-24 International Business Machines Corporation Efficiently managing speculative finish tracking and error handling for load instructions
US11681533B2 (en) 2019-02-25 2023-06-20 Intel Corporation Restricted speculative execution mode to prevent observable side effects
US20200410094A1 (en) * 2019-06-29 2020-12-31 Intel Corporation Hardware load hardening for speculative side-channel attacks

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US5420990A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5428807A (en) * 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988334B1 (ko) * 2008-03-26 2010-10-18 후지쯔 가부시끼가이샤 캐쉬 제어 장치, 정보 처리 장치
JP2018156497A (ja) * 2017-03-21 2018-10-04 日本電気株式会社 メモリアクセス装置、命令制御方法、プログラム、情報処理装置
JP2021509743A (ja) * 2018-01-03 2021-04-01 エイアールエム リミテッド 推測バリア命令
JP2019212127A (ja) * 2018-06-06 2019-12-12 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
KR970062892A (ko) 1997-09-12
US5611063A (en) 1997-03-11
EP0789299A1 (en) 1997-08-13
KR100237985B1 (ko) 2000-01-15
TW397953B (en) 2000-07-11
JP3336892B2 (ja) 2002-10-21

Similar Documents

Publication Publication Date Title
JP3336892B2 (ja) 高性能プロセッサにおける投機ロード命令の実行方法、プロセッサ、およびデータ処理システム
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US6728866B1 (en) Partitioned issue queue and allocation strategy
US5860107A (en) Processor and method for store gathering through merged store operations
US6065115A (en) Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US6065103A (en) Speculative store buffer
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US7032097B2 (en) Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP2000259412A (ja) ストア命令転送方法およびプロセッサ
JPH10312282A (ja) 命令完了を改良するための方法および装置
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JP2742393B2 (ja) オペレーションの処理システム及び方法
US5898849A (en) Microprocessor employing local caches for functional units to store memory operands used by the functional units
JP2694124B2 (ja) 処理システム及び操作方法
US5548738A (en) System and method for processing an instruction in a processing system
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
US5872948A (en) Processor and method for out-of-order execution of instructions based upon an instruction parameter
US5619408A (en) Method and system for recoding noneffective instructions within a data processing system
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5802340A (en) Method and system of executing speculative store instructions in a parallel processing computer system
US5812812A (en) Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue
JP3182741B2 (ja) 分散命令完了方法及びプロセッサ

Legal Events

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