JP2008511882A - 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法 - Google Patents

一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法 Download PDF

Info

Publication number
JP2008511882A
JP2008511882A JP2007528617A JP2007528617A JP2008511882A JP 2008511882 A JP2008511882 A JP 2008511882A JP 2007528617 A JP2007528617 A JP 2007528617A JP 2007528617 A JP2007528617 A JP 2007528617A JP 2008511882 A JP2008511882 A JP 2008511882A
Authority
JP
Japan
Prior art keywords
data
virtual address
stored
task identifier
cache
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
JP2007528617A
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 JP2008511882A publication Critical patent/JP2008511882A/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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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部分が或る一定の格納された仮想アドレスの少なくとも対応する部分に等しい場合、そして次の判定基準、即ち、(i)上記受け取られたタスク識別子が格納されたタスク識別子に等しいこと及び(ii)上記の或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が上記データが複数のタスク間で共用されることを指示することのうちの少なくとも1つが満たされる場合、上記メモリに格納されることを決定するよう適合された上記比較器とを含む。当該方法は、仮想アドレス、及びデータをアドレッシングするためのタスク識別子を受け取るステップと、上記データが、上記の受け取られた仮想アドレスの少なくとも1部分とメモリに格納されたデータと関連したアドレスの少なくとも1部分との比較に基づいて、そして次の判定基準、即ち、(i)上記の受け取られたタスク識別子が格納されたタスク識別子に等しいこと、及び(ii)或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が上記データが複数のタスク間で共用されることを指示することのうちの少なくとも1つを満たすことに基づいてメモリに格納されるかどうかについて決定するステップとを含む。

Description

