JP5244160B2 - 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム - Google Patents

複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム Download PDF

Info

Publication number
JP5244160B2
JP5244160B2 JP2010204922A JP2010204922A JP5244160B2 JP 5244160 B2 JP5244160 B2 JP 5244160B2 JP 2010204922 A JP2010204922 A JP 2010204922A JP 2010204922 A JP2010204922 A JP 2010204922A JP 5244160 B2 JP5244160 B2 JP 5244160B2
Authority
JP
Japan
Prior art keywords
sequencer
instruction
instruction sequencer
user
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010204922A
Other languages
English (en)
Other versions
JP2011023032A (ja
Inventor
ワン、ホン
シェン、ジョン
グロホウスキ、エド
エルド、ジェームズ、ポール
ビッグビー、ブライアント
カウシィク、シブナンダン、ディー.
チンヤ、ガウタム
ゾウ、シャン
ハマーランド、パー
チエン、シンミン
アガーワル、アニル
ロジャース、スコット、ダイオン
パテル、バイジュ、ブイ.
ハンキンズ、リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/173,326 external-priority patent/US8719819B2/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2011023032A publication Critical patent/JP2011023032A/ja
Application granted granted Critical
Publication of JP5244160B2 publication Critical patent/JP5244160B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明の実施例は処理命令のための方法および装置に関する。
マイクロプロセッサを含むシステムのような情報処理システムのパフォーマンスを向上させるため、ハードウェア技術およびソフトウェア技術の両方が用いられている。ハードウェア面において、マイクロプロセッサパフォーマンスを向上させるためのマイクロプロセッサ設計アプローチには、クロック速度の増大、パイプライン化、分岐予測、スーパースカラ実行、アウトオブオーダ実行およびキャッシュが含まれている。かかる多くのアプローチは、トランジスタ数の増大をもたらし、いくつかの例においては、パフォーマンス向上の割合よりも大きな割合でのトランジスタ数増大という結果にさえなっている。
トランジスタの追加に厳格に依存してパフォーマンスを向上させようとすること以外のパフォーマンス向上にはソフトウェア技術が含まれる。プロセッサのパフォーマンスを向上させるために用いられる1つのソフトウェアアプローチは「マルチスレディング」として知られる。ソフトウェアマルチスレディングにおいては、並列実行可能な命令ストリームは複数の命令ストリームに分割される。または、複数の独立ソフトウェアストリームが並列実行される。
タイムスライスマルチスレディングすなわちタイムマルチプレクス(「TMUX」)として知られる1つのアプローチでは、単数のプロセッサが一定時間の後にスレッド間の切り替えを行う。さらに別のアプローチでは、単数のプロセッサは、ロングレイテンシのキャッシュミスのようなトリガイベントの発生時にスレッド間の切替を行う。
スイッチオンイベントマルチスレディング(「SoEMT」)として知られるこの後者のアプローチでは、最大でも1つのスレッドのみが所定時刻においてアクティブである。
ますます、マルチスレディングはハードウェアでサポートされている。例えば、1つのアプローチでは、チップマルチプロセッサ(「CMP」)システム(単数チップパッケージ上のマルチプロセッサ)および対称型マルチプロセッサ(「SMP」)システム(複数チップ上のマルチプロセッサ)のようなマルチプロセッサシステムのプロセッサは、各々が複数のソフトウェアスレッドの1つで同時に動作する。マルチスレッド同時処理(「SMT」)と称される別のアプローチでは、単数の物理プロセッサコアが、オペレーティングシステムおよびユーザプログラムにとっては複数の論理プロセッサとして見える。SMTに対しては、複数のソフトウェアスレッドがアクティブになることができ、単数のプロセッサコア上で同時に実行される。すなわち、各論理プロセッサは完全なセットのアーキテクチャ状態を維持するが、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスのような、物理プロセッサの他の多くのリソースは共有される。したがって、SMTに対しては、複数のソフトウェアスレッドからの命令は各論理プロセッサ上で同時に実行される。
SMT、SMPおよび/またはCMPシステムのような、ソフトウェアスレッドの同時実行をサポートするシステムに対しては、オペレーティングシステムはソフトウェアスレッドのスケジューリングおよび実行を制御する。
または、いくつかのアプリケーションが、処理システム内の実行に対して複数スレッドを直接管理およびスケジューリングすることも可能である。かかるアプリケーションにスケジューリングされるスレッドはオペレーティングシステム(OS)から見えないのが一般的であり、ユーザレベルスレッドとして知られる。
通常は、ユーザレベルスレッドは、OSによって管理される処理リソースに基づいて実行されるアプリケーションによって、実行がスケジューリングされるにすぎない。このため、マルチプロセッサを備える典型的な処理システムにおいては、OSによって直接には管理されないプロセッサ上で実行されるようにユーザレベルスレッドをスケジューリングするためのメカニズムは存在しない。
以下の記載においては説明を目的として、多数の具体的な詳細が本発明の十分な理解を与えるように記載される。
しかし、本発明がこれらの具体的な詳細なしに実施できることは当業者には明らかである。他の例、構造およびデバイスは、本発明が不明瞭になることを避けるべくブロック図の形態で示される。
本明細書において「1つの実施例」または「実施例」という言及は、その実施例に関連して記載された具体的な機能、構造または特性が本発明の少なくとも1つの実施例に含まれることを意味する。本明細書の様々な箇所での「実施例において」という語句の登場は、必ずしもすべてが同じ実施例を参照するものではなく、他の実施例を除外する別個の実施例または変形実施例を参照するものでもない。さらに、いくつかの実施例によって示されるが他の実施例によっては示されない様々な特徴が記載される。同様に、いくつかの実施例には必要であるが他の実施例には必要ではない様々な要件が記載される。
以下の記載は、OS制御から隔離された複数のシーケンサシステムのシーケンサ上での実行スレッドを生成および制御するためのアーキテクチャメカニズムの実施例を説明する。
ここで使用される限りにおいて、用語「命令シーケンサ」または単なる「シーケンサ」は、次命令ポインタ論理および少なくともなんらかのプロセッサ状態を含む。例えば、命令シーケンサは、論理プロセッサまたは物理プロセッサコアを含む。
実施例において、アーキテクチャメカニズムはちょうど2つの命令を含み、それらはともに、OSアプリケーションプログラムインターフェイスを使用することなく任意の2つのシーケンサ間の信号を送信および受信する信号交換メカニズムを規定する。信号は、アーキテクチャ上で規定されるイベントまたはシナリオを含み、ハンドラコードにマッピングされる。シーケンサにおいて信号を受信すると、信号内のシナリオは、そのシーケンサにハンドラコードへのベクトルを発生させるトリガとして動作する。2つの命令を使用することで、既存スレッドライブラリによって与えられるスレッド生成、スレッド制御およびスレッド同期ソフトウェアプリミティブを実行することが可能となる。
さらに、2つの命令は、以下に詳細に説明されるように、クライアントシーケンサに代わってコードをサーバントシーケンサに実行させるプロキシ実行メカニズムを生成するために使用される。
このため、異なるスレッドを実行する2つ以上の命令シーケンサを含むプロセッサシステムの例が説明される。2つ以上の命令シーケンサの少なくともいくつかは、シーケンサ認識ユーザレベル命令をその命令セットに含み、オペレーティングシステムの介入なしに、特定の命令シーケンサに基づくスレッド管理オペレーションによるインターシーケンサ制御が可能となる。シーケンサ認識ユーザレベル命令は、命令シーケンサ制御トランスファ命令、命令シーケンサモニタリング命令、コンテキスト保存命令およびコンテキスト回復命令を含む。プロセッサシステムはまた、ユーザレベル命令に応答するスレッド管理ロジックを有する。これにより、非隔離命令シーケンサは、オペレーティングシステムスケジューラなしに、関連する隔離命令シーケンサ上で実行される並列スレッドを生成することができる。また、プロセッサシステムは、プロキシ実行メカニズムを有する。これにより、クライアント命令シーケンサは、クライアントシーケンサ上での命令実行中に遭遇する所定のトリガ条件に応答して、かつ、オペレーティングシステムの介入なしに、プロキシスレッドをトリガしてクライアント命令シーケンサに代わってサーバント命令シーケンサを実行することができる。
ここで図1Aの図面を参照すると、参照番号100Aには、本発明の1つの実施例に係るマルチシーケンサシステムが示される。マルチシーケンサシステム100Aは、メモリ102およびマルチシーケンサハードウェア104を含む。メモリ102は、ユーザレベルプログラム106を有する。ユーザレベルプログラム106は、マルチシーケンサハードウェア104上での実行のために命令をスケジューリングするスケジューラ108を含む。実行されるエクスプレスマルチスレッドに対し、ユーザレベルプログラム106は、ユーザレベルプログラム106にスレッド生成、制御および同期プリミティブを与えるスレッドライブラリに対して、スレッドAPI110を使用する。メモリ102の中にはまた、オペレーティングシステム112も配置される。マルチシーケンサハードウェア104は、複数のシーケンサを含む。その4つのみが図1Aに示されている。図示の4つのシーケンサはそれぞれ、SID0、SID1、SID2およびSID3で示される。
ここで使用される限り、「シーケンサ」は別個のスレッド実行リソースであり、スレッドを実行することができる任意の物理または論理ユニットである。命令シーケンサは、次命令ポインタ論理を含み、所定スレッドに対して実行されるべき次の命令を決定する。シーケンサは、論理スレッドユニットまたは物理スレッドユニットである。
実施例において、複数の命令シーケンサは同じプロセッサコア内にあってよい。実施例において、各命令シーケンサは異なるプロセッサコア内にあってよい。
所定のプロセッサコアに含まれるのは、命令セットアーキテクチャである。命令セットアーキテクチャ(ISA)は、状態要素(レジスタ)、およびその状態要素上で実行される命令を含むプロセッサコアの抽象的モデルである。命令セットアーキテクチャは、プログラマおよびマイクロプロセッサ設計者の両者に対してプロセッサコアの挙動の抽象的仕様を与えることによって、ソフトウェアとハードウェアとの境界として機能する。命令セットは、プロセッサコアがデコードおよび実行可能な命令のセットを規定する。
ここに説明されるマルチシーケンサハードウェア104のチップマルチプロセシング(CMP)実施例はシーケンサSID0−SID3当たり1つのスレッドのみを言及するが、ここでの開示がシングルスレッドのプロセッサに限定されると仮定すべきではない。ここに説明される技術は、CMPプロセッサの各コアがおよびSMTプロセッサまたはスイッチオンイベントマルチプロセッサ(SoeMT)である、CMPプロセッサおよびSMTプロセッサを備えるハイブリッドシステムを含む任意のチップマルチプロセシング(CMP)またはマルチスレッド同時処理(SMT)システムにおいて用いられてよい。例えば、ここに説明される技術は、複数のマルチスレッドプロセッサコアを単数チップパッケージ104内に含むシステムで使用されてよい。
シーケンサSID0−SID3は必ずしも一様である必要はなく、計算の質に影響を与える処理速度、処理能力および電力消費のような任意の因子について非対称であってよい。例えば、シーケンサSID0は、所定の命令セットアーキテクチャ(例えばIA32命令セットアーキテクチャ)のすべての命令を処理するように設計されるという点で「ヘビーウェイト」であってよい。他方、シーケンサSID1は、それらの命令のうち選択されたサブセットのみを処理することができるという点で「ライトウェイト」であってもよい。別の実施例では、ヘビーウェイトプロセッサは、ライトウェイトプロセッサよりも高速に命令を処理するプロセッサであってよい。シーケンサSID0はオペレーティングシステム(OS)にとって可視である一方、シーケンサSID1からSID3はOSから隔離されている。しかし、このことは、すべてのヘビーウェイトシーケンサがOSにとって可視であるか、またはすべてのライトウェイトシーケンサが隔離されているということではない。ここで使用する限り、用語「OSから隔離されている」とは、隔離状態または条件に遷移したシーケンサを示す。かかる隔離状態または条件の特性は、かかる状態においてはOSがシーケンサに対して命令をスケジューリングしないということである。
わかるように、マルチシーケンサハードウェアまたはファームウェア(例えばマイクロコード)はまた、スレッド管理ロジック114も含む。実施例において、スレッド管理ロジック114は、シーケンサSID0−SID3を可視化し、ユーザレベルプログラム106にとっては一様に見える。すなわち、スレッド管理ロジック114はシーケンサSID0−SID3の非対称性をマスクし、アセンブリ言語プログラマから見える論理の視点からは、図面の図2に示すビュー200に描かれているように、シーケンサSID0−SID3は一様に見える。
システム100Aにおいては、図面の図1Aに示すように、ユーザレベルプログラム106は、マルチシーケンサハードウェア104にぴったりと接続される。実施例において、ユーザレベルプログラム106は、中間ドライバを介してマルチシーケンサハードウェア104にゆるく接続されてもよい。かかるシステムは、図面の図1Bに、参照番号100Bとして描かれている。システム100Bは、システム100Aと基本的には同じであるが、ユーザレベルプログラムが、スケジューラ108を使用する代わりに、ドライバ、ハードウェアアブストラクションレイヤ等のようなデバイスドライバ116のようなカーネルレベルソフトウェアを使用する点で異なる。デバイスドライバ116は、カーネルレベルAPI118と通信し、マルチシーケンサハードウェア104上での実行のための命令をスケジューリングする。
図1Cは、ユーザレベル命令によるスレッド制御をサポートするマルチシーケンサシステムの実施例109、115、150、170の選択されたフィーチャを示すブロック図である。図1Cは、SMTマルチシーケンサマルチスレディングシステム109の選択されたフィーチャを示す。ここで、各シーケンサは、他の論理プロセッサ上での他のスレッドの実行と同時にスレッドを実行する論理プロセッサである。図1はまた、マルチシーケンサシステム115の少なくとも1つの実施例も示す。マルチシーケンサシステム115は、タイムマルチプレクシング型の切替メカニズムのようなスイッチオンイベント(SoeMT)メカニズムを介して複数の論理シーケンサをサポートし、論理プロセッサの各々は交代でそのスレッドを実行する。すなわち、1つのみのスレッドがかかるシステム115上で一度に実行される。
図1Cはまた、マルチコアのマルチスレディングシステム150、170の選択されたフィーチャを示す。
マルチコアのマルチスレディングシステムのための物理コアはシングルシーケンサコア(例えばシステム150参照)またはマルチシーケンサコア(例えばシステム170参照)のどちらかでよい。かかるマルチコアマルチスレディングの実施例は後に以下に説明するが、シングルコアマルチシーケンサシステム109、115はここで以下に説明する。
SMTシステム109では、単数の物理プロセッサ103は、ここでTCからTC(図示せず)で参照される複数のスレッドコンテキストとして見えるようにされる。スレッドコンテキストの各々は事実上シーケンサである。これらのスレッドコンテキストの少なくともいくつか(例えばn個のうちのm個)が、オペレーティングシステムおよび/またはユーザプログラムにとって可視にされると、これらのスレッドコンテキストは、時々論理プロセッサ(図示せず)として参照される。これらは、ここではLPからLPとして参照される。各スレッドコンテキストTCからTCはそれぞれ、アーキテクチャ状態AS−ASのセットを維持する。少なくとも1つの実施例において、アーキテクチャ状態は、データレジスタ、セグメントレジスタ、制御レジスタ、デバッグレジスタおよびモデル固有レジスタのほとんどを含む。スレッドコンテキストTC−TCは、キャッシュ、実行ユニット、分岐予測器、制御論理およびバスのような、物理プロセッサ103の他のリソースのほとんどを共有する。
かかるフィーチャが共有されても、マルチスレディングシステム109の各スレッドコンテキストは、次命令アドレスを独立して生成する(そして例えば、命令キャッシュ、実行命令キャッシュまたはトレースキャッシュからのフェッチを行う)。したがって、プロセッサ103は、論理的に独立した次命令ポインタおよびフェッチ論理120を含む。次命令ポインタおよびフェッチ論理120は、たとえ複数の論理シーケンサが単数の物理フェッチ/デコードユニット122に実装されていても、各スレッドコンテキストに対して命令をフェッチする。SMT実施例に対しては、用語「シーケンサ」は、スレッドコンテキストのための少なくとも次命令ポインタおよびフェッチ論理120を、そのスレッドコンテキストに対する少なくともなんらかの関連アーキテクチャ状態ASとともに含む。なお、SMTシステム109のシーケンサが対称的である必要はない。例えば、同じ物理プロセッサの2つのSMTシーケンサが、各々が維持するアーキテクチャ状態情報の量において異なっていてもよい。
したがって、少なくとも1つの実施例において、マルチシーケンサシステム109は、同時マルチスレディングをサポートするシングルコアプロセッサ103である。かかる実施例に対しては、各シーケンサは、それ自体の次命令ポインタおよびフェッチ論理と、それ自体のアーキテクチャ状態情報とを有する論理プロセッサであるが、同じ物理プロセッサコア103はすべてのスレッド命令を実行する。かかる実施例に対しては、論理プロセッサはそれ自体のアーキテクチャ状態のバージョンを維持するが、シングルプロセッサコア103の実行リソースは同時実行スレッド間で共有されてよい。
図1Cはまた、マルチスレッドコードを実行可能なマルチシーケンサシステム115の別の実施例も示す。
実施例115は、スイッチオンイベントマルチスレディング(「SOEMT」)実施例として称される。かかる実施例115に対しては、各シーケンサは、各シーケンサが、そのアーキテクチャ状態情報およびそれ自体の命令、次命令ポインタを有する論理プロセッサであるという点で、前の実施例109のシーケンサと類似する。しかし、システム115は、シーケンサの各々が、物理プロセッサコア103内のシングルフェッチ/デコードユニット122の同じ物理フェッチ論理120を他のシーケンサと共有するという点で、上述の109とは異なる。フェッチ論理120は、様々なスイッチオンイベントポリシーに基づいて、システム115の異なるシーケンサに対してフェッチするように切り替えられてもよい。スイッチオンイベントトリガは、タイムマルチプレクシング(TMUX)のような特定量の時間またはマシンサイクルの経過であってよい。他の実施例に対しては、SOEMTトリガは、キャッシュミスイベント、ページフォールト、ロングレイテンシ命令等のような他のイベントであってよい。
図1Cはまた、マルチコアマルチスレディングシステム150、170の少なくとも2つの実施例も示す。図1Cに示すマルチコアシステム150、170の少なくともいくつかの実施例に対しては、システムはプロセッサ103をビルディングブロックとして使用する。シーケンサの各々はプロセッサコア103であり、複数のコア103−103、103−103はそれぞれ単数チップパッケージ160、180にある。図1Cに示すシステム150に対しては、各コア103(i=0からn)はシングルスレッドシーケンサであってよい。図1Cに示すシステム170に対しては、各コア103(j=1からm)はマルチシーケンサプロセッサコアであってよい。
チップパッケージ160、180は図1Cにおいて破線で示されるが、図示のマルチコアシステム150、170のシングルチップ実施例は単に説明のためのものにすぎない。他の実施例に対しては、マルチコアシステムのプロセッサコアは別個のチップ上にあってもよく、SOEMTマルチシーケンサシステムとしてまとめられてもよい。
図1Cに示す第1のマルチコアマルチスレディングシステム150は、2つ以上の別個の物理プロセッサ103−103を含んでよい。物理プロセッサ103−103は、異なるスレッドの少なくとも一部の実行が同時に進行中となるように各々が異なるスレッドを実行可能である。各プロセッサ103から103は、物理的に独立なフェッチユニット122を含む。フェッチユニット122はその各々のスレッドのための命令情報をフェッチする。各プロセッサ103−103が1つのスレッドを実行する実施例において、フェッチ/デコードユニット122は、シングル次命令ポインタおよびフェッチ論理120を実装する。
図1Cはまた、複数のSMTシステム109を含むマルチコアマルチスレディングシステム170も示す。
かかる実施例170に対しては、各プロセッサ103−103は複数のスレッドコンテキストをサポートする。
例えば、各プロセッサ103−103は、k個のシーケンサをサポートするSMTプロセッサであり、システム170は事実上m*k個のシーケンサを実装する。さらに、システム170のフェッチ/デコードユニット122は、各々サポートされたスレッドコンテキストに対して別個の次命令ポインタおよびフェッチ論理120を実装する。
説明の便宜上、以下の説明はマルチコアシステム150の実施例に絞り込むことにする。しかし、以下に記載のメカニズムはマルチコアまたはシングルコアのマルチシーケンサシステムのいずれで実施されてもよいので、この絞り込みは限定と解釈してはならない。また、シングルコアまたはマルチコアのシステムはシングルシーケンサコアまたはマルチシーケンサコアで実施される。各マルチシーケンサコアに対しては、SMTおよび/またはSoeMTを含む1つ以上のマルチスレディング技術が利用される。図1Cに示すシステム109、115、150、170は、図1Cに示さないメモリシステム、実行ユニット等のような付加的なフィーチャを含んでよいことがわかるだろう。
図1Cに示す実施例のシステム109、115、150、170に対する各シーケンサ103は、固有の識別子に関連付けられる(図3に関連して以下に説明する)。様々な実施例のシステム109、150には、すべてのシーケンサについて異なる番号Nが含まれる。
図1Cに示す実施例のシステム109、115、150、170は各々、シーケンサ間の信号の交換をサポートする。ここで使用される限り、用語「シーケンサ算術演算」は、2つのシーケンサ間でサービスされるインターシーケンサ信号の交換を言及するために使用される。シーケンサ算術演算のためのアーキテクチャ上のサポートには、命令セットアーキテクチャに対する拡張が含まれ、1つ以上の命令が与えられてユーザ直接操作によるシーケンサ間の制御および状態のトランスファが可能になる。ユーザレベル命令が「シーケンサ認識」であるといわれるのは、論理シーケンサアドレスを、命令オペランドとしてエンコード可能なおよび/または命令実行時に暗黙的に参照可能なパラメータとして含むシーケンサ算術演算命令または他の任意のタイプの命令である場合である。かかる命令は、別のシーケンサと信号の交換を行うシーケンサ算術演算命令(ここでは「ユーザレベル制御トランスファ命令」と称する)、またはかかる信号をモニタするクライアントシーケンサのセットアップを行うシーケンサ算術演算命令(ここでは「ユーザレベルモニタ命令」と称する)のいずれかを含んでよい。
シーケンサ認識命令はまた、シーケンサ認識状態保存および回復命令のような論理シーケンサアドレスをパラメータとして含む他の命令を含んでよい。かかる状態保存命令の実行時には、第1のシーケンサは第2のシーケンサのアーキテクチャ状態のスナップショットコピーを生成することができる。シーケンサ認識回復命令は、保存アーキテクチャ状態が特定のシーケンサにロードされるように指定する。
各シーケンサ認識命令にはまた、1つ以上の論理シーケンサアドレスをパラメータとして含むオプションがある。
例えば、シーケンサ認識命令は、複数の論理シーケンサアドレスの集合をパラメータとして含んでよい。かかるアプローチは、1つのシーケンサから他の複数のシーケンサへインターシーケンサ信号をマルチキャストまたはブロードキャストするために使用されてよい。以下の説明を単純化するため、以下に記載される例は、特に明記のない限り、第1のシーケンサが他のシングル論理シーケンサアドレスを特定するシーケンサ認識命令を実行するというユニキャストの場合に言及される。かかるアプローチは、単に記載上の便宜および説明目的でなされるので、限定として解釈してはならない。当業者であれば、ここで説明されるメカニズムの実施例がシーケンサ認識命令をブロードキャストおよびマルチキャストにも同様に適用できることがわかるだろう。
図3Aは、図1A〜図1Cのシステムのための命令セットアーキテクチャのビューを示す。図面の図3Aを参照すると、システム100Aおよび100Bの命令セットアーキテクチャ(ISA)ビュー300が示される。ISAは、アセンブリ言語プログラマ、バイナリトランスレータ、アセンブラ等によって見えるとおりのバイナリシステムの論理ビューを規定する。そのISAによると、システム100Aおよび100Bは、論理ストレージ302および命令セット304を含む。論理ストレージ302は、システム100Aおよび100Bに対する可視メモリ階層、アドレシングスキーム、レジスタセット等を規定する一方で、命令セット304は、システム100Aおよび100Bがサポートする命令および命令のフォーマットを規定する。実施例において、命令セット304は、IA32命令セットおよびその拡張として知られる命令セットを含んでよいが、他の命令セットも可能である。さらに、実施例において、命令セット304は、ユーザレベル制御トランスファ命令およびユーザレベルモニタリング命令として知られる2つの命令を含む。ユーザレベル制御トランスファ命令の例はSXFR命令である。ユーザレベルモニタリング命令の例はSEMONITOR命令である。ユーザレベル制御トランスファ命令およびユーザレベルモニタリング命令の理解を促すため、SXFR命令およびSEMONITOR命令の例が説明される。
広くは、SXFR命令は、第1のシーケンサから第2のシーケンサへ信号を送るために使用され、SEMONITOR命令は、第1のシーケンサからの信号をモニタするように第2のシーケンサを設定するために使用される。さらに、これらの制御トランスファおよびモニタリング命令は、後に説明するようにシーケンサ認識され、さらにシーケンサ認識な複合命令を構成することができる。
図3Bは、2つ以上の命令シーケンサを備えるプロセッサの実施例の論理図を示す。命令シーケンサは、その命令セットの中にユーザレベル制御トランスファ命令およびユーザレベルモニタ命令を含む。プロセッサ332は、異なるスレッドを実行するべく1つ以上の命令シーケンサ338−342を含んでよい。実施例において、複数の命令シーケンサは、デコーダユニットおよび/または命令実行ユニットを共有することができる。同様に、各命令シーケンサは、第1デコーダユニット334のようなデコーダユニット、第1命令実行ユニット335のような命令実行ユニット等を含む、それ自体専用のプロセス命令パイプラインを有し得る。複数の命令シーケンサ338−342の少なくともいくつかは、ユーザレベルモニタリング命令(例えばSEMONITOR命令)、ユーザレベル制御トランスファ命令(例えばSXFR命令)、シーケンサ認識格納命令(例えばSSAVE命令)、およびシーケンサ認識回復命令(例えばSRSTOR命令)を少なくとも含む命令セット344を含む。または、シーケンサ認識格納および回復命令は、命令セット344の一部でなくてもよい。むしろ、ユーザレベル制御トランスファおよびモニタリング命令が命令セットの一部であり、それゆえハンドラコードに対するシナリオおよびポインタとともに使用されてシーケンサ認識格納および回復命令を構成する。シナリオのタイプは、マイクロアーキテクチャイベントに基づくアーキテクチャ上で規定された複合トリガ条件であり、後に説明する。
制御トランスファオペレーションのフローは以下のように生じる。
ユーザレベルモニタリング命令346の第1例は、命令シーケンサの1つ、ハンドラコードの位置に対するポインタおよびいくつかの制御トランスファシナリオの1つを特定する。モニタリング命令346によって、第1命令シーケンサ338のような実行命令シーケンサは、特定の命令シーケンサをセットアップし、特定の制御トランスファシナリオの信号を認識または受信するときに特定のメモリ位置のハンドラコードを呼び出す。ハンドラコードを格納する第1メモリ位置348は、レジスタ、キャッシュまたは他の類似する格納デバイスである。ユーザレベルモニタリング命令346が実行されて、最初に特定のターゲット命令シーケンサをセットアップし、制御トランスファ信号を、ソース命令シーケンサがこの制御トランスファ信号を送信する前に受信する。
第1命令シーケンサ338のような実行命令シーケンサは、シーケンサ認識保存命令を実行して、ターゲット命令シーケンサのコンテキスト状態を保存する。デスティネーション命令シーケンサのコンテキスト状態は、第2メモリ位置350に格納される。第2メモリ位置は、共有メモリアレイ内のまたは第1メモリ位置とは別個のメモリ領域の異なる位置であってよい。
制御トランスファ命令352の第1例は、命令シーケンサの1つおよび多くの制御トランスファシナリオの1つを特定する。特定された制御トランスファシナリオは、例えばテーブル354に格納される。制御トランスファ命令352によって、実行命令シーケンサは、第2命令シーケンサ340のような特定されたターゲット命令シーケンサによって受信される制御トランスファ信号を発生する。
特定されたターゲット命令シーケンサ340は、その命令シーケンサを特定する制御トランスファ命令352の実行に応答して生成された制御トランスファ信号を検知する。次に、特定されたターゲット命令シーケンサ340は、その命令シーケンサを特定したモニタリング命令346が特定したハンドラコードを実行する。
ハンドラコードの実行が完了した後、第1命令シーケンサ338(すなわちソース命令シーケンサ)は、シーケンサ認識回復命令を実行して、ターゲット命令のコンテキスト状態を第2メモリ位置350のその位置から回復する。
実施例において、プロセッサはマルチシーケンサハードウェアを含んでよい。各命令シーケンサは、異なるスレッドを実行することができる。複数の命令シーケンサの少なくともいくつかは、ユーザレベル命令を実行することができる。ユーザレベル命令はシーケンサ認識される。ユーザレベル命令の各々は、複数の命令シーケンサの少なくとも1つを特定する情報を含む。実行シーケンサ上での命令の実行によって、実行命令シーケンサは、複数の命令シーケンサの特定された1つに対して、オペレーティングシステムの介入なしにスレッド管理オペレーションを行う。スレッド管理オペレーションはスレッド生成、スレッド制御またはスレッド同期オペレーションであってよい。ユーザレベル命令の例は、以下により詳細に説明されるシーケンサ認識SXFR、SEMONITOR、SSAVEおよびSRSTR命令を含む。
実施例において、SXFR命令は、図面の図4Aに示す命令フォーマットを含む。図4Aを参照すると、SXFR命令がオペコード400Aおよびオペランド402Aから410Aを含むのがわかる。オペランド402Aは、信号が送信されるデスティネーション/ターゲットシーケンサのためのシーケンサID(SID)に対応する。オペランド404Aはシナリオまたは制御メッセージを含む。シナリオまたは制御メッセージは、アーキテクチャ上で規定されて条件または予測イベントを表す識別子コードである。シナリオは、以下に説明するように非同期制御トランスファに影響を与えるために使用される。図面の図6Aを参照すると、本発明の1つの実施例に係るシナリオのテーブルが示される。広くは、シナリオは、イントラシーケンサシナリオおよびインターシーケンサシナリオに分割される。実施例において、イントラシーケンサシナリオは、リソースノットアベイラブル(RNA)のカテゴリに該当する。このカテゴリは、シーケンサ上では利用できないリソースへのアクセスに起因してシーケンサ上での実行中に生成されるイベントのカテゴリである。実施例において、RNAのカテゴリに該当するシナリオは、ページフォールト、OSのサービスを直接アクティベートすることができるOS隔離シーケンサ上のシステムコール、または非推奨オペレーションフォールトを含む。非推奨オペレーションフォールトは、シーケンサに実装されたISAフィーチャの限定されたまたは非推奨のサブセットによって生じるフォールトである。例えば、非推奨オペレーションフォールトは、浮動小数点加算器を要求する命令を実行しようとするときに、浮動小数点加算器を物理的に実装しないシーケンサ上で生じる。当業者にとっては、ここに記載のメカニズムを、アプリケーションソフトウェア、システムレベルソフトウェアもしくはマイクロコードのようなファームウェア、またはハードウェアに、異なるレベルのアブストラクションで実装することができる。
インターシーケンサシナリオの例には、「INIT」シナリオ、「FORK/EXEC」シナリオおよび「PROXY」シナリオと称される初期化シナリオが含まれる。INITシナリオは、SIDがSXFR命令において特定されたシーケンサによってシーケンサ固有のアーキテクチャ状態(例えば汎用レジスタまたはマシン固有制御レジスタ)のセットがそれぞれ初期値のセットに初期化されるようにする一方で、FORK/EXECシナリオは、SXFR命令におけるデスティネーションSIDによって特定されたシーケンサ上での並列スレッドの実行を分岐または開始するようにSXFR命令を実行するシーケンサ上でのスレッド実行を、少なくとも命令ポインタ(EIP)および/またはスタックポインタ(ESP)を含むデスティネーションシーケンサ状態に所定値をセットすることによって行う。PROXYシナリオは、SXFR命令におけるSIDによって特定されるシーケンサを、例えばSXFR命令を実行したシーケンサに代わって命令を処理するために、プロキシ実行モードで動作させる。例えば、実施例において、プロキシ実行モードで動作するシーケンサは、非推奨セットのISAフィーチャのみをサポートするシーケンサ上では処理できない命令を処理するために使用される。実施例において、PROXYシナリオは、BEGIN_PROXYシナリオおよびEND_PROXYシナリオに分割される。BEGIN_PROXYシナリオは、上述のように命令シーケンサをプロキシ実行モードでオペレーションさせる一方で、END_PROXYシナリオは、プロキシ実行モードのオペレーションを終了させる。
図面の図4Aを再び参照すると、実施例において、オペランド406Aは、SXFR命令を実行するシーケンサ上での命令実行を条件付ける条件パラメータを含む。条件パラメータの例には、「WAIT」および「NOWAIT」パラメータが含まれる。例えば、SXFRがPROXYシナリオとともに使用される場合、WAIT条件パラメータは、SXFR命令を実行するシーケンサ上での命令実行を、別のシーケンサ上でのプロキシ実行の完了を待つ間ストップさせる。NOWAIT条件パラメータは、SXFR命令を実行するシーケンサ上での実行が、別の命令シーケンサ上でのプロキシ実行と並列して続行することを規定する。
実施例において、オペランド408Aは、シナリオ固有のペイロードまたはデータメッセージを含む。例えばFORK/EXECシナリオの場合においては、ペイロードは命令ポインタを含む。その命令ポインタにおいて、オペランド402Aによって特定されたシーケンサ上での実行が開始する。異なる実施例によれば、ペイロードは、命令ポインタ、スタックポインタ等を含んでよい。ペイロードに含まれるアドレスは、リテラル、レジスタ間接およびベース/オフセットのアドレシングのような様々なアドレシングモードで表される。
オペランド410Aは、オペランド402Aに含まれるSID上でのルーティング機能を特定する。ルーティング機能は、SXFR命令を実行した結果として生成される信号が、ブロードキャスト、ユニキャストまたはマルチキャスト信号として送信されるかを制御する。ルーティング機能はまた、信号を搬送するルーティングにおける基礎となるインターシーケンサ相互接続を補助するために使用可能なトポロジ固有のヒント情報をエンコードすることもできる。
ここで図面の図4Bを参照すると、本発明の1つの実施例に係るSEMONITOR命令のフォーマットが示される。見てわかるように、SEMONITOR命令には、オペコード400Bおよびオペランド402Bから406Bが含まれる。オペランド402Bは、例えばシナリオIDによって表されるシナリオを特定する。オペランド404Bは、シーケンサID(SID)および命令ポインタ(EIP)を含むタプルを特定する。記載上の便宜のため、タプルは「SIDEIP」と称することにする。
SEMONITOR命令は、オペランド402Bにおいて特定されるシナリオを、オペランド404Bにおいて特定されるSIDEIPにマッピングする。したがって、SEMONITOR命令は、図面の図6Bに示すような、各シナリオを特定のSIDEIPにマッピングするマッピングテーブルを生成するために使用される。シナリオから特定のSIDEIPへのマッピングの各々には「サービスチャネル」という用語を用いる。オペランド406Bは、プログラマが1つ以上の制御パラメータを入力することを可能にする。制御パラメータは、以下に詳細を説明するように、特定のサービスチャネルがどのようにサービスされるかを制御する。プログラマはSEMONITOR命令を使用して、所定のシナリオをモニタするために特定のシーケンサが使用するサービスチャネルをプログラムすることができる。実施例において、シナリオに対応して予測された条件が認識された場合、シーケンサは、シナリオにマッピングされたSIDEIPにおいて開始するイールドイベントハンドラへの非同期制御トランスファを生じるイールドイベントを受ける。例えば、フォールトに対応して予測された条件の場合、ひとたび制御イールドイベントが生じると、現行(リターン)命令ポインタは現行スタック上にプッシュされ、認識されたシナリオにマッピングされたSIDEIPに制御がトランスファされる。トラップに対応して予測された条件の場合、次命令ポインタが現行スタック上にプッシュされ、認識されたシナリオにマッピングされたSIDEIPに制御がトランスファされる。フォールトは命令を、その命令が実行される前に処理してよい。トラップは命令を、その命令が実行された後に処理してよい。
実施例において、アーキテクチャ上で規定されたブロックビットは、イールドイベントの再帰トリガをブロックビットがリセットされるまで防止するためにセットされる。特定のリターン命令はブロックビットを自動的にリセットし、イールドイベントハンドラから、実行されてイールドイベントを生成したオリジナルコードに制御を戻す。上述に基づくと、SXFRおよびSEMONITORの両方は、それらが所定のシーケンサを特定するオペランドを含むという点で、「シーケンサ認識」であることがわかる。さらに、後述するSSAVEおよびSRSTOR命令もまた、それらが所定のシーケンサを特定するオペランドを含むという点で、「シーケンサ認識」であることがわかる。また、これらのユーザレベル命令も、ハンドラコード内の命令に対するポインタを有するという点で、「シーケンサ認識」であることがわかる。命令実行ユニットによる実行時のハンドラコードは、そのハンドラコードが実行される場合の1つ以上の固有の命令シーケンサを参照する。ハンドラコードはユーザレベル命令に関連付けられる。というのは、ユーザレベル命令が命令ポインタにハンドラコードの開始を指示するからであり、かつ、ユーザレベル命令がハンドラコードが実行を終了した後にスレッドのオペレーションを指示するからである。したがって、ユーザレベル命令が1)1つ以上の命令シーケンサへの特定の参照を行うフィールド、または2)ハンドラコードが実行される場合に1つ以上の命令シーケンサを特定的にアドレシングするハンドラコードへのポインタによる暗黙的参照のいずれかを有する場合に、ユーザレベル命令はシーケンサ認識となる。
実施例において、命令SXFRおよびSEMONITORは、図面の図5に関連して説明されるインターシーケンサ制御トランスファを実行するために使用される。
図5を参照すると、シーケンサ500は、命令ポインタ「I」においてSXFR命令に遭遇すると、シーケンサ502に制御をトランスファし、シーケンサ502に、命令ポインタ「J」において始まるハンドラ命令の実行を開始させる。実施例において、例えばSXFR(502,BEGIN_PROXY,NOWAIT)のようなSXFR(SID,SCENARIOJD,CONDITIONAL_PARAMETER)フォーマットのSXFR命令が、制御トランスファに影響を与えるために使用される。SXFR命令のフォーマットをさらに詳細に見ると、命令に現れる「SID」は、シーケンサ502に対するシーケンサ識別子(SID)を参照する。命令の「SCENARIOJD」部分は、上述のように、非同期制御トランスファを引き起こすシステム100Aおよび100Bにプログラム可能なシナリオを参照する。上述のように、実施例において、システム100Aおよび100Bは、図面の図6Aにシナリオテーブルで示すシナリオをサポートする。各シナリオは、シナリオ識別子(ID)にエンコードされる。実施例において、特定のシナリオIDに対応する値はレジスタにプログラムされ、SXFR命令が実行されると、レジスタから読み出される。
実施例において、SXFR命令の「SCENARIOJD」部分に関連する命令ポインタをリゾルブするために、各シナリオをSIDEIPにマッピングする図6Bのマッピングテーブルが使用される。
上述のように、図6Bのテーブルをサービスチャネルによって満たすために、SEMONITOR命令が使用される。例えば、SEMONITOR(SCENARIOJD,SIDEIP)フォーマットの命令SEMONITOR(1,(502,J))は、シーケンサ502上の命令ポインタ「J」を、SCENARIOJD=1で示されるシナリオ、すなわちBEGIN_PROXYシナリオ、にマッピングする。シーケンサ500上での命令SXFR(502,1)の実行によって、1のSCENARIOJDを含む信号は、シーケンサ502に搬送される。
信号に応答して、シーケンサ502は、BEGIN_PROXYシナリオに関連するハンドラコードが始まる命令ポインタ「J」への制御トランスファを引き起こすイールドイベントを受ける。実施例において、信号受信に応答して命令ポインタ「J」で開始するハンドラコードを即座に実行する代わりに、シーケンサ502はいくつかの受信信号をキューに入れ、ひとたびそのいくつかの信号がしきい値を越えるとシーケンサ502は、その様々な信号に関連するハンドラコードを実行することによって信号を扱う。実施例において、シーケンサ502が信号を処理する具体的な方法、すなわち即座処理するかまたはキューを使用して遅延処理するか、およびそのしきい値は、SEMONITOR命令の制御パラメータ406Bによって制御または設定される。要求をこうしてキューに入れることは、ソフトウェアで同様に行うこともできる。
実施例において、ハンドラコードは、サービススレッドに命令シーケンサ502上で実行開始させる命令を含む。
基本的には、サービススレッドは、別のシーケンサすなわち図5の場合におけるシーケンサ500上で実行される第1スレッドの実行を援助または補助する任意のスレッドである。サービススレッドがシーケンサ502上で実行されるようにするためには、シーケンサ500と502との間でなんらかの形態の状態トランスファが必要となる。
実施例において、シーケンサ固有のコンテキスト保存命令およびシーケンサ固有コンテキスト回復命令は、SXFRおよびSEMONITOR命令に対して付加的に与えられる。シーケンサコンテキスト保存命令はSSAVEとして示され、シーケンサコンテキスト回復オペレーションはSRSTORとして示される。SSAVEおよびSRSTORは両方ともシーケンサ認識命令である。その代わりに、最小限の標準命令セットがSXFRおよびSEMONITOR命令のみを含んでもよい。例えば、実施例において、シーケンサコンテキスト保存および/または回復のためのシナリオが規定される。SXFRおよびSEMONITOR命令が、ハンドラコードに対するシナリオおよびポインタに関連して使用される場合。ターゲットシーケンサ上の対応するハンドラコードは、各シーケンサコンテキスト保存および/または回復オペレーションを行うことができて、専用のSRSTORおよびSSAVE命令と同じ効果を達成する。
別の実施例において、シーケンサ認識コンテキスト保存命令は、コードブロックをマッピングしてシーケンサ認識コンテキスト保存を行うシナリオを有することによって合成できる。同様に、シナリオを使用してシーケンサ認識コンテキスト回復オペレーションを合成することもできる。
実施例において、SSAVEおよびSRSTOR命令の両方は、SID1に対応するオペランドと、SIDオペランドによって特定されるシーケンサの状態が保存されるべき「保存領域」に対するアドレスを含むオペランドとを含む。図5の実施例において、シーケンサ502が、シーケンサ500上で動作する第1スレッドの実行を容易にするかまたは補助するサービススレッドを実行できるためには、シーケンサ502がその第1スレッドに対する実行コンテキストへのアクセスを有することが必要である。シーケンサ502にとって利用可能な第1スレッドのための実行コンテキストを作るためには、命令SSAVEがシーケンサ502上で最初に実行されて、シーケンサ500上で実行される第1スレッドのための実行コンテキストを第1メモリ位置512に保存する。シーケンサ500に代わってサービススレッド計算を実行する前にシーケンサ502上で済んだ既存のワークを保存するために、502上で現在実行されているコード(以下「先行コード」)は、SSAVEを実行して先行コードの実行コンテキストを第2メモリ位置514に保存する。保存領域、第1メモリ位置512および第2メモリ位置514は重複しない。
ひとたび先行コードの実行コンテキストが第2メモリ位置514に保存されると、シーケンサ502は、第1メモリ位置512を示すSRSTOR命令を実行し、シーケンサ502のシーケンサ状態を、シーケンサ500上の第1スレッドの処理に関連する実行コンテキスト/状態に変更する。その後、シーケンサ502は、サービススレッドの実行を開始する。サービススレッドの実行中、シーケンサ500のオプションには、サービススレッドを待って実行を完了すること、または切り替えて第2スレッドを実行することが含まれる。ひとたびサービススレッドがシーケンサ502上での実行を完了すると、シーケンサ502はSXFR命令を実行して、サービススレッドの実行が完了したことを示すべく信号をシーケンサ500に送信する。サービススレッドの実行が完了したことを示すべくシーケンサ500に信号を送信する前に、シーケンサ502はSSAVE命令を実行して、サービススレッド完了後第1スレッドに対して更新された実行コンテキストを第1メモリ位置516に保存する。
シーケンサ500がサービススレッドの実行完了を待っている場合、シーケンサ502上のサービススレッドはその後SRSTORを実行して第3メモリ位置516を示すことができる。これにより、シーケンサ500上の第1スレッドの実行コンテキストは、シーケンサ500に通知してコード実行をレジュームするべくSXFRを実行する前に更新される。シーケンサ500にサービススレッドの完了を通知した後。
または、シーケンサ502からサービススレッドの完了を示す信号を受信したときに、シーケンサ500はSRSTOR(500,POINTER_TO_SAVE_AREA_B)命令を実行して、シーケンサ500の実行コンテキストをサービススレッドの完了時の第1スレッドの実行コンテキストに変更する。
実施例において、命令シーケンサのコンテキスト状態を保存および回復することはターゲットシーケンサ上で遠隔して行うことができる。ソースシーケンサは、メッセージをターゲット命令シーケンサに送信してそのシーケンサのコンテキスト状態を保存および/または回復する。これは、所定のシナリオを備えるSXFR命令として実行してもよい。
実施例において、スレッド管理ロジック114は、図面の図7を見てわかるように、プロキシ実行メカニズム700、およびシーケンサ隔離メカニズム702を含む。
プロキシ実行メカニズム700のオペレーションを説明するために、図面の図8に示すS1およびS2でそれぞれ示す2つのシーケンサを含むシステム800を考える。シーケンサS1およびS2は、互いに対称または非対称である。この例では、シーケンサは非対称であり、シーケンサS1は処理リソースAおよびBのみを含む一方、シーケンサS2は処理リソースA、D1およびCを含む。シーケンサS1の処理リソースは、命令ブロック1および2の実行をサポートできる必要がある。
時刻(T1)は命令ブロック2の矢印の先に位置する。T1は、モニタが、クライアント命令シーケンサS1からサーバント命令シーケンサS2へシングルスレッドを移動させるイベントを検知することを示す。時刻T1において、第3命令ブロックは、シーケンサS1上で実行されるようにスケジューリングされるが、第3命令ブロックは、シーケンサS1上で利用不可能な処理リソース、例えばシーケンサS2上で利用可能な処理リソースD、の使用を要求する。この時点では、シーケンサS1は、少なくとも実施例においてはリソースノットアベイラブルフォールトを受ける。ユーザレベルソフトウェアにおいて(またはスレッド管理ロジックハードウェアまたはファームウェアにおいて)規定されるリソースノットアベイラブルハンドラはプロキシ実行メカニズム700を呼び出し、第3命令ブロックをシーケンサS2上での実行のためにシーケンサS2に移動させる。
時刻(T2)は、第3命令ブロックの矢印線の始点に位置する。T2は、クライアント命令シーケンサS1に代わってサーバント命令シーケンサS2上でのシングルスレッドからの命令ブロックの実行開始を示す。
時刻(T3)は、第3命令ブロックの矢印の先に位置する。T3は、サーバント命令シーケンサS2上でのシングルスレッドからの命令ブロックの実行完了を示す。時刻t3では、処理リソースDを使用してのシーケンサS2上の第3命令ブロックの実行後、シーケンサS2は、プロキシ実行メカニズム700を使用して、シーケンサS1に第3命令ブロックの実行が完了したという信号を送る。
時刻(T4)は、第4命令ブロックの矢印線の始点に位置する。T4は、サーバント命令シーケンサS2上のシングルスレッドからの命令ブロックのプロキシ実行完了、およびクライアント命令シーケンサS1へ戻るトランスファを示す。シーケンサS1はその後、シーケンサS1上で利用可能な処理リソースのみを要求する第4命令ブロックの実行を進める。
上記の例においてはシーケンサS1はその代わりに命令ブロックの実行にシーケンサS2を使用するので、シーケンサS1は「クライアント」シーケンサと称される。クライアントシーケンサに代わってプロキシ実行モードで動作して命令ブロックを実行するシーケンサS2は、「サーバント」シーケンサとして知られる。リソースDは、限られたセットのアプリケーションのために高度に特化された機能ユニットを含む。機能ユニットは、比較的電力を必要とし、コストがかかり、および複雑であってよい。したがって、所定の実施例においてコストを節約するためには、リソースDは、シーケンサS2上にのみ実装され、シーケンサS1上には実装されない。しかし、上述のように、プロキシ実行メカニズム700は、マルチシーケンサシステムの様々なシーケンサ上で利用可能な処理リソースをマッピングすることによってマルチシーケンサシステムのシーケンサ間の非対称性をマスクする。このため、クライアントシーケンサは、プロキシ実行メカニズムを使用して、必要な処理リソースを有するかまたはスレッド実行に最適化されたシーケンサ上で実行されるべくスレッドを移動することができる。プロキシ実行メカニズム700はまた、例えば、図面の図11を参照して以下に詳細に説明されるようなページフォールトまたはシステムコール(syscall)のハンドリングのようなOSサービスを実行するために、OS隔離シーケンサ上で実行される命令ブロックをOS可視シーケンサに移動するためにも使用される。
非対称リソース構成によるマルチシーケンサシステムの所定の物理的実装のために、プロキシ実行メカニズム700は、上述のようなSEMONITORおよびSXFR命令を使用して構成され、マッピングメカニズムを含む。一般には、プロキシ実行メカニズム700は、ハードウェア内、ファームウェア(例えばマイクロコード)内またはシステムソフトウェア層もしくはアプリケーションソフトウェア層に存在する。実施例において、プロキシ実行メカニズム700は、SEMONITORおよびSXFR命令を使用して2つのカテゴリのプロキシサービスをハンドルする。第1カテゴリは出口サービスシナリオとして知られる一方で、第2カテゴリは入口サービスシナリオとして知られる。クライアントシーケンサでは、そのクライアントシーケンサにおいて利用不可能または物理的にサポートされないリソースのセットおよびその関連オペレーションに対しては、出口サービスシナリオが規定されてこれらのオペレーションをトラップするかまたはフォールトにする。各出口シナリオは、サーバントシーケンサに向けられるシーケンサID(および命令ポインタ(SIDEIP))にマッピングされる。マッピングはハードウェア、ファームウェアまたはソフトウェアであっても達成できる。その後サーバントシーケンサのプロキシアクセスは、上述のように、インターシーケンサ信号の交換を使用して達成される。
サーバントシーケンサは、クライアントシーケンサには存在しないがサーバントシーケンサには存在するリソースへのプロキシアクセスをサポートする役割がある。入口サービスシナリオは、サービスチャネル内に規定および設定されて、クライアントシーケンサに代わってプロキシ実行を行うローカルサービスハンドラ(ハンドラコード)にマッピングされる。出口および入口サービスシナリオのサンプルリストは図6Aのテーブルに与えられる。
1つの意味では、出口サービスシナリオは、クライアントシーケンサ上では利用不可能であるがサーバントシーケンサ上では利用可能な処理リソースへのアクセスが要求されたことに起因して、クライアントシーケンサにおいて「ミス」を受けるトラップまたはフォールトオペレーションに対応する。逆に、入口サービスシナリオは、ローカル処理リソースを有しないクライアントシーケンサに代わって、サーバントシーケンサ上で利用可能なローカル処理リソースにアクセスする要求の到達を示す非同期割り込み条件に対応する。プロキシ実行メカニズムは、マルチシーケンサ内の各シーケンサに関連するアブストラクションのベニヤまたは層を規定する。これにより、クライアントおよびサーバントシーケンサは協働してプロキシリソースアクセスを行う。プロキシ実行がファームウェアにまたは直接ハードウェアに実装される少なくとも1つの実施例において、プロキシリソースアクセスは、ユーザレベルソフトウェアおよびOSにとっては透明である。
各サービスシナリオは、従来的なISA内のオペコードと同様の役割を果たすが、サービスシナリオは特別なハンドラコードフローのトリガとなる点が異なる。したがって、メタ命令としてのSXFR命令を使用して新たな複合命令を合成することができる。合成される命令のためのハンドラコードに出口サービスシナリオがマッピングされる。実施例において、サービスシナリオIDとそのハンドラコードフローとの関係は、複合命令セットコンピュータ(CISC)オペコードとそれに対応するマイクロコードフローとの関係に類似する。CISCは、ユーザレベルシーケンサ認識モニタおよび制御トランスファ命令を、マイクロコードフロー構築のための標準命令基準として使用することによって作ることができる。上述のように、サービスシナリオとそのハンドラコードとの間のマッピングはSEMONITORを介して達成される一方で、SXFRは、シーケンサ間で制御メッセージが送信されるためのメカニズムを与える。制御メッセージの通信は、サービスシナリオにマッピングされたハンドラコードの実行のためのトリガとして動作する。
実施例において、シーケンサ隔離メカニズム702は、論理プロセッサを形成するべく、OS可視およびOS隔離シーケンサの所定の組み合わせをマッピングまたはグルーピングするために使用される。マッピングは、多数のOS隔離シーケンサにマッピングされる単数のOS可視シーケンサを含む1対多のマッピング、または多数のOS隔離シーケンサにマッピングされる多数のOS可視シーケンサを含む多対多のマッピングであってよい。例えば、図9は、2つの論理プロセッサ900および902をそれぞれ含むマルチシーケンサシステムを示す。論理プロセッサ900および902は各々、単数のOS可視シーケンサが多数のOS隔離シーケンサにマッピングされる1対多マッピングを含む。
図10を参照すると、マルチシーケンサシステム1000の例は、18のシーケンサの集合を含む。ここでは、2つのOS可視シーケンサが、16のOS隔離シーケンサにマッピングされて多対多マッピングを規定する。システム1000の論理プロセッサ内では、両方のOS可視シーケンサがOS隔離シーケンサのいずれかに対するプロキシとして機能する。
実施例において、シーケンサ隔離メカニズム702は、シーケンサを選択的にOS制御から隔離する。本発明の異なる実施例によれば、シーケンサはブート後に隔離されてもよく、場合によってはブート時の最中でさえあってもよい。OS制御のもとでシーケンサを隔離するために、シーケンサ隔離メカニズム702は、シーケンサが利用不可能状態にあることを特定するインジケータをOSにセットする。例えば、シーケンサ隔離メカニズム702は、シーケンサの電力または電力/パフォーマンス状態を偽装して、シーケンサが特別な利用不可能状態に入ったことをOSに示す。これにより、OSは、シーケンサがオーバーロードになりすぎたかまたは熱くなりすぎて、そのシーケンサに対する計算またはスケジューリングの命令をディスパッチできないとみなす。実施例において、インテルSpeedStep(著作権)テクノロジのような省電力メカニズムを実装するシーケンサに対しては、シーケンサ隔離メカニズム702は、OS可視シーケンサの所定のサブセットを特別な電力状態に切り替えてシーケンサのサブセットが利用不可能状態にあることを示す。これにより、OSは、これらのシーケンサのサブセットをオーバーロード状態とみなすので、シーケンサのサブセットに計算をディスパッチすることがない。OSにとって透明な場合は、SXFRおよびSEMONITOR命令が使用されて隔離シーケンサに対する計算またはスレッドをスケジューリングする。
実施例において、ひとたび隔離シーケンサがスレッド実行を完了すると、隔離シーケンサの制御はOSに引き渡される。これは、隔離命令シーケンサがもはや利用不可能状態にはないということをOSに示すためのインジケータをセットするメカニズムによって達成される。
実施例において、隔離命令シーケンサの特権状態は、依然OS制御下にある非隔離命令シーケンサの対応する特権状態に同期される。
一般に、汎用M:Nマルチスレディングパッケージ、すなわちM個のスレッドをN個のシーケンサにマッピングするもの(ここでM>>N)、を標準でサポートするためには、必要最小限のビルディングブロック同期オブジェクトがクリティカルセクションおよびイベントとなる。
これらの同期オブジェクトによって、ミューテックス、条件変数およびセマフォのような高レベルの同期オブジェクトを構成することができる。クリティカルセクションは、ハードウェアロックプリミティブを介して実装することができる。隔離シーケンサは、非隔離シーケンサから状態を承継することができる。これにより、仮想メモリのビューが隔離シーケンサおよび非隔離シーケンサの両方に対して同じになる。イベントは、SXFRおよびSEMONITOR命令によって合成されたイベント駆動マルチシーケンサスケジューラ(集中型または分散型)によってサポートすることができる。例えば、クリティカルセクションによって保護されるグローバルタスクのキューを有する単純なPOSIX準拠または互換の分散型スケジューラが生成される。各シーケンサは、スケジューラの1つのコピーを有効に実行し、シーケンサ上で実行する次の実行可能タスクスレッドをつかむために競合してタスクキューのヘッドへアクセスしようとする。シーケンサ上の1つのタスクが、ミューテックス、条件変数またはセマフォのような同期変数を待っている場合には、タスクはイールドを介してスケジュール解除され、対応クリティカルセクションに入った後にグローバルタスクキューのテールに置かれる。
現代のOSのスレッドライブラリのほとんどにおいてスレッドプリミティブが広範に採用されていることに起因して、これらのPOSIX準拠または互換スレッドライブラリのトップに構築された大多数の既存のスレッドコードを、マルチシーケンサ環境に移植することが可能となる。必然的に、スレッド中のヘッダファイルは再マッピングされてレガシースレッドコードが再コンパイルされなければならない。
SFXRおよびSEMONITOR命令ならびにINITシナリオを使用することによって、OSなしで、OS隔離シーケンサ上でのスレッド実行をスケジュールすることが可能となる。したがって、ここに開示の技術に基づけば、OSによりサポートされないマルチシーケンサシステムのシーケンサ上でのスレッドのユーザレベルスケジューリングをOSがサポートかつ許可できるよりも多くのシーケンサを備えるマルチシーケンサシステムを構築することが可能となる。
したがって、実施例において、拡張命令セットを備える複数の命令シーケンサは、OSによりネイティブサポートされるよりも多数のプロセッサ上でシングルイメージOSをサポートすることもできる。例えば、4ウェイ命令シーケンサをサポート可能なOSが、実際には32ウェイ命令シーケンサシステムを有するハードウェア実装のためのOSとして実装できよう。これにより、アプリケーションは、OSによりサポートされるシーケンサ数の制限よりも多くのプロセッサを使用することができる。命令シーケンサは、非対称シーケンサまたは対称シーケンサである。
ここで、マルチシーケンサシステムにおけるプロキシ実行に対する1つの実施例を説明する。マルチシーケンサシステムには、OS可視なシーケンサもあればOS不可視なシーケンサもある。一般に、OS不可視シーケンサ上で動作するコードが、OSサービスを要求するページフォールトまたはシステムコールを受けるとき、プロキシ実行メカニズムは確実に所定のハンドリングを行う。ここで図面の図11を参照すると、OSサービスに影響を与えるために実行されるオペレーションのフローチャートが示される。このオペレーションは、シーケンサIDがSID1のOS隔離シーケンサ上で、プロキシ実行のためのトリガイベントに応答して実行される。トリガイベントに遭遇すると、OS隔離シーケンサSID1は1100にて、命令SSAVE(1,ST_1_0)を実行する。トリガイベントは、トラップ、ページフォールトまたはシステムコールのようなOSサービスを要求するアーキテクチャ状態の所定の実行条件であってよい。この命令は、実行によってトリガイベントを生成したスレッドの実行コンテキストを保存する。説明の便宜上、スレッドの実行コンテキストのための保存領域には、少なくとも1つの実施例ではアクセスがページフォールトを引き起こさない(ST_1_0)が指定される。1102において、SXFR命令は、出口サービスシナリオ「BEGIN_PROXY」をOS可視シーケンサSID0に渡すべく実行される。なお、シーケンサSID1上での命令の処理は、シーケンサSID0上でのプロキシ実行スレッドの完了がペンディングのままブロックされる。これは、1102において実行されたSXFR命令が条件パラメータ「WAIT」を含んでいたからである。1104において、シーケンサSID0は、シーケンサSID1からの信号を検知し、現行スレッドの実行を譲られる(yield)かまたは「一時的にサスペンド」する。1106において、SSAVE命令が実行されて、シーケンサSID0に関連する実行コンテキストまたは状態が保存される。実行コンテキスト保存領域には、ST_1_0と重複しない「ST_0_0」が割り振られる。1108において、プロキシビットは1にセットされ、シーケンサSID0がプロキシ実行モードで動作していることを示す。1110において、コンテキスト回復オペレーション(SRSTOR)は、SID1上のページフォールトに関連する実行コンテキストの状態「ST_1_0」をコピーするべく実行される。1112において、ページフォールトは、シーケンサSID0上で複製または偽装される。1114において、リング遷移が行われて制御がOSに切り替えられる。OSはページフォールトをサービスする。OSサービスが完了すると、END_PROXYシナリオがイントラシーケンサイールドイベントとして生じる。これは、OSからユーザレベルへの特権レベル切替(すなわちリング遷移)時、かつ、プロキシビットがONの場合に生じる。END_PROXYシナリオに起因するイールドイベントハンドラでは、1116にて、コンテキスト保存が行われて実行コンテキスト「ST_1_1」が保存される。1118において、プロキシビットは0にセットされる。1120において、SXFR命令が実行されて、サービスシナリオ「END_PROXY」がシーケンサSID1に渡される。1122において、シーケンサSID0は状態ST_0_0を回復する。1124において、「END_PROXY」シナリオを受信するとシーケンサSID1は譲られて、1126にてコンテキスト「ST_1_1」を回復する。これにより、トリガイベントに遭遇したスレッドの実行が再開する。
実施例において、プロキシ実行は、ユーザレベルスレッド実行時のアプリケーションレベルプログラム制御下での、OS可視命令シーケンサと命令シーケンサとの間の非対称条件検知に応答するユーザレベルスレッドの移動であってよい。
命令シーケンサ間の非対称条件には、リング/特権レベル遷移要求のような以下の条件が含まれる。ページフォールトまたはシステムコール、ユーザレベルスレッドを実行する命令シーケンサによる命令能力の欠如(例えば、1つのシーケンサ上の所定命令の非推奨および結果として生じる無効オペコードフォールト)、2つの命令シーケンサ間の命令実行パフォーマンスの相違が含まれる。
プロキシ実行時の状態の移動はヘビーウェイトであってもライトウェイトであってもよい。ヘビーウェイトの移動は、トランスファシーケンサから保存されて受信シーケンサ上に回復されるフルレジスタ状態である。ヘビーウェイトの移動は、トランスファシーケンサのために受信シーケンサ上で実行されたユーザレベルスレッドからの少なくとも1つの命令を有する。ヘビーウェイトの移動によって、実行されるユーザレベルスレッドは、トランスファ命令シーケンサに代わって1つ以上の命令を実行した後に受信シーケンサにとどまるかまたはトランスファシーケンサに戻ることが可能となる。
ライトウェイトの移動には多くのバラエティーがある。アイディアは所定の状況に対して合理化する(streamline)ことにある。ライトウェイトの移動には、いくらかの少量の状態をトランスファすることが含まれる。これにより、所定の小タスクがハンドルされる。いくつかのライトウェイト移動シナリオにおいては、ユーザレベルスレッドからの命令は−例えばページフォールトの状況において−実際には実行されない。アプリケーションレベルプログラム制御下の命令シーケンサは、ページフォールトを引き起こすアドレス上でのみトランスファする。受信シーケンサは、ページがロードされるようにするプローブロードを実行するのみであり、その後、この所望のタスクが完了したことをアプリケーションレベルプログラム制御下の命令シーケンサに伝え返す。したがって、移動とは、移動ユーザレベルスレッドからの命令が実際に実行されたことを意味しない。
したがって、プロキシ実行は、ユーザレベルスレッドを実行している第1命令シーケンサ「に代わる」または「から生じる」動作を第2命令シーケンサが行うときはいつでも原則的に発生する。
ページフォールトのライトウェイトハンドリングに対する実施例において、プロキシ実行の1つの側面には以下が含まれる。アプリケーションレベルプログラムの制御下にある第1命令シーケンサ内のユーザレベルスレッドにおける命令実行のサスペンド。アドレスポインタを、アプリケーションレベルプログラムの制御下にある第1命令シーケンサからOS可視命令シーケンサにトランスファすること。OS可視命令シーケンサによるアドレスポインタでの内容のロード。最後に、アドレスポインタでの内容のロード完了後に、アプリケーションレベルプログラムの制御下にある命令シーケンサにおいて第1ユーザレベルスレッドの実行をレジュームすること。
プロキシ実行の別の側面には、OS隔離命令シーケンサからOS可視命令シーケンサへの制御および状態情報のトランスファが含まれる。また、OS隔離命令シーケンサ上の第1ユーザレベルスレッドからOS可視命令シーケンサへの少なくとも1つの実行の移動によって、OS可視命令シーケンサは、オペレーティングシステムがOS隔離命令シーケンサに代わってOSオペレーションを行うトリガとなる。
図面の図12は、本発明の1つの実施例に係る処理システム1200を示す。わかるように、システム1200には、格納デバイス1204に接続された処理コンポーネント1202が含まれる。実施例において、処理コンポーネント1202には複数の命令シーケンサが含まれる。そのうちの2つのみが、各々1206Aおよび1206Bと指定されて図面の図12に示されている。処理コンポーネント1202にはまた、信号交換メカニズム1210およびモニタリングメカニズム1212を有する制御トランスファメカニズム1208が含まれる。信号交換メカニズム1210は、処理コンポーネント1202のシーケンサ間でシナリオ/制御トランスファメッセージを送信するために使用される。したがって、実施例において、信号交換メカニズム1210には、上述のSXFR命令を実行するための論理が含まれる。モニタリングメカニズム1212は、処理コンポーネント1202の命令シーケンサのいずれかをセットアップして、所定の制御メッセージ/シナリオを含む信号をモニタするために使用される。実施例において、モニタリングメカニズムには、上述のSEMONITOR命令をデコードするための論理が含まれる。
処理コンポーネント1202にはまた、上述のように、シーケンサ隔離メカニズム1214も含まれる。
格納デバイス1204には、オペレーティングシステムが含まれる。実施例において、オペレーティングシステムは、コンテキスト切替を行う。以前のタスクのレジスタ状態すべてを格納し、次のタスクのレジスタ状態すべてを回復する。
処理コンポーネント1202内では様々な技術が使用されて、例えば、シーケンサ1206Aからの所定信号をモニタするべくシーケンサ1206Bをセットアップする。実施例において、シーケンサ1206Bは、所定の制御メッセージ/シナリオを搬送する信号をモニタするべく予め設定される(すなわち、なんらユーザ設定ステップが要求されることがない)。したがって、実施例において、シーケンサ1206Bは、INITシナリオを搬送する信号をモニタするべく予め設定される。なお、シーケンサ1206B上で初期化コードの実行をトリガするためにはSXFRのようなユーザレベル命令が使用されることに留意されたい。初期化コード自体にはSEMONITOR命令が含まれる。SEMONITOR命令が使用されて、シーケンサ1206Aからの所定の信号(シナリオ)をモニタするべくシーケンサ1206Bがセットアップされる。
別の実施例において、シーケンサ認識SEMONITOR命令がシーケンサ1206A上で実行される。これにより、シーケンサ1206Bは、シーケンサ1206Aからの所定の信号/シナリオをモニタできる。別の実施例において、ブートストラップ/初期化コードを格納するメモリ位置へのポインタは、上述のSSAVE命令を使用して、シーケンサ1206Aのためのコンテキストの一部として保存される。この実施例に対しては、シーケンサ1206B上でSRSTOR命令を実行し、シーケンサ1206Aのためのコンテキスト/状態を回復することができる。これにより、ブートストラップ/初期化コードが実行できる。ブートストラップ/初期化コード自体には、シーケンサ1206Aからの所定の信号/シナリオをモニタするべくシーケンサ1206Bをセットアップする少なくとも1つのSEMONITOR命令が含まれる。
図13は、シーケンサ認識ユーザレベル命令を含む1つ以上のユーザレベルスレッドを実行するべく設定された1つ以上の命令シーケンサを有するCPUまたはチップセットのようなプロセッサコンポーネントの実施例を使用するコンピュータシステムの例のブロック図を示す。1つの実施例において、コンピュータシステム1300には、情報通信のための通信メカニズムまたはバス1311と、情報処理のためにバス1311に接続されるメイン処理ユニット1312のような集積回路コンポーネントとが含まれる。メイン処理ユニット1312またはチップセット1336のようなコンピュータシステム1300の1つ以上のコンポーネントまたはデバイスは、1つ以上のユーザレベルスレッドを実行するべく設定された命令シーケンサの実施例を使用する。メイン処理ユニット1312は、ユニットとして協働する1つ以上のプロセッサコアからなる。
コンピュータシステム1300にはさらに、メイン処理ユニット1312によって実行される情報および命令を格納するべくバス1311に接続されたランダムアクセスメモリ(RAM)または他の動的格納デバイス1304(メインメモリと称する)が含まれる。メインメモリ1304はまた、メイン処理ユニット1312による命令実行中に一時的数値変数または他の中間情報を格納するために使用される。
ファームウェア1303は、電子的プログラマブルリードオンリーメモリ(EPROM)のような、EPROM上に記録されたルーチンに対するオペレーションを有するソフトウェアとハードウェアとの組み合わせである。ファームウェア1303には、基本コード、ベーシック入力/出力システムコード(BIOS)または他の同様なコードが組み込まれてよい。ファームウェア1303によって、コンピュータシステム1300が自分でブートすることが可能となる。
コンピュータシステム1300にはまた、メイン処理ユニット1312のための静的な情報および命令を格納するべくバス1311に接続されたリードオンリーメモリ(ROM)および/または他の静的格納デバイス1306が含まれる。静的格納デバイス1306は、OSレベルおよびアプリケーションレベルソフトウェアを格納する。
コンピュータシステム1300はさらに、コンピュータユーザに情報をディスプレイするべくバス1311に接続された、陰極管(CRT)または液晶ディスプレイ(LCD)のようなディスプレイデバイス1321が接続される。チップセットがディスプレイデバイス1321とのインターフェイスであってよい。
英数字および他のキーを含む英数字入力デバイス(キーボード)1322がまた、メイン処理ユニット1312へ情報およびコマンドの選択を通信するべくバス1311に接続される。付加的なユーザ入力デバイスは、メイン処理ユニット1312へ方向情報およびコマンドの選択を通信するべく、かつ、ディスプレイデバイス1321上でカーソルの動きを制御するべくバス1311に接続された、マウス、トラックボール、トラックパッド、スタイラスまたはカーソル方向キーのようなカーソル制御デバイス1323である。チップセットが入出力デバイスとのインターフェイスであってよい。
バス1311に接続される別のデバイスは、紙、フィルムまたは同様のタイプの媒体のような媒体上に命令、データまたは他の情報をプリントするべく使用されるハードコピーデバイス1324である。さらに、コンピュータシステム1300とのオーディオインターフェイスのためにスピーカおよび/またはマイクロフォン(図示せず)のような録音再生デバイスがオプションとしてバス1311に接続されてもよい。バス1311に接続される別のデバイスは、有線/無線通信機能1325である。
1つの実施例において、ルーチンを容易にするべく使用されるソフトウェアは、機械読み取り可能媒体に組み込むことができる。機械読み取り可能媒体には、機械(例えば、コンピュータ、ネットワークデバイス、パーソナルデジタルアシスタント、マニュファクチャリングツール、1つ以上のプロセッサのセットを有する任意のデバイス等)によってアクセス可能な形態で情報を提供(すなわち、格納および/または送信)する任意のメカニズムが含まれる。例えば、機械読み取り可能媒体には、記録可能/記録不可能媒体(例えば、ファームウェア、ランダムアクセスメモリ(RAM)、磁気ディスク格納媒体、光学格納媒体、フラッシュメモリデバイス等を含むリードオンリーメモリ(ROM))、および電気的、光学的、音響的または他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号等)が含まれる。
開発中に設計は、創造から製造シミュレーションまでの様々な段階を通る。設計を表すデータは、いくつかの方法でその設計を表す。まず、シミュレーションにおいて有用であるが、ハードウェアはハードウェア記述言語または機能記述言語を使用して表される。また、論理/ORトランジスタゲートを備える回路レベルモデルも設計プロセスのいくつかの段階で作られる。さらに、ほとんどの設計は所定の段階において、ハードウェアモデル中の様々なデバイスの物理的配置を表すデータのレベルに到達する。従来的な半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路を製造するために使用されるマスクに対する異なるマスク層上での様々なフィーチャの存在または不在を特定するデータである。設計のどの表し方においても、データはなんらかの形態の機械読み取り可能媒体に格納される。かかる情報を変換するべく変調または生成される任意の光波または電波、メモリ、またはディスクのような磁気もしくは光学ストレージは、機械読み取り可能媒体である。これらの媒体のいずれも、設計またはソフトウェア情報を「搬送」または「指示」する。コードまたは設計を指示または搬送する電気的搬送波が送信されると、電気信号のコピー、バッファまたは再送信が行われる程度まで新たなコピーが作られる。したがって、通信プロバイダまたはネットワークプロバイダは、本発明の技術を実現する物(搬送波)のコピーを作る。
添付の図面に所定の実施例が記載および図示されてきたが、かかる実施例は単に説明上のものであり、その広い発明を制限するものではないことを理解すべきである。また、本発明は、図示および記載された具体的な構成および配置に限られないことも理解すべきである。本開示を研究すれば当業者には様々な他の修正例が想到できるからである。このような成長が速く将来の進展が容易に予測できない技術分野においては、開示の実施例は、本開示の原理または添付の請求項の範囲から逸脱することなく技術的進展が可能になることによって容易となるような配置および詳細において直ちに修正可能である。
本発明の1つの実施例に係るマルチシーケンサシステムのハイレベルブロック図を示す。 本発明の1つの実施例に係るマルチシーケンサシステムのハイレベルブロック図を示す。 ユーザレベル命令によってスレッド制御をサポートするマルチシーケンサシステムの実施例の選択されたフィーチャを示すブロック図である。 図1Aから図1Cのマルチシーケンサシステムの一部を形成するマルチシーケンサハードウェアの論理ビューを示す。 図1Aから図1Cのシステムに対する命令セットアーキテクチャのビューを示す。 ユーザレベル制御トランスファ命令およびユーザレベルモニタ命令をその命令セットに含む2つ以上の命令シーケンサを備えるプロセッサの実施例の論理図を示す。 本発明の1つの実施例に係るSXFR命令のフォーマットを示す。 本発明の1つの実施例に係るSEMONITOR命令のフォーマットを示す。 本発明の1つの実施例に係るインターシーケンサ制御トランスファを実行するために、SXFR命令をどのようにして使用できるのかを示す。 本発明の1つの実施例に係る、サービスチャネルをプログラムするために使用されるテーブルを示す。 本発明の1つの実施例に係る、サービスチャネルをプログラムするために使用されるテーブルを示す。 本発明の1つの実施例に係る、図1Aから図1Cのシステムのスレッド管理ロジックを構成するコンポーネントの機能ブロック図を示す。 本発明の1つの実施例に係るプロキシ実行メカニズムのオペレーションを示す。 本発明の1つの実施例に係る論理プロセッサの例を示す。 本発明の1つの実施例に係る論理プロセッサの例を示す。 本発明の1つの実施例に係る、ページフォールトのOSによるハンドリング時にプロキシ実行をサポートするためにSXFRおよびSEMONITOR命令がどのように使用されるのかを示す。 本発明の1つの実施例に係る処理システムを示す。 シーケンサ認識ユーザレベル命令を含む1つ以上のユーザレベルスレッドを実行するように構成された1つ以上の命令シーケンサを含む、中央処理ユニット(CPU)またはチップセットのようなプロセッサコンポーネントの実施例を使用する例示的コンピュータシステムのブロック図を示す。

