(57)【要約】開示されるのは、マルチシーケンサー・マルチスレッド・システムにおける論理シーケンサー・アドレスと物理的もしくは論理的シーケンサーとの間のマッピングの管理および変換のためのシステム、方法および機構の諸実施形態である。論理シーケンサー・アドレスもしくはページからシステムの実際のシーケンサーもしくはフレームへの割り当ておよびマッピングを、マッピング・マネージャが管理しうる。マッピング・マネージャに付随する割り当て論理は、そのようなマッピングが実行されるときにシーケンサー属性を考慮に入れうる。マッピング・マネージャに付随する再配置論理は、実物シーケンサーの再マッピングをするときに、コンテキスト情報を補助記憶にあふれ出させ、補助記憶から充填することを管理しうる。シーケンサーは単独で割り当てられてもよいし、あるいは区分されたブロックの一部として割り当てられてもよい。マッピング・マネージャはまた、論理シーケンサー・アドレスがユーザー・プログラムにおいて使用されるたびに、マッピングされたシーケンサーについての識別子を提供する変換論理をも含みうる。他の実施家板も記述され、特許請求される。
2008536224.tif 000002
【特許請求の範囲】
【請求項１】
ユーザー命令において指定された論理シーケンサー・アドレスを受け取る段階と；
前記論理シーケンサー・アドレスを複数の物理シーケンサー・フレームのうちの一つに割り当てる段階と；
第二のユーザー命令に付随して前記論理シーケンサー・アドレスを受け取る段階と；
前記割り当てられた物理シーケンサー・フレームを示す識別子を提供する段階、
とを有する方法。
【請求項２】
前記論理シーケンサー・アドレスと前記割り当てられた物理シーケンサー・フレームの識別子とのマッピングをマッピング構造に記録する段階をさらに有する、
請求項１記載の方法。
【請求項３】
前記提供する段階が、前記割り当てられた物理シーケンサー・フレームを決定するために前記マッピング構造を参照する段階をさらに有する、
請求項２記載の方法。
【請求項４】
前記マッピング構造がメモリ記憶中にある、
請求項２記載の方法。
【請求項５】
前記マッピング構造の少なくとも一部分をハードウェア・バッファにバッファリングする段階をさらに有する、
請求項４記載の方法。
【請求項６】
前記提供する段階が、前記割り当てられた物理シーケンサー・フレームを決定するために前記ハードウェア・バッファを参照する段階をさらに有する、
請求項５記載の方法。
【請求項７】
前記物理シーケンサー・フレームが単一の物理シーケンサーのみを含む、
請求項１記載の方法。
【請求項８】
前記割り当てる段階が、前記複数の物理シーケンサー・フレームのうち少なくとも一つが現在割り当てされていないかどうかを判定する段階をさらに有する、
請求項１記載の方法。
【請求項９】
前記割り当てる段階が、複数のアクティブなシーケンサーのうちから犠牲者を選択する段階をさらに有する、
請求項１記載の方法。
【請求項１０】
前記割り当てる段階が、前記複数の物理シーケンサー・フレームの一つまたは複数の属性を評価する段階をさらに有する、
請求項１記載の方法。
【請求項１１】
マルチシーケンサー・マルチスレッド・システムのためのマッピング・マネージャであって：
論理シーケンサー・アドレスを物理シーケンサーに割り当てる割り当て論理と；
論理シーケンサー・アドレスを受け取って、割り当てられた物理シーケンサーに関連付けられた識別子を提供する変換論理とを有するマッピング・マネージャ。
【請求項１２】
前記割り当て論理が、第一のシーケンサーが第二のシーケンサーにアクセスすることをある所定の条件のもとで許容する共有論理をさらに有する、請求項１１記載のマッピング・マネージャ。
【請求項１３】
シーケンサーについての内容情報を補助記憶にスワップする再配置論理をさらに有する、
請求項１１記載のマッピング・マネージャ。
【請求項１４】
第一のシーケンサーが第二のシーケンサーに許可なくアクセスすることを防ぐ保護論理をさらに有する、
マッピング１１記載のマッピング・マネージャ。
【請求項１５】
前記変換論理がさらに、ユーザー命令中での参照に反応して前記論理シーケンサー・アドレスを受け取るようになっている、
請求項１１記載の方法。
【請求項１６】
実行のための論理シーケンサーの組を物理シーケンサーのより小さな組の上でスケジューリングするスケジューリング論理、
をさらに有する、請求項１１記載の方法。
【請求項１７】
ユーザー・プログラムを記憶するメモリ・システムと；
同時並行したスレッド実行が可能な複数の物理シーケンサーと；
論理シーケンサーのためのアドレスを物理シーケンサー・フレームにマッピングするためのマッピング・マネージャとを有する、マルチシーケンサー・マルチスレッド・システム
【請求項１８】
現実のシーケンサー・フレームが一つしかシーケンサーを含まない、
請求項１７記載のシステム。
【請求項１９】
前記マッピング・マネージャが、前記論理シーケンサー・アドレスを受け取るのに反応して前記物理シーケンサー・フレームに関連付けられた識別子を提供するようになっている、
請求項１７記載のシステム。
【請求項２０】
前記論理シーケンサーに関連付けられたコンテキスト情報を記憶するための補助記憶をさらに有する、
請求項１７記載のシステム。
【請求項２１】
前記論理シーケンサーについてのコンテキスト情報を記憶するための論理シーケンサー・コンテキスト待ち行列をさらに有する、
請求項１７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概括的には情報処理システムに、より特定的にはマルチシーケンサー・システムにおける論理シーケンサー・アドレス変換および管理に関する。
【背景技術】
【０００２】
マイクロプロセッサを含む情報処理システムのような、情報処理システムのパフォーマンスを上げるため、ハードウェア技術およびソフトウェア技術の両方が用いられてきた。ハードウェア側では、マイクロプロセッサのパフォーマンスを改善するためのマイクロプロセッサ設計法は、増加したクロック速度、パイプライン処理、分岐予測、スーパースカラー実行、アウト・オブ・オーダ実行およびキャッシュを含んできた。多くのそのようなアプローチはトランジスタ数の増大につながり、場合によってはパフォーマンス向上の割合よりも大きな割合でのトランジスタ数の増加をもたらしていた。
【０００３】
厳密に追加的なトランジスタを通じてパフォーマンス向上を図るのではない、他のパフォーマンス向上は、ソフトウェア技術に関わるものである。プロセッサのパフォーマンスを改善するために用いられてきたソフトウェア・アプローチの一つは、「マルチスレッド化（multithreading）」として知られている。ソフトウェア・マルチスレッド化においては、命令ストリームは、並列に実行できる複数の命令ストリームに分割される。あるいはまた、複数の独立したソフトウェア・ストリームが並列に実行されうる。
【０００４】
タイムスライス・マルチスレッドまたは時間多重（time-multiplex）（「TMUX」）マルチスレッドとして知られるアプローチでは、単一のプロセッサが、決まった時間期間後にスレッドを切り換える。もう一つのアプローチでは、単一のプロセッサが、長い遅延のキャッシュ・ミス（a  long  latency  cache  miss）といったトリガー・イベントの生起に際してスレッドを切り換える。イベント時切り換えマルチスレッド（switch-on-event  multithreading）（「SoEMT」）として知られるこの後者のアプローチでは、ある所与の時間には高々一つのスレッドしかアクティブでない。
【０００５】
マルチスレッドはますますハードウェアでサポートされつつある。たとえば、あるアプローチでは、チップ・マルチプロセッサ（chip  multiprocessor）（「CMP」）システムのようなマルチプロセッサ・システムにおける各プロセッサは、同時並行して、複数のソフトウェア・スレッドの一つに対して作用しうる。同時マルチスレッド（simultaneous  multithreading）（「SMT」）と称されるもう一つのアプローチでは、単一の物理的なプロセッサが、オペレーティング・システムやユーザー・プログラムには複数の論理的なプロセッサとして見えるようにされる。SMTについては、複数のソフトウェア・スレッドが、切り換えなしに、単一のプロセッサ上で並行してアクティブであり実行されることができる。すなわち、各論理的なプロセッサがアーキテクチャ状態の完全なセットを維持するが、当該物理的なプロセッサの他の多くの資源、たとえばキャッシュ、実行ユニット、分岐予測器、制御論理およびバスは共有される。SMTについては、こうして、複数のソフトウェア・スレッドからの命令が同時並行して各論理的なプロセッサ上で実行される。
【０００６】
SMPおよび／またはCMPシステムのような複数ソフトウェア・スレッドの同時並行的な実行をサポートするシステムのために、スレッド実行資源上でのソフトウェア・スレッドのスケジューリングおよび実行を、オペレーティング・システム・アプリケーションが制御しうる。その代わりに、ユーザーレベルの命令を介してユーザーがソフトウェア・スレッドを明示的に制御できるようにするシステムについては、そのような命令はスレッド実行資源の名前またはアドレスを指示しうる。
【０００７】
本発明の諸実施形態は図面を参照しつつ理解されうる。図面では、同様の要素は同様の数字で示される。図面は限定することを意図されてはおらず、マルチシーケンサー・システムにおける論理シーケンサー・アドレスの物理シーケンサーへのマッピングを管理および変換する装置、システムおよび方法の選ばれた実施形態を解説するために与えられるものである。
【発明の開示】
【０００８】
［発明を実施するための最良の形態］
以下の議論は、ユーザーレベルのシーケンサー算術をサポートするマルチシーケンサー・システムのために論理シーケンサー・アドレスのマッピングを管理する方法、システムおよび機構の選ばれた実施形態を記載する。ここに記載される機構および方法の実施形態はシングルコア・マルチスレッド・システムでもマルチコア・マルチスレッド・システムでも利用されうる。
【０００９】
以下の記述では、本発明の実施形態のより完全なる理解を提供するために、シーケンサー割り当て法、マルチスレッド環境、システム構成、マルチシーケンサー・システムにおけるシーケンサーの数およびトポロジー、マイクロアーキテクチャ構造および命令命名体系ならびにパラメータといった数多くの個別的な詳細が述べられている。しかしながら、そうした個別的な詳細なしでも本発明が実施されうることは当業者によって理解されるであろう。さらに、いくつかのよく知られた構造、回路などは、本発明を無用に埋没させるのを避けるために詳しく示していない。
【００１０】
ここでの用法では、スレッド・ユニットは、ここでは交換可能に「シーケンサー」とも称されるが、はっきりしたスレッド実行資源であり、スレッドを実行できるいかなる物理的または論理的ユニットであってもよい。所与のスレッドについて実行されるべき次の命令を決定するために次命令ポインタ論理を含んでいてもよい。シーケンサーは、論理的なスレッド・ユニットであっても、物理的なスレッド・ユニットであってもよい。論理的なスレッド・ユニットと物理的なスレッド・ユニットとの間のそのような区別は、図１との関連ですぐ次に論じる。
【００１１】
図１は、ユーザーレベルのスレッド制御をサポートするマルチシーケンサー・システムの実施形態１１０、１１５、１５０、１７０の選ばれた特徴を示すブロック図である。図１は、各シーケンサーが論理プロセッサで、他の論理プロセッサでの他のスレッドの実行と同時並行的にスレッドを実行しうるSMTマルチシーケンサー・マルチスレッド・システム１１０の選ばれた特徴を示している。図１はまた、時間多重型の切り換え機構のようなイベント時切り換え（SoeMT）機構を介して複数論理シーケンサーをサポートするマルチシーケンサー・システム１１５の少なくとも一つの実施形態をも示している。そのようなシステム１１５では、論理プロセッサのそれぞれが代わる代わる自分のスレッドを実行し、一時には一つのスレッドのみが実行される。
【００１２】
図１はまた、マルチコア・マルチスレッド・システム１５０、１７０の選ばれた特徴をも示している。マルチコア・マルチスレッド・システムのための物理的なコアは単一シーケンサー・コア（たとえばシステム１５０参照）でもよいし、マルチシーケンサー・コアでもよい（たとえばシステム１７０参照）。そのようなマルチコア・マルチスレッドの実施形態はのちに論じることにして、すぐ次ではシングルコア・マルチシーケンサー・システム１１０、１１５について論じる。
【００１３】
SMTシステム１１０では、単一の物理的プロセッサ１０４が、ここではTC1ないしTCn（図示せず）と称される複数のスレッド・コンテキスト（thread  context）として見えるようにされる。n個のスレッド・コンテキストのそれぞれは事実上はシーケンサーである。これらのスレッド・コンテキストの少なくとも一部（たとえばn個のうちm個）がオペレーティング・システムおよび／またはユーザー・プログラムから見えるようにされるとき、これらのスレッド・コンテキストは時に論理プロセッサ（図示せず）と称され、ここではLP1ないしLPmと称される。TC1ないしTCnの各スレッド・コンテキストは、それぞれアーキテクチャ状態（architecture  state）の集合AS1〜ASnを維持する。アーキテクチャ状態は、少なくとも一つの実施形態については、データ・レジスタ、セグメント・レジスタ、制御レジスタ、デバッグ・レジスタおよびモデル固有レジスタのほとんどを含む。スレッド・コンテキストTC1〜TCnは、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスといった物理的プロセッサ１０４のほとんどの他の資源を供給する。
【００１４】
そのような特徴を共有してもいいのだが、マルチスレッド・システム１１０における各スレッド・コンテキストは独立して次命令アドレスを生成できる（そしてたとえば、命令キャッシュ、実行命令キャッシュまたはトレース・キャッシュからのフェッチを実行できる）。こうして、たとえ複数の論理シーケンサーが単独の物理的なフェッチ／デコード・ユニット１２２で実装されるとしても、プロセッサ１０４は、各スレッド・コンテキストのために命令をフェッチするための論理的に独立な次命令ポインタおよびフェッチ論理１２０を含む。SMT実施形態については、用語「シーケンサー」は、少なくとも、スレッド・コンテキストのための次命令ポインタおよびフェッチ論理１２０を、そのスレッド・コンテキストのための関連付けられたアーキテクチャ状態ASの少なくともいくつかとともに包含する。SMTシステム１１０の諸シーケンサーが対称的である必要はないことを注意しておくべきであろう。たとえば、二つの同じ物理的プロセッサの二つのSMTシーケンサーは、それぞれが維持しているアーキテクチャ状態情報の量において異なりうる。
【００１５】
こうして、少なくとも一つの実施形態について、マルチシーケンサー・システム１１０は、同時並行マルチスレッドをサポートするシングルコア・プロセッサ１０４である。そのような実施形態については、すべてのスレッド命令が同じ物理的なプロセッサ・コア１０４によって実行されるものの、各シーケンサーはその独自の命令次命令ポインタおよびフェッチ論理と、その独自のアーキテクチャ状態情報とを有する論理プロセッサである。そのような実施形態については、単一のプロセッサ・コア１０４の実行資源が同時並行して実行されるスレッドの間で共有されてもよいが、論理プロセッサは、アーキテクチャ状態についてのその独自のバージョンを維持する。
【００１６】
図１はまた、マルチスレッド・コードを実行できるマルチシーケンサー・システムの代替的な実施形態１１５を示している。実施形態１１５はイベント時切り換えマルチスレッド（「SOEMT」）実施形態とラベル付けされている。そのような実施形態１１５については、各シーケンサーは、各シーケンサーが自分のアーキテクチャ状態情報および独自の命令次命令ポインタを有する論理プロセッサであるという点で、先の実施形態１１０のシーケンサーと同様である。しかしながら、システム１１５は、それぞれのシーケンサーが他のシーケンサーと、物理的なプロセッサ・コア１０４における単一のフェッチ／デコード・ユニット１２２内の同じ物理的なフェッチ論理１２０を共有しているという点で上で論じたシステム１１０と異なっている。フェッチ論理１２０を、システム１１５の種々のシーケンサーのためにフェッチするために切り換えるのは、多様なイベント時切り換えポリシーに基づいてでありうる。イベント時切り換えのトリガーは、時間多重（TMUX）のような時間またはマシン・サイクルの特定の量の経過でありうる。他の実施形態については、SOEMTトリガーは、キャッシュ・ミス・イベント、ページ・フォールト、長い遅延の命令（long-latency  instruction）などといった他のイベントであってもよい。
【００１７】
図１はまた、マルチコア・マルチスレッド・システムの少なくとも二つの実施形態１５０、１７０をも示している。図１に示したマルチコア・システム１５０、１７０の少なくともいくつかの実施形態については、システムはプロセッサ１０４を構成ブロックとして使う。シーケンサーのそれぞれは、単一のチップ・パッケージ１６０、１８０に複数のコア１０４1〜１０４n、１０４1〜１０４mが載っているプロセッサ・コア１０４でありうる。図１に示されるシステム１５０については、各コア１０４i（i＝0〜n）は単一スレッドのシーケンサーでありうる。図１に示されるシステム１７０については、各コア１０４j（j＝1〜m）はマルチシーケンサー・プロセッサ・コアでありうる。
【００１８】
チップ・パッケージ１６０、１８０は、図１では、マルチコア・システム１５０、１７０で図示される単一チップの実施形態が単に例示的なものであることを示すため、破線で表されている。他の実施形態については、マルチコア・システムのプロセッサ・コアは別々のチップに載っていてもよいし、あるいはSOEMTマルチシーケンサー・システムとして編成されていてもよい。
【００１９】
図１に示される第一のマルチコア・マルチスレッド・システム１５０は、それぞれが異なるスレッドを実行できる二つ以上の別個の物理的プロセッサ１０４1〜１０４nを含んでいてもよく、異なるスレッドの少なくとも一部分の実行が同時に進行しうる。１０４1ないし１０４nの各プロセッサは、そのそれぞれのスレッドについての命令情報をフェッチするために物理的に独立なフェッチ・ユニット１２２を含む。各プロセッサ１０４1〜１０４nが単一のスレッドを実行する実施形態では、フェッチ／デコード・ユニット１２２は単一の次命令ポインタおよびフェッチ論理１２０を実装する。
【００２０】
図１はまた、複数のSMTシステム１１０を含むマルチコア・マルチスレッド・システム１７０をも示している。そのような実施形態１７０については、各プロセッサ１０４1〜１０４mは複数のスレッド・コンテキストをサポートする。たとえば、各プロセッサ１０４1〜１０４mは、k個のシーケンサーをサポートするSMTプロセッサで、システム１７０は事実上、m×k個のシーケンサーを実装する。さらに、システム１７０のためのフェッチ／デコード・ユニット１２２は、サポートされる各スレッド・コンテキストについて相異なる次命令ポインタおよびフェッチ論理１２０を実装する。
【００２１】
図示の簡単のため、以下の議論はマルチコア・システム１５０の実施形態に焦点を当てる。しかしながら、下に記述される機構はマルチコア・マルチシーケンサー・システムでもシングルコア・マルチシーケンサー・システムでも実行されうるという意味で、この焦点は限定的なものと解釈すべきではない。また、シングルコア・システムあるいはマルチコア・システムのいずれも、単一シーケンサー・コアによってもマルチシーケンサー・コアによっても実装されうる。各マルチシーケンサー・コアについて、SMTおよび／またはSoeMTを含め、一つまたは複数のマルチスレッド技術が利用されうる。図１に示されたシステム１１０、１１５、１５０、１７０は、メモリ・システム、実行ユニットなどといった、図１には示されていない追加的な特徴を含んでいてもよいことは理解されるであろう。
【００２２】
図１に示されているシステム実施形態１１０、１１５、１５０、１７０について、各シーケンサー１０４は一意的な識別子と関連付けられうる（図３との関連でのちに論じる）。システム１１０、１５０のさまざまな実施形態は全シーケンサーの異なる数Nを含んでいてもよい。
【００２３】
図１に示されているシステムの実施形態１１０、１１５、１５０、１７０はそれぞれ、シーケンサー間の信号伝達をサポートしうる。ここでの用法では、「シーケンサー算術（sequencer  arithmetic）」の用語は、二つのシーケンサー間でのサービスのためのシーケンサー間信号伝達を指すのに使われる。シーケンサー算術のためのアーキテクチャ上のサポートは、シーケンサー間の制御および状態の転送のユーザーによる直接操作を許容するために一つまたは複数の命令が提供されるような命令セット・アーキテクチャへの拡張を含みうる。ユーザーレベルの命令は、論理シーケンサー・アドレスをパラメータとして含むシーケンサー算術命令または他の何らかの種類の命令である場合、「シーケンサー認識（sequencer  aware）」であると言われる。前記パラメータは、命令オペランドとしてエンコードされることもでき、および／または命令実行に際して暗黙的に参照されることができる。そのような命令は、別のシーケンサーへの信号伝達（ここでは「SXFR」命令すなわちシュレッド転送［shred  transfer］命令と称される）を提供するか、そのような信号を監視するようクライアント・シーケンサーを設定すること（ここではシュレッド監視「SEMONITOR」命令と称される）を提供するかするシーケンサー算術命令を含みうる。
【００２４】
シーケンサー認識命令はまた、シーケンサー認識状態保存および復元命令といった、論理シーケンサー・アドレスをパラメータとして含むその他の命令をも含みうる。そのような状態保存命令の実行に際しては、第一のシーケンサーが第二のシーケンサーのアーキテクチャ状態のスナップショット・コピーを生成できる。シーケンサー認識復元命令は、保存アーキテクチャ状態が指定されたシーケンサーにロードされることを指示しうる。
【００２５】
各シーケンサー認識命令はまた、任意的に、二つ以上の論理シーケンサー・アドレスをパラメータとして含んでいてもよい。たとえば、シーケンサー認識命令は、パラメータとして、複数の論理シーケンサー・アドレスの総合を含んでいてもよい。そのような手法は、一つのシーケンサーから複数の他のシーケンサーへのシーケンサー間信号のマルチキャストまたはブロードキャストのために利用されてもよい。以下の議論を簡単にするため、下に述べる例は、特に断りがなければ、ユニキャストの場合を指しうる：第一のシーケンサーが、単一の他の論理シーケンサー・アドレスを指定するシーケンサー認識命令を実行するのである。そのような手法は、記述の便宜および例示の目的のみのためのもので、限定的であると解釈すべきではない。当業者は、ここで論じられる機構の実施形態が、ブロードキャストおよびマルチキャストのシーケンサー認識命令であってもよいことを理解するであろう。
【００２６】
記述の便宜のため、下記の議論では、例示的なシーケンサー間信号伝達命令のための命令ニーモニックとしてSXFRが使われることがある。同様に、記述の便宜のため、限定することなしに、シーケンサー認識アーキテクチャ状態保存命令およびシーケンサー認識アーキテクチャ状態復元命令のため、それぞれSSAVE、SRSTORが命令ニーモニックとして使われる。当業者は、付属の特許請求の範囲から外れることなく、信号伝達命令ならびにコンテキスト保存および復元命令およびその他のシーケンス認識命令の数多くの他の変形およびニーモニックが利用されうることを理解するであろう。
【００２７】
したがって、ここに記載される方法、機構およびシステムの実施形態のために、シーケンサー算術動作のアーキテクチャのユーザーに見える特徴は、少なくとも、ユーザーが、シーケンサー間でのサービスのための信号を引き起こすことを許容する正準的な命令セットである。そのような信号伝達は、パラメータとして結果的な制御移転が実行されるシーケンサー１０４の命令または論理アドレスを含んでいる命令によってトリガーされうる。ここでの用法では、ユーザーレベルのスレッド制御移転のための信号を生成するシーケンサーはソース・シーケンサーと称され、生成された信号の受け取り側は宛先シーケンサーと称される。
【００２８】
ここで論じられるシステムの少なくともいくつかの実施形態によって組み込まれうる基本的概念の議論のために、ここで暫時図２を参照する。図２は、マルチシーケンサー・マルチスレッド・システムでの並列プログラミング手法の図的な表現を示すブロック図である。
【００２９】
並列プログラミングと称されるアプローチにおいては、共有メモリ・マルチプロセシングのパラダイムが使用されうる。このアプローチによれば、アプリケーション・プログラマは、時に「アプリケーション」または「プロセス」と称されるソフトウェア・プログラムを、ソフトウェア・プログラムのための並列を表現するために、同時並行して走らされる複数のタスクに分割しうる。同じソフトウェア・プログラム（「プロセス」）のすべてのスレッドは、メモリ・アドレス空間の共通の論理的なビューを共有する。
【００３０】
図２は、オペレーティング・システム２４０に見えるプロセス２００、２２０を示している。これらのプロセス２００、２２０は、たとえばワード・プロセッシング・プログラムおよび電子メール管理プログラムといった、異なるソフトウェア・アプリケーション・プログラムであってもよい。普通、各プロセスは異なるアドレス空間内で動作する。
【００３１】
オペレーティング・システム（「OS」）２４０は普通、図２に示されるプロセス２２０のようなプロセスについてユーザー生成のタスクを管理することを担う。したがって、オペレーティング・システム２４０は、プロセス２２０に関連付けられたユーザー定義のタスクのそれぞれについて相異なるスレッド２２５、２２６を生成することができ、スレッド２２５、２２６をスレッド実行資源にマッピングすることができる。
【００３２】
したがって、図２は、プロセス２２０に関連付けられ、プロセス２２０と同じ仮想メモリ・アドレス空間を共有するユーザー・スレッド２２５、２２６を示している。このように、図２に示されるプロセス２２０のためのスレッド２２５、２２６は、相異なるユーザー定義タスクを表している。そのようなスレッドは、OS２４０によって生成され、管理され、スケジューリングされることを表すため、ここでは時に「OSスレッド」と称される。代替的に、そのようなスレッドはまた、一つのユーザー・タスクを表すOSが管理するスレッドという概念を指して、交換可能的に「ユーザー・スレッド」または「ユーザー・タスク」と称されうる。
【００３３】
ユーザー・スレッド２２５、２２６は、OS２４０によって生成され、管理され、スケジューリングされうる。ユーザー・スレッド２２５、２２６のスケジューリングに関し、OS２４０は、実行のために該スレッド２２５、２２６をスケジューリングし、各スレッド２２５、２２６を一つまたは複数の論理シーケンサー・アドレスにマッピングするスケジューラを含みうる。したがって、図２は、各ユーザー・スレッド２２５、２２６を単一の論理シーケンサー・アドレスにマッピングするのを担うのがオペレーティング・システム２４０である伝統的なスレッド方式を示している。普通、論理シーケンサー・アドレスは、たとえば一つのはっきりした次命令ポインタを含みうる単一のシーケンサーに対応する。
【００３４】
しかしながら、図２はまた、マルチスレッドへのより最近のアプローチをも示している。図２は、図２に示されるスレッド２２５のような単一のOSスレッドが複数のユーザーレベル・スレッド２８０および２８２に関連付けられてもよいことを示している。これらのユーザーレベル・スレッドを生成し、スケジューリングし、あるいは他の仕方で管理するのはオペレーティング・システム２４０でなくてもよい。そのようなスレッドは、OSスレッドから区別するために「シュレッド（shred）」と称されうる。
【００３５】
シュレッド２８０、２８２はOS２４０のスケジューラには見えなくてもよい。したがって、OS２４０は通例、関連付けられたOSスレッド（シュレッド２８０および２８２に関連付けられたOSスレッド２２５のような）が、いつどのようにして、割り当てられた論理シーケンサー・アドレス上で走るようシュレッドをスケジューリングするかを管理しない。OSスレッド２２５はそれ自身で、通例、そのシュレッド２８０、２８２の一つをいつどのようにして走らせるかをスケジューリングすることを担う。図２にはそのようなシュレッド２８０、２８２が二つ示されているが、単一のOSスレッドにそのようなシュレッドがいくつ関連付けられていてもよい。
【００３６】
少なくとも一つの実施形態については、一つまたは複数のシーケンサー認識命令がプログラマによって、あるOSスレッドに属しているシュレッド中にコーディングされうる。そのような命令は、OSスレッドの動作中に実行されると、OS２４０のスケジューリング論理の介入なしに、シュレッドについての生成、制御移転、シーケンサー算術、コンテキスト保存、コンテキスト復元またはその他の動作を引き起こしうる。
【００３７】
図３は、ここで「シーケンサー」と称される複数のスレッド実行資源３２０、３２２、３２４、３２６を含むマルチスレッド・システム３００の少なくとも一つの実施形態を示すブロック図である。シーケンサー３２０、３２２、３２４、３２６は、いかなる種類のスレッド実行資源でもよく、それにはほんのいくつか挙げれば、単一シーケンサー・コア、SMT論理プロセッサ（たとえば図１との関連での上記のTC1ないしTCnの議論を参照）またはSOEMTコア（たとえば図１の１１５参照）が含まれる。そのようなすべての例は、一つまたは複数のスレッドの実行をサポートするハードウェア特徴を表現する。よって、SMT論理プロセッサを含め、そのようないかなるスレッド実行資源もここでは「物理シーケンサー」と称される。
【００３８】
図３は、四つの物理シーケンサー３２０、３２２、３２４、３２６を示している。シーケンサー３２０、３２２、３２４、３２６のそれぞれは、一意的なシーケンサー識別子（SEQ0、SEQ1、SEQ2、SEQ3）が関連付けられている。当業者は、図３に四つの物理シーケンサー３２０〜３２６が示されているのはあくまでも例示のためであって、限定するものと解釈すべきでないことを認識するであろう。ここに記載される技術を利用するシステムは、命令の同時並行的な実行ができる物理シーケンサーをいくつ含んでいてもよい。
【００３９】
図３はさらに、ユーザー・プログラム３４０からの一つまたは複数の命令３４５がユーザーレベルのシーケンサー認識動作を提供することを示している。シーケンサー認識命令３４５は、シーケンサーを同定するための、L_Seq0、L_Seq1、L_Seq2およびL_Seq3のような論理シーケンサー・アドレスを含む。以下の議論の残りでは、用語「論理シーケンサー・アドレス」および「仮想シーケンサー・アドレス」は交換可能に使用されることがある。
【００４０】
少なくとも一つの実施形態については、ユーザー・プログラム３４０の命令３４５は、OSが管理するスレッドによって実行されると想定される。したがって、プログラム３４０は、ここでは交換可能的にスレッドと称されうる。そのような命令３４５に反応して（すなわち、命令３４５が実行されたときに）、マッピング・マネージャ３０２は、命令３４５で指定されている論理シーケンサー・アドレスによって同定されているのがどの物理シーケンサー３２０〜３２６であるかを決定するための探索を実行しうる。マッピング・マネージャ３０２の少なくとも一つの実施形態については、この探索は、ハードウェアまたはファームウェアによって、あるいは適切な特権レベルでソフトウェア・ハンドラにフォールトすることによって実装され、あるいは支援されうる。
【００４１】
図３は、論理シーケンサー・アドレスのいくぶん単純な仮想化を提供するシステム３００の実施形態を示している。すなわち、アプリケーション・プログラマに利用可能な論理シーケンサー・アドレスの数は、物理シーケンサー３２０〜３２６の限られた数に静的に束縛される。よって、図３は、物理シーケンサーとアプリケーション・プログラム中で利用されうる論理シーケンサー・アドレスとの間の１：１のマッピングを示している。
【００４２】
こうして、マッピング・マネージャ３０２は、物理シーケンサー３２０〜３２６と一つまたは複数のスレッド３４０によって使用される論理シーケンサー・アドレスとの間のマッピングを管理しうる。少なくとも一つの実施形態については、マッピング・マネージャ３０２はオペレーティング・システム・プログラムまたは他のソフトウェア・アプリケーションである。そのような実施形態については、マッピング・マネージャ３０２は、特権レベルの動作でマッピングを扱うことができる。たとえば、実物のシーケンサーと論理シーケンサー・アドレスとの間のマッピングの管理は、OSカーネルまたはドライバによる特権動作として扱われてもよい。
【００４３】
しかしながら、マッピング・マネージャ３０２の代替的な実施形態は、マッピングをさまざまな抽象化レベルで管理しうる。たとえば、マッピング・マネージャ３０２は、ハードウェアおよび／またはファームウェアによるマイクロアーキテクチャ・レベルの名前の変更によってサポートされうる、アーキテクチャ探索表であってもよい。少なくとも一つの他の実施形態について、たとえば、マッピング・マネージャ３０２は、仮想機械またはハイパーバイザ（hypervisor）における仮想化管理ソフトウェア機構であってもよい。あるいは、少なくとも一つの他の実施形態については、マッピング・マネージャ３０２は、ユーザー・スレッド（たとえば２２５のような）またはプロセス（たとえば２２０のような）の一部としてマッピング・マネージャ機能性を実行するユーザーレベルの非特権ソフトウェア・コードであってもよい。
【００４４】
ここで図１６を参照する。図１６は、ユーザーレベルのシーケンサー認識動作をサポートするマルチシーケンサー・システム１６００のもう一つの実施形態のためのある種のアーキテクチャ上の特徴を示すブロック図である。図１６は、システム１６００がシーケンサー１６２０、１６４０を含むことを示している。図１６に示されているシーケンサーの数および種類は限定するものと解釈すべきではない。二種類のシーケンサー１６２０、１６４０しか図示されていないが、システム１６００の代替的な実施形態は追加的な種類のシーケンサーを含んでいてもよい。さらに、図１６に示されているシーケンサーの各種類１６２０、１６４０の数は、システム１６００の代替的な諸実施形態についての各シーケンサー種類の数についての上限や下限として限定するものと解釈すべきではない。各シーケンサー種類１６２０、１６４０のより少数およびより多数のいずれも利用可能である。
【００４５】
図１６は、システムが(1＋s)×t個のシーケンサーを含んでいることを示している。図１６は、第一のシーケンサー種類t（１６２０）の合計と第二のシーケンサー種類s（１６４０）の合計との間のt対(s×t)の拘束関係を示している（ここではt＝4、s＝3）が、そのような図示は限定するものと解釈すべきではない。代替的な実施形態については、tとsはt＞0かつs≧0となるようないかなる数にも変えることができる。
【００４６】
第一のシーケンサー種類１６２０は図１６ではＴとマークされ、ここでは「Tシーケンサー」と称するが、これはOSによって直接管理されることができ、OSはTシーケンサー上で走るようOSスレッドをスケジューリングしうる。第二のシーケンサー種類１６４０は図１６ではＳとマークされ、ここでは「Sシーケンサー」と称するが、これはOSによって直接は管理されない。その代わり、Sシーケンサー１６４０は、スレッド中のユーザー・コードによって直接管理されうる――そのスレッドに関連付けられた諸シュレッドを走らせるためにそのスレッドによって直接、スケジューリングできるのである。
【００４７】
アーキテクチャ的には、OSが管理する各スレッドは、一つのはっきりしたマルチシーケンサー・アンサンブル１６５０（ここでは「メタプロセッサ」と称される）に対応しうる。各メタプロセッサ１６５０は一つの論理的Tシーケンサーとs個の論理的Sシーケンサーを含みうる。図１６は、t個のメタプロセッサを示しており、ここではt＝4である。図示されたメタプロセッサのそれぞれは、s個のSシーケンサーを含んでおり、ここではs＝3である。したがって、メタプロセッサ１６５０のそれぞれは、s＋1個の全シーケンサー（すなわち、s個のSシーケンサーと一つのTシーケンサー）を含みうる。スレッドをメタプロセッサ１６５０にスケジューリングするのはOSが担いうるが、そのスレッドはさらに、メタプロセッサ内の(1＋s)個のシーケンサー上で同時並行的に複数のシュレッドをスケジューリングし、走らせることができる。図１６は、システムのためのメタプロセッサ１６５０の数を制限するものと解釈するべきではなく、各メタプロセッサ１６５０に関連付けられたSシーケンサー１６４０の数を制限するものでもない。tおよびsの個別的な値が図１６には示されているが、あくまでも例示のためのものである。
【００４８】
図３および図１６に示された実施形態３００、１６００のようなユーザーレベルのシーケンサー認識動作へのサポートを提供するマルチシーケンサー・システムについては、シーケンサーとは、事実上、アーキテクチャ資源の一つの相異なる形である。レジスタ資源、メモリ資源およびその他の既知の共通アーキテクチャ資源と同様、シーケンサー資源は相異なるアーキテクチャ上の名前空間を有し、仮想化管理の対象となりうる。
【００４９】
アーキテクチャ的には、シーケンサー資源は、限定することなく、少なくとも三つの構成要素を含みうる：参照名、シーケンサー状態コンテキストおよび機能記述子である。機能記述子は、スケジューリング制約条件および要件といった、シーケンサーについての属性情報ならびにそれがTシーケンサーかSシーケンサーかといったその他の関連属性を含みうる。アーキテクチャ的には、(1＋s)個のシーケンサーのメタプロセッサ１６５０内の任意の二つのシーケンサーについて、それぞれのシーケンサー資源は参照名において異なっており、コンテキスト組成および／または機能記述子情報に関しても異なっていてもよい。たとえば、あるシーケンサーのアーキテクチャ状態の集合が他のシーケンサーのものとは異なっていることも可能である。
【００５０】
所与のメタプロセッサ１６５０について、SXFR、SSAVEおよびSRTORといった上述したシーケンサー認識命令は、(1＋s)個の論理シーケンサーすべてについて定義されうる。すなわち、該命令は、オペランドとしてエンコードされた論理シーケンサー・アドレスの一つまたは複数を有していてもよいし、あるいは命令実行の間に論理シーケンサー・アドレスの一つまたは複数を他の仕方で参照してもよい。
【００５１】
アーキテクチャ的には、メタプロセッサ１６５０中の一つのTシーケンサー１６２０とs個のSシーケンサー１６４０の一見静的な束縛は論理的（あるいは時に等価な意味で「仮想的」と呼ばれる）なものでしかない。すなわち、所与のメタプロセッサ中の論理シーケンサー・アドレスは静的に決定され、たとえば0からsの範囲となりうる。しかしながら、代替的な実施形態を論じる目的で、図１６が示すシステム１６００はK個の物理シーケンサーSeq0〜Seqkを含む実行資源１６８０を有していることがわかる。実行資源１６８０のシーケンサーは、それぞれ、関連付けられたキャッシュ階層１６９２に結合されうる。図１６では別個に図示されているが、当業者は、シーケンサーSeq0〜Seqkについてのキャッシュ階層１６９２がオフチップ・キャッシュとともに、あるいはオフチップ・キャッシュの代わりにオンチップ・キャッシュを含んでいてもよいことを理解するであろう。図１６は、シーケンサーSeq0〜Seqkのそれぞれが、すべてのシーケンサーによって共有されている共有メモリへのアクセスを有しうることをも示している。
【００５２】
K＞0、より普通にはK≧tの場合、(1＋s)×t個の論理シーケンサーからK個の物理シーケンサーへのマッピングは、ランタイムの間に動的に変更されうる。結果として、そのような実施形態のためには、一つまたは複数のメタプロセッサ１６５０のための一つまたは複数の論理Tシーケンサー１６２０および関連付けられた一つまたは複数の他のSシーケンサー１６４０に対応する物理シーケンサーの厳密なグループ化は、ランタイムの間に動的に変更されうる。
【００５３】
論理シーケンサー・アドレスの物理シーケンサーへの動的なマッピングは「仮想化」とも称されうる。論理シーケンサー・アドレスの仮想化は、実行のために複数のシーケンサーを必要としうるスレッドが、動的な物理シーケンサー割り当てによって実行されることを許容する技術である。論理シーケンサー・アドレスの仮想化とは、スレッドから見た論理シーケンサー・アドレスを、物理的なマルチシーケンサー・プロセッサ実装によって見た物理シーケンサーの物理シーケンサー識別子から分離させる抽象化のことをいう。この分離のため、アプリケーション・プログラマが意識しなければならないのは、論理シーケンサー・アドレスのみである。
【００５４】
図３との関連で上で論じた実施形態３００と同様、図１６に示されたシステム１６００のためのシーケンサー認識命令は、宛先シーケンサーのための論理シーケンサー・アドレスを指定しうる。しかしながら、システム１６００の少なくとも一つの実施形態については、論理シーケンサー・アドレスは、物理シーケンサーに、静的にマッピングされるよりは、動的にマッピングされる。論理シーケンサー・アドレスの物理シーケンサーへの動的なマッピングは、マッピング・マネージャ１６７０によって管理されうる。少なくとも一つの実施形態については、マッピング・マネージャ１６７０は、図３との関連で上で論じたマッピング・マネージャ３０２の線に沿っていてもよい。実行の間、ある論理シーケンサー・アドレスについてのマッピングは、ある物理シーケンサーから別の物理シーケンサーへと変わってもいいし、変わらなくてもいい。
【００５５】
マッピング・マネージャ１６７０は、論理シーケンサー・アドレスの物理シーケンサーへの動的マッピングに加えて、システム１６００のシーケンサー資源のさまざまな異なる側面を管理しうる。マッピング・マネージャ１６７０は、追加的に、メタプロセッサ１６５０内のTシーケンサー１６２０と一つまたは複数のSシーケンサー１６４０との間の束縛を管理しうる。さらに、マッピング・マネージャはシーケンサー状態コンテキストおよびシーケンサー機能記述子を管理しうる。
【００５６】
シーケンサー認識命令をサポートするマルチシーケンサー・システムについて、論理シーケンサー・アドレス空間の大きさ（すなわち、シーケンサー認識命令において使用できる相異なる論理シーケンサー・アドレスの総数）は、アーキテクチャ的に、所与のシステムについて存在する物理シーケンサーの数とは独立に定義されてもよい。たとえば、当該マルチシーケンサー・システムのための実物のシーケンサー数がもっと少ないビット数で表現できるかどうかに関わりなく、論理シーケンサー・アドレスを表現するのに32ビット値を使ってもよい。そのような例示的な実施形態については、当該システムが物理シーケンサーをいくつ含んでいるかに関わりなく、k＝32としてkビットを使って2k＝232個の論理シーケンサー・アドレスを表現するために使うことができる。
【００５７】
図１６に開示されている１６００のようなマルチシーケンサー・システム・アーキテクチャを記述するとき、一つのTシーケンサーおよび(2k−1)個のSシーケンサーを有する一つのメタプロセッサ（たとえば図１６の１６５０のような）上で、一つのスレッド（図２のたとえば２２５または２２６のような）が参照可能な総数2k個の論理シーケンサー・アドレスを表すのに「kビットのシーケンサー・アドレッシング可能性」という概念を使うことが便利なことがある。逆に、(1＋s)個のシーケンサー１６２０、１６４０のメタプロセッサ１６５０は、log(1＋s)ビット・アドレッシング可能なシーケンサー空間をもつと称されうる。したがって、図１６は、各メタプロセッサ１６５０が2ビット・アドレッシング可能な論理シーケンサー・アドレス空間をもつと言われるマルチシーケンサー・システム１６００を示している。
【００５８】
図４および図５は、物理シーケンサーの、ユーザーレベルのシーケンサー認識命令で使われる論理シーケンサー・アドレスへの動的マッピングを提供するマルチスレッド・マルチシーケンサー・システムの少なくとも二つの代替実施形態、それぞれ４００および５００を示している。図４および図５の同様の要素は同様の参照符号をもつ。
【００５９】
論理シーケンサーから物理シーケンサーへの動的マッピングをサポートするシステム４００、５００について、アプリケーション・プログラマは、実行中、アプリケーションを走らせるために、いつ、どの物理シーケンサーが利用可能になるかを知る必要はない。プログラマは、アプリケーション・プログラムでは単に論理シーケンサー・アドレスを使えばよい。上で説明したように、マルチシーケンサー・システム４００、５００のプログラムのビューが、システム４００、５００の物理シーケンサー４２０〜４２６の数（N）を実際には超えている数（M）の論理シーケンサー・アドレス（Virt.  0〜Virt.  M）を含むことを許容することが望ましいことがありうる。そのような実施形態については、マッピング・マネージャ４０２、５０２が、M個の論理シーケンサー・アドレスをM＞NのN個の物理シーケンサー識別子にマッピングすることを担いうる。M＝NまたはM＜Nの他の実施形態では、マッピング・マネージャ４０２、５０２は図３に描かれた実施形態について上記したのと同様または可能性としてはより単純なマッピングを実行しうる。
【００６０】
論理シーケンサー・アドレスの物理シーケンサーへの動的マッピングは、マッピング・マネージャ４０２、５０２によって、「舞台裏で」、アプリケーション・プログラムには透明な仕方で扱われる。図４および図５との関連で使われるところでは、「物理シーケンサー」は、所与の物理的なマルチシーケンサー・ハードウェア・システムにおいて実装されている実際のシーケンサー（たとえば４２０〜４２６参照）である。
【００６１】
図４および図５は、システム４００、５００が、実行資源４９０に結合された記憶媒体４６０を含みうることを示している。記憶媒体４６０は、階層構造のさまざまなレベルを有するメモリ・サブシステムであってもよい。それには、これに限られないが、さまざまなレベルのキャッシュ・メモリ、読み出し専用メモリ（「ROM」）のようなマイクロコードもしくはファームウェアの記憶、動的ランダムアクセスメモリなどのようなシステム・メモリおよびフラッシュメモリ（たとえばメモリー・スティックなど）、磁気ディスクもしくは光ディスクのような不揮発性記憶が含まれうる。示されるように、記憶媒体４６０はアプリケーション・プログラム４４０およびマッピング・マネージャ４０２、５０２を記憶しうる。
【００６２】
マッピング・マネージャ４０２、５０２は主としてシーケンサー仮想化管理タスクを担いうる。上で説明したように、マッピング・マネージャ４０２、５０２は、図４および図５に示される実施形態のように記憶媒体４６０に記憶されているソフトウェア・プログラムである必要は必ずしもない。他の実施形態については、マッピング・マネージャ４０２、５０２はハードウェアおよびソフトウェア抽象化のさまざまなレベルのいずれにおいて存在してもよい。そのような抽象化はマイクロアーキテクチャ・レベル、仮想機械またはハイパーバイザー・アーキテクチャ・レベル、OSカーネルまたはドライバ・レベルおよび非特権のユーザー・コード・レベルの範囲がありうる。
【００６３】
このようにして、マッピング・マネージャ４０２、５０２は、さまざまな仮想化タスクを実行しうる。マッピング・マネージャ４０２、５０２は、マッピング機構のほかスケジューリング機構をも含みうる。マッピング機構は、割り当て論理（rationing  logic）４８５および変換論理４８６を含みうる。スケジューリング機構はスケジューリング論理４８７を含みうる。
【００６４】
変換論理４８６は、論理シーケンサー・アドレスを参照する全シーケンサー認識命令についてアドレス変換を提供しようと試みうる。論理シーケンサー・アドレスから物理シーケンサーへの動的マッピングを提供するシステム４００、５００について、論理シーケンサー・アドレス（アプリケーション・プログラム４４０によって使用される）の物理シーケンサー識別子への変換は、シーケンサー認識命令が論理シーケンサー・アドレスを参照するたびに、変換論理４８６によって実行されうる。
【００６５】
図５は、マッピング・マネージャ５０２の代替的な実施形態を示しており、マッピング情報を維持し、論理シーケンサー・アドレスの物理シーケンサー識別子への変換を実行するためにマッピング構造５８０を利用しうるものである。マッピング構造５８０は、少なくとも一つの実施形態については、記憶媒体４６０内にあってもよい。一般に、オペランドを含んでいるか、あるいは他の仕方で論理シーケンサー・アドレスを参照する任意の命令について、論理シーケンサー・アドレスは、マッピング構造５８０内の探索を通じてマッピング・マネージャ５０２によって変換される。少なくとも一つの実施形態については、そのような変換探索は、オペレーティング・システムのシステムレベルのサポートを使って実行されうる。少なくとも一つの代替的な実施形態については、変換探索はスレッドレベルのアプリケーション固有の仮想化によって実行されうる。さらにもう一つの代替的な実施形態については、変換探索は仮想機械モニタまたはハイパーバイザーによって実行されうる。
【００６６】
図５はまた、論理シーケンサー・アドレスの物理シーケンサー識別子への変換を加速するための任意的な機構が変換論理４８６によって利用されうることも示している。図５は、システムの実行資源４９０がさらに、そのような加速を支援するために任意的な変換加速構造５１８を含みうることを示している。少なくとも一つの実施形態について、変換加速構造５１８は、マッピング構造５８０の項目の部分集合を保持するキャッシュまたはバッファとして動作しうる。変換加速構造５１８に破線を使っていることは、そのような構造５１８の任意的な性質を表すことを意図したものである。
【００６７】
変換論理４８６が探索を実行した後で物理シーケンサーを位置特定できないか、あるいは論理シーケンサー・アドレスについてのマッピング情報を位置特定できない場合、フォールトが引き起こされうる。このように、フォールトは、論理シーケンサー・アドレス変換ミス（logical  sequencer  address  translation  miss）（ここでは「LSATミス」と称される）に際して生じる。LSATミス・フォールトは、フォールトを引き起こした論理シーケンサー・アドレスのために物理シーケンサーを割り当てるために、割り当て論理４８５のようなハンドラへの制御の移転を引き起こしうる。
【００６８】
これらのフォールトに関し、SXFR、SSAVE、SRTORなどといったシーケンサー認識命令はアーキテクチャ的にはフォールト生成意味（faulting  semantics）とともに定義でき、それにより、変換論理４８６が探索後に物理シーケンサーを位置特定できない場合、あるいは論理シーケンサー・アドレスについてマッピング情報を位置特定できない場合に、失敗条件が生成される。フォールトに反応して、制御は、割り当て論理４８５のようなフォールト・ハンドラに移転されうる。換言すれば、変換論理４８６および／またはマッピング構造５８０が論理シーケンサーから物理シーケンサーへの変換探索において失敗したときにLSATフォールト条件が持ち上がりうる。
【００６９】
マッピング・マネージャ４０２、５０２のさまざまな実施形態について、LSATミス・フォールトは異なる仕方で扱われうる。マッピング・マネージャ４０２、５０２がハードウェアで直接実装される少なくとも一つの実施形態については、マッピング・マネージャ４０２、５０２は、フォールト条件を扱うハードウェア状態機械として実装されうる。
【００７０】
別の実施形態については、LSATミスによって引き起こされたフォールトはマイクロアーキテクチャのフォールト条件であることもあり、マイクロアーキテクチャ・レベルでマイクロコードのフローによって対処される。マイクロコードのフローは、記憶媒体４６０のROM部分のようなマイクロコード記憶に記憶されたマイクロ命令のシーケンスでありうる。少なくとも一つの実施形態については、LSATミス・フォールト条件は、マッピング・マネージャ４０２、５０２の割り当て論理４８６を実装する専用のマイクロコード・フローにジャンプするマイクロコード制御移転を引き起こしうる。
【００７１】
さらに別の実施形態については、LSATミスによって引き起こされたフォールト条件は、仮想機械についてのアーキテクチャ上の特権レベルについて定義されうる。フォールト条件は、仮想機械モニタまたはハイパーバイザーへの制御の移転を引き起こす。そのような実施形態では、ゲスト・オペレーティング・システムのようなゲスト・ソフトウェア上でのLSATミス・フォールト条件は、ホスト仮想機械モニタまたはハイパーバイザーへの制御遷移（VMEXITのような）をトリガーしうる。仮想機械モニタまたはハイパーバイザーはマッピング・マネージャ４０２、５０２を実装でき、それがフォールトの手当てをする。
【００７２】
さらにもう一つ別の実施形態については、LSATフォールトは、メモリ・ページ・フォールトに類似して、IA32アーキテクチャにおけるリング0特権レベルのような、オペレーティング・システムについてのアーキテクチャ上の特権レベルで定義される。少なくとも一つの実施形態について、LSATミスはこのように、システムレベルのフォールトを引き起こしうる。そのような実施形態は図４および図５に示されている。そのような実施形態については、シーケンサー・アドレス変換フォールトは、OSカーネルまたはデバイス・ドライバにおけるシステムレベルでのマッピング・マネージャ４０２、５０２ソフトウェア・ハンドラへの制御移転につながることができる。システム特権レベルは時に、アーキテクチャによっては交換可能にスーパーバイザー特権レベルと称されることもある。そのようなシステムレベルのLSATミス・フォールトは、たとえば、読み込み命令についてのページ・ミスに際して引き起こされるメモリ・ページ・フォールトに似ているかもしれない。システムレベルのLSATフォールト条件に反応して、オペレーティング・システムまたはデバイス・ドライバ・ハンドラでありうるマッピング・マネージャ４０２、５０２が該フォールトの手当てをするために呼び出されうる。
【００７３】
さらに別の実施形態によれば、LSATフォールト条件は、ユーザーレベルまたは非スーパーバーザー・レベル・コードに対応するアーキテクチャ上の特権レベル（IA32アーキテクチャにおけるリング3特権レベルのような）で定義されうる。たとえば、フォールト条件は「譲歩イベント（yield  event）」のユーザーレベルのフォールト様タイプとして定義され、発生すると、マッピング・マネージャ４０２、５０２の割り当て論理４８６を実装するユーザーレベルのハンドラ・コードへの制御の移転を引き起こしうる。そのような実施形態については、LSATミス・フォールト条件は、フォールトを誘導したシーケンサー認識命令を含んでいた同じユーザー・プログラムによって手当てされうる。
【００７４】
上で論じた実施形態の一つまたは複数について、シーケンサー認識命令の実行の間の論理シーケンサー・アドレス変換ミス（ここでは「LSATミス」と称している）に際して生じるフォールトは、同期的または非同期的な仕方のいずれでも対処されうる。非同期的なアプローチのためには、シーケンサー・ミスは上記のようにフォールト条件を引き起こしうる。そして、そのフォールトが、マッピング・マネージャ４０２、５０２への、あるいはより具体的には少なくとも一つの実施形態については割り当て論理４８５を含むハンドラ・コードへの制御の移転を引き起こす非同期的イベントとして作用するようにして、前記シーケンサー・ミスが手当てされうる。フォールト処置はイベント駆動型であり（LSATミスに際して生じる）、フォールト・ハンドラへの対応する制御の移転は、性質上、非同期的である。
【００７５】
しかしながら、少なくとも一つの代替的な実施形態については、アーキテクチャは、シーケンサー認識命令の無フォールトの（non-faulting）変形を定義してもよい。LSATミスは、ハンドラへの非同期的な制御移転を引き起こすフォールトを引き起こすのではなく、のちの同期的処置のためにログ記録されうる。たとえば、前記ミスは、「ポイズン・ビット（poison  bit）」またはその他のミス指標（miss  indicator）の設定によってログ記録されうる。そのような場合、実行中、あとでソフトウェアによってミス指標がチェックされうる。ミス指標が設定されていると検出されれば、前記ミスはその時点で対処されうる。このようにして、ミス指標において指示されるフォールト条件は同期的に処置されうる。
【００７６】
そのような実施形態については、無フォールトのシーケンサー認識命令がLSATミスに遭遇した場合、その命令はアーキテクチャ的なフォールトを生成しない。その代わり、のちの処理のためにそのミスがログ記録されることができ、命令は実行を完了する。そのような実施形態については、ミスは、条件ビットを設定するのと同様の仕方で、アーキテクチャ状態の一部としてログ記録されうる。LSAT変換ミスをログ記録するために設定されたアーキテクチャ状態の一つまたは複数のビットは、「ポイズン」状態と称されうる。少なくとも一つの実施形態については、「ポイズン」状態を表すアーキテクチャ状態は2ビット以上である。少なくともいくつかのそのような実施形態については、マルチビット状態において、LSATミスが発生したかどうかに加えて追加的な情報がエンコードされてもよい。たとえば、LSATフォールト条件の潜在的な原因を示す特定の診断情報もしくはヒントおよび／または該フォールト条件を引き起こしたシーケンサー命令についての何らかの情報である。
【００７７】
無フォールトの実施形態については、その無フォールトのシーケンサー認識命令のための潜伏（retirement）完了後にソフトウェアがポイズン状態を検査しうる。変換ミスがログ記録されていれば、ソフトウェアはハンドラへの動的的な制御移転を実行でき、するとそのハンドラが変換ミス・フォールトに対処しうる。少なくとも一つの実施形態については、シーケンサー認識命令の無フォールト変形についての振る舞いは、インテル・コーポレイションから入手可能なアイテニアム（登録商標）マイクロプロセッサおよびアイテニアム（登録商標）２マイクロプロセッサのアーキテクチャにおけるLD.SおよびCHK.Sの使用モデル（usage  model）にいくぶん類似している。ここで、LD.S命令はメモリ・ページ・フォールトを調査しうるが、仮想メモリ変換における失敗が生じてもページ・フォールトを引き起こさない。その代わり、LD.Sは命令実行を完了させるが、ポイズン・ビット（NATビットと呼ばれる）をセットする。このポイズン・ビットは、のちにユーザー・アプリケーション・ソフトウェアにおいてCHK.S命令によって検査されうる。それはユーザーレベルのハンドラへの制御の移転を引き起こしうる。
【００７８】
まとめると、多くの異なる実施形態について、変換論理４８６が物理シーケンサーを位置特定できないとき、あるいはシーケンサー認識命令において指定された論理シーケンサー・アドレスについてマッピング情報を位置特定できないとき（ここでは「LSATミス」と称される）、フォールト生成の振る舞い（faulting  behavior）は、フォールト・ハンドラへの制御移転を引き起こす非同期的なイベントであってもよいし、その代わりに、ポイズン状態のログ記録を引き起こしてあとでソフトウェアによって同期的に検査できるようにしてもよい。そのようなフォールト振る舞い（fault  behaviors）は、種々の実施形態において、種々の特権レベル（たとえば、仮想機械モニタおよびハイパーバイザー・レベル、システム特権レベルおよびユーザーレベルのような）について定義されうる。
【００７９】
図４および図５の実施形態４００、５００両方について、マッピング・マネージャ４０２、５０２は、変換に加えて、マッピング管理（mapping  management）をも実行しうる。少なくとも一つの実施形態については、マッピング管理の少なくとも一部分は割り当て論理４８５によって実行されうる。割り当て論理４８５は、たとえば、LSATミスに遭遇したときに呼び出されうる。割り当て論理４８５は、物理シーケンサーを、シーケンサー認識命令において指定されている論理シーケンサー・アドレスにマッピングしうる。物理シーケンサーにマッピングされている論理シーケンサーはここでは、「アクティブな論理シーケンサー」と称され、対応する物理シーケンサーのほうは「ダーティーな物理シーケンサー」と呼ばれうる。論理シーケンサーにマッピングされていない物理シーケンサーは、「利用可能」または「アイドル」または「空いている」と称されうる。
【００８０】
少なくとも一つの実施形態については、割り当て論理は、アクティブな論理シーケンサーのコンテキストを対応するダーティーな物理シーケンサーから補助記憶（backing  store）（図７との関連でのちに詳述）に移して空きを作り、次いで結果として利用可能になる物理シーケンサーを、アクセスしようとしてLSATミスを起こしたばかりの論理シーケンサーに与えることができる。そのようなコンテキストのスワッピング動作は、割り当て論理４８５によって、たとえばマッピングするためにアイドルで利用可能な追加的な物理シーケンサーがないときに行われうる。
【００８１】
すなわち、実行資源４９０は有限個Nの物理シーケンサー４２０〜４２６を含む。それらの物理シーケンサー上でマッピング・マネージャ４０２、５０２はM個の論理シーケンサーを実行のためにマッピングし、スケジューリングすることができる。アクティブなユーザー・スレッド（たとえば図２の２２５のような）によって論理シーケンサー上でスケジューリングされる各アクティブなシュレッド（たとえば図２の２８０および／または２８２のような）は、その上で走るべき物理シーケンサーを必要とする。したがって、マッピング・マネージャ４０２、５０２は、これらの論理シーケンサーにスケジューリングされるシュレッドの実行を前に進めるために、物理シーケンサーの論理シーケンサーへの割り当ておよびマッピングを管理しうる。
【００８２】
上記のマッピングおよび割り当て機能を実行する際、マッピング・マネージャ４０２、５０２の割り当て論理４８５は、物理シーケンサー（４２０〜４２６）を論理シーケンサー・アドレスにマッピングされるよう割り当てうる。割り当て論理４８５は、（１）複数プロセスからの複数スレッドと同様、同じスレッドからの複数のシュレッドを受け容れるようシーケンサーを細分し、（２）頻繁に参照される論理シーケンサーのワーキング・セットをできるだけたくさん物理シーケンサーにマッピングするために効率的にシーケンサーを割り当てることによって、シーケンサー利用を最大化しようと努力する。割り当て論理４８５は、仮想シーケンサーから物理シーケンサーへのマッピングを管理するためのいくつかのアプローチのいずれを使ってもよい。そのようなアプローチは、基底と限界、セグメンテーション、ページングなどを含みうる。このリストは網羅的であることは意図しておらず、例示的な一覧である。
【００８３】
〈基底と限界（Base  and  Bounds）〉
図４に示されているマッピング・マネージャ４０２は、仮想シーケンサーから物理シーケンサーへのマッピングを管理するために基底と限界アプローチをサポートしうる。そのような実施形態については、マッピング・マネージャ４０２は、各スレッドについて（あるいは、等価なことだが各メタプロセッサについて）物理シーケンサーの静的な区画（partition）を指定する静的区画アプローチを受け容れる。マッピング・マネージャ４０２は、マッピングを実行するために、ハードウェア・マッピング構造４１５を利用してもよい。
【００８４】
少なくとも一つの実施形態については、マッピング構造４１５は少なくとも二つのレジスタを含む：基底レジスタ４１６と限界レジスタ４１７である。基底レジスタ４１６は、あるスレッドのための基底シーケンサー識別子の値を保持しうる。限界レジスタ４１７は該スレッドのための最大のシーケンサー識別子の値を保持しうる。限界レジスタの値は、そのスレッドがアクセスしてよい最大の有効な仮想シーケンサー・アドレスを表す。基底レジスタ４１６および限界レジスタ４１７は、合わせて、そのスレッドのための物理シーケンサーの範囲を定義する。基底レジスタ４１６および限界レジスタ４１７のための値は、あるスレッドがロードされるか、スワップ・インされるときにマッピング・マネージャ４０２によってロードされうる。
【００８５】
基底と限界アプローチのもとでは、スレッドは、その基底レジスタ４１６および限界レジスタ４１７の値によって示される物理シーケンサー識別子の範囲内にある物理シーケンサーにのみアクセスしうる。
【００８６】
スレッドにおいて論理シーケンサー・アドレスが参照されるたびに範囲検査が実行されうる。論理シーケンサー・アドレスをスレッドが参照するたびに、スレッドは、0から限界レジスタ４１７の値までの論理アドレス範囲にアクセスできるという幻想を有する。しかしながら、スレッドは物理的には：基底レジスタ４１６の値によって表される下限から基底レジスタ４１６の値と限界レジスタ４１７の値との和として計算される上限までの範囲内の物理シーケンサーへのアクセスを有する。シーケンサー・アドレスは限界レジスタ４１７の上限値と比較される。アドレスが限界内になければ、マッピング・マネージャ４０２に対して変換フォールトが生成される。
【００８７】
〈セグメンテーション（Segmentation）〉
マッピング・マネージャ４０２によってサポートされうる代替的な動的論理シーケンサー・アドレス管理アプローチは、セグメンテーション・アプローチとともに基底と限界アプローチを組み込みうる。そのような実施形態のためには、実行資源４９０は、各「セグメント」について基底レジスタ４１６および限界レジスタ４１７の組を含みうる。したがって、x個のセグメントのためのマッピング構造４１５は、x個の基底レジスタ４１６およびx個の対応する限界レジスタ４１７を組み込みうる。ここで、各レジスタ対４１６、４１７はある「セグメント」に関連付けられている。
【００８８】
「セグメント」とは、論理シーケンサー・アドレスの論理的な集合ブロックである。論理シーケンサー・アドレスの各集合ブロックがセグメントと呼ばれ、そのセグメント独自の基底レジスタ４１６および限界レジスタ４１７に関連付けられていることができる。実施形態によっては、基底レジスタ４１６はセグメント基底レジスタと呼ばれ、限界レジスタ４１７はセグメント限界レジスタと呼ばれる。少なくともいくつかの実施形態では、セグメンテーションは、物理シーケンサーを、それぞれが特殊な機能特性をもつ相異なるグループに区分するために使われる。機能特性とはたとえば、パワー・パフォーマンス特性（たとえばあるセグメントのシーケンサーは別のセグメントのシーケンサーより高速または低速でありうる）またはシーケンサー種別（たとえば、あるセグメントのシーケンサーはTシーケンサーとしてマッピングされうるが、別のセグメントのシーケンサーはSシーケンサーとしてマッピングされうる）のようなものである。
【００８９】
〈ページング（Paging）に基づく論理シーケンサー・アドレス管理〉
図５は、論理シーケンサー・アドレスの動的なマッピングを管理するためのページングに基づくアプローチを利用するマッピング・マネージャ５０２の実施形態を示している。
【００９０】
図５は、物理シーケンサー４２０〜４２６が、「フレーム（frame）」５１０と称される小さな均等サイズの区画（partition）として編成されうることを示している。図５には二つのフレーム５１０しか示されていないが、そのような図示は限定するものと解釈すべきではない。マッピング・マネージャ５０２は、何個のフレームについてでも仮想から物理へのマッピングを管理しうる。さらに、フレームはシーケンサーを何個含んでいてもよい。
【００９１】
マッピング・マネージャ５０２は、動的にマッピングされる論理シーケンサー・アドレスのための論理シーケンサー・アドレス空間も「ページ」と称されるいくつかの均等サイズの区画に分割されうるという、ページングに基づくアプローチを実施しうる。ページ中の論理シーケンサーの数はフレームと同じである。したがって、論理シーケンサー・アドレス空間は事実上、所与のフレーム・サイズの論理シーケンサー・ページの集合である。
【００９２】
ページが小さいとページ・テーブルのサイズが大きくなる可能性がある一方、ページが大きいと内部フラグメンテーションの比較的高い生起につながる可能性がある。割り当て論理４８６は、ページ・レベルの粒度で、物理シーケンサーを割り当て、論理シーケンサーをマッピングしうる。図５に示される例示的な実施形態については、各フレームは二つの物理シーケンサーを有している。
【００９３】
ページに基づく論理シーケンサー・アドレス空間についてのアーキテクチャ上のサポートはページ・テーブルへのポインタを記憶するためのレジスタ５２５または他の構造を含みうる。少なくとも一つの実施形態については、ページ・テーブルは、たとえばメモリのような記憶媒体４６０内のマッピング構造５８０内に維持されていることが予期される。また、少なくとも一つの実施形態については、ポインタ・レジスタ５２５の値が、ページ・テーブルの基底メモリ・アドレスまたは位置を示すためにロードされることが想定される。ページに基づく論理シーケンサー・アドレス空間についてのアーキテクチャ上のサポートはまた、ページ・テーブル・サイズのための値を保持するためのレジスタ５２６またはその他の構造をも含みうる。
【００９４】
ページング機構は、物理シーケンサー４２０〜４２６を、シーケンサー割り当ての基本単位となる均等または不均等サイズの固定サイズの区画に区分するために使用されうる。シーケンサーの均等サイズの固定区画について、各区画があるスレッドに割り当てられうる。すべてのスレッドが同数のシーケンサーにアクセスする必要がないこともあるので、そのようなアプローチは、内部フラグメンテーションにつながりうる。しかしながら、そのようなアプローチの恩恵は、すべての区画が均等なサイズなので、利用可能な区画のうち、どの特定の区画に実際にスレッドを割り当てるかを問題にしなくていいことになり、マッピング・マネージャ４０２、５０２の割り当て論理４８５が利用する配置アルゴリズムがより柔軟になりうるということである。
【００９５】
ページング機構のために均等サイズの区画を使用することは、論理シーケンサー・アドレスの大きくて疎な集合からの論理シーケンサーの小さなワーキング・セットを、物理シーケンサーの小さなセットにマッピングするために単純なビットマップを使うことを許容する。この恩恵は、セグメントが連番の物理シーケンサーの集合を表すセグメンテーション・アプローチでは実現されない。セグメンテーション・アプローチでは、マッピング・マネージャ４０２、５０２は、論理シーケンサー・アドレスのほんのわずかの離散的な部分集合を物理シーケンサーにマッピングすることはできない。
【００９６】
代替的に、マッピング・マネージャ４０２、５０２が可変サイズの固定したセットのページを割り当ててもよい。そのようなアプローチについては、スレッドは、そのスレッドのために十分な大きさでありかつ、利用可能な最小の区画を割り当てられる。割り当て論理４８５はより小さなシーケンサー・ブロックを要求するスレッドにはより小さな区画を割り当てうるので、内部フラグメンテーションは、均等サイズの固定区画アプローチの場合よりも少なくなりうる。すなわち、各スレッドを、そのスレッドがはいる最小の利用可能な区画に割り当てることが可能である。このアプローチは、外部フラグメンテーションにつながる可能性がある。すなわち、利用可能な物理シーケンサー４２０〜４２６の合計がスレッドの物理シーケンサー要求には十分であるのに、そのスレッドのために十分な大きさの物理シーケンサーの単一の区画が利用可能でないとき、外部フラグメンテーションが生じうる。したがって、割り当て論理４８５は、均等サイズの区画の場合よりも、可変長の固定区画についてのほうが、配置アルゴリズムの柔軟性は低くなる。
【００９７】
代替的に、マッピング・マネージャ４０２、５０２は、シーケンサー区画が可変サイズでもよく、動的に生成されうる区分アプローチをサポートしてもよい。そのようなアプローチについては、割り当て論理４８５は、各スレッドについてちょうど適切な数のシーケンサーを割り当てうる。スレッドのために二つ以上のシーケンサーが利用されうるシステムについては、動的なシーケンサー割り当ておよび割り当て解除は外部フラグメンテーションを生じうる。そのような外部フラグメンテーションを回避するため、動的シーケンサー区分アプローチを利用するマッピング・マネージャ４０２、５０２は、圧縮（compaction）を実装してもよい。そのような圧縮は、一つまたは複数のスレッドについての全シーケンサーの状態コンテキストの再配置（たとえば図９の再配置論理９１０を参照）を含むという点で、比較的高いオーバーヘッドを伴う。該再配置は、シーケンサーが他の割り当てられたシーケンサーと「連続」になれるように、そして空いた物理シーケンサーが連続的なブロックに残されうるようにするためのものである。少なくともいくつかの実施形態については、論理シーケンサーから物理シーケンサーへのマッピングに関連するある機能要件を満たすようシーケンサーを再配置および再マッピングするために、再配置論理９１０が呼び出される。たとえば、ある実施形態については、論理シーケンサーには機能記述子が関連付けられ、該機能記述子は、根底にある物理シーケンサーがある熱閾値を超えたら常に再マッピングを要求するものである。少なくとも一つの実施形態については、９１０によって実行される結果的な再配置動作は時に「シーケンサー・ホッピング」と称される。
【００９８】
動的なシーケンサー・マッピングを利用するシステムのためのマッピング・マネージャ４０２、５０２の割り当て論理４８５は、いくつかあるマッピング技術のいずれを実施してもよい。これらのマッピング技術は、個々の物理シーケンサー、セグメント、ページなどといったいかなる割り当て単位について用いてもよい。そのようなアプローチの部分的な一覧を下に掲げるが、当業者は、論理シーケンサーから物理シーケンサーへのマッピングを実行するときに、割り当て論理４８５が追加的にシーケンサーの機能属性を考慮に入れてもよいことを理解するであろう。そのような機能属性に基づくマッピングの配慮のさらなる議論は、図１３との関連でのちに述べる。
【００９９】
一般に、動的なシーケンサー割り当ておよびマッピング・アプローチに従うシステムのための割り当て論理４８５によって利用されるマッピング・アルゴリズムは次のものを含みうる。ただし、このリストは網羅的なリストであることは意図していない：
ａ．最良フィット・アルゴリズム（Best-Fit  Algorithm）。マッピング・マネージャ４０２、５０２は物理シーケンサーのすべての空いている区画を走査し、要求スレッドのために必要とされるサイズに最も近い物理シーケンサーの区画を選ぶ。そのようなアルゴリズムは実際のシーケンサーの比較的ぴったりしたフィット、したがって効率的な使用につながりうる――スレッドのために、十分な大きさでありかつ利用可能な最小の区画が割り当てられうるのである。
ｂ．最初のフィット・アルゴリズム（First-Fit  Algorithm）。マッピング・マネージャ４０２、５０２は、十分な大きさのシーケンサーの区画で利用可能な最初のものを選択する。
ｃ．次のフィット・アルゴリズム（Next-Fit  Algorithm）。マッピング・マネージャ４０２、５０２は、直前の割り当ての位置から始めてシーケンサーの区画を走査し、十分な大きさの区画で次に利用可能なものを選ぶ。
【０１００】
シーケンサーがどのように区分されているかに関わりなく、マッピング４０２、５０２は、第一のプログラムにおける論理シーケンサー・アドレスへの参照がLSATミスに遭遇するたびに、スレッドに対する物理シーケンサーまたは物理シーケンサーの区画の動的な割り当てを管理する割り当て論理４８５を含みうる。前記プログラムによる前記論理シーケンサー・アドレスへのその後の参照は、LSATミスに遭遇することなく変換論理４８６によって変換されうる。
【０１０１】
上で議論した区分方式のいくつかは、表面上、既知のメモリ管理技術に似ているように見えるかもしれないが、そのような技術のシーケンサーへの適用は独特の課題を伴う。レジスタおよびメモリの仮想化方式とは対照的に、シーケンサーは単にデータ記憶の空間的なコンテキストを含むのではない。その代わり、各シーケンサーは、ずっと多くの属性に関わり、よってより複雑な考慮に関わる実行資源である。
【０１０２】
動的にマッピングされる資源としての物理シーケンサーの独特な特徴の少なくともいくつかをさらに例示するために、以下の議論はシーケンサー割り当ての基本単位としての物理シーケンサーに言及する。しかしながら、当業者は、以下の議論は、物理シーケンサーのセグメントおよび／またはフレームを含む他の割り当て単位にもあてはまることを認識するであろう。
【０１０３】
スレッドは複数のシーケンサー認識命令を含みうる。スレッド中のこれらの命令において参照される一意的な論理シーケンサー・アドレスの数を反映するために値Yを使う。マッピング・マネージャ４０２、５０２は、スレッドのY個の論理シーケンサー・アドレスのそれぞれに物理シーケンサーを動的にマッピングしうる。合計Y個の一意的な論理シーケンサー・アドレスを含むスレッドについては、該スレッドは、該スレッドに割り当てられる少なくとも一つの物理シーケンサーがある限り前に進みうる。マッピング・マネージャ４０２、５０２は、複数（Y個）の論理シーケンサー・コンテキストを単一の物理シーケンサー上に多重化することによってこれを達成しうる。換言すれば、OSによって与えられるあるスレッドの量子（quanta）の間に、マッピング・マネージャ４０２、５０２は、そのスレッドの複数Y個のシーケンサー・コンテキストのそれぞれを交互にZ個の物理シーケンサーにマッピングしうる。ここで、Zは単に1でもよい。この多重化は、Y＞Zとして、論理シーケンサー・アドレスの数Yおよび物理シーケンサーの数Zがいくつでも実行しうる。
【０１０４】
少なくとも一つの実施形態について、Y＞Z多重化状況を扱うため、マルチシーケンサー・マルチスレッド・システム５００は、論理シーケンサー・コンテキスト待ち行列（logical  sequencer  context  queue）（「LSCQ」）を含みうる。少なくとも一つの実施形態については、LSCQ５２７は、データ構造でありうる。図５に示されている実施形態５００については、LSCQ５２７は、メモリ・システムでありうる記憶媒体４６０に記憶されており、補助記憶５７５の一部であってもよい。少なくとも一つの実施形態については、LSCQ５２７は、少なくともY−Z個の項目を含んでおり、Y個までの項目を含みうる。各項目は、論理シーケンサーのためのコンテキスト情報ならびに機能属性情報のような他の情報を保持することができる。機能属性情報とは、シーケンサー・ホッピング要件およびシーケンサー・スケジューリング要件といったものである。
【０１０５】
Y個の論理シーケンサー・アドレスをもつスレッドがZ個の物理シーケンサー上で実行されるべく多重化されるとき、マッピング・マネージャ４０２、５０２は、ある論理シーケンサーがスイッチ・アウトされて新たな論理シーケンサーが物理シーケンサーにスイッチ・インされるたびに、シーケンサー・コンテキスト切り換えを実行する。そのようなコンテキスト切り換えの際、ダーティーな物理シーケンサー（Y個の論理シーケンサーのうち、アクティブな論理シーケンサーに関連付けられているもの）の現在のコンテキストがLSCQ５２７の対応する項目に保存される。次いで、新たな論理シーケンサーのコンテキストがその物理シーケンサーにコピーされる、すなわち「スイッチ・インされる」。
【０１０６】
こうして、マッピング・マネージャ４０２、５０２は、論理シーケンサー・アドレスの物理シーケンサーへのX>Y多重化の間に、現在の論理シーケンサー（スイッチ・アウトされるもの）のためのコンテキスト保存動作と、新たな論理シーケンサー（スイッチ・インされるもの）のためのコンテキスト復元動作とを実行しうる。マッピング・マネージャ４０２、５０２は多重化されたY個の論理シーケンサー・コンテキストをLSCQ５２７に保存し、LSCQ５２７から復元すると想定されている。
【０１０７】
第一のスレッドについてOSレベルのスレッド切り換えが実行されるとき、OSはSSAVE動作を実行してそのスレッドについてのZ個の物理プロセッサのコンテキストと、それとともにそのスレッドに関連するY−Z個の非アクティブな論理シーケンサー・アドレスについてLSCQ５２７に保存されたコンテキスト情報があればそれも、OSカーネルの保存領域に、全体的なスレッド・コンテキストとして保存する。のちのスレッド切り換えに際して、SRSTOR動作がOSカーネルによって実行されて、Y個の論理シーケンサー・コンテキストすべてを含むスレッド・コンテキストが復元される。OSカーネルによって実行されうるそのような動作は、ここでは仮想化されたSSAVE動作および仮想化されたSRSTOR動作と称される。そのようなSSAVEおよびSRSTOR動作はOSによって実行されうる。少なくともいくつかの実施形態については、仮想化されたSSAVEおよびSRSTOR機構を、上記した仮想機械モニタ・レイヤーおよびマイクロコード・レイヤーを含め異なる特権レベルで実装できる。
【０１０８】
SRSTOR動作の間に、OSは、スレッドのY個の論理シーケンサー・コンテキストのうちZ個を、OSカーネルのスレッド・コンテキスト保存領域から、当該スレッドのために今利用可能にされたZ個の物理シーケンサーに復元しうる。（Zは、今では、当該スレッドが以前にアクティブであったときとは異なる数でもよい；最小ではZ＝1）。スレッドのY個の仮想シーケンサー状態の残りは、そのスレッドのLSCQ５２７のY−Z個の項目に記憶される。少なくとも一つの他の実施形態については、SRSTOR動作は、SRSROR動作の間に、Z個の論理シーケンサー・コンテキストを対応するZ個の物理シーケンサーに直接保存するのではなく、Y個の論理シーケンサー・コンテキストすべてを、カーネルのスレッド・コンテキスト保存領域からY項目LSCQ５２７に復元する。そのような実施形態については、Y個の論理シーケンサー・コンテキストがZ個の物理シーケンサーにさまざまな方針を使ってマッピングされ、スケジューリングされうる。そのような方針は、オンデマンド割り当てを含みうる。オンデマンド割り当てのためには、論理シーケンサーが参照されたときに、該論理シーケンサーがLSCQ５２７からスケジューリングして出され、マッピング・マネージャ４０２、５０２は、その論理シーケンサーにマッピングするためにZ個の物理シーケンサーのうちからアイドルな物理シーケンサーを位置特定しようとする。アイドルな物理シーケンサーがない場合、マッピング・マネージャ４０２、５０２はダーティーな物理シーケンサーを選択し、シーケンサー・コンテキスト「スワップ」を実行してそのコンテキストをLSCQ５２７中の対応する論理プロセッサのための適正な項目中に保存し、次いで今空けられた物理シーケンサーに新たな論理シーケンサーをスケジューリングしうる。
【０１０９】
代替的に、多重化の間、マッピング・マネージャ４０２、５０２は、スレッドのための量子の間じゅう、実行のためのY個の論理シーケンサーをZ個の物理シーケンサー上にスケジューリングしうる。マッピング・マネージャ４０２、５０２は、サブ量子（sub-quanta）を使って、単純な時間に基づくラウンドロビン手法のようなスケジューリング手法を利用してもよい。各サブ量子（sub-quantum）とは、スレッド・スケジューリングのためのOS量子（OS  quanta）の一部分、あるいは細分でありうる。代替的に、マッピング・マネージャ４０２、５０２は、イベント駆動手法のような異なるスケジューリング手法を利用してもよい。イベント駆動手法のためには、論理シーケンサーは、キャッシュ・ミスまたは他の比較的長い遅延のイベントに遭遇したときに物理シーケンサーからスイッチ・アウトされてもよい。イベント駆動手法のためには、論理シーケンサーはまた、機能制約検査のために持ち上がったイベントに遭遇したときに物理シーケンサーからスイッチ・アウトされてもよい。そのようなイベントとは、ダーティーな物理シーケンサーが、マッピングされている論理シーケンサーを再スケジューリング（これはシーケンサー・ホッピングを含みうる）のためにLSCQ５２７に避難させることを要求する熱閾値を超えることなどである。
【０１１０】
少なくとも一つの実施形態については、マッピング・マネージャ４０２、５０２によって実行されるLSCQ５２７管理は、オペレーティング・システムの一部でありうる。そのような実施形態については、OSがLSCQ５２７を管理し、Y個の論理シーケンサー・コンテキストをZ個の物理シーケンサーにスケジューリングすることを担いうる。
【０１１１】
図６は、マッピング・マネージャ５０２（図５）によって維持されうるマッピング構造５８０のさらなる詳細を示している。図６について、ここでは図５を参照しつつ論じる。マッピング構造５８０は、変換論理４８６によって、論理シーケンサーから物理シーケンサーへのアドレス変換を実行するために参照されうる。物理シーケンサーがある論理シーケンサー・アドレスについて割り当て論理４８５（図５）によって割り当てられたり割り当て解除されたり（再配置も含む）するとき、マッピング構造中の項目は割り当て論理４８５（図５）によって管理されうる。
【０１１２】
マッピング構造５８０は、各スレッドについてマッピング・テーブル６１０を含みうる。たとえば、図６は、それぞれスレッドＡ、Ｂ、Ｃ、Ｄに関連付けられたマッピング構造６１０ａ、６１０ｂ、６１０ｃ、６１０ｄを示している。図６には個別的なスレッドが四つしか示されていないが、図６の例が限定するものであると解釈するべきではない。図６は、ページングに基づく論理シーケンサー・アドレス・マッピング手法をサポートするマッピング・マネージャ（図５に示したマッピング・マネージャ５０２のような）によって、いかなる数xのスレッドでも受け容れられうることを示すものである。
【０１１３】
少なくとも一つの実施形態については、マッピング構造５８０は、現在未割り当てであり、よってシーケンサー認識命令で新たな論理シーケンサー・アドレスが参照されたときに割り当てのために利用可能である物理フレームをマッピング・マネージャ５０２が追跡しうる際に使う空きシーケンサー・フレーム・リスト６２０をも含みうる。
【０１１４】
図６に示した例は、あくまでも例示の目的のために意図されたものであり、限定するものと解釈すべきではないが、この例については、各マッピング・テーブル６１０はシーケンサー・ページ・テーブルであり、対応するスレッドの各ページについて一つの項目を含んでいる。したがって、図６の例はスレッドＡおよびスレッドＢについてそれぞれ３ページを含んでおり、スレッドＣおよびスレッドＤについてはそれぞれ４ページを含んでいる。シーケンサー・ページ・テーブル６１０は以下の議論では単に「ページ・テーブル」と称されることがある。
【０１１５】
図６は、スレッド・ページ・テーブル６１０の各項目６３０がシーケンサー・ページ・フレーム・アドレス・フィールド６３２を含みうることを示している。マッピング・マネージャ５０２は、ページ・フレーム・アドレス・フィールド６３２に、項目６３２に対応するページのために物理シーケンサーが割り当てられたときにある値を入れうる。（少なくとも一つの実施形態については、その値がアドレス・フィールド６３２に入れられるのは、初期割り当てのために割り当て論理４８５によって、あるいは再配置のために再配置論理（図９、９１０参照）によってでありうる。）ページ・フレーム・アドレス・フィールド６３２の値は、マッピングされたシーケンサーが属するページ・フレームについてのページ・フレーム・アドレスを示す。現在アクティブなスレッドについては、ページ・フレーム・アドレス・フィールド６３２の値は、対応するスレッドのページが割り当てられている物理シーケンサー・フレームの基底アドレスを指示しうる。実行を完了していないのに別のスレッドの余地を作るためにスワップ・アウトされたスレッドについては、シーケンサー・ページ・フレーム・アドレス・フィールド６３２の値は、補助記憶５７５（たとえば図５の補助記憶５７５参照）に保存されている、そのスレッドのマッピングされていないシーケンサー・ページ・コンテキスト情報へのポインタ・アドレスを与える。
【０１１６】
図６は、項目６３０は存在／不在フィールド６３４をも含みうることを示している。存在／不在フィールド６３４の値は、そのスレッド・ページについてのコンテキスト情報が物理シーケンサー・フレーム上にあるか、それとも補助記憶５７５内にあるかを同定しうる。したがって、存在／不在フィールドの値は、シーケンサー・ページ・フレーム・アドレス・フィールド６３２の内容が物理シーケンサー・フレームの基底アドレスであるか、それとも補助記憶５７５内の論理シーケンサー・ページの位置を示しているのかを決定するために、マッピング・マネージャ５０２によって利用されうる。ある種の実施形態については、存在ビットの値の検査によりページ・フォールトが引き起こされる。
【０１１７】
図６は、各項目６３０が追加的なフィールドをも含みうることを示している。いくつかの実施形態では、そうした追加的フィールドの一つまたは複数は、項目６３０によって表されている仮想シーケンサー・フレームに関連付けられた属性または制約を示す機能属性のための記述子を保持しうる。たとえば、項目６３０は、マッピング・マネージャ５０２の保護論理および任意的な共有論理（図９の９１２、９１４参照）によって利用されうる保護フィールド６３６を含みうる。
【０１１８】
もちろん、さまざまな実施形態は図６に示された以外の追加的または異なるフィールドを含んでいてもよい。たとえば、項目６３０はスケジューリング・フィールド６３８を含んでいてもよい。スケジューリング・フィールド６３８は、関連付けられた論理シーケンサー・フレームのためのスケジューリング情報を保持しうる。スケジューリング情報は、たとえば、マッピングまたはシーケンサー・ホッピングのような再配置も含めた再マッピングのためにそのシーケンサー・フレームをいつ、あるいはどのくらいの頻度で再スケジューリングすべきかを示す一つまたは複数の古さ（age）に基づくヒントを含んでいてもよい。追加的または代替的に、スケジューリング情報６３８は、その論理シーケンサー・フレームがスケジューリングされている物理プロセッサのために望ましい一つまたは複数の特性を示す機能情報を含んでいてもよい。たとえば、機能ベースのスケジューリング情報は、目標物理シーケンサー・フレームのための、所望される最低パフォーマンスまたは最大の命令当たりのエネルギーの指標を含んでいてもよい。
【０１１９】
暫時図１０を参照すると、論理シーケンサー・アドレス１０３０を物理シーケンサー識別子１０４０に変換するための方法１０００の少なくとも一つの実施形態が示されている。少なくとも一つの実施形態については、方法１０００はマッピング・マネージャの変換論理（図５に示したマッピング・マネージャ５０２の変換論理４８６参照）によって実行されうる。
【０１２０】
図１０は、論理シーケンサー・アドレス変換を実行するためのマッピング構造（図５のたとえば５８０を参照）を利用するための一般的な方法１０００の少なくとも一つの実施形態についてのデータおよび制御の流れを示す流れ図である。より特定的には、図１０は、マッピング構造５８０としての一つまたは複数のページ・テーブル１０１０の使用を示している（図５）。
【０１２１】
方法１０００は、複数シーケンサー（たとえば図５の４２０〜４２６参照）を含むマルチスレッド・システムのための論理シーケンサー・アドレス変換を実行するために使用されうる。方法１０００は、図５に示したマッピング・マネージャ５０２の線に沿ったマッピング・マネージャ１０２０によって実行されうる。少なくとも一つの実施形態については、方法１０００は、マッピング・マネージャの変換論理によって実行されうる（たとえば図５のマッピング・マネージャ５０２の４８５参照）。少なくとも一つの実施形態については、マッピング・マネージャ１０２０はオペレーティング・システム・プログラムであることができ、方法１０００はオペレーティング・システムによって実行される。少なくとも一つの他の実施形態については、方法１０００は、たとえばアプリケーション・プログラマが書いたユーザーレベルのルーチンであるマッピング・マネージャ１０２０によって実行されうる。少なくとも一つの他の実施形態については、方法１０００は、仮想機械モニタまたはハイパーバイザーであるマッピング・マネージャ１０２０によって実行されうる。少なくとも一つの実施形態については、マッピング・マネージャ１０２０によって実行される方法１０００は、変換加速構造（たとえば図５に示した５１８参照）の使用を通じて加速されうる。
【０１２２】
図５との関連で上で参照した物理シーケンサー４２０〜４２６が対称的である必要はなく、その数が限定的なものと解釈されるべきではないことを注意しておくべきであろう。対称性に関しては、物理シーケンサーの一つまたは複数が、何らかの特性または性能指標の面で他の物理シーケンサーの一つまたは複数と異なっていてもよい。少なくともいくつかの実施形態については、物理シーケンサーの特性または性能指標が含みうるものとしては、大きさ、語および／またはデータ路の大きさ、トポロジー、メモリの種別および／または大きさ、電力消費、機能ユニット数、通信アーキテクチャ（マルチドロップかポイントツーポイント相互接続か）、動作周波数、大きさ、サイクル当たりの命令数、命令当たりのエネルギー消費、熱特性、命令セット・サポートのセットの面での機能、OS可視性または機能、パフォーマンス、フットプリント、電力、熱指標などに関係した他の任意の指標がある。これらの特性は単に例示の目的のためであって、限定するものと解釈すべきではない。これらは、非対称的なマルチシーケンサー・システムでは二つの物理シーケンサーは上記の特性または指標の任意の一つまたは組み合わせに関して異なりうるということを示すための例の部分的なリストとして与えられているのである。少なくともいくつかの実施形態については、これらの特性のいくつかは、論理シーケンサーのための機能記述子の一部として表現され、論理シーケンサーから物理シーケンサーへのマッピングに際して検査されてもよい。
【０１２３】
シーケンサーの数に関しては、変換方法１０００はいかなる数のシーケンサーについても利用されうる。たとえば、変換方法１０００は、４、８、１６、３２、６４、１２８またはそれ以上のシーケンサーを含むマルチシーケンサー・システムについて実装されてもよい。
【０１２４】
図１０は、変換を実行するために、マッピング・マネージャ１０２０が、論理ページ番号１０３２およびオフセット１０３４を含む論理シーケンサー・アドレス１０３０を受け取りうる１０５０ことを示している。こうして、論理シーケンサー・アドレス１０３０は事実上、スレッドによる論理シーケンサー・アドレスの使用を、論理ページ番号およびページ内でのオフセットにマッピングする。図１０は、論理シーケンサー・アドレス１０３０が、スレッドNのようなスレッドにおけるシーケンサー認識命令において指定されていてもよいことを示している。
【０１２５】
図１０は、一般的に、論理シーケンサー・アドレス１０３０を物理シーケンサー識別子１０４０に変換するために、マッピング・マネージャ１０２０が、スレッドNに関連付けられた適切なスレッド・シーケンサー・ページ・テーブル１０１０を利用しうることを示している。特に、図１０は、１０５２において、マッピング・マネージャ１０２０が、論理シーケンサー・アドレス１０３０のページ番号１０３２（「001」）をページ・テーブル１０１０へのインデックスとして利用することを示している。ページ・テーブル１０１０のインデックスされた項目の値（「111」）が、１０５４において、変換後の物理シーケンサー識別子１０４０の指定されたページ・フレーム部分１０４２に入れられる。
【０１２６】
図１０はまた、１０５６において、マッピング・マネージャ１０２０が論理シーケンサー・アドレス１０３０のオフセット１０３４（「010」）を直接、変換された物理シーケンサー識別子１０４０の指定されたオフセット部分１０４４にコピーしうることを示している。
【０１２７】
まとめると、このように、図１０は、論理シーケンサー・アドレスを物理シーケンサー識別子に変換する方法１０００は次のことを含みうることを示している：論理シーケンサー・アドレス１０３０を受け取る１０５０；論理シーケンサー・アドレス１０３０の部分１０３２をページ・テーブル１０１０へのインデックスとして利用１０５２してページ番号（「111」）を決定する；ページ番号を変換後のシーケンサー識別子１０４０の指定された部分１０４２に入れる１０５４；論理シーケンサー・アドレス１０３０の別の部分１０３４を変換後のシーケンサー識別子１０４０のオフセット部分１０４４にコピー１０５６する。
【０１２８】
図６および図１０に示された例は、仮想シーケンサー・アドレス変換方法１０００が、ページ・テーブルの単一レベルに限定されているアプローチに限定されていることを意味するものと解釈すべきではない。たとえば、図６は、ページ・テーブル項目６３０が追加的なビット６４０を含みうることを示している。少なくとも一つの実施形態については、一つまたは複数の追加的ビット６４０が、少なくとも一つの代替的な実施形態については、追加的なページ・テーブル・レベルを示すために利用されうる。したがって、マッピング・マネージャ１０２０は、ページ・テーブルの複数レベルを含むアプローチを実施してもよいのである。
【０１２９】
〈変換のための任意的なハードウェア加速〉
図５に戻ると、動的にマッピングされる論理シーケンサー・アドレスの変換をサポートするマルチシーケンサー・マルチスレッド・システム５００の少なくとも一つの実施形態が、任意的な変換加速構造５１８を含んでいてもよいことを見ることができる。
【０１３０】
少なくとも一つの実施形態については、構造５１８は、ページ・テーブルまたは他の種類のマッピング構造５８０の項目をキャッシュするためのシーケンサー・アドレス変換傍流バッファ（sequencer  address  translation  lookaside  buffer）（「STLB」）でありうる。実行資源４９０のハードウェア構造５１８における項目のキャッシングは変換スピードを加速しうる。加速される一つの理由は、シーケンサー４２０〜４２６が記憶媒体４６０にあるマッピング構造５８０にアクセスするための時間をとることなく構造５１８へのアクセスを有するということである。たとえば、図１０に示した変換例について、図５のSTLB５１８がページ・テーブル１０１０の項目001の内容を含むとする。そのような場合、記憶媒体４６０内にあるかもしれないスレッドNのページ・テーブル１０１０にアクセスする必要なしに、実行資源４９０内のSTLB論理によって探索および変換が実行できる。
【０１３１】
図１１は、変換加速構造１１００のためのフォーマットの少なくとも一つの実施形態を示すブロック図である。図５に示される５１８のような加速構造の項目が、図１１に示される加速構造１１００のフォーマットに従うことがありうる。図１１に示されるSTLBの実施形態の項目について示されているフィールド１１０２〜１１１０は単に例示の目的のために呈されている。他の実施形態については、ハードウェア加速構造１１００において、追加的なまたは異なる情報がキャッシュされうる。
【０１３２】
図１１に示した実施形態について、構造１１００の項目は次のフィールドを含む：有効フィールド１１０２、論理ページ識別子（たとえば図１０の１０３２参照）１１０４および物理ページ・フレーム・フィールド１１１０（たとえば図１０の１０４２参照）。
【０１３３】
少なくとも一つの実施形態については、新たなスレッドへのコンテキスト変化が起こるときに、スレッド固有のシーケンサー・ページ・テーブル（たとえば図１０の１０１０参照）の基底アドレスがレジスタ１１２０にロードされうる。レジスタ１１２０は制御レジスタであってもよい。スレッド・コンテキスト変化が起こるたびに（制御レジスタ１１２０の修正によって示される）、ハードウェア加速構造１１００の内容がフラッシュされうる。
【０１３４】
暫時図５および図１１の両方を参照すると、少なくとも一つの実施形態については、各シーケンサー４２０〜４２６が同時並行して異なるスレッドを実行してもよいことを理解しておくべきである。したがって、少なくとも一つの実施形態については、STLB１１００および制御レジスタ１１２０が各シーケンサー４２０〜４２６のために指定されうる。したがって、図５に示されるハードウェア加速構造は、シーケンサー４２０〜４２６のそれぞれに一つ、複数のSTLB１１００および制御レジスタ１１２０を含みうる。
【０１３５】
図９とともに引き続き図５を参照すると、アクティブなスレッドへの物理シーケンサーの割り当ておよびマッピングを管理するために、マッピング・マネージャ５０２は割り当て論理４８５を含みうることが示されている。（図５および図９の同様の要素は同様の参照符号を帯びる。）割り当て論理４８５は、アクティブなスレッドの間で物理シーケンサー４２０〜４２６を割り当てるための論理を含みうる。
【０１３６】
論理シーケンサー・アドレスの物理シーケンサーへの初期割り当てを実行する論理に加えて、図９は、割り当て論理４８５がさらに、再配置、保護および共有というシーケンサー管理機能を実行するための論理を含みうることを示している。それぞれの目的について、以下の段落でさらに詳細に論じる。
【０１３７】
再配置論理９１０に関しては、論理シーケンサー・アドレスと物理シーケンサーとの間のマッピングは、その論理シーケンサー・アドレスを最初に参照したスレッドが実行を完了する前に修正される必要があるかもしれないという場合がありうる。マッピング・マネージャ５０２が、物理シーケンサー内に第二の仮想シーケンサー・コンテキストがスワップ・インされるべきであると判断した場合、現在マッピングされている論理シーケンサーについての状態が補助記憶５７５にスワップ・アウトされる。そのようなスワッピングは、再配置論理９１０によって実行されうる。これは、たとえば圧縮の間に実行されてもよい。
【０１３８】
そのような状況について、再配置論理９１０は、コンテキストおよびマッピング情報を管理するための論理を実行する。それにより論理シーケンサーの関連する状態があとで現在の物理シーケンサーまたは別の物理シーケンサーにスワップ・インし戻されることができるようになる。このように、再配置論理９１０は、マッピング構造（図５の５８０参照）に反映されている論理シーケンサーから物理シーケンサーへの各マッピングに関連付けられているコンテキスト情報を管理するための論理を含む。さらに、割り当て論理４８５はマッピングを修正するための論理を含む。少なくとも一つの実施形態については、そのような機能は再配置論理９１０によって提供されてもよい。マッピング・マネージャ５０２が外部フラグメンテーションを被りうる物理シーケンサー割り当てアルゴリズム（上記の最良フィット・アルゴリズムのような）を実装する少なくとも一つの実施形態については、再配置論理９１０は、（１）同じスレッドに属する諸物理シーケンサーを連続ブロックとして再配置し、（２）それに従ってマッピング情報を修正する論理を含みうる。
【０１３９】
図９は、割り当て論理４８５が保護論理９１２をも含みうることを示している。少なくとも一つの実施形態については、保護論理９１２は物理シーケンサーへの望まれないアクセスを防止する。少なくとも一つの実施形態については、これは、あるアプリケーション・スレッドが、現在別のスレッドに関連付けられている論理シーケンサー・アドレスを参照するのを防止することによって達成される。保護論理９１２は、物理シーケンサーに関連付けられた論理シーケンサー・アドレスについてのコンテキスト情報を使って、試みられたアクセスが同じスレッド・コンテキストに関連付けられた命令から発生したものかどうかを判定しうる。そうでなければ、保護論理９１２はアクセスを防止する。こうして、保護論理９１２は、あるシーケンサーまたはシーケンサー・フレームが、実行の間に、別のシーケンサーまたはシーケンサー・フレームによって望まれないアクセスをされることに対して検査を行い、保護を実施する。
【０１４０】
最後に、図９は、割り当て論理４８５が共有論理９１４をも含みうることを示している。そのような共有論理９１４は任意的であり、そのことは図５の破線によって示されている。共有論理９１４は、二つ以上のスレッドが同じ物理シーケンサーを共有することを許容しうる。スレッドが一つまたは実物のそれ以上のシーケンサーの共通のセットにアクセスすることを許容する実施形態については、共有論理９１４は、許容される共有の種類を制御する指定されたパラメータおよび制約を実施する。
【０１４１】
したがって、第一のスレッドがアクティブである間に異なるスレッドがその論理シーケンサー・アドレスにアクセスしようと試みると、保護論理９１２はそのようなアクセスを防止しうる。代替的に、もし、複数のアクティブなスレッドが同じ物理シーケンサーにアクセスしうるよう共有が許容されていれば、任意的な共有論理９１４が共有パラメータおよび制約を実施しうる。
【０１４２】
ここで、割り当て論理４８５によって実行されるシーケンサー割り当ての少なくとも一つの実施形態のさらなる議論のために、図１２を参照する。そのような割り当ては、物理シーケンサーの初期割り当て；物理シーケンサーの再マッピング；およびマッピング情報の維持／更新を含みうる。
【０１４３】
図１２は、シーケンサー割り当てのための方法１２００の少なくとも一つの実施形態についての制御およびデータの流れを示す流れ図である。少なくとも一つの実施形態については、方法１２００はマッピング・マネージャ（たとえば図５の５８０参照）によって実行されうる。より具体的には、少なくとも一つの実施形態については、方法１２００は割り当て論理（たとえば図５の４８５参照）によって実行されうる。
【０１４４】
図１２は、本方法がブロック１２０２で始まり、ブロック１２０４に進むことを示している。ブロック１２０４では、本方法は、ソース・シーケンサー１０４a上で実行されるシーケンサー認識命令にパラメータとして与えられている宛先シーケンサーの論理アドレスを受け取る。
【０１４５】
次いで処理はブロック１２０６に進み、ここではマッピング構造１２５０において探索が実行される。マッピング構造１２５０は、図５に示した構造５８０のようなマッピング構造でありえ、記憶媒体（たとえば図５の４６０のような）に記憶されている。マッピング構造１２５０が論理シーケンサー・アドレスについての有効な項目を含んでいて、すでに割り当てられている物理シーケンサー識別子が得られる場合、探索１２０６がヒットを生じたという。そうでない場合は「ミス」が生じたという。
【０１４６】
少なくとも一つの他の実施形態については、ブロック１２０６で実行された探索は、最初は図５に示された構造５１８のような加速構造において実行されうる。ヒットになれば、処理はすぐブロック１２１２に進む。ヒットにならなければ、本方法はブロック１２０６において、上に説明したような記憶媒体に記憶されているマッピング構造中での探索を実行しうる。
【０１４７】
ブロック１２０８では、ミスが生じたかどうかが判定される。ブロック１２０６との関係で上に論じたマッピング構造（および／または加速構造）におけるミスの判定に加えて、ブロック１２０８での処理は、指定された論理シーケンサー・アドレスについてページ・テーブル項目または加速構造項目が存在していても「ミス」が生じたと判定しうる。すなわち、ページ・テーブル項目の存在／不在フィールド６３４の内容が指定された論理シーケンサー・アドレスについての内容情報が補助記憶にあふれていることを示すときには（図１３のブロック５１２および補助記憶５５０参照）、ブロック１２０８で「ミス」が判定される。
【０１４８】
図１２は、判断ボックス１２０８の結果として、処理が、ミスについてはブロック１２１０に進み、ヒットについてはブロック１２０９に進むことを示している。ヒットについては、シーケンサー認識命令のためのサポートがブロック１２１２で実行される。少なくとも一つの実施形態については、ブロック１２１２で実行されるサポートに含まれるものとして、あるシーケンサー算術命令について、ブロック１２０６の探索の間に得られた物理シーケンサー識別子によって同定される宛先シーケンサー１０４nに信号を送ることがある。そのような信号の結果、宛先シーケンサー１０４nへの所望の信号伝達が、シーケンサー算術命令で指定されたとおりに完遂されうる。ブロック１２１２から処理はブロック１２１４で終了する。
【０１４９】
図１２は、ブロック１２０８でミスが判定された場合に処理がブロック１２１０に進むことを示している。ブロック１２１０では、ミス・フォールト・ハンドラが呼び出されうる。次いで処理はブロック１２１４で終了する。
【０１５０】
図１３は、ブロック１２１０の処理（図１２参照）の結果として呼び出されうるミス処理のための方法１３００の少なくとも一つの実施形態についての制御の流れおよびデータの流れを示す流れ図である。当業者は、ブロック１２１０でフォールト・ハンドラを直接呼び出すのではなく、ブロック１２１０でシーケンサー・ページ・フォールトがトリップされてもよいことを理解するであろう。そのような実施形態については、ブロック１２１０でトリップされたフォールトの結果として、フォールト・ハンドラが呼び出されうる。フォールト・ハンドラは今度は図１３に示されている方法１３００を呼び出しうる。
【０１５１】
図１３は、割り当て論理４８５によって実行されうる方法１３００が一般に、図１２のブロック１２０４で受け取られた論理シーケンサー・アドレスのために物理シーケンサーを割り当てることを示している。図１３をさらに論じる前に、少なくとも一つの代替的な実施形態については、図１３の方法１３００は、図１２のブロック１２０８で検出された「ミス」以外の状況についても呼び出されうることを注意しておくべきであろう。少なくとも一つの実施形態については、方法１３００は、割り当て論理４８５が、物理シーケンサー割り当てのために機能属性に基づく監視、実施および最適化を実行しうるように呼び出されうる。そのような機能属性に基づく監視は違反条件を検出し、その結果として「ミス」条件を生じることがある。
【０１５２】
はっきりしたアーキテクチャ上の資源として、アドレッシング可能な論理シーケンサー４２０〜４２６はアドレッシング可能な論理メモリ位置とは、空間的属性および時間的属性の両方で異なっている。空間的には、アプリケーション・プログラムによって使われる論理シーケンサー・アドレスは、所与の単一シーケンサー命令セット・アーキテクチャのためのレジスタ状態についてのコンテキスト状態情報を含む。（たとえば、図１に示されたアーキテクチャ状態AS参照）。時間的には、論理シーケンサー・アドレスは、変動する度合いの適時性（たとえばスケジューリング）要件をもつことのできる制御フローのはっきりしたコンピューティングの流れ（distinct  computation  stream）に対応する。
【０１５３】
したがって、論理シーケンサー・アドレスから物理シーケンサー・アドレスへのマッピングは論理シーケンサーのコンテキストをマッピングできる物理シーケンサーの割り当てに関わるのみならず、シュレッドを走らせるために論理シーケンサーを使ってプログラムが前に進むことを保証するような仕方で、その論理シーケンサーを走らせる時間量子の割り当てにも関わる。少なくとも一つの実施形態については、フィールド６３８内のスケジューリング・ヒントのような時間的要件は、論理シーケンサー記述子６３０内に表されることができ、対応する論理シーケンサー・アドレスを一組の物理シーケンサーから別の組にマッピングし直すよう、方法１３００の時間に基づく周期的な作動を引き起こしうる。少なくとも一つの実施形態については、M個の論理シーケンサー・コンテキストのN個の物理シーケンサーへの再マッピングは、ラウンドロビン・スケジューリング・ポリシーを実装しうる。これは、M個の論理シーケンサー・コンテキストをN個の物理シーケンサーを通じて周期的かつ逐次的に巡回させうるものである。少なくとも一つの実施形態については、スワップ・アウトされるまでに論理シーケンサーが物理シーケンサー上で走る期間であるスケジューリング量子は、OSによってそのスレッドが割り当てられたOS量子の細分である。このポリシーは、スレッド中のすべての論理シーケンサーが全体として前に進むことを保証できる。
【０１５４】
図１３は、論理シーケンサーのための状態情報が、補助記憶１２７５へのあふれ出し１３０８（保存）および補助記憶１２７５からの充填１３１０（復元）の対象となることを示している。補助記憶１２７５はメモリを含むいかなる記憶構造であってもよい。
【０１５５】
少なくとも一つの実施形態については、あふれ出し１３０８および充填１３１０の対象となる論理シーケンサー状態情報はコンテキスト情報を含みうる。そのようなコンテキスト情報はたとえば、シーケンサー上のアーキテクチャ的に定義されたレジスタについてのすべてのレジスタ状態を含みうる。少なくとも一つの実施形態については、論理状態シーケンサー情報はまた、任意的に、最低必要量子および／または所望の再スケジューリング頻度など、スケジューリングに関係した時間情報をも含みうる。
【０１５６】
この情報に加えて、マッピング・マネージャ（たとえば図５の５０２参照）の割り当て論理（たとえば図５の４８５参照）はまた、若干の例を挙げれば温度、機能性、パフォーマンス、電力、機能ユニットの組成およびシーケンサー実行状態といった、シーケンサー機能属性および特性に関係したある種の物理シーケンサー情報へのアクセスをも有する。
【０１５７】
したがって、図１３の方法１３００は、物理シーケンサーを割り当てまたは再マッピングするときに、マッピング・マネージャが、そのような機能属性に基づいた論理シーケンサーおよび／または物理シーケンサーの状態情報を考慮することを許容するために、呼び出されうる。たとえば、方法１３００は、物理シーケンサーの実行状態が、停止しており、前に進んでいないことを示すときにトリガーされうる。そのような実行状態は、たとえば、シーケンサーがキャッシュ・ミスのような長い遅延のイベントを経験したとき、あるいは同期オブジェクト上のロックを待っているときに起こりうる。
【０１５８】
同じように、方法１３００が呼び出されるのがページ・テーブル１２５０中のミスに起因してであるときは、割り当ておよび再割り当てのための物理シーケンサー選択を通知し、向上させ、あるいは最適化するために、物理シーケンサー属性が考慮に入れられうる。図１３に示されている方法１３００の実行の間に割り当て論理４８５によって考慮に入れられうる物理シーケンサー属性のさまざまな種類の例として、暫時図１４に目を向ける。
【０１５９】
図１４は、マルチシーケンサー・マルチスレッド・システム１４００が一般に、マッピング・マネージャ１４２０および少なくとも二つの相異なる型の物理シーケンサー１４１０、１４１２を含みうることを示している。（少なくとも一つの他の実施形態については、マルチシーケンサー・マルチスレッド・システムは単一の種類のシーケンサーのみを含む。）図３では、各型１４１０、１４１２のための追加的なシーケンサーが任意的であることを示すため、点線および省略点が使われている。
【０１６０】
システム１４００は各型のシーケンサーの一つまたは複数を含みうる。したがって、シーケンサー型１４１０、１４１２のそれぞれは、特定の機能属性（capability  attributes）のセットに関連付けられうる。シーケンサー型が相異なるので、それらは「非対称である」という――属性は複数のシーケンサー型の間ではかなり異なることがある。少なくとも一つの実施形態については、たとえば、シーケンサー１４１０、１４１２は電力消費指標に関して異なりうる。少なくとも一つの他の実施形態については、シーケンサー１４１０、１４１２は機能性指標（functionality  metric）に関して異なりうる。たとえば、第一のシーケンサー１４１０は、OSがシステムレベル特権コードとユーザーレベル特権コードの両方を走らせられるTシーケンサーによって要求されるすべての機能性を実装していてもよいし、その一方、第二のシーケンサー１４１２は、ユーザーレベル特権コードを走らせる必要があるだけで、システムレベル特権コードを走らせることは要求されないSシーケンサーによって要求される機能性を実装するだけでもよい。もう一つの例では、第一のシーケンサー型１４１０は、所与の命令セットについて機能性の面での機能（functional  capabilities）の完全なセットを実装しうる。しかしながら、第二のシーケンサー型１４１２は命令セットの機能の部分集合のみを実装するといった、退化された機能性を含みうる。たとえば、一つの［退化された］シーケンサーは、整数および浮動小数点命令は実行できたとしても、ストリーミングSIMD拡張３（Streaming  SIMD  Extensions  3）（「SSE3」）単一命令複数データ（single  instruction  multiple  data）（「SIMD」）の命令セット拡張を実行することはできない。他方、別のシーケンサーは、第一のシーケンサーが実行できるすべての命令を実行でき、その上SSE3命令をも実行できてもよい。
【０１６１】
機能指標（functional  metrics）ではなく、あるいは機能指標に加えて、非対称なシーケンサー型１４１０、１４１２は、電力消費および／または温度属性に関しても異なりうる。たとえば、第二のシーケンサー型１４１２は第一のシーケンサー型１４１０よりも、より少ない電力を要求することがあり、あるいはよりゆっくり計算を実行することがありうる。また、マッピング・マネージャ１４２０は、シーケンサー割り当てを実行するときに温度を考慮に入れてもよい。たとえば、特定のシーケンサーが高温閾値に近づいている場合、その仮想シーケンサー・アドレスをより低温の別の実物シーケンサーに再マッピングするために、図１３の方法１３００が呼び出されてもよい。これらの機能属性（電力要件、スピード、機能性の面での機能（functional  capability）、温度、実行状態など）は、ソフトウェア・マッピング・マネージャ５０２に利用可能であってもよく、マッピング過程（ここでは時に「シーケンサー割り当て［sequencer  rationing］」と称される）に通知するために利用されてもよい。それについて下記でより詳細に論じる。
【０１６２】
図１３に戻り、ここで方法１３００を論じる。図１３は、ブロック１３０２で始まり、ブロック１３０４に進む方法を示している。ブロック１３０４では、図１２のブロック１２０４で受け取られた、論理シーケンサー・アドレスに割り当てられるべきシーケンサーまたはシーケンサー・フレームが同定される。ここでもまた、用語「シーケンサー」は、個別のシーケンサーまたはフレーム中の複数のシーケンサーのいずれかを意味するものと理解されるであろう。このように、「シーケンサー」および「シーケンサー・フレーム」の用語は以下の議論では交換可能に使われることがある。
【０１６３】
ブロック１３０４で潜在的なシーケンサーを決定するためには、さまざまな実施形態について、さまざまなアプローチが利用されうる。一般に、決定１３０４は伝統的な選択手法を含んでいてもよく、その際、該手法はシーケンサー属性情報から情報を受ける。
【０１６４】
少なくとも一つの実施形態については、現在一つまたは複数の空いているシーケンサーがある場合、ブロック１３０４では空いているシーケンサーが選択される。一つのシーケンサーが空いていればそれが選択される。少なくとも一つの実施形態については、空いている複数のシーケンサーのどれがブロック１３０４で選択されるべきかを決定するために、後述の属性解析が利用される。
【０１６５】
どのシーケンサーも空いていない場合、現在アクティブなシーケンサー（時に「犠牲者」と称される）がブロック１３０４で選択される。一つのアクティブな（すなわち「ダーティー」な）シーケンサーを「犠牲者」として選択するためには、いかなる既知の置換アルゴリズム、またの名を犠牲者選択アルゴリズムがブロック１３０４で使われてもよい。そのようなアルゴリズムに含まれるものとしては、これに限られないが、最近不使用、先入れ先出し、最長未使用時間、低使用頻度、時間経過、ワーキング・セット（Working  Set）、クロックおよびワーキング・セット・クロック（Working  Set  Clock）（「WSClock」）がある。ブロック１３０４で、新来のシーケンサーのための余地を作るために補助記憶１２７５に追い出されるべきシーケンサーを選択するためには、そのようないかなる手法を使ってもよい（新来のシーケンサーとは、ブロック１２１０で方法１３００の呼び出しを引き起こした論理シーケンサーのことである）。
【０１６６】
シーケンサーが空きリストから選択されるにしろ、犠牲者シーケンサーが置換アルゴリズムに従って選択されるにしろ、犠牲者選択は任意的に、ブロック１３０４において、機能属性解析によって情報を受ける。
【０１６７】
機能属性解析は、ブロック１３０４で、物理シーケンサーの現在の属性がそのシーケンサーを割り当てまたは再割り当てのためにより有望な候補にするか、より有望でない候補にするかを判定するために、ブロック１３０４において実行されうる。たとえば、機能属性解析は、特定の機能のセットを実行できる、あるいは他よりも低電力または低温であるなどといったものを選択するために、空きリストのエントリーのうちから選択するために利用されうる。代替的に、機能属性解析は、あふれ出しの対象とすべきより有望な物理シーケンサーを選択するために、置換アルゴリズムによって考えられる複数の物理シーケンサーのうちから選択をするために利用されてもよい。たとえば、機能属性解析は、ある物理シーケンサーが現在前に進んでいない（すなわち、長い遅延のキャッシュ・ミスのため停滞を経験している、あるいは同期オブジェクトへのロックを競って待っている）ならば、その物理シーケンサーが良好な候補であると指示しうる。
【０１６８】
ブロック１３０４から、処理はブロック１３０６に進む。ブロック１３０６では、選択された犠牲者の状態が補助記憶１２７５にスワップ・アウトされるべきかどうかが判定される。ブロック１３０６での判定は、犠牲者が空きリストから選択されている場合には「偽」と評価される。そのような場合、処理はブロック１３１２に進む。
【０１６９】
しかしながら、犠牲者シーケンサーが現在アクティブである場合、処理はブロック１３０６からブロック１３０８へと進む。ブロック１３０８では、シーケンサーのためのコンテキスト状態は補助記憶１２７５にあふれ出す。シーケンサー・フレームを利用する実施形態については、犠牲者シーケンサー・フレームにおけるあらゆるシーケンサーについてのコンテキスト状態が補助記憶１２７５にあふれ出る。次いで処理はブロック１３１０に進む。
【０１７０】
ブロック１３１０では、シーケンサーについての（あるいは代替的に、フォールトしているシーケンサー・フレーム内の全シーケンサーについての）コンテキスト状態が補助記憶１２７５から取得される。コンテキスト情報はブロック１３０４で選択された物理シーケンサーに与えられる。こうにして、犠牲者シーケンサーのためのコンテキスト状態が補助記憶１２７５にあふれ出し１３１０、新たな論理シーケンサー・アドレスのためのコンテキスト状態が補助記憶１２７５から犠牲者の物理シーケンサーに充填される。
【０１７１】
ブロック１３１０から、処理はブロック１３１２に進む。ブロック１３１２は、選択された物理シーケンサーが現在アクティブでなければ、ブロック１３０６から直接到達することもありうる。ブロック１３１２では、選択された物理シーケンサーについての新たな論理シーケンサー・アドレス割り当てを反映するために、一つまたは複数の変換構造が更新される。少なくとも一つの実施形態については、ブロック１３１２でマッピング構造１２５０が更新される。
【０１７２】
マッピング構造１２５０を一つまたは複数のシーケンサー・ページ・テーブルとして実装する実施形態については、論理シーケンサー・アドレスから物理シーケンサー・アドレスへの新しいシーケンサー・マッピングを反映するために、シーケンサー・ページ・フォールトを引き起こしたスレッドのためのシーケンサー・ページ・テーブルが更新される。そのような実施形態については、ブロック１３１２で修正された各ページ・テーブル項目についての存在フィールド（図６、６３４参照）は、そのページについてのコンテキスト情報が補助記憶１２７５から取得される必要がないことを示すよう設定される。
【０１７３】
さらに、ブロック１３０８で補助記憶１２７５にあふれ出されたシーケンサーについてのページ・テーブル項目についての存在フィールドは、そのコンテキスト情報がその物理シーケンサーではなく補助記憶に記憶されていることを示すよう修正される。
【０１７４】
最後に、図１１に示されたSTLB１１００のような任意的なハードウェア変換加速構造１３１８を利用する実施形態については、ブロック１３１２で次のことも実行されうる：変換加速構造１２１８がスレッド・コンテキスト切り換えのためにフラッシュされる。次いで処理はブロック１３１４で終了する。
【０１７５】
図７および図８は、図１２および図１３との関連で一般的に論じてきた方法１３００の処理の一部をさらに例解するための個別的な例を記述している。図７は、図６に示される見本スレッド、スレッドＡ〜Ｄについて割り当て論理４８５によって実行される見本のシーケンサー割り当てシナリオを示している。図７は、見本のシーケンサー割り当てシナリオの間に実行される一連の動作ＡＡ〜ＡＦを示している。そのような動作は、図１２および図１３で記述されているような物理シーケンサーの割り当てのための一般的な方法１２００および１３００の個別的な例を反映している。したがって、図７および図８について、以下で図１２および図１３をも参照しつつ論じる。
【０１７６】
図７は、12個の利用可能な物理シーケンサー・フレームを含む見本の実施形態を示している。図７の動作ＡＡは初期状態を示す。ここでは、物理フレームはまだどれ一つとして論理シーケンサー・アドレスにマッピングされていない。
【０１７７】
図７の動作ＡＢは、三つのシーケンサー・フレーム、フレーム０〜２をスレッドＡの三つのページに割り当てることを示している。具体的には、図７は、動作ＡＢにおいて、スレッドＡのページ０（「Ａ０」と称される）がフレーム０にマッピングされることを示している。スレッドＡのページ０のこの初期マッピングは、スレッドＡについてのページ番号１を含む論理シーケンサー・アドレス受領の最初の生起に反応して実行されうる。（図１０の論理シーケンサー・アドレス１０３０のページ番号１０３２参照）。
【０１７８】
そのような論理シーケンサー・アドレスは、図１２のブロック１２０４で割り当て論理によって受領されうる。そのページはまだ物理シーケンサーにマッピングされていないので、図１２のブロック１２０６におけるテーブル探索はミスになり、よって処理はブロック１２１０に進み、その後、図１３のブロック１３０４に進む。図１３では、そのページのために物理シーケンサー・フレームが選択される。図７に示される例については、図７に示されるように、ブロック１３０４でシーケンサー・フレーム０が選択される。
【０１７９】
同様に、図７の動作ＡＢは、スレッドＡのページ１および２の初期マッピングが同様の仕方で実行されうることを示している。
【０１８０】
図７はまた、スレッドＢについてのページの初期マッピングが図７の動作ＡＣで同様にして割り当てられうることを示している。すなわち、図７は、スレッドＢのページ０、１および２が図７の動作Ｃでシーケンサー３、４および５にマッピングされうることを示している。
【０１８１】
図７はまた、スレッドＣについてのページの初期マッピングが図７の動作ＡＤで同様にして割り当てられうることを示している。すなわち、図７は、スレッドＣのページ０、１、２および３が図７の動作ＡＤでシーケンサー６、７、８および９にマッピングされうることを示している。
【０１８２】
図７は、動作ＡＥにおいて、割り当て論理によってスワップ・アウトする処理が実行されうることを示している。そのような処理は、まだマッピングされていないページを含む論理シーケンサー・アドレスを受け取るのに反応して実行されうる。したがって、上で論じたように、ブロック１２０４で論理シーケンサー・アドレスが受け取られうる。次いでブロック１２０６および１２１０が実行されうる。図１３を参照すると、ここでもまた、ブロック１３０４でそのページのためのシーケンサーが選択されることが示されている。図７に示されている例については、ブロック１２０４でスレッドＤについての最初の参照が受け取られた時点では、二つのシーケンサーしか残っていない。
【０１８３】
しかしながら、スレッドＤは四つの論理シーケンサー・アドレスを含んでおり、そのため、スレッドＤの機能属性におけるスケジューリング要件は最低で四つの物理シーケンサーを要求すると想定する。少なくとも一つの実施形態については、あるスレッドについて要求される最低数の物理シーケンサーが、ブロック１３０４で割り当て論理によって決定される。少なくとも一つの実施形態については、あるスレッドによって必要とされる論理シーケンサーの数は、機能報告命令を介してアーキテクチャ的に提供されうる。そのような数は、たとえば、CPUID命令のような、単一のスレッドがアクセスできる論理シーケンサー・アドレスの数を報告する機能報告命令を実行することによって決定されうる。
【０１８４】
したがって、ブロック１３０４において、アクティブな「犠牲者」シーケンサーがスワップ・アウトされるよう選択される。上で論じられているように、どのシーケンサー（単数または複数）をスワップ・アウトするかを決定するために、シーケンサー属性が考慮に入れられうる。たとえば、割り当て論理は、ブロック１３０４において、長い遅延のキャッシュ・ミスのために停滞していて、前に進んでおらず、よってそのシーケンサー・フレームがスレッドＤのための余地を作るためのスワップの対象として選択されるべきであると判定しうる。
【０１８５】
図７は、動作ＡＥで、物理シーケンサー・フレーム３、４および５についてのコンテキスト状態が補助記憶にスワップ・アウトされることを示している。同様に、図１３は、補助記憶へのスレッド・コンテキスト保存がブロック１３０８で起こることを示している。スレッドＤ自身が以前にアクティブだったことがあり、それがスレッド終了前に補助記憶１２７５にスワップされてしまったような場合、そのコンテキストが、補助記憶１２７５から、空けられた物理シーケンサーに復元されることになる。
【０１８６】
だが、図７に示される例の場合は、動作ＡＦが示しているのは、スレッドＤのページについての初期マッピングである。したがって、スレッドＤについてのコンテキスト状態を補助記憶１２７５から復元する必要はなく、その代わりに初期値で初期化される。したがって、ブロック１３１０は、すべての場合に必ず実行されるわけではないことを示すため、図１３では点線で記されている。
【０１８７】
図７の動作ＡＦは、スレッドＤについてのページ０、１、２および３がそれぞれ物理シーケンサー３、４、５および１０にマッピングされることを示している。
【０１８８】
図８は、図７で示した例示的なシナリオの動作ＡＦ後にシーケンサー・ページ・テーブル６１０ａ〜６１０ｄの内容を示している。図８は、スレッドＡについてのページ・テーブル６１０ａが、スレッドＡについてのページ０、１および２のそれぞれ物理ページ・フレーム０、１および２へのマッピングを示していることを示している。ページ・テーブル６１０ａの各項目についての「存在／不在（present/absent）」フィールド（図６、６３４参照）の値（“Ｐ”）は、それらのページについてのコンテキスト情報が補助記憶ではなく物理シーケンサー・フレームにロードされていることを示す。
【０１８９】
同様に、図８は、スレッドＣについてのページ・テーブル６１０ｃが、スレッドＣのページ０、１、２および３のそれぞれ物理ページ・フレーム６、７、８および９へのマッピングを示していることを示している。スレッドＤについてのページ・テーブル６１０ｄは、スレッドＤのページ０、１、２、３のそれぞれ物理シーケンサー３、４、５および１０へのマッピングを示している。ここでもまた、テーブル６１０ｃおよび６１０ｄの各項目についての存在／不在フィールド（図６、６３４参照）の値は、それらの項目についてのアドレスが、現在のコンテキストを保持する物理シーケンサー・フレームを示していることを示している。
【０１９０】
図８はさらに、スレッドＢについてのページ・テーブル６１０ｂが、ページ・テーブル６１０ｂの各項目についての存在／不在フィールド６３４の不在の値“Ａ”を示していることを示している。したがって、スレッドＢについてのページのためのコンテキストは、補助記憶１２７５の指示されたアドレス（それぞれxxx、yyy、zzz）に見出すことができる。
【０１９１】
少なくとも一つの実施形態については、存在／不在フィールドを含めたスレッド・ページ・テーブル６１０ａ〜６１０ｂの更新は、割り当て論理によって、図１３のブロック１３１２において実行される。
【０１９２】
最後に、図８は、空きフレーム・リスト６２０が物理シーケンサー・フレーム１１が未割り当てのままであることを示すことを示している。
【０１９３】
図１５は、開示されている諸技法を実行する機能のあるコンピューティング・システム１５００の少なくとも一つの見本実施形態を示している。コンピューティング・システム１５００は少なくとも一つのプロセッサ・コア１５０４およびメモリ・システム１５４０を含む。メモリ・システム１５４０はより大きな、比較的より遅いメモリ記憶１５０２とともに、命令キャッシュ１５４４および／もしくはデータキャッシュ１５４２のような一つもしくは複数のより小さな比較的高速のキャッシュを含みうる。メモリ記憶１５０２は、プロセッサ１５０４の動作を制御するための命令１５１０およびデータ１５１２を保存しうる。メモリ記憶１５０２の少なくとも一つの実施形態はマッピング構造１５８０をも含みうる。
【０１９４】
メモリ・システム１５４０はメモリの一般化された表現として意図されており、ハード・ドライブ、CD-ROM、ランダムアクセスメモリ（RAM）、動的ランダムアクセスメモリ（DRAM）、静的ランダムアクセスメモリ（SRAM）、フラッシュメモリおよび関係した回路といった多様な形のメモリを含みうる。メモリ・システム１５４０は、プロセッサ１５０４によって実行されうるデータ信号によって表現される命令１５１０および／またはデータ１５１２を保存しうる。命令１５１０および／またはデータ１５１２は、ここに議論された技術のいずれかまたは全部を実行するためのコードおよび／またはデータを含みうる。
【０１９５】
プロセッサ１５０４は、実行コア１５３０に命令情報を供給するフロントエンド１５２０を含みうる。フェッチされた命令情報は、実行コア１５３０による実行を待つべく、キャッシュ１５２５にバッファリングされうる。フロントエンド１５２０は、その命令情報をプログラム順に実行コア１５３０に供給しうる。少なくとも一つの実施例については、フロントエンド１５２０は、実行されるべき次の命令を決めるフェッチ／デコード・ユニット３２２を含む。システム１５００の少なくとも一つの実施例については、フェッチ／デコード・ユニット１２２は、単一の次命令ポインタおよびフェッチ論理１２０を含みうる。しかしながら、各プロセッサ１５０４が複数スレッド・コンテキストをサポートする実施形態では、フェッチ／デコード・ユニット１２２は、サポートされるスレッド・コンテキストそれぞれについて相異なる次命令ポインタおよびフェッチ論理１２０を実装する。マルチプロセッサ・システムにおける追加的な次命令ポインタおよびフェッチ論理１２０が任意的であるという性質は、図１５で点線によって表されている。
【０１９６】
ここに記載される諸方法の実施形態は、ハードウェア、ハードウェア・エミュレーション・ソフトウェアもしくはその他のソフトウェア、ファームウェアまたはそのような実装手法の組み合わせにおいて実装されうる。本発明の実施形態は、少なくとも一つのプロセッサ、データ記憶システム（揮発性および不揮発性のメモリおよび／または記憶要素を含む）、少なくとも一つの入力装置ならびに少なくとも一つの出力装置を有するプログラム可能システムのために実装されうる。本出願の目的のためには、処理システムは、たとえばデジタル信号プロセッサ（DSP）、マイクロコントローラ、特定用途向け集積回路（ASIC）またはマイクロプロセッサといったプロセッサをもつ任意のシステムを含む。
【０１９７】
プログラムは、汎用または特殊目的プログラム可能処理システムによって読み取り可能な記憶媒体またはデバイス（たとえばハードディスク・ドライブ、フロッピー（登録商標）ディスク・ドライブ、読み出し専用メモリ（ROM）、CD-ROMデバイス、フラッシュメモリ・デバイス、デジタル多用途ディスク（DVD）またはその他の記憶デバイス）上に記憶されうる。処理システム中のプロセッサにとってアクセス可能な命令が、該処理システムによって前記記憶媒体またはデバイスが読まれたときに、ここに記載される手順を実行するために、該処理システムを構成設定し、動作させることを提供する。本発明の実施形態は、処理システムとともに使用するよう構成された機械可読記憶媒体として実装されると考えられてもよい。ここで、そのように構成された記憶媒体は、処理システムをして、ここに記載される機能を実行するために特定かつ所定の仕方で動作させる。
【０１９８】
見本システム１５００は、インテル社から入手可能なペンティアム（登録商標）、ペンティアム（登録商標）プロ、ペンティアム（登録商標）II、ペンティアム（登録商標）III、ペンティアム（登録商標）4およびアイテニアム（登録商標）およびアイテニアム（登録商標）2といったマイクロプロセッサに基づいた処理システムを表す。ただし、その他のシステム（他のマイクロプロセッサをもつパーソナル・コンピュータ（PC）、エンジニアリング・ワークステーション、携帯情報端末およびその他のハンドヘルド装置、セットトップボックスなどを含む）を使ってもよい。ある実施例については、見本システムはマイクロソフト社から入手可能なウィンドウズ（登録商標）オペレーティング・システムのあるバージョンを実行してもよい。ただし、他のオペレーティング・システムおよびグラフィカルユーザーインターフェースなどを使用してもよい。
【０１９９】
本発明の具体的な実施形態について図示し、記載してきたが、付属の請求項の範囲から外れることなく変更および修正をなすことができることは当業者には明らかであろう。たとえば、図５に示されたマッピング構造５８０は、上で論じた以外の仕方で編成されてもよい。たとえば、マッピング構造５８０は。逆（inverted）シーケンサー・ページ・テーブルとして編成されてもよい。これは、物理シーケンサー・フレームの数に等しい数のテーブル項目を有するハッシュ表である。さらに、マッピング構造５８０の各テーブル項目は、仮想ページからページ・フレームへのマッピングのリンクされたリストに関連付けられていてもよい。
【０２００】
また、たとえば、マッピング・マネージャ（図５、５０２参照）は、セグメンテーションとページング両方を組み合わせたハイブリッド・マッピング方式をサポートしてもよい。マッピング・マネージャはこの手法のために、プロセス中の各セグメントについて異なるページ・テーブルを利用してもよく、それにより異なるセグメントについてはページ数が変わってもよい。
【０２０１】
別の代替的な実施形態については、マッピング・マネージャは、シーケンサー割り当てを実行するときにシーケンサー属性情報を考慮に入れうるばかりでなく、物理シーケンサー自身によって実行されるタイムアウト動作をも考慮に入れうる。すなわち、シーケンサーは、タイムアウト・イベントの生起に際してイベント・ハンドラを呼び出すようプログラムされうる。タイムアウト・イベントは、たとえば、シーケンサーが前に進んでいないことを示すいかなるイベントでもよい（長い遅延の最終レベルのキャッシュ・ミス、同期オブジェクトへのロック待ち）。シーケンサーがタイムアウトになると、タイムアウト・イベントのためのイベント・ハンドラは、そのシーケンサーの現在の命令ストリームを「ペンディング待ち行列」に入れ、物理シーケンサーを空きリストに戻すため、譲歩（a  yield）を実行しうる。あるいは、上記のLSCQをサポートする代替的な実施形態では、タイムアウトは、現在アクティブな論理シーケンサーをLSCQにあふれ出させて、マッピング・マネージャ５０２のほうはLSCQから置換論理シーケンサー・コンテキストを見出しうる。これはスケジューリング論理（たとえば図４および図５の４８７参照）によって実行されうる。スケジューリング論理４７６は、空けられた物理シーケンサー上で走るよう置換論理コンテキストをスケジューリングしうる。
【０２０２】
イベント・ハンドラは、前記の譲歩を実行する代わりに、またはそれに加えて、ライブネス（live-ness）シーケンサー検査を次の仮想シーケンサーまたはシーケンサー・ページに送ってもよい。事実上、そのようなライブネス問い合わせを送ることは、あるスレッドについてのすべての仮想シーケンサーが予測可能な時間期間内にページングされうるようにするために、経時（aging）機構（クロックまたはWSClockと類似）を提供する。
【０２０３】
このように、当業者はより広い諸側面における本発明から外れることなく、変更および修正がなし得ることを認識するであろう。付属の請求項の範囲内には、本発明の真の範囲内にはいるそのようなすべての変更および修正が包含される。
【図面の簡単な説明】
【０２０４】
【図１】マルチシーケンサー・システムのさまざまな実施形態を示すブロック図である。
【図２】マルチシーケンサー・システムのための一般的な並列プログラミング手法の図的な表現を示す図である。
【図３】各シーケンサーについて一意的な識別子を有するマルチシーケンサー・システムの少なくとも一つの実施形態を示すブロック図である。
【図４】論理シーケンサー・アドレスの物理シーケンサー・アドレスへのマッピングを管理するためのマッピング・マネージャを含むマルチシーケンサー・システムの少なくとも一つの実施形態を示すブロック図である。
【図５】仮想化論理シーケンサー・アドレスの物理シーケンサー・アドレスへのマッピングを管理するためのマッピング・マネージャを含むマルチシーケンサー・システムの少なくとも一つの実施形態を示すブロック図である。
【図６】マッピング構造の少なくとも一つの実施形態のためのさらなる詳細を示すブロック図である。
【図７】実際のシーケンサー・フレームの仮想化論理シーケンサー・アドレスへのマッピングのための例示的なシナリオの少なくとも一つの実施形態を示すデータ流れ図である。
【図８】図７に示した見本シナリオの見本マッピング構造の内容を示すブロック図である。
【図９】マッピング・マネージャのための割り当て論理の少なくとも一つの実施形態を示すブロック図である。
【図１０】仮想シーケンサー・アドレスから実際のシーケンサー識別子に変換する方法の少なくとも一つの実施形態を示すデータ流れ図である。
【図１１】変換加速構造の少なくとも一つの実施形態のための見本項目を示すブロック図である。
【図１２】シーケンサー割り当てのための方法の少なくとも一つの実施形態のための制御およびデータの流れを示す流れ図である。
【図１３】論理シーケンサー・アドレスのためのページ・テーブル・ミスを扱うための方法の少なくとも一つの実施形態のための制御およびデータの流れを示す流れ図である。
【図１４】非対称的なシーケンサーを含むマルチシーケンサー・マルチスレッド・システムの少なくとも一つの実施形態を示すブロック図である。
【図１５】開示された技術を実行できるシステムの少なくとも一つの実施形態についてのさらなる詳細を示すブロック図である。
【図１６】ユーザーレベルのシーケンサー認識動作をサポートするマルチシーケンサー・システムのもう一つの実施形態のブロック図である。
【図１】
2008536224.tif 000003
【図２】
2008536224.tif 000004
【図３】
2008536224.tif 000005
【図４】
2008536224.tif 000006
【図５】
2008536224.tif 000007
【図６】
2008536224.tif 000008
【図７】
2008536224.tif 000009
【図８】
2008536224.tif 000010
【図９】
2008536224.tif 000011
【図１０】
2008536224.tif 000012
【図１１】
2008536224.tif 000013
【図１２】
2008536224.tif 000014
【図１３】
2008536224.tif 000015
【図１４】
2008536224.tif 000016
【図１５】
2008536224.tif 000017
【図１６】
2008536224.tif 000018
【国際調査報告】
2008536224.tif 000019
2008536224.tif 000020
2008536224.tif 000021