JP2007102781A - 持続的なユーザレベルスレッド用の装置、システムおよび方法 - Google Patents

持続的なユーザレベルスレッド用の装置、システムおよび方法 Download PDF

Info

Publication number
JP2007102781A
JP2007102781A JP2006266590A JP2006266590A JP2007102781A JP 2007102781 A JP2007102781 A JP 2007102781A JP 2006266590 A JP2006266590 A JP 2006266590A JP 2006266590 A JP2006266590 A JP 2006266590A JP 2007102781 A JP2007102781 A JP 2007102781A
Authority
JP
Japan
Prior art keywords
thread
sequencer
user level
persistent 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.)
Granted
Application number
JP2006266590A
Other languages
English (en)
Other versions
JP2007102781A5 (ja
JP4690988B2 (ja
Inventor
Gautham Chinya
チンヤ ガウタム
Hong Wang
ワン ホン
Prashant Sethi
セチ プラシャント
Shiv Kaushik
カウシィク シブ
Bryant Bigbee
ビッグビー ブライアント
John Shen
シェン ジョン
Richard Hankins
ハンキンス リチャード
Xiang Zou
ズー シャン
Baiju Patel
パテル バイジュ
Jason Brandt
ブラント ジェーソン
Anil Aggarwal
アガールウォル アニル
John Reid
レイド ジョン
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
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2007102781A publication Critical patent/JP2007102781A/ja
Publication of JP2007102781A5 publication Critical patent/JP2007102781A5/ja
Application granted granted Critical
Publication of JP4690988B2 publication Critical patent/JP4690988B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/461Saving or restoring of program or task context

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)

Abstract

【課題】持続的なユーザレベルスレッドの生成方法を提供する。
【解決手段】本発明の実施形態は、OS可視シーケンサで実行中である、OSがスケジューリングしたスレッドに基づき、命令セットエクステンションを用いて、OSがスケジューリングしたスレッドに対するコンテキストスイッチ動作とは無関係な、OS分離シーケンサで実行する持続的なユーザレベルスレッドを作成する方法を提供する。ここで、OSがスケジューリングしたスレッドと持続的なユーザレベルスレッドは仮想アドレススペースを共有するとしてもよい。本発明の実施形態はさらに、別のOS可視シーケンサで実行されるサービススレッドに、持続的なユーザレベルスレッドに対して、OSサービスを提供させる方法を提供するとしてもよい。本発明の実施形態はさらに、この方法に類する装置、システムおよび機械可読媒体を提供するとしてもよい。
【選択図】図8

Description

マルチシーケンサコンピュータシステムまたはマルチシーケンサコンピュータプラットフォームにおいて、技術上ならびにコスト上の制約から、特定用途向けのコンピューティング資源、プロセッサまたはプロセッシングユニットの編成が非対称になってしまうことがある。本出願の以下の部分においては、プロセッサまたはプロセッシングユニットも「シーケンサ」または「プロセッシングコア」と呼ぶ。一般的に言って、シーケンサが数多く実装されたコンピュータプラットフォームでは、オペレーティングシステム(OS)がうまく機能しないことがある。特に、複数のシーケンサが非対称に編成された状態で効率よく処理が行えないことがある。
コンピュータプラットフォームは、実装されるシーケンサの種類に関して、その編成が非対称になることがある。例えば、OSに対して「可視」で、OSカーネルが管理するシーケンサがある。本明細書では、このようなシーケンサを「OS可視シーケンサ」と呼ぶ。ここで、OSカーネルは、OS可視シーケンサの特権状態を管理することができ、OS可視シーケンサによってスレッドが実行されている間に、割り込みおよび/または例外を処理する例外ハンドラを提供することができるとしてもよい。このような「OS可視シーケンサ」に対し、OSに対して「不可視」なシーケンサがある。本明細書では、このようなシーケンサを「OS分離シーケンサ」と呼ぶ。OS分離シーケンサは、OSコードを実行せず、シーケンサマネージャに管理されるとしてもよい。
最近になって、マルチシーケンサ・MIMD(複数命令/複数データ)方式ISA(命令セットアーキテクチャ)エクステンションが提案された。これは、1つのOSスレッドコンテキストにおいて複数のユーザレベルスレッドを同時に実行すべく、OS分離シーケンサをRing 3のユーザレベルアーキテクチャリソースとして扱うことを可能にする命令セットを定義するものである。このため、OS分離シーケンサをユーザレベルアプリケーションに利用できるようになる。ユーザレベル・マルチシーケンサ・MIMD・ISAエクステンションを用いる場合、OS可視シーケンサで実行中のアプリケーションスレッドに、OSから分離されたシーケンサを使用することができるようになる。マルチシーケンサ・MIMD・ISAエクステンションによれば、OSに対して可視または不可視なシーケンサに処理を任せることにより、アプリケーションは、OSとは無関係に、多くのシーケンサに対して対応できるようになる。OSはこの間、OSに対して可視なシーケンサ上で動作を継続してもよい。このようなユーザレベル・MIMD・ISAエクステンションによって、ユーザレベルスレッドをOS分離シーケンサ上で実行できるようになり、該ユーザレベルスレッドは、それらを生成し且つOS可視シーケンサで実行されるOSスレッドと同時に実行されるとしてもよい。
以下では、添付の図面を用いて本発明の実施形態を詳細に説明し、本発明の内容をより明らかにする。
本発明の一実施形態に係るマルチシーケンサシステムを示すブロック図である。
本発明の一実施形態に係るマルチシーケンサシステムの一部であるハードウェアを示す簡略化論理図である。
本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供することができるマルチシーケンサシステムを示す簡略図である。
本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供することができるマルチシーケンサシステムを示す概念図である。
本発明の一実施形態に係る、マルチシーケンサシステムの命令セットアーキテクチャを示す図である。
本発明の一実施形態に係る制御移行命令の命令フォーマットの例を示す簡略図である。
本発明の一実施形態に係る、監視命令の命令フォーマットの例を示す簡略図である。
本発明の一実施形態に係る、持続的なユーザレベルスレッドの実行について説明するための簡略化フローチャートである。
本発明の一実施形態に係る、持続的なユーザレベルスレッドの実行について説明するための簡略化フローチャートである。
説明を簡潔且つ明瞭なものとできるよう、図中に示す構成要素は実寸を反映したものではない。例えば、図示した構成要素の中には分かりやすいようほかの構成要素との相対的なサイズが誇張されているものもある。
以下において、具体的且つ詳細な事例を数多く挙げて本発明の実施形態を細部にいたるまで説明する。しかし、以下で説明する内容以外の実施形態を本発明が含むことは、当業者には明らかである。また、公知の方法および処理は、本発明の実施形態の説明をあいまいにしない程度に、詳細に説明する。
以下の説明では一部、コンピュータメモリ内でデータビットまたはバイナリデジタル信号に対して行われる処理のアルゴリズムやそのような処理を表す符号を用いている。データ処理の分野においては、当業者同士間で作業の内容を伝える場合に、このようなアルゴリズムによる説明を用いる。
本明細書内および一般的にアルゴリズムとは、所望の結果を得るために一貫した順序で実施される一連の動作または処理と考えられている。これには、物理量を物理的に操作することも含まれる。必ずしもそうではないが多くの場合、そのような物理量とは電気または磁気信号で、記憶、移動、合成、比較といった操作を行うことができる。こういった信号は、利便性を考慮し一般的な用語を使うべく、ビット、値、成分、符号、文字、項、数字などと呼ばれる。しかし、こういった用語はすべて適切な物理量に対応するものであって、対応する物理量に用いられる便利な名称にすぎない。
本明細書において、特に明示されていない限り、「処理」「演算」「計算」「決定」等の用語を用いている部分は、コンピュータや演算処理システム、または同様の演算電子デバイスによる処理および/または動作に関する。こういったコンピュータシステムは、システム内のレジスタおよび/またはメモリ内の物理量(例えば電子量)として表されたデータを操作および/または変換して、同システム内のメモリ、レジスタまたは同様の情報記憶/送信/表示装置内に同様に物理量として表される別のデータを得る。
本発明の実施形態は例えば、命令または命令セットを格納した機械可読媒体または機械可読装置を用いて実施されるとしてもよい。このような命令または命令セットが機械によって実行されると当該機械は、本発明の実施形態に係る方法および/または動作を行う。このような機械の例を挙げると、適切なプロセッシングプラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、プロセッシングデバイス、コンピューティングシステム、プロセッシングシステム、コンピュータまたはプロセッサなどがある。また、このような機械は、ハードウェアおよび/またはソフトウェアを適切に組み合わせることによって実施するとしてもよい。上述の機械可読媒体または機械可読装置は例えば、適切な種類のメモリユニット、メモリデバイス、メモリ装置、メモリ媒体、ストレージデバイス、ストレージ装置、ストレージ媒体および/またはストレージユニットであり、例として、メモリ、取り外し可能/不可能なメディア、消去可能/消去不可能なメディア、書き込み可能/書き換え可能なメディア、デジタル/アナログメディア、ハードディスク、フロッピーディスク、CD−ROM(Compact Disk Read Only Memory)、CD−R(Compact Disk Recordable)、CD−RW(Compact Disk Rewritable)、光ディスク、磁気メディア、さまざまな種類のDVD(Digital Versatile Disk)、テープまたはカセットなどが挙げられる。命令は適切な種類のコードであってもよく、例として、ソースコード、ターゲットコード、コンパイラ型コード、インタープリータ型コード、実行可能コード、スタティックコードまたはダイナミックコードなどが挙げられる。このような命令を実行するには、適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイラ型および/またはインタープリータ型のプログラミング言語を用いるとしてもよい。このようなプログラミング言語の例として、C、C++、Java、BASIC、Pascal、Fortran、Cobol、アセンブリ言語、マシンコードなどが挙げられる。
本発明の実施形態は、本明細書に記載する動作を行う装置を含むとしてもよい。このような装置は、所望の目的を達成するように構成されてもよいし、コンピュータ内に格納されたコンピュータプログラムが選択的にアクティブ状態にしたり再構成したりする汎用コンピュータであってもよい。このようなコンピュータプログラムは、コンピュータ可読ストレージ媒体に格納されるとしてもよい。このようなストレージ媒体としてディスクが挙げられ、例えばフロッピーディスク、光ディスク、CD−ROM、光磁気ディスク、ROM(Read Only Memory)、RAM(Random Access Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable and Programmable ROM)、磁気/光カードが含まれる。または、ストレージ媒体の例として、その他の種類の、命令を電子状態で格納することに適しておりコンピュータシステムバスに接続が可能な媒体が挙げられる。
本明細書で言及する処理およびディスプレイは必ずしも、特定のコンピュータや装置に関するものではない。本明細書の教示に基づいたプログラムとともに用いるのはさまざまな汎用システムであってよいし、所望の方法を実施するためより特化した装置を構築する方が良い場合もあると考えられる。これらさまざまなシステムの望ましい構造は、以下の説明で明らかにする。また、本発明の実施形態の説明は特定のプログラミング言語に基づくものではない。本明細書で説明する本発明の教示は、さまざまなプログラミング言語を用いて実施することができるとしてもよい。
以下の部分において、図や表、フローチャート、モデルなどさまざまな手段に基づき、本出願で提案される本発明の実施形態を効率よく説明する。当業者には明らかであるが、以下の説明で挙げる実施形態は単なる例にすぎず、本発明を限定するものではない。
図1は、本発明の一実施形態に係るマルチシーケンサシステム100を示すブロック図である。
図1に示すように、マルチシーケンサシステム100は、メモリ102およびマルチシーケンサハードウェア104を備えるとしてもよい。メモリ102は例えば、ユーザレベルプログラム106、スケジューラ108、API(Application Program Interface)110およびオペレーティングシステム(OS)112を有するとしてもよい。マルチシーケンサハードウェア104は例えば、シーケンサマネージャ114および複数のシーケンサ(例えば、シーケンサ116、118、120および122、図1ではそれぞれSID0、SID1、SID2およびSID3と表す)を有するとしてもよい。図1に図示したシーケンサは4つであるが、マルチシーケンサハードウェア104が有するシーケンサの数は4つに限定されない。
シーケンサマネージャ114は、ドライバ、OS(例えばOS112)のエクステンション、これ以外のハードウェア、またはハードウェアとソフトウェアの組み合わせとして実施されるとしてもよい。マルチシーケンサハードウェア104は、シーケンサ116、118、120および/または122の種類に関して、対称であってもよいし非対称であってもよい。シーケンサ116、118、120および/または122のうち幾つかは、自分の実行リソースセットを有する物理プロセッサであってもよい。もしくは、シーケンサ116、118、120および/または122のうち幾つかが、ほかの論理プロセッサと物理リソースを共有する論理プロセッサ(例えばハイパースレッド)であってもよい。シーケンサ116、118、120および122を実現するハードウェアコアは、1つであってもよいし複数の独立したものであってもよい。
マルチシーケンサシステム100の例を挙げると、デスクトップパソコン、ワークステーション、サーバーコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、携帯型コンピュータ、携帯情報端末(PDA)、携帯電話、ゲームコンソールなどがあるが、これらに限定されない。
メモリ102の例を挙げると、半導体デバイス、光学デバイス、磁気デバイスのいずれか、もしくはこれらの組み合わせが考えられるが、これらに限定されない。半導体デバイスとしては、SDRAM(Synchronous Dynamic Random Access Memory)デバイス、RDRAM(RAMBUS DRAM)デバイス、DDR(Double Data Rate)メモリデバイス、SRAM(Static RAM)デバイス、フラッシュメモリ(FM)デバイス、EEPROM(Electrically Erasable Programmable Read Only Memory)デバイス、不揮発性(NV)RAMデバイス、取り外し可能なUSB(Universal Serial Bus)メモリデバイスといったものが例として挙げられる。光学デバイスには、CD−ROM(Compact Disk ROM)などがある。磁気デバイスには、ハードディスク、フロッピーディスク、磁気テープなどがある。メモリ102は、システム100内に固定されるとしてもよいし、システム100から取り外し可能な構成としてもよい。
本発明の一実施形態によれば、ユーザレベルプログラム106がAPI110を介してスレッドライブラリにアクセスするとしてもよい。API110は、ユーザレベルプログラム106に対して、スレッドの作成、制御および同期を行うとしてもよい。スケジューラ108は、マルチシーケンサハードウェア104上での実行に向けて、スレッドの命令をスケジューリングするとしてもよい。
マルチシーケンサハードウェア104の例を挙げると、複数のシングルスレッド型/マルチスレッド型中央演算処理装置(CPU)、デジタル信号プロセッサ(DSP)、縮小命令セットコンピュータ(RISC)、復号命令セットコンピュータ(CISC)などがあるが、これらに限定されない。また、マルチシーケンサ104は特定用途向け集積回路(ASIC)の一部であってもよいし、特定用途・一般顧客向けLSI(ASSP)の一部であってもよい。
本発明の一実施形態によると、マルチシーケンサハードウェア104は、例えば論理プロセッサであるシーケンサ116、118、120および122(SID0−SID3)を実装したシングルコアプロセッサであってもよい。シングルコアプロセッサ104は、例えば並列マルチスレッディング(CMT)、同時マルチスレッディング(SMT)および/またはSwitch−on−Eventマルチスレッディング(SOEMT)に対応可能としてもよい。一実施形態によれば、シーケンサSID0〜SID3はそれぞれ独自の次命令ポインタ論理を有し、シングルコアプロセッサ104はスレッドの命令をすべて実行するとしてもよい。論理プロセッサSID1〜SID3はそれぞれ、アーキテクチャ状態の独自のバージョンを保持するが、シングルコアプロセッサ104の実行リソースは、複数の並列スレッド、同時スレッドおよび/またはSwitch−On−Eventスレッドの間で共有するとしてもよい。
上述した一実施形態に係るマルチシーケンサハードウェア104はシーケンサ毎に1つのスレッドという構成であるとしてもよいが、本明細書の開示はシングルスレッドプロセッサに限定されない。本明細書で説明する技術内容は、CMP(チップマルチプロセッシング)システムまたはSMP(同時マルチスレッディングプロセッサ)システムにも同様に応用することができる。また、CMPプロセッサの各コアはSMPプロセッサまたはSwitch−On−Eventマルチプロセッサ(SoeMP)である、CMPプロセッサとSMPプロセッサを備えるハイブリッドシステムにも応用できる。例えば、シングルチップハードウェアパッケージ104内のマルチスレッドプロセッシングコアを備えるシステムに、本明細書で開示する技術内容を利用するとしてもよい。
上述したが、シーケンサSID0〜SID3は、例えば処理速度、処理能力や電力消費量といった演算能力に影響する要因に関して、必ずしも均一である必要はなく非対称であってもよい。例えば、シーケンサSID0は、所定の命令セットアーキテクチャ(例えば、32ビットプロセッサに対応したIA−32命令セットアーキテクチャ)において命令の大半を処理するように構成されている「主」シーケンサとしてもよい。そして、シーケンサSID1は、これらの命令のうち選択された命令サブセットを処理する「副」シーケンサであるとしてもよい。本発明の別の実施形態によれば、主プロセッサは副プロセッサよりも早い速度で命令を処理するものと定義してもよい。また、OSに対して可視のシーケンサと不可視のシーケンサがあるとしてもよい。例えば、シーケンサSID0がOS112に対して可視で、シーケンサSID1〜SID3はOS112から分離されているとしてもよい。しかし、主シーケンサがOSに対して可視で、副シーケンサがOSから分離されているというわけではない。OSは、分離状態にあるシーケンサ(このようなシーケンサを本明細書ではOS分離シーケンサと呼ぶ)上で実行される命令に対してスケジューリングを行わないということである。
本発明の実施形態によると、マルチシーケンサシステム100は持続的なユーザレベルスレッド(PULT)のサービスを提供するとしてもよい。PULTについては、以下で図2から図8を参照しつつ詳述する。本出願において、通常のユーザレベルスレッド(以下では単にユーザレベルスレッドと呼ぶ)は、ユーザレベルまたはRing 3レベルで実行される非特権命令だけから成る一連の命令であるとしてもよい。ユーザレベルスレッドは通常、OSスレッドに「水面下で」サポートされるとしてもよい。このようなOSスレッドは、ネイティブOSスレッドと呼んでもよいし、単にネイティブスレッドとしてもよい。このOSスレッドのコンテキストにおいて、少なくとも1つのユーザレベルスレッドがOS可視シーケンサまたはOS分離シーケンサの一方で実行されるとしてもよい。OSがOSスレッドをコンテキストスイッチすると、このOSスレッドに属するすべてのシーケンサのコンテキストが保存/復元される。従って、これらのシーケンサで動作中のユーザレベルスレッドは中断/再開される。本発明の一実施形態によれば、持続的なユーザレベルスレッド(PULT)は、OS分離シーケンサ上で動作するユーザレベルスレッドである。PULTが実行される環境は例えば、該PULTを生成する別のユーザレベルスレッドの仮想アドレススペース(VAS)である。PULTの実行は、当該PULTを生成したユーザレベルスレッドの実行とは無関係に、従って同期せずに行われるとしてもよい。ユーザレベルスレッドが属するOSスレッドがコンテキストスイッチされた時でも、PULTはOS分離シーケンサ上で動作を継続するとしてよい。本明細書では、このような状態、つまりPULTの生成元であるスレッドに関するOSスレッドのコンテキストスイッチ動作とは関係なく、ユーザレベルスレッドが動作を継続する特性を「持続的」と呼ぶ。
図2は、本発明の一実施形態に係るマルチシーケンサシステムの一部であるハードウェア200を示す簡略化論理図である。
ハードウェア200は、図1に示すマルチシーケンサシステム100の一部であるマルチシーケンサハードウェア104に対応するとしてもよい。マルチシーケンサハードウェア104は、図1に示すように、シーケンサマネージャ114および、例えば複数のシーケンサ116、118、120および122を有するとしてもよい。本発明の一実施形態によれば、シーケンサマネージャ114は、シーケンサ116、118、120および122がユーザレベルプログラム106に対して均一且つ対称であるように見えるように、シーケンサ116、118、120および122を仮想化できるとしてもよい。つまり、図1のシーケンサマネージャ114に対応するシーケンサマネージャ201は、シーケンサ211、212、213および214の非対称性を隠して、図2に同じサイズの正方形で示すように、アセンブリ言語プログラマが論理的に見た場合、シーケンサ211、212、213および214が均一且つ対称に見えるようにする。シーケンサ211、212、213および214は図1に示す論理プロセッサSID0、SID1、SID2およびSID3に対応するとしてもよい。
図3は、本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供できるマルチシーケンサシステム300を示した簡略図である。
本発明の一実施形態によれば、アプリケーション301(例えば図1に示すユーザレベルプログラム106)の実行はOS302が管理するとしてもよい。OS302は、各々がユーザレベルスレッドを含んでいる可能性がある1以上のネイティブスレッドを生成およびスケジューリングして、アプリケーション301を実行するとしてもよい。このようなネイティブスレッドの例を挙げると、例えばOS302に対して可視である一連のシーケンサ(例えばシーケンサ311および312)のうちの1つで実行される図3のネイティブスレッド303がある。OS302は、OSカーネルに基づきシーケンサ311および312を管理するとしてもよい。OS302はさらに、シーケンサ311および312の特権状態を制御し、シーケンサ311および312で生じる割り込みおよび例外を処理するとしてもよい。
本発明の一実施形態によれば、シーケンサマネージャ310は、OSに対して可視であるシーケンサ311および312ならびに、別の一連のシーケンサ、例えばOS302から分離されておりOS302のカーネルが管理していないシーケンサ313、314、315、316、317および318へのアクセスを制御できるとしてもよい。シーケンサ313、314、315、316、317および318は、OS分離シーケンサまたは「OS不可視」シーケンサである。
本発明の一実施形態によれば、OSがスケジューリングしたスレッド(例えば、ユーザレベルスレッドを含む可能性があるネイティブスレッド)は、ハードウェア、ソフトウェアもしくは両者の組み合わせによって構成されるインターフェースを介して、シーケンサマネージャ310と通信を行うとしてもよい。OS302に不可視なシーケンサ(例えばシーケンサ313、314、315、316、317および318)を使用したい場合、OSがスケジューリングしたスレッド(例えばネイティブスレッド303)が、OS分離シーケンサのうちの1つ(例えばシーケンサ313)で動作するユーザレベルスレッド(例えばスレッド304)を生成するように、シーケンサマネージャ310に要求を送るとしてもよい。本発明の一実施形態によれば、ユーザレベルスレッド304は、ネイティブスレッド303のOSコンテキストスイッチ動作とは無関係なシーケンサ313で実行されるので、持続的なユーザレベルスレッド(PULT)であるとしてもよい。
以下においては、ネイティブスレッド303を例として、持続的なユーザレベルスレッドの作成および実行について説明する。以下の説明がほかのスレッド、例えばネイティブスレッドに属するユーザレベルスレッドにも当てはまることは、当業者には明らかである。
本発明の一実施形態によれば、OS分離シーケンサ313は、OS可視シーケンサ311で実行されるユーザレベルスレッド303と共有する仮想アドレススペース(VAS)320で、PULT304を実行するとしてもよい。VAS320は、OS302によってアプリケーション301を実行するために生成されるとしてもよい。本発明の一実施形態によれば、VAS320が共有されているので、シーケンサマネージャ310は、OS可視シーケンサ311で実行されるユーザレベルスレッド303の実行環境、例えば、仮想アドレスマップを取得して、この実行環境をOS分離シーケンサ313で実行されるPULT304に用いることができるとしてもよい。本発明の一実施形態によれば、OS分離シーケンサ313は、仮想アドレススペースの変化を自動的に記録できるスヌープ方式のTLB(変換索引バッファ)を有するとしてもよい。ここで、TLBとはプロセッサ内にある小型のキャッシュで、高速で検索できるように仮想アドレスから物理アドレスへの変換を記録するとしてもよい。プロセッサは、このようなTLBを用いることによって、仮想アドレスを物理アドレスへと変換する場合の不必要なページウォークを避けることができる。
図4は、本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供できるマルチシーケンサシステム400を示す概念図である。
本発明の一実施形態に係るマルチシーケンサシステム400は、複数のOS分離シーケンサ(例えばシーケンサ411、412、413および414)およびOS可視シーケンサ(例えばシーケンサ405および406)を管理するシーケンサマネージャ410を備えるとしてもよい。OS402は、ユーザレベルアプリケーション(例えばアプリケーション401Aおよび401B)の実行を管理するとしてもよい。OS402は、1以上のスレッド(例えば、OS可視シーケンサ405および406で動作するユーザレベルスレッド403および404)ならびにネイティブスレッドを生成することによって、アプリケーション401Aおよび401Bを管理する。
シーケンサマネージャ410は、OS402から分離されておりOS402が管理していないシーケンサ411、412、413および414へのアクセスに基づき、アプリケーション401Aおよび401Bに対して実行リソースを提供するとしてもよい。なお、この場合のアクセスは、OS可視シーケンサ405および406で実行されているスレッド403および404またはOSがスケジューリングするネイティブスレッドからの要求に基づいて、行われるとしてもよい。この結果、アプリケーション401Aおよび401Bは、ユーザレベルスレッド403および/または404、もしくはネイティブスレッドに基づき、OS分離シーケンサ411、412,413および414にアクセスできるようになるとしてもよい。
本発明の一実施形態によると、シーケンサマネージャ410は、ユーザレベルスレッド403および404によってアプリケーション410Aおよび401B用に生成された持続的なユーザレベルスレッド実行のために、さまざまなタイムスロットをシーケンサ411、412、413および414に割り当てるとしてもよい。例えば、図4に示した参照符号t、t、t、t、tおよびtはそれぞれ、PULTであるT、T、T、T、TおよびTの実行用に割り当てられたタイムスロットを示すものであってもよい。
本発明の一実施形態によると、シーケンサマネージャ410は、OS分離シーケンサ(例えば、シーケンサ411、412、413および414)用に、割り込み記述子テーブル(例えば、テーブル421、422、423および424)を設定するとしてもよい。テーブル421を例に挙げて説明すると、割り込み記述子テーブルはシーケンサ411で発生するイベントを処理するイベントハンドラ431を含むとしてもよい。OS分離シーケンサ(例えば、シーケンサ411)上でPULT(例えばPULT T)を実行している間(例えば、t)、OS402による対処が必要となるイベントや状況(例えばページフォルトまたはシステムコール)が発生する可能性がある。この場合、イベントハンドラ431はPULT Tの実行を一時中断し、当該イベントが発生したときのPULT Tの実行状態を保存するとしてもよい。
本発明の別の実施形態によると、ページフォルトやシステムコールが発生した場合、OS不可視シーケンサ(例えばシーケンサ411)は、OS可視シーケンサ(例えば、PULT Tを起動したシーケンサ405)の実行に直接割り込むとしてもよい。この場合、続いてシーケンサ411は、トリガをシーケンサマネージャ410に送って割り込み処理を要求する。本発明のさらに別の実施形態によると、OS分離シーケンサ411はRing 0サービスチャネル、もしくはページフォルトまたはシステムコールを処理するチャネルをプログラムするとしてもよい。ここでチャネルとは、アーキテクチャ状態(例えば、トリガがアーキテクチャが定義された一連のプロセッサ状態であり、レスポンスがサービスルーチンであるトリガ−レスポンス・マッピングを含む)を保持するレジスタであってもよい。またチャネルは、例えばユーザレベル命令によってプログラムされるとしてもよい。ページフォルトまたはシステムコールが発生した場合、OS分離シーケンサ411は、そのアドレスがチャネル内で特定されているハンドラを起動するとしてもよい。
PULT Tの中断は、同じアプリケーション401Aを実行するための新しいユーザレベルスレッド(例えば、スレッド409)がOS可視シーケンサで実行されるようスケジューリングされるまで、継続するとしてもよい。スレッド409(サービススレッドとも呼ぶ)は、一時中断されているPULTがあるかどうか、および例えば代理実行によって提供されるOSサービスを待っているPULTがあるかどうか確認または検証するよう、シーケンサマネージャ410に対して要求するとしてもよい。代理実行は、シーケンサマネージャ410からPULT Tの状態を取得することによって、PULT Tを模倣するスレッド409に基づいて行われるとしてもよい。PULT Tの実行状態は、アドレススペース(例えば、共有仮想アドレススペース(VAS)、図3を参照のこと)を共有しているサービススレッド409によって再開されるとしてもよい。スレッド409は続いて、PULT Tを一時停止させた原因である実行条件に対して処理を行うとしてもよい。スレッド409はこの処理が終了すると、実行後状態を保存し、当該状態をシーケンサマネージャ410に戻すとしてもよい。シーケンサマネージャ410は続いて、当該状態をPULT Tに渡して、PULT Tの実行を再開するとしてもよい。
上述した代理実行により、アプリケーションプログラマに対してマルチシーケンサシステムが対称性を有すると見せかけることができ、マルチシーケンサシステム(例えばシステム100)が非対称性を有するものとして構築されたことを隠すとしてもよい。
図5は、本発明の一実施形態に係るマルチシーケンサシステムの命令セットアーキテクチャ(ISA)500を示す図である。
ISAは、アセンブリ言語プログラマ、バイナリトランスレータ、アセンブラなどから見た場合のシステムの論理図を定義するものである。ISA500は、論理ストレージ502および命令セット504を備えるとしてもよい。論理ストレージ502は、マルチシーケンサシステム(例えば、図1に示したマルチシーケンサシステム100)用の可視メモリ階層、アドレス割当方法、レジスタセットなどを定義するとしてもよい。一方命令セット504は、命令およびマルチシーケンサシステム100がサポートする命令のフォーマットを定義するとしてもよい。
命令セット504は、IA−32命令セットとして公知である命令セットを含むとしてもよい。本発明の実施形態に係る命令セットは、これらに限定されないが、IA−32命令セットのエクステンションやそれ以外の命令セットであってもよい。本発明の一実施形態によると、命令セット504は例えば、SXFR制御−移行命令およびそのエクステンションを含むE−SXFR命令、ならびにSEMONITOR監視命令およびそのエクステンションを含むE−SEMONITOR命令を有するとしてもよい。同じOSネイティブスレッドに属する2つのシーケンサの間で行われ得るSXFRおよびSEMONITORとは違い、E−SXFRおよびE−SEMONITORは、異なる特権レベルで動作する2つの別々のOSネイティブスレッドにそれぞれ属する2つのシーケンサの間で実行することができる。例えば、一方のスレッドはOSコンテキストスイッチされるユーザレベルアプリケーションであり、他方のスレッドは、デバイスドライバのように、特権レベルで持続的に実行されるPULTであり、OSコンテキストスイッチには影響されないとしてもよい。
本発明の一実施形態によると、E−SXFR命令を用いて、第1シーケンサから第2シーケンサに信号を送り、E−SEMONITOR命令を用いて、第1シーケンサから送信される信号を監視するよう、第2シーケンサを構成するとしてもよい。また、E−SXFR制御移行命令およびE−MONITOR監視命令はシーケンサを認識しており、 シーケンサを認識したほかの複合命令を構築するために用いられるとしてもよい。
本発明の一実施形態によると、E−SXFR命令は図6に例示する命令フォーマットを持つとしてもよい。図6に示すように、E−SXFR命令はOPコード602、オペランド604、606、608、610および612を含むとしてもよい。本発明の一実施形態によると、シーケンサマネージャは、一時中断された持続的なユーザレベルスレッドを処理するための実行環境を作りだすために、シーケンサの特権状態などのオペランドを有するE−SXFR命令を提供するとしてもよい。
一実施形態によると、オペランド604は、E−SXFR命令信号の送信先であるデスティネーション/ターゲットシーケンサのシーケンサID(SID)に対応するとしてもよい。オペランド606は、シナリオまたは制御メッセージを含むとしてもよい。このようなシナリオまたは制御メッセージは、条件または予測されるイベントを表す、そのアーキテクチャが定義された識別コードであってもよい。シナリオは非同期制御移行に影響を与えるとしてもよい。この詳細は表1を参照して後述する。
一実施形態によると、オペランド608は、E−SXFR命令を実行するシーケンサで命令を実行するかどうか決定する条件となるパラメータを含むとしてもよい。図6に条件パラメータと示すそのようなパラメータの例を挙げると、「WAIT」パラメータまたは「NO−WAIT」パラメータがある。例えば、E−SXFR命令が代理実行シナリオで用いられる場合、WAIT条件パラメータに基づき、E−SXFR命令を実行するシーケンサでの命令の実行を取りやめ、別のシーケンサでの代理実行の完了を保留にする。一方、NO−WAIT条件パラメータであれば、E−SXFR命令を実行するシーケンサでの命令の実行が別の命令を実行するシーケンサでの代理実行と並行して継続するとしてもよい。
一実施形態によると、オペランド610は、シナリオ固有ペイロードまたはデータメッセージを含むとしてもよい。例えばFORKシナリオの場合、該ペイロードはオペランド604が示すシーケンサでの実行が始まる箇所である命令ポインタを含むとしてもよい。別の実施形態によると、ペイロードオペランド610は命令ポインタ、スタックポインタ、一連の制御レジスタなどを含むとしてもよい。ペイロードオペランド610に含まれるアドレスは、例えばリテラル、レジスタ間接および/またはベース/オフセットアドレッシングなど、さまざまなアドレス指定モードで指定するとしてもよい。
一実施形態によると、オペランド612は、オペランド604に含まれるSIDに関するルーティング方法またはルーティング関数を特定するとしてもよい。ルーティング関数は、E−SXFR命令を実行した結果生成される信号が、ブロードキャスト信号、ユニキャスト信号またはマルチキャスト信号のうちどの信号として送信されるかを制御する。ルーティング関数はさらに、例えば、信号を配信するためのルーティングにおいて基本構成要素であるシーケンサ間のインターコネクトをアシストするために用いられるトポロジー固有情報のような情報を符号化するとしてもよい。
一実施形態によると、E−SEMONITOR指示は、図7に例示するような命令フォーマットを有するとしてもよい。図7に示すように、E−SEMONITOR命令はOPコード702およびオペランド704、706および708を含むとしてもよい。オペランド704、706および708は、持続的なユーザレベルスレッドの実行環境の形成を手助けするべくシーケンサの特権状態に関する情報を含むとしてもよい。例えば、オペランド704はシナリオIDを含み、シナリオを特定するとしてもよい。オペランド706は、シーケンサID(SID)および命令ポインタ(EIP)に関する情報を含むとしてもよい。説明の便宜上、オペランド706に含まれる情報を本明細書では、図7に示すように、「SIDEIP」と呼ぶ。
E−SEMONITOR命令は、オペランド704で指定されたシナリオとオペランド706で指定されたSIDEIPをマッピングする。シナリオのSIDEIPへのマッピングを本明細書では、「サービスチャネル」のマッピングと呼ぶとしてもよい。オペランド708によってプログラマは所定のサービスチャネルをどのように処理されるか特定または制御するための制御パラメータを入力できるようになるとしてもよい。例えば、プログラマはE−SEMONITOR命令に基づき、シーケンサが監視するサービスチャネルをプログラムするとしてもよい。
上記の説明から、E−SXFR命令およびE−SEMONITOR命令は両方とも、特定のシーケンサを指定しているオペランドを有することから、「シーケンサを認識した」命令であることが分かる。
図8および図9は、本発明の実施形態に係る、持続的なユーザレベルスレッドの実行を説明するための簡略化フローチャートである。両図において、同じ参照番号は同じ動作を示している。
本発明の一実施形態によると、ブロック801に示すように、OS分離シーケンサ822が持続的なユーザレベルスレッドを実行するとしてもよい。本明細書では説明の便宜上、当該持続的なユーザレベルスレッドを、PULT−1と呼ぶ。PULT−1は例えば、第1OS可視シーケンサによって実行される第1ユーザレベルスレッドによって生成されるとしてもよい。PULT−1の実行中、OSのサービスが必要なイベントが1以上発生するとしてもよい。ここで、以下に詳述するように、第2ユーザレベルスレッドが必要なOSサービスをPULT−1に対して提供するとしてもよい。第2ユーザレベルスレッドはPULT−1を生成した第1ユーザレベルスレッドと同じユーザレベルスレッドであってもよいし、違うものであってもよい。また、第2OS可視シーケンサ(例えば、OS可視シーケンサ821)またはこれ以外のOS可視シーケンサで実行するとしてもよい。
本発明の一実施形態によると、図8および図9のブロック802で示すように、PULT−1を実行中の時間tにおいてOSサービスを必要とするイベントが発生するとしてもよい。このイベントを検出すると、ブロック803に示すように、シーケンサマネージャ820は時間t(例えば、論理ポインタ)でのPULT−1の状態を保存する手順を開始するとしてもよい。ブロック803に示すようにPULT−1の状態が保存されると、ブロック804に示すようにPULT−1の実行は時間tから一時中断されるとしてもよい。本発明の一実施形態によると、OSサービスを必要とするイベントについて通知を受け取った後、外部割込みに基づき、シーケンサマネージャ820はPULT−1の実行を一時中断するとしてもよい。PULT−1の実行の一時中断は、例えばサービススレッドによる代理実行に基づき必要なOSサービスの提供が行われるまで続くとしてもよい。
本発明の一実施形態によると、ブロック805に示すように、ある時点において、OSがスケジューリングしたスレッド(例えば新規ユーザレベルスレッド)がOS可視シーケンサ821で動作を開始するとしてもよい。この新規ユーザレベルスレッドは、PULT−1と同じアプリケーション用に実行されるとしてもよい。このスレッドは、例えば代理実行によって、PULT−1に対してOSサービスを提供するとしてもよく、このため本明細書ではサービススレッドと呼んでもよい。OSサービスの提供を開始する前に、ブロック806に示すように、当該サービススレッドは、OSサービスの提供を待つ一時中断されたPULTがあるかどうかシーケンサマネージャ820に確認または検証するとしてもよい。
このサービススレッドは、OSサービスの提供を待つスレッドとして、PULT−1を特定するとしてもよい。本発明の一実施形態によると、ブロック807に示すように、続いてサービススレッドは、例えば共有仮想アドレススペース(VAS)に基づきPULT−1の実行状態を取得することによって、PULT−1を模倣、つまり真似するとしてもよい。サービススレッドによって模倣されたPULT−1は、該サービススレッドを実行するOS可視シーケンサで実行され、OSサービスを受け取るとしてもよい。この結果、ブロック808に示すように、サービススレッドの代理実行によってPULT−1に対してOSサービスが提供され、PULT−1が一時中断された条件についてOSによる処理が行われる。本発明の一実施形態によると、OS可視シーケンサ(例えば、OS可視シーケンサ821)で動作するユーザレベルスレッドは、シナリオを用いてアドレス位置を監視することによって、一時中断中のPULTを検出するとしてもよい。ここで、サービスシナリオは、例えばキャッシュミスを監視するための条件である。キャッシュミスが発生してその結果例えばしきい値を超えた場合、サービスチャネルのハンドラが起動されるとしてもよい。
本発明の一実施形態によると、PULT−1が一時中断された条件に対してOSが行う処理が完了すれば、ブロック809に示すように、PULT−1の実行後状態が保存され、シーケンサマネージャ820を介してOS分離シーケンサ822に戻される。OS分離シーケンサ822は、サービススレッドから実行後状態を受け取った後、ブロック810に示すようにPULT−1の実行を再開するとしてもよい。
表1に、本発明の実施形態に係るシナリオの例をまとめて示す。
Figure 2007102781
本発明の実施形態によると、表1に示したシナリオには出方向サービスと入方向サービスの2つに関するものがある。各サービスについて、動作および制御メッセージは、SPU(Shred Processing Unit)の特性の1つである、OSに対する可視性に基づき特徴付けるとしてもよい。出方向サービスの中で、RNA(Resource not available:利用可能なリソースなし)のカテゴリに当てはまる動作のシナリオがある。このRNAというカテゴリは、OS分離シーケンサで利用不可能なリソースに対するアクセスのため、シーケンサで実行中に生成されたイベント用のものである。本発明の一実施形態によると、RNAのカテゴリに入るシナリオは例えば、直接OSサービスをアクティブにできないOS分離シーケンサ上でのページフォルト処理および/またはI/Oアクセスを含むとしてもよい。
本発明の実施形態によれば、上述した動作のシナリオには一連の送信制御メッセージが付随する。一実施形態によれば、このようなメッセージは例えば、表1の出方向サービスシナリオの欄に示したメッセージを含むとしてもよい。しかし、本発明はこれらに限定されず、示したもの以外のメッセージを用いるとしてもよい。制御メッセージはOS可視シーケンサに送信される。
上述した出方向サービスシナリオに関連して、OS分離シーケンサからのサービス要求に対してリソースを提供するOS可視シーケンサのカテゴリに入る入方向サービスシナリオがある。表1の入方向サービスシナリオの欄に示すように、これらのサービスは出方向サービスシナリオにそのまま対応するが、OS可視シーケンサを介して利用可能である。一実施形態によると、入方向サービスに付随する受信制御メッセージには、表1の入方向サービスシナリオの欄に示したメッセージが含まれるとしてもよい。しかし、本発明はこれらに限定されず、示したもの以外のメッセージを用いるとしてもよい。受信メッセージはOS分離シーケンサから受信するとしてもよい。
本発明の実施形態によると、出方向サービスに対処する命令は例えば、コアの複雑性という点から見れば比較的単純なSSE13命令である。また、例えばOS分離シーケンサからの入方向サービスまたは要求に対処する命令は、概してより複雑なものである。
本明細書では本発明の特徴を具体的に説明してきたが、当業者であれば数多くの変形例や代替例、変更および同様の技術内容に想到することは明らかである。このため、本願の請求項は、本発明の範囲内にある変形例や変更はすべて含むものと解釈されるべきである。

Claims (29)

  1. オペレーティングシステム(OS)可視シーケンサで実行中である、OSがスケジューリングしたスレッドに基づき、命令セットエクステンションを用いて、前記OSがスケジューリングしたスレッドに対するコンテキストスイッチ動作とは無関係な、OS分離シーケンサで実行する持続的なユーザレベルスレッドを作成すること
    を含む方法。
  2. 前記OSがスケジューリングしたスレッドと前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
    請求項1に記載の方法。
  3. 前記持続的なユーザレベルスレッドの実行中にOSによる処理を必要とするイベントが発生した場合、前記持続的なユーザレベルスレッドの実行を一時中断すること
    を含む請求項1に記載の方法。
  4. 別のOS可視シーケンサで実行されるサービススレッドに、前記一時中断された持続的なユーザレベルスレッドに対して、OSサービスを提供させること
    を含む請求項1に記載の方法。
  5. 前記サービススレッドと前記持続的なユーザレベルスレッドは、同じアプリケーションのコンテキストで実行される
    請求項4に記載の方法。
  6. 前記持続的なユーザレベルスレッドに対してOSサービスを提供することは、
    前記別のOS可視シーケンサに対して、制御移行命令を伝えることと、
    前記制御移行命令を特権レベルで実行することと
    を含む
    請求項4に記載の方法。
  7. 前記特権レベルにはRing 0レベルが含まれる
    請求項6に記載の方法。
  8. 前記サービススレッドに前記持続的なユーザレベルスレッドの状態を取得させることと、
    前記持続的なユーザレベルスレッドに対して代理実行を行うことと、
    前記持続的なユーザレベルスレッドを実行後状態にすることと
    を含む請求項6に記載の方法。
  9. 前記実行後状態から前記持続的なユーザレベルスレッドの実行を再開すること
    をさらに含む請求項8に記載の方法。
  10. OS可視シーケンサで実行中である、OSがスケジューリングしたスレッドに基づき、命令セットエクステンションを用いて、前記OSがスケジューリングしたスレッドに対するコンテキストスイッチ動作とは無関係な、OS分離シーケンサで実行する持続的なユーザレベルスレッドを作成するシーケンサマネージャ
    を備える装置。
  11. 前記OSがスケジューリングしたスレッドと前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
    請求項10に記載の装置。
  12. 前記シーケンサマネージャは、前記持続的なユーザレベルスレッドの実行中にOSによる処理を必要とするイベントが発生した場合、前記持続的なユーザレベルスレッドの実行を一時中断する
    請求項10に記載の装置。
  13. 前記シーケンサマネージャは、別のOS可視シーケンサで実行されるサービススレッドに、前記持続的なユーザレベルスレッドに対してOSサービスを提供させる
    請求項10に記載の装置。
  14. 前記サービススレッドと前記持続的なユーザレベルスレッドは、同じアプリケーションのコンテキストで実行される
    請求項13に記載の装置。
  15. 前記シーケンサマネージャは、前記別のOS可視シーケンサに対して、制御移行命令を伝え、前記制御移行命令を特権レベルで実行させる
    請求項13に記載の装置。
  16. 前記シーケンサマネージャは、前記サービススレッドに前記持続的なユーザレベルスレッドの状態を取得させ、前記持続的なユーザレベルスレッドに対して代理実行を行い、前記持続的なユーザレベルスレッドを実行後状態にする
    請求項15に記載の装置。
  17. 前記実行後状態から前記持続的なユーザレベルスレッドの実行を再開する
    請求項16に記載の装置。
  18. システムであって、
    OS、少なくとも1つのユーザレベルプログラム、前記プログラムを接続するためのアプリケーションプログラムインターフェース、および前記プログラムの実行をスケジューリングするスケジューラを格納しているメモリと、
    少なくとも1つのOS可視シーケンサおよび少なくとも1つのOS分離シーケンサを有するマルチシーケンサと、
    OS可視シーケンサで実行中である、OSがスケジューリングしたスレッドに基づき、命令セットエクステンションを用いて、前記OSがスケジューリングしたスレッドに対するコンテキストスイッチ動作とは無関係な、OS分離シーケンサで実行する持続的なユーザレベルスレッドを作成するシーケンサマネージャと
    を備えるシステム。
  19. 前記OSがスケジューリングしたスレッドと前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
    請求項18に記載のシステム。
  20. 前記シーケンサマネージャは、前記持続的なユーザレベルスレッドの実行中にOSによる処理を必要とするイベントが発生した場合、前記持続的なユーザレベルスレッドの実行を一時中断する
    請求項18に記載のシステム。
  21. 前記シーケンサマネージャは、別のOS可視シーケンサで実行されるサービススレッドに、前記持続的なユーザレベルスレッドに対して、OSサービスを提供させる
    請求項18に記載のシステム。
  22. 前記シーケンサマネージャは、前記OS可視シーケンサに対して、制御移行命令を伝え、前記OS可視シーケンサに前記制御移行命令を特権レベルで実行させる
    請求項21に記載のシステム。
  23. 前記シーケンサマネージャは、前記サービススレッドに前記持続的なユーザレベルスレッドの状態を取得させ、前記持続的なユーザレベルスレッドに対して代理実行を行い、前記持続的なユーザレベルスレッドを実行後状態にする
    請求項22に記載のシステム。
  24. 前記実行後状態から前記持続的なユーザレベルスレッドの実行を再開する
    請求項23に記載のシステム。
  25. 機械によって実行された場合、OS可視シーケンサで実行中である、OSがスケジューリングしたスレッドに基づき、命令セットエクステンションを用いて、前記OSがスケジューリングしたスレッドに対するコンテキストスイッチ動作とは無関係な、OS分離シーケンサで実行する持続的なユーザレベルスレッドを生成する、一連の命令を格納している機械可読媒体。
  26. 前記命令が実行されると、前記OSがスケジューリングしたスレッドと前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
    請求項25に記載の機械可読媒体。
  27. 前記命令が実行されると、前記持続的なユーザレベルスレッドの実行中にOSによる処理を必要とするイベントが発生した場合、前記持続的なユーザレベルスレッドの実行が一時中断される
    請求項25に記載の機械可読媒体。
  28. 前記命令が実行されると、別のOS可視シーケンサで実行されるサービススレッドが、前記持続的なユーザレベルスレッドに対して、OSサービスを提供する
    請求項25に記載の機械可読媒体。
  29. 前記命令が実行されると、前記別のOS可視シーケンサに対して、制御移行命令が伝えられ、前記制御移行命令が特権レベルで実行される
    請求項28に記載の機械可読媒体。
JP2006266590A 2005-09-30 2006-09-29 持続的なユーザレベルスレッド用の装置、システムおよび方法 Expired - Fee Related JP4690988B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/239,475 US8028295B2 (en) 2005-09-30 2005-09-30 Apparatus, system, and method for persistent user-level thread
US11/239,475 2005-09-30

Publications (3)

Publication Number Publication Date
JP2007102781A true JP2007102781A (ja) 2007-04-19
JP2007102781A5 JP2007102781A5 (ja) 2009-08-06
JP4690988B2 JP4690988B2 (ja) 2011-06-01

Family

ID=37887229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006266590A Expired - Fee Related JP4690988B2 (ja) 2005-09-30 2006-09-29 持続的なユーザレベルスレッド用の装置、システムおよび方法

Country Status (4)

Country Link
US (5) US8028295B2 (ja)
JP (1) JP4690988B2 (ja)
CN (2) CN101038543B (ja)
DE (1) DE102006046129A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1981129A2 (en) 2007-04-10 2008-10-15 Hirose Electric Co., Ltd. Coaxial Connector
JP2009104259A (ja) * 2007-10-19 2009-05-14 Intel Corp マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
JP2009187223A (ja) * 2008-02-05 2009-08-20 Nec Corp プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム
JP2013500543A (ja) * 2009-07-27 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719819B2 (en) * 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US20080307419A1 (en) * 2007-06-06 2008-12-11 Microsoft Corporation Lazy kernel thread binding
US20080313656A1 (en) * 2007-06-18 2008-12-18 Microsoft Corporation User mode stack disassociation
US20080320475A1 (en) * 2007-06-19 2008-12-25 Microsoft Corporation Switching user mode thread context
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
DE202009018265U1 (de) * 2008-11-04 2011-08-26 Htc Corporation System und Vorrichtung zur Verbesserung eines Ressourcenfreigabeprozesses bei der semi-persistenten Terminierung in einem drahtlosen Kommunikationssystem
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
CN104025046B (zh) * 2012-01-10 2017-06-20 英特尔公司 与利用调回的isa桥接关联的方法、装置和计算设备
WO2013162589A1 (en) * 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
US9384036B1 (en) * 2013-10-21 2016-07-05 Google Inc. Low latency thread context caching
US10037227B2 (en) 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
US11023233B2 (en) * 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
CN108009007B (zh) * 2016-10-27 2021-01-15 华为技术有限公司 轻量级线程的调度方法及协同管理器、vCPU调度器
CN113946528A (zh) * 2020-07-16 2022-01-18 华为技术有限公司 切换系统架构的方法与装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0497445A (ja) * 1990-08-16 1992-03-30 Nec Corp 情報処理装置の診断方式
JPH05265876A (ja) * 1992-03-19 1993-10-15 Fujitsu Ltd エラー報告処理方式
US5485626A (en) * 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732138B1 (en) * 1995-07-26 2004-05-04 International Business Machines Corporation Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US5991790A (en) * 1996-07-01 1999-11-23 Sun Microsystems, Inc. Generation and delivery of signals in a two-level, multithreaded system
US6223204B1 (en) * 1996-12-18 2001-04-24 Sun Microsystems, Inc. User level adaptive thread blocking
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6175916B1 (en) * 1997-05-06 2001-01-16 Microsoft Corporation Common-thread inter-process function calls invoked by jumps to invalid addresses
US6189023B1 (en) * 1997-09-30 2001-02-13 Tandem Computers Incorporated Simulating shared code thread modules with shared code fibers
US5923892A (en) 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US6289369B1 (en) * 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6366946B1 (en) * 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management
EP1037147A1 (en) * 1999-03-15 2000-09-20 BRITISH TELECOMMUNICATIONS public limited company Resource scheduling
JP3557947B2 (ja) * 1999-05-24 2004-08-25 日本電気株式会社 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
US7043725B1 (en) * 1999-07-09 2006-05-09 Hewlett-Packard Development Company, L.P. Two tier arrangement for threads support in a virtual machine
EP1236097A4 (en) * 1999-09-01 2006-08-02 Intel Corp BRANCH COMMAND TO THE PROCESSOR
JP2001255961A (ja) 2000-03-01 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータ及び冷却ファンの制御方法
US6651163B1 (en) * 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
JP3702813B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US20030191730A1 (en) * 2002-04-05 2003-10-09 Compaq Information Technologies Group, L.P. Unobtrusive rule-based computer usage enhancement system
US7200846B2 (en) * 2002-08-05 2007-04-03 Sun Microsystems, Inc. System and method for maintaining data synchronization
US7962545B2 (en) * 2002-12-27 2011-06-14 Intel Corporation Dynamic service registry for virtual machines
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7406699B2 (en) * 2003-04-02 2008-07-29 Microsoft Corporation Enhanced runtime hosting
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7496928B2 (en) * 2003-08-28 2009-02-24 Microsoft Corporation Method and system for moderating thread priority boost for I/O completion
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7360223B2 (en) * 2003-09-24 2008-04-15 Hewlett-Packard Development Company, L.P. Arrangements and methods for invoking an upcall in a computer system
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US8533716B2 (en) * 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
US9189230B2 (en) * 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US20060075404A1 (en) * 2004-10-06 2006-04-06 Daniela Rosu Method and system for scheduling user-level I/O threads
US7669204B2 (en) * 2004-10-14 2010-02-23 International Business Machines Corporation Autonomic SMT System tuning
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7992144B1 (en) * 2005-04-04 2011-08-02 Oracle America, Inc. Method and apparatus for separating and isolating control of processing entities in a network interface
US8516483B2 (en) 2005-05-13 2013-08-20 Intel Corporation Transparent support for operating system services for a sequestered sequencer
US7752620B2 (en) * 2005-06-06 2010-07-06 International Business Machines Corporation Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0497445A (ja) * 1990-08-16 1992-03-30 Nec Corp 情報処理装置の診断方式
JPH05265876A (ja) * 1992-03-19 1993-10-15 Fujitsu Ltd エラー報告処理方式
US5485626A (en) * 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1981129A2 (en) 2007-04-10 2008-10-15 Hirose Electric Co., Ltd. Coaxial Connector
JP2009104259A (ja) * 2007-10-19 2009-05-14 Intel Corp マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム
JP2009187223A (ja) * 2008-02-05 2009-08-20 Nec Corp プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム
JP2013500543A (ja) * 2009-07-27 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
KR101759266B1 (ko) 2009-07-27 2017-07-18 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법

Also Published As

Publication number Publication date
US9383997B2 (en) 2016-07-05
JP4690988B2 (ja) 2011-06-01
US8479217B2 (en) 2013-07-02
DE102006046129A1 (de) 2007-04-12
US20110314480A1 (en) 2011-12-22
US9766891B2 (en) 2017-09-19
US20070079301A1 (en) 2007-04-05
CN101038543B (zh) 2013-01-02
CN101038543A (zh) 2007-09-19
CN102981808A (zh) 2013-03-20
US20170102944A1 (en) 2017-04-13
CN102981808B (zh) 2015-07-29
US8028295B2 (en) 2011-09-27
US9875102B2 (en) 2018-01-23
US20160274910A1 (en) 2016-09-22
US20130275735A1 (en) 2013-10-17

Similar Documents

Publication Publication Date Title
JP4690988B2 (ja) 持続的なユーザレベルスレッド用の装置、システムおよび方法
KR101247407B1 (ko) 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
JP6430970B2 (ja) 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行
KR100537813B1 (ko) 에뮬레이션 코프로세서
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
US8239610B2 (en) Asynchronous page faults for virtual machines
KR101668399B1 (ko) 프로세서 코어들의 하이퍼바이저 격리
JP5071913B2 (ja) 同時物理プロセッサ再割り当て方法、システム、およびプログラム
JP5945292B2 (ja) 異種システムをブートし、コアの対称的なビューを表示する方法
EP1915681A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
JPS61184643A (ja) 仮想計算機の起動制御方式
CN114579264A (zh) 处理装置、处理系统和处理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100928

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: 20110201

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110218

R150 Certificate of patent or registration of utility model

Ref document number: 4690988

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

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