(57)【特許請求の範囲】
【請求項１】
アプリケーションにより管理されるシーケンサおよびオペレーティングシステムにより管理されるシーケンサのうちの少なくとも１つが、一のマルチプロセッサシステムにおいて実行される前記アプリケーションにより管理されるシーケンサおよびオペレーティングシステムにより管理されるシーケンサの両方に対して特権レベルが移行する状態を、プロセッサアブストラクションレイヤにより実施されたインタフェイスを通じて検出する工程と、
前記マルチプロセッサシステムにより実行されるドライバが、前記オペレーティングシステムにより管理されるシーケンサおよび前記アプリケーションにより管理されるシーケンサにメモリを割り当てる工程と、
前記ドライバが前記プロセッサアブストラクションレイヤを実行して、前記オペレーティングシステムにより管理されるシーケンサにおける一の特権レベルを初期化する工程と、
前記状態が前記アプリケーションにより管理されるシーケンサによりもたらされる場合に、前記アプリケーションにより管理されるシーケンサが、前記検出された状態に応答する複数のイベントハンドラを含む一のプロセッサアブストラクションレイヤハンドラに、前記アプリケーションにより管理されるシーケンサの実行をリダイレクトするプロキシ実行処理を実行する工程と、
前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされ、かつ、前記状態が一のモニタリングされるスレッドにおいて発生していない場合、前記オペレーティングシステムにより管理されるシーケンサが、一の割り込みベクタテーブルにより指し示される一の実行ロケーションにジャンプする工程と、
前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされ、かつ、前記状態が一のモニタリングされるスレッドにおいて発生した場合、前記オペレーティングシステムにより管理されるシーケンサが、前記アプリケーションにより管理されるシーケンサを中断させる行程と、
を含む方法。
【請求項２】
前記割り当てられるメモリは、プロセッサグローバルメモリ、プロセッサローカルメモリ、スレッドグローバルメモリ、およびスレッドローカルメモリから構成されるグループから選択される請求項１に記載の方法。
【請求項３】
前記オペレーティングシステムにより管理されるシーケンサは、前記オペレーティングシステムにより管理されるシーケンサにおける一の第１のポインタを、一の第１のシーケンサグループに関連付けられる一の前記プロセッサグローバルメモリの領域を指すように初期化する工程と、
前記オペレーティングシステムにより管理されるシーケンサは、前記オペレーティングシステムにより管理されるシーケンサにおける一の第２のポインタを、一の第１の前記プロセッサローカルメモリの領域を指すように初期化する工程と、
前記アプリケーションにより管理されるシーケンサは、前記アプリケーションにより管理されるシーケンサにおける一の第１のポインタを、一の第２のシーケンサグループに関連付けられる一の前記プロセッサグローバルメモリの領域を指すように初期化する工程と、
前記アプリケーションにより管理されるシーケンサは、前記アプリケーションにより管理されるシーケンサにおける一の第２のポインタを、一の第２の前記プロセッサローカルメモリの領域を指すように初期化する工程と、
をさらに含む請求項２に記載の方法。
【請求項４】
前記状態は、前記マルチプロセッサシステムにおける一の第１のプロセッサから一のプロセッサ間割り込み信号を受信することを含む請求項１から３のいずれかに記載の方法。
【請求項５】
前記状態は、一のリング移行イベントを検出することを含む請求項４に記載の方法。
【請求項６】
前記リング移行イベントは、リング０からリング３への移行を含む請求項５に記載の方法。
【請求項７】
前記リング移行イベントは、リング３からリング０への移行を含む請求項５または６に記載の方法。
【請求項８】
前記プロセッサアブストラクションレイヤにより実施された前記インタフェイスは、前記マルチプロセッサシステムの少なくとも１つのプロセッサと前記オペレーティングシステムとの間に機能的に存在する一のファームウェアレイヤを含み、
前記オペレーティングシステムは、前記アプリケーションにより管理されるシーケンサの存在を認識しない請求項４から７のいずれかに記載の方法。
【請求項９】
前記少なくとも１つのプロセッサは、一のＩＡ−６４プロセッサを含み、
前記ファームウェアレイヤは、前記ＩＡ−６４プロセッサのアーキテクチャにより定義される一のプロセッサアブストラクションレイヤを含む請求項８に記載の方法。
【請求項１０】
一の仮想ハッシュページテーブルウォーカは、前記オペレーティングシステムにより管理されるシーケンサと前記アプリケーションにより管理されるシーケンサの両方により使用される一のトランスレーションルックアサイドバッファをエントリするＯＳベースのキャッシュを検査し、前記エントリが見つかると、前記トランスレーションルックアサイドバッファ内に前記エントリを自動挿入する工程をさらに含む請求項１から９のいずれかに記載の方法。
【請求項１１】
一のマルチプロセッサプラットフォームにおいて実行される一のオペレーティングシステムの１つ以上のスレッドを処理する一のオペレーティングシステムにより管理されるシーケンサと、
前記マルチプロセッサプラットフォーム上で１つ以上のスレッドのアプリケーションプログラムを処理する一のアプリケーションにより管理されるシーケンサと、
前記オペレーティングシステムおよび前記アプリケーションプログラムのコンテンツを具現化する１つ以上のページを保存するよう前記アプリケーションにより管理されるシーケンサおよび前記オペレーティングシステムにより管理されるシーケンサに割り当てられる一のメモリ空間と、
前記アプリケーションにより管理されるシーケンサによりもたらされる状態を検出した場合に、前記検出された状態のプロキシ実行処理を実行して、複数のハードウェアイベントハンドラを含む一のプロセッサアブストラクションレイヤハンドラに、前記アプリケーションにより管理されるシーケンサの実行をリダイレクトし、
前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされ、かつ、前記状態が一のモニタリングされるスレッドにおいて発生していない場合、一の割り込みベクタテーブルにより指し示される一の実行ロケーションにジャンプし、
前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされ、かつ、前記状態が一のモニタリングされるスレッドにおいて発生した場合、前記アプリケーションにより管理されるシーケンサを中断させる、
一のファームウェアレイヤと、
を含むシステム。
【請求項１２】
前記マルチプロセッサプラットフォームは、一のＩＡ−６４プロセッサを含み、
前記ファームウェアレイヤは、前記ＩＡ−６４プロセッサのアーキテクチャにより定義される一のプロセッサアブストラクションレイヤを含む請求項１１に記載のシステム。
【請求項１３】
前記メモリ空間は、プロセッサグローバルメモリ、プロセッサローカルメモリ、スレッドグローバルメモリ、およびスレッドローカルメモリから構成されるグループから選択される請求項１２に記載のシステム。
【請求項１４】
前記検出状態は、前記プロセッサが前記マルチプロセッサプラットフォームにおける別のプロセッサからの一のプロセッサ間割り込み信号を受信する状態と、前記プロセッサが一のリング移行イベントを検出する状態とから構成されるグループから選択される請求項１１に記載のシステム。
【請求項１５】
前記リング移行イベントは、リング０からリング３への移行と、リング３からリング０への移行とから構成されるグループから選択される請求項１４に記載のシステム。
【請求項１６】
前記オペレーティングシステムにより管理されるシーケンサおよび前記アプリケーションにより管理されるシーケンサにより使用される一のトランスレーションルックアサイドバッファをさらに含み、
一の仮想ハッシュページテーブルウォーカは、前記トランスレーションルックアサイドバッファをエントリするＯＳベースのキャッシュを検査し、前記エントリが見つかると、前記トランスレーションルックアサイドバッファ内に前記エントリを自動挿入する請求項１５に記載のシステム。
【請求項１７】
複数の命令が保存され、前記複数の命令が一のシステムにおける一のプロセッサによって実行されることで、一のシステムにおける一のプロセッサに複数のオペレーションを実行させる機械可読媒体であって、
前記オペレーションは、
一のアプリケーションにより管理されるシーケンサが、一のマルチプロセッサシステムにおいて実行される前記アプリケーションにより管理されるシーケンサおよびオペレーティングシステムにより管理されるシーケンサの両方に対して特権レベルが移行する状態を、プロセッサアブストラクションレイヤで実施されるインタフェイスを通じて検出するオペレーションと、
前記マルチプロセッサシステムにおける一のオペレーティングシステムにより管理されるシーケンサおよび前記アプリケーションにより管理されるシーケンサにメモリを割り当てるオペレーションと、
前記オペレーティングシステムにより管理されるシーケンサにおける一の特権レベルを初期化するオペレーションと、
前記状態が前記アプリケーションにより管理されるシーケンサによりもたらされる場合に、前記検出された状態のプロキシ実行処理を実行するオペレーションと、
前記プロキシ実行処理は、前記アプリケーションにより管理されるシーケンサの実行を、前記検出された状態に応答する、複数のハードウェアイベントハンドラを含む一のプロセッサアブストラクションレイヤハンドラにリダイレクトするオペレーションを含み、
前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされ、かつ、前記状態が一のモニタリングされるスレッドにおいて発生していない場合、一の割り込みベクタテーブルにより指し示される一の実行ロケーションにジャンプするオペレーションと、
前記状態が前記オペレーティングシステムにより管理されるシーケンサによりもたらされ、かつ、前記状態が一のモニタリングされるスレッドにおいて発生した場合、前記アプリケーションにより管理されるシーケンサを中断させるオペレーションと、
を含む、機械可読媒体。
【請求項１８】
一の第１のシーケンサグループに関連付けられる一のグローバル領域を指すよう前記オペレーティングシステムにより管理されるシーケンサにおける一の第１のポインタを初期化するオペレーションと、
一の第１のプロセッサローカルメモリ領域を指すよう前記オペレーティングシステムにより管理されるシーケンサにおける一の第２のポインタを初期化するオペレーションと、
一の第２のシーケンサグループに関連付けられる一のグローバル領域を指すよう前記アプリケーションにより管理されるシーケンサにおける一の第１のポインタを初期化するオペレーションと、
一の第２のプロセッサローカルメモリ領域に関連付けられる一のグローバル領域を指すよう前記アプリケーションにより管理されるシーケンサにおける一の第２のポインタを初期化するオペレーションと、
を実行する複数の命令をさらに含む請求項１７に記載の機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、コンピュータシステムの分野に関し、より具体的には、マルチプロセッサシステムにおけるオペレーティングシステムのインタフェースおよび制御の分野に関する。
【背景技術】
【０００２】
現代のコンピュータシステムにおける並列処理がますます進歩することによって、マルチコアまたはマルチプロセッサシステムといったパーティショニングされたマイクロプロセッサアーキテクチャが開発されている。これは、代わりに、現在のマルチコアマイクロプロセッサアーキテクチャを有効に活用できるシステムソフトウェアおよびアプリケーションを開発することを必然的に必要としている。１つのそのような開発は、ＭＩＭＤ（複数命令ストリーム、複数データストリーム）モデルであり、これは、マルチプロセッサシステムにおける複数のプロセッサが基本的に互いとは無関係に動作する並列実行モデルを指す。このようなシステムでは、プログラムまたは処理構造は、機能に基づいて並列実行のために分解されうる。たとえば、特定のシステムは、オペレーティングシステムとアプリケーション用に別個のシーケンサまたはプロセッサを使用しうる。このようなシステムは、オペレーティングシステム（ＯＳ）コードを処理するオペレーティングシステムにより管理されたシーケンサ（ＯＭＳ）と、アプリケーションコードを処理するアプリケーションにより管理されたシーケンサ（ＡＭＳ）を使用しうる。一般的に、ＯＭＳは、ＯＳおよびアプリケーションコードの両方を実行することができるが、ＡＭＳは、アプリケーションコードだけを実行することができる。ＯＳおよびアプリケーションコード間での処理タスクの分割は、両方のタイプのタスクに対して処理が最適化されることを可能にする。しかし、このようなシステムでは、ＯＭＳおよびＡＭＳシーケンサは、どちらかがシステムコール（たとえば、ファイルを開くなど）、または、フォルト、または、例外といったオペレーティングシステムが関係する動作を実行する時を検出することを保証するよう調整がなされなければならない。
【０００３】
専用ＡＭＳシーケンサおよびＯＭＳシーケンサ間でアプリケーションおよびオペレーティングシステム処理を分けるシステムに関連付けられる１つの不利点は、オペレーティングシステムはＡＭＳを認識しないので、システムにより使用される特定のオブジェクトまたは要素を常に保護できるわけではないということである。
【発明を実施するための最良の形態】
【０００４】
本願に説明する実施形態は、ユーザレベルシーケンサ管理および制御をサポートする複数命令ストリーム／複数データストリーム（ＭＩＭＤ）拡張と、永続するＣＰＵごとおよびスレッドごとのデータの様々なセットを含む、オペレーティングシステムにより管理されるシーケンサおよびアプリケーションにより管理されるシーケンサの両方により実行される特権コードのセットのエミュレーションを可能にするシステムを開示する。一実施形態では、軽量コードレイヤは、オペレーティングシステムの下で実行する。このコードレイヤは、ＯＭＳとＡＭＳ間の通信の必要性といった特定のモニタリングされるイベントに応答して呼び出しされる。これが起きると、制御はこのコードレイヤに転送され、１つ以上の特殊オペレーションが実行され、そして、制御は最初に実行されていたコードに戻る。コードレイヤは通常はドーマントであり、ユーザアプリケーションまたはオペレーティングシステムが実行しているときにいつでも呼び出しされることができる。コントロールレジスタを含むプロセッサ実行ステート、および割り込みステートを保持するメカニズムが含まれる。
【０００５】
本願に説明する１つ以上の実施形態の複数の態様は、ソフトウェア命令を実行する１つのコンピュータまたは複数のコンピュータ上で実施されうる。コンピュータはスタンドアロンコンピュータでありうる。または、コンピュータは、クライアント−サーバ構成または同様の分散コンピュータネットワーク内にネットワーク接続されうる。図１は、一実施形態による、ユーザレベルシーケンサ管理およびレイヤを実施するコンピュータシステムのブロック図である。
【０００６】
図１のコンピュータ１０２は、１つ以上のマイクロプロセッサデバイスまたはユニット１０３およびプライマリメモリ１０１とプラットフォームハードウェアデバイス１０５を含むコンピュータプラットフォームの一部を表す。コンピュータ１０２は、１つ以上のマザーボード、または、プラットフォームハードウェアブロック１０５内のコンポーネントの少なくとも一部を含む集積回路デバイス上に具現化されうる。たとえば、プラットフォーム１０２は、メモリコントローラ、インタフェースコントローラ、コンピュータのコンポーネントを結合するバス、および、幾つかのバッファ、並びに、コンピュータを１つ以上のオンボードまたはオフボード周辺デバイスまたはネットワークに直接的または間接的に結合する同様の回路を含みうる。１つのプロセッサまたは複数のプロセッサ１０３は、プラットフォーム１０２のプログラミング命令を実行し、また、シングルおよび／またはマルチプルコアプロセッサ、コントローラ、特定用途向け集積回路などでありうる。
【０００７】
図１のコンピュータプラットフォーム１０２は、メモリ１０１に存在する、オペレーティングシステム（ＯＳ）１０４と１つ以上のアプリケーション１０６を含む。なお、図面には、単一のメモリデバイス１０１に存在するとして示すが、ＯＳ１０４およびアプリケーション１０６は、プラットフォーム１０２内の異なるメモリ、または、プラットフォーム１０２に結合されるメモリ内に存在することもできる。汎用オペレーティングシステム１０４は、その中でアプリケーション１０６が実行する動作環境を提供するよう働き、アプリケーション１０６とハードウェア１０５とプラットフォーム１０２の他のリソースとの間のインタフェース機能を供給する。アプリケーション１０６は、特定のタスクを実行するまたは特定の出力を供給するようプロセッサ１０３によって実行される、任意の数またはタイプの異なるソフトウェアプログラムまたはコンポーネントを含みうる。本願で使用するように、「コンポーネント」という用語は、所望の結果を得るために使用されうるプログラミング論理および関連付けられるデータを意味する。「コンポーネント」という用語は、「モジュール」または「エージェント」と同義語であり、また、ハードウェアまたはファームウェア、或いは、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、インテル（登録商標）アーキテクチャ３２ビット（ＩＡ−３２）実行可能コード、インテル（登録商標）アーキテクチャ６４ビット（ＩＡ−６４）実行可能コードといったプログラミング言語で書かれるソフトウェア命令のコレクションで具現化されうるプログラミング論理を意味しうる。
【０００８】
図１に示す実施形態では、プラットフォーム１０２は、１つ以上のマイクロプロセッサ１０３を含む。プロセッサ１０３は、ＯＳ管理されたシーケンサ（ＯＭＳ）１１０およびアプリケーション管理されたシーケンサ（ＡＭＳ）１１２を含む。一般的に、ＯＭＳ１１０は、オペレーティングシステム１０４用のスレッドと、アプリケーション１０６用のスレッドを処理するプロセッサまたはプロセッサ１０３の一部であり、ＡＭＳ１１２は、アプリケーション１０６用のスレッドを処理するプロセッサまたはプロセッサ１０３の一部である。このＯＭＳとＡＭＳ間の機能上の分割は、図１の破線矢印により示す。システム内のすべてのプロセッサがオペレーティングシステムとインタラクトする従来のコンピュータシステムとは異なり、図１の実施形態では、各シーケンサ１１０および１１２は、それぞれの実行領域、すなわち、ＯＳまたはアプリケーションに必要とされる秘密命令および秘密データを使用する。単に分離されたシステムでは、オペレーティングシステムは、ＡＭＳはアプリケーションスレッドだけの実行専用であるので、ＡＭＳの存在を認識しない。しかし、このような分離のタイプは、アプリケーションコードおよびＡＭＳアクティビティが任意のオペレーティングシステムコールと関係しない場合にだけ満足に動作する。実際には、システムは、例外を発生させる、ファイルを開く、または任意の同様のタイプのシステムコールといったオペレーティングシステムとインタラクトする動作を、ＡＭＳまたはＯＭＳのいずれかが実行する時を検出できることが必要である。
【０００９】
一実施形態では、プラットフォーム１０２は、シーケンサ１１０および１１２と、ＯＳ１０４およびアプリケーション１０６実行領域との間に存在し、シーケンサ間の通信を調整するＯＭＳ−ＡＭＳインタフェースとして効果的に動作するソフトウェアレイヤ１０８を含む。ソフトウェアレイヤ１０８は、ユーザレベルシーケンサ管理および制御をサポートするＭＩＭＤ拡張のエミュレーションを可能にする汎用および軽量フレームワークを表す。
【００１０】
プラットフォーム１０２はインテル（登録商標）Ｉｔａｎｉｕｍ（登録商標）プロセッサまたは同様のＩＡ−６４アーキテクチャに基づいている実施形態では、ＯＭＳ−ＡＭＳインタフェースレイヤ１０８は、プロセッサアブストラクションレイヤ（ＰＡＬ）の一部として実施できる。コードレイヤ１０８へのエントリ後、汎用レジスタおよび述語レジスタといった少数のレジスタは、一部のレジスタを使えるようにするために一時メモリ空間に保存される。これらのレジスタは、コードレイヤから抜け出す時に、回復される。一般的に、ＰＡＬは、Ｉｔａｎｉｕｍ（登録商標）プロセッサファミリーの複数の実施にわたってＯＳに対して一貫したプロセッサインタフェースを保持する。カーネル特権レベル（リング０）において実行し、ＰＡＬファームウェアは基本的に２つのコンポーネント、すなわち、ＯＳに露出されるプロセッサ機能のステータスおよび制御を供給するサービス手順のセットと、プロセッサハードウェアイベントを観察しまたプロセッサハードウェアイベントに応答する、ＯＳトランスペアレントハードウェアイベントハンドラのアンサンブルから構成される。プロセッサ１０３は、様々なハードウェアイベントを観察しそれらのイベントに反応するようＰＡＬレイヤ１０８のプログラマブルデバッギングハードウェアサポートを含みうる。さらに、Ｉｔａｎｉｕｍ（登録商標）アーキテクチャは、多数のプロセッサイベントの発生を追跡するよう性能モニタリングユニット（ＰＭＵ）インタフェースのセットを定義する。ＰＡＬレイヤは、特定のイベントを計数し、各カウンタオーバフロー状態をハードウェアブレークポイントイベントに関連付けるようＰＭＵをプログラムすることができる。実施形態は、ＯＭＳ−ＡＭＳインタフェースレイヤ１０８の実施としてＰＡＬに関連して説明されうるが、インタフェース１０８は、ファームウェア、マイクロコード、ＶＭＭ（仮想マシンモニタ）、オペレーティングシステムサポート、または任意のマイクロプロセッサプラットフォームアーキテクチャの同様のコンポーネントの任意のレイヤでありうることに留意されたい。
【００１１】
一実施形態では、ＰＡＬレイヤ１０８は、カスタムドライバをロードすることによって初めにインストールされるコードパッチである。このドライバは、必要不可欠なメモリを割り当て、ＯＭＳ１１０上の特権ステートを初期化し、ＡＭＳ１１２といった残りのＯＳ不可視のシーケンサを提示し、初期化する。ドライバはさらに、ＯＭＳ１１０およびＡＭＳ１１２の両方の永続データ保存に使用するための非ページメモリを割り当てる。図１に示すように、プラットフォーム１０２は、メモリ１０１を含む。永続保存に使用されるメモリタイプは４つあり、それらのうちの一部は、物理ＣＰＵごとに割り当てられ、また、ドライバにより割り当てられ、それらのうちの一部は、スレッドごとに割り当てられ、また、ＯＳにより割り当てられる。これらのメモリ領域は以下の通りである。すなわち、（１）プロセッサグローバルメモリ領域−各シーケンサグループ（ＯＭＳおよびその関連付けられるＡＭＳ）において、すべてのシーケンサがこの領域を共有し、また、このメモリは、ドライバにより割り当てられる。（２）プロセッサローカルメモリ領域−各プロセッサ（ＯＭＳまたはＡＭＳ）に対して非公開であり、ドライバにより割り当てられる。（３）スレッドグローバルメモリ領域−１つのシーケンサグループにおける各プロセッサは、ＯＳによってＯＭＳに現在予定されるスレッドに固有のこのステートへのアクセスを有し、このメモリは、スレッド作成時にＯＳにより割り当てられ、スレッド破壊時に破棄される。（４）スレッドローカルメモリ領域−スレッド固有のデータについて現在のプロセッサ（ＯＭＳまたはＡＭＳ）に対して非公開であり、このメモリは、スレッド作成時にＯＳにより割り当てられ、スレッド破壊時に破棄される。
【００１２】
ドライバにより割り当てられるメモリは、ＰＡＬコードパスインストール時に割り当てられる。これらのメモリ領域は、一回だけ割り当てられ、ドライバがアンロードされるまで存続する。各シーケンサ１１０および１１２は、これらの領域に対するポインタを保持しなければならない。これらのポインタは、ポインタが保存されない場合には使用されないレジスタ内に保存することができるか、または、各ポインタのアドレスが、ＰＡＬハンドラのエントリコード内に組み込みされて、適切なポインタが、ＰＡＬコードをエントリするシーケンサの識別子に基づいてレジスタ内にロードされる。或いは、各シーケンサは、異なるＰＡＬコードエントリポイントを有することができ、実行されたコードのシーケンスは、適切なポインタを、シーケンサ管理のための共通ＰＡＬコードにジャンプする前に、レジスタ内にロードできる。
【００１３】
初期化された後には、すべてのＯＭＳシーケンサ１１０およびＡＭＳシーケンサ１１２には、それぞれのシーケンサグループに関連付けられるシーケンサグローバル領域に対するポインタと、それぞれの秘密プロセッサローカルメモリ領域に対するポインタとがインストールされ、一般的に、これらのポインタは変更されない。スレッドグローバルポインタおよびスレッドローカルポインタは、アプリケーションがそのシーケンサグループのＯＭＳに現在予定されている場合にだけ有効である。スレッドがＯＭＳ上にコンテキスト回復されると常に、スレッドグローバル領域およびスレッドローカル領域のアドレスは、ＯＳに挿入されている特殊コマンドを介してＰＡＬコードに供給される。次にＯＭＳ１１０は、この情報を、そのシーケンサグループにあるＡＭＳ１１２に伝達する。
【００１４】
これらのメモリ領域へのアクセスは成功しなければならない、すなわち、これらのアクセスは、フォルトを発生してはならないので、これらのメモリ領域は、物理モードでアクセスされるか、または、仮想モードでアクセスされる場合には、それらのアドレストランスレーションはＴＬＢ（トランスレーションルックアサイドバッファ）内にピン留めされるべきである。この要件は幾つかの方法によって満たすことができる。ＰＡＬインストール時に、大きいメモリブロックが割り当てられることができ、また、各プロセッサ上にインストールされるＴＲ（トランスレーションレジスタ）は、このメモリブロックに対してトランスレーションを与える。次に、異なるグローバルおよびローカルメモリ領域が、この大きいブロックからの異なるチャンクとして与えられる。第２のソリューションは、ＯＳカーネルのピン留め領域におけるメモリのチャンクを識別することであって、このメモリのチャンクは、これ以外には使用されない。次にこのピン留めＴＲエントリは、各ＡＭＳ上にインストールされる。
【００１５】
一実施形態では、ＯＭＳシーケンサ１１０およびＡＭＳシーケンサ１１２は、幾つかの所定のイベント、たとえば、（１）ＭＩＭＤサポートのためにエミュレートされなければならない命令の実行、（２）別のプロセッサからのプロセッサ間割り込み（ＩＰＩ）信号の受信、および（３）リング移行イベントの検出、に応答してＰＡＬレイヤを呼び出しする。シーケンサがそのＰＡＬコードエントリポイントにジャンプするとき、シーケンサはコードが呼び出しされた理由と適切な応答を決定するためにそのステートを検査する。一部の場合では、この理由の決定は、永続ステートの検査を必要としうる。たとえば、ＰＡＬコードが、１つの特権レベルから別の特権レベル（たとえば、リング０からリング３）にＯＭＳが戻る結果として呼び出しされた場合、ＯＭＳが現在プロキシリクエストを処理しているか否かを決定しなければならない。プロセッサは一般的に、特定の呼び出しにおいてそのＰＡＬコードにおいてほとんど時間をかけない。ＡＭＳ１１２がその中断ステートに入る場合は例外である。この間、ＡＭＳ１１２は、外部信号によって再開されるまでハンドラ内の中断ループを回る。
【００１６】
上述および後述する説明は、特定のレジスタ、ポインタ、命令などに言及しうるが、実施形態は、特定のレジスタまたはマイクロプロセッサアーキテクチャに限定されず、また、同様の構造、コンポーネント、命令、またはそれらの等価物を使用することができることに留意されたい。
【００１７】
一実施形態では、ＯＭＳシーケンサ１１０とＡＭＳシーケンサ１１２間の通信は、プロセッサ間割り込み（ＩＰＩ）構造を使用して実施される。そのような割り込み信号は、ＰＭＩ（Platform Management Interrupts：プラットフォーム管理割り込み）信号、ＮＭＩ（Non-maskable interrupts：マスク不可割り込み）信号、および外部割込み信号を含みうる。最初に電源がオンにされるときに、シーケンサでは、初期ブートを実行し、最終的に、ＯＳによってブートされ続けることを待機するアイドルループにジャンプするために幾つかのステップが行われる。一般的に、ＡＭＳ１１２は、ＯＳによって初期化されず、したがって、ＡＭＳの初期制御は、ＡＭＳを初期化するために得られなければならず、また、ＰＭＩ  ＩＰＩタイプの割り込みを使用して得ることができる。ＰＭＩ  ＩＰＩがシーケンサにより受信されると、シーケンサは、レジスタ（たとえば、ＸＰＮ＿ＰＭＩレジスタ）内に指定される物理アドレスにジャンプし、また、命令実行は、物理モードで実行されるデータおよび命令の両方へのアクセスとともに続けられる。シーケンサは、ＸＰＮ＿ＰＭＩレジスタ内に示されるターゲットアドレスを変更することによって異なるロケーションにジャンプするようにされることもできる。或いは、デフォルトターゲットアドレスにおけるコードは、代わりに、ＭＩＭＤエミュレーションに使用されるＰＡＬコードレイヤへのジャンプをもたらすようパッチ当てされうる。したがって、デフォルトＸＰＮ＿ＰＭＩターゲットにおけるコードは、ターゲットＡＭＳの初期化を実行するコードへのジャンプをもたらすよう変更され、次にＰＭＩ  ＩＰＩがＡＭＳ１１２、またはシステムにおける各ＡＭＳに送信される。
【００１８】
使用可能なＰＭＩベクタの数は限られるので、特定のＩＰＩによって意図されるメッセージを区別するために更なる情報が必要となりうる。様々なタイプ間の区別は、ＰＭＩベクタと、メモリバックアップされるメッセージ指示子（たとえば、ターゲットＡＭＳのプロセッサローカル領域内に保存される）の組み合わせを使用してすることができる。指示子も、ＩＰＩが受信されると検査される。このアプローチでは、ＩＰＩは、汎用ＩＰＩベクタ上でシーケンサに供給される。次に、プロセッサは、メッセージタイプおよびパラメータを含む通信についての更なる詳細を決定するために所定のメモリロケーションを検査する。任意選択的に、ヌルまたは無効値がそのロケーションから読出しされる場合、ＩＰＩは、提案されるフレームワーク外で生成され、制御は代わりにオリジナルのデフォルトＰＭＩハンドラに転送されるべきであると判断できる。シーケンサ１１０と１１２間で送信することのできるメッセージタイプは幾つかある。一部の例として、ＰＡＵＳＥ（中断）、ＲＥＳＵＭＥ（再開）、ＰＲＯＸＹ＿ＲＥＱＵＥＳＴ（プロキシリクエスト）、ＳＡＶＥ＿ＣＯＮＴＥＸＴ（コンテキスト保存）、ＲＥＳＴＯＲＥ＿ＣＯＮＴＥＸＴ（コンテキスト回復）、およびＩＮＩＴＩＡＬＩＺＥ（初期化）が挙げられる。
【００１９】
プロキシ実行処理を可能にし、また、ＯＭＳ１１０がカーネル内で実行しているときにはＡＭＳ１１２が実行し続けることを阻止することによって正しい処理を保証するために、ＯＭＳ１１０およびＡＭＳ１１２の両方に対してすべてのＣＰＬ（現在の特権レベル）移行が捕捉されることが必要である。一般的に、ＣＰＬ移行は、リング３からリング０への移行、また、リング０からリング３への移行を含む。
【００２０】
一実施形態では、システム１０２は、リング３からリング０への移行を検出および捕捉する３つの可能な方法のうち少なくとも１つを使用することができる。第１の方法は、割り込みベクタテーブル（ＩＶＡ）インターセプトを使用することを含む。ここでは、シーケンサは、リング０に、フォルトを介して移行する。フォルトが発生すると、シーケンサは、ＩＶＡレジスタ内に指定される割り込みベクタテーブルのアドレスにジャンプし、また、テーブルはフォルトベクタの別個のハンドラから構成される。リング３からリング０へのリング移行を捕捉するために、ＩＶＡは、初期化時にドライバによりインストールされるフォルトインターセプトレイヤを指すよう変更される。したがって、フォルトが発生すると常に、制御は最初に、試みられたリング移行を処理するのに必要ないかなる作業を実行するダミーテーブルに転送される。ＡＭＳ１１２がフォルトを発生すると、ダミーテーブルはフォルトを処理するようプロキシリクエストを出す。ＯＭＳ１１０がフォルトを発生すると、ＯＭＳ１１０は最初に、実際のＯＳ管理される割り込みベクタテーブルにジャンプする前にすべてのＡＭＳ処理を中断する。
【００２１】
リング３からリング０への移行を検出する第２の方法は、オペコードマッチデバッグ機能を使用するｅｐｃ（enter privileged code：特権コードに入る）命令の実行を介する。この命令のオペコードが一致する場合、制御は、ＰＡＬコード１０８に転送される。ＡＭＳがｅｐｃ命令を実行する場合、プロキシリクエストが出される。ＯＭＳがこの命令を実行する場合、すべてのＡＭＳ処理は最初に中断され、次に、ＯＭＳはＯＳサービスのカーネルにジャンプする。
【００２２】
リング３からリング０への移行を検出する第３の方法は、命令ブレークポイントメカニズムの実行を介する。ＯＳ命令およびデータが別個のメモリ領域内におかれる実施形態では、デバッグ命令ブレークポイントメカニズムは、リング０における実行を識別するよう使用されうる。命令ブレークポイントはインストールされることができ、適切なメモリ領域内での命令の任意の実行をモニタリングし、これが発生すると、ＰＡＬコードへの制御転送をトリガする。或いは、ＯＳカーネルのアドレストランスレーションは一般的にＴＲ内にピン留めされるので、このＴＲによって翻訳されるアクセスのモニタリングも使用できる。なお、このメカニズムはさらに、一部の変更とともに、その制御はリング３に戻ったことを識別するよう使用されうる。
【００２３】
同様に、一実施形態では、システム１０２は、リング０からリング３への移行を検出および捕捉する３つの可能な方法のうち少なくとも１つを使用することができる。第１の方法は、Ｉｔａｎｉｕｍ（登録商標）アーキテクチャに定義されるように、ステータスとコントロールフラグの混合を含むプロセッサステータスレジスタ（ＰＳＲ）を使用することを含む。複数のビットのうちの１つのビット、すなわち、シングルステップ（ＰＳＲ．ｓｓ）イネーブルは、セットされると、１つの命令の実行が無事に完了した後に続くトラップを実行する。このビットは通常、デバッガによるシングルステップオペレーションをイネーブルするよう使用される。カーネルへのエントリ後、ＰＳＲのｓｓビットは、割り込みされたリング３ステート（ＩＰＳＲ）においてセットされる。割り込み処理の完了後、リング３ステートは、以前にセットされたＰＳＲ．ｓｓビットを使用して回復される。１つのリング３命令の実行は、リング３命令によりトリガされたすべての割り込み処理が完了したことを保証する。リング３命令の実行後、シングルステップトラップが発生し、これは次に、トラップ信号をＰＡＬハンドラにリダイレクトし、したがって、カーネルの出口パスを効果的に捕捉する。シングルステップフォルトの発生は、ダミーフォルトインターセプトレイヤを介してシングルステップフォルトベクタをインターセプトすることによって、または、直接制御にシングルステップフォルトをリダイレクトすることによって検出することができる。
【００２４】
リング０からリング３への移行を検出する第２の方法は、ＰＭＵオーバフローメカニズムの使用を介する。リング０への最初の移行がＰＡＬレイヤにより検出されると、利用可能なＰＭＵは、一部のイベント（たとえば、リタイアした命令またはサイクル）の発生を計数するがこのイベントはリング３においてだけ計数されるよう限定するようプログラムされることができる。制御が後にリング３に戻るとき、このＰＭＵは、ターゲットイベントを計数する。計数器がオーバフローすると、制御は、リング３に戻る移行が発生したことを検出するＯＭＳ−ＡＭＳインタフェースレイヤ１０８にリダイレクトされる。この制御転送は、ＩＶＡインターセプトレイヤにおけるＰＭＵオーバフローベクタをインターセプトすることによって、または、直接制御にこのオーバフローイベントをダイレクトすることによって実行されることができる。
【００２５】
リング０からリング３への移行を検出する第３の方法は、オーバライドリターンアドレスを介する。リング０への最初の移行がＰＡＬレイヤ１０８により検出されると、このリング移行のためのリターンアドレスは、代替のリターンアドレスに制御をダイレクトするよう保存および変更できるポインタ内に保存される。特に、適切な命令の実行後、制御は、ＰＡＬレイヤにダイレクトされることができる。これが起きると、リング移行が検出される。リング移行の性質に依存して、複数のリターンアドレスターゲットを用いうる。
【００２６】
ＯＭＳ１１２はリング３に戻ったことが検出されると、ＯＭＳがプロキシイベントを処理している場合は、プロキシの終了が信号で伝えられる。プロキシを処理していない場合は、その関連付けられるＡＭＳ処理が再開される。ＡＭＳ１１２は、リング０において任意のＯＳコードを実行しないので、リング３に「戻った」ことを検出する機会はない。
【００２７】
図２は、一実施形態による、ＯＭＳ−ＡＭＳインタフェースシステムにおけるリング移行を検出および処理する全体のプロセスをまとめたフローチャートである。プロセスは、工程２０２において、上述した複数の方法のうちの１つを使用することによる、リング３からリング０への移行またはリング０からリング３への移行でありうるＣＰＬ移行の検出で開始する。工程２０４において、移行は、ＯＭＳ１１０またはＡＭＳ１１２からであるか判断される。ＡＭＳ１１２からである場合、工程２０６においてＡＭＳからのリング移行が検出され、次に工程２０８においてプロキシリクエストが出される。工程２０４において、移行はＯＭＳ１１０からであると判断される場合、プロセスは次に、工程２１０においてプロセスはモニタリングされたスレッドであるか否かを判断する。モニタリングされたスレッドではない場合、工程２１２において、ＯＭＳ１１０は真の割り込みベクタテーブルにジャンプする。モニタリングされたスレッドである場合、ＯＭＳは、中断命令または等価物によってＡＭＳ１１２を中断させ、確認応答を待つ。確認応答を受信後、ＡＭＳは、工程２１６に示すように、オペレーティングシステムにジャンプする。
【００２８】
図２に示すように、リング移行がＯＭＳによる場合、割り込みベクタテーブル（ＩＶＴ）が使用される。図３は、一実施形態による、フォルトがＯＭＳ上で発生した場合に関連付けられるリング移行を検出する方法を説明するフロー図である。ＯＭＳ３０４およびＡＭＳ３０６のインスタンスは、図３において、ともにターゲットアプリケーション３０２を実行するとして示す。フォルトがＯＭＳ３０４上で発生すると、制御は、ＩＶＡレジスタ内に与えられるターゲットにすぐに転送される。このレジスタは、初期化時にドライバによりインストールされる特殊フォルトインターセプトレイヤ３０８を指すよう変更されている実施形態では、ＰＡＬコード１０８は、図３に移行３２１により示すように、リング０への移行の試みを検出する。フォルトインターセプトレイヤ３０８は最初に、移行３２２により示すようにＰＡＬコードハンドラ３１０の呼び出しを介してすべてのＡＭＳ３０６処理を中断し、次に、移行３２３により示すようにＯＳカーネル３１２内にインストールされているオリジナルのＩＶＴ３１４にジャンプするよう進む。このことは、ＯＳカーネル３１２が制御を行い、フォルトを処理することを可能にする。終了すると、ＯＳカーネルは、適切な命令によってＡＭＳ３０６を介するアプリケーションに戻る。たとえば、ＰＳＲ．ｓｓビットの使用といった上述した複数のメカニズムの１つによって、リング３に戻る移行は検出され、また、移行３２４により示すようにインストールされたＰＡＬコードは再度呼び出しされる。次にプロセスは、ＡＭＳ３０６を再開し、最終的にユーザプログラムに戻り、移行３２５に示すように続行するための実行が可能にされる。
【００２９】
Ｉｔａｎｉｕｍ（登録商標）といったＩＡ−６４プロセッサを使用してシステムが実施される一実施形態において、新しいプロセッサ命令が定義される。ｓｘｆｒと呼ばれるこの新しい命令は、使用可能なＡＭＳ上で実行される作業をＯＭＳが分岐することを可能にする。このような命令は、ＭＩＭＤ  ＩＳＡ（命令セットアーキテクチャ）拡張の一部としてエミュレートされうる。本実施形態によるＭＩＭＤ  ＩＳＡ拡張を実施するシステムは、新しいＩＳＡ命令を一意に復号化して、それらを各アーキテクチャセマンティクスにしたがって実行しなければならない。Ｉｔａｎｉｕｍ（登録商標）アーキテクチャでは、ＰＭＵメカニズムは、オペコードマッチレジスタと称するユーティリティを供給する。これは、ＰＡＬが、インフライト命令の最中に任意の特殊オペコード符号化を認識およびトラップするようデバッグハードウェアをプログラムすることを可能にする。インフライト命令がオペコードマッチレジスタ内に指定されるオペコード値と一致することが分かると、その命令にはタグが付けられる。パイプラインの下流に移動するにしたがって、そのタグ付き命令は、任意のバックエンドイベントに適しているか否かさらに試験される。リタイアメントの直前の例外検出段階において、タグ付き命令は、ハードウェアブレークポイントイベントをトリガし、そして、制御を対応するＰＡＬイベントハンドラに直接転送する。ＰＡＬイベントハンドラは、命令セマンティクスをエミュレートすることができる。
【００３０】
Ｉｔａｎｉｕｍ（登録商標）アーキテクチャでは、ｎｏ−ｏｐ（ノーオペレーション）命令は２１ビット即値フィールドで定義され、これは、アプリケーションソフトウェアによって注釈マーカとして潜在的に使用されうる。一般的な適用性を失うことなく、一意のリテラル値を使用するｎｏ−ｏｐ命令符号化は、追加命令の代わりとなるよう取っておかれ、スクラッチレジスタは、どの新しい命令が示されたのかを一意に指定するよう割り当てられる。制御が、特殊ｎｏ−ｏｐの実行が検出された後にＰＡＬハンドラに転送されると、スクラッチレジスタは読出しされ、対応するセマンティクスが実行される。
【００３１】
図４は、一実施形態による、プロセッサ命令をエミュレートする、または、ＯＭＳ−ＡＭＳインタフェース機能を実行する手順を説明するフロー図である。図４に示すように、ＯＭＳ４０４上でのシュレッド実行（shred executing）は、ＳＸＦＲコマンドのセンチネル値をスクラッチレジスタ（たとえば、ｒ９）内に移動することによりＰＡＬエミュレーションをトリガし、次に特殊ＮＯＰコマンドを実行する（工程４１０）。これが発生すると、移行４２１により示すように、ＰＡＬコードへの制御転送が開始される。ＰＡＬコードハンドラ４０８は、スクラッチレジスタを検査し、エミュレートされるリクエストされたコマンド（ＳＸＦＲ）を決定し、移行４２３により示すように適切な入力値を使用してＡＭＳ４０６に信号で伝えることによりこのオペレーションを実行する。次に、ＯＭＳ４０４は、ＰＡＬコード４０８を出てユーザプログラムに戻り（移行４２２）、命令ポインタを特殊ＮＯＰに続く命令に進める。ＩＰＩを処理するための手順も同様に行われるが、命令ポインタは、ユーザプログラムに戻る前に進められない。一実施形態において、命令エミュレーションは、任意のオペレーティングシステムの介入または知識なしで実行することができる。
【００３２】
一実施形態では、ＯＭＳ−ＡＭＳインタフェースレイヤ１０８は、ＯＭＳ１１０とＡＭＳ１１２間でＴＬＢ（トランスレーションルックアサイドバッファ）の一貫性を保持するメカニズムを含む。これは、ＡＭＳがＯＭＳサービスを選択的に呼び出しすることを可能にする機能を追加する。一般的に、ＴＬＢは、プロセッサが最近にアクセスしたメモリ内のページについての情報を含む、メモリ内で保持されるテーブルである。ＴＬＢは、プログラムが最近使用した物理メモリ内の対応絶対アドレスを使用してプログラムの仮想アドレスを相互参照する。Ｉｔａｎｉｕｍ（登録商標）プロセッサでは、トランスレーション・リックアサイド・バッファは、ソフトウェアにより管理されるが、性能向上のためにハードウェアサポートされる。すなわち、オペレーティングシステムはＴＬＢエントリをプロセッサのＴＬＢ内に挿入する最終的な責任を有する一方で、ＴＬＢミスの大部分は自動的に、ハードウェアにおいて、仮想ハッシュページテーブルウォーカ（ＶＨＰＴ）を介して処理される。ＶＨＰＴは、最初にＴＬＢエントリのＯＳベースのキャッシュを検査し、要求されたエントリが見つかると、それをＴＬＢ内にトランスペアレントに挿入することによってＴＬＢミスペナルティを低減する。ＶＨＰＴウォーカがこのエントリを自動挿入することができなかった場合、フォルトが発生され、オペレーティングシステムは、ＴＬＢエントリをインストールする。
【００３３】
このスキーム下で、ＡＭＳ上で発生するＴＬＢミスの大部分は、ＶＨＰＴにより処理される。ＶＨＰＴにより処理されないミスについては、プロキシ実行リクエストが、ＴＬＢミスを処理するようトリガされる。ＡＭＳがＯＭＳにプロキシリクエストを出すと常に、ＯＭＳは、オペコードマッチング固有命令（たとえば、ｉｔｃ命令およびｐｔｃ命令）を開始する。これらは、それぞれＴＬＢエントリを挿入および消去する。ＯＭＳ上でのこれらのＴＬＢ命令のうちの１つの実行が検出されると常に、これらの命令は、ＰＡＬハンドラにおいて復号化され、また、これらのＴＬＢ命令のオペランド値は、ＩＰＩとともにＡＭＳにブロードキャストされる。そのようなＩＰＩの受信後、ＡＭＳは、要求されたオペレーションを実行する。その結果、ＯＭＳ上で実行されたものと同じＴＬＢ命令セマンティックおよびオペランド値がＡＭＳ上で再生される。
【００３４】
一般的に、このアプローチ方法は正確さを保証するが、ＴＬＢミスフォルトが一般的である作業負荷に対しては低い正確さで実行しうる。実際に、プロキシ実行は、ＡＭＳが、フォーワードプログレスを行うためにオペレーティングシステム支援を真に要求する場合（たとえば、ＡＭＳが、真のページフォルトを発生させてしまう負荷に遭遇する場合）にだけ必要である。一実施形態では、アプリケーションセーフシステムコール（Application-Safe System Call：ＡＳＣ）と呼ばれる特殊ソフトウェアハンドラが、ＯＳまたは一部の他のリング０可能なソフトウェア部によって与えられる。これは、ＡＭＳが、完全なプロキシ実行に頼る必要なくフォルトおよびシステムコールを直接処理することを可能にする。
【００３５】
ＡＳＣは、プロキシ実行フィルタとして動作する。すなわち、あるリング０サービスが必要な場合、シーケンサは最初に適切なＡＳＣを呼び出しして、必要なＯＳサービスの直接処理を試みることができる。無事に完了した場合、プロキシ実行リクエストは、完全に回避され、ＡＭＳは実行を続行する。無事に完了しない場合、エラー状態が返され、実行は、完全なプロキシ実行に戻る。ＡＳＣは、ＴＬＢミスの処理に関連して説明するが、これは、任意の他の頻繁に遭遇するシステムコールまたはフォルトにも適用することのできる一般的な技法である。
【００３６】
ＡＳＣは、プロキシ実行フィルタとして動作することにより、２通りで性能を向上する。第一に、ＡＭＳはその独自のＯＳリクエストを直接処理するので、課される追加オーバヘッドは最小限となる。たとえば、ＯＭＳは、そのステートを保存および回復するよう強制されず、またＡＭＳステートをコピーする必要もない。というのは、ＯＭＳは、ＡＭＳ上のＡＳＣ実行に対して完全に気が付かれないからである。第二に、ＡＳＣにより処理されるＯＳインタラクションは完全なシステムシリアライゼーションを強制しない。このことは、複数のＡＭＳがＯＳインタラクション（たとえば、異なるＡＭＳによる複数のＴＬＢミス）を同時に実行することを可能にする。
【００３７】
一実施形態では、ＡＳＣメカニズムは、特殊ソフトウェアＴＬＢミスハンドラを提供するよう使用される。このハンドラは、ＡＭＳ  ＴＬＢミスの大部分の条件を満たしうるが、プロキシ実行は、真のページフォルトの場合には依然として必要である。従来のプラットフォームでは、ＡＭＳがＴＬＢミスを発生すると、ＡＭＳは、通常、すぐにプロキシ実行をリクエストしうる。しかし、ＡＳＣが特殊ＴＬＢミスハンドラを提供する実施形態では、ＡＭＳは、代わりに、特別登録されたソフトウェアハンドラに最初にジャンプする。このハンドラは、ＯＳ管理されたデータ構造内をナビゲートして、ミッシングページの有効マッピングを探す。ハンドラがそのようなマッピングを見つける場合、ハンドラは、ＴＬＢエントリをハードウェアＴＬＢ内に挿入し、また、任意のプロキシ実行リクエストを完全に回避する。ハンドラが、たとえば、真のページフォルトが発生したときに、マッピングを見つけることができない場合、エラー状態が返され、完全なプロキシ実行リクエストが出される。
【００３８】
図５Ａは、一実施形態による、アプリケーションセーフシステムコールメカニズムによって無事に完了したＯＳサービスリクエストを説明する。図５Ａの実施形態では、ＯＭＳ５０２およびＡＭＳ５０４は、それぞれの処理スレッドを実行する。ＡＭＳ５０６は、ＯＳサービスが必要であることを示すリクエスト５１１を発行する。特別ＡＭＳハンドラ５０８は、ＯＳ管理されたデータ構造内をナビゲートすることによりリクエストを処理する。図５Ａは、ミッシングページの有効マッピングが見つかった場合を説明する。しかし、特定の場合には、このリクエストは完了しない場合がある。図５Ｂは、一実施形態による、アプリケーションセーフシステムコールメカニズムによって完了できなかったＯＳサービスリクエストを説明する。図５Ｂの実施形態では、ＯＭＳ５２０およびＡＭＳ５２２はそれぞれの処理スレッドを実行する。ＡＭＳ５２４は、特殊ＡＭＳハンドラ５２６に対してＯＳサービスが必要であることを示すリクエスト５３１を発行する。リクエストの条件を満たすことができなければ、ハンドラはリクエスト完了不可信号５３２を返し、ＡＭＳは次に、完全なプロキシ実行リクエスト５３３を実行する。
【００３９】
ＡＳＣは、一般的に、必要ならばアボートできる一部のシステムリクエストを安全な方法で実行できるよう設定されなければならない。しかし、ＡＳＣの様々な実施が可能である。実施形態は、ＡＳＣとして使用する安全コードを実施するための２つのメカニズムを含む。第一に、ＡＳＣは、コールバックとして実施されることができる。この場合、任意のプログラムが実行される前に、ＡＳＣは、各ターゲットイベントに対して登録され、各ＡＳＣのアドレスは、システム内の各ＡＭＳに通信される。たとえば、これは、ＰＡＬパッチがインストールされるときに行われうる。或いは、特殊なｎｏ−ｏｐを使用することができる。これは、実行されると、ＰＡＬコードに、ＡＳＣの詳細をすべてのＡＭＳにブロードキャストさせ、特定のレジスタはこの命令に必要なパラメータを供給する。プログラム実行の後期において、ＡＭＳがフォルトを発生するまたはシステムコールを行うとき、ＡＳＣはその特定のイベントに対して登録されているか否かを確認するチェックが行われる。登録されている場合は、ＡＭＳは、プロキシ実行をすぐにリクエストするのではなく、最初にＡＳＣにジャンプし実行する。実行されたＡＳＣは、たとえば、フォルトを訂正するまたはシステムコールを実行するといったＡＭＳのＯＳサービスリクエストの条件を満たすよう試みる。ＡＳＣの試みが失敗した場合、システムは、完全なプロキシ実行に戻る。
【００４０】
第２の実施形態では、ＡＳＣは、デフォルトフォルトハンドラとして実施されうる。ＯＳ内のデフォルトフォルトハンドラは、フォルトが発生する場合、ＯＭＳおよびＡＭＳの両方がＯＳにより供給されるフォルトハンドラを自由に直接呼出しするよう安全且つアボート可能な方法で実施されることができる。ＡＳＣは、たとえば、ＴＬＢミスは真のページフォルトであると検出された場合に、そのフォルトを解決するには不十分である場合、ＡＳＣの実行はアボートされ、完全なプロキシ実行が必要となる。このアプローチを使用するために、リング０インターセプトコードにある変更が加えられる。たとえば、ＩＶＴインターセプトレイヤは、特定のベクタに対して、オリジナルＯＳにより供給されたＩＶＴに直接制御が渡されるよう変更されることができる。さらに、ｅｐｃ命令を実行する試みがなされる場合、入力レジスタは、ＡＳＣにより処理されるシステムリクエストがリクエストされたか否かを判断するよう構文解析されることができる。ＡＳＣにより処理されるシステムリクエストがリクエストされる場合、リング移行は、プロキシリクエストを要求するまたは現在のアクティブＡＭＳを中断する必要なく続行することが可能にされる。
【００４１】
上述の説明は、ＡＭＳプロキシリクエストをフィルタリングするためにＡＳＣを使用することに関して取り上げたが、ＡＳＣは、ＯＭＳがオペレーティングシステムサービスを要求するときに性能を向上するよう使用することもできる。これは、ＯＭＳがリング０に移行する度に必要とされる通常のシステムシリアライゼーションを回避するので有利である。一般的に、ＯＭＳは、ＡＭＳと同様にＡＳＣを利用することができる。つまり、ＯＭＳがＴＬＢミスフォルトを発生する場合、ＡＳＣは、システムにおけるすべてのＡＭＳを中断させることなくリクエストの条件を満たそうと最初に呼び出しされる。ＡＳＣの呼び出しがリクエストの条件を満たすことができない場合、ＯＭＳはその通常のアプローチに戻る、すなわち、すべてのＡＭＳの構文解析をし、次に、真のオペレーティングシステムエントリポイントにジャンプする。
【００４２】
上述した実施形態は、ネイティブ（ハードウェアレベル）ＭＩＭＤ  ＩＳＡサポートを有するプロセッサの設計をハードウェアおよびソフトウェアサポートの組み合わせを使用して単純化することができる手段を供給するソフトウェアレイヤを説明する。ソフトウェアレイヤは、永続的なＣＰＵごとおよびスレッドごとのデータの様々なセットを含む、ＯＭＳおよびＡＭＳの両方によって実行される特権コードのセットを含む。ソフトウェアレイヤは、ＡＭＳおよびＯＭＳの両方で発生するすべてのＣＰＬ移行をインターセプトし、最初にＡＭＳを提示し、初期化することを含む、ＯＭＳとＡＭＳ間の通信を調整する。ソフトウェアレイヤはさらに、ＡＭＳについて高性能のＴＬＢミス処理を可能にし、これは、プロキシ実行からの著しいオーバヘッドを回避する。また、ＯＭＳについても高性能のＴＬＢミス処理を可能にし、これは、関連付けられるＡＭＳを中断することに関連付けられる著しいオーバヘッドを回避する。
【００４３】
説明した実施形態は、１つ以上の特定のプロセッサアーキテクチャに関連して説明したが、様々な環境に適用することができる。したがって、本実施形態は、それらを実施するのに好適な形式およびそれらへの変更に関連して説明したが、当業者は、多くの他の変更を、請求項の範囲内で行いうることを理解するであろう。したがって、説明した実施形態の範囲は、上の説明により限定されることを意図せず、むしろ、請求項を参照することにより完全に決定される。
【００４４】
説明の目的として、「プロセッサ」または「ＣＰＵ」という用語は、命令のシーケンスを実行できる任意の機械であり、以下に限定されないが、汎用マイクロプロセッサ、特殊用途向けマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マルチメディアコントローラ、デジタル信号プロセッサ、およびマイクロコントローラなどを含むと解釈すべきである。
【００４５】
図１に示すシステムに関連付けられるメモリは、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、および／またはダブルデータレート（ＤＤＲ）ＳＤＲＡＭまたはＤＲＡＭ、および、読出し専用メモリ（ＲＯＭ）などの不揮発性メモリといったデジタル情報を保存するよう適応される様々なタイプのメモリデバイスにおいて具現化されうる。また、メモリデバイスは、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、光学ディスクドライブなど、および適切なインタフェースといった他のストレージデバイスをさらに含みうる。システムは、ディスクドライブ、モニタ、キーパッド、モデム、プリンタ、または任意の他のタイプのＩ／ＯデバイスといったＩ／Ｏデバイスとインタフェースする好適なインタフェースを含みうる。
【００４６】
本願に記載する方法およびシステムの複数の態様は、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）といったプログラマブル論理デバイス（「ＰＬＤ」）、プログラマブルアレイ論理（「ＰＡＬ」）デバイス、電気的プログラマブル論理およびメモリデバイス、および標準セルベースデバイス、さらに、特定用途向け集積回路を含む任意の様々な回路にプログラムされる機能として実施されうる。実施形態には、メモリを有するマイクロコントローラ（ＥＥＰＲＯＭなど）、組み込みマイクロコントローラ、ファームウェア、ソフトウェアなどを含みうる。さらに、複数の態様は、ソフトウェアベースの回路エミュレーション、個別論理（順次式または組み合わせ式）、カスタムデバイス、ファジー（ニューラル）論理、量子デバイス、およびこれらのデバイスタイプの任意のハイブリッドを有するマイクロプロセッサにおいて具現化されうる。基礎となるデバイス技術は、たとえば、相補型金属酸化膜半導体（「ＣＭＯＳ」）といった金属酸化膜半導体電界効果トランジスタ（「ＭＯＳＦＥＴ」）技術、エミッタ結合論理（「ＥＣＬ」）といったバイポーラ技術、ポリマー技術（たとえば、シリコン共役ポリマーおよび金属共役ポリマー金属構造）、混合されたアナログおよびデジタルなどの様々なコンポーネントタイプにおいて供給されうる。
【００４７】
「コンポーネント」という用語を本願において一般的に使用しているが、「コンポーネント」には、当該技術において周知である用語として、回路、コンポーネント、モジュール、および／または回路、コンポーネント、および／またはモジュールの任意の組み合わせを含むことを理解するものとする。
【００４８】
本願に開示する様々なコンポーネントおよび／または機能は、その挙動、レジスタ転送、論理コンポーネント、および／または他の特徴について、ハードウェア、ファームウェア、および／またはデータおよび／または様々な機械可読またはコンピュータ可読媒体上に具現化される命令の任意の数の組み合わせを使用して説明されうる。そのようなフォーマット化されたデータおよび／または命令がその中に具現化されうるコンピュータ可読媒体は、以下に限定されないが、様々な形式の不揮発性ストレージ媒体（たとえば、光学、磁気、または半導体ストレージ媒体）およびそのようなフォーマット化されたデータおよび／または命令をワイヤレス、光学、または有線シグナリング媒体、またはこれらの任意の組み合わせを介して転送するために使用しうる搬送波を含む。搬送波によるそのようなフォーマット化されたデータおよび／または命令の転送の例は、以下に限定されないが、インターネットおよびまたは１つ以上のデータ転送プロトコルを介する他のコンピュータネットワークを介する転送（アップロード、ダウンロード、電子メールなど）を含む。
【００４９】
コンテキストにおいて明らかにそうではないと示さない限り、明細書および請求項全体における「含む」などの用語は、排他的または網羅的な意味合いではなく包含的な意味合いで、すなわち、「以下に限定されないが、以下を含む」という意味合いで解釈すべきである。単数形および複数形で示す用語もそれぞれの複数形および単数形を含む。さらに、「本願において」、「以下において」、「上述において」、「以下」、および同様の用語は、本願全体を指すものであって、本願の特定部分を指すものではない。２つ以上の項目を含むリストを参照するときに「または」という用語を使用する場合、この用語は、以下のすべての用語解釈を対象とする。すなわち、リストにおける項目のどれでも、リストにおける項目のすべて、およびリストにおける項目の任意の組み合わせ。
【００５０】
図示する実施形態の上述の説明は、本開示によって排他的または限定的であることを意図しない。たとえば、システムおよび方法の特定の実施形態は、本願において例示目的で説明したが、当業者は認識するように様々な等価の変更が可能である。本願に提供した教示内容は、上述したシステムおよび方法だけでなく、他のシステムおよび方法にも適用しうる。上述した様々な実施形態の構成要素および動作は、更なる実施形態を提供するよう組合されうる。これらのおよび他の変更は、上述の詳細な説明を鑑みて方法およびシステムに行いうる。
【００５１】
一般的に、請求項において使用する用語は、明細書および請求項に開示する特定の実施形態に限定されると解釈すべきではないが、請求項に基づいて動作するすべてのシステムおよび方法を含むと解釈すべきである。したがって、方法およびシステムは、開示内容に限定されず、むしろ、範囲は、請求項によって完全に決定される。特定の態様は、特定の請求項形式で提示するが、発明者は、任意の数の請求項形式での様々な態様も考慮する。したがって、発明者は、他の態様のためにそのような追加の請求項形式を追求するために出願後に追加の請求項を加える権利を有する。
【図面の簡単な説明】
【００５２】
【図１】一実施形態による、ユーザレベルシーケンサ管理および制御レイヤを実施するコンピュータシステムを示すブロック図である。
【００５３】
【図２】一実施形態による、ＯＭＳ−ＡＭＳインタフェースシステムにおけるリング移行を検出および処理する全体プロセスを説明するフローチャートである。
【００５４】
【図３】一実施形態による、ＯＭＳ上で発生するフォルトに関連付けられたリング０およびリング３の両方の移行を検出する方法を説明するフロー図である。
【００５５】
【図４】一実施形態による、プロセッサ命令をエミュレートする、または、ＯＭＳ−ＡＭＳインタフェース機能を実行する手順を説明するフロー図である。
【００５６】
【図５Ａ】一実施形態による、アプリケーションセーフシステムコールメカニズムによって無事に完了したＯＳサービスリクエストを説明する図である。
【００５７】
【図５Ｂ】一実施形態による、アプリケーションセーフシステムコールメカニズムによって完了できなかったＯＳサービスリクエストを説明する図である。
【符号の説明】
【００５８】
１０１  メモリ
１０２  コンピュータ
１０３  プロセッサ
１０４  オペレーティングシステム
１０５  プラットフォームハードウェア
１０６  アプリケーション
１０８  ソフトウェアレイヤ
１１０  ＯＳ管理されるシーケンサ
１１２  アプリケーション管理されるシーケンサ
【図１】
0004978914.tif 000002
【図２】
0004978914.tif 000003
【図３】
0004978914.tif 000004
【図４】
0004978914.tif 000005
【図５Ａ】
0004978914.tif 000006
【図５Ｂ】
0004978914.tif 000007