JP5985526B2 - システムコールのためのロバスト且つ高性能な命令 - Google Patents

システムコールのためのロバスト且つ高性能な命令 Download PDF

Info

Publication number
JP5985526B2
JP5985526B2 JP2014032523A JP2014032523A JP5985526B2 JP 5985526 B2 JP5985526 B2 JP 5985526B2 JP 2014032523 A JP2014032523 A JP 2014032523A JP 2014032523 A JP2014032523 A JP 2014032523A JP 5985526 B2 JP5985526 B2 JP 5985526B2
Authority
JP
Japan
Prior art keywords
instruction
privilege level
registers
processor
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014032523A
Other languages
English (en)
Other versions
JP2014182799A (ja
Inventor
ヴイ. パテル、バイジュ
ヴイ. パテル、バイジュ
ビー. クロスランド、ジェームズ
ビー. クロスランド、ジェームズ
エー. クハレ、アトゥル
エー. クハレ、アトゥル
オプファーマン、トビー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014182799A publication Critical patent/JP2014182799A/ja
Application granted granted Critical
Publication of JP5985526B2 publication Critical patent/JP5985526B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、処理ロジック、マイクロプロセッサ、および、プロセッサまたは他の処理ロジックによって実行されると、論理演算、算術演算またはその他の機能演算を実行する関連する命令セットアーキテクチャの分野に関する。
命令セットまたは命令セットアーキテクチャ(ISA)は、プログラミングに関するコンピュータアーキテクチャの一部であり、ネイティブデータの種類、命令、レジスタアーキテクチャ、アドレッシングモード、メモリアーキテクチャ、割込処理および例外処理、ならびに、外部入出力(I/O)を含むとしてよい。「命令」という用語は本明細書において一般的に、実行するべくプロセッサ(または、命令を(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いて)翻訳し、モーフィングし、エミュレートし、または、変換して、プロセッサが処理すべき1以上の他の命令を生成する命令変換部)に提供される命令であるマクロ命令を意味する。つまり、プロセッサのデコーダがマクロ命令をデコードした結果として得られるマイクロ命令またはマイクロ処理(micro op)ではない。
ISAは、マイクロアーキテクチャとは区別される。マイクロアーキテクチャは、命令セットを実装するプロセッサの内部設計である。プロセッサは、マイクロアーキテクチャが異なっても、共通の命令セットを共有することが可能である。例えば、Intel(登録商標)Core(商標)プロセッサ、および、アドバンスド・マイクロ・デバイシーズ,Inc.(米国カリフォルニア州サニーベール)社製のプロセッサは、x86命令セットの略同一バージョン(バージョンが新しくなれば、拡張機能が幾つか追加されている)を実装するが、内部設計は異なる。例えば、ISAの同一レジスタアーキテクチャは、専用物理レジスタ、レジスタリネームメカニズムを用いた1以上の動的割り当て物理レジスタ等を含む公知の技術を用いて、複数の異なるマイクロアーキテクチャで複数の異なる方法で実装され得る。
ISAは通常、システムコールを作成するべくアプリケーションプログラムについて1以上の命令を提供する。システムコールを用いて、アプリケーションプログラムはオペレーティングシステムカーネルにサービスを要求することができる。サービスは、ハードウェア関連サービス(例えば、ハードディスクへのアクセス)、新しいプロセスの作成および実行、ならびに、総合カーネルサービスとの通信(例えば、スケジューリング)を含む。このように、システムコールは、アプリケーションプログラムと、オペレーティングシステムカーネルとの間のインターフェースとなる。
システムコールは通常、ソフトウェア割込またはトラップで実現される。割込が発生すると、制御がアプリケーションプログラムからオペレーティングシステムカーネルに移行する。一部の既存のアーキテクチャでは、システムコールを作成するべく制御移行命令を提供する。これらの制御移行命令は、アプリケーションプログラムが、割込のオーバーヘッドを発生させることなく、オペレーティングシステムに制御を短時間で移行させるように設計されている。しかし、既存の制御移行命令は、フォールトおよび攻撃に対して脆弱であるという大きな弱みがある。この脆弱性によってソフトウェアのロバスト性が低くなる。例えば、制御スタックを切り替える前に、システムコール中、または、システムリターン中にフォールトが発生すると、オペレーティングシステム内のフォールトハンドラは、システムスタックではなく、ユーザモードスタックで実行されるとしてよい。ユーザモードスタックは、特権が無く、信頼も無い。場合によっては、ユーザモードスタックは悪意あるコードを含んでいることがあり、ユーザモードスタックでの実行はシステムを悪意ある攻撃にさらすことになり得る。
実施形態は、限定ではなく例示を目的として、添付図面に図示している。
一実施形態に係る制御移行を説明するためのブロック図である。
一実施形態に係る命令処理装置を示すブロック図である。
一実施形態に係るレジスタアーキテクチャを示すブロック図である。
一実施形態に係るRBSTCALL命令の第1のバージョンの例を示す図である。
一実施形態に係るRBSTRET命令の第1のバージョンの例を示す図である。
一実施形態に係るRBSTCALL命令の第2のバージョンの例を示す図である。
一実施形態に係るRBSTRET命令の第2のバージョンの例を示す図である。
一実施形態に係るRBSTCALL命令に応じて実行されるべき処理を示すフローチャートである。
一実施形態に係るRBSTRET命令に応じて実行されるべき処理を示すフローチャートである。
一実施形態に係る、ソース命令セットに含まれるバイナリ命令を、ターゲット命令セットに含まれるバイナリ命令に変換するソフトウェア命令変換部の利用を説明するブロック図である。
一実施形態に係るインオーダパイプラインおよびアウトオブオーダパイプラインを示すブロック図である。
一実施形態に係るインオーダコアおよびアウトオブオーダコアを示すブロック図である。
一実施形態に係るインオーダコアアーキテクチャのより具体的な例を示すブロック図である。 一実施形態に係るインオーダコアアークテクチャのより具体的な例を示すブロック図である。
一実施形態に係るプロセッサを示すブロック図である。
一実施形態に係るシステムを示すブロック図である。
一実施形態に係る第2のシステムを示すブロック図である。
一実施形態に係る第3のシステムを示すブロック図である。
一実施形態に係るシステムオンチップ(SoC)を示すブロック図である。
以下の説明では、数多く具体的且つ詳細な内容を記載する。しかし、本明細書に説明する実施形態はこのような具体的且つ詳細な内容を利用することなく実施し得るものと理解されたい。また、公知の回路、構造および技術は、本明細書の理解をあいまいにしないよう、詳細な説明を省略した。
本明細書で説明する実施形態は、移行制御命令群を実現する。各移行制御命令は、1個のアトミック命令でスーパーバイザモードとユーザモードとの間の移行を完了する。従来のシステムコールおよびシステムリターンのメカニズムでは、スーパーバイザモードとユーザモードとの間の移行を完了させるためには命令シーケンスが必要である。この従来の命令シーケンスの途中でフォールトが発生すると、スーパーバイザモードにおいて非スーパーバイザ状態で実行することになる。このようなフォールトが発生すると、通常、システムクラッシュが発生したり、フォールトからの回復が不可能になったり、または、権限昇格攻撃が発生したりする。
本明細書で用いる場合、「スーパーバイザモード」という用語は、「特権モード」、「カーネルモード」または「リング0」とも呼ばれ、「ユーザモード」という用語は、「非特権モード」、「非スーパーバイザモード」または「リング3」とも呼ばれる。さらに、本明細書で用いる場合、ソフトウェアエンティティの「特権レベル」は、リングレベルと同一であり、例えば、リング3のプログラムは特権レベルが3である。以下に挙げる例のうち1以上ではリング0とリング3との間の移行について説明しているが、本明細書で説明する新しい命令は、任意の2つの異なるリングの間の移行、または、同一リング内の複数のプロセス間の移行に適用可能であると考えられたい。
一実施形態によると、新しい命令は「RBSTCALL」命令および「RBSTRET」命令を含む。「RBST」は「ロバスト」を意味する。RBSTCALL命令は、システムコール命令であり、RBSTRET命令は、システムリターン命令である。これらの新しい命令は、悪意ある攻撃に対してロバストであると共に高性能である。
図1は、「RBSTCALL」命令および「RBSTRET」命令に応じて発生する制御の移行の例を示す図である。RBSTCALL命令は、非特権命令であり、リング0、リング1、リング2またはリング3の要求元プログラム110によって呼び出すことができる。プロセッサ(例えば、処理システムに含まれる中央演算処理装置(CPU))が要求元プログラム110においてRBSTCALL命令を実行すると、オペレーティングシステム(OS)カーネル120内のコールハンドラ125に制御が移行する。コールハンドラ125は、リング0において実行される。コールハンドラ125がコールの処理を終了すると、プロセッサはOS120においてRBSTRET命令を実行して要求元プログラム110に制御を戻す。RBSTRET命令は、特権命令であり、OS等のリング0ソフトウェアによってのみ呼び出すことが可能である。一実施形態によると、「RBSTCALL」命令および「RBSTRET」命令の実行はネスト化が可能である。例えば、実行は以下の順序で行われるとしてよい。
要求元プログラム110→RBSTCALL111→コールハンドラ125→RBSTRET121→要求元プログラム110→RBSTCALL112→コールハンドラ125→RBSTRET121→要求元プログラム110→RBSTCALL113→コールハンドラ125→RBSTRET121→要求元プログラム110
このように、制御が要求元プログラム110に戻る度に、次のシステムコールの前に要求元プログラム110のコードセグメントを実行することができる。
RBSTCALL命令の実施形態は、CS(コードセレクタ)、RIP(命令ポインタ)およびRGLAGSの内容を、割込および例外のスタックフレームと同様の形式を用いて、カーネルスタックに格納する。この形式を利用することで、ネスト化実行におけるリエントラント性を容易に実現できるようになる。
上述したように、RBSTCALL命令によれば、リング0から発生するリング内コール、および、リング1、リング2またはリング3から発生するリング間コールの両方が可能となる。同様に、RBSTRET命令によれば、リング0コードがどのリング(例えば、リング0、リング1、リング2またはリング3)にでも戻れるようになる。RBSTCALL命令およびRBSTRET命令はそれぞれ、リング移行の場合にはセグメントレジスタ(例えば、GS)に正しいセレクタ値を自動的にロードするので、移行完了前にフォールトが発生して、GSにおいて非スーパーバイザ状態でスーパーバイザモードで実行するウィンドウが無くなる。さらに、ターゲットスタックセレクタ(例えば、SS)および/またはスタックポインタ(例えば、RSP)をアトミックに修復することによって、RBSTRET命令は、カーネルモードフォールトハンドラが無効なSSおよび/またはRSPで実行されるウィンドウを無くすことで信頼性を改善する。
RBSTCALL命令およびRBSTRET命令の実施形態は、カーネルスタック上のターゲットセレクタ(例えば、CSおよびSS)の有効性に対してサニティーチェックを実行し、さらに、ターゲットRIPおよびRSPにおけるアドレス形式の有効性に対してカノニカル(canonical)チェックを実行する。このため、破損の危険性に対処するべくOSを変更する。RIPにおけるアドレス形式のカノニカルチェックは、RIPにロードされているアドレスが非カノニカルアドレス範囲に入るか否かを確認することで実行される。この範囲が存在するのは、アーキテクチャが提供するアドレス範囲(例えば、64ビット)が、利用しているアドレス範囲(例えば、48ビット)よりも大きいためである。このため、64ビットアドレス空間の一部領域が未使用である。この未使用領域は、今後のアドレス空間拡張を可能とする。しかし、未使用領域は、非カノニカルアドレス範囲であり、この範囲に入るRIP内の任意のアドレスは無効アドレスである。カノニカルアドレスチェックは、RIPにロードされた後、且つ、RIP内のアドレスがコミットされる前に実行され得る。カノニカルアドレスチェックは、マルウェアが利用し得るRIPにおけるアドレス形式の脆弱性を無くす。一部の実施形態によると、カノニカルアドレスチェックは、他のレジスタにも同様に実行され得る。
一部の実施形態によると、RBSTCALL命令およびRBSTRET命令は、アドレスおよびセグメントの有効性確認の大半を無くし、リング移行についての仮定、例えば、ターゲットリングは0であるという仮定を作成することによって、高速バージョンに最適化され得る。例えば、高速バージョンは、モデル固有レジスタ(MSR)における値の有効性を確認しない。これは、MSRはOSカーネルによってのみロードが可能であるためである。高速バージョンは、制御移行の利点の大半を、大幅に低いコストで、実現する。
RBSTCALL命令およびRBSTRET命令の他のバージョンと同様に、高速バージョンは、GSは自動的に正しいセレクタ値がロードされるというアトミックな特徴を維持するので、移行完了前にフォールトが発生して非スーパーバイザモードのGSでスーパーバイザモードを実行することになるウィンドウが無くなる。RBSTCALL命令およびRBSTRET命令の他のバージョンと同様に、高速バージョンは、マルウェアが利用し得るカノニカルなRIP関連の脆弱性が無くなる。さらに、RBSTRET命令の他のバージョンと同様に、高速バージョンは、ターゲットSSおよび/またはRSPをアトミックに復元し、カーネルモードフォールトハンドラが無効なSSおよび/またはRSPで実行され得るウィンドウを無くすことによって信頼性を改善する。RBSTCALL命令およびRBSTRET命令は、後述するように、命令処理装置によって実行され得る。
図2は、RBSTCALL命令/RBSTRET命令を含む命令を実行可能な回路を含む実行ユニット240を有する命令処理装置215の実施形態を示すブロック図である。一部の実施形態によると、命令処理装置215は、プロセッサ、マルチコアプロセッサの一のプロセッサコア、または、電子システムのプロセッシングエレメントであってよい。
デコーダ230は、高位の機械命令またはマクロ命令の形式で入力命令を受信し、デコードして、低位のマイクロ処理、マイクロコードエントリポイント、マイクロ命令またはその他の低位の命令または制御信号を生成する。これらは、元の高位の命令を反映し、および/または、元の高位の命令から導出される。低位の命令または制御信号は、低位の(例えば、回路レベルまたはハードウェアレベル)の処理を用いて、高位の命令の動作を実現するとしてよい。デコーダ230は、さまざまな異なるメカニズムを利用して実現されるとしてよい。適切なメカニズムの例には、これらに限定されないが、マイクロコード、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、関連技術分野で公知のデコーダを実現するために用いられる他のメカニズム等が含まれる。
デコーダ230は、キャッシュ210、メモリ220または他のソースのための入力命令を受信するとしてよい。デコードされた命令は、実行ユニット240に送信される。実行ユニット240は、デコーダ230から、受信した命令を反映した、または、受信した命令から導出された1以上のマイクロ処理、マイクロコードエントリポイント、マイクロ命令、他の命令、または、他の制御信号を受信するとしてよい。実行ユニット240は、レジスタファイル270、キャッシュ210および/またはメモリ220からデータ入力を受け取り、レジスタファイル270、キャッシュ210および/またはメモリ220へのデータ出力を生成する。
一実施形態によると、レジスタファイル270は、レジスタとも呼ばれるアーキテクチャレジスタを含む。特に明記されていない場合、「アーキテクチャレジスタ」、「レジスタファイル」および「レジスタ」という用語は、ソフトウェアおよび/またはプログラマに可視の(例えば、ソフトウェア可視の)レジスタ、および/または、オペランドを特定するべくマクロ命令が特定するレジスタを意味するべく本明細書で用いられる。これらのレジスタは、所定のマイクロアーキテクチャにおける他の非アーキテクチャレジスタ(例えば、一時レジスタ、リオーダバッファ、リタイアメントレジスタ等)と対照的なレジスタである。
説明が曖昧にならないように、比較的単純な命令処理装置215を図示および説明する。他の実施形態は複数の実行ユニットを備え得ると考えられたい。例えば、装置215は、複数の異なる種類の実行ユニットを備えるとしてよい。例えば、算術演算ユニット、算術論理演算ユニット(ALU)、整数ユニット、浮動小数点ユニット等を備えるとしてよい。命令処理装置またはプロセッサのさらに他の実施形態は、複数のコア、論理プロセッサまたは実行エンジンを備えるとしてよい。命令処理装置215の複数の実施形態は、図7Aから図13を参照しつつ後述する。
一実施形態によると、レジスタファイル270は、RBSTCALL命令およびRBSTRET命令が利用し得るレジスタ群を有する。一部のレジスタは、セグメントおよび命令に対するポインタを含むシステムステートを格納するために用いられ得る。レジスタファイルの一例は、図3を参照しつつ後述する。
図3は、本明細書で説明した命令をサポートする基礎であるレジスタアーキテクチャ300の実施形態を示す図である。レジスタアーキテクチャ300は、x86、MMX(商標)、ストリーミングSIMD拡張命令(SSE)、SSE2、SSE3、SSE4.1およびSSE4.2に準拠する命令を含む命令セット、および、アドバンスド・ベクトル・エクステンション(AVX)(AVX1、AVX2およびAVX3)と呼ばれる追加の一群のSIMD拡張命令を実装するIntel(登録商標)Core(商標)のプロセッサに基づいている。しかし、複数の異なるレジスタ長、複数の異なるレジスタ種類および/または複数の異なるレジスタ数をサポートする複数の異なるレジスタアーキテクチャを利用し得ることを理解されたい。
図示した実施形態では、512ビット長である32個のベクトルレジスタ310が設けられている。これらのレジスタは、zmm0からzmm31と呼ばれる。下位の16個のzmmレジスタの下位の256ビットは、レジスタymm0−16に重ねられる。下位の16個のzmmレジスタの下位の128ビット(ymmレジスタの下位の128ビット)は、レジスタxmm0−15に重ねられる。図示した実施形態では、8個のマスクレジスタ320(k0からk7)が設けられており、長さはそれぞれ64ビットである。別の実施形態では、マスクレジスタ320はビット長が16である。
図示した実施形態では、レジスタアーキテクチャ300はさらに、16個の64ビット汎用(GP)レジスタ330を有する。ある実施形態によると、これらのGPレジスタ330は、メモリオペランドをアドレス指定するべく、既存のx86アドレッシングモードで利用される。レジスタアーキテクチャ300はさらに、6個の16ビットセグメントレジスタを有する(CSはコードセレクタ、DSはデータセレクタ、SSはセグメントセレクタ、ESはその他、FSおよびGS)。当該実施形態はさらに、RFLAGSレジスタ360、RIPレジスタ370、および、モデル固有レジスタ(MSR)380を含む。
当該実施形態はさらに、スカラー浮動小数点(FP)スタックレジスタファイル(x87スタック)340を図示している。スカラーFPスタックレジスタファイル(x87スタック)340上では、MMXパック整数フラットレジスタファイル350がエイリアスしている。図示した実施形態では、x87スタックは、x87命令セット拡張機能を用いて32/64/80ビットの浮動小数点データに対してスカラー浮動小数点演算を実行するために用いられる8個の要素から成るスタックである。一方、MMXレジスタは、64ビットパック整数データに対して演算を実行するために、そして、MMXレジスタとxmmレジスタとの間で実行される一部の演算についてオペランドを保持するために用いられる。
別の実施形態で利用するレジスタは、ビット長がより長くてもよいし、より短くてもよい。また、別の実施形態が利用するレジスタファイルおよびレジスタは、より多くても、より少なくても、または、異なるとしてもよい。
図4Aは、一実施形態に係るRBSTCALL命令の第1のバージョンの一例を示す図である。RBSTCALL命令は、要求元からOSカーネルへと制御を移行させる。一実施形態によると、RBSTCALL命令は、コールが有効でイネーブルされているか否かを確認するためのコードブロック410を含む。有効でないか、または、イネーブルされていない場合、フォールト(例えば、一般保護(#GPフォールト)または無効オペコード(#UDフォールト))を生成する。例えば、要求元が64ビットのコードセグメントでない場合、または、64ビットのモードがイネーブルされていない場合、または、RBSTCALL命令およびRBSTRET命令がイネーブルされていない場合、フォールトを生成するとしてよい。一実施形態によると、RBSTCALL命令およびRBSTRET命令は、複数のレジスタのうち一のレジスタのビットが設定されている場合、イネーブルされている。
RBSTCALL命令は、(リング内コールについて)特権レベルがゼロである要求元、または、(リング間コールについて)特権レベルがゼロでない要求元によって呼び出すことができる。リング内コールおよびリング間コールの両方について、RBSTCALL命令を実行しているプロセッサは、コードブロック420および430においてアドレス準拠性を(例えば、RIP非カノニカルアドレスについて)検証する。一実施形態によると、RBSTCALL命令を実行するプロセッサはさらに、コードブロック430において、セグメントレジスタCSおよびSSが有効なアドレスを含むか否かを検証する。RBSTCALL命令はさらに、OSカーネルと要求元との間で制御スタックスワップの処理を実行するべく、(リング内コールおよびリング間コールのそれぞれについて)コードブロック425および435を含む。本明細書において「制御スタック」は、実行の経過を辿るためにオペレーティングシステムが利用するデータ構造を意味する。これらのデータ構造は、メモリに格納されており、ポインタRIPおよびRSP、ならびに、セグメントレジスタCS、SS、GSによって指し示される。リング0データ構造(例えば、OSカーネルに対応付けられている制御スタック)は、リング3データ構造(例えば、ユーザモードプログラムに対応付けられている制御スタック)と異なるので、レガシーSYSCALL/SYSRET命令の直後に別のSWAPGS命令を利用することが必要になる。RBSTCALL命令(RBSTRET命令も同様)は、OSカーネルと要求元との間においてデータ構造を参照するポインタをスワップするために別の命令を必要としない。スワップ処理は、一のアトミック命令として、RBSTCALL/RBSTRETにおいて実行される。リング間コールについて、コードブロック435は、GSに正しいコードセレクタ値をロードする。このため、RBSTCALL命令において、制御移行は、一のアトミック命令における検証および制御スタックスワップで実現されることが分かる。
図4Bは、一実施形態に係るRBSTRET命令の第1のバージョンの例を示す図である。RBSTRET命令は、OSカーネルから要求元(つまり、RBSTCALLの要求元)へと制御を戻すことによって、RBSTCALL命令の処理を逆に行うための命令である。RBSTRET命令は、特権命令であり、つまり、リング0からのみ呼び出すことができる。本実施形態では、RBSTRET命令は、コールが有効でイネーブルされているか否かを確認するためのコードブロック440を含む。有効でないか、または、イネーブルされていない場合、フォールトを生成する(図4Aのコードブロック410と同様)。RBSTRET命令を実行するプロセッサは、コードブロック450において、(例えば、RIPおよびRSPの非カノニカルアドレス形式に対して)アドレス準拠性を検証する。一部の実施形態によると、RBSTRET命令を実行しているプロセッサはさらに、コードブロック450において、セグメントレジスタCSおよびSSが有効なアドレスを含むか否かを検証する。RBSTRET命令はさらに、OSカーネルと要求元との間における制御スタックスワップの処理を実行するためのコードブロック460および470を含む。コードブロック470は、要求元の特権レベルがゼロでない場合(つまり、リング間コールについて)に実行される。GSには、正しいコードセレクタ値がロードされている。このように、RBSTRET命令においては、一のアトミック命令における検証およびソフトウェアスタックスワップで制御移行が実行されることが分かる。
図5Aおよび図5Bはそれぞれ、一実施形態に係るRBSTCALL命令およびRBSTRET命令の第2のバージョンの例を示す図である。RBSTCALL命令およびRBSTRET命令の第2のバージョンは、第1のバージョンで実行されている検証の一部(例えば、アドレス有効性検証およびセグメント有効性検証の大半)を削除した高速バージョンである。高速バージョンはさらに、リング移行について仮定を立てる(例えば、ターゲットリングがリング0であり、CSにロードされているコードセレクタは有効なコードセグメントである等)。さらに、高速バージョンでは、汎用レジスタRCX、R10、R11を出力レジスタとして用いると仮定される。これらのレジスタにおいて出力を保存することで、命令の実行が改善され、既存のマイクロコードの一部をシステムコール用に利用することが可能となる。高速バージョンでは、正しい値がセグメントレジスタGS、CSおよびSSにロードされる。高速バージョンのRBSTCALL命令およびRBSTRET命令のそれぞれにおいては、一のアトミック命令における検証および制御スタックスワップで制御移行を実現することが分かる。
図6Aは、一実施形態に係る制御移行命令(例えば、RBSTCALL命令)を実行するための方法600を示すブロックフローチャートである。方法600は、プロセッサが要求元から、要求元の第1の特権レベルからOSカーネルの第2の特権レベルへと制御を移行させるシステムコール命令を受信することで開始される(ブロック611)。システムコール命令に応じて、プロセッサは、要求元とOSカーネルとの間で、一のアトミック移行で、レジスタのうち1以上が指し示すデータ構造をスワップする(ブロック612)。図6Bは、一実施形態に係る制御移行命令(例えば、RBSTRET命令)を実行する方法610を示すブロックフローチャートである。方法610は、プロセッサがOSカーネルから、システムリターン命令を受信することで開始される(ブロック613)。システムリターン命令に応じて、プロセッサは、一のアトミック移行において、OSカーネルから要求元へと制御を復元する(ブロック614)。
一実施形態によると、第1の特権レベルは、第2の特権レベルと同じである。別の実施形態では、第1の特権レベルは非スーパーバイザモードであり、第2の特権レベルはスーパーバイザモードである。一実施形態によると、プロセッサは、システムコール命令に応じて、1以上のセグメントレジスタに、正しい値をアトミックにロードする。一実施形態によると、プロセッサは、システムコール命令に応じて、1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する。一実施形態によると、プロセッサは、命令に応じて、レジスタのうち1以上にロードすべき1以上のターゲットポインタに対して、アドレス準拠性についてカノニカルチェックをアトミックに実行する。
さまざまな実施形態によると、図6Aおよび図6Bの方法は、汎用プロセッサ、特定用途向けプロセッサ(例えば、グラフィクスプロセッサまたはデジタルシグナルプロセッサ)、または、別の種類のデジタルロジックデバイスまたは命令処理装置によって実行されるとしてよい。一部の実施形態によると、図6Aおよび図6Bの方法は、図2の命令処理装置215、または、同様のプロセッサ、装置またはシステム、例えば、図7Aから図13に示す実施形態によって実行されるとしてよい。さらに、図2の命令処理装置215、図7Aから図13に図示したプロセッサ、装置またはシステムは、図6Aおよび図6Bの方法の実施形態と同一、同様または異なる処理および方法の実施形態を実行するとしてよい。
一部の実施形態によると、図2の命令処理装置215は、ソース命令セットからターゲット命令セットへと命令を変換する命令変換部と共に動作するとしてよい。例えば、命令変換部は、命令を、コアが処理する1以上の他の命令へと翻訳(例えば、静的バイナリ翻訳、動的コンパイルを含む動的バイナリ翻訳を用いる)、モーフィング、エミュレートまたはその他の方法で変換するとしてよい。命令変換部は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組み合わせで実現するとしてよい。命令変換部は、オンプロセッサ、オフプロセッサ、または、部分オン部分オフプロセッサであるとしてよい。
図6Cは、対照的な一実施形態に係るソフトウェア命令変換部の利用を説明するブロック図である。図示した実施形態において、命令変換部は、ソフトウェア命令変換部である。しかし、これに代えて、命令変換部は、ソフトウェア、ファームウェア、ハードウェアまたはこれらのさまざまな組み合わせで実現するとしてよい。図6Cは、高級言語602で記述されたプログラムは、少なくとも一のx86命令セットコアを持つプロセッサ626でネイティブに実行されるx86バイナリコード606を生成するべくx86コンパイラ604を用いてコンパイルされ得ることを示す。少なくとも一のx86命令セットコアを持つプロセッサ626は、少なくとも一のx86命令セットコアを持つIntel(登録商標)プロセッサと実質的に同一の結果を実現するべく、(1)Intel(登録商標)x86命令セットコアの命令セットの大部分または(2)少なくとも一のx86命令セットコアを持つIntel(登録商標)プロセッサで実行させることを目的としたアプリケーションまたはその他のソフトウェアのオブジェクトコードバージョンを矛盾を発生させることなく実行または処理することによって、少なくとも一のx86命令セットコアを持つIntel(登録商標)プロセッサと実質的に同一の機能を実行可能な任意のプロセッサを表す。x86コンパイラ604は、少なくとも一のx86命令セットコア626を備えるプロセッサで、追加で連結処理を行いつつ、または、行うことなく、実行され得るx86バイナリコード606(例えば、オブジェクトコード)を生成するコンパイラを表す。同様に、図6Cは、少なくとも一のx86命令セットコアを持たないプロセッサ624(例えば、MIPSテクノロジーズ(米国カリフォルニア州サニーベール)社のMIPS命令セットを実行し、および/または、ARMホールディングス(米国カリフォルニア州サニーベール)のARM命令セットを実行するコアを持つプロセッサ)でネイティブに実行され得る別の命令セットバイナリコード620を生成する別の命令セットコンパイラ608を用いて、高級言語602で記述したプログラムがコンパイルされることを示す。命令変換部622は、x86バイナリコード606を、x86命令セットコアを持たないプロセッサ624でネイティブに実行されるコードに変換するために用いられる。この変換後のコードは、別の命令セットバイナリコード620と同一である可能性は低い。これは、この機能を持つ命令変換部の形成は困難なためである。しかし、変換後のコードは、一般的な処理を実行し、別の命令セットの命令で構成される。このように、命令変換部622は、エミュレーション、シミュレーションまたは任意のその他のプロセスを用いて、x86命令セットプロセッサまたはコアを持たないプロセッサまたはその他の電子デバイスに、x86バイナリコード606を実行させるためのソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表す。
<コアアーキテクチャの例>
<インオーダ方式およびアウトオブオーダ方式のコアを示すブロック図>
図7Aは、一実施形態に係る、インオーダパイプラインの例およびレジスタリネームアウトオブオーダ発行/実行パイプラインの例の両方を示すブロック図である。図7Bは、一実施形態に係るプロセッサに含まれるインオーダアーキテクチャコアの実施形態例およびレジスタリネームアウトオブオーダ発行/実行アーキテクチャコアの例の両方を示すブロック図である。図7Aおよび図7Bに示す実線で囲まれたボックスは、インオーダパイプラインおよびインオーダコアを示し、任意で追加されている点線で囲まれたボックスは、レジスタリネームアウトオブオーダ発行/実行パイプラインおよびコアを示す。インオーダ方式はアウトオブオーダ方式の一部であると考え、アウトオブオーダ方式を説明する。
図7Aにおいて、プロセッサパイプライン700は、フェッチ段702、長さデコード段704、デコード段706、割り当て段708、リネーム段710、スケジューリング段(ディスパッチ段または発行段とも呼ばれる)712、レジスタ読出/メモリ読出段714、実行段716、ライトバック/メモリ書込段718、例外処理段722、および、コミット段724を含む。
図7Bは、実行エンジンユニット750に結合されているフロントエンドユニット730を含むプロセッサコア790を示す図であり、フロントエンドユニット730および実行エンジンユニット750の両方はメモリユニット770に結合されている。コア790は、縮小命令セットコンピュータ(RISC)コア、複合命令セットコンピュータ(CISC)コア、超長命令語(VLIW)コア、または、ハイブリッドコアタイプもしくは別のコアタイプであってよい。さらに別の選択肢として、コア790は、特定用途向けコア、例えば、ネットワークコアもしくは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィクスプロセッシングユニット(GPGPU)コア、グラフィクスコア等であってよい。
フロントエンドユニット730は、命令キャッシュユニット734に結合されている分岐予測ユニット732を含む。命令キャッシュユニット734は、命令トランスレーションルックアサイドバッファ(TLB)736に結合されている。命令TLB736は、命令フェッチユニット738に結合されている。命令フェッチユニット738は、デコードユニット740に結合されている。デコードユニット740(またはデコーダ)は、命令をデコードするとしてよく、出力として、一以上のマイクロ処理、マイクロコードエントリポイント、マイクロ命令、他の命令または他の制御信号を生成するとしてよい。これらの出力は、元の命令をデコードしたもの、または、元の命令を反映したもの、または、元の命令から導出したものである。デコードユニット740は、さまざまな異なるメカニズムを用いて実現されるとしてよい。適切なメカニズムの例には、これらに限定されないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリーメモリ(ROM)等が含まれる。一実施形態によると、コア790は、マイクロコードROM、または、(例えば、デコードユニット740またはフロントエンドユニット730に)特定のマクロ命令用のマイクロコードを格納している他の媒体を含む。デコードユニット740は、実行エンジンユニット750内のリネーム/割り当てユニット752に結合されている。
実行エンジンユニット750は、リタイヤメントユニット754および一群の1以上のスケジューラユニット756に結合されているリネーム/割り当てユニット752を含む。スケジューラユニット756は、任意の数のさまざまなスケジューラを表し、これらは、予約ステーション、中央命令ウィンドウ等を含む。スケジューラユニット756は、物理レジスタファイルユニット758に結合している。物理レジスタファイルユニット758はそれぞれ、1以上の物理レジスタファイルを表す。1以上の物理レジスタファイルはそれぞれ、スカラー整数、スカラー浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行すべき次の命令のアドレスである命令ポインタ)等、1以上の異なるデータタイプを格納している。一実施形態によると、物理レジスタファイルユニット758は、ベクトルレジスタユニット、書込マスクレジスタユニットおよびスカラーレジスタユニットを含む。これらのレジスタユニットは、アーキテクチャベクトルレジスタ、ベクトルマスクレジスタおよび汎用レジスタを提供するとしてよい。物理レジスタファイルユニット758は、リタイヤメントユニット754と重複しており、レジスタリネームアウトオブオーダ実行を実現し得るさまざまな方法(例えば、リオーダバッファおよびリタイヤメントレジスタファイルを利用、今後のファイル、履歴バッファおよびリタイヤメントレジスタファイルを利用、レジスタマップおよびレジスタプールを利用等)を示す。リタイヤメントユニット754および物理レジスタファイルユニット758は、実行クラスタ760に結合される。実行クラスタ760は、一群の1以上の実行ユニット762と、一群の1以上のメモリアクセスユニット764とを含む。実行ユニット762は、さまざまな処理(例えば、シフト、追加、減算、乗算)を、さまざまな種類のデータ(例えば、スカラー浮動小数点、パック整数、パック浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して実行するとしてよい。一部の実施形態は特定の機能または機能群に専用の複数の実行ユニットを含み得るが、他の実施形態は、全ての機能を実行する一または複数の実行ユニットのみを含むとしてよい。スケジューラユニット756、物理レジスタファイルユニット758および実行クラスタ760は、複数の可能性もあるものとして図示されている。これは、特定の実施形態は特定の種類のデータ/処理について個別のパイプライン(例えば、スカラー整数パイプライン、スカラー浮動小数点/パック整数/パック浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/または、メモリアクセスパイプライン、それぞれは独自のスケジューラユニット、物理レジスタファイルユニットおよび/または実行クラスタを持ち、別箇にメモリアクセスパイプラインを形成する場合には、このパイプラインの実行クラスタのみがメモリアクセスユニット764を含む特定の実施形態を実現する)を作成するためである。また、個別のパイプラインが用いられる場合、これらのパイプラインのうち1以上のパイプラインはアウトオブオーダ発行/実行方式であり、残りはインオーダ方式であると理解されたい。
一群のメモリアクセスユニット764は、メモリユニット770に結合されている。メモリユニット770は、レベル2(L2)キャッシュユニット776に結合されているデータキャッシュユニット774に結合されているデータTLBユニット772を含む。一実施形態例によると、メモリアクセスユニット764は、ロードユニット、ストアアドレスユニットおよびストアデータユニットを含むとしてよい。これらのユニットはそれぞれ、メモリユニット770内のデータTLBユニット772に結合されている。命令キャッシュユニット734はさらに、メモリユニット770内のレベル2(L2)キャッシュユニット776に結合されている。L2キャッシュユニット776は、キャッシュの1以上の他のレベルに結合されており、最終的にはメインメモリに結合されている。
一例として、例示的なレジスタリネームアウトオブオーダ発行/実行コアアーキテクチャは、以下のようにパイプライン700を実行するとしてよい。
1)命令フェッチ738は、フェッチ段702および長さデコード段704を実行
2)デコードユニット740は、デコード段706を実行
3)リネーム/割り当てユニット752は、割り当て段708およびリネーム段710を実行
4)スケジューラユニット756は、スケジュール段712を実行
5)物理レジスタファイルユニット758およびメモリユニット770は、レジスタ読出/メモリ読出段714を実行、実行クラスタ760は、実行段716を実行
6)メモリユニット770および物理レジスタファイルユニット758は、ライトバック/メモリ書込段718を実行
7)例外処理段722にはさまざまなユニットが関係
8)リタイヤメントユニット754および物理レジスタファイルユニット758は、コミット段724を実行
コア790は、本明細書で説明する命令を含む1以上の命令セット(例えば、x86命令セット(より新しいバージョンで追加された幾つかの拡張機能を含む)、MIPSテクノロジーズ(米国カリフォルニア州サニーベール)社のMIPS命令セット、ARMホールディングス(米国カリフォルニア州サニーベール)社のARM命令セット(任意でNEON等の追加の拡張機能を含む))をサポートするとしてよい。一実施形態によると、コア790は、パックデータ命令セット拡張機能(例えば、SSE、AVX1、AVX2等)をサポートするロジックを含むので、多くのマルチメディアアプリケーションで利用する処理を、パックデータを用いて実行することができる。
コアは、マルチスレッディング(2以上の処理群またはスレッド群を並列に実行)をサポートし得るものであって、さまざまな方法でマルチスレッディングを実現し得ると理解されたい。例えば、タイムスライスマルチスレッディング、同時マルチスレッディング(一の物理コアが、当該物理コアが同時マルチスレッド化している複数のスレッドのそれぞれについて一の論理コアを実現する)、または、これらの組み合わせ(例えば、タイムスライス方式でフェッチおよびデコードして、その後で同時マルチスレッディングを実行、例えば、Intel(登録商標)社のハイパースレッディング技術)を含む。
レジスタレネームはアウトオブオーダ実行に関連して説明されているが、レジスタリネームはインオーダアーキテクチャでも利用し得ると理解されたい。図示したプロセッサの実施形態はさらに別箇の命令キャッシュユニット734/データキャッシュユニット774および共有L2キャッシュユニット776を含むが、別の実施形態は、命令およびデータの両方用の一の内部キャッシュ、例えば、レベル1(L1)内部キャッシュまたは複数のレベルの内部キャッシュを含むとしてよい。一部の実施形態によると、システムは、内部キャッシュと、コアおよび/またはプロセッサの外部にある外部キャッシュとの組み合わせを含むとしてよい。これに代えて、全てのキャッシュは、コアおよび/またはプロセッサの外部にあるとしてよい。
<インオーダコアアークテクチャの具体例>
図8Aおよび図8Bは、より具体的な例として、コアがチップ内の複数の論理ブロック(同一および/または異なる種類の他のコアを含む)のうち1つであるインオーダコアアーキテクチャを示すブロック図である。論理ブロックは、用途に応じて、高帯域幅インターコネクトネットワーク(例えば、リングネットワーク)を介して、一部の固定機能ロジック、メモリI/Oインターフェースおよび他の必要なI/Oロジックと通信する。
図8Aは、一実施形態に係る一のプロセッサコアを、当該プロセッサコアがオンダイインターコネクトネットワーク802に接続されている様子、および、当該プロセッサコアのレベル2(L2)キャッシュのローカルサブセット804と共に示すブロック図である。一実施形態によると、命令デコーダ800は、パックデータ命令セット拡張機能を持つx86命令セットをサポートする。L1キャッシュ806は、キャッシュメモリのスカラーユニットおよびベクトルユニットへの低レイテンシアクセスを可能とする。一実施形態では(設計を簡略化するべく)スカラーユニット808およびベクトルユニット810が別箇のレジスタ群を利用しており(それぞれ、スカラーレジスタ812およびベクトルレジスタ814)、両者間で転送されるデータはメモリに書き込まれた後にレベル1(L1)キャッシュ806から読み出されるが、別の実施形態は、別の方法(例えば、一のレジスタセットを利用、または、書込および読出を実行することなく2つのレジスタファイル間でのデータ転送を可能とする通信経路を含む)を利用するとしてよい。
L2キャッシュのローカルサブセット804は、プロセッサコア毎に1つずつ複数の別箇のローカルサブセットに分割されているグローバルL2キャッシュの一部である。各プロセッサコアは、L2キャッシュのうち自身のローカルサブセット804までの直接アクセス経路を持つ。プロセッサコアが読み出すデータは、当該プロセッサコアのL2キャッシュサブセット804に格納され、他のプロセッサコアがL2キャッシュのうち自身のローカルサブセットに対してアクセスしているのと並列に、短時間でアクセス可能である。プロセッサコアが書き込むデータは、L2キャッシュのうち自身のサブセット804に格納されており、必要であれば、他のサブセットからフラッシュされる。リングネットワークは、共有されているデータについて、一貫性を保証する。リングネットワークは、プロセッサコア、L2キャッシュおよび他の論理ブロック等のエージェントが互いにチップ内で通信できるよう双方向性である。
図8Bは、一実施形態に係る、図8Aで示したプロセッサコアの一部を示す拡大図である。図8Bは、L1キャッシュ806の一部であるL1データキャッシュ806Aを示し、さらに、より詳細にベクトルユニット810およびベクトルレジスタ814を示す。具体的には、ベクトルユニット810は、幅が16のベクトル処理ユニット(VPU)(幅が16のALU828を参照のこと)である。幅が16のVPUは、整数命令、単精度浮動小数点命令、および、倍精度浮動小数点命令のうち1以上を実行する。VPUは、メモリ入力に対する、スウィズルユニット820によるレジスタ入力のスウィズル、数値変換ユニット822A−Bによる数値変換、および、複製ユニット824による複製をサポートする。書込マスクレジスタ826は、結果として得られるベクトル書込を記述することを可能とする。
<集積化したメモリコントローラおよびグラフィクスを持つプロセッサ>
図9は、一実施形態に係る、複数のコアを有し、一の集積化メモリコントローラを有し、および、集積化グラフィクスを有するプロセッサ900を示すブロック図である。図9において実線で囲まれたボックスは、一のコア902A、システムエージェント910、一群の1以上のバスコントローラユニット916を備えるプロセッサ900を示し、点線で囲まれたボックスは、任意で追加される、複数のコア902A−N、システムエージェントユニット910内の一群の1以上の集積化メモリコントローラユニット914、および、特定用途向けロジック908を備える別のプロセッサ900を示す。
このように、プロセッサ900の複数の異なる実施例は、1)特定用途向けロジック908が集積化グラフィクスおよび/または科学(スループット)ロジックであり(1以上のコアを含むとしてよい)、コア902A−Nは1以上の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、これら2つの組み合わせ)であるCPU、2)コア902A−Nが、主にグラフィクスおよび/または科学(スループット)を目的とした多数の特定用途向けコアであるコプロセッサ、および3)コア902A−Nが多数の汎用インオーダコアであるコプロセッサを含むとしてよい。このように、プロセッサ900は、汎用プロセッサ、コプロセッサまたは特定用途向けプロセッサであってよく、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU(汎用グラフィクスプロセッシングユニット)、高スループットMIC(many integrated core)コプロセッサ(30個以上のコアを含む)、埋め込みプロセッサ等であってよい。プロセッサは、1以上のチップで実現されるとしてよい。プロセッサ900は、任意の数の処理技術、例えば、BiCMOS、CMOSまたはNMOSを利用し、1以上の基板の一部であってよく、および/または、1以上の基板で実現されるとしてよい。
メモリヒエラルキーは、コア内の1以上のキャッシュレベル、一群または1以上の共有キャッシュユニット906、および、一群の集積化されたメモリコントローラユニット914に結合されている外部メモリ(不図示)を含む。一群の共有キャッシュユニット906は、1以上の中間レベルキャッシュ、例えば、レベル2(L2)、レベル3(L3)、レベル4(L4)、または、他のレベルのキャッシュ、ラストレベルキャッシュ(LLC)および/またはこれらの組み合わせを含むとしてよい。一実施形態ではリングベースのインターコネクトユニット912が、集積化グラフィクスロジック908、一群の共有キャッシュユニット906、および、システムエージェントユニット910/集積化メモリコントローラユニット914を相互接続するが、別の実施形態は任意の数の公知の技術を利用してこれらのユニットを相互接続するとしてよい。一実施形態によると、1以上のキャッシュユニット906とコア902A−Nとの間において一貫性が維持される。
一部の実施形態によると、コア902A−Nのうち1以上は、マルチスレッディングが可能である。システムエージェント910は、コア902A−Nを協調して動作させるコンポーネントを有する。システムエージェントユニット910は、例えば、電力制御ユニット(PCU)およびディスプレイユニットを有するとしてよい。PCUは、コア902A−Nおよび集積化グラフィクスロジック908の電力状態を制御するために必要なロジックおよびコンポーネントであってもよいし、そのようなロジックおよびコンポーネントを含むとしてよい。ディスプレイユニットは、1以上の外部に接続されたディスプレイを駆動するためのユニットである。
コア902A−Nは、アーキテクチャ命令セットに関して同質または異質のいずれであってもよい。つまり、コア902A−Nのうち2以上は、同一命令セットを実行可能である一方、残りは当該命令セットの一部または別の命令セットのみを実行可能であるとしてよい。
<コンピュータアーキテクチャの例>
図10から図13は、コンピュータアーキテクチャの一例を示すブロック図である。ラップトップ、デスクトップ、手持ちPC、携帯情報端末(PDA)、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタルシグナルプロセッサ(DSP)、グラフィクスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、手持ちデバイス、および、さまざまなその他の電子機器について公知の他のシステム設計およびシステム構成もまた適切である。一般的に、プロセッサおよび/または他の実行ロジックを本明細書で開示するように組み込むことが可能な多岐にわたるシステムまたは電子機器は概して適切である。
図10を参照すると、一実施形態に係るシステム1000を示すブロック図が図示されている。システム1000は、コントローラハブ1020に結合されている1以上のプロセッサ1010、1015を含むとしてよい。一実施形態によると、コントローラハブ1020は、グラフィクスメモリコントローラハブ(GMCH)1090および入出力ハブ(IOH)1050(別のチップ上にあるとしてもよい)を含む。GMCH1090は、メモリ1040およびコプロセッサ1045が結合されているメモリコントローラおよびグラフィクスコントローラを含む。IOH1050は、入出力(I/O)デバイス1060をGMCH1090に結合する。これに代えて、メモリコントローラおよびグラフィクスコントローラのうち一方または両方は、プロセッサ内に集積化されている(本明細書で説明する)。メモリ1040およびコプロセッサ1045は、プロセッサ1010に直接結合されており、IOH1050を含む一のチップ内のコントローラハブ1020に直接結合されている。
任意で設けられる追加のプロセッサ1015は、図10において点線で示している。各プロセッサ1010、1015は、本明細書で説明するプロセッサコアのうち1以上を含むとしてよく、プロセッサ900の所与のバージョンであってよい。
メモリ1040は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、または、これら2つの組み合わせであってよい。少なくとも一の実施形態について、コントローラハブ1020は、フロントサイドバス(FSB)等のマルチドロップバス、QuickPath Interconnect(QPI)等のポイントツーポイントインターフェース、または、同様の接続1095を介して、プロセッサ1010、1015と通信する。
一実施形態によると、コプロセッサ1045は、特定用途向けプロセッサ、例えば、高スループットMICプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、埋め込みプロセッサ等である。一実施形態によると、コントローラハブ1020は、集積化されたグラフィクスアクセラレータを含むとしてよい。
物理リソース1010、1015は、アーキテクチャ特性、マイクロアーキテクチャ特性、熱的特性、消費電力特性等のさまざまな評価メトリックに関して、さまざまな点で相違しているとしてよい。
一実施形態によると、プロセッサ1010は、一般的なタイプのデータ処理動作を制御する命令を実行する。命令には、コプロセッサ命令が埋め込まれているとしてよい。プロセッサ1010は、これらのコプロセッサ命令を、付帯しているコプロセッサ1045が実行すべき種類の命令であるとみなす。したがって、プロセッサ1010は、これらのコプロセッサ命令(または、コプロセッサ命令を表現する制御信号)を、コプロセッサバス上または他のインターコネクト上で、コプロセッサ1045に対して発行する。コプロセッサ1045は、受け取ったコプロセッサ命令を承認して実行する。
ここで図11を参照すると、一実施形態に係る第1のより具体的な例であるシステム1100のブロック図が図示されている。図11に示すように、マルチプロセッサシステム1100は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト1150を介して結合される第1のプロセッサ1170および第2のプロセッサ1180を含む。プロセッサ1170および1180はそれぞれ、プロセッサ900の所与のバージョンであってよい。一実施形態によると、プロセッサ1170および1180はそれぞれ、プロセッサ1010および1015であり、コプロセッサ1138はコプロセッサ1045である。別の実施形態によると、プロセッサ1170および1180はそれぞれ、プロセッサ1010およびコプロセッサ1045である。
プロセッサ1170および1180はそれぞれ、集積化メモリコントローラ(IMC)ユニット1172および1182を含むものとして図示されている。プロセッサ1170はさらに、自身のバスコントローラユニットの一部として、ポイントツーポイント(P−P)インターフェース1176および1178を含み、同様に、第2のプロセッサ1180は、P−Pインターフェース1186および1188を含む。プロセッサ1170、1180は、P−Pインターフェース回路1178、1188を用いて、ポイントツーポイント(P−P)インターフェース1150を介して情報をやり取りするとしてよい。図11に図示しているように、IMC1172および1182は、プロセッサを対応するメモリ、つまり、メモリ1132およびメモリ1134に結合する。メモリ1132およびメモリ1134は、対応するプロセッサにローカルに取り付けられているメインメモリの一部分であるとしてよい。
プロセッサ1170、1180はそれぞれ、ポイントツーポイントインターフェース回路1176、1194、1186、1198を用いて、個別のP−Pインターフェース1152、1154を介して、チップセット1190と情報をやり取りするとしてよい。チップセット1190は任意で、高性能インターフェース1139を介してコプロセッサ1138と情報をやり取りするとしてよい。一実施形態によると、コプロセッサ1138は、特定用途向けプロセッサ、例えば、高スループットMICプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、埋め込みプロセッサ等である。
共有キャッシュ(不図示)は、いずれかのプロセッサに含まれているか、または、両方のプロセッサの外部に存在しているが、P−Pインターコネクトを介して両方のプロセッサに接続されているとしてよい。このため、一方または両方のプロセッサのローカルキャッシュ情報は、プロセッサが低電力モードになると、共有キャッシュに格納されるとしてよい。
チップセット1190は、インターフェース1196を介して第1のバス1116に結合されているとしてよい。一実施形態によると、第1のバス1116は、ペリフェラルコンポーネントインターコネクト(PCI)バスであってよく、または、PCI Expressバスまたは別の第3世代のI/Oインターコネクトバス等のバスであってよい。別の実施形態も利用するとしてよい。
図11に示すように、さまざまなI/Oデバイス1114は、バスブリッジ1118と共に、第1のバス1116に結合されているとしてよい。バスブリッジ1118は、第1のバス1116を第2のバス1120に結合する。一実施形態によると、1以上の追加のプロセッサ1115、例えば、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレータ(例えば、グラフィクスアクセラレータまたはデジタルシグナルプロセッシング(DSP)ユニット)、フィールドプログラマブルゲートアレイ、または、任意のその他のプロセッサは、第1のバス1116に結合されている。一実施形態によると、第2のバス1120は、低ピンカウント(LPC)バスであってよい。さまざまなデバイス、一実施形態によると、例えば、キーボードおよび/またはマウス1122、通信デバイス1127、および、命令/コードおよびデータ1130を含むディスクドライブまたはその他の大容量ストレージデバイス等のストレージユニット1128が、第2のバス1120に結合されているとしてよい。さらに、オーディオI/O1124は、第2のバス1120に結合されているとしてよい。他のアーキテクチャも可能であることに留意されたい。例えば、図11のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたはその他の同様のアーキテクチャを実現するとしてよい。
ここで図12を参照すると、一実施形態に係る、第2のより具体的な例であるシステム1200を示すブロック図が図示されている。図11および図12における同様の構成要素は同様の参照番号を割り当てており、図11の特定の側面は、図12から省略している。これは、図12の他の側面をあいまいにしないようにするためである。
図12は、プロセッサ1170、1180がそれぞれ、集積化されたメモリおよびI/O制御ロジック(CL)1172および1182を含み得ることを図示している。このように、CL1172、1182は、集積化されたメモリコントローラユニットを含み、I/O制御ロジックを含む。図12は、メモリ1132、1134がCL1172、1182に結合されているだけでなく、I/Oデバイス1214もまた制御ロジック1172、1182に結合されている様子を図示している。レガシーI/Oデバイス1215は、チップセット1190に結合されている。
ここで図13を参照すると、一実施形態に係るSoC1300のブロック図が図示されている。図9における同様の構成要素は、同様の参照番号を割り当てられている。また、点線で囲まれたボックスは、より高度なSoCにおいて任意で設けられる特徴である。図13において、インターコネクトユニット1302は、
一群の1以上のコア902A−Nおよび共有キャッシュユニット906を含むアプリケーションプロセッサ1310と、
システムエージェントユニット910と、
バスコントローラユニット916と、
集積化されたメモリコントローラユニット914と、
集積化されたグラフィクスロジック、画像プロセッサ、オーディオプロセッサおよびビデオプロセッサを含む1以上のコプロセッサ1320と、
スタティックランダムアクセスメモリ(SRAM)ユニット1330と、
ダイレクトメモリアクセス(DMA)ユニット1332と、
1以上の外部ディスプレイに結合されるディスプレイユニット1340と
に結合されている。
一実施形態によると、コプロセッサ1320は、特定用途向けプロセッサを含む。例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、埋め込みプロセッサ等を含む。
本明細書で開示したメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの実施方法の組み合わせで実現されるとしてよい。実施形態は、少なくとも一のプロセッサと、ストレージシステム(揮発性および不揮発性のメモリ、および/または、格納素子を含む)と、少なくとも一の入力デバイスと、少なくとも一の出力デバイスとを備えるプログラミング可能システムで実行されるコンピュータプログラムまたはプログラムコードとして実現されるとしてよい。
図11に図示しているコード1130等のプログラムコードは、本明細書で説明した機能を実施するため、そして、出力情報を生成するための命令を入力するべく適用されるとしてよい。出力情報は、公知の方法で1以上の出力デバイスに適用されるとしてよい。本願において、処理システムは、例えば、デジタルシグナルプロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)またはマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
プログラムコードは、処理システムと通信するべく高級プロシージャプログラミング言語またはオブジェクト指向型プログラミング言語で実現されるとしてよい。プログラムコードはさらに、所望される場合には、アセンブリ言語または機械言語で実現されるとしてもよい。実際、本明細書で説明するメカニズムの範囲は、任意の特定のプログラミング言語に限定されるものではない。どの場合であっても、言語はコンパイラ型またはインタプリタ型であってよい。
少なくとも一の実施形態の1以上の側面は、プロセッサにおいてさまざまなロジックを表現する、機械可読媒体に格納されている代表的な命令によって実現されるとしてよい。当該命令は、機械によって読み出されると、本明細書で説明した技術を実行するロジックを機械に製造させる。このような表現は、「IPコア」として知られており、有形で機械可読型の媒体に格納されているとしてよく、ロジックまたはプロセッサを実際に製造する製造機械にロードするべく、さまざまな顧客または製造設備に供給されるとしてよい。
このような機械可読格納媒体は、これらに限定されないが、機械またはデバイスで製造または形成される、非一時的で有形の物品の配列を含むとしてよい。ハードディスク、任意のその他の種類のディスク、例えば、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリーメモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)および光磁気ディスク、リードオンリーメモリ(ROM)等の半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)等のランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラミング可能リードオンリーメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラミング可能リードオンリーメモリ(EEPROM)、相変化メモリ(PCM)、磁気カードもしくは光カード、または、電子命令を格納するのに適した任意のその他の種類の媒体等の格納媒体を含む。
したがって、実施形態はさらに、命令または設計データを含む非一時的で有形の機械可読媒体を含む。設計データは、例えば、本明細書に説明している構造、回路、装置、プロセッサおよび/またはシステムフィーチャを定義するハードウェア記述言語(HDL)である。このような実施形態は、プログラム製品とも呼ばれるとしてよい。
特定の実施形態例を説明し添付図面で図示しているが、このような実施形態は単に説明のためであり限定するためのものではなく、図示および説明した特定の構造および配置に限定されるものではないと理解されたい。これは、当業者であれば、本開示内容を参照することで、さまざまな他の変形例に想到するからである。当該技術分野において、成長が早くさらなる進化の予測が容易でないので、開示した実施形態は、本開示の原則または特許請求の範囲から逸脱することなく、技術的進歩を実現することで容易になるが、配置および詳細な内容について容易に変形可能であるとしてよい。
本実施形態の例を下記の各項目として示す。
[項目1]
メモリ内のデータ構造に対するポインタを格納する複数のレジスタと、
前記複数のレジスタに結合されている実行回路と
を備え、前記実行回路は、
要求元から、前記要求元の第1の特権レベルからオペレーティングシステムカーネルの第2の特権レベルへと制御を移行するためのシステムコール命令を受信し、
前記システムコール命令に応じて、前記複数のレジスタが指し示す前記データ構造を、前記要求元と前記オペレーティングシステムカーネルとの間において、一のアトミック移行で、スワップする装置。
[項目2]
前記実行回路は、前記オペレーティングシステムカーネルからシステムリターン命令を受信し、前記システムリターン命令に応じて、一のアトミック移行で、前記オペレーティングシステムカーネルから前記要求元へと制御を復元する項目1に記載の装置。
[項目3]
前記第1の特権レベルは、前記第2の特権レベルと同一である項目1または2に記載の装置。
[項目4]
前記第1の特権レベルは、非スーパーバイザモードであり、前記第2の特権レベルは、スーパーバイザモードである項目1から3の何れか1項に記載の装置。
[項目5]
前記実行回路は、前記システムコール命令に応じて、1以上のセグメントレジスタに、正しい値をアトミックにロードする項目1から4の何れか1項に記載の装置。
[項目6]
前記実行回路は、前記システムコール命令に応じて、1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する項目1から5の何れか1項に記載の装置。
[項目7]
前記実行回路は、前記システムコール命令に応じて、アドレス準拠性についてのカノニカルチェックをアトミックに、前記複数のレジスタのうち1以上にロードされる1以上のターゲットポインタに対して実行する
項目1から6の何れか1項に記載の装置。
[項目8]
要求元から、前記要求元の第1の特権レベルからオペレーティングシステムカーネルの第2の特権レベルへと制御を移行するためのシステムコール命令を受信する段階と、
前記システムコール命令に応じて、メモリに格納されていると共にレジスタが指し示すデータ構造を、前記要求元と前記オペレーティングシステムカーネルとの間において、一のアトミック移行で、スワップする段階と
を備える方法。
[項目9]
前記オペレーティングシステムカーネルからシステムリターン命令を受信する段階と、
前記システムリターン命令に応じて、一のアトミック移行で、前記オペレーティングシステムカーネルから前記要求元へと制御を復元する段階と
をさらに備える項目8に記載の方法。
[項目10]
前記第1の特権レベルは、前記第2の特権レベルと同一である項目8または9に記載の方法。
[項目11]
前記第1の特権レベルは、非スーパーバイザモードであり、前記第2の特権レベルは、スーパーバイザモードである項目8から10の何れか1項に記載の方法。
[項目12]
1以上のセグメントレジスタに、正しい値をアトミックにロードする段階をさらに備える項目8から11の何れか1項に記載の方法。
[項目13]
1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する段階をさらに備える項目8から12の何れか1項に記載の方法。
[項目14]
アドレス準拠性についてのカノニカルチェックをアトミックに、前記レジスタのうち1以上にロードされる1以上のターゲットポインタに対して実行する段階をさらに備える
項目8から13の何れか1項に記載の方法。
[項目15]
メモリと、
前記メモリに結合されているプロセッサと
を備え、
前記プロセッサは、
メモリ内のデータ構造に対するポインタを格納する複数のレジスタと、
前記複数のレジスタに結合されている実行回路と
を有し、前記実行回路は、
要求元から、前記要求元の第1の特権レベルからオペレーティングシステムカーネルの第2の特権レベルへと制御を移行するためのシステムコール命令を受信し、
前記システムコール命令に応じて、前記複数のレジスタが指し示す前記データ構造を、前記要求元と前記オペレーティングシステムカーネルとの間において、一のアトミック移行で、スワップするシステム。
[項目16]
前記実行回路は、前記オペレーティングシステムカーネルからシステムリターン命令を受信し、前記システムリターン命令に応じて、一のアトミック移行で、前記オペレーティングシステムカーネルから前記要求元へと制御を復元する項目15に記載のシステム。
[項目17]
前記第1の特権レベルは、前記第2の特権レベルと同一である項目15または16に記載のシステム。
[項目18]
前記第1の特権レベルは、非スーパーバイザモードであり、前記第2の特権レベルは、スーパーバイザモードである項目15から17の何れか1項に記載のシステム。
[項目19]
前記実行回路は、前記システムコール命令に応じて、1以上のセグメントレジスタに、正しい値をアトミックにロードし、1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する項目15から18の何れか1項に記載のシステム。
[項目20]
前記実行回路は、前記システムコール命令に応じて、アドレス準拠性についてのカノニカルチェックをアトミックに、前記複数のレジスタのうち1以上にロードされる1以上のターゲットポインタに対して実行する項目15から19の何れか1項に記載のシステム。

