(57)【要約】  マルチプロセッサ装置において、各プロセッサのキャッシュメモリのキャッシュラインが、複数の部分書き込み可能領域に分割される。各プロセッサには、前記部分書き込み可能領域ごとの排他権である部分排他権を与えられる。キャッシュメモリのキャッシュタグ３０は、エントリ３１のキャッシュステータス３２に、部分書き込み状態ＰＭが登録され、部分書き込み可能領域情報が登録される。部分排他権を設定することにより、フォルスシェアリングを解消する。
2008155844.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサによって共有されるキャッシュメモリと、
前記複数のプロセッサに接続されるメモリとを備え、
前記キャッシュメモリのキャッシュラインは、複数の部分書き込み可能領域に分割されており、
前記複数のプロセッサに対して、前記部分書き込み可能領域の単位で、排他アクセス権が与えられることを特徴とする、情報処理装置。
【請求項２】
前記キャッシュメモリは、前記キャッシュラインごとに前記部分書き込み可能領域情報を格納するとともに、キャッシュステータスとして、前記部分書き込み可能領域の単位で排他アクセス権が与えられている状態を登録するキャッシュタグを有することを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記キャッシュメモリは、部分書き込み制御手段を備え、前記キャッシュメモリの前記部分書き込み可能領域に書き込まれたデータを、前記部分書き込み可能領域ごとに下位メモリに書き込むことを特徴とする、請求項１または２に記載の情報処理装置。
【請求項４】
前記キャッシュメモリは、前記部分書き込み可能領域に書き込まれたデータをマージするマージレジスタを備え、該マージレジスタを介して下位メモリに書き込むことを特徴とする請求項１または２に記載の情報処理装置。
【請求項５】
前記キャッシュメモリは、キャッシュステータスとして、前記部分書き込み可能領域の単位で排他アクセス権が与えられている状態を登録するキャッシュタグと、各プロセッサに対応して部分書き込み可能領域情報を格納する部分書き込みマスクレジスタを有することを特徴とする、請求項１に記載の情報処理装置。
【請求項６】
前記部分書き込みマスクレジスタの情報の変更時には、前記キャッシュメモリの少なくとも前記部分書き込み可能領域の単位で排他アクセス権が与えられている領域のデータを下位メモリに書き出すことを特徴とする、請求項５に記載の情報処理装置。
【請求項７】
複数のプロセッサと、
前記複数のプロセッサによって共有されるキャッシュメモリと、
前記キャッシュメモリのキャッシュラインは、複数の部分書き込み可能領域に分割されている情報処理装置のキャッシュ制御方法であって、
前記複数のプロセッサのうちの１つが、部分書き込み可能領域を指定して排他アクセス権を要求した場合、他のプロセッサがキャッシュライン全体の排他アクセス権をもっているか、あるいは他のプロセッサが前記指定された部分書き込み可能領域の排他アクセス権をもっているときには、他のコアにはデータの吐き出しと無効化とを指示し、要求元のプロセッサには前記指定された部分書き込み可能領域に対して排他アクセス権を与えることを特徴とするキャッシュ制御方法。
【請求項８】
前記複数のプロセッサのうちの１つが、部分書き込み可能領域を指定して排他アクセス権を要求した場合、前記指定された部分書き込み可能領域が、他のプロセッサに排他アクセス権が与えられている部分書き込み可能領域と重ならない場合は、要求元のプロセッサには前記指定された部分書き込み可能領域に対して排他アクセス権を与えることを特徴とする請求項７に記載のキャッシュ制御方法。
【請求項９】
前記キャッシュメモリから下位メモリにデータを吐き出す場合、前記部分書き込み可能領域に書き込まれたデータを、前記部分書き込み可能領域ごとに前記下位メモリに書き込むことを特徴とする請求項７または８に記載のキャッシュ制御方法。
【請求項１０】
前記キャッシュメモリから下位メモリにデータを吐き出す場合、前記部分書き込み可能領域に書き込まれたデータを、レジスタによりマージした後、レジスタから下位メモリに書きこむことを特徴とする請求項７または８に記載のマルチプロセッサ装置のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびキャッシュ制御方法に関する。
【背景技術】
【０００２】
複数のプロセッサコアが主記憶を共有するシステム、特にキャッシュコヒーレントを保つ、ＳＭＰ（Symmetric Multi Processing）やｃｃＮＵＭＡ（cache-coherent NonUniform Memory Access）に代表されるシステムにおいては、複数のプロセッサコアが同時期にひとつのキャッシュラインを取り合うことによる性能低下がしばしば問題になっている。この問題のひとつであるフォルスシェアリングでは、同一キャッシュライン内の、異なる記憶ワードを更新する状況で起こる。【０００３】
キャッシュデータの管理単位(キャッシュラインのサイズ)がワード単位であれば、キャッシュラインを取り合う競合は起きない。しかし、キャッシュラインは通常ワードの大きさよりはかなり大きな単位で取り扱うため、本来競合しなくていいはずの競合が発生してしまう。このようなフォルスシェアリングは、キャッシュをもっていないシステムでも、システムコントローラやメモリコントローラにおいて、管理単位がワード単位より大きい場合には同じ問題が起きる。【０００４】
従来のハードウェアレベルのフォルスシェアリング対策としては、フォルスシェアリングが起こるかどうかによって，ライト・インバリデイト方式とライト・ブロードキャスト方式のキャッシュプロトコルを切り替えて，キャッシュ１２への書き込みを制御するものがある（特許文献１）。また、キャッシュブロック内のワードごとに、キャッシュブロック内のワードがすべて有効であるときはワードが占有か共有かの情報を、キャッシュブロック内のワードがすべては有効でないときはワードが有効か無効かの情報を保持するようにすることが公知である（特許文献２）が、フォルスシェアリングを解消するものではない。
【特許文献１】特開２００２−１４９４８９号公報
【特許文献２】特許第３２２６５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記問題点に鑑み、フォルスシェアリングをハードウェアレベルで解消することができる情報処理装置およびキャッシュ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の第１の態様である情報処理装置は、複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュメモリと、前記複数のプロセッサに接続されるメモリとを備え、前記キャッシュメモリのキャッシュラインは、複数の部分書き込み可能領域に分割されており、前記複数のプロセッサに対して、前記部分書き込み可能領域の単位で、排他アクセス権が与えられることを特徴とする。【０００７】
前記キャッシュメモリは、前記キャッシュラインごとに前記部分書き込み可能領域情報を格納するとともに、キャッシュステータスとして、前記部分書き込み可能領域の単位で排他アクセス権が与えられている状態を登録するキャッシュタグを有することができる。【０００８】
前記キャッシュメモリは、部分書き込み制御手段を備え、前記キャッシュメモリの前記部分書き込み可能領域に書き込まれたデータを、前記部分書き込み可能領域ごとに下位メモリに書き込むことができる。【０００９】
前記キャッシュメモリは、前記部分書き込み可能領域に書き込まれたデータをマージするマージレジスタを備え、該マージレジスタを介して下位メモリに書き込むことができる。【００１０】
前記キャッシュメモリは、キャッシュステータスとして、前記部分書き込み可能領域の単位で排他アクセス権が与えられている状態を登録するキャッシュタグと、各プロセッサに対応して部分書き込み可能領域情報を格納する部分書き込みマスクレジスタを有することができる。【００１１】
前記部分書き込みマスクレジスタの情報の変更時には、前記キャッシュメモリの少なくとも前記部分書き込み可能領域の単位で排他アクセス権が与えられている領域のデータを下位メモリに書き出すことができる。【００１２】
本発明の第２の態様であるキャッシュ制御方法は、複数のプロセッサと、前記複数のプロセッサによって共有されるキャッシュメモリと、前記キャッシュメモリのキャッシュラインは、複数の部分書き込み可能領域に分割されている情報処理装置のキャッシュ制御方法であって、前記複数のプロセッサのうちの１つが、部分書き込み可能領域を指定して排他アクセス権を要求した場合、他のプロセッサがキャッシュライン全体の排他アクセス権をもっているか、あるいは他のプロセッサが前記指定された部分書き込み可能領域の排他アクセス権をもっているときには、他のコアにはデータの吐き出しと無効化とを指示し、要求元のプロセッサには前記指定された部分書き込み可能領域に対して排他アクセス権を与えることを特徴とする。【００１３】
前記複数のプロセッサのうちの１つが、部分書き込み可能領域を指定して排他アクセス権を要求した場合、前記指定された部分書き込み可能領域が、他のプロセッサに排他アクセス権が与えられている部分書き込み可能領域と重ならない場合は、要求元のプロセッサには前記指定された部分書き込み可能領域に対して排他アクセス権を与えることができる。【００１４】
前記キャッシュメモリから下位メモリにデータを吐き出す場合、前記部分書き込み可能領域に書き込まれたデータを、前記部分書き込み可能領域ごとに前記下位メモリに書き込むことができる。【００１５】
さらに、前記キャッシュメモリから下位メモリにデータを吐き出す場合、前記部分書き込み可能領域に書き込まれたデータを、レジスタによりマージした後、レジスタから下位メモリに書きこむことができる。
【発明の効果】
【００１６】
以上のように、各プロセッサに対して部分書き込み可能領域に部分排他権を与えることができるので、ハードウェアによってフォルスシェアリングの解消が可能となり、特にＨＰＣ分野の大規模システムにおいて効果が著しい。また、アプリケーションによっては、部分書き込みマスクレジスタを用いると、コスト削減が可能である。さらに、部分書き込み可能領域のデータを下位メモリに書き戻す場合には、直接部分書き込みを行って書き戻すこともでき、あるいはこのデータをマージレジスタでマージして書き戻すこともでき、どのようなメモリ構成にも対応できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態が適用されるマルチプロセッサ装置。
【図２】本発明の実施形態が適用されるその他のマルチプロセッサ装置。
【図３】本発明の第１の実施形態のキャッシュタグを示す図である。
【図４】本発明の第１の実施形態の部分書き込みを実行する回路を示す図である。
【図５】本発明の第１の実施形態の書き込み処理のフローを示す図である。
【図６】本発明の第２の実施形態の書き込みマスクレジスタを用いるキャッシュタグを示す図である。
【図７】本発明の実施形態である部分書き込みによるデータ回収手法を示す図である。
【図８】本発明の実施形態であるマージレジスタを用いるデータ回収手法を示す図である。
【符号の説明】
【００１８】
１０    ＣＰＵ
１、２    ＣＰＵコア
３    Ｌ２キャッシュ
３−１１、３−１２    Ｌ１タグコピー
３−２１    Ｌ２キャッシュタグ
３−２２    Ｌ２データ
３−３    部分書き込み制御手段
３−５    マージレジスタ
３０    キャッシュタグ
３１    キャッシュタグエントリ
３２    キャッシュステータス
３３    部分書き込み可能領域情報
３４    アドレスタグ
３５    その他情報
３８    書き込みマスクレジスタ
４０    比較器
５０    判定手段
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して実施の形態を説明する。
図１は、１実施形態が適用されるマルチプロセッサ装置の概要を示す図である。本実施形態のマルチプロセッサ装置では、Ｌ１キャッシュがコアごとに備え付けられ、Ｌ２キャッシュがコア間で共有されるキャッシュとなっている。【００２０】
図１に示すように、１実施形態によるマルチプロセッサ装置は、ＣＰＵ（Central Processor Unit）１０と、ＣＰＵ１０に接続されるシステムコントローラ５と、システムコントローラ５に接続されたメモリ６とを有する。また、ＣＰＵ１０は、複数のＣＰＵコア１，２と、ＣＰＵコア１、２が共有するＬ２（Level 2）キャッシュ３とを備える。図１では、ＣＰＵ１０が２個のＣＰＵコアを有する例を示すが、ＣＰＵが３個以上のＣＰＵコアを備えていてもよい。【００２１】
ＣＰＵコア１は、演算ユニット１−１とＬ１（Level 1）キャッシュ１−２とを有している。Ｌ１キャッシュ１−２には、キャッシュタグ１−２１とキャッシュデータ１−２２が記憶される領域とが配置される。キャッシュタグ１−２１とキャッシュデータ１−２２が記憶される領域とは、キャッシュインデックスによって同時にアクセスされ、演算ユニットが参照あるいは書換えを行うデータがキャッシュされていれば、演算ユニットにキャッシュされたデータを返す。【００２２】
ＣＰＵコア２は、ＣＰＵコア１と同一構成であり、演算ユニット２−１とＬ１キャッシュ２−２とを有している。さらに、Ｌ１キャッシュ２−２が、キャッシュタグ２−２１とキャッシュデータ２−２２が記憶される領域とを備えているのも同様である。【００２３】
Ｌ２キャッシュ３は、ＣＰＵコア１のＬＩキャッシュ１−２１のタグコピー３−１１とＣＰＵコア２のＬＩキャッシュ２−２１のタグコピー３−１２とを備えるともに、Ｌ２キャッシュ自体のキャッシュタグ３−２１とキャッシュデータ３−２２が記憶される領域とを有する。【００２４】
Ｌ２キャッシュに、Ｌ１キャッシュのキャッシュタグコピーが配置されるのは、下位階層のキャッシュに、上位キャッシュの状態がわかるようにして、信頼性と性能の両立を確保するためである。なお、タグコピーに相当するものがないシステムでは、キャッシュスヌープの際に毎回上位階層のキャッシュにあるか否かを問い合わせる必要があるが、タグコピーに相当するものがないシステムであっても、本実施形態を適用することができる。【００２５】
図２は、１実施形態が適用される他のマルチプロセッサ装置を示す図である。図２は、複数のＣＰＵを備えるマルチプロセッサ装置であり、各ＣＰＵ１１、１２は、それぞれプロセッサコア１１−１、１２−１とＬ２キャッシュ１１−２、１２−２とを有している。Ｌ２キャッシュは、それぞれキャッシュタグ１１−２１、１２−２１とキャッシュデータ１２−２１、１２−２２が記憶される領域とを有している。【００２６】
また、各ＣＰＵ１１、１２は、システムコントローラ５を介してメモリ６に接続している。システムコントローラ５は、それぞれキャッシュタグ１１−２１、１２−２１のコピーであるＬ２タグコピー５−１、５−２を備えている。図２では、ＣＰＵ１１、１２を示すが、任意個数のＣＰＵを使用することが可能で、システムコントローラ５も、任意個数のＣＰＵに対応して同数のＬ２タグコピーを配置することができる。【００２７】
図１では、Ｌ１キャッシュ１−２、２−２はコア１、２ごとに備え付けられ、Ｌ２キャッシュ３がコア１、２間で共有されている。これに対して、図２では、ＣＰＵ１１、１２はＬ２キャッシュ１１−２、１２−２を備え、システムコントローラ５がＣＰＵ１１、１２間で共有されている。すなわち、図２のものは、図１のＬ１キャッシュ部分を適切なキャッシュ階層例えばＬ２キャッシュに置き換え、図１のＬ２キャッシュを例えばＳＭＰ（Symmetric MultiProcessor）システムのシステムコントローラに置き換えたものに相当する。以上のように、各演算手段が使用するキャッシュメモリと、それに接続される各演算手段が共通に使用する共有メモリに相当するものがあれば、本発明の実施形態は適用可能である。【００２８】
図３は、第１の実施形態に使用されるキャッシュタグの構成例を示す図である。本実施形態は、Ｌ１キャッシュのキャッシュラインをキャッシュ管理サイズよりも小さな部分領域に分割し、各部分領域を書き込み可能とする。すなわち、キャッシュラインの書き込みを行う単位を部分領域すなわち部分書き込み可能領域とする。そして、部分書き込み可能領域の所有権あるいは更新権が、プロセッサコアに排他で与えられる。そのために、部分書き込み領域に排他アクセス権が与えられているか否かを示す状態と部分書き込み可能領域の情報をキャッシュタグに格納するものである。【００２９】
本実施形態では、この書き込み可能領域の単位は、８バイトである。これは、ＩＥＥＥ７５４規格（IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985）に従う場合、単精度浮動小数点型では４バイト、倍精度浮動小数点型では８バイトを使用していること、また最近のプロセッサでは整数（固定小数点数）型は４バイトまたは８バイトであることを考慮したことによる。もちろん、書き込み可能領域の単位は、４バイトとすることもできる。書き込み可能領域の単位を４バイトあるいは８バイトとすることで、ＨＰＣ（High Performance Computing）分野で、例えばベクトル演算におけるフォルスシェアリングなどのフォルスシェアリング問題はほぼ解決できる。【００３０】
さらに、ある種の組み込みの画像処理プロセッサ、いわゆる信号処理プロセッサＤＳＰ等などでは、１バイト単位であることもあるので、書き込み可能領域の単位を１バイトとすることもできる。いずれにせよ、対象とするハードウェアあるいはソフトウェアに応じて適切な部分書き込み領域のサイズを選択するようにすればよい。【００３１】
図３のキャッシュタグ１は、キャッシュラインに対応するタグエントリ３１に、キャッシュ中のデータが求めるワードであるか否かを判別するアドレス情報をもつ。このアドレス情報は、キャッシュ用のインデックスとして使用されなかった上位ビットからなり、図３では、アドレスタグ３４として格納されている。【００３２】
本実施形態では、タグエントリ３１に、書き込み可能領域の情報が格納される書き込み可能領域ブロック３３を有する。本実施形態では、書き込み可能領域ブロック３３は、第１〜第８ブロックに区分されている。各ブロックは、上記のように８バイトである。【００３３】
これに伴い、キャッシュステータス３２は、排他型を示すＭ（Modified）、共有型を示すＳ（Shared）、無効を示すＩ（Invalid）の基本の３状態を示すＭ、Ｓ、Ｉに、部分書き込み状態を示すＰＭ（Partial Modified）が付加されている。【００３４】
なお、排他型であるがデータストア未実行の状態Ｅ（Exclusive clean）をＭＳＩ３状態のキャッシュステータス３２に付加した４状態ＭＥＳＩであれば、部分書き込み可能状態でデータストア未実行の状態ＰＥ（Partial Exclusive clean）をさらに追加することで対応できる。同様に他のキャッシュ遷移状態を持つ場合にも、部分書き込み状態を示すＰＭに相当するものを付加することができる。【００３５】
このようにして、本実施形態では、キャッシュタグに、部分領域に排他アクセス権があることすなわち部分書き込み可能状態ＰＭと、書き込み可能な部分領域の位置を示す書き込み可能領域情報３３とが登録される。そして、部分書き込み可能状態ＰＭと書き込み可能領域情報３３に応じて、部分書き込み可能領域のそれぞれについて、所有権あるいは更新権が、プロセッサコアに排他で与えられる。なお、その他のブロック３５には、エラー訂正コード（ＥＣＣ：Error Correcting Code）などが格納されている。【００３６】
図４は、部分排他権を設定可能な本実施形態の処理を行う回路を説明する図である。それぞれのコア内でキャッシュライン内へのストアが発生した場合には、ストア要求アドレスは、そのインデックスにより、キャッシュデータ（図示せず）へアクセスするとともに、キャッシュタグ３０にアクセスする。タグ３０から得られるタグアドレスとストア要求アドレスとは比較器４０により比較される。同時に、判定手段５０により、タグのステータスを確認して、部分排他権が設定されている部分書き込み状態であるときには、タグに格納されている書き込み可能領域との一致を判定する。判定手段５０は、比較器４０の出力でタグアドレスとストア要求アドレスとが一致しており、ストア要求領域と書き込み可能領域が一致していると、キャッシュライン内へのストアを実行する。そうでなければ、ストア要求はミスであるので、Ｌ２キャッシュへ要求する。【００３７】
本実施形態を効率よく使うには、フォルスシェアリングが発生しそうであるという状況を簡単に判別する必要がある。本実施形態では、コア間で共有されているＬ２キャッシュ、つまりタグコピーの置かれているキャッシュ階層で、あるコアが、通常のストアが起きたために、排他型で持っているラインに対して、別のコアが排他権を主張した状況を「フォルスシェアリング」と判定する。この判定は単純な判定であるので効率的である。同じアドレスの記憶ワードを取り合うロック競合と区別が付かないが、いずれにせよ競合を防ぐことになるので問題にならない。【００３８】
図５は、本実施形態のプロセッサコア内でキャッシュラインへのストアが発生した場合の処理を示す図である。要求元のコアからＬ２キャッシュに排他権を伴うデータの要求がある場合、まず、要求元コアからＬ２キャッシュ制御部に対して、排他権を行使する部分領域を示す情報を付加してデータ要求を渡す（Ｓ１）。Ｌ２キャッシュにアクセスした結果、アクセスされたブロックは、無効状態であるか（Ｓ２）、少なくとも１つの他のコアが共有権をもっているか（Ｓ３）、他のコアがライン全体の排他権をもっているか（Ｓ４）、少なくとも１つの他のコアが部分排他権をもっているか（Ｓ５）の４通りの場合がある。【００３９】
アクセスしたブロックが無効状態（Ｓ２）であれば、主メモリにアクセスせざるを得ず、この場合は従来と同様に主メモリにアクセスする（Ｓ７）。【００４０】
アクセスしたブロックに対して、１以上の他のコアが通常の共有権をもっている場合（Ｓ３）は、共有権をもっている他のコアすべてにデータの無効化を指示し、ライン全体の通常の排他権を要求元コアに与える（Ｓ８）。ただし、本実施形態では部分排他権を与えることが可能であるので、フォルスシェアリングが多く発生することが予想される場合には、要求元コアに部分排他権をあたえてもよい。【００４１】
アクセスしたブロックに対して、他のコアがライン全体の排他権をもっている場合（Ｓ４）は、排他権を持っているコアに対して、データの吐き出しと無効化を指示する。また、排他権を要求する要求元のコアには、データ転送をする際に、要求時に付加されている部分領域に対してのみの部分排他権を付与する（Ｓ９）。同時に、Ｌ２キャッシュにも吐き出したデータを書き戻す。【００４２】
アクセスしたブロックに対して、少なくとも１つの他のコアが部分排他権を持っている場合（Ｓ５）は、タグコピーにある、部分排他状態が有効である部分領域を全て検索する（Ｓ６）。【００４３】
要求元の部分領域と他のコアが部分排他権を持っている領域とに重なる個所がある場合（Ｓ６：ＹＥＳ）、少なくとも重なる部分を保持しているコアに対して、データ吐き出しと、後述のマージとデータの書き戻しおよび無効化を行う。また、要求元コアについては、要求時に付加されている部分領域に対してのみの部分排他権を付与する。この場合、フォルスシェアリングではなく本当に領域が競合しているのだから、処理の単純化のために部分排他権を持つ全てのコアに対しデータ吐き出しと、後述のマージとデータの書き戻しおよび無効化を行ってもよい。【００４４】
要求元の排他権を求める部分領域のすべてと重ならない場合（Ｓ６：ＮＯ）、換言すれば、この部分領域の和集合と重ならない場合には、要求時に付加されている部分領域に対してのみの部分排他権を付与する（Ｓ１０）。この場合は、従来であればフォルスシェアリングが起きたケースであるが、本実施形態では、フォルスシェアリングとはならず、他のコアに対してなにも要求する必要はない。【００４５】
なお、ストア命令は８バイトとは限らず長い場合も短い場合もあるし、８バイトであっても境界が合わない場合すらあるので、書き込み可能領域に包含されないストアである場合には、書き込み可能でなかったときと同様に、必要な排他権を獲得するような処理を行う。【００４６】
また、部分排他権が設定されているキャッシュラインに対し、部分排他権と部分排他権ではない従来のライン全体の排他権、あるいは部分排他権と共有権、あるいは、部分排他権の部分領域に、重なりがある状況が検出されることは、システムが予想しているものではない。したがって、部分書き込み可能領域のチェックあるいは比較によりこのような状況が検出された場合、データ化けの危険があるので、キャッシュ状態エラーとしてシステム例外を検出するようにして、システムの信頼性を高めるようにする。【００４７】
フォルスシェアリングを起こし得るストアであることを明示する命令を、通常のストア命令とは別に準備しておくと、ハードウェアでフォルスシェアリング状態を検出するステップを一部省略できる、この命令に起因する排他権の要求時に、いきなり部分書き込みができる部分排他型に遷移できるので、さらに効率が良くなり性能向上する。【００４８】
第１の実施形態では、キャッシュタグおよびタグコピーに、部分書き込み可能状態を示すステータスとともに、書き込み可能領域を格納している。タグに書き込み可能領域を設けると、書き込み可能領域はタグエントリごとに設けられので、タグエントリ数分の容量が必要になる。例えば、科学技術計算などで、ある一定期間、同一の書き込み可能領域にストアを繰り返す場合があり、キャッシュラインごとに書き込み可能領域を設けるのは効率が悪い場合がある。【００４９】
図６は、第２の実施形態に使用されるキャッシュタグの構成例を示す図である。第２の実施形態では、部分書き込み可能領域の情報はタグ３０のエントリに格納しない。これに代えて、プロセッサコアごとの書き込み可能領域を明示する書き込マスクレジスタ３８を設ける。書き込みマスクレジスタ３８には、プロセッサコアごとに設けられ、書き込みマスクレジスタ３８に設定された排他権は、当該プロセッサコアに共通する。ただし、部分書き込み可能状態を示すステータスＭＰは、キャッシュタグ３０のステータス情報３２として登録される。書き込みマスクレジスタ３８は、キャッシュタグ３０すなわちプロセッサコア１個に対して１個配置される。キャッシュライン３１のそれぞれに書き込み可能領域を示す情報が格納されている場合と対比すると、その数は大幅に削減される。【００５０】
このように、プロセッサコアが、ある一定期間、同じパターンのストアを繰り返すのであれば、書き込み可能領域を明示するレジスタは、プロセッサコアごとにひとつ設けるだけでよいので、コストを削減することができる。【００５１】
次に、部分書き込み状態のデータを書き戻す処理について説明する。部分書き込み状態にあるキャッシュラインを書き戻すためには、部分書き込み状態の回収あるいはマージが必要である。このような部分書き込み状態のマージは、Ｌ２キャッシュのリプレースなどでも必要となる。【００５２】
図７は、第１の実施形態における部分書き込みされたデータを回収するための回路を示す図である。図１に示すような、Ｌ１キャッシュがコア１−１ごとに備え付けられ、Ｌ２キャッシュ３がコア間で共有される装置のＬ２キャッシュ３に設けられた部分書き込みデータ回収回路を、図７は示す。ここでは、Ｌ２キャッシュのＬ１タグコピーは、６４バイトのキャッシュラインに対して、８バイトの部分領域すなわち書き込み可能領域を設定している。また、エラー訂正コードは８バイトである。なお、部分書き込み可能領域を示す情報は、キャッシュタグに格納されている。【００５３】
図７に示すように、Ｌ２キャッシュは、部分書き込み制御手段３−３を備え、部分書き込み制御手段３−３は、ＣＰＵコアごとのＬ１タグコピー３−１１、３−１２から、部分排他権を持つすべてのコアのデータを引き出す。そして、Ｌ２キャッシュデータ３−２２が記憶される領域の第１〜第８の部分領域３−２２−１〜３−２２−８に書き込み可能信号ＷＥを与えて、部分領域ごとに書き換える処理を行う。以上のようにして、８バイトごとの部分書き込み（パーシャルライト）を行ってデータを書き戻す。【００５４】
第１の実施形態では、キャッシュタグに書き込み可能領域をもっているので、Ｌ１キャッシュタグにも、Ｌ２キャッシュ制御部にあるタグコピーにも、同一の部分領域を示す情報がある。論理的には、そのいずれか片方を読み出せばよい。図７では、Ｌ２キャッシュ制御部のタグコピーを読み、そのまま部分書き込みを実行している。例えばＬ２にタグコピーを持たない場合などで、Ｌ１キャッシュタグのものを用いるのであれば、Ｌ２制御部にデータ転送する際に、部分領域を通知して転送すればよい。【００５５】
第２の実施形態では、キャッシュタグから部分書き込み領域の情報を引き出すのではなく、マスクレジスタから読み出せばよい。さらに、第２の実施形態では、書き込み可能領域の部分書き込み状態が変更されると、それまでの部分書き込み状況と、変更後の部分書き込み状況で齟齬が生じてデータ化けとなってしまう。したがって、部分書き込み状態の変更事象が発生した場合に、キャッシュの中身を一旦、主記憶や下位キャッシュのような下位メモリ装置に書き戻し、部分書き込み状態が存在しないようにする必要がある。このような部分書き込み状態のキャッシュラインを書き戻す際にも、図７に示す回収処理が実行される。なお、キャッシュの中身を下位メモリに吐き出すキャッシュフラッシュ自体は公知の技術を使用する。【００５６】
図７のデータ回収手法では、キャッシュアレイあるいは主記憶メモリをエラー訂正コードで保護している場合、エラー訂正コードのガード範囲を部分書き込み単位にあわせないと問題が起こる。前述の例では、Ｌ１キャッシュの部分領域が８バイト単位で、エラー訂正コードも８バイトであるので、特に問題は起こらない。このような場合、非常に簡便に部分書き込みによるデータの回収が実現できる。また、部分領域が、例えばＲＡＭの物理的な分割に適合しているなどの場合はやはり図６の手法が有効である。【００５７】
しかしながら、例えば、従来キャッシュが８バイトに対してＥＣＣチェックビットを付けているところに、４バイト単位で取り扱いをする場合や、ブロック訂正機能などの大きな訂正機構を持つ主記憶メモリに適用する際などでは、ＥＣＣチェックビットがほぼ倍増してしまう（１つのチェックビットの担当ガード範囲が狭まる分、必要なビット幅が減るので、正確には倍よりは小さい）。さらに、部分領域を１バイト単位とするような場合も、部分領域のサイズに対して、ＥＣＣチェックビットのサイズが大きくなり、問題となる場合がある。【００５８】
このような場合、エラー訂正コードのガード範囲を部分書き込み単位にあわせようとすると、余分の記憶容量が必要になる。特に主記憶メモリモジュールは汎用品を用いるのが近年では一般的なので、汎用品を用いることができなくなると、コストの増大が著しい。また、部分書き込み機能を持たなかったところに部分書き込み機能を付けると、当然ながらキャッシュアレイ全域に渡って物理的な実装コストが増える。【００５９】
図８は、ＥＣＣなどの訂正機構による問題からメモリアレイに直接に部分書き込みが困難である場合に採用することができる手法を示す図である。図８においても、図１に示すような、Ｌ１キャッシュがコア１−１ごとに備え付けられ、Ｌ２キャッシュ３がコア間で共有される装置を前提とする。図８は、そのＬ２キャッシュ３に設けられる他のデータ回収手法を示す。【００６０】
図８に示すように、Ｌ２キャッシュ３に、キャッシュラインのデータが格納できるマージレジスタ３−５を配置する。そして、まず回収すべきキャッシュラインの書き換え前のデータをＬ２キャッシュデータ３−２２が記憶される領域から読み出して、マージレジスタ３−５に格納する（Ｓ２１）。【００６１】
次に、Ｌ１キャッシュタグ３−１１、３−１２のそれぞれにある部分書き込みされたキャッシュラインを読み出し、マージレジスタに部分書き込みする（Ｓ２２）。同時にＬ１キャッシュタグ３−１１、３−１２のキャッシュラインは無効化する。なお、部分書き込みがないキャッシュタグについては、処理しない。【００６２】
Ｌ１キャッシュタグ３−１１、３−１２について部分書き込みが終了したら、マージレジスタにあるものが集約結果であり、最新のキャッシュラインデータである。したがって、最新のキャッシュラインデータをレジスタからＬ２キャッシュデータ３−２２が記憶される領域に格納する（Ｓ２３）。【００６３】
以上説明したマージ手法は、コアとＬ２キャッシュ間のみならず、上位キャッシュと下位キャッシュ、あるいはキャッシュとメモリとの間でも同様に適用できる。なお、下位キャッシュあるいはメモリに格納する手順、またはコピーバックの宛先に送付するなどの手順は、通常の排他型保持状態と同じ手順を踏むことができる。
【図１】
2008155844.tif 000003
【図２】
2008155844.tif 000004
【図３】
2008155844.tif 000005
【図４】
2008155844.tif 000006
【図５】
2008155844.tif 000007
【図６】
2008155844.tif 000008
【図７】
2008155844.tif 000009
【図８】
2008155844.tif 000010
【国際調査報告】
2008155844.tif 000011
2008155844.tif 000012