(57)【特許請求の範囲】
【請求項１】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照方法において、
第１の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にするデータ無効工程と、
第１の仮想アドレスに対応するデータを１次キャッシュ内において不能にするキャッシュ不能工程と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第１の仮想アドレスへのストアを実行するまで、第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第１の仮想アドレスへのストアを実行した後に、第２の仮想アドレスに対応するデータを１次キャッシュ内において無効にするデータ無効工程と、
第１の仮想アドレスへのストアを実行した後に、第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第１の仮想アドレスへのストアを実行した後に、第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備えた第２の仮想アドレスの参照方法。
【請求項２】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照方法において、
第１の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にするデータ無効工程と、
第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備え、
第１の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程が遂行され、
第１の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行され、
第２の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行される第２の仮想アドレスの参照方法。
【請求項３】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照装置において、
第１の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にするための１次キャッシュ無効回路と、
第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするための１次キャッシュ不能回路と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするためであり、かつ第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするための２次キャッシュ可能回路と
第１の仮想アドレスへのストアを実行するまで、第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能にするための１次キャッシュ可能回路とを備え、
第１の仮想アドレスへのストアを実行した後に、１次キャッシュ無効回路はまた第２の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にし、
第１の仮想アドレスへのストアを実行した後に、１次キャッシュ不能回路はまた第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にし、
第１の仮想アドレスへのストアを実行した後に、１次キャッシュ可能回路はまた第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能にする第２の仮想アドレスの参照装置。
【請求項４】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照装置において、
第１の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にするための１次キャッシュ無効回路と、
第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするための１次キャッシュ不能回路と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするためであり、かつ第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするための２次キャッシュ可能回路とを備え、
第１の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、１次キャッシュ不能回路は第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にし、
第１の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、２次キャッシュ可能回路は第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にし、
第２の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、２次キャッシュ可能回路は第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッュ可能にする第２の仮想アドレスの参照装置。
【請求項５】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照方法において、
第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と
第２の仮想アドレスへのストアを実行するまで、第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能とするキャッシュ可能工程と、
第２の仮想アドレスへのストアを実行した後に、第１の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にするデータ無効工程と、
第２の仮想アドレスへのストアを実行した後に、第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第２の仮想アドレスへのストアを実行した後に、第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備えた第２の仮想アドレスの参照方法。
【請求項６】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照方法において、
第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程と、
第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程とを備え、
第２の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするキャッシュ不能工程が遂行され、
第１の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行され、
第２の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするキャッシュ可能工程が遂行される第２の仮想アドレスの参照方法。
【請求項７】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照装置において、
第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするための１次キャッシュ不能回路と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするためであり、かつ第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするための２次キャッシュ可能回路と、
第２の仮想アドレスへのストアを実行するまで、第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能とするための１次キャッシュ可能回路とを備え、
第２の仮想アドレスへのストアを実行した後に、１次キャッシュ無効回路はまた第１の仮想アドレスに対応する全てのデータを１次キャッシュ内において無効にし、
第２の仮想アドレスへのストアを実行した後に、１次キャッシュ不能回路はまた第１の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にし、
第２の仮想アドレスへのストアを実行した後に、１次キャッシュ可能回路はまた第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ可能にする第２の仮想アドレスの参照装置。
【請求項８】
物理アドレスへマッピングする第１の仮想アドレス、仮想的に指標付けされた１次キャッシュ及び物理的に指標付けされた２次キャッシュを有するメモリ・システム内にて、前記物理アドレスへマッピングする第２の仮想アドレスの参照装置において、
第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にするための１次キャッシュ不能回路と、
第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするためであり、かつ第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にするための２次キャッシュ可能回路とを備え、
第２の仮想アドレスのための変換テーブル・エントリに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを不活性状態にすることにより、１次キャッシュ不能回路は第２の仮想アドレスに対応するデータを１次キャッシュ内においてキャッシュ不能にし、
第１の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、２次キャッシュ可能回路は第１の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にし、
第２の仮想アドレスのための変換テーブル・エントリに対する物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビットを活性状態にすることにより、２次キャッシュ可能回路は第２の仮想アドレスに対応するデータを２次キャッシュ内においてキャッシュ可能にする第２の仮想アドレスの参照装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は多層メモリ・システムを備えたプロセッサに係わる。詳しくは、仮想的に指標付けされたキャッシュにおけるエイリアスに関する。
【０００２】
【従来の技術】
多層メモリ・システムを用いることは、参照位置を利用するための一般的な技術である。基本的な考えは少量の高速アクセス・メモリと、多量の低速アクセス・メモリとを編成することにより、ほとんどのアクセスが少量の高速メモリに対して行われるようにすることである。そのようなメモリ・システムの平均アクセス時間は、少量の高速メモリよりも僅かに大きく、その有効記憶容量は多量の低速メモリのそれと同等である。
【０００３】
多層メモリ・システムの一般的な形態はキャッシュ・メモリ、即ち索引バッファ・メモリである。図１に示すように、キャッシュ・メモリ１０はプロセッサ１１とメイン・メモリ１２との間に配置された比較的小さな特殊メモリ装置である。キャッシュ・メモリ１０は、プロセッサ１１によってアクセスされそうなメイン・メモリ１２からのワードのコピーを保持している。キャッシュ１０はメイン・メモリ１２よりも高速であるため、アクセス頻度の高い記憶位置がキャッシュ１０内で見つかれば、ヒット率が高くなるとともに、メモリ・アクセスの平均時間は短くなる。キャッシュ１０により実行される方法は、プロセッサによって最近使用された他のワードの近くに位置するところのワードを保持することである。この方法により利用される局所参照とは、短時間のうちにメモリの小さな領域に群れをなすようにアクセスするメモリ・アクセスの傾向をいう。
【０００４】
キャッシュの記憶位置は冗長である。それは各記憶位置がより低速のメイン・メモリ１２にも格納された情報を、更にアクセスし易くするようにしたコピーを用いるという意味からである。このため、キャッシュ１０の存在により、アドレス化可能な全記憶容量はプログラマが見てとれるように増加しはしない。むしろ、プログラムの平易な方法において、キャッシュ１０は同一のアドレス空間内に存在する記憶位置への平均アクセス時間を改善する。
【０００５】
キャッシュ１０はメイン・メモリ１２よりもかなり小型であるため、いつでもキャッシュされ得るのはメイン・メモリ１２の少量の記憶位置のみである。従って、一般的にキャッシュ１０内に存在する各記憶位置、即ちキャッシュ・ラインは概念的に、タグ・フィールド及び内容フィールドという２つの部分を有する。読み出し又は書き込み動作が要求されるとき、指定されたアドレスはキャッシュ１０内の一定のラインのタグ・フィールドと比較される。その比較により整合が生じれば、整合しているタグを含むキャッシュ・ラインの内容フィールドが読み出し又は書き込まれる。これはキャッシュ・ヒットとして知られており、メイン・メモリ１２にアクセスする必要はない。
【０００６】
近年のプロセッサは、物理アドレス空間とは概念的に別の仮想アドレス空間を支援する。仮想アドレスは、プロセッサが記憶位置を指定するために用いるラベルである。プロセッサは、自身が仮想アドレスの記憶位置にアクセスできる限り、実際に記憶位置が物理メモリ内のどこに存在するかについては関与しない。プロセッサ・アーキテクチャの仕様により、支援されるべき一定の仮想アドレス空間が定義される。コンピュータ・システムを管理するオペレーティング・システムは、仮想アドレス空間からどのように物理メモリへマッピングされるのかに関して、柔軟性を有している。従って、仮想アドレスから物理アドレスへの変換が必要となる。
【０００７】
図２は一般的な仮想アドレスから物理アドレスへの変換を示す。仮想及び物理メモリは共に概念的にはページに分割されている。例えば、記憶位置の仮想アドレス２０は仮想ページ番号２１及びページ・オフセット指標２２からなる。仮想ページ番号２１は、指定された記憶位置が存在するメモリのページを表す。ページ・オフセット指標２２は、指定された記憶位置がそのページの境界線内において存在する位置を表す。このため、ページ・オフセット指標２２は、そのページの先頭位置に対する相対的な記憶位置を示す。又、物理アドレスも仮想アドレスと同様の構造を有する。物理ページ番号２３及びページ・オフセット指標２４は、物理メモリ・アドレス２５を定義する。慣習に従い、仮想アドレス空間を構成する大部分の装置は、仮想アドレス及び物理アドレスに対するのと同様の方法により、各ページ内にてメモリを指標付けする。従って、記憶位置の仮想アドレスに対するページ・オフセット指標２２と、それに対応する記憶位置の物理アドレスに対するページ・オフセット指標２４とは同一である。そのため、ページのサイズが２p である場合、記憶位置の仮想アドレスの下位ｐビットとそれに対応する記憶位置の物理アドレスとは等しく、共にページ・オフセット指標を表す。
【０００８】
仮想アドレス２０から物理アドレス２５への変換工程において、仮想ページ・オフセット指標２２は物理ページ・オフセット指標２４と同一であるため、仮想アドレス２０のページ・オフセット指標２２を変換する必要はない。しかしながら、物理ページ番号２３は仮想ページ番号２１と異なるため、仮想ページ番号２１を変換しなければならない。ハードウエア（変換索引バッファ）とソフトウエア（テーブル・ウォーキング "table walking"）との協働によって一般的に実現されるメモリ管理ユニット２６は、この仮想ページから物理ページへの変換を行う。
【０００９】
図３は非連想又はダイレクト・マッピングされたキャッシュの動作を示す。ダイレクト・マッピングされたキャッシュは、ヒットしたかを調べるためにキャッシュ内のアドレスを指定することにより、入力されたメモリ・アドレス３１の下位ビット３０を用いる。このため、記憶位置Ａはキャッシュ・ライン内のみに存在でき、キャッシュ内に存在するラインのアドレスは、Ａのアドレスの下位ｋビット３０である。メモリ・アドレス３１をキャッシュ３０中のある特定のライン内のみでキャッシュされるように強制すれば、それにより連想メモリよりも安価で高密度なランダム・アクセス・メモリ（ＲＡＭ）を使用できる。しかしながら、その強制により、同一のｋ個の下位アドレスビット３０を共有する記憶位置は、また同一のキャッシュ・ラインを共有することが必要になる。各キャッシュ・ラインが、ある記憶位置の内容を記憶するためのみに備えられる場合、同一の下位ｋのアドレスビット３０を有する２つの記憶位置は同一のキャッシュ・ラインと競合するため、同時にキャッシュされ得ない。ダイレクト・マッピングされるキャッシュの他の重要で魅力的な特徴は、それがより簡素であるとともに、より少ない回路しか必要としないことを考慮すれば、より高速に動作する傾向にあることである。
【００１０】
大部分のプロセッサ・アーキテクチャの仕様は、仮想アドレスの間のエイリアスを支援する。同一の物理アドレスを参照する２つの仮想アドレスは互いにエイリアスである。与えられ任意の記憶位置の物理アドレスの下位ｐビットは、その仮想ページの先頭位置からのページ・オフセットを表す。与えられた任意の仮想アドレスに対するページ・オフセット指標は、物理アドレスのページ・オフセット指標と同一である。従って、２つのアドレスは同じ物理アドレスを参照することから、両アドレスは互いにエイリアスであり、それらのアドレスの下位ｐビットは同一である。しかしながら、２つのエイリアスの仮想ページ番号を表すビットは異なる。
【００１１】
この説明の目的に関して、可能なキャッシュの編成は、仮想的又は物理的に指標付けされ、仮想的又は物理的にタグ付けされるとともに、セットアソシアティブ又はダイレクト・マッピングされるものである。仮想アドレスを支援するプロセッサにおいて、そのプロセッサのいくつかのキャッシュが仮想的に指標付けされるとともに、ダイレクト・マッピングされるキャッシュであり、他のキャッシュは物理的に指標付けされるとともに、ダイレクト・マッピングされるキャッシュである。仮想的に指標付けされるとともに、ダイレクト・マッピングされたキャッシュはキャッシュ・ラインへマッピングを行うために仮想アドレスを用いるのに対して、物理的に指標付けされるとともにダイレクト・マッピングされたキャッシュはキャッシュ・ラインへマッピングを行うために物理アドレスを用いる。このため、仮想的に指標付けされたキャッシュにおいて、キャッシュ・ラインの数が２k である場合、仮想アドレスの下位ｋビットは、その仮想アドレスに対するキャッシュ・ラインへマッピングするために用いられる。
【００１２】
キャッシュの記憶位置の数がページ内の記憶位置の数以下である場合、仮想アドレスの下位ｐビットはそれに対応する物理アドレスの下位ビットと同一であるため、仮想的に指標付けされたキャッシュと物理的に指標付けされたキャッシュとの区別は全くない。その場合、ｋがｐ以下である時、そのキャッシュ・ラインへマッピングするために用いられる下位ｋビットは全て同一であるため、全てのエイリアスは同一のキャッシュ・ラインへマッピングする。しかしながら、キャッシュのサイズが２p よりも大きい場合、仮想ページ・ビット又は物理ページ・ビットのいくらかはキャッシュラインを導くために用いられることから、仮想的及び物理的に指標付けされたキャッシュは、同一の記憶位置に対して異なるキャッシュ・ラインへマッピングを行う。更に、仮想的に指標付けされたキャッシュにおいて、エイリアスは同キャッシュ内の異なるキャッシュ・ラインへマッッピングするかもしれない。仮想的に指標付けされたキャッシュにおいて、ページ・サイズがキャッシュ・サイズよりも小さい場合、キャッシュ・ラインへマッピングを行うために、仮想ページ・ビットのうち１つ以上のビットが用いられる。エイリアスの仮想ページは異なるため、仮想アドレスの仮想ページ・ビットは異なる。このため、キャッシュ・ラインへマッピングすべく、仮想ページ番号のビットのうち１つ以上のビットが用いられるため、キャッシュ・ラインは異なることがある。
【００１３】
例えば、仮想的に指標付けされたキャッシュが２14のラインを有し、物理ページのサイズが２12のみである場合、与えられた任意の物理的な記憶位置は４つものエイリアスを有することがあり、そのエイリアスは異なるキャッシュ・ラインへマッピングする。これは、仮想ページ番号のビットのうちの２ビットが、キャッシュへマッピングするために用いられるという重要な事実である。２ビットによって表現され得る値は４つあるため、仮想ページ・ビットの下位２ビットに基づいて、エイリアスは任意の異なる４つの記憶位置へマッピングできる。
【００１４】
２つ以上の仮想アドレスが同一の物理アドレスへマッピングする場合、それらの仮想アドレスのうちの１つへ書き込まれるデータは、引き続き任意のエイリアスからの読み込みを行うとすぐに明らかになる。全てのエイリアスが同一のキャッシュ・ラインへマッピングする場合、仮想的に指標付けされたキャッシュは予期したように動作する。エイリアスのうちの任意の１つに書き込まれたデータは、同一のキャッシュ・ラインへ書き込まれる。しかしながら、エイリアスが異なるキャッシュ・ラインへマッピングする場合、重要なデータ不一致問題が生じる。２つの仮想エイリアスが仮想的にアドレス化されたキャッシュに存在する異なるキャッシュ・ラインへマッピングする場合、各エイリアスは独立した変数であるかのように動作する。例えば、Ｘ及びＹが仮想アドレスのエイリアスであり、かつＸへのストアが実行される場合、Ｙもそのキャッシュに存在するなら、後続のＹの読み込みの間、データは明らかではない。さらに、Ｘへの書き込みによりＹの値は破壊されるべきであるにもかかわらず、その値は変わらない。Ｘ及びＹがそのキャッシュから取り除かれる時、各々は自身が参照する物理メモリの記憶位置へ書き込まれる。キャッシュは書き戻し（ライト・スルー"write through" ではない）であると仮定すると、両Ｘ，Ｙがキャッシュから取り除かれた後に物理メイン・メモリ内に存在する値は、そのキャッシュからどの仮想アドレスが最後に取り除かれたかに依存する。従って、Ｙが最後に取り除かれる場合、Ｘへ書き込まれたデータは破壊されるのに対して、Ｙにおける古いデータは間違ってメイン・メモリ内の物理記憶位置を占有する。
【００１５】
データの一貫性を維持するために、１つの従来技術の方法では、全ての仮想エイリアスがキャッシュ不能、即ち１つのエイリアスさえもキャッシュ内に残れないことを要求する。この従来技術の方法により、任意のエイリアスへの任意の参照は、１次又は２次キャッシュからの効果を全く引き出せず、最も低速のメモリであるメイン・メモリにアクセスしなければならないことから、大幅な性能の低下となる。
【００１６】
図４はキャッシュ及びアドレス変換機構の構造を示す。オペレーティング・システムは任意のデータ構造内に、ソフトウェア変換テーブル４０と呼ばれる変換情報を管理する。変換索引バッファは高速のハードウェア変換を行い、そのバッファは本質的には大きく複雑なソフトウェア変換テーブルを有するキャッシュである。各キャッシュに対して、ソフトウェア変換テーブル４０の独立したキャッシュとして動作する変換索引バッファ（ＴＬＢ）４１が存在する。より頻繁にアクセスされる仮想ページに対して、ＴＬＢは１サイクル変換を行う。ＴＬＢヒットという用語は、所望の変換が集積回路上のＴＬＢ内に存在するという意味である。ＴＬＢミスという用語は、所望の変換が集積回路上のＴＬＢ内に存在しないという意味である。
【００１７】
ＴＬＢミスが起きると、メモリ管理ユニットはＴＬＢミスの処理を行うべくソフトウェアに即座に割り込む。ＴＬＢミス・ハンドラ・ソフトウェア・ルーチンは、使用可能な任意の手段によりＴＬＢを満たす選択を有する。いくつかのメモリ管理ユニットは、図４に示す変換格納バッファ（translation storage buffer）のような中間の変換装置を備える。変換格納バッファは２次キャッシュのアドレス変換のように動作する。ＴＬＢは小型かつ高速であるが、それに対してソフトウェア変換テーブルは大型かつ複雑である傾向にある。従って、ＴＬＢミス・ハンドラ・オペレーティング・システム・ソフトウェア・ルーチンがＴＬＢミスの後に呼び出される時、仮想から物理への変換が検索されて処理が継続して行われるまでに膨大なサイクルを要する。
【００１８】
第２の従来技術の方法では、一定の仮想エイリアスがキャッシュ内に居残ることを許容するが、その他の仮想エイリアスはキャッシュ及びＴＬＢから排除されることを要求する。一定のエイリアスをキャッシュ可能に維持することにより、前述の全てのエイリアスをキャッシュ不能とする方法よりもいくらか効果が得られる。一定のエイリアスをキャッシュ可能に維持する場合、そのエイリアスへ繰り返しアクセスが生じても、そのアドレスに対するキャッシュ及びＴＬＢエントリが高速であるため効果が得られる。
【００１９】
例えば、Ｘ及びＹがエイリアスである場合、Ｘがキャッシュ内に残ることができ、その変換もＴＬＢ内に残ることができる。しかしながら、Ｙをキャッシュ不能とする必要がある。ＸがＹを参照することなく繰り返し参照される場合、キャッシュの効果がいくらか保たれる。しかしながら、Ｙが参照される時、ＴＬＢミスが発生する。正確な動作を確保すべく、Ｙをキャッシュへ格納する以前に、又はＴＬＢ内に存在するＹの変換を含む以前に、オペレーティング・システムはキャッシュからＸを取り除くとともに、ＴＬＢからＸの変換を取り除く必要がある。ＴＬＢからＸの変換が取り除かれない場合、次にＸへの参照が行われる際にＴＬＢミスは全く発生しない。ソフトウェアの介入なしにＸが再び参照される時、受け入れられないＹと共にＸはキャッシュ内に再び格納される。
【００２０】
キャッシュ可能なアドレス属性の概念は、従来技術にて知られている。キャッシュ可能なアドレス属性は、メモリの一部分と協働する論理的な指示である。その指標はメモリのその部分からのデータがキャッシュ内に配置され得るか否かを示す。キャッシュ可能なアドレス属性は、一般的に入力又は出力位置をマッピングするメモリのキャッシングを禁止するために用いられる。大部分のプロセッサ・アーキテクチャは、物理アドレス空間の一定の部分へマッピングされるように、入力／出力装置とのインターフェイスを支援する。例えば、コンピュータ・システムにおけるマウスは、一定の記憶位置へマッピングされる。マウスに何が起こっているかを追従するために、プロセッサはマウスがまるで別の記憶位置であるかのようにマウスがマッピングされるアドレスから周期的に読み出す。同様に、例えばプロセッサがデータをディスク・ドライブに書き込みたい時、プロセッサはその出力装置のために設けられた特別な記憶位置へ書き込む。それらの入力／出力位置をキャッシュすることは禁止されている。出力装置への書き込みは出力端子まで届く傾向にあり、プロセッサのみにアクセス可能な内部キャッシュまで届くことは殆どない。同様に、入力装置からの読み込みは入力装置自身から読み込む傾向にあり、入力装置の端子上に以前存在していたものがキャッシュされたものから読み込まれることは殆どない。
【００２１】
【発明が解決しようとする課題】
エイリアスの制限を破るエイリアスをキャッシュ不能とする方法の重要な問題は、メイン・メモリへのキャッシュ不能なアクセスに対処する必要があることである。これらのアクセスにより、「比較とスワップ」（ "compare and swap" ）（ＣＡＳ）及び「部分ストア」（"partial store" ）（ＰＳＴ）のように多くの特殊な命令は複雑になる。それらの命令がキャッシュ不能なメイン・メモリにアクセスしなければならない場合、それらの命令を適切に実行させることは非常に困難である。従って、少なくとも物理的に指標付けされたキャッシュにおいて、メイン・メモリが常にキャッシュ可能であるという方法の開発には大きな効果がある。そのような方法から得られる性能の向上はさらに付加的な要因である。
【００２２】
この発明は、前述した事情に鑑みてなされたものであって、その目的は、エイリアスがオフセットされない場合においても、データの処理速度を低下させることなくデータの一貫性を維持することが可能な方法及び装置を提供することにある。
【００２３】
【課題を解決するための手段】
以下の手段により、上記目的を達成するための方法及び装置が構成されている。
【００２４】
キャッシュ可能なアドレス属性は、メモリの特定のページからのデータがキャッシュ内に配置され得るか否かを示す。仮想的に指標付けされたキャッシュでは、２つの仮想アドレス・エイリアスが異なるキャッシュ・ラインへマッピングすることがある。その結果、一方のエイリアスへのストアは、他方のエイリアスに対してキャッシュされたデータに影響を与えない。仮想的に指標付けされたキャッシュに存在する同一のキャッシュ・ラインへ全てのエイリアスをマッピングするために、オペレーティング・システムは多数のキャッシュサイズにより、仮想アドレス・エイリアスをオフセットしようとする。これが保証される場合、全てのエイリアスは同一のキャッシュ・ラインへマッピングする。しかしながら、多数の仮想キャッシュサイズにより、オペレーティング・システムはエイリアスをオフセットできないことがある。
【００２５】
本発明に基づいて、別個に仮想キャッシュ内にてキャッシュ可能（ cachable-in-virtual-cache）な（ＣＶ）属性ビットはオペレーティング・システムにより管理された変換テーブル内に存在するメモリの各ページのために管理されている。ＣＶビットは変換テーブルのエントリが参照するページ上のメモリ・アドレスが、仮想的に指標付けされたキャッシュ内にてキャッシュ可能であるか否かを示す。
【００２６】
本発明の第１の実施形態に基づいて、多数の仮想キャッシュサイズによりオフセットされないエイリアスが２つ以上存在する場合、全てのエイリアスに対するＣＶビットを不活性状態（deasserting ）にすることにより、全てのエイリアスは仮想的に指標付けされたキャッシュ内にてキャッシュ不能となる。
【００２７】
変換索引バッファ（ＴＬＢ）の内容に関しては、全てのエイリアスに対する変換はＴＬＢ内にて同時に存在することがある。ＴＬＢミスはソフトウェアに割り込みを発生させる。データの一貫性を確保するために本発明に基づくエイリアスの間には、ソフトウェアの介入が必要とはならない。そのため、同一の物理ページへのいくつかのマッピングは、ＴＬＢ内にて同時に存在できる。
【００２８】
本発明の第２及び第３の実施形態に基づいて、多数の仮想キャッシュサイズによりオフセットされないエイリアスが２つ以上存在する場合、そのうちの１つのみを仮想キャッシュ内にてキャッシュ可能に維持する。その他のエイリアスに関しては、それらのエイリアスを含む変換ページに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能（ cachable-in-virtually-indexed-cache）な（ＣＶ）ビットは不活性状態となる。オペレーティング・システムは、ページに対するＣＶ属性を不活性状態とする前に、仮想的に指標付けされた内部キャッシュからのデータを消去する。本発明の第２の実施形態は、より新しい物理アドレスへのマッピングが１次キャッシュ内に残ることを許容する。本発明の第３の実施形態は、より新しいエイリアスがマッピングされる時、より古いエイリアスが１次キャッシュ内に残ることを許容する。
【００２９】
【発明の実施の形態】
キャッシュ可能なアドレスの属性は、メモリに存在する特定のページからのデータがキャッシュ内へ配置されたか否かを示す。従来技術において、キャッシュ可能なアドレスの属性は入力及び出力位置にマッピングされるメモリがキャッシュされることを防止するのに使用されていた。仮想的に指標付けされたキャッシュでは、２つの仮想アドレス・エイリアスは異なるキャッシュ・ラインへマッピングすることが可能である。その結果、一方のエイリアスへのストアが、他方のエイリアスに対してはキャッシュされたデータに影響を与えない。
【００３０】
図３はダイレクト・マッピングされるキャッシュの動作を示す。特定のメモリ・アドレスに対するキャッシュを検索するとき、そのアドレスの下位ビット３０はキャッシュ・ラインへのマッピングに用いられる。そのアドレスの下位ビット３０により指定されたキャッシュ・ライン３３に存在するタグ３２は、所望のメモリ・アドレス３１の上位ビット３４と比較される。タグ３２と所望のアドレス３１の上位ビット３４とが一致する場合、キャッシュ・ヒットが発生する。仮想的に指標付けされたキャッシュにおいて、仮想アドレス又は物理アドレスの何れかはタグ３２を生成するためにアドレスビットが切り詰められる。仮想アドレスがタグ３２を生成する場合、キャッシュは仮想的にタグ付けされ、物理アドレスがタグ３２を生成する場合、キャッシュは物理的にタグ付けされる。
【００３１】
仮想的に指標付けされたキャッシュに存在する同一のキャッシュ・ラインへ全てのエイリアスをマッピングさせるために、オペレーティング・システムは、多量の仮想キャッシュ・サイズにより仮想アドレス・エイリアスをオフセットしようとする。これが保証される場合、全てのエイリアスは同一のキャッシュ・ラインへマッピングする。仮想的に指標付けされるとともに、物理的にタグ付けされたキャッシュにおいて、全てのエイリアスが同一のキャッシュへマッピングする場合、いつでも全てのエイリアスのうちの任意の１つへストアされる時、全てのエイリアスはキャッシュ内にて自動的に更新される。全てのエイリアスは同一の物理アドレスを有するため、全てのエイリアスに対する物理タグは等しい。従って、エイリアスが同一のキャッシュ・ラインへマッピングする場合、全てのエイリアスのうち１つでもキャッシュされる限り、全てのエイリアスに対してキャッシュ・ヒットが生じる。
【００３２】
一方、仮想的に指標付けされたキャッシュが仮想的にタグ付けされたものでは、多量の仮想キャッシュ・サイズにより仮想アドレス・エイリアスをオフセットすることによっても、データ不一致問題を防止できるであろう。全てのタグは異なり、エイリアスのうちの１つがキャッシュされる場合、その他のエイリアスのうち任意のエイリアスへの任意の参照はキャッシュ・ミスとなる。前回キャッシュされた記憶位置はメモリへ書き戻され、現在において所望のエイリアスはキャッシュ・ライン内に配置される。全てのエイリアスに対して１つのラインのみしか存在しないため、２つのエイリアスが別々にキャッシュ内に存在できない。従って、仮想的に指標付けされるとともに、仮想的にタグ付けされるキャッシュの編成では、エイリアスの規則に従う場合、２つのエイリアスＸ，Ｙは同一のキャッシュ・ラインに接触するが、キャッシュ・ヒットとして互いに認識しない。即ち、タグが仮想的であるため、ＸとＹが等しいということを判断する特定の容易な方法はない。この編成を適切に取り扱うことは、非常に複雑となる傾向にあり、物理アドレスに基づいたキャッシュ・タグの複製セットをしばしば必要とする。
【００３３】
オペレーティング・システムが、多数の仮想キャッシュ・サイズによりエイリアスを不運にもオフセットできない場合がある。従来技術のシステムでは、２つのエイリアスは異なるキャッシュ・ラインへマッピングすることから、その場合は仮想的に指標付けされたキャッシュにおけるエラーとなる。他方のエイリアスもキャッシュされた場合、一方のエイリアスへのストアは更新されない。
【００３４】
図５に示すように、本発明に基づき、別個に仮想キャッシュ内にてキャッシュ可能な属性ビット（ＣＶ）５０は、オペレーティング・システムにより管理される変換テーブル内に存在するメモリの各ページのために管理されている。図５は小型の変換索引バッファを示す。ＣＶビット５０は、変換テーブル・エントリが参照するページ上のメモリ・アドレスが、仮想的に指標付けされたキャッシュ内にてキャッシュ可能であるか否かを示す。加えて、従来技術のシステムのように、物理的なキャッシュ内にてキャッシュ可能（cachable-in-physical-caches ）な（ＣＰ）属性ビット５１は各ページのために管理され、そのキャッシュが仮想的又は物理的に指標付けされたかには関わらず、そのページからのデータが任意のタイプのキャッシュ内にてキャッシュ可能であるか否かを示す。
【００３５】
本発明の第１の実施形態に基づいて、多数の仮想キャッシュ・サイズによりオフセットされないエイリアスが２つ以上存在する時、仮想的に指標付けされたキャッシュ内にて、全てのエイリアスはキャッシュ不能となる。図４は一般的なキャッシュの構造を示す概略的なブロック図である。小型の内部キャッシュ４３は仮想的に指標付けされている。大型の外部キャッシュ４４は物理的に指標付けされている。仮想的に指標付けされたキャッシュ内に存在するエイリアスのキャッシングを禁止することにより、データ不一致問題は回避される。各エイリアスは同一の物理アドレスへマッピングする。従って、各エイリアスも物理的に指標付けされた外部キャッシュ４４に存在する同一のキャッシュ・ラインへマッピングする。また、外部キャッシュ４４が物理的にタグ付けされている場合、物理アドレスが外部キャッシュ内にてキャッシュされるなら、与えられた物理アドレスの任意の多数のエイリアスへの参照は、外部キャッシュ・ヒットを生成する。外部キャッシュ４４が仮想的にタグ付けされ、多数のエイリアスのうちの１つがキャッシュされる場合、仮想タグは各エイリアスに対して異なっている必要があるため、その他の任意のエイリアスへの参照は常に外部キャッシュ・ミスを生成する。いかなる場合においても、２つのキャッシュ・ラインは同一の物理アドレスへマッピングされるデータを保持していないため、データ不一致問題は解消される。
【００３６】
オペレーティング・システム・ソフトウェアはソフトウェア変換テーブル４０内に変換情報を管理する。オペレーティング・システムはメモリのページに対するキャッシュ可能性属性を管理する。従って、各ページは物理的に指標付けされたキャッシュ内にてキャッシュ可能（cachable-in-physically-indexed-cache）な（ＣＰ）属性及び仮想的に指標付けされたキャッシュ内にてキャッシュ可能（ＣＶ）な属性を有する。各ページは多くの分割された記憶位置を有する。アドレス内のページ・オフセットを指定するためにｐ個のビットが必要である場合、各ページは２p もの記憶位置を有する。２つの仮想ページが同一の物理アドレスへマッピングする場合、２つの仮想ページ内の各アドレスは他方のページ上に１つのエイリアスを有する。従って、エイリアス処理はページ毎に行われる。２つの仮想ページがエイリアスである場合、全体の両ページのＣＶ属性は不活性状態となる。オペレーティング・システムのオフセット規則を破るマッピングが生じる以前に、ページからのいくらかのデータが仮想キャッシュ内に存在する場合、そのページを仮想キャッシュ内にてキャッシュ不能にするまで、オペレーティング・システムは仮想キャッシュからそのようなデータを消去する。
【００３７】
内部キャッシュ４３は、少なくとも外部キャッシュ４４に対してライト・スルーキャッシュであることが一般的である。従って、内部キャッシュ４３へ書き込まれるデータも外部キャッシュ４４へ書き込まれる。そのため、外部キャッシュ４４は内部キャッシュ４３内に存在する全ての最新のコピーを保有する。仮想ページが仮想的に指標付けされたキャッシュ（ＣＶ＝０）内にてもうキャッシュ可能ではなくなるように、ページのキャッシュ可能性属性が変更される時、仮想的に指標付けされたキャッシュ４３から消去されたデータは、データ保全に対して悪影響を与えない。それは、同一のデータが物理的に指標付けされた外部キャッシュ４４内においてまだ使用可能であるためである。
【００３８】
変換索引バッファ（ＴＬＢ）４１の内容に関する本発明に基づいて、全てのエイリアスはＴＬＢ４１内に同時に存在できる。ＴＬＢミスはソフトウェアに割り込みを発生させる。従来技術の方法では、ソフトウェアの介入なしではハードウェアが正確に実行できないことがあったため、特にソフトウェアに割り込みを発生させるべく、エントリをＴＬＢ４１から取り除いていた。本発明のこの実施形態に基づくエイリアスの間にはデータの一貫性を確保するために、ソフトウェアの介入を必要としないことから、同一の物理ページへのいくつかのマッピングはＴＬＢ４１内にて同時に存在し得る。これにより、本発明の重要な効果が得られる。いくつかのエイリアスの仮想アドレスから物理アドレスへの変換は、ＴＬＢ４１内にて同時に存在し得ることから、それらがＴＬＢ４１内に存在すると仮定すれば、ＴＬＢミス・ハンドラ・ソフトウェアは任意のエイリアスへの参照上に呼び出される。従って、エイリアスがアクセスされる度にＴＬＢミスハンドラが繰り返し呼び出される場合、任意のエイリアスへのメモリ参照に対する平均アクセス時間は、要求されたアクセス時間と比べて比較的に遅い。更に、任意のエイリアスに対する所望のデータは物理的に指標付けされた２次キャッシュ内にて使用可能であるため、低速のメイン・メモリにアクセスする必要のある長期の遅延は発生しない。
【００３９】
図６は、本発明の第１の実施形態に基づくオペレーティング・システムの処理を示す。新たな仮想アドレスから物理アドレスへのエイリアス・マッピング（図６に示すNEWALIASは、本発明の第２の仮想アドレスに対応するデータを構成する。）が、いつソフトウェア変換テーブルへ付加されても、オペレーティング・システム・ソフトウェアはステップ６０から開始する。判断６１では、オペレーティング・システムは、エイリアスの制約が破られたか否かを判断する。その制約とは、前述したようにエイリアスが仮想的に指標付けされた多数のキャッシュ・サイズによりオフセットされることである。エイリアスが適切にオフセットされる場合、ステップ６２において、オペレーティング・システムは、ＴＬＢ及びソフトウェア変換テーブル内の両エイリアスに対するＣＶビット及びＣＰビットを活性状態（assert）とし、オペレーティング・システムの処理はステップ６３にて終了する。しかしながら、エイリアスの制約が破られた場合、ステップ６４において、オペレーティング・システムは仮想的に指標付けされた１次キャッシュ４３（図４に示す）からの前回存在していたエイリアス（図６に示すOLDALIASは、本発明の第１の仮想アドレスに対応するデータを構成する。）を消去するか又は取り除く（データ無効工程）。この工程には、１次キャッシュ無効回路が用いられる。ステップ６５において、両エイリアスに対するＣＶ属性ビットはＴＬＢ内にて不活性状態とされ（キャッシュ不能工程）、両エイリアスに対するＣＰ属性ビットは活性状態に保たれる（キャッシュ可能工程）。これらの工程には、それぞれ１次キャッシュ不能回路と２次キャッシュ可能回路が用いられる。ＣＰビットが活性状態であるため、物理的に指標付けされた２次キャッシュ４４（図４に示す）内において両エイリアスは（同一のラインにて）キャッシュ可能である。ステップ６５の後、プロセッサはエイリアスのうちの１つがマッピングされるまでソフトウェアの介入なしで動作する。判断６６では、オペレーティング・システムはいつエイリアスのうちの１つが異なる仮想アドレスへ再マッピングされるのか、又はいつそれが仮想アドレス空間から取り除かれるのかの経過を追う。マッピングのうちの１つが変わる時、ソフトウェア・ルーチンはステップ６０から再開される。
【００４０】
本発明の第２の実施形態に基づいて、２つ以上のエイリアスが多数の仮想キャッシュ・サイズによりオフセットされる場合、それらのエイリアスのうちの１つのみが仮想キャッシュ内にてキャッシュ可能である。その他のエイリアスに対しては、それらのエイリアスの変換ページに対する仮想的に指標付けされたキャッシュ内にてキャッシュ可能な（ＣＶ）ビットは、不活性状態となる。オペレーティング・システムはページに対するＣＶ属性を不活性状態とするまで、仮想的に指標付けされた内部キャッシュからのデータを消去する。
【００４１】
この実施形態において、オペレーティング・システムは上記の処理及び以下の通常の処理を行う。ＸとＹがそれぞれ仮想アドレスとエイリアスである場合を仮定すると、それらは同一の物理アドレスへマッピングされる。エイリアスが仮想的に指標付けされた多数のキャッシュ・サイズによりオフセットされるべきであるというオペレーティング・システム・ガイドラインが、何らかの理由により守られないと仮定する。Ｘは仮想的に指標付けされたキャッシュ内に残ることを許容する。Ｙの変換テーブル・エントリに対するＣＶビットを不活性状態にすることにより、Ｙに対するＴＬＢマッピングンは変更されるため、Ｙは仮想キャッシュ内にてキャッシュ可能ではない。従って、Ｙが物理的に指標付けされた外部キャッシュへ退避されている間、Ｘは仮想的に指標付けされたキャッシュ４３内に存在する。ここで、Ｙへのストアが実行される。続いて、Ｘからのロードが実行される。Ｘ及びＹは同一メモリの変数を実際に参照しているため、仮想的に指標付けされたキャッシュ４３内からＸをロードすることにより、物理的に指標付けされた２次キャッシュ内のＹへストアされたデータが返還される。しかしながら、２次キャッシュからの情報により１次キャッシュを更新するハードウェア機構は全くない。従って、オペレーティング・システムはこれが発生しないように確保する処理を行う。このオペレーティング・システムの複雑性を増加させることにより得られる効果は、Ｘへのアクセスにより高速の１次キャッシュの有効性を保つことである。
本発明の第２の実施形態に基づき、最新の物理アドレスへのマッピングは１次キャッシュ内に残ることを許容する。これには、１次キャッシュから古いエイリアスを消去する必要がある。図７は、本発明の第２の実施形態に基づくオペレーティング・システムの処理を示す。オペレーティング・システムは新たなエイリアス（図７に示すNEWALIAS）をマッピングする時、ソフトウェア・ルーチンはステップ７０にて呼び出される。ステップ７１では、全てのエイリアスが仮想的に指標付けされた多数のキャッシュ・サイズによりオフセットされるというガイドラインが破られたか否かを判断する。ガイドラインが守られている場合、両OLDALIAS，NEWALIASは仮想的に指標付けされたキャッシュ内にてキャッシュ可能に維持される。従って、ステップ７２において、ＴＬＢと多層変換テーブルに存在する他のレベルとが更新されるため、エイリアスに対するＣＰ及びＣＶビットは活性状態となり、オペレーティング・システムのルーチンがステップ７３にて終了する。従って、何れかのエイリアスへの後続のアクセスはソフトウェアの介入を伴うことなく実行される。オペレーティング・システムのガイドラインが破られた場合、ステップ７４において、オペレーティング・システムは仮想的に指標付けされた１次キャッシュからのデータを消去する（データ無効工程）。この工程には、１次キャッシュ無効回路が用いられる。そして、ステップ７５では、OLDALIASに対するＣＶビットを不活性状態とする（キャッシュ不能工程）。この工程には、１次キャッシュ不能回路が用いられる。従って、NEWALIASは１次キャッシュ４３内に存在できるが、OLDALIASは２次キャッシュ４４内に保持されなければならない。ステップ７６では、２次キャッシュ４４内に存在するOLDALIASへのストアがディスパッチされたか否かを判断する。このステップ７６は、ハードウェアの支援なしでは実行し難い。従って、これを実行する別の方法は、Ｗ（writeable ）ビットとして参照される一般的なＴＬＢ属性を用いることである。OLDALIASに対するＷビットを不活性状態にすることにより、OLDALIASへのストアが発生しないように、オペレーティング・システムは適切なページマッピングにおいてこのビットを調節できる。OLDALIASへのストアが実行される場合、Ｗビットが不活性状態であるためソフトウェアの割り込みを受け入れ、オペレーティング・システムは適切なデータ消去と属性の調節とを実行する。OLDALIASへのストアがディスパッチされる場合、１次キャッシュ内のNEWALIASに対するデータは古くなるため、ステップ７７においてそのデータは１次キャッシュから消去される（データ無効工程）。この工程には、１次キャッシュ無効回路が用いられる。ステップ７８では、変換テーブル及びＴＬＢ内にてNEWALIASのページに対するＣＶビットは不活性状態となり（キャッシュ不能工程）、変換テーブル及びＴＬＢ内にてOLDALIASのページに対するＣＰビットは活性状態となる（キャッシュ可能工程）。これらの工程には、それぞれ１次キャッシュ不能回路と２次キャッシュ可能回路が用いられる。これにより、NEWALIASが２次キャッシュへ退避される間、OLDALIASが１次キャッシュ内に存在することを許容する。ステップ７９により、２次キャッシュ４４内に存在するNEWALIASへのストアが���ィスパッチされたと判断された場合、処理はOLDALIAS及びNEWALIASが１次及び２次キャッシュ内にてそれらの位置を入れ換えるステップ７４へ戻る。ステップ７９によりNEWALIASへのストアが検出されない限り、及びステップ８０により何れかのエイリアスへの再マッピングが検出されない限り、何れかのエイリアスへのアクセスはソフトウェアの介入を伴うことなく実行される。これは、両エイリアスに対する変換がＴＬＢ４１内に存在するためである。ステップ８０により、何れかのエイリアスへの新たなマッピングが検出された場合、ルーチンはステップ７０から再開される。同様に、NEWALIASが１次キャッシュ内に存在する間に、ステップ８１により何れかのエイリアスに対する新たなマッピングを検出する場合、ルーチンはステップ７０から再開される。
【００４２】
本発明の第３の実施形態は、NEWALIASがマッピングされた時、OLDALIASが１次キャッシュ内に残ることを許容する。図８は、第３の実施形態に関わるオペレーティング・システムの流れを示す。第３の実施形態に基づくオペレーティング・システム・ソフトウェアの流れは、第２の実施形態のそれと似ている。実際、図７を以下のように変更することにより図８に置き換えられる。ステップ７８とステップ７５の位置を入れ換え、ステップ７７とステップ７４の位置を入れ換え、ステップ７８とステップ７５の位置を入れ換え、ステップ７９とステップ７６の位置を入れ換える。ここで、新しいステップ７７の位置（図７に示すステップ７４の位置）が移動されることによりステップ７１のＹＥＳの分岐はステップ７８の新しい位置（図７に示すステップ７５の位置）へ直接的に流れる。第２の実施形態に対する第３の実施形態の基本的な違いは、新たなエイリアスが実行されるまで、古いエイリアスは１次キャッシュ４３内に残ることである。
【００４３】
第２又は第３の実施形態の何れにおいても、２次キャッシュ内のエイリアスへのストアの存在によりデータの一貫性を維持すること以外の付加的な他の理由のために、オペレーティング・システムは１次キャッシュ４３内に存在する古いエイリアスと新しいエイリアスを入れ換えるために選択する。プログラムの正確な動作を保証するために、２次キャッシュ４４内に存在するエイリアスへのストアが実行される時には、常にエイリアスに対するＣＶビットの入れ換えが必要である。しかしながら、他の状況においてもオペレーティング・システムは、ＣＶ属性を入れ換えることにより処理速度を上げることができる。図７に示すフローチャートを実行することによりプログラムの正確な処理が保証されても、オペレーティング・システム・ソフトウェアはOLDALIASへのストアが実行されるまで、OLDALIASを１次キャッシュへ入れ換えるように選択する。例えば、オペレーティング・システムはOLDALIASが近い将来に繰り返しロードされることを予期する場合、この選択は慎重な決定である。従って、高速の１次キャッシュを用いる利点により、大幅な実行時間の短縮が認識される。これらの場合、図７に示すステップ７６，７９とそれらに対応する図８のステップ（判断）とは、どちらへ分岐するかを決める前に（ストアがディスパッチされたか否か以外の）付加的な情報を考慮する。添付の特許請求の範囲は、そのような自明な形態を含んでいる。
【００４４】
尚、プロセッサは本発明の１次キャッシュ無効回路、１次キャッシュ不能回路、２次キャッシュ可能回路及び１次キャッシュ可能回路を構成する。ソフトウェア・変換テーブル４０、変換索引バッファ４１、１次キャッシュ４２、１次キャッシュ４３、及び２次キャッシュ４４は本発明のメモリ・システムを構成する。
【００４５】
本発明の方法及び装置は、現時点において好ましい実施形態に関して説明したが、当業者は本発明の趣旨を逸脱しない範囲内にて変更及び改変可能であると理解することができよう。従って、本明細書及び図面は限定するものではなく、例示的なものであると考えるべきである。
【００４６】
【発明の効果】
この発明によれば、仮想アドレスのキャッシュ可能性を示す属性ビットを備えた変換テーブルを用いることにより、エイリアスがオフセットされない場合においても、データの処理速度を低下させることなくデータの一貫性を維持することができるという効果を発揮する。
【図面の簡単な説明】
【図１】  プロセッサ、キャッシュ及びメイン・メモリの関係を示す概略的なブロック図。
【図２】  仮想アドレスからそれに対応する物理アドレスへの変換を示す図。
【図３】  ダイレクト・マッピングされるキャッシュの動作を示す図。
【図４】  従来技術及び本発明の実施形態に係る記憶位置と、メモリ構造及びアドレス変換テーブル構造との編成を示す概略的なブロック図。
【図５】  本発明に基づく小型の変換索引バッファを示す概略図。
【図６】  本発明の第１の実施形態に基づくオペレーティング・システム・ソフトウェア・ルーチンの動作を示すフローチャート。
【図７】  本発明の第１の実施形態に基づくオペレーティング・システム・ソフトウェア・ルーチンの動作を示すフローチャート。
【図８】  本発明の第３の実施形態に基づくオペレーティング・システム・ソフトウェア・ルーチンの動作を示すフローチャート。
【符号の説明】
４０…ソフトウェア変換テーブル、４１…変換索引バッファ、４２…１次キャッシュ、４３…１次キャッシュ、４４…２次キャッシュ（４０，４１，４２，４３は本発明のメモリ・システムを構成する。）、４５…メイン・メモリ、５０…仮想的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビット、５１…物理的に指標付けされたキャッシュ内にてキャッシュ可能な属性ビット。
【図１】
0003859757.tif 000002
【図２】
0003859757.tif 000003
【図３】
0003859757.tif 000004
【図４】
0003859757.tif 000005
【図５】
0003859757.tif 000006
【図６】
0003859757.tif 000007
【図７】
0003859757.tif 000008
【図８】
0003859757.tif 000009