(57)【要約】【課題】入力アドレスに対するキャッシュヒット判定と、入力アドレスの隣接アドレスに限定されないプリフェッチアドレスに対するキャッシュヒット判定とを並行して実行することが可能なキャッシュメモリを提供する。【解決手段】アドレス生成部１６は、上位装置から供給される入力アドレスに基づいて、プリフェッチアドレスに含まれるプリフェッチ・インデックスアドレスを生成する。タグメモリ１１が有する各ウェイは、入力アドレス中の入力インデックスアドレス及びプリフェッチ・インデックスアドレスを並行して入力し、入力インデックスアドレスによるアクセスで得られる第１のタグアドレス及びプリフェッチ・インデックスアドレスによるアクセス得られる第２のタグアドレスを並行して出力することが可能なメモリ部品を有する。【選択図】図１
2010020432.tif 000002
【特許請求の範囲】
【請求項１】
上位装置と低速メモリの間に配置されるキャッシュメモリであって、
前記低速メモリに格納されたデータの一部をライン単位で格納可能なデータメモリと、
前記データメモリに格納される複数のラインデータに関する複数のタグアドレスを格納するタグメモリと、
前記上位装置から供給される入力アドレスに基づいて、プリフェッチアドレスに含まれるプリフェッチ・インデックスアドレスを生成するアドレス生成部と、
前記入力アドレスに含まれる入力インデックスアドレスを用いて前記タグメモリをアクセスすることにより得られる第１のタグアドレス及び前記プリフェッチ・インデックスアドレスを用いて前記タグメモリをアクセスすることにより得られる第２のタグアドレスに基づいて、前記入力アドレス及び前記プリフェッチアドレスのキャッシュヒット判定を行うヒット判定機構と、を備え、
前記タグメモリは、
前記入力インデックスアドレス及び前記プリフェッチ・インデックスアドレスを並行して入力可能であり、前記第１及び第２のタグアドレスを並行して出力することが可能なメモリ部品を有する、
キャッシュメモリ装置。
【請求項２】
前記ヒット判定機構は、
前記入力アドレスに含まれる入力タグアドレスと前記第１のタグアドレスとの比較によって前記入力アドレスのキャッシュヒットを判定する第１のヒット判定部と、
前記第１のヒット判定部によるキャッシュヒット判定と並行して、前記プリフェッチアドレスに含まれるプリフェッチ・タグアドレスと前記第２のタグアドレスとの比較によって前記プリフェッチアドレスのキャッシュヒットを判定する第２のヒット判定部と、
を備える、請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記アドレス生成部は、前記プリフェッチ・インデックスアドレスに加えて前記プリフェッチ・タグアドレスを生成し、前記プリフェッチ・インデックスアドレスを前記タグメモリに、前記プリフェッチ・タグアドレスを前記第２のヒット判定部に供給する、請求項２に記載のキャッシュメモリ装置。
【請求項４】
前記メモリ部品は、
複数のＳＲＡＭバンクと、
前記複数のＳＲＡＭバンクの中の１つを前記第１のタグアドレスの出力元に選択し、前記第１のタグアドレスの出力元とは異なる他の１つを前記第２のタグアドレスの出力元に選択する選択機構と、
を備える、請求項１乃至３のいずれか１項に記載のキャッシュメモリ装置。
【請求項５】
前記複数のＳＲＡＭバンクの数が、２のｋ乗個であり、
前記選択機構は、
前記入力インデックスアドレスの下位ｋビットをデコードすることによって前記第１のタグアドレスの出力元を選択し、
前記プリフェッチ・インデックスアドレスの下位ｋビットをデコードすることによって前記第２のタグアドレスの出力元を選択する、請求項４に記載のキャッシュメモリ。
【請求項６】
前記アドレス生成部は、前記低速メモリに格納された横Ｎピクセル、縦Ｍピクセルの画像データを、横ｎピクセル（ただしｎ＜Ｎ、ｎ＜Ｍ）、縦ｍピクセル（ただしｍ＜Ｎ、ｍ＜Ｍ）の矩形画像ブロック単位で読み出すアクセスに対応したアドレス生成規則に基づいて、前記プリフェッチ・インデックスアドレスを生成する、請求項１乃至５のいずれか１項に記載のキャッシュメモリ装置。
【請求項７】
前記アドレス生成部は、
前記入力アドレスが、前記画像データに含まれる第１の矩形画素ブロック内の合計ｍ行のうちいずれかの最終ピクセルを示す場合に、前記第１の矩形画素ブロック内の次行の先頭ピクセル又は前記第１の矩形画素ブロックの次にアクセスされる第２の矩形画素ブロックの先頭行の先頭ピクセルを示すアドレスを前記プリフェッチアドレスとし、
前記入力アドレスが前記最終ピクセルでない場合に、前記入力アドレスを１ピクセル分だけ増加させたアドレスを前記プリフェッチアドレスとする、請求項６に記載のキャッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリフェッチ機能を有するキャッシュメモリ装置に関する。
【背景技術】
【０００２】
キャッシュメモリは、上位装置と下位メモリとの間に配置され、上位装置からメモリアクセスがあった際に、アクセス先のメモリアドレス（以下、"入力アドレス"と呼ぶ）で指定されるデータが自身の有するデータメモリ内にキャッシュされているか否かを判定する。キャッシュヒット、つまり入力アドレスで指定されるデータがキャッシュされている場合、キャッシュメモリは、自身のデータメモリから読み出されたデータを上位装置に供給する。一方、キャッシュミス、つまり入力アドレスで指定されるデータがキャッシュされていない場合、キャッシュメモリは、下位メモリからデータ読み出しを行なってデータメモリのリフィルを実行するとともに、下位メモリから読み出したデータを上位装置に供給する。
【０００３】
キャッシュメモリにアクセス要求を行なう上位装置は、ＲＩＳＣ（Reduced Instruction Set Computer）方式のプロセッサ、ＣＩＳＣ（Complex Instruction Set Computer）方式のプロセッサ、ＤＳＰ（Digital Signal Processor）等である。また、キャッシュメモリが他のキャッシュメモリの下位キャッシュ（例えば、２次キャッシュ又は３次キャッシュ）として使用される場合、当該キャッシュメモリの上位装置は上位キャッシュである。また、キャッシュメモリは、上位装置であるプロセッサを含むＭＰＵ（Micro Processing Unit）に内蔵される場合もあるし、ＭＰＵに外付けされる場合もある。
【０００４】
以下では、本明細書で使用される用語の定義を明らかにすることを目的として、キャッシュメモリの基本的な構成及び動作について説明する。図６は、４ウェイ・セットアソシアティブ方式のキャッシュメモリの主要部を示すブロック図である。
【０００５】
キャッシュメモリ８が有するデータメモリ８０は、低速メモリ（不図示）に格納されているデータの部分集合に相当するデータを格納するためのメモリである。データメモリ８０の記憶領域は、物理的又は論理的に４つのウェイに分割されている。また、各ウェイは、ラインと呼ばれる複数ワードのデータ格納単位により管理される。以下では、データメモリ８０の１つのラインに格納されるデータを"ラインデータ"と呼ぶ。
【０００６】
データメモリ８０のデータ格納位置は、上位装置（不図示）から入力される入力アドレスをデコードすることによって指定される。具体的には、入力アドレスの中位部分であるインデックスアドレスによってラインが指定される。また、ワード単位でのデータアクセスに対応する場合、入力アドレスの最下位部分であるワードアドレスをデコードすることによってライン内でのワード位置が指定される。入力アドレスの最上位部分は、タグアドレスである。以下では、入力アドレスに含まれるワードアドレス、インデックスアドレス及びタグアドレスをそれぞれ、"入力ワードアドレス"、"入力インデックスアドレス"、"入力タグアドレス"と呼ぶ。入力ワードアドレス、入力インデックスアドレス及び入力タグアドレスのそれぞれのビット数は、キャッシュメモリ８の１ラインに含まれるワード数、１ウェイに含まれるライン数、及びウェイ数をどのように設計するかに応じて定められる。
【０００７】
タグメモリ８１は、データメモリ８０に格納されているラインデータに対応するタグアドレスを格納するメモリである。タグメモリ８１は、入力インデックスアドレスによってアクセスされ、入力インデックスアドレスをデコードすることにより特定されたタグアドレスを出力する。図６のキャッシュメモリ８は４ウェイ方式であるため、タグメモリ８１は、１つの入力インデックスアドレスに対して４つのタグアドドレスを出力する。また、タグメモリ８１は、格納されたタグアドレスの有効性を示すバリッドフラグ（不図示）や、ストアアクセスによりデータメモリ８０が更新されたことにより、データメモリ８０の保持データと下位メモリの保持データの間に不整合が生じていることを示すダーティフラグ（不図示）等を保持する場合もある。
【０００８】
アドレスレジスタ８２は、メモリアクセスのために上位装置から供給される入力アドレスを保持するレジスタである。
【０００９】
ヒット判定部８３は、入力タグアドレスと、タグメモリ８１から出力される4つのタグアドレスとの比較によって、入力アドレスのキャッシュヒット判定を行う。具体的には、入力タグアドレスとタグメモリ８１の出力が一致する場合に、ヒット判定部８３は、キャッシュヒットを示す信号を出力する。一方、これらが不一致である場合に、ヒット判定部８３はキャッシュミスを示す信号を出力する。ヒット判定部８３の出力信号は、例えば、１ウェイ毎のヒット判定結果をそれぞれ１ビットの論理値で示す合計4ビットの信号である。
【００１０】
セレクタ８４は、キャッシュヒットである場合に、入力インデックスアドレスによるアクセスに応じてデータメモリ８０から出力される４つのラインデータの中から、入力タグアドレスに対応した１つの出力を選択する。セレクタ８４の出力は、リードデータとして上位装置に供給される。
【００１１】
コントローラ８５は、ヒット判定部８３によりキャッシュミスと判定された場合に、入力タグアドレスによるタグメモリ８１の書き換え制御、データメモリ８０のリフィル制御を行う。ここで、リフィル制御とは、下位メモリ（不図示）からのデータ読み出しと、下位メモリから読み出されたデータによるデータメモリ８０の書き換えの制御である。また、コントローラ８５は、キャッシュミスの発生を上位装置（不図示）に通知するためのウエイト信号を出力する。
【００１２】
上述したキャッシュメモリの基本的な機能に加えてプリフェッチ機能を有するキャッシュメモリが知られている（例えば特許文献１及び２を参照）。特許文献１に開示されたキャッシュメモリが有するタグメモリは、１つの入力インデックスアドレスが入力された場合に、入力インデックスアドレスで指定されるラインのタグアドレス（例えばｎライン目）と、その次のラインのタグアドレス（例えばｎ＋１ライン目）の２つを同時に出力する。さらに、特許文献１に開示されたキャッシュメモリは、ｎライン目のタグアドレスと入力タグアドレスとを比較するための第１のヒット判定部（上述したヒット判定部８３に相当）に加えて、ｎ＋１ライン目のタグアドレスと入力タグアドレスとを比較する第２のヒット判定部を有する。このような構成により、特許文献１に開示されたキャッシュメモリは、入力インデックスアドレスに１だけ加算した次のインデックスアドレスのキャッシュミスを速やかに判定することができる。
【特許文献１】特開２００１−３４４１５２号公報
【特許文献２】特開平８−３１４８０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述した特許文献１に開示されたキャッシュメモリは、入力アドレス及びプリフェッチの対象アドレス（以下、"プリフェッチアドレス"と呼ぶ）に対するヒット判定を並行して実行可能である。しかしながら、特許文献１に開示されたキャッシュメモリが判定可能なプリフェッチアドレスは、入力インデックスアドレスに１を加算した次のインデックスアドレスのみである。このような構成は、メモリアクセスがアドレス昇順で順序良く発生する場合に有効である。しかしながら、連続しない飛び飛びのアドレスに対してメモリアクセスが発生する場合、特許文献１のキャッシュメモリは、プリフェッチを効率よく行なうことができないおそれがある。つまり、特許文献１に開示されたキャッシュメモリは、入力アドレス及びプリフェッチアドレスに対するヒット判定を並行して実行可能であるものの、プリフェッチの対象アドレスが隣接アドレスに固定されているために、アドレス選択の柔軟を欠くという問題がある。
【課題を解決するための手段】
【００１４】
本発明の第１の態様にかかるキャッシュメモリ装置は、データメモリ、タグメモリ、アドレス生成部、及びヒット判定機構を備える。前記データメモリは、低速メモリに格納されたデータの一部をライン単位で格納可能である。前記タグメモリは、前記データメモリに格納される複数のラインデータに関する複数のタグアドレスを格納する。
【００１５】
また、前記アドレス生成部は、前記上位装置から供給される入力アドレスに基づいて、プリフェッチアドレスに含まれるプリフェッチ・インデックスアドレスを生成する
【００１６】
また、前記ヒット判定機構は、前記入力アドレスに含まれる入力インデックスアドレスを用いて前記タグメモリをアクセスすることにより得られる第１のタグアドレス及び前記プリフェッチ・インデックスアドレスを用いて前記タグメモリをアクセスすることにより得られる第２のタグアドレスに基づいて、前記入力アドレス及び前記プリフェッチアドレスのキャッシュヒット判定を行う。
【００１７】
さらに、前記タグメモリは、前記入力インデックスアドレス及び前記プリフェッチ・インデックスアドレスを並行して入力可能であり、前記第１及び第２のタグアドレスを並行して出力することが可能なメモリ部品を有する。
【００１８】
以上に述べたように、本発明の第１の態様にかかるキャッシュメモリ装置は、プリフェッチ・インデックスアドレスを入力アドレスに基づいて生成するアドレス生成部を有しており、生成されたプリフェッチ・インデックスアドレスをタグメモリに供給可能である。さらに、当該キャッシュメモリ装置が有するタグメモリは、前記入力インデックスアドレス及び前記プリフェッチ・インデックスアドレスを並行して入力可能であり、前記第１及び第２のタグアドレスを並行して出力可能である。
【００１９】
これにより、本発明の第１の態様にかかるキャッシュメモリ装置は、入力アドレスの隣接アドレスに限定されないプリフェッチアドレスを生成するとともに、入力アドレス及びプリフェッチアドレスに対するヒット判定を並行して実行することができる。
【発明の効果】
【００２０】
本発明により、入力アドレスに対するキャッシュヒット判定と、入力アドレスの隣接アドレスに限定されないプリフェッチアドレスに対するキャッシュヒット判定とを並行して実行することが可能なキャッシュメモリ装置を提供することができる。
【発明を実施するための最良の形態】
【００２１】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００２２】
図１は、本発明の１つの実施の形態にかかるキャッシュメモリ１の構成を示すブロック図である。キャッシュメモリ１が有するタグメモリ１１は、複数のウェイ（図１の構成例では４ウェイ）を有する。さらに、タグメモリ１１の各ウェイは、入力インデックスアドレスとプリフェッチ・インデックスアドレスを並行して入力し、これら２つのインデックスアドレスに対応する２つのラインに保持された２つのタグアドレスを並行して出力する。
【００２３】
なお、以下では、タグメモリ１１の各ウェイから並行して出力される２つのタグアドレスを識別するために、入力インデックスアドレスを用いてタグメモリ１１をアクセスすることにより得られるタグアドレスを"第１のタグアドレス"と呼ぶ。また、プリフェッチ・インデックスアドレスを用いてタグメモリ１１をアクセスすることにより得られるタグアドレスを"第２のタグアドレス"と呼ぶ。
【００２４】
タグメモリ１１の４つのウェイから出力された４つの第１のタグアドレスは、ヒット判定部８３に供給される。図６に関する説明で述べたように、ヒット判定部８３は、第１のタグアドレスと入力タグアドレスを比較することによって、入力アドレスのヒット判定を行う。
【００２５】
一方、タグメモリ１１の４つのウェイから出力された４つの第２のタグアドレスは、ヒット判定部１３に供給される。ヒット判定部１３は、ヒット判定部８３と同様に構成すればよい。ヒット判定部１３は、第２のタグアドレスとプリフェッチ・タグアドレスを比較することによって、入力アドレスのヒット判定を行う。プリフェッチ・タグアドレスは、後述するアドレス生成部１６によって生成される。なお、プリフェッチアドレスが入力アドレスに近いために、プリフェッチ・タグアドレスと入力タグアドレスとが同一となる場合がある。この場合、アドレス生成部１６はプリフェッチ・タグアドレスを生成しなくてもよい。つまり、入力タグアドレスをプリフェッチ・タグアドレスとして、そのままヒット判定部１３に供給すればよい。ヒット判定部１３による判定結果は、後述するコントローラ１５に供給される。
【００２６】
コントローラ１５は、上述したコントローラ８５と同様に、ヒット判定部８３により入力アドレスのキャッシュミスが判定された場合に、入力タグアドレスによるタグメモリ１１の書き換え制御、データメモリ８０のリフィル制御を行う。さらに、コントローラ１５は、ヒット判定部１３によりプリフェッチアドレスのキャッシュミスが判定された場合に、プリフェッチ・タグアドレスによるタグメモリ１１の書き換え制御、データメモリ８０のリフィル制御を行う。
【００２７】
アドレス生成部１６は、入力アドレスに基づいて、プリフェッチ・インデックスアドレス及びプリフェッチ・タグアドレスを生成する。アドレス生成部１６によって生成されたプリフェッチ・インデックスアドレスは、タグメモリ１１に供給される。アドレス生成部１６によって生成されたプリフェッチ・タグスアドレスは、ヒット判定部１３に供給される。上述したように、プリフェッチアドレスと入力アドレスが近接しているために、プリフェッチ・タグアドレスが入力タグアドレスと同一となる場合には、アドレス生成部１６は、プリフェッチ・タグアドレスを生成しなくてもよい。
【００２８】
なお、図１に示したキャッシュメモリ１の全体構成が一例に過ぎないことは勿論である。例えば、キャッシュメモリ１の消費電力を削減するために、データメモリ８０の全てのウェイからデータの読み出しを行うのではなく、キャッシュヒットした場合にのみデータメモリ８０からのデータ読み出しを行なう公知の全体構成や、ヒットしたウェイにのみアクセスしてデータの読み出しを行う公知の全体構成を採用してもよい。この場合、例えば、コントローラ１５は、データメモリ８０からのデータ読み出しを制御するために、ヒット判定部８３によりキャッシュヒットと判定されたことに応じて、チップセレクト信号（ＣＳ信号）及びリードストローブ信号（ＲＳ信号）をデータメモリ８０に出力すればよい。
【００２９】
続いて以下では、タグメモリ１１の具体的な構成例について説明する。図２は、タグメモリ１１が有するウェイ＃０の構成例を示している。他のウェイについてもウェイ＃０と同様に構成すればよい。
【００３０】
図２の例では、アドレス生成部１６は、プリフェッチ・インデックスアドレス（ＰＩＡ）として、入力インデックスアドレス（ＩＩＡ）に１だけ加算した隣接アドレスを生成する。このようなアドレス生成規則に従ってプリフェッチ・インデックスアドレスが生成される場合、入力インデックスアドレス及びプリフェッチ・インデックスアドレスの一方が偶数であるとき、他方は奇数となる。したがって、入力インデックスアドレス及びプリフェッチ・インデックスアドレスによる同時並行アクセスに対応するためには、タグメモリ１１の各ウェイを、２つのＳＲＡＭ（Static Random Access Memory）バンク２１及び２２を有するメモリとして構成すればよい。そして、偶数番のインデックスアドレスと奇数番のインデックスアドレスを異なるバンクに割り当てるインタリーブ配置とするとよい。
【００３１】
図２の具体例では、インデックスアドレスの長さが７ビット、つまりタグメモリ１１のライン総数が１２８である。このうち、偶数番のインデックスアドレスの６４ライン分のデータが、ＳＲＡＭバンク２１に割り当てられている。また、奇数番のインデックスアドレスの６４ライン分のデータが、ＳＲＡＭバンク２２に割り当てられている。
【００３２】
セレクタ２３は、ＳＲＡＭバンク２１のアドレスポートに対して、入力インデックスアドレス（ＩＩＡ）又はプリフェッチ・インデックスアドレス（ＰＩＡ）を選択的に供給する。セレクタ２４は、ＳＲＡＭバンク２２のアドレスポートに対して、ＩＩＡ又はＰＩＡを選択的に供給する。セレクタ２３及び２４は、相補的に動作する。つまり、セレクタ２３及び２４の一方がＩＩＡを出力するとき、他方はＰＩＡを出力する。セレクタ２３及び２４の選択ロジックを決定するための制御信号Ｓ０及びＳ１には、入力インデックスアドレスの最下位ビットＩＩＡ［０］を使用すればよい。図２の例では、ＩＩＡ［０］をセレクタ２４に制御信号Ｓ１として供給し、ＩＩＡ［０］をインバータ２７でビット反転させた信号を制御信号Ｓ０としてセレクタ２３に供給している。
【００３３】
セレクタ２５は、入力アドレスのキャッシュヒット判定を行うヒット判定部８３に対して供給される第１のタグアドレスを、ＳＲＡＭバンク２１及び２２の出力の中から選択する。セレクタ２６は、プリフェッチアドレスのキャッシュヒット判定を行うヒット判定部１３に対して供給される第２のタグアドレスを、ＳＲＡＭバンク２１及び２２の出力の中から選択する。セレクタ２５及び２６は、相補的に動作する。つまり、セレクタ２５及び２６の一方がＳＲＡＭバンク２１出力を選択するとき、他方はＳＲＡＭバンク２２出力を選択する。セレクタ２５及び２６の選択ロジックを決定するための制御信号には、セレクタ２３及び２４と同様に、入力インデックスアドレスの最下位ビットＩＩＡ［０］を使用すればよい。
【００３４】
なお、図２では、２つのＳＲＡＭバンク２１及び２２のチップセレクト（ＣＳ）端子を常時アクティブとしている。しかしながら、キャッシュメモリ１にキャッシュされる対象アドレス範囲が制限されている場合、デコード回路をさらに設けてもよい。当該デコード回路は、ＩＩＡ及びＰＩＡがキャッシュ対象アドレスであるか否かを判定し、判定結果に応じて２つのＳＲＡＭバンク２１及び２２のＣＳ端子を制御すればよい。
【００３５】
図３は、タグメモリ１１が有するウェイ＃０の他の構成例を示している。図３の構成例は、ＳＲＡＭバンク数を３以上とする場合に汎用的に利用可能である。バンク選択部２０は、第１及び第２のタグアドレスの供給元となる２つのＳＲＡＭバンクを選択するため、入力インデックスアドレス（ＩＩＡ）及びプリフェッチ・インデックスアドレス（ＰＩＡ）をデコードする。例えば、ＳＲＡＭバンク総数が２のｋ乗個である場合、バンク選択部２０は、ＩＩＡ及びＰＩＡの下位ｋビットをデコードし、対応する２つのＳＲＡＭバンクのＣＳ端子をアクティブにすればよい。
【００３６】
また、バンク選択部２０は、第１タグアドレスの供給元となるＳＲＡＭバンクのアドレス端子にＩＩＡが供給され、第２タグアドレスの供給元となるＳＲＡＭバンクのアドレス端子にＰＩＡが供給されるように、セレクタ２３及び２４を含むセレクタ群を制御する。さらに、バンク選択部２０は、ヒット判定部８３及び１３に供給されるタグアドレスを選択するためのセレクタ２５及び２６を制御する。
【００３７】
なお、図２に関して述べたのと同様に、キャッシュメモリ１にキャッシュされる対象アドレス範囲が制限されている場合がある。この場合、バンク選択部２０は、ＩＩＡ及びＰＩＡがキャッシュ対象アドレスであるか否かを判定し、判定結果に応じて各ＳＲＡＭバンクのＣＳ端子を制御すればよい。
【００３８】
ところで、タグメモリ１１の各ウェイに使用可能なメモリ部品は、図２及び３に示したようなバンク構造の多ポートメモリに限られない。例えば、ＳＲＡＭの各メモリセルに複数組のワード線及びビット線（Ｑ及びＱＢ）が接続されたメモリ部品、つまり、メモリセル単位で多入力かつ多出力とされたメモリ部品をタグメモリ１１の各ウェイに使用してもよい。
【００３９】
続いて以下では、アドレス生成部１６の構成例について説明する。プリフェッチ・インデックスアドレスが入力インデックスアドレスの次アドレスに限定されない具体例を示すため、ここでは、マクロブロック単位で画像データの読み出しを行なう例を説明する。ＪＰＥＧ、ＭＰＥＧ２、ＭＰＥＧ４などのコーデック技術では、横４ピクセル×縦４ピクセル、横８ピクセル×縦８ピクセル等の正方形の画像ブロックを単位として離散コサイン変換等の画像処理を行う。このような正方形の画像ブロックは、マクロブロックと呼ばれる。
【００４０】
図４は、横６４０ピクセル、縦４８０ピクセルの画像フレーム５１と、４ピクセル×４ピクセルのマクロブロック５２を示している。マクロブロック単位でのデータ読み出しに対応したプリフェッチを行なうためには、例えば、入力アドレスがマクロブロック５２の第１行目の最終ピクセル（ピクセルＮｏ．３）であるときに、プリフェッチアドレスをマクロブロック５２の第２行目の先頭アドレス（ピクセルＮｏ．４）とすることが望ましい。
【００４１】
図５は、マクロブロック単位でのデータ読み出しに対応したプリフェッチアドレスの生成を行うことが可能なアドレス生成部１６の構成例を示すブロック図である。なお、説明を簡単にするため、画像フレーム５１の１ピクセル当たりデータサイズと、データメモリ８０のライン幅（１ライン当たりのデータサイズ）が等しいと仮定している。
【００４２】
図５のアドレス生成部１６は、入力アドレスがマクロブロック５２内の合計ｍ行のうちいずれかの最終ピクセルを示す場合に、マクロブロック５２内の次行の先頭ピクセルを示すアドレスをプリフェッチアドレスとする。また、図５のアドレス生成部１６は、入力アドレスがマクロブロック５２内のいずれかの行の最終ピクセルでない場合に、入力アドレスを１ピクセル分だけ増加させたアドレスをプリフェッチアドレスとする。以下では、図５に示す各構成要素について詳しく説明する。
【００４３】
レジスタ１６１は、画像フレーム５１の横サイズに対応したオフセット値を保持するレジスタである。具体的に述べると、レジスタ１６１は、画像フレーム５１の横ピクセル総数（つまり６４０ピクセル）から、マクロブロック５２の横ピクセル総数（つまり４ピクセル）を減じた値に１を加えた値（つまり６３７）を保持すればよい。
【００４４】
レジスタ１６２は、マクロブロック５２の横サイズに対応した値を保持する。具体的には、レジスタ１６２は、マクロブロック５２の横ピクセル総数（つまり４ピクセル）から１を減じた値（つまり３）を保持すればよい。レジスタ１６２の値は、ダウン・カウンタ１６６の初期値とされる。
【００４５】
ダウン・カウンタ１６６は、プリフェッチアドレスの生成周期に同期して自身の保持値を１ずつ減算する。
【００４６】
加算器１６３は、入力タグアドレス（ＩＴＡ）及び入力インデックスアドレス（ＩＩＡ）を受けとり、これに１加算したアドレスを出力する。
【００４７】
加算器１６４は、入力タグアドレス（ＩＴＡ）及び入力インデックスアドレス（ＩＩＡ）を受けとり、これとレジスタ１６１の値を加算する。
【００４８】
セレクタ１６５は、加算器１６３及び１６４のいずれか一方の出力アドレスを選択し、選択されたアドレスをプリフェッチ・タグアドレス（ＰＴＡ）及びプリフェッチ・インデックスアドレス（ＰＩＡ）として出力する。セレクタ１６５の選択動作は、ダウン・カウンタ１６６の値によって行われる。上述したように、マクロブロック５２の横ピクセル総数から１を減じた値をダウン・カウンタ１６６の初期値とする場合、ダウン・カウンタ１６６の値がゼロでないとき、セレクタ１６５は、加算器１６３の出力を選択する。一方、ダウン・カウンタ１６６の値がゼロであるとき、セレクタ１６５は、加算器１６４の出力を選択する。
【００４９】
さらに、マクロブロック単位での連続的な画像データ読み出しに対応するためには、入力アドレスがマクロブロック５２の最終ピクセル（ピクセルＮｏ．Ｆ）であるときに、プリフェッチアドレスが次マクロブロックの先頭ピクセル（ピクセルＮｏ．１）とするとよい。
【００５０】
また、マクロブロック単位での画像データの読み出しに適応したプリフェッチの信頼性を向上させるためには、タグメモリ１１の各ウェイのＳＲＡＭバンク数は、マクロブロックの横ピクセル数以上とするとよい。あわせて、連続するインデックスアドレスを異なるＳＲＡＭバンクに割り当てるインタリーブ配置とするとよい。これにより、入力アドレス及びプリフェッチアドレスの同一バンクへのアクセス競合を確実に回避することができる。
【００５１】
上述したように、本発明の実施の形態にかかるキャッシュメモリ１が有するアドレス生成部１６は、予め定められたアドレス生成規則、例えばマクロブロック単位での画像データの読み出し対応したアドレス生成規則に従って、入力アドレスの隣接アドレスに限定されないプリフェッチアドレスを生成できる。また、タグメモリ１１は、入力インデックスアドレス及びプリフェッチ・インデックスアドレスを並行して入力し、第１及び第２のタグアドレスを並行して出力することができる。つまり、キャッシュメモリ１は、入力アドレスの隣接アドレスに限定されないプリフェッチアドレスを生成するとともに、入力アドレス及びプリフェッチアドレスに対するヒット判定を並行して実行することができる。また、入力アドレス及びプリフェッチアドレスのヒット判定を並行して実行可能になることによって、下位メモリへのアクセスを高速かつ効率的に行うことができる。
【００５２】
なお、上述した実施の形態は、セットアソシアティブ方式のキャッシュメモリを示したが、本発明は、ウェイ数が１つであるダイレクトマップ方式のキャッシュメモリにも適用可能であることは勿論である。さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の形態にかかるキャッシュメモリの構成を示すブロック図である。
【図２】図１に示すキャッシュメモリが有するタグメモリの構成例を示す図である。
【図３】図１に示すキャッシュメモリが有するタグメモリの他の構成例を示す図である。
【図４】マクロブロック単位での画像データの読み出し処理を示す概念図である。
【図５】図１に示すキャッシュメモリが有するアドレス生成部の構成例を示す図である。
【図６】従来のキャッシュメモリの構成を示すブロック図である。
【符号の説明】
【００５４】
１  キャッシュメモリ
１１  タグメモリ
１３  ヒット判定部
１５  コントローラ
１６  アドレス生成部
２０  バンク選択部
２１、２２  ＳＲＡＭバンク
２３、２４  セレクタ
２５、２６  セレクタ
２７  インバータ
８０  データメモリ
８２  アドレスレジスタ
８３  ヒット判定部
８４  セレクタ
１６１、１６２  レジスタ
１６３、１６４  加算器
１６５  セレクタ
１６６  ダウン・カウンタ
【図１】
2010020432.tif 000003
【図２】
2010020432.tif 000004
【図３】
2010020432.tif 000005
【図４】
2010020432.tif 000006
【図５】
2010020432.tif 000007
【図６】
2010020432.tif 000008