(57)【特許請求の範囲】
【請求項１】
１次キャッシュメモリを有する演算処理部と、
前記１次キャッシュメモリが保持するデータを包含して保持する２次キャッシュメモリと、
前記２次キャッシュメモリからデータを読み出し、第１のアドレスと第１の論理値を取る第１の属性情報とを含む先行読み出し要求と、前記２次キャッシュメモリからデータを読み出し、且つ前記先行読み出し要求の後に要求され、第２のアドレスと第２の論理値を取る第２の属性情報とを含む後続読み出し要求とを、前記演算処理部から受け取り、且つ、前記先行読み出し要求の完了通知を受け取るまで前記先行読み出し要求を保持し又は前記後続読み出し要求の完了通知を受け取るまで前記後続読み出し要求を保持するポート部と、
前記先行読み出し要求と後続読み出し要求とを前記ポート部から受け取り、前記第１のアドレスと前記第２のアドレスとが一致するとともに前記第１の論理値と前記第２の論理値とが異なり且つ前記先行読み出し要求及び後続読み出し要求に対応するアドレスのデータが前記２次キャッシュメモリに無い場合、前記先行読み出し要求の第１の属性情報を、前記第２の属性情報に置き換えるとともに、前記後続読み出し要求に対する完了通知を前記１次キャッシュメモリに供給する制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記制御部は、前記先行読み出し要求に対応するアドレスのデータが前記２次キャッシュメモリに無いことにより、前記先行読み出し要求のアドレスに対応するデータを主記憶装置から取得した後で、前記第２の属性情報及び前記主記憶装置から取り出したデータを前記２次キャッシュメモリの前記第２のアドレスに登録することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置において、
前記制御部は、前記後続読み出し要求が、要求の実行が必須ではない旨を判断する場合、前記先行読み出し要求の第１の属性情報を、前記第２の属性情報に置き換えることを抑止することを特徴とする請求項１記載の演算処理装置。
【請求項４】
前記演算処理装置において、
前記先行読み出し要求と後続読み出し要求とを前記ポート部から受け取り、前記第１のアドレスと前記第２のアドレスとが一致するとともに前記第１の論理値と前記第２の論理値とが一致し且つ前記先行読み出し要求及び後続読み出し要求に対応するアドレスのデータが前記２次キャッシュメモリに無い場合、前記先行読み出し要求の第１の属性情報を、前記第２の属性情報に置き換えることなく、前記後続読み出し要求の中止通知を前記１次キャッシュメモリに供給することを特徴とする請求項１記載の演算処理装置。
【請求項５】
１次キャッシュメモリを有する演算処理部と、前記１次キャッシュメモリが保持するデータを包含して保持する２次キャッシュメモリと、前記１次キャッシュメモリ及び前記２次キャッシュメモリとの間に配置されたポート部と、前記２次キャッシュメモリ及び前記ポート部へデータの入出力を制御する制御部とを有する演算処理装置の制御方法において、
前記制御部が、前記２次キャッシュメモリからデータを読み出し、第１の論理値を取る第１の属性情報を含む先行読み出し要求を、前記ポート部が受け取り、
前記先行読み出し要求を受け取った後、前記ポート部が、前記２次キャッシュメモリからデータを読み出し、
前記先行読み出し要求の後に要求され、第２の論理値を取る第２の属性情報を含む後続読み出し要求を、前記ポート部が、受け取り、
前記第１のアドレスと前記第２のアドレスとが一致するとともに前記第１の論理値と前記第２の論理値とが異なり且つ前記先行読み出し要求と後続読み出し要求とに対応するアドレスのデータが前記２次キャッシュメモリに無い場合、前記制御部が、前記先行読み出し要求の第１の属性情報を、前記第２の属性情報に置き換え、
前記制御部が、前記後続読み出し要求に対する完了通知を前記１次キャッシュメモリに供給することを特徴とする演算処理装置の制御方法。
【請求項６】
前記演算処理装置の制御方法において、
前記２次キャッシュメモリは、主記憶装置と接続されており、
前記制御部が、前記先行読み出し要求に対応するアドレスのデータを前記主記憶装置から取得した後で、前記第２の属性情報及び前記データを前記２次キャッシュメモリに登録することを特徴とする請求項５に記載の演算処理装置の制御方法。
【請求項７】
前記演算処理装置の制御方法において、
前記制御部が、前記後続読み出し要求が要求の実行が必須ではないことを判定する場合、前記先行読み出し要求の第１の属性情報を、前記制御部は、前記第２の属性情報に置き換えることを抑止することを特徴とする請求項５記載の演算処理装置の制御方法。
【請求項８】
前記演算処理装置の制御方法において、
前記２次キャッシュメモリは、主記憶装置と接続されており、
前記制御部が、前記先行読み出し要求と後続読み出し要求とを前記ポート部から受け取り、
前記制御部が、前記第１のアドレスと前記第２のアドレスとが一致するとともに前記第１の論理値と前記第２の論理値とが一致し且つ前記先行読み出し要求及び後続読み出し要求に対応するアドレスのデータが前記２次キャッシュメモリに無い場合、前記先行読み出し要求の第１の属性情報を、前記第２の属性情報に置き換えることなく、前記後続読み出し要求の中止通知を前記１次キャッシュメモリに供給することを特徴とする請求項５記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
近年のプロセッサの動作周波数の向上により、プロセッサからメモリへのアクセス時間は、プロセッサ動作周波数と比して相対的に長くなっている。そのため、プロセッサは、プロセッサから主記憶装置へのアクセス時間を短縮するために、キャッシュメモリと呼ぶ小容量の高速メモリを搭載している。ここで、プロセッサとしては、ＣＰＵ（Ｃｅｎｔｏｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等がある。
【０００３】
キャッシュメモリは、主記憶装置の上位階層に配置され、主記憶装置が記憶するデータの一部を保持する。プロセッサが、キャッシュメモリにロードされているデータにアクセスする場合（以下、「キャッシュヒット」と呼ぶ）、キャッシュメモリはプロセッサに内蔵されている等、主記憶装置よりプロセッサに近い位置にあるため、プロセッサは短時間で対象データにアクセスすることが出来る。一方、プロセッサが、キャッシュメモリにロードされていないデータにアクセスする場合（以下、「キャッシュミス」と呼ぶ）、キャッシュメモリの下位階層にあるメモリからデータを読み出す必要があるため、対象データへのアクセス時間は長くなる。そのため、キャッシュミスが生じないように、キャッシュメモリのメモリコントローラは、プロセッサからのアクセス頻度が高いデータをキャッシュメモリに保持し、アクセス頻度が低いデータを下位階層のメモリに追い出すように動作する。
【０００４】
未使用時間が長いデータを優先的に、下位階層のメモリに追い出すアルゴリズムとしてＬｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）が知られている。ＬＲＵは、キャッシュメモリに空きが無くなったとき、保持されるデータのうち未使用の時間が最も長いデータを下位階層のメモリに追い出すアルゴリズムである。
【０００５】
ＬＲＵは、例えば、キャッシュメモリのエントリごとに、使用時間を示すデータを保存する。エントリを使用するごとにそのデータを更新し、エントリが更新されるタイミングで、それらの時刻を全エントリに対してチェックすると、「最も使用されていないエントリ」が判明する。しかし、ＬＲＵは、使用時間を全エントリに対してチェックする処理に時間がかかる。特に、キャッシュメモリをウェイに分割し、１つのインデックスに対して複数のタグアドレスを持たせたセットアソシアティブ型キャッシュメモリでは、インデックスとウェイの乗算で対象となるキャッシュラインが決まるため、チェック処理にさらに時間がかかる。
【０００６】
簡易に未使用データを判別するために、プロセッサから供給される命令の種類を判別することで、プロセッサによるアクセス頻度の高いデータを決定する方法が提案されている。プロセッサが実行する命令がメモリアクセス命令のとき、メモリアクセス命令により取得されたデータは、以後参照される可能性が高いことを示す状態情報で管理する。そして、プロセッサが実行する命令により演算結果がキャッシュラインに登録されたとき、登録データは、以後参照される可能性が少ないことを示す状態情報で管理される。
【０００７】
キャッシュメモリに保持されたプロセッサによるアクセス頻度の低いデータを、下位階層のメモリに置き換える技術が知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−０３８２９８号広報
【特許文献２】特開２００７−２７２６８１号広報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
プロセッサが、ロード要求又はプリフェッチ要求によって読み出されたデータを登録するラインが置換対象か否かを特定する属性情報を付加する場合がある。さらに、プロセッサが、属性情報を付加したロード要求と、ロード要求に付加した属性情報と異なる属性情報を付加し、且つロード要求と同じアドレスに対するプリフェッチ要求とを、連続して出力する場合がある。このような場合、先行するロード要求により下位階層にあるメモリからデータが読み出されるので、メモリコントローラは、後続のプリフェッチ命令は一度中断し、ロード要求によりメモリからデータを取得した後で、後続のプリフェッチ要求に付加された属性情報でキャッシュラインを更新するように動作する。
【００１０】
しかし、メモリコントローラが、プリフェッチ命令を中断し、応答信号をプロセッサに供給する間、プロセッサとキャッシュメモリとの間にあるバッファ回路が占有されるため、プロセッサがデータアクセス要求をキャッシュメモリに供給することが出来ない。
【００１１】
開示の演算処理装置は、主記憶装置へのアクセス時間を短縮することを目的とする。
【課題を解決するための手段】
【００１２】
開示の演算処理装置は、第１の記憶部を有する演算処理部と、第１の記憶部が保持するデータの一部を保持する第２の記憶部と、第２の記憶部からデータを読み出し、第１の論理値を取る第１の属性情報を含む第１の要求と、第２の記憶部からデータを読み出し、且つ第１の論理値と異なる第２の論理値を取る第２の属性情報を含む第２の要求とを、演算処理部から受け取り、且つ、第１の要求の完了通知を受け取るまで第１の要求を保持し又は第２の要求の完了通知を受け取るまで第２の要求を保持する第３の記憶部と、第１及び第２の要求を第３の記憶部から受け取り、且つ第１及び第２の要求に対応するアドレスのデータが第２の記憶部に無い場合、第１の要求の第１の属性情報を、第２の属性情報に置き換え、且つ第２の要求に対する完了通知を第１の記憶部に供給する制御部と、を有する。
【発明の効果】
【００１３】
開示の演算処理装置は、主記憶装置へのアクセス時間を短縮するという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】演算処理装置の構成の一例を示す図である。
【図２】キャッシュメモリの一例を示す図である。
【図３】置換ウェイ制御回路の構成の一例を示す図である。
【図４】ＬＤポート及びＰＦポートの一例を示す図である。
【図５Ａ】ＭＩＢの一例を示す図である。
【図５Ｂ】ＭＩＢの一例を示す図である。
【図６】パイプラインの処理の一例を示す図である。
【図７】パイプラインの処理の一例を示す図である。
【図８】パイプラインの処理の一例を示す図である。
【図９】プロセッサコアが同一アドレスに対してロード要求及びプリフェッチ要求を発行した場合の処理のシーケンスの一例を示す図である。
【図１０】プロセッサコアが同一アドレスに対してロード要求及びプリフェッチ要求を発行した場合の処理のタイムチャートである。
【図１１Ａ】セクタＩＤの置換処理がなされるキャッシュラインの状態をウェイ毎に示す図である。
【図１１Ｂ】セクタＩＤの置換処理がなされるキャッシュラインの状態をウェイ毎に示す図である。
【図１２】同一アドレスに対して複数の要求が出された場合のスワップ可能性の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、プロセッサとしての演算処理装置の実施形態を説明する。
図１は、演算処理装置の構成の一例を示す図である。図１に示す演算処理装置１０は、演算処理部としてのプロセッサコア（Ｐｒｏｃｅｓｓｏｒ  Ｃｏｒｅ）５、Ｌ２キャッシュコントローラ（Ｌｅｖｅｌ−２  Ｃａｃｈｅ  Ｃｏｎｔｒｏｌｌｅｒ）８０、Ｌ２タグＲＡＭ（Ｌｅｖｅｌ−２  Ｔａｇ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０１、Ｌ２データＲＡＭ（Ｌｅｖｅｌ−２  Ｄａｔａ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２、セクタＩＤＲＡＭ（Ｓｅｃｔｏｒ  ＩＤ  ＲＡＭ）２０３、置換ウェイ制御回路３００、及びムーブインバッファ（ＭＩＢ：Ｍｏｖｅ−Ｉｎ  Ｂｕｆｆｅｒ）１６０を有する。演算処理装置１０は、メモリコントローラ４００を介して主記憶装置４２０に接続される。
【００１６】
プロセッサコア５は、命令部（ＩＵ：Ｉｎｔｅｒｇｅｒ  Ｕｎｉｔ）１２、実行部（ＥＵ：Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ）１４、Ｌ１キャッシュコントローラ（Ｌｅｖｅｌ−２  Ｃａｃｈｅ  Ｃｏｎｔｒｏｌｅｒ）１６、Ｌ１キャッシュメモリ（Ｌｅｖｅｌ−１  Ｃａｃｈｅ  Ｍｅｍｏｒｙ）１８を有する。なお、演算処理装置１０は、プロセッサコアを複数搭載するマルチコアプロセッサであっても良い。演算処理装置１０がマルチコアプロセッサの場合、プロセッサコア５以外の他のプロセッサコアも、プロセッサコア５と同様の処理を実行する。
【００１７】
命令部１２は、データ要求信号をＬ１キャッシュコントローラ１６に供給して、データを取得する。Ｌ１キャッシュメモリ１８で、キャッシュヒットが生じると、Ｌ１キャッシュメモリ１８から命令が命令部１２へ供給される。またＬ１キャッシュメモリ１８で、キャッシュミスが生じると、Ｌ１キャッシュコントローラ１６は、ＬＤポート（ＬｏａＤ  Ｐｏｒｔ）６４へロード要求を、又は、ＰＦポート（ＰｒｅＦｅｔｃｈ  Ｐｏｒｔ）６６へプリフェッチ要求を発行する。なお、プリフェッチ要求とは、要求元であるプロセッサコア５があらかじめ必要と予想されるデータを主記憶装置からＬ２キャッシュメモリ１００に登録する要求である。
【００１８】
Ｌ１キャッシュメモリ１８から読み出した命令を、デコードして、デコード命令及びレジスタアドレスを「演算制御信号」として、実行部１４に供給する。デコードした命令は、例えば、Ｌ１キャッシュメモリ１８へのロード命令、ストア命令、又はプリフェッチ命令である。なお、これらの命令は、データの置換状態を制御するために規定されるセクタＩＤを含む。セクタＩＤは、図３を用いて後述される。命令部１２は、データ要求信号をＬ１キャッシュコントローラ１６に供給することで、Ｌ１キャッシュメモリ１８から命令を読み出す。
【００１９】
実行部１４は、実行部１４の内部にあるレジスタアドレスで特定されるレジスタからデータを取り出し、デコードした命令に従って演算する。実行部１４は、デコードされた命令に従って、「データ要求信号」として、ロード要求、ストア要求、又はプリフェッチ要求を、Ｌ１キャッシュコントローラ１６に供給する。Ｌ１キャッシュコントローラ１６は、ロード命令に従って、データを実行部１４に供給する。実行部１４は、命令の実行を終了すると、次の演算制御信号を受け取るために、演算完了信号を命令部１２に供給する。
【００２０】
Ｌ１キャッシュメモリ１８は、図示しないが、Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ（ＴＬＢ）、Ｌ１タグＲＡＭ、及びＬ１データＲＡＭを含む。そして、Ｌ１キャッシュコントローラ１６は、仮想アドレスでキャッシュラインを特定し、ＴＬＢ及びＬ１タグＲＡＭのキャッシュラインからそれぞれ読み出される物理アドレスを比較することで、Ｌ１キャッシュメモリ１８のキャッシュミス又はヒットを判断する。
【００２１】
Ｌ２キャッシュコントローラ８０は、ＭＯポート（Ｍｏｖｅ−ＯｕｔＰｏｒｔ）６２、ＬＤポート６４、ＰＦポート６６、優先制御回路６０、パイプライン７０、データ入力バッファ３２、及びデータ出力バッファ３４を有する。
【００２２】
ＭＯポート６２、ＬＤポート６４、ＰＦポート６６は各プロセッサコアに対応して存在する。ＭＯポート６２、ＬＤポート６４、ＰＦポート６６は、それぞれ、Ｌ２キャッシュメモリの置換要求（ＭＯ要求）、ロード要求（ＬＤ要求）、プリフェッチ要求（ＰＦ要求）を一時的に保持し、且つパイプライン７０に処理の要求を行う。ＭＯポート６２、ＬＤポート６４、ＰＦポート６６は、パイプライン７０によるパイプライン処理が完了すると、Ｌ１キャッシュコントローラ１６に開放通知を発行する。
【００２３】
ＭＯポート６２、ＬＤポート６４、ＰＦポート６６は、プロセッサコア５からの要求のオーバフローを防止するために、要求通知で現在のポインタ値に１を加算（＋１）し（インクリメント）、開放通知で現在のポインタ値から１を減算する（−１）資源カウンタを持ち、資源カウンタがエントリ数を超えないように要求発行を制限する。ＬＤポート６４及びＰＦポート６６の一例は、図４を用いて後述される。
【００２４】
優先制御回路６０は、ＭＯポート６２、ＬＤポート６４、ＰＦポート６６から要求を受け取り、所定の優先順位に従ってパイプライン７０へ要求を投入する。
【００２５】
パイプライン７０は、Ｌ２キャッシュメモリ１００へのデータアクセス要求、各種資源管理を行う。パイプライン７０は、Ｌ２キャッシュメモリ１００でキャッシュミスが生じると、ＬＤポート６４又はＰＦポート６６から受け取ったロード要求又はプリフェッチ要求を、ＭＩＢ１６０に投入する。パイプライン７０は、パイプラインの処理が完了したことを示す完了信号、又は、処理が中断したことを示す中断信号を、ＭＯポート６２、ＬＤポート６４、ＰＦポート６６へ供給する。なお、パイプラインの処理の一例は、図５〜７を用いて後述する。
【００２６】
ＭＩＢ１６０は、パイプライン７０からロード要求又はプリフェッチ要求を受け取ると、主記憶装置４２０からデータを取得するために、メモリコントローラ４００へ対象となるデータのロード要求を発行する。以下、メモリコントローラ４００へのロード要求を「Ｍロード要求」と呼ぶ。その後、ＭＩＢ１６０は、メモリコントローラ４００からのデータ応答を待つ。
【００２７】
また、ＭＩＢ１６０は、キャッシュミスにより、メモリコントローラ４００にＭロード要求を発行しているデータの属性情報（アドレス等）を一次的に保持する。ＭＩＢ１６０の一例は、図８を用いて後述される。
【００２８】
データ入力バッファ３２は、Ｌ２キャッシュメモリ１００でキャッシュヒットが検出された場合、Ｌ２データＲＡＭ２０２から読み出されたデータを受け取り、プロセッサコア５に供給する。また、データ入力バッファ３２は、Ｍロード要求によって主記憶装置４２０から読み出したデータを、プロセッサコアに供給する。データ出力バッファ３４は、プロセッサコア５からデータを受け取り、Ｌ２データＲＡＭ２０２又は主記憶装置４２０に書き込む。
【００２９】
以上の構成により、ＬＤポート６４がロード要求を受け取った場合を説明する。ＬＤポート６４は、パイプライン７０にロード要求を投入する。パイプライン７０で、Ｌ２タグＲＡＭ２０１からタグを検索してキャッシュヒットしたら、Ｌ２データＲＡＭ２０２で読み出したデータを、データ出力バッファ３４経由でプロセッサコア５へ転送する。タグを検索してキャッシュミスしたら、パイプライン７０は、ＭＩＢ１６０へ要求を登録し、メモリコントローラ４００へロード要求を発行する。
【００３０】
ロード要求を受信したメモリコントローラ４００は、主記憶装置４２０からデータを取得し、ＭＩＢ１６０にデータ応答を返し、データをデータ入力バッファ３２へ送信する。データ応答を受信したＭＩＢ１６０は、プライオリティ部にＬ２タグＲＡＭの更新およびＬ２データＲＡＭの更新、さらにプロセッサコア５へのデータ応答を要求する。データ応答を受信したプロセッサコア５のＬ１キャッシュコントローラ１６は、実行部１４へデータを転送するとともにＬ１キャッシュメモリ１８へのデータの登録を行う。
【００３１】
図２は、キャッシュメモリの一例を示す図である。図２に示されるＬ２キャッシュメモリ１００は、４ウェイのセットアソシアティブ方式のキャッシュメモリである。図２に示されるように、Ｌ２キャッシュメモリ１００は、複数のセットで構成されており、各セットは、キャッシュウェイ１０１ａ〜１０１ｄに分けて管理される。
【００３２】
図２に示されるＬ２キャッシュメモリ１００は、Ｌ２キャッシュメモリ１００が保持するデータを、キャッシュライン１０３−１〜１０３−ｎと呼ぶ単位で管理する。各キャッシュラインは、プロセッサコア５からのデータアクセス要求３５０に含まれるインデックスアドレスにより特定される。データアクセス要求３５０は、例えば、ロード要求、及びプリフェッチ要求がある。
【００３３】
Ｌ２キャッシュメモリ１００は、Ｌ２タグＲＡＭ２０１、Ｌ２データＲＡＭ２０２、セクタＩＤＲＡＭ２２１、ライトアンプ２１１〜２１３、比較回路２３１ａ〜２３１ｄ、及び選択回路２３２、２３３を含む。Ｌ２タグＲＡＭ２０１、Ｌ２データＲＡＭ２０２、及びセクタＩＤＲＡＭ２２１はそれぞれ、キャッシュライン１０３−１〜１０３−ｎに対応した複数のエントリを有する。Ｌ２タグＲＡＭ２０１の各エントリには、「タグ」と呼ばれる物理アドレスの一部が保持される。Ｌ２キャッシュメモリ１００は、４つのウェイを有するため、連想度は「４」である。１つのインデックスアドレスにより、４つのキャッシュライン及び４つのタグが特定される。
【００３４】
Ｌ２タグＲＡＭ２０１の各エントリには、タグが保持される。タグは、ライトアンプ２１１により書き込まれる。Ｌ２データＲＡＭ２０２の各エントリには、タグにより特定されるデータが保持される。Ｌ２データＲＡＭ２０２の各エントリは、ライトアンプ２１２によりデータが書き込まれる。セクタＩＤＲＡＭ２２１の各エントリには、セクタＩＤが保持される。セクタＩＤＲＡＭ２２１の各エントリは、ライトアンプ２１３により「セクタＩＤ」が書き込まれる。セクタＩＤは、１ビット又は２ビットで構成される。１ビットの場合は、セクタＩＤの値は０か１の何れかの値を取り得る。２ビットの場合は、セクタＩＤは、０〜２の３通り又は０〜３の４通りの値を取り得る。
【００３５】
比較回路２３１ａ〜２３１ｄ、ＴＬＢから供給される物理アドレスの一部と、Ｌ２データＲＡＭから読み出したタグとを比較することで、キャッシュミス又はキャッシュヒットを判定する回路である。比較回路２３１ａ〜２３１ｄは、それぞれキャッシュウェイ１０１ａ〜１０１ｄに関係付けられる。キャッシュヒットを生じた比較回路２３１ａ〜２３１ｄは、タグの一致が検出された比較回路の出力のみが１となる、４ビットのヒットウェイ信号を出力する。
【００３６】
キャッシュミスの場合、主記憶装置上の物理アドレスからデータを取得する動作がなされる。キャッシュミスにおけるデータ取得動作の一例は、図４を用いて後述される。
【００３７】
キャッシュヒットが発生した場合であってメモリアクセス要求が読出し要求の場合には、Ｌ２データＲＡＭ２０２において、インデックスにより指定されるキャッシュラインから、各キャッシュウェイに対応する４つのキャッシュラインのデータ値が選択回路２３２に読み出される。そして、４つの比較回路から出力されるヒットウェイ信号により、タグの一致が検出された比較回路に対応する何れかのキャッシュウェイに対応するキャッシュラインのデータ値が選択されて出力される。
【００３８】
キャッシュヒットが発生した場合であってメモリアクセス要求が書込み要求の場合には、Ｌ２データＲＡＭ２０２において、インデックスにより指定されるキャッシュラインにおける、各キャッシュウェイに対応する４つのキャッシュラインのうち、ヒットウェイ信号により指示されるキャッシュウェイのブロックに、メモリアクセス要求によって指定されるデータが書き込まれる。
【００３９】
以上の構成により、データアクセス要求３５０によりアクセス対象のアドレスが特定されると、インデックスにより、キャッシュライン１０３−１〜１０３−ｎのうちの１つが指定される。その結果、キャッシュウェイ１０１ａ〜１０１ｄから、インデックスに対応する各キャッシュラインが読み出され、インデックスで特定されるキャッシュラインのタグが、それぞれ比較回路２３１ａ〜２３１ｄに入力される。
【００４０】
キャッシュライン１０３−１〜１０３−ｎは、読み出された各キャッシュラインのタグと、データアクセス要求３５０に含まれたタグとの一致又は不一致を検出する。この結果、タグの一致が検出された比較回路において読み出されているキャッシュラインが、キャッシュヒットしたということになり、選択回路２３２からそのキャッシュラインのデータが読み出される。
【００４１】
図３は、置換ウェイ制御回路の構成の一例を示す図である。置換ウェイ制御回路３００は、キャッシュミスが発生したときに、インデックスにより指定されたキャッシュラインを有する４つのキャッシュウェイ１０１のうち、どのウェイが置換されるべきかを決定する。
【００４２】
図３において、まず、データアクセス要求３５０には、Ｌ２キャッシュメモリ１００におけるデータの置換を制御するために規定される１ビットのセクタＩＤ３０２が付加される。セクタＩＤは、キャッシュラインの置換処理において、置換対象のデータを特定するために使用される属性情報である。例えば、プロセッサコア５は、Ｌ２キャッシュメモリのキャッシュラインの置換処理を行うとき、セクタＩＤが「１」であるキャッシュラインを置換し、セクタＩＤが「０」であるキャッシュラインは置換しない。このように、セクタＩＤはそのセクタＩＤを有するキャッシュラインを置換対象とするか否かを制御するために使用される。
【００４３】
データアクセス要求３５０は、セクタＩＤを含む。データアクセス要求３５０内のインデックスは、Ｌ２タグＲＡＭ２０１、Ｌ２データＲＡＭ２０２、及びセクタＩＤＲＡＭ２０３のライン番号を指定する。置換ウェイ選択可能マスク生成回路３０３は、インデックスにより指定されたセクタＩＤＲＡＭ２０３のライン番号から、４ビットのセクタＩＤ３０１と、データアクセス要求３５０に付加されている１ビットのセクタＩＤ３０２とを受け取る。
【００４４】
そして、置換ウェイ選択可能マスク生成回路３０３は、エクスクルーシブオア回路（ＸＯＲ）３０３−１とインバータ（ＩＮＶ）３０３−２とによって構成される。置換ウェイ選択可能マスク生成回路３０３は、データアクセス要求３５０からの１ビットのセクタＩＤ３０２と、セクタＩＤＲＡＭ２０３からの４ビットのセクタＩＤ３０１の各ビットとの間で、エクスクルーシブノア演算を実行する。
【００４５】
これにより、データアクセス要求３５０に付加されているセクタＩＤ３０２のビット値（図３の例では「０」）と同じセクタＩＤのビット値を持つビット位置のみが値１となる、置換ウェイ候補３０９が出力される。例えば、図２のセクタＩＤＲＡＭ２０３から４ビットのセクタＩＤ３０１として「０００１」が読み出されている場合には、そのうちの値「０」の部分が一致により「１」、値「１」の部分が不一致により「０」となることにより、４ビットからなる置換ウェイ候補３０９として「１１１０」が出力される。
【００４６】
この置換ウェイ候補３０９は、値１を有するビット位置に対応するキャッシュウェイ１０１が、データアクセス要求３５０によって置換されるべきウェイであることを指示している。
【００４７】
そして、置換ウェイ選択回路３０４は、置換ウェイ候補３０９において値が１であるビット位置に対応するウェイのうちの何れか１つを、ＬＲＵアルゴリズム等に従って選択する。置換ウェイ選択回路３０４は、選択されたウェイに対応するビット位置のみが１となる４ビットからなる置換ウェイ３１０（図３の例では「１０００」）を出力する。
【００４８】
置換ウェイ３１０は、セレクタ３０５、３０６、及び３０７に入力し、各セレクタにおいて、置換ウェイ３１０の４ビットのデータのうち値が１となるビット位置に対応するウェイを選択させる。
【００４９】
セレクタ３０５、３０６、３０７は、Ｌ２データＲＡＭ２０２、Ｌ２タグＲＡＭ２０１、及びセクタＩＤＲＡＭ２０３内の置換ウェイ３１０の４ビットのデータのうち値が１となるビット位置に対応するウェイに、データ、タグ、及びセクタＩＤをそれぞれ出力する。
【００５０】
また、データアクセス要求３５０内のインデックスは、Ｌ２データＲＡＭ２０２、Ｌ２タグＲＡＭ２０１、及びセクタＩＤＲＡＭ２０３のライン番号を指定する。これにより、Ｌ２データＲＡＭ２０２、Ｌ２タグＲＡＭ２０１、及びセクタＩＤＲＡＭ２０３において、指定されたライン番号の選択されたウェイのキャッシュライン１０３（塗りつぶされた部分）に、データ、タグ、及びセクタＩＤが書き込まれる。
【００５１】
上述の機能により、Ｌ２キャッシュメモリ１００から追い出したくないデータについてのデータアクセス要求３５０については、プロセッサコア５は、そのデータアクセス要求３５０に例えばセクタＩＤ＝１を指定してメモリアクセスを行う。追出処理において、セクタＩＤ＝１のキャッシュラインは、追い出されないように使用することが出来る。その後、Ｌ２キャッシュメモリ１００からすぐに追い出されてもよいデータについてのデータアクセス要求３５０を実行する場合には、プロセッサコア５は、そのデータアクセス要求３５０に例えばセクタＩＤ＝０を指定してメモリアクセスを行う。
【００５２】
これにより、セクタＩＤ＝０を付されて実行されたデータアクセス要求３５０のデータについては、キャッシュミス時にＬ２キャッシュメモリ１００上でセクタＩＤ＝０が記憶されたキャッシュウェイにおいてのみ置換が発生する。この場合、セクタＩＤ＝１と共にＬ２キャッシュメモリ１００に書き込まれたデータは置換されず追い出されない。
【００５３】
このようにして、どのデータを追い出すかどうかを、データアクセス要求３５０に付したセクタＩＤによって制御することができるようになる。このデータアクセス要求３５０は、ユーザがプログラムによる指定するアクセス命令であってもよく、又はシステムの特定のハードウェアがＬ２キャッシュメモリ１００に対して自動的に発行する要求であってもよい。
【００５４】
図４は、ＬＤポート及びＰＦポートの一例を示す図である。ＬＤポート６４は、エントリ選択部６４−１、空きエントリ選択部６４−２、ＬＤ信号記憶回路６４−３、デコーダ６４−４を有する。
【００５５】
ＬＤ信号記憶回路６４−３は、有効ビッド（Ｖａｌｉｄ）、要求アドレスの物理アドレス（ＰＡ）、コード（ＣＯＤＥ）、セクタＩＤ、Ｌ１識別情報（Ｌ１  ＩＤ）、ホールド（ｈｌｄ  ｆｌｇ）を登録するエントリ構成を有する。
【００５６】
Ｌ１識別番号は、Ｌ１キャッシュコントローラ１６で生成される、ロード要求を識別する識別番号である。
【００５７】
コード（ＣＯＤＥ）は、信号種類を特定する情報である。コードは、「共有型命令プリフェッチ要求」、「共有型データプリフェッチ要求」、「排他型データプリフェッチ要求」の何れかを特定する。「共有型命令プリフェッチ要求」は、プリフェッチで取得した命令を、他のプロセッサコアで取得する「共有型」の状態情報でＬ２キャッシュメモリ１００に保持することを要求する信号種類である。「共有型データプリフェッチ要求」は、プリフェッチで取得したデータを、他のプロセッサコアで取得する「共有型」の状態情報でＬ２キャッシュメモリ１００に保持することを要求する信号種類である。「排他型データプリフェッチ要求」は、プリフェッチで取得したデータを排他型、つまり要求元プロセッサコアがデータを変更できる状態で保持することを要求する信号種類である。
【００５８】
エントリ選択部６４−１が、ＬＤ信号を受け取ると、空きエントリ選択部６４−２により通知されたエントリに対して、ＬＤ信号を登録する。デコーダ６４−４は、パイプライン７０から、ポート並びにエントリＩＤを特定する完了通知又は中止通知を受け取る。デコーダ６４−４は、完了通知を受け取ると、完了通知により特定されるエントリの有効ビットを無効に設定する。デコーダ６４−４は、中止通知を受け取ると、中止通知により特定されるエントリのホールドを有効に設定する。空きエントリ選択部は、有効ビット（Ｖａｌｉｄ）が無効となっているエントリを検索して、エントリ選択部６４−１に通知する。
【００５９】
ＬＤポート６４は、プロセッサコア５からＬＤ信号を、受け取り、空いているエントリに登録し、要求の受信順にパイプライン７０へロード要求を投入する。パイプライン７０は、最終ステージで完了通知または中止通知をＬＤポート６４へ供給する。完了の場合はエントリを開放し、中止の場合は再度パイプライン７０へロード要求を投入する。
【００６０】
ＰＦポート６６は、エントリ選択部６６−１、空きエントリ選択部６６−２、ＰＦ信号記憶回路６６−３、デコーダ６６−４を有する。
【００６１】
ＰＦ信号記憶回路６６−３は、有効ビッド（Ｖａｌｉｄ）、物理アドレス（ＰＡ）、データコード（ＣＯＤＥ）、セクタＩＤ、ストロング情報（ｓｔｒｏｎｇ）を含むデータ構造を有するＰＦ信号を、複数のエントリに保持する。プリフェッチ要求は、要求が処理されなくても性能面での劣化を無視すれば、プロセッサコアは正しい動作が可能である。しかしながら、本実施形態では、プリフェッチ要求がセクトＩＤを指定する場合、プリフェッチ要求が有効に処理されない場合、不要なＬ２キャッシュミスが生じる。図１１Ａ及び図１１Ｂを用いて、プリフェッチ要求が有効に処理されない例は、後述される。
【００６２】
ストロング情報は、プリフェッチ要求の実行を必ず行うか、実行せず完了するかを特定する。プリフェッチ要求が、「１」のストロング情報を含む場合、当該プリフェッチ要求は、必ず処理しなければならないストロングプリフェッチ要求であることを意味する。よって、プロセッサコア５が実行するソフトウェアは、プリフェッチ要求のストロング情報が「１」の場合、プリフェッチ要求実行によりＬ２キャッシュメモリ１００にデータが書き込まれたことを想定してコード化されている。そのため、プリフェッチ要求のストロング情報が「１」のときに、プリフェッチ要求が適切に実行されない場合、図１１Ａ及び図１１Ｂで示すような不要なＬ２キャッシュミスが生じる。
【００６３】
一方、プリフェッチ要求が、「０」のストロング情報を含む場合、当該プリフェッチ要求は、必ず処理しなければならないストロングプリフェッチ要求では無いことを意味する。よって、プロセッサコア５が実行するソフトウェアは、プリフェッチ要求のストロング情報が「０」の場合、ソフトウェアは、図１１Ａ及び図１１Ｂで示すようなＬ２キャッシュミスが生じないようにコード化されている。このように、ストロング情報は、ソフトウェアを作成する上で、プリフェッチ要求の使用方法に柔軟性を与える。
【００６４】
ＰＦポート６６の他の構成要素の動作は、ＬＤポート６４の対応する構成要素と同じであるので、説明を省略する。
【００６５】
図５Ａ及び図５Ｂは、ＭＩＢの一例を示す図である。ＭＩＢ１６０は、エントリ選択部１６０−１、空きエントリ選択部１６０−２、バッファ回路１６０−３、デコーダ１６０−４、１６０−１１、ＰＡ比較部１６０−５、ＡＮＤ回路１６０−６、１６０−９、及びＯＲ回路１６０−７、１６０−８を有する。ＭＩＢ１６０はさらに、ＭＩＢエントリ監視部１６０−１０、選択回路１６０−１２、１６０−１３を有する。
【００６６】
バッファ回路１６０−３は、有効ビッド（Ｖａｌｉｄ）、物理アドレス（ＰＡ）、コード（ＣＯＤＥ）、ＰＦ番号、セクタＩＤ、Ｌ１識別情報（Ｌ１−ＩＤ）、ホールド（ｈｌｄ  ｆｌｇ）、及びコアＩＤを登録するエントリ構成を有する。バッファ回路１６０−３はさらに、ウェイ識別情報（ＷＡＹ  ＩＤ）、メインコントローラ要求済みフラグ（Ｒｅｑ＿ｉｓｓｕｅｄ）、置換処理完了（ＲＰＬ＿ｃｐｌｔ）、メモリコントローラ応答受信（ＭＳ＿ｃｐｌｔ）を登録するエントリ構成を有する。
【００６７】
物理アドレス（ＰＡ）、及びコード（ＣＯＤＥ）ＩＤは、プロセッサコア５で生成されて、ＭＩ又はＰＦポートを介して、ＭＩＢ１６０で最初のエントリ獲得により登録される。
【００６８】
ＰＦ番号は、パイプライン７０で生成され、ＭＩＢ１６０で最初のエントリ獲得、又はＬＤスワップにより登録される。なお、ＭＩＢ１６０に保持される先行のロード要求のセクタＩＤを、後続のプリフェッチ要求のセクタＩＤで更新する処理を「ＬＤスワップ」と呼ぶ。また、ＭＩＢ１６０に保持される先行のプリフェッチ要求のセクタＩＤを、後続のプリフェッチ要求のセクタＩＤで更新する処理を「ＰＦスワップ」と呼ぶ。「ＬＤスワップ」は、図６を用いて後述され、「ＰＦスワップ」は、図７を用いて後述される。
【００６９】
セクタＩＤは、プロセッサコア５で生成されて、ＬＤポート６４又はＰＦポート６６を介して、ＭＩＢ１６０で最初のエントリ獲得、又はＬＤスワップ又はＰＦスワップにより登録される。
【００７０】
Ｌ１識別番号は、プロセッサコア５で生成され、ＬＤポート６４を介して、ＭＩＢ１６０で最初のエントリ獲得、又はＬＤスワップにより登録される。
【００７１】
コアＩＤは、パイプライン７０で生成され、ＭＩＢ１６０で最初のエントリ獲得、又はＬＤスワップにより登録される。
【００７２】
ウェイＩＤは、Ｌ２タグＲＡＭ２０１で生成され、ＭＩＢ１６０で最初のエントリ獲得により登録される。このように、ＬＤスワップ時は、ロード要求に関わるＬ１識別情報、コアＩＤ、さらにセクタＩＤが更新されるが、ＰＦスワップ時はセクタＩＤのみが更新される。
【００７３】
エントリ選択部１６０−１が、ＬＤ信号又はＰＦ信号又は更新情報を受け取ると、空きエントリ選択部１６０−２により通知されたエントリに対して、ＬＤ信号又はＰＦ信号又は更新情報を登録する。デコーダ１６０−４は、パイプライン７０から、ＬＤポート６４又はＰＦポート６６、並びにエントリＩＤを特定する完了通知又は中止通知を受け取る。デコーダ１６０−４は、完了通知を受け取ると、完了通知により特定されるエントリの有効ビットを無効に設定する。
【００７４】
デコーダ１６０−４は、中止通知を受け取ると、中止通知により特定されるエントリのホールドを有効に設定する。空きエントリ選択部１６０−２は、有効ビット（Ｖａｌｉｄ）が無効となっているエントリを検索して、エントリ選択部１６０−１に通知する。デコーダ１６０−１１は、メモリコントローラ４００からデータを読み出したことを示すメモリ応答信号を受け取り、メモリ応答信号により特定されるエントリのメモリコントローラ応答受信（ＭＳ＿ｃｐｌｔ）を「１」にする。
【００７５】
ＰＡ比較部１６０−５は、パイプライン７０で処理中のロード要求又はプリフェッチ要求の対象データのＰＡと、ＭＩＢ１６０に保持されているデータのＰＡとを比較することで、両データの一致を判断する。両データが一致すると、ＰＡ比較部１６０−５は、「１」を、ＡＮＤ回路１６０−６及びＯＲ回路１６０−７に供給する。ＯＲ回路１６０−７は、ＰＡ比較部１６０−５から「１」の信号を受け取ると、パイプライン７０にＰＡ一致通知を供給する。ＡＮＤ回路１６０−６は、エントリの数だけある。ＯＲ回路１６０−８は、ＰＡが一致し、且つ、メモリコントローラ４００からデータ応答がある場合に、「１」をＡＮＤ回路１６０−９に供給する。
【００７６】
ＡＮＤ回路１６０−９は、アドレスが一致するエントリがあり、メモリコントローラ４００からデータ応答がある場合は、スワップ可能通知をパイプライン７０に供給しないように動作する。パイプライン７０は、スワップ可能通知が「１」のときに、ＬＤスワップ又はＰＦスワップ信号をＭＩＢ１６０に供給するように動作する。よって、パイプライン７０は、ＭＩＢ１６０に同じアドレスに対する先行要求があったとしても、主記憶装置４２０からデータを既に取得している場合は、パイプライン７０がＬＤスワップ又はＰＦスワップ信号を、ＭＩＢ１６０に供給することが出来ない。このように、ＬＤスワップ又はＰＦスワップの動作を行わないのは、図９で後述するように、後続の要求がＬＤポート又はＰＦポートを無駄に有する時間も無く、且つ先行要求により読み出されたデータがプロセッサコアに送信する遅延させないためである。
【００７７】
ＭＩＢ１６０は、パイプライン７０からＬＤ信号又はＰＦ信号又は更新通知を受け取り、空いているエントリにロード要求又はプリフェッチ要求を登録する。バッファ回路１６０−３から受信順に要求を取り出し、メモリコントローラ４００へＭロード要求を投入する。パイプライン７０は、最終ステージで完了通知または中止通知をＬＤポート６４へ供給する。完了の場合はＬＤポート６４又はＰＦポート６６からエントリを開放する。
【００７８】
ＭＩＢエントリ監視部１６０−１０は、有効ビッド（Valid）が「１」、及びメインコントローラ要求済みフラグ（Req_issued）が「０」のとき、メモリコントローラ４００に選択信号Ｓ１を選択回路１６０−１１に供給するように動作する。ＭＩＢエントリ監視部１６０−１０は、有効ビッド（Valid）及び置換処理完了（Req_issued）及びメモリコントローラ応答受信（MS_cplt）が「１」であり、ホールド（hld flg）が「０」のときに選択信号Ｓ２を選択回路１６０−１３に供給するように動作する。
【００７９】
選択回路１６０−１２は、選択信号Ｓ１を受け取ると、選択信号Ｓ１生成の条件となったエントリを置換する置換処理命令を、優先制御回路６０に供給する。置換回路１６０−１３は、選択信号Ｓ２を受け取ると、メモリコントローラ４００にＭロード要求を供給するように動作する。
【００８０】
図６〜図８は、パイプラインの処理の一例を示す図である。パイプライン７０は、優先制御回路６０により決定される優先順にしたがって処理を実行する。優先順は要求の種別毎に、例えば、「データ取得後のタグＲＡＭ及びセクタＩＤＲＡＭ更新」＞「Ｌ２キャッシュラインの置換」＞「ロード要求」＞「プリフェッチ要求」の順である。「データ取得後のタグＲＡＭ及びセクタＩＤＲＡＭ更新」及び「Ｌ２キャッシュラインの置換」は、ＬＤポート６４、ＰＦポート６６、及びＭＩＢ１６０のエントリが開放される処理である。エントリ開放処理を優先させることでＬ２キャッシュメモリのデッドロック可能性を軽減している。
【００８１】
パイプライン７０は、要求を、ステージと呼ばれる処理工程に分けて処理する。パイプライン７０は、クロックに同期して、各ステージを同じ処理時間で処理する。パイプライン７０は、各ステージの処理工程を実行するために、Ｌ２タグＲＡＭ２０１、優先制御回路６０などのリソースと接続しており、リソースに信号を供給、又は受け取ることで処理工程を実行する。
【００８２】
パイプライン７０のステージは、動作要求読出ステージ（ＲＲ）、優先順位決定ステージ（ＰＤ）、ＰＡ入力ステージ（ＰＩ）、タグ読出ステージ（ＴＲ）、キャッシュヒット検出ステージ（ＣＤ）、要求処理判断ステージ（ＲＰ）である。
【００８３】
図６を用いて、パイプライン７０によるロード要求処理の一例を説明する。要求読出ステージでは、パイプライン７０は、ＬＤポート６４又はＰＦポート６６に保持される要求を読み取る。優先順位決定ステージでは、パイプライン７０は、読み取った要求を優先制御回路６０に供給して、所定の優先順位により優先制御回路６０により決定された要求を受け取る。
【００８４】
ＰＡ入力ステージでは、パイプライン７０は、Ｌ２タグＲＡＭ２０１にアクセス対象データの物理アドレスを入力する。タグ読出ステージでは、パイプライン７０は、Ｌ２タグＲＡＭ２０１からタグを読み出す。キャッシュヒット検出ステージでは、パイプライン７０は、Ｌ２キャッシュメモリ１００からキャッシュヒット又はキャッシュミスを検出する。
【００８５】
要求処理判断ステージでは、キャッシュヒット検出ステージの検出結果に従って、処理がなされる。
【００８６】
キャッシュミス検出の場合、パイプライン７０は、ＭＩＢ１６０のエントリにロード要求を投入して、ＬＤポート６４へ完了通知を供給する。
【００８７】
キャッシュヒット検出の場合、パイプライン７０は、Ｌ２データＲＡＭ２０２からデータを読み出して、ＬＤポート６４へ完了通知を供給する。
【００８８】
パイプライン７０は、ＭＩＢ１６０へロード要求投入後、ＭＩＢ１６０から「ＰＡ一致通知」を受け取ると、ＭＩＢ１６０へ先行して投入したプリフェッチ要求と後続のロード要求との間で差異のある情報を更新する「スワップ」通知を供給する。差異のある情報とは、例えば、セクタＩＤである。
【００８９】
ＭＩＢ１６０に、物理アドレスが一致する２つ以上のプリフェッチ要求又はロード要求が保持されていることを「ＰＡ一致」と呼ぶ。
【００９０】
パイプライン７０は、ＭＩＢ１６０へロード要求投入後、ＭＩＢ１６０から「ＰＡ一致通知」を受け取り、ＭＩＢ１６０で保持する要求間に差異がなければ、パイプライン７０は、ＭＩＢ１６０へ完了通知を供給し、且つ、ＬＤポート６４に中止通知を供給する。ＭＩＢ１６０は、完了通知を受け取ると、完了通知により特定されたエントリを開放する。
【００９１】
その他、ロード要求が処理されなかった場合、パイプライン７０は、ＭＩＢ１６０に中止通知を供給する。
【００９２】
図７を用いて、パイプラインによるプリフェッチ要求処理の一例を説明する。プロフェッチ要求処理は、要求処理判断ステージ以外は、ロード要求処理と同じである。よって、要求処理判断ステージについてのみ説明する。
【００９３】
キャッシュミス検出の場合、パイプライン７０は、ＭＩＢ１６０のエントリにプリフェッチ要求を投入して、ＬＤポート６４へ完了通知を供給する。
【００９４】
キャッシュヒット検出の場合、パイプライン７０は、Ｌ２データＲＡＭ２０２からデータを読み出して、ＬＤポート６４へ完了通知を供給する。
【００９５】
パイプライン７０は、ＭＩＢ１６０へプリフェッチ要求投入後、ＭＩＢ１６０から「ＰＡ一致通知」を受け取ると、ＭＩＢ１６０へ先行して投入したプリフェッチ要求と後続のプリフェッチ要求との間で差異のある情報を更新する「スワップ」通知を供給する。
【００９６】
パイプライン７０は、ＭＩＢ１６０へプリフェッチ要求投入後、ＭＩＢ１６０から「ＰＡ一致通知」を受け取り、ＭＩＢ１６０で保持する要求間に差異がなければ、パイプライン７０は、ＭＩＢ１６０へ完了通知を供給し、且つ、ＬＤポート６４に中止通知を供給する。ＭＩＢ１６０は、完了通知を受け取ると、完了通知により特定されたエントリを開放する。
【００９７】
その他、プリフェッチ要求が処理されなかった場合、パイプライン７０は、ＭＩＢ１６０に中止通知を供給する。
【００９８】
図８を用いて、パイプラインによるＬ２置換要求処理の一例を説明する。Ｌ２置換要求処理は、要求処理判断ステージ以外は、ロード要求処理と同じである。よって、要求処理判断ステージについてのみ説明する。
【００９９】
置換対象ラインがＬ２キャッシュメモリ１００に無い場合、パイプライン７０は、ＭＯポート６２へ完了通知を供給する。
【０１００】
置換対象ラインがＬ２キャッシュメモリ１００に在る場合、パイプライン７０は、置換対象ラインに対して主記憶装置４２０から取得したデータのライトバック処理、又は対象ラインの無効化処理を行い、ＭＯポート６２へ完了通知を供給する。
【０１０１】
置換要求が処理されなかった場合、パイプライン７０は、置換要求処理を中止し、ＭＯポート６２に中止通知を供給する。
【０１０２】
図９は、プロセッサコアが同一アドレスに対してロード要求及びプリフェッチ要求を発行した場合の処理のシーケンスの一例を示す図である。図１０は、プロセッサコアが同一アドレスに対してロード要求及びプリフェッチ要求を発行した場合の処理のタイムチャートである。図９及び図１０では、同じ符号で示される処理は、同じ動作が行われる。
【０１０３】
プロセッサコア５は、ＬＤポート６４に、「セクタＩＤ＝０」を含むロード要求を出力する（Ｓ１１）。ＬＤポート６４は、ロード要求を保持する（Ｓ１２）。ＬＤポート６４に保持されるロード要求が、優先制御回路６０により、パイプライン７０に投入されると、パイプライン７０がキャッシュミスを検出し、ＭＩＢ１６０にロード要求を登録する（Ｓ１３）。ロード要求に含まれるセクタＩＤ＝０が、ＭＩＢ１６０のエントリに登録される（Ｓ１４）。ＭＩＢ１６０は、メモリコントローラ４００にＭロード要求信号を供給する（Ｓ１５）。メモリコントローラ４００は、主記憶装置４２０からＭロード要求により特定される物理アドレスのデータを取得する（Ｓ１６）。
【０１０４】
さらに、プロセッサコア５は、ロード要求をＬＤポート６４に供給した後で、ロード要求と同一のアドレスに対する「セクタＩＤ＝１」を含むプリフェッチ要求を、ＰＦポート６６に供給する（Ｓ３１）。ＰＦポート６６は、プリフェッチ要求を保持する（Ｓ３２）。ＰＦポート６６に保持されるプリフェッチ要求が、優先制御回路６０により、パイプライン７０に投入される。そして、パイプライン７０が、キャッシュミスを検出し、且つＭＩＢ１６０に先行のロード要求が同じアドレスに対する要求であることを検出する（Ｓ３３）。パイプライン７０は、プリフェッチ要求に含まれる「セクタＩＤ＝１」で、ロード要求のセクタＩＤに対してＬＤスワップする（Ｓ３４）。さらに、パイプライン７０は、ＰＦポート６６に対して完了通知を供給する。なお、プリフェッチ要求のストロング情報が「０」であり、プリフェッチをしなくても良い場合は、Ｓ３４では、ＬＤスワップをすることなく、パイプライン７０は、ＰＦポートに対して完了通知を出力する。
【０１０５】
先行のロード要求は、同一アドレスに対するものであるため、ロード要求により、主記憶装置から対象とするデータを取得することが出来る。そのため、Ｓ４１に示すように、後続のプリフェッチ要求を中止する。そして、中止したプリフェッチ要求は、先行するロード要求により、タグＲＡＭ及びデータＲＡＭが更新された後で、リトライ処理（Ｓ４２）によりタグＲＡＭでセクタＩＤ＝１を登録することが出来る（Ｓ４３）。しかし、Ｓ４１では、中止したプリフェッチ要求が、ＰＦポートのエントリを占有することになる。そのため、Ｓ３３に示すように、ＰＦスワップし、後続のプリフェッチ要求を完了させることで、ＰＦポートの不要な占有を無くすことが出来る。
【０１０６】
メモリコントローラ４００からデータが送信される（Ｓ１７）と、ＭＩＢ１６０は、置換命令をパイプライン７０に供給する（Ｓ１８）。ＭＩＢ１６０から置換要求を受け取ったパイプライン７０は、主記憶装置４２０から取得したデータをＬ２データＲＡＭ２０２に登録し（Ｓ１９）、タグとセクタＩＤをＬ２タグＲＡＭ２０１に登録する（Ｓ２０）。データ入力バッファ３２は、主記憶装置４２０から取得したデータを、プロセッサコア５に送信する（Ｓ２１）。
【０１０７】
図１１Ａ及び図１１Ｂは、図９及び図１０に示したセクタＩＤの置換処理がなされるキャッシュラインの状態をウェイ毎に示す図である。図１１Ａ及び図１１Ｂに示すＬ２キャッシュメモリのウェイ数は、「８」である。また、プロセッサコアは、セクタＩＤ＝０になるウェイの数が常に「１」であるように、Ｌ２キャッシュメモリに対してプリフェッチ要求又はロード要求を発行する。
【０１０８】
状態７０１は、キャッシュミスによる置換処理前のキャッシュラインの状態を示す。状態７０１のときのＬＲＵ７１１は、「Ａ＜Ｂ＜Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ（Ａが最も古く、Ｈが最新）」の状態となる。
【０１０９】
状態７０２は、Ｌ２キャッシュが、アドレスＸをセクタＩＤ＝０でロードするロード要求を受け取った後、キャッシュミスが生じたため、アドレスＸと同一インデックスのアドレスＡを置換して、アドレスＸを登録したキャッシュラインの状態を示す。状態７０２のときのＬＲＵ７１２は、「Ｂ＜Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ＜Ｘ」となり、ＷＡＹ０に登録されたアドレスＸはＬＲＵでは最新の状態になる。
【０１１０】
状態７０３は、図９及び図１０のＳ３４に示す「ＬＤスワップ」がなされた後のキャッシュラインの状態である。Ｌ２キャッシュが、アドレスＸをセクタＩＤ＝１でプリフェッチするプリフェッチ要求を受け取り、アドレスＡがセクタＩＤ＝０で登録されているために、セクタＩＤ＝１のアドレスＸに置き換えられた状態を示す。状態７０３のＬＲＵ７１３は、「Ｂ＜Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ＜Ｘ」となり、状態７０２のＬＲＵ７１２と同じである。
【０１１１】
状態７０４は、Ｌ２キャッシュが、アドレスＹをセクタＩＤ＝０でプリフェッチするプリフェッチ要求を受け取った後、キャッシュミスが生じたため、アドレスＹと同一インデックスのアドレスＹを置換して、アドレスＹを登録したキャッシュラインの状態を示す。アドレスＹをセクタＩＤ＝０でプリフェッチするプリフェッチ要求を受け取った時点では、アドレスＹと同一インデックスの全ウェイがセクタＩＤ＝１で登録されており、セクタＩＤ＝０で登録されているブロックが存在しない。そのため、ＬＲＵアルゴリズムによって最も古いブロックであるアドレスＢ（ＷＡＹ＝１）がリプレース対象として選択され、アドレスＹが登録される。よって、状態７０４のＬＲＵ７１４は、「Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ＜Ｘ＜Ｙ」である。
【０１１２】
状態７０５は、Ｌ２キャッシュが、アドレスＸをセクタＩＤ＝１でロードするロード要求を受け取り、キャッシュヒットが生じたときの状態を示す。アドレスＸのデータが使用されたため、ＬＲＵ７１５では、アドレスＸが最新になる。よって、状態７０５のＬＲＵ７１５は、「Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ＜Ｙ＜Ｘ」である。
【０１１３】
このように、「ＬＤスワップ」によって、先行のプリフェッチ要求によるセクタＩＤ＝１の更新が適切に実行されたため、プロセッサコアは、セクタＩＤ＝１でロードするロード要求がキャッシュヒットする。
【０１１４】
一方、状態７２３〜７２５は、図９及び図１０のＳ３４に示す「ＬＤスワップ」がなされず、後続のプリフェッチ要求が完了された場合を示す。
【０１１５】
状態７２３は、アドレスＸをセクタＩＤ＝１でプリフェッチするプリフェッチ要求が完了させられたため、Ｌ２キャッシュが、アドレスＡがセクタＩＤ＝０で登録されているために、セクタＩＤ＝０のアドレスＸに置き換えられた状態を示す。状態７２３のＬＲＵ７３３は、「Ｂ＜Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ＜Ｘ」となる。
【０１１６】
状態７２４では、プロセッサコアが、アドレスＹをセクタＩＤ＝０でプリフェッチするプリフェッチ要求を発行する。この時点でアドレスＹと同一インデックスのうちセクタＩＤ＝０で登録されているブロックはＸのみであるため、アドレスＸ（ＷＡＹ＝０）が置換対象として選択され、ＷＡＹ＝０にアドレスＹが登録される。Ｘの置換処理の際に、Ｌ２キャッシュコントローラは、プロセッサコアのＬ１キャッシュの同一アドレスに対して無効化処理を要求する。状態７２４のＬＲＵ７３４は、「Ｂ＜Ｃ＜Ｄ＜Ｅ＜Ｆ＜Ｇ＜Ｈ＜Ｙ」となる。
【０１１７】
状態７２５では、プロセッサコアが、アドレスＸをセクタＩＤ＝１でロードするロード要求を発行する。プロセッサコアが実行するソフトウェアの想定に反し、アドレスＸはＬ１キャッシュでキャッシュミスとなる。状態７２５のＬＲＵ７３５は、ＬＲＵ７３４と変わらない。
【０１１８】
このように、セクタＩＤが、ソフトウェアの想定に反して、Ｌ２キャッシュコントローラで適切に処理されないと、演算処理装置１０の性能低下を招くことになる。一方、上記の状態７０３のように、「ＬＤスワップ」させることによって、不要なキャッシュミスを防止し、演算処理装置１０の性能低下を招かない。
【０１１９】
図９及び図１０に示す例では、先行要求がロード要求であり、後続要求がプリフェッチ要求のケースを示したが、先行要求と後続要求との他のケースについても、ＰＦスワップ又はＬＤスワップを行うことが出来る。
【０１２０】
図１２は、同一アドレスに対して複数の要求が出された場合のスワップ可能性の一例を示す図である。表６００の第１行には、先行要求がプリフェッチ要求で、後続要求がプリフェッチの場合、スワップ可能であることが示される。スワップ後のＭＩＢのエントリは、先行及び後続ともにプリフェッチ要求であるため、プリフェッチ要求が保持される。
【０１２１】
表６００の第２行には、先行要求がプリフェッチ要求で、後続要求がロード要求の場合、スワップ可能であることが示される。ただし、このケースでは、スワップ後のＭＩＢのエントリは、ロード要求が保持される。これは、ロード要求は、プリフェッチ要求と異なり、Ｌ１識別情報というロード要求ごとにユニークな識別情報が付されるので、プリフェッチ要求と異なり、プロセッサコアに戻されるまで、当該エントリの内容の消去、無効化又は初期化することが出来ないからである。
【０１２２】
表６００の第３行には、図９及び図１０で説明した例であるので、説明を省略する。
【０１２３】
表６００の第４行には、先行及び後続ともにロード要求の場合は、スワップが出来ないことが示される。これは、ロード要求は、それぞれユニークなＬ１識別情報を有するため、スワップしても後続のロード要求を当該エントリの内容の破棄、消去、無効化又は初期化することが出来ないからである。
【符号の説明】
【０１２４】
５    プロセッサコア
１０    演算処理装置
３２    データ入力バッファ
３４    データ出力バッファ
６０    優先制御回路
６２    ＭＯポート
６４    ＬＤポート
６６    ＰＦポート
７０    パイプライン
８０    Ｌ２キャッシュコントローラ
１００    Ｌ２キャッシュメモリ
１６０    ＭＩＢ
２０１    Ｌ２タグＲＡＭ
２０２    Ｌ２データＲＡＭ
３００    置換ウェイ制御回路
４００    メモリコントローラ
４２０    主記憶装置
【図１】
0005609092.tif 000002
【図２】
0005609092.tif 000003
【図３】
0005609092.tif 000004
【図４】
0005609092.tif 000005
【図５Ａ】
0005609092.tif 000006
【図５Ｂ】
0005609092.tif 000007
【図６】
0005609092.tif 000008
【図７】
0005609092.tif 000009
【図８】
0005609092.tif 000010
【図９】
0005609092.tif 000011
【図１０】
0005609092.tif 000012
【図１１Ａ】
0005609092.tif 000013
【図１１Ｂ】
0005609092.tif 000014
【図１２】
0005609092.tif 000015