(57)【要約】包含関係にある多階層のキャッシュを備えたプロセッサシステムにおけるキャッシュ制御方法は、上位キャッシュを実アドレスで索引すると共に下位キャッシュを仮想アドレスで索引し、異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止して、前記上位キャッシュ内に複数の仮想アドレスを登録可能とすることで、データ共有条件を緩和する。
2004046932.tif 000002
【特許請求の範囲】
【請求項１】
包含関係にある多階層のキャッシュを備えたプロセッサシステムにおけるキャッシュ制御方法であって、
上位キャッシュを実アドレスで索引すると共に下位キャッシュを仮想アドレスで索引し、
異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止して、前記上位キャッシュ内に複数の仮想アドレスを登録可能とすることで、データ共有条件を緩和することを特徴とする、キャッシュ制御方法。
【請求項２】
前記上位キャッシュはＰＩＰＴ（Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｉｎｄｅｘ  Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｔａｇ）を採用し、前記下位キャッシュはＶＩＰＴ（Ｖｉｒｔｕａｌ  ａｄｄｒｅｓｓ  Ｉｎｄｅｘ  Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｔａｇ）を採用することを特徴とする、請求の範囲第１項記載のキャッシュ制御方法。
【請求項３】
異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止するために、仮想アドレスの一部を有する前記上位キャッシュに、この仮想アドレスの一部を複数持たせることを特徴とする、請求の範囲第１項又は第２項記載のキャッシュ制御方法。
【請求項４】
前記下位キャッシュ側でシノニムの検出及び排他権の制御を行うことを特徴とする、請求の範囲第１項〜第３項のいずれか１項記載のキャッシュ制御方法。
【請求項５】
前記プロセッサシステムは、マルチプロセッサシステムであることを特徴とする、請求の範囲第１項〜第４項のいずれか１項記載のキャッシュ制御方法。
【請求項６】
包含関係にある多階層のキャッシュを備えたプロセッサシステムであって、
実アドレスで索引される上位キャッシュと、
仮想アドレスで索引される下位キャッシュと、
異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止する機構とを備え、
前記上位キャッシュ内に複数の仮想アドレスを登録可能とすることで、データ共有条件を緩和することを特徴とする、プロセッサシステム。
【請求項７】
前記上位キャッシュはＰＩＰＴ（Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｉｎｄｅｘ  Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｔａｇ）を採用し、前記下位キャッシュはＶＩＰＴ（Ｖｉｒｔｕａｌ  ａｄｄｒｅｓｓ  Ｉｎｄｅｘ  Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｔａｇ）を採用することを特徴とする、請求の範囲第６項記載のプロセッサシステム。
【請求項８】
前記機構は、仮想アドレスの一部を有する前記上位キャッシュに、この仮想アドレスの一部を複数持たせることで、異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止することを特徴とする、請求の範囲第６項又は第７項記載のプロセッサシステム。
【請求項９】
前記下位キャッシュは、シノニムの検出及び排他権の制御を行うことを特徴とする、請求の範囲第６項〜第８項のいずれか１項記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】  本発明は、キャッシュ制御方法及びプロセッサシステムに係り、特に包含関係にある多階層のキャッシュのシノニム時のデータ共有状態を制御するためのキャッシュ制御方法及びそのようなキャッシュ制御方法を用いるプロセッサシステムに関する。
【背景技術】  包含関係にある多階層のキャッシュを備えたマルチプロセッサシステムでは、キャッシュのインデックスアドレスを実アドレスで索引可能な構成とした場合、即ち、ＰＩＰＴ（Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｉｎｄｅｘ  Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｔａｇ）を採用した場合、インデックスアドレスとして使用可能なビット数はマルチプロセッサシステムのページサイズによって決定されてしまう。従って、キャッシュの総容量は、ページサイズにウェイ（Ｗａｙ）数を乗じたものと等しい。
ＰＩＰＴでは、キャッシュのインデックスアドレスを実アドレスで索引し、実アドレスで一致を検出するので、シノニムが発生しない。しかし、ページ境界を超えられないため、１Ｗａｙ当たりの容量に制限が発生する。
このような制限を発生させないための方法としては、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｈｅａｄ  Ｂｕｆｆｅｒ）を索引して仮想アドレスに対応する実アドレスを求め、実アドレスによりインデックスする方法がある。しかし、この方法では、ＴＬＢの索引結果からキャッシュを索引することになるので、キャッシュレイテンシの増大を招いてしまう。
そこで、実アドレスではなく、仮想アドレスでインデックスする方法であるＶＩＰＴ（Ｖｉｒｔｕａｌ  ａｄｄｒｅｓｓ  Ｉｎｄｅｘ  Ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ  Ｔａｇ）が提案されている。ＶＩＰＴでは、キャッシュのインデックスアドレスを仮想アドレスで索引し、実アドレスで一致を検出するので、ページ境界を超える容量が簡単に実現できる。しかし、ＶＩＰＴでは、ページ境界を超えられるものの、シノニムが発生してしまう。
シノニムとは、ある１つの実アドレスが、複数の仮想アドレスから参照されている状態を言う。シノニムが発生すると、仮想アドレスでインデックスされたキャッシュは、実体が１つであるにも関わらず、複数のエントリに同一実アドレスのデータを格納してしまうことになる。従って、このように格納されたデータを更新する場合には、他のエントリに格納された同じデータも更新しない限り、データの一元性が保たれない。
このため、従来のマルチプロセッサシステムでは、二次キャッシュを実アドレスでインデックスし、この実アドレスに対する仮想アドレスの一部を保持して、シノニムのチェックを行っていた。尚、二次キャッシュをアクセスするまでには、ＴＬＢを索引し終えているので、時間的なロスは無い。二次キャッシュは、以前にアクセスされた際の実アドレスと仮想アドレスの組を記憶しておき、次に違う組み合わせでアクセスされた場合に、一次キャッシュに対してエントリの削除を要求（以下、リクエストと言う）する。これにより、一次キャッシュ上には、実アドレスに対する仮想アドレスの組が常に１つしか存在しないことになり、データの一元性を保つことができる。
図１は、シノニムが発生しないアクセス時のキャッシュ制御動作を説明する図である。より具体的には、図１は、実アドレスＰＡ（ａ）のデータＤＡＴＡが一次キャッシュ１に仮想アドレスＶＡ（ａ）で登録されている場合に、仮想アドレスＶＡ（ａ）のアクセスが発生した場合のキャッシュ制御動作を説明する図である。ＴＬＢ３は、実アドレスＰＡ（ａ）のデータＤＡＴＡが一次キャッシュ１に仮想アドレスＶＡ（ａ）で登録されていることを示す。この場合、アクセスが発生した仮想アドレスＶＡ（ａ）と一次キャッシュ１に登録されている仮想アドレスＶＡ（ａ）とが一致するので、ヒット（Ｈｉｔ）が生じる。
図２は、シノニムが発生するアクセス時のキャッシュ制御動作を説明する図である。より具体的には、図２は、実アドレスＰＡ（ａ）のデータＤＡＴＡが一次キャッシュ１に仮想アドレスＶＡ（ｂ）で登録されている場合に、仮想アドレスＶＡ（ａ）のアクセスが発生した場合、即ち、シノニムが発生した場合のキャッシュ制御動作を説明する図である。この場合、アクセスが発生した仮想アドレスＶＡ（ａ）と一次キャッシュ１に登録されている仮想アドレスＶＡ（ｂ）とが一致しないので、ミス（Ｍｉｓｓ）が生じる。二次キャッシュ２には、仮想アドレスＶＡ（ｂ）、実アドレスＰＡ（ａ）及びそのデータＤＡＴＡが対応させて登録されている。従って、ＴＬＢ３により二次キャッシュ２を実アドレスＰＡ（ａ）で索引することで、一次キャッシュ１には実アドレスＰＡ（ａ）のデータＤＡＴＡが仮想アドレスＶＡ（ｂ）で登録されていることが分かる。そこで、一次キャッシュ１に対して、仮想アドレスＶＡ（ｂ）のエントリを削除する削除リクエストＤＥＬを発生し、二次キャッシュ２に対して、一次キャッシュ１の仮想アドレスＶＡ（ｂ）のエントリが削除された旨を通知することで、一次キャッシュ１及び二次キャッシュ２の仮想アドレスＶＡ（ｂ）のエントリを仮想アドレスＶＡ（ａ）のエントリに登録し直す。その後、改めて仮想アドレスＶＡ（ａ）に対応するものとして、データＤＡＴＡを二次キャッシュ２から一次キャッシュ１に転送する。
図３は、シノニムが発生した場合に図２に示す削除リクエストＤＥＬを処理した後の状態を示す図である。図３に示すように、この状態では、一次キャッシュ１及び二次キャッシュ２からは仮想アドレスＶＡ（ｂ）の登録が削除され、仮想アドレスＶＡ（ａ）のみが登録されている。
このように、従来のマルチプロセッサシステムでは、シノニムが発生する度に上記の如き削除リクエストＤＥＬを処理してシノニム状態を解消する必要があった。このため、シノニム状態を解消するための処理を実行する必要上、マルチプロセッサシステムにおけるメモリアクセス時間が長くなり、メモリ利用効率の向上が難しいという問題があった。
尚、先行技術文献としては、以下のものがある。
特開平７−２８７６６８号公報
特表平９−５０４６２７号公報
特開平３−８３１５０号公報
【発明の開示】
本発明は、上記の問題を解決した、新規、且つ、有用なキャッシュ制御方法及びプロセッサシステムを提供することを概括的目的とする。
本発明のより具体的な目的は、データ共有条件を緩和し、シノニム状態の解消に伴う動作を簡略化することで、メモリアクセス時間を短縮し、メモリ利用効率の向上を可能とするキャッシュ制御方法及びプロセッサシステムを提供することにある。
本発明の他の目的は、包含関係にある多階層のキャッシュを備えたプロセッサシステムにおけるキャッシュ制御方法であって、上位キャッシュを実アドレスで索引すると共に下位キャッシュを仮想アドレスで索引し、異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止して、前記上位キャッシュ内に複数の仮想アドレスを登録可能とすることで、データ共有条件を緩和することを特徴とするキャッシュ制御方法を提供することにある。本発明になるキャッシュ制御方法によれば、データ共有条件を緩和し、シノニム状態の解消に伴う動作を簡略化することで、メモリアクセス時間を短縮し、メモリ利用効率を向上することが可能となる。
本発明の更に他の目的は、包含関係にある多階層のキャッシュを備えたプロセッサシステムであって、実アドレスで索引される上位キャッシュと、仮想アドレスで索引される下位キャッシュと、異なる仮想アドレスから参照される実アドレスが同一キャッシュ内に複数登録されることを防止する機構とを備え、前記上位キャッシュ内に複数の仮想アドレスを登録可能とすることで、データ共有条件を緩和することを特徴とするプロセッサシステムを提供することにある。本発明になるプロセッサシステムによれば、データ共有条件を緩和し、シノニム状態の解消に伴う動作を簡略化することで、メモリアクセス時間を短縮し、メモリ利用効率を向上することが可能となる。
本発明の更に他の目的及び特長は、以下図面と共に述べる説明より明らかとなろう。
【図面の簡単な説明】  図１は、シノニムが発生しないアクセス時のキャッシュ制御動作を説明する図である。
図２は、シノニムが発生するアクセス時のキャッシュ制御動作を説明する図である。
図３は、シノニムが発生した場合に図２に示す削除リクエストを処理した後の状態を示す図である。
図４は、シノニムが発生するアクセス時の本発明によるキャッシュ制御動作を説明する図である。
図５は、図４に示す状態からデータが一次キャッシュに転送された後の状態を示す図である。
図６は、図５に示す状態において、ストアアクセスが発生した場合のキャッシュ制御動作を説明する図である。
図７は、図６に示す状態からデータが一次キャッシュに転送された後の状態を示す図である。
図８は、本発明になるプロセッサシステムの一実施例を示すブロック図である。
図９は、一次キャッシュのタグ内容を示す図である。
図１０は、二次キャッシュのタグ内容を示す図である。
図１１は、プロセッサシステムの一実施例の機能ブロック図である。
図１２は、キャッシュ制御動作を説明するフローチャートである。
【発明を実施するための最良の形態】  以下に、本発明になるキャッシュ制御方法及びプロセッサシステムの各実施例を、図４以降と共に説明する。
先ず、本発明の動作原理を、図４〜図７と共に説明する。
図４は、包含関係にある多階層のキャッシュを備えたマルチプロセッサシステムにおける、シノニムが発生するアクセス時の本発明によるキャッシュ制御動作を説明する図である。より具体的には、図４は、実アドレスＰＡ（ａ）のデータＤＡＴＡが上位の一次キャッシュ１１に仮想アドレスＶＡ（ｂ）で登録されており、且つ、下位の二次キャッシュ１２には、仮想アドレスＶＡ（ａ）、仮想アドレスＶＡ（ｂ）、実アドレスＰＡ（ａ）及びそのデータＤＡＴＡが対応させて登録されている場合に、仮想アドレスＶＡ（ａ）のアクセス（アクセスリクエスト）が発生した場合のキャッシュ制御動作を説明する図である。この場合、アクセスが発生した仮想アドレスＶＡ（ａ）と一次キャッシュ１１に登録されている仮想アドレスＶＡ（ｂ）とが一致しないので、ミス（Ｍｉｓｓ）が生じる。ＴＬＢ１３は、実アドレスＰＡ（ａ）のデータＤＡＴＡが一次キャッシュ１１に仮想アドレスＶＡ（ａ）で登録されていることを示す。
このようにシノニムが発生した場合、二次キャッシュ１２には、仮想アドレスＶＡ（ａ）、仮想アドレスＶＡ（ｂ）、実アドレスＰＡ（ａ）及びそのデータＤＡＴＡが対応させて登録されているので、ＴＬＢ１３により二次キャッシュ１２を実アドレスＰＡ（ａ）で索引することで、一次キャッシュ１１には実アドレスＰＡ（ａ）のデータＤＡＴＡが仮想アドレスＶＡ（ｂ）で登録されていることが分かる。しかし、本発明では、一次キャッシュ１１に対して、仮想アドレスＶＡ（ｂ）のエントリを削除する削除リクエストＤＥＬを発生することなく、その後に改めて仮想アドレスＶＡ（ａ）に対応するものとしてデータＤＡＴＡを二次キャッシュ１２から一次キャッシュ１１に転送する。
図５は、上記の如く、仮想アドレスＶＡ（ａ）に対応するものとしてデータＤＡＴＡが一次キャッシュ１１に転送された後の状態を示す図である。図５に示すように、一次キャッシュ１１は、同一実アドレスＰＡのエントリを２つ持つ。このような状態は、各エントリに対して参照のみを行う限りは問題を生じないが、一方のエントリに対して更新を行うと、２つのエントリ間で内容の不一致が発生してしまう。そこで、本発明では、キャッシュのタグを拡張し、データＤＡＴＡに対する操作権限のステートを追加する。ステートには、更新可能であることを示すＭ、参照のみが可能であることを示すＳ、エントリが無効であることを示すＩの３種類の状態がある。従って、図４において仮想アドレスＶＡ（ａ）のアクセスを行った後のタグの状態は、図５に示すようになる。図５に示す例では、仮想アドレスＶＡ（ａ）、仮想アドレスＶＡ（ｂ）へのアクセスは、タグステートがＳであるため、参照のみが可能である。
尚、上記の例では、仮想アドレスＶＡ（ａ）と実アドレスＰＡ（ａ）の組と、仮想アドレスＶＡ（ｂ）と実アドレスＰＡ（ａ）の組の、２つの組があるが、組の数は２つに限定されるものではないことは言うまでもない。
このように、本発明では、一次キャッシュ１１に、複数の異なる仮想アドレスＶＡ（ａ），ＶＡ（ｂ）で同一の実アドレスＰＡ（ａ）のデータＤＡＴＡを登録できるので、図４のような場合のキャッシュ制御手順は、基本的には次のステップ（１）〜（４）からなり、非常に簡単である。
ステップ（１）：一次キャッシュ１１のミス検出。
ステップ（２）：二次キャッシュ１２の索引（登録仮想アドレスＶＡ（ａ）の検出）。
ステップ（３）：二次キャッシュ１２から一次キャッシュ１１へのデータＤＡＴＡの転送。
ステップ（４）：一次キャッシュ１１への仮想アドレスＶＡ（ａ）の登録。
これに対し、上記従来技術では、上記ステップ（２）とステップ（３）の間に、図２と共に説明したように、一次キャッシュ１に対して仮想アドレスＶＡ（ｂ）のエントリを削除する削除リクエストＤＥＬを発生するステップと、二次キャッシュ２に対して一次キャッシュ１の仮想アドレスＶＡ（ｂ）のエントリが削除された旨を通知するステップとが更に必要である。これらのステップが設けられていないと、従来技術では、一次キャッシュ１及び二次キャッシュ２の仮想アドレスＶＡ（ｂ）のエントリを仮想アドレスＶＡ（ａ）のエントリに登録し直すことができない。
図６は、図５に示す状態において、同じく実アドレスＰＡ（ａ）を指す仮想アドレスＶＡ（ｃ）のストアアクセス（ストアアクセスリクエスト又は更新リクエスト）が発生した場合のキャッシュ制御動作を説明する図である。この場合、アクセスが発生した仮想アドレスＶＡ（ｃ）と一次キャッシュ１１に登録されている仮想アドレスＶＡ（ｂ），ＶＡ（ａ）とが一致しないので、ミス（Ｍｉｓｓ）が生じる。ＴＬＢ１３は、実アドレスＰＡ（ａ）のデータＤＡＴＡが一次キャッシュ１１に仮想アドレスＶＡ（ａ）で登録されていることを示す。
このようにシノニムが発生した場合、二次キャッシュ１２には、仮想アドレスＶＡ（ａ）、仮想アドレスＶＡ（ｂ）、実アドレスＰＡ（ａ）及びそのデータＤＡＴＡが対応させて登録されているので、ＴＬＢ１３により二次キャッシュ１２を実アドレスＰＡ（ａ）で索引することで、一次キャッシュ１１には実アドレスＰＡ（ａ）のデータＤＡＴＡが仮想アドレスＶＡ（ｃ）では登録されていないことが分かる。そこで、一次キャッシュ１１に対して、ステートＳで登録されている仮想アドレスＶＡ（ｂ），ＶＡ（ａ）のエントリを削除する削除リクエストＤＥＬ１を発生すると共に、二次キャッシュ１２に対して一次キャッシュ１１の仮想アドレスＶＡ（ｂ），ＶＡ（ａ）のエントリが削除された旨を通知する。この結果、一次キャッシュ１１及び二次キャッシュ１２の仮想アドレスＶＡ（ｂ），ＶＡ（ａ）のエントリを仮想アドレスＶＡ（ｃ）のエントリに登録し直すと共に、仮想アドレスＶＡ（ｃ）のステートをＭに設定することができる。その後に改めて、仮想アドレスＶＡ（ｃ）に対応するものとしてデータＤＡＴＡを二次キャッシュ１２から一次キャッシュ１１に転送する。
図７は、上記の如く、仮想アドレスＶＡ（ｃ）に対応するものとしてデータＤＡＴＡが一次キャッシュ１１に転送された後の状態を示す図である。図７に示すように、一次キャッシュ１１は、同一実アドレスＰＡのエントリが１つとされ、二次キャッシュ１２も同様に、同一実アドレスＰＡのエントリが１つとされる。このように、ステートがＭであるエントリは、同一実アドレスＰＡに対して１つしか存在しない。
このように、本発明によれば、二次キャッシュ１２側でシノニムの検出及び排他権の制御を行う場合に、二次キャッシュ１２の持つ仮想アドレスフィールドを拡張することによりデータ共有状態（データ共有条件）を緩和し、シノニム状態の解消に伴う動作を簡略化することで、メモリアクセス時間を短縮し、メモリ利用効率を向上することが可能となる。
次に、本発明になるプロセッサシステムの一実施例を説明する。プロセッサシステムの本実施例は、本発明になるキャッシュ制御方法の一実施例を採用する。本実施例では、本発明がマルチプロセッサシステムに適用されている。
図８は、本発明になるプロセッサシステムの一実施例を示すブロック図である。図８に示すマルチプロセッサシステムは、複数のプロセッサチップ（ＣＨＩＰ）３０−１〜３０−４と、主記憶装置（Ｍａｉｎ  Ｍｅｍｏｒｙ）３１とからなる。各プロセッサチップ３０−１〜３０−４は同じ構成を有するので、図８ではプロセッサチップ３０−１のみの構成を示す。プロセッサチップ３０−１は、複数のＣＰＵ２０−１，２０−２と、ＣＰＵ２０−１，２０−２でデータが共有される二次キャッシュ（Ｌ２  ＣＡＣＨＥ）２２からなる。ＣＰＵ２０−１，２０−２は、各々一次キャッシュ（Ｌ１  ＣＡＣＨＥ）２１−１，２１−２を有する。プロセッサチップ３０−１〜３０−４は、チップマルチプロセッサ（Ｃｈｉｐ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）と呼ばれることもある。
各一次キャッシュ２１−１，２１−２は、Ｌ１キャッシュタグ（Ｌ１  ＣＡＣＨＥ  ＴＡＧ）２１０及びＴＬＢ２１１を有する。ＴＬＢ２１１は、どの実アドレスのデータが、そのＴＬＢ２１１が属する一次キャッシュ２１−１又は２１−２にどの仮想アドレスで登録されているかを示す。Ｌ１  ＣＡＣＨＥ  ＴＡＧ２１０は、それが属する一次キャッシュ２１−１又は２１−２のどのアドレス領域が登録されているかを示す。二次キャッシュ２２は、Ｌ２キャッシュタグ（Ｌ２  ＣＡＣＨＥ  ＴＡＧ）２２０を有する。Ｌ２  ＣＡＣＨＥ  ＴＡＧ２２０は、それが属する二次キャッシュ２２のどのアドレス領域が登録されているかと、各一次キャッシュ２１−１，２１−２にどのアドレス領域が登録されているかを示す。主記憶装置３１は、Ｄタグ（ＤＴＡＧ）３１０を有する。ＤＴＡＧ３１０は、各二次キャッシュ２２にどのアドレス領域が登録されているかを示す。
尚、プロセッサチップの数は、４つに限定されるものではなく、１以上であれば良い。又、各プロセッサチップ内のＣＰＵの数は、２つに限定されるものではなく、２以上であれば良い。
一次キャッシュ２１−１，２１−２は、ＶＩＰＴで制御され、二次キャッシュ２２は、ＰＩＰＴで制御される。二次キャッシュ２２は、一次キャッシュ２１−１，２１−２に登録された任意のデータを削除可能とするために仮想アドレスの一部を持っているが、ＤＴＡＧは持っていない。このため、各チッププロセッサ３０−１〜３０−４内に設けられたＣＰＵの数が増加しても、膨大な情報量のＤＴＡＧを設ける必要がない。
図９は、一次キャッシュ２１−１又は２１−２のタグ内容を示す図である。図９に示すように、Ｌ１  ＣＡＣＨＥ  ＴＡＧ２１０には、ステートＳｔａｔｅ、仮想アドレスＶＡ及びデータＤＡＴＡが含まれる。一次キャッシュ２１−１又は２１−２は、ＶＩＰＴで制御されるので、実際にＬ１  ＣＡＣＨＥ  ＴＡＧ２１０に登録される部分は実アドレスＰＡであるが、図９では論理的な意味を表すために仮想アドレスＶＡとして図示してある。
図１０は、二次キャッシュ２２のタグ内容を示す図である。図１０に示すように、Ｌ２  ＣＡＣＨＥ  ＴＡＧ２２０には、ステートＳｔａｔｅ、ＣＰＵ２０−１からのアクセスで使用する仮想アドレスＶＡとステートＳｔａｔｅを示すＣＰＵ０  ＶＡ／Ｓｔａｔｅ、ＣＰＵ２０−２からのアクセスで使用する仮想アドレスＶＡとステートＳｔａｔｅを示すＣＰＵ１  ＶＡ／Ｓｔａｔｅ、実アドレスＰＡ及びデータＤＡＴＡが含まれる。つまり、Ｌ２  ＣＡＣＨＥ  ＴＡＧ２２０は、ＶＩＰＴで制御される一次キャッシュ２１−１又は２１−２の任意のエントリを削除可能とするために、実アドレスＰＡに対してＣＰＵ２０−１又は２０−２がどの仮想アドレスＶＡで登録しているかを示す情報を含む。
図１１は、プロセッサシステムの一実施例の機能ブロック図である。図１１中、図８と同一部分には同一符号を付し、その説明は省略する。
図１１において、二次キャッシュ２２は、プライオリティ回路２２１と、Ｌ２  ＣＡＣＨＥ  ＴＡＧ２２０を含むタグ（ＴＡＧ）索引・更新回路２２２と、主記憶アクセス回路２２３とからなる。プライオリティ回路２２１は、各ＣＰＵ２０−１，２０−２及び内部リクエストの調停を行う。タグ索引・更新回路２２２は、Ｌ２  ＣＡＣＨＥ  ＴＡＧ２２０に所望のデータが登録されているか否かを索引すると共に、アクセスリクエストに応じてＬ１  ＣＡＣＨＥ  ＴＡＧ２１０及びＬ２  ＣＡＣＨＥ  ＴＡＧ２２０の更新を行う。主記憶アクセス回路２２３は、二次キャッシュ２２にヒットしなかったアクセスリクエストが供給されると主記憶装置３１をアクセスし、主記憶装置３１からのデータを待つ。主記憶装置３１からのデータが来ると、主記憶アクセス回路２２３はデータをプライオリティ回路２２１へ供給し、上記と同様に調停を行う。
図１２は、キャッシュ制御動作を説明するフローチャートである。図１２に示すキャッシュ制御動作は、チッププロセッサ３０−１内のＣＰＵ２０−１，２０−２からアクセスリクエストが発生すると開始される。
図１２において、ステップＳ１は、例えばＣＰＵ２０−１から発生したアクセスリクエストが一次キャッシュ２１０にヒットしたか否かを判定し、判定結果がＹＥＳであると、処理は終了する。他方、ステップＳ１の判定結果がＮＯであると、ステップＳ２は、アクセスリクエストを二次キャッシュ２２へ送出する。ステップＳ３は、プライオリティ回路２２１において、アクセスリクエストの調停を行い、調停結果が正常（ＯＫ）であるか否かを判定し、判定結果がＹＥＳであると、処理はステップＳ４へ進む。
ステップＳ４は、タグ索引・更新回路２２２により、アクセスリクエストが二次キャッシュ２２にヒットしたか否かを判定する。ステップＳ４の判定結果がＮＯであると、ステップＳ５は、主記憶アクセス回路２２３により主記憶装置３１をアクセスし、処理はステップＳ３へ戻る。他方、ステップＳ４の判定結果がＹＥＳであると、ステップＳ６は、タグ索引・更新回路２２２により、二次キャッシュ２２に登録されている、チッププロセッサ３０−１内のアクセスリクエスト元以外の他系ＣＰＵ（この場合、ＣＰＵ２０−２）のデータをチェックする。
ステップＳ７は、タグ索引・更新回路２２２により、二次キャッシュ２２に登録されているデータのステートがＳであるか否か、即ち、参照のみが可能であるか否かを判定する。ステップＳ７の判定結果がＹＥＳであると、ステップＳ８は、タグ索引・更新回路２２２により、アクセスリクエストがストアであるか否かを判定する。アクセスリクエストがロードでありステップＳ８の判定結果がＮＯであると、ステップＳ９は、タグ索引・更新回路２２２により必要に応じてタグの更新を行うと共に、アクセスされたデータをアクセスリクエスト元のＣＰＵ２０−１へ返送し、処理は終了する。
ステップＳ７の判定結果がＮＯであると、ステップＳ１１は、タグ索引・更新回路２２２により、二次キャッシュ２２に登録されているデータのステートがＭであるか否か、即ち、更新可能であるか否かを判定する。ステップＳ１１の判定結果がＹＥＳであると、処理は上記ステップＳ９へ進む。他方、ステップＳ１１の判定結果がＮＯ、或いは、ステップＳ８の判定結果がＹＥＳであると、ステップＳ１２は、タグ索引・更新回路２２２により一次キャッシュ２１及び二次キャッシュ２２のエントリの更新を行うと共に、プライオリティ回路２２１により他系ＣＰＵ２０−２へ一次キャッシュ２１及び二次キャッシュ２２の対応するエントリの削除をリクエストし、処理は上記ステップＳ３へ戻る。
尚、本発明は、上記実施例に限定されるものではなく、本発明の範囲内で種々の改良及び変更が可能であることは、言うまでもない。
【図１】
2004046932.tif 000003
【図２】
2004046932.tif 000004
【図３】
2004046932.tif 000005
【図４】
2004046932.tif 000006
【図５】
2004046932.tif 000007
【図６】
2004046932.tif 000008
【図７】
2004046932.tif 000009
【図８】
2004046932.tif 000010
【図９】
2004046932.tif 000011
【図１０】
2004046932.tif 000012
【図１１】
2004046932.tif 000013
【図１２】
2004046932.tif 000014
【国際調査報告】
2004046932.tif 000015
2004046932.tif 000016
2004046932.tif 000017
2004046932.tif 000018