JP2008512758A - 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法 - Google Patents

仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法 Download PDF

Info

Publication number
JP2008512758A
JP2008512758A JP2007530782A JP2007530782A JP2008512758A JP 2008512758 A JP2008512758 A JP 2008512758A JP 2007530782 A JP2007530782 A JP 2007530782A JP 2007530782 A JP2007530782 A JP 2007530782A JP 2008512758 A JP2008512758 A JP 2008512758A
Authority
JP
Japan
Prior art keywords
virtual address
data
memory
cache
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007530782A
Other languages
English (en)
Inventor
バチャール,モシェ
エフラット,ヤコブ
エルダー,アロン
トカール,ヤコブ
ペレド,イタイ
アンシェル,モシェ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
NXP USA Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NXP USA Inc filed Critical NXP USA Inc
Publication of JP2008512758A publication Critical patent/JP2008512758A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

仮想アドレス・キャッシュは、タスクと関連したデータをアドレッシングするための仮想アドレスを受け取るよう構成された比較器とメモリとを備える。当該比較器は、受け取られた仮想アドレスと関連したデータがメモリに格納されるかどうかについて、仮想アドレスが第1のタスクと第2のタスクとの間で共用されるデータと関連付けられているという指示と、受け取られた仮想アドレスとメモリに格納されたデータと関連したアドレスとの比較とに基づいて決定をするよう構成されている。

Description

