(57)【要約】【課題】  多数の非同期式パイプラインのための、データ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置が提供される。【解決手段】  この装置は、ロード・タグ（ＬＴＡＧ）識別子をロード命令と関連付け、ロード・ターゲット・バッファのロード・テーブル・データ構造への索引として多数のパイプラインにわたるロード命令を常時監視する。ロード・テーブルは、キャッシュ・ヒット／ミスを管理し、Ｌ２キャッシュからのデータの再生を助けるために用いられる。ロード命令が発行され、ロード・テーブル内の対応するエントリを「ミス」とマーク付けされたものとして見るとき、ロード命令の発行の効果が取り消され、ロード命令は、要求されるデータが再生された際に命令パイプラインに対して将来再発行するために、ロード・テーブルに格納される。【選択図】      図２
2007207238.tif 000002
【特許請求の範囲】
【請求項１】
命令パイプライン及びロード／ストア・パイプラインを有するデータ処理装置において、ロード命令を処理する方法であって、
ロード命令を受け取るステップと、
前記ロード命令をロード・タグ（ＬＴＡＧ）と関連付けるステップと、
前記ロード／ストア・パイプラインに対して前記ロード命令及び前記ＬＴＡＧを発行するステップと、
第１のキャッシュから前記ロード命令に対応するデータを検索しようと試みるステップと、
前記ロード命令に対応する前記データを検索しようとする前記試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかを判断するステップと、
前記ＬＴＡＧ及び前記ロード命令に対応するデータを検索しようとする前記試みの結果に基づいて、ロード・ターゲット・バッファのロード・テーブル・データ構造内にエントリを生成するステップと
を含む方法。
【請求項２】
前記ロード・テーブル・データ構造内にエントリを生成する前記ステップは、
前記ロード命令と関連付けられた前記ＬＴＡＧによって索引付けされたエントリを前記ロード・テーブル内に生成するステップと、
前記ロード命令に対応する前記データを検索しようとする前記試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかの判断結果に基づいて、前記エントリをキャッシュ・ヒット又はキャッシュ・ミスとマーク付けするステップと
を含む、請求項１に記載の方法。
【請求項３】
前記判断結果がキャッシュ・ミスである場合、前記方法は、
メモリ・サブシステムから前記ロード命令に対応する前記データを再生するステップと、
前記再生されたデータを前記ロード・テーブル内の前記エントリに格納するステップと
をさらに含む、請求項２に記載の方法。
【請求項４】
メモリ・サブシステムから前記ロード命令に対応する前記データを再生する前記ステップは、
ロード・ミス・キュー・ユニットにおいて、前記ロード命令と関連付けられた前記ＬＴＡＧを識別するデータ構造と、再生される前記データに対応する該ロード命令と関連付けられたロード・アドレスとを維持するステップと、
前記メモリ・サブシステムから前記データを再生する前記ステップに応答して、前記ロード・ミス・キュー・ユニット内の前記データ構造に基づいて、前記再生されたデータを前記ロード命令と関連付けるステップであって、該ロード・ミス・キュー・ユニット内の該データ構造において識別された該ロード命令の前記ＬＴＡＧに基づいて、該再生されたデータが前記ロード・テーブル内の前記エントリに格納される、ステップと
を含む、請求項３に記載の方法。
【請求項５】
前記再生されたデータが有効である場合に限り、前記ロード・テーブル内の前記エントリをキャッシュ・ヒットとマーク付けするステップと、
前記再生されたデータが無効である場合、前記ロード・テーブル内の前記エントリをキャッシュ・ミスとマーク付けするステップと
をさらに含む、請求項３に記載の方法。
【請求項６】
前記命令パイプラインに対して前記ロード命令及び前記ＬＴＡＧを発行するステップと、
前記ロード・ターゲット・バッファに対して前記命令パイプラインからの前記ロード命令を発行するステップと、
前記発行されたロード命令と関連付けられた前記ＬＴＡＧに基づいて、該発行されたロード命令に対応する前記ロード・テーブル内のエントリを識別するステップと、
前記ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされるか又はキャッシュ・ヒットとマーク付けされるかに基づいて、前記ロード命令に対応する前記データをレジスタ・ファイルに格納するかどうかを判断するステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
前記識別されたエントリがキャッシュ・ヒットとマーク付けされると判断される場合、前記ロード命令に対応する前記データを前記レジスタ・ファイルに格納するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記ロード命令に対応する前記データを前記レジスタ・ファイルに格納した後、前記ＬＴＡＧ及び前記ロード・テーブル内の前記エントリの割り当てを解除するステップをさらに含む、請求項７に記載の方法。
【請求項９】
前記ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、前記命令パイプラインからの前記ロード命令の前記発行のあらゆる効果を取り消すステップと、
前記ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、該ロード・テーブル内の該識別されたエントリを、保留状態を有するものとして更新するステップと
をさらに含む、請求項６に記載の方法。
【請求項１０】
前記ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、前記ロード命令の表現を、該ロード・テーブル内の該識別されたエントリに格納するステップと、
メモリ・サブシステムから再生された前記ロード命令に対応する前記データに応答して、前記識別されたエントリ内の該ロード命令の前記表現に基づいて、前記命令パイプラインに対して該ロード命令を再発行するステップと
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記命令パイプライン及び前記ロード／ストア・パイプラインが互いに対して非同期である、請求項１に記載の方法。
【請求項１２】
前記データ処理装置がプロセッサである、請求項１に記載の方法。
【請求項１３】
前記データ処理装置は、マルチプロセッサ異種データ処理システムの一部である、請求項１に記載の方法。
【請求項１４】
前記マルチプロセッサ異種データ処理システムは、制御プロセッサと１つ又は複数のコプロセッサとを備え、前記データ処理装置は、前記制御プロセッサ又はコプロセッサの１つ又は複数である、請求項１３に記載の方法。
【請求項１５】
発行ユニットと、
前記発行ユニットに連結された命令パイプラインと、
前記発行ユニットに連結されたロード／ストア・パイプラインと、
前記命令パイプライン及び前記ロード／ストア・パイプラインに連結されたロード・ターゲット・バッファと
を備え、
前記発行ユニットは、ロード命令を受け取り、前記ロード命令をロード・タグ（ＬＴＡＧ）と関連付け、前記ロード／ストア・パイプラインに対して該ロード命令及び前記ＬＴＡＧを発行し、
前記ロード／ストア・パイプラインは、第１レベルのキャッシュから前記ロード命令に対応するデータを検索しようと試み、かつ、該ロード命令に対応する前記データを検索しようとする前記試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかを判断し、
前記ロード・ターゲット・バッファは、前記ＬＴＡＧ及び前記ロード命令に対応するデータを検索しようとする前記試みの結果に基づいて、該ロード・ターゲット・バッファのロード・テーブル・データ構造内にエントリを生成する、装置。
【請求項１６】
前記ロード・ターゲット・バッファは、
前記ロード命令と関連付けられた前記ＬＴＡＧによって索引付けされたエントリを前記ロード・テーブル内に生成し、
前記ロード命令に対応する前記データを検索しようとする前記試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかの判断結果に基づいて、前記エントリをキャッシュ・ヒット又はキャッシュ・ミスとマーク付けすること
によって、前記ロード・テーブル・データ構造内にエントリを生成する、請求項１５に記載の装置。
【請求項１７】
前記ロード／ストア・パイプラインに連結されたロード・ミス・キュー・ユニットをさらに備え、前記判断結果がキャッシュ・ミスである場合、前記ロード・ミス・キュー・ユニットは、第２レベルのキャッシュから前記ロード命令に対応する前記データを再生し、かつ、前記エントリ内の前記再生されたデータを前記ロード・ターゲット・バッファの前記ロード・テーブル内の前記エントリに格納する、請求項１６に記載の装置。
【請求項１８】
前記ロード・ミス・キュー・ユニットは、
前記ロード・ミス・キュー・ユニットにおいて、前記ロード命令と関連付けられた前記ＬＴＡＧを識別するデータ構造と、再生される前記データに対応する該ロード命令と関連付けられたロード・アドレスとを維持し、
前記第２レベルのキャッシュからの前記データの前記再生に応答して、前記ロード・ミス・キュー・ユニット内の前記データ構造に基づいて、前記再生されたデータを前記ロード命令と関連付けるステップであって、該ロード・ミス・キュー・ユニット内の該データ構造において識別された該ロード命令の前記ＬＴＡＧに基づいて、該再生されたデータが前記ロード・テーブル内の前記エントリに格納されること
によって、前記第２レベルのキャッシュから前記ロード命令に対応する前記データを再生する、請求項１７に記載の装置。
【請求項１９】
前記ロード・ターゲット・バッファは、前記再生されたデータが有効である場合に限り、前記ロード・テーブル内の前記エントリをキャッシュ・ヒットとマーク付けし、該再生されたデータが無効である場合、該ロード・テーブル内の該エントリをキャッシュ・ミスとマーク付けする、請求項１７に記載の装置。
【請求項２０】
前記発行ユニットは、前記命令パイプラインに対して前記ロード命令及び前記ＬＴＡＧを発行し、
前記命令パイプラインは、前記ロード・ターゲット・バッファに対して前記ロード命令を発行し、
前記ロード・ターゲット・バッファは、前記発行されたロード命令と関連付けられた前記ＬＴＡＧに基づいて、該発行されたロード命令に対応する前記ロード・テーブル内のエントリを識別し、かつ、該ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされるか又はキャッシュ・ヒットとマーク付けされるかに基づいて、該ロード命令に対応する前記データをレジスタ・ファイルに格納するかどうかを判断する、請求項１５に記載の装置。
【請求項２１】
前記ロード・ターゲット・バッファは、前記識別されたエントリがキャッシュ・ヒットとマーク付けされた場合、前記ロード命令に対応する前記データを前記レジスタ・ファイルに格納する、請求項２０に記載の装置。
【請求項２２】
前記ロード命令に対応する前記データを前記レジスタ・ファイルに格納した後、前記ロード・ターゲット・バッファは、前記ＬＴＡＧ及び前記ロード・テーブル内の前記エントリの割り当て解除を開始する、請求項２１に記載の装置。
【請求項２３】
前記ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、前記命令パイプラインからの前記ロード命令の前記発行のあらゆる効果の取り消しを開始し、該ロード・テーブル内の該識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、該ロード・テーブル内の該識別されたエントリを、保留状態を有するものとして更新する、請求項２０に記載の装置。
【請求項２４】
前記ロード・テーブル内の前記識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、前記ロード・ターゲット・バッファは、前記ロード命令の表現を、該ロード・テーブル内の該識別されたエントリに格納し、メモリ・サブシステムから再生された前記ロード命令に対応する前記データに応答して、該識別されたエントリ内の該ロード命令の前記表現に基づいて、前記命令パイプラインに対して該ロード命令を再発行する、請求項２３に記載の装置。
【請求項２５】
前記命令パイプライン及び前記ロード／ストア・パイプラインが互いに対して非同期である、請求項１５に記載の装置。
【請求項２６】
前記装置は、マルチプロセッサ異種データ処理システムの一部である、請求項１５に記載の装置。
【請求項２７】
前記マルチプロセッサ異種データ処理システムは、制御プロセッサと１つ又は複数のコプロセッサとを備え、前記装置は、前記制御プロセッサ又はコプロセッサの１つ又は複数である、請求項２６に記載の装置。
【請求項２８】
請求項１−１４のいずれか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、改善されたデータ処理システムに関する。より具体的には、本発明は、非同期式パイプラインのための、データ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法に向けられる。
【背景技術】
【０００２】
最新のコンピューティング・システムは、キャッシュを利用してデータ転送及び命令実行の高速化を助ける。これらの一時的キャッシュはステージング・エリアとして働き、これらのコンテンツが絶えず変化している。メモリ・キャッシュは、メインメモリとマイクロプロセッサ・チップのプロセッサを架橋するメモリバンクである。メモリ・キャッシュは、メインメモリより高速であり、より高速に命令を実行し、データを読み書きすることを可能にする。
【０００３】
命令及びデータは、ルック・アヘッド・アルゴリズムを用いて、一括してメインメモリからキャッシュに転送される。ルーチン内の命令がより連続的に実行される程、又はデータがより連続的に読み書きされる程、次に必要とされる品目が既にキャッシュ内に存在し、より良い性能を引き起こす可能性が大きくなる。
【０００４】
レベル１（Ｌ１）のキャッシュは、マイクロプロセッサ・チップに内蔵されたメモリバンクである。「一次キャッシュ」としても知られるＬ１キャッシュは、プロセッサに最も近いメモリである。レベル２のキャッシュ（Ｌ２）は、Ｌ１キャッシュを供給する二次ステージング・エリアである。Ｌ２キャッシュのサイズ増大は、幾つかのアプリケーションを高速化し得るが、他のアプリケーションには影響がない。例えば、Ｌ２キャッシュは、マイクロプロセッサ・チップに内蔵してもよく、マルチチップ・パッケージ・モジュール内の別個のチップ上に常駐してもよく、或いはマザーボード上のチップの別個のバンクとしてもよい。キャッシュは、典型的には、静的ＲＡＭ（ＳＲＡＭ）であり、メインメモリは、一般に、何らかの種類の動的ＲＡＭ（ＤＲＡＭ）である。
【０００５】
データ及び命令のキャッシングに加えて、多くの現在のコンピューティング・システムは、同時処理又は並列処理を行うためのパイプラインを利用する。全ての段階のパイプ処理を同時に実行する状態でデータ及び／又は命令を概念パイプ内に入れることによって、演算がオーバーラップする。例えば、１つの命令が実行される間、コンピュータは、次の命令を復号している。ベクトル・プロセッサにおいては、浮動小数点演算における幾つかのステップを同時に処理することができる。
【０００６】
マイクロプロセッサ及びパイプラインは、イン・オーダ式又はアウト・オブ・オーダ式のいずれにしてもよい。イン・オーダ式マイクロプロセッサ又はパイプラインは、命令及びデータを、これらがディスパッチされる順番で処理する。アウト・オブ・オーダ式マイクロプロセッサ又はパイプラインは、命令及びデータを、これらがディスパッチされる順番とは異なる順番で処理することができる。アウト・オブ・オーダ実行アーキテクチャは、書き込まれ、特定の順番で実行されるようにコンパイルされたコードを取得し、可能であれば命令のシーケンスのスケジュールを変更して、プロセッサ・リソースを最大限に利用し、それらを実行し、再び元の順番に配置し、結果をメモリに完全に書き込むことができるようにする。ユーザには、順序付けられた命令の連続的ストリームがプロセッサに入り、全く同じく順序付けられた計算結果の連続的ストリームが現れたように見える。プロセッサだけが、プログラムの命令が、実際にどのような順番で実行されたかを知っている。
【０００７】
例えば、パイプラインにおけるロード命令の実行に応答して、Ｌ１データ・キャッシュ・ミスに遭遇するとき、イン・オーダ式マイクロプロセッサが複雑になる。イン・オーダ式マイクロプロセッサは、処理される命令及びデータが順序正しいことを必要とするので、大部分のイン・オーダ式マイクロプロセッサは、ミスしたロードより新しい命令を直ちにフラッシュする。つまり、これらの命令がミスしたロード命令に依存しているか、さもなければミスしたロード命令と関連付けられたデータを修正する可能性があるとみなされるので、ミスしたロード命令後にパイプライン内に置かれたパイプライン内の如何なる命令も、パイプラインによって実行されない。
【０００８】
代替的に、幾つかのイン・オーダ式マイクロプロセッサは、ミスしたロード命令への依存に遭遇するまで、パイプライン内の命令及びデータのフラッシュを待つ。後で再び実行しなければならない古い未処理の命令すなわちミスしたロード命令があったとしても、ミスしたロード命令より新しい非依存命令の実行を可能にするので、この手法は、より優れている。データがＬ１データ・キャッシュ内に存在するとき、ミスしたロード命令は、事実上、プログラム・フローの残りに対してアウト・オブ・オーダ方式で再発行しなければならないので、この手法は、イン・オーダ式プロセッサにおいてアウト・オブ・オーダ方式の動作を引き起こす。
【０００９】
【特許文献１】米国特許出願第１１／１８４，３４９号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ロード命令が通って進まなければならない多数のパイプラインがあり、かつ、パイプラインが互いに非同期であるとき、さらなる複雑さが生じる。アドレス生成及びキャッシュ・アクセスが、第１のパイプラインによって行われ、設計されたレジスタへのデータの配置が、第１のパイプラインと非同期である第２のパイプラインによって行われるとき、こうしたシナリオが存在し得る。非同期式パイプラインの１つにおいてロード命令をフラッシュすることができる、時として非常に新しいものである例外が存在するとき、さらなる複雑さが生じる。
【課題を解決するための手段】
【００１１】
上記を考慮して、マイクロプロセッサにおいてＬ１データ・キャッシュ・ミスを処理するための改善された機構を有することが有利である。多数の非同期式パイプラインを有するマイクロプロセッサにおいてＬ１データ・キャッシュ・ミスを処理するための改善された機構を有することはさらに有利である。さらに、非同期式パイプラインの各々における例外を適合させる、Ｌ１データ・キャッシュ・ミスを処理するための改善された機構を有することは有利である。本発明の例証としての実施形態は、こうした改善された機構を提供するものである。
【００１２】
例証としての実施形態の場合、他のパイプラインに対して非同期である各々のパイプラインのために、マイクロプロセッサ内にロード・テーブル・データ構造及びロード・ターゲット・バッファが設けられる。ロード・ターゲット・バッファは、ロード・テーブル・データ構造と、該ロード・テーブル・データ構造から判断されるロード命令の現在の状態に基づいて、パイプラインによって発行されたロード命令の処理を制御するための状態機械とを含む。
【００１３】
２つ又はそれ以上の非同期式パイプラインに送られるロード命令の場合、例証としての実施形態の機構は、ロード・タグ（ＬＴＡＧ）識別子をロード命令と関連付ける。このＬＴＡＧは、多数のパイプラインにわたるロード命令の各々を常時監視するために用いられ、このＬＴＡＧを用いて、ロード・テーブル・データ構造への索引付けをし、ロード・テーブル・エントリを検索する。
【００１４】
ロード命令の通常の作動において、ロード命令と関連付けられたデータは、第１のパイプラインを用いてＬ１データ・キャッシュにおいて容易に利用可能であり、Ｌ１データ・キャッシュから容易に検索される。検索されたデータは、対応するロード命令のＬＴＡＧによって索引付けされたエントリにおけるロード・ターゲット・バッファのロード・テーブル・データ構造内に置かれる。レジスタ・ファイルに書き込まれる前、ロード・ターゲット・バッファは、本質的に、ロード・データのためのリネーム・レジスタとして働く。対応するロード・テーブルは、「ヒット」とマーク付けされ、第１のパイプラインの現在の使用のためにデータの準備ができており、データが有効であることを示す。第２のパイプラインから発行する準備が同じ対応するロード命令にできたとき、そのＬＴＡＧを用いて、ロード・ターゲット・バッファのロード・テーブル内に索引付けをし、正しいデータを検索してレジスタ・ファイル内にロードする。次に、将来ロード命令が使用するために、ＬＴＡＧの割り当てが解除され、ロード・テーブル内の対応するエントリが、割り当て解除又は「ｄｅａｌｌｏｃ．」とマーク付けされる。
【００１５】
ロード／ストア・パイプラインにおいてロード命令がＬ１データ・キャッシュを「ミスする」とき、すなわち、ロード・ターゲット・バッファ内に置くために、通常時にデータが容易に使用可能でないとき、ＬＴＡＧによって索引付けされたロード・テーブル内の対応するエントリが、「ミス」とマーク付けされる。ロード・ミス・キューにキャッシュ「ミス」が通知され、データがＬ２キャッシュ又は他のメモリ・サブシステムから再生されるのを待つ。データがＬ２キャッシュ又は他のメモリ・サブシステムから戻ると、データはＬ１キャッシュ内に置かれ、ロード命令に対応するＬＴＡＧと共にロード・ターゲット・バッファに送られる。このことにより、ロード・データが、任意の順番で、すなわち必ずしもデータ要求がＬ２キャッシュ又は他のメモリ・サブシステムに送られたときと同じではない順番で、Ｌ２キャッシュ又は他のメモリ・サブシステムから再生することが可能になる。次に、再生されたデータが有効である場合、対応するロード・テーブル・エントリが、「ヒット」とマーク付けされる。
【００１６】
この時点で、命令パイプライン内の対応するロードは、命令パイプライン内のどこにあってもよい。ロードは、依然として命令パイプライン内にあってもよく、又は既に発行し、ロード・テーブルにアクセスしようとしてもよい。前者の場合には、再生操作が終了すると、ロード命令が命令パイプラインから発行される前に、対応するロード・テーブル・エントリが「ミス」から「ヒット」に変えられる。ロード命令の観点から、ミスは決して引き起こされず、ロード命令は、通常の方法で発行され、ロード命令についてのデータがレジスタ・ファイル内にロードされる。
【００１７】
ロード命令が命令パイプラインから発行され、ロード・テーブル内の対応するエントリを「ミス」として見るとき、ロード命令の発行の効果が取り消され、ロード命令は、命令パイプラインに対する将来の再発行のためにロード・テーブル内に保存される。ここでは、ロード・データが利用可能になるまで、ロード・テーブルがロード・ミス・キュー・エントリとして有効に働く。再生操作が終了すると、ロード・テーブル内の対応するエントリは「ヒット」とマーク付けされ、ロード命令が命令パイプラインに対して発行され、通常のように実行される。
【００１８】
更に別の例証としての実施形態において、例外のためにロード命令が無効化されたかどうかを判断するための機構が、ロード・テーブル・エントリに与えられる。さらに、遅延例外の処理を容易にするために、ロード命令の発行とＬＴＡＧ及びロード・テーブル・エントリの割り当て解除との間に付加的な中間状態が与えられる。
【００１９】
１つの例証としての実施形態において、命令パイプライン及びロード／ストア・パイプラインを有するデータ処理装置において、ロード命令を処理する方法が提供される。この方法は、ロード命令を受け取るステップと、ロード命令をロード・タグ（ＬＴＡＧ）と関連付けるステップと、ロード／ストア・パイプラインに対してロード命令及びＬＴＡＧを発行するステップと、第１のキャッシュからロード命令に対応するデータを検索しようと試みるステップとを含むことができる。ロード命令に対応するデータを検索しようとする試みが、キャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかについての判断を行うことができる。ＬＴＡＧ及びロード命令に対応するデータを検索しようと試みた結果に基づいて、ロード・ターゲット・バッファのロード・テーブル・データ構造内にエントリを生成することができる。
【００２０】
ロード・テーブル・データ構造内にエントリを生成するステップは、ロード命令と関連付けられたＬＴＡＧによって索引付けされたエントリをロード・テーブル内に生成するステップと、ロード命令に対応するデータを検索しようとする試みが、キャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかの判断結果に基づいて、エントリをキャッシュ・ヒット又はキャッシュ・ミスとマーク付けるステップとを含むことができる。判断結果がキャッシュ・ミスである場合、この方法は、メモリ・サブシステムからロード命令に対応するデータを再生するステップと、再生されたデータをロード・テーブル内のエントリに格納するステップとをさらに含むことができる。
【００２１】
メモリ・サブシステムからロード命令に対応するデータを再生するステップは、ロード・ミス・キュー・ユニットにおいて、ロード命令と関連付けられたＬＴＡＧを識別するデータ構造と、再生されるデータに対応するロード命令と関連付けられたロード・アドレスとを維持するステップを含むことができる。再生するステップは、メモリ・サブシステムからデータを再生するステップに応答して、ロード・ミス・キュー・ユニット内のデータ構造に基づいて再生されたデータをロード命令と関連付けるステップをさらに含むことができる。ロード・ミス・キュー・ユニット内のデータ構造において識別されたロード命令のＬＴＡＧに基づいて、再生されたデータをロード・テーブル内のエントリに格納することができる。
【００２２】
この方法は、再生されたデータが有効である場合に限り、ロード・テーブル内のエントリをマーク付けするステップをさらに含むことができる。代替的に、再生されたデータが無効である場合、ロード・テーブル内のエントリをキャッシュ・ミスとマーク付けすることができる。
【００２３】
上記に加えて、この方法は、命令パイプラインに対してロード命令及びＬＴＡＧを発行するステップと、ロード・ターゲット・バッファに対して命令パイプラインからのロード命令を発行するステップとをさらに含むことができる。発行されたロード命令に関連付けられたＬＴＡＧに基づいて、発行されたロード命令に対応するロード・テーブル内のエントリを識別することができる。ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされるか又はキャッシュ・ヒットとマーク付けされるかに基づいて、ロード命令に対応するデータをレジスタ・ファイルに格納するかどうかについての判断を行うことができる。
【００２４】
識別されたエントリがキャッシュ・ヒットとマーク付けされると判断される場合、ロード命令に対応するデータをレジスタ・ファイルに格納することができる。ロード命令に対応するデータをレジスタ・ファイルに格納した後、ＬＴＡＧ及びロード・テーブル内のエントリの割り当てを解除することができる。
【００２５】
ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、命令パイプラインからのロード命令の発行のあらゆる効果を取り消すことができる。ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、ロード・テーブル内の識別されたエントリを、保留状態を有するものとして更新することができる。
【００２６】
ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされると判断される場合、ロード命令の表現を、ロード・テーブル内の識別されたエントリに格納することができる。メモリ・サブシステムから再生されたロード命令に対応するデータに応答して、識別されたエントリ内のロード命令の表現に基づいて命令パイプラインに対してロード命令を再発行することができる。
【００２７】
命令パイプライン及びロード／ストア・パイプラインが互いに対して非同期であってもよい。データ処理装置は、プロセッサとすることができ、マルチプロセッサ異種データ処理システムの一部とすることもできる。マルチプロセッサ異種データ処理システムは、制御プロセッサと１つ又は複数のコプロセッサとを含むことができる。データ処理装置は、マルチプロセッサ異種データ処理システムにおける制御プロセッサ又はコプロセッサの１つ又は複数とすることができる。
【００２８】
別の例証としての実施形態において、発行ユニットと、発行ユニットに連結された命令パイプラインと、発行ユニットに連結されたロード／ストア・パイプラインと、命令パイプライン及びロード／ストア・パイプラインに連結されたロード・ターゲット・バッファとを含む装置が提供される。発行ユニットは、ロード命令を受け取り、ロード命令をロード・タグ（ＬＴＡＧ）と関連付け、ロード／ストア・パイプラインに対してロード命令及びＬＴＡＧを発行することができる。ロード／ストア・パイプラインは、第１レベルのキャッシュからロード命令に対応するデータを検索しようと試み、ロード命令に対応するデータを検索しようとする試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかを判断することができる。ロード・ターゲット・バッファは、ＬＴＡＧ及びロード命令に対応するデータを検索しようとする試みた結果に基づいて、ロード・ターゲット・バッファのロード・テーブル・データ構造内にエントリを生成することができる。
【００２９】
ロード・ターゲット・バッファは、ロード命令と関連付けられたＬＴＡＧによって索引付けされたエントリをロード・テーブル内に生成することができる。ロード・ターゲット・バッファは、ロード命令に対応するデータを検索しようとする試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかの判断結果に基づいて、エントリをキャッシュ・ヒット又はキャッシュ・ミスとマーク付けすることができる。
【００３０】
装置は、ロード／ストア・パイプラインに連結されたロード・ミス・キュー・ユニットをさらに含むことができる。ロード命令に対応するデータを検索しようとする試みがキャッシュ・ヒットを引き起こすか又はキャッシュ・ミスを引き起こすかの判断結果がキャッシュ・ミスを示す場合、ロード・ミス・キュー。ユニットは、第２レベルのキャッシュからロード命令に対応するデータを再生し、エントリ内の再生されたデータをロード・ターゲット・バッファのロード・テーブルに格納することができる。ロード・ミス・キュー・ユニットは、ロード・ミス・キュー・ユニットにおいて、ロード命令と関連付けられたＬＴＡＧを識別するデータ構造と、再生されるデータに対応するロード命令と関連付けられたロード・アドレスとを維持することによって、第２レベルのキャッシュからロード命令に対応するデータを再生することができる。ロード・ミス・キュー・ユニットは、第２レベルのキャッシュからデータを再生するステップに応答して、ロード・ミス・キュー・ユニット内のデータ構造に基づいて、再生されたデータをロード命令と関連付けることができる。再生されたデータは、ロード・ミス・キュー・ユニット内のデータ構造において識別されたロード命令の記ＬＴＡＧに基づいて、ロード・テーブル内のエントリに格納することができる。
【００３１】
ロード・ターゲット・バッファは、再生されたデータが有効である場合に限り、ロード・テーブル内のエントリをキャッシュ・ヒットとマーク付けることができる。ロード・ターゲット・バッファは、再生されたデータが無効である場合、ロード・テーブル内のエントリをキャッシュ・ミスとマーク付けすることができる。
【００３２】
発行ユニットは、命令パイプラインに対してロード命令及びＬＴＡＧを発行することができ、命令パイプラインは、ロード・ターゲット・バッファに対してロード命令を発行することができる。ロード・ターゲット・バッファは、発行されたロード命令と関連付けられたＬＴＡＧに基づいて、発行されたロード命令に対応するロード・テーブル内のエントリを識別することができる。ロード・ターゲット・バッファは、ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされるか又はキャッシュ・ヒットとマーク付けされるかに基づいて、ロード命令に対応するデータをレジスタ・ファイルに格納するかどうかを判断することができる。
【００３３】
ロード・ターゲット・バッファは、識別されたエントリがキャッシュ・ヒットとマーク付けされた場合、ロード命令に対応するデータをレジスタ・ファイルに格納することができる。ロード命令に対応するデータをレジスタ・ファイルに格納した後、ロード・ターゲット・バッファは、ＬＴＡＧ及びロード・テーブル内のエントリの割り当て解除を開始することができる。ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされると判断された場合、ロード・ターゲット・バッファは、命令パイプラインからのロード命令の発行のあらゆる効果を取り消すステップをさらに開始することができる。ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされると判断された場合、ロード・ターゲット・バッファはまた、ロード・テーブル内の識別されたエントリを、保留状態を有するものとして更新することもできる。
【００３４】
さらに、ロード・テーブル内の識別されたエントリがキャッシュ・ミスとマーク付けされると判断された場合、ロード・ターゲット・バッファは、ロード命令の表現をロード・テーブル内の識別されたエントリに格納することができる。さらに、ロード・ターゲット・バッファは、メモリ・サブシステムから再生されたロード命令に対応するデータに応答して、識別されたエントリ内のロード命令の表現に基づいて、命令パイプラインに対してロード命令を再発行することができる。
【００３５】
装置は、マルチプロセッサ異種データ処理システムの一部とすることができる。マルチプロセッサ異種データ処理システムは、制御プロセッサと１つ又は複数のコプロセッサとを含むことができる。装置は、制御プロセッサ又はコプロセッサの１つ又は複数とすることができる。
【００３６】
更に別の例証としての実施形態において、コンピュータ可読プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラムが提供される。コンピューティング装置上で実行されるとき、コンピュータ可読プログラムは、コンピューティング装置に、上述の方法の種々の作動を実行させることができる。
【００３７】
本発明のこれらの及び他の特徴並びに利点が、本発明の例証としての実施形態の以下の詳細な説明に照らして説明され、或いは当業者には明らかになるであろう。
【発明を実施するための最良の形態】
【００３８】
本発明の新規な特徴と考えられる特性が、添付の特許請求の範囲に述べられる。しかしながら、添付の図面と併せて読まれるとき、例証となる実施形態の次の詳細な説明を参照することによって、本発明自体、並びに、その好ましい態様、さらなる目的及び利点が最も良く理解されるであろう。
【００３９】
例証としての実施形態が、非同期式パイプラインのための、データ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法を提供する。データ・キャッシュ及び２つ又はそれ以上の非同期式パイプラインを有するいずれかのマイクロプロセッサにおいて、例証となる実施形態の機構を実施することができる。以下に、図１が、例証となる実施形態の例示的な態様を実施することができるデータ処理システムの一例を提供する。図１は、一例として提供されるだけであり、本発明を実施することができる特定のアーキテクチャに関する何らかの制限を述べる又は意味するように意図されるものではない。本発明の精神及び範囲から逸脱することなく、示されるアーキテクチャに対する多くの修正を行うことが可能である。
【００４０】
図１は、例証となる実施形態の例示的な態様を実施することができるデータ処理システムの例示的なブロック図である。図１に示される例示的なデータ処理システムは、セル・ブロードバンド・エンジン・アーキテクチャ（Ｃｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅ  ａｒｃｈｉｔｅｃｔｕｒｅ、ＣＢＥＡ）データ処理システムの一例である。次の説明を読むときに当業者には容易に明らかであるように、例証となる実施形態の説明においてＣＢＥＡが用いられるが、本発明がそのように制限されるものではない。
【００４１】
図１に示されるように、ＣＢＥＡ１００が、プロセッサ（ＰＰＵ）１１６並びにＬ１キャッシュ１１２及びＬ２キャッシュ１１４を有するｐｏｗｅｒ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ（ＰＰＥ）１１０と、各々がそれぞれのｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｕｎｉｔ（ＳＰＵ）１４０−１５４、メモリ・フロー制御１５５−１６２、ローカル・メモリ又はストア（ＬＳ）１６３−１７０、及び、例えば、ダイレクト・メモリ・アクセス（ＤＭＡ）、メモリ管理ユニット（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ、ＭＭＵ）及びバス・インターフェース・ユニットの組み合わせとすることができるバス・インターフェース・ユニット（ＢＩＵユニット）１８０−１９４を有する多数のｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ（ＳＰＵ）１２０−１３４とを含む。高帯域の内部ｅｌｅｍｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｂｕｓ（ＥＩＢ）１９６、バス・インターフェース・コントローラ（ｂｕｓ  ｉｎｔｅｒｆａｃｅ  ｃｏｎｔｒｏｌｌｅｒ、ＢＩＣ）１９７及びメモリ・インターフェース・コントローラ（ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ  ｃｏｎｔｒｏｌｌｅｒ、ＭＩＣ）１９８も設けられる。
【００４２】
ＣＢＥＡ１００は、単一のマイクロプロセッサ・チップ上に図１に示される要素の各々を設けることができるように、システム・オン・チップ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）とすることができる。さらに、ＣＢＥＡ１００は、ＳＰＵの各々がシステム内の他のＳＰＵの各々とは異なる命令を受け取ることができる異種の処理環境である。さらに、ＳＰＵのために設定された命令は、ＰＰＵのものとは異なり、例えば、ＰＰＵは縮小命令セット・コンピュータ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ、ＲＩＳＣ）ベースの命令を実行することができ、ＳＰＵはベクトル化された命令を実行する。
【００４３】
ＳＰＥ１２０−１３４は、ＥＩＢ１９６を介して、互いに且つＬ２キャッシュ１１４に連結される。さらに、ＳＰＥ１２０−１３４は、ＥＩＢ１９６を介して、ＭＩＣ１９８及びＢＩＣ１９７に連結される。ＭＩＣ１９８は、共有メモリ１９９への通信インターフェースを提供する。ＢＩＣ１９７は、ＣＢＥＡ１００と他の外部バス及び装置との間の通信インターフェースを提供する。
【００４４】
ＰＰＥ１１０は、デュアル・スレッドＰＰＥ１１０である。このデュアル・スレッドＰＰＥ１１０と８個のＳＰＥ１２０−１３４の組み合わせにより、ＣＢＥＡ１００が、１０個の同時スレッド及び１２８を超える未処理のメモリ要求を処理することが可能になる。ＰＰＥ１１０は、計算の作業負荷の大部分を処理する、他の８個のＳＰＥ１２０−１３４のためのコントローラとして働く。例えば、ＳＰＥ１２０−１３４がベクトル化された浮動小数点コード実行を行う間、ＰＰＥ１１０を用いて従来のオペレーティング・システムを実行することができる。
【００４５】
ＳＰＥ１２０−１３４は、ｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ（ＳＰＵ）１４０−１５４、メモリ・フロー制御ユニット１５５−１６２、ローカル・メモリ又はストア（ＬＳ）１６３−１７０及びインターフェース・ユニット１８０−１９４を含む。１つの例示的な実施形態において、ローカル・メモリ又はストア（ＬＳ）１６３−１７０は、２５６ＫＢの命令と、ＰＰＥ１１０に見え、且つ、ソフトウェアによって直接アドレス指定することができるデータ・メモリとを含む。
【００４６】
ＰＰＥ１１０は、小プログラム又はスレッドを用いてＳＰＥ１２０−１３４をロードし、ＳＰＥを鎖でつなぎ、複雑な演算における各ステップを処理することができる。例えば、ＣＢＥＡ１００を組み込むセットトップ・ボックスは、ＤＶＤ、ビデオ及び音声復号、並びにディスプレイを読み取るためのプログラムをロードすることができ、データは、最終的に出力ディスプレイ上に達するまで、ＳＰＥからＳＰＥに運ばれる。４ＧＨｚにおいて、各々のＳＰＥ１２０−１３４は、類似した性能レベルを有するＰＰＥ１１０を有した状態で、理論的に３２ＧＦＬＯＰＳの性能を与えることができる。
【００４７】
メモリ・フロー制御ユニット（ＭＦＣ）１５５−１６２は、システム及び他の要素の残りに対して、ＳＰＵのためのインターフェースとして働く。ＭＦＣ１５５−１６２は、データ転送、保護、及び主記憶装置と局所的記憶装置１６３−１７０との間の同期のための主機構を提供する。論理的には、プロセッサ内の各ＳＰＵのためのＭＦＣがある。幾つかの実施は、多数のＳＰＵ間で単一のＭＦＣのリソースを共有することができる。こうした場合、ＭＦＣのために定められた全ての機能及びコマンドが、各ＳＰＵのためのソフトウェアに対して独立しているように見える。ＭＦＣを共有する効果は、実装依存機能及びコマンドに制限されるものでない。
【００４８】
例証としての実施形態は、非同期式パイプラインのための、データ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための機構を提供する。例えば、図１に示されるアーキテクチャ内のＳＰＵ又はＰＰＵのいずれかにおいて、例証としての実施形態の機構を実施することができる。この機構は、各々の非同期式パイプラインのためのロード・テーブル・データ構造及びロード・ターゲット・バッファ・ユニットを含むことができる。このロード・テーブル・データ構造は、データ・キャッシュ・ミスをもたらしたロード命令のアウト・オブ・オーダ処理を制御するために用いられる。
【００４９】
図２は、例証としての実施形態の主要素の作動を示す例示的なブロック図である。ＳＰＵ及びＰＰＵの１つ又は複数を含む、図１に示されるプロセッサのいずれか又は全てに、図２に示される要素が存在することができる。したがって、図２に示される種々の要素は、例えば、集積回路チップ、システム・オン・チップ、マルチチップ・パッケージ等の一部として設けることができる。
【００５０】
図２に示されるように、例証としての実施形態の機構の主要素は、発行ユニット２１０と、データを、例えばＬ１データ・キャッシュのようなデータ・キャッシュからロードし、データをこれに格納するために用いられる第１のパイプライン２２０と、命令の実行のための第２のパイプライン２３０とを含む。さらに、ロード・テーブル・データ構造２５０を有するロード・ターゲット・バッファ（ＬＴＢ）２４０、ロード・ミス・キュー・ユニット２６０及びレジスタ・ファイル記憶装置２７０が設けられる。
【００５１】
例証としての実施形態の場合、発行ユニット２１０によって、２つの非同期式パイプライン２２０及び２３０に対してロード命令が発行される。発行ユニット２１０は、ロード・タグ（ＬＴＡＧ）識別子を生成し、これらを非同期式パイプライン２２０及び２３０にディスパッチするときに、ロード・タグ（ＬＴＡＧ）識別子をロード命令と関連付ける。このＬＴＡＧは、多数のパイプライン２２０及び２３０にわたって各ロード命令を常時監視するために用いられ、かつ、ロード・ターゲット・バッファ２４０のロード・テーブル・データ構造２５０内に索引付けし、対応するロード・テーブル・エントリを検索するために用いられる。
【００５２】
ロード命令の通常の作動のもとで、ロード命令と関連付けられたデータは、ロード／ストア・パイプライン２２０を用いて、Ｌ１データ・キャッシュ２８０において容易に使用可能であり、これから容易に検索される。対応するロード命令のＬＴＡＧによって索引付けされたエントリにおいて、検索されたデータは、ロード・ターゲット・バッファ２４０のロード・テーブル・データ構造２５０内に配置される。ロード・ターゲット・バッファ２４０は、レジスタ・ファイル記憶装置２７０内に書き込まれる前、本質的に、ロード・データのためのリネーム・レジスタとして働く。対応するロード・テーブル・エントリは、「ヒット」とマーク付けされ、データの準備ができ、第２のパイプライン２３０が直ちに使用するのにデータが有効であることを示す。第２のパイプライン２３０から、同じ対応するロード命令を発行する準備ができたとき、ロード・ターゲット・バッファ２４０のロード・テーブル２５０内に索引付けし、正しいデータを検索してレジスタ・ファイル記憶装置２７０内にロードするために、ＬＴＡＧが用いられる。次に、将来ロード命令を使用するためにＬＴＡＧの割当てを解除することができ、ロード・テーブル２５０内の対応するエントリが、「割当て解除」又は「ｄｅａｌｌｏｃ．」とマーク付けされる。
【００５３】
Ｌ１データ・キャッシュ２８０においてデータが容易に利用可能であるとき、この作動は寧ろ簡単なものであるが、第１のパイプラインにおいてロード命令がＬ１データ・キャッシュ２８０を「ミスする」とき、すなわちＬ１データ・キャッシュ２８０からのデータが容易に利用可能でなく、データを、システム・メモリ又は他の格納部からＬ１データ・キャッシュ２８０内に再ロードしなければならないとき、複雑さが生じる。この場合、ロード命令は、パイプライン２２０及び２３０の両方に送られる。ロード／ストア・パイプライン２２０を介して、ロード命令に対応するデータが、Ｌ１データ・キャッシュ２８０から検索しようと試みられる。Ｌ１データ・キャッシュ２８０においてデータが利用可能でない場合、ロード／ストア・パイプライン２２０は、「ミス」メッセージをロード・ターゲット・バッファ２５０に送る。ロード命令のＬＴＡＧに基づいて識別された、ロード・テーブル・データ構造２４０内の対応するエントリが、「ミス」とマーク付けされ、これによりこのエントリ内のデータが無効なものと識別される。
【００５４】
さらに、パイプライン２２０は、メッセージをロード・ミス・キュー（ＬＭＱ）ユニット２６０に送り、ＬＭＱユニット２６０にキャッシュ・ミスを通知する。ＬＭＱユニット２６０は、Ｌ２キャッシュ２９０のようなメモリ・サブシステムのコンポーネントから、検索されるか又は再生されるデータを要求し、これを待つ。データの再生は、データがメモリ・サブシステムのどこから来るかに関係なく行うことができ、Ｌ２キャッシュ２９０の使用に制限されるものではないことを理解すべきである。例えば、データの再生は、主システム・メモリ等から直接行うことができる。例証としての実施形態の説明のために、再生操作は、Ｌ２キャッシュ２９０に関して行われるが、本発明はそれに制限されるものではないと考えられる。
【００５５】
ロード命令についてのデータがＬＭＱユニット２６０に戻されると、すなわちＬ２キャッシュ２９０を用いて再生操作が完了すると、戻されたデータは、自動的にＬ１キャッシュ内に配置され、同様に、Ｌ２キャッシュ又は他のメモリ・サブシステムから再生されたロード命令に対応するＬＴＡＧと共に、ＬＭＱユニット２６０からロード・ターゲット・バッファ２５０に送られる。
【００５６】
特定の実施によって、ＬＭＱユニット２６０又はＬ２キャッシュ２９０のいずれかが、各々のＬ２再生と関連付けられたＬＴＡＧを常時監視する。言い換えれば、ＬＭＱユニット２６０又はＬ２キャッシュ２９０は、Ｌ２再生操作を受ける各ロード命令について、ＬＴＡＧ、ロード・アドレス等を識別するデータ構造を維持する。データが戻されたとき、ＬＭＱユニット２６０又はＬ２キャッシュ２９０のいずれかが、ロード・アドレスを用いて、データを、このデータ構造内の特定のエントリと関連させることができる。次に、データと共に対応するＬＴＡＧを戻すことができる。このことにより、Ｌ２キャッシュ２９０から、任意の順番で、すなわち、データ要求がＬ２キャッシュ２９０に送られた順番と必ずしも同じでない順番で、ロード・データを戻すことが可能になる。
【００５７】
ロード・テーブル・データ構造２５０内の対応するエントリにアクセスするために、ＬＭＱユニット２６０からロード・ターゲット・バッファ２４０に送られたＬＴＡＧ及びデータが用いられる。ＬＴＡＧに基づいて、エントリは、再生されたデータを含むように更新され、再生されたデータが有効である場合に「ヒット」とマーク付けされる。ＬＭＱユニット２６０は、再生されたデータが有効かどうかを判断し、これをロード・ターゲット・バッファ２４０に提供するとき、再生されたデータを有効／無効なものと識別する。例えば、投機的再生のために再生されたデータが、それ自体が無効なデータを格納するＬ２キャッシュから来るとき、再生されたデータを無効にすることができる。更に別の例として、再生されたデータの再送を必要とする再生操作において衝突がある場合、再生されたデータを無効にすることができる。したがって、場合によっては、再生されたデータを有効にすることができず、その場合、対応するロード・テーブル・データ構造２５０のエントリは、「ミス」とマーク付けられたままにされる。
【００５８】
再生されたデータがロード・ターゲット・バッファ２４０に格納される時点で、命令パイプライン２３０内のロード命令が、パイプライン２３０内のどこにあってもよい。例えば、ロード命令が依然としてパイプライン２３０内にあってもよく、或いは、ロード命令が既に発行され、ロード・ターゲット・バッファ２４０内のロード・テーブル・データ構造２５０にアクセスしようとした可能性もある。
【００５９】
Ｌ２キャッシュ２９０からのデータの再生が完了したときにロード命令が依然としてパイプライン２３０内にある場合、ロード命令がパイプライン２３０から発行される前に、対応するロード・テーブル・データ構造２５０のエントリが、「ミス」状態から「ヒット」状態に変更される。ロード命令の観点からは、第１の場所においてデータのローディングが決して「ミス」されず、ロード命令が通常どおり発行されるように見える。したがって、ＬＴＡＧに基づいて、ロード・ターゲット・バッファ２４０内のロード・テーブル・データ構造２５０のエントリが読み取られ、エントリに対応するデータを集め、そのデータをレジスタ・ファイル２８０に格納する。次に、ＬＴＡＧを次のロード命令と共に用いることができるように、ロード命令と関連付けられたＬＴＡＧ及びロード・テーブル・データ構造２５０エントリの割り当てを解除することができる。
【００６０】
ロード命令が既にパイプライン２３０から発行された場合、Ｌ１データ・キャッシュ「ミス」の処理がより複雑になる。ロード命令が命令パイプライン２３０から発行され、ＬＴＡＧによって決定されるようなロード・テーブル・データ構造２５０内の対応するエントリが「ミス」とマーク付けされたとき、発行されたロード命令からのあらゆる効果を取り消さなければならない。例えば、無効なロード・データがレジスタ・ファイル２８０内に書き込まれず、ロード命令等と関連付けられたＬＴＡＧの割り当てを解除しないことを保証するために、幾つかのステップを取る必要がある。したがって、例証としての実施形態の機構を用いる場合、ロード・テーブル・データ構造２５０内のエントリが「ミス」を示すとき、このエントリ内のデータがレジスタ・ファイル２８０に読み書きされないか、或いは、レジスタ・ファイル２８０においてこのエントリからレジスタ・ファイル２８０に書き込まれたデータが無効にされ、例えば、レジスタ・ファイル２８０内の妥当性ビットが無効状態値に設定される。さらに、ＬＴＡＧ及びロード・テーブル・データ構造２５０のエントリの割り当てが解除されない。寧ろ、ロード・テーブル・データ構造２５０内のエントリの状態が、「ミス」状態から、エントリがＬ２キャッシュ２９０からのデータの再生を待っていることを示す「保留」状態に更新された。
【００６１】
さらに、将来の再発行のために、ロード命令自体又はロード命令の何らかの類似物が、ロード・テーブル・データ構造２５０のエントリに格納される。このように、ロード・データがＬ２キャッシュ２９０から入手可能になり、有効になるまで、ロード・テーブル・データ構造２５０のエントリは、ロード・ミス・キュー・エントリとして有効に働く。データの再生がＬ２キャッシュ２９０から生じるとき、ＬＴＡＧによって識別されるようなロード・テーブル・データ構造２５０内の対応するエントリが、「ヒット」とマーク付けされる。その結果、ロード・テーブル・データ構造２５０のエントリに格納されるロード命令が、パイプライン２３０に復元され、最終的にパイプライン２３０から再発行される。再発行されたロード命令がパイプライン２３０から発行されるとき、再発行されたロード命令は通常どおりに処理され、すなわち、データは、ロード・ターゲット・バッファ２４０内のロード・テーブル・データ構造２５０から読み取られ、レジスタ・ファイル２８０及びＬＴＡＧに書き込まれ、ロード・テーブル・データ構造２５０のエントリの割り当てが解除される。
【００６２】
上述のように、Ｌ２キャッシュ２９０からのロード命令のデータの再生を投機的なものとすることができ、よって、ロード・ターゲット・バッファ２４０内に再ロードされたデータを無効にすることができる。このような場合、対応するロード・テーブル・データ構造２５０エントリは、「ミス」とマーク付けられた状態にされる。その結果、ロード命令が命令パイプライン２３０から再発行されたとき、ロード・テーブル・データ構造２５０エントリに格納されたデータが有効になるまで、上述のプロセスが再び繰り返される。有効なデータは、最終的にメモリ・サブシステムから来なければならないので、エントリは最終的に有効にならなければならない。
【００６３】
図３は、例証としての実施形態によるロード・ターゲット・バッファのロード・テーブルを示す例示的な図である。例証としての実施形態のロード・ターゲット・バッファは、図３に示されるロード・テーブルと、状態及び遷移が図４に示される状態機械とを含む。図３に示されるように、ロード・テーブル３００内のエントリは、これらが対応するロード命令のＬＴＡＧ３１０によって索引付けされる。ロード・テーブル３００内のエントリは、ロード命令に対応するデータ３２０、命令３３０及びロード命令の現在の状態３４０を含むことができる。説明のために、図３は、ＬＴＡＧ３１０をロード・テーブル３００内のエントリの一部として示すが、実際には、ＬＴＡＧ３１０は、ロード・テーブル３００への索引として働き、実際にエントリ自体の一部とすることはできないことに留意すべきである。しかしながら、代替的な実施形態においては、ＬＴＡＧをロード・テーブル３００の一部にすることができる。こうした実施形態において、ロード・テーブル３００内の特定のエントリを見つけるために、ＬＴＡＧ３１０の参照を行うためのプロセスが用いられる。この代替的な実施形態は、好ましい実施形態におけるようにＬＴＡＧ３１０によってロード・テーブル３００を索引付けするより、費用がかかり、低速である。
【００６４】
図３に示されるように、ロード・テーブル３００への入力は、命令パイプラインからの発行された命令３４２を含む。ロード命令のＬＴＡＧ、Ｌ１データ・キャッシュ・ヒット又はミスが生じたかどうかのインジケータ、及びＬ１データ・キャッシュ・ヒット又はミスが生じた場合にはロード命令についてのデータを示す入力３４４も、ロード／ストア・パイプラインから提供される。ロード命令のＬＴＡＧ及びＬ２データ・キャッシュから再生されたロード命令についてのデータを含む、ロード・ミス・キュー・ユニットからの更に別の入力３４６も提供される。
【００６５】
ロード・テーブル３００からの出力は、ロード・テーブル・エントリからのデータの出力３５０を含み、この出力３５０は、ロード命令が適切に発行され、ロード・テーブル３００内にロード命令についてのデータが存在し、有効であるとき、レジスタ・ファイルに格納される。更に別の出力３５２は、データがＬ２データ・キャッシュから再生されたときに命令パイプライン内に再格納される再生されたロード命令である。さらに、ＬＴＡＧ及び対応するロード・テーブル・エントリの割り当てを解除し又はこれを取り消すための出力３５４が提供される。
【００６６】
ロード命令が例外なく成功裏に発行される場合、出力３５４の「割り当て解除」ラインを用いて、異なるロード命令による将来の使用のために、そのＬＴＡＧの割り当てを解除することができる。ＬＴＡＧは、図２の発行ユニット２１０から命令を発行するときに割り当て、上述のようにＬＴＡＧの割り当てを解除する別個のＬＴＡＧ管理装置（図示せず）によって維持される。出力３５４の「取り消し」ラインは、レジスタ・ファイルを含む実行ユニットに進む。「取り消し」出力は、例外又はロード・データを無効にする他の何らかの問題を有する、失敗に終わったロードの発行時にアサートされる。取り消されたロードの割り当てを解除することができない。「取り消し」出力は、最終的に実行ユニット内のロードを有効に取り消し、その結果を終了し、それをレジスタ・ファイルに書き込むのを防止する。
【００６７】
図４は、例証としての実施形態による、図３のターゲット・バッファのロード・テーブル内のエントリの状態を示す例示的な状態図である。図４に示されるように、エントリの状態は、割り当て解除すなわち「ｄｅａｌｌｏｃ」状態３６０で開始する。「ｄｅａｌｌｏｃ」状態３６０は、ＬＴＡＧのロード命令への割り当てが利用可能であることを示す。ロード命令が非同期式パイプラインに送られ、Ｌ１データ・キャッシュ・ヒットが生じたとき、すなわちロード命令についてのデータがＬ１データ・キャッシュ内に存在し、検索されたとき、エントリの状態が「ヒット」状態３７０に遷移する（３７２）。「ヒット」状態３７０において、ＬＴＡＧがロード命令に割り当てられ、ロード・テーブル内の対応するエントリにおいてロード命令についてのデータが利用可能にされる。
【００６８】
「ヒット」状態３７０において、ロード命令が命令パイプラインから発行されたとき、「ヒット」状態３７０から「ｄｅａｌｌｏｃ」状態３６０への遷移３７４が行われ、データがレジスタ・ファイル内にロード又は格納され、ロード・テーブル・エントリの割り当てが解除される。
【００６９】
ロード命令が非同期式パイプラインに送られ、Ｌ１データ・キャッシュ・ミスが生じたとき、すなわちロード命令についてのデータがＬ１データ・キャッシュ内に存在しないか又は無効であるとき、エントリの状態は、「ｄｅａｌｌｏｃ」状態３６０から「ミス」状態３８０に遷移する（３６２）。「ミス」状態３８０において、ＬＴＡＧがロード命令に割り当てられるが、ロード命令についてのデータは、ロード・テーブル内のエントリによって利用可能にされない。
【００７０】
「ミス」状態３８０において、有効なデータがＬ２データ・キャッシュから再生されたとき、「ヒット」状態３７０への遷移３８２が行われる。この遷移中、データは、ロード命令のＬＴＡＧに対応するロード・テーブルのエントリ内にロードされる。勿論、再生操作によって戻されるデータが無効である場合、ロード・テーブル内のエントリは「ミス」状態３８０のままである。ロード・テーブル内のロード命令のエントリが「ミス」状態３８０にある間にロード命令が命令パイプラインから発行される場合、発行するロード命令のあらゆる効果が取り消され、ロード・テーブル内のエントリの状態は、保留状態すなわち「ｐｅｎｄ」状態３９０に遷移する(３８４)。
【００７１】
「ｐｅｎｄ」状態３９０において、ロード命令についての有効なデータがＬ２データ・キャッシュから再生されると、「ｐｅｎｄ」状態３９０から「ヒット」状態３７０への遷移が行われる。この遷移の一部として、再生されたデータがロード・テーブル内にロードされ、ロード命令が命令パイプラインに復旧される。
【００７２】
例証としての実施形態の機構の主題であるロード命令より古い命令において例外が生じ得ることに留意すべきである。このことは、非同期式パイプライン内のロード命令を無効化しなくてはならないことを意味する。例証としての実施形態の場合、この不測の事態を扱うために、２つの方法が提供される。
【００７３】
第１の方法において、非同期式パイプライン自体において、ロード命令が即座に無効化される。このことは、例えば、無効であることを示すビット又はフラグをロード命令上に設定することを含むことができる。例えば、無効化のタイミングが一定である場合、命令パイプライン内のロード命令の位置を再生成し、ロード命令を無効化することができる。無効化のタイミングが一定でない場合、フラッシュ操作により、ロード命令が識別することができ、その結果、それ自体を無効化させることができるタグがブロードキャストされる、タグ・ベースのスキームを用いることができる。ロード／ストア・パイプラインからロード・ターゲット・バッファ及び／又はロード・ミス・キュー・ユニットにロード命令が既に発行されている場合、対応するロード命令についてのロード・テーブル及び／又はロード・ミス・キュー・ユニット内のエントリも無効化しなければならず、すなわち、これらの状態が「ｄｅａｌｌｏｃ」に再設定され、ＬＴＡＧの割り当てが解除される。
【００７４】
代替的な方法において、ロード／データ・パイプライン及び／又はロード・ミス・キュー・ユニットにおいてロード命令が即座に無効化されるが、ロード・テーブル内のエントリは、例外のために無効化されたものとマーク付けされるだけである。このマーク付けは、「Ｆ」ビットを各ロード・テーブル・エントリに導入し、生じた例外のためにエントリが無効化されたときにこの「Ｆ」ビットを設定することによって行われる。命令パイプラインにおいてロード命令は無効化されないが、寧ろ、発行し、かつ、ロード・テーブルにアクセスすることが可能になる。ロード・テーブルの対応するエントリにおいてロードが発行され、対応する「Ｆ」ビットが設定された場合、ロード命令の効果が取り消される、すなわち、レジスタ・ファイルにロード又は格納されたデータが無効化されるなど。例外のためにロード命令がフラッシュされるので、ロード命令のＬＴＡＧの割り当てを解除することもできる。特に、例外が、命令パイプラインに対して非同期であるロード／ストア・パイプラインによって引き起こされる場合、命令パイプライン内のロード命令を見つけ出し、即座に無効にしなければならない複雑さを防ぐので、この代替的な方法は、第１の方法より簡単な実施である。
【００７５】
図５は、別の例証としての実施形態によるロード・テーブルを示す例示的な図である。図５に示されるロード・テーブルは、図３に示されるロード・テーブルと非常に類似しており、ロード・テーブル４００のエントリ内に「Ｆ」ビット４１０が付加されている。図５に示されるように、例外が生じたとき、この例外により、ロード／ストア・パイプライン内のロード命令に対応するロード・テーブル・エントリについての「Ｆ」ビット４１０が設定される。例えば、これらのロード命令についてのＬＴＡＧに基づいて、「Ｆ」ビットが設定されることになるロード・テーブル４００内の特定のエントリを識別することができる。
【００７６】
図６は、例証としての実施形態による、図５のロード・テーブル内のエントリの状態を示す例示的な状態図である。この状態図は、図４のものに類似しており、主な差異は、「ミス」状態、「ヒット」状態、「ｐｅｎｄ」状態、並びに「ｄｅａｌｌｏｃ」状態の間に遷移４４０−４６０が付加されていることである。これらの遷移において、「ｉｓｓｕｅＦ」という用語は、ロード・テーブル内においてＦビットが設定されたロードの発行を指す。ロード命令についてのロード・テーブル・エントリが、「ヒット」状態又は「ミス」状態にあり、エントリのＦビットが設定された場合、ロード命令の発行の効果が取り消され、ＬＴＡＧ及びロード・テーブル・エントリの割り当てが解除される（遷移４４０及び４５０）。ロード命令についてのロード・テーブル・エントリが「ｐｅｎｄ」状態にあり、エントリのＦビットが設定された場合、ロード命令のＬＴＡＧの割り当てが解除され、エントリは、「ｄｅａｌｌｏｃ」状態にあるとマーク付けされる。この場合、Ｌ２再生操作を待つ必要はない。
【００７７】
大部分のイン・オーダ式プロセッサは、その点を過ぎた例外は許容されず、設計されたレジスタはもう更新されない、１つの最終的な例外点をパイプライン内に有する。こうしたプロセッサを用いる場合、命令は、パイプラインから除去するか又は無効なものとマーク付けし、上述の方法で通常の例外経路に沿って単に再取り出しし、再発行することができるので、例外において命令をフラッシュするのは、極めて簡単である。しかしながら、もはや単に命令を無効なものとしてマーク付けし、これらを再取り出しすることはできないので、プロセッサは、この点を越える例外、すなわち著しい複雑さを加える遅延例外を許容することができる。
【００７８】
遅延例外に対する１つの解決法は、プロセッサが既に発行された例外より新しい命令をパイプライン内で局所的に再発行しなければならない、特別の「パイプライン再生」機構を用いる。この手法の例示的な実施が、「Ｉｍｐｒｏｖｉｎｇ  Ｐｅｒｆｏｒｍａｎｃｅ  ｏｆ  ａｎ  Ｉｎ−Ｏｒｄｅｒ  Ｐｒｏｃｅｓｓｏｒ  ｂｙ  Ｎｏ  Ｌｏｎｇｅｒ  Ｒｅｑｕｉｒｉｎｇ  ａ  Ｕｎｉｆｏｒｍ  Ｃｏｍｐｌｅｔｉｏｎ  Ｐｏｉｎｔ  Ａｃｒｏｓｓ  Ｄｉｆｆｅｒｅｎｔ  Ｅｘｅｃｕｔｉｏｎ  Ｐｉｐｅｌｉｎｅｓ」という名称の、同一出願人による、同時係属の特許文献１（代理人整理番号第ＡＵＳ９２００５０２３０ＵＳ１）において提供される。
【００７９】
ロードが既に発行された新しい「Ｉ」状態を提供することができる。図７は、この新しい「Ｉ」状態を図６の状態図に含ませることを示す例示的な状態図である。「Ｉ」状態は、割り当て解除自体の前にロード命令が発行された後の最終的な休止点である。ロード命令が発行されたとき、ロード・テーブル・エントリは、一時的に「Ｉ」状態５１０内に配置される（遷移５１２）。ロード命令が遅延例外点を越えるまでロード命令が発行された後、ロード命令は、この「Ｉ」状態５１０にとどまる。ロード命令が遅延例外点を越えたときに局所的な再発行を強制する遅延例外がない場合、ロード命令の割り当てを解除することができる（遷移５１４）。ロード命令を局所的に再発行させる遅延例外がある場合、ロード命令のロード・テーブル・エントリが「ヒット」状態に戻され、再発行を待ち、プロセスが繰り返し現れる。
【００８０】
発行され、フラッシュされたものとマーク付けされ、遅延例外点まで待つ必要がない場合、「ヒット」状態から直ちにロード命令の割り当てを解除できることに留意すべきである。ロードが保留状態にあり、Ｌ２データ・キャッシュ再生操作が行われる場合、「ヒット」状態への通常の遷移が生じ、あたかもロード命令が最初に「ヒット」を有するように発行されたように「Ｉ」状態が生じる。ロード命令が保留状態にある間に遅延例外が生じた場合には、ロード命令はまだ再発行されていないので、ロード命令には問題でない。
【００８１】
図８及び図９は、１つの例証としての実施形態の例示的な作動を概説するフローチャートである。フローチャート図の各ブロック及びフローチャート図のブロックの組み合わせは、コンピュータ・プログラム命令によって実施することができる。これらのコンピュータ・プログラム命令は、プロセッサ又は他のプログラム可能なデータ処理装置に提供し、機械を生成することができるので、プロセッサ又は他のプログラム可能なデータ処理装置上で実行される命令が、フローチャートのブロックにおいて指定された機能を実施するための手段を生成する。特定の方法で機能するように、プロセッサ又は他のプログラム可能なデータ処理装置に命令することができる、これらのコンピュータ・プロセッサ命令は、コンピュータ可読メモリ又は記憶装置に格納することができ、コンピュータ可読メモリ又は記憶装置に格納された命令は、フローチャートのブロックにおいて指定された機能を実施する命令手段を含む製造物品を生成する。
【００８２】
したがって、フローチャート図のブロックは、指定された機能を実行するための手段の組み合わせ、指定された機能を実行するためのステップの組み合わせ、並びに指定された機能を実行するためのプログラム命令手段をサポートする。フローチャート図の各ブロック及びフローチャート図のブロックの組み合わせは、指定された機能又はステップを実行する特殊用途のハードウェア・ベースのコンピュータ・システムによって、或いは、特殊用途のハードウェア及びコンピュータ命令の組み合わせによって実施できることも理解されるであろう。
【００８３】
図８は、１つの例証としての実施形態によるロード／ストア・パイプラインの例示的な作動を概説するフローチャートである。図８に示されるように、作動は、ロード命令を２つ又はそれ以上の非同期式パイプラインに発行する発行ユニットで開始する（ステップ６１０）。ロード／ストア・パイプラインは、Ｌ１データ・キャッシュからロード命令についてのデータを検索しようと試み（ステップ６１４）、この試みがキャッシュ「ヒット」を引き起こすかどうかを判断する（ステップ６２０）。この試みがキャッシュ「ヒット」を引き起こす場合、ロード・ターゲット・バッファは、ロード命令のＬＴＡＧと、Ｌ１データ・キャッシュから検索されたロード命令に対応するデータとを用いて、ロード・テーブル内にエントリを作成し、該エントリを「ヒット」状態を有するものとマーク付けする（ステップ６２５）。
【００８４】
ロード／ストア・パイプラインは、ロード・テーブル内のエントリ上に例外が存在するかどうかを判断する（ステップ６３０）。例外が存在しない場合には、作動が終了する。例外が存在する場合には、ロード／ストア・パイプラインは、対応するＬＴＡＧエントリについての「Ｆ」ビットをマーク付けし（ステップ６３５）、次に作動が終了する。図８に関して、例外と呼ばれるのは、ロード／ストア・パイプラインから生成される例外であることに留意すべきである。
【００８５】
Ｌ１キャッシュからデータを検索しようとする試みがキャッシュ「ミス」を引き起こす場合には、ロード・ミス・キュー・ユニットが、ロード命令についてのＬＴＡＧを有するロエントリをロード・テーブル内に作成し、該エントリを「ミス」状態を有するものとマーク付けする（ステップ６４０）。ロード・ミス・キュー・ユニットは、キャッシュ「ミス」によって生成される例外があるかどうかを判断する（ステップ６４５）。例外が生じた場合には、対応するＬＴＡＧエントリについての「Ｆ」ビットがマーク付けされ（ステップ６５０）、作動が終了する。
【００８６】
ステップ６４５において例外が生じなかった場合には、ロード・ミス・キュー・ユニットは、Ｌ２データ・キャッシュからロード命令についてのデータを要求する（ステップ６５５）。次に、Ｌ２データ・キャッシュからのデータが受け取られ（ステップ６６０）、Ｌ２データ・キャッシュからのデータの検索中に例外が生じたかどうかについての判断がなされる（ステップ６６５）。例外が生じなかった場合には、Ｌ２データ・キャッシュからの有効なデータが、ロード・テーブル内の対応するエントリ内にロードされ（ステップ６８０）、エントリが「ヒット」とマーク付けされる（ステップ６８５）。
【００８７】
Ｌ２データ・キャッシュからのデータの検索中に例外が生成された場合には（ステップ６６５）、ロード・テーブル内のＬＴＡＧエントリが保留状態にあるかどうかについての判断がなされる（ステップ６７０）。ロード・テーブル内のＬＴＡＧエントリが保留状態にない場合には、ロード・テーブル内の対応するＬＴＡＧエントリについての「Ｆ」ビットが設定される（ステップ６３５）。ロード・テーブル内のＬＴＡＧエントリが保留状態にある場合には（ステップ６７０）、ＬＴＡＧの割り当てが解除され、ＬＴＡＧエントリは割り当て解除状態に進む（ステップ６７５）。次に、作動が終了する。
【００８８】
図９は、１つの例証としての実施形態による、命令パイプラインの例示的な作動を概説するフローチャートである。図９に示されるように、作動は、ロード命令を発行する命令パイプラインで開始する（ステップ７１０）。ロード・ターゲット・バッファは、発行されたロード命令のＬＴＡＧに対応するロード・テーブル・データ構造内のエントリを識別し（ステップ７２０）、このエントリについての「Ｆ」ビットが設定されたかどうかについての判断がなされる（ステップ７３０）。このエントリについての「Ｆ」ビットが設定された場合には、ロード・ターゲット・バッファは、ロード命令の「取り消し」操作を駆動し（ステップ７４０）、ＬＴＡＧ及びロード・テーブル・エントリの割り当てが解除される（ステップ７５０）。
【００８９】
発行されたロード命令のＬＴＡＧに対応するエントリについての「Ｆ」ビットが設定されない場合には（ステップ７３０）、ロード・ターゲット・バッファは、エントリが「ヒット」とマーク付けされるかどうかを判断する（ステップ７６０）。エントリが「ヒット」とマーク付けされた場合には、ロード・ターゲット・バッファは、ロード・テーブルのエントリ内のデータをレジスタ・ファイル内にロードする（ステップ８２０）。ロード・ターゲット・バッファは、遅延例外が生じたかどうかを判断する（ステップ８３０）。図９に関して、例外は、命令パイプライン及びその実行ユニットによって生成された例外である。
【００９０】
遅延例外が生じなかった場合には、ＬＴＡＧ及びロード・テーブル・エントリの割り当てが解除される（ステップ７５０）。遅延例外が生じた場合には、ロード・ターゲット・バッファは、ロード命令の局所的再発行を行い（ステップ８４０）、作動はステップ８２０に戻る。
【００９１】
エントリが「ヒット」とマーク付けされない場合には（ステップ７６０）、ロード・ターゲット・バッファは、ロード命令の発行のあらゆる効果を取り消し（ステップ７７０）、命令をロード・テーブル・データ構造のエントリに格納し、Ｌ２データ・キャッシュからのデータ検索を待つ（ステップ７８０）。ロード・ターゲット・バッファは、有効なロード・データがＬ２データ・キャッシュから戻されるかどうかを判断する（ステップ７９０）。有効なロード・データがＬ２データ・キャッシュから戻されない場合には、有効なロード・データがＬ２データ・キャッシュから戻されるまで、作動はステップ７９０に戻る。Ｌ２データ・キャッシュからロード命令についての有効なロード・データが再生される場合には、ロード・ターゲット・バッファは、再生されたロード・データを、ロード命令についてのロード・テーブル・エントリに格納する（ステップ８００）。次に、ロード・ターゲット・バッファは、エントリを「ヒット」とマーク付けし、命令パイプラインに対してロード命令を再発行する（ステップ８１０）。次に、上述のように、作動はステップ８２０−８４０に進む。
【００９２】
このように、本発明の例証としての実施形態は、非同期式パイプラインのためにデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための機構を提供する。例証としての実施形態の機構は、非同期式パイプラインにおける遅延例外を処理する方法をさらに提供する。
【００９３】
マイクロプロセッサ・アーキテクチャの１つ又は複数のプロセッサにおいて、本発明の例証としての実施形態を提供することができる。したがって、集積回路チップ上の集積回路において、例証としての実施形態の機構を実施することができる。チップ設計は、グラフィカル・コンピュータ・プログラミング言語で作成し、コンピュータ記憶媒体（ディスク、テープ、物理ハードドライブ、又はストレージ・アクセス・ネットワークなどの仮想ハードドライブのような）に格納することができる。設計者が、チップ又はチップを製造するために用いられる光リソグラフィ・マスクを製造しない場合には、設計者は、物理手段によって（例えば、設計を格納する記憶媒体のコピーを提供することによってなど）、或いは電気的に（例えば、インターネットを通して）、こうしたエンティティに結果物としての設計を直接的又は間接的に伝送する。次に、格納された設計は、一般に、ウェハ上に形成されることになる当該チップ設計の多数のコピーを含む、光リソグラフィ・マスクの製造のための適切なフォーマット（例えば、ＧＤＳＩＩ）に変換される。光リソグラフィ・マスクを用いて、エッチングされるか又は他の方法で処理されることになるウェハ（及び／又はその上の層）の領域を定める。
【００９４】
製造者により、結果物としての集積回路チップを生ウェハの形態で（つまり、多数のパッケージされてないチップを有する単一のウェハとして）、裸のダイとして、又はパッケージされた形態で配布することができる。後者の場合には、チップは、単一のチップ・パッケージ（マザーボードに取り付けられたリードを有するプラスチック・キャリア又は他の高レベル・キャリアのような）内に、或いはマルチチップ・パッケージ（表面相互接続部又は埋め込まれた相互接続部のいずれか又は両方を有するセラミック・キャリアのような）内にマウントされる。いずれにせよ、次に、チップは、（ａ）マザーボードのような中間製品、或いは（ｂ）最終製品の一部として、他のチップ、別個の回路素子、及び／又は他の信号処理装置と統合される。最終製品は、集積回路チップを含み、玩具及び他のローエンド用途から、ディスプレイ、キーボード又は他の入力装置及び中央プロセッサを有する高度なコンピュータ製品までの範囲にわたる。
【００９５】
例証としての実施形態の説明は、説明及び記述のために与えられたものであり、網羅的であること又は開示された形態に本発明を制限するように意図されるものではない。当業者には、多くの修正及び変更が明らかであろう。本発明の原理、実際的な用途を最も良く説明し、考えられる特定の使用に適したような種々の修正を有する種々の実施形態について、他の当業者が本発明を理解することを可能にするために、実施形態が選択され、説明される。
【図面の簡単な説明】
【００９６】
【図１】例証としての実施形態の例示的な態様を実施することができる情報処理装置の例示的な図である。
【図２】例証としての実施形態の主要素の作動を示す例示的なブロック図である。
【図３】例証としての実施形態によるロード・ターゲット・バッファのロード・テーブルを示す例示的な図である。
【図４】例証としての実施形態による、図３のロード・ターゲット・バッファのロード・テーブル内のエントリの状態を示す例示的な状態図である。
【図５】別の例証としての実施形態によるロード・テーブルを示す例示的な図である。
【図６】例証としての実施形態による、図５のロード・ターゲット・バッファのロード・テーブル内のエントリの状態を示す例示的な状態図である。
【図７】１つの例証としての実施形態による、図６の状態図の中に新しい「Ｉ」状態を含ませることを示す例示的な状態図である。
【図８】１つの例証としての実施形態による、ロード／ストア・パイプラインの例示的な作動を概説するフローチャートである。
【図９】１つの例証としての実施形態による、命令パイプラインの例示的な作動を概説するフローチャートである。
【符号の説明】
【００９７】
１００：セル・ブロードバンド・エンジン・アーキテクチャ（ＣＢＥＡ）データ処理システム
１１２：Ｌ１キャッシュ
１１４：Ｌ２キャッシュ
１９９：共有メモリ
２１０：発行ユニット
２２０：ロード／ストア・パイプライン
２３０：命令パイプライン
２４０：ロード・ターゲット・バッファ
２５０：ロード・テーブル・データ構造
２６０：ロード・ミス・キュー・ユニット
２７０：レジスタ・ファイル記憶装置
２８０：Ｌ１データ・キャッシュ
２９０：Ｌ２データ・キャッシュ
【図１】
2007207238.tif 000003
【図２】
2007207238.tif 000004
【図３】
2007207238.tif 000005
【図４】
2007207238.tif 000006
【図５】
2007207238.tif 000007
【図６】
2007207238.tif 000008
【図７】
2007207238.tif 000009
【図８】
2007207238.tif 000010
【図９】
2007207238.tif 000011