(57)【要約】  キャッシュエントリの追い出し動作を効率的に実行可能な共有分散キャッシュシステムを提供することを目的とする。キャッシュシステムは、複数の処理装置と、複数の処理装置に結合される複数のキャッシュと、複数のキャッシュに結合され複数のキャッシュ間のデータ転送及び複数のキャッシュと主記憶装置との間のデータ転送を制御するコントローラを含み、コントローラは、各キャッシュ内でのエントリの古さ順を示す第１の情報と複数のキャッシュ全体でのエントリの古さ順を示す第２の情報とを各インデックス毎に格納するメモリと、複数の処理装置の１つが主記憶装置をアクセスする際に１つの処理装置に対応する１つのキャッシュからエントリを追い出す必要がある場合、追い出すエントリ及びその移動先を第１の情報及び第２の情報に応じて決定するロジック回路を含むことを特徴とする。
2008068797.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置にアクセスするよう機能する複数の処理装置と、
該複数の処理装置に一対一に結合された複数のキャッシュと、
該複数のキャッシュに結合され該複数のキャッシュ間のデータ転送及び該複数のキャッシュと該主記憶装置との間のデータ転送を制御するコントローラ
を含み、該コントローラは、
各キャッシュ内でのエントリの古さ順を示す第１の情報と、該複数のキャッシュ全体でのエントリの古さ順を示す第２の情報とを各インデックス毎に格納するメモリと、
該複数の処理装置の１つが該主記憶装置もしくは下位階層キャッシュをアクセスする際に、該１つの処理装置に対応する１つのキャッシュからアクセス対象のアドレスに対応するインデックスのエントリを追い出す必要がある場合、追い出すエントリ及びその移動先を該第１の情報及び該第２の情報に応じて決定するロジック回路
を含むことを特徴とするキャッシュシステム。
【請求項２】
該ロジック回路は、該１つのキャッシュに存在する該アクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを該追い出しエントリとして該第１の情報に応じて選択し、該複数のキャッシュに存在する該アクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを全体で最古のエントリとして該第２の情報に応じて選択し、該全体で最古のエントリの位置に該追い出しエントリを移動するよう構成されることを特徴とする請求項１記載のキャッシュシステム。
【請求項３】
該ロジック回路は、該１つのキャッシュでの最古のエントリが最新のエントリとなるように該１つのキャッシュに対応する該第１のＬＲＵ情報を更新し、該追い出しエントリの移動先のキャッシュにおける最古のエントリである該全体で最古のエントリが追い出しエントリの古い順に一致するように該移動先キャッシュの該第１のＬＲＵ情報を更新し、該全体で最古のエントリが該追い出しエントリの古い順に一致する順番のエントリとなり且つ該１つのキャッシュでの最古のエントリが最新のエントリとなるように該第２のＬＲＵ情報を更新するよう構成されることを特徴とする請求項２記載のキャッシュシステム。
【請求項４】
該ロジック回路は、該複数のキャッシュに存在する該アクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを全体で最古のエントリとして該第２の情報に応じて選択し、該全体で最古のエントリが該１つのコアキャッシュに存在する場合には、該全体で最古のエントリの位置に該主記憶装置から読み出したデータを上書きすることを特徴とする請求項１記載のキャッシュシステム。
【請求項５】
該１つのキャッシュにおいて該全体で最古のエントリが最新のエントリとなるように該１つのキャッシュに対応する該第１のＬＲＵ情報を更新するとともに、該全体で最古のエントリが最新のエントリとなるように第２のＬＲＵ情報を更新することを特徴とする請求項４記載のキャッシュシステム。
【請求項６】
該第１のＬＲＵ情報は、該複数のキャッシュの各々に対して、キャッシュ内の１つのインデックスの全てのエントリから２つを選ぶ全ての組み合わせについて、２つのエントリ間の新旧関係を示す情報を含むことを特徴とする請求項１記載のキャッシュシステム。
【請求項７】
該第２のＬＲＵ情報は、特定の１つ１つのエントリを識別することなく、エントリの古い順に各エントリが属するキャッシュを識別する符号を並べることにより、該複数のキャッシュ全体でのエントリの古さ順を表現することを特徴とする請求項１又は６記載のキャッシュシステム。
【請求項８】
該ロジック回路は、該第１のＬＲＵ情報及び該第２のＬＲＵ情報の参照及び更新を纏めて１サイクルで実行するよう構成されることを特徴とする請求項１記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリシステムに関し、詳しくはキャッシュシステムに関する。
【背景技術】
【０００２】
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュにコピーしておくことで、この情報をアクセスする場合には主記憶からではなくキャッシュから読み出すことで、高速な情報の読み出しが可能となる。【０００３】
キャシュは複数のキャッシュラインを含み、主記憶からキャッシュへの情報のコピーはキャッシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。【０００４】
メモリ空間上のあるアドレスに最初のアクセスが実行されると、そのアドレスの情報（データやプログラム）をキャシュ内の対応するキャッシュラインにコピーする。同一アドレスに対して次のアクセスを実行する場合にはキャシュから直接に情報を読み出す。一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュのインデックスとなり、それより上位に位置する残りのビットがキャッシュのタグとなる。【０００５】
データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュ中の対応するインデックスのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、キャッシュヒットとなり、当該インデックスに対応するキャッシュデータ（１キャッシュライン分の所定ビット数のデータ）がアクセスされる。【０００６】
各キャッシュラインに対して１つだけタグを設けたキャッシュの構成を、ダイレクトマッピング方式と呼ぶ。各キャッシュラインに対してＮ個のタグを設けたキャッシュの構成をＮウェイセットアソシアティブと呼ぶ。ダイレクトマッピング方式は１ウェイセットアソシアティブとみなすことができる。【０００７】
キャッシュミスが発生した場合に、主記憶にアクセスすることによるペナルティーを軽減するために、キャッシュメモリを多階層化したシステムが用いられる。例えば、１次キャッシュと主記憶との間に、主記憶よりは高速にアクセスできる２次キャッシュを設けることにより、１次キャッシュにおいてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。【０００８】
従来、プロセッサにおいては動作周波数の向上やアーキテクチャの改良により処理速度を向上させてきた。しかし近年、周波数をこれ以上高くすることには技術的な限界が見え始めており、複数のプロセッサを用いたマルチプロセッサ構成により処理速度の向上を目指す動きが強くなっている。【０００９】
複数のプロセッサが存在するシステムは、各々がキャッシュを有する既存のシングルプロセッサコアを複数個設け、それらを単純に繋げることで実現可能である。このような構成は、設計コストを低く抑えることができるが、キャッシュの使用効率やキャッシュの一貫性に関して問題がある。【００１０】
この問題を解決するキャッシュ機構として、本願の出願人は既に共有分散キャッシュ機構を提案している。この方式では、各プロセッサがキャッシュを有し、あるプロセッサから見たときに他のプロセッサのキャッシュを自らのプロセッサのキャッシュの下位階層のキャッシュとして利用可能な構成となっている。【００１１】
図１は、共有分散キャッシュシステムの構成の一例を示す図である。図１に示す共有分散キャッシュシステムは、複数のコア（プロセッサ）１１乃至１３、複数のコア１１乃至１３に一対一に対応する複数のキャッシュ１４乃至１６、キャッシュ１４乃至１６に接続されるキャッシュ間接続コントローラ１７、及びメインメモリ１８を含む。コア１１乃至１３はそれぞれ、自らに直接に接続されるキャッシュ（自コアキャッシュ）１４乃至１６を一次キャッシュとしてアクセス可能である。この共有分散キャッシュシステムでは、更に、他のコアのキャッシュを二次キャッシュとしてアクセス可能なように構成される。即ち例えばコア１０から見たときに、キャッシュ１４を一次キャッシュとしてアクセス可能であるとともに、更にキャッシュ１５及び１６を二次キャッシュとしてアクセス可能なように構成される。このような二次キャッシュをアクセスする経路は、キャッシュ間接続コントローラ１７を介して提供される。【００１２】
図２は、図１に示す共有分散キャッシュシステムにおけるデータロードアクセス動作を示すフローチャートである。図２のステップＳ１において、まず、複数のコア１１乃至１３の何れか１つのコアが、自らに直接に接続されたキャッシュ（自コアキャッシュ）へロード要求を発行する。【００１３】
ステップＳ２において、ロード要求を受け取ったキャッシュは、要求対象のデータがキャッシュ内に存在するか否か、即ちキャッシュヒットであるか否かを判定する。キャッシュヒットである場合には、ステップＳ３において、自コアキャッシュから要求対象のデータを読み出して、ロード要求を発行したコアにデータを返送する。【００１４】
ステップＳ２においてキャッシュミスである場合には、ステップＳ４に進む。このステップＳ４において、キャッシュミスが検出されたキャッシュの下に、下位階層キャッシュが存在するか否かを判定する。例えばステップＳ２においてキャッシュミスが検出されてステップＳ４に進んだ場合には、キャッシュミスが検出されたキャッシュはキャッシュ１４乃至１６の何れか１つであるので、この場合、他の２つのキャッシュが下位階層キャッシュとして存在する。下位階層キャッシュが存在する場合には、ステップＳ５に進む。【００１５】
ステップＳ５において、キャッシュ階層が１つ下の他コアキャッシュにアクセスする。ステップＳ６において、アクセス要求を受け取ったキャッシュは、要求対象のデータがキャッシュ内に存在するか否か、即ちキャッシュヒットであるか否かを判定する。キャッシュミスである場合には、ステップＳ４に戻り、以降の処理を繰り返す。【００１６】
ステップＳ６においてキャッシュヒットである場合には、ステップＳ７に進む。このステップＳ７において、キャッシュデータを移動するか否かを判定する。キャッシュデータを移動する場合には、ステップＳ８で、キャッシュヒットしたキャッシュからアクセス対象のキャッシュライン（アクセス対象のデータ）を自コアキャッシュに移動し、コアへデータを返送する。この際に、キャッシュラインの自コアキャッシュへの移動に伴い、自コアキャッシュから追い出されるキャッシュラインを他コアに移動する。ステップＳ７においてキャッシュデータを移動しないと判定された場合には、キャッシュヒットしたキャッシュから、アクセス対象のデータを、ロード要求を発行したコアに返送する。【００１７】
またステップＳ４において、下位階層キャッシュが存在しないと判定された場合には、ステップＳ１０に進む。例えばステップＳ６においてキャッシュミスが検出されてステップＳ４に進んだ際に、このキャッシュミスが検出されたキャッシュが既に最下層のキャッシュであった場合、その下層にはメインメモリ１８しか存在しない。このような場合には、ステップＳ１０で、メインメモリ１８から要求対象のデータを読み出し、自コアキャッシュにアロケート（１キャッシュライン分の要求対象のデータを自コアキャッシュにコピー）するとともに、ロード要求を発行したコアにデータを返送する。またこの動作に伴い自コアキャッシュから追い出されたキャッシュラインは、例えば下位階層キャッシュに移動される。【００１８】
上記の動作フローにおいて、ステップＳ７乃至Ｓ９はキャッシュとキャッシュとの間のデータ転送に関連する動作であり、ステップＳ１０はメモリとキャッシュとの間のデータ転送に関連する動作である。【００１９】
上記のステップＳ１０の動作では、自コアキャッシュにおいてアクセス対象のインデックスのエントリが全て使われている場合、アクセス対象のデータをアロケートするためには、それらのキャッシュエントリの何れかを追い出す必要がある。この際、追い出すキャッシュエントリを何らかの基準に基づいて選択する必要がある。また追い出されたキャッシュエントリの転送先として、何れのキャッシュの何れのエントリを用いるかを、何らかの基準に基づいて選択する必要がある。また追い出されたキャッシュを破棄してしまうという選択肢もある。これらの選択は、当然ながら、キャッシュの使用効率が良くなるように行われる必要があるとともに、追い出し・転送動作自体が効率的に行われる必要がある。
【特許文献１】特表２００４−５１１８４０
【特許文献２】特開昭５９−００３７７３
【発明の開示】
【発明が解決しようとする課題】
【００２０】
以上を鑑みて本発明は、メモリもしくは下位階層キャッシュから自コアキャッシュにデータ転送する際に、キャッシュエントリの追い出し動作を効率的に実行可能な、共有分散キャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
キャッシュシステムは、主記憶装置にアクセスするよう機能する複数の処理装置と、該複数の処理装置に一対一に結合された複数のキャッシュと、該複数のキャッシュに結合され該複数のキャッシュ間のデータ転送及び該複数のキャッシュと該主記憶装置との間のデータ転送を制御するコントローラを含み、該コントローラは、各キャッシュ内でのエントリの古さ順を示す第１の情報と該複数のキャッシュ全体でのエントリの古さ順を示す第２の情報とを各インデックス毎に格納するメモリと、該複数の処理装置の１つが該主記憶装置もしくは下位階層キャッシュをアクセスする際に該１つの処理装置に対応する１つのキャッシュからアクセス対象のアドレスに対応するインデックスのエントリを追い出す必要がある場合、追い出すエントリ及びその移動先を該第１の情報及び該第２の情報に応じて決定するロジック回路を含むことを特徴とする。
【発明の効果】
【００２２】
本発明の少なくとも１つの実施例によれば、メモリもしくは下位階層キャッシュから自コアキャッシュにデータ転送する際に、各キャッシュ内でのエントリの古さ順を示す第１の情報と複数のキャッシュ全体でのエントリの古さ順を示す第２の情報とを設け、追い出すエントリ及びその移動先を第１の情報及び第２の情報に応じて決定することにより、キャッシュエントリの追い出し動作を効率的に実行することができる。
【図面の簡単な説明】
【００２３】
【図１】共有分散キャッシュシステムの構成の一例を示す図である。
【図２】図１に示す共有分散キャッシュシステムにおけるデータロードアクセス動作を示すフローチャートである。
【図３】本発明による共有分散キャッシュシステムの構成の一例を示す図である。
【図４】共有分散キャッシュシステムにおけるキャッシュエントリ追い出し動作の処理を示すフローチャートである。
【図５】第１のＬＲＵ情報の第１の実施例を示す図である。
【図６】第１のＬＲＵ情報の第２の実施例を示す図である。
【図７】第２のＬＲＵ情報の実施例を示す図である。
【図８】第１のＬＲＵ情報と第２のＬＲＵ情報の格納場所について説明するための図である。
【図９】追い出しエントリを破棄する場合の動作を説明するための図である。
【図１０】図９の動作の各ステップとシステムクロックのサイクルとの関係を示す図である。
【図１１】追い出しエントリを破棄する場合のＬＲＵ情報更新動作について説明するための図である。
【図１２】追い出しエントリを転送する場合の動作を説明するための図である。
【図１３】図１２の動作の各ステップとシステムクロックのサイクルとの関係を示す図である。
【図１４】追い出しエントリを転送する場合のＬＲＵ情報更新動作について説明するための図である。
【図１５】ある着目インデックスに対する全エントリが全体の古さ順に並べられた様子を示す図である。
【図１６】（ａ）は、他コアキャッシュに対応する第２のＬＲＵ情報の更新の様子を示し、（ｂ）は、自コアキャッシュに対応する第２のＬＲＵ情報の更新の様子を示す図である。
【図１７】図１５に示すようなデータ移動に伴うエントリ更新がなされた場合の第２のＬＲＵ情報の変化を示す図である。
【符号の説明】
【００２４】
２０  共有分散キャッシュシステム
２１〜２３  コア（プロセッサ）
２４〜２６  キャッシュ
２７  キャッシュ間接続コントローラ
２８  メインメモリ
３１  メモリ
３２  ロジック回路
４１  第１のＬＲＵ情報
４２  第２のＬＲＵ情報
【発明を実施するための最良の形態】
【００２５】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。【００２６】
図３は、本発明による共有分散キャッシュシステムの構成の一例を示す図である。図３に示す共有分散キャッシュシステム２０は、複数のコア（プロセッサ）２１乃至２３、複数のコア２１乃至２３に一対一に対応する複数のキャッシュ２４乃至２６、キャッシュ２４乃至２６に接続されるキャッシュ間接続コントローラ２７、及びメインメモリ２８を含む。なお図３に示すメインメモリ２８の位置には、低速なキャッシュ、即ちキャッシュ２４乃至２６より更に下位階層のキャッシュが設けられ、更にその下位階層にメインメモリが存在する構成であってもよい。【００２７】
コア２１乃至２３は、メインメモリ（又は低速キャッシュ）２８にアクセスするよう機能する処理装置であり、アクセス先から読み出したデータを処理し、読み出し時と同一のアクセス先又は別のアクセス先に処理したデータを書き込んだりする。キャッシュ２４乃至２６は、コア２１乃至２３に一対一に結合される小容量で高速な記憶装置である。コア２１乃至２３は、メインメモリ２８よりも高速にキャッシュ２４乃至２６にアクセスすることができる。キャッシュ間接続コントローラ２７は、キャッシュ２４乃至２６に結合され、キャッシュ２４乃至２６間のデータ転送及びキャッシュ２４乃至２６とメインメモリ２８との間のデータ転送を制御する。【００２８】
共有分散キャッシュシステム２０のデータアクセス動作は、図２のフローチャートに示されるのと同一の処理により実行される。このようなデータアクセス動作により、コア２１乃至２３はそれぞれ、自らに直接に接続されるキャッシュ（自コアキャッシュ）２４乃至２６を一次キャッシュとしてアクセス可能であるとともに、他のコアのキャッシュを二次キャッシュとしてアクセス可能となる。即ち例えばコア２０から見たときに、キャッシュ２４を一次キャッシュとしてアクセス可能であるとともに、更にキャッシュ２５及び２６を二次キャッシュとしてアクセス可能なように構成される。言い換えると、二次キャッシュを下位階層キャッシュとしてアクセス可能である。このような二次キャッシュをアクセスする経路は、キャッシュ間接続コントローラ２７を介して提供される。【００２９】
図３に示されるキャッシュ間接続コントローラ２７は、ＬＲＵ情報を格納するメモリ（レジスタ）３１と、メモリ３１のＬＲＵ情報に基づいてキャッシュのエントリ移動を制御するロジック回路３２とを含む。ここでＬＲＵとはLeast Recent Usedの意味であり、ＬＲＵ情報は、最も長いこと使用されていないものを特定する情報である。具体的には、複数のエントリに対するＬＲＵ情報は、それら複数のエントリの古さ順（最も長いこと使用されていない順）を示す情報である。【００３０】
メモリ３１は、キャッシュ２４乃至２６の各キャッシュ内でのエントリの古さ順を示す第１のＬＲＵ情報と、複数のキャッシュ２４乃至２６全体でのエントリの古さ順を示す第２のＬＲＵ情報とを各インデックス毎に格納する。即ち第１のＬＲＵ情報は、各キャッシュ毎及び各インデックス毎に設けられる情報であり、あるキャッシュ及びあるインデックスに対応する第１のＬＲＵ情報は、そのキャッシュ内に存在するそのインデックスの複数のエントリについて、そのキャッシュ内での古さ順を示す情報である。また第２のＬＲＵ情報は、複数のキャッシュ２４乃至２６全体について各インデックス毎に設けられる情報であり、あるインデックスに対応する第２のＬＲＵ情報は、複数のキャッシュ全体に存在するそのインデックスの複数のエントリについて、複数のキャッシュ全体における古さ順を示す情報である。【００３１】
図２のステップＳ１０に示すように、自コアキャッシュにおいてアクセス対象のインデックスのエントリが全て使われている場合、アクセス対象のデータをアロケートするためには、それらのキャッシュエントリの何れかを追い出す必要がある。このようにコア２１乃至２３の１つがメインメモリ２８をアクセスする際にそのコアに対応する１つのキャッシュからアクセス対象のアドレスに対応するインデックスのエントリを追い出す必要がある場合、ロジック回路３２は、追い出すエントリ及びその移動先を上記第１のＬＲＵ情報及び第２のＬＲＵ情報に応じて決定する。なお、本発明の実施は、メインメモリ２８をアクセスする場合に限定されず、より低速なキャッシュへアクセスした際に、そのコアに対応する１つのキャッシュからアクセス対象のアドレスに対応するインデックスのエントリを追い出す必要がある場合にも適用できる。【００３２】
この際、具体的には、ロジック回路３２は、自コアキャッシュに存在するアクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを追い出しエントリとして第１のＬＲＵ情報に応じて選択する。また複数のキャッシュ２４乃至２６に存在するアクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを、追い出しエントリの移動先として第２のＬＲＵ情報に応じて選択する。ロジック回路３２は、選択した移動先エントリの位置に追い出しエントリを移動し、移動先エントリの位置に元々存在したデータ（全体で最古のデータ）は破棄する。以下に、この追い出し動作について詳細に説明する。【００３３】
図４は、共有分散キャッシュシステム２０におけるキャッシュエントリ追い出し動作の処理を示すフローチャートである。ここで図４の動作は、図２のステップＳ１０で実行することが想定されている。即ち、複数のコア２１乃至２３の何れか１つのコアが、自らに直接に接続されたキャッシュ（自コアキャッシュ）へアクセス要求を発行し、まず自コアでキャッシュミスし、更にその下位のキャッシュでもキャッシュミスし、メインメモリ２８からデータを読み出して自コアにアロケートする必要が生じた時点で、図４のフローチャートの動作が実行される。なおここで、図４のフローチャートの動作が読み出すデータの読み出し元は、必ずしもメインメモリ２８である必要はない。キャッシュ間接続コントローラ２７は、キャッシュ２４乃至２６を優先順位に応じてアクセスすることでキャッシュを階層化しているが、その階層構造のキャッシュの下に、キャッシュとは別の管理単位として管理されているメモリが読み出し元となる。階層構造のキャッシュの下に直ぐにメインメモリ２８が位置されているのであれば、データの読み出し先はメインメモリ２８となる。以下では、メインメモリ２８の場合を例にとって説明する。【００３４】
図４のステップＳ１で、コア２１乃至２３のうちの１つがメインメモリ２８にアクセスするために、アクセス先のアドレス（例えば読み出し先のアドレス）をキャッシュ間接続コントローラ２７に送信する。ステップＳ２で、第２のＬＲＵ情報を参照し、アクセス先に対応するインデックスのエントリのうちで、キャッシュ２４乃至２６全体で最古のエントリを探索する。【００３５】
ステップＳ３で、全体で最古のエントリが自コアキャッシュ（アクセス要求を出したコアに対応するキャッシュ）にあるか否かを判定する。全体で最古のエントリが自コアキャッシュに存在する場合には、ステップＳ４において、第１のＬＲＵ情報及び第２のＬＲＵ情報を更新する。即ち、自コアキャッシュで最古のエントリが最新のエントリとなるように第１のＬＲＵ情報を更新するとともに、全体で最古のエントリが最新のエントリとなるように第２のＬＲＵ情報を更新する。その後、ステップＳ７で、メインメモリ２８から読み出したデータを自コアキャッシュ内の最古エントリ（ＬＲＵ更新により最新エントリに更新されたエントリ）に上書きする。【００３６】
全体で最古のエントリが自コアキャッシュに存在しないとステップＳ３で判定された場合には、ステップＳ５において、第１のＬＲＵ情報及び第２のＬＲＵ情報を更新する。即ち、自コアキャッシュで最古のエントリが最新のエントリとなるように自コアキャッシュの第１のＬＲＵ情報を更新するとともに、自コアキャッシュから追い出されたエントリ（追い出しエントリ）の移動先のキャッシュにおける最古のエントリ（全体で最古のエントリ）が追い出しエントリの古い順に一致するように移動先キャッシュの第１のＬＲＵ情報を更新する。また第２のＬＲＵ情報については、全体で最古のエントリが追い出しエントリの古い順に一致する順番のエントリとなり、且つ自コアキャッシュで最古のエントリが最新のエントリとなるように更新する。【００３７】
その後ステップＳ６で、自コアキャッシュで最古のエントリを全体で最古のエントリに転送する（移動する）。最後にステップＳ７で、メインメモリ２８から読み出したデータを自コアキャッシュ内の最古エントリ（ＬＲＵ更新により最新エントリに更新されたエントリ）に上書きする。【００３８】
図５は、第１のＬＲＵ情報の第１の実施例を示す図である。図5にはキャッシュ２４の場合について示すが、他のキャッシュ２５及び２６についても同様である。【００３９】
図５には、例として４ウェイのキャッシュの場合が示されており、キャッシュ２４の複数のインデックスの各々に対して４つのエントリが存在する。各エントリは０、１、２、３のエントリ番号で識別される。キャッシュ２４に対応する第１のＬＲＵ情報４１は、複数のインデックスの各々に対して４つのエントリの最古順を示すデータを含む。例えばある着目インデックスに対して第１のＬＲＵ情報４１は"００１０１１"を含む。【００４０】
この場合の第１のＬＲＵ情報４１は、２項関係により古い順を表現した符号である。例えば、"００１０１１"の第１番目（一番左）の"０"は、図示されるようにエントリ番号０のエントリとエントリ番号１のエントリとの比較において、エントリ番号１のエントリの方がエントリ番号０のエントリよりも古いことを示す。また例えば、"００１０１１"の第２番目（左から２番目）の"０"は、図示されるようにエントリ番号０のエントリとエントリ番号２のエントリとの比較において、エントリ番号２のエントリの方がエントリ番号０のエントリよりも古いことを示す。また例えば、"００１０１１"の第３番目（左から３番目）の"１"は、図示されるようにエントリ番号０のエントリとエントリ番号３のエントリとの比較において、エントリ番号０のエントリの方がエントリ番号３のエントリよりも古いことを示す。以下同様にして、第１のＬＲＵ情報４１の"００１０１１"の各ビットは、比較対象となる２つのエントリ間のうちで、何れのエントリがより古いのかを示している。【００４１】
複数のエントリ間の全ての２項関係（全エントリから２つを選ぶ全ての組み合わせ）について、古さ順を"０"又は"１"により示すことで、全てのエントリの最古順が分かる。図５に示す例では、古い順にエントリ番号を並べると２、１、０、３となる。【００４２】
図６は、第１のＬＲＵ情報の第２の実施例を示す図である。図６にはキャッシュ２４の場合について示すが、他のキャッシュ２５及び２６についても同様である。【００４３】
図６には、例として４ウェイのキャッシュの場合が示されており、キャッシュ２４の複数のインデックスの各々に対して４つのエントリが存在する。各エントリは０、１、２、３のエントリ番号で識別される。キャッシュ２４に対応する第１のＬＲＵ情報４１は、複数のインデックスの各々に対して４つのエントリの最古順を示すデータを含む。例えばある着目インデックスに対して第１のＬＲＵ情報４１は"１００１００１１"を含む。【００４４】
第１のＬＲＵ情報４１の"１００１００１１"は、各エントリを指し示す２ビットの符号を４つ並べたものである。各符号の並び順が最古順を示す（一番左の符号が最古のエントリを指し示す）。例えば、"１００１００１１"の最初の２ビット（一番左の符号）"１０"は、最古のエントリを指し示す符号であり、エントリ番号２（２は２進数で１０）のエントリが指し示されている。また"１００１００１１"の２番目の２ビット"０１"は、２番目に古いエントリを指し示す符号であり、エントリ番号１（１は２進数で０１）のエントリが指し示されている。同様に、"１００１００１１"の３番目の２ビット"００"は、３番目に古いエントリを指し示す符号であり、エントリ番号０（０は２進数で００）のエントリが指し示されている。更に、"１００１００１１"の４番目の２ビット"１１"は、４番目に古いエントリを指し示す符号であり、エントリ番号３（３は２進数で１１）のエントリが指し示されている。【００４５】
上記のような符号により、全てのエントリの最古順を直接に表現できる。図６に示す例では、古い順にエントリ番号を並べると２、１、０、３となる。【００４６】
図７は、第２のＬＲＵ情報の実施例を示す図である。図７にはキャッシュ２４の場合について示すが、他のキャッシュ２５及び２６についても同様である。【００４７】
図７には、例として４ウェイのキャッシュの場合が示されており、キャッシュ２４の複数のインデックスの各々に対して４つのエントリが存在する。各エントリは０、１、２、３のエントリ番号で識別される。キャッシュ２４に対応する第１のＬＲＵ情報４１は、複数のインデックスの各々に対して４つのエントリの最古順を示すデータを含む。例えばある着目インデックスに対して、第１のＬＲＵ情報４１は、エントリ番号２、０、３、１の順にエントリが古いことを示している。この第１のＬＲＵ情報４１は、図５に示すような符号でも、図６に示すような符号でも構わない。【００４８】
第２のＬＲＵ情報４２は、複数のキャッシュ２４乃至２６の全体に対して１つ設けられるものであり、複数のキャッシュ２４乃至２６に存在する各インデックスの複数のエントリについて、全体での古い順を示す情報である。即ち、各キャッシュの各インデックスに対して４つのエントリがあり、全体で３つのキャッシュ２４乃至２６がある場合、各インデックスについて１２個（４×３）のエントリについての古い順を指し示す情報である。【００４９】
図７の例では、ある着目インデックスに対して、第２のＬＲＵ情報４２は"ＡＢＢＣＣＡＢＣＡＢＡＣ"である。ここでアルファベット一文字Ａ、Ｂ、又はＣが、キャッシュ２４乃至２６の何れかを示す符号である。この例では、Ａがキャッシュ２４、Ｂがキャッシュ２５、Ｃがキャッシュ２６を指し示す。なお説明の便宜上アルファベット一文字の符号としたが、３つのキャッシュを識別可能な符号であればどのような符号でもよく、例えば２ビットの符号であってよい。【００５０】
第２のＬＲＵ情報４２の"ＡＢＢＣＣＡＢＣＡＢＡＣ"は、１２個のエントリに対応して１２文字並んでおり、例えば一番左が最も古いエントリであり、一番右が最も新しいエントリであることを示す。即ち、一番古いエントリはキャッシュＡ（キャッシュ２４）のエントリであり、２番目に古いエントリはキャッシュＢ（キャッシュ２５）のエントリであり、３番目に古いエントリはキャッシュＢ（キャッシュ２５）のエントリであり、４番目に古いエントリはキャッシュＣ（キャッシュ２６）のエントリである。【００５１】
このように、エントリが古い順にそのエントリが属するキャッシュのみを特定することで、例えばキャッシュ２４の４つのエントリについては、全体で１番古いエントリ、全体で６番目に古いエントリ、全体で９番目に古いエントリ、及び全体で１１番目に古いエントリであることが分かる。即ち、図７の例において、"Ａ"は、１番目、６番目、９番目、及び１１番目の位置に現れている。【００５２】
このようにキャッシュ２４の不特定の４つのエントリについて全体での古い順が分かると、キャッシュ２４の特定の１つ１つのエントリについて全体での古い順が分かる。即ち、キャッシュ２４では、古い順にエントリ番号２、０、３、１であることが第１のＬＲＵ情報４１により示されるので、エントリ番号２のエントリが全体で１番目に古く、エントリ番号０のエントリが全体で６番目に古く、エントリ番号３のエントリが全体で９番目に古く、エントリ番号１のエントリが全体で１１番目に古いことが分かる。【００５３】
このようにして第２のＬＲＵ情報４２には、特定の１つ１つのエントリを識別することなく、エントリの古い順に各エントリが属するキャッシュを識別する符号を並べることにより、少ないデータ量で効率的に全体の最古順を表現することができる。即ち、第１のＬＲＵ情報４１により、特定の１つ１つのエントリについて各キャッシュ内での古い順を表現し、また第２のＬＲＵ情報４２により、キャッシュのみを識別しながら不特定のエントリについての全体での古い順を指定しておけば、第１のＬＲＵ情報４１と第２のＬＲＵ情報４２とを組み合わせることにより、特定の１つ１つのエントリについての全体での古い順を指定することができる。これにより、少ないデータ量で効率的に全体の最古順を表現することができる。【００５４】
具体的には、２項関係で第１のＬＲＵ情報４１を表現した場合には、１つのキャッシュ内のウェイ数をｎとすると、ｎ個から２個を選ぶ組み合わせｎＣ２で表される数のビット数が１つ１つの第１のＬＲＵ情報４１に必要になる。キャッシュがｍ個あるとするとｍ×ｎＣ２のビット数が第１のＬＲＵ情報４１全体に必要になる。また上述のようにして第２のＬＲＵ情報４２を表現した場合には、ｌｏｇ２（ｍ）で表される数のビット数が各キャッシュを識別するための符号に必要であり、そのような符号が全体のウェイ数ｎ×ｍだけ必要になる。従って、第１のＬＲＵ情報４１と第２のＬＲＵ情報４２とに必要なビット数は、
ｍ×ｎＣ２＋ｌｏｇ２（ｍ）×ｎ×ｍ                                      （１）
となる。例えばキャッシュ数ｍが２でウェイ数ｎが４であれば、（１）式の値は２０ビットとなる。またキャッシュ数ｍが４でウェイ数ｎが４であれば、（１）式の値は５６ビットとなる。【００５５】
これに対して、キャッシュ数ｍが２でウェイ数ｎが４の場合に、全体８ウェイを２項関係（図５の方式）で表現すれば８Ｃ２で２８ビットが必要になり、全体を順序関係（図６の方式）で表現すればｌｏｇ２（８）×８で２４ビットが必要になる。またキャッシュ数ｍが４でウェイ数ｎが４の場合に、全体１６ウェイを２項関係で表現すれば１６Ｃ２で１２０ビットが必要になり、全体を順序関係で表現すればｌｏｇ２（１６）×１６で６４ビットが必要になる。【００５６】
従って、本発明において第１のＬＲＵ情報４１では２項関係により古い順を表現し、第２のＬＲＵ情報４２ではキャッシュのみを識別しながら不特定のエントリについての全体での古い順を表現することにより、ＬＲＵ情報に必要なビット数を大幅に削減することができる。【００５７】
図８は、第１のＬＲＵ情報４１と第２のＬＲＵ情報４２の格納場所について説明するための図である。図８において、図３と同一の構成要素は同一の番号で参照し、その説明は省略する。【００５８】
図８に示すように、第１のＬＲＵ情報４１と第２のＬＲＵ情報４２とは、キャッシュ間接続コントローラ２７内のメモリ（レジスタ）３１に格納される。即ち、キャッシュ２４乃至２６（キャッシュＡ、キャッシュＢ、キャッシュＣ）に対応する第１のＬＲＵ情報４１（Ａ、Ｂ、Ｃ）は、キャッシュ間接続コントローラ２７において集中的に管理される。また全体の古い順を示す第２のＬＲＵ情報４２もキャッシュ間接続コントローラ２７において、第１のＬＲＵ情報４１とともに管理される。これにより、キャッシュ間接続コントローラ２７により、第１のＬＲＵ情報４１と第２のＬＲＵ情報４２との参照及び更新を、外部から見ると１サイクルで終了することができる。【００５９】
図９は、追い出しエントリを破棄する場合の動作を説明するための図である。図９に示される動作は、図４のフローチャートのステップＳ１、Ｓ２、Ｓ３、Ｓ４及びＳ７に対応する。図１０は、図９の動作の各ステップとシステムクロックのサイクルとの関係を示す図である。本願の共有分散キャッシュシステム２０は、図１０に示されるようにシステムクロックに同期して動作する。【００６０】
図９のステップＳ９１に示すように、自コアキャッシュ２４がキャッシュ間接続コントローラ２７にアクセス先のアドレスを送信する。これは図１０に示すように第１サイクルにおいて１サイクルで実行される。【００６１】
次にキャッシュ間接続コントローラ２７は、図４のステップＳ２及びＳ３の動作により追い出しエントリを破棄する場合であると判定し、ＬＲＵ情報を更新するとともに、図９のステップＳ９２に示されるようにメインメモリ２８にデータを要求する。これら全体最古エントリの探索、ＬＲＵ情報更新、及びメモリへのデータ要求の動作は、図１０に示されるように、第２サイクルにおいて１サイクルで実行される。【００６２】
その後、図９のステップＳ９３に示されるように、キャッシュ間接続コントローラ２７はメインメモリ２８からデータを受信する。またステップＳ９４に示されるように、キャッシュ間接続コントローラ２７からキャッシュ２４に当該データを転送する。この際、図１０に示されるように、メモリへのデータ要求からデータ受信までは数百サイクルが経過する。その後、キャッシュ間接続コントローラ２７によるメモリからのデータ受信及びキャッシュ２４（自コアキャッシュ）へのデータ転送は、例えば４サイクルかけて行われる。またキャッシュ２４（自コアキャッシュ）は、４サイクルかけてキャッシュ間接続コントローラ２７からのデータを受信する。【００６３】
図１１は、追い出しエントリを破棄する場合のＬＲＵ情報更新動作について説明するための図である。図１１には、追い出しエントリを破棄する場合に、第１のＬＲＵ情報４１について実行される更新動作と第２のＬＲＵ情報４２について実行される更新動作とが示される。第１のＬＲＵ情報４１については、自コアキャッシュ内の最古のエントリが最新のエントリとして示されるように、自コアキャッシュの第１のＬＲＵ情報４１の内容を更新する。また第２のＬＲＵ情報４２については、全体で最古エントリが最新のエントリとして示されるように第２のＬＲＵ情報４２の内容を更新する。【００６４】
図１２は、追い出しエントリを転送する場合の動作を説明するための図である。図１２に示される動作は、図４のフローチャートのステップＳ１、Ｓ２、Ｓ３、Ｓ５、Ｓ６、及びＳ７に対応する。図１３は、図１２の動作の各ステップとシステムクロックのサイクルとの関係を示す図である。本願の共有分散キャッシュシステム２０は、図１３に示されるようにシステムクロックに同期して動作する。【００６５】
図１２のステップＳ１２１に示すように、自コアキャッシュ２４がキャッシュ間接続コントローラ２７にアクセス先のアドレスを送信する。これは図１３に示すように第１サイクルにおいて１サイクルで実行される。【００６６】
次にキャッシュ間接続コントローラ２７は、図４のステップＳ２及びＳ３の動作により追い出しエントリを転送する場合であると判定し、ＬＲＵ情報を更新するとともに、図１２のステップＳ１２２−１に示されるようにメインメモリ２８にデータを要求する。また更に、キャッシュ間接続コントローラ２７は、図１２のステップＳ１２２−２に示されるように、キャッシュ２４にキャッシュ内での最古のエントリのデータを要求する。これら全体最古エントリの探索、ＬＲＵ情報更新、メモリへのデータ要求、及び自コアキャッシュ（キャッシュ２４）への最古データ要求の動作は、図１３に示されるように、第２サイクルにおいて１サイクルで実行される。【００６７】
その後、図１２のステップＳ１２３に示されるように、キャッシュ２４はキャッシュ間接続コントローラ２７に自コアキャッシュ内の最古エントリのデータを送信する。この動作は図１３に示すように、第３サイクルから第６サイクルにかけて４サイクルで実行される。更に図１２のステップＳ１２４に示されるように、キャッシュ間接続コントローラ２７は、キャッシュ２４の最古エントリをキャッシュ２５（他コアキャッシュ）に転送する。ここで他コアキャッシュ２５は、全体での最古エントリが存在し、追い出しエントリの転送先となるキャッシュである。この動作は図１３に示すように、第４サイクルから第７サイクルにかけて４サイクルで実行される。また図１３に示すように、他コアキャッシュ２５における全体での最古エントリに対する自コアキャッシュ２４内の最古エントリの上書きは、第５サイクルから第８サイクルにかけて４サイクルで実行される。【００６８】
その後、図１２のステップＳ１２５に示されるように、キャッシュ間接続コントローラ２７はメインメモリ２８からデータを受信する。またステップＳ１２６に示されるように、キャッシュ間接続コントローラ２７からキャッシュ２４に当該データを転送する。この際、図１３に示されるように、メモリへのデータ要求からデータ受信までは数百サイクルが経過する。その後、キャッシュ間接続コントローラ２７によるメモリからのデータ受信及びキャッシュ２４（自コアキャッシュ）へのデータ転送は、例えば４サイクルかけて行われる。またキャッシュ２４（自コアキャッシュ）は、４サイクルかけてキャッシュ間接続コントローラ２７からのデータを受信する。【００６９】
図１４は、追い出しエントリを転送する場合のＬＲＵ情報更新動作について説明するための図である。図１４には、追い出しエントリを破棄する場合に、自コアキャッシュの第１のＬＲＵ情報４１について実行される更新動作、他コアキャッシュの第１のＬＲＵ情報４１について実行される更新動作、及び第２のＬＲＵ情報４２について実行される更新動作が示される。【００７０】
自コアキャッシュの第１のＬＲＵ情報４１については、自コアキャッシュ内の最古のエントリが最新のエントリとして示されるように、自コアキャッシュの第１のＬＲＵ情報４１の内容を更新する。また他コアキャッシュの第１のＬＲＵ情報４１については、自コアキャッシュ内の最古のエントリ（追い出しエントリ）が他コアキャッシュ内で何番目に古いかを第１のＬＲＵ情報４１及び第２のＬＲＵ情報４２に基づいて計算する。更に、他コアキャッシュ内の最古のエントリ（全体での最古のエントリ）が、上記計算により求められた順番よりも１つ小さい順番（１つ古い順番）として示されるように、他コアキャッシュの第１のＬＲＵ情報４１の内容を更新する。また第２のＬＲＵ情報４２については、全体で最古のエントリが自コアキャッシュ内の最古のエントリ（追い出しエントリ）の古い順より１つ古い順番となり、且つ自コアキャッシュ内で最古のエントリが最新のエントリとなるように、第２のＬＲＵ情報４２の内容を更新する。【００７１】
上記動作において、１つ古い順番とするのは、最古のエントリを破棄して最新のエントリをメモリから持ってくることにより、全てのエントリについて、その古さ順が１つ小さい順番（１つ古い順番）に移行するためである。図１５乃至図１７は、上記のＬＲＵ更新動作について説明するための図である。【００７２】
図１５は、ある着目インデックスに対する全エントリが全体の古さ順に並べられた様子を示す図である。ここでアルファベット一文字がキャッシュを識別し、その次の数字一文字が当該キャッシュ内でのエントリ番号を示す。また図１５の上段のエントリ列は更新前を示し、下段のエントリ列は更新後を示す。エントリ列において一番左のエントリが一番古く、一番右のエントリが一番新しい。即ち、図１５の上段のエントリ列において、キャッシュＡ（キャッシュ２４）のエントリ番号０のエントリＡ０が全体で最古であり、例えばキャッシュＢ（キャッシュ２５）のエントリ番号２のエントリＢ２がキャッシュＢ内で最古である。【００７３】
例えばキャッシュＢが自コアキャッシュである場合を考える。この場合、全体で最古のエントリＡ０の内容が破棄され、また追い出しエントリ（キャッシュＢ内で最古のエントリ）であるエントリＢ２の位置にメモリからの読み出しデータ（最新データ）が書き込まれる。従って、エントリ列の一番左端のエントリＡ０が消えるとともに、一番右端に新たなエントリＢ２が付け足され、その他のエントリは全体が矢印で示されるように左に１つ移動する。即ち、各エントリの古さ順は１つ古い古さ順に更新される。【００７４】
この際、読み出しデータ（最新データ）が書き込まれるエントリＢ２の元のデータは、追い出しデータとしてキャッシュＢから追い出され、全体で最古のエントリＡ０に移動される。これが図１５において点線の矢印で示されている。従って、全体で最古のエントリＡ０は、自コアキャッシュＢの追い出しエントリＢ２の古い順に一致する順番（元のエントリＢ２の古い順より１つ小さい古い順）のエントリとなる。【００７５】
このときキャッシュＡの第１のＬＲＵ情報４１について考える。更新前において、エントリＢ２は、キャッシュＡのエントリと比較して古い順に並べるとＡ０、Ａ２、Ｂ２、Ａ１、Ａ３の順となるので、エントリＢ２は３番目に古い。このエントリＢ２がキャッシュＡに移動される際に、最古のエントリＡ０の中身である最古のデータが無くなって、代わりにＢ２の中身のデータがＡ０に書き込まれる。従って、最古のデータが無くなった分だけ、更新後のＡ０の順番はＢ２の古さ順（３番目）より１つ小さい順（２番目）となる。これが図１４において、他コアキャッシュの第１のＬＲＵ情報４１の更新操作の欄に記載してある内容である。【００７６】
但し、Ａ０は破棄されるのであるから、Ａ０を除いた更新後のエントリを対象として、エントリＢ２をキャッシュＡのエントリと比較して古い順に並べるとＡ２、Ｂ２、Ａ１、Ａ３の順となる。即ち、エントリＢ２はキャッシュＡの中で２番目に古い。従って、移動先のキャッシュ（他コアキャッシュ）における最古のエントリ（全体で最古のエントリ）Ａ０は、追い出しエントリＢ２の古い順に一致する順番に更新されると考えてもよい。【００７７】
図１６（ａ）は、他コアキャッシュＡに対応する第２のＬＲＵ情報４２の更新の様子を示し、図１６（ｂ）は、自コアキャッシュＢに対応する第２のＬＲＵ情報４２の更新の様子を示す。図１６に示す例は、図１５に示すエントリ順に一致する。【００７８】
図１６（ａ）に示すように他コアキャッシュＡの最古のエントリ（濃い階調で示すエントリ番号０：図１５のＡ０）は、全体の最古のエントリであり、このエントリにエントリＢ２の内容が移動される。その結果、更新前の第１のＬＲＵ情報４１が示す古い順は０、２、１、３であったのが、更新後の第１のＬＲＵ情報４１が示す古い順は２、０、１、３となる。【００７９】
図１６（ｂ）に示すように自コアキャッシュＢの最古のエントリ（濃い階調で示すエントリ番号２：図１５のＢ２）は、キャッシュＢの最古のエントリであり、このエントリにメモリからの読み出しデータが移動される。その結果、更新前の第１のＬＲＵ情報４１が示す古い順は２、３、０、１であったのが、更新後の第１のＬＲＵ情報４１が示す古い順は３、０、１、２となる。【００８０】
図１７は、図１５に示すようなデータ移動に伴うエントリ更新がなされた場合の第２のＬＲＵ情報４２の変化を示す図である。図１７の上段は更新前の第２のＬＲＵ情報４２であり、下段は更新後の第２のＬＲＵ情報４２である。図７を参照して説明したように、第２のＬＲＵ情報４２は、各キャッシュを識別する情報（符号）をエントリの古さ順に並べたものである。即ち、図１７の上段の第２のＬＲＵ情報４２は、図１５の上段のエントリ列からエントリを特定するエントリ番号０，１，２，３を削除したものであり、図１７の下段の第２のＬＲＵ情報４２は、図１５の下段のエントリ列からエントリを特定するエントリ番号０，１，２，３を削除したものである。更新動作については、図１５を参照して説明したのと同様である。【００８１】
上記の実施例に説明したようにして、コア２１乃至２３からメインメモリ２８にアクセス要求があった場合に、適宜メインメモリ２８からデータを読み出して、要求発行したコアに対応するキャッシュ（自コアキャッシュ）にデータを転送することができる。この際、複数のアクセス要求が競合した場合には、キューイングにより対応すればよい。即ち、キャッシュ間接続コントローラ２７に複数の要求を保持するキュー（ＦＩＦＯ）を設け、このキューに要求を投入して、順番に要求を処理していくようにすればよい。【００８２】
この際、ＬＲＵ動作（ＬＲＵ参照動作及びＬＲＵ更新動作）については、前記のように第２番目のサイクルにおいて１サイクルで実行するように構成してある。従って、複数の要求が互いに１サイクルでもずれていればこれらの要求が競合することはなく、通常通りに動作することができる。但し同一のサイクルで同時に複数の要求があった場合には、キューイングにより対応する必要がある。【００８３】
またデータ転送動作については、前述のように複数のサイクルを必要とする。従って、同一のサイクルで同時に複数の要求があった場合だけでなく、複数の要求が互いに多少ずれている場合であっても競合するようなタイミングであれば、キューイングにより対応する必要がある。【００８４】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図１】
2008068797.tif 000003
【図２】
2008068797.tif 000004
【図３】
2008068797.tif 000005
【図４】
2008068797.tif 000006
【図５】
2008068797.tif 000007
【図６】
2008068797.tif 000008
【図７】
2008068797.tif 000009
【図８】
2008068797.tif 000010
【図９】
2008068797.tif 000011
【図１０】
2008068797.tif 000012
【図１１】
2008068797.tif 000013
【図１２】
2008068797.tif 000014
【図１３】
2008068797.tif 000015
【図１４】
2008068797.tif 000016
【図１５】
2008068797.tif 000017
【図１６】
2008068797.tif 000018
【図１７】
2008068797.tif 000019
【手続補正書】
【提出日】平成21年12月9日(2009.12.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主記憶装置にアクセスするよう機能する複数の処理装置と、
該複数の処理装置に一対一に結合された複数のキャッシュと、
該複数のキャッシュに結合され該複数のキャッシュ間のデータ転送及び該複数のキャッシュと該主記憶装置との間のデータ転送を制御するコントローラ
を含み、該コントローラは、
各キャッシュ内でのエントリの古さ順を示す第１の情報と、該複数のキャッシュ全体でのエントリの古さ順を示す第２の情報とを各インデックス毎に格納するメモリと、
該複数の処理装置の１つが該主記憶装置もしくは下位階層キャッシュをアクセスする際に、該１つの処理装置に対応する１つのキャッシュからアクセス対象のアドレスに対応するインデックスのエントリを追い出す必要がある場合、追い出しエントリ及びその移動先を該第１の情報及び該第２の情報に応じて決定するロジック回路
を含むことを特徴とするキャッシュシステム。
【請求項２】
該ロジック回路は、該１つのキャッシュに存在する該アクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを該追い出しエントリとして該第１の情報に応じて選択し、該複数のキャッシュに存在する該アクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを全体で最古のエントリとして該第２の情報に応じて選択し、該全体で最古のエントリの位置に該追い出しエントリを移動するよう構成されることを特徴とする請求項１記載のキャッシュシステム。
【請求項３】
該ロジック回路は、該１つのキャッシュでの最古のエントリが最新のエントリとなるように該１つのキャッシュに対応する該第１の情報を更新し、該追い出しエントリの移動先のキャッシュにおける最古のエントリである該全体で最古のエントリが追い出しエントリの古い順に一致するように該移動先キャッシュの該第１の情報を更新し、該全体で最古のエントリが該追い出しエントリの古い順に一致する順番のエントリとなり且つ該１つのキャッシュでの最古のエントリが最新のエントリとなるように該第２の情報を更新するよう構成されることを特徴とする請求項２記載のキャッシュシステム。
【請求項４】
該ロジック回路は、該複数のキャッシュに存在する該アクセス対象のアドレスに対応するインデックスの複数のエントリのうちで最古のエントリを全体で最古のエントリとして該第２の情報に応じて選択し、該全体で最古のエントリが該１つのキャッシュに存在する場合には、該全体で最古のエントリの位置に該主記憶装置から読み出したデータを上書きすることを特徴とする請求項１記載のキャッシュシステム。
【請求項５】
該１つのキャッシュにおいて該全体で最古のエントリが最新のエントリとなるように該１つのキャッシュに対応する該第１の情報を更新するとともに、該全体で最古のエントリが最新のエントリとなるように第２の情報を更新することを特徴とする請求項４記載のキャッシュシステム。
【請求項６】
該第１の情報は、該複数のキャッシュの各々に対して、キャッシュ内の１つのインデックスの全てのエントリから２つを選ぶ全ての組み合わせについて、２つのエントリ間の新旧関係を示す情報を含むことを特徴とする請求項１記載のキャッシュシステム。
【請求項７】
該第２の情報は、特定の１つ１つのエントリを識別することなく、エントリの古い順に各エントリが属するキャッシュを識別する符号を並べることにより、該複数のキャッシュ全体でのエントリの古さ順を表現することを特徴とする請求項１又は６記載のキャッシュシステム。
【請求項８】
該ロジック回路は、該第１の情報及び該第２の情報の参照及び更新を纏めて１サイクルで実行するよう構成されることを特徴とする請求項１記載のキャッシュシステム。
【国際調査報告】
2008068797.tif 000020
2008068797.tif 000021