本発明は、仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法に関する。
デジタル・データ処理システムは、例えば、家庭電子機器、コンピュータ、車等を含む多くの応用で用いられている。例えば、パーソナル・コンピュータ(PC)は、広い多種多様のユーザ・アプリケーション用のプラットフォームを与えるため複雑なデジタル処理機能を使用する。
デジタル・データ処理システムは、典型的には、入力/出力機能、命令及びデータ・メモリ、及び1又はそれより多くのデータ・プロセッサ、例えば、マイクロコントローラ、マイクロプロセッサ、又はデジタル信号プロセッサのようなものを備える。
処理システムの性能の重要なパラメータは、メモリ性能である。最適な性能のため、メモリが大きく且つ速く、そして好ましくは安価であることが希望される。不都合にも、これらの特性は、要件同士を衝突させがちであり、そして適切なトレードオフが、デジタル・システムを設計するとき要求される。
処理システムのメモリ性能を改善するため、異なるタイプのメモリの個々の利点を活用しようとする複雑なメモリ構造が、開発されてきた。特に、より大きくより遅くてより安価なメイン・メモリと関連して速いキャッシュ・メモリを用いることが一般的になった。
例えば、PCにおいて、メモリは、典型的に異なるサイズ及び速度のメモリをからなる記憶階層に組織化される。従って、PCは、典型的には、低コストであるがしかし遅いメイン・メモリを備え、その上、比較的小さいく高価であるが速いメモリを備える1又はそれより多いキャッシュ・メモリ・レベルを有する。動作中に、メイン・メモリからのデータは、速い読み出しサイクルを可能にするためキャッシュ・メモリに動的にコピーされる。同様に、データは、メイン・メモリよりむしろキャッシュ・メモリに書き込まれ、それにより、速い書き込みサイクルを可能にする。
従って、キャッシュ・メモリは、メイン・メモリの異なるメモリ場所と動的に関連付けられ、そしてメイン・メモリとキャッシュ・メモリとの間のインターフェース及び相互作用が許容可能な性能にとって重要であることが、明らかである。従って、キャッシュ動作についての重要な研究が、行われ、そしてデータがメイン・メモリではなくキャッシュ・メモリへ書き込まれ又はそれから読み出されるときを、並びにデータがキャッシュ・メモリとメイン・メモリとの間で転送されるときを制御する様々な方法及びアルゴリズムが、開発されてきた。
典型的には、プロセッサが読み出し動作を実行するときは常に、キャッシュ・メモリ・システムは、最初に、対応するメイン・メモリ・アドレスがキャッシュと現在関連付けられているかどうかを検査する。キャッシュ・メモリがメイン・メモリ・アドレスに関する有効なデータ値を含む場合、このデータ値は、キャッシュによりシステムのデータ・バス上に置かれ、そして読み出しサイクルは、いずれの待ちサイクル無しに実行する。しかしながら、キャッシュ・メモリがメイン・メモリ・アドレスに関する有効なデータ値を含まない場合、メイン・メモリ読み出しサイクルが、実行され、そしてデータが、メイン・メモリから検索される。典型的には、メイン・メモリ読み出しサイクルは、1又はそれより多い待ち状態を含み、それによりプロセスを遅くする。
プロセッサがデータをキャッシュ・メモリから受け取ることができるメモリ動作は、通常、キャッシュ・ヒットと呼ばれ、そしてプロセッサがデータをキャッシュ・メモリから受け取ることができないメモリ動作は、通常、キャッシュ・ミスと呼ばれる。典型的には、キャッシュ・ミスは、プロセッサがデータをメイン・メモリから検索することをもたらすばかりでなく、メイン・メモリとキャッシュとの間の多数のデータ転送ももたらす。例えば、所与のデータがアクセスされ、キャッシュ・ミスをもたらす場合、後続のメモリ場所が、キャッシュ・メモリへ転送される。プロセッサが頻繁に連続したメモリ場所にアクセスするので、それにより所望のデータを有するキャッシュ・メモリの確率は、通常増大する。
キャッシュのヒット率を改善するため、Nウエイ・キャッシュ(N−way caches)が用いられ、そこにおいて、命令及び/又はデータが、N個の格納ブロック(即ち、複数の「ウエイ」)の1つに格納される。
キャッシュ・メモリ・システムは、典型的には、キャッシュ・メモリの解像度に対応する複数のキャッシュ・ラインに分割される。セットアソシエイティブ・キャッシュ・システムとして知られているキャッシュ・システムにおいては、多数のキャッシュ・ラインが、異なるセットに一緒にグループ化され、そこにおいて、各セットは、メイン・メモリ・アドレスのより低いデータ・ビットに対しての固定マッピングに対応する。1つのセットを形成する各キャッシュ・ラインの極端なケースは、直接マッピング・キャッシュとして知られ、そして各メイン・メモリ・アドレスが1つの特定のキャッシュ・ラインにマッピングされることをもたらす。全てのキャッシュ・ラインが単一のセットに属する他の極端なケースは、フルアソシエイティブ・キャッシュとして知られ、そしてこれは、各キャッシュ・ラインをいずれのメイン・メモリ場所にマッピングすることを可能にする。
どのメイン・メモリ・アドレス(有るならば)に各キャッシュ・ラインが関連付けられているかの経過を追うため、キャッシュ・メモリ・システムは、典型的には、各キャッシュ・ラインに関してそのキャッシュ・ラインとメイン・メモリとの間の現在のマッピングを指示するデータを保持するためのデータ・アレイを備える。詳細には、データ・アレイは、典型的には、関連のメイン・メモリ・アドレスのより高いデータ・ビットを備える。この情報は、通常、タグとして知られ、そしてデータ・アレイは、タグアレイとして知られている。その上、より大きいキャッシュ・メモリについては、アドレスのサブセット(即ち、インデックス)を用いて、キャッシュ内のライン位置を指示し、そこにおいて、アドレスの最上位ビット(即ち、タグ)が、データと共に格納される。インデクッシング(indexing)を用いるキャッシュにおいては、特定のアドレスを有するアイテムが、関連のインデックスにより指示されたラインのセット内にのみ配置されることができる。
プロセッサがデータをメモリから読み出し及びそれへ書き込むのを可能にするため、プロセッサは、典型的には、仮想アドレスを生成するであろう。物理アドレスは、メイン(即ち、より高いレベル)メモリのアドレスであって、プロセッサにより発生される仮想アドレスと関連付けられるアドレスである。マルチタスク環境は、プロセッサが異なるタスクを異なる時間にサービス提供する環境である。マルチタスク環境内では、異なるタスクにより発生された同じ仮想アドレスは、必ずしも同じ物理アドレスと関連付けられるわけではない。異なるタスク間で共用されるデータは、このデータを共用する全てのタスクのため同じ物理的場所に格納される一方で、異なるタスク間で共用されないデータ(即ち、プライベート・データ)は、そのタスクに対して一意である物理的場所に格納されるであろう。
このことは、図1により明瞭に示されており、そこにおいては、Y軸は、仮想アドレス空間を定義し、そしてX軸は、時間を定義する。図1に示されるように、4つのタスク151、152、153、154と関連付けられたプライベート・データ150は、同じ仮想アドレスを有するよう構成される。しかしながら、外部メモリに格納された関連のデータは、異なる物理アドレスに格納されるであろう。4つのタスク151、152、153、154の共用されるデータ155は、同じ仮想アドレス及び同じ物理アドレスを有するよう構成される。
その結果、仮想アドレス・キャッシュは、プロセッサにより発生された仮想アドレスを参照してデータを格納する一方で、外部メモリに格納されるべきデータは、物理アドレス空間に格納される。
更に、マルチタスキング環境で動作する仮想アドレス・キャッシュは、格納されたデータと関連したアドレス/タグを格納するためのアドレス又はタグ・フィールドと、どのタスクにアドレス/タグ及びデータが関連付けられるかについて識別するためタスク識別子IDフィールドとを有するであろう。
その結果、マルチタスク環境内で、「ヒット」は、キャッシュに格納されたデータに関するアドレス/タグがプロセッサにより要求された仮想アドレスに一致し、且つキャッシュに格納されたデータと関連したタスクID識別子フィールドがプロセッサにより実行されている現在のアクティブ・タスクに一致することを要求する。
プロセッサが1つのタスクから別のタスクに切り替えるとき、第1のタスクと関連した、仮想アドレス・データ・キャッシュのコンテンツは、典型的には、より高いレベル・メモリへフラッシュ(flush)され、そして新しいタスクと関連した新しいデータは、仮想アドレス・キャッシュにロードされる。これは、新しいタスクが2つのタスク間で共用される更新されたデータを使用することを可能にする。しかしながら、タスク間を切り替えるときメモリ・コンテンツを変える必要性が、キャッシュとより高いレベルのメモリとの間のバス・トラフィックを増大させ、そしてプロセス間通信を処理する点でオペレーティング・システムの複雑さを増大させる。これはまた、フラッシュ後の共用データへの「ミス」アクセスに消費する冗長な時間を生成する。共用コードの場合には、フラッシュは、タスク切り替え後に必要とされない。しかしながら、これは、共用コードをキャッシュ・メモリに複写することが必要になることにより共用コードのフットプリントを増大させる。
1つの解法は、物理アドレス・キャッシュを用いなければならなく、そこにおいては、トランスレータは、プロセッサにより発生された仮想アドレスを、データを物理アドレス・キャッシュに格納するため用いられるそれぞれの物理アドレスに変換し、それによりタスク間で共用されるデータがその物理アドレスにより容易に識別されることを保証する。
しかしながら、仮想アドレスのその対応の物理アドレスへの変換は、緊密な時間制約を有する高速プロセッサで実行するためには困難である場合がある。
この状況を改善することが望ましい。
本発明は、添付の特許請求の範囲に記載されるように仮想アドレス・キャッシュに格納されたデータを共用するための仮想アドレス・キャッシュ及び方法を提供する。
これは、仮想アドレス・キャッシュが異なるタスク間で切り替えるときキャッシュ・データをより高いレベルへフラッシュする必要無しに、マルチタスク環境内の異なるタスク間でデータ及びコードを共用することを可能にし、それによりキャッシュとより高いレベル・メモリとの間のバス・トラフィックを最小にし;プロセス間通信の処理におけるオペレーティング・システムの複雑さを低減し;フラッシュ後の共用データに対する時間を浪費する「ミス」アクセスの回数を低減し;及びキャッシュ・メモリの中の共用データを複写する必要が無いことにより共用データのフットプリントを低減する利点を与える。
本発明が、ここで、一例として、添付図面を参照して説明されるであろう。
図2は、仮想アドレス・データ・キャッシュ100を示す。仮想アドレス・データ・キャッシュ100は、プロセッサ101により発生され受け取られた仮想アドレスと仮想アドレス・データ・キャッシュ100内のキャッシュ・メモリに格納された仮想アドレスと関連したデータとの間に仮想アドレス・マッチ(一致)が存在するかどうかを決定することができ、そこにおいて、共用されるデータ・インディケータが与えられる場合、タスクIDマッチが要求されない。これは、仮想アドレス・データ・キャッシュ100の中で共用されるデータ(以下、「共用データ」という。)を保持し、そしてプロセッサ101により実行される様々なタスク間で用いられることを可能にする。しかしながら、共用データ・インディケータが与えられない(即ち、プライベート・データであることを指示する)場合、タスクIDマッチが、仮想アドレス・マッチに加えて要求される。
図2は、並列プロセッサ・バス102を介してシステム・プロセッサ101に結合された仮想アドレス・データ・キャッシュ100及びメモリ・コントローラ104を示し、仮想アドレス・データ・キャッシュ100は、更に並列システム・バス103を介してシステム・メモリ113(即ち、外部メモリ)に結合されている。しかしながら、この実施形態が仮想アドレス・データ・キャッシュに言及しているが、当該実施形態が等しく仮想アドレス命令キャッシュに適用することができるであろうことが注目されるべきである。
仮想アドレス・データ・キャッシュ100は、システム・プロセッサ101により発生された仮想アドレスを参照してデータを格納するよう構成されている。
メモリ・コントローラ104は、並列バス111を介して仮想アドレス・データ・キャッシュ100に結合される。
メモリ・コントローラ104は、外部メモリ・アクセスを制御し、そして仮想アドレスを物理アドレスに変換するよう構成されている。
メモリ・コントローラ104は、メモリ再配置をサポートするため仮想アドレスから物理アドレスへ変換する高速変換機構を実現するよう構成されている。
その上、メモリ・コントローラ104は、メモリ管理のためのキャッシュ及びバス制御を与える。
メモリ・コントローラ104は、以下で説明するように、タスクID情報を格納してマルチタスク・キャッシュ・メモリ管理をサポートして、共用されたタスク及びプライベート・タスクの識別を可能にするよう構成されている。
現在の実施形態は仮想アドレス・データ・キャッシュ100が並列バスを介してシステム・プロセッサ101に結合されているのを示しているが、仮想アドレス・データ・キャッシュ100は、プロセッサ内に物理的に統合化されることができる。
図3は、仮想アドレス・データ・キャッシュ100が仮想アドレスを並列プロセッサ・バス102を介してプロセッサ101から受け取る第1の入力301と、タスクIDをメモリ・コントローラ104から受け取る第2の入力302とを有することを示す。受け取られた仮想アドレスは、プロセッサ101が複数のタスクのうちの1つを実行するため必要とするデータと関連付けられる。タスクIDを用いて、プロセッサが実行している実際のタスクを識別し、そのため、仮想アドレスと関連したデータが、必要とされる。
この実施形態内で、メモリ・コントローラ104は、255個の異なるタスクを区別することができる。しかしながら、異なる数のタスクをサポートすることができる。
現在の実施形態は、タスクIDがメモリ・コントローラ104により与えられることを示すが、仮想アドレス・データ・キャッシュ100は、タスクIDを計算システム内の他の構成要素、例えば、プロセッサ101から受け取ることができるであろう。
仮想アドレス・データ・キャッシュ100は、第1の加算ノード303、第2の加算ノード304、一連の比較器305(即ち、複数の比較器)、キャッシュ・メモリ306及びNウエイ・メモリ・ブロック307を含み、当該Nウエイ・メモリ・ブロック307は、タグ・メモリ308、有効ビット・メモリ309及び有効ビット・チェッカ・モジュール310を含む。
第1の加算ノード303は、仮想アドレスのタグ部分をプロセッサ101から受け取る第1の入力301と、タスクIDをメモリ・コントローラ104から受け取る第2の入力302とに結合される。第1の加算ノード303は、受け取られたタグ及びタスクIDを組み合わせて、拡張されたタグを生成し、当該拡張されたタグは、一連の比較器305のそれぞれの比較器上の第1の入力へ入力される。
Nウエイ・メモリ・ブロック307は、上記で説明したように、メモリ・アドレッシングを可能にするインデックシング・システムを用いる。そのようにして、タグ・フィールドを有するプロセッサ101により発生された仮想アドレスに加えて、仮想アドレスはまた、上記で説明したようなそして当業者に周知であるようなインデックス・フィールドを含む。しかしながら、他のアドレッシング・フォーマットを用いることができるであろう。
Nウエイ・メモリ・ブロック307は、キャッシュ・メモリ306に格納された全てのデータのステータス(状態)及び場所(位置)を定義するため用いられる。このNウエイ・メモリ・ブロック307は、N個のメモリ・ブロックを含み、そのそれぞれのメモリ・ブロックが複数のインデックス、例えば16個のインデックスを有し、そして各インデックスは、拡張されたタグ・フィールド308と、有効ビット・メモリ309を形成する複数の有効ビット・フィールドを含む。拡張されたタグ・フィールド308は、タスクID及びタグ・アドレスを所与のインデックスに関して含み、それは、アクセスをキャッシュ・メモリ306の中のキャッシュ・ラインにマッピングさせるのを可能にする。なお、キャッシュ・ラインは、キャッシュ・ウエイ及びインデックスの組み合わせにより定義される。複数の有効ビット解像度フィールド309は、当業者に周知のように、アクセスがマッピングされるキャッシュ・ライン内の対応のデータ・ビットが有効かダーティであるかについてのステータス情報を含む。
Nウエイ・メモリ・ブロック307は、一連の比較器305のそれぞれの比較器上の第2の入力に結合され、それによりNウエイ・メモリ・ブロック307における各インデックスは、関連した比較器に結合される。従って、比較器305の数は、Nウエイ・メモリ・ブロック307のインデックス・フィールドの数に等しい。しかしながら、マルチプレクサの使用は、必要な比較器の数を低減するため用いられることができるであろう。
その上、Nウエイ・メモリ・ブロック307は、各インデックスに関する拡張されたタグ情報を、それぞれのインデックスと関連付けられた比較器305に入力するよう構成される。
メモリ・コントローラ104からの制御ライン311は、一連の比較器305のそれぞれの比較器上の第3の入力に結合され、そこにおいてメモリ・コントローラ104は、プロセッサ101により発生された仮想アドレスが共用データ(即ち、タスク間で共用されるべきデータ)又はプライベート・データ(即ち、単一のタスクに限定されたデータ)のいずれかを指示するための制御信号を発生するよう構成されている。制御信号は、いずれの予め決められた信号であることができるであろう。
この実施形態内においては、メモリ・コントローラ104は、プロセッサ101により発生された仮想アドレスが共用データ又はプライベート・データのいずれに対応するかを、発生された仮想アドレスが所定の範囲のアドレス内であるかどうかに基づいて決定し、そこにおいて、1つの範囲の仮想アドレスは、共用データに対応し、そして別の範囲の仮想アドレスは、プライベート・データに対応する。しかしながら、仮想アドレスが共用データ又はプライベート・データのいずれに対応するかを決定する他の手段を用いることができ、例えば、プロセッサ101から直接の制御信号又は仮想アドレス・キャッシュ100からの制御信号は、共用データ又はプライベート・データに対応する1つの範囲の仮想アドレス空間内に事前プログラムされることができるであろう。
Nウエイ・メモリ・ブロック307は更に、有効ビット・チェッカ・モジュール310に結合されて、有効ビット・チェッカがNウエイ・メモリ・ブロック307の各インデックスに関して各有効ビット・フィールドのステータスをモニタリングすることを可能にして、有効ビット・チェッカ・モジュール310がキャッシュ・メモリ306に格納されたいずれの所与のビットが有効か又はダーティであるかを決定することを可能にする。
キャッシュ・メモリ306は、プロセッサにより発生された仮想アドレス内に含まれるインデックス情報を受け取るための仮想アドレス・データ・キャッシュ100の第1の入力301に結合された第1の入力を有して、アクセスと関連のキャッシュ・ラインとの間の連想を形成することを可能にする。
キャッシュ・メモリ306は、複数の比較器305からの出力に結合された第2の入力を有し、当該複数の比較器305においては、個々の比較器は、それぞれキャッシュ・メモリのキャッシュ・ラインと関連付けられる。
キャッシュ・メモリ306は、プロセッサ・バス102及びシステム・バス103のそれぞれを介してプロセッサ101とシステム・メモリ113との間でデータを交換するための第1の出力を有する。
一連の比較器305は、以下で説明するように、キャッシュ・メモリ306内のデータと関連付けられる仮想アドレスとプロセッサ101により発生された仮想アドレスとの間にマッチ(一致)があるかどうかについて決定するよう構成されている。
図4は、比較器400の個々の構成要素を示す。比較器400は、第1の比較器要素401、第2の比較器要素402、ORゲート403及びANDゲート404を含む。
第1の比較器要素401は、プロセッサ101により発生された仮想アドレスに関するタグ情報を受け取る第1の加算ノード303と、キャッシュ・メモリ306に格納されたデータに関するタグ情報を受け取るNウエイ・メモリ・ブロック307との両方に結合されて、プロセッサ101により発生された仮想アドレスに関するタグ情報と、比較器400が関連付けられるキャッシュ・ライン、即ちキャッシュ・メモリ306に格納されたデータと関連したタグ情報とを比較することを可能にする。
第2の比較器要素402は、メモリ・コントローラ104により与えられるタスクID情報を受け取る第1の加算ノード303と、キャッシュ・メモリ306に格納されたデータに関するタスクID情報を受け取るNウエイ・メモリ・ブロック307との両方に結合されて、プロセッサ101により発生された仮想アドレスに関するタスクID情報と、比較器400が関連付けられるキャッシュ・ライン、即ちキャッシュ・メモリに格納されたデータと関連したタスクID情報とを比較することを可能にする。
ORゲート403は、第2の比較器要素402の出力及びメモリ・コントローラ信号311に結合されて、第2の比較器要素402からの出力とメモリ・コントローラ信号311とに対してOR演算を実行する。
ANDゲート404は、第1の比較器要素401の出力及びORゲート403からの出力に結合される。
従って、比較器400は、第1の比較器要素401がプロセッサ101により発生された仮想アドレス・タグが比較器400が関連付けられるNウエイ・メモリ・ブロック307の拡張されたタグ308に格納されたタグ情報と同じである場合、プロセッサ101により発生され受け取られた仮想アドレスと、キャッシュ・ライン、即ちキャッシュ・メモリの中のデータの仮想アドレスとの間の肯定出力マッチを与えるよう構成されている。そして、メモリ・コントローラ制御信号311が、仮想アドレスと関連したデータを共用している(即ち、2以上のタスクがそのデータを用いる。)ことを指示するよう設定されるか、又はメモリ・コントローラ104により与えられるタスクIDが、キャッシュ・メモリ306に格納されたデータと関連付けられたタスクIDと同じであるかのいずれかである。
従って、異なるタスク間で共用されるべきであるキャッシュ・メモリ306に格納されたデータは、プロセッサ101が異なるタスク間を切り替えているとき保持されることができ、それによりプロセッサが異なるタスク間を切り替えているとき全てのキャッシュ・メモリをフラッシュする必要を避けることができる。これは、「ヒット」アクセスが既にキャッシュ・メモリに格納されているデータをタスク切り替え後に直接共用することを可能にする。
この実施形態においては、個々の比較器305は、Nウエイ・メモリ・ブロック307内の拡張されたタグのそれぞれに割り当てられる。従って、プロセッサ101により発生された仮想アドレスを受け取ると直ぐに、比較器305のそれぞれは、その受け取られた仮想アドレスと、それらが関連付けられるNウエイ・メモリ・ブロック307の拡張されたタグ308との比較を実施する。
比較器305のそれぞれからの出力は、上記で説明したようにキャッシュ・メモリに、そして第2の加算ノード304に結合される。
有効ビット・チェッカ・モジュール310は、キャッシュ・メモリに格納されたいずれの所与のビットが有効又はダーティのいずれであるかを決定するための有効ビット解像度フィールド309のそれぞれに結合される。有効ビット・チェッカ・モジュール310からの出力は、第2の加算ノード304に結合される。そして、第2の加算ノード304は、有効ビット・チェッカ・モジュール310がマッチング(一致)された仮想アドレスと関連したキャッシュ・ラインのビットが有効であることを特定し、且つそのキャッシュ・ラインについて関連の比較器305がプロセッサ101により発生された仮想アドレスが共用データとして指示されたか又はマッチングされたタスクIDを有すると決定した場合に、「ヒット」指示をプロセッサ101に対して発生するよう構成されている。
「ヒット」条件が特定された場合、そのマッチを特定した比較器305からの出力を用いて、「ヒット」データをキャッシュ・メモリ306からプロセッサ101へ出力することを開始する。
図1は、仮想アドレス空間対時間のチャートを示す。 図2は、本発明の一実施形態に従ったキャッシュ・システムを示す。 図3は、本発明の一実施形態に従ったデータ・キャッシュを示す。 図4は、本発明の一実施形態に従った比較器の構成を示す。