本発明は、仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法に関する。
デジタル・データ処理システムは、例えば、データ処理システム、家庭電子機器、コンピュータ、車等を含む多くの応用で用いられている。例えば、パーソナル・コンピュータ(PC)は、広い多種多様のユーザ・アプリケーション用のプラットフォームを与えるため複雑なデジタル処理機能を使用する。
デジタル・データ処理システムは、典型的には、入力/出力機能、命令及びデータ・メモリ、及び1又はそれより多くのデータ・プロセッサ、例えば、マイクロコントローラ、マイクロプロセッサ、又はデジタル信号プロセッサのようなものを備える。
処理システムの性能の重要なパラメータは、メモリ性能である。最適な性能のため、メモリが大きく且つ速く、そして好ましくは安価であることが希望される。不都合にも、これらの特性は、要件同士を衝突させがちであり、そして適切なトレードオフが、デジタル・システムを設計するとき要求される。
処理システムのメモリ性能を改善するため、異なるタイプのメモリの個々の利点を活用しようとする複雑なメモリ構造が、開発されてきた。特に、より大きくより遅くてより安価なメイン・メモリと関連して速いキャッシュ・メモリを用いることが一般的になった。
例えば、PCにおいて、メモリは、典型的に異なるサイズ及び速度のメモリをからなる記憶階層に組織化される。従って、PCは、典型的には、低コストであるがしかし遅いメイン・メモリを備え、その上、比較的小さいく高価であるが速いメモリを備える1又はそれより多いキャッシュ・メモリ・レベルを有する。動作中に、メイン・メモリからのデータは、速い読み出しサイクルを可能にするためキャッシュ・メモリに動的にコピーされる。同様に、データは、メイン・メモリよりむしろキャッシュ・メモリに書き込まれ、それにより、速い書き込みサイクルを可能にする。
従って、キャッシュ・メモリは、メイン・メモリの異なるメモリ場所と動的に関連付けられ、そしてメイン・メモリとキャッシュ・メモリとの間のインターフェース及び相互作用が許容可能な性能にとって重要であることが、明らかである。従って、キャッシュ動作についての重要な研究が、行われ、そしてデータがメイン・メモリではなくキャッシュ・メモリへ書き込まれ又はそれから読み出されるときを、並びにデータがキャッシュ・メモリとメイン・メモリとの間で転送されるときを制御する様々な方法及びアルゴリズムが、開発されてきた。
典型的には、プロセッサが読み出し動作を実行するときは常に、キャッシュ・メモリ・システムは、最初に、対応するメイン・メモリ・アドレスがキャッシュと現在関連付けられているかどうかを検査する。キャッシュ・メモリがメイン・メモリ・アドレスに関する有効なデータ値を含む場合、このデータ値は、キャッシュによりシステムのデータ・バス上に置かれ、そして読み出しサイクルは、いずれの待ちサイクル無しに実行する。しかしながら、キャッシュ・メモリがメイン・メモリ・アドレスに関する有効なデータ値を含まない場合、メイン・メモリ読み出しサイクルが、実行され、そしてデータが、メイン・メモリから検索される。典型的には、メイン・メモリ読み出しサイクルは、1又はそれより多い待ち状態を含み、それによりプロセスを遅くする。
プロセッサがデータをキャッシュ・メモリから受け取ることができるメモリ動作は、通常、キャッシュ・ヒットと呼ばれ、そしてプロセッサがデータをキャッシュ・メモリから受け取ることができないメモリ動作は、通常、キャッシュ・ミスと呼ばれる。典型的には、キャッシュ・ミスは、プロセッサがデータをメイン・メモリから検索することをもたらすばかりでなく、メイン・メモリとキャッシュとの間の多数のデータ転送ももたらす。例えば、所与のデータがアクセスされ、キャッシュ・ミスをもたらす場合、後続のメモリ場所が、キャッシュ・メモリへ転送される。プロセッサが頻繁に連続したメモリ場所にアクセスするので、それにより所望のデータを有するキャッシュ・メモリの確率は、通常増大する。
キャッシュのヒット率を改善するため、Nウエイ・キャッシュ(N−way caches)が用いられ、そこにおいて、命令及び/又はデータが、N個の格納ブロック(即ち、複数の「ウエイ」)の1つに格納される。
キャッシュ・メモリ・システムは、典型的には、キャッシュ・メモリの解像度に対応する複数のキャッシュ・ラインに分割される。セットアソシエイティブ・キャッシュ・システムとして知られているキャッシュ・システムにおいては、多数のキャッシュ・ラインが、異なるセットに一緒にグループ化され、そこにおいて、各セットは、メイン・メモリ・アドレスのより低いデータ・ビットに対しての固定マッピングに対応する。1つのセットを形成する各キャッシュ・ラインの極端なケースは、直接マッピング・キャッシュとして知られ、そして各メイン・メモリ・アドレスが1つの特定のキャッシュ・ラインにマッピングされることをもたらす。全てのキャッシュ・ラインが単一のセットに属する他の極端なケースは、フルアソシエイティブ・キャッシュとして知られ、そしてこれは、各キャッシュ・ラインをいずれのメイン・メモリ場所にマッピングすることを可能にする。
どのメイン・メモリ・アドレス(有るならば)に各キャッシュ・ラインが関連付けられているかの経過を追うため、キャッシュ・メモリ・システムは、典型的には、各キャッシュ・ラインに関してそのキャッシュ・ラインとメイン・メモリとの間の現在のマッピングを指示するデータを保持するためのデータ・アレイを備える。詳細には、データ・アレイは、典型的には、関連のメイン・メモリ・アドレスのより高いデータ・ビットを備える。この情報は、通常、タグとして知られ、そしてデータ・アレイは、タグアレイとして知られている。その上、より大きいキャッシュ・メモリについては、アドレスのサブセット(即ち、インデックス)を用いて、キャッシュ内のライン位置を指示し、そこにおいて、アドレスの最上位ビット(即ち、タグ)が、データと共に格納される。インデクッシング(indexing)を用いるキャッシュにおいては、特定のアドレスを有するアイテムが、関連のインデックスにより指示されたラインのセット内にのみ配置されることができる。
プロセッサがデータをメモリから読み出し及びそれへ書き込むのを可能にするため、プロセッサは、典型的には、仮想アドレスを生成するであろう。物理アドレスは、メイン(即ち、より高いレベル)メモリのアドレスであって、プロセッサにより発生される仮想アドレスと関連付けられるアドレスである。マルチタスク環境は、プロセッサが異なるタスクを異なる時間にサービス提供する環境である。マルチタスク環境内では、異なるタスクにより発生された同じ仮想アドレスは、必ずしも同じ物理アドレスと関連付けられるわけではない。異なるタスク間で共用されるデータは、このデータを共用する全てのタスクのため同じ物理的場所に格納される一方で、異なるタスク間で共用されないデータ(即ち、プライベート・データ)は、そのタスクに対して一意である物理的場所に格納されるであろう。
このことは、図1により明瞭に示されており、そこにおいては、Y軸は、仮想アドレス空間を定義し、そしてX軸は、時間を定義する。図1は、4つのタスク51−54を示す。各タスクの実行は、コード及びデータをフェッチすることを要求する。第1のタスク51の実行は、プライベート・コード11、共用コード12、共用データ14及びプライベート・データ13をフェッチすること含む。第2のタスク52の実行は、プライベート・コード21及び共用データ22をフェッチすることを含む。第3のタスク53の実行は、プライベート・コード31、共用コード32、共用データ34及びプライベート・データ33をフェッチすることを含む。第4のタスク54は、プライベート・コード41、共用データ43及びプライベート・データ42をフェッチすることを含む。共用コード12及び32は、同じ仮想アドレス及び同じ物理アドレスを有するよう構成されている。共用データ13、22、34及び43は、同じ仮想アドレスを有するよう構成されているが、しかし外部メモリに格納された関連のデータは、異なる物理アドレスに格納されるであろう。図1における各ボックスは複数のアドレスを表すことに注目されたい。
その結果、仮想アドレス・キャッシュは、プロセッサにより発生された仮想アドレスを参照してデータを格納する一方で、外部メモリに格納されるべきデータは、物理アドレス空間に格納される。
更に、マルチタスキング環境で動作する仮想アドレス・キャッシュは、格納されたデータと関連したアドレス/タグを格納するためのアドレス又はタグ・フィールドと、どのタスクにアドレス/タグ及びデータが関連付けられるかについて識別するためタスク識別子フィールドとを有するであろう。
その結果、マルチタスク環境内で、「ヒット」は、キャッシュに格納されたデータに関するアドレス/タグがプロセッサにより要求された仮想アドレスに一致し、且つキャッシュに格納されたデータと関連したタスク識別子フィールドがプロセッサにより実行されている現在のアクティブ・タスクに一致することを要求する。
プロセッサが1つのタスクから別のタスクに切り替えるとき、第1のタスクと関連した、仮想アドレス・データ・キャッシュのコンテンツは、典型的には、より高いレベル・メモリへフラッシュ(flush)され、そして新しいタスクと関連した新しいデータは、仮想アドレス・キャッシュにロードされる。これは、新しいタスクが2つのタスク間で共用される更新されたデータを使用することを可能にする。しかしながら、タスク間を切り替えるときメモリ・コンテンツを変える必要性が、キャッシュとより高いレベルのメモリとの間のバス・トラフィックを増大させ、そしてプロセス間通信を処理する点でオペレーティング・システムの複雑さを増大させる。これはまた、フラッシュ後の共用データへの「ミス」アクセスに消費する冗長な時間を生成する。共用コードの場合には、フラッシュは、タスク切り替え後に必要とされないが、しかしこれは、共用コードをキャッシュ・メモリに複写することが必要になることにより共用コードのフットプリントを増大させる。
1つの解法は、物理アドレス・キャッシュを用いなければならなく、そこにおいては、トランスレータは、プロセッサにより発生された仮想アドレスを、データを物理アドレス・キャッシュに格納するため用いられるそれぞれの物理アドレスに変換し、それによりタスク間で共用されたデータがその物理アドレスにより容易に識別されることを保証する。
しかしながら、仮想アドレスのその対応の物理アドレスへの変換は、緊密な時間制約を有する高速プロセッサで実行するためには困難である場合がある。
この状況を改善することが望ましい。
本発明は、添付の特許請求の範囲に記載されるように仮想アドレス・キャッシュに格納されたデータを共用するための仮想アドレス・キャッシュ及び方法を提供する。
共用されるデータ又は共用される命令と関連したタスク識別子に限定されるわけではないが当該タスク識別子のような指示が、それらのデータ又は命令がタスク間で共用されることを指示する。
本発明が、ここで、一例として、添付図面を参照して説明されるであろう。
以下の説明は、複数のデータ検索動作、及びデータを格納する仮想アドレス・キャッシュに関連する。当業者は、開示されたシステム及び方法を必要な変更を加えて、命令検索や、命令を格納する仮想アドレス・キャッシュや、更にはデータ及び命令検索の組み合わせや、命令及びデータの両方を格納するキャッシュ・モジュールにすら適用することができることを認めるであろう。
図2は、本発明の一実施形態に従った装置100を示す。装置100は、プロセッサ110、データ・チャネル130、メモリ管理ユニット(MMU)300のようなメモリ制御器、命令チャネル340、レベル1RAMメモリ370、並びにインターフェース・ユニット380を含む。装置100は、高レベル・メモリ・モジュール50のような追加のメモリ・モジュールにシステム・バス60を介して接続される。
プロセッサ110及び命令チャネル340は、単一のプログラム・バス120に接続される。プロセッサ110は、第1のデータ・ポート116及び第2のデータ・ポート118を有する。第1のデータ・ポート116は、第1のデータ・バス(XA)122を介してデータ・チャネル130の第1のポート132に接続される。第2のデータ・ポート118は、第2のデータ・バス(XB)124を介してデータ・チャネル130の第2のポート134、MMU300、及びレベル1RAMメモリ370に接続される。
データ・チャネル130は、データ・フェッチ・バス126を介してインターフェース・ユニット380に接続され、次いで当該インターフェース・ユニット380は、高レベル・メモリ・モジュール50に接続される。追加のメモリがマルチレベル・キャッシュ・アーキテクチャの一部であることができるのに対し、データ・キャッシュ・モジュール200のような仮想アドレス・キャッシュが第1レベルのキャッシュ・モジュールであり、そして追加のメモリがレベル2キャッシュ・メモリであることに注目されたい。追加のメモリはまた、外部メモリの一部であることができ、その外部メモリはまたメイン・メモリと呼ばれる。データ・チャネル130は、データ・キャッシュ・モジュール200を含み、そして任意にバッファ及び類似のもの(図示せず)のような追加のデバイスを含むことができる。キャッシュ・ミスが生じたとき、データ・チャネルが、データをインターフェース・ユニット380を介して検索する。
MMU300は、プログラム及びデータ・ハードウエア保護を与え、且つ仮想アドレスから物理アドレスへの高速の変換を実施するよう適合されている。MMU300はまた、様々なキャッシュ及びバス制御信号を与えることが可能である。仮想アドレスは、プロセッサ110により発生されるアドレスであり、プロセッサ110により実行されるコードにより見られるアドレスである。物理アドレスを用いて、レベル1RAMメモリ370のような様々なより高いレベルのメモリ・バンクにアクセスする。ひとたびプロセッサ110がデータをデータ・キャッシュ・モジュール200から要求すると、MMU300は、そのデータ要求(又はより一般的にはプロセッサ110により実行されているタスク)と関連したタスク識別子をデータ・キャッシュ・モジュール200に送る。典型的には、プロセッサ110は、更新されたタスク識別子をMMU300に送るオペレーティング・システムを実行する。
MMU300は、どのデータが共用され、またどの命令が共用されるかを定義する(又は代替として、そのような定義を別の装置から受け取る)よう適合されている。MMU300は、共用データ指示をデータ・キャッシュ200に送ることが可能であり、そしてまたデータ・キャッシュ200に格納されたタスク識別子を変更することが可能である。上記変更は、制御信号をデータ・キャッシュ200に送ることにより、又は一意のタスク識別子をデータ・キャッシュ200に送ることによってさえ開始され得る。
プロセッサ110は、2つのデータ要求を同時にXA122及びXB124を介して発行することが可能である。データ・チャネル130は、これらの要求を処理して、1又はそれより多いキャッシュ・ヒットが生じたかどうかを決定する。基本的に、データ・チャネル130は、2つのデータ要求がキャッシュ・ヒットをもたらしたことと、両方の要求がキャッシュ・ミスをもたらしたことと、1つの要求がキャッシュ・ヒットをもたらす一方で、他方の要求がキャッシュ・ミスをもたらしたこととのいずれかであることを判定することができる。
図3は、本発明の一実施形態に従ったキャッシュ論理の一部212の概略図である。キャッシュ論理210は、2つのデータ要求を同時にマッピングすることが可能であり、そして2つの同一の部分212及び214を含み、それぞれの部分は、単一のキャッシュ・ヒット又はキャッシュ・ミスのいずれが生じたかを決定することが可能である。説明を簡単にするため、キャッシュ論理210の第1の部分212のみが、詳細に図示されている。
キャッシュ論理部分212は、ウエイ0−ウエイ7 220(0)−220(7)により示される8個のウエイを含む。各ウエイは、16個のラインと関連付けられているアドレス及びステータス情報(状態情報)を格納する。アドレス情報は、タグ・アドレスを含み、そしてステータス情報は、BDV有効度情報及び更新情報を含む。情報の単純化のため、唯1つのウエイ0220(0)が、詳細に示される一方、他のウエイは、ボックス220(1)−220(7)により表されている。キャッシュ論理部分が8個のウエイ又は1−7ウエイより多くのウエイを含むことができることに注目されたい。
キャッシュ論理部分212は、一意タスク論理409を含み、当該一意タスク論理409は、そのようなタスク識別子と関連したデータが複数のタスク間で共用されることを指示するタスク識別子値を格納することが可能である。
図1は、全てのタスク間で共用されるデータを示すが、これは、必ずしもそうであるわけではなく、データは、他のタスクにより共用されていない間に或る一定のタスク間で共用されることができることに注目されたい。従って、一意のタスク識別子値は、データを共用するタスクの各サブグループに割り当てられる。
一意タスク論理409は、これらの値を比較器410(0)−410(9)のような比較器に送り、当該比較器410(0)−410(9)は、格納されたタスク識別子を一意のタスク識別子値と比較して、データが共用されるかどうかを決定することができる。
本発明の別の実施形態に従って、一意タスク論理409はまた、格納されたタスク識別子が共用データを指示するかどうかを決定することが可能である。一意タスク論理409は、格納されたタスク識別子の一部のみを比較して、それらがそれらと関連したデータが共用されることを指示するかどうかを決定するマスキング論理を含むことができる。
以下の説明は、一意タスク論理409の動作を一層良く説明する。タスク識別子が8ビット長であると仮定する。データが全てのタスク間で共用される場合、ゼロの一意のタスク識別子値は、共用データの決定を単純化することができる。8個の入力を有するNORゲートは、格納されたタスク識別子を受け取り、そしてそれがその格納されたタスク識別子と関連したデータが共用されることを指示するかどうかの指示を与えることができる。「11111111」の一意のタスク識別子値が選択された場合、8個の入力を有するANDゲートは、決定を与えることができる。いずれにせよ、8ビット比較器は、上記比較を実行することができる。
データがまさにタスクのサブグループ間で共用され、且つキャッシュ論理が(格納されたタスク識別子が或る一定の範囲の値に属するならば)キャッシュ・ヒットが生じたかどうかを決定しなければならないとき、これは、格納されたタスク識別子の一部分をマスキングし且つ一部分のみを一意のタスク識別子値と比較することにより実行されることができる。
高速の比較方法が当該技術で既知であり、そしてキャッシュ論理により適用されることができることに注目されたい。
キャッシュ論理部分212に戻って参照すると、各キャッシュ・ラインは、拡張されたタグ値及び16個のBDU有効度ビットと関連付けられる。なお、BDU有効度ビットは、そのライン内の各BDUの有効度を表す。ウエイ0220(0)は、16個の拡張されたタグ・アドレス221(0)−221(15)、並びに16個の基本データ・ユニット(BDU)有効度フラグを1セットとした16セット220(0,0)−220(15,15)を格納する。
拡張されたタグ・アドレス(これはまた格納された拡張タグ・アドレスと呼ばれる。)は、格納された仮想アドレスの一部分(通常最上位部分)並びに格納されたタスク識別子を含む。例えば、拡張タグ・アドレス221(0)は、仮想アドレスの一部分(これはまた格納されたタグ・アドレス223(0)と呼ばれる。)及び格納されたタスク識別子222(0)を含む。BDUは、データ検索のための基本構成要素である。
各BDUはまた、BDUがより高いレベルのメモリで更新されることなしに変更されたかどうかを指示するダーティ・ビットと関連付けられことができる。
データのデータ・キャッシュ・モジュール200からの検索は、キャッシュ論理210へ、8ビット・タスク識別子(MMU300から)、及びアドレス400(プロセッサ110からデータ・バスXA及びXBのうちの1つを介して)を与えることにより開始する。キャッシュ論理210の第1の部分212は、このアドレス及びタスク識別子を処理して、要求されたデータがキャッシュ・モジュールに格納されている(キャッシュ・ヒット)のか、或いは格納されていない(キャッシュ・ミス)のかを決定する。キャッシュ・ヒットが生じた場合、要求されたデータは、プロセッサ110へXA122又はXB124からの適切なデータ・バスを介して送られる。
アドレス400は、タグ・アドレス402、ライン・インデックス404、BDUオフセット405及びバイト・オフセット408に仕切られている。バイト・オフセット408は、キャッシュ・メモリ・バンク250からのデータ検索のため用いられる。拡張タグ・アドレスは、上記タグ・アドレス402及びタスク識別子401を含む。
比較器410(0)−410(9)は、並列に動作する。説明の便宜のため、比較器410(0)に言及する。比較器410(0)は、(a)仮想アドレス400、又は典型的にはアドレス400の一部分のみであるタグ・アドレス402と、(b)格納された仮想アドレス、又は典型的には格納されたタグ・アドレス223(0)と、(c)一意タスク論理409からの一意のタスク識別子値(又はデータが共用されることの指示)と、(d)222(0)のような格納されたタスク識別子と、(e)どのタスクがプロセッサ110により実行されているかを指示するタスク識別子401のような現在タスク識別子とを受け取る。
比較器410(0)は、タグ・アドレス402が格納されたタグ・アドレス223(0)に等しい場合、そして次の条件、即ち、(i)受け取られたタスク識別子401が格納されたタスク識別子220(0)に等しいことと、(ii)格納されたタスク識別子220(0)がデータが複数のタスク間で共用されることを指示することとのうちの1つ又は2つが満足される場合、要求されたデータがデータ・キャッシュ200内に格納されることを決定する。
本発明の一実施形態に従って、プロセッサ110がデータ・キャッシュ200内に格納されてない或る一定のデータを検索することを要求する最初の時に、このデータが、外部メモリから検索される。このデータは、通常最初に、データ・キャッシュ200内に、キャッシュ・ミスを引き起こしたタスク識別子と共に格納される。それにも拘わらず、MMU300がデータが共用されることを決定した場合、それは、キャッシュ論理部分212を強制して格納されたタスク識別子を一意のタスク識別子に変えさせる。
その上、BDUオフセット405及びライン・インデックス404を用いて、要求されたBDUに対応する有効度フラグを検索する。4ビット・ライン・インデックス404を用いて、16セットのウエイ220(0)から1セットのBDU有効度フラグを選択し、一方4ビットBDUオフセット405を用いて、その選択されたセットのBDU有効度フラグから有効度フラグを選択する。
現在の実施形態がタスク識別子がメモリ制御器104により与えられることを示すが、仮想アドレス・データ・キャッシュ100が、タスク識別子をコンピュータ・システム内の他の構成要素、例えば、プロセッサ101から受け取ることができるであろう。
図4は、本発明の一実施形態に従った比較器410(0)の様々な構成要素及びその環境を示す。
比較器410(0)は、第1の比較器構成要素401(0)、第2の比較器構成要素402(1)、ORゲート403(0)、ANDゲート404(0)及び第3の比較器405(0)を含む。
第1の比較器構成要素401(0)は、受け取られたタグ・アドレス401を格納されたタグ・アドレス223(0)と比較して、第1の比較信号C_1(0)を与える。第2の比較器構成要素402(1)は、格納されたタスク識別子220(0)をタスクID401(MMU300により与えられる)と比較して、第2の比較信号C_2(0)を与える。格納されたタスク識別子222(0)が、一意タスク論理409により与えられる一意のタスク識別子値と比較されて、第3の比較信号C_3(0)を与える。前述したように、一意タスク論理409は、格納されたタスク識別子220(0)が関連のデータが他の手段により共用されることを指示するかどうかを決定することができる。ORゲート403(0)は、C_2(0)及びC_3(0)を受け取り、そして第4の比較信号C_4(0)を与える。そこで、C_4(0)=C_2(0)OR C_3(0)である。ANDゲート404(0)は、C_1(0)及びC_4(0)を受け取り、そしてキャッシュ・ヒット/ミス信号(H/M(0))を与える。そこで、H/M(0)=C_4(0)AND C_1(0)である。
全てのウエイは、並列に動作する。または、より詳細には、全てのウエイの中の同じインデックスが、並列に動作する。従って、キャッシュ・ヒットは、1つのキャッシュ・ヒット/ミス信号がキャッシュ・ヒットが生じたことを指示する場合で且つ対応するデータが有効である場合に生じる。
キャッシュ論理210及びMMU300の動作が更に、次の表により示される。R_TAGは、タグ・アドレス402のような受け取られたタグ・アドレスであり、R_T_IDは、タスク識別子401のような受け取られたタスク識別子であり、S_T_IDは、格納されたタスク識別子221(0)のような格納されたタスク識別子である。C_1−C_4は、比較器410(0)の比較信号のような比較信号であり、H/Mは、キャッシュ・ヒット/ミス信号H/M(0)のようなキャッシュ・ヒット/ミス信号である。
Figure 2008511882
図5は、本発明の一実施形態に従ってデータを共用する方法500のフロー・チャートである。
方法500は、仮想アドレス、及びデータをアドレッシングするためのタスク識別子を受け取るステップ510により開始する。図2−図4において説明した例を参照すると、キャッシュ論理210の第1の部分212は、アドレス400及びタスク識別子401を受け取る。
ステップ510には、ステップ520が続く。ステップ520は、受け取られた仮想アドレスの少なくとも一部分とメモリに格納されたデータと関連したアドレスの少なくとも一部分との比較に基づいて、且つ次の判定基準、即ち、(i)受け取られたタスク識別子が格納されたタスク識別子に等しいことと、(ii)或る一定の格納された仮想アドレスと関連した格納されたタスク識別子がデータが複数のタスク間で共用されることを指示することとのうちの少なくとも1つを満足することに基づいて、データがメモリに格納されるかどうかについて決定する。図2−図4において説明した例を参照すると、比較器410(0)−410(9)は、受け取られたタスク識別子401及びアドレス400の一部分を、格納されたタスク識別子221(0)−221(9)及び格納されたタグ・アドレス222(0)−222(9)と比較する。
ステップ520には、キャッシュ・ヒットが生じた場合データをキャッシュから与えるステップ530が続く。ステップ530には、データをキャッシュ・モジュールから受け取るための別の要求が受け取られたとき、ステップ510が続く。
ステップ520には、キャッシュ・ミスが生じた場合データを別のメモリ・モジュールからフェッチするステップ540が続く。ステップ540はまた、データ、関連のタグ・アドレス及びタスク識別子を格納することを含む。ステップ540には、関連のデータがタスク間で共用されることを指示するかどうかのようなタスク識別子を変えるかどうかを決定し、そしてその決定に応答して選択的に変えるステップ550が続く。ステップ550には、ステップ510が続く。
ステップ520が読み出しサイクルの一部分内で完了されることが都合良い。
本発明の他の実施形態に従って、タスク識別子以外の或る一定のフィールド、属性又はビットは、データが複数のタスク間で共用されることを指示する。MMU300が上記指示を仮想アドレス・キャッシュに与え、そしてそのタスク識別子をより遅くに与えないことが都合良い。
本明細書で説明されたものの変形、変更及び他の実施が、本発明の特許請求の範囲及び趣旨から逸脱することなしに当業者により行われるであろう。従って、本発明は、上記の例示的記載により定義されるべきでなく、代わりに添付の特許請求の範囲の趣旨及び範囲により定義されるべきである。
図1は、仮想アドレス空間対時間のチャートを示す。 図2は、本発明の一実施形態に従った装置を示す。 図3は、本発明の一実施形態に従ったキャッシュ論理の概略図である。 図4は、本発明の一実施形態に従った比較器の様々な構成要素及びその環境を示す。 図5は、本発明の一実施形態に従ったデータを共用する方法のフロー・チャートである。

