(57)【要約】【課題】キャッシュからメインメモリへの連続アクセスのデータサイズを可変とする。【解決手段】メモリ装置は、単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイに格納する場合には管理データアレイの対応する管理データを第１の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインをデータアレイに格納する場合には管理データアレイの対応する管理データを第２の状態とする書込制御回路と、ライトバック時に、管理データアレイの対応する管理データが第１の状態を示す場合には追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、管理データアレイの対応する管理データが第２の状態を示す場合には、追い出し対象キャッシュデータと一纏まりとなるデータアレイのキャッシュデータと追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成するアクセス制御回路とを含む。【選択図】図２
2014016812.tif 000002
【特許請求の範囲】
【請求項１】
インデックス毎にキャッシュデータを格納するデータアレイと、
前記データアレイのキャッシュデータ毎に第１の状態又は第２の状態の何れかを示す管理データを格納する管理データアレイと、
単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第１の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態とする書込制御回路と、
追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第１の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成するアクセス制御回路と
を含むメモリ装置。
【請求項２】
インデックス毎に複数のウェイに対応する複数のタグを格納するタグアレイと、
ライトバックするキャッシュデータを格納するバッファと、
を更に含み、前記データアレイにはインデックス毎に前記複数のウェイに対応する複数のキャッシュデータが格納され、前記追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイから選択し、前記選択されたキャッシュデータと前記追い出し対象キャッシュデータとを前記バッファに格納する請求項１記載のメモリ装置。
【請求項３】
前記書込制御回路は、連続複数ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態とする請求項１又は２記載のメモリ装置。
【請求項４】
連続複数ラインでのキャッシュフィル要求に応じて選択された少なくとも２つの追い出し対象キャッシュデータに対して管理データが第２の状態を示す場合には、前記少なくとも２つの追い出し対象キャッシュデータのうちの１つの追い出し対象キャッシュデータを選択し、前記選択された１つの追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記選択された１つの追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイにおいて特定し、前記特定されたキャッシュデータと前記選択された１つの追い出し対象キャッシュデータとを前記バッファに格納する請求項１乃至３記載のメモリ装置。
【請求項５】
前記連続複数ラインは連続２ラインである請求項１乃至４いずれか１項記載のメモリ装置。
【請求項６】
単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイに格納する場合には前記管理データアレイの対応する管理データを第１の状態に設定し、
連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態に設定し、
追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第１の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、
前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成する
各段階を含むキャッシュメモリの制御方法。
【請求項７】
前記追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイから選択し、前記選択されたキャッシュデータと前記追い出し対象キャッシュデータとをライトバック用バッファに格納する段階を更に含む請求項６記載のキャッシュメモリの制御方法。
【請求項８】
連続複数ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態とする請求項６又は７記載のキャッシュメモリの制御方法。
【請求項９】
連続複数ラインでのキャッシュフィル要求に応じて選択された少なくとも２つの追い出し対象キャッシュデータに対して管理データが第２の状態を示す場合には、前記少なくとも２つの追い出し対象キャッシュデータのうちの１つの追い出し対象キャッシュデータを選択し、前記選択された１つの追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記選択された１つの追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイにおいて特定し、前記特定されたキャッシュデータと前記選択された１つの追い出し対象キャッシュデータとをライトバック用バッファに格納する請求項６乃至９いずれか一項記載のキャッシュメモリの制御方法。
【請求項１０】
演算部と、
キャッシュメモリと、
メモリアクセスコントローラと
を含み、前記キャッシュメモリは、
インデックス毎にキャッシュデータを格納するデータアレイと、
前記データアレイのキャッシュデータ毎に第１の状態又は第２の状態の何れかを示す管理データを格納する管理データアレイと、
単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第１の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態とする書込制御回路と、
追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第１の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を前記メモリアクセスコントローラへ送信し、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を前記メモリアクセスコントローラへ送信するアクセス制御回路と
を含む演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、メモリ装置、演算処理装置、及びキャッシュメモリの制御方法に関する。
【背景技術】
【０００２】
同一チップ上に複数のプロセッサコアを実装したマルチコアのプロセッサでは、プロセッサの演算処理速度とメインメモリアクセスレイテンシ及びメモリアクセススループットとの乖離が問題となる。この問題を緩和するため、プロセッサは一般に、多階層のメモリシステムを有している。メインメモリとプロセッサの演算部との間にあり、一時的にメインメモリのデータをコピーして保持しておく小容量且つ高速なメモリをキャッシュメモリと呼ぶ。プロセッサがキャッシュメモリ上のデータを参照する限り、低レイテンシかつ高スループットなメモリアクセスが可能である。
【０００３】
キャッシュメモリは、主に、ＬＲＵ（Last Recently Used）アレイ、タグアレイ、及びデータアレイを含む。データアレイの各配列要素には、メインメモリからデータがコピーされる。メインメモリからデータアレイへのデータのコピーはキャッシュライン単位で実行される。メインメモリのメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュメモリの容量はメインメモリの容量よりも小さいので、メインメモリのメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
【０００４】
一般に、アドレスの全ビットのうちで、所定数の中位ビットがキャッシュメモリのインデックスとなり、それより上位に位置する残りのビットがキャッシュメモリのタグとなる。キャッシュメモリのタグアレイが、各インデックスに対応するタグを格納している。但し各インデックスに対して、一般に複数のタグを格納しており、これら複数のタグをウェイと呼ぶ。データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、タグアレイ中の対応するインデックスの複数のウェイのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンとが一致するか否かを判断する。読み出した複数のウェイの何れかのタグが一致する場合には、当該アクセスはキャッシュヒットとなる。読み出した複数のウェイの何れのタグについても一致しない場合には、当該アクセスはキャッシュミスとなる。
【０００５】
キャッシュヒットの場合、該当インデックスの該当ウェイ（タグが一致したウェイ）に対応するキャッシュデータ（１キャッシュライン分の所定ビット数のデータ）が、キャッシュＲＡＭにおいてアクセスされる。キャッシュミスの場合には、メインメモリに格納されている当該アクセスの対象であるデータを、キャッシュＲＡＭの該当するキャッシュラインに転送する。この際、該当インデックスの全てのウェイにおいて有効なキャッシュデータが存在する場合には、最も必要性の低いデータ（例えば最後にアクセスされてから最も時間が経過しているデータ）を、アクセス対象のデータで置き換える処理が実行される。この置き換え処理時に、ライトバック動作を実行し、置き換えられる方のデータが上書きされ消えてしまう前に当該データをメインメモリに書き込んで、キャッシュメモリの内容をメインメモリに反映させる。キャッシュメモリのＬＲＵ（Last Recently Used）アレイは、最後にアクセスされてから最も時間が経過しているデータのウェイを記憶しておく領域である。
【０００６】
メインメモリとして用いるＤＩＭＭ（Dual Inline Memory Module）の要素であるＤＲＡＭ（Dynamic Random Access Memory）へのアクセスを、大きなデータ単位でまとめて行うことにより、読み書き処理のスループットを改善することが考えられる。ＤＲＡＭは、１ビットの情報を記憶するメモリ素子がマトリックス状に配置されたセルアレイ、及び、メモリ素子への読み書きアクセスを制御する回路を含む。ＤＲＡＭへのアクセスにおいては、最初にセルアレイ中のローアドレスに対応する一本のワード線を選択活性化して行方向の位置を指定し、次にコラムアドレスが指定する列方向の位置を選択してデータの読み書きを行う。同一のローアドレスで連続するコラムアドレスをアクセスするときには、ワード線を選択活性化したままの状態で、列方向に連続する複数のデータを連続的にアクセスすることにより、アクセス時間の短縮を図ることができる。このようなアクセスの仕方を、ここでは連続アクセスと呼ぶ。
【０００７】
多階層のメモリシステムにおいてメインメモリへのアクセスが発生するのは、メインメモリからキャッシュメモリへコピーするデータを読み出す動作の場合、又は、キャッシュメモリから追い出されるデータをメインメモリに書き込む動作の場合である。このうち、メインメモリからキャッシュメモリへデータをコピーする動作（キャッシュフィル動作）は、プロセッサの演算部において当該データが必要になった（又は近い将来必要になると予測した）ときに実行される。従って、キャッシュフィルによるメインメモリへのアクセスは、基本的にプログラムにより制御が可能であり、メインメモリの連続アドレスへアクセスするようにアクセス制御することが可能である。一方、キャッシュメモリからデータを追い出す動作（ライトバック動作）は、キャッシュフィルの過程で副次的に行われる動作であり、追い出される対象のウェイはプログラムの制御とは直接に関係なく見かけ上ランダムである。従って、ライトバックにおいては、メインメモリの連続アドレスへアクセスするようにアクセス制御することはできない。
【０００８】
ライトバックの書き込みアドレスを自在に制御することはできないが、キャッシュラインサイズを増大すれば、ライトバック時にある程度の連続アドレスへの書き込みを実現することができる。即ち、キャッシュラインサイズを増大させることで、メインメモリアクセスのアクセス単位が大きくなり、ある程度の長さの連続アクセスが常時行われることになる。しかしながら、キャッシュラインサイズは、参照アドレスが所定のアドレス範囲に集中するという空間的局所性と所定の時間範囲に集中するという時間的局所性を考慮して、キャッシュメモリのヒット率と、プロセッサの物理的実装コストが最適になるように定められる。一般に無数のアプリケーションを実行する可能性のあるプロセッサでは、より小さなキャッシュラインサイズが望まれる。すなわち、キャッシュメモリ全体容量が一定ならば空間的局所性と時間的局所性ですらトレードオフの関係になる。一つのキャッシュラインの参照のみに着目すれば、キャッシュラインサイズの拡大は空間的局所性の利用効率が大きくなるが、複数のキャッシュラインの参照を考慮すると他のキャッシュラインの参照により参照すべきキャッシュラインが追い出される確率が増加するため、時間的局所性の利用効率が小さくなる。一般的に、ラインサイズの縮小による空間的局所性の利用効率が小さくなる場合のデメリットは、どのキャッシュラインを参照するかを予測することによってデメリットの影響を小さくできる。具体的には、参照があったキャッシュライン周辺のキャッシュラインのデータもまとめてコピーすれば良い。しかし、時間的局所性の利用効率を大きくするにはラインサイズの縮小が効果があるため、空間的局所性の利用効率と時間的局所性の利用効率を両立するのは困難であった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平７−１６０５７７号公報
【特許文献２】特開２０１１−１６４９４８号公報
【特許文献３】特開２００８−３１０４６５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上を鑑みると、メインメモリに対する連続アクセスのデータのサイズを可変としたメモリ装置、演算処理装置、及びキャッシュメモリの制御方法が望まれる。
【課題を解決するための手段】
【００１１】
メモリ装置は、インデックス毎にキャッシュデータを格納するデータアレイと、前記データアレイのキャッシュデータ毎に第１の状態又は第２の状態の何れかを示す管理データを格納する管理データアレイと、単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第１の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態とする書込制御回路と、追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第１の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成するアクセス制御回路とを含む。
【００１２】
キャッシュメモリの制御方法は、単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイに格納する場合には前記管理データアレイの対応する管理データを第１の状態に設定し、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態に設定し、追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第１の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成する。
各段階を含む。
【００１３】
演算処理装置は、演算部と、キャッシュメモリと、メモリアクセスコントローラとを含み、前記キャッシュメモリは、インデックス毎にキャッシュデータを格納するデータアレイと、前記データアレイのキャッシュデータ毎に第１の状態又は第２の状態の何れかを示す管理データを格納する管理データアレイと、単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第１の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第２の状態とする書込制御回路と、追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第１の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を前記メモリアクセスコントローラへ送信し、前記管理データアレイの対応する管理データが第２の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を前記メモリアクセスコントローラへ送信するアクセス制御回路とを含む。
【発明の効果】
【００１４】
本願開示の少なくとも１つの実施例によれば、メインメモリに対する連続アクセスのデータのサイズを可変としたメモリ装置、演算処理装置、及びキャッシュメモリの制御方法が提供される。
【図面の簡単な説明】
【００１５】
【図１】ＣＰＵモジュール及びメインメモリを含むシステムの図である。
【図２】最下位キャッシュメモリの構成の一例を示す図である。
【図３】１ラインデータ要求時又は１ラインキャッシュフィル要求時の最下位キャッシュメモリの動作の一例を示すフローチャートである。
【図４】キャッシュフィル処理の一例を示すフローチャートである。
【図５】２ラインキャッシュフィル要求時の最下位キャッシュメモリの動作の一例を示すフローチャートである。
【図６】ミス側フィル処理の一例を示すフローチャートである。
【図７】フィル処理の一例を示すフローチャートである。
【図８】フィル処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１７】
図１は、ＣＰＵモジュール及びメインメモリを含むシステムの図である。図１のシステムは、ＣＰＵ（Central Processing Unit）モジュール１０及びメインメモリである複数のＤＩＭＭ１１を含む。ＣＰＵモジュール１０は、演算部１２、最上位キャッシュメモリ１３、最下位キャッシュメモリ１４、及びメモリアクセスコントローラ（ＭＡＣ）１５を含む。演算部１２は、ＤＩＭＭ１１に格納されたプログラムを実行し、ＤＩＭＭ１１に格納されたデータに対する演算処理を実行する。ＤＩＭＭ１１に格納されたプログラムやデータは、メモリアクセスコントローラ１５によりアクセスされ、メモリアクセスコントローラ１５、最下位キャッシュメモリ１４、及び最上位キャッシュメモリ１３を介して演算部１２に供給される。最上位キャッシュメモリ１３及び最下位キャッシュメモリ１４は、ＤＩＭＭ１１よりも記憶容量が小さく、ＤＩＭＭ１１よりも高速にデータアクセス可能なメモリであり、例えばＳＲＡＭ（Static Random Access Memory）をメモリデバイスとして含む。一般に、最下位キャッシュメモリ１４に格納されるデータの一部のコピーが、最上位キャッシュメモリ１３に保持されている。またＤＩＭＭ１１に格納されるデータの一部のコピーが、最下位キャッシュメモリ１４に保持されている。なお図１には、最上位キャッシュメモリ１３と最下位キャッシュメモリ１４との２階層のキャッシュメモリが示されるが、キャッシュメモリの階層数は２個に限られない。例えば、最下位キャッシュメモリ１４のみが設けられる１階層の構成であってもよい。
【００１８】
図２は、最下位キャッシュメモリ１４の構成の一例を示す図である。図２に示す最下位キャッシュメモリ１４は、コマンドバッファ２０、アドレスバッファ２１、偶数インデックス生成回路（ＥＩＧ）２２−１、奇数インデックス生成回路（ＯＩＧ）２２−２、偶数バンク２３−１、及び奇数バンク２３−２を含む。最下位キャッシュメモリ１４は更に、マージフラグ制御回路（ＭＦＣ）２４−１及び２４−２、ＬＲＵ制御回路（ＬＣ）２５−１及び２５−２、及び有効フラグ制御回路（ＶＦＣ）２６−１及び２６−２を含む。最下位キャッシュメモリ１４は更に、データバス選択回路２７−１乃至３０−１及び２７−２乃至３０−２、タグ比較回路３１−１及び３１−２並びに３５−１及び３５−２、及び空きウェイチェック回路３２−１及び３２−２を含む。最下位キャッシュメモリ１４は更に、追出しウェイ選択回路３３−１及び３３−２、アドレス復元回路３４−１及び３４−２、タグ生成回路３６−１乃至３８−１及び３６−２乃至３８−２、セレクタ３９−１乃至４２−１及び３９−２乃至４２−２を含む。最下位キャッシュメモリ１４は更に、ヒット判定回路４３、マージフラグチェック回路４４、インデックス比較回路４５、及び調停回路４６を含む。最下位キャッシュメモリ１４は更に、キャッシュフィルアドレスバッファ４７、キャッシュフィルデータバッファ４８、データ応答バッファ４９、及びライトバックアドレス＆データバッファ５０を含む。最下位キャッシュメモリ１４は更に、ＳＲＡＭアクセス制御回路５１、ＬＲＵ更新制御回路５２、キャッシュ書込制御回路５３、キャッシュ応答制御回路５４、ＭＡＣアクセス制御回路５５、及びセレクタ５６を含む。
【００１９】
偶数バンク２３−１は、デコーダ６０−１、マージフラグアレイ６１−１、ＬＲＵフラグアレイ６２−１、有効フラグアレイ６３−１、タグアレイ６４−１、データアレイ６５−１、及びバッファ６６−１乃至７０−１を含む。奇数バンク２３−２は、デコーダ６０−２、マージフラグアレイ６１−２、ＬＲＵフラグアレイ６２−２、有効フラグアレイ６３−２、タグアレイ６４−２、データアレイ６５−２、及びバッファ６６−２乃至７０−２を含む。
【００２０】
なお図２において、実線で示す信号線は制御信号の流れを示し、点線で示す信号線はアドレス信号の流れを示し、２重線で示す信号線はデータ信号の流れを示す。また各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。ハードウェアの場合、各機能ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。ソフトウェアの場合、各機能ブロックは、他のブロックと論理的にある程度分離された１つのソフトウェアモジュールであってもよいし、或いは他のブロックと論理的に一体となったソフトモジュール中の１つの機能を示したものであってもよい。
【００２１】
偶数バンク２３−１は偶数インデックス側のキャッシュデータを格納し、奇数バンク２３−２は奇数インデックス側のキャッシュデータを格納する。図２に示す例では、偶数バンク２３−１及び奇数バンク２３−２の各々において、２個のウェイが設けられているが、ウェイの数は２に限られることなく、１を含む任意の数であってよい。図２に示す例では、キャッシュフィル動作やライトバック動作において、単一キャッシュラインでのメインメモリへのデータアクセス、又は連続する２つのキャッシュラインを一纏まりとしたメインメモリへのデータアクセスが可能である。これは限定を意図しない一例であり、３個以上の連続複数キャッシュラインを一纏まりとしたメインメモリへのデータアクセスを実行するように、キャッシュメモリが設計されてもよい。例えば４個の連続複数キャッシュラインを一纏まりとしたメインメモリへの読み書きアクセスを可能とする場合には４個のバンクを設け、これら４個のバンクのそれぞれが、モジュロ４が１、２、３、及び４であるインデックスのキャッシュデータを格納してよい。
【００２２】
以下に、基本的なキャッシュメモリの動作について、偶数バンク２３−１を例にとり説明する。なお同様のキャッシュメモリ動作が、奇数バンク２３−２に対しても実行される。
【００２３】
偶数バンク２３−１のデータアレイ６５−１の各配列要素には、メインメモリからコピーされたデータが格納される。メインメモリからデータアレイへのデータのコピーはキャッシュライン単位で実行される。メインメモリのメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュメモリの容量はメインメモリの容量よりも小さいので、メインメモリのメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。アドレスの全ビットのうちで、所定数の中位ビットがキャッシュメモリのインデックスとなり、それより上位に位置するビットがキャッシュメモリのタグとなる。
【００２４】
タグアレイ６４−１は、インデックス毎にキャッシュデータを格納する。より具体的には、タグアレイ６４−１は、各インデックスに対して、複数のウェイに対応する複数のタグ（図２の例では２個のタグ）を格納している。データをアクセスする場合、アクセス先を示すアドレス（リクエストアドレス）が、上位のキャッシュ又は演算部から、アドレスバッファ２１に供給される。このリクエストアドレス中のインデックス部分を偶数インデックス生成回路２２−１により抽出し、この抽出されたインデックス部分をデコーダ６０−１によりデコードし、アクセス先に対応する１つのインデックスを指定する。指定されたインデックスの複数のウェイのタグが、タグアレイ６４−１からバッファ６９−１を介して読み出され、データバス選択回路２７−１及び２８−１を介して、タグ比較回路３１−１に供給される。また、指定されたインデックスの複数のウェイのデータが、データアレイ６５−１からバッファ７０−１を介して読み出され、データバス選択回路２９−１及び３０−１を介して、セレクタ３９−１に供給される。
【００２５】
アドレスバッファ２１から供給されるアクセス先のアドレスから、タグ生成回路３７−１がリクエストアドレスのタグを抽出する。タグ比較回路３１−１は、この抽出されたアクセス先のタグとタグアレイ６４−１から読み出された複数のタグとを比較して、ビットパターンが一致するか否かを判断する。タグアレイ６４−１から読み出した複数のウェイの何れかのタグが一致する場合には、当該アクセスはキャッシュヒットとなる。読み出した複数のウェイの何れのタグについても一致しない場合には、当該アクセスはキャッシュミスとなる。
【００２６】
キャッシュヒットの場合、該当インデックスの該当ウェイ（タグが一致したウェイ）に対応するキャッシュデータ（１キャッシュライン分の所定ビット数のデータ）が、セレクタ３９−１により選択される。この選択動作は、タグ比較回路３１−１からセレクタ３９−１に供給される一致したタグを示す情報に基づいて行われる。このキャッシュデータは、データ応答バッファ４９を介して上位のキャッシュ又は演算部に出力される。
【００２７】
キャッシュミスの場合には、メインメモリに格納されている当該アクセスの対象であるデータを、データアレイ６５−１の該当するキャッシュラインに転送する。この際、該当インデックスの全てのウェイにおいて有効なキャッシュデータが存在する場合には、最も必要性の低いデータ（例えば最後にアクセスされてから最も時間が経過しているデータ）を、アクセス対象のデータで置き換える処理が実行される。この置き換え処理時に、ライトバック動作を実行し、置き換えられる方のデータが上書きされ消えてしまう前に当該データをメインメモリに書き込んで、キャッシュメモリの内容をメインメモリに反映させる。ＬＲＵアレイ６２−１は、最後にアクセスされてから最も時間が経過しているデータのウェイを記憶しておく領域である。また有効フラグアレイ６３−１は、データアレイ６５−１の各々のデータ毎に、データが有効か否かを示すフラグを記憶しておく領域である。
【００２８】
キャッシュミスの場合の具体的な動作は、大略以下の通りである。空きウェイチェック回路３２−１が、有効フラグアレイ６３−１からの有効フラグデータに基づいて、空きウェイ（即ち有効フラグが無効状態を示しており利用可能なウェイ）が存在するか否かをチェックする。空きウェイが存在する場合、メインメモリの指定アドレス（リクエストアドレス）からデータを読み出し、読み出したデータをデータアレイ６５−１の当該空きウェイに格納する。空きウェイが存在しない場合、追出しウェイ選択回路３３−１が、ＬＲＵアレイ６２−１からのＬＲＵ情報に基づいて、追い出し対象のウェイを選択する。詳細については後述するが、データアレイ６５−１から読み出された複数のウェイに対応する複数のキャッシュデータのうち、上記追い出し対象ウェイに対応するキャッシュデータがセレクタ４１−１により選択される。選択されたデータは、ライトバックアドレス＆データバッファ５０及びメモリアクセスコントローラ１５を介して、メインメモリに書き込まれる。その後、メインメモリの指定アドレス（リクエストアドレス）からデータを読み出し、読み出したデータを、データアレイ６５−１中の追い出したウェイに格納する。
【００２９】
図２に示す最下位キャッシュメモリ１４では、キャッシュフィル動作として、単一キャッシュラインでのメインメモリからのデータ読出し、又は連続する２つのキャッシュラインを一纏まりとしたメインメモリからのデータ読出しが可能である。またライトバック動作においても同様に、単一キャッシュラインでのメインメモリへのデータ書き込み、又は連続する２つのキャッシュラインを一纏まりとしたメインメモリへのデータ書き込みが可能である。このようにして、単一キャッシュラインでのメインメモリへの連続アクセスと、連続キャッシュラインでのメインメモリへの連続アクセスとが実行され、メインメモリへの連続アクセスのデータのサイズが可変となる。なお以後の説明において、キャッシュラインのことを単にラインと呼ぶ。なお前述のように一纏まりとする単位は、２ラインに限定されるものではなく、３ライン以上であってもよい。
【００３０】
キャッシュフィル動作を単一ライン単位とするか連続２ライン単位とするかは、上位装置（例えば上位キャッシュ）からのアクセス命令により指定される。上位装置は、１ラインよりも小さいサイズのデータを必要とする場合には１ラインでのキャッシュフィル動作をリクエストし、１ラインよりも大きいサイズのデータを必要とする場合には連続２ラインでのキャッシュフィル動作をリクエストする。ライトバック動作において、単一ライン単位の書き込み動作とするか連続２ライン単位の書き込み動作とするかは、書き込み対象のラインのデータ（キャッシュフィルにより追い出されるデータ）が、他のラインと一纏まりとなっているか否かに依存する。書き込み対象の１つのラインのデータが、他の１つのラインと一纏まりとなっている場合には、これらの２つのラインを一纏まりとして、ライトバック動作を実行する。書き込み対象の１つのラインのデータが、他のラインと一纏まりとなっていない場合には、この１つのライン単独で、ライトバック動作を実行する。
【００３１】
あるラインのデータが他のラインのデータと一纏まりとなっているか否かは、管理データアレイに格納する管理データにより指定する。マージフラグアレイ６１−１は、管理データアレイの一例であり、データアレイ６５−１のキャッシュデータ毎に第１の状態又は第２の状態の何れかを示すマージフラグ（管理データの一例）を格納する。第１の状態は、対象キャッシュデータが単一ライン状態であることを示し、第２の状態は、対象キャッシュデータが他のラインと一纏まりである連続ライン状態であることを示す。なお第１の状態は例えばフラグの値０に相当し、第２の状態はフラグの値１に相当してよい。以降の説明において、マージフラグが第２の状態の場合に、マージフラグが「設定されている」、「セットされている」、又は「存在する」等と表現する場合がある。またマージフラグが第１の状態の場合に、マージフラグが「設定されていない」、「セットされていない」、又は「存在しない」等と表現する場合がある。
【００３２】
キャッシュ書込制御回路５３は、単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイ６５−１に格納する場合にはマージフラグアレイ６１−１の対応するマージフラグを第１の状態とする。キャッシュ書込制御回路５３は更に、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインをデータアレイ６５−１に格納する場合にはマージフラグアレイ６１−１の対応するマージフラグを第２の状態とする。ＭＡＣアクセス制御回路５５は、追い出し対象キャッシュデータのライトバック時に、マージフラグアレイ６１−１の対応するマージフラグが第１の状態を示す場合には、追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成する。ＭＡＣアクセス制御回路５５は更に、マージフラグアレイ６１−１の対応するマージフラグが第２の状態を示す場合には、連続複数ラインを書き込む要求を生成する。具体的には、ＭＡＣアクセス制御回路５５は、追い出し対象キャッシュデータと一纏まりとなるデータアレイ６５−１のキャッシュデータと追い出し対象キャッシュデータとを、連続複数ラインとして書き込む要求を生成する。
【００３３】
以上の動作は、偶数バンク２３−１側についての動作であるが、奇数バンク２３−２側についても同様の動作が実行される。なお上記説明において、一纏まりとなるデータとは、１つの偶数インデックスのキャッシュデータと、それに隣接する１つの奇数インデックスのキャッシュデータとである。例えばある偶数インデックスのキャッシュデータが追い出し対象となり、その偶数インデックスのキャッシュデータがマージフラグにより第２の状態であることが示される場合、隣接奇数インデックスの対応キャッシュデータが一纏まりとなる相手方データである。同様に、ある奇数インデックスのキャッシュデータが追い出し対象となり、その奇数インデックスのキャッシュデータがマージフラグにより第２の状態であることが示される場合、隣接偶数インデックスの対応キャッシュデータが一纏まりとなる相手方データである。一纏まりとなる相手方データを特定する方法は、追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータをデータアレイ６５−１から選択すればよい。
【００３４】
上記の選択動作が、アドレス復元回路３４−１及び３４−２、タグ生成回路３８−１及び３８−２、セレクタ４２−１及び４２−２、及びタグ比較回路３５−１及び値３５−２により実現される。具体的には、偶数インデックス側で追い出し対象となったキャッシュデータがある場合、そのデータに対応するタグをアドレス復元回路３４−１に供給し、アドレス復元回路３４−１により追い出し対象データのアドレスを復元する。即ち、アドレスバッファ２１からのアドレス信号と、追い出し対象データに対応するタグとを組み合わせることにより、追い出し対象データのアドレスを復元する。この復元アドレスは、セレクタ４２−２を介してタグ生成回路３８−２に供給され、タグ生成回路３８−２が追い出し対象データのタグを生成する。タグ比較回路３５−２は、奇数バンク２３−２のタグアレイ６４−２から読み出された複数のタグとタグ生成回路３８−２により生成されたタグとを比較し、タグが一致するウェイを特定する。この一致するウェイを特定する情報がセレクタ４１−２に供給され、セレクタ４１−２により一纏まりとなる相手側キャッシュデータが選択されて、ライトバックアドレス＆データバッファ５０に格納される。なお偶数インデックス側でも、タグ比較回路３５−１が、偶数バンク２３−１のタグアレイ６４−１から読み出された複数のタグとタグ生成回路３８−２により生成されたタグとを比較し、タグが一致するウェイを特定する。この一致するウェイを特定する情報がセレクタ４１−１に供給され、セレクタ４１−１により追い出し対象キャッシュデータが選択されて、ライトバックアドレス＆データバッファ５０に格納される。また偶数インデックス側で復元された復元アドレスと奇数インデックス側で復元された復元アドレスとは、双方共にライトバックアドレス＆データバッファ５０に供給される。なお奇数インデックス側で追い出し対象となったキャッシュデータがある場合は、上記の動作が偶数側と奇数側とで逆になる以外は、上記の動作と同様の動作が実行される。
【００３５】
ヒット判定回路４３は、タグ比較回路３１−１及び３１−２からのタグ比較結果に基づいて、ヒットしたバンク及びミスしたバンクを示す情報を生成する。この際、後述するように、ヒット判定回路４３はリクエストアドレスの一部であるインデックスの最下位ビットを参照することにより、真性のヒットのみを検出する。ヒット判定回路４３は、ヒットしたバンク及びミスしたバンクを示す情報を、調停回路４６、セレクタ５６、ＬＲＵ更新制御回路５２、キャッシュ書込制御回路５３、キャッシュ応答制御回路５４、及びＭＡＣアクセス制御回路５５に供給する。マージフラグチェック回路４４は、追出しウェイ選択回路３３−１及び３３−２から供給される追い出しウェイを示す情報に基づいて、追い出し対象のウェイにマージフラグが設定されているか否かをチェックする。チェック結果は調停回路４６に供給される。インデックス比較回路４５は、インデックスを比較する。比較結果は調停回路４６に供給される。調停回路４６は、ヒットしたバンク及びミスしたバンクを示す情報、追い出し対象ウェイのマージフラグの有無に関する情報等に基づいて、選択信号をセレクタ４２−１及び４２−２に供給する。
【００３６】
ＳＲＡＭアクセス制御回路５１は、偶数バンク２３−１及び奇数バンク２３−２に対して、マージフラグアレイ、ＬＲＵアレイ、有効フラグアレイ、タグアレイ、及びデータアレイの読み書きを制御する。ＳＲＡＭアクセス制御回路５１は、上位の記憶階層（キャッシュ）からリクエストが発生すると、それぞれのアレイからバッファにデータを読み出す。またＳＲＡＭアクセス制御回路５１は、メモリアクセスコントローラ１５から応答が返り、バンクのバッファにデータがセットされると、対応するアレイにデータを書き込む。
【００３７】
ＬＲＵ更新制御回路５２は、１ラインデータ要求時又は１ラインキャッシュフィル要求時には、リクエストがヒットした場合、ヒットしたバンク及びウェイを記憶し、リクエストがミスした場合、ミスしたバンクの空きウェイ又は追い出しウェイを記憶する。ＬＲＵ更新制御回路５２は更に、２ラインキャッシュフィル要求時には、リクエストがヒットしたバンクについてヒットしたウェイを記憶し、ミスしたバンクについて空きウェイ又は追い出しウェイを記憶する。なお空きウェイがあるにもかかわらず追い出しがあった場合は空きウェイを優先する。ＬＲＵ更新制御回路５２はまた、メインメモリから読み出したデータのアレイへの書き込み時には、記憶したバンク及びウェイ番号を基にＬＲＵアレイを更新する。
【００３８】
キャッシュ書込制御回路５３は、１ラインデータ要求時又は１ラインキャッシュフィル要求時には、ミスした場合、ミスしたバンクについて空きウェイ又は追い出しウェイを記憶する。他方のバンクについてマージフラグ要因で追い出しが発生した場合、キャッシュ書込制御回路５３は、その追い出しウェイを記憶する。キャッシュ書込制御回路５３は、２ラインキャッシュフィル要求時には、ヒットしたバンクについてはヒットしたウェイを記憶し、マージフラグ要因で追い出しが発生した場合は、追い出しウェイも記憶する。ミスしたバンクについては、キャッシュ書込制御回路５３は、空きウェイ又は追い出しウェイを記憶する。
【００３９】
キャッシュ書込制御回路５３は、１ラインデータ要求時又は１ラインキャッシュフィル要求時に、キャッシュフィルが発生するバンクについては、記憶した空きウェイ又は追い出しウェイに一致するバッファに、タグ、データ、及び有効フラグをセットする。他方のバンクにおいて追い出しが発生していた場合、キャッシュ書込制御回路５３は、追い出したウェイに一致するバッファに無効フラグをセットする。キャッシュ書込制御回路５３は、２ラインキャッシュフィル要求時に、ヒットしたウェイが記憶されていれば当該ウェイに一致するバッファにマージフラグをセットする。但しマージフラグ要因での追い出しウェイが記憶されている場合、キャッシュ書込制御回路５３は、当該ウェイに一致するバッファに無効フラグをセットする。ミスしたバンクについて空きウェイ又は追い出しウェイが記憶されていれば、キャッシュ書込制御回路５３は、当該ウェイに一致するバッファにタグ、データ、有効フラグ、及びマージフラグをセットする。なおここでいうバッファとは、バッファ６６−１乃至７０−１及びバッファ６６−２乃至７０−２のことである。バッファに対するフラグのセットは、マージフラグ制御回路（ＭＦＣ）２４−１及び２４−２、ＬＲＵ制御回路（ＬＣ）２５−１及び２５−２、及び有効フラグ制御回路（ＶＦＣ）２６−１及び２６−２により行われる。
【００４０】
キャッシュ応答制御回路５４は、１ラインデータ要求時に、キャッシュヒットした場合、上位の記憶階層に応答を返し、キャッシュミスした場合、メモリアクセスコントローラ１５からデータが返されたときに応答を返す。
【００４１】
ＭＡＣアクセス制御回路５５は、１ラインデータ要求時又は１ラインキャッシュフィル要求時に、キャッシュミスが発生すると、通常の１ライン分のデータ読み出し要求をメモリアクセスコントローラ１５に送る。またデータ要求のときは、ＭＡＣアクセス制御回路５５は更に、データ応答バッファ４９にデータを返すように指示する。ＭＡＣアクセス制御回路５５は更に、追い出し対象データにマージフラグがない場合は、通常の１ライン分のデータ書き込み要求をメモリアクセスコントローラ１５に送る。追い出し対象データに マージフラグがある場合は、ＭＡＣアクセス制御回路５５は、マージアクセスとして２ライン分のデータの書き込み要求をメモリアクセスコントローラ１５に送る。
【００４２】
ＭＡＣアクセス制御回路５５は、２ラインキャッシュフィル要求時に、両バンクともミスが発生した場合、マージアクセスとして２ライン分の読み出し要求をメモリアクセスコントローラ１５に送る。片方のバンクのみミスが発生した場合、ＭＡＣアクセス制御回路５５は、ミスしたバンク側のデータのみ通常アクセスとして１ライン分の読み出し要求をメモリアクセスコントローラ１５に送る。ＭＡＣアクセス制御回路５５は更に、２ラインキャッシュフィル要求時に、片方のバンクのみ追い出しが発生し且つ追い出し対象データにマージフラグがない場合は、通常の１ライン分のデータ書き込み要求をメモリアクセスコントローラ１５に送る。何れかのバンクの追い出し対象データにマージフラグがある場合は、ＭＡＣアクセス制御回路５５は、マージアクセスとして２ライン分のデータの書き込み要求をメモリアクセスコントローラ１５に送る。また両バンクで追い出しが発生し且つ追い出し対象データにマージフラグがない場合は、ＭＡＣアクセス制御回路５５は、通常アクセスとして独立した２ライン分のデータの書き込み要求をメモリアクセスコントローラ１５に送る。
【００４３】
図３は、１ラインデータ要求時又は１ラインキャッシュフィル要求時の最下位キャッシュメモリ１４の動作の一例を示すフローチャートである。ステップＳ１で、上位の記憶階層からの１ラインデータ要求又は１ラインキャッシュフィル要求が到来する。ステップＳ２で、偶数バンク２３−１及び奇数バンク２３−２に同時にアクセスして、それぞれのバンクからマージフラグ、ＬＲＵ情報、有効フラグ、タグ、及びキャッシュデータを読み出す。なお偶数インデックスはリクエストアドレスの切捨てにより生成し、奇数インデックスはリクエストアドレスの切り上げにより生成してよい。ステップＳ３で、読み出されたタグとリクエストアドレスから生成されたタグを比較する。この比較はタグ比較回路３１−１及び３１−２により実行される。
【００４４】
ステップＳ４で、リクエストアドレスの一部であるインデックスの最下位ビット（偶数か奇数かを決めるビット）が示す方のバンクにおいてタグが一致しているか否かを、ヒット判定回路４３により判定する。例えば、リクエストアドレスが偶数のとき、偶数バンクでタグが一致すると真性のヒットになる。リクエストアドレスが偶数のときに奇数バンクでタグが一致しても、それはアドレスが１増加された位置におけるヒットであり、真性のヒットではない。
【００４５】
キャッシュヒットした場合は、ステップＳ５で、ヒットしたバンクのＬＲＵを更新する。また上位階層からのリクエストがデータ要求であるときは更に、ステップＳ６で、ヒットしたデータをデータ応答バッファ４９に書き込む。ステップＳ７で、上位の記憶階層に完了の応答を返す（フィルリクエストの時は実行しなくてよい）。
【００４６】
キャッシュミスした場合は、ステップＳ８で、空きウェイを判定する。空きウェイがある場合は、後述するフィル処理Ａ−１を実行する。空きウェイがない場合は、ステップＳ９で、追い出しウェィを選択する。なお両方のバンクで空きウェイを選択するが、リクエストアドレスと一致するバンクにおいてのみ正しい動作が実行されることになる。
【００４７】
ステップＳ１０で、選択されたウェイにマージフラグがあるか否かをチェックする。マージフラグがない場合、ステップＳ１１で、リクエストアドレスの奇数又は偶数と一致する方のバンクの追い出しウェイに対応するデータを、ライトバックアドレス＆データバッファ５０に書き込む。なおこの際、調停回路４６は、マージフラグがない場合、リクエストアドレスの奇数又は偶数が一致する方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ４２−１及び４２−２に選択信号を出す。調停回路４６は更に、１ラインのみのライトバックである旨をＭＡＣアクセス制御回路５５に通知する。ステップＳ１２で、１ラインのライトバックデータの追い出しが完了したことを、ＭＡＣアクセス制御回路５５からメモリアクセスコントローラ１５に通知する。その後、後述するフィル処理Ａ−１を実行する。
【００４８】
マージフラグがある場合は、ステップＳ１３で、リクエストアドレスの奇数又は偶数と一致する方のバンクの追い出しウェイに対応するデータと、それと対になる他バンクのデータとを、ライトバックアドレス＆データバッファ５０に書き込む。即ち、追い出し対象ラインとアドレスが連続するラインが他バンクに存在するので、その他バンクの対になるデータもライトバック対象としてライトバックアドレス＆データバッファ５０に格納する。この際、調停回路４６は、マージフラグがある場合、リクエストアドレスの奇数又は偶数が一致する方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ４２−１及び４２−２に選択信号を出す。例えば、リクエストアドレスが偶数のとき、タグ比較回路３５−１及び３５−２の両方に、偶数バンクのアドレス復元器３４−１のアドレスを供給する。調停回路４６は更に、連続２ラインのマージアクセス対象のライトバックである旨をＭＡＣアクセス制御回路５５に通知する。ステップＳ１４で、連続２ラインのライトバックデータの追い出しが完了したことを、ＭＡＣアクセス制御回路５５からメモリアクセスコントローラ１５に通知する。その後、後述するフィル処理Ａ−２を実行する。
【００４９】
図４は、キャッシュフィル処理の一例を示すフローチャートである。フィル処理Ａ−１の場合、ステップＳ１５で、メモリアクセスコントローラ１５から読み出されたデータを該当するバンクの空きウェイに格納すると共に、ＬＲＵを更新する。フィル処理Ａ−２の場合、ステップＳ１６で、メモリアクセスコントローラ１５から読み出されたデータを該当するバンクの空きウェイに格納すると共に、他バンク側では空になったウェイの有効フラグアレイに無効を示すデータを書き込む。更に、ＬＲＵを更新する。その後、ステップＳ１７で、データ要求の場合には、データ応答バッファ４９にもデータを書き込み、上位の記憶階層に完了の応答を返す。
【００５０】
図５は、２ラインキャッシュフィル要求時の最下位キャッシュメモリ１４の動作の一例を示すフローチャートである。ステップＳ２１で、上位の記憶階層からの連続２ラインのキャッシュフィル要求が到来する。ステップＳ２２で、偶数バンク２３−１及び奇数バンク２３−２に同時にアクセスして、それぞれのバンクからマージフラグ、ＬＲＵ情報、有効フラグ、タグ、及びキャッシュデータを読み出す。なお２ラインのキャッシュフィル要求の場合は、リクエストアドレスは常に偶数アドレスである。ステップＳ２３で、読み出されたタグとリクエストアドレスから生成されたタグを比較する。この比較はタグ比較回路３１−１及び３１−２により実行される。
【００５１】
ステップＳ２４で、両方のバンクにおいてタグが一致しているか否かを、ヒット判定回路４３により判定する。両方のバンクにおいてキャッシュヒットした場合は、ステップＳ２５で、両方のバンクにおいてＬＲＵを更新する。
【００５２】
少なくとも１つのバンクにおいてタグが不一致の場合、ステップＳ２６で、両方のバンクにおいてタグが不一致か否かを判定する。片方のバンクのみでミスの場合は、後述のミス側フィル処理Ｃ−１を実行する。両方のバンクにおいてミスの場合は、ステップＳ２７で、両方のバンクにおいて空きウェイのチェックを行う。両方のバンクに空きがある場合は、後述するフィル処理Ｂ−１を実行する。
【００５３】
少なくとも一方のバンクにおいて空きが無い場合、ステップＳ２８で、両方のバンクで追い出しが必要か否かを判定する。即ち、両方のバンクとも空きウェイがないか、或いは片方だけ空きウェイがないのか、を判定する。片方のバンクでのみ追い出しが必要な場合、後述するフィル処理Ｃ−２を実行する。
【００５４】
両方のバンクで追い出しが必要な場合、ステップＳ２９で、両方のバンクのそれぞれにおいて、追い出しウェイを選択する。その後ステップＳ３０で、マージフラグの状態を判定する。マージフラグの状態としては、両バンクともマージフラグが存在する場合、片方のバンクにだけマージフラグが存在する場合、両方のバンクでマージフラグが存在しない場合がある。
【００５５】
両方のバンクにおいてマージフラグが存在する場合、ステップＳ３１で、偶数バンクから選択された追い出しウェイのデータをライトバックアドレス＆データバッファ５０に書き込む。更に、奇数バンクから対になるデータを追い出し、ライトバックアドレス＆データバッファ５０に書き込む。なお一方のバンクのラインに対してアドレスが連続するラインが他方のバンクに存在するが、両方のバンクにおいてＬＲＵに基づいて追い出しウェイを選択した際に、互いに対になる連続２ラインに相当するウェイが追い出し対象として選択されているとは限らない。そのためここでは、偶数バンクの結果を優先して使用している。代替的に、偶数バンクではなく、奇数バンクの結果を優先してもよい。即ち、連続複数ラインでのキャッシュフィル要求に応じて選択された少なくとも２つの追い出し対象キャッシュデータに対してマージフラグがある場合には、少なくとも２つの追い出し対象キャッシュデータのうちの１つの追い出し対象キャッシュデータを選択する。この際、調停回路４６は、偶数バンクのアドレス復元回路３４−１からのデータを出力するようにセレクタ４２−１及び４２−２に選択信号を供給する。これにより、選択された１つの追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、選択された１つの追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータをデータアレイにおいて特定する。そして、特定されたキャッシュデータと上記選択された１つの追い出し対象キャッシュデータとをライトバック用のライトバックアドレス＆データバッファ５０に格納する。調停回路４６は、更に、連続２ラインのマージアクセス対象のライトバックであることをＭＡＣアクセス制御回路５５に通知する。
【００５６】
マージフラグが片方のバンクのみに存在する場合は、ステップＳ３３で、マージフラグのあるバンクから選択された追い出しウェイのデータをライトバックアドレス＆データバッファ５０に書き込む。更に、他方のバンクから対になるデータを追い出し、ライトバックアドレス＆データバッファ５０に書き込む。上記他方のバンクにおけるＬＲＵによる追い出しウェイの選択結果は無視される。この際、調停回路４６は、マージフラグのあるバンクのアドレス復元回路からのデータを出力するようにセレクタ４２−１及び４２−２に選択信号を供給する。調停回路４６は、更に、連続２ラインのマージアクセス対象のライトバックであることをＭＡＣアクセス制御回路５５に通知する。
【００５７】
ステップＳ３１及びＳ３３に続き、ステップＳ３２で、ＭＡＣアクセス制御回路５５は、連続２ラインのライトバックデータの追い出しが完了したことを、メモリアクセスコントローラ１５に通知する。
【００５８】
マージフラグが両方のバンクにおいて存在しない場合は、ステップＳ３４で、それぞれのバンクにおいて、ＬＲＵにより選択された追い出し対象ウェイのデータをライトバックアドレス＆データバッファ５０に書き込む。この際、調停回路４６は、両方のバンクにおいてそれぞれのアドレス復元回路３４−１及び３４−２からのデータを出力するように、セレクタ４２−１及び４２−２に選択信号を供給する。調停回路４６は更に、２ライン分のライトバックである旨をＭＡＣアクセス制御回路５５に通知する。
【００５９】
ステップＳ３４に続き、ステップＳ３５で、ＭＡＣアクセス制御回路５５は、それぞれ独立にメインメモリに書き込むべき２ラインのライトバックデータの追い出しが完了したことを、メモリアクセスコントローラ１５に通知する。
【００６０】
図６は、ミス側フィル処理Ｃ−１の一例を示すフローチャートである。偶数バンク側と奇数バンク側との片方のみミスした場合は、ミスした側においてキャッシュフィル処理が実行される。
【００６１】
ステップＳ４１で、空きウェイがあるか否かをチェックする。空きウェイが有る場合は、後述するフィル処理Ｂ−２を実行する。空きウェイが無い場合は、ステップＳ４２で、ミスしたバンクにおいて追い出しウェイをＬＲＵに従って選択する。次にステップＳ４３で、選択されたウェイにマージフラグがあるか否かをチェックする。マージフラグがない場合、ステップＳ４４で、ミスした方のバンクの追い出しウェイに対応するデータを、ライトバックアドレス＆データバッファ５０に書き込む。なおこの際、調停回路４６は、マージフラグがない場合、ミスした方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ４２−１及び４２−２に選択信号を出す。調停回路４６は更に、１ラインのみのライトバックである旨及びライトバックするバンクをＭＡＣアクセス制御回路５５に通知する。ステップＳ４５で、１ラインのライトバックデータの追い出しが完了したことを、ＭＡＣアクセス制御回路５５からメモリアクセスコントローラ１５に通知する。その後、後述するフィル処理Ｂ−２を実行する。
【００６２】
マージフラグがある場合は、ステップＳ４６で、ミスした方のバンクの追い出しウェイに対応するデータと、それと対になる他バンクのデータとを、ライトバックアドレス＆データバッファ５０に書き込む。即ち、追い出し対象ラインとアドレスが連続するラインが他バンクに存在するので、その他バンクの対になるデータもライトバック対象としてライトバックアドレス＆データバッファ５０に格納する。この際、調停回路４６は、マージフラグがある場合、ミスした方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ４２−１及び４２−２に選択信号を出す。調停回路４６は更に、連続２ラインのマージアクセス対象のライトバックである旨をＭＡＣアクセス制御回路５５に通知する。ステップＳ４７で、連続２ラインのライトバックデータの追い出しが完了したことを、ＭＡＣアクセス制御回路５５からメモリアクセスコントローラ１５に通知する。その後、後述するフィル処理Ｂ−３を実行する。
【００６３】
図７はフィル処理Ｃ−２の一例を示すフローチャートである。偶数バンク側と奇数バンク側との片方のみ追い出しが必要な場合（空きウェイがない場合）は、追い出しが必要な方のバンクにおいてキャッシュフィル処理が実行される。
【００６４】
ステップＳ５１で、追い出しが必要な方のバンクにおいて追い出しウェイをＬＲＵに従って選択する。次にステップＳ５２で、選択されたウェイにマージフラグがあるか否かをチェックする。マージフラグがない場合、ステップＳ５３で、追い出しが必要な方のバンクの追い出しウェイに対応するデータを、ライトバックアドレス＆データバッファ５０に書き込む。なおこの際、調停回路４６は、マージフラグがない場合、追い出しが必要な方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ４２−１及び４２−２に選択信号を出す。調停回路４６は更に、１ラインのみのライトバックである旨及びライトバックするバンクをＭＡＣアクセス制御回路５５に通知する。ステップＳ５４で、１ラインのライトバックデータの追い出しが完了したことを、ＭＡＣアクセス制御回路５５からメモリアクセスコントローラ１５に通知する。その後、後述するフィル処理Ｂ−２を実行する。
【００６５】
マージフラグがある場合は、ステップＳ５５で、追い出しが必要な方のバンクの追い出しウェイに対応するデータと、それと対になる他バンクのデータとを、ライトバックアドレス＆データバッファ５０に書き込む。即ち、追い出し対象ラインとアドレスが連続するラインが他バンクに存在するので、その他バンクの対になるデータもライトバック対象としてライトバックアドレス＆データバッファ５０に格納する。この際、調停回路４６は、マージフラグがある場合、追い出しが必要な方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ４２−１及び４２−２に選択信号を出す。調停回路４６は更に、連続２ラインのマージアクセス対象のライトバックである旨をＭＡＣアクセス制御回路５５に通知する。ステップＳ５６で、連続２ラインのライトバックデータの追い出しが完了したことを、ＭＡＣアクセス制御回路５５からメモリアクセスコントローラ１５に通知する。その後、後述するフィル処理Ｂ−４を実行する。
【００６６】
図８は、フィル処理Ｂ−１乃至Ｂ−４の一例を示すフローチャートである。図８（ａ）に示すフィル処理Ｂ−１では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ１５から読み出された２ライン分のデータを格納すると共に、ＬＲＵを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。図８（ｂ）に示すフィル処理Ｂ−２では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ１５から読み出された１ライン分のデータを格納すると共に、ＬＲＵを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。更に、ヒットしたバンクのデータはフィルしたデータと対になるデータであるため、ヒットしたバンクの当該マージフラグアレイにもマージフラグをセットする。図８（ｃ）に示すフィル処理Ｂ−３では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ１５から読み出された１ライン分のデータを格納すると共に、ＬＲＵを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。更に、ヒットしたバンクのデータはフィルしたデータと対になるデータであるため、ヒットしたバンクの当該マージフラグアレイにもマージフラグをセットする。更に、空になったバンクの空きウェイには有効フラグを無効にセットする。図８（ｄ）に示すフィル処理Ｂ−４では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ１５から読み出された２ライン分のデータを格納すると共に、ＬＲＵを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。
【００６７】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００６８】
１０  ＣＰＵ
１１  ＤＩＭＭ
１２  演算部
１３  最上位キャッシュメモリ
１４  最下位キャッシュメモリ
１５  メモリアクセスコントローラ
４３  ヒット判定回路
４４  マージフラグチェック回路
４５  インデックス比較回路
４６  調停回路
５１  ＳＲＡＭアクセス制御回路
５２  ＬＲＵ更新制御回路
５３  キャッシュ書込制御回路
５４  キャッシュ応答制御回路
５５  ＭＡＣアクセス制御回路
【図１】
2014016812.tif 000003
【図２】
2014016812.tif 000004
【図３】
2014016812.tif 000005
【図４】
2014016812.tif 000006
【図５】
2014016812.tif 000007
【図６】
2014016812.tif 000008
【図７】
2014016812.tif 000009
【図８】
2014016812.tif 000010