(57)【要約】  装置（２）が、命令に応答してデータ処理を実行する処理回路（４）を含む。処理回路（４）は、仮想アドレス空間の仮想ページを特定する仮想ページアドレス（５２）を指定するキャッシュ保守命令（５０）をサポートする。キャッシュ保守命令に応答して、処理回路（４）は、少なくとも１つのキャッシュ（１８，２０，２２）を作動させて、キャッシュ保守命令によって提供される仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュラインに対して、キャッシュ保守操作を実行する。
2018511120.tif 000002
【特許請求の範囲】
【請求項１】
命令に応答してデータ処理を実行する処理回路を備え、
前記処理回路が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、前記仮想ページアドレスによって特定された前記仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュラインに対し、キャッシュ保守操作を実行し、
前記キャッシュ保守命令が複数の仮想ページサイズの１つを指定し、前記処理回路が、前記キャッシュ保守命令に応答して、前記少なくとも１つのキャッシュを作動させて、前記キャッシュ保守命令によって指定された前記仮想ページサイズを有する前記仮想ページに対して前記キャッシュ保守操作を実行する
装置。
【請求項２】
前記キャッシュ保守操作が、
前記１つ以上のキャッシュラインに格納されているダーティデータを少なくとも１つの更なるデータストアに書き込むクリーニング操作、
前記１つ以上のキャッシュラインに格納されている前記データを無効化する無効化操作、
前記１つ以上のキャッシュラインに格納されているダーティデータを少なくとも１つの更なるデータストアに書き込み、前記１つ以上のキャッシュラインに格納されている前記データを無効化するクリーニング・無効化操作、及び
前記１つ以上のキャッシュラインに格納されている前記データを所定値に設定する設定操作
の１つを備える、請求項１に記載の装置。
【請求項３】
前記仮想ページアドレスを前記物理ページの物理ページアドレスへと変換する変換回路を備える、請求項１又は２に記載の装置。
【請求項４】
前記変換回路が複数の変換エントリを備え、
各変換エントリが仮想ページアドレスに対応し、その仮想ページアドレスに対応する物理ページアドレスを特定する、請求項３に記載の装置。
【請求項５】
前記少なくとも１つのキャッシュを備える、請求項１〜４のいずれか一項に記載の装置。
【請求項６】
前記処理回路が、前記キャッシュ保守命令に応答して、前記少なくとも１つのキャッシュに対する複数のキャッシュ保守コマンドの発行を開始するように構成され、
各キャッシュ保守コマンドが、前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の物理アドレスを指定し、
各キャッシュ保守コマンドが、前記指定された物理アドレスを有するデータを格納しているキャッシュラインに対して前記キャッシュ保守操作を実行するように前記少なくとも１つのキャッシュを制御するためのものである、請求項１〜５のいずれか一項に記載の装置。
【請求項７】
前記処理回路が、前記キャッシュ保守命令に応答して、前記少なくとも１つのキャッシュに対する少なくとも１つのキャッシュ保守コマンドの発行を開始するように構成され、
各キャッシュ保守コマンドが、前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の物理アドレスブロックを指定する、請求項１〜５のいずれか一項に記載の装置。
【請求項８】
前記処理回路が、少なくとも幾つかのキャッシュ保守命令について、前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の異なる物理アドレスブロックにそれぞれが対応する複数の前記キャッシュ保守コマンドの発行を開始するように構成される、請求項７に記載の装置。
【請求項９】
前記少なくとも１つのキャッシュが、前記キャッシュ保守コマンドに応答して、前記キャッシュ保守コマンドによって指定された前記ブロック内の物理アドレス用のデータをどのキャッシュラインが格納しているかを特定し、その特定されたキャッシュラインに対して前記キャッシュ保守操作を実行する、請求項５に従属する場合の請求項７又は８に記載の装置。
【請求項１０】
前記少なくとも１つのキャッシュが、複数のキャッシュラインのそれぞれについて、前記キャッシュ保守コマンドによって指定された前記ブロック内の物理アドレス用のデータを前記キャッシュラインが格納しているかどうかを確認するように構成された、請求項９に記載の装置。
【請求項１１】
前記少なくとも１つのキャッシュが、複数の前記キャッシュ保守コマンドに応答して、複数のキャッシュラインのそれぞれについて、前記複数のキャッシュ保守コマンドによって指定された前記物理アドレスブロックのいずれかに存在する物理アドレス用のデータを前記キャッシュラインが格納しているかどうかを確認するように構成された、請求項９又は１０に記載の装置。
【請求項１２】
複数のキャッシュを備え、
前記処理回路が、前記キャッシュ保守命令に応答して、前記複数のキャッシュの少なくとも幾つかを作動させ、前記キャッシュ保守操作を実行する、請求項１〜１１のいずれか一項に記載の装置。
【請求項１３】
対応する物理アドレス用のデータをどのキャッシュが格納しているかを特定するデータを格納するスヌープフィルタであって、前記キャッシュ保守命令に応答して、前記キャッシュ保守命令によって指定された前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の物理アドレス用のデータを格納している１つ以上のキャッシュを特定するスヌープフィルタと、
前記スヌープフィルタによって特定された前記１つ以上のキャッシュ以外のキャッシュに対してキャッシュ保守コマンドが送信されるのを防止するように構成された制御回路とを備える、請求項１２に記載の装置。
【請求項１４】
前記処理回路が、少なくとも幾つかのキャッシュ保守命令に応答して、少なくとも１つのメモリを制御するメモリ制御部に対してコマンドを送信し、
前記メモリ制御部が、前記コマンドに応答して、前記少なくとも１つのキャッシュによる前記キャッシュ保守操作の実行を制御する、請求項１〜１３のいずれか一項に記載の装置。
【請求項１５】
命令に応答してデータ処理を実行する処理手段を備え、
前記処理手段が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、前記仮想ページアドレスによって特定された前記仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュラインに対して、キャッシュ保守操作を実行し、
前記キャッシュ保守命令が複数の仮想ページサイズの１つを指定し、前記処理手段が、前記キャッシュ保守命令に応答して、前記少なくとも１つのキャッシュを作動させて、前記キャッシュ保守命令によって指定された前記仮想ページサイズを有する前記仮想ページを用いて前記キャッシュ保守操作を実行する
装置。
【請求項１６】
仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令を受信することと、
前記キャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、前記仮想ページアドレスによって特定された前記仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュラインに対して、キャッシュ保守操作を実行することとを含み、
前記キャッシュ保守命令が複数の仮想ページサイズの１つを指定し、前記キャッシュ保守命令に応答して、前記少なくとも１つのキャッシュを作動させることで、前記キャッシュ保守命令によって指定された前記仮想ページサイズを有する前記仮想ページを用いて前記キャッシュ保守操作を実行する
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術はデータ処理の分野に関する。より具体的には、本技術はキャッシュ保守操作に関する。
【背景技術】
【０００２】
装置は、メモリからデータを取得しなければならない場合よりも素早く、処理回路によってキャッシュされたデータにアクセスできるように、メモリからキャッシュデータを格納する１つ以上のキャッシュを有してもよい。装置内に幾つかのキャッシュが存在してもよく、例えば、同じアドレスに対応する異なるバージョンのデータを整合させるためにキャッシュ保守操作が実行されることがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
少なくとも幾つかの実施例が、
命令に応答してデータ処理を実行する処理回路を備え、
処理回路が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュラインに対して、キャッシュ保守操作を実行し、
キャッシュ保守命令が複数の仮想ページサイズの１つを指定し、処理回路が、キャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、キャッシュ保守命令によって指定された仮想ページサイズを有する仮想ページを用いてキャッシュ保守操作を実行する装置を提供する。
【０００４】
少なくとも幾つかの実施例が、
命令に応答してデータ処理を実行する処理手段を備え、
処理手段が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュラインに対して、キャッシュ保守操作を実行し、
キャッシュ保守命令が複数の仮想ページサイズの１つを指定し、処理手段が、キャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、キャッシュ保守命令によって指定された仮想ページサイズを有する仮想ページを用いてキャッシュ保守操作を実行する装置を提供する。
【０００５】
少なくとも幾つかの実施例が、
仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令を受信することと、
キャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させて、仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する１つ以上のキャッシュライン対して、キャッシュ保守操作を実行することとを含み、
キャッシュ保守命令が複数の仮想ページサイズの１つを指定し、キャッシュ保守命令に応答して、少なくとも１つのキャッシュを作動させることで、キャッシュ保守命令によって指定された仮想ページサイズを有する仮想ページを用いてキャッシュ保守操作を実行するデータ処理方法を提供する。
【０００６】
更なる実施例、例示及び特徴を、添付の図面と関連付けながら以下に説明する。
【図面の簡単な説明】
【０００７】
【図１】処理回路とキャッシュとを有するデータ処理装置を概略的に示す。
【図２】キャッシュの一例を示す。
【図３】キャッシュ保守命令の一例を示す。
【図４】仮想ページアドレスと物理ページアドレスとの間の変換の一例を示す。
【図５】仮想ページアドレスを指定するキャッシュ保守命令に応答するキャッシュ保守操作の実行例を示す。
【図６】仮想ページアドレスを指定するキャッシュ保守命令に応答するキャッシュ保守操作の他の実行例を示す。
【図７】仮想ページアドレスを指定するキャッシュ保守命令に応答するキャッシュ保守操作の更に他の実行例を示す。
【図８】キャッシュ保守命令によって指定された仮想ページに対応する物理ページ内の物理アドレスを有するデータをどのキャッシュラインが格納しているかを特定する一例を示す。
【図９】キャッシュ保守命令によって指定された仮想ページに対応する物理ページ内の物理アドレスを有するデータをどのキャッシュラインが格納しているかを特定する他の例を示す。
【図１０】各キャッシュに格納されたデータを追跡するスヌープフィルタを有する数個のキャッシュを備える装置の一例を示す。
【図１１】データ処理の方法を示す。
【発明を実施するための形態】
【０００８】
装置は、命令に応答してデータ処理を実行する処理回路を有してもよい。処理回路は、メモリの対応するデータにアクセスするよりも速くアクセスできる、少なくとも１つのキャッシュにアクセスすることができる。キャッシュ階層には、例えば数レベルのキャッシュが存在してもよい。時には、１つ以上のキャッシュ内における特定のキャッシュラインに対してキャッシュ保守操作の実行が必要な場合がある。キャッシュ保守操作は、例えば、キャッシュデータとメモリ内又は他のキャッシュ内の対応するデータとの整合性を維持するために実行されてもよい。
【０００９】
処理回路は、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令をサポートする。仮想アドレスとは、メモリが使用する物理アドレスに対して、処理回路がデータを参照するために使用するアドレスである。処理回路はキャッシュ保守命令に応答して少なくとも１つのキャッシュを作動させ、そのキャッシュラインに格納されたデータの物理アドレスが、この命令に指定された仮想ページアドレスによって特定された仮想ページに対応する物理ページに存在する、データの物理アドレスを格納している任意のキャッシュラインに対して、キャッシュ保守操作が実行される。２つ以上のキャッシュを備えるシステムでは、キャッシュ保守が実行されるキャッシュラインは全て同じキャッシュに存在してもよいし、又は２つ以上のキャッシュに存在する場合もある。これは、各キャッシュに格納されたデータをどのアドレスが有しているかに依存する。
【００１０】
アドレスの仮想ページ全体に対して実行されるキャッシュ保守を開始するキャッシュ保守命令を提供することによって、キャッシュ保守が実行される各仮想アドレスに対して個別のキャッシュ保守命令を実行するといった代替的な方法に勝る、幾つかの利点を提供することができる。まず、実行される命令の数を減らすことができるため、処理回路への負荷が軽減され、他の命令の処理量を増加させることができる。また、これにより、上位システムソフトウェアからの意図を装置内のファブリックや構成要素に示すこともでき、性能を最適化する。これは、個別のキャッシュ保守命令が各アドレスに対して実行されるアドレス毎の方法の場合、個別の命令からでは、より広い範囲のアドレスがキャッシュ保守を必要とすることをシステムが知ることができないため不可能なことである。また、単一命令を使用して仮想アドレス空間のページ全体に対してキャッシュ保守を開始することによって、この保守操作は、処理回路によって実行されるロック又はその他の状態追跡（ｔｒａｃｋｉｎｇ）操作を必要とせずに不可分に実行できるため、データコヒーレンスを維持するためのオーバーヘッドを低減できる。キャッシュ操作時におけるオペレーティングシステムのプリエンプション（ｐｒｅ−ｅｍｐｔｉｏｎ：先取り）についてもソフトウェアに対して透過的に処理できる。
【００１１】
キャッシュ保守命令は、幾つかの仮想ページサイズの１つを指定することができ、それによって、実行時には、処理回路は指定したページサイズのアドレスブロックに対してキャッシュ保守操作を実行するようにキャッシュを制御する。これにより、プログラマ又はコンパイラが、要求されたアドレス範囲に最適な仮想ページサイズを指定するキャッシュ保守命令を選択できるため、実際に必要なアドレス範囲よりはるかに大きなアドレス範囲に対して不必要にキャッシュ保守を行うことが防止され、キャッシュにおける保守オーバーヘッドが低減される。仮想ページサイズは命令によって異なる方法で指定されてもよい。一部の例では、ページサイズは命令オペコードにおいて暗黙的であってもよい（これにより、本質的に異なる命令が各ページサイズに提供される）。或いは、共通のオペコードを用いながら、使用されるべき仮想ページサイズを即時フィールドによって指定したり、使用されるべき仮想ページサイズを示す値を格納するレジスタを命令によって指定したりしてもよい。
【００１２】
処理回路は、仮想ページアドレスを物理ページアドレスへと変換する、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）又はメモリ管理ユニット（ＭＭＵ）といった変換回路を有してもよい。例えば、変換回路は、それぞれが特定の仮想ページアドレスに対応し且つその仮想ページアドレスに対応する物理ページアドレスを特定する幾つかの変換エントリを有してもよい。すなわち、メモリの「ページ」は、１つの変換エントリに対応するメモリアドレス空間の単位といえる。このため、同じ仮想‐物理アドレス変換を同じページ内の全てのアドレスに対して行い、異なる仮想‐物理アドレス変換を異なるページ内のアドレスに対して用いることができる。従って、キャッシュ保守を要求するアドレスを仮想ページアドレスによって特定するキャッシュ保守命令を提供することの他の利点は、各アドレスに対して個別のキャッシュ保守命令を実行する場合は各アドレスを複数回探索する必要があるのに比べて、トランザクション回路を一度探索するだけで済むという点である。変換テーブル探索は、特に、要求された仮想‐物理アドレスマッピングを見つけるために変換テーブルウォークが必要な場合にかなり遅くなることがある。そのため、アドレス変換のオーバーヘッドを低減させることで、仮想ページアドレスに基づくキャッシュ保守命令の性能を向上させることができる。
【００１３】
キャッシュ保守命令に応答して、指定された仮想ページ内のアドレスに対して様々なキャッシュ保守操作を実行できる。例えば、キャッシュ保守操作は、通常、システム内の異なるバージョンのデータ間の一貫性を確保するためか、又は、予測可能な操作によって他の操作を継続できるように或る既知の状態のキャッシュの一部を配置するために、キャッシュデータのコヒーレンシ状態を変更する操作を含む。例えば、キャッシュ保守操作は以下のいずれかを含んでもよい。
・少なくとも１つの更なるデータストア（キャッシュ階層又はメモリの他のレベルにおけるキャッシュであってもよい）にダーティ（ｄｉｒｔｙ）データを書き込むクリーニング操作。ダーティデータは、他のロケーションにある対応するコピーデータを更新することなく修正されたデータであってもよい。クリーニング操作中にダーティデータが書き込まれる１つ又は複数の更なるデータストアを、予め定めるか又はハードコード化してもよいし、若しくは、可変として、例えば制御レジスタ内の制御パラメータを用いて定義してもよい。
・指定されたアドレスからデータを無効化する無効化操作（例えば、データを無効化し、及び／又はキャッシュからデータを削除する）。無効化操作は、ダーティデータが更なるデータストアにライトバックされていない場合にダーティデータが失われる可能性がある。
・クリーニング操作に続いて無効化操作を実行することに相当するクリーニング・無効化操作。これにより、過去に修正された任意のダーティデータをメモリ又は他のデータストアに最初に書き込むことで、このダーティデータを保持したままキャッシュ内のデータを無効化できる。
・要求されたアドレスにおけるデータを所定の値（例えば０等）に設定する設定操作。
１種類のキャッシュ保守操作を実施するシステムもあれば、数種類のキャッシュ保守操作を実施するシステムもある。例えば、各種のキャッシュ保守操作に対して、幾つかの異なるバージョンのキャッシュ保守命令を設け、各バージョンは仮想ページアドレスを使用してキャッシュ保守が実行されるアドレスを特定してもよい。実行される特定のキャッシュ保守操作は命令オペコード又は命令符号化におけるフィールドによって特定されてもよい。
【００１４】
キャッシュ保守を行うアドレスを処理回路によって特定する手段は仮想ページアドレスだけではない場合もある。例えば、処理回路は、キャッシュ保守操作を行う個別の仮想アドレスを指定するキャッシュ保守命令か、又は全体としてキャッシュに実行されるべきキャッシュ保守を指定するキャッシュ保守命令をもサポートしてもよい。
【００１５】
装置内のキャッシュ保守命令の処理を実施する方法は幾つかある。一例では、処理回路は、キャッシュ保守命令に応答して、キャッシュに対するキャッシュ保守コマンドの発行を開始してもよく、各コマンドは、キャッシュ保守命令によって指定された仮想ページアドレスに対応する物理ページ内の物理アドレスを指定する。そして、キャッシュは、各個別のキャッシュ保守コマンドに応答して、指定した物理アドレスに対してキャッシュ保守操作を実行してもよい。これによって、キャッシュの設計を簡素化でき、すでに個別のアドレスに対するキャッシュ保守コマンドに対応できる標準キャッシュにおいて、仮想ページに基づいたキャッシュ保守に対処するためのハードウェア修正が一切必要なくなる。例えば、処理回路内の小型のステートマシンによって、キャッシュ保守命令を各アドレス用の個別のマイクロ操作へと変換することができる。
【００１６】
また、キャッシュに対して、キャッシュ保守命令によって指定される仮想ページアドレスに対応する物理ページ内の物理アドレスのブロックを指定する少なくとも１つのキャッシュ保守コマンドが発行されてもよい。キャッシュは、各コマンドに応答して、どのキャッシュラインが指定されたアドレスブロック内の物理アドレス用のデータを格納しているかを特定し、その特定されたキャッシュラインに対してキャッシュ保守操作を実行してもよい。この方法によって、キャッシュに送信しなければならないコマンドの数を減らし、コマンドの帯域幅を節約して処理回路への負荷を軽減することができる。
【００１７】
場合によっては、キャッシュ保守コマンドによって特定される物理アドレスのブロックがページ全体であってもよく、その結果、キャッシュ保守命令によって単一のキャッシュ保守コマンドが発動し、ページ全体に対して保守が行われるようにキャッシュが制御される。
【００１８】
また、少なくとも一部のキャッシュ保守命令においては、全体のページサイズよりも小さなアドレスブロックをそれぞれ指定する幾つかのコマンドがキャッシュに発行されてもよい。この方法は、処理回路が上記のように異なるページサイズをサポートする場合にキャッシュハードウェアを簡素化するのに特に有効となり得る。例えば、キャッシュ保守命令によって選択されるページサイズに関わらず、アドレスの或る基本単位に対応するキャッシュ保守コマンドに命令をマッピングできるため、キャッシュは特定のページサイズを考慮する必要がなく、或る固定サイズのアドレスブロックに対する１つ以上のコマンドを処理するだけである。
【００１９】
キャッシュがアドレスブロックを指定するキャッシュ保守コマンドに応答する手段は他にもある。１つの方法として、各アドレス用のキャッシュを個別に探索して、指定されたブロック内の各アドレスを繰り返して処理することで、そのアドレスに対応するデータを格納しているキャッシュラインがあるかどうかを確認することが考えられる。しかしながら、この方法では、ページサイズがキャッシュ内のロケーションの数よりも著しく大きい場合が多いことから、比較的大きなオーバーヘッドを生じることがある。そのため、各アドレス用のキャッシュを繰り返し探索する速度が遅くなり、大量のエネルギーが消費されることがある。
【００２０】
従って、キャッシュが、キャッシュの各キャッシュラインを繰り返して処理し、各キャッシュラインに対し、キャッシュ保守コマンドによって指定されたブロック内の任意の物理アドレス用のデータを格納しているかどうかを確認することがより効果的な方法となり得る。典型的には、同じページ又は同じアドレスブロック内の物理ページアドレスがアドレスの特定のビット数と同じ値を共有することから、実際には、範囲内の各アドレスについて個別のアドレス比較を実行する必要はない。その代わり、キャッシュが各キャッシュラインを単に一度探索することで、キャッシュラインのタグの少なくとも一部と要求されたブロック内のアドレスの共通部分とを比較し、そのブロック内の任意のアドレスからのデータをキャッシュラインが格納しているかどうかを特定することができる。一致が見られたキャッシュラインは記録することができ、その一致しているキャッシュラインに対してキャッシュ保守操作を開始することができる。
【００２１】
キャッシュに対して、幾つかのキャッシュ保守コマンドが送信されることがある。これは、１つのキャッシュ保守命令が、同じページ内の異なるアドレスブロックを指定する幾つかのコマンドへと分割されることによるもの、又は、幾つかの異なる命令が、異なるページ用の処理回路によって実行されることによるものである。キャッシュタグを探索する回数を減らすために、キャッシュは幾つかのキャッシュ保守コマンドを同時に対処してもよく、それによって、幾つかのキャッシュ保持コマンドに指定されたアドレスとタグとを一度のキャッシュタグ探索において比較し、その複数のコマンドによって指定されたアドレスブロックのいずれかのためのデータをどのキャッシュラインが格納しているかを判断する。タグ探索の回数を減らすことでエネルギーの消費を軽減でき、性能を向上させることができる。
【００２２】
キャッシュラインを探索して、指定されたページに対応するデータを格納しているかどうか判断する際に、キャッシュが全てのキャッシュラインを探索しなくてもよい場合がある。例えば、一部のシステムは、どのキャッシュにどのデータが格納されているかを追跡する何らかの情報を保持してもよく、この場合、要求されたアドレスページに対応するデータを格納していないと分かっているラインは探索しなくてもよい。
【００２３】
例えば、複数のキャッシュを有する一部のシステムは、対応する物理アドレス用のデータをどのキャッシュが格納しているかを特定するデータを格納しているスヌープフィルタを提供してもよい。この場合、スヌープフィルタは要求されたアドレス仮想ページ用のデータを格納しているキャッシュの特定に使用でき、制御回路は、スヌープフィルタによって特定されるキャッシュ以外のキャッシュに対してキャッシュ保守コマンドが送信されるのを防止してもよい。これにより、要求されたアドレスからのデータを格納していないと分かっているキャッシュを探索する不要なキャッシュ探索が回避され、そして、相互接続ファブリックによって転送されるキャッシュ保守コマンドの数を減らし、他のコマンド用に帯域幅を開放することによって、エネルギー消費の軽減が促されて性能が向上する。
【００２４】
メモリと関連付けられているメモリ制御部が一部のキャッシュ保守コマンドを局所的に処理することが可能な場合もある。例えば、アドレスのページを０等の所定の値に設定する場合、メモリはそのゼロ設定コマンド自体を処理する（キャッシュに送信されたコマンドと同時に、キャッシュ内の対応する任意の値を０にする）ことが可能であってもよい。メモリ制御部内の幾つかのキャッシュ保守コマンドを処理することによって、メモリ内の対応するデータを更新するためにあとに続くライトバックが実行されている状態でコマンドがキャッシュのみに向かう場合より、実行されるキャッシュ保守操作が速くなる。
【実施例１】
【００２５】
図１は、レジスタ８に格納されたデータ値を用いてデータ処理操作を実行する処理回路６を備えたプロセッサ４を含むデータ処理装置２を概略的に示す。例えば、処理回路６は、レジスタ８にライトバックする結果値を生成するように、レジスタ８に格納された値に対して演算操作を実行する、様々な加算器、シフタ及び乗算器等を含む演算論理装置（ＡＬＵ）を含んでもよい。命令パイプライン１０が処理回路６を制御し、命令取得部１２によってメモリシステムから取得されたプログラム命令に応答してデータ処理を実行する。取得された命令は、パイプライン１０の様々なステージを通過する。例えば、パイプラインステージは、命令を復号（ｄｅｃｏｄｅ）して、処理回路６を制御する制御信号を生成するための復号化ステージと、処理回路６に対して実行の命令をいつ発行するかを制御する発行ステージとを含んでもよい。一部の例では、パイプラインは、アウトオブオーダー（ｏｕｔ  ｏｆ  ｏｒｄｅｒ）処理をサポートしてもよいし、レジスタの名前変更を実行する名前変更ステージを含んでもよい。また、パイプラインは、ロード／ストア命令に応答してロード／ストアユニット１４を制御し、値をメモリシステムからレジスタ８へとロードするか、又は、データ値をレジスタ８からメモリシステムへと格納してもよい。プロセッサ４は図１に示されていない他の要素も含んでもよいことが理解されよう。
【００２６】
メモリシステムは、主要メモリ１６と、階層構造に配置された幾つかのキャッシュとを含む。メモリ１６は、メモリアクセス操作を制御するメモリ制御部１７を有する。この例では、キャッシュは、取得部１２によって取得される命令をキャッシュするレベル１（Ｌ１）命令キャッシュ１８と、メモリ１６からのデータをキャッシュするＬ１データキャッシュ２０と、データ及び命令をキャッシュする共有レベル２（Ｌ２）キャッシュとを含む。Ｌ２キャッシュ２２はメモリ１６からのデータ又は命令の特定のサブセットに、より速くアクセスできるが、主要メモリ１６よりも容量が小さい。Ｌ１キャッシュ１８，２０はＬ２キャッシュ２２又はメモリ１６からのデータ又は命令のサブセットに、より速くアクセスできるが、Ｌ２キャッシュ２２より容量が小さい。プロセッサ４のデータの使い方に応じて様々なキャッシュポリシーを使用して、どのデータ又は命令をＬ１及びＬ２キャッシュ１８，２０，２２内に配置すべきかを判断してもよい。一部のポリシーは、Ｌ１キャッシュ１８，２０内の全てのデータ又は命令をＬ２キャッシュ２２内にキャッシュする必要があると要求し、一方で、他のポリシーは、Ｌ２キャッシュ２２内に無いデータ又は命令をＬ１キャッシュ１８，２０内に存在させることを許容する。繰り返すが、この図１に示す構成は単なる例であり、他のシステムは他の構成又は他の数のキャッシュレベルを有してもよい。
【００２７】
パイプライン１０が実行する命令によって仮想アドレスが指定されると同時に、少なくともメモリシステムのメモリ１６が物理アドレスを用いてデータを特定する（キャッシュ１８，２０，２２を物理的にアドレス指定してよく、又は仮想的にアドレス指定してもよい）。これにより、同じ仮想アドレスで書き込まれたプログラムを、異なる範囲の物理アドレスにマッピングする各プログラムに使用される仮想アドレスと共存させることができる。メモリ管理ユニット（ＭＭＵ）２４が、仮想アドレスを物理アドレスへと変換するために設けられている。メモリ管理ユニット２４は、幾つかの変換エントリ２６を含むテーブルを含む。各変換エントリ２６は、仮想ページアドレス（ＶＰＡ）と、対応する物理ページアドレス（ＰＰＡ）と、アドレス空間の対応するページ用のアクセス許可を定義するデータ２７とを特定する。ＭＭＵ２４は、異なる仮想‐物理アドレスマッピング、又は異なるプログラム若しくはコンテキストへの許可を提供するために、場合によって、各プログラム若しくはコンテキストに対して複数のテーブルを保持してもよいし、又は、プログラム若しくはコンテキストの変更がある場合にテーブル内の異なるエントリにロードしてもよい。ＭＭＵ２４は、仮想アドレスを指定するロード／ストア命令又は他の命令がロード／ストアユニット１４によって実行された場合、アクセス許可２７を確認してアクセスが許可されているかどうかを判断する。許可されている場合、ＭＭＵ２４は、命令によって指定された仮想ページアドレスに対応する物理ページアドレス２６を返送する。そして、この物理ページアドレスをキャッシュ又はメモリへのアクセスを実行するのに用いることができる。
【００２８】
例えば、図４は、ＭＭＵ２４が実行するアドレス変換の一例を示す。プロセッサ４が実行するソフトウェアから見える仮想アドレス空間が、同じ仮想ページアドレス２９を共有する特定の範囲の仮想アドレスにそれぞれ対応する幾つかの仮想ページ２８を含む。図４の下部に示すように、仮想ページアドレス２９は仮想アドレスの上位桁部分に対応する。仮想アドレスの下位桁部分が、ページ２８内の特定のアドレスを指定するページオフセット３０を特定する。仮想ページアドレス２９及びページオフセット３０のそれぞれに対して異なる数のビットを提供することで異なるページサイズを実現することができる。これに対して、メモリシステムは、幾つかの物理ページ３１を備える物理アドレス空間内のアドレスを用いる。ＭＭＵ２４は、仮想アドレスを物理アドレスへと変換するために、仮想ページアドレス２９に対応する変換テーブルのエントリ２６を探索し、対応する物理ページアドレス３２を返送する。しかし、アドレスのページオフセット３０は変更されないままである。従って、図４に示すように、この変換によって、アドレス仮想ページが、対応するアドレス物理ページに効率的にマッピングされる。「ページ」は変換テーブルがアドレス変換を行う粒度を指す。ＭＭＵ２４が特定の数のページ用のエントリのための空間のみを有してもよい場合もある。プロセッサ４がテーブル内にページエントリが無いアドレスにアクセスした場合、例えばページテーブルウォークを実行することで、メモリ１６又は更なるページテーブルからエントリをロードすることができる。
【００２９】
図２は、図１に示すキャッシュ１８，２０，２２のいずれにもなり得るキャッシュ３４の一例を示す。このキャッシュは、キャッシュライン３５として知られる幾つかのストレージロケーションを含んでもよい。この例では、各キャッシュライン３５はデータ値３６（命令キャッシュ１８の場合には命令であってもよい）と、タグ値３７と、そのキャッシュライン内のデータがクリーンかダーティかを示すダーティフラグ３８と、そのキャッシュライン内のデータが有効か無効かを示す有効フラグ３９とを格納する。この例では、キャッシュはセットアソシアティブ（ｓｅｔ−ａｓｓｏｃｉａｔｉｖｅ）構造を有する（ただし、フルアソシアティブ又はダイレクトマッピングされたキャッシュを設けることもできることは理解されよう）。これは、各データ値が、データ値のアドレスに基づいて選択されたキャッシュ内のキャッシュライン３５の対応するセット４２の１つに配置されてもよいが、他のキャッシュライン３５内に配置することはできないことを意味する。この例では、キャッシュ３４は２ウェイセットアソシアティブであり、他のキャッシュがより強いアソシアティビティ（ａｓｓｏｃｉａｔｉｖｉｔｙ：連想性）を有していても、各データ値を配置できる可能なロケーションが２つあることを意味する。各物理アドレスは、対応するキャッシュラインセット４２を選択するのに用いられるインデックス部４０を含み、データ３６が特定のキャッシュライン３５に格納されると、アドレスのタグ部４１がそのキャッシュライン３５のタグ値３７として記録され、どのデータ値がそのキャッシュライン３５に格納されたかが特定される。キャッシュから特定のアドレスを検索する場合、アドレスタグ部４１と、対応するセット４２の各キャッシュライン３５のタグ３７とを比較し、要求されたデータがキャッシュに格納されているかどうかを確認する。データがまだ格納されておらず、対応するキャッシュラインセット４２の１つが有する有効フラグ３９が無効データを示す場合、このキャッシュラインを、要求されたデータを格納するように割り当てることができ、データが上位キャッシュ又はメモリから取得されると、その新たに割り当てられたキャッシュラインに配置される。無効データを含むスペアキャッシュラインが無い場合、何らかの既知のヴィクティム選択ポリシー（例えば、ラウンドロビン、最も長く使用されていない（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）等）を用いてヴィクティムキャッシュラインを選択することができ、ヴィクティムキャッシュラインから有効データを追い出すことができる。そして、ダーティフラグ３８がデータをダーティであると示した場合、新たなデータに譲るために、そのデータは上位キャッシュ又はメモリにライトバックされる。一部のキャッシュでは、図２に示す情報に加えて、例えばデータのコヒーレンシ状態を示すものや、データがセキュアであるか、非セキュアであるかを示すフラグといった他の情報を格納してもよいことが理解されよう。
【００３０】
キャッシュ保守操作はキャッシュ内のデータに対して実行されてもよい。例えば、キャッシュ保守操作によって、異なるレベルのキャッシュ間又はキャッシュとメモリとの間の一貫性を確保してもよい。幾つかの異なる種類のキャッシュ保守操作がサポートされてもよく、これには、例えば、１つ以上のキャッシュライン内の任意のダーティデータ値をメモリ又は上位キャッシュに書き込むクリーニング操作と、１つ以上のキャッシュラインを無効とマークして再利用できるようにする（それらのキャッシュライン内の全てのダーティデータを破壊する）無効化操作と、それらのキャッシュラインを無効化する前に、選択されたキャッシュラインからメモリにダーティデータをライトバックするクリーニング・無効化操作と、キャッシュラインを所定の値（例えば０）に設定する設定操作とが含まれる。設定操作は、所定の値を任意の上位キャッシュ又はメモリにライトバックする場合もある。
【００３１】
キャッシュ保守操作を実行すべきキャッシュラインを特定する方法は他にもあり、例えば以下のものがある。
【００３２】
キャッシュ全体に対する操作
キャッシュ保守操作が特定のキャッシュ内の全てのロケーションに対して行われる。これは、命令キャッシュデータは読み出し専用であることが多く安全且つ小さな単位で消去できるため、典型的には命令キャッシュのみに対して行われてもよい。
【００３３】
キャッシュラインによる操作
キャッシュ保守操作が、キャッシュ保守命令によって指定された１つのキャッシュラインに対して行われる。キャッシュラインによる操作は、マルチプロセッサコヒーレントメモリシステムがＭＥＳＩ等のコヒーレンシプロトコル内に直接組み込まれていることから、マルチプロセッサコヒーレントメモリシステムにおいて好ましい場合が多い。キャッシュラインによる操作では、キャッシュラインを特定するのに幾つかの手段がある。
セット／ウェイ（Ｓｅｔ／Ｗａｙ）‐キャッシュ構造内の物理ラインに対する操作。
セット‐ウェイ操作は典型的には、キャッシュ全体に対する操作を繰り返すためにソフトウェアによって使用される。マルチプロセッサコヒーレントシステムでは、この処理の間にキャッシュラインが自動的に変更されないことを確実なものとするために、コヒーレンシレジームからキャッシュを除去する必要がある場合がある。これらのキャッシュクリーニング操作はＣＰＵ初期化及びシャットダウン（電力管理）コードパス中に優先的に用いられるが他の目的に用いられてもよい。
ＶＡ（仮想アドレス）‐単一の仮想アドレスを指定する命令に応答して、仮想アドレスを物理アドレスに変換することで判定された、物理的にアドレス指定された単一のキャッシュラインに対する操作。ＶＡ操作は、コヒーレント共有仮想メモリのコンテキスト内で用いられ、コヒーレンシシステムの全てのエージェントがメモリに対する全ての変化を正しく確実に観測できるようにする。
【００３４】
本技術によれば、これらの種類のキャッシュ保守操作に加えて、又はそれに代えて、アドレスの仮想ページ２８全体に対してキャッシュ保守操作を実行すべきだと指定する能力も提供する。図３に示すように、キャッシュ保守命令５０は、キャッシュ保守が行われる仮想ページ２８を特定する仮想ページアドレス５２を指定してもよい。命令５０に応答して、処理回路６はキャッシュ１８，２０，２２のいずれか１つ又は複数を作動させ、データの物理ページが、命令によって指定された仮想ページアドレス５２が特定した仮想ページに対応する物理ページにある、任意のキャッシュラインに対してキャッシュ保守操作を実行してもよい。図３に示すように、仮想アドレスに基づいたキャッシュ保守命令５０は、実行される操作の種類を特定するオペコード５４と、使用される特定のページサイズを特定するページサイズパラメータ５６と、操作が行われる仮想ページを指定する仮想ページアドレス５２とを含む。ページサイズ５６は、ページサイズを指定する即値を含んでもよいし、或いは、ページサイズ値又は仮想ページアドレス５２を格納しているレジスタ８を参照してもよい。ページサイズ５６は、代わりに命令オペコード５４の一部として示されてもよい。仮想ページアドレス５２について、命令は、仮想ページアドレスを格納しているレジスタを特定するレジスタ指定子を備えてもよい。（ページサイズに応じて）命令の符号化内にページアドレスを収めることができる実施例ではページアドレスを即値として符号化することもできる。しかしながら、仮想ページアドレスは、フィールド５２を指定するアドレスを符号化する命令において使用可能な空間よりも大きいことが多いため、その場合はレジスタ指定子を使用してもよい。
【００３５】
これにより、キャッシュラインではなく、仮想的にアドレス指定されたページの全体に対して働く、クラス全体のキャッシュ保守操作を提供することができる。以下の表に、提供され得る操作の幾つかの例を記載する。
【００３６】
【表１】
2018511120.tif 000003
【００３７】
左側の列は、キャッシュ保守が提供される単一の仮想アドレス（ＶＡ）を指定する命令を示す。次の３列は、それぞれの異なるページサイズに対応する命令を示し、各命令によって仮想ページアドレスを指定してそのページ内の各アドレスに対してキャッシュ保守を開始する。最後の列には実行されるキャッシュ保守操作が記載されている。
【００３８】
統一時点、コヒーレンシ時点及び内部共有可能時点は、クリーニング操作又は無効化操作が実行されるメモリシステムのレベルを指す。一部の操作では、キャッシュ階層の特定のレベルのデータがコヒーレントになる必要があるのみであるが、他の操作では、メモリまでの、より深いコヒーレンシを要求する場合がある。統一時点、コヒーレンシ時点及び内部共有可能時点は、例えば、コヒーレンシが実施される時点の幾つかの構成を可能にするために、制御レジスタ内の制御パラメータによって定義してもよい。
【００３９】
特定の仮想アドレスに対するコヒーレンシ時点は、メモリにアクセスできる全てのエージェントがメモリロケーションの同じコピーを見ることが保証されている時点のことである。これは、事実上は主要なシステムメモリであることが多いが、他のシステムでは、メモリシステムエージェント間のコヒーレンスに影響しないコヒーレンシ時点を越えたキャッシュを実装する場合もある。この場合、コヒーレンシ時点はキャッシュであってもよい。コヒーレンシ時点は、上記のコヒーレンシ時点キャッシュ保守命令の１つに応答してクリーニング又は無効化されるキャッシュ／メモリの最終レベルである。
【００４０】
特定の処理要素（プロセッサ４等）に対する統一時点は、その処理要素に対する命令及びデータキャッシュ並びに変換テーブルウォークがメモリロケーションの同じコピーを見ることが保証されている時点である。多くの場合、統一時点は、命令及びデータキャッシュ並びに変換テーブルウォークが結合（ｍｅｒｇｅ）したユニプロセッサメモリシステム内の時点であってもよい。統一時点は、上記の統一時点キャッシュ保守命令の１つに応答してクリーニング又は無効化されるキャッシュ又はメモリの最終レベルである。
【００４１】
内部共有可能時点は、マルチプロセッサシステム内の「内部共有可能な共有可能性ドメイン」として指定された処理要素の特定のグループを指すために適用される。そして、内部共有可能時点は、内部共有可能ドメイン内における全ての処理要素の命令及びデータキャッシュ並びに変換テーブルウォークがメモリロケーションの同じコピーを見ることが保証されている時点に対応する。内部共有可能時点は、上記の内部共有可能点命令キャッシュ無効化命令に応答して無効化されるキャッシュの最終レベルである。
【００４２】
仮想ページ全体に対してキャッシュ保守を実行する命令が極めて有効となる、例えば以下のような幾つかのユースケースがある。
【００４３】
非コヒーレントＤＭＡ（ダイレクトメモリアクセス）
ＤＭＡ操作の前後には、メモリバッファ及びキャッシュに一貫性が必要とされることがある。このため、キャッシュを、ＤＭＡの前にクリーニングし、ＤＭＡが完了した後に無効化しなければならないことがある。現在の現実世界での例としては、ＯｐｅｎＣＬ画像処理用ＧＰＵとの間で、各画像フレームのサイズが８メガバイト以内の１０８０ｐのＨＤ画像を転送することが挙げられるだろう。全キャッシュよりもバッファの方が数倍大きいため、最悪の場合、いずれのキャッシュにも存在する画像がほとんど無いということがあり得る。単一の仮想アドレスを指定するキャッシュ保守命令では、１２８Ｋ×６４バイトのキャッシュライン操作が行われることになる。ページに基づいた操作によって、ＣＰＵの作業を桁違いに軽減することができ、キャッシュ及びメモリシステム内のキャッシュ保守が最適化される。使用するページのサイズに応じて、２０４８×４Ｋキャッシュページ操作、５１２×１６Ｋキャッシュページ操作又は１２８×６４Ｋキャッシュページ操作によって８メガバイトのバッファを処理することができる。
【００４４】
メモリのゼロ充填
セキュリティ上の理由から、多くのオペレーティングシステム及びハイパーバイザが、メモリページをクライアントにマッピングする前にそれらをゼロ充填する。ページに基づきメモリをゼロにする操作は、最終的に、ブロードキャストページの無効化に伴ってメモリ装置内に直接発生し得る。
【００４５】
動的なコードロード
コードがＲＡＭへとロードされる際、命令キャッシュをデータキャッシュ及びメモリと同期しなければならないことがある。ＶＡライン操作によって僅かな更新はできるが、大きな変化によって命令キャッシュ全体が無効化される結果となる。ページ毎に無効化すると、個別に実行するコードからの全体的な命令キャッシュ無効化の影響が取り除かれる。
【００４６】
従って、これらとその他のユースケースにおいて、仮想ページアドレスに基づいたキャッシュ保守命令によって、仮想アドレスに基づいたキャッシュ保守命令又は専用のカスタムフラッシュエンジンに対して、以下の幾つかの利点を提供することができる。
・上位システムソフトウェアの意図がＳｏＣファブリック及び要素に示され、最適な実装が可能となる。
・構築された命令が未来のＯＳのカーネルコードによって使用され得る。
・指定されたページが必要とするＭＭＵ変換及び許可確認が１つのみである。
・細かな（ａｔｏｍｉｃ）ページ操作に対してロックや状態追跡の必要がない（メモリの順序付け及びバリアに関して、操作を時間内に完了させなければならないことがある）。
・キャッシュ操作中のオペレーティングシステムのプリエンプション（先取り）が透過的に行われる。
・非同期エラーが無い。
・マルチプロセッサ及びコヒーレントメモリシステム用に設計されている。
・ハードウェア又はファブリックが、キャッシュを一度掃くことにより複数の無効化を完了させて解決することができる（以下の図９参照）。
【００４７】
特定のシステム内で上記の種類のキャッシュ保守命令を実施するには幾つかの選択肢がある。
【００４８】
図５は、ページに基づいたキャッシュ保守操作が、プロセッサ４によって、個別のアドレスに対応する幾つかの個別のマイクロ操作へと分解される第１の例を示す。プロセッサ４は、仮想ページアドレス（ＶＰＡ）に基づいたキャッシュ保守命令を受信し、ＭＭＵ２４を作動させ、仮想ページアドレスを物理ページアドレス（ＰＰＡ）へと変換する。プロセッサ４は、ページ操作を、ＭＭＵによって特定されたページ内の各物理アドレス（ＰＡ０，ＰＡ１，…ＰＡＮ）にそれぞれ対応する幾つかの個別のキャッシュ保守コマンド６０へとマッピングする。そして、これらのコマンド６０はキャッシュ３４に送信される。キャッシュ３４は、各コマンド６０に応答して、キャッシュにおいて指定された物理アドレスを探索し、一致するキャッシュラインが見つかれば要求されたキャッシュ保守操作を実行する。この方法により、キャッシュ自体が個別のアドレスを指定するコマンドのみを扱える場合でも、ＶＰＡキャッシュ保守命令のアーキテクチャ面での提供をサポートすることができる。例えば、ＣＰＵ内の小型のステートマシンが連続的なキャッシュライン操作を生成することができる。代替として、プロセッサ４は、個別のコマンド６０を生成する前にアドレス変換を実行する代わりに、仮想アドレスによって連続的なキャッシュライン操作を生成することができ、これらの操作のそれぞれによってＭＭＵ内での変換が開始され、キャッシュに送信される物理アドレスが決定される。
【００４９】
図６は、ページ全体用のコマンドがキャッシュに送信される他の例を示す。この場合、プロセッサ４はＶＰＡを指定するキャッシュ保守命令を実行する。ＶＰＡはＭＭＵによってＰＰＡへと変換される。そして、ＰＰＡを指定するコマンド６２がキャッシュに送信される。その後、キャッシュは、どのキャッシュラインが指定されたページ内の物理アドレスを有するデータを格納しているか判断してもよく、特定された各キャッシュラインへのキャッシュ保守操作を開始することができる。この方法は、図５と比べて幾つかの利点を有する。まず、コマンド帯域幅が減少し、プロセッサとキャッシュ間で送信しなければならないコマンドの数が少なくなる。また、この方法によって、図５のように各アドレスを個別に探索を必要とするのではなく、各キャッシュラインのタグを一度に捜索することで、指定された物理ページアドレス内のデータのいずれかをキャッシュが含んでいるかどうかを特定することが可能になる。これによって、電力消費の軽減及び応答時間の短縮を促進する。
【００５０】
あるいは、図７に示すように、ページ操作を復号化して幾つかの細かなキャッシュマイクロ操作として送信することもできる。例えば、実施によって、６４Ｋページ操作を１６個の４Ｋ操作へと変化させ、又は４Ｋページ操作を各６４バイトの６４個の操作へと変換することができる。こうして、図７では、キャッシュ保守命令は、命令内に指定された仮想ページに対応する物理ページ内の物理アドレス（例えばサブページアドレス）のブロックを指定する幾つかのコマンド６４にマッピングされる。そして、各コマンドはキャッシュ３４を作動させ、指定されたアドレスブロックに対応するキャッシュラインを特定して、特定されたキャッシュラインに対してキャッシュ保守を実行する。
【００５１】
図５〜７は１つのキャッシュにコマンドを送信する例を示すが、複数のキャッシュを備えるシステムでは、コマンドは各キャッシュ又はキャッシュのサブセットにブロードキャストされてもよく、各キャッシュは、これに応答して、要求されたアドレスへのデータを有するかどうかを確認し、必要な場合にはキャッシュ保守を実行してもよい。
【００５２】
図８は、指定された物理アドレス（ＰＡ‐図５）、指定された物理ページアドレス（ＰＰＡ‐図６）又は指定された物理サブページアドレス（ＰＳＰＡ‐図７）に対応するデータをどのキャッシュラインが格納しているかを判断する方法の例を示す。キャッシュ３４は、各キャッシュラインをスキャンし、キャッシュラインのタグ３７をコマンド６０，６２，６４内で受信したＰＡ、ＰＰＡ又はＰＳＰＡと比較してもよい。図６及び７の例については、タグにマスク７２を適用し、ページアドレス又はサブページアドレスの最下位ビットよりも下位のタグのビットをマスクしてもよい。例えば、どのビットをマスクすべきか特定するのにサイズパラメータを用いてもよい。マスクされたタグが、指定されたアドレス、ページアドレス又はサブページアドレスと一致した場合、ヒット信号が生成され、制御回路７０が、ヒットが見つかった任意のラインに対して実行されるキャッシュ保守を開始してもよい。
【００５３】
キャッシュは幾つかのキャッシュ保守コマンドを受信することもある。キャッシュ探索のオーバーヘッドを低減するために、同じ種類のキャッシュ保守操作に対応する複数のコマンドをグループ化して、キャッシュを一度に掃くことで処理されるようにしてもよい。例えば、図９に示すように、各キャッシュラインの（マスクされた）タグ値を、幾つかのキャッシュ保守コマンドのアドレス、ページアドレス又はサブページアドレスと平行に比較してもよく、各コマンドに対するヒット信号をＯＲ演算し、キャッシュ保守操作が、対応するキャッシュラインに対して実行されるべきかどうかを特定してもよい。図９は２つのコマンドの比較を一度に実行する様子を示すが、これを複数分行うこともできることが理解されよう。このようにして、各キャッシュラインを一度探索するだけで２つ以上のキャッシュ保守コマンドを同時に処理することができる。
【００５４】
メモリシステム１６は、データゼロ操作といった一部のコマンドを局所的に処理することが可能なメモリ制御部１７を含んでよい場合もある。この場合、コマンドはキャッシュの他にメモリにも送信されてもよい。
【００５５】
キャッシュは、特定の速度でのコマンド処理のみが可能であってもよく、キャッシュ保守コマンドを格納する有限バッファのみを有してよい場合もある。従って、プロセッサ４は、何らかの背圧を適用して、キャッシュ又はメモリシステムが処理するよりも速いキャッシュ保守操作の発行を制限してもよい。
【００５６】
図１０は、それぞれがキャッシュを有してもよい複数の処理要素を含むデータ処理装置１００の他の例を示す。例えば、処理要素は、２つの中央処理装置（ＣＰＵ）とグラフィック処理装置（ＧＰＵ）１０６とを含んでもよく、それぞれは図１に示すプロセッサ４と同様に構成されてもよい。また、この装置は、メモリ制御部１０８（例えばＤＭＡユニット）と、例えばイーサネットインタフェースといった周辺装置又は外部装置と通信するための入出力ユニット１１０と、ディスプレイ装置上のデータの表示を制御するディスプレイ制御部１１２とを含んでもよい。多くの他の種類の装置も接続することができることが理解されよう。各装置はインターコネクトによって接続され、各装置に格納された異なるデータバージョン間のコヒーレンシを維持する。
【００５７】
ＣＰＵ及びＧＰＵはそれぞれローカルキャッシュ１２０を有し、インターコネクト１１４は、キャッシュ１２０内のデータ間のコヒーレンシを維持するコヒーレンシ制御回路１３０を含んでもよい。どのデータが各キャッシュ１２０に格納されているかを追跡するために、インターコネクト１１４内にスヌープフィルタ１３２を設けてもよい。処理要素の１つが特定のアドレスに対してアクセスを開始した場合、スヌープフィルタ１３２は、他のキャッシュのいずれかがそのアドレス用のデータを格納していないかどうかを判断できる。そして、他のキャッシュのいずれかがそのアドレス用のデータを格納していた場合、スヌープフィルタ１３２は、他のキャッシュ内のデータのコヒーレンシ状態を確認するスヌープ操作を開始する。コヒーレンシを維持するのに、例えばＡＲＭ（登録商標）社が提供するＡＭＢＡ（登録商標）ＡＣＥプロトコルといった、任意の既知のコヒーレンシプロトコルを用いてもよい。
【００５８】
上記のように、仮想ページアドレスによって特定されるキャッシュ保守操作を実行する場合、スヌープフィルタ１３２は必要なキャッシュ検索の量を減少させるのに有効となり得る。通常、キャッシュ保守操作は、発行されるとコヒーレントファブリックを通してブロードキャストされることで、データが格納されているであろうどのキャッシュにおいても、データがクリーニング又は無効化される。しかしながら、ページサイズは比較的大きくキャッシュは比較的小さいことが多いため、合理的にみて、特定のキャッシュが、命令内に指定されたページからのデータを格納していないという可能性がある。検索のオーバーヘッドを低減するように、各キャッシュにキャッシュ保守コマンドを転送する必要があるかどうかを判断するためにスヌープフィルタ１３２を用いることができる。これにより、指定されたページからのデータを格納していると特定されたキャッシュのみを探索する。コヒーレンシ制御部１３０は、スヌープフィルタ１３２内でそのページからのデータを格納していると示されていないキャッシュにキャッシュ保守コマンドを送信するのを防止してもよい。これにより、コマンドを送信及び追跡するのに伴う帯域幅及び制御オーバーヘッド、並びに、要求されたデータを保持しているかどうかを判断するためにキャッシュを検索するときのオーバーヘッドを低減できる。
【００５９】
図１１はデータ処理の方法を示す。ステップ２００において、処理回路は、仮想ページアドレスを指定するキャッシュ保守命令が発生したかどうかを判断する。発生していた場合、ステップ２０２において、ＭＭＵ２４が仮想ページアドレスを物理ページの物理ページアドレスへと変換する。ステップ２０４において、１つ以上のキャッシュ保守コマンドが、その物理ページ内のアドレス用のキャッシュに対して発行される（これは図５〜７に示す例のいずれでも行うことができる）。ステップ２０６において、キャッシュは、キャッシュ保守命令に指定された仮想ページアドレスに対応する物理ページに存在する物理アドレスを有するデータを格納していると特定された任意のキャッシュラインに対して、キャッシュ保守を実行する。
【００６０】
本願では、用語「〜するように構成された」は、装置の要素が、定義された操作を行うことが可能な構成を有することを意味するために用いている。このコンテキストでは、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は様態を意味する。例えば、装置は、定義された操作を提供する専用のハードウェアを有してもよいし、又は、プロセッサ又は他の処理装置が機能を実行するようにプログラムされてもよい。「〜するように構成された」は、装置要素が定義された操作を提供するために何らかの方法で変更する必要があることを意味するものではない。
【００６１】
本明細書では本発明の例示的な実施例を添付の図面を参照しながら詳細に説明してきたが、本発明はこれらの厳密な実施例に限定されるものではなく、添付の請求項によって定義される、本発明の範囲及び精神を逸脱しない範囲で、当業者によって様々な変更と変形をもたらすことができると理解すべきである。
【図１】
2018511120.tif 000004
【図２】
2018511120.tif 000005
【図３】
2018511120.tif 000006
【図４】
2018511120.tif 000007
【図５】
2018511120.tif 000008
【図６】
2018511120.tif 000009
【図７】
2018511120.tif 000010
【図８】
2018511120.tif 000011
【図９】
2018511120.tif 000012
【図１０】
2018511120.tif 000013
【図１１】
2018511120.tif 000014
【国際調査報告】
2018511120.tif 000015
2018511120.tif 000016
2018511120.tif 000017