(57)【要約】      （修正有）【課題】異なるラインサイズの１次及び２次キャッシュを備えるマルチプロセッサシステムにおいて、ハードウェアコストを低減し、且つバスとメモリの利用効率を向上させ、消費電力を低減する。【解決手段】２次キャッシュ１０３は、２次キャッシュメモリ１０３Ａに記憶されたデータに含まれる命令コードが複数の１次キャッシュメモリに記憶されているか否かを示すラインビット、データの有効性を示す有効ビット及び２次キャッシュメモリ１０３Ａに記憶されたデータのリフィル対象となるウェイを示すリプレイスビットをライン毎に記憶する２次キャッシュタグメモリ１０３Ｂと、２次キャッシュタグメモリ１０３Ｂに記憶されたラインビットを参照し、２次キャッシュメモリ１０３のラインのうち、１次キャッシュメモリに記憶された命令コードと同じ命令コードを含むデータが記憶されたラインを解放する２次キャッシュコントローラ１０３Ｃと、を有する。【選択図】図１
2009252165.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリに接続されたマルチプロセッサシステムであって、
命令コード及び演算データを含むデータの要求及び処理を行う複数のプロセッサコアと、
前記複数のプロセッサコア毎に設けられ、命令コードを記憶する１次キャッシュメモリを有する複数の１次キャッシュと、
前記複数のプロセッサコアに共有され、前記１次キャッシュよりもラインサイズが大きい２次キャッシュと、を備え、
前記２次キャッシュは、
前記データを記憶する２次キャッシュメモリと、
前記２次キャッシュメモリに記憶されたデータに含まれる命令コードが前記複数の１次キャッシュメモリに記憶されているか否かを示すラインビット、前記２次キャッシュメモリに記憶されたデータの有効性を示す有効ビット及び前記２次キャッシュメモリに記憶されたデータのリフィル対象となるウェイを示すリプレイスビットをライン毎に記憶する２次キャッシュタグメモリと、
前記２次キャッシュタグメモリに記憶されたラインビットを参照し、前記２次キャッシュメモリのラインのうち、前記１次キャッシュメモリに記憶された命令コードと同じ命令コードを含むデータが記憶されたラインを解放する２次キャッシュコントローラと、を有することを特徴とするマルチプロセッサシステム。
【請求項２】
前記２次キャッシュコントローラは、前記１次キャッシュに記憶された命令コードと同じ命令コードを含むデータが記憶されたラインが属するウェイを示すリプレイスビットを設定する請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記２次キャッシュコントローラは、前記２次キャッシュメモリのラインのうち、前記１次キャッシュに記憶された命令コードと同じ命令コードを含むデータが記憶されたラインが無効になるように有効ビットを設定する請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記２次キャッシュは、前記１次キャッシュのｋ（ｋは２以上の整数）倍のラインサイズを有する請求項１乃至３の何れか１項に記載のマルチプロセッサシステム。
【請求項５】
前記２次キャッシュコントローラは、前記プロセッサコアに要求されたデータが前記２次キャッシュメモリに記憶されていない場合に、当該プロセッサコアに対応しない複数の１次キャッシュに当該データに含まれる命令コードが記憶されているか否かを検索し、当該命令コードが記憶されている場合には当該命令コードを読み出し、読み出された命令コードを当該プロセッサコアに対応する１次キャッシュに転送する請求項１乃至４の何れか１項に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関し、特に、命令キャッシュを備えるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
一般的なマルチプロセッサシステムは、複数のプロセッサコア毎に設けられた１次キャッシュと、プロセッサコアに共有される２次キャッシュと、を備えている。
【０００３】
また、１次及び２次キャッシュを持つ一部のプロセッサシステムにおいては、１次及び２次キャッシュの容量を有効に使用するために、１次キャッシュに存在しているデータと２次キャッシュに存在しているデータとを排他的に制御する機能（以下、「イクスクルーシブキャッシュ」という）が設けられている。イクスクルーシブキャッシュを採用している従来のプロセッサシステムは、制御性の観点から、ラインサイズが同一である１次キャッシュと２次キャッシュを備えている。従って、２次キャッシュのラインサイズが大きくなれば、１次キャッシュのラインサイズも大きくなり、２次キャッシュのラインサイズが小さくなれば、１次キャッシュのラインサイズも小さくなる。
【０００４】
一般的に、一度に多くのデータを転送する方がバスやオフチップのＤＲＡＭの利用効率が高くなるため、２次キャッシュのラインサイズは大きい方が好ましい。しかし、１次キャッシュのラインサイズが大きい場合には、１次キャッシュへデータが転送される場合に用いられるバッファのサイズも大きくなるので、ハードウェアの規模及びコストが増加する。特に、マルチプロセッサシステムの場合には、プロセッサの数と同一のバッファが必要であるので、バッファのサイズの増加がハードウェアの規模及びコストに与える影響は大きい。
【０００５】
すなわち、１次キャッシュのラインサイズが大きい場合にはハードウェアの規模及びコストが増加し、２次キャッシュのラインサイズが小さい場合には、バスとＤＲＡＭの利用効率が低下する。
【特許文献１】特表２００７−１５６８２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、異なるラインサイズの１次及び２次キャッシュを備えるマルチプロセッサシステムのハードウェアの規模及びコストを低減し、且つバスとメモリの利用効率を向上させ、消費電力を低減することである。
【課題を解決するための手段】
【０００７】
本発明の第１態様によれば、メインメモリに接続されたマルチプロセッサシステムであって、
命令コード及び演算データを含むデータの要求及び処理を行う複数のプロセッサコアと、
前記複数のプロセッサコア毎に設けられ、命令コードを記憶する１次キャッシュメモリを有する複数の１次キャッシュと、
前記複数のプロセッサコアに共有され、前記１次キャッシュよりもラインサイズが大きい２次キャッシュと、を備え、
前記２次キャッシュは、
前記データを記憶する２次キャッシュメモリと、
前記２次キャッシュメモリに記憶されたデータに含まれる命令コードが前記複数の１次キャッシュメモリに記憶されているか否かを示すラインビット、前記２次キャッシュメモリに記憶されたデータの有効性を示す有効ビット及び前記２次キャッシュメモリに記憶されたデータのリフィル対象となるウェイを示すリプレイスビットをライン毎に記憶する２次キャッシュタグメモリと、
前記２次キャッシュタグメモリに記憶されたラインビットを参照し、前記２次キャッシュメモリのラインのうち、前記１次キャッシュメモリに記憶された命令コードと同じ命令コードを含むデータが記憶されたラインを解放する２次キャッシュコントローラと、を有することを特徴とするマルチプロセッサシステムが提供される。
【発明の効果】
【０００８】
本発明によれば、異なるラインサイズの１次及び２次キャッシュを備えるマルチプロセッサシステムのハードウェアの規模及びコストを低減し、且つバスとメモリの利用効率を向上させ、消費電力を低減させることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施例について図面を参照して説明する。なお、以下の実施例は、本発明の実施の一形態であって、本発明の範囲を限定するものではない。
【実施例１】
【００１０】
はじめに、本発明の実施例１について説明する。本発明の実施例１は、２次キャッシュコントローラがプロセッサコアに要求されたデータを２次キャッシュメモリから読み出して供給する例である。
【００１１】
図１は、本発明の実施例１に係るマルチプロセッサシステム１００の構成を示すブロック図である。
【００１２】
マルチプロセッサシステム１００は、複数のプロセッサコア１０１Ａ〜１０１Ｄ、複数の１次キャッシュ１０２Ａ〜１０２Ｄ及び２次キャッシュ１０３を備えている。
【００１３】
プロセッサコア１０１Ａ〜１０１Ｄは、命令コード及び演算データを含むデータの要求及び処理を行う。プロセッサコア１０１Ａ〜１０１Ｄは、１次キャッシュ１０２Ａ〜１０２Ｄを介して２次キャッシュ１０３に記憶された命令コード及び演算データにアクセスする。
【００１４】
１次キャッシュ１０２Ａ〜１０２Ｄは、プロセッサコア１０１Ａ〜１０１Ｄ毎に設けられている。１次キャッシュ１０２Ａは、命令コードを記憶する命令キャッシュ（１次命令キャッシュメモリ１０２Ａ１及び１次命令キャッシュタグメモリ１０２Ａ２）並びに演算データを記憶するデータキャッシュ（１次データキャッシュメモリ１０２Ａ３及び１次データキャッシュタグメモリ１０２Ａ４）を有する。また、１次キャッシュ１０２Ｂ〜１０２Ｄは、それぞれ１次キャッシュ１０２Ａと同様に、命令キャッシュ（１次命令キャッシュメモリ１０２Ｂ１〜１０２Ｄ１（図示せず）及び１次命令キャッシュタグメモリ１０２Ｂ２〜１０２Ｄ２（図示せず））並びにデータキャッシュ（１次データキャッシュメモリ１０２Ｂ３〜１０２Ｄ３（図示せず）及び１次データキャッシュタグメモリ１０２Ｂ４〜１０２Ｄ４（図示せず））を有する。１次キャッシュ１０２Ａ〜１０２Ｄの命令キャッシュ及びデータキャッシュは、共に６４Ｂのラインサイズを有する。
【００１５】
２次キャッシュ１０３は、１次キャッシュ１０２Ａ〜１０２Ｄを介してプロセッサコア１０１Ａ〜１０１Ｄに共有されるように設けられ、図示されないメインメモリに接続されている。２次キャッシュ１０３は、ＬＲＵ（Least  Recently Used）ポリシーの２ＷＡＹセットアソシアティブ方式を採用し、１次キャッシュ１０２Ａ〜１０２Ｄよりも大きな２５６Ｂのラインサイズを有する。２次キャッシュ１０３の容量は、２５６ＫＢである。２次キャッシュ１０３は、２次キャッシュメモリ１０３Ａ、２次キャッシュタグメモリ１０３Ｂ及び２次キャッシュコントローラ１０３Ｃを備えている。なお、２次キャッシュ１０３のラインサイズは、１次キャッシュ１０２Ａ〜１０２Ｂのラインサイズのｋ（ｋは２以上の整数）倍である必要があり、本発明の実施例１ではｋ＝４である。
【００１６】
２次キャッシュメモリ１０３Ａは、命令コード及び演算データを含むデータを記憶する。
【００１７】
２次キャッシュタグメモリ１０３Ｂは、２次キャッシュメモリ１０３Ａに記憶されたデータに含まれる命令コードが複数の１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に記憶されているか否かを示すラインビット、２次キャッシュメモリ１０３Ａに記憶されたデータの有効性を示す有効ビット、２次キャッシュメモリ１０３Ａに記憶されたデータが変更されたか否かを示すダーティビットを各ウェイのライン毎に記憶し、２次キャッシュメモリ１０３Ａに記憶されたデータのリフィル対象となるウェイを示すリプレイスビットを各ウェイに共通のライン毎に記憶する。２次キャッシュ１０３がＬＲＵポリシーの２ＷＡＹセットアソシアティブ方式を採用しているので、リプレイスビットは、そのエントリがアクセスされる度に値が反転する。
【００１８】
２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａ〜１０１Ｄによってデータの要求が行われた場合に、２次キャッシュタグメモリ１０３Ｂに記憶された有効ビット及びタグアドレスを参照し、１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に記憶されたデータが記憶されたラインがない場合には、キャッシュミスと判断し、リフィル動作が行なわれる。リフィル動作では、メインメモリにアクセスし、メインメモリに記憶されたデータを２次キャッシュメモリ１０３Ａに書き込み、当該データをプロセッサコア１０１Ａ〜１０１Ｄに供給する。このときに、リフィル対象となるラインの有効ビットに１がセットされている状態（すなわち、既に有効なデータが存在している場合）では、リプレイスが発生し、上書きが行なわれる。また、リプレイスされるラインのダーティビットに１がセットされている状態（すなわち、データが変更されていた場合）では、上書きされるデータをメインメモリに書き戻される。２次キャッシュコントローラ１０３Ｃは、２次キャッシュ１０３のラインサイズである２５６Ｂ単位でメインメモリからデータを読み出し、１次キャッシュ１０２Ａ〜１０２Ｄの命令キャッシュのラインサイズである６４Ｂ単位でプロセッサコア１０１Ａ〜１０１Ｄにデータを供給する。
【００１９】
２次キャッシュコントローラ１０３Ｃは、メインメモリからデータを読み出して２次キャッシュメモリ１０３Ａに書き込むときに、２次キャッシュタグメモリ１０３Ｂの内容を更新し、有効ビットに１をセットし、ダーティビットに０をセットし、ラインビットに０をセットし、リプレイスビットの値を反転させ、タグアドレスにアドレスの一部を保存する。
【００２０】
２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａ〜１０１Ｄによって要求されたアドレスに応じて、２次キャッシュメモリ１０３Ａに記憶されたデータを１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に転送する。このときに、プロセッサコア１０１Ａ〜１０１Ｄが命令コードを要求していた場合には、当該データが記憶されたラインに対応する１次命令キャッシュタグメモリ１０２Ａ２〜１０２Ｄ２のラインビットに１をセットする。この処理は、１次キャッシュ１０２Ａ〜１０２Ｄの何れにデータを転送したか否かに関わらず行われる。
【００２１】
２次キャッシュコントローラ１０３Ｃは、上記の動作を繰り返した後、キャッシュミスが発生し、あるラインのリプレイス対象となるウェイを選択する場合に、そのウェイのすべてのラインビットに１がセットされているウェイを優先して選択する。その結果、１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に記憶された命令コードと同じ命令コードを含むデータに対応するラインが２次キャッシュメモリ１０３Ａから解放されることになる。
【００２２】
なお、本発明の実施例１では、プロセッサコア１０１及び１次キャッシュ１０２の数は複数個であれば幾つでも良い。
【００２３】
図２は、本発明の実施例１に係る１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂの初期状態のデータ構造を示す概略図である。
【００２４】
１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２は、１ラインのウェイ毎の１ラインのウェイ毎の有効ビット（Valid）及びタグアドレス（Tag Address）と、リプレイスビット（Replace）と、を含む。
【００２５】
２次キャッシュタグメモリ１０３Ｂは、１ラインのウェイ毎の有効ビット（Valid）、ダーティビット（Dirty）、複数のラインビット（Line 0〜3）及びタグアドレス（Tag Address）と、リプレイスビット（Replace）と、を含む。有効ビットは２次キャッシュメモリ１０３Ａに記憶されたデータの有効性を示すビットであり、リプレイスビットは２次キャッシュメモリ１０３Ａに記憶されたデータのリフィル対象となるウェイを示すビットである。ラインビットは、２次キャッシュ１０３のラインサイズ／１次キャッシュのラインサイズのビット数を有する。２次キャッシュ１０３のラインサイズが２５６Ｂ、１次キャッシュ１０２のラインサイズが６４Ｂのときには、ラインビットは４ｂｉｔを有する。
【００２６】
初期状態では、１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのビットには０が設定されている。
【００２７】
図３は、本発明の実施例１に係るマルチプロセッサの命令コードのフェッチ処理の処理手順を示すフローチャートである。
【００２８】
はじめに、１次キャッシュ１０２Ａがアクセスされる（Ｓ３０１）。このとき、プロセッサコア１０１Ａによって要求されたデータの命令コードが１次命令キャッシュメモリ１０２Ａ１に存在するか否かについて、１次命令キャッシュタグメモリ１０２Ａ２の内容に基づいて調べられる。
【００２９】
Ｓ３０１において、要求されたデータの命令コードが１次命令キャッシュメモリ１０２Ａ１に存在しない場合には（Ｓ３０２−ＮＯ）、２次キャッシュ１０３がアクセスされる（Ｓ３０３）。このとき、プロセッサコア１０１Ａによって要求されたデータが２次キャッシュメモリ１０３Ａに存在するか否かについて、２次キャッシュタグメモリ１０３Ｂの内容に基づいて調べられる。
【００３０】
Ｓ３０３において、要求されたデータが２次キャッシュメモリ１０３Ａに存在しない場合には（Ｓ３０４−ＮＯ）、ウェイのリフィルが行われる（Ｓ３０５）。このとき、図４に示されたように、ウェイ０及びウェイ１の有効ビットが０である場合にはリプレイスビットの値に対応するウェイがリフィルされ、ウェイ０の有効ビットのみが０である場合にはウェイ０がリフィルされ、ウェイ１の有効ビットのみが０である場合にはウェイ１がリフィルされ、ウェイ０及びウェイ１のラインビットが全て１である場合にはリプレイスビットの値に対応するウェイがリフィルされ、ウェイ０のラインビットのみが全て１である場合にはウェイ０がリフィルされ、ウェイ１のラインビットのみが全て１である場合にはウェイ１がリフィルされ、それ以外の場合にはリプレイスビットの値に対応するウェイがリフィルされる。
【００３１】
次に、Ｓ３０５においてリフィルされたウェイの全てのラインビットに０がセットされる（Ｓ３０６）。
【００３２】
次に、データが記憶されたラインに対応するラインビットに１がセットされる（Ｓ３０７）。
【００３３】
一方、Ｓ３０１において要求されたデータの命令コードが１次命令キャッシュメモリ１０２Ａ１に存在する場合には（Ｓ３０２−ＹＥＳ）、Ｓ３０８へ進む。
【００３４】
他方、Ｓ３０３において要求されたデータの命令コードが２次キャッシュメモリ１０３Ａに存在する場合には（Ｓ３０４−ＹＥＳ）、Ｓ３０７へ進む。
【００３５】
Ｓ３０１〜Ｓ３０７は、マルチプロセッサの処理が終了するまで繰り返される（Ｓ３０８−ＮＯ）。
【００３６】
次に、本発明の実施例１に係るマルチプロセッサシステム１００の動作の具体例を説明する。
【００３７】
例えば、プロセッサコア１０１Ａによってアドレス（0x00A0_0000）に存在する命令コードが要求されたときには、メインメモリから２次キャッシュメモリ１０３Ａに、２次キャッシュメモリ１０３Ａから１次命令キャッシュメモリ１０２Ａ１に命令コードが転送され、図５に示されるように、１次命令キャッシュタグメモリ１０２Ａ２のリプレイスビットに１がセットされ、ウェイ０の有効ビットに１がセットされ、ウェイ０にタグアドレス（0x00A0_0000）がセットされ、２次キャッシュタグメモリ１０３Ｂのリプレイスビットに１がセットされ、ウェイ０の有効ビットに１がセットされ、ウェイ０のラインビットに１がセットされ、ウェイ０にタグアドレス（0x00A0_00）がセットされる。
【００３８】
次に、プロセッサコア１０１Ｂの命令コード要求によってアドレス（0x00A0_004，0x00A0_008，0x00A0_00C）の３回の要求が行なわれると、２次キャッシュメモリ１０３Ａから１次命令キャッシュメモリ１０２Ｂ１に命令コードが転送され、図６に示されるように、１次命令キャッシュタグメモリ１０２Ｂ２のリプレイスビットに１がセットされ、ウェイ０の有効ビットに１がセットされ、ウェイ０のタグアドレスに（0x00A0_004，0x00A0_008，0x00A0_00C）がセットされ、２次キャッシュタグメモリ１０３Ｂのリプレイスビットに１がセットされ、ウェイ０のラインビットに１がセットされる。
【００３９】
ウェイ０のラインビットがすべて１の状態で、このラインがリフィル対象となった場合には、リプレイスビットの値は１であるが、ウェイ０にリフィルが行なわれる。
【００４０】
なお、本発明の実施例１では、２次キャッシュコントローラ１０３Ｃは、リプレイス対象を選択するときに全てのラインビットに１がセットされているウェイを優先して選択したが、ラインビットがすべて１にセットされたときに当該ラインの有効ビットに０をセットしても良い。
【００４１】
本発明の実施例１によれば、１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に記憶された命令コードと同じ命令コードを含むラインを２次キャッシュ１０３から解放するので、キャッシュサイズを有効利用することができ、ひいては、マルチプロセッサシステム１００のハードウェアの規模及びコストを低減し、且つバスとメモリの利用効率を向上させ、消費電力を低減することができる。
【実施例２】
【００４２】
次に、本発明の実施例２について説明する。本発明の実施例２は、２次キャッシュコントローラがプロセッサコアに要求された命令コードを対応しない１次キャッシュから対応する１次キャッシュに転送する例である。なお、本発明の実施例１と同様の内容についての説明は省略する。
【００４３】
以下、プロセッサコア１０１Ａによって要求された命令コードが対応する１次命令キャッシュメモリ１０２Ａ１及び２次キャッシュメモリ１０３Ａに存在せず、対応しない１次命令キャッシュメモリ１０２Ａ１に存在する場合の例について説明する。
【００４４】
本発明の実施例２に係る２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａによって命令コードの要求が行われた場合には、２次キャッシュメモリ１０３Ａに要求されたデータが存在するか否かを調べる。
【００４５】
プロセッサコア１０１Ａによって要求された命令コードが２次キャッシュメモリ１０３Ａに存在する場合には、２次キャッシュコントローラ１０３Ｃは、２次キャッシュメモリ１０３Ａに記憶されたデータを１次命令キャッシュメモリ１０２Ａ１に転送する。
【００４６】
一方、プロセッサコア１０１Ａによって要求されたデータが２次キャッシュメモリ１０３Ａに存在しない場合には、２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａに対応しない１次命令キャッシュメモリ１０２Ｂ１〜１０２Ｄ１に要求されたデータの命令コードと同じ命令コードが存在するか否かを調べる。
【００４７】
２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａによって要求されたデータの命令コードと同じ命令コードが１次命令キャッシュメモリ１０２Ｂ１に存在する場合には、１次命令キャッシュメモリ１０２Ｂ１に記憶された命令コードを１次命令キャッシュメモリ１０２Ａ１に転送することによってプロセッサコア１０１Ａに供給する。
【００４８】
一方、２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａによって要求されたデータの命令コードと同じ命令コードが１次命令キャッシュメモリ１０２Ｂ１に存在しない場合には、メインメモリから２次キャッシュ１０３のラインサイズ（２５６Ｂ）分のデータの命令コードを１次命令キャッシュメモリ１０２Ａ１に転送することによってプロセッサコア１０１Ａに供給する。
【００４９】
２次キャッシュコントローラ１０３Ｃは、メインメモリから読み出されたデータのうち要求されたデータの命令コード以外の命令コードが１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に存在するか否かを調べる。
【００５０】
２次キャッシュコントローラ１０３Ｃは、要求されたデータの命令コード以外の命令コードが１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に存在する場合には、当該命令コードが存在する場所に対応するラインビットに１をセットする。リプレイス対象を選択するときには、実施例１と同様に、全てのラインビットに１がセットされた箇所をリプレイス対象として選択するので、１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に記憶された命令コードと同じ命令コードを含むデータに対応するラインが２次キャッシュメモリ１０３Ａから解放されることになる。
【００５１】
次に、本発明の実施例２に係るマルチプロセッサシステム１００の動作の具体例を説明する。
【００５２】
図７は、本発明の実施例２に係るマルチプロセッサシステム１００の動作が行われた後の状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【００５３】
本発明の実施例２に係るマルチプロセッサシステム１００の動作が行われた後は、１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２の一部にリプレイスビット、有効ビット及びタグアドレスがセットされ、２次キャッシュタグメモリ１０３Ｂの一部にリプレイスビット、有効ビット、ラインビット及びタグアドレスがセットされている。
【００５４】
プロセッサコア１０１Ａによってアドレス（0x00A0_004）が要求され、当該タグアドレスに対応する命令コードが１次命令キャッシュメモリ１０２Ｂ１に存在するときには、１次命令キャッシュメモリ１０２Ｂ１から１次命令キャッシュメモリ１０２Ａ１に命令コードが転送され、図８に示されるように、１次命令キャッシュタグメモリ１０２Ａ２のリプレイスビットに１がセットされ、ウェイ０の有効ビットに１がセットされ、ウェイ０にタグアドレス（0x00A0_004）がセットされる。
【００５５】
プロセッサコア１０１Ｂによってアドレス（0x10A0_004）が要求され、当該タグアドレスに対応する命令コードが１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に存在しない場合であって、メインメモリから当該タグアドレスに対応する命令コードが１次命令キャッシュメモリ１０２Ｂ１に転送され、第２キャッシュメモリ１０３Ａのタグアドレス（0x10A0_000）とタグアドレス（0x10A00C）のデータの命令コードと同じ命令コードが１次命令キャッシュメモリ１０２Ａ１に存在しているときには、図９に示されるように、１次命令キャッシュタグメモリ１０２Ｂ２のリプレイスビットに０がセットされ、ウェイ１の有効ビットに１がセットされ、ウェイ１にタグアドレス（0x10A0_004）がセットされ、２次キャッシュタグメモリ１０３Ｂのリプレイスビットに０がセットされ、ウェイ１のラインビット（Line 0，1，3）に１がセットされ、タグアドレス（0x10A0_00）がセットされる。
【００５６】
なお、本発明の実施例２では、１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１及び１次命令キャッシュタグメモリ１０２Ａ２〜１０２Ｄ２に対するプロセッサコア１０１Ａ〜１０１Ｄのアクセスと２次キャッシュコントローラ１０３Ｃのアクセスとが重複した場合には、プロセッサコア１０１Ａ〜１０１Ｄのアクセスが優先される。
【００５７】
本発明の実施例２によれば、プロセッサコア１０１Ａによって要求された命令コードが対応する１次命令キャッシュメモリ１０２Ａ１及び２次キャッシュメモリ１０３Ａに存在せず、対応しない１次命令キャッシュメモリ１０２Ｂ１〜１０２Ｄ１に存在する場合に、当該データを対応しない１次命令キャッシュメモリ１０２Ｂ１〜１０２Ｄ１から読み出して対応する１次命令キャッシュメモリ１０２Ａ１に書き込むことによってプロセッサコア１０１Ａに供給するので、メインメモリへのアクセス数を低減することができる。
【００５８】
また、本発明の実施例２によれば、１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１及び１次命令キャッシュタグメモリ１０２Ａ２〜１０２Ｄ２に対するプロセッサコア１０１Ａ〜１０１Ｄのアクセスと２次キャッシュコントローラ１０３Ｃのアクセスが重複した場合にプロセッサコア１０１Ａ〜１０１Ｄのアクセスが優先されるので、プロセッサコア１０１Ａ〜１０１Ｄの性能を低下させることなく上記効果を達成することができる。
【実施例３】
【００５９】
次に、本発明の実施例３について説明する。本発明の実施例３は、２次キャッシュコントローラがプロセッサコアに要求されたデータの命令コードのみをメインメモリから対応する１次キャッシュに転送する例である。なお、本発明の実施例１，２と同様の内容についての説明は省略する。
【００６０】
以下、プロセッサコア１０１Ａによって要求された命令コードが対応する１次命令キャッシュメモリ１０２Ａ１及び２次キャッシュメモリ１０３Ａに存在せず、対応しない１次命令キャッシュメモリ１０２Ｂ１に存在する場合の例について説明する。
【００６１】
本発明の実施例３に係る２次キャッシュコントローラ１０３Ｃは、プロセッサコア１０１Ａによってデータの要求が行われた場合には、２次キャッシュメモリ１０３Ａ、対応しない１次命令キャッシュメモリ１０２Ｂ１，１０２Ｃ１の順に要求されたデータが存在するか否かを調べる。
【００６２】
プロセッサコア１０１Ａによって要求されたデータが何れかに存在する場合には、２次キャッシュコントローラ１０３Ｃは、要求されたデータと同じ２次キャッシュ１０３のライン上に配置されるデータが１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に存在するか否かを調べる。
【００６３】
プロセッサコア１０１Ａによって要求されたデータ及び当該データ以外のデータの両方が存在しない場合には、メインメモリから２次キャッシュ１０３のラインサイズ（２５６Ｂ）分のデータの命令コードを１次命令キャッシュメモリ１０２Ａ１に転送することによってプロセッサコア１０１Ａに供給する。
【００６４】
一方、プロセッサコア１０１Ａによって要求されたデータ以外のデータが存在する場合には、２次キャッシュコントローラ１０３Ｃは、要求されたデータのみをメインメモリから１次命令キャッシュメモリ１０２Ａ１に転送することによってプロセッサコア１０１Ａに供給する。
【００６５】
次に、本発明の実施例３に係るマルチプロセッサシステム１００の動作の具体例を説明する。
【００６６】
プロセッサコア１０１Ｂによってタグアドレス（0x10A0_004）が要求され、図１０に示されるように、当該タグアドレスに対応する命令コードが１次命令キャッシュメモリ１０２Ａ１〜１０２Ｄ１に存在せず、要求されたデータと同じ２次キャッシュ１０３のライン上に配置されるデータが１次命令キャッシュメモリ１０２Ａ１に存在するため、２次キャッシュコントローラ１０３Ｃは、要求されたデータのみをメインメモリから１次命令キャッシュメモリ１０２Ｂ１に転送し、１次命令キャッシュタグメモリ１０２Ｂ２のリプレイスビットに０がセットされ、ウェイ１の有効ビットに１がセットされ、ウェイ１にタグアドレス（0x10A0_004）がセットされる。
【００６７】
本発明の実施例３によれば、２次キャッシュメモリ１０３Ａに存在するデータを上書きすることがないので、２次キャッシュ１０３のサイズを有効に利用することができる。
【００６８】
また、本発明の実施例３によれば、メインメモリから１次キャッシュ１０２Ａ〜１０２Ｄへのデータの転送量が１次キャッシュ１０２Ａ〜１０２Ｄのラインサイズ分だけで良くなるので、メインメモリのアクセスに発生する消費電力及びメインメモリのバンド幅の消費を低減することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施例１に係るマルチプロセッサシステム１００の構成を示すブロック図である。
【図２】本発明の実施例１に係る１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂの初期状態のデータ構造を示す概略図である。
【図３】本発明の実施例１に係るマルチプロセッサの命令コードのフェッチ処理の処理手順を示すフローチャートである。
【図４】図３のウェイのリフィル（Ｓ３０５）の概略を示す概略図及びプログラムの一例である。
【図５】本発明の実施例１に係るマルチプロセッサシステム１００の動作が行われたときの状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【図６】本発明の実施例１に係るマルチプロセッサシステム１００の動作が行われたときの状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【図７】本発明の実施例２に係るマルチプロセッサシステム１００の動作が行われた後の状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【図８】本発明の実施例２に係るマルチプロセッサシステム１００の動作が行われた後の状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【図９】本発明の実施例２に係るマルチプロセッサシステム１００の動作が行われた後の状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【図１０】本発明の実施例３に係るマルチプロセッサシステム１００の動作が行われた後の状態の１次命令キャッシュタグメモリ１０２Ａ２，１０２Ｂ２及び２次キャッシュタグメモリ１０３Ｂのデータ構造を示す概略図である。
【符号の説明】
【００７０】
１００  マルチプロセッサ
１０１Ａ〜１０１Ｄ  プロセッサコア
１０２Ａ〜１０２Ｄ  １次キャッシュ
１０２Ａ１〜１０２Ｄ１  １次命令キャッシュメモリ
１０２Ａ２〜１０２Ｄ２  １次命令キャッシュタグメモリ
１０２Ａ３〜１０２Ｄ３  １次データキャッシュメモリ
１０２Ａ４〜１０２Ｄ４  １次データキャッシュタグメモリ
１０３  ２次キャッシュ
１０３Ａ  ２次キャッシュメモリ
１０３Ｂ  ２次キャッシュタグメモリ
１０３Ｃ  ２次キャッシュコントローラ 
【図１】
2009252165.tif 000003
【図２】
2009252165.tif 000004
【図３】
2009252165.tif 000005
【図４】
2009252165.tif 000006
【図５】
2009252165.tif 000007
【図６】
2009252165.tif 000008
【図７】
2009252165.tif 000009
【図８】
2009252165.tif 000010
【図９】
2009252165.tif 000011
【図１０】
2009252165.tif 000012