(57)【要約】      （修正有）【課題】複数のキャッシュラインのフラッシュ、および／または、複数のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）エントリの無効化を実行するシステム、方法および装置を提供する。【解決手段】プロセッサの複数のキャッシュラインをフラッシュするべく、プロセッサの複数のキャッシュラインをフラッシュする旨を示す第１のフィールドを含む単一の命令に応じて、プロセッサの複数のキャッシュラインをフラッシュする。【選択図】図１
2015084250.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの複数のキャッシュラインをフラッシュする方法であって、
フラッシュされる前記複数のキャッシュラインの先頭アドレスの少なくとも一部分を第１のレジスタにロードする段階と、
フラッシュされるキャッシュラインの数を表すカウンタ値を第２のレジスタにロードする段階と、
前記プロセッサの前記複数のキャッシュラインがフラッシュされる旨を示す第１のフィールドを含み、前記フラッシュされる前記複数のキャッシュラインの前記先頭アドレスを非明示的に提供する単一の命令を受信する段階と、
前記単一の命令に応じて、前記プロセッサの前記複数のキャッシュラインをフラッシュする段階と
を備え、
前記フラッシュする段階は、
前記フラッシュされる前記複数のキャッシュラインの前記先頭アドレスに対応付けられている第１のキャッシュラインをフラッシュする段階と、
前記第２のレジスタに格納されている前記カウンタ値をデクリメントする段階と、
フラッシュされるべき第２のキャッシュラインの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階と、
前記第２のキャッシュラインをフラッシュする段階と
を有する方法。
【請求項２】
前記フラッシュされる第２のキャッシュラインの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスに所与の数を加算する段階
を有する請求項１に記載の方法。
【請求項３】
前記フラッシュされる第２のキャッシュラインの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスから所与の数を減算する段階
を有する請求項１または２に記載の方法。
【請求項４】
オペレーティングシステム（ＯＳ）は、前記単一の命令の実行を要求する請求項１から３のいずれか１項に記載の方法。
【請求項５】
複数のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）エントリを無効化する方法であって、
無効化される前記複数のＴＬＢエントリの先頭アドレスのうち少なくとも一部分を第１のレジスタにロードする段階と、
無効化されるＴＬＢエントリの数を表すカウンタ値を第２のレジスタにロードする段階と、
前記複数のＴＬＢエントリが無効化される旨を示す第１のフィールドを含み、無効化される第１のＴＬＢエントリの先頭アドレスを非明示的に提供する単一の命令を受信する段階と、
前記単一の命令に応じて、前記複数のＴＬＢエントリを無効化する段階と
を備え、
前記無効化する段階は、
前記無効化される複数のＴＬＢエントリの前記先頭アドレスに対応付けられている第１のＴＬＢエントリを無効化する段階と、
前記第２のレジスタに格納されている前記カウンタ値をデクリメントする段階と、
無効化される第２のＴＬＢエントリの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階と、
前記第２のＴＬＢエントリを無効化する段階と
を有する方法。
【請求項６】
前記無効化される第２のＴＬＢエントリの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスに所与の数を加算する段階
を有する請求項５に記載の方法。
【請求項７】
前記無効化される第２のＴＬＢエントリの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスから所与の数を減算する段階
を有する請求項５または６に記載の方法。
【請求項８】
オペレーティングシステム（ＯＳ）は、前記単一の命令の実行を要求する請求項５から７のいずれか１項に記載の方法。
【請求項９】
キャッシュラインとしてデータを格納するキャッシュと、
第１の命令の実行に応じてフラッシュされるキャッシュラインの数を表す値を格納する第１のレジスタと、
前記第１の命令の実行に応じてフラッシュされる前記キャッシュラインのアドレスのうち少なくとも一部分を格納する第２のレジスタと、
前記キャッシュの複数のキャッシュラインがフラッシュされる旨を示す第１のフィールドを含み、フラッシュされる前記複数のキャッシュラインの先頭アドレスを非明示的に提供する前記第１の命令をデコードするデコード回路と、
前記第１のレジスタに格納されたフラッシュされるキャッシュラインの数を表すカウンタ値をデクリメントすることによって、デコードされた前記第１の命令が示す前記複数のキャッシュラインをフラッシュする実行回路と
を備え、
前記実行回路は、フラッシュされるべき第２のキャッシュラインの先頭アドレスのうち少なくとも一部分を含む前記第２のレジスタのフラッシュされるべきアドレスの少なくとも一部を更新して、前記第２のキャッシュラインをフラッシュする装置。
【請求項１０】
ページ・テーブル・エントリを格納するトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を
をさらに備え、
前記デコード回路は、複数のＴＬＢページ・テーブル・エントリが無効化される旨を示す第１のフィールドを含む第２の命令をデコードする請求項９に記載の装置。
【請求項１１】
前記第２の命令が示す前記複数のＴＬＢページ・テーブル・エントリを無効化する、前記ＴＬＢに設けられている実行回路をさらに備える請求項１０に記載の装置。
【請求項１２】
前記実行回路は、
デコードされた第１の命令が示す前記複数のキャッシュラインをフラッシュする方法を表すステートマシンであって、キャッシュロジックに格納されているステートマシン
を有する請求項９から１１のいずれか１項に記載の装置。
【請求項１３】
前記第１の命令を、前記実行回路が実行する複数のマイクロ演算に変換するマイクロコードをさらに備える請求項９から１２のいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概して情報処理に関し、具体的にはキャッシュおよびトランスレーション・ルックアサイド・バッファ（ＴＬＢ）の維持に関する。
【背景技術】
【０００２】
キャッシュメモリデバイスは、小型で高速なメモリであって、最もアクセス頻度が高いデータをより大型で低速なメモリから保持するために利用可能なメモリである。ランダムアクセスメモリ（ＲＡＭ）は、比較的低コストで大きな格納容量を実現している。しかし、ＲＡＭへのアクセス速度は、今日のマイクロプロセッサの処理速度に比べると、遅い。キャッシュメモリは、格納容量が比較的小さいものの、格納しているデータへの高速アクセスが可能である。
【０００３】
キャッシュは、所与の時点において最も必要性が高いと思われる命令、変換、またはデータを格納しているように、さまざまな手法で管理される。アクセスした場合にキャッシュが要求されたデータを持っている場合、キャッシュ「ヒット」となる。一方、キャッシュが要求されたデータを持っていない場合、キャッシュ「ミス」となる。このため、キャッシュの格納内容は通常、キャッシュのヒット対ミスの比率を最大限まで高めるように管理される。
【０００４】
デバイスおよびオペレーティングシステムは、維持手順の一環として、キャッシュからデータページを、ＴＬＢからエントリをフラッシュすることを所望する。
【図面の簡単な説明】
【０００５】
本発明の実施形態を、添付図面において本発明を限定するものではなく例示するものとして図示する。添付図面では、同様の参照番号は同様の構成要素を意味する。添付図面は以下の通りである。
【図１】所与の範囲のキャッシュラインのキャッシュフラッシュおよび／または所与の範囲のＴＬＢエントリの無効化をサポートしているプロセッサコアの実施形態を示す図である。
【図２】ＲＥＰ  ＣＬＦＬＵＳＨ命令の実施形態例を幾つか説明するための図である。
【図３】ＲＥＰ  ＣＬＦＬＵＳＨ命令の実施形態を処理するための方法の実施形態を示すフローチャートである。
【図４】ＲＥＰ  ＣＬＦＬＵＳＨ（繰り返しキャッシュラインフラッシュ：ｒｅｐｅａｔ  ｃａｃｈｅ  ｌｉｎｅ  ｆｌｕｓｈ）命令の実行の実施形態を示す図である。
【図５】ＲＥＰ  ＩＮＶＬＰＧ命令の実施形態例を幾つか示す図である。
【図６】ＲＥＰ  ＩＮＶＬＰＧ命令の実施形態を処理する方法の実施形態を説明するためのフローチャートである。
【図７】ＲＥＰ  ＩＮＶＬＰＧ命令の実行の実施形態を示す図である。
【図８】適切なコンピュータシステムの実施形態例を示すブロック図である。
【図９】適切なコンピュータシステムの実施形態例を示すブロック図である。
【図１０】本発明の一実施形態に係るシステムを示すブロック図である。
【図１１】本発明の一実施形態に係るシステムを示すブロック図である。
【図１２】本発明の一実施形態に係るシステムを示すブロック図である。
【発明を実施するための形態】
【０００６】
キャッシュラインをフラッシュする方法は、線形メモリアドレスまたは仮想メモリアドレスと対応付けられるとしてよい。当該方法が実行されると、コヒーレンシドメインの全てのキャッシュから、オペランドに対応付けられているキャッシュラインがフラッシュされる。マルチプロセッサ環境では、例えば、プロセッサ状態に応じて、システム（つまり、コヒーレンシドメイン）内の全てのマイクロプロセッサにおいて全てのキャッシュヒエラルキーレベルから特定されたキャッシュラインをフラッシュする。書込無効プロトコルであるＭＥＳＩ（変更、排他、共有、無効）プロトコルは、キャッシュライン毎に、２つのＭＥＳＩビットで管理される４つの状態のうちいずれか１つの状態を付与する。これら４つの状態は、キャッシュラインが取り得る４つの状態も特定している。プロセッサが「排他」状態または「共有」状態であることが検出されると、フラッシュは、キャッシュラインが無効化されることと同じである。別の例は、プロセッサが「変更」状態にあることが検出されると、真となる。キャッシュコントローラが書き戻しストラテジを実行して、キャッシュヒットについては、プロセッサからのデータをキャッシュに書き込むのみである場合、キャッシュラインの格納内容はメインメモリに移動させる必要があり、キャッシュラインを無効化する。また、一部の実施形態では、ＧＯＬＳサブプロトコルと同様に、ＭＥＳＩプロトコルおよびＭＯＥＳＩプロトコルを利用する。
【０００７】
＜プロセッサコアの一例＞
図１は、所与の範囲のキャッシュラインのキャッシュフラッシュおよび／または所与の範囲のＴＬＢエントリの無効化をサポートしているプロセッサコアの実施形態を示す図である。本実施形態は、本発明の実施形態の説明があいまいにならないように、当該プロセッサコアに含まれる側面を必ずしも全て示すものではない。プロセッサコア１０１は、プロセッサコア１０１が実行すべき命令をフェッチするフェッチ部１０３を備える。命令は、キャッシュ、メインメモリ、ハードディスク等の任意のストレージデバイスからフェッチされるとしてよい。プロセッサコア１０１はさらに、フェッチされた命令をデコードするデコード部１０５を備える。以下で説明する命令は、このデコード部によってデコードされる。ある実施形態によると、デコード部１０５は、フェッチされた命令を１以上のマイクロ演算にデコードする。命令とマイクロ演算とのマッピングは、マイクロコードロジック１２１で実現されるとしてよい。
【０００８】
一部の実施形態によると、プロセッサコア１０１は、スケジューリング部１０７を備える。スケジューリング部１０７は、デコードされた命令（例えば、デコード部１０５から受信する命令）の格納に対応付けられるさまざまな処理を、当該命令のディスパッチの用意が整うまで、例えば、デコードされた命令のソース値が全て利用可能となるまで、実行する。一実施形態によると、スケジューリング部１０５は、デコードされた命令を、実行させるべく１以上の実行部１０９に対してスケジューリングおよび／または発行（ディスパッチ）する。実行部１０５は、浮動小数点機能部、ＡＬＵ機能部、メモリ機能部、分岐機能部等のうち１以上を含むとしてよい。このような機能部は、（例えば、デコード部１０５が）デコードした、および／または、（例えば、スケジューリング部１０７が）ディスパッチした命令を実行する。また、一部の実施形態によると、実行部１０９は、アウト・オブ・オーダ方式で命令を実行する。このため、プロセッサコア１０１は、これらの実施形態ではアウト・オブ・オーダ・プロセッサコアである。他の実施形態によると、実行部１０９は、イン・オーダで命令を実行する。このような実施形態によると、プロセッサコア１０１は、イン・オーダ・プロセッサコアである。
【０００９】
プロセッサコア１０１はさらに、リタイア部１１１を備えるとしてよい。リタイア部１１１は、実行された命令をコミット後にリタイアさせる。一部の実施形態では、実行された命令をリタイアさせることで、プロセッサ状態が命令の実行からコミットとなったり、命令によって用いられた物理レジスタの割り当てが解除されたりする。
【００１０】
プロセッサコアはさらに、レジスタ１１３を備える。このレジスタは、通常のｘ８６レジスタを含むとしてよく、例えば、汎用レジスタ（例えば、ＥＡＸ、ＥＢＣ、ＥＣＸ、ＥＤＸ）、セグメントレジスタ（例えば、ＣＳ、ＤＳ、ＥＳ、ＦＳ、ＧＳ、ＳＳ）、インデックスレジスタおよびポインタレジスタ（例えば、ＥＳＩ、ＥＤＩ、ＥＢＰ、ＥＩＰ、ＥＳＰ）、および、インジケータレジスタ（例えば、ＥＦＬＡＧＳ）等を含むとしてよい。
【００１１】
プロセッサコア１０１はさらに、キャッシュ１１９を備えるとしてよい。このキャッシュは、１以上のレベルを含むとしてよい。キャッシュロジック１２３は、さまざまな処理を実行してキャッシュ１１９を維持する。一部の実施形態によると、キャッシュロジック１２３は、後述する方法の実施形態を実施する１以上のステートマシンを含む。
【００１２】
最後に、プロセッサはさらに、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）１１５を備えるとしてよい。ＴＬＢ１１５は、ページ・テーブル・エントリを含むスロットを一定数有している。ページ・テーブル・エントリは、仮想アドレスを物理アドレスにマッピングする。
【００１３】
上述した機能部およびロジックは、回路および／またはソフトウェアを任意に組み合わせたものであってよい。
【００１４】
＜繰り返しキャッシュラインフラッシュ＞
上述したプロセッサコアでキャッシュラインフラッシュ（ＣＬＦＬＵＳＨ）命令が実行されると、ソースオペランドで特定された線形アドレスを含む１つのキャッシュラインが、プロセッサキャッシュヒエラルキーの全てのレベルから無効化される（データおよび命令）。この無効化は、キャッシュコヒーレンシドメイン全体にブロードキャストされる。このラインが、キャッシュヒエラルキーの任意のレベルにおいてメモリと矛盾している（汚れている）場合には、無効化の前にメモリに書き込まれる。ソースオペランドは、バイトメモリ位置である。
【００１５】
ＣＬＦＬＵＳＨ命令は、全ての特権レベルで用いられるとしてよく、ＣＬＦＬＵＳＨが実行専用セグメントに割り当てられていること以外は、バイトロードに対応付けられている全ての許可確認およびフォールトの影響を受ける。繰り返しキャッシュラインフラッシュ（ＲＥＰ  ＣＬＦＬＵＳＨ）命令を以下で説明する。この命令によって、プロセッサコア１０１は、所定範囲のキャッシュラインをフラッシュする。図２に、ＲＥＰ  ＣＬＦＬＵＳＨ命令の複数の実施形態例を示している。図２の（ａ）には、オペコードのみを含むＲＥＰ  ＣＬＦＬＵＳＨ命令を示す。この命令については、ラインの数およびフラッシュされるラインの少なくとも先頭アドレスが、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスがＥＳ：ＥＳＩレジスタ対等のセグメント：オフセット対に格納され、および、カウンタ（ライン数）が、ＥＣＸレジスタ等の汎用レジスタに格納される。言うまでも無く、これらは例に過ぎず、他のレジスタまたは他の命令オペランドを利用するとしてもよい。
【００１６】
図２の（ｂ）は、オペコードおよび明示的なカウンタ値を含むＲＥＰ  ＣＬＦＬＵＳＨ命令を示している。カウンタ値は、一部の実施形態によると即値であり、他の実施形態ではレジスタに格納されている。この命令においては、フラッシュすべきラインの先頭アドレスは、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスは、ＥＳ：ＥＳＩレジスタ対等のセグメント：オフセット対に格納されている。言うまでも無く、これは一例に過ぎず、任意のレジスタを利用するとしてよい。例えば、これらに限定されないが、１）任意のセグメントレジスタＣＳ、ＤＳ、ＥＳ、ＦＳ、ＳＳおよびＧＳ、２）汎用レジスタＥＡＸ（累算器）、ＥＢＸ（基底レジスタ）、ＥＣＸ（カウントレジスタ）、ＥＤＸ（データレジスタ）、ＥＳＩ（ソースインデックス）、ＥＤＩ（デスティネーションインデックス）、ＥＢＰ（基底ポインタ）、ＥＳＰ（スタックポインタ）およびこれらの組み合わせを含むとしてよい。
【００１７】
図２の（ｃ）は、オペコードおよび明示的な先頭アドレスを含むＲＥＰ  ＣＬＦＬＵＳＨ命令を図示している。この命令については、フラッシュされるライン数は非明示的に参照される。例えば、一部の実施形態によると、カウンタがＥＣＸレジスタ等の汎用レジスタに格納される。言うまでも無く、これは一例に過ぎず、他のレジスタも利用し得る。
【００１８】
図２の（ｄ）は、オペコード、明示的なカウンタ値、および、明示的な先頭アドレスを含むＲＥＰ  ＣＬＦＬＵＳＨ命令を図示している。
【００１９】
図３は、ＲＥＰ  ＣＬＦＬＵＳＨ命令の実施形態を処理する方法の実施形態を示すフローチャートである。さまざまな実施形態によると、当該方法は、汎用プロセッサ、特定用途向けプロセッサ（例えば、グラフィクスプロセッサまたはデジタルシグナルプロセッサ）、ハードウェアアクセラレータ（例えば、暗号アクセラレータ）またはその他の種類のロジックデバイスまたは命令処理装置によって実行されるとしてよい。
【００２０】
ステップ３０１において、ＲＥＰ  ＣＬＦＬＵＳＨ命令は、プロセッサまたはその他の命令処理装置で受信される。１以上の実施形態において、ＲＥＰ  ＣＬＦＬＵＳＨ命令は、先頭キャッシュラインアドレスと、フラッシュすべきキャッシュラインの数を表している値とを示している。一部の実施形態によると、先頭キャッシュラインアドレスおよびフラッシュすべきキャッシュラインの数を表している値のうち少なくとも一方は、ＲＥＰ  ＣＬＦＬＵＳＨ命令に明示的に含まれている。
【００２１】
命令を受信することに応じて、プロセッサは、ステップ３０３においてＲＥＰ  ＣＬＦＬＵＳＨ命令が示すキャッシュラインをフラッシュする。
【００２２】
図４は、ＲＥＰ  ＣＬＦＬＵＳＨ（繰り返しキャッシュラインフラッシュ命令実行方法の実施形態を示す図である。ステップ４０１において、カウンタ値およびキャッシュラインアドレスがロードされる。カウンタ値は、フラッシュするラインの数に設定されている。キャッシュラインアドレスは、フラッシュするキャッシュラインの範囲の先頭を示す。例えば、一部の実施形態によると、ＥＳ：ＥＳＩに先頭アドレスをロードして、ＥＣＸにカウンタ値をロードする。
【００２３】
上述したようにＲＥＰ  ＣＬＦＬＵＳＨ命令がカウンタおよび／またはアドレス指定について明示的なオペランドを含む他の実施形態では、ステップ４０１でのロードは異なる方法で行なわれるとしてよい。例えば、ＲＥＰ  ＣＬＦＬＵＳＨがカウンタについて即値を含む場合、ＲＥＰ  ＣＬＦＬＵＳＨ命令のデコードに先立ってカウンタ値をレジスタにロードすることはない。
【００２４】
ステップ４０３において、アプリケーションまたはオペレーティングシステム（ＯＳ）は、ＲＥＰ  ＣＬＦＬＵＳＨ命令の実行を求めることによって、所定範囲のキャッシュラインのフラッシュを要求する。この命令は少なくとも、フェッチされて、デコードされて、実行される。
【００２５】
一部の実施形態によると、ステップ４０５において、マイクロコードを呼び出して、この命令をマイクロ演算に変換する。このマイクロ演算は、マイクロコード１２１等のマイクロコードに格納される。他の実施形態によると、ステップ４０５ではこの命令を実行するためにステートマシンを呼び出す。例えば、キャッシュロジック１２３のステートマシン１１１を呼び出す。命令の実行は、プロセッサコアの実施例によって変わるが、実行部１０９またはキャッシュロジック１２３が担当するとしてよい。
【００２６】
４０７において、キャッシュラインアドレス（ＲＥＰ  ＣＬＦＬＵＳＨ命令のデコード前にロードされているか、または、このデコードに組み合わせて参照されている）に対応付けられているキャッシュラインがフラッシュされる。例えば、ＥＳ：ＥＳＩのキャッシュラインがフラッシュされる。
【００２７】
４０９において、カウンタ値をデクリメントする。一実施形態によると、このカウンタはＥＣＸレジスタに格納されており、当該レジスタをデクリメントする。
【００２８】
４１１において、カウンタ値がゼロであるか否かを判断する。カウンタ値がゼロでない場合、ステップ４１３において、フラッシュする次のラインのキャッシュラインアドレスを判断する。一部の実施形態によると、この判断は、設定サイズ（例えば、６４ビット）を、直前にフラッシュされたキャッシュラインのアドレスに対する先行キャッシュラインサイズに加算することによって行なう。他の実施形態では、設定サイズ（例えば、６４ビット）を、直前にフラッシュされたキャッシュラインのアドレスに対する先行キャッシュラインサイズから減算する。４０７において、このキャッシュラインをフラッシュする。
【００２９】
カウンタ値がゼロである場合、所定範囲のキャッシュラインが全てフラッシュされており、命令をリタイアさせるとしてよい。
【００３０】
上記の説明ではカウンタ値をデクリメントしているが、他の実施形態では、カウンタをインクリメントして、所定値と比較して適切な数のラインがフラッシュされたか否かを判断する。
【００３１】
＜繰り返しページ・テーブル・エントリ無効化＞
ＴＬＢエントリ無効化（ＩＮＶＬＰＧ）命令が上述のプロセッサコアによって実行されると、ソースオペランドが特定するトランスレーション・ルックアサイド・バッファ（ＴＬＢ）エントリが無効化される。ソースオペランドは、メモリアドレスである。プロセッサコアは、このアドレスを含むページを特定して、このページのＴＬＢエントリをフラッシュする。
【００３２】
繰り返しＴＬＢエントリ無効化（ＲＥＰ  ＩＮＶＬＰＧ）命令を以下で説明する。この命令によって、プロセッサコア１０１は複数のＴＬＢエントリを無効化する。図５は、ＲＥＰ  ＩＮＶＬＰＧ命令の複数の実施形態例を図示している。図５の（ａ）には、オペコードのみを含むＲＥＰ  ＩＮＶＬＰＧ命令を示す。この命令については、無効化されるＴＬＢエントリの数および無効化されるＴＬＢエントリの少なくとも先頭アドレスが、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスがＤＳ：ＥＤＩレジスタ対等のセグメント：オフセット対に格納され、および、カウンタ（エントリ数）が、ＥＣＸレジスタ等の汎用レジスタに格納される。言うまでも無く、これは一例に過ぎず、任意のレジスタを利用するとしてよい。例えば、これらに限定されないが、１）任意のセグメントレジスタＣＳ、ＤＳ、ＥＳ、ＦＳ、ＳＳおよびＧＳ、２）汎用レジスタＥＡＸ（累算器）、ＥＢＸ（基底レジスタ）、ＥＣＸ（カウントレジスタ）、ＥＤＸ（データレジスタ）、ＥＳＩ（ソースインデックス）、ＥＤＩ（デスティネーションインデックス）、ＥＢＰ（基底ポインタ）、ＥＳＰ（スタックポインタ）およびこれらの組み合わせを含むとしてよい。
【００３３】
図５の（ｂ）は、オペコードおよび明示的なカウンタ値を含むＲＥＰ  ＩＮＶＬＰＧ命令を示している。カウンタ値は、一部の実施形態によると即値であり、他の実施形態ではレジスタに格納されている。この命令においては、無効化すべきエントリの先頭アドレスは、非明示的に参照される。例えば、一部の実施形態によると、先頭アドレスは、ＤＳ：ＥＤＩレジスタ対等のセグメント：オフセット対に格納されている。言うまでも無く、これは一例に過ぎず、他のレジスタを利用するとしてもしてよい。
【００３４】
図５の（ｃ）は、オペコードおよび明示的な先頭アドレスを含むＲＥＰ  ＩＮＶＬＰＧ命令を図示している。この命令については、無効化されるエントリ数は非明示的に参照される。例えば、一部の実施形態によると、カウンタがＥＣＸレジスタ等の汎用レジスタに格納される。言うまでも無く、これは一例に過ぎず、他のレジスタも利用し得る。
【００３５】
図５の（ｄ）は、オペコード、明示的なカウンタ値、および、明示的な先頭アドレスを含むＲＥＰ  ＩＮＶＬＰＧ命令を図示している。
【００３６】
図６は、ＲＥＰ  ＩＮＶＬＰＧ命令の実施形態を処理する方法の実施形態を示すフローチャートである。さまざまな実施形態によると、当該方法は、汎用プロセッサ、特定用途向けプロセッサ（例えば、グラフィクスプロセッサまたはデジタルシグナルプロセッサ）、ハードウェアアクセラレータ（例えば、暗号アクセラレータ）またはその他の種類のロジックデバイスまたは命令処理装置によって実行されるとしてよい。
【００３７】
ステップ６０１において、ＲＥＰ  ＩＮＶＬＰＧ命令は、プロセッサまたはその他の命令処理装置で受信される。１以上の実施形態において、ＲＥＰ  ＩＮＶＬＰＧ命令は、先頭ＴＬＢエントリアドレスと、無効化すべきＴＬＢエントリの数を表している値とを示している。一部の実施形態によると、先頭ＴＬＢエントリアドレスおよび無効化すべきＴＬＢエントリの数を表している値のうち少なくとも一方は、ＲＥＰ  ＩＮＶＬＰＧ命令に明示的に含まれている。
【００３８】
命令を受信することに応じて、プロセッサは、ステップ６０３においてＲＥＰ  ＩＮＶＬＰＧ命令が示すＴＬＢエントリを無効化する。
【００３９】
図７は、ＲＥＰ  ＩＮＶＬＰＧ命令実行の実施形態を示す図である。ステップ７０１において、カウンタ値およびＴＬＢエントリアドレスがロードされる。カウンタ値は、無効化するエントリの数に設定されている。ＴＬＢエントリアドレスは、無効化するエントリの範囲の先頭を示す。例えば、一部の実施形態によると、ＤＳ：ＥＤＩに先頭アドレスをロードして、ＥＣＸにカウンタ値をロードする。
【００４０】
上述したようにＲＥＰ  ＩＮＶＬＰＧ命令がカウンタおよび／またはアドレス指定について明示的なオペランドを含む他の実施形態では、ステップ４０１でのロードは異なる方法で行なわれるとしてよい。例えば、ＲＥＰ  ＩＮＶＬＰＧがカウンタについて即値を含む場合、ＲＥＰ  ＩＮＶＬＰＧ命令のデコードに先立ってカウンタ値をレジスタにロードすることはない。
【００４１】
ステップ７０３において、オペレーティングシステム（ＯＳ）は、ＲＥＰ  ＩＮＶＬＰＧ命令の実行を求めることによって、所定範囲のＴＬＢエントリの無効化を要求する。この命令は少なくとも、フェッチされて、デコードされて、実行される。
【００４２】
一部の実施形態によると、ステップ７０５において、マイクロコードを呼び出して、この命令をマイクロ演算に変換する。このマイクロ演算は、マイクロコード１２１等のマイクロコードに格納される。他の実施形態によると、ステップ７０５ではこの命令を実行するためにステートマシンを呼び出す。例えば、ＴＬＢのステートマシンを呼び出す。命令の実行は、プロセッサコアの実施例によって変わるが、実行部１０９またはＴＬＢが担当するとしてよい。
【００４３】
一部の実施形態によると、ＲＥＰ  ＩＮＶＬＰＧ命令は特権命令である。プロセッサが保護モードで実行されている場合、プログラムまたはプロシージャのＣＰＬはこの命令を実行するためには０でなければならない。このような実施形態では、ステップ７０７において、プロセッサの現在の特権レベル（ＣＰＬ）が０であるか否かを判断する。ＣＰＬが０でない場合、ステップ７０９においてＲＥＰ  ＩＮＶＬＰＧは不当な命令である旨が通知され、ＴＬＢエントリの無効化は行なわれない。
【００４４】
７１１において、ＴＬＢエントリアドレス（ＲＥＰ  ＩＮＶＬＰＧ命令のデコード前にロードされているか、または、このデコードに組み合わせて参照されている）に対応付けられているＴＬＢエントリが無効化される。例えば、ＤＳ：ＥＤＩのキャッシュラインがフラッシュされる。
【００４５】
７１１において、カウンタ値をデクリメントする。一実施形態によると、このカウンタはＥＣＸレジスタに格納されており、当該レジスタをデクリメントする。
【００４６】
７１５において、カウンタ値がゼロであるか否かを判断する。カウンタ値がゼロでない場合には、ステップ７１７において、無効化するＴＬＢエントリを判断する。一部の実施形態によると、この判断は、設定ページサイズ（例えば、４ｋ／２Ｍ／１ＧＢ）を、直前に無効化されたＴＬＢエントリの先行アドレスに加算することによって行なう。他の実施形態では、設定ページサイズ（例えば、４ｋ／２Ｍ／１ＧＢ）を、直前に無効化されたＴＬＢエントリの先行アドレスから減算する。ステップ７１１において、このＴＬＢエントリを無効化する。
【００４７】
カウンタ値がゼロである場合、所定範囲のキャッシュラインが全てフラッシュされており、命令をリタイアさせるとしてよい。
【００４８】
上記の説明ではカウンタ値をデクリメントしているが、他の実施形態では、カウンタをインクリメントして、所定値と比較して適切な数のエントリが無効化されたか否かを判断する。
【００４９】
＜システムの例＞
図８は、適切なコンピュータシステム８０１の実施形態例を示すブロック図である。当該コンピュータシステムは、プロセッサ８００を備えている。プロセッサは、上述した命令８０２のうち少なくとも１つを実行可能な実行部８０６を少なくとも１つ有する。
【００５０】
プロセッサは、バス（例えば、フロントサイドバス）またはその他のインターコネクト８８０を介して、チップセット８８１に結合されている。インターコネクトは、プロセッサとシステム内のその他の構成要素との間で、チップセットを介してデータ信号を送信するために用いられるとしてよい。
【００５１】
チップセットは、メモリコントローラハブ（ＭＣＨ）８８２として知られているシステムロジックチップを有する。ＭＣＨは、フロントサイドバスまたは他のインターコネクト８８０に結合されている。
【００５２】
メモリ８８６がＭＣＨに結合されている。さまざまな実施形態によると、メモリはランダムアクセスメモリ（ＲＡＭ）を含むとしてよい。ＤＲＡＭは、全てではないが一部のコンピュータシステムで用いられる種類のＲＡＭの一例である。同図に示すように、メモリは、１以上の乗算命令等の命令８８７、および、データ８８８を格納するために用いられるとしてよい。
【００５３】
ＭＣＨにはさらに、コンポーネントインターコネクト８８５が結合されている。１以上の実施形態によると、コンポーネントインターコネクトは、１以上のペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）インターフェースを含むとしてよい。コンポーネントインターコネクトによって、チップセットを介して、他のコンポーネントをシステムの残りの部分に結合することが可能となるとしてよい。このようなコンポーネントの一例としては、グラフィクスチップまたはその他のグラフィクスデバイスが挙げられるが、この点は任意であり必須事項ではない。
【００５４】
チップセットはさらに、入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）８８４を有する。ＩＣＨは、ハブインターフェースバスまたはその他のインターコネクト８８３を介して、ＭＣＨに結合される。１以上の実施形態によると、バスまたはその他のインターコネクト８８３は、ダイレクトメディアインターフェース（ＤＭＩ）を含むとしてよい。
【００５５】
ＩＣＨには、データストレージ８８９が結合されている。さまざまな実施形態によると、データストレージは、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス等、または、これらの組み合わせを含むとしてよい。
【００５６】
ＩＣＨにはさらに、第２のコンポーネントインターコネクト８９０が結合されている。１以上の実施形態によると、第２のコンポーネントインターコネクトは、１以上のペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）インターフェースを含むとしてよい。第２のコンポーネントインターコネクトによって、チップセットを介してシステムの残りの部分に、さまざまな種類のコンポーネントを結合できるようになるとしてよい。
【００５７】
ＩＣＨにはさらに、シリアル拡張ポート８９１が結合されている。１以上の実施形態によると、シリアル拡張ポートは、１以上のユニバーサルシリアルバス（ＵＳＢ）ポートを含むとしてよい。シリアル拡張ポートによって、チップセットを介してシステムの残りの部分に、他のさまざまな種類の入出力デバイスを結合できるようになるとしてよい。
【００５８】
説明のためにＩＣＨに任意で結合し得る他のコンポーネントの例を幾つか挙げると、これらに限定されないが、音声コントローラ、無線送受信機、および、ユーザ入力デバイス（例えば、キーボード、マウス）がある。
【００５９】
ＩＣＨにはさらに、ネットワークコントローラが結合されている。ネットワークコントローラによって、当該システムをネットワークに結合することができるとしてよい。
【００６０】
１以上の実施形態によると、当該コンピュータシステムは、マイクロソフト・コーポレーション（（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）、米国ワシントン州レドモンド）社製の所与のバージョンのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムを実行するとしてよい。これに代えて、他のオペレーティングシステム、例えば、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）または埋込み式システム等を利用するとしてもよい。
【００６１】
これは、適切なコンピュータシステムの具体的な一例に過ぎない。例えば、１以上の別の実施形態によると、プロセッサは複数のコアを含むとしてよい。別の例を挙げると、１以上の別の実施形態では、ＭＣＨ８８２は、物理的にプロセッサ８００にオンダイで集積化されているとしてよく、プロセッサは集積化されているＭＣＨを介してメモリ８８６と直接結合されているとしてもよい。別の例を挙げると、１以上の別の実施形態では、他のコンポーネントをプロセッサにオンダイで集積化して、例えば、システム・オン・チップ（ＳＯＣ）構成とするとしてよい。さらに別の例を挙げると、１以上の別の実施形態では、コンピュータシステムが複数のプロセッサを備えるとしてもよい。
【００６２】
図９は、適切なコンピュータシステム９０１の実施形態例を示すブロック図である。この第２の実施形態例は、上述した第１の実施形態例に係るコンピュータシステムと一部、共通している点がある。説明を分かりやすくするために、共通点については全てを繰り返し説明せず、相異点に重点を置く。
【００６３】
上述した第１の実施形態例と同様に、当該コンピュータシステムは、プロセッサ９００と、Ｉ／Ｏコントローラハブ（ＩＣＨ）９８４を有するチップセット９８１とを備える。さらに第１の実施形態例と同様に、当該コンピュータシステムは、チップセットに結合されている第１のコンポーネントインターコネクト９８５、ＩＣＨに結合されている第２のコンポーネントインターコネクト９９０、ＩＣＨに結合されているシリアル拡張ポート９９１、ＩＣＨに結合されているネットワークコントローラ９９２、および、ＩＣＨに結合されているデータストレージ９８９を備える。
【００６４】
この第２の実施形態では、プロセッサ９００はマルチコアプロセッサである。マルチコアプロセッサは、プロセッサコア９９４−１から９９４−Ｍを有しており、Ｍは２以上の整数（例えば、２、４、７以上）であってよい。各コアは、本明細書に開示している命令の少なくとも１つの実施形態を実行可能な実行部を少なくとも１つ含むとしてよい。同図に示すように、コア１はキャッシュ９９５（例えば、Ｌ１キャッシュ）を含む。他のコアもそれぞれ同様に、専用キャッシュを含むとしてよい。複数のプロセッサコアは、単一の集積回路（ＩＣ）チップで実現されるとしてよい。
【００６５】
プロセッサはさらに、少なくとも１つの共有キャッシュ９９６を有する。共有キャッシュは、プロセッサの１以上の構成要素、例えば、コアによって利用されるデータ（例えば、命令）を格納するとしてよい。例えば、共有キャッシュは、プロセッサの構成要素が高速でアクセスできるように、メモリ９８６内に格納されているデータをローカルにキャッシュするとしてよい。１以上の実施形態によると、共有キャッシュは、１以上の中間レベルキャッシュを含むとしてよく、例えば、レベル２（Ｌ２）キャッシュ、レベル３（Ｌ３）キャッシュ、レベル４（Ｌ４）キャッシュまたは他のレベルのキャッシュ、最終レベルキャッシュ（ＬＬＣ）、および／または、これらの組み合わせを含むとしてよい。
【００６６】
プロセッサコアおよび共有キャッシュはそれぞれ、バスまたはその他のインターコネクト９９７に結合されている。バスまたはその他のインターコネクトによって、コアおよび共有キャッシュを互いに結合して通信を可能にするとしてよい。
【００６７】
プロセッサはさらに、メモリコントローラハブ（ＭＣＨ）９８２を有する。本実施形態例に示すように、ＭＣＨはプロセッサ９００に集積化される。例えば、ＭＣＨは、プロセッサコアと共に、オンダイで集積化されているとしてよい。プロセッサは、ＭＣＨを介して、メモリ９８６に結合されている。１以上の実施形態によると、メモリはＤＲＡＭを含むが、これは必須事項ではない。
【００６８】
チップセットは、入出力（Ｉ／Ｏ）ハブ９９３を有する。Ｉ／Ｏハブは、バス（例えば、クイックパス（ＱｕｉｃｋＰａｔｈ）インターコネクト（ＱＰＩ）またはその他のインターコネクト９８０）を介してプロセッサに結合される。Ｉ／Ｏハブ９９３には、第１のコンポーネントインターコネクト９８５が結合されている。
【００６９】
図１０は、本発明の一実施形態に係るシステム１０を示すブロック図である。システム１０００は、グラフィクスメモリコントローラハブ（ＧＭＣＨ）１０２０に結合されている１以上の処理要素１０１０、１０１５を備えるとしてよい。処理要素１０１５は任意であるので、その旨を図１０では点線で示している。
【００７０】
各処理要素は、単一のコアであってもよいし、または、複数のコアを含むとしてもよい。処理要素は、任意で、処理コア以外のオンダイ要素を含むとしてもよく、例えば、集積化されたメモリコントローラおよび／または集積化されたＩ／Ｏ制御ロジック等を含むとしてもよい。また、少なくとも１つの実施形態については、処理要素であるコアは、コア毎に複数のハードウェアスレッドコンテクストを含むマルチスレッド型であってもよい。
【００７１】
図１０は、ＧＭＣＨ１０２０がメモリ１０４０に結合されている様子を示している。メモリ１０４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）であってよい。ＤＲＡＭは、少なくとも１つの実施形態については、不揮発性キャッシュに対応付けられているとしてよい。
【００７２】
ＧＭＣＨ１０２０は、チップセットであってもよいし、または、チップセットの一部分であってもよい。ＧＭＣＨ１０２０は、プロセッサ１０１０、１０１５と通信するとしてよく、プロセッサ１０１０、１０１５とメモリ１０４０との間のやり取りを制御するとしてよい。ＧＭＣＨ１０２０はさらに、プロセッサ１０１０、１０１５と、システム１０００のその他の構成要素との間において、加速バスインターフェースとして機能するとしてよい。少なくとも１つの実施形態については、ＧＭＣＨ１０２０は、フロントサイドバス（ＦＳＢ）１０９５等のマルチドロップバスを介して、プロセッサ１０１０、１０１５と通信する。
【００７３】
ＧＭＣＨ１０２０はさらに、ディスプレイ１０４０（フラットパネルディスプレイ等）に結合されている。ＧＭＣＨ１０２０は、集積化されたグラフィクスアクセラレータを含むとしてよい。ＧＭＣＨ１０２０はさらに、入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）１０５０に結合されている。ＩＣＨ１０５０は、さまざまな周辺デバイスをシステム１０００に結合するために用いられるとしてよい。図１０の実施形態に図示しているのは、例えば、外部グラフィクスデバイス１０６０である。外部グラフィクスデバイス１０６０は、他の周辺デバイス１０７０と共に、ＩＣＨ１０５０に結合されているディスクリートなグラフィクスデバイスであってよい。
【００７４】
これに代えて、システム１０００には、上述したものに加えて、または、上述したものとは異なる処理要素を設けるとしてもよい。例えば、追加で設ける処理要素１０１５としては、プロセッサ１０１０と同じプロセッサ、プロセッサ１０１０とは異種または非対称なプロセッサ、アクセラレータ（例えば、グラフィクスアクセラレータまたはデジタルシグナルプロセッサ（ＤＳＰ））、フィールドプログラマブルゲートアレイ、または、その他の任意の処理要素を含むとしてよい。物理リソース１０１０と物理リソース１０１５との間には、アーキテクチャ特性、マイクロアーキテクチャ特性、熱的特性、消費電力特性等を含む多岐にわたる利点の測定値に関して、さまざまな相違点があるとしてよい。このような相違点によって、処理要素１０１０と処理要素１０１５との間の非対称性および異種性が明らかになるとしてよい。少なくとも１つの実施形態について、さまざまな処理要素１０１０、１０１５は、同じダイパッケージ内に設けられているとしてよい。
【００７５】
図１１には、本発明の実施形態に係るシステム１１００のブロック図を示す。図１１に示すように、マルチプロセッサシステム１１００は、ポイント・ツー・ポイント・インターコネクト・システムであり、ポイント・ツー・ポイント・インターコネクト１１５０を介して結合されている第１の処理要素１１７０および第２の処理要素１１８０を備える。図１１に示すように、処理要素１１７０およびプロセッサ１１８０はそれぞれ、マルチコアプロセッサであってよく、第１のプロセッサコアおよび第２のプロセッサコア（つまり、プロセッサコア１１７４ａおよび１１７４ｂ、ならびに、プロセッサコア１１８４ａおよび１１８４ｂ）を有する。
【００７６】
これに代えて、処理要素１１７０、１１８０のうち１以上は、プロセッサ以外の要素であってよく、例えば、アクセラレータまたはフィールドプログラマブルゲートアレイであってよい。
【００７７】
処理要素１１７０、１１８０の２つのみを図示しているが、本発明の範囲はこれに限定されないと理解されたい。他の実施形態では、所与のプロセッサに１以上の処理要素を追加で設けるとしてよい。
【００７８】
第１の処理要素１１７０はさらに、メモリコントローラハブ（ＭＣＨ）１１７２、ならびに、ポイント・ツー・ポイント（Ｐ−Ｐ）インターフェース１１７６および１１７８を有するとしてよい。同様に、第２の処理要素１１８０は、ＭＣＨ１１８２、ならびに、Ｐ−Ｐインターフェース１１８６および１１８８を有するとしてよい。プロセッサ１１７０、１１８０は、ポイント・ツー・ポイント（ＰｔＰ）インターフェース回路１１７８、１１８８を用いて、ＰｔＰインターフェース１１５０を介してデータをやり取りするとしてよい。図１１に示すように、ＭＣＨ１１７２および１１８２はそれぞれ、プロセッサを対応するメモリ、つまり、メモリ１１４２およびメモリ１１４４に結合する。メモリ１１４２およびメモリ１１４４は、メインメモリのうち対応するプロセッサにローカルに取り付けられている一部分であってよい。
【００７９】
プロセッサ１１７０、１１８０はそれぞれ、別個のＰｔＰインターフェース１１５２、１１５４を介して、ポイント・ツー・ポイント・インターフェース回路１１７６、１１９４、１１８６、１１９８を用いて、チップセット１１９０とデータをやり取りするとしてよい。チップセット１１９０はさらに、高性能グラフィクスインターフェース１１３９を介して、高性能グラフィクス回路１１３８とデータをやり取りするとしてよい。本発明の実施形態は、任意の数のプロセッシングコアを含む任意のプロセッサに設けるとしてもよいし、または、図１１の各ＰｔＰバスエージェントに設けるとしてもよい。一実施形態によると、任意のプロセッサコアは、ローカルキャッシュメモリ（不図示）を含むとしてもよいし、または、ローカルキャッシュメモリに対応付けられているとしてよい。さらに、共有キャッシュ（不図示）が、あるプロセッサが低電力モードになると一方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得るように、一方のプロセッサに含まれているか、両プロセッサの外部に設けられるがｐ２ｐインターコネクトを介して両プロセッサに接続されているとしてよい。
【００８０】
第１の処理要素１１７０および第２の処理要素１１８０はそれぞれ、Ｐ−Ｐインターコネクト１１７６、１１８６および１１８４を介してチップセット１１９０に結合されているとしてよい。図１１に示すように、チップセット１１９０は、Ｐ−Ｐインターフェース１１９４および１１９８を有する。チップセット１１９０はさらに、チップセット１１９０を高性能グラフィクスエンジン１１４８に結合するインターフェース１１９２を有する。一実施形態によると、バス１１４９を用いてグラフィクスエンジン１１４８をチップセット１１９０に結合するとしてよい。これに代えて、ポイント・ツー・ポイント・インターコネクト１１４９を用いて結合するとしてもよい。
【００８１】
また、チップセット１１９０は、インターフェース１１９６を介して第１のバス１１１６に結合されるとしてよい。一実施形態によると、第１のバス１１１６は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスであってよく、または、ＰＣＩ  Ｅｘｐｒｅｓｓバス等のバスあるいは別の第３世代Ｉ／Ｏインターコネクトバスであってもよいが、本発明の範囲はこれに限定されない。
【００８２】
図１１に示すように、さまざまなＩ／Ｏデバイス１１１４は、第１のバス１１１６を第２のバス１１２０に結合しているバスブリッジ１１１８と共に、第１のバス１１１６に結合されているとしてよい。一実施形態によると、第２のバス１１２０はロー・ピン・カウント（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ：ＬＰＣ）バスであってよい。一実施形態によると、第２のバス１１２０には、例えば、キーボード／マウス１１２２、通信デバイス１１２６、および、コード１１３０を含むディスクドライブ等の大容量格納装置であるデータ格納部１１２８を含むさまざまなデバイスが結合されているとしてよい。また、オーディオＩ／Ｏ１１２４が第２のバス１１２０に結合されているとしてよい。尚、他のアーキテクチャも可能である。例えば、図１１のポイント・ツー・ポイント・アーキテクチャの代わりに、システムはマルチドロップバスまたはその他の同様のアーキテクチャを採用するとしてもよい。
【００８３】
図１２には、本発明の一実施形態に係るシステム１２００のブロック図を示している。図１１および図１２では、同様の構成要素に同様の参照番号を割り当てており、図１１に示した一部の内容は、図１２の内容をあいまいにすることを避けるべく、図１２では省略している。
【００８４】
図１２では、処理要素１１７０、１１８０のそれぞれに、メモリおよびＩ／Ｏの制御ロジック（ＣＬ）１１７２および１１８２が集積化されている実施形態を示している。少なくとも１つの実施形態については、ＣＬ１１７２、１１８２は、図１０および図１１に関連付けて上述したもののようなメモリコントローラハブロジック（ＭＣＨ）を含むとしてよい。また、ＣＬ１１７２、１１８２はさらに、Ｉ／Ｏ制御ロジックを含むとしてよい。図１２では、ＣＬ１１７２、１１８２に結合されているのはメモリ１１４２、１１４４のみではなく、Ｉ／Ｏデバイス１２１４もまた制御ロジック１１７２、１１８２に結合されている様子を示している。レガシーＩ／Ｏデバイス１２１５は、チップセット１１９０に結合されている。
【００８５】
本明細書に記載されているメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、または、このような実装方法の組み合わせによって実装され得る。本発明の実施形態は、少なくとも１つのプロセッサ、データストレージシステム（揮発性メモリおよび不揮発性メモリ、ならびに／または、格納要素を含む）、少なくとも１つの入力デバイス、および、少なくとも１つの出力デバイスを備えるプログラム可能なシステムで実行されるコンピュータプログラムとして実現され得る。
【００８６】
図１１にコード１１３０として図示したようなプログラムコードは、本明細書に記載した機能を実行して出力情報を生成するべく、入力データに適用されるとしてよい。したがって、本発明の実施形態はさらに、本発明の実施形態に係る処理を実行するための命令を格納している機械可読媒体、または、本明細書に記載した構造、回路、装置、プロセッサおよび／あるいはシステムの特徴を定義しているＨＤＬ等の設計データを格納している機械可読媒体を含む。このような実施形態は、プログラム製品とも呼ばれるとしてよい。
【００８７】
このような機械可読格納媒体は、これらに限定されないが、機械またはデバイスが製造または形成した粒子を具現化して配列したものを含むとしてよい。例えば、ハードディスク等の格納媒体、任意のその他の種類のディスク、例えば、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）および光磁気ディスク、リードオンリーメモリ（ＲＯＭ）等の半導体デバイス、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、磁気カードあるいは光カード、または、電子的に命令を格納するのに適した任意のその他の種類の媒体を含むとしてよい。
【００８８】
出力情報は、公知の方法で、１以上の出力デバイスに供給されるとしてよい。本願では、処理システムは、プロセッサを備える任意のシステムを含む。プロセッサは、例えば、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）またはマイクロプロセッサである。
【００８９】
プログラムは、処理システムとの通信を可能とするために高級プロシージャプログラミング言語またはオブジェクト指向型プログラミング言語で実現されるとしてよい。プログラムはさらに、所望の場合には、アセンブリ言語または機械語で実現されるとしてもよい。実際には、本明細書に記載したメカニズムの範囲はどの特定のプログラミング言語にも限定されない。いずれの場合にしても、コンパイラ型言語またはインタプリタ型言語であってよい。
【００９０】
少なくとも１つの実施形態の１以上の側面は、プロセッサが備えるさまざまなロジックを表現しており、機械可読媒体に格納されている表現データによって実現されるとしてよい。当該表現データを機械が読み出すと、当該機械は本明細書に記載した方法を実行するためのロジックを生成する。このような表現は、「ＩＰコア」として知られており、有形機械可読媒体に格納されて、さまざまな顧客または製造設備に供給されて、実際にロジックまたはプロセッサを生成する製造機械にロードされるとしてよい。
【００９１】
特定の処理は、ハードウェア素子で実行されるとしてよく、または、機械実行可能命令で具現化されるとしてよい。このような機械実行可能命令は、当該命令でプログラミングされた回路またはハードウェアに、当該特定の処理を実行させるために用いられるとしてよく、または、少なくともこのような結果となるように利用され得る。回路は、数例を挙げると、汎用プロセッサあるいは特定用途向けプロセッサ、または、論理回路を含むとしてよい。上述した処理はさらに、任意でハードウェアおよびソフトウェアの組み合わせによって実行されるとしてよい。実行部および／またはプロセッサは、命令が指定する結果のオペランドを格納するための機械命令、または、当該機械命令から導出された１以上の制御信号に応じて動作する特定あるいは具体的な回路、または、その他のロジックを含むとしてよい。
【００９２】
これは、適切なシステムの１つの具体例に過ぎない。ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末（ＰＤＡ）、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯可能メディアプレーヤ、ハンドヘルドデバイス、および、その他のさまざまな電子デバイスについて関連技術分野で公知の他のシステム設計およびシステム構成も適切である。一般的に、本明細書に開示したようなプロセッサおよび／または実行部を組み込むことが可能な多岐にわたるシステムまたは電子デバイスは概して適切である。
【００９３】
上記では、説明のために、本発明の実施形態を完全に理解していただくべく、具体的且つ詳細な内容を数多く記載した。しかし、上記の具体的且つ詳細な内容の一部を利用することなく１以上の他の実施形態を実施し得ることは当業者には明らかである。本明細書に記載した具体的な実施形態は、本発明を制限するためではなく、本発明の実施形態を説明するためのものである。本発明の範囲は、上述した具体例によって決まるのではなく、特許請求の範囲によってのみ決まる。また、公知の回路、構造、デバイス、および処理は、本明細書の理解があいまいになることを避けるべく、ブロック図形式で図示しているか詳細な内容は省略している。適切だと見なされる場合には、参照番号または参照番号の下位桁について複数の図面にわたって同じものを用いて、任意で特性も同様である対応する構成要素または同様の構成要素を示している。
【図１】
2015084250.tif 000003
【図２】
2015084250.tif 000004
【図３】
2015084250.tif 000005
【図４】
2015084250.tif 000006
【図５】
2015084250.tif 000007
【図６】
2015084250.tif 000008
【図７】
2015084250.tif 000009
【図８】
2015084250.tif 000010
【図９】
2015084250.tif 000011
【図１０】
2015084250.tif 000012
【図１１】
2015084250.tif 000013
【図１２】
2015084250.tif 000014
【手続補正書】
【提出日】平成27年1月28日(2015.1.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサの複数のキャッシュラインをフラッシュする方法であって、
フラッシュされる前記複数のキャッシュラインの先頭アドレスの少なくとも一部分を第１のレジスタにロードする段階と、
フラッシュされるキャッシュラインの数を表すカウンタ値を第２のレジスタにロードする段階と、
前記プロセッサの前記複数のキャッシュラインがフラッシュされる旨を示す第１のフィールドを含み、前記フラッシュされる前記複数のキャッシュラインの前記先頭アドレスを非明示的に提供する単一の命令を受信する段階と、
前記単一の命令に応じて、前記プロセッサの前記複数のキャッシュラインをフラッシュする段階と
を備え、
前記フラッシュする段階は、
前記フラッシュされる前記複数のキャッシュラインの前記先頭アドレスに対応付けられている第１のキャッシュラインをフラッシュする段階と、
前記第２のレジスタに格納されている前記カウンタ値をデクリメントする段階と、
フラッシュされるべき第２のキャッシュラインの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階と、
前記第２のキャッシュラインをフラッシュする段階と
を有する方法。
【請求項２】
前記フラッシュされる第２のキャッシュラインの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスに所与の数を加算する段階
を有する請求項１に記載の方法。
【請求項３】
前記フラッシュされる第２のキャッシュラインの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスから所与の数を減算する段階
を有する請求項１または２に記載の方法。
【請求項４】
オペレーティングシステム（ＯＳ）は、前記単一の命令の実行を要求する請求項１から３のいずれか１項に記載の方法。
【請求項５】
複数のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）エントリを無効化する方法であって、
無効化される前記複数のＴＬＢエントリの先頭アドレスのうち少なくとも一部分を第１のレジスタにロードする段階と、
無効化されるＴＬＢエントリの数を表すカウンタ値を第２のレジスタにロードする段階と、
前記複数のＴＬＢエントリが無効化される旨を示す第１のフィールドを含み、無効化される第１のＴＬＢエントリの先頭アドレスを非明示的に提供する単一の命令を受信する段階と、
前記単一の命令に応じて、前記複数のＴＬＢエントリを無効化する段階と
を備え、
前記無効化する段階は、
前記無効化される複数のＴＬＢエントリの前記先頭アドレスに対応付けられている第１のＴＬＢエントリを無効化する段階と、
前記第２のレジスタに格納されている前記カウンタ値をデクリメントする段階と、
無効化される第２のＴＬＢエントリの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階と、
前記第２のＴＬＢエントリを無効化する段階と
を有する方法。
【請求項６】
前記無効化される第２のＴＬＢエントリの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスに所与の数を加算する段階
を有する請求項５に記載の方法。
【請求項７】
前記無効化される第２のＴＬＢエントリの第２のアドレスのうち少なくとも一部分を含むように前記第１のレジスタを更新する段階は、
前記先頭アドレスから所与の数を減算する段階
を有する請求項５または６に記載の方法。
【請求項８】
オペレーティングシステム（ＯＳ）は、前記単一の命令の実行を要求する請求項５から７のいずれか１項に記載の方法。
【請求項９】
キャッシュラインとしてデータを格納するキャッシュと、
第１の命令の実行に応じてフラッシュされるキャッシュラインの数を表す値を格納する第１のレジスタと、
前記第１の命令の実行に応じてフラッシュされる前記キャッシュラインのアドレスのうち少なくとも一部分を格納する第２のレジスタと、
前記キャッシュの複数のキャッシュラインがフラッシュされる旨を示す第１のフィールドを含み、フラッシュされる前記複数のキャッシュラインの先頭アドレスを非明示的に提供する前記第１の命令をデコードするデコード回路と、
前記第１のレジスタに格納されたフラッシュされるキャッシュラインの数を表すカウンタ値をデクリメントすることによって、デコードされた前記第１の命令が示す前記複数のキャッシュラインをフラッシュする実行回路と
を備え、
前記実行回路は、フラッシュされる前記複数のキャッシュラインの前記先頭アドレスに対応付けられている第１のキャッシュラインをフラッシュし、フラッシュされるべき第２のキャッシュラインのアドレスのうち少なくとも一部分を含むように前記第２のレジスタのフラッシュされるべきアドレスの少なくとも一部を更新して、前記第２のキャッシュラインをフラッシュする装置。
【請求項１０】
ページ・テーブル・エントリを格納するトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を
をさらに備え、
前記デコード回路は、複数のＴＬＢページ・テーブル・エントリが無効化される旨を示す第１のフィールドを含む第２の命令をデコードする請求項９に記載の装置。
【請求項１１】
前記第２の命令が示す前記複数のＴＬＢページ・テーブル・エントリを無効化する、前記ＴＬＢに設けられている実行回路をさらに備える請求項１０に記載の装置。
【請求項１２】
前記実行回路は、
デコードされた第１の命令が示す前記複数のキャッシュラインをフラッシュする方法を表すステートマシンであって、キャッシュロジックに格納されているステートマシン
を有する請求項９から１１のいずれか１項に記載の装置。
【請求項１３】
前記第１の命令を、前記実行回路が実行する複数のマイクロ演算に変換するマイクロコードをさらに備える請求項９から１２のいずれか１項に記載の装置。