Claims (9)

  1. タスクと関連したデータをアドレッシングするための仮想アドレスを受け取るよう構成されたメモリ(306)及び比較器(400)を備える仮想アドレス・キャッシュであって、
    前記比較器(400)が、前記の受け取られた仮想アドレスと関連したデータが前記メモリ(306)に格納されるかどうかについて、前記仮想アドレスが第1の識別子を有する第1のタスクと第2の識別子を有する第2のタスクとの間で共用されるデータと関連付けられているという指示(311)と、前記の受け取られた仮想アドレスと前記メモリ(306)に格納されたデータと関連したアドレスとの比較とに基づいて決定することを行うことにより異なる識別子を有するタスクが共用されるデータ及びプライベート・データを有することを可能にするよう構成されていることを特徴とする仮想アドレス・キャッシュ(100)。
  2. 前記比較器(400)が、前記の受け取られた仮想アドレスと関連したタスク識別子を受け取るよう構成され、
    前記比較器(400)が、前記の受け取られた仮想アドレスと関連したデータが前記メモリ(306)に格納されるかどうかについて、前記仮想アドレスが共用されるデータと関連しないという指示(311)と、前記の受け取られた仮想アドレスと前記メモリ(306)に格納されたデータと関連したアドレスとの比較と、前記の受け取られたタスク識別子と前記メモリ(306)に格納されたデータと関連したタスクとの比較とに基づいて決定することを行うよう構成されている
    請求項1記載の仮想アドレス・キャッシュ(100)。
  3. 前記仮想アドレスが前記第1のタスクと第2のタスクとの間で共用されるデータと関連付けられているという指示が、制御信号(311)により前記比較器(400)に与えられる請求項1又は2記載の仮想アドレス・キャッシュ(100)。
  4. 仮想アドレスが前記第1のタスクと第2のタスクとの間で共用されるデータと関連付けられていると決定すると前記制御信号(311)を発生するよう構成されたメモリ制御器(104)を更に備える請求項3記載の仮想アドレス・キャッシュ(100)。
  5. 前記メモリ(306)に格納されたデータと関連した前記アドレスがタグと対応する請求項1から4のいずれか一項に記載の仮想アドレス・キャッシュ(100)。
  6. 前記の受け取られた仮想アドレスのビットの一部が、前記の受け取られた仮想アドレスを前記メモリ(306)に格納されたデータと関連したアドレスと比較するのに用いられる請求項1から5のいずれか一項に記載の仮想アドレス・キャッシュ(100)。
  7. 仮想アドレス・キャッシュ(100)に格納されたデータを共用する方法であって、タスクと関連したデータをアドレッシングするための仮想アドレスを受け取るステップを備える方法において、
    前記の受け取られた仮想アドレスと関連したデータが前記メモリ(306)に格納されるかどうかについて、前記仮想アドレスが第1の識別子を有する第1のタスクと第2の識別子を有する第2のタスクとの間で共用されるデータと関連付けられているという指示と、前記の受け取られた仮想アドレスと前記メモリ(306)に格納されたデータと関連したアドレスとの比較とに基づいて決定することにより異なる識別子を有するタスクが共用されるデータ及びプライベート・データを有することを可能にするステップを備えることを特徴とする方法。
  8. 前記の受け取られた仮想アドレスと関連したタスク識別子を受け取るステップと、
    前記の受け取られた仮想アドレスと関連したデータが前記メモリ(306)に格納されるかどうかについて、前記仮想アドレスが共用されるデータと関連しないという指示と、前記の受け取られた仮想アドレスと前記メモリ(306)に格納されたデータと関連したアドレスとの比較と、前記の受け取られたタスク識別子と前記メモリ(306)に格納されたデータと関連したタスクとの比較とに基づいて決定するステップと
    を更に備える請求項7記載の方法。
  9. データ処理手段と、
    メイン・メモリと、
    請求項1から8のいずれか一項に記載されたデータを共用するよう動作可能に結合されたキャッシュと
    を備えるコンピュータ装置。
