JP4045062B2 - ロード命令を実行する方法、プロセッサ、およびシステム - Google Patents
ロード命令を実行する方法、プロセッサ、およびシステム Download PDFInfo
- Publication number
- JP4045062B2 JP4045062B2 JP2000046172A JP2000046172A JP4045062B2 JP 4045062 B2 JP4045062 B2 JP 4045062B2 JP 2000046172 A JP2000046172 A JP 2000046172A JP 2000046172 A JP2000046172 A JP 2000046172A JP 4045062 B2 JP4045062 B2 JP 4045062B2
- Authority
- JP
- Japan
- Prior art keywords
- load instruction
- load
- data
- cache
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 15
- 238000012546 transfer Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000006243 chemical reaction Methods 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
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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)
Description
【発明の属する技術分野】
本発明は、一般にデータ処理システムに関し、特にプロセッサにおけるロード命令の実行に関する。
【0002】
【従来の技術】
マイクロプロセッサの処理速度を増すために、アーキテクチャは、マイクロプロセッサ内で複数の並列ロード命令を実行させるようにデザインされ、実装されてきた。命令のパイプライン化は、複数の命令が、実質的に並列に実行するために発行されることを可能にする。このようなプロセスに伴う問題は、次のようなときに発生する。すなわち、第1のロード命令が、実行のために送られるが、キャッシュ・ミスを生じ、そして第2のロード命令が、第1のロード命令と同じキャッシュ・ラインのロードを実行をするために送られるときに発生する。一般的に、そのような状況では、第2のロード命令は、再実行されねばならず、または、第2のロード命令が完了する前に、第1のロード命令からのロード・データが、1次データ・キャッシュに取り込まれ、妥当性検査されるのを少なくとも待たなければならない。
【0003】
【発明が解決しようとする課題】
その結果、プロセッサ内でパイプライン化されたロード命令を実行する改善された方法が必要とされている。
【0004】
【課題を解決するための手段】
本発明は、特定の状況で同じキャッシュ・ラインをアドレスするロード命令の対をマージすることによって前述の必要性を処理している。本発明は、キャッシュにおいて以前にミスされているキャッシュ・ラインへのロード命令を受け取るロード・ストア・ユニットを提供する。ロード・ミス・キューは、以前のロード命令のキャッシュ・ミスを扱うのに必要とされる情報を保持する。後続するロード命令は、キャッシュにおいて以前にミスされた同じキャッシュ・ラインからロードを試みるとき、ロード・ミス・キューは、第2のロード命令に対して責任を負う。キャッシュ・ラインがデータ・キャッシュに戻されると、要求されたデータは、第1のバスを通って第1のロード命令のレジスタに渡され、第2のロード命令の要求されたデータは、第2のバスを通って第2のロード命令のレジスタに渡される。このように、同じキャッシュ・ラインにアクセスする2つのロード命令の各々のためのオペランドが、同じミス・オペレーションによって共にサービスされる。
【0005】
前述のことは、以下の本発明の詳細な説明がより理解できるように、本発明の特徴と技術的利点をより広く概説した。本発明の他の特徴と利点は、以下に説明される。
【0006】
【発明の実施の形態】
以下の記述では、多くの特定の詳細を、特定のワードまたはバイト長等で説明して、本発明の完全な理解を与えるようにしている。しかし、当業者にとって、本発明をそのような特定の詳細を必要とせずに実行できることは明らかである。他の例では、周知の回路をブロック図で示して、不必要な詳細さで本発明を不明瞭にすることのないようにしている。大部分は、タイミングの考察などに関連する詳細は、そのような詳細が本発明の完全な理解を得るために必要でなく、また関連技術における当業者の技術範囲内にあるので、省略されている。
【0007】
次に図を参照すると、そこに表された構成要素は、必ずしも一定の縮尺で示されておらず、同様なまたは類似の構成要素は、各図を通じて同じ参照数字で示されている。
【0008】
本発明を実施する代表的なハードウェア環境が図1に示され、この図1は、CPU110とシステム・バス112を介して相互接続されたいくつかの他のユニットを有する本発明に係るワークステーション113の典型的ハードウェア構成を示す。CPU110は、以下に述べられるような本発明のロード/ストア・ユニット201を実現する。ワークステーション113は、RAM114、ROM116、ディスク・ユニット120およびテープ・ドライブ140のような周辺装置をバス112に接続するI/Oアダプタ118、キーボード124,マウス126,および/またはタッチ・スクリーン・デバイス(図示せず)のような他のユーザー・インターフェース・デバイスをバス112に接続するユーザー・インターフェース・アダプタ122、ワークステーション113をデータ処理ネットワークに接続する通信アダプタ134、バス112をディスプレイ装置138に接続するディスプレイ・アダプタ136を含む。CPU110は、ここで示されない他の回路(ロード/ストア・ユニット201以外の)を含むことができ、それは、マイクロプロセッサ内で通常見いだされる回路、例えば、実行ユニット,バス・インターフェース・ユニット,演算論理ユニット等を含むであろう。CPU110は、また、1つの集積回路上に実装することができる。
【0009】
図2および図3は、本発明に従って構成されたロード/ストア(L/S)ユニット201を示す。L/Sユニット201は、CPU110内に設けられ、典型的マイクロプロセッサ・アーキテクチャに従って構成できる。
【0010】
L/Sユニット201は、マシン・サイクル毎に2つのロード命令またはストア命令が発行できるように2つのパイプラインを有している。レジスタ202〜205は、技術上周知のように固定小数点ユニット(FXU)0および1(図示せず)から命令を受け取る。64ビット加算器206は、レジスタ202と203から受け取ったオペランドを加算し、一方、64ビット加算器207は、レジスタ204と205からのオペランドを加算して、一対の64ビット有効アドレスを生成する。これらの有効アドレスは、それぞれレジスタ208,209に出力される。レジスタ208と209は、有効アドレス(EA)を取り込む。次にそれらレジスタは共に、LMQ218,LRQ220,SRQ222を与え、これらはすべて、アドレス・チェックを実行するため、レジスタ216,217からの実アドレスに加えてEAの一部を必要とする。さらに、有効アドレスはデコードされて、L1キャッシュ236にヒットまたはミスが存在するか否かを判別するために、タグ・アレイ210,211にアクセスする。ミスならば、そのアドレスは、レジスタ212,213を通り過ぎて、L2キャッシュ(図示せず)に送られる。
【0011】
さらに、有効アドレスは加算器206,207から送られてデコードされ、有効実アドレス変換器(ERAT)アレイ214,215にアクセスし、それらは変換されたアドレスをレジスタ216,217を通してそれぞれ出力する。
【0012】
さらにまた、加算器206,207からの有効アドレスは、L1キャッシュ236内のデコーダによってデコードされた後に、ロード・オペレーションのために、L1キャッシュ236にアクセスする。L1キャッシュ236にヒットが存在するならば、そのデータはL1キャッシュ236からレジスタ237,238に読み出され、フォーマッタ240,241によってフォーマットされ、結果バス上に戻されて、レジスタ・ファイル(RegFile:図示せず)に送られる。L1キャッシュ236から読み出されたキャッシュ・ラインは、また、その結果に依存するオペレーションのために、レジスタ202〜205にオペランドとして戻される。
【0013】
本質的に、L/Sユニット201内で実行される3サイクルは、実行サイクル(加算が実行される),アクセス・サイクル(アレイへのアクセスが実行される),結果サイクル(データのフォーマットと転送が実行される)である。
【0014】
キャッシュにミスが存在するならば、リクエストがL2キャッシュ(図示せず)に送られる。ロード・ミス・キュー(LMQ)218は、ロード・データを待って、L2キャッシュ(図示せず)から戻る。そのキャッシュ・ラインに関連したデータは、L1キャッシュ236にロードされる。
【0015】
これらのロード・オペレーションは、見込み的にかつアウトオブオーダーに実行できる。ストア命令も、また、アウトオブオーダーに実行される。ストア命令は、変換器214,215内の変換オペレーションによってランされ、命令が完了した後、L1キャッシュ236への記憶のために、ストア・データ・キュー(SDQ)221に挿入される。したがって、ストア命令はアウトオブオーダーに実行されるが、L1キャッシュ236にインオーダー(in order)に書き込まれる。
【0016】
ストア・リオーダー・キュー(SRQ)222は、実行されたストア命令を追跡する。SRQ222は、ストア命令を待ち行列で保持し、いつデータがストア・データ・キュー(SDQ)221で使用可能であるか、およびいつストア命令がほとんど完了するかを判別する。そしてL1キャッシュ236へのストアが完了する。
【0017】
レジスタ223,225〜229,237〜238の多くは、タイミングのために利用される。
【0018】
L1キャッシュ236内のキャッシュ・ラインは、キャッシュ・ラインの有効アドレスに基づいてアクセスされる。RAタグ・アレイ233は、L1キャッシュ236内でキャッシュ・ラインが書き込まれた場所を追跡する。フォーマット・ブロック231は、SDQ221からのデータを受け取って、それを適切に回転し、ストア命令の実行時に、L1キャッシュ236内の正しいバイト位置に書き込む。回転ブロック224,230は、ストア転送に利用される。したがって、ストア・キュー内にあり、ほとんど完了していないが故に、キャッシュ/メモリ・サブシステム内にまだ書き込まれておらず、データを必要とする若いロード命令が受け取られるならば、データは実行されるロード命令に転送される。
【0019】
回転ブロック239を用いて、L1キャッシュ・ミスに応じてL2キャッシュ(図示せず)から受け取ったデータを回転し、適切なレジスタ・ファイルに転送するために、L2キャッシュからのデータを結果バス上に転送する。
【0020】
ブロック219は、いくつかの特別の目的のレジスタを含み、特別の目的のレジスタ命令の結果としてデータをストアし、それらのレジスタからデータを読み出して、通常のパイプラインに送るようにする。
【0021】
レジスタ235は、タイミングのために実装され、L2キャッシュ(図示せず)からのデータを格納する。フォーマット・ブロック240と241は、キャッシュ・データを、レジスタ・ファイルへのロード結果に対する適切なバイト位置にフォーマットする(またはシフトする)。
【0022】
ロード・ストア・ユニット201は、上述したロード・ミス・キュー(LMQ)218を含み、このLMQは、L1データ・キャッシュ236をミスするロード命令を処理する。LMQ218は、ダウンストリーム・メモリ(2番目のすなわちL2キャッシュ,L3キャッシュ,システム・メモリ等)からのL1データ・キャッシュ・ラインのリロードを制御する。LMQ218は、データが記憶階層から戻されるとき、結果バス280,281を経てレジスタ・ファイル(図示せず)への重要なロードデータの転送を制御する。
【0023】
LMQ218は8つのエントリを有し、異なるキャッシュ・ラインに対し最大8つの要求を一度に処理する(1エントリ当たり1キャッシュ・ライン・ミス)ことを可能にする。また、8つのLMQのエントリのそれぞれは、最大2つのロード命令(第2のロード命令は、以下に述べるように、既存のエントリに“マージ”される)に、重要なデータを転送できる。したがって、LMQ218は、一度に16ロード命令を、潜在的にサービスできる。
【0024】
本発明は、“ロード・ヒット・リロード・マージ”機能を実行し、その機能はリロード・データを待っている既存のLMQ218のエントリに、実行時にロード命令をマージする。
【0025】
データが記憶階層から戻されると、重要なロード・データは、結果バス280,281上をレジスタ・ファイルに転送される。この重要なデータ転送は、丁度発行された他のロード命令またはストア命令に対して、最優先順位を有することができる。ロード・ストア・ユニット201は、2つの実行パイプラインを有し、したがって2つの結果バス280,281を有することに注意されたい。マージすることによって、本発明は、データが記憶階層から戻されると、各結果バス280,281上にロード・データを戻すことによって、これら2つのパイプラインを利用する。
【0026】
図4を参照すると、第1のロード命令は、ステップ301で、ディスパッチ・ユニット271によって発行される。ステップ302で、第1のロード命令によってアドレスされたデータ(キャッシュ・ライン)が、L1データ・キャッシュ236内にあるか否かを判別される。イエスならば、処理はステップ303に進み、L1データ・キャッシュ236からのアドレスされたロード・データを結果バス280,281上に戻す。
【0027】
アドレスされたキャッシュ・ラインが、L1データ・キャッシュ236内に無いならば、処理はステップ302からステップ304に進んで、キャッシュ・ラインのアドレスが、既存のLMQ218のエントリ内のアドレスと一致するか否かを判別する。一致しなければ、処理はステップ305に進んで、LMQ218がフル(full)であるか否かを判別する。フルでなければ、キャッシュ・ミスに対し新しいLMQ218のエントリが作成され、キャッシュ・ラインに対する要求は、システム・メモリ階層のダウンストリーム(downstream)に送られる。この要求は、この場合、ステップ306で、L2キャッシュ(図示せず)に対する要求である。ステップ311で、第1のロード命令は、L2キャッシュからのロード・データの戻りを待つ。その時に、第2のロード命令は、ロード・ストア・ユニット201内で実行するために、ディスパッチ・ユニット271によって発行することができる(ステップ301)。この例については、この第2のロード命令が、第1のロード命令によってアドレスされた同じキャッシュ・ラインのデータを要求しているものとする。したがって、第2のロード命令は、また、第1のロード命令と同じキャッシュ・ラインをアドレスする。ステップ302で、第2のロード命令によって要求されたキャッシュ・ラインが、L1データ・キャッシュ236内に無いことが判別されるであろう。というのは、このキャッシュ・ラインは、第1のロード命令に対して使用可能ではないからである。このシナリオは、ロード・ストア・ユニット201によって複数の並列ロード命令を実行する本発明において起こりうることであることに留意すべきである。キャッシュ・ラインが、L2キャッシュによってL1データ・キャッシュ236に既に戻されて、妥当性検査されたならば、L1ヒットがステップ302で判別され、第2のロード命令が、ステップ303にて結果バス280,281上に戻されたデータを有する。しかし、前述したように、第1のロード命令は、要求されたキャッシュ・ラインの戻りをまだ待っている(ステップ311)ものとしている。
【0028】
ステップ304で、同じキャッシュ・ラインが、第1と第2のロード命令によってアドレスされているので、処理はステップ307に進んで、スロットがフルであるか否かを判別する。言い換えれば、第1のロード命令のために作成されたLMQのエントリが、他の第3のロード命令とすでにマージされたか否かが判別される。イエスならば、第2のロード命令はステップ308で拒否される。しかし、スロットがフルでないならば、処理はステップ309に進んで、キャッシュ・ラインが、すでにロード・ストア・ユニット201に戻される処理にあるか否かを判別する。これが真ならば、第2のロード命令はステップ308で拒否される。ステップ309での判別は、L2キャッシュ・アービトレーション信号を監視することによって行うことができる。
【0029】
データがまだ戻っていないならば、処理はステップ310に進んで、第2のロード命令を、第1のロード命令に対応する既存のLMQ218のエントリにマージする。LMQ218はいくつかのエントリを含む。各エントリは、ロード・ミスを招くキャッシュ・ラインのアドレスのための1組のビットを有する。各エントリのための第2のビット組は、戻されてストアされるべきデータのフォーマットを判別する制御情報に関係する。ステップ304は、第2のロード命令のアドレスを、LMQのエントリに示された第1のロード命令のアドレスと比較する。
【0030】
各LMQのエントリは、また、検索されてストアされるべきデータのフォーマットを判別する制御情報のための他のビット組を含むが、マージされたロード命令に対応している。ステップ307で、この第2のビット組が前のマージにより既に占められているならば、第2のロード命令はステップ308で拒否される。しかし、そうでなければ、ステップ310で実行されたマージ・オペレーションは、第1のロード命令に対応するLMQのエントリにストアされる第2のロード命令に関係する制御情報を生成する。
【0031】
その後、ステップ311で、第2のロード命令は、また、戻されたロード・データを待つ。
【0032】
一度ロード・データが戻されると、そのロード・データは、結果バス280,281の両方を経て、マージされたLMQ218のエントリ内で示された第1と第2のロード命令に対応するレジスタ・ファイルに送られる。
【0033】
本発明の利点は、データが記憶階層から戻されるときに、第2のロード命令を第1のロード命令とマージすることが、ロード・ストア・ユニット201に、重要なロード・データを結果バス280,281上に転送させることを可能にすることである。第2のロード命令が第1のロード命令とマージされなければ、第2のロード命令は全てのデータ(キャッシュ・ライン)がL1データ・キャッシュ236に書き込まれるまで待たねばならず、第2のロード命令の前に妥当性検査されたキャッシュ・ラインがデータを得ることができる。第2のロード命令をマージすることは、ロード・データが、ロード・ストア・ユニット201に使用可能にされるとすぐに、ロード・データを戻すことによって、性能の利点を与える。できるだけすぐにロード・データを戻すことは、従属する命令の実行を可能にする。
【0034】
本発明とその利点を、詳細に説明したが、種々の変更,置換,変形を、本発明の趣旨と範囲から逸脱することなしに行うことができることが、理解されるであろう。
【0035】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0036】
(1)プロセッサにおいてロード命令を実行する方法であって、
実行のために、第1のロード命令を発行するステップと、
前記第1のロード命令によってアドレスされたデータが、1次キャッシュ内に無いことを判別するステップと、
システム・メモリから前記データを検索するステップと、
実行のために、前記データをアドレスする第2のロード命令を発行するステップと、
前記データを前記第1と第2のロード命令の両方に戻すステップとを含む方法。
【0037】
(2)前記システム・メモリが、2次キャッシュを含む上記(1)記載の方法。
【0038】
(3)前記判別するステップが、
前記第1のロード命令に対応するロード・ミス・キュー内に、エントリを割り振るステップをさらに含む上記(1)記載の方法。
【0039】
(4)前記ロード・ミス・キュー内のエントリが、前記データのアドレスを含む上記(3)記載の方法。
【0040】
(5)前記戻すステップが、
前記第2のロード命令のアドレスを、前記ロード・ミス・キュー内の前記データのアドレスと比較するステップをさらに含む上記(4)記載の方法。
【0041】
(6)前記戻すステップが、
前記第2のロード命令を前記第1のロード命令とマージするステップをさらに含む上記(5)記載の方法。
【0042】
(7)ロード/ストア・ユニットと、
第1のロード命令を前記ロード/ストア・ユニットに発行する命令ディスパッチ・ユニットとを備え、前記第1のロード命令はキャッシュ・ラインをアドレスし、
前記アドレスされたキャッシュ・ラインが、前記ロード/ストア・ユニットに結合されたデータ・キャッシュ内にあるか否かを判別する回路手段と、
前記アドレスされたキャッシュ・ラインが、前記ロード/ストア・ユニットに結合された前記データ・キャッシュ内に無いことが判別されると、前記第1のロード命令に対応するエントリをストアするロード・ミス・キューと、
前記データ・キャッシュからのダウンストリーム・メモリから、前記アドレスされたキャッシュ・ラインを要求する回路手段と、
前記ロード/ストア・ユニット内で実行するために受け取った第2のロード命令のキャッシュ・ライン・アドレスを、前記ロード・ミス・キュー内のエントリと比較する回路手段と、
前記第2のロード命令を、前記第1のロード命令に対応する前記ロード・ミス・キュー内のエントリとマージする回路手段と、
前記ダウンストリーム・メモリから受け取った前記アドレスされたキャッシュ・ラインを、第1のロード命令と関連づけられたレジスタに転送する第1の結果バスと、
前記ダウンストリーム・メモリから受け取った前記アドレスされたキャッシュ・ラインを、第2のロード命令と関連づけられたレジスタに転送する第2の結果バスとを備えるプロセッサ。
【0043】
(8)前記第2のロード命令は、第2のロード命令を再発行する必要なしに、前記第1のロード命令と同時にサービスされる上記(7)記載のプロセッサ。
【0044】
(9)前記第2のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュ内にストアされるのを待つ必要なしに、前記アドレスされたキャッシュ・ラインを受け取る上記(7)記載のプロセッサ。
【0045】
(10)前記第2のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性検査されるのを待つ必要なしに、前記アドレスされたキャッシュ・ラインを受け取る上記(9)記載のプロセッサ。
【0046】
(11)プロセッサにおいてロード命令を実行するシステムであって、
実行のために第1のロード命令をロード/ストア・ユニットに発行する回路手段と、
前記第1のロード命令によってアドレスされたキャッシュ・ラインが、前記ロード/ストア・ユニットに結合された1次キャッシュ内に無いことを判別する回路手段と、
前記プロセッサに結合された2次キャッシュから前記キャッシュ・ラインを検索する回路手段と、
実行のために、前記キャッシュ・ラインをアドレスする第2のロード命令を前記ロード/ストア・ユニットに発行する回路手段と、
前記キャッシュ・ラインを前記第1と第2のロード命令の両方に戻す回路手段とを含むシステム。
【0047】
(12)前記第2のロード命令は、前記キャッシュ・ラインが、前記1次キャッシュ内にストアされるのを待つ必要なしに、前記キャッシュ・ラインを受け取る上記(11)記載のシステム。
【0048】
(13)前記第2のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性を検査されるのを待つ必要なしに、前記キャッシュ・ラインを受け取る上記(11)記載のシステム。
【0049】
(14)前記判別する回路手段が、
前記第1のロード命令に対応するロード・ミス・キュー内に、エントリを割り振る回路手段をさらに備える上記(12)記載のシステム。
【0050】
(15)前記ロード・ミス・キュー内のエントリが、前記キャッシュ・ラインのアドレスを含む上記(14)記載のシステム。
【0051】
(16)前記戻す回路手段が、
前記第2のロード命令のアドレスを、前記ロード・ミス・キュー内の前記キャッシュ・ラインのアドレスと比較する回路手段をさらに備える上記(15)記載のシステム。
【0052】
(17)前記戻す回路手段が、
前記第2のロード命令を、前記第1のロード命令に対応する前記ロード・ミス・キュー内のエントリとマージする回路手段をさらに備える上記(16)記載のシステム。
【0053】
(18)前記戻す回路手段が、
前記2次キャッシュから受け取ったキャッシュ・ラインを、第1のロード命令に関連づけられた第1のレジスタに転送する第1の結果バスと、
前記2次キャッシュから受け取ったキャッシュ・ラインを、第2のロード命令に関連づけられた第2のレジスタに転送する第2の結果バスとをさらに備える上記(17)記載のシステム。
【0054】
(19)前記第1と第2の結果バスは、前記キャッシュ・ラインを、前記第1と第2のレジスタに並列に転送する上記(18)記載のシステム。
【図面の簡単な説明】
【図1】本発明に従って構成されたデータ処理システムを示す図である。
【図2】本発明に従って構成されたロード/ストア・ユニットを示す図である。
【図3】本発明に従って構成されたロード/ストア・ユニットを示す図である。
【図4】本発明による処理を示す流れ図である。
【符号の説明】
201 ロード/ストア(L/S)ユニット
202〜205 レジスタ
206,207 64ビット加算器
208,209 レジスタ
210,211 タグ・アレイ
212,213 レジスタ
214,215 有効実アドレス変換器(ERAT)アレイ
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 (7)
- プロセッサにおいてロード命令を実行する方法であって、
実行のために、ロード命令を発行し、該ロード命令によってアドレスされたデータが1次キャッシュ内にあることを判別すると、該1次キャッシュからのロード・データを戻し、該ロード命令によってアドレスされたデータが1次キャッシュ内に無いことを判別すると、該ロード命令に対応するロード・ミス・キューの新しいエントリを作成し、該データに対する要求をダウンストリームに送るにあたって、
システム・メモリから前記データを検索する間に、前記データをアドレスする他のロード命令が発行された場合において、前記他のロード命令によってアドレスされたデータのアドレスを、既にロード・ミス・キューに格納された、該エントリと該要求されたデータに対応するロード命令である第1のロード命令に伴って生じる1次キャッシュ・ミスに伴ってリロードされるキャッシュラインを示すアドレスと比較するステップと、
前記比較の結果が真の場合に、前記他のロード命令である第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納するステップと、
前記比較の結果が偽の場合に、ロード・ミス・キューがフルでなければ前記他のロード命令に対応する新しいエントリを作成するステップとを行い、
該要求に対してダウンストリームから戻されたロード・データをレジスタ・ファイルに転送するにあたって、前記第1のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第1のロード命令に対応するレジスタ・ファイルに転送し、前記第2のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第2のロード命令に対応するレジスタ・ファイルに転送するステップを行い、
前記制御情報を前記エントリに格納するステップでは、前記比較の結果が真の場合であっても既に第1のロード命令とは異なるロード命令によってアドレスされたデータの制御情報が前記エントリに格納されているか否かを判別し、該判別の結果が偽の場合にのみ第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納し、該判別結果が真の場合には第2のロード命令は拒否される、方法。 - 前記システム・メモリが、2次キャッシュを含む請求項1記載の方法。
- プロセッサにおいてロード命令を実行するシステムであって、
実行のために、ロード命令を発行する手段と、
該ロード命令によってアドレスされたデータが1次キャッシュ内にあることを判別すると、該1次キャッシュからのロード・データを戻し、該ロード命令によってアドレスされたデータが1次キャッシュ内に無いことを判別すると、該ロード命令に対応するロード・ミス・キューの新しいエントリを作成し、該データに対する要求をダウンストリームに送るにあたって、システム・メモリから前記データを検索する間に、前記データをアドレスする他のロード命令が発行された場合において、前記他のロード命令によってアドレスされたデータのアドレスを、既にロード・ミス・キューに格納された、該エントリと該要求されたデータに対応するロード命令である第1のロード命令に伴って生じる1次キャッシュ・ミスに伴ってリロードされるキャッシュラインを示すアドレスと比較する手段と、
前記比較の結果が真の場合に、前記他のロード命令である第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納する手段と、
前記比較の結果が偽の場合に、ロード・ミス・キューがフルでなければ前記他のロード命令に対応する新しいエントリを作成する手段と、
該要求に対してダウンストリームから戻されたロード・データをレジスタ・ファイルに転送するにあたって、前記第1のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第1のロード命令に対応するレジスタ・ファイルに転送し、前記第2のロード命令によってアドレスされたデータを、前記ロード ・ミス・キューのエントリ内で示された、前記第2のロード命令に対応するレジスタ・ファイルに転送する手段を具備し、
前記制御情報を前記エントリに格納する手段において、前記比較の結果が真の場合であっても既に第1のロード命令とは異なるロード命令によってアドレスされたデータの制御情報が前記エントリに格納されているか否かを判別し、該判別の結果が偽の場合にのみ第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納し、該判別結果が真の場合には第2のロード命令は拒否される、システム。 - 前記比較の結果が真の場合に、前記第2のロード命令は、前記キャッシュ・ラインが、前記1次キャッシュ内にストアされるのを待つ必要なしに、前記第1のロード命令に応じて検索されたキャッシュ・ラインを前記第2のロード命令に対応するレジスタ・ファイルに転送することにより処理される請求項3記載のシステム。
- 前記比較の結果が真の場合に、前記第2のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性を検査されるのを待つ必要なしに、前記第1のロード命令に応じて検索されたキャッシュ・ラインを前記第2のロード命令に対応するレジスタ・ファイルに転送することにより処理される請求項3記載のシステム。
- 前記転送する回路手段が、
前記2次キャッシュから受け取ったキャッシュ・ラインを、前記第1のロード命令に関連づけられた第1のレジスタ・ファイルに転送する第1の結果バスと、
前記2次キャッシュから受け取ったキャッシュ・ラインを、前記第2のロード命令に関連づけられた第2のレジスタ・ファイルに転送する第2の結果バスとをさらに備える請求項5記載のシステム。 - 前記第1の結果バスと前記第2の結果バスは、前記キャッシュ・ラインを、前記第1のレジスタ・ファイルと前記第2のレジスタ・ファイルに並列に転送する請求項6記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/259,139 US6336168B1 (en) | 1999-02-26 | 1999-02-26 | System and method for merging multiple outstanding load miss instructions |
US09/259139 | 1999-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000250810A JP2000250810A (ja) | 2000-09-14 |
JP4045062B2 true 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) |
Families Citing this family (40)
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 |
US6768358B2 (en) * | 2001-08-29 | 2004-07-27 | Analog Devices, Inc. | Phase locked loop fast power up methods and apparatus |
US7543133B1 (en) | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US7519771B1 (en) * | 2003-08-18 | 2009-04-14 | Cray Inc. | System and method for processing memory instructions using a forced order queue |
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 |
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 |
JP4837305B2 (ja) * | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
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 |
JP5040121B2 (ja) * | 2006-02-24 | 2012-10-03 | 日本電気株式会社 | 情報処理装置、キャッシュ制御方法及びプログラム |
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 |
CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
KR101818967B1 (ko) | 2012-06-15 | 2018-01-16 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐 |
KR101826399B1 (ko) | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | 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 |
EP2862062B1 (en) | 2012-06-15 | 2024-03-06 | Intel Corporation | A virtual load store queue having a dynamic dispatch window with a distributed structure |
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 |
US10572260B2 (en) * | 2017-12-29 | 2020-02-25 | Intel Corporation | Spatial and temporal merging of remote atomic operations |
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
Also Published As
Publication number | Publication date |
---|---|
JP2000250810A (ja) | 2000-09-14 |
CN1120415C (zh) | 2003-09-03 |
CN1264866A (zh) | 2000-08-30 |
US6336168B1 (en) | 2002-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4045062B2 (ja) | ロード命令を実行する方法、プロセッサ、およびシステム | |
JP3509067B2 (ja) | ストア命令転送方法およびプロセッサ | |
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 | |
CA1325285C (en) | Method and apparatus for ordering and queueing multiple memory requests | |
JP3423310B2 (ja) | 仮想アドレス能力が保持され、パイプライン命令ユニットと実効アドレス計算ユニットとを有するcpu | |
US6266768B1 (en) | System and method for permitting out-of-order execution of load instructions | |
CA1325283C (en) | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system | |
CA1323701C (en) | Processing of memory access exceptions with pre-fetched instructions within the instruction pipeline of a virtual memory system-based digital computer | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
US5388247A (en) | History buffer control to reduce unnecessary allocations in a memory stream buffer | |
US6401192B1 (en) | Apparatus for software initiated prefetch and method therefor | |
US5019965A (en) | Method and apparatus for increasing the data storage rate of a computer system having a predefined data path width | |
EP0381447A2 (en) | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system | |
JPH08504977A (ja) | スーパースカラ・マイクロプロセサにおけるロード及び/又はストア動作を扱うシステム及び方法 | |
US6175897B1 (en) | Synchronization of branch cache searches and allocation/modification/deletion of branch cache | |
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 | |
EP0303648A1 (en) | CENTRAL PROCESSOR UNIT FOR DIGITAL DATA PROCESSING ARRANGEMENT WITH CACHE MEMORY MANAGEMENT DEVICE. | |
US6237066B1 (en) | Supporting multiple outstanding requests to multiple targets in a pipelined memory system | |
US6477635B1 (en) | Data processing system including load/store unit having a real address tag array and method for correcting effective address aliasing | |
US6725365B1 (en) | Branching in a computer system | |
JPH02239331A (ja) | データ処理システム及びその命令実行を促進する方法 | |
US7321964B2 (en) | Store-to-load forwarding buffer using indexed lookup | |
US6338128B1 (en) | System and method for invalidating an entry in a translation unit |
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 |