(57)【要約】【課題】  物理メモリアドレスを基にコア間通信で使われているキャッシュラインとワード状態を管理することでキャッシュメモリに対するアクセスの排他制御を行う。【解決手段】  マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと、該キャッシュメモリ領域のコア間通信での使用状態を示すワード状態記憶情報とからなるコア間通信領域情報を登録しておく。キャッシュメモリへのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、該物理メモリアドレスを前記要素に分解して分解要素情報を生成する。この分解要素情報をコア間通信領域情報と比較し、キャッシュメモリへのアクセスを許可した場合に、コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、キャッシュメモリへのアクセスを不許可と判定して通知する。【選択図】      図１
2016139239.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示すワード状態記憶情報とからなるコア間通信領域情報を登録するコア間通信領域情報登録部と、
キャッシュメモリへのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、入力した該物理メモリアドレスを前記要素に分解して分解要素情報を生成する分解要素情報生成手段と、
前記分解要素情報を前記コア間通信領域情報と比較し、前記キャッシュメモリへのアクセスを許可した場合に、前記コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、前記キャッシュメモリへのアクセスを不許可と判定して通知するアクセス排他制御手段と
を備えることを特徴とするキャッシュメモリ制御装置。
【請求項２】
前記物理メモリアドレスは、タグ、インデックス、バイトオフセットの要素に分解され、該インデックスは前記キャッシュメモリに登録されたキャッシュラインを登録するアドレスアレイのエントリの検索に用いられる情報に対応し、該タグは前記インデックスとともにキャッシュヒットまたはキャッシュミスの比較判定に用いられる情報に対応し、該バイトオフセットは、キャッシュヒットしたキャッシュラインの中のワードを特定する情報に対応し、
前記ワード状態記憶情報は、コア間通信を行っている各コアの前記キャッシュメモリ領域の各コアの送信アクセス状況および受信アクセス状況を、コア毎に示す情報を含む
ことを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項３】
前記アクセス排他制御手段は、
１次比較として、前記分解要素情報生成手段が生成した前記分解要素情報の前記インデックスと一致するインデックスを有する前記コア間通信領域情報の、前記コア間通信領域情報登録部における有無を判定し、一致するインデックスを有する前記コア間通信領域情報が存在しない場合に、前記キャッシュメモリへのアクセスを許可し、
前記物理メモリアドレスの入力とともに前記コア間通信領域情報の登録を要求するコア間通信領域情報登録要求が入力されている場合には、前記コア間通信領域情報登録部に、前記分解要素情報生成手段が生成した前記分解要素情報を有する新たなコア間通信領域情報を登録する
ことを特徴とする請求項２に記載のキャッシュメモリ制御装置。
【請求項４】
前記アクセス排他制御手段は、前記１次比較の結果、一致するインデックスを有する前記コア間通信領域情報が存在する場合には、２次比較として、一致するインデックスを有する前記コア間通信領域情報に対して、前記分解要素情報生成手段が生成した前記分解要素情報の前記タグの一致の有無を判定し、
該２次比較においてタグが一致しない場合には前記キャッシュメモリへのアクセスを不許可とし、該２次比較においてタグが一致する場合には前記キャッシュメモリへのアクセスを許可する
ことを特徴とする請求項３に記載のキャッシュメモリ制御装置。
【請求項５】
前記アクセス排他制御手段は、前記２次比較の結果、タグが一致する前記コア間通信領域情報が存在する場合であって、前記物理メモリアドレスの入力とともに入力したアクセス命令種別が受信処理を示す場合、３次比較として、一致するタグおよびインデックスを有する前記コア間通信領域情報に対して、前記分解要素情報生成手段が生成した前記分解要素情報の前記バイトオフセットの一致の有無を判定し、
該３次比較においてバイトオフセットが一致する場合には、該コア間通信領域情報に含まれる前記ワード状態記憶情報を更新する
ことを特徴とする請求項４に記載のキャッシュメモリ制御装置。
【請求項６】
前記アクセス排他制御手段は、前記ワード状態記憶情報の前記受信処理を行うコアに対応する情報を、受信アクセスを実行したことを示す０に設定する更新を行い、
前記受信処理を行うすべてのコアに対応する情報が０になった場合には、当該コア間通信領域情報を前記コア間通信領域情報登録部から削除する
ことを特徴とする請求項５に記載のキャッシュメモリ制御装置。
【請求項７】
マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示すワード状態記憶情報とからなるコア間通信領域情報をコア間通信領域情報登録部に登録し、
キャッシュメモリへのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、入力した該物理メモリアドレスを前記要素に分解して分解要素情報を生成し、
前記分解要素情報を前記コア間通信領域情報と比較し、前記キャッシュメモリへのアクセスを許可した場合に、前記コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、前記キャッシュメモリへのアクセスを不許可と判定して通知する
ことを特徴とするキャッシュメモリ制御方法。
【請求項８】
前記物理メモリアドレスは、タグ、インデックス、バイトオフセットの要素に分解され、該インデックスは前記キャッシュメモリに登録されたキャッシュラインを登録するアドレスアレイのエントリの検索に用いられる情報に対応し、該タグは前記インデックスとともにキャッシュヒットまたはキャッシュミスの比較判定に用いられる情報に対応し、該バイトオフセットは、キャッシュヒットしたキャッシュラインの中のワードを特定する情報に対応し、
前記ワード状態記憶情報は、コア間通信を行っている各コアの前記キャッシュメモリ領域の各コアの送信アクセス状況および受信アクセス状況を、コア毎に示す情報を含み、
前記分解要素情報の前記インデックスと一致するインデックスを有する前記コア間通信領域情報の、前記コア間通信領域情報登録部における有無を１次比較として判定し、
該１次比較の判定結果として、一致するインデックスを有する前記コア間通信領域情報が存在しない場合に前記キャッシュメモリへのアクセスを許可し、前記物理メモリアドレスの入力とともに前記コア間通信領域情報の登録を要求するコア間通信領域情報登録要求が入力されている場合には、前記コア間通信領域情報登録部に、前記分解要素情報を有する新たなコア間通信領域情報を登録する
ことを特徴とする請求項７に記載のキャッシュメモリ制御方法。
【請求項９】
前記１次比較の判定結果として、一致するインデックスを有する前記コア間通信領域情報が存在する場合には、一致するインデックスを有する前記コア間通信領域情報に対して、前記分解要素情報の前記タグの一致の有無を２次比較として判定し、
該２次比較の判定結果として、タグが一致しない場合には前記キャッシュメモリへのアクセスを不許可とし、
該２次比較の判定結果として、タグが一致する場合には前記キャッシュメモリへのアクセスを許可する
ことを特徴とする請求項８に記載のキャッシュメモリ制御方法。
【請求項１０】
前記２次比較の判定結果として、タグが一致する前記コア間通信領域情報が存在する場合であって、前記物理メモリアドレスの入力とともに入力したアクセス命令種別が受信処理を示す場合、一致するタグおよびインデックスを有する前記コア間通信領域情報に対して、前記分解要素情報の前記バイトオフセットの一致の有無を３次比較として判定し、
該３次比較の判定結果として、バイトオフセットが一致する場合には、該コア間通信領域情報に含まれる前記ワード状態記憶情報の前記受信処理を行うコアに対応する情報を、受信アクセスを実行したことを示す０に設定する更新を行い、
前記受信処理を行うすべてのコアに対応する情報が０になった場合には、当該コア間通信領域情報を前記コア間通信領域情報登録部から削除する
ことを特徴とする請求項９に記載のキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）とメインメモリとの間に配備されるキャッシュメモリを制御するキャッシュメモリ制御装置および制御方法に関する。特に、本発明は、ＣＰＵが備える複数のプロセッサコア（以降、コアと称す）間で共有しているキャッシュメモリを用いたコア間通信を制御するキャッシュメモリ制御装置および制御方法に関する。
【背景技術】
【０００２】
キャッシュメモリを用いたデータ処理が知られている。キャッシュメモリは、ＣＰＵ等の演算装置とメインメモリとの間に設けられ、メインメモリ内の一部のデータを格納し、演算装置との間でデータをやり取りする。これにより、演算装置がメインメモリにアクセスする時間を短縮する。
【０００３】
このようなキャッシュメモリを用いたシステムが特許文献１や特許文献２に開示されている。
【０００４】
特許文献１は、演算装置がキャッシュメモリに一時データを書き込むときに生じる無駄なメモリアクセスを回避可能なキャッシュメモリシステムを開示する。
【０００５】
特許文献１が開示するキャッシュメモリシステムは、複数のコアを含むCPUとメインメモリの間に存在するライトバック型キャッシュメモリを対象とする。そして、本来は必要ではないにも関わらず、キャッシュメモリとメインメモリとの内容の一貫性を保つために行われるメモリアクセスを軽減する仕組みを持つ。
【０００６】
キャッシュメモリシステムの概要について、特許文献１の記載を参照して以下に説明する。
【０００７】
図１３は、特許文献１に記載されたキャッシュメモリシステムの構成を一例として示すブロック図である。図１３を参照すると、このキャッシュメモリシステムは、複数のプロセッサコア４＿０、４＿１〜４＿Ｎ−１を含むＣＰＵ１とメインメモリ３との間にキャッシュメモリ２が配備される構成となっている。
【０００８】
図１４は、特許文献１に記載されたキャッシュメモリシステムにおけるキャッシュメモリ２の構成を示すブロック図である。
【０００９】
図１４を参照すると、キャッシュメモリ２は、アドレスレジスタ７、アドレスアレイ１１、データアレイ１２、比較器１６およびキャッシュ制御ユニット１９を有する構成となっている。
【００１０】
アドレスレジスタ７は、ＣＰＵ１が要求したアクセス先のメモリアドレスを格納する。アドレスレジスタ７に格納されるメモリアドレスは、上位ｍビット８、中位のｎビット９、下位ｋビット１０によって表される。
【００１１】
アドレスアレイ１１は、アドレスエントリを持つメモリであり、上位ｍビット１３と状態他１４を要素とする配列である。アドレスアレイ１１は、データアレイ１２のデータエントリにブロック単位で格納されているブロックデータ１５の索引として使用される。
【００１２】
なお、アドレスレジスタ７に格納されたメモリアドレスの上位ｍビット８をアドレス内タグ情報、中位のｎビット９をインデックス情報、下位ｋビット１０をバイトオフセット情報と称する。また、アドレスアレイ１１の上位ｍビット１３をキャッシュ内タグ情報と称する。
【００１３】
データアレイ１２は、複数のワードからなる複数のブロックデータ１５を要素とする配列である。
【００１４】
図１５は、アドレスアレイ１１に格納されている状態他１４の状態ビットの内容を示す図である。
【００１５】
状態他１４は、データアレイ１２に格納されているブロックデータ１５の状態を示すブロック状態記憶部２０とワード状態記憶部２１で構成される。図１５は、ＣＰＵ１にコアを４つ備え、データアレイ１２に格納されている１つのブロックデータ１５が８ワード（３２バイト）である場合を例にして示している。
【００１６】
ワード状態記憶部２１は、ブロックデータ１５を構成する各ワードについて、ＣＰＵ１からのデータが書き込まれたワードを特定するためのワード状態情報を記憶するワード状態Ｗ（ｉ）を有する。ここでは、８ワードの各ワードに対応するワード状態Ｗ（１）〜Ｗ（８）を有する。また、各ワード状態Ｗ（ｉ）は、ＣＰＵ１が具備する各コアに対応するビットを有している。ここでは、ワード状態Ｗ（ｉ）は４つのコアに対応させて４ビットで構成される。
【００１７】
ワード状態Ｗ（ｉ）は、その内容に応じて当該ワードの下記の状態を示す。なお、以降の説明においては、ワード状態Ｗ（ｉ）を、単にＷ（ｉ）と称する。
【００１８】
Ｗ（ｉ）≠0000のときは、ｉ番目のワードにいずれかのコアからデータが書き込まれたことを示し、ブロックデータのｉ番目のワードには有効なデータが格納されていることになる。
【００１９】
Ｗ（ｉ）＝0000のときは、ｉ番目のワードにはいずれのコアからもデータが書き込まれていないことを示す。
【００２０】
また、コアからデータが書き込まれたＷ（ｉ）において、書込みを行ったコアに対応する位置のビット値を０に、それ以外のコアに対応する位置のビット値を１に設定する。Ｗ（ｉ）の４ビットのうちの０の位置が書込みを行ったコアを示す。
【００２１】
ブロック状態記憶部２０は、そのブロック内の、ＣＰＵ１から書き込まれていないワードに、メインメモリ３から読み出されたデータが記憶されているか否かを示すＢＶ（Block Validity）を記憶する。
【００２２】
ＢＶ＝１は、ブロック全体が有効であることを示す。この場合、Ｗ（ｉ）＝0000でも、ｉ番目のワードにはメインメモリ３から読み出されたデータが格納されて、当該ワードには有効なデータが格納されていることを示す。
【００２３】
ＢＶ＝０の場合は、Ｗ（ｉ）≠0000のワードだけが有効で、Ｗ（ｉ）＝0000のワードは無効であることを示す。
【００２４】
キャッシュメモリシステムの基本的な動作について、図１４と図１５を参照して説明する。
【００２５】
ＣＰＵ１から記憶装置へのアクセス要求が発行されると、キャッシュメモリ２のアドレスレジスタ７にアクセス先のメモリアドレスが格納される。
【００２６】
アドレスレジスタ７の中位のｎビット９をインデックスアドレスとしてアドレスアレイ１１を検索し、該当するエントリを取得する。該当するエントリには上位ｍビット１３（キャッシュ内タグ情報）と上述した状態他１４が格納されている。
【００２７】
アドレスアレイ１１から取得したエントリの上位ｍビット１３（キャッシュ内タグ情報）とアドレスレジスタ７に格納されている上位ｍビット８（アドレス内タグ情報）が比較器１６に提供される。
【００２８】
比較器１６による上位ｍビット１３（キャッシュ内タグ情報）と上位ｍビット８（アドレス内タグ情報）の比較結果が一致する場合には、当該エントリに対応するデータアレイ１２に目的のデータが格納されている（キャッシュヒット）。一方、比較結果が不一致の場合には、目的とするデータはキャッシュメモリ２に存在せず（キャッシュミス）、メインメモリ３にアクセスすることになる。
【００２９】
キャッシュ制御ユニット１９は、比較器１６による比較結果、状態他１４、コア番号１７、命令１８等を入力して、命令種別や状態他１４の内容に応じて以下のようなキャッシュメモリ２の制御を行う。また、キャッシュ制御ユニット１９は、アドレスレジスタ７の下位ｋビット１０を、ブロックデータ１５の中のワード位置を特定するバイトオフセット情報として受け取る。
【００３０】
命令１８には、ストア命令（store）、ロード命令（load）およびロードアンドインバリデート命令（load and invalidate）がある。なお、ストア命令は書込み命令（write）、ロード命令は読出し命令（read）とも称する。
【００３１】
ストア命令（store）の場合の動作は次のようになる。
【００３２】
キャッシュヒットの場合、キャッシュ制御ユニット１９は、バイトオフセット情報に基づいて、当該エントリに対応するブロックデータ１５の中の書込みの対象となるワードを特定し、書込み用データを該ワードに書き込む。つづいて、データが書き込まれたワードに対応するW（ｉ）に、データを書き込んだコアを示す情報を設定する。例えば、コア０が１ワード目にデータを書き込んだ場合には、W（1）＝０１１１にセットする。
【００３３】
キャッシュミスの場合、キャッシュ制御ユニット１９は、新しいブロックを書き込み用ブロックとしてデータアレイ１２に割り当てる。このとき、キャッシュ制御ユニット１９は、割り当てられたブロックのＷ（ｉ）とＢＶに設定された情報に基づいて、割り当てられたブロックに有効なデータが残っていないかどうかを判定する。
【００３４】
割り当てられたブロックのすべてのワード状態がＷ（ｉ）＝００００ならば、そのブロックには、どのコアからもデータが書き込まれていなかったことになる。この場合は、メインメモリ３にライトバックすることなく、そのまま、その割り当てられたブロックを使う。
【００３５】
割り当てられたブロックのすべてのワード状態がＷ（ｉ）≠００００、または、ＢＶ＝１の場合には、そのブロック全体が書き換えられた、または、ブロック全体が有効であることになる。この場合には、そのブロックのデータをメインメモリ３にライトバックする。
【００３６】
割り当てられたブロックの一部のワード状態がＷ（ｉ）≠００００で、かつ、ＢＶ＝０の場合には、Ｗ（ｉ）≠００００であるワードだけが書き換えられたことになる。この場合、Ｗ（ｉ）≠００００のワードのデータだけを、メインメモリ３にライトバックする。
【００３７】
つづいて、新しく割り当てたブロックに対応しているアドレスアレイ１１のエントリの上位ｍビット１３に、アドレスレジスタの上位ｍビット８を設定する。そして、状態他１４をゼロクリアして初期化する。
【００３８】
次に、キャッシュ制御ユニット１９はバイトオフセット情報に基づいて書込みの対象となるワードを特定し、書き込むべきデータを書き込む。その後、データが書き込まれたワードに対応するW（ｉ）に、データを書き込んだコアを示す情報を設定する。例えば、コア０が１ワード目にデータを書き込んだ場合には、W（1）＝０１１１にセットする。
【００３９】
ロード命令（load）の場合の動作は次のようになる。
【００４０】
キャッシュヒットの場合で、ロード命令に示されたメモリアドレスに対応するワード状態がＷ（ｉ）≠００００またはＢＶ＝１のとき、キャッシュ制御ユニット１９は、そのメモリアドレスから特定されるデータアレイ１２内のワードからデータを読み出す。
【００４１】
また、キャッシュヒットの場合で、ロード命令に示されたメモリアドレスに対応するワード状態がＷ（ｉ）＝００００かつＢＶ＝０のとき、キャッシュ制御ユニット１９は、メインメモリ３からデータを読み出す。その後、データアレイ１２のそのエントリのブロックデータ中のＷ（ｉ）＝００００のワードだけに、読み出したデータを書き込む。そしてＢＶ＝１に設定する。続いて、キャッシュ制御ユニット１９は、データアレイ１２から、アクセスされたワードを読み出す。
【００４２】
キャッシュミスの場合、キャッシュ制御ユニット１９は、新しいブロックを割り当てる。割り当てられたブロックに有効なデータが入っていた場合、つまりW（ｉ）≠００００あるいはBV＝１であった場合には、対象のブロックのデータをメインメモリ３へライトバックする。
【００４３】
つづいて、新しく割り当てたブロックに対応しているアドレスアレイ１１のエントリの上位ｍビット１３に、アドレスレジスタの上位ｍビット８を設定する。そして、状態他１４をゼロクリアして初期化する。
【００４４】
次に、キャッシュ制御ユニット１９は、ロード命令に示されたメモリアドレスに対応するブロック内のデータをメインメモリ３から読み出す。
【００４５】
キャッシュ制御ユニット１９は、データアレイ１２のそのブロック内でデータが書き込まれていないＷ（ｉ）＝００００のワードに、メインメモリ３から読み出したブロックのデータを書き込む。なお、ワード状態記憶部２１は初期化されているので、ブロック内のデータ全体が書き込まれることになる。
【００４６】
続いて、キャッシュ制御ユニット１９は、そのブロック内のＣＰＵ１から書き込まれていないワードに、メインメモリ３から読み出されたデータが記憶されていることを示すＢＶ＝１を設定する。そして、キャッシュ制御ユニット１９は、データアレイ１２から、アクセスされたワードを読み出す。
【００４７】
ロードアンドインバリデート命令（load and invalidate）の場合の動作は次のようになる。
【００４８】
キャッシュヒットの場合で、ロードアンドインバリデート命令に示されたメモリアドレスに対応するワード状態がＷ（ｉ）≠００００またはＢＶ＝１のとき、キャッシュ制御ユニット１９は、そのメモリアドレスから特定されるデータアレイ１２内のワードからデータを読み出す。
【００４９】
読み出されたワードに対応するＷ（ｉ）のうち、ロードアンドインバリデート命令を実行したコアに対応するビットが１の場合、ロードアンドインバリデート命令を実行したコアに対応するビットを０にする。また、ＢＶ＝０に設定する。
【００５０】
キャッシュヒットの場合で、ロードアンドインバリデート命令に示されたメモリアドレスに対応するワード状態がＷ（ｉ）＝００００かつＢＶ＝０のとき、キャッシュ制御ユニット１９は、メインメモリ３からデータを読み出す。その後、データアレイ１２のそのエントリのブロックデータ中のＷ（ｉ）＝００００のワードだけに、読み出したデータを書き込む。そしてＢＶ＝１に設定する。この動作はロード命令の場合の動作と同じである。
【００５１】
キャッシュミスの場合の動作は、ロード命令の場合の動作と同じである。
【００５２】
上述した動作を利用した、キャッシュメモリ２を使ったコア０、コア１、コア２、コア３によるコア間の通信例が特許文献１に記載されている。
【００５３】
まず、コア０はメッセージをキャッシュメモリ２に書き込むために、ストア命令を発行する。ストア命令が完了したとき、キャッシュメモリ２の該当ワードに対応するワード状態がW（ｉ）＝０１１１に設定される。
【００５４】
コア１はコア０からのメッセージを受け取るため、ロードアンドインバリデート命令を発行する。ロードアンドインバリデート命令が完了したとき、キャッシュメモリ２の該当ワードに対応するワード状態がW（ｉ）＝００１１に設定される。
【００５５】
コア２はコア０からのメッセージを受け取るため、ロードアンドインバリデート命令を発行する。ロードアンドインバリデート命令が完了したとき、キャッシュメモリ２の該当ワードに対応するワード状態がW（ｉ）＝０００１に設定される。
【００５６】
コア３はコア０からのメッセージを受け取るため、ロードアンドインバリデート命令を発行する。ロードアンドインバリデート命令が完了したとき、キャッシュメモリ２の該当ワードに対応するワード状態がW（ｉ）＝００００に設定される。
【００５７】
以上により、コア０から、コア１、コア２、コア３に対してキャッシュのみを用いた通信が実現されたことになる。
【００５８】
しかし、特許文献１に記載されたこのようなコア間通信には次のような課題がある。
【００５９】
独立した複数のアプリケーションがそれぞれコアを割り当ててプログラムを実行している場合、各アプリケーションは、どのアプリケーションがキャッシュメモリを使用したコア間通信を実施しているのかということを知り得ない。そのため、あるコアのアプリケーションがキャッシュメモリを利用したコア間通信を行っている最中に、別のコアがそのコア間通信で利用しているキャッシュメモリ部分に対して書き込みを行ってしまうということが起こり得る。そのような場合、キャッシュメモリに蓄えられた通信データはメインメモリに書き戻されてしまう可能性がある。キャッシュメモリに比べてアクセス速度が遅いメインメモリへアクセスが発生してしまうと、コア間の通信速度が低下する。
【００６０】
特許文献２は、コア間通信で用いているキャッシュライン（特許文献１のブロックデータに相当）に対してアクセスを禁止する排他制御装置を導入する事でこのようなコア間通信速度の低下を解決する技術を開示する。
【先行技術文献】
【特許文献】
【００６１】
【特許文献１】特開2009-157608号公報
【特許文献２】国際公開第2011/065492号
【発明の概要】
【発明が解決しようとする課題】
【００６２】
コア間通信速度の低下を解決しようとする特許文献２に記載の排他制御装置は、マルチコアプロセッサの構成や運用方法の如何によっては対応しきれない場合があるという課題がある。
【００６３】
特許文献２に記載の排他制御装置は、論理アドレスを物理ページ番号に変換し、プロセスID（Identification）と物理ページ番号を結び付けたものをキャッシュ禁止テーブルで管理することで排他制御を行っている。この場合、各コア上で独立して動作しているユーザプロセスは、マルチコアプロセッサ上で唯一のプロセスIDが与えられ、論理アドレスと物理メモリアドレスが１対１で対応付けられる必要がある。また、キャッシュ禁止テーブルを全コアで共有するためには、物理ページサイズも統一されている必要がある。
【００６４】
近年、マルチコアプロセッサは、複数のOSをコア毎に実装する形態や、完全な物理メモリアドレスベースで動作するOSレスのアプリケーションとOSを１プロセッサ上で動作させる形態で運用される事がある。このような運用においては、プロセッサ上で唯一となるプロセスIDを割り当てる事は難しい上、論理アドレス空間の認識が統一されていない状況も考えられる。このような運用方法においては、各コア上で動作しているプロセスの間で物理ページサイズが異なるという状況が発生する可能性がある。
【００６５】
以上のような理由により、特許文献２に記載の排他制御装置は、マルチコアプロセッサの構成や運用方法の如何によってはコア間通信速度の低下を解決しようとする目的を達成できない場合がある。
【００６６】
本発明は、物理メモリアドレスを基にコア間通信で使われているキャッシュラインとワード状態を管理することで排他制御を行い、コア間通信速度の低下を解決するキャッシュメモリ制御装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【００６７】
上記の目的を実現するために、本発明の一形態であるキャッシュメモリ制御装置は、マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示すワード状態記憶情報とからなるコア間通信領域情報を登録するコア間通信領域情報登録部と、キャッシュメモリへのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、入力した該物理メモリアドレスを前記要素に分解して分解要素情報を生成する分解要素情報生成手段と、前記分解要素情報を前記コア間通信領域情報と比較し、前記キャッシュメモリへのアクセスを許可した場合に、前記コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、前記キャッシュメモリへのアクセスを不許可と判定して通知するアクセス排他制御手段と、を含むことを特徴とする。
【００６８】
また、本発明の他の形態であるキャッシュメモリ制御方法は、マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示すワード状態記憶情報とからなるコア間通信領域情報を登録し、キャッシュメモリへのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、入力した該物理メモリアドレスを前記要素に分解して分解要素情報を生成し、前記分解要素情報を前記コア間通信領域情報と比較し、前記キャッシュメモリへのアクセスを許可した場合に、前記コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、前記キャッシュメモリへのアクセスを不許可と判定して通知することを特徴とする。
【発明の効果】
【００６９】
本発明は、物理メモリアドレスを基にコア間通信で使われているキャッシュラインとワード状態を管理することで排他制御を行い、コア間通信速度の低下を解決することができる。
【図面の簡単な説明】
【００７０】
【図１】本発明のキャッシュメモリ制御装置の第１の実施形態の構成を示すブロック図である。
【図２】本発明のキャッシュメモリ制御方法の第１の実施形態の動作を示すフロー図である。
【図３】本発明のキャッシュメモリ制御装置の第２の実施形態の構成を示すブロック図である。
【図４】コア間通信で使われているキャッシュメモリ領域を管理するコア間通信領域情報のフォーマットを示す図である。
【図５】キャッシュラインの置き換え有無の判定例を示す図である。
【図６】第２の実施形態のキャッシュメモリ制御装置のコア間通信領域管理部の動作を示すフロー図である。
【図７】第２の実施形態のキャッシュメモリ制御装置のアクセス排他制御部の動作を示すフロー図である。
【図８】第２の実施形態のキャッシュメモリ制御装置を用いたコア間通信の送信処理の動作例を示すフロー図である。
【図９】第２の実施形態のキャッシュメモリ制御装置を用いたコア間通信の受信処理の動作例を示すフロー図である。
【図１０】第２の実施形態の変形例のキャッシュメモリ制御装置の構成を示すブロック図である。
【図１１】第２の実施形態の変形例のキャッシュメモリ制御装置のコア間通信領域管理部の動作を示すフロー図である。
【図１２】第２の実施形態の変形例のキャッシュメモリ制御装置のアクセス排他制御部の動作を示すフロー図である。
【図１３】特許文献１に記載されたキャッシュメモリシステムの構成を一例として示すブロック図である。
【図１４】特許文献１に記載されたキャッシュメモリシステムにおけるキャッシュメモリの構成を示すブロック図である。
【図１５】特許文献１に記載されたキャッシュメモリシステムにおける状態ビットを示す図である。
【発明を実施するための形態】
【００７１】
（概要）
本発明のキャッシュメモリ制御装置および制御方法を実施するための形態は、特許文献１が開示するキャッシュメモリシステムをダイレクトマップ方式で運用することを前提とする。したがって、図１３乃至図１５を参照して背景技術に説明したキャッシュメモリシステムの構成および一般的な動作は、本発明の実施形態にも適用されるものとする。
【００７２】
本発明の実施形態は、物理メモリアドレスを基にコア間通信で使われているキャッシュラインとワード状態を管理し、キャッシュメモリへのアクセス前に排他制御を行い、キャッシュメモリシステムにおけるコア間通信の速度低下を防ぐものである。
【００７３】
キャッシュメモリシステムにおけるコア間通信の速度低下は、他プロセスによってコア間通信で使用されているキャッシュラインが置き換えられる事によって発生するライトバック処理に起因する。そして、ライトバック処理を抑止するための排他制御は、コア間通信で使用しているキャッシュエントリを特定し、その部分へのアクセスを限定する事で実現することができる。
【００７４】
本発明の実施形態では、キャッシュメモリシステムにおけるキャッシュラインの置き換え条件に着目した排他制御を行う。具体的には、以下のような技術的な特徴を考慮した排他制御を行う。
（１）コア間通信で使用されているキャッシュラインが他プロセスによって置き換えられる事象は、キャッシュミス時に行われるキャッシュの割り当て処理による。
（２）メモリアクセスによりキャッシュラインの置き換えが発生しない事を保証できる場合にのみ該メモリアクセスを許可する。一方、キャッシュラインの置き換えが発生しない事を保証できない場合には、該メモリアクセスを抑止する事でキャッシュラインが置き換えられる事象を防ぐことができる。
（３）キャッシュミス時に発生するキャッシュ割り当てについては様々な割り当て方式があるが、ダイレクトマップ方式のキャッシュ運用ではキャッシュミス時に置き換えられるキャッシュエントリは物理メモリアドレスから一意に決定される。そのため、アクセス先メモリアドレスを精査することによってキャッシュの置き換えが発生する可能性の有無を検証することができる。
（４）コア間通信で使用中であるかどうかは、コア間通信で使用するキャッシュラインとワード位置を特定し、そのキャッシュラインで使用中のワード状態記憶部のワード状態Ｗ（ｉ）を監視する事で判定することができる。コア間通信で使用中のＷ（ｉ）は必ず1以上の値を持ち、コア間通信が完了した場合にはＷ（ｉ）は0となる。
【００７５】
以下に本発明を実施するための形態について図面を参照して説明する。
【００７６】
尚、実施の形態は例示であり、開示の装置及びシステムは、以下の実施の形態の構成には限定されない。
（第１の実施形態）
図１は、本発明のキャッシュメモリ制御装置の第１の実施形態の構成を示すブロック図である。
【００７７】
第１の実施形態のキャッシュメモリ制御装置１００は、コア間通信領域情報登録部１１０、分解要素情報生成手段１２０およびアクセス排他制御手段１３０を含んで構成される。
【００７８】
コア間通信領域情報登録部１１０は、マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を示す物理メモリアドレスとワード状態記憶情報とからなるコア間通信領域情報を登録する。該物理メモリアドレスは、マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解されて登録されている。また、ワード状態記憶情報は、該キャッシュメモリ領域のコア間通信での使用状態を示す情報である。
【００７９】
分解要素情報生成手段１２０は、キャッシュメモリ（不図示）へのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、入力した該物理メモリアドレスを前記の要素に分解して分解要素情報を生成する。
【００８０】
アクセス排他制御手段１３０は、生成した分解要素情報を登録されているコア間通信領域情報と比較する。そして、キャッシュメモリへのアクセスを許可した場合に、コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、キャッシュメモリへのアクセスを不許可と判定して通知する。
【００８１】
図２は、本発明のキャッシュメモリ制御方法の第１の実施形態の動作を示すフロー図である。
【００８２】
まず、マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を特定する物理メモリアドレスとワード状態記憶情報とからなるコア間通信領域情報を登録する（Ｓ１０１）。該物理メモリアドレスは、マルチコアプロセッサのコア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解されて登録されている。また、ワード状態記憶情報は、該キャッシュメモリ領域のコア間通信での使用状態を示す情報である。
【００８３】
キャッシュメモリへのアクセス前に、メモリアクセス先を特定する物理メモリアドレスを入力して、入力した該物理メモリアドレスを前記の要素に分解して分解要素情報を生成する（Ｓ１０２）。
【００８４】
分解要素情報をコア間通信領域情報と比較する（Ｓ１０３）。
【００８５】
キャッシュメモリへのアクセスを許可した場合に、コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、キャッシュメモリへのアクセスを不許可と判定して通知する（Ｓ１０４）。
【００８６】
このように、本実施形態では、キャッシュメモリにおけるコア間通信が行われる領域が、コア間通信領域情報として登録され、管理されている。このコア間通信領域情報は、コア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示す情報であるワード状態記憶情報より成る。
【００８７】
そこで、キャッシュメモリへのアクセスが行なわれる前に、該アクセスによるメモリアクセス先を特定する物理メモリアドレスを入力し、該物理メモリアドレスをデコードして分解要素情報を生成する。分解要素情報は、コア間通信領域情報が含む物理メモリアドレスと同じ要素の情報を含むものである。そのため、分解要素情報をコア間通信領域情報と比較することで、該アクセスによるコア間通信で使われているキャッシュメモリ領域への影響を評価することができる。
【００８８】
従って、該アクセスを許可した場合に、コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、該アクセスを不許可と判定して通知する。
【００８９】
以上のように構成した本実施形態は、物理メモリアドレスを基にコア間通信で使われているキャッシュラインとワード状態を管理することで排他制御を行い、キャッシュラインが置き換えられる事象を伴うメモリアクセスを事前に抑止することができる。
（第２の実施形態）
図３乃至図９を参照して第２の実施形態を説明する。
【００９０】
図３は、本発明のキャッシュメモリ制御装置の第２の実施形態の構成を示すブロック図である。
【００９１】
第２の実施形態のキャッシュメモリ制御装置２００は、図１３を参照して説明したキャッシュメモリシステムのＣＰＵ１とキャッシュメモリ２との間に位置して機能する。
【００９２】
つまり、ＣＰＵ１の各コアのアプリケーションがメモリアクセスする際には必ずキャッシュメモリ制御装置２００にアクセスして、メモリアクセスの可／不可を判定してもらう。そして、該アプリケーションは、メモリアクセス可と通知された場合だけ、キャッシュメモリ２にアクセスして通常のメモリアクセスを行う。一方、メモリアクセス不可と通知された場合、該アプリケーションは、メモリアクセスのリトライを行うとか、アクセスが競合しない別の領域へアクセスする等の代替処理を実行する。
【００９３】
なお、キャッシュメモリ制御装置２００は、ハードウェア（ＨＷ）として実装してもよいし、ソフトウェア（ＳＷ）として実装してもよい。キャッシュメモリ制御装置２００をＨＷで実装する場合には、ＣＰＵ１とキャッシュメモリ２との間に位置して機能する限りにおいて、ＣＰＵ１、キャッシュメモリ２のいずれの内部要素として構成してもかまわない。また、ライブラリなどのＳＷとして実装する場合には、ＣＰＵ１が実行するプログラムとして構成する。
【００９４】
キャッシュメモリ制御装置２００は、図３に示すように、コア間通信領域管理部２１０とアクセス排他制御部２２０を含む構成となっている。
【００９５】
コア間通信領域管理部２１０は、コア間通信領域情報登録部２１１、アドレス分解情報生成部２１２および比較判定部２１３を含む構成となっている。
【００９６】
コア間通信領域情報登録部２１１は、第１の実施形態におけるコア間通信領域情報登録部１１０に相当する。コア間通信領域情報登録部２１１には、キャッシュメモリ２におけるコア間通信で使われているキャッシュメモリ領域に関するコア間通信領域情報が現在実行されているコア間通信ごとにリストとして登録されている。
【００９７】
コア間通信領域情報は、コア間通信で使われているキャッシュメモリ領域を特定する物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示すワード状態記憶情報より成る。この物理メモリアドレスは、キャッシュメモリ領域を一意に特定する要素に分解されて登録されている。具体的には、タグ、インデックスおよびバイトオフセットの各要素に分解されている。コア間通信領域情報の詳細については図４を参照して後述する。
【００９８】
コア間通信領域情報は、コア間通信の開始時に各コアのアプリケーションから入力されるコア間通信領域情報登録要求に基づいて生成され、コア間通信中に更新され、コア間通信の終了で削除される。このコア間通信領域情報の生成、更新、削除は、アクセス排他制御部２２０からの指示により、コア間通信領域管理部２１０が実行する。
【００９９】
アドレス分解情報生成部２１２は、各コアのアプリケーションから入力したアクセス先の物理メモリアドレスをデコードしてアドレス分解情報を生成する。アドレス分解情報生成部２１２は第１の実施形態における分解要素情報生成手段１２０に相当し、アドレス分解情報は第１の実施形態における分解要素情報に相当する。
【０１００】
そして、比較判定部２１３は、アドレス分解情報生成部２１２が生成したアドレス分解情報とコア間通信領域情報のインデックスをそれぞれ比較して１次比較の制御を行う。１次比較とは、アプリケーションのメモリアクセス先がキャッシュメモリ２にエントリされているか否かを判定するために、コア間通信領域情報登録部２１１に登録されているコア間通信領域情報のエントリを検索することである。このとき使用される検索キーがインデックスである。
【０１０１】
なお、各コアのアプリケーションからはメモリアクセス命令の種別を示す命令情報よびコアを特定するためのコア情報も入力されて後述する処理で使用される。また、コア間通信の開始時にはコア間通信領域情報登録要求がアプリケーションから入力される。
【０１０２】
実際のアクセス排他制御は、後述するようにアクセス排他制御部２２０で実行されるので、物理メモリアドレス以外の入力情報（命令情報、コア情報、コア間通信領域情報登録要求）をアクセス排他制御部２２０に直接通知するように構成してもよい。ここでは、アプリケーションから入力するすべての情報はコア間通信領域管理部２１０で受信し、コア間通信領域管理部２１０から必要な情報をアクセス排他制御部２２０に通知するように構成されているものとする。
【０１０３】
コア間通信領域管理部２１０は、アドレス分解情報とコア間通信領域情報との１次比較の比較判定結果と、アプリケーションから入力した命令情報、コア情報等をアクセス排他制御部２２０に渡す。
【０１０４】
アクセス排他制御部２２０は、比較判定制御部２２１を含み、１次比較の比較判定結果や後述する２次比較、３次比較の制御を実行して、アプリケーションが行なおうとしているメモリアクセスの可否の判定結果をアプリケーションに通知する。
【０１０５】
また、比較判定制御部２２１の制御の結果、コア間通信領域情報の登録（生成）、更新または削除が必要な場合には、コア間通信領域管理部２１０にその旨が通知さる。コア間通信領域管理部２１０は、その通知を受けて、コア間通信領域情報登録部２１１の内容の変更を行なう。
【０１０６】
なお、比較判定部２１３および比較判定制御部２２１が第１の実施形態におけるアクセス排他制御手段１３０に相当する。
【０１０７】
ここで、本実施形態におけるメモリアクセス排他制御の原理について説明する。
【０１０８】
本実施形態におけるメモリアクセス排他制御は２つの事象を検証することで実現される。１つ目は、アプリケーションがアクセス対象とするキャッシュメモリ領域（キャッシュラインとワード）がコア間通信で使用中であるかどうかを検証する。そして２つ目は、コア間通信で使用しているキャッシュラインがそのコア間通信と関係の無いメモリアクセスによって置き換えられないか否かを検証する。
【０１０９】
キャッシュラインとワードがコア間通信で使用中であるか否かを検証するために以下の３種類の情報に着目する。
【０１１０】
情報１：コア間通信で使用しているキャッシュラインおよびワード位置、情報２：コア間通信で使用しているワードの状態を示すワード状態Ｗ（ｉ）の値、そして、情報３：キャッシュミス時に置き換えられるキャッシュラインおよびワード位置。
【０１１１】
上記の情報１と情報２については、コア間通信の開始時にコア間通信で使うキャッシュラインの情報を記録する事で、使用中である事を周知できる。また、キャッシュライン上のワード状態を参照する事で、コア間通信の終了を判定することができる。
【０１１２】
つまり、上記の情報１と情報２の条件を満たすために、コア間通信中であることを判定するための記録情報であるコア間通信領域情報を具備する。前述のように、このコア間通信領域情報はコア間通信領域管理部２１０に配備される。つまり、コア間通信領域管理部２１０には、キャッシュメモリ２においてコア間通信で使用されているキャッシュメモリ領域の情報が管理されている。
【０１１３】
図４は、コア間通信で使われているキャッシュメモリ領域を管理するコア間通信領域情報のフォーマットを示す図である。
【０１１４】
コア間通信領域情報は、コア間通信で使用しているキャッシュラインおよびワード位置を特定する情報、およびコア間通信で使用しているワードの使用状態を示すワード状態記憶情報を含むフォーマットとなっている。なお、ワード状態記憶情報は前述したワード状態Ｗ（ｉ）の値を記憶するフィールドである。
【０１１５】
コア間通信で使用しているキャッシュラインおよびワード位置を特定する情報として、物理メモリアドレスが、タグ、インデックス、バイトオフセットの各要素に分解されている。つまり、物理メモリアドレスはタグ、インデックス、バイトオフセットの要素に分解され各要素の情報から、キャッシュメモリ２上のキャッシュラインおよびワード位置が一意に特定される。例えば、インデックスは図１４におけるアドレスアレイ１１のエントリを検索する情報に相当し、タグは比較器１６に入力される上位ｍビット１３（キャッシュ内タグ情報）に相当して、キャッシュヒットまたはキャッシュミスの比較判断が可能である。また、バイトオフセットはキャッシュラインの中のワードを特定する情報である。
【０１１６】
ワード状態記憶情報のワード状態Ｗ（ｉ）は、物理メモリアドレスで特定されるキャッシュラインのワードがコア間通信で使用されている場合、そのワードの使用状態をワード状態Ｗ（ｉ）の値で示すものである。ワード状態Ｗ（ｉ）の値は、コア間通信における送信時には送信コアに対応するビットが０、受信コアに対応するビットが１に設定され、受信時には受信コアに対応するビットが０に設定される。したがって、全受信コアによる受信が完了すると、ワード状態Ｗ（ｉ）の値は全ビットが０となる。
【０１１７】
一方、上記の情報３は、各コアで動作しているアプリケーションのアクセス先となる物理メモリアドレスをデコードする事で取得することができる。
【０１１８】
アプリケーションから入力する物理メモリアドレスは、コア間通信領域情報の物理メモリアドレスと同様に、タグ、インデックス、バイトオフセットの要素に分解されたアドレス分解情報となる。アドレス分解情報のこれらの要素から、キャッシュメモリ２におけるキャッシュラインおよびワード位置が一意に決定される。
【０１１９】
また、コア間通信で使用しているキャッシュラインがコア間通信と関係の無いメモリアクセスによって置き換えられないか否かの検証は、コア間通信領域情報とアプリケーションから入力するアクセス先となる物理メモリアドレスを比較することで行われる。
【０１２０】
つまり、コア間通信領域情報と入力した物理メモリアドレスのアドレス分解情報とを比較する事で、キャッシュメモリにアクセスした場合のキャッシュヒット／キャッシュミスを事前に判定することができる。
【０１２１】
図５は、キャッシュラインの置き換え有無の判定例を示す図である。
【０１２２】
つまり、コア間通信領域情報と入力した物理メモリアドレスのそれぞれのタグ、インデックス、バイトオフセットを比較した結果と、その際にキャッシュラインの置き換えが有るか無いかの判定を、ケース１乃至ケース８の例について示したものである。各要素について、一致している場合を「○」、不一致であった場合を「×」として示している。
【０１２３】
図５を参照すると、ケース１、ケース２、ケース５およびケース６では、インデックスが一致していない。このことは、アプリケーションから入力した物理メモリアドレスは、コア間通信で使用しているキャッシュラインとは異なるキャッシュラインを参照する事を意味する。そのため、これらのケースの場合は、コア間通信で使用されているキャッシュラインは置き換えられないと判定できる。
【０１２４】
ケース７とケース８の場合は、インデックスおよびタグが一致する。そのため、アプリケーションから入力した物理メモリアドレスがコア間通信で使用しているキャッシュラインに対応することで、キャッシュヒットが確定する。よって、コア間通信で使用されているキャッシュライン上のデータブロックに対してストア命令（store）や読出し命令（read）などの処理が行われ、キャッシュラインの置き換えは発生しないと判定できる。
【０１２５】
ケース３とケース４の場合は、インデックスが一致し、タグが不一致である。そのため、キャッシュミスが確定する。しかも、インデックスが一致しているため、キャッシュメモリ２に対するこのメモリアクセスを許容するとコア間通信で使用しているキャッシュラインが置き換えられると判定できる。
【０１２６】
以上のように、コア間通信領域情報と入力した物理メモリアドレスのそれぞれのタグ、インデックス、バイトオフセットを比較する。そして、その比較結果に基づいて、キャッシュミスが発生した場合にコア間通信で使用されているキャッシュラインおよびワードが上書きされるか否かが判定される。図５を参照して説明した例では、インデックスが一致し、タグが一致しないケース３とケース４の場合を除いては、コア間通信で使用されているキャッシュラインおよびワードが置き換えられない事が保障される。
【０１２７】
図３に戻って、本実施形態のキャッシュメモリ制御装置１００についての説明を続ける。
【０１２８】
コア間通信領域管理部２１０は、各コアのアプリケーションからメモリアクセス先の物理メモリアドレスとその他の処理関連情報の入力を受ける。
【０１２９】
物理メモリアドレスはアプリケーションが論理アドレスベースで動作していた場合には、ハードウェアや各コア上で動作しているOS（Operating System）のシステムコールなどにより実現する。例えばOSのシステムコールを用いた場合では、OS上で動作するプロセスの論理アドレスからvirt_to_phys関数などを用いて、物理メモリアドレスを得ることができる。物理メモリアドレスベースで動作するアプリケーションの場合は、論理アドレスから物理メモリアドレスを計算する必要はない。
【０１３０】
その他の処理関連情報としては、前述したように、メモリアクセス命令の種別を示す命令情報よびコアを特定するためのコア情報、さらにコア間通信の開始時にはコア間通信領域情報登録要求がある。
【０１３１】
前述のように、コア間通信領域管理部２１０は、キャッシュメモリ２におけるコア間通信領域を管理する情報としてコア間通信領域情報をコア間通信領域情報登録部２１１にリストとして登録して管理している。そして、図４を参照して説明したように、コア間通信領域情報は、物理メモリアドレスから生成したタグ、インデックス、バイトオフセットの情報およびコア間通信で使用しているワードの状態を示すワード状態記憶情報のワード状態Ｗ（ｉ）の値を含む。
【０１３２】
コア間通信領域管理部２１０は、アドレス分解情報生成部２１２によりアプリケーションから入力した物理メモリアドレスをデコードして、タグ、インデックス、バイトオフセットの各要素に分解したアドレス分解情報を取得する。
【０１３３】
コア間通信領域管理部２１０は、比較判定部２１３によりコア間通信領域情報登録部２１１のリストの各エントリについて、インデックスを比較する１次比較の判定を行う。つまり、比較判定部２１３は、コア間通信領域情報登録部２１１のリストに、入力した物理メモリアドレスをデコードして得られたインデックスと一致するエントリが有るか否かを検索する。
【０１３４】
比較判定部２１３は１次比較結果をアクセス排他制御部２２０に通知する。
【０１３５】
インデックスが一致するエントリが存在した場合、１次比較結果として、一致エントリが存在した旨と、そのエントリの登録情報、入力した物理メモリアドレスのアドレス分解情報およびその他の処理関連情報が通知される。なお、エントリの登録情報はコア間通信領域情報であり、コア間通信により使用されているキャッシュメモリ領域に関する情報である。
【０１３６】
また、インデックスが一致するエントリが存在しなかった場合、１次比較結果として、一致エントリが存在しない旨と、入力した物理メモリアドレスのアドレス分解情報およびその他の処理関連情報が通知される。なお、コア間通信がまったく行われておらず、コア間通信領域情報登録部２１１に登録エントリが存在しない場合にも、同様の１次比較結果がアクセス排他制御部２２０に通知される。
【０１３７】
アクセス排他制御部２２０は、コア間通信領域管理部２１０から通知された１次比較結果の諸情報に基づいて、アクセス可否の判定およびコア間通信領域情報のリスト追加、更新、削除を判定するアクセス排他制御を実行する。アクセス排他制御部２２０では、比較判定制御部２２１がこれらのアクセス排他制御を実行する。
【０１３８】
まず、入力した物理メモリアドレスをデコードして得られたインデックスと一致するエントリがコア間通信領域情報登録部２１１のリストに存在しなかった旨の情報をコア間通信領域管理部２１０から受け取った場合の処理を説明する。
【０１３９】
このことは、アプリケーションがアクセス対象としているキャッシュラインは、現在コア間通信で使用しているキャッシュラインとは異なることを意味している。そのため、比較判定制御部２２１はコア間通信用の領域がキャッシュから追い出される事は無いと判定し、アクセス可能と判定する。これは、図５を参照して説明したケース１、ケース２、ケース５およびケース６に相当する。
【０１４０】
このとき、アクセス排他制御部２２０がコア間通信領域情報登録要求を受け取っていた場合、比較判定制御部２２１は、新たなコア間通信の発生と判断してコア間通信領域情報のリストの追加を行う。なお、この場合のアクセス命令はストア命令（store）である。
【０１４１】
比較判定制御部２２１は、物理メモリアドレスのアドレス分解情報のタグ、インデックス、バイトオフセットをコア間通信領域情報のリストに追加するようにコア間通信領域管理部２１０に指示する。また、登録したエントリのワード状態記憶部情報のワード状態Ｗ（ｉ）の値を、コア情報に基づいて、登録要求したコアに対応するビットを０、その他のコアに対応するビットを１に設定する旨を指示する。
【０１４２】
コア間通信領域管理部２１０では、比較判定部２１３がこれらの指示を受け取り、指示された内容のコア間通信領域情報をコア間通信領域情報登録部２１１に新たなエントリとして追加する。
【０１４３】
次に、入力した物理メモリアドレスをデコードして得られたインデックスと一致するエントリがコア間通信領域情報登録部２１１のリストに存在した旨の情報をコア間通信領域管理部２１０から受け取った場合の処理を説明する。
【０１４４】
この場合、比較判定制御部２２１は、１次比較結果を受けて２次比較の制御を実行する。
【０１４５】
比較判定制御部２２１は、２次比較の制御として、入力した物理メモリアドレスのアドレス分解情報のタグとエントリの登録情報に含まれるタグとを比較し、両者のタグの一致／不一致を判定する。
【０１４６】
２次比較の結果、両者のタグが一致した場合はキャッシュヒットが確定する。そのため、アプリケーションがその領域にアクセスしたとしても、コア間通信用の領域がキャッシュから追い出される事は無いと判定し、アクセス排他制御部１２０はアクセス可能と判定する。これは、図５を参照して説明したケース７とケース８に相当する。
【０１４７】
このとき、コア間通信領域管理部２１０から受け取った命令情報がロードアンドインバリデート命令（load and invalidate）であった場合、比較判定制御部２２１は、バイトオフセットを比較する３次比較の制御を更に実行する。この３次比較により、アクセスするワード位置までの一致／不一致が判定される。
【０１４８】
３次比較の結果、バイトオフセットが一致した場合は、該メモリアクセスがアプリケーションによるコア間通信の受信処理と判定できる。そのため、比較判定制御部２２１はエントリの登録情報に含まれるワード状態記憶部の情報更新をコア間通信領域管理部２１０に指示する。このとき、エントリの登録情報に含まれるワード状態記憶部情報のワード状態Ｗ（ｉ）の値は、コア情報に基づいて該コアに対応するビットが０に設定される。なお、更新後のワード状態Ｗ（ｉ）の値がオール０となる場合は、該エントリをリストから削除するようにコア間通信領域管理部２１０に指示する。
【０１４９】
コア間通信領域管理部２１０では、比較判定部２１３がこれらの指示を受け取り、コア間通信領域情報登録部２１１の該当エントリの登録情報の更新または削除を行う。
【０１５０】
なお、３次比較の結果、バイトオフセットが一致しなかった場合には何もしない。
【０１５１】
また、２次比較の結果、アプリケーションがアクセスしようとしているアドレスのタグとコア間通信領域情報のリストのエントリ内のタグとが一致しない場合はキャッシュミスが確定する。この場合、メモリアクセスを行うと、キャッシュミスによるキャッシュラインの置き換えが発生する。そのため、この事象はコア間通信の速度低下を招くので、比較判定制御部２２１はアクセス不可と判定する。これは、図５を参照して説明したケース３とケース４に相当する。
【０１５２】
アクセス排他制御部２２０は、上述したアクセス可または不可の判定をアプリケーションに通知する。この通知はアクセス排他制御部２２０から直接アプリケーションに通知されてもよいし、コア間通信領域管理部２１０を介して通知されてもよい。
【０１５３】
上述した機能を有するコア間通信領域管理部２１０の動作およびアクセス排他制御部２２０の動作をそれぞれ図６および図７に示す。
【０１５４】
図６は、本実施形態のキャッシュメモリ制御装置２００のコア間通信領域管理部２１０の動作を示すフロー図である。また、図７は、本実施形態のキャッシュメモリ制御装置２００のアクセス排他制御部２２０の動作を示すフロー図である。
【０１５５】
図６を参照すると、コア間通信領域管理部２１０は、アプリケーションからメモリアクセス先の物理メモリアドレスとその他の処理関連情報の入力を受け、該物理メモリアドレスのデコードを行う（Ｓ２０１）。物理メモリアドレスのデコードにより、タグ、インデックス、バイトオフセットの各要素に分解したアドレス分解情報が得られる。その他の処理関連情報には、前述したように、命令情報よびコア情報、さらにコア間通信の開始時にはコア間通信領域情報登録要求がある。
【０１５６】
コア間通信領域管理部２１０は、コア間通信領域情報登録部２１１にリストとして登録して管理しているコア間通信領域情報のエントリを1つ取得する（Ｓ２０２）。ここで取得するエントリは、１次比較がまだ行われていない未検査のエントリである。
【０１５７】
このとき、コア間通信がまったく行われておらず、取得すべきエントリがコア間通信領域情報登録部２１１に登録されていない場合は、ステップＳ２０３の判断において、取得エントリ無しとしてステップＳ２０５の処理に進む。
【０１５８】
コア間通信領域管理部２１０は、コア間通信領域情報登録部２１１に登録エントリが存在しない場合の処理として、エントリ無し判定を１次比較結果としてアクセス排他制御部２２０に通知する（Ｓ２０５）。また、このときは、入力した物理メモリアドレスのアドレス分解情報およびその他の処理関連情報もアクセス排他制御部２２０に通知される（Ｓ２０６）。
【０１５９】
一方、コア間通信領域情報登録部２１１から未検査のエントリが1つ取得できた場合（Ｓ２０３、有）、該エントリの登録情報に含まれるインデックスが、アドレス分解情報に含まれるインデックスと一致するか否かが判定される（Ｓ２０４）。
【０１６０】
ステップＳ２０４の判定において、インデックスが不一致であった場合は、ステップＳ２０２の処理に戻り、コア間通信領域情報登録部２１１から別の未検査エントリを1つ取得して、ステップＳ２０３、Ｓ２０４の処理を繰り返す。
【０１６１】
ステップＳ２０２、Ｓ２０３、Ｓ２０４の処理を繰り返した結果、コア間通信領域情報登録部２１１から取得できる未検査エントリがなくなった場合（Ｓ２０３、無）には、ステップＳ２０５の処理に進む。
【０１６２】
コア間通信領域管理部２１０は、コア間通信領域情報登録部２１１にインデックスが一致するエントリが存在しないと判定した場合の処理として、エントリ無し判定を１次比較結果としてアクセス排他制御部２２０に通知する（Ｓ２０５）。また、このときは、入力した物理メモリアドレスのアドレス分解情報およびその他の処理関連情報もアクセス排他制御部２２０に通知される（Ｓ２０６）。
【０１６３】
ステップＳ２０４の判定でインデックスが一致するエントリがあった場合、コア間通信領域管理部２１０は、エントリあり判定を１次比較結果としてアクセス排他制御部２２０に通知する（Ｓ２０７）。また、このときは、インデックスが一致するエントリの登録情報、入力した物理メモリアドレスのアドレス分解情報およびその他の処理関連情報もアクセス排他制御部２２０に通知される（Ｓ２０８）。
【０１６４】
以上が、本実施形態のコア間通信領域管理部２１０の動作である。
【０１６５】
次に、アクセス排他制御部２２０の動作を説明する。
【０１６６】
図７を参照すると、アクセス排他制御部２２０は、まずコア間通信領域管理部２１０から通知された１次比較結果であるエントリ有無判定に基づく処理を行う。
【０１６７】
インデックスが一致するエントリがコア間通信領域情報登録部２１１に登録されていないということは、アプリケーションがアクセスしようとしているキャッシュメモリ領域が、現在コア間通信で使用されていないことを意味する。そのため、ステップＳ２１１の判定がエントリ無しの場合は、ステップＳ２１２の処理が実行され、アクセスが可能と判定される。判定結果はアプリケーションに通知される。
【０１６８】
続いて、アクセス排他制御部２２０がコア間通信領域情報登録要求を受け取っているか否かが判定される（Ｓ２１３）。
【０１６９】
コア間通信領域情報登録要求を受け取っている場合（Ｓ２１３、有）、新たなコア間通信が発生したことになるので、該コア間通信が使用するキャッシュメモリ領域の管理情報としてコア間通信領域情報のリストへの追加を要する。そこで、アクセス排他制御部２２０は、コア間通信領域情報登録部２１１へのエントリの追加登録をコア間通信領域管理部２１０に指示する（Ｓ２１４）。
【０１７０】
具体的には、物理メモリアドレスのアドレス分解情報のタグ、インデックス、バイトオフセットを新たなエントリとしてリストに追加するように指示する。そして、該エントリのワード状態記憶部情報フィールドのワード状態Ｗ（ｉ）の値を、コア情報に基づいて、登録要求したコアに対応するビットを０、その他のコアに対応するビットを１に設定する旨を指示する。処理フローは図示しないが、コア間通信領域管理部２１０は、これらの指示を受け取り、指示された内容のコア間通信領域情報をコア間通信領域情報登録部２１１に新たなエントリとして追加する。
【０１７１】
なお、ステップＳ２１３でコア間通信領域情報登録要求を受け取っていることを確認した場合、命令情報としてストア命令（store）を受け取っていることを確認するような処理を加えてもよい。コア間通信領域情報登録要求を受け取っていながら命令情報がストア命令（store）でない場合にはイリーガル処理が行われる。
【０１７２】
次に、インデックスが一致するエントリがコア間通信領域情報登録部２１１に登録されている場合（Ｓ２１１、有）、アドレス分解情報のタグとエントリの登録情報に含まれるタグとを比較し、両者のタグの一致／不一致を判定する（Ｓ２１５）。ステップＳ２１５の処理を２次比較と称する。
【０１７３】
２次比較の結果で両者のタグが一致した場合（Ｓ２１５、一致）はキャッシュヒットが確定する。また、２次比較の結果でアドレス分解情報のタグとエントリの登録情報に含まれるタグとが一致しない場合（Ｓ２１５、不一致）はキャッシュミスが確定する。
【０１７４】
ステップＳ２１５でタグが不一致のキャッシュミスが確定する場合は、メモリアクセスを行うと、キャッシュミスによるキャッシュラインの置き換えが発生する。そのため、この事象はコア間通信の速度低下を招くので、アクセス不可能と判定され（Ｓ２１６）、その旨がアプリケーションに通知される。
【０１７５】
ステップＳ２１５で一致のキャッシュヒットが確定する場合は、アプリケーションがその領域にアクセスしたとしても、コア間通信用の領域がキャッシュから追い出される事は無いと判定される。そのため、ステップＳ２１７においてアクセス可能と判定される。判定結果はアプリケーションに通知される。
【０１７６】
キャッシュヒットしてアクセス可能と判定されると、アクセス命令種別がロードアンドインバリデート命令（load and invalidate）であるかどうかが判定される（Ｓ２１８）。そして、ロードアンドインバリデート命令（load and invalidate）である場合は、コア間通信の受信処理であると判断して（Ｓ２１８、Ｙｅｓ）、バイトオフセットを比較する３次比較の制御を更に実行する（Ｓ２１９）。この３次比較により、アクセスするワード位置までの一致／不一致が判定される。
【０１７７】
３次比較の結果、バイトオフセットが一致した場合は、該メモリアクセスがアプリケーションによる当該キャッシュメモリ領域を使用したコア間通信の受信処理と判定できる。そのため、アクセス排他制御部２２０は、エントリの登録情報に含まれるワード状態記憶部の情報更新をコア間通信領域管理部２１０に指示する。
【０１７８】
具体的には、エントリの登録情報に含まれるワード状態記憶部情報フィールドのワード状態Ｗ（ｉ）の値において、コア情報に基づくコアに対応するビットが０に設定される。なお、更新後のワード状態Ｗ（ｉ）の値がオール０となる場合は、該エントリをリストから削除するようにコア間通信領域管理部２１０に指示する。
【０１７９】
なお、アクセス命令種別がロードアンドインバリデート命令（load and invalidate）でなかった場合や、３次比較においてバイトオフセットが一致しなかった場合には何もせず、アクセス可能がアプリケーションに通知される。
【０１８０】
以上が、本実施形態のアクセス排他制御部２２０の動作である。
【０１８１】
次に、上述したキャッシュメモリ制御装置を用いた、４コアを持つマルチコアプロセッサによるコア間通信の動作例を説明する。
【０１８２】
まず、コア０からコア１、２、３へデータを送信する際の動作について説明する。
【０１８３】
図８は、第２の実施形態のキャッシュメモリ制御装置２００を用いたコア間通信の送信処理の動作例を示すフロー図である。
【０１８４】
コア０上で動作しているアプリケーションがコア間通信メッセージを送付しようとする際には、物理メモリアドレス、コアID（Identification）、ストア命令（store）およびコア間通信領域情報登録要求をキャッシュメモリ制御装置２００に渡す。（S２２１）。
【０１８５】
キャッシュメモリ制御装置２００では、アプリケーションから渡されたアクセス先の物理メモリアドレスをコア間通信領域管理部２１０がデコードし、タグ、インデックス、バイトオフセットの情報に分解してアドレス分解情報を取得する（Ｓ２２２）。
【０１８６】
次に、コア間通信領域管理部２１０はコア間通信領域情報登録部２１１のリストからインデックスが一致するエントリを検索し、その結果、インデックスが一致するエントリが登録されていないことを検出する（S２２３）。
【０１８７】
検索の結果、インデックスが一致するエントリが登録されていないことを検出すると、コア間通信領域管理部２１０は、アクセス排他制御部２２０にその旨を通知する。その際に、アプリケーションから受信しているストア命令（store）およびコア間通信領域情報登録要求も渡される。
【０１８８】
アクセス排他制御部２２０は、上記情報に基づいてアクセス可能の判定を行い、更に、ストア命令（store）およびコア間通信領域情報登録要求を受けていることから、コア間通信によるキャッシュメモリ領域の新たな使用と判断する（Ｓ２２４）。
【０１８９】
そこで、アクセス排他制御部２２０は、コア間通信領域情報登録部２１１への新たなエントリの登録をコア間通信領域管理部２１０に対して指示する。コア間通信領域管理部２１０は、アプリケーションから入力した物理メモリアドレスをデコードして得られたタグ、インデックス、バイトオフセットのアドレス分解情報をコア間通信領域情報登録部２１１のリストに新たなエントリとして登録する（Ｓ２２５）。さらに、該エントリのワード状態記憶部情報フィールドのワード状態Ｗ（ｉ）の値を、コア０に対応するビットを０、その他のコア１、２、３に対応するビットを１に設定する。
【０１９０】
アクセス排他制御部２２０は、アクセス可能の判定をコア０のアプリケーションに通知する（Ｓ２２６）。
【０１９１】
以上のように、キャッシュメモリ制御装置２００からアクセス許可の通知を受けたコア０のアプリケーションは、キャッシュメモリ制御装置２００に入力したものと同じ情報を用いてキャッシュメモリ２にアクセスする。そのため、キャッシュメモリ２におけるコア間通信で使用するメモリ領域とキャッシュメモリ制御装置２００のコア間通信領域情報登録部２１１に登録されたエントリとが整合して管理される。
【０１９２】
次に、コア0から送られたコア間通信データをコア１、２、３が受信する際の動作について説明する。
【０１９３】
図９は、第２の実施形態のキャッシュメモリ制御装置２００を用いたコア間通信の受信処理の動作例を示すフロー図である。
【０１９４】
コア１、２、３上で動作しているアプリケーションがコア間通信メッセージを受信しようとする際には、物理メモリアドレス、コアＩＤ、ロードアンドインバリデート命令（load and invalidate）をキャッシュメモリ制御装置２００に渡す（Ｓ２３１）。
【０１９５】
キャッシュメモリ制御装置２００では、アプリケーションから渡されたアクセス先の物理メモリアドレスをコア間通信領域管理部２１０がデコードし、タグ、インデックス、バイトオフセットの情報に分解してアドレス分解情報を取得する（Ｓ２３２）。
【０１９６】
次に、コア間通信領域管理部２１０はコア間通信領域情報登録部２１１のリストからインデックスが一致するエントリを検索し、その結果、インデックスが一致するエントリが登録されていることを検出する（S２３３）。
【０１９７】
検索の結果、インデックスが一致するエントリが登録されていることを検出すると、コア間通信領域管理部２１０は、アクセス排他制御部２２０にその旨を通知する。その際に、エントリの登録情報、アプリケーションから受信している物理メモリアドレスのアドレス分解情報、コアＩＤ、ロードアンドインバリデート命令（load and invalidate）も渡される。
【０１９８】
アクセス排他制御部２２０は、アドレス分解情報のタグとエントリの登録情報に含まれるタグとを比較して両者のタグが一致して、キャッシュヒットすることを検出する（Ｓ２３４）。
【０１９９】
続いて、アクセス排他制御部２２０は、メモリアクセスが読出しであるロードアンドインバリデート命令（load and invalidate）であり、コア間通信の受信処理であることを確認する（Ｓ２３５）。
【０２００】
コア間通信の受信処理であることを確認したアクセス排他制御部２２０は、アドレス分解情報のバイトオフセットとエントリの登録情報に含まれるバイトオフセットとを比較して両者が一致することを確認する（Ｓ２３６）。
【０２０１】
以上の動作で該メモリアクセスがアプリケーションによる当該キャッシュメモリ領域を使用したコア間通信の受信処理と判定できるので、アクセス排他制御部２２０は、エントリの登録情報に含まれるワード状態記憶部の情報更新を行う（Ｓ２３７）。
【０２０２】
具体的には、エントリの登録情報に含まれるワード状態記憶部情報フィールドのワード状態Ｗ（ｉ）の値において、当該受信処理を行うコアに対応するビットを０に設定する。
【０２０３】
上記の更新の結果、更新後のワード状態Ｗ（ｉ）の値がオール０となる場合（Ｓ２３８、Ｙｅｓ）は、該エントリをリストから削除する（Ｓ２３９）。
【０２０４】
上記のステップＳ２３７、Ｓ２３９の更新は、アクセス排他制御部２２０がコア間通信領域管理部２１０に指示することで実行される。
【０２０５】
そして、アクセス排他制御部２２０は、当該受信処理を行うコアのアプリケーションにアクセス可能の判定を通知する（Ｓ２４０）。
【０２０６】
以上のように、キャッシュメモリ制御装置２００からアクセス許可の通知を受けた受信処理を行うコアのアプリケーションは、キャッシュメモリ制御装置２００に入力したものと同じ情報を用いてキャッシュメモリ２にアクセスする。そのため、キャッシュメモリ２におけるコア間通信で使用するメモリ領域とキャッシュメモリ制御装置２００のコア間通信領域情報登録部２１１に登録されたエントリとが整合して管理される。
【０２０７】
このように、本実施形態では、キャッシュメモリにおけるコア間通信が行われる領域が、コア間通信領域情報登録部に登録されて管理されている。コア間通信領域情報登録部の各エントリは、コア間通信で使われているキャッシュメモリ領域を一意に特定する要素に分解した物理メモリアドレスと該キャッシュメモリ領域のコア間通信での使用状態を示す情報であるワード状態記憶情報より成る。
【０２０８】
そこで、キャッシュメモリへのアクセスが行なわれる前に、該アクセスによるメモリアクセス先を特定する物理メモリアドレスを入力し、該物理メモリアドレスをデコードしてアドレス分解情報を生成する。アドレス分解情報は、コア間通信領域情報登録部の各エントリが含む物理メモリアドレスと同じ要素に分解された情報を含むものである。そのため、アドレス分解情報をコア間通信領域情報登録部の各エントリと比較することで、該アクセスによるコア間通信で使われているキャッシュメモリ領域への影響を評価することができる。
【０２０９】
従って、該アクセスを許可した場合に、コア間通信で使われているキャッシュメモリ領域が参照され、かつ、キャッシュミスが確定する条件の比較結果を得た場合に、該アクセスを不許可と判定して通知する。また、キャッシュヒットが確定する条件の比較結果を得た場合や該当するエントリが存在しない場合には、該アクセスによるコア間通信で使われているキャッシュメモリ領域への影響はないと判断する。
【０２１０】
以上のように構成した本実施形態は、物理メモリアドレスを基にコア間通信で使われているキャッシュラインとワード状態を管理することで排他制御を行い、キャッシュラインが置き換えられる事象を伴うメモリアクセスを事前に抑止することができる。
（第２の実施形態の変形例）
次に、図１０乃至図１２を参照して第２の実施形態の変形例のキャッシュメモリ制御装置を説明する。
【０２１１】
第２の実施形態のキャッシュメモリ制御装置２００においては、コア間通信領域情報登録部２１１がコア間通信領域管理部２１０に含まれ、その更新は、アクセス排他制御部２２０からの指示に基づいて行われた。
【０２１２】
図１０は、第２の実施形態の変形例のキャッシュメモリ制御装置３００の構成を示すブロック図である。
【０２１３】
第２の実施形態の変形例のキャッシュメモリ制御装置３００においては、コア間通信領域情報登録部２１１に相当するコア間通信領域情報登録部３３０が、独立した構成として設置されている。従って、コア間通信領域情報登録部３３０の更新は、コア間通信領域管理部３１０からもアクセス排他制御部３２０からも行えるように構成されている。
【０２１４】
第２の実施形態の変形例のキャッシュメモリ制御装置３００においては、コア間通信領域管理部３１０は、アクセス排他制御部３２０からの指示を受けることなくコア間通信領域情報登録部３３０の更新を行うことができる。また、アクセス排他制御部３２０は、コア間通信領域管理部３１０に指示することなく直接コア間通信領域情報登録部３３０の更新を行うことができる。
【０２１５】
図１１は、第２の実施形態の変形例のキャッシュメモリ制御装置３００のコア間通信領域管理部３１０の動作を示すフロー図である。図１１を参照してコア間通信領域管理部３１０の動作を説明する。なお、図６を参照して説明した第２の実施形態のコア間通信領域管理部２１０の動作における処理フローと相違する点についてのみ説明するものとする。
【０２１６】
図１１のステップＳ３０１乃至Ｓ３０３、およびステップＳ３０７乃至Ｓ３０９の処理は、図６のステップＳ２０１乃至Ｓ２０４、およびステップＳ２０７、Ｓ２０８の処理と同じである。
【０２１７】
相違する処理は、図６のステップＳ２０５、Ｓ２０６が無く、図１１のステップＳ３０４乃至Ｓ３０６の処理を行うことにある。
【０２１８】
第２の実施形態では、アドレス分解情報のインデックスと一致するインデックスを有するエントリがコア間通信領域情報登録部２１１に登録されていない場合（Ｓ２０３、無）に、以降の処理をアクセス排他制御部２２０に依頼している。
【０２１９】
一方、第２の実施形態の変形例では、インデックスが一致するエントリがコア間通信領域情報登録部３３０に登録されていない場合（Ｓ３０３、無）には、コア間通信領域管理部３１０がアクセス排他の判定制御を行う。
【０２２０】
つまり、インデックスが一致するエントリがコア間通信領域情報登録部３３０に登録されていないということは、アプリケーションがアクセスしようとしているキャッシュメモリ領域が、現在コア間通信で使用されていないことを意味する。そのため、コア間通信領域管理部３１０がアクセス可能と判定してアプリケーションにその旨を通知する（Ｓ３０４）。そして、更に、コア間通信領域情報登録要求を受け取っているか否かが判定される（Ｓ３０５）。
【０２２１】
コア間通信領域情報登録要求を受け取っている場合（Ｓ３０５、有）、新たなコア間通信が発生したことになるので、該コア間通信が使用するキャッシュメモリ領域の管理情報としてエントリの追加登録を行う（Ｓ３０６）。
【０２２２】
従って、インデックスが一致するエントリがコア間通信領域情報登録部３３０に登録されていないことが判明した場合には、アクセス排他制御部３２０に依頼することなく、コア間通信領域管理部３１０がアクセス排他の判定制御を行う。
【０２２３】
図１１におけるステップＳ３０４乃至Ｓ３０６は、図７を参照して説明した第２の実施形態のアクセス排他制御部２２０の処理のステップＳ２１２乃至Ｓ２１４に相当する。
【０２２４】
図１２は、第２の実施形態の変形例のキャッシュメモリ制御装置３００のアクセス排他制御部３２０の動作を示すフロー図である。
【０２２５】
前述したように、インデックスが一致するエントリがコア間通信領域情報登録部３３０に登録されていない場合には、コア間通信領域管理部３１０がアクセス排他の判定制御を行う。
【０２２６】
そのため、第２の実施形態の変形例のキャッシュメモリ制御装置３００のアクセス排他制御部３２０においては、インデックスが一致するエントリがコア間通信領域情報登録部３３０に登録されていない場合の処理が不要になる。つまり、図１２に示すように、第２の実施形態の変形例では、図７を参照して説明したステップＳ２１１乃至Ｓ２１４の処理が不要になる。
【０２２７】
一方、ステップＳ３１５のエントリ内容の更新は、コア間通信領域管理部３１０に指示することなくアクセス排他制御部３２０が行う。
【０２２８】
具体的には、エントリの登録情報に含まれるワード状態記憶部情報フィールドのワード状態Ｗ（ｉ）の値において、受信処理を行うコアに対応するビットを０に設定する。そして、その更新の結果、更新後のワード状態Ｗ（ｉ）の値がオール０となる場合は、該エントリをコア間通信領域情報登録部３３０のリストから削除する。
【０２２９】
このように構成した第２の実施形態の変形例のキャッシュメモリ制御装置３００は、構成要素であるコア間通信領域管理部３１０とアクセス排他制御部３２０との間の転送情報を削減して、処理動作を速めることができる。
【０２３０】
以上のように各実施形態のキャッシュメモリ制御装置および制御方法は、アクセス先キャッシュラインと、コア間通信で使用されているキャッシュラインおよびワード状態に着目してライトバック処理を抑止するアクセス排他制御を行う。つまり、各実施形態のキャッシュメモリ制御装置および制御方法は、プロセスIDや論理アドレス、物理ページサイズなどを使用せず、マルチコアプロセッサの構成や運用方法に依存することなくアクセス排他制御が可能となる。したがって、マルチコアプロセッサの構成や運用方法に依存することなく、コア間通信で使用されているキャッシュラインが置き換えられる事によって発生するライトバック処理が抑制され、コア間通信速度が低下することを防ぐことができる。
【符号の説明】
【０２３１】
１    ＣＰＵ
２    キャッシュメモリ
３    メインメモリ
４＿０、４＿１、４＿Ｎ−１    コア
７    アドレスレジスタ
８、１３    上位ｍビット
９    ｎビット
１０    下位ｋビット
１１    アドレスアレイ
１２    データアレイ
１４    状態他
１５    ブロックデータ
１６    比較部
１７    コア番号
１８    命令
１９    キャッシュ制御ユニット
２０    ブロック状態記憶部
２１    ワード状態記憶部
２２    コア０用
２３    コア１用
２４    コア２用
２５    コア３用
１００、２００、３００    キャッシュメモリ制御装置
１１０、２１１、３３０    コア間通信領域情報登録部
１２０    分解要素情報生成手段
１３０    アクセス排他制御手段
２１０、３１０    コア間通信領域管理部
２１２、３１２    アドレス分解情報生成部
２１３、３１３    比較判定部
２２０、３２０    アクセス排他制御部
２２１、３２１    比較判定制御部
【図１】
2016139239.tif 000003
【図２】
2016139239.tif 000004
【図３】
2016139239.tif 000005
【図４】
2016139239.tif 000006
【図５】
2016139239.tif 000007
【図６】
2016139239.tif 000008
【図７】
2016139239.tif 000009
【図８】
2016139239.tif 000010
【図９】
2016139239.tif 000011
【図１０】
2016139239.tif 000012
【図１１】
2016139239.tif 000013
【図１２】
2016139239.tif 000014
【図１３】
2016139239.tif 000015
【図１４】
2016139239.tif 000016
【図１５】
2016139239.tif 000017