JP2007530782A 2004-09-07 2004-09-07 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法 Pending JP2008512758A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2004/052943 WO2006027643A1 (en) 2004-09-07 2004-09-07 A virtual address cache and method for sharing data stored in a virtual address cache

Publications (1)

Publication Number Publication Date
JP2008512758A true JP2008512758A (ja) 2008-04-24

Family

ID=34980394

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007530782A Pending JP2008512758A (ja) 2004-09-07 2004-09-07 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法

Country Status (5)

Country Link
US (1) US20070266199A1 (ja)
EP (1) EP1807767A1 (ja)
JP (1) JP2008512758A (ja)
TW (1) TW200632651A (ja)
WO (1) WO2006027643A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US8117418B1 (en) * 2007-11-16 2012-02-14 Tilera Corporation Method and system for managing virtual addresses of a plurality of processes corresponding to an application
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
JP5152297B2 (ja) 2010-10-28 2013-02-27 株式会社デンソー 電子装置
US20150149446A1 (en) * 2012-07-27 2015-05-28 Freescale Semiconductor, Inc. Circuitry for a computing system and computing system
GB2570110B (en) * 2018-01-10 2020-04-15 Advanced Risc Mach Ltd Speculative cache storage region
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US11588697B2 (en) * 2021-01-21 2023-02-21 Dell Products L.P. Network time parameter configuration based on logical host group

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56163570A (en) * 1980-05-16 1981-12-16 Fujitsu Ltd Multiple imaginary storage control system for multiple virtual computer system
JPS63231550A (ja) * 1987-03-19 1988-09-27 Hitachi Ltd 多重仮想空間制御方式
JPH03235144A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JPH03235143A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JPH1083352A (ja) * 1996-03-22 1998-03-31 Sun Microsyst Inc アドレス変換制御回路及びアドレス変換方法
EP1215582A1 (en) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
US20020078124A1 (en) * 2000-12-14 2002-06-20 Baylor Sandra Johnson Hardware-assisted method for scheduling threads using data cache locality
US20030182512A1 (en) * 2002-03-22 2003-09-25 Per Hammarlund Use of a context identifier in a cache memory

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0442474B1 (en) * 1990-02-13 1997-07-23 Sanyo Electric Co., Ltd. Apparatus and method for controlling cache memory

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56163570A (en) * 1980-05-16 1981-12-16 Fujitsu Ltd Multiple imaginary storage control system for multiple virtual computer system
JPS63231550A (ja) * 1987-03-19 1988-09-27 Hitachi Ltd 多重仮想空間制御方式
JPH03235144A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JPH03235143A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JPH1083352A (ja) * 1996-03-22 1998-03-31 Sun Microsyst Inc アドレス変換制御回路及びアドレス変換方法
US20020078124A1 (en) * 2000-12-14 2002-06-20 Baylor Sandra Johnson Hardware-assisted method for scheduling threads using data cache locality
EP1215582A1 (en) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
US20030182512A1 (en) * 2002-03-22 2003-09-25 Per Hammarlund Use of a context identifier in a cache memory

