従来より、CPU(Central Processing Unit)などの処理装置がデータや命令などを取得/更新する際に主記憶装置やバスなどの遅延を隠蔽化し、処理装置と計算装置との性能差を埋めるためにキャッシュメモリが用いられている。また、キャッシュメモリは、多段構造となっており、例えば、L1(レベル1)キャッシュと、L1キャッシュを包含するL2(レベル2)キャッシュとから構成されている(特許文献1および特許文献2参照)。
また、L2キャッシュは、L1キャッシュに異なる仮想アドレスで同一の物理アドレスが登録される状態(シノニム)にならないように制御されるため、L2キャッシュタグに仮想アドレス(L1キャッシュのインデックス部に対応)を登録する形態をとり、さらに、L2キャッシュライン内を複数のブロックに区切ってサブラインを構成し、サブラインごとにデータが管理されるようになっている。
ここで、仮想アドレスおよび物理アドレスの構成について説明する。図24は、仮想アドレスおよび物理アドレスの構成を説明するための説明図である。図24において、VAは仮想アドレスを示し、PAは物理アドレスを示す。そして、VA1およびPA1は、L1キャッシュ、L2キャッシュそれぞれのインデックスより上位のビットを示し、VA2およびPA2は、L1キャッシュ、L2キャッシュそれぞれのインデックスを示す。
VA2は、VA21(仮想ページ番号に属する部分)とVA22(ページ内オフセットに属する部分)に分けられる。VA3およびPA3は、L1キャッシュ、L2キャッシュそれぞれのキャッシュライン内オフセットを示す。L2キャッシュは、PA3をPA31、PA32とサブラインに区切って使用する。ここで、PA31はサブライン番号、PA32はサブライン内オフセットを示す。
VA4およびPA4は、それぞれ仮想ページ番号、物理ページ番号を示し、VA5およびPA5は、ページ内オフセットを示す。なお、仮想アドレスVAを物理アドレスPAに変換した場合(あるいは物理アドレスPAを仮想アドレスVAに変換した場合)であってもVA5およびPA5に格納されたデータ(ビット)は変換されず双方とも等しいデータが格納される。
続いて、従来にかかるL2キャッシュの構成について説明する。図25は、従来にかかるL2キャッシュの構成を示す図である。同図に示すPA1は、登録物理アドレスを示し(図24に示したPA1に対応)、VA21は、登録仮想インデックスアドレスを示し(図24に示したVA21に対応)、SUBLINE−x STは、サブラインのステータス(このステータスは、L1キャッシュ、L2キャッシュにサブラインのデータが存在するか否かを示すデータやサブラインに対応するデータが更新されているか否かを示すデータを含む)、SUBLINE−x DATAは、サブラインのキャッシュデータを示す。
図25に示すL2キャッシュの管理方式は、一例として、L2キャッシュライン内で、4つのサブラインを管理する方式とする。L1キャッシュのラインサイズをα、L2キャッシュのラインサイズをβとすると、L1キャッシュのラインサイズαとL2キャッシュのラインサイズβとの関係は、「α×4=β」となる。
L2キャッシュは、各サブライン単位でデータ管理を実行することができる。なお、L2キャッシュは、L2キャッシュタグ部の資源の制限から4つのサブラインに対してただ1通りの仮想アドレスVAしか割り当てられず、シノニム解消のための書き戻しの際にはL2キャッシュライン(サブライン全て)が制御対象となる。サブラインごとに仮想アドレスVAを設定すれば、サブラインごと(他のサブラインと干渉せずに)独立に制御可能となるが、サブラインの数に比例してL2キャッシュのタグ部に割り当てるべき資源が増大するため、サブラインごとに仮想アドレスVAを割り当てられないのが現状である。
続いて、従来にかかるキャッシュメモリの制御方式について説明する。図26〜図30は、従来にかかるキャッシュメモリの制御方式を説明するための説明図である。以下において、図26〜図30を用いて、(1)物理アドレスPA(a)のデータがL1キャッシュに仮想アドレスVA(a)で登録され、仮想アドレスVA(a)でL1キャッシュがアクセスされた場合、(2)物理アドレスPA(a)のデータがL1キャッシュに仮想アドレスVA(a)で登録されているときに、仮想アドレスVA(b)でL1キャッシュがアクセスされた場合、(3)物理アドレスPA(a)のデータがL1キャッシュに仮想アドレスVA(a)で登録されているときに、仮想アドレスVA(c)でL1キャッシュがアクセスされた場合について順に説明する。なお、図26〜図30に示すTLB(Translation Lookaside Buffer)は、仮想アドレス(仮想ページ番号VA4)と物理アドレス(物理ページ番号PA4)の対応情報を保持するバッファである。
(1)物理アドレスPA(a)のデータがL1キャッシュに仮想アドレスVA(a)で登録され、仮想アドレスVA(a)でL1キャッシュがアクセスされた場合
図26に示すように、L1キャッシュ制御部(図示略)は、アクセス仮想アドレス(アクセス対象となる仮想アドレス)VA(a)をTLBによって物理ページ番号PA4(a)に変換し、L1インデックスVA2(a)に対応する物理ページ番号PA4(a)を検索すると、双方の物理ページ番号がPA4(a)で一致するのでL1キャッシュヒットとなり、L1キャッシュに記憶されたDATA(a)が応答される。
(2)物理アドレスPA(a)のデータがL1キャッシュに仮想アドレスVA(a)で登録されているときに、仮想アドレスVA(b)でL1キャッシュがアクセスされた場合(TLBにはVA(a)と同一物理ページ番号PA4(a)が登録されているときで、かつページ内オフセットのL2キャッシュのサブライン番号(例えば、サブライン番号0)が等しいとき)
図27に示す例では、L2キャッシュのタグは、L2インデックス部以下を除いた登録物理アドレスPA1(a)が登録され、L2ラインサイズ分のデータ(すなわち、サブラインすべて共通で)がL1キャッシュにVA21(a)のインデックスで登録されていることを示している。
また、L2キャッシュのタグには、PA1(a)、VA21(a)であるものがL2キャッシュに存在するか否かの示すステータス(ST0〜ST3に対応)が、サブラインごとに記憶されている。DATA(a0)〜DATA(a3)はそれぞれ同一L2キャッシュライン中のサブライン番号0〜3のデータに対応し、L2キャッシュは、DATA(a0)〜DATA(a3)のデータを記憶しているものとする。
図27に示すように、まず、L1キャッシュ制御部は、アクセス仮想アドレスVA(b)をTLBによって物理ページ番号PA(a)に変換する。一方、L1インデックスVA2(b)に対応する物理ページ番号がL1キャッシュに存在しないため、L1キャッシュミスとなる。L1キャッシュミスとなった場合には、L1キャッシュ制御部は、L2キャッシュに対してアクセスを行う。
図27の下段に示すように、L2キャッシュは、物理アドレスPA(a)のデータが要求対象となる仮想アドレスVA21(b)と異なる仮想アドレスVA21(a)で登録されているため、L2キャッシュ制御部(図示略)は、VA21(a)が等しいL1インデックスに登録してあるPA4(a)の全サブラインに対する削除命令をL1キャッシュ制御部に出力し、L1キャッシュから該当データを削除させる。L1キャッシュにおいて、DATA(ax)が更新されていれば、L1キャッシュ制御部およびL2キャッシュ制御部が協働して、更新されているデータをL2キャッシュに書き戻す。
L2キャッシュ制御部は、L2キャッシュに最新データを書き戻した後に、VA21(b)のインデックスによってL2キャッシュに登録し、要求されたサブラインに対するデータをL1キャッシュに応答する(図28の下段参照)。
そして、L1キャッシュ制御部は、L2キャッシュ制御部から取得したデータをL1キャッシュに記憶すると共に、記憶したデータを要求元(命令制御部:図示略)に出力する(図28の上段参照)。
(3)物理アドレスPA(a)のデータがL1キャッシュに仮想アドレスVA(a)で登録されているときに、仮想アドレスVA(c)でL1キャッシュがアクセスされた場合(TLBにはVA(a)と同一物理ページ番号PA4(a)が登録されているときで、かつ、ページ内オフセットのL2キャッシュのサブライン番号が異なっているとき)
図29に示す例では、図27と同様にして、L2キャッシュのタグは、L2インデックス部以下を除いた登録物理アドレスPA1(a)が登録され、L2ラインサイズ分のデータ(すなわち、サブラインすべて共通で)がL1キャッシュにVA21(a)のインデックスで登録されていることを示している。
図29に示すように、まず、L1キャッシュ制御部は、アクセス仮想アドレスVA(c)をTLBによって物理ページ番号PA(a)に変換する。一方、L1インデックスVA(c)に対応する物理ページ番号がL1キャッシュに存在しないため、L1キャッシュミスとなる。L1キャッシュミスとなった場合には、L1キャッシュ制御部は、L2キャッシュに対してアクセスを行う。
図29の下段に示すように、L2キャッシュは、物理アドレスPA(a)のデータが要求対象となる仮想アドレスVA21(c)と異なる仮想アドレスVA21(a)で登録されているため、L2キャッシュ制御部は、VA21(a)が等しいL1インデックスに登録してあるPA4(a)の全サブラインに対する削除命令をL1キャッシュ制御部に出力し、L1キャッシュから該当データを削除させる。L1キャッシュにおいて、DATA(ax)が更新されていれば、L1キャッシュ制御部およびL2キャッシュ制御部が協働して、更新されているデータをL2キャッシュに書き戻す。
L2キャッシュ制御部は、L2キャッシュに最新データを書き戻した後に、VA21(c)のインデックスによってL2キャッシュに登録し、要求されたサブラインに対するデータをL1キャッシュに応答する(図30の下段参照)。
そして、L1キャッシュ制御部は、L2キャッシュ制御部から取得したデータをL1キャッシュに記憶すると共に、記憶したデータを要求元に出力する(図30の上段参照)。
このように、L2キャッシュは、L2キャッシュラインを複数のブロックに区切っているため、サブラインごとにデータを管理することができる。
国際公開第2004/046932号パンフレット
特開平8−6852号公報
まず、本実施例において用いられる仮想アドレスおよび物理アドレスの構成について説明する。図1は、本実施例にかかる仮想アドレスおよび物理アドレスの構成を説明するための説明図である。図1において、VAは仮想アドレスを示し、PAは物理アドレスを示す。そして、VA1およびPA1は、L1キャッシュ、L2キャッシュそれぞれのインデックスより上位のビットを示し、VA2およびPA2は、L1キャッシュ、L2キャッシュそれぞれのインデックスを示す。
VA2は、VA21(仮想ページ番号に属する部分)とVA22(ページ内オフセットに属する部分)に分けられる。また、PA2は、L2インデックスの物理ページ番号に属する部分PA21を含んでいる。VA3およびPA3は、L1キャッシュ、L2キャッシュそれぞれのキャッシュライン内オフセットを示す。L2キャッシュは、PA3をPA31、PA32とサブラインに区切って使用する。ここで、PA31はサブライン番号、PA32はサブライン内オフセットを示す。
VA4およびPA4は、それぞれ仮想ページ番号、物理ページ番号を示し、VA5およびPA5は、ページ内オフセットを示す。なお、仮想アドレスVAを物理アドレスPAに変換した場合(あるいは物理アドレスPAを仮想アドレスVAに変換した場合)であってもVA5およびPA5に格納されたデータ(ビット)は変換されず双方とも等しいデータが格納される。
続いて、本実施例にかかるキャッシュメモリ制御装置の概要および特徴について説明する。本実施例にかかるキャッシュメモリ制御装置は、L2(レベル2)キャッシュに含まれるサブラインごとに1ビットの制御フラグを設ける。そして、L1インデックスの仮想ページ番号に属する部分VA21とL2(レベル2)インデックスの物理ページ番号に属する部分PA21が等しいか否かを判定し、判定結果に応じて制御フラグをオン状態あるいはオフ状態に切り換える(図1参照)と共に、制御フラグの状態に基づいて、必要なサブラインに対してのみL1キャッシュからの削除の操作を行う(必要なサブラインに対してのみL1キャッシュからの書き戻しを実行する)。
L1インデックスの仮想ページ番号に属する部分VA21とL2インデックスの物理ページ番号に属する部分PA21が一致する場合には、VA21によらずPA21によってサブラインが属するL1インデックスを一意に特定することができることを意味する(仮想アドレスと物理アドレスとの対応がとれていることと等価となるため、PA21によって直接アクセスしても他のサブラインとの干渉を回避することができる)。
このように、L2キャッシュのサブラインごとに1ビットの制御フラグを設定し、制御フラグの状態(制御フラグがオンあるいはオフの状態)に基づいて、L1キャッシュからの削除操作を行うので、旧L1インデックスに登録されているサブラインのL1キャッシュからの削除の操作が同一L2キャッシュライン内の他のサブラインに対して発生してしまうことを防止することができる。また、サブラインごとに設けた制御フラグは1ビットの制御フラグであるため、制御フラグによる資源の消費量を極力低減させることができる。なお、以下の説明において、制御フラグをSPフラグと表記する。
つぎに、本実施例にかかるキャッシュメモリ制御装置の構成について説明する。図2は、本実施例にかかるキャッシュメモリ制御装置の構成を示す機能ブロック図である。同図に示すように、このキャッシュメモリ制御装置100は、CPU(Central Processing Unit)10〜30と、システム制御部40と、主記憶部50と、I/O(Input Output)部60とを備えて構成される。なお、図2に示す例では、CPU10〜30のみを示すが、このキャッシュメモリ制御装置100は、その他複数のCPUから構成されてもよい。また、CPU10〜30は、同様の構成であるため、ここでは、CPU10の説明を行いCPU20,30の説明は省略する。
CPU10は、主記憶部50に記憶されたプログラムを実行する装置であり、入力装置や記憶装置(図示略)からデータを受け取り、演算・加工した上で、出力装置や記憶装置に出力する。このCPU10は、命令制御部11と、L1キャッシュ制御部12と、L2キャッシュ制御部13とを備える。
このうち、命令制御部11は、L1キャッシュ制御部12からデータを取得し、演算・加工した上で、L1キャッシュ制御部12に出力する処理部である。命令制御部11は、L1キャッシュ制御部12からデータを取得する場合に、L1キャッシュ制御部12に対して取得対象となるデータの仮想アドレス(以下、アクセス仮想アドレスと表記する)VAを出力する。
L1キャッシュ制御部12は、L1キャッシュ12aおよびTLB12bを備え、命令制御部11からアクセス仮想アドレスVAを取得した場合に、対応するデータを命令制御部11に出力する処理部である。L1キャッシュ制御部12は、アクセス仮想アドレスVAに対応するデータをL1キャッシュ12aおよびTLB12bに基づいて取得し、取得したデータを命令制御部11に出力する。なお、アクセス仮想アドレスVAに対応するデータがL1キャッシュ12aに存在しない場合には、アクセス仮想アドレスVAに対応するデータを取得するため、L2キャッシュアクセスアドレスをL2キャッシュ制御部13に出力する。このL2キャッシュアクセスアドレスは、アクセス仮想アドレスに対応する物理アドレスとアクセス仮想アドレスのVA21(仮想ページ番号に属する部分)が含まれる。
ここで、L1キャッシュ12aおよびTLB12bのデータ構造について説明する。図3は、L1キャッシュ12aのデータ構造の一例を示す図であり、図4は、TLB12bのデータ構造の一例を示す図である。図3に示すように、L1キャッシュ12aは、L1インデックス(VA2に対応)、物理ページ番号(PA4)、L1インデックスおよび物理ページ番号に対応するデータから構成される。また、TLB12bは、図4に示すように、仮想ページ番号(VA4)および物理ページ番号(PA4)から構成される。
L2キャッシュ制御部13は、L2キャッシュ13aを備え、L1キャッシュ制御部12からL2キャッシュアクセスアドレスを取得した場合に、L2キャッシュアクセスアドレスに対応するデータをL1キャッシュ制御部12に出力する処理部である。
ここで、L2キャッシュ13aのデータ構造について説明する。図5は、L2キャッシュ13aのデータ構造の一例を示す図である。同図に示すように、L2キャッシュ13aは、L2インデックス(図1に示したPA2に対応)と、登録物理アドレス(図1に示したPA1に対応)と、登録仮想インデックスアドレス(図1に示したVA21に対応)と、サブラインのステータスにかかる情報を記憶するサブラインnステータス(nは0以上の整数)と、サブラインnステータスに対応し、上述した制御フラグに対応するスペシャル(SP)フラグn(nは0以上の整数)と、サブラインnステータスに対応するキャッシュデータを記憶するサブラインnデータ(nは0以上の整数)とから構成される。
L2キャッシュ制御部13は、L1キャッシュ制御部12からL2キャッシュアクセスアドレスを取得した場合に、L2キャッシュアクセスアドレスに含まれるVA21とPA21とが等しいか否かを判定し、判定結果に基づいてサブラインのSPフラグをオン(1)あるいはオフ(0)に設定する(切り換える)。
そして、L2キャッシュ制御部13は、SPフラグの状態を基にしてL2キャッシュ13aの各情報の再登録を行うと共に、L2キャッシュアクセスアドレスに対応するサブラインのデータをL1キャッシュ制御部12に出力する。なお、L1キャッシュ制御部12およびL2キャッシュ制御部13に関する詳しい説明は後述する。
システム制御部40は、L2キャッシュタグの写しを保持し、L2キャッシュ制御部13からのデータ要求を取得した場合に、対応するデータを主記憶部50から取得し、取得したデータをL2キャッシュ制御部13に出力する処理部である。ここで、L2キャッシュタグの写しは、図5に示したL2キャッシュ13aのL2インデックス、登録物理アドレス、サブラインnステータスに対応する情報を記憶する。
主記憶部50は、CPU10〜30によって利用されるデータおよび命令を記憶する記憶部(メモリ)であり、システム制御部40からのデータ要求に応答して、対応するデータをシステム制御部40に出力する。I/O部60は、図示しない記憶装置、入力装置、出力装置との間におけるデータの入出力を制御する処理部である。
続いて、図2に示したL1キャッシュ制御部12およびL2キャッシュ制御部13の処理について具体的に説明する。図6〜図11は、L1キャッシュ制御部12およびL2キャッシュ制御部13の処理を説明するための説明図である。
まず、L1キャッシュ12aおよびL2キャッシュ13aが、図6のように登録されているときに、L1キャッシュ制御部12がアクセス仮想アドレスVA(e)を命令制御部11から取得した場合について説明する。また、図6を説明する場合の条件として、TLB12bにおいて、VA(e)はVA(a)と同一の物理ページ番号PA4(a)で登録されており、かつ、アクセス仮想アドレスVA(e)のページ内オフセットのL2キャッシュのサブライン番号が3であり、かつ、PA21(a)とVA21(e)とが等しいものとする。
また、VA(a)、VA(b)、VA(c)、VA(d)の仮想ページ番号はすべてVA4(a)と等しいとする。それゆえ、VA2(a)、VA2(b)、VA2(c)、VA2(d)の仮想ページ番号に属する部分はすべてVA21(a)と等しい。
図6に示すように、L1キャッシュ制御部12は、命令制御部11からアクセス仮想アドレスVA(e)を取得し、TLB12bによって物理ページ番号PA4(a)に変換する。一方、L1キャッシュ12aにおいて、L1インデックスVA2(e)に対応する物理ページ番号PA4が存在しないため、L1キャッシュ制御部12は、L1キャッシュミスと判定する。
L1キャッシュ制御部12は、L1キャッシュミスと判定した場合に、L2キャッシュアクセスアドレスをL2キャッシュ制御部13に出力する。L2キャッシュ制御部13は、L2キャッシュアクセスアドレスを取得し、L2キャッシュアクセスアドレスに含まれるVA21(e)と、L2キャッシュ13aに含まれる登録仮想インデックスアドレスVA21とを比較し、一致するか否かを判定する。図6に示す例では、登録仮想インデックスアドレスVA21は、VA21(a)であり、双方のアドレスは一致しないため、L1インデックスに登録してあるPA4(a)に対応する全サブラインのデータが書き戻し対象の候補となる。
続いて、L2キャッシュ制御部13は、PA21(a)とVA21(e)とを比較して、双方が等しいか否かを判定する。図6に示す例では、PA21(a)およびVA21(e)が等しいので、サブライン3データ(DATA(a3))のみを対象としてデータの書き戻しを実行する。この場合、L1キャッシュ制御部12はサブライン3に対応するデータをL1キャッシュ12aから一旦削除し、L1キャッシュ12aにおいて、DATA(a3)が更新されている場合には(DATA’(a3))、L2キャッシュ13aに最新のデータを書き戻す。
その後、L2キャッシュ制御部13は、SPフラグ3を1(オン)に設定し、DATA’(a3)をL1キャッシュ制御部12に出力する(図7参照)。なお、この場合には、L2キャッシュ13aの登録仮想インデックスVA21は、VA21(a)のままとなる。また、L1キャッシュ12aにおいて、L1インデックスVA2(e)のラインにDATA’(a3)が記憶される。
続いて、L1キャッシュ12aおよびL2キャッシュ13aが、図8のように登録されているときに、L1キャッシュ制御部12がアクセス仮想アドレスVA(f)を命令制御部11から取得した場合について説明する。また、図8を説明する場合の条件として、TLB12bにおいて、VA(f)はVA(a)と同一の物理ページ番号PA4(a)で登録されており、かつ、アクセス仮想アドレスVA(f)のページ内オフセットのL2キャッシュのサブライン番号が3であり、かつ、PA21(a)とVA21(f)とが異なっているものとする。
また、VA(a)、VA(b)、VA(c)、VA(d)の仮想ページ番号はすべてVA4(a)と等しいとする。それゆえ、VA2(a)、VA2(b)、VA2(c)、VA2(d)の仮想ページ番号に属する部分はすべてVA21(a)と等しい。
図8に示すように、L1キャッシュ制御部12は、命令制御部11からアクセス仮想アドレスVA(f)を取得し、TLB12bによって物理ページ番号PA4(a)に変換する。一方、L1キャッシュ12aにおいてL1インデックスVA2(f)に対応する物理ページ番号PA4が存在しないため、L1キャッシュ制御部12は、L1キャッシュミスと判定する。
L1キャッシュ制御部12は、L1キャッシュミスと判定した場合に、L2キャッシュアクセスアドレスをL2キャッシュ制御部13に出力する。L2キャッシュ制御部13は、L2キャッシュアクセスアドレスを取得し、L2キャッシュアクセスアドレスに含まれるVA21(f)と、L2キャッシュ13aに含まれる登録仮想インデックスアドレスVA21と比較し、一致するか否かを判定する。図8に示す例では、登録仮想インデックスアドレスVA21は、VA21(a)であり、双方のアドレスが一致しないため、L1インデックスに登録してあるPA4(a)に対応する全サブラインのデータが書き戻し対象の候補となる。
続いて、L2キャッシュ制御部13は、PA21(a)とVA21(f)とを比較して、双方が等しいか否かを判定する。図8に示す例では、PA21(a)およびVA21(f)が異なっているので、L1インデックスに登録してあるPA4(a)の全サブラインを対象としてデータの書き戻しを実行する。L1キャッシュ12aにおいて、DATA(ax)が更新されている場合には(DATA’(ax))、L2キャッシュ13aに最新のデータを書き戻す。
その後、L2キャッシュ制御部13は、SPフラグ3を0(オフ)に設定し、DATA’(a3)をL1キャッシュ制御部12に出力する(図9参照)。なお、この場合には、L2キャッシュ13aの登録仮想インデックスVA21は、VA21(f)に変更される。また、L1キャッシュ12aにおいて、L1インデックスVA2(f)のラインにDATA’(a3)が記憶される。
続いて、L1キャッシュ12aおよびL2キャッシュ13aが、図10のように登録されているときに、L1キャッシュ制御部12がアクセス仮想アドレスVA(g)を命令制御部11から取得した場合について説明する。また、図10を説明する場合の条件として、TLB12bにおいて、VA(g)はVA(a)と同一の物理ページ番号PA4(a)で登録されており、かつ、アクセス仮想アドレスVA(g)のページ内オフセットのL2キャッシュのサブライン番号が3であり、かつ、PA21(a)とVA21(g)とが異なっているものとする。
また、VA2(a)、VA2(b)、VA2(c)、VA2(d)の仮想ページ番号に属する部分はそれぞれ、PA21(a)、VA21(b)、PA21(a)、PA21(a)と等しいものとする。それゆえ、図10のL2キャッシュ13aにおいて、SPフラグ0、SPフラグ2、SPフラグ3に1が設定されている。
図10に示すように、L1キャッシュ制御部12は、命令制御部11からアクセス仮想アドレスVA(g)を取得し、TLB12bによって物理アドレスPA4(a)に変換する。一方、L1キャッシュ12aにおいてL1インデックスVA2(g)に対応する物理ページ番号が存在しないため、L1キャッシュ制御部12は、L1キャッシュミスと判定する。
L1キャッシュ制御部12は、L1キャッシュミスと判定した場合に、L2キャッシュアクセスアドレスをL2キャッシュ制御部13に出力する。L2キャッシュ制御部13は、L2キャッシュアクセスアドレスを取得し、L2キャッシュアクセスアドレスに含まれるVA21(g)と、L2キャッシュ13aに含まれる登録仮想インデックスアドレスVA21と比較し、一致するか否かを判定する。図10に示す例では、登録仮想インデックスVA21は、VA21(b)であり、双方のアドレスが一致しないため、L1インデックスに登録してあるPA4(a)に対応する全サブラインのデータが書き戻し対象の候補となる。
続いて、L2キャッシュ制御部13は、PA21(a)とVA21(g)とを比較して、双方が等しいか否かを判定する。図10に示す例では、PA21(a)およびVA21(g)が異なっているので、L2キャッシュ制御部13は、L2キャッシュ13aの登録仮想インデックスアドレスをVA21(g)に設定する(図11参照)。
また、L1キャッシュ制御部12は、L1インデックスに登録してあるPA4(a)のサブラインをL1キャッシュ12aから一旦削除する。なお、SPフラグが1(オン)となっているサブラインは、VA21とPA21(a)とが等しいと判定できるので、書き戻し対象からはずすことができる(DATA’(a0)およびDATA’(a2)が書き戻し対象から除外される。DATA’(a3)は、アクセス仮想アドレスVA(g)に属するサブラインであるため、書き戻し対象となる)。なおL1キャッシュ12aにおいて、DATA(ax)が更新されていれば(DATA’(ax))、L2キャッシュ13aに最新データを書き戻す。
その後、L2キャッシュ制御部13は、SPフラグ3を0(オフ)に設定し、DATA’(a3)をL1キャッシュ制御部12に出力する。なお、L1キャッシュ12aにおいて、L1インデックスVA2(g)のラインにDATA’(a3)が記憶される。
つぎに、本発明をより具体的に説明する。ここでは、説明を簡単にするために、L1キャッシュ12aおよびL2キャッシュ13aをダイレクトマップ方式とするが、セットアソシアティブ方式などでも構わない。L1キャッシュ12aが64kバイト、L2キャッシュ13aが1024kバイトであるとし、L1キャッシュ12aのラインサイズを64バイト、L2キャッシュ13aのラインサイズを256バイトとする。
L2キャッシュ13aのラインサイズは256バイトであるが、データの管理単位としては、L1キャッシュのラインサイズである64バイトのサブラインで行うことができる。また、ページサイズを4kバイトとし、L1キャッシュ12a、L2キャッシュ13a共にライトバックキャッシュであることとする。
図12および図13は、仮想アドレスおよび物理アドレスの構成を具体的に説明するための説明図である。図12に示すように、サポートできる仮想アドレスの最上位ビットをV、物理アドレスの最上位ビットをPとする。VA1、PA1は、L1キャッシュ12a、L2キャッシュ13aそれぞれのインデックスより上位のビットを示す。
VA1=VA[V:16]
PA1=PA[P:20]
VA2およびPA2は、L1キャッシュ12a、L2キャッシュ13aそれぞれのインデックスを示す。
VA2=VA[15:6]
PA2=PA[19:8]
VA2は、VA21(仮想ページ番号に属する部分)とVA22(ページ内オフセットに属する部分)に分けられる。
VA21=VA[15:12]
VA22=VA[11:6]
VA3およびPA3は、L1キャッシュ12a、L2キャッシュ13aそれぞれのキャッシュライン内オフセットを示す。
VA3=VA[5:0]
PA3=PA[7:0]
L2キャッシュ13aは、PA3をPA31、PA32とサブラインに区切って使用する。PA31はサブライン番号、PA32はサブライン内オフセットを示す。
PA31=PA[7:6]
PA32=PA[5:0]
VA4およびPA4は、それぞれ仮想ページ番号、物理ページ番号を示す。
VA4=VA[V:12]
PA4=PA[P:12]
VA5およびPA5は、ページ内オフセットを示す(両者は等しい)。
VA5=VA[11:0]
PA5=PA[11:0]
VA5=PA5
続いて、図13の説明に移ると、L1キャッシュ12aは、タグ部にそのラインが有効であることを示すビットと登録されている物理アドレスPA4=PA[P:12]が記録されている。L1キャッシュ12aにおけるデータ部には、そのラインのデータ(64バイト)が記憶されている。
TLB12bは、同図に示すように、タグ部および物理アドレス部から構成される。タグ部は、エントリ有効ビットと、仮想アドレスPA[V:12]、その他の情報(プロセスIDなどを含む)から構成され、物理アドレス部は、物理アドレスPA[P:12]から構成される。
L2キャッシュ13aは、タグ部に物理アドレスPA1=PA[P:20]と仮想アドレスVA21=VA[15:12]が記憶され、サブライン毎に、そのサブラインがL2キャッシュ13aで有効か、L1キャッシュ12aで有効かを示すビットと、SPフラグとを設けている。SPフラグは、VA21=VA[15:12]とPA21=PA[15:12]が等しい場合に、SPフラグは1(オン)となる。L2キャッシュ13aのデータ部にはサブラインごとにデータ(64バイト)が記憶されている。
続いて、図14〜図19を用いて、L1キャッシュ制御部12およびL2キャッシュ制御部13の処理について詳細に説明する。図14〜図19は、L1キャッシュ制御部12およびL2キャッシュ制御部13の処理を詳細に説明するための説明図である。
まず、L1キャッシュ12aおよびL2キャッシュ13aが、図14のような状態(状態1)であったとする。TLB12bには、それぞれ仮想ページ番号VA[V:12]と物理ページ番号PA[P:12]が対応付けられており(その他の情報は説明の便宜上省略する)、L1キャッシュ12aおよびL2キャッシュ13aには、今からアクセスするアドレスに関しては登録されていないものとする。主記憶部50には、図14に示すように、H’115000番地から64バイト境界単位でA,B,・・・が記憶されているものとする。なお「H(Hex)」は、16進数表示であることを示す。すなわち、H’115000を2進数表示で表すと、B(Bit)’000100010101000000000000となる。
状態1において、命令制御部11からアクセス仮想アドレスVA[V:0]=H’745000のデータを要求された場合に、L1キャッシュ制御部12は、L1キャッシュタグおよびTLB12bを参照する。すると、L1インデックスVA[15:6]=B’101000000には、有効ビットが立っていないことからL1キャッシュ12aには、要求されたデータが登録されていないことがわかる。
また、TLB12bから、アクセス仮想アドレスに対応する物理ページがPA[P:12]=H’115であることから、L1キャッシュ制御部12は、L2キャッシュ制御部13にL2キャッシュアクセスアドレス「PA[P:0]=H’115000(VA[15:12]=H’5)」を出力し、L2キャッシュアクセスアドレスに対応するデータを要求する。
L2キャッシュ制御部13は、L2インデックスPA[19:8]=B’000101010000でL2キャッシュタグを参照すると、有効ビットが立っていないのでL2キャッシュ13aに登録されていないと判定でき、L2キャッシュ制御部13は、主記憶部50にPA[P:0]=H’115000のデータを要求する。(実際には、L2キャッシュ制御部13は、システム制御部40を介して主記憶部50にアクセスするわけであるが、ここでは説明の便宜上、システム制御部40を省略して説明する。)
L2キャッシュ制御部13は、主記憶部50からの応答を受け付けた場合に、VA[15:12]=H’5がPA[15:12]=H’5と等しいので該当するサブライン番号(ここでは0;PA[7:6]=H’0)に対応するSPフラグを1(オン)にする。また、L2キャッシュ制御部13は、L2キャッシュタグに各種情報(物理アドレスPA[P:20]=H’115、仮想アドレスVA[15:12]=H’5、L2有効ビット(L2V)を1(オン)、L1有効ビット(L1V)を1(オン)であることを登録し、L2キャッシュデータ部にAを記憶する。さらに、L2キャッシュ制御部13は、L1キャッシュ制御部12にデータAを出力する。
L1キャッシュ制御部12は、L2キャッシュ制御部13からの応答を受け付けた場合に、物理アドレスPA[P:12]=H’115、L1有効ビットを1(オン)であることをL1キャッシュタグに記憶し、L1キャッシュデータ部にデータAを記憶する。さらに、L1キャッシュ制御部12は、データAを命令制御部11に出力する。
L1キャッシュ制御部12およびL2キャッシュ制御部13は、上記した一連の動作を命令制御部11からアクセス仮想アドレスVA[V:0]=H’745040、VA[V:0]=H’745080、VA[V:0]=H’7450C0を取得した場合にも続けて行うと、図15に示すように、各アクセス仮想アドレスに対応するデータB,C,DがL1キャッシュ12aにストアされ、状態2となる。
状態2(図15参照)において、命令制御部11からアクセス仮想アドレスVA[V:0]=H’748080のデータを要求された場合に、L1キャッシュ制御部12は、L1インデックスVA[15:6]=B’1000000010を検索する。すると、L1キャッシュタグに該当アドレスがないので、L1キャッシュ制御部12は、TLB12bから得られる物理ページ番号PA[P:12]=H’115を使用して、L2キャッシュ制御部13にL2キャッシュアクセスアドレス「PA[P:0]=H’115080(VA[15:12]=H’8)」を出力し、L2キャッシュアクセスアドレスに対応するデータを要求する。
L2キャッシュ制御部13は、L2インデックスPA[19:8]=B’000101010000でL2キャッシュタグを参照すると、PA[P:20]=H’1が登録されていて、かつ対応するサブライン(この場合、PA[6:7]=2であるため、対応するサブラインはサブライン2となる)のL2有効ビットが1(オン)であるため、L2キャッシュ13aに該当データが存在すると判定する。
サブライン2のSPフラグが1(オン)であるので、L2キャッシュ制御部13は、要求されたVA[15:12]=H’8とL2キャッシュタグに登録されているVA[15:12]=H’5とを比較する。比較した結果、要求されたVA[15:12]=H’8とL2キャッシュタグに登録されているVA[15:12]=H’5とは異なっている。
L2キャッシュ13aにおけるサブライン2以外のサブラインに対応するSPフラグはすべて1(オン)であるため、L1キャッシュ制御部12は、サブライン2に対応するデータをL1キャッシュ12aから削除し、L2キャッシュ13aに書き戻す。この際、L1キャッシュ制御部12は、L1キャッシュ12aからデータを削除したラインに対応する有効ビットを0に設定する。
L2キャッシュ制御部13は、L2キャッシュ13aに対する書き戻しが完了した後に、サブライン2のSPフラグを0(オフ)、仮想アドレスをVA[15:12]=H’8、L1有効ビットを再度1に登録し直して、データC’をL1キャッシュ制御部12に応答する。上記処理を実行することによって、L1キャッシュ12a、L2キャッシュ13aは、状態3となる(図16参照)。
さらに、L1キャッシュ制御部12およびL2キャッシュ制御部13は、上記した一連の動作を命令制御部11からアクセス仮想アドレスを取得した場合にも続けて行うと、図17に示すように、各アクセス仮想アドレスに対応するデータA’、B’、D’が登録され、更にC’を含めてそれらがすべて更新されたとするとA’’、B’’、C’’、D’’がストアされ状態4となる。
状態4(図17参照)において、命令制御部11からアクセス仮想アドレスVA[V:0]=H’74A040にデータを要求された場合に、L1キャッシュ制御部12は、L1インデックスVA[15:6]=B’1010000001を検索する。すると、L1キャッシュタグに該当アドレスがないので、L1キャッシュ制御部12は、TLB12bから得られる物理ページ番号PA[P:12]=H’115を使用して、L2キャッシュ制御部13にL2キャッシュアクセスアドレス「PA[P:0]=H’115040(VA[15:12]=H’A)」を出力し、L2キャッシュアクセスアドレスに対応するデータを要求する。
L2キャッシュ制御部13は、L2インデックスPA[19:8]=B’000101010000でL2キャッシュタグを検索すると、PA[P:20]=H’1が登録されていて、かつ対応するサブライン(この場合、PA[6:7]=1であるため、対応するサブラインはサブライン1となる)のL2有効ビットが1(オン)であるため、L2キャッシュ13aに該当データが存在すると判定する。
サブライン1のSPフラグが0(オフ)であるので、L2キャッシュ制御部13は、要求されたVA[15:12]=H’AとL2キャッシュタグに登録されているVA[15:12]=H’8とを比較する。双方は等しくないので、L2キャッシュ制御部13は、要求されたVA[15:12]=H’AとPA[15:12]=H’8とを比較する。しかし、これも双方等しくないので、L1キャッシュ制御部12は、要求されたサブライン1とSPフラグが0である残りのサブライン(0、2、3)を対象として、L1キャッシュ12aから削除し、L2キャッシュ13aに書き戻す。この際、L1キャッシュ制御部12は、L1キャッシュ12aからデータを削除したラインに対応する有効ビットを0に設定する。
L2キャッシュ制御部13は、対象となるすべてのサブラインに対して書き戻しが完了した後に、サブライン1のSPフラグを0(オフ)のままにし、仮想アドレスにVA[15:12]=H’A、L1有効ビットに1を登録して、データB’’をL1キャッシュ制御部12に出力する。さらに、それが更新されたとするとB’’’がストアされる。上記処理を実行することによって、L1キャッシュ12a、L2キャッシュ13aは、状態5となる(図18参照)。
状態5(図18参照)において、命令制御部11からアクセス仮想アドレスVA[V:0]=H’7450C0にデータを要求された場合に、L1キャッシュ制御部12は、L1インデックスVA[15:6]=B’0101000011を検索する。L1インデックスVA[15:6]=B’0101000011に対応する有効ビットが立っていないため、L1キャッシュ制御部12は、該当データがL1キャッシュ12aに登録されていないと判定する。
L1キャッシュ制御部12は、アクセス仮想アドレスVA[V:0]=H’7450C0とTLB12bとを基にして得られる物理ページ番号がPA[P:12]=H’115であることから、L1キャッシュ制御部12は、L2キャッシュ制御部13にL2キャッシュアクセスアドレス「PA[P:0]=H’1150C0(VA[15:12]=H’5)」を出力し、L2キャッシュアクセスアドレスに対応するデータを要求する。
L2キャッシュ制御部13は、L2インデックスPA[19:8]=B’000101010000でL2キャッシュタグを検索すると、PA[P:20]=H’1が登録されていて、かつ、対応するサブライン(この場合、PA[6:7]=3であるので、サブライン3)のL2有効ビットが1であるのでL2キャッシュ13aに該当データが存在すると判定する。
サブライン3のSPフラグが0(オフ)であるので、L2キャッシュ制御部13は、要求されたVA[15:12]=H’5とL2キャッシュタグに登録されているVA[15:12]=H’Aとを比較する。双方は等しくないので、L2キャッシュ制御部13は、要求されたVA[15:12]=H’5と物理アドレスPA[15:12]=H’5とを比較する。双方は等しいので、L2キャッシュ制御部13は、サブライン3のみに対して書き戻し処理を行うと判定する。
なお、L2キャッシュ制御部13は、L2キャッシュタグに登録されているサブライン3のL1有効ビットが0であるので、サブライン3は、L1キャッシュ12aには存在しないことになり、該等データに対するL1キャッシュ12aからの削除・書き戻しを実行しない。そして、L2キャッシュ制御部13は、L2キャッシュ13aのサブライン3のL1有効ビットを1、SPフラグを1にして、L1キャッシュ制御部12にデータD’’を出力し、L1キャッシュ制御部12は、L1キャッシュ12aにデータD’’を登録する(図19参照)。
このように、本実施例にかかるL2キャッシュ制御部13は、サブライン毎にSPフラグを持ち、SPフラグが1(オン)であることは仮想アドレスと物理アドレスとの対応が取れていることと等価であることから、SPフラグに基づいて書き戻しを実行することによって、仮想アドレスが共通であることによる他のサブラインへの干渉を回避することができる。また、SPフラグはわずか1ビットしか資源を消費しないため、各サブラインごとに仮想アドレスそのものを持つ場合に比べて資源を節約することができる。
次に、本実施例にかかるキャッシュメモリ制御装置100の処理手順について説明する。図20は、本実施例にかかるキャッシュメモリ制御装置100の処理手順を示すフローチャートである。
同図に示すように、L2キャッシュ制御部13は、L1キャッシュ制御部12からアクセス要求を取得し(ステップS101)、要求された物理アドレスのデータが存在するか否かを判定する(ステップS102)。
要求された物理アドレスのデータが存在しない場合には(ステップS103,No)、L2キャッシュ制御部13は、主記憶部50に対するアクセス処理を実行する(ステップS104)。一方、要求された物理アドレスのデータが存在する場合には(ステップS103,Yes)、要求されたサブラインのSPフラグがオンか否かを判定する(ステップS105)。
要求されたサブラインのSPフラグがオンの場合には(ステップS106,Yes)、SPフラグがオンの場合の書き戻し処理を実行する(ステップS107)。一方、要求されたサブラインのSPフラグがオフの場合には(ステップS106,No)、SPフラグがオフの場合の書き戻し処理を実行する(ステップS108)。
次に、図20のS104において示した主記憶部50に対するアクセス処理について説明する。図21は、主記憶部50に対するアクセス処理の処理手順を示すフローチャートである。同図に示すように、L2キャッシュ制御部13は、主記憶部50に対してアクセス要求を行い、アクセス要求に対する応答を取得する(ステップS201)。
そして、L2キャッシュ制御部13は、要求されたL1インデックスの仮想ページ番号に属する部分(VA21)と、L2インデックスの物理ページ番号に属する部分(PA21)とが等しいか否かを判定する(ステップS202)。
等しい場合には(ステップS203,Yes)、L2キャッシュ制御部13は、要求されたサブラインのSPフラグをオンにして主記憶部50から取得したデータをL2キャッシュ13aに書き込み(ステップS204)、要求されたサブラインに対応するデータをL1キャッシュ制御部12に出力する(ステップS205)。
一方、要求されたL1インデックスの仮想ページ番号に属する部分(VA21)と、L2インデックスの物理ページ番号に属する部分(PA21)とが異なる場合には(ステップS203,No)、L2キャッシュ制御部13は、要求されたL1インデックスの仮想ページ番号に属する部分(VA21)についてL2キャッシュタグに登録されているものと要求されているものが等しいか否かを判定する(ステップS206)。
等しい場合には(ステップS207,Yes)、L2キャッシュ制御部13は、要求されたサブラインのSPフラグをオフにして主記憶部50から取得したデータをL2キャッシュ13aに書き込み(ステップS208)、ステップS205に移行する。
一方、要求されたL1インデックスの仮想ページ番号に属する部分(VA21)についてL2キャッシュタグに登録されているものと要求されているものが異なっている場合には(ステップS207,No)、L2キャッシュ制御部13は、SPフラグがオフとなる残りのサブライン全てを対象としてL1キャッシュ12aから書き戻しを実行する(ステップS209)。
その後、L2キャッシュ制御部13は、要求されたサブラインのSPフラグをオフにし(ステップS210)、L2キャッシュ13aにおけるL1インデックスの仮想ページ番号に属する部分(VA21)を要求された仮想アドレスのものに登録し(ステップS211)、主記憶部50から取得したデータをL2キャッシュ13aに書き込み(ステップS212)、ステップS205に移行する。
次に、図20のS107において示したSPフラグがオンの場合の書き戻し処理について説明する。図22は、SPフラグがオンの場合の書き戻し処理を示すフローチャートである。同図に示すように、L2キャッシュ制御部13は、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2インデックスの物理ページ番号に属する部分(PA21)と等しいか否かを判定する(ステップS301)。
等しい場合には(ステップS302,Yes)、L2キャッシュ制御部13は、要求されたサブラインに対応するデータをL1キャッシュ制御部12に出力する(ステップS303)。
一方、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2インデックスの物理ページ番号に属する部分(PA21)と異なる場合には(ステップS302,No)、L2キャッシュ制御部13は、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2キャッシュタグに登録されているものと要求されたものとが等しいか否かを判定する(ステップS304)。
等しい場合には(ステップS305,Yes)、要求されたサブラインのみを対象としてL1キャッシュ12aからの書き戻しを実行し(ステップS306)、要求されたサブラインのSPフラグをオフとし(ステップS307)、要求されたサブラインに対するデータをL1キャッシュ制御部12に出力する(ステップS308)。
一方、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2キャッシュタグに登録されているものと要求されたものとが異なる場合には(ステップS305,No)、L2キャッシュ制御部13は、要求されたサブラインおよびSPフラグがオフとなる残りのサブライン全てを対象としてL1キャッシュ12aから書き戻しを実行する(ステップS309)。
そして、L2キャッシュ制御部13は、要求されたサブラインのSPフラグをオフとし(ステップS310)、L1キャッシュ12aにおいて、L1インデックスの仮想ページ番号に属する部分を要求されたものに登録し(ステップS311)、要求されたサブラインに対するデータをL1キャッシュ制御部12に出力する(ステップS312)。
次に、図20のS108において説明したSPフラグがオフの場合の書き戻し処理について説明する。図23は、SPフラグがオフの場合の書き戻し処理を示すフローチャートである。同図に示すように、L2キャッシュ制御部13は、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2キャッシュタグに登録されているものと、要求されたものとが等しいか否かを判定する(ステップS401)。
等しい場合には(ステップS402,Yes)、L2キャッシュ制御部13は、要求されたサブラインに対応するデータをL1キャッシュ制御部12に出力する(ステップS403)。
一方、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2キャッシュタグに登録されているものと、要求されたものとが異なる場合には(ステップS402,No)、L2キャッシュ制御部13は、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2インデックスの物理ページ番号に属する部分(PA21)と等しいか否かを判定する(ステップS404)。
等しい場合には(ステップS405,Yes)、L2キャッシュ制御部13は、要求されたサブラインのみを対象としてL1キャッシュ12aからの書き戻しを実行し(ステップS406)、要求されたサブラインのSPフラグをオンにし(ステップS407)、要求されたサブラインに対するデータをL1キャッシュ制御部12に出力する(ステップS408)。
一方、L1インデックスの仮想ページ番号に属する部分(VA21)について、L2インデックスの物理ページ番号に属する部分(PA21)と異なる場合には(ステップS405,No)、L2キャッシュ制御部13は、要求されたサブラインおよびSPフラグがオフとなる残りのサブライン全てを対象としてL1キャッシュ12aからの書き戻しを実行する(ステップS409)。
そして、L2キャッシュ制御部13は、要求されたサブラインのSPフラグをオフにし(ステップS410)、L1インデックスの仮想ページ番号に属する部分(VA21)を要求されたものに登録し(ステップS411)、要求されたサブラインに対するデータをL1キャッシュ制御部12に出力する(ステップS412)。
このように、L2キャッシュ制御部13は、SPフラグに基づいてデータの書き戻しを実行するので、仮想アドレスが共通であることによる他のサブラインへの干渉を回避することができる。また、サブライン毎に仮想アドレスを持つ場合よりも資源を少なくすることができ、サブライン同士の仮想アドレスが共通でSPフラグを持たない場合よりもキャッシュメモリ制御装置100の性能を向上させることができる。
上述してきたように、本実施例にかかるキャッシュメモリ制御装置100は、L2キャッシュ13aのサブラインごとにSPフラグを設け、命令制御部11からアクセス仮想アドレスをL1キャッシュ制御部12が取得し、アクセス仮想アドレスに対応するデータが存在しない場合に、L2キャッシュアクセスアドレスをL2キャッシュ制御部13に出力する。そして、L2キャッシュ制御部13は、L1インデックスの仮想ページ番号に属する部分VA21とL2インデックスの物理ページ番号に属する部分PA21とを基にしてSPフラグの状態を切り換え、SPフラグの状態に基づいてL1キャッシュ12aからサブラインに対するデータの書き戻しを実行し、要求対象となるサブラインのデータをL1キャッシュ制御部12に出力するので、限られたL2キャッシュ13aの資源を有効に活用し、不必要なデータの書き戻しをなくす(同一ラインに記憶された他のサブラインに対応するL1キャッシュ上に記憶されたデータの削除(書き戻し)のフローを省略する)ことができる。
また、本実施例にかかるキャッシュメモリ制御装置100は、SPフラグをL2キャッシュ13aに設定し、不必要なデータの書き戻しを省略しているので、L2キャッシュ制御部13の負担が軽減され、L1キャッシュ制御部12に対して迅速にデータの応答を実行することができる。
なお、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部あるいは一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示したキャッシュメモリ制御装置100の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部がCPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(付記1)第1のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第1のキャッシュのデータを記憶する第2のキャッシュとを制御するキャッシュメモリ制御装置であって、
前記第2のキャッシュは、前記サブラインごとに制御フラグを備え、
データ要求を受け付け、要求されたデータが前記第1のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替手段と、
前記第1のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第1のキャッシュに出力する制御手段と、
を備えたことを特徴とするキャッシュメモリ制御装置。
(付記2)前記制御フラグはオン状態あるいはオフ状態を示す1ビットのフラグであり、前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする付記1に記載のキャッシュメモリ制御装置。
(付記3)前記フラグ切替手段は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする付記2に記載のキャッシュメモリ制御装置。
(付記4)前記制御手段は、前記制御フラグがオフ状態となるサブラインに対して前記第1のキャッシュからのデータの書き戻しを実行することを特徴とする付記1、2または3に記載のキャッシュメモリ制御装置。
(付記5)要求されたデータが前記第2のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得手段をさらに備え、前記フラグ切替手段は、前記データ取得手段によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする付記1〜4のいずれか一つに記載のキャッシュメモリ制御装置。
(付記6)前記フラグ切替手段は、前記仮想アドレスに含まれる仮想ページ番号に属する部分と当該仮想アドレスに対応する物理アドレスの物理ページ番号に属する部分とを基にして前記制御フラグの状態を切り換えることを特徴とする付記1〜5のいずれか一つに記載のキャッシュメモリ制御装置。
(付記7)第1のキャッシュとキャッシュラインをサブラインに分割され当該サブラインごとに前記第1のキャッシュのデータを記憶する第2のキャッシュとを制御するキャッシュメモリ制御方法であって、
前記第2のキャッシュは、前記サブラインごとに制御フラグを備え、
データ要求を受け付け、要求されたデータが前記第1のキャッシュに存在しない場合に、要求対象となるデータの仮想アドレスおよび当該仮想アドレスに対応する物理アドレスに基づいて前記サブラインに対応する制御フラグの状態を切り換えるフラグ切替工程と、
前記第1のキャッシュから前記サブラインに対するデータの書き戻しを当該サブラインに対応する制御フラグの状態に基づいて実行し、要求対象となるデータを前記第1のキャッシュに出力する制御工程と、
を含んだことを特徴とするキャッシュメモリ制御方法。
(付記8)前記制御フラグはオン状態あるいはオフ状態を示す1ビットのフラグであり、前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致する場合に、前記制御フラグをオン状態に切り換えることを特徴とする付記7に記載のキャッシュメモリ制御方法。
(付記9)前記フラグ切替工程は、前記仮想アドレスの一部および当該仮想アドレスに対応する物理アドレスの一部が一致しない場合に、前記制御フラグをオフ状態に切り換えることを特徴とする付記8に記載のキャッシュメモリ制御方法。
(付記10)前記制御工程は、前記制御フラグがオフ状態となるサブラインに対して前記第1のキャッシュからのデータの書き戻しを実行することを特徴とする付記7、8または9に記載のキャッシュメモリ制御方法。
(付記11)要求されたデータが前記第2のキャッシュに存在しない場合に、要求対象となるデータを主記憶装置から取得するデータ取得工程をさらに含み、前記フラグ切替工程は、前記データ取得工程によって取得されたデータの物理アドレスと要求対象となるデータの仮想アドレスに基づいて前記サブラインに対応する制御フラグを切り換えることを特徴とする付記7〜10のいずれか一つに記載のキャッシュメモリ制御方法。
(付記12)前記フラグ切替工程は、前記仮想アドレスに含まれる仮想ページ番号に属する部分と当該仮想アドレスに対応する物理アドレスの物理ページ番号に属する部分とを基にして前記制御フラグの状態を切り換えることを特徴とする付記7〜11のいずれか一つに記載のキャッシュメモリ制御方法。