JPWO2019182855A5 - - Google Patents
Download PDFInfo
- Publication number
- JPWO2019182855A5 JPWO2019182855A5 JP2020533106A JP2020533106A JPWO2019182855A5 JP WO2019182855 A5 JPWO2019182855 A5 JP WO2019182855A5 JP 2020533106 A JP2020533106 A JP 2020533106A JP 2020533106 A JP2020533106 A JP 2020533106A JP WO2019182855 A5 JPWO2019182855 A5 JP WO2019182855A5
- Authority
- JP
- Japan
- Prior art keywords
- address
- access
- linear
- address space
- linear address
- 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.)
- Granted
Links
- 239000000523 sample Substances 0.000 claims description 46
- 238000005192 partition Methods 0.000 claims description 13
- 238000013519 translation Methods 0.000 claims description 9
- 239000000872 buffer Substances 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 58
- 238000010586 diagram Methods 0.000 description 23
- 238000000034 method Methods 0.000 description 23
- 238000007667 floating Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Description
本発明の分野は概して、コンピュータプロセッサアーキテクチャに関し、より具体的には、スーパバイザおよびユーザアドレス空間を保護する試みに関連する。
ランダム化をバイパスすることによって、カスタマイズされたペイロードを攻撃者が作成することを可能にする、カーネルアドレス空間配置ランダム化(KASLR)を破るための様々なエクスプロイト技法が開発されてきた。これらの技法は、以下の特性に依存する。1)ユーザ/スーパバイザ権限に基づくフォールトがページテーブルウォークを必要とした、2)ユーザ空間からのスーパバイザコード/データへの投機的アクセスは、さらにページウォークをもたらすが、しかしながら、アクセスが投機的でフォールトが配信されないので、オペレーティングシステムは、これを通知されない、3)ソフトウェアプリフェッチ命令およびキャッシュラインデモート(例えば、CLDEMOTE)のような特定の命令は、決してフォールトを配信しないが、フォールトの際に静かに破棄される。
本発明は、添付図面の図において限定ではなく例として示されており、それらの中で、同様の参照符号は同様の要素を示している。
以下の説明において、多数の具体的な詳細事項が説明される。しかしながら、本発明の実施形態は、これらの具体的な詳細事項を伴うことなく実施可能であると理解される。複数の他の例では、この説明の理解を妨げないように、周知の回路、構造、および技法は、詳細に示されていない。
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」等の記載は、説明される実施形態が、特定の特徴、構造、または特性を含んでよいが、各実施形態がその特定の特徴、構造、または特性を必ずしも含まなくてよいことを示す。また、そのような語句は、必ずしも同じ実施形態を指すものではない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載される場合、明記されているか否かに関わらず、複数の他の実施形態に関連するそのような特徴、構造、または特性に影響を与えることは、当業者の知識の範囲内であるものと思われる。
上に記載された、アドレス指定に対するいくつかのアプローチにおいて、ユーザおよびスーパバイザ空間のために別個のページテーブルが使用される。残念ながら、これらのテーブルの使用は、以下の欠点がある。カーネルエントリ/エグジットでページテーブルを切り替える必要があること、および、カーネルページテーブルにおいてグローバルページを使用できないことに起因して、性能オーバヘッドがある。2つのページテーブルを維持する必要がある追加メモリオーバヘッドがある。そして、2つのページテーブルを管理するソフトウェアオーバヘッドおよび複雑性がある。さらに、ユーザページテーブルはさらに、カーネルアドレスのユーザモードへのリークを可能にし得る、いくつかのスーパバイザマッピング(例えば、トランポリンページの場合、記述子テーブルなど)を有する必要がある。
ここでは、不要な権限横断アクセスに対する防護のための「キル・ザ・プローブ」アプローチの実施形態を詳述する。特に、ユーザおよび/またはスーパバイザモードプログラム(スレッド)に利用可能なリニアアドレス空間は、少なくとも「ユーザアドレス空間」および「スーパバイザアドレス空間」に区分化される。いくつかの実施形態において、この区分化は、リニアアドレスの64ビットのビット63(最上位ビット)に基づく。例えば、いくつかの実施形態において、正のアドレス(0に設定されたビット63を有するリニアアドレス)は、ユーザアドレスであり、ユーザアドレス空間に属し、負のアドレス(1に設定されたビット63を有するリニアアドレス)は、スーパバイザアドレスであり、スーパバイザアドレス空間に属する。他の実施形態において、正のアドレス(0に設定されたビット63を有するリニアアドレス)は、スーパバイザアドレスであり、スーパバイザアドレス空間に属し、負のアドレス(1に設定されたビット63を有するリニアアドレス)は、ユーザアドレスであり、ユーザアドレス空間に属する。
キル・ザ・プローブ(KTP)が有効になっている状態で、スーパバイザアドレスへのユーザモードのロード/格納/コードフェッチは概して、一般保護違反を引き起こし、ユーザモードアドレスへのスーパバイザモードコードフェッチは概して、一般保護違反を引き起こす。このフォールトは、(例えば、何らかのトランスレーションルックアサイドバッファ(TLB)のルックアップ無しで、または、何らかのページウォークを行うことなく)アドレス生成時に、または、詳述されるようにフロントエンドによって配信される。これは、厄介な追加メモリまたは性能オーバヘッドを課すことなく、カーネルアドレス空間配置をプローブするために使用される攻撃技法のクラス全体を閉じる。
図1は、リニアアドレス空間を区分化する実施形態、および、停止され得るこれらの区分のアクセスのタイプを図示する。示されるように、標準リニアアドレス空間は、スーパバイザアドレス空間101およびユーザアドレス空間103に分割される。いくつかの実施形態において、非標準アドレス空間105は、これら空間101および103の間にある。この例において、64ビット標準リニアアドレス空間が図示されているが、しかしながら、より小さい、または、より大きいアドレス空間が使用され得る。空間の間を表現するために単一ビットが使用される。
図示されるように、スーパバイザアドレス空間101は、FFFF 8000 0000 0000からFFFF FFFF FFFF FFFFである。これは、1にセットされたビット63を有するリニアアドレスがスーパバイザアドレスであるという点で、「負」のアドレス空間である。ユーザアドレス空間103は、0000 0000 0000 0000から0000 7FFF FFFF FFFFである。ユーザアドレス空間103は、0に設定されたビット63を有するリニアアドレスがユーザアドレスであるという点で、「正」のアドレス空間である。
リニアアドレスを使用するユーザモードプログラム(スレッド)111からのアクセスは、ユーザアドレス空間103に許可されているが、一般的に、ユーザモードプログラム(スレッド)111からのプローブは、スーパバイザアドレス空間101に到達することを停止されるべきである。
同様に、リニアアドレスを使用するスーパバイザモードプログラム(スレッド)113からのアクセスは、スーパバイザアドレス空間101に許可されているが、一般的に、スーパバイザモードプログラム(スレッド)113からのコードフェッチまたはプローブは、ユーザアドレス空間103に到達することを停止されるべきである。
図2は、リニアアドレス空間を区分化する実施形態、および、停止され得るこれらの区分へのアクセスのタイプを図示する。示されるように、標準リニアアドレス空間は、スーパバイザアドレス空間201およびユーザアドレス空間203に分割される。いくつかの実施形態において、非標準アドレス空間205はこれら空間201および203の間にある。この例において、64ビット標準リニアアドレス空間が図示されているが、しかしながら、より小さい、または、より大きいアドレス空間が使用され得る。
図示されるように、ユーザアドレス空間203は、FFFF 8000 0000 0000からFFFF FFFF FFFF FFFFである。これは、1にセットされたビット63を有するリニアアドレスがユーザアドレスであるという点で、「負」のアドレス空間である。スーパバイザアドレス空間201は、0000 0000 0000 0000から0000 7FFF FFFF FFFFである。スーパバイザアドレス空間201は、0に設定されたビット63を有するリニアアドレスがユーザアドレスを有するという点で、「正」のアドレス空間である。
リニアアドレスを使用するユーザモードプログラム(スレッド)211からのアクセスは、ユーザアドレス空間203に許可されているが、一般的に、ユーザモードプログラム(スレッド)211からのプローブは、スーパバイザアドレス空間201に到達することを停止されるべきである。
同様に、リニアアドレスを使用するスーパバイザモードプログラム(スレッド)213からのアクセスは、スーパバイザアドレス空間201に許可されているが、一般的に、スーパバイザモードプログラム(スレッド)213からのコードフェッチまたはプローブは、ユーザアドレス空間203に到達することを停止されるべきである。
KTPの技法は、プロセッサコアの様々な部分において実装され得る。図3は、KTPをサポートするプロセッサコアの回路の実施形態を図示する。特に、本明細書において詳述される実施形態は、フロントエンドユニット330における1または複数のプローブチェックユニット394と、アドレス生成回路390におけるアクセスチェック回路とを含む。
プローブチェックユニット394は、次命令ポインタ(NIP)発生器392と、命令TLBユニット336および命令キャッシュユニット334との間にある。
プローブチェックユニット394は、ユーザモードプログラム(スレッド)からのコードフェッチまたはプローブがスーパバイザリニアアドレス空間にアクセスすることを停止する。アクセスが許可されていないと決定すると、プローブチェックユニット394は、フォールトを引き起こす、および/または、投機的コードフェッチアクセスをキャンセルする。いくつかの実施形態において、アクセスが許可されていないと決定されたとき、TLBルックアップ、ページウォーク、または命令キャッシュルックアップは実行されない。更に、いくつかの実施形態において、プローブチェックユニット394は、現在の権限レベルがユーザモードであり、KTPが有効であり、ページングが有効であり、物理アドレス拡張子(PAE)が利用され、ロングモードが有効であり、コードフェッチまたはプローブのリニアアドレスの最上位ビットが、スーパバイザアドレス空間におけるアドレスを示すように設定されているときにフォールトを生成する。
しかしながら、いくつかの実施形態において、スーパバイザアドレスの範囲はバイパス範囲を通じてユーザ空間(ユーザモードプログラム(スレッド))に利用可能となる。いくつかの実施形態において、この範囲は、モデル固有レジスタ(MSR)において指定される。例えば、このMSRのビット最大リニアアドレス(MAX_LA):39はバイパスプレフィックスを定義し、リニアアドレス[MAX_LA-1:39]がバイパスプレフィックスに等しいとき、ユーザモードプログラム(スレッド)からのこの範囲へのアクセスのために、KTP施行が実行されない。
プローブチェックユニット394は、スーパバイザモードプログラム(スレッド)からユーザリニアアドレス空間へのコードフェッチまたはプローブを停止する。プローブチェックユニット394は、アクセスが許可されていないと決定すると、フォールトを生じさせる、および/または、投機的コードフェッチをキャンセルする。いくつかの実施形態において、アクセスが許可されていると決定されたとき、TLBルックアップ、ページウォーク、または命令キャッシュルックアップは実行されない。更に、いくつかの実施形態において、プローブチェックユニット394は、現在の権限レベルがスーパバイザモードであり、KTPが有効であり、ページングが有効であり、物理アドレス拡張子(PAE)が利用され、ロングモードが有効であり、コードフェッチまたはプローブのリニアアドレスの最上位ビットが、ユーザアドレス空間におけるアドレスを示すように設定されているときにフォールトを生成する。
アドレス生成ユニット390は、ユーザモードプログラム(スレッド)からスーパバイザアドレス空間へ行われた非スーパバイザリニアアクセスがあるときを決定する。非スーパバイザリニアアクセス操作の例は、限定されるものではないが、ロード、格納、キャッシュラインフラッシュ(例えば、CLFLUSHまたはCLFLUSHOPT)、キャッシュラインデモーション(例えば、CLDEMOTE)、および、スーパバイザ空間アドレスにおいてリニアアドレスを利用することを試みるキャッシュラインライトバック(例えば、CLWB)のための命令、または、スーパバイザ空間アドレスのプリフェッチのための命令を含む、1または複数のリニアアクセス操作を含む。いくつかの実施形態において、非スーパバイザリニアアクセス操作は、ユーザモードから行われるが、いくつかのセグメントレジスタおよびそれらの関連アドレス指定テーブル(グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/または、タスクレジスタなど)に行われないリニアアクセス操作(命令またはプリフェッチ)である。なお、このことは、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/またはタスクレジスタがさらに許可され得ることを意味する。
アドレス生成ユニット390は、スーパバイザモードプログラム(スレッド)からユーザアドレス空間に行われたスーパバイザリニアアクセスがあるときを決定する。スーパバイザリニアアクセス操作の例は、限定されるものではないが、ロード、格納、キャッシュラインフラッシュ(例えば、CLFLUSHまたはCLFLUSHOPT)、キャッシュラインデモーション(例えば、CLDEMOTE)、および、ユーザ空間アドレスにおいてリニアアドレスを利用することを試みるキャッシュラインライトバック(例えば、CLWB)のための命令、または、ユーザ空間アドレスのプリフェッチのための命令を含む、1または複数のリニアアクセス操作を含む。いくつかの実施形態において、スーパバイザリニアアクセス操作は、ユーザモードにおいて、または、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/またはタスクレジスタに対して実行されないリニアアクセス操作である。
コア390は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、あるいはハイブリッドまたは代替のコアタイプであってよい。さらに別の選択肢として、コア390は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理装置(GPGPU)コア、グラフィックスコアなどの専用コアであってもよい。
フロントエンドユニット330には、命令キャッシュユニット334に結合された分岐予測ユニット332が含まれ、命令キャッシュユニット334は命令トランスレーションルックアサイドバッファ(TLB)336に結合され、TLB336は命令フェッチユニット338に結合され、命令フェッチユニット338は復号ユニット340に結合される。復号ユニット340(またはデコーダ)は、命令を復号し、元の命令から復号され、これらを反映し、またはこれらから導出された1つまたは複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、または他の制御信号を、出力として生成してよい。復号ユニット340は、様々な異なる機構を用いて実装されてよい。適切な機構の例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリーメモリ(ROM)などが含まれるが、それらに限定されない。一実施形態において、コア390は、マイクロコードROM、または特定のマクロ命令のためのマイクロコードを(例えば、復号ユニット340またはフロントエンドユニット330内の他のものに)格納する他の媒体を含む。復号ユニット340は、実行エンジンユニット350におけるリネーミング/アロケータユニット352に結合される。
実行エンジンユニット350には、リタイアメントユニット354と、1つまたは複数のスケジューラユニット356のセットとに結合された、リネーミング/アロケータユニット352が含まれる。スケジューラユニット356は任意の数の異なるスケジューラを表し、リザベーションステーション、中央命令ウィンドウなどを含む。スケジューラユニット356は、物理レジスタファイルユニット358に結合される。物理レジスタファイルユニット358は各々、1または複数の物理レジスタファイルを表す。1または複数の物理レジスタファイルはそれぞれ、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、制御およびステータス(例えば、実行すべき次の命令のアドレス、および/または、制御およびステータスレジスタである命令ポインタ)等、1または複数の異なるデータタイプを格納している。一実施形態では、物理レジスタファイルユニット358は、ベクトルレジスタユニットおよびスカラレジスタユニットを備える。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供することができる。物理レジスタファイルユニット358は、レジスタリネーミングおよびアウトオブオーダ実行が(例えば、リオーダバッファおよびリタイアメントレジスタファイルを使用すること、将来ファイル、履歴バッファ、およびリタイアメントレジスタファイルを使用すること、レジスタマップおよびレジスタのプールを使用することなどで)実装され得る様々な方法を示すために、リタイアメントユニット354と重なっている。リタイアメントユニット354および物理レジスタファイルユニット358は、実行クラスタ360に結合される。実行クラスタ360には、1つまたは複数の実行ユニット362のセットおよび1つまたは複数のメモリアクセスユニット364のセットが含まれる。実行ユニット362は、様々な演算(例えば、シフト、加算、減算、乗算)を様々なタイプのデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に実行してよい。いくつかの実施形態は、特定の機能または機能のセットに専用のいくつかの実行ユニットを含んでもよいが、他の実施形態は、ただ1つの実行ユニットまたはすべてがすべての機能を実行する複数の実行ユニットを含んでもよい。スケジューラユニット356、物理レジスタファイルユニット358、および実行クラスタ360は、特定の実施形態が特定のタイプのデータ/演算用の別々のパイプライン(例えばスカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、ならびに/または各々が独自のスケジューラユニット、物理レジスタファイルユニット、および/もしくは実行クラスタを有するメモリアクセスパイプライン-別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット364を有する特定の実施形態が実装される)を作成するので、場合によっては複数であるように示されている。別々のパイプラインが使用される場合、これらのパイプラインのうちの1つまたは複数がアウトオブオーダ発行/実行であり、残りがインオーダであってもよいことも理解されたい。
メモリアクセスユニット364のセットはメモリユニット370に結合され、メモリユニット370には、レベル2(L2)キャッシュユニット376に結合されたデータキャッシュユニット374に結合されたデータTLBユニット372が含まれる。例示的な1つの実施形態において、メモリアクセスユニット364は、ロードユニット、ストアアドレスユニット、ストアデータユニットを含むことができ、それぞれがメモリユニット370内のデータTLBユニット372に結合される。命令キャッシュユニット334はさらに、メモリユニット370内のレベル2(L2)キャッシュユニット376に結合される。L2キャッシュユニット376は、1つまたは複数の他のレベルのキャッシュに結合され、最終的にメインメモリに結合される。
例として、例示的なレジスタリネーミング、アウトオブオーダ発行/実行コアアーキテクチャは、以下のようにパイプライン300を実装することができる。1)命令フェッチ338がフェッチステージ302および長さ復号ステージ304を実行する。2)復号ユニット340が復号ステージ306を実行する。3)リネーミング/アロケータユニット352が割当てステージ308およびリネーミングステージ310を実行する。4)スケジューラユニット356がスケジュールステージ312を実行する。5)物理レジスタファイルユニット358およびメモリユニット370がレジスタ読み取り/メモリ読み取りステージ314を実行し、実行クラスタ360が実行ステージ316を実行する。6)メモリユニット370および物理レジスタファイルユニット358がライトバック/メモリ書き込みステージ318を実行する。7)様々なユニットが例外処理ステージ322に関与してもよい。8)リタイアメントユニット354および物理レジスタファイルユニット358がコミットステージ324を実行する。
コア390は、本明細書で説明された命令を含む、1つまたは複数の命令セット(例えば、(より新しいバージョンで追加されたいくつかの拡張を有する)x86命令セット、カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セット、カリフォルニア州サニーベールのARM Holdingsの(NEONなどのオプションの追加拡張を有する)ARM命令セット)をサポートすることができる。一実施形態では、コア390はパックドデータ命令セット拡張子(例えば、AVX1、AVX2)をサポートするロジックを含み、これによって、多くのマルチメディアアプリケーションが使用する演算がパックドデータを使用して実行できるようになる。
コアは、(演算またはスレッドの2つ以上の並列セットを実行する)マルチスレッド化をサポートしてもよく、タイムスライスマルチスレッド化、(単一の物理的コアが、その物理的コアが同時にマルチスレッド化されるスレッドの各々に論理コアを提供する)同時マルチスレッド化、またはこれらの組み合わせ(例えば、インテル(登録商標)ハイパースレッディングテクノロジーの場合のような、タイムスライスフェッチおよび復号ならびにその後の同時マルチスレッド化)を含む様々な方法で、これを行えることは、理解されるべきである。
レジスタリネーミングはアウトオブオーダ実行の文脈で説明されているが、レジスタリネーミングはインオーダアーキテクチャで使用されてもよいことを理解されたい。図示されたプロセッサの実施形態はまた、別々の命令およびデータキャッシュユニット334/374ならびに共有L2キャッシュユニット376を含むが、代替の実施形態は、例えば、レベル1(L1)内部キャッシュまたは複数レベルの内部キャッシュなどの、命令とデータの両方のための単一の内部キャッシュを有してもよい。いくつかの実施形態において、システムは、内部キャッシュと、コアおよび/またはプロセッサの外部にある外部キャッシュの組合せを含んでもよい。あるいは、キャッシュのすべてがコアおよび/またはプロセッサの外部にあってもよい。
図4は、アドレス生成回路390の態様の実施形態を図示する。アクセスチェック回路413は、要求されたアクセスが許可されるかどうかを決定し、この指示を(通常のアドレス生成機能を実行する)アドレス生成回路390のその他の部分に提供する。アドレス生成回路390は、この決定をするために複数の入力を受信する。
示されるように、アドレス生成回路390は、リニアアクセス命令またはプリフェッチ要求によって使用されるリニアアドレス403の一部をアクセス回路413で受信する。特に、リニアアドレスの最上位ビットが受信される。
現在の権限レベルが権限レベルストレージ405から受信される。例えば、現在の権限レベルがユーザレベル(例えばリング3)か、または、スーパバイザレベル(例えば、リング0)かの指示が権限レベルストレージ405から受信される。いくつかの実施形態において、権限レベルストレージ405はセグメントレジスタである。
いくつかの実施形態において、スーパバイザセグメントレジスタ409(例えば、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/または、タスクレジスタ)が命令またはプリフェッチによって要求されているかどうかの指示がアクセスチェック回路に提供される。いくつかの実施形態において、バイパス範囲レジスタ411の使用およびその値の指示がアクセスチェック回路413によって受信される。
また、アクセスチェック回路413は、いくつかの実施形態において、1または複数のコントロールレジスタ412から入力を受信する。例えば、KTPが有効かどうか、ページングが有効かどうか、物理アドレス拡張子(PAE)が利用されるかどうか、および、ロングモードが有効かどうかについての入力がコントロールレジスタから受信される。いくつかの実施形態において、コントロールレジスタ4(CR4)は、KTPおよびPAEの指示を提供し、CR0は、ページングが有効かどうかの指示(CR.PG)を提供し、Extended Feature Enable Registerは、ロングモードが有効かどうかの指示(IA32_EFER.LME)を提供する。例えば、ページングモードが64ビットか(例えば、IA-32e 4レベルページング)。
いくつかの実施形態において、アクセスチェック回路413は、1または複数の方法として、上で詳述された操作を実行するよう設計された組み合わせ論理回路である。他の実施形態において、アクセスチェック回路413は、1または複数の方法を実行するようステートマシン415を動作させる。そのような方法の実施形態の例が図5に関連して詳述される。
図5は、リニアアクセス命令またはプリフェッチに応答して、アドレス生成回路によって実行される方法の実施形態を図示する。いくつかの実施形態において、方法の実施形態がステートマシンを使用して実行される。
501において、リニアアクセス操作(命令またはプリフェッチ要求)が受信される。そのような命令の例は上で詳述された。
503において、現在の権限レベル(CPL)の決定が行われる。例えば、CPLは、権限レベルストレージ405から取得される。この例において、ユーザおよびスーパバイザという対象の2つの権限レベルのみがある。
決定されたCPLがユーザ(例えばレベル3)であるとき、受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているかどうかの決定が504において行われる。例えば、いくつかの実施形態において、このビットが1に設定されている場合(スーパバイザアドレス空間が負である実施形態)、この決定は、操作がユーザCPLを有し、アクセスが許可されない可能性があることを指示する。
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスが507において許可され、通常のアドレス生成タスクが継続し、操作は実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスは許可されない。その後、受信された操作が非スーパバイザリニアアクセスのためのものであるかどうかの決定が505において行われる。例えば、操作が、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/またはタスクレジスタに対するリニアアクセスであるか、ならびに、ユーザ権限レベルであるか。換言すれば、非スーパバイザリニアアクセスは、((CPL==3&&!GDTR&&!LDTR&&!DTR&&!TR)&リニアアクセス)である。
操作が非スーパバイザリニアアクセスであるとき、それは507で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。
いくつかの実施形態において、操作がスーパバイザリニアアクセスである場合、受信された操作によって使用されるアドレスがバイパス範囲にあるかどうかの決定が508で行われる。当然、バイパス範囲は有効にされ、これについて真に設定される必要がある。アドレスがバイパス範囲内にあるとき、それは507で許可され、通常のアドレス生成タスクは継続し、操作が実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。
使用されるバイパスが無い場合(または、アドレスがバイパス範囲内に無い場合)、いくつかの実施形態において、KTPが使用されているかどうかの決定が509において行われる。例えば、いくつかの実施形態において、コントロールレジスタ(CR4など)は、KTPが使用されているときに設定されるビットを含む。KTPが使用されていないとき、操作は507で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。なお、508および509における操作は、いくつかの実施形態において、逆になる。
KTPが使用される場合、いくつかの実施形態において、操作がソフトウェアプリフェッチ命令、キャッシュラインデモート命令、または投機的アクセスの1つであるとき、その命令または投機的アクセスは511でキャンセルされる。
KTPが使用される場合、いくつかの実施形態において、非投機的アクセスのフォールトが513で生成される。例えば、いくつかの実施形態において、KTP、PAE、ページングが有効であり、ロングモードが有効であり、リニアアドレスがスーパバイザアドレスを指示し、アクセスが非スーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、((C4.KTP&&CR0.PG&&CR4.PAE&&IA32_EFER.LME&&LA[63])&&非スーパバイザリニアアクセス)であるとき、フォールトが生成される。
いくつかの実施形態において、KTPが使用される場合、TLBまたはデータキャッシュルックアップも、ページウォークも515で実行されない。
決定されたCPLがスーパバイザ(例えばレベル0)であるとき、受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されているかどうかの決定が516において行われる。例えば、いくつかの実施形態において、このビットが0に設定されている場合(ユーザアドレス空間が正である実施形態)、この決定は、操作がスーパバイザCPLを有し、アクセスが許可されない可能性があることを指示する。
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスが507において許可され、通常のアドレス生成タスクが継続し、操作は実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスは許可されない。次に、受信された操作がスーパバイザリニアアクセスのためであるかどうかの決定が517で行われる。例えば、操作が、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/またはタスクレジスタに対するリニアアクセスであるか、ならびに、スーパバイザ権限レベルであるか。換言すれば、スーパバイザリニアアクセスは、((CPL==!3||GDTR||LDTR||DTR||TR)&リニアアクセス)である。
操作がスーパバイザリニアアクセスであるとき、それは507で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。
いくつかの実施形態において、操作が非スーパバイザリニアアクセスであるとき、スーパバイザモードアクセス防止(SMAP)が有効であるかどうかの決定が518で行われる。SMAPにおいて、スーパバイザモードプログラムは任意選択で、ユーザ空間メモリマッピングを設定し、その結果、スーパバイザモードからのそれらのマッピングへのアクセスはトラップを引き起こす。いくつかの実施形態において、この決定は、SMAPおよびアライメントチェックが有効であるかどうかのステータスをチェックすることによって実行される。
SMAPが有効でないとき、操作は507で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。
SMAPが使用されているとき、または、利用可能でない場合、いくつかの実施形態において、KTPが使用されているかどうかの決定は519で行われる。例えば、いくつかの実施形態において、コントロールレジスタ(CR4など)は、KTPが使用されているときに設定されるビットを含む。KTPが使用されていないとき、操作は507で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る(例えば、物理アドレスが生成または取得され、操作(ロード等)が実行され得る)。なお、518および519における操作は、いくつかの実施形態において、逆になる。
KTPが使用される場合、いくつかの実施形態において、操作がソフトウェアプリフェッチ命令、キャッシュラインデモート命令、または投機的アクセスの1つであるとき、その命令または投機的アクセスは521でキャンセルされる。
KTPが使用される場合、いくつかの実施形態において、非投機的アクセスのフォールトが513で生成される。例えば、いくつかの実施形態において、KTP、PAE、ページングが有効であり、ロングモードが有効であり、リニアアドレスがユーザアドレスを指示し、アクセスがスーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、((C4.KTP&&CR0.PG&&CR4.PAE&&IA32_EFER.LME&&!LA[63])&&スーパバイザリニアアクセス)であるとき、フォールトが生成される。
いくつかの実施形態において、KTPが使用される場合、TLBまたはデータキャッシュルックアップも、ページウォークも525で実行されない。
図6は、プローブチェックユニット394の態様の実施形態を図示する。プローブチェックユニット394は、要求されたアクセスが可能かどうかを決定し、この指示を命令TLB336または命令キャッシュ334に提供する。プローブチェックユニット394は、この決定を行うために、複数の入力を受信する。
示されるように、プローブチェックユニット394は、リニアアクセス命令またはプリフェッチ要求によって使用されるリニアアドレス603の一部をアクセス回路613で受信する。特に、いくつかの実施形態において、リニアアドレスの最上位ビットが受信される。
現在の権限レベルが権限レベルストレージ605から受信される。例えば、現在の権限レベルがユーザレベル(例えばリング3)か、または、スーパバイザレベル(例えば、リング0)かの指示が権限レベルストレージ605から受信される。いくつかの実施形態において、権限レベルストレージ605はセグメントレジスタである。
いくつかの実施形態において、スーパバイザセグメントレジスタ609(例えば、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および/または、タスクレジスタ)が命令またはフェッチによって要求されているかどうかの指示がアクセスチェック回路に提供される。
プローブチェックユニット394はまた、1または複数のコントロールレジスタから入力を受信する。例えば、KTPが有効かどうか、ページングが有効かどうか、物理アドレス拡張子(PAE)が利用されるかどうか、および、ロングモードが有効かどうかについての入力がコントロールレジスタから受信される。いくつかの実施形態において、コントロールレジスタ4(CR4)は、KTPおよびPAEの指示を提供し、CR0は、ページングが有効かどうかの指示(CR.PG)を提供し、Extended Feature Enable Registerは、ロングモードが有効かどうかの指示(IA32_EFER.LME)を提供する。例えば、ページングモードが64ビットか(例えば、IA-32e 4レベルページング)。
いくつかの実施形態において、プローブチェックユニット394は、1または複数の方法として、上で詳述された操作を実行するよう設計された組み合わせ論理回路である。他の実施形態において、プローブチェックユニット394は、1または複数の方法を実行するようステートマシン615を動作させる。そのような方法の実施形態の例が図7に関連して詳述される。
図7は、コードフェッチまたはプローブに応答して、プローブチェックユニットによって実行される方法の実施形態を図示する。いくつかの実施形態において、方法の実施形態がステートマシンを使用して実行される。
701において、コードフェッチ、またはプローブ、要求が受信される。703において、CPLの決定が行われる。例えば、CPLは権限レベルストレージ605から取得される。この例において、ユーザおよびスーパバイザという対象の2つの権限レベルのみがある。
CPLがユーザレベルであるとき、KTPが使用されているかどうかについての決定が705で行われる。例えば、いくつかの実施形態において、コントロールレジスタ(CR4など)は、KTPが使用されているときに設定されるビットを含む。KTPが使用されていない場合、707において操作が許可される。
決定されたCPLがユーザ(例えばレベル3)であり、KTPが使用されている場合、受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているかどうかの決定が708において行われる。例えば、いくつかの実施形態において、このビットが1に設定されている場合(スーパバイザアドレス空間が負である実施形態)、この決定は、操作がユーザCPLを有し、アクセスが許可されない可能性があることを指示する。
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスが707で許可される。
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスは許可されない。
操作が投機的アクセスの1つである場合、それは709でキャンセルされる。
711に示されるように、TLBまたはデータキャッシュルックアップもページウォークも実行されない。
713において、非投機的アクセスのフォールトがフロントエンドから生成される。例えば、いくつかの実施形態において、KTP、PAE、ページングが有効であり、ロングモードが有効であり、リニアアドレスがスーパバイザアドレスを指示し、CPLが非スーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、((C4.KTP&&CR0.PG&&CR4.PAE&&IA32_EFER.LME&&LA[63])&&CPL=3)であるとき、フォールトが生成される。
CPLがスーパバイザレベルであるとき、KTPが使用されているかどうかの決定が715において行われる。例えば、いくつかの実施形態において、コントロールレジスタ(CR4など)は、KTPが使用されているときに設定されるビットを含む。KTPが使用されていないとき、操作が717において許可される。
決定されたCPLがスーパバイザ(例えばレベル0)であり、KTPが使用されているとき、受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されているかどうかの決定が716において行われる。例えば、いくつかの実施形態において、このビットが0に設定されている場合(ユーザアドレス空間が正である実施形態)、この決定は、操作がスーパバイザCPLを有し、アクセスが許可されない可能性があることを指示する。
受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスが707で許可される。
受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスは許可されない。
操作が投機的アクセスの1つのであるとき、それは717においてキャンセルされる。
719に示されるように、TLBまたはデータキャッシュルックアップもページウォークも実行されない。
721において、非投機的アクセスのフォールトがフロントエンドから生成される。例えば、いくつかの実施形態において、KTP、PAE、ページングが有効であり、ロングモードが有効であり、リニアアドレスがスーパバイザアドレスを指示し、CPLが非スーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、((C4.KTP&&CR0.PG&&CR4.PAE&&IA32_EFER.LME&&!LA[63])&&CPL!=3)であるとき、フォールトが生成される。
上で詳述されたKTPに利用され得る例示的アーキテクチャおよびシステムが下に詳述される。
例示的レジスタアーキテクチャ
図8は、本発明の一実施形態によるレジスタアーキテクチャ800のブロック図である。
コントロールレジスタ845は、KTPの使用、SMAPの使用など、上で詳述されたものを含む制御情報を格納する。
示される実施形態において、512ビット幅の32個のベクトルレジスタ810が存在する。これらのレジスタは、zmm0~zmm31として参照される。下位11個のzmmレジスタの下位256ビットは、レジスタymm0~15上に重ね合わされる。下位の11個のzmmレジスタの下位の128ビット(ymmレジスタの下位の128ビット)は、レジスタxmm0-15に重ね合わされる。
汎用レジスタ825-図示された実施形態では、メモリオペランドをアドレス指定するために既存のx86アドレス指定モードとともに使用される16個の64ビット汎用レジスタが存在する。これらのレジスタは、RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、およびR8からR15の名前で参照される。
MMXパックド整数フラットレジスタファイル850がエイリアスされる、スカラ浮動小数点スタックレジスタファイル(x87スタック)845-図示される実施形態では、x87スタックは、x87命令セット拡張子を使用して32/64/80ビット浮動小数点データに対してスカラ浮動小数点演算を実行するために使用される8要素スタックである。一方、MMXレジスタは、64ビットパックド整数データに対して演算を実行するため、ならびにMMXレジスタとXMMレジスタとの間で実行されるいくつかの演算のためにオペランドを保持するために、使用される。
本発明の代替の実施形態は、より広いまたはより狭いレジスタを使用してもよい。さらに、本発明の代替の実施形態は、より多い、より少ない、または異なるレジスタファイルおよびレジスタを使用してもよい。
例示的なコアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ
プロセッサコアは、様々な方法で、様々な目的のために、様々なプロセッサにおいて実装され得る。例えば、そのようなコアの実装形態には、1)汎用コンピューティング向けの汎用インオーダコア、2)汎用コンピューティング向けの高性能汎用アウトオブオーダコア、3)主としてグラフィックスおよび/または科学用(スループット)コンピューティング向けの特定用途向けコアが含まれてもよい。様々なプロセッサの実装形態には、1)汎用コンピューティング向けの1または複数の汎用インオーダコアおよび/または汎用コンピューティング用の1または複数の汎用アウトオブオーダコアを含むCPU、ならびに2)主としてグラフィックスおよび/または科学(スループット)向けの1または複数の特定用途向けコアを含むコプロセッサが含まれてもよい。そのような様々なプロセッサは様々なコンピュータシステムアーキテクチャをもたらし、そのようなコンピュータシステムアーキテクチャには、1)CPUとは別のチップ上のコプロセッサ、2)CPUと同じパッケージ内の別のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックスおよび/もしくは科学(スループット)ロジックなどの特定用途向けロジック、または特定用途向けコアと呼ばれることがある)、ならびに4)同じダイ上に(アプリケーションコアまたはアプリケーションプロセッサと呼ばれることもある)説明されたCPU、上述したコプロセッサ、および追加の機能を含んでもよいシステムオンチップが含まれてもよい。例示的なコアアーキテクチャが次に説明され、例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。本明細書で詳述されるのは、例示的なコア、プロセッサなどを備える回路(ユニット)である。
例示的なコアアーキテクチャ
インオーダおよびアウトオブオーダコアブロック図
図9は、本発明の実施形態による、例示的なインオーダパイプライン、および例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図9は、本発明の実施形態による、プロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態と、例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。図9の実線枠はインオーダパイプラインおよびインオーダコアを示し、破線枠の任意選択の追加は、レジスタリネーミング、アウトオブオーダ発行/実行パイプラインおよびコアを示す。インオーダの態様がアウトオブオーダの態様のサブセットであると仮定して、アウトオブオーダの態様が説明される。
図9において、プロセッサパイプライン900は、フェッチステージ902、レングス復号ステージ904、復号ステージ906、割り当てステージ908、リネーミングステージ910、スケジューリング(ディスパッチまたは発行としても知られる)ステージ912、レジスタ読み取り/メモリ読み取りステージ914、実行ステージ916、ライトバック/メモリ書き込みステージ918、例外処理ステージ922、およびコミットステージ924を含む。
具体的な例示的インオーダコアアーキテクチャ
図10A~図10Bは、より具体的な例示的インオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック(同じタイプおよび/または異なるタイプの他のコアを含む)の1つになるであろう。論理ブロックは、用途に応じて、高帯域幅相互接続ネットワーク(例えば、リングネットワーク)を通じて何らかの固定機能ロジック、メモリI/Oインタフェース、およびその他の必要なI/Oロジックと通信する。
図10Aは、本発明の実施形態による、オンダイ相互接続ネットワーク1002への接続に加え、レベル2(L2)キャッシュのローカルサブセット1004を有する単一のプロセッサコアのブロック図である。一実施形態では、命令デコーダ1000は、パックドデータ命令セット拡張子を有するx86命令セットをサポートする。L1キャッシュ1006によって、キャッシュメモリからスカラユニットおよびベクトルユニットへの低レイテンシアクセスが可能となる。一実施形態では、(設計を簡略化するために)スカラユニット1008およびベクトルユニット1010が、別々のレジスタセット(それぞれ、スカラレジスタ1012およびベクトルレジスタ1014)を用い、これらの間で転送されるデータはメモリに書き込まれ、その後、レベル1(L1)キャッシュ1006から読み戻されるが、本発明の代替的な実施形態は、異なる手法を用いてよい(例えば、単一のレジスタセットを用いる、または書き込みおよび読み戻しを行うことなく、2つのレジスタファイル間でのデータ転送を可能にする通信経路を含む)。
L2キャッシュのローカルサブセット1004は、別個のローカルサブセットに分割されるグローバルL2キャッシュの一部であり、プロセッサコアごとに1つである。各プロセッサコアは、独自のL2キャッシュのローカルサブセット1004に直接アクセスする経路を有する。プロセッサコアにより読み出されたデータは、L2キャッシュサブセット1004に格納され、他のプロセッサコアが独自のローカルL2キャッシュサブセットにアクセスするのと並行して、高速にアクセスされ得る。プロセッサコアにより書き込まれたデータは、独自のL2キャッシュサブセット1004に格納され、必要に応じて他のサブセットからフラッシュされる。リングネットワークは共有データの一貫性を保証する。リングネットワークは、プロセッサコア、L2キャッシュ、および他の論理ブロックなどのエージェントがチップ内で互いに通信できるようにするために、双方向である。各リングデータパスは、いくつかの実施形態において、方向ごとに1024ビット幅である。
図10Bは、本発明の実施形態による図10Aのプロセッサコアの一部に関する拡大図である。図10Bは、L1キャッシュ1004の一部であるL1データキャッシュ1006Aと、ベクトルユニット1010およびベクトルレジスタ1014に関するより詳細とを含む。具体的には、ベクトルユニット1010は11幅のベクトル処理ユニット(VPU)(16幅のALU1028を参照)であり、整数命令、単精度浮動小数点命令、および倍精度浮動小数点命令のうち1つまたは複数を実行する。VPUは、スウィズルユニット1020を用いるレジスタ入力のスウィズル、数値変換ユニット1022Aおよび1022Bを用いる数値変換、および複製ユニット1024とメモリ入力とを用いる複製をサポートする。
統合メモリコントローラおよびグラフィックスを有するプロセッサ
図11は、本発明の実施形態に従って、1つより多くのコアを有することができ、統合メモリコントローラを有することができ、統合グラフィックスを有することができるプロセッサ1100のブロック図である。図11の実線枠は、単一のコア1102A、システムエージェント1110、1つまたは複数のバスコントローラユニット1116のセットを有するプロセッサ1100を示し、任意追加の破線枠は、複数のコア1102A~1102N、システムエージェントユニット1110内にある1つまたは複数の統合メモリコントローラユニット1114のセット、および特定用途向けロジック1108を有する代替のプロセッサ1100を示す。
したがって、プロセッサ1100の異なる実装は、1)特定用途向けロジック1108が統合グラフィックスおよび/または科学(スループット)ロジック(1つまたは複数のコアを含んでよい)であり、コア1102A~1102Nが1つまたは複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、その2つの組み合わせ)であるCPU、2)コア1102A~1102Nが、グラフィックスおよび/または科学(スループット)を主に対象とした多数の特定用途向けコアであるコプロセッサ、並びに3)コア1102A~1102Nが多数の汎用インオーダコアであるコプロセッサを含んでよい。したがって、プロセッサ1100は汎用プロセッサ、コプロセッサであってよく、あるいは特定用途向けプロセッサ、例えばネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックス処理ユニット)、高スループットの多数統合コア(MIC)コプロセッサ(30個またはそれより多くのコアを含む)、組み込みプロセッサなどであってもよい。プロセッサは、1または複数のチップ上に実装されてもよい。プロセッサ1100は、例えば、BiCMOS、CMOS、またはNMOSなどの多数のプロセス技術のいずれかを用いる1つまたは複数の基板の一部であってよく、および/または当該基板上に実装されてもよい。
メモリ階層は、統合メモリコントローラユニット1114のセットに結合されるコア1104A~N、セットまたは1もしくは複数の共有キャッシュユニット1106、および外部メモリ(図示せず)内に1もしくは複数のレベルのキャッシュを含む。共有キャッシュユニット1106のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)、または他のレベルのキャッシュなど、1つまたは複数の中間レベルのキャッシュ、または他のレベルのキャッシュ、ラストレベルキャッシュ(LLC)、および/またはこれらの組み合わせを含んでよい。一実施形態では、リングベースの相互接続ユニット1112が、統合グラフィックスロジック1108、共有キャッシュユニット1106のセット、およびシステムエージェントユニット1110/統合メモリコントローラユニット1114を相互接続するが、代替的な実施形態は、このようなユニットを相互接続するのに任意の数の周知手法を用いてよい。一実施形態において、1つまたは複数のキャッシュユニット1106と、コア1102A~1102Nとの間で一貫性が維持される。
いくつかの実施形態において、コア1102A~1102Nのうち1つまたは複数がマルチスレッディング可能である。システムエージェント1110は、コア1102A~1102Nを調整し動作させるこうしたコンポーネントを含む。システムエージェントユニット1110は、例えば、電力制御ユニット(PCU)およびディスプレイユニットを含んでよい。PCUは、コア1102A~1102Nおよび統合グラフィックスロジック1108の電力状態を管理するのに必要なロジックおよびコンポーネントであってよく、または当該ロジックおよび当該コンポーネントを含んでもよい。ディスプレイユニットは、外部接続された1つまたは複数のディスプレイを駆動するためのものである。
コア1102A~1102Nは、アーキテクチャ命令セットに関して同種でも異種でもよい。すなわち、コア1102A~1102Nのうち2つまたはそれより多くは同じ命令セットを実行することが可能であってよいが、他のものはその命令セットのサブセットまたは別の命令セットだけを実行することが可能であってもよい。
例示的なコンピュータアーキテクチャ
図12~図15は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子装置のための当該技術分野で知られた他のシステム設計およびシステム構成も適している。一般に、本明細書で開示されたプロセッサおよび/または他の実行ロジックを組み込むことが可能な多様なシステムまたは電子装置が一般的に適している。
ここで図12を参照すると、本発明の1つの実施形態によるシステム1200のブロック図が示されている。システム1200は、1つまたは複数のプロセッサ1210、1215を含んでよく、これらはコントローラハブ1220に結合されている。一実施形態において、コントローラハブ1220は、グラフィックスメモリコントローラハブ(GMCH)1290および入力/出力ハブ(IOH)1250(複数の別個のチップ上にあり得る)を含む。GMCH1290は、メモリコントローラおよびグラフィックスコントローラを含み、これらにメモリ1240およびコプロセッサ1245が結合される。IOH1250は、入力/出力(I/O)デバイス1260をGMCH1290に結合する。あるいは、メモリおよびグラフィックスコントローラの一方または両方が、(本明細書で説明されるように)プロセッサ内に統合され、メモリ1240およびコプロセッサ1245は、プロセッサ1210と、IOH1250と共に単一チップに入ったコントローラハブ1220とに直接結合される。
任意選択的な性質の追加的なプロセッサ1215が、破線を用いて図12に示される。各プロセッサ1210、1215は、本明細書で説明される処理コアのうち1つまたは複数を含んでよく、何らかのバージョンのプロセッサ1100であってよい。
メモリ1240は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、またはこの2つの組み合わせであってよい。少なくとも1つの実施形態では、コントローラハブ1220は、フロントサイドバス(FSB)、ポイントツーポイントインタフェース、または類似の接続1295などのマルチドロップバスを介して、プロセッサ1210、1215と通信する。
一実施形態において、コプロセッサ1245は、例えば、ハイスループットMICプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサなどの特定用途向けプロセッサである。一実施形態において、コントローラハブ1220は統合グラフィックスアクセラレータを含んでよい。
アーキテクチャ、マイクロアーキテクチャ、熱、消費電力特性などに関することを含む、利点のメトリックスのスペクトルに関して、物理リソース1210、12155の間には様々な違いがあり得る。
一実施形態において、プロセッサ1210は、一般的タイプのデータ処理オペレーションを制御する命令を実行する。命令に組み込まれているのはコプロセッサ命令であってもよい。プロセッサ1210は、これらのコプロセッサ命令を、付属のコプロセッサ1245が実行すべきタイプの命令であると認識する。したがって、プロセッサ1210は、これらのコプロセッサ命令(またはコプロセッサ命令を表す制御信号)をコプロセッサバスまたは他の相互接続を使ってコプロセッサ1245に発行する。コプロセッサ1245は、受信したコプロセッサ命令を受け付けて実行する。
ここで図13を参照すると、本発明の実施形態による、より具体的な第1の例示的なシステム1300のブロック図が示されている。図13に示されるように、マルチプロセッサシステム1300はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1350を介して結合される第1プロセッサ1370と、第2プロセッサ1380とを含む。プロセッサ1370および1380の各々は、何らかのバージョンのプロセッサ1100であってよい。本発明の一実施形態において、プロセッサ1370および1380はそれぞれ、プロセッサ1210および1215であり、コプロセッサ1338はコプロセッサ1245である。別の実施形態において、プロセッサ1370および1380はそれぞれ、プロセッサ1210、コプロセッサ1245である。
プロセッサ1370および1380は、統合メモリコントローラ(IMC)ユニット1372および1382をそれぞれ含んで示されている。プロセッサ1370はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P-P)インタフェース1376および1378を含み、同様に第2プロセッサ1380はP-Pインタフェース1386および1388を含む。プロセッサ1370、1380は、ポイントツーポイント(P-P)インタフェース1350を介し、P-Pインタフェース回路1378、1388を用いて情報を交換してよい。図13に示されるように、IMC1372および1382は、プロセッサをそれぞれのメモリ、すなわちメモリ1332およびメモリ1334に結合する。これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。
プロセッサ1370、1380はそれぞれ、個々のP-Pインタフェース1352、1354を介し、ポイントツーポイントインタフェース回路1376、1394、1386、1398を用いてチップセット1390と情報を交換してよい。チップセット1390は、高性能インタフェース1392を介してコプロセッサ1338と任意に情報を交換してよい。一実施形態において、コプロセッサ1338は、例えば、ハイスループットMICプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサなどの特定用途向けプロセッサである。
共有キャッシュ(図示せず)は、いずれかのプロセッサの中、または両方のプロセッサの外側に含まれ得るが、プロセッサが低電力モードになった場合に一方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに記憶され得るように、P-P相互接続を介してプロセッサと接続されてもよい。
チップセット1390は、インタフェース1396を介して第1バス1316に結合されてよい。一実施形態において、第1バス1316は、周辺構成要素相互接続(PCI)バス、またはPCI Expressバスまたは別のI/O相互接続バス等のバスであり得るが、本発明の範囲は、そのようには限定されない。
図13に示されるように、第1バス1316を第2バス1320に結合するバスブリッジ1318と共に、様々なI/Oデバイス1314が第1バス1316に結合されてよい。一実施形態において、1つまたは複数の追加のプロセッサ1315が第1バス1316に結合される。追加のプロセッサとは、コプロセッサ、ハイスループットMICプロセッサ、GPGPUのアクセラレータ(例えば、グラフィックスアクセラレータ、またはデジタル信号処理(DSP)ユニットなど)、フィールドプログラマブルゲートアレイ、またはその他のプロセッサなどである。一実施形態において、第2バス1320はローピンカウント(LPC)バスであってよい。様々なデバイスが第2バス1320に結合されてよく、一実施形態において、そのようなデバイスには例えば、キーボードおよび/またはマウス1322、通信デバイス1327、およびストレージユニット1328が含まれ、ストレージユニットには、命令/コードおよびデータ1330を含み得るディスクドライブまたは他の大容量ストレージデバイスなどがある。さらに、オーディオI/O1324が第2バス1316に結合されてよい。他のアーキテクチャも可能であることに留意されたい。例えば、図13のポイントツーポイントアーキテクチャの代わりに、システムがマルチドロップバスアーキテクチャまたは他のそのようなアーキテクチャを実装してよい。
ここで図14を参照すると、本発明の実施形態による、より詳細な第2の例示的なシステム1400のブロック図が示されている。図13および図14内の同様の要素は同様の参照番号を有しており、図13の特定の態様が、図14の他の態様をあいまいにしないように、図14から省略されている。
図14は、プロセッサ1370、1380が、それぞれ統合メモリならびにI/O制御ロジック(「CL」)1472および1482を含んでもよいことを示す。したがって、CL1472、1482は、統合メモリコントローラユニットを含み、I/O制御ロジックを含む。図14は、メモリ1332、1334だけがCL1372、1382に結合されているのでなく、I/Oデバイス1414もまた、制御ロジック1372、1382に結合されていることを示している。レガシI/Oデバイス1415がチップセット1390に結合されている。
ここで図15を参照すると、本発明の実施形態によるSoC1500のブロック図が示されている。図11の同種の要素は、同様の参照番号を有している。また、破線枠は、より高度なSoC上の任意選択的な特徴である。図15において、相互接続ユニット1502は、1または複数のコア152A-Nのセット、キャッシュユニット1104A-N、および共有キャッシュユニット1106を含むアプリケーションプロセッサ1510と、システムエージェントユニット1110と、バスコントローラユニット1116と、統合メモリコントローラユニット1114と、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサおよびビデオプロセッサを含み得る、1または複数のコプロセッサ1520のセットと、スタティックランダムアクセスメモリ(SRAM)ユニット1530と、直接メモリアクセス(DMA)ユニット1532と、1または複数の外部ディスプレイに結合するためのディスプレイユニット1540と、に結合されている。一実施形態において、コプロセッサ1520は特定用途向けプロセッサを含み、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、組み込みプロセッサなどがある。
本明細書に開示される機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装手法の組み合わせとして実装され得る。本発明の実施形態は、少なくとも1つのプロセッサと、(揮発性および不揮発性メモリおよび/または記憶素子を含む)記憶システムと、少なくとも1つの入力装置と、少なくとも1つの出力装置とを備えるプログラマブルシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装されてもよい。
図13に示されるコード1330などのプログラムコードは、本明細書で説明される機能を実行し、出力情報を生成する命令を入力するのに適用されてよい。出力情報は、既知の方式で1つまたは複数の出力装置に適用されてもよい。本出願の目的のため、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサのようなプロセッサを有する、任意のシステムを含む。
プログラムコードは、処理システムと通信するために、高水準手続き型またはオブジェクト指向のプログラミング言語で実装されてもよい。プログラムコードはまた、必要な場合、アセンブリ言語または機械語で実装されてもよい。実際、本明細書に記載される機構は、いかなる特定のプログラミング言語にも範囲を限定されない。いずれにせよ、言語は、コンパイラ言語またはインタプリタ言語であり得る。
少なくとも1つの実施形態の1つまたは複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に記憶された代表的な命令によって実装されてもよく、機械可読媒体は、機械によって読み取られると、機械に本明細書で説明された技法を実行するようにロジックを組み立てさせる。「IPコア」として知られるこのような表現は、有形の機械可読媒体上に記憶され、実際にロジックまたはプロセッサを製造する製造機械にロードするために、様々な顧客または製造施設に供給され得る。
そのような機械可読記憶媒体には、ハードディスク、フロッピーディスク、光ディスク、コンパクトディスクリードオンリーメモリ(CD-ROM)、コンパクトディスクリライタブル(CD-RW)、および光磁気ディスクを含む任意の他のタイプのディスク、リードオンリーメモリ(ROM)などの半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラム可能リードオンリーメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリ(EEPROM)、相変化メモリ(PCM)、磁気カードもしくは光学式カード、または電子命令を記憶するのに適した任意の他のタイプの媒体などの記憶媒体を含む、機械またはデバイスによって製造または形成された物品の非一時的有形構成が含まれてもよいが、それらに限定されない。
したがって、本発明の実施形態は、本明細書で説明された構造、回路、装置、プロセッサ、および/またはシステムの特徴を定義する、ハードウェア記述言語(HDL)などの命令を含むか、または設計データを含む非一時的有形機械可読媒体も含む。そのような実施形態はまた、プログラム製品と呼ばれ得る。
エミュレーション(バイナリ変換、コードモーフィングなどを含む)]
場合によっては、命令をソース命令セットからターゲット命令セットに変換するために命令コンバータが使用され得る。例えば、命令コンバータは、命令をコアによって処理されるべき1つまたは複数の他の命令に、(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して)解釈し、モーフィングし、エミュレートし、または場合によっては変換することができる。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせとして実装され得る。命令コンバータは、プロセッサ上にあっても、プロセッサ外にあっても、または部分的にプロセッサ上で部分的にプロセッサ外にあってもよい。
図16は、本発明の実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対比するブロック図である。図示された実施形態では、命令コンバータはソフトウェア命令コンバータであるが、代替として、命令コンバータはソフトウェア、ファームウェア、ハードウェア、またはそれらの様々な組合せに実装されてもよい。図16は、第1コンパイラ1604を使用して、少なくとも1つの第1命令セットコア1616を有するプロセッサによってネイティブに実行され得る第1バイナリコード(例えばx86)1606を生成することによって、ハイレベル言語1602のプログラムがコンパイルされ得ることを示す。いくつかの実施形態において、少なくとも1つの第1命令セットコア1616を用いるプロセッサは、少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサと実質的に同一の結果を実現するべく、(1)インテル(登録商標)x86命令セットコアの命令セットの実質的部分、または(2)少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサ上で起動することを目的とする、複数のオブジェクトコードバージョンの複数のアプリケーションまたは他のソフトウェアを互換的に実行または処理することにより、少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサと実質的に同一の複数の機能を実行し得るいずれのプロセッサも表す。第1コンパイラ1604は、追加のリンケージ処理の有無にかかわらず、少なくとも1つの第1命令セットコア1616を有するプロセッサ上で実行されることができる第1命令セット1606(例えばオブジェクトコード)のバイナリコードを生成するように動作可能なコンパイラを表す。同様に、図16は、代替的な命令セットのコンパイラ1608を用いてコンパイルされ、少なくとも1つの第1命令セットコアを用いないプロセッサ1614(例えば、カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セットを実行し、および/またはカリフォルニア州サニーベールのARM HoldingのARM命令セットを実行する複数のコアを用いるプロセッサ)によりネイティブに実行され得る、代替的な命令セットバイナリコード1610を生成し得る、ハイレベル言語1602のプログラムを示す。命令コンバータ1612は、第1バイナリコード1606を、第1命令セットコア1614を用いないプロセッサによりネイティブに実行され得るコードに変換するべく、使用される。この変換されたコードは、代替的な命令セットバイナリコード1610と同じになる可能性は低い。なぜなら、これが実現できる命令コンバータを作るのは難しいからである。しかしながら、変換されたコードは一般的なオペレーションを実現し、代替的な命令セットの命令で構成される。したがって、命令コンバータ1612は、エミュレーション、シミュレーション、またはその他のプロセスを通じて、第1命令セットプロセッサまたはコアを有していないプロセッサまたはその他の電子装置が第1バイナリコード1606を実行できるようにする、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。
実施形態の例がここで詳述される。
[例1]
装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、リニアアドレスが許可されるときにリニアアドレスから物理アドレスを生成するためのアドレス生成回路とを備える装置。
装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、リニアアドレスが許可されるときにリニアアドレスから物理アドレスを生成するためのアドレス生成回路とを備える装置。
[例2]
リニアアドレス空間がスーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、例1の装置。
リニアアドレス空間がスーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、例1の装置。
[例3]
リニアアドレスの最上位ビットが「1」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例2に記載の装置。
リニアアドレスの最上位ビットが「1」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例2に記載の装置。
[例4]
リニアアドレスの最上位ビットが「0」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例2に記載の装置。
リニアアドレスの最上位ビットが「0」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例2に記載の装置。
[例5]
複数のセグメントレジスタを更に備え、命令に関連付けられたリニアアドレスが、複数のセグメントレジスタの1つのアクセスに向けられるとき、アドレスチェック回路は、アクセスを許可する、例1から4のいずれか一項に記載の装置。
複数のセグメントレジスタを更に備え、命令に関連付けられたリニアアドレスが、複数のセグメントレジスタの1つのアクセスに向けられるとき、アドレスチェック回路は、アクセスを許可する、例1から4のいずれか一項に記載の装置。
[例6]
バイパス範囲を格納するためのバイパス範囲レジスタを更に備え、命令に関連付けられたリニアアドレスがバイパス範囲におけるリニアアドレスへのアクセスに向けられる場合、アドレスチェック回路は、アクセスを許可する、例1から5のいずれか一項に記載の装置。
バイパス範囲を格納するためのバイパス範囲レジスタを更に備え、命令に関連付けられたリニアアドレスがバイパス範囲におけるリニアアドレスへのアクセスに向けられる場合、アドレスチェック回路は、アクセスを許可する、例1から5のいずれか一項に記載の装置。
[例7]
区分へのアクセスが許可されていない場合、アドレスチェック回路は、プリフェッチ、キャッシュラインデモーションおよび投機的アクセスをキャンセルさせる、例1から6のいずれか一項に記載の装置。
区分へのアクセスが許可されていない場合、アドレスチェック回路は、プリフェッチ、キャッシュラインデモーションおよび投機的アクセスをキャンセルさせる、例1から6のいずれか一項に記載の装置。
[例8]
区分へのアクセスが許可されていない場合、アドレスチェック回路は、非投機的アクセスのフォールトを生成する、例1から7のいずれか一項に記載の装置。
区分へのアクセスが許可されていない場合、アドレスチェック回路は、非投機的アクセスのフォールトを生成する、例1から7のいずれか一項に記載の装置。
[例9]
区分へのアクセスが許可されていない場合、アドレス生成回路は、トランスレーションルックアサイドバッファまたはデータキャッシュルックアップを実行しない、例1から8のいずれか一項に記載の装置。
区分へのアクセスが許可されていない場合、アドレス生成回路は、トランスレーションルックアサイドバッファまたはデータキャッシュルックアップを実行しない、例1から8のいずれか一項に記載の装置。
[例10]
アドレスチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、例1から9のいずれか一項に記載の装置。
アドレスチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、例1から9のいずれか一項に記載の装置。
[例11]
装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、プローブに関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて決定するためのプローブチェック回路と、を備える装置。
装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、プローブに関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて決定するためのプローブチェック回路と、を備える装置。
[例12]
リニアアドレス空間がスーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、例11の装置。
リニアアドレス空間がスーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、例11の装置。
[例13]
リニアアドレスの最上位ビットが「1」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例12に記載の装置。
リニアアドレスの最上位ビットが「1」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例12に記載の装置。
[例14]
リニアアドレスの最上位ビットが「0」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例12に記載の装置。
リニアアドレスの最上位ビットが「0」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例12に記載の装置。
[例15]
複数のセグメントレジスタを更に備え、プローブに関連付けられたリニアアドレスが複数のセグメントレジスタの1つのアクセスに向けられる場合、プローブチェック回路はアクセスを許可する、例11から14のいずれか一項に記載の装置。
複数のセグメントレジスタを更に備え、プローブに関連付けられたリニアアドレスが複数のセグメントレジスタの1つのアクセスに向けられる場合、プローブチェック回路はアクセスを許可する、例11から14のいずれか一項に記載の装置。
[例16]
区分へのアクセスが許可されていない場合、アドレスチェック回路は投機的アクセスをキャンセルさせる、例11から15のいずれか一項に記載の装置。
区分へのアクセスが許可されていない場合、アドレスチェック回路は投機的アクセスをキャンセルさせる、例11から15のいずれか一項に記載の装置。
[例17]
区分へのアクセスが可能されていない場合、プローブチェック回路は、非投機的アクセスのフォールトを生成する、例11から16のいずれか一項に記載の装置。
区分へのアクセスが可能されていない場合、プローブチェック回路は、非投機的アクセスのフォールトを生成する、例11から16のいずれか一項に記載の装置。
[例18]
区分へのアクセスが許可されていない場合、トランスレーションルックアサイドバッファまたは命令キャッシュルックアップが無い、例11から17のいずれか一項に記載の装置。
区分へのアクセスが許可されていない場合、トランスレーションルックアサイドバッファまたは命令キャッシュルックアップが無い、例11から17のいずれか一項に記載の装置。
[例19]
プローブチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、例11から18のいずれか一項に記載の装置。
プローブチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、例11から18のいずれか一項に記載の装置。
[例20]
プローブチェック回路は、プロセッサコアのフロントエンドの一部である、例11から19のいずれか一項に記載の装置。
プローブチェック回路は、プロセッサコアのフロントエンドの一部である、例11から19のいずれか一項に記載の装置。
Claims (25)
- 装置であって、
現在の権限レベルを格納するための権限レベルストレージと、
前記権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが前記装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、前記現在の権限レベルと前記リニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、
前記リニアアドレスが許可されるときに前記リニアアドレスから物理アドレスを生成するためのアドレス生成回路と
を備える装置。 - 前記リニアアドレス空間は、スーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、請求項1に記載の装置。
- 前記リニアアドレスの前記最上位ビットが「1」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項2に記載の装置。
- 前記リニアアドレスの前記最上位ビットが「0」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項2に記載の装置。
- 複数のセグメントレジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記複数のセグメントレジスタの1つのアクセスに向けられるとき、前記アドレスチェック回路は、前記アクセスを許可する、請求項1から4のいずれか一項に記載の装置。
- バイパス範囲を格納するためのバイパス範囲レジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記バイパス範囲におけるリニアアドレスへのアクセスに向けられる場合、前記アドレスチェック回路は、前記アクセスを許可する、請求項1から5のいずれか一項に記載の装置。
- 区分へのアクセスが許可されていない場合、前記アドレスチェック回路は、プリフェッチ、キャッシュラインデモーションおよび投機的アクセスをキャンセルさせる、請求項1から6のいずれか一項に記載の装置。
- 区分へのアクセスが許可されていない場合、前記アドレスチェック回路は、非投機的アクセスのフォールトを生成する、請求項1から6のいずれか一項に記載の装置。
- 区分へのアクセスが許可されていない場合、前記アドレス生成回路は、トランスレーションルックアサイドバッファまたはデータキャッシュルックアップを実行しない、請求項1から6のいずれか一項に記載の装置。
- 前記アドレスチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、請求項1から9のいずれか一項に記載の装置。
- 装置であって、
現在の権限レベルを格納するための権限レベルストレージと、
前記権限レベルストレージに結合されたアドレスチェック回路であって、プローブに関連付けられたリニアアドレスが前記装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、前記現在の権限レベルと前記リニアアドレスの最上位ビットとの比較に基づいて決定するためのプローブチェック回路と
を備える装置。 - 前記リニアアドレス空間は、スーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、請求項11に記載の装置。
- 前記リニアアドレスの前記最上位ビットが「1」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項12に記載の装置。
- 前記リニアアドレスの前記最上位ビットが「0」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項12に記載の装置。
- 複数のセグメントレジスタを更に備え、前記プローブに関連付けられた前記リニアアドレスが前記複数のセグメントレジスタの1つのアクセスに向けられる場合、前記プローブチェック回路は前記アクセスを許可する、請求項11から14のいずれか一項に記載の装置。
- 区分へのアクセスが許可されていない場合、前記アドレスチェック回路は投機的アクセスをキャンセルさせる、請求項11から15のいずれか一項に記載の装置。
- 区分へのアクセスが可能されていない場合、前記プローブチェック回路は、非投機的アクセスのフォールトを生成する、請求項11から16のいずれか一項に記載の装置。
- 区分へのアクセスが許可されていない場合、トランスレーションルックアサイドバッファまたは命令キャッシュルックアップが無い、請求項11から17のいずれか一項に記載の装置。
- 前記プローブチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、請求項11から18のいずれか一項に記載の装置。
- 前記プローブチェック回路は、プロセッサコアのフロントエンドの一部である、請求項11から19のいずれか一項に記載の装置。
- 装置であって、
現在の権限レベルを格納するための権限レベルストレージと、
前記権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが前記装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、前記現在の権限レベルと前記リニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、
前記リニアアドレスが許可されるときに前記リニアアドレスから物理アドレスを生成するためのアドレス生成回路と
を備える装置。 - 前記リニアアドレス空間は、スーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、請求項21に記載の装置。
- 前記リニアアドレスの前記最上位ビットが「1」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項22に記載の装置。
- 前記リニアアドレスの前記最上位ビットが「0」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項22に記載の装置。
- 複数のセグメントレジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記複数のセグメントレジスタの1つのアクセスに向けられるとき、前記アドレスチェック回路は、前記アクセスを許可する、請求項21から24のいずれか一項に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/934,916 US10831679B2 (en) | 2018-03-23 | 2018-03-23 | Systems, methods, and apparatuses for defending against cross-privilege linear probes |
US15/934,916 | 2018-03-23 | ||
PCT/US2019/022238 WO2019182855A1 (en) | 2018-03-23 | 2019-03-14 | Systems, methods, and apparatuses for defending against cross-privilege linear probes |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2021516378A JP2021516378A (ja) | 2021-07-01 |
JPWO2019182855A5 true JPWO2019182855A5 (ja) | 2022-01-28 |
JP7456570B2 JP7456570B2 (ja) | 2024-03-27 |
Family
ID=67985110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020533106A Active JP7456570B2 (ja) | 2018-03-23 | 2019-03-14 | 権限横断リニアプローブに対する防護のためのシステム、方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10831679B2 (ja) |
EP (1) | EP3769249A4 (ja) |
JP (1) | JP7456570B2 (ja) |
CN (1) | CN111512309A (ja) |
WO (1) | WO2019182855A1 (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5140684A (en) | 1987-09-30 | 1992-08-18 | Mitsubishi Denki Kabushiki Kaisha | Access privilege-checking apparatus and method |
US5623636A (en) | 1993-11-09 | 1997-04-22 | Motorola Inc. | Data processing system and method for providing memory access protection using transparent translation registers and default attribute bits |
US6516395B1 (en) | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
US8051301B2 (en) | 2001-11-13 | 2011-11-01 | Advanced Micro Devices, Inc. | Memory management system and method providing linear address based memory access security |
US7383584B2 (en) * | 2002-03-27 | 2008-06-03 | Advanced Micro Devices, Inc. | System and method for controlling device-to-device accesses within a computer system |
US9672164B2 (en) | 2012-05-31 | 2017-06-06 | Nxp Usa, Inc. | Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address |
US9239801B2 (en) * | 2013-06-05 | 2016-01-19 | Intel Corporation | Systems and methods for preventing unauthorized stack pivoting |
US20180067866A1 (en) | 2016-09-08 | 2018-03-08 | Intel Corporation | Translate on virtual machine entry |
-
2018
- 2018-03-23 US US15/934,916 patent/US10831679B2/en active Active
-
2019
- 2019-03-14 CN CN201980006618.XA patent/CN111512309A/zh active Pending
- 2019-03-14 WO PCT/US2019/022238 patent/WO2019182855A1/en active Application Filing
- 2019-03-14 EP EP19772324.0A patent/EP3769249A4/en active Pending
- 2019-03-14 JP JP2020533106A patent/JP7456570B2/ja active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645135B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
US10078519B2 (en) | Apparatus and method for accelerating operations in a processor which uses shared virtual memory | |
CN111124498A (zh) | 用于推测执行侧信道缓解的装置和方法 | |
EP3550437B1 (en) | Adaptive spatial access prefetcher apparatus and method | |
US10229060B2 (en) | Instruction and logic for software hints to improve hardware prefetcher effectiveness | |
US20140189192A1 (en) | Apparatus and method for a multiple page size translation lookaside buffer (tlb) | |
US10503662B2 (en) | Systems, apparatuses, and methods for implementing temporary escalated privilege | |
US20190205238A1 (en) | Apparatus and method for pausing processor trace for efficient analysis | |
TWI830927B (zh) | 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 | |
CN113204448A (zh) | 用于请求处理器核的历史重置的指令的设备、方法和系统 | |
EP3109754A1 (en) | Systems, methods, and apparatuses for improving performance of status dependent computations | |
US20200409849A1 (en) | Systems and methods for mitigating dram cache conflicts through hardware assisted redirection of pages (harp) | |
JP2017538215A (ja) | 逆分離演算を実行するための命令及びロジック | |
US11907712B2 (en) | Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline | |
CN114692166A (zh) | 推测漏洞的动态检测 | |
JP7456570B2 (ja) | 権限横断リニアプローブに対する防護のためのシステム、方法および装置 | |
US20200210186A1 (en) | Apparatus and method for non-spatial store and scatter instructions | |
JPWO2019182855A5 (ja) | ||
US20230099989A1 (en) | Scalable toggle point control circuitry for a clustered decode pipeline | |
US11275588B2 (en) | Context save with variable save state size | |
WO2022066306A1 (en) | System, apparatus and methods for register hardening via a micro-operation | |
CN114692164A (zh) | 加固寄存器防范推测漏洞 |