プロセッサによって実行される方法であって、シーケンサーに一つまたは複数のスレッド制御信号を発する段階を有し、前記シーケンサーはオペレーティングシステムOSから隔離されたシーケンサーであり;前記発する段階が、ユーザー生成された命令に反応して抽象化層によって実行され、当該方法がさらに、前記隔離されたシーケンサー上での実行のサスペンドを引き起こす一組の動作を実行する段階をさらに有し、前記一組の動作が、OS可視シーケンサー上でのリング遷移に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサーを待機状態に入れる信号を含む、方法。前記抽象化層は、前記シーケンサーのハードウェアがユーザーレベルのシュレッド利用機能をサポートしていなくてもユーザーレベルのシュレッド利用機能をエミュレートするものであり、前記発する段階がさらに、OS可視スレッドにおける前記ユーザー生成された命令のOS可視シーケンサー上での実行に反応して前記抽象化層によって実行される、請求項1記載の方法。前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして命令のシーケンスの実行を開始させる信号を含む、請求項1または2記載の方法。前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして修正された命令ポインタアドレスにて命令のシーケンスの実行を開始させる信号を含む、請求項3記載の方法。前記ユーザー生成された命令が第一の命令シーケンスに含まれ、オペレーティングシステムによってスケジューリングされた該第一の命令シーケンスをある第一のシーケンサー上で実行し、並行して、前記隔離されたシーケンサー上で第二の命令シーケンスを実行する、ことをさらに含む、請求項1ないし4のうちいずれか一項記載の方法。前記隔離されたシーケンサーのための実行環境を生成する段階をさらに有する請求項1ないし5のうちいずれか一項記載の方法であって;前記生成する段階が前記抽象化層によって実行される、方法。前記スレッド制御信号がさらに:前記隔離されたシーケンサー上での実行に割り込むための信号を含む、請求項1ないし6のうちいずれか一項記載の方法。前記スレッド制御信号がさらに:割り込み信号を含む、請求項7記載の方法。OS可視シーケンサーをして、前記隔離されたシーケンサーに代わってのイベント処理ルーチンの実行をトリガーさせる一組の動作を実行する段階をさらに有する請求項1ないし8のうちいずれか一項記載の方法であって;前記一組の動作が前記抽象化層によって実行される、方法。前記実行をトリガーさせる一組の動作がさらに:前記隔離されたシーケンサーについての状態を前記OS可視シーケンサーに移すこと、を含む、請求項9記載の方法。前記サスペンドを引き起こす一組の動作がさらに:OSに透明な仕方で、前記OS可視シーケンサー上でリング遷移を追跡手段によって追跡すること、を含む、請求項1ないし10のうちいずれか一項記載の方法。前記隔離されたシーケンサー上での実行の再開を引き起こす一組の動作を実行する段階をさらに有する、請求項1ないし11のうちいずれか一項記載の方法であって;前記再開を引き起こす一組の動作が、OS可視シーケンサー上での例外処理ルーチンの完了に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサー上での実行を再開する信号を含む、方法。前記再開を引き起こす一組の動作がさらに:前記OS可視シーケンサー上のブレークポイントをクリアすること、を含む、請求項12記載の方法。複数の命令ストリームを並行して実行する複数のシーケンサーと;前記複数のシーケンサーに結合されたメモリと;前記複数のシーケンサーに結合され、前記複数のシーケンサーのうち一つまたは複数をオペレーティングシステムから隔離する抽象化層、とを有するシステムであって、前記抽象化層がさらに、前記隔離されたシーケンサーのうち一つまたは複数の上の前記命令ストリームの一つまたは複数の実行を制御し、前記抽象化層がさらに、前記隔離されたシーケンサーのうち少なくとも一つをして、オペレーティングシステムのリング0動作の間、動作をサスペンドさせるための遷移検出モジュールを含み、前記隔離されたシーケンサーが待機状態に入れられる、システム。前記複数のシーケンサーの少なくとも一つが、他のシーケンサーのうち一つまたは複数に対してコンピューティング面で非対称的である、請求項14記載のシステム。前記メモリがDRAMである、請求項14または15記載のシステム。前記抽象化層がさらに、前記一つまたは複数のシーケンサーを隔離するためのシーケンサー隔離モジュールを含む、請求項14ないし16のうちいずれか一項記載のシステム。前記抽象化層がさらに、前記隔離されたシーケンサーのためにオペレーティングシステムサービスを呼び出すためのプロキシ実行モジュールを含む、請求項14ないし17のうちいずれか一項記載のシステム。前記抽象化層がさらに、前記複数のシーケンサーのうち少なくとも二つの間の信号伝達を提供するためのシーケンサー算術モジュールを含む、請求項14ないし18のうちいずれか一項記載のシステム。前記抽象化層がさらに、前記隔離されたシーケンサーのうち少なくとも一つをして、オペレーティングシステムのリング0動作のあと、動作を再開させるための遷移検出モジュールを含む、請求項14ないし19のうちいずれか一項記載のシステム。前記抽象化層のための命令が前記メモリに含まれる、請求項14ないし20のうちいずれか一項記載のシステム。前記メモリが、前記抽象化層のゲストとしてオペレーティングシステムを走らせるための命令を含む、請求項14ないし21のうちいずれか一項記載のシステム。抽象化層のための複数の機械アクセス可能命令を記憶している機械アクセス可能媒体であって、前記命令がプロセッサによって実行されたときに、前記命令は:シーケンサーに一つまたは複数のスレッド制御信号を発する動作を提供し、ここで、前記シーケンサーはオペレーティングシステムOSから隔離されたシーケンサーであり;前記発する動作のための前記命令が、ユーザー生成された命令に反応して前記抽象化層によって実行され、前記抽象化層のための命令がさらに、前記隔離されたシーケンサー上での実行のサスペンドを引き起こす一組の動作を実行する動作を提供し、前記一組の動作が、OS可視シーケンサー上でのリング遷移に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサーを待機状態に入れる信号を含む、機械アクセス可能媒体。前記発する動作のための前記命令がさらに、OS可視スレッドにおける前記ユーザー生成された命令のOS可視シーケンサー上での実行に反応して前記抽象化層によって実行される、請求項23記載の機械アクセス可能媒体。前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして命令のシーケンスの実行を開始させる信号を含む、請求項23または24記載の機械アクセス可能媒体。前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして修正された命令ポインタアドレスにて命令のシーケンスの実行を開始させる信号を含む、請求項23ないし25のうちいずれか一項記載の機械アクセス可能媒体。前記プロセッサがさらに:前記ユーザー生成された命令を含み、オペレーティングシステムによってスケジューリングされた該第一の命令シーケンスを、ある第一のシーケンサー上で実行し、並行して、前記隔離されたシーケンサー上で第二の命令シーケンスを実行する、請求項23ないし26のうちいずれか一項記載の機械アクセス可能媒体。前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:前記隔離されたシーケンサーのための実行環境を生成する動作を提供する命令を含む、請求項23ないし27のうちいずれか一項記載の機械アクセス可能媒体。前記スレッド制御信号がさらに:前記隔離されたシーケンサー上での実行に割り込むための信号を含む、請求項23ないし28のうちいずれか一項記載の機械アクセス可能媒体。前記スレッド制御信号がさらに:割り込み信号を含む、請求項29記載の機械アクセス可能媒体。前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:OS可視シーケンサーをして、前記隔離されたシーケンサーに代わってのイベント処理ルーチンの実行をトリガーさせる一組の動作を実行する動作を提供する、請求項23ないし30のうちいずれか一項記載の機械アクセス可能媒体。前記一組の動作がさらに:前記隔離されたシーケンサーについての状態を前記OS可視シーケンサーに移すこと、を含む、請求項31記載の機械アクセス可能媒体。前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:前記隔離されたシーケンサー上での実行のサスペンドを引き起こす一組の動作を実行する動作を提供する、請求項23ないし32のうちいずれか一項記載の機械アクセス可能媒体であって;前記一組の動作が、OS可視シーケンサー上でのリング遷移に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサーを待機状態に入れる信号を含む、機械アクセス可能媒体。前記一組の動作がさらに:前記OS可視シーケンサー上にブレークポイントを設定すること、を含む、請求項33記載の機械アクセス可能媒体。前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:前記隔離されたシーケンサー上での実行の再開を引き起こす一組の動作を実行する動作を提供する、請求項23ないし34のうちいずれか一項記載の機械アクセス可能媒体であって;前記一組の動作が、OS可視シーケンサー上での例外処理ルーチンの完了に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサー上での実行を再開する信号を含む、機械アクセス可能媒体。前記一組の動作がさらに:前記OS可視シーケンサー上のブレークポイントをクリアすること、を含む、請求項35記載の機械アクセス可能媒体。請求項11記載の方法であって、前記追跡することがさらに:前記OS可視シーケンサーのためのブレークポイントを設定することを含む、方法。SMT、SMPおよび/またはCMPシステムのような複数ソフトウェアスレッドの同時並行的な実行をサポートするシステムのために、ソフトウェアスレッドのスケジューリングおよび実行をオペレーティングシステムOSアプリケーションが制御しうる。しかし、典型的には、オペレーティングシステム制御はスケーリングがよくなく、オペレーティングシステムアプリケーションがパフォーマンスに負の影響なしにスレッドをスケジューリングする能力は、普通には、比較的少数のスレッドに限定される。本発明の諸実施形態は図面を参照しつつ理解されうる。図面では、同様の要素は同様の数字で示される。図面は限定することを意図されてはおらず、OS隔離されたシーケンサー上でユーザーレベルのシュレッド制御がOS透明な抽象化層を介して提供されるマルチシーケンサーシステム上でユーザーレベルのマルチスレッド化を実行する装置、システムおよび方法の選ばれた実施形態を解説するために与えられるものである。以下の議論は、マルチシーケンサーマルチスレッドシステムにおいてユーザーレベルのアプリケーションプログラムがOS独立な実行スレッドシュレッドshredと称されるを生成および制御することを許容する方法、システムおよび機構の選ばれた実施形態を記載する。ユーザーレベルのシュレッドは、完全なオペレーティングシステム透明性をもって生成、スケジューリングおよび実行される。開示される技法が実行されるマルチシーケンサーシステムのハードウェアは、必ずしもアーキテクチャ上のシュレッド制御命令をサポートしない。むしろ、そのような機能性はOS透明なソフトウェアまたはファームウェアのエミュレーション層を通じて提供されうる。ここに記載される機構は単一コアまたはマルチコアのマルチスレッドシステムで利用されうる。以下の記述では、本発明のより完全なる理解を提供するために、プロセッサの種類、マルチスレッド環境、システム構成、マルチシーケンサーシステムにおけるシーケンサーの数およびトポロジー、マイクロアーキテクチャ構造および命令命名体系ならびにパラメータといった数多くの個別的な詳細が述べられている。しかしながら、そうした個別的な詳細なしでも本発明が実施されうることは当業者によって理解されるであろう。さらに、いくつかのよく知られた構造、回路などは、本発明を無用に埋没させるのを避けるために詳しく示していない。下記で論じる図1および図2は、ユーザー制御されるシュレッドを含む共有メモリマルチプロセッシングパラダイムを示している。シュレッドとは、オペレーティングシステムのビューおよび制御から隔離されているシーケンサー上で実行される命令シーケンスである。そのようなOS隔離シーケンサーは時にOS不可視シーケンサーと称される。図3および図15は、そのようなパラダイムが実装されうるプロセッサおよび/またはシステムの見本実施形態を示している。図4は一般的に、シーケンサーのハードウェアがアーキテクチャ上のシュレッド利用命令をサポートしないマルチシーケンサーシステム上でユーザーレベルのシュレッド利用機能を提供しうる、シュレッド化エミュレーション層と称される抽象化層の少なくとも一つの実施形態を示している。最後に、図5ないし図14はシュレッド化エミュレーション層のための個別的な方法およびシステムの実施形態を示している。共有メモリマルチプロセッシングパラダイムが、並列プログラミングと称されるアプローチにおいて使用されうる。このアプローチによれば、アプリケーションのプログラマは、ソフトウェアプログラムについて並列を表現するために、ソフトウェアプログラムアプリケーションまたはプロセスと称されることもあるを同時並行して実行される複数のタスクに分割しうる。同じソフトウェアプログラムプロセスのすべてのスレッドは、メモリについて共通の論理的なビューを共有する。図1は、マルチシーケンサーマルチスレッドシステム上での並列プログラミングのアプローチの図的な表現を示すブロック図である。図1は、オペレーティングシステム140に見えるプロセス100、120を示している。これらのプロセス100、120は、ワードプロセッシングプログラムおよび電子メール管理プログラムといった、異なるソフトウェアアプリケーションプログラムであってもよい。普通、各プロセスは異なるアドレス空間内で動作する。オペレーティングシステムOS140は普通、図1に示されるプロセス120のようなプロセスについてユーザー生成のタスクを管理することを担う。したがって、オペレーティングシステム140は、プロセス120に関連付けられたユーザー定義のタスクのそれぞれについて相異なるスレッド125、126を生成することができ、スレッド125、126をスレッド実行資源にマッピングすることができる。これらの実行資源は図1には示されていないが、のちに詳細に議論する。OS140は普通、これらのスレッド125、126を実行資源上での実行のためにスケジューリングすることを担う。単一のプロセスに関連付けられた諸スレッドは、典型的には、メモリについて同じビューをもち、同じ仮想アドレス空間を共有する。スレッドを生成し、マッピングし、スケジューリングすることはOS140が担うので、スレッド125、126はOS140に見える。さらに、本発明の諸実施形態は、OS140には見えない追加的なスレッド130~136を包含する。すなわち、これらの追加的なスレッド130~136については、OS140は生成、管理もしくは他の仕方での認識または制御をしない。OS140によって生成も制御もされないこうした追加的なスレッドは、OSに見えるスレッドと区別するため、本稿では時にシュレッド130~136と称される。シュレッドはユーザーレベルのプログラムによって生成および管理され、オペレーティングシステムからは隔離されているシーケンサー上で走るようスケジューリングされる。OS隔離シーケンサーは、OS可視シーケンサーと同じリング0状態を共有する。このように、シュレッドshred130~136は、同じプロセス126に関連付けられた諸スレッドthread125、126のために生成される同じ実行環境アドレスマップを共有するshare。ここでの用法では、スレッドおよびシュレッドの用語は、少なくとも、あるプロセスの他のスレッドおよび/またはシュレッドと同時並行して実行される命令のストリームの独立した実行の概念を含む。したがって、スレッドおよびシュレッドの用語はいずれも、ソフトウェア命令ストリームの実行とともに関連付けられたプロセッサ状態の概念を包含する。ここでの用法では、どちらも命令のストリームであるスレッドこれはOSに制御されるとシュレッドこれはオペレーティングシステムには見えず、その代わりユーザーによって制御されるとを区別する因子は、スレッドおよびシュレッドの命令ストリームの実行がどのように管理されるかの相違にある。スレッドはOSへのシステムコールに反応して生成される。OSがそのスレッドを生成し、そのスレッドを走らせるために資源を割り当てる。スレッドに割り当てられたそのような資源は、オペレーティングシステムがスレッドを制御およびスケジューリングするために使うデータ構造を含みうる。これに対し、シュレッドの少なくとも一つの実施例は、ユーザーレベルのソフトウェア命令を介して生成される。その命令がOSが認識しないシュレッドを生成するためのソフトウェアライブラリまたはその他のOS独立な機構を呼び出すのである。このように、シュレッドはユーザーレベルのソフトウェアライブラリコールに反応して生成されうる。ソフトウェアライブラリコールは、ソフトウェアライブラリによって維持されているシュレッド作業待ち行列図示せず内に項目を生成しうる。そのようなシュレッド作業待ち行列は、OS隔離シーケンサー上で走るようスケジューリングされている各シュレッドについての項目を保持しうる。シュレッド作業待ち行列の少なくとも一つの実施形態についてのさらなる議論については、同時係属中の出願でMechanismtoScheduleThreadsonOSSequesteredSequencerswithoutOperatingSystemInterventionオペレーティングシステム介入なしにOS隔離シーケンサー上でスレッドをスケジューリングする機構と題する米国特許第____代理人整理番号42390P20205を参照されたい。図2は、同じソフトウェアプログラムまたはプロセスのすべてのスレッドがメモリについて共通の論理的なビューを共有するという、上記の陳述に関するさらなる詳細を図的な形で示すブロック図である。本発明の諸実施形態については、この陳述は、プロセス100、120に関連付けられたシュレッドに関しても真である。すなわち、複数のシュレッド130~136が、単一の、OSに管理されたスレッド125に付随しうる。スレッド125によって該スレッド125に付随する諸シュレッドを実行するよう初期化されるすべてのシーケンサーseq1~seq4は、そのスレッドについてオペレーティングシステムが構築した仮想メモリの同じビューを共有する。ここでは図2について、図1を参照しつつ議論する。図2は、図1に示されるプロセス120、スレッド125、126およびシュレッド130~136の図的な表現である。しかしながら、そのような表現は限定するものと解釈すべきではない。本発明の諸実施形態は必ずしもあるプロセスに関連付けられるスレッドまたはシュレッドの数に上限または下限を課すことはしない。下限に関しては、図1は、所与の時点において走っているあらゆるプロセスが必ずしも何らかのスレッドまたはシュレッドと関連付けられている必要はないことを示している。たとえば、図1に示したプロセス0100は、図1に示されている特定の時点ではスレッドもシュレッドもなしに走っていることが示されている。しかしながら、別のプロセス120が、図1に示されるように、一つまたは複数のスレッド125、126に関連付けられていることがある。さらに、プロセス120は追加的に、一つまたは複数のシュレッド130~136とも関連付けられていることがある。プロセス120についての二つのスレッド125、126および4つのシュレッド130~136の表現はあくまでも例示的なものであって、限定するものと解釈すべきではない。あるプロセスに関連付けられたOS可視スレッドの数はOSプログラムによって限定されうる。しかしながら、プロセスに関連付けられたシュレッドの累積数についての上限は、少なくとも一つの実施例については、実行中のある特定の時点において利用可能なスレッド実行資源の数によってのみ限定される。図2は、プロセス120に関連付けられている第二のスレッド126が第一のスレッド125とは異なる数nの関連付けられたスレッドをもちうることを示している。Nはスレッド125、126の一方または両方について0であってもよい。図2は、ある特定のプロセス120に関連付けられたすべてのスレッド125、126によって共有されるメモリのある特定の論理的なビュー200を示している。図2は、各スレッド125、126がそれぞれ独自のアプリケーションおよびシステム状態202a、202bを有していることを示している。図2は、スレッド125、126についての該アプリケーションおよびシステム状態202が、その特定のスレッドに関連付けられたすべてのシュレッドたとえばシュレッド130~136によって共有されることを示している。したがって、図2は、本発明の少なくとも一つの実施形態についてのシステムが、スレッド125のようなOS可視スレッドと、該スレッドに関連付けられたシュレッド130~136これはOSには不可視との間の一対多の関係をサポートしうることを示している。シュレッドを生成し、同期させ、その動作をその他の仕方で管理および制御するためにOSでなくアプリケーションプログラマがユーザーレベルの技法を用いうるという意味において、シュレッドはOS図1の140参照に可視ではない。OS140はスレッドを認識し、管理するものの、OS140はシュレッドは認識せず、管理も制御もしない。こうして、スレッドユニットハードウェアとシュレッドとの間のマッピングを管理するためにオペレーティングシステムに頼る代わりに、ユーザーレベルのアプリケーションが、そのようなマッピングを直接制御し、シュレッド実行に関連した制御および状態転移を直接操作することが望ましいことがある。そのような直接的な制御および操作を容易にするため、スレッドユニットのアーキテクチャのユーザー可視の特徴は、少なくとも、ユーザーレベルのアプリケーションプログラムにスレッドユニットハードウェアの直接的な操作および制御を許容する正準的な命令セットを含みうる。少なくとも一つの実施例については、以下の機能のいずれかまたは全部をマルチシュレッドシステムに実装することが望ましいことがありうる。そのような機能はそれぞれ、その機能を実施するための別個のアーキテクチャ上の命令によってサポートされてもよい。あるいはまた、そのような機能は、シュレッド生成および制御の小さな正準的な命令セットに基づく、より高レベルのプリミティブまたはソフトウェアライブラリ関数によって実装されてもよい。正準的なアーキテクチャ上のユーザーレベルのシュレッド利用命令のハードウェア実装についてのさらなる議論は、AMechanismForInstructionsSetBasedThreadExecutiononaPluralityofInstructionSequencers複数の命令シーケンサー上での、命令セットに基づくスレッド実行のための機構と題する同時係属中の特許出願米国特許第____代理人整理番号:42390P19770に見出されうる。ユーザーレベルのシュレッド利用プログラミングパラダイムの一部としてプログラマに提供されうる機能は、次の機能のうちのいずれかまたは全部の一つまたは複数を含みうる:1.OS制御からのシーケンサーの隔離2.シーケンサー間制御移行を実施するためのシーケンサー算術3.リング遷移検出およびユーザーレベルの例外処理4.隔離されたシーケンサーのために特権動作の処理をサポートするための、OS可視シーケンサーによるプロキシ実行これらの機能のそれぞれについて以下で詳細に議論していく。上に挙げたユーザーレベルのシュレッド利用機能がハードウェアにおいてアーキテクチャ上サポートされていないシステム上でユーザーレベルのシュレッド生成および制御の機能を提供することが望ましいことがありうる。したがって、シュレッド生成、制御および同期命令の機能性は代わりに抽象化層によってエミュレートされてもよい。以下の議論および請求項の多くが扱うのはこの、ユーザーレベルシュレッド利用のエミュレーションである。そのようなエミュレーションは、上述したように、根底にあるスレッドユニットが、ユーザーレベルのシュレッド生成、マッピング、制御および同期のためのアーキテクチャ上の命令をサポートしていないシステムにおいて実装されうる。しかしながら、ここで議論されるソフトウェアエミュレーション機構の諸実施形態はそのようなシステムに限定されない。諸実施形態は、スレッドユニットの一つまたは複数がアーキテクチャ上のシュレッド命令をサポートしているシステム上でも実施されうる。ここでの用法では、スレッドユニットここでは交換可能的にシーケンサーとも称されるとは、スレッドまたはシュレッドを実行する機能のある任意の物理的または論理的なユニットでありうる。これは、所与のスレッドまたはシュレッドのために実行されるべき次の命令を決定するための次命令ポインタ論理を含みうる。たとえば、図2に示されるOSスレッド125は、図示されないシーケンサー上で実行されうる一方、アクティブなシュレッド130~136のそれぞれは、それぞれ他のシーケンサーseq1~seq4上で実行されうる。シーケンサーは論理的なスレッドユニットであっても物理的なスレッドユニットであってもよい。論理的なスレッドユニットと物理的なスレッドユニットとの間の区別を図3に示す。図3は、開示されている技法を実行する機能のあるマルチシーケンサーシステムの実施例310、350の選ばれたハードウェア特徴を示すブロック図である。図3が示すのは、SMTマルチシーケンサーマルチスレッド環境310の選ばれたハードウェア特徴を示している。図3はまた、複数コアのマルチスレッド環境350の選ばれたハードウェア特徴をも示しており、この場合、各シーケンサーは別個の物理的なプロセッサコアである。SMT環境310では、単一の物理プロセッサ304は、オペレーティングシステムおよびユーザープログラムにとっては、複数の論理プロセッサ図示せずとして見えるようにされる。該複数の論理プロセッサはここではLP1ないしLPnと称される。各論理プロセッサLP1ないしLPnは、それぞれ完全なセットのアーキテクチャ状態AS1~ASnを含む。アーキテクチャ状態は、少なくとも一つの実施例については、データレジスタ、セグメントレジスタ、制御レジスタ、デバッグレジスタおよび大半のモデル固有のレジスタを含む。論理プロセッサLP1~LPnは、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスといった物理プロセッサ304の大半の他の資源を共有する。そのような特徴は共有されうるものの、マルチスレッド環境310における各スレッドコンテキストは、次命令アドレスを独立して生成できるそしてたとえば命令キャッシュ、実行命令キャッシュまたはトレースキャッシュからのフェッチを実行できる。こうして、プロセッサ304は、各スレッドコンテキストについての命令をフェッチするため、論理的に独立な次命令ポインタおよびフェッチ論理320を含む。ただし、その複数の論理シーケンサーは単一の物理的なフェッチ/デコードユニット322において実装してもよいのであるが。SMTまたは実施例については、シーケンサーの用語は少なくとも、あるスレッドコンテキストについての次命令ポインタおよびフェッチ論理320を、そのスレッドコンテキストについての関連付けられたアーキテクチャ状態ASの少なくとも一部とともに包含する。SMTシステム310のシーケンサーが対称的である必要はないことも注意しておくべきである。たとえば、同じ物理コアのための二つのSMTシーケンサーは、そのそれぞれが維持するアーキテクチャ状態情報の量において違っていてもよい。こうして、少なくとも一つの実施例については、マルチシーケンサーシステム310は、同時並行マルチスレッドをサポートする単一コアのプロセッサ304である。そのような実施形態については、各シーケンサーは、独自の命令次命令ポインタおよびフェッチ論理320と独自のアーキテクチャ状態情報ASとをもつ論理プロセッサであるが、同じ物理プロセッサコア304がすべてのスレッド命令を実行する。そのような実施形態については、論理プロセッサは、アーキテクチャ状態については独自のバージョンを維持するが、単一のプロセッサコアの実行資源は同時実行されるスレッドの間で共有されうる。図3は、マルチコアマルチスレッド環境350の少なくとも一つの実施形態をも示している。そのような環境350は、それぞれが異なるスレッド/シュレッドを実行する機能をもつ二つ以上の別個の物理的プロセッサ304a~304nを含んでおり、該複数の異なるスレッド/シュレッドの少なくとも一部分の実行は同時に進行しうるようになっている。各プロセッサ304aないし304nは、それぞれのスレッドまたはシュレッドのための命令情報をフェッチするため、物理的に独立なフェッチユニット322を含んでいる。各プロセッサ304a~304nが単一のスレッド/シュレッドを実行する実施形態では、フェッチ/デコードユニット322は単一の次命令ポインタおよびフェッチ論理320を実装する。しかしながら、各プロセッサ304a~304nが複数スレッドコンテキストをサポートする実施形態では、フェッチ/デコードユニット322は、サポートされるスレッドコンテキストそれぞれについて相異なる次命令ポインタおよびフェッチ論理320を実装する。マルチプロセッサ環境350における追加的な次命令ポインタおよびフェッチ論理320が任意的であるという性質は、図3で点線によって表されている。こうして、図3に示されるマルチコアシステム350の少なくとも一つの実施例については、シーケンサーのそれぞれは、単一のチップパッケージ360に複数のコア304a~304nが存在しているプロセッサコア304でありうる。各コア304a~304nは、単一スレッドまたはマルチスレッドのプロセッサコアのいずれでもありうる。図3ではチップパッケージ360は破線で表されているが、これはマルチコアシステム350の図示されている単一チップ実施形態が単に例示的であることを示している。他の実施形態については、マルチコアシステム350のプロセッサコア304a~304nは別個のチップ上に存在してもよい。少なくとも一つの実施例については、上に挙げたユーザーレベルのシュレッド生成、制御および同期機能は、図3に示されるような根底にあるシーケンサーハードウェアのアーキテクチャ上の命令セットによっては提供されない。にもかかわらず、プログラマがユーザーレベルのシュレッド利用機能を呼び出すコードを書けることが望ましいことがありうる。そのようなシステムについては、ユーザーレベルのシュレッド利用機能は、ファームウェアまたはソフトウェア抽象化層を介してエミュレートされうる。それによりプログラマは、あたかも根底にあるハードウェアがシュレッド命令をサポートしているかのように、透明にコードを書くことができる。ソフトウェアまたはファームウェア層は、OS隔離されたシーケンサー上で実行するOS独立なシュレッドのユーザーレベルの生成、制御および同期が実施されるよう、抽象化層を提供するはたらきをしうる。図4は、オペレーティングシステム140のビューおよび制御から隔離されることのできる一つまたは複数のシーケンサーを含むマルチシーケンサーマルチスレッドシステムのための抽象化層402の少なくとも一つの実施形態を示すブロック図である。抽象化層402は、ユーザーレベルのシュレッド利用のためのアーキテクチャ上の命令が隔離シーケンサー上でサポートされていないシステムのために、ユーザーレベルのスレッド制御を実施する機構を提供する。したがって、図4に示された実施形態については、複数シーケンサー432a~432nの一つまたは複数は、OS独立な実行シュレッドのユーザーレベルの生成および制御のためのアーキテクチャ上のハードウェアサポートを設けておらず、同じシーケンサーがOSビューおよび制御から隔離されうることが想定される。図4が示すところでは、抽象化402は、論理的にマルチシーケンサーハードウェア430の上に載っている抽象化の層である。オペレーティングシステム140は、この抽象化層より少なくとも1レベル高いところで動作しうる。抽象化層abstractionlayerのことは、ここでは時にシュレッド化エミュレーション層shreddingemulationlayerSELと称される。図4が示すところでは、SEL420は、さまざまなシュレッド関数を実行するためのモジュールを含みうる。図4は、SEL420がシーケンサー隔離モジュール404、プロキシ実行モジュール406、シーケンサー算術モジュール408および遷移検出モジュール410を含みうることを示している。SEL420の機能モジュール404、406、408、410のそのような論理的な表現は限定するものと解釈すべきではない。当業者は、それらのモジュールは、指定された機能を実行するための論理を表現することを意図されていることを認識するであろう。該論理は、ソフトウェア、ハードウェア、ファームウェアまたはそのいかなる組み合わせであってもよい。さらに、複数モジュール404、406、408、410の機能性は、より大きな関数または論理モジュールとして一緒に実装されてもよい。あるいはまた、一つまたは複数の個別モジュールの論理がより小さな下位モジュールに細分されてもよい。また、前記モジュールの一つまたは複数が、論理の冗長なコピーを含むのではなく、共有関数コールまたはその他の共有論理のように、他のモジュールの一つまたは複数と論理を共有してもよい。少なくとも一つの実施形態については、SEL402は独立な論理モジュールでありうる。少なくとも一つの他の実施形態については、SEL402は既存の論理モジュールへの修正として実装されうる。たとえば、SEL402は、既存のソフトウェア的な抽象化層に対する修正のセットとして実装されうる。のちに議論されるある種の実施形態は、SEL402を、仮想機械モニタvirtualmachinemonitorVMMへの修正のセットとして含みうる。ここでもまた、そのような実施形態は、SEL402の選ばれた特徴をより詳細に、特定の実装環境のコンテキストにおいて示す目的のためにのみ与えられるものである。だが、VMM実施形態に関するそのような個別的事項についての以下の議論は限定するものと解釈するべきではない。SEL402は、独立して実装されてもよいし、あるいはオペレーティングシステムとシーケンサーハードウェアとの間のインターフェースを提供する何らかの他の抽象化層の一部として実装されてもよい。ではあるが、既存のVMMへの修正として実装されうるSEL402のそれらの実施形態についての明確化の目的のため、以下の図5の議論は、例示的なVMM実施形態に関する追加的な情報を提供する。図5は、SEL402をVMM506の一部として含んでいるマルチシーケンサー処理システム500を示すブロック図である。システム500は、プロセッサ資源530を含むハードウェア資源520を含む。プロセッサ資源530は複数シーケンサー532a~532nを含みうる。シーケンサー532a~532nは非対称的であってもよい。図5に示された例示的なシステム500は他のハードウェア資源526をも含みうるが、ここで議論される他の特徴をかすませるのを避けるために個々に示すことは省いている。そのような他のハードウェア資源526としては、たとえば、これに限られないが、メモリ、周辺装置、チップセット、記憶などが含まれうる。図5が示すところでは、すぐ上で論じたハードウェア資源520に加えて、システム500はソフトウェア資源をも含みうる。そのようなソフトウェア資源は仮想機械モニタ506を含みうる。VMM506は、処理システム500のハードウェア資源を分割および管理することができる。それにより同じシステム500上で一つまたは複数のオペレーティングシステム503a~503nが同時並行して実行されることが許容される。各OS503a~503nは、パーティションまたは仮想機械VMvirtualmachine510a~510nと称される実質的に独立したソフトウェア環境内で動作しうる。図5に示される例示的な実施形態については、VMM506は、それぞれ独自の独立したゲストOS503a~503nを走らせている複数の仮想機械510a~510nをサポートする。当業者は、ここで論じる諸実施形態は、単一のVM510をサポートするシステムで用いられてもよいことを認識するであろう。追加的なVM510は、それが任意的であることを示すため、図5では点線で示されている。少なくとも一つの実施例については、VMM506は、マイクロカーネル512およびサービスOS513のようなソフトウェアまたはファームウェアコンポーネントの実行を通じて実装されうる。マイクロカーネル512は、命令スケジューリングのようなシステム管理タスクのための、命令の小さな核を含みうる。サービスOS513は、仮想機械を生成および維持するためのデバイスドライバおよび環境仮想化ソフトウェアを含みうる。したがって、図5に示されたシステム500の少なくとも一つの実施形態については、VMMソフトウェア506はハードウェア資源520の制御を保持することができ、VMM506へのゲストとして、ゲストOS503a~503nを非特権モードで走らせることができる。ある種のゲストイベント、命令および状況は、VMM506にトラップすることができ、するとVMM506はそのようなイベント、命令および/または状況を処理しうる。このように、VMM506はゲストOSソフトウェア503a~503nにプロセッサ抽象化を呈する。ここでの用法では、ゲストOS503a~503nからVMM506へのトラップはここではVMEXITと称される。VMM506からゲストOS503a~503nに制御を戻す遷移はここではVMENTERと称される。VMM506とゲストOSソフトウェア503a~503nとの間の遷移は、仮想機械制御構造VMCSVirtualMachineControlStructure560と称されるハードウェア構造によって制御されうる。VMCS560は、ゲストたとえば503a~503nのような状態、VMM506状態およびさまざまな制御レジスタの状態を、VMM506への、およびVMM506からの制御移行に際して保存しうる。制御レジスタの値は、どのゲストイベントがVMM506にトラップすべきか、および、どの状態がVMEXITおよびVMENTER遷移に際してロードおよび保存されるかを指示しうる。少なくとも一つの実施例については、VMM506は、VMEXITおよびVMENTER遷移のために以下の処理を実行する。VMEXITのためには、その遷移イベントを発生させたゲストOS503についての状態情報が、VMCS560のゲスト状態領域に保存される。VMENTERのためには、そのゲスト状態が、VMCS560のゲスト状態領域から復元される。少なくとも一つの実施例については、VMM506は、ここではそれぞれVMREADおよびVMWRITEと称される特化された読み出しおよび書き込み命令を利用して、VMCS560のフィールドを読み出しおよび書き込みしうる。SEL402をVMM506の一部として実装するシステムの少なくとも一つの実施例については、VMCS560およびVMM506の基本機能が利用されうる。VMM506を利用してどのように個別的なユーザーレベルのシュレッド生成、制御および同期機能をエミュレートするかの個別的な例を以下に述べる。シーケンサー隔離ここでの用法では、シーケンサー隔離の用語は、マルチシーケンサーマルチスレッドシステムの一つまたは複数のシーケンサーが隔離された状態または条件に遷移したことを意味するために使用される。そのような隔離された状態または条件の特性は、そのような状態または条件にあるシーケンサーについてはOSが命令をスケジューリングしないということである。したがって、ある所与の時点において隔離された状態にある一つまたは複数のシーケンサーをもつシステムについては、OSには隔離されていないシーケンサーだけが可視であるという。いかなる所与の時点においても、一つまたは複数のシーケンサーが隔離されているかどうかに依存して、OSは、実際にプラットフォーム上にあるよりも少ない数のシーケンサーへの可視性を有することがある。OS制御されるスレッド実行のためには可視の隔離されていないシーケンサーだけが利用可能である。隔離されたすなわちOS不可視なシーケンサー上でシュレッドが実行されうるのは、ユーザーレベルの命令を受けてである。図6は、シーケンサー隔離の少なくとも一つの実施形態を示すブロック図である。隔離されたシーケンサーは、互いに、あるいはOS可視シーケンサーと対称的であってもよいが、そうである必要はない。少なくとも一つの実施例については、一つまたは複数のシーケンサー622、624、626の隔離は、仮想機械内のゲストOSのようなオペレーティングシステム603のブートの間に実施されうる。そのような実施例については、OS603のためのブートパラメータ650は、メモリ内に、たとえばファイルたとえばbootini内に存在しうる。ブートパラメータ650は、システム600のシーケンサー全体のうちある部分集合たとえばシーケンサー620だけがOS603に可視となるよう、ブートに先立って構成設定されうる。少なくとも一つの実施例については、ブートパラメータは、オペレーティングシステムの設定を再設定するルート特権のあるシステム管理者によって構成設定されうる。VMM506は、少なくとも一つの実施例については、OS603がそのブートプロセスを完了したあとに起動されうる。あるいはまた、VMM506がOS603に先立って起動される実施例について、一つまたは複数のシーケンサー622、624、626の隔離が実施されうる。そのような実施例は、たとえば、VMM506の起動を、BIOSbasicinputoutputsystem[基本入出力システム]もしくはEFIextensiblefirmwareinterface[拡張可能ファームウェアインターフェース]またはハードウェアとオペレーティングシステム603との間のインターフェースのはたらきをするその他のファームウェアを介して行いうる。VMM506は、OS603への引き継ぎに先立ってそのようなファームウェアによって起動されうる。OSのブートパラメータファイルを利用して隔離を実施するのではなく、OS603に明かされるシーケンサーの数は、オペレーティングシステム603によって利用されるACPIadvancedconfigurationandpowerinterface[高度構成設定および電力インターフェース]テーブル中の数値によって制御されてもよい。ここでもまた、ACPIはシステム管理者によって、あるいはブートマネージャBIOS、EFIなどの販売者によってプログラムされうる。図6にはOS可視シーケンサー620は一つしか描かれていないが、そのような描写は単に例示のためであって、限定するものと解釈すべきではない。システム600のシーケンサーは、オペレーティングシステム603に対していくつ可視であってもよい。オペレーティングシステム603が効率的に多数の同時並行スレッドを処理する能力の限界によって、システム600中の全シーケンサーのうちのいくつがOS603に可視であるべきで、いくつか隔離されるべきかに関する判断を知ることができることがある。図6は、VMM506が、OS603に可視のシーケンサー単数または複数620を含めてシステム600の全部のシーケンサー620、622、624、626を制御しうることを示している。隔離されたシーケンサー622、624、626は、オペレーティングシステム603には見えないが、VMM506の直接制御のもとで動作する。可視シーケンサー単数または複数620のためには、VMM506はOS603をゲストモードで走らせうる。シーケンサー隔離モジュール404は、隔離されるシーケンサー622、624、626を初期化するための処理を実行しうる。それらのシーケンサーを、ユーザーレベルの命令によって指令されるとおりにスレッドを実行するよう準備するためである。VMM起動後、シーケンサー隔離モジュール404は隔離されるシーケンサー622、624、626のそれぞれに初期化命令を送りうる。それらのシーケンサーはOS603には見えないので、隔離シーケンサーは、オペレーティングシステム603の特権リングによるサービスを要求する特権コードは実行しない。少なくとも一つの実施例については、特定のシーケンサーが特権命令たとえばシステムコールおよびページフォールト処理のようなを実行できないことは、のちにさらに詳しく論じる透明なプロキシ機構によって、プログラマからは隠蔽されうる。図7は、図4に示したSEL402のようなシュレッド化エミュレーション層を含むソフトウェア層を立ち上げるための方法700の少なくとも一つの実施形態を示すフローチャートである。少なくとも一つの実施例については、SEL402は、VMMのようなより包括的なソフトウェアモジュールの一部として起動されうる。方法700は、OS可視シーケンサー上の起動ドライバによって開始されうる。図7が示すところでは、方法700はブロック702で始まってブロック704に進む。ブロック704で、ソフトウェア層のイメージがシステムのためのメモリにロードされる。少なくとも一つの実施例については、このイメージは起動ドライバによってロードされうる。次いで処理はブロック706に進む。ブロック706では、前記ソフトウェア層が呼び出される。結果として、起動ドライバから、ブロック704でロードされたSELイメージに制御が移される。図7が示すところでは、ブロック706での呼び出しを受けて、SELはある種の処理724~732を実行しうる。むろん、処理724~732が必ずしも図示した順に実行されなくてもよいこと、そしていくつかのブロックはより大きなマクロブロックとして実行されるべく組み合わされてもよく、あるいは代替的により小さな下位ブロックに分割されてもよいことは理解されるであろう。少なくとも一つの実施例については、図7に示された処理724~732は、SEL420を含むよう修正されたVMMのようなソフトウェア層によって実行されうる。図7が示すところでは、ブロック724で、方法700は初期化を実行する。初期化724はVMXON命令の実行を含みうる。この命令はシーケンサーにおいて利用可能なVMXVirtualMachineExtension[仮想機械拡張]機能をオンにする。初期化724は、VMMが実行される別個の仮想アドレス空間を設定することも含みうる。ブロック724から処理はブロック726に進む。ブロック726では、方法700は、OSから隔離されているシーケンサーの制御を握る。少なくとも一つの実施例については、そのような制御は、隔離シーケンサー単数または複数のそれぞれに立ち上げプロセッサ間割り込みstartupinterprocessorinterruptまたはSIPIを送ることを介してアサートされる。次いで処理はブロック726から728に進む。ブロック728では、隔離されたシーケンサーのそれぞれは、スケジューラからの作業を待つ待機状態に入れられる。その後、シュレッドスケジューラ図示せずによって隔離シーケンサー上に作業がスケジューリングされうる。シュレッドスケジューラはたとえば、ランタイムライブラリ図示せずの一部として動作しうる。あるいはまた、シュレッドスケジューラはSEL図4の420参照の一部として動作しうる。シュレッドスケジューラの少なくとも一つの実施例に関するさらなる詳細は、同時係属中の出願でMechanismtoScheduleThreadsonOSSequesteredSequencerswithoutOperatingSystemInterventionオペレーティングシステム介入なしにOS隔離シーケンサー上でスレッドをスケジューリングする機構と題する米国特許出願第____代理人整理番号42390P20205に見出されうる。ブロック728から、処理はブロック730に進みうる。ブロック730では、方法700はOS可視シーケンサーについて仮想メモリ制御構造VMCSを設定する。ブロック730で設定されるVMCSの値は、OS可視シーケンサー上で例外が生じるたびにVMMへのトラップを引き起こすよう操作されうる。次いで処理はブロック732に進みうる。ブロック732では、方法700はVMENTERを実行して、制御を、最初にSELを起動したブロック706参照ドライバに戻しうる。移行732は事実上、OS可視シーケンサーについて、制御をOSに与える。少なくとも一つの実施例については、この第一のVMENTERが起動時に実行されたあと、OS可視シーケンサーについてのオペレーティングシステムは、VMM上でゲストとして非特権モードのちに論じる0Dで走りうる。次いでそのゲストOSは、ブロック708で通常の処理を実行することに進みうる。次いで方法700についての処理はブロック710で終わりうる。当業者は、図7の諸ブロックが、ここに記載される一般的な機能を維持する多様な代替的な順序で実行されうることを認識するであろう。たとえば、ブロック726のあと、ブロック728が実行される前に、ブロック730および732が実行されてもよい。図8は、VMM806およびOS803起動後の例示的なマルチシーケンサーシステム800の隔離シーケンサーS1およびOS可視シーケンサーS0の状態を示すブロック図である。図8に示される見本は二つのシーケンサーS0およびS1を含んでいる。少なくとも一つの実施例については、各シーケンサーS0およびS1はSMTマルチスレッドプロセッサ800の論理的なプロセッサである。少なくとも一つの代替的な実施例では、シーケンサーS0、S1は、マルチコアマルチスレッドシステム800のための複数のスレッドを同時並行して実行できる独立したプロセッサコアであってもよい。ここに記載されるすべての実施形態と同様、開示される技法は、図に示されるよりも多数または少数のシーケンサーを含むシステム上で実行されてもよい。図8が示すところでは、第一のシーケンサーS0はOS803に可視であり、OS803の指令および制御でスレッドを実行しうる。OS803は、シーケンサーS0によって実行されるべき作業をスケジューリングする。しかしながら、OS803はVMM806のゲストとして動作するので、VMM806はシーケンサーS0、S1の両方を制御する。すなわち、少なくとも一つの実施例については、VMM806はすべてのシーケンサーS0、S1を制御し、OS803にとってのOS可視シーケンサーS0を仮想化する。シーケンサーS0が特権動作を実行しようとすると、たとえば、OS803上で走っているアプリケーション806が制御レジスタにアクセスしようとした場合、VMM808はOS803に明かされている制御値を操作する。OS803の上で走るアプリケーション単数または複数808は、OS803のリング3で、非特権deprivilegedモードで走る。そのようなアプリケーション808のための非特権的なリング3動作モードは図8では、記号3Dによって表されている。ゲストOS803のカーネルおよびドライバ812はオペレーティングシステム803のリング0で走るが、非特権モードである。オペレーティングシステム803のための非特権的なリング0動作モードは図8では記号0Dによって表されている。図8が示すところでは、OS803から隔離されているシーケンサーS1はVMM806制御のもとで動作する。図8はさらに、VMM806が特権的なprivilegedリング0モード、P0で動作することを示している。ある種の特権動作は、OS可視シーケンサーS0によって実行されることが試みられる場合、VMM806へのVMEXITを引き起こしうる。そのようなVMEXIT処理のSEL802の扱いのさらなる記述は、以下で図9~図13との関連でより詳細に述べる。シーケンサー算術ここでの用法では、シーケンサー算術SequencerArithmeticの用語は、二つの隔離シーケンサーの間でのユーザーレベルの制御移行を指すために使われる。SEL図4の402参照の少なくとも一つの実施例については、同期的および非同期的両方のシーケンサー間制御移行機能が与えられる。もちろん、代替的な実施例では、同期的なシーケンサー間制御移行機能のみ、あるいは非同期的なシーケンサー間制御移行機能のみが与えられてもよい。同期的および/または非同期的なユーザーレベルのシーケンサー間制御移行機能は、根底にあるシーケンサーハードウェアがそのような機能のアーキテクチャ上のサポートを提供しているかどうかに関わりなく、SELによって提供されうる。一般に、SELの同期的な制御移行機能は、第一のシーケンサーによって実行されたときに第二のシーケンサーに送られるべき信号を引き起こすユーザーレベルの命令によって呼び出されうる。少なくとも一つの実施例については、SELのシーケンサー算術機能を呼び出すためには、ここでVMCALLと称される新しいユーザーレベルの命令がプログラマによって利用されうる。VMCALL命令のパラメータは、さまざまな型のシーケンサー間制御移行シナリオを実施するために、ユーザーレベルのアプリケーションによって操作されうる。そのようなシーケンサー間制御移行シナリオの例示的な見本は下記の表1に記載されている。この新しいVMCALL命令を利用するユーザーレベルのアプリケーションは、ここではシュレッドを認識するshredawareアプリケーションと称される。この新たなVMCALL命令の少なくとも一つの実施例は、シュレッド認識ゲストソフトウェアが、ゲストソフトウェアからVMMへのVMEXITを強制することを許容する。次いでVMMは隔離されたシーケンサーへの信号伝達を管理する。表1は、ユーザーレベルのアプリケーションによるVMCALL命令の使用によって開始されうる、そしてVMMによって処理されうる信号伝達シナリオのさまざまな見本実施形態を述べている。VMCALLはゲストソフトウェアの制御からの抜け出しを引き起こすので、表1に挙げられているシナリオはここでは出行egressシナリオと称される。他の実施形態については、追加的または異なる出行シナリオを実装してもよい。表1OS可視シーケンサーから隔離シーケンサーに移るための同期的なシーケンサー間制御移行についての出行シナリオしたがって、ここでシュレッド移行SXFR機能と称される、シーケンサー演算の同期的なシーケンサー間制御移行特徴は、シーケンサーどうしの間でのサービスのためにシーケンサー間信号伝達を実行する機構を提供する。SXFR機能は同期的synchronousである。これは、アプリケーションプログラマが、SXFR機能を呼び出す命令をシュレッド認識コードの中に巧妙に位置させることによって、信号を生成するシーケンサーのシュレッド命令ストリーム中の他の命令の実行との関係で、制御移行の実行のタイミングを制御できるという意味においてである。ここでの用法では、SXFR機能のための信号を生成するシーケンサーは、サーブ側servantシーケンサーと称され、生成された信号の受信側はここではクライアントclientシーケンサーと称される。SXFR機能は、前記新しいVMCALL命令のある変形によってユーザーレベルのアプリケーションから呼び出されうる。VMCALL命令を処理する際に、VMMは、新たなユーザーレベルの命令を扱うことができ、それにより非同期的な制御移行を隔離シーケンサーに受け容れさせるようにする。VMMは、ユーザー生成されたVMCALL命令の結果として、隔離シーケンサーに送られる制御メッセージを生成しうる。そのような制御メッセージは、サーブ側シーケンサーをして、VMMによって指令されるとおりに非同期的に制御を受け容れさせる。そのような非同期的な入行ingressイベントはシュレッドに、そのはいってくるイベントを処理させる。割り込み処理と同様である。入行シナリオ信号が隔離シーケンサーによって受信される時点においてシュレッドが現在隔離シーケンサー上で実行されている場合、VMMはそのシュレッドの実行を新たな命令ポインタアドレスEIPにリダイレクトしうる。上述したように、そのような処理は、シュレッド上の実行を新たなEIPにリダイレクトするために、実行中のシュレッドにユーザーレベルの割り込みを配送することに近い。信号はシュレッドをしてVMM制御のもとで実行を開始させるので、表2に挙げられるシナリオはここでは入行ingressシナリオと称される。他の実施形態については、追加的または異なる入行シナリオを実装してもよい。表2OS可視シーケンサーから隔離シーケンサーへ移るための非同期的なシーケンサー間制御移行についての入行シナリオよって、VMMは、OS可視シーケンサーとOS隔離シーケンサーとの間でシュレッド実行を開始および停止させるための、表1および表2に挙げられた出行および入行シナリオを実装するためのインターフェースを提供する。ここで、図9および図10が参照されるこれらの図は、VMCALL命令を利用して、VMMがOS可視シーケンサー上で走っているシュレッド認識プログラムから隔離シーケンサーへのシーケンサー間信号伝達を容易にするようにするための方法900、1000の例示的な実施形態を示している。図9は、シーケンサーに新たなアドレスで実行を継続するよう指令するVMCALL命令の変形を処理するための方法900の少なくとも一つの実施形態を示している。図10は、分岐動作を実行するVMCALL命令の変形を処理するための方法1000の少なくとも一つの実施形態を示している。図9は、方法900の少なくとも一つの実施形態およびSEL950を介した隔離シーケンサーへの信号伝達を実装するためのVMCALL命令の変形を実行するための制御フローを示す制御フロー図である。そのような変形は、たとえば、以前にサスペンドされた、今その次の命令のEIP以外のEIPにおいて再開されるべきであるシュレッドについて利用されうる。そのような使用のため、この信号伝達変形は、のちに図12との関連で論じされる再開機構の変形として考えてもよい。この変形はまた、シーケンサーどうしの間の他の任意の信号伝達のためにも使われうる。よって、図9に示される信号伝達変形は、表1に挙げられた出行シナリオの一つまたは複数を実装するための基本的な機構として利用されうる。図9に示された方法900は、SELのシーケンサー算術モジュールたとえば図4に示されたSEL402のシーケンサー算術モジュール408参照によって実行されうる。図9が示すところでは、方法900は、ある命令ポインタアドレスaから別の命令ポインタアドレスjに隔離シーケンサーnの実行をリダイレクトしうる。方法900の動作は、少なくとも一つの実施例については、SEL950VMMの一部として具現されているか否かによらずによって実行されうる。少なくとも一つの実施例については、方法900は、SEL950のシーケンサー算術モジュール図4の408参照によって実行されうる。図9が示すところでは、VMCALL命令を実行するための方法900がトリガーされうるのは、OS可視シーケンサーmがVMCALL命令を、そのVMCALL命令がSXFR機能を実装するものであることを示すよう設定されたパラメータをもって実行902するときである。具体的には、図9は、VMCALL命令が、別個の隔離シーケンサーn上のシュレッドを新たなEPIにおいて実行再開するようリダイレクトするタイプの同期的な制御移行命令リダイレクトを示していることを図示している。図9が示すところでは、VMCALL命令のシーケンサーn上での実行902は、シーケンサーm上で走っているゲストOS図示せずからSEL950へのトラップを引き起こす。そのようなトラップを受けて、SEL950は方法900の実行をブロック910で開始し、処理はブロック912へと進む。ブロック912は、SEL950がすぐには隔離シーケンサーに非同期的な割り込みイベントを配送しなくてもよい実施形態について実行される。他の実施形態については、もちろん、ブロック912、914または916を実行することなく、非同期的な割り込みはすぐ配送され、ブロック918で始まってもよい。図9に示される実施形態については、SEL950はブロック912で、リダイレクト信号が指定されたシーケンサーnへの配送のために列にはいっているという事実を記録する。次いで処理はブロック914に進む。ブロック914では、SEL950はリング0からリング3への遷移が起こるのを待つ。そのような遷移を受けて、処理はブロック916に進む。ブロック916では、SEL950は、シュレッドイベントが以前にブロック912で記録されたことを判別する。したがって、処理はそのイベントを処理するためにブロック918に進む。ブロック918では、SEL950は、シーケンサーn上のサスペンドされたシュレッドが実行を再開していたはずのEIP図9では命令aのためのアドレスとして示されているをそのシュレッドに関連付けられたスタックにプッシュする。このようにして、現在のEIPは、シュレッドの現在の命令ストリームののちの再開のために保存される。次いで処理はブロック920に進む。ブロック920では、SEL950は、シュレッドのスタックを操作して、シーケンサーn上のシュレッドについて命令jで実行を開始するcall命令を機能的に模倣する。VMM950はこうして、シーケンサーn上のシュレッドを、新たなEIPjにおいて再開させる。方法900のための処理は次いで、ブロック921に進む。ブロック921では、SEL950はOS可視シーケンサーmに制御を返す。次いで処理はブロック922で終わる。図9が示すところでは、新たなEIPjで実行を開始するシュレッドは、信号サービスルーチン970と考えられうる。信号サービスルーチン970は復帰命令972で終わりうる。復帰命令972のシーケンサーnによる実行は、処理の、シーケンサーn上での、その処理が中断されたEIPaでの再開につながりうる。そのような動作は、さまざまな実施例について、さまざまな機構によって実施されうる。たとえば、少なくとも一つの実施例については、復帰命令972を受けて次の動作が実行されうる:復帰命令972の実行に際して、シーケンサーnはスタックから、ブロック918でSEL950によって該スタックにプッシュされたEIPの値をポップさせうる。シーケンサーnは次いで、処理を、その処理が中断されたEIPaにおいて再開しうる。あるいはまた、シーケンサーnの処理を、その処理が中断されたEIPaにおいて再開するために他の機構が用いてもよい。少なくとも一つの代替的な実施例については、スタックのポップは含まれない。代わりに、別の呼び出し慣行が利用されうる。そのような代替的な呼び出し創案の一つは、たとえば、スタックではなくレジスタを利用する、分岐およびリンクbranchandlink式の復帰機構である。図10は、SEL1050によって提供されうるシーケンサー算術機能のもう一つの実施形態を示す制御フロー図である。図10は、分岐出行シナリオを実装するためのVMCALL命令の実行を示している。VMMは、VMCALL命令のこの特定の変形を処理することで、OS可視シーケンサーが、隔離シーケンサーに新たなシュレッドを始めるための信号を送ることを許容する。ここでもまた、図10に示される方法1000は、SELのシーケンサー算術モジュールたとえば図4に示されたSEL402のシーケンサー算術モジュール408参照によって実行されうる。図10が示すところでは、隔離されたシーケンサーに付随する新たな命令ポインタアドレスで実行を開始するよう新たなスレッドの実行を指令しうる。図10では、分岐命令がシュレッド認識シュレッドによって生成される実施形態を示しているが、そのような例は限定するものと解釈すべきではない。本発明の諸実施形態は、分岐命令が、ある隔離シーケンサーによって別の隔離シーケンサー上にシュレッドを発生させるために実行されてもよいことを考えている。図10が示すところでは、SEL1050は、図9に示されたリダイレクションの追加または代替として、OS可視シーケンサーx上のユーザー生成された命令が隔離シーケンサーy上のシュレッドの発生を引き起こしうるように分岐動作を実行する。上記の表1に示されているように、アプリケーションプログラマは、分岐出行シナリオのためのVMCALL命令を、OS可視シーケンサーx上で走っているシュレッド認識アプリケーション中に位置させうる。OS可視シーケンサーx上で動作するシュレッド認識プログラムがVMCALL命令の分岐変形図10のEIPtでの命令として示されているを実行するとき、その命令において指定されている分岐出行シナリオは、SEL1050への制御の移行を引き起こす。分岐命令の実行は図10の1002で示されている。図10が示すところでは、VMCALL命令の分岐変形の少なくとも一つの実施例は、発生したスレッドが実行を開始すべきEIPuおよび新たなシュレッドのためにリザーブされるスタックスペースを表す指標stackを示している。任意的なパラメータとして、アプリケーションプログラマは、新たなシュレッドが実行されるべき隔離されたシーケンサーyを指定しうる。あるいはまた、アプリケーションプログラマはそのような割り当て機能はSEL1050に任せてもよい。SEL1050は新たなシュレッドのために隔離シーケンサーを、たとえばラウンドロビン割り当てポリシーに従って割り当てうる。OS可視シーケンサーxによるVMCALL命令の分岐変形の実行の結果としての結果として得られる制御の移行は、図10ではVMEXITと称されている。VMEXITを受けて、SEL1050は分岐動作を実行するための方法1000の実行を開始する。図10が示すところでは、方法1000はブロック1010で始まり、ブロック1012に進む。ブロック1012では、SEL1050は、そのシュレッドのために隔離シーケンサーyを割り当て、その割り当てられたシーケンサーyのための実行1002環境を生成する。ブロック1012では、少なくとも一つの実施例については、実行環境は下記のような仕方で生成される。下記に与えられる例は単に例示の目的のためにウィンドウズ登録商標オペレーティングシステムの諸機能を利用する一つの実施例であることは理解しておくべきである。他の実施形態では、新たなシュレッドのための実行環境の生成を他の、あるいは追加的な構造を利用して行うこともできるVMCS1080からの、シーケンサーxのためのゲスト状態領域は、シーケンサーx上でシュレッド認識アプリケーションを実行するためにオペレーティングシステムによって設定された状態のスナップショットを含む。そのようなゲスト状態は、CR3のような制御レジスタのための値のほか、グローバル記述子テーブルレジスタglobaldescriptortableregisterGDTRおよびセグメントレジスタのための値を含みうる。ブロック1012では、VMCS1080において反映されているシーケンサーxのためのゲスト状態がSEL1050によってコピーされる。それにより、VMCALL分岐命令において同定された新たなシュレッドを実行するためにSEL1050によって割り当てられた隔離シーケンサーyに関連付けられたVMCS1082内に状態が設定される。こうして、SEL1050は、新たなシュレッドを実行するシーケンサーyのためのゲスト状態を埋めるために、発生元のシーケンサーxのためのゲスト状態を使うのである。したがって、ブロック1012において、SEL1050は、シーケンサーx上でのシュレッド認識アプリケーションの実行のためにオペレーティングシステムによって設定された実行環境を模倣する実行環境を、隔離シーケンサーyのために生成するという目標を実施しうるのである。次いでSEL1050は、隔離シーケンサーyのためのVMCS1082内の隔離シーケンサーの状態を、VMCALL分岐命令のパラメータを利用して修正しうるまだブロック1012。ブロック1012において、隔離シーケンサーyのためのゲストEIPは、VMCS1082内において、VMCALL分岐命令において指定されているEIPuを反映するよう修正されうる。同様に、ブロック1012において、SEL1050はまた、VMCS1082内のゲストスタックポインタを、VMCALL分岐命令において指定されているスタックポインタ値stackを反映するよう修正しうる。ブロック1012において、SEL1050はまた、隔離シーケンサーyのためのVMCS1082内のフラグを修正して、シュレッド実行の間、あらゆるマスク可能割り込みがブロックされることを示してもよい。これらの修正された値EIP、スタックポインタおよび割り込みフラグのようなのほかは、OS可視のシュレッド認識シーケンサーxのためのVMCS1082内のゲスト状態は、ブロック1012で隔離シーケンサーyのために生成されたゲスト状態VMCS1082に反映されていると同一である。次いで処理はブロック1014に進む。ブロック1014では、SEL1050はシュレッドが実行されるコンテキストに対応するスレッドを記録する。少なくとも一つのウィンドウズ登録商標ベースの実施例については、SEL1050は、そうするために、OSに割り当てられたスレッドIDを利用する。少なくとも一つの実施例については、OS可視シーケンサーxのようなによって生成されるあらゆるシュレッドは仮想メモリのビューをOS可視シーケンサーと共有するので、ブロック1014では、OS可視シーケンサーについてのスレッドIDの値が、隔離シーケンサーyのようなのための新たなシュレッドが実行されるコンテキストに対応するプロセスを同定するために記録される。次いで処理はブロック1016に進む。ブロック1016では、SEL1050は、OS可視シーケンサーxのためのゲストOSが、OS可視シーケンサーx上でシュレッド認識アプリケーションの実行を再開することを許容する。少なくとも一つの実施例については、これは、OS可視シーケンサーxのためのゲストOSに制御を戻すVMRESUME命令を実行することによって達成される。また、SEL1050は、ブロック1012で生成された実行環境において隔離シーケンサーy上のシュレッドのコードの実行を開始するためのVMENTER動作をも実行する。次いで処理はブロック1018で終わる。VMENTERに際して、隔離シーケンサーyのメモリのビューは、シーケンサーxのメモリのビューと同一である。というのも、いずれのシーケンサーも、それぞれのVMCS1080、1082において、ゲストモード実行のための同じGDTレジスタ値およびCR3レジスタ値に関連付けられているからである。当業者は、GDTレジスタ値およびCR3レジスタ値が、それぞれのシーケンサーx、yによる実行の間に仮想アドレスが物理的なアドレスに変換される仕方に影響することを認識するであろう。図10が示すところでは、方法1000を実行することによって、SEL1050は事実上、上記の表2に示したgoshred入行シナリオに類似した非同期的な入行シナリオを実装している。隔離シーケンサーxのための入行シナリオは、シュレッド認識アプリケーションにおいてユーザー供給されるVMCALL分岐命令を受けて実行される。図10が示すところでは、方法1000の他のブロック1010~1014を実行したのち、SEL1050は、ブロック1016でシュレッドコードの実行を開始する。また、隔離シーケンサーyのために設定された実行環境は、OS制御シーケンサーxのためにオペレーティングシステムによって設定された実行環境と実質的に同一である。このようにして、SEL1050による方法1000の実行は、事実上、分岐動作について、図1および図2との関連で先に論じた共有メモリ並列マルチプロセッシングパラダイムを達成する。図9および図10は、ソフトウェアエミュレーション層の少なくとも一つの実施形態のためのシーケンサー算術機能の個別的な例示的な例を示すために与えられている。そのような例は限定するものと解釈すべきではない。SEL1050は他の多くのシーケンサー算術機能も備えうる。ユーザーレベルの例外処理ここに記載される少なくとも一つの実施例については、隔離シーケンサー単数または複数上でのユーザーレベルのシュレッド命令の実行は、OS可視シーケンサー上または隔離シーケンサー上のいずれかでのシュレッド実行の間のリング遷移に際してサスペンドされるべきである。リング遷移はしばしば、OS可視シーケンサー上または隔離シーケンサー上のいずれかで発生される例外、割り込みまたはシステムコールに反応して生じる。OS可視シーケンサー上でのリング遷移については、サスペンドされたシュレッドの実行が再開されるのは、その割り込み/例外/システムコールがOSによって処理されたあと、次いでOSがそのシュレッド認識アプリケーションを継続実行のためにスケジューリングするときである。少なくとも一つの実施例については、図10および図11との関連で以下に論じられるシュレッドのサスペンドおよび再開の方法は、遷移検出モジュールたとえば図4に示されるSEL402の遷移検出モジュール410参照によって実行されてもよい。図11は、リング遷移に起因するシュレッドサスペンドのための機構の少なくとも一つの実施形態を示す制御フロー図である。図11に示される機構は、具体的な例――OS可視シーケンサーc上でリング3からリング0への遷移が起こるときに隔離シーケンサーd上でシュレッド実行をサスペンドする――の背景において呈示される。もちろん、当業者は、OS隔離シーケンサー上でリング3からリング0への遷移が起こるときにも同様のサスペンド論理が用いられうることを認識するであろう下記のプロキシ機構の議論を参照。図11に示されたサスペンド機構の少なくとも一つの実施例について、動作の三つの段階が図示されている。第一段階1110では、初期化が実行される。そのような初期化1110はSEL1150によって実行されうる。少なくとも一つの実施例については、初期化1110は、例外に起因するリング3からリング0への遷移が例外として記録され、したがってVMEXITを引き起こすようにするために実行される。そのような初期化1110の間に、OS可視シーケンサーc上でのスレッド実行の間にリング3からリング0への遷移が起こるときはいつでもSEL1150制御への遷移が起こるように制御構造が構成される。少なくとも一つの実施例については、初期化1110は、OS可視シーケンサーのためのVMCS1080内の例外ビットマップにおいて、所望のシステムイベントシーケンサーc上での例外に起因するリング3からリング0への遷移についての例外ビットをセットすることによって実行されうる。図11にはOS可視シーケンサーc一つとその対応するVMCS1180が示されているだけだが、初期化1110は複数のOS可視シーケンサーについて実行されてもよいことは理解しておくべきである。SEL1150がVMMの一部である実施形態については、初期化1110は、シーケンサーc上での例外に起因するリング遷移の生起に際して、VMCS1180の例外ビットマップを使ってVMEXITVMMへの制御の移行を引き起こす機構を実施する。もちろん、割り込みまたはシステムコールといった他の型のシステムイベントも、OS可視シーケンサーcについてのシュレッド処理の間に起こりうる。初期化1110は、割り込みまたはシステムコールまたはOS可視シーケンサーc上でのOSの処理を必要とするその他のシステムイベントの生起に際してもVMEXITを引き起こすようにする。少なくとも一つの実施例については、割り込み、システムコールなどについての初期化1110はトランポリン機構を介して実装されうる。トランポリン機構は、ある種のシュレッドサスペンド動作を実行するために、ゲストOSからの第一のバウンスに際して、ゲストOSに制御をバウンスし戻すまで、暫時、制御を受け容れる。割り込みについてのトランポリン機構の実施例については、SEL1150は割り込みのホスト制御のための機構を、ゲストOSが走っているときに割り込みが起こったときは常にSEL1150が制御を得るように構成しうる。少なくとも一つの実施例については、SEL1150は、初期化1110の間に、特殊なドライバを呼び出しうる。ドライバは、OS可視シーケンサーのゲストOSによって割り込みおよびシステムコールを処理するために利用される、ある種の設定を修正しうる。一般性を失うことなく、トランポリン機構を構成する個別的な例が与えられているが、例はいかなる観点でも限定するものと解釈すべきではない。そのような構成はいくつかの異なる仕方のいずれにおいても達成しうるからである。少なくとも一つの実施例については、初期化1110の間に、ドライバが割り込み記述子テーブルIDTinterruptdescriptortableを修正しうる。そのような修正は、システムコールおよび割り込みに関連付けられた一つまたは複数の割り込みサービスルーチンISRinterruptserviceroutineに関連付けられたIDTにおいてオフセットを修正しうる。修正されたオフセットは、割り込みまたはシステムコールに関連付けられたISRが実行される前にVMCALLを生成させうる。よって、初期化1110の間にIDTになされた修正は、OS可視シーケンサーc上で割り込みまたはシステムコールが起こるときにSEL1150に制御をバウンスさせうる。のちにより詳細に論じるように、SEL1150は、制御がシーケンサーcのためのISRにバウンスし戻されるまでにある種のシュレッドサスペンド動作を行いうる。トランポリン機構は、システムコールについて同様の仕方でブロック1110において初期化されうる。ブロック1110において、SEL1150は、該SEL1150がシステムコールの生起を検出できるよう初期化を実行しうる。少なくとも一つの実施例については、この初期化は、高速システムコールまたは通常はSEL1150をバイパスするその他の型のシステムコールを無効にすることによって実施されうる。そのような実施例については、高速システムコールを無効にすることにより、OS可視シーケンサーのためのゲストOSは、システムコールのために割り込み命令たとえばINTのようなを使うことになる。もちろん、SEL1150が高速システムコールをトラップしうる実施形態については、高速システムコールは必ずしも無効にされる必要はなく、高速システムコールがSEL1150にトラップすることを保証するよう、IDT次段落で言及の修正を実行することができる。ブロック1110において初期化はさらに実行され、それにより、OS可視シーケンサーcのためのゲストOSによる割り込み命令または高速システムコールのようなその他のシステムコールの実行が、割り込みすなわちIDTの修正について上記したのと同様の仕方で、SEL1150に制御をバウンスし戻しうる。換言すれば、そのような初期化1110は、システムコールをSEL1150にトラップさせる。最後に、ブロック1110における初期化は、シーケンサーdのようなOS隔離シーケンサーの初期化も含みうる。それにより、OS隔離シーケンサーは、マスク不可割り込みNMInonmaskableinterruptを受け取るときはいつでもSEL1150にトラップすることになるブロック1104との関連での下記のさらなる議論を参照。そのような初期化は、NMIが受信されたときにSEL1150制御への遷移が起こるべきであると示すよう、隔離シーケンサーdに関連付けられたVMCS1182についての例外ビットマップを修正することによって実行されうる。図11は、OS可視シーケンサーcによって第二段階1120が実行されうることを示している。OS可視シーケンサーc上でのスレッドの実行の間に、シーケンサーはリング3からリング0への遷移に起因する例外を生成しうる。あるいはシステムコール、割り込みまたはOSサービスを必要とするその他のシステムイベントに遭遇しうる。上で論じた初期化1110のため、そのようなイベントの生起は、シーケンサーcのためのゲストOSにそのイベントをすぐ処理することを許容するのではなく、SEL1150制御へのVMEXIT型の遷移を引き起こしうる。SEL1250がVMMの一部である実施形態については、第二段階1120の間に生成される遷移1101はVMEXITと呼ばれうる。図11は、VMEXIT型の遷移に際して、制御がSEL1150に移行されることを示している。第三段階1130の間に、SEL1150はシュレッドサスペンドのための方法1100を実行する。SEL1150論理がVMMに組み込まれる実施形態については、方法1100はVMMによって実行されうる。図11が示すところでは、OS可視シーケンサーc上でのシステムイベントによってトリガーされるVMEXIT1101を受けて、SEL1150は、ゲストOSがOS可視シーケンサーc上の該イベントを処理することを許容するのに先立ち、方法1100を実行する。そのような機構を用いうるのは、少なくとも次の理由による。すなわち、ゲストOSは隔離されたシュレッドを認識せず、したがって、ゲストOSの何らかのカーネルモードコードがOS可視シーケンサー上で実行されている間はシュレッドは実行を続けるべきではないからである。図11が示すところでは、方法1100はブロック1102で始まり、ブロック1104に進む。ブロック1104では、SEL1150は割り込みを一つまたは複数のOS隔離シーケンサーdに送る。該OS隔離シーケンサーdは、OS可視シーケンサーcによって実行されるシュレッド認識コードに関連付けられたコードを走らせている。図11は、そのような隔離シーケンサーを一つしか示していないが、当業者は、ブロック1104で複数の隔離シーケンサーに割り込みが発されてもよいことを認識するであろう。少なくとも一つの実施例については、ブロック1104で発される割り込みは、受信シーケンサーが無視できないマスク不可割り込みである。SEL1150がブロック1104で割り込みを発生させるのは、一例では、高度プログラム可能割り込みコントローラAPICAdvancedProgrammableInterruptControllerをプログラムすることによってなされうる。ブロック1104において割り込みを送らしめることによって、SEL1150は事実上、隔離シーケンサーd上でのシュレッド実行の非同期的なサスペンドをトリガーし、したがって、サスペンドシュレッド制御命令をエミュレートする。このように、ブロック1104で割り込みをトリガーすることは、表2に示したシナリオに類似した、隔離シーケンサーdについてのhaltshred入行シナリオを実施する。SEL1150はブロック1106で、ブロック1104で発された割り込みに基づいて、隔離シーケンサーdからの制御の遷移を待つ。図11が示すところでは、ブロック1104で生成される割り込みはOS不可視シーケンサーdによって受信されることができ、今度は該隔離シーケンサーdについてSEL1150制御への遷移1105を引き起こすことができる。ここでもまた、SEL1150論理がVMMに組み込まれている実施形態については、そのような遷移1150はVMEXITと称されうる。ブロック1104において二つ以上の隔離シーケンサーに割り込みが発された場合、複数シーケンサーのそれぞれがVMEXITを生成し、その後のブロック1108および1110はこの複数の隔離シーケンサーのそれぞれについて実行されうる。ブロック1104で発された割り込みによって引き起こされた、OS隔離シーケンサーdからのVMEXIT1105を受けて、SEL1150はブロック1106でその遷移を検出し、ブロック1108の実行に進む。ブロック1108では、SEL1150は、システムイベントがOS可視シーケンサーcのゲストOSのイベントハンドラルーチンによって処理されたあとのシュレッド再開の準備をするための処理を実行する。そうするために、SEL1150の少なくとも一つの実施例は、コードブレークポイントを利用する。したがって、ブロック1108において、SEL1150は一つまたは複数のデバッグレジスタDRdebugregisterにコードブレークポイントを設定しうる。それにより、OS可視シーケンサーのために、システムイベントがもともとトリガーされた命令のEIP命令アドレスtにおいてコードブレークポイントが設定される。OS可視シーケンサーcのためのゲストOSがシステムイベントを処理したあと、ゲストOSはシュレッド認識スレッドの実行をEIPtにおいて開始し、よってシステムイベントが処理されたあとにブレークポイントをトリガーすることが想定されている。ブレークポイント処理のさらなる議論は、図12およびシュレッド再開機構の議論に関連してのちに述べる。少なくとも一つの実施例については、ブレークポイント機構により、SEL1150は、OS可視シーケンサー上でのリング遷移を、OS可視シーケンサーcのゲストOSには透明な仕方で追跡できる。この透明というのは、ブレークポイントがゲストOSには見えないという意味においてである。次いで処理はブロック1108からブロック1110へと進む。ブロック1110では、SEL1150は、シーケンサーc上のイベントを生成したシュレッド認識スレッドに関連付けられた隔離シーケンサーdのそれぞれを待機状態にする。次いで処理はブロック1112に進む。ブロック1112では、SEL1150は、制御を放棄してOS可視シーケンサーcのためのゲストOSに戻す。それによりゲストOSがイベントを扱えるようになる。次いで処理はブロック1114で終わる。図12は、リング遷移後にシュレッド実行を再開するための機構の少なくとも一つの実施形態についての制御フローおよび方法1200を示す制御フロー図である。図12は、図11との関連で上で論じた見本シナリオの続きの見本シナリオを示している。図12に示すところでは、OS可視シーケンサーcがそのイベント処理シーケンスを完了して、最初にイベントを生成したシュレッド認識スレッドの命令ストリームの実行に戻っている。すなわち、図12が示すところでは、OS可視シーケンサーcは、図11のブロック1108でブレークポイントが設定されたEIPtにおける命令を実行している。図12が示すところでは、ブレークポイントが設定されている命令tの実行が、SEL1250制御への遷移を引き起こすデバッグ例外を生成する。ここで、SEL1250は、サスペンド方法1100図11の間に自らが設定したブレークポイントに頼って、いつシュレッドを再開するかを決める。図12が示すところでは、SEL1250が、遷移1201に反応してシュレッド再開方法1200を開始する。本方法は、ブロック1202で始まり、ブロック1204に進む。ブロック1204では、そのデバッグ例外および結果としての制御遷移を生成したのが適切なシュレッドであることを確認するために認証が実行される。すなわち、少なくとも一つの実施例については、デバッグ例外は、任意のスレッドが、たとえそれが別のスレッドであっても、指定されたブレークポイントEIPアドレスでの命令を実行するときにトリガーされることができるのである。こうして、ブロック1204では、SEL1250は、そのデバッグ例外および結果としての制御遷移1201を生成するスレッドに関連付けられたスレッド識別子が、サスペンドされたシュレッドが関連付けられているスレッドのスレッド識別子に一致することを確認する。少なくとも一つの実施例については、そのような認証1204は、OS可視シーケンサーcのためのVMCS1280のゲスト領域におけるスレッド識別子CR3レジスタ値のようなを、隔離されたシーケンサーdのためのVMCS1282のゲスト領域におけるスレッド識別子の値CR3レジスタ値のようなと比較することによって実行される。それらの値が一致すれば、処理はブロック1206に進む。そうでなければ、遷移1201は、誤ったヒットに起因して生成されたことになり、処理はブロック1210に進む。ブロック1206では、SEL1250は、以前に図11のブロック1108でデバッグレジスタに設定したブレークポイント値をクリアする。次いで処理はブロック1208および1209に進む。そこでは、OS可視スレッドおよびOS不可視スレッド両方についての制御をSEL1250が放棄する必ずしも示されている順序ではない。次いで処理はブロック1214で終わる。ブロック1210では、EIPtでの命令は一ステップずつ実行されるこれは、シーケンサーcによる次の命令の実行後に例外が生成されるべきであることを指定するために、EFLAGSインジケータのような例外インジケータの修正を含みうる。処理は次いでブロック1212に進む。ブロック1212では、デバッグレジスタ単数または複数は、図11のブロック1108で生成されたブレークポイント設定をクリアされる。次いで処理はブロック1213に進む。ここで、制御は放棄されてOS可視シーケンサーのためのゲストOSに渡される。次いで方法1200の処理はブロック1214で終わる。少なくとも一つの実施例については、誤ったヒットについての処理の間にブロック1213で制御が放棄されてOS可視シーケンサーに渡されたのち、再開機構のある追加的な段階図示せずが実行されうる。すなわち、ゲストOSがブロック1213の結果として制御を得たのち、ゲストOSはその次の命令を実行する。ブロック1210での一ステップ実行の設定のため、ゲストOSは、その一つの命令が実行されたのち、再び例外を経験する。この例外についての処理の間に、SEL1210は、デバッグレジスタをリセットすることがあり、そうすれば、SEL1210は、指示されたEIPがOS可視シーケンサー上のシュレッドによって実行された次のときに、シュレッド処理を再開することを試みようと方法1200を実行できる。プロキシ実行ここでの用法では、プロキシ実行の用語は、シーケンサー間のシュレッドマイグレーション――隔離シーケンサーからOS可視シーケンサーへの制御および状態情報の移転を指す。それによりOS可視シーケンサーがオペレーティングシステムをトリガーして隔離シーケンサーのために特権動作を実行させる。したがって、プロキシ実行は、隔離シーケンサー上のシュレッドの実行の間に起こるシステムイベントを処理するためにOS可視シーケンサーがオペレーティングシステムの注意を得ることができる手段である。プロキシ実行は、非対称的な複数のシーケンサーを含むシステム上でアプリケーションプログラマにアーキテクチャ上の対称性の幻想を呈するために利用されうる。プロキシ実行のさらなる議論のために図13が参照される。図13は、一つまたは複数の隔離シーケンサーbおよび一つまたは複数のOS可視シーケンサーaを含むマルチシーケンサーシステムにおけるプロキシ実行機構の少なくとも一つの実施形態を示す制御フロー図である。図13に示されるような少なくとも一つの実施形態については、OS可視シーケンサーaのためのゲストOSは隔離シーケンサーb上で実行されているシュレッドは認識しないと想定される。また、隔離シーケンサーb上で走っているシュレッドは、OSサービスを必要とする特権命令を実行することはできないものと想定される。少なくとも一つの実施例については、図13に示される方法1300はSELのプロキシ実行モジュールによって実行されうる図4に示されるSEL402のモジュール406参照。概括的には、図13は、OS可視シーケンサーaが、ページフォールト、システムコールなどといった、オペレーティングシステムからの何らかの形のサービスを必要とするイベントを扱うために、シュレッドのなりすましをする実施形態を示している。この方法により、オペレーティングシステムは、シュレッド実行の間に起こったシステムイベントにサービスするようトリガーされる。解説の目的のため、図13は、シュレッドによって生成されるページフォールトを扱うためのプロキシ実行を利用する方法を示している。しかしながら、当業者は、シュレッドのために、いかなる例外、割り込み、システムコールまたはその他の特権イベントおよび/もしくはシステムイベントを扱うためにも、図13に示される方法1300の代替的な諸実施形態を利用しうることを認識するであろう。図13に示されたプロキシ機構の少なくとも一つの実施形態については、動作の三つの段階が図示されている。第一段階1310では、初期化が実行される。そのような初期化1310はSEL1350によって実行されうる。そのような初期化1310の間に、隔離シーケンサーb上で走っているシュレッドが選ばれた型のシステムイベントに遭遇するときはいつでもSEL1350制御への遷移が起こるよう、制御構造が構成される。そのような初期化1310は、ページフォールト、システムコールなどといった、プロキシ実行が望まれる複数の型のシステムイベントについて実行されてもよい。初期化1310の結果として、隔離シーケンサーb上のスレッドの実行の間に、選ばれたイベント型の一つが起こるときは常に、SEL1350が制御を得る。SEL1350がVMMの一部である実施形態については、初期化1310は、選ばれたシステムイベントのいずれかの生起に際してVMEXITVMMへの制御の移行を引き起こす機構を実施する。少なくとも一つの実施例については、初期化1310は、隔離シーケンサーbのためのVMCS1382内で、所望のシステムイベントについての例外ビットをセットすることによって実行されうる。図13には隔離シーケンサーb一つとその対応するVMCS1382が示されているだけだが、初期化1310は複数の隔離シーケンサーについて実行されてもよいことは理解しておくべきである。図13は、隔離シーケンサーbによって第二段階1320が実行されうることを示している。隔離シーケンサーb上でのスレッドの実行の間に、シーケンサーは選ばれたシステムイベントの一つを生成しうる。そのシステムイベントを受けて、そのシュレッドのためのイベントハンドラ図示せずがそのシュレッドの現在状態を捕捉しうる。該現在状態は、そのシュレッドについての現在EIPのほかシーケンサーによって生成された任意のエラーコードをも含む、イベントの処理または同定を容易にするものである。ゲストOSとしてウィンドウズ登録商標オペレーティングシステムを含む実施例については、シュレッド状態の捕捉は、システムイベントを引き起こした命令のアドレスを捕捉する、CR2制御レジスタの値を捕捉することを含みうる。次いでイベントハンドラはSEL1350制御への遷移1301を生成しうる。SEL1350がVMMの一部である実施形態については、第二段階1320の間に生成される遷移1301はVMEXITと呼ばれうる。その際、第二段階1320の間、SEL1350制御への遷移VMEXITのようなは、選ばれたシステムイベントの一つが起こるときにトリガーされる。そのような遷移1301は、シーケンサーbのための初期化1310の間にシーケンサーのVMCS1382においてセットされた例外ビットに基づいてトリガーされうる。図13は、VMEXIT型の遷移1301に際して、制御がSEL1350に移行されることを示している。第三段階1330の間に、SEL1350はプロキシ実行の方法1300を実行する。一般に、方法1300は、aOS可視シーケンサー上で走っているOS可視スレッドの状態を保存すること、bイベントを生成するシュレッドからOS可視シーケンサーに状態を移すこと、cOS可視シーケンサーに制御を移行して、OS可視シーケンサーがもし実現可能であれば該OS可視シーケンサー上で、隔離シーケンサー上で起こったイベントを再現することができるようにすること、それによりdオペレーティングシステムがそのイベントにサービスをすること、eSEL制御を再開して、OS可視シーケンサーのもとの状態を復元すること、ならびにf次いでOS可視シーケンサーおよび隔離シーケンサー両方についてのもとの実行ストリームを続けること、に関わる。方法1300のこれらの要素のそれぞれについて、以下でより詳細に論じる。ある代替的な実施形態については、SEL1350は、方法1300を実行するのではなく、単にイベントをトラップして、次いでユーザー生成されたエラー処理ルーチンを実行するためにあらかじめ割り当てられたアドレスにジャンプしうる。そのような代替的な実施形態については、方法1300の機能は、SEL1350ではなく、ユーザー生成されたエラー処理ルーチンによって実行されうる。図13が示すところでは、方法1300はブロック1302で始まり、ブロック1304に進む。ブロック1304では、SEL1350はシュレッド状態を隔離シーケンサーbからOS可視シーケンサーaに移す準備をする。少なくとも一つの実施例については、そのような準備1304は、イベントを生成する隔離シーケンサーbの状態を、OS可視シーケンサーaもアクセスできる状態記憶領域1315領域b参照に保存することを含む。そのような動作は、少なくとも一つの実施例については、SEL1350によって実行されるVMCALL命令の個別的なコンテキスト状態記憶変形に反応して実行されうる。少なくとも一つの実施例については、ここではSSAVEと称される見本のsampleコンテキスト状態記憶変形は、シーケンサー識別子と、保存領域1315へのポインタとを指定する。シュレッド状態マイグレーションのための準備1304はさらに、少なくとも一つの実施例については、OS可視シーケンサーaの状態を、該シーケンサーが隔離シーケンサーの状態を採用する前に保存することを含みうる。そのような方法では、OS可視シーケンサーaの状態は保存され、のちにOS可視シーケンサーaが自分のスレッドを再開するときに復元されうる。ここでもまた、OS可視シーケンサーaについての状態は、保存領域1315へのポインタを指定するコンテキスト保存命令に反応して、保存領域1315領域a参照に保存されうる。次いで処理はブロック1304からブロック1306に進みうる。ブロック1306では、イベントを生成するシュレッドのための制御は、隔離シーケンサーbからOS可視シーケンサーaに移行される。少なくとも一つの実施例については、移行1306は、OS可視シュレッドについての入行シナリオの実行によって実施される。このシナリオは、SELによるVMCALL命令のプロキシ変形の実行によってトリガーされうるものである。上述した代替的な実施形態については、移行1306は、隔離シーケンサーb上のエラー処理ルーチン図示せずによって生成されるVMCALLプロキシ命令によって実施されうる。VMCALL命令のプロキシ変形は、次のパラメータを指示しうる:宛先シーケンサー識別子、入行シナリオ識別子および待機/不待機指標。図13のブロック1306は、図13に示される例についての見本プロキシ命令についてのパラメータが、次のパラメータ値を含みうることを示している:a、beginproxy、待機。それにより、制御がシーケンサーaに移行されてプロキシシナリオの実行が開始され、隔離シーケンサーbは、自分の命令ストリームの実行を続ける前に該プロキシシナリオの完了を待つ。少なくとも一つの実施例については、制御のマイグレーション1306は、SEL1350によって実行される場合、OS可視シーケンサー上でのリング0からリング3への遷移を受けてSEL1350が制御を得るときに実行される。しかし、そのような待機は必須ではない。少なくとも一つの代替的な実施形態では、制御1306のマイグレーションは、SEL1350制御への次の遷移を待つのではなく、すぐに実行される。制御マイグレーション1306は、少なくとも一つの実施例については、イベントを生成するシーケンサーbについての保存された状態CR2およびEIPを含むを、状態領域1315部分bからプロキシシーケンサーaに移すことを含む。制御を移行する前に、SEL1350はまた、ブロック1306において、OS可視シーケンサー上にシステムイベントを注入するための諸ステップを取り得る。図13が示すところでは、ブロック1306で実行された制御移行を受けて、制御はOS可視シーケンサーaのためのOSに返される。制御移行1306は、OS可視シーケンサーaがその現在のスレッドの実行をサスペンドして、プロキシ実行ルーチン1400の先頭であるEIPbeginproxyで実行を開始するよう、譲歩命令として実装されうる。OS可視シーケンサーaがプロキシ実行ルーチン1400図14との関連でのちに論じるを実行したのち、ブロック1308で制御はSEL1350に戻る。ブロック1308では、SEL1350はOS可視シーケンサーのもとの状態ブロック1304で保存されたを、状態保存領域1315から復元する。そのような状態の復元は、VMCALL命令のRSTOR変形によって実装されうる。これは先に表1に挙げたRSTORシナリオに類似するものである。同様に、ブロック1308では、SEL1350は、隔離シーケンサーのもとの状態やはりブロック1304で保存されたを、状態保存領域1315のその対応する部分bから復元する。VMM1350は次いで、隔離シーケンサーb上のシュレッドと、OS可視シーケンサーa上のスレッドの両方を再開する。次いで方法1300はブロック1310で終わる。図14は、プロキシ実行方法1400を示すフローチャートである。少なくとも一つの実施例については、そのような方法1400は、OS可視シーケンサーのような一つのシーケンサーによって、隔離シーケンサーのような別のシーケンサーのために実行されうる。図14が示すところでは、方法1400はブロック1402で始まってブロック1404に進む。ブロック1404では、OS可視シーケンサーは、隔離シーケンサー上でトリガーされたシステムイベントを再現しようと試みる。少なくとも一つの実施例については、システムイベントの再現は、SEL1350による、OS可視シーケンサーaのためのOSへのシステムイベントの注入を介して達成されうる上記のブロック1306の議論を参照。少なくとも一つの実施例については、そのようなイベントは、VMMが例外を注入してからゲストOSを再開することを許容するベクターオンエントリーvectoronentry機能を使って注入されうる。このようにして、SEL1350はプロキシシーケンサーa上のシステムイベントのなりすましをすることができる。図14が示すところでは、イベントのなりすましは、OS可視シーケンサー上でのリング3からリング0への遷移を引き起こしうる。次いで処理はブロック1406に進む。ブロック1406では、プロキシシーケンサーのためのOSは、システムイベントをリング0特権レベルで処理する上記の図8との関連の非特権リング0レベル0Dを参照。たとえば、イベントがページフォールトである場合、そのイベントは、必要なら、ディスクからのページングによって処理1406されうる。ゲストOSのイベントハンドラは、ページテーブルを修正するなどといった、追加的なタスクをも実行しうる。次いで方法1400はブロック1408に進む。ブロック1408では、プロキシシーケンサーは、その命令ストリーム中で現在EIP値によって指示される次の命令を実行することを試みる。ここで、少なくとも一つの実施例については、プロキシシーケンサーについてのEIPは、プロキシに関係した状態マイグレーション図13、ブロック1306参照のために修正されていることがあることを注意しておく。よって、ブロック1408では、プロキシシーケンサーは、最初にプロキシ実行をトリガーしたたとえば図13におけるEIPtにおける命令を参照イベントを引き起こした命令を実行しようと試みることがありうる。少なくとも一つの実施例については、特権命令を実行する前記試みは、リング3からリング0への遷移を引き起こす。したがって、OS可視シーケンサーのためのゲストOSがブロック1406で例外にサービスしたのち、シーケンサーがブロック1408でイベントをトリガーする命令を実行しようと試みるときに、リング0からリング3への遷移が起こりうる。この遷移は、OSのイベント処理サービスの完了を示す。こうして、この遷移は、プロキシ実行サービスの終わりを合図する。こうしてプロキシ実行が完了すると、OS可視プロセッサ上でのなりすまされた処理が完了し、よって制御をもとのシーケンサーbに移し戻すことが適切である。たとえば図7のブロック730で実行されていたかもしれない初期化のため、リング遷移に際して生成される例外はSEL1350へのトラップを引き起こす。ブロック1408での、イベントを生成した命令を実行しようとする試みによって生成されるリング遷移に際して、制御はSEL1350図13のブロック1308参照に遷移して戻る。図13との関連で上に論じた処理は、OS可視シーケンサーを利用してOS不可視シーケンサーのために動作を実行する例示的な背景で論じられているが、そのような例示的な背景は限定するものと解釈すべきではない。たとえば、ある代替的な実施形態については、図13に示されるプロキシ機構の代替的な実施形態を利用して、あるOS隔離シーケンサーが別のOS隔離シーケンサーのために命令を実行するようにすることもできる。そのような実施形態は、たとえば、非対称的な複数のシーケンサーを含むマルチシーケンサーシステム上で利用されうる。このように、ここに開示される諸技法の諸実施形態を実行することのできるシステムの諸シーケンサーは、対称的である必要はないことに注意すべきである。諸シーケンサーは、計算の品質に影響する諸側面も含め、あらゆる仕方で異なりうる。たとえば、シーケンサーは電力消費、計算実行のスピード、機能上の特徴などに関して異なりうる。例として、ある実施形態については、シーケンサーは機能性の面で異なりうる。図7~図13に示した機能的な非対称性の例が示すところでは、少なくとも一つのシーケンサーがOSたとえば図1の140参照に可視でもよく、したがってシステムコール、ページフォールトへの対応などを実行するようなリング0動作を実行する機能をもちうる。他方、一つまたは複数の別のシーケンサーは、OSから隔離されていて、したがってリング0動作を実行することができないこともありうる。しかしながら、これは単に機能的な対称性についての一例である。マルチシーケンサーシステムの諸シーケンサーは、大きさ、語長および/またはデータ路サイズ、トポロジー、メモリ、電力消費、機能ユニット数、通信アーキテクチャマルチドロップかポイントツーポイント相互接続かまたは機能性、パフォーマンス、フットプリントなどに関係する他の任意の基準といった、あらゆる仕方で異なりうる。たとえば、一つのシーケンサーは整数および浮動小数点命令を実行する機能をもつが、ストリーミングSIMD拡張3SSE3のような単一命令多重データsingleinstructionmultipledataSIMD命令セット拡張は実行できないことがありうる。その一方で、別のシーケンサーは第一のシーケンサーが実行できるすべての命令を実行できる上にSSE3命令をも実行できることがありうる。そのような実施形態については、図13に示されるプロキシ機構の代替的な実施形態を利用して、SSE3命令を実行する機能のあるシーケンサーのような一つのOS隔離シーケンサーが、SSE3命令を実行する機能のないシーケンサーのような別のOS隔離シーケンサーのためのコードを実行するプロキシとしてはたらきうるようにできる。同様に、プロキシ実行機構のある実施形態は、たとえば、隔離されたプロセッサによってサポートされていない特別な浮動小数点命令の実行を実施するために呼び出されうる。このようにして、非対称性は、アプリケーションプログラマにとって透明でありうる。ここで議論されたシュレッド化エミュレーション層および関連する技法は、単一コアSMTシステムたとえば図3の310参照およびマルチコアシステムたとえば図3の350参照を含め、いかなるマルチシーケンサーシステム上でも実装されうる。そのようなシステムのさらなる議論について、図15との関連で以下に論じる。図15は、開示されている諸技法を実行する機能のあるコンピューティングシステム1500の少なくとも一つの見本実施形態を示している。コンピューティングシステム1500は少なくとも一つのプロセッサコア1504およびメモリシステム1540を含む。メモリシステム1540はより大きな、比較的より遅いメモリ記憶1502とともに、命令キャッシュ1544および/もしくはデータキャッシュ1542のような一つもしくは複数のより小さな比較的高速のキャッシュを含みうる。メモリ記憶1502は、プロセッサコア1504の動作を制御するための命令1510およびデータ1512を保存しうる。メモリシステム1540はメモリの一般化された表現として意図されており、ハードドライブ、CDROM、ランダムアクセスメモリRAM、動的ランダムアクセスメモリDRAM、静的ランダムアクセスメモリSRAM、フラッシュメモリおよび関係した回路といった多様な形のメモリを含みうる。メモリシステム1540は、プロセッサ1504によって実行されうるデータ信号によって表現される命令1510および/またはデータ1512を保存しうる。命令1510および/またはデータ1512は、ここに議論された技術のいずれかまたは全部を実行するためのコードおよび/またはデータを含みうる。たとえば、データ1512は、シュレッド化エミュレーション層を実装するための命令を含みうる。プロセッサ1504は、実行コア1530に命令情報を供給するフロントエンド1520を含みうる。フェッチされた命令情報は、実行コア1530による実行を待つべく、キャッシュ1525にバッファリングされうる。フロントエンド1520は、その命令情報をプログラム順に実行コア1530に供給しうる。少なくとも一つの実施例については、フロントエンド1520は、実行されるべき次の命令を決めるフェッチ/デコードユニット322を含む。システム1500の少なくとも一つの実施例については、フェッチ/デコードユニット322は、単一の次命令ポインタおよびフェッチ論理320を含みうる。しかしながら、各プロセッサ1504が複数スレッドコンテキストをサポートする実施形態では、フェッチ/デコードユニット322は、サポートされるスレッドコンテキストそれぞれについて相異なる次命令ポインタおよびフェッチ論理320を実装する。マルチプロセッサ環境における追加的な次命令ポインタおよびフェッチ論理320が任意的であるという性質は、図15で点線によって表されている。ここに記載される諸方法の実施形態は、ハードウェア、ハードウェアエミュレーションソフトウェアもしくはその他のソフトウェア、ファームウェアまたはそのような実装手法の組み合わせにおいて実装されうる。本発明の実施形態は、少なくとも一つのプロセッサ、データ記憶システム揮発性および不揮発性のメモリおよび/または記憶要素を含む、少なくとも一つの入力装置ならびに少なくとも一つの出力装置を有するプログラム可能システムのために実装されうる。本出願の目的のためには、処理システムは、たとえばデジタル信号プロセッサDSP、マイクロコントローラ、特定用途向け集積回路ASICまたはマイクロプロセッサといったプロセッサをもつ任意のシステムを含む。プログラムは、汎用または特殊目的プログラム可能処理システムによって読み取り可能な記憶媒体またはデバイスたとえばハードディスクドライブ、フロッピー登録商標ディスクドライブ、読み出し専用メモリROM、CDROMデバイス、フラッシュメモリデバイス、デジタル多用途ディスクDVDまたはその他の記憶デバイス上に記憶されうる。処理システム中のプロセッサにとってアクセス可能な命令が、該処理システムによって前記記憶媒体またはデバイスが読まれたときに、ここに記載される手順を実行するために、該処理システムを構成設定し、動作させることを提供する。本発明の実施形態は、処理システムとともに使用するよう構成された機械可読記憶媒体として実装されると考えられてもよい。ここで、そのように構成された記憶媒体は、処理システムをして、ここに記載される機能を実行するために特定かつ所定の仕方で動作させる。見本システム1400は、インテル社から入手可能なペンティアム登録商標、ペンティアム登録商標プロ、ペンティアム登録商標II、ペンティアム登録商標III、ペンティアム登録商標4およびアイテニアム登録商標およびアイテニアム登録商標2といったマイクロプロセッサに基づいた処理システムを表す。ただし、その他のシステム他のマイクロプロセッサをもつパーソナルコンピュータPC、エンジニアリングワークステーション、携帯情報端末およびその他のハンドヘルド装置、セットトップボックスなどを含むを使ってもよい。ある実施例については、見本システムはマイクロソフト社から入手可能なウィンドウズ登録商標オペレーティングシステムのあるバージョンを実行してもよい。ただし、他のオペレーティングシステムおよびグラフィカルユーザーインターフェースなどを使用してもよい。本発明の具体的な実施形態について図示し、記載してきたが、より広い諸側面における付属の請求項の範囲から外れることなく変更および修正をなすことができることは当業者には明らかであろう。付属の請求項は、本発明の真の範囲内にはいるそのようなすべての変更および修正を包含する。本願発明の可能な態様をいくつか記載しておく。態様1オペレーティングシステムOSから隔離されたシーケンサーに一つまたは複数のスレッド制御信号を発する段階を有する方法であって;前記発する段階が、ユーザー生成された命令に反応して抽象化層によって実行される方法。態様2前記発する段階がさらに、OS可視スレッドにおける前記ユーザー生成された命令のOS可視シーケンサー上での実行に反応して前記抽象化層によって実行される、態様1記載の方法。態様3前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして命令のシーケンスの実行を開始させる信号を含む、態様1記載の方法。態様4前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして修正された命令ポインタアドレスにて命令のシーケンスの実行を開始させる信号を含む、態様3記載の方法。態様5前記ユーザー生成された命令が第一の命令シーケンスに含まれ、オペレーティングシステムによってスケジューリングされた該第一の命令シーケンスをある第一のシーケンサー上で実行し、並行して、前記隔離されたシーケンサー上で第二の命令シーケンスを実行する、ことをさらに含む、態様1記載の方法。態様6前記隔離されたシーケンサーのための実行環境を生成する段階をさらに有する態様1記載の方法であって;前記生成する段階が前記抽象化層によって実行される、方法。態様7前記スレッド制御信号がさらに:前記隔離されたシーケンサー上での実行に割り込むための信号を含む、態様1記載の方法。態様8前記スレッド制御信号がさらに:割り込み信号を含む、態様7記載の方法。態様9OS可視シーケンサーをして、前記隔離されたシーケンサーに代わってのイベント処理ルーチンの実行をトリガーさせる一組の動作を実行する段階をさらに有する態様1記載の方法であって;前記一組の動作が前記抽象化層によって実行される、方法。態様10前記一組の動作がさらに:前記隔離されたシーケンサーについての状態を前記OS可視シーケンサーに移すこと、を含む、態様9記載の方法。態様11前記隔離されたシーケンサー上での実行のサスペンドを引き起こす一組の動作を実行する段階をさらに有する、態様1記載の方法であって;前記一組の動作が、OS可視シーケンサー上でのリング遷移に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサーを待機状態に入れる信号を含む、方法。態様12前記一組の動作がさらに:OSに透明な仕方で、前記OS可視シーケンサー上でリング遷移を追跡すること、を含む、態様11記載の方法。態様13前記隔離されたシーケンサー上での実行の再開を引き起こす一組の動作を実行する段階をさらに有する、態様1記載の方法であって;前記一組の動作が、OS可視シーケンサー上での例外処理ルーチンの完了に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサー上での実行を再開する信号を含む、方法。態様14前記一組の動作がさらに:前記OS可視シーケンサー上のブレークポイントをクリアすること、を含む、態様13記載の方法。態様15複数の命令ストリームを並行して実行する複数のシーケンサーと;前記複数のシーケンサーに結合されたメモリと;前記複数のシーケンサーに結合され、前記複数のシーケンサーのうち一つまたは複数をオペレーティングシステムから隔離する抽象化層、とを有するシステムであって、前記抽象化層がさらに、前記隔離されたシーケンサーのうち一つまたは複数の上の前記命令ストリームの一つまたは複数の実行を制御する、システム。態様16前記複数のシーケンサーの少なくとも一つが、他のシーケンサーのうち一つまたは複数に対してコンピューティング面で非対称的である、態様15記載のシステム。態様17前記メモリがDRAMである、態様15記載のシステム。態様18前記抽象化層がさらに、前記一つまたは複数のシーケンサーを隔離するためのシーケンサー隔離モジュールを含む、態様15記載のシステム。態様19前記抽象化層がさらに、前記隔離されたシーケンサーのためにオペレーティングシステムサービスを呼び出すためのプロキシ実行モジュールを含む、態様15記載のシステム。態様20前記抽象化層がさらに、前記複数のシーケンサーのうち少なくとも二つの間の信号伝達を提供するためのシーケンサー算術モジュールを含む、態様15記載のシステム。態様21前記抽象化層がさらに、前記隔離されたシーケンサーのうち少なくとも一つをして、オペレーティングシステムのリング0動作の間、動作をサスペンドさせるための遷移検出モジュールを含む、態様15記載のシステム。態様22前記抽象化層がさらに、前記隔離されたシーケンサーのうち少なくとも一つをして、オペレーティングシステムのリング0動作のあと、動作を再開させるための遷移検出モジュールを含む、態様21記載のシステム。態様23前記抽象化層のための命令が前記メモリに含まれる、態様15記載のシステム。態様24前記メモリが、前記抽象化層のゲストとしてオペレーティングシステムを走らせるための命令を含む、態様15記載のシステム。態様25抽象化層のための複数の機械アクセス可能命令を有する機械アクセス可能媒体を有する物品であって、前記命令がプロセッサによって実行されたときに、前記命令は:オペレーティングシステムOSから隔離されたシーケンサーに一つまたは複数のスレッド制御信号を発する動作を提供し;前記発する動作のための前記命令が、ユーザー生成された命令に反応して前記抽象化層によって実行される、物品。態様26前記発する動作のための前記命令がさらに、OS可視スレッドにおける前記ユーザー生成された命令のOS可視シーケンサー上での実行に反応して前記抽象化層によって実行される、態様25記載の物品。態様27前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして命令のシーケンスの実行を開始させる信号を含む、態様25記載の物品。態様28前記一つまたは複数のスレッド制御信号がさらに、前記隔離されたシーケンサーをして修正された命令ポインタアドレスにて命令のシーケンスの実行を開始させる信号を含む、態様27記載の物品。態様29前記プロセッサがさらに:前記ユーザー生成された命令を含み、オペレーティングシステムによってスケジューリングされた該第一の命令シーケンスを、ある第一のシーケンサー上で実行し、並行して、前記隔離されたシーケンサー上で第二の命令シーケンスを実行する、態様25記載の物品。態様30前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:前記隔離されたシーケンサーのための実行環境を生成する動作を提供する命令を含む、態様25記載の物品。態様31前記スレッド制御信号がさらに:前記隔離されたシーケンサー上での実行に割り込むための信号を含む、態様25記載の物品。態様32前記スレッド制御信号がさらに:割り込み信号を含む、態様31記載の物品。態様33前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:OS可視シーケンサーをして、前記隔離されたシーケンサーに代わってのイベント処理ルーチンの実行をトリガーさせる一組の動作を実行する動作を提供する、態様25記載の物品。態様34前記一組の動作がさらに:前記隔離されたシーケンサーについての状態を前記OS可視シーケンサーに移すこと、を含む、態様33記載の物品。態様35前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:前記隔離されたシーケンサー上での実行のサスペンドを引き起こす一組の動作を実行する動作を提供する、態様25記載の物品であって;前記一組の動作が、OS可視シーケンサー上でのリング遷移に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサーを待機状態に入れる信号を含む、物品。態様36前記一組の動作がさらに:前記OS可視シーケンサー上にブレークポイントを設定すること、を含む、態様35記載の物品。態様37前記抽象化層命令がさらに、前記プロセッサによって実行されたときに:前記隔離されたシーケンサー上での実行の再開を引き起こす一組の動作を実行する動作を提供する、態様25記載の物品であって;前記一組の動作が、OS可視シーケンサー上での例外処理ルーチンの完了に反応して前記抽象化層によって実行され;前記一組の動作がさらに、前記一つまたは複数の制御信号を発することを含み、該制御信号が前記隔離されたシーケンサー上での実行を再開する信号を含む、物品。態様38前記一組の動作がさらに:前記OS可視シーケンサー上のブレークポイントをクリアすること、を含む、態様37記載の物品。態様39態様12記載の方法であって、前記追跡することがさらに:前記OS可視シーケンサーのためのブレークポイントを設定することを含む、方法。