(57)【特許請求の範囲】
【請求項１】
プロセッサにおいてロード命令を実行する方法であって、
実行のために、ロード命令を発行し、該ロード命令によってアドレスされたデータが１次キャッシュ内にあることを判別すると、該１次キャッシュからのロード・データを戻し、該ロード命令によってアドレスされたデータが１次キャッシュ内に無いことを判別すると、該ロード命令に対応するロード・ミス・キューの新しいエントリを作成し、該データに対する要求をダウンストリームに送るにあたって、
システム・メモリから前記データを検索する間に、前記データをアドレスする他のロード命令が発行された場合において、前記他のロード命令によってアドレスされたデータのアドレスを、既にロード・ミス・キューに格納された、該エントリと該要求されたデータに対応するロード命令である第１のロード命令に伴って生じる１次キャッシュ・ミスに伴ってリロードされるキャッシュラインを示すアドレスと比較するステップと、
前記比較の結果が真の場合に、前記他のロード命令である第２のロード命令によってアドレスされたデータの制御情報を該エントリに格納するステップと、
前記比較の結果が偽の場合に、ロード・ミス・キューがフルでなければ前記他のロード命令に対応する新しいエントリを作成するステップとを行い、
該要求に対してダウンストリームから戻されたロード・データをレジスタ・ファイルに転送するにあたって、前記第１のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第１のロード命令に対応するレジスタ・ファイルに転送し、前記第２のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第２のロード命令に対応するレジスタ・ファイルに転送するステップを行い、
前記制御情報を前記エントリに格納するステップでは、前記比較の結果が真の場合であっても既に第１のロード命令とは異なるロード命令によってアドレスされたデータの制御情報が前記エントリに格納されているか否かを判別し、該判別の結果が偽の場合にのみ第２のロード命令によってアドレスされたデータの制御情報を該エントリに格納し、該判別結果が真の場合には第２のロード命令は拒否される、方法。
【請求項２】
前記システム・メモリが、２次キャッシュを含む請求項１記載の方法。
【請求項３】
プロセッサにおいてロード命令を実行するシステムであって、
実行のために、ロード命令を発行する手段と、
該ロード命令によってアドレスされたデータが１次キャッシュ内にあることを判別すると、該１次キャッシュからのロード・データを戻し、該ロード命令によってアドレスされたデータが１次キャッシュ内に無いことを判別すると、該ロード命令に対応するロード・ミス・キューの新しいエントリを作成し、該データに対する要求をダウンストリームに送るにあたって、システム・メモリから前記データを検索する間に、前記データをアドレスする他のロード命令が発行された場合において、前記他のロード命令によってアドレスされたデータのアドレスを、既にロード・ミス・キューに格納された、該エントリと該要求されたデータに対応するロード命令である第１のロード命令に伴って生じる１次キャッシュ・ミスに伴ってリロードされるキャッシュラインを示すアドレスと比較する手段と、
前記比較の結果が真の場合に、前記他のロード命令である第２のロード命令によってアドレスされたデータの制御情報を該エントリに格納する手段と、
前記比較の結果が偽の場合に、ロード・ミス・キューがフルでなければ前記他のロード命令に対応する新しいエントリを作成する手段と、
該要求に対してダウンストリームから戻されたロード・データをレジスタ・ファイルに転送するにあたって、前記第１のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第１のロード命令に対応するレジスタ・ファイルに転送し、前記第２のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第２のロード命令に対応するレジスタ・ファイルに転送する手段を具備し、
前記制御情報を前記エントリに格納する手段において、前記比較の結果が真の場合であっても既に第１のロード命令とは異なるロード命令によってアドレスされたデータの制御情報が前記エントリに格納されているか否かを判別し、該判別の結果が偽の場合にのみ第２のロード命令によってアドレスされたデータの制御情報を該エントリに格納し、該判別結果が真の場合には第２のロード命令は拒否される、システム。
【請求項４】
前記比較の結果が真の場合に、前記第２のロード命令は、前記キャッシュ・ラインが、前記１次キャッシュ内にストアされるのを待つ必要なしに、前記第１のロード命令に応じて検索されたキャッシュ・ラインを前記第２のロード命令に対応するレジスタ・ファイルに転送することにより処理される請求項３記載のシステム。
【請求項５】
前記比較の結果が真の場合に、前記第２のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性を検査されるのを待つ必要なしに、前記第１のロード命令に応じて検索されたキャッシュ・ラインを前記第２のロード命令に対応するレジスタ・ファイルに転送することにより処理される請求項３記載のシステム。
【請求項６】
前記転送する回路手段が、
前記２次キャッシュから受け取ったキャッシュ・ラインを、前記第１のロード命令に関連づけられた第１のレジスタ・ファイルに転送する第１の結果バスと、
前記２次キャッシュから受け取ったキャッシュ・ラインを、前記第２のロード命令に関連づけられた第２のレジスタ・ファイルに転送する第２の結果バスとをさらに備える請求項５記載のシステム。
【請求項７】
前記第１の結果バスと前記第２の結果バスは、前記キャッシュ・ラインを、前記第１のレジスタ・ファイルと前記第２のレジスタ・ファイルに並列に転送する請求項６記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理システムに関し、特にプロセッサにおけるロード命令の実行に関する。
【０００２】
【従来の技術】
マイクロプロセッサの処理速度を増すために、アーキテクチャは、マイクロプロセッサ内で複数の並列ロード命令を実行させるようにデザインされ、実装されてきた。命令のパイプライン化は、複数の命令が、実質的に並列に実行するために発行されることを可能にする。このようなプロセスに伴う問題は、次のようなときに発生する。すなわち、第１のロード命令が、実行のために送られるが、キャッシュ・ミスを生じ、そして第２のロード命令が、第１のロード命令と同じキャッシュ・ラインのロードを実行をするために送られるときに発生する。一般的に、そのような状況では、第２のロード命令は、再実行されねばならず、または、第２のロード命令が完了する前に、第１のロード命令からのロード・データが、１次データ・キャッシュに取り込まれ、妥当性検査されるのを少なくとも待たなければならない。
【０００３】
【発明が解決しようとする課題】
その結果、プロセッサ内でパイプライン化されたロード命令を実行する改善された方法が必要とされている。
【０００４】
【課題を解決するための手段】
本発明は、特定の状況で同じキャッシュ・ラインをアドレスするロード命令の対をマージすることによって前述の必要性を処理している。本発明は、キャッシュにおいて以前にミスされているキャッシュ・ラインへのロード命令を受け取るロード・ストア・ユニットを提供する。ロード・ミス・キューは、以前のロード命令のキャッシュ・ミスを扱うのに必要とされる情報を保持する。後続するロード命令は、キャッシュにおいて以前にミスされた同じキャッシュ・ラインからロードを試みるとき、ロード・ミス・キューは、第２のロード命令に対して責任を負う。キャッシュ・ラインがデータ・キャッシュに戻されると、要求されたデータは、第１のバスを通って第１のロード命令のレジスタに渡され、第２のロード命令の要求されたデータは、第２のバスを通って第２のロード命令のレジスタに渡される。このように、同じキャッシュ・ラインにアクセスする２つのロード命令の各々のためのオペランドが、同じミス・オペレーションによって共にサービスされる。
【０００５】
前述のことは、以下の本発明の詳細な説明がより理解できるように、本発明の特徴と技術的利点をより広く概説した。本発明の他の特徴と利点は、以下に説明される。
【０００６】
【発明の実施の形態】
以下の記述では、多くの特定の詳細を、特定のワードまたはバイト長等で説明して、本発明の完全な理解を与えるようにしている。しかし、当業者にとって、本発明をそのような特定の詳細を必要とせずに実行できることは明らかである。他の例では、周知の回路をブロック図で示して、不必要な詳細さで本発明を不明瞭にすることのないようにしている。大部分は、タイミングの考察などに関連する詳細は、そのような詳細が本発明の完全な理解を得るために必要でなく、また関連技術における当業者の技術範囲内にあるので、省略されている。
【０００７】
次に図を参照すると、そこに表された構成要素は、必ずしも一定の縮尺で示されておらず、同様なまたは類似の構成要素は、各図を通じて同じ参照数字で示されている。
【０００８】
本発明を実施する代表的なハードウェア環境が図１に示され、この図１は、ＣＰＵ１１０とシステム・バス１１２を介して相互接続されたいくつかの他のユニットを有する本発明に係るワークステーション１１３の典型的ハードウェア構成を示す。ＣＰＵ１１０は、以下に述べられるような本発明のロード／ストア・ユニット２０１を実現する。ワークステーション１１３は、ＲＡＭ１１４、ＲＯＭ１１６、ディスク・ユニット１２０およびテープ・ドライブ１４０のような周辺装置をバス１１２に接続するＩ／Ｏアダプタ１１８、キーボード１２４，マウス１２６，および／またはタッチ・スクリーン・デバイス（図示せず）のような他のユーザー・インターフェース・デバイスをバス１１２に接続するユーザー・インターフェース・アダプタ１２２、ワークステーション１１３をデータ処理ネットワークに接続する通信アダプタ１３４、バス１１２をディスプレイ装置１３８に接続するディスプレイ・アダプタ１３６を含む。ＣＰＵ１１０は、ここで示されない他の回路（ロード／ストア・ユニット２０１以外の）を含むことができ、それは、マイクロプロセッサ内で通常見いだされる回路、例えば、実行ユニット，バス・インターフェース・ユニット，演算論理ユニット等を含むであろう。ＣＰＵ１１０は、また、１つの集積回路上に実装することができる。
【０００９】
図２および図３は、本発明に従って構成されたロード／ストア（Ｌ／Ｓ）ユニット２０１を示す。Ｌ／Ｓユニット２０１は、ＣＰＵ１１０内に設けられ、典型的マイクロプロセッサ・アーキテクチャに従って構成できる。
【００１０】
Ｌ／Ｓユニット２０１は、マシン・サイクル毎に２つのロード命令またはストア命令が発行できるように２つのパイプラインを有している。レジスタ２０２〜２０５は、技術上周知のように固定小数点ユニット（ＦＸＵ）０および１（図示せず）から命令を受け取る。６４ビット加算器２０６は、レジスタ２０２と２０３から受け取ったオペランドを加算し、一方、６４ビット加算器２０７は、レジスタ２０４と２０５からのオペランドを加算して、一対の６４ビット有効アドレスを生成する。これらの有効アドレスは、それぞれレジスタ２０８，２０９に出力される。レジスタ２０８と２０９は、有効アドレス（ＥＡ）を取り込む。次にそれらレジスタは共に、ＬＭＱ２１８，ＬＲＱ２２０，ＳＲＱ２２２を与え、これらはすべて、アドレス・チェックを実行するため、レジスタ２１６，２１７からの実アドレスに加えてＥＡの一部を必要とする。さらに、有効アドレスはデコードされて、Ｌ１キャッシュ２３６にヒットまたはミスが存在するか否かを判別するために、タグ・アレイ２１０，２１１にアクセスする。ミスならば、そのアドレスは、レジスタ２１２，２１３を通り過ぎて、Ｌ２キャッシュ（図示せず）に送られる。
【００１１】
さらに、有効アドレスは加算器２０６，２０７から送られてデコードされ、有効実アドレス変換器（ＥＲＡＴ）アレイ２１４，２１５にアクセスし、それらは変換されたアドレスをレジスタ２１６，２１７を通してそれぞれ出力する。
【００１２】
さらにまた、加算器２０６，２０７からの有効アドレスは、Ｌ１キャッシュ２３６内のデコーダによってデコードされた後に、ロード・オペレーションのために、Ｌ１キャッシュ２３６にアクセスする。Ｌ１キャッシュ２３６にヒットが存在するならば、そのデータはＬ１キャッシュ２３６からレジスタ２３７，２３８に読み出され、フォーマッタ２４０，２４１によってフォーマットされ、結果バス上に戻されて、レジスタ・ファイル（RegFile：図示せず）に送られる。Ｌ１キャッシュ２３６から読み出されたキャッシュ・ラインは、また、その結果に依存するオペレーションのために、レジスタ２０２〜２０５にオペランドとして戻される。
【００１３】
本質的に、Ｌ／Ｓユニット２０１内で実行される３サイクルは、実行サイクル（加算が実行される），アクセス・サイクル（アレイへのアクセスが実行される），結果サイクル（データのフォーマットと転送が実行される）である。
【００１４】
キャッシュにミスが存在するならば、リクエストがＬ２キャッシュ（図示せず）に送られる。ロード・ミス・キュー（ＬＭＱ）２１８は、ロード・データを待って、Ｌ２キャッシュ（図示せず）から戻る。そのキャッシュ・ラインに関連したデータは、Ｌ１キャッシュ２３６にロードされる。
【００１５】
これらのロード・オペレーションは、見込み的にかつアウトオブオーダーに実行できる。ストア命令も、また、アウトオブオーダーに実行される。ストア命令は、変換器２１４，２１５内の変換オペレーションによってランされ、命令が完了した後、Ｌ１キャッシュ２３６への記憶のために、ストア・データ・キュー（ＳＤＱ）２２１に挿入される。したがって、ストア命令はアウトオブオーダーに実行されるが、Ｌ１キャッシュ２３６にインオーダー(in order)に書き込まれる。
【００１６】
ストア・リオーダー・キュー（ＳＲＱ）２２２は、実行されたストア命令を追跡する。ＳＲＱ２２２は、ストア命令を待ち行列で保持し、いつデータがストア・データ・キュー（ＳＤＱ）２２１で使用可能であるか、およびいつストア命令がほとんど完了するかを判別する。そしてＬ１キャッシュ２３６へのストアが完了する。
【００１７】
レジスタ２２３，２２５〜２２９，２３７〜２３８の多くは、タイミングのために利用される。
【００１８】
Ｌ１キャッシュ２３６内のキャッシュ・ラインは、キャッシュ・ラインの有効アドレスに基づいてアクセスされる。ＲＡタグ・アレイ２３３は、Ｌ１キャッシュ２３６内でキャッシュ・ラインが書き込まれた場所を追跡する。フォーマット・ブロック２３１は、ＳＤＱ２２１からのデータを受け取って、それを適切に回転し、ストア命令の実行時に、Ｌ１キャッシュ２３６内の正しいバイト位置に書き込む。回転ブロック２２４，２３０は、ストア転送に利用される。したがって、ストア・キュー内にあり、ほとんど完了していないが故に、キャッシュ／メモリ・サブシステム内にまだ書き込まれておらず、データを必要とする若いロード命令が受け取られるならば、データは実行されるロード命令に転送される。
【００１９】
回転ブロック２３９を用いて、Ｌ１キャッシュ・ミスに応じてＬ２キャッシュ（図示せず）から受け取ったデータを回転し、適切なレジスタ・ファイルに転送するために、Ｌ２キャッシュからのデータを結果バス上に転送する。
【００２０】
ブロック２１９は、いくつかの特別の目的のレジスタを含み、特別の目的のレジスタ命令の結果としてデータをストアし、それらのレジスタからデータを読み出して、通常のパイプラインに送るようにする。
【００２１】
レジスタ２３５は、タイミングのために実装され、Ｌ２キャッシュ（図示せず）からのデータを格納する。フォーマット・ブロック２４０と２４１は、キャッシュ・データを、レジスタ・ファイルへのロード結果に対する適切なバイト位置にフォーマットする（またはシフトする）。
【００２２】
ロード・ストア・ユニット２０１は、上述したロード・ミス・キュー（ＬＭＱ）２１８を含み、このＬＭＱは、Ｌ１データ・キャッシュ２３６をミスするロード命令を処理する。ＬＭＱ２１８は、ダウンストリーム・メモリ（２番目のすなわちＬ２キャッシュ，Ｌ３キャッシュ，システム・メモリ等）からのＬ１データ・キャッシュ・ラインのリロードを制御する。ＬＭＱ２１８は、データが記憶階層から戻されるとき、結果バス２８０，２８１を経てレジスタ・ファイル（図示せず）への重要なロードデータの転送を制御する。
【００２３】
ＬＭＱ２１８は８つのエントリを有し、異なるキャッシュ・ラインに対し最大８つの要求を一度に処理する（１エントリ当たり１キャッシュ・ライン・ミス）ことを可能にする。また、８つのＬＭＱのエントリのそれぞれは、最大２つのロード命令（第２のロード命令は、以下に述べるように、既存のエントリに“マージ”される）に、重要なデータを転送できる。したがって、ＬＭＱ２１８は、一度に１６ロード命令を、潜在的にサービスできる。
【００２４】
本発明は、“ロード・ヒット・リロード・マージ”機能を実行し、その機能はリロード・データを待っている既存のＬＭＱ２１８のエントリに、実行時にロード命令をマージする。
【００２５】
データが記憶階層から戻されると、重要なロード・データは、結果バス２８０，２８１上をレジスタ・ファイルに転送される。この重要なデータ転送は、丁度発行された他のロード命令またはストア命令に対して、最優先順位を有することができる。ロード・ストア・ユニット２０１は、２つの実行パイプラインを有し、したがって２つの結果バス２８０，２８１を有することに注意されたい。マージすることによって、本発明は、データが記憶階層から戻されると、各結果バス２８０，２８１上にロード・データを戻すことによって、これら２つのパイプラインを利用する。
【００２６】
図４を参照すると、第１のロード命令は、ステップ３０１で、ディスパッチ・ユニット２７１によって発行される。ステップ３０２で、第１のロード命令によってアドレスされたデータ（キャッシュ・ライン）が、Ｌ１データ・キャッシュ２３６内にあるか否かを判別される。イエスならば、処理はステップ３０３に進み、Ｌ１データ・キャッシュ２３６からのアドレスされたロード・データを結果バス２８０，２８１上に戻す。
【００２７】
アドレスされたキャッシュ・ラインが、Ｌ１データ・キャッシュ２３６内に無いならば、処理はステップ３０２からステップ３０４に進んで、キャッシュ・ラインのアドレスが、既存のＬＭＱ２１８のエントリ内のアドレスと一致するか否かを判別する。一致しなければ、処理はステップ３０５に進んで、ＬＭＱ２１８がフル(full)であるか否かを判別する。フルでなければ、キャッシュ・ミスに対し新しいＬＭＱ２１８のエントリが作成され、キャッシュ・ラインに対する要求は、システム・メモリ階層のダウンストリーム(downstream)に送られる。この要求は、この場合、ステップ３０６で、Ｌ２キャッシュ（図示せず）に対する要求である。ステップ３１１で、第１のロード命令は、Ｌ２キャッシュからのロード・データの戻りを待つ。その時に、第２のロード命令は、ロード・ストア・ユニット２０１内で実行するために、ディスパッチ・ユニット２７１によって発行することができる（ステップ３０１）。この例については、この第２のロード命令が、第１のロード命令によってアドレスされた同じキャッシュ・ラインのデータを要求しているものとする。したがって、第２のロード命令は、また、第１のロード命令と同じキャッシュ・ラインをアドレスする。ステップ３０２で、第２のロード命令によって要求されたキャッシュ・ラインが、Ｌ１データ・キャッシュ２３６内に無いことが判別されるであろう。というのは、このキャッシュ・ラインは、第１のロード命令に対して使用可能ではないからである。このシナリオは、ロード・ストア・ユニット２０１によって複数の並列ロード命令を実行する本発明において起こりうることであることに留意すべきである。キャッシュ・ラインが、Ｌ２キャッシュによってＬ１データ・キャッシュ２３６に既に戻されて、妥当性検査されたならば、Ｌ１ヒットがステップ３０２で判別され、第２のロード命令が、ステップ３０３にて結果バス２８０，２８１上に戻されたデータを有する。しかし、前述したように、第１のロード命令は、要求されたキャッシュ・ラインの戻りをまだ待っている（ステップ３１１）ものとしている。
【００２８】
ステップ３０４で、同じキャッシュ・ラインが、第１と第２のロード命令によってアドレスされているので、処理はステップ３０７に進んで、スロットがフルであるか否かを判別する。言い換えれば、第１のロード命令のために作成されたＬＭＱのエントリが、他の第３のロード命令とすでにマージされたか否かが判別される。イエスならば、第２のロード命令はステップ３０８で拒否される。しかし、スロットがフルでないならば、処理はステップ３０９に進んで、キャッシュ・ラインが、すでにロード・ストア・ユニット２０１に戻される処理にあるか否かを判別する。これが真ならば、第２のロード命令はステップ３０８で拒否される。ステップ３０９での判別は、Ｌ２キャッシュ・アービトレーション信号を監視することによって行うことができる。
【００２９】
データがまだ戻っていないならば、処理はステップ３１０に進んで、第２のロード命令を、第１のロード命令に対応する既存のＬＭＱ２１８のエントリにマージする。ＬＭＱ２１８はいくつかのエントリを含む。各エントリは、ロード・ミスを招くキャッシュ・ラインのアドレスのための１組のビットを有する。各エントリのための第２のビット組は、戻されてストアされるべきデータのフォーマットを判別する制御情報に関係する。ステップ３０４は、第２のロード命令のアドレスを、ＬＭＱのエントリに示された第１のロード命令のアドレスと比較する。
【００３０】
各ＬＭＱのエントリは、また、検索されてストアされるべきデータのフォーマットを判別する制御情報のための他のビット組を含むが、マージされたロード命令に対応している。ステップ３０７で、この第２のビット組が前のマージにより既に占められているならば、第２のロード命令はステップ３０８で拒否される。しかし、そうでなければ、ステップ３１０で実行されたマージ・オペレーションは、第１のロード命令に対応するＬＭＱのエントリにストアされる第２のロード命令に関係する制御情報を生成する。
【００３１】
その後、ステップ３１１で、第２のロード命令は、また、戻されたロード・データを待つ。
【００３２】
一度ロード・データが戻されると、そのロード・データは、結果バス２８０，２８１の両方を経て、マージされたＬＭＱ２１８のエントリ内で示された第１と第２のロード命令に対応するレジスタ・ファイルに送られる。
【００３３】
本発明の利点は、データが記憶階層から戻されるときに、第２のロード命令を第１のロード命令とマージすることが、ロード・ストア・ユニット２０１に、重要なロード・データを結果バス２８０，２８１上に転送させることを可能にすることである。第２のロード命令が第１のロード命令とマージされなければ、第２のロード命令は全てのデータ（キャッシュ・ライン）がＬ１データ・キャッシュ２３６に書き込まれるまで待たねばならず、第２のロード命令の前に妥当性検査されたキャッシュ・ラインがデータを得ることができる。第２のロード命令をマージすることは、ロード・データが、ロード・ストア・ユニット２０１に使用可能にされるとすぐに、ロード・データを戻すことによって、性能の利点を与える。できるだけすぐにロード・データを戻すことは、従属する命令の実行を可能にする。
【００３４】
本発明とその利点を、詳細に説明したが、種々の変更，置換，変形を、本発明の趣旨と範囲から逸脱することなしに行うことができることが、理解されるであろう。
【００３５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３６】
（１）プロセッサにおいてロード命令を実行する方法であって、
実行のために、第１のロード命令を発行するステップと、
前記第１のロード命令によってアドレスされたデータが、１次キャッシュ内に無いことを判別するステップと、
システム・メモリから前記データを検索するステップと、
実行のために、前記データをアドレスする第２のロード命令を発行するステップと、
前記データを前記第１と第２のロード命令の両方に戻すステップとを含む方法。
【００３７】
（２）前記システム・メモリが、２次キャッシュを含む上記（１）記載の方法。
【００３８】
（３）前記判別するステップが、
前記第１のロード命令に対応するロード・ミス・キュー内に、エントリを割り振るステップをさらに含む上記（１）記載の方法。
【００３９】
（４）前記ロード・ミス・キュー内のエントリが、前記データのアドレスを含む上記（３）記載の方法。
【００４０】
（５）前記戻すステップが、
前記第２のロード命令のアドレスを、前記ロード・ミス・キュー内の前記データのアドレスと比較するステップをさらに含む上記（４）記載の方法。
【００４１】
（６）前記戻すステップが、
前記第２のロード命令を前記第１のロード命令とマージするステップをさらに含む上記（５）記載の方法。
【００４２】
（７）ロード／ストア・ユニットと、
第１のロード命令を前記ロード／ストア・ユニットに発行する命令ディスパッチ・ユニットとを備え、前記第１のロード命令はキャッシュ・ラインをアドレスし、
前記アドレスされたキャッシュ・ラインが、前記ロード／ストア・ユニットに結合されたデータ・キャッシュ内にあるか否かを判別する回路手段と、
前記アドレスされたキャッシュ・ラインが、前記ロード／ストア・ユニットに結合された前記データ・キャッシュ内に無いことが判別されると、前記第１のロード命令に対応するエントリをストアするロード・ミス・キューと、
前記データ・キャッシュからのダウンストリーム・メモリから、前記アドレスされたキャッシュ・ラインを要求する回路手段と、
前記ロード／ストア・ユニット内で実行するために受け取った第２のロード命令のキャッシュ・ライン・アドレスを、前記ロード・ミス・キュー内のエントリと比較する回路手段と、
前記第２のロード命令を、前記第１のロード命令に対応する前記ロード・ミス・キュー内のエントリとマージする回路手段と、
前記ダウンストリーム・メモリから受け取った前記アドレスされたキャッシュ・ラインを、第１のロード命令と関連づけられたレジスタに転送する第１の結果バスと、
前記ダウンストリーム・メモリから受け取った前記アドレスされたキャッシュ・ラインを、第２のロード命令と関連づけられたレジスタに転送する第２の結果バスとを備えるプロセッサ。
【００４３】
（８）前記第２のロード命令は、第２のロード命令を再発行する必要なしに、前記第１のロード命令と同時にサービスされる上記（７）記載のプロセッサ。
【００４４】
（９）前記第２のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュ内にストアされるのを待つ必要なしに、前記アドレスされたキャッシュ・ラインを受け取る上記（７）記載のプロセッサ。
【００４５】
（１０）前記第２のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性検査されるのを待つ必要なしに、前記アドレスされたキャッシュ・ラインを受け取る上記（９）記載のプロセッサ。
【００４６】
（１１）プロセッサにおいてロード命令を実行するシステムであって、
実行のために第１のロード命令をロード／ストア・ユニットに発行する回路手段と、
前記第１のロード命令によってアドレスされたキャッシュ・ラインが、前記ロード／ストア・ユニットに結合された１次キャッシュ内に無いことを判別する回路手段と、
前記プロセッサに結合された２次キャッシュから前記キャッシュ・ラインを検索する回路手段と、
実行のために、前記キャッシュ・ラインをアドレスする第２のロード命令を前記ロード／ストア・ユニットに発行する回路手段と、
前記キャッシュ・ラインを前記第１と第２のロード命令の両方に戻す回路手段とを含むシステム。
【００４７】
（１２）前記第２のロード命令は、前記キャッシュ・ラインが、前記１次キャッシュ内にストアされるのを待つ必要なしに、前記キャッシュ・ラインを受け取る上記（１１）記載のシステム。
【００４８】
（１３）前記第２のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性を検査されるのを待つ必要なしに、前記キャッシュ・ラインを受け取る上記（１１）記載のシステム。
【００４９】
（１４）前記判別する回路手段が、
前記第１のロード命令に対応するロード・ミス・キュー内に、エントリを割り振る回路手段をさらに備える上記（１２）記載のシステム。
【００５０】
（１５）前記ロード・ミス・キュー内のエントリが、前記キャッシュ・ラインのアドレスを含む上記（１４）記載のシステム。
【００５１】
（１６）前記戻す回路手段が、
前記第２のロード命令のアドレスを、前記ロード・ミス・キュー内の前記キャッシュ・ラインのアドレスと比較する回路手段をさらに備える上記（１５）記載のシステム。
【００５２】
（１７）前記戻す回路手段が、
前記第２のロード命令を、前記第１のロード命令に対応する前記ロード・ミス・キュー内のエントリとマージする回路手段をさらに備える上記（１６）記載のシステム。
【００５３】
（１８）前記戻す回路手段が、
前記２次キャッシュから受け取ったキャッシュ・ラインを、第１のロード命令に関連づけられた第１のレジスタに転送する第１の結果バスと、
前記２次キャッシュから受け取ったキャッシュ・ラインを、第２のロード命令に関連づけられた第２のレジスタに転送する第２の結果バスとをさらに備える上記（１７）記載のシステム。
【００５４】
（１９）前記第１と第２の結果バスは、前記キャッシュ・ラインを、前記第１と第２のレジスタに並列に転送する上記（１８）記載のシステム。
【図面の簡単な説明】
【図１】本発明に従って構成されたデータ処理システムを示す図である。
【図２】本発明に従って構成されたロード／ストア・ユニットを示す図である。
【図３】本発明に従って構成されたロード／ストア・ユニットを示す図である。
【図４】本発明による処理を示す流れ図である。
【符号の説明】
２０１  ロード／ストア（Ｌ／Ｓ）ユニット
２０２〜２０５  レジスタ
２０６，２０７  ６４ビット加算器
２０８，２０９  レジスタ
２１０，２１１  タグ・アレイ
２１２，２１３  レジスタ
２１４，２１５  有効実アドレス変換器（ＥＲＡＴ）アレイ
２１６，２１７  レジスタ
２１８  ロード・ミス・キュー（ＬＭＱ）
２１９  特別目的レジスタ（ＳＰＲ）・ブロック
２２０  ロード・リオーダー・キュー（ＬＲＱ）
２２１  ストア・データ・キュー（ＳＤＱ）
２２２  ストア・リオーダー・キュー（ＳＲＱ）
２２３，２２５〜２２９，２３７〜２３８  レジスタ
２２４，２３０  回転ブロック
２３１  フォーマット・ブロック
２３３  ＲＡタグ・アレイ
２３５  レジスタ
２３６  Ｌ１キャッシュ
２３９  回転ブロック
２４０，２４１  フォーマッタ
２７０  命令キャッシュ
２７１  命令ディスパッチ・ユニット
２７２  命令キュー
２７３，２７４  タグ
２８０，２８１  結果バス
【図１】
0004045062.tif 000002
【図２】
0004045062.tif 000003
【図３】
0004045062.tif 000004
【図４】
0004045062.tif 000005