(58)【調査した分野】(Int.Cl.,DB名)
アクセス対象であるメモリ空間の任意の一部のデータとそのデータに対応するメモリアドレス情報とをキャッシュライン単位で格納する本体部を備え、前記メモリ空間は複数のメモリ領域に区分され、
外部からアクセス要求のあったメモリアドレスが前記複数のメモリ領域のいずれに対応しているかに基づいて、前記アクセス要求のあったメモリアドレスからキャッシュメモリアドレスを生成するアドレス生成部をさらに備え、
前記アドレス生成部は、
各前記メモリ領域のメモリアドレスの範囲とキャッシュラインの範囲との対応関係を表すアドレス変換情報を格納するアドレス変換情報格納部と、
前記アドレス変換情報に基づいて、前記アクセス要求のあったメモリアドレスからキャッシュメモリアドレスを生成するアドレス変換部とを含み、
前記キャッシュメモリアドレスに従って前記本体部に対する検索が行われることによって、前記メモリ領域ごとに異なる範囲のキャッシュラインが検索および入れ替えの対象となる、キャッシュメモリ。
【発明を実施するための形態】
【0012】
以下、各実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【0013】
[キャッシュメモリのマッピング方式について]
最初に、キャッシュメモリのマッピング方式について簡単に説明する。代表的なマッピング方式には、フルアソシアティブ方式とダイレクトマップ方式とセットアソシアティブ方式とがある。
【0014】
以下の説明では、メモリアドレスの長さを16ビットとし、各メモリアドレスに1バイトのデータが対応している、すなわち、バイトアドレッシング(byte addressing)がサポートされているとする。キャッシュメモリのライン数を4ビット(=16個)とし、ラインサイズを4バイトとする。すなわち、各ラインには4個(=2ビット)のメモリアドレスが対応している。なお、上記の数値例等は一例であって、これに限定されるものではない。バイトアドレッシングに代えてワードアドレッシング(word addressing)がサポートされていても構わない。
【0015】
まず、フルアソシアティブ方式では、任意のメモリアドレスのデータが全キャッシュラインに格納可能である。具体的に上記の数値例の場合、各メモリアドレスは、上位の14ビットからなるタグ(tag)と下位の2ビットからなるオフセット(offset)とに区分される。キャッシュメモリの各ラインには、メモリアドレスのうちタグを格納するタグ格納部と、タグに対応する4バイトのラインデータを格納するデータ格納部とが設けられる。2ビットのビット長のオフセットは、ラインデータのうち検索対象のメモリアドレスに対応するデータを指定するために用いられる。
【0016】
上記のフルアソシアティブ方式の場合には、キャッシュメモリ内で空いている任意のラインにデータを格納することができるので、ヒット率は他のマッピング方式に比べて高くなる。しかしながら、データ読み出しの際には、メモリアドレスのタグの部分と全てのキャッシュラインのタグ格納部とを比較しなければならない。タグの比較を高速に行うためには連想メモリ(CAM:Content Addressable Memory)を実装する必要があり、回路規模が大きくなる。また、キャッスミスの場合には、最近最も使われていない(LRUの)ラインデータが入れ替えられる。
【0017】
次に、ダイレクトマップ方式は、メモリアドレスごとにデータが格納可能なキャッシュラインを1箇所に限定したものである。具体的に上記の数値例の場合、各メモリアドレスは、上位の10ビットからなるタグと、中位の4ビットからなるインデックス(index)と、下位の2ビットからなるオフセットに区分される。4ビットのビット長のインデックスによってデータが格納可能なキャッシュラインが指定される。キャッシュメモリには、メモリアドレスのタグを格納するタグ格納部と、4バイトのラインデータを格納するデータ格納部とが設けられる。
【0018】
上記のダイレクトマップ方式のキャッシュメモリにおいてデータ読み出しの際には、メモリアドレスのインデックス部分によって特定された1箇所キャッシュラインのタグ格納部とメモリアドレスのタグ部分とが比較される。したがって、データ比較は1回のみでよいが、ヒット率が低く、頻繁にキャッシュラインの入れ替えが発生するという問題がある。
【0019】
セットアソシアティブ方式は、フルアソシアティブ方式とダイレクトマップ方式との中間の方式である。ダイレクトマップ方式との違いは、インデックスごとに複数のキャッシュラインが設けられている点にある。各インデックスごとのキャッシュライン数をウェイ(way)と称する。たとえば、nウェイの場合には、各アドレスのデータは、n個のキャッシュラインに格納可能である。
【0020】
上記のセットアソシアティブ方式のキャッシュメモリにおいてデータ読み出しの際には、メモリアドレスのインデックス部分に対応するn個のウェイのタグ格納部とメモリアドレスのタグとが比較される。したがって、データ比較は最大でn回である。また、キャッシュミスの場合には、メモリアドレスのインデックス部分に対応するn個のウェイのうち、LRUのウェイのデータが入れ替えられる。
【0021】
[本開示のキャッシュメモリの制御方法の特徴]
本開示のキャッシュメモリでは、アクセス対象であるメモリ装置4のメモリ空間が複数の領域に区分される。そして、メモリ空間に設けられた領域ごとに使用するキャッシュメモリの領域(具体的には、キャッシュラインを識別するインデックス)が異なるようにキャッシュメモリが制御される。これにより、再利用性の高いデータが格納されるキャッシュメモリの領域と再利用性の低いデータが格納されるキャッシュメモリの領域とを分離することができる。結果として、再利用性が高いけれどもアクセス頻度の低いデータを格納しているキャッシュラインが再利用性の低いデータによって入れ替えられることを防止できるので、キャッシュ効率を高めることができる。
【0022】
上記のキャッシュメモリの制御方法は、セットアソシアティブ方式、ダイレクトマップ方式、およびフルアソシアティブ方式のいずれにも適用可能である。以下、実施の形態1では、セットアソシアティブ方式のキャッシュメモリに本開示の制御方法を適用した例について説明する。実施の形態2では、ダイレクトマップ方式のキャッシュメモリに本開示の制御方法を適用した例について説明し、実施の形態3では、フルアソシアティブ方式のキャッシュメモリンに本開示の制御方法を適用した例について説明する。
【0023】
実施の形態1.
[情報処理装置の一例]
図1は、実施の形態1のキャッシュメモリが実装された情報処理装置の構成の一例を示すブロック図である。
図1の情報処理装置の構成は、実施の形態2および実施の形態3にも適用可能である。
図1を参照して、情報処理装置は、演算装置1と、キャッシュメモリ2と、メモリアクセス制御部3と、メモリ装置4とを備える。
【0024】
演算装置1は、プログラムされた命令を実行するプロセッサの一部であってもよいし、ASIC(Application Specific Integrated Circuit)またはFPGA(Field Programmable Gate Array)によって構築された回路であってもよい。
【0025】
メモリ装置4は、演算装置1による処理のためのデータを保持する。メモリ装置4は、マイクロコンピュータのメインメモリに相当するものである。メモリ装置4は、たとえば、汎用的なDRAM(Dynamic Random Access Memory)によって構成される。
【0026】
キャッシュメモリ2は、演算装置1に比べて低速なメモリ装置4へのアクセスレイテンシを隠蔽するために設けられた高速メモリである。キャッシュメモリ2は、たとえば、SRAM(Static Random Access Memory)によって構成される。
【0027】
キャッシュメモリ2は、あるメモリアドレスに対するアクセス要求を演算装置1から受けると、当該メモリアドレスのデータがキャッシュメモリ2に配置されていれば、キャッシュメモリ2は演算装置1にアクセス応答を返す。一方、当該メモリアドレスのデータがキャッシュメモリ2に配置されていない場合には、キャッシュメモリ2は、メモリ装置4に対してアクセス要求を発行する。
【0028】
メモリアクセス制御部3は、キャッシュメモリ2からアクセス要求が発行された場合、当該アクセス要求をメモリ装置4のプロトコルに従ったコマンドに変換し、変換されたコマンドをメモリ装置4に出力する。これによって、メモリ装置4に対してデータ取得等を実行し、実行結果に基づいてキャッシュメモリ2にデータ等を出力する。
【0029】
キャッシュメモリ2は、メモリアクセス制御部3を介してメモリ装置4から、キャッシュミスとなったメモリアドレスに対応するデータを取得すると、取得したデータによってLRUのキャッシュラインのデータおよびメモリアドレス情報のリプレースを行う。このとき、リプレースされる前のデータをメモリ装置4に書込む、いわゆる、ライトバック動作が行われる。キャッシュメモリ2は、メモリ装置4から取得したデータを演算装置1に出力する。
【0030】
なお、
図1の情報処理装置の構成は一例であって、この構成に限定されるものでない。たとえば、演算装置1、キャッシュメモリ2、メモリアクセス制御部3、およびメモリ装置4は、それぞれ複数個設けられていてもよい。キャッシュメモリ2は階層的に構成されていてもよい。
【0031】
[キャッシュメモリの概略構成]
図2は、実施の形態1によるキャッシュメモリの構成の一例を示すブロック図である。
図2のキャッシュメモリ2のマッピング方式は、セットアソシアティブ方式である。インデックスを表す番号を0〜mとし、各インデックスに対応するウェイを表す番号を0〜nとしている。
図2では、主として、演算装置1が発行した命令が読出し命令の場合における、データの流れを矢印で示している。
【0032】
図2を参照して、キャッシュメモリ2は、アドレス生成部10と本体部20とを備える。本体部20は、アクセス対象であるメモリ装置4のメモリ空間の任意の一部のデータとそのデータに対応するメモリアドレス情報とをキャッシュライン単位で格納する。ここで、メモリ空間は複数のメモリ領域に区分され、各メモリ領域が異なる範囲のキャッシュラインに対応している。
【0033】
アドレス生成部10は、
図1の演算装置1等からアクセス要求のあったメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。生成されたキャッシュメモリアドレスCMAに従って本体部20に対する検索が行われることによって、メモリ領域ごとに異なる範囲のキャッシュラインが検索および入れ替えの対象となる。
【0034】
より詳細には、アドレス生成部10は、アドレス変換情報格納部14と、アドレス変換部12とを備える。アドレス変換部12は、アドレス変換情報格納部14に格納されているアドレス変換情報を参照することにより、入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。アドレス変換情報は、演算装置1等によって書き換え可能である。
【0035】
本体部20は、タグ格納部24と、データ格納部26と、LRUフラグ格納部28と、ライン選択部22と、選択タグ格納部30と、選択データ格納部32と、タグ比較およびデータ選択部34とを備える。
【0036】
以下、上記の各要素の動作について説明する。
[アドレス変換情報格納部]
図3は、メモリ空間の複数のメモリ領域とキャッシュラインとの対応付けについて説明するための図である。なお、一例として、キャッシュメモリ2のインデックス数を16(すなわち、
図2でm=15)とする。セットアソシアティブ方式の場合、各インデックスごとに複数のウェイ(
図2の例では、n+1個のウェイway(0)〜way(n))が設けられている。
【0037】
まず、アクセス対象であるメモリ装置4のメモリ空間は複数のメモリ領域に区分される。
図3の具体例では、メモリ装置4のメモリ空間は、メモリ領域R1とメモリ領域R2とその他のメモリ領域とに区分される。
【0038】
キャッシュメモリ2に関しては、上記の各メモリ領域に対して異なる範囲のキャッシュラインが対応する。
図3の具体例では、メモリ領域R1はキャッシュメモリのインデックス8〜11に対応する。たとえば、メモリ領域R1に対応するメモリアドレスMAに対してアクセス要求があった場合には、キャッシュメモリのインデックス8〜11のうちで該当するインデックスを有するキャッシュラインが検索対象になる。同様に、メモリ領域R2は、キャッシュメモリのインデックス12〜15に対応する。その他のメモリ領域は、キャッシュメモリのインデックス0〜7に対応する。
【0039】
上記において、たとえば、再利用性が高いけれどもアクセス頻度の低いデータをメモリ装置4のメモリ領域R1,R2に格納し、その他の再利用性の低いデータをその他のメモリ領域に格納するようにする。そうすると、キャッシュメモリの使用領域もデータの再利用性に応じて分離されるので、キャッシュ効率を高めることができる。
【0040】
図4は、アドレス変換情報について説明するための図である。
図4を参照して、アドレス変換情報は、
図3で説明したメモリ領域ごとに
図1の演算装置1等によって生成され、
図2のアドレス変換情報格納部14に格納される。具体的に、アドレス変換情報は、メモリ領域の開始アドレスと、メモリ領域のメモリサイズと、対応するキャッシュラインの開始インデックスと、対応するキャッシュラインの全インデックス数とを含む。実行するアプリケーションに応じて上記したアドレス変換情報(すなわち、キャッシュメモリの割り当て構成)が異なる場合には、演算装置1は、実行するアプリケーションに応じてアドレス変換情報を予め書き換える。
【0041】
図5は、
図3に対応するアドレス変換情報の具体例を示す図である。
図3および
図5を参照して、メモリ領域R1に対応するキャッシュラインの開始インデックスは8であり、対応する全インデックス数は4である。メモリ領域R2に対応するキャッシュラインの開始インデックスは12であり、対応する全インデックス数は4である。
【0042】
図5では、領域R1および領域R2以外を、メモリ全体を表すデフォルト領域としている。デフォルト領域に対応するキャッシュラインの開始インデックスは0であり、対応する全インデックス数は8である。
【0043】
[アドレス変換部]
図2を参照して、アドレス変換部12は、アドレス変換情報格納部14に格納されたアドレス変換情報を参照することにより、入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。
【0044】
ここで、セットアソシアティブ方式の場合、メモリアドレスMAおよびキャッシュメモリアドレスCMAは、上位ビットのタグと中位ビットのインデックスと下位ビットのオフセットとによって構成される。オフセットのビット長は、キャッシュメモリのラインサイズによって決まる。以下の説明では、一例として、バイトアドレッシングの場合においてラインサイズを4バイトであるとする。この場合、オフセットのビット長は2ビットである。また、以下の説明では、メモリアドレスMAの長さを16ビットとし、キャッシュメモリ全体でのインデックス数を16個(=4ビット)とする。
【0045】
以下、
図3および
図5に示す具体例の場合ついてアドレス変換部の動作を説明する。アドレス変換部12は以下の手順1〜3に従って入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。
【0046】
(手順1)
アドレス変換部12は、アドレス変換情報格納部14に格納されたアドレス変換情報の各メモリ領域の開始アドレスおよびメモリサイズを参照することによって、入力されたメモリアドレスMAが対応するメモリ領域を判定する。
図3の例では、メモリ領域R1、メモリ領域R2の順に判定し、該当しない場合はメモリ全体を示すデフォルト領域に対応すると判定される。
【0047】
(手順2)
次に、アドレス変換部12は、手順1で判定されたメモリ領域に対応するキャッシュラインの全インデックス数をアドレス変換情報格納部14から参照することにより、入力されたメモリアドレスMAのタグのビット長およびインデックスのビット長を判定する。なお、オフセットのビット長は2ビットであるとし、メモリアドレスMAのビット長は16ビットであるとしている。オフセットのビット長はラインサイズに応じて決まる固定値であり、メモリアドレスMAのビット長はハードウェアの制約等によって決まる固定値である。
【0048】
図6は、
図3の例において、入力されたメモリアドレスMAのタグ、インデックス、およびオフセットのビット長の判定結果を表形式で示す図である。
【0049】
図6と、アドレス変換情報を示す
図5とを参照して、メモリ領域R1の場合、対応するキャッシュラインの全インデックス数は4(=2ビット)であるので、タグのビット長が12ビット(すなわち、16−2−2=12)になり、インデックスのビット長が2ビットになり、オフセットのビット長が2ビットになる。
【0050】
メモリ領域R2の場合も同様に、対応するキャッシュラインの全インデックス数は4(=2ビット)であるので、タグのビット長が12ビットになり、インデックスのビット長が2ビットになり、オフセットのビット長が2ビットになる。
【0051】
デフォルト領域の場合、対応するキャッシュラインの全インデックス数は8(=3ビット)であるので、タグのビット長が11ビット(すなわち、16−3−2=11)になり、インデックスのビット長が3ビットになり、オフセットのビット長が2ビットになる。
【0052】
(手順3)
次に、アドレス変換部12は、手順1で判定されたメモリ領域に対応するキャッシュラインの開始インデックスをアドレス変換情報格納部14から参照することにより、キャッシュメモリアドレスCMAのタグ、インデックス、およびオフセットを生成する。具体的に、キャッシュメモリアドレスCMAのタグの値およびオフセットの値は入力されたメモリアドレスMAのものと同じであるが、キャッシュメモリアドレスCMAのインデックスの値は入力されたメモリアドレスMAのインデックスの値から変換される。なお、キャッシュメモリアドレスCMAのインデックスのビット長は、キャッシュメモリ全体のインデックス数である4ビット(=16個)に等しくなる。
【0053】
図7は、
図3の例において、入力されたメモリアドレスMAのインデックス部分の変換について説明するための図である。
【0054】
図7(A)と、アドレス変換情報を示す
図5とを参照して、メモリ領域R1の場合、対応するキャッシュラインの開始インデックスは8であるので、入力されたメモリアドレスMAの2ビットのインデックス0〜3(2進数で“00”〜“11”)がそれぞれ4ビットのインデックス8〜11(2進数で“1000”〜“1011”)に変換される。すなわち、入力されたメモリアドレスMAのインデックスに8(2進数で“1000”)が加算されることによって、キャッシュメモリアドレスCMAのインデックスが生成される。
【0055】
メモリ領域R2の場合、対応するキャッシュラインの開始インデックスは12であるので、入力されたメモリアドレスMAの2ビットのインデックス0〜3(2進数で“00”〜“11”)がそれぞれ4ビットのインデックス12〜15(2進数で“1100”〜“1111”)に変換される。すなわち、入力されたメモリアドレスMAのインデックスに12(2進数で“1100”)が加算されることによって、キャッシュメモリアドレスCMAのインデックスが生成される。
【0056】
デフォルト領域の場合、対応するキャッシュラインの開始インデックスは0であるので、入力されたメモリアドレスMAの3ビットのインデックス0〜7(2進数で“000”〜“111”)がそれぞれ4ビットのインデックス0〜7(2進数で“0000”〜“0111”)に変換される。すなわち、キャッシュメモリアドレスCMAのインデックスの値は、入力されたメモリアドレスMAのインデックスの値に等しい。
【0057】
図7(B)を参照して、本実施の形態のキャッシュメモリアドレスCMAのビット長に関して、タグ部分のビット長は14ビットに設定され、インデックス部分のビット長は4ビットに設定され、オフセット部分のビット長は2ビットに設定される。オフセット部分のビット長は、ラインサイズに応じて決まる固定値である。タグ部分のビット長およびインデックス部分のビット長は、キャッシュメモリ2の全インデックス数を変更した場合を考慮して、取り得る最大値に設定している。
【0058】
たとえば、キャッシュメモリサイズに応じた全インデックス数の最大値を16(4ビット)に仮定した場合、キャッシュメモリ2の全インデックス数は、16、8、4、2、1の各値をとり得る。全インデックス数が16の場合、インデックス部分のビット数は4ビットであり、タグ部分のビット数は10ビットである。同様に、全インデックス数が8、4、2、1の場合、インデックス部分のビット数はそれぞれ3、2、1、0ビットであり、タグ部分のビット数はそれぞれ11、12、13、14ビットである。したがって、インデックス部分のビット数の最大値は4ビットであり、タグ部分のビット数の最大値は14ビットである。
【0059】
なお、
図6に示すメモリアドレスMAをキャッシュメモリアドレスCMAに変換する場合、デフォルト領域に対応するタグ部分のビット長は、先頭に2進数で“000”が追加されることによって11ビットから14ビットに変換される。領域R1,R2に対応するタグ部分のビット長は、先頭に2進数で“00”が追加されることによって12ビットから14ビットに変換される。
【0060】
[タグ格納部]
タグ格納部24はタグと有効フラグとを格納する。有効フラグは各ラインが有効か否かを示すものである。初期状態では有効フラグは無効になっており、メモリ装置からデータおよびメモリアドレス情報が書き込まれると有効フラグが有効に書き換えられる。
【0061】
[データ格納部]
データ格納部26は、キャッシュラインごとに、タグおよびインデックスに対応する複数のデータを格納する。具体的には、オフセットのビット数に対応する個数分のデータがデータ格納部26に格納される。
【0062】
[LRUフラグ格納部]
LRUフラグ格納部28は、キャッシュラインごとにアクセスされた順序を表すLRUフラグを格納する。
【0063】
[ライン選択部]
ライン選択部22は、キャッシュメモリアドレスCMAに含まれるインデックスが示す複数のキャッシュライン、すなわち、m+1個のウェイway(0)〜way(n)を選択する。選択された複数のラインのタグおよび有効フラグは、選択タグ格納部30に格納される。また、選択された複数のラインのデータは、選択データ格納部32に格納される。
【0064】
[タグ比較およびデータ選択部]
タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと選択タグ格納部30に格納されている複数の選択ラインのタグとを比較する。この結果、キャッシュヒットの場合(すなわち、有効フラグが有効でありかつタグが一致するラインがあった場合)に、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるオフセットに基づいてデータを選択する。演算装置1が発行した命令が読出し命令の場合には、タグ比較およびデータ選択部34は、オフセットに基づいて選択されたデータを演算装置1に出力し、LRUフラグを更新する。
【0065】
一方、演算装置1が発行した命令が書き込み命令の場合でありかつキャッシュヒットの場合には、タグ比較およびデータ選択部34は、データ格納部26に格納されているキャッシュヒットしたラインデータのうち、入力されたメモリアドレスMAのオフセット(キャッシュメモリアドレスCMAのオフセットと同じ)に対応するデータを書き換える。さらに、タグ比較およびデータ選択部34は、LRUフラグを更新する。
【0066】
上記の比較の結果、タグが一致するラインが無く(すなわち、キャッシュミスであり)、有効フラグが無効のキャッシュラインがある場合、タグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読出し、タグ格納部24にタグおよび有効フラグを格納し、データ格納部26に読出したデータを格納し、LRUフラグ格納部28の該当するラインのLRUフラグを更新する。タグ比較およびデータ選択部34は、読出し命令の場合に、読み出したデータを演算装置1に出力する。一方、タグ比較およびデータ選択部34は、書き込み命令の場合に、データ格納部26に新たに格納されたラインデータにおいて、入力されたメモリアドレスMAのオフセット(キャッシュメモリアドレスCMAのオフセットと同じ)に対応するデータを書き換える。
【0067】
上記の比較の結果、タグの一致するラインが無く、有効フラグが無効のキャッシュラインが無い場合(すなわち、有効フラグが全て有効の場合)、タグ比較およびデータ選択部34は、最近最も使われていない(すなわち、LRUの)ラインを選択し、このLRUのラインデータをメモリ装置4に書込む(すなわち、ライトバックを行う)。次に、タグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読出し、タグ格納部24の該当するLRUラインにタグおよび有効フラグを格納し、データ格納部26の該当するLRUラインに読み出したデータを格納し、LRUフラグ格納部28のLRUフラグを更新する。タグ比較およびデータ選択部34は、読出し命令の場合に、入力されたメモリアドレスMAのオフセットに対応するデータを演算装置1に出力する。一方、タグ比較およびデータ選択部34は、書き込み命令の場合に、データ格納部26に新たに格納されたラインデータにおいて、入力されたメモリアドレスMAのオフセット(キャッシュメモリアドレスCMAのオフセットと同じ)に対応するデータを書き換える。
【0068】
[キャッシュメモリの動作のまとめ]
図8は、
図2のキャッシュメモリ動作の動作を示すフローチャートである。以下、
図2および
図8を主として参照してこれまでの説明を総括する。
【0069】
ステップS100において、アドレス変換部12にアクセス対象のメモリアドレスMAが入力される。次のステップS105において、アドレス変換部12は、アドレス変換情報に基づいて、入力されたメモリアドレスMAに対応するメモリ領域を判定する。次のステップS110において、アドレス変換部12は、アドレス変換情報に基づいて、入力されたメモリアドレスMAのタグ、インデックス、およびオフセットの各々のビット数を決定した上で、対応のメモリ領域のアドレス変換情報に基づいてインデックス部分を変換する。これによって、キャッシュメモリアドレスCMAが生成される。
【0070】
次のステップS115において、ライン選択部22は、キャッシュメモリアドレスCMAに含まれるインデックスが示す複数のキャッシュライン、すなわち、m+1個のウェイway(0)〜way(n)を選択する。次のステップS120において、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと各選択ラインのタグとを比較する。
【0071】
上記の比較の結果、有効フラグが有効でありかつタグが一致している選択ラインがある場合には(ステップS125でYES)、次のステップS130においてタグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるオフセットに基づいてデータを選択し、選択したデータに対して演算装置1からのアクセス要求に応じた処理を行う。さらに、ステップS135において該当するラインのLRUフラグが更新される。
【0072】
上記の比較の結果、タグが一致しているラインはないが、無効のラインがある場合には(ステップS125でNO、ステップS140でYES)、次のステップS145においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS150においてタグ比較およびデータ選択部34は、当該無効ラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。さらにステップS155においてタグ比較およびデータ選択部34は、該当するキャッシュラインのLRUフラグの更新を行う。
【0073】
上記の比較の結果、タグが一致しているラインがなく、無効のラインもない場合には(ステップS125でNO、ステップS140でNO)、次のステップS160においてタグ比較およびデータ選択部34は、選択ラインの中で最近最も使われていないラインを選択し、当該LRUラインのラインデータをメモリ装置にライトバックする。次のステップS165においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS170においてタグ比較およびデータ選択部34は、当該LRUラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。さらにステップS175においてタグ比較およびデータ選択部34は、該当するキャッシュラインのLRUフラグの更新を行う。
【0074】
[効果]
上記の構成のキャッシュメモリ2によれば、アプリケーションが扱うデータの種類に応じてキャッシュメモリにおいて使用するラインを分離することができる。これにより、再利用性の高いデータを格納するキャッシュメモリの領域と再利用性の低いデータを格納するキャッシュメモリの領域を分離することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられるのを抑制することがでる。この結果、キャッシュ効率を向上させることができる。
【0075】
実施の形態2.
実施の形態2では、キャッシュメモリのマッピング方式がダイレクトマップ方式である場合について説明する。
【0076】
図9は、実施の形態2によるキャッシュメモリの構成の一例を示すブロック図である。
図9のキャッシュメモリ2Aが
図2のキャッシュメモリ2と異なる点は、本体部20Aの構成である。具体的に、本体部20Aのキャッシュラインには各インデックスに対応するウェイが設けられておらず、さらに本体部20AはLRUフラグ格納部28を有していない。
図9のキャッシュメモリ2Aのその他の点は、
図2のキャッシュメモリ2と同様であるので同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【0077】
図10は、
図9のキャッシュメモリの動作を示すフローチャートである。
図9のフローチャートにおいて、実施の形態1の場合のフローチャートと同一または相当するステップには同一の参照符号を付して説明を繰返さない。
【0078】
図10を参照して、ステップS110において、キャッシュメモリアドレスCMAが生成される。このステップS110までの各ステップについては、本実施の形態のダイレクトマップ方式のキャッシュメモリ2Aの場合とセットアソシアティブ方式のキャッシュメモリ2の場合とで違いはない。
【0079】
次のステップS115において、ライン選択部22は、キャッシュメモリアドレスCMAに含まれるインデックスが示すラインを選択する。ダイレクトマップ方式のキャッシュメモリ2Aの場合には、このキャッシュラインは1個に限られる。次のステップS120において、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと選択ラインのタグとを比較する。
【0080】
上記の比較の結果、有効フラグが有効でありかつタグが一致している場合には(ステップS125でYES)、次のステップS130においてタグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるオフセットに基づいてデータを選択し、選択したデータに対して演算装置1からのアクセス要求に応じた処理を行う。
【0081】
上記の比較の結果、タグが一致しておらず、選択ラインの有効フラグが無効の場合には(ステップS125でNO、ステップS140でYES)、次のステップS145においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS150においてタグ比較およびデータ選択部34は、当該無効ラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。
【0082】
上記の比較の結果、タグが一致しておらず、選択ラインの有効フラグが有効の場合には(ステップS125でNO、ステップS140でNO)、次のステップS160においてタグ比較およびデータ選択部34は、当該選択ラインのラインデータをメモリ装置にライトバックする。次のステップS165においてタグ比較およびデータ選択部34は、入力されたメモリアドレスMAに対応するラインデータをメモリ装置4から読み出す。次のステップS170においてタグ比較およびデータ選択部34は、当該選択ラインに対してタグおよび読出したデータを格納し、有効フラグを有効にし、演算装置1からのアクセス要求に応じた処理を行う。
【0083】
上記のように、ダイレクトマップ方式の場合には選択ラインが1個に限られるのでLRUのラインを選択する必要はない。したがって、キャッシュメモリアドレスCMAに含まれるタグの値と選択ラインのタグの値との比較の結果、タグの値が一致していない場合には(すなわち、キャッシュミスの場合には)、当該選択ラインに対してデータのリプレースが行われる。
【0084】
上記の実施の形態2のキャッシュメモリ2Aにおいても、アプリケーションが扱うデータの種類に応じてキャッシュメモリにおいて使用するラインを分離することができる。これにより、再利用性の高いデータを格納するキャッシュメモリの領域と再利用性の低いデータを格納するキャッシュメモリの領域を分離することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられるのを抑制することができる。この結果、キャッシュ効率を向上させることができる。
【0085】
実施の形態3.
[キャッシュメモリ装置の概略構成]
実施の形態3では、キャッシュメモリのマッピング方式がフルアソシアティブ方式である場合について説明する。
図11は、実施の形態3によるキャッシュメモリの構成の一例を示すブロック図である。
【0086】
図11を参照して、フルアソシアティブ方式の場合、入力されたメモリアドレスMAは、上位ビットのタグと下位ビットのオフセットに区分され、インデックスが設けられていない。アドレス変換部12によって変換後のキャッシュメモリアドレスCMAには、インデックスに相当する付加情報がタグとオフセットとの間に追加される。この付加情報は1つのインデックスを指定するものでなく、インデックスの範囲(上限と下限)を指定するものである。このインデックスの範囲内の任意のキャッシュラインにデータおよびタグを格納することができる。これによって、アクセス対象であるメモリアドレスMAに対応するメモリ領域に応じて、使用するキャッシュラインの範囲を限定することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられることを抑制することができる。
【0087】
また、
図11のキャッシュメモリ2Bの場合、本体部20Bにウェイが設けられていない点で
図2の実施の形態1の場合と異なる。さらに
図11の場合には、選択タグ格納部30および選択データ格納部32が設けられていない。
図11のその他の構成は
図2の場合と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない場合がある。
【0088】
[アドレス変換部の動作]
以下、実施の形態1の場合と同じ具体例を用いて、アドレス変換部12の動作について説明する。メモリ領域とキャッシュラインの対応付けは
図3に示され、アドレス変換情報は
図5に示されている。また、メモリアドレスMAの長さを16ビットとし、キャッシュメモリ全体でのインデックス数を16個(=4ビット)とする(すなわち、
図11においてm=15)。オフセットのビット長は2ビットであるとする。
【0089】
上記の場合において、アドレス変換部12は以下の手順1および手順2に従って入力されたメモリアドレスMAからキャッシュメモリアドレスCMAを生成する。
【0090】
(手順1)
アドレス変換部12は、アドレス変換情報格納部14に格納されたアドレス変換情報の各メモリ領域の開始アドレスおよびメモリサイズを参照することによって、入力されたメモリアドレスMAが対応するメモリ領域を判定する。
図3の例では、メモリ領域R1、メモリ領域R2の順に判定し、該当しない場合はメモリ全体を示すデフォルト領域に対応すると判定される。
【0091】
図12は、
図3の例において、入力されたメモリアドレスMAのタグおよびオフセットのビット長を示す図である。フルアソシアティブ方式の場合、入力されたメモリアドレスMAは上位ビットのタグと下位ビットのオフセットに区分される。したがって、判定されたメモリ領域によらず、タグのビット長は14ビットであり、オフセットのビット長は2ビットである。
【0092】
(手順2)
次に、アドレス変換部12は、手順1で判定されたメモリ領域に対応するキャッシュラインの開始インデックスおよび全インデックス数をアドレス変換情報格納部14から参照することにより、入力されたメモリアドレスMAに付加する付加情報を生成する。
【0093】
図13は、
図3の例において、入力されたメモリアドレスMAに付加される付加情報について説明するための図である。
【0094】
図13(A)と、アドレス変換情報を示す
図5とを参照して、メモリ領域R1の場合、対応するキャッシュラインの開始インデックスは8であり、全インデックス数は4であるので、インデックスの下限8と上限11とを示す8ビットの情報(2進数で“10001011”)が付加情報として生成される。
【0095】
領域R2の場合、対応するキャッシュラインの開始インデックスは12であり、全インデックス数は4であるので、インデックスの下限12と上限15とを示す8ビットの情報(2進数で“11001111”)が付加情報として生成される。
【0096】
デフォルト領域の場合、対応するキャッシュラインの開始インデックスは0であり、全インデックス数は8であるので、インデックスの下限0と上限7とを示す8ビットの情報(2進数で“00000111”)が付加情報として生成される。
【0097】
図13(B)を参照して、生成された8ビットの付加情報が14ビットのタグと2ビットのオフセットの間に挿入されることによって、キャッシュメモリアドレスCMAが生成される。
【0098】
[キャッシュメモリの動作]
図14は、
図11のキャッシュメモリの動作を示すフローチャートである。
【0099】
図11および
図14を参照して、ステップS100において、アドレス変換部12にアクセス対象のメモリアドレスMAが入力される。次のステップS105において、アドレス変換部12は、アドレス変換情報に基づいて、入力されたメモリアドレスMAに対応するメモリ領域を判定する。次のステップS110において、アドレス変換部12は、判定されたメモリ領域に対応するアドレス変換情報に基づいて、入力されたメモリアドレスMAに付加すべき付加情報を決定する。付加情報は判定されたメモリ領域に対応するキャッシュラインの範囲を示している。入力されたメモリアドレスMAのタグとオフセットとの間に付加情報が挿入されることによって、キャッシュメモリアドレスCMAが生成される。
【0100】
次のステップS115Aにおいて、ライン選択部22は、キャッシュメモリアドレスCMAに含まれる付加情報が示す上限および下限の範囲内の複数のキャッシュラインを選択する。次のステップS120において、タグ比較およびデータ選択部34は、キャッシュメモリアドレスCMAに含まれるタグと各選択ラインのタグとを比較する。
【0101】
続くステップS125以降の手順は、
図8に示す実施の形態1の場合と同様である。したがって、同一または相当するステップには同一の参照符号を付して説明を繰返さない。
【0102】
[効果]
上記の実施の形態3のキャッシュメモリ2Bにおいても、アプリケーションが扱うデータの種類に応じてキャッシュメモリにおいて使用するラインを分離することができる。これにより、再利用性の高いデータを格納するキャッシュメモリの領域と再利用性の低いデータを格納するキャッシュメモリの領域を分離することができるので、再利用性の高いデータを格納しているキャッシュラインが再利用性の低いデータによって置き替えられるのを抑制することができる。この結果、キャッシュ効率を向上させることができる。
【0103】
実施の形態4.
実施の形態4では、実施の形態3の構成のキャッシュメモリ2Bを備えた情報処理装置によって2次元画像データに対するフィルタ処理を行った例について説明する。
【0104】
図15は、フィルタ処理の動作を説明するための図である。
図15を参照して、2次元画像データは2次元配列40上に展開されているとする。アドレスは左から右に、上から下に増加する。
図15の長方形42の枠内に4個のアドレスで表される横方向に並ぶ4ピクセル分のデータが格納されている。
【0105】
フィルタ処理は、
図15の縦3ピクセル、横3ピクセルの9個のデータ41の平均化処理を行うものである。フィルタ処理は2次元配列40の左上から開始され、左から右の方向に処理が進行する。右端まで処理が達すると、1ピクセル下の左端のデータから処理が開始される。以下同様に処理が繰り返される。
【0106】
メモリ空間において上記の2次元配列40を格納する領域が1つの特定メモリ領域として設定されているものとする。さらに、この特定メモリ領域に対応してキャッシュメモリには12ライン分のデータ領域が確保されているものとする。各ラインには長方形42の枠内の4ピクセル分のデータが格納される。
【0107】
上記の構成の場合において
図15(A)に示す2次元配列40の右端の位置までフィルタ処理が進行したとする。このとき、ドットのハンチングを付した12個の長方形の枠内のデータが特定メモリ領域に対応する12個のキャッシュラインに格納されている。ドットを付した領域の番号0〜11はLRUフラグを表しており、キャッシュラインへのアクセス時刻を示す。キャッシュメモリのラインデータは番号順にアクセスされている。
【0108】
図15(B)は、
図15(A)の次のステップの状態を示すものである。
図15(B)に示すようにフィルタ処理は、1ピクセル下の左端に移行する。このとき、最近最も使われていないLRUフラグ=0のラインが選択され、当該ラインに格納されているデータが、LRUフラグ=14で表されるデータに入れ替えられる。
【0109】
実施の形態3で説明したように、2次元画像データを格納する特定メモリ領域に対応する12個のキャッシュラインはフィルタ処理専用であるので、これらの12個のキャッシュラインのデータが他の処理のためのデータで書き換えられることはない。これによって、キャッシュ効率を向上させることができる。
【0110】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。