説明

排他制御装置、方法及びプログラム

【課題】コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐこと。
【解決手段】排他制御装置は、プロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、プロセスと物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納するキャッシュ禁止領域指定部と、物理ページ番号に対応するキャッシュラインを計算し、キャッシュラインを使用する物理ブロック番号をキャッシュ禁止テーブルに格納するキャッシュライン計算部と、キャッシュ禁止テーブルに格納された物理ページ番号が、キャッシュ禁止テーブルにおいて物理ページ番号に対応付けられたプロセス以外のプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを当該エントリに設定するキャッシュ禁止部を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ間通信のための排他制御装置、方法及びプログラムに関し、特に、キャッシュメモリを用いてプロセッサ間の通信を行うプロセスに対する他のプロセスによる干渉を防ぐ排他制御装置、方法及びプログラムに関する。
【背景技術】
【0002】
特許文献1に、キャッシュメモリを用いたプロセッサ間の高速通信方式の一例が記載されている。図16は、キャッシュシステムの構成を一例として示すブロック図である。図16を参照すると、このキャッシュシステムはCPU1、キャッシュメモリ2、メインメモリ3を有する。CPU1は、複数の演算器としてコア4_0〜コア4_N−1を有する。
【0003】
図17は、特許文献1に記載されたキャッシュシステムにおけるキャッシュメモリ2の構成を示すブロック図である。図17を参照すると、キャッシュメモリ2は、アドレスレジスタ7、アドレスアレイ11、データアレイ12、比較器16及びキャッシュ制御ユニット19を有する。アドレスレジスタ7は、上位mビット8、nビット9、下位kビット10から構成される。アドレスレジスタ7は、CPU1がアクセスを必要としているメインメモリ3のアドレスを保持する。アドレスアレイ11は、上位mビット13と状態他14をエントリとする配列である。データアレイ12は、ブロックデータ15をエントリとする配列である。
【0004】
図18は、状態他14、ブロックデータ15の内容を示す図である。図18を参照すると、ブロックデータ15は複数のワードから成る。図18に示した例では、ブロックデータ15は8ワードから成る。状態他14は、ブロック状態記憶部20とワード状態記憶部21から成る。ワード状態記憶部21は、複数の状態W(i)から成る。各状態W(i)は4ビットから成り、各ビットはCPU1のコアの1つに対応している。図18に示した例では、CPU1は4つのコア4_0〜4_3から成るため、状態W(i)は4ビットから成る。コアの数に応じて、状態W(i)に含まれるビット数も変化する。
【0005】
図16及び図17に示したキャッシュシステムは、次のように動作する。まず、アドレスレジスタ7のnビット9をインデックスアドレスとしてアドレスアレイ11を検索し、該当するエントリを取得する。該当するエントリには上位mビット13と状態他14が格納されている。まず、上位mビット13を取得し、アドレスレジスタ7に格納されている上位mビット8と比較する。これらが同一のアドレスである場合には、当該エントリに対応するデータアレイ12に、目的のデータが格納されている。一方、これらが同一のアドレスでない場合には、目的とするデータはキャッシュメモリに存在せず、メインメモリ3にアクセスすることになる。
【0006】
次に、状態他14を確認し、当該データが正しいデータか否かを確認する。ワードの状態を表すワード状態記憶部21の状態W(i)が1の場合、当該ブロックデータ15のうち、状態W(i)が示すワードには正しいデータが入っている。一方、状態W(i)が0の場合、格納されているデータは無効である。
【0007】
このキャッシュメモリによると、コアが1個の場合において、状態W(i)が1であり、当該エントリへの書き込みがCPU1から要求されたときに、ライトバックが生じる。一方、状態W(i)が1であり、当該エントリからCPU1への読み込み要求があったときに、状態W(i)は0に書き換えられる。この特徴を用いると、次のようなコア間の通信が可能となる。
【0008】
コアが複数個の場合において、状態W(i)に含まれる複数のビットのうちの少なくとも1つが1であるエントリへの書き込みがCPU1から要求されたときに、ライトバックが生じる。4つのコアを有するCPU1において、コア4_0からその他のコアへの通信を行いたい場合、まず、コア4_0からキャッシュメモリ2にデータが書き込まれる。このとき、状態W(i)を0111に設定する。
【0009】
次に、コア4_0以外のコア4_1〜4_3がキャッシュメモリからデータを取得する。このとき、コアに対応するビットを0に書き換える。コア4_1がキャッシュメモリ2から読み込みを実行した場合には、状態W(i)=0011とし、次に、コア4_2がキャッシュメモリ2から読み込みを実行した場合は、状態W(i)=0001とする。
【0010】
すべてのコアからの読み込みが終了したときには、状態W(i)=0000となり、キャッシュされているデータのライトバックは生じない。したがって、キャッシュメモリ2のみを用いて、コア間の通信が実現されたことになる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2009−157608号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
上記のキャッシュシステムによると、複数の独立したプログラムが並行して実行されている場合、コア間の通信速度が低下するおそれがある。非同期プロセスにより、コア間の通信領域への干渉が発生するからである。
【0013】
コア同士がキャッシュメモリ2を用いて通信を行っている間に、他のコアがキャッシュメモリ2に対して書き込みを要求した場合、ライトバックが発生してしまう。つまり、独立した2つのプログラムがそれぞれのコアを割り当てられてプログラムを実行している場合、一方のプログラムは他方のプログラムがキャッシュメモリ2のいずれの箇所を通信のために用いているのかを知らない。したがって、一方のプログラムがキャッシュメモリ2を用いて通信している間、他方のプログラムがキャッシュメモリ2に対して書き込み要求を出した場合、キャッシュメモリに蓄えられていた通信データがライトバックされ、メインメモリ3に書き込まれる。
【0014】
すなわち、あるコア上で実行されているプログラム同士がキャッシュメモリを用いて通信を行っている間に、通信を行っているコア以外のコア上で実行している独立なプログラムから、通信に用いられているキャッシュメモリに対してアクセス要求があった場合、キャッシュメモリの内容がメモリに書き出されることになり、その間、通信を停止しなくてはならず、通信性能の劣化を引き起こす。
【0015】
そこで、コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐことが課題となる。本発明の目的は、かかる課題を解決する排他制御装置、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0016】
本発明の第1の視点に係る排他制御装置は、
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納するキャッシュ禁止領域指定部と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納するキャッシュライン計算部と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定するキャッシュ禁止部とを備えている。
【0017】
本発明の第2の視点に係る排他制御方法は、
コンピュータが、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する工程と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する工程と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する工程とを含む。
【0018】
本発明の第3の視点に係るプログラムは、
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する処理と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する処理と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する処理とをコンピュータに実行させる。
【発明の効果】
【0019】
本発明に係る排他制御装置、方法及びプログラムによると、コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐことができる。
【図面の簡単な説明】
【0020】
【図1】本発明の第1の実施形態に係る排他制御装置の構成を示すブロック図である。
【図2】本発明の第1の実施形態に係る排他制御装置におけるキャッシュ禁止テーブルの構成を示すブロック図である。
【図3】本発明の第1の実施形態に係る排他制御装置におけるページテーブルエントリの構成を示す図である。
【図4】本発明の第1の実施形態に係る排他制御装置の動作を示すフローチャートである。
【図5】本発明の第1の実施形態に係る排他制御装置におけるキャッシュ禁止領域指定部の動作を示すフローチャートである。
【図6】本発明の第1の実施形態に係る排他制御装置におけるキャッシュライン計算部の動作を示すフローチャートである。
【図7】本発明の第1の実施形態に係る排他制御装置におけるキャッシュ禁止部の動作を示すフローチャートである。
【図8】本発明の第2の実施形態に係る排他制御装置の構成を示すブロック図である。
【図9】本発明の第2の実施形態に係る排他制御装置の動作を示すフローチャートである。
【図10】本発明の実施例における構成を示すブロック図である。
【図11】本発明の実施例におけるページテーブルエントリの構成を示す図である。
【図12】本発明の実施例における動作を示すフローチャートである。
【図13】本発明の実施例におけるキャッシュ禁止領域指定部の動作を示すフローチャートである。
【図14】本発明の実施例におけるキャッシュライン計算部の動作を示すフローチャートである。
【図15】本発明の実施例におけるキャッシュ禁止部の動作を示すフローチャートである。
【図16】キャッシュシステムの構成を一例として示すブロック図である。
【図17】特許文献1に記載されたキャッシュシステムにおけるキャッシュメモリの構成を示すブロック図である。
【図18】特許文献1に記載されたキャッシュシステムにおける状態ビットを示す図である。
【発明を実施するための形態】
【0021】
第1の展開形態の排他制御装置は、キャッシュ禁止領域指定部、キャッシュライン計算部及びキャッシュ禁止部を有することが好ましい。キャッシュ禁止領域指定部は、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する。また、キャッシュライン計算部は、前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する。さらに、キャッシュ禁止部は、前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する。
【0022】
第2の展開形態の排他制御装置は、ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除するキャッシュ禁止領域解除部をさらに有することが好ましい。
【0023】
第3の展開形態の排他制御装置は、前記キャッシュ禁止領域指定部が、ユーザプロセスに対するプロセス管理情報に含まれるページテーブルを参照することにより、該ユーザプロセスから受信した論理アドレスを物理ページ番号に変換することが好ましい。
【0024】
第4の展開形態の排他制御装置は、前記コア間の通信に用いられるメインメモリの論理アドレスの範囲が、最初の論理アドレス及び最後の論理アドレスによって指定されるようにしてもよい。
【0025】
第5の展開形態の排他制御装置は、前記コア間の通信に用いられるメインメモリの論理アドレスの範囲が、最初の論理アドレス及び領域のサイズによって指定されるようにしてもよい。
【0026】
第6の展開形態の排他制御方法は、
コンピュータが、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する工程と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する工程と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する工程とを含むことが好ましい。
【0027】
第7の展開形態の排他制御方法は、ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する工程をさらに含むことが好ましい。
【0028】
第8の展開形態のプログラムは、
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する処理と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する処理と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する処理とをコンピュータに実行させることが好ましい。
【0029】
第9の展開形態のプログラムは、ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する処理をさらにコンピュータに実行させることが好ましい。
【0030】
本発明に係る排他制御装置によると、コア同士がキャッシュメモリを用いて通信を行っている場合に、コア間の通信速度の低下を防ぐことができる。その理由は、コア間で通信を行っている間、通信に用いられているキャッシュメモリに対して、非同期なプログラムからのアクセスを防ぐため、当該キャッシュメモリにおけるライトバックが発生しないからである。
【0031】
(実施形態1)
本発明の第1の実施形態に係る排他制御装置ついて、図面を参照して説明する。本実施形態に係る排他制御装置は、一例として、図16に示したコンピュータアーキテクチャ上に構築される。
【0032】
図1を参照すると、排他制御装置30は、キャッシュ禁止領域指定部31、キャッシュライン計算部32、キャッシュ禁止テーブル35、キャッシュ禁止部33及びプロセス管理情報36を有する。プロセス管理情報36は、ページテーブルエントリ37を含む。これらの各部は、次のように動作する。
【0033】
キャッシュ禁止領域指定部31は、ユーザプロセス100に対して、キャッシュメモリの使用禁止領域を指定する。ユーザプロセス100は、キャッシュ禁止領域指定部31に対して、これからコア間の通信に利用するメインメモリ3を論理アドレスで指定する。また、ユーザプロセス100は、キャッシュの利用禁止対象外とするプロセスのプロセスIDも同時に指定する。
【0034】
キャッシュ禁止領域指定部31は、当該論理アドレスを物理ページ番号43に変換してキャッシュライン計算部32に通知する。論理アドレスは、物理ページ番号43に1対1に変換される。メインメモリ3上の領域は、ページと呼ばれる単位で管理される。物理ページ番号43とは、ページ毎に付されたシーケンシャル番号をいう。物理ページ番号43への変換方法については、ページテーブルエントリ37の項で詳述する。
【0035】
論理アドレスの指定方法として、例えば、通信に利用するメインメモリ3の最初と最後の論理アドレスを指定する方法、又は、メインメモリ3の最初の論理アドレスと当該領域サイズを指定する方法を用いることができる。キャッシュ禁止領域指定部31の出力は、当該論理アドレスに対応した1つ以上の物理ページ番号43である。
【0036】
当該領域の最初と最後のアドレスが指定された場合には、これらの間の論理アドレスを補間した後、物理ページ番号43に変換される。当該領域の最初の論理アドレスと当該領域のサイズが指定された場合には、最初のアドレスから領域サイズ分の論理アドレスが計算され、それぞれの論理アドレスが物理ページ番号43に変換される。キャッシュ禁止領域指定部31は、キャッシュ禁止の対象外となるプロセスのリストをキャッシュ禁止テーブル35に格納しておく。
【0037】
キャッシュライン計算部32は、ある物理ページ番号43が使用することになるキャッシュラインを計算し、当該キャッシュラインを使用するメインメモリ3のブロック番号(物理ブロック番号42)をリスト化し、キャッシュ禁止テーブル35に格納する。
【0038】
キャッシュメモリ2は、メインメモリ3と比較して記憶容量が極めて少ない。したがって、メインメモリ3は、キャッシュメモリ2上のデータを必要に応じて入れ替えながら使用しなくてはならない。キャッシュメモリ2とメインメモリ3は、ブロックと呼ばれる単位でデータの入れ替えを行う。入れ替え場所の特定には、CPU特有のハッシュ関数が用いられ、一般に、MOD演算が用いられる。
【0039】
具体的には、キャッシュメモリ2が4ブロックの容量を有し、メインメモリ3が100ブロックの容量を有する場合、メインメモリ3の52ブロック目は、52 mod 4=0、すなわち、キャッシュメモリ2の1ブロック目に格納される。このように、メインメモリ3とキャッシュメモリ2のデータ入れ替え位置は、一意に決定される。このキャッシュメモリ2の入れ替え位置のことを、キャッシュラインと呼ぶ。
【0040】
キャッシュライン計算部32は、指定された物理アドレスの所属するメインメモリ3上のブロック番号を計算した後、当該ブロックが格納されるキャッシュラインを計算する。その後、当該キャッシュラインを利用する物理ブロック番号42をリスト化する。
【0041】
具体的には、キャッシュメモリ2が4ブロックの容量を持ち、メインメモリ3が100ブロックの容量を持っており、1ブロックあたり4つの物理アドレスから構成される場合、物理アドレス「15」は、メインメモリ3の4番目のブロックに所属する。メインメモリ3の4番目のブロックは上記MOD演算により、4 mod 4=0となり、キャッシュメモリ2の1ブロック目に格納される。キャッシュメモリ2の1ブロック目を利用するメインメモリ3のブロックは、0,4,8,12,…,96の25ブロックとなり、これらのブロック番号をリストとしてキャッシュ禁止テーブル35に格納しておく。
【0042】
キャッシュ禁止テーブル35は、キャッシュ禁止対象外プロセス41のリスト以外に、キャッシュライン計算部32で計算された物理ブロック番号42のリスト若しくは物理ページ番号43のリスト又は両方のリストを格納している。図2は、キャッシュ禁止テーブル35の一例を示す。
【0043】
キャッシュ禁止部33は、メインメモリ3の特定の領域に対してキャッシュメモリ2へのデータの転送を禁止する。ページは複数の物理ブロックから構成される。図2では、一つのページが4つのブロックを含む。キャッシュ禁止部33は、キャッシュ禁止テーブル35に含まれる物理ブロック番号42がいずれの物理ページ番号43に含まれているかを特定し、当該物理ページ番号43を格納しているページテーブルエントリ37に対して、キャッシュ禁止フラグ45を設定する。
【0044】
キャッシュ禁止フラグ45を設定する際は、キャッシュ禁止対象外プロセス41の情報も確認し、もしこれからキャッシュ禁止フラグ45を設定するページテーブルエントリ37がキャッシュ禁止対象外プロセス41のリストに存在する場合には、設定は行わない。
【0045】
キャッシュ禁止テーブル35が物理ページ番号43のリストを保持している場合には、物理ブロック番号42から物理ページ番号43への変換は実行せず、キャッシュ禁止テーブル35を利用してもよい。
【0046】
プロセス管理情報36は、排他制御装置30内に設けられたプロセスの実行状態を管理するための情報である。プロセス管理情報36は、プロセス構造体、ページテーブル等から構成され、ページテーブルエントリ37は、ページテーブルに含まれる1つのエントリをいう。プロセス管理情報36は、プロセス毎に設けられ、プロセスの生成及び終了に合わせて生成及び開放が行われる。
【0047】
ページテーブルエントリ37は、論理アドレスと物理アドレスの変換情報を提供する。図3にページテーブルエントリ37を示す。ページテーブルエントリ37はページテーブルの1つのエントリであり、ページテーブルはプロセス毎に設けられる。ページテーブルのインデックス番号は論理アドレスを表し、ページテーブルエントリ37には物理ページ番号43、ダーティーフラグ、キャッシュ禁止フラグ45、存在フラグ46等が格納されている。
【0048】
キャッシュ禁止フラグ45は、当該ページテーブルエントリ37が保持する物理ページ番号43に該当するページが、キャッシュメモリ2に展開されることを防ぐためのフラグである。
【0049】
存在フラグ46は、ページテーブルエントリ37に格納されている物理ページ番号43が有効であるか否かを示す。存在フラグ46が設定されている場合には、当該ページテーブルエントリ37に格納されている物理ページ番号43が有効であり、メインメモリ3にアクセスできることを表す。
【0050】
一方、存在フラグ46が設定されていない場合には、当該ページテーブルエントリ37に格納されている物理ページ番号43が無効であり、メインメモリ3上に当該ページが存在しない、すなわち、論理アドレスに対して物理ページが割り当てられていないことを表す。
【0051】
図4は、本実施形態に係る排他制御装置の動作を示すフローチャートである。
【0052】
まず、キャッシュ禁止領域指定部31は、ユーザプロセス100から受け取った論理アドレスを物理ページ番号43のリストに変換する(ステップS1)。論理アドレスを物理アドレスに変換する際には、論理アドレスを渡したユーザプロセス100に対するページテーブルを利用する。
【0053】
次に、キャッシュライン計算部32は、当該物理ページ番号43が使用するキャッシュラインを計算する(ステップS2)。
【0054】
次に、キャッシュライン計算部32は、当該キャッシュラインを使用する物理ページ番号43をリスト化する(ステップS3)。
【0055】
次に、キャッシュ禁止部33は、当該物理ページ番号43を使用しているページテーブルエントリ37を探し出す(ステップS4)。
【0056】
次に、キャッシュ禁止部33は、当該ページテーブルエントリ37のキャッシュ禁止フラグ45を設定する(ステップS5)。
【0057】
図5は、キャッシュ禁止領域指定部31の動作を示したフローチャートである。
【0058】
まず、ユーザプロセス100から当該領域の終端論理アドレスを受け取る(ステップS6)。
【0059】
次に、当該論理アドレスを含むページ数を計算しページインデックスをリスト化する(ステップS7)。
【0060】
ページ数がゼロの場合には(ステップS8のYes)、処理を終了する。
【0061】
ページ数がゼロではない場合には(ステップS8のNo)、ページインデックスリストからページインデックスを一つ取り出す(ステップS9)。
【0062】
次に、ページインデックスからページテーブルエントリを特定し、存在フラグ46を確認する(ステップS10)。
【0063】
ページが存在する場合には(ステップS11のYes)、当該エントリから物理ページ番号43を取り出し、物理ページ番号43リストに追加する(ステップS12)。
【0064】
次に、ページ数から1を差し引いて(ステップS13)、ステップS6に戻る。
【0065】
ページが存在しない場合には(ステップS11のNo)、ステップS12は実行しない。
【0066】
図6は、キャッシュライン計算部32の動作を示したフローチャートである。
【0067】
まず、物理ページ番号43のリストから物理ページ番号43を一つ取り出す(ステップS14)。
【0068】
この時点で物理ページ番号43が存在しない場合には(ステップS15のNo)、処理を終了する。
【0069】
物理ページ番号43が存在する場合には(ステップS15のYes)、次に物理ページ番号43とキャッシュライン数の剰余(mod)を計算する(ステップS16)。
【0070】
具体的には、キャッシュラインの総数が4である場合、物理ページ番号43の52は、52 mod 4=0、つまり、キャッシュラインの1番目から格納されることになる。
【0071】
上述のように、キャッシュメモリとメインメモリ3上のデータ送受信はブロックを単位として行われる。すなわち、キャッシュライン1つにつき1つのブロックが格納される。一方、物理ページは複数のブロックを含む。したがって、1つの物理ページを格納するために、複数のキャッシュラインが使用される。
【0072】
次に、当該キャッシュライン番号に該当する物理ページリストを作成する(ステップS17)。この物理ページリストはキャッシュ禁止テーブル35に格納される。次にステップS14に戻り、再度物理ページ番号43のリストから物理ページ番号43を1つ取り出す。
【0073】
図7は、キャッシュ禁止部33の動作を示すフローチャートである。
【0074】
まず、物理ページ番号43のリストから、物理ページ番号43を一つ取り出す(ステップS18)。
【0075】
この時点で物理ページ番号43が存在しない場合には(ステップS19のNo)、処理を終了する。
【0076】
物理ページ番号43が存在する場合には(ステップS19のYes)、当該物理ページ番号43を使用しているページテーブルエントリ37の有無を検索する(ステップS20)。
【0077】
当該物理ページ番号43を使用しているページテーブルエントリ37が存在し(ステップS21のYes)、キャッシュ禁止対象外プロセス41でない場合には(ステップS22のNo)、当該物理ページ番号43を使用しているページテーブルエントリ37に対してキャッシュ禁止フラグ45を設定して(ステップS23)、ステップS18に戻る。
【0078】
当該物理ページ番号43を使用しているページテーブルエントリ37が存在しない場合(ステップS21のNo)、又は、キャッシュ禁止対象外プロセス41である場合には(ステップS22のYes)、ステップS23を実行することなくステップS18に戻る。キャッシュ禁止対象外か否かは、キャッシュ禁止テーブル35の中のキャッシュ禁止対象外プロセス41リストを参照する。
【0079】
本実施形態に係る排他制御装置は、ユーザから指定されたメインメモリ3に相当するキャッシュメモリラインを計算し、当該領域に対して、他のプロセスからのアクセスを禁止する。したがって、コア間で通信を行っている間、通信に用いられているキャッシュメモリに対して、非同期なプログラムからのアクセスを防ぐことができる。
【0080】
(実施形態2)
本発明の第2の実施形態に係る排他制御装置について、図面を参照して説明する。図8は、本実施形態に係る排他制御装置50の構成を示すブロック図である。図8を参照すると、排他制御装置50は、第1の実施形態に係る排他制御装置30(図1)の構成に加えて、キャッシュ禁止領域解除部38を有する。
【0081】
キャッシュ禁止領域解除部38は、キャッシュが禁じられている物理ページのキャッシュ禁止フラグ45の設定を解除する。具体的には、ユーザプロセスからキャッシュ禁止を解除するメモリの論理アドレスを受け取り、それを物理アドレスに変換後、当該物理アドレスを利用しているページテーブルエントリのキャッシュ禁止フラグを解除する。
【0082】
次に、図9のフローチャートを参照して本実施形態の全体の動作について説明する。
【0083】
図9は、本発明全体の動作を示したフローチャートである。まず、排他制御装置50がユーザプロセス100から受け取った論理アドレスを物理ページ番号43のリストに変換する(ステップS23)。論理アドレスと物理アドレスの変換には、論理アドレスを渡したユーザプロセス100のページテーブルを用いる。
【0084】
次に、当該物理ページ番号43が使用するキャッシュラインを計算する(ステップS24)。
【0085】
次に、当該キャッシュラインを使用する物理ページ番号43をリスト化する(ステップS25)。
【0086】
次に、当該物理ページ番号43を使用しているページテーブルエントリ37を探し出す(ステップS26)。
【0087】
次に、当該ページテーブルエントリ37のキャッシュ禁止フラグ45を解除する(ステップS27)。
【0088】
本実施形態に係る排他制御装置50は、第1の実施形態に係る排他制御装置30の構成に加えて、キャッシュ禁止領域解除部38を有し、一度設定されたキャッシュ禁止フラグを解除することができる。これにより、通信が終了した後は当該通信領域においてもキャッシュメモリを利用することができる。したがって、本実施形態に係る排他制御装置によると、プロセッサ間通信の終了後におけるコンピュータの性能低下を防ぐことができる。
【実施例】
【0089】
次に、具体的な実施例に基づいて、本発明の実施形態に係る排他制御装置の動作を説明する。
【0090】
図10に示すように、キャッシュ禁止領域指定部31は、Linux OS60上のシステムコール(System Call)61の1つとして実装することができる。また、インテルアーキテクチャによると、図11に示すように、ページテーブルエントリ中の物理ページ番号43はページフレーム番号73、キャッシュ禁止フラグ45はキャッシュディスエーブルビット(Cache Disable Bit)75、存在フラグ46はプレゼントビット(Present Bit)76として実装されている。
【0091】
本発明の使用手順は以下のとおりである。まず、コア間通信を開始するユーザプロセスが通信のためのメインメモリ3を確保する。そして、当該メインメモリ3が使用するキャッシュメモリに対して上記第1の実施形態に係るキャッシュメモリ2を適用し、非同期プロセスからの当該キャッシュメモリ2へのアクセスを禁止させる。本発明を適用した後、通信を行う。通信には、一例として、特許文献1に記載された技術を用いることができる。通信の終了後は、上記第2の実施形態に係るキャッシュシステムの技術を用いて、当該メインメモリ3が使用するキャッシュメモリ2へのアクセス禁止を解除する。
【0092】
図12は、本実施例における動作を示すフローチャートである。
【0093】
まず、Linux OS60のシステムコール61は、ユーザプロセス100から受け取った論理アドレスをページフレーム番号73のリストに変換する(ステップS101)。論理アドレスと物理アドレスの変換には、論理アドレスを渡したユーザプロセス100に対するページテーブルを用いる。
【0094】
次に、キャッシュライン計算部62は、当該ページフレーム番号73が使用するキャッシュラインを計算する(ステップS102)。
【0095】
次に、キャッシュライン計算部62は、当該キャッシュラインを使用するページフレーム番号73をリスト化する(ステップS103)。
【0096】
次に、キャッシュ禁止部63は、当該ページフレーム番号73を使用しているページテーブルエントリ67を探し出す(ステップS104)。
【0097】
次に、キャッシュ禁止部63は、当該ページテーブルエントリ67のキャッシュディスエーブルビット75を設定する(ステップS105)。
【0098】
図13は、システムコール61の動作を示すフローチャートである。
【0099】
まず、ユーザプロセス100から当該領域の終端論理アドレスを受け取る(ステップS106)。
【0100】
次に、当該論理アドレスを含むページ数を計算しページインデックスをリスト化する(ステップS107)。
【0101】
ページ数がゼロの場合には(ステップS108のYes)、処理を終了する。
【0102】
ページ数がゼロではない場合には(ステップS108のNo)、ページインデックスリストからページインデックスを一つ取り出す(ステップS109)。
【0103】
次に、ページインデックスからページテーブルエントリを特定し、プレゼントビット76を確認する(ステップS110)。
【0104】
ページが存在する場合には(ステップS111のYes)、当該エントリからページフレーム番号73を取り出し、ページフレーム番号73リストに追加する(ステップS112)。
【0105】
次に、ページ数から1を引き(ステップS113)、ステップS106に戻る。
【0106】
ページが存在しない場合には(ステップS111のNo)、ステップS112は実行しない。
【0107】
図14は、キャッシュライン計算部62の動作を示すフローチャートである。キャッシュライン数とキャッシュの容量は、各アーキテクチャによって決められた数値が存在する。例えば、Intel(R) Core(TM)2 CPU E4300におけるキャッシュ容量は2Mバイト、ブロックサイズは64バイトであるため、キャッシュライン数は約32000となる。Linux OSでは、/procディレクトリ内にCPUアーキテクチャを特定する情報が含まれているため、この情報を用いて、キャッシュライン数とキャッシュの容量を特定する。
【0108】
まず、ページフレーム番号73のリストからページフレーム番号73を一つ取り出す(ステップS114)。
【0109】
この時点でページフレーム番号73が存在しない場合には(ステップS115のNo)、処理を終了する。
【0110】
ページフレーム番号73が存在する場合には(ステップS115のYes)、ページフレーム番号73とキャッシュライン数の剰余(mod)を計算する(ステップS116)。
【0111】
次に、当該キャッシュライン番号に該当する物理ページリストを作成する(ステップS117)。この物理ページリストはキャッシュ禁止テーブル65に格納される。次にステップS114に戻り、再度ページフレーム番号73のリストからページフレーム番号73を1つ取り出す。
【0112】
図15は、キャッシュ禁止部63の動作を示すフローチャートである。
【0113】
まず、ページフレーム番号73のリストから、ページフレーム番号73を1つ取り出す(ステップS118)。
【0114】
この時点でページフレーム番号73が存在しない場合には(ステップS119のNo)、処理を終了する。
【0115】
ページフレーム番号73が存在する場合には(ステップS119のYes)、当該ページフレーム番号73を使用しているページテーブルエントリ67の有無を検索する(ステップS120)。
【0116】
当該ページフレーム番号73を使用しているページテーブルエントリ67が存在し(ステップS121のYes)、キャッシュ禁止対象外のプロセスでない場合には(ステップS122のNo)、当該ページフレーム番号73を使用しているページテーブルエントリ67に対してキャッシュディスエーブルビット75を設定して(ステップS123)、ステップS118に戻る。
【0117】
当該ページフレーム番号73を使用しているページテーブルエントリ67が存在しない場合(ステップS121のNo)、又は、キャッシュ禁止対象外のプロセスである場合(ステップS122のYes)には、ステップS123は実行せず、ステップS118に戻る。キャッシュ禁止対象外か否かは、キャッシュ禁止テーブル65の中のキャッシュ禁止対象外プロセス(図2の41参照)リストを参照する。
【0118】
本発明に係る排他制御装置は、例えば、データセンタのサーバ、携帯端末など、キャッシュメモリを共有している複数のプロセッサを有し、当該プロセッサ上で複数の非同期なプログラムを実行しているコンピュータにおいて適用することができる。
【0119】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【0120】
1 CPU
2 キャッシュメモリ
3 メインメモリ
4_0〜4_N−1 コア
7 アドレスレジスタ
8 上位mビット
9 nビット
10 下位kビット
11 アドレスアレイ
12 データアレイ
13 上位mビット
14 状態他
15 ブロックデータ
16 比較器
17 コア番号
18 命令
19 キャッシュ制御ユニット
20 ブロック状態記憶部
21 ワード状態記憶部
22 コア0用 W(i)ビット
23 コア1用 W(i)ビット
24 コア2用 W(i)ビット
25 コア3用 W(i)ビット
30、50 排他制御装置
31 キャッシュ禁止領域指定部
32、62 キャッシュライン計算部
33、63 キャッシュ禁止部
35、65 キャッシュ禁止テーブル
36 プロセス管理情報
37、67 ページテーブルエントリ
38 キャッシュ禁止領域解除部
41 キャッシュ禁止対象外プロセス
42 物理ブロック番号
43 物理ページ番号
45 キャッシュ禁止フラグ
46 存在フラグ
60 OS(Operating System)
61 システムコール(System Call)
66 タスク構造体
73 ページフレーム番号
75 キャッシュディスエーブルビット(Cache Disable Bit)
76 プレゼントビット(Present Bit)
100 ユーザプロセス