Claims (18)

  1. メモリ内のデータ構造に対するポインタを格納する複数のレジスタと、
    前記複数のレジスタに結合されている実行回路と
    を備え、前記実行回路は、
    要求元から、前記要求元の第1の特権レベルからオペレーティングシステムカーネルの第2の特権レベルへと制御を移行するためのシステムコール命令を受信し、
    前記システムコール命令に応じて、セグメントレジスタCSと、セグメントレジスタSSと、セグメントレジスタGSとに、をアトミックにロードし、前記複数のレジスタが指し示す前記データ構造の制御を、前記要求元と前記オペレーティングシステムカーネルとの間においてアトミックに移行させる装置。
  2. 前記実行回路は、前記オペレーティングシステムカーネルからシステムリターン命令を受信し、前記システムリターン命令に応じて、一のアトミック移行で、前記オペレーティングシステムカーネルから前記要求元へと制御を復元する請求項1に記載の装置。
  3. 前記第1の特権レベルは、前記第2の特権レベルと同一である請求項1または2に記載の装置。
  4. 前記第1の特権レベルは、非スーパーバイザモードであり、前記第2の特権レベルは、スーパーバイザモードである請求項1から3の何れか1項に記載の装置。
  5. 前記実行回路は、前記システムコール命令に応じて、1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する請求項1から4の何れか1項に記載の装置。
  6. 前記実行回路は、前記システムコール命令に応じて、アドレス準拠性についてのカノニカルチェックをアトミックに、前記複数のレジスタのうち1以上にロードされる1以上のターゲットポインタに対して実行する
    請求項1から5の何れか1項に記載の装置。
  7. 要求元から、前記要求元の第1の特権レベルからオペレーティングシステムカーネルの第2の特権レベルへと制御を移行するためのシステムコール命令を受信する段階と、
    前記システムコール命令に応じて、セグメントレジスタCSと、セグメントレジスタSSと、セグメントレジスタGSとに、をアトミックにロードし、メモリに格納されていると共にレジスタが指し示すデータ構造の制御を、前記要求元と前記オペレーティングシステムカーネルとの間においてアトミックに移行させる段階と
    を備える方法。
  8. 前記オペレーティングシステムカーネルからシステムリターン命令を受信する段階と、
    前記システムリターン命令に応じて、一のアトミック移行で、前記オペレーティングシステムカーネルから前記要求元へと制御を復元する段階と
    をさらに備える請求項に記載の方法。
  9. 前記第1の特権レベルは、前記第2の特権レベルと同一である請求項またはに記載の方法。
  10. 前記第1の特権レベルは、非スーパーバイザモードであり、前記第2の特権レベルは、スーパーバイザモードである請求項からの何れか1項に記載の方法。
  11. 1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する段階をさらに備える請求項から10の何れか1項に記載の方法。
  12. アドレス準拠性についてのカノニカルチェックをアトミックに、前記レジスタのうち1以上にロードされる1以上のターゲットポインタに対して実行する段階をさらに備える
    請求項から11の何れか1項に記載の方法。
  13. メモリと、
    前記メモリに結合されているプロセッサと
    を備え、
    前記プロセッサは、
    メモリ内のデータ構造に対するポインタを格納する複数のレジスタと、
    前記複数のレジスタに結合されている実行回路と
    を有し、前記実行回路は、
    要求元から、前記要求元の第1の特権レベルからオペレーティングシステムカーネルの第2の特権レベルへと制御を移行するためのシステムコール命令を受信し、
    前記システムコール命令に応じて、セグメントレジスタCSと、セグメントレジスタSSと、セグメントレジスタGSとに、をアトミックにロードし、前記複数のレジスタが指し示す前記データ構造の制御を、前記要求元と前記オペレーティングシステムカーネルとの間においてアトミックに移行させるシステム。
  14. 前記実行回路は、前記オペレーティングシステムカーネルからシステムリターン命令を受信し、前記システムリターン命令に応じて、一のアトミック移行で、前記オペレーティングシステムカーネルから前記要求元へと制御を復元する請求項13に記載のシステム。
  15. 前記第1の特権レベルは、前記第2の特権レベルと同一である請求項13または14に記載のシステム。
  16. 前記第1の特権レベルは、非スーパーバイザモードであり、前記第2の特権レベルは、スーパーバイザモードである請求項13から15の何れか1項に記載のシステム。
  17. 前記実行回路は、前記システムコール命令に応じて、1以上のセグメントレジスタに対してアトミックに有効性チェックを実行する請求項13から16の何れか1項に記載のシステム。
  18. 前記実行回路は、前記システムコール命令に応じて、アドレス準拠性についてのカノニカルチェックをアトミックに、前記複数のレジスタのうち1以上にロードされる1以上のターゲットポインタに対して実行する請求項13から17の何れか1項に記載のシステム。
