JP2017534970A - 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム - Google Patents

複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2017534970A
JP2017534970A JP2017516711A JP2017516711A JP2017534970A JP 2017534970 A JP2017534970 A JP 2017534970A JP 2017516711 A JP2017516711 A JP 2017516711A JP 2017516711 A JP2017516711 A JP 2017516711A JP 2017534970 A JP2017534970 A JP 2017534970A
Authority
JP
Japan
Prior art keywords
thread
threads
loop
remaining
execution start
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
JP2017516711A
Other languages
English (en)
Other versions
JP6537600B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2017534970A publication Critical patent/JP2017534970A/ja
Application granted granted Critical
Publication of JP6537600B2 publication Critical patent/JP6537600B2/ja
Active 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
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】第1のスレッドと1組の残りのスレッドとを含む複数のスレッドをコンピュータ・プロセッサ・コア上で実行するシステムおよび方法を提供する。【解決手段】システムおよび方法は、解釈実行開始出口条件が存在すると判断することと、コンピュータ・プロセッサ・コアが猶予期間内にあると判断することと、第1のスレッドによって、1組の残りのスレッドのいずれにも合図することなく解釈実行開始出口同期ループに入ることとを含む。第1のスレッドは、猶予期間が満了するか、または残りのスレッドのそれぞれが対応する解釈実行開始出口同期ループに入るまで、解釈実行開始出口同期ループに留まる。【選択図】図1

Description

