JP6831788B2 - キャッシュ保守命令 - Google Patents

キャッシュ保守命令 Download PDF

Info

Publication number
JP6831788B2
JP6831788B2 JP2017545291A JP2017545291A JP6831788B2 JP 6831788 B2 JP6831788 B2 JP 6831788B2 JP 2017545291 A JP2017545291 A JP 2017545291A JP 2017545291 A JP2017545291 A JP 2017545291A JP 6831788 B2 JP6831788 B2 JP 6831788B2
Authority
JP
Japan
Prior art keywords
cache
address
data
virtual page
cache maintenance
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.)
Active
Application number
JP2017545291A
Other languages
English (en)
Other versions
JP2018511120A (ja
Inventor
パーカー、ジェイソン
ジェイムズ マシューソン、ブルース
ジェイムズ マシューソン、ブルース
エヴァンス、マシュー
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2018511120A publication Critical patent/JP2018511120A/ja
Application granted granted Critical
Publication of JP6831788B2 publication Critical patent/JP6831788B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/655Same page detection
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本技術はデータ処理の分野に関する。より具体的には、本技術はキャッシュ保守操作に関する。
装置は、メモリからデータを取得しなければならない場合よりも素早く、処理回路によってキャッシュされたデータにアクセスできるように、メモリからキャッシュデータを格納する1つ以上のキャッシュを有してもよい。装置内に幾つかのキャッシュが存在してもよく、例えば、同じアドレスに対応する異なるバージョンのデータを整合させるためにキャッシュ保守操作が実行されることがある。
少なくとも幾つかの実施例が、
命令に応答してデータ処理を実行する処理回路を備え、
処理回路が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する1つ以上のキャッシュラインに対して、キャッシュ保守操作を実行し、
キャッシュ保守命令が複数の仮想ページサイズの1つを指定し、処理回路が、キャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、キャッシュ保守命令によって指定された仮想ページサイズを有する仮想ページを用いてキャッシュ保守操作を実行する装置を提供する。
少なくとも幾つかの実施例が、
命令に応答してデータ処理を実行する処理手段を備え、
処理手段が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する1つ以上のキャッシュラインに対して、キャッシュ保守操作を実行し、
キャッシュ保守命令が複数の仮想ページサイズの1つを指定し、処理手段が、キャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、キャッシュ保守命令によって指定された仮想ページサイズを有する仮想ページを用いてキャッシュ保守操作を実行する装置を提供する。
少なくとも幾つかの実施例が、
仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令を受信することと、
キャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、仮想ページアドレスによって特定された仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する1つ以上のキャッシュライン対して、キャッシュ保守操作を実行することとを含み、
キャッシュ保守命令が複数の仮想ページサイズの1つを指定し、キャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させることで、キャッシュ保守命令によって指定された仮想ページサイズを有する仮想ページを用いてキャッシュ保守操作を実行するデータ処理方法を提供する。
更なる実施例、例示及び特徴を、添付の図面と関連付けながら以下に説明する。
処理回路とキャッシュとを有するデータ処理装置を概略的に示す。 キャッシュの一例を示す。 キャッシュ保守命令の一例を示す。 仮想ページアドレスと物理ページアドレスとの間の変換の一例を示す。 仮想ページアドレスを指定するキャッシュ保守命令に応答するキャッシュ保守操作の実行例を示す。 仮想ページアドレスを指定するキャッシュ保守命令に応答するキャッシュ保守操作の他の実行例を示す。 仮想ページアドレスを指定するキャッシュ保守命令に応答するキャッシュ保守操作の更に他の実行例を示す。 キャッシュ保守命令によって指定された仮想ページに対応する物理ページ内の物理アドレスを有するデータをどのキャッシュラインが格納しているかを特定する一例を示す。 キャッシュ保守命令によって指定された仮想ページに対応する物理ページ内の物理アドレスを有するデータをどのキャッシュラインが格納しているかを特定する他の例を示す。 各キャッシュに格納されたデータを追跡するスヌープフィルタを有する数個のキャッシュを備える装置の一例を示す。 データ処理の方法を示す。
装置は、命令に応答してデータ処理を実行する処理回路を有してもよい。処理回路は、メモリの対応するデータにアクセスするよりも速くアクセスできる、少なくとも1つのキャッシュにアクセスすることができる。キャッシュ階層には、例えば数レベルのキャッシュが存在してもよい。時には、1つ以上のキャッシュ内における特定のキャッシュラインに対してキャッシュ保守操作の実行が必要な場合がある。キャッシュ保守操作は、例えば、キャッシュデータとメモリ内又は他のキャッシュ内の対応するデータとの整合性を維持するために実行されてもよい。
処理回路は、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令をサポートする。仮想アドレスとは、メモリが使用する物理アドレスに対して、処理回路がデータを参照するために使用するアドレスである。処理回路はキャッシュ保守命令に応答して少なくとも1つのキャッシュを作動させ、そのキャッシュラインに格納されたデータの物理アドレスが、この命令に指定された仮想ページアドレスによって特定された仮想ページに対応する物理ページに存在する、データの物理アドレスを格納している任意のキャッシュラインに対して、キャッシュ保守操作が実行される。2つ以上のキャッシュを備えるシステムでは、キャッシュ保守が実行されるキャッシュラインは全て同じキャッシュに存在してもよいし、又は2つ以上のキャッシュに存在する場合もある。これは、各キャッシュに格納されたデータをどのアドレスが有しているかに依存する。
アドレスの仮想ページ全体に対して実行されるキャッシュ保守を開始するキャッシュ保守命令を提供することによって、キャッシュ保守が実行される各仮想アドレスに対して個別のキャッシュ保守命令を実行するといった代替的な方法に勝る、幾つかの利点を提供することができる。まず、実行される命令の数を減らすことができるため、処理回路への負荷が軽減され、他の命令の処理量を増加させることができる。また、これにより、上位システムソフトウェアからの意図を装置内のファブリックや構成要素に示すこともでき、性能を最適化する。これは、個別のキャッシュ保守命令が各アドレスに対して実行されるアドレス毎の方法の場合、個別の命令からでは、より広い範囲のアドレスがキャッシュ保守を必要とすることをシステムが知ることができないため不可能なことである。また、単一命令を使用して仮想アドレス空間のページ全体に対してキャッシュ保守を開始することによって、この保守操作は、処理回路によって実行されるロック又はその他の状態追跡(tracking)操作を必要とせずに不可分に実行できるため、データコヒーレンスを維持するためのオーバーヘッドを低減できる。キャッシュ操作時におけるオペレーティングシステムのプリエンプション(pre−emption:先取り)についてもソフトウェアに対して透過的に処理できる。
キャッシュ保守命令は、幾つかの仮想ページサイズの1つを指定することができ、それによって、実行時には、処理回路は指定したページサイズのアドレスブロックに対してキャッシュ保守操作を実行するようにキャッシュを制御する。これにより、プログラマ又はコンパイラが、要求されたアドレス範囲に最適な仮想ページサイズを指定するキャッシュ保守命令を選択できるため、実際に必要なアドレス範囲よりはるかに大きなアドレス範囲に対して不必要にキャッシュ保守を行うことが防止され、キャッシュにおける保守オーバーヘッドが低減される。仮想ページサイズは命令によって異なる方法で指定されてもよい。一部の例では、ページサイズは命令オペコードにおいて暗黙的であってもよい(これにより、本質的に異なる命令が各ページサイズに提供される)。或いは、共通のオペコードを用いながら、使用されるべき仮想ページサイズを即時フィールドによって指定したり、使用されるべき仮想ページサイズを示す値を格納するレジスタを命令によって指定したりしてもよい。
処理回路は、仮想ページアドレスを物理ページアドレスへと変換する、トランスレーション・ルックアサイド・バッファ(TLB)又はメモリ管理ユニット(MMU)といった変換回路を有してもよい。例えば、変換回路は、それぞれが特定の仮想ページアドレスに対応し且つその仮想ページアドレスに対応する物理ページアドレスを特定する幾つかの変換エントリを有してもよい。すなわち、メモリの「ページ」は、1つの変換エントリに対応するメモリアドレス空間の単位といえる。このため、同じ仮想‐物理アドレス変換を同じページ内の全てのアドレスに対して行い、異なる仮想‐物理アドレス変換を異なるページ内のアドレスに対して用いることができる。従って、キャッシュ保守を要求するアドレスを仮想ページアドレスによって特定するキャッシュ保守命令を提供することの他の利点は、各アドレスに対して個別のキャッシュ保守命令を実行する場合は各アドレスを複数回探索する必要があるのに比べて、トランザクション回路を一度探索するだけで済むという点である。変換テーブル探索は、特に、要求された仮想‐物理アドレスマッピングを見つけるために変換テーブルウォークが必要な場合にかなり遅くなることがある。そのため、アドレス変換のオーバーヘッドを低減させることで、仮想ページアドレスに基づくキャッシュ保守命令の性能を向上させることができる。
キャッシュ保守命令に応答して、指定された仮想ページ内のアドレスに対して様々なキャッシュ保守操作を実行できる。例えば、キャッシュ保守操作は、通常、システム内の異なるバージョンのデータ間の一貫性を確保するためか、又は、予測可能な操作によって他の操作を継続できるように或る既知の状態のキャッシュの一部を配置するために、キャッシュデータのコヒーレンシ状態を変更する操作を含む。例えば、キャッシュ保守操作は以下のいずれかを含んでもよい。
・少なくとも1つの更なるデータストア(キャッシュ階層又はメモリの他のレベルにおけるキャッシュであってもよい)にダーティ(dirty)データを書き込むクリーニング操作。ダーティデータは、他のロケーションにある対応するコピーデータを更新することなく修正されたデータであってもよい。クリーニング操作中にダーティデータが書き込まれる1つ又は複数の更なるデータストアを、予め定めるか又はハードコード化してもよいし、若しくは、可変として、例えば制御レジスタ内の制御パラメータを用いて定義してもよい。
・指定されたアドレスからデータを無効化する無効化操作(例えば、データを無効化し、及び/又はキャッシュからデータを削除する)。無効化操作は、ダーティデータが更なるデータストアにライトバックされていない場合にダーティデータが失われる可能性がある。
・クリーニング操作に続いて無効化操作を実行することに相当するクリーニング・無効化操作。これにより、過去に修正された任意のダーティデータをメモリ又は他のデータストアに最初に書き込むことで、このダーティデータを保持したままキャッシュ内のデータを無効化できる。
・要求されたアドレスにおけるデータを所定の値(例えば0等)に設定する設定操作。
1種類のキャッシュ保守操作を実施するシステムもあれば、数種類のキャッシュ保守操作を実施するシステムもある。例えば、各種のキャッシュ保守操作に対して、幾つかの異なるバージョンのキャッシュ保守命令を設け、各バージョンは仮想ページアドレスを使用してキャッシュ保守が実行されるアドレスを特定してもよい。実行される特定のキャッシュ保守操作は命令オペコード又は命令符号化におけるフィールドによって特定されてもよい。
キャッシュ保守を行うアドレスを処理回路によって特定する手段は仮想ページアドレスだけではない場合もある。例えば、処理回路は、キャッシュ保守操作を行う個別の仮想アドレスを指定するキャッシュ保守命令か、又は全体としてキャッシュに実行されるべきキャッシュ保守を指定するキャッシュ保守命令をもサポートしてもよい。
装置内のキャッシュ保守命令の処理を実施する方法は幾つかある。一例では、処理回路は、キャッシュ保守命令に応答して、キャッシュに対するキャッシュ保守コマンドの発行を開始してもよく、各コマンドは、キャッシュ保守命令によって指定された仮想ページアドレスに対応する物理ページ内の物理アドレスを指定する。そして、キャッシュは、各個別のキャッシュ保守コマンドに応答して、指定した物理アドレスに対してキャッシュ保守操作を実行してもよい。これによって、キャッシュの設計を簡素化でき、すでに個別のアドレスに対するキャッシュ保守コマンドに対応できる標準キャッシュにおいて、仮想ページに基づいたキャッシュ保守に対処するためのハードウェア修正が一切必要なくなる。例えば、処理回路内の小型のステートマシンによって、キャッシュ保守命令を各アドレス用の個別のマイクロ操作へと変換することができる。
また、キャッシュに対して、キャッシュ保守命令によって指定される仮想ページアドレスに対応する物理ページ内の物理アドレスのブロックを指定する少なくとも1つのキャッシュ保守コマンドが発行されてもよい。キャッシュは、各コマンドに応答して、どのキャッシュラインが指定されたアドレスブロック内の物理アドレス用のデータを格納しているかを特定し、その特定されたキャッシュラインに対してキャッシュ保守操作を実行してもよい。この方法によって、キャッシュに送信しなければならないコマンドの数を減らし、コマンドの帯域幅を節約して処理回路への負荷を軽減することができる。
場合によっては、キャッシュ保守コマンドによって特定される物理アドレスのブロックがページ全体であってもよく、その結果、キャッシュ保守命令によって単一のキャッシュ保守コマンドが発動し、ページ全体に対して保守が行われるようにキャッシュが制御される。
また、少なくとも一部のキャッシュ保守命令においては、全体のページサイズよりも小さなアドレスブロックをそれぞれ指定する幾つかのコマンドがキャッシュに発行されてもよい。この方法は、処理回路が上記のように異なるページサイズをサポートする場合にキャッシュハードウェアを簡素化するのに特に有効となり得る。例えば、キャッシュ保守命令によって選択されるページサイズに関わらず、アドレスの或る基本単位に対応するキャッシュ保守コマンドに命令をマッピングできるため、キャッシュは特定のページサイズを考慮する必要がなく、或る固定サイズのアドレスブロックに対する1つ以上のコマンドを処理するだけである。
キャッシュがアドレスブロックを指定するキャッシュ保守コマンドに応答する手段は他にもある。1つの方法として、各アドレス用のキャッシュを個別に探索して、指定されたブロック内の各アドレスを繰り返して処理することで、そのアドレスに対応するデータを格納しているキャッシュラインがあるかどうかを確認することが考えられる。しかしながら、この方法では、ページサイズがキャッシュ内のロケーションの数よりも著しく大きい場合が多いことから、比較的大きなオーバーヘッドを生じることがある。そのため、各アドレス用のキャッシュを繰り返し探索する速度が遅くなり、大量のエネルギーが消費されることがある。
従って、キャッシュが、キャッシュの各キャッシュラインを繰り返して処理し、各キャッシュラインに対し、キャッシュ保守コマンドによって指定されたブロック内の任意の物理アドレス用のデータを格納しているかどうかを確認することがより効果的な方法となり得る。典型的には、同じページ又は同じアドレスブロック内の物理ページアドレスがアドレスの特定のビット数と同じ値を共有することから、実際には、範囲内の各アドレスについて個別のアドレス比較を実行する必要はない。その代わり、キャッシュが各キャッシュラインを単に一度探索することで、キャッシュラインのタグの少なくとも一部と要求されたブロック内のアドレスの共通部分とを比較し、そのブロック内の任意のアドレスからのデータをキャッシュラインが格納しているかどうかを特定することができる。一致が見られたキャッシュラインは記録することができ、その一致しているキャッシュラインに対してキャッシュ保守操作を開始することができる。
キャッシュに対して、幾つかのキャッシュ保守コマンドが送信されることがある。これは、1つのキャッシュ保守命令が、同じページ内の異なるアドレスブロックを指定する幾つかのコマンドへと分割されることによるもの、又は、幾つかの異なる命令が、異なるページ用の処理回路によって実行されることによるものである。キャッシュタグを探索する回数を減らすために、キャッシュは幾つかのキャッシュ保守コマンドを同時に対処してもよく、それによって、幾つかのキャッシュ保持コマンドに指定されたアドレスとタグとを一度のキャッシュタグ探索において比較し、その複数のコマンドによって指定されたアドレスブロックのいずれかのためのデータをどのキャッシュラインが格納しているかを判断する。タグ探索の回数を減らすことでエネルギーの消費を軽減でき、性能を向上させることができる。
キャッシュラインを探索して、指定されたページに対応するデータを格納しているかどうか判断する際に、キャッシュが全てのキャッシュラインを探索しなくてもよい場合がある。例えば、一部のシステムは、どのキャッシュにどのデータが格納されているかを追跡する何らかの情報を保持してもよく、この場合、要求されたアドレスページに対応するデータを格納していないと分かっているラインは探索しなくてもよい。
例えば、複数のキャッシュを有する一部のシステムは、対応する物理アドレス用のデータをどのキャッシュが格納しているかを特定するデータを格納しているスヌープフィルタを提供してもよい。この場合、スヌープフィルタは要求されたアドレス仮想ページ用のデータを格納しているキャッシュの特定に使用でき、制御回路は、スヌープフィルタによって特定されるキャッシュ以外のキャッシュに対してキャッシュ保守コマンドが送信されるのを防止してもよい。これにより、要求されたアドレスからのデータを格納していないと分かっているキャッシュを探索する不要なキャッシュ探索が回避され、そして、相互接続ファブリックによって転送されるキャッシュ保守コマンドの数を減らし、他のコマンド用に帯域幅を開放することによって、エネルギー消費の軽減が促されて性能が向上する。
メモリと関連付けられているメモリ制御部が一部のキャッシュ保守コマンドを局所的に処理することが可能な場合もある。例えば、アドレスのページを0等の所定の値に設定する場合、メモリはそのゼロ設定コマンド自体を処理する(キャッシュに送信されたコマンドと同時に、キャッシュ内の対応する任意の値を0にする)ことが可能であってもよい。メモリ制御部内の幾つかのキャッシュ保守コマンドを処理することによって、メモリ内の対応するデータを更新するためにあとに続くライトバックが実行されている状態でコマンドがキャッシュのみに向かう場合より、実行されるキャッシュ保守操作が速くなる。
図1は、レジスタ8に格納されたデータ値を用いてデータ処理操作を実行する処理回路6を備えたプロセッサ4を含むデータ処理装置2を概略的に示す。例えば、処理回路6は、レジスタ8にライトバックする結果値を生成するように、レジスタ8に格納された値に対して演算操作を実行する、様々な加算器、シフタ及び乗算器等を含む演算論理装置(ALU)を含んでもよい。命令パイプライン10が処理回路6を制御し、命令取得部12によってメモリシステムから取得されたプログラム命令に応答してデータ処理を実行する。取得された命令は、パイプライン10の様々なステージを通過する。例えば、パイプラインステージは、命令を復号(decode)して、処理回路6を制御する制御信号を生成するための復号化ステージと、処理回路6に対して実行の命令をいつ発行するかを制御する発行ステージとを含んでもよい。一部の例では、パイプラインは、アウトオブオーダー(out of order)処理をサポートしてもよいし、レジスタの名前変更を実行する名前変更ステージを含んでもよい。また、パイプラインは、ロード/ストア命令に応答してロード/ストアユニット14を制御し、値をメモリシステムからレジスタ8へとロードするか、又は、データ値をレジスタ8からメモリシステムへと格納してもよい。プロセッサ4は図1に示されていない他の要素も含んでもよいことが理解されよう。
メモリシステムは、主要メモリ16と、階層構造に配置された幾つかのキャッシュとを含む。メモリ16は、メモリアクセス操作を制御するメモリ制御部17を有する。この例では、キャッシュは、取得部12によって取得される命令をキャッシュするレベル1(L1)命令キャッシュ18と、メモリ16からのデータをキャッシュするL1データキャッシュ20と、データ及び命令をキャッシュする共有レベル2(L2)キャッシュとを含む。L2キャッシュ22はメモリ16からのデータ又は命令の特定のサブセットに、より速くアクセスできるが、主要メモリ16よりも容量が小さい。L1キャッシュ18,20はL2キャッシュ22又はメモリ16からのデータ又は命令のサブセットに、より速くアクセスできるが、L2キャッシュ22より容量が小さい。プロセッサ4のデータの使い方に応じて様々なキャッシュポリシーを使用して、どのデータ又は命令をL1及びL2キャッシュ18,20,22内に配置すべきかを判断してもよい。一部のポリシーは、L1キャッシュ18,20内の全てのデータ又は命令をL2キャッシュ22内にキャッシュする必要があると要求し、一方で、他のポリシーは、L2キャッシュ22内に無いデータ又は命令をL1キャッシュ18,20内に存在させることを許容する。繰り返すが、この図1に示す構成は単なる例であり、他のシステムは他の構成又は他の数のキャッシュレベルを有してもよい。
パイプライン10が実行する命令によって仮想アドレスが指定されると同時に、少なくともメモリシステムのメモリ16が物理アドレスを用いてデータを特定する(キャッシュ18,20,22を物理的にアドレス指定してよく、又は仮想的にアドレス指定してもよい)。これにより、同じ仮想アドレスで書き込まれたプログラムを、異なる範囲の物理アドレスにマッピングする各プログラムに使用される仮想アドレスと共存させることができる。メモリ管理ユニット(MMU)24が、仮想アドレスを物理アドレスへと変換するために設けられている。メモリ管理ユニット24は、幾つかの変換エントリ26を含むテーブルを含む。各変換エントリ26は、仮想ページアドレス(VPA)と、対応する物理ページアドレス(PPA)と、アドレス空間の対応するページ用のアクセス許可を定義するデータ27とを特定する。MMU24は、異なる仮想‐物理アドレスマッピング、又は異なるプログラム若しくはコンテキストへの許可を提供するために、場合によって、各プログラム若しくはコンテキストに対して複数のテーブルを保持してもよいし、又は、プログラム若しくはコンテキストの変更がある場合にテーブル内の異なるエントリにロードしてもよい。MMU24は、仮想アドレスを指定するロード/ストア命令又は他の命令がロード/ストアユニット14によって実行された場合、アクセス許可27を確認してアクセスが許可されているかどうかを判断する。許可されている場合、MMU24は、命令によって指定された仮想ページアドレスに対応する物理ページアドレス26を返送する。そして、この物理ページアドレスをキャッシュ又はメモリへのアクセスを実行するのに用いることができる。
例えば、図4は、MMU24が実行するアドレス変換の一例を示す。プロセッサ4が実行するソフトウェアから見える仮想アドレス空間が、同じ仮想ページアドレス29を共有する特定の範囲の仮想アドレスにそれぞれ対応する幾つかの仮想ページ28を含む。図4の下部に示すように、仮想ページアドレス29は仮想アドレスの上位桁部分に対応する。仮想アドレスの下位桁部分が、ページ28内の特定のアドレスを指定するページオフセット30を特定する。仮想ページアドレス29及びページオフセット30のそれぞれに対して異なる数のビットを提供することで異なるページサイズを実現することができる。これに対して、メモリシステムは、幾つかの物理ページ31を備える物理アドレス空間内のアドレスを用いる。MMU24は、仮想アドレスを物理アドレスへと変換するために、仮想ページアドレス29に対応する変換テーブルのエントリ26を探索し、対応する物理ページアドレス32を返送する。しかし、アドレスのページオフセット30は変更されないままである。従って、図4に示すように、この変換によって、アドレス仮想ページが、対応するアドレス物理ページに効率的にマッピングされる。「ページ」は変換テーブルがアドレス変換を行う粒度を指す。MMU24が特定の数のページ用のエントリのための空間のみを有してもよい場合もある。プロセッサ4がテーブル内にページエントリが無いアドレスにアクセスした場合、例えばページテーブルウォークを実行することで、メモリ16又は更なるページテーブルからエントリをロードすることができる。
図2は、図1に示すキャッシュ18,20,22のいずれにもなり得るキャッシュ34の一例を示す。このキャッシュは、キャッシュライン35として知られる幾つかのストレージロケーションを含んでもよい。この例では、各キャッシュライン35はデータ値36(命令キャッシュ18の場合には命令であってもよい)と、タグ値37と、そのキャッシュライン内のデータがクリーンかダーティかを示すダーティフラグ38と、そのキャッシュライン内のデータが有効か無効かを示す有効フラグ39とを格納する。この例では、キャッシュはセットアソシアティブ(set−associative)構造を有する(ただし、フルアソシアティブ又はダイレクトマッピングされたキャッシュを設けることもできることは理解されよう)。これは、各データ値が、データ値のアドレスに基づいて選択されたキャッシュ内のキャッシュライン35の対応するセット42の1つに配置されてもよいが、他のキャッシュライン35内に配置することはできないことを意味する。この例では、キャッシュ34は2ウェイセットアソシアティブであり、他のキャッシュがより強いアソシアティビティ(associativity:連想性)を有していても、各データ値を配置できる可能なロケーションが2つあることを意味する。各物理アドレスは、対応するキャッシュラインセット42を選択するのに用いられるインデックス部40を含み、データ36が特定のキャッシュライン35に格納されると、アドレスのタグ部41がそのキャッシュライン35のタグ値37として記録され、どのデータ値がそのキャッシュライン35に格納されたかが特定される。キャッシュから特定のアドレスを検索する場合、アドレスタグ部41と、対応するセット42の各キャッシュライン35のタグ37とを比較し、要求されたデータがキャッシュに格納されているかどうかを確認する。データがまだ格納されておらず、対応するキャッシュラインセット42の1つが有する有効フラグ39が無効データを示す場合、このキャッシュラインを、要求されたデータを格納するように割り当てることができ、データが上位キャッシュ又はメモリから取得されると、その新たに割り当てられたキャッシュラインに配置される。無効データを含むスペアキャッシュラインが無い場合、何らかの既知のヴィクティム選択ポリシー(例えば、ラウンドロビン、最も長く使用されていない(least recently used)等)を用いてヴィクティムキャッシュラインを選択することができ、ヴィクティムキャッシュラインから有効データを追い出すことができる。そして、ダーティフラグ38がデータをダーティであると示した場合、新たなデータに譲るために、そのデータは上位キャッシュ又はメモリにライトバックされる。一部のキャッシュでは、図2に示す情報に加えて、例えばデータのコヒーレンシ状態を示すものや、データがセキュアであるか、非セキュアであるかを示すフラグといった他の情報を格納してもよいことが理解されよう。
キャッシュ保守操作はキャッシュ内のデータに対して実行されてもよい。例えば、キャッシュ保守操作によって、異なるレベルのキャッシュ間又はキャッシュとメモリとの間の一貫性を確保してもよい。幾つかの異なる種類のキャッシュ保守操作がサポートされてもよく、これには、例えば、1つ以上のキャッシュライン内の任意のダーティデータ値をメモリ又は上位キャッシュに書き込むクリーニング操作と、1つ以上のキャッシュラインを無効とマークして再利用できるようにする(それらのキャッシュライン内の全てのダーティデータを破壊する)無効化操作と、それらのキャッシュラインを無効化する前に、選択されたキャッシュラインからメモリにダーティデータをライトバックするクリーニング・無効化操作と、キャッシュラインを所定の値(例えば0)に設定する設定操作とが含まれる。設定操作は、所定の値を任意の上位キャッシュ又はメモリにライトバックする場合もある。
キャッシュ保守操作を実行すべきキャッシュラインを特定する方法は他にもあり、例えば以下のものがある。
キャッシュ全体に対する操作
キャッシュ保守操作が特定のキャッシュ内の全てのロケーションに対して行われる。これは、命令キャッシュデータは読み出し専用であることが多く安全且つ小さな単位で消去できるため、典型的には命令キャッシュのみに対して行われてもよい。
キャッシュラインによる操作
キャッシュ保守操作が、キャッシュ保守命令によって指定された1つのキャッシュラインに対して行われる。キャッシュラインによる操作は、マルチプロセッサコヒーレントメモリシステムがMESI等のコヒーレンシプロトコル内に直接組み込まれていることから、マルチプロセッサコヒーレントメモリシステムにおいて好ましい場合が多い。キャッシュラインによる操作では、キャッシュラインを特定するのに幾つかの手段がある。
セット/ウェイ(Set/Way)‐キャッシュ構造内の物理ラインに対する操作。
セット‐ウェイ操作は典型的には、キャッシュ全体に対する操作を繰り返すためにソフトウェアによって使用される。マルチプロセッサコヒーレントシステムでは、この処理の間にキャッシュラインが自動的に変更されないことを確実なものとするために、コヒーレンシレジームからキャッシュを除去する必要がある場合がある。これらのキャッシュクリーニング操作はCPU初期化及びシャットダウン(電力管理)コードパス中に優先的に用いられるが他の目的に用いられてもよい。
VA(仮想アドレス)‐単一の仮想アドレスを指定する命令に応答して、仮想アドレスを物理アドレスに変換することで判定された、物理的にアドレス指定された単一のキャッシュラインに対する操作。VA操作は、コヒーレント共有仮想メモリのコンテキスト内で用いられ、コヒーレンシシステムの全てのエージェントがメモリに対する全ての変化を正しく確実に観測できるようにする。
本技術によれば、これらの種類のキャッシュ保守操作に加えて、又はそれに代えて、アドレスの仮想ページ28全体に対してキャッシュ保守操作を実行すべきだと指定する能力も提供する。図3に示すように、キャッシュ保守命令50は、キャッシュ保守が行われる仮想ページ28を特定する仮想ページアドレス52を指定してもよい。命令50に応答して、処理回路6はキャッシュ18,20,22のいずれか1つ又は複数を作動させ、データの物理ページが、命令によって指定された仮想ページアドレス52が特定した仮想ページに対応する物理ページにある、任意のキャッシュラインに対してキャッシュ保守操作を実行してもよい。図3に示すように、仮想アドレスに基づいたキャッシュ保守命令50は、実行される操作の種類を特定するオペコード54と、使用される特定のページサイズを特定するページサイズパラメータ56と、操作が行われる仮想ページを指定する仮想ページアドレス52とを含む。ページサイズ56は、ページサイズを指定する即値を含んでもよいし、或いは、ページサイズ値又は仮想ページアドレス52を格納しているレジスタ8を参照してもよい。ページサイズ56は、代わりに命令オペコード54の一部として示されてもよい。仮想ページアドレス52について、命令は、仮想ページアドレスを格納しているレジスタを特定するレジスタ指定子を備えてもよい。(ページサイズに応じて)命令の符号化内にページアドレスを収めることができる実施例ではページアドレスを即値として符号化することもできる。しかしながら、仮想ページアドレスは、フィールド52を指定するアドレスを符号化する命令において使用可能な空間よりも大きいことが多いため、その場合はレジスタ指定子を使用してもよい。
これにより、キャッシュラインではなく、仮想的にアドレス指定されたページの全体に対して働く、クラス全体のキャッシュ保守操作を提供することができる。以下の表に、提供され得る操作の幾つかの例を記載する。

左側の列は、キャッシュ保守が提供される単一の仮想アドレス(VA)を指定する命令を示す。次の3列は、それぞれの異なるページサイズに対応する命令を示し、各命令によって仮想ページアドレスを指定してそのページ内の各アドレスに対してキャッシュ保守を開始する。最後の列には実行されるキャッシュ保守操作が記載されている。
統一時点、コヒーレンシ時点及び内部共有可能時点は、クリーニング操作又は無効化操作が実行されるメモリシステムのレベルを指す。一部の操作では、キャッシュ階層の特定のレベルのデータがコヒーレントになる必要があるのみであるが、他の操作では、メモリまでの、より深いコヒーレンシを要求する場合がある。統一時点、コヒーレンシ時点及び内部共有可能時点は、例えば、コヒーレンシが実施される時点の幾つかの構成を可能にするために、制御レジスタ内の制御パラメータによって定義してもよい。
特定の仮想アドレスに対するコヒーレンシ時点は、メモリにアクセスできる全てのエージェントがメモリロケーションの同じコピーを見ることが保証されている時点のことである。これは、事実上は主要なシステムメモリであることが多いが、他のシステムでは、メモリシステムエージェント間のコヒーレンスに影響しないコヒーレンシ時点を越えたキャッシュを実装する場合もある。この場合、コヒーレンシ時点はキャッシュであってもよい。コヒーレンシ時点は、上記のコヒーレンシ時点キャッシュ保守命令の1つに応答してクリーニング又は無効化されるキャッシュ/メモリの最終レベルである。
特定の処理要素(プロセッサ4等)に対する統一時点は、その処理要素に対する命令及びデータキャッシュ並びに変換テーブルウォークがメモリロケーションの同じコピーを見ることが保証されている時点である。多くの場合、統一時点は、命令及びデータキャッシュ並びに変換テーブルウォークが結合(merge)したユニプロセッサメモリシステム内の時点であってもよい。統一時点は、上記の統一時点キャッシュ保守命令の1つに応答してクリーニング又は無効化されるキャッシュ又はメモリの最終レベルである。
内部共有可能時点は、マルチプロセッサシステム内の「内部共有可能な共有可能性ドメイン」として指定された処理要素の特定のグループを指すために適用される。そして、内部共有可能時点は、内部共有可能ドメイン内における全ての処理要素の命令及びデータキャッシュ並びに変換テーブルウォークがメモリロケーションの同じコピーを見ることが保証されている時点に対応する。内部共有可能時点は、上記の内部共有可能点命令キャッシュ無効化命令に応答して無効化されるキャッシュの最終レベルである。
仮想ページ全体に対してキャッシュ保守を実行する命令が極めて有効となる、例えば以下のような幾つかのユースケースがある。
非コヒーレントDMA(ダイレクトメモリアクセス)
DMA操作の前後には、メモリバッファ及びキャッシュに一貫性が必要とされることがある。このため、キャッシュを、DMAの前にクリーニングし、DMAが完了した後に無効化しなければならないことがある。現在の現実世界での例としては、OpenCL画像処理用GPUとの間で、各画像フレームのサイズが8メガバイト以内の1080pのHD画像を転送することが挙げられるだろう。全キャッシュよりもバッファの方が数倍大きいため、最悪の場合、いずれのキャッシュにも存在する画像がほとんど無いということがあり得る。単一の仮想アドレスを指定するキャッシュ保守命令では、128K×64バイトのキャッシュライン操作が行われることになる。ページに基づいた操作によって、CPUの作業を桁違いに軽減することができ、キャッシュ及びメモリシステム内のキャッシュ保守が最適化される。使用するページのサイズに応じて、2048×4Kキャッシュページ操作、512×16Kキャッシュページ操作又は128×64Kキャッシュページ操作によって8メガバイトのバッファを処理することができる。
メモリのゼロ充填
セキュリティ上の理由から、多くのオペレーティングシステム及びハイパーバイザが、メモリページをクライアントにマッピングする前にそれらをゼロ充填する。ページに基づきメモリをゼロにする操作は、最終的に、ブロードキャストページの無効化に伴ってメモリ装置内に直接発生し得る。
動的なコードロード
コードがRAMへとロードされる際、命令キャッシュをデータキャッシュ及びメモリと同期しなければならないことがある。VAライン操作によって僅かな更新はできるが、大きな変化によって命令キャッシュ全体が無効化される結果となる。ページ毎に無効化すると、個別に実行するコードからの全体的な命令キャッシュ無効化の影響が取り除かれる。
従って、これらとその他のユースケースにおいて、仮想ページアドレスに基づいたキャッシュ保守命令によって、仮想アドレスに基づいたキャッシュ保守命令又は専用のカスタムフラッシュエンジンに対して、以下の幾つかの利点を提供することができる。
・上位システムソフトウェアの意図がSoCファブリック及び要素に示され、最適な実装が可能となる。
・構築された命令が未来のOSのカーネルコードによって使用され得る。
・指定されたページが必要とするMMU変換及び許可確認が1つのみである。
・細かな(atomic)ページ操作に対してロックや状態追跡の必要がない(メモリの順序付け及びバリアに関して、操作を時間内に完了させなければならないことがある)。
・キャッシュ操作中のオペレーティングシステムのプリエンプション(先取り)が透過的に行われる。
・非同期エラーが無い。
・マルチプロセッサ及びコヒーレントメモリシステム用に設計されている。
・ハードウェア又はファブリックが、キャッシュを一度掃くことにより複数の無効化を完了させて解決することができる(以下の図9参照)。
特定のシステム内で上記の種類のキャッシュ保守命令を実施するには幾つかの選択肢がある。
図5は、ページに基づいたキャッシュ保守操作が、プロセッサ4によって、個別のアドレスに対応する幾つかの個別のマイクロ操作へと分解される第1の例を示す。プロセッサ4は、仮想ページアドレス(VPA)に基づいたキャッシュ保守命令を受信し、MMU24を作動させ、仮想ページアドレスを物理ページアドレス(PPA)へと変換する。プロセッサ4は、ページ操作を、MMUによって特定されたページ内の各物理アドレス(PA0,PA1,…PAN)にそれぞれ対応する幾つかの個別のキャッシュ保守コマンド60へとマッピングする。そして、これらのコマンド60はキャッシュ34に送信される。キャッシュ34は、各コマンド60に応答して、キャッシュにおいて指定された物理アドレスを探索し、一致するキャッシュラインが見つかれば要求されたキャッシュ保守操作を実行する。この方法により、キャッシュ自体が個別のアドレスを指定するコマンドのみを扱える場合でも、VPAキャッシュ保守命令のアーキテクチャ面での提供をサポートすることができる。例えば、CPU内の小型のステートマシンが連続的なキャッシュライン操作を生成することができる。代替として、プロセッサ4は、個別のコマンド60を生成する前にアドレス変換を実行する代わりに、仮想アドレスによって連続的なキャッシュライン操作を生成することができ、これらの操作のそれぞれによってMMU内での変換が開始され、キャッシュに送信される物理アドレスが決定される。
図6は、ページ全体用のコマンドがキャッシュに送信される他の例を示す。この場合、プロセッサ4はVPAを指定するキャッシュ保守命令を実行する。VPAはMMUによってPPAへと変換される。そして、PPAを指定するコマンド62がキャッシュに送信される。その後、キャッシュは、どのキャッシュラインが指定されたページ内の物理アドレスを有するデータを格納しているか判断してもよく、特定された各キャッシュラインへのキャッシュ保守操作を開始することができる。この方法は、図5と比べて幾つかの利点を有する。まず、コマンド帯域幅が減少し、プロセッサとキャッシュ間で送信しなければならないコマンドの数が少なくなる。また、この方法によって、図5のように各アドレスを個別に探索を必要とするのではなく、各キャッシュラインのタグを一度に捜索することで、指定された物理ページアドレス内のデータのいずれかをキャッシュが含んでいるかどうかを特定することが可能になる。これによって、電力消費の軽減及び応答時間の短縮を促進する。
あるいは、図7に示すように、ページ操作を復号化して幾つかの細かなキャッシュマイクロ操作として送信することもできる。例えば、実施によって、64Kページ操作を16個の4K操作へと変化させ、又は4Kページ操作を各64バイトの64個の操作へと変換することができる。こうして、図7では、キャッシュ保守命令は、命令内に指定された仮想ページに対応する物理ページ内の物理アドレス(例えばサブページアドレス)のブロックを指定する幾つかのコマンド64にマッピングされる。そして、各コマンドはキャッシュ34を作動させ、指定されたアドレスブロックに対応するキャッシュラインを特定して、特定されたキャッシュラインに対してキャッシュ保守を実行する。
図5〜7は1つのキャッシュにコマンドを送信する例を示すが、複数のキャッシュを備えるシステムでは、コマンドは各キャッシュ又はキャッシュのサブセットにブロードキャストされてもよく、各キャッシュは、これに応答して、要求されたアドレスへのデータを有するかどうかを確認し、必要な場合にはキャッシュ保守を実行してもよい。
図8は、指定された物理アドレス(PA‐図5)、指定された物理ページアドレス(PPA‐図6)又は指定された物理サブページアドレス(PSPA‐図7)に対応するデータをどのキャッシュラインが格納しているかを判断する方法の例を示す。キャッシュ34は、各キャッシュラインをスキャンし、キャッシュラインのタグ37をコマンド60,62,64内で受信したPA、PPA又はPSPAと比較してもよい。図6及び7の例については、タグにマスク72を適用し、ページアドレス又はサブページアドレスの最下位ビットよりも下位のタグのビットをマスクしてもよい。例えば、どのビットをマスクすべきか特定するのにサイズパラメータを用いてもよい。マスクされたタグが、指定されたアドレス、ページアドレス又はサブページアドレスと一致した場合、ヒット信号が生成され、制御回路70が、ヒットが見つかった任意のラインに対して実行されるキャッシュ保守を開始してもよい。
キャッシュは幾つかのキャッシュ保守コマンドを受信することもある。キャッシュ探索のオーバーヘッドを低減するために、同じ種類のキャッシュ保守操作に対応する複数のコマンドをグループ化して、キャッシュを一度に掃くことで処理されるようにしてもよい。例えば、図9に示すように、各キャッシュラインの(マスクされた)タグ値を、幾つかのキャッシュ保守コマンドのアドレス、ページアドレス又はサブページアドレスと平行に比較してもよく、各コマンドに対するヒット信号をOR演算し、キャッシュ保守操作が、対応するキャッシュラインに対して実行されるべきかどうかを特定してもよい。図9は2つのコマンドの比較を一度に実行する様子を示すが、これを複数分行うこともできることが理解されよう。このようにして、各キャッシュラインを一度探索するだけで2つ以上のキャッシュ保守コマンドを同時に処理することができる。
メモリシステム16は、データゼロ操作といった一部のコマンドを局所的に処理することが可能なメモリ制御部17を含んでよい場合もある。この場合、コマンドはキャッシュの他にメモリにも送信されてもよい。
キャッシュは、特定の速度でのコマンド処理のみが可能であってもよく、キャッシュ保守コマンドを格納する有限バッファのみを有してよい場合もある。従って、プロセッサ4は、何らかの背圧を適用して、キャッシュ又はメモリシステムが処理するよりも速いキャッシュ保守操作の発行を制限してもよい。
図10は、それぞれがキャッシュを有してもよい複数の処理要素を含むデータ処理装置100の他の例を示す。例えば、処理要素は、2つの中央処理装置(CPU)とグラフィック処理装置(GPU)106とを含んでもよく、それぞれは図1に示すプロセッサ4と同様に構成されてもよい。また、この装置は、メモリ制御部108(例えばDMAユニット)と、例えばイーサネットインタフェースといった周辺装置又は外部装置と通信するための入出力ユニット110と、ディスプレイ装置上のデータの表示を制御するディスプレイ制御部112とを含んでもよい。多くの他の種類の装置も接続することができることが理解されよう。各装置はインターコネクトによって接続され、各装置に格納された異なるデータバージョン間のコヒーレンシを維持する。
CPU及びGPUはそれぞれローカルキャッシュ120を有し、インターコネクト114は、キャッシュ120内のデータ間のコヒーレンシを維持するコヒーレンシ制御回路130を含んでもよい。どのデータが各キャッシュ120に格納されているかを追跡するために、インターコネクト114内にスヌープフィルタ132を設けてもよい。処理要素の1つが特定のアドレスに対してアクセスを開始した場合、スヌープフィルタ132は、他のキャッシュのいずれかがそのアドレス用のデータを格納していないかどうかを判断できる。そして、他のキャッシュのいずれかがそのアドレス用のデータを格納していた場合、スヌープフィルタ132は、他のキャッシュ内のデータのコヒーレンシ状態を確認するスヌープ操作を開始する。コヒーレンシを維持するのに、例えばARM(登録商標)社が提供するAMBA(登録商標)ACEプロトコルといった、任意の既知のコヒーレンシプロトコルを用いてもよい。
上記のように、仮想ページアドレスによって特定されるキャッシュ保守操作を実行する場合、スヌープフィルタ132は必要なキャッシュ検索の量を減少させるのに有効となり得る。通常、キャッシュ保守操作は、発行されるとコヒーレントファブリックを通してブロードキャストされることで、データが格納されているであろうどのキャッシュにおいても、データがクリーニング又は無効化される。しかしながら、ページサイズは比較的大きくキャッシュは比較的小さいことが多いため、合理的にみて、特定のキャッシュが、命令内に指定されたページからのデータを格納していないという可能性がある。検索のオーバーヘッドを低減するように、各キャッシュにキャッシュ保守コマンドを転送する必要があるかどうかを判断するためにスヌープフィルタ132を用いることができる。これにより、指定されたページからのデータを格納していると特定されたキャッシュのみを探索する。コヒーレンシ制御部130は、スヌープフィルタ132内でそのページからのデータを格納していると示されていないキャッシュにキャッシュ保守コマンドを送信するのを防止してもよい。これにより、コマンドを送信及び追跡するのに伴う帯域幅及び制御オーバーヘッド、並びに、要求されたデータを保持しているかどうかを判断するためにキャッシュを検索するときのオーバーヘッドを低減できる。
図11はデータ処理の方法を示す。ステップ200において、処理回路は、仮想ページアドレスを指定するキャッシュ保守命令が発生したかどうかを判断する。発生していた場合、ステップ202において、MMU24が仮想ページアドレスを物理ページの物理ページアドレスへと変換する。ステップ204において、1つ以上のキャッシュ保守コマンドが、その物理ページ内のアドレス用のキャッシュに対して発行される(これは図5〜7に示す例のいずれでも行うことができる)。ステップ206において、キャッシュは、キャッシュ保守命令に指定された仮想ページアドレスに対応する物理ページに存在する物理アドレスを有するデータを格納していると特定された任意のキャッシュラインに対して、キャッシュ保守を実行する。
本願では、用語「〜するように構成された」は、装置の要素が、定義された操作を行うことが可能な構成を有することを意味するために用いている。このコンテキストでは、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は様態を意味する。例えば、装置は、定義された操作を提供する専用のハードウェアを有してもよいし、又は、プロセッサ又は他の処理装置が機能を実行するようにプログラムされてもよい。「〜するように構成された」は、装置要素が定義された操作を提供するために何らかの方法で変更する必要があることを意味するものではない。
本明細書では本発明の例示的な実施例を添付の図面を参照しながら詳細に説明してきたが、本発明はこれらの厳密な実施例に限定されるものではなく、添付の請求項によって定義される、本発明の範囲及び精神を逸脱しない範囲で、当業者によって様々な変更と変形をもたらすことができると理解すべきである。

Claims (15)

  1. 命令に応答してデータ処理を実行する処理回路と、
    メモリからデータのキャッシュデータを格納するための少なくとも1つキャッシュと、を備え、
    前記処理回路が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、前記仮想ページアドレスによって特定された前記仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する1つ以上のキャッシュラインに対し、キャッシュ保守操作を実行し、
    前記キャッシュラインによって記憶されたデータの前記物理アドレスは、キャッシュデータである前記キャッシュラインに記憶されたデータに対して対応するデータが記憶される前記メモリにおける物理アドレスであり、
    前記キャッシュ保守命令が複数の仮想ページサイズの1つを指定し、前記処理回路が、前記キャッシュ保守命令に応答して、前記少なくとも1つのキャッシュを作動させて、前記キャッシュ保守命令によって指定された前記仮想ページサイズを有する前記仮想ページに対して前記キャッシュ保守操作を実行する
    装置。
  2. 前記キャッシュ保守操作が、
    前記1つ以上のキャッシュラインに格納されているダーティデータを少なくとも1つの更なるデータストアに書き込むクリーニング操作、
    前記1つ以上のキャッシュラインに格納されている前記データを無効化する無効化操作、
    前記1つ以上のキャッシュラインに格納されているダーティデータを少なくとも1つの更なるデータストアに書き込み、前記1つ以上のキャッシュラインに格納されている前記データを無効化するクリーニング・無効化操作、及び
    前記1つ以上のキャッシュラインに格納されている前記データを所定値に設定する設定操作
    の1つを備える、請求項1に記載の装置。
  3. 前記仮想ページアドレスを前記物理ページの物理ページアドレスへと変換する変換回路を備える、請求項1又は2に記載の装置。
  4. 前記変換回路が複数の変換エントリを備え、
    各変換エントリが仮想ページアドレスに対応し、その仮想ページアドレスに対応する物理ページアドレスを特定する、請求項3に記載の装置。
  5. 前記処理回路が、前記キャッシュ保守命令に応答して、前記少なくとも1つのキャッシュに対する複数のキャッシュ保守コマンドの発行を開始するように構成され、
    各キャッシュ保守コマンドが、前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の物理アドレスを指定し、
    各キャッシュ保守コマンドが、前記指定された物理アドレスを有するデータを格納しているキャッシュラインに対して前記キャッシュ保守操作を実行するように前記少なくとも1つのキャッシュを制御するためのものである、請求項1〜4のいずれか一項に記載の装置。
  6. 前記処理回路が、前記キャッシュ保守命令に応答して、前記少なくとも1つのキャッシュに対する少なくとも1つのキャッシュ保守コマンドの発行を開始するように構成され、
    各キャッシュ保守コマンドが、前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の物理アドレスブロックを指定する、請求項1〜4のいずれか一項に記載の装置。
  7. 前記処理回路が、少なくとも幾つかのキャッシュ保守命令について、前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の異なる物理アドレスブロックにそれぞれが対応する複数の前記キャッシュ保守コマンドの発行を開始するように構成される、請求項6に記載の装置。
  8. 前記少なくとも1つのキャッシュが、前記キャッシュ保守コマンドに応答して、前記キャッシュ保守コマンドによって指定された前記ブロック内の物理アドレス用のデータをどのキャッシュラインが格納しているかを特定し、その特定されたキャッシュラインに対して前記キャッシュ保守操作を実行する、請求項5に従属する場合の請求項6又は7に記載の装置。
  9. 前記少なくとも1つのキャッシュが、複数のキャッシュラインのそれぞれについて、前記キャッシュ保守コマンドによって指定された前記ブロック内の物理アドレス用のデータを前記キャッシュラインが格納しているかどうかを確認するように構成された、請求項8に記載の装置。
  10. 前記少なくとも1つのキャッシュが、複数の前記キャッシュ保守コマンドに応答して、複数のキャッシュラインのそれぞれについて、前記複数のキャッシュ保守コマンドによって指定された前記物理アドレスブロックのいずれかに存在する物理アドレス用のデータを前記キャッシュラインが格納しているかどうかを確認するように構成された、請求項8又は9に記載の装置。
  11. 複数のキャッシュを備え、
    前記処理回路が、前記キャッシュ保守命令に応答して、前記複数のキャッシュの少なくとも幾つかを作動させ、前記キャッシュ保守操作を実行する、請求項1〜10のいずれか一項に記載の装置。
  12. 対応する物理アドレス用のデータをどのキャッシュが格納しているかを特定するデータを格納するスヌープフィルタであって、前記キャッシュ保守命令に応答して、前記キャッシュ保守命令によって指定された前記仮想ページアドレスによって特定された前記仮想ページに対応する前記物理ページ内の物理アドレス用のデータを格納している1つ以上のキャッシュを特定するスヌープフィルタと、
    前記スヌープフィルタによって特定された前記1つ以上のキャッシュ以外のキャッシュに対してキャッシュ保守コマンドが送信されるのを防止するように構成された制御回路とを備える、請求項11に記載の装置。
  13. 前記処理回路が、少なくとも幾つかのキャッシュ保守命令に応答して、少なくとも1つのメモリを制御するメモリ制御部に対してコマンドを送信し、
    前記メモリ制御部が、前記コマンドに応答して、前記少なくとも1つのキャッシュによる前記キャッシュ保守操作の実行を制御する、請求項1〜12のいずれか一項に記載の装置。
  14. 命令に応答してデータ処理を実行する処理手段と、
    メモリからデータのキャッシュデータを格納する手段と、を備え、
    前記処理手段が、仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、前記仮想ページアドレスによって特定された前記仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する1つ以上のキャッシュラインに対して、キャッシュ保守操作を実行し、
    前記キャッシュラインによって記憶されたデータの前記物理アドレスは、キャッシュデータである前記キャッシュラインに記憶されたデータに対して対応するデータが記憶される前記メモリにおける物理アドレスであり、
    前記キャッシュ保守命令が複数の仮想ページサイズの1つを指定し、前記処理手段が、前記キャッシュ保守命令に応答して、前記少なくとも1つのキャッシュを作動させて、前記キャッシュ保守命令によって指定された前記仮想ページサイズを有する前記仮想ページを用いて前記キャッシュ保守操作を実行する
    装置。
  15. 仮想アドレス空間の仮想ページを特定する仮想ページアドレスを指定するキャッシュ保守命令を受信することと、
    前記キャッシュ保守命令に応答して、少なくとも1つのキャッシュを作動させて、前記仮想ページアドレスによって特定された前記仮想ページに対応する物理ページ内に、キャッシュラインに記憶されたデータの物理アドレスが存在する1つ以上のキャッシュラインに対して、キャッシュ保守操作を実行することとを含み、
    前記キャッシュラインによって記憶されたデータの前記物理アドレスは、キャッシュデータである前記キャッシュラインに記憶されたデータに対して対応するデータが記憶されるメモリにおける物理アドレスであり、
    前記キャッシュ保守命令が複数の仮想ページサイズの1つを指定し、前記キャッシュ保守命令に応答して、前記少なくとも1つのキャッシュを作動させることで、前記キャッシュ保守命令によって指定された前記仮想ページサイズを有する前記仮想ページを用いて前記キャッシュ保守操作を実行する
    データ処理方法。
JP2017545291A 2015-03-03 2016-01-12 キャッシュ保守命令 Active JP6831788B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1503580.1 2015-03-03
GB1503580.1A GB2536205A (en) 2015-03-03 2015-03-03 Cache maintenance instruction
PCT/GB2016/050064 WO2016139444A1 (en) 2015-03-03 2016-01-12 Cache maintenance instruction

Publications (2)

Publication Number Publication Date
JP2018511120A JP2018511120A (ja) 2018-04-19
JP6831788B2 true JP6831788B2 (ja) 2021-02-17

Family

ID=52876431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017545291A Active JP6831788B2 (ja) 2015-03-03 2016-01-12 キャッシュ保守命令

Country Status (7)

Country Link
US (1) US11144458B2 (ja)
EP (1) EP3265917B1 (ja)
JP (1) JP6831788B2 (ja)
KR (1) KR102531261B1 (ja)
CN (1) CN107278298B (ja)
GB (1) GB2536205A (ja)
WO (1) WO2016139444A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898226B2 (en) 2015-10-28 2018-02-20 International Business Machines Corporation Reducing page invalidation broadcasts in virtual storage management
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
US11687460B2 (en) * 2017-04-26 2023-06-27 Advanced Micro Devices, Inc. Network cache injection for coherent GPUs
US10831673B2 (en) * 2017-11-22 2020-11-10 Arm Limited Memory address translation
GB2571539B (en) * 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
CN109308270B (zh) * 2018-09-04 2021-07-23 飞腾技术(长沙)有限公司 一种加速虚实地址转换的方法及装置
US10656881B1 (en) * 2018-11-21 2020-05-19 Kyocera Document Solutions Inc. System for printing a document using a PDF converter based on page size value
CN109684238A (zh) * 2018-12-19 2019-04-26 湖南国科微电子股份有限公司 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘
US11055250B2 (en) * 2019-10-04 2021-07-06 Arm Limited Non-forwardable transfers
CN112764668A (zh) * 2019-11-01 2021-05-07 伊姆西Ip控股有限责任公司 扩展gpu存储器的方法、电子设备和计算机程序产品
US11681624B2 (en) * 2020-07-17 2023-06-20 Qualcomm Incorporated Space and time cache coherency
US11960403B2 (en) * 2022-08-30 2024-04-16 Micron Technology, Inc. Variable execution time atomic operations

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03231345A (ja) 1990-02-06 1991-10-15 Fujitsu Ltd キャッシュ装置
US6978357B1 (en) * 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
JP2001134490A (ja) 1999-11-01 2001-05-18 Fujitsu Ltd キャッシュメモリの制御方法及びその方法を実現する計算機
EP1182566B1 (en) * 2000-08-21 2013-05-15 Texas Instruments France Cache operation based on range of addresses
US6757784B2 (en) 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
US7000081B2 (en) * 2002-02-12 2006-02-14 Ip-First, Llc Write back and invalidate mechanism for multiple cache lines
US20070005932A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
US7802055B2 (en) 2006-04-19 2010-09-21 Qualcomm Incorporated Virtually-tagged instruction cache with physically-tagged behavior
US20090019232A1 (en) * 2007-07-11 2009-01-15 Freescale Semiconductor, Inc. Specification of coherence domain during address translation
US20090083496A1 (en) * 2007-09-26 2009-03-26 Stevens Jr David L Method for Improved Performance With New Buffers on NUMA Systems
JP2009140376A (ja) 2007-12-10 2009-06-25 Hitachi Ltd 特定アドレス範囲に分割されたスヌープフィルタを持つマルチプロセッサコンピュータシステム
US8392663B2 (en) * 2007-12-12 2013-03-05 Mips Technologies, Inc. Coherent instruction cache utilizing cache-op execution resources
CN101615133A (zh) * 2008-06-27 2009-12-30 国际商业机器公司 用于细粒度延迟写拷贝的装置和方法
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8214598B2 (en) 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
CN101944068A (zh) * 2010-08-23 2011-01-12 中国科学技术大学苏州研究院 一种共享高速缓存的性能优化方法
US9684601B2 (en) * 2012-05-10 2017-06-20 Arm Limited Data processing apparatus having cache and translation lookaside buffer
US9069684B2 (en) * 2012-07-16 2015-06-30 Nvidia Corporation System, method, and computer program product for invalidatng cache lines
US9208102B2 (en) * 2013-01-15 2015-12-08 Qualcomm Incorporated Overlap checking for a translation lookaside buffer (TLB)
GB2516477A (en) * 2013-07-24 2015-01-28 Ibm Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure
CN104346295B (zh) * 2013-08-09 2017-08-11 华为技术有限公司 一种缓存刷新方法和装置
CN103455443B (zh) 2013-09-04 2017-01-18 华为技术有限公司 一种缓存管理方法和装置
US20170192886A1 (en) * 2014-07-31 2017-07-06 Hewlett Packard Enterprise Development Lp Cache management for nonvolatile main memory

Also Published As

Publication number Publication date
EP3265917B1 (en) 2021-05-19
CN107278298A (zh) 2017-10-20
GB2536205A (en) 2016-09-14
US11144458B2 (en) 2021-10-12
US20180032435A1 (en) 2018-02-01
CN107278298B (zh) 2021-10-22
KR102531261B1 (ko) 2023-05-11
KR20170120635A (ko) 2017-10-31
JP2018511120A (ja) 2018-04-19
WO2016139444A1 (en) 2016-09-09
EP3265917A1 (en) 2018-01-10
GB201503580D0 (en) 2015-04-15

Similar Documents

Publication Publication Date Title
JP6831788B2 (ja) キャッシュ保守命令
US9081711B2 (en) Virtual address cache memory, processor and multiprocessor
US8949572B2 (en) Effective address cache memory, processor and effective address caching method
US10552339B2 (en) Dynamically adapting mechanism for translation lookaside buffer shootdowns
EP2430551B1 (en) Cache coherent support for flash in a memory hierarchy
KR101313710B1 (ko) 스누프 요청 캐시를 사용하는 스누프 필터링
JP5414912B2 (ja) キャッシュコヒーレンシ制御の方法、システムおよびプログラム
US20120137079A1 (en) Cache coherency control method, system, and program
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
US20050005074A1 (en) Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
JP2012522290A (ja) キャッシュにおけるウエイ割り当て及びウエイロックのための方法
GB2507759A (en) Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
CN113892090A (zh) 多级高速缓存安全性
US20040117591A1 (en) Data processing system having no system memory
JP5587539B2 (ja) ローカルメモリデータのコヒーレントなキャッシュ処理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191029

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191029

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200129

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201215

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: 20210106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210129

R150 Certificate of patent or registration of utility model

Ref document number: 6831788

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250