JP3859757B2 - 仮想アドレスについてのキャッシュ可能性属性ビットを備えた変換テーブル・エントリ及びそのビットを用いた仮想アドレスの参照方法並びにその仮想アドレスの参照装置 - Google Patents
仮想アドレスについてのキャッシュ可能性属性ビットを備えた変換テーブル・エントリ及びそのビットを用いた仮想アドレスの参照方法並びにその仮想アドレスの参照装置 Download PDFInfo
- Publication number
- JP3859757B2 JP3859757B2 JP03995296A JP3995296A JP3859757B2 JP 3859757 B2 JP3859757 B2 JP 3859757B2 JP 03995296 A JP03995296 A JP 03995296A JP 3995296 A JP3995296 A JP 3995296A JP 3859757 B2 JP3859757 B2 JP 3859757B2
- Authority
- JP
- Japan
- Prior art keywords
- virtual address
- cache
- cacheable
- data corresponding
- primary
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
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)
Description
【発明の属する技術分野】
本発明は多層メモリ・システムを備えたプロセッサに係わる。詳しくは、仮想的に指標付けされたキャッシュにおけるエイリアスに関する。
【0002】
【従来の技術】
多層メモリ・システムを用いることは、参照位置を利用するための一般的な技術である。基本的な考えは少量の高速アクセス・メモリと、多量の低速アクセス・メモリとを編成することにより、ほとんどのアクセスが少量の高速メモリに対して行われるようにすることである。そのようなメモリ・システムの平均アクセス時間は、少量の高速メモリよりも僅かに大きく、その有効記憶容量は多量の低速メモリのそれと同等である。
【0003】
多層メモリ・システムの一般的な形態はキャッシュ・メモリ、即ち索引バッファ・メモリである。図1に示すように、キャッシュ・メモリ10はプロセッサ11とメイン・メモリ12との間に配置された比較的小さな特殊メモリ装置である。キャッシュ・メモリ10は、プロセッサ11によってアクセスされそうなメイン・メモリ12からのワードのコピーを保持している。キャッシュ10はメイン・メモリ12よりも高速であるため、アクセス頻度の高い記憶位置がキャッシュ10内で見つかれば、ヒット率が高くなるとともに、メモリ・アクセスの平均時間は短くなる。キャッシュ10により実行される方法は、プロセッサによって最近使用された他のワードの近くに位置するところのワードを保持することである。この方法により利用される局所参照とは、短時間のうちにメモリの小さな領域に群れをなすようにアクセスするメモリ・アクセスの傾向をいう。
【0004】
キャッシュの記憶位置は冗長である。それは各記憶位置がより低速のメイン・メモリ12にも格納された情報を、更にアクセスし易くするようにしたコピーを用いるという意味からである。このため、キャッシュ10の存在により、アドレス化可能な全記憶容量はプログラマが見てとれるように増加しはしない。むしろ、プログラムの平易な方法において、キャッシュ10は同一のアドレス空間内に存在する記憶位置への平均アクセス時間を改善する。
【0005】
キャッシュ10はメイン・メモリ12よりもかなり小型であるため、いつでもキャッシュされ得るのはメイン・メモリ12の少量の記憶位置のみである。従って、一般的にキャッシュ10内に存在する各記憶位置、即ちキャッシュ・ラインは概念的に、タグ・フィールド及び内容フィールドという2つの部分を有する。読み出し又は書き込み動作が要求されるとき、指定されたアドレスはキャッシュ10内の一定のラインのタグ・フィールドと比較される。その比較により整合が生じれば、整合しているタグを含むキャッシュ・ラインの内容フィールドが読み出し又は書き込まれる。これはキャッシュ・ヒットとして知られており、メイン・メモリ12にアクセスする必要はない。
【0006】
近年のプロセッサは、物理アドレス空間とは概念的に別の仮想アドレス空間を支援する。仮想アドレスは、プロセッサが記憶位置を指定するために用いるラベルである。プロセッサは、自身が仮想アドレスの記憶位置にアクセスできる限り、実際に記憶位置が物理メモリ内のどこに存在するかについては関与しない。プロセッサ・アーキテクチャの仕様により、支援されるべき一定の仮想アドレス空間が定義される。コンピュータ・システムを管理するオペレーティング・システムは、仮想アドレス空間からどのように物理メモリへマッピングされるのかに関して、柔軟性を有している。従って、仮想アドレスから物理アドレスへの変換が必要となる。
【0007】
図2は一般的な仮想アドレスから物理アドレスへの変換を示す。仮想及び物理メモリは共に概念的にはページに分割されている。例えば、記憶位置の仮想アドレス20は仮想ページ番号21及びページ・オフセット指標22からなる。仮想ページ番号21は、指定された記憶位置が存在するメモリのページを表す。ページ・オフセット指標22は、指定された記憶位置がそのページの境界線内において存在する位置を表す。このため、ページ・オフセット指標22は、そのページの先頭位置に対する相対的な記憶位置を示す。又、物理アドレスも仮想アドレスと同様の構造を有する。物理ページ番号23及びページ・オフセット指標24は、物理メモリ・アドレス25を定義する。慣習に従い、仮想アドレス空間を構成する大部分の装置は、仮想アドレス及び物理アドレスに対するのと同様の方法により、各ページ内にてメモリを指標付けする。従って、記憶位置の仮想アドレスに対するページ・オフセット指標22と、それに対応する記憶位置の物理アドレスに対するページ・オフセット指標24とは同一である。そのため、ページのサイズが2p である場合、記憶位置の仮想アドレスの下位pビットとそれに対応する記憶位置の物理アドレスとは等しく、共にページ・オフセット指標を表す。
【0008】
仮想アドレス20から物理アドレス25への変換工程において、仮想ページ・オフセット指標22は物理ページ・オフセット指標24と同一であるため、仮想アドレス20のページ・オフセット指標22を変換する必要はない。しかしながら、物理ページ番号23は仮想ページ番号21と異なるため、仮想ページ番号21を変換しなければならない。ハードウエア(変換索引バッファ)とソフトウエア(テーブル・ウォーキング "table walking")との協働によって一般的に実現されるメモリ管理ユニット26は、この仮想ページから物理ページへの変換を行う。
【0009】
図3は非連想又はダイレクト・マッピングされたキャッシュの動作を示す。ダイレクト・マッピングされたキャッシュは、ヒットしたかを調べるためにキャッシュ内のアドレスを指定することにより、入力されたメモリ・アドレス31の下位ビット30を用いる。このため、記憶位置Aはキャッシュ・ライン内のみに存在でき、キャッシュ内に存在するラインのアドレスは、Aのアドレスの下位kビット30である。メモリ・アドレス31をキャッシュ30中のある特定のライン内のみでキャッシュされるように強制すれば、それにより連想メモリよりも安価で高密度なランダム・アクセス・メモリ(RAM)を使用できる。しかしながら、その強制により、同一のk個の下位アドレスビット30を共有する記憶位置は、また同一のキャッシュ・ラインを共有することが必要になる。各キャッシュ・ラインが、ある記憶位置の内容を記憶するためのみに備えられる場合、同一の下位kのアドレスビット30を有する2つの記憶位置は同一のキャッシュ・ラインと競合するため、同時にキャッシュされ得ない。ダイレクト・マッピングされるキャッシュの他の重要で魅力的な特徴は、それがより簡素であるとともに、より少ない回路しか必要としないことを考慮すれば、より高速に動作する傾向にあることである。
【0010】
大部分のプロセッサ・アーキテクチャの仕様は、仮想アドレスの間のエイリアスを支援する。同一の物理アドレスを参照する2つの仮想アドレスは互いにエイリアスである。与えられ任意の記憶位置の物理アドレスの下位pビットは、その仮想ページの先頭位置からのページ・オフセットを表す。与えられた任意の仮想アドレスに対するページ・オフセット指標は、物理アドレスのページ・オフセット指標と同一である。従って、2つのアドレスは同じ物理アドレスを参照することから、両アドレスは互いにエイリアスであり、それらのアドレスの下位pビットは同一である。しかしながら、2つのエイリアスの仮想ページ番号を表すビットは異なる。
【0011】
この説明の目的に関して、可能なキャッシュの編成は、仮想的又は物理的に指標付けされ、仮想的又は物理的にタグ付けされるとともに、セットアソシアティブ又はダイレクト・マッピングされるものである。仮想アドレスを支援するプロセッサにおいて、そのプロセッサのいくつかのキャッシュが仮想的に指標付けされるとともに、ダイレクト・マッピングされるキャッシュであり、他のキャッシュは物理的に指標付けされるとともに、ダイレクト・マッピングされるキャッシュである。仮想的に指標付けされるとともに、ダイレクト・マッピングされたキャッシュはキャッシュ・ラインへマッピングを行うために仮想アドレスを用いるのに対して、物理的に指標付けされるとともにダイレクト・マッピングされたキャッシュはキャッシュ・ラインへマッピングを行うために物理アドレスを用いる。このため、仮想的に指標付けされたキャッシュにおいて、キャッシュ・ラインの数が2k である場合、仮想アドレスの下位kビットは、その仮想アドレスに対するキャッシュ・ラインへマッピングするために用いられる。
【0012】
キャッシュの記憶位置の数がページ内の記憶位置の数以下である場合、仮想アドレスの下位pビットはそれに対応する物理アドレスの下位ビットと同一であるため、仮想的に指標付けされたキャッシュと物理的に指標付けされたキャッシュとの区別は全くない。その場合、kがp以下である時、そのキャッシュ・ラインへマッピングするために用いられる下位kビットは全て同一であるため、全てのエイリアスは同一のキャッシュ・ラインへマッピングする。しかしながら、キャッシュのサイズが2p よりも大きい場合、仮想ページ・ビット又は物理ページ・ビットのいくらかはキャッシュラインを導くために用いられることから、仮想的及び物理的に指標付けされたキャッシュは、同一の記憶位置に対して異なるキャッシュ・ラインへマッピングを行う。更に、仮想的に指標付けされたキャッシュにおいて、エイリアスは同キャッシュ内の異なるキャッシュ・ラインへマッッピングするかもしれない。仮想的に指標付けされたキャッシュにおいて、ページ・サイズがキャッシュ・サイズよりも小さい場合、キャッシュ・ラインへマッピングを行うために、仮想ページ・ビットのうち1つ以上のビットが用いられる。エイリアスの仮想ページは異なるため、仮想アドレスの仮想ページ・ビットは異なる。このため、キャッシュ・ラインへマッピングすべく、仮想ページ番号のビットのうち1つ以上のビットが用いられるため、キャッシュ・ラインは異なることがある。
【0013】
例えば、仮想的に指標付けされたキャッシュが214のラインを有し、物理ページのサイズが212のみである場合、与えられた任意の物理的な記憶位置は4つものエイリアスを有することがあり、そのエイリアスは異なるキャッシュ・ラインへマッピングする。これは、仮想ページ番号のビットのうちの2ビットが、キャッシュへマッピングするために用いられるという重要な事実である。2ビットによって表現され得る値は4つあるため、仮想ページ・ビットの下位2ビットに基づいて、エイリアスは任意の異なる4つの記憶位置へマッピングできる。
【0014】
2つ以上の仮想アドレスが同一の物理アドレスへマッピングする場合、それらの仮想アドレスのうちの1つへ書き込まれるデータは、引き続き任意のエイリアスからの読み込みを行うとすぐに明らかになる。全てのエイリアスが同一のキャッシュ・ラインへマッピングする場合、仮想的に指標付けされたキャッシュは予期したように動作する。エイリアスのうちの任意の1つに書き込まれたデータは、同一のキャッシュ・ラインへ書き込まれる。しかしながら、エイリアスが異なるキャッシュ・ラインへマッピングする場合、重要なデータ不一致問題が生じる。2つの仮想エイリアスが仮想的にアドレス化されたキャッシュに存在する異なるキャッシュ・ラインへマッピングする場合、各エイリアスは独立した変数であるかのように動作する。例えば、X及びYが仮想アドレスのエイリアスであり、かつXへのストアが実行される場合、Yもそのキャッシュに存在するなら、後続のYの読み込みの間、データは明らかではない。さらに、Xへの書き込みによりYの値は破壊されるべきであるにもかかわらず、その値は変わらない。X及びYがそのキャッシュから取り除かれる時、各々は自身が参照する物理メモリの記憶位置へ書き込まれる。キャッシュは書き戻し(ライト・スルー"write through" ではない)であると仮定すると、両X,Yがキャッシュから取り除かれた後に物理メイン・メモリ内に存在する値は、そのキャッシュからどの仮想アドレスが最後に取り除かれたかに依存する。従って、Yが最後に取り除かれる場合、Xへ書き込まれたデータは破壊されるのに対して、Yにおける古いデータは間違ってメイン・メモリ内の物理記憶位置を占有する。
【0015】
データの一貫性を維持するために、1つの従来技術の方法では、全ての仮想エイリアスがキャッシュ不能、即ち1つのエイリアスさえもキャッシュ内に残れないことを要求する。この従来技術の方法により、任意のエイリアスへの任意の参照は、1次又は2次キャッシュからの効果を全く引き出せず、最も低速のメモリであるメイン・メモリにアクセスしなければならないことから、大幅な性能の低下となる。
【0016】
図4はキャッシュ及びアドレス変換機構の構造を示す。オペレーティング・システムは任意のデータ構造内に、ソフトウェア変換テーブル40と呼ばれる変換情報を管理する。変換索引バッファは高速のハードウェア変換を行い、そのバッファは本質的には大きく複雑なソフトウェア変換テーブルを有するキャッシュである。各キャッシュに対して、ソフトウェア変換テーブル40の独立したキャッシュとして動作する変換索引バッファ(TLB)41が存在する。より頻繁にアクセスされる仮想ページに対して、TLBは1サイクル変換を行う。TLBヒットという用語は、所望の変換が集積回路上のTLB内に存在するという意味である。TLBミスという用語は、所望の変換が集積回路上のTLB内に存在しないという意味である。
【0017】
TLBミスが起きると、メモリ管理ユニットはTLBミスの処理を行うべくソフトウェアに即座に割り込む。TLBミス・ハンドラ・ソフトウェア・ルーチンは、使用可能な任意の手段によりTLBを満たす選択を有する。いくつかのメモリ管理ユニットは、図4に示す変換格納バッファ(translation storage buffer)のような中間の変換装置を備える。変換格納バッファは2次キャッシュのアドレス変換のように動作する。TLBは小型かつ高速であるが、それに対してソフトウェア変換テーブルは大型かつ複雑である傾向にある。従って、TLBミス・ハンドラ・オペレーティング・システム・ソフトウェア・ルーチンがTLBミスの後に呼び出される時、仮想から物理への変換が検索されて処理が継続して行われるまでに膨大なサイクルを要する。
【0018】
第2の従来技術の方法では、一定の仮想エイリアスがキャッシュ内に居残ることを許容するが、その他の仮想エイリアスはキャッシュ及びTLBから排除されることを要求する。一定のエイリアスをキャッシュ可能に維持することにより、前述の全てのエイリアスをキャッシュ不能とする方法よりもいくらか効果が得られる。一定のエイリアスをキャッシュ可能に維持する場合、そのエイリアスへ繰り返しアクセスが生じても、そのアドレスに対するキャッシュ及びTLBエントリが高速であるため効果が得られる。
【0019】
例えば、X及びYがエイリアスである場合、Xがキャッシュ内に残ることができ、その変換もTLB内に残ることができる。しかしながら、Yをキャッシュ不能とする必要がある。XがYを参照することなく繰り返し参照される場合、キャッシュの効果がいくらか保たれる。しかしながら、Yが参照される時、TLBミスが発生する。正確な動作を確保すべく、Yをキャッシュへ格納する以前に、又はTLB内に存在するYの変換を含む以前に、オペレーティング・システムはキャッシュからXを取り除くとともに、TLBからXの変換を取り除く必要がある。TLBからXの変換が取り除かれない場合、次にXへの参照が行われる際にTLBミスは全く発生しない。ソフトウェアの介入なしにXが再び参照される時、受け入れられないYと共にXはキャッシュ内に再び格納される。
【0020】
キャッシュ可能なアドレス属性の概念は、従来技術にて知られている。キャッシュ可能なアドレス属性は、メモリの一部分と協働する論理的な指示である。その指標はメモリのその部分からのデータがキャッシュ内に配置され得るか否かを示す。キャッシュ可能なアドレス属性は、一般的に入力又は出力位置をマッピングするメモリのキャッシングを禁止するために用いられる。大部分のプロセッサ・アーキテクチャは、物理アドレス空間の一定の部分へマッピングされるように、入力/出力装置とのインターフェイスを支援する。例えば、コンピュータ・システムにおけるマウスは、一定の記憶位置へマッピングされる。マウスに何が起こっているかを追従するために、プロセッサはマウスがまるで別の記憶位置であるかのようにマウスがマッピングされるアドレスから周期的に読み出す。同様に、例えばプロセッサがデータをディスク・ドライブに書き込みたい時、プロセッサはその出力装置のために設けられた特別な記憶位置へ書き込む。それらの入力/出力位置をキャッシュすることは禁止されている。出力装置への書き込みは出力端子まで届く傾向にあり、プロセッサのみにアクセス可能な内部キャッシュまで届くことは殆どない。同様に、入力装置からの読み込みは入力装置自身から読み込む傾向にあり、入力装置の端子上に以前存在していたものがキャッシュされたものから読み込まれることは殆どない。
【0021】
【発明が解決しようとする課題】
エイリアスの制限を破るエイリアスをキャッシュ不能とする方法の重要な問題は、メイン・メモリへのキャッシュ不能なアクセスに対処する必要があることである。これらのアクセスにより、「比較とスワップ」( "compare and swap" )(CAS)及び「部分ストア」("partial store" )(PST)のように多くの特殊な命令は複雑になる。それらの命令がキャッシュ不能なメイン・メモリにアクセスしなければならない場合、それらの命令を適切に実行させることは非常に困難である。従って、少なくとも物理的に指標付けされたキャッシュにおいて、メイン・メモリが常にキャッシュ可能であるという方法の開発には大きな効果がある。そのような方法から得られる性能の向上はさらに付加的な要因である。
【0022】
この発明は、前述した事情に鑑みてなされたものであって、その目的は、エイリアスがオフセットされない場合においても、データの処理速度を低下させることなくデータの一貫性を維持することが可能な方法及び装置を提供することにある。
【0023】
【課題を解決するための手段】
以下の手段により、上記目的を達成するための方法及び装置が構成されている。
【0024】
キャッシュ可能なアドレス属性は、メモリの特定のページからのデータがキャッシュ内に配置され得るか否かを示す。仮想的に指標付けされたキャッシュでは、2つの仮想アドレス・エイリアスが異なるキャッシュ・ラインへマッピングすることがある。その結果、一方のエイリアスへのストアは、他方のエイリアスに対してキャッシュされたデータに影響を与えない。仮想的に指標付けされたキャッシュに存在する同一のキャッシュ・ラインへ全てのエイリアスをマッピングするために、オペレーティング・システムは多数のキャッシュサイズにより、仮想アドレス・エイリアスをオフセットしようとする。これが保証される場合、全てのエイリアスは同一のキャッシュ・ラインへマッピングする。しかしながら、多数の仮想キャッシュサイズにより、オペレーティング・システムはエイリアスをオフセットできないことがある。
【0025】
本発明に基づいて、別個に仮想キャッシュ内にてキャッシュ可能( cachable-in-virtual-cache)な(CV)属性ビットはオペレーティング・システムにより管理された変換テーブル内に存在するメモリの各ページのために管理されている。CVビットは変換テーブルのエントリが参照するページ上のメモリ・アドレスが、仮想的に指標付けされたキャッシュ内にてキャッシュ可能であるか否かを示す。
【0026】
本発明の第1の実施形態に基づいて、多数の仮想キャッシュサイズによりオフセットされないエイリアスが2つ以上存在する場合、全てのエイリアスに対するCVビットを不活性状態(deasserting )にすることにより、全てのエイリアスは仮想的に指標付けされたキャッシュ内にてキャッシュ不能となる。
【0027】
変換索引バッファ(TLB)の内容に関しては、全てのエイリアスに対する変換はTLB内にて同時に存在することがある。TLBミスはソフトウェアに割り込みを発生させる。データの一貫性を確保するために本発明に基づくエイリアスの間には、ソフトウェアの介入が必要とはならない。そのため、同一の物理ページへのいくつかのマッピングは、TLB内にて同時に存在できる。
【0028】
本発明の第2及び第3の実施形態に基づいて、多数の仮想キャッシュサイズによりオフセットされないエイリアスが2つ以上存在する場合、そのうちの1つのみを仮想キャッシュ内にてキャッシュ可能に維持する。その他のエイリアスに関しては、それらのエイリアスを含む変換ページに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能( cachable-in-virtually-indexed-cache)な(CV)ビットは不活性状態となる。オペレーティング・システムは、ページに対するCV属性を不活性状態とする前に、仮想的に指標付けされた内部キャッシュからのデータを消去する。本発明の第2の実施形態は、より新しい物理アドレスへのマッピングが1次キャッシュ内に残ることを許容する。本発明の第3の実施形態は、より新しいエイリアスがマッピングされる時、より古いエイリアスが1次キャッシュ内に残ることを許容する。
【0029】
【発明の実施の形態】
キャッシュ可能なアドレスの属性は、メモリに存在する特定のページからのデータがキャッシュ内へ配置されたか否かを示す。従来技術において、キャッシュ可能なアドレスの属性は入力及び出力位置にマッピングされるメモリがキャッシュされることを防止するのに使用されていた。仮想的に指標付けされたキャッシュでは、2つの仮想アドレス・エイリアスは異なるキャッシュ・ラインへマッピングすることが可能である。その結果、一方のエイリアスへのストアが、他方のエイリアスに対してはキャッシュされたデータに影響を与えない。
【0030】
図3はダイレクト・マッピングされるキャッシュの動作を示す。特定のメモリ・アドレスに対するキャッシュを検索するとき、そのアドレスの下位ビット30はキャッシュ・ラインへのマッピングに用いられる。そのアドレスの下位ビット30により指定されたキャッシュ・ライン33に存在するタグ32は、所望のメモリ・アドレス31の上位ビット34と比較される。タグ32と所望のアドレス31の上位ビット34とが一致する場合、キャッシュ・ヒットが発生する。仮想的に指標付けされたキャッシュにおいて、仮想アドレス又は物理アドレスの何れかはタグ32を生成するためにアドレスビットが切り詰められる。仮想アドレスがタグ32を生成する場合、キャッシュは仮想的にタグ付けされ、物理アドレスがタグ32を生成する場合、キャッシュは物理的にタグ付けされる。
【0031】
仮想的に指標付けされたキャッシュに存在する同一のキャッシュ・ラインへ全てのエイリアスをマッピングさせるために、オペレーティング・システムは、多量の仮想キャッシュ・サイズにより仮想アドレス・エイリアスをオフセットしようとする。これが保証される場合、全てのエイリアスは同一のキャッシュ・ラインへマッピングする。仮想的に指標付けされるとともに、物理的にタグ付けされたキャッシュにおいて、全てのエイリアスが同一のキャッシュへマッピングする場合、いつでも全てのエイリアスのうちの任意の1つへストアされる時、全てのエイリアスはキャッシュ内にて自動的に更新される。全てのエイリアスは同一の物理アドレスを有するため、全てのエイリアスに対する物理タグは等しい。従って、エイリアスが同一のキャッシュ・ラインへマッピングする場合、全てのエイリアスのうち1つでもキャッシュされる限り、全てのエイリアスに対してキャッシュ・ヒットが生じる。
【0032】
一方、仮想的に指標付けされたキャッシュが仮想的にタグ付けされたものでは、多量の仮想キャッシュ・サイズにより仮想アドレス・エイリアスをオフセットすることによっても、データ不一致問題を防止できるであろう。全てのタグは異なり、エイリアスのうちの1つがキャッシュされる場合、その他のエイリアスのうち任意のエイリアスへの任意の参照はキャッシュ・ミスとなる。前回キャッシュされた記憶位置はメモリへ書き戻され、現在において所望のエイリアスはキャッシュ・ライン内に配置される。全てのエイリアスに対して1つのラインのみしか存在しないため、2つのエイリアスが別々にキャッシュ内に存在できない。従って、仮想的に指標付けされるとともに、仮想的にタグ付けされるキャッシュの編成では、エイリアスの規則に従う場合、2つのエイリアスX,Yは同一のキャッシュ・ラインに接触するが、キャッシュ・ヒットとして互いに認識しない。即ち、タグが仮想的であるため、XとYが等しいということを判断する特定の容易な方法はない。この編成を適切に取り扱うことは、非常に複雑となる傾向にあり、物理アドレスに基づいたキャッシュ・タグの複製セットをしばしば必要とする。
【0033】
オペレーティング・システムが、多数の仮想キャッシュ・サイズによりエイリアスを不運にもオフセットできない場合がある。従来技術のシステムでは、2つのエイリアスは異なるキャッシュ・ラインへマッピングすることから、その場合は仮想的に指標付けされたキャッシュにおけるエラーとなる。他方のエイリアスもキャッシュされた場合、一方のエイリアスへのストアは更新されない。
【0034】
図5に示すように、本発明に基づき、別個に仮想キャッシュ内にてキャッシュ可能な属性ビット(CV)50は、オペレーティング・システムにより管理される変換テーブル内に存在するメモリの各ページのために管理されている。図5は小型の変換索引バッファを示す。CVビット50は、変換テーブル・エントリが参照するページ上のメモリ・アドレスが、仮想的に指標付けされたキャッシュ内にてキャッシュ可能であるか否かを示す。加えて、従来技術のシステムのように、物理的なキャッシュ内にてキャッシュ可能(cachable-in-physical-caches )な(CP)属性ビット51は各ページのために管理され、そのキャッシュが仮想的又は物理的に指標付けされたかには関わらず、そのページからのデータが任意のタイプのキャッシュ内にてキャッシュ可能であるか否かを示す。
【0035】
本発明の第1の実施形態に基づいて、多数の仮想キャッシュ・サイズによりオフセットされないエイリアスが2つ以上存在する時、仮想的に指標付けされたキャッシュ内にて、全てのエイリアスはキャッシュ不能となる。図4は一般的なキャッシュの構造を示す概略的なブロック図である。小型の内部キャッシュ43は仮想的に指標付けされている。大型の外部キャッシュ44は物理的に指標付けされている。仮想的に指標付けされたキャッシュ内に存在するエイリアスのキャッシングを禁止することにより、データ不一致問題は回避される。各エイリアスは同一の物理アドレスへマッピングする。従って、各エイリアスも物理的に指標付けされた外部キャッシュ44に存在する同一のキャッシュ・ラインへマッピングする。また、外部キャッシュ44が物理的にタグ付けされている場合、物理アドレスが外部キャッシュ内にてキャッシュされるなら、与えられた物理アドレスの任意の多数のエイリアスへの参照は、外部キャッシュ・ヒットを生成する。外部キャッシュ44が仮想的にタグ付けされ、多数のエイリアスのうちの1つがキャッシュされる場合、仮想タグは各エイリアスに対して異なっている必要があるため、その他の任意のエイリアスへの参照は常に外部キャッシュ・ミスを生成する。いかなる場合においても、2つのキャッシュ・ラインは同一の物理アドレスへマッピングされるデータを保持していないため、データ不一致問題は解消される。
【0036】
オペレーティング・システム・ソフトウェアはソフトウェア変換テーブル40内に変換情報を管理する。オペレーティング・システムはメモリのページに対するキャッシュ可能性属性を管理する。従って、各ページは物理的に指標付けされたキャッシュ内にてキャッシュ可能(cachable-in-physically-indexed-cache)な(CP)属性及び仮想的に指標付けされたキャッシュ内にてキャッシュ可能(CV)な属性を有する。各ページは多くの分割された記憶位置を有する。アドレス内のページ・オフセットを指定するためにp個のビットが必要である場合、各ページは2p もの記憶位置を有する。2つの仮想ページが同一の物理アドレスへマッピングする場合、2つの仮想ページ内の各アドレスは他方のページ上に1つのエイリアスを有する。従って、エイリアス処理はページ毎に行われる。2つの仮想ページがエイリアスである場合、全体の両ページのCV属性は不活性状態となる。オペレーティング・システムのオフセット規則を破るマッピングが生じる以前に、ページからのいくらかのデータが仮想キャッシュ内に存在する場合、そのページを仮想キャッシュ内にてキャッシュ不能にするまで、オペレーティング・システムは仮想キャッシュからそのようなデータを消去する。
【0037】
内部キャッシュ43は、少なくとも外部キャッシュ44に対してライト・スルーキャッシュであることが一般的である。従って、内部キャッシュ43へ書き込まれるデータも外部キャッシュ44へ書き込まれる。そのため、外部キャッシュ44は内部キャッシュ43内に存在する全ての最新のコピーを保有する。仮想ページが仮想的に指標付けされたキャッシュ(CV=0)内にてもうキャッシュ可能ではなくなるように、ページのキャッシュ可能性属性が変更される時、仮想的に指標付けされたキャッシュ43から消去されたデータは、データ保全に対して悪影響を与えない。それは、同一のデータが物理的に指標付けされた外部キャッシュ44内においてまだ使用可能であるためである。
【0038】
変換索引バッファ(TLB)41の内容に関する本発明に基づいて、全てのエイリアスはTLB41内に同時に存在できる。TLBミスはソフトウェアに割り込みを発生させる。従来技術の方法では、ソフトウェアの介入なしではハードウェアが正確に実行できないことがあったため、特にソフトウェアに割り込みを発生させるべく、エントリをTLB41から取り除いていた。本発明のこの実施形態に基づくエイリアスの間にはデータの一貫性を確保するために、ソフトウェアの介入を必要としないことから、同一の物理ページへのいくつかのマッピングはTLB41内にて同時に存在し得る。これにより、本発明の重要な効果が得られる。いくつかのエイリアスの仮想アドレスから物理アドレスへの変換は、TLB41内にて同時に存在し得ることから、それらがTLB41内に存在すると仮定すれば、TLBミス・ハンドラ・ソフトウェアは任意のエイリアスへの参照上に呼び出される。従って、エイリアスがアクセスされる度にTLBミスハンドラが繰り返し呼び出される場合、任意のエイリアスへのメモリ参照に対する平均アクセス時間は、要求されたアクセス時間と比べて比較的に遅い。更に、任意のエイリアスに対する所望のデータは物理的に指標付けされた2次キャッシュ内にて使用可能であるため、低速のメイン・メモリにアクセスする必要のある長期の遅延は発生しない。
【0039】
図6は、本発明の第1の実施形態に基づくオペレーティング・システムの処理を示す。新たな仮想アドレスから物理アドレスへのエイリアス・マッピング(図6に示すNEWALIASは、本発明の第2の仮想アドレスに対応するデータを構成する。)が、いつソフトウェア変換テーブルへ付加されても、オペレーティング・システム・ソフトウェアはステップ60から開始する。判断61では、オペレーティング・システムは、エイリアスの制約が破られたか否かを判断する。その制約とは、前述したようにエイリアスが仮想的に指標付けされた多数のキャッシュ・サイズによりオフセットされることである。エイリアスが適切にオフセットされる場合、ステップ62において、オペレーティング・システムは、TLB及びソフトウェア変換テーブル内の両エイリアスに対するCVビット及びCPビットを活性状態(assert)とし、オペレーティング・システムの処理はステップ63にて終了する。しかしながら、エイリアスの制約が破られた場合、ステップ64において、オペレーティング・システムは仮想的に指標付けされた1次キャッシュ43(図4に示す)からの前回存在していたエイリアス(図6に示すOLDALIASは、本発明の第1の仮想アドレスに対応するデータを構成する。)を消去するか又は取り除く(データ無効工程)。この工程には、1次キャッシュ無効回路が用いられる。ステップ65において、両エイリアスに対するCV属性ビットはTLB内にて不活性状態とされ(キャッシュ不能工程)、両エイリアスに対するCP属性ビットは活性状態に保たれる(キャッシュ可能工程)。これらの工程には、それぞれ1次キャッシュ不能回路と2次キャッシュ可能回路が用いられる。CPビットが活性状態であるため、物理的に指標付けされた2次キャッシュ44(図4に示す)内において両エイリアスは(同一のラインにて)キャッシュ可能である。ステップ65の後、プロセッサはエイリアスのうちの1つがマッピングされるまでソフトウェアの介入なしで動作する。判断66では、オペレーティング・システムはいつエイリアスのうちの1つが異なる仮想アドレスへ再マッピングされるのか、又はいつそれが仮想アドレス空間から取り除かれるのかの経過を追う。マッピングのうちの1つが変わる時、ソフトウェア・ルーチンはステップ60から再開される。
【0040】
本発明の第2の実施形態に基づいて、2つ以上のエイリアスが多数の仮想キャッシュ・サイズによりオフセットされる場合、それらのエイリアスのうちの1つのみが仮想キャッシュ内にてキャッシュ可能である。その他のエイリアスに対しては、それらのエイリアスの変換ページに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な(CV)ビットは、不活性状態となる。オペレーティング・システムはページに対するCV属性を不活性状態とするまで、仮想的に指標付けされた内部キャッシュからのデータを消去する。
【0041】
この実施形態において、オペレーティング・システムは上記の処理及び以下の通常の処理を行う。XとYがそれぞれ仮想アドレスとエイリアスである場合を仮定すると、それらは同一の物理アドレスへマッピングされる。エイリアスが仮想的に指標付けされた多数のキャッシュ・サイズによりオフセットされるべきであるというオペレーティング・システム・ガイドラインが、何らかの理由により守られないと仮定する。Xは仮想的に指標付けされたキャッシュ内に残ることを許容する。Yの変換テーブル・エントリに対するCVビットを不活性状態にすることにより、Yに対するTLBマッピングンは変更されるため、Yは仮想キャッシュ内にてキャッシュ可能ではない。従って、Yが物理的に指標付けされた外部キャッシュへ退避されている間、Xは仮想的に指標付けされたキャッシュ43内に存在する。ここで、Yへのストアが実行される。続いて、Xからのロードが実行される。X及びYは同一メモリの変数を実際に参照しているため、仮想的に指標付けされたキャッシュ43内からXをロードすることにより、物理的に指標付けされた2次キャッシュ内のYへストアされたデータが返還される。しかしながら、2次キャッシュからの情報により1次キャッシュを更新するハードウェア機構は全くない。従って、オペレーティング・システムはこれが発生しないように確保する処理を行う。このオペレーティング・システムの複雑性を増加させることにより得られる効果は、Xへのアクセスにより高速の1次キャッシュの有効性を保つことである。
本発明の第2の実施形態に基づき、最新の物理アドレスへのマッピングは1次キャッシュ内に残ることを許容する。これには、1次キャッシュから古いエイリアスを消去する必要がある。図7は、本発明の第2の実施形態に基づくオペレーティング・システムの処理を示す。オペレーティング・システムは新たなエイリアス(図7に示すNEWALIAS)をマッピングする時、ソフトウェア・ルーチンはステップ70にて呼び出される。ステップ71では、全てのエイリアスが仮想的に指標付けされた多数のキャッシュ・サイズによりオフセットされるというガイドラインが破られたか否かを判断する。ガイドラインが守られている場合、両OLDALIAS,NEWALIASは仮想的に指標付けされたキャッシュ内にてキャッシュ可能に維持される。従って、ステップ72において、TLBと多層変換テーブルに存在する他のレベルとが更新されるため、エイリアスに対するCP及びCVビットは活性状態となり、オペレーティング・システムのルーチンがステップ73にて終了する。従って、何れかのエイリアスへの後続のアクセスはソフトウェアの介入を伴うことなく実行される。オペレーティング・システムのガイドラインが破られた場合、ステップ74において、オペレーティング・システムは仮想的に指標付けされた1次キャッシュからのデータを消去する(データ無効工程)。この工程には、1次キャッシュ無効回路が用いられる。そして、ステップ75では、OLDALIASに対するCVビットを不活性状態とする(キャッシュ不能工程)。この工程には、1次キャッシュ不能回路が用いられる。従って、NEWALIASは1次キャッシュ43内に存在できるが、OLDALIASは2次キャッシュ44内に保持されなければならない。ステップ76では、2次キャッシュ44内に存在するOLDALIASへのストアがディスパッチされたか否かを判断する。このステップ76は、ハードウェアの支援なしでは実行し難い。従って、これを実行する別の方法は、W(writeable )ビットとして参照される一般的なTLB属性を用いることである。OLDALIASに対するWビットを不活性状態にすることにより、OLDALIASへのストアが発生しないように、オペレーティング・システムは適切なページマッピングにおいてこのビットを調節できる。OLDALIASへのストアが実行される場合、Wビットが不活性状態であるためソフトウェアの割り込みを受け入れ、オペレーティング・システムは適切なデータ消去と属性の調節とを実行する。OLDALIASへのストアがディスパッチされる場合、1次キャッシュ内のNEWALIASに対するデータは古くなるため、ステップ77においてそのデータは1次キャッシュから消去される(データ無効工程)。この工程には、1次キャッシュ無効回路が用いられる。ステップ78では、変換テーブル及びTLB内にてNEWALIASのページに対するCVビットは不活性状態となり(キャッシュ不能工程)、変換テーブル及びTLB内にてOLDALIASのページに対するCPビットは活性状態となる(キャッシュ可能工程)。これらの工程には、それぞれ1次キャッシュ不能回路と2次キャッシュ可能回路が用いられる。これにより、NEWALIASが2次キャッシュへ退避される間、OLDALIASが1次キャッシュ内に存在することを許容する。ステップ79により、2次キャッシュ44内に存在するNEWALIASへのストアがディスパッチされたと判断された場合、処理はOLDALIAS及びNEWALIASが1次及び2次キャッシュ内にてそれらの位置を入れ換えるステップ74へ戻る。ステップ79によりNEWALIASへのストアが検出されない限り、及びステップ80により何れかのエイリアスへの再マッピングが検出されない限り、何れかのエイリアスへのアクセスはソフトウェアの介入を伴うことなく実行される。これは、両エイリアスに対する変換がTLB41内に存在するためである。ステップ80により、何れかのエイリアスへの新たなマッピングが検出された場合、ルーチンはステップ70から再開される。同様に、NEWALIASが1次キャッシュ内に存在する間に、ステップ81により何れかのエイリアスに対する新たなマッピングを検出する場合、ルーチンはステップ70から再開される。
【0042】
本発明の第3の実施形態は、NEWALIASがマッピングされた時、OLDALIASが1次キャッシュ内に残ることを許容する。図8は、第3の実施形態に関わるオペレーティング・システムの流れを示す。第3の実施形態に基づくオペレーティング・システム・ソフトウェアの流れは、第2の実施形態のそれと似ている。実際、図7を以下のように変更することにより図8に置き換えられる。ステップ78とステップ75の位置を入れ換え、ステップ77とステップ74の位置を入れ換え、ステップ78とステップ75の位置を入れ換え、ステップ79とステップ76の位置を入れ換える。ここで、新しいステップ77の位置(図7に示すステップ74の位置)が移動されることによりステップ71のYESの分岐はステップ78の新しい位置(図7に示すステップ75の位置)へ直接的に流れる。第2の実施形態に対する第3の実施形態の基本的な違いは、新たなエイリアスが実行されるまで、古いエイリアスは1次キャッシュ43内に残ることである。
【0043】
第2又は第3の実施形態の何れにおいても、2次キャッシュ内のエイリアスへのストアの存在によりデータの一貫性を維持すること以外の付加的な他の理由のために、オペレーティング・システムは1次キャッシュ43内に存在する古いエイリアスと新しいエイリアスを入れ換えるために選択する。プログラムの正確な動作を保証するために、2次キャッシュ44内に存在するエイリアスへのストアが実行される時には、常にエイリアスに対するCVビットの入れ換えが必要である。しかしながら、他の状況においてもオペレーティング・システムは、CV属性を入れ換えることにより処理速度を上げることができる。図7に示すフローチャートを実行することによりプログラムの正確な処理が保証されても、オペレーティング・システム・ソフトウェアはOLDALIASへのストアが実行されるまで、OLDALIASを1次キャッシュへ入れ換えるように選択する。例えば、オペレーティング・システムはOLDALIASが近い将来に繰り返しロードされることを予期する場合、この選択は慎重な決定である。従って、高速の1次キャッシュを用いる利点により、大幅な実行時間の短縮が認識される。これらの場合、図7に示すステップ76,79とそれらに対応する図8のステップ(判断)とは、どちらへ分岐するかを決める前に(ストアがディスパッチされたか否か以外の)付加的な情報を考慮する。添付の特許請求の範囲は、そのような自明な形態を含んでいる。
【0044】
尚、プロセッサは本発明の1次キャッシュ無効回路、1次キャッシュ不能回路、2次キャッシュ可能回路及び1次キャッシュ可能回路を構成する。ソフトウェア・変換テーブル40、変換索引バッファ41、1次キャッシュ42、1次キャッシュ43、及び2次キャッシュ44は本発明のメモリ・システムを構成する。
【0045】
本発明の方法及び装置は、現時点において好ましい実施形態に関して説明したが、当業者は本発明の趣旨を逸脱しない範囲内にて変更及び改変可能であると理解することができよう。従って、本明細書及び図面は限定するものではなく、例示的なものであると考えるべきである。
【0046】
【発明の効果】
この発明によれば、仮想アドレスのキャッシュ可能性を示す属性ビットを備えた変換テーブルを用いることにより、エイリアスがオフセットされない場合においても、データの処理速度を低下させることなくデータの一貫性を維持することができるという効果を発揮する。
【図面の簡単な説明】
【図1】 プロセッサ、キャッシュ及びメイン・メモリの関係を示す概略的なブロック図。
【図2】 仮想アドレスからそれに対応する物理アドレスへの変換を示す図。
【図3】 ダイレクト・マッピングされるキャッシュの動作を示す図。
【図4】 従来技術及び本発明の実施形態に係る記憶位置と、メモリ構造及びアドレス変換テーブル構造との編成を示す概略的なブロック図。
【図5】 本発明に基づく小型の変換索引バッファを示す概略図。
【図6】 本発明の第1の実施形態に基づくオペレーティング・システム・ソフトウェア・ルーチンの動作を示すフローチャート。
【図7】 本発明の第1の実施形態に基づくオペレーティング・システム・ソフトウェア・ルーチンの動作を示すフローチャート。
【図8】 本発明の第3の実施形態に基づくオペレーティング・システム・ソフトウェア・ルーチンの動作を示すフローチャート。
【符号の説明】
40…ソフトウェア変換テーブル、41…変換索引バッファ、42…1次キャッシュ、43…1次キャッシュ、44…2次キャッシュ(40,41,42,43は本発明のメモリ・システムを構成する。)、45…メイン・メモリ、50…仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビット、51…物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビット。
Claims (8)
- 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照方法において、
第1の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にするデータ無効工程と、
第1の仮想アドレスに対応するデータを1次キャッシュ内において不能にするキャッシュ不能工程と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第1の仮想アドレスへのストアを実行するまで、第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第1の仮想アドレスへのストアを実行した後に、第2の仮想アドレスに対応するデータを1次キャッシュ内において無効にするデータ無効工程と、
第1の仮想アドレスへのストアを実行した後に、第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第1の仮想アドレスへのストアを実行した後に、第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備えた第2の仮想アドレスの参照方法。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照方法において、
第1の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にするデータ無効工程と、
第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備え、
第1の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程が遂行され、
第1の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行され、
第2の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行される第2の仮想アドレスの参照方法。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照装置において、
第1の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にするための1次キャッシュ無効回路と、
第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするための1次キャッシュ不能回路と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするためであり、かつ第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするための2次キャッシュ可能回路と
第1の仮想アドレスへのストアを実行するまで、第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能にするための1次キャッシュ可能回路とを備え、
第1の仮想アドレスへのストアを実行した後に、1次キャッシュ無効回路はまた第2の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にし、
第1の仮想アドレスへのストアを実行した後に、1次キャッシュ不能回路はまた第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にし、
第1の仮想アドレスへのストアを実行した後に、1次キャッシュ可能回路はまた第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能にする第2の仮想アドレスの参照装置。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照装置において、
第1の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にするための1次キャッシュ無効回路と、
第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするための1次キャッシュ不能回路と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするためであり、かつ第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするための2次キャッシュ可能回路とを備え、
第1の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、1次キャッシュ不能回路は第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にし、
第1の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、2次キャッシュ可能回路は第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にし、
第2の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、2次キャッシュ可能回路は第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッュ可能にする第2の仮想アドレスの参照装置。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照方法において、
第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と
第2の仮想アドレスへのストアを実行するまで、第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能とするキャッシュ可能工程と、
第2の仮想アドレスへのストアを実行した後に、第1の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にするデータ無効工程と、
第2の仮想アドレスへのストアを実行した後に、第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第2の仮想アドレスへのストアを実行した後に、第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備えた第2の仮想アドレスの参照方法。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照方法において、
第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備え、
第2の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程が遂行され、
第1の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行され、
第2の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行される第2の仮想アドレスの参照方法。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照装置において、
第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするための1次キャッシュ不能回路と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするためであり、かつ第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするための2次キャッシュ可能回路と、
第2の仮想アドレスへのストアを実行するまで、第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能とするための1次キャッシュ可能回路とを備え、
第2の仮想アドレスへのストアを実行した後に、1次キャッシュ無効回路はまた第1の仮想アドレスに対応する全てのデータを1次キャッシュ内において無効にし、
第2の仮想アドレスへのストアを実行した後に、1次キャッシュ不能回路はまた第1の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にし、
第2の仮想アドレスへのストアを実行した後に、1次キャッシュ可能回路はまた第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ可能にする第2の仮想アドレスの参照装置。 - 物理アドレスへマッピングする第1の仮想アドレス、仮想的に指標付けされた1次キャッシュ及び物理的に指標付けされた2次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第2の仮想アドレスの参照装置において、
第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にするための1次キャッシュ不能回路と、
第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするためであり、かつ第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にするための2次キャッシュ可能回路とを備え、
第2の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、1次キャッシュ不能回路は第2の仮想アドレスに対応するデータを1次キャッシュ内においてキャッシュ不能にし、
第1の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、2次キャッシュ可能回路は第1の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にし、
第2の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、2次キャッシュ可能回路は第2の仮想アドレスに対応するデータを2次キャッシュ内においてキャッシュ可能にする第2の仮想アドレスの参照装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/391389 | 1995-02-27 | ||
US08/391,389 US6006312A (en) | 1995-02-27 | 1995-02-27 | Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08272693A JPH08272693A (ja) | 1996-10-18 |
JP3859757B2 true JP3859757B2 (ja) | 2006-12-20 |
Family
ID=23546398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03995296A Expired - Lifetime JP3859757B2 (ja) | 1995-02-27 | 1996-02-27 | 仮想アドレスについてのキャッシュ可能性属性ビットを備えた変換テーブル・エントリ及びそのビットを用いた仮想アドレスの参照方法並びにその仮想アドレスの参照装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6006312A (ja) |
EP (1) | EP0729102B1 (ja) |
JP (1) | JP3859757B2 (ja) |
KR (1) | KR100372293B1 (ja) |
DE (1) | DE69629140T2 (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199152B1 (en) * | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
KR19990070788A (ko) * | 1998-02-24 | 1999-09-15 | 윤종용 | 가상캐쉬 메모리의 어라이징 방지방법 |
US6449695B1 (en) * | 1999-05-27 | 2002-09-10 | Microsoft Corporation | Data cache using plural lists to indicate sequence of data storage |
US6438672B1 (en) * | 1999-06-03 | 2002-08-20 | Agere Systems Guardian Corp. | Memory aliasing method and apparatus |
US6553460B1 (en) * | 1999-10-01 | 2003-04-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6671792B1 (en) * | 2000-04-28 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | Share masks and alias for directory coherency |
US6751720B2 (en) * | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy |
US6850929B2 (en) * | 2001-03-08 | 2005-02-01 | International Business Machines Corporation | System and method for managing file system extended attributes |
US6622208B2 (en) * | 2001-03-30 | 2003-09-16 | Cirrus Logic, Inc. | System and methods using a system-on-a-chip with soft cache |
US6732248B2 (en) | 2001-06-28 | 2004-05-04 | International Business Machines, Corporation | System and method for ghost offset utilization in sequential byte stream semantics |
GB2378779B (en) * | 2001-08-14 | 2005-02-02 | Advanced Risc Mach Ltd | Accessing memory units in a data processing apparatus |
US7299318B2 (en) * | 2001-12-20 | 2007-11-20 | Sun Microsystems, Inc. | Method for reducing cache conflict misses |
US20040059887A1 (en) * | 2002-09-25 | 2004-03-25 | K. S. Venkatraman | Cache memory |
US20050188172A1 (en) * | 2004-02-20 | 2005-08-25 | Intel Corporation | Reduction of address aliasing |
US7206916B2 (en) * | 2004-03-08 | 2007-04-17 | Sun Microsystems, Inc. | Partial address compares stored in translation lookaside buffer |
US7451271B2 (en) * | 2004-04-05 | 2008-11-11 | Marvell International Ltd. | Physically-tagged cache with virtually-tagged fill buffers |
US7543132B1 (en) | 2004-06-30 | 2009-06-02 | Sun Microsystems, Inc. | Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes |
US7516298B2 (en) * | 2004-11-15 | 2009-04-07 | Platform Solutions Incorporated | Sparse table compaction method |
US9280473B2 (en) | 2004-12-02 | 2016-03-08 | Intel Corporation | Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner |
US7814292B2 (en) * | 2005-06-14 | 2010-10-12 | Intel Corporation | Memory attribute speculation |
US8417915B2 (en) * | 2005-08-05 | 2013-04-09 | Arm Limited | Alias management within a virtually indexed and physically tagged cache memory |
US7984241B2 (en) | 2005-09-16 | 2011-07-19 | Hewlett-Packard Development Company, L.P. | Controlling processor access to cache memory |
JP2009069969A (ja) * | 2007-09-11 | 2009-04-02 | Canon Inc | 情報処理方法および情報処理装置、プログラム |
US7941631B2 (en) * | 2007-12-28 | 2011-05-10 | Intel Corporation | Providing metadata in a translation lookaside buffer (TLB) |
KR101594029B1 (ko) * | 2009-07-06 | 2016-02-16 | 삼성전자주식회사 | 데이터 조작 방법 및 그 방법을 이용하는 시스템 장치 |
US20130111181A1 (en) * | 2011-10-31 | 2013-05-02 | Lsi Corporation | Methods and apparatus for increasing device access performance in data processing systems |
US9842051B1 (en) * | 2015-03-25 | 2017-12-12 | Marvell International Ltd. | Managing aliasing in a virtually indexed physically tagged cache |
US11989286B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety |
US11836080B2 (en) | 2021-05-07 | 2023-12-05 | Ventana Micro Systems Inc. | Physical address proxy (PAP) residency determination for reduction of PAP reuse |
US11860794B2 (en) | 2021-05-07 | 2024-01-02 | Ventana Micro Systems Inc. | Generational physical address proxies |
US11841802B2 (en) | 2021-05-07 | 2023-12-12 | Ventana Micro Systems Inc. | Microprocessor that prevents same address load-load ordering violations |
US11868263B2 (en) * | 2021-05-07 | 2024-01-09 | Ventana Micro Systems Inc. | Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache |
US11989285B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3723976A (en) * | 1972-01-20 | 1973-03-27 | Ibm | Memory system with logical and real addressing |
US4136385A (en) * | 1977-03-24 | 1979-01-23 | International Business Machines Corporation | Synonym control means for multiple virtual storage systems |
US4332010A (en) * | 1980-03-17 | 1982-05-25 | International Business Machines Corporation | Cache synonym detection and handling mechanism |
US4400770A (en) * | 1980-11-10 | 1983-08-23 | International Business Machines Corporation | Cache synonym detection and handling means |
US4488256A (en) * | 1981-11-23 | 1984-12-11 | Motorola, Inc. | Memory management unit having means for detecting and preventing mapping conflicts |
US4727482A (en) * | 1983-08-30 | 1988-02-23 | Amdahl Corporation | Apparatus for enhancing searches of data tables |
US4785398A (en) * | 1985-12-19 | 1988-11-15 | Honeywell Bull Inc. | Virtual cache system using page level number generating CAM to access other memories for processing requests relating to a page |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
KR920001282B1 (ko) * | 1987-10-02 | 1992-02-10 | 가부시키가이샤 히타치세이사쿠쇼 | 버퍼메모리 제어장치 |
US5119290A (en) * | 1987-10-02 | 1992-06-02 | Sun Microsystems, Inc. | Alias address support |
US5003459A (en) * | 1988-04-01 | 1991-03-26 | Digital Equipment Corporation | Cache memory system |
US5113514A (en) * | 1989-08-22 | 1992-05-12 | Prime Computer, Inc. | System bus for multiprocessor computer system |
US5133058A (en) * | 1989-09-18 | 1992-07-21 | Sun Microsystems, Inc. | Page-tagging translation look-aside buffer for a computer memory system |
JP2833062B2 (ja) * | 1989-10-30 | 1998-12-09 | 株式会社日立製作所 | キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置 |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5226133A (en) * | 1989-12-01 | 1993-07-06 | Silicon Graphics, Inc. | Two-level translation look-aside buffer using partial addresses for enhanced speed |
GB2239724B (en) * | 1990-01-05 | 1993-11-24 | Sun Microsystems Inc | Apparatus for maintaining consistency in a multi-processor computer system using virtual caching |
CA2044689A1 (en) * | 1990-06-15 | 1991-12-16 | Roger E. Tipley | Multilevel inclusion in multilevel cache hierarchies |
US5412787A (en) * | 1990-11-21 | 1995-05-02 | Hewlett-Packard Company | Two-level TLB having the second level TLB implemented in cache tag RAMs |
US5479630A (en) * | 1991-04-03 | 1995-12-26 | Silicon Graphics Inc. | Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same |
US5564052A (en) * | 1991-06-27 | 1996-10-08 | Integrated Device Technology, Inc. | Logically disconnectable virtual-to-physical address translation unit and method for such disconnection |
US5487162A (en) * | 1992-02-25 | 1996-01-23 | Matsushita Electric Industrial Co., Ltd. | Cache lock information feeding system using an address translator |
JP2839060B2 (ja) * | 1992-03-02 | 1998-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システムおよびデータ処理方法 |
US5392410A (en) * | 1992-04-30 | 1995-02-21 | International Business Machines Corporation | History table for prediction of virtual address translation for cache access |
US5675763A (en) * | 1992-07-15 | 1997-10-07 | Digital Equipment Corporation | Cache memory system and method for selectively removing stale aliased entries |
US5606687A (en) * | 1993-10-07 | 1997-02-25 | Sun Microsystems, Inc. | Method and apparatus for optimizing supervisor mode store operations in a data cache |
US5502829A (en) * | 1993-11-03 | 1996-03-26 | Intergraph Corporation | Apparatus for obtaining data from a translation memory based on carry signal from adder |
US5550995A (en) * | 1994-01-03 | 1996-08-27 | Motorola, Inc. | Memory cache with automatic alliased entry invalidation and method of operation |
US5668972A (en) * | 1994-10-05 | 1997-09-16 | International Business Machines Corporation | Method and system for efficient miss sequence cache line allocation utilizing an allocation control cell state to enable a selected match line |
-
1995
- 1995-02-27 US US08/391,389 patent/US6006312A/en not_active Expired - Lifetime
-
1996
- 1996-02-22 DE DE69629140T patent/DE69629140T2/de not_active Expired - Lifetime
- 1996-02-22 EP EP96630011A patent/EP0729102B1/en not_active Expired - Lifetime
- 1996-02-26 KR KR1019960004550A patent/KR100372293B1/ko not_active IP Right Cessation
- 1996-02-27 JP JP03995296A patent/JP3859757B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69629140D1 (de) | 2003-08-28 |
KR100372293B1 (ko) | 2003-07-18 |
EP0729102B1 (en) | 2003-07-23 |
DE69629140T2 (de) | 2004-04-15 |
JPH08272693A (ja) | 1996-10-18 |
EP0729102A3 (en) | 1998-10-07 |
EP0729102A2 (en) | 1996-08-28 |
US6006312A (en) | 1999-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3859757B2 (ja) | 仮想アドレスについてのキャッシュ可能性属性ビットを備えた変換テーブル・エントリ及びそのビットを用いた仮想アドレスの参照方法並びにその仮想アドレスの参照装置 | |
US6047357A (en) | High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy | |
USRE45078E1 (en) | Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems | |
US5689679A (en) | Memory system and method for selective multi-level caching using a cache level code | |
US8949572B2 (en) | Effective address cache memory, processor and effective address caching method | |
US10019377B2 (en) | Managing cache coherence using information in a page table | |
US5802568A (en) | Simplified least-recently-used entry replacement in associative cache memories and translation lookaside buffers | |
US6205521B1 (en) | Inclusion map for accelerated cache flush | |
US7949834B2 (en) | Method and apparatus for setting cache policies in a processor | |
US20050108496A1 (en) | Hardware support for superpage coalescing | |
US20100064107A1 (en) | Microprocessor cache line evict array | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
EP0408058A2 (en) | Microprocessor | |
US7093072B2 (en) | Methods for improved data caching | |
JP2002140231A (ja) | 拡張型キャッシュメモリシステム | |
US5809526A (en) | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation | |
US7472225B2 (en) | Caching data | |
US5293622A (en) | Computer system with input/output cache | |
JPH04253240A (ja) | コンピューターメモリシステムにおけるデータ統合方法 | |
JPH05216766A (ja) | データ・キャッシュとセグメント記述子の間のキャッシュの可干渉性を維持する方法およびコンピュータのメモリ装置 | |
US6256710B1 (en) | Cache management during cache inhibited transactions for increasing cache efficiency | |
US5835945A (en) | Memory system with write buffer, prefetch and internal caches | |
US5619673A (en) | Virtual access cache protection bits handling method and apparatus | |
US20050091459A1 (en) | Flexible mechanism for enforcing coherency among caching structures | |
EP0474356A1 (en) | Cache memory and operating method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050804 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050830 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051130 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20051206 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060314 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060614 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060626 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060823 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060825 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060920 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100929 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110929 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110929 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120929 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120929 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130929 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |