(57)【要約】  第２レベルキャッシュ装置２００は、第２レベルキャッシュタグ部２０４ａに第２レベルキャッシュデータ部２０４ｂの登録情報に対応付けて、第１レベルキャッシュ装置１０２（およびその他の第１レベルキャッシュ装置）に対するデータの登録情報の一部を記録し、第１レベルキャッシュタグ写し部２０４ｃに第１レベルキャッシュ装置１０２に対するデータの登録情報を記録し、コヒーレンシ維持処理部２０３ａが、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃに記録された情報を使用して第１レベルキャッシュ装置１０２と第２レベルキャッシュ装置２００との間でコヒーレンシを維持する。
2007094046.tif 000002
【特許請求の範囲】
【請求項１】
第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、
所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、
前記第１の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第２の記録手段と、
を備えたことを特徴とするコヒーレンシ維持装置。
【請求項２】
前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持手段を更に備え、前記第１の記録手段に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持手段は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録手段に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項３】
前記コヒーレンシ維持手段は、リードリクエストに含まれる物理アドレスおよび論理アドレスを利用して、前記第１の記録手段に記録された登録情報の一部と前記第２の記録手段に記録された前記登録情報の残りの部分とを同時にアクセスすることを特徴とする請求項２に記載のコヒーレンシ維持装置。
【請求項４】
前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、前記第２の記録手段に記録された登録情報の残りの部分を基にしてエラーの発生したデータを修正するエラー修正手段を更に備えたことを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項５】
前記エラー修正手段は、前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、当該エラーの発生したデータを消去するか否かを前記第２の記録手段に記録された登録情報の残りの部分を基に判定し、判定結果に基づいてエラーの発生したデータを消去することを特徴とする請求項４に記載のコヒーレンシ維持装置。
【請求項６】
前記第１の記録手段は、第２のキャッシュメモリに対するデータの登録状態を示す情報と、前記登録情報の一部とを対応付けて記録することを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項７】
前記第１の記録手段は、リードリクエストにヒットしたか否かを判定する情報、当該第１の記録手段に記録されたデータが有効か否かの情報、シノニムか否かを判定する情報および前記登録情報の一部を対応付けて記録することを特徴とする請求項６に記載のコヒーレンシ維持装置。
【請求項８】
前記第１の記録手段が記録する登録情報の一部は複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットによって前記第１のキャッシュメモリに記録されたデータの登録状態を把握し、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持することを特徴とする請求項２〜７のいずれか一つに記載のコヒーレンシ維持装置。
【請求項９】
第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、
所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を第１の記録装置に記録する第１の記録工程と、
前記第１の記録装置よりも少ないエントリ数を有し、前記登録情報の残りの部分を第２の記録装置に記録する第２の記録工程と、
を含んだことを特徴とするコヒーレンシ維持方法。
【請求項１０】
前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持工程を更に含み、前記第１の記録装置に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持工程は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録装置に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする請求項９に記載のコヒーレンシ維持方法。
【請求項１１】
前記コヒーレンシ維持工程は、リードリクエストに含まれる物理アドレスおよび論理アドレスを利用して、前記第１の記録手段に記録された登録情報の一部と前記第２の記録手段に記録された前記登録情報の残りの部分とを同時にアクセスすることを特徴とする請求項１０に記載のコヒーレンシ維持方法。
【請求項１２】
前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、前記第２の記録装置に記録された登録情報の残りの部分を基にしてエラーの発生したデータを修正するエラー修正工程を更に含んだことを特徴とする請求項９に記載のコヒーレンシ維持方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置およびコヒーレンシ維持方法に関するものである。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）は、主記憶装置間に発生するデータ遅延問題の解決手段として、キャッシュメモリを利用している。キャッシュメモリは、主記憶装置に対して階層構造をなしており、現在では複数階層のキャッシュメモリが用いられている。【０００３】
キャッシュメモリはＣＰＵから近い順に、第１レベルキャッシュおよび第２レベルキャッシュとよばれている。一般的にキャッシュメモリは、ＣＰＵに近いほど高速にアクセスできるが容量は小さく、主記憶装置に近いほどアクセスは低速だが容量は大きくなるように構成されている。【０００４】
また、従来にかかるキャッシュメモリは、第１レベルキャッシュに対するタグの写しを第２レベルキャッシュに保持させ、第２レベルキャッシュが第１レベルキャッシュのタグの写しを利用し、第１レベルキャッシュのタグの情報を取得することによって、第１レベルキャッシュおよび第２レベルキャッシュ間の相互矛盾を無くしている（コヒーレンシを維持している）。【０００５】
図１９は、従来の第１レベルキャッシュの状態を得るまでのステージを示す図である。同図に示すように、従来では、物理インデックスで第２レベルキャッシュのタグにアクセスした場合に、第２レベルキャッシュに含まれる仮想インデックスを利用して第１レベルキャッシュのタグの写しにアクセスし（つまり、２段階アクセスし）、第１レベルキャッシュの登録状態を把握することによって、第１レベルキャッシュおよび第２レベルキャッシュの相互矛盾を無くしている。【０００６】
なお、特許文献１では、キャッシュに含まれる各キャッシュラインに状態ビットフィールドなどを関連付けて、キャッシュライン状態のデコード効率を向上させる技術が公開されており、特許文献２では、共用の第２レベルキャッシュに包含ビット、命令ビットおよびデータビットを有するディレクトリを含ませることでデータキャッシュの包含を追跡可能とする技術が公開されている。【０００７】
また、特願２００４−２２２４０１号明細書では、第２レベルキャッシュに第１レベルキャッシュのタグの写しを統合させることにより、第２レベルキャッシュのタグの検索結果を用いて第１レベルキャッシュのタグの写しを検索することができ、２段階アクセスによるディレイを削減可能とする技術が公開されている。【０００８】
【特許文献１】特開平１０−３０１８５０号公報
【特許文献２】特開平８−２３５０６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した特願２００４−２２２４０１号明細書による方式では、２段階アクセスを削減でき、キャッシュメモリのマシンサイクルの高速化が可能となる一方で、キャッシュメモリが階層構造を取るために、第２レベルキャッシュに統合された第１レベルキャッシュのタグの写しにかかる使用効率が低く、第２レベルキャッシュの限られた資源を効率よく利用できていないという問題があった。【００１０】
これは、第１レベルキャッシュの容量と比較して第２レベルキャッシュの容量が大きいこと、すなわち、第１レベルキャッシュと第２レベルキャッシュとのエントリ数の差に起因する。第１レベルキャッシュのタグを第２レベルキャッシュのタグに含めようとすれば、原理的に相互の容量差の分だけ絶対に使用されない部分が発生する。例えば、第１レベルキャッシュが２ｋエントリであるのに対し、第２レベルキャッシュが９６ｋエントリ持つとすると、第２レベルキャッシュ内で使用される第１レベルキャッシュのタグの写し部分は、最大で２％の使用効率となる。【００１１】
さらに、近年の半導体技術の向上により、最近のＣＰＵはマルチコアで構成されている。マルチコアからアクセスされる第２レベルキャッシュは、シングルコアの時よりもエントリ数の差が小さくなるが、第１レベルキャッシュの写しに必要な情報量が増大するため、結果として、統合されたタグの使用効率が低下してしまい、この問題は更に深刻なものとなる。【００１２】
また、使用効率を向上させるべく、上述した特許文献１または特許文献２に開示されている手法を利用することも考えられるが、特許文献１および特許文献２では、第１レベルキャッシュの登録状態を把握するために、２段階アクセスを行う必要があるので、２段階アクセスによるディレイの問題が発生し、マシンサイクルを高速化することが困難となる。【００１３】
すなわち、２段階アクセスにより発生するディレイをなくしてマシンサイクルを向上させると共に、キャッシュメモリの限られた資源を効率よく利用することが極めて重要な課題となっている。【００１４】
本発明は、上記に鑑みてなされたものであって、２段階アクセスにより発生するディレイをなくしてマシンサイクルを向上させ、キャッシュメモリの資源を効率よく利用することができるコヒーレンシ維持装置およびコヒーレンシ維持方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、前記第１の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第２の記録手段と、を備えたことを特徴とする。【００１６】
また、本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を第１の記録装置に記録する第１の記録工程と、前記第１の記録装置よりも少ないエントリ数を有し、前記登録情報の残りの部分を第２の記録装置に記録する第２の記録工程と、を含んだことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、所定のエントリ数を有し、第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、第１の記録手段より少ないエントリ数を有し、登録情報の残りの部分を記録する第２の記録手段とを有し、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するので、第１の記録手段に記録されたデータの使用効率を高めることができ、資源を有効に使用することができる。【００１８】
また、本発明によれば、第２のキャッシュメモリに対するリードリクエストを取得した場合に、第１の記録手段からリードリクエストに該当するデータの登録情報の一部を読み出して、第１のキャッシュメモリと第２のキャッシュメモリとのコヒーレンシを維持するので、２段階アクセスをなくし、マシンサイクルを高速化することができる。【００１９】
また、本発明によれば、第２のキャッシュメモリに対するリードリクエストを取得した場合に、該当するデータが複数の第１のキャッシュメモリによって共有されている場合に、第２の記録手段に記録された登録情報の残りを基にして、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するので、第１レベルキャッシュの登録情報を分割して保持し、資源の効率化を図った場合であっても、適切に第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持することができる。【００２０】
また、本発明によれば、第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、第２の記録手段に記録された登録情報の残りの部分を利用してエラーを修正するので、第１のキャッシュメモリに記録されたデータのエラーを適切に修正することができる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明に対する第１レベルキャッシュの登録状態を把握するまでのステージを示す図である。
【図２】図２は、本発明による第２レベルキャッシュのタグ部の使用効率の改善について説明するための説明図である。
【図３】図３は、本実施例にかかるシステムの構成を示す図である。
【図４】図４は、本実施例にかかるプロセッサコア、第２レベルキャッシュ装置および主記憶装置の構成を示す図である。
【図５】図５は、論理アドレスのデータ構造の一例を示す図である。
【図６】図６は、物理アドレスのデータ構造の一例を示す図である。
【図７】図７は、第１レベルキャッシュタグのデータ構造の一例を示す図である。
【図８】図８は、第２レベルキャッシュタグのデータ構造の一例を示す図である。
【図９】図９は、第１キャッシュ登録情報に格納されるコードの意味を示す図である。
【図１０】図１０は、第１キャッシュ詳細情報のデータ構造の一例を示す図である。
【図１１】図１１は、プロセッサコアからのリードリクエストによるタグ登録情報の遷移を説明するための説明図である。
【図１２】図１２は、シノニム状態からのタグ登録情報の遷移を説明するための説明図である。
【図１３】図１３は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図（１）である。
【図１４】図１４は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図（２）である。
【図１５】図１５は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図（１）である。
【図１６】図１６は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図（２）である。
【図１７】図１７は、本実施例にかかる第２レベルキャッシュ装置の処理を示すフローチャート（１）である。
【図１８】図１８は、本実施例にかかる第２レベルキャッシュ装置の処理を示すフローチャート（２）である。
【図１９】図１９は、従来の第１レベルキャッシュの状態を得るまでのステージを示す図である。
【符号の説明】
【００２２】
１００，１１０，１２０，１３０，１ｍ０，１ｎ０    プロセッサコア
１０１    命令実行制御部
１０２    第１レベルキャッシュ装置
１０３    第１レベルキャッシュ制御部
１０３ａ  アドレス変換処理部
１０３ｂ  検索処理部
１０３ｃ  エラー検出部
１０４    記憶部
１０４ａ  命令キャッシュタグ部
１０４ｂ  命令キャッシュデータ部
１０４ｃ  オペランドキャッシュタグ部
１０４ｄ  オペランドキャッシュデータ部
２００，２２０，２ｍ０    第２レベルキャッシュ装置
２０３    第２レベルキャッシュ制御部
２０３ａ  コヒーレンシ維持処理部
２０３ｂ  エラー処理部
２０４ａ  第２レベルキャッシュタグ部
２０４ｂ  第２レベルキャッシュデータ部
２０４ｃ  第１レベルキャッシュタグ写し部
３００    主記憶装置
３００ａ  アクセス制御部
３００ｂ  メモリ
【発明を実施するための最良の形態】
【００２３】
以下に、本発明にかかるコヒーレンシ維持装置およびコヒーレンシ維持方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２４】
まず、本発明の特徴について従来技術と比較して説明する。本発明では、第２レベルキャッシュのタグ部に第１レベルキャッシュに対するデータの登録情報の一部（以下、第１キャッシュ登録情報と表記する）を保持させると共に、第１レベルキャッシュの登録状態を把握するための詳細な情報（あるいは、第１レベルキャッシュに対するデータの登録情報の残り；以下、第１キャッシュ詳細情報）を、第２レベルキャッシュのタグ部と同タイミングで検索するように構成する。【００２５】
第１キャッシュ登録情報は、第２レベルキャッシュがリードリクエストを取得した場合に、リードリクエストに該当するデータが複数の第１レベルキャッシュ（プロセッサコア）によって共有されているか否かの情報（以下、共有情報）が含まれている。データが複数の第１レベルキャッシュに共有されていない場合には、この第１レベルキャッシュ登録情報は、該当データを保持している第１レベルキャッシュの識別情報やデータの登録情報（例えば、プロセッサコア１のオペランドウェイ０に、更新型で登録されているなどの情報）を記録している。【００２６】
すなわち、リードリクエストに該当するデータが、複数のプロセッサコアに共有されていない場合には、第１キャッシュ登録情報によって第１レベルキャッシュに対するデータの登録情報を得ることができる。また、データが複数のプロセッサコアに共有されている場合には、第１キャッシュ詳細情報を参照して、各プロセッサコアに対するデータの登録情報を取得し、第１レベルキャッシュと第２レベルキャッシュとの間でコヒーレンシを維持することとなる。【００２７】
図１は、本発明に対する第１レベルキャッシュの登録状態を把握するまでのステージを示す図である。同図に示すように、物理アドレスで第２レベルキャッシュのタグ部をアクセスした場合に、アクセスした第２レベルキャッシュのタグ部に第１キャッシュ登録情報が含まれているため、迅速に第１レベルキャッシュの登録情報を把握することができる。【００２８】
また、本発明では、必要に応じて（すなわち、第１レベルキャッシュの詳細な情報が必要な場合）、物理アドレスおよび論理アドレスによって、第２レベルキャッシュのタグ部に対するアクセスと同タイミングで、第１キャッシュ詳細情報にアクセスするので、特許文献１および特許文献２のような２段階アクセスを回避し、マシンサイクルを高速化することができる。【００２９】
図２は、本発明による第２レベルキャッシュのタグ部の使用効率の改善について説明するための説明図である。図２の左側は、従来の第２レベルキャッシュのタグ部の一例（特願２００４−２２２４０１号明細書にかかる第２レベルキャッシュのタグ部の一例）を示しており、図２の右側は、本発明の第２レベルキャッシュのタグ部の一例を示している。【００３０】
図２の左側に示すように、従来の第２レベルキャッシュのタグ部には、第１レベルキャッシュの詳細な情報として、第２レベルキャッシュのエントリごとに８ビットずつ第２レベルキャッシュのタグ部の記憶領域を使用していた。なお、ここでは、プロセッサコアが２個、第１レベルキャッシュは２ウェイ・命令オペランドセパレートキャッシュを仮定しているが、このフィールドは、プロセッサコアの数、第１レベルキャッシュのウェイ数に比例して増加することとなる。【００３１】
一方、図２の右側に示すように、本発明の第２レベルキャッシュのタグ部では、第１レベルキャッシュの詳細な情報を記録しておらず（８ビットで記憶しておらず）、第１キャッシュ登録情報として５ビット記録しているので、従来に比べて記憶容量を有効に利用することができる。ここでは、エントリごとに第１キャッシュ登録情報を５ビットずつ記録しているので従来よりも３ビットずつ少なく記録されている。【００３２】
また、第２レベルキャッシュのタグ部とは別に、第１キャッシュ詳細情報を第１レベルキャッシュタグ写し部に記録している。このように、第１レベルキャッシュの詳細な情報（登録情報の残り）を第２レベルキャッシュのタグ部以外に記録しているので、第２レベルキャッシュのタグ部に対する使用効率が向上する。【００３３】
従来の第２レベルキャッシュのタグ部に比べて、本発明の第２レベルキャッシュのタグ部は、各エントリに対して３ビットずつ少なく構成されているので、第２レベルキャッシュのタグの総エントリ数を９６ｋとすると、２８８ｋビット（３ビット×９６ｋ）第２レベルキャッシュのタグ部の記憶容量を有効に利用していることとなる。【００３４】
また、第１レベルキャッシュタグ写し部に記録された第１キャッシュ詳細情報が１０ビットで構成されているとすれば、この第１レベルキャッシュタグ写し部に要する記憶容量は、１６０ｋビット（２ｋ×１０ビット×８）となる（ここでは、２ウェイの命令キャッシュおよびオペランドキャッシュがプロセッサ２個分あるため、８が乗算されている）。【００３５】
すなわち、第１レベルキャッシュタグ写し部に記録された第１キャッシュ詳細情報を考慮した場合でも、従来の第２レベルキャッシュよりも、資源を有効に利用することができる。【００３６】
次に、本実施例にかかるシステムの構成について説明を行う。図３は、本実施例にかかるシステムの構成を示す図である。同図に示すように、このシステムは、第２レベルキャッシュ装置２００が、第１レベルキャッシュ装置を持つプロセッサコア１００，１１０といった複数のコアに接続されており、主記憶装置３００へは、他の第２レベルキャッシュ装置２２０〜２ｍ０（ｍは自然数）と共に、データバス４００によって接続されている。ここでは、説明の便宜上、プロセッサコア１００，１００、第２レベルキャッシュ装置２００、主記憶装置３００に着目して説明を行う。【００３７】
なお、本実施例のシステムにおける連想方式は、２種類のウェイ（ウェイ０およびウェイ１）を持つ２ウェイセットアソシエイティブ方式であり、プロセッサコア数を２個とするが、本発明は、ウェイ数、連想方式、プロセッサコアの数によって制限されるものではない。【００３８】
次に、本実施例にかかるプロセッサコア（プロセッサコアには第１レベルキャッシュ装置が含まれる）、第２レベルキャッシュ装置および主記憶装置の構成について説明する。図４は、本実施例にかかるプロセッサコア、第２レベルキャッシュ装置および主記憶装置の構成を示す図である。同図に示すように、第２レベルキャッシュ装置２００は、プロセッサコア１００，１１０に接続され、データバス４００によって主記憶装置３００に接続される。【００３９】
プロセッサコア１００，１１０は、命令実行制御部１０１と第１レベルキャッシュ装置１０２を有する。なお、プロセッサコア１００およびプロセッサコア１１０の構成要素に関する説明は、同様であるため、以下では、プロセッサコア１００の説明を行い、プロセッサ１１０の説明は省略する。【００４０】
命令実行制御部１０１は、第１レベルキャッシュ装置１０２に論理アドレスを渡し、論理アドレスに対応するデータを第１レベルキャッシュ装置１０２から取得すると共に、取得したデータを基に所定の処理を実行する処理部である。【００４１】
第１レベルキャッシュ装置１０２は、命令実行制御部１０１から論理アドレス情報を取得した場合に、取得した論理アドレス情報に対応するデータを検索し、検索したデータを命令実行制御部１０１に渡す装置である。図４に示すように、第１レベルキャッシュ装置１０２は、第１レベルキャッシュ制御部１０３および記憶部１０４を有する。【００４２】
第１レベルキャッシュ制御部１０３は、アドレス変換処理部１０３ａ、検索処理部１０３ｂ、エラー検出部１０３ｃを有する。アドレス変換処理部１０３ａは、命令実行処理部１０１から論理アドレス情報を取得した場合に、取得した論理アドレス情報を物理アドレス情報に変換する処理部である。【００４３】
図５は、論理アドレス情報のデータ構造の一例を示す図である。同図に示すように、この論理アドレスＡは、論理アドレス上位ビットＡ１、第１レベルキャッシュインデックスＡ２、論理アドレス下位ビットＡ３を有する。論理アドレス上位ビットＡ１に格納された情報は、物理アドレスに変換された後、命令実行制御部１０１に要求されたデータにヒットしたか否かを判定するために利用される。【００４４】
第１レベルキャッシュインデックスＡ２は、第１レベルキャッシュ装置１０２の記憶部１０４に記憶されたタグのエントリ位置を特定するための情報が格納される。なお、論理アドレス下位ビットＡ３には、その他の情報が格納される。【００４５】
続いて、アドレス変換処理部１０３ａが論理アドレス情報を変換して生成する物理アドレス情報について説明する。図６は、物理アドレスＡ’のデータ構造の一例を示す図である。同図に示すように、この物理アドレスＡ’は、物理アドレス上位ビットＡ１’、第２レベルキャッシュインデックスＡ２’、物理アドレス下位ビットＡ３’を有する。【００４６】
物理アドレス上位ビットＡ１’は、タグ比較アドレスが格納される。このタグ比較アドレスは、データがヒットしたか否かを判定するために利用されるアドレスである。具体的には、図５に示した第１レベルキャッシュインデックスＡ２によって特定されるタグに格納された物理アドレスと、タグ比較アドレスとが等しければ、データがヒットしたことになり、等しくなければ、データがヒットしなかったことになる。【００４７】
第２レベルキャッシュインデックスＡ２’は、第２レベルキャッシュ装置２００の記憶部２０４に記録されたタグの位置を特定するための情報が格納される。なお、物理アドレス下位ビットＡ３’には、その他の情報が格納される。【００４８】
検索処理部１０３ｂは、命令実行制御部１０１から要求されたデータ（論理アドレスＡに対応するデータ）が、記憶部１０４に存在するか否かを判定し、要求されたデータが記憶部１０４に存在する場合には、該当データを命令実行処理部１０１に渡す処理部である。【００４９】
一方、命令実行制御部１０１から要求されたデータが、記憶部１０４に存在しない場合には、検索処理部１０３ｂは、その旨の情報を第２レベルキャッシュ装置に送信する。なお、検索処理部１０３ｂは、記憶部１０４に記録されたデータに対しライトバック処理も行う。【００５０】
続いて、検索処理部１０３ｂが行う処理について具体的に説明する。検索処理部１０３は、論理アドレスＡに含まれる第１レベルキャッシュインデックスＡ２を基にして、対応するタグを命令キャッシュタグ部１０４ａまたはオペランドキャッシュタグ部１０４ｃから検索する。【００５１】
命令キャッシュタグ部１０４ａは、命令キャッシュデータ部１０４ｂに登録されたデータの登録情報（タグ）を保持する。命令キャッシュデータ部１０４ｂは、命令キャッシュに登録されたデータを保持する。【００５２】
オペランドキャッシュタグ部１０４ｃは、オペランドキャッシュデータ部１０４ｄに登録されたデータの登録情報（タグ）を保持する。オペランドキャッシュデータ部１０４ｄは、オペランドキャッシュに登録されたデータを保持する。【００５３】
本実施例では、以下の説明において、命令キャッシュタグ部１０４ａまたはオペランドキャッシュタグ部１０４ｃに格納されるタグを第１レベルキャッシュタグと表記する。図７は、第１レベルキャッシュタグのデータ構造の一例を示す図である。同図に示すように、この第１レベルキャッシュタグは、第１物理アドレス４００とステータス４０１とを有する。【００５４】
第１物理アドレス４００は、物理アドレス上位ビットＡ１’（タグ比較アドレス）の比較対象となるアドレスを格納している。検索処理部１０３ｂは、第１物理アドレス４００に格納されるアドレスと物理アドレス上位ビットＡ１’に格納されるアドレスとを比較し、両者が一致した場合には、命令実行制御部１０１が要求するデータにヒットしたと判定する。そして、検索処理部１０３ｂは、対応するデータを命令実行制御部１０１に渡す。【００５５】
一方、両者が一致しない場合には、検索処理部１０３ｂは、命令実行制御部１０１が要求するデータにヒットしないと判定する。ステータス４０１は、第１レベルキャッシュタグが有効か否か、データが更新されたか否かなどの情報を格納する。【００５６】
検索処理部１０３ｂは、第１レベルキャッシュタグの第１物理アドレス４００と、物理アドレス上位ビットＡ１’とが一致しないと判定した場合には、命令実行制御部１０１に要求されたデータが第１レベルキャッシュ装置１０２に存在しないこととなるので、検索処理部１０３ｂは、対応するデータを取得すべく、物理アドレスＡ’と、第１レベルキャッシュインデックスＡ２とを第２レベルキャッシュ装置２００に渡す。【００５７】
エラー検出部１０３ｃは、命令キャッシュタグ部１０４ａ、命令キャッシュデータ部１０４ｂ、オペランドキャッシュタグ部１０４ｃ、オペランドキャッシュデータ部１０４ｄに発生するエラーを検出する処理部である。【００５８】
エラー検出部１０３ｃがエラーを検出した場合には、第２レベルキャッシュ制御装置２００にエラーが発生した旨を通知すると共に、エラーの発生したデータにかかる第１レベルキャッシュインデックスＡ２およびエラーの発生した第１レベルキャッシュ装置１０２の命令側またはオペランド側のウェイを特定する情報（以下、エラーウェイ特定情報）を第２レベルキャッシュ装置２００に渡す。【００５９】
第２レベルキャッシュ装置２００は、エラー検出部１０３ｃからエラーウェイ特定情報を取得した場合に、このエラー特定情報に基づいて、対応する第１レベルキャッシュタグ写し部２０４ｃを検索し、第１レベルキャッシュ装置１０２におけるエラーデータを無効化するかライトバックを行うかを判定し、エラー検出部１０３ｃに処理要求を行う。その結果、第１レベルキャッシュ装置１０２からはエラーしたエントリが削除されることになる。すなわち、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２にエラーが発生した場合には、第１レベルキャッシュタグ写し部２０４ｃを参照して、エラーの発生したデータを修正する。【００６０】
続いて、図４に示した第２レベルキャッシュ装置２００について説明する。この第２レベルキャッシュ装置２００は、第２レベルキャッシュ制御部２０３および記憶部２０４を有する。第２レベルキャッシュ制御部２０３は、第１レベルキャッシュ装置１０２と第２レベルキャッシュ装置２００との一貫性を維持するための処理部である。この第２レベルキャッシュ制御部２０３は、コヒーレンシ維持処理部２０３ａ、エラー処理部２０３ｂを有する。【００６１】
コヒーレンシ維持処理部２０３は、第１レベルキャッシュ装置１０２からの要求に応じて、該当するデータを記憶部２０４から検索し、検索したデータを第１レベルキャッシュ装置１０２に渡す処理部である。また、コヒーレンシ維持処理部２０３は、第１レベルキャッシュ装置１０２および第２レベルキャッシュ装置２００のコヒーレンシを維持する。また、コヒーレンシ維持処理部２０３は、第２レベルキャッシュ装置２００の記憶部２０４に格納されたデータに対しライトバック処理を行う。【００６２】
ここで、記憶部２０４は、第２レベルキャッシュタグ部２０４ａ、第２レベルキャッシュデータ部２０４ｂ、第１レベルキャッシュタグ写し部２０４ｃを記憶する記憶部である。第２レベルキャッシュタグ部２０４ａは、第２レベルキャッシュデータ部２０４ｂに登録されたデータの登録情報と第１キャッシュ登録情報とを関連付けて記憶するタグであり。第２レベルキャッシュデータ部２０４ｂは、第２レベルキャッシュに登録されたデータを保持する。【００６３】
第１レベルキャッシュタグ写し部２０４ｃは、第２レベルキャッシュタグ部２０４ａに記録された第１キャッシュ登録情報補足するための情報を記録するタグである。【００６４】
エラー処理部２０３ｂは、キャッシュアクセスが正常に行われたか否かを判定し、エラーが発生した場合には、エラーを救済する処理部である。また、エラー処理部２０３ｂは、第１レベルキャッシュ装置１０２にエラーが発生した場合には、第１レベルキャッシュタグ写し部２０４ｃを参照して、エラーの発生したデータを修正する。なお、エラー処理部２０３ｂは、第１レベルキャッシュタグ写し部２０４ｃを参照した場合に、エラーの発生したデータを削除してもよいか否かを判定し、削除してよい場合には、該当するデータを第１レベルキャッシュ装置１０２から強制的に削除する。【００６５】
主記憶装置３００は、データや所定の処理を実行するためのプログラムを記憶する記憶装置である。この主記憶装置３００は、アクセス制御部３００ａおよびメモリ３００ｂを有する。アクセス制御部３００ａは、第２レベルキャッシュ装置２００、あるいは図示しないハードディスクに対するアクセスを制御する処理部である。メモリ３００ｂは、第２レベルキャッシュ装置あるいはハードディスクから転送されるデータを記憶する記憶部である。【００６６】
続いて、コヒーレンシ維持処理部２０３ｂの処理について具体的に説明する。コヒーレンシ維持処理部２０３ｂは、第１レベルキャッシュ装置１０２から物理アドレスＡ’と第１レベルキャッシュインデックスＡ２とを取得し、物理アドレスＡ’に含まれる第２レベルキャッシュインデックスＡ２’を基にして、対応するタグを第２レベルキャッシュタグ部２０４ａから検索する。なお、本実施例では、第２レベルキャッシュタグ部２０４に格納されたタグを第２レベルキャッシュタグと表記する。【００６７】
図８は、第２レベルキャッシュタグのデータ構造の一例を示す図である。同図に示すように、この第２レベルキャッシュタグは、第２物理アドレス５００、ステータス５０１、仮想インデックス５０２、第１キャッシュ登録情報５０３を有する。【００６８】
コヒーレンシ維持処理部２０３ａは、第２物理アドレス５００に格納されたデータと物理アドレス上位ビットＡ１’に格納された情報とを比較し、両者が一致した場合には、命令実行制御部１０１から要求されたデータが記憶部２０４に格納されていることになる。一方、第２物理アドレス５００に格納されたデータと物理アドレス上位ビットが一致しない場合には、要求されたデータが第２レベルキャッシュ装置２００に存在しないので、コヒーレンシ維持処理部２０３ａは、対応するデータを主記憶装置３００から取得する。【００６９】
ステータス５０１は、第２レベルキャッシュタグが有効か否かの情報などを格納している。仮想インデックス５０２は、シノニムか否かを判定するための情報が格納されている。コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュインデックスＡ２に格納されたデータと仮想インデックス５０２に格納されたデータとを比較し、両者が等しい場合には、シノニムではないと判定する。【００７０】
一方、両者が等しくない場合には、コヒーレンシ維持処理部２０３ａは、シノニムであると判定する。コヒーレンシ維持処理部２０３ａがシノニムと判定した場合には、コヒーレンシ維持処理部２０３ａは、第２レベルキャッシュタグに含まれる第２物理アドレス５００、仮想インデックス５０２、第２レベルキャッシュインデックスＡ２’、物理アドレス下位ビットＡ３’、第１キャッシュ登録情報５０３を用いて、第１レベルキャッシュメモリ装置１０２に対してデータの無効化またはライトバックの処理を要求することによって、シノニム対象となるデータを第１レベルキャッシュ装置１０２から削除する。【００７１】
その後、コヒーレンシ維持処理部２０３ａは、命令実行処理部１０１から要求されたデータを第１レベルキャッシュ装置１０２に渡し、アクセスに使用された情報を仮想インデックス５０２に格納する。【００７２】
第１キャッシュ登録情報５０３は、第１レベルキャッシュ装置１０２にかかる登録情報を格納する。この第１キャッシュ登録情報を参照することによって、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュ装置１０２の登録状態を把握することができる。ただし、複数のプロセッサコアが同一データを共有している場合には、把握できるのは、複数のプロセッサコアに共有されているという情報だけである。【００７３】
すなわち、データが複数のプロセッサコアに共有されていない場合には、コヒーレンシ維持処理部２０３ａは、第１キャッシュ登録情報によって第１レベルキャッシュ装置１０２に対するデータの登録状態を得ることができる。しかし、複数のプロセッサコアによってデータが共有されている場合には、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃを参照して、各データの登録情報を取得する必要がある。【００７４】
図９は、第１キャッシュ登録情報５０３に格納されるコードの意味を示す図である。なお、第１キャッシュ登録情報５０３は５ビットで構成されており、内４ビットは図９に示すような意味づけとなる。【００７５】
残りの１ビットは、プロセッサコアの識別に利用される。例えば、プロセッサコア１００が保持している場合には「０」が格納され、プロセッサコア１１０が保持している場合には、「１」が格納される。ただし、他の４ビットが「０００１」の場合を除く。【００７６】
なお、第２レベルキャッシュタグがプロセッサコア１００，１１０から共有されている場合は、第１キャッシュ登録情報５０３には「０００１」が格納される。これは、それぞれのプロセッサコア１００，１１０が同一の第２レベルキャッシュタグが示すデータを持つが、第１レベルキャッシュ装置１０２にどのような状態で登録されているかわからない。つまり、命令・オペランド側、またウェイに関する情報が不足している。ただし、データが共有されている以上、そのデータそのものは共有型であることが保障されている。【００７７】
このように、複数のプロセッサコアから共有されている状態を１コードで表すことにより、第２レベルキャッシュタグ部２０４ａの情報量を削減することができる。なお、本実施例では一例として、第１キャッシュ登録情報５０３が５ビットで構成される例を示すが、これに限定されるものではなく、第１キャッシュ登録情報５０３をどのようなビット数で構成してもよい。【００７８】
なお、図９において、「更新型」とは、第１レベルキャッシュ装置１０２にかかるデータが書換えられている可能性があることを示し、「共有型」とは、第１レベルキャッシュ装置１０２にかかるデータが書換えられていないことを示す。また、データの書換えは、オペランドキャッシュのみ発生する。コヒーレンシ維持処理部２０３ａは、図８に示した第２レベルキャッシュタグが有する第１キャッシュ登録情報５０３を参照することによって、高速に第１レベルキャッシュ装置１０２の登録状態を把握することができる。【００７９】
続いて、第１レベルキャッシュタグの写し部２０４ｃが保持する第１キャッシュ詳細情報のデータ構造について説明する。図１０は、第１キャッシュ詳細情報のデータ構造の一例を示す図である。同図に示すように、この第１キャッシュ詳細情報は、第２レベルキャッシュアドレス６００、第２キャッシュウェイ６０１、ステータス６０２を有する。【００８０】
第１キャッシュ詳細情報は、第１レベルキャッシュの一つのウェイに対応している。したがって、２ウェイの命令キャッシュおよびオペランドキャッシュがプロセッサコア２個分あるシステムにおいては、第１キャッシュ詳細情報を８組使用することになる。コヒーレンシ維持処理部２０３ａは、論理アドレスによって、第１レベルキャッシュタグ写し部２０４ｃに格納された第１キャッシュ詳細情報にアクセスする。【００８１】
第２レベルキャッシュアドレス６００は、第２レベルキャッシュタグ部２０４ａの検索などにインデックスとして使用する物理アドレスと、第１レベルキャッシュタグ写し部２０４ｃの検索にインデックスとして使用する論理アドレスとの差分が格納される。【００８２】
例えば、物理アドレスＡ’がビット[４０：０]（４０ビット目〜０ビット目）からなり、第２レベルキャッシュインデックスＡ２’が、ビット[１８：１０]からなり、第１レベルキャッシュインデックスＡ２が、ビット[１５：７]からなり、論理アドレスと物理アドレスとの共通部がビット[１２：０]とすると、第２レベルキャッシュアドレス６００は、物理アドレスＡ’のビット[１８：１３]を格納する。【００８３】
コヒーレンシ維持処理部２０３ａは、第２レベルキャッシュアドレス６００に格納された情報が命令実行制御部１０１から要求された物理アドレスＡ’と一致し、かつ、第２キャッシュウェイ６０１に格納された情報が物理アドレスＡ’で第２レベルキャッシュ装置２００を検索した結果ヒットしたウェイと等しい場合、第１レベルキャッシュタグ写し部２０４に対応する第１レベルキャッシュの情報が得られる。【００８４】
ところで、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃに格納された情報を利用して、第２レベルキャッシュタグ（図８に示す）が複数のプロセッサコアに共有されている状態（コード０００１）から他の状態に遷移させる。【００８５】
例えば、第１レベルキャッシュ装置１０２に記録されたデータが、リプレイスのために消去され、共有状態が解消されるエントリ（第２レベルキャッシュタグ）が存在するとする。もしも、第１レベルキャッシュタグ写し部２０４ｃがない場合、コヒーレンシ維持処理部２０３ａは、その解消されるエントリを探すために第２レベルキャッシュ装置２００に記録されたデータを走査する必要がある。【００８６】
なぜならば、第１レベルキャッシュタグは論理アドレスで検索され、第２レベルキャッシュタグは物理アドレスで検索されるためである。つまり、インデックスに用いられるアドレスから共通な部分を除いた差分によって示されるエントリに、該当するデータが登録されている可能性があるからである。【００８７】
しかし、第１レベルキャッシュタグ写し部２０４ｃが記録する第１キャッシュ詳細情報を参照することによって、迅速に第１キャッシュ登録情報を更新することができる。【００８８】
また、本発明では、第２レベルキャッシュタグが複数のプロセッサコアによって共有されている（コード０００１）状態から他の状態に遷移する際にエラーが発生した場合には、エラー処理部２０３ｂは、第１キャッシュ詳細情報を利用してエラー処理を実行する。【００８９】
第２レベルキャッシュ装置２００がリプレイスをおこなう場合、キャッシュメモリが階層構造になっているため、第１レベルキャッシュ装置１０２からもデータブロックを消去する必要がある。このとき、コヒーレンシ維持処理部２０３ａは、そのデータブロックが複数のプロセッサコアで共有されている（コード０００１）状態である場合には、両方のプロセッサコア（例えば、プロセッサコア１００，１１０）に対して、データの無効化要求を発行する。【００９０】
第２レベルキャッシュ装置２００から無効化要求を取得した第１レベルキャッシュ装置１０２は、第１レベルキャッシュタグを検索し、ヒットしたウェイに登録されたデータを消去する。なぜならば、第１レベルキャッシュタグ写し部２０４ｃを検索する際に利用する論理アドレスは、第２レベルキャッシュのリプレイス対象となっているエントリの論理アドレスと異なっているために、その結果が使用できないためである。この時点で第１レベルキャッシュタグにエラーが発生すると、エラーの発生したタグに対応するデータブロックを消去すべきか否かの判断ができなくなる。【００９１】
そこで、第１レベルキャッシュタグにエラーが発生した場合には、第１レベルキャッシュ装置１０２は、エラー報告およびエラーの発生したタグの論理アドレスを第２レベルキャッシュ装置２００に送信し、第２レベルキャッシュ装置２００が、受信した論理アドレスに対応するタグの情報を第１レベルキャッシュタグ写し部２０４ｃから検索することによってエラーリカバリーを実行する。第１レベルキャッシュタグ写し部２０４ｃに対する検索においてデータがヒットした場合には、第２レベルキャッシュ装置２００は、再び、第１レベルキャッシュ装置に無効化要求を行う。第１レベルキャッシュタグ写し部２０４ｃのデータにヒットしたため、エラーの発生したタグに対する情報が得られているため、第１レベルキャッシュタグの検索を行うことなく、第２レベルキャッシュ装置２００は、無効化要求を実行することができる。【００９２】
次に、コヒーレンシ維持処理部２０３ａが、プロセッサコアからのリードリクエストを取得した場合の処理について説明する。図１１は、プロセッサコアからのリードリクエストによるタグ登録情報の遷移を説明するための説明図である。【００９３】
図１１の左側に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＡ’、論理アドレスＡからなるリードリクエストを取得すると、物理アドレスＡ’に対応するエントリを第２レベルキャッシュタグ部２０４ａから検索する。同図に示す例では、第２レベルキャッシュタグ部２０４ａの物理アドレスＡ’にデータが登録されており、ステータスが有効（Valid）なので、ヒットとなる。第１レベルキャッシュ装置１０２には有効なデータが登録されていないため、第１レベルキャッシュタグ写し部２０４ｃには、論理アドレスに対応する有効なデータは存在していない。【００９４】
第１レベルキャッシュ装置１０２がリードリクエストしたデータを、例えば、命令キャッシュのウェイ０に登録した場合には、コヒーレンシ維持処理部２０３ａは、図１１の右側に示すように、仮想インデックス５０２に論理アドレスＡを登録し、第１キャッシュ登録情報５０３の１ビット目にプロセッサコア１００の識別情報「０」を登録し、２ビット目〜５ビット目にコード１０００（命令ウェイ０に、共有型で登録されている；図９参照）を登録する。【００９５】
また、コヒーレンシ維持処理部２０３ａは、論理アドレスＡに対応する第１レベルキャッシュタグ写し部２０４ｃにおけるエントリの第２レベルキャッシュアドレス６００に、上述した物理アドレスＡ’と論理アドレスＡとの差分を登録するとともに、第２キャッシュウェイ６０１に「ウェイ０（Ｗａｙ０）」を登録し、ステータス６０２に「有効（Ｖａｌ）」を登録する。【００９６】
次に、シノニム状態となった場合のコヒーレンシ維持処理部２０３ａの処理について説明する。図１２は、シノニム状態からのタグ登録情報の遷移を説明するための説明図である。【００９７】
図１２の左側に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＡ’、論理アドレスＢからなるリードリクエストを取得すると、物理アドレスＡ’に対応するエントリを第２レベルキャッシュタグ部２０４から検索する。同図に示す例では、第２レベルキャッシュタグ部２０４ａの物理アドレスＡ’にデータが登録されており、ステータスが有効なので、ヒットとなる。【００９８】
しかし、仮想インデックス５０２には論理アドレスＡが登録されているため、リードリクエストに含まれる論理アドレスＢと異なり、シノニムヒットとなる。シノニムヒットとなった場合には、コヒーレンシ維持処理部２０３ａは、論理アドレスＡに対応するエントリの無効化を第１レベルキャッシュ装置１０２に要求する。【００９９】
第１レベルキャッシュ装置１０２による論理アドレスＡに対するエントリの無効化が完了した場合に、コヒーレンシ維持処理部２０３ａは、図１２の右側に示すように、第１レベルキャッシュタグ写し部２０４ｃに登録されたデータを更新する。具体的には、コヒーレンシ維持処理部２０３ａは、第２レベルキャッシュタグ部２０４ａの仮想インデックス５０２に論理アドレスＢを登録する。また、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃに登録された情報を更新する。すなわち、論理アドレスＡに対するエントリを無効化するとともに、論理アドレスＢに対応する第２レベルキャッシュアドレス６００、第２レベルキャッシュウェイ６０１、ステータス６０３にそれぞれ、「物理アドレスＡ’と論理アドレスＢとの差分」、「ウェイ０」、「有効」を登録する。【０１００】
次に、コヒーレンシ維持処理部２０３ａが、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃにおけるプロセッサコア間の共有状態を他の状態へ遷移させる処理について説明する。図１３および図１４は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図である。【０１０１】
図１３の左側に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＢ’、論理アドレスＢからなるリードリクエストを取得すると、物理アドレスＢ’に対応するエントリを第２レベルキャッシュタグ部２０４ａから検索する。同図に示す例では、第２レベルキャッシュタグ部２０４ａにおいて、物理アドレスＡ’に対するデータがヒットしたが、第１レベルキャッシュタグ写し部２０４の論理アドレスＢに対応するエントリに、論理アドレスＡに対する有効なデータが登録されているため、リプレイスが発生する。コヒーレンシ維持処理部２０３ａは、物理アドレスＢ’に登録されたデータおよび論理アドレスＡのデータ無効化要求をプロセッサコア１００に渡す。【０１０２】
図１３の右側（図１４の左側も同様）に示すように、状態遷移の途中では、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃはともに更新されているが、リプレイスされた論理アドレスＡに関する情報はまだ古いまま（コード０００１）である。【０１０３】
続いて、図１４の右側に示すように、コヒーレンシ維持処理部２０３ａは、プロセッサコア１００から論理アドレスＡ（物理アドレスＡ’）の無効化要求に対する応答（以下、無効化応答と表記する）を取得する。コヒーレンシ維持処理部２０３ａは、無効化応答に含まれる論理アドレスＡによって第１レベルキャッシュタグ写し部２０４ｃを検索し、論理アドレスＡを持っている第１レベルキャッシュの状態を把握し、把握した情報によって、物理アドレスＡ’に対するエントリの第１キャッシュ登録情報を更新する。【０１０４】
次に、登録状態遷移中にエラーが発生した場合の処理について説明する。図１５および図１６は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図である。同図に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＢ’、論理アドレスＢからなるリードリクエストを取得すると、物理アドレスＢ’に対応するエントリを検索する。【０１０５】
図１５の左側に示す例では、対応するデータが第２レベルキャッシュに登録されておらず、また、物理アドレスＢ’に対するエントリに他の有効なデータが登録されているため、第２レベルキャッシュ装置にリプレイスが発生する。なお、リプレイス対象となるデータが共有状態であるため、全てのプロセッサコア１００に対して無効化要求を行う。【０１０６】
プロセッサコア１００（第１レベルキャッシュ装置１０２）は、無効化要求（例えば、論理アドレスＡに対する無効化要求）を第２レベルキャッシュ装置２００から取得した場合に、論理アドレスＡに対応するエントリを第１レベルキャッシュタグ（図に示す例では、命令キャッシュタグ部１０４ａ）から検索する。そして、図１５の右側に示すように、プロセッサコア１００は、該当するエントリが存在する場合には、当該エントリに登録されたデータを削除する。ここで、タグに記録されたデータを読み出す場合にエラーが発生すると、ヒットしたか否かが不明となり、削除対象か否かを判定することができない。【０１０７】
そこで、プロセッサコア１００は、物理アドレスＡ’および論理アドレスＡからなる無効化要求のエラー応答を第２レベルキャッシュ装置２００に渡す。エラー応答を取得した第２レベルキャッシュ装置２００は、論理アドレスＡによって第１レベルキャッシュタグ写し部２０４ｃを検索し、該当データがヒットするか否か、つまり消去対象であるか否かを判定する。データがヒットした場合には、第２コヒーレンシ維持処理部２０３ａは、再度、プロセッサコア１００に対して無効化要求を行うが、この場合は既に消すべき対象が決まっているため、第１レベルキャッシュタグの検索は不要となり、エラーを回避することができる。【０１０８】
続いて、図１６の右側に示すように、無効化要求を行った各プロセッサコアからの無効化応答をコヒーレンシ維持処理部２０３ａが取得し、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃの該当エントリを無効化するとともに、第２レベルキャッシュタグ部２０４ａの第１キャッシュ登録情報５０３にコード「００００（該当データが存在しない旨を示す）」を登録する。【０１０９】
次に、本実施例にかかる第２レベルキャッシュ装置２００の処理について説明する。図１７および図１８は、本実施例にかかる第２レベルキャッシュ装置２００の処理を示すフローチャートである。【０１１０】
同図に示すように、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２からデータのリクエストを取得し（ステップＳ１０１）、リクエストされたデータを保持しているか否かを判定する（ステップＳ１０２）。【０１１１】
第２レベルキャッシュ装置２００がリクエストされたデータを保持していない場合には（ステップＳ１０３，Ｎｏ）、第２レベルキャッシュ装置２００は、主記憶装置３００にアクセスし（ステップＳ１０４）、第２レベルキャッシュ装置２００にリプレイスが発生するか否かを判定する（ステップＳ１０５）。【０１１２】
そして、第２レベルキャッシュ装置２００にリプレイスが発生していない場合には（ステップＳ１０６，Ｎｏ）、第２レベルキャッシュ装置２００は、主記憶装置３００から取得するデータを第２レベルキャッシュデータ部２０４ｂに登録し、第２レベルキャッシュタグ部２０４ａのデータを更新する（ステップＳ１０７）。【０１１３】
一方、第２レベルキャッシュ装置２００にリプレイスが発生した場合には（ステップＳ１０６，Ｙｅｓ）、第２レベルキャッシュ装置２００はｃｌｅａｎか否かを判定し（ステップＳ１０８）、ｃｌｅａｎである場合には（ステップＳ１０９，Ｙｅｓ）、第２レベルキャッシュ装置２００のデータを消去し（ステップＳ１１０）、ステップＳ１０７に移行する。なお、ｃｌｅａｎでない場合には（ステップＳ１０９，Ｎｏ）、第２レベルキャッシュ装置２００のデータをライトバックし（ステップＳ１１１）、ステップＳ１０７に移行する。【０１１４】
ステップＳ１０７の後、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２においてリプレイスが発生するか否かを判定し（ステップＳ１１２）、第１レベルキャッシュ装置１０２にリプレイスが発生しない場合には（ステップＳ１１３，Ｎｏ）、第１レベルキャッシュ装置１０２にデータを登録し、第１レベルキャッシュタグおよび第１レベルキャッシュタグ写し部２０４ｃのデータを更新する（ステップＳ１１４）。【０１１５】
一方、第１レベルキャッシュ１０２においてリプレイスが発生する場合には（ステップＳ１１３，Ｙｅｓ）、第１レベルキャッシュデータはｃｌｅａｎか否かを判定し（ステップＳ１１５）、ｃｌｅａｎである場合には（ステップＳ１１６，Ｙｅｓ）、第１レベルキャッシュデータを消去して（ステップＳ１１７）、ステップＳ１１２に移行する。なお、ｃｌｅａｎでない場合には（ステップＳ１１６，Ｎｏ）、第１レベルキャッシュデータをライトバックし（ステップＳ１１８）、ステップＳ１１２に移行する。【０１１６】
ところで、ステップＳ１０３において、第２レベルキャッシュ装置２００がデータを保持している場合には（ステップＳ１０３，Ｙｅｓ）、シノニムか否かを判定し（ステップＳ１１９）、シノニムでない場合には（ステップＳ１２０，Ｎｏ）、ステップＳ１１２に移行する。【０１１７】
なお、シノニムの場合には（ステップＳ１２０，Ｙｅｓ）、第２レベルキャッシュ装置２００は、第１レベルキャッシュデータが共有（複数のプロセッサコアによって共有されている）か否かを判定し（ステップＳ１２１）、共有でない場合には（ステップＳ１２２，Ｎｏ）、ステップＳ１１５に移行する。【０１１８】
第１レベルキャッシュデータが共有の場合には（ステップＳ１２２，Ｙｅｓ）、第１レベルキャッシュデータを消去し（ステップＳ１２３）、正常に消去が終了した場合には（ステップＳ１２４，Ｙｅｓ）、ステップＳ１１２に移行する。一方、正常に消去が終了しなかった場合には（ステップＳ１２４，Ｎｏ）、第１レベルキャッシュタグ写し部２０４ｃを検索し、ヒットした場合に、対応するデータを強制消去して（ステップＳ１２５）、ステップＳ１１２に移行する。【０１１９】
このように、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２とのコヒーレンシを維持しつつ、プロセッサコア１００からのリードリクエストに対する処理を適切に実行することができる。【０１２０】
上述してきたように、本実施例にかかる第２レベルキャッシュ装置２００は、第２レベルキャッシュタグ部２０４ａに第２レベルキャッシュデータ部２０４ｂの登録情報に対応付けて、第１レベルキャッシュ装置１０２（およびその他の第１レベルキャッシュ装置）に対するデータの登録情報の一部を記録し、第１レベルキャッシュタグ写し部２０４ｃに第１レベルキャッシュ装置１０２に対するデータの登録情報を記録し、コヒーレンシ維持処理部２０３ａが、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃに記録された情報を使用して第１レベルキャッシュ装置１０２と第２レベルキャッシュ装置２００との間でコヒーレンシを維持するので、第２レベルキャッシュタグ部２０４ａに記録されたデータの使用効率を高めることができ、第２レベルキャッシュ装置２００の限られた資源を有効に使用することができる。
【産業上の利用可能性】
【０１２１】
以上のように、本発明にかかるコヒーレンシ維持装置およびコヒーレンシ維持方法は、キャッシュメモリのマシンサイクルを高める場合に有用であり、特に、マシンサイクルを高めた場合であっても、キャッシュメモリに記録されたデータの使用効率を高め、資源を有効に利用する場合に適している。
【図１】
2007094046.tif 000003
【図２】
2007094046.tif 000004
【図３】
2007094046.tif 000005
【図４】
2007094046.tif 000006
【図５】
2007094046.tif 000007
【図６】
2007094046.tif 000008
【図７】
2007094046.tif 000009
【図８】
2007094046.tif 000010
【図９】
2007094046.tif 000011
【図１０】
2007094046.tif 000012
【図１１】
2007094046.tif 000013
【図１２】
2007094046.tif 000014
【図１３】
2007094046.tif 000015
【図１４】
2007094046.tif 000016
【図１５】
2007094046.tif 000017
【図１６】
2007094046.tif 000018
【図１７】
2007094046.tif 000019
【図１８】
2007094046.tif 000020
【図１９】
2007094046.tif 000021
【手続補正書】
【提出日】平成20年5月15日(2008.5.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、
所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、
前記第１の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第２の記録手段と、
を備えたことを特徴とするコヒーレンシ維持装置。
【請求項２】
前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持手段を更に備え、前記第１の記録手段に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持手段は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録手段に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項３】
前記コヒーレンシ維持手段は、リードリクエストに含まれる物理アドレスおよび論理アドレスを利用して、前記第１の記録手段に記録された登録情報の一部と前記第２の記録手段に記録された前記登録情報の残りの部分とを同時にアクセスすることを特徴とする請求項２に記載のコヒーレンシ維持装置。
【請求項４】
前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、前記第２の記録手段に記録された登録情報の残りの部分を基にしてエラーの発生したデータを修正するエラー修正手段を更に備えたことを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項５】
前記エラー修正手段は、前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、当該エラーの発生したデータを消去するか否かを前記第２の記録手段に記録された登録情報の残りの部分を基に判定し、判定結果に基づいてエラーの発生したデータを消去することを特徴とする請求項４に記載のコヒーレンシ維持装置。
【請求項６】
前記第１の記録手段は、第２のキャッシュメモリに対するデータの登録状態を示す情報と、前記登録情報の一部とを対応付けて記録することを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項７】
前記第１の記録手段は、リードリクエストにヒットしたか否かを判定する情報、当該第１の記録手段に記録されたデータが有効か否かの情報、シノニムか否かを判定する情報および前記登録情報の一部を対応付けて記録することを特徴とする請求項６に記載のコヒーレンシ維持装置。
【請求項８】
前記第１の記録手段が記録する登録情報の一部は複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットによって前記第１のキャッシュメモリに記録されたデータの登録状態を把握し、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持することを特徴とする請求項２〜７のいずれか一つに記載のコヒーレンシ維持装置。
【請求項９】
第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、
所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を第１の記録装置に記録する第１の記録工程と、
前記第１の記録装置よりも少ないエントリ数を有し、前記登録情報の残りの部分を第２の記録装置に記録する第２の記録工程と、
を含んだことを特徴とするコヒーレンシ維持方法。
【請求項１０】
前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持工程を更に含み、前記第１の記録装置に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持工程は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録装置に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする請求項９に記載のコヒーレンシ維持方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置およびコヒーレンシ維持方法に関するものである。
【背景技術】
【０００２】
ＣＰＵ（Central  Processing  Unit）は、主記憶装置間に発生するデータ遅延問題の解決手段として、キャッシュメモリを利用している。キャッシュメモリは、主記憶装置に対して階層構造をなしており、現在では複数階層のキャッシュメモリが用いられている。
【０００３】
キャッシュメモリはＣＰＵから近い順に、第１レベルキャッシュおよび第２レベルキャッシュとよばれている。一般的にキャッシュメモリは、ＣＰＵに近いほど高速にアクセスできるが容量は小さく、主記憶装置に近いほどアクセスは低速だが容量は大きくなるように構成されている。
【０００４】
また、従来にかかるキャッシュメモリは、第１レベルキャッシュに対するタグの写しを第２レベルキャッシュに保持させ、第２レベルキャッシュが第１レベルキャッシュのタグの写しを利用し、第１レベルキャッシュのタグの情報を取得することによって、第１レベルキャッシュおよび第２レベルキャッシュ間の相互矛盾を無くしている（コヒーレンシを維持している）。
【０００５】
図１９は、従来の第１レベルキャッシュの状態を得るまでのステージを示す図である。同図に示すように、従来では、物理インデックスで第２レベルキャッシュのタグにアクセスした場合に、第２レベルキャッシュに含まれる仮想インデックスを利用して第１レベルキャッシュのタグの写しにアクセスし（つまり、２段階アクセスし）、第１レベルキャッシュの登録状態を把握することによって、第１レベルキャッシュおよび第２レベルキャッシュの相互矛盾を無くしている。
【０００６】
なお、特許文献１では、キャッシュに含まれる各キャッシュラインに状態ビットフィールドなどを関連付けて、キャッシュライン状態のデコード効率を向上させる技術が公開されており、特許文献２では、共用の第２レベルキャッシュに包含ビット、命令ビットおよびデータビットを有するディレクトリを含ませることでデータキャッシュの包含を追跡可能とする技術が公開されている。
【０００７】
また、特願２００４−２２２４０１号明細書では、第２レベルキャッシュに第１レベルキャッシュのタグの写しを統合させることにより、第２レベルキャッシュのタグの検索結果を用いて第１レベルキャッシュのタグの写しを検索することができ、２段階アクセスによるディレイを削減可能とする技術が公開されている。
【０００８】
【特許文献１】特開平１０−３０１８５０号公報
【特許文献２】特開平８−２３５０６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した特願２００４−２２２４０１号明細書による方式では、２段階アクセスを削減でき、キャッシュメモリのマシンサイクルの高速化が可能となる一方で、キャッシュメモリが階層構造を取るために、第２レベルキャッシュに統合された第１レベルキャッシュのタグの写しにかかる使用効率が低く、第２レベルキャッシュの限られた資源を効率よく利用できていないという問題があった。
【００１０】
これは、第１レベルキャッシュの容量と比較して第２レベルキャッシュの容量が大きいこと、すなわち、第１レベルキャッシュと第２レベルキャッシュとのエントリ数の差に起因する。第１レベルキャッシュのタグを第２レベルキャッシュのタグに含めようとすれば、原理的に相互の容量差の分だけ絶対に使用されない部分が発生する。例えば、第１レベルキャッシュが２ｋエントリであるのに対し、第２レベルキャッシュが９６ｋエントリ持つとすると、第２レベルキャッシュ内で使用される第１レベルキャッシュのタグの写し部分は、最大で２％の使用効率となる。
【００１１】
さらに、近年の半導体技術の向上により、最近のＣＰＵはマルチコアで構成されている。マルチコアからアクセスされる第２レベルキャッシュは、シングルコアの時よりもエントリ数の差が小さくなるが、第１レベルキャッシュの写しに必要な情報量が増大するため、結果として、統合されたタグの使用効率が低下してしまい、この問題は更に深刻なものとなる。
【００１２】
また、使用効率を向上させるべく、上述した特許文献１または特許文献２に開示されている手法を利用することも考えられるが、特許文献１および特許文献２では、第１レベルキャッシュの登録状態を把握するために、２段階アクセスを行う必要があるので、２段階アクセスによるディレイの問題が発生し、マシンサイクルを高速化することが困難となる。
【００１３】
すなわち、２段階アクセスにより発生するディレイをなくしてマシンサイクルを向上させると共に、キャッシュメモリの限られた資源を効率よく利用することが極めて重要な課題となっている。
【００１４】
本発明は、上記に鑑みてなされたものであって、２段階アクセスにより発生するディレイをなくしてマシンサイクルを向上させ、キャッシュメモリの資源を効率よく利用することができるコヒーレンシ維持装置およびコヒーレンシ維持方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、前記第１の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第２の記録手段と、を備えたことを特徴とする。
【００１６】
また、本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を第１の記録装置に記録する第１の記録工程と、前記第１の記録装置よりも少ないエントリ数を有し、前記登録情報の残りの部分を第２の記録装置に記録する第２の記録工程と、を含んだことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、所定のエントリ数を有し、第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、第１の記録手段より少ないエントリ数を有し、登録情報の残りの部分を記録する第２の記録手段とを有し、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するので、第１の記録手段に記録されたデータの使用効率を高めることができ、資源を有効に使用することができる。
【００１８】
また、本発明によれば、第２のキャッシュメモリに対するリードリクエストを取得した場合に、第１の記録手段からリードリクエストに該当するデータの登録情報の一部を読み出して、第１のキャッシュメモリと第２のキャッシュメモリとのコヒーレンシを維持するので、２段階アクセスをなくし、マシンサイクルを高速化することができる。
【００１９】
また、本発明によれば、第２のキャッシュメモリに対するリードリクエストを取得した場合に、該当するデータが複数の第１のキャッシュメモリによって共有されている場合に、第２の記録手段に記録された登録情報の残りを基にして、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するので、第１レベルキャッシュの登録情報を分割して保持し、資源の効率化を図った場合であっても、適切に第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持することができる。
【００２０】
また、本発明によれば、第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、第２の記録手段に記録された登録情報の残りの部分を利用してエラーを修正するので、第１のキャッシュメモリに記録されたデータのエラーを適切に修正することができる。
【発明を実施するための最良の形態】
【００２１】
以下に、本発明にかかるコヒーレンシ維持装置およびコヒーレンシ維持方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２２】
まず、本発明の特徴について従来技術と比較して説明する。本発明では、第２レベルキャッシュのタグ部に第１レベルキャッシュに対するデータの登録情報の一部（以下、第１キャッシュ登録情報と表記する）を保持させると共に、第１レベルキャッシュの登録状態を把握するための詳細な情報（あるいは、第１レベルキャッシュに対するデータの登録情報の残り；以下、第１キャッシュ詳細情報）を、第２レベルキャッシュのタグ部と同タイミングで検索するように構成する。
【００２３】
第１キャッシュ登録情報は、第２レベルキャッシュがリードリクエストを取得した場合に、リードリクエストに該当するデータが複数の第１レベルキャッシュ（プロセッサコア）によって共有されているか否かの情報（以下、共有情報）が含まれている。データが複数の第１レベルキャッシュに共有されていない場合には、この第１レベルキャッシュ登録情報は、該当データを保持している第１レベルキャッシュの識別情報やデータの登録情報（例えば、プロセッサコア１のオペランドウェイ０に、更新型で登録されているなどの情報）を記録している。
【００２４】
すなわち、リードリクエストに該当するデータが、複数のプロセッサコアに共有されていない場合には、第１キャッシュ登録情報によって第１レベルキャッシュに対するデータの登録情報を得ることができる。また、データが複数のプロセッサコアに共有されている場合には、第１キャッシュ詳細情報を参照して、各プロセッサコアに対するデータの登録情報を取得し、第１レベルキャッシュと第２レベルキャッシュとの間でコヒーレンシを維持することとなる。
【００２５】
図１は、本発明に対する第１レベルキャッシュの登録状態を把握するまでのステージを示す図である。同図に示すように、物理アドレスで第２レベルキャッシュのタグ部をアクセスした場合に、アクセスした第２レベルキャッシュのタグ部に第１キャッシュ登録情報が含まれているため、迅速に第１レベルキャッシュの登録情報を把握することができる。
【００２６】
また、本発明では、必要に応じて（すなわち、第１レベルキャッシュの詳細な情報が必要な場合）、物理アドレスおよび論理アドレスによって、第２レベルキャッシュのタグ部に対するアクセスと同タイミングで、第１キャッシュ詳細情報にアクセスするので、特許文献１および特許文献２のような２段階アクセスを回避し、マシンサイクルを高速化することができる。
【００２７】
図２は、本発明による第２レベルキャッシュのタグ部の使用効率の改善について説明するための説明図である。図２の左側は、従来の第２レベルキャッシュのタグ部の一例（特願２００４−２２２４０１号明細書にかかる第２レベルキャッシュのタグ部の一例）を示しており、図２の右側は、本発明の第２レベルキャッシュのタグ部の一例を示している。
【００２８】
図２の左側に示すように、従来の第２レベルキャッシュのタグ部には、第１レベルキャッシュの詳細な情報として、第２レベルキャッシュのエントリごとに８ビットずつ第２レベルキャッシュのタグ部の記憶領域を使用していた。なお、ここでは、プロセッサコアが２個、第１レベルキャッシュは２ウェイ・命令オペランドセパレートキャッシュを仮定しているが、このフィールドは、プロセッサコアの数、第１レベルキャッシュのウェイ数に比例して増加することとなる。
【００２９】
一方、図２の右側に示すように、本発明の第２レベルキャッシュのタグ部では、第１レベルキャッシュの詳細な情報を記録しておらず（８ビットで記憶しておらず）、第１キャッシュ登録情報として５ビット記録しているので、従来に比べて記憶容量を有効に利用することができる。ここでは、エントリごとに第１キャッシュ登録情報を５ビットずつ記録しているので従来よりも３ビットずつ少なく記録されている。
【００３０】
また、第２レベルキャッシュのタグ部とは別に、第１キャッシュ詳細情報を第１レベルキャッシュタグ写し部に記録している。このように、第１レベルキャッシュの詳細な情報（登録情報の残り）を第２レベルキャッシュのタグ部以外に記録しているので、第２レベルキャッシュのタグ部に対する使用効率が向上する。
【００３１】
従来の第２レベルキャッシュのタグ部に比べて、本発明の第２レベルキャッシュのタグ部は、各エントリに対して３ビットずつ少なく構成されているので、第２レベルキャッシュのタグの総エントリ数を９６ｋとすると、２８８ｋビット（３ビット×９６ｋ）第２レベルキャッシュのタグ部の記憶容量を有効に利用していることとなる。
【００３２】
また、第１レベルキャッシュタグ写し部に記録された第１キャッシュ詳細情報が１０ビットで構成されているとすれば、この第１レベルキャッシュタグ写し部に要する記憶容量は、１６０ｋビット（２ｋ×１０ビット×８）となる（ここでは、２ウェイの命令キャッシュおよびオペランドキャッシュがプロセッサ２個分あるため、８が乗算されている）。
【００３３】
すなわち、第１レベルキャッシュタグ写し部に記録された第１キャッシュ詳細情報を考慮した場合でも、従来の第２レベルキャッシュよりも、資源を有効に利用することができる。
【００３４】
次に、本実施例にかかるシステムの構成について説明を行う。図３は、本実施例にかかるシステムの構成を示す図である。同図に示すように、このシステムは、第２レベルキャッシュ装置２００が、第１レベルキャッシュ装置を持つプロセッサコア１００，１１０といった複数のコアに接続されており、主記憶装置３００へは、他の第２レベルキャッシュ装置２２０〜２ｍ０（ｍは自然数）と共に、データバス４００によって接続されている。ここでは、説明の便宜上、プロセッサコア１００，１００、第２レベルキャッシュ装置２００、主記憶装置３００に着目して説明を行う。
【００３５】
なお、本実施例のシステムにおける連想方式は、２種類のウェイ（ウェイ０およびウェイ１）を持つ２ウェイセットアソシエイティブ方式であり、プロセッサコア数を２個とするが、本発明は、ウェイ数、連想方式、プロセッサコアの数によって制限されるものではない。
【００３６】
次に、本実施例にかかるプロセッサコア（プロセッサコアには第１レベルキャッシュ装置が含まれる）、第２レベルキャッシュ装置および主記憶装置の構成について説明する。図４は、本実施例にかかるプロセッサコア、第２レベルキャッシュ装置および主記憶装置の構成を示す図である。同図に示すように、第２レベルキャッシュ装置２００は、プロセッサコア１００，１１０に接続され、データバス４００によって主記憶装置３００に接続される。
【００３７】
プロセッサコア１００，１１０は、命令実行制御部１０１と第１レベルキャッシュ装置１０２を有する。なお、プロセッサコア１００およびプロセッサコア１１０の構成要素に関する説明は、同様であるため、以下では、プロセッサコア１００の説明を行い、プロセッサ１１０の説明は省略する。
【００３８】
命令実行制御部１０１は、第１レベルキャッシュ装置１０２に論理アドレスを渡し、論理アドレスに対応するデータを第１レベルキャッシュ装置１０２から取得すると共に、取得したデータを基に所定の処理を実行する処理部である。
【００３９】
第１レベルキャッシュ装置１０２は、命令実行制御部１０１から論理アドレス情報を取得した場合に、取得した論理アドレス情報に対応するデータを検索し、検索したデータを命令実行制御部１０１に渡す装置である。図４に示すように、第１レベルキャッシュ装置１０２は、第１レベルキャッシュ制御部１０３および記憶部１０４を有する。
【００４０】
第１レベルキャッシュ制御部１０３は、アドレス変換処理部１０３ａ、検索処理部１０３ｂ、エラー検出部１０３ｃを有する。アドレス変換処理部１０３ａは、命令実行処理部１０１から論理アドレス情報を取得した場合に、取得した論理アドレス情報を物理アドレス情報に変換する処理部である。
【００４１】
図５は、論理アドレス情報のデータ構造の一例を示す図である。同図に示すように、この論理アドレスＡは、論理アドレス上位ビットＡ１、第１レベルキャッシュインデックスＡ２、論理アドレス下位ビットＡ３を有する。論理アドレス上位ビットＡ１に格納された情報は、物理アドレスに変換された後、命令実行制御部１０１に要求されたデータにヒットしたか否かを判定するために利用される。
【００４２】
第１レベルキャッシュインデックスＡ２は、第１レベルキャッシュ装置１０２の記憶部１０４に記憶されたタグのエントリ位置を特定するための情報が格納される。なお、論理アドレス下位ビットＡ３には、その他の情報が格納される。
【００４３】
続いて、アドレス変換処理部１０３ａが論理アドレス情報を変換して生成する物理アドレス情報について説明する。図６は、物理アドレスＡ’のデータ構造の一例を示す図である。同図に示すように、この物理アドレスＡ’は、物理アドレス上位ビットＡ１’、第２レベルキャッシュインデックスＡ２’、物理アドレス下位ビットＡ３’を有する。
【００４４】
物理アドレス上位ビットＡ１’は、タグ比較アドレスが格納される。このタグ比較アドレスは、データがヒットしたか否かを判定するために利用されるアドレスである。具体的には、図５に示した第１レベルキャッシュインデックスＡ２によって特定されるタグに格納された物理アドレスと、タグ比較アドレスとが等しければ、データがヒットしたことになり、等しくなければ、データがヒットしなかったことになる。
【００４５】
第２レベルキャッシュインデックスＡ２’は、第２レベルキャッシュ装置２００の記憶部２０４に記録されたタグの位置を特定するための情報が格納される。なお、物理アドレス下位ビットＡ３’には、その他の情報が格納される。
【００４６】
検索処理部１０３ｂは、命令実行制御部１０１から要求されたデータ（論理アドレスＡに対応するデータ）が、記憶部１０４に存在するか否かを判定し、要求されたデータが記憶部１０４に存在する場合には、該当データを命令実行処理部１０１に渡す処理部である。
【００４７】
一方、命令実行制御部１０１から要求されたデータが、記憶部１０４に存在しない場合には、検索処理部１０３ｂは、その旨の情報を第２レベルキャッシュ装置に送信する。なお、検索処理部１０３ｂは、記憶部１０４に記録されたデータに対しライトバック処理も行う。
【００４８】
続いて、検索処理部１０３ｂが行う処理について具体的に説明する。検索処理部１０３は、論理アドレスＡに含まれる第１レベルキャッシュインデックスＡ２を基にして、対応するタグを命令キャッシュタグ部１０４ａまたはオペランドキャッシュタグ部１０４ｃから検索する。
【００４９】
命令キャッシュタグ部１０４ａは、命令キャッシュデータ部１０４ｂに登録されたデータの登録情報（タグ）を保持する。命令キャッシュデータ部１０４ｂは、命令キャッシュに登録されたデータを保持する。
【００５０】
オペランドキャッシュタグ部１０４ｃは、オペランドキャッシュデータ部１０４ｄに登録されたデータの登録情報（タグ）を保持する。オペランドキャッシュデータ部１０４ｄは、オペランドキャッシュに登録されたデータを保持する。
【００５１】
本実施例では、以下の説明において、命令キャッシュタグ部１０４ａまたはオペランドキャッシュタグ部１０４ｃに格納されるタグを第１レベルキャッシュタグと表記する。図７は、第１レベルキャッシュタグのデータ構造の一例を示す図である。同図に示すように、この第１レベルキャッシュタグは、第１物理アドレス４００とステータス４０１とを有する。
【００５２】
第１物理アドレス４００は、物理アドレス上位ビットＡ１’（タグ比較アドレス）の比較対象となるアドレスを格納している。検索処理部１０３ｂは、第１物理アドレス４００に格納されるアドレスと物理アドレス上位ビットＡ１’に格納されるアドレスとを比較し、両者が一致した場合には、命令実行制御部１０１が要求するデータにヒットしたと判定する。そして、検索処理部１０３ｂは、対応するデータを命令実行制御部１０１に渡す。
【００５３】
一方、両者が一致しない場合には、検索処理部１０３ｂは、命令実行制御部１０１が要求するデータにヒットしないと判定する。ステータス４０１は、第１レベルキャッシュタグが有効か否か、データが更新されたか否かなどの情報を格納する。
【００５４】
検索処理部１０３ｂは、第１レベルキャッシュタグの第１物理アドレス４００と、物理アドレス上位ビットＡ１’とが一致しないと判定した場合には、命令実行制御部１０１に要求されたデータが第１レベルキャッシュ装置１０２に存在しないこととなるので、検索処理部１０３ｂは、対応するデータを取得すべく、物理アドレスＡ’と、第１レベルキャッシュインデックスＡ２とを第２レベルキャッシュ装置２００に渡す。
【００５５】
エラー検出部１０３ｃは、命令キャッシュタグ部１０４ａ、命令キャッシュデータ部１０４ｂ、オペランドキャッシュタグ部１０４ｃ、オペランドキャッシュデータ部１０４ｄに発生するエラーを検出する処理部である。
【００５６】
エラー検出部１０３ｃがエラーを検出した場合には、第２レベルキャッシュ制御装置２００にエラーが発生した旨を通知すると共に、エラーの発生したデータにかかる第１レベルキャッシュインデックスＡ２およびエラーの発生した第１レベルキャッシュ装置１０２の命令側またはオペランド側のウェイを特定する情報（以下、エラーウェイ特定情報）を第２レベルキャッシュ装置２００に渡す。
【００５７】
第２レベルキャッシュ装置２００は、エラー検出部１０３ｃからエラーウェイ特定情報を取得した場合に、このエラー特定情報に基づいて、対応する第１レベルキャッシュタグ写し部２０４ｃを検索し、第１レベルキャッシュ装置１０２におけるエラーデータを無効化するかライトバックを行うかを判定し、エラー検出部１０３ｃに処理要求を行う。その結果、第１レベルキャッシュ装置１０２からはエラーしたエントリが削除されることになる。すなわち、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２にエラーが発生した場合には、第１レベルキャッシュタグ写し部２０４ｃを参照して、エラーの発生したデータを修正する。
【００５８】
続いて、図４に示した第２レベルキャッシュ装置２００について説明する。この第２レベルキャッシュ装置２００は、第２レベルキャッシュ制御部２０３および記憶部２０４を有する。第２レベルキャッシュ制御部２０３は、第１レベルキャッシュ装置１０２と第２レベルキャッシュ装置２００との一貫性を維持するための処理部である。この第２レベルキャッシュ制御部２０３は、コヒーレンシ維持処理部２０３ａ、エラー処理部２０３ｂを有する。
【００５９】
コヒーレンシ維持処理部２０３は、第１レベルキャッシュ装置１０２からの要求に応じて、該当するデータを記憶部２０４から検索し、検索したデータを第１レベルキャッシュ装置１０２に渡す処理部である。また、コヒーレンシ維持処理部２０３は、第１レベルキャッシュ装置１０２および第２レベルキャッシュ装置２００のコヒーレンシを維持する。また、コヒーレンシ維持処理部２０３は、第２レベルキャッシュ装置２００の記憶部２０４に格納されたデータに対しライトバック処理を行う。
【００６０】
ここで、記憶部２０４は、第２レベルキャッシュタグ部２０４ａ、第２レベルキャッシュデータ部２０４ｂ、第１レベルキャッシュタグ写し部２０４ｃを記憶する記憶部である。第２レベルキャッシュタグ部２０４ａは、第２レベルキャッシュデータ部２０４ｂに登録されたデータの登録情報と第１キャッシュ登録情報とを関連付けて記憶するタグであり。第２レベルキャッシュデータ部２０４ｂは、第２レベルキャッシュに登録されたデータを保持する。
【００６１】
第１レベルキャッシュタグ写し部２０４ｃは、第２レベルキャッシュタグ部２０４ａに記録された第１キャッシュ登録情報補足するための情報を記録するタグである。
【００６２】
エラー処理部２０３ｂは、キャッシュアクセスが正常に行われたか否かを判定し、エラーが発生した場合には、エラーを救済する処理部である。また、エラー処理部２０３ｂは、第１レベルキャッシュ装置１０２にエラーが発生した場合には、第１レベルキャッシュタグ写し部２０４ｃを参照して、エラーの発生したデータを修正する。なお、エラー処理部２０３ｂは、第１レベルキャッシュタグ写し部２０４ｃを参照した場合に、エラーの発生したデータを削除してもよいか否かを判定し、削除してよい場合には、該当するデータを第１レベルキャッシュ装置１０２から強制的に削除する。
【００６３】
主記憶装置３００は、データや所定の処理を実行するためのプログラムを記憶する記憶装置である。この主記憶装置３００は、アクセス制御部３００ａおよびメモリ３００ｂを有する。アクセス制御部３００ａは、第２レベルキャッシュ装置２００、あるいは図示しないハードディスクに対するアクセスを制御する処理部である。メモリ３００ｂは、第２レベルキャッシュ装置あるいはハードディスクから転送されるデータを記憶する記憶部である。
【００６４】
続いて、コヒーレンシ維持処理部２０３ｂの処理について具体的に説明する。コヒーレンシ維持処理部２０３ｂは、第１レベルキャッシュ装置１０２から物理アドレスＡ’と第１レベルキャッシュインデックスＡ２とを取得し、物理アドレスＡ’に含まれる第２レベルキャッシュインデックスＡ２’を基にして、対応するタグを第２レベルキャッシュタグ部２０４ａから検索する。なお、本実施例では、第２レベルキャッシュタグ部２０４に格納されたタグを第２レベルキャッシュタグと表記する。
【００６５】
図８は、第２レベルキャッシュタグのデータ構造の一例を示す図である。同図に示すように、この第２レベルキャッシュタグは、第２物理アドレス５００、ステータス５０１、仮想インデックス５０２、第１キャッシュ登録情報５０３を有する。
【００６６】
コヒーレンシ維持処理部２０３ａは、第２物理アドレス５００に格納されたデータと物理アドレス上位ビットＡ１’に格納された情報とを比較し、両者が一致した場合には、命令実行制御部１０１から要求されたデータが記憶部２０４に格納されていることになる。一方、第２物理アドレス５００に格納されたデータと物理アドレス上位ビットが一致しない場合には、要求されたデータが第２レベルキャッシュ装置２００に存在しないので、コヒーレンシ維持処理部２０３ａは、対応するデータを主記憶装置３００から取得する。
【００６７】
ステータス５０１は、第２レベルキャッシュタグが有効か否かの情報などを格納している。仮想インデックス５０２は、シノニムか否かを判定するための情報が格納されている。コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュインデックスＡ２に格納されたデータと仮想インデックス５０２に格納されたデータとを比較し、両者が等しい場合には、シノニムではないと判定する。
【００６８】
一方、両者が等しくない場合には、コヒーレンシ維持処理部２０３ａは、シノニムであると判定する。コヒーレンシ維持処理部２０３ａがシノニムと判定した場合には、コヒーレンシ維持処理部２０３ａは、第２レベルキャッシュタグに含まれる第２物理アドレス５００、仮想インデックス５０２、第２レベルキャッシュインデックスＡ２’、物理アドレス下位ビットＡ３’、第１キャッシュ登録情報５０３を用いて、第１レベルキャッシュメモリ装置１０２に対してデータの無効化またはライトバックの処理を要求することによって、シノニム対象となるデータを第１レベルキャッシュ装置１０２から削除する。
【００６９】
その後、コヒーレンシ維持処理部２０３ａは、命令実行処理部１０１から要求されたデータを第１レベルキャッシュ装置１０２に渡し、アクセスに使用された情報を仮想インデックス５０２に格納する。
【００７０】
第１キャッシュ登録情報５０３は、第１レベルキャッシュ装置１０２にかかる登録情報を格納する。この第１キャッシュ登録情報を参照することによって、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュ装置１０２の登録状態を把握することができる。ただし、複数のプロセッサコアが同一データを共有している場合には、把握できるのは、複数のプロセッサコアに共有されているという情報だけである。
【００７１】
すなわち、データが複数のプロセッサコアに共有されていない場合には、コヒーレンシ維持処理部２０３ａは、第１キャッシュ登録情報によって第１レベルキャッシュ装置１０２に対するデータの登録状態を得ることができる。しかし、複数のプロセッサコアによってデータが共有されている場合には、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃを参照して、各データの登録情報を取得する必要がある。
【００７２】
図９は、第１キャッシュ登録情報５０３に格納されるコードの意味を示す図である。なお、第１キャッシュ登録情報５０３は５ビットで構成されており、内４ビットは図９に示すような意味づけとなる。
【００７３】
残りの１ビットは、プロセッサコアの識別に利用される。例えば、プロセッサコア１００が保持している場合には「０」が格納され、プロセッサコア１１０が保持している場合には、「１」が格納される。ただし、他の４ビットが「０００１」の場合を除く。
【００７４】
なお、第２レベルキャッシュタグがプロセッサコア１００，１１０から共有されている場合は、第１キャッシュ登録情報５０３には「０００１」が格納される。これは、それぞれのプロセッサコア１００，１１０が同一の第２レベルキャッシュタグが示すデータを持つが、第１レベルキャッシュ装置１０２にどのような状態で登録されているかわからない。つまり、命令・オペランド側、またウェイに関する情報が不足している。ただし、データが共有されている以上、そのデータそのものは共有型であることが保障されている。
【００７５】
このように、複数のプロセッサコアから共有されている状態を１コードで表すことにより、第２レベルキャッシュタグ部２０４ａの情報量を削減することができる。なお、本実施例では一例として、第１キャッシュ登録情報５０３が５ビットで構成される例を示すが、これに限定されるものではなく、第１キャッシュ登録情報５０３をどのようなビット数で構成してもよい。
【００７６】
なお、図９において、「更新型」とは、第１レベルキャッシュ装置１０２にかかるデータが書換えられている可能性があることを示し、「共有型」とは、第１レベルキャッシュ装置１０２にかかるデータが書換えられていないことを示す。また、データの書換えは、オペランドキャッシュのみ発生する。コヒーレンシ維持処理部２０３ａは、図８に示した第２レベルキャッシュタグが有する第１キャッシュ登録情報５０３を参照することによって、高速に第１レベルキャッシュ装置１０２の登録状態を把握することができる。
【００７７】
続いて、第１レベルキャッシュタグの写し部２０４ｃが保持する第１キャッシュ詳細情報のデータ構造について説明する。図１０は、第１キャッシュ詳細情報のデータ構造の一例を示す図である。同図に示すように、この第１キャッシュ詳細情報は、第２レベルキャッシュアドレス６００、第２キャッシュウェイ６０１、ステータス６０２を有する。
【００７８】
第１キャッシュ詳細情報は、第１レベルキャッシュの一つのウェイに対応している。したがって、２ウェイの命令キャッシュおよびオペランドキャッシュがプロセッサコア２個分あるシステムにおいては、第１キャッシュ詳細情報を８組使用することになる。コヒーレンシ維持処理部２０３ａは、論理アドレスによって、第１レベルキャッシュタグ写し部２０４ｃに格納された第１キャッシュ詳細情報にアクセスする。
【００７９】
第２レベルキャッシュアドレス６００は、第２レベルキャッシュタグ部２０４ａの検索などにインデックスとして使用する物理アドレスと、第１レベルキャッシュタグ写し部２０４ｃの検索にインデックスとして使用する論理アドレスとの差分が格納される。
【００８０】
例えば、物理アドレスＡ’がビット[４０：０]（４０ビット目〜０ビット目）からなり、第２レベルキャッシュインデックスＡ２’が、ビット[１８：１０]からなり、第１レベルキャッシュインデックスＡ２が、ビット[１５：７]からなり、論理アドレスと物理アドレスとの共通部がビット[１２：０]とすると、第２レベルキャッシュアドレス６００は、物理アドレスＡ’のビット[１８：１３]を格納する。
【００８１】
コヒーレンシ維持処理部２０３ａは、第２レベルキャッシュアドレス６００に格納された情報が命令実行制御部１０１から要求された物理アドレスＡ’と一致し、かつ、第２キャッシュウェイ６０１に格納された情報が物理アドレスＡ’で第２レベルキャッシュ装置２００を検索した結果ヒットしたウェイと等しい場合、第１レベルキャッシュタグ写し部２０４に対応する第１レベルキャッシュの情報が得られる。
【００８２】
ところで、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃに格納された情報を利用して、第２レベルキャッシュタグ（図８に示す）が複数のプロセッサコアに共有されている状態（コード０００１）から他の状態に遷移させる。
【００８３】
例えば、第１レベルキャッシュ装置１０２に記録されたデータが、リプレイスのために消去され、共有状態が解消されるエントリ（第２レベルキャッシュタグ）が存在するとする。もしも、第１レベルキャッシュタグ写し部２０４ｃがない場合、コヒーレンシ維持処理部２０３ａは、その解消されるエントリを探すために第２レベルキャッシュ装置２００に記録されたデータを走査する必要がある。
【００８４】
なぜならば、第１レベルキャッシュタグは論理アドレスで検索され、第２レベルキャッシュタグは物理アドレスで検索されるためである。つまり、インデックスに用いられるアドレスから共通な部分を除いた差分によって示されるエントリに、該当するデータが登録されている可能性があるからである。
【００８５】
しかし、第１レベルキャッシュタグ写し部２０４ｃが記録する第１キャッシュ詳細情報を参照することによって、迅速に第１キャッシュ登録情報を更新することができる。
【００８６】
また、本発明では、第２レベルキャッシュタグが複数のプロセッサコアによって共有されている（コード０００１）状態から他の状態に遷移する際にエラーが発生した場合には、エラー処理部２０３ｂは、第１キャッシュ詳細情報を利用してエラー処理を実行する。
【００８７】
第２レベルキャッシュ装置２００がリプレイスをおこなう場合、キャッシュメモリが階層構造になっているため、第１レベルキャッシュ装置１０２からもデータブロックを消去する必要がある。このとき、コヒーレンシ維持処理部２０３ａは、そのデータブロックが複数のプロセッサコアで共有されている（コード０００１）状態である場合には、両方のプロセッサコア（例えば、プロセッサコア１００，１１０）に対して、データの無効化要求を発行する。
【００８８】
第２レベルキャッシュ装置２００から無効化要求を取得した第１レベルキャッシュ装置１０２は、第１レベルキャッシュタグを検索し、ヒットしたウェイに登録されたデータを消去する。なぜならば、第１レベルキャッシュタグ写し部２０４ｃを検索する際に利用する論理アドレスは、第２レベルキャッシュのリプレイス対象となっているエントリの論理アドレスと異なっているために、その結果が使用できないためである。この時点で第１レベルキャッシュタグにエラーが発生すると、エラーの発生したタグに対応するデータブロックを消去すべきか否かの判断ができなくなる。
【００８９】
そこで、第１レベルキャッシュタグにエラーが発生した場合には、第１レベルキャッシュ装置１０２は、エラー報告およびエラーの発生したタグの論理アドレスを第２レベルキャッシュ装置２００に送信し、第２レベルキャッシュ装置２００が、受信した論理アドレスに対応するタグの情報を第１レベルキャッシュタグ写し部２０４ｃから検索することによってエラーリカバリーを実行する。第１レベルキャッシュタグ写し部２０４ｃに対する検索においてデータがヒットした場合には、第２レベルキャッシュ装置２００は、再び、第１レベルキャッシュ装置に無効化要求を行う。第１レベルキャッシュタグ写し部２０４ｃのデータにヒットしたため、エラーの発生したタグに対する情報が得られているため、第１レベルキャッシュタグの検索を行うことなく、第２レベルキャッシュ装置２００は、無効化要求を実行することができる。
【００９０】
次に、コヒーレンシ維持処理部２０３ａが、プロセッサコアからのリードリクエストを取得した場合の処理について説明する。図１１は、プロセッサコアからのリードリクエストによるタグ登録情報の遷移を説明するための説明図である。
【００９１】
図１１の左側に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＡ’、論理アドレスＡからなるリードリクエストを取得すると、物理アドレスＡ’に対応するエントリを第２レベルキャッシュタグ部２０４ａから検索する。同図に示す例では、第２レベルキャッシュタグ部２０４ａの物理アドレスＡ’にデータが登録されており、ステータスが有効（Valid）なので、ヒットとなる。第１レベルキャッシュ装置１０２には有効なデータが登録されていないため、第１レベルキャッシュタグ写し部２０４ｃには、論理アドレスに対応する有効なデータは存在していない。
【００９２】
第１レベルキャッシュ装置１０２がリードリクエストしたデータを、例えば、命令キャッシュのウェイ０に登録した場合には、コヒーレンシ維持処理部２０３ａは、図１１の右側に示すように、仮想インデックス５０２に論理アドレスＡを登録し、第１キャッシュ登録情報５０３の１ビット目にプロセッサコア１００の識別情報「０」を登録し、２ビット目〜５ビット目にコード１０００（命令ウェイ０に、共有型で登録されている；図９参照）を登録する。
【００９３】
また、コヒーレンシ維持処理部２０３ａは、論理アドレスＡに対応する第１レベルキャッシュタグ写し部２０４ｃにおけるエントリの第２レベルキャッシュアドレス６００に、上述した物理アドレスＡ’と論理アドレスＡとの差分を登録するとともに、第２キャッシュウェイ６０１に「ウェイ０（Ｗａｙ０）」を登録し、ステータス６０２に「有効（Ｖａｌ）」を登録する。
【００９４】
次に、シノニム状態となった場合のコヒーレンシ維持処理部２０３ａの処理について説明する。図１２は、シノニム状態からのタグ登録情報の遷移を説明するための説明図である。
【００９５】
図１２の左側に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＡ’、論理アドレスＢからなるリードリクエストを取得すると、物理アドレスＡ’に対応するエントリを第２レベルキャッシュタグ部２０４から検索する。同図に示す例では、第２レベルキャッシュタグ部２０４ａの物理アドレスＡ’にデータが登録されており、ステータスが有効なので、ヒットとなる。
【００９６】
しかし、仮想インデックス５０２には論理アドレスＡが登録されているため、リードリクエストに含まれる論理アドレスＢと異なり、シノニムヒットとなる。シノニムヒットとなった場合には、コヒーレンシ維持処理部２０３ａは、論理アドレスＡに対応するエントリの無効化を第１レベルキャッシュ装置１０２に要求する。
【００９７】
第１レベルキャッシュ装置１０２による論理アドレスＡに対するエントリの無効化が完了した場合に、コヒーレンシ維持処理部２０３ａは、図１２の右側に示すように、第１レベルキャッシュタグ写し部２０４ｃに登録されたデータを更新する。具体的には、コヒーレンシ維持処理部２０３ａは、第２レベルキャッシュタグ部２０４ａの仮想インデックス５０２に論理アドレスＢを登録する。また、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃに登録された情報を更新する。すなわち、論理アドレスＡに対するエントリを無効化するとともに、論理アドレスＢに対応する第２レベルキャッシュアドレス６００、第２レベルキャッシュウェイ６０１、ステータス６０３にそれぞれ、「物理アドレスＡ’と論理アドレスＢとの差分」、「ウェイ０」、「有効」を登録する。
【００９８】
次に、コヒーレンシ維持処理部２０３ａが、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃにおけるプロセッサコア間の共有状態を他の状態へ遷移させる処理について説明する。図１３および図１４は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図である。
【００９９】
図１３の左側に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＢ’、論理アドレスＢからなるリードリクエストを取得すると、物理アドレスＢ’に対応するエントリを第２レベルキャッシュタグ部２０４ａから検索する。同図に示す例では、第２レベルキャッシュタグ部２０４ａにおいて、物理アドレスＡ’に対するデータがヒットしたが、第１レベルキャッシュタグ写し部２０４の論理アドレスＢに対応するエントリに、論理アドレスＡに対する有効なデータが登録されているため、リプレイスが発生する。コヒーレンシ維持処理部２０３ａは、物理アドレスＢ’に登録されたデータおよび論理アドレスＡのデータ無効化要求をプロセッサコア１００に渡す。
【０１００】
図１３の右側（図１４の左側も同様）に示すように、状態遷移の途中では、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃはともに更新されているが、リプレイスされた論理アドレスＡに関する情報はまだ古いまま（コード０００１）である。
【０１０１】
続いて、図１４の右側に示すように、コヒーレンシ維持処理部２０３ａは、プロセッサコア１００から論理アドレスＡ（物理アドレスＡ’）の無効化要求に対する応答（以下、無効化応答と表記する）を取得する。コヒーレンシ維持処理部２０３ａは、無効化応答に含まれる論理アドレスＡによって第１レベルキャッシュタグ写し部２０４ｃを検索し、論理アドレスＡを持っている第１レベルキャッシュの状態を把握し、把握した情報によって、物理アドレスＡ’に対するエントリの第１キャッシュ登録情報を更新する。
【０１０２】
次に、登録状態遷移中にエラーが発生した場合の処理について説明する。図１５および図１６は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図である。同図に示すように、コヒーレンシ維持処理部２０３ａが、プロセッサコア１００から物理アドレスＢ’、論理アドレスＢからなるリードリクエストを取得すると、物理アドレスＢ’に対応するエントリを検索する。
【０１０３】
図１５の左側に示す例では、対応するデータが第２レベルキャッシュに登録されておらず、また、物理アドレスＢ’に対するエントリに他の有効なデータが登録されているため、第２レベルキャッシュ装置にリプレイスが発生する。なお、リプレイス対象となるデータが共有状態であるため、全てのプロセッサコア１００に対して無効化要求を行う。
【０１０４】
プロセッサコア１００（第１レベルキャッシュ装置１０２）は、無効化要求（例えば、論理アドレスＡに対する無効化要求）を第２レベルキャッシュ装置２００から取得した場合に、論理アドレスＡに対応するエントリを第１レベルキャッシュタグ（図に示す例では、命令キャッシュタグ部１０４ａ）から検索する。そして、図１５の右側に示すように、プロセッサコア１００は、該当するエントリが存在する場合には、当該エントリに登録されたデータを削除する。ここで、タグに記録されたデータを読み出す場合にエラーが発生すると、ヒットしたか否かが不明となり、削除対象か否かを判定することができない。
【０１０５】
そこで、プロセッサコア１００は、物理アドレスＡ’および論理アドレスＡからなる無効化要求のエラー応答を第２レベルキャッシュ装置２００に渡す。エラー応答を取得した第２レベルキャッシュ装置２００は、論理アドレスＡによって第１レベルキャッシュタグ写し部２０４ｃを検索し、該当データがヒットするか否か、つまり消去対象であるか否かを判定する。データがヒットした場合には、第２コヒーレンシ維持処理部２０３ａは、再度、プロセッサコア１００に対して無効化要求を行うが、この場合は既に消すべき対象が決まっているため、第１レベルキャッシュタグの検索は不要となり、エラーを回避することができる。
【０１０６】
続いて、図１６の右側に示すように、無効化要求を行った各プロセッサコアからの無効化応答をコヒーレンシ維持処理部２０３ａが取得し、コヒーレンシ維持処理部２０３ａは、第１レベルキャッシュタグ写し部２０４ｃの該当エントリを無効化するとともに、第２レベルキャッシュタグ部２０４ａの第１キャッシュ登録情報５０３にコード「００００（該当データが存在しない旨を示す）」を登録する。
【０１０７】
次に、本実施例にかかる第２レベルキャッシュ装置２００の処理について説明する。図１７および図１８は、本実施例にかかる第２レベルキャッシュ装置２００の処理を示すフローチャートである。
【０１０８】
同図に示すように、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２からデータのリクエストを取得し（ステップＳ１０１）、リクエストされたデータを保持しているか否かを判定する（ステップＳ１０２）。
【０１０９】
第２レベルキャッシュ装置２００がリクエストされたデータを保持していない場合には（ステップＳ１０３，Ｎｏ）、第２レベルキャッシュ装置２００は、主記憶装置３００にアクセスし（ステップＳ１０４）、第２レベルキャッシュ装置２００にリプレイスが発生するか否かを判定する（ステップＳ１０５）。
【０１１０】
そして、第２レベルキャッシュ装置２００にリプレイスが発生していない場合には（ステップＳ１０６，Ｎｏ）、第２レベルキャッシュ装置２００は、主記憶装置３００から取得するデータを第２レベルキャッシュデータ部２０４ｂに登録し、第２レベルキャッシュタグ部２０４ａのデータを更新する（ステップＳ１０７）。
【０１１１】
一方、第２レベルキャッシュ装置２００にリプレイスが発生した場合には（ステップＳ１０６，Ｙｅｓ）、第２レベルキャッシュ装置２００はｃｌｅａｎか否かを判定し（ステップＳ１０８）、ｃｌｅａｎである場合には（ステップＳ１０９，Ｙｅｓ）、第２レベルキャッシュ装置２００のデータを消去し（ステップＳ１１０）、ステップＳ１０７に移行する。なお、ｃｌｅａｎでない場合には（ステップＳ１０９，Ｎｏ）、第２レベルキャッシュ装置２００のデータをライトバックし（ステップＳ１１１）、ステップＳ１０７に移行する。
【０１１２】
ステップＳ１０７の後、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２においてリプレイスが発生するか否かを判定し（ステップＳ１１２）、第１レベルキャッシュ装置１０２にリプレイスが発生しない場合には（ステップＳ１１３，Ｎｏ）、第１レベルキャッシュ装置１０２にデータを登録し、第１レベルキャッシュタグおよび第１レベルキャッシュタグ写し部２０４ｃのデータを更新する（ステップＳ１１４）。
【０１１３】
一方、第１レベルキャッシュ１０２においてリプレイスが発生する場合には（ステップＳ１１３，Ｙｅｓ）、第１レベルキャッシュデータはｃｌｅａｎか否かを判定し（ステップＳ１１５）、ｃｌｅａｎである場合には（ステップＳ１１６，Ｙｅｓ）、第１レベルキャッシュデータを消去して（ステップＳ１１７）、ステップＳ１１２に移行する。なお、ｃｌｅａｎでない場合には（ステップＳ１１６，Ｎｏ）、第１レベルキャッシュデータをライトバックし（ステップＳ１１８）、ステップＳ１１２に移行する。
【０１１４】
ところで、ステップＳ１０３において、第２レベルキャッシュ装置２００がデータを保持している場合には（ステップＳ１０３，Ｙｅｓ）、シノニムか否かを判定し（ステップＳ１１９）、シノニムでない場合には（ステップＳ１２０，Ｎｏ）、ステップＳ１１２に移行する。
【０１１５】
なお、シノニムの場合には（ステップＳ１２０，Ｙｅｓ）、第２レベルキャッシュ装置２００は、第１レベルキャッシュデータが共有（複数のプロセッサコアによって共有されている）か否かを判定し（ステップＳ１２１）、共有でない場合には（ステップＳ１２２，Ｎｏ）、ステップＳ１１５に移行する。
【０１１６】
第１レベルキャッシュデータが共有の場合には（ステップＳ１２２，Ｙｅｓ）、第１レベルキャッシュデータを消去し（ステップＳ１２３）、正常に消去が終了した場合には（ステップＳ１２４，Ｙｅｓ）、ステップＳ１１２に移行する。一方、正常に消去が終了しなかった場合には（ステップＳ１２４，Ｎｏ）、第１レベルキャッシュタグ写し部２０４ｃを検索し、ヒットした場合に、対応するデータを強制消去して（ステップＳ１２５）、ステップＳ１１２に移行する。
【０１１７】
このように、第２レベルキャッシュ装置２００は、第１レベルキャッシュ装置１０２とのコヒーレンシを維持しつつ、プロセッサコア１００からのリードリクエストに対する処理を適切に実行することができる。
【０１１８】
上述してきたように、本実施例にかかる第２レベルキャッシュ装置２００は、第２レベルキャッシュタグ部２０４ａに第２レベルキャッシュデータ部２０４ｂの登録情報に対応付けて、第１レベルキャッシュ装置１０２（およびその他の第１レベルキャッシュ装置）に対するデータの登録情報の一部を記録し、第１レベルキャッシュタグ写し部２０４ｃに第１レベルキャッシュ装置１０２に対するデータの登録情報を記録し、コヒーレンシ維持処理部２０３ａが、第２レベルキャッシュタグ部２０４ａおよび第１レベルキャッシュタグ写し部２０４ｃに記録された情報を使用して第１レベルキャッシュ装置１０２と第２レベルキャッシュ装置２００との間でコヒーレンシを維持するので、第２レベルキャッシュタグ部２０４ａに記録されたデータの使用効率を高めることができ、第２レベルキャッシュ装置２００の限られた資源を有効に使用することができる。
【産業上の利用可能性】
【０１１９】
以上のように、本発明にかかるコヒーレンシ維持装置およびコヒーレンシ維持方法は、キャッシュメモリのマシンサイクルを高める場合に有用であり、特に、マシンサイクルを高めた場合であっても、キャッシュメモリに記録されたデータの使用効率を高め、資源を有効に利用する場合に適している。
【図面の簡単な説明】
【０１２０】
【図１】図１は、本発明に対する第１レベルキャッシュの登録状態を把握するまでのステージを示す図である。
【図２】図２は、本発明による第２レベルキャッシュのタグ部の使用効率の改善について説明するための説明図である。
【図３】図３は、本実施例にかかるシステムの構成を示す図である。
【図４】図４は、本実施例にかかるプロセッサコア、第２レベルキャッシュ装置および主記憶装置の構成を示す図である。
【図５】図５は、論理アドレスのデータ構造の一例を示す図である。
【図６】図６は、物理アドレスのデータ構造の一例を示す図である。
【図７】図７は、第１レベルキャッシュタグのデータ構造の一例を示す図である。
【図８】図８は、第２レベルキャッシュタグのデータ構造の一例を示す図である。
【図９】図９は、第１キャッシュ登録情報に格納されるコードの意味を示す図である。
【図１０】図１０は、第１キャッシュ詳細情報のデータ構造の一例を示す図である。
【図１１】図１１は、プロセッサコアからのリードリクエストによるタグ登録情報の遷移を説明するための説明図である。
【図１２】図１２は、シノニム状態からのタグ登録情報の遷移を説明するための説明図である。
【図１３】図１３は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図（１）である。
【図１４】図１４は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図（２）である。
【図１５】図１５は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図（１）である。
【図１６】図１６は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図（２）である。
【図１７】図１７は、本実施例にかかる第２レベルキャッシュ装置の処理を示すフローチャート（１）である。
【図１８】図１８は、本実施例にかかる第２レベルキャッシュ装置の処理を示すフローチャート（２）である。
【図１９】図１９は、従来の第１レベルキャッシュの状態を得るまでのステージを示す図である。
【符号の説明】
【０１２１】
１００，１１０，１２０，１３０，１ｍ０，１ｎ０  プロセッサコア
１０１  命令実行制御部
１０２  第１レベルキャッシュ装置
１０３  第１レベルキャッシュ制御部
１０３ａ  アドレス変換処理部
１０３ｂ  検索処理部
１０３ｃ  エラー検出部
１０４  記憶部
１０４ａ  命令キャッシュタグ部
１０４ｂ  命令キャッシュデータ部
１０４ｃ  オペランドキャッシュタグ部
１０４ｄ  オペランドキャッシュデータ部
２００，２２０，２ｍ０  第２レベルキャッシュ装置
２０３  第２レベルキャッシュ制御部
２０３ａ  コヒーレンシ維持処理部
２０３ｂ  エラー処理部
２０４ａ  第２レベルキャッシュタグ部
２０４ｂ  第２レベルキャッシュデータ部
２０４ｃ  第１レベルキャッシュタグ写し部
３００  主記憶装置
３００ａ  アクセス制御部
３００ｂ  メモリ
【手続補正書】
【提出日】平成21年1月22日(2009.1.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、
所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、
前記第１の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第２の記録手段と、
前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持手段とを備え、
前記第１の記録手段に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持手段は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録手段に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とするコヒーレンシ維持装置。
【請求項２】
前記コヒーレンシ維持手段は、リードリクエストに含まれる物理アドレスおよび論理アドレスを利用して、前記第１の記録手段に記録された登録情報の一部と前記第２の記録手段に記録された前記登録情報の残りの部分とを同時にアクセスすることを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項３】
前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、前記第２の記録手段に記録された登録情報の残りの部分を基にしてエラーの発生したデータを修正するエラー修正手段を更に備えたことを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項４】
前記エラー修正手段は、前記第１のキャッシュメモリに記録されたデータにエラーが発生した場合に、当該エラーの発生したデータを消去するか否かを前記第２の記録手段に記録された登録情報の残りの部分を基に判定し、判定結果に基づいてエラーの発生したデータを消去することを特徴とする請求項３に記載のコヒーレンシ維持装置。
【請求項５】
前記第１の記録手段は、第２のキャッシュメモリに対するデータの登録状態を示す情報と、前記登録情報の一部とを対応付けて記録することを特徴とする請求項１に記載のコヒーレンシ維持装置。
【請求項６】
前記第１の記録手段は、リードリクエストにヒットしたか否かを判定する情報、当該第１の記録手段に記録されたデータが有効か否かの情報、シノニムか否かを判定する情報および前記登録情報の一部を対応付けて記録することを特徴とする請求項５に記載のコヒーレンシ維持装置。
【請求項７】
前記第１の記録手段が記録する登録情報の一部は複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットによって前記第１のキャッシュメモリに記録されたデータの登録状態を把握し、第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持することを特徴とする請求項１〜６のいずれか一つに記載のコヒーレンシ維持装置。
【請求項８】
第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、
前記第１のキャッシュメモリに対するデータの登録情報の一部を、所定のエントリ数を有する第１の記録装置に記録する第１の記録工程と、
前記登録情報の残りの部分を、前記第１の記録装置よりも少ないエントリ数を有する第２の記録装置に記録する第２の記録工程と、
前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持工程を含み、
前記第１の記録装置に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持工程は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録装置に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とするコヒーレンシ維持方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
上述した課題を解決し、目的を達成するために、本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、所定のエントリ数を有し、前記第１のキャッシュメモリに対するデータの登録情報の一部を記録する第１の記録手段と、前記第１の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第２の記録手段と、前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持手段とを備え、前記第１の記録手段に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持手段は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録手段に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
また、本発明は、第１のキャッシュメモリと当該第１のキャッシュメモリのデータを記録する第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、前記第１のキャッシュメモリに対するデータの登録情報の一部を、所定のエントリ数を有する第１の記録装置に記録する第１の記録工程と、前記登録情報の残りの部分を、前記第１の記録装置よりも少ないエントリ数を有する第２の記録装置に記録する第２の記録工程と、前記第１のキャッシュメモリと第２のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持工程を含み、前記第１の記録装置に記録された登録情報の一部は、前記第２のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第１のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持工程は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第２の記録装置に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする。
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2007094046.tif 000022
【国際調査報告】
2007094046.tif 000023
2007094046.tif 000024
2007094046.tif 000025
2007094046.tif 000026