(57)【要約】【課題】多段パイプライン構造のキャッシュメモリにおいて、ミスヒット時に、後続のメモリアクセスが存在しない場合、データの整合性を維持するためのウェイト信号の出力を減らし、連続するメモリアクセスを効率的に処理すること。【解決手段】本発明にかかるキャッシュメモリ１は、ヒット判定部１２により入力アドレスがミスヒットと判定された場合に、タグメモリ１１とデータメモリ１０の更新処理を行い、後続のメモリアクセスが存在するか否かを判定し、後続のメモリアクセスが存在すると判定した場合に、プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号をプロセッサ２へ出力し、後続のメモリアクセスが存在しないと判定した場合に、ウェイト信号を出力しない。【選択図】図３
2010102623.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するキャッシュメモリであって、
前記低速メモリの部分集合に相当するデータを格納するデータメモリと、
前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、
前記プロセッサより入力される入力アドレスに含まれる第１のインデックスアドレスを用いて前記タグメモリを検索することにより得られるタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定するヒット判定部と、コントローラとを備え、
前記コントローラは、
前記ヒット判定部により前記入力アドレスがミスヒットと判定された場合に、前記タグメモリと前記データメモリの更新処理を行い、後続のメモリアクセスが存在するか否かを判定し、
前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない、
ことを特徴とするキャッシュメモリ。
【請求項２】
前記コントローラは、前記第１のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第２のインデックスアドレスとを比較し、少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項１に記載のキャッシュメモリ。
【請求項３】
前記コントローラは、前記後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、前記後続のメモリアクセスが存在すると判定する、請求項１又は２に記載のキャッシュメモリ。
【請求項４】
前記コントローラは、前記後続のメモリアクセスがロード命令又はストア命令のいずれかであるか否かを判定し、前記ロード命令又は前記ストア命令である場合に、前記第１のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第２のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定し、前記少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項１乃至３のいずれか１項に記載のキャッシュメモリ。
【請求項５】
前記コントローラは、前記第１のインデックスアドレスと前記第２のインデックスアドレスとのそれぞれにおける予め定められた下位ビット同士が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項２又は４に記載のキャッシュメモリ。
【請求項６】
プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するキャッシュメモリの制御方法であって、
前記キャッシュメモリは、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、
前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、を備え、
前記プロセッサより入力される入力アドレスに含まれる第１のインデックスアドレスを用いて前記タグメモリからタグアドレスを検索する検索ステップと、
前記検索ステップにより検索されたタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定する判定ステップと、
前記判定ステップにおいてミスヒットと判定された場合に、前記タグメモリと前記データメモリを更新するステップと、
前記判定ステップにおいてミスヒットと判定された場合に、後続のメモリアクセスが存在するか否かを判定し、前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない、ウェイト信号出力制御ステップとを含む、
キャッシュメモリの制御方法。
【請求項７】
前記ウェイト信号出力制御ステップにおいて、前記第１のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第２のインデックスアドレスとを比較し、少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項６に記載の制御方法。
【請求項８】
前記ウェイト信号出力制御ステップにおいて、前記後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、前記後続のメモリアクセスが存在すると判定する、請求項６又は７に記載の制御方法。
【請求項９】
前記ウェイト信号出力制御ステップにおいて、前記後続のメモリアクセスがロード命令又はストア命令のいずれかであるか否かを判定し、前記ロード命令又は前記ストア命令である場合に、前記第１のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第２のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定し、前記少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項６乃至８のいずれか１項に記載の制御方法。
【請求項１０】
前記ウェイト信号出力制御ステップにおいて、前記第１のインデックスアドレスと前記第２のインデックスアドレスとのそれぞれにおける予め定められた下位ビット同士が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項６又は８に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサによるメモリアクセスを複数の処理ステージに分割されたパイプラインにより処理するキャッシュメモリ及びその制御方法に関する。
【背景技術】
【０００２】
クロック同期式ＳＲＡＭ（シンクロナスＳＲＡＭ）等を利用し、パイプライン構造を採用したキャッシュメモリが実用化されている。このようなパイプライン構造を有するキャッシュメモリは、プロセッサと低速メモリの間に配置され、プロセッサによるメモリアクセスを複数の処理ステージに分割されたパイプラインにより処理する（例えば、特許文献１を参照）。ここで、パイプライン構造のキャッシュメモリにメモリアクセス要求を行うプロセッサは、典型的にはＲＩＳＣ（Reduced Instruction Set Computer）方式のマイクロプロセッサであるが、ＣＩＳＣ（Complex Instruction Set Computer）方式のプロセッサである場合や、音声処理や画像処理等のデジタル信号処理を行うＤＳＰ（Digital Signal Processor）である場合もある。また、パイプライン構造のキャッシュメモリが２次キャッシュ以下で使用される場合であれば、当該キャッシュメモリにメモリアクセス要求を行うプロセッサは、上位キャッシュメモリとなる。
【０００３】
キャッシュメモリのパイプラインステージ数を増加させることによりスループットの向上が期待できるが、その半面、キャッシュアクセス時間、つまり、プロセッサがアクセス要求をキャッシュメモリに与えてから結果が得られるまでの時間は増加することになる。このようなキャッシュアクセス時間の増加を避けるために、キャッシュメモリのパイプラインステージ数を２段とすることが一般的である。
【０００４】
一方、キャッシュメモリの消費電力を削減するために、特にセットアソシアティブ方式のキャッシュメモリにおいては、ロード要求に応答してデータメモリの全てのウェイからデータの読み出しを行うのではなく、ヒットしたウェイにのみアクセスしてデータの読み出しを行う構成も知られている。
【０００５】
２段パイプライン構造を有する従来のキャッシュメモリの構成例を図８に示す。図８に示すキャッシュメモリ８は、プロセッサ２と低速メモリである主記憶３との間に設けられた４ウェイ・セットアソシアティブ方式のキャッシュメモリである。キャッシュメモリ８とプロセッサ２との間は、アドレスバス４、データバス５及びウェイト信号線７により接続されている。また、キャッシュメモリ８と主記憶３の間はメモリバス６により接続されている。
【０００６】
キャッシュメモリ８が有するデータメモリ１０は、主記憶３に格納されているデータの部分集合に相当するデータを格納するためのメモリである。データメモリ１０の記憶領域は、物理的又は論理的に４つのウェイに分割されている。また、各ウェイはさらにラインと呼ばれる複数ワードのデータ格納単位により管理される。データメモリ１０のデータ格納位置は、アドレスバス４から入力される入力アドレスの下位部分をデコードすることによって指定される。具体的には、入力アドレスの下位部分の上位側であるインデックスアドレスによりラインが指定され、入力アドレスの最下位部分であるワードアドレスによりライン内でのワード位置が指定される。入力アドレスの一例を図１０に示す。ワードアドレス、インデックスアドレス及び上位部分のタグアドレスのそれぞれのビット数は、キャッシュメモリ８のウェイ数、１ウェイに含まれるライン数、及び１ラインに含まれるワード数をどのように設計するかに応じて定められる。
【０００７】
タグメモリ１１は、データメモリ１０にライン単位で格納されているデータに対応するタグアドレスを格納するメモリである。タグメモリ１１は、入力アドレスに含まれるインデックスアドレスによってアクセスされ、インデックスアドレスをデコードすることにより特定されたタグアドレスを出力する。なお、キャッシュメモリ８は４ウェイ方式であるため、１つのインデックスアドレスに対し４つのウェイに対応する４つのタグアドドレスを出力する。また、タグメモリ１１は、格納されたタグアドレスの有効性を示すバリッドフラッグ（不図示）と、ストアアクセスによりデータメモリ１０が更新されたことにより、データメモリ１０の保持データと主記憶３の保持データの間に不整合が生じていることを示すダーティフラグ（不図示）を保持している。
【０００８】
ヒット判定部１２は、入力アドレスに含まれるタグアドレスと、タグメモリ１１から出力される４つのタグアドレスとの比較によって、キャッシュヒットであるかミスヒットであるかを判定する。具体的には、入力アドレスに含まれるタグアドレスとタグメモリ１１の出力とが一致する場合にキャッシュヒットを示す信号を出力し、不一致である場合にキャッシュミスを示す信号を出力する。ヒット判定部１２の出力信号は、１ウェイ毎のヒット判定結果をそれぞれ１ビットの論理値で示す合計４ビットの信号である。また、ヒット判定部１２の出力信号は、ヒット判定信号線２２を経由してコントローラ８３へ入力される。
【０００９】
コントローラ８３は、ヒット判定部１２によりキャッシュヒットと判定された場合に、チップセレクト信号（ＣＳ信号）及びリードストローブ信号（ＲＳ信号）をデータメモリ１０に出力することによりデータメモリ１０からのデータ読み出しを制御する。一方、ヒット判定部１２によりミスヒットと判定された場合に、コントローラ８３は、入力アドレスに含まれるタグアドレスによるタグメモリ１１の書き換え制御、データリフィル制御を行う。ここで、データリフィル制御とは、主記憶３からのデータ読み出し、及び、主記憶から読み出されたデータによるデータメモリ１０の書き換えの制御である。また、コントローラ８３は、ミスヒットの発生をプロセッサ２に通知するためにウェイト信号線７を用いてウェイト信号を出力する。
【００１０】
アドレスラッチ１４は、入力アドレスの少なくともタグアドレス部分を１クロックサイクルだけ保持する回路であり、例えば、Ｄフリップフロップにより構成することができる。アドレスラッチ１４の保持するデータは、タグメモリ１１の書き換えを行う際の入力データとして利用される。
【００１１】
次に、図９を参照してキャッシュメモリ８の動作を説明する。図９は、プロセッサ２によるロード要求に対するキャッシュメモリ８のパイプライン動作を示しており、図９の（ａ）がキャッシュヒット時の動作、図９の（ｂ）がミスヒット時の動作を示している。まず、パイプラインの第１ステージにおいて、プロセッサ２から入力される入力アドレスによりタグメモリ１１がアクセスされ、これに対応するタグアドレスが読み出される。さらに、同じ第１ステージにおいて、ヒット判定部１２よりヒット判定が行われる。
【００１２】
ヒット判定部１２による判定がキャッシュヒットである場合は、第１ステージの終端において、入力アドレス、ＣＳ信号及びＲＳ信号がデータメモリ１０に入力される。また、図９の（ａ）に示すように、第１ステージに引き続く第２ステージにおいて、データメモリ１０からデータが読み出され、読み出されたデータがプロセッサ２に出力される。キャッシュメモリ８の出力データは、汎用レジスタ等のプロセッサ２の所定の格納領域に格納される。
【００１３】
一方、ヒット判定部１２による判定がミスヒットである場合は、第１ステージの終端におけるＣＳ信号及びＲＳ信号の出力は行われない。そして、図９の（ｂ）に示すように、第１ステージに引き続く第２ステージにおいて、置換ウェイを決定する処理、タグメモリ１１に保持されている置換ウェイに決定されたラインに対応するタグアドレスを入力アドレスのタグアドレスによって更新する処理が行われる。また、同じく第２ステージにおいて、メモリバス６を介して接続された主記憶３に対するリードアクセスが行われ、入力アドレスに対応するデータが主記憶３から読み出されてデータメモリ１０に格納される。さらに、同じく第２ステージにおいて、主記憶３から読み出されたデータがプロセッサ２に出力される。
【００１４】
また、特許文献２には、図８に示すような従来のキャッシュメモリ８に対して、動作周波数の向上を行うために、タグメモリからのタグアドレス読み出し処理とヒット判定処理とを異なるパイプラインステージに分割し、ミスヒット時に、タグメモリの更新処理と共に、タグアドレスを迂回させてヒット判定部に入力させるキャッシュメモリに関する技術が開示されている。図１１は、特許文献２にかかるキャッシュメモリ８ａの構成図である。図１１を参照し、以下にキャッシュメモリ８ａの動作の概要を説明する。キャッシュメモリ８ａは、まず、第１ステージで、タグメモリ１１からのタグアドレスの読み出しを実行する。次に、第２ステージで、ヒット判定部１２によるヒット判定を実行する。そして、キャッシュヒットの場合には、第３ステージ以降で、データメモリ１０からのデータ読み出しと、データメモリ１０から読み出されたデータのプロセッサ２への出力を実行する。一方、ミスヒットの場合には、第３ステージで、コントローラ８３ａによるタグメモリ１１の更新制御及びタグメモリ１１を迂回してアドレスラッチ１７の保持データをヒット判定部１２に入力するためのセレクタ１９の制御を実行し、併せて、キャッシュメモリ８ａのパイプライン処理をストールさせ、プロセッサ２のパイプライン処理をストールさせるためのウェイト信号をプロセッサ２へ出力する。第４ステージ以降で、主記憶３からのデータ読み出しによるデータメモリ１０の更新と、主記憶３から読み出されたデータのプロセッサ２への出力を実行する。
【特許文献１】特開平１０−６３５７５号公報
【特許文献２】特開２００８−１０７９８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、特許文献２におけるミスヒット時の処理には、改良の余地がある。それは、特許文献２は、ミスヒットの場合、後続するメモリアクセスが存在するか否かに関わらず、プロセッサへウェイト信号を常に出力する点である。
【００１６】
ミスヒット時に、キャッシュメモリのパイプライン処理をストールさせ、ウェイト信号を出力することは、直後のメモリアクセス要求がミスヒットの発生した直前のメモリアクセス要求と同一メモリブロックに対するアクセスである場合には、主記憶とキャッシュメモリとのデータの整合性を維持するために有効である。それは、あるメモリアクセス要求においてミスヒットが発生しタグメモリの更新が行われ、直後のメモリアクセス要求におけるヒット判定に直前のメモリアクセス要求でのミスヒット発生によるタグメモリの更新を反映することができるためである。
【００１７】
しかし、あるメモリアクセス要求においてミスヒットが発生しタグメモリの更新が行われる場合でもあっても、後続するメモリアクセスが存在しない場合に、キャッシュメモリのパイプライン処理をストールさせ、ウェイト信号を出力することは、必ずしも有効とは言えない。例えば、直後のメモリアクセス要求がミスヒットの発生した直前のメモリアクセス要求と異なるメモリブロックに対するアクセスである場合には、キャッシュメモリのパイプライン処理をストールさせ、ウェイト信号を出力しなくても、無駄なデータリフィル処理を行うという問題は生じない。または、直後の処理がロード命令又はストア命令でない場合には、本来ミスヒットと判定すべきところをキャッシュヒットと誤判定し、誤ったデータの読み出しが実行されてしまうという問題は生じない。そのため、直後のメモリアクセス要求には、直前のメモリアクセス要求でのミスヒット発生によるタグメモリの更新を反映する必要がない場合がある。
【課題を解決するための手段】
【００１８】
本発明にかかるキャッシュメモリは、プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するものであって、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、前記プロセッサより入力される入力アドレスに含まれる第１のインデックスアドレスを用いて前記タグメモリを検索することにより得られるタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定するヒット判定部と、コントローラとを備える。前記コントローラは、前記ヒット判定部により前記入力アドレスがミスヒットと判定された場合に、前記タグメモリと前記データメモリの更新処理を行い、後続のメモリアクセスが存在するか否かを判定し、前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない。
【００１９】
本発明にかかるキャッシュメモリの制御方法は、プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するものであって、前記キャッシュメモリは、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、を備える。当該制御方法は、前記プロセッサより入力される入力アドレスに含まれる第１のインデックスアドレスを用いて前記タグメモリからタグアドレスを検索する検索ステップと、前記検索ステップにより検索されたタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定する判定ステップと、前記判定ステップにおいてミスヒットと判定された場合に、前記タグメモリと前記データメモリを更新するステップと、前記判定ステップにおいてミスヒットと判定された場合に、後続のメモリアクセスが存在するか否かを判定し、前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない、ウェイト信号出力制御ステップとを含む。
【００２０】
上述した本発明にかかるキャッシュメモリ及びその制御方法によれば、ミスヒットの場合に、後続のメモリアクセスに応じてウェイト信号の出力を制御する。そのため、後続のメモリアクセスが直前のメモリアクセスのデータメモリの更新処理に影響しない場合、プロセッサのパイプライン処理をストールさせないため、後続の処理を遅らせることなく進めることができる。
【発明の効果】
【００２１】
本発明により、ミスヒット時に、後続のメモリアクセスが存在しない場合、データの整合性を維持するためのウェイト信号の出力を減らし、連続するメモリアクセスを効率的に処理することができるキャッシュメモリ及びその制御方法を提供することができる。
【発明を実施するための最良の形態】
【００２２】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２３】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるキャッシュメモリの構成図である。本発明の実施の形態１にかかるキャッシュメモリ１は、４ウェイ・セットアソシアティブ方式のキャッシュメモリである。なお、図８に示した従来のキャッシュメモリ８との対比を容易にするために、４ウェイ・セットアソシアティブ構成としているが当該構成は一例である。つまり、キャッシュメモリ１のウェイ数は他の数でもよく、またダイレクトマップ方式であっても良い。
【００２４】
なお、キャッシュメモリ１が有するデータメモリ１０、タグメモリ１１、ヒット判定部１２及びデータラッチ１４は、図８に示した構成要素と同様であるため、対応する構成要素と同一の符号を付して詳細な説明を省略する。
【００２５】
キャッシュメモリ１は、プロセッサ２と低速メモリである主記憶３の間に配置されて、プロセッサ２によるメモリアクセスをパイプライン処理する。また、キャッシュメモリ１とプロセッサ２との間は、アドレスバス４、データバス５、ウェイト信号線７に加え、制御信号線２３によりさらに接続されている。プロセッサ２は、制御信号線２３を経由して、メモリアクセスにおけるロード命令であることを示すフラグ及びストア命令であることを示すフラグを含む制御信号をコントローラ１３へ入力する。あるメモリアクセスにおける制御信号は、アドレスバス４を経由して入力される当該メモリアクセスにおける入力アドレスとほぼ同じタイミングで入力されるものである。
【００２６】
キャッシュメモリ１が有するコントローラ１３のキャッシュヒット時の動作は、従来のコントローラ８３と同様である。つまり、コントローラ１３は、ヒット判定部１２によりキャッシュヒットと判定された場合に、チップセレクト信号（ＣＳ信号）及びリードストローブ信号（ＲＳ信号）をデータメモリ１０に出力することによりデータメモリ１０からのデータ読み出しを制御する。
【００２７】
また、ヒット判定部１２によりミスヒットと判定された場合に、コントローラ１３は、タグメモリ１１に保持されているタグアドレスを入力アドレスに含まれるタグアドレスによって更新するタグメモリ更新処理、主記憶３からデータを読み出し、当該データによりデータメモリ１０を更新するデータメモリ更新処理、及び、読み出されたデータをプロセッサ２へ出力する処理を制御する。
【００２８】
さらに、ヒット判定部１２によりミスヒットと判定された場合に、コントローラ１３は、後続のメモリアクセスが存在するか否かを判定する。そして、コントローラ１３は、後続のメモリアクセスが存在すると判定した場合に、キャッシュメモリ１のパイプライン処理に対する少なくとも１クロックサイクルのパイプラインストールを発生させる処理、及び、プロセッサ２のパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号をプロセッサ２へ出力するウェイト出力制御処理を実行する。
【００２９】
また、コントローラ１３は、後続のメモリアクセスが存在しないと判定した場合には、ウェイト出力制御処理を実行しない。
【００３０】
これにより、キャッシュメモリ１は、あるメモリアクセスにおいてミスヒット、かつ、後続するメモリアクセスが存在する場合には、キャッシュメモリ１のパイプライン処理をストールさせ、ウェイト信号を出力してプロセッサ２のパイプライン処理をストールさせることができ、後続のメモリアクセスの処理において、無駄なデータリフィル処理や誤ったデータの読み出しを防ぎ、適切に処理することができる。また、キャッシュメモリ１は、あるメモリアクセスにおいてミスヒット、かつ、後続するメモリアクセスが存在しない場合には、キャッシュメモリ１及びプロセッサ２のパイプライン処理をストールさせないため、後続のメモリアクセスの処理において、不必要に遅らせることなく処理することができる。
【００３１】
ここで、ミスヒットと判定された場合に、コントローラ１３は、制御信号線２３を経由して入力される当該ミスヒットと判定されたメモリアクセスの次のメモリアクセスに対応する制御信号に含まれるフラグを参照し、当該フラグが有効であるか否かを確認する。コントローラ１３は、当該フラグが有効、すなわち、次のメモリアクセスがロード命令又はストア命令のいずれかである場合、後続のメモリアクセスが存在すると判定する。また、コントローラ１３は、当該フラグが無効、すなわち、次のメモリアクセスがロード命令及びストア命令のいずれでもない場合、後続のメモリアクセスが存在しないと判定する。これにより、後続のメモリアクセスの有無判定を簡易に行うことができる。
【００３２】
そして、後続のメモリアクセスが存在する場合に、コントローラ１３は、ウェイト信号をプロセッサ２へ出力する。また、後続のメモリアクセスが存在しない場合に、コントローラ１３は、ウェイト信号を出力しない。これにより、メモリへのロード及びストアが発生しない場合、後続の処理を遅らせることなく進めることができる。
【００３３】
図２は、本発明の実施の形態１にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。まず、ミスヒット時に、コントローラ１３は、ミスヒットと判定されたメモリアクセスの次のメモリアクセスに対応する制御信号に含まれるフラグを参照し、ロード命令又はストア命令であるかにより後続のメモリアクセスが存在するか否かを判定する（Ｓ１０１）。
【００３４】
ロード命令又はストア命令である場合、コントローラ１３は、キャッシュメモリ１のパイプライン処理をストールさせ、プロセッサ２へウェイト信号を出力する（Ｓ１０２）。そのため、この後、キャッシュメモリ１及びプロセッサ２のパイプライン処理はストールされ、後続のメモリアクセスに対する処理は、更新後のタグメモリ１１に対して行われる。
【００３５】
ステップＳ１０１においてロード命令又はストア命令のいずれでもない場合、コントローラ１３は、キャッシュメモリ１のパイプライン処理をストールさせず、プロセッサ２へウェイト信号を出力しない。そのため、この後、後続のメモリアクセスに対する処理は、タグメモリ１１の更新を待たずに、引き続いて行われる。
【００３６】
図３は、本発明の実施の形態１にかかるキャッシュメモリによるパイプライン処理を示す図である。尚、図３の（ａ）キャッシュヒット時の動作は、図９の（ａ）と同様であるため、説明を省略する。
【００３７】
図３の（ｂ）ミスヒット及び後続メモリアクセスなしの場合、コントローラ１３は、第２ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、なしと判定する。つまり、このとき、コントローラ１３は、ウェイト信号を出力しない。
【００３８】
また、コントローラ１３は、タグメモリの更新処理及びデータメモリの更新処理の制御を行う。コントローラ１３は、タグメモリの更新処理として、例えば、図９の（ｂ）と同様に置換ウェイを決定する処理及びタグメモリ１１の書き換え処理を行う。また、コントローラ１３は、データメモリの更新処理として、例えば、図９の（ｂ）と同様に主記憶３からデータを読み出し、データメモリ１０へ格納する処理及び主記憶３から読み出されたデータをプロセッサ２へ出力する処理を行う。
【００３９】
図３の（ｃ）ミスヒット及び後続メモリアクセスありの場合、コントローラ１３は、第２ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、ありと判定する。そして、コントローラ１３は、引き続き第２ステージにおいて、キャッシュメモリ１のパイプライン処理をストールさせ、プロセッサ２へウェイト信号を出力する。これにより、クロックサイクルＣ２以降も引き続き第２ステージとなる。また、コントローラ１３は、第２ステージにおいて、タグメモリの更新処理及びデータメモリの更新処理の制御を行う。
【００４０】
このように、本発明の実施の形態１によれば、ミスヒット時に、後続のメモリアクセスが存在しない場合、データの整合性を維持するためのウェイト信号の発生を減らし、連続するメモリアクセスを効率的に処理することができる。
【００４１】
特に、本発明の実施の形態１は、プロセッサ２の周波数が高い場合に、後続のメモリアクセスの有無判定を簡略化できるために効果が高い。
【００４２】
＜発明の実施の形態２＞
本発明の実施の形態２にかかるキャッシュメモリは、特許文献２を改良し、本発明を適用した例である。図４は、本発明の実施の形態２にかかるキャッシュメモリ１ａの構成図である。尚、本発明の実施の形態２では、４ウェイ・セットアソシアティブ構成としているが、本発明の実施の形態１と同様に、これに限定されない。また、図４に記載された構成要素の内、特許文献２に開示されたもの又は図１と同様のものについては、同一の符号を付して詳細な説明を省略する。
【００４３】
図４は、図１１に比較して、本発明の実施の形態１にかかる図１と同様の制御信号線２３が追加されている。
【００４４】
また、キャッシュメモリ１ａにおいて、アドレスラッチ１６とコントローラ１３ａの間は、第１インデックスアドレスバス２４により接続されている。そのため、アドレスラッチ１６に格納された入力アドレスは、ヒット判定部１２に入力されると共に、コントローラ１３ａへも入力される。尚、コントローラ１３ａには、アドレスラッチ１６に格納された入力アドレスの内、少なくともインデックスアドレスが、第１インデックスアドレスバス２４を経由して入力されればよい。
【００４５】
また、コントローラ１３ａには、アドレスバス４から延長された第２インデックスアドレスバス２５が接続されている。尚、コントローラ１３ａには、プロセッサ２からの入力アドレスの内、少なくともインデックスアドレスが、第２インデックスアドレスバス２５を経由して入力されればよい。
【００４６】
これにより、コントローラ１３ａは、処理対象のメモリアクセスに対応する第１のインデックスアドレスを第１インデックスアドレスバス２４から受け付け、当該メモリアクセスの次に処理されるメモリアクセスに対応する第１のインデックスアドレスを第２インデックスアドレスバス２５から受け付けることができる。
【００４７】
コントローラ１３ａは、ヒット判定部１２によりミスヒットと判定された場合に、本発明の実施の形態１にかかるコントローラ１３と同様に、ロード命令又はストア命令であるか否かを判定する。そして、コントローラ１３ａは、ロード命令又はストア命令のいずれかであると判定した場合に、第１のインデックスアドレスと第２のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定する。その後、コントローラ１３ａは、少なくとも一部が一致する場合に、キャッシュメモリ１ａのパイプライン処理をストールさせ、ウェイト信号をプロセッサ２へ出力する。また、コントローラ１３ａは、ロード命令及びストア命令のいずれでもない場合又は第１のインデックスアドレスと第２のインデックスアドレスとの少なくとも一部が一致しない場合に、ウェイト信号を出力せず、キャッシュメモリ１ａ及びプロセッサ２のパイプライン処理をストールさせない。
【００４８】
これにより、ミスヒットであり後続のメモリアクセスがロード命令又はストア命令のいずれかである場合であっても、当該後続のメモリアクセス要求が、ミスヒットの発生した直前のメモリアクセス要求と異なるメモリブロックに対するアクセスである場合には、コントローラ１３ａは、プロセッサ２に対してウェイト信号を出力しない。つまり、本発明の実施の形態２にかかるキャッシュメモリ１ａは、後続のメモリアクセスの有無判定を簡易に行うことができる。そのため、この場合には、キャッシュメモリ１ａ及びプロセッサ２のパイプライン処理をストールさせず、後続の処理を遅らせることなく進めることができる。
【００４９】
尚、コントローラ１３ａは、ミスヒットであり後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、第１のインデックスアドレスと第２のインデックスアドレスとが完全一致するか否かにより判定し、完全一致する場合にウェイト信号を出力し、完全一致しない場合にウェイト信号を出力しないようにしてもよい。これにより、必要最小限のケースのみでウェイト信号を出力することができ、処理を効率化することができる。特に、プロセッサ２の周波数クロック数が低い場合に、ウェイト信号の出力を最小限に抑えることができるため効果が高い。
【００５０】
または、コントローラ１３ａは、ミスヒットであり後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、第１のインデックスアドレスと第２のインデックスアドレスとを比較し、少なくとも一部が一致するか否かにより判定し、少なくとも一部が一致する場合にウェイト信号を出力し、一致しない場合にウェイト信号を出力しないようにしてもよい。例えば、第１のインデックスアドレスと第２のインデックスアドレスとのそれぞれにおける予め定められた下位ビット同士が一致する場合であってもよい。また、インデックスアドレスの内、任意の１ビットの桁のみを比較するようにしてもよい。又は、必要に応じて、比較対象のビット桁数を調節するようにしてもよい。これにより、本発明の実施の形態１に比べて、ウェイト信号の出力を抑えることができ、また、上述した完全一致の場合に比べて、後続のメモリアクセスの有無判定を簡易なものとすることができる。特に、両者に比べてプロセッサ２の周波数が中程度の場合に効果が高い。
【００５１】
図５は、本発明の実施の形態２にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。まず、ミスヒット時に、コントローラ１３ａは、ミスヒットと判定されたメモリアクセスの次のメモリアクセスに対応する制御信号に含まれるフラグを参照し、ロード命令又はストア命令であるかにより後続のメモリアクセスが存在するか否かを判定する（Ｓ２０１）。
【００５２】
ロード命令又はストア命令である場合、コントローラ１３ａは、第１のインデックスアドレスと第２のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定する（Ｓ２０２）。
【００５３】
少なくとも一部が一致する場合、コントローラ１３ａは、図２のステップＳ１０２と同様の処理を実行する（Ｓ２０３）。そのため、この後、キャッシュメモリ１ａ及びプロセッサ２のパイプライン処理はストールされ、後続のメモリアクセスに対する処理は、更新後のタグメモリ１１に対して行われる。
【００５４】
また、ステップＳ２０１においてロード命令又はストア命令のいずれでもない場合、又は、ステップＳ２０２において、一致しない場合、コントローラ１３ａは、キャッシュメモリ１ａのパイプライン処理をストールさせず、プロセッサ２へウェイト信号を出力しない。そのため、この後、キャッシュメモリ１ａ及びプロセッサ２のパイプライン処理はストールされず、後続のメモリアクセスに対する処理は、タグメモリ１１の更新を待たずに、引き続いて行われる。
【００５５】
図６は、本発明の実施の形態２にかかるキャッシュメモリ１ａによるパイプライン処理を示す図である。図６は、図３との違いとして、４ステージでの処理を対象とした説明である。すなわち、コントローラ１３ａは、第１ステージにおいてタグ読み出し、第２ステージにおいてヒット判定を行う。また、コントローラ１３ａは、第２ステージのヒット判定の結果に基づき、第３ステージ及び第４ステージを実行する。尚、図６の（ａ）キャッシュヒット時の動作は、特許文献２の図２の（ａ）と同様であるため、説明を省略する。
【００５６】
図６の（ｂ）ミスヒット及び後続メモリアクセスなしの場合、コントローラ１３ａは、第３ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、なしと判定する。つまり、このとき、コントローラ１３ａは、ウェイト信号を出力しない。また、コントローラ１３ａは、第３ステージにおいてタグメモリの更新処理及び第４ステージにおいてデータメモリの更新処理の制御を行う。
【００５７】
図６の（ｃ）ミスヒット及び後続メモリアクセスありの場合、コントローラ１３ａは、第３ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、ありと判定する。そして、コントローラ１３ａは、引き続き第３ステージにおいて、キャッシュメモリ１ａのパイプライン処理をストールさせ、プロセッサ２へウェイト信号を出力する。これにより、クロックサイクルＣ３に引き続きＣ４も第３ステージとなる。また、コントローラ１３ａは、第３ステージにおいてタグメモリの更新処理及び第４ステージにおいてデータメモリの更新処理の制御を行う。
【００５８】
上述のように動作するキャッシュメモリ１ａの効果について、図７を参照して説明する。図７は、２つのロード要求（ロード要求Ａ及びＢ）が連続して行われる場合のキャッシュメモリ１ａのパイプライン処理を示すタイミングチャートである。さらに詳しくは、先行するロード要求Ａにおいてミスヒットが発生し、後続のメモリアクセス判定がロード命令又はストア命令であるが、第１のインデックスアドレスと第２のインデックスアドレスとが一致しない場合の処理を示している。
【００５９】
図７に示すように、ロード要求Ａの２段目（ｍ＋１ステージ）のヒット判定がミスヒットとなると、引き続く３段目（ｍ＋２ステージ）のＣ３サイクルにおいて後続のメモリアクセスがなしと判定される。また、同じＣ３サイクルにおいてタグメモリ更新が行われる。しかし、コントローラ１３ａは、プロセッサ２へウェイト信号を出力しないため、パイプラインが１サイクルストールされない。
【００６０】
尚、上述したロード要求Ａに対する処理に平行して、後続のロード要求Ｂに対する処理が開始されている。つまり、ロード要求Ａの２段目に当たるｍ＋１ステージでは、ロード要求Ｂの１段目の処理であるタグメモリ１１からのタグアドレス読み出しが行われる。つまり、ロード要求Ｂのタグアドレス読み出し時点では、先行するロード要求Ａのミスヒットに伴うタグメモリ１１の更新は完了していない。しかし、ここでは、ロード要求Ａによりアクセスされる第１のインデックスアドレスとロード要求Ｂによりアクセスされる第２のインデックスアドレスとは異なる。そのため、ロード要求Ｂの２段目（ｍ＋２ステージ）のヒット判定は、キャッシュヒットとなる。
【００６１】
そして、ロード要求Ｂの引き続く３段目（ｍ＋３ステージ）において、データメモリアクセスが行われる。つまり、ロード要求Ｂの処理は、先行するロード要求Ａのミスヒットに伴うタグメモリ１１の更新が完了していないことには影響を受けない。
【００６２】
尚、ロード要求Ｂの２段目（ｍ＋２ステージ）のヒット判定がミスヒットであった場合でも、第１のインデックスアドレスとは異なる第２のインデックスアドレスに起因するヒット判定であるため、先行するロード要求Ａのミスヒットに伴うタグメモリ１１の更新が完了していないことに起因する誤判定ではない。
【００６３】
このように、本発明の実施の形態２によれば、ミスヒット時に、ロード命令又はストア命令であるかの判定に加え、インデックスアドレスの比較を行うことで、後続のメモリアクセスの有無判定をより詳細に行うことができる。そして、インデックスアドレスの比較を完全一致により行うことで、ウェイト信号の発生を必要最小限に抑えることができる。また、インデックスアドレスの比較を、全体の一致ではなく、一部が一致するか否かにより行うことで、後続のメモリアクセスの有無判定を効率的に行うことができる。
【００６４】
＜その他の発明の実施の形態＞
尚、本発明の実施の形態１における後続のメモリアクセスが存在する場合の条件は、ロード命令又はストア命令のいずれかである場合に限定されない。例えば、本発明の実施の形態１においても、本発明の実施の形態２に示したようなインデックスアドレスの比較を用いても構わない。これにより、より的確な後続のメモリアクセスの有無判定を行うことができる。または、本発明の実施の形態１にかかるキャッシュメモリ１に図５のステップＳ２０１及びＳ２０２の判定処理を適用しても構わない。これにより、後続のメモリアクセスの有無判定を効率的に行うことができる。
【００６５】
尚、本発明では、本発明の実施の形態２における後続のメモリアクセスの有無判定を、インデックスアドレスの比較のみとして、ロード命令又はストア命令であるかの判定を行わなくても構わない。その場合、図５のステップＳ２０１を行わないこととすればよい。これにより、制御信号線２３を経由して入力される制御信号に含まれるフラグの判定が不要となり、後続のメモリアクセスの有無判定を簡略化することができる。
【００６６】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態１にかかるキャッシュメモリの構成図である。
【図２】本発明の実施の形態１にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。
【図３】本発明の実施の形態１にかかるキャッシュメモリによるパイプライン処理を示す図である。
【図４】本発明の実施の形態２にかかるキャッシュメモリの構成図である。
【図５】本発明の実施の形態２にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。
【図６】本発明の実施の形態２にかかるキャッシュメモリによるパイプライン処理を示す図である。
【図７】本発明の実施の形態２にかかるキャッシュメモリによるタイミングチャートを示す図である。
【図８】関連する技術におけるキャッシュメモリの構成図である。
【図９】関連する技術におけるキャッシュメモリパイプライン処理を示す図である。
【図１０】入力アドレスの構成を示す図である。
【図１１】関連する技術におけるキャッシュメモリの構成図である。
【符号の説明】
【００６８】
１  キャッシュメモリ
１ａ  キャッシュメモリ
２  プロセッサ
３  主記憶
４  アドレスバス
５  データバス
６  メモリバス
７  ウェイト信号線
８  キャッシュメモリ
８ａ  キャッシュメモリ
１０  データメモリ
１１  タグメモリ
１２  ヒット判定部
１３  コントローラ
１３ａ  コントローラ
１４  アドレスラッチ
１５  アドレスラッチ
１６  アドレスラッチ
１７  アドレスラッチ
１８  バイパス配線
１９  セレクタ
２０  アドレスラッチ
２１  データラッチ
２２  ヒット判定信号線
２３  制御信号線
２４  第１インデックスアドレスバス
２５  第２インデックスアドレスバス
８３  コントローラ
８３ａ  コントローラ
【図１】
2010102623.tif 000003
【図２】
2010102623.tif 000004
【図３】
2010102623.tif 000005
【図４】
2010102623.tif 000006
【図５】
2010102623.tif 000007
【図６】
2010102623.tif 000008
【図７】
2010102623.tif 000009
【図８】
2010102623.tif 000010
【図９】
2010102623.tif 000011
【図１０】
2010102623.tif 000012
【図１１】
2010102623.tif 000013