(57)【要約】【課題】コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐこと。【解決手段】排他制御装置は、プロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、プロセスと物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納するキャッシュ禁止領域指定部と、物理ページ番号に対応するキャッシュラインを計算し、キャッシュラインを使用する物理ブロック番号をキャッシュ禁止テーブルに格納するキャッシュライン計算部と、キャッシュ禁止テーブルに格納された物理ページ番号が、キャッシュ禁止テーブルにおいて物理ページ番号に対応付けられたプロセス以外のプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを当該エントリに設定するキャッシュ禁止部を有する。【選択図】図１
2013050745.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納するキャッシュ禁止領域指定部と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納するキャッシュライン計算部と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定するキャッシュ禁止部とを備えていることを特徴とする排他制御装置。
【請求項２】
ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除するキャッシュ禁止領域解除部をさらに備えていることを特徴とする、請求項１に記載の排他制御装置。
【請求項３】
前記キャッシュ禁止領域指定部は、ユーザプロセスに対するプロセス管理情報に含まれるページテーブルを参照することにより、該ユーザプロセスから受信した論理アドレスを物理ページ番号に変換することを特徴とする、請求項１又は２に記載の排他制御装置。
【請求項４】
前記コア間の通信に用いられるメインメモリの論理アドレスの範囲は、最初の論理アドレス及び最後の論理アドレスによって指定されることを特徴とする、請求項１乃至３のいずれか１項に記載の排他制御装置。
【請求項５】
前記コア間の通信に用いられるメインメモリの論理アドレスの範囲は、最初の論理アドレス及び領域のサイズによって指定されることを特徴とする、請求項１乃至３のいずれか１項に記載の排他制御装置。
【請求項６】
コンピュータが、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する工程と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する工程と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する工程とを含むことを特徴とする排他制御方法。
【請求項７】
ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する工程をさらに含むことを特徴とする、請求項６に記載の排他制御方法。
【請求項８】
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する処理と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する処理と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する処理とをコンピュータに実行させることを特徴とするプログラム。
【請求項９】
ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する処理をさらにコンピュータに実行させることを特徴とする、請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ間通信のための排他制御装置、方法及びプログラムに関し、特に、キャッシュメモリを用いてプロセッサ間の通信を行うプロセスに対する他のプロセスによる干渉を防ぐ排他制御装置、方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１に、キャッシュメモリを用いたプロセッサ間の高速通信方式の一例が記載されている。図１６は、キャッシュシステムの構成を一例として示すブロック図である。図１６を参照すると、このキャッシュシステムはＣＰＵ１、キャッシュメモリ２、メインメモリ３を有する。ＣＰＵ１は、複数の演算器としてコア４＿０〜コア４＿Ｎ−１を有する。
【０００３】
図１７は、特許文献１に記載されたキャッシュシステムにおけるキャッシュメモリ２の構成を示すブロック図である。図１７を参照すると、キャッシュメモリ２は、アドレスレジスタ７、アドレスアレイ１１、データアレイ１２、比較器１６及びキャッシュ制御ユニット１９を有する。アドレスレジスタ７は、上位ｍビット８、ｎビット９、下位ｋビット１０から構成される。アドレスレジスタ７は、ＣＰＵ１がアクセスを必要としているメインメモリ３のアドレスを保持する。アドレスアレイ１１は、上位ｍビット１３と状態他１４をエントリとする配列である。データアレイ１２は、ブロックデータ１５をエントリとする配列である。
【０００４】
図１８は、状態他１４、ブロックデータ１５の内容を示す図である。図１８を参照すると、ブロックデータ１５は複数のワードから成る。図１８に示した例では、ブロックデータ１５は８ワードから成る。状態他１４は、ブロック状態記憶部２０とワード状態記憶部２１から成る。ワード状態記憶部２１は、複数の状態Ｗ（ｉ）から成る。各状態Ｗ（ｉ）は４ビットから成り、各ビットはＣＰＵ１のコアの１つに対応している。図１８に示した例では、ＣＰＵ１は４つのコア４＿０〜４＿３から成るため、状態Ｗ（ｉ）は４ビットから成る。コアの数に応じて、状態Ｗ（ｉ）に含まれるビット数も変化する。
【０００５】
図１６及び図１７に示したキャッシュシステムは、次のように動作する。まず、アドレスレジスタ７のｎビット９をインデックスアドレスとしてアドレスアレイ１１を検索し、該当するエントリを取得する。該当するエントリには上位ｍビット１３と状態他１４が格納されている。まず、上位ｍビット１３を取得し、アドレスレジスタ７に格納されている上位ｍビット８と比較する。これらが同一のアドレスである場合には、当該エントリに対応するデータアレイ１２に、目的のデータが格納されている。一方、これらが同一のアドレスでない場合には、目的とするデータはキャッシュメモリに存在せず、メインメモリ３にアクセスすることになる。
【０００６】
次に、状態他１４を確認し、当該データが正しいデータか否かを確認する。ワードの状態を表すワード状態記憶部２１の状態Ｗ（ｉ）が１の場合、当該ブロックデータ１５のうち、状態Ｗ（ｉ）が示すワードには正しいデータが入っている。一方、状態Ｗ（ｉ）が０の場合、格納されているデータは無効である。
【０００７】
このキャッシュメモリによると、コアが１個の場合において、状態Ｗ（ｉ）が１であり、当該エントリへの書き込みがＣＰＵ１から要求されたときに、ライトバックが生じる。一方、状態Ｗ（ｉ）が１であり、当該エントリからＣＰＵ１への読み込み要求があったときに、状態Ｗ（ｉ）は０に書き換えられる。この特徴を用いると、次のようなコア間の通信が可能となる。
【０００８】
コアが複数個の場合において、状態Ｗ（ｉ）に含まれる複数のビットのうちの少なくとも１つが１であるエントリへの書き込みがＣＰＵ１から要求されたときに、ライトバックが生じる。４つのコアを有するＣＰＵ１において、コア４＿０からその他のコアへの通信を行いたい場合、まず、コア４＿０からキャッシュメモリ２にデータが書き込まれる。このとき、状態Ｗ（ｉ）を０１１１に設定する。
【０００９】
次に、コア４＿０以外のコア４＿１〜４＿３がキャッシュメモリからデータを取得する。このとき、コアに対応するビットを０に書き換える。コア４＿１がキャッシュメモリ２から読み込みを実行した場合には、状態Ｗ（ｉ）＝００１１とし、次に、コア４＿２がキャッシュメモリ２から読み込みを実行した場合は、状態Ｗ（ｉ）＝０００１とする。
【００１０】
すべてのコアからの読み込みが終了したときには、状態Ｗ（ｉ）＝００００となり、キャッシュされているデータのライトバックは生じない。したがって、キャッシュメモリ２のみを用いて、コア間の通信が実現されたことになる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−１５７６０８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上記のキャッシュシステムによると、複数の独立したプログラムが並行して実行されている場合、コア間の通信速度が低下するおそれがある。非同期プロセスにより、コア間の通信領域への干渉が発生するからである。
【００１３】
コア同士がキャッシュメモリ２を用いて通信を行っている間に、他のコアがキャッシュメモリ２に対して書き込みを要求した場合、ライトバックが発生してしまう。つまり、独立した２つのプログラムがそれぞれのコアを割り当てられてプログラムを実行している場合、一方のプログラムは他方のプログラムがキャッシュメモリ２のいずれの箇所を通信のために用いているのかを知らない。したがって、一方のプログラムがキャッシュメモリ２を用いて通信している間、他方のプログラムがキャッシュメモリ２に対して書き込み要求を出した場合、キャッシュメモリに蓄えられていた通信データがライトバックされ、メインメモリ３に書き込まれる。
【００１４】
すなわち、あるコア上で実行されているプログラム同士がキャッシュメモリを用いて通信を行っている間に、通信を行っているコア以外のコア上で実行している独立なプログラムから、通信に用いられているキャッシュメモリに対してアクセス要求があった場合、キャッシュメモリの内容がメモリに書き出されることになり、その間、通信を停止しなくてはならず、通信性能の劣化を引き起こす。
【００１５】
そこで、コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐことが課題となる。本発明の目的は、かかる課題を解決する排他制御装置、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明の第１の視点に係る排他制御装置は、
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納するキャッシュ禁止領域指定部と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納するキャッシュライン計算部と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定するキャッシュ禁止部とを備えている。
【００１７】
本発明の第２の視点に係る排他制御方法は、
コンピュータが、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する工程と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する工程と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する工程とを含む。
【００１８】
本発明の第３の視点に係るプログラムは、
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する処理と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する処理と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する処理とをコンピュータに実行させる。
【発明の効果】
【００１９】
本発明に係る排他制御装置、方法及びプログラムによると、コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐことができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係る排他制御装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る排他制御装置におけるキャッシュ禁止テーブルの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係る排他制御装置におけるページテーブルエントリの構成を示す図である。
【図４】本発明の第１の実施形態に係る排他制御装置の動作を示すフローチャートである。
【図５】本発明の第１の実施形態に係る排他制御装置におけるキャッシュ禁止領域指定部の動作を示すフローチャートである。
【図６】本発明の第１の実施形態に係る排他制御装置におけるキャッシュライン計算部の動作を示すフローチャートである。
【図７】本発明の第１の実施形態に係る排他制御装置におけるキャッシュ禁止部の動作を示すフローチャートである。
【図８】本発明の第２の実施形態に係る排他制御装置の構成を示すブロック図である。
【図９】本発明の第２の実施形態に係る排他制御装置の動作を示すフローチャートである。
【図１０】本発明の実施例における構成を示すブロック図である。
【図１１】本発明の実施例におけるページテーブルエントリの構成を示す図である。
【図１２】本発明の実施例における動作を示すフローチャートである。
【図１３】本発明の実施例におけるキャッシュ禁止領域指定部の動作を示すフローチャートである。
【図１４】本発明の実施例におけるキャッシュライン計算部の動作を示すフローチャートである。
【図１５】本発明の実施例におけるキャッシュ禁止部の動作を示すフローチャートである。
【図１６】キャッシュシステムの構成を一例として示すブロック図である。
【図１７】特許文献１に記載されたキャッシュシステムにおけるキャッシュメモリの構成を示すブロック図である。
【図１８】特許文献１に記載されたキャッシュシステムにおける状態ビットを示す図である。
【発明を実施するための形態】
【００２１】
第１の展開形態の排他制御装置は、キャッシュ禁止領域指定部、キャッシュライン計算部及びキャッシュ禁止部を有することが好ましい。キャッシュ禁止領域指定部は、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する。また、キャッシュライン計算部は、前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する。さらに、キャッシュ禁止部は、前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する。
【００２２】
第２の展開形態の排他制御装置は、ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除するキャッシュ禁止領域解除部をさらに有することが好ましい。
【００２３】
第３の展開形態の排他制御装置は、前記キャッシュ禁止領域指定部が、ユーザプロセスに対するプロセス管理情報に含まれるページテーブルを参照することにより、該ユーザプロセスから受信した論理アドレスを物理ページ番号に変換することが好ましい。
【００２４】
第４の展開形態の排他制御装置は、前記コア間の通信に用いられるメインメモリの論理アドレスの範囲が、最初の論理アドレス及び最後の論理アドレスによって指定されるようにしてもよい。
【００２５】
第５の展開形態の排他制御装置は、前記コア間の通信に用いられるメインメモリの論理アドレスの範囲が、最初の論理アドレス及び領域のサイズによって指定されるようにしてもよい。
【００２６】
第６の展開形態の排他制御方法は、
コンピュータが、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する工程と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する工程と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する工程とを含むことが好ましい。
【００２７】
第７の展開形態の排他制御方法は、ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する工程をさらに含むことが好ましい。
【００２８】
第８の展開形態のプログラムは、
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する処理と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する処理と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する処理とをコンピュータに実行させることが好ましい。
【００２９】
第９の展開形態のプログラムは、ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する処理をさらにコンピュータに実行させることが好ましい。
【００３０】
本発明に係る排他制御装置によると、コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐことができる。その理由は、コア間で通信を行っている間、通信に用いられているキャッシュメモリに対して、非同期なプログラムからのアクセスを防ぐため、当該キャッシュメモリにおけるライトバックが発生しないからである。
【００３１】
（実施形態１）
本発明の第１の実施形態に係る排他制御装置ついて、図面を参照して説明する。本実施形態に係る排他制御装置は、一例として、図１６に示したコンピュータアーキテクチャ上に構築される。
【００３２】
図１を参照すると、排他制御装置３０は、キャッシュ禁止領域指定部３１、キャッシュライン計算部３２、キャッシュ禁止テーブル３５、キャッシュ禁止部３３及びプロセス管理情報３６を有する。プロセス管理情報３６は、ページテーブルエントリ３７を含む。これらの各部は、次のように動作する。
【００３３】
キャッシュ禁止領域指定部３１は、ユーザプロセス１００に対して、キャッシュメモリの使用禁止領域を指定する。ユーザプロセス１００は、キャッシュ禁止領域指定部３１に対して、これからコア間の通信に利用するメインメモリ３を論理アドレスで指定する。また、ユーザプロセス１００は、キャッシュの利用禁止対象外とするプロセスのプロセスＩＤも同時に指定する。
【００３４】
キャッシュ禁止領域指定部３１は、当該論理アドレスを物理ページ番号４３に変換してキャッシュライン計算部３２に通知する。論理アドレスは、物理ページ番号４３に１対１に変換される。メインメモリ３上の領域は、ページと呼ばれる単位で管理される。物理ページ番号４３とは、ページ毎に付されたシーケンシャル番号をいう。物理ページ番号４３への変換方法については、ページテーブルエントリ３７の項で詳述する。
【００３５】
論理アドレスの指定方法として、例えば、通信に利用するメインメモリ３の最初と最後の論理アドレスを指定する方法、又は、メインメモリ３の最初の論理アドレスと当該領域サイズを指定する方法を用いることができる。キャッシュ禁止領域指定部３１の出力は、当該論理アドレスに対応した１つ以上の物理ページ番号４３である。
【００３６】
当該領域の最初と最後のアドレスが指定された場合には、これらの間の論理アドレスを補間した後、物理ページ番号４３に変換される。当該領域の最初の論理アドレスと当該領域のサイズが指定された場合には、最初のアドレスから領域サイズ分の論理アドレスが計算され、それぞれの論理アドレスが物理ページ番号４３に変換される。キャッシュ禁止領域指定部３１は、キャッシュ禁止の対象外となるプロセスのリストをキャッシュ禁止テーブル３５に格納しておく。
【００３７】
キャッシュライン計算部３２は、ある物理ページ番号４３が使用することになるキャッシュラインを計算し、当該キャッシュラインを使用するメインメモリ３のブロック番号（物理ブロック番号４２）をリスト化し、キャッシュ禁止テーブル３５に格納する。
【００３８】
キャッシュメモリ２は、メインメモリ３と比較して記憶容量が極めて少ない。したがって、メインメモリ３は、キャッシュメモリ２上のデータを必要に応じて入れ替えながら使用しなくてはならない。キャッシュメモリ２とメインメモリ３は、ブロックと呼ばれる単位でデータの入れ替えを行う。入れ替え場所の特定には、ＣＰＵ特有のハッシュ関数が用いられ、一般に、ＭＯＤ演算が用いられる。
【００３９】
具体的には、キャッシュメモリ２が４ブロックの容量を有し、メインメモリ３が１００ブロックの容量を有する場合、メインメモリ３の５２ブロック目は、５２  ｍｏｄ  ４＝０、すなわち、キャッシュメモリ２の１ブロック目に格納される。このように、メインメモリ３とキャッシュメモリ２のデータ入れ替え位置は、一意に決定される。このキャッシュメモリ２の入れ替え位置のことを、キャッシュラインと呼ぶ。
【００４０】
キャッシュライン計算部３２は、指定された物理アドレスの所属するメインメモリ３上のブロック番号を計算した後、当該ブロックが格納されるキャッシュラインを計算する。その後、当該キャッシュラインを利用する物理ブロック番号４２をリスト化する。
【００４１】
具体的には、キャッシュメモリ２が４ブロックの容量を持ち、メインメモリ３が１００ブロックの容量を持っており、１ブロックあたり４つの物理アドレスから構成される場合、物理アドレス「１５」は、メインメモリ３の４番目のブロックに所属する。メインメモリ３の４番目のブロックは上記ＭＯＤ演算により、４  ｍｏｄ  ４＝０となり、キャッシュメモリ２の１ブロック目に格納される。キャッシュメモリ２の１ブロック目を利用するメインメモリ３のブロックは、０，４，８，１２，…，９６の２５ブロックとなり、これらのブロック番号をリストとしてキャッシュ禁止テーブル３５に格納しておく。
【００４２】
キャッシュ禁止テーブル３５は、キャッシュ禁止対象外プロセス４１のリスト以外に、キャッシュライン計算部３２で計算された物理ブロック番号４２のリスト若しくは物理ページ番号４３のリスト又は両方のリストを格納している。図２は、キャッシュ禁止テーブル３５の一例を示す。
【００４３】
キャッシュ禁止部３３は、メインメモリ３の特定の領域に対してキャッシュメモリ２へのデータの転送を禁止する。ページは複数の物理ブロックから構成される。図２では、一つのページが４つのブロックを含む。キャッシュ禁止部３３は、キャッシュ禁止テーブル３５に含まれる物理ブロック番号４２がいずれの物理ページ番号４３に含まれているかを特定し、当該物理ページ番号４３を格納しているページテーブルエントリ３７に対して、キャッシュ禁止フラグ４５を設定する。
【００４４】
キャッシュ禁止フラグ４５を設定する際は、キャッシュ禁止対象外プロセス４１の情報も確認し、もしこれからキャッシュ禁止フラグ４５を設定するページテーブルエントリ３７がキャッシュ禁止対象外プロセス４１のリストに存在する場合には、設定は行わない。
【００４５】
キャッシュ禁止テーブル３５が物理ページ番号４３のリストを保持している場合には、物理ブロック番号４２から物理ページ番号４３への変換は実行せず、キャッシュ禁止テーブル３５を利用してもよい。
【００４６】
プロセス管理情報３６は、排他制御装置３０内に設けられたプロセスの実行状態を管理するための情報である。プロセス管理情報３６は、プロセス構造体、ページテーブル等から構成され、ページテーブルエントリ３７は、ページテーブルに含まれる１つのエントリをいう。プロセス管理情報３６は、プロセス毎に設けられ、プロセスの生成及び終了に合わせて生成及び開放が行われる。
【００４７】
ページテーブルエントリ３７は、論理アドレスと物理アドレスの変換情報を提供する。図３にページテーブルエントリ３７を示す。ページテーブルエントリ３７はページテーブルの１つのエントリであり、ページテーブルはプロセス毎に設けられる。ページテーブルのインデックス番号は論理アドレスを表し、ページテーブルエントリ３７には物理ページ番号４３、ダーティーフラグ、キャッシュ禁止フラグ４５、存在フラグ４６等が格納されている。
【００４８】
キャッシュ禁止フラグ４５は、当該ページテーブルエントリ３７が保持する物理ページ番号４３に該当するページが、キャッシュメモリ２に展開されることを防ぐためのフラグである。
【００４９】
存在フラグ４６は、ページテーブルエントリ３７に格納されている物理ページ番号４３が有効であるか否かを示す。存在フラグ４６が設定されている場合には、当該ページテーブルエントリ３７に格納されている物理ページ番号４３が有効であり、メインメモリ３にアクセスできることを表す。
【００５０】
一方、存在フラグ４６が設定されていない場合には、当該ページテーブルエントリ３７に格納されている物理ページ番号４３が無効であり、メインメモリ３上に当該ページが存在しない、すなわち、論理アドレスに対して物理ページが割り当てられていないことを表す。
【００５１】
図４は、本実施形態に係る排他制御装置の動作を示すフローチャートである。
【００５２】
まず、キャッシュ禁止領域指定部３１は、ユーザプロセス１００から受け取った論理アドレスを物理ページ番号４３のリストに変換する（ステップＳ１）。論理アドレスを物理アドレスに変換する際には、論理アドレスを渡したユーザプロセス１００に対するページテーブルを利用する。
【００５３】
次に、キャッシュライン計算部３２は、当該物理ページ番号４３が使用するキャッシュラインを計算する（ステップＳ２）。
【００５４】
次に、キャッシュライン計算部３２は、当該キャッシュラインを使用する物理ページ番号４３をリスト化する（ステップＳ３）。
【００５５】
次に、キャッシュ禁止部３３は、当該物理ページ番号４３を使用しているページテーブルエントリ３７を探し出す（ステップＳ４）。
【００５６】
次に、キャッシュ禁止部３３は、当該ページテーブルエントリ３７のキャッシュ禁止フラグ４５を設定する（ステップＳ５）。
【００５７】
図５は、キャッシュ禁止領域指定部３１の動作を示したフローチャートである。
【００５８】
まず、ユーザプロセス１００から当該領域の終端論理アドレスを受け取る（ステップＳ６）。
【００５９】
次に、当該論理アドレスを含むページ数を計算しページインデックスをリスト化する（ステップＳ７）。
【００６０】
ページ数がゼロの場合には（ステップＳ８のＹｅｓ）、処理を終了する。
【００６１】
ページ数がゼロではない場合には（ステップＳ８のＮｏ）、ページインデックスリストからページインデックスを一つ取り出す（ステップＳ９）。
【００６２】
次に、ページインデックスからページテーブルエントリを特定し、存在フラグ４６を確認する（ステップＳ１０）。
【００６３】
ページが存在する場合には（ステップＳ１１のＹｅｓ）、当該エントリから物理ページ番号４３を取り出し、物理ページ番号４３リストに追加する（ステップＳ１２）。
【００６４】
次に、ページ数から１を差し引いて（ステップＳ１３）、ステップＳ６に戻る。
【００６５】
ページが存在しない場合には（ステップＳ１１のＮｏ）、ステップＳ１２は実行しない。
【００６６】
図６は、キャッシュライン計算部３２の動作を示したフローチャートである。
【００６７】
まず、物理ページ番号４３のリストから物理ページ番号４３を一つ取り出す（ステップＳ１４）。
【００６８】
この時点で物理ページ番号４３が存在しない場合には（ステップＳ１５のＮｏ）、処理を終了する。
【００６９】
物理ページ番号４３が存在する場合には（ステップＳ１５のＹｅｓ）、次に物理ページ番号４３とキャッシュライン数の剰余（ｍｏｄ）を計算する（ステップＳ１６）。
【００７０】
具体的には、キャッシュラインの総数が４である場合、物理ページ番号４３の５２は、５２  ｍｏｄ  ４＝０、つまり、キャッシュラインの１番目から格納されることになる。
【００７１】
上述のように、キャッシュメモリとメインメモリ３上のデータ送受信はブロックを単位として行われる。すなわち、キャッシュライン１つにつき１つのブロックが格納される。一方、物理ページは複数のブロックを含む。したがって、１つの物理ページを格納するために、複数のキャッシュラインが使用される。
【００７２】
次に、当該キャッシュライン番号に該当する物理ページリストを作成する（ステップＳ１７）。この物理ページリストはキャッシュ禁止テーブル３５に格納される。次にステップＳ１４に戻り、再度物理ページ番号４３のリストから物理ページ番号４３を１つ取り出す。
【００７３】
図７は、キャッシュ禁止部３３の動作を示すフローチャートである。
【００７４】
まず、物理ページ番号４３のリストから、物理ページ番号４３を一つ取り出す（ステップＳ１８）。
【００７５】
この時点で物理ページ番号４３が存在しない場合には（ステップＳ１９のＮｏ）、処理を終了する。
【００７６】
物理ページ番号４３が存在する場合には（ステップＳ１９のＹｅｓ）、当該物理ページ番号４３を使用しているページテーブルエントリ３７の有無を検索する（ステップＳ２０）。
【００７７】
当該物理ページ番号４３を使用しているページテーブルエントリ３７が存在し（ステップＳ２１のＹｅｓ）、キャッシュ禁止対象外プロセス４１でない場合には（ステップＳ２２のＮｏ）、当該物理ページ番号４３を使用しているページテーブルエントリ３７に対してキャッシュ禁止フラグ４５を設定して（ステップＳ２３）、ステップＳ１８に戻る。
【００７８】
当該物理ページ番号４３を使用しているページテーブルエントリ３７が存在しない場合（ステップＳ２１のＮｏ）、又は、キャッシュ禁止対象外プロセス４１である場合には（ステップＳ２２のＹｅｓ）、ステップＳ２３を実行することなくステップＳ１８に戻る。キャッシュ禁止対象外か否かは、キャッシュ禁止テーブル３５の中のキャッシュ禁止対象外プロセス４１リストを参照する。
【００７９】
本実施形態に係る排他制御装置は、ユーザから指定されたメインメモリ３に相当するキャッシュメモリラインを計算し、当該領域に対して、他のプロセスからのアクセスを禁止する。したがって、コア間で通信を行っている間、通信に用いられているキャッシュメモリに対して、非同期なプログラムからのアクセスを防ぐことができる。
【００８０】
（実施形態２）
本発明の第２の実施形態に係る排他制御装置について、図面を参照して説明する。図８は、本実施形態に係る排他制御装置５０の構成を示すブロック図である。図８を参照すると、排他制御装置５０は、第１の実施形態に係る排他制御装置３０（図１）の構成に加えて、キャッシュ禁止領域解除部３８を有する。
【００８１】
キャッシュ禁止領域解除部３８は、キャッシュが禁じられている物理ページのキャッシュ禁止フラグ４５の設定を解除する。具体的には、ユーザプロセスからキャッシュ禁止を解除するメモリの論理アドレスを受け取り、それを物理アドレスに変換後、当該物理アドレスを利用しているページテーブルエントリのキャッシュ禁止フラグを解除する。
【００８２】
次に、図９のフローチャートを参照して本実施形態の全体の動作について説明する。
【００８３】
図９は、本発明全体の動作を示したフローチャートである。まず、排他制御装置５０がユーザプロセス１００から受け取った論理アドレスを物理ページ番号４３のリストに変換する（ステップＳ２３）。論理アドレスと物理アドレスの変換には、論理アドレスを渡したユーザプロセス１００のページテーブルを用いる。
【００８４】
次に、当該物理ページ番号４３が使用するキャッシュラインを計算する（ステップＳ２４）。
【００８５】
次に、当該キャッシュラインを使用する物理ページ番号４３をリスト化する（ステップＳ２５）。
【００８６】
次に、当該物理ページ番号４３を使用しているページテーブルエントリ３７を探し出す（ステップＳ２６）。
【００８７】
次に、当該ページテーブルエントリ３７のキャッシュ禁止フラグ４５を解除する（ステップＳ２７）。
【００８８】
本実施形態に係る排他制御装置５０は、第１の実施形態に係る排他制御装置３０の構成に加えて、キャッシュ禁止領域解除部３８を有し、一度設定されたキャッシュ禁止フラグを解除することができる。これにより、通信が終了した後は当該通信領域においてもキャッシュメモリを利用することができる。したがって、本実施形態に係る排他制御装置によると、プロセッサ間通信の終了後におけるコンピュータの性能低下を防ぐことができる。
【実施例】
【００８９】
次に、具体的な実施例に基づいて、本発明の実施形態に係る排他制御装置の動作を説明する。
【００９０】
図１０に示すように、キャッシュ禁止領域指定部３１は、Ｌｉｎｕｘ  ＯＳ６０上のシステムコール（Ｓｙｓｔｅｍ  Ｃａｌｌ）６１の１つとして実装することができる。また、インテルアーキテクチャによると、図１１に示すように、ページテーブルエントリ中の物理ページ番号４３はページフレーム番号７３、キャッシュ禁止フラグ４５はキャッシュディスエーブルビット（Ｃａｃｈｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ）７５、存在フラグ４６はプレゼントビット（Ｐｒｅｓｅｎｔ  Ｂｉｔ）７６として実装されている。
【００９１】
本発明の使用手順は以下のとおりである。まず、コア間通信を開始するユーザプロセスが通信のためのメインメモリ３を確保する。そして、当該メインメモリ３が使用するキャッシュメモリに対して上記第１の実施形態に係るキャッシュメモリ２を適用し、非同期プロセスからの当該キャッシュメモリ２へのアクセスを禁止させる。本発明を適用した後、通信を行う。通信には、一例として、特許文献１に記載された技術を用いることができる。通信の終了後は、上記第２の実施形態に係るキャッシュシステムの技術を用いて、当該メインメモリ３が使用するキャッシュメモリ２へのアクセス禁止を解除する。
【００９２】
図１２は、本実施例における動作を示すフローチャートである。
【００９３】
まず、Ｌｉｎｕｘ  ＯＳ６０のシステムコール６１は、ユーザプロセス１００から受け取った論理アドレスをページフレーム番号７３のリストに変換する（ステップＳ１０１）。論理アドレスと物理アドレスの変換には、論理アドレスを渡したユーザプロセス１００に対するページテーブルを用いる。
【００９４】
次に、キャッシュライン計算部６２は、当該ページフレーム番号７３が使用するキャッシュラインを計算する（ステップＳ１０２）。
【００９５】
次に、キャッシュライン計算部６２は、当該キャッシュラインを使用するページフレーム番号７３をリスト化する（ステップＳ１０３）。
【００９６】
次に、キャッシュ禁止部６３は、当該ページフレーム番号７３を使用しているページテーブルエントリ６７を探し出す（ステップＳ１０４）。
【００９７】
次に、キャッシュ禁止部６３は、当該ページテーブルエントリ６７のキャッシュディスエーブルビット７５を設定する（ステップＳ１０５）。
【００９８】
図１３は、システムコール６１の動作を示すフローチャートである。
【００９９】
まず、ユーザプロセス１００から当該領域の終端論理アドレスを受け取る（ステップＳ１０６）。
【０１００】
次に、当該論理アドレスを含むページ数を計算しページインデックスをリスト化する（ステップＳ１０７）。
【０１０１】
ページ数がゼロの場合には（ステップＳ１０８のＹｅｓ）、処理を終了する。
【０１０２】
ページ数がゼロではない場合には（ステップＳ１０８のＮｏ）、ページインデックスリストからページインデックスを一つ取り出す（ステップＳ１０９）。
【０１０３】
次に、ページインデックスからページテーブルエントリを特定し、プレゼントビット７６を確認する（ステップＳ１１０）。
【０１０４】
ページが存在する場合には（ステップＳ１１１のＹｅｓ）、当該エントリからページフレーム番号７３を取り出し、ページフレーム番号７３リストに追加する（ステップＳ１１２）。
【０１０５】
次に、ページ数から１を引き（ステップＳ１１３）、ステップＳ１０６に戻る。
【０１０６】
ページが存在しない場合には（ステップＳ１１１のＮｏ）、ステップＳ１１２は実行しない。
【０１０７】
図１４は、キャッシュライン計算部６２の動作を示すフローチャートである。キャッシュライン数とキャッシュの容量は、各アーキテクチャによって決められた数値が存在する。例えば、Ｉｎｔｅｌ（Ｒ）  Ｃｏｒｅ（ＴＭ）２  ＣＰＵ  Ｅ４３００におけるキャッシュ容量は２Ｍバイト、ブロックサイズは６４バイトであるため、キャッシュライン数は約３２０００となる。Ｌｉｎｕｘ  ＯＳでは、／ｐｒｏｃディレクトリ内にＣＰＵアーキテクチャを特定する情報が含まれているため、この情報を用いて、キャッシュライン数とキャッシュの容量を特定する。
【０１０８】
まず、ページフレーム番号７３のリストからページフレーム番号７３を一つ取り出す（ステップＳ１１４）。
【０１０９】
この時点でページフレーム番号７３が存在しない場合には（ステップＳ１１５のＮｏ）、処理を終了する。
【０１１０】
ページフレーム番号７３が存在する場合には（ステップＳ１１５のＹｅｓ）、ページフレーム番号７３とキャッシュライン数の剰余（ｍｏｄ）を計算する（ステップＳ１１６）。
【０１１１】
次に、当該キャッシュライン番号に該当する物理ページリストを作成する（ステップＳ１１７）。この物理ページリストはキャッシュ禁止テーブル６５に格納される。次にステップＳ１１４に戻り、再度ページフレーム番号７３のリストからページフレーム番号７３を１つ取り出す。
【０１１２】
図１５は、キャッシュ禁止部６３の動作を示すフローチャートである。
【０１１３】
まず、ページフレーム番号７３のリストから、ページフレーム番号７３を１つ取り出す（ステップＳ１１８）。
【０１１４】
この時点でページフレーム番号７３が存在しない場合には（ステップＳ１１９のＮｏ）、処理を終了する。
【０１１５】
ページフレーム番号７３が存在する場合には（ステップＳ１１９のＹｅｓ）、当該ページフレーム番号７３を使用しているページテーブルエントリ６７の有無を検索する（ステップＳ１２０）。
【０１１６】
当該ページフレーム番号７３を使用しているページテーブルエントリ６７が存在し（ステップＳ１２１のＹｅｓ）、キャッシュ禁止対象外のプロセスでない場合には（ステップＳ１２２のＮｏ）、当該ページフレーム番号７３を使用しているページテーブルエントリ６７に対してキャッシュディスエーブルビット７５を設定して（ステップＳ１２３）、ステップＳ１１８に戻る。
【０１１７】
当該ページフレーム番号７３を使用しているページテーブルエントリ６７が存在しない場合（ステップＳ１２１のＮｏ）、又は、キャッシュ禁止対象外のプロセスである場合（ステップＳ１２２のＹｅｓ）には、ステップＳ１２３は実行せず、ステップＳ１１８に戻る。キャッシュ禁止対象外か否かは、キャッシュ禁止テーブル６５の中のキャッシュ禁止対象外プロセス（図２の４１参照）リストを参照する。
【０１１８】
本発明に係る排他制御装置は、例えば、データセンタのサーバ、携帯端末など、キャッシュメモリを共有している複数のプロセッサを有し、当該プロセッサ上で複数の非同期なプログラムを実行しているコンピュータにおいて適用することができる。
【０１１９】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１２０】
１  ＣＰＵ
２  キャッシュメモリ
３  メインメモリ
４＿０〜４＿Ｎ−１  コア
７  アドレスレジスタ
８  上位ｍビット
９  ｎビット
１０  下位ｋビット
１１  アドレスアレイ
１２  データアレイ
１３  上位ｍビット
１４  状態他
１５  ブロックデータ
１６  比較器
１７  コア番号
１８  命令
１９  キャッシュ制御ユニット
２０  ブロック状態記憶部
２１  ワード状態記憶部
２２  コア０用  Ｗ（ｉ）ビット
２３  コア１用  Ｗ（ｉ）ビット
２４  コア２用  Ｗ（ｉ）ビット
２５  コア３用  Ｗ（ｉ）ビット
３０、５０  排他制御装置
３１  キャッシュ禁止領域指定部
３２、６２  キャッシュライン計算部
３３、６３  キャッシュ禁止部
３５、６５  キャッシュ禁止テーブル
３６  プロセス管理情報
３７、６７  ページテーブルエントリ
３８  キャッシュ禁止領域解除部
４１  キャッシュ禁止対象外プロセス
４２  物理ブロック番号
４３  物理ページ番号
４５  キャッシュ禁止フラグ
４６  存在フラグ
６０  ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）
６１  システムコール（Ｓｙｓｔｅｍ  Ｃａｌｌ）
６６  タスク構造体
７３  ページフレーム番号
７５  キャッシュディスエーブルビット（Ｃａｃｈｅ  Ｄｉｓａｂｌｅ  Ｂｉｔ）
７６  プレゼントビット（Ｐｒｅｓｅｎｔ  Ｂｉｔ）
１００  ユーザプロセス
【図１】
2013050745.tif 000003
【図２】
2013050745.tif 000004
【図３】
2013050745.tif 000005
【図４】
2013050745.tif 000006
【図５】
2013050745.tif 000007
【図６】
2013050745.tif 000008
【図７】
2013050745.tif 000009
【図８】
2013050745.tif 000010
【図９】
2013050745.tif 000011
【図１０】
2013050745.tif 000012
【図１１】
2013050745.tif 000013
【図１２】
2013050745.tif 000014
【図１３】
2013050745.tif 000015
【図１４】
2013050745.tif 000016
【図１５】
2013050745.tif 000017
【図１６】
2013050745.tif 000018
【図１７】
2013050745.tif 000019
【図１８】
2013050745.tif 000020