Claims (13)

  1. 仮想アドレス、タスク識別子、及び当該仮想アドレス及びタスク識別子と関連したデータを格納するよう適合されたメモリと、
    前記メモリと結合された比較器であって、受け取られた仮想アドレス及び受け取られたタスク識別子と関連したデータが、当該受け取られた仮想アドレスの少なくとも1部分が或る一定の格納された仮想アドレスの少なくとも対応する部分に等しい場合及び次の判定基準、即ち、(i)前記受け取られたタスク識別子が格納されたタスク識別子に等しいこと、及び(ii)前記の或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が前記データが複数のタスク間で共用されることを指示することのうちの少なくとも1つが満たされる場合前記メモリに格納されることを決定するよう適合された前記比較器と
    を備える仮想アドレス・キャッシュ。
  2. 前記比較器が、前記の決定を単一の読み出しサイクルの一部分内で与えるよう適合されている請求項1記載の仮想アドレス・キャッシュ。
  3. 制御信号をメモリ制御器から受け取り、且つそれに応答して、格納されたタスク識別子を、前記仮想アドレスと関連したデータが複数のタスク間で共用されていることを指示する一意のタスク識別子へ変えるよう更に適合されている請求項1記載の仮想アドレス・キャッシュ。
  4. 前記格納されたタスク識別子が、データが前記の格納されたタスク識別子の一部分が事前定義された値を有する場合複数のタスク間で共用されることを指示する請求項1記載の仮想アドレス・キャッシュ。
  5. 1グループのタスクからの少なくとも1つのタスクと関連したデータを格納するよう適合された請求項1記載の仮想アドレス・キャッシュ。
  6. 前記複数のタスクが、前記1グループのタスクの全てを備える請求項5記載の仮想アドレス・キャッシュ。
  7. 前記1グループのタスクが、複数のタスク・サブグループを備え、
    少なくとも1つのタスク識別子が、少なくとも1つの対応のサブグループと関連している
    請求項5記載の仮想アドレス・キャッシュ。
  8. 仮想アドレス・キャッシュに格納されたデータを共用する方法であって、
    仮想アドレス、及びデータをアドレッシングするためのタスク識別子を受け取るステップと、
    前記データが、前記の受け取られた仮想アドレスの少なくとも1部分と前記メモリに格納されたデータと関連したアドレスの少なくとも1部分との比較に基づいて、及び次の判定基準、即ち、(i)前記の受け取られたタスク識別子が格納されたタスク識別子に等しいこと及び(ii)或る一定の格納された仮想アドレスと関連した格納されたタスク識別子が前記データが複数のタスク間で共用されることを指示することのうちの少なくとも1つを満たすことに基づいてメモリに格納されるかどうかについて決定するステップと
    を備える方法。
  9. 決定する前記ステップが、読み出しサイクルの一部分内で完了される請求項8記載の方法。
  10. 制御信号をメモリ制御器から受け取り、且つそれに応答して、格納されたタスク識別子を、前記仮想アドレスと関連したデータが複数のタスク間で共用されることを指示する一意のタスク識別子へ変えるステップを更に備える請求項8記載の方法。
  11. 前記格納されたタスク識別子が、データが前記の格納されたタスク識別子の一部分が事前定義された値を有する場合複数のタスク間で共用されることを指示する請求項8記載の方法。
  12. 少なくとも1つのタスク識別子が、データが1グループのタスク間で共用されることを指示指示する請求項8記載の方法。
  13. 前記1グループのタスクが、複数のタスク・サブグループを備え、
    少なくとも1つのタスク識別子が、少なくとも1つの対応のサブグループと関連している
    請求項12記載の方法。
