(57)【要約】  データを共用する仮想アドレス・キャッシュ及び方法である。当該仮想アドレス・キャッシュは、仮想アドレス、タスク識別子、及び当該仮想アドレス及びタスク識別子と関連したデータを格納するよう適合されたメモリと、上記メモリと結合された比較器であって、受け取られた仮想アドレス及び受け取られたタスク識別子と関連したデータが、当該受け取られた仮想アドレスの少なくとも１部分が或る一定の格納された仮想アドレスの少なくとも対応する部分に等しい場合、そして次の判定基準、即ち、（ｉ）上記受け取られたタスク識別子が格納されたタスク識別子に等しいこと及び（ｉｉ）上記の或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が上記データが複数のタスク間で共用されることを指示することのうちの少なくとも１つが満たされる場合、上記メモリに格納されることを決定するよう適合された上記比較器とを含む。当該方法は、仮想アドレス、及びデータをアドレッシングするためのタスク識別子を受け取るステップと、上記データが、上記の受け取られた仮想アドレスの少なくとも１部分とメモリに格納されたデータと関連したアドレスの少なくとも１部分との比較に基づいて、そして次の判定基準、即ち、（ｉ）上記の受け取られたタスク識別子が格納されたタスク識別子に等しいこと、及び（ｉｉ）或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が上記データが複数のタスク間で共用されることを指示することのうちの少なくとも１つを満たすことに基づいてメモリに格納されるかどうかについて決定するステップとを含む。
2008511882.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレス、タスク識別子、及び当該仮想アドレス及びタスク識別子と関連したデータを格納するよう適合されたメモリと、
前記メモリと結合された比較器であって、受け取られた仮想アドレス及び受け取られたタスク識別子と関連したデータが、当該受け取られた仮想アドレスの少なくとも１部分が或る一定の格納された仮想アドレスの少なくとも対応する部分に等しい場合及び次の判定基準、即ち、（ｉ）前記受け取られたタスク識別子が格納されたタスク識別子に等しいこと、及び（ｉｉ）前記の或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が前記データが複数のタスク間で共用されることを指示することのうちの少なくとも１つが満たされる場合前記メモリに格納されることを決定するよう適合された前記比較器と
を備える仮想アドレス・キャッシュ。
【請求項２】
前記比較器が、前記の決定を単一の読み出しサイクルの一部分内で与えるよう適合されている請求項１記載の仮想アドレス・キャッシュ。
【請求項３】
制御信号をメモリ制御器から受け取り、且つそれに応答して、格納されたタスク識別子を、前記仮想アドレスと関連したデータが複数のタスク間で共用されていることを指示する一意のタスク識別子へ変えるよう更に適合されている請求項１記載の仮想アドレス・キャッシュ。
【請求項４】
前記格納されたタスク識別子が、データが前記の格納されたタスク識別子の一部分が事前定義された値を有する場合複数のタスク間で共用されることを指示する請求項１記載の仮想アドレス・キャッシュ。
【請求項５】
１グループのタスクからの少なくとも１つのタスクと関連したデータを格納するよう適合された請求項１記載の仮想アドレス・キャッシュ。
【請求項６】
前記複数のタスクが、前記１グループのタスクの全てを備える請求項５記載の仮想アドレス・キャッシュ。
【請求項７】
前記１グループのタスクが、複数のタスク・サブグループを備え、
少なくとも１つのタスク識別子が、少なくとも１つの対応のサブグループと関連している
請求項５記載の仮想アドレス・キャッシュ。
【請求項８】
仮想アドレス・キャッシュに格納されたデータを共用する方法であって、
仮想アドレス、及びデータをアドレッシングするためのタスク識別子を受け取るステップと、
前記データが、前記の受け取られた仮想アドレスの少なくとも１部分と前記メモリに格納されたデータと関連したアドレスの少なくとも１部分との比較に基づいて、及び次の判定基準、即ち、（ｉ）前記の受け取られたタスク識別子が格納されたタスク識別子に等しいこと及び（ｉｉ）或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が前記データが複数のタスク間で共用されることを指示することのうちの少なくとも１つを満たすことに基づいてメモリに格納されるかどうかについて決定するステップと
を備える方法。
【請求項９】
決定する前記ステップが、読み出しサイクルの一部分内で完了される請求項８記載の方法。
【請求項１０】
制御信号をメモリ制御器から受け取り、且つそれに応答して、格納されたタスク識別子を、前記仮想アドレスと関連したデータが複数のタスク間で共用されることを指示する一意のタスク識別子へ変えるステップを更に備える請求項８記載の方法。
【請求項１１】
前記格納されたタスク識別子が、データが前記の格納されたタスク識別子の一部分が事前定義された値を有する場合複数のタスク間で共用されることを指示する請求項８記載の方法。
【請求項１２】
少なくとも１つのタスク識別子が、データが１グループのタスク間で共用されることを指示指示する請求項８記載の方法。
【請求項１３】
前記１グループのタスクが、複数のタスク・サブグループを備え、
少なくとも１つのタスク識別子が、少なくとも１つの対応のサブグループと関連している
請求項１２記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法に関する。
【背景技術】
【０００２】
デジタル・データ処理システムは、例えば、データ処理システム、家庭電子機器、コンピュータ、車等を含む多くの応用で用いられている。例えば、パーソナル・コンピュータ（ＰＣ）は、広い多種多様のユーザ・アプリケーション用のプラットフォームを与えるため複雑なデジタル処理機能を使用する。
【０００３】
デジタル・データ処理システムは、典型的には、入力／出力機能、命令及びデータ・メモリ、及び１又はそれより多くのデータ・プロセッサ、例えば、マイクロコントローラ、マイクロプロセッサ、又はデジタル信号プロセッサのようなものを備える。
【０００４】
処理システムの性能の重要なパラメータは、メモリ性能である。最適な性能のため、メモリが大きく且つ速く、そして好ましくは安価であることが希望される。不都合にも、これらの特性は、要件同士を衝突させがちであり、そして適切なトレードオフが、デジタル・システムを設計するとき要求される。
【０００５】
処理システムのメモリ性能を改善するため、異なるタイプのメモリの個々の利点を活用しようとする複雑なメモリ構造が、開発されてきた。特に、より大きくより遅くてより安価なメイン・メモリと関連して速いキャッシュ・メモリを用いることが一般的になった。
【０００６】
例えば、ＰＣにおいて、メモリは、典型的に異なるサイズ及び速度のメモリをからなる記憶階層に組織化される。従って、ＰＣは、典型的には、低コストであるがしかし遅いメイン・メモリを備え、その上、比較的小さいく高価であるが速いメモリを備える１又はそれより多いキャッシュ・メモリ・レベルを有する。動作中に、メイン・メモリからのデータは、速い読み出しサイクルを可能にするためキャッシュ・メモリに動的にコピーされる。同様に、データは、メイン・メモリよりむしろキャッシュ・メモリに書き込まれ、それにより、速い書き込みサイクルを可能にする。
【０００７】
従って、キャッシュ・メモリは、メイン・メモリの異なるメモリ場所と動的に関連付けられ、そしてメイン・メモリとキャッシュ・メモリとの間のインターフェース及び相互作用が許容可能な性能にとって重要であることが、明らかである。従って、キャッシュ動作についての重要な研究が、行われ、そしてデータがメイン・メモリではなくキャッシュ・メモリへ書き込まれ又はそれから読み出されるときを、並びにデータがキャッシュ・メモリとメイン・メモリとの間で転送されるときを制御する様々な方法及びアルゴリズムが、開発されてきた。
【０００８】
典型的には、プロセッサが読み出し動作を実行するときは常に、キャッシュ・メモリ・システムは、最初に、対応するメイン・メモリ・アドレスがキャッシュと現在関連付けられているかどうかを検査する。キャッシュ・メモリがメイン・メモリ・アドレスに関する有効なデータ値を含む場合、このデータ値は、キャッシュによりシステムのデータ・バス上に置かれ、そして読み出しサイクルは、いずれの待ちサイクル無しに実行する。しかしながら、キャッシュ・メモリがメイン・メモリ・アドレスに関する有効なデータ値を含まない場合、メイン・メモリ読み出しサイクルが、実行され、そしてデータが、メイン・メモリから検索される。典型的には、メイン・メモリ読み出しサイクルは、１又はそれより多い待ち状態を含み、それによりプロセスを遅くする。
【０００９】
プロセッサがデータをキャッシュ・メモリから受け取ることができるメモリ動作は、通常、キャッシュ・ヒットと呼ばれ、そしてプロセッサがデータをキャッシュ・メモリから受け取ることができないメモリ動作は、通常、キャッシュ・ミスと呼ばれる。典型的には、キャッシュ・ミスは、プロセッサがデータをメイン・メモリから検索することをもたらすばかりでなく、メイン・メモリとキャッシュとの間の多数のデータ転送ももたらす。例えば、所与のデータがアクセスされ、キャッシュ・ミスをもたらす場合、後続のメモリ場所が、キャッシュ・メモリへ転送される。プロセッサが頻繁に連続したメモリ場所にアクセスするので、それにより所望のデータを有するキャッシュ・メモリの確率は、通常増大する。
【００１０】
キャッシュのヒット率を改善するため、Ｎウエイ・キャッシュ（Ｎ−ｗａｙ  ｃａｃｈｅｓ）が用いられ、そこにおいて、命令及び／又はデータが、Ｎ個の格納ブロック（即ち、複数の「ウエイ」）の１つに格納される。
【００１１】
キャッシュ・メモリ・システムは、典型的には、キャッシュ・メモリの解像度に対応する複数のキャッシュ・ラインに分割される。セットアソシエイティブ・キャッシュ・システムとして知られているキャッシュ・システムにおいては、多数のキャッシュ・ラインが、異なるセットに一緒にグループ化され、そこにおいて、各セットは、メイン・メモリ・アドレスのより低いデータ・ビットに対しての固定マッピングに対応する。１つのセットを形成する各キャッシュ・ラインの極端なケースは、直接マッピング・キャッシュとして知られ、そして各メイン・メモリ・アドレスが１つの特定のキャッシュ・ラインにマッピングされることをもたらす。全てのキャッシュ・ラインが単一のセットに属する他の極端なケースは、フルアソシエイティブ・キャッシュとして知られ、そしてこれは、各キャッシュ・ラインをいずれのメイン・メモリ場所にマッピングすることを可能にする。
【００１２】
どのメイン・メモリ・アドレス（有るならば）に各キャッシュ・ラインが関連付けられているかの経過を追うため、キャッシュ・メモリ・システムは、典型的には、各キャッシュ・ラインに関してそのキャッシュ・ラインとメイン・メモリとの間の現在のマッピングを指示するデータを保持するためのデータ・アレイを備える。詳細には、データ・アレイは、典型的には、関連のメイン・メモリ・アドレスのより高いデータ・ビットを備える。この情報は、通常、タグとして知られ、そしてデータ・アレイは、タグアレイとして知られている。その上、より大きいキャッシュ・メモリについては、アドレスのサブセット（即ち、インデックス）を用いて、キャッシュ内のライン位置を指示し、そこにおいて、アドレスの最上位ビット（即ち、タグ）が、データと共に格納される。インデクッシング（ｉｎｄｅｘｉｎｇ）を用いるキャッシュにおいては、特定のアドレスを有するアイテムが、関連のインデックスにより指示されたラインのセット内にのみ配置されることができる。
【００１３】
プロセッサがデータをメモリから読み出し及びそれへ書き込むのを可能にするため、プロセッサは、典型的には、仮想アドレスを生成するであろう。物理アドレスは、メイン（即ち、より高いレベル）メモリのアドレスであって、プロセッサにより発生される仮想アドレスと関連付けられるアドレスである。マルチタスク環境は、プロセッサが異なるタスクを異なる時間にサービス提供する環境である。マルチタスク環境内では、異なるタスクにより発生された同じ仮想アドレスは、必ずしも同じ物理アドレスと関連付けられるわけではない。異なるタスク間で共用されるデータは、このデータを共用する全てのタスクのため同じ物理的場所に格納される一方で、異なるタスク間で共用されないデータ（即ち、プライベート・データ）は、そのタスクに対して一意である物理的場所に格納されるであろう。
【００１４】
このことは、図１により明瞭に示されており、そこにおいては、Ｙ軸は、仮想アドレス空間を定義し、そしてＸ軸は、時間を定義する。図１は、４つのタスク５１−５４を示す。各タスクの実行は、コード及びデータをフェッチすることを要求する。第１のタスク５１の実行は、プライベート・コード１１、共用コード１２、共用データ１４及びプライベート・データ１３をフェッチすること含む。第２のタスク５２の実行は、プライベート・コード２１及び共用データ２２をフェッチすることを含む。第３のタスク５３の実行は、プライベート・コード３１、共用コード３２、共用データ３４及びプライベート・データ３３をフェッチすることを含む。第４のタスク５４は、プライベート・コード４１、共用データ４３及びプライベート・データ４２をフェッチすることを含む。共用コード１２及び３２は、同じ仮想アドレス及び同じ物理アドレスを有するよう構成されている。共用データ１３、２２、３４及び４３は、同じ仮想アドレスを有するよう構成されているが、しかし外部メモリに格納された関連のデータは、異なる物理アドレスに格納されるであろう。図１における各ボックスは複数のアドレスを表すことに注目されたい。
【００１５】
その結果、仮想アドレス・キャッシュは、プロセッサにより発生された仮想アドレスを参照してデータを格納する一方で、外部メモリに格納されるべきデータは、物理アドレス空間に格納される。
【００１６】
更に、マルチタスキング環境で動作する仮想アドレス・キャッシュは、格納されたデータと関連したアドレス／タグを格納するためのアドレス又はタグ・フィールドと、どのタスクにアドレス／タグ及びデータが関連付けられるかについて識別するためタスク識別子フィールドとを有するであろう。
【００１７】
その結果、マルチタスク環境内で、「ヒット」は、キャッシュに格納されたデータに関するアドレス／タグがプロセッサにより要求された仮想アドレスに一致し、且つキャッシュに格納されたデータと関連したタスク識別子フィールドがプロセッサにより実行されている現在のアクティブ・タスクに一致することを要求する。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
プロセッサが１つのタスクから別のタスクに切り替えるとき、第１のタスクと関連した、仮想アドレス・データ・キャッシュのコンテンツは、典型的には、より高いレベル・メモリへフラッシュ（ｆｌｕｓｈ）され、そして新しいタスクと関連した新しいデータは、仮想アドレス・キャッシュにロードされる。これは、新しいタスクが２つのタスク間で共用される更新されたデータを使用することを可能にする。しかしながら、タスク間を切り替えるときメモリ・コンテンツを変える必要性が、キャッシュとより高いレベルのメモリとの間のバス・トラフィックを増大させ、そしてプロセス間通信を処理する点でオペレーティング・システムの複雑さを増大させる。これはまた、フラッシュ後の共用データへの「ミス」アクセスに消費する冗長な時間を生成する。共用コードの場合には、フラッシュは、タスク切り替え後に必要とされないが、しかしこれは、共用コードをキャッシュ・メモリに複写することが必要になることにより共用コードのフットプリントを増大させる。
【００１９】
１つの解法は、物理アドレス・キャッシュを用いなければならなく、そこにおいては、トランスレータは、プロセッサにより発生された仮想アドレスを、データを物理アドレス・キャッシュに格納するため用いられるそれぞれの物理アドレスに変換し、それによりタスク間で共用されたデータがその物理アドレスにより容易に識別されることを保証する。
【００２０】
しかしながら、仮想アドレスのその対応の物理アドレスへの変換は、緊密な時間制約を有する高速プロセッサで実行するためには困難である場合がある。
【００２１】
この状況を改善することが望ましい。
【課題を解決するための手段】
【００２２】
本発明は、添付の特許請求の範囲に記載されるように仮想アドレス・キャッシュに格納されたデータを共用するための仮想アドレス・キャッシュ及び方法を提供する。
【００２３】
共用されるデータ又は共用される命令と関連したタスク識別子に限定されるわけではないが当該タスク識別子のような指示が、それらのデータ又は命令がタスク間で共用されることを指示する。
【００２４】
本発明が、ここで、一例として、添付図面を参照して説明されるであろう。
【発明を実施するための最良の形態】
【００２５】
以下の説明は、複数のデータ検索動作、及びデータを格納する仮想アドレス・キャッシュに関連する。当業者は、開示されたシステム及び方法を必要な変更を加えて、命令検索や、命令を格納する仮想アドレス・キャッシュや、更にはデータ及び命令検索の組み合わせや、命令及びデータの両方を格納するキャッシュ・モジュールにすら適用することができることを認めるであろう。
【００２６】
図２は、本発明の一実施形態に従った装置１００を示す。装置１００は、プロセッサ１１０、データ・チャネル１３０、メモリ管理ユニット（ＭＭＵ）３００のようなメモリ制御器、命令チャネル３４０、レベル１ＲＡＭメモリ３７０、並びにインターフェース・ユニット３８０を含む。装置１００は、高レベル・メモリ・モジュール５０のような追加のメモリ・モジュールにシステム・バス６０を介して接続される。
【００２７】
プロセッサ１１０及び命令チャネル３４０は、単一のプログラム・バス１２０に接続される。プロセッサ１１０は、第１のデータ・ポート１１６及び第２のデータ・ポート１１８を有する。第１のデータ・ポート１１６は、第１のデータ・バス（ＸＡ）１２２を介してデータ・チャネル１３０の第１のポート１３２に接続される。第２のデータ・ポート１１８は、第２のデータ・バス（ＸＢ）１２４を介してデータ・チャネル１３０の第２のポート１３４、ＭＭＵ３００、及びレベル１ＲＡＭメモリ３７０に接続される。
【００２８】
データ・チャネル１３０は、データ・フェッチ・バス１２６を介してインターフェース・ユニット３８０に接続され、次いで当該インターフェース・ユニット３８０は、高レベル・メモリ・モジュール５０に接続される。追加のメモリがマルチレベル・キャッシュ・アーキテクチャの一部であることができるのに対し、データ・キャッシュ・モジュール２００のような仮想アドレス・キャッシュが第１レベルのキャッシュ・モジュールであり、そして追加のメモリがレベル２キャッシュ・メモリであることに注目されたい。追加のメモリはまた、外部メモリの一部であることができ、その外部メモリはまたメイン・メモリと呼ばれる。データ・チャネル１３０は、データ・キャッシュ・モジュール２００を含み、そして任意にバッファ及び類似のもの（図示せず）のような追加のデバイスを含むことができる。キャッシュ・ミスが生じたとき、データ・チャネルが、データをインターフェース・ユニット３８０を介して検索する。
【００２９】
ＭＭＵ３００は、プログラム及びデータ・ハードウエア保護を与え、且つ仮想アドレスから物理アドレスへの高速の変換を実施するよう適合されている。ＭＭＵ３００はまた、様々なキャッシュ及びバス制御信号を与えることが可能である。仮想アドレスは、プロセッサ１１０により発生されるアドレスであり、プロセッサ１１０により実行されるコードにより見られるアドレスである。物理アドレスを用いて、レベル１ＲＡＭメモリ３７０のような様々なより高いレベルのメモリ・バンクにアクセスする。ひとたびプロセッサ１１０がデータをデータ・キャッシュ・モジュール２００から要求すると、ＭＭＵ３００は、そのデータ要求（又はより一般的にはプロセッサ１１０により実行されているタスク）と関連したタスク識別子をデータ・キャッシュ・モジュール２００に送る。典型的には、プロセッサ１１０は、更新されたタスク識別子をＭＭＵ３００に送るオペレーティング・システムを実行する。
【００３０】
ＭＭＵ３００は、どのデータが共用され、またどの命令が共用されるかを定義する（又は代替として、そのような定義を別の装置から受け取る）よう適合されている。ＭＭＵ３００は、共用データ指示をデータ・キャッシュ２００に送ることが可能であり、そしてまたデータ・キャッシュ２００に格納されたタスク識別子を変更することが可能である。上記変更は、制御信号をデータ・キャッシュ２００に送ることにより、又は一意のタスク識別子をデータ・キャッシュ２００に送ることによってさえ開始され得る。
【００３１】
プロセッサ１１０は、２つのデータ要求を同時にＸＡ１２２及びＸＢ１２４を介して発行することが可能である。データ・チャネル１３０は、これらの要求を処理して、１又はそれより多いキャッシュ・ヒットが生じたかどうかを決定する。基本的に、データ・チャネル１３０は、２つのデータ要求がキャッシュ・ヒットをもたらしたことと、両方の要求がキャッシュ・ミスをもたらしたことと、１つの要求がキャッシュ・ヒットをもたらす一方で、他方の要求がキャッシュ・ミスをもたらしたこととのいずれかであることを判定することができる。
【００３２】
図３は、本発明の一実施形態に従ったキャッシュ論理の一部２１２の概略図である。キャッシュ論理２１０は、２つのデータ要求を同時にマッピングすることが可能であり、そして２つの同一の部分２１２及び２１４を含み、それぞれの部分は、単一のキャッシュ・ヒット又はキャッシュ・ミスのいずれが生じたかを決定することが可能である。説明を簡単にするため、キャッシュ論理２１０の第１の部分２１２のみが、詳細に図示されている。
【００３３】
キャッシュ論理部分２１２は、ウエイ０−ウエイ７ ２２０（０）−２２０（７）により示される８個のウエイを含む。各ウエイは、１６個のラインと関連付けられているアドレス及びステータス情報（状態情報）を格納する。アドレス情報は、タグ・アドレスを含み、そしてステータス情報は、ＢＤＶ有効度情報及び更新情報を含む。情報の単純化のため、唯１つのウエイ０２２０（０）が、詳細に示される一方、他のウエイは、ボックス２２０（１）−２２０（７）により表されている。キャッシュ論理部分が８個のウエイ又は１−７ウエイより多くのウエイを含むことができることに注目されたい。
【００３４】
キャッシュ論理部分２１２は、一意タスク論理４０９を含み、当該一意タスク論理４０９は、そのようなタスク識別子と関連したデータが複数のタスク間で共用されることを指示するタスク識別子値を格納することが可能である。
【００３５】
図１は、全てのタスク間で共用されるデータを示すが、これは、必ずしもそうであるわけではなく、データは、他のタスクにより共用されていない間に或る一定のタスク間で共用されることができることに注目されたい。従って、一意のタスク識別子値は、データを共用するタスクの各サブグループに割り当てられる。
【００３６】
一意タスク論理４０９は、これらの値を比較器４１０（０）−４１０（９）のような比較器に送り、当該比較器４１０（０）−４１０（９）は、格納されたタスク識別子を一意のタスク識別子値と比較して、データが共用されるかどうかを決定することができる。
【００３７】
本発明の別の実施形態に従って、一意タスク論理４０９はまた、格納されたタスク識別子が共用データを指示するかどうかを決定することが可能である。一意タスク論理４０９は、格納されたタスク識別子の一部のみを比較して、それらがそれらと関連したデータが共用されることを指示するかどうかを決定するマスキング論理を含むことができる。
【００３８】
以下の説明は、一意タスク論理４０９の動作を一層良く説明する。タスク識別子が８ビット長であると仮定する。データが全てのタスク間で共用される場合、ゼロの一意のタスク識別子値は、共用データの決定を単純化することができる。８個の入力を有するＮＯＲゲートは、格納されたタスク識別子を受け取り、そしてそれがその格納されたタスク識別子と関連したデータが共用されることを指示するかどうかの指示を与えることができる。「１１１１１１１１」の一意のタスク識別子値が選択された場合、８個の入力を有するＡＮＤゲートは、決定を与えることができる。いずれにせよ、８ビット比較器は、上記比較を実行することができる。
【００３９】
データがまさにタスクのサブグループ間で共用され、且つキャッシュ論理が（格納されたタスク識別子が或る一定の範囲の値に属するならば）キャッシュ・ヒットが生じたかどうかを決定しなければならないとき、これは、格納されたタスク識別子の一部分をマスキングし且つ一部分のみを一意のタスク識別子値と比較することにより実行されることができる。
【００４０】
高速の比較方法が当該技術で既知であり、そしてキャッシュ論理により適用されることができることに注目されたい。
【００４１】
キャッシュ論理部分２１２に戻って参照すると、各キャッシュ・ラインは、拡張されたタグ値及び１６個のＢＤＵ有効度ビットと関連付けられる。なお、ＢＤＵ有効度ビットは、そのライン内の各ＢＤＵの有効度を表す。ウエイ０２２０（０）は、１６個の拡張されたタグ・アドレス２２１（０）−２２１（１５）、並びに１６個の基本データ・ユニット（ＢＤＵ）有効度フラグを１セットとした１６セット２２０（０，０）−２２０（１５，１５）を格納する。
【００４２】
拡張されたタグ・アドレス（これはまた格納された拡張タグ・アドレスと呼ばれる。）は、格納された仮想アドレスの一部分（通常最上位部分）並びに格納されたタスク識別子を含む。例えば、拡張タグ・アドレス２２１（０）は、仮想アドレスの一部分（これはまた格納されたタグ・アドレス２２３（０）と呼ばれる。）及び格納されたタスク識別子２２２（０）を含む。ＢＤＵは、データ検索のための基本構成要素である。
【００４３】
各ＢＤＵはまた、ＢＤＵがより高いレベルのメモリで更新されることなしに変更されたかどうかを指示するダーティ・ビットと関連付けられことができる。
【００４４】
データのデータ・キャッシュ・モジュール２００からの検索は、キャッシュ論理２１０へ、８ビット・タスク識別子（ＭＭＵ３００から）、及びアドレス４００（プロセッサ１１０からデータ・バスＸＡ及びＸＢのうちの１つを介して）を与えることにより開始する。キャッシュ論理２１０の第１の部分２１２は、このアドレス及びタスク識別子を処理して、要求されたデータがキャッシュ・モジュールに格納されている（キャッシュ・ヒット）のか、或いは格納されていない（キャッシュ・ミス）のかを決定する。キャッシュ・ヒットが生じた場合、要求されたデータは、プロセッサ１１０へＸＡ１２２又はＸＢ１２４からの適切なデータ・バスを介して送られる。
【００４５】
アドレス４００は、タグ・アドレス４０２、ライン・インデックス４０４、ＢＤＵオフセット４０５及びバイト・オフセット４０８に仕切られている。バイト・オフセット４０８は、キャッシュ・メモリ・バンク２５０からのデータ検索のため用いられる。拡張タグ・アドレスは、上記タグ・アドレス４０２及びタスク識別子４０１を含む。
【００４６】
比較器４１０（０）−４１０（９）は、並列に動作する。説明の便宜のため、比較器４１０（０）に言及する。比較器４１０（０）は、（ａ）仮想アドレス４００、又は典型的にはアドレス４００の一部分のみであるタグ・アドレス４０２と、（ｂ）格納された仮想アドレス、又は典型的には格納されたタグ・アドレス２２３（０）と、（ｃ）一意タスク論理４０９からの一意のタスク識別子値（又はデータが共用されることの指示）と、（ｄ）２２２（０）のような格納されたタスク識別子と、（ｅ）どのタスクがプロセッサ１１０により実行されているかを指示するタスク識別子４０１のような現在タスク識別子とを受け取る。
【００４７】
比較器４１０（０）は、タグ・アドレス４０２が格納されたタグ・アドレス２２３（０）に等しい場合、そして次の条件、即ち、（ｉ）受け取られたタスク識別子４０１が格納されたタスク識別子２２０（０）に等しいことと、（ｉｉ）格納されたタスク識別子２２０（０）がデータが複数のタスク間で共用されることを指示することとのうちの１つ又は２つが満足される場合、要求されたデータがデータ・キャッシュ２００内に格納されることを決定する。
【００４８】
本発明の一実施形態に従って、プロセッサ１１０がデータ・キャッシュ２００内に格納されてない或る一定のデータを検索することを要求する最初の時に、このデータが、外部メモリから検索される。このデータは、通常最初に、データ・キャッシュ２００内に、キャッシュ・ミスを引き起こしたタスク識別子と共に格納される。それにも拘わらず、ＭＭＵ３００がデータが共用されることを決定した場合、それは、キャッシュ論理部分２１２を強制して格納されたタスク識別子を一意のタスク識別子に変えさせる。
【００４９】
その上、ＢＤＵオフセット４０５及びライン・インデックス４０４を用いて、要求されたＢＤＵに対応する有効度フラグを検索する。４ビット・ライン・インデックス４０４を用いて、１６セットのウエイ２２０（０）から１セットのＢＤＵ有効度フラグを選択し、一方４ビットＢＤＵオフセット４０５を用いて、その選択されたセットのＢＤＵ有効度フラグから有効度フラグを選択する。
【００５０】
現在の実施形態がタスク識別子がメモリ制御器１０４により与えられることを示すが、仮想アドレス・データ・キャッシュ１００が、タスク識別子をコンピュータ・システム内の他の構成要素、例えば、プロセッサ１０１から受け取ることができるであろう。
【００５１】
図４は、本発明の一実施形態に従った比較器４１０（０）の様々な構成要素及びその環境を示す。
【００５２】
比較器４１０（０）は、第１の比較器構成要素４０１（０）、第２の比較器構成要素４０２（１）、ＯＲゲート４０３（０）、ＡＮＤゲート４０４（０）及び第３の比較器４０５（０）を含む。
【００５３】
第１の比較器構成要素４０１（０）は、受け取られたタグ・アドレス４０１を格納されたタグ・アドレス２２３（０）と比較して、第１の比較信号Ｃ＿１（０）を与える。第２の比較器構成要素４０２（１）は、格納されたタスク識別子２２０（０）をタスクＩＤ４０１（ＭＭＵ３００により与えられる）と比較して、第２の比較信号Ｃ＿２（０）を与える。格納されたタスク識別子２２２（０）が、一意タスク論理４０９により与えられる一意のタスク識別子値と比較されて、第３の比較信号Ｃ＿３（０）を与える。前述したように、一意タスク論理４０９は、格納されたタスク識別子２２０（０）が関連のデータが他の手段により共用されることを指示するかどうかを決定することができる。ＯＲゲート４０３（０）は、Ｃ＿２（０）及びＣ＿３（０）を受け取り、そして第４の比較信号Ｃ＿４（０）を与える。そこで、Ｃ＿４（０）＝Ｃ＿２（０）ＯＲ Ｃ＿３（０）である。ＡＮＤゲート４０４（０）は、Ｃ＿１（０）及びＣ＿４（０）を受け取り、そしてキャッシュ・ヒット／ミス信号（Ｈ／Ｍ（０））を与える。そこで、Ｈ／Ｍ（０）＝Ｃ＿４（０）ＡＮＤ Ｃ＿１（０）である。
【００５４】
全てのウエイは、並列に動作する。または、より詳細には、全てのウエイの中の同じインデックスが、並列に動作する。従って、キャッシュ・ヒットは、１つのキャッシュ・ヒット／ミス信号がキャッシュ・ヒットが生じたことを指示する場合で且つ対応するデータが有効である場合に生じる。
【００５５】
キャッシュ論理２１０及びＭＭＵ３００の動作が更に、次の表により示される。Ｒ＿ＴＡＧは、タグ・アドレス４０２のような受け取られたタグ・アドレスであり、Ｒ＿Ｔ＿ＩＤは、タスク識別子４０１のような受け取られたタスク識別子であり、Ｓ＿Ｔ＿ＩＤは、格納されたタスク識別子２２１（０）のような格納されたタスク識別子である。Ｃ＿１−Ｃ＿４は、比較器４１０（０）の比較信号のような比較信号であり、Ｈ／Ｍは、キャッシュ・ヒット／ミス信号Ｈ／Ｍ（０）のようなキャッシュ・ヒット／ミス信号である。
【００５６】
【表１】
2008511882.tif 000003
【００５７】
図５は、本発明の一実施形態に従ってデータを共用する方法５００のフロー・チャートである。
【００５８】
方法５００は、仮想アドレス、及びデータをアドレッシングするためのタスク識別子を受け取るステップ５１０により開始する。図２−図４において説明した例を参照すると、キャッシュ論理２１０の第１の部分２１２は、アドレス４００及びタスク識別子４０１を受け取る。
【００５９】
ステップ５１０には、ステップ５２０が続く。ステップ５２０は、受け取られた仮想アドレスの少なくとも一部分とメモリに格納されたデータと関連したアドレスの少なくとも一部分との比較に基づいて、且つ次の判定基準、即ち、（ｉ）受け取られたタスク識別子が格納されたタスク識別子に等しいことと、（ｉｉ）或る一定の格納された仮想アドレスと関連した格納されたタスク識別子がデータが複数のタスク間で共用されることを指示することとのうちの少なくとも１つを満足することに基づいて、データがメモリに格納されるかどうかについて決定する。図２−図４において説明した例を参照すると、比較器４１０（０）−４１０（９）は、受け取られたタスク識別子４０１及びアドレス４００の一部分を、格納されたタスク識別子２２１（０）−２２１（９）及び格納されたタグ・アドレス２２２（０）−２２２（９）と比較する。
【００６０】
ステップ５２０には、キャッシュ・ヒットが生じた場合データをキャッシュから与えるステップ５３０が続く。ステップ５３０には、データをキャッシュ・モジュールから受け取るための別の要求が受け取られたとき、ステップ５１０が続く。
【００６１】
ステップ５２０には、キャッシュ・ミスが生じた場合データを別のメモリ・モジュールからフェッチするステップ５４０が続く。ステップ５４０はまた、データ、関連のタグ・アドレス及びタスク識別子を格納することを含む。ステップ５４０には、関連のデータがタスク間で共用されることを指示するかどうかのようなタスク識別子を変えるかどうかを決定し、そしてその決定に応答して選択的に変えるステップ５５０が続く。ステップ５５０には、ステップ５１０が続く。
【００６２】
ステップ５２０が読み出しサイクルの一部分内で完了されることが都合良い。
本発明の他の実施形態に従って、タスク識別子以外の或る一定のフィールド、属性又はビットは、データが複数のタスク間で共用されることを指示する。ＭＭＵ３００が上記指示を仮想アドレス・キャッシュに与え、そしてそのタスク識別子をより遅くに与えないことが都合良い。
【００６３】
本明細書で説明されたものの変形、変更及び他の実施が、本発明の特許請求の範囲及び趣旨から逸脱することなしに当業者により行われるであろう。従って、本発明は、上記の例示的記載により定義されるべきでなく、代わりに添付の特許請求の範囲の趣旨及び範囲により定義されるべきである。
【図面の簡単な説明】
【００６４】
【図１】図１は、仮想アドレス空間対時間のチャートを示す。
【図２】図２は、本発明の一実施形態に従った装置を示す。
【図３】図３は、本発明の一実施形態に従ったキャッシュ論理の概略図である。
【図４】図４は、本発明の一実施形態に従った比較器の様々な構成要素及びその環境を示す。
【図５】図５は、本発明の一実施形態に従ったデータを共用する方法のフロー・チャートである。
【図１】
2008511882.tif 000004
【図２】
2008511882.tif 000005
【図３】
2008511882.tif 000006
【図４】
2008511882.tif 000007
【図５】
2008511882.tif 000008
【国際調査報告】
2008511882.tif 000009
2008511882.tif 000010
2008511882.tif 000011
2008511882.tif 000012
2008511882.tif 000013
2008511882.tif 000014