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