本発明は、一般には、マルチスレッド・プロセッサのための協調的SIE終了に関し、より詳細には、マルチスレッド環境における資源コストを削減するために、協調的SIE終了とともにマルチスレッド環境における待ち状態および警告追跡を提供することに関する。
一般に、マルチスレッディングは単一のプロセッサ・コア内で並列動作可能なプロセッサ・スレッドの数を増加させる。マルチスレッディングは、単一のプロセッサ・コアのハードウェアのうち、その単一プロセッサ・コア上で実行されている他のプロセッサ・スレッドによって現在使用されていない部分を1つまたは複数のプロセッサ・スレッドに使用させることによって、この能力増加を実現する。例えば、第1のプロセッサ・スレッドにおいてキャッシュ・ミスまたはその他の遅延により生じる待ち時間中に、1つまたは複数の他のプロセッサ・スレッドがキャッシュ・ミス時に第1のプロセッサ・スレッドにディスパッチされたコア資源を利用することができ、それによってそれらのコア資源の利用効率を向上させることができる。
マルチスレッディングはハードウェアの節約を実現するが、ソフトウェア・レベルでは、別のスレッドの追加により、追加の別個のプロセッサ・コアを使用して能力増加を実現するのに必要なコストよりも多くの協調コストが消費される。多くの場合、ある特定のスケーリング比率が達成されると、単一のプロセッサ・コアで動作するか共用プロセッサ・コアで実行されるかを問わず、スレッド間でコア資源を調整するためのオーバーヘッドが相当な量となり、独立したプロセッサ・スレッドの利点を低減させる可能性があるか、または利点を上回る可能性すらある。従って発明が解決しようとする課題はマルチスレッド・プロセッサのための協調的SIE終了の効率改善の方法を提供することである。
本発明の一実施形態によると、第1のスレッドと1組の残りのスレッドとを含む複数のスレッドをコンピュータ・プロセッサ・コア上で実行する方法は、解釈実行開始出口条件が存在すると判断することと、コンピュータ・プロセッサ・コアが猶予期間内にあると判断することと、1組の残りのスレッドのいずれにも合図することなく第1のスレッドによって解釈実行開始出口同期ループに入ることと、猶予期間が満了するかまたは残りのスレッドがそれぞれ対応する解釈実行開始出口同期ループに入るまで、第1のスレッドによって解釈実行開始出口同期ループに留まることを含む。
本発明の技術により、その他の特徴および利点も実現される。本発明のその他の実施形態および態様が本明細書で詳細に記載されており、特許請求の範囲に記載の発明の一部とみなされる。その利点および特徴とともに本発明についてよりよく理解するために、本明細書の記載および図面を参照されたい。
本発明とみなされる対象物は、本明細書末尾にある特許請求の範囲で詳細に示され、明確に請求されている。本発明の上記およびその他の特徴および利点は、以下の詳細な説明を添付図面とともに読めば明らかになる。
マルチスレッディング・システムのコンピューティング・デバイスの概略を示す図である。 マルチスレッディング・システムのプロセッサの概略を示す図である。 待ち状態に関するマルチスレッディング・システムのプロセス・フローを示す図である。 待ち状態に関するマルチスレッディング・システムのプロセス・フローを示す図である。 コア・ディスパッチ環境における待ち状態に関するマルチスレッディング・システムの別のプロセス・フローを示す図である。 コア・ディスパッチ環境における待ち状態に関するマルチスレッディング・システムの別のプロセス・フローを示す図である。 コア・ディスパッチ環境における警告追跡に関するマルチスレッディング・システムのプロセス・フローを示す図である。 コア・ディスパッチ環境における警告追跡に関するマルチスレッディング・システムの別のプロセス・フローを示す図である。 コア・ディスパッチ環境における警告追跡に関するマルチスレッディング・システムの別のプロセス・フローを示す図である。 コア・ディスパッチ環境における警告追跡に関するマルチスレッディング・システムの別のプロセス・フローを示す図である。
知られているように1983年のVM/XAとともにSIE(Start Interpretive Execution)がマイクロコードで実装された。VMはゲストで動く仮想マシンにディスパッチするときにSIE命令を使用する。この命令以降は仮想マシンでの実行はSIE命令の一部として実行される。これによりVMによる仮想化オーバーヘッドを劇的に減らすことができた。しかしながら上記のように、マルチスレッディングにおけるプロセッサ・スレッド間の協調コストは相当なものであり、独立したプロセッサ・スレッドの利点を低減する可能性があるか、または上回る可能性すらある。従って、マルチスレッド環境における資源コストを低減するために、協調的SIE終了とともに待ち状態および警告追跡を提供するマルチスレッド環境が必要である。
一般に、本明細書で開示する本発明の実施形態は、コアの資源コストを低減するために、ソフトウェアを使用してコア上のインフラストラクチャを細粒度スレッド単位で効率的に管理する、マルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはそれらの組合せを含み得る。これは、協調的SIE終了とともに待ち状態と警告追跡とを使用するとともに、単一のスレッド上で動作するハイパーバイザがコア・ディスパッチを使用して単一コア上の複数のゲスト・スレッドをディスパッチすることができるようにすることによって達成される。
次に、マルチスレッディング・システム、方法またはコンピュータ・プログラムあるはこれらの組合せ(「マルチスレッディング・システム」)による、協調的解釈実行開始(Start Interpretive Execution「SIE」)出口を使用したコア・ディスパッチについて説明する。即ち、マルチスレッディング・システムはコア・ディスパッチを介して、単一スレッドを実行しているハイパーバイザが単一の命令を使用してそのコア上でマルチスレッド・ゲストをディスパッチすることができるようにする(なお、各マルチスレッド・ゲストは、ゲスト論理プロセッサまたはゲスト・スレッドを表す)。単一命令のオペランドは、すべてのゲスト・スレッドの状態を含む単一の状態記述、または、例えばそれぞれが単一のゲスト・スレッドの状態を表す状態記述のグループを指定することができる。また、コア・ディスパッチの使用をサポートするためと、単一スレッドを実行するハイパーバイザを考慮して、マルチスレッディング・システムによって協調的SIE出口が提供されて、すべてのゲスト・スレッドが同時に終了することができるようにする。
例えば、ゲスト・コアの各スレッドが解釈実行モードを終了する必要があると判断すると、そのスレッドはSIE出口状態となり、同じコアの他のすべての有効スレッドも終了する準備が整うまで、最初のSIE出口同期ループで待機する。場合によっては、各スレッドは、この同期ループに入る前に他のスレッドに対して終了するように合図する。
次に、マルチスレッディング・システムの非マルチスレッド環境またはマルチスレッド環境あるいはその両方の環境での待ち状態について説明する。非マルチスレッド環境については、ゲスト・スレッドが待ち行列上のタスクを完了し、待ち行列上に追加のタスクがない場合、マルチスレッディング・システムは待ち状態コードまたはビットをプログラム状況ワード(「PSW」)にロードする。PSW内の待ち状態ビットによって、ゲスト・スレッドは割込みが提示されるまで命令実行を中止する。ゲスト・スレッドが専用非マルチスレッド環境(例えば、物理プロセッサが単一のゲスト・スレッドによる使用専用である)で実行中であり、その単一のゲスト・スレッドが割込み可能(即ち、ゲストが非同期割込み可能にされた)待ち状態になった場合、その単一のゲスト・スレッドは、割込みが認識されるまで物理プロセッサ上でディスパッチされたままとなる。ゲスト・スレッドが共用環境(即ち、物理プロセッサが異なるゲスト論理プロセッサ間で共用されている)で実行されている場合、ゲスト・スレッドが待ち状態になると、該当する場合にはハイパーバイザが、実行する作業を有する異なるゲスト・スレッドをディスパッチすることができるように、待ち状態インターセプションにより共用環境は解釈実行を終了する。
マルチスレッド環境に関しては、コア上のゲスト・スレッドが依然としてゲスト命令を実行している場合、コア上のすべての有効スレッドが待ち状態になるかまたは別の理由で協調的SIE出口が必要になるまで、コアが動作し続ければより効率的である。また、割込み可能待ち状態のスレッドはファームウェア待ち状態ループに入り、他のすべてのスレッドが待ち状態になる前にそのスレッドに割込みが提示された場合、そのスレッドはその割込みを処理することができ、ファームウェア待ち状態ループから出ることができる(例えば、割込みには、別のスレッドによる協調的SIE出口の要求が含まれる)。
次に図1を参照すると、コンピューティング・デバイス112を含むマルチスレッディング・システム100の例が示されている。マルチスレッディング・システム100は、適合するコンピューティング・ノードの一例に過ぎず、本明細書に記載の発明の実施形態の使用または運用性の範囲について制限を示唆することを意図したものではない(実際に、追加または代替構成要素または実装形態あるいはその両方を使用することができる)。即ち、マルチスレッディング・システム100およびその要素は、多くの異なる形態をとることができ、複数または代替あるいはその両方の構成要素および機構を含み得る。また、マルチスレッディング・システム100は、本明細書に記載されているように様々な通信技術を利用する任意の数および組合せのコンピューティング・デバイスおよびネットワークを含むかまたは採用することができ、あるいはその両方とすることができる。それにもかかわらず、マルチスレッディング・システム100は、実装可能であるかまたは本明細書に記載の運用性のいずれかを実行することが可能であるか、あるいはその両方である。
マルチスレッディング・システム100内には、他の多くの汎用または専用コンピューティング・システム環境または構成とともに動作可能なコンピューティング・デバイス112がある。マルチスレッディング・システム100またはコンピューティング・デバイス112あるいはその両方などのシステムまたはコンピューティング・デバイスあるいはその両方は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって流通されているAIX UNIX(R)およびz/OSオペレーティング・システム、マイクロソフト・ウィンドウズ(R)(Microsoft Windows(R))オペレーティング・システム、Unix(R)オペレーティング・システム(例えば米国カリフォルニア州レッドウッドショアーズのオラクル・コーポレーションによって流通されているソラリス(Solaris)オペレーティング・システム)、Linuxオペレーティング・システム、米国カリフォルニア州クパティーノのアップル社によって流通されているMac OS XおよびiOSオペレーティング・システム、カナダ国ウォータールーのリサーチ・イン・モーションによって流通されているブラックベリー(BlackBerry)OS、およびオープン・ハンドセット・アライアンスによって開発されたアンドロイド(Android)オペレーティング・システムの様々なバージョンまたは種類あるいはその両方を含むがこれらには決して限定されない、いくつかのコンピュータ・オペレーティング・システムのうちの任意のオペレーティング・システムを採用することができる。コンピューティング・デバイス112とともに使用するのに適合すると考えられるコンピューティング・システム、環境または構成あるいはこれらの組合せの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル民生電子機器、ネットワークPC、ミニコンピュータ・システム、コンピュータ・ワークステーション、サーバ、デスクトップ、ノートブック、ネットワーク・デバイス、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるがこれらには限定されない。
コンピューティング・デバイス112については、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般の文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピューティング・デバイス112は、通信ネットワークを介して接続されているリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境で実施されてもよい。分散クラウド・コンピューティング環境では、プログラム・モジュールはメモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に収容され得る。
図1に示すように、マルチスレッディング・システム100におけるコンピューティング・デバイス112は、マルチスレッディング・システム100、その方法または要素あるいはそれらの組合せの動作および機能に基づいて改良される汎用コンピューティング・デバイスの形で示されている。コンピューティング・デバイス112の構成要素には、1つまたは複数のプロセッサまたは処理ユニット(例えば複数のスレッド115をサポートする少なくとも1つのコア114aを含むプロセッサ114、例えば2つ以上のスレッド115を含むプロセッサ114のコア114aを含むマルチスレッディング・システム100)と、メモリ116と、プロセッサ114およびメモリ116を含む様々なシステム構成要素を結合するバス118とが含まれることがあるがこれらには限定されない。コンピューティング・デバイス112は、典型的には、様々なコンピュータ・システム可読媒体も含む。そのような媒体は、コンピューティング・デバイス112がアクセス可能な任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取り外し可能と取り外し不能媒体の両方を含む。
プロセッサ114は、メモリ116からコンピュータ可読プログラム命令を受け取ると、それらの命令を実行することによって、マルチスレッディング・システム100によって定義された1つまたは複数のプロセスを実行することができる。プロセッサ114は、算術演算、論理演算または入出力演算あるいはこれらの組合せを実行することによってコンピュータ可読プログラム命令を実行する、コンピューティング・デバイス112によって使用される任意の処理ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組合せを含み得る。プロセッサ114およびコア114aの例としては、算術演算および論理演算を実行する算術論理演算ユニット、メモリから命令を取り出し、復号し、実行する制御ユニット、および複数の並列コンピューティング要素を使用するアレイ・ユニットが含まれるがこれらには限定されない。
図2に、コントローラ215に結合されたプロセッサ114を含むコンピューティング環境の実施形態を示す。一例では、z/Architectureに基づくコンピューティング環境が、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるSystem zサーバを含む。プロセッサ114は、例えば、1つまたは複数の区画(例えば論理区画LP1ないしLPn)と、1つまたは複数の物理コア(例えばコア1ないしコアm)と、レベル0ハイパーバイザ214(例えば論理区画マネージャ)とを含むことができる。コントローラ215は、要求を出す異なるプロセッサ間のアービトレーションを司る集中ロジックを含むことができる。例えば、コントローラ215がメモリ・アクセス要求を受け取ると、コントローラ215はその記憶場所へのアクセスが許可されているか否かを判断し、許可されている場合は、その記憶場所の内容をプロセッサ114に提供すると同時に、そのコンプレックス内のプロセッサ間のメモリ整合性を維持する。別のコントローラ215が、図1に示すI/Oインターフェース130またはネットワーク・アダプタ132あるいはその両方との間での要求を管理してもよい。
物理コアは、論理区画に割り当てられた物理プロセッサ資源を含む。論理区画は、1つまたは複数の論理プロセッサを含むことができ、各論理プロセッサはその区画に割り当てられた物理プロセッサ資源のすべてまたは割当て分を表す。物理コアは、基礎をなすコアの物理プロセッサ資源がその区画のために確保されるように特定の区画の論理コア専用とされるか、または、基礎をなすコア資源の物理プロセッサ資源が別の区画にとって利用可能となり得るように、別の区画の論理コアと共用されてもよい。各論理区画は、別個のシステムとして機能可能とすることができる。即ち、各論理区画は独立してリセットすることができ、望ましい場合は、最初にオペレーティング・システム(例えばオペレーティング・システムOS1ないしOSn)をロードすることができ、異なるプログラムとともに動作することができる。論理区画で動作するオペレーティング・システムまたはアプリケーション・プログラムは、全システムにアクセスすることができるように見える場合があるが、実際には利用可能なのはシステム全体の一部のみである。ハードウェアとライセンス内部コード(Licensed Internal Code)(ファームウェア、マイクロコードまたはミリコードとも呼ばれる)との組合せが、1つの論理区画内のプログラムが異なる論理区画内のプログラムを見たり、このプログラムにアクセスしたり、干渉したりするのを防止する。これによって、いくつかの異なる論理区画が単一または複数の物理コア上でタイム・スライス方式により動作することが可能になる。一実施形態では、各物理コアは1つまたは複数の中央プロセッサ(本明細書では「物理スレッド」とも呼ぶ)を含む。図2に示す例では、各論理区画は常駐オペレーティング・システムを有し、常駐オペレーティング・システムは1つまたは複数の論理区画ごとに異なっていてもよい。各論理区画は、オペレーティング・システムが動作可能な仮想マシンまたはゲスト構成の例である。
図2に示す実施形態では、論理区画LP1ないしLPnは、物理コアであるコア1ないしコアm上で動作するファームウェアによって実装されるレベル0ハイパーバイザ214によって管理される。論理区画LP1ないしLPnおよびハイパーバイザ214はそれぞれ、物理コアであるコア1ないしコアmに関連付けられた中央ストレージ(メモリ)のそれぞれの部分に存在する1つまたは複数のプログラムを含む。ハイパーバイザ214の一例は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるプロセッサ資源/システム管理機構(Processor Resource/Systems Manager:PR/SM(商標))である。
図1に戻ると、メモリ116は、コンピューティング・デバイス112のプロセッサ114による使用のためにマルチスレッディング・システム100によって提供されるコンピュータ可読プログラム命令を保持し、記憶する、有形のデバイスを含み得る。メモリ116は、ランダム・アクセス・メモリ(RAM)120、キャッシュ・メモリ122またはストレージ・システム124あるいはこれらの組合せなどの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。バス118は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、いくつかの種類のバス構造のうちのいずれか1つまたは複数のバス構造を表す。例として、そのようなアーキテクチャは、インダストリアル・スタンダード・アーキテクチャ(Industrial Standard Architecture:ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro channel Architecture:MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含むが、これらには限定されない。
一例に過ぎないが、ストレージ・システム124は、取り外し不能不揮発性磁気媒体(図示せず。典型的には「ハード・ドライブ」と呼ばれる)との間での読み書きのために設けることができる。図示されていないが、取り外し可能不揮発性磁気ディスク(例えば「フロッピー(R)・ディスク」)との間での読み書きのための磁気ディスク・ドライブ、および、CD−ROM、DVD−ROMまたはその他の光媒体などの取り外し可能不揮発性光ディスクとの間での読み書きのための光ディスク・ドライブを設けることができる。そのような場合、1つまたは複数のデータ媒体インターフェースによってそれぞれをバス118に接続することができる。以下でさらに図示し、説明するように、メモリ116は、本発明の実施形態の動作を実行するように構成された1組(例えば少なくとも1つ)のプログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。ストレージ・システム124(またはメモリ116あるいはその両方)は、データベース、データ・リポジトリまたはその他のデータ・ストアを含むことができ、階層データベース、ファイル・システムにおける1組のファイル、プロプライエタリ形式のアプリケーション・データベース、リレーショナル・データベース・マネージメント・システム(RDBMS)などを含む様々な種類のデータの記憶、このデータへのアクセス、およびこのデータの取出しのための様々な種類の機構を含み得る。ストレージ・システム124は、一般には、例示のように、上記のもののうちの1つなどのコンピュータ・オペレーティング・システムを採用するコンピューティング・デバイス112内に含めることができ、様々な方式のうちの1つまたは複数でネットワークを介してアクセスされる。
1組(少なくとも1つ)のプログラム・モジュール128を有するプログラム/ユーティリティ126を、例えば、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データとともにメモリ116に記憶することができるが、これには限定されない。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの何らかの組合せのそれぞれは、ネットワーク環境の実装形態を含み得る。
コンピューティング・デバイス112は、入出力(I/O)インターフェース130またはネットワーク・アダプタ132あるいはその両方を介して通信することもできる。I/Oインターフェース130またはネットワーク・アダプタ132あるいはその両方は、コンピューティング・デバイス112によって、コンピューティング・デバイス112の内部または外部あるいはその両方の要素間で通信するために使用される物理または仮想あるいはその両方の機構を含み得る。例えば、I/Oインターフェース130は、キーボード、ポインティング・デバイス、ディスプレイ142などの1つまたは複数の外部デバイス140、またはユーザがコンピューティング・デバイス112と対話することができるようにする1つまたは複数のデバイス、またはコンピューティング・デバイス112が1つまたは複数の他のコンピューティング・デバイスと通信することができるようにする任意のデバイス(例えばネットワーク・カード、モデムなど)あるいはこれらの組合せと通信することができる。また、コンピューティング・デバイス112は、ネットワーク・アダプタ132を介して、ローカル・エリア・ネットワーク(LAN)、または一般のワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えばインターネット)あるいはこれらの組合せなどの1つまたは複数のネットワークと通信することができる。従って、I/Oインターフェース130またはネットワーク・アダプタ132あるいはその両方は、コンピューティング・デバイス112内で、またはコンピューティング・デバイス112のために、信号またはデータを受信または送信するように構成され得る。図のように、I/Oインターフェース130およびネットワーク・アダプタ132は、バス118を介してコンピューティング・デバイス112の他の構成要素と通信する。なお、図示はされていないが、他のハードウェアまたはソフトウェアあるいはその両方の構成要素をコンピューティング・デバイス112とともに使用し得ることを理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどがあるがこれらには限定されない。
図1によって、マルチスレッディング・システム100のための単一アイテム(およびその他のアイテム)を示しているが、これらの表現は限定的であることを意図したものではなく、従って任意のアイテムが複数のアイテムを表現し得る。例えば、プロセッサ114は、それぞれの処理コアが複数のスレッドを実行し、本明細書に記載の協調的SIE出口を処理することが可能な複数の処理コアを含んでもよい。
待ち状態および協調的SIE出口に関するプロセス・フロー300の一例を示す図3ないし図4を参照しながら、マルチスレッディング・システムについて説明する。
図のように、このプロセス・フロー300は、複数のスレッド、例えばスレッドX、スレッドYおよびスレッドZによって実行される。ブロック310、312および314で、スレッドX(例えば一次スレッド)が、ゲスト命令を実行し、割込み可能待ち状態PSWをロードし、ファームウェア待ち状態ループに入る。スレッドYおよびスレッドZ(例えば二次スレッド)が両方ともまだゲスト命令ストリームを実行中であるため(例えばブロック330、340)、スレッドXはこの時点ではSIEを終了しない。ブロック316でゲスト非同期割込みが保留になるまで、スレッドXは、ファームウェア待ち状態ループに留まる。ブロック318で、ゲスト非同期割込みによってスレッドXは待ち状態ループを出て、ファームウェア非同期割込みハンドラに入る。ファームウェア非同期割込みハンドラは、割込み旧PSWと割込み情報とをゲスト・メモリの最初のブロックにある固定記憶場所に保存し、ゲスト割込み新PSWをハードウェアにロードする。次に、ブロック320で、スレッドXはゲスト・ソフトウェア割込みハンドラの実行を開始する。スレッドXがソフトウェア割込みハンドラの実行を完了すると、ブロック322でゲスト・オペレーティング・システムが割込み可能待ちPSWを再ロードし、これによって再びファームウェア待ち状態ループを呼び出し/ファームウェア待ち状態ループに入る。
一方、スレッドYは独立して、ブロック330でゲスト命令を実行し、ブロック332で割込み可能待ち状態PSWをロードし、ブロック334でファームウェア待ち状態ループに入る。同様に、スレッドZは独立して、ブロック340でゲスト命令を実行し、ブロック342で割込み可能待ち状態PSWをロードし、ブロック344でファームウェア待ち状態ループに入る。即ち、各スレッドY、Zは、それぞれのイベントが独立して発生するように、それぞれの時間Y1、Z1後に、対応する割込み可能待ち状態PSWをロードする(ブロック332、334)。また、各スレッドY、Zは、それぞれのイベントが独立して発生するように、それぞれの時間Y2、Z2後に、対応するファームウェア待ち状態PSWに入る(ブロック334、344)。ブロック350で、スレッドXは、コアのすべての有効スレッド(例えばスレッドX、Y、Z)がこの時点で待ち状態になったと判断し、待ち状態インターセプションのためにSIE出口を呼び出す。次に、ライン352でスレッドXは最初のSIE出口同期点に達し、この同期点により、スレッドXはブロック354に示すようにスレッドY、Zに対して内部割込み機構を使用してSIEを終了するように合図する。すべてのスレッドが待ち状態であることを検出し、他のスレッドにSIEを終了するように合図するこのプロセスは、任意のスレッドが行うことができ、典型的には最後に待ち状態になるスレッドによって行われる。
ブロック354から内部割込み信号を受け取ると、スレッドYおよびZは独立して終了する。即ち、(ブロック356および358に示すように)スレッドYおよびZは独立して、SIE出口要求のためにそれぞれのファームウェア待ち状態ループを出て、内部割込みを処理し、SIE出口を呼び出す。最後に、スレッドYおよびZは、(ライン362、364で)最初のSIE出口同期ループに達する。すべての有効スレッド(例えばスレッドX、Y、Z)が最初の同期点に達すると(ライン366)、各スレッドは独立してそれぞれの状態記述の更新を終了し、待ち状態インターセプションを示す(例えばブロック370、372、374)。各スレッド(例えばスレッドY、Z)がその状態記述の更新を終了すると、そのスレッドはハードウェア制御ビットを設定する。詳細には、ブロック382で、スレッドYが、最後のSIE出口同期点に達したことを示すためと、命令実行を停止するために、ハードウェア制御ビットを設定する。同様に、ブロック384で、スレッドZが最後のSIE出口同期点に達したことを示すためと、命令実行を停止するために、ハードウェア制御ビットを設定する。次に、ブロック390で、スレッドX(例えば一次スレッド)は、すべてのスレッドがすべての状態記述更新を終了したことを意味する、すべてのスレッドY、Zの最後の同期点への到達を待ち、協調的SIE出口を完了する。最後に、ブロック392で、スレッドXは次に、マルチスレッドSIEインターセプションをホストに提示し、ホストはそのマルチスレッドSIEインターセプションを処理する。
待ち状態および協調的SIE出口に関するマルチスレッディング・システムの別の例として、図5ないし図6を参照しながらプロセス・フロー400について説明する。プロセス・フロー300と同様に、プロセス・フロー400は、複数のスレッド、例えばスレッドX、スレッドY、およびスレッドZによって実行される。プロセス・フロー400を開始するために、スレッドXは、ブロック410、412および414で、ゲスト命令を実行し、割込み可能待ち状態PSWをロードし、ファームウェア待ち状態ループに入る。スレッドYおよびスレッドZもゲスト命令を実行し、それによってスレッドXはSIE出口を呼び出さずに待ち状態ループに留まる。
さらに、ブロック432で、スレッドXは依然としてファームウェア待ち状態ループにあるが、スレッドZは、タイプNインターセプションのためにSIE出口を呼び出させる何かを実行する。ライン434で、スレッドZが最初のSIE出口同期点に達し、このSIE出口同期点が、他のスレッドに対応する内部割込み機構を使用してSIEを終了させる合図となる(例えばブロック436)。これに応答して、スレッドXはブロック440で、SIE出口要求のためのファームウェア待ち状態ループを出て、SIE出口のためのファームウェア割込みハンドラに入り、SIE出口を呼び出す。従って、スレッドXはライン442で最初のSIE出口同期点に達する。次に、ブロック444で、スレッドXにおいてゲスト非同期割込みが保留になるが、このスレッドはすでにSIE出口であるため、この割込みは提示されない。ブロック450で、スレッドYが割込み可能点に達すると、SIE出口要求のための内部割込みを行い、SIE出口を呼び出す。次に、スレッドYはブロック452で最初のSIE出口同期ループに達する。
すべての有効スレッド(例えばスレッドX、Y、Z)が最初の同期点に達すると(例えばライン460)、各スレッドが独立してそれぞれの状態記述の更新を終了し、適切なインターセプションを示す(例えばブロック470、472、474)。例えば、スレッドXは、ブロック470で、PSWビット14が1であるため、待ち状態インターセプションを行う。スレッドYは、ブロック472でアクションなしインターセプションを行い、スレッドZはブロック474で元のタイプNインターセプションを行う。上述のプロセス・フロー300で説明したように、この例では各スレッドYおよびZがそのすべての状態記述更新を終了すると、そのスレッドは最後のSIE出口同期点に達し、そのスレッドの命令実行を停止する(472、474)。例えば、ブロック482、484で、スレッドYおよびZは、最後のSIE出口同期点に達したことを示すためと、命令実行を停止するために、ハードウェア制御ビットを設定する。次に、ブロック490で、スレッドXは、すべてのスレッドがすべての状態記述更新を終了したことを意味する、すべてのスレッドの最後の同期点への到達を待ち、協調的SIE出口を完了する。最後に、ブロック492でスレッドXは次に、マルチスレッドSIEインターセプションをホストに提示し、ホストがそのマルチスレッドSIEインターセプションを処理する。
例えば、非マルチスレッディング・ゲスト・オペレーティング・システムには、警告追跡割込みを介して、そのタイム・スライスがまもなく満了することを通知してもよい。ハイパーバイザは、ホストCPUタイマを使用して1つのゲスト・プロセッサ・コアのタイム・スライスが満了した時点を判断し、別のゲスト・コアがそのコアのタイム・スライスを開始することができるようにする。さらに、ハイパーバイザは、ターゲット状態記述にビットを設定することによって、別のプロセッサからリモートで、警告追跡割込みをゲスト論理コアに提示する必要があることを示すことができる。猶予期間がアクティブでない間にホスト・タイマ割込みが保留中であることをマシンが検出した場合、または、状態記述で警告追跡割込みが保留中であることをマシンが検出した場合、そのマシンは猶予期間に入る。猶予期間は、タイム・スライスに最小の追加時間を加えることによって実現され、割込み可能にされると警告追跡割込みを介してゲスト・オペレーティング・システムにそのオペレーティング・システムのタイム・スライスがまもなく満了することを通知する。この追加の時間によって、警告追跡割込み認識ゲストは、プロセッサから撤収させる前に適切なアクション(しばしば「クリーンアップ」と呼ばれる)をとることができる。このようなアクションには、例えば、システム・レベルのロックを解除することが含まれ得る。ゲストがそのクリーンアップを完了すると、ゲストは診断肯定応答を発行することによってその完了を通知する必要がある(例えば、ゲストは、警告追跡肯定応答を示すコード「049C」を使用してDIAGNOSE(診断)命令を実行する)。猶予期間が満了する前にDIAG「049C」警告追跡割込み肯定応答が発行された場合、システムは命令インターセプションによってインターセプトしてハイパーバイザに戻し、ハイパーバイザはそれをタイム・スライスの終わりとして処理する。上記と異なり、ゲスト・オペレーティング・システムがDIAG「049C」警告追跡割込み肯定応答を発行する前に猶予期間が満了する場合、ホスト・タイマ割込みが提示され、ハイパーバイザがタイム・スライスの終わりを処理する。
次に、マルチスレッディング・システムで実行される警告追跡割込み(「WTI」)処理について説明する。ゲストにおいてマルチスレッディングがアクティブである場合、ハイパーバイザがコア単位でゲスト・タイム・スライスを管理する。単一のホスト・タイマがあり、それに関連付けられた割込みによって、コアにおけるすべてのスレッドについてゲスト・タイム・スライスが終了した時点が示される。また、ハイパーバイザが一次状態記述でWTIを保留にする場合、二次状態記述においてWTI割込みを保留にするのはマルチスレッディング・システムの分担である。ホスト・タイマ割込みが発生するか、または一次状態記述で保留WTIが検出されると、コアは猶予期間に入る。その結果のWTI割込みは保留状態のままとされ、割込み可能にされるとそれぞれの有効ゲスト・スレッドで別々に提示される。上述のように、適切な場合には、割込み可能待ちをロードするゲストはファームウェア待ち状態ループに入る。しかし、猶予期間がアクティブである場合、または割込み可能待ち状態がロードされるときにWTIが保留中である場合、ゲストはファームウェア待ち状態ループではなくSIE出口同期ループに入る。この2つのループの違いは、待ち状態ループが保留割込みを処理し、それによってSIE出口を完了するのに要する時間が長くなる可能性があり、WTIに応じた望ましい結果とは正反対の結果になる可能性があることである。
WTIおよびコア・ディスパッチに関するプロセス・フロー500の一例を示す図5を参照しながら、マルチスレッディング・システムについて説明する。図のように、プロセス・フロー500には、警告追跡の観点からホスト・プロセッサ・タイマ(「CPT」)割込みの処理が記載されている。CPTが保留になり、その割込みを行うためにホストが割込み可能にされた場合、その割込みを処理するためにファームウェアが呼び出される。即ち、プロセス・フロー500は、決定ブロック502で、プロセッサ・コアがホスト・モードで動作しているか否かを調べる。コアがホスト・モードで動作している場合(例えば「Y」矢印で示すように)、プロセス・フロー500はブロック504に進み、ホストCPT割込みが提示される。コアがホスト・モードで動作していない場合(例えば「N」矢印で示すように)、コアはゲスト・モードで動作しており、プロセス・フロー500は決定ブロック506に進む。
決定ブロック506で、プロセス・フロー500は猶予期間がアクティブであるかを調べる。猶予期間がまだ進行中でない場合、プロセス・フロー500は(例えば「N」矢印で示すように)移行して、決定ブロック508でこのゲストについて警告追跡がサポートされているか判断する。警告追跡がサポートされている場合、プロセス・フロー500は(例えば「Y」矢印で示すように)ブロック510に進み、状態記述内に存在し、このコアの一次状態記述において警告追跡要求が保留中であることを示す、Tビットを設定する。それ以外の場合、猶予期間が進行中でないか、または警告追跡がサポートされていないか、あるいはその両方である場合、プロセス・フロー500はブロック512に進む。ブロック512で、SIE出口が呼び出され、従ってホストCPT割込みをホストに提示することができ、ゲスト・マルチスレッド・モードで、他のスレッドはSIEを終了するように合図される。この動作は、MT環境ではホストCPT割込みが提示されると他のスレッドがSIEを終了するように合図される点を除けば非MT環境におけるWTI動作と同じである。
次に、マルチスレッディング・システムの協調的SIE出口とともにWTIについて説明する。ゲスト・インターセプションを行うときに他のスレッドに対してSIEを終了するように合図する実装形態の場合、WTIが保留中であるかまたはコアが猶予期間中である場合にはそのような合図は行うべきではない。その代わりに、マルチスレッディング・システムは、他のスレッドに対して、SIE出口が発生する前にそれぞれのクリーンアップを完了して診断肯定応答を出す機会を与える(例えばゲストは、警告追跡肯定応答を示すコード「049C」を使用したDIAGNOSE命令を実行する)。すべての有効スレッドが同期する前に猶予期間が満了した場合、残りのスレッドは終了するように合図される。
マルチスレッディング環境では、終了するプロセッサは、他のすべての有効プロセッサが、1)猶予期間中に待ち状態になるか、2)コアが猶予期間に入るときに待ち状態であるか、3)クリーンアップが完了したことを示すためにDIAG 049Cを発行した後で、命令割込みのためを含む独立した理由のためにSIEを終了するか、または、4)別のレッドからの合図に応答してSIEを終了するまで、SIE出口同期ループに留まる。典型的かつ望ましい状況は、猶予期間が満了する前にすべてのスレッドが独立してクリーンアップを完了し、DIAG 049C WTI肯定応答を発行するか、またはそのコアで猶予期間に入るときに待ち状態になることである。警告追跡のためのMT特有の動作は、プロセッサから撤去される前に各スレッドでオペレーティング・システムがクリーンアップを行うことができるようにするために、猶予期間中のSIE出口の合図を遅らせることである。
コア・ディスパッチ環境における警告追跡に関するプロセス・フロー600の一例を示す図8ないし図10を参照しながら、マルチスレッディング・システムについて説明する。全体として、プロセス・フロー600は、警告追跡要求が保留になったときの任意の所定のスレッド上の動作を示す。従って、プロセス・フロー600は、任意のスレッド(例えば一次または二次スレッド)のTビットがオンのときにブロック602で開始する。一次状態記述におけるTビットは、図7に示すようにマルチスレッディング・システムが、ホスト・タイマ割込みを処理する場合に設定するか、またはハイパーバイザが設定することができる。マルチスレッディング・システムによってTビットが検出されると、決定ブロック604でマルチスレッディング・システムはコアが猶予期間中であるか否かを判断する。コアが猶予期間中でない場合(例えば「N」矢印で示すように)、決定ブロック606でマルチスレッディング・システムはコアがゲスト・マルチスレッド環境で動作しているか否かを判断する。コアがゲスト・マルチスレッド環境で動作している場合、プロセス・フロー600はブロック608に進み、マルチスレッディング・システムは状態記述グループ内のすべての有効二次スレッドの二次状態記述にTビットを設定する。なお、二次スレッドの状態記述へのTビットの伝播は、このプロセス・フローが一次スレッドに対して実行されている場合にのみ行われる。また、コアがゲスト・マルチスレッド環境で動作しているか否かにかかわらず、プロセス600はブロック610に進み、コアは猶予期間に入る(例えば、ブロック602に示すようにTビットがオンで、ブロック604に示すように猶予期間に入っていない場合)。猶予期間に入ることは、ゲスト・タイム・スライスを短時間だけ延長することと、猶予期間がアクティブであることを示す標識を設定することを含む。猶予期間は、WTIをいずれかのスレッドまたはすべてのスレッドに提示することができない場合でも開始する。次に、決定ブロック612で、マルチスレッディング・システムは、ゲスト・スレッドがWTI割込み可能にされているか否かを判断する。マルチスレッディング・システムが、ゲスト・スレッドがWTI割込み可能にされていると判断すると、ブロック614でその割込みが提示され、ゲスト・オペレーティング・システムはブロック616でクリーンアップの開始などの適切なアクションをとることができる(プロセス・フロー600は次に、フロー連結記号「a」を介して図9の決定ブロック618に進む)。マルチスレッディング・システムが、ゲストがWTI割込み可能にされていないと判断した場合、WTIを提示することができず、ゲストが割込み可能になるまで、またはSIE出口のための別の条件が発生するまで、ゲストの実行が継続する(プロセス・フロー600は次にフロー連結記号「b」を介して図10の決定ブロック642に進む)。
図9に示すように、WTI割込みがゲストに提示されると、マルチスレッディング・システムは、クリーンアップの完了中に特定の条件が発生していないか監視する。プロセス・フロー600は決定ブロック618に進み、マルチスレッディング・システムは、クリーンアップが完了する前に猶予期間が終了したか否かを判断する。猶予期間が終了した場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック620に進み、SIE出口が呼び出され、その他のスレッドは終了するように合図される。なお、猶予期間中に他の理由でSIE出口が呼び出された場合、他のスレッドにそれぞれのクリーンアップを完了させる時間を与えるため、他のスレッドには合図されない。猶予期間が終了していなかった場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック622に進み、マルチスレッディング・システムは、クリーンアップが完了する前に待ち状態PSWがロードされたか否かを判断する。待ち状態PSWがロードされた場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック624に進み、このスレッドについて待ち状態インターセプションが提示される。待ち状態PSWがロードされていない場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック626に進み、マルチスレッディング・システムは、クリーンアップが完了する前にゲスト・インターセプションが発生したか否かを判断する。ゲスト・インターセプションが発生した場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック628に進み、このスレッドについてそのインターセプションが行われる。ゲスト・インターセプションが発生していない場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック630に進み、マルチスレッディング・システムは、クリーンアップが完了する前にホスト割込みが発生したか否かを判断する。ホスト割込みが発生した場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック632に進み、その割込みを提示することができるようにSIE出口が呼び出される。ホスト割込みが発生していない場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック634に進み、マルチスレッディング・システムは、クリーンアップが完了する前に別のスレッドからSIE出口要求を受け取ったか否かを判断する。別のスレッドからSIE出口要求を受け取った場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック636に進み、このスレッドについてアクションなしインターセプションが行われる。別のスレッドからSIE出口要求を受け取っていない場合(例えば「N」矢印で示すように)、プロセス・フロー600はブロック638に進み、ゲスト・オペレーティング・システムがクリーンアップを完了することができる場合、および他の条件のいずれかが発生する前に、DIAG「049C」WTI肯定応答が発行される。次に、ブロック640で、DIAGのための命令インターセプションが発生する。すべてのスレッドがSIE出口最終同期ループに達すると、一次スレッドでホストにゲスト・インターセプションまたはホスト割込みあるいはその両方が提示される。
図10に示すように、WTI割込みが可能にされていない場合、ゲスト・スレッドは、クリーンアップが行われるようにWTI割込み許可がないか監視することを継続するとともに、猶予期間の終わりを含む他の条件がないか監視する。プロセス・フロー600は決定ブロック642に進み、マルチスレッディング・システムは、WTIが割込み可能になって割込みがソフトウェアに提示される前に猶予期間が終了したか否かを判断する。猶予期間が終了した場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック620に進み、SIE出口が呼び出され、その他のスレッドは終了するように合図される。なお、この場合も、他の何らかの理由で猶予期間中にSIE出口が呼び出された場合、他のスレッドにそれぞれのクリーンアップを完了させる時間を与えるために、他のスレッドには合図しない。猶予期間が終わっていない場合(例えば「N」矢印に示すように)、プロセス・フロー600は決定ブロック644に進み、マルチスレッディング・システムはWTIが提示される前に待ち状態PSWがロードされたか否かを判断する。待ち状態PSWがロードされている場合(例えば「Y」矢印に示すように)、プロセス・フロー600はブロック624に進み、このスレッドについて待ち状態インターセプションが提示される。待ち状態PSWがロードされていない場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック646に進み、マルチスレッディング・システムは、このスレッドがゲスト・インターセプションを必要としているか否かを判断する。ゲスト・インターセプションが発生した場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック628に進み、このスレッドについてそのインターセプションが行われる。ゲスト・インターセプションが発生していない場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック648に進み、マルチスレッディング・システムは、WTIが提示される前にホスト割込みが発生したか否かを判断する。ホスト割込みが発生している場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック632に進み、その割込みを提示することができるようにSIE出口が呼び出される。ホスト・インターセプションが発生していない場合(例えば「N」矢印で示すように)、プロセス・フロー600は決定ブロック650に進み、マルチスレッディング・システムは、別のスレッドからSIE出口要求を受け取ったか否かを判断する。別のスレッドからSIE出口要求を受け取った場合(例えば「Y」矢印で示すように)、プロセス・フロー600はブロック636に進み、アクションなしインターセプションが行われる。別のスレッドからSIE出口要求を受け取っていない場合(例えば「N」矢印で示すように)、プロセス・フロー600は(フロー連結記号「c」を介して)図8の決定ブロック612に進み、マルチスレッディング・システムは、ゲストがWTI割込み可能にされているか否かを判断する。
マルチスレッディング環境におけるWTIは、SIE出口同期の合図が行われる前にオペレーティング・システムに追加の合図を行うことを含むように拡張することができる。SIE出口を生じさせた割込みまたはインターセプションに対する期待されるハイパーバイザ応答が、別の異なるゲスト・コアをディスパッチすることである場合には、まだ実行中のスレッドに対してそれらのスレッドがプロセッサからまもなく撤去されることを警告するためにWTIを使用すれば、通常は有用であろう。
一般に、コンピューティング・デバイスはプロセッサ(例えば図1のプロセッサ114)とコンピュータ可読記憶媒体(例えば図1のメモリ116)とを含み、プロセッサは、例えばコンピュータ可読記憶媒体からコンピュータ可読プログラム命令を受け取り、それらの命令を実行することによって、本明細書に記載のプロセスのうちの1つまたは複数を含む、1つまたは複数のプロセスを実行する。
コンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードを使用して作成されたコンピュータ・プログラムから、コンパイルまたは解釈実行することができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がコンピューティング・デバイス上で、または一部がコンピューティング・デバイス上で、または一部がローカル・コンピューティング・デバイス上で一部がリモート・コンピュータ・デバイス上で、または全体がリモート・コンピュータ・デバイス上で実行されてよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してローカル・コンピュータに接続することができ、または接続は外部コンピュータ(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)に対して行ってもよい。実施形態によっては、本発明の各態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク(例えば、通信をサポートするコンピューティング・デバイスと接続との任意の組合せ)を介して外部コンピュータまたは外部記憶デバイスにダウンロードすることもできる。例えば、ネットワークは、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたは無線ネットワークあるいはこれらの組合せであってよく、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでよく、無線技術、セルラー技術などの複数の通信技術を使用してよい。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶する有形のデバイスとすることができる(例えば上述のようなコンピューティング・デバイス)。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、またはこれらの任意の適合する組合せとすることができるが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、以下のものが含まれる。即ち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用するコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、または電線を介して伝送される電気信号などの、一時的な信号自体であると解釈すべきではない。
従って、マルチスレッディング・システムおよび方法またはそれらの要素あるいはこれらの組合せは、関連付けられたコンピュータ可読記憶媒体に記憶された、1つまたは複数のコンピューティング・デバイス上のコンピュータ可読プログラム命令として実装され得る。コンピュータ・プログラム製品は、マルチスレッディング・システムおよび方法の動作を実行するかまたはプロセッサに実行させるかあるいはその両方のために、コンピュータ可読記憶媒体に記憶されたそのようなコンピュータ可読プログラム命令を含み得る。実装されまたは特許請求の範囲に記載され、あるいはその両方であるマルチスレッディング・システムおよび方法またはそれらの要素あるいはこれらの組合せは、使用される待ち状態および警告追跡が協調的SIE終了とともに資源コストを低減するため、コンピュータまたはプロセッサ自体あるいはその両方の機能を向上させる。また、マルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せは、マルチスレッド環境における待ち状態および警告追跡サポートを提供するより効率的な手段を提供する。例えば、共用環境で動作する第1のスレッドの変更済み待ち状態は、その共用環境におけるすべてのスレッドがその変更済み待ち状態になるまで解釈実行開始出口を遅らせる。猶予期間中の警告追跡は、各スレッドが終了する前にそれらのスレッドに「クリーンアップ」する時間を与えるように協調的SIE終了を開始させるために、スレッド間の合図を遅らせる。
言い換えると、改良点には、共用物理プロセッサ環境においてコア上のすべてのスレッドが待ち状態になるまでそのコアをディスパッチされたままにしておく機構と、コア内のスレッドが「クリーンアップ」プロセス中であることを認識し、強制的に終了させられる前にクリーンアップを完了する機会を他のスレッドに与えるために他のスレッドへの「即時」SIE出口の合図を遅らせる機構と、マルチスレッド環境においてSIEをより効果的に終了するために警告追跡割込み機能の使用を活用する機構とを提供することが含まれる。
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることがわかるであろう。
上記のコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される上記の命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている動作/作用を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されてマシンを実現するものであってよい。上記のコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている動作/作用の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイス、あるいはこれらの組合せに対して特定の方式で動作するように指示することができるものであってもよい。
上記のコンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される上記命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている動作/作用を実装するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、運用性および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、規定されている論理演算を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。ある代替実装形態では、ブロックに記載されている動作は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する運用性に応じて、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、規定されている動作または作用を実行する専用ハードウェア・ベースのシステムによって実装されるか、または専用ハードウェアとコンピュータ命令の組合せを実行することができることもわかるであろう。
本発明の様々な実施形態について例示を目的として説明したが、本発明の説明は網羅的であること、または開示されている実施形態に限定することを意図したものではない。当業者には、記載されている実施形態の範囲および趣旨から逸脱することなく多くの変更および変形が明らかであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、または市場に見られる技術の技術的改善を最もよく説明するため、または他の当業者が本明細書で開示されている実施形態を理解することができるようにするために選択されたものである。
本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図していない。本明細書で使用されている単数形の「1つの(a)」、「1つの(an)」および「その(the)」は、文脈が明示しない限り複数形も含むことを意図している。また、本明細書で使用されている「含む(comprisesまたはcomprising)あるいはその両方」という用語は、記載されている特徴、整数、ステップ、動作、要素または構成要素あるいはこれらの組合せの存在を規定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素またはこれらのグループあるいはこれらの組合せの存在または追加を排除しないことがわかるであろう。
本明細書で図示されている流れ図は、一例に過ぎない。本発明の範囲から逸脱することなく本明細書に記載の図またはステップ(または動作)には多くの変形があり得る。例えば、ステップは異なる順序で実行されてもよく、またはステップが追加、削除または修正されてもよい。これらの変形態様のすべては特許請求の範囲に記載の本発明の一部とみなされる。
以上、本発明の好ましい実施形態について説明したが、当業者は、現在および将来の両方にわたり、以下の特許請求の範囲に含まれる様々な改善および改良を加えることができることがわかるであろう。以下の特許請求の範囲は始めに述べた本発明の適切な保護を維持するものと解釈すべきである。