JP2007528617A 2004-08-31 2004-08-31 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法 Pending JP2008511882A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2004/011075 WO2006024323A1 (en) 2004-08-31 2004-08-31 A virtual address cache and method for sharing data using a unique task identifier

Publications (1)

Publication Number Publication Date
JP2008511882A true JP2008511882A (ja) 2008-04-17

Family

ID=34959391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007528617A Pending JP2008511882A (ja) 2004-08-31 2004-08-31 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法

Country Status (6)

Country Link
US (1) US7865691B2 (ja)
EP (1) EP1789883B1 (ja)
JP (1) JP2008511882A (ja)
KR (1) KR101102260B1 (ja)
AT (1) ATE536587T1 (ja)
WO (1) WO2006024323A1 (ja)

Families Citing this family (8)

* 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
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
JP2010079765A (ja) * 2008-09-29 2010-04-08 Renesas Technology Corp 情報処理装置
US20150149446A1 (en) * 2012-07-27 2015-05-28 Freescale Semiconductor, Inc. Circuitry for a computing system and computing system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01108650A (ja) * 1987-10-02 1989-04-25 Sun Microsyst Inc ワークステーシヨン
JPH03235143A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
US20020065980A1 (en) * 2000-08-21 2002-05-30 Serge Lasserre Fast hardware looping mechanism for cache cleaning and flushing of cache entries corresponding to a qualifier field
EP1215582A1 (en) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
US20030196048A1 (en) * 2000-04-28 2003-10-16 Mcallister Curtis R. Share masks and alias for directory coherency
US6779085B2 (en) * 2000-08-21 2004-08-17 Texas Instruments Incorporated TLB operation based on task-ID
JP2006505834A (ja) * 2002-03-22 2006-02-16 インテル コーポレイション キャッシュメモリにおけるコンテクスト識別子の使用

