(57)【要約】  マルチコアプロセッサであるＣＰＵ（１００ａ）の共有Ｌ２キャッシュ部（１０２Ａ）は、ＣＰＵコア部（１０１）ごとに設けられるＰＦＰＯＲＴ（１０２ｂ）とは別に、複数のＣＰＵコア部（１０１）が共有する共有ＰＦＰＯＲＴ（１０２ｊ）をさらに有する。共有ＰＦＰＯＲＴ（１０２ｊ）は、ＰＦＰＯＲＴ（１０２ｂ）からＬ２パイプライン処理部（１０２ｆ）へ投入されたプリフェッチ要求が完了しなかったことを契機にしてエントリを確保する。そして、完了しなかったプリフェッチ要求は、共有ＰＦＰＯＲＴ（１０２ｊ）からＬ２パイプライン処理部（１０２ｆ）へ再投入される。
2009104240.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置において、
前記第１の演算処理部は、
第１のキャッシュメモリを有するとともに、前記第１のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、
前記第２の演算処理部は、
第２のキャッシュメモリを有するとともに、前記第２のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、
前記共有キャッシュメモリ制御部は、
前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、
前記第１の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第１のプリフェッチ記憶部と、
前記第２の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第２のプリフェッチ記憶部と、
前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行する共有プリフェッチ記憶部を有することを特徴とする演算処理装置。
【請求項２】
前記プリフェッチ処理部は、
前記第１又は第２のプリフェッチ記憶部から発行された前記プリフェッチ要求が完了できなかった場合に、
前記共有プリフェッチ記憶部が有する前記エントリに既に保持されているプリフェッチ要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、
前記完了できなかったプリフェッチ要求を前記エントリに既に保持されているプリフェッチ要求とマージすることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記プリフェッチ処理部は、
前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、
前記第１又は第２のキャッシュメモリに対して既に発行されたロード要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、
前記完了できなかったプリフェッチ要求を前記エントリから消去することを特徴とする請求項１記載の演算処理装置。
【請求項４】
前記第１及び第２のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのＮ分の１（Ｎは整数）のサイズを有し、
前記第１及び第２のプリフェッチ記憶部と前記共有プリフェッチ記憶部は、
前記サブライン単位でプリフェッチを前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする請求項１記載の演算処理装置。
【請求項５】
前記第１及び第２のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのＮ分の１（Ｎは整数）のサイズを有し、
前記プリフェッチ処理部は、
前記完了できなかったプリフェッチ要求を、前記第１又は第２のプリフェッチ記憶部から前記サブライン単位で消去することを特徴とする請求項１記載の演算処理装置。
【請求項６】
前記共有キャッシュメモリ制御部はさらに、
前記第１又は第２のキャッシュメモリに対して既に発行されたロード要求を保持するロード要求記憶部をさらに有し、
前記プリフェッチ処理部は、
前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、
前記ロード要求記憶部に既に保持されたロード要求の対象アドレスと、前記完了できなかったプリフェッチ要求との間において、前記ロード要求と前記完了できなかったプリフェッチ要求の対象アドレスが一致するとき、
前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする請求項１記載の演算処理装置。
【請求項７】
前記共有プリフェッチ記憶部は、
前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、
前記完了できなかったプリフェッチ要求が、プリフェッチ処理を必ず処理しなければならない属性であるとき、
前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする請求項１記載の演算処理装置。
【請求項８】
第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置において、
前記第１の演算処理部は、
第１のキャッシュメモリを有するとともに、前記第１のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、
前記第２の演算処理部は、
第２のキャッシュメモリを有するとともに、前記第２のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、
前記共有キャッシュメモリ制御部は、
前記第１及び第２のロード要求を保持するロード要求記憶部と、
前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、
前記第１の演算処理部からのプリフェッチ要求を、第１の待ち合わせフラグを有する第１のエントリに保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第１のプリフェッチ記憶部と、
前記第２の演算処理部からのプリフェッチ要求を、第２の待ち合わせフラグを有する第２のエントリに保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第２のプリフェッチ記憶部を有するとともに、
前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求の対象アドレスと前記ロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、前記第１又は第２の待ち合わせフラグを前記プリフェッチ要求に対応する前記第１又は第２のエントリにそれぞれセットするとともに、前記第１又は第２の待ち合わせフラグがセットされた前記第１又は第２のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第１又は第２の待ち合わせフラグを解除し、前記共有プリフェッチ記憶部が有する第３のエントリが空いた場合に、前記第１又は第２のプリフェッチ記憶部において、前記第１又は第２のエントリのうち前記第１又は第２の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するとともに当該エントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第３のエントリに保持させることを特徴とする演算処理装置。
【請求項９】
第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置の制御方法において、
第１のキャッシュメモリを有する前記第１の演算処理部が、前記第１のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、
第２のキャッシュメモリを有する前記第２の演算処理部が、前記第２のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、
第１のプリフェッチ記憶部が、前記第１の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記共有キャッシュメモリ制御部が有するプリフェッチ処理部に発行するステップと、
第２のプリフェッチ記憶部が、前記第２の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、
共有プリフェッチ記憶部が、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行するステップを有することを特徴とする演算処理装置の制御方法。
【請求項１０】
第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置の制御方法において、
第１のキャッシュメモリを有する前記第１の演算処理部が、前記第１のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、
第２のキャッシュメモリを有する前記第２の演算処理部が、前記第２のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、
前記共有キャッシュメモリ制御部が有するロード要求記憶部が、前記第１及び第２のロード要求を保持するステップと、
前記共有キャッシュメモリ制御部が有する第１のプリフェッチ記憶部が、前記第１の演算処理部からのプリフェッチ要求を、第１の待ち合わせフラグを有する第１のエントリに保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、
前記共有キャッシュメモリ制御部が有する第２のプリフェッチ記憶部が、前記第２の演算処理部からのプリフェッチ要求を、第２の待ち合わせフラグを有する第２のエントリに保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、
前記共有キャッシュメモリ制御部が、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求の対象アドレスと前記ロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、前記第１又は第２の待ち合わせフラグを前記プリフェッチ要求に対応する前記第１又は第２のエントリにそれぞれセットするステップと、
前記共有キャッシュメモリ制御部が、前記第１又は第２の待ち合わせフラグがセットされた前記第１又は第２のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第１又は第２の待ち合わせフラグを解除するステップと、
前記共有プリフェッチ記憶部が有する第３のエントリが空いた場合に、前記第１又は第２のプリフェッチ記憶部において、前記共有キャッシュメモリ制御部が、前記第１又は第２のエントリのうち前記第１又は第２の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するステップと、
前記共有キャッシュメモリ制御部が、当該エントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第３のエントリに保持させることを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１及び第２の演算処理部と、第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置および演算処理装置の制御方法に関し、特に、第１及び第２の演算処理部から共有キャッシュメモリへのプリフェッチ要求の処理効率を向上させる演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
一般に、ＣＰＵ（Central  Processing  Unit）などの制御処理装置を有する情報処理装置において、ＣＰＵの処理速度を向上させるため、使用頻度が高いデータをメインメモリとは別のキャッシュメモリに記憶することがおこなわれる。【０００３】
キャッシュメモリは、メインメモリよりも容量は小さいが、高速アクセスが可能であるため、演算処理部を有するＣＰＵにキャッシュメモリを内蔵し、演算処理部からの使用頻度が高いデータを随時置き換えながらキャッシュメモリに記憶させておくことで、処理の高速化を図ることができる。【０００４】
また、より処理の高速化を図るために、階層的にキャッシュメモリを設け、ＣＰＵの演算処理部は、処理の際に、先ず最も高速アクセス可能な１次キャッシュ（以下、Ｌ１キャッシュと呼ぶ）にアクセスする。【０００５】
その際、Ｌ１キャッシュに必要なデータがない場合には、（以下、Ｌ１キャッシュミスと呼ぶ）、２次キャッシュ（以下、Ｌ２キャッシュと呼ぶ）にデマンド要求（以下、ＤＭと呼ぶ）を発行し、Ｌ１キャッシュミスが発生したデータに対してアクセスを要求するという制御をおこなっている。【０００６】
ところで、ＣＰＵの処理性能を向上させるため、演算部として１つのＣＰＵに複数のＣＰＵプロセッサコア（以下、ＣＰＵコアと呼ぶ）が搭載されることがある。【０００７】
近年では、このようなマルチコアプロセッサとして、ワンチップ上に複数のＣＰＵコアを実装するオンチップマルチコアプロセッサが普及してきている。【０００８】
オンチップマルチコアプロセッサが採用される場合、Ｌ１キャッシュを各ＣＰＵコア内に設け、１つのＬ２キャッシュを複数のＣＰＵコアが共有する構成を取ることが一般的である。【０００９】
しかし、このように、１つのＬ２キャッシュを複数のＣＰＵコアで共有する構成である場合、Ｌ２キャッシュへのアクセスが集中するおそれがある。【００１０】
そこで、例えば、特許文献１に開示されるように、Ｌ２キャッシュへのアクセスのうち、ＤＭと、ＣＰＵコアが必要データを予測して先読みするプリフェッチ要求（以下、ＰＦと呼ぶ）とに分け、ＣＰＵコアごとに要求ごとの専用ポート（ＤＭに対してはＭＩＰＯＲＴ（Move  In  PORT）、ＰＦに対してはＰＦＰＯＲＴ（Pre  Fetch  Port））を介してＬ２キャッシュにアクセスするキャッシュメモリ制御装置が提案されている。【００１１】
【特許文献１】特開２００６−４００９０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記特許文献１に代表される従来技術では、Ｌ２キャッシュへのＰＦがほぼ必ず処理される実装の場合において、資源枯渇などの理由により完了しなかったＰＦは、ＰＦＰＯＲＴに再投入される。【００１３】
しかしながら、ＰＦＰＯＲＴのエントリに空きがない場合には、エントリが空くまで待機させられるので、ＰＦ全体のスループットの低下を招いていた。【００１４】
本発明は、上記問題点（課題）を解消するためになされたものであって、複数のＣＰＵコアによりＬ２キャッシュが共有される構成において、ＣＰＵコアからＬ２キャッシュへのＰＦがほぼ必ず処理される実装である場合、資源枯渇などの理由により処理完了しなかったＰＦが効率的に再処理され、ＰＦ全体のスループットを向上させることが可能な演算処理装置および演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した問題を解決し、目的を達成するため、本発明は、第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置において、前記第１の演算処理部は、第１のキャッシュメモリを有するとともに、前記第１のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、前記第２の演算処理部は、第２のキャッシュメモリを有するとともに、前記第２のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行し、前記共有キャッシュメモリ制御部は、前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、前記第１の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第１のプリフェッチ記憶部と、前記第２の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第２のプリフェッチ記憶部と、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行する共有プリフェッチ記憶部を有することを特徴とする。【００１６】
また、本発明は、上記発明において、前記プリフェッチ処理部は、前記第１又は第２のプリフェッチ記憶部から発行された前記プリフェッチ要求が完了できなかった場合に、前記共有プリフェッチ記憶部が有する前記エントリに既に保持されているプリフェッチ要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、前記完了できなかったプリフェッチ要求を前記エントリに既に保持されているプリフェッチ要求とマージすることを特徴とする。【００１７】
また、本発明は、上記発明において、前記プリフェッチ処理部は、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記第１又は第２のキャッシュメモリに対して既に発行されたロード要求の対象アドレスとプリフェッチ要求の種類が、前記完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、前記完了できなかったプリフェッチ要求を前記エントリから消去することを特徴とする。【００１８】
また、本発明は、上記発明において、前記第１及び第２のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのＮ分の１（Ｎは整数）のサイズを有し、前記第１及び第２のプリフェッチ記憶部と前記共有プリフェッチ記憶部は、前記サブライン単位でプリフェッチを前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする。【００１９】
また、本発明は、上記発明において、前記第１及び第２のキャッシュメモリが有するキャッシュラインは、前記共有キャッシュメモリのサブラインとして、前記共有キャッシュメモリのキャッシュラインのサイズのＮ分の１（Ｎは整数）のサイズを有し、前記プリフェッチ処理部は、前記完了できなかったプリフェッチ要求を、前記第１又は第２のプリフェッチ記憶部から前記サブライン単位で消去することを特徴とする。【００２０】
また、本発明は、上記発明において、前記共有キャッシュメモリ制御部はさらに、前記第１又は第２のキャッシュメモリに対して既に発行されたロード要求を保持するロード要求記憶部をさらに有し、前記プリフェッチ処理部は、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記ロード要求記憶部に既に保持されたロード要求の対象アドレスと、前記完了できなかったプリフェッチ要求との間において、前記ロード要求と前記完了できなかったプリフェッチ要求の対象アドレスが一致するとき、前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする。【００２１】
また、本発明は、上記発明において、前記共有プリフェッチ記憶部は、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求が、プリフェッチ処理を必ず処理しなければならない属性であるとき、前記完了できなかったプリフェッチ要求を前記共有プリフェッチ記憶部が有するエントリに保持することを特徴とする。【００２２】
また、本発明は、第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置において、前記第１の演算処理部は、第１のキャッシュメモリを有するとともに、前記第１のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、前記第２の演算処理部は、第２のキャッシュメモリを有するとともに、前記第２のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行し、前記共有キャッシュメモリ制御部は、前記第１及び第２のロード要求を保持するロード要求記憶部と、前記共有キャッシュメモリに対する前記プリフェッチ要求の処理を行うプリフェッチ処理部と、前記第１の演算処理部からのプリフェッチ要求を、第１の待ち合わせフラグを有する第１のエントリに保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第１のプリフェッチ記憶部と、前記第２の演算処理部からのプリフェッチ要求を、第２の待ち合わせフラグを有する第２のエントリに保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行する第２のプリフェッチ記憶部を有するとともに、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求の対象アドレスと前記ロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、前記第１又は第２の待ち合わせフラグを前記プリフェッチ要求に対応する前記第１又は第２のエントリにそれぞれセットするとともに、前記第１又は第２の待ち合わせフラグがセットされた前記第１又は第２のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第１又は第２の待ち合わせフラグを解除し、前記共有プリフェッチ記憶部が有する第３のエントリが空いた場合に、前記第１又は第２のプリフェッチ記憶部において、前記第１又は第２のエントリのうち前記第１又は第２の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するとともに当該エントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第３のエントリに保持させることを特徴とする。【００２３】
また、本発明は、第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有し、記憶装置に接続される演算処理装置の制御方法において、第１のキャッシュメモリを有する前記第１の演算処理部が、前記第１のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、第２のキャッシュメモリを有する前記第２の演算処理部が、前記第２のキャッシュメモリに予めデータを読み込むプリフェッチ要求を、前記共有キャッシュメモリ又は記憶装置に対して発行するステップと、第１のプリフェッチ記憶部が、前記第１の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記共有キャッシュメモリ制御部が有するプリフェッチ処理部に発行するステップと、第２のプリフェッチ記憶部が、前記第２の演算処理部からのプリフェッチ要求のみを保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、共有プリフェッチ記憶部が、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行した前記プリフェッチ要求が完了できなかった場合に、前記完了できなかったプリフェッチ要求をエントリに保持するとともに、前記完了できなかったプリフェッチ要求を前記プリフェッチ処理部に発行するステップを有することを特徴とする。【００２４】
また、本発明は、第１及び第２の演算処理部と、前記第１及び第２の演算処理部から共有される共有キャッシュメモリの制御を行う共有キャッシュメモリ制御部とを有するともに、記憶装置に接続された演算処理装置の制御方法において、第１のキャッシュメモリを有する前記第１の演算処理部が、前記第１のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、第２のキャッシュメモリを有する前記第２の演算処理部が、前記第２のキャッシュメモリに対してロード要求又は予めデータを読み込むプリフェッチ要求を発行するステップと、前記共有キャッシュメモリ制御部が有するロード要求記憶部が、前記第１及び第２のロード要求を保持するステップと、前記共有キャッシュメモリ制御部が有する第１のプリフェッチ記憶部が、前記第１の演算処理部からのプリフェッチ要求を、第１の待ち合わせフラグを有する第１のエントリに保持するとともに、前記第１の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、前記共有キャッシュメモリ制御部が有する第２のプリフェッチ記憶部が、前記第２の演算処理部からのプリフェッチ要求を、第２の待ち合わせフラグを有する第２のエントリに保持するとともに、前記第２の演算処理部からのプリフェッチ要求を前記プリフェッチ処理部に発行するステップと、前記共有キャッシュメモリ制御部が、前記第１又は第２のプリフェッチ記憶部から前記プリフェッチ処理部に発行したプリフェッチ要求の対象アドレスと前記ロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、前記第１又は第２の待ち合わせフラグを前記プリフェッチ要求に対応する前記第１又は第２のエントリにそれぞれセットするステップと、前記共有キャッシュメモリ制御部が、前記第１又は第２の待ち合わせフラグがセットされた前記第１又は第２のエントリのプリフェッチ要求に対する前記記憶装置からの応答に応じて、セットされた前記第１又は第２の待ち合わせフラグを解除するステップと、前記共有プリフェッチ記憶部が有する第３のエントリが空いた場合に、前記第１又は第２のプリフェッチ記憶部において、前記共有キャッシュメモリ制御部が、前記第１又は第２のエントリのうち前記第１又は第２の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するステップと、前記共有キャッシュメモリ制御部が、当該エントリに保持されたプリフェッチ要求を前記共有プリフェッチ記憶部が有する前記第３のエントリに保持させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、第１又は第２のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、完了できなかったプリフェッチ要求をエントリに保持するとともに、完了できなかったプリフェッチ要求をプリフェッチ処理部に発行する共有プリフェッチ記憶部を有するので、完了できなかったプリフェッチ要求をプリフェッチ処理部に発行するために記憶するエントリを確保することが可能になるという効果を奏する。【００２６】
また、本発明によれば、共有プリフェッチ記憶部が有するエントリに既に保持されているプリフェッチ要求の対象アドレスとプリフェッチ要求の種類が、完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、プリフェッチ処理部が、完了できなかったプリフェッチ要求をエントリに既に保持されているプリフェッチ要求とマージするので、完了できなかったプリフェッチ要求を重複して共有プリフェッチ記憶部に保持してプリフェッチ処理部に発行するという無駄を回避することが可能になるという効果を奏する。【００２７】
また、本発明によれば、第１又は第２のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、第１又は第２のキャッシュメモリに対して既に発行されたロード要求の対象アドレスとプリフェッチ要求の種類が、完了できなかったプリフェッチ要求の対象アドレスとプリフェッチ要求の種類と、それぞれ一致するときは、プリフェッチ処理部が、完了できなかったプリフェッチ要求をエントリから消去するので、完了できなかったプリフェッチ要求をロード要求と重複して共有プリフェッチ記憶部に保持するという無駄を回避することが可能になるという効果を奏する。【００２８】
また、本発明によれば、第１及び第２のキャッシュメモリが有するキャッシュラインは、共有キャッシュメモリのサブラインとして、共有キャッシュメモリのキャッシュラインのサイズのＮ分の１のサイズを有し、第１及び第２のプリフェッチ記憶部と共有プリフェッチ記憶部は、サブライン単位でプリフェッチを共有プリフェッチ記憶部が有するエントリに保持するので、共有プリフェッチ記憶部の資源利用効率を高め、データ転送効率を高めることが可能になるという効果を奏する。【００２９】
また、本発明によれば、プリフェッチ処理部が、完了できなかったプリフェッチ要求を、第１又は第２のプリフェッチ記憶部からサブライン単位で消去するので、プリフェッチ記憶部の資源開放を速やかにし、資源利用効率を高めことが可能になるという効果を奏する。【００３０】
また、本発明によれば、第１又は第２のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、ロード要求記憶部に既に保持されたロード要求の対象アドレスと、完了できなかったプリフェッチ要求との間において、ロード要求と完了できなかったプリフェッチ要求の対象アドレスが一致するとき、プリフェッチ処理部が、完了できなかったプリフェッチ要求を共有プリフェッチ記憶部が有するエントリに保持するので、プリフェッチ要求を共有プリフェッチ記憶部からプリフェッチ処理部へ再投入することによって、アドレスが一致するロード要求をと速やかに完了させることが可能になるという効果を奏する。【００３１】
また、本発明によれば、第１又は第２のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求が完了できなかった場合に、完了できなかったプリフェッチ要求が、プリフェッチ処理を必ず処理しなければならない属性であるとき、完了できなかったプリフェッチ要求を共有プリフェッチ記憶部が有するエントリに保持するので、必ず処理しなければならない属性のプリフェッチ処理をより早期かつ確実に完了させることが可能になるという効果を奏する。【００３２】
本発明によれば、第１又は第２のプリフェッチ記憶部からプリフェッチ処理部に発行したプリフェッチ要求の対象アドレスとロード要求記憶部に既に保持されたロード要求の対象アドレスとが一致しないことにより、プリフェッチ処理部が、第１又は第２の待ち合わせフラグをプリフェッチ要求に対応する第１又は第２のエントリにそれぞれセットするとともに、第１又は第２の待ち合わせフラグがセットされた第１又は第２のエントリのプリフェッチ要求に対する記憶装置からの応答に応じて、セットされた第１又は第２の待ち合わせフラグを解除し、共有プリフェッチ記憶部が有する第３のエントリが空いた場合に、第１又は第２のプリフェッチ記憶部において、第１又は第２のエントリのうち第１又は第２の待ち合わせフラグが最も早くセットされたエントリの待ち合わせフラグを解除するとともに当該エントリに保持されたプリフェッチ要求を共有プリフェッチ記憶部が有する第３のエントリに保持させるので、第１又は第２のプリフェッチ記憶部からプリフェッチ処理部に発行されたプリフェッチ要求が完了しなかった場合に、このプリフェッチ要求をより迅速に共有プリフェッチ記憶部にエントリさせることが可能になるという効果を奏する。
【図面の簡単な説明】
【００３３】
【図１】図１は、従来のマルチコアプロセッサの構成を示すブロック図である。
【図２−１】図２−１は、共有Ｌ２プリフェッチ制御におけるＰＦのＬ２キャッシュミスに対してsn＿res＿256でＳＣの応答がある場合のタイミングチャートである。
【図２−２】図２−２は、共有Ｌ２プリフェッチ制御におけるＰＦのＬ２キャッシュミスに対してsn＿res＿64でＳＣの応答がある場合のタイミングチャートである。
【図３】図３は、従来のマルチコアプロセッサの動作を示すタイミングチャートである。
【図４】図４は、一実施の形態にかかるマルチコアプロセッサの構成を示すブロック図である。
【図５】図５は、一実施の形態にかかるマルチコアプロセッサの共有Ｌ２キャッシュ部の詳細な構成を示すブロック図である。
【図６】図６は、一実施の形態にかかるマルチコアプロセッサの動作を示すタイミングチャートである。
【図７】図７は、一実施の形態にかかる共有Ｌ２キャッシュ部の動作（待ち合わせフラグを解除することによって、プリフェッチ要求を共有ＰＦＰＯＲＴへ移動）を示すタイミングチャートである。
【図８】図８は、一実施の形態にかかる共有Ｌ２キャッシュ部の動作（共有ＰＦＰＯＲＴから、キャッシュラインのサブラインごとにエントリを消去）を示すタイミングチャートである。
【図９−１】図９−１は、共有Ｌ２キャッシュ部の非サブライン方式によるタグマッチング回路を示すブロック図である。
【図９−２】図９−２は、共有Ｌ２キャッシュ部のサブライン方式によるタグマッチング回路を示すブロック図である。
【図１０−１】図１０−１は、共有Ｌ２キャッシュ部のパイプライン処理の概要（共有ＰＦＰＯＲＴを有さない場合）を示す図である。
【図１０−２】図１０−２は、一実施の形態にかかる共有Ｌ２キャッシュ部のパイプライン処理の概要（共有ＰＦＰＯＲＴを有する場合）を示す図である。
【図１０−３】図１０−３は、共有Ｌ２キャッシュ部のＤＭパイプライン処理の概要を示す図である。
【図１０−４】図１０−４は、共有Ｌ２キャッシュ部のＬ２リプレースパイプライン処理の概要を示す図である。
【図１０−５】図１０−５は、共有Ｌ２キャッシュ部のＬ２タグライトパイプライン処理の概要を示す図である。
【図１０−６】図１０−６は、共有Ｌ２キャッシュ部のＬ２データライトパイプライン処理の概要を示す図である。
【符号の説明】
【００３４】
１００    ＣＰＵ
１０１    ＣＰＵコア部
１０１ａ    ＭＭＵ
１０１ｂ    Ｌ１命令キャッシュ
１０１ｃ    命令フェッチパイプライン処理部
１０１ｄ    デコーダ
１０１ｅ    Ｌ１データキャッシュ
１０１ｆ    ストアパイプライン処理部
１０１ｇ    演算実行パイプライン処理部
１０１ｈ    演算器
１０２、１０２Ａ    共有Ｌ２キャッシュ部
１０２ａ    ＭＩＰＯＲＴ
１０２ｂ    ＰＦＰＯＲＴ
１０２ｃ    優先制御部Ａ
１０２ｄ    優先制御部Ｂ
１０２ｅ    優先制御部Ｃ
１０２ｆ    Ｌ２パイプライン処理部
１０２ｇ    Ｌ２タグ記憶部
１０２ｈ    演算器
１０２ｉ    Ｌ２キャッシュ
１０２ｊ    共有ＰＰＦＰＯＲＴ
１０３    システムＩ／Ｆ部
１０４    ロードデータバッファ部
１０５    ストアデータバッファ部
１０６    優先制御部Ｄ
１０７    ＰＦＰＲＯＴ制御部
１０７ａ、１０７ｂ    ＡＮＤゲート
１０７ｃ    ＯＲゲート
１０７ｄ    マッチング回路
１０７ｅ、１０７ｆ    ＡＮＤゲート
１０８    エントリマージ処理部
１０９    ＯＲゲート
１１０    空きエントリ選択部
１１１、１１８    格納エントリ選択部
１１２、１２０    エントリテーブル
１１３−１    優先制御部Ｅ１
１１３−ｎ    優先制御部Ｅｎ
１１４    共有ＰＦＰＲＯＴ制御部
１１４ａ、１１４ｂ    ＡＮＤゲート
１１４ｃ    ＯＲゲート
１１４ｄ    マッチング回路
１１４ｅ、１１４ｆ    ＡＮＤゲート
１１５    エントリマージ処理部
１１５ａ    ＡＮＤゲート
１１５ｂ    ＯＲゲート
１１５ｃ    バッファ
１１６    ＯＲゲート
１１７    空きエントリ選択部
１１８    格納エントリ選択部
１１９    ＡＮＤゲート
１２０    エントリテーブル
１２１    優先制御部Ｆ
１２２    マッチング回路
１２３    ＡＮＤゲート
１２４    エンコーダ
１２４    マッチング回路
１２５、１２６、１２７    セレクタ
１２８    マッチング回路
１２９    ＯＲゲート
１３０    ＡＮＤゲート
１３１    エンコーダ
１３２、１３３、１３４、１３５、１３６、１３７    セレクタ
【発明を実施するための最良の形態】
【００３５】
以下に添付図面を参照し、本発明の演算処理装置および演算処理装置の制御方法にかかる一実施の形態を詳細に説明する。以下の一実施の形態では、複数のＣＰＵコアを有するＣＰＵ（以下、マルチコアプロセッサと呼ぶ）が複数協働して処理をおこなう演算処理装置および演算処理装置の制御方法を示す。なお、以下の一実施の形態にかかる演算処理装置が搭載される装置を情報処理装置と呼ぶこととする。【００３６】
先ず、従来のマルチコアプロセッサの構成について説明する。図１は、従来のマルチコアプロセッサの構成を示すブロック図である。以下、マルチコアプロセッサを、単に「ＣＰＵ」と呼ぶ。同図に示すように、従来のＣＰＵ１００は、複数のＣＰＵコア部１０１と、２次共有キャッシュである共有Ｌ２キャッシュ部１０２と、システムＩ／Ｆ（インターフェース）部１０３と、ロードデータバッファ部１０４と、ストアデータバッファ部１０５と、優先制御部Ｄ１０６とを有する。なお、複数のＣＰＵコア部１０１は、すべて同一の構成であるので、１つに代表させて説明をおこなう。【００３７】
情報処理装置内において、ＣＰＵ１００は、それぞれ個別のＳＣ（System  Controller）２００と接続されており、ＳＣ２００は、１つのＭＡＣ（Memory  Access  Controller  Inline  Memory  Module、主記憶制御装置）３００と接続されている。ＭＡＣ３００は、主記憶装置であるＤＩＭＭ４００へのメモリアクセスを制御する。【００３８】
ＣＰＵコア部１０１は、ＣＰＵコア部１０１が有する、後述の命令を保持する１次命令キャッシュであるＬ１命令キャッシュおよびデータを保持する１次データキャッシュであるＬ１データキャッシュ１０１ｅ（以下、これらをＬ１キャッシュと総称する）へのアクセスを制御するＭＭＵ（Memory  Management  Unit）１０１ａと、ＣＰＵの命令セット（以下、命令と呼ぶ）を記憶するＬ１命令キャッシュ１０１ｂと、Ｌ１命令キャッシュ１０１ｂからフェッチされた命令をパイプライン処理する命令フェッチパイプライン処理部１０１ｃと、データをキャッシュするＬ１データキャッシュ１０１ｅと、Ｌ１データキャッシュ１０１ｅとの間でデータのロード／ストアを制御するロード／ストアパイプライン処理部１０１ｆと、後述の演算器１０１ｈでおこなわれる演算を制御する演算実行パイプライン処理部１０１ｇと、データ演算をおこなう演算器１０１ｈと、ＤＭのＬ１キャッシュミスが発生した場合に共有Ｌ２キャッシュ部１０２に発行するＤＭをエントリに登録するＬ１−ＬＢ（Load  Buffer）１０１ｉと、ＰＦのＬ１キャッシュミスが発生した場合に共有Ｌ２キャッシュ部１０２に発行するＰＦをエントリに登録するＬ２−ＰＦＱ（Pre  Fetch  Queue）１０１ｊと、Ｌ１キャッシュから共有Ｌ２キャッシュ部１０２または後述のＤＩＭＭ４００へストアする命令またはデータをエントリに登録するＬ１−ＳＢ（Store  Buffer）１０１ｈとを有する。【００３９】
共有Ｌ２キャッシュ部１０２は、ＣＰＵコア部１０１ごとに対応して設けられる、Ｌ1−ＬＢ１０１ｉからのＤＭを受け付けてエントリする複数のＭＩＰＯＲＴ（Move  In  Port）１０２ａと、同様にＣＰＵコア部１０１ごとに対応して設けられる、Ｌ２−ＰＦＱ１０１ｊからのＰＦを受け付けてエントリする複数のＰＦＰＯＲＴ（Pre  Fetch  Port）１０２ｂと、複数のＭＩＰＯＲＴ１０２ａから優先制御により一のエントリを選択して要求を出力する優先制御部Ａ１０２ｃと、複数のＰＦＰＯＲＴ１０２ｂから優先制御により一のエントリを選択して要求を出力する優先制御部Ｂ１０２ｄと、優先制御部Ａ１０２ｃ、優先制御部Ｂ１０２ｄおよび後述のＬ２−ＬＢ（Load  Buffer）１０２ｈから出力される要求を優先制御により調停して、一の要求を出力する優先制御部Ｃ１０２ｅと、優先制御部Ｃ１０２ｅから出力された要求をパイプライン処理するＬ２パイプライン処理部１０２ｆと、後述のＬ２キャッシュ１０２ｉに記憶されているデータのタグを記憶するＬ２タグ記憶部１０２ｇと、Ｌ２パイプライン処理部１０２ｆによるＬ２タグ記憶部１０２ｇの検索によって、要求が必要とするデータが後述のＬ２キャッシュ１０２ｉにない場合（以下、Ｌ２キャッシュミスと呼ぶ）、ＤＩＭＭ４００へのデータ要求をエントリに登録するＬ２−ＬＢ（Load  Buffer）１０２ｈと、データをキャッシュするＬ２キャッシュ１０２ｉとを有する。【００４０】
具体的には、Ｌ１命令キャッシュ１０１ｂに対して命令フェッチがミスした場合、あるいはＬ１データキャッシュ１０１ｅに対してデータ操作命令（データロード、データストアなど）がミスした場合などに、Ｌ２キャッシュ１０２ｉに対するＤＭが発生し、ＭＩＰＯＲＴ１０２ａへその要求が発行される。【００４１】
また、ＰＦは、ソフトウエアの要求に基づくソフトウエアプリフェッチ、分岐予測に基づく命令フェッチの予測、あるいはデータにアクセスするアドレスの規則性などに基づいて、ＰＦＰＯＲＴ１０２ｂへ、ハードウェアで自動的に発行される。このようにして、ＣＰＵ１００が処理に必要とするデータを先読みすることによって、ＣＰＵ１００のスループットを高めている。【００４２】
ＤＭを受け付けたＭＩＰＯＲＴ１０２ａおよびＰＦを受け付けたＰＦＰＯＲＴ１０２ｂは、パイプライン処理部１０２ｆへパイプライン処理の要求を発行する。優先制御部Ａ１０２〜優先制御部Ｃ１０２ｅは、ＣＰＵコア部１０１ごとにＬＲＵ（Least  Recently  Used）などのアルゴリズムに従って要求を選択した後、要求種別のプライオリティを固定的な優先度で選択する。例えば、Ｌ２−ＬＢ１０２ｈからの要求、ＭＩＰＯＲＴ１０２ａからの要求、ＰＦＰＯＲＴ１０２ｂからの要求の順序の優先度をとる。これによって、パイプライン処理後の要求の優先度を上げることで、デッドロックやライブロックを防止することができるからである。優先権を確保した要求は、Ｌ２パイプライン処理部１０２ｆでパイプライン処理される。【００４３】
Ｌ２パイプライン処理部１０２ｆでは、要求に紐付けられるタグを読み出し、Ｌ２タグ記憶部１０２ｇを検索した結果や、Ｌ２−ＬＢ１０２ｈにエントリされる要求が指し示すデータとのアドレスマッチングの結果に基づいて、処理内容を決定する。何らかの理由でパイプライン処理が完了できない場合は、ａｂｔ（abort、処理中断）として、そのパイプライン処理を無効とする決定を行う。パイプライン処理が正常に完了できた場合は、ｃｍｐ（complete、正常終了）とする。【００４４】
パイプライン処理後、必要に応じてＬ２タグ記憶部１０２ｇに記憶されるタグの更新を行い、パイプライン処理の結果（ａｂｔ又はｃｍｐ）がＬ２−ＬＢ１０２ｈ、ＭＩＰＯＲＴ１０２ａおよびＰＦＰＯＲＴ１０２ｂへと通知される。パイプライン処理部１０２ｆから、ＤＭやＰＦのＬ２キャッシュミスにより、Ｌ２−ＬＢ１０２ｈにシステムへの要求が必要であることが通知されると、Ｌ２−ＬＢ１０２ｈはシステムＩ／Ｆ部１０３を介して、ＣＰＵごとに設けられるＳＣ２００に対してデータ要求（sc＿request、以下、sc＿reqと呼ぶ）を発行する。【００４５】
sc＿reqを受信したＳＣ２００は、システム上の全てのＣＰＵ１００が記憶するタグのコピーを有している。ＳＣ２００は、タグのコピーを検索した結果に応じてsc＿reqに対する処理を決定し、sc＿reqに対するsn＿res応答（スヌープ応答、snoop  response）をＬ２−ＬＢ１０２ｈに応答する。【００４６】
なお、キャッシュへのデータ転送単位であるキャッシュラインが２５６Ｂｙｔｅであり、キャッシュラインが４つの６４Ｂｙｔｅのサブラインで構成される場合には、sn＿res応答にはsn＿res＿64とsn＿res＿256の２種類がある。sn＿res＿64は、sc＿reqに対応する１つのサブラインについてのデータ転送をＳＣ２００が確定したことを通知する。sn＿res＿256はsc＿reqに対応する１つのサブラインを含むキャッシュラインすべてのデータ転送をＳＣ２００が確定したことを通知する。【００４７】
すなわち、sc＿reqのいずれかのサブラインを、いずれかのＣＰＵ１００が所持している場合には、ＳＣ２００は、sn＿res＿64（６４Ｂｙｔｅ転送)と決定する。また、sc＿reqのすべてのサブラインをいずれのＣＰＵ１００も所持せず、ＤＩＭＭ４００のみ所持する場合には、ＳＣ２００は、sn＿res＿256（２５６Ｂｙｔｅ転送）と決定する。【００４８】
sn＿res応答を受けたＬ２−ＬＢ１０２ｈは、必要に応じてリプレースパイプライン（L2＿replace＿pipeline）処理を要求する。リプレースパイプライン処理については、図１０−４を参照して後述する。【００４９】
ＳＣ２００は、ＣＰＵ１００から要求されたデータ転送の準備ができると、dow（Data  Out  Warning）応答をＣＰＵ１００におこなう。ＣＰＵ１００のＬ２−ＬＢ１０２ｈは、dow応答を受信すると、タグエントリパイプライン処理およびデータライトパイプライン処理の起動を要求する。タグエントリパイプライン処理およびデータライトパイプライン処理については、図１０−５および図１０−６を参照して後述する。【００５０】
dow応答に対応するデータがＤＭに対するデータであれば、ロードデータバッファ部１０４を経由してデータがＣＰＵコア部１０１に送信される。データライトパイプライン処理に同期して、ロードデータバッファ部１０４を経由して、Ｌ２キャッシュ１０２ｉにもデータが書き込まれる。一方、ＤＭに紐付けられるタグが、Ｌ２タグ記憶部１０２ｇに記憶されている場合（以下、Ｌ２キャッシュヒットと呼ぶ）、パイプライン処理部１０２ｆによってＬ２キャッシュ１０２ｉからデータが読み出され、ＣＰＵコア部１０１へのデータ転送がロードデータバッファ部１０４を経由して行われる。【００５１】
なお、優先制御部Ｄ１０６は、Ｌ２キャッシュ１０２ｉへのデータ書き込みに関し、ＳＣ２００から送られてきたロードデータバッファ部１０４を経由するロードデータと、ＣＰＵコア部１０１のＬ１−ＳＢ１０１ｈから送られてきたストアデータバッファ部１０５を経由するストアデータとの間の優先制御をおこなう。【００５２】
次に、共有Ｌ２プリフェッチ制御におけるＰＦのＬ２キャッシュミスに対してsn＿res＿256でＳＣ２００の応答がある場合およびsn＿res＿256でＳＣ２００の応答がある場合のＰＦの制御について説明する。なお、キャッシュラインは４つの６４Ｂｙｔｅのサブライン（subline０〜３）を有する２５６Ｂｙｔｅである。また、以下、ＰＦのパイプライン処理をＰＦパイプライン処理と呼ぶ。【００５３】
最初に、図２−１を参照する。図２−１は、共有Ｌ２プリフェッチ制御におけるＰＦのＬ２キャッシュミスに対してsn＿res＿256でＳＣ２００の応答がある場合のタイミングチャートである。先ず、ＣＰＵコア部１０１は、ＰＦを、対応する共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂに出力する（pf＿req（４subline）  from  Core  to  pfp  entry０、ステップＳ１０１）。なお、１回の要求で４サブライン分が出力される場合もあるし、４回に分かれてサブラインが出力される場合もある。【００５４】
ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０〜３に対応する有効フラグ（sub＿valid［０］〜sub＿valid［３］）をすべてオンにする。pfp＿entry０  life  timeは、そのＰＦによってＰＦＰＯＲＴ１０２ｂのentry０が占有され開放されるまでの期間を表す。その間、subline０〜３の少なくとも１の有効フラグがオンになっている。【００５５】
続いて、ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０についてパイプライン処理部１０２ｆへプライオリティ要求を出す。パイプライン処理部１０２ｆにおいてプライオリティが確保されると、pf＿pipeline（subline０）で示されるＰＦパイプライン処理がおこなわれる（ステップＳ１０２）。ＰＦパイプライン処理は、１０ＣＰＵＣｙｃｌｅ程度である。【００５６】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明すると、ＰＦパイプライン処理後、Ｌ２−ＬＢ１０２ｈのエントリが確保される。そして、subline０のＰＦパイプライン処理が完了されたため、ＰＦＰＯＲＴ１０２ｂのsubline０の有効フラグ（sub＿valid［０］）がオフにされる。【００５７】
さらに、Ｌ２−ＬＢ１０２ｈから、システムに対するデータ要求であるsc＿reqがＳＣ２００に発行される（ステップＳ１０３）。subline０のＰＦパイプライン処理が完了したので、次にＰＦＰＯＲＴ１０２ｂは、subline１についてパイプライン処理部１０２ｆへプライオリティ要求を出す。プライオリティが確保されると、subline１のＰＦパイプライン処理がおこなわれる（ステップＳ１０４）。【００５８】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明し、かつＬ２−ＬＢ１０２ｈにおいて２５６Ｂｙｔｅのキャッシュラインのアドレスマッチ（キャッシュラインのアドレスの一致）を検出する。【００５９】
しかし、まだsn＿resと呼ばれるＳＣ２００からのスヌープ応答が返っていない段階なので、subline１のＰＦパイプライン処理を完了させることができず、Ｌ２パイプライン処理部１０２ｆからＰＦＰＯＲＴ１０２ｂへａｂｔ通知が出され、ＰＦＰＯＲＴ１０２ｂのsubline１に対応するエントリの有効フラグ（sub＿valid［１］）はオンのままとなる。【００６０】
なお、sn＿res応答が返ってくる前に、何度も同じＰＦパイプライン処理をおこなっても、ａｂｔを繰り返すだけで無駄であるので、ＳＣ２００ｆは、ＰＦＰＯＲＴ１０２ｂに対して、ＰＦＰＯＲＴ１０２ｂのsubline１に対応するエントリの待ち合わせフラグ（wt＿flg）をオンにする指示を、ａｂｔ通知と同時に送る。ここで無駄であるという理由は、ＰＦパイプラインにおいてａｂｔとなる処理が繰り返されるために、他のＣＰＵコア部１０１からの要求のパイプライン処理がおこなわれることが阻害されることおよび消費電力の浪費である。【００６１】
ＳＣ２００での処理の結果、sn＿res＿256（２５６Ｂｙｔｅのデータ応答をおこなうことの確定を通知する信号）が、ＳＣ２００からＬ２−ＬＢ１０２ｈに返される（ステップＳ１０５）。sc＿reqからsn＿res応答通知までの時間は、通常２００〜４００ＣＰＵｃｙｃｌｅ程度である。sn＿res＿256応答を契機として、Ｌ２−ＬＢ１０２ｈからＰＦＰＯＲＴ１０２ｂに対して、待ち合わせフラグ（wt＿flg）をオフにする通知が出される。【００６２】
sn＿res＿256通知をＳＣ２００から受けたＬ２−ＬＢ１０２ｈは、リプレースパイプライン（replace＿pipeline）処理の起動を要求する。すなわち、ＰＦは、２５６Ｂｙｔｅのキャッシュラインに対してＬ２キャッシュミスであり、すべてのWAY（Ｌ２−ＬＢ１０２ｈに登録されているＤＭまたはＰＦのエントリ）が有効である場合、いずれかのWAYを追い出す必要がある。追い出すWAYは、最初のsubline０に対応するＰＦパイプライン処理時に、ＬＲＵアルゴリズムで決定される。【００６３】
そして、追いされるWAYのサブラインのうち有効なサブラインに対してのみリプレースパイプライン処理がおこなわれる（ステップＳ１０６）。WAYのサブラインが４つとも有効であれば、リプレースパイプライン処理が４回実行され、逆にWAYに有効なサブラインが存在しない場合は、リプレースパイプライン処理は行われない。【００６４】
待ち合わせフラグ（wt＿flg）をオフにする通知を受けたＰＦＰＯＲＴ１０２ｂは、再び、subline１に対応するＰＦパイプライン処理を要求し、ＰＦパイプライン処理がおこなわれる（ステップＳ１０７）。この処理の結果、２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明し、かつＬ２−ＬＢ１０２ｈにｓｎ＿ｒｅｓ＿２５６応答到達済みであり、Ｌ２−ＬＢ１０２ｈにおいて、２５６Ｂｙｔｅキャッシュライン単位でのアドレスマッチを検出する。【００６５】
Ｌ２−ＬＢ１０２ｈにsn＿res＿256応答到達済みであることは、subline１に対するデータ応答も行われることを意味するので、Ｌ２−ＬＢ１０２ｈは、subline１に対応するＰＦパイプライン処理の完了通知（ｃｍｐ）をＰＦＰＯＲＴ１０２ｂに送出し、ＰＦＰＯＲＴ１０２ｂは、subline１に対応する有効フラグ（sub＿valid［１］）をオフにする。【００６６】
同様に、subline２およびsubline３に対応するＰＦパイプライン処理も完了し（ステップＳ１０８、ステップＳ１０９）、ＰＦＰＯＲＴ１０２ｂは、subline３に対応する有効フラグ（sub＿valid［３］）をオフにすると同時に、ＰＦＰＯＲＴ１０２ｂの当該ＰＦのエントリを開放する。【００６７】
ＳＣ２００は、sn＿res＿256応答と前後して、ＭＡＣ３００に対して該当アドレスのデータ要求を行い、データの用意ができたらＣＰＵ１００に対してdow通知とともに、２５６Ｂｙｔｅのデータを送出する（ステップＳ１１０）。dowのヘッダを受信すると、タグエントリパイプライン（tag＿entry＿pipeline）処理がＬ２−ＬＢ１０２ｈからＬ２パイプライン処理部１０２ｆに対して要求され、プライオリティが確保されると、タグエントリパイプライン処理がおこなわれる（ステップＳ１１１）。タグエントリパイプライン処理は、リプレースパイプライン処理で確保されたWAYに対して４つのサブラインまとめて１回で、Ｌ２タグ記憶部１０２ｇに、当該WAYのタグを書き込む処理である。【００６８】
Ｌ２−ＬＢ１０２ｇは、dowのデータ部をＳＣ２００から受信すると、Ｌ２パイプライン処理部１０２ｆに対して、subline０〜３のデータ受信が完了した順に、リプレースパイプライン処理で確保されたWAYに対するデータライトパイプライン処理を要求し、データライトパイプライン処理がおこなわれる（ステップＳ１１２）。データライトパイプライン処理がすべて完了するとＬ２−ＬＢ１０２ｈのエントリが開放されることとなる。【００６９】
次に、図２−２を参照する。図２−２は、共有Ｌ２プリフェッチ制御におけるＬ２キャッシュミスに対してsn＿res＿64でＳＣ２００の応答がある場合のタイミングチャートである。先ず、ＣＰＵコア部１０１は、ＰＦを、対応する共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂに出力する（pf＿req（４subline）  from  Core  to  pfp  entry０、ステップＳ１２１）。なお、１回の要求で４サブライン分が出力される場合もあるし、４回に分かれてサブラインが出力される場合もある。【００７０】
ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０〜３に対応する有効フラグ（sub＿valid［０］〜sub＿valid［３］）をすべてオンにする。pfp＿entry０  life  timeは、そのＰＦによってＰＦＰＯＲＴ１０２ｂのentry０が占有され開放されるまでの期間を表す。その間、subline０〜３の少なくとも１の有効フラグがオンになっている。【００７１】
続いて、ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０についてパイプライン処理部１０２ｆへプライオリティ要求を出す。パイプライン処理部１０２ｆにおいてプライオリティを確保されると、pf＿pipeline（subline０）で示されるＰＦパイプライン処理がおこなわれる（ステップＳ１２２）。ＰＦパイプライン処理は、１０ＣＰＵＣｙｃｌｅ程度である。【００７２】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明すると、ＰＦパイプライン処理後、Ｌ２−ＬＢ１０２ｈのエントリが確保される。そして、subline０のＰＦパイプライン処理が完了されたため、ＰＦＰＯＲＴ１０２ｂのsubline０の有効フラグ（sub＿valid［０］）がオフにされる。【００７３】
さらに、Ｌ２−ＬＢ１０２ｈから、システムに対するデータ要求であるsc＿reqがＳＣ２００に発行される（ステップＳ１２３）。subline０のＰＦパイプライン処理が完了したので、次にＰＦＰＯＲＴ１０２ｂは、subline１についてパイプライン処理部１０２ｆへプライオリティ要求を出す。プライオリティが確保されると、subline１のＰＦパイプライン処理がおこなわれる（ステップＳ１０４）。【００７４】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明し、かつＬ２−ＬＢ１０２ｈにおいて２５６Ｂｙｔｅのキャッシュラインのアドレスマッチを検出する。【００７５】
しかし、まだsn＿resと呼ばれるＳＣ２００からの応答が返っていない段階なので、subline１のＰＦパイプライン処理を完了させることができず、Ｌ２パイプライン処理部１０２ｆからＰＦＰＯＲＴ１０２ｂへａｂｔ通知が出され、ＰＦＰＯＲＴ１０２ｂのsubline１に対応するエントリの有効フラグ（sub＿valid［１］）はオンのままとなる。【００７６】
ＳＣ２００での処理の結果、sn＿res＿64（６４Ｂｙｔｅのデータ応答をおこなうことの確定を通知する信号）が、ＳＣ２００からＬ２−ＬＢ１０２ｈに返される（ステップＳ１２５）。sc＿reqからsn＿res応答通知までの時間は、通常２００〜４００ＣＰＵｃｙｃｌｅ程度である。sn＿res＿64応答を契機として、Ｌ２−ＬＢ１０２ｈからの指示に基づき、ＰＦＰＯＲＴ１０２ｂは、当該エントリの待ち合わせフラグ（wt＿flg）をオフにする。【００７７】
sn＿res＿64通知をＳＣ２００から受けたＬ２−ＬＢ１０２ｈは、リプレースパイプライン（replace＿pipeline）処理の起動を要求する。すなわち、ＰＦは、２５６Ｂｙｔｅのキャッシュラインに対してＬ２キャッシュミスであり、すべてのWAY（Ｌ２−ＬＢ１０２ｈに登録されているＤＭまたはＰＦのエントリ）が有効である場合、いずれかのWAYを追い出す必要がある。追い出すWAYは、最初のsubline０に対応するＰＦパイプライン処理時に、ＬＲＵアルゴリズムで決定される。【００７８】
そして、追いされるWAYのサブラインのうち有効なサブラインに対してのみリプレースパイプライン処理がおこなわれる（ステップＳ１２６）。WAYのサブラインが４つとも有効であれば、リプレースパイプライン処理が４回実行され、逆にWAYに有効なサブラインが存在しない場合は、リプレースパイプライン処理は行われない。【００７９】
待ち合わせフラグ（wt＿flg）をオフにする通知を受けたＰＦＰＯＲＴ１０２ｂは、再び、subline１に対応するＰＦパイプライン処理を要求し、ＰＦパイプライン処理がおこなわれる（ステップＳ１２７）。この処理の結果、２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明し、かつＬ２−ＬＢ１０２ｈにｓｎ＿ｒｅｓ＿６４応答到達済みであり、Ｌ２−ＬＢ１０２ｈにおいて、２５６Ｂｙｔｅキャッシュライン単位でのアドレスマッチを検出する。【００８０】
ここで、同一のＬ２−ＬＢ１０２ｈのエントリに対して、subline１の要求がセットされ、subline１に対するsc＿reqがＳＣ２００に対して送出される（ステップＳ１２８）。ＰＦＰＯＲＴ１０２ｂには、subline１のＰＦパイプライン処理が完了したことが通知され、ＰＦＰＯＲＴ１０２ｂのsubline１の有効フラグ（sub＿valid［１］）がオフにされる。【００８１】
続いて、ＰＦＰＯＲＴ１０２ｂからsubline２のＰＦパイプライン処理の要求が出され、subline２のＰＦパイプライン処理がおこなわれる（ステップＳ１２９）。同様に、subline２のＰＦパイプライン処理はａｂｔし、Ｌ２−ＬＢ１０２ｈからの指示に基づき、ＰＦＰＯＲＴ１０２ｂは、当該エントリの待ち合わせフラグ（wt＿flg）をオンにする。【００８２】
ＳＣ２００からＬ２−ＬＢ１０２ｈに、subline２に対応するsn＿res＿64応答が到達すると（ステップＳ１３３）、ＰＦＰＯＲＴ１０２ｂのsubline２の有効フラグ（sub＿valid［２］）がオフにされ、subline２に対応するＰＦパイプライン処理がされる（ステップＳ１３４）。subline１に対応するsn＿res＿64が到達済みなので、Ｌ２−ＬＢ１０２ｈの同一エントリに対して、subline２のリクエストがセットされ、subline２に対するsc＿reqがＳＣ２００に対して送出される（ステップＳ１３５）。ＰＦＰＯＲＴ１０２ｂには、subline２のＰＦパイプライン処理が完了したことが通知され、ＰＦＰＯＲＴ１０２ｂのｓubline２の有効フラグ（sub＿valid［２］）がオフにされる。【００８３】
続いて、ＰＦＰＯＲＴ１０２ｂからsubline３のＰＦパイプライン処理の要求が出され、subline３のＰＦパイプライン処理がおこなわれる（ステップＳ１３６）。同様に、subline３のＰＦパイプライン処理はａｂｔし、Ｌ２−ＬＢ１０２ｈからの指示に基づき、ＰＦＰＯＲＴ１０２ｂは、当該エントリの待ち合わせフラグ（wt＿flg）をオンにする。【００８４】
ＳＣ２００からＬ２−ＬＢ１０２ｈに、subline３に対応するsn＿res＿64応答が到達すると（ステップＳ１４０）、ＰＦＰＯＲＴ１０２ｂのsubline３の有効フラグ（sub＿valid［３］）がオフにされ、subline３に対応するＰＦパイプライン処理がされる（ステップＳ１４１）。subline１に対応するsn＿res＿64が到達済みなので、Ｌ２−ＬＢ１０２ｈの同一エントリに対して、subline３のリクエストがセットされ、subline２に対するsc＿reqがＳＣ２００に対して送出される（ステップＳ１４２）。ＰＦＰＯＲＴ１０２ｂには、subline３のＰＦパイプライン処理が完了したことが通知され、ＰＦＰＯＲＴ１０２ｂのsubline３の有効フラグ（sub＿valid［３］）がオフにされる。これによって、ＰＦＰＯＲＴ１０２ｂの当該エントリは開放される。【００８５】
なお、ＳＣ２００は、subline０〜３に対応するsc＿reqへの各sn＿res＿64応答と前後して、ＭＡＣ３００に対して該当アドレスのデータ要求を行い、データの用意ができたらＣＰＵ１００に対してdow通知とともに、６４Ｂｙｔｅのデータを送出する（ステップＳ１３０、ステップＳ１３７、ステップＳ１４３、ステップＳ１４７）。各dowのヘッダを受信すると、タグエントリパイプライン（tag＿entry＿pipeline）処理がＬ２−ＬＢ１０２ｈからＬ２パイプライン処理部１０２ｆに対して要求され、プライオリティが確保されると、タグエントリパイプライン処理がおこなわれる（ステップＳ１３１、ステップＳ１３８、ステップＳ１４４、ステップＳ１４８）。タグエントリパイプライン処理は、リプレースパイプライン処理で確保されたWAYに対して４つのサブラインまとめて１回で、Ｌ２タグ記憶部１０２ｇに、当該WAYのタグを書き込む処理である。【００８６】
Ｌ２−ＬＢ１０２ｇは、各dowのデータ部をＳＣ２００から受信すると、Ｌ２パイプライン処理部１０２ｆに対して、subline０〜３のデータ受信が完了した順に、リプレースパイプライン処理で確保されたWAYに対するデータライトパイプライン処理を要求し、データライトパイプライン処理がおこなわれる（ステップＳ１３２、ステップＳ１３９、ステップＳ１４５、ステップＳ１４９）。データライトパイプライン処理がすべて完了するとＬ２−ＬＢ１０２ｈのエントリが開放されることとなる。【００８７】
次に、従来のマルチコアプロセッサの動作について説明する。図３は、従来のマルチコアプロセッサの動作を示すタイミングチャートである。なお、同図では、すべてsn＿res＿256応答の場合であるとする。すなわち、図示するＰＦ０〜ＰＦ８は、図２−１に示した処理と同一である。しかし、sn＿res＿256に限らず、sn＿res＿256またはsn＿res＿64のいずれかであればよい。そして、ＰＦＰＯＲＴ１０２ｂのＰＦのエントリ数は、８つであるとする。【００８８】
ＣＰＵコア部１０１からのＰＦが共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂへ、４サブラインすべてを含むキャッシュラインのＰＦが９つ発行されるとする（ＰＦ０〜ＰＦ８）。ＰＦＰＯＲＴ１０２ｂでは、最初の８つのＰＦ０〜ＰＦ７ですべてのエントリ（ＰＦＰＯＲＴ０〜ＰＦＰＯＲＴ７）が使用状態（ビジー状態）になり、９つ目のＰＦ８は、いずれかのエントリが開放されるまで待機しなければならない。【００８９】
ＰＦＰＯＲＴ０が最初に開放されるとすると、ＰＦＰＯＲＴ０のＰＦのsubline０〜３すべてのＰＦのＬ２パイプライン処理部１０２ｆにおけるＰＦパイプライン処理が完了することによってＰＦＰＯＲＴ０が開放された後に、９つ目のＰＦ８がＣＰＵコア部１０１から発行されて、そのＰＦがＰＦＰＯＲＴ０にセットされ、ＰＦパイプライン処理およびsc＿req発行がおこなわれる。【００９０】
このように、従来のマルチコアプロセッサでは、ＰＦＰＯＲＴ１０２ｂのすべてのエントリがビジー状態であるとき、いずれかのエントリに登録されているＰＦが、ＰＦパイプライン処理がａｂｔまたはｃｍｐによって開放されない限り、新たなＰＦをＰＦＰＯＲＴ１０２ｂに登録することができず、この待ち合わせのためにロスタイムが発生する。特に、複数のＣＰＵコアが１つのＬ２キャッシュを共有するマルチコアプロセッサでは、このようなロスタイムが発生する確率が高く、データの先読みによるＣＰＵ処理速度の向上を狙ったプリフェッチの効果が低下してしまうという問題点があった。【００９１】
次に、一実施の形態にかかるマルチコアプロセッサの構成について説明する。図４は、一実施の形態にかかるマルチコアプロセッサの構成を示すブロック図である。ここでは、図１に示した従来のマルチコアプロセッサとの差分についてのみ説明する。【００９２】
一実施の形態にかかるマルチコアプロセッサであるＣＰＵ１００ａの共有Ｌ２キャッシュ部１０２Ａは、ＣＰＵコア部１０１ごとに設けられるＰＦＰＯＲＴ１０２ｂとは別に、複数のＣＰＵコア部１０１が共有する共有ＰＦＰＯＲＴ１０２ｊをさらに有する。【００９３】
共有ＰＦＰＯＲＴ１０２ｊは、ＰＦＰＯＲＴ１０２ｂとほぼ同一の構成をしている。異なるのは、入力インターフェースが、ＰＦＰＯＲＴ１０２ｂはＣＰＵコア部１０１であるのに対して、共有ＰＦＰＯＲＴ１０２ｊは、Ｌ２パイプライン処理部１０２ｆの後段であることである。【００９４】
ＰＦＰＯＲＴ１０２ｂは、ＣＰＵコア部１０１からのＰＦで新規のエントリを確保するのに対して、共有ＰＦＰＯＲＴ１０２ｊは、ＰＦＰＯＲＴ１０２ｂからＬ２パイプライン処理部１０２ｆへ投入されたＰＦがａｂｔしたのを契機にしてエントリを確保している。      【００９５】
また、ＤＭとのアドレスマッチングによる重複エントリ消去操作についても、ＰＦＰＯＲＴ１０２ｂがＣＰＵコア部１０１からのＤＭとのアドレス一致があった場合に、ＰＦＰＯＲＴ１０２ｂのエントリを消去するのに対し、共有ＰＦＰＯＲＴ１０２ｊは、Ｌ２パイプライン処理部１０２ｆで処理され、Ｌ２−ＬＢ１０２ｈにエントリが登録されているＤＭとのアドレス一致があった場合に、共有ＰＦＰＯＲＴ１０２ｊのエントリを消去する。【００９６】
次に、一実施の形態にかかるマルチコアプロセッサの共有Ｌ２キャッシュ部の詳細な構成について説明する。図５は、一実施の形態にかかるマルチコアプロセッサの共有Ｌ２キャッシュ部の詳細な構成を示すブロック図である。同図においては、特に、一実施の形態にかかるマルチコアプロセッサの共有Ｌ２キャッシュ部１０２ＡのＰＦＰＯＲＴ１０２ｂおよび共有ＰＦＰＲＯＴ１０２ｊの構成について説明する。【００９７】
ＰＦＰＯＲＴ１０２ｂは、ＰＦＰＯＲＴ制御部１０７と、エントリマージ処理部１０８と、キャッシュラインにおける各サブラインの有効性を示すsub＿valid［３］のうち少なくとも１つがオンであるエントリ（少なくとも１つのサブラインが有効であるエントリ）を抽出するＯＲゲート１０９と、空きエントリ選択部１１０と、格納エントリ選択部１１１と、エントリテーブル１１２と、優先制御部Ｅ１１１３−１とを有する。ＰＦＰＯＲＴ制御部１０７は、エントリテーブル１１２のエントリごとに設けられている。また、エントリテーブル１１２の最大エントリ数は、例えば、８である。【００９８】
なお、ＰＦＰＯＲＴ１０２ｂは、ＣＰＵコア部１０１ごとに設けられているので、例えば、ｎ（ｎは自然数）個のＣＰＵコア部１０１にそれぞれ対応してｎ個のＰＦＰＯＲＴ１０２ｂが設けられることとなり、各ＰＦＰＯＲＴ１０２ｂは、優先制御部Ｅ１１１３−１、・・・、優先制御部Ｅｎ１１３−１をそれぞれ有することになる。優先制御部Ｂ１０２ｄは、優先制御部Ｅ１１１３−１、・・・、優先制御部Ｅｎ１１３−１および後述の共有ＰＦＰＲＯＴ１０２ｊの優先制御部Ｆ１２０からの出力を入力とし、優先制御によって一のＰＦを優先制御部Ｃ１０２ｅへと出力する。【００９９】
なお、エントリテーブル１１２は、所定の記憶領域に格納されるテーブルであり、「sub＿valid」と、「PA」と、「PF＿code」と、「PF＿strong」と、「wt＿flg」と、「hld＿flg」とのカラムを有する。「PA」は、ＰＦのキャッシュラインのデータが格納されている物理アドレスを示す。【０１００】
「PF＿code」は、ＰＦの要求タイプを示し、ＰＦの対象が『命令フェッチデータ』、『ロード（読み出し）データ』または『ストア（格納）アドレス（データをストアする物理アドレス）』のいずれであるかを示す。「PF＿code」の優先順位の大小関係は、『命令フェッチデータ』＜『ロードデータ』＜『ストアアドレス』である。【０１０１】
また、ＰＲＰＦＯＲＴ１０２ｂまたは共有ＰＲＰＦＯＲＴ１０２ｊに存在する先行要求と後続要求とが、対象データのアドレスが一致した場合は、ＰＦのPA［７：６］に対応するアドレスのsublineに対応するsub＿validをオフし、そのsublineに対するリクエストを消去する。これによって最後のsub＿validがオフされた場合は、ＰＲＰＦＯＲＴ１０２ｂまたは共有ＰＲＰＦＯＲＴ１０２ｊのエントリが開放されることになる。【０１０２】
なお、先行要求がＰＦで対象データが『ロードデータ』であり、後続要求がＤＭで対象データが『命令フェッチデータ』である場合、先行要求がＰＦで対象データが『ストアデータ』であり、後続要求がＤＭで対象データが『命令フェッチデータ』である場合、または、先行要求がＰＦで対象データが『ストアデータ』であり、後続要求がＤＭで対象データが『ロード命令』である場合は、ＰＦのPA［７：６］に対応するアドレスが一致する場合でも、当該sublineに対するリクエストは消去されない。【０１０３】
「PF＿strong」は、ＰＦの属性を示し、「PF＿strong」がオン（strong）であるときには必ず処理されるべきＰＦであり、「PF＿strong」がオフ（weak）であるときには必ずしも処理される必要はなく、破棄（プリフェッチロスト）されることが許容されるＰＦであることを示すフラグである。【０１０４】
「wt＿flg」は、当該エントリのＰＦが最初にＰＦパイプライン処理されたときにsn＿resの応答がなくａｂｔした場合にオンにされるフラグである。「wt＿flg」は、以後リセットされるまで、当該エントリのＰＦは、Ｌ２パイプライン処理部１０２ｆへの投入が抑止される。リセット通知は、Ｌ２−ＬＢ１０２ｈから、sn＿res＿64またはsn＿res＿256を受信した契機で通知される。「wt＿flg」がオンである限り、sn＿resの応答以前に当該ＰＦが無駄にＰＦパイプライン処理されることを防ぐ。【０１０５】
「hld＿flg」は、あるサブラインに対応するＰＦがＰＦパイプライン処理されている間オンにされるフラグである。「hld＿flg」がオンである限り、同一ＰＦの他のサブラインがＰＦパイプライン処理されないように制御する。これは、連続的に同一のＰＦのサブラインがＰＦパイプライン処理されても処理のすれ違い（ＰＦパイプライン処理の順序の逆転）が発生し、後続のサブラインのＰＦパイプライン処理をａｂｔさせなければならないためである。【０１０６】
ＰＦＰＯＲＴ制御部１０７は、ＰＦＰＯＲＴ１０２ｂ全体の制御をつかさどる制御装置であり、特に、Ｌ２パイプライン処理部１０２ｆからのＰＦのパイプラインの有効性を示す「PF＿pipe＿val」とＬ２パイプライン処理部１０２ｆからのＰＦパイプラインがａｂｔしたＰＦであることを示す「PF＿pipe＿abt」の反転論理との論理積を取るＡＮＤゲート１０７ａと、ＣＰＵコア部１０１からのＤＭであることを示す「DM＿req＿val」と後述のＡＮＤゲート１０７ｅの出力との論理積を取るＡＮＤゲート１０７ｂと、ＡＮＤゲート１０７ａの出力とＡＮＤゲート１０７ｂの出力との論理和を取るＯＲゲート１０７ｃと、ＣＰＵコア部１０１からのＤＭまたはＰＦの対象データの物理アドレス（DM/PF＿req＿PA）と、エントリテーブル１１２に格納される物理アドレス「PA」との一致性を判定するマッチング回路１０７ｄと、マッチング回路１０７ｄの出力と、エントリテーブル１１２に格納されるサブラインの有効性を示す「sub＿valid」およびＰＦの種別を表す「PF＿code」との論理積を取るＡＮＤゲート１０７ｅと、ＣＰＵコア部１０１からのＰＦのパイプラインの有効性を示す「PF＿pipe＿val」と、ＡＮＤゲート１０７の出力との論理積を取るＡＮＤゲート１０７ｆとを有する。【０１０７】
マッチング回路１０７ｄは、ＣＰＵコア部１０１からのＰＦ要求（PF＿req＿val）を受信すると、有効なエントリ（sub＿valid［３：０］）のうち少なくとも１つがオンであるエントリと、２５６Ｂｙｔｅのキャッシュライン単位でアドレスマッチングをおこなう。アドレスが一致するエントリがなければ、空きエントリ選択部１１０により選択された空きエントリに格納エントリ選択部１１１によってＰＦが登録され、アドレスが一致するエントリがあれば、エントリマージ処理部１０８によって一致するエントリにマージされる（具体的には、格納エントリ選択部１１１から「PF＿req＿set/merge」なる要求が入力されることによってset（登録）またはmerge（併合）される）。【０１０８】
ＰＦが新規のエントリに登録される場合は、ＰＦのＰＡ［７：６］に対応する物理アドレスのサブラインに対応する「sub＿valid」をオンにする。ＰＡ［７：６］＝００、０１、１０、１１がsubline０、subline１、subline２、subline３にそれぞれ対応する。【０１０９】
「PA」、「PF＿code」、「PF＿strong」については、ＣＰＵコア部１０１からのＰＦの際の通知に従う。「wt＿flg」、「hld＿flg」は初期値をオフ値とする。マージする場合は、ＰＦのＰＡ［７：６］に対応するアドレスのsublineに対応する「sub＿valid」をオンする。【０１１０】
ＰＡは変更がなく、「PF＿code」、「PF＿strong」については、先行するＰＦと後続するＰＦで「PF＿strong」が同じであれば、「PF＿code」の優先順位がより大きなものにあわせる。また、「PF＿strong」が異なる場合は、「PF＿strong」がオンである「PF＿code」にあわせる。【０１１１】
また、ＰＦＰＯＲＴ１０２ｂに存在する先行ＰＦと後続ＰＦとのアドレスが一致した場合は、エントリマージ処理部１０８は、ＰＦのＰＡ［７：６］に対応するアドレスのsublineに対応する「sub_valid」をオフし、そのsublineに対応するエントリをエントリテーブル１１２から消去する（具体的には、ＯＲゲート１０７ｃからアドレスが一致したＤＭ要求を消去する旨を示す「DM_req_mch_erase」なる信号が入力されることによって消去する）。これによって最後の「sub_valid」がオフにされたＰＦのエントリは、エントリテーブル１１２から開放されることになる。【０１１２】
ＰＦパイプライン処理の最後にＬ２パイプライン処理部１０２ｆからＰＦＰＯＲＴ１０２ｂに、ＰＦパイプライン処理がｃｍｐ（完了）したかａｂｔ（処理中断）したかが通知される。ｃｍｐならば、当該sublineに対応する「sub＿valid」をオフにし、ａｂｔならば「sub＿valid」をオンのままにする。【０１１３】
共有ＰＦＰＯＲＴ１０２ｊは、ＰＦＰＯＲＴ１０２ｂとほぼ同一の構成をしている。異なるのは、ＰＦＰＯＲＴ１０２ｂがＣＰＵコア部１０１からの入力を受け付けるのに対し、共有ＰＦＰＯＲＴ１０２ｊへの入力は、すべてＬ２パイプライン処理部１０２ｆからの入力であることである。【０１１４】
また、ＰＦＰＯＲＴ１０２ｂがＣＰＵコア部１０１からのＰＦで新規のエントリを確保するのに対して共有ＰＦＰＯＲＴ１０２ｊは、ＰＦＰＯＲＴ１０２ｂからＬ２パイプライン処理部１０２ｆへ投入されたＰＦのうち、ａｂｔしたＰＦで新規のエントリを確保している。【０１１５】
ＤＭとのアドレス一致によるエントリ消去操作についても、同様に、ＰＦＰＯＲＴ１０２ｂがＣＰＵコア部１０１からのＤＭとのアドレス一致を判定するのに対し、共有ＰＦＰＯＲＴ１０２ｊは、Ｌ２−ＬＢ１０２ｈに登録されているＤＭとのアドレス一致を判定している。【０１１６】
共有ＰＦＰＯＲＴ１０２ｊは、共有ＰＦＰＯＲＴ制御部１１４と、エントリマージ処理部１１５と、sub＿valid［３：０］のうち少なくとも１つがオンであるエントリを抽出するＯＲゲート１１６と、空きエントリ選択部１１７と、格納エントリ選択部１１８と、ＡＮＤゲート１１９と、エントリテーブル１２０と、優先制御部Ｆ１２１とを有する。【０１１７】
共有ＰＦＰＯＲＴ制御部１１４は、共有ＰＦＰＯＲＴ１０２ｊ全体の制御をつかさどる制御装置であり、エントリテーブル１２０のエントリごとに設けられている。共有ＰＦＰＯＲＴ制御部１１４は、ＡＮＤゲート１１４ａと、ＡＮＤゲート１１４ｂと、ＯＲゲート１１４ｃと、マッチング回路１１４ｄと、ＡＮＤゲート１１４ｅと、ＡＮＤゲート１１４ｆとを有する。ＡＮＤゲート１１４ａ、ＡＮＤゲート１１４ｂ、ＯＲゲート１１４ｃ、マッチング回路１１４ｄ、ＡＮＤゲート１１４ｅ、ＡＮＤゲート１１４ｆは、ＡＮＤゲート１０７ａ、ＡＮＤゲート１０７ｂ、ＯＲゲート１０７ｃ、マッチング回路１０７ｄ、ＡＮＤゲート１０７ｅ、ＡＮＤゲート１０７ｆとほぼ同一の機能を有する。【０１１８】
また、エントリテーブル１２０の最大エントリ数は、例えば、８である。なお、共有ＰＦＰＯＲＴ１０２ｊは、ＣＰＵコア部１０１の数に関わらず１つだけ設けられている。【０１１９】
共有ＰＦＰＯＲＴ１０２ｊの共有ＰＦＰＯＲＴ制御部１１４、エントリマージ処理部１１５、ＯＲゲート１１６、空きエントリ選択部１１７、格納エントリ選択部１１８、エントリテーブル１２０は、ＰＦＰＯＲＴ１０２ｂのＰＦＰＯＲＴ制御部１０７、エントリマージ処理部１０８、ＯＲゲート１０９、空きエントリ選択部１１０、格納エントリ選択部１１１、エントリテーブル１１２とほぼ同一の構成および機能を有する。【０１２０】
異なるのは、共有ＰＦＰＯＲＴ１０２ｊが、Ｌ２パイプライン処理部１０２ｆからのＰＦについてパイプラインの有効性を示す「PF＿pipe＿val」と、Ｌ２パイプライン処理部１０２ｆでａｂｔしたＰＦであることを示す「PF＿pipe＿abt」と、Ｌ２−ＬＢ１０２ｈに登録されているＤＭとアドレスが一致したことを示す「PF＿L2-LB＿mch」と、Ｌ２パイプライン処理部１０２ｆからのＰＦの属性を示す「PF＿strong」との論理積を取るＡＮＤゲート１１９を有し、このＡＮＤゲート１１９の出力がＡＮＤゲート１１４ｆに入力される点である。【０１２１】
優先制御部Ｆ１２１は、「wt＿flg」、「hid＿flg」がオフである有効なエントリのうち最も古いものからＬ２パイプライン処理部１０２ｆへ投入するよう制御する。優先制御部Ｂ１０２ｄは、ＰＦＰＯＲＴ１０２ｂからのＰＦはＬＲＵアルゴリズムで選択するのが最適である。共有ＰＦＰＯＲＴ１０２ｊからのＰＦは、ＰＦＰＯＲＴ１０２ｂからのＰＦよりも古いことが多いため、共有ＰＦＰＯＲＴ１０２ｊからのＰＦを優先的に選択し、Ｌ２パイプライン処理部１０２ｆへ投入する。【０１２２】
なお、エントリマージ処理部１０８およびエントリマージ処理部１１５の詳細構成は、図示するように、ＯＲゲート１０７ｃまたはＯＲゲート１１４ｃからのアドレスが一致したＤＭ要求を消去する旨を示す「DM＿req＿mch＿erase」の反転入力と、後述のsub＿valid［３：０］の値を保持するバッファ１１５ｃからの入力との論性積を取るＡＮＤゲート１１５ａと、格納エントリ選択部１１１または格納エントリ選択部１１８からのＦＰ要求をセット又はマージする旨を示す「PF＿req＿set/merge」と、ＡＮＤゲート１１５ａの出力との論理和を取るＯＲゲート１１５ｂと、ＯＲゲート１１５ｂの出力を保持するバッファ１１５ｃとを有する。【０１２３】
エントリマージ処理部１０８およびエントリマージ処理部１１５の処理によって、ＣＰＵコア部１０１からのＤＭとアドレスが一致するＰＦのエントリがエントリテーブル１１２およびエントリテーブル１２０から消去される。また、既にエントリテーブル１１２およびエントリテーブル１２０にアドレスが一致するエントリが存在すれば、ＣＰＵコア部１０１またはＬ２パイプライン処理部１０２ｆからのＰＦのエントリを既存のエントリにマージすることができ、エントリテーブル１１２およびエントリテーブル１２０の効率的な資源活用を図ることができる。【０１２４】
次に、一実施の形態にかかるマルチコアプロセッサの動作について説明する。図６は、一実施の形態にかかるマルチコアプロセッサの動作を示すタイミングチャートである。なお、同図では、すべてsn＿res＿256応答の場合であるとする。すなわち、図示するＰＦ１０〜ＰＦ１８は、図２−１に示した処理と同一である。しかし、sn＿res＿256に限らず、sn＿res＿256またはsn＿res＿64のいずれかであればよい。そして、共有ＰＦＰＯＲＴ１０２ｊのＰＦのエントリ数は、８つであるとする。【０１２５】
ＣＰＵコア部１０１からのＰＦが共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂへ、４サブラインすべてを含むキャッシュラインのＰＦが８つ発行されるとする（ＰＦ１０〜ＰＦ１８）。ＰＦＰＯＲＴ１０２ｂでは、８つのＰＦ１０〜ＰＦ１７ですべてのエントリ（ＰＦＰＯＲＴ０〜ＰＦＰＯＲＴ７）が使用状態（ビジー状態）になるが、９つ目のＰＦである、ＣＰＵコア部１０１またはＬ２パイプライン処理部１０２ｆからのＰＦ１８は、ＰＦＰＯＲＴ１０２ｂがすでにすべてのエントリを使い切っている状態（ビジー状態、busy）であるため、共有ＰＦＰＲＯＴ１０２ｊで待機してＬ２パイプライン処理部１０２ｆへ投入される。【０１２６】
このように、一実施の形態にかかるマルチコアプロセッサでは、ＰＦＰＯＲＴ１０２ｂのすべてのエントリがビジー状態であるとき、いずれかのエントリに登録されているＰＦが、ＰＦパイプライン処理がａｂｔまたはｃｍｐによって開放されなくても、新たなＰＦをＰＦＰＯＲＴ１０２ｊに登録することができるため、待ち合わせのためのロスタイムの発生を回避することができる。特に、１つのＣＰＵコア部１０１から集中的にＰＦが発行された場合であっても、ＰＦを滞りなく処理することができる。【０１２７】
特に、この例で示されるようにsubline方式であり、ＣＰＵ１００がシステムに対するデータ要求に対して、データ転送がsubline単位で行われる（sn＿res＿64）か、全sublineをすべて転送するか（sn＿res＿256)の２通りがあり、いずれの転送方法を取るかの決定がシステム側でのスヌープ動作（キャッシュメモリの同期動作）の結果により決定されるシステムの下では、共有ＰＦＰＯＲＴ１０２ｊを採用することが好適である。【０１２８】
これは、非subline方式であれば、最初のＰＦパイプライン処理においてＬ２−ＬＢ１０２ｈのエントリを確保すると、キャッシュラインのＰＦパイプライン処理は完了し、ＰＦＰＯＲＴのエントリが解放できてしまうからである。【０１２９】
次に、一実施の形態にかかる共有Ｌ２キャッシュ部の動作（待ち合わせフラグを解除することによって、プリフェッチ要求を共有ＰＦＰＯＲＴへ移動）について説明する。図７は、一実施の形態にかかる共有Ｌ２キャッシュ部の動作（待ち合わせフラグを解除することによって、プリフェッチ要求を共有ＰＦＰＯＲＴへ移動）を示すタイミングチャートである。【０１３０】
先ず、ＣＰＵコア部１０１は、４つのサブラインを含むＰＦを、対応する共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂに出力する（pf＿req（４subline）  from  Core  to  pfp  entry０、ステップＳ１５１）。【０１３１】
ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、エントリテーブル１１２のエントリ０（pf＿entry０）に当該ＰＦを登録し、subline０〜３に対応するすべての有効フラグ（sub＿valid［０］〜sub＿valid［３］）をオンにする。pfp＿entry０  life  timeは、そのＰＦによってＰＦＰＯＲＴ１０２ｂのentry０が占有され開放されるまでの期間を表す。その間、subline０〜３の少なくとも１の有効フラグがオンになっている。【０１３２】
続いて、ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０についてパイプライン処理部１０２ｆへプライオリティ要求を出す。パイプライン処理部１０２ｆにおいてプライオリティが確保されると、pf＿pipeline（subline０）で示されるＰＦパイプライン処理がおこなわれる（ステップＳ１５２）。【０１３３】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明すると、ＰＦパイプライン処理後、Ｌ２−ＬＢ１０２ｈのエントリが確保される。そして、subline０のＰＦパイプライン処理が完了されたため、ＰＦＰＯＲＴ１０２ｂのsubline０の有効フラグ（sub＿valid［０］）がオフにされる。【０１３４】
さらに、Ｌ２−ＬＢ１０２ｈから、システムに対するデータ要求であるsc＿reqがＳＣ２００に発行される（ステップＳ１５３）。subline０のＰＦパイプライン処理が完了したので、次にＰＦＰＯＲＴ１０２ｂは、subline１、subline２、subline３についてパイプライン処理部１０２ｆへプライオリティ要求を出す。プライオリティが確保されると、subline１、subline２、subline３のＰＦパイプライン処理がおこなわれる（ステップＳ１５４）。【０１３５】
しかし、まだsn＿res_256がＳＣ２００から返っていない段階なので、subline１、subline２、subline３のＰＦパイプライン処理を完了させることができない。そこで、Ｌ２パイプライン処理部１０２ｆからＰＦＰＯＲＴ１０２ｂへ完了通知、共有ＰＦＰＯＲＴ１０２ｊへＰＦ要求セット通知が出され、共有ＰＦＰＯＲＴ１０２ｊに当該ＰＦを移動させる。【０１３６】
エントリテーブル１２０のエントリ２（pfp＿share＿entry２）に当該ＰＦを登録し、subline０〜３に対応するすべての有効フラグ（sub＿valid［０］〜sub＿valid［３］）および待ち合わせフラグ（wt＿flg）をオンにする。そして、共有ＰＦＰＯＲＴ１０２ｊで空いている最後のエントリ（pfp＿share＿entry２）にＰＦが登録されたため、共有ＰＦＰＯＲＴ１０２ｊはビジー状態になったとする。【０１３７】
なお、pfp＿ahare＿entry０  life  timeは、subline１のＰＦパイプライン処理がａｂｔしてからそのＰＦによって共有ＰＦＰＯＲＴ１０２ｊのentry０が占有され開放されるまでの期間を表す。【０１３８】
また、さらに、ＣＰＵコア部１０１は、４つのサブラインを含む新規のＰＦを、対応する共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂに出力する（pf＿req（４subline）  from  Core  to  pfp  entry１、ステップＳ１５５）。【０１３９】
ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、エントリテーブル１１２のエントリ１（pf＿entry１）に当該ＰＦを登録し、subline０〜３に対応する有効フラグ（sub＿valid［０］〜sub＿valid［３］）をすべてオンにする。pfp＿entry１  life  timeは、そのＰＦによってＰＦＰＯＲＴ１０２ｂのentry１が占有され開放されるまでの期間を表す。その間、subline０〜３の少なくとも１の有効フラグがオンになっている。【０１４０】
続いて、新規のＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０についてパイプライン処理部１０２ｆへプライオリティ要求を出す。パイプライン処理部１０２ｆにおいてプライオリティが確保されると、pf＿pipeline（subline０）で示されるＰＦパイプライン処理がおこなわれる（ステップＳ１５６）。【０１４１】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明すると、ＰＦパイプライン処理後、Ｌ２−ＬＢ１０２ｈのエントリが確保される。そして、subline０のＰＦパイプライン処理が完了されたため、ＰＦＰＯＲＴ１０２ｂのsubline０の有効フラグ（sub＿valid［０］）がオフにされる。【０１４２】
さらに、Ｌ２−ＬＢ１０２ｈから、システムに対するデータ要求であるsc＿reqがＳＣ２００に発行される（ステップＳ１５７）。subline０のＰＦパイプライン処理が完了したので、次にＰＦＰＯＲＴ１０２ｂは、subline１、subline２、subline３についてパイプライン処理部１０２ｆへプライオリティ要求を出す。プライオリティが確保されると、subline１、subline２、subline３のＰＦパイプライン処理がおこなわれる（pf＿pipeline（subline１）、ステップＳ１５８）。【０１４３】
しかし、まだsn＿res＿256がＳＣ２００から返っていない段階なので、subline１、subline２、subline３のＰＦパイプライン処理はａｂｔする。しかも、共有ＰＦＰＯＲＴ１０２ｊは、ビジー状態であるので、新規のＰＦは、entry１に滞留して待ち合わせをおこなう。【０１４４】
エントリテーブル１２０のエントリ２であるpfp＿share＿entry２に登録されている２５６Ｂｙｔｅのキャッシュラインに対するＰＦに対応するsn＿res＿256が到達すると（ステップS１５９）、４サブライン分のリプレースパイプライン処理（replace＿pipeline（×４subline））がおこなわれる（ステップＳ１６０）。【０１４５】
続いて、共有ＰＦＰＯＲＴ制御部１１４によってエントリテーブル１２０のエントリ０pfp＿share＿entry２の「wt＿flg」が解除され、subline１、subline２、subline３のＰＦパイプライン処理が順次起動される（ステップＳ１６１、ステップＳ１６２、ステップＳ１６３）。これらのＰＦパイプライン処理は、Ｌ２−ＬＢ１０２ｈにおいて２５６ＢｙｔｅのアドレスマッチングおよびＳＣ２００からのsn＿res＿256応答済みのため、すべて完了される。【０１４６】
ＳＣ２００は、sn＿res＿256応答と前後して、ＭＡＣ３００に対して該当アドレスのデータ要求を行い、データの用意ができたらＣＰＵ１００に対してdow通知とともに、２５６Ｂｙｔｅのデータを送出する（ステップＳ１６４）。dowのヘッダを受信すると、タグエントリパイプライン（tag＿entry＿pipeline）処理がＬ２−ＬＢ１０２ｈからＬ２パイプライン処理部１０２ｆに対して要求され、プライオリティが確保されると、タグエントリパイプライン処理がおこなわれる（ステップＳ１６５）。【０１４７】
Ｌ２−ＬＢ１０２ｇは、dowのデータ部をＳＣ２００から受信すると、Ｌ２パイプライン処理部１０２ｆに対して、subline０〜３のデータ受信が完了した順に、リプレースパイプライン処理で確保されたWAYに対するデータライトパイプライン処理を要求し、データライトパイプライン処理がおこなわれる（ステップＳ１６６）。【０１４８】
ステップＳ１６３の終了によって、エントリテーブル１２０のエントリ０pfp＿share＿entry２が開放される。そして、共有ＰＦＰＯＲＴ１０２ｊからＰＦＰＲＯＴ１０２ｂへ、共有ＰＦＰＯＲＴ１０２ｊのビジー状態が解消されたこと（「wt＿flg」解除）が通知される（ステップＳ１６７）。【０１４９】
「wt＿flg」解除の通知を受け取ったＰＦＰＲＯＴ１０２ｂは、subline１、subline２、subline３に対するＰＦを順次起動（ステップＳ１６８）するが、対応するsn＿res＿256応答がまだ到達していないため、ＰＦパイプライン処理がａｂｔするため、エントリテーブル１２０のエントリ０pfp＿share＿entry２へsubline１、subline２、subline３に対応するＰＦを移動させる。ＳＣ２００からsn＿res＿256が返って来ると（ステップＳ１６９）、subline１、subline２、subline３のＰＦパイプライン処理はｃｍｐ（完了）する（ステップＳ１７０）。【０１５０】
そして、ＳＣ２００は、sn＿res＿256応答と前後して、ＭＡＣ３００に対して該当アドレスのデータ要求を行い、データの用意ができたらＣＰＵ１００に対してdow通知とともに、２５６Ｂｙｔｅのデータを送出する（ステップＳ１７１）。【０１５１】
エントリテーブル１２０のエントリ０pfp＿share＿entry２が開放されたことを契機として、ＰＦＰＯＲＴ制御部１０７は、ＰＦＰＲＯＴ１０２ｂで待ち合わせているentry１のＰＦを、空いたpfp＿sahre＿entry２に移動させることよって、ＰＦＰＲＯＴ１０２ｂの空きエントリを増やせるので、ＣＰＵコア部１０１からのＰＦをより多く受け入れる余地を持たせることができる。【０１５２】
次に、一実施の形態にかかる共有Ｌ２キャッシュ部の動作（共有ＰＦＰＯＲＴから、キャッシュラインのサブラインごとにエントリを消去）を説明する。図８は、一実施の形態にかかる共有Ｌ２キャッシュ部の動作（共有ＰＦＰＯＲＴから、キャッシュラインのサブラインごとにエントリを消去）を示すタイミングチャートである。【０１５３】
先ず、ＣＰＵコア部１０１は、４つのサブラインを含むＰＦを、対応する共有Ｌ２キャッシュ部１０２のＰＦＰＯＲＴ１０２ｂに出力する（pf＿req（４subline）  from  Core  to  pfp  entry０、ステップＳ１８１）。【０１５４】
ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、エントリテーブル１１２のエントリ０（pf＿entry０）に当該ＰＦを登録し、subline０〜３に対応するすべての有効フラグ（sub＿valid［０］〜sub＿valid［３］）をオンにする。pfp＿entry０  life  timeは、そのＰＦによってＰＦＰＯＲＴ１０２ｂのentry０が占有され開放されるまでの期間を表す。その間、subline０〜３の少なくとも１の有効フラグがオンになっている。【０１５５】
続いて、ＰＦを受けたＰＦＰＯＲＴ１０２ｂは、subline０についてパイプライン処理部１０２ｆへパイプライン投入を行うためのプライオリティ要求を出す。パイプライン処理部１０２ｆにおいてプライオリティが確保されると、pf＿pipeline（subline０）で示されるＰＦパイプライン処理がおこなわれる（ステップＳ１８２）。【０１５６】
ＰＦパイプライン処理中に、Ｌ２タグ記憶部１０２ｇを検索した結果、ＰＦに紐付けられるタグに関して２５６Ｂｙｔｅのキャッシュラインおよび６４ＢｙｔｅのサブラインいずれもＬ２キャッシュミスであることが判明すると、ＰＦパイプライン処理後、Ｌ２−ＬＢ１０２ｈのエントリが確保される。そして、subline０のＰＦパイプライン処理が完了されたため、ＰＦＰＯＲＴ１０２ｂのsubline０の有効フラグ（sub＿valid［０］）がオフにされる。【０１５７】
さらに、Ｌ２−ＬＢ１０２ｈから、システムに対するデータ要求であるsc＿reqがＳＣ２００に発行される（ステップＳ１８３）。subline０のＰＦパイプライン処理が完了したので、次にＰＦＰＯＲＴ１０２ｂは、subline１、subline２、subline３についてパイプライン処理部１０２ｆへプライオリティ要求を出す。プライオリティが確保されると、subline１、subline２、subline３のＰＦパイプライン処理がおこなわれる（ステップＳ１８４）。【０１５８】
しかし、まだsn＿res＿256がＳＣ２００から返っていない段階なので、subline１、subline２、subline３のＰＦパイプライン処理を完了させることができない。そこで、Ｌ２パイプライン処理部１０２ｆからＰＦＰＯＲＴ１０２ｂへ完了通知、共有ＰＦＰＯＲＴ１０２ｊへＰＦ要求セット通知が出され、共有ＰＦＰＯＲＴ１０２ｊに当該ＰＦを移動させる。そして、エントリテーブル１２０のエントリ０（pfp＿share＿entry０）に当該ＰＦを登録し、subline０〜３に対応するすべての有効フラグ（sub＿valid［０］〜sub＿valid［３］）および待ち合わせフラグ（wt＿flg）をオンにする。【０１５９】
今、pfp＿share＿entry０に登録されているＰＦと同一の２５６Ｂｙｔｅキャッシュラインに対応するsubline２のＤＭがＭＩＰＯＲＴ１０２ａに発行されて、ＭＩＰＯＲＴ１０２ａに登録される（dm＿req（subline２）  from  core  to  mip、ステップＳ１８５）。そして、dm＿req（subline２）のパイププライン処理（dm＿pipeline処理）がＭＩＰＯＲＴ１０２ａから起動される（ステップＳ１８６）。【０１６０】
ＤＭ要求に対するパイププライン処理であるdm＿pipeline処理中にＬ２キャッシュミスが発生し、data＿write＿pipeline処理が完了していないためにdm＿pipeline処理を完了させることができず、「wt＿flg」がオンにされ、待ち合わせ状態になる。それとともに、Ｌ２−ＬＢ１０２ｈにおいて、subline２の２５６Ｂｙｔｅのアドレスおよび「PF＿code」の一致が検出されると、pfp＿entry０のsubline２に対応するsub＿valid［１］をオフにする。これによって、pfp＿entry０からsubline２に対応するpf＿pipeline処理の起動が行われないこととなる。【０１６１】
ＳＣ２００からのsn＿res＿256応答を受信すると（ステップＳ１８８）、４サブライン分のリプレースパイプライン処理（replace＿pipeline（×４subline））がおこなわれる（ステップＳ１８９）。【０１６２】
そして、pfp＿entry０からsubline１、subline３に対応するpf＿pipeline処理が起動される（ステップＳ１９０、ステップＳ１９１）。既に、ステップＳ１８８でsn＿res＿256到達済みなので、subline１、subline３に対応するpf＿pipeline処理は完了し、pfp＿entry０は開放される。subline２はすでにsub＿valid［１］がオフにされているため、pf＿pipeline処理はおこなわれない。【０１６３】
さらに、ＳＣ２００からのdow応答とともに、Ｌ２タグ記憶部１０２ｇに保持されているタグエントリに対するtag＿entry＿pipeline処理およびＬ２キャッシュ１０２ｉに保持されている２次キャッシュデータに対するdata＿write＿pipelin処理が起動する（ステップＳ１９２、ステップＳ１９３）。subline２に対応するdata＿write＿pipeline処理がおこなわれると（ステップＳ１９４）、pfp＿entry０の「wt＿flg」がオフにされ、待機していたＤＭのsubline２のＤＭ要求に対するパイププライン処理dm＿pipeline処理がおこなわれる（ステップＳ１９５）。【０１６４】
以上のように、ＤＭと対象データのアドレスが一致する場合に、ＰＦのsublineの「sub＿valid」をオフにすることによって、ＰＦに基づく当該sublineのＰＦパイプライン処理をおこなわず、ＤＭと重複してパイプライン処理がおこなわれるという無駄を回避することができる。【０１６５】
次に、共有Ｌ２キャッシュ部の非サブライン方式によるタグマッチングと、サブライン方式によるタグマッチングとの違いについて説明する。図９−１は、共有Ｌ２キャッシュ部の非サブライン方式によるタグマッチング回路を示すブロック図である。図９−２は、共有Ｌ２キャッシュ部のサブライン方式によるタグマッチング回路を示すブロック図である。図９−２は、キャッシュラインがサブライン０〜サブライン３の４つのサブラインを含む４subline方式に基づく。【０１６６】
先ず、図９−１を参照する。非subline方式では、タグ記憶部１０２ｇに保持されるタグ情報のエントリであるTAG＿entryは、PA＿index（［１８：８］）のインデックスで管理され、「PA＿TAG［４６：１９］」（アドレスタグ領域）、「valid」（有効フラグ）、「L2＿TC［２：０］」（Ｌ２キャッシュ１０２ｉがデータを保持するか否かを示すフラグ）、「L1＿TC［２：０］」（Ｌ１キャッシュ（Ｌ１命令キャッシュ１０１ｂおよびＬ１データキャッシュ１０１ｅ）がデータを保持するか否かを示すフラグ）、「CORE＿ID［１：０］」（Ｌ１キャッシュにデータを保持するＣＰＵコア部１０１の識別情報）のカラムを有する。複数のＣＰＵコア部１０１が、「L1＿TC」および「CORE＿ID」の組み合わせで、後述のエンコーダ１２４によって個別にエンコードされる。「valid」は、「L2＿TC［２：０］」≠０であることと等価なので必ずしも必要ではない。【０１６７】
非subline方式のＬ２キャッシュヒット判定は、WAYごとに、マッチング回路１２４によるパイプライン処理中のデータのアドレス（pipe＿PA［４６：１９］）と「PA＿TAG［４６：１９］」とのマッチング結果と、「valid」との論理和をＡＮＤゲート１２３で取って生成する。なお、複数のWAYが同時にヒットすることがないように制御される。あるWAYがヒットした場合は、ヒットしたWAYに対してセレクタ１２５によって「L2＿TC［２：０］」が「L2＿hit＿L2＿TC［２：０］」として、セレクタ１２６によって「L1＿TC［２：０］」が「L1＿hit＿L1＿TC［２：０］」として、セレクタ１２７によって「CORE＿ID［１：０］」が「L2＿hit＿CORE＿ID［１：０］」として選択され、エンコーダ１２４によってL2＿hit＿WAY［１：０］がエンコードされパイプライン制御に使用される。なお、「valid」がオフであるキャッシュラインは、Ｌ２キャッシュ１０２ｉで保持していないことになる。【０１６８】
次に、図９−２を参照する。subline方式では、タグ記憶部１０２ｇに保持されるタグ情報のエントリであるTAG＿entryは、PA＿index（［１８：８］）のインデックスで管理され、「PA＿TAG［４６：１９］」、「sub＿valid＿0」（サブライン０の有効フラグ）、「L2＿TC＿0［２：０］」（Ｌ２キャッシュ１０２ｉがサブライン０のデータを保持するか否かを示すフラグ）、「L1＿TC＿0［２：０］」（Ｌ１キャッシュ（Ｌ１命令キャッシュ１０１ｂおよびＬ１データキャッシュ１０１ｅ）がサブライン０のデータを保持するか否かを示すフラグ）、「CORE＿ID＿0［１：０］」（Ｌ１キャッシュにサブライン０のデータを保持するＣＰＵコア部１０１の識別情報）、「sub＿valid＿1」（サブライン１の有効フラグ）、「L2＿TC＿1［２：０］」（Ｌ２キャッシュ１０２ｉがサブライン１のデータを保持するか否かを示すフラグ）、「L1＿TC＿1［２：０］」（Ｌ１キャッシュ（Ｌ１命令キャッシュ１０１ｂおよびＬ１データキャッシュ１０１ｅ）がサブライン１のデータを保持するか否かを示すフラグ）、「CORE＿ID＿1［１：０］」（Ｌ１キャッシュにサブライン１のデータを保持するＣＰＵコア部１０１の識別情報）、・・・、「sub＿valid＿3」（サブライン３の有効フラグ）、「L2＿TC＿3［２：０］」（Ｌ２キャッシュ１０２ｉがサブライン３のデータを保持するか否かを示すフラグ）、「L1＿TC＿3［２：０］」（Ｌ１キャッシュ（Ｌ１命令キャッシュ１０１ｂおよびＬ１データキャッシュ１０１ｅ）がサブライン３のデータを保持するか否かを示すフラグ）、「CORE＿ID＿3［１：０］」（Ｌ１キャッシュにサブライン３のデータを保持するＣＰＵコア部１０１の識別情報）のカラムを有する。複数のＣＰＵコア部１０１が、「L1＿TC＿0」および「CORE＿ID＿0」、「L1＿TC＿1」および「CORE＿ID＿1」、「L1＿TC＿2」および「CORE＿ID＿2」、「L1＿TC＿3」および「CORE＿ID＿3」の組み合わせで、後述のエンコーダ１３１によって個別にエンコードされる。【０１６９】
すなわち、タグ記憶部１０２ｇに保持されるタグ情報のエントリであるTAG＿entryは、「PA＿TAG［４６：１９］」を全sublineで共有しているが、それ以外の「sub＿valid」、「L2＿TC［２：０］」、「L1＿TC［２：０］」、「CORE＿ID［１：０］」についてはsubline独立に保持している。各sublineの「sub＿valid」のうちひとつでもオンであれば、２５６Ｂｙｔｅキャッシュラインとして有効である。「sub＿valid」は、当該サブラインに対応する「L2＿TC」≠０であることと等価なので必ずしも必要ではない。【０１７０】
subline方式のＬ２キャッシュヒット判定は、WAYごとに、マッチング回路１２８によるパイプライン処理中のデータのアドレス（pipe＿PA［４６：１９］）と「PA＿TAG［４６：１９］とのマッチング結果と、すべての「sub＿valid」の論理積をＯＲゲート１２９で取った結果との論理積をＡＮＤゲート１３０によって取って生成する。あるWAYがヒットした場合は、ヒットしたWAYに対してセレクタ１３２によって「L2＿TC＿0［２：０］」が「L2＿hit＿L2＿TC＿0［２：０］」として、セレクタ１３３によって「L1＿TC＿0［２：０］」が「L2＿hit＿L1＿TC＿0［２：０］」として、セレクタ１３４によって「CORE＿ID＿0［１：０］」が「L2＿hit＿CORE＿ID＿0［１：０］」として、・・・、セレクタ１３５によって「L2＿TC＿3［２：０］」が「L2＿hit＿L2＿TC＿3［２：０］」として、セレクタ１３６によって「L1＿TC＿3［２：０］」が「L2＿hit＿L1＿TC＿3［２：０］」として、セレクタ１３７によって「CORE＿ID＿3［１：０］」が「L2＿hit＿CORE＿ID＿3［１：０］として選択され、エンコーダ１３１によって「L2＿hit＿WAY［１：０］」がエンコードされパイプライン制御に使用される。なお、「sub＿valid」がオフであるサブラインは、Ｌ２キャッシュ１０２ｉで保持していないことになる。【０１７１】
また、非subline方式、subline方式ともに、「PA＿TAG［４６：１９］」と共通インデックスで、replace＿pipeline制御に使用されるＬＲＵ情報を持つ。「L2＿TC［２：０］」は、『Ｉ』、『Ｓ』、『Ｅ』、『Ｏ』、『Ｗ』、『Ｍ』の６種類の状態を取り、『encode』、『valid』、『排他権』、『writeback義務』、『store義務』ごとにそれぞれエンコードされる。【０１７２】
なお、subline方式の利点は次のようなものである。キャッシュラインサイズが大きくなるため、Ｌ２タグ記憶部１０２ｇや、Ｌ１−ＬＢ１０１ｉ、Ｌ２−ＬＢ１０２ｈなどの面積リソースの効率が高まる。また、データ転送の単位を、必要に応じて全キャッシュライン２５６Ｂｙｔｅ単位またはsubline６４Ｂｙｔｅ単位などのように、状況に応じて選択することが可能なので、データ転送効率が良くなる。【０１７３】
次に、共有Ｌ２キャッシュ部のパイプライン処理の概要（共有ＰＦＰＯＲＴを有さない場合）を説明する。図１０−１は、共有Ｌ２キャッシュ部のパイプライン処理の概要（共有ＰＦＰＯＲＴを有さない場合）を示す図である。【０１７４】
同図に示すように、Ｌ２パイプライン処理部１０２ｆは、ＰＦＰＯＲＴ１０２ｂからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびＬ２−ＬＢ１０２ｈとのアドレス一致検出を同時におこなう。【０１７５】
続いて、Ｌ２パイプライン処理部１０２ｆは、TAG＿mch（タグ一致）およびhit（Ｌ２キャッシュヒット）検出、および、Ｌ２−ＬＢ１０２ｈとの一致アドレス転送を同時におこなう。そして、TAG＿mchおよびhit検出結果、および、Ｌ２−ＬＢ１０２ｈとのアドレス一致検出結果に基づきＰＦ処理をおこなう。【０１７６】
ＰＦ処理は、（条件１）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しない（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch））』場合に、Ｌ２−ＬＢ１０２ｈにおいてエントリを確保し、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１７７】
また、（条件２）『Ｌ２キャッシュヒットかつＬ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致する（L2＿hit&LB＿256＿mch）』場合に、タグ記憶部１０２ｇの「TAG」および「LRU」の更新アドレスを入力し、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１７８】
また、（条件３）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しないが、sn＿res＿256応答がある（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&sn＿res＿256）』場合に、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１７９】
また、（条件４）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しないが、sn＿res＿64応答がある（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&sn＿res＿64）』場合に、Ｌ２−ＬＢ１０２ｈにエントリの該当サブラインをマージし、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１８０】
また、（条件５）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致するが、sn＿res＿256応答もsn＿res＿64応答もない（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&（!sn＿res＿64&!sn＿res＿256）』場合に、要求元のＰＦＰＯＲＴ１０２ｂへａｂｔを通知し、エントリテーブル１１２の該当するエントリの「wt＿flg」をオンにする指示を出力する。【０１８１】
また、（条件６）『その他、ＰＦパイプライン処理（pf＿pipeline）が完了できなかった』場合に、要求元のＰＦＰＯＲＴ１０２ｂへａｂｔを通知する。【０１８２】
次に、共有Ｌ２キャッシュ部のパイプライン処理の概要（共有ＰＦＰＯＲＴを有する場合）を説明する。図１０−２は、共有Ｌ２キャッシュ部のパイプライン処理の概要（共有ＰＦＰＯＲＴを有する場合）を示す図である。【０１８３】
同図に示すように、Ｌ２パイプライン処理部１０２ｆは、ＰＦＰＯＲＴ１０２ｂまたは共有ＰＦＰＯＲＴ１０２ｊからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびＬ２−ＬＢ１０２ｈとのアドレス一致検出を同時におこなう。【０１８４】
続いて、Ｌ２パイプライン処理部１０２ｆは、TAG＿mch（タグ一致）およびhit（Ｌ２キャッシュヒット）検出、および、Ｌ２−ＬＢ１０２ｈとの一致アドレス転送を同時におこなう。そして、TAG＿mchおよびhit検出結果、および、Ｌ２−ＬＢ１０２ｈとのアドレス一致検出結果に基づきＰＦ処理をおこなう。【０１８５】
ＰＦ処理は、（条件１１）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しない（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch））』場合に、Ｌ２−ＬＢ１０２ｈにおいてエントリを確保（sc＿req）し、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１８６】
また、（条件１２）『Ｌ２キャッシュヒットかつＬ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致する（L2＿hit&LB＿256＿mch）』場合に、タグ記憶部１０２ｇの「TAG」および「LRU」の更新をおこない、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１８７】
また、（条件１３）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しないが、sn＿res＿256応答がある（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&sn＿res＿256）』場合に、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１８８】
また、（条件１４）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しないが、sn＿res＿64応答がある（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&sn＿res＿64）』場合に、Ｌ２−ＬＢ１０２ｈにエントリの該当サブラインをマージし（sc＿req）、要求元のＰＦＰＯＲＴ１０２ｂへ完了（ｃｍｐ）を通知する。【０１８９】
また、（条件１５）『ＰＦＰＲＯＴ１０２ｂからの要求であり、共有ＰＦＰＲＯＴ１０２ｊがビジー状態でない、かつ、Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致するが、sn＿res＿256応答もsn＿res＿64応答もない（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&（!sn＿res＿64&!sn＿res＿256）』場合に、要求元のＰＦＰＯＲＴ１０２ｂへａｂｔを通知し、共有ＰＦＰＯＲＴ１０２ｊのエントリテーブル１２０へエントリを移動させ、エントリテーブル１１２の該当するエントリの「wt＿flg」をオンにする指示を出力する。【０１９０】
また、（条件１６）『ＰＦＰＲＯＴ１０２ｂからの要求であり、共有ＰＦＰＲＯＴ１０２ｊがビジー状態である、または、Ｌ２キャッシュミスまたは「L2＿TC」がオフかつＬ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致するが、Ｌ２キャッシュミスでありsn＿res＿256応答もsn＿res＿64応答もない（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&（!sn＿res＿64&!sn＿res＿256）』場合に、要求元のＰＦＰＯＲＴ１０２ｂへａｂｔを通知し、エントリテーブル１１２の該当するエントリの「wt＿flg」をオンにする指示を出力する。【０１９１】
また、（条件１７）『その他、ＰＦパイプライン処理（pf＿pipeline）が完了できなかった』場合に、要求元のＰＦＰＯＲＴ（ＰＦＰＯＲＴ１０２ｂまたは共有ＰＦＰＯＲＴ１０２ｊ）へａｂｔを通知する。【０１９２】
次に、共有Ｌ２キャッシュ部のＤＭパイプライン処理の概要を説明する。図１０−３は、共有Ｌ２キャッシュ部のＤＭパイプライン処理の概要を示す図である。【０１９３】
同図に示すように、Ｌ２パイプライン処理部１０２ｆは、ＭＩＰＯＲＴ１０２ａからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびＬ２−ＬＢ１０２ｈとのアドレス一致検出を同時におこなう。【０１９４】
続いて、Ｌ２パイプライン処理部１０２ｆは、TAG＿mch（タグ一致）およびhit（Ｌ２キャッシュヒット）検出、および、Ｌ２−ＬＢ１０２ｈとの一致アドレス転送を同時におこなう。そして、TAG＿mchおよびhit検出結果、および、Ｌ２−ＬＢ１０２ｈとのアドレス一致検出結果に基づきＰＦ処理をおこなう。【０１９５】
ＰＦ処理は、（条件２１）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致しない（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch））』場合に、Ｌ２−ＬＢ１０２ｈにおいてエントリを確保し、要求元のＭＩＰＯＲＴ１０２ａへ完了（ｃｍｐ）を通知する。【０１９６】
また、（条件２２）『Ｌ２キャッシュヒットかつＬ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致する（L2＿hit&LB＿256＿mch）』場合に、Ｌ２キャッシュ１０２ｉのデータの読み出しアドレスを入力し、Ｌ２キャッシュ１０２ｉからデータを読み出し、ＣＰＵコア部１０１のＬ１キャッシュ（Ｌ１命令キャッシュ１０１ｂまたはＬ１データキャッシュ１０１ｅ）へデータを転送する。そして、タグ記憶部１０２ｇの「TAG」および「LRU」の更新アドレスを入力し、要求元のＭＩＰＯＲＴ１０２ａへ完了（ｃｍｐ）を通知する。【０１９７】
また、（条件２３）『Ｌ２キャッシュミスまたは「L2＿TC」がオフ、かつ、Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致し、sn＿res＿256応答がある（L2＿miss|（!L2＿TC＿mch）&（!LB＿256＿mch）&sn＿res＿256）』場合に、Ｌ２−ＬＢ１０２ｈにエントリの該当サブラインをマージし、要求元のＭＩＰＯＲＴ１０２ａへ完了（ｃｍｐ）を通知する。【０１９８】
また、（条件２４）『Ｌ２−ＬＢ１０２ｈとの２５６Ｂｙｔｅのキャッシュラインでのアドレスが一致するが、データライトが完了済みでない（LB＿256＿mch&!（data＿write完了済み）』場合に、要求元のＭＩＰＯＲＴ１０２ａへ完了（ｃｍｐ）を通知し、エントリテーブル１１２の該当するエントリの「wt＿flg」をオンにする指示を出力する。【０１９９】
また、（条件２５）『その他、ＰＦパイプライン処理（pf＿pipeline）が完了できなかった』場合に、要求元のＭＩＰＯＲＴ１０２ａへａｂｔを通知する。【０２００】
ＰＦ要求に対するパイププライン処理PF_pipeline処理と、ＤＭ要求に対するパイププライン処理PF＿pipeline処理と、DM＿pipeline処理との基本的な違いは、PF＿pipeline処理がＬ２キャッシュ１０２ｉへの要求データの登録を目的とするのに対し、DM＿pipeline処理はＣＰＵコア部１０１へ要求アドレスのデータを確実に応答することである。【０２０１】
次に、共有Ｌ２キャッシュ部のＬ２リプレースパイプライン処理の概要を説明する。図１０−４は、共有Ｌ２キャッシュ部のＬ２リプレースパイプライン処理の概要を示す図である。Ｌ２リプレースパイプライン（L2＿replace＿pipeline）処理は、新規に登録するWAYを登録前に無効化するpipeline処理である。【０２０２】
同図に示すように、Ｌ２パイプライン処理部１０２ｆは、Ｌ２−ＬＢ１０２ｈからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびＬ２−ＬＢ１０２ｈとのアドレス一致検出を同時におこなう。【０２０３】
続いて、Ｌ２パイプライン処理部１０２ｆは、TAG＿mch（タグアドレス一致）およびhit（Ｌ２キャッシュヒット）検出をおこなう。そして、replace＿pipeline処理判定をおこなう。続いて、Ｌ２−ＬＢ１０２ｈへｃｍｐまたはａｂｔを通知するとともに、「TAG」の更新アドレスを入力する。そして、Ｌ２−ＬＢ１０２ｈは、Replace完了フラグをオンにする。【０２０４】
replace＿pipeline処理では、Writebackの必要がある「L＿TC（O、W、M）」の場合は、ＤＩＭＭ４００へのWriteback処理を伴う。また、「L1＿TC」≠０（すなわち、Ｌ１キャッシュヒット）の場合は、データを保持するＣＰＵコア部１０１に無効化要求が発行される。replace＿pipeline処理は、sn＿res応答を受けたＬ２−ＬＢ１０２ｈのエントリから起動される。【０２０５】
なお、replace＿pipeline処理は、PF＿pipeline処理やDM＿pipeline処理と同様に、「TAG」の検索を行うサイクルが存在するが、その結果を特に使用するわけではなく、Ｌ２−ＬＢ１０２ｈのエントリを新規に確保したときに、ＬＲＵで決定されたWAYとindex＿addresとsublineとを指定して、WAYを無効化する処理を行う。有効なsubline分処理されるので最大subline数分だけ（本一実施の形態では、４subline方式であるので、４回)起動される処理である。【０２０６】
次に、共有Ｌ２キャッシュ部のＬ２タグライトパイプライン処理の概要を説明する。図１０−５は、共有Ｌ２キャッシュ部のＬ２タグライトパイプライン処理の概要を示す図である。Ｌ２タグライトパイプライン（L2＿tag＿write＿pipeline）処理は、「TAG」の登録をおこなうパイプライン処理である。【０２０７】
同図に示すように、Ｌ２パイプライン処理部１０２ｆは、Ｌ２−ＬＢ１０２ｈからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびＬ２−ＬＢ１０２ｈとのアドレス一致検出を同時におこなう。【０２０８】
続いて、Ｌ２パイプライン処理部１０２ｆは、TAG＿mch（タグアドレス一致）およびhit（Ｌ２キャッシュヒット）検出をおこなう。そして、tag＿pipeline処理判定をおこなう。続いて、Ｌ２−ＬＢ１０２ｈへｃｍｐ（完了）またはａｂｔを通知するとともに、「TAG」の更新アドレスを入力する。そして、Ｌ２−ＬＢ１０２ｈは、TAG登録完了フラグをオンにする。【０２０９】
L2＿tag＿write＿pipeline処理は、dow応答のヘッダを受けたＬ２−ＬＢ１０２ｈのエントリから起動される。PF＿pipeline処理やDM＿pipeline処理と同様に、「TAG」の検索を行うサイクルが存在するが、その結果を特に使用するわけではなく、Ｌ２−ＬＢ１０２ｈのエントリを新規に確保したときに、ＬＲＵで決定されたWAYとindex＿addresとを指定して、「TAG」をＬ２タグ記憶部１０２ｇへ新規に登録する処理をおこなう。sn＿res＿256応答の場合は１回のpipeline処理で４subline分の「TAG」の登録をおこなう処理である。【０２１０】
次に、共有Ｌ２キャッシュ部のＬ２データライトパイプライン処理の概要を説明する。図１０−６は、共有Ｌ２キャッシュ部のＬ２データライトパイプライン処理の概要を示す図である。Ｌ２データライトパイプライン（L2＿data＿write＿pipeline）処理は、データをＬ２キャッシュ１０２ｉに書き込むpipeline処理である。【０２１１】
同図に示すように、Ｌ２パイプライン処理部１０２ｆは、Ｌ２−ＬＢ１０２ｈからのpriority要求を受け付けると、priorityを確保し、TAG読み出しアドレス入力をおこなう。そして、TAG読み出し動作およびＬ２−ＬＢ１０２ｈとのアドレス一致検出を同時におこなう。【０２１２】
続いて、Ｌ２パイプライン処理部１０２ｆは、TAG＿mch（タグアドレス一致）およびhit（Ｌ２キャッシュヒット）検出をおこなう。そして、data＿write＿pipeline処理判定をおこなう。続いて、Ｌ２−ＬＢ１０２ｈへｃｍｐまたはａｂｔを通知する。この通知を受けて、Ｌ２ＬＢ１０２ｈは、data＿write登録完了フラグをオンにする。【０２１３】
Ｌ２パイプライン処理部１０２ｆは、パイプライン処理結果の判定を行うL2_data＿write＿pipeline処理判定およびdata＿write登録完了フラグをオンにする処理と平行して、Ｌ２キャッシュ１０２ｉのデータ更新アドレスを入力し、Ｌ２キャッシュへデータを書き込む。【０２１４】
data＿write＿pipeline処理は、dow応答のデータ部を受けたＬ２−ＬＢ１０２ｈのエントリから起動される。データ転送の途中でも、sublineのデータ受信が終わるごとに逐次起動される。【０２１５】
data＿write＿pipeline処理は、PF＿pipeline処理やDM＿pipeline処理と同様に、「TAG」の検索を行うサイクルが存在するが、その結果を特に使用するわけではなく、Ｌ２−ＬＢ１０２ｈのエントリを新規に確保したときに、ＬＲＵで決定されたWAYとindex＿addresとを指定して、Ｌ２キャッシュ１０２ｉへのデータの書き込みを行う処理である。【０２１６】
以上、本発明の一実施の形態を説明したが、本発明は、これに限られるものではなく、請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施の形態で実施されてもよいものである。また、一実施の形態に記載した効果は、これに限定されるものではない。【０２１７】
また、上記一実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記一実施の形態で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。【０２１８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示したものに限られず、その一部または全部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【産業上の利用可能性】
【０２１９】
本発明は、複数のＣＰＵプロセッサコアと、複数のＣＰＵプロセッサコアから共有されるＬ２キャッシュメモリを有する演算処理装置および演算処理装置の制御方法において、Ｌ２キャッシュへのＰＦがほぼ必ず処理される実装である場合、資源枯渇などの理由により処理完了しなかったＰＦが効率的に再処理され、ＰＦ全体のスループットを向上させたい場合に有用である。
【図１】
2009104240.tif 000003
【図２−１】
2009104240.tif 000004
【図２−２】
2009104240.tif 000005
【図３】
2009104240.tif 000006
【図４】
2009104240.tif 000007
【図５】
2009104240.tif 000008
【図６】
2009104240.tif 000009
【図７】
2009104240.tif 000010
【図８】
2009104240.tif 000011
【図９−１】
2009104240.tif 000012
【図９−２】
2009104240.tif 000013
【図１０−１】
2009104240.tif 000014
【図１０−２】
2009104240.tif 000015
【図１０−３】
2009104240.tif 000016
【図１０−４】
2009104240.tif 000017
【図１０−５】
2009104240.tif 000018
【図１０−６】
2009104240.tif 000019
【国際調査報告】
2009104240.tif 000020
2009104240.tif 000021
2009104240.tif 000022