JP2014032523A 2013-03-15 2014-02-24 システムコールのためのロバスト且つ高性能な命令 Active JP5985526B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/837,878 US9207940B2 (en) 2013-03-15 2013-03-15 Robust and high performance instructions for system call
US13/837,878 2013-03-15

Publications (2)

Publication Number Publication Date
JP2014182799A JP2014182799A (ja) 2014-09-29
JP5985526B2 true JP5985526B2 (ja) 2016-09-06

Family

ID=50554831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014032523A Active JP5985526B2 (ja) 2013-03-15 2014-02-24 システムコールのためのロバスト且つ高性能な命令

Country Status (7)

Country Link
US (2) US9207940B2 (ja)
JP (1) JP5985526B2 (ja)
KR (2) KR20140113557A (ja)
CN (1) CN104050415B (ja)
DE (1) DE102014003854A1 (ja)
GB (1) GB2514881B (ja)
IN (1) IN2014CH00978A (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6370098B2 (ja) * 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US10761877B2 (en) * 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
CN108958798B (zh) * 2018-06-15 2021-04-20 上海兆芯集成电路有限公司 指令翻译电路、处理器电路及其执行方法
US11366663B2 (en) * 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US20200409711A1 (en) * 2019-06-29 2020-12-31 Intel Corporation Processor instruction support for mitigating controlled-channel and cache-based side-channel attacks
CN111679857B (zh) * 2020-06-15 2024-01-23 上海兆芯集成电路股份有限公司 高效能复杂指令译码的微处理器
US12008372B2 (en) * 2022-07-21 2024-06-11 VMware LLC Techniques for reducing CPU privilege boundary crossings

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62286155A (ja) * 1986-06-05 1987-12-12 Sharp Corp マルチcpu制御方式
JPH03163630A (ja) * 1989-11-21 1991-07-15 Mitsubishi Electric Corp プロセッサのスタック制御方法
US6901505B2 (en) * 2001-08-09 2005-05-31 Advanced Micro Devices, Inc. Instruction causing swap of base address from segment register with address from another register
US20030226014A1 (en) * 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
US8607235B2 (en) * 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
CN100470571C (zh) * 2006-08-23 2009-03-18 北京同方微电子有限公司 一种用于密码学运算的微处理器内核装置
CN200941211Y (zh) * 2006-08-23 2007-08-29 北京同方微电子有限公司 用于密码学运算的微处理器内核
JP2008102847A (ja) * 2006-10-20 2008-05-01 Nec Corp マルチスレッドプログラム処理方法及び装置
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8312468B2 (en) * 2009-06-09 2012-11-13 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains

Also Published As

Publication number Publication date
DE102014003854A1 (de) 2014-09-18
IN2014CH00978A (ja) 2015-05-08
KR20160072085A (ko) 2016-06-22
CN104050415A (zh) 2014-09-17
GB201404223D0 (en) 2014-04-23
US20160092227A1 (en) 2016-03-31
KR101780303B1 (ko) 2017-09-21
CN104050415B (zh) 2017-10-13
GB2514881A (en) 2014-12-10
US9207940B2 (en) 2015-12-08
KR20140113557A (ko) 2014-09-24
JP2014182799A (ja) 2014-09-29
GB2514881B (en) 2015-09-30
US20140281437A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
US10503505B2 (en) Read and write masks update instruction for vectorization of recursive computations over independent data
JP6124463B2 (ja) 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
JP6143872B2 (ja) 装置、方法、およびシステム
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
CN106708753B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
US10387148B2 (en) Apparatus and method to reverse and permute bits in a mask register
JP2015532990A (ja) 複数のコアを有するプロセッサ、共有コア拡張ロジック及び複数の共有コア拡張使用命令
JP2018500657A (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
JP6253706B2 (ja) ハードウェア装置
JP2024527169A (ja) マルチストランドアウトオブオーダプロセッサにおいてリタイア可能な複数の命令を特定する命令及びロジック
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160706

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160803

R150 Certificate of patent or registration of utility model

Ref document number: 5985526

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250