Family Cites Families (2)

* 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
EP1215583A1 (en) 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache with tag entries having additional qualifier fields

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01108650A (ja) * 1987-10-02 1989-04-25 Sun Microsyst Inc ワークステーシヨン
JPH03235143A (ja) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
US20030196048A1 (en) * 2000-04-28 2003-10-16 Mcallister Curtis R. Share masks and alias for directory coherency
US20020065980A1 (en) * 2000-08-21 2002-05-30 Serge Lasserre Fast hardware looping mechanism for cache cleaning and flushing of cache entries corresponding to a qualifier field
US6779085B2 (en) * 2000-08-21 2004-08-17 Texas Instruments Incorporated TLB operation based on task-ID
EP1215582A1 (en) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
JP2006505834A (ja) * 2002-03-22 2006-02-16 インテル コーポレイション キャッシュメモリにおけるコンテクスト識別子の使用

Also Published As

Publication number Publication date
WO2006024323A1 (en) 2006-03-09
EP1789883B1 (en) 2011-12-07
ATE536587T1 (de) 2011-12-15
KR101102260B1 (ko) 2012-01-03
US20070294504A1 (en) 2007-12-20
EP1789883A1 (en) 2007-05-30
US7865691B2 (en) 2011-01-04
KR20070049677A (ko) 2007-05-11

Similar Documents

Publication Publication Date Title
US8417915B2 (en) Alias management within a virtually indexed and physically tagged cache memory
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US5479627A (en) Virtual address to physical address translation cache that supports multiple page sizes
US6647466B2 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US5230045A (en) Multiple address space system including address translator for receiving virtual addresses from bus and providing real addresses on the bus
US6874077B2 (en) Parallel distributed function translation lookaside buffer
US11775445B2 (en) Translation support for a virtual cache
US10810134B2 (en) Sharing virtual and real translations in a virtual cache
JPH08235052A (ja) ディレクトリ内にアドレス・タグを記憶するためのシステムおよび方法
JPH08227380A (ja) データ処理システム
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
US5897651A (en) Information handling system including a direct access set associative cache and method for accessing same
EP4409418A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
JP2008512758A (ja) 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法
JPH0695972A (ja) ディジタルコンピュータシステム
JP2008511882A (ja) 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system
US20140013054A1 (en) Storing data structures in cache
WO2002027498A2 (en) System and method for identifying and managing streaming-data
CN110362509B (zh) 统一地址转换方法与统一地址空间

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120423