Claims (11)

  1. 第1命令シーケンサ上のユーザレベルスレッドを、アプリケーションレベルプログラムの制御下にある第2命令シーケンサ上でのユーザレベル命令の実行に応答して管理することと、
    1)1つ以上の命令シーケンサを参照するフィールド、および2)コードの実行時に1つ以上の命令シーケンサを特定的にアドレシングするコードへの参照、の少なくとも1つを有する、前記第2命令シーケンサ上の1つ以上のユーザレベル命令を含む、第1ユーザレベルスレッドを実行することと、
    制御メッセージおよびデスティネーションである前記第1命令シーケンサを特定することと
    前記制御メッセージを含む信号を前記第1命令シーケンサへ送信するユーザレベル制御トランスファ命令を、前記第2命令シーケンサ上で実行することと、
    デスティネーション命令シーケンサ、制御メッセージ、およびユーザレベルスレッドオペレーションを実行するべく前記制御メッセージに関連付けられたハンドラコードの位置を特定し、前記デスティネーション命令シーケンサ、前記制御メッセージおよび前記ハンドラコードの位置間のマッピングを生成するユーザレベルモニタリング命令を、ソース命令シーケンサ上で実行することと、
    ユーザレベル保存命令を実行して、前記第1命令シーケンサの実行コンテキストを保存することと
    前記第2命令シーケンサを特定するユーザレベル回復命令を、前記第1命令シーケンサ上で実行し、前記第2命令シーケンサの前記実行コンテキストを前記第1命令シーケンサ上に複製し、前記第1命令シーケンサのシーケンサ状態を前記第2命令シーケンサの前記実行コンテキストの状態に変更することと、
    前記第1ユーザレベルスレッドの実行中に、前記アプリケーションレベルプログラムの制御下にある前記第2命令シーケンサと前記第1命令シーケンサとの間の非対称条件の検知に遭遇するときに、前記第2命令シーケンサに代わって前記第1命令シーケンサ上で前記第2命令シーケンサからの命令の一部を実行することとを含む、プロセッサによって実行され
    前記非対称条件は、オペレーティングシステム(OS)にフォールトをリゾルブするべくOSオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム(OS)にトラップをリゾルブするべくOSオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接OSサービスをアクティベートできない前記第2命令シーケンサ上のシステムコール、または、前記第2命令シーケンサが、前記第1ユーザレベルスレッドからの第1命令の実行をサポートするビルトインリソースを欠如していることからなるグループから選択される、方法。
  2. 前記ユーザレベルスレッドを管理することは、ユーザレベルスレッド生成オペレーション、ユーザレベルスレッド制御オペレーションおよびユーザレベルスレッド同期オペレーションからなるグループから選択されるユーザレベルスレッドオペレーションに対して、シーケンサ認識および制御トランスファオペレーションを行うことを含む、請求項1に記載の方法。
  3. OS隔離命令シーケンサからOS可視命令シーケンサへ制御および状態情報をトランスファすることと、
    前記OS隔離命令シーケンサ上の前記第1ユーザレベルスレッドから前記OS可視命令シーケンサへ少なくとも1つの命令の実行を移動して、前記OS可視命令シーケンサが前記OS隔離命令シーケンサに代わってOSサービスを行うべくオペレーティングシステムをトリガすることと
    をさらに含む、請求項1または請求項2に記載の方法。
  4. 前記アプリケーションレベルプログラムの制御下にある前記第2命令シーケンサ中の前記第1ユーザレベルスレッドの実行をサスペンドすることと、
    前記第2命令シーケンサからOS可視命令シーケンサへ、メモリに格納された内容に向けられるアドレスポインタをトランスファすることと、
    前記アドレスポインタにおける前記内容を前記OS可視命令シーケンサによってロードすることと、
    前記アドレスポインタにおける前記内容がロードされた後に前記第2命令シーケンサ中の前記第1ユーザレベルスレッドの実行をレジュームすることと
    をさらに含む、請求項1から請求項のいずれか1つに記載の方法。
  5. 特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された1つ以上の命令シーケンサと、
    第1シーケンサ認識ユーザレベル命令をデコードする1つ以上のデコーダと、
    前記第1シーケンサ認識ユーザレベル命令を実行する1つ以上の命令実行ユニットと、
    アプリケーションレベルプログラムの制御下にあり、命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
    命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
    前記クライアント命令シーケンサ上の第1ユーザレベルスレッドの実行中に前記サーバント命令シーケンサと前記クライアント命令シーケンサとの間の非対称条件の検知に応答して、オペレーティングシステムによる介入なしに、前記クライアント命令シーケンサに、前記クライアント命令シーケンサに代わっての前記サーバント命令シーケンサ上でのプロキシユーザレベルスレッドの実行をトリガさせることを可能にするプロキシ実行メカニズムと
    を有するプロセッサを備え、
    前記クライアントリソースの命令実行パフォーマンスは、前記サーバントリソースの命令実行パフォーマンスと相違し、
    前記非対称条件は、オペレーティングシステム(OS)にフォールトをリゾルブするべくOSオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム(OS)にトラップをリゾルブするべくOSオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接OSサービスをアクティベートできない前記クライアント命令シーケンサ上のシステムコール、または、前記クライアント命令シーケンサが、前記第1ユーザレベルスレッドからの第1命令の実行をサポートするビルトインリソースを欠如していることからなるグループから選択される、装置。
  6. 前記プロキシ実行メカニズムは、前記クライアントリソースと前記サーバントリソースとの間の命令実行パフォーマンスの相違を、ユーザレベルプログラムからマスクする、請求項に記載の装置。
  7. 前記プロキシ実行メカニズムは、前記クライアント命令シーケンサに関連する出口シナリオのセットを含み、各出口シナリオは、前記サーバント命令シーケンサ上での前記プロキシ実行を開始するトリガ条件を規定する、請求項または請求項に記載の装置。
  8. 特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された1つ以上の命令シーケンサと、
    第1シーケンサ認識ユーザレベル命令をデコードする1つ以上のデコーダと、
    前記第1シーケンサ認識ユーザレベル命令を実行する1つ以上の命令実行ユニットと、
    アプリケーションレベルプログラムの制御下にあり、命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
    命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
    前記クライアント命令シーケンサ上の第1ユーザレベルスレッドの実行中に前記サーバント命令シーケンサと前記クライアント命令シーケンサとの間の非対称条件の検知に応答して、前記クライアント命令シーケンサに、前記クライアント命令シーケンサから前記サーバント命令シーケンサへの制御および状態情報のトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
    を有するプロセッサを備え、
    前記サーバント命令シーケンサは、前記第1ユーザレベルスレッドからの少なくとも1つの命令を前記クライアント命令シーケンサに代わって実行し、前記サーバント命令シーケンサは、前記クライアント命令シーケンサに代わってOSオペレーションを実行するオペレーティングシステムをトリガし、
    前記非対称条件は、オペレーティングシステム(OS)にフォールトをリゾルブするべくOSオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム(OS)にトラップをリゾルブするべくOSオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接OSサービスをアクティベートできない前記クライアント命令シーケンサ上のシステムコール、または、前記アプリケーションレベルプログラムの制御下にある前記クライアント命令シーケンサが、前記第1ユーザレベルスレッドからの第1命令の実行をサポートするビルトインリソースを欠如していることからなるグループから選択される装置。
  9. 特定された命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含むユーザレベルスレッドを実行するべく設定された1つ以上の命令シーケンサと、
    第1シーケンサ認識ユーザレベル命令をデコードする1つ以上のデコーダと、
    前記第1シーケンサ認識ユーザレベル命令を実行する1つ以上の命令実行ユニットと、
    アプリケーションレベルプログラムの制御下にあり、命令を処理するためのクライアントリソースのセットを有するクライアント命令シーケンサと、
    命令を処理するためのサーバントリソースのセットを有するサーバント命令シーケンサと、
    第1ユーザレベルスレッドの実行中に検知された非対称条件に応答して、前記クライアント命令シーケンサに、前記クライアント命令シーケンサから前記サーバント命令シーケンサへのアドレスポインタのトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
    を有するプロセッサを備え、
    前記サーバント命令シーケンサは、前記アドレスポインタにおける内容をロードし、前記クライアント命令シーケンサは、前記アドレスポインタにおける内容のロード完了後に前記第1ユーザレベルスレッドからの命令を実行し、
    前記非対称条件は、オペレーティングシステム(OS)にフォールトをリゾルブするべくOSオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム(OS)にトラップをリゾルブするべくOSオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接OSサービスをアクティベートできない前記クライアント命令シーケンサ上のシステムコール、または、前記アプリケーションレベルプログラムの制御下にある前記クライアント命令シーケンサが、前記第1ユーザレベルスレッドからの第1命令の実行をサポートするビルトインリソースを欠如していることからなるグループから選択される装置。
  10. 異なるユーザレベルスレッドを実行するための2つ以上の命令シーケンサであって、特定の命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含む2つ以上の命令シーケンサと、
    前記シーケンサ認識ユーザレベル命令を実行する場合にアプリケーションレベルプログラムの制御下で動作する第1命令シーケンサと、
    オペレーティングシステムの制御下で動作する第2命令シーケンサと、
    第1ユーザレベルスレッドの実行中に前記第2命令シーケンサと前記第1命令シーケンサとの間の非対称条件の検知されたことに応答して、前記第1命令シーケンサに、前記第1命令シーケンサから前記第2命令シーケンサへの制御および状態情報のトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
    を有するプロセッサと、
    前記プロセッサに接続されて前記オペレーティングシステムを中に格納する不揮発性格納デバイスと、
    を備え、
    前記第2命令シーケンサは、前記第1ユーザレベルスレッドからの少なくとも1つの命令を前記第1命令シーケンサに代わって実行し、前記第2命令シーケンサが前記第1命令シーケンサに代わってオペレーティングシステムのオペレーションを実行するべくオペレーティングシステムをトリガし、
    前記非対称条件は、オペレーティングシステム(OS)にフォールトをリゾルブするべくOSオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム(OS)にトラップをリゾルブするべくOSオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接OSサービスをアクティベートできない前記第1命令シーケンサ上のシステムコール、または、前記第1命令シーケンサが、前記第1ユーザレベルスレッドからの第1命令の実行をサポートするビルトインリソースを欠如していることからなるグループから選択されるシステム。
  11. 異なるユーザレベルスレッドを実行するための2つ以上の命令シーケンサであって、特定の命令シーケンサ上でのユーザレベルスレッド管理オペレーションによるインターシーケンサ制御を可能にするシーケンサ認識ユーザレベル命令を含む2つ以上の命令シーケンサと、
    前記シーケンサ認識ユーザレベル命令を実行する場合にアプリケーションレベルプログラムの制御下で動作する第1命令シーケンサと、
    オペレーティングシステムの制御下で動作する第2命令シーケンサと、
    第1ユーザレベルスレッドの実行中に前記第2命令シーケンサと前記第1命令シーケンサとの間の非対称条件の検知されたことに応答して、前記第1命令シーケンサに、前記第1命令シーケンサから前記第2命令シーケンサへのアドレスポインタのトランスファをトリガさせることを可能にするプロキシ実行メカニズムと
    を有するプロセッサと、
    前記プロセッサに接続されて前記オペレーティングシステムを中に格納する不揮発性格納デバイスと、
    を備え、
    前記第2命令シーケンサは、前記アドレスポインタにおける内容をロードし、前記第1命令シーケンサは、前記アドレスポインタにおける内容のロード完了後に前記第1ユーザレベルスレッドからの命令を実行し、
    前記非対称条件は、オペレーティングシステム(OS)にフォールトをリゾルブするべくOSオペレーションを実行することを要求するフォールトの遭遇、オペレーティングシステム(OS)にトラップをリゾルブするべくOSオペレーションを実行することを要求するトラップの遭遇、前記アプリケーションレベルプログラムの制御下ではあるが直接OSサービスをアクティベートできない前記第1命令シーケンサ上のシステムコール、または、前記第1命令シーケンサが、前記第1ユーザレベルスレッドからの第1命令の実行をサポートするビルトインリソースを欠如していることからなるグループから選択されるシステム。
