JP2000250810A - ロード命令を実行する方法、プロセッサ、およびシステム - Google Patents
ロード命令を実行する方法、プロセッサ、およびシステムInfo
- Publication number
- JP2000250810A JP2000250810A JP2000046172A JP2000046172A JP2000250810A JP 2000250810 A JP2000250810 A JP 2000250810A JP 2000046172 A JP2000046172 A JP 2000046172A JP 2000046172 A JP2000046172 A JP 2000046172A JP 2000250810 A JP2000250810 A JP 2000250810A
- Authority
- JP
- Japan
- Prior art keywords
- load
- load instruction
- cache
- cache line
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 24
- 238000012546 transfer Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
命令を実行する改善された処理技術を提供する。 【解決手段】 複数のロード命令のパイプライン化と並
列実行は、ロード・ストア・ユニット内で実行される。
第1のロード命令がキャッシュ・ミスを招き、システム
・メモリ階層からロード・データを検索し始めると、同
じロード・データをアドレスする第2のロード命令が、
第1のロード命令にマージされて、システム・メモリ階
層から戻されたデータが第1と第2のロード命令の両方
と関連づけられたレジスタ・ファイルに送られる。その
結果、第2のロード命令は、データキャッシュにロード
・データが書き込まれ、妥当性検査されるまで待つ必要
がない。
Description
システムに関し、特にプロセッサにおけるロード命令の
実行に関する。
めに、アーキテクチャは、マイクロプロセッサ内で複数
の並列ロード命令を実行させるようにデザインされ、実
装されてきた。命令のパイプライン化は、複数の命令
が、実質的に並列に実行するために発行されることを可
能にする。このようなプロセスに伴う問題は、次のよう
なときに発生する。すなわち、第1のロード命令が、実
行のために送られるが、キャッシュ・ミスを生じ、そし
て第2のロード命令が、第1のロード命令と同じキャッ
シュ・ラインのロードを実行をするために送られるとき
に発生する。一般的に、そのような状況では、第2のロ
ード命令は、再実行されねばならず、または、第2のロ
ード命令が完了する前に、第1のロード命令からのロー
ド・データが、1次データ・キャッシュに取り込まれ、
妥当性検査されるのを少なくとも待たなければならな
い。
内でパイプライン化されたロード命令を実行する改善さ
れた方法が必要とされている。
同じキャッシュ・ラインをアドレスするロード命令の対
をマージすることによって前述の必要性を処理してい
る。本発明は、キャッシュにおいて以前にミスされてい
るキャッシュ・ラインへのロード命令を受け取るロード
・ストア・ユニットを提供する。ロード・ミス・キュー
は、以前のロード命令のキャッシュ・ミスを扱うのに必
要とされる情報を保持する。後続するロード命令は、キ
ャッシュにおいて以前にミスされた同じキャッシュ・ラ
インからロードを試みるとき、ロード・ミス・キュー
は、第2のロード命令に対して責任を負う。キャッシュ
・ラインがデータ・キャッシュに戻されると、要求され
たデータは、第1のバスを通って第1のロード命令のレ
ジスタに渡され、第2のロード命令の要求されたデータ
は、第2のバスを通って第2のロード命令のレジスタに
渡される。このように、同じキャッシュ・ラインにアク
セスする2つのロード命令の各々のためのオペランド
が、同じミス・オペレーションによって共にサービスさ
れる。
がより理解できるように、本発明の特徴と技術的利点を
より広く概説した。本発明の他の特徴と利点は、以下に
説明される。
細を、特定のワードまたはバイト長等で説明して、本発
明の完全な理解を与えるようにしている。しかし、当業
者にとって、本発明をそのような特定の詳細を必要とせ
ずに実行できることは明らかである。他の例では、周知
の回路をブロック図で示して、不必要な詳細さで本発明
を不明瞭にすることのないようにしている。大部分は、
タイミングの考察などに関連する詳細は、そのような詳
細が本発明の完全な理解を得るために必要でなく、また
関連技術における当業者の技術範囲内にあるので、省略
されている。
要素は、必ずしも一定の縮尺で示されておらず、同様な
または類似の構成要素は、各図を通じて同じ参照数字で
示されている。
境が図1に示され、この図1は、CPU110とシステ
ム・バス112を介して相互接続されたいくつかの他の
ユニットを有する本発明に係るワークステーション11
3の典型的ハードウェア構成を示す。CPU110は、
以下に述べられるような本発明のロード/ストア・ユニ
ット201を実現する。ワークステーション113は、
RAM114、ROM116、ディスク・ユニット12
0およびテープ・ドライブ140のような周辺装置をバ
ス112に接続するI/Oアダプタ118、キーボード
124,マウス126,および/またはタッチ・スクリ
ーン・デバイス(図示せず)のような他のユーザー・イ
ンターフェース・デバイスをバス112に接続するユー
ザー・インターフェース・アダプタ122、ワークステ
ーション113をデータ処理ネットワークに接続する通
信アダプタ134、バス112をディスプレイ装置13
8に接続するディスプレイ・アダプタ136を含む。C
PU110は、ここで示されない他の回路(ロード/ス
トア・ユニット201以外の)を含むことができ、それ
は、マイクロプロセッサ内で通常見いだされる回路、例
えば、実行ユニット,バス・インターフェース・ユニッ
ト,演算論理ユニット等を含むであろう。CPU110
は、また、1つの集積回路上に実装することができる。
れたロード/ストア(L/S)ユニット201を示す。
L/Sユニット201は、CPU110内に設けられ、
典型的マイクロプロセッサ・アーキテクチャに従って構
成できる。
ル毎に2つのロード命令またはストア命令が発行できる
ように2つのパイプラインを有している。レジスタ20
2〜205は、技術上周知のように固定小数点ユニット
(FXU)0および1(図示せず)から命令を受け取
る。64ビット加算器206は、レジスタ202と20
3から受け取ったオペランドを加算し、一方、64ビッ
ト加算器207は、レジスタ204と205からのオペ
ランドを加算して、一対の64ビット有効アドレスを生
成する。これらの有効アドレスは、それぞれレジスタ2
08,209に出力される。レジスタ208と209
は、有効アドレス(EA)を取り込む。次にそれらレジ
スタは共に、LMQ218,LRQ220,SRQ22
2を与え、これらはすべて、アドレス・チェックを実行
するため、レジスタ216,217からの実アドレスに
加えてEAの一部を必要とする。さらに、有効アドレス
はデコードされて、L1キャッシュ236にヒットまた
はミスが存在するか否かを判別するために、タグ・アレ
イ210,211にアクセスする。ミスならば、そのア
ドレスは、レジスタ212,213を通り過ぎて、L2
キャッシュ(図示せず)に送られる。
07から送られてデコードされ、有効実アドレス変換器
(ERAT)アレイ214,215にアクセスし、それ
らは変換されたアドレスをレジスタ216,217を通
してそれぞれ出力する。
有効アドレスは、L1キャッシュ236内のデコーダに
よってデコードされた後に、ロード・オペレーションの
ために、L1キャッシュ236にアクセスする。L1キ
ャッシュ236にヒットが存在するならば、そのデータ
はL1キャッシュ236からレジスタ237,238に
読み出され、フォーマッタ240,241によってフォ
ーマットされ、結果バス上に戻されて、レジスタ・ファ
イル(RegFile:図示せず)に送られる。L1キャッシ
ュ236から読み出されたキャッシュ・ラインは、ま
た、その結果に依存するオペレーションのために、レジ
スタ202〜205にオペランドとして戻される。
される3サイクルは、実行サイクル(加算が実行され
る),アクセス・サイクル(アレイへのアクセスが実行
される),結果サイクル(データのフォーマットと転送
が実行される)である。
エストがL2キャッシュ(図示せず)に送られる。ロー
ド・ミス・キュー(LMQ)218は、ロード・データ
を待って、L2キャッシュ(図示せず)から戻る。その
キャッシュ・ラインに関連したデータは、L1キャッシ
ュ236にロードされる。
み的にかつアウトオブオーダーに実行できる。ストア命
令も、また、アウトオブオーダーに実行される。ストア
命令は、変換器214,215内の変換オペレーション
によってランされ、命令が完了した後、L1キャッシュ
236への記憶のために、ストア・データ・キュー(S
DQ)221に挿入される。したがって、ストア命令は
アウトオブオーダーに実行されるが、L1キャッシュ2
36にインオーダー(in order)に書き込まれる。
22は、実行されたストア命令を追跡する。SRQ22
2は、ストア命令を待ち行列で保持し、いつデータがス
トア・データ・キュー(SDQ)221で使用可能であ
るか、およびいつストア命令がほとんど完了するかを判
別する。そしてL1キャッシュ236へのストアが完了
する。
〜238の多くは、タイミングのために利用される。
インは、キャッシュ・ラインの有効アドレスに基づいて
アクセスされる。RAタグ・アレイ233は、L1キャ
ッシュ236内でキャッシュ・ラインが書き込まれた場
所を追跡する。フォーマット・ブロック231は、SD
Q221からのデータを受け取って、それを適切に回転
し、ストア命令の実行時に、L1キャッシュ236内の
正しいバイト位置に書き込む。回転ブロック224,2
30は、ストア転送に利用される。したがって、ストア
・キュー内にあり、ほとんど完了していないが故に、キ
ャッシュ/メモリ・サブシステム内にまだ書き込まれて
おらず、データを必要とする若いロード命令が受け取ら
れるならば、データは実行されるロード命令に転送され
る。
シュ・ミスに応じてL2キャッシュ(図示せず)から受
け取ったデータを回転し、適切なレジスタ・ファイルに
転送するために、L2キャッシュからのデータを結果バ
ス上に転送する。
のレジスタを含み、特別の目的のレジスタ命令の結果と
してデータをストアし、それらのレジスタからデータを
読み出して、通常のパイプラインに送るようにする。
装され、L2キャッシュ(図示せず)からのデータを格
納する。フォーマット・ブロック240と241は、キ
ャッシュ・データを、レジスタ・ファイルへのロード結
果に対する適切なバイト位置にフォーマットする(また
はシフトする)。
したロード・ミス・キュー(LMQ)218を含み、こ
のLMQは、L1データ・キャッシュ236をミスする
ロード命令を処理する。LMQ218は、ダウンストリ
ーム・メモリ(2番目のすなわちL2キャッシュ,L3
キャッシュ,システム・メモリ等)からのL1データ・
キャッシュ・ラインのリロードを制御する。LMQ21
8は、データが記憶階層から戻されるとき、結果バス2
80,281を経てレジスタ・ファイル(図示せず)へ
の重要なロードデータの転送を制御する。
なるキャッシュ・ラインに対し最大8つの要求を一度に
処理する(1エントリ当たり1キャッシュ・ライン・ミ
ス)ことを可能にする。また、8つのLMQのエントリ
のそれぞれは、最大2つのロード命令(第2のロード命
令は、以下に述べるように、既存のエントリに“マー
ジ”される)に、重要なデータを転送できる。したがっ
て、LMQ218は、一度に16ロード命令を、潜在的
にサービスできる。
マージ”機能を実行し、その機能はリロード・データを
待っている既存のLMQ218のエントリに、実行時に
ロード命令をマージする。
ロード・データは、結果バス280,281上をレジス
タ・ファイルに転送される。この重要なデータ転送は、
丁度発行された他のロード命令またはストア命令に対し
て、最優先順位を有することができる。ロード・ストア
・ユニット201は、2つの実行パイプラインを有し、
したがって2つの結果バス280,281を有すること
に注意されたい。マージすることによって、本発明は、
データが記憶階層から戻されると、各結果バス280,
281上にロード・データを戻すことによって、これら
2つのパイプラインを利用する。
ステップ301で、ディスパッチ・ユニット271によ
って発行される。ステップ302で、第1のロード命令
によってアドレスされたデータ(キャッシュ・ライン)
が、L1データ・キャッシュ236内にあるか否かを判
別される。イエスならば、処理はステップ303に進
み、L1データ・キャッシュ236からのアドレスされ
たロード・データを結果バス280,281上に戻す。
1データ・キャッシュ236内に無いならば、処理はス
テップ302からステップ304に進んで、キャッシュ
・ラインのアドレスが、既存のLMQ218のエントリ
内のアドレスと一致するか否かを判別する。一致しなけ
れば、処理はステップ305に進んで、LMQ218が
フル(full)であるか否かを判別する。フルでなければ、
キャッシュ・ミスに対し新しいLMQ218のエントリ
が作成され、キャッシュ・ラインに対する要求は、シス
テム・メモリ階層のダウンストリーム(downstream)に送
られる。この要求は、この場合、ステップ306で、L
2キャッシュ(図示せず)に対する要求である。ステッ
プ311で、第1のロード命令は、L2キャッシュから
のロード・データの戻りを待つ。その時に、第2のロー
ド命令は、ロード・ストア・ユニット201内で実行す
るために、ディスパッチ・ユニット271によって発行
することができる(ステップ301)。この例について
は、この第2のロード命令が、第1のロード命令によっ
てアドレスされた同じキャッシュ・ラインのデータを要
求しているものとする。したがって、第2のロード命令
は、また、第1のロード命令と同じキャッシュ・ライン
をアドレスする。ステップ302で、第2のロード命令
によって要求されたキャッシュ・ラインが、L1データ
・キャッシュ236内に無いことが判別されるであろ
う。というのは、このキャッシュ・ラインは、第1のロ
ード命令に対して使用可能ではないからである。このシ
ナリオは、ロード・ストア・ユニット201によって複
数の並列ロード命令を実行する本発明において起こりう
ることであることに留意すべきである。キャッシュ・ラ
インが、L2キャッシュによってL1データ・キャッシ
ュ236に既に戻されて、妥当性検査されたならば、L
1ヒットがステップ302で判別され、第2のロード命
令が、ステップ303にて結果バス280,281上に
戻されたデータを有する。しかし、前述したように、第
1のロード命令は、要求されたキャッシュ・ラインの戻
りをまだ待っている(ステップ311)ものとしてい
る。
ンが、第1と第2のロード命令によってアドレスされて
いるので、処理はステップ307に進んで、スロットが
フルであるか否かを判別する。言い換えれば、第1のロ
ード命令のために作成されたLMQのエントリが、他の
第3のロード命令とすでにマージされたか否かが判別さ
れる。イエスならば、第2のロード命令はステップ30
8で拒否される。しかし、スロットがフルでないなら
ば、処理はステップ309に進んで、キャッシュ・ライ
ンが、すでにロード・ストア・ユニット201に戻され
る処理にあるか否かを判別する。これが真ならば、第2
のロード命令はステップ308で拒否される。ステップ
309での判別は、L2キャッシュ・アービトレーショ
ン信号を監視することによって行うことができる。
ステップ310に進んで、第2のロード命令を、第1の
ロード命令に対応する既存のLMQ218のエントリに
マージする。LMQ218はいくつかのエントリを含
む。各エントリは、ロード・ミスを招くキャッシュ・ラ
インのアドレスのための1組のビットを有する。各エン
トリのための第2のビット組は、戻されてストアされる
べきデータのフォーマットを判別する制御情報に関係す
る。ステップ304は、第2のロード命令のアドレス
を、LMQのエントリに示された第1のロード命令のア
ドレスと比較する。
ストアされるべきデータのフォーマットを判別する制御
情報のための他のビット組を含むが、マージされたロー
ド命令に対応している。ステップ307で、この第2の
ビット組が前のマージにより既に占められているなら
ば、第2のロード命令はステップ308で拒否される。
しかし、そうでなければ、ステップ310で実行された
マージ・オペレーションは、第1のロード命令に対応す
るLMQのエントリにストアされる第2のロード命令に
関係する制御情報を生成する。
命令は、また、戻されたロード・データを待つ。
ード・データは、結果バス280,281の両方を経
て、マージされたLMQ218のエントリ内で示された
第1と第2のロード命令に対応するレジスタ・ファイル
に送られる。
されるときに、第2のロード命令を第1のロード命令と
マージすることが、ロード・ストア・ユニット201
に、重要なロード・データを結果バス280,281上
に転送させることを可能にすることである。第2のロー
ド命令が第1のロード命令とマージされなければ、第2
のロード命令は全てのデータ(キャッシュ・ライン)が
L1データ・キャッシュ236に書き込まれるまで待た
ねばならず、第2のロード命令の前に妥当性検査された
キャッシュ・ラインがデータを得ることができる。第2
のロード命令をマージすることは、ロード・データが、
ロード・ストア・ユニット201に使用可能にされると
すぐに、ロード・データを戻すことによって、性能の利
点を与える。できるだけすぐにロード・データを戻すこ
とは、従属する命令の実行を可能にする。
種々の変更,置換,変形を、本発明の趣旨と範囲から逸
脱することなしに行うことができることが、理解される
であろう。
の事項を開示する。
行する方法であって、実行のために、第1のロード命令
を発行するステップと、前記第1のロード命令によって
アドレスされたデータが、1次キャッシュ内に無いこと
を判別するステップと、システム・メモリから前記デー
タを検索するステップと、実行のために、前記データを
アドレスする第2のロード命令を発行するステップと、
前記データを前記第1と第2のロード命令の両方に戻す
ステップとを含む方法。
ッシュを含む上記(1)記載の方法。
のロード命令に対応するロード・ミス・キュー内に、エ
ントリを割り振るステップをさらに含む上記(1)記載
の方法。
トリが、前記データのアドレスを含む上記(3)記載の
方法。
ード命令のアドレスを、前記ロード・ミス・キュー内の
前記データのアドレスと比較するステップをさらに含む
上記(4)記載の方法。
ード命令を前記第1のロード命令とマージするステップ
をさらに含む上記(5)記載の方法。
のロード命令を前記ロード/ストア・ユニットに発行す
る命令ディスパッチ・ユニットとを備え、前記第1のロ
ード命令はキャッシュ・ラインをアドレスし、前記アド
レスされたキャッシュ・ラインが、前記ロード/ストア
・ユニットに結合されたデータ・キャッシュ内にあるか
否かを判別する回路手段と、前記アドレスされたキャッ
シュ・ラインが、前記ロード/ストア・ユニットに結合
された前記データ・キャッシュ内に無いことが判別され
ると、前記第1のロード命令に対応するエントリをスト
アするロード・ミス・キューと、前記データ・キャッシ
ュからのダウンストリーム・メモリから、前記アドレス
されたキャッシュ・ラインを要求する回路手段と、前記
ロード/ストア・ユニット内で実行するために受け取っ
た第2のロード命令のキャッシュ・ライン・アドレス
を、前記ロード・ミス・キュー内のエントリと比較する
回路手段と、前記第2のロード命令を、前記第1のロー
ド命令に対応する前記ロード・ミス・キュー内のエント
リとマージする回路手段と、前記ダウンストリーム・メ
モリから受け取った前記アドレスされたキャッシュ・ラ
インを、第1のロード命令と関連づけられたレジスタに
転送する第1の結果バスと、前記ダウンストリーム・メ
モリから受け取った前記アドレスされたキャッシュ・ラ
インを、第2のロード命令と関連づけられたレジスタに
転送する第2の結果バスとを備えるプロセッサ。
ード命令を再発行する必要なしに、前記第1のロード命
令と同時にサービスされる上記(7)記載のプロセッ
サ。
ッシュ・ラインが前記データ・キャッシュ内にストアさ
れるのを待つ必要なしに、前記アドレスされたキャッシ
ュ・ラインを受け取る上記(7)記載のプロセッサ。
ャッシュ・ラインが前記データ・キャッシュにストアさ
れ、および前記キャッシュ・ラインが妥当性検査される
のを待つ必要なしに、前記アドレスされたキャッシュ・
ラインを受け取る上記(9)記載のプロセッサ。
実行するシステムであって、実行のために第1のロード
命令をロード/ストア・ユニットに発行する回路手段
と、前記第1のロード命令によってアドレスされたキャ
ッシュ・ラインが、前記ロード/ストア・ユニットに結
合された1次キャッシュ内に無いことを判別する回路手
段と、前記プロセッサに結合された2次キャッシュから
前記キャッシュ・ラインを検索する回路手段と、実行の
ために、前記キャッシュ・ラインをアドレスする第2の
ロード命令を前記ロード/ストア・ユニットに発行する
回路手段と、前記キャッシュ・ラインを前記第1と第2
のロード命令の両方に戻す回路手段とを含むシステム。
ャッシュ・ラインが、前記1次キャッシュ内にストアさ
れるのを待つ必要なしに、前記キャッシュ・ラインを受
け取る上記(11)記載のシステム。
ャッシュ・ラインが前記データ・キャッシュにストアさ
れ、および前記キャッシュ・ラインが妥当性を検査され
るのを待つ必要なしに、前記キャッシュ・ラインを受け
取る上記(11)記載のシステム。
1のロード命令に対応するロード・ミス・キュー内に、
エントリを割り振る回路手段をさらに備える上記(1
2)記載のシステム。
ントリが、前記キャッシュ・ラインのアドレスを含む上
記(14)記載のシステム。
ロード命令のアドレスを、前記ロード・ミス・キュー内
の前記キャッシュ・ラインのアドレスと比較する回路手
段をさらに備える上記(15)記載のシステム。
ロード命令を、前記第1のロード命令に対応する前記ロ
ード・ミス・キュー内のエントリとマージする回路手段
をさらに備える上記(16)記載のシステム。
ャッシュから受け取ったキャッシュ・ラインを、第1の
ロード命令に関連づけられた第1のレジスタに転送する
第1の結果バスと、前記2次キャッシュから受け取った
キャッシュ・ラインを、第2のロード命令に関連づけら
れた第2のレジスタに転送する第2の結果バスとをさら
に備える上記(17)記載のシステム。
記キャッシュ・ラインを、前記第1と第2のレジスタに
並列に転送する上記(18)記載のシステム。
を示す図である。
ニットを示す図である。
ニットを示す図である。
レイ 216,217 レジスタ 218 ロード・ミス・キュー(LMQ) 219 特別目的レジスタ(SPR)・ブロック 220 ロード・リオーダー・キュー(LRQ) 221 ストア・データ・キュー(SDQ) 222 ストア・リオーダー・キュー(SRQ) 223,225〜229,237〜238 レジスタ 224,230 回転ブロック 231 フォーマット・ブロック 233 RAタグ・アレイ 235 レジスタ 236 L1キャッシュ 239 回転ブロック 240,241 フォーマッタ 270 命令キャッシュ 271 命令ディスパッチ・ユニット 272 命令キュー 273,274 タグ 280,281 結果バス
Claims (19)
- 【請求項1】プロセッサにおいてロード命令を実行する
方法であって、 実行のために、第1のロード命令を発行するステップ
と、 前記第1のロード命令によってアドレスされたデータ
が、1次キャッシュ内に無いことを判別するステップ
と、 システム・メモリから前記データを検索するステップ
と、 実行のために、前記データをアドレスする第2のロード
命令を発行するステップと、 前記データを前記第1と第2のロード命令の両方に戻す
ステップとを含む方法。 - 【請求項2】前記システム・メモリが、2次キャッシュ
を含む請求項1記載の方法。 - 【請求項3】前記判別するステップが、 前記第1のロード命令に対応するロード・ミス・キュー
内に、エントリを割り振るステップをさらに含む請求項
1記載の方法。 - 【請求項4】前記ロード・ミス・キュー内のエントリ
が、前記データのアドレスを含む請求項3記載の方法。 - 【請求項5】前記戻すステップが、 前記第2のロード命令のアドレスを、前記ロード・ミス
・キュー内の前記データのアドレスと比較するステップ
をさらに含む請求項4記載の方法。 - 【請求項6】前記戻すステップが、 前記第2のロード命令を前記第1のロード命令とマージ
するステップをさらに含む請求項5記載の方法。 - 【請求項7】ロード/ストア・ユニットと、 第1のロード命令を前記ロード/ストア・ユニットに発
行する命令ディスパッチ・ユニットとを備え、前記第1
のロード命令はキャッシュ・ラインをアドレスし、 前記アドレスされたキャッシュ・ラインが、前記ロード
/ストア・ユニットに結合されたデータ・キャッシュ内
にあるか否かを判別する回路手段と、 前記アドレスされたキャッシュ・ラインが、前記ロード
/ストア・ユニットに結合された前記データ・キャッシ
ュ内に無いことが判別されると、前記第1のロード命令
に対応するエントリをストアするロード・ミス・キュー
と、 前記データ・キャッシュからのダウンストリーム・メモ
リから、前記アドレスされたキャッシュ・ラインを要求
する回路手段と、 前記ロード/ストア・ユニット内で実行するために受け
取った第2のロード命令のキャッシュ・ライン・アドレ
スを、前記ロード・ミス・キュー内のエントリと比較す
る回路手段と、 前記第2のロード命令を、前記第1のロード命令に対応
する前記ロード・ミス・キュー内のエントリとマージす
る回路手段と、 前記ダウンストリーム・メモリから受け取った前記アド
レスされたキャッシュ・ラインを、第1のロード命令と
関連づけられたレジスタに転送する第1の結果バスと、 前記ダウンストリーム・メモリから受け取った前記アド
レスされたキャッシュ・ラインを、第2のロード命令と
関連づけられたレジスタに転送する第2の結果バスとを
備えるプロセッサ。 - 【請求項8】前記第2のロード命令は、第2のロード命
令を再発行する必要なしに、前記第1のロード命令と同
時にサービスされる請求項7記載のプロセッサ。 - 【請求項9】前記第2のロード命令は、前記キャッシュ
・ラインが前記データ・キャッシュ内にストアされるの
を待つ必要なしに、前記アドレスされたキャッシュ・ラ
インを受け取る請求項7記載のプロセッサ。 - 【請求項10】前記第2のロード命令は、前記キャッシ
ュ・ラインが前記データ・キャッシュにストアされ、お
よび前記キャッシュ・ラインが妥当性検査されるのを待
つ必要なしに、前記アドレスされたキャッシュ・ライン
を受け取る請求項9記載のプロセッサ。 - 【請求項11】プロセッサにおいてロード命令を実行す
るシステムであって、 実行のために第1のロード命令をロード/ストア・ユニ
ットに発行する回路手段と、 前記第1のロード命令によってアドレスされたキャッシ
ュ・ラインが、前記ロード/ストア・ユニットに結合さ
れた1次キャッシュ内に無いことを判別する回路手段
と、 前記プロセッサに結合された2次キャッシュから前記キ
ャッシュ・ラインを検索する回路手段と、 実行のために、前記キャッシュ・ラインをアドレスする
第2のロード命令を前記ロード/ストア・ユニットに発
行する回路手段と、 前記キャッシュ・ラインを前記第1と第2のロード命令
の両方に戻す回路手段とを含むシステム。 - 【請求項12】前記第2のロード命令は、前記キャッシ
ュ・ラインが、前記1次キャッシュ内にストアされるの
を待つ必要なしに、前記キャッシュ・ラインを受け取る
請求項11記載のシステム。 - 【請求項13】前記第2のロード命令は、前記キャッシ
ュ・ラインが前記データ・キャッシュにストアされ、お
よび前記キャッシュ・ラインが妥当性を検査されるのを
待つ必要なしに、前記キャッシュ・ラインを受け取る請
求項11記載のシステム。 - 【請求項14】前記判別する回路手段が、 前記第1のロード命令に対応するロード・ミス・キュー
内に、エントリを割り振る回路手段をさらに備える請求
項12記載のシステム。 - 【請求項15】前記ロード・ミス・キュー内のエントリ
が、前記キャッシュ・ラインのアドレスを含む請求項1
4記載のシステム。 - 【請求項16】前記戻す回路手段が、 前記第2のロード命令のアドレスを、前記ロード・ミス
・キュー内の前記キャッシュ・ラインのアドレスと比較
する回路手段をさらに備える請求項15記載のシステ
ム。 - 【請求項17】前記戻す回路手段が、 前記第2のロード命令を、前記第1のロード命令に対応
する前記ロード・ミス・キュー内のエントリとマージす
る回路手段をさらに備える請求項16記載のシステム。 - 【請求項18】前記戻す回路手段が、 前記2次キャッシュから受け取ったキャッシュ・ライン
を、第1のロード命令に関連づけられた第1のレジスタ
に転送する第1の結果バスと、 前記2次キャッシュから受け取ったキャッシュ・ライン
を、第2のロード命令に関連づけられた第2のレジスタ
に転送する第2の結果バスとをさらに備える請求項17
記載のシステム。 - 【請求項19】前記第1と第2の結果バスは、前記キャ
ッシュ・ラインを、前記第1と第2のレジスタに並列に
転送する請求項18記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/259139 | 1999-02-26 | ||
US09/259,139 US6336168B1 (en) | 1999-02-26 | 1999-02-26 | System and method for merging multiple outstanding load miss instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000250810A true JP2000250810A (ja) | 2000-09-14 |
JP4045062B2 JP4045062B2 (ja) | 2008-02-13 |
Family
ID=22983691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000046172A Expired - Fee Related JP4045062B2 (ja) | 1999-02-26 | 2000-02-23 | ロード命令を実行する方法、プロセッサ、およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6336168B1 (ja) |
JP (1) | JP4045062B2 (ja) |
CN (1) | CN1120415C (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006318051A (ja) * | 2005-05-10 | 2006-11-24 | Nec Electronics Corp | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
JP2007226641A (ja) * | 2006-02-24 | 2007-09-06 | Nec Corp | 情報処理装置、キャッシュ制御方法及びプログラム |
JP2019121351A (ja) * | 2017-12-29 | 2019-07-22 | インテル・コーポレーション | 遠隔アトミックオペレーションの空間的・時間的マージ |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6542988B1 (en) * | 1999-10-01 | 2003-04-01 | Sun Microsystems, Inc. | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file |
US6901540B1 (en) * | 1999-11-08 | 2005-05-31 | International Business Machines Corporation | TLB parity error recovery |
US6725358B1 (en) * | 2000-06-22 | 2004-04-20 | International Business Machines Corporation | Processor and method having a load reorder queue that supports reservations |
WO2003021426A2 (en) * | 2001-08-29 | 2003-03-13 | Analog Devices Inc. | Method and apparatus for timing and event processing in wireless systems |
US7543133B1 (en) | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7519771B1 (en) * | 2003-08-18 | 2009-04-14 | Cray Inc. | System and method for processing memory instructions using a forced order queue |
US20050138290A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | System and method for instruction rescheduling |
US7257699B2 (en) * | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7302527B2 (en) * | 2004-11-12 | 2007-11-27 | International Business Machines Corporation | Systems and methods for executing load instructions that avoid order violations |
US20070067567A1 (en) * | 2005-09-19 | 2007-03-22 | Via Technologies, Inc. | Merging entries in processor caches |
US20080282034A1 (en) * | 2005-09-19 | 2008-11-13 | Via Technologies, Inc. | Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor |
CN100390738C (zh) * | 2005-10-18 | 2008-05-28 | 中国科学院计算技术研究所 | 一种基于数据流分析的访存合并优化方法 |
US7627735B2 (en) * | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
US20090113182A1 (en) * | 2007-10-24 | 2009-04-30 | Abernathy Christopher M | System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit |
US7991979B2 (en) * | 2008-09-23 | 2011-08-02 | International Business Machines Corporation | Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system |
KR101996462B1 (ko) | 2012-06-15 | 2019-07-04 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐 |
KR101996351B1 (ko) | 2012-06-15 | 2019-07-05 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
EP2862068B1 (en) | 2012-06-15 | 2022-07-06 | Intel Corporation | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
KR101826399B1 (ko) | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | Load store 재정렬 및 최적화를 구현하는 명령어 정의 |
CN104583943B (zh) | 2012-06-15 | 2018-06-08 | 英特尔公司 | 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列 |
KR101667167B1 (ko) | 2012-06-15 | 2016-10-17 | 소프트 머신즈, 인크. | Load store 재정렬 및 최적화로부터 생기는 투기적 포워딩 예측 착오/오류로부터의 복원을 구현하는 방법 및 시스템 |
US9323679B2 (en) * | 2012-08-14 | 2016-04-26 | Nvidia Corporation | System, method, and computer program product for managing cache miss requests |
CN104657145B (zh) * | 2015-03-09 | 2017-12-15 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
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 |
CN109669881B (zh) * | 2018-12-11 | 2023-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
EP3812892B1 (en) * | 2019-10-21 | 2022-12-07 | ARM Limited | Apparatus and method for handling memory load requests |
GB2594732B (en) | 2020-05-06 | 2022-06-01 | Advanced Risc Mach Ltd | Adaptive load coalescing |
US11249757B1 (en) * | 2020-08-14 | 2022-02-15 | International Business Machines Corporation | Handling and fusing load instructions in a processor |
US20220374237A1 (en) * | 2021-05-21 | 2022-11-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155832A (en) * | 1989-07-05 | 1992-10-13 | Hewlett-Packard Company | Method to increase performance in a multi-level cache system by the use of forced cache misses |
US5826109A (en) * | 1994-01-04 | 1998-10-20 | Intel Corporation | Method and apparatus for performing multiple load operations to the same memory location in a computer system |
US5745729A (en) * | 1995-02-16 | 1998-04-28 | Sun Microsystems, Inc. | Methods and apparatuses for servicing load instructions |
-
1999
- 1999-02-26 US US09/259,139 patent/US6336168B1/en not_active Expired - Lifetime
-
2000
- 2000-02-23 JP JP2000046172A patent/JP4045062B2/ja not_active Expired - Fee Related
- 2000-02-25 CN CN00102400A patent/CN1120415C/zh not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006318051A (ja) * | 2005-05-10 | 2006-11-24 | Nec Electronics Corp | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
JP2007226641A (ja) * | 2006-02-24 | 2007-09-06 | Nec Corp | 情報処理装置、キャッシュ制御方法及びプログラム |
JP2019121351A (ja) * | 2017-12-29 | 2019-07-22 | インテル・コーポレーション | 遠隔アトミックオペレーションの空間的・時間的マージ |
JP7244046B2 (ja) | 2017-12-29 | 2023-03-22 | インテル・コーポレーション | 遠隔アトミックオペレーションの空間的・時間的マージ |
Also Published As
Publication number | Publication date |
---|---|
US6336168B1 (en) | 2002-01-01 |
CN1120415C (zh) | 2003-09-03 |
JP4045062B2 (ja) | 2008-02-13 |
CN1264866A (zh) | 2000-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4045062B2 (ja) | ロード命令を実行する方法、プロセッサ、およびシステム | |
JP3509067B2 (ja) | ストア命令転送方法およびプロセッサ | |
US4985825A (en) | System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer | |
US6266768B1 (en) | System and method for permitting out-of-order execution of load instructions | |
US6442681B1 (en) | Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions | |
US5019965A (en) | Method and apparatus for increasing the data storage rate of a computer system having a predefined data path width | |
CA1300280C (en) | Central processor unit for digital data processing system including write buffer management mechanism | |
JPH08504977A (ja) | スーパースカラ・マイクロプロセサにおけるロード及び/又はストア動作を扱うシステム及び方法 | |
JP3159435B2 (ja) | ロード/ロード検出及びリオーダー方法及び装置 | |
US6301654B1 (en) | System and method for permitting out-of-order execution of load and store instructions | |
US6901540B1 (en) | TLB parity error recovery | |
US5119484A (en) | Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction | |
US7069394B2 (en) | Dynamic data routing mechanism for a high speed memory cloner | |
CN111767081A (zh) | 用于加速存储处理的装置、方法和系统 | |
US6477635B1 (en) | Data processing system including load/store unit having a real address tag array and method for correcting effective address aliasing | |
CN113535236A (zh) | 基于指令集体系结构的和自动的加载跟踪的方法和装置 | |
JPH02239331A (ja) | データ処理システム及びその命令実行を促進する方法 | |
US7321964B2 (en) | Store-to-load forwarding buffer using indexed lookup | |
US6898677B2 (en) | Dynamic software accessibility to a microprocessor system with a high speed memory cloner | |
JP2020536310A (ja) | アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理 | |
US6338128B1 (en) | System and method for invalidating an entry in a translation unit | |
CN113849222A (zh) | 流水线化乱序页未命中处理程序 | |
JP3876033B2 (ja) | 順不同に命令を実行するコンピュータのためのシステム | |
US20040111581A1 (en) | Imprecise cache line protection mechanism during a memory clone operation | |
JP3045959B2 (ja) | スーパースカラ・プロセッサ装置内の非アーキテクト命令を選択的にサポートする方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061012 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20061017 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070112 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20070306 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070628 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070814 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070814 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071016 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071119 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101122 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101122 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121122 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121122 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131122 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |