JP2012530979A - 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置 - Google Patents

所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置 Download PDF

Info

Publication number
JP2012530979A
JP2012530979A JP2012516395A JP2012516395A JP2012530979A JP 2012530979 A JP2012530979 A JP 2012530979A JP 2012516395 A JP2012516395 A JP 2012516395A JP 2012516395 A JP2012516395 A JP 2012516395A JP 2012530979 A JP2012530979 A JP 2012530979A
Authority
JP
Japan
Prior art keywords
instruction
register
cache
address
tlb
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012516395A
Other languages
English (en)
Inventor
ジー. ディクソン、マーティン
ディー. ロジャーズ、スコット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2012530979A publication Critical patent/JP2012530979A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【解決手段】 複数のキャッシュラインのフラッシュ、および/または、複数のトランスレーション・ルックアサイド・バッファ(TLB)エントリの無効化を実行するシステム、方法および装置を記載する。このような方法の1つでは、プロセッサの複数のキャッシュラインをフラッシュするべく、プロセッサの複数のキャッシュラインをフラッシュする旨を示す第1のフィールドを含む単一の命令に応じて、プロセッサの複数のキャッシュラインをフラッシュする。
【選択図】 図1

Description

本発明の実施形態は、概して情報処理に関し、具体的にはキャッシュおよびトランスレーション・ルックアサイド・バッファ(TLB)の維持に関する。
キャッシュメモリデバイスは、小型で高速なメモリであって、最もアクセス頻度が高いデータをより大型で低速なメモリから保持するために利用可能なメモリである。ランダムアクセスメモリ(RAM)は、比較的低コストで大きな格納容量を実現している。しかし、RAMへのアクセス速度は、今日のマイクロプロセッサの処理速度に比べると、遅い。キャッシュメモリは、格納容量が比較的小さいものの、格納しているデータへの高速アクセスが可能である。
キャッシュは、所与の時点において最も必要性が高いと思われる命令、変換、またはデータを格納しているように、さまざまな手法で管理される。アクセスした場合にキャッシュが要求されたデータを持っている場合、キャッシュ「ヒット」となる。一方、キャッシュが要求されたデータを持っていない場合、キャッシュ「ミス」となる。このため、キャッシュの格納内容は通常、キャッシュのヒット対ミスの比率を最大限まで高めるように管理される。
デバイスおよびオペレーティングシステムは、維持手順の一環として、キャッシュからデータページを、TLBからエントリをフラッシュすることを所望する。
本発明の実施形態を、添付図面において本発明を限定するものではなく例示するものとして図示する。添付図面では、同様の参照番号は同様の構成要素を意味する。添付図面は以下の通りである。
所与の範囲のキャッシュラインのキャッシュフラッシュおよび/または所与の範囲のTLBエントリの無効化をサポートしているプロセッサコアの実施形態を示す図である。 REP CLFLUSH命令の実施形態例を幾つか説明するための図である。 REP CLFLUSH命令の実施形態を処理するための方法の実施形態を示すフローチャートである。 REP CLFLUSH(繰り返しキャッシュラインフラッシュ:repeat cache line flush)命令の実行の実施形態を示す図である。 REP INVLPG命令の実施形態例を幾つか示す図である。 REP INVLPG命令の実施形態を処理する方法の実施形態を説明するためのフローチャートである。 REP INVLPG命令の実行の実施形態を示す図である。 適切なコンピュータシステムの実施形態例を示すブロック図である。 適切なコンピュータシステムの実施形態例を示すブロック図である。 本発明の一実施形態に係るシステムを示すブロック図である。 本発明の一実施形態に係るシステムを示すブロック図である。 本発明の一実施形態に係るシステムを示すブロック図である。
キャッシュラインをフラッシュする方法は、線形メモリアドレスまたは仮想メモリアドレスと対応付けられるとしてよい。当該方法が実行されると、コヒーレンシドメインの全てのキャッシュから、オペランドに対応付けられているキャッシュラインがフラッシュされる。マルチプロセッサ環境では、例えば、プロセッサ状態に応じて、システム(つまり、コヒーレンシドメイン)内の全てのマイクロプロセッサにおいて全てのキャッシュヒエラルキーレベルから特定されたキャッシュラインをフラッシュする。書込無効プロトコルであるMESI(変更、排他、共有、無効)プロトコルは、キャッシュライン毎に、2つのMESIビットで管理される4つの状態のうちいずれか1つの状態を付与する。これら4つの状態は、キャッシュラインが取り得る4つの状態も特定している。プロセッサが「排他」状態または「共有」状態であることが検出されると、フラッシュは、キャッシュラインが無効化されることと同じである。別の例は、プロセッサが「変更」状態にあることが検出されると、真となる。キャッシュコントローラが書き戻しストラテジを実行して、キャッシュヒットについては、プロセッサからのデータをキャッシュに書き込むのみである場合、キャッシュラインの格納内容はメインメモリに移動させる必要があり、キャッシュラインを無効化する。また、一部の実施形態では、GOLSサブプロトコルと同様に、MESIプロトコルおよびMOESIプロトコルを利用する。
<プロセッサコアの一例>
図1は、所与の範囲のキャッシュラインのキャッシュフラッシュおよび/または所与の範囲のTLBエントリの無効化をサポートしているプロセッサコアの実施形態を示す図である。本実施形態は、本発明の実施形態の説明があいまいにならないように、当該プロセッサコアに含まれる側面を必ずしも全て示すものではない。プロセッサコア101は、プロセッサコア101が実行すべき命令をフェッチするフェッチ部103を備える。命令は、キャッシュ、メインメモリ、ハードディスク等の任意のストレージデバイスからフェッチされるとしてよい。プロセッサコア101はさらに、フェッチされた命令をデコードするデコード部105を備える。以下で説明する命令は、このデコード部によってデコードされる。ある実施形態によると、デコード部105は、フェッチされた命令を1以上のマイクロ演算にデコードする。命令とマイクロ演算とのマッピングは、マイクロコードロジック121で実現されるとしてよい。
一部の実施形態によると、プロセッサコア101は、スケジューリング部107を備える。スケジューリング部107は、デコードされた命令(例えば、デコード部105から受信する命令)の格納に対応付けられるさまざまな処理を、当該命令のディスパッチの用意が整うまで、例えば、デコードされた命令のソース値が全て利用可能となるまで、実行する。一実施形態によると、スケジューリング部105は、デコードされた命令を、実行させるべく1以上の実行部109に対してスケジューリングおよび/または発行(ディスパッチ)する。実行部105は、浮動小数点機能部、ALU機能部、メモリ機能部、分岐機能部等のうち1以上を含むとしてよい。このような機能部は、(例えば、デコード部105が)デコードした、および/または、(例えば、スケジューリング部107が)ディスパッチした命令を実行する。また、一部の実施形態によると、実行部109は、アウト・オブ・オーダ方式で命令を実行する。このため、プロセッサコア101は、これらの実施形態ではアウト・オブ・オーダ・プロセッサコアである。他の実施形態によると、実行部109は、イン・オーダで命令を実行する。このような実施形態によると、プロセッサコア101は、イン・オーダ・プロセッサコアである。
プロセッサコア101はさらに、リタイア部111を備えるとしてよい。リタイア部111は、実行された命令をコミット後にリタイアさせる。一部の実施形態では、実行された命令をリタイアさせることで、プロセッサ状態が命令の実行からコミットとなったり、命令によって用いられた物理レジスタの割り当てが解除されたりする。
プロセッサコアはさらに、レジスタ113を備える。このレジスタは、通常のx86レジスタを含むとしてよく、例えば、汎用レジスタ(例えば、EAX、EBC、ECX、EDX)、セグメントレジスタ(例えば、CS、DS、ES、FS、GS、SS)、インデックスレジスタおよびポインタレジスタ(例えば、ESI、EDI、EBP、EIP、ESP)、および、インジケータレジスタ(例えば、EFLAGS)等を含むとしてよい。
プロセッサコア101はさらに、キャッシュ119を備えるとしてよい。このキャッシュは、1以上のレベルを含むとしてよい。キャッシュロジック123は、さまざまな処理を実行してキャッシュ119を維持する。一部の実施形態によると、キャッシュロジック123は、後述する方法の実施形態を実施する1以上のステートマシンを含む。
最後に、プロセッサはさらに、トランスレーション・ルックアサイド・バッファ(TLB)115を備えるとしてよい。TLB115は、ページ・テーブル・エントリを含むスロットを一定数有している。ページ・テーブル・エントリは、仮想アドレスを物理アドレスにマッピングする。
上述した機能部およびロジックは、回路および/またはソフトウェアを任意に組み合わせたものであってよい。
<繰り返しキャッシュラインフラッシュ>
上述したプロセッサコアでキャッシュラインフラッシュ(CLFLUSH)命令が実行されると、ソースオペランドで特定された線形アドレスを含む1つのキャッシュラインが、プロセッサキャッシュヒエラルキーの全てのレベルから無効化される(データおよび命令)。この無効化は、キャッシュコヒーレンシドメイン全体にブロードキャストされる。このラインが、キャッシュヒエラルキーの任意のレベルにおいてメモリと矛盾している(汚れている)場合には、無効化の前にメモリに書き込まれる。ソースオペランドは、バイトメモリ位置である。
CLFLUSH命令は、全ての特権レベルで用いられるとしてよく、CLFLUSHが実行専用セグメントに割り当てられていること以外は、バイトロードに対応付けられている全ての許可確認およびフォールトの影響を受ける。繰り返しキャッシュラインフラッシュ(REP CLFLUSH)命令を以下で説明する。この命令によって、プロセッサコア101は、所定範囲のキャッシュラインをフラッシュする。図2に、REP CLFLUSH命令の複数の実施形態例を示している。図2の(a)には、オペコードのみを含むREP CLFLUSH命令を示す。この命令については、ラインの数およびフラッシュされるラインの少なくとも先頭アドレスが、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスがES:ESIレジスタ対等のセグメント:オフセット対に格納され、および、カウンタ(ライン数)が、ECXレジスタ等の汎用レジスタに格納される。言うまでも無く、これらは例に過ぎず、他のレジスタまたは他の命令オペランドを利用するとしてもよい。
図2の(b)は、オペコードおよび明示的なカウンタ値を含むREP CLFLUSH命令を示している。カウンタ値は、一部の実施形態によると即値であり、他の実施形態ではレジスタに格納されている。この命令においては、フラッシュすべきラインの先頭アドレスは、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスは、ES:ESIレジスタ対等のセグメント:オフセット対に格納されている。言うまでも無く、これは一例に過ぎず、任意のレジスタを利用するとしてよい。例えば、これらに限定されないが、1)任意のセグメントレジスタCS、DS、ES、FS、SSおよびGS、2)汎用レジスタEAX(累算器)、EBX(基底レジスタ)、ECX(カウントレジスタ)、EDX(データレジスタ)、ESI(ソースインデックス)、EDI(デスティネーションインデックス)、EBP(基底ポインタ)、ESP(スタックポインタ)およびこれらの組み合わせを含むとしてよい。
図2の(c)は、オペコードおよび明示的な先頭アドレスを含むREP CLFLUSH命令を図示している。この命令については、フラッシュされるライン数は非明示的に参照される。例えば、一部の実施形態によると、カウンタがECXレジスタ等の汎用レジスタに格納される。言うまでも無く、これは一例に過ぎず、他のレジスタも利用し得る。
図2の(d)は、オペコード、明示的なカウンタ値、および、明示的な先頭アドレスを含むREP CLFLUSH命令を図示している。
図3は、REP CLFLUSH命令の実施形態を処理する方法の実施形態を示すフローチャートである。さまざまな実施形態によると、当該方法は、汎用プロセッサ、特定用途向けプロセッサ(例えば、グラフィクスプロセッサまたはデジタルシグナルプロセッサ)、ハードウェアアクセラレータ(例えば、暗号アクセラレータ)またはその他の種類のロジックデバイスまたは命令処理装置によって実行されるとしてよい。
ステップ301において、REP CLFLUSH命令は、プロセッサまたはその他の命令処理装置で受信される。1以上の実施形態において、REP CLFLUSH命令は、先頭キャッシュラインアドレスと、フラッシュすべきキャッシュラインの数を表している値とを示している。一部の実施形態によると、先頭キャッシュラインアドレスおよびフラッシュすべきキャッシュラインの数を表している値のうち少なくとも一方は、REP CLFLUSH命令に明示的に含まれている。
命令を受信することに応じて、プロセッサは、ステップ303においてREP CLFLUSH命令が示すキャッシュラインをフラッシュする。
図4は、REP CLFLUSH(繰り返しキャッシュラインフラッシュ命令実行方法の実施形態を示す図である。ステップ401において、カウンタ値およびキャッシュラインアドレスがロードされる。カウンタ値は、フラッシュするラインの数に設定されている。キャッシュラインアドレスは、フラッシュするキャッシュラインの範囲の先頭を示す。例えば、一部の実施形態によると、ES:ESIに先頭アドレスをロードして、ECXにカウンタ値をロードする。
上述したようにREP CLFLUSH命令がカウンタおよび/またはアドレス指定について明示的なオペランドを含む他の実施形態では、ステップ401でのロードは異なる方法で行なわれるとしてよい。例えば、REP CLFLUSHがカウンタについて即値を含む場合、REP CLFLUSH命令のデコードに先立ってカウンタ値をレジスタにロードすることはない。
ステップ403において、アプリケーションまたはオペレーティングシステム(OS)は、REP CLFLUSH命令の実行を求めることによって、所定範囲のキャッシュラインのフラッシュを要求する。この命令は少なくとも、フェッチされて、デコードされて、実行される。
一部の実施形態によると、ステップ405において、マイクロコードを呼び出して、この命令をマイクロ演算に変換する。このマイクロ演算は、マイクロコード121等のマイクロコードに格納される。他の実施形態によると、ステップ405ではこの命令を実行するためにステートマシンを呼び出す。例えば、キャッシュロジック123のステートマシン111を呼び出す。命令の実行は、プロセッサコアの実施例によって変わるが、実行部109またはキャッシュロジック123が担当するとしてよい。
407において、キャッシュラインアドレス(REP CLFLUSH命令のデコード前にロードされているか、または、このデコードに組み合わせて参照されている)に対応付けられているキャッシュラインがフラッシュされる。例えば、ES:ESIのキャッシュラインがフラッシュされる。
409において、カウンタ値をデクリメントする。一実施形態によると、このカウンタはECXレジスタに格納されており、当該レジスタをデクリメントする。
411において、カウンタ値がゼロであるか否かを判断する。カウンタ値がゼロでない場合、ステップ413において、フラッシュする次のラインのキャッシュラインアドレスを判断する。一部の実施形態によると、この判断は、設定サイズ(例えば、64ビット)を、直前にフラッシュされたキャッシュラインのアドレスに対する先行キャッシュラインサイズに加算することによって行なう。他の実施形態では、設定サイズ(例えば、64ビット)を、直前にフラッシュされたキャッシュラインのアドレスに対する先行キャッシュラインサイズから減算する。407において、このキャッシュラインをフラッシュする。
カウンタ値がゼロである場合、所定範囲のキャッシュラインが全てフラッシュされており、命令をリタイアさせるとしてよい。
上記の説明ではカウンタ値をデクリメントしているが、他の実施形態では、カウンタをインクリメントして、所定値と比較して適切な数のラインがフラッシュされたか否かを判断する。
<繰り返しページ・テーブル・エントリ無効化>
TLBエントリ無効化(INVLPG)命令が上述のプロセッサコアによって実行されると、ソースオペランドが特定するトランスレーション・ルックアサイド・バッファ(TLB)エントリが無効化される。ソースオペランドは、メモリアドレスである。プロセッサコアは、このアドレスを含むページを特定して、このページのTLBエントリをフラッシュする。
繰り返しTLBエントリ無効化(REP INVLPG)命令を以下で説明する。この命令によって、プロセッサコア101は複数のTLBエントリを無効化する。図5は、REP INVLPG命令の複数の実施形態例を図示している。図5の(a)には、オペコードのみを含むREP INVLPG命令を示す。この命令については、無効化されるTLBエントリの数および無効化されるTLBエントリの少なくとも先頭アドレスが、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスがDS:EDIレジスタ対等のセグメント:オフセット対に格納され、および、カウンタ(エントリ数)が、ECXレジスタ等の汎用レジスタに格納される。言うまでも無く、これは一例に過ぎず、任意のレジスタを利用するとしてよい。例えば、これらに限定されないが、1)任意のセグメントレジスタCS、DS、ES、FS、SSおよびGS、2)汎用レジスタEAX(累算器)、EBX(基底レジスタ)、ECX(カウントレジスタ)、EDX(データレジスタ)、ESI(ソースインデックス)、EDI(デスティネーションインデックス)、EBP(基底ポインタ)、ESP(スタックポインタ)およびこれらの組み合わせを含むとしてよい。
図5の(b)は、オペコードおよび明示的なカウンタ値を含むREP INVLPG命令を示している。カウンタ値は、一部の実施形態によると即値であり、他の実施形態ではレジスタに格納されている。この命令においては、無効化すべきエントリの先頭アドレスは、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスは、DS:EDIレジスタ対等のセグメント:オフセット対に格納されている。言うまでも無く、これは一例に過ぎず、他のレジスタを利用するとしてもしてよい。
図5の(c)は、オペコードおよび明示的な先頭アドレスを含むREP INVLPG命令を図示している。この命令については、無効化されるエントリ数は非明示的に参照される。例えば、一部の実施形態によると、カウンタがECXレジスタ等の汎用レジスタに格納される。言うまでも無く、これは一例に過ぎず、他のレジスタも利用し得る。
図5の(d)は、オペコード、明示的なカウンタ値、および、明示的な先頭アドレスを含むREP INVLPG命令を図示している。
図6は、REP INVLPG命令の実施形態を処理する方法の実施形態を示すフローチャートである。さまざまな実施形態によると、当該方法は、汎用プロセッサ、特定用途向けプロセッサ(例えば、グラフィクスプロセッサまたはデジタルシグナルプロセッサ)、ハードウェアアクセラレータ(例えば、暗号アクセラレータ)またはその他の種類のロジックデバイスまたは命令処理装置によって実行されるとしてよい。
ステップ601において、REP INVLPG命令は、プロセッサまたはその他の命令処理装置で受信される。1以上の実施形態において、REP INVLPG命令は、先頭TLBエントリアドレスと、無効化すべきTLBエントリの数を表している値とを示している。一部の実施形態によると、先頭TLBエントリアドレスおよび無効化すべきTLBエントリの数を表している値のうち少なくとも一方は、REP INVLPG命令に明示的に含まれている。
命令を受信することに応じて、プロセッサは、ステップ603においてREP INVLPG命令が示すTLBエントリを無効化する。
図7は、REP INVLPG命令実行の実施形態を示す図である。ステップ701において、カウンタ値およびTLBエントリアドレスがロードされる。カウンタ値は、無効化するエントリの数に設定されている。TLBエントリアドレスは、無効化するエントリの範囲の先頭を示す。例えば、一部の実施形態によると、DS:EDIに先頭アドレスをロードして、ECXにカウンタ値をロードする。
上述したようにREP INVLPG命令がカウンタおよび/またはアドレス指定について明示的なオペランドを含む他の実施形態では、ステップ401でのロードは異なる方法で行なわれるとしてよい。例えば、REP INVLPGがカウンタについて即値を含む場合、REP INVLPG命令のデコードに先立ってカウンタ値をレジスタにロードすることはない。
ステップ703において、オペレーティングシステム(OS)は、REP INVLPG命令の実行を求めることによって、所定範囲のTLBエントリの無効化を要求する。この命令は少なくとも、フェッチされて、デコードされて、実行される。
一部の実施形態によると、ステップ705において、マイクロコードを呼び出して、この命令をマイクロ演算に変換する。このマイクロ演算は、マイクロコード121等のマイクロコードに格納される。他の実施形態によると、ステップ705ではこの命令を実行するためにステートマシンを呼び出す。例えば、TLBのステートマシンを呼び出す。命令の実行は、プロセッサコアの実施例によって変わるが、実行部109またはTLBが担当するとしてよい。
一部の実施形態によると、REP INVLPG命令は特権命令である。プロセッサが保護モードで実行されている場合、プログラムまたはプロシージャのCPLはこの命令を実行するためには0でなければならない。このような実施形態では、ステップ707において、プロセッサの現在の特権レベル(CPL)が0であるか否かを判断する。CPLが0でない場合、ステップ709においてREP INVLPGは不当な命令である旨が通知され、TLBエントリの無効化は行なわれない。
711において、TLBエントリアドレス(REP INVLPG命令のデコード前にロードされているか、または、このデコードに組み合わせて参照されている)に対応付けられているTLBエントリが無効化される。例えば、DS:EDIのキャッシュラインがフラッシュされる。
711において、カウンタ値をデクリメントする。一実施形態によると、このカウンタはECXレジスタに格納されており、当該レジスタをデクリメントする。
715において、カウンタ値がゼロであるか否かを判断する。カウンタ値がゼロでない場合には、ステップ717において、無効化するTLBエントリを判断する。一部の実施形態によると、この判断は、設定ページサイズ(例えば、4k/2M/1GB)を、直前に無効化されたTLBエントリの先行アドレスに加算することによって行なう。他の実施形態では、設定ページサイズ(例えば、4k/2M/1GB)を、直前に無効化されたTLBエントリの先行アドレスから減算する。ステップ711において、このTLBエントリを無効化する。
カウンタ値がゼロである場合、所定範囲のキャッシュラインが全てフラッシュされており、命令をリタイアさせるとしてよい。
上記の説明ではカウンタ値をデクリメントしているが、他の実施形態では、カウンタをインクリメントして、所定値と比較して適切な数のエントリが無効化されたか否かを判断する。
<システムの例>
図8は、適切なコンピュータシステム801の実施形態例を示すブロック図である。当該コンピュータシステムは、プロセッサ800を備えている。プロセッサは、上述した命令802のうち少なくとも1つを実行可能な実行部806を少なくとも1つ有する。
プロセッサは、バス(例えば、フロントサイドバス)またはその他のインターコネクト880を介して、チップセット881に結合されている。インターコネクトは、プロセッサとシステム内のその他の構成要素との間で、チップセットを介してデータ信号を送信するために用いられるとしてよい。
チップセットは、メモリコントローラハブ(MCH)882として知られているシステムロジックチップを有する。MCHは、フロントサイドバスまたは他のインターコネクト880に結合されている。
メモリ886がMCHに結合されている。さまざまな実施形態によると、メモリはランダムアクセスメモリ(RAM)を含むとしてよい。DRAMは、全てではないが一部のコンピュータシステムで用いられる種類のRAMの一例である。同図に示すように、メモリは、1以上の乗算命令等の命令887、および、データ888を格納するために用いられるとしてよい。
MCHにはさらに、コンポーネントインターコネクト885が結合されている。1以上の実施形態によると、コンポーネントインターコネクトは、1以上のペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)インターフェースを含むとしてよい。コンポーネントインターコネクトによって、チップセットを介して、他のコンポーネントをシステムの残りの部分に結合することが可能となるとしてよい。このようなコンポーネントの一例としては、グラフィクスチップまたはその他のグラフィクスデバイスが挙げられるが、この点は任意であり必須事項ではない。
チップセットはさらに、入出力(I/O)コントローラハブ(ICH)884を有する。ICHは、ハブインターフェースバスまたはその他のインターコネクト883を介して、MCHに結合される。1以上の実施形態によると、バスまたはその他のインターコネクト883は、ダイレクトメディアインターフェース(DMI)を含むとしてよい。
ICHには、データストレージ889が結合されている。さまざまな実施形態によると、データストレージは、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス等、または、これらの組み合わせを含むとしてよい。
ICHにはさらに、第2のコンポーネントインターコネクト890が結合されている。1以上の実施形態によると、第2のコンポーネントインターコネクトは、1以上のペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)インターフェースを含むとしてよい。第2のコンポーネントインターコネクトによって、チップセットを介してシステムの残りの部分に、さまざまな種類のコンポーネントを結合できるようになるとしてよい。
ICHにはさらに、シリアル拡張ポート891が結合されている。1以上の実施形態によると、シリアル拡張ポートは、1以上のユニバーサルシリアルバス(USB)ポートを含むとしてよい。シリアル拡張ポートによって、チップセットを介してシステムの残りの部分に、他のさまざまな種類の入出力デバイスを結合できるようになるとしてよい。
説明のためにICHに任意で結合し得る他のコンポーネントの例を幾つか挙げると、これらに限定されないが、音声コントローラ、無線送受信機、および、ユーザ入力デバイス(例えば、キーボード、マウス)がある。
ICHにはさらに、ネットワークコントローラが結合されている。ネットワークコントローラによって、当該システムをネットワークに結合することができるとしてよい。
1以上の実施形態によると、当該コンピュータシステムは、マイクロソフト・コーポレーション((Microsoft Corporation)、米国ワシントン州レドモンド)社製の所与のバージョンのWINDOWS(登録商標)オペレーティングシステムを実行するとしてよい。これに代えて、他のオペレーティングシステム、例えば、UNIX(登録商標)、Linux(登録商標)または埋込み式システム等を利用するとしてもよい。
これは、適切なコンピュータシステムの具体的な一例に過ぎない。例えば、1以上の別の実施形態によると、プロセッサは複数のコアを含むとしてよい。別の例を挙げると、1以上の別の実施形態では、MCH882は、物理的にプロセッサ800にオンダイで集積化されているとしてよく、プロセッサは集積化されているMCHを介してメモリ886と直接結合されているとしてもよい。別の例を挙げると、1以上の別の実施形態では、他のコンポーネントをプロセッサにオンダイで集積化して、例えば、システム・オン・チップ(SOC)構成とするとしてよい。さらに別の例を挙げると、1以上の別の実施形態では、コンピュータシステムが複数のプロセッサを備えるとしてもよい。
図9は、適切なコンピュータシステム901の実施形態例を示すブロック図である。この第2の実施形態例は、上述した第1の実施形態例に係るコンピュータシステムと一部、共通している点がある。説明を分かりやすくするために、共通点については全てを繰り返し説明せず、相異点に重点を置く。
上述した第1の実施形態例と同様に、当該コンピュータシステムは、プロセッサ900と、I/Oコントローラハブ(ICH)984を有するチップセット981とを備える。さらに第1の実施形態例と同様に、当該コンピュータシステムは、チップセットに結合されている第1のコンポーネントインターコネクト985、ICHに結合されている第2のコンポーネントインターコネクト990、ICHに結合されているシリアル拡張ポート991、ICHに結合されているネットワークコントローラ992、および、ICHに結合されているデータストレージ989を備える。
この第2の実施形態では、プロセッサ900はマルチコアプロセッサである。マルチコアプロセッサは、プロセッサコア994−1から994−Mを有しており、Mは2以上の整数(例えば、2、4、7以上)であってよい。各コアは、本明細書に開示している命令の少なくとも1つの実施形態を実行可能な実行部を少なくとも1つ含むとしてよい。同図に示すように、コア1はキャッシュ995(例えば、L1キャッシュ)を含む。他のコアもそれぞれ同様に、専用キャッシュを含むとしてよい。複数のプロセッサコアは、単一の集積回路(IC)チップで実現されるとしてよい。
プロセッサはさらに、少なくとも1つの共有キャッシュ996を有する。共有キャッシュは、プロセッサの1以上の構成要素、例えば、コアによって利用されるデータ(例えば、命令)を格納するとしてよい。例えば、共有キャッシュは、プロセッサの構成要素が高速でアクセスできるように、メモリ986内に格納されているデータをローカルにキャッシュするとしてよい。1以上の実施形態によると、共有キャッシュは、1以上の中間レベルキャッシュを含むとしてよく、例えば、レベル2(L2)キャッシュ、レベル3(L3)キャッシュ、レベル4(L4)キャッシュまたは他のレベルのキャッシュ、最終レベルキャッシュ(LLC)、および/または、これらの組み合わせを含むとしてよい。
プロセッサコアおよび共有キャッシュはそれぞれ、バスまたはその他のインターコネクト997に結合されている。バスまたはその他のインターコネクトによって、コアおよび共有キャッシュを互いに結合して通信を可能にするとしてよい。
プロセッサはさらに、メモリコントローラハブ(MCH)982を有する。本実施形態例に示すように、MCHはプロセッサ900に集積化される。例えば、MCHは、プロセッサコアと共に、オンダイで集積化されているとしてよい。プロセッサは、MCHを介して、メモリ986に結合されている。1以上の実施形態によると、メモリはDRAMを含むが、これは必須事項ではない。
チップセットは、入出力(I/O)ハブ993を有する。I/Oハブは、バス(例えば、クイックパス(QuickPath)インターコネクト(QPI)またはその他のインターコネクト980)を介してプロセッサに結合される。I/Oハブ993には、第1のコンポーネントインターコネクト985が結合されている。
図10は、本発明の一実施形態に係るシステム10を示すブロック図である。システム1000は、グラフィクスメモリコントローラハブ(GMCH)1020に結合されている1以上の処理要素1010、1015を備えるとしてよい。処理要素1015は任意であるので、その旨を図10では点線で示している。
各処理要素は、単一のコアであってもよいし、または、複数のコアを含むとしてもよい。処理要素は、任意で、処理コア以外のオンダイ要素を含むとしてもよく、例えば、集積化されたメモリコントローラおよび/または集積化されたI/O制御ロジック等を含むとしてもよい。また、少なくとも1つの実施形態については、処理要素であるコアは、コア毎に複数のハードウェアスレッドコンテクストを含むマルチスレッド型であってもよい。
図10は、GMCH1020がメモリ1040に結合されている様子を示している。メモリ1040は、例えば、ダイナミックランダムアクセスメモリ(DRAM)であってよい。DRAMは、少なくとも1つの実施形態については、不揮発性キャッシュに対応付けられているとしてよい。
GMCH1020は、チップセットであってもよいし、または、チップセットの一部分であってもよい。GMCH1020は、プロセッサ1010、1015と通信するとしてよく、プロセッサ1010、1015とメモリ1040との間のやり取りを制御するとしてよい。GMCH1020はさらに、プロセッサ1010、1015と、システム1000のその他の構成要素との間において、加速バスインターフェースとして機能するとしてよい。少なくとも1つの実施形態については、GMCH1020は、フロントサイドバス(FSB)1095等のマルチドロップバスを介して、プロセッサ1010、1015と通信する。
GMCH1020はさらに、ディスプレイ1040(フラットパネルディスプレイ等)に結合されている。GMCH1020は、集積化されたグラフィクスアクセラレータを含むとしてよい。GMCH1020はさらに、入出力(I/O)コントローラハブ(ICH)1050に結合されている。ICH1050は、さまざまな周辺デバイスをシステム1000に結合するために用いられるとしてよい。図10の実施形態に図示しているのは、例えば、外部グラフィクスデバイス1060である。外部グラフィクスデバイス1060は、他の周辺デバイス1070と共に、ICH1050に結合されているディスクリートなグラフィクスデバイスであってよい。
これに代えて、システム1000には、上述したものに加えて、または、上述したものとは異なる処理要素を設けるとしてもよい。例えば、追加で設ける処理要素1015としては、プロセッサ1010と同じプロセッサ、プロセッサ1010とは異種または非対称なプロセッサ、アクセラレータ(例えば、グラフィクスアクセラレータまたはデジタルシグナルプロセッサ(DSP))、フィールドプログラマブルゲートアレイ、または、その他の任意の処理要素を含むとしてよい。物理リソース1010と物理リソース1015との間には、アーキテクチャ特性、マイクロアーキテクチャ特性、熱的特性、消費電力特性等を含む多岐にわたる利点の測定値に関して、さまざまな相違点があるとしてよい。このような相違点によって、処理要素1010と処理要素1015との間の非対称性および異種性が明らかになるとしてよい。少なくとも1つの実施形態について、さまざまな処理要素1010、1015は、同じダイパッケージ内に設けられているとしてよい。
図11には、本発明の実施形態に係るシステム1100のブロック図を示す。図11に示すように、マルチプロセッサシステム1100は、ポイント・ツー・ポイント・インターコネクト・システムであり、ポイント・ツー・ポイント・インターコネクト1150を介して結合されている第1の処理要素1170および第2の処理要素1180を備える。図11に示すように、処理要素1170およびプロセッサ1180はそれぞれ、マルチコアプロセッサであってよく、第1のプロセッサコアおよび第2のプロセッサコア(つまり、プロセッサコア1174aおよび1174b、ならびに、プロセッサコア1184aおよび1184b)を有する。
これに代えて、処理要素1170、1180のうち1以上は、プロセッサ以外の要素であってよく、例えば、アクセラレータまたはフィールドプログラマブルゲートアレイであってよい。
処理要素1170、1180の2つのみを図示しているが、本発明の範囲はこれに限定されないと理解されたい。他の実施形態では、所与のプロセッサに1以上の処理要素を追加で設けるとしてよい。
第1の処理要素1170はさらに、メモリコントローラハブ(MCH)1172、ならびに、ポイント・ツー・ポイント(P−P)インターフェース1176および1178を有するとしてよい。同様に、第2の処理要素1180は、MCH1182、ならびに、P−Pインターフェース1186および1188を有するとしてよい。プロセッサ1170、1180は、ポイント・ツー・ポイント(PtP)インターフェース回路1178、1188を用いて、PtPインターフェース1150を介してデータをやり取りするとしてよい。図11に示すように、MCH1172および1182はそれぞれ、プロセッサを対応するメモリ、つまり、メモリ1142およびメモリ1144に結合する。メモリ1142およびメモリ1144は、メインメモリのうち対応するプロセッサにローカルに取り付けられている一部分であってよい。
プロセッサ1170、1180はそれぞれ、別個のPtPインターフェース1152、1154を介して、ポイント・ツー・ポイント・インターフェース回路1176、1194、1186、1198を用いて、チップセット1190とデータをやり取りするとしてよい。チップセット1190はさらに、高性能グラフィクスインターフェース1139を介して、高性能グラフィクス回路1138とデータをやり取りするとしてよい。本発明の実施形態は、任意の数のプロセッシングコアを含む任意のプロセッサに設けるとしてもよいし、または、図11の各PtPバスエージェントに設けるとしてもよい。一実施形態によると、任意のプロセッサコアは、ローカルキャッシュメモリ(不図示)を含むとしてもよいし、または、ローカルキャッシュメモリに対応付けられているとしてよい。さらに、共有キャッシュ(不図示)が、あるプロセッサが低電力モードになると一方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、一方のプロセッサに含まれているか、両プロセッサの外部に設けられるがp2pインターコネクトを介して両プロセッサに接続されているとしてよい。
第1の処理要素1170および第2の処理要素1180はそれぞれ、P−Pインターコネクト1176、1186および1184を介してチップセット1190に結合されているとしてよい。図11に示すように、チップセット1190は、P−Pインターフェース1194および1198を有する。チップセット1190はさらに、チップセット1190を高性能グラフィクスエンジン1148に結合するインターフェース1192を有する。一実施形態によると、バス1149を用いてグラフィクスエンジン1148をチップセット1190に結合するとしてよい。これに代えて、ポイント・ツー・ポイント・インターコネクト1149を用いて結合するとしてもよい。
また、チップセット1190は、インターフェース1196を介して第1のバス1116に結合されるとしてよい。一実施形態によると、第1のバス1116は、ペリフェラル・コンポーネント・インターコネクト(PCI)バスであってよく、または、PCI Expressバス等のバスあるいは別の第3世代I/Oインターコネクトバスであってもよいが、本発明の範囲はこれに限定されない。
図11に示すように、さまざまなI/Oデバイス1114は、第1のバス1116を第2のバス1120に結合しているバスブリッジ1118と共に、第1のバス1116に結合されているとしてよい。一実施形態によると、第2のバス1120はロー・ピン・カウント(Low Pin Count:LPC)バスであってよい。一実施形態によると、第2のバス1120には、例えば、キーボード/マウス1122、通信デバイス1126、および、コード1130を含むディスクドライブ等の大容量格納装置であるデータ格納部1128を含むさまざまなデバイスが結合されているとしてよい。また、オーディオI/O1124が第2のバス1120に結合されているとしてよい。尚、他のアーキテクチャも可能である。例えば、図11のポイント・ツー・ポイント・アーキテクチャの代わりに、システムはマルチドロップバスまたはその他の同様のアーキテクチャを採用するとしてもよい。
図12には、本発明の一実施形態に係るシステム1200のブロック図を示している。図11および図12では、同様の構成要素に同様の参照番号を割り当てており、図11に示した一部の内容は、図12の内容をあいまいにすることを避けるべく、図12では省略している。
図12では、処理要素1170、1180のそれぞれに、メモリおよびI/Oの制御ロジック(CL)1172および1182が集積化されている実施形態を示している。少なくとも1つの実施形態については、CL1172、1182は、図10および図11に関連付けて上述したもののようなメモリコントローラハブロジック(MCH)を含むとしてよい。また、CL1172、1182はさらに、I/O制御ロジックを含むとしてよい。図12では、CL1172、1182に結合されているのはメモリ1142、1144のみではなく、I/Oデバイス1214もまた制御ロジック1172、1182に結合されている様子を示している。レガシーI/Oデバイス1215は、チップセット1190に結合されている。
本明細書に記載されているメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、または、このような実装方法の組み合わせによって実装され得る。本発明の実施形態は、少なくとも1つのプロセッサ、データストレージシステム(揮発性メモリおよび不揮発性メモリ、ならびに/または、格納要素を含む)、少なくとも1つの入力デバイス、および、少なくとも1つの出力デバイスを備えるプログラム可能なシステムで実行されるコンピュータプログラムとして実現され得る。
図11にコード1130として図示したようなプログラムコードは、本明細書に記載した機能を実行して出力情報を生成するべく、入力データに適用されるとしてよい。したがって、本発明の実施形態はさらに、本発明の実施形態に係る処理を実行するための命令を格納している機械可読媒体、または、本明細書に記載した構造、回路、装置、プロセッサおよび/あるいはシステムの特徴を定義しているHDL等の設計データを格納している機械可読媒体を含む。このような実施形態は、プログラム製品とも呼ばれるとしてよい。
このような機械可読格納媒体は、これらに限定されないが、機械またはデバイスが製造または形成した粒子を具現化して配列したものを含むとしてよい。例えば、ハードディスク等の格納媒体、任意のその他の種類のディスク、例えば、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)および光磁気ディスク、リードオンリーメモリ(ROM)等の半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)等のランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラム可能リードオンリーメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM)、磁気カードあるいは光カード、または、電子的に命令を格納するのに適した任意のその他の種類の媒体を含むとしてよい。
出力情報は、公知の方法で、1以上の出力デバイスに供給されるとしてよい。本願では、処理システムは、プロセッサを備える任意のシステムを含む。プロセッサは、例えば、デジタルシグナルプロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)またはマイクロプロセッサである。
プログラムは、処理システムとの通信を可能とするために高級プロシージャプログラミング言語またはオブジェクト指向型プログラミング言語で実現されるとしてよい。プログラムはさらに、所望の場合には、アセンブリ言語または機械語で実現されるとしてもよい。実際には、本明細書に記載したメカニズムの範囲はどの特定のプログラミング言語にも限定されない。いずれの場合にしても、コンパイラ型言語またはインタプリタ型言語であってよい。
少なくとも1つの実施形態の1以上の側面は、プロセッサが備えるさまざまなロジックを表現しており、機械可読媒体に格納されている表現データによって実現されるとしてよい。当該表現データを機械が読み出すと、当該機械は本明細書に記載した方法を実行するためのロジックを生成する。このような表現は、「IPコア」として知られており、有形機械可読媒体に格納されて、さまざまな顧客または製造設備に供給されて、実際にロジックまたはプロセッサを生成する製造機械にロードされるとしてよい。
特定の処理は、ハードウェア素子で実行されるとしてよく、または、機械実行可能命令で具現化されるとしてよい。このような機械実行可能命令は、当該命令でプログラミングされた回路またはハードウェアに、当該特定の処理を実行させるために用いられるとしてよく、または、少なくともこのような結果となるように利用され得る。回路は、数例を挙げると、汎用プロセッサあるいは特定用途向けプロセッサ、または、論理回路を含むとしてよい。上述した処理はさらに、任意でハードウェアおよびソフトウェアの組み合わせによって実行されるとしてよい。実行部および/またはプロセッサは、命令が指定する結果のオペランドを格納するための機械命令、または、当該機械命令から導出された1以上の制御信号に応じて動作する特定あるいは具体的な回路、または、その他のロジックを含むとしてよい。
これは、適切なシステムの1つの具体例に過ぎない。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末(PDA)、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタルシグナルプロセッサ(DSP)、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯可能メディアプレーヤ、ハンドヘルドデバイス、および、その他のさまざまな電子デバイスについて関連技術分野で公知の他のシステム設計およびシステム構成も適切である。一般的に、本明細書に開示したようなプロセッサおよび/または実行部を組み込むことが可能な多岐にわたるシステムまたは電子デバイスは概して適切である。
上記では、説明のために、本発明の実施形態を完全に理解していただくべく、具体的且つ詳細な内容を数多く記載した。しかし、上記の具体的且つ詳細な内容の一部を利用することなく1以上の他の実施形態を実施し得ることは当業者には明らかである。本明細書に記載した具体的な実施形態は、本発明を制限するためではなく、本発明の実施形態を説明するためのものである。本発明の範囲は、上述した具体例によって決まるのではなく、特許請求の範囲によってのみ決まる。また、公知の回路、構造、デバイス、および処理は、本明細書の理解があいまいになることを避けるべく、ブロック図形式で図示しているか詳細な内容は省略している。適切だと見なされる場合には、参照番号または参照番号の下位桁について複数の図面にわたって同じものを用いて、任意で特性も同様である対応する構成要素または同様の構成要素を示している。

Claims (20)

  1. プロセッサの複数のキャッシュラインをフラッシュする方法であって、
    前記プロセッサの前記複数のキャッシュラインがフラッシュされる旨を示す第1のフィールドを含む単一の命令を受信する段階と、
    前記単一の命令に応じて、前記プロセッサの前記複数のキャッシュラインをフラッシュする段階と
    を備える方法。
  2. 前記単一の命令は、フラッシュされる前記複数のキャッシュラインの先頭アドレスを非明示的に提供する請求項1に記載の方法。
  3. 前記フラッシュされる複数のキャッシュラインの前記先頭アドレスの少なくとも一部分を第1のレジスタにロードする段階と、
    フラッシュされるキャッシュラインの数を表すカウンタ値を第2のレジスタにロードする段階と
    をさらに備える請求項2に記載の方法。
  4. 前記フラッシュされる複数のキャッシュラインの前記先頭アドレスに対応付けられている第1のキャッシュラインをフラッシュする段階と、
    前記第2のレジスタに格納されている前記カウンタ値をデクリメントする段階と、
    フラッシュされるべき第2のキャッシュラインの第2のアドレスのうち少なくとも一部分を含むように前記第1のレジスタを更新する段階と、
    前記第2のキャッシュラインをフラッシュする段階と
    をさらに備える請求項3に記載の方法。
  5. 前記フラッシュされる第2のキャッシュラインの第2のアドレスのうち少なくとも一部分を含むように前記第1のレジスタを更新する段階は、
    前記先頭アドレスに所与の数を加算する段階
    を有する請求項4に記載の方法。
  6. 前記フラッシュされる第2のキャッシュラインの第2のアドレスのうち少なくとも一部分を含むように前記第1のレジスタを更新する段階は、
    前記先頭アドレスから所与の数を減算する段階
    を有する請求項4に記載の方法。
  7. オペレーティングシステム(OS)は、前記単一の命令の実行を要求する請求項1に記載の方法。
  8. 複数のトランスレーション・ルックアサイド・バッファ(TLB)エントリを無効化する方法であって、
    前記複数のTLBエントリが無効化される旨を示す第1のフィールドを含む単一の命令を受信する段階と、
    前記単一の命令に応じて、前記複数のTLBエントリを無効化する段階と
    を備える方法。
  9. 前記単一の命令は、無効化される第1のTLBエントリの先頭アドレスを非明示的に提供する請求項8に記載の方法。
  10. 無効化される前記複数のTLBエントリの前記先頭アドレスのうち少なくとも一部分を第1のレジスタにロードする段階と、
    無効化されるTLBエントリの数を表すカウンタ値を第2のレジスタにロードする段階と
    をさらに備える請求項9に記載の方法。
  11. 前記無効化される複数のTLBエントリの前記先頭アドレスに対応付けられている第1のTLBエントリを無効化する段階と、
    前記第2のレジスタに格納されている前記カウンタ値をデクリメントする段階と、
    無効化される第2のTLBエントリの第2のアドレスのうち少なくとも一部分を含むように前記第1のレジスタを更新する段階と、
    前記第2のTLBエントリを無効化する段階と
    をさらに備える請求項10に記載の方法。
  12. 前記無効化される第2のTLBエントリの第2のアドレスのうち少なくとも一部分を含むように前記第1のレジスタを更新する段階は、
    前記先頭アドレスに所与の数を加算する段階
    を有する請求項11に記載の方法。
  13. 前記無効化される第2のTLBエントリの第2のアドレスのうち少なくとも一部分を含むように前記第1のレジスタを更新する段階は、
    前記先頭アドレスから所与の数を減算する段階
    を有する請求項11に記載の方法。
  14. オペレーティングシステム(OS)は、前記単一の命令の実行を要求する請求項8に記載の方法。
  15. キャッシュラインとしてデータを格納するキャッシュと、
    前記キャッシュの複数のキャッシュラインがフラッシュされる旨を示す第1のフィールドを含む第1の命令をデコードするデコード回路と、
    デコードされた前記第1の命令が示す前記複数のキャッシュラインをフラッシュする実行回路と
    を備える装置。
  16. ページ・テーブル・エントリを格納するトランスレーション・ルックアサイド・バッファ(TLB)を
    をさらに備え、
    前記デコード回路は、複数のTLBページ・テーブル・エントリが無効化される旨を示す第1のフィールドを含む第2の命令をデコードする請求項15に記載の装置。
  17. 前記第2の命令が示す前記複数のTLBページ・テーブル・エントリを無効化する、前記TLBに設けられている実行回路をさらに備える請求項16に記載の装置。
  18. 前記実行回路は、
    デコードされた第1の命令が示す前記複数のキャッシュラインをフラッシュする方法を表すステートマシンであって、キャッシュロジックに格納されているステートマシン
    を有する請求項15に記載の装置。
  19. 前記第1の命令の実行に応じてフラッシュされるキャッシュラインの数を表す値を格納する第1のレジスタと、
    前記第1の命令の実行に応じてフラッシュされる前記キャッシュラインのアドレスのうち少なくとも一部分を格納する第2のレジスタと
    をさらに備える請求項15に記載の装置。
  20. 前記第1の命令を、前記実行回路が実行する複数のマイクロ演算に変換するマイクロコードをさらに備える請求項15に記載の装置。
JP2012516395A 2009-12-22 2010-11-29 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置 Pending JP2012530979A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/644,547 US8214598B2 (en) 2009-12-22 2009-12-22 System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US12/644,547 2009-12-22
PCT/US2010/058236 WO2011087589A2 (en) 2009-12-22 2010-11-29 System, method, and apparatus for a cache flush of a range of pages and tlb invalidation of a range of entries

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015000202A Division JP2015084250A (ja) 2009-12-22 2015-01-05 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置

Publications (1)

Publication Number Publication Date
JP2012530979A true JP2012530979A (ja) 2012-12-06

Family

ID=44152761

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012516395A Pending JP2012530979A (ja) 2009-12-22 2010-11-29 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置
JP2015000202A Pending JP2015084250A (ja) 2009-12-22 2015-01-05 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015000202A Pending JP2015084250A (ja) 2009-12-22 2015-01-05 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置

Country Status (8)

Country Link
US (1) US8214598B2 (ja)
JP (2) JP2012530979A (ja)
KR (1) KR101467069B1 (ja)
CN (1) CN102117247B (ja)
DE (1) DE112010004971T5 (ja)
GB (1) GB2483013B (ja)
TW (1) TWI516930B (ja)
WO (1) WO2011087589A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016533555A (ja) * 2013-09-30 2016-10-27 ヴイエムウェア インコーポレイテッドVMware,Inc. 仮想環境内での不揮発性メモリ状態の一貫した効率的ミラーリング
JP2018511120A (ja) * 2015-03-03 2018-04-19 エイアールエム リミテッド キャッシュ保守命令
US10782969B2 (en) 2015-02-23 2020-09-22 Intel Corporation Vector cache line write back processors, methods, systems, and instructions

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924652B2 (en) * 2009-11-23 2014-12-30 Marvell Israel (M.I.S.L.) Ltd. Simultaneous eviction and cleaning operations in a cache
US8473567B2 (en) * 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
WO2013085518A1 (en) * 2011-12-08 2013-06-13 Intel Corporation A method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution
TWI579695B (zh) * 2011-12-28 2017-04-21 瑞昱半導體股份有限公司 對處理器的快取進行清除的方法以及該處理器
CN103186474B (zh) * 2011-12-28 2016-09-07 瑞昱半导体股份有限公司 对处理器的高速缓存进行清除的方法以及该处理器
US9262163B2 (en) * 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US10509725B2 (en) 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
WO2014142867A1 (en) 2013-03-14 2014-09-18 Intel Corporation Power efficient level one data cache access with pre-validated tags
EP2979189B1 (en) * 2013-03-28 2019-12-25 Hewlett-Packard Enterprise Development LP Storing data from cache lines to main memory based on memory addresses
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US9239788B2 (en) * 2013-10-24 2016-01-19 Qualcomm Incorporated Split write operation for resistive memory cache
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US10248610B2 (en) 2015-06-23 2019-04-02 Mellanox Technologies, Ltd. Enforcing transaction order in peer-to-peer interactions
US10303647B2 (en) 2015-07-15 2019-05-28 Mellanox Technologies, Ltd. Access control in peer-to-peer transactions over a peripheral component bus
US10776272B2 (en) * 2016-03-02 2020-09-15 Mellanox Technologies, Ltd. Control of persistent memory via a computer bus
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US10552153B2 (en) * 2017-03-31 2020-02-04 Intel Corporation Efficient range-based memory writeback to improve host to device communication for optimal power and performance
US11327909B1 (en) 2020-10-26 2022-05-10 Mellanox Technologies, Ltd. System for improving input / output performance
US11609700B2 (en) 2021-08-11 2023-03-21 Mellanox Technologies, Ltd. Pacing in a storage sub-system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
JPH09231133A (ja) * 1996-02-21 1997-09-05 Nec Corp キャッシュメモリ装置
EP1089185A2 (en) * 1999-10-01 2001-04-04 Fujitsu Limited Method of controlling a cache memory to increase an access speed to a main memory, and a computer using the method
JP2001134490A (ja) * 1999-11-01 2001-05-18 Fujitsu Ltd キャッシュメモリの制御方法及びその方法を実現する計算機
WO2006112111A1 (ja) * 2005-04-08 2006-10-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリシステム及びその制御方法
US20070038797A1 (en) * 2005-08-11 2007-02-15 International Business Machines Corporation Methods and apparatus for invalidating multiple address cache entries

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885680A (en) * 1986-07-25 1989-12-05 International Business Machines Corporation Method and apparatus for efficiently handling temporarily cacheable data
JP3493369B2 (ja) * 1994-12-13 2004-02-03 株式会社ルネサステクノロジ コンピュータ
US6978357B1 (en) * 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
US6351864B1 (en) 1999-06-28 2002-03-05 David M. Karafa Institutional bedding with integral pillow and mattress
US6546462B1 (en) * 1999-12-30 2003-04-08 Intel Corporation CLFLUSH micro-architectural implementation method and system
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6934806B2 (en) 2002-09-23 2005-08-23 International Business Machines Corporation Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7536506B2 (en) * 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US8538012B2 (en) * 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
JP2008305246A (ja) 2007-06-08 2008-12-18 Freescale Semiconductor Inc 情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置
US8112174B2 (en) * 2008-02-25 2012-02-07 International Business Machines Corporation Processor, method and computer program product for fast selective invalidation of translation lookaside buffer

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
JPH09231133A (ja) * 1996-02-21 1997-09-05 Nec Corp キャッシュメモリ装置
EP1089185A2 (en) * 1999-10-01 2001-04-04 Fujitsu Limited Method of controlling a cache memory to increase an access speed to a main memory, and a computer using the method
JP2001134490A (ja) * 1999-11-01 2001-05-18 Fujitsu Ltd キャッシュメモリの制御方法及びその方法を実現する計算機
WO2006112111A1 (ja) * 2005-04-08 2006-10-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリシステム及びその制御方法
US20070038797A1 (en) * 2005-08-11 2007-02-15 International Business Machines Corporation Methods and apparatus for invalidating multiple address cache entries
JP2007048296A (ja) * 2005-08-11 2007-02-22 Internatl Business Mach Corp <Ibm> 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016533555A (ja) * 2013-09-30 2016-10-27 ヴイエムウェア インコーポレイテッドVMware,Inc. 仮想環境内での不揮発性メモリ状態の一貫した効率的ミラーリング
US10782969B2 (en) 2015-02-23 2020-09-22 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
JP2018511120A (ja) * 2015-03-03 2018-04-19 エイアールエム リミテッド キャッシュ保守命令
US11144458B2 (en) 2015-03-03 2021-10-12 Arm Limited Apparatus and method for performing cache maintenance over a virtual page