Also Published As

Publication number Publication date
US20070266199A1 (en) 2007-11-15
TW200632651A (en) 2006-09-16
EP1807767A1 (en) 2007-07-18
WO2006027643A1 (en) 2006-03-16

Similar Documents

Publication Publication Date Title
US6282617B1 (en) Multiple variable cache replacement policy
US5479627A (en) Virtual address to physical address translation cache that supports multiple page sizes
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
EP0185867B1 (en) A memory hierarchy and its method of operation
US8417915B2 (en) Alias management within a virtually indexed and physically tagged cache memory
EP0908825B1 (en) A data-processing system with cc-NUMA (cache coherent, non-uniform memory access) architecture and remote access cache incorporated in local memory
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US20020099913A1 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US20020116586A1 (en) Shared write buffer for use by multiple processor units
US6578111B1 (en) Cache memory system and method for managing streaming-data
US20100325374A1 (en) Dynamically configuring memory interleaving for locality and performance isolation
US6662276B2 (en) Storing directory information for non uniform memory architecture systems using processor cache
JPH1196074A (ja) 交換アルゴリズム動的選択コンピュータシステム
JP2006277762A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US11775445B2 (en) Translation support for a virtual cache
US8145870B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
US7039768B2 (en) Cache predictor for simultaneous multi-threaded processor system supporting multiple transactions
US6332179B1 (en) Allocation for back-to-back misses in a directory based cache
JPH08227380A (ja) データ処理システム
JP2008512758A (ja) 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system
US6598124B1 (en) System and method for identifying streaming-data
KR101102260B1 (ko) 가상 어드레스 캐시 및 고유 태스크 식별자를 이용하는데이터를 공유하기 위한 방법
US20040243765A1 (en) Multithreaded processor with multiple caches

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110704

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110915

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111128