JP2010204922A 2004-12-30 2010-09-13 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム Expired - Fee Related JP5244160B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US64042504P 2004-12-30 2004-12-30
US60/640,425 2004-12-30
US11/173,326 2005-06-30
US11/173,326 US8719819B2 (en) 2005-06-30 2005-06-30 Mechanism for instruction set based thread execution on a plurality of instruction sequencers

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007549602A Division JP5260962B2 (ja) 2004-12-30 2005-12-28 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム

Publications (2)

Publication Number Publication Date
JP2011023032A JP2011023032A (ja) 2011-02-03
JP5244160B2 true JP5244160B2 (ja) 2013-07-24

Family

ID=36579277

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007549602A Expired - Fee Related JP5260962B2 (ja) 2004-12-30 2005-12-28 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム
JP2010204922A Expired - Fee Related JP5244160B2 (ja) 2004-12-30 2010-09-13 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2007549602A Expired - Fee Related JP5260962B2 (ja) 2004-12-30 2005-12-28 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム

Country Status (4)

Country Link
JP (2) JP5260962B2 (ja)
CN (1) CN101116057B (ja)
DE (1) DE112005003343B4 (ja)
WO (1) WO2006074024A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0408164D0 (en) 2004-04-13 2004-05-19 Immune Targeting Systems Ltd Antigen delivery vectors and constructs
GB0716992D0 (en) 2007-08-31 2007-10-10 Immune Targeting Systems Its L Influenza antigen delivery vectors and constructs
CN101366004A (zh) * 2005-12-06 2009-02-11 波士顿电路公司 用于带有专用线程管理的多核处理的方法和设备
JP4978914B2 (ja) * 2007-10-19 2012-07-18 インテル・コーポレーション マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
FR2950714B1 (fr) * 2009-09-25 2011-11-18 Bull Sas Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
CN103052930A (zh) * 2011-07-27 2013-04-17 赛普拉斯半导体公司 用于触摸感测阵列的并行扫描和数据处理的方法及装置
US9569278B2 (en) * 2011-12-22 2017-02-14 Intel Corporation Asymmetric performance multicore architecture with same instruction set architecture
CN108241504A (zh) * 2011-12-23 2018-07-03 英特尔公司 经改进的提取指令的装置和方法
US10102028B2 (en) 2013-03-12 2018-10-16 Sas Institute Inc. Delivery acknowledgment in event stream processing
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
US9122651B1 (en) * 2014-06-06 2015-09-01 Sas Institute Inc. Computer system to support failover in an event stream processing system
EP4195036A4 (en) * 2020-08-24 2023-10-04 Huawei Technologies Co., Ltd. GRAPH INSTRUCTION PROCESSING METHOD AND DEVICE

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6651163B1 (en) * 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
JP4651790B2 (ja) * 2000-08-29 2011-03-16 株式会社ガイア・システム・ソリューション データ処理装置
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads

Also Published As

Publication number Publication date
CN101116057B (zh) 2011-10-05
JP5260962B2 (ja) 2013-08-14
DE112005003343B4 (de) 2011-05-19
DE112005003343T5 (de) 2007-11-29
JP2008527501A (ja) 2008-07-24
CN101116057A (zh) 2008-01-30
JP2011023032A (ja) 2011-02-03
WO2006074024A2 (en) 2006-07-13
WO2006074024A3 (en) 2006-10-26

Similar Documents

Publication Publication Date Title
US10452403B2 (en) Mechanism for instruction set based thread execution on a plurality of instruction sequencers
JP5244160B2 (ja) 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム
US8887174B2 (en) Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US9069605B2 (en) Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7290261B2 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
EP1658563B1 (en) Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
JP2018509687A (ja) ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
WO2011141337A1 (en) Hardware assist thread
JP6556747B2 (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
JP2017515204A (ja) コンピュータ内の複数のスレッドを管理する制御エリアを提供するためのシステム、方法、およびコンピュータ・プログラム製品
JP2017515203A (ja) コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム
JP2017513128A (ja) マルチスレッド・ゲスト仮想マシン(vm)をディスパッチするためのシステム、方法およびコンピュータ・プログラム製品
US8869172B2 (en) Method and system method and system for exception-less system calls for event driven programs
US10771554B2 (en) Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
US20110231637A1 (en) Central processing unit and method for workload dependent optimization thereof
CN114489793A (zh) 通过应用直接编程的用户定时器

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121016

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130405

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

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5244160

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees