(57)【要約】【課題】高いヒット率を達成しつつ、キャッシュメモリをより有効に利用するための技術を提供する。【解決手段】キャッシュアドレス５１を構成する第１及び第３のフィールド５１ａ及び５１ｃにはタグアドレス、第２のフィールド５１ｂにはインデックスアドレスのみ、或いはそれとラインアドレス、第４のフィールド５１ｄにはインデックスアドレスとラインアドレスがそれぞれ格納される。リードリクエストでは、第１及び第３のフィールド５１ａ及び５１ｃのタグアドレスはアドレス比較器５４に出力され、第２及び第４のフィールド５１ｂ及び５１ｄに格納されたインデックスアドレス、及びラインアドレスはブロックタイプ選択信号に応じてインデックスアドレス選択部５６により抽出され、それぞれタグ部５２、データセレクタ５５に出力される。【選択図】図５
2008033688.tif 000002
【特許請求の範囲】
【請求項１】
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられる方法であって、
前記キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第４のフィールドに分け、
前記第１及び第３のフィールドをタグアドレスの格納に用い、
前記第２及び第４のフィールドをそれぞれ１つ以上のサブフィールドに分け、１つ以上のサブフィールドをインデックスアドレス、残りのサブフィールドをラインアドレスの格納にそれぞれ用いる
ことを特徴とするキャッシュメモリ制御方法。
【請求項２】
前記第３のフィールドの配置、及びビット数は固定である
ことを特徴とする請求項１記載のキャッシュメモリ制御方法。
【請求項３】
前記第２及び第４のフィールドをそれぞれ分割するサブフィールドへのビット数の割り当ては、動的に変更する
ことを特徴とする請求項１、または２記載のキャッシュメモリ制御方法。
【請求項４】
前記インデックスアドレス、及びラインアドレスの格納にそれぞれ用いるサブフィールドのビット数の合計は固定である
ことを特徴とする請求項３記載のキャッシュメモリ制御方法。
【請求項５】
前記キャッシュメモリに格納するデータが画像を画素により分割した画像データだった場合、１エントリにデータを格納する画像ブロックの横方向に並ぶ画素数は前記第３のフィールドで前記ラインアドレス格納用に割り当てるサブフィールドのビット数により管理し、該画像ブロックの縦方向に並ぶライン数は前記第２のフィールドで該ラインアドレス格納用に割り当てるサブフィールドのビット数により管理する
ことを特徴とする請求項３、または４記載のキャッシュメモリ制御方法。
【請求項６】
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられる方法であって、
前記キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第５のフィールドに分け、
前記第１及び第３のフィールドをタグアドレスの格納に用い、
前記第２及び第４のフィールドをインデックスアドレスの格納に用い、
前記第５のフィールドをラインアドレスの格納に用いる
ことを特徴とするキャッシュメモリ制御方法。
【請求項７】
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられる方法であって、
前記キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第６のフィールドに分け、
前記第１及び第４のフィールドをタグアドレスの格納に用い、
前記第２及び第５のフィールドをインデックスアドレスの格納に用い、
前記第３及び第６のフィールドをラインアドレスの格納に用いる
ことを特徴とするキャッシュメモリ制御方法。
【請求項８】
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするキャッシュメモリ装置において、
前記キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第４のフィールドが配置されているとして、該第１及び第３のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、
前記第２及び第４のフィールドがそれぞれ１つ以上のサブフィールドから構成されているとして、１つ以上のサブフィールドに格納されたデータをインデックスアドレス、残りのサブフィールドに格納されたデータをラインアドレスとして抽出する第２の抽出手段と
を具備することを特徴とするキャッシュメモリ装置。
【請求項９】
前記第２の抽出手段は、外部からの指示に従って、前記第２及び第４のフィールドをそれぞれ構成しているとする１つ以上のサブフィールドのビット数を変更し、前記インデックスアドレス、及び前記ラインアドレスの抽出を行う
ことを特徴とする請求項８記載のキャッシュメモリ装置。
【請求項１０】
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするキャッシュメモリ装置において、
前記キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第５のフィールドが配置されているとして、該第１及び第３のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、
前記第２及び第４のフィールドに格納されたデータをインデックスアドレスとして抽出する第２の抽出手段と、
前記第５のフィールドに格納されたデータをラインアドレスとして抽出する第３の抽出手段と
を具備することを特徴とするキャッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エントリ毎に、データを格納するデータ部、及びそのデータの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするための技術に関する。
【背景技術】
【０００２】
メインメモリと比較して高速なキャッシュメモリは現在、データ処理をより高速に行うために必須のものとなっている。指定されたアドレスに従ってキャッシュメモリにアクセスするキャッシュメモリ装置には、ＣＰＵ内部に実装されるものと、その外部に用意されるものとがある。
【０００３】
図１Ａは、従来のキャッシュメモリ装置の構成を説明する図であり、図１Ｂは、そのキャッシュメモリに格納されるメインメモリ内のデータの配置を説明する図である。その図１Ｂは、１画素当たり１バイトの画像データをメインメモリに格納した場合の各画素データの配置例を示したものである。その画像データは、横方向は１０２４画素、縦方向は１０２４ラインに分割した画像のものであり、画素データは座標に対応する位置に配置された形となっている。
【０００４】
図１Ａに示すように、従来のキャッシュメモリ装置を構成するキャッシュメモリは、エントリ毎に、タグアドレスを格納するタグ部１２、及びデータを格納するデータ部１３からなる。ＣＰＵ等から指定されるアドレス１１は、最上位ビット側から、タグアドレス、インデックスアドレス、及びラインアドレスがそれぞれ格納されるフィールド１１ａ〜ｃが配置された構成となっている。タグアドレスは、格納した、或いは格納するデータの索引用である。インデックスアドレスは、エントリ（番号）を指定するものである。ラインアドレスは、インデックスアドレスで指定されるエントリに格納した、或いは格納するデータを指定するものである。ここでは、１アドレスのデータは１バイトとし、１エントリ（ブロック）に１６バイトのデータ（１６画素分のデータ）を格納できると想定する。エントリ数は２５６とする。アドレス１１については、最上位ビットから、タグアドレス用に２０ビット、インデックスアドレス用に８ビット、ラインアドレス用に４ビットがそれぞれ割り当てられていると想定する。混乱を避けるために以降、「キャッシュアドレス」と呼ぶことにする。
【０００５】
次に動作を説明する。
データ部１３からデータを読み出すためのリードリクエストが行われた場合、インデックスアドレスで指定されるエントリのタグアドレスがタグ部１２から読み出され、アドレス比較器１４によりキャッシュアドレス１１中のタグアドレスと比較され、その比較結果がヒット情報として出力される。そのヒット情報は、それらのタグアドレスが一致すれば対象のデータが存在する、つまりヒットしたことを示すものとなり、逆に一致しなければ対象のデータは存在しない、つまりミスヒットしたことを示すものとなる。それにより、ヒットしたことを示すヒット情報がアドレス比較器１４から出力された場合、インデックスアドレスで指定のエントリに格納されたデータがデータ部１３から読み出されて処理される。
【０００６】
一方、データ部１３にデータを格納するためのライトリクエストが行われた場合には、タグ部１２のインデックスアドレスで指定されるエントリにキャッシュアドレス１１のタグアドレスが格納され、キャッシュアドレス１１のラインアドレスに従ってデータがデータ部１３に格納される。
【０００７】
キャッシュアドレス１１において、フィールド１１ｂに格納されたインデックスアドレスはライン上の位置を示すものとなっている。１エントリには１６画素分のデータを格納できるようになっている。それにより図１Ｂに示すように、１ラインは６４（＝１０２４／１６）ブロック（エントリ）分のデータとなっている。図１Ｂにおいて、４ラインの範囲内に「０」「１」或いは「２５５」を表記した枠はそれぞれ１エントリ分のデータを表している。それにより、横方向（１ライン）に１０２４画素が並んでいる場合には、４ライン分のデータの格納に２５６エントリが必要なことを表している。
【０００８】
図１Ａに示す従来のキャッシュメモリ装置は、ダイレクトマップ方式を採用したものである。ダイレクトマップ方式では、タグアドレスに対応するデータを格納できるエントリ（空間）は1つのみである。同じインデックスアドレスを持ち、タグアドレスが異なるブロックのデータはそのうちの1つしか格納できない。フィールド１１ｂに格納されたインデックスアドレスはライン上の位置を示すものとなっている。このため、図２に示すように、例えば１６×１６ブロック（横１６画素×縦１６ライン）のデータを処理する場合であっても、そのうちの１ライン分のデータしかキャッシュメモリに格納することができない。それにより、ヒット率は極めて小さいものとなる。つまりミスヒットによりデータを書き換えるリプレースが多発して、処理性能は大きく低下する。図２中の「ｉｎｄｅｘ
ｉ」は処理対象とする１６×１６ブロック内のデータに対応するインデックスアドレスを表している。
【０００９】
画像処理では、１６×１６ブロックのような矩形状のブロック単位で処理を行うことが多い。しかし、図１Ａに示す従来のキャッシュメモリ装置では、縦方向に並ぶ複数ラインのデータをキャッシュメモリに格納することができない。このことから従来のキャッシュメモリ装置のなかには、特許文献１〜３にそれぞれ記載されているように、縦方向に並ぶ複数ラインのデータをキャッシュメモリに格納できるようにしたものがある。
【００１０】
図１Ａに示すキャッシュアドレス１１は、上述したように最上位ビット側から、タグアドレス、インデックスアドレス、及びラインアドレスがそれぞれ格納されるフィールド１１ａ〜ｃが配置された構成となっている。特許文献１に記載の従来のキャッシュメモリ装置では、最上位ビット側から、タグアドレス、第１のインデックスアドレス、第１のラインアドレス、第２のインデックスアドレス、及び第２のラインアドレスがそれぞれ格納されるフィールドが配置された構成をキャッシュアドレス１１に採用している。それにより、第１及び第２のインデックスアドレスによりエントリを指定し、第１及び第２のラインアドレスによりエントリ内のアドレスを指定するようにしている。そのようにして、横方向は第２のラインアドレス格納用のフィールドに割り当てたビット数に応じた画素数、縦方向は第１のラインアドレス格納用のフィールドに割り当てたビット数に応じたライン数のブロック分のデータを１エントリに格納できるようにしている。このため、例えば前者、後者ともに２ビットであれば４×４ブロック分のデータを１エントリに格納することができる。
【００１１】
画像処理では、隣接ブロックの参照も良く行われる。そのブロックの縦方向に隣接するブロックのデータは、タグアドレス、及び第１のインデックスアドレスを変更することで別のエントリに格納することができる。このため、縦方向に並ぶ画素データのアクセスはリプレースすることなく行えるようになる。しかし、横方向に隣接するブロックでは、タグアドレスは同じとなるため、そのデータを別のエントリに格納することはできない。つまり横方向に隣接するブロックのデータはリプレースによりキャッシュメモリに格納しなければならない。このため、画像処理を行う場合には、ヒット率の改善は期待できなかった。
【００１２】
特許文献２に記載の従来のキャッシュメモリ装置では、最上位ビット側から、第１のタグアドレス、インデックスアドレス、第２のタグアドレス、及びラインアドレスがそれぞれ格納されるフィールドが配置された構成をキャッシュアドレス１１に採用している。ライン上の画素の位置を示す下位ビットをラインアドレス、その上位ビットを第２のタグアドレスとしている。それにより、縦方向に隣接するブロック（ここでは１ライン上に並ぶ複数画素からなるブロック）のデータを異なるエントリに格納できるようにしている。しかし、ライン上の画素の位置を示す下位ビットをラインアドレス、その上位ビットを第２のタグアドレスとしていることから、図３に示すように、同じラインではインデックスアドレスの値は同一となる。このため、横方向に隣接するブロックのデータは別のエントリに格納することはできない。従って、画像処理を行う場合には、ヒット率の改善は期待できなかった。
【００１３】
上記特許文献２には他に、最上位ビット側から、第１のタグアドレス、第１のインデックスアドレス、第２のタグアドレス、第１のラインアドレス、第２のインデックスアドレス、第３のタグアドレス、及び第２のラインアドレスがそれぞれ格納されるフィールドが配置された構成をキャッシュアドレス１１に採用の他の従来のキャッシュメモリ装置が記載されている。アドレス１１を７つのフィールドに分割し、２つのラインアドレスにそれぞれ対応付けた形で２つのタグアドレスを配置することにより、横方向、及び縦方向ともに、隣接するブロックのデータを異なるエントリに格納できるようになっている。このため、ヒット率は大幅に改善することができる。
【００１４】
前者、後者ともに、画像データとしては横方向は１０２４画素、縦方向は１０２４ラインに分割した画像のものを想定している。１画素データは１バイトである。エントリ数は２５６である。このため、横方向における画素の位置を表すのに１０ビット、縦方向におけるラインの位置を表すのに１０ビット必要である。後者では、横方向、及び縦方向ともに、必要な１０ビットに４ビットを加え、それら４ビットをそれぞれ第３及び第２のインデックスアドレス格納用のフィールドとして用いている。
【００１５】
そのような２つのインデックスアドレス（フィールド）を追加することにより、キャッシュアドレス１１に必要なビット数はより多くなる。それにより、ビット数がデータバス、或いはレジスタのビット幅を越えるものとなる可能性がある。アドレス１１に必要な前者、及び特許文献１に記載の従来のキャッシュメモリ装置では、メインメモリ上のデータの格納位置からそのデータを格納するエントリを自動的に決定する形となっている。２つのインデックスアドレスを追加した場合、データを格納すべきエントリに格納するように、その２つのインデックスアドレスを決定しなければならない。そのような決定を行わなければならないため、アクセス制御はより複雑なものとなる。このようなことから、２つのインデックスアドレスを追加することは望ましくないと言える。
【００１６】
特許文献３に記載の従来のキャッシュメモリ装置では、縦方向におけるラインの位置を示す座標ｙ、横方向における画素の位置を示す座標ｘをそれぞれ格納するためのフィールドが配置された構成をキャッシュアドレス１１に採用している。各フィールドを２つのサブフィールドに分け、最上位ビット側から、座標ｙの下位ビット、座標ｘの下位ビットを配置したものをインデックスアドレスとしている。タグアドレスは、最上位ビット側から、座標ｙの上位ビット、座標ｘの上位ビットを配置したものとしている。座標ｘ、ｙを表すビット列を２つに分け、一方をタグアドレス、他方をインデックスアドレスとして用いることにより、横方向、及び縦方向ともに、隣接するブロックのデータを異なるエントリに格納できるようになっている。このため、ヒット率は大幅に改善することができる。また、座標ｘ、ｙを表すビット列の分け方を変更することにより、図４に示すように、キャッシュメモリにデータを格納する画像データの範囲（形状）を変更するようになっている。図４中、「０」「１」を表記した枠はそれぞれ１エントリ分のデータを表している。
【００１７】
特許文献３に記載の従来のキャッシュメモリ装置では、キャッシュメモリへのデータの格納、及び読み出しはエントリ単位で行うようになっている。エントリ単位で行うために、１エントリに格納するデータは予め定めた固定形状のブロックのデータ（横方向に並ぶ複数画素のデータ）としている。
【００１８】
処理性能の向上のためには、キャッシュメモリにアクセスする回数をより少なくすることも重要である。固定形状のブロックのデータを各エントリに格納する場合、その形状と処理対象とするデータの関係によってアクセス回数が増える可能性がある。例えば固定形状のブロックが横方向に並ぶ１６画素であった場合、４×４ブロックの画素データを全て読み出すには４回の読み出しを行わなくてはならない。このことから、ブロックの形状は必要に応じて変更できるようにすることが望ましいと言える。その変更を行えるようにすることにより、キャッシュメモリはより有効に利用できるようになると考えられる。
【特許文献１】特開平５−５３９０９号公報
【特許文献２】特開平９−１０１９１５号公報
【特許文献３】特開平１０−１５４２３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
本発明は、以上のことに鑑みてなされたものであり、高いヒット率を達成しつつ、キャッシュメモリをより有効に利用するための技術を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の第１〜第３の態様のキャッシュメモリ制御方法は共に、エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられることを前提とし、それぞれ以下のようにアクセス制御を行う。
【００２１】
第１の態様のキャッシュメモリ制御方法では、キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第４のフィールドに分け、第１及び第３のフィールドをタグアドレスの格納に用い、第２及び第４のフィールドをそれぞれ１つ以上のサブフィールドに分け、１つ以上のサブフィールドをインデックスアドレス、残りのサブフィールドをラインアドレスの格納にそれぞれ用いる。
【００２２】
なお、上記第３のフィールドの配置、及びビット数は固定であることが望ましい。また、第２及び第４のフィールドをそれぞれ分割するサブフィールドへのビット数の割り当ては、動的に変更する、ことが望ましい。また、インデックスアドレス、及びラインアドレスの格納にそれぞれ用いるサブフィールドのビット数の合計は固定であることが望ましい。キャッシュメモリに格納するデータが画像を画素により分割した画像データだった場合、１エントリにデータを格納する画像ブロックの横方向に並ぶ画素数は第３のフィールドでラインアドレス格納用に割り当てるサブフィールドのビット数により管理し、該画像ブロックの縦方向に並ぶライン数は第２のフィールドで該ラインアドレス格納用に割り当てるサブフィールドのビット数により管理することが望ましい。
【００２３】
第２の態様のキャッシュメモリ制御方法では、キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第５のフィールドに分け、第１及び第３のフィールドをタグアドレスの格納に用い、第２及び第４のフィールドをインデックスアドレスの格納に用い、第５のフィールドをラインアドレスの格納に用いる。
【００２４】
第３の態様のキャッシュメモリ制御方法では、キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第６のフィールドに分け、第１及び第４のフィールドをタグアドレスの格納に用い、第２及び第５のフィールドをインデックスアドレスの格納に用い、第３及び第６のフィールドをラインアドレスの格納に用いる。
【００２５】
本発明の第１、及び第２のキャッシュメモリ装置は共に、エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするものであり、それぞれ以下の手段を具備する。
【００２６】
第１の態様のキャッシュメモリ装置は、キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第４のフィールドが配置されているとして、該第１及び第３のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、第２及び第４のフィールドがそれぞれ１つ以上のサブフィールドから構成されているとして、１つ以上のサブフィールドに格納されたデータをインデックスアドレス、残りのサブフィールドに格納されたデータをラインアドレスとして抽出する第２の抽出手段とを具備する。
【００２７】
なお、上記第２の抽出手段は、外部からの指示に従って、第２及び第４のフィールドをそれぞれ構成しているとする１つ以上のサブフィールドのビット数を変更し、インデックスアドレス、及びラインアドレスの抽出を行うことが望ましい。
【００２８】
第２の態様のキャッシュメモリ装置は、キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第５のフィールドが配置されているとして、該第１及び第３のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、第２及び第４のフィールドに格納されたデータをインデックスアドレスとして抽出する第２の抽出手段と、第５のフィールドに格納されたデータをラインアドレスとして抽出する第３の抽出手段とを具備する。
【発明の効果】
【００２９】
本発明では、キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第４のフィールドに分け、第１及び第３のフィールドをタグアドレスの格納に用い、第２及び第４のフィールドをそれぞれ１つ以上のサブフィールドに分け、１つ以上のサブフィールドをインデックスアドレス、残りのサブフィールドをラインアドレスの格納にそれぞれ用いる。例えば第２のフィールドを１つのサブフィールドとしてインデックスアドレスの格納に用い、第４のフィールドを２つのサブフィールドに分け、一方をインデックスアドレス、他方をラインアドレスの格納にそれぞれ用いる。或いは、第２及び第４のフィールドをそれぞれ２つのサブフィールドに分け、一方をインデックスアドレス、他方をラインアドレスの格納にそれぞれ用いる。
【００３０】
キャッシュメモリに格納するデータが画像を画素により分解した画像データを例にとれば、第４のフィールドのデータをインデックスアドレスとして利用することにより、１エントリにデータが格納されるブロック（画像ブロック）の横方向に位置するブロックとインデックスアドレスを異ならせることができる。縦方向に位置するブロックとは、第２のフィールドのデータをインデックスアドレスとして利用することにより、異ならせることができる。このため、横方向、及び縦方向の何れの方向であっても、その方向上に並ぶ複数のブロックのデータを異なるエントリに格納することができる。そのブロックの形状は、第２及び第４のフィールドでそれぞれインデックスアドレスの格納用とするビット数により管理することができる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図５は、本実施の形態によるキャッシュメモリ装置の構成を説明する図である。
図５に示すように、本実施の形態によるキャッシュメモリ装置５０を構成するキャッシュメモリは、エントリ毎に、タグアドレスを格納するタグ部５２、及びデータを格納するデータ部５３からなる。そのキャッシュメモリにアクセスするための構成として、アドレス比較器５４、データセレクタ５５、及びインデックスアドレス選択部５６を備えている。
【００３２】
ＣＰＵ等から指定されるアドレス（キャッシュアドレス）５１は、図５に示すように、最上位ビット側から第１〜第４のフィールド５１ａ〜ｄが配置された構成となっている。第１のフィールド５１ａにはタグアドレス（第１のタグアドレス）、第２のフィールド５１ｂにはインデックスアドレス、或いはそのインデックスアドレスとラインアドレス、第３のフィールド５１ｃにはタグアドレス（第２のタグアドレス）、第４のフィールド５１ｄにはインデックスアドレスとラインアドレスがそれぞれ格納される。タグアドレスは、格納した、或いは格納するデータの索引用である。インデックスアドレスは、エントリ（番号）を指定するものである。ラインアドレスは、インデックスアドレスで指定されるエントリに格納した、或いは格納するデータを指定するものである。
【００３３】
図５に示すキャッシュメモリ装置５０は、例えば図１１に示すように、ＣＰＵ１１００に搭載された内部キャッシュメモリ装置として用いられるものである。図１１では、キャッシュメモリ装置５０は、メインメモリ７０に格納された画像データをより高速に処理するように、その一部の格納に用いられていることを表している。それによりプロセッサコア１１０１は、キャッシュメモリ装置５０を介して画像データを取得し処理する形となっている。インデックスアドレス選択部５６に入力されるブロックタイプ選択信号はプロセッサコア１１０１から出力される。なお、キャッシュメモリ装置５０は、外部キャッシュメモリ装置として、つまりメインメモリ７０とＣＰＵ１１００間に配置されるものとして実現させても良い。
【００３４】
図５に示すキャッシュメモリ装置５０の動作を説明する前に、図６〜図１０に示す各説明図を参照して、キャッシュアドレス５１のデータ構成によって実現されるキャッシュメモリのアクセス制御について具体的に説明する。キャッシュメモリに格納するデータは１画素のデータが１バイトの画像データを想定する。
【００３５】
図６は、キャッシュアドレス５１のデータ構成を説明する図である。図６に示すようにキャッシュアドレス５１を構成する第２のフィールド５１ｂは最大で２つのサブフィールドに分割される。２つのサブフィールドに分割した場合、上位ビットのサブフィールドはインデックスアドレスの格納、下位ビットのサブフィールドはラインアドレスの格納に用いられる。１つのサブフィールドであった場合には、つまり第２のフィールド５１ｂをサブフィールドに分割しなかった場合には、そのフィールド５１ｂはインデックスアドレスの格納に用いられる。第４のフィールド５１ｄは、常に２つのサブフィールドに分割され、上位ビットのサブフィールドはインデックスアドレスの格納、下位ビットのサブフィールドはラインアドレスの格納に用いられる。ここでは、第１のフィールド５１ａのビット数はａビット、以下同様に、第２のフィールド５１ｂでインデックスアドレスの格納に用いられるサブフィールドはｂビット、第２のフィールド５１ｂでラインアドレスの格納に用いられるサブフィールドはｃビット、第３のフィールド５１ｃはｄビット、第４のフィールド５１ｄでインデックスアドレスの格納に用いられるサブフィールドはｅビット、第４のフィールド５１ｄでラインアドレスの格納に用いられるサブフィールドはｆビットと想定する。第２のフィールド５１ｂを１つのサブフィールドとする場合には、ｃの値は０となる。
【００３６】
図７は、キャッシュアドレス５１のデータ構成によりキャッシュメモリに格納可能となる画像データの領域を説明する図である。
（ｄ＋ｅ＋ｆ）ビットは、画像の横方向における画素の位置を表せるものとしている。つまり２(d+e+f)の値は横方向に並ぶ全画素数よりも大きいようにしている。キャッシュメモリに格納可能な横方向におけるデータ量、つまりデータを格納できる画素数は２(e+f)であり、縦方向におけるライン数は２(b+c)である。インデックス（エントリ）数は２(b+e)である。このことから明らかなように、図７中、太線で囲んだ範囲７１はキャッシュメモリにデータを格納可能な最大領域を示し、その領域７１内の枠は１エントリに格納されるデータを示している。その枠に表記した「０」「１」「ｉｎｄｅｘ（２e−１）」「ｉｎｄｅｘ（２(b+e)−１）」は何れも、その領域７１内の左上隅に位置する枠のインデックスアドレスの値（以降「インデックス値」）を０とした場合のインデックス値を表している。これは他の図でも同様である。
【００３７】
横方向に並ぶブロックでは、第４のフィールド５１ｄにおけるインデックスアドレスが互いに異なるものとなる。縦方向に並ぶブロックでは、第２のフィールド５１ｂにおけるインデックスアドレスが互いに異なるものとなる。このようなことから図７に示すように、最大領域７１を構成する各ブロックのインデックス値は互いに異なるものとすることができる。それにより、最大領域７１のデータを全てキャッシュメモリに格納できることとなる。
【００３８】
１エントリにデータが格納されるブロックの形状は、第２及び第４のフィールド５１ｂ、５１ｄでそれぞれラインアドレスの格納に用いられるサブフィールドのビット数により管理される。第４のフィールド５１ｄでラインアドレスの格納に用いられるサブフィールドのビット数ｆにより、横方向に並ぶ画素数が管理され、第２のフィールド５１ｂでラインアドレスの格納に用いられるサブフィールドのビット数ｃにより、縦方向に並ぶライン数が管理される。つまりブロックの形状は、２f×２cブロック（横方向に２f個の画素が並び、縦方向のライン数が２cラインのブロック）となる。このため、ｃの値が０であれば、１ライン上の２f個の画素により構成されたブロックとなり、ｃの値が０でなければ、縦方向が２ライン以上の矩形状のブロックとなる。
【００３９】
第１及び第３のフィールド５１ａ及び５１ｃの配置、及びビット数は固定としている。これは、第２及び第４のフィールドの配置、及びビット数を固定とするためである。また、（ｃ＋ｆ）、（ｂ＋ｅ）の各値も固定としている。それらの値を共に固定にすると、最大領域７１の横方向の全画素数、及び縦方向の全ライン数は一定となる。１エントリにデータを格納する画素数（データ量）、及び選択可能なエントリ（インデックス）数も一定となる。このような条件下で、１エントリにデータを格納するブロックの形状は、ｃとｆ（ｂとｅ）の値の割り当て、つまり第２及び第４のフィールド５１ｂ及び５１ｄをそれぞれ分割するサブフィールドへのビットの割り当て（ビットアサイン）を通して管理する。このため、ブロックの形状のみが異なるように管理することができる。第１及び第３のフィールド５１ａ及び５１ｃの配置、及びビット数と共に、（ｃ＋ｆ）、（ｂ＋ｅ）の各値を固定としているのはこのためである。
【００４０】
横方向、及び縦方向に複数のブロックのデータをキャッシュメモリに格納できるため、画像処理を行う場合にも高いヒット率を常に維持することができる。また、１エントリにデータを格納するブロックの形状を変更可能としたため、特許文献３に記載の従来のキャッシュメモリ装置とは異なり、常に必要最小限のアクセスで必要なデータをキャッシュメモリから取得することができる。キャッシュアドレス５１自体にはインデックスアドレス格納用のビット等を追加していないため、特許文献２に記載の従来のキャッシュメモリ装置とは異なり、アクセス制御が複雑化するのは回避される。
【００４１】
図８〜図１０は、キャッシュアドレス５１が３２ビットの場合のビットアサイン、及びそのビットアサインで実現される最大領域７１のブロック分割を説明する図である。以降は図８〜図１０を参照して、ビットアサインの具体例、及びそのビットアサインで実現される最大領域７１のブロック分割について更に具体的に説明する。ここでは、１アドレスのデータは１バイトとし、１エントリ（ブロック）に１６バイトのデータを格納できると想定する。エントリ数は２５６とする。
【００４２】
キャッシュアドレス５１が３２ビットの場合、図８（ａ）に示すように、第１〜第４のフィールド５１ａ〜ｄにはそれぞれ最上位ビット側から、１６ビット、６ビット、４ビット、６ビットが割り当てられている。その図８（ａ）に示すビットアサイン例では、インデックスアドレス用に、キャッシュアドレス５１における１０〜１５ビット、及び４〜５ビットが割り当てられている。そのような割り当ての内容については「ａｄｄｒ＜１５：１０，５：４＞」と表記する。この表記法は他の割り当ての内容を示す場合にも用いることとする。
【００４３】
ラインアドレス用には、０〜４ビットが割り当てられている。このため、図８（ａ）に示すビットアサイン例では、１エントリにデータが格納されるブロックの形状は横方向に並ぶ１６個の画素から構成される１６×１ブロックとなる。第２及び第４のフィールドのビット数は共に６ビットである。このため図８（ｂ）に示すように、最大領域７１の横方向に並ぶ全画素数は６４個（データ量は６４バイト（Ｂｙｔｅ））となり、縦方向に並ぶ全ライン数は６４ラインとなる。１エントリにデータが格納されるブロックの形状は１６×１ブロックであるため、最大領域７１の横方向に並ぶブロック数は４（＝６４／１６）個となり、縦方向に並ぶブロック数は６４（＝６４／１）個となる。
【００４４】
画像符号化方式における画像処理は、規格で定められた単位（ブロック）で行われれる。その単位の一つであるマクロブロックは殆どの規格で１６×１６ブロックとなっている。このため図８（ａ）に示すビットアサイン例は、マクロブロックを単位とした処理を行う場合に有効である。
【００４５】
図９（ａ）に示すビットアサイン例は、１エントリに８×２ブロックのデータを格納する場合のものである。そのために、インデックスアドレス用にａｄｄｒ＜１５：１１，５：３＞が割り当てられている。ラインアドレス用には、ａｄｄｒ＜１０：１０，２：０＞が割り当てられている。このため図９（ｂ）に示すように、最大領域７１の横方向に並ぶブロック数は８（＝６４／８）個となり、縦方向に並ぶブロック数は３２（＝６４／２）個となっている。
【００４６】
画像符号化方式のなかには、ブロックサイズを選択可能とするものもある。選択可能なブロックサイズとして、８×４ブロック、８×８ブロックのようなものが含まれている規格もある（例えばＶＣ（Video Codec）−１（ＳＭＰＴＥ  ４２１Ｍ））。このため、そのような規格で８×４ブロック、或いは８×８ブロックを選択した場合に、図９（ａ）に示すビットアサイン例は特に有効となる。
【００４７】
図１０（ａ）に示すビットアサイン例は、１エントリに４×４ブロックのデータを格納する場合のものである。そのために、インデックスアドレス用にａｄｄｒ＜１５：１２，５：２＞が割り当てられている。ラインアドレス用には、ａｄｄｒ＜１１：１０，１：０＞が割り当てられている。このため図１０（ｂ）に示すように、最大領域７１の横方向に並ぶブロック数は１６（＝６４／４）個となり、縦方向に並ぶブロック数は１６（＝６４／４）個となっている。
【００４８】
画像符号化方式のなかには、４×４ブロックを単位、或いは選択可能とするものも多い（例えばＨ．２６４）。このため、そのような規格で４×４ブロックを単位とした画像処理を行う場合には、図１０（ａ）に示すビットアサイン例は特に有効となる。
【００４９】
上述したように、画像処理の内容によってブロックサイズは異なり、そのブロックサイズによって最適なビットアサインも変化する。このことから、画像処理の内容に応じてビットアサインを動的に変更し、より適切なビットアサインでデータをキャッシュメモリに格納するようにしている。以降は図５に戻って、本実施の形態によるキャッシュメモリ装置５０動作について詳細に説明する。
【００５０】
図１１に示すように、キャッシュメモリ装置５０にはブロックタイプ選択信号がプロセッサコア１１０１から出力される。そのブロックタイプ選択信号は、選択可能なビットアサインのなかで有効とするビットアサインを選択するためのものである。例えば選択可能なビットアサインが図８〜図１０に示す３つであった場合、ブロックタイプ選択信号は２ビットの信号である。その２ビットの値と１エントリにデータが格納されるブロックの形状（ビットアサイン）の関係としては、例えば以下のように定めれば良い。そのブロックの形状によりインデックスアドレス用（計８ビットである）として割り当てられるビットと併せて示す。
【００５１】
ブロックタイプ選択信号＜１：０＞            インデックスアドレス＜７：０＞
００（１６×１ブロック）      ：      ａｄｄｒ＜１５：１０，５：４＞
０１（８×２ブロック）        ：      ａｄｄｒ＜１５：１１，５：３＞
１０（４×４ブロック）        ：      ａｄｄｒ＜１５：１２，５：２＞
プロセッサコア１１０１は、画像符号化方式等の規格により定まるブロックサイズ、或いは選択したブロックサイズに応じたブロックタイプ選択信号をキャッシュメモリ装置５０に出力する。インデックスアドレス選択部５６は、その選択信号の値に応じて、第２及び第４のフィールド５１ｂ及び５１ｂでインデックスアドレス用とされたビットを選択し、選択したビットを合成する。その合成は、第２のフィールド５１ａでインデックスアドレス用と指定されたビットを上位ビット、第４のフィールド５１ｄでインデックスアドレス用と指定されたビットを下位ビットとすることで行う。そのような合成により生成される８ビットのインデックスアドレスをタグ部５２に出力する。
【００５２】
一方、第２及び第４のフィールド５１ａ及び５１ｄでインデックスアドレス用として選択しなかったビットは、ラインアドレス用のビットとして、必要に応じて合成し、その合成結果をデータセレクタ５５に出力する。必要に応じて合成を行うのは、図８（ａ）に示すように、第２のフィールド５１ｂは全てインデックスアドレス用とされる場合があるためである。第２のフィールド５１ｂにラインアドレス用のビットが存在していた場合には、そのビットを上位ビットとし、第４のフィールド５１ｄのラインアドレス用のビットを下位ビットとして合成が行われる。それにより、何れの場合も４ビットのラインアドレスがデータセレクタ５５に出力される。
【００５３】
データ部５３からデータを読み出すためのリードリクエストであった場合、インデックスアドレスをタグ部５２に出力することにより、その値で選択されるエントリのタグアドレスが読み出される。アドレス比較器５４は、タグ部５２から読み出されたタグアドレスを、第１及び第３のフィールド５１ａ及び５１ｃに格納されたタグアドレスと比較し、その比較結果をヒット情報として出力する。そのヒット情報は、それらのタグアドレスが一致すれば対象のデータが存在する、つまりヒットしたことを示すものとなり、逆に一致しなければ対象のデータは存在しない、つまりミスヒットしたことを示すものとなる。第３のフィールド５１ｃに格納されたタグアドレスは、例えば第１のフィールド５１ａに格納されたタグアドレスの下位ビットとして扱われる。
【００５４】
タグ部５２へのインデックスアドレスの出力により、その値で選択されたエントリのデータがデータ部５３から読み出される。データセレクタ５５は、データ部５３から読み出されたデータのなかで対象とするものをラインアドレスの値に従って抽出し出力する。プロセッサコア１１０１には、アドレス比較器５４が出力するヒット情報、及びデータセレクタ５５が出力するデータが転送される。
【００５５】
反対にデータ部５３にデータを格納するためのライトリクエストであった場合には、タグ部５２のインデックスアドレスで指定されるエントリに、第１及び第３のフィールド５１ａ及び５１ｃのタグアドレスが格納される。データ部５３のそのエントリには、メインメモリ７０から転送されたデータが格納される。そのデータの格納は、インデックスアドレス選択部５６から出力されるラインアドレスに従って行われる。
【００５６】
なお、本実施の形態では、第１及び第３のフィールド５１ａ及び５１ｃの配置、及びビット数が固定であることから、それらのフィールド５１ａ及び５１ｃのデータは直接、アドレス比較器５４、或いはタグ部５２にタグアドレスとして出力する構成を採用しているが、インデックスアドレス選択部５６のようなものを用意して、タグアドレスとするデータをキャッシュアドレス５１から抽出するようにしても良い。インデックスアドレス、及びラインアドレスを１つの構成要素（インデックスアドレス選択部５６）により抽出するのではなく、それぞれ別の構成要素により抽出するようにしても良い。或いは、タグアドレス、インデックスアドレス、及びラインアドレスを１つの構成要素により抽出するようにしても良い。インデックスアドレス、及びラインアドレスをインデックスアドレス選択部５６により抽出するようにしたのは、第２及び第４のフィールド５１ｂ及び５１ｄでインデックスアドレスとするビットを決定すれば残りのビットをラインアドレスのビットとして自動的に決定できるためである。
【００５７】
本実施の形態では、画像処理用の画像データをキャッシュメモリに格納する場合を想定しているが、画像処理と同様の理由によりヒット率が低下するデータであれば、データの種類に係わらず、本発明を適用すれば良い。
【００５８】
（付記１）
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられる方法であって、
前記キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第４のフィールドに分け、
前記第１及び第３のフィールドをタグアドレスの格納に用い、
前記第２及び第４のフィールドをそれぞれ１つ以上のサブフィールドに分け、１つ以上のサブフィールドをインデックスアドレス、残りのサブフィールドをラインアドレスの格納にそれぞれ用いる
ことを特徴とするキャッシュメモリ制御方法。
【００５９】
（付記２）
前記第３のフィールドの配置、及びビット数は固定である
ことを特徴とする付記１記載のキャッシュメモリ制御方法。
【００６０】
（付記３）
前記第２及び第４のフィールドをそれぞれ分割するサブフィールドへのビット数の割り当ては、動的に変更する
ことを特徴とする付記１、または２記載のキャッシュメモリ制御方法。
【００６１】
（付記４）
前記インデックスアドレス、及びラインアドレスの格納にそれぞれ用いるサブフィールドのビット数の合計は固定である
ことを特徴とする付記３記載のキャッシュメモリ制御方法。
【００６２】
（付記５）
前記キャッシュメモリに格納するデータが画像を画素により分割した画像データだった場合、１エントリにデータを格納する画像ブロックの横方向に並ぶ画素数は前記第３のフィールドで前記ラインアドレス格納用に割り当てるサブフィールドのビット数により管理し、該画像ブロックの縦方向に並ぶライン数は前記第２のフィールドで該ラインアドレス格納用に割り当てるサブフィールドのビット数により管理する
ことを特徴とする付記３、または４記載のキャッシュメモリ制御方法。
【００６３】
（付記６）
前記第２のフィールドを１つのサブフィールドとした場合、該第２のフィールドは前記インデックスアドレスの格納用とし、前記第４のフィールドは２つのサブフィールドに分割して、該２つのサブフィールドのうち上位ビットを該インデックスアドレスの格納に用いる
ことを特徴とする付記１〜５の何れか１項に記載のキャッシュメモリ制御方法。
【００６４】
（付記７）
前記第２及び第４のフィールドをそれぞれ２つのサブフィールドに分けた場合、該２つのサブフィールドのうち上位ビットを前記インデックスアドレスの格納に用いる
ことを特徴とする付記１〜５の何れか１項に記載のキャッシュメモリ制御方法。
【００６５】
（付記８）
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられる方法であって、
前記キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第５のフィールドに分け、
前記第１及び第３のフィールドをタグアドレスの格納に用い、
前記第２及び第４のフィールドをインデックスアドレスの格納に用い、
前記第５のフィールドをラインアドレスの格納に用いる
ことを特徴とするキャッシュメモリ制御方法。
【００６６】
（付記９）
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリへのアクセス制御に用いられる方法であって、
前記キャッシュメモリにアクセスするためのアドレスを、最上位ビット側から第１〜第６のフィールドに分け、
前記第１及び第４のフィールドをタグアドレスの格納に用い、
前記第２及び第５のフィールドをインデックスアドレスの格納に用い、
前記第３及び第６のフィールドをラインアドレスの格納に用いる
ことを特徴とするキャッシュメモリ制御方法。
【００６７】
（付記１０）
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするキャッシュメモリ装置において、
前記キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第４のフィールドが配置されているとして、該第１及び第３のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、
前記第２及び第４のフィールドがそれぞれ１つ以上のサブフィールドから構成されているとして、１つ以上のサブフィールドに格納されたデータをインデックスアドレス、残りのサブフィールドに格納されたデータをラインアドレスとして抽出する第２の抽出手段と
を具備することを特徴とするキャッシュメモリ装置。
【００６８】
（付記１１）
前記第２の抽出手段は、外部からの指示に従って、前記第２及び第４のフィールドをそれぞれ構成しているとする１つ以上のサブフィールドのビット数を変更し、前記インデックスアドレス、及び前記ラインアドレスの抽出を行う
ことを特徴とする付記１０記載のキャッシュメモリ装置。
【００６９】
（付記１２）
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするキャッシュメモリ装置において、
前記キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第５のフィールドが配置されているとして、該第１及び第３のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、
前記第２及び第４のフィールドに格納されたデータをインデックスアドレスとして抽出する第２の抽出手段と、
前記第５のフィールドに格納されたデータをラインアドレスとして抽出する第３の抽出手段と
を具備することを特徴とするキャッシュメモリ装置。
【００７０】
（付記１３）
エントリ毎に、データを格納するデータ部、及び該データの索引用であるタグアドレスを格納するタグ部を備えたキャッシュメモリにアクセスするキャッシュメモリ装置において、
前記キャッシュメモリにアクセスするために指定されたアドレスを、最上位ビット側から第１〜第６のフィールドが配置されているとして、該第１及び第４のフィールドに格納されたデータをタグアドレスとして抽出する第１の抽出手段と、
前記第２及び第５のフィールドに格納されたデータをインデックスアドレスとして抽出する第２の抽出手段と、
前記第３及び第５のフィールドに格納されたデータをラインアドレスとして抽出する第３の抽出手段と
を具備することを特徴とするキャッシュメモリ装置。
【図面の簡単な説明】
【００７１】
【図１Ａ】従来のキャッシュメモリ装置の構成を説明する図である。
【図１Ｂ】従来のキャッシュメモリ装置を構成するキャッシュメモリに格納されるメインメモリ内のデータの配置を説明する図である。
【図２】従来のキャッシュメモリ装置でヒット率が低下する理由を説明する図である。
【図３】特許文献２に記載の従来のキャッシュメモリ装置でヒット率が低下する理由を説明する図である。
【図４】特許文献３に記載の従来のキャッシュメモリ装置で実現されるキャッシュメモリにデータを格納できる範囲の変更を説明する図である。
【図５】本実施の形態によるキャッシュメモリ装置の構成を説明する図である。
【図６】キャッシュアドレス５１のデータ構成を説明する図である。
【図７】キャッシュアドレス５１のデータ構成によりキャッシュメモリに格納可能となる画像データの領域を説明する図である。
【図８】キャッシュアドレス５１が３２ビットの場合のビットアサイン、及びそのビットアサインで実現される最大領域７１のブロック分割を説明する図である（その１）。
【図９】キャッシュアドレス５１が３２ビットの場合のビットアサイン、及びそのビットアサインで実現される最大領域７１のブロック分割を説明する図である（その２）。
【図１０】キャッシュアドレス５１が３２ビットの場合のビットアサイン、及びそのビットアサインで実現される最大領域７１のブロック分割を説明する図である（その３）。
【図１１】本実施の形態によるキャッシュメモリ装置の適用例を説明する図である。
【符号の説明】
【００７２】
５０    キャッシュメモリ装置
５１    キャッシュアドレス
５１ａ〜ｄ    第１〜第４のフィールド
５２    タグ部
５３    データ部
５４    アドレス比較器
５５    データセレクタ
５６    インデックスアドレス選択部
７０    メインメモリ
７１    最大領域
１１００    ＣＰＵ
１１０１    プロセッサコア
【図４】
2008033688.tif 000003
【図１Ａ】
2008033688.tif 000004
【図１Ｂ】
2008033688.tif 000005
【図２】
2008033688.tif 000006
【図３】
2008033688.tif 000007
【図５】
2008033688.tif 000008
【図６】
2008033688.tif 000009
【図７】
2008033688.tif 000010
【図８】
2008033688.tif 000011
【図９】
2008033688.tif 000012
【図１０】
2008033688.tif 000013
【図１１】
2008033688.tif 000014