Claims (20)

  1. 第1のスレッドと1組の残りのスレッドとを含む複数のスレッドをコンピュータ・プロセッサ・コア上で実行する方法であって、
    解釈実行開始出口条件が存在すると判断することと、
    前記コンピュータ・プロセッサ・コアが猶予期間内にあると判断することと、
    前記第1のスレッドによって、前記1組の残りのスレッドのいずれにも合図することなく解釈実行開始出口同期ループに入ることと、
    前記猶予期間が満了するかまたは前記残りのスレッドのそれぞれが対応する解釈実行開始出口同期ループに入るまで、前記第1のスレッドによって前記解釈実行開始出口同期ループに留まることを含む方法。
  2. 前記第1のスレッドが警告追跡割込みのために保留中であると判断することと、
    前記第1のスレッドによって、警告追跡割込み保留条件を残りのスレッドのそれぞれに伝播することと、
    前記第1のスレッドによって、前記コンピュータ・プロセッサ・コアを前記猶予期間に入らせることをさらに含む、請求項1に記載の方法。
  3. 前記コンピュータ・プロセッサ・コアの前記猶予期間が満了したと判断することと、
    前記第1のスレッドによって、前記猶予期間の満了に基づいて前記残りのスレッドのそれぞれに対して前記対応する解釈実行開始出口同期ループに移行するように合図することをさらに含む、請求項1に記載の方法。
  4. 前記第1のスレッドのために待ち状態が保留中であると判断することと、
    前記第1のスレッドのために警告追跡割込み保留条件が存在すると判断することと、
    前記警告追跡割込み保留条件が存在するとの前記判断に基づいて、前記解釈実行開始出口同期ループに入ることをさらに含む、請求項1に記載の方法。
  5. 前記警告追跡割込み保留条件が存在するとの前記判断に基づいて、警告追跡割込みを提示することなく、かつ前記残りのスレッドのそれぞれに合図することなく、前記解釈実行開始出口同期ループに入る、請求項4に記載の方法。
  6. 前記第1のスレッドは前記複数のスレッドのうちの一次スレッドである、請求項1に記載の方法。
  7. コンピュータ・プロセッサ・コア上で実行される複数のスレッドのために待ち状態を実現する方法であって、
    第1のスレッドと1組の残りのスレッドとを含む前記複数のスレッドによって命令ストリームを実行することと、
    前記第1のスレッドが第1の待ち状態ループに入ったと判断することと、
    前記残りのスレッドのいずれかが対応する待ち状態ループに入っていないと判断することと、
    前記残りのスレッドのそれぞれが前記対応する待ち状態ループに入るまで、前記第1のスレッドによって前記第1の待ち状態ループに留まることを含む方法。
  8. 前記第1のスレッドでの非同期割込み保留に応答して前記第1の待ち状態ループを出ることをさらに含む、請求項7に記載の方法。
  9. 前記残りのスレッドのうちの1つから解釈実行開始出口要求信号を受け取ることに応答して前記第1の待ち状態ループから出ることをさらに含む、請求項7に記載の方法。
  10. 第1のスレッドと1組の残りのスレッドとを含む複数のスレッドをプロセッサのコンピュータ・プロセッサ・コア上で実行するシステムであって、前記プロセッサとメモリとを含み、
    前記プロセッサは、
    解釈実行開始出口条件が存在すると判断し、
    前記コンピュータ・プロセッサ・コアが猶予期間内にあると判断し、
    前記第1のスレッドによって、前記1組の残りのスレッドのいずれにも合図することなく解釈実行開始出口同期ループに入り、
    前記猶予期間が満了するかまたは前記残りのスレッドのそれぞれが対応する解釈実行開始出口同期ループに入るまで、前記第1のスレッドによって前記解釈実行開始出口同期ループに留まる
    ように構成された、システム。
  11. 前記プロセッサは、
    前記第1のスレッドが警告追跡割込みのために保留中であると判断し、
    前記第1のスレッドによって前記残りのスレッドのそれぞれに警告追跡割込み保留条件を伝播し、
    前記第1のスレッドによって前記コンピュータ・プロセッサ・コアを前記猶予期間に入らせる
    ようにさらに構成された、請求項10に記載のシステム。
  12. 前記プロセッサは、
    前記コンピュータ・プロセッサ・コアの前記猶予期間が満了したと判断し、
    前記猶予期間の満了に基づいて、前記第1のスレッドによって前記残りのスレッドのそれぞれに対して前記対応する解釈実行開始出口同期ループに移行するように合図する
    ようにさらに構成された、請求項10に記載のシステム。
  13. 前記プロセッサは、
    前記第1のスレッドについて待ち状態が保留中であると判断し、
    前記第1のスレッドについて警告追跡割込み保留条件が存在すると判断し、
    前記警告追跡割込み保留条件が存在するとの前記判断に基づいて、前記解釈実行開始出口同期ループに入る
    ようにさらに構成された、請求項10に記載のシステム。
  14. 警告追跡割込みを提示することなく、かつ、前記残りのスレッドのそれぞれに合図することなく、前記警告追跡割込み保留条件が存在するとの前記判断に基づいて前記解釈実行開始出口同期ループに入る、請求項13に記載のシステム。
  15. 前記第1のスレッドは前記複数のスレッドのうちの一次スレッドである、請求項10に記載のシステム。
  16. プロセッサのコンピュータ・プロセッサ・コア上で実行される複数のスレッドのために待ち状態を実現するシステムであって、前記プロセッサとメモリとを含み、
    前記プロセッサは、
    第1のスレッドと1組の残りのスレッドとを含む前記複数のスレッドによって命令ストリームを実行し、
    前記第1のスレッドが第1の待ち状態ループに入ったと判断し、
    前記残りのスレッドのいずれかが対応する待ち状態ループに入っていないと判断し、
    前記残りのスレッドのそれぞれが前記対応する待ち状態ループに入るまで、前記第1のスレッドによって前記第1の待ち状態ループに留まる
    ように構成された、システム。
  17. 前記プロセッサは、前記第1のスレッドでの非同期割込み保留に応答して前記第1の待ち状態ループから出るようにさらに構成された、請求項16に記載のシステム。
  18. 前記プロセッサは、
    前記残りのスレッドのうちの1つからの解釈実行開始出口要求信号を受け取ることに応答して前記第1の待ち状態ループから出るようにさらに構成された、請求項16に記載のシステム。
  19. 第1のスレッドと1組の残りのスレッドとを含む複数のスレッドをプロセッサのコンピュータ・プロセッサ・コア上で実行するためのプログラム命令が具現化されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令は前記プロセッサに、
    解釈実行開始出口条件が存在すると判断させ、
    前記コンピュータ・プロセッサ・コアが猶予期間内にあると判断させ、
    前記第1のスレッドによって、前記1組の残りのスレッドのいずれにも合図することなく解釈実行開始出口同期ループに入らせ、
    前記猶予期間が満了するかまたは前記残りのスレッドのそれぞれが対応する解釈実行開始出口同期ループに入るまで、前記第1のスレッドによって前記解釈実行開始出口同期ループに留まらせる
    ように前記プロセッサにより実行可能である、コンピュータ・プログラム製品。
  20. プロセッサのコンピュータ・プロセッサ・コア上で実行される複数のスレッドのために待ち状態を実現するためのプログラム命令が具現化されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令は前記プロセッサに、
    第1のスレッドと1組の残りのスレッドとを含む前記複数のスレッドによって命令ストリームを実行させ、
    前記第1のスレッドが第1の待ち状態ループに入ったと判断させ、
    前記残りのスレッドのいずれかが対応する待ち状態ループに入っていないと判断させ、
    前記残りのスレッドのそれぞれが前記対応する待ち状態ループに入るまで、前記第1のスレッドによって前記第1の待ち状態ループに留まらせる
    ように前記プロセッサにより実行可能である、コンピュータ・プログラム製品。