Also Published As

Publication number Publication date
KR101467069B1 (ko) 2014-12-01
WO2011087589A3 (en) 2011-10-27
US20110153952A1 (en) 2011-06-23
TWI516930B (zh) 2016-01-11
CN102117247B (zh) 2015-02-25
US8214598B2 (en) 2012-07-03
WO2011087589A2 (en) 2011-07-21
GB2483013B (en) 2018-03-21
KR20120096031A (ko) 2012-08-29
GB2483013A (en) 2012-02-22
CN102117247A (zh) 2011-07-06
GB201119730D0 (en) 2011-12-28
JP2015084250A (ja) 2015-04-30
TW201131358A (en) 2011-09-16
DE112010004971T5 (de) 2013-03-07

Similar Documents

Publication Publication Date Title
JP2015084250A (ja) 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
JP5027669B2 (ja) マイクロプロセッサ、集積回路、システム及び方法
US9335943B2 (en) Method and apparatus for fine grain memory protection
US10346306B2 (en) Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US9471494B2 (en) Method and apparatus for cache line write back operation
US10552153B2 (en) Efficient range-based memory writeback to improve host to device communication for optimal power and performance
US9361233B2 (en) Method and apparatus for shared line unified cache
US9891936B2 (en) Method and apparatus for page-level monitoring
US20160092371A1 (en) Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling
US20140149651A1 (en) Providing Extended Cache Replacement State Information
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
US20200104259A1 (en) System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations
US10255196B2 (en) Method and apparatus for sub-page write protection
US10108554B2 (en) Apparatuses, methods, and systems to share translation lookaside buffer entries
US10437732B2 (en) Multi-level cache with associativity collision compensation
US9183161B2 (en) Apparatus and method for page walk extension for enhanced security checks
WO2013147882A1 (en) Efficient locking of memory pages
US20190205061A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US20240054077A1 (en) Pipelined out of order page miss handler
KR101528130B1 (ko) 권한 레벨에 관계없는 세그먼트 레지스터 판독 및 기입용 시스템, 장치, 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131220

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140123

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140902