(57)【要約】【課題】ＭＭＰ方式と同等あるいはより少ないキャッシュ領域とする場合であっても、キャッシュヒット率がより高くなるようなアクセス制御キャッシュ装置及び方法を提供する。【解決手段】アドレス区間情報とアクセス許可情報とを関連付けるアクセス制御表の一部を記憶し、ライン毎にアクセスが可能なアクセス制御キャッシュと、ＣＰＵが実行しようとするプログラムのアセンブラ命令毎にオブジェクトコードを受け取ってラインを決定するライン決定装置と、決定されたアクセス制御キャッシュのラインをアクセスし、プログラムのアクセス先アドレスがアドレス区間情報に含まれる場合にキャッシュヒットと判定し、対応するアクセス許可情報を出力するキャッシュ判定装置と、を具備する。【選択図】図１
2008003919.tif 000002
【特許請求の範囲】
【請求項１】
アドレス区間情報とアクセス許可情報とを関連付けるアクセス制御表の一部を記憶し、ライン毎にアクセスが可能なアクセス制御キャッシュと、
ＣＰＵが実行しようとするプログラムのアセンブラ命令毎に、該アセンブラ命令のオブジェクトコードを受け取り、該オブジェクトコードに基づいて前記ラインを決定するライン決定装置と、
前記アクセス制御キャッシュの前記ラインをアクセスし、前記プログラムのアクセス先アドレスが前記アドレス区間情報に含まれる場合にキャッシュヒットと判定し、対応するアクセス許可情報を出力するキャッシュ判定装置と、を具備するアクセス制御キャッシュ装置。
【請求項２】
前記ライン決定装置はハッシュ関数を有し、前記オブジェクトコードを入力することにより前記ハッシュ関数から出力されるハッシュ値を前記ラインに決定する請求項１記載のアクセス制御キャッシュ装置。
【請求項３】
前記ライン決定装置は、複数のオブジェクトコードと、前記アクセス制御キャッシュの複数のラインとを対応付ける対応表を有する請求項１記載のアクセス制御キャッシュ装置。
【請求項４】
アドレス区間情報とアクセス許可情報とを関連付けるアクセス制御表の一部を記憶し、ライン毎にアクセスが可能なアクセス制御キャッシュと、
ＣＰＵが実行しようとするプログラムのアセンブラ命令毎が、メモリからデータを読み込むＲｅａｄ命令、データをメモリへ書き込むＷｒｉｔｅ命令、及び実行命令番地を変更するＥｘｅｃｕｔｅ命令のいずれの種類の命令であるかに応じて前記ラインを決定するライン決定装置と、
前記アクセス制御キャッシュの前記ラインをアクセスし、前記プログラムのアクセス先アドレスが前記アドレス区間情報に含まれる場合にキャッシュヒットと判定し、対応するアクセス許可情報を出力するキャッシュ判定装置と、を具備するアクセス制御キャッシュ装置。
【請求項５】
前記ライン決定装置はハッシュ関数を有し、前記命令の種類を示す識別子の値を入力することにより前記ハッシュ関数から出力されるハッシュ値を前記ラインに決定する請求項４記載のアクセス制御キャッシュ装置。
【請求項６】
前記ライン決定装置は、前記命令の種類と前記アクセス制御キャッシュの複数のラインとを対応付ける対応表を有する請求項４記載のアクセス制御キャッシュ装置。
【請求項７】
アドレス区間情報とアクセス許可情報とを関連付けるアクセス制御表の一部を記憶し、ライン毎にアクセスが可能なアクセス制御キャッシュを用いるキャッシュ判定方法であって、
ＣＰＵが実行しようとするプログラムのアセンブラ命令毎に、該アセンブラ命令のオブジェクトコードを受け取り、該オブジェクトコードに基づいて前記ラインを決定するライン決定ステップと、
前記アクセス制御キャッシュの前記ラインをアクセスし、前記プログラムのアクセス先アドレスが前記アドレス区間情報に含まれる場合にキャッシュヒットと判定し、対応するアクセス許可情報を出力するキャッシュ判定ステップと、を有するキャッシュ判定方法。
【請求項８】
アドレス区間情報とアクセス許可情報とを関連付けるアクセス制御表の一部を記憶し、ライン毎にアクセスが可能なアクセス制御キャッシュを用いるキャッシュ判定方法であって、
ＣＰＵが実行しようとするプログラムのアセンブラ命令毎が、メモリからデータを読み込むＲｅａｄ命令、データをメモリへ書き込むＷｒｉｔｅ命令、及び実行命令番地を変更するＥｘｅｃｕｔｅ命令のいずれの種類の命令であるかに応じて前記ラインを決定するライン決定ステップと、
前記アクセス制御キャッシュの前記ラインをアクセスし、前記プログラムのアクセス先アドレスが前記アドレス区間情報に含まれる場合にキャッシュヒットと判定し、対応するアクセス許可情報を出力するキャッシュ判定ステップと、を有するキャッシュ判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアクセス制御キャッシュの高速化に寄与する装置及び方法に関する。
【背景技術】
【０００２】
一般に、プログラムの命令毎にアクセス制御表の情報を参照すると実行速度が遅くなるため、高速なメモリからなるアクセス制御キャッシュ上にアクセス制御表の一部を配置するようにしている。そして、プログラム命令がアクセスしようとするメモリ領域に対するアクセス制御情報が同アクセス制御キャッシュ上に配置されていない場合（キャッシュミス）に限り、アクセス制御表を参照するようにしている。
【０００３】
既存の方法として、Ｍｏｎｄｏｒｉａｎ  Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ方式（ＭＭＰ；例えば下記非特許文献１を参照。）では、プログラムの実行環境が保持する汎用レジスタの本数に対応する分だけアクセス制御キャッシュ領域を用意し、プログラム命令がアクセスしようとするメモリアドレスを格納したレジスタ番号をキーとし、キーに対応するキャッシュ領域を参照している。
【非特許文献１】“Ｍｏｎｄｒｉａｎ  Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ”，Ｅｍｍｅｔｔ  Ｗｉｔｃｈｅｌ，Ｊｏｓｈ  Ｃａｔｅｓ，ａｎｄ  Ｋｒｓｔｅ  Ａｓａｎｏｖｉｃ，Ｔｅｎｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ｓｕｐｐｏｒｔ  ｆｏｒ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｌａｎｇｕａｇｅｓ  ａｎｄ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ（ＡＳＰＬＯＳ−Ｘ），Ｓａｎ  Ｊｏｓｅ，ＣＡ，Ｏｃｔｏｂｅｒ  ２００２．
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明はＭＭＰ方式と同等あるいはより少ないキャッシュ領域とする場合であっても、キャッシュヒット率がより高くなるようなアクセス制御キャッシュ装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一観点に係るアクセス制御キャッシュ装置は、アドレス区間情報とアクセス許可情報とを関連付けるアクセス制御表の一部を記憶し、ライン毎にアクセスが可能なアクセス制御キャッシュと、ＣＰＵが実行しようとするプログラムのアセンブラ命令毎に、該アセンブラ命令のオブジェクトコードを受け取り、該オブジェクトコードに基づいて前記ラインを決定するライン決定装置と、前記アクセス制御キャッシュの前記ラインをアクセスし、前記プログラムのアクセス先アドレスが前記アドレス区間情報に含まれる場合にキャッシュヒットと判定し、対応するアクセス許可情報を出力するキャッシュ判定装置と、を具備する。
【発明の効果】
【０００６】
本発明によれば、ＭＭＰ方式と同等あるいはより少ないキャッシュ領域とする場合であっても、キャッシュヒット率がより高くなるようなアクセス制御キャッシュ装置及び方法を提供できる。
【発明を実施するための最良の形態】
【０００７】
アクセス制御キャッシュ方式においてキャッシュのヒット率を上げるためには、プログラムの命令がアクセスしようとするメモリ領域を予測するための情報（キー）をうまく抽出し、参照するキャッシュ領域の決定に利用することが重要である。ＭＭＰ方式において、プログラムの命令がアクセスしようとするメモリアドレスを格納したレジスタ番号をキーとしているのは、プログラムの命令がアクセスしようとするメモリアドレスを格納したレジスタ番号と、実際にアクセスするメモリ領域との間に相関関係があることを仮定しているためである。
【０００８】
これに対し本実施形態に係るアクセス制御キャッシュ装置は、キャッシュのヒット率をより向上するために、汎用レジスタ番号ではなくプログラムが実行しようとするアセンブラ命令に基づく情報をキーとして用いることとする。プログラムの命令がアクセスしようとするメモリ領域の予測に、アセンブラ命令に基づくキーを利用することが有効である理由は次の通りである。すなわち、一般的にアセンブラ命令はメモリに書き込む命令（Ｗｒｉｔｅ命令）、メモリから読み出す命令（Ｒｅａｄ命令）、それ以外の実行命令番地が変更する命令（Ｅｘｅｃｕｔｅ命令）の３種類に分類することができる。一方、一般的にプログラムをコンパイルするコンパイラやリンカは、メモリ空間を、読み出しのみ許可する領域、読み書き可能な領域、実行命令を格納する領域等に区別し、プログラムを配置する。したがって、実行しようとするアセンブラ命令と実際にアクセスするメモリ領域との間には相関関係があると考えられる。
【０００９】
図１に示すように、一実施形態に係るアクセス制御キャッシュ装置１３は、図示しないメモリから読み出されたプログラム１０を実行するＣＰＵ（中央処理装置）１１に接続されており、例えば高速のＳＲＡＭ等からなるアクセス制御キャッシュ１８を制御するものである。
【００１０】
ＣＰＵ１１が実行しようとするアセンブラ命令又はアセンブラ命令の実行形式（Ｗｒｉｔｅ命令、Ｒｅａｄ命令、Ｅｘｅｃｕｔｅ命令）がライン決定装置１４に入力されると、ライン決定装置１４は、入力された情報を元に、参照するアクセス制御キャッシュ１８のラインを決定する。アクセス制御キャッシュ１８のラインが決定されると、連想度分のアドレス区間情報がキャッシュ判定装置１５に入力される。ここで、「連想度」とは、同時にいくつのキャッシュ内情報のキャッシュ判定が行えるかを表した数のことをいう。連想度の数だけキャッシュ判定装置１５が必要となる。例えば連想度が「３」であれば、キャッシュ判定装置１５は３台必要であり、３つのキャッシュ判定装置１５が並列動作することにより、並列的に３つのキャッシュ判定処理が実行される。
【００１１】
キャッシュ判定装置１５の各々はアセンブラ命令がアクセスしようとするメモリアドレスが、入力されたアドレス区間情報に含まれているかどうかを判定する。すなわち、アクセスしようとするメモリアドレスが含まれているアドレス区間情報が存在するならば、そのアドレス区間情報に対応するアクセス許可情報がマルチプレクサ１６から出力される。ＯＲ回路１７は、連想度に対応して複数設けられたいずれかのキャッシュ判定装置１５においてキャッシュヒットが発生したら、その旨を表す信号を出力する。
【００１２】
ライン決定装置１４は、ＣＰＵ１１が実行しようとするプログラムのアセンブラ命令毎に、アセンブラ命令のオブジェクトコード／命令の実行形式を受け取り、この受け取った情報からアクセス制御キャッシュ１８におけるラインを決定するものである。このライン決定装置１４について、図２乃至図５を参照していくつかの具体的構成例を説明する。
【００１３】
図２に示すライン決定装置１４ａは、ＣＰＵ１１が実行しようとするアセンブラ命令に対応するオブジェクトコードを入力とする。入力されたオブジェクトコードはライン決定装置１４ａ内部のハッシュ関数１４ａ１への入力となる。ライン決定装置１４ａはハッシュ関数１４ａ１からのハッシュ値を出力する。このハッシュ値がアクセス制御キャッシュ１８においてラインを選択する際のライン番号に用いられる。ここで、ハッシュ関数１４ａ１の入力と出力の関係は一対一である必要はない。すなわち、複数のオブジェクトコードに対して１つのライン番号を選択させることもできる。
【００１４】
図３に示すライン決定装置１４ｂは、図２に示したライン決定装置１４ａと同様にＣＰＵ１１が実行しようとするアセンブラ命令に対応するオブジェクトコードを入力とする。ライン決定装置１４ｂは、入力されたオブジェクトコードをキーとしてライン決定装置１４ｂ内部に設けられた対応表１４ｂ１を検索し、対応するライン番号を選択する。
【００１５】
図４に示すライン決定装置１４ｃは、ＣＰＵ１１が実行しようとするアセンブラ命令の種類（例えば、Ｒｅａｄ命令、Ｗｒｉｔｅ命令、又はＥｘｅｃｕｔｅ命令の３種類のいずれか）を表す情報（命令種別識別情報）を入力とする。Ｒｅａｄ命令とはアセンブラ命令がメモリからデータを読み込もうとする命令のことであり、Ｗｒｉｔｅ命令とはアセンブラ命令がデータをメモリへ書き込もうとする命令のことであり、Ｅｘｅｃｕｔｅ命令とは実行命令番地を変更する命令である。
【００１６】
入力された命令の種類はライン決定装置１４ｃ内部のハッシュ関数１４ｃ１の入力となる。ライン決定装置１４ｃはハッシュ関数１４ｃ１からのハッシュ値を出力する。このハッシュ値がアクセス制御キャッシュ１８においてラインを選択する際のライン番号に用いられる。ここで、ハッシュ関数の入力と出力の関係は一対一である必要はない。すなわち、複数の命令の種類に対して１つのライン番号を選択させることもできる。
【００１７】
図５に示すライン決定装置１４ｄは、図４に示したライン決定装置１４ｃと同様にＣＰＵ１１が実行しようとするアセンブラ命令の種類（例えば、Ｒｅａｄ命令、Ｗｒｉｔｅ命令、又はＥｘｅｃｕｔｅ命令の３種類のいずれか）を表す情報（命令種別識別情報）を入力とする。ライン決定装置１４ｄは、入力された命令の種類をキーとしてライン決定装置内１４ｄ内部の対応表１４ｄ１を検索し、対応するライン番号を選択する。
【００１８】
図６に示すように、アクセス情報キャッシュ１８内に格納されるアクセス制御表２０には、全メモリ区間に対するアクセス制御情報が記載される。各アクセス制御情報は、アドレス区間情報２１とアクセス許可情報２２とが含まれている。
【００１９】
本実施形態との比較のために、上述したＭＭＰ方式について図７を参照して説明する。
【００２０】
ＭＭＰ方式では、アクセス先アドレスを格納した汎用レジスタの番号３０をキーとして、参照するキャッシュ領域を決定する。ＭＭＰ方式のキャッシュ判定装置３１は、アクセス先アドレス３２が与えられると、アクセス先アドレスを格納した汎用レジスタ番号（この例ではレジスタ＃１）に対応するアドレス区間について、アクセス許可情報３３を得る。
【００２１】
このようなＭＭＰ方式と本実施形態について、命令セットシミュレータ上での実装例においてキャッシュミスが両者でどの程度発生するかを計測することにより比較した。以下、図８に示す本実施形態に係るアクセス制御キャッシュ装置の動作の流れに沿って説明する。図８の動作において、プログラムの実行速度にオーバーヘッドが発生するのはソフトウェア処理に移行するキャッシュミスが発生した場合のみであることから、キャッシュミスが減少するとオーバーヘッドも比例して減少する。
【００２２】
（ステップＳ１）  アクセス制御キャッシュ装置１３はプログラム１０が実行しようとする命令からキーを抽出する。上述したＭＭＰ方式では、アクセス先アドレスを格納した汎用アドレス番号をキーとする。これに対し本実施形態では、ＣＰＵ１１が実行するアセンブラ命令からキーを抽出する。具体的には、アセンブラ命令に対応するオブジェクトコードもしくはアセンブラ命令の種類をキーとする。
【００２３】
（ステップＳ２）  キーに対応するキャッシュ領域を参照する。ＭＭＰ方式では、キーとなる汎用レジスタ番号に対応するキャッシュ領域を参照する。本実施形態におけるプログラム実行環境では汎用レジスタが１６本あるので、全キャッシュ領域のサイズはアクセス制御情報１６個分である。
【００２４】
一方、本実施形態では、実行しようとするアセンブラ命令のオブジェクトコードもしくは実行形式から、ライン決定装置１４がハッシュ関数・対応表等を利用して、参照するキャッシュのラインを決定する（ライン決定装置１４の構成例については図２乃至図５を参照）。本実施形態において、キャッシュ領域のサイズは、例えば８個又は１２個のアクセス制御情報に相当する。
【００２５】
（ステップＳ３）アクセスしようとするアドレスは、アクセス制御キャッシュ１８内のアドレス区間情報に含まれているかをキャッシュ判定装置１５が判定する。含まれている場合はキャッシュヒットであり、含まれていない場合はキャッシュミスとなる。
【００２６】
（ステップＳ４）上記ステップＳ３においてキャッシュヒットの場合は、アクセス制御キャッシュ１８内で対応するアクセス許可情報が示す内容からアクセスの可否を判定する。
【００２７】
（ステップＳ５）上記ステップＳ４においてアクセス可であると判定されたならば、命令実行を継続する。
【００２８】
（ステップＳ６）上記ステップＳ４においてアクセス不可と判定された場合は命令実行をさせない（許可しない）。
【００２９】
（ステップＳ７）上記ステップＳ３において、キャッシュヒットしなかった場合は、ソフトウェア処理に移行し、アクセス制御表２０を二分探索し、対応するアクセス制御情報を探す。
【００３０】
（ステップＳ８）上記ステップＳ７において見つかったアクセス制御情報をアクセス制御キャッシュ１８に入れる（キャッシュを更新）。その際、該キャッシュ１８内の最も古いアクセス制御情報を該キャッシュ１８から追い出す（ＦＩＦＯ）。ステップＳ７及びＳ８によるソフトウェア処理では、時間オーバーヘッドが発生し、実行速度が低下する。
【００３１】
アクセス制御の対象としてプログラム１０及びそれらのプログラム１０から作成されるアクセス制御表２０に含まれるメモリ区間数は以下の通りであった。アクセス制御表２０におけるアドレス区間情報２１については、リンカがデフォルトの設定で、メモリ空間を読み出しのみ許可する領域、読み書き可能な領域、実行命令を格納する領域等に区別した時の各区間で分けている。また、アクセス制御表２０におけるアクセス許可情報２２は、リンカが設定する読み出しのみ許可する領域、読み書き可能な領域、実行命令を格納する領域に対応して、「ｒ−−」，「ｒｗ−」，「ｒ−ｅ」等を設定している（図６参照）。
【００３２】
アクセス制御の対象プログラム１０としては、例えば以下の２つを用いた。
【００３３】
（１）文字列検査アルゴリズム（文字列内から指定した文字列を探すプログラム）
（２）Ｄｉｊｋｓｔｒａアルゴリズム（与えられたグラフから最短経路を探すプログラム）
これらのプログラムは、ＭｉＢｅｎｃｈと呼ばれる米国ミシガン大のリリースする組込み用途ベンチマークキットに含まれているものである。
【００３４】
アクセス制御表２０に含まれるメモリ区間数は、文字列検査アルゴリズムについては１９個であり、Ｄｉｊｋｓｔｒａアルゴリズムについては２３個である。
【００３５】
ＭＭＰ方式については、今回使用した命令セットシミュレータは１６個の汎用レジスタをもっている。そこで、キーであるアクセス先アドレスを格納した汎用アドレス番号と一対一対応するようにキャッシュ領域のサイズをアクセス制御情報１６個分用意した。例えば、アクセス先アドレスを格納した汎用アドレス番号が１番なら１番目のキャッシュ領域を参照する（図７参照）。
【００３６】
本実施形態については、アセンブラ命令の実行形式（Ｒｅａｄ命令・Ｗｒｉｔｅ命令・Ｅｘｅｃｕｔｅ命令）をキーをして、キャッシュにおけるラインを選択する。ただし、連想度は４とした。上述したように、「連想度」とは同時にいくつのキャッシュ内情報のキャッシュ判定が行えるかを表した数のことである。連想度の数だけ図１における、キャッシュ判定装置１５が必要となる。また、本実施形態では下記条件１、２を与えた。
【００３７】
（条件１）：キャッシュにおけるラインを２本用意し、アセンブラ命令の実行形式が、Ｒｅａｄ命令又はＷｒｉｔｅ命令ならライン１を選択。Ｅｘｅｃｕｔｅ命令ならライン２を選択するようにハッシュ関数又は対応表をライン決定装置１４にもたせた場合（ライン数２、連想度４であるので、キャッシュサイズはアクセス制御情報８個分）。
【００３８】
（条件２）：キャッシュにおけるラインを３本用意し、アセンブラ命令の実行形式が、Ｒｅａｄキャッシュサイズ、Ｗｒｉｔｅ命令ならライン２、Ｅｘｅｃｕｔｅ命令ならライン３を選択するようにハッシュ関数又は対応表をライン決定装置１４にもたせた場合（ライン数３、連想度４であるので、キャッシュサイズはアクセス制御情報１２個分）
比較結果は以下の通りである。
【００３９】
（１）文字列検査アルゴリズムにおける比較結果
ＭＭＰ方式ではキャッシュミス回数は２０，６３９回であった。これに対し本実施形態（条件１）ではキャッシュミス回数は３，６９５回であり、対ＭＭＰ方式−８２．１％であった。また、本実施形態（条件２）ではキャッシュミス回数は２，８７２回であり、対ＭＭＰ方式−８６．１％であった。
【００４０】
（２）Ｄｉｊｋｓｔｒａアルゴリズムにおける比較結果
ＭＭＰ方式ではキャッシュミス回数は２３０，６５４回であった。これに対し本実施形態（条件１）ではキャッシュミス回数は１４８，９１５回であり、対ＭＭＰ方式−３５．４％であった。また、本実施形態（条件２）ではキャッシュミス回数は８８．６６６回であり、対ＭＭＰ方式−６１．６％であった。
【００４１】
これらの結果から、本実施形態はＭＭＰ方式よりも少ないキャッシュサイズで、約３５％〜８６％程度のキャッシュヒット率の向上が見込まれる。したがって、メモリアクセス制御を行うことによる時間的オーバーヘッドを少なくすることができる。
【００４２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４３】
【図１】一実施形態に係るアクセス制御キャッシュ装置を示すブロック図
【図２】図１に示すライン決定装置の具体例を示すブロック図
【図３】図１に示すライン決定装置の別の具体例を示すブロック図
【図４】図１に示すライン決定装置の別の具体例を示すブロック図
【図５】図１に示すライン決定装置の別の具体例を示すブロック図
【図６】アドレス制御表の構成図
【図７】ＭＭＰ方式について説明するためのブロック図
【図８】アクセス制御キャッシュ装置の動作の流れを示すフローチャート
【符号の説明】
【００４４】
１０…プログラム；
１１…ＣＰＵ（中央処理装置）；
１３…アクセス制御キャッシュ装置；
１４…ライン決定装置；
１５…キャッシュ判定装置；
１６…マルチプレクサ；
１７…ＯＲ回路；
１８…アクセス制御キャッシュ
【図１】
2008003919.tif 000003
【図２】
2008003919.tif 000004
【図３】
2008003919.tif 000005
【図４】
2008003919.tif 000006
【図５】
2008003919.tif 000007
【図６】
2008003919.tif 000008
【図７】
2008003919.tif 000009
【図８】
2008003919.tif 000010