相互結合網を介して他の演算処理装置に接続するとともに、主記憶装置に接続する演算処理装置において、データを保持するデータキャッシュと、前記主記憶装置が記憶するデータが他の演算処理装置のデータキャッシュに保持されているかを表すディレクトリ情報を保持するメモリディレクトリを備えるとともに、保持するディレクトリ情報が前記メモリディレクトリに保持されるディレクトリ情報と同一か否かを表すダーティ情報と、前記メモリディレクトリからのディレクトリ情報を登録する場合、前記メモリディレクトリのディレクトリ情報が、他の演算処理装置のデータキャッシュに保持されていない旨を表すローカル情報を保持するディレクトリキャッシュと、前記ディレクトリキャッシュのディレクトリ情報及び前記ディレクトリキャッシュのローカル情報が他の演算処理装置のデータキャッシュに保持されてない旨を表す場合、前記ディレクトリキャッシュのダーティ情報に他の演算処理装置のデータキャッシュに保持されるディレクトリ情報と同一である旨を設定する制御回路と、を備えることを特徴とする演算処理装置。前記演算処理装置において、前記ディレクトリキャッシュのいずれかのエントリをリプレースする場合、他の演算処理装置のデータキャッシュに保持されるディレクトリ情報と同一である旨がダーティ情報に設定されているエントリをリプレースされるエントリとして選択することを特徴とする請求項1記載の演算処理装置。前記演算処理装置において、前記ディレクトリキャッシュはさらに、保持するディレクトリ情報が無効である旨を表す無効情報を保持し、前記ディレクトリキャッシュのいずれかのエントリをリプレースする場合、保持するディレクトリ情報が無効である旨が無効情報に設定されているエントリをリプレースされるエントリとして選択することを特徴とする請求項2記載の演算処理装置。前記演算処理装置において、前記ディレクトリキャッシュのいずれかのエントリをリプレースする場合、他の演算処理装置のデータキャッシュに保持されるディレクトリ情報と同一である旨がダーティ情報に設定されているエントリが存在しない場合、もっとも古いディレクトリ情報を保持するエントリをリプレースされるエントリとして選択することを特徴とする請求項2記載の演算処理装置。前記演算処理装置において、前記ディレクトリキャッシュは、さらに、ディレクトリ情報の古さを示すエイジ情報を保持することを特徴とする請求項4記載の演算処理装置。前記演算処理装置において、前記ディレクトリキャッシュは、複数のウェイを有することを特徴とする請求項1記載の演算処理装置。→国内は不要前記演算処理装置において、前記ディレクトリ情報は、前記主記憶装置に格納される、対応するメモリデータが他の演算処理装置に保持されている状態を示す状態情報と、前記対応するメモリデータを保持する演算処理装置を識別する識別情報を含むことを特徴とする請求項1記載の演算処理装置。前記演算処理装置において、前記状態情報は、前記ローカル情報、前記メモリデータが他の演算処理装置のデータキャッシュのみに保持されている旨を示すリモート排他情報と、前記メモリデータが他の演算処理装置のデータキャッシュとの間で共有されている旨を示すリモート供給情報のいずれかであることを特徴とする請求項7記載の演算処理装置。相互結合網を介して他の演算処理装置に接続し、主記憶装置に接続するとともに、データを保持するデータキャッシュと、前記主記憶装置が記憶するデータが、他の演算処理装置のデータキャッシュに保持されているかを表すディレクトリ情報を保持するメモリディレクトリを備えるとともに、保持するディレクトリ情報が前記メモリディレクトリに保持されるディレクトリ情報と同一か否かを表すダーティ情報を保持するディレクトリキャッシュを有する演算処理装置の制御方法において、前記メモリディレクトリからのディレクトリ情報を登録する場合、前記メモリディレクトリのディレクトリ情報が、他の演算処理装置のデータキャッシュに保持されていない旨を表すローカル情報を前記ディレクトリキャッシュに保持し、前記ディレクトリキャッシュのディレクトリ情報及び前記ディレクトリキャッシュのローカル情報が他の演算処理装置のデータキャッシュに保持されてない旨を表す場合、前記ディレクトリキャッシュのダーティ情報に他の演算処理装置のデータキャッシュに保持されるディレクトリ情報と同一である旨を設定することを特徴とする演算処理装置の制御方法。以下の実施形態では、無駄なメモリアクセスを削減し、メモリスループットを向上することのできるディレクトリキャッシュ制御装置が提供される。本実施形態による演算処理装置は、他の演算処理装置に接続するとともに、主記憶装置に接続する演算処理装置において、データを保持するデータキャッシュと、前記主記憶装置が記憶するデータが、他の演算処理装置のデータキャッシュに保持されているかを表すディレクトリ情報を保持するメモリディレクトリと、前記メモリディレクトリが保持するディレクトリ情報の一部を保持し、自身が保持するディレクトリ情報が前記メモリディレクトリに保持されるディレクトリ情報と同一か否かを表すダーティ情報と、前記メモリディレクトリから登録するディレクトリ情報に対応するデータが他の演算処理装置のデータキャッシュに保持されているか否かを示すローカル情報とを保持するディレクトリキャッシュと、前記ディレクトリキャッシュのディレクトリ情報及び前記ディレクトリキャッシュのローカル情報が共に、対応するデータが他の演算処理装置のデータキャッシュに保持されてない旨を表す場合、前記ディレクトリキャッシュが保持するディレクトリ情報と前記メモリディレクトリの対応するディレクトリ情報とが同一である旨を前記ディレクトリキャッシュのダーティ情報に設定する制御回路とを備える。以下の実施形態によれば、無駄なメモリアクセスを削減し、メモリスループットを向上することのできるディレクトリキャッシュ制御装置が提供される。本実施形態では、ディレクトリキャッシュにミスが発生し、メモリディレクトリのディレクトリ情報をディレクトリキャッシュに登録するときに、メモリディレクトリのディレクトリ情報が、Lであるかどうかを示すLフラグ情報をディレクトリキャッシュに追加情報として登録する。また、ディレクトリキャッシュのディレクトリ情報がLに更新されたとき、Lフラグ情報が1である場合メモリディレクトリのディレクトリ情報がLローカルである場合に、ディレクトリキャッシュのダーティ情報をCに変更する。上記により、ディレクトリキャッシュの各エントリに対応するメモリディレクトリのディレクトリ情報がLであるかどうかがわかるため、ディレクトリキャッシュのダーティ情報が、Dであったとしても、ディレクトリキャッシュのディレクトリ情報と、メモリディレクトリのディレクトリ情報が、両方Lになった場合に、ディレクトリキャッシュのダーティ情報を、Cに変更することができる。これにより、一度、ディレクトリキャッシュのディレクトリ情報が更新されて、ダーティ情報がDに設定されたとしても、正しく、Cに戻すことができる。このため、ディレクトリキャッシュのリプレース時に、必要の無いライトバックを行なう必要が無く、無駄なメモリアクセスの発生を抑止することができ、メモリスループットの低下が抑えられる。図3は、本実施形態のディレクトリキャッシュとメモリの構成図である。図3aは、本実施形態のディレクトリキャッシュであり、図3bは、従来技術と共通のメモリの図である。図3bに示されるように、メモリには、従来と同様、メモリデータとそのディレクトリ情報が格納される。また、本実施形態のディレクトリキャッシュでは、図3aに示されるように、従来の有効フラグ、アドレス、ディレクトリ情報、ダーティ情報のほかに、当該エントリのディレクトリ情報に対応する、メモリのディレクトリ情報がLローカルであるか否かを示すLフラグが格納される。ディレクトリキャッシュは、図3aにおいては、ウェイが1つのダイレクトマップ方式を示しているが、N個のウェイを用意することにより、Nウェイセットアソシエイティブ方式を採用することも可能である。図4は、本実施形態のディレクトリキャッシュ制御回路の構成図である。CPUコアからのメモリリクエストアドレスは、メモリ20に送られると共に、ディレクトリキャッシュ21にも送られる。メモリリクエストアドレスは、ディレクトリキャッシュ21のエントリにアクセスするために使用される35と共に、比較器22にも入力される。また、比較器22には、アクセス35で索引したエントリのアドレスが入力される。比較器22は、メモリリクエストアドレスと、ディレクトリキャッシュ21から読み出されたアドレスが等しいか否かを比較し、等しければ1を出力する。論理積回路23は、比較器22の出力と、有効フラグを入力し、論理積をとって結果を出力する。すなわち、論理積回路23では、メモリリクエストアドレスで索引されたエントリについて、有効フラグが1有効なエントリで、かつ、エントリに保持されたアドレスがメモリリクエストアドレスと等しい場合に、1を出力する。論理積回路23の出力は、セレクタ24~26、28、29の切り替え信号としてセレクタ24~26、28、29に入力される。セレクタ24~26、28、29の○印は、切り替え信号が1のときに選択される側の信号を示している。セレクタ24は、論理積回路23の出力が0、すなわち、索引されたエントリについて、有効フラグが1で、かつ、保持されたアドレスが等しいエントリがなかった場合には、セレクタ24の入力のうち、1の値を選択して、当該エントリの有効フラグを1に設定する。論理積回路23の出力が1であった場合、すなわち、索引されたエントリについて、有効フラグが1で、かつ、保持されたアドレスが等しいアドレスが等しいエントリがあった場合には、当該エントリから読み出された有効フラグがそのまま、また有効フラグに設定される。他のセレクタも同様であり、○印の付いている入力は、論理積回路23の出力が1のとき選択され、0の場合には、他方の入力が選択される。セレクタ25には、メモリリクエストアドレスと、ディレクトリキャッシュ21から読み出されたアドレスが入力され、論理積回路23の出力を切り替え信号として、いずれかを選択する。論理積回路23の出力が1である場合は、ディレクトリキャッシュ21に、メモリリクエストアドレスでリクエストされたアドレスを保持する有効なエントリが存在することを示している。したがって、論理積回路23の出力が1である場合には、ディレクトリキャッシュ21のアドレス領域から読み出されたアドレスは、そのままもとのエントリのアドレス領域に書き戻される。論理積回路23の出力が0の場合には、メモリリクエストアドレスでリクエストされたアドレスの有効なエントリが存在しないことを示す。したがって、この場合には、現在アクセスされているエントリに、新たに有効なエントリを作成するため、メモリリクエストアドレスをアドレス領域に書き込む。セレクタ26には、メモリリクエストアドレスを使ってメモリ20から読み出されたディレクトリ情報と、ディレクトリキャッシュ21から読み出されたディレクトリ情報が入力される。セレクタ26は、論理積回路23の出力が0のとき、メモリ20のメモリディレクトリから読み出したディレクトリ情報を出力し、1のとき、ディレクトリキャッシュ21から読み出したディレクトリ情報を出力する。ディレクトリ遷移状態生成回路27は、セレクタ26の出力を入力し、要求元ノードから出力されるメモリリクエストコマンドに従って、ディレクトリ情報の内容を書き換え、ディレクトリキャッシュ21のディレクトリ領域に書き込む。ディレクトリ遷移状態生成回路27の詳細は、後述する。セレクタ29には、メモリ20のメモリディレクトリから読み出したディレクトリがLローカルとなっているか否かを示す比較器36の出力と、Lフラグ領域から読み出したLフラグの値とが入力される。論理積回路23の出力が1のとき、読み出されたLフラグの値が出力され、0のとき、比較器36の比較結果が出力される。比較器36は、メモリディレクトリから読み出されたディレクトリがLローカルの場合に、1を出力し、その他の場合には、0を出力する。したがって、ディレクトリキャッシュ21に新たに有効なエントリを生成するときであって、メモリディレクトリのディレクトリがLローカルとなっている場合に、Lフラグは1に設定される。セレクタ28には、0と、ディレクトリキャッシュ21のダーティ情報領域から読み出した値が入力される。論理積回路23の出力が0のとき、セレクタ28は0を出力し、論理積回路23の出力が1のとき、セレクタ28は、ディレクトリキャッシュ21のダーティ情報領域から読み出した値を出力する。セレクタ28の出力は、論理和回路31に入力される。また、論理和回路31には、比較器30の出力も入力される。比較器30は、ディレクトリ遷移状態生成回路27がメモリリクエストコマンドに従ってディレクトリ情報を書き換える前と後のディレクトリ情報の比較を行なう。比較器30は、ディレクトリ遷移状態生成回路27の前後のディレクトリ情報が等しくなければ、1を、等しければ0を出力する。論理和回路31は、ディレクトリ遷移状態生成回路27の前後のディレクトリ情報が等しくないか、ダーティ情報がDダーティを示す1となっている場合に、1を出力する。論理和回路31の出力は、論理積回路32に入力される。また、ディレクトリ遷移状態生成回路27の出力は、比較器34に入力される。比較器34では、ディレクトリ遷移状態生成回路27の出力が、Lローカルとなっているか否かの比較結果を出力する。Lローカルとなっている場合には、比較器34は、1を出力し、Lローカルとなっていない場合には、比較器34は、0を出力する。比較器34の出力は、論理積回路33に入力される。論理積回路33には、更に、Lフラグの値Lの場合1、その他の場合0が入力される。論理積回路33は、読み出したLフラグの値が1であり、かつ、ディレクトリ遷移状態生成回路27の出力がLローカルとなっている場合に、1を出力する。論理積回路33の出力は、論理反転されて、論理積回路32に入力される。論理積回路32は、論理和回路31の出力が1、かつ、論理積回路33の出力が0のとき、1を出力し、ダーティ情報を1に設定する。すなわち、メモリリクエストによって、ディレクトリ情報が変化し、変化後のディレクトリがLローカルではない、あるいは、Lフラグが1でない場合、ダーティ情報に1状態がDダーティであることを示すを設定する。ディレクトリの変化の前のダーティ情報が1であり、変化後のディレクトリがLローカルとなっており、かつLフラグが1の場合に、ダーティ情報を0状態がCクリーンであることを示すに設定する。また、ディレクトリ情報がディレクトリ遷移状態生成回路27の前後で変化していない場合には、ダーティ情報はそのままにしておく。なお、図4においては、ディレクトリ情報の比較や、ディレクトリ情報の選択などがあるが、これらにおいては、比較器30やセレクタ25、26に2ビット以上の信号が入力され、比較されたり、選択出力されたりする。図5は、ディレクトリ遷移状態生成回路の構成図である。入力されるディレクトリ情報は、他ノードにキャッシュされているキャッシュ状態を表すdirstatと、どのノードにキャッシュされているかを示すdirvecとからなる。dirvecは、例えば、ノードの数が16個ある場合には、ビット0からビット15までの16ビットの0と1の配列からなり、ノード番号が2番のノードにキャッシュされている場合には、ビット2を1とした0000000000000100という配列で表現される。dirstatは、前述のように、データの状態を示すLローカル、RSHリモートシェア、REXリモートエクスクルーシブからなる。メモリリクエストコマンドは、オペコードopcodeと、コマンドの発行元のノードの識別子srcidからなる。opcodeは、排他的にデータを要求元ノードのキャッシュに格納する命令であるMIEXと、必要な場合には排他的な処理に切り替えられるが、複数のノードで共有してデータをキャッシュに格納する命令であるMISHと、排他的な処理は行わない、複数のノードでデータを共有してキャッシュに格納する命令であるMISHAが、キャッシュへのデータの読み込み命令としてある。また、opcodeには、キャッシュのデータを単純にフラッシュバックする命令であるFBKと、キャッシュのデータをライトバックする命令であるWBKとがある。dirvecに対し、popc41において、ビット1が立っている個数を数えるポピュレーション演算が行われる。ビット1が立っている個数は、データが共有されているノードの数となる。dirstat、popc41の出力、及び、opcodeは、遷移状態メモリ40に入力され、遷移後のdirstatが索引される。また、srcidは、デコーダ42において、メモリリクエストコマンドの発行元ノードの番号から、dirvecと同様な0と1の配列に変換される。例えば、命令の発行元のノード番号が5の場合であって、ノード数が16個である場合には、0000000000100000という配列に変換される。デコーダ42の出力は、論理和回路44に入力されると共に、論理反転されて論理積回路43に入力される。論理和回路44と論理積回路43には、dirvecも入力される。論理和回路44はdirvecにおいて、コマンドの発行ノードに対応するビットを1に変更したコマンドを出力する。論理積回路43は、dirvecにおいて、コマンド発行ノードに対応するビットを0に変更したものを出力する。論理和回路44は、コマンド発行元ノードがデータをキャッシュしたことを示すdirvecを出力し、論理積回路43は、コマンド発行元ノードがキャッシュデータを開放したことを示すdirvecを出力する。論理積回路43と論理和回路44の出力は、セレクタ45に入力される。セレクタ45は、遷移状態メモリ40からのset信号を入力し、set信号が0のときは、論理積回路43の出力を、1のときは、論理和回路44の出力を選択し、dirvecとして出力する。遷移状態メモリ40のset信号は、メモリリクエストコマンドのopcodeが、キャッシュにデータを書き込む命令MISHA、MISH、MIEXの場合には、1に、フラッシュバック、あるいは、ライトバックする命令FBK、WBKの場合には、0になっている。opcodeとして、MISHAが発行された場合には、dirstatは、最初にどのような状態であろうと、結果としてデータを共有することになるので、次のdirstatは、RSHとなる。また、MIEXが発行された場合には、dirstatは、最初にどのような状態であろうと、結果として排他的にデータを他のノードのキャッシュに持つことになるので、次のdirstatは、REXとなる。MISHが発行された場合には、最初dirstatがLであった場合には、キャッシュデータを保持するノードが存在しないので、排他的なデータのキャッシュへの登録として処理し、次のdirstatは、REXとする。MISHが発行されるその他の場合は、キャッシュデータが共有される状態となるので、次のdirstatは、RSHとなる。FBKが発行された場合には、最初dirstatがRSHで、popcの出力が1の場合には、キャッシュデータを保持するノードがなくなるので、次のdirstatは、Lとなる。FBKが発行された場合で、最初のdirstatがRSHで、かつ、popcの出力が2以上である場合には、このコマンド実行後もキャッシュデータを保持するノードが残るので、次のdirstatは、RSHとなる。最初のdirstatがREXで、FBKあるいはWBKが発行された場合には、キャッシュデータを保持するノードがなくなるので、次のdirstatは、Lとなる。本実施形態では、ディレクトリキャッシュのダーティ情報が、Dであったとしても、ディレクトリキャッシュのディレクトリ情報と、メモリディレクトリのディレクトリ情報が、両方Lになった場合に、ディレクトリキャッシュのダーティ情報を、Cに変更することができる。この動作は、図4の比較器30、34、論理和回路31、論理積回路32、33による。しかしながら、ディレクトリキャッシュのリプレースメント方式が、最も長い期間使用されていないエントリを選択するLRULeastRecentlyUsed方式であった場合、このクリーンなエントリがリプレース対象として、積極的に選択されないため、メモリアクセスを発生させるダーティなエントリがリプレース対象として選択されるケースが存在する。すなわち、ダーティなエントリは、メモリのディレクトリ情報とディレクトリキャッシュのディレクトリ情報が異なっているので、ディレクトリキャッシュからリプレースするためには、ディレクトリキャッシュの内容をメモリのメモリディレクトリに書き戻さなくてはならない。このとき、ダーティなディレクトリ情報をリプレースするために、ライトバックが行なわれなければならない。したがって、メモリアクセスが発生することになる。ところが、クリーンなディレクトリキャッシュのエントリは、メモリディレクトリのディレクトリと同じなので、ライトバックする必要が無く、新たなメモリアクセスを発生させる必要が無い。ここで、クリーンなエントリをリプレース対象とすることは、メモリアクセスの発生を低減させる効果があるが、このクリーンなエントリがLRUでない場合でも、性能ペナルティが小さい。ディレクトリキャッシュのクリーンなエントリが、リプレースされた場合、ディレクトリ情報はLであるため、このアドレスのメモリデータは、任意のノードのキャッシュメモリ上に保持されていないか、ホームノードのプロセッサのキャッシュメモリに保持されているかのどちらかである。前者のケースでは、次回、同一アドレスが、ホームノード、または、リモートノードから参照要求された場合、ディレクトリキャッシュにミスするが、キャッシュメモリにもミスするため、メモリアクセス要求がもともと必要となる。このため、メモリアクセスのレイテンシやスループットのペナルティが発生しない。後者のケースでは、次回、同一アドレスがリモートノードから参照要求された場合、ホームノードのキャッシュアクセス時に、ディレクトリ情報がLであることがわかるため、キャッシュメモリからデータを転送することが可能であり、メモリデータ取得のためのメモリアクセスが発生しない。また、ディレクトリキャッシュへの登録データも、キャッシュメモリへのアクセスに伴う情報から生成可能であるため、ディレクトリ情報取得のためのメモリアクセスも発生しない。唯一の性能ペナルティは、ディレクトリキャッシュにミスしているために、ディレクトリキャッシュのリプレース対象を、メモリにライトバックする必要があるケースが存在することである。したがって、本実施形態では、ディレクトリキャッシュのリプレース対象を決定するときに、ディレクトリキャッシュのダーティ情報がCであるエントリを、優先的に選択するようにする。このようにすることで、メモリアクセスを発生しないクリーンエントリが優先的にリプレース対象となるため、メモリアクセスの発生を低減することができ、メモリスループットの低下が抑えられる。図6は、有効なエントリのうちクリーンなエントリを優先的にリプレース対象とするための構成図である。ここでは、ディレクトリキャッシュ21は、4つのウェイ、ウェイ0~ウェイ3からなるとしている。各ウェイには、有効フラグ、アドレス、ディレクトリ、ダーティ情報、Lフラグのほかに、ウェイの中でどの順に古いエントリを保持しているかを示すエイジ情報が保持される。例えば、ウェイ3が最も古く、ついで、ウェイ2、ウェイ1、ウェイ0の順に古いエントリを保持しているとした場合には、ウェイ3には、3が、ウェイ2には、2が、ウェイ1には、1が、ウェイ0には、0がエイジ情報として保持される。エイジ情報の値の大きいものがより古いものとなる。アクセスの順番としては、全てのウェイの所定のインデックスのエントリが特定され、次に、どのウェイをアクセスするかが決定される。したがって、エイジ情報も、同じインデックスの異なるウェイのエントリ間でもっとも古いものから順番に番号を割り当てるようにする。エイジ情報は、ディレクトリが更新されると、もっとも小さい値に書き換えられ、他のウェイのエントリのエイジ情報は、順次繰り上げるようにして設定する。ウェイ0~3の有効フラグは、インバータ50によって論理反転され、論理和回路52とプライオリティセレクタ55に入力される。論理和回路52は、ウェイ0~3のいずれかに有効でないエントリ有効フラグが0があった場合に、1を出力する。プライオリティセレクタ55は、有効でないエントリを持つウェイを選択して、セレクタ57に入力する。セレクタ57は、論理和回路52の出力が1の場合に、プライオリティセレクタ55の出力を選択して、リプレースウェイ選択情報として出力する。論理和回路52の出力が0の場合には、セレクタ57は、LRU選択回路56からの出力をリプレースウェイ選択情報として出力する。各ウェイのダーティ情報は、インバータ51によって論理反転され、論理和回路53と論理和回路54に入力される。論理和回路53は、入力が1つでも1である、すなわち、ダーティ情報が1つでも0であるCクリーンである場合には、1を出力する。論理和回路53の出力は、論理反転され、論理和回路54に入力される。各論理和回路54は、対応するダーティ情報が0の場合か、全てのウェイのダーティ情報が1Dダーティであるの場合に、1を出力する。論理和回路54の出力とエイジ情報の値がLRU選択回路56に入力される。LRU選択回路56は、ダーティ情報が0、すなわち、クリーンなエントリを持つウェイのうち、もっともエイジ情報が大きい、すなわち、古いエントリを持つウェイを選択する信号を出力する。どのウェイにもクリーンなエントリが無い場合には、最も古いエントリを持つウェイを選択する信号を出力する。LRU選択回路56のウェイ選択信号は、セレクタ57に入力され、前述のように、どのウェイにも無効なエントリが無い場合には、LRU選択回路56が決定したウェイ選択信号が、リプレースウェイ選択情報として出力される。リプレースウェイ選択情報は、例えば、図6のように、ウェイが4つの場合は、4本の信号線があり、選択するウェイに対応する信号線に1の信号が送出される。図7は、プライオリティセレクタの構成図である。入力in0~in3は、それぞれ、ウェイ0~3の有効フラグを論理反転したものである。入力in0は、そのまま、出力out0とされるとともに、論理積回路60、61、62には、論理反転されて入力される。これにより、入力in0が1のときは、出力out0が1となると共に、他の出力out1~out3が0とされる。入力in1は、論理積回路60に入力されると共に、論理反転されて、論理積回路61、62に入力される。入力in2は、論理積回路61に入力されると共に、論理反転されて、論理積回路62に入力される。入力in3は、論理積回路62に入力される。以上の構成により、入力in0~in3のうち、1となっているものに対応して、出力out0~out3が1となる。これは、ウェイ0~3のエントリのうち、無効となっているエントリを1つだけ選択する信号を生成するものである。図8は、LRU選択回路の構成図である。入力age0~age3は、それぞれウェイ0~3のエイジ情報の値である。比較器70-1は、入力age0が入力age1より大きいか、比較器70-2は、入力age0が入力age2より大きいか、比較器70-3は、入力age0が入力age3より大きいかを比較している。また、比較器70-4は、入力age1が入力age2より大きいか、比較器70-5は、入力age1が入力age3より大きいか、比較器70-6は、入力age2が入力age3より大きいかを比較している。いずれも、図8において、比較器70-1~70-6の上側の入力の方が下側の入力の方より大きい場合に、比較器70-1~70-6の出力は、1となる。そして、図6の論理和回路54からの入力in0~in3と、比較器70-1~70-6の比較結果が論理回路71-1~71-4に入力される。入力in0~in3は、それぞれウェイ0~3に対応する論理和回路54からの入力である。入力in0~in3は、ディレクトリキャッシュにクリーンなエントリを持つウェイがある場合に、1となる。また、ディレクトリキャッシュにクリーンなエントリを持つウェイが無い場合には、全ての入力in0~in3が1になる。論理回路71-1は、ウェイ0のエイジ情報age0の値がもっとも大きく、すなわち、最も古く、かつ、入力in0が1の場合に、out0として、1を出力する。論理回路71-2は、ウェイ1のエイジ情報age1の値がもっとも大きく、かつ、入力in1が1の場合に、out1として、1を出力する。論理回路71-3は、ウェイ2のエイジ情報age2の値がもっとも大きく、かつ、入力in2が1の場合に、out2として、1を出力する。論理回路71-4は、ウェイ3のエイジ情報age3の値がもっとも大きく、かつ、入力in3が1の場合に、out3として、1を出力する。ここでの動作は、入力in0~in3が1となっているもののうち、エイジ情報がもっとも古いものを選択する動作である。