(57)【要約】【課題】限られたＬ２キャッシュ１３ａの資源を有効に活用し、不必要なデータの書き戻しをなくすこと。【解決手段】キャッシュメモリ制御装置１００は、Ｌ２キャッシュ１３ａのサブラインごとにＳＰフラグを設け、命令制御部１１からアクセス仮想アドレスをＬ１キャッシュ制御部１２が取得し、アクセス仮想アドレスに対応するデータが存在しない場合に、Ｌ２キャッシュアクセスアドレスをＬ２キャッシュ制御部１３に出力する。そして、Ｌ２キャッシュ制御部１３は、Ｌ１インデックスの仮想ページ番号に属する部分ＶＡ２１とＬ２インデックスの物理ページ番号に属する部分ＰＡ２１とを基にしてＳＰフラグの状態を切り換え、ＳＰフラグの状態に基づいてＬ１キャッシュ１２ａからサブラインに対するデータの書き戻しを実行し、要求対象となるサブラインのデータをＬ１キャッシュ制御部１２に出力する。【選択図】        図２
2008165626.tif 000002
【特許請求の範囲】
【請求項１】
第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御装置であって、
前記第２のキャッシュは、前記サブラインごとに制御フラグを備え、
データ要求を受け付け、要求されたデータが前記第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替手段と、
前記第１のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第１のキャッシュに出力する制御手段と、
を備えたことを特徴とするキャッシュメモリ制御装置。
【請求項２】
前記制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項３】
前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする請求項２に記載のキャッシュメモリ制御装置。
【請求項４】
前記制御手段は、前記制御フラグがオフ状態となるサブラインに対して前記第１のキャッシュからのデータの書き戻しを実行することを特徴とする請求項１、２または３に記載のキャッシュメモリ制御装置。
【請求項５】
要求されたデータが前記第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得手段をさらに備え、前記フラグ切替手段は、前記データ取得手段によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする請求項１〜４のいずれか一つに記載のキャッシュメモリ制御装置。
【請求項６】
第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御方法であって、
前記第２のキャッシュは、前記サブラインごとに制御フラグを備え、
データ要求を受け付け、要求されたデータが前記第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替工程と、
前記第１のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第１のキャッシュに出力する制御工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
【請求項７】
前記制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする請求項６に記載のキャッシュメモリ制御方法。
【請求項８】
前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする請求項７に記載のキャッシュメモリ制御方法。
【請求項９】
前記制御工程は、前記制御フラグがオフ状態となるサブラインに対して前記第１のキャッシュからのデータの書き戻しを実行することを特徴とする請求項６、７または８に記載のキャッシュメモリ制御方法。
【請求項１０】
要求されたデータが前記第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得工程をさらに含み、前記フラグ切替工程は、前記データ取得工程によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする請求項６〜９のいずれか一つに記載のキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御装置等に関し、特に、限られたＬ２キャッシュの資源を有効に活用し、不必要なデータの書き戻しをなくすことができるキャッシュメモリ制御装置およびキャッシュメモリ制御方法に関するものである。
【背景技術】
【０００２】
従来より、ＣＰＵ（Central  Processing  Unit）などの処理装置がデータや命令などを取得／更新する際に主記憶装置やバスなどの遅延を隠蔽化し、処理装置と計算装置との性能差を埋めるためにキャッシュメモリが用いられている。また、キャッシュメモリは、多段構造となっており、例えば、Ｌ１（レベル１）キャッシュと、Ｌ１キャッシュを包含するＬ２（レベル２）キャッシュとから構成されている（特許文献１および特許文献２参照）。
【０００３】
また、Ｌ２キャッシュは、Ｌ１キャッシュに異なる仮想アドレスで同一の物理アドレスが登録される状態（シノニム）にならないように制御されるため、Ｌ２キャッシュタグに仮想アドレス（Ｌ１キャッシュのインデックス部に対応）を登録する形態をとり、さらに、Ｌ２キャッシュライン内を複数のブロックに区切ってサブラインを構成し、サブラインごとにデータが管理されるようになっている。
【０００４】
ここで、仮想アドレスおよび物理アドレスの構成について説明する。図２４は、仮想アドレスおよび物理アドレスの構成を説明するための説明図である。図２４において、ＶＡは仮想アドレスを示し、ＰＡは物理アドレスを示す。そして、ＶＡ１およびＰＡ１は、Ｌ１キャッシュ、Ｌ２キャッシュそれぞれのインデックスより上位のビットを示し、ＶＡ２およびＰＡ２は、Ｌ１キャッシュ、Ｌ２キャッシュそれぞれのインデックスを示す。
【０００５】
ＶＡ２は、ＶＡ２１（仮想ページ番号に属する部分）とＶＡ２２（ページ内オフセットに属する部分）に分けられる。ＶＡ３およびＰＡ３は、Ｌ１キャッシュ、Ｌ２キャッシュそれぞれのキャッシュライン内オフセットを示す。Ｌ２キャッシュは、ＰＡ３をＰＡ３１、ＰＡ３２とサブラインに区切って使用する。ここで、ＰＡ３１はサブライン番号、ＰＡ３２はサブライン内オフセットを示す。
【０００６】
ＶＡ４およびＰＡ４は、それぞれ仮想ページ番号、物理ページ番号を示し、ＶＡ５およびＰＡ５は、ページ内オフセットを示す。なお、仮想アドレスＶＡを物理アドレスＰＡに変換した場合（あるいは物理アドレスＰＡを仮想アドレスＶＡに変換した場合）であってもＶＡ５およびＰＡ５に格納されたデータ（ビット）は変換されず双方とも等しいデータが格納される。
【０００７】
続いて、従来にかかるＬ２キャッシュの構成について説明する。図２５は、従来にかかるＬ２キャッシュの構成を示す図である。同図に示すＰＡ１は、登録物理アドレスを示し（図２４に示したＰＡ１に対応）、ＶＡ２１は、登録仮想インデックスアドレスを示し（図２４に示したＶＡ２１に対応）、ＳＵＢＬＩＮＥ−ｘ  ＳＴは、サブラインのステータス（このステータスは、Ｌ１キャッシュ、Ｌ２キャッシュにサブラインのデータが存在するか否かを示すデータやサブラインに対応するデータが更新されているか否かを示すデータを含む）、ＳＵＢＬＩＮＥ−ｘ  ＤＡＴＡは、サブラインのキャッシュデータを示す。
【０００８】
図２５に示すＬ２キャッシュの管理方式は、一例として、Ｌ２キャッシュライン内で、４つのサブラインを管理する方式とする。Ｌ１キャッシュのラインサイズをα、Ｌ２キャッシュのラインサイズをβとすると、Ｌ１キャッシュのラインサイズαとＬ２キャッシュのラインサイズβとの関係は、「α×４＝β」となる。
【０００９】
Ｌ２キャッシュは、各サブライン単位でデータ管理を実行することができる。なお、Ｌ２キャッシュは、Ｌ２キャッシュタグ部の資源の制限から４つのサブラインに対してただ１通りの仮想アドレスＶＡしか割り当てられず、シノニム解消のための書き戻しの際にはＬ２キャッシュライン（サブライン全て）が制御対象となる。サブラインごとに仮想アドレスＶＡを設定すれば、サブラインごと（他のサブラインと干渉せずに）独立に制御可能となるが、サブラインの数に比例してＬ２キャッシュのタグ部に割り当てるべき資源が増大するため、サブラインごとに仮想アドレスＶＡを割り当てられないのが現状である。
【００１０】
続いて、従来にかかるキャッシュメモリの制御方式について説明する。図２６〜図３０は、従来にかかるキャッシュメモリの制御方式を説明するための説明図である。以下において、図２６〜図３０を用いて、（１）物理アドレスＰＡ（ａ）のデータがＬ１キャッシュに仮想アドレスＶＡ（ａ）で登録され、仮想アドレスＶＡ（ａ）でＬ１キャッシュがアクセスされた場合、（２）物理アドレスＰＡ（ａ）のデータがＬ１キャッシュに仮想アドレスＶＡ（ａ）で登録されているときに、仮想アドレスＶＡ（ｂ）でＬ１キャッシュがアクセスされた場合、（３）物理アドレスＰＡ（ａ）のデータがＬ１キャッシュに仮想アドレスＶＡ（ａ）で登録されているときに、仮想アドレスＶＡ（ｃ）でＬ１キャッシュがアクセスされた場合について順に説明する。なお、図２６〜図３０に示すＴＬＢ（Translation  Lookaside  Buffer）は、仮想アドレス（仮想ページ番号ＶＡ４）と物理アドレス（物理ページ番号ＰＡ４）の対応情報を保持するバッファである。
【００１１】
（１）物理アドレスＰＡ（ａ）のデータがＬ１キャッシュに仮想アドレスＶＡ（ａ）で登録され、仮想アドレスＶＡ（ａ）でＬ１キャッシュがアクセスされた場合
図２６に示すように、Ｌ１キャッシュ制御部（図示略）は、アクセス仮想アドレス（アクセス対象となる仮想アドレス）ＶＡ（ａ）をＴＬＢによって物理ページ番号ＰＡ４（ａ）に変換し、Ｌ１インデックスＶＡ２（ａ）に対応する物理ページ番号ＰＡ４（ａ）を検索すると、双方の物理ページ番号がＰＡ４（ａ）で一致するのでＬ１キャッシュヒットとなり、Ｌ１キャッシュに記憶されたＤＡＴＡ（ａ）が応答される。
【００１２】
（２）物理アドレスＰＡ（ａ）のデータがＬ１キャッシュに仮想アドレスＶＡ（ａ）で登録されているときに、仮想アドレスＶＡ（ｂ）でＬ１キャッシュがアクセスされた場合（ＴＬＢにはＶＡ（ａ）と同一物理ページ番号ＰＡ４（ａ）が登録されているときで、かつページ内オフセットのＬ２キャッシュのサブライン番号（例えば、サブライン番号０）が等しいとき）
図２７に示す例では、Ｌ２キャッシュのタグは、Ｌ２インデックス部以下を除いた登録物理アドレスＰＡ１（ａ）が登録され、Ｌ２ラインサイズ分のデータ（すなわち、サブラインすべて共通で）がＬ１キャッシュにＶＡ２１（ａ）のインデックスで登録されていることを示している。
【００１３】
また、Ｌ２キャッシュのタグには、ＰＡ１（ａ）、ＶＡ２１（ａ）であるものがＬ２キャッシュに存在するか否かの示すステータス（ＳＴ０〜ＳＴ３に対応）が、サブラインごとに記憶されている。ＤＡＴＡ（ａ０）〜ＤＡＴＡ（ａ３）はそれぞれ同一Ｌ２キャッシュライン中のサブライン番号０〜３のデータに対応し、Ｌ２キャッシュは、ＤＡＴＡ（ａ０）〜ＤＡＴＡ（ａ３）のデータを記憶しているものとする。
【００１４】
図２７に示すように、まず、Ｌ１キャッシュ制御部は、アクセス仮想アドレスＶＡ（ｂ）をＴＬＢによって物理ページ番号ＰＡ（ａ）に変換する。一方、Ｌ１インデックスＶＡ２（ｂ）に対応する物理ページ番号がＬ１キャッシュに存在しないため、Ｌ１キャッシュミスとなる。Ｌ１キャッシュミスとなった場合には、Ｌ１キャッシュ制御部は、Ｌ２キャッシュに対してアクセスを行う。
【００１５】
図２７の下段に示すように、Ｌ２キャッシュは、物理アドレスＰＡ（ａ）のデータが要求対象となる仮想アドレスＶＡ２１（ｂ）と異なる仮想アドレスＶＡ２１（ａ）で登録されているため、Ｌ２キャッシュ制御部（図示略）は、ＶＡ２１（ａ）が等しいＬ１インデックスに登録してあるＰＡ４（ａ）の全サブラインに対する削除命令をＬ１キャッシュ制御部に出力し、Ｌ１キャッシュから該当データを削除させる。Ｌ１キャッシュにおいて、ＤＡＴＡ（ａｘ）が更新されていれば、Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部が協働して、更新されているデータをＬ２キャッシュに書き戻す。
【００１６】
Ｌ２キャッシュ制御部は、Ｌ２キャッシュに最新データを書き戻した後に、ＶＡ２１（ｂ）のインデックスによってＬ２キャッシュに登録し、要求されたサブラインに対するデータをＬ１キャッシュに応答する（図２８の下段参照）。
【００１７】
そして、Ｌ１キャッシュ制御部は、Ｌ２キャッシュ制御部から取得したデータをＬ１キャッシュに記憶すると共に、記憶したデータを要求元（命令制御部：図示略）に出力する（図２８の上段参照）。
【００１８】
（３）物理アドレスＰＡ（ａ）のデータがＬ１キャッシュに仮想アドレスＶＡ（ａ）で登録されているときに、仮想アドレスＶＡ（ｃ）でＬ１キャッシュがアクセスされた場合（ＴＬＢにはＶＡ（ａ）と同一物理ページ番号ＰＡ４（ａ）が登録されているときで、かつ、ページ内オフセットのＬ２キャッシュのサブライン番号が異なっているとき）
図２９に示す例では、図２７と同様にして、Ｌ２キャッシュのタグは、Ｌ２インデックス部以下を除いた登録物理アドレスＰＡ１（ａ）が登録され、Ｌ２ラインサイズ分のデータ（すなわち、サブラインすべて共通で）がＬ１キャッシュにＶＡ２１（ａ）のインデックスで登録されていることを示している。
【００１９】
図２９に示すように、まず、Ｌ１キャッシュ制御部は、アクセス仮想アドレスＶＡ（ｃ）をＴＬＢによって物理ページ番号ＰＡ（ａ）に変換する。一方、Ｌ１インデックスＶＡ（ｃ）に対応する物理ページ番号がＬ１キャッシュに存在しないため、Ｌ１キャッシュミスとなる。Ｌ１キャッシュミスとなった場合には、Ｌ１キャッシュ制御部は、Ｌ２キャッシュに対してアクセスを行う。
【００２０】
図２９の下段に示すように、Ｌ２キャッシュは、物理アドレスＰＡ（ａ）のデータが要求対象となる仮想アドレスＶＡ２１（ｃ）と異なる仮想アドレスＶＡ２１（ａ）で登録されているため、Ｌ２キャッシュ制御部は、ＶＡ２１（ａ）が等しいＬ１インデックスに登録してあるＰＡ４（ａ）の全サブラインに対する削除命令をＬ１キャッシュ制御部に出力し、Ｌ１キャッシュから該当データを削除させる。Ｌ１キャッシュにおいて、ＤＡＴＡ（ａｘ）が更新されていれば、Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部が協働して、更新されているデータをＬ２キャッシュに書き戻す。
【００２１】
Ｌ２キャッシュ制御部は、Ｌ２キャッシュに最新データを書き戻した後に、ＶＡ２１（ｃ）のインデックスによってＬ２キャッシュに登録し、要求されたサブラインに対するデータをＬ１キャッシュに応答する（図３０の下段参照）。
【００２２】
そして、Ｌ１キャッシュ制御部は、Ｌ２キャッシュ制御部から取得したデータをＬ１キャッシュに記憶すると共に、記憶したデータを要求元に出力する（図３０の上段参照）。
【００２３】
このように、Ｌ２キャッシュは、Ｌ２キャッシュラインを複数のブロックに区切っているため、サブラインごとにデータを管理することができる。
【００２４】
【特許文献１】国際公開第２００４／０４６９３２号パンフレット
【特許文献２】特開平８−６８５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
しかしながら、上述した従来の技術では、Ｌ２キャッシュタグに登録するＬ１インデックスＶＡ２１を共通にしているため、要求されたサブラインを処理する場合に、シノニム問題を解消するためのＬ１インデックスＶＡ２１の再登録の際に、旧Ｌ１インデックスに登録されているサブラインのＬ１キャッシュからの削除の操作（データの書き戻し）が同一Ｌ２キャッシュライン内の全てのサブラインに対して発生してしまうという問題があった。
【００２６】
なお、Ｌ２キャッシュのサブラインごとにＬ１インデックスＶＡ２１を設定することも考えられるが、サブライン数の増加にともなってＬ２キャッシュに記憶すべきデータ量が飛躍的に増加してしまうため、現実的ではない。
【００２７】
すなわち、限られたＬ２キャッシュの資源を有効に活用し、不必要なデータの書き戻しをなくす（同一ラインに記憶された他のサブラインに対応するＬ１キャッシュ上に記憶されたデータの削除（書き戻し）のフローを省略する）ことが極めて重要な課題となっている。
【００２８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、限られたＬ２キャッシュの資源を有効に活用し、不必要なデータの書き戻しをなくすことができるキャッシュメモリ制御装置およびキャッシュメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２９】
上述した課題を解決し、目的を達成するため、本発明は、第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御装置であって、前記第２のキャッシュは、前記サブラインごとに制御フラグを備え、データ要求を受け付け、要求されたデータが前記第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替手段と、前記第１のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第１のキャッシュに出力する制御手段と、を備えたことを特徴とする。
【００３０】
また、本発明は、上記発明において、前記制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする。
【００３１】
また、本発明は、上記発明において、前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする。
【００３２】
また、本発明は、上記発明において、前記制御手段は、前記制御フラグがオフ状態となるサブラインに対して前記第１のキャッシュからのデータの書き戻しを実行することを特徴とする。
【００３３】
また、本発明は、上記発明において、要求されたデータが前記第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得手段をさらに備え、前記フラグ切替手段は、前記データ取得手段によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする。
【００３４】
また、本発明は、第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御方法であって、前記第２のキャッシュは、前記サブラインごとに制御フラグを備え、データ要求を受け付け、要求されたデータが前記第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替工程と、前記第１のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第１のキャッシュに出力する制御工程と、を含んだことを特徴とする。
【００３５】
また、本発明は、上記発明において、前記制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする。
【００３６】
また、本発明は、上記発明において、前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする。
【００３７】
また、本発明は、上記発明において、前記制御工程は、前記制御フラグがオフ状態となるサブラインに対して前記第１のキャッシュからのデータの書き戻しを実行することを特徴とする。
【００３８】
また、本発明は、上記発明において、要求されたデータが前記第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得工程をさらに含み、前記フラグ切替工程は、前記データ取得工程によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする。
【発明の効果】
【００３９】
本発明によれば、第２のキャッシュが、サブラインごとに制御フラグを備え、データ要求を受け付け、要求されたデータが第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいてサブラインに対応する制御フラグの状態を切り換え、第１のキャッシュからサブラインに対するデータの書き戻しをサブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを第１のキャッシュに出力するので、限られたＬ２キャッシュの資源を有効に活用し、不必要なデータの書き戻しをなくす（同一ラインに記憶された他のサブラインに対応するＬ１キャッシュ上に記憶されたデータの削除（書き戻し）のフローを省略する）ことができる。
【００４０】
また、本発明によれば、制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、制御フラグをオン状態に切り換えるので、簡便に制御フラグを切り換えることができる。
【００４１】
また、本発明によれば、仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、制御フラグをオフ状態に切り換えるので、簡便に制御フラグを切り換えることができる。
【００４２】
また、本発明によれば、制御フラグがオフ状態となるサブラインに対して第１のキャッシュからのデータの書き戻しを実行するので、わずか１ビットの制御フラグによってデータの書き戻しが不必要となるサブラインを特定させることができる。
【００４３】
また、本発明によれば、要求されたデータが第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得し、取得したデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいてサブラインに対応する制御フラグを切り換えるので、第２のキャッシュに該当データが存在しない場合でも、的確に制御フラグを切り換えることができる。
【発明を実施するための最良の形態】
【００４４】
以下に添付図面を参照して、この発明に係るキャッシュメモリ制御装置およびキャッシュメモリ制御方法の好適な実施の形態を詳細に説明する。
【実施例】
【００４５】
まず、本実施例において用いられる仮想アドレスおよび物理アドレスの構成について説明する。図１は、本実施例にかかる仮想アドレスおよび物理アドレスの構成を説明するための説明図である。図１において、ＶＡは仮想アドレスを示し、ＰＡは物理アドレスを示す。そして、ＶＡ１およびＰＡ１は、Ｌ１キャッシュ、Ｌ２キャッシュそれぞれのインデックスより上位のビットを示し、ＶＡ２およびＰＡ２は、Ｌ１キャッシュ、Ｌ２キャッシュそれぞれのインデックスを示す。
【００４６】
ＶＡ２は、ＶＡ２１（仮想ページ番号に属する部分）とＶＡ２２（ページ内オフセットに属する部分）に分けられる。また、ＰＡ２は、Ｌ２インデックスの物理ページ番号に属する部分ＰＡ２１を含んでいる。ＶＡ３およびＰＡ３は、Ｌ１キャッシュ、Ｌ２キャッシュそれぞれのキャッシュライン内オフセットを示す。Ｌ２キャッシュは、ＰＡ３をＰＡ３１、ＰＡ３２とサブラインに区切って使用する。ここで、ＰＡ３１はサブライン番号、ＰＡ３２はサブライン内オフセットを示す。
【００４７】
ＶＡ４およびＰＡ４は、それぞれ仮想ページ番号、物理ページ番号を示し、ＶＡ５およびＰＡ５は、ページ内オフセットを示す。なお、仮想アドレスＶＡを物理アドレスＰＡに変換した場合（あるいは物理アドレスＰＡを仮想アドレスＶＡに変換した場合）であってもＶＡ５およびＰＡ５に格納されたデータ（ビット）は変換されず双方とも等しいデータが格納される。
【００４８】
続いて、本実施例にかかるキャッシュメモリ制御装置の概要および特徴について説明する。本実施例にかかるキャッシュメモリ制御装置は、Ｌ２（レベル２）キャッシュに含まれるサブラインごとに１ビットの制御フラグを設ける。そして、Ｌ１インデックスの仮想ページ番号に属する部分ＶＡ２１とＬ２（レベル２）インデックスの物理ページ番号に属する部分ＰＡ２１が等しいか否かを判定し、判定結果に応じて制御フラグをオン状態あるいはオフ状態に切り換える（図１参照）と共に、制御フラグの状態に基づいて、必要なサブラインに対してのみＬ１キャッシュからの削除の操作を行う（必要なサブラインに対してのみＬ１キャッシュからの書き戻しを実行する）。
【００４９】
Ｌ１インデックスの仮想ページ番号に属する部分ＶＡ２１とＬ２インデックスの物理ページ番号に属する部分ＰＡ２１が一致する場合には、ＶＡ２１によらずＰＡ２１によってサブラインが属するＬ１インデックスを一意に特定することができることを意味する（仮想アドレスと物理アドレスとの対応がとれていることと等価となるため、ＰＡ２１によって直接アクセスしても他のサブラインとの干渉を回避することができる）。
【００５０】
このように、Ｌ２キャッシュのサブラインごとに１ビットの制御フラグを設定し、制御フラグの状態（制御フラグがオンあるいはオフの状態）に基づいて、Ｌ１キャッシュからの削除操作を行うので、旧Ｌ１インデックスに登録されているサブラインのＬ１キャッシュからの削除の操作が同一Ｌ２キャッシュライン内の他のサブラインに対して発生してしまうことを防止することができる。また、サブラインごとに設けた制御フラグは１ビットの制御フラグであるため、制御フラグによる資源の消費量を極力低減させることができる。なお、以下の説明において、制御フラグをＳＰフラグと表記する。
【００５１】
つぎに、本実施例にかかるキャッシュメモリ制御装置の構成について説明する。図２は、本実施例にかかるキャッシュメモリ制御装置の構成を示す機能ブロック図である。同図に示すように、このキャッシュメモリ制御装置１００は、ＣＰＵ（Central  Processing  Unit）１０〜３０と、システム制御部４０と、主記憶部５０と、Ｉ／Ｏ（Input  Output）部６０とを備えて構成される。なお、図２に示す例では、ＣＰＵ１０〜３０のみを示すが、このキャッシュメモリ制御装置１００は、その他複数のＣＰＵから構成されてもよい。また、ＣＰＵ１０〜３０は、同様の構成であるため、ここでは、ＣＰＵ１０の説明を行いＣＰＵ２０，３０の説明は省略する。
【００５２】
ＣＰＵ１０は、主記憶部５０に記憶されたプログラムを実行する装置であり、入力装置や記憶装置（図示略）からデータを受け取り、演算・加工した上で、出力装置や記憶装置に出力する。このＣＰＵ１０は、命令制御部１１と、Ｌ１キャッシュ制御部１２と、Ｌ２キャッシュ制御部１３とを備える。
【００５３】
このうち、命令制御部１１は、Ｌ１キャッシュ制御部１２からデータを取得し、演算・加工した上で、Ｌ１キャッシュ制御部１２に出力する処理部である。命令制御部１１は、Ｌ１キャッシュ制御部１２からデータを取得する場合に、Ｌ１キャッシュ制御部１２に対して取得対象となるデータの仮想アドレス（以下、アクセス仮想アドレスと表記する）ＶＡを出力する。
【００５４】
Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュ１２ａおよびＴＬＢ１２ｂを備え、命令制御部１１からアクセス仮想アドレスＶＡを取得した場合に、対応するデータを命令制御部１１に出力する処理部である。Ｌ１キャッシュ制御部１２は、アクセス仮想アドレスＶＡに対応するデータをＬ１キャッシュ１２ａおよびＴＬＢ１２ｂに基づいて取得し、取得したデータを命令制御部１１に出力する。なお、アクセス仮想アドレスＶＡに対応するデータがＬ１キャッシュ１２ａに存在しない場合には、アクセス仮想アドレスＶＡに対応するデータを取得するため、Ｌ２キャッシュアクセスアドレスをＬ２キャッシュ制御部１３に出力する。このＬ２キャッシュアクセスアドレスは、アクセス仮想アドレスに対応する物理アドレスとアクセス仮想アドレスのＶＡ２１（仮想ページ番号に属する部分）が含まれる。
【００５５】
ここで、Ｌ１キャッシュ１２ａおよびＴＬＢ１２ｂのデータ構造について説明する。図３は、Ｌ１キャッシュ１２ａのデータ構造の一例を示す図であり、図４は、ＴＬＢ１２ｂのデータ構造の一例を示す図である。図３に示すように、Ｌ１キャッシュ１２ａは、Ｌ１インデックス（ＶＡ２に対応）、物理ページ番号（ＰＡ４）、Ｌ１インデックスおよび物理ページ番号に対応するデータから構成される。また、ＴＬＢ１２ｂは、図４に示すように、仮想ページ番号（ＶＡ４）および物理ページ番号（ＰＡ４）から構成される。
【００５６】
Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュ１３ａを備え、Ｌ１キャッシュ制御部１２からＬ２キャッシュアクセスアドレスを取得した場合に、Ｌ２キャッシュアクセスアドレスに対応するデータをＬ１キャッシュ制御部１２に出力する処理部である。
【００５７】
ここで、Ｌ２キャッシュ１３ａのデータ構造について説明する。図５は、Ｌ２キャッシュ１３ａのデータ構造の一例を示す図である。同図に示すように、Ｌ２キャッシュ１３ａは、Ｌ２インデックス（図１に示したＰＡ２に対応）と、登録物理アドレス（図１に示したＰＡ１に対応）と、登録仮想インデックスアドレス（図１に示したＶＡ２１に対応）と、サブラインのステータスにかかる情報を記憶するサブラインｎステータス（ｎは０以上の整数）と、サブラインｎステータスに対応し、上述した制御フラグに対応するスペシャル（ＳＰ）フラグｎ（ｎは０以上の整数）と、サブラインｎステータスに対応するキャッシュデータを記憶するサブラインｎデータ（ｎは０以上の整数）とから構成される。
【００５８】
Ｌ２キャッシュ制御部１３は、Ｌ１キャッシュ制御部１２からＬ２キャッシュアクセスアドレスを取得した場合に、Ｌ２キャッシュアクセスアドレスに含まれるＶＡ２１とＰＡ２１とが等しいか否かを判定し、判定結果に基づいてサブラインのＳＰフラグをオン（１）あるいはオフ（０）に設定する（切り換える）。
【００５９】
そして、Ｌ２キャッシュ制御部１３は、ＳＰフラグの状態を基にしてＬ２キャッシュ１３ａの各情報の再登録を行うと共に、Ｌ２キャッシュアクセスアドレスに対応するサブラインのデータをＬ１キャッシュ制御部１２に出力する。なお、Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３に関する詳しい説明は後述する。
【００６０】
システム制御部４０は、Ｌ２キャッシュタグの写しを保持し、Ｌ２キャッシュ制御部１３からのデータ要求を取得した場合に、対応するデータを主記憶部５０から取得し、取得したデータをＬ２キャッシュ制御部１３に出力する処理部である。ここで、Ｌ２キャッシュタグの写しは、図５に示したＬ２キャッシュ１３ａのＬ２インデックス、登録物理アドレス、サブラインｎステータスに対応する情報を記憶する。
【００６１】
主記憶部５０は、ＣＰＵ１０〜３０によって利用されるデータおよび命令を記憶する記憶部（メモリ）であり、システム制御部４０からのデータ要求に応答して、対応するデータをシステム制御部４０に出力する。Ｉ／Ｏ部６０は、図示しない記憶装置、入力装置、出力装置との間におけるデータの入出力を制御する処理部である。
【００６２】
続いて、図２に示したＬ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理について具体的に説明する。図６〜図１１は、Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を説明するための説明図である。
【００６３】
まず、Ｌ１キャッシュ１２ａおよびＬ２キャッシュ１３ａが、図６のように登録されているときに、Ｌ１キャッシュ制御部１２がアクセス仮想アドレスＶＡ（ｅ）を命令制御部１１から取得した場合について説明する。また、図６を説明する場合の条件として、ＴＬＢ１２ｂにおいて、ＶＡ（ｅ）はＶＡ（ａ）と同一の物理ページ番号ＰＡ４（ａ）で登録されており、かつ、アクセス仮想アドレスＶＡ（ｅ）のページ内オフセットのＬ２キャッシュのサブライン番号が３であり、かつ、ＰＡ２１（ａ）とＶＡ２１（ｅ）とが等しいものとする。
【００６４】
また、ＶＡ（ａ）、ＶＡ（ｂ）、ＶＡ（ｃ）、ＶＡ（ｄ）の仮想ページ番号はすべてＶＡ４（ａ）と等しいとする。それゆえ、ＶＡ２（ａ）、ＶＡ２（ｂ）、ＶＡ２（ｃ）、ＶＡ２（ｄ）の仮想ページ番号に属する部分はすべてＶＡ２１（ａ）と等しい。
【００６５】
図６に示すように、Ｌ１キャッシュ制御部１２は、命令制御部１１からアクセス仮想アドレスＶＡ（ｅ）を取得し、ＴＬＢ１２ｂによって物理ページ番号ＰＡ４（ａ）に変換する。一方、Ｌ１キャッシュ１２ａにおいて、Ｌ１インデックスＶＡ２（ｅ）に対応する物理ページ番号ＰＡ４が存在しないため、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュミスと判定する。
【００６６】
Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュミスと判定した場合に、Ｌ２キャッシュアクセスアドレスをＬ２キャッシュ制御部１３に出力する。Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュアクセスアドレスを取得し、Ｌ２キャッシュアクセスアドレスに含まれるＶＡ２１（ｅ）と、Ｌ２キャッシュ１３ａに含まれる登録仮想インデックスアドレスＶＡ２１とを比較し、一致するか否かを判定する。図６に示す例では、登録仮想インデックスアドレスＶＡ２１は、ＶＡ２１（ａ）であり、双方のアドレスは一致しないため、Ｌ１インデックスに登録してあるＰＡ４（ａ）に対応する全サブラインのデータが書き戻し対象の候補となる。
【００６７】
続いて、Ｌ２キャッシュ制御部１３は、ＰＡ２１（ａ）とＶＡ２１（ｅ）とを比較して、双方が等しいか否かを判定する。図６に示す例では、ＰＡ２１（ａ）およびＶＡ２１（ｅ）が等しいので、サブライン３データ（ＤＡＴＡ（ａ３））のみを対象としてデータの書き戻しを実行する。この場合、Ｌ１キャッシュ制御部１２はサブライン３に対応するデータをＬ１キャッシュ１２ａから一旦削除し、Ｌ１キャッシュ１２ａにおいて、ＤＡＴＡ（ａ３）が更新されている場合には（ＤＡＴＡ’（ａ３））、Ｌ２キャッシュ１３ａに最新のデータを書き戻す。
【００６８】
その後、Ｌ２キャッシュ制御部１３は、ＳＰフラグ３を１（オン）に設定し、ＤＡＴＡ’（ａ３）をＬ１キャッシュ制御部１２に出力する（図７参照）。なお、この場合には、Ｌ２キャッシュ１３ａの登録仮想インデックスＶＡ２１は、ＶＡ２１（ａ）のままとなる。また、Ｌ１キャッシュ１２ａにおいて、Ｌ１インデックスＶＡ２（ｅ）のラインにＤＡＴＡ’（ａ３）が記憶される。
【００６９】
続いて、Ｌ１キャッシュ１２ａおよびＬ２キャッシュ１３ａが、図８のように登録されているときに、Ｌ１キャッシュ制御部１２がアクセス仮想アドレスＶＡ（ｆ）を命令制御部１１から取得した場合について説明する。また、図８を説明する場合の条件として、ＴＬＢ１２ｂにおいて、ＶＡ（ｆ）はＶＡ（ａ）と同一の物理ページ番号ＰＡ４（ａ）で登録されており、かつ、アクセス仮想アドレスＶＡ（ｆ）のページ内オフセットのＬ２キャッシュのサブライン番号が３であり、かつ、ＰＡ２１（ａ）とＶＡ２１（ｆ）とが異なっているものとする。
【００７０】
また、ＶＡ（ａ）、ＶＡ（ｂ）、ＶＡ（ｃ）、ＶＡ（ｄ）の仮想ページ番号はすべてＶＡ４（ａ）と等しいとする。それゆえ、ＶＡ２（ａ）、ＶＡ２（ｂ）、ＶＡ２（ｃ）、ＶＡ２（ｄ）の仮想ページ番号に属する部分はすべてＶＡ２１（ａ）と等しい。
【００７１】
図８に示すように、Ｌ１キャッシュ制御部１２は、命令制御部１１からアクセス仮想アドレスＶＡ（ｆ）を取得し、ＴＬＢ１２ｂによって物理ページ番号ＰＡ４（ａ）に変換する。一方、Ｌ１キャッシュ１２ａにおいてＬ１インデックスＶＡ２（ｆ）に対応する物理ページ番号ＰＡ４が存在しないため、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュミスと判定する。
【００７２】
Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュミスと判定した場合に、Ｌ２キャッシュアクセスアドレスをＬ２キャッシュ制御部１３に出力する。Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュアクセスアドレスを取得し、Ｌ２キャッシュアクセスアドレスに含まれるＶＡ２１（ｆ）と、Ｌ２キャッシュ１３ａに含まれる登録仮想インデックスアドレスＶＡ２１と比較し、一致するか否かを判定する。図８に示す例では、登録仮想インデックスアドレスＶＡ２１は、ＶＡ２１（ａ）であり、双方のアドレスが一致しないため、Ｌ１インデックスに登録してあるＰＡ４（ａ）に対応する全サブラインのデータが書き戻し対象の候補となる。
【００７３】
続いて、Ｌ２キャッシュ制御部１３は、ＰＡ２１（ａ）とＶＡ２１（ｆ）とを比較して、双方が等しいか否かを判定する。図８に示す例では、ＰＡ２１（ａ）およびＶＡ２１（ｆ）が異なっているので、Ｌ１インデックスに登録してあるＰＡ４（ａ）の全サブラインを対象としてデータの書き戻しを実行する。Ｌ１キャッシュ１２ａにおいて、ＤＡＴＡ（ａｘ）が更新されている場合には（ＤＡＴＡ’（ａｘ））、Ｌ２キャッシュ１３ａに最新のデータを書き戻す。
【００７４】
その後、Ｌ２キャッシュ制御部１３は、ＳＰフラグ３を０（オフ）に設定し、ＤＡＴＡ’（ａ３）をＬ１キャッシュ制御部１２に出力する（図９参照）。なお、この場合には、Ｌ２キャッシュ１３ａの登録仮想インデックスＶＡ２１は、ＶＡ２１（ｆ）に変更される。また、Ｌ１キャッシュ１２ａにおいて、Ｌ１インデックスＶＡ２（ｆ）のラインにＤＡＴＡ’（ａ３）が記憶される。
【００７５】
続いて、Ｌ１キャッシュ１２ａおよびＬ２キャッシュ１３ａが、図１０のように登録されているときに、Ｌ１キャッシュ制御部１２がアクセス仮想アドレスＶＡ（ｇ）を命令制御部１１から取得した場合について説明する。また、図１０を説明する場合の条件として、ＴＬＢ１２ｂにおいて、ＶＡ（ｇ）はＶＡ（ａ）と同一の物理ページ番号ＰＡ４（ａ）で登録されており、かつ、アクセス仮想アドレスＶＡ（ｇ）のページ内オフセットのＬ２キャッシュのサブライン番号が３であり、かつ、ＰＡ２１（ａ）とＶＡ２１（ｇ）とが異なっているものとする。
【００７６】
また、ＶＡ２（ａ）、ＶＡ２（ｂ）、ＶＡ２（ｃ）、ＶＡ２（ｄ）の仮想ページ番号に属する部分はそれぞれ、ＰＡ２１（ａ）、ＶＡ２１（ｂ）、ＰＡ２１（ａ）、ＰＡ２１（ａ）と等しいものとする。それゆえ、図１０のＬ２キャッシュ１３ａにおいて、ＳＰフラグ０、ＳＰフラグ２、ＳＰフラグ３に１が設定されている。
【００７７】
図１０に示すように、Ｌ１キャッシュ制御部１２は、命令制御部１１からアクセス仮想アドレスＶＡ（ｇ）を取得し、ＴＬＢ１２ｂによって物理アドレスＰＡ４（ａ）に変換する。一方、Ｌ１キャッシュ１２ａにおいてＬ１インデックスＶＡ２（ｇ）に対応する物理ページ番号が存在しないため、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュミスと判定する。
【００７８】
Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュミスと判定した場合に、Ｌ２キャッシュアクセスアドレスをＬ２キャッシュ制御部１３に出力する。Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュアクセスアドレスを取得し、Ｌ２キャッシュアクセスアドレスに含まれるＶＡ２１（ｇ）と、Ｌ２キャッシュ１３ａに含まれる登録仮想インデックスアドレスＶＡ２１と比較し、一致するか否かを判定する。図１０に示す例では、登録仮想インデックスＶＡ２１は、ＶＡ２１（ｂ）であり、双方のアドレスが一致しないため、Ｌ１インデックスに登録してあるＰＡ４（ａ）に対応する全サブラインのデータが書き戻し対象の候補となる。
【００７９】
続いて、Ｌ２キャッシュ制御部１３は、ＰＡ２１（ａ）とＶＡ２１（ｇ）とを比較して、双方が等しいか否かを判定する。図１０に示す例では、ＰＡ２１（ａ）およびＶＡ２１（ｇ）が異なっているので、Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュ１３ａの登録仮想インデックスアドレスをＶＡ２１（ｇ）に設定する（図１１参照）。
【００８０】
また、Ｌ１キャッシュ制御部１２は、Ｌ１インデックスに登録してあるＰＡ４（ａ）のサブラインをＬ１キャッシュ１２ａから一旦削除する。なお、ＳＰフラグが１（オン）となっているサブラインは、ＶＡ２１とＰＡ２１（ａ）とが等しいと判定できるので、書き戻し対象からはずすことができる（ＤＡＴＡ’（ａ０）およびＤＡＴＡ’（ａ２）が書き戻し対象から除外される。ＤＡＴＡ’（ａ３）は、アクセス仮想アドレスＶＡ（ｇ）に属するサブラインであるため、書き戻し対象となる）。なおＬ１キャッシュ１２ａにおいて、ＤＡＴＡ（ａｘ）が更新されていれば（ＤＡＴＡ’（ａｘ））、Ｌ２キャッシュ１３ａに最新データを書き戻す。
【００８１】
その後、Ｌ２キャッシュ制御部１３は、ＳＰフラグ３を０（オフ）に設定し、ＤＡＴＡ’（ａ３）をＬ１キャッシュ制御部１２に出力する。なお、Ｌ１キャッシュ１２ａにおいて、Ｌ１インデックスＶＡ２（ｇ）のラインにＤＡＴＡ’（ａ３）が記憶される。
【００８２】
つぎに、本発明をより具体的に説明する。ここでは、説明を簡単にするために、Ｌ１キャッシュ１２ａおよびＬ２キャッシュ１３ａをダイレクトマップ方式とするが、セットアソシアティブ方式などでも構わない。Ｌ１キャッシュ１２ａが６４ｋバイト、Ｌ２キャッシュ１３ａが１０２４ｋバイトであるとし、Ｌ１キャッシュ１２ａのラインサイズを６４バイト、Ｌ２キャッシュ１３ａのラインサイズを２５６バイトとする。
【００８３】
Ｌ２キャッシュ１３ａのラインサイズは２５６バイトであるが、データの管理単位としては、Ｌ１キャッシュのラインサイズである６４バイトのサブラインで行うことができる。また、ページサイズを４ｋバイトとし、Ｌ１キャッシュ１２ａ、Ｌ２キャッシュ１３ａ共にライトバックキャッシュであることとする。
【００８４】
図１２および図１３は、仮想アドレスおよび物理アドレスの構成を具体的に説明するための説明図である。図１２に示すように、サポートできる仮想アドレスの最上位ビットをＶ、物理アドレスの最上位ビットをＰとする。ＶＡ１、ＰＡ１は、Ｌ１キャッシュ１２ａ、Ｌ２キャッシュ１３ａそれぞれのインデックスより上位のビットを示す。
ＶＡ１＝ＶＡ［Ｖ：１６］
ＰＡ１＝ＰＡ［Ｐ：２０］
【００８５】
ＶＡ２およびＰＡ２は、Ｌ１キャッシュ１２ａ、Ｌ２キャッシュ１３ａそれぞれのインデックスを示す。
ＶＡ２＝ＶＡ［１５：６］
ＰＡ２＝ＰＡ［１９：８］
【００８６】
ＶＡ２は、ＶＡ２１（仮想ページ番号に属する部分）とＶＡ２２（ページ内オフセットに属する部分）に分けられる。
ＶＡ２１＝ＶＡ［１５：１２］
ＶＡ２２＝ＶＡ［１１：６］
【００８７】
ＶＡ３およびＰＡ３は、Ｌ１キャッシュ１２ａ、Ｌ２キャッシュ１３ａそれぞれのキャッシュライン内オフセットを示す。
ＶＡ３＝ＶＡ［５：０］
ＰＡ３＝ＰＡ［７：０］
【００８８】
Ｌ２キャッシュ１３ａは、ＰＡ３をＰＡ３１、ＰＡ３２とサブラインに区切って使用する。ＰＡ３１はサブライン番号、ＰＡ３２はサブライン内オフセットを示す。
ＰＡ３１＝ＰＡ［７：６］
ＰＡ３２＝ＰＡ［５：０］
【００８９】
ＶＡ４およびＰＡ４は、それぞれ仮想ページ番号、物理ページ番号を示す。
ＶＡ４＝ＶＡ［Ｖ：１２］
ＰＡ４＝ＰＡ［Ｐ：１２］
【００９０】
ＶＡ５およびＰＡ５は、ページ内オフセットを示す（両者は等しい）。
ＶＡ５＝ＶＡ［１１：０］
ＰＡ５＝ＰＡ［１１：０］
ＶＡ５＝ＰＡ５
【００９１】
続いて、図１３の説明に移ると、Ｌ１キャッシュ１２ａは、タグ部にそのラインが有効であることを示すビットと登録されている物理アドレスＰＡ４＝ＰＡ［Ｐ：１２］が記録されている。Ｌ１キャッシュ１２ａにおけるデータ部には、そのラインのデータ（６４バイト）が記憶されている。
【００９２】
ＴＬＢ１２ｂは、同図に示すように、タグ部および物理アドレス部から構成される。タグ部は、エントリ有効ビットと、仮想アドレスＰＡ［Ｖ：１２］、その他の情報（プロセスＩＤなどを含む）から構成され、物理アドレス部は、物理アドレスＰＡ［Ｐ：１２］から構成される。
【００９３】
Ｌ２キャッシュ１３ａは、タグ部に物理アドレスＰＡ１＝ＰＡ［Ｐ：２０］と仮想アドレスＶＡ２１＝ＶＡ［１５：１２］が記憶され、サブライン毎に、そのサブラインがＬ２キャッシュ１３ａで有効か、Ｌ１キャッシュ１２ａで有効かを示すビットと、ＳＰフラグとを設けている。ＳＰフラグは、ＶＡ２１＝ＶＡ［１５：１２］とＰＡ２１＝ＰＡ［１５：１２］が等しい場合に、ＳＰフラグは１（オン）となる。Ｌ２キャッシュ１３ａのデータ部にはサブラインごとにデータ（６４バイト）が記憶されている。
【００９４】
続いて、図１４〜図１９を用いて、Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理について詳細に説明する。図１４〜図１９は、Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図である。
【００９５】
まず、Ｌ１キャッシュ１２ａおよびＬ２キャッシュ１３ａが、図１４のような状態（状態１）であったとする。ＴＬＢ１２ｂには、それぞれ仮想ページ番号ＶＡ[Ｖ：１２]と物理ページ番号ＰＡ［Ｐ：１２］が対応付けられており（その他の情報は説明の便宜上省略する）、Ｌ１キャッシュ１２ａおよびＬ２キャッシュ１３ａには、今からアクセスするアドレスに関しては登録されていないものとする。主記憶部５０には、図１４に示すように、Ｈ’１１５０００番地から６４バイト境界単位でＡ，Ｂ，・・・が記憶されているものとする。なお「Ｈ（Hex）」は、１６進数表示であることを示す。すなわち、Ｈ’１１５０００を２進数表示で表すと、Ｂ（Bit）’０００１０００１０１０１００００００００００００となる。
【００９６】
状態１において、命令制御部１１からアクセス仮想アドレスＶＡ［Ｖ：０］＝Ｈ’７４５０００のデータを要求された場合に、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュタグおよびＴＬＢ１２ｂを参照する。すると、Ｌ１インデックスＶＡ［１５：６］＝Ｂ’１０１００００００には、有効ビットが立っていないことからＬ１キャッシュ１２ａには、要求されたデータが登録されていないことがわかる。
【００９７】
また、ＴＬＢ１２ｂから、アクセス仮想アドレスに対応する物理ページがＰＡ［Ｐ：１２］＝Ｈ’１１５であることから、Ｌ１キャッシュ制御部１２は、Ｌ２キャッシュ制御部１３にＬ２キャッシュアクセスアドレス「ＰＡ［Ｐ：０］＝Ｈ’１１５０００（ＶＡ［１５：１２］＝Ｈ’５）」を出力し、Ｌ２キャッシュアクセスアドレスに対応するデータを要求する。
【００９８】
Ｌ２キャッシュ制御部１３は、Ｌ２インデックスＰＡ［１９：８］＝Ｂ’０００１０１０１００００でＬ２キャッシュタグを参照すると、有効ビットが立っていないのでＬ２キャッシュ１３ａに登録されていないと判定でき、Ｌ２キャッシュ制御部１３は、主記憶部５０にＰＡ［Ｐ：０］＝Ｈ’１１５０００のデータを要求する。（実際には、Ｌ２キャッシュ制御部１３は、システム制御部４０を介して主記憶部５０にアクセスするわけであるが、ここでは説明の便宜上、システム制御部４０を省略して説明する。）
【００９９】
Ｌ２キャッシュ制御部１３は、主記憶部５０からの応答を受け付けた場合に、ＶＡ［１５：１２］＝Ｈ’５がＰＡ［１５：１２］＝Ｈ’５と等しいので該当するサブライン番号（ここでは０；ＰＡ［７：６］＝Ｈ’０）に対応するＳＰフラグを１（オン）にする。また、Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュタグに各種情報（物理アドレスＰＡ［Ｐ：２０］＝Ｈ’１１５、仮想アドレスＶＡ［１５：１２］＝Ｈ’５、Ｌ２有効ビット（Ｌ２Ｖ）を１（オン）、Ｌ１有効ビット（Ｌ１Ｖ）を１（オン）であることを登録し、Ｌ２キャッシュデータ部にＡを記憶する。さらに、Ｌ２キャッシュ制御部１３は、Ｌ１キャッシュ制御部１２にデータＡを出力する。
【０１００】
Ｌ１キャッシュ制御部１２は、Ｌ２キャッシュ制御部１３からの応答を受け付けた場合に、物理アドレスＰＡ［Ｐ：１２］＝Ｈ’１１５、Ｌ１有効ビットを１（オン）であることをＬ１キャッシュタグに記憶し、Ｌ１キャッシュデータ部にデータＡを記憶する。さらに、Ｌ１キャッシュ制御部１２は、データＡを命令制御部１１に出力する。
【０１０１】
Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３は、上記した一連の動作を命令制御部１１からアクセス仮想アドレスＶＡ［Ｖ：０］＝Ｈ’７４５０４０、ＶＡ［Ｖ：０］＝Ｈ’７４５０８０、ＶＡ［Ｖ：０］＝Ｈ’７４５０Ｃ０を取得した場合にも続けて行うと、図１５に示すように、各アクセス仮想アドレスに対応するデータＢ，Ｃ，ＤがＬ１キャッシュ１２ａにストアされ、状態２となる。
【０１０２】
状態２（図１５参照）において、命令制御部１１からアクセス仮想アドレスＶＡ［Ｖ：０］＝Ｈ’７４８０８０のデータを要求された場合に、Ｌ１キャッシュ制御部１２は、Ｌ１インデックスＶＡ［１５：６］＝Ｂ’１０００００００１０を検索する。すると、Ｌ１キャッシュタグに該当アドレスがないので、Ｌ１キャッシュ制御部１２は、ＴＬＢ１２ｂから得られる物理ページ番号ＰＡ［Ｐ：１２］＝Ｈ’１１５を使用して、Ｌ２キャッシュ制御部１３にＬ２キャッシュアクセスアドレス「ＰＡ［Ｐ：０］＝Ｈ’１１５０８０（ＶＡ［１５：１２］＝Ｈ’８）」を出力し、Ｌ２キャッシュアクセスアドレスに対応するデータを要求する。
【０１０３】
Ｌ２キャッシュ制御部１３は、Ｌ２インデックスＰＡ［１９：８］＝Ｂ’０００１０１０１００００でＬ２キャッシュタグを参照すると、ＰＡ［Ｐ：２０］＝Ｈ’１が登録されていて、かつ対応するサブライン（この場合、ＰＡ［６：７］＝２であるため、対応するサブラインはサブライン２となる）のＬ２有効ビットが１（オン）であるため、Ｌ２キャッシュ１３ａに該当データが存在すると判定する。
【０１０４】
サブライン２のＳＰフラグが１（オン）であるので、Ｌ２キャッシュ制御部１３は、要求されたＶＡ［１５：１２］＝Ｈ’８とＬ２キャッシュタグに登録されているＶＡ［１５：１２］＝Ｈ’５とを比較する。比較した結果、要求されたＶＡ［１５：１２］＝Ｈ’８とＬ２キャッシュタグに登録されているＶＡ［１５：１２］＝Ｈ’５とは異なっている。
【０１０５】
Ｌ２キャッシュ１３ａにおけるサブライン２以外のサブラインに対応するＳＰフラグはすべて１（オン）であるため、Ｌ１キャッシュ制御部１２は、サブライン２に対応するデータをＬ１キャッシュ１２ａから削除し、Ｌ２キャッシュ１３ａに書き戻す。この際、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュ１２ａからデータを削除したラインに対応する有効ビットを０に設定する。
【０１０６】
Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュ１３ａに対する書き戻しが完了した後に、サブライン２のＳＰフラグを０（オフ）、仮想アドレスをＶＡ［１５：１２］＝Ｈ’８、Ｌ１有効ビットを再度１に登録し直して、データＣ’をＬ１キャッシュ制御部１２に応答する。上記処理を実行することによって、Ｌ１キャッシュ１２ａ、Ｌ２キャッシュ１３ａは、状態３となる（図１６参照）。
【０１０７】
さらに、Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３は、上記した一連の動作を命令制御部１１からアクセス仮想アドレスを取得した場合にも続けて行うと、図１７に示すように、各アクセス仮想アドレスに対応するデータＡ’、Ｂ’、Ｄ’が登録され、更にＣ’を含めてそれらがすべて更新されたとするとＡ’’、Ｂ’’、Ｃ’’、Ｄ’’がストアされ状態４となる。
【０１０８】
状態４（図１７参照）において、命令制御部１１からアクセス仮想アドレスＶＡ［Ｖ：０］＝Ｈ’７４Ａ０４０にデータを要求された場合に、Ｌ１キャッシュ制御部１２は、Ｌ１インデックスＶＡ［１５：６］＝Ｂ’１０１００００００１を検索する。すると、Ｌ１キャッシュタグに該当アドレスがないので、Ｌ１キャッシュ制御部１２は、ＴＬＢ１２ｂから得られる物理ページ番号ＰＡ［Ｐ：１２］＝Ｈ’１１５を使用して、Ｌ２キャッシュ制御部１３にＬ２キャッシュアクセスアドレス「ＰＡ［Ｐ：０］＝Ｈ’１１５０４０（ＶＡ［１５：１２］＝Ｈ’Ａ）」を出力し、Ｌ２キャッシュアクセスアドレスに対応するデータを要求する。
【０１０９】
Ｌ２キャッシュ制御部１３は、Ｌ２インデックスＰＡ［１９：８］＝Ｂ’０００１０１０１００００でＬ２キャッシュタグを検索すると、ＰＡ［Ｐ：２０］＝Ｈ’１が登録されていて、かつ対応するサブライン（この場合、ＰＡ［６：７］＝１であるため、対応するサブラインはサブライン１となる）のＬ２有効ビットが１（オン）であるため、Ｌ２キャッシュ１３ａに該当データが存在すると判定する。
【０１１０】
サブライン１のＳＰフラグが０（オフ）であるので、Ｌ２キャッシュ制御部１３は、要求されたＶＡ［１５：１２］＝Ｈ’ＡとＬ２キャッシュタグに登録されているＶＡ［１５：１２］＝Ｈ’８とを比較する。双方は等しくないので、Ｌ２キャッシュ制御部１３は、要求されたＶＡ［１５：１２］＝Ｈ’ＡとＰＡ［１５：１２］＝Ｈ’８とを比較する。しかし、これも双方等しくないので、Ｌ１キャッシュ制御部１２は、要求されたサブライン１とＳＰフラグが０である残りのサブライン（０、２、３）を対象として、Ｌ１キャッシュ１２ａから削除し、Ｌ２キャッシュ１３ａに書き戻す。この際、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュ１２ａからデータを削除したラインに対応する有効ビットを０に設定する。
【０１１１】
Ｌ２キャッシュ制御部１３は、対象となるすべてのサブラインに対して書き戻しが完了した後に、サブライン１のＳＰフラグを０（オフ）のままにし、仮想アドレスにＶＡ［１５：１２］＝Ｈ’Ａ、Ｌ１有効ビットに１を登録して、データＢ’’をＬ１キャッシュ制御部１２に出力する。さらに、それが更新されたとするとＢ’’’がストアされる。上記処理を実行することによって、Ｌ１キャッシュ１２ａ、Ｌ２キャッシュ１３ａは、状態５となる（図１８参照）。
【０１１２】
状態５（図１８参照）において、命令制御部１１からアクセス仮想アドレスＶＡ［Ｖ：０］＝Ｈ’７４５０Ｃ０にデータを要求された場合に、Ｌ１キャッシュ制御部１２は、Ｌ１インデックスＶＡ［１５：６］＝Ｂ’０１０１００００１１を検索する。Ｌ１インデックスＶＡ［１５：６］＝Ｂ’０１０１００００１１に対応する有効ビットが立っていないため、Ｌ１キャッシュ制御部１２は、該当データがＬ１キャッシュ１２ａに登録されていないと判定する。
【０１１３】
Ｌ１キャッシュ制御部１２は、アクセス仮想アドレスＶＡ［Ｖ：０］＝Ｈ’７４５０Ｃ０とＴＬＢ１２ｂとを基にして得られる物理ページ番号がＰＡ［Ｐ：１２］＝Ｈ’１１５であることから、Ｌ１キャッシュ制御部１２は、Ｌ２キャッシュ制御部１３にＬ２キャッシュアクセスアドレス「ＰＡ［Ｐ：０］＝Ｈ’１１５０Ｃ０（ＶＡ［１５：１２］＝Ｈ’５）」を出力し、Ｌ２キャッシュアクセスアドレスに対応するデータを要求する。
【０１１４】
Ｌ２キャッシュ制御部１３は、Ｌ２インデックスＰＡ［１９：８］＝Ｂ’０００１０１０１００００でＬ２キャッシュタグを検索すると、ＰＡ［Ｐ：２０］＝Ｈ’１が登録されていて、かつ、対応するサブライン（この場合、ＰＡ［６：７］＝３であるので、サブライン３）のＬ２有効ビットが１であるのでＬ２キャッシュ１３ａに該当データが存在すると判定する。
【０１１５】
サブライン３のＳＰフラグが０（オフ）であるので、Ｌ２キャッシュ制御部１３は、要求されたＶＡ［１５：１２］＝Ｈ’５とＬ２キャッシュタグに登録されているＶＡ［１５：１２］＝Ｈ’Ａとを比較する。双方は等しくないので、Ｌ２キャッシュ制御部１３は、要求されたＶＡ［１５：１２］＝Ｈ’５と物理アドレスＰＡ［１５：１２］＝Ｈ’５とを比較する。双方は等しいので、Ｌ２キャッシュ制御部１３は、サブライン３のみに対して書き戻し処理を行うと判定する。
【０１１６】
なお、Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュタグに登録されているサブライン３のＬ１有効ビットが０であるので、サブライン３は、Ｌ１キャッシュ１２ａには存在しないことになり、該等データに対するＬ１キャッシュ１２ａからの削除・書き戻しを実行しない。そして、Ｌ２キャッシュ制御部１３は、Ｌ２キャッシュ１３ａのサブライン３のＬ１有効ビットを１、ＳＰフラグを１にして、Ｌ１キャッシュ制御部１２にデータＤ’’を出力し、Ｌ１キャッシュ制御部１２は、Ｌ１キャッシュ１２ａにデータＤ’’を登録する（図１９参照）。
【０１１７】
このように、本実施例にかかるＬ２キャッシュ制御部１３は、サブライン毎にＳＰフラグを持ち、ＳＰフラグが１（オン）であることは仮想アドレスと物理アドレスとの対応が取れていることと等価であることから、ＳＰフラグに基づいて書き戻しを実行することによって、仮想アドレスが共通であることによる他のサブラインへの干渉を回避することができる。また、ＳＰフラグはわずか１ビットしか資源を消費しないため、各サブラインごとに仮想アドレスそのものを持つ場合に比べて資源を節約することができる。
【０１１８】
次に、本実施例にかかるキャッシュメモリ制御装置１００の処理手順について説明する。図２０は、本実施例にかかるキャッシュメモリ制御装置１００の処理手順を示すフローチャートである。
【０１１９】
同図に示すように、Ｌ２キャッシュ制御部１３は、Ｌ１キャッシュ制御部１２からアクセス要求を取得し（ステップＳ１０１）、要求された物理アドレスのデータが存在するか否かを判定する（ステップＳ１０２）。
【０１２０】
要求された物理アドレスのデータが存在しない場合には（ステップＳ１０３，Ｎｏ）、Ｌ２キャッシュ制御部１３は、主記憶部５０に対するアクセス処理を実行する（ステップＳ１０４）。一方、要求された物理アドレスのデータが存在する場合には（ステップＳ１０３，Ｙｅｓ）、要求されたサブラインのＳＰフラグがオンか否かを判定する（ステップＳ１０５）。
【０１２１】
要求されたサブラインのＳＰフラグがオンの場合には（ステップＳ１０６，Ｙｅｓ）、ＳＰフラグがオンの場合の書き戻し処理を実行する（ステップＳ１０７）。一方、要求されたサブラインのＳＰフラグがオフの場合には（ステップＳ１０６，Ｎｏ）、ＳＰフラグがオフの場合の書き戻し処理を実行する（ステップＳ１０８）。
【０１２２】
次に、図２０のＳ１０４において示した主記憶部５０に対するアクセス処理について説明する。図２１は、主記憶部５０に対するアクセス処理の処理手順を示すフローチャートである。同図に示すように、Ｌ２キャッシュ制御部１３は、主記憶部５０に対してアクセス要求を行い、アクセス要求に対する応答を取得する（ステップＳ２０１）。
【０１２３】
そして、Ｌ２キャッシュ制御部１３は、要求されたＬ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）と、Ｌ２インデックスの物理ページ番号に属する部分（ＰＡ２１）とが等しいか否かを判定する（ステップＳ２０２）。
【０１２４】
等しい場合には（ステップＳ２０３，Ｙｅｓ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインのＳＰフラグをオンにして主記憶部５０から取得したデータをＬ２キャッシュ１３ａに書き込み（ステップＳ２０４）、要求されたサブラインに対応するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ２０５）。
【０１２５】
一方、要求されたＬ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）と、Ｌ２インデックスの物理ページ番号に属する部分（ＰＡ２１）とが異なる場合には（ステップＳ２０３，Ｎｏ）、Ｌ２キャッシュ制御部１３は、要求されたＬ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）についてＬ２キャッシュタグに登録されているものと要求されているものが等しいか否かを判定する（ステップＳ２０６）。
【０１２６】
等しい場合には（ステップＳ２０７，Ｙｅｓ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインのＳＰフラグをオフにして主記憶部５０から取得したデータをＬ２キャッシュ１３ａに書き込み（ステップＳ２０８）、ステップＳ２０５に移行する。
【０１２７】
一方、要求されたＬ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）についてＬ２キャッシュタグに登録されているものと要求されているものが異なっている場合には（ステップＳ２０７，Ｎｏ）、Ｌ２キャッシュ制御部１３は、ＳＰフラグがオフとなる残りのサブライン全てを対象としてＬ１キャッシュ１２ａから書き戻しを実行する（ステップＳ２０９）。
【０１２８】
その後、Ｌ２キャッシュ制御部１３は、要求されたサブラインのＳＰフラグをオフにし（ステップＳ２１０）、Ｌ２キャッシュ１３ａにおけるＬ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）を要求された仮想アドレスのものに登録し（ステップＳ２１１）、主記憶部５０から取得したデータをＬ２キャッシュ１３ａに書き込み（ステップＳ２１２）、ステップＳ２０５に移行する。
【０１２９】
次に、図２０のＳ１０７において示したＳＰフラグがオンの場合の書き戻し処理について説明する。図２２は、ＳＰフラグがオンの場合の書き戻し処理を示すフローチャートである。同図に示すように、Ｌ２キャッシュ制御部１３は、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２インデックスの物理ページ番号に属する部分（ＰＡ２１）と等しいか否かを判定する（ステップＳ３０１）。
【０１３０】
等しい場合には（ステップＳ３０２，Ｙｅｓ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインに対応するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ３０３）。
【０１３１】
一方、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２インデックスの物理ページ番号に属する部分（ＰＡ２１）と異なる場合には（ステップＳ３０２，Ｎｏ）、Ｌ２キャッシュ制御部１３は、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２キャッシュタグに登録されているものと要求されたものとが等しいか否かを判定する（ステップＳ３０４）。
【０１３２】
等しい場合には（ステップＳ３０５，Ｙｅｓ）、要求されたサブラインのみを対象としてＬ１キャッシュ１２ａからの書き戻しを実行し（ステップＳ３０６）、要求されたサブラインのＳＰフラグをオフとし（ステップＳ３０７）、要求されたサブラインに対するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ３０８）。
【０１３３】
一方、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２キャッシュタグに登録されているものと要求されたものとが異なる場合には（ステップＳ３０５，Ｎｏ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインおよびＳＰフラグがオフとなる残りのサブライン全てを対象としてＬ１キャッシュ１２ａから書き戻しを実行する（ステップＳ３０９）。
【０１３４】
そして、Ｌ２キャッシュ制御部１３は、要求されたサブラインのＳＰフラグをオフとし（ステップＳ３１０）、Ｌ１キャッシュ１２ａにおいて、Ｌ１インデックスの仮想ページ番号に属する部分を要求されたものに登録し（ステップＳ３１１）、要求されたサブラインに対するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ３１２）。
【０１３５】
次に、図２０のＳ１０８において説明したＳＰフラグがオフの場合の書き戻し処理について説明する。図２３は、ＳＰフラグがオフの場合の書き戻し処理を示すフローチャートである。同図に示すように、Ｌ２キャッシュ制御部１３は、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２キャッシュタグに登録されているものと、要求されたものとが等しいか否かを判定する（ステップＳ４０１）。
【０１３６】
等しい場合には（ステップＳ４０２，Ｙｅｓ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインに対応するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ４０３）。
【０１３７】
一方、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２キャッシュタグに登録されているものと、要求されたものとが異なる場合には（ステップＳ４０２，Ｎｏ）、Ｌ２キャッシュ制御部１３は、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２インデックスの物理ページ番号に属する部分（ＰＡ２１）と等しいか否かを判定する（ステップＳ４０４）。
【０１３８】
等しい場合には（ステップＳ４０５，Ｙｅｓ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインのみを対象としてＬ１キャッシュ１２ａからの書き戻しを実行し（ステップＳ４０６）、要求されたサブラインのＳＰフラグをオンにし（ステップＳ４０７）、要求されたサブラインに対するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ４０８）。
【０１３９】
一方、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）について、Ｌ２インデックスの物理ページ番号に属する部分（ＰＡ２１）と異なる場合には（ステップＳ４０５，Ｎｏ）、Ｌ２キャッシュ制御部１３は、要求されたサブラインおよびＳＰフラグがオフとなる残りのサブライン全てを対象としてＬ１キャッシュ１２ａからの書き戻しを実行する（ステップＳ４０９）。
【０１４０】
そして、Ｌ２キャッシュ制御部１３は、要求されたサブラインのＳＰフラグをオフにし（ステップＳ４１０）、Ｌ１インデックスの仮想ページ番号に属する部分（ＶＡ２１）を要求されたものに登録し（ステップＳ４１１）、要求されたサブラインに対するデータをＬ１キャッシュ制御部１２に出力する（ステップＳ４１２）。
【０１４１】
このように、Ｌ２キャッシュ制御部１３は、ＳＰフラグに基づいてデータの書き戻しを実行するので、仮想アドレスが共通であることによる他のサブラインへの干渉を回避することができる。また、サブライン毎に仮想アドレスを持つ場合よりも資源を少なくすることができ、サブライン同士の仮想アドレスが共通でＳＰフラグを持たない場合よりもキャッシュメモリ制御装置１００の性能を向上させることができる。
【０１４２】
上述してきたように、本実施例にかかるキャッシュメモリ制御装置１００は、Ｌ２キャッシュ１３ａのサブラインごとにＳＰフラグを設け、命令制御部１１からアクセス仮想アドレスをＬ１キャッシュ制御部１２が取得し、アクセス仮想アドレスに対応するデータが存在しない場合に、Ｌ２キャッシュアクセスアドレスをＬ２キャッシュ制御部１３に出力する。そして、Ｌ２キャッシュ制御部１３は、Ｌ１インデックスの仮想ページ番号に属する部分ＶＡ２１とＬ２インデックスの物理ページ番号に属する部分ＰＡ２１とを基にしてＳＰフラグの状態を切り換え、ＳＰフラグの状態に基づいてＬ１キャッシュ１２ａからサブラインに対するデータの書き戻しを実行し、要求対象となるサブラインのデータをＬ１キャッシュ制御部１２に出力するので、限られたＬ２キャッシュ１３ａの資源を有効に活用し、不必要なデータの書き戻しをなくす（同一ラインに記憶された他のサブラインに対応するＬ１キャッシュ上に記憶されたデータの削除（書き戻し）のフローを省略する）ことができる。
【０１４３】
また、本実施例にかかるキャッシュメモリ制御装置１００は、ＳＰフラグをＬ２キャッシュ１３ａに設定し、不必要なデータの書き戻しを省略しているので、Ｌ２キャッシュ制御部１３の負担が軽減され、Ｌ１キャッシュ制御部１２に対して迅速にデータの応答を実行することができる。
【０１４４】
なお、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部あるいは一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１４５】
また、図示したキャッシュメモリ制御装置１００の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部がＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１４６】
（付記１）第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御装置であって、
前記第２のキャッシュは、前記サブラインごとに制御フラグを備え、
データ要求を受け付け、要求されたデータが前記第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替手段と、
前記第１のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第１のキャッシュに出力する制御手段と、
を備えたことを特徴とするキャッシュメモリ制御装置。
【０１４７】
（付記２）前記制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする付記１に記載のキャッシュメモリ制御装置。
【０１４８】
（付記３）前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする付記２に記載のキャッシュメモリ制御装置。
【０１４９】
（付記４）前記制御手段は、前記制御フラグがオフ状態となるサブラインに対して前記第１のキャッシュからのデータの書き戻しを実行することを特徴とする付記１、２または３に記載のキャッシュメモリ制御装置。
【０１５０】
（付記５）要求されたデータが前記第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得手段をさらに備え、前記フラグ切替手段は、前記データ取得手段によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする付記１〜４のいずれか一つに記載のキャッシュメモリ制御装置。
【０１５１】
（付記６）前記フラグ切替手段は、前記仮想アドレスに含まれる仮想ページ番号に属する部分と当該仮想アドレスに対応する物理アドレスの物理ページ番号に属する部分とを基にして前記制御フラグの状態を切り換えることを特徴とする付記１〜５のいずれか一つに記載のキャッシュメモリ制御装置。
【０１５２】
（付記７）第１のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第１のキャッシュのデータを記憶する第２のキャッシュとを制御するキャッシュメモリ制御方法であって、
前記第２のキャッシュは、前記サブラインごとに制御フラグを備え、
データ要求を受け付け、要求されたデータが前記第１のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替工程と、
前記第１のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第１のキャッシュに出力する制御工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
【０１５３】
（付記８）前記制御フラグはオン状態あるいはオフ状態を示す１ビットのフラグであり、前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする付記７に記載のキャッシュメモリ制御方法。
【０１５４】
（付記９）前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする付記８に記載のキャッシュメモリ制御方法。
【０１５５】
（付記１０）前記制御工程は、前記制御フラグがオフ状態となるサブラインに対して前記第１のキャッシュからのデータの書き戻しを実行することを特徴とする付記７、８または９に記載のキャッシュメモリ制御方法。
【０１５６】
（付記１１）要求されたデータが前記第２のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得工程をさらに含み、前記フラグ切替工程は、前記データ取得工程によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする付記７〜１０のいずれか一つに記載のキャッシュメモリ制御方法。
【０１５７】
（付記１２）前記フラグ切替工程は、前記仮想アドレスに含まれる仮想ページ番号に属する部分と当該仮想アドレスに対応する物理アドレスの物理ページ番号に属する部分とを基にして前記制御フラグの状態を切り換えることを特徴とする付記７〜１１のいずれか一つに記載のキャッシュメモリ制御方法。
【産業上の利用可能性】
【０１５８】
以上のように、本発明にかかるキャッシュメモリ制御装置およびキャッシュメモリ制御方法は、包含関係にある多階層キャッシュシステムに対して有用であり、特に、限られたキャッシュメモリの資源を有効に活用し、不必要なデータの書き戻しを無くす場合に適している。
【図面の簡単な説明】
【０１５９】
【図１】本実施例にかかる仮想アドレスおよび物理アドレスの構成を説明するための説明図である。
【図２】本実施例にかかるキャッシュメモリ制御装置の構成を示す機能ブロック図である。
【図３】Ｌ１キャッシュのデータ構造の一例を示す図である。
【図４】ＴＬＢのデータ構造の一例を示す図である。
【図５】Ｌ２キャッシュのデータ構造の一例を示す図である。
【図６】Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部の処理を説明するための説明図（１）である。
【図７】Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部の処理を説明するための説明図（２）である。
【図８】Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部の処理を説明するための説明図（３）である。
【図９】Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部の処理を説明するための説明図（４）である。
【図１０】Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部の処理を説明するための説明図（５）である。
【図１１】Ｌ１キャッシュ制御部およびＬ２キャッシュ制御部の処理を説明するための説明図（６）である。
【図１２】仮想アドレスおよび物理アドレスの構成を具体的に説明するための説明図（１）である。
【図１３】仮想アドレスおよび物理アドレスの構成を具体的に説明するための説明図（２）である。
【図１４】Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図（１）である。
【図１５】Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図（２）である。
【図１６】Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図（３）である。
【図１７】Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図（４）である。
【図１８】Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図（５）である。
【図１９】Ｌ１キャッシュ制御部１２およびＬ２キャッシュ制御部１３の処理を詳細に説明するための説明図（６）である。
【図２０】本実施例にかかるキャッシュメモリ制御装置の処理手順を示すフローチャートである。
【図２１】主記憶部に対するアクセス処理の処理手順を示すフローチャートである。
【図２２】ＳＰフラグがオンの場合の書き戻し処理を示すフローチャートである。
【図２３】ＳＰフラグがオフの場合の書き戻し処理を示すフローチャートである。
【図２４】仮想アドレスおよび物理アドレスの構成を説明するための説明図である。
【図２５】従来にかかるＬ２キャッシュの構成を示す図である。
【図２６】従来にかかるキャッシュメモリの制御方式を説明するための説明図（１）である。
【図２７】従来にかかるキャッシュメモリの制御方式を説明するための説明図（２）である。
【図２８】従来にかかるキャッシュメモリの制御方式を説明するための説明図（３）である。
【図２９】従来にかかるキャッシュメモリの制御方式を説明するための説明図（４）である。
【図３０】従来にかかるキャッシュメモリの制御方式を説明するための説明図（５）である。
【符号の説明】
【０１６０】
１０，２０，３０    ＣＰＵ
１１    命令制御部
１２    Ｌ１キャッシュ制御部
１２ａ  Ｌ１キャッシュ
１３    Ｌ２キャッシュ制御部
１３ａ  Ｌ２キャッシュ
４０    システム制御部
５０    主記憶部
６０    Ｉ／Ｏ部
１００    キャッシュメモリ制御装置
【図１】
2008165626.tif 000003
【図２】
2008165626.tif 000004
【図３】
2008165626.tif 000005
【図４】
2008165626.tif 000006
【図５】
2008165626.tif 000007
【図６】
2008165626.tif 000008
【図７】
2008165626.tif 000009
【図８】
2008165626.tif 000010
【図９】
2008165626.tif 000011
【図１０】
2008165626.tif 000012
【図１１】
2008165626.tif 000013
【図１２】
2008165626.tif 000014
【図１３】
2008165626.tif 000015
【図１４】
2008165626.tif 000016
【図１５】
2008165626.tif 000017
【図１６】
2008165626.tif 000018
【図１７】
2008165626.tif 000019
【図１８】
2008165626.tif 000020
【図１９】
2008165626.tif 000021
【図２０】
2008165626.tif 000022
【図２１】
2008165626.tif 000023
【図２２】
2008165626.tif 000024
【図２３】
2008165626.tif 000025
【図２４】
2008165626.tif 000026
【図２５】
2008165626.tif 000027
【図２６】
2008165626.tif 000028
【図２７】
2008165626.tif 000029
【図２８】
2008165626.tif 000030
【図２９】
2008165626.tif 000031
【図３０】
2008165626.tif 000032