JP2009104259A - マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム - Google Patents

マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム Download PDF

Info

Publication number
JP2009104259A
JP2009104259A JP2007273186A JP2007273186A JP2009104259A JP 2009104259 A JP2009104259 A JP 2009104259A JP 2007273186 A JP2007273186 A JP 2007273186A JP 2007273186 A JP2007273186 A JP 2007273186A JP 2009104259 A JP2009104259 A JP 2009104259A
Authority
JP
Japan
Prior art keywords
sequencer
managed
operating system
processor
application
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
Application number
JP2007273186A
Other languages
English (en)
Other versions
JP4978914B2 (ja
Inventor
Collins Jaimison
コリンズ、ジャイミソン
Wang Perry
ワング、ペリー
Lint Bernard
リント、バーナード
Koichi Yamada
ヤマダ、コウイチ
Mallick Asit
マリック、アシット
Hankins Richard
ハンキンズ、リチャード
Chinya Gautham
チンヤ、ゴウサム
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
Priority to JP2007273186A priority Critical patent/JP4978914B2/ja
Publication of JP2009104259A publication Critical patent/JP2009104259A/ja
Application granted granted Critical
Publication of JP4978914B2 publication Critical patent/JP4978914B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Microcomputers (AREA)

Abstract

【課題】ユーザレベルシーケンサ管理および制御をサポートするMIMD ISA拡張と、永続するCPUごとおよびスレッドごとのデータの様々なセットを含む、オペレーティングシステムにより管理されるシーケンサおよびアプリケーションにより管理されるシーケンサの両方により実行される特権コードのセットのエミュレーションを可能にするシステムを提供する。
【解決手段】軽量コードレイヤは、オペレーティングシステムの下で実行する。このコードレイヤは、OMSとAMS間の通信の必要性といった特定のモニタリングされるイベントに応答して呼び出しされる。制御は、特殊オペレーションのためにこのコードレイヤに転送され、その後、制御は最初に実行されていたコードに戻る。コードレイヤは通常はドーマントであり、ユーザアプリケーションまたはオペレーティングシステムが実行しているときにいつでも呼び出しされることができる。
【選択図】図1

Description

実施形態は、コンピュータシステムの分野に関し、より具体的には、マルチプロセッサシステムにおけるオペレーティングシステムのインタフェースおよび制御の分野に関する。
現代のコンピュータシステムにおける並列処理がますます進歩することによって、マルチコアまたはマルチプロセッサシステムといったパーティショニングされたマイクロプロセッサアーキテクチャが開発されている。これは、代わりに、現在のマルチコアマイクロプロセッサアーキテクチャを有効に活用できるシステムソフトウェアおよびアプリケーションを開発することを必然的に必要としている。1つのそのような開発は、MIMD(複数命令ストリーム、複数データストリーム)モデルであり、これは、マルチプロセッサシステムにおける複数のプロセッサが基本的に互いとは無関係に動作する並列実行モデルを指す。このようなシステムでは、プログラムまたは処理構造は、機能に基づいて並列実行のために分解されうる。たとえば、特定のシステムは、オペレーティングシステムとアプリケーション用に別個のシーケンサまたはプロセッサを使用しうる。このようなシステムは、オペレーティングシステム(OS)コードを処理するオペレーティングシステムにより管理されたシーケンサ(OMS)と、アプリケーションコードを処理するアプリケーションにより管理されたシーケンサ(AMS)を使用しうる。一般的に、OMSは、OSおよびアプリケーションコードの両方を実行することができるが、AMSは、アプリケーションコードだけを実行することができる。OSおよびアプリケーションコード間での処理タスクの分割は、両方のタイプのタスクに対して処理が最適化されることを可能にする。しかし、このようなシステムでは、OMSおよびAMSシーケンサは、どちらかがシステムコール(たとえば、ファイルを開くなど)、または、フォルト、または、例外といったオペレーティングシステムが関係する動作を実行する時を検出することを保証するよう調整がなされなければならない。
専用AMSシーケンサおよびOMSシーケンサ間でアプリケーションおよびオペレーティングシステム処理を分けるシステムに関連付けられる1つの不利点は、オペレーティングシステムはAMSを認識しないので、システムにより使用される特定のオブジェクトまたは要素を常に保護できるわけではないということである。
本願に説明する実施形態は、ユーザレベルシーケンサ管理および制御をサポートする複数命令ストリーム/複数データストリーム(MIMD)拡張と、永続するCPUごとおよびスレッドごとのデータの様々なセットを含む、オペレーティングシステムにより管理されるシーケンサおよびアプリケーションにより管理されるシーケンサの両方により実行される特権コードのセットのエミュレーションを可能にするシステムを開示する。一実施形態では、軽量コードレイヤは、オペレーティングシステムの下で実行する。このコードレイヤは、OMSとAMS間の通信の必要性といった特定のモニタリングされるイベントに応答して呼び出しされる。これが起きると、制御はこのコードレイヤに転送され、1つ以上の特殊オペレーションが実行され、そして、制御は最初に実行されていたコードに戻る。コードレイヤは通常はドーマントであり、ユーザアプリケーションまたはオペレーティングシステムが実行しているときにいつでも呼び出しされることができる。コントロールレジスタを含むプロセッサ実行ステート、および割り込みステートを保持するメカニズムが含まれる。
本願に説明する1つ以上の実施形態の複数の態様は、ソフトウェア命令を実行する1つのコンピュータまたは複数のコンピュータ上で実施されうる。コンピュータはスタンドアロンコンピュータでありうる。または、コンピュータは、クライアント−サーバ構成または同様の分散コンピュータネットワーク内にネットワーク接続されうる。図1は、一実施形態による、ユーザレベルシーケンサ管理およびレイヤを実施するコンピュータシステムのブロック図である。
図1のコンピュータ102は、1つ以上のマイクロプロセッサデバイスまたはユニット103およびプライマリメモリ101とプラットフォームハードウェアデバイス105を含むコンピュータプラットフォームの一部を表す。コンピュータ102は、1つ以上のマザーボード、または、プラットフォームハードウェアブロック105内のコンポーネントの少なくとも一部を含む集積回路デバイス上に具現化されうる。たとえば、プラットフォーム102は、メモリコントローラ、インタフェースコントローラ、コンピュータのコンポーネントを結合するバス、および、幾つかのバッファ、並びに、コンピュータを1つ以上のオンボードまたはオフボード周辺デバイスまたはネットワークに直接的または間接的に結合する同様の回路を含みうる。1つのプロセッサまたは複数のプロセッサ103は、プラットフォーム102のプログラミング命令を実行し、また、シングルおよび/またはマルチプルコアプロセッサ、コントローラ、特定用途向け集積回路などでありうる。
図1のコンピュータプラットフォーム102は、メモリ101に存在する、オペレーティングシステム(OS)104と1つ以上のアプリケーション106を含む。なお、図面には、単一のメモリデバイス101に存在するとして示すが、OS104およびアプリケーション106は、プラットフォーム102内の異なるメモリ、または、プラットフォーム102に結合されるメモリ内に存在することもできる。汎用オペレーティングシステム104は、その中でアプリケーション106が実行する動作環境を提供するよう働き、アプリケーション106とハードウェア105とプラットフォーム102の他のリソースとの間のインタフェース機能を供給する。アプリケーション106は、特定のタスクを実行するまたは特定の出力を供給するようプロセッサ103によって実行される、任意の数またはタイプの異なるソフトウェアプログラムまたはコンポーネントを含みうる。本願で使用するように、「コンポーネント」という用語は、所望の結果を得るために使用されうるプログラミング論理および関連付けられるデータを意味する。「コンポーネント」という用語は、「モジュール」または「エージェント」と同義語であり、また、ハードウェアまたはファームウェア、或いは、C、C++、Java(登録商標)、インテル(登録商標)アーキテクチャ32ビット(IA−32)実行可能コード、インテル(登録商標)アーキテクチャ64ビット(IA−64)実行可能コードといったプログラミング言語で書かれるソフトウェア命令のコレクションで具現化されうるプログラミング論理を意味しうる。
図1に示す実施形態では、プラットフォーム102は、1つ以上のマイクロプロセッサ103を含む。プロセッサ103は、OS管理されたシーケンサ(OMS)110およびアプリケーション管理されたシーケンサ(AMS)112を含む。一般的に、OMS110は、オペレーティングシステム104用のスレッドと、アプリケーション106用のスレッドを処理するプロセッサまたはプロセッサ103の一部であり、AMS112は、アプリケーション106用のスレッドを処理するプロセッサまたはプロセッサ103の一部である。このOMSとAMS間の機能上の分割は、図1の破線矢印により示す。システム内のすべてのプロセッサがオペレーティングシステムとインタラクトする従来のコンピュータシステムとは異なり、図1の実施形態では、各シーケンサ110および112は、それぞれの実行領域、すなわち、OSまたはアプリケーションに必要とされる秘密命令および秘密データを使用する。単に分離されたシステムでは、オペレーティングシステムは、AMSはアプリケーションスレッドだけの実行専用であるので、AMSの存在を認識しない。しかし、このような分離のタイプは、アプリケーションコードおよびAMSアクティビティが任意のオペレーティングシステムコールと関係しない場合にだけ満足に動作する。実際には、システムは、例外を発生させる、ファイルを開く、または任意の同様のタイプのシステムコールといったオペレーティングシステムとインタラクトする動作を、AMSまたはOMSのいずれかが実行する時を検出できることが必要である。
一実施形態では、プラットフォーム102は、シーケンサ110および112と、OS104およびアプリケーション106実行領域との間に存在し、シーケンサ間の通信を調整するOMS−AMSインタフェースとして効果的に動作するソフトウェアレイヤ108を含む。ソフトウェアレイヤ108は、ユーザレベルシーケンサ管理および制御をサポートするMIMD拡張のエミュレーションを可能にする汎用および軽量フレームワークを表す。
プラットフォーム102はインテル(登録商標)Itanium(登録商標)プロセッサまたは同様のIA−64アーキテクチャに基づいている実施形態では、OMS−AMSインタフェースレイヤ108は、プロセッサアブストラクションレイヤ(PAL)の一部として実施できる。コードレイヤ108へのエントリ後、汎用レジスタおよび述語レジスタといった少数のレジスタは、一部のレジスタを使えるようにするために一時メモリ空間に保存される。これらのレジスタは、コードレイヤから抜け出す時に、回復される。一般的に、PALは、Itanium(登録商標)プロセッサファミリーの複数の実施にわたってOSに対して一貫したプロセッサインタフェースを保持する。カーネル特権レベル(リング0)において実行し、PALファームウェアは基本的に2つのコンポーネント、すなわち、OSに露出されるプロセッサ機能のステータスおよび制御を供給するサービス手順のセットと、プロセッサハードウェアイベントを観察しまたプロセッサハードウェアイベントに応答する、OSトランスペアレントハードウェアイベントハンドラのアンサンブルから構成される。プロセッサ103は、様々なハードウェアイベントを観察しそれらのイベントに反応するようPALレイヤ108のプログラマブルデバッギングハードウェアサポートを含みうる。さらに、Itanium(登録商標)アーキテクチャは、多数のプロセッサイベントの発生を追跡するよう性能モニタリングユニット(PMU)インタフェースのセットを定義する。PALレイヤは、特定のイベントを計数し、各カウンタオーバフロー状態をハードウェアブレークポイントイベントに関連付けるようPMUをプログラムすることができる。実施形態は、OMS−AMSインタフェースレイヤ108の実施としてPALに関連して説明されうるが、インタフェース108は、ファームウェア、マイクロコード、VMM(仮想マシンモニタ)、オペレーティングシステムサポート、または任意のマイクロプロセッサプラットフォームアーキテクチャの同様のコンポーネントの任意のレイヤでありうることに留意されたい。
一実施形態では、PALレイヤ108は、カスタムドライバをロードすることによって初めにインストールされるコードパッチである。このドライバは、必要不可欠なメモリを割り当て、OMS110上の特権ステートを初期化し、AMS112といった残りのOS不可視のシーケンサを提示し、初期化する。ドライバはさらに、OMS110およびAMS112の両方の永続データ保存に使用するための非ページメモリを割り当てる。図1に示すように、プラットフォーム102は、メモリ101を含む。永続保存に使用されるメモリタイプは4つあり、それらのうちの一部は、物理CPUごとに割り当てられ、また、ドライバにより割り当てられ、それらのうちの一部は、スレッドごとに割り当てられ、また、OSにより割り当てられる。これらのメモリ領域は以下の通りである。すなわち、(1)プロセッサグローバルメモリ領域−各シーケンサグループ(OMSおよびその関連付けられるAMS)において、すべてのシーケンサがこの領域を共有し、また、このメモリは、ドライバにより割り当てられる。(2)プロセッサローカルメモリ領域−各プロセッサ(OMSまたはAMS)に対して非公開であり、ドライバにより割り当てられる。(3)スレッドグローバルメモリ領域−1つのシーケンサグループにおける各プロセッサは、OSによってOMSに現在予定されるスレッドに固有のこのステートへのアクセスを有し、このメモリは、スレッド作成時にOSにより割り当てられ、スレッド破壊時に破棄される。(4)スレッドローカルメモリ領域−スレッド固有のデータについて現在のプロセッサ(OMSまたはAMS)に対して非公開であり、このメモリは、スレッド作成時にOSにより割り当てられ、スレッド破壊時に破棄される。
ドライバにより割り当てられるメモリは、PALコードパスインストール時に割り当てられる。これらのメモリ領域は、一回だけ割り当てられ、ドライバがアンロードされるまで存続する。各シーケンサ110および112は、これらの領域に対するポインタを保持しなければならない。これらのポインタは、ポインタが保存されない場合には使用されないレジスタ内に保存することができるか、または、各ポインタのアドレスが、PALハンドラのエントリコード内に組み込みされて、適切なポインタが、PALコードをエントリするシーケンサの識別子に基づいてレジスタ内にロードされる。或いは、各シーケンサは、異なるPALコードエントリポイントを有することができ、実行されたコードのシーケンスは、適切なポインタを、シーケンサ管理のための共通PALコードにジャンプする前に、レジスタ内にロードできる。
初期化された後には、すべてのOMSシーケンサ110およびAMSシーケンサ112には、それぞれのシーケンサグループに関連付けられるシーケンサグローバル領域に対するポインタと、それぞれの秘密プロセッサローカルメモリ領域に対するポインタとがインストールされ、一般的に、これらのポインタは変更されない。スレッドグローバルポインタおよびスレッドローカルポインタは、アプリケーションがそのシーケンサグループのOMSに現在予定されている場合にだけ有効である。スレッドがOMS上にコンテキスト回復されると常に、スレッドグローバル領域およびスレッドローカル領域のアドレスは、OSに挿入されている特殊コマンドを介してPALコードに供給される。次にOMS110は、この情報を、そのシーケンサグループにあるAMS112に伝達する。
これらのメモリ領域へのアクセスは成功しなければならない、すなわち、これらのアクセスは、フォルトを発生してはならないので、これらのメモリ領域は、物理モードでアクセスされるか、または、仮想モードでアクセスされる場合には、それらのアドレストランスレーションはTLB(トランスレーションルックアサイドバッファ)内にピン留めされるべきである。この要件は幾つかの方法によって満たすことができる。PALインストール時に、大きいメモリブロックが割り当てられることができ、また、各プロセッサ上にインストールされるTR(トランスレーションレジスタ)は、このメモリブロックに対してトランスレーションを与える。次に、異なるグローバルおよびローカルメモリ領域が、この大きいブロックからの異なるチャンクとして与えられる。第2のソリューションは、OSカーネルのピン留め領域におけるメモリのチャンクを識別することであって、このメモリのチャンクは、これ以外には使用されない。次にこのピン留めTRエントリは、各AMS上にインストールされる。
一実施形態では、OMSシーケンサ110およびAMSシーケンサ112は、幾つかの所定のイベント、たとえば、(1)MIMDサポートのためにエミュレートされなければならない命令の実行、(2)別のプロセッサからのプロセッサ間割り込み(IPI)信号の受信、および(3)リング移行イベントの検出、に応答してPALレイヤを呼び出しする。シーケンサがそのPALコードエントリポイントにジャンプするとき、シーケンサはコードが呼び出しされた理由と適切な応答を決定するためにそのステートを検査する。一部の場合では、この理由の決定は、永続ステートの検査を必要としうる。たとえば、PALコードが、1つの特権レベルから別の特権レベル(たとえば、リング0からリング3)にOMSが戻る結果として呼び出しされた場合、OMSが現在プロキシリクエストを処理しているか否かを決定しなければならない。プロセッサは一般的に、特定の呼び出しにおいてそのPALコードにおいてほとんど時間をかけない。AMS112がその中断ステートに入る場合は例外である。この間、AMS112は、外部信号によって再開されるまでハンドラ内の中断ループを回る。
上述および後述する説明は、特定のレジスタ、ポインタ、命令などに言及しうるが、実施形態は、特定のレジスタまたはマイクロプロセッサアーキテクチャに限定されず、また、同様の構造、コンポーネント、命令、またはそれらの等価物を使用することができることに留意されたい。
一実施形態では、OMSシーケンサ110とAMSシーケンサ112間の通信は、プロセッサ間割り込み(IPI)構造を使用して実施される。そのような割り込み信号は、PMI(Platform Management Interrupts:プラットフォーム管理割り込み)信号、NMI(Non-maskable interrupts:マスク不可割り込み)信号、および外部割込み信号を含みうる。最初に電源がオンにされるときに、シーケンサでは、初期ブートを実行し、最終的に、OSによってブートされ続けることを待機するアイドルループにジャンプするために幾つかのステップが行われる。一般的に、AMS112は、OSによって初期化されず、したがって、AMSの初期制御は、AMSを初期化するために得られなければならず、また、PMI IPIタイプの割り込みを使用して得ることができる。PMI IPIがシーケンサにより受信されると、シーケンサは、レジスタ(たとえば、XPN_PMIレジスタ)内に指定される物理アドレスにジャンプし、また、命令実行は、物理モードで実行されるデータおよび命令の両方へのアクセスとともに続けられる。シーケンサは、XPN_PMIレジスタ内に示されるターゲットアドレスを変更することによって異なるロケーションにジャンプするようにされることもできる。或いは、デフォルトターゲットアドレスにおけるコードは、代わりに、MIMDエミュレーションに使用されるPALコードレイヤへのジャンプをもたらすようパッチ当てされうる。したがって、デフォルトXPN_PMIターゲットにおけるコードは、ターゲットAMSの初期化を実行するコードへのジャンプをもたらすよう変更され、次にPMI IPIがAMS112、またはシステムにおける各AMSに送信される。
使用可能なPMIベクタの数は限られるので、特定のIPIによって意図されるメッセージを区別するために更なる情報が必要となりうる。様々なタイプ間の区別は、PMIベクタと、メモリバックアップされるメッセージ指示子(たとえば、ターゲットAMSのプロセッサローカル領域内に保存される)の組み合わせを使用してすることができる。指示子も、IPIが受信されると検査される。このアプローチでは、IPIは、汎用IPIベクタ上でシーケンサに供給される。次に、プロセッサは、メッセージタイプおよびパラメータを含む通信についての更なる詳細を決定するために所定のメモリロケーションを検査する。任意選択的に、ヌルまたは無効値がそのロケーションから読出しされる場合、IPIは、提案されるフレームワーク外で生成され、制御は代わりにオリジナルのデフォルトPMIハンドラに転送されるべきであると判断できる。シーケンサ110と112間で送信することのできるメッセージタイプは幾つかある。一部の例として、PAUSE(中断)、RESUME(再開)、PROXY_REQUEST(プロキシリクエスト)、SAVE_CONTEXT(コンテキスト保存)、RESTORE_CONTEXT(コンテキスト回復)、およびINITIALIZE(初期化)が挙げられる。
プロキシ実行処理を可能にし、また、OMS110がカーネル内で実行しているときにはAMS112が実行し続けることを阻止することによって正しい処理を保証するために、OMS110およびAMS112の両方に対してすべてのCPL(現在の特権レベル)移行が捕捉されることが必要である。一般的に、CPL移行は、リング3からリング0への移行、また、リング0からリング3への移行を含む。
一実施形態では、システム102は、リング3からリング0への移行を検出および捕捉する3つの可能な方法のうち少なくとも1つを使用することができる。第1の方法は、割り込みベクタテーブル(IVA)インターセプトを使用することを含む。ここでは、シーケンサは、リング0に、フォルトを介して移行する。フォルトが発生すると、シーケンサは、IVAレジスタ内に指定される割り込みベクタテーブルのアドレスにジャンプし、また、テーブルはフォルトベクタの別個のハンドラから構成される。リング3からリング0へのリング移行を捕捉するために、IVAは、初期化時にドライバによりインストールされるフォルトインターセプトレイヤを指すよう変更される。したがって、フォルトが発生すると常に、制御は最初に、試みられたリング移行を処理するのに必要ないかなる作業を実行するダミーテーブルに転送される。AMS112がフォルトを発生すると、ダミーテーブルはフォルトを処理するようプロキシリクエストを出す。OMS110がフォルトを発生すると、OMS110は最初に、実際のOS管理される割り込みベクタテーブルにジャンプする前にすべてのAMS処理を中断する。
リング3からリング0への移行を検出する第2の方法は、オペコードマッチデバッグ機能を使用するepc(enter privileged code:特権コードに入る)命令の実行を介する。この命令のオペコードが一致する場合、制御は、PALコード108に転送される。AMSがepc命令を実行する場合、プロキシリクエストが出される。OMSがこの命令を実行する場合、すべてのAMS処理は最初に中断され、次に、OMSはOSサービスのカーネルにジャンプする。
リング3からリング0への移行を検出する第3の方法は、命令ブレークポイントメカニズムの実行を介する。OS命令およびデータが別個のメモリ領域内におかれる実施形態では、デバッグ命令ブレークポイントメカニズムは、リング0における実行を識別するよう使用されうる。命令ブレークポイントはインストールされることができ、適切なメモリ領域内での命令の任意の実行をモニタリングし、これが発生すると、PALコードへの制御転送をトリガする。或いは、OSカーネルのアドレストランスレーションは一般的にTR内にピン留めされるので、このTRによって翻訳されるアクセスのモニタリングも使用できる。なお、このメカニズムはさらに、一部の変更とともに、その制御はリング3に戻ったことを識別するよう使用されうる。
同様に、一実施形態では、システム102は、リング0からリング3への移行を検出および捕捉する3つの可能な方法のうち少なくとも1つを使用することができる。第1の方法は、Itanium(登録商標)アーキテクチャに定義されるように、ステータスとコントロールフラグの混合を含むプロセッサステータスレジスタ(PSR)を使用することを含む。複数のビットのうちの1つのビット、すなわち、シングルステップ(PSR.ss)イネーブルは、セットされると、1つの命令の実行が無事に完了した後に続くトラップを実行する。このビットは通常、デバッガによるシングルステップオペレーションをイネーブルするよう使用される。カーネルへのエントリ後、PSRのssビットは、割り込みされたリング3ステート(IPSR)においてセットされる。割り込み処理の完了後、リング3ステートは、以前にセットされたPSR.ssビットを使用して回復される。1つのリング3命令の実行は、リング3命令によりトリガされたすべての割り込み処理が完了したことを保証する。リング3命令の実行後、シングルステップトラップが発生し、これは次に、トラップ信号をPALハンドラにリダイレクトし、したがって、カーネルの出口パスを効果的に捕捉する。シングルステップフォルトの発生は、ダミーフォルトインターセプトレイヤを介してシングルステップフォルトベクタをインターセプトすることによって、または、直接制御にシングルステップフォルトをリダイレクトすることによって検出することができる。
リング0からリング3への移行を検出する第2の方法は、PMUオーバフローメカニズムの使用を介する。リング0への最初の移行がPALレイヤにより検出されると、利用可能なPMUは、一部のイベント(たとえば、リタイアした命令またはサイクル)の発生を計数するがこのイベントはリング3においてだけ計数されるよう限定するようプログラムされることができる。制御が後にリング3に戻るとき、このPMUは、ターゲットイベントを計数する。計数器がオーバフローすると、制御は、リング3に戻る移行が発生したことを検出するOMS−AMSインタフェースレイヤ108にリダイレクトされる。この制御転送は、IVAインターセプトレイヤにおけるPMUオーバフローベクタをインターセプトすることによって、または、直接制御にこのオーバフローイベントをダイレクトすることによって実行されることができる。
リング0からリング3への移行を検出する第3の方法は、オーバライドリターンアドレスを介する。リング0への最初の移行がPALレイヤ108により検出されると、このリング移行のためのリターンアドレスは、代替のリターンアドレスに制御をダイレクトするよう保存および変更できるポインタ内に保存される。特に、適切な命令の実行後、制御は、PALレイヤにダイレクトされることができる。これが起きると、リング移行が検出される。リング移行の性質に依存して、複数のリターンアドレスターゲットを用いうる。
OMS112はリング3に戻ったことが検出されると、OMSがプロキシイベントを処理している場合は、プロキシの終了が信号で伝えられる。プロキシを処理していない場合は、その関連付けられるAMS処理が再開される。AMS112は、リング0において任意のOSコードを実行しないので、リング3に「戻った」ことを検出する機会はない。
図2は、一実施形態による、OMS−AMSインタフェースシステムにおけるリング移行を検出および処理する全体のプロセスをまとめたフローチャートである。プロセスは、工程202において、上述した複数の方法のうちの1つを使用することによる、リング3からリング0への移行またはリング0からリング3への移行でありうるCPL移行の検出で開始する。工程204において、移行は、OMS110またはAMS112からであるか判断される。AMS112からである場合、工程206においてAMSからのリング移行が検出され、次に工程208においてプロキシリクエストが出される。工程204において、移行はOMS110からであると判断される場合、プロセスは次に、工程210においてプロセスはモニタリングされたスレッドであるか否かを判断する。モニタリングされたスレッドではない場合、工程212において、OMS110は真の割り込みベクタテーブルにジャンプする。モニタリングされたスレッドである場合、OMSは、中断命令または等価物によってAMS112を中断させ、確認応答を待つ。確認応答を受信後、AMSは、工程216に示すように、オペレーティングシステムにジャンプする。
図2に示すように、リング移行がOMSによる場合、割り込みベクタテーブル(IVT)が使用される。図3は、一実施形態による、フォルトがOMS上で発生した場合に関連付けられるリング移行を検出する方法を説明するフロー図である。OMS304およびAMS306のインスタンスは、図3において、ともにターゲットアプリケーション302を実行するとして示す。フォルトがOMS304上で発生すると、制御は、IVAレジスタ内に与えられるターゲットにすぐに転送される。このレジスタは、初期化時にドライバによりインストールされる特殊フォルトインターセプトレイヤ308を指すよう変更されている実施形態では、PALコード108は、図3に移行321により示すように、リング0への移行の試みを検出する。フォルトインターセプトレイヤ308は最初に、移行322により示すようにPALコードハンドラ310の呼び出しを介してすべてのAMS306処理を中断し、次に、移行323により示すようにOSカーネル312内にインストールされているオリジナルのIVT314にジャンプするよう進む。このことは、OSカーネル312が制御を行い、フォルトを処理することを可能にする。終了すると、OSカーネルは、適切な命令によってAMS306を介するアプリケーションに戻る。たとえば、PSR.ssビットの使用といった上述した複数のメカニズムの1つによって、リング3に戻る移行は検出され、また、移行324により示すようにインストールされたPALコードは再度呼び出しされる。次にプロセスは、AMS306を再開し、最終的にユーザプログラムに戻り、移行325に示すように続行するための実行が可能にされる。
Itanium(登録商標)といったIA−64プロセッサを使用してシステムが実施される一実施形態において、新しいプロセッサ命令が定義される。sxfrと呼ばれるこの新しい命令は、使用可能なAMS上で実行される作業をOMSが分岐することを可能にする。このような命令は、MIMD ISA(命令セットアーキテクチャ)拡張の一部としてエミュレートされうる。本実施形態によるMIMD ISA拡張を実施するシステムは、新しいISA命令を一意に復号化して、それらを各アーキテクチャセマンティクスにしたがって実行しなければならない。Itanium(登録商標)アーキテクチャでは、PMUメカニズムは、オペコードマッチレジスタと称するユーティリティを供給する。これは、PALが、インフライト命令の最中に任意の特殊オペコード符号化を認識およびトラップするようデバッグハードウェアをプログラムすることを可能にする。インフライト命令がオペコードマッチレジスタ内に指定されるオペコード値と一致することが分かると、その命令にはタグが付けられる。パイプラインの下流に移動するにしたがって、そのタグ付き命令は、任意のバックエンドイベントに適しているか否かさらに試験される。リタイアメントの直前の例外検出段階において、タグ付き命令は、ハードウェアブレークポイントイベントをトリガし、そして、制御を対応するPALイベントハンドラに直接転送する。PALイベントハンドラは、命令セマンティクスをエミュレートすることができる。
Itanium(登録商標)アーキテクチャでは、no−op(ノーオペレーション)命令は21ビット即値フィールドで定義され、これは、アプリケーションソフトウェアによって注釈マーカとして潜在的に使用されうる。一般的な適用性を失うことなく、一意のリテラル値を使用するno−op命令符号化は、追加命令の代わりとなるよう取っておかれ、スクラッチレジスタは、どの新しい命令が示されたのかを一意に指定するよう割り当てられる。制御が、特殊no−opの実行が検出された後にPALハンドラに転送されると、スクラッチレジスタは読出しされ、対応するセマンティクスが実行される。
図4は、一実施形態による、プロセッサ命令をエミュレートする、または、OMS−AMSインタフェース機能を実行する手順を説明するフロー図である。図4に示すように、OMS404上でのシュレッド実行(shred executing)は、SXFRコマンドのセンチネル値をスクラッチレジスタ(たとえば、r9)内に移動することによりPALエミュレーションをトリガし、次に特殊NOPコマンドを実行する(工程410)。これが発生すると、移行421により示すように、PALコードへの制御転送が開始される。PALコードハンドラ408は、スクラッチレジスタを検査し、エミュレートされるリクエストされたコマンド(SXFR)を決定し、移行423により示すように適切な入力値を使用してAMS406に信号で伝えることによりこのオペレーションを実行する。次に、OMS404は、PALコード408を出てユーザプログラムに戻り(移行422)、命令ポインタを特殊NOPに続く命令に進める。IPIを処理するための手順も同様に行われるが、命令ポインタは、ユーザプログラムに戻る前に進められない。一実施形態において、命令エミュレーションは、任意のオペレーティングシステムの介入または知識なしで実行することができる。
一実施形態では、OMS−AMSインタフェースレイヤ108は、OMS110とAMS112間でTLB(トランスレーションルックアサイドバッファ)の一貫性を保持するメカニズムを含む。これは、AMSがOMSサービスを選択的に呼び出しすることを可能にする機能を追加する。一般的に、TLBは、プロセッサが最近にアクセスしたメモリ内のページについての情報を含む、メモリ内で保持されるテーブルである。TLBは、プログラムが最近使用した物理メモリ内の対応絶対アドレスを使用してプログラムの仮想アドレスを相互参照する。Itanium(登録商標)プロセッサでは、トランスレーション・リックアサイド・バッファは、ソフトウェアにより管理されるが、性能向上のためにハードウェアサポートされる。すなわち、オペレーティングシステムはTLBエントリをプロセッサのTLB内に挿入する最終的な責任を有する一方で、TLBミスの大部分は自動的に、ハードウェアにおいて、仮想ハッシュページテーブルウォーカ(VHPT)を介して処理される。VHPTは、最初にTLBエントリのOSベースのキャッシュを検査し、要求されたエントリが見つかると、それをTLB内にトランスペアレントに挿入することによってTLBミスペナルティを低減する。VHPTウォーカがこのエントリを自動挿入することができなかった場合、フォルトが発生され、オペレーティングシステムは、TLBエントリをインストールする。
このスキーム下で、AMS上で発生するTLBミスの大部分は、VHPTにより処理される。VHPTにより処理されないミスについては、プロキシ実行リクエストが、TLBミスを処理するようトリガされる。AMSがOMSにプロキシリクエストを出すと常に、OMSは、オペコードマッチング固有命令(たとえば、itc命令およびptc命令)を開始する。これらは、それぞれTLBエントリを挿入および消去する。OMS上でのこれらのTLB命令のうちの1つの実行が検出されると常に、これらの命令は、PALハンドラにおいて復号化され、また、これらのTLB命令のオペランド値は、IPIとともにAMSにブロードキャストされる。そのようなIPIの受信後、AMSは、要求されたオペレーションを実行する。その結果、OMS上で実行されたものと同じTLB命令セマンティックおよびオペランド値がAMS上で再生される。
一般的に、このアプローチ方法は正確さを保証するが、TLBミスフォルトが一般的である作業負荷に対しては低い正確さで実行しうる。実際に、プロキシ実行は、AMSが、フォーワードプログレスを行うためにオペレーティングシステム支援を真に要求する場合(たとえば、AMSが、真のページフォルトを発生させてしまう負荷に遭遇する場合)にだけ必要である。一実施形態では、アプリケーションセーフシステムコール(Application-Safe System Call:ASC)と呼ばれる特殊ソフトウェアハンドラが、OSまたは一部の他のリング0可能なソフトウェア部によって与えられる。これは、AMSが、完全なプロキシ実行に頼る必要なくフォルトおよびシステムコールを直接処理することを可能にする。
ASCは、プロキシ実行フィルタとして動作する。すなわち、あるリング0サービスが必要な場合、シーケンサは最初に適切なASCを呼び出しして、必要なOSサービスの直接処理を試みることができる。無事に完了した場合、プロキシ実行リクエストは、完全に回避され、AMSは実行を続行する。無事に完了しない場合、エラー状態が返され、実行は、完全なプロキシ実行に戻る。ASCは、TLBミスの処理に関連して説明するが、これは、任意の他の頻繁に遭遇するシステムコールまたはフォルトにも適用することのできる一般的な技法である。
ASCは、プロキシ実行フィルタとして動作することにより、2通りで性能を向上する。第一に、AMSはその独自のOSリクエストを直接処理するので、課される追加オーバヘッドは最小限となる。たとえば、OMSは、そのステートを保存および回復するよう強制されず、またAMSステートをコピーする必要もない。というのは、OMSは、AMS上のASC実行に対して完全に気が付かれないからである。第二に、ASCにより処理されるOSインタラクションは完全なシステムシリアライゼーションを強制しない。このことは、複数のAMSがOSインタラクション(たとえば、異なるAMSによる複数のTLBミス)を同時に実行することを可能にする。
一実施形態では、ASCメカニズムは、特殊ソフトウェアTLBミスハンドラを提供するよう使用される。このハンドラは、AMS TLBミスの大部分の条件を満たしうるが、プロキシ実行は、真のページフォルトの場合には依然として必要である。従来のプラットフォームでは、AMSがTLBミスを発生すると、AMSは、通常、すぐにプロキシ実行をリクエストしうる。しかし、ASCが特殊TLBミスハンドラを提供する実施形態では、AMSは、代わりに、特別登録されたソフトウェアハンドラに最初にジャンプする。このハンドラは、OS管理されたデータ構造内をナビゲートして、ミッシングページの有効マッピングを探す。ハンドラがそのようなマッピングを見つける場合、ハンドラは、TLBエントリをハードウェアTLB内に挿入し、また、任意のプロキシ実行リクエストを完全に回避する。ハンドラが、たとえば、真のページフォルトが発生したときに、マッピングを見つけることができない場合、エラー状態が返され、完全なプロキシ実行リクエストが出される。
図5Aは、一実施形態による、アプリケーションセーフシステムコールメカニズムによって無事に完了したOSサービスリクエストを説明する。図5Aの実施形態では、OMS502およびAMS504は、それぞれの処理スレッドを実行する。AMS506は、OSサービスが必要であることを示すリクエスト511を発行する。特別AMSハンドラ508は、OS管理されたデータ構造内をナビゲートすることによりリクエストを処理する。図5Aは、ミッシングページの有効マッピングが見つかった場合を説明する。しかし、特定の場合には、このリクエストは完了しない場合がある。図5Bは、一実施形態による、アプリケーションセーフシステムコールメカニズムによって完了できなかったOSサービスリクエストを説明する。図5Bの実施形態では、OMS520およびAMS522はそれぞれの処理スレッドを実行する。AMS524は、特殊AMSハンドラ526に対してOSサービスが必要であることを示すリクエスト531を発行する。リクエストの条件を満たすことができなければ、ハンドラはリクエスト完了不可信号532を返し、AMSは次に、完全なプロキシ実行リクエスト533を実行する。
ASCは、一般的に、必要ならばアボートできる一部のシステムリクエストを安全な方法で実行できるよう設定されなければならない。しかし、ASCの様々な実施が可能である。実施形態は、ASCとして使用する安全コードを実施するための2つのメカニズムを含む。第一に、ASCは、コールバックとして実施されることができる。この場合、任意のプログラムが実行される前に、ASCは、各ターゲットイベントに対して登録され、各ASCのアドレスは、システム内の各AMSに通信される。たとえば、これは、PALパッチがインストールされるときに行われうる。或いは、特殊なno−opを使用することができる。これは、実行されると、PALコードに、ASCの詳細をすべてのAMSにブロードキャストさせ、特定のレジスタはこの命令に必要なパラメータを供給する。プログラム実行の後期において、AMSがフォルトを発生するまたはシステムコールを行うとき、ASCはその特定のイベントに対して登録されているか否かを確認するチェックが行われる。登録されている場合は、AMSは、プロキシ実行をすぐにリクエストするのではなく、最初にASCにジャンプし実行する。実行されたASCは、たとえば、フォルトを訂正するまたはシステムコールを実行するといったAMSのOSサービスリクエストの条件を満たすよう試みる。ASCの試みが失敗した場合、システムは、完全なプロキシ実行に戻る。
第2の実施形態では、ASCは、デフォルトフォルトハンドラとして実施されうる。OS内のデフォルトフォルトハンドラは、フォルトが発生する場合、OMSおよびAMSの両方がOSにより供給されるフォルトハンドラを自由に直接呼出しするよう安全且つアボート可能な方法で実施されることができる。ASCは、たとえば、TLBミスは真のページフォルトであると検出された場合に、そのフォルトを解決するには不十分である場合、ASCの実行はアボートされ、完全なプロキシ実行が必要となる。このアプローチを使用するために、リング0インターセプトコードにある変更が加えられる。たとえば、IVTインターセプトレイヤは、特定のベクタに対して、オリジナルOSにより供給されたIVTに直接制御が渡されるよう変更されることができる。さらに、epc命令を実行する試みがなされる場合、入力レジスタは、ASCにより処理されるシステムリクエストがリクエストされたか否かを判断するよう構文解析されることができる。ASCにより処理されるシステムリクエストがリクエストされる場合、リング移行は、プロキシリクエストを要求するまたは現在のアクティブAMSを中断する必要なく続行することが可能にされる。
上述の説明は、AMSプロキシリクエストをフィルタリングするためにASCを使用することに関して取り上げたが、ASCは、OMSがオペレーティングシステムサービスを要求するときに性能を向上するよう使用することもできる。これは、OMSがリング0に移行する度に必要とされる通常のシステムシリアライゼーションを回避するので有利である。一般的に、OMSは、AMSと同様にASCを利用することができる。つまり、OMSがTLBミスフォルトを発生する場合、ASCは、システムにおけるすべてのAMSを中断させることなくリクエストの条件を満たそうと最初に呼び出しされる。ASCの呼び出しがリクエストの条件を満たすことができない場合、OMSはその通常のアプローチに戻る、すなわち、すべてのAMSの構文解析をし、次に、真のオペレーティングシステムエントリポイントにジャンプする。
上述した実施形態は、ネイティブ(ハードウェアレベル)MIMD ISAサポートを有するプロセッサの設計をハードウェアおよびソフトウェアサポートの組み合わせを使用して単純化することができる手段を供給するソフトウェアレイヤを説明する。ソフトウェアレイヤは、永続的なCPUごとおよびスレッドごとのデータの様々なセットを含む、OMSおよびAMSの両方によって実行される特権コードのセットを含む。ソフトウェアレイヤは、AMSおよびOMSの両方で発生するすべてのCPL移行をインターセプトし、最初にAMSを提示し、初期化することを含む、OMSとAMS間の通信を調整する。ソフトウェアレイヤはさらに、AMSについて高性能のTLBミス処理を可能にし、これは、プロキシ実行からの著しいオーバヘッドを回避する。また、OMSについても高性能のTLBミス処理を可能にし、これは、関連付けられるAMSを中断することに関連付けられる著しいオーバヘッドを回避する。
説明した実施形態は、1つ以上の特定のプロセッサアーキテクチャに関連して説明したが、様々な環境に適用することができる。したがって、本実施形態は、それらを実施するのに好適な形式およびそれらへの変更に関連して説明したが、当業者は、多くの他の変更を、請求項の範囲内で行いうることを理解するであろう。したがって、説明した実施形態の範囲は、上の説明により限定されることを意図せず、むしろ、請求項を参照することにより完全に決定される。
説明の目的として、「プロセッサ」または「CPU」という用語は、命令のシーケンスを実行できる任意の機械であり、以下に限定されないが、汎用マイクロプロセッサ、特殊用途向けマイクロプロセッサ、特定用途向け集積回路(ASIC)、マルチメディアコントローラ、デジタル信号プロセッサ、およびマイクロコントローラなどを含むと解釈すべきである。
図1に示すシステムに関連付けられるメモリは、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、および/またはダブルデータレート(DDR)SDRAMまたはDRAM、および、読出し専用メモリ(ROM)などの不揮発性メモリといったデジタル情報を保存するよう適応される様々なタイプのメモリデバイスにおいて具現化されうる。また、メモリデバイスは、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、光学ディスクドライブなど、および適切なインタフェースといった他のストレージデバイスをさらに含みうる。システムは、ディスクドライブ、モニタ、キーパッド、モデム、プリンタ、または任意の他のタイプのI/OデバイスといったI/Oデバイスとインタフェースする好適なインタフェースを含みうる。
本願に記載する方法およびシステムの複数の態様は、フィールドプログラマブルゲートアレイ(「FPGA」)といったプログラマブル論理デバイス(「PLD」)、プログラマブルアレイ論理(「PAL」)デバイス、電気的プログラマブル論理およびメモリデバイス、および標準セルベースデバイス、さらに、特定用途向け集積回路を含む任意の様々な回路にプログラムされる機能として実施されうる。実施形態には、メモリを有するマイクロコントローラ(EEPROMなど)、組み込みマイクロコントローラ、ファームウェア、ソフトウェアなどを含みうる。さらに、複数の態様は、ソフトウェアベースの回路エミュレーション、個別論理(順次式または組み合わせ式)、カスタムデバイス、ファジー(ニューラル)論理、量子デバイス、およびこれらのデバイスタイプの任意のハイブリッドを有するマイクロプロセッサにおいて具現化されうる。基礎となるデバイス技術は、たとえば、相補型金属酸化膜半導体(「CMOS」)といった金属酸化膜半導体電界効果トランジスタ(「MOSFET」)技術、エミッタ結合論理(「ECL」)といったバイポーラ技術、ポリマー技術(たとえば、シリコン共役ポリマーおよび金属共役ポリマー金属構造)、混合されたアナログおよびデジタルなどの様々なコンポーネントタイプにおいて供給されうる。
「コンポーネント」という用語を本願において一般的に使用しているが、「コンポーネント」には、当該技術において周知である用語として、回路、コンポーネント、モジュール、および/または回路、コンポーネント、および/またはモジュールの任意の組み合わせを含むことを理解するものとする。
本願に開示する様々なコンポーネントおよび/または機能は、その挙動、レジスタ転送、論理コンポーネント、および/または他の特徴について、ハードウェア、ファームウェア、および/またはデータおよび/または様々な機械可読またはコンピュータ可読媒体上に具現化される命令の任意の数の組み合わせを使用して説明されうる。そのようなフォーマット化されたデータおよび/または命令がその中に具現化されうるコンピュータ可読媒体は、以下に限定されないが、様々な形式の不揮発性ストレージ媒体(たとえば、光学、磁気、または半導体ストレージ媒体)およびそのようなフォーマット化されたデータおよび/または命令をワイヤレス、光学、または有線シグナリング媒体、またはこれらの任意の組み合わせを介して転送するために使用しうる搬送波を含む。搬送波によるそのようなフォーマット化されたデータおよび/または命令の転送の例は、以下に限定されないが、インターネットおよびまたは1つ以上のデータ転送プロトコルを介する他のコンピュータネットワークを介する転送(アップロード、ダウンロード、電子メールなど)を含む。
コンテキストにおいて明らかにそうではないと示さない限り、明細書および請求項全体における「含む」などの用語は、排他的または網羅的な意味合いではなく包含的な意味合いで、すなわち、「以下に限定されないが、以下を含む」という意味合いで解釈すべきである。単数形および複数形で示す用語もそれぞれの複数形および単数形を含む。さらに、「本願において」、「以下において」、「上述において」、「以下」、および同様の用語は、本願全体を指すものであって、本願の特定部分を指すものではない。2つ以上の項目を含むリストを参照するときに「または」という用語を使用する場合、この用語は、以下のすべての用語解釈を対象とする。すなわち、リストにおける項目のどれでも、リストにおける項目のすべて、およびリストにおける項目の任意の組み合わせ。
図示する実施形態の上述の説明は、本開示によって排他的または限定的であることを意図しない。たとえば、システムおよび方法の特定の実施形態は、本願において例示目的で説明したが、当業者は認識するように様々な等価の変更が可能である。本願に提供した教示内容は、上述したシステムおよび方法だけでなく、他のシステムおよび方法にも適用しうる。上述した様々な実施形態の構成要素および動作は、更なる実施形態を提供するよう組合されうる。これらのおよび他の変更は、上述の詳細な説明を鑑みて方法およびシステムに行いうる。
一般的に、請求項において使用する用語は、明細書および請求項に開示する特定の実施形態に限定されると解釈すべきではないが、請求項に基づいて動作するすべてのシステムおよび方法を含むと解釈すべきである。したがって、方法およびシステムは、開示内容に限定されず、むしろ、範囲は、請求項によって完全に決定される。特定の態様は、特定の請求項形式で提示するが、発明者は、任意の数の請求項形式での様々な態様も考慮する。したがって、発明者は、他の態様のためにそのような追加の請求項形式を追求するために出願後に追加の請求項を加える権利を有する。
一実施形態による、ユーザレベルシーケンサ管理および制御レイヤを実施するコンピュータシステムを示すブロック図である。
一実施形態による、OMS−AMSインタフェースシステムにおけるリング移行を検出および処理する全体プロセスを説明するフローチャートである。
一実施形態による、OMS上で発生するフォルトに関連付けられたリング0およびリング3の両方の移行を検出する方法を説明するフロー図である。
一実施形態による、プロセッサ命令をエミュレートする、または、OMS−AMSインタフェース機能を実行する手順を説明するフロー図である。
一実施形態による、アプリケーションセーフシステムコールメカニズムによって無事に完了したOSサービスリクエストを説明する図である。
一実施形態による、アプリケーションセーフシステムコールメカニズムによって完了できなかったOSサービスリクエストを説明する図である。
符号の説明
101 メモリ
102 コンピュータ
103 プロセッサ
104 オペレーティングシステム
105 プラットフォームハードウェア
106 アプリケーション
108 ソフトウェアレイヤ
110 OS管理されるシーケンサ
112 アプリケーション管理されるシーケンサ

Claims (20)

  1. アプリケーションにより管理されるシーケンサおよびオペレーティングシステムにより管理されるシーケンサのうちの少なくとも1つが、一のマルチプロセッサシステムにおいて実行される一のオペレーティングシステムとインタラクションすることを要求する一の状態を検出する工程と、
    前記オペレーティングシステムにより管理されるシーケンサおよび前記アプリケーションにより管理されるシーケンサにメモリを割り当てる工程と、
    前記オペレーティングシステムにより管理されるシーケンサにおける一の特権ステートを初期化する工程と、
    前記アプリケーションにより管理されるシーケンサの実行を、前記検出された状態に応答する、複数のイベントハンドラを含む一のカーネル特権レベルコンポーネントにリダイレクトする工程と、
    を含む方法。
  2. 前記割り当てられるメモリは、プロセッサグローバルメモリ、プロセッサローカルメモリ、スレッドグローバルメモリ、およびスレッドローカルメモリから構成されるグループから選択される請求項1に記載の方法。
  3. 一の第1のシーケンサグループに関連付けられる一のグローバル領域を指すよう前記オペレーティングシステムにより管理されるシーケンサにおける一の第1のポインタを初期化する工程と、
    一の第1のプロセッサローカルメモリ領域を指すよう前記オペレーティングシステムにより管理されるシーケンサにおける一の第2のポインタを初期化する工程と、
    一の第2のシーケンサグループに関連付けられる一のグローバル領域を指すよう前記アプリケーションにより管理されるシーケンサにおける一の第1のポインタを初期化する工程と、
    一の第2のプロセッサローカルメモリ領域に関連付けられる一のグローバル領域を指すよう前記アプリケーションにより管理されるシーケンサにおける一の第2のポインタを初期化する工程と、
    をさらに含む請求項2に記載の方法。
  4. 前記状態は、前記マルチプロセッサシステムにおける一の第1のプロセッサから一のプロセッサ間割り込み信号を受信することを含む請求項1に記載の方法。
  5. 前記状態は、一のリング移行イベントを検出することを含む請求項4に記載の方法。
  6. 前記リング移行イベントは、リング0からリング3への移行を含む請求項5に記載の方法。
  7. 前記リング移行イベントは、リング3からリング0への移行を含む請求項5に記載の方法。
  8. 前記状態が前記アプリケーションにより管理されるシーケンサによりもたらされる場合に、前記検出された状態のプロキシ実行処理を実行する工程と、
    前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされる場合に、前記状態は一のモニタリングされるスレッドか否かを判断する工程と、
    前記状態が一のモニタリングされるスレッドにおいて発生する場合に、一の割り込みベクタテーブルにより指し示される一の実行ロケーションにジャンプする工程と、
    をさらに含む請求項5に記載の方法。
  9. 前記カーネル特権レベルコンポーネントは、前記マルチプロセッサシステムの少なくとも1つのプロセッサと前記オペレーティングシステムとの間に機能的に存在する一のファームウェアレイヤを含み、
    前記ハードウェアイベントハンドラは、前記オペレーティングシステムに対してトランスペアレントである請求項4に記載の方法。
  10. 前記少なくとも1つのプロセッサは、一の64ビットプロセッサを含み、
    前記カーネル特権レベルコンポーネントは、前記64ビットプロセッサのアーキテクチャにより定義される一のプロセッサアブストラクションレイヤを含む請求項9に記載の方法。
  11. 一の仮想ハッシュページテーブルウォーカを介して、前記オペレーティングシステムにより管理されるシーケンサと前記アプリケーションにより管理されるシーケンサの両方により使用される一のトランスレーションルックアサイドバッファにおける一貫性を保持する工程をさらに含む請求項1に記載の方法。
  12. 一のマルチプロセッサプラットフォームにおいて実行される一のオペレーティングシステムの1つ以上の処理スレッドを実行する一のオペレーティングシステムにより管理されるシーケンサと、
    前記マルチプロセッサプラットフォーム上で1つ以上のアプリケーションプログラムを実行する一のアプリケーションにより管理されるシーケンサと、
    前記オペレーティングシステムおよび前記アプリケーションプログラムのコンテンツを具現化する1つ以上のページを保存するよう前記アプリケーションにより管理されるシーケンサおよび前記オペレーティングシステムにより管理されるシーケンサに割り当てられる一のメモリ空間と、
    前記アプリケーションにより管理されるシーケンサが前記オペレーティングシステムとインタラクションすることを要求する一の検出状態に応答する、複数のハードウェアイベントハンドラを含む一のカーネル特権レベルコンポーネントに、前記アプリケーションにより管理されるシーケンサの実行をリダイレクトする一のファームウェアレイヤと、
    を含むシステム。
  13. 前記少なくとも1つのプロセッサは、一の64ビットプロセッサを含み、
    前記ファームウェアレイヤは、前記64ビットプロセッサのアーキテクチャにより定義される一のプロセッサアブストラクションレイヤを含む請求項12に記載のシステム。
  14. 前記メモリ空間は、プロセッサグローバルメモリ、プロセッサローカルメモリ、スレッドグローバルメモリ、およびスレッドローカルメモリから構成されるグループから選択される請求項13に記載のシステム。
  15. 前記検出状態は、前記プロセッサが前記マルチプロセッサシステムにおける別のプロセッサからの一のプロセッサ間割り込み信号を受信する状態と、前記プロセッサが一のリング移行イベントを検出する状態とから構成されるグループから選択される請求項12に記載のシステム。
  16. 前記リング移行イベントは、リング0からリング3への移行と、リング3からリング0への移行とから構成されるグループから選択される請求項15に記載のシステム。
  17. 前記オペレーティングシステムにより管理されるシーケンサおよび前記アプリケーションにより管理されるシーケンサにより使用される一のトランスレーションルックアサイドバッファをさらに含み、
    前記トランスレーションルックアサイドバッファのコンテンツは、一の仮想ハッシュページテーブルウォーカにより制御される請求項16に記載のシステム。
  18. 複数の命令が保存され、前記複数の命令が一のシステムにおける一のプロセッサによって実行されると複数のオペレーションを実行する機械可読媒体であって、
    前記オペレーションは、
    一のアプリケーションにより管理されるシーケンサが、一のマルチプロセッサシステムにおいて実行される一のオペレーティングシステムとインタラクションすることを要求する一の状態を検出するオペレーションと、
    前記マルチプロセッサシステムにおける一のオペレーティングシステムにより管理されるシーケンサおよび前記アプリケーションにより管理されるシーケンサにメモリを割り当てるオペレーションと、
    前記オペレーティングシステムにより管理されるシーケンサにおける一の特権ステートを初期化するオペレーションと、
    前記アプリケーションにより管理されるシーケンサの実行を、前記検出された状態に応答する、複数のハードウェアイベントハンドラを含む一のカーネル特権レベルコンポーネントにリダイレクトするオペレーションと、
    を含む、機械可読媒体。
  19. 一の第1のシーケンサグループに関連付けられる一のグローバル領域を指すよう前記オペレーティングシステムにより管理されるシーケンサにおける一の第1のポインタを初期化するオペレーションと、
    一の第1のプロセッサローカルメモリ領域を指すよう前記オペレーティングシステムにより管理されるシーケンサにおける一の第2のポインタを初期化するオペレーションと、
    一の第2のシーケンサグループに関連付けられる一のグローバル領域を指すよう前記アプリケーションにより管理されるシーケンサにおける一の第1のポインタを初期化するオペレーションと、
    一の第2のプロセッサローカルメモリ領域に関連付けられる一のグローバル領域を指すよう前記アプリケーションにより管理されるシーケンサにおける一の第2のポインタを初期化するオペレーションと、
    を実行する複数の命令をさらに含む請求項18に記載の機械可読媒体。
  20. 前記状態が前記アプリケーションにより管理されるシーケンサによりもたらされる場合に、前記検出された状態のプロキシ実行処理を実行するオペレーションと、
    前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされる場合に、前記状態は一のモニタリングされるスレッドか否かを判断するオペレーションと、
    前記状態が一のモニタリングされるスレッドにおいて発生する場合に、一の割り込みベクタテーブルにより指し示される一の実行ロケーションにジャンプするオペレーションと、
    を実行する複数の命令をさらに含む請求項19に記載の機械可読媒体。
JP2007273186A 2007-10-19 2007-10-19 マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム Expired - Fee Related JP4978914B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007273186A JP4978914B2 (ja) 2007-10-19 2007-10-19 マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007273186A JP4978914B2 (ja) 2007-10-19 2007-10-19 マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム

Publications (2)

Publication Number Publication Date
JP2009104259A true JP2009104259A (ja) 2009-05-14
JP4978914B2 JP4978914B2 (ja) 2012-07-18

Family

ID=40705892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007273186A Expired - Fee Related JP4978914B2 (ja) 2007-10-19 2007-10-19 マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム

Country Status (1)

Country Link
JP (1) JP4978914B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134318A (ja) * 2009-12-22 2011-07-07 Intel Corp 複数のデータ・エレメントの収集及び分散
CN106716983A (zh) * 2015-02-10 2017-05-24 京瓷办公信息系统株式会社 通信终端设备以及通信系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006074024A2 (en) * 2004-12-30 2006-07-13 Intel Corporation A mechanism for instruction set based thread execution on a plurality of instruction sequencers
JP2007102781A (ja) * 2005-09-30 2007-04-19 Intel Corp 持続的なユーザレベルスレッド用の装置、システムおよび方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006074024A2 (en) * 2004-12-30 2006-07-13 Intel Corporation A mechanism for instruction set based thread execution on a plurality of instruction sequencers
JP2007102781A (ja) * 2005-09-30 2007-04-19 Intel Corp 持続的なユーザレベルスレッド用の装置、システムおよび方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134318A (ja) * 2009-12-22 2011-07-07 Intel Corp 複数のデータ・エレメントの収集及び分散
CN106716983A (zh) * 2015-02-10 2017-05-24 京瓷办公信息系统株式会社 通信终端设备以及通信系统
JPWO2016129179A1 (ja) * 2015-02-10 2017-06-22 京セラドキュメントソリューションズ株式会社 通信端末装置、及び通信システム
US10279611B2 (en) 2015-02-10 2019-05-07 Kyocera Document Solutions Inc. Communication terminal device and communication system
CN106716983B (zh) * 2015-02-10 2019-06-18 京瓷办公信息系统株式会社 通信终端设备以及通信系统

Also Published As

Publication number Publication date
JP4978914B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
US7768518B2 (en) Enabling multiple instruction stream/multiple data stream extensions on microprocessors
Hedayati et al. Hodor:{Intra-Process} isolation for {High-Throughput} data plane libraries
US8689215B2 (en) Structured exception handling for application-managed thread units
US8380907B2 (en) Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US9785506B2 (en) Reducing likelihood of concurrency error in virtualized computing environment
US6996698B2 (en) Blocking processing restrictions based on addresses
US9626187B2 (en) Transactional memory system supporting unbroken suspended execution
KR100624668B1 (ko) 가상 머신 모니터와 게스트 운영 체제 간의 주소 공간 충돌을 해결하는 방법
US7530067B2 (en) Filtering processor requests based on identifiers
US7356735B2 (en) Providing support for single stepping a virtual machine in a virtual machine environment
US8140834B2 (en) System, method and computer program product for providing a programmable quiesce filtering register
EP1630670A2 (en) Virtual machine environment in a computer system
Varanasi Implementing Hardware-supported Virtualization in OKL4 on ARM
US11301283B1 (en) Virtualization extension modules
EP0588473B1 (en) Method and apparatus for emulating the environment of a microprocessor
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
NL2030804B1 (en) Flexible return and event delivery
JP4978914B2 (ja) マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
GB2532777A (en) System error handling in a data processing apparatus
CN113474754A (zh) 有条件退让给管理程序指令
US20230315444A1 (en) Synchronous microthreading
EP4254177A1 (en) Synchronous microthreading
US20060122821A1 (en) Method for detecting and processing sensitive non-privileged processor instructions in a virtual machine computer system
JP2012108938A (ja) コンピュータのメモリを参照する方法およびコンピュータ
Maeda Kernel korner: kernel mode Linux for AMD64

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100615

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110829

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: 20120321

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120409

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

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

LAPS Cancellation because of no payment of annual fees