JP2017538184A - 入出力(i/o)割込みの改良型優先ルーティングを実施する方法、システムおよびプログラム - Google Patents

入出力(i/o)割込みの改良型優先ルーティングを実施する方法、システムおよびプログラム Download PDF

Info

Publication number
JP2017538184A
JP2017538184A JP2017516681A JP2017516681A JP2017538184A JP 2017538184 A JP2017538184 A JP 2017538184A JP 2017516681 A JP2017516681 A JP 2017516681A JP 2017516681 A JP2017516681 A JP 2017516681A JP 2017538184 A JP2017538184 A JP 2017538184A
Authority
JP
Japan
Prior art keywords
guest
interrupt
threads
interrupted
thread processing
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
JP2017516681A
Other languages
English (en)
Other versions
JP6537599B2 (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 JP2017538184A publication Critical patent/JP2017538184A/ja
Application granted granted Critical
Publication of JP6537599B2 publication Critical patent/JP6537599B2/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/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • 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
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

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

Abstract

【課題】入出力(I/O)割込みの改良型優先ルーティングを実施するシステムおよび方法を提供する。【解決手段】システムおよび方法は、コアについてI/O割込みが保留中であるか否かを判断し、I/O割込みが保留中であるとの判断に応じて、コアの複数のゲスト・スレッドのうちのいずれかが割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断する。また、システムおよび方法は、ゲスト・スレッド処理のために割込み可能な複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるか否かを判断し、ゲスト・スレッド処理のために割込み可能な複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるとの判断に応じて、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにI/O割込みをルーティングする。【選択図】図1

Description

本発明は、一般には、マルチスレッド・プロセッサの効率的割込みルーティングに関し、より詳細には、ホストまたは割込み可能コアによる待ち状態のスレッドの処理を容易にする、入出力(I/O)割込みの改良型優先ルーティングに関する。
一般に、プロセッサ速度は過去数十年間で向上したが、それに応じたメモリ・アクセス速度の向上はなかった。その結果として、コンピューティング・システムにおけるプロセッサ・サイクル・タイムが高速であるほど、メモリからのデータを待つ際の遅延が顕著になる。このような遅延の影響は、コンピューティング・システムのプロセッサ内のマルチスレッディングによって低減される場合がある。マルチスレッディングは、プロセッサの様々なコアをスレッドと呼ばれる複数の命令ストリームが共用することができるようにする。例えば、コアによって処理されている第1のスレッドにおける待ち時間中に、第2のスレッドがそのコアの資源を使用することができる。
しかし、この待ち時間を利用するためには、コアはI/O割込みを受け取る必要がある。I/O割込みの現在の管理方法では、割込み可能なホスト(例えばハイパーバイザ)が、コアの割込み可能ゲストよりも高い優先順位で処理割込みを受け取る必要がある。従って、I/O割込み処理を完了するために、ホスト自体がゲストの割込みの最初の処理を行い、その後、割込み可能スレッド、場合によってはそのコア上で動作していた同じスレッドをディスパッチする必要がある。残念ながら、現ゲスト・スレッドのうちの1つが同じI/O割込みが可能である間のホストによるI/O割込みのこのような現在の管理方法は、処理待ち時間を生じさせる。従って発明が解決しようとする課題はマルチスレッド・プロセッサの効率的割込みルーティングの方法を提供することである。
本発明の一実施形態によると、入出力(I/O)割込みの改良型優先ルーティングを実施する方法は、プロセッサが、コアについて前記I/O割込みが保留中であるか否かを判断することと、プロセッサが、I/O割込みが保留中であるとの判断に応じて、コアの複数のゲスト・スレッドのいずれかが、割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断することと、プロセッサが、ゲスト・スレッド処理のために割込み可能な複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるか否かを判断することと、ゲスト・スレッド処理のために割込み可能な複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるとの判断に応じて、プロセッサが前記I/O割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングすることとを含む。
本発明の技術により、その他の特徴および利点も実現される。本発明のその他の実施形態および態様が本明細書で詳細に記載されており、特許請求の範囲に記載の発明の一部とみなされる。その利点および特徴とともに本発明についてよりよく理解するために、本明細書の記載および図面を参照されたい。
本発明とみなされる対象物は、本明細書末尾にある特許請求の範囲で詳細に示され、明確に請求されている。本発明の上記およびその他の特徴および利点は、以下の詳細な説明を添付図面とともに読めば明らかになる。
マルチスレッディング・システムのコンピューティング・デバイスの概略を示す図である。 マルチスレッディング・システムのプロセッサの概略を示す図である。 マルチスレッディング・システムによるプロセス・フローを示す図である。 マルチスレッディング・システムによるプロセス・フローを示す図である。 マルチスレッディング・システムによるプロセス・フローを示す図である。 マルチスレッディング・システムによるプロセス・フローを示す図である。
上述のように、マルチスレッド・プロセッサのホストによるI/O割込みの管理によって、処理待ち時間が生じる。従って、ホストまたは割込み可能コアが現在待ち状態にあるスレッドを優先させることを容易にする、入出力(I/O)割込みの改良型優先ルーティングが必要である。
一般には、本明細書で開示する本発明の実施形態は、複数のスレッドを処理するために複数のコアのうちの少なくとも1つのコアを使用するマルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せを含むことができる。また、任意の時点で、複数のコアの外部で発信された割込み信号を、複数のコアにブロードキャストすることもできる。割込み信号がブロードキャストされると、割込み可能なコアのうちの1つのコアにのみ割込み信号を送る、複数コアのうちの割込み可能コア間の直列化が行われる。即ち、I/O割込みは浮動割込みである(例えば、システムにおいてI/O割込みが保留にされると、そのI/O割込みはシステム内のすべての物理コアで保留にされる)。その後、それらのコア上の各スレッドはそれらの割込みが可能とされるかまたは不能にされる。例えば、以下でさらに説明するように、割込み可能または割込み不能は、ゲスト・プログラム状況ワード・ビット6(word bit 6:PSW.6)、ゲスト制御レジスタ6(control register:CR6)、ホストPSW.6、およびゾーン・マスク・テーブル(zone mask table:ZMT)に基づくことができる。システムにおいて割込み可能な各コア上のハードウェアが独立してI/O割込みファームウェア・ルーチンを呼び出し、その割込みがゲスト割込みであるかホスト割込みであるかをファームウェアに示す。このファームウェア・ルーチンは、呼び出されると割込みの「デキュー」を試みる。このデキューに応答して、システム・ハードウェアが1つのコア(例えばデキューを要求した最初のコア)に対して、そのコアが割込みのデキューに成功したことを示し、システムにおいて保留でなくなるようにそのI/O割込みをキューから除去する。システム内の他のコアが同じI/O割込みのデキューを試みた場合、そのデキューが失敗したことがそのコアに通知される。割込みのデキューに成功したコア上のファームウェアは、ハードウェアによって決まる優先順位に基づいてそのI/O割込みをハイパーバイザ(例えばホスト)またはゲスト・ソフトウェアに提示する。ゲストがアクティブである間に割込みがホストに提示される場合は、ファームウェアがハードウェアにおいてゲスト状態を保存してホスト状態を復元するために必要とする処理がある。ハイパーバイザが割込みを受け取ると、ハイパーバイザにもゲスト状態を復元してそのI/O割込みを適切なゲストに提示するために行う追加の作業がある。
動作時、例えばチャネル・サブシステムからシステムにI/O割込みが提示された場合、(例えばその割込みに関連付けられた)割込みデバイスのゾーンおよび割込みサブクラス(interrupt subclass:ISC)に対応するビットが、各コアの保留割込みアレイ(pending interruption array:PIA)に設定される。ISMは、ビットのマスクであり、ISCごとに1つずつ設けられ、例えば割込み許可を制御するためのCR6におけるISMである。PIA項目はゾーン番号が付けられ、同様にISMと考えることもできる。一実施形態では、8個のISCがあり、従ってPIAはサポートされている論理区画(LPAR)またはゾーンごとに8ビットを含む。ゲスト・スレッドに関連する唯一のPIA項目は、現在コア・ハードウェア上で動作しているゾーンの保留I/O割込みを表す項目である。現在のゾーンおよび特定のISCについてI/O割込みが保留中の場合、その割込みは、1)ゲストPSW.6でI/O許可がオンになっており、2)ゲストCR6の8ビット割込みサブクラス・マスク(ISM)ビットにおいてそのISCに対応するビットがオンになっている場合に、ゲストにおいて可能にされる。ゲストを実行中のホストの観点から見ると、PIAで示される保留I/O割込みは、現在のゾーンを含めていずれのゾーンにも適用可能である。特定のゾーン内の特定のISCについてI/O割込みが保留中の場合、その割込みは、1)ホストPSWビット6がオンであり、2)対応するZMTにおいてその特定のゾーンおよびISCのための割込み許可がオンになっている場合に、ホストにおいて可能にされる。ZMTには、サポートされているゾーンごとに8個の割込み許可ビットがあり、PIA内のビットに直接対応する。現在のゾーンについて保留中のI/O割込みは、ゲストとホストの両方で同時に可能とすることができる。
PIAにおいて保留中の割込みが1つまたは複数のゲスト・スレッドまたはホストあるいはその両方で可能にされると、コア・ハードウェア上でI/O割込み優先処理が呼び出される。従来の実装形態では、ゲストとホストの両方が任意の所定のスレッドで特定のI/O割込みが可能になっている場合、そのI/O割込みは(例えばホストの優先順位がより高いため)ホストに提示されることになる。本明細書に記載の実施形態では、これと同じ場合に、I/O割込みは代わりにゲストに提示され得る。さらに、ゲストPSWビット14で示されているゲスト待ち状態に基づいて、割込み可能ゲスト・スレッドのうちで優先されているコア上の1つの物理スレッドにのみ特定のI/O割込みを提示するために、優先ハードウェアが追加された。この優先方式は、コア内のスレッド間で優先順位を付ける。さらに、I/O割込みが保留中であって、そのコア上のホストにおいて割込み可能であり、そのコア上のゲスト・スレッドでその割込みが可能とされていないか、またはその割込みがそのコア上で実行されているスレッドに適用されない場合、そのホスト割込みを提示する(例えばそのコア上で割込みを受け付ける)前に遅延が加えられる。これによって、別のコア上の割込み可能なゲスト・スレッドがあればそのゲスト・スレッドが最初にそのI/O割込みを行うことができ、それによってシステム内のコア間で間接的に優先順位が付けられる。
次に図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から、I/Oアダプタとの間で要求を管理してもよい。
物理コアは、論理区画に割り当てられた物理プロセッサ資源を含む。論理区画は、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は、ランダム・アクセス・メモリ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は、それぞれの処理コアが複数のスレッドを実行し、本明細書に記載の改良型ルーティング優先に基づいてI/O割込みを受け取ることが可能な、複数の処理コアを含んでもよい。
図3を参照しながら、マルチスレッディング・システム100による改良型優先ルーティングの一実施形態について説明する。図3は、プロセス・フロー300を示す。プロセス・フロー300は、ブロック305で開始し、処理を必要としPIAで保留になっているI/O割込みが、複数のコアのうちのコア上で可能にされる。I/O割込みは、ゲストPSW.6と、ゲストCR6のISMとを介してコアのゲスト・スレッドについて可能にされる。ホスト監視のために、現在コア上で動作していないゾーンを含めてすべてのゾーンのI/O割込みが、ホストPSW.6およびZMTを介して可能にされる。現在のゾーンについて保留中のI/O割込みがあれば、ゲストとホストの両方で同時に可能とすることができる。
決定ブロック320で、プロセス・フロー300は、ゲスト制御ビットと状況ビットとが、保留I/O割込みが可能にされているか否かを判断する。例えば、プロセス・フロー300は、コアのゲスト・スレッドのいずれかのゲストPSW.6とCR6とで保留I/O割込みが可能になっているか否かを判断する。いずれかのゲスト・スレッドが割込み可能の場合、プロセス・フロー300は決定ブロック325に進み(例えば「Yes」矢印で示すように)、そのコア上にあってその割込みが可能な複数のゲスト・スレッドのいずれかが待ち状態であるか否かを判断する。そのI/O割込みについて待ち状態の割込み可能なゲスト・スレッドがない場合、プロセス・フロー300はブロック330に進み(例えば「No」矢印で示すように)、保留I/O割込みは、その保留I/O割込みが可能とされているゲスト・スレッドにルーティングされる。複数のゲスト・スレッドのうちの少なくとも1つが保留I/O割込みについて待ち状態であり、割込み可能にされている場合、プロセス・フローはブロック335に進み(例えば「Yes」矢印で示すように)、保留I/O割込みはこの割込みのために待ち状態にあり、割込み可能にされているゲスト・スレッドにルーティングされる。このようにして、プロセス・フロー300は、待ち状態のゲスト・スレッドによる処理を容易にするI/O割込みの改良型優先ルーティングを実施する。詳細には、I/O割込みルーティング優先順位は次のように変更される。1つまたは複数の待ち状態の割込み可能スレッドがある場合、それらのスレッドのうちの1つにI割込みが与えられる。待ち状態であって、保留中の割込みが可能にされているスレッドがない場合、I/O割込みはその割込みが可能にされているスレッドに与えられる。また、待ち状態の複数のスレッドにルーティングするか(335)、または待ち状態でない複数のスレッドにルーティングするか(330)の判断は、マルチスレッディング・システム100がランダムまたはその他のルーティング・アルゴリズムを使用して選択してもよい。
別の例として、図4にI/O割込みをルーティングする細分プロセス・フロー400を示す。即ち、マルチスレッディング・システム100のハードウェアが、PIA405内のI/O割込み保留がアクティブなゾーンのI/O割込み保留であり、ゲストPSW.6とゲストCR6とが割込み可能になっていることを検出した後、ブロック430に示すようにゲストにおいてそのI/O割込みが可能にされる。このゲスト割込み許可は、コア上のスレッドごとに独立して適用される。PIA405にいずれかのゾーンのI/O割込み保留がある場合、ホストPSW.6およびZMT410内の対応するビットがオンであれば、ブロック450に示すように、ホスト監視によってその割込みが可能にされる(ただし、ゾーン0にはZMT参照は適用されない)。特定の割込みが、このコア上のゲスト・スレッドとホストの両方で可能になっている場合、その割込みはゲストに与えられる。
この改良型優先ルーティングをマルチスレッディング・システム100によって使用することができるようにする遅延の一実施形態について、図5を参照しながら説明する。図5はプロセス・フロー500を示す。プロセス・フロー500はブロック505で開始し、処理する必要がありPIAで保留になっているI/O割込みが、複数のコアのうちのコア上で可能にされる。I/O割込みは、ゲストPSW.6と、ゲストCR6のISMとを介してコアのゲスト・スレッドについて可能にされる。ホスト監視のために、現在コア上で動作していないゾーンを含めてすべてのゾーンのI/O割込みが、ホストPSW.6およびZMTを介して可能にされる(ただし、ゾーン0にはZMT参照は適用されない)。現在のゾーンについて保留中のI/O割込みがあれば、ゲストとホストの両方で同時に可能とすることができる。
決定ブロック520で、プロセス・フロー500は、ゲスト制御および状況ビットでその保留I/O割込みが可能になっているか否かを判断する。例えば、プロセス・フロー500は、保留I/O割込みが、コアのゲスト・スレッドのうちのいずれかのゲストPSW.6とCR6とで可能になっているか否かを判断する。いずれかのゲスト・スレッドが割込み可能になっている場合、プロセス・フロー500はブロック530に進み(例えば「Yes」矢印で示すように)、保留I/O割込みはその保留I/O割込みが可能になっているゲスト・スレッドにルーティングされる。プロセス・フロー500が、保留I/O割込みに、コア上の複数のスレッドのいずれにおいても可能になっている対応するゲストPSW.6およびCR6がないと判断した場合、プロセス・フロー500は(「No」矢印で示すように)ブロック540に進む。ブロック540で、プロセス・フロー500はその保留I/O割込みについてホスト監視のみが可能になっていると特定し、例えばこのコア上でその割込みを受け付ける前に、(遅延がすでに進行中でない場合は)、遅延を開始する。遅延は、マルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せによって、ハードコーディングまたはプログラムすることができる。ブロック545で、プロセス・フロー500は遅延が完了したか調べる。
遅延が完了していない場合(例えば「No」矢印で示すように)、決定ブロック555で(このコア上で割込みが受け付けられる前の遅延中に)、プロセス・フロー500は、I/O割込み保留がまだあるか否かを判断する。I/O割込みがない場合(例えば別のコアが割込みを受け付けた場合)、プロセス・フロー500はブロック560に進み(例えば「No」矢印で示すように)、ハードウェアI/O割込み優先プロセスを終了する。また、決定ブロック555で、I/O割込みがまだ保留中の場合、プロセス・フロー500はブロック520に戻り(例えば「Yes」矢印で示すように)、遅延を再び調べる前に、ゲスト・スレッド割込み許可がないか複数のスレッドを調べる。この遅延の結果として、そのコア上のスレッドうちの1つまたは別のコア上のスレッドが、ゲストにおいて保留I/O割込みを可能にしてI/O割込みを行うことができるようになる。
一般に、ホストI/O割込みを提示する前の遅延中にプロセス・フロー500がその反復をループするとき、所望の結果は最終的に、元のホスト割込みがこのコアまたは別のコアによってゲスト割込みとして行われたためにPIA内に保留I/O割込みがなくなることである。ブロック545の判断で遅延が完了した場合、プロセス・フロー500はブロック550に進み、(例えば「Yes」矢印で示すように)保留I/O割込みはホスト処理のためにホストにルーティングされる。従って、I/O割込みが遅延の終わりで依然として保留になっている場合にのみ、I/O割込みはホストに与えられる。さらに、一実施形態では、遅延の終わりにすべての可能な保留I/O割込みが実行され、可能なすべてのI/O割込みが処理されるまでは遅延は開始しない。
マルチスレッディング・システム100による改良型優先ルーティングの一実施形態について、図6を参照しながら説明する。図6はプロセス・フロー600を示す。プロセス・フロー600は、ブロック605で始まり、処理する必要がありPIAで保留になっているI/O割込みが、複数のコアのうちのコア上で可能にされる。I/O割込みは、コアのゲスト・スレッドについてゲストPSW.6とゲストCR6のISMとを介して可能にされる。ホスト監視のために、コア上で現在動作していないゾーンを含めてすべてのゾーンのI/O割込みが、ホストPSW.6およびZMTを介して可能にされる。現在のゾーンについて保留中のI/O割込みがあれば、ゲストとホストの両方で同時に可能にされ得る。
決定ブロック620で、プロセス・フロー600は、保留I/O割込みがゲスト制御ビットおよび状況ビットで可能になっているか否かを判断する。例えば、プロセス・フロー600は、保留I/O割込みがコアのゲスト・スレッドのいずれかのゲストPSW.6およびCR6で可能になっているか否かを判断する。いずれかのゲスト・スレッドが割込み可能になっている場合、プロセス・フロー600は、(例えば「Yes」矢印で示すように)決定ブロック625に進み、コア上で実行中の、その割込みが可能にされている複数のゲスト・スレッドのいずれかが、待ち状態になっているか判断する。そのI/O割込みのために待ち状態になっており割込み可能になっているゲスト・スレッドがない場合(例えば「No」矢印で示すように)、プロセス・フロー600はブロック630に進み、保留I/O割込みは、その保留I/O割込みが可能になっているゲスト・スレッドにルーティングされる。複数のゲスト・スレッドのうちの少なくとも1つがその保留I/O割込みについて待ち状態であり、割込み可能になっている場合、プロセス・フローは(例えば「Yes」矢印で示すように)ブロック635に進み、保留I/O割込みは待ち状態の複数のゲスト・スレッドのうち、割込みが可能になっている1つのスレッドにルーティングされる。マルチスレッディング・システム100は、待ち状態の複数の割込み可能なスレッドに対するルーティング(635)か待ち状態でない複数の割込み可能スレッドに対するルーティング(630)かを決定する際に、選択のためにランダムまたはその他のルーティング・アルゴリズムを使用してもよい。
決定ブロック620に戻り、プロセス・フロー600が、保留I/O割込みに、コアの複数のスレッドのうちのいずれかについて可能にされた対応するゲストPSW.6およびCR6がないと判断した場合、プロセス・フロー600は(例えば「No」矢印で示すように)ブロック640に進む。ブロック640で、プロセス・フロー600は、保留I/O割込みについてホスト監視のみが可能になっていると特定しており、ホストへの保留I/O割込みの提示を受け付ける前に、(遅延がすでに進行中でない場合は)、遅延を開始する。遅延は、マルチスレッディング・システム、方法またはコンピュータ・プログラム製品あるいはこれらの組合せによってハードコーディングまたはプログラムすることができる。ブロック645で、プロセス・フロー600は遅延が完了したか確認する。
遅延が完了していない場合(例えば「No」矢印で示すように)、決定ブロック655で(このコア上で割込みを受け付ける前の遅延中に)、プロセス・フロー600は、保留中のI/O割込みがあるか否かを判断する。I/O割込みがない場合、プロセス・フロー600はブロック660に進み、(例えば「No」矢印で示すように)ハードウェアI/O割込み優先処理を終了する。また、決定ブロック655で、I/O割込みがまだ保留中の場合、プロセス・フロー600は(例えば「Yes」矢印で示すように)、ブロック620に戻り、遅延を再び調べる前にゲスト・スレッドI/O割込み許可がないか複数のスレッドを調べる。この遅延の結果として、そのコア上のスレッドうちの1つまたは別のコア上のスレッドが、ゲストにおいて保留I/O割込みを可能にしてI/O割込みを行うことができるようになる。
一般に、ホストI/O割込みを受け付ける前の遅延中にプロセス・フロー600がその反復をループするとき、所望の結果は最終的に、元のホスト割込みがこのコアまたは別のコアによってゲスト割込みとして行われたためにPIA内に保留I/O割込みがなくなることである。ブロック645の判断で遅延が完了した場合、プロセス・フロー600はブロック650に進み、(例えば「Yes」矢印で示すように)保留I/O割込みはホスト処理のためにホストにルーティングされる。従って、I/O割込みが遅延の終わりで依然として保留になっている場合にのみ、I/O割込みはホストに与えられる。さらに、一実施形態では、遅延の終わりにすべての可能な保留I/O割込みが実行され、可能なすべてのI/O割込みが処理されるまでは遅延は開始しない。
従って、上記に鑑み、マルチスレッディング・システム100は、(例えば、その時点で重要な作業を行っていないため)割込みを処理するのに最善の状態にある割込み可能待ち状態のゲスト・スレッドにI/O割込みを提示するか、またはそれが不可能な場合は、待ち状態でない割込み可能ゲスト・スレッドにI/O割込みを提示する。また、マルチスレッディング・システム100は、ホストのZMTによってのみ割込み可能にされたこのコア上のI/O割込みを遅延させることによって、いずれかのゲスト・スレッドが割込み可能とされて割込みを行うための時間を与える。これにより、コアはエミューレーション・モードを出る(例えばコア上のすべてのアクティブ・スレッドを中断させる)必要がなく、I/O割込み可能にされたコアを見つけるための不要なホスト処理もない。また、コアは、エミューレーション・モードから出されず、その結果、I/O割込みを処理するために同じ構成の割込み可能ゲスト・スレッドをコア上に再ディスパッチすることができる。
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム100の別の例では、複数のゲスト・スレッドがアクティブになっている論理コアが物理コアにディスパッチされる場合、それらのスレッドのうちの1つまたは複数が、他のスレッドのうちの1つまたは複数がコア上でアクティブに動作している間に割込み可能待ち状態になっていることができる。アクティブ・スレッドは、PSW.6およびCR6を介してI/O割込み可能とされるか、またはI/O割込み不能とされてもよい。さらに、ホストは、このゾーンまたは何らかの他のゾーンに対するゾーン・マスク・テーブルを介してI/O割込みについて監視することができる。従って、処理を必要とするI/O割込みが可能とされているスレッドが1つのみの場合、そのI/O割込みはそのスレッドにルーティングされる。処理を必要とするI/O割込みが可能とされているスレッドが複数あり、それらのスレッドのうちの少なくとも1つが割込み可能待ち状態の場合、マルチスレッディング・システム100の割込み論理は、そのI/O割込みをそれらのスレッドのうち割込み可能待ち状態である1つのスレッドに優先的に与える。I/O割込みの許可を現在割込み可能待ち状態になっているスレッドに優先的に与えることによって、I/O割込みは有用な動作をしていないスレッドでより速やかに処理され、現在アクティブ状態になっているスレッド上のアプリケーションの実行に割り込むことを回避する。
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム100の別の例では、複数のゲスト・スレッドが、処理を必要とするI/O割込みが可能な状態であり、それらのスレッドのいずれも割込み可能待ち状態ではない場合、マルチスレッディング・システム100のルーティング論理は、ランダムに、または内部アルゴリズム(例えばラウンド・ロビンなど)を使用して、I/O割込みを受け取るスレッドをそのスレッドの割込み可能状態に基づいて選択してもよい。他のISCビットに基づいて異なるI/O割込みが可能な状態にある可能性のある他のすべてのスレッドは、最初のスレッドがその割込みの受け付けを完了するまで待たされる。最初のスレッドが受け付けを完了すると、処理を必要とする残りのI/O割込みがまだ可能な状態にあるスレッドによって後続の保留I/O割込みが処理される。上記のように、I/O割込みのルーティングは、現在待ち状態にあるスレッドがあればそのスレッドを優先させることができる。
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム100の別の例では、処理を必要とするI/O割込みが可能な状態であるスレッドがコア上になく、しかもそのコアでホストがZMTを介してPIAで現在保留になっている割込みがないか監視中である場合、ホストには処理のためにその割込みがただちには許可されない。逆に、そのコア上での割込み処理の許可に遅延を生じさせ、その割込みはPIAで保留のままとなり、処理のためにただちにはホストに許可されない。この遅延によって、このコア上のスレッドまたは何らかの他のコア上のスレッドがそのI/O割込みを可能な状態にし、その後、そのI/O割込みを処理することができる。即ち、遅延が完了した後、I/O割込みが依然として処理を必要とする場合にのみ、そのI/O割込みが処理のためにホストに与えられる。
改良型優先動作または方法あるいはその両方を実行するマルチスレッディング・システム100の別の例では、待ち状態であって、かつ、処理を必要とするI/O割込みが可能とされているゲスト・スレッドがコア上になく、しかも、待ち状態であってその割込みが可能なゲスト・スレッドが少なくとも1つある場合、割込み可能で待ち状態でないスレッドは、処理のために割込みがただちには許可されない。逆に、そのコア上での割込み処理の許可に遅延を生じさせ、その割込みはPIAで保留のままとなり、処理のためにただちにはホストに許可されない。この遅延によって、そのコア上のスレッドまたは何らかの他のコア上のスレッドがそのI/O割込みのために待ち状態になることができ、その後、そのI/O割込みを処理することが可能になる。即ち、遅延が完了した後、そのI/O割込みを依然として処理する必要がある場合にのみ、I/O割込みは処理のためにそのゲストに与えられる。一実施形態では、この遅延は割込みをホストに与えるための上述の遅延よりも短い。このようにして、3段階のバイアスが導入され、最初に待ち状態のゲスト・スレッドが優先され、次に待ち状態でないゲスト・スレッドが選択され、最後にホストが最も好ましくない選択肢として選択される。
一般に、コンピューティング・デバイスはプロセッサ(例えば図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つまたは複数のコンピューティング・デバイス上のコンピュータ可読プログラム命令として実装され得る。コンピュータ・プログラム製品は、マルチスレッディング・システムおよび方法の動作を実行するかまたはプロセッサに実行させるかあるいはその両方のために、コンピュータ可読記憶媒体に記憶されたそのようなコンピュータ可読プログラム命令を含み得る。実装されまたは特許請求の範囲に記載された、あるいはその両方のマルチスレッディング・システムおよび方法またはそれらの要素あるいはこれらの組合せは、改良型優先ルーティングが、待ち状態のスレッドによる処理を容易にし、それによって処理資源の効率と速度を向上させるため、コンピュータまたはプロセッサ自体あるいはその両方の機能を向上させる。即ち、I/O割込みがホストレベルでのみこのコアで可能にされている場合、ハードウェアは、別のプロセッサまたはこのプロセッサ上の別のゲスト割込み可能スレッドが最初にこの割込みを行うことを期待して、I/O割込みファームウェアの呼び出しを遅延させる。これによって、ホスト割込み可能スレッドのデキューのためのオーバーヘッドがなくなるが、さらに重要なのは、割込みを処理するオーバーヘッドが大幅に少ないゲスト・スレッドに、割込みを処理する優先権が与えられることである。その結果として、割込み可能な実行中のゲストがない場合にのみ、任意の所定のI/O割込みの処理のためにホストに対して割込みが行われる。さらに、ゲストとホストの両方のレベルで任意の所定のコアが割込み可能である場合、ハードウェアがミリコードに対して、割込みがゲスト割込みであることを示す。マルチスレッディングの導入により、ハードウェアは、任意の所定のコア上の2つのスレッドが両方ともゲスト・レベルで割込みが可能な場合、待ち状態で動作していないスレッドではなく、現在待ち状態で動作しているスレッドに割込みを提示することができる。
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることがわかるであろう。
上記のコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される上記の命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている動作/作用を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されてマシンを実現するものであってよい。上記のコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている動作/作用の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイス、あるいはこれらの組合せに対して特定の方式で動作するように指示することができるものであってもよい。
上記のコンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される上記命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている動作/作用を実装するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、運用性および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、規定されている論理演算を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表し得る。ある代替実装形態では、ブロックに記載されている動作は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する運用性に応じて、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、規定されている動作または作用を実行する専用ハードウェア・ベースのシステムによって実装されるか、または専用ハードウェアとコンピュータ命令の組合せを実行することができることもわかるであろう。
本発明の様々な実施形態について例示を目的として説明したが、本発明の説明は網羅的であること、または開示されている実施形態に限定することを意図したものではない。当業者には、記載されている実施形態の範囲および趣旨から逸脱することなく多くの変更および変形が明らかであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、または市場に見られる技術の技術的改善を最もよく説明するため、または他の当業者が本明細書で開示されている実施形態を理解することができるようにするために選択されたものである。
本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図していない。本明細書で使用されている単数形の「1つの(a)」、「1つの(an)」および「その(the)」は、文脈が明示しない限り複数形も含むことを意図している。また、本明細書で使用されている「含む(comprisesまたはcomprising)あるいはその両方」という用語は、記載されている特徴、整数、ステップ、動作、要素または構成要素あるいはこれらの組合せの存在を規定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素またはこれらのグループあるいはこれらの組合せの存在または追加を排除しないことがわかるであろう。
本明細書で図示されている流れ図は、一例に過ぎない。本発明の範囲から逸脱することなく本明細書に記載の図またはステップ(または動作)には多くの変形があり得る。例えば、ステップは異なる順序で実行されてもよく、またはステップが追加、削除または修正されてもよい。これらの変形態様のすべては特許請求の範囲に記載の本発明の一部とみなされる。
以上、本発明の好ましい実施形態について説明したが、当業者は、現在および将来の両方にわたり、以下の特許請求の範囲に含まれる様々な改善および改良を加えることができることがわかるであろう。以下の特許請求の範囲は始めに述べた本発明の適切な保護を維持するものと解釈すべきである。

Claims (20)

  1. 入出力(I/O)割込みの改良型優先ルーティングを実施する方法であって、
    プロセッサによって、コアについて前記I/O割込みが保留中であるか否かを判断することと、
    前記プロセッサによって、前記I/O割込みが保留中であるとの判断に応答して、前記コアの複数のゲスト・スレッドのいずれかが、前記割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断することと、
    前記プロセッサによって、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるか否かを判断することと、
    ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの前記少なくとも1つが待ち状態であるとの判断に基づいて、前記プロセッサによって前記I/O割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングすることとを含む方法。
  2. 前記I/O割込みが保留割込みアレイにおいて保留として示される、請求項1に記載の方法。
  3. 各ゲスト・スレッドの状況ビットおよび制御ビットが、前記割込みの前記ゲスト・スレッド処理のために前記スレッドを割込み可能にするように構成された、請求項1に記載の方法。
  4. ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのいずれも待ち状態でないとの判断に基づいて、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの1つに前記I/O割込みをルーティングすることをさらに含む、請求項1に記載の方法。
  5. ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの複数が待ち状態であるとの判断に応答して、前記ゲスト・スレッドの選択のためにルーティング・アルゴリズムが使用される、請求項1に記載の方法。
  6. 前記複数のゲスト・スレッドのうちのいずれも前記ゲスト・スレッド処理のために割込み可能でないとの判断に基づいて、前記I/O割込みをホストにルーティングするために遅延を開始することをさらに含む、請求項1に記載の方法。
  7. 前記遅延の開始後に、前記コアの前記複数のゲスト・スレッドのいずれかがゲスト・スレッド処理のために割込み可能であるか否かを判断することをさらに含む、請求項6に記載の方法。
  8. 入出力(I/O)割込みの改良型優先ルーティングを実施するシステムであって、プロセッサとメモリとを含み、前記プロセッサは、
    コアについて前記I/O割込みが保留中であるか否かを判断し、
    前記I/O割込みが保留中であるとの判断に基づいて、前記コアの複数のゲスト・スレッドのいずれかが、前記割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断し、
    ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるか否かを判断し、
    ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの前記少なくとも1つが待ち状態であるとの判断に基づいて、前記I/O割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングする
    ように構成された、システム。
  9. 前記I/O割込みが保留割込みアレイにおいて保留として示される、請求項8に記載のシステム。
  10. 各ゲスト・スレッドの状況ビットおよび制御ビットが、前記割込みの前記ゲスト・スレッド処理のために前記スレッドを割込み可能にするように構成された、請求項8に記載のシステム。
  11. 前記プロセッサは、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのいずれも待ち状態でないとの判断に基づいて、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの1つに前記I/O割込みをルーティングするようにさらに構成された、請求項8に記載のシステム。
  12. ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの複数が待ち状態であるとの判断に応答して、前記ゲスト・スレッドの選択のためにルーティング・アルゴリズムが使用される、請求項8に記載のシステム。
  13. 前記プロセッサは、前記複数のゲスト・スレッドのうちのいずれも前記ゲスト・スレッド処理のために割込み可能でないとの判断に基づいて、前記I/O割込みをホストにルーティングするために遅延を開始するようにさらに構成された、請求項8に記載のシステム。
  14. 前記プロセッサは、前記遅延の開始後に、前記コアの前記複数のゲスト・スレッドのいずれかがゲスト・スレッド処理のために割込み可能であるか否かを判断するようにさらに構成された、請求項13に記載のシステム。
  15. 入出力(I/O)割込みの改良型優先ルーティングを実施するプログラム命令が具現化されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令はプロセッサに、
    コアについて前記I/O割込みが保留中であるか否かを判断させ、
    前記I/O割込みが保留中であるとの判断に基づいて、前記コアの複数のゲスト・スレッドのいずれかが、前記割込みのゲスト・スレッド処理のために割込み可能であるか否かを判断させ、
    ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの少なくとも1つが待ち状態であるか否かを判断させ、
    ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの前記少なくとも1つが待ち状態であるとの判断に基づいて、前記I/O割込みを、ゲスト・スレッド処理のために割込み可能であって待ち状態であるゲスト・スレッドにルーティングさせる
    ように前記プロセッサにより実行可能である、コンピュータ・プログラム製品。
  16. 前記I/O割込みが保留割込みアレイにおいて保留として示される、請求項15に記載のコンピュータ・プログラム製品。
  17. 各ゲスト・スレッドの状況ビットおよび制御ビットが、前記割込みの前記ゲスト・スレッド処理のために前記スレッドを割込み可能にするように構成された、請求項15に記載のコンピュータ・プログラム製品。
  18. 前記プログラム命令は、前記プロセッサに、
    ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのいずれも待ち状態でないとの判断に基づいて、ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの1つに前記I/O割込みをルーティングさせるように前記プロセッサによってさらに実行可能である、請求項15に記載のコンピュータ・プログラム製品。
  19. ゲスト・スレッド処理のために割込み可能な前記複数のゲスト・スレッドのうちの複数が待ち状態であるとの判断に応答して、前記ゲスト・スレッドの選択のためにルーティング・アルゴリズムが使用される、請求項15に記載のコンピュータ・プログラム製品。
  20. 前記プログラム命令は、前記プロセッサに、
    前記複数のゲスト・スレッドのうちのいずれも前記ゲスト・スレッド処理のために割込み可能でないとの判断に基づいて、前記I/O割込みをホストにルーティングするために遅延を開始させるように前記プロセッサによってさらに実行可能である、請求項15に記載のコンピュータ・プログラム製品。
JP2017516681A 2014-10-08 2015-09-14 入出力(i/o)割込みの改良型優先ルーティングを実施する方法、システムおよびプログラム Active JP6537599B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/509,533 2014-10-08
US14/509,533 US9760511B2 (en) 2014-10-08 2014-10-08 Efficient interruption routing for a multithreaded processor
PCT/EP2015/070982 WO2016055237A1 (en) 2014-10-08 2015-09-14 Efficient interruption routing for a multithreaded processor

Publications (2)

Publication Number Publication Date
JP2017538184A true JP2017538184A (ja) 2017-12-21
JP6537599B2 JP6537599B2 (ja) 2019-07-03

Family

ID=54147170

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516681A Active JP6537599B2 (ja) 2014-10-08 2015-09-14 入出力(i/o)割込みの改良型優先ルーティングを実施する方法、システムおよびプログラム

Country Status (14)

Country Link
US (1) US9760511B2 (ja)
EP (1) EP3204853B1 (ja)
JP (1) JP6537599B2 (ja)
KR (1) KR101884579B1 (ja)
CN (1) CN107111578B (ja)
AU (1) AU2015330266B2 (ja)
BR (1) BR112017007442B1 (ja)
CA (1) CA2961690C (ja)
MX (1) MX2017004530A (ja)
RU (1) RU2678513C2 (ja)
SG (1) SG11201701614WA (ja)
TW (1) TWI633490B (ja)
WO (1) WO2016055237A1 (ja)
ZA (1) ZA201703081B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822493B2 (en) 2019-02-14 2023-11-21 International Business Machines Corporation Directed interrupt for multilevel virtualization
US11829790B2 (en) 2019-02-14 2023-11-28 International Business Machines Corporation Directed interrupt virtualization with fallback
JP7450627B2 (ja) 2019-02-14 2024-03-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US9836323B1 (en) * 2017-02-24 2017-12-05 Red Hat, Inc. Scalable hypervisor scheduling of polling tasks
RU2749649C2 (ru) * 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода
US10942875B2 (en) * 2019-08-02 2021-03-09 EMC IP Holding Company, LLC System and method for regulating host IOs and internal background operations in a storage system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004303237A (ja) * 2003-03-31 2004-10-28 Internatl Business Mach Corp <Ibm> 論理的にパーティションが作成されたコンピュータ・システム内で割り込みを仮想化するための装置および方法
JP2011507109A (ja) * 2007-12-12 2011-03-03 クゥアルコム・インコーポレイテッド マルチスレッド・プロセッサのための共有割込みコントローラ
JP2011229038A (ja) * 2010-04-22 2011-11-10 Oki Data Corp 画像処理装置
JP2012503254A (ja) * 2008-09-19 2012-02-02 クゥアルコム・インコーポレイテッド マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
JPH0792761B2 (ja) * 1985-07-31 1995-10-09 株式会社日立製作所 仮想計算機システムの入出力制御方法
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5222215A (en) * 1991-08-29 1993-06-22 International Business Machines Corporation Cpu expansive gradation of i/o interruption subclass recognition
US5701501A (en) * 1993-02-26 1997-12-23 Intel Corporation Apparatus and method for executing an atomic instruction
AU734747B2 (en) * 1996-01-31 2001-06-21 Ipsilon Networks, Inc. Improved method and apparatus for dynamically shifting between routing and switching packets in a transmission network
US5894583A (en) * 1996-04-09 1999-04-13 International Business Machines Corporation Variable timeout method for improving missing-interrupt-handler operations in an environment having I/O devices shared by one or more systems
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US7251814B2 (en) * 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7213125B2 (en) * 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US20060150010A1 (en) * 2005-01-03 2006-07-06 Stiffler Jack J Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
WO2007092528A2 (en) * 2006-02-03 2007-08-16 Fish Russell H Iii Thread optimized multiprocessor architecture
US7478185B2 (en) 2007-01-05 2009-01-13 International Business Machines Corporation Directly initiating by external adapters the setting of interruption initiatives
US8082426B2 (en) * 2008-11-06 2011-12-20 Via Technologies, Inc. Support of a plurality of graphic processing units
US8571834B2 (en) * 2010-01-08 2013-10-29 International Business Machines Corporation Opcode counting for performance measurement
US8762615B2 (en) * 2011-12-21 2014-06-24 International Business Machines Corporation Dequeue operation using mask vector to manage input/output interruptions
KR20170066700A (ko) * 2012-06-15 2017-06-14 인텔 코포레이션 공유 메모리 자원들을 사용하는 메모리 일관성 모델에서 비순차 load들에 대한 로크 기반 및 동기화 기반 방법
US8943252B2 (en) 2012-08-16 2015-01-27 Microsoft Corporation Latency sensitive software interrupt and thread scheduling
US9507404B2 (en) * 2013-08-28 2016-11-29 Via Technologies, Inc. Single core wakeup multi-core synchronization mechanism

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004303237A (ja) * 2003-03-31 2004-10-28 Internatl Business Mach Corp <Ibm> 論理的にパーティションが作成されたコンピュータ・システム内で割り込みを仮想化するための装置および方法
JP2011507109A (ja) * 2007-12-12 2011-03-03 クゥアルコム・インコーポレイテッド マルチスレッド・プロセッサのための共有割込みコントローラ
JP2012503254A (ja) * 2008-09-19 2012-02-02 クゥアルコム・インコーポレイテッド マルチスレッドプロセッサ内で割り込みを割り当てるための方法及びシステム
JP2011229038A (ja) * 2010-04-22 2011-11-10 Oki Data Corp 画像処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822493B2 (en) 2019-02-14 2023-11-21 International Business Machines Corporation Directed interrupt for multilevel virtualization
US11829790B2 (en) 2019-02-14 2023-11-28 International Business Machines Corporation Directed interrupt virtualization with fallback
JP7450627B2 (ja) 2019-02-14 2024-03-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
JP7482882B2 (ja) 2019-02-14 2024-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチレベルの仮想化のための有向割り込み方法、システム、プログラム

Also Published As

Publication number Publication date
US20160103774A1 (en) 2016-04-14
US9760511B2 (en) 2017-09-12
BR112017007442B1 (pt) 2023-03-28
CA2961690C (en) 2024-02-06
EP3204853A1 (en) 2017-08-16
SG11201701614WA (en) 2017-03-30
RU2678513C2 (ru) 2019-01-29
ZA201703081B (en) 2018-11-28
RU2017103951A3 (ja) 2018-11-12
AU2015330266A8 (en) 2017-03-16
AU2015330266B2 (en) 2018-10-04
MX2017004530A (es) 2017-06-07
CN107111578A (zh) 2017-08-29
KR101884579B1 (ko) 2018-08-29
EP3204853B1 (en) 2020-06-17
KR20170042700A (ko) 2017-04-19
CN107111578B (zh) 2020-06-19
JP6537599B2 (ja) 2019-07-03
BR112017007442A2 (pt) 2018-01-16
WO2016055237A1 (en) 2016-04-14
AU2015330266A1 (en) 2017-03-09
TWI633490B (zh) 2018-08-21
CA2961690A1 (en) 2016-04-14
TW201614492A (en) 2016-04-16
RU2017103951A (ru) 2018-11-12

Similar Documents

Publication Publication Date Title
JP6537599B2 (ja) 入出力(i/o)割込みの改良型優先ルーティングを実施する方法、システムおよびプログラム
US10452572B2 (en) Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US9513962B2 (en) Migrating a running, preempted workload in a grid computing system
US9135079B2 (en) Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions
US9697029B2 (en) Guest idle based VM request completion processing
US20160210167A1 (en) Virtualization of hardware accelerator
US9019826B2 (en) Hierarchical allocation of network bandwidth for quality of service
US9904580B2 (en) Efficient critical thread scheduling for non-privileged thread requests
US9354952B2 (en) Application-driven shared device queue polling
US10002016B2 (en) Configuration of virtual machines in view of response time constraints
JP2017534970A (ja) 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム
US9798582B2 (en) Low latency scheduling on simultaneous multi-threading cores
US10579416B2 (en) Thread interrupt offload re-prioritization
US9766917B2 (en) Limited virtual device polling based on virtual CPU pre-emption
US9575788B2 (en) Hypervisor handling of processor hotplug requests
US20150186180A1 (en) Systems and methods for affinity dispatching based on network input/output requests
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
JP2017520830A (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: 20181225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150