JP2017516711A 2014-10-20 2015-09-14 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム Active JP6537600B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/518,095 US9898289B2 (en) 2014-10-20 2014-10-20 Coordinated start interpretive execution exit for a multithreaded processor
US14/518,095 2014-10-20
PCT/EP2015/070984 WO2016062460A1 (en) 2014-10-20 2015-09-14 Improved efficiency for coordinated start interpretive execution exit for a multithreaded processor

Publications (2)

Publication Number Publication Date
JP2017534970A true JP2017534970A (ja) 2017-11-24
JP6537600B2 JP6537600B2 (ja) 2019-07-03

Family

ID=54106366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516711A Active JP6537600B2 (ja) 2014-10-20 2015-09-14 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム

Country Status (7)

Country Link
US (4) US9898289B2 (ja)
EP (1) EP3210115B1 (ja)
JP (1) JP6537600B2 (ja)
CN (1) CN107077373B (ja)
HU (1) HUE046174T2 (ja)
LT (1) LT3210115T (ja)
WO (1) WO2016062460A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE488259T1 (de) 2006-12-28 2010-12-15 Boston Scient Ltd Bioerodierbare endoprothesen und herstellungsverfahren dafür
US20100217370A1 (en) 2009-02-20 2010-08-26 Boston Scientific Scimed, Inc. Bioerodible Endoprosthesis
US20110160839A1 (en) 2009-12-29 2011-06-30 Boston Scientific Scimed, Inc. Endoprosthesis
JP5834071B2 (ja) 2010-05-14 2015-12-16 ボストン サイエンティフィック サイムド,インコーポレイテッドBoston Scientific Scimed,Inc. ステント
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
CN111723920B (zh) * 2019-03-22 2024-05-17 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN110716755B (zh) * 2019-10-14 2023-05-02 浙江诺诺网络科技有限公司 一种线程退出方法、装置、设备及可读存储介质
CN112182770A (zh) * 2020-10-10 2021-01-05 中国运载火箭技术研究院 在线迭代计算方法、装置及计算机存储介质、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130185732A1 (en) * 2012-01-18 2013-07-18 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US20140282564A1 (en) * 2013-03-15 2014-09-18 Eli Almog Thread-suspending execution barrier

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5060139A (en) 1989-04-07 1991-10-22 Tektronix, Inc. Futurebus interrupt subsystem apparatus
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6842796B2 (en) 2001-07-03 2005-01-11 International Business Machines Corporation Information extraction from documents with regular expression matching
US20050015768A1 (en) * 2002-12-31 2005-01-20 Moore Mark Justin System and method for providing hardware-assisted task scheduling
US7774585B2 (en) 2003-11-12 2010-08-10 Infineon Technologies Ag Interrupt and trap handling in an embedded multi-thread processor to avoid priority inversion and maintain real-time operation
JP2005284749A (ja) 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7765547B2 (en) 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7493436B2 (en) 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US8060881B2 (en) * 2007-05-15 2011-11-15 Microsoft Corporation Small barrier with local spinning
US8826299B2 (en) * 2007-08-13 2014-09-02 International Business Machines Corporation Spawned message state determination
US9201673B2 (en) 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US9213586B2 (en) 2009-03-18 2015-12-15 Sas Institute Inc. Computer-implemented systems for resource level locking without resource level locks
JP2011150422A (ja) 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
US8407701B2 (en) 2010-06-24 2013-03-26 International Business Machines Corporation Facilitating quiesce operations within a logically partitioned computer system
US8595469B2 (en) * 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8850450B2 (en) * 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130185732A1 (en) * 2012-01-18 2013-07-18 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US20140282564A1 (en) * 2013-03-15 2014-09-18 Eli Almog Thread-suspending execution barrier

Also Published As

Publication number Publication date
US20160110195A1 (en) 2016-04-21
US20160110218A1 (en) 2016-04-21
US9898290B2 (en) 2018-02-20
US11150905B2 (en) 2021-10-19
CN107077373B (zh) 2020-09-29
WO2016062460A1 (en) 2016-04-28
CN107077373A (zh) 2017-08-18
US20180018174A1 (en) 2018-01-18
EP3210115B1 (en) 2019-08-21
EP3210115A1 (en) 2017-08-30
JP6537600B2 (ja) 2019-07-03
US10908903B2 (en) 2021-02-02
US20180018175A1 (en) 2018-01-18
US9898289B2 (en) 2018-02-20
LT3210115T (lt) 2019-09-25
HUE046174T2 (hu) 2020-02-28

Similar Documents

Publication Publication Date Title
JP6537600B2 (ja) 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム
US8935698B2 (en) Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US8561070B2 (en) Creating a thread of execution in a computer processor without operating system intervention
KR101884579B1 (ko) 멀티스레드된 프로세서를 위한 효율적인 인터럽션 라우팅
US9817696B2 (en) Low latency scheduling on simultaneous multi-threading cores
US9766917B2 (en) Limited virtual device polling based on virtual CPU pre-emption
US11243800B2 (en) Efficient virtual machine memory monitoring with hyper-threading
JP2007157125A (ja) サーバ内のブロック化された処理を安全に中断するための方法、システム、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190404

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190604

R150 Certificate of patent or registration of utility model

Ref document number: 6537600

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150