【特許請求の範囲】
【請求項1】
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納するキャッシュ禁止領域指定部と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納するキャッシュライン計算部と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定するキャッシュ禁止部とを備えていることを特徴とする排他制御装置。
【請求項2】
ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除するキャッシュ禁止領域解除部をさらに備えていることを特徴とする、請求項1に記載の排他制御装置。
【請求項3】
前記キャッシュ禁止領域指定部は、ユーザプロセスに対するプロセス管理情報に含まれるページテーブルを参照することにより、該ユーザプロセスから受信した論理アドレスを物理ページ番号に変換することを特徴とする、請求項1又は2に記載の排他制御装置。
【請求項4】
前記コア間の通信に用いられるメインメモリの論理アドレスの範囲は、最初の論理アドレス及び最後の論理アドレスによって指定されることを特徴とする、請求項1乃至3のいずれか1項に記載の排他制御装置。
【請求項5】
前記コア間の通信に用いられるメインメモリの論理アドレスの範囲は、最初の論理アドレス及び領域のサイズによって指定されることを特徴とする、請求項1乃至3のいずれか1項に記載の排他制御装置。
【請求項6】
コンピュータが、ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する工程と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する工程と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する工程とを含むことを特徴とする排他制御方法。
【請求項7】
ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する工程をさらに含むことを特徴とする、請求項6に記載の排他制御方法。
【請求項8】
ユーザプロセスによってコア間の通信に用いられるメインメモリの論理アドレスを物理ページ番号に変換し、該ユーザプロセスと該物理ページ番号とを対応付けてキャッシュ禁止テーブルに格納する処理と、
前記物理ページ番号に対応するキャッシュラインを計算し、該キャッシュラインを使用する物理ブロック番号を前記キャッシュ禁止テーブルに格納する処理と、
前記キャッシュ禁止テーブルに格納された物理ページ番号が、前記キャッシュ禁止テーブルにおいて該物理ページ番号に対応付けられたユーザプロセス以外のユーザプロセスに対するプロセス管理情報のページテーブルエントリに存在する場合には、キャッシュを禁止するためのフラグを該ページテーブルエントリに設定する処理とをコンピュータに実行させることを特徴とするプログラム。
【請求項9】
ユーザプロセスがコア間の通信に用いるのを終了したメインメモリの論理アドレスを受け、該論理アドレスを物理ページ番号に変換し、該物理ページ番号に相当するページテーブルエントリにおける前記フラグの設定を解除する処理をさらにコンピュータに実行させることを特徴とする、請求項8に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2013−50745(P2013−50745A)
【公開日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願番号】特願2009−269159(P2009−269159)
【出願日】平成21年11月26日(2009.11.26)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】