(57)【要約】      （修正有）【課題】ＯＳによって直接には管理されないプロセッサ上で実行されるようにユーザレベルスレッドをスケジューリングするためのメカニズムを提供する。【解決手段】第１命令シーケンサ上のユーザレベルスレッドを、アプリケーションレベルプログラムの制御下にある第２命令シーケンサ上でのユーザレベル命令の実行に応答して管理する。第１ユーザレベルスレッドは第２命令シーケンサ上で動作し、１つ以上のユーザレベル命令を含む。第１ユーザレベル命令は、少なくとも、１）１つ以上の命令シーケンサを参照するフィールド、または２）コードの実行時に１つ以上の命令シーケンサを特定的にアドレシングするコードへのポインタによる暗黙的参照、を有する。【選択図】図３Ｂ
2011023032.tif 000002
【特許請求の範囲】
【請求項１】
第１命令シーケンサ上のユーザレベルスレッドを、アプリケーションレベルプログラムの制御下にある第２命令シーケンサ上でのユーザレベル命令の実行に応答して管理することと、
前記第２命令シーケンサ上の１つ以上のユーザレベル命令を含む第１ユーザレベルスレッドを実行することと
を含み、
第１ユーザレベル命令は、１）１つ以上の命令シーケンサを参照するフィールド、および２）コードの実行時に１つ以上の命令シーケンサを特定的にアドレシングするコードへのポインタによる暗黙的参照、の少なくとも１つを有する方法。
【請求項２】
前記ユーザレベルスレッドを管理することは、ユーザレベルスレッド生成オペレーション、ユーザレベルスレッド制御オペレーションおよびユーザレベルスレッド同期オペレーションからなるグループから選択されるユーザレベルスレッドオペレーションに対して、シーケンサ認識状態および制御トランスファオペレーションを行うことを含む、請求項１に記載の方法。
【請求項３】
ソース命令シーケンサ上でユーザレベル制御トランスファ命令を実行することをさらに含み、前記ユーザレベル制御トランスファ命令は、制御メッセージおよびデスティネーション命令シーケンサを特定し、前記ソース命令シーケンサは、前記ユーザレベル制御トランスファ命令の実行に応答して、前記制御メッセージを含む信号を前記デスティネーション命令シーケンサへ送信する、請求項１に記載の方法。
【請求項４】
ソース命令シーケンサ上でユーザレベルモニタリング命令を実行することをさらに含み、前記ユーザレベルモニタリング命令は、デスティネーション命令シーケンサ、制御メッセージ、およびユーザレベルスレッドオペレーションを実行するべく前記制御メッセージに関連付けられたハンドラコードの位置を特定し、前記ユーザレベルモニタリング命令の実行に応答して前記デスティネーション命令シーケンサ、前記制御メッセージおよび前記ハンドラコードの位置間のマッピングを生成する、請求項１に記載の方法。
【請求項５】
１つ以上の他の命令シーケンサを特定し、かつ、前記１つ以上の他の命令シーケンサの実行コンテキストに前記ユーザレベル保存命令の実行に応答して保存されるようにする、前記第１命令シーケンサ上でユーザレベル保存命令を実行することをさらに含む、請求項１に記載の方法。
【請求項６】
１つ以上の他の命令シーケンサを特定する前記第１命令シーケンサ上でユーザレベル回復命令を実行することをさらに含み、前記１つ以上の他の命令シーケンサの実行コンテキストは、前記ユーザレベル命令が実行されるときに回復される、請求項１に記載の方法。
【請求項７】
前記第１ユーザレベルスレッドの実行中に所定の条件に遭遇するときに、前記第２命令シーケンサからの命令の実行を移動して前記第１命令シーケンサ上でその命令の一部を実行することをさらに含む、請求項１に記載の方法。
【請求項８】
前記所定の条件は、前記アプリケーションレベルプログラムの制御下にある前記第２命令シーケンサと前記第１命令シーケンサとの間の非対称条件の検知である、請求項７に記載の方法。
【請求項９】
前記非対称条件は、オペレーティングシステム（ＯＳ）にフォールトをリゾルブするべくＯＳオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム（ＯＳ）にトラップをリゾルブするべくＯＳオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接ＯＳサービスをアクティベートできない前記命令シーケンサ上のシステムコール、または、前記アプリケーションレベルプログラムの制御下にある命令シーケンサが、前記第１ユーザレベルスレッドからの第１命令の実行をサポートするビルトインリソースを欠く非推奨オペレーションフォールトからなるグループから選択される、請求項８に記載の方法。
【請求項１０】
ＯＳ隔離命令シーケンサからＯＳ可視命令シーケンサへ制御および状態情報をトランスファすることと、
前記ＯＳ隔離命令シーケンサ上の前記第１ユーザレベルスレッドから前記ＯＳ可視命令シーケンサへ少なくとも１つの命令の実行を移動して、前記ＯＳ可視命令シーケンサが前記ＯＳ隔離命令シーケンサに代わってＯＳサービスを行うべくオペレーティングシステムをトリガすることと
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記アプリケーションレベルプログラムの制御下にある前記第２命令シーケンサ中の前記第１ユーザレベルスレッドの実行をサスペンドすることと、
前記第２命令シーケンサからＯＳ可視命令シーケンサへ、メモリに格納された内容に向けられるアドレスポインタをトランスファすることと、
前記アドレスポインタにおける前記内容を前記ＯＳ可視命令シーケンサによってロードすることと、
前記アドレスポインタにおける前記内容がロードされた後に前記第２命令シーケンサ中の前記第１ユーザレベルスレッドの実行をレジュームすることと
をさらに含む、請求項１に記載の方法。
【請求項１２】
特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された１つ以上の命令シーケンサを有するプロセッサと、
第１シーケンサ認識ユーザレベル命令をデコードする１つ以上のデコーダと、
前記第１シーケンサ認識ユーザレベル命令を実行する１つ以上の命令実行ユニットと
を有する装置。
【請求項１３】
第２命令シーケンサを特定する前記第１シーケンサ認識ユーザレベル命令をデコードする第１デコーダを有する第１命令シーケンサをさらに含む、請求項１２に記載の装置。
【請求項１４】
実行時に関連コードの実行によって第２命令シーケンサを暗黙的に参照する前記第１シーケンサ認識ユーザレベル命令を実行する命令実行ユニットを有する第１命令シーケンサをさらに含む、請求項１２に記載の装置。
【請求項１５】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容を、デコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、制御メッセージおよびデスティネーション命令シーケンサを特定する１つ以上のフィールドを有する制御トランスファ命令を含む、請求項１２に記載の装置。
【請求項１６】
第１シーケンサ認識ユーザレベル命令を実行する第１命令実行ユニットをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、前記第１命令実行ユニットによる実行時にデスティネーション命令シーケンサをセマンティックに参照するデータペイロード部分を含む制御トランスファ命令を有する、請求項１２に記載の装置。
【請求項１７】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容をデコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、デスティネーション命令シーケンサ、制御メッセージ、および前記ユーザレベルスレッド管理オペレーションを実行するべく制御メッセージに関連付けられたハンドラコードの位置を特定する１つ以上のフィールドを有するモニタリング命令を含む、請求項１２に記載の装置。
【請求項１８】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容をデコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、前記命令シーケンサの少なくとも１つを特定する１つ以上のフィールドを有する保存命令を含み、前記命令シーケンサの少なくとも１つのコンテキスト状態が前記保存命令の実行に応答して保存される、請求項１２に記載の装置。
【請求項１９】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容をデコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、前記命令シーケンサの少なくとも１つを特定する１つ以上のフィールドを有する回復命令を含み、前記命令シーケンサの少なくとも１つの実行コンテキストが回復される、請求項１２に記載の装置。
【請求項２０】
前記ユーザレベルスレッド管理オペレーションは、ユーザレベルスレッド生成オペレーション、ユーザレベルスレッド制御オペレーション、およびユーザレベルスレッド同期オペレーションからなるグループから選択される、請求項１２に記載の装置。
【請求項２１】
命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
前記クライアントシーケンサ上の第１ユーザレベルスレッドの実行中に検知された所定の条件に応答して、かつ、オペレーティングシステムによる介入なしに、前記クライアント命令シーケンサに、前記クライアント命令シーケンサに代わっての前記サーバント命令シーケンサ上でのプロキシユーザレベルスレッドの実行をトリガさせることを可能にするプロキシ実行メカニズムと
をさらに含む、請求項１２に記載の装置。
【請求項２２】
前記クライアントリソースは、前記サーバントリソースに対して非対称的であり、前記所定の条件は、前記第１ユーザレベルスレッドが、前記クライアントシーケンサ上で利用不可能であるが前記サーバントシーケンサ上では利用可能であるリソースを使用しようとすることを示す、請求項２１に記載の装置。
【請求項２３】
前記プロキシ実行メカニズムは、前記クライアントリソースと前記サーバントリソースとの間の非対称性を、ユーザレベルプログラムからマスクする、請求項２２に記載の装置。
【請求項２４】
前記プロキシ実行メカニズムは、前記クライアント命令シーケンサに関連する出口シナリオのセットを含み、各出口シナリオは、前記サーバント命令シーケンサ上での前記プロキシ実行を開始するトリガ条件を規定する、請求項２１に記載の装置。
【請求項２５】
命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
前記クライアントシーケンサ上の第１ユーザレベルスレッドの実行中に検知された所定の条件に応答して、前記クライアント命令シーケンサに、前記クライアント命令シーケンサから前記サーバント命令シーケンサへの制御および状態情報のトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
をさらに含み、
前記クライアント命令シーケンサは、少なくとも１つの命令の実行を前記第１ユーザレベルスレッドから前記サーバント命令シーケンサへ移動し、前記サーバント命令シーケンサは、前記クライアント命令シーケンサに代わってＯＳオペレーションを実行するオペレーティングシステムをトリガする、請求項１２に記載の装置。
【請求項２６】
命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサをさらに含む、請求項１２に記載の装置。
【請求項２７】
命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサをさらに含む、請求項２６に記載の装置。
【請求項２８】
第１ユーザレベルスレッドの実行中に検知された非対称条件に応答して、前記クライアント命令シーケンサに、前記クライアント命令シーケンサから前記サーバント命令シーケンサへのアドレスポインタのトランスファをトリガさせることを可能にするプロキシ実行メカニズムを含み、前記サーバント命令シーケンサは、前記アドレスポインタにおける内容をロードし、前記クライアント命令シーケンサは、前記アドレスポインタにおける内容のロード完了後に前記第１ユーザレベルスレッドからの命令を実行する、請求項２７に記載の装置。
【請求項２９】
異なるユーザレベルスレッドを実行するための２つ以上の命令シーケンサを含むプロセッサであって、前記２つ以上の命令シーケンサの少なくともいくつかは、特定の命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令をそれらの命令セットの中に含むプロセッサと、
前記シーケンサ認識ユーザレベル命令を実行する場合にアプリケーションレベルプログラムの制御下で動作する第１命令シーケンサと、
オペレーティングシステムの制御下で動作する第２命令シーケンサと、
前記プロセッサに接続されて前記オペレーティングシステムを中に格納する不揮発性格納デバイスと
を含むシステム。
【請求項３０】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容をデコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、制御メッセージおよびデスティネーション命令シーケンサを特定する１つ以上のフィールドを有する制御トランスファ命令と、前記フィールド内の内容をデコードされた命令コードに変換する第１デコーダとを含む、請求項２９に記載のシステム。
【請求項３１】
第１シーケンサ認識ユーザレベル命令を実行する第１命令実行ユニットをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、前記第１命令実行ユニットによる実行時にデスティネーション命令シーケンサをセマンティックに参照するデータペイロード部分を含む制御トランスファ命令を含む、請求項２９に記載のシステム。
【請求項３２】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容をデコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、デスティネーション命令シーケンサ、制御メッセージ、および、前記ユーザレベルスレッド管理オペレーションを実行するべく制御メッセージに関連付けられたハンドラコードの位置を特定する１つ以上のフィールドを有するモニタリング命令を含む、請求項２９に記載のシステム。
【請求項３３】
第１シーケンサ認識ユーザレベル命令のフィールド内の内容をデコードされた命令コードに変換する第１デコーダをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、前記命令シーケンサの少なくとも１つを特定する１つ以上のフィールドを有する保存命令を含み、前記命令シーケンサの少なくとも１つのコンテキスト状態が前記保存命令の実行に応答して保存される、請求項２９に記載のシステム。
【請求項３４】
第１シーケンサ認識ユーザレベル命令を実行する第１命令実行ユニットをさらに含み、前記第１シーケンサ認識ユーザレベル命令は、前記命令シーケンサの少なくとも１つを特定する１つ以上のフィールドを有する回復命令を含み、前記命令シーケンサの少なくとも１つの実行コンテキストが回復される、請求項２９に記載のシステム。
【請求項３５】
第１シーケンサ認識ユーザレベル命令を実行する第１実行ユニットと、
前記第１シーケンサ認識ユーザレベル命令の実行に応答して、前記第１命令シーケンサに、前記第１命令シーケンサに代わっての前記第２命令シーケンサ上での第１ユーザレベルスレッドの実行をトリガさせることを可能にするプロキシ実行メカニズムと
をさらに含む、請求項２９に記載のシステム。
【請求項３６】
第１ユーザレベルスレッドの実行中に所定の条件が検知されたことに応答して、前記第１命令シーケンサに、前記第１命令シーケンサから前記第２命令シーケンサへの制御および状態情報のトランスファをトリガさせることを可能にするプロキシ実行メカニズムをさらに含み、前記第１命令シーケンサは、前記第１ユーザレベルスレッドから前記第２命令シーケンサへ少なくとも１つの命令の実行を移動して、前記第２命令シーケンサが前記第１命令シーケンサに代わってオペレーティングシステムのオペレーションを実行するべくオペレーティングシステムをトリガする、請求項２９に記載のシステム。
【請求項３７】
第１ユーザレベルスレッドの実行中に所定の条件が検知されたことに応答して、前記第１命令シーケンサに、前記第１命令シーケンサから前記第２命令シーケンサへのアドレスポインタのトランスファをトリガさせることを可能にするプロキシ実行メカニズムをさらに含み、前記第２命令シーケンサは、前記アドレスポインタにおける内容をロードし、前記第１命令シーケンサは、前記アドレスポインタにおける内容のロード完了後に前記第１ユーザレベルスレッドからの命令を実行する、請求項２９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は処理命令のための方法および装置に関する。
【背景技術】
【０００２】
マイクロプロセッサを含むシステムのような情報処理システムのパフォーマンスを向上させるため、ハードウェア技術およびソフトウェア技術の両方が用いられている。ハードウェア面において、マイクロプロセッサパフォーマンスを向上させるためのマイクロプロセッサ設計アプローチには、クロック速度の増大、パイプライン化、分岐予測、スーパースカラ実行、アウトオブオーダ実行およびキャッシュが含まれている。かかる多くのアプローチは、トランジスタ数の増大をもたらし、いくつかの例においては、パフォーマンス向上の割合よりも大きな割合でのトランジスタ数増大という結果にさえなっている。
【０００３】
トランジスタの追加に厳格に依存してパフォーマンスを向上させようとすること以外のパフォーマンス向上にはソフトウェア技術が含まれる。プロセッサのパフォーマンスを向上させるために用いられる１つのソフトウェアアプローチは「マルチスレディング」として知られる。ソフトウェアマルチスレディングにおいては、並列実行可能な命令ストリームは複数の命令ストリームに分割される。または、複数の独立ソフトウェアストリームが並列実行される。
【０００４】
タイムスライスマルチスレディングすなわちタイムマルチプレクス（「ＴＭＵＸ」）として知られる１つのアプローチでは、単数のプロセッサが一定時間の後にスレッド間の切り替えを行う。さらに別のアプローチでは、単数のプロセッサは、ロングレイテンシのキャッシュミスのようなトリガイベントの発生時にスレッド間の切替を行う。
【０００５】
スイッチオンイベントマルチスレディング（「ＳｏＥＭＴ」）として知られるこの後者のアプローチでは、最大でも１つのスレッドのみが所定時刻においてアクティブである。
【０００６】
ますます、マルチスレディングはハードウェアでサポートされている。例えば、１つのアプローチでは、チップマルチプロセッサ（「ＣＭＰ」）システム（単数チップパッケージ上のマルチプロセッサ）および対称型マルチプロセッサ（「ＳＭＰ」）システム（複数チップ上のマルチプロセッサ）のようなマルチプロセッサシステムのプロセッサは、各々が複数のソフトウェアスレッドの１つで同時に動作する。マルチスレッド同時処理（「ＳＭＴ」）と称される別のアプローチでは、単数の物理プロセッサコアが、オペレーティングシステムおよびユーザプログラムにとっては複数の論理プロセッサとして見える。ＳＭＴに対しては、複数のソフトウェアスレッドがアクティブになることができ、単数のプロセッサコア上で同時に実行される。すなわち、各論理プロセッサは完全なセットのアーキテクチャ状態を維持するが、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスのような、物理プロセッサの他の多くのリソースは共有される。したがって、ＳＭＴに対しては、複数のソフトウェアスレッドからの命令は各論理プロセッサ上で同時に実行される。
【０００７】
ＳＭＴ、ＳＭＰおよび／またはＣＭＰシステムのような、ソフトウェアスレッドの同時実行をサポートするシステムに対しては、オペレーティングシステムはソフトウェアスレッドのスケジューリングおよび実行を制御する。
【０００８】
または、いくつかのアプリケーションが、処理システム内の実行に対して複数スレッドを直接管理およびスケジューリングすることも可能である。かかるアプリケーションにスケジューリングされるスレッドはオペレーティングシステム（ＯＳ）から見えないのが一般的であり、ユーザレベルスレッドとして知られる。
【０００９】
通常は、ユーザレベルスレッドは、ＯＳによって管理される処理リソースに基づいて実行されるアプリケーションによって、実行がスケジューリングされるにすぎない。このため、マルチプロセッサを備える典型的な処理システムにおいては、ＯＳによって直接には管理されないプロセッサ上で実行されるようにユーザレベルスレッドをスケジューリングするためのメカニズムは存在しない。
【発明の開示】
【００１０】
以下の記載においては説明を目的として、多数の具体的な詳細が本発明の十分な理解を与えるように記載される。
【００１１】
しかし、本発明がこれらの具体的な詳細なしに実施できることは当業者には明らかである。他の例、構造およびデバイスは、本発明が不明瞭になることを避けるべくブロック図の形態で示される。
【００１２】
本明細書において「１つの実施例」または「実施例」という言及は、その実施例に関連して記載された具体的な機能、構造または特性が本発明の少なくとも１つの実施例に含まれることを意味する。本明細書の様々な箇所での「実施例において」という語句の登場は、必ずしもすべてが同じ実施例を参照するものではなく、他の実施例を除外する別個の実施例または変形実施例を参照するものでもない。さらに、いくつかの実施例によって示されるが他の実施例によっては示されない様々な特徴が記載される。同様に、いくつかの実施例には必要であるが他の実施例には必要ではない様々な要件が記載される。
【００１３】
以下の記載は、ＯＳ制御から隔離された複数のシーケンサシステムのシーケンサ上での実行スレッドを生成および制御するためのアーキテクチャメカニズムの実施例を説明する。
【００１４】
ここで使用される限りにおいて、用語「命令シーケンサ」または単なる「シーケンサ」は、次命令ポインタ論理および少なくともなんらかのプロセッサ状態を含む。例えば、命令シーケンサは、論理プロセッサまたは物理プロセッサコアを含む。
【００１５】
実施例において、アーキテクチャメカニズムはちょうど２つの命令を含み、それらはともに、ＯＳアプリケーションプログラムインターフェイスを使用することなく任意の２つのシーケンサ間の信号を送信および受信する信号交換メカニズムを規定する。信号は、アーキテクチャ上で規定されるイベントまたはシナリオを含み、ハンドラコードにマッピングされる。シーケンサにおいて信号を受信すると、信号内のシナリオは、そのシーケンサにハンドラコードへのベクトルを発生させるトリガとして動作する。２つの命令を使用することで、既存スレッドライブラリによって与えられるスレッド生成、スレッド制御およびスレッド同期ソフトウェアプリミティブを実行することが可能となる。
【００１６】
さらに、２つの命令は、以下に詳細に説明されるように、クライアントシーケンサに代わってコードをサーバントシーケンサに実行させるプロキシ実行メカニズムを生成するために使用される。
【００１７】
このため、異なるスレッドを実行する２つ以上の命令シーケンサを含むプロセッサシステムの例が説明される。２つ以上の命令シーケンサの少なくともいくつかは、シーケンサ認識ユーザレベル命令をその命令セットに含み、オペレーティングシステムの介入なしに、特定の命令シーケンサに基づくスレッド管理オペレーションによるインターシーケンサ制御が可能となる。シーケンサ認識ユーザレベル命令は、命令シーケンサ制御トランスファ命令、命令シーケンサモニタリング命令、コンテキスト保存命令およびコンテキスト回復命令を含む。プロセッサシステムはまた、ユーザレベル命令に応答するスレッド管理ロジックを有する。これにより、非隔離命令シーケンサは、オペレーティングシステムスケジューラなしに、関連する隔離命令シーケンサ上で実行される並列スレッドを生成することができる。また、プロセッサシステムは、プロキシ実行メカニズムを有する。これにより、クライアント命令シーケンサは、クライアントシーケンサ上での命令実行中に遭遇する所定のトリガ条件に応答して、かつ、オペレーティングシステムの介入なしに、プロキシスレッドをトリガしてクライアント命令シーケンサに代わってサーバント命令シーケンサを実行することができる。
【００１８】
ここで図１Ａの図面を参照すると、参照番号１００Ａには、本発明の１つの実施例に係るマルチシーケンサシステムが示される。マルチシーケンサシステム１００Ａは、メモリ１０２およびマルチシーケンサハードウェア１０４を含む。メモリ１０２は、ユーザレベルプログラム１０６を有する。ユーザレベルプログラム１０６は、マルチシーケンサハードウェア１０４上での実行のために命令をスケジューリングするスケジューラ１０８を含む。実行されるエクスプレスマルチスレッドに対し、ユーザレベルプログラム１０６は、ユーザレベルプログラム１０６にスレッド生成、制御および同期プリミティブを与えるスレッドライブラリに対して、スレッドＡＰＩ１１０を使用する。メモリ１０２の中にはまた、オペレーティングシステム１１２も配置される。マルチシーケンサハードウェア１０４は、複数のシーケンサを含む。その４つのみが図１Ａに示されている。図示の４つのシーケンサはそれぞれ、ＳＩＤ０、ＳＩＤ１、ＳＩＤ２およびＳＩＤ３で示される。
【００１９】
ここで使用される限り、「シーケンサ」は別個のスレッド実行リソースであり、スレッドを実行することができる任意の物理または論理ユニットである。命令シーケンサは、次命令ポインタ論理を含み、所定スレッドに対して実行されるべき次の命令を決定する。シーケンサは、論理スレッドユニットまたは物理スレッドユニットである。
【００２０】
実施例において、複数の命令シーケンサは同じプロセッサコア内にあってよい。実施例において、各命令シーケンサは異なるプロセッサコア内にあってよい。
【００２１】
所定のプロセッサコアに含まれるのは、命令セットアーキテクチャである。命令セットアーキテクチャ（ＩＳＡ）は、状態要素（レジスタ）、およびその状態要素上で実行される命令を含むプロセッサコアの抽象的モデルである。命令セットアーキテクチャは、プログラマおよびマイクロプロセッサ設計者の両者に対してプロセッサコアの挙動の抽象的仕様を与えることによって、ソフトウェアとハードウェアとの境界として機能する。命令セットは、プロセッサコアがデコードおよび実行可能な命令のセットを規定する。
【００２２】
ここに説明されるマルチシーケンサハードウェア１０４のチップマルチプロセシング（ＣＭＰ）実施例はシーケンサＳＩＤ０−ＳＩＤ３当たり１つのスレッドのみを言及するが、ここでの開示がシングルスレッドのプロセッサに限定されると仮定すべきではない。ここに説明される技術は、ＣＭＰプロセッサの各コアがおよびＳＭＴプロセッサまたはスイッチオンイベントマルチプロセッサ（ＳｏｅＭＴ）である、ＣＭＰプロセッサおよびＳＭＴプロセッサを備えるハイブリッドシステムを含む任意のチップマルチプロセシング（ＣＭＰ）またはマルチスレッド同時処理（ＳＭＴ）システムにおいて用いられてよい。例えば、ここに説明される技術は、複数のマルチスレッドプロセッサコアを単数チップパッケージ１０４内に含むシステムで使用されてよい。
【００２３】
シーケンサＳＩＤ０−ＳＩＤ３は必ずしも一様である必要はなく、計算の質に影響を与える処理速度、処理能力および電力消費のような任意の因子について非対称であってよい。例えば、シーケンサＳＩＤ０は、所定の命令セットアーキテクチャ（例えばＩＡ３２命令セットアーキテクチャ）のすべての命令を処理するように設計されるという点で「ヘビーウェイト」であってよい。他方、シーケンサＳＩＤ１は、それらの命令のうち選択されたサブセットのみを処理することができるという点で「ライトウェイト」であってもよい。別の実施例では、ヘビーウェイトプロセッサは、ライトウェイトプロセッサよりも高速に命令を処理するプロセッサであってよい。シーケンサＳＩＤ０はオペレーティングシステム（ＯＳ）にとって可視である一方、シーケンサＳＩＤ１からＳＩＤ３はＯＳから隔離されている。しかし、このことは、すべてのヘビーウェイトシーケンサがＯＳにとって可視であるか、またはすべてのライトウェイトシーケンサが隔離されているということではない。ここで使用する限り、用語「ＯＳから隔離されている」とは、隔離状態または条件に遷移したシーケンサを示す。かかる隔離状態または条件の特性は、かかる状態においてはＯＳがシーケンサに対して命令をスケジューリングしないということである。
【００２４】
わかるように、マルチシーケンサハードウェアまたはファームウェア（例えばマイクロコード）はまた、スレッド管理ロジック１１４も含む。実施例において、スレッド管理ロジック１１４は、シーケンサＳＩＤ０−ＳＩＤ３を可視化し、ユーザレベルプログラム１０６にとっては一様に見える。すなわち、スレッド管理ロジック１１４はシーケンサＳＩＤ０−ＳＩＤ３の非対称性をマスクし、アセンブリ言語プログラマから見える論理の視点からは、図面の図２に示すビュー２００に描かれているように、シーケンサＳＩＤ０−ＳＩＤ３は一様に見える。
【００２５】
システム１００Ａにおいては、図面の図１Ａに示すように、ユーザレベルプログラム１０６は、マルチシーケンサハードウェア１０４にぴったりと接続される。実施例において、ユーザレベルプログラム１０６は、中間ドライバを介してマルチシーケンサハードウェア１０４にゆるく接続されてもよい。かかるシステムは、図面の図１Ｂに、参照番号１００Ｂとして描かれている。システム１００Ｂは、システム１００Ａと基本的には同じであるが、ユーザレベルプログラムが、スケジューラ１０８を使用する代わりに、ドライバ、ハードウェアアブストラクションレイヤ等のようなデバイスドライバ１１６のようなカーネルレベルソフトウェアを使用する点で異なる。デバイスドライバ１１６は、カーネルレベルＡＰＩ１１８と通信し、マルチシーケンサハードウェア１０４上での実行のための命令をスケジューリングする。
【００２６】
図１Ｃは、ユーザレベル命令によるスレッド制御をサポートするマルチシーケンサシステムの実施例１０９、１１５、１５０、１７０の選択されたフィーチャを示すブロック図である。図１Ｃは、ＳＭＴマルチシーケンサマルチスレディングシステム１０９の選択されたフィーチャを示す。ここで、各シーケンサは、他の論理プロセッサ上での他のスレッドの実行と同時にスレッドを実行する論理プロセッサである。図１はまた、マルチシーケンサシステム１１５の少なくとも１つの実施例も示す。マルチシーケンサシステム１１５は、タイムマルチプレクシング型の切替メカニズムのようなスイッチオンイベント（ＳｏｅＭＴ）メカニズムを介して複数の論理シーケンサをサポートし、論理プロセッサの各々は交代でそのスレッドを実行する。すなわち、１つのみのスレッドがかかるシステム１１５上で一度に実行される。
【００２７】
図１Ｃはまた、マルチコアのマルチスレディングシステム１５０、１７０の選択されたフィーチャを示す。
【００２８】
マルチコアのマルチスレディングシステムのための物理コアはシングルシーケンサコア（例えばシステム１５０参照）またはマルチシーケンサコア（例えばシステム１７０参照）のどちらかでよい。かかるマルチコアマルチスレディングの実施例は後に以下に説明するが、シングルコアマルチシーケンサシステム１０９、１１５はここで以下に説明する。
【００２９】
ＳＭＴシステム１０９では、単数の物理プロセッサ１０３は、ここでＴＣ１からＴＣｎ（図示せず）で参照される複数のスレッドコンテキストとして見えるようにされる。スレッドコンテキストの各々は事実上シーケンサである。これらのスレッドコンテキストの少なくともいくつか（例えばｎ個のうちのｍ個）が、オペレーティングシステムおよび／またはユーザプログラムにとって可視にされると、これらのスレッドコンテキストは、時々論理プロセッサ（図示せず）として参照される。これらは、ここではＬＰ１からＬＰｍとして参照される。各スレッドコンテキストＴＣ１からＴＣｎはそれぞれ、アーキテクチャ状態ＡＳ１−ＡＳｎのセットを維持する。少なくとも１つの実施例において、アーキテクチャ状態は、データレジスタ、セグメントレジスタ、制御レジスタ、デバッグレジスタおよびモデル固有レジスタのほとんどを含む。スレッドコンテキストＴＣ１−ＴＣｎは、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスのような、物理プロセッサ１０３の他のリソースのほとんどを共有する。
【００３０】
かかるフィーチャが共有されても、マルチスレディングシステム１０９の各スレッドコンテキストは、次命令アドレスを独立して生成する（そして例えば、命令キャッシュ、実行命令キャッシュまたはトレースキャッシュからのフェッチを行う）。したがって、プロセッサ１０３は、論理的に独立した次命令ポインタおよびフェッチ論理１２０を含む。次命令ポインタおよびフェッチ論理１２０は、たとえ複数の論理シーケンサが単数の物理フェッチ／デコードユニット１２２に実装されていても、各スレッドコンテキストに対して命令をフェッチする。ＳＭＴ実施例に対しては、用語「シーケンサ」は、スレッドコンテキストのための少なくとも次命令ポインタおよびフェッチ論理１２０を、そのスレッドコンテキストに対する少なくともなんらかの関連アーキテクチャ状態ＡＳとともに含む。なお、ＳＭＴシステム１０９のシーケンサが対称的である必要はない。例えば、同じ物理プロセッサの２つのＳＭＴシーケンサが、各々が維持するアーキテクチャ状態情報の量において異なっていてもよい。
【００３１】
したがって、少なくとも１つの実施例において、マルチシーケンサシステム１０９は、同時マルチスレディングをサポートするシングルコアプロセッサ１０３である。かかる実施例に対しては、各シーケンサは、それ自体の次命令ポインタおよびフェッチ論理と、それ自体のアーキテクチャ状態情報とを有する論理プロセッサであるが、同じ物理プロセッサコア１０３はすべてのスレッド命令を実行する。かかる実施例に対しては、論理プロセッサはそれ自体のアーキテクチャ状態のバージョンを維持するが、シングルプロセッサコア１０３の実行リソースは同時実行スレッド間で共有されてよい。
【００３２】
図１Ｃはまた、マルチスレッドコードを実行可能なマルチシーケンサシステム１１５の別の実施例も示す。
【００３３】
実施例１１５は、スイッチオンイベントマルチスレディング（「ＳＯＥＭＴ」）実施例として称される。かかる実施例１１５に対しては、各シーケンサは、各シーケンサが、そのアーキテクチャ状態情報およびそれ自体の命令、次命令ポインタを有する論理プロセッサであるという点で、前の実施例１０９のシーケンサと類似する。しかし、システム１１５は、シーケンサの各々が、物理プロセッサコア１０３内のシングルフェッチ／デコードユニット１２２の同じ物理フェッチ論理１２０を他のシーケンサと共有するという点で、上述の１０９とは異なる。フェッチ論理１２０は、様々なスイッチオンイベントポリシーに基づいて、システム１１５の異なるシーケンサに対してフェッチするように切り替えられてもよい。スイッチオンイベントトリガは、タイムマルチプレクシング（ＴＭＵＸ）のような特定量の時間またはマシンサイクルの経過であってよい。他の実施例に対しては、ＳＯＥＭＴトリガは、キャッシュミスイベント、ページフォールト、ロングレイテンシ命令等のような他のイベントであってよい。
【００３４】
図１Ｃはまた、マルチコアマルチスレディングシステム１５０、１７０の少なくとも２つの実施例も示す。図１Ｃに示すマルチコアシステム１５０、１７０の少なくともいくつかの実施例に対しては、システムはプロセッサ１０３をビルディングブロックとして使用する。シーケンサの各々はプロセッサコア１０３であり、複数のコア１０３１−１０３ｎ、１０３１−１０３ｍはそれぞれ単数チップパッケージ１６０、１８０にある。図１Ｃに示すシステム１５０に対しては、各コア１０３ｉ（ｉ＝０からｎ）はシングルスレッドシーケンサであってよい。図１Ｃに示すシステム１７０に対しては、各コア１０３ｊ（ｊ＝１からｍ）はマルチシーケンサプロセッサコアであってよい。
【００３５】
チップパッケージ１６０、１８０は図１Ｃにおいて破線で示されるが、図示のマルチコアシステム１５０、１７０のシングルチップ実施例は単に説明のためのものにすぎない。他の実施例に対しては、マルチコアシステムのプロセッサコアは別個のチップ上にあってもよく、ＳＯＥＭＴマルチシーケンサシステムとしてまとめられてもよい。
【００３６】
図１Ｃに示す第１のマルチコアマルチスレディングシステム１５０は、２つ以上の別個の物理プロセッサ１０３１−１０３ｎを含んでよい。物理プロセッサ１０３１−１０３ｎは、異なるスレッドの少なくとも一部の実行が同時に進行中となるように各々が異なるスレッドを実行可能である。各プロセッサ１０３１から１０３ｎは、物理的に独立なフェッチユニット１２２を含む。フェッチユニット１２２はその各々のスレッドのための命令情報をフェッチする。各プロセッサ１０３１−１０３ｎが１つのスレッドを実行する実施例において、フェッチ／デコードユニット１２２は、シングル次命令ポインタおよびフェッチ論理１２０を実装する。
【００３７】
図１Ｃはまた、複数のＳＭＴシステム１０９を含むマルチコアマルチスレディングシステム１７０も示す。
【００３８】
かかる実施例１７０に対しては、各プロセッサ１０３１−１０３ｍは複数のスレッドコンテキストをサポートする。
【００３９】
例えば、各プロセッサ１０３１−１０３ｍは、ｋ個のシーケンサをサポートするＳＭＴプロセッサであり、システム１７０は事実上ｍ＊ｋ個のシーケンサを実装する。さらに、システム１７０のフェッチ／デコードユニット１２２は、各々サポートされたスレッドコンテキストに対して別個の次命令ポインタおよびフェッチ論理１２０を実装する。
【００４０】
説明の便宜上、以下の説明はマルチコアシステム１５０の実施例に絞り込むことにする。しかし、以下に記載のメカニズムはマルチコアまたはシングルコアのマルチシーケンサシステムのいずれで実施されてもよいので、この絞り込みは限定と解釈してはならない。また、シングルコアまたはマルチコアのシステムはシングルシーケンサコアまたはマルチシーケンサコアで実施される。各マルチシーケンサコアに対しては、ＳＭＴおよび／またはＳｏｅＭＴを含む１つ以上のマルチスレディング技術が利用される。図１Ｃに示すシステム１０９、１１５、１５０、１７０は、図１Ｃに示さないメモリシステム、実行ユニット等のような付加的なフィーチャを含んでよいことがわかるだろう。
【００４１】
図１Ｃに示す実施例のシステム１０９、１１５、１５０、１７０に対する各シーケンサ１０３は、固有の識別子に関連付けられる（図３に関連して以下に説明する）。様々な実施例のシステム１０９、１５０には、すべてのシーケンサについて異なる番号Ｎが含まれる。
【００４２】
図１Ｃに示す実施例のシステム１０９、１１５、１５０、１７０は各々、シーケンサ間の信号の交換をサポートする。ここで使用される限り、用語「シーケンサ算術演算」は、２つのシーケンサ間でサービスされるインターシーケンサ信号の交換を言及するために使用される。シーケンサ算術演算のためのアーキテクチャ上のサポートには、命令セットアーキテクチャに対する拡張が含まれ、１つ以上の命令が与えられてユーザ直接操作によるシーケンサ間の制御および状態のトランスファが可能になる。ユーザレベル命令が「シーケンサ認識」であるといわれるのは、論理シーケンサアドレスを、命令オペランドとしてエンコード可能なおよび／または命令実行時に暗黙的に参照可能なパラメータとして含むシーケンサ算術演算命令または他の任意のタイプの命令である場合である。かかる命令は、別のシーケンサと信号の交換を行うシーケンサ算術演算命令（ここでは「ユーザレベル制御トランスファ命令」と称する）、またはかかる信号をモニタするクライアントシーケンサのセットアップを行うシーケンサ算術演算命令（ここでは「ユーザレベルモニタ命令」と称する）のいずれかを含んでよい。
【００４３】
シーケンサ認識命令はまた、シーケンサ認識状態保存および回復命令のような論理シーケンサアドレスをパラメータとして含む他の命令を含んでよい。かかる状態保存命令の実行時には、第１のシーケンサは第２のシーケンサのアーキテクチャ状態のスナップショットコピーを生成することができる。シーケンサ認識回復命令は、保存アーキテクチャ状態が特定のシーケンサにロードされるように指定する。
【００４４】
各シーケンサ認識命令にはまた、１つ以上の論理シーケンサアドレスをパラメータとして含むオプションがある。
【００４５】
例えば、シーケンサ認識命令は、複数の論理シーケンサアドレスの集合をパラメータとして含んでよい。かかるアプローチは、１つのシーケンサから他の複数のシーケンサへインターシーケンサ信号をマルチキャストまたはブロードキャストするために使用されてよい。以下の説明を単純化するため、以下に記載される例は、特に明記のない限り、第１のシーケンサが他のシングル論理シーケンサアドレスを特定するシーケンサ認識命令を実行するというユニキャストの場合に言及される。かかるアプローチは、単に記載上の便宜および説明目的でなされるので、限定として解釈してはならない。当業者であれば、ここで説明されるメカニズムの実施例がシーケンサ認識命令をブロードキャストおよびマルチキャストにも同様に適用できることがわかるだろう。
【００４６】
図３Ａは、図１Ａ〜図１Ｃのシステムのための命令セットアーキテクチャのビューを示す。図面の図３Ａを参照すると、システム１００Ａおよび１００Ｂの命令セットアーキテクチャ（ＩＳＡ）ビュー３００が示される。ＩＳＡは、アセンブリ言語プログラマ、バイナリトランスレータ、アセンブラ等によって見えるとおりのバイナリシステムの論理ビューを規定する。そのＩＳＡによると、システム１００Ａおよび１００Ｂは、論理ストレージ３０２および命令セット３０４を含む。論理ストレージ３０２は、システム１００Ａおよび１００Ｂに対する可視メモリ階層、アドレシングスキーム、レジスタセット等を規定する一方で、命令セット３０４は、システム１００Ａおよび１００Ｂがサポートする命令および命令のフォーマットを規定する。実施例において、命令セット３０４は、ＩＡ３２命令セットおよびその拡張として知られる命令セットを含んでよいが、他の命令セットも可能である。さらに、実施例において、命令セット３０４は、ユーザレベル制御トランスファ命令およびユーザレベルモニタリング命令として知られる２つの命令を含む。ユーザレベル制御トランスファ命令の例はＳＸＦＲ命令である。ユーザレベルモニタリング命令の例はＳＥＭＯＮＩＴＯＲ命令である。ユーザレベル制御トランスファ命令およびユーザレベルモニタリング命令の理解を促すため、ＳＸＦＲ命令およびＳＥＭＯＮＩＴＯＲ命令の例が説明される。
【００４７】
広くは、ＳＸＦＲ命令は、第１のシーケンサから第２のシーケンサへ信号を送るために使用され、ＳＥＭＯＮＩＴＯＲ命令は、第１のシーケンサからの信号をモニタするように第２のシーケンサを設定するために使用される。さらに、これらの制御トランスファおよびモニタリング命令は、後に説明するようにシーケンサ認識され、さらにシーケンサ認識な複合命令を構成することができる。
【００４８】
図３Ｂは、２つ以上の命令シーケンサを備えるプロセッサの実施例の論理図を示す。命令シーケンサは、その命令セットの中にユーザレベル制御トランスファ命令およびユーザレベルモニタ命令を含む。プロセッサ３３２は、異なるスレッドを実行するべく１つ以上の命令シーケンサ３３８−３４２を含んでよい。実施例において、複数の命令シーケンサは、デコーダユニットおよび／または命令実行ユニットを共有することができる。同様に、各命令シーケンサは、第１デコーダユニット３３４のようなデコーダユニット、第１命令実行ユニット３３５のような命令実行ユニット等を含む、それ自体専用のプロセス命令パイプラインを有し得る。複数の命令シーケンサ３３８−３４２の少なくともいくつかは、ユーザレベルモニタリング命令（例えばＳＥＭＯＮＩＴＯＲ命令）、ユーザレベル制御トランスファ命令（例えばＳＸＦＲ命令）、シーケンサ認識格納命令（例えばＳＳＡＶＥ命令）、およびシーケンサ認識回復命令（例えばＳＲＳＴＯＲ命令）を少なくとも含む命令セット３４４を含む。または、シーケンサ認識格納および回復命令は、命令セット３４４の一部でなくてもよい。むしろ、ユーザレベル制御トランスファおよびモニタリング命令が命令セットの一部であり、それゆえハンドラコードに対するシナリオおよびポインタとともに使用されてシーケンサ認識格納および回復命令を構成する。シナリオのタイプは、マイクロアーキテクチャイベントに基づくアーキテクチャ上で規定された複合トリガ条件であり、後に説明する。
【００４９】
制御トランスファオペレーションのフローは以下のように生じる。
【００５０】
ユーザレベルモニタリング命令３４６の第１例は、命令シーケンサの１つ、ハンドラコードの位置に対するポインタおよびいくつかの制御トランスファシナリオの１つを特定する。モニタリング命令３４６によって、第１命令シーケンサ３３８のような実行命令シーケンサは、特定の命令シーケンサをセットアップし、特定の制御トランスファシナリオの信号を認識または受信するときに特定のメモリ位置のハンドラコードを呼び出す。ハンドラコードを格納する第１メモリ位置３４８は、レジスタ、キャッシュまたは他の類似する格納デバイスである。ユーザレベルモニタリング命令３４６が実行されて、最初に特定のターゲット命令シーケンサをセットアップし、制御トランスファ信号を、ソース命令シーケンサがこの制御トランスファ信号を送信する前に受信する。
【００５１】
第１命令シーケンサ３３８のような実行命令シーケンサは、シーケンサ認識保存命令を実行して、ターゲット命令シーケンサのコンテキスト状態を保存する。デスティネーション命令シーケンサのコンテキスト状態は、第２メモリ位置３５０に格納される。第２メモリ位置は、共有メモリアレイ内のまたは第１メモリ位置とは別個のメモリ領域の異なる位置であってよい。
【００５２】
制御トランスファ命令３５２の第１例は、命令シーケンサの１つおよび多くの制御トランスファシナリオの１つを特定する。特定された制御トランスファシナリオは、例えばテーブル３５４に格納される。制御トランスファ命令３５２によって、実行命令シーケンサは、第２命令シーケンサ３４０のような特定されたターゲット命令シーケンサによって受信される制御トランスファ信号を発生する。
【００５３】
特定されたターゲット命令シーケンサ３４０は、その命令シーケンサを特定する制御トランスファ命令３５２の実行に応答して生成された制御トランスファ信号を検知する。次に、特定されたターゲット命令シーケンサ３４０は、その命令シーケンサを特定したモニタリング命令３４６が特定したハンドラコードを実行する。
【００５４】
ハンドラコードの実行が完了した後、第１命令シーケンサ３３８（すなわちソース命令シーケンサ）は、シーケンサ認識回復命令を実行して、ターゲット命令のコンテキスト状態を第２メモリ位置３５０のその位置から回復する。
【００５５】
実施例において、プロセッサはマルチシーケンサハードウェアを含んでよい。各命令シーケンサは、異なるスレッドを実行することができる。複数の命令シーケンサの少なくともいくつかは、ユーザレベル命令を実行することができる。ユーザレベル命令はシーケンサ認識される。ユーザレベル命令の各々は、複数の命令シーケンサの少なくとも１つを特定する情報を含む。実行シーケンサ上での命令の実行によって、実行命令シーケンサは、複数の命令シーケンサの特定された１つに対して、オペレーティングシステムの介入なしにスレッド管理オペレーションを行う。スレッド管理オペレーションはスレッド生成、スレッド制御またはスレッド同期オペレーションであってよい。ユーザレベル命令の例は、以下により詳細に説明されるシーケンサ認識ＳＸＦＲ、ＳＥＭＯＮＩＴＯＲ、ＳＳＡＶＥおよびＳＲＳＴＲ命令を含む。
【００５６】
実施例において、ＳＸＦＲ命令は、図面の図４Ａに示す命令フォーマットを含む。図４Ａを参照すると、ＳＸＦＲ命令がオペコード４００Ａおよびオペランド４０２Ａから４１０Ａを含むのがわかる。オペランド４０２Ａは、信号が送信されるデスティネーション／ターゲットシーケンサのためのシーケンサＩＤ（ＳＩＤ）に対応する。オペランド４０４Ａはシナリオまたは制御メッセージを含む。シナリオまたは制御メッセージは、アーキテクチャ上で規定されて条件または予測イベントを表す識別子コードである。シナリオは、以下に説明するように非同期制御トランスファに影響を与えるために使用される。図面の図６Ａを参照すると、本発明の１つの実施例に係るシナリオのテーブルが示される。広くは、シナリオは、イントラシーケンサシナリオおよびインターシーケンサシナリオに分割される。実施例において、イントラシーケンサシナリオは、リソースノットアベイラブル（ＲＮＡ）のカテゴリに該当する。このカテゴリは、シーケンサ上では利用できないリソースへのアクセスに起因してシーケンサ上での実行中に生成されるイベントのカテゴリである。実施例において、ＲＮＡのカテゴリに該当するシナリオは、ページフォールト、ＯＳのサービスを直接アクティベートすることができるＯＳ隔離シーケンサ上のシステムコール、または非推奨オペレーションフォールトを含む。非推奨オペレーションフォールトは、シーケンサに実装されたＩＳＡフィーチャの限定されたまたは非推奨のサブセットによって生じるフォールトである。例えば、非推奨オペレーションフォールトは、浮動小数点加算器を要求する命令を実行しようとするときに、浮動小数点加算器を物理的に実装しないシーケンサ上で生じる。当業者にとっては、ここに記載のメカニズムを、アプリケーションソフトウェア、システムレベルソフトウェアもしくはマイクロコードのようなファームウェア、またはハードウェアに、異なるレベルのアブストラクションで実装することができる。
【００５７】
インターシーケンサシナリオの例には、「ＩＮＩＴ」シナリオ、「ＦＯＲＫ／ＥＸＥＣ」シナリオおよび「ＰＲＯＸＹ」シナリオと称される初期化シナリオが含まれる。ＩＮＩＴシナリオは、ＳＩＤがＳＸＦＲ命令において特定されたシーケンサによってシーケンサ固有のアーキテクチャ状態（例えば汎用レジスタまたはマシン固有制御レジスタ）のセットがそれぞれ初期値のセットに初期化されるようにする一方で、ＦＯＲＫ／ＥＸＥＣシナリオは、ＳＸＦＲ命令におけるデスティネーションＳＩＤによって特定されたシーケンサ上での並列スレッドの実行を分岐または開始するようにＳＸＦＲ命令を実行するシーケンサ上でのスレッド実行を、少なくとも命令ポインタ（ＥＩＰ）および／またはスタックポインタ（ＥＳＰ）を含むデスティネーションシーケンサ状態に所定値をセットすることによって行う。ＰＲＯＸＹシナリオは、ＳＸＦＲ命令におけるＳＩＤによって特定されるシーケンサを、例えばＳＸＦＲ命令を実行したシーケンサに代わって命令を処理するために、プロキシ実行モードで動作させる。例えば、実施例において、プロキシ実行モードで動作するシーケンサは、非推奨セットのＩＳＡフィーチャのみをサポートするシーケンサ上では処理できない命令を処理するために使用される。実施例において、ＰＲＯＸＹシナリオは、ＢＥＧＩＮ＿ＰＲＯＸＹシナリオおよびＥＮＤ＿ＰＲＯＸＹシナリオに分割される。ＢＥＧＩＮ＿ＰＲＯＸＹシナリオは、上述のように命令シーケンサをプロキシ実行モードでオペレーションさせる一方で、ＥＮＤ＿ＰＲＯＸＹシナリオは、プロキシ実行モードのオペレーションを終了させる。
【００５８】
図面の図４Ａを再び参照すると、実施例において、オペランド４０６Ａは、ＳＸＦＲ命令を実行するシーケンサ上での命令実行を条件付ける条件パラメータを含む。条件パラメータの例には、「ＷＡＩＴ」および「ＮＯＷＡＩＴ」パラメータが含まれる。例えば、ＳＸＦＲがＰＲＯＸＹシナリオとともに使用される場合、ＷＡＩＴ条件パラメータは、ＳＸＦＲ命令を実行するシーケンサ上での命令実行を、別のシーケンサ上でのプロキシ実行の完了を待つ間ストップさせる。ＮＯＷＡＩＴ条件パラメータは、ＳＸＦＲ命令を実行するシーケンサ上での実行が、別の命令シーケンサ上でのプロキシ実行と並列して続行することを規定する。
【００５９】
実施例において、オペランド４０８Ａは、シナリオ固有のペイロードまたはデータメッセージを含む。例えばＦＯＲＫ／ＥＸＥＣシナリオの場合においては、ペイロードは命令ポインタを含む。その命令ポインタにおいて、オペランド４０２Ａによって特定されたシーケンサ上での実行が開始する。異なる実施例によれば、ペイロードは、命令ポインタ、スタックポインタ等を含んでよい。ペイロードに含まれるアドレスは、リテラル、レジスタ間接およびベース／オフセットのアドレシングのような様々なアドレシングモードで表される。
【００６０】
オペランド４１０Ａは、オペランド４０２Ａに含まれるＳＩＤ上でのルーティング機能を特定する。ルーティング機能は、ＳＸＦＲ命令を実行した結果として生成される信号が、ブロードキャスト、ユニキャストまたはマルチキャスト信号として送信されるかを制御する。ルーティング機能はまた、信号を搬送するルーティングにおける基礎となるインターシーケンサ相互接続を補助するために使用可能なトポロジ固有のヒント情報をエンコードすることもできる。
【００６１】
ここで図面の図４Ｂを参照すると、本発明の１つの実施例に係るＳＥＭＯＮＩＴＯＲ命令のフォーマットが示される。見てわかるように、ＳＥＭＯＮＩＴＯＲ命令には、オペコード４００Ｂおよびオペランド４０２Ｂから４０６Ｂが含まれる。オペランド４０２Ｂは、例えばシナリオＩＤによって表されるシナリオを特定する。オペランド４０４Ｂは、シーケンサＩＤ（ＳＩＤ）および命令ポインタ（ＥＩＰ）を含むタプルを特定する。記載上の便宜のため、タプルは「ＳＩＤＥＩＰ」と称することにする。
【００６２】
ＳＥＭＯＮＩＴＯＲ命令は、オペランド４０２Ｂにおいて特定されるシナリオを、オペランド４０４Ｂにおいて特定されるＳＩＤＥＩＰにマッピングする。したがって、ＳＥＭＯＮＩＴＯＲ命令は、図面の図６Ｂに示すような、各シナリオを特定のＳＩＤＥＩＰにマッピングするマッピングテーブルを生成するために使用される。シナリオから特定のＳＩＤＥＩＰへのマッピングの各々には「サービスチャネル」という用語を用いる。オペランド４０６Ｂは、プログラマが１つ以上の制御パラメータを入力することを可能にする。制御パラメータは、以下に詳細を説明するように、特定のサービスチャネルがどのようにサービスされるかを制御する。プログラマはＳＥＭＯＮＩＴＯＲ命令を使用して、所定のシナリオをモニタするために特定のシーケンサが使用するサービスチャネルをプログラムすることができる。実施例において、シナリオに対応して予測された条件が認識された場合、シーケンサは、シナリオにマッピングされたＳＩＤＥＩＰにおいて開始するイールドイベントハンドラへの非同期制御トランスファを生じるイールドイベントを受ける。例えば、フォールトに対応して予測された条件の場合、ひとたび制御イールドイベントが生じると、現行（リターン）命令ポインタは現行スタック上にプッシュされ、認識されたシナリオにマッピングされたＳＩＤＥＩＰに制御がトランスファされる。トラップに対応して予測された条件の場合、次命令ポインタが現行スタック上にプッシュされ、認識されたシナリオにマッピングされたＳＩＤＥＩＰに制御がトランスファされる。フォールトは命令を、その命令が実行される前に処理してよい。トラップは命令を、その命令が実行された後に処理してよい。
【００６３】
実施例において、アーキテクチャ上で規定されたブロックビットは、イールドイベントの再帰トリガをブロックビットがリセットされるまで防止するためにセットされる。特定のリターン命令はブロックビットを自動的にリセットし、イールドイベントハンドラから、実行されてイールドイベントを生成したオリジナルコードに制御を戻す。上述に基づくと、ＳＸＦＲおよびＳＥＭＯＮＩＴＯＲの両方は、それらが所定のシーケンサを特定するオペランドを含むという点で、「シーケンサ認識」であることがわかる。さらに、後述するＳＳＡＶＥおよびＳＲＳＴＯＲ命令もまた、それらが所定のシーケンサを特定するオペランドを含むという点で、「シーケンサ認識」であることがわかる。また、これらのユーザレベル命令も、ハンドラコード内の命令に対するポインタを有するという点で、「シーケンサ認識」であることがわかる。命令実行ユニットによる実行時のハンドラコードは、そのハンドラコードが実行される場合の１つ以上の固有の命令シーケンサを参照する。ハンドラコードはユーザレベル命令に関連付けられる。というのは、ユーザレベル命令が命令ポインタにハンドラコードの開始を指示するからであり、かつ、ユーザレベル命令がハンドラコードが実行を終了した後にスレッドのオペレーションを指示するからである。したがって、ユーザレベル命令が１）１つ以上の命令シーケンサへの特定の参照を行うフィールド、または２）ハンドラコードが実行される場合に１つ以上の命令シーケンサを特定的にアドレシングするハンドラコードへのポインタによる暗黙的参照のいずれかを有する場合に、ユーザレベル命令はシーケンサ認識となる。
【００６４】
実施例において、命令ＳＸＦＲおよびＳＥＭＯＮＩＴＯＲは、図面の図５に関連して説明されるインターシーケンサ制御トランスファを実行するために使用される。
【００６５】
図５を参照すると、シーケンサ５００は、命令ポインタ「Ｉ」においてＳＸＦＲ命令に遭遇すると、シーケンサ５０２に制御をトランスファし、シーケンサ５０２に、命令ポインタ「Ｊ」において始まるハンドラ命令の実行を開始させる。実施例において、例えばＳＸＦＲ（５０２，ＢＥＧＩＮ＿ＰＲＯＸＹ，ＮＯＷＡＩＴ）のようなＳＸＦＲ（ＳＩＤ，ＳＣＥＮＡＲＩＯＪＤ，ＣＯＮＤＩＴＩＯＮＡＬ＿ＰＡＲＡＭＥＴＥＲ）フォーマットのＳＸＦＲ命令が、制御トランスファに影響を与えるために使用される。ＳＸＦＲ命令のフォーマットをさらに詳細に見ると、命令に現れる「ＳＩＤ」は、シーケンサ５０２に対するシーケンサ識別子（ＳＩＤ）を参照する。命令の「ＳＣＥＮＡＲＩＯＪＤ」部分は、上述のように、非同期制御トランスファを引き起こすシステム１００Ａおよび１００Ｂにプログラム可能なシナリオを参照する。上述のように、実施例において、システム１００Ａおよび１００Ｂは、図面の図６Ａにシナリオテーブルで示すシナリオをサポートする。各シナリオは、シナリオ識別子（ＩＤ）にエンコードされる。実施例において、特定のシナリオＩＤに対応する値はレジスタにプログラムされ、ＳＸＦＲ命令が実行されると、レジスタから読み出される。
【００６６】
実施例において、ＳＸＦＲ命令の「ＳＣＥＮＡＲＩＯＪＤ」部分に関連する命令ポインタをリゾルブするために、各シナリオをＳＩＤＥＩＰにマッピングする図６Ｂのマッピングテーブルが使用される。
【００６７】
上述のように、図６Ｂのテーブルをサービスチャネルによって満たすために、ＳＥＭＯＮＩＴＯＲ命令が使用される。例えば、ＳＥＭＯＮＩＴＯＲ（ＳＣＥＮＡＲＩＯＪＤ，ＳＩＤＥＩＰ）フォーマットの命令ＳＥＭＯＮＩＴＯＲ（１，（５０２，Ｊ））は、シーケンサ５０２上の命令ポインタ「Ｊ」を、ＳＣＥＮＡＲＩＯＪＤ＝１で示されるシナリオ、すなわちＢＥＧＩＮ＿ＰＲＯＸＹシナリオ、にマッピングする。シーケンサ５００上での命令ＳＸＦＲ（５０２，１）の実行によって、１のＳＣＥＮＡＲＩＯＪＤを含む信号は、シーケンサ５０２に搬送される。
【００６８】
信号に応答して、シーケンサ５０２は、ＢＥＧＩＮ＿ＰＲＯＸＹシナリオに関連するハンドラコードが始まる命令ポインタ「Ｊ」への制御トランスファを引き起こすイールドイベントを受ける。実施例において、信号受信に応答して命令ポインタ「Ｊ」で開始するハンドラコードを即座に実行する代わりに、シーケンサ５０２はいくつかの受信信号をキューに入れ、ひとたびそのいくつかの信号がしきい値を越えるとシーケンサ５０２は、その様々な信号に関連するハンドラコードを実行することによって信号を扱う。実施例において、シーケンサ５０２が信号を処理する具体的な方法、すなわち即座処理するかまたはキューを使用して遅延処理するか、およびそのしきい値は、ＳＥＭＯＮＩＴＯＲ命令の制御パラメータ４０６Ｂによって制御または設定される。要求をこうしてキューに入れることは、ソフトウェアで同様に行うこともできる。
【００６９】
実施例において、ハンドラコードは、サービススレッドに命令シーケンサ５０２上で実行開始させる命令を含む。
【００７０】
基本的には、サービススレッドは、別のシーケンサすなわち図５の場合におけるシーケンサ５００上で実行される第１スレッドの実行を援助または補助する任意のスレッドである。サービススレッドがシーケンサ５０２上で実行されるようにするためには、シーケンサ５００と５０２との間でなんらかの形態の状態トランスファが必要となる。
【００７１】
実施例において、シーケンサ固有のコンテキスト保存命令およびシーケンサ固有コンテキスト回復命令は、ＳＸＦＲおよびＳＥＭＯＮＩＴＯＲ命令に対して付加的に与えられる。シーケンサコンテキスト保存命令はＳＳＡＶＥとして示され、シーケンサコンテキスト回復オペレーションはＳＲＳＴＯＲとして示される。ＳＳＡＶＥおよびＳＲＳＴＯＲは両方ともシーケンサ認識命令である。その代わりに、最小限の標準命令セットがＳＸＦＲおよびＳＥＭＯＮＩＴＯＲ命令のみを含んでもよい。例えば、実施例において、シーケンサコンテキスト保存および／または回復のためのシナリオが規定される。ＳＸＦＲおよびＳＥＭＯＮＩＴＯＲ命令が、ハンドラコードに対するシナリオおよびポインタに関連して使用される場合。ターゲットシーケンサ上の対応するハンドラコードは、各シーケンサコンテキスト保存および／または回復オペレーションを行うことができて、専用のＳＲＳＴＯＲおよびＳＳＡＶＥ命令と同じ効果を達成する。
【００７２】
別の実施例において、シーケンサ認識コンテキスト保存命令は、コードブロックをマッピングしてシーケンサ認識コンテキスト保存を行うシナリオを有することによって合成できる。同様に、シナリオを使用してシーケンサ認識コンテキスト回復オペレーションを合成することもできる。
【００７３】
実施例において、ＳＳＡＶＥおよびＳＲＳＴＯＲ命令の両方は、ＳＩＤ１に対応するオペランドと、ＳＩＤオペランドによって特定されるシーケンサの状態が保存されるべき「保存領域」に対するアドレスを含むオペランドとを含む。図５の実施例において、シーケンサ５０２が、シーケンサ５００上で動作する第１スレッドの実行を容易にするかまたは補助するサービススレッドを実行できるためには、シーケンサ５０２がその第１スレッドに対する実行コンテキストへのアクセスを有することが必要である。シーケンサ５０２にとって利用可能な第１スレッドのための実行コンテキストを作るためには、命令ＳＳＡＶＥがシーケンサ５０２上で最初に実行されて、シーケンサ５００上で実行される第１スレッドのための実行コンテキストを第１メモリ位置５１２に保存する。シーケンサ５００に代わってサービススレッド計算を実行する前にシーケンサ５０２上で済んだ既存のワークを保存するために、５０２上で現在実行されているコード（以下「先行コード」）は、ＳＳＡＶＥを実行して先行コードの実行コンテキストを第２メモリ位置５１４に保存する。保存領域、第１メモリ位置５１２および第２メモリ位置５１４は重複しない。
【００７４】
ひとたび先行コードの実行コンテキストが第２メモリ位置５１４に保存されると、シーケンサ５０２は、第１メモリ位置５１２を示すＳＲＳＴＯＲ命令を実行し、シーケンサ５０２のシーケンサ状態を、シーケンサ５００上の第１スレッドの処理に関連する実行コンテキスト／状態に変更する。その後、シーケンサ５０２は、サービススレッドの実行を開始する。サービススレッドの実行中、シーケンサ５００のオプションには、サービススレッドを待って実行を完了すること、または切り替えて第２スレッドを実行することが含まれる。ひとたびサービススレッドがシーケンサ５０２上での実行を完了すると、シーケンサ５０２はＳＸＦＲ命令を実行して、サービススレッドの実行が完了したことを示すべく信号をシーケンサ５００に送信する。サービススレッドの実行が完了したことを示すべくシーケンサ５００に信号を送信する前に、シーケンサ５０２はＳＳＡＶＥ命令を実行して、サービススレッド完了後第１スレッドに対して更新された実行コンテキストを第１メモリ位置５１６に保存する。
【００７５】
シーケンサ５００がサービススレッドの実行完了を待っている場合、シーケンサ５０２上のサービススレッドはその後ＳＲＳＴＯＲを実行して第３メモリ位置５１６を示すことができる。これにより、シーケンサ５００上の第１スレッドの実行コンテキストは、シーケンサ５００に通知してコード実行をレジュームするべくＳＸＦＲを実行する前に更新される。シーケンサ５００にサービススレッドの完了を通知した後。
【００７６】
または、シーケンサ５０２からサービススレッドの完了を示す信号を受信したときに、シーケンサ５００はＳＲＳＴＯＲ（５００，ＰＯＩＮＴＥＲ＿ＴＯ＿ＳＡＶＥ＿ＡＲＥＡ＿Ｂ）命令を実行して、シーケンサ５００の実行コンテキストをサービススレッドの完了時の第１スレッドの実行コンテキストに変更する。
【００７７】
実施例において、命令シーケンサのコンテキスト状態を保存および回復することはターゲットシーケンサ上で遠隔して行うことができる。ソースシーケンサは、メッセージをターゲット命令シーケンサに送信してそのシーケンサのコンテキスト状態を保存および／または回復する。これは、所定のシナリオを備えるＳＸＦＲ命令として実行してもよい。
【００７８】
実施例において、スレッド管理ロジック１１４は、図面の図７を見てわかるように、プロキシ実行メカニズム７００、およびシーケンサ隔離メカニズム７０２を含む。
【００７９】
プロキシ実行メカニズム７００のオペレーションを説明するために、図面の図８に示すＳ１およびＳ２でそれぞれ示す２つのシーケンサを含むシステム８００を考える。シーケンサＳ１およびＳ２は、互いに対称または非対称である。この例では、シーケンサは非対称であり、シーケンサＳ１は処理リソースＡおよびＢのみを含む一方、シーケンサＳ２は処理リソースＡ、Ｄ１およびＣを含む。シーケンサＳ１の処理リソースは、命令ブロック１および２の実行をサポートできる必要がある。
【００８０】
時刻（Ｔ１）は命令ブロック２の矢印の先に位置する。Ｔ１は、モニタが、クライアント命令シーケンサＳ１からサーバント命令シーケンサＳ２へシングルスレッドを移動させるイベントを検知することを示す。時刻Ｔ１において、第３命令ブロックは、シーケンサＳ１上で実行されるようにスケジューリングされるが、第３命令ブロックは、シーケンサＳ１上で利用不可能な処理リソース、例えばシーケンサＳ２上で利用可能な処理リソースＤ、の使用を要求する。この時点では、シーケンサＳ１は、少なくとも実施例においてはリソースノットアベイラブルフォールトを受ける。ユーザレベルソフトウェアにおいて（またはスレッド管理ロジックハードウェアまたはファームウェアにおいて）規定されるリソースノットアベイラブルハンドラはプロキシ実行メカニズム７００を呼び出し、第３命令ブロックをシーケンサＳ２上での実行のためにシーケンサＳ２に移動させる。
【００８１】
時刻（Ｔ２）は、第３命令ブロックの矢印線の始点に位置する。Ｔ２は、クライアント命令シーケンサＳ１に代わってサーバント命令シーケンサＳ２上でのシングルスレッドからの命令ブロックの実行開始を示す。
【００８２】
時刻（Ｔ３）は、第３命令ブロックの矢印の先に位置する。Ｔ３は、サーバント命令シーケンサＳ２上でのシングルスレッドからの命令ブロックの実行完了を示す。時刻ｔ３では、処理リソースＤを使用してのシーケンサＳ２上の第３命令ブロックの実行後、シーケンサＳ２は、プロキシ実行メカニズム７００を使用して、シーケンサＳ１に第３命令ブロックの実行が完了したという信号を送る。
【００８３】
時刻（Ｔ４）は、第４命令ブロックの矢印線の始点に位置する。Ｔ４は、サーバント命令シーケンサＳ２上のシングルスレッドからの命令ブロックのプロキシ実行完了、およびクライアント命令シーケンサＳ１へ戻るトランスファを示す。シーケンサＳ１はその後、シーケンサＳ１上で利用可能な処理リソースのみを要求する第４命令ブロックの実行を進める。
【００８４】
上記の例においてはシーケンサＳ１はその代わりに命令ブロックの実行にシーケンサＳ２を使用するので、シーケンサＳ１は「クライアント」シーケンサと称される。クライアントシーケンサに代わってプロキシ実行モードで動作して命令ブロックを実行するシーケンサＳ２は、「サーバント」シーケンサとして知られる。リソースＤは、限られたセットのアプリケーションのために高度に特化された機能ユニットを含む。機能ユニットは、比較的電力を必要とし、コストがかかり、および複雑であってよい。したがって、所定の実施例においてコストを節約するためには、リソースＤは、シーケンサＳ２上にのみ実装され、シーケンサＳ１上には実装されない。しかし、上述のように、プロキシ実行メカニズム７００は、マルチシーケンサシステムの様々なシーケンサ上で利用可能な処理リソースをマッピングすることによってマルチシーケンサシステムのシーケンサ間の非対称性をマスクする。このため、クライアントシーケンサは、プロキシ実行メカニズムを使用して、必要な処理リソースを有するかまたはスレッド実行に最適化されたシーケンサ上で実行されるべくスレッドを移動することができる。プロキシ実行メカニズム７００はまた、例えば、図面の図１１を参照して以下に詳細に説明されるようなページフォールトまたはシステムコール（ｓｙｓｃａｌｌ）のハンドリングのようなＯＳサービスを実行するために、ＯＳ隔離シーケンサ上で実行される命令ブロックをＯＳ可視シーケンサに移動するためにも使用される。
【００８５】
非対称リソース構成によるマルチシーケンサシステムの所定の物理的実装のために、プロキシ実行メカニズム７００は、上述のようなＳＥＭＯＮＩＴＯＲおよびＳＸＦＲ命令を使用して構成され、マッピングメカニズムを含む。一般には、プロキシ実行メカニズム７００は、ハードウェア内、ファームウェア（例えばマイクロコード）内またはシステムソフトウェア層もしくはアプリケーションソフトウェア層に存在する。実施例において、プロキシ実行メカニズム７００は、ＳＥＭＯＮＩＴＯＲおよびＳＸＦＲ命令を使用して２つのカテゴリのプロキシサービスをハンドルする。第１カテゴリは出口サービスシナリオとして知られる一方で、第２カテゴリは入口サービスシナリオとして知られる。クライアントシーケンサでは、そのクライアントシーケンサにおいて利用不可能または物理的にサポートされないリソースのセットおよびその関連オペレーションに対しては、出口サービスシナリオが規定されてこれらのオペレーションをトラップするかまたはフォールトにする。各出口シナリオは、サーバントシーケンサに向けられるシーケンサＩＤ（および命令ポインタ（ＳＩＤＥＩＰ））にマッピングされる。マッピングはハードウェア、ファームウェアまたはソフトウェアであっても達成できる。その後サーバントシーケンサのプロキシアクセスは、上述のように、インターシーケンサ信号の交換を使用して達成される。
【００８６】
サーバントシーケンサは、クライアントシーケンサには存在しないがサーバントシーケンサには存在するリソースへのプロキシアクセスをサポートする役割がある。入口サービスシナリオは、サービスチャネル内に規定および設定されて、クライアントシーケンサに代わってプロキシ実行を行うローカルサービスハンドラ（ハンドラコード）にマッピングされる。出口および入口サービスシナリオのサンプルリストは図６Ａのテーブルに与えられる。
【００８７】
１つの意味では、出口サービスシナリオは、クライアントシーケンサ上では利用不可能であるがサーバントシーケンサ上では利用可能な処理リソースへのアクセスが要求されたことに起因して、クライアントシーケンサにおいて「ミス」を受けるトラップまたはフォールトオペレーションに対応する。逆に、入口サービスシナリオは、ローカル処理リソースを有しないクライアントシーケンサに代わって、サーバントシーケンサ上で利用可能なローカル処理リソースにアクセスする要求の到達を示す非同期割り込み条件に対応する。プロキシ実行メカニズムは、マルチシーケンサ内の各シーケンサに関連するアブストラクションのベニヤまたは層を規定する。これにより、クライアントおよびサーバントシーケンサは協働してプロキシリソースアクセスを行う。プロキシ実行がファームウェアにまたは直接ハードウェアに実装される少なくとも１つの実施例において、プロキシリソースアクセスは、ユーザレベルソフトウェアおよびＯＳにとっては透明である。
【００８８】
各サービスシナリオは、従来的なＩＳＡ内のオペコードと同様の役割を果たすが、サービスシナリオは特別なハンドラコードフローのトリガとなる点が異なる。したがって、メタ命令としてのＳＸＦＲ命令を使用して新たな複合命令を合成することができる。合成される命令のためのハンドラコードに出口サービスシナリオがマッピングされる。実施例において、サービスシナリオＩＤとそのハンドラコードフローとの関係は、複合命令セットコンピュータ（ＣＩＳＣ）オペコードとそれに対応するマイクロコードフローとの関係に類似する。ＣＩＳＣは、ユーザレベルシーケンサ認識モニタおよび制御トランスファ命令を、マイクロコードフロー構築のための標準命令基準として使用することによって作ることができる。上述のように、サービスシナリオとそのハンドラコードとの間のマッピングはＳＥＭＯＮＩＴＯＲを介して達成される一方で、ＳＸＦＲは、シーケンサ間で制御メッセージが送信されるためのメカニズムを与える。制御メッセージの通信は、サービスシナリオにマッピングされたハンドラコードの実行のためのトリガとして動作する。
【００８９】
実施例において、シーケンサ隔離メカニズム７０２は、論理プロセッサを形成するべく、ＯＳ可視およびＯＳ隔離シーケンサの所定の組み合わせをマッピングまたはグルーピングするために使用される。マッピングは、多数のＯＳ隔離シーケンサにマッピングされる単数のＯＳ可視シーケンサを含む１対多のマッピング、または多数のＯＳ隔離シーケンサにマッピングされる多数のＯＳ可視シーケンサを含む多対多のマッピングであってよい。例えば、図９は、２つの論理プロセッサ９００および９０２をそれぞれ含むマルチシーケンサシステムを示す。論理プロセッサ９００および９０２は各々、単数のＯＳ可視シーケンサが多数のＯＳ隔離シーケンサにマッピングされる１対多マッピングを含む。
【００９０】
図１０を参照すると、マルチシーケンサシステム１０００の例は、１８のシーケンサの集合を含む。ここでは、２つのＯＳ可視シーケンサが、１６のＯＳ隔離シーケンサにマッピングされて多対多マッピングを規定する。システム１０００の論理プロセッサ内では、両方のＯＳ可視シーケンサがＯＳ隔離シーケンサのいずれかに対するプロキシとして機能する。
【００９１】
実施例において、シーケンサ隔離メカニズム７０２は、シーケンサを選択的にＯＳ制御から隔離する。本発明の異なる実施例によれば、シーケンサはブート後に隔離されてもよく、場合によってはブート時の最中でさえあってもよい。ＯＳ制御のもとでシーケンサを隔離するために、シーケンサ隔離メカニズム７０２は、シーケンサが利用不可能状態にあることを特定するインジケータをＯＳにセットする。例えば、シーケンサ隔離メカニズム７０２は、シーケンサの電力または電力／パフォーマンス状態を偽装して、シーケンサが特別な利用不可能状態に入ったことをＯＳに示す。これにより、ＯＳは、シーケンサがオーバーロードになりすぎたかまたは熱くなりすぎて、そのシーケンサに対する計算またはスケジューリングの命令をディスパッチできないとみなす。実施例において、インテルＳｐｅｅｄＳｔｅｐ（著作権）テクノロジのような省電力メカニズムを実装するシーケンサに対しては、シーケンサ隔離メカニズム７０２は、ＯＳ可視シーケンサの所定のサブセットを特別な電力状態に切り替えてシーケンサのサブセットが利用不可能状態にあることを示す。これにより、ＯＳは、これらのシーケンサのサブセットをオーバーロード状態とみなすので、シーケンサのサブセットに計算をディスパッチすることがない。ＯＳにとって透明な場合は、ＳＸＦＲおよびＳＥＭＯＮＩＴＯＲ命令が使用されて隔離シーケンサに対する計算またはスレッドをスケジューリングする。
【００９２】
実施例において、ひとたび隔離シーケンサがスレッド実行を完了すると、隔離シーケンサの制御はＯＳに引き渡される。これは、隔離命令シーケンサがもはや利用不可能状態にはないということをＯＳに示すためのインジケータをセットするメカニズムによって達成される。
【００９３】
実施例において、隔離命令シーケンサの特権状態は、依然ＯＳ制御下にある非隔離命令シーケンサの対応する特権状態に同期される。
【００９４】
一般に、汎用Ｍ：Ｎマルチスレディングパッケージ、すなわちＭ個のスレッドをＮ個のシーケンサにマッピングするもの（ここでＭ＞＞Ｎ）、を標準でサポートするためには、必要最小限のビルディングブロック同期オブジェクトがクリティカルセクションおよびイベントとなる。
【００９５】
これらの同期オブジェクトによって、ミューテックス、条件変数およびセマフォのような高レベルの同期オブジェクトを構成することができる。クリティカルセクションは、ハードウェアロックプリミティブを介して実装することができる。隔離シーケンサは、非隔離シーケンサから状態を承継することができる。これにより、仮想メモリのビューが隔離シーケンサおよび非隔離シーケンサの両方に対して同じになる。イベントは、ＳＸＦＲおよびＳＥＭＯＮＩＴＯＲ命令によって合成されたイベント駆動マルチシーケンサスケジューラ（集中型または分散型）によってサポートすることができる。例えば、クリティカルセクションによって保護されるグローバルタスクのキューを有する単純なＰＯＳＩＸ準拠または互換の分散型スケジューラが生成される。各シーケンサは、スケジューラの１つのコピーを有効に実行し、シーケンサ上で実行する次の実行可能タスクスレッドをつかむために競合してタスクキューのヘッドへアクセスしようとする。シーケンサ上の１つのタスクが、ミューテックス、条件変数またはセマフォのような同期変数を待っている場合には、タスクはイールドを介してスケジュール解除され、対応クリティカルセクションに入った後にグローバルタスクキューのテールに置かれる。
【００９６】
現代のＯＳのスレッドライブラリのほとんどにおいてスレッドプリミティブが広範に採用されていることに起因して、これらのＰＯＳＩＸ準拠または互換スレッドライブラリのトップに構築された大多数の既存のスレッドコードを、マルチシーケンサ環境に移植することが可能となる。必然的に、スレッド中のヘッダファイルは再マッピングされてレガシースレッドコードが再コンパイルされなければならない。
【００９７】
ＳＦＸＲおよびＳＥＭＯＮＩＴＯＲ命令ならびにＩＮＩＴシナリオを使用することによって、ＯＳなしで、ＯＳ隔離シーケンサ上でのスレッド実行をスケジュールすることが可能となる。したがって、ここに開示の技術に基づけば、ＯＳによりサポートされないマルチシーケンサシステムのシーケンサ上でのスレッドのユーザレベルスケジューリングをＯＳがサポートかつ許可できるよりも多くのシーケンサを備えるマルチシーケンサシステムを構築することが可能となる。
【００９８】
したがって、実施例において、拡張命令セットを備える複数の命令シーケンサは、ＯＳによりネイティブサポートされるよりも多数のプロセッサ上でシングルイメージＯＳをサポートすることもできる。例えば、４ウェイ命令シーケンサをサポート可能なＯＳが、実際には３２ウェイ命令シーケンサシステムを有するハードウェア実装のためのＯＳとして実装できよう。これにより、アプリケーションは、ＯＳによりサポートされるシーケンサ数の制限よりも多くのプロセッサを使用することができる。命令シーケンサは、非対称シーケンサまたは対称シーケンサである。
【００９９】
ここで、マルチシーケンサシステムにおけるプロキシ実行に対する１つの実施例を説明する。マルチシーケンサシステムには、ＯＳ可視なシーケンサもあればＯＳ不可視なシーケンサもある。一般に、ＯＳ不可視シーケンサ上で動作するコードが、ＯＳサービスを要求するページフォールトまたはシステムコールを受けるとき、プロキシ実行メカニズムは確実に所定のハンドリングを行う。ここで図面の図１１を参照すると、ＯＳサービスに影響を与えるために実行されるオペレーションのフローチャートが示される。このオペレーションは、シーケンサＩＤがＳＩＤ１のＯＳ隔離シーケンサ上で、プロキシ実行のためのトリガイベントに応答して実行される。トリガイベントに遭遇すると、ＯＳ隔離シーケンサＳＩＤ１は１１００にて、命令ＳＳＡＶＥ（１，ＳＴ＿１＿０）を実行する。トリガイベントは、トラップ、ページフォールトまたはシステムコールのようなＯＳサービスを要求するアーキテクチャ状態の所定の実行条件であってよい。この命令は、実行によってトリガイベントを生成したスレッドの実行コンテキストを保存する。説明の便宜上、スレッドの実行コンテキストのための保存領域には、少なくとも１つの実施例ではアクセスがページフォールトを引き起こさない（ＳＴ＿１＿０）が指定される。１１０２において、ＳＸＦＲ命令は、出口サービスシナリオ「ＢＥＧＩＮ＿ＰＲＯＸＹ」をＯＳ可視シーケンサＳＩＤ０に渡すべく実行される。なお、シーケンサＳＩＤ１上での命令の処理は、シーケンサＳＩＤ０上でのプロキシ実行スレッドの完了がペンディングのままブロックされる。これは、１１０２において実行されたＳＸＦＲ命令が条件パラメータ「ＷＡＩＴ」を含んでいたからである。１１０４において、シーケンサＳＩＤ０は、シーケンサＳＩＤ１からの信号を検知し、現行スレッドの実行を譲られる（ｙｉｅｌｄ）かまたは「一時的にサスペンド」する。１１０６において、ＳＳＡＶＥ命令が実行されて、シーケンサＳＩＤ０に関連する実行コンテキストまたは状態が保存される。実行コンテキスト保存領域には、ＳＴ＿１＿０と重複しない「ＳＴ＿０＿０」が割り振られる。１１０８において、プロキシビットは１にセットされ、シーケンサＳＩＤ０がプロキシ実行モードで動作していることを示す。１１１０において、コンテキスト回復オペレーション（ＳＲＳＴＯＲ）は、ＳＩＤ１上のページフォールトに関連する実行コンテキストの状態「ＳＴ＿１＿０」をコピーするべく実行される。１１１２において、ページフォールトは、シーケンサＳＩＤ０上で複製または偽装される。１１１４において、リング遷移が行われて制御がＯＳに切り替えられる。ＯＳはページフォールトをサービスする。ＯＳサービスが完了すると、ＥＮＤ＿ＰＲＯＸＹシナリオがイントラシーケンサイールドイベントとして生じる。これは、ＯＳからユーザレベルへの特権レベル切替（すなわちリング遷移）時、かつ、プロキシビットがＯＮの場合に生じる。ＥＮＤ＿ＰＲＯＸＹシナリオに起因するイールドイベントハンドラでは、１１１６にて、コンテキスト保存が行われて実行コンテキスト「ＳＴ＿１＿１」が保存される。１１１８において、プロキシビットは０にセットされる。１１２０において、ＳＸＦＲ命令が実行されて、サービスシナリオ「ＥＮＤ＿ＰＲＯＸＹ」がシーケンサＳＩＤ１に渡される。１１２２において、シーケンサＳＩＤ０は状態ＳＴ＿０＿０を回復する。１１２４において、「ＥＮＤ_ＰＲＯＸＹ」シナリオを受信するとシーケンサＳＩＤ１は譲られて、１１２６にてコンテキスト「ＳＴ_１_１」を回復する。これにより、トリガイベントに遭遇したスレッドの実行が再開する。
【０１００】
実施例において、プロキシ実行は、ユーザレベルスレッド実行時のアプリケーションレベルプログラム制御下での、ＯＳ可視命令シーケンサと命令シーケンサとの間の非対称条件検知に応答するユーザレベルスレッドの移動であってよい。
【０１０１】
命令シーケンサ間の非対称条件には、リング／特権レベル遷移要求のような以下の条件が含まれる。ページフォールトまたはシステムコール、ユーザレベルスレッドを実行する命令シーケンサによる命令能力の欠如（例えば、１つのシーケンサ上の所定命令の非推奨および結果として生じる無効オペコードフォールト）、２つの命令シーケンサ間の命令実行パフォーマンスの相違が含まれる。
【０１０２】
プロキシ実行時の状態の移動はヘビーウェイトであってもライトウェイトであってもよい。ヘビーウェイトの移動は、トランスファシーケンサから保存されて受信シーケンサ上に回復されるフルレジスタ状態である。ヘビーウェイトの移動は、トランスファシーケンサのために受信シーケンサ上で実行されたユーザレベルスレッドからの少なくとも１つの命令を有する。ヘビーウェイトの移動によって、実行されるユーザレベルスレッドは、トランスファ命令シーケンサに代わって１つ以上の命令を実行した後に受信シーケンサにとどまるかまたはトランスファシーケンサに戻ることが可能となる。
【０１０３】
ライトウェイトの移動には多くのバラエティーがある。アイディアは所定の状況に対して合理化する（ｓｔｒｅａｍｌｉｎｅ）ことにある。ライトウェイトの移動には、いくらかの少量の状態をトランスファすることが含まれる。これにより、所定の小タスクがハンドルされる。いくつかのライトウェイト移動シナリオにおいては、ユーザレベルスレッドからの命令は−例えばページフォールトの状況において−実際には実行されない。アプリケーションレベルプログラム制御下の命令シーケンサは、ページフォールトを引き起こすアドレス上でのみトランスファする。受信シーケンサは、ページがロードされるようにするプローブロードを実行するのみであり、その後、この所望のタスクが完了したことをアプリケーションレベルプログラム制御下の命令シーケンサに伝え返す。したがって、移動とは、移動ユーザレベルスレッドからの命令が実際に実行されたことを意味しない。
【０１０４】
したがって、プロキシ実行は、ユーザレベルスレッドを実行している第１命令シーケンサ「に代わる」または「から生じる」動作を第２命令シーケンサが行うときはいつでも原則的に発生する。
【０１０５】
ページフォールトのライトウェイトハンドリングに対する実施例において、プロキシ実行の１つの側面には以下が含まれる。アプリケーションレベルプログラムの制御下にある第１命令シーケンサ内のユーザレベルスレッドにおける命令実行のサスペンド。アドレスポインタを、アプリケーションレベルプログラムの制御下にある第１命令シーケンサからＯＳ可視命令シーケンサにトランスファすること。ＯＳ可視命令シーケンサによるアドレスポインタでの内容のロード。最後に、アドレスポインタでの内容のロード完了後に、アプリケーションレベルプログラムの制御下にある命令シーケンサにおいて第１ユーザレベルスレッドの実行をレジュームすること。
【０１０６】
プロキシ実行の別の側面には、ＯＳ隔離命令シーケンサからＯＳ可視命令シーケンサへの制御および状態情報のトランスファが含まれる。また、ＯＳ隔離命令シーケンサ上の第１ユーザレベルスレッドからＯＳ可視命令シーケンサへの少なくとも１つの実行の移動によって、ＯＳ可視命令シーケンサは、オペレーティングシステムがＯＳ隔離命令シーケンサに代わってＯＳオペレーションを行うトリガとなる。
【０１０７】
図面の図１２は、本発明の１つの実施例に係る処理システム１２００を示す。わかるように、システム１２００には、格納デバイス１２０４に接続された処理コンポーネント１２０２が含まれる。実施例において、処理コンポーネント１２０２には複数の命令シーケンサが含まれる。そのうちの２つのみが、各々１２０６Ａおよび１２０６Ｂと指定されて図面の図１２に示されている。処理コンポーネント１２０２にはまた、信号交換メカニズム１２１０およびモニタリングメカニズム１２１２を有する制御トランスファメカニズム１２０８が含まれる。信号交換メカニズム１２１０は、処理コンポーネント１２０２のシーケンサ間でシナリオ／制御トランスファメッセージを送信するために使用される。したがって、実施例において、信号交換メカニズム１２１０には、上述のＳＸＦＲ命令を実行するための論理が含まれる。モニタリングメカニズム１２１２は、処理コンポーネント１２０２の命令シーケンサのいずれかをセットアップして、所定の制御メッセージ／シナリオを含む信号をモニタするために使用される。実施例において、モニタリングメカニズムには、上述のＳＥＭＯＮＩＴＯＲ命令をデコードするための論理が含まれる。
【０１０８】
処理コンポーネント１２０２にはまた、上述のように、シーケンサ隔離メカニズム１２１４も含まれる。
【０１０９】
格納デバイス１２０４には、オペレーティングシステムが含まれる。実施例において、オペレーティングシステムは、コンテキスト切替を行う。以前のタスクのレジスタ状態すべてを格納し、次のタスクのレジスタ状態すべてを回復する。
【０１１０】
処理コンポーネント１２０２内では様々な技術が使用されて、例えば、シーケンサ１２０６Ａからの所定信号をモニタするべくシーケンサ１２０６Ｂをセットアップする。実施例において、シーケンサ１２０６Ｂは、所定の制御メッセージ／シナリオを搬送する信号をモニタするべく予め設定される（すなわち、なんらユーザ設定ステップが要求されることがない）。したがって、実施例において、シーケンサ１２０６Ｂは、ＩＮＩＴシナリオを搬送する信号をモニタするべく予め設定される。なお、シーケンサ１２０６Ｂ上で初期化コードの実行をトリガするためにはＳＸＦＲのようなユーザレベル命令が使用されることに留意されたい。初期化コード自体にはＳＥＭＯＮＩＴＯＲ命令が含まれる。ＳＥＭＯＮＩＴＯＲ命令が使用されて、シーケンサ１２０６Ａからの所定の信号（シナリオ）をモニタするべくシーケンサ１２０６Ｂがセットアップされる。
【０１１１】
別の実施例において、シーケンサ認識ＳＥＭＯＮＩＴＯＲ命令がシーケンサ１２０６Ａ上で実行される。これにより、シーケンサ１２０６Ｂは、シーケンサ１２０６Ａからの所定の信号／シナリオをモニタできる。別の実施例において、ブートストラップ／初期化コードを格納するメモリ位置へのポインタは、上述のＳＳＡＶＥ命令を使用して、シーケンサ１２０６Ａのためのコンテキストの一部として保存される。この実施例に対しては、シーケンサ１２０６Ｂ上でＳＲＳＴＯＲ命令を実行し、シーケンサ１２０６Ａのためのコンテキスト／状態を回復することができる。これにより、ブートストラップ／初期化コードが実行できる。ブートストラップ／初期化コード自体には、シーケンサ１２０６Ａからの所定の信号／シナリオをモニタするべくシーケンサ１２０６Ｂをセットアップする少なくとも１つのＳＥＭＯＮＩＴＯＲ命令が含まれる。
【０１１２】
図１３は、シーケンサ認識ユーザレベル命令を含む１つ以上のユーザレベルスレッドを実行するべく設定された１つ以上の命令シーケンサを有するＣＰＵまたはチップセットのようなプロセッサコンポーネントの実施例を使用するコンピュータシステムの例のブロック図を示す。１つの実施例において、コンピュータシステム１３００には、情報通信のための通信メカニズムまたはバス１３１１と、情報処理のためにバス１３１１に接続されるメイン処理ユニット１３１２のような集積回路コンポーネントとが含まれる。メイン処理ユニット１３１２またはチップセット１３３６のようなコンピュータシステム１３００の１つ以上のコンポーネントまたはデバイスは、１つ以上のユーザレベルスレッドを実行するべく設定された命令シーケンサの実施例を使用する。メイン処理ユニット１３１２は、ユニットとして協働する１つ以上のプロセッサコアからなる。
【０１１３】
コンピュータシステム１３００にはさらに、メイン処理ユニット１３１２によって実行される情報および命令を格納するべくバス１３１１に接続されたランダムアクセスメモリ（ＲＡＭ）または他の動的格納デバイス１３０４（メインメモリと称する）が含まれる。メインメモリ１３０４はまた、メイン処理ユニット１３１２による命令実行中に一時的数値変数または他の中間情報を格納するために使用される。
【０１１４】
ファームウェア１３０３は、電子的プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）のような、ＥＰＲＯＭ上に記録されたルーチンに対するオペレーションを有するソフトウェアとハードウェアとの組み合わせである。ファームウェア１３０３には、基本コード、ベーシック入力／出力システムコード（ＢＩＯＳ）または他の同様なコードが組み込まれてよい。ファームウェア１３０３によって、コンピュータシステム１３００が自分でブートすることが可能となる。
【０１１５】
コンピュータシステム１３００にはまた、メイン処理ユニット１３１２のための静的な情報および命令を格納するべくバス１３１１に接続されたリードオンリーメモリ（ＲＯＭ）および／または他の静的格納デバイス１３０６が含まれる。静的格納デバイス１３０６は、ＯＳレベルおよびアプリケーションレベルソフトウェアを格納する。
【０１１６】
コンピュータシステム１３００はさらに、コンピュータユーザに情報をディスプレイするべくバス１３１１に接続された、陰極管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）のようなディスプレイデバイス１３２１が接続される。チップセットがディスプレイデバイス１３２１とのインターフェイスであってよい。
【０１１７】
英数字および他のキーを含む英数字入力デバイス（キーボード）１３２２がまた、メイン処理ユニット１３１２へ情報およびコマンドの選択を通信するべくバス１３１１に接続される。付加的なユーザ入力デバイスは、メイン処理ユニット１３１２へ方向情報およびコマンドの選択を通信するべく、かつ、ディスプレイデバイス１３２１上でカーソルの動きを制御するべくバス１３１１に接続された、マウス、トラックボール、トラックパッド、スタイラスまたはカーソル方向キーのようなカーソル制御デバイス１３２３である。チップセットが入出力デバイスとのインターフェイスであってよい。
【０１１８】
バス１３１１に接続される別のデバイスは、紙、フィルムまたは同様のタイプの媒体のような媒体上に命令、データまたは他の情報をプリントするべく使用されるハードコピーデバイス１３２４である。さらに、コンピュータシステム１３００とのオーディオインターフェイスのためにスピーカおよび／またはマイクロフォン（図示せず）のような録音再生デバイスがオプションとしてバス１３１１に接続されてもよい。バス１３１１に接続される別のデバイスは、有線／無線通信機能１３２５である。
【０１１９】
１つの実施例において、ルーチンを容易にするべく使用されるソフトウェアは、機械読み取り可能媒体に組み込むことができる。機械読み取り可能媒体には、機械（例えば、コンピュータ、ネットワークデバイス、パーソナルデジタルアシスタント、マニュファクチャリングツール、１つ以上のプロセッサのセットを有する任意のデバイス等）によってアクセス可能な形態で情報を提供（すなわち、格納および／または送信）する任意のメカニズムが含まれる。例えば、機械読み取り可能媒体には、記録可能／記録不可能媒体（例えば、ファームウェア、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク格納媒体、光学格納媒体、フラッシュメモリデバイス等を含むリードオンリーメモリ（ＲＯＭ））、および電気的、光学的、音響的または他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号等）が含まれる。
【０１２０】
開発中に設計は、創造から製造シミュレーションまでの様々な段階を通る。設計を表すデータは、いくつかの方法でその設計を表す。まず、シミュレーションにおいて有用であるが、ハードウェアはハードウェア記述言語または機能記述言語を使用して表される。また、論理／ＯＲトランジスタゲートを備える回路レベルモデルも設計プロセスのいくつかの段階で作られる。さらに、ほとんどの設計は所定の段階において、ハードウェアモデル中の様々なデバイスの物理的配置を表すデータのレベルに到達する。従来的な半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路を製造するために使用されるマスクに対する異なるマスク層上での様々なフィーチャの存在または不在を特定するデータである。設計のどの表し方においても、データはなんらかの形態の機械読み取り可能媒体に格納される。かかる情報を変換するべく変調または生成される任意の光波または電波、メモリ、またはディスクのような磁気もしくは光学ストレージは、機械読み取り可能媒体である。これらの媒体のいずれも、設計またはソフトウェア情報を「搬送」または「指示」する。コードまたは設計を指示または搬送する電気的搬送波が送信されると、電気信号のコピー、バッファまたは再送信が行われる程度まで新たなコピーが作られる。したがって、通信プロバイダまたはネットワークプロバイダは、本発明の技術を実現する物（搬送波）のコピーを作る。
【０１２１】
添付の図面に所定の実施例が記載および図示されてきたが、かかる実施例は単に説明上のものであり、その広い発明を制限するものではないことを理解すべきである。また、本発明は、図示および記載された具体的な構成および配置に限られないことも理解すべきである。本開示を研究すれば当業者には様々な他の修正例が想到できるからである。このような成長が速く将来の進展が容易に予測できない技術分野においては、開示の実施例は、本開示の原理または添付の請求項の範囲から逸脱することなく技術的進展が可能になることによって容易となるような配置および詳細において直ちに修正可能である。
【図面の簡単な説明】
【０１２２】
【図１Ａ】本発明の１つの実施例に係るマルチシーケンサシステムのハイレベルブロック図を示す。
【図１Ｂ】本発明の１つの実施例に係るマルチシーケンサシステムのハイレベルブロック図を示す。
【図１Ｃ】ユーザレベル命令によってスレッド制御をサポートするマルチシーケンサシステムの実施例の選択されたフィーチャを示すブロック図である。
【図２】図１Ａから図１Ｃのマルチシーケンサシステムの一部を形成するマルチシーケンサハードウェアの論理ビューを示す。
【図３Ａ】図１Ａから図１Ｃのシステムに対する命令セットアーキテクチャのビューを示す。
【図３Ｂ】ユーザレベル制御トランスファ命令およびユーザレベルモニタ命令をその命令セットに含む２つ以上の命令シーケンサを備えるプロセッサの実施例の論理図を示す。
【図４Ａ】本発明の１つの実施例に係るＳＸＦＲ命令のフォーマットを示す。
【図４Ｂ】本発明の１つの実施例に係るＳＥＭＯＮＩＴＯＲ命令のフォーマットを示す。
【図５】本発明の１つの実施例に係るインターシーケンサ制御トランスファを実行するために、ＳＸＦＲ命令をどのようにして使用できるのかを示す。
【図６Ａ】本発明の１つの実施例に係る、サービスチャネルをプログラムするために使用されるテーブルを示す。
【図６Ｂ】本発明の１つの実施例に係る、サービスチャネルをプログラムするために使用されるテーブルを示す。
【図７】本発明の１つの実施例に係る、図１Ａから図１Ｃのシステムのスレッド管理ロジックを構成するコンポーネントの機能ブロック図を示す。
【図８】本発明の１つの実施例に係るプロキシ実行メカニズムのオペレーションを示す。
【図９】本発明の１つの実施例に係る論理プロセッサの例を示す。
【図１０】本発明の１つの実施例に係る論理プロセッサの例を示す。
【図１１】本発明の１つの実施例に係る、ページフォールトのＯＳによるハンドリング時にプロキシ実行をサポートするためにＳＸＦＲおよびＳＥＭＯＮＩＴＯＲ命令がどのように使用されるのかを示す。
【図１２】本発明の１つの実施例に係る処理システムを示す。
【図１３】シーケンサ認識ユーザレベル命令を含む１つ以上のユーザレベルスレッドを実行するように構成された１つ以上の命令シーケンサを含む、中央処理ユニット（ＣＰＵ）またはチップセットのようなプロセッサコンポーネントの実施例を使用する例示的コンピュータシステムのブロック図を示す。
【図１Ａ】
2011023032.tif 000003
【図１Ｂ】
2011023032.tif 000004
【図１Ｃ】
2011023032.tif 000005
【図２】
2011023032.tif 000006
【図３Ａ】
2011023032.tif 000007
【図３Ｂ】
2011023032.tif 000008
【図４Ａ】
2011023032.tif 000009
【図４Ｂ】
2011023032.tif 000010
【図５】
2011023032.tif 000011
【図６Ａ】
2011023032.tif 000012
【図６Ｂ】
2011023032.tif 000013
【図７】
2011023032.tif 000014
【図８】
2011023032.tif 000015
【図９】
2011023032.tif 000016
【図１０】
2011023032.tif 000017
【図１１】
2011023032.tif 000018
【図１２】
2011023032.tif 000019
【図１３】
2011023032.tif 000020
【手続補正書】
【提出日】平成22年9月22日(2010.9.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１命令シーケンサ上のユーザレベルスレッドを、アプリケーションレベルプログラムの制御下にある第２命令シーケンサ上でのユーザレベル命令の実行に応答して管理することと、
１）１つ以上の命令シーケンサを参照するフィールド、および２）コードの実行時に１つ以上の命令シーケンサを特定的にアドレシングするコードへの参照、の少なくとも１つを有する、前記第２命令シーケンサ上の１つ以上のユーザレベル命令を含む、第１ユーザレベルスレッドを実行することと、
制御メッセージおよびデスティネーション命令シーケンサを特定し、前記制御メッセージを含む信号を前記デスティネーション命令シーケンサへ送信するユーザレベル制御トランスファ命令を、ソース命令シーケンサ上で実行することと、
デスティネーション命令シーケンサ、制御メッセージ、およびユーザレベルスレッドオペレーションを実行するべく前記制御メッセージに関連付けられたハンドラコードの位置を特定し、前記デスティネーション命令シーケンサ、前記制御メッセージおよび前記ハンドラコードの位置間のマッピングを生成するユーザレベルモニタリング命令を、ソース命令シーケンサ上で実行することと、
１つ以上の他の命令シーケンサを特定し、かつ、前記１つ以上の他の命令シーケンサの実行コンテキストに保存されるようにするユーザレベル保存命令を、前記第１命令シーケンサ上で実行することと、
１つ以上の他の命令シーケンサを特定するユーザレベル回復命令を、前記第１命令シーケンサ上で実行し、前記第１命令シーケンサを実行されるとき１つ以上の他の命令シーケンサの実行コンテキストが回復されることと、
前記第１ユーザレベルスレッドの実行中に、前記アプリケーションレベルプログラムの制御下にある前記第２命令シーケンサと前記第１命令シーケンサとの間の非対称条件の検知に遭遇するときに、前記第２命令シーケンサからの命令の実行を移動して前記第１命令シーケンサ上でその命令の一部を実行することとを含む、プロセッサによって実行される方法。
【請求項２】
前記ユーザレベルスレッドを管理することは、ユーザレベルスレッド生成オペレーション、ユーザレベルスレッド制御オペレーションおよびユーザレベルスレッド同期オペレーションからなるグループから選択されるユーザレベルスレッドオペレーションに対して、シーケンサ認識および制御トランスファオペレーションを行うことを含む、請求項１に記載の方法。
【請求項３】
前記非対称条件は、オペレーティングシステム（ＯＳ）にフォールトをリゾルブするべくＯＳオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム（ＯＳ）にトラップをリゾルブするべくＯＳオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接ＯＳサービスをアクティベートできない前記命令シーケンサ上のシステムコール、または、前記アプリケーションレベルプログラムの制御下にある命令シーケンサが、前記第１ユーザレベルスレッドからの第１命令の実行をサポートするビルトインリソースを欠く非推奨オペレーションフォールトからなるグループから選択される、請求項１または請求項２に記載の方法。
【請求項４】
ＯＳ隔離命令シーケンサからＯＳ可視命令シーケンサへ制御および状態情報をトランスファすることと、
前記ＯＳ隔離命令シーケンサ上の前記第１ユーザレベルスレッドから前記ＯＳ可視命令シーケンサへ少なくとも１つの命令の実行を移動して、前記ＯＳ可視命令シーケンサが前記ＯＳ隔離命令シーケンサに代わってＯＳサービスを行うべくオペレーティングシステムをトリガすることと
をさらに含む、請求項１から請求項３のいずれか1つに記載の方法。
【請求項５】
前記アプリケーションレベルプログラムの制御下にある前記第２命令シーケンサ中の前記第１ユーザレベルスレッドの実行をサスペンドすることと、
前記第２命令シーケンサからＯＳ可視命令シーケンサへ、メモリに格納された内容に向けられるアドレスポインタをトランスファすることと、
前記アドレスポインタにおける前記内容を前記ＯＳ可視命令シーケンサによってロードすることと、
前記アドレスポインタにおける前記内容がロードされた後に前記第２命令シーケンサ中の前記第１ユーザレベルスレッドの実行をレジュームすることと
をさらに含む、請求項１から請求項４のいずれか1つに記載の方法。
【請求項６】
特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された１つ以上の命令シーケンサと、
第１シーケンサ認識ユーザレベル命令をデコードする１つ以上のデコーダと、
前記第１シーケンサ認識ユーザレベル命令を実行する１つ以上の命令実行ユニットと、
命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
前記クライアント命令シーケンサ上の第１ユーザレベルスレッドの実行中に検知された予め定められた条件に応答して、かつ、オペレーティングシステムによる介入なしに、前記クライアント命令シーケンサに、前記クライアント命令シーケンサに代わっての前記サーバント命令シーケンサ上でのプロキシユーザレベルスレッドの実行をトリガさせることを可能にするプロキシ実行メカニズムと
を有するプロセッサを備え、
前記クライアントリソースは、前記サーバントリソースに対して非対称的であり、前記予め定められた条件は、前記第１ユーザレベルスレッドが、前記クライアント命令シーケンサ上で利用不可能であるが前記サーバント命令シーケンサ上では利用可能であるリソースを使用しようとすることを示す装置。
【請求項７】
前記プロキシ実行メカニズムは、前記クライアントリソースと前記サーバントリソースとの間の非対称性を、ユーザレベルプログラムからマスクする、請求項６に記載の装置。
【請求項８】
前記プロキシ実行メカニズムは、前記クライアント命令シーケンサに関連する出口シナリオのセットを含み、各出口シナリオは、前記サーバント命令シーケンサ上での前記プロキシ実行を開始するトリガ条件を規定する、請求項６または請求項７に記載の装置。
【請求項９】
特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された１つ以上の命令シーケンサと、
第１シーケンサ認識ユーザレベル命令をデコードする１つ以上のデコーダと、
前記第１シーケンサ認識ユーザレベル命令を実行する１つ以上の命令実行ユニットと、
命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
前記クライアント命令シーケンサ上の第１ユーザレベルスレッドの実行中に前記サーバント命令シーケンサと前記クライアント命令シーケンサとの間の非対称条件の検知に応答して、前記クライアント命令シーケンサに、前記クライアント命令シーケンサから前記サーバント命令シーケンサへの制御および状態情報のトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
を有するプロセッサを備え、
前記クライアント命令シーケンサは、少なくとも１つの命令の実行を前記第１ユーザレベルスレッドから前記サーバント命令シーケンサへ移動し、前記サーバント命令シーケンサは、前記クライアント命令シーケンサに代わってＯＳオペレーションを実行するオペレーティングシステムをトリガする装置。
【請求項１０】
特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された１つ以上の命令シーケンサと、
第１シーケンサ認識ユーザレベル命令をデコードする１つ以上のデコーダと、
前記第１シーケンサ認識ユーザレベル命令を実行する１つ以上の命令実行ユニットと、
命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
第１ユーザレベルスレッドの実行中に検知された非対称条件に応答して、前記クライアント命令シーケンサに、前記クライアント命令シーケンサから前記サーバント命令シーケンサへのアドレスポインタのトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
を有するプロセッサを備え、
前記サーバント命令シーケンサは、前記アドレスポインタにおける内容をロードし、前記クライアント命令シーケンサは、前記アドレスポインタにおける内容のロード完了後に前記第１ユーザレベルスレッドからの命令を実行する装置。
【請求項１１】
異なるユーザレベルスレッドを実行するための２つ以上の命令シーケンサであって、特定の命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含む２つ以上の命令シーケンサと、
前記シーケンサ認識ユーザレベル命令を実行する場合にアプリケーションレベルプログラムの制御下で動作する第１命令シーケンサと、
オペレーティングシステムの制御下で動作する第２命令シーケンサと、
第１ユーザレベルスレッドの実行中に前記第２命令シーケンサと前記第１命令シーケンサとの間の非対称条件の検知されたことに応答して、前記第１命令シーケンサに、前記第１命令シーケンサから前記第２命令シーケンサへの制御および状態情報のトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
を有するプロセッサと、
前記プロセッサに接続されて前記オペレーティングシステムを中に格納する不揮発性格納デバイスと、
を備え、
前記第１命令シーケンサは、前記第１ユーザレベルスレッドから前記第２命令シーケンサへ少なくとも１つの命令の実行を移動して、前記第２命令シーケンサが前記第１命令シーケンサに代わってオペレーティングシステムのオペレーションを実行するべくオペレーティングシステムをトリガするシステム。
【請求項１２】
異なるユーザレベルスレッドを実行するための２つ以上の命令シーケンサであって、特定の命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含む２つ以上の命令シーケンサと、
前記シーケンサ認識ユーザレベル命令を実行する場合にアプリケーションレベルプログラムの制御下で動作する第１命令シーケンサと、
オペレーティングシステムの制御下で動作する第２命令シーケンサと、
第１ユーザレベルスレッドの実行中に前記第２命令シーケンサと前記第１命令シーケンサとの間の非対称条件の検知されたことに応答して、前記第１命令シーケンサに、前記第１命令シーケンサから前記第２命令シーケンサへのアドレスポインタのトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
を有するプロセッサと、
前記プロセッサに接続されて前記オペレーティングシステムを中に格納する不揮発性格納デバイスと、
を備え、
前記第２命令シーケンサは、前記アドレスポインタにおける内容をロードし、前記第１命令シーケンサは、前記アドレスポインタにおける内容のロード完了後に前記第１ユーザレベルスレッドからの命令を実行するシステム。
【外国語明細書】
2011023032000001.pdf