(57)【要約】  権限横断リニアアクセスから防護するためのシステム、方法および装置を説明する。例えば、装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて、命令に関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを決定するためのアドレスチェック回路とを備える装置の実装が説明される。
2021516378.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
現在の権限レベルを格納するための権限レベルストレージと、
前記権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが前記装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、前記現在の権限レベルと前記リニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、
前記リニアアドレスが許可されるときに前記リニアアドレスから物理アドレスを生成するためのアドレス生成回路と
を備える装置。
【請求項２】
前記リニアアドレス空間は、スーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、請求項１に記載の装置。
【請求項３】
前記リニアアドレスの前記最上位ビットが「１」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項２に記載の装置。
【請求項４】
前記リニアアドレスの前記最上位ビットが「０」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項２に記載の装置。
【請求項５】
複数のセグメントレジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記複数のセグメントレジスタの１つのアクセスに向けられるとき、前記アドレスチェック回路は、前記アクセスを許可する、請求項１から４のいずれか一項に記載の装置。
【請求項６】
バイパス範囲を格納するためのバイパス範囲レジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記バイパス範囲におけるリニアアドレスへのアクセスに向けられる場合、前記アドレスチェック回路は、前記アクセスを許可する、請求項１から５のいずれか一項に記載の装置。
【請求項７】
区分へのアクセスが許可されていない場合、前記アドレスチェック回路は、プリフェッチ、キャッシュラインデモーションおよび投機的アクセスをキャンセルさせる、請求項１から６のいずれか一項に記載の装置。
【請求項８】
区分へのアクセスが許可されていない場合、前記アドレスチェック回路は、非投機的アクセスのフォールトを生成する、請求項１から６のいずれか一項に記載の装置。
【請求項９】
区分へのアクセスが許可されていない場合、前記アドレス生成回路は、トランスレーションルックアサイドバッファまたはデータキャッシュルックアップを実行しない、請求項１から６のいずれか一項に記載の装置。
【請求項１０】
前記アドレスチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
装置であって、
現在の権限レベルを格納するための権限レベルストレージと、
前記権限レベルストレージに結合されたアドレスチェック回路であって、プローブに関連付けられたリニアアドレスが前記装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、前記現在の権限レベルと前記リニアアドレスの最上位ビットとの比較に基づいて決定するためのプローブチェック回路と
を備える装置。
【請求項１２】
前記リニアアドレス空間は、スーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、請求項１１に記載の装置。
【請求項１３】
前記リニアアドレスの前記最上位ビットが「１」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項１２に記載の装置。
【請求項１４】
前記リニアアドレスの前記最上位ビットが「０」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項１２に記載の装置。
【請求項１５】
複数のセグメントレジスタを更に備え、前記プローブに関連付けられた前記リニアアドレスが前記複数のセグメントレジスタの１つのアクセスに向けられる場合、前記プローブチェック回路は前記アクセスを許可する、請求項１１から１４のいずれか一項に記載の装置。
【請求項１６】
区分へのアクセスが許可されていない場合、前記アドレスチェック回路は投機的アクセスをキャンセルさせる、請求項１１から１５のいずれか一項に記載の装置。
【請求項１７】
区分へのアクセスが可能されていない場合、前記プローブチェック回路は、非投機的アクセスのフォールトを生成する、請求項１１から１５のいずれか一項に記載の装置。
【請求項１８】
区分へのアクセスが許可されていない場合、トランスレーションルックアサイドバッファまたは命令キャッシュルックアップが無い、請求項１１から５のいずれか一項に記載の装置。
【請求項１９】
前記プローブチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、請求項１１から１８のいずれか一項に記載の装置。
【請求項２０】
前記プローブチェック回路は、プロセッサコアのフロントエンドの一部である、請求項１１から１９のいずれか一項に記載の装置。
【請求項２１】
装置であって、
現在の権限レベルを格納するための権限レベルストレージと、
前記権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが前記装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、前記現在の権限レベルと前記リニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、
前記リニアアドレスが許可されるときに前記リニアアドレスから物理アドレスを生成するためのアドレス生成回路と
を備える装置。
【請求項２２】
前記リニアアドレス空間は、スーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、請求項２１に記載の装置。
【請求項２３】
前記リニアアドレスの前記最上位ビットが「１」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項２２に記載の装置。
【請求項２４】
前記リニアアドレスの前記最上位ビットが「０」であるとき、前記リニアアドレス空間の区分はスーパバイザアドレス空間である、請求項２２に記載の装置。
【請求項２５】
複数のセグメントレジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記複数のセグメントレジスタの１つのアクセスに向けられるとき、前記アドレスチェック回路は、前記アクセスを許可する、請求項２１から２４のいずれか一項に記載の装置。
【請求項２６】
バイパス範囲を格納するためのバイパス範囲レジスタを更に備え、命令に関連付けられた前記リニアアドレスが前記バイパス範囲におけるリニアアドレスへのアクセスに向けられる場合、前記アドレスチェック回路は、前記アクセスを許可する、請求項２１から２５のいずれか一項に記載の装置。
【請求項２７】
区分へのアクセスが許可されていない場合、前記アドレスチェック回路は、プリフェッチ、キャッシュラインデモーションおよび投機的アクセスをキャンセルさせる、請求項２１から２６のいずれか一項に記載の装置。
【請求項２８】
区分へのアクセスが許可されていない場合、前記アドレスチェック回路は、非投機的アクセスのフォールトを生成する、請求項２１から２６のいずれか一項に記載の装置。
【請求項２９】
区分へのアクセスが許可されていない場合、前記アドレス生成回路は、トランスレーションルックアサイドバッファまたはデータキャッシュルックアップを実行しない、請求項２１から２６のいずれか一項に記載の装置。
【請求項３０】
前記アドレスチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、請求項２１から２９のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は概して、コンピュータプロセッサアーキテクチャに関し、より具体的には、スーパバイザおよびユーザアドレス空間を保護する試みに関連する。
【背景技術】
【０００２】
ランダム化をバイパスすることによって、カスタマイズされたペイロードを攻撃者が作成することを可能にする、カーネルアドレス空間配置ランダム化（ＫＡＳＬＲ）を破るための様々なエクスプロイト技法が開発されてきた。これらの技法は、以下の特性に依存する。１）ユーザ／スーパバイザ権限に基づくフォールトがページテーブルウォークを必要とした、２）ユーザ空間からのスーパバイザコード／データへの投機的アクセスは、さらにページウォークをもたらすが、しかしながら、アクセスが投機的でフォールトが配信されないので、オペレーティングシステムは、これを通知されない、３）ソフトウェアプリフェッチ命令およびキャッシュラインデモート（例えば、ＣＬＤＥＭＯＴＥ）のような特定の命令は、決してフォールトを配信しないが、フォールトの際に静かに破棄される。
【図面の簡単な説明】
【０００３】
本発明は、添付図面の図において限定ではなく例として示されており、それらの中で、同様の参照符号は同様の要素を示している。
【０００４】
【図１】リニアアドレス空間を区分化する実施形態、および、停止され得るこれらの区分のアクセスのタイプを図示する。
【０００５】
【図２】リニアアドレス空間を区分化する実施形態、および、停止され得るこれらの区分へのアクセスのタイプを図示する。
【０００６】
【図３】ＫＴＰをサポートするプロセッサコアの回路の実施形態を図示する。
【０００７】
【図４】アドレス生成回路の態様の実施形態を図示する。
【０００８】
【図５】リニアアクセス命令またはプリフェッチに応答して、アドレス生成回路によって実行される方法の実施形態を図示する。
【０００９】
【図６】プローブチェックユニットの態様の実施形態を図示する。
【００１０】
【図７】コードフェッチまたはプローブに応答して、プローブチェックユニットによって実行される方法の実施形態を図示する。
【００１１】
【図８】本発明の一実施形態に係るレジスタアーキテクチャのブロック図である。
【００１２】
【図９】本発明の実施形態による、例示的なインオーダパイプライン、および例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの双方を図示するブロック図である。
【００１３】
【図１０Ａ】コアがチップ内の複数の論理ブロック（同一の種類および／または異なる種類の他のコアを含む）のうち１つである、より具体的な例示的インオーダコアアーキテクチャを示すブロック図を図示する。
【図１０Ｂ】コアがチップ内の複数の論理ブロック（同一の種類および／または異なる種類の他のコアを含む）のうち１つである、より具体的な例示的インオーダコアアーキテクチャを示すブロック図を図示する。
【００１４】
【図１１】本発明の実施形態による、１つより多くのコアを有し得る、統合メモリコントローラを有し得る、統合グラフィックスを有し得るプロセッサのブロック図である。
【００１５】
【図１２】例示的なコンピュータアーキテクチャのブロック図である。
【図１３】例示的なコンピュータアーキテクチャのブロック図である。
【図１４】例示的なコンピュータアーキテクチャのブロック図である。
【図１５】例示的なコンピュータアーキテクチャのブロック図である。
【００１６】
【図１６】本発明の実施形態による、ソース命令セットのバイナリ命令を変換するソフトウェア命令コンバータの使用と、ターゲット命令セットのバイナリ命令とを対比するブロック図である。
【発明を実施するための形態】
【００１７】
以下の説明において、多数の具体的な詳細事項が説明される。しかしながら、本発明の実施形態は、これらの具体的な詳細事項を伴うことなく実施可能であると理解される。複数の他の例では、この説明の理解を妨げないように、周知の回路、構造、および技法は、詳細に示されていない。
【００１８】
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」等の記載は、説明される実施形態が、特定の特徴、構造、または特性を含んでよいが、各実施形態がその特定の特徴、構造、または特性を必ずしも含まなくてよいことを示す。また、そのような語句は、必ずしも同じ実施形態を指すものではない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載される場合、明記されているか否かに関わらず、複数の他の実施形態に関連するそのような特徴、構造、または特性に影響を与えることは、当業者の知識の範囲内であるものと思われる。
【００１９】
上に記載された、アドレス指定に対するいくつかのアプローチにおいて、ユーザおよびスーパバイザ空間のために別個のページテーブルが使用される。残念ながら、これらのテーブルの使用は、以下の欠点がある。カーネルエントリ／エグジットでページテーブルを切り替える必要があること、および、カーネルページテーブルにおいてグローバルページを使用できないことに起因して、性能オーバヘッドがある。２つのページテーブルを維持する必要がある追加メモリオーバヘッドがある。そして、２つのページテーブルを管理するソフトウェアオーバヘッドおよび複雑性がある。さらに、ユーザページテーブルはさらに、カーネルアドレスのユーザモードへのリークを可能にし得る、いくつかのスーパバイザマッピング（例えば、トランポリンページの場合、記述子テーブルなど）を有する必要がある。
【００２０】
ここでは、不要な権限横断アクセスに対する防護のための「キル・ザ・プローブ」アプローチの実施形態を詳述する。特に、ユーザおよび／またはスーパバイザモードプログラム（スレッド）に利用可能なリニアアドレス空間は、少なくとも「ユーザアドレス空間」および「スーパバイザアドレス空間」に区分化される。いくつかの実施形態において、この区分化は、リニアアドレスの６４ビットのビット６３（最上位ビット）に基づく。例えば、いくつかの実施形態において、正のアドレス（０に設定されたビット６３を有するリニアアドレス）は、ユーザアドレスであり、ユーザアドレス空間に属し、負のアドレス（１に設定されたビット６３を有するリニアアドレス）は、スーパバイザアドレスであり、スーパバイザアドレス空間に属する。他の実施形態において、正のアドレス（０に設定されたビット６３を有するリニアアドレス）は、スーパバイザアドレスであり、スーパバイザアドレス空間に属し、負のアドレス（１に設定されたビット６３を有するリニアアドレス）は、ユーザアドレスであり、ユーザアドレス空間に属する。
【００２１】
キル・ザ・プローブ（ＫＴＰ）が有効になっている状態で、スーパバイザアドレスへのユーザモードのロード／格納／コードフェッチは概して、一般保護違反を引き起こし、ユーザモードアドレスへのスーパバイザモードコードフェッチは概して、一般保護違反を引き起こす。このフォールトは、（例えば、何らかのトランスレーションルックアサイドバッファ（ＴＬＢ）のルックアップ無しで、または、何らかのページウォークを行うことなく）アドレス生成時に、または、詳述されるようにフロントエンドによって配信される。これは、厄介な追加メモリまたは性能オーバヘッドを課すことなく、カーネルアドレス空間配置をプローブするために使用される攻撃技法のクラス全体を閉じる。
【００２２】
図１は、リニアアドレス空間を区分化する実施形態、および、停止され得るこれらの区分のアクセスのタイプを図示する。示されるように、標準リニアアドレス空間は、スーパバイザアドレス空間１０１およびユーザアドレス空間１０３に分割される。いくつかの実施形態において、非標準アドレス空間１０５は、これら空間１０１および１０３の間にある。この例において、６４ビット標準リニアアドレス空間が図示されているが、しかしながら、より小さい、または、より大きいアドレス空間が使用され得る。空間の間を表現するために単一ビットが使用される。
【００２３】
図示されるように、スーパバイザアドレス空間１０１は、ＦＦＦＦ  ８０００  ００００  ００００からＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦである。これは、１にセットされたビット６３を有するリニアアドレスがスーパバイザアドレスであるという点で、「負」のアドレス空間である。ユーザアドレス空間１０３は、００００  ００００  ００００  ００００から００００  ７ＦＦＦ  ＦＦＦＦ  ＦＦＦＦである。ユーザアドレス空間１０３は、０に設定されたビット６３を有するリニアアドレスがユーザアドレスであるという点で、「正」のアドレス空間である。
【００２４】
リニアアドレスを使用するユーザモードプログラム（スレッド）１１１からのアクセスは、ユーザアドレス空間１０３に許可されているが、一般的に、ユーザモードプログラム（スレッド）１１１からのプローブは、スーパバイザアドレス空間１０１に到達することを停止されるべきである。
【００２５】
同様に、リニアアドレスを使用するスーパバイザモードプログラム（スレッド）１１３からのアクセスは、スーパバイザアドレス空間１０１に許可されているが、一般的に、スーパバイザモードプログラム（スレッド）１１３からのコードフェッチまたはプローブは、ユーザアドレス空間１０３に到達することを停止されるべきである。
【００２６】
図２は、リニアアドレス空間を区分化する実施形態、および、停止され得るこれらの区分へのアクセスのタイプを図示する。示されるように、標準リニアアドレス空間は、スーパバイザアドレス空間２０１およびユーザアドレス空間２０３に分割される。いくつかの実施形態において、非標準アドレス空間２０５はこれら空間２０１および２０３の間にある。この例において、６４ビット標準リニアアドレス空間が図示されているが、しかしながら、より小さい、または、より大きいアドレス空間が使用され得る。
【００２７】
図示されるように、ユーザアドレス空間２０３は、ＦＦＦＦ  ８０００  ００００  ００００からＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦである。これは、１にセットされたビット６３を有するリニアアドレスがユーザアドレスであるという点で、「負」のアドレス空間である。スーパバイザアドレス空間２０１は、００００  ００００  ００００  ００００から００００  ７ＦＦＦ  ＦＦＦＦ  ＦＦＦＦである。スーパバイザアドレス空間２０１は、０に設定されたビット６３を有するリニアアドレスがユーザアドレスを有するという点で、「正」のアドレス空間である。 
【００２８】
リニアアドレスを使用するユーザモードプログラム（スレッド）２１１からのアクセスは、ユーザアドレス空間２０３に許可されているが、一般的に、ユーザモードプログラム（スレッド）２１１からのプローブは、スーパバイザアドレス空間２０１に到達することを停止されるべきである。
【００２９】
同様に、リニアアドレスを使用するスーパバイザモードプログラム（スレッド）２１３からのアクセスは、スーパバイザアドレス空間２０１に許可されているが、一般的に、スーパバイザモードプログラム（スレッド）２１３からのコードフェッチまたはプローブは、ユーザアドレス空間２０３に到達することを停止されるべきである。
【００３０】
ＫＴＰの技法は、プロセッサコアの様々な部分において実装され得る。図３は、ＫＴＰをサポートするプロセッサコアの回路の実施形態を図示する。特に、本明細書において詳述される実施形態は、フロントエンドユニット３３０における１または複数のプローブチェックユニット３９４と、アドレス生成回路３９０におけるアクセスチェック回路とを含む。
【００３１】
プローブチェックユニット３９４は、次命令ポインタ（ＮＩＰ）発生器３９２と、命令ＴＬＢユニット８３６および命令キャッシュユニット３３４との間にある。
【００３２】
プローブチェックユニット３９４は、ユーザモードプログラム（スレッド）からのコードフェッチまたはプローブがスーパバイザリニアアドレス空間にアクセスすることを停止する。アクセスが許可されていないと決定すると、プローブチェックユニット３９４は、フォールトを引き起こす、および／または、投機的コードフェッチアクセスをキャンセルする。いくつかの実施形態において、アクセスが許可されていないと決定されたとき、ＴＬＢルックアップ、ページウォーク、または命令キャッシュルックアップは実行されない。更に、いくつかの実施形態において、プローブチェックユニット３９４は、現在の権限レベルがユーザモードであり、ＫＴＰが有効であり、ページングが有効であり、物理アドレス拡張子（ＰＡＥ）が利用され、ロングモードが有効であり、コードフェッチまたはプローブのリニアアドレスの最上位ビットが、スーパバイザアドレス空間におけるアドレスを示すように設定されているときにフォールトを生成する。
【００３３】
しかしながら、いくつかの実施形態において、スーパバイザアドレスの範囲はバイパス範囲を通じてユーザ空間（ユーザモードプログラム（スレッド））に利用可能となる。いくつかの実施形態において、この範囲は、モデル固有レジスタ（ＭＳＲ）において指定される。例えば、このＭＳＲのビット最大リニアアドレス（ＭＡＸ＿ＬＡ）：３９はバイパスプレフィックスを定義し、リニアアドレス［ＭＡＸ＿ＬＡ−１：３９］がバイパスプレフィックスに等しいとき、ユーザモードプログラム（スレッド）からのこの範囲へのアクセスのために、ＫＴＰ施行が実行されない。
【００３４】
プローブチェックユニット３９４は、スーパバイザモードプログラム（スレッド）からユーザリニアアドレス空間へのコードフェッチまたはプローブを停止する。プローブチェックユニット３９４は、アクセスが許可されていないと決定すると、フォールトを生じさせる、および／または、投機的コードフェッチをキャンセルする。いくつかの実施形態において、アクセスが許可されていると決定されたとき、ＴＬＢルックアップ、ページウォーク、または命令キャッシュルックアップは実行されない。更に、いくつかの実施形態において、プローブチェックユニット３９４は、現在の権限レベルがスーパバイザモードであり、ＫＴＰが有効であり、ページングが有効であり、物理アドレス拡張子（ＰＡＥ）が利用され、ロングモードが有効であり、コードフェッチまたはプローブのリニアアドレスの最上位ビットが、ユーザアドレス空間におけるアドレスを示すように設定されているときにフォールトを生成する。
【００３５】
アドレス生成ユニット３９０は、ユーザモードプログラム（スレッド）からスーパバイザアドレス空間へ行われた非スーパバイザリニアアクセスがあるときを決定する。非スーパバイザリニアアクセス操作の例は、限定されるものではないが、ロード、格納、キャッシュラインフラッシュ（例えば、ＣＬＦＬＵＳＨまたはＣＬＦＬＵＳＨＯＰＴ）、キャッシュラインデモーション（例えば、ＣＬＤＥＭＯＴＥ）、および、スーパバイザ空間アドレスにおいてリニアアドレスを利用することを試みるキャッシュラインライトバック（例えば、ＣＬＷＢ）のための命令、または、スーパバイザ空間アドレスのプリフェッチのための命令を含む、１または複数のリニアアクセス操作を含む。いくつかの実施形態において、非スーパバイザリニアアクセス操作は、ユーザモードから行われるが、いくつかのセグメントレジスタおよびそれらの関連アドレス指定テーブル（グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／または、タスクレジスタなど）に行われないリニアアクセス操作（命令またはプリフェッチ）である。なお、このことは、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／またはタスクレジスタがさらに許可され得ることを意味する。
【００３６】
アドレス生成ユニット３９０は、スーパバイザモードプログラム（スレッド）からユーザアドレス空間に行われたスーパバイザリニアアクセスがあるときを決定する。スーパバイザリニアアクセス操作の例は、限定されるものではないが、ロード、格納、キャッシュラインフラッシュ（例えば、ＣＬＦＬＵＳＨまたはＣＬＦＬＵＳＨＯＰＴ）、キャッシュラインデモーション（例えば、ＣＬＤＥＭＯＴＥ）、および、ユーザ空間アドレスにおいてリニアアドレスを利用することを試みるキャッシュラインライトバック（例えば、ＣＬＷＢ）のための命令、または、ユーザ空間アドレスのプリフェッチのための命令を含む、１または複数のリニアアクセス操作を含む。いくつかの実施形態において、スーパバイザリニアアクセス操作は、ユーザモードにおいて、または、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／またはタスクレジスタに対して実行されないリニアアクセス操作である。
【００３７】
コア３９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、あるいはハイブリッドまたは代替のコアタイプであってよい。さらに別の選択肢として、コア３９０は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィックス処理装置（ＧＰＧＰＵ）コア、グラフィックスコアなどの専用コアであってもよい。
【００３８】
フロントエンドユニット３３０には、命令キャッシュユニット３３４に結合された分岐予測ユニット３３２が含まれ、命令キャッシュユニット３３４は命令トランスレーションルックアサイドバッファ（ＴＬＢ）３３６に結合され、ＴＬＢ３３６は命令フェッチユニット３３８に結合され、命令フェッチユニット３３８は復号ユニット３４０に結合される。復号ユニット３４０（またはデコーダ）は、命令を復号し、元の命令から復号され、これらを反映し、またはこれらから導出された１つまたは複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、または他の制御信号を、出力として生成してよい。復号ユニット３４０は、様々な異なる機構を用いて実装されてよい。適切な機構の例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリーメモリ（ＲＯＭ）などが含まれるが、それらに限定されない。一実施形態において、コア３９０は、マイクロコードＲＯＭ、または特定のマクロ命令のためのマイクロコードを（例えば、復号ユニット３４０またはフロントエンドユニット３３０内の他のものに）格納する他の媒体を含む。復号ユニット３４０は、実行エンジンユニット３５０におけるリネーミング／アロケータユニット３５２に結合される。
【００３９】
実行エンジンユニット３５０には、リタイアメントユニット３５４と、１つまたは複数のスケジューラユニット３５６のセットとに結合された、リネーミング／アロケータユニット３５２が含まれる。スケジューラユニット３５６は任意の数の異なるスケジューラを表し、リザベーションステーション、中央命令ウィンドウなどを含む。スケジューラユニット３５６は、物理レジスタファイルユニット３５８に結合される。物理レジスタファイルユニット３５８は各々、１または複数の物理レジスタファイルを表す。１または複数の物理レジスタファイルはそれぞれ、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、制御およびステータス（例えば、実行すべき次の命令のアドレス、および／または、制御およびステータスレジスタである命令ポインタ）等、１または複数の異なるデータタイプを格納している。一実施形態では、物理レジスタファイルユニット３５８は、ベクトルレジスタユニットおよびスカラレジスタユニットを備える。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供することができる。物理レジスタファイルユニット３５８は、レジスタリネーミングおよびアウトオブオーダ実行が（例えば、リオーダバッファおよびリタイアメントレジスタファイルを使用すること、将来ファイル、履歴バッファ、およびリタイアメントレジスタファイルを使用すること、レジスタマップおよびレジスタのプールを使用することなどで）実装され得る様々な方法を示すために、リタイアメントユニット３５４と重なっている。リタイアメントユニット３５４および物理レジスタファイルユニット３５８は、実行クラスタ３６０に結合される。実行クラスタ３６０には、１つまたは複数の実行ユニット３６２のセットおよび１つまたは複数のメモリアクセスユニット３６４のセットが含まれる。実行ユニット３６２は、様々な演算（例えば、シフト、加算、減算、乗算）を様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に実行してよい。いくつかの実施形態は、特定の機能または機能のセットに専用のいくつかの実行ユニットを含んでもよいが、他の実施形態は、ただ１つの実行ユニットまたはすべてがすべての機能を実行する複数の実行ユニットを含んでもよい。スケジューラユニット３５６、物理レジスタファイルユニット３５８、および実行クラスタ３６０は、特定の実施形態が特定のタイプのデータ／演算用の別々のパイプライン（例えばスカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、ならびに／または各々が独自のスケジューラユニット、物理レジスタファイルユニット、および／もしくは実行クラスタを有するメモリアクセスパイプライン−別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット３６４を有する特定の実施形態が実装される）を作成するので、場合によっては複数であるように示されている。別々のパイプラインが使用される場合、これらのパイプラインのうちの１つまたは複数がアウトオブオーダ発行／実行であり、残りがインオーダであってもよいことも理解されたい。
【００４０】
メモリアクセスユニット３６４のセットはメモリユニット３７０に結合され、メモリユニット３７０には、レベル２（Ｌ２）キャッシュユニット３７６に結合されたデータキャッシュユニット３７４に結合されたデータＴＬＢユニット３７２が含まれる。例示的な１つの実施形態において、メモリアクセスユニット３６４は、ロードユニット、ストアアドレスユニット、ストアデータユニットを含むことができ、それぞれがメモリユニット３７０内のデータＴＬＢユニット３７２に結合される。命令キャッシュユニット３３４はさらに、メモリユニット３７０内のレベル２（Ｌ２）キャッシュユニット３７６に結合される。Ｌ２キャッシュユニット３７６は、１つまたは複数の他のレベルのキャッシュに結合され、最終的にメインメモリに結合される。 
【００４１】
例として、例示的なレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、以下のようにパイプライン３００を実装することができる。１）命令フェッチ３３８がフェッチステージ３０２および長さ復号ステージ３０４を実行する。２）復号ユニット３４０が復号ステージ３０６を実行する。３）リネーミング／アロケータユニット３５２が割当てステージ３０８およびリネーミングステージ３１０を実行する。４）スケジューラユニット３５６がスケジュールステージ３１２を実行する。５）物理レジスタファイルユニット３５８およびメモリユニット３７０がレジスタ読み取り／メモリ読み取りステージ３１４を実行し、実行クラスタ３６０が実行ステージ３１６を実行する。６）メモリユニット３７０および物理レジスタファイルユニット３５８がライトバック／メモリ書き込みステージ３１８を実行する。７）様々なユニットが例外処理ステージ３２２に関与してもよい。８）リタイアメントユニット３５４および物理レジスタファイルユニット３５８がコミットステージ３２４を実行する。
【００４２】
コア３９０は、本明細書で説明された命令を含む、１つまたは複数の命令セット（例えば、（より新しいバージョンで追加されたいくつかの拡張を有する）ｘ８６命令セット、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  Ｈｏｌｄｉｎｇｓの（ＮＥＯＮなどのオプションの追加拡張を有する）ＡＲＭ命令セット）をサポートすることができる。一実施形態では、コア３９０はパックドデータ命令セット拡張子（例えば、ＡＶＸ１、ＡＶＸ２）をサポートするロジックを含み、これによって、多くのマルチメディアアプリケーションが使用する演算がパックドデータを使用して実行できるようになる。
【００４３】
コアは、（演算またはスレッドの２つ以上の並列セットを実行する）マルチスレッド化をサポートしてもよく、タイムスライスマルチスレッド化、（単一の物理的コアが、その物理的コアが同時にマルチスレッド化されるスレッドの各々に論理コアを提供する）同時マルチスレッド化、またはこれらの組み合わせ（例えば、インテル（登録商標）ハイパースレッディングテクノロジーの場合のような、タイムスライスフェッチおよび復号ならびにその後の同時マルチスレッド化）を含む様々な方法で、これを行えることは、理解されるべきである。
【００４４】
レジスタリネーミングはアウトオブオーダ実行の文脈で説明されているが、レジスタリネーミングはインオーダアーキテクチャで使用されてもよいことを理解されたい。図示されたプロセッサの実施形態はまた、別々の命令およびデータキャッシュユニット３３４／３７４ならびに共有Ｌ２キャッシュユニット３７６を含むが、代替の実施形態は、例えば、レベル１（Ｌ１）内部キャッシュまたは複数レベルの内部キャッシュなどの、命令とデータの両方のための単一の内部キャッシュを有してもよい。いくつかの実施形態において、システムは、内部キャッシュと、コアおよび／またはプロセッサの外部にある外部キャッシュの組合せを含んでもよい。あるいは、キャッシュのすべてがコアおよび／またはプロセッサの外部にあってもよい。
【００４５】
図４は、アドレス生成回路３９０の態様の実施形態を図示する。アクセスチェック回路４１３は、要求されたアクセスが許可されるかどうかを決定し、この指示を（通常のアドレス生成機能を実行する）アドレス生成回路３９０のその他の部分に提供する。アドレス生成回路３９０は、この決定をするために複数の入力を受信する。
【００４６】
示されるように、アドレス生成回路３９０は、リニアアクセス命令またはプリフェッチ要求によって使用されるリニアアドレス４０３の一部をアクセス回路４１３で受信する。特に、リニアアドレスの最上位ビットが受信される。
【００４７】
現在の権限レベルが権限レベルストレージ４０５から受信される。例えば、現在の権限レベルがユーザレベル（例えばリング３）か、または、スーパバイザレベル（例えば、リング０）かの指示が権限レベルストレージ４０５から受信される。いくつかの実施形態において、権限レベルストレージ４０５はセグメントレジスタである。
【００４８】
いくつかの実施形態において、スーパバイザセグメントレジスタ４０９（例えば、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／または、タスクレジスタ）が命令またはプリフェッチによって要求されているかどうかの指示がアクセスチェック回路に提供される。いくつかの実施形態において、バイパス範囲レジスタ４１１の使用およびその値の指示がアクセスチェック回路４１３によって受信される。
【００４９】
また、アクセスチェック回路４１３は、いくつかの実施形態において、１または複数のコントロールレジスタ４１２から入力を受信する。例えば、ＫＴＰが有効かどうか、ページングが有効かどうか、物理アドレス拡張子（ＰＡＥ）が利用されるかどうか、および、ロングモードが有効かどうかについての入力がコントロールレジスタから受信される。いくつかの実施形態において、コントロールレジスタ４（ＣＲ４）は、ＫＴＰおよびＰＡＥの指示を提供し、ＣＲ０は、ページングが有効かどうかの指示（ＣＲ．ＰＧ）を提供し、Ｅｘｔｅｎｄｅｄ  Ｆｅａｔｕｒｅ  Ｅｎａｂｌｅ  Ｒｅｇｉｓｔｅｒは、ロングモードが有効かどうかの指示（ＩＡ３２＿ＥＦＥＲ．ＬＭＥ）を提供する。例えば、ページングモードが６４ビットか（例えば、ＩＡ−３２ｅ  ４レベルページング）。
【００５０】
いくつかの実施形態において、アクセスチェック回路４１３は、１または複数の方法として、上で詳述された操作を実行するよう設計された組み合わせ論理回路である。他の実施形態において、アクセスチェック回路４１３は、１または複数の方法を実行するようステートマシン４１５を動作させる。そのような方法の実施形態の例が図５に関連して詳述される。
【００５１】
図５は、リニアアクセス命令またはプリフェッチに応答して、アドレス生成回路によって実行される方法の実施形態を図示する。いくつかの実施形態において、方法の実施形態がステートマシンを使用して実行される。
【００５２】
５０１において、リニアアクセス操作（命令またはプリフェッチ要求）が受信される。そのような命令の例は上で詳述された。
【００５３】
５０３において、５０３において現在の権限レベル（ＣＰＬ）の決定が行われる。例えば、ＣＰＬは、権限レベルストレージ４０５から取得される。この例において、ユーザおよびスーパバイザという対象の２つの権限レベルのみがある。
【００５４】
決定されたＣＰＬがユーザ（例えばレベル３）であるとき、受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているかどうかの決定が５０４において行われる。例えば、いくつかの実施形態において、このビットが１に設定されている場合（スーパバイザアドレス空間が負である実施形態）、この決定は、操作がユーザＣＰＬを有し、アクセスが許可されない可能性があることを指示する。
【００５５】
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスが５０７において許可され、通常のアドレス生成タスクが継続し、操作は実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。
【００５６】
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスは許可されない。その後、受信された操作が非スーパバイザリニアアクセスのためのものであるかどうかの決定が５０５において行われる。例えば、操作が、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／またはタスクレジスタに対するリニアアクセスであるか、ならびに、ユーザ権限レベルであるか。換言すれば、非スーパバイザリニアアクセスは、（（ＣＰＬ＝＝３＆＆！ＧＤＴＲ＆＆！ＬＤＴＲ＆＆！ＤＴＲ＆＆！ＴＲ）＆リニアアクセス）である。
【００５７】
操作が非スーパバイザリニアアクセスであるとき、それは５０７で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。
【００５８】
いくつかの実施形態において、操作がスーパバイザリニアアクセスである場合、受信された操作によって使用されるアドレスがバイパス範囲にあるかどうかの決定が５０８で行われる。当然、バイパス範囲は有効にされ、これについて真に設定される必要がある。アドレスがバイパス範囲内にあるとき、それは５０７で許可され、通常のアドレス生成タスクは継続し、操作が実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。
【００５９】
使用されるバイパスが無い場合（または、アドレスがバイパス範囲内に無い場合）、いくつかの実施形態において、ＫＴＰが使用されているかどうかの決定が５０９において行われる。例えば、いくつかの実施形態において、コントロールレジスタ（ＣＲ４など）は、ＫＴＰが使用されているときに設定されるビットを含む。ＫＴＰが使用されていないとき、操作は５０７で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。なお、５０８および５０９における操作は、いくつかの実施形態において、逆になる。
【００６０】
ＫＴＰが使用される場合、いくつかの実施形態において、操作がソフトウェアプリフェッチ命令、キャッシュラインデモート命令、または投機的アクセスの１つであるとき、その命令または投機的アクセスは５１１でキャンセルされる。
【００６１】
ＫＴＰが使用される場合、いくつかの実施形態において、非投機的アクセスのフォールトが５１３で生成される。例えば、いくつかの実施形態において、ＫＴＰ、ＰＡＥ、ページングが有効であり、ロングモードが有効であり、リニアアドレスがスーパバイザアドレスを指示し、アクセスが非スーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、（（Ｃ４．ＫＴＰ＆＆ＣＲ０．ＰＧ＆＆ＣＲ４．ＰＡＥ＆＆ＩＡ３２＿ＥＦＥＲ．ＬＭＥ＆＆ＬＡ［６３］）＆＆非スーパバイザリニアアクセス)であるとき、フォールトが生成される。
【００６２】
いくつかの実施形態において、ＫＴＰが使用される場合、ＴＬＢまたはデータキャッシュルックアップも、ページウォークも５１５で実行されない。
【００６３】
決定されたＣＰＬがスーパバイザ（例えばレベル０）であるとき、受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されているかどうかの決定が５１６において行われる。例えば、いくつかの実施形態において、このビットが０に設定されている場合（ユーザアドレス空間が正である実施形態）、この決定は、操作がスーパバイザＣＰＬを有し、アクセスが許可されない可能性があることを指示する。
【００６４】
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスが５０７において許可され、通常のアドレス生成タスクが継続し、操作は実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。
【００６５】
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスは許可されない。次に、受信された操作がスーパバイザリニアアクセスのためであるかどうかの決定が５１７で行われる。例えば、操作が、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／またはタスクレジスタに対するリニアアクセスであるか、ならびに、スーパバイザ権限レベルであるか。換言すれば、スーパバイザリニアアクセスは、（（ＣＰＬ＝＝！３｜｜ＧＤＴＲ｜｜ＬＤＴＲ｜｜ＤＴＲ｜｜ＴＲ）＆リニアアクセス）である。
【００６６】
操作がスーパバイザリニアアクセスであるとき、それは５０７で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。
【００６７】
いくつかの実施形態において、操作が非スーパバイザリニアアクセスであるとき、スーパバイザモードアクセス防止（ＳＭＡＰ）が有効であるかどうかの決定が５１８で行われる。ＳＭＡＰにおいて、スーパバイザモードプログラムは任意選択で、ユーザ空間メモリマッピングを設定し、その結果、スーパバイザモードからのそれらのマッピングへのアクセスはトラップを引き起こす。いくつかの実施形態において、この決定は、ＳＭＡＰおよびアライメントチェックが有効であるかどうかのステータスをチェックすることによって実行される。
【００６８】
ＳＭＡＰが有効でないとき、操作は５０７で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。
【００６９】
ＳＭＡＰが使用されているとき、または、利用可能でない場合、いくつかの実施形態において、ＫＴＰが使用されているかどうかの決定は５１９で行われる。例えば、いくつかの実施形態において、コントロールレジスタ（ＣＲ４など）は、ＫＴＰが使用されているときに設定されるビットを含む。ＫＴＰが使用されていないとき、操作は５０７で許可され、通常のアドレス生成タスクが継続し、操作が実行され得る（例えば、物理アドレスが生成または取得され、操作（ロード等）が実行され得る）。なお、５１８および５１９における操作は、いくつかの実施形態において、逆になる。
【００７０】
ＫＴＰが使用される場合、いくつかの実施形態において、操作がソフトウェアプリフェッチ命令、キャッシュラインデモート命令、または投機的アクセスの１つであるとき、その命令または投機的アクセスは５２１でキャンセルされる。
【００７１】
ＫＴＰが使用される場合、いくつかの実施形態において、非投機的アクセスのフォールトが５１３で生成される。例えば、いくつかの実施形態において、ＫＴＰ、ＰＡＥ、ページングが有効であり、ロングモードが有効であり、リニアアドレスがユーザアドレスを指示し、アクセスがスーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、（（Ｃ４．ＫＴＰ＆＆ＣＲ０．ＰＧ＆＆ＣＲ４．ＰＡＥ＆＆ＩＡ３２＿ＥＦＥＲ．ＬＭＥ＆＆！ＬＡ［６３］）＆＆スーパバイザリニアアクセス)であるとき、フォールトが生成される。
【００７２】
いくつかの実施形態において、ＫＴＰが使用される場合、ＴＬＢまたはデータキャッシュルックアップも、ページウォークも５２５で実行されない。
【００７３】
図６は、プローブチェックユニット３９４の態様の実施形態を図示する。プローブチェックユニット３９４は、要求されたアクセスが可能かどうかを決定し、この指示を命令ＴＬＢ３３６または命令キャッシュ３３４に提供する。プローブチェックユニット３９４は、この決定を行うために、複数の入力を受信する。
【００７４】
示されるように、プローブチェックユニット３９４は、リニアアクセス命令またはプリフェッチ要求によって使用されるリニアアドレス６０３の一部をアクセス回路６１３で受信する。特に、いくつかの実施形態において、リニアアドレスの最上位ビットが受信される。
【００７５】
現在の権限レベルが権限レベルストレージ６０５から受信される。例えば、現在の権限レベルがユーザレベル（例えばリング３）か、または、スーパバイザレベル（例えば、リング０）かの指示が権限レベルストレージ６０５から受信される。いくつかの実施形態において、権限レベルストレージ６０５はセグメントレジスタである。
【００７６】
いくつかの実施形態において、スーパバイザセグメントレジスタ６０９（例えば、グローバル記述子テーブルレジスタ、ローカル記述子テーブルレジスタ、割り込み記述子テーブルレジスタ、および／または、タスクレジスタ）が命令またはフェッチによって要求されているかどうかの指示がアクセスチェック回路に提供される。
【００７７】
プローブチェックユニット３９４はまた、１または複数のコントロールレジスタから入力を受信する。例えば、ＫＴＰが有効かどうか、ページングが有効かどうか、物理アドレス拡張子（ＰＡＥ）が利用されるかどうか、および、ロングモードが有効かどうかについての入力がコントロールレジスタから受信される。いくつかの実施形態において、コントロールレジスタ４（ＣＲ４）は、ＫＴＰおよびＰＡＥの指示を提供し、ＣＲ０は、ページングが有効かどうかの指示（ＣＲ．ＰＧ）を提供し、Ｅｘｔｅｎｄｅｄ  Ｆｅａｔｕｒｅ  Ｅｎａｂｌｅ  Ｒｅｇｉｓｔｅｒは、ロングモードが有効かどうかの指示（ＩＡ３２＿ＥＦＥＲ．ＬＭＥ）を提供する。例えば、ページングモードが６４ビットか（例えば、ＩＡ−３２ｅ  ４レベルページング）。
【００７８】
いくつかの実施形態において、プローブチェックユニット３９４は、１または複数の方法として、上で詳述された操作を実行するよう設計された組み合わせ論理回路である。他の実施形態において、プローブチェックユニット３９４は、１または複数の方法を実行するようステートマシン６１５を動作させる。そのような方法の実施形態の例が図７に関連して詳述される。
【００７９】
図７は、コードフェッチまたはプローブに応答して、プローブチェックユニットによって実行される方法の実施形態を図示する。いくつかの実施形態において、方法の実施形態がステートマシンを使用して実行される。
【００８０】
７０１において、７０１においてコードフェッチ、またはプローブ、要求が受信される。７０３において、ＣＰＬの決定が行われる。例えば、ＣＰＬは権限レベルストレージ６０５から取得される。この例において、ユーザおよびスーパバイザという対象の２つの権限レベルのみがある。
【００８１】
ＣＰＬがユーザレベルであるとき、ＫＴＰが使用されているかどうかについての決定が７０５で行われる。例えば、いくつかの実施形態において、コントロールレジスタ（ＣＲ４など）は、ＫＴＰが使用されているときに設定されるビットを含む。ＫＴＰが使用されていない場合、７０７において操作が許可される。
【００８２】
決定されたＣＰＬがユーザ（例えばレベル３）であり、ＫＴＰが使用されている場合、受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているかどうかの決定が７０８において行われる。例えば、いくつかの実施形態において、このビットが１に設定されている場合（スーパバイザアドレス空間が負である実施形態）、この決定は、操作がユーザＣＰＬを有し、アクセスが許可されない可能性があることを指示する。
【００８３】
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスが７０７で許可される。
【００８４】
受信された操作のリニアアドレスの最上位ビットが、アドレスがスーパバイザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスは許可されない。
【００８５】
操作が投機的アクセスの１つである場合、それは７０９でキャンセルされる。
【００８６】
７１１に示されるように、ＴＬＢまたはデータキャッシュルックアップもページウォークも実行されない。
【００８７】
７１３において、非投機的アクセスのフォールトがフロントエンドから生成される。例えば、いくつかの実施形態において、ＫＴＰ、ＰＡＥ、ページングが有効であり、ロングモードが有効であり、リニアアドレスがスーパバイザアドレスを指示し、ＣＰＬが非スーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、（（Ｃ４．ＫＴＰ＆＆ＣＲ０．ＰＧ＆＆ＣＲ４．ＰＡＥ＆＆ＩＡ３２＿ＥＦＥＲ．ＬＭＥ＆＆ＬＡ［６３］）＆＆ＣＰＬ＝３)であるとき、フォールトが生成される。
【００８８】
ＣＰＬがスーパバイザレベルであるとき、ＫＴＰが使用されているかどうかの決定が７１５において行われる。例えば、いくつかの実施形態において、コントロールレジスタ（ＣＲ４など）は、ＫＴＰが使用されているときに設定されるビットを含む。ＫＴＰが使用されていないとき、操作が７１７において許可される。
【００８９】
決定されたＣＰＬがスーパバイザ（例えばレベル０）であり、ＫＴＰが使用されているとき、受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されているかどうかの決定が７１６において行われる。例えば、いくつかの実施形態において、このビットが０に設定されている場合（ユーザアドレス空間が正である実施形態）、この決定は、操作がスーパバイザＣＰＬを有し、アクセスが許可されない可能性があることを指示する。
【００９０】
受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されていないとき、リニアアドレス空間へのアクセスが７０７で許可される。
【００９１】
受信された操作のリニアアドレスの最上位ビットが、アドレスがユーザアドレス空間の一部であることを指示するように設定されているとき、リニアアドレス空間へのアクセスは許可されない。
【００９２】
操作が投機的アクセスの１つのであるとき、それは７１７においてキャンセルされる。
【００９３】
７１９に示されるように、ＴＬＢまたはデータキャッシュルックアップもページウォークも実行されない。
【００９４】
７２１において、非投機的アクセスのフォールトがフロントエンドから生成される。例えば、いくつかの実施形態において、ＫＴＰ、ＰＡＥ、ページングが有効であり、ロングモードが有効であり、リニアアドレスがスーパバイザアドレスを指示し、ＣＰＬが非スーパバイザであるとき、フォールトがシグナリングされる。換言すれば、いくつかの実施形態において、（（Ｃ４．ＫＴＰ＆＆ＣＲ０．ＰＧ＆＆ＣＲ４．ＰＡＥ＆＆ＩＡ３２＿ＥＦＥＲ．ＬＭＥ＆＆！ＬＡ［６３］）＆＆ＣＰＬ！＝３)であるとき、フォールトが生成される。
【００９５】
上で詳述されたＫＴＰに利用され得る例示的アーキテクチャおよびシステムが下に詳述される。
【００９６】
例示的レジスタアーキテクチャ
【００９７】
図８は、本発明の一実施形態によるレジスタアーキテクチャ８００のブロック図である。
【００９８】
コントロールレジスタ８４５は、ＫＴＰの使用、ＳＭＡＰの使用など、上で詳述されたものを含む制御情報を格納する。
【００９９】
示される実施形態において、５１２ビット幅の３２個のベクトルレジスタ８１０が存在する。これらのレジスタは、ｚｍｍ０〜ｚｍｍ３１として参照される。下位１１個のｚｍｍレジスタの下位２５６ビットは、レジスタｙｍｍ０〜１５上に重ね合わされる。下位の１１個のｚｍｍレジスタの下位の１２８ビット（ｙｍｍレジスタの下位の１２８ビット）は、レジスタｘｍｍ０−１５に重ね合わされる。
【０１００】
汎用レジスタ８２５−図示された実施形態では、メモリオペランドをアドレス指定するために既存のｘ８６アドレス指定モードとともに使用される１６個の６４ビット汎用レジスタが存在する。これらのレジスタは、ＲＡＸ、ＲＢＸ、ＲＣＸ、ＲＤＸ、ＲＢＰ、ＲＳＩ、ＲＤＩ、ＲＳＰ、およびＲ８からＲ１５の名前で参照される。
【０１０１】
ＭＭＸパックド整数フラットレジスタファイル８５０がエイリアスされる、スカラ浮動小数点スタックレジスタファイル（ｘ８７スタック）８４５−図示される実施形態では、ｘ８７スタックは、ｘ８７命令セット拡張子を使用して３２／６４／８０ビット浮動小数点データに対してスカラ浮動小数点演算を実行するために使用される８要素スタックである。一方、ＭＭＸレジスタは、６４ビットパックド整数データに対して演算を実行するため、ならびにＭＭＸレジスタとＸＭＭレジスタとの間で実行されるいくつかの演算のためにオペランドを保持するために、使用される。
【０１０２】
本発明の代替の実施形態は、より広いまたはより狭いレジスタを使用してもよい。さらに、本発明の代替の実施形態は、より多い、より少ない、または異なるレジスタファイルおよびレジスタを使用してもよい。
【０１０３】
例示的なコアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ
【０１０４】
プロセッサコアは、様々な方法で、様々な目的のために、様々なプロセッサにおいて実装され得る。例えば、そのようなコアの実装形態には、１）汎用コンピューティング向けの汎用インオーダコア、２）汎用コンピューティング向けの高性能汎用アウトオブオーダコア、３）主としてグラフィックスおよび／または科学用（スループット）コンピューティング向けの特定用途向けコアが含まれてもよい。様々なプロセッサの実装形態には、１）汎用コンピューティング向けの１または複数の汎用インオーダコアおよび／または汎用コンピューティング用の１または複数の汎用アウトオブオーダコアを含むＣＰＵ、ならびに２）主としてグラフィックスおよび／または科学（スループット）向けの１または複数の特定用途向けコアを含むコプロセッサが含まれてもよい。そのような様々なプロセッサは様々なコンピュータシステムアーキテクチャをもたらし、そのようなコンピュータシステムアーキテクチャには、１）ＣＰＵとは別のチップ上のコプロセッサ、２）ＣＰＵと同じパッケージ内の別のダイ上のコプロセッサ、３）ＣＰＵと同じダイ上のコプロセッサ（この場合、そのようなコプロセッサは、統合グラフィックスおよび／もしくは科学（スループット）ロジックなどの特定用途向けロジック、または特定用途向けコアと呼ばれることがある）、ならびに４）同じダイ上に（アプリケーションコアまたはアプリケーションプロセッサと呼ばれることもある）説明されたＣＰＵ、上述したコプロセッサ、および追加の機能を含んでもよいシステムオンチップが含まれてもよい。例示的なコアアーキテクチャが次に説明され、例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。本明細書で詳述されるのは、例示的なコア、プロセッサなどを備える回路（ユニット）である。
【０１０５】
例示的なコアアーキテクチャ
【０１０６】
インオーダおよびアウトオブオーダコアブロック図
【０１０７】
図９のＡは、本発明の実施形態による、例示的なインオーダパイプライン、および例示的なレジスタリネーミング、アウトオブオーダ発行／実行パイプラインの両方を示すブロック図である。図９のＢは、本発明の実施形態による、プロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態と、例示的なレジスタリネーミング、アウトオブオーダ発行／実行アーキテクチャコアの両方を示すブロック図である。図９のＡ〜Ｂの実線枠はインオーダパイプラインおよびインオーダコアを示し、破線枠の任意選択の追加は、レジスタリネーミング、アウトオブオーダ発行／実行パイプラインおよびコアを示す。インオーダの態様がアウトオブオーダの態様のサブセットであると仮定して、アウトオブオーダの態様が説明される。
【０１０８】
図９のＡにおいて、プロセッサパイプライン９００は、フェッチステージ９０２、レングス復号ステージ９０４、復号ステージ９０６、割り当てステージ９０８、リネーミングステージ９１０、スケジューリング（ディスパッチまたは発行としても知られる）ステージ９１２、レジスタ読み取り／メモリ読み取りステージ９１４、実行ステージ９１６、ライトバック／メモリ書き込みステージ９１８、例外処理ステージ９２２、およびコミットステージ９２４を含む。
【０１０９】
具体的な例示的インオーダコアアーキテクチャ
【０１１０】
図１０Ａ〜図１０Ｂは、より具体的な例示的インオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック（同じタイプおよび／または異なるタイプの他のコアを含む）の１つになるであろう。論理ブロックは、用途に応じて、高帯域幅相互接続ネットワーク（例えば、リングネットワーク）を通じて何らかの固定機能ロジック、メモリＩ／Ｏインタフェース、およびその他の必要なＩ／Ｏロジックと通信する。
【０１１１】
図１０Ａは、本発明の実施形態による、オンダイ相互接続ネットワーク１００２への接続に加え、レベル２（Ｌ２）キャッシュのローカルサブセット１００４を有する単一のプロセッサコアのブロック図である。一実施形態では、命令デコーダ１０００は、パックドデータ命令セット拡張子を有するｘ８６命令セットをサポートする。Ｌ１キャッシュ１００６によって、キャッシュメモリからスカラユニットおよびベクトルユニットへの低レイテンシアクセスが可能となる。一実施形態では、（設計を簡略化するために）スカラユニット１００８およびベクトルユニット１０１０が、別々のレジスタセット（それぞれ、スカラレジスタ１０１２およびベクトルレジスタ１０１４）を用い、これらの間で転送されるデータはメモリに書き込まれ、その後、レベル１（Ｌ１）キャッシュ１００６から読み戻されるが、本発明の代替的な実施形態は、異なる手法を用いてよい（例えば、単一のレジスタセットを用いる、または書き込みおよび読み戻しを行うことなく、２つのレジスタファイル間でのデータ転送を可能にする通信経路を含む）。
【０１１２】
Ｌ２キャッシュのローカルサブセット１００４は、別個のローカルサブセットに分割されるグローバルＬ２キャッシュの一部であり、プロセッサコアごとに１つである。各プロセッサコアは、独自のＬ２キャッシュのローカルサブセット１００４に直接アクセスする経路を有する。プロセッサコアにより読み出されたデータは、Ｌ２キャッシュサブセット１００４に格納され、他のプロセッサコアが独自のローカルＬ２キャッシュサブセットにアクセスするのと並行して、高速にアクセスされ得る。プロセッサコアにより書き込まれたデータは、独自のＬ２キャッシュサブセット１００４に格納され、必要に応じて他のサブセットからフラッシュされる。リングネットワークは共有データの一貫性を保証する。リングネットワークは、プロセッサコア、Ｌ２キャッシュ、および他の論理ブロックなどのエージェントがチップ内で互いに通信できるようにするために、双方向である。各リングデータパスは、いくつかの実施形態において、方向ごとに１０２４ビット幅である。
【０１１３】
図１０Ｂは、本発明の実施形態による図１０Ａのプロセッサコアの一部に関する拡大図である。図１０Ｂは、Ｌ１キャッシュ１００４の一部であるＬ１データキャッシュ１００６Ａと、ベクトルユニット１０１０およびベクトルレジスタ１０１４に関するより詳細とを含む。具体的には、ベクトルユニット１０１０は１１幅のベクトル処理ユニット（ＶＰＵ）（１６幅のＡＬＵ１０２８を参照）であり、整数命令、単精度浮動小数点命令、および倍精度浮動小数点命令のうち１つまたは複数を実行する。ＶＰＵは、スウィズルユニット１０２０を用いるレジスタ入力のスウィズル、数値変換ユニット１０２２Ａおよび１０２２Ｂを用いる数値変換、および複製ユニット１０２４とメモリ入力とを用いる複製をサポートする。
【０１１４】
統合メモリコントローラおよびグラフィックスを有するプロセッサ
【０１１５】
図１１は、本発明の実施形態に従って、１つより多くのコアを有することができ、統合メモリコントローラを有することができ、統合グラフィックスを有することができるプロセッサ１１００のブロック図である。図１１の実線枠は、単一のコア１１０２Ａ、システムエージェント１１１０、１つまたは複数のバスコントローラユニット１１１６のセットを有するプロセッサ１１００を示し、任意追加の破線枠は、複数のコア１１０２Ａ〜１１０２Ｎ、システムエージェントユニット１１１０内にある１つまたは複数の統合メモリコントローラユニット１１１４のセット、および特定用途向けロジック１１０８を有する代替のプロセッサ１１００を示す。
【０１１６】
したがって、プロセッサ１１００の異なる実装は、１）特定用途向けロジック１１０８が統合グラフィックスおよび／または科学（スループット）ロジック（１つまたは複数のコアを含んでよい）であり、コア１１０２Ａ〜１１０２Ｎが１つまたは複数の汎用コア（例えば、汎用インオーダコア、汎用アウトオブオーダコア、その２つの組み合わせ）であるＣＰＵ、２）コア１１０２Ａ〜１１０２Ｎが、グラフィックスおよび／または科学（スループット）を主に対象とした多数の特定用途向けコアであるコプロセッサ、並びに３）コア１１０２Ａ〜１１０２Ｎが多数の汎用インオーダコアであるコプロセッサを含んでよい。したがって、プロセッサ１１００は汎用プロセッサ、コプロセッサであってよく、あるいは特定用途向けプロセッサ、例えばネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ（汎用グラフィックス処理ユニット）、高スループットの多数統合コア（ＭＩＣ）コプロセッサ（３０個またはそれより多くのコアを含む）、組み込みプロセッサなどであってもよい。プロセッサは、１または複数のチップ上に実装されてもよい。プロセッサ１１００は、例えば、ＢｉＣＭＯＳ、ＣＭＯＳ、またはＮＭＯＳなどの多数のプロセス技術のいずれかを用いる１つまたは複数の基板の一部であってよく、および／または当該基板上に実装されてもよい。
【０１１７】
メモリ階層は、統合メモリコントローラユニット１１１４のセットに結合されるコア１１０４Ａ〜Ｎ、セットまたは１もしくは複数の共有キャッシュユニット１１０６、および外部メモリ（図示せず）内に１もしくは複数のレベルのキャッシュを含む。共有キャッシュユニット１１０６のセットは、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、または他のレベルのキャッシュなど、１つまたは複数の中間レベルのキャッシュ、または他のレベルのキャッシュ、ラストレベルキャッシュ（ＬＬＣ）、および／またはこれらの組み合わせを含んでよい。一実施形態では、リングベースの相互接続ユニット１１１２が、統合グラフィックスロジック１１０８、共有キャッシュユニット１１０６のセット、およびシステムエージェントユニット１１１０／統合メモリコントローラユニット１１１４を相互接続するが、代替的な実施形態は、このようなユニットを相互接続するのに任意の数の周知手法を用いてよい。一実施形態において、１つまたは複数のキャッシュユニット１１０６と、コア１１０２Ａ〜１１０２Ｎとの間で一貫性が維持される。 
【０１１８】
いくつかの実施形態において、コア１１０２Ａ〜１１０２Ｎのうち１つまたは複数がマルチスレッディング可能である。システムエージェント１１１０は、コア１１０２Ａ〜１１０２Ｎを調整し動作させるこうしたコンポーネントを含む。システムエージェントユニット１１１０は、例えば、電力制御ユニット（ＰＣＵ）およびディスプレイユニットを含んでよい。ＰＣＵは、コア１１０２Ａ〜１１０２Ｎおよび統合グラフィックスロジック１１０８の電力状態を管理するのに必要なロジックおよびコンポーネントであってよく、または当該ロジックおよび当該コンポーネントを含んでもよい。ディスプレイユニットは、外部接続された１つまたは複数のディスプレイを駆動するためのものである。
【０１１９】
コア１１０２Ａ〜１１０２Ｎは、アーキテクチャ命令セットに関して同種でも異種でもよい。すなわち、コア１１０２Ａ〜１１０２Ｎのうち２つまたはそれより多くは同じ命令セットを実行することが可能であってよいが、他のものはその命令セットのサブセットまたは別の命令セットだけを実行することが可能であってもよい。
【０１２０】
例示的なコンピュータアーキテクチャ
【０１２１】
図１２〜図１５は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子装置のための当該技術分野で知られた他のシステム設計およびシステム構成も適している。一般に、本明細書で開示されたプロセッサおよび／または他の実行ロジックを組み込むことが可能な多様なシステムまたは電子装置が一般的に適している。
【０１２２】
ここで図１２を参照すると、本発明の１つの実施形態によるシステム１２００のブロック図が示されている。システム１２００は、１つまたは複数のプロセッサ１２１０、１２１５を含んでよく、これらはコントローラハブ１２２０に結合されている。一実施形態において、コントローラハブ１２２０は、グラフィックスメモリコントローラハブ（ＧＭＣＨ）１２９０および入力／出力ハブ（ＩＯＨ）１２５０（複数の別個のチップ上にあり得る）を含む。ＧＭＣＨ１２９０は、メモリコントローラおよびグラフィックスコントローラを含み、これらにメモリ１２４０およびコプロセッサ１２４５が結合される。ＩＯＨ１２５０は、入力／出力（Ｉ／Ｏ）デバイス１２６０をＧＭＣＨ１２９０に結合する。あるいは、メモリおよびグラフィックスコントローラの一方または両方が、（本明細書で説明されるように）プロセッサ内に統合され、メモリ１２４０およびコプロセッサ１２４５は、プロセッサ１２１０と、ＩＯＨ１２５０と共に単一チップに入ったコントローラハブ１２２０とに直接結合される。
【０１２３】
任意選択的な性質の追加的なプロセッサ１２１５が、破線を用いて図１２に示される。各プロセッサ１２１０、１２１５は、本明細書で説明される処理コアのうち１つまたは複数を含んでよく、何らかのバージョンのプロセッサ１１００であってよい。
【０１２４】
メモリ１２４０は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、相変化メモリ（ＰＣＭ）、またはこの２つの組み合わせであってよい。少なくとも１つの実施形態では、コントローラハブ１２２０は、フロントサイドバス（ＦＳＢ）、ポイントツーポイントインタフェース、または類似の接続１２９５などのマルチドロップバスを介して、プロセッサ１２１０、１２１５と通信する。
【０１２５】
一実施形態において、コプロセッサ１２４５は、例えば、ハイスループットＭＩＣプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、組み込みプロセッサなどの特定用途向けプロセッサである。一実施形態において、コントローラハブ１２２０は統合グラフィックスアクセラレータを含んでよい。
【０１２６】
アーキテクチャ、マイクロアーキテクチャ、熱、消費電力特性などに関することを含む、利点のメトリックスのスペクトルに関して、物理リソース１２１０、１２１５５の間には様々な違いがあり得る。
【０１２７】
一実施形態において、プロセッサ１２１０は、一般的タイプのデータ処理オペレーションを制御する命令を実行する。命令に組み込まれているのはコプロセッサ命令であってもよい。プロセッサ１２１０は、これらのコプロセッサ命令を、付属のコプロセッサ１２４５が実行すべきタイプの命令であると認識する。したがって、プロセッサ１２１０は、これらのコプロセッサ命令（またはコプロセッサ命令を表す制御信号）をコプロセッサバスまたは他の相互接続を使ってコプロセッサ１２４５に発行する。コプロセッサ１２４５は、受信したコプロセッサ命令を受け付けて実行する。
【０１２８】
ここで図１３を参照すると、本発明の実施形態による、より具体的な第１の例示的なシステム１３００のブロック図が示されている。図１３に示されるように、マルチプロセッサシステム１３００はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続１３５０を介して結合される第１プロセッサ１３７０と、第２プロセッサ１３８０とを含む。プロセッサ１３７０および１３８０の各々は、何らかのバージョンのプロセッサ１１００であってよい。本発明の一実施形態において、プロセッサ１３７０および１３８０はそれぞれ、プロセッサ１２１０および１２１５であり、コプロセッサ１３３８はコプロセッサ１２４５である。別の実施形態において、プロセッサ１３７０および１３８０はそれぞれ、プロセッサ１２１０、コプロセッサ１２４５である。
【０１２９】
プロセッサ１３７０および１３８０は、統合メモリコントローラ（ＩＭＣ）ユニット１３７２および１３８２をそれぞれ含んで示されている。プロセッサ１３７０はまた、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インタフェース１３７６および１３７８を含み、同様に第２プロセッサ１３８０はＰ−Ｐインタフェース１３８６および１３８８を含む。プロセッサ１３７０、１３８０は、ポイントツーポイント（Ｐ−Ｐ）インタフェース１３５０を介し、Ｐ−Ｐインタフェース回路１３７８、１３８８を用いて情報を交換してよい。図１３に示されるように、ＩＭＣ１３７２および１３８２は、プロセッサをそれぞれのメモリ、すなわちメモリ１３３２およびメモリ１３３４に結合する。これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。
【０１３０】
プロセッサ１３７０、１３８０はそれぞれ、個々のＰ−Ｐインタフェース１３５２、１３５４を介し、ポイントツーポイントインタフェース回路１３７６、１３９４、１３８６、１３９８を用いてチップセット１３９０と情報を交換してよい。チップセット１３９０は、高性能インタフェース１３９２を介してコプロセッサ１３３８と任意に情報を交換してよい。一実施形態において、コプロセッサ１３３８は、例えば、ハイスループットＭＩＣプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、ＧＰＧＰＵ、組み込みプロセッサなどの特定用途向けプロセッサである。
【０１３１】
共有キャッシュ（図示せず）は、いずれかのプロセッサの中、または両方のプロセッサの外側に含まれ得るが、プロセッサが低電力モードになった場合に一方または両方のプロセッサのローカルキャッシュ情報が共有キャッシュに記憶され得るように、Ｐ−Ｐ相互接続を介してプロセッサと接続されてもよい。
【０１３２】
チップセット１３９０は、インタフェース１３９６を介して第１バス１３１６に結合されてよい。一実施形態において、第１バス１３１６は、周辺構成要素相互接続（ＰＣＩ）バス、またはＰＣＩ  Ｅｘｐｒｅｓｓバスまたは別のＩ／Ｏ相互接続バス等のバスであり得るが、本発明の範囲は、そのようには限定されない。
【０１３３】
図１３に示されるように、第１バス１３１６を第２バス１３２０に結合するバスブリッジ１３１８と共に、様々なＩ／Ｏデバイス１３１４が第１バス１３１６に結合されてよい。一実施形態において、１つまたは複数の追加のプロセッサ１３１５が第１バス１３１６に結合される。追加のプロセッサとは、コプロセッサ、ハイスループットＭＩＣプロセッサ、ＧＰＧＰＵのアクセラレータ（例えば、グラフィックスアクセラレータ、またはデジタル信号処理（ＤＳＰ）ユニットなど）、フィールドプログラマブルゲートアレイ、またはその他のプロセッサなどである。一実施形態において、第２バス１３２０はローピンカウント（ＬＰＣ）バスであってよい。様々なデバイスが第２バス１３２０に結合されてよく、一実施形態において、そのようなデバイスには例えば、キーボードおよび／またはマウス１３２２、通信デバイス１３２７、およびストレージユニット１３２８が含まれ、ストレージユニットには、命令／コードおよびデータ１３３０を含み得るディスクドライブまたは他の大容量ストレージデバイスなどがある。さらに、オーディオＩ／Ｏ１３２４が第２バス１３１６に結合されてよい。他のアーキテクチャも可能であることに留意されたい。例えば、図１３のポイントツーポイントアーキテクチャの代わりに、システムがマルチドロップバスアーキテクチャまたは他のそのようなアーキテクチャを実装してよい。
【０１３４】
ここで図１４を参照すると、本発明の実施形態による、より詳細な第２の例示的なシステム１４００のブロック図が示されている。図１３および図１４内の同様の要素は同様の参照番号を有しており、図１３の特定の態様が、図１４の他の態様をあいまいにしないように、図１４から省略されている。
【０１３５】
図１４は、プロセッサ１３７０、１３８０が、それぞれ統合メモリならびにＩ／Ｏ制御ロジック（「ＣＬ」）１４７２および１４８２を含んでもよいことを示す。したがって、ＣＬ１４７２、１４８２は、統合メモリコントローラユニットを含み、Ｉ／Ｏ制御ロジックを含む。図１４は、メモリ１３３２、１３３４だけがＣＬ１３７２、１３８２に結合されているのでなく、Ｉ／Ｏデバイス１４１４もまた、制御ロジック１３７２、１３８２に結合されていることを示している。レガシＩ／Ｏデバイス１４１５がチップセット１３９０に結合されている。
【０１３６】
ここで図１５を参照すると、本発明の実施形態によるＳｏＣ１５００のブロック図が示されている。図１１の同種の要素は、同様の参照番号を有している。また、破線枠は、より高度なＳｏＣ上の任意選択的な特徴である。図１５において、相互接続ユニット１５０２は、１または複数のコア１５２Ａ−Ｎのセット、キャッシュユニット１１０４Ａ−Ｎ、および共有キャッシュユニット１１０６を含むアプリケーションプロセッサ１５１０と、システムエージェントユニット１１１０と、バスコントローラユニット１１１６と、統合メモリコントローラユニット１１１４と、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサおよびビデオプロセッサを含み得る、１または複数のコプロセッサ１５２０のセットと、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１５３０と、直接メモリアクセス（ＤＭＡ）ユニット１５３２と、１または複数の外部ディスプレイに結合するためのディスプレイユニット１５４０と、に結合されている。一実施形態において、コプロセッサ１５２０は特定用途向けプロセッサを含み、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、ハイスループットＭＩＣプロセッサ、組み込みプロセッサなどがある。
【０１３７】
本明細書に開示される機構の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装手法の組み合わせとして実装され得る。本発明の実施形態は、少なくとも１つのプロセッサと、（揮発性および不揮発性メモリおよび／または記憶素子を含む）記憶システムと、少なくとも１つの入力装置と、少なくとも１つの出力装置とを備えるプログラマブルシステム上で実行されるコンピュータプログラムまたはプログラムコードとして実装されてもよい。
【０１３８】
図１３に示されるコード１３３０などのプログラムコードは、本明細書で説明される機能を実行し、出力情報を生成する命令を入力するのに適用されてよい。出力情報は、既知の方式で１つまたは複数の出力装置に適用されてもよい。本出願の目的のため、処理システムは、例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、またはマイクロプロセッサのようなプロセッサを有する、任意のシステムを含む。
【０１３９】
プログラムコードは、処理システムと通信するために、高水準手続き型またはオブジェクト指向のプログラミング言語で実装されてもよい。プログラムコードはまた、必要な場合、アセンブリ言語または機械語で実装されてもよい。実際、本明細書に記載される機構は、いかなる特定のプログラミング言語にも範囲を限定されない。いずれにせよ、言語は、コンパイラ言語またはインタプリタ言語であり得る。
【０１４０】
少なくとも１つの実施形態の１つまたは複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に記憶された代表的な命令によって実装されてもよく、機械可読媒体は、機械によって読み取られると、機械に本明細書で説明された技法を実行するようにロジックを組み立てさせる。「ＩＰコア」として知られるこのような表現は、有形の機械可読媒体上に記憶され、実際にロジックまたはプロセッサを製造する製造機械にロードするために、様々な顧客または製造施設に供給され得る。
【０１４１】
そのような機械可読記憶媒体には、ハードディスク、フロッピーディスク、光ディスク、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、および光磁気ディスクを含む任意の他のタイプのディスク、リードオンリーメモリ（ＲＯＭ）などの半導体デバイス、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）、磁気カードもしくは光学式カード、または電子命令を記憶するのに適した任意の他のタイプの媒体などの記憶媒体を含む、機械またはデバイスによって製造または形成された物品の非一時的有形構成が含まれてもよいが、それらに限定されない。
【０１４２】
したがって、本発明の実施形態は、本明細書で説明された構造、回路、装置、プロセッサ、および／またはシステムの特徴を定義する、ハードウェア記述言語（ＨＤＬ）などの命令を含むか、または設計データを含む非一時的有形機械可読媒体も含む。そのような実施形態はまた、プログラム製品と呼ばれ得る。
【０１４３】
エミュレーション（バイナリ変換、コードモーフィングなどを含む）］
【０１４４】
場合によっては、命令をソース命令セットからターゲット命令セットに変換するために命令コンバータが使用され得る。例えば、命令コンバータは、命令をコアによって処理されるべき１つまたは複数の他の命令に、（例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して）解釈し、モーフィングし、エミュレートし、または場合によっては変換することができる。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組み合わせとして実装され得る。命令コンバータは、プロセッサ上にあっても、プロセッサ外にあっても、または部分的にプロセッサ上で部分的にプロセッサ外にあってもよい。
【０１４５】
図１６は、本発明の実施形態による、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するソフトウェア命令コンバータの使用を対比するブロック図である。図示された実施形態では、命令コンバータはソフトウェア命令コンバータであるが、代替として、命令コンバータはソフトウェア、ファームウェア、ハードウェア、またはそれらの様々な組合せに実装されてもよい。図１６は、第１コンパイラ１６０４を使用して、少なくとも１つの第１命令セットコア１６１６を有するプロセッサによってネイティブに実行され得る第１バイナリコード（例えばｘ８６）１６０６を生成することによって、ハイレベル言語１６０２のプログラムがコンパイルされ得ることを示す。いくつかの実施形態において、少なくとも１つの第１命令セットコア１６１６を用いるプロセッサは、少なくとも１つのｘ８６命令セットコアを用いるインテル（登録商標）プロセッサと実質的に同一の結果を実現するべく、（１）インテル（登録商標）ｘ８６命令セットコアの命令セットの実質的部分、または（２）少なくとも１つのｘ８６命令セットコアを用いるインテル（登録商標）プロセッサ上で起動することを目的とする、複数のオブジェクトコードバージョンの複数のアプリケーションまたは他のソフトウェアを互換的に実行または処理することにより、少なくとも１つのｘ８６命令セットコアを用いるインテル（登録商標）プロセッサと実質的に同一の複数の機能を実行し得るいずれのプロセッサも表す。第１コンパイラ１６０４は、追加のリンケージ処理の有無にかかわらず、少なくとも１つの第１命令セットコア１６１６を有するプロセッサ上で実行されることができる第１命令セット１６０６（例えばオブジェクトコード）のバイナリコードを生成するように動作可能なコンパイラを表す。同様に、図１６は、代替的な命令セットのコンパイラ１６０８を用いてコンパイルされ、少なくとも１つの第１命令セットコアを用いないプロセッサ１６１４（例えば、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｉｅｓのＭＩＰＳ命令セットを実行し、および／またはカリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇのＡＲＭ命令セットを実行する複数のコアを用いるプロセッサ）によりネイティブに実行され得る、代替的な命令セットバイナリコード１６１０を生成し得る、ハイレベル言語１６０２のプログラムを示す。命令コンバータ１６１２は、第１バイナリコード１６０６を、第１命令セットコア１６１４を用いないプロセッサによりネイティブに実行され得るコードに変換するべく、使用される。この変換されたコードは、代替的な命令セットバイナリコード１６１０と同じになる可能性は低い。なぜなら、これが実現できる命令コンバータを作るのは難しいからである。しかしながら、変換されたコードは一般的なオペレーションを実現し、代替的な命令セットの命令で構成される。したがって、命令コンバータ１６１２は、エミュレーション、シミュレーション、またはその他のプロセスを通じて、第１命令セットプロセッサまたはコアを有していないプロセッサまたはその他の電子装置が第１バイナリコード１６０６を実行できるようにする、ソフトウェア、ファーム��ェア、ハードウェア、またはこれらの組み合わせを表す。
【０１４６】
実施形態の例がここで詳述される。
【０１４７】
［例１］
装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、命令に関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて決定するためのアドレスチェック回路と、リニアアドレスが許可されるときにリニアアドレスから物理アドレスを生成するためのアドレス生成回路とを備える装置。
【０１４８】
［例２］
リニアアドレス空間がスーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、例１の装置。
【０１４９】
［例３］
リニアアドレスの最上位ビットが「１」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例２に記載の装置。
【０１５０】
［例４］
リニアアドレスの最上位ビットが「０」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例２に記載の装置。
【０１５１】
［例５］
複数のセグメントレジスタを更に備え、命令に関連付けられたリニアアドレスが、複数のセグメントレジスタの１つのアクセスに向けられるとき、アドレスチェック回路は、アクセスを許可する、例１から４のいずれか一項に記載の装置。
【０１５２】
［例６］
バイパス範囲を格納するためのバイパス範囲レジスタを更に備え、命令に関連付けられたリニアアドレスがバイパス範囲におけるリニアアドレスへのアクセスに向けられる場合、アドレスチェック回路は、アクセスを許可する、例１から５のいずれか一項に記載の装置。
【０１５３】
［例７］
区分へのアクセスが許可されていない場合、アドレスチェック回路は、プリフェッチ、キャッシュラインデモーションおよび投機的アクセスをキャンセルさせる、例１から６のいずれか一項に記載の装置。
【０１５４】
［例８］
区分へのアクセスが許可されていない場合、アドレスチェック回路は、非投機的アクセスのフォールトを生成する、例１から７のいずれか一項に記載の装置。
【０１５５】
［例９］
区分へのアクセスが許可されていない場合、アドレス生成回路は、トランスレーションルックアサイドバッファまたはデータキャッシュルックアップを実行しない、例１から８のいずれか一項に記載の装置。
【０１５６】
［例１０］
アドレスチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、例１から９のいずれか一項に記載の装置。
【０１５７】
［例１１］
装置であって、現在の権限レベルを格納するための権限レベルストレージと、権限レベルストレージに結合されたアドレスチェック回路であって、プローブに関連付けられたリニアアドレスが装置のリニアアドレス空間の区分へアクセスすることを許可されるかどうかを、現在の権限レベルとリニアアドレスの最上位ビットとの比較に基づいて決定するためのプローブチェック回路と、を備える装置。
【０１５８】
［例１２］
リニアアドレス空間がスーパバイザアドレス空間区分およびユーザアドレス空間区分を含む、例１１の装置。
【０１５９】
［例１３］
リニアアドレスの最上位ビットが「１」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例１２に記載の装置。
【０１６０】
［例１４］
リニアアドレスの最上位ビットが「０」であるとき、リニアアドレス空間の区分はスーパバイザアドレス空間である、例１２に記載の装置。
【０１６１】
［例１５］
複数のセグメントレジスタを更に備え、プローブに関連付けられたリニアアドレスが複数のセグメントレジスタの１つのアクセスに向けられる場合、プローブチェック回路はアクセスを許可する、例１１から１４のいずれか一項に記載の装置。
【０１６２】
［例１６］
区分へのアクセスが許可されていない場合、アドレスチェック回路は投機的アクセスをキャンセルさせる、例１１から１５のいずれか一項に記載の装置。
【０１６３】
［例１７］
区分へのアクセスが可能されていない場合、プローブチェック回路は、非投機的アクセスのフォールトを生成する、例１１から１６のいずれか一項に記載の装置。
【０１６４】
［例１８］
区分へのアクセスが許可されていない場合、トランスレーションルックアサイドバッファまたは命令キャッシュルックアップが無い、例１１から１７のいずれか一項に記載の装置。
【０１６５】
［例１９］
プローブチェック回路は、リニアアドレス空間へのアクセスが許可されるかどうかを決定するために実行されるステートマシンを更に含む、例１１から１８のいずれか一項に記載の装置。
【０１６６】
［例２０］
プローブチェック回路は、プロセッサコアのフロントエンドの一部である、例１１から１９のいずれか一項に記載の装置。
【図１】
2021516378.tif 000003
【図２】
2021516378.tif 000004
【図３】
2021516378.tif 000005
【図４】
2021516378.tif 000006
【図５】
2021516378.tif 000007
【図６】
2021516378.tif 000008
【図７】
2021516378.tif 000009
【図８】
2021516378.tif 000010
【図９】
2021516378.tif 000011
【図１０Ａ】
2021516378.tif 000012
【図１０Ｂ】
2021516378.tif 000013
【図１１】
2021516378.tif 000014
【図１２】
2021516378.tif 000015
【図１３】
2021516378.tif 000016
【図１４】
2021516378.tif 000017
【図１５】
2021516378.tif 000018
【図１６】
2021516378.tif 000019
【国際調査報告】
2021516378.tif 000020
2021516378.tif 000021