JP7335339B2 - 有向割り込みの仮想化方法、システム、プログラム - Google Patents

有向割り込みの仮想化方法、システム、プログラム Download PDF

Info

Publication number
JP7335339B2
JP7335339B2 JP2021540052A JP2021540052A JP7335339B2 JP 7335339 B2 JP7335339 B2 JP 7335339B2 JP 2021540052 A JP2021540052 A JP 2021540052A JP 2021540052 A JP2021540052 A JP 2021540052A JP 7335339 B2 JP7335339 B2 JP 7335339B2
Authority
JP
Japan
Prior art keywords
interrupt
processor
bus
interrupt signal
target
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.)
Active
Application number
JP2021540052A
Other languages
English (en)
Other versions
JP2022520713A (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 JP2022520713A publication Critical patent/JP2022520713A/ja
Application granted granted Critical
Publication of JP7335339B2 publication Critical patent/JP7335339B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Description

本開示は、一般に、コンピュータ・システム内の割り込み処理に関連しており、特に、マルチプロセッサ・コンピュータ・システム内のバス接続されたモジュールによって生成された割り込みの処理に関連している。
割り込みは、イベントがプロセッサの注目を必要とするということをプロセッサに信号で伝えるために使用される。例えば、ハードウェア・デバイス(例えば、バスを介してプロセッサに接続されたハードウェア・デバイス)は、割り込みを使用して、それらのハードウェア・デバイスがオペレーティング・システムからの注目を必要とするということを伝達する。受信側プロセッサが何らかの活動を現在実行している場合、受信側プロセッサは、割り込み信号の受信に応答して、現在の活動を一時停止し、状態を保存し、例えば割り込みハンドラを実行することによって、割り込みを処理することができる。この受信から生じるプロセッサの現在の活動の中断は、一時的にすぎない。割り込みを処理した後に、プロセッサは一時停止された活動を再開できる。したがって、割り込みは、ポーリング・ループにおけるプロセッサの非生産的な待ち時間、外部イベントの待機を取り除くことによって、性能の改善を可能にすることができる。
マルチプロセッサ・コンピュータ・システムでは、割り込みルーティング効率(interrupt routing efficiency)の問題が生じることがある。この課題は、例えばバス接続されたモジュールのようなハードウェア・デバイスによって送信された割り込み信号を、効率的な方法で、動作で使用するために割り当てられた複数のプロセッサのうちの1つのプロセッサに転送することである。この問題は、仮想マシン上のゲスト・オペレーティング・システムと通信するために割り込みが使用される場合に、特に困難になることがある。ハイパーバイザまたは仮想マシン・モニタ(VMM:virtual machine monitor)は、1つまたは複数の仮想マシン(すなわち、ゲスト・マシン)を作成して実行する。仮想マシンは、基礎になるプラットフォームの物理的特性を隠しながら、仮想マシン上で実行されるゲスト・オペレーティング・システムを、仮想動作プラットフォームと共に提供する。複数の仮想マシンを使用することによって、複数のオペレーティング・システムを並列に実行できるようにする。ゲスト・オペレーティング・システムのプロセッサの見方は、仮想動作プラットフォーム上で実行されているため、例えば基礎になるプロセッサの物理的な見方とは一般に異なっていることがある。ゲスト・オペレーティング・システムは、仮想プロセッサIDを使用してプロセッサを識別し、仮想プロセッサIDは一般に、基礎になる論理プロセッサIDと一致しない。ゲスト・オペレーティング・システムの実行を管理するハイパーバイザは、基礎になる論理プロセッサIDとゲスト・オペレーティング・システムによって使用される仮想プロセッサIDとの間のマッピングを定義する。しかし、このマッピングおよびゲスト・オペレーティング・システムで使用するためにスケジューリングされたプロセッサの選択は、静的ではなく、ゲスト・オペレーティング・システムが実行されている間に、ゲスト・オペレーティング・システムの認識なしに、ハイパーバイザによって変更されることがある。
通常、この課題は、ブロードキャストを使用して割り込み信号を転送することによって解決される。ブロードキャストを使用する場合、割り込み信号の処理に適したプロセッサに遭遇するまで、複数のプロセッサ間で割り込み信号が連続的に転送される。しかし、複数のプロセッサの場合、ブロードキャストされた割り込み信号を最初に受信するプロセッサが割り込み信号の処理に本当に適している確率は、かなり低いことがある。さらに、割り込み信号の処理に適しているということは、各プロセッサが割り込みの処理のための最良の選択であるということを必ずしも意味しない。
さまざまな実施形態は、独立請求項の対象によって説明されているように、ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するための方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供する。従属請求項において、有利な実施形態が説明される。本発明の実施形態は、相互に排他的でない場合、互いに自由に組み合わせられ得る。
1つの態様では、本発明は、ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するための方法に関連しており、このコンピュータ・システムは、バスおよびバス接続デバイスを介して複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにバス接続デバイスによって使用される論理プロセッサIDが割り当てられており、ゲスト・オペレーティング・システムで使用するために割り当てられた複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにゲスト・オペレーティング・システムおよび1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、この方法は、バス接続デバイスによって、バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、この割り込みターゲットIDが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサのうちの1つを、割り込み信号を処理するためのターゲット・プロセッサとして識別する、受信することと、バス接続デバイスによって、バス接続デバイスに含まれているマッピング・テーブルを使用して受信された割り込みターゲットIDをターゲット・プロセッサの論理プロセッサIDに変換することであって、このマッピング・テーブルが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDを複数のプロセッサの論理プロセッサIDにマッピングする、変換することと、バス接続デバイスによって、ターゲット・プロセッサを直接アドレス指定するためにターゲット・プロセッサの論理プロセッサIDを使用して、割り込み信号を処理するためにターゲット・プロセッサに転送することとを含む。
別の態様では、本発明は、ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するためのコンピュータ・システムに関連しており、このコンピュータ・システムは、バスおよびバス接続デバイスを介して複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにバス接続デバイスによって使用される論理プロセッサIDが割り当てられており、ゲスト・オペレーティング・システムで使用するために割り当てられた複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにゲスト・オペレーティング・システムおよび1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、このコンピュータ・システムは、バス接続デバイスによって、バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、この割り込みターゲットIDが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサのうちの1つを、割り込み信号を処理するためのターゲット・プロセッサとして識別する、受信することと、バス接続デバイスによって、バス接続デバイスに含まれているマッピング・テーブルを使用して受信された割り込みターゲットIDをターゲット・プロセッサの論理プロセッサIDに変換することであって、このマッピング・テーブルが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDを複数のプロセッサの論理プロセッサIDにマッピングする、変換することと、バス接続デバイスによって、ターゲット・プロセッサを直接アドレス指定するためにターゲット・プロセッサの論理プロセッサIDを使用して、割り込み信号を処理するためにターゲット・プロセッサに転送することとを含んでいる方法を実行するように構成されている。
別の態様では、本発明は、ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するためのコンピュータ・プログラム製品に関連しており、このコンピュータ・システムは、バスおよびバス接続デバイスを介して複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにバス接続デバイスによって使用される論理プロセッサIDが割り当てられており、ゲスト・オペレーティング・システムで使用するために割り当てられた複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにゲスト・オペレーティング・システムおよび1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するために処理回路によって実行するための命令を格納しているコンピュータ可読の非一過性媒体を備えており、この方法は、バス接続デバイスによって、バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、この割り込みターゲットIDが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサのうちの1つを、割り込み信号を処理するためのターゲット・プロセッサとして識別する、受信することと、バス接続デバイスによって、バス接続デバイスに含まれているマッピング・テーブルを使用して受信された割り込みターゲットIDをターゲット・プロセッサの論理プロセッサIDに変換することであって、このマッピング・テーブルが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDを複数のプロセッサの論理プロセッサIDにマッピングする、変換することと、バス接続デバイスによって、ターゲット・プロセッサを直接アドレス指定するためにターゲット・プロセッサの論理プロセッサIDを使用して、割り込み信号を処理するためにターゲット・プロセッサに転送することとを含む。
以下では、次の各図面を単に例として参照し、本発明の実施形態をより詳細に説明する。
例示的なコンピュータ・システムの概略図である。 例示的な仮想化方式の概略図である。 例示的な仮想化方式の概略図である。 例示的な仮想化方式の概略図である。 例示的なコンピュータ・システムの概略図である。 例示的なコンピュータ・システムの概略図である。 例示的な方法の概略フロー図である。 例示的な方法の概略フロー図である。 例示的な方法の概略フロー図である。 例示的なコンピュータ・システムの概略図である。 例示的な方法の概略フロー図である。 例示的な方法の概略フロー図である。 例示的なデータ構造の概略図である。 例示的なベクトル構造の概略図である。 例示的なベクトル構造の概略図である。 例示的なベクトル構造の概略図である。 例示的なベクトル構造の概略図である。 例示的なベクトル構造の概略図である。 例示的なベクトル構造の概略図である。 例示的なコンピュータ・システムの概略図である。 例示的なコンピュータ・システムの概略図である。 例示的なコンピュータ・システムの概略図である。 例示的なコンピュータ・システムの概略図である。 例示的なユニットの概略図である。 例示的なユニットの概略図である。 例示的なユニットの概略図である。 例示的なコンピュータ・システムの概略図である。
本発明のさまざまな実施形態の説明は、例示の目的で提示されるが、網羅的であるよう意図されておらず、開示された実施形態に制限されるよう意図されてもいない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
実施形態は、バス接続デバイスがターゲット・プロセッサを直接アドレス指定できるようにするという有益な効果を有することができる。したがって、ターゲット・プロセッサIDを選択する発行元のバス接続されたモジュールによって、割り込み信号のターゲットが、マルチプロセッサ・コンピュータ・システムの特定のプロセッサ(すなわち、ターゲット・プロセッサ)にされてよい。例えば、プロセッサが、前に割り込みに関連する活動を実行した割り込み信号のターゲット・プロセッサとして選択されてよい。同じプロセッサが割り込み信号も処理している場合、この割り込みに関連するすべてのデータがすでにプロセッサによって利用可能であるか、またはローカル・キャッシュに格納されているか、あるいはその両方であることができ、大きいキャッシュ・トラフィックを必要とせずに各プロセッサに対する高速なアクセスを可能にするため、各活動と同じプロセッサによって割り込み信号を処理することは、性能上の利点をもたらすことができる。
したがって、最終的に割り込みを処理するプロセッサが、キャッシュ・トラフィック最小化のような性能の観点から、このタスクに最適であるという保証がない、割り込み信号のブロードキャストを回避することができる。割り込み信号をすべてのプロセッサに提示し、各プロセッサが割り込み信号を処理しようとし、1つのプロセッサがその権利を獲得するのではなく、割り込み信号をターゲット・プロセッサに直接提供し、割り込み信号処理の効率を向上させることができる。
有向割り込みを使用して割り込みメカニズムが実装されてよい。バス接続デバイスは、処理するために割り込み信号を、発行元のバス接続されたモジュールによって定義されたターゲット・プロセッサに転送するときに、ターゲット・プロセッサの論理プロセッサIDを使用してターゲット・プロセッサを直接アドレス指定することを可能にされてよい。バス接続されたデバイスによって割り込みターゲットIDを論理プロセッサIDに変換することは、割り込みターゲットIDと論理プロセッサIDの間のマッピングまたはゲスト・オペレーティング・システムで使用するためにスケジューリングされたプロセッサの選択がハイパーバイザによって変更されたとしても、ゲスト・オペレーティング・システムの視点から、同じプロセッサが常にアドレス指定されることをさらに保証することができる。
割り込み信号と共に提供された割り込みターゲットIDを論理プロセッサIDに変換するために、バス接続デバイスのマッピング・テーブルによって提供された静的マッピングが使用されてよい。このようにして、バス接続デバイスが、論理プロセッサIDを識別して使用し、割り込み要求によって識別されたターゲット・プロセッサを直接アドレス指定できるようにする。
実施形態に従って、ターゲット・プロセッサの割り込みターゲットIDを含んでいるメッセージ信号割り込みの形態で割り込み信号が受信される。メッセージ信号割り込み(MSI:message signaled interrupts)を使用することは、PCI(Peripheral Component Interconnect)またはPCIe(Peripheral Component Interconnect express)機能などのバス接続されたモジュールが、各中央処理装置(CPU:central processing unit)を使用しているゲスト・オペレーティング・システムに、イベントの発生または何らかの状態の存在を通知するために、中央処理装置の割り込みを生成する方法である。MSIは、特殊な帯域内メッセージを使用して割り込みを信号伝達する帯域内の方法を提供し、それによって、各デバイス上の専用割り込みピンなどの、そのような制御情報を送信するための主要なデータ経路から分離された専用経路の必要性を回避する。むしろMSIは、主要なデータ経路を介して割り込みを示す特殊なメッセージを交換することに依存する。バス接続されたモジュールが、MSIを使用するように構成された場合、各モジュールは、特殊なアドレスへの指定されたバイト数のデータのMSI書き込み動作を実行することによって、割り込みを要求する。この特殊なアドレス(すなわち、MSIアドレス)および一意のデータ値(すなわち、MSIデータ)の組合せは、MSIベクトルと呼ばれる。
最新のPCIe標準アダプタは、複数の割り込みを提供する能力を有する。例えば、MSI-Xは、バス接続されたモジュールが最大2048個の割り込みを割り当てることを許可する。したがって、マルチプロセッサ・システムに依存する高速ネットワーク・アプリケーションなどにおいて、個別の割り込みのターゲットを異なるプロセッサにすることが可能になる。MSI-Xは、多数の割り込みそれぞれに個別のMSIアドレスおよびMSIデータ値を割り当てることを許可する。
割り込み信号を送信するために、MSI-Xメッセージが使用されてよい。MSI-Xメッセージの必要な内容は、MSI-Xデータ・テーブルを使用して決定されてよい。バス接続されたモジュール(すなわち、PCIeアダプタ/機能)にローカルに存在するMSI-Xデータ・テーブルは、各割り込み信号(割り込み要求(IRQ:interrupt request)とも呼ばれる)に割り当てられた番号によってインデックス付けされてよい。MSI-Xデータ・テーブルの内容は、ゲスト・オペレーティング・システムの制御下にあり、ハードウェアまたはファームウェアあるいはその両方の誘導によってオペレーティング・システムに設定されてよい。単一のPCIeアダプタが複数のPCIe機能を備えてよく、それらのPCIe機能の各々は、独立したMSI-Xデータ・テーブルを含んでよい。これは、例えば、単一ルート入出力仮想化(SR-IOV:single root input/output virtualization)または多機能デバイスの場合であり得る。
例えば仮想プロセッサIDのような割り込みターゲットIDは、例えば割り込み信号を含んでいるMSI-Xメッセージのような、バス接続されたモジュールによって送信されたメッセージの一部として直接エンコードされてよい。メッセージ(例えば、MSI-Xメッセージ)は、要求元ID(すなわち、バス接続されたモジュールのID)、前述の割り込みターゲットID、DIBVまたはAIBVインデックス、MSIアドレス、およびMSIデータを含んでよい。MSI-Xメッセージは、MSIアドレス用の64ビットおよびデータ用の32ビットを提供してよい。バス接続されたモジュールは、MSIを使用して、特殊なMSIアドレスへの特定のMSIデータ値のMSI書き込み動作を実行することによって、割り込みを要求してよい。
デバイス・テーブルは、割り込み要求元(すなわち、バス接続されたモジュール)の要求元ID(RID:requestor ID)によって完全にインデックス付けされてよい共有テーブルである。バス接続デバイスは、割り込みを再マッピングしてポストする。すなわち、バス接続デバイスは、割り込みターゲットIDを変換し、変換した割り込みターゲットIDを使用してターゲット・プロセッサを直接アドレス指定する。
ゲスト・オペレーティング・システム(guest operation system)は、仮想プロセッサIDを使用して、マルチプロセッサ・コンピュータ・システム内のプロセッサを識別することができる。したがって、ゲスト・オペレーティング・システムのプロセッサの見方は、論理プロセッサIDを使用している基礎になるシステムの見方と同一でなくてよい。ゲスト・オペレーティング・システムによって使用されるリソースを提供するバス接続されたモジュールは、ゲスト・オペレーティング・システムと通信するためのリソースとして仮想プロセッサID(例えば、MSI-Xデータ・テーブルなど)を使用してよく、ゲスト・オペレーティング・システムの制御下にあってよい。仮想プロセッサIDの代替として、バス接続されたモジュールがプロセッサをアドレス指定するために、任意のその他のIDが定義されてよい。
割り込みは、ゲスト・オペレーティング・システムまたはゲスト・オペレーティング・システム上で実行されているその他のソフトウェア(その他のプログラムなど)に提示される。本明細書において使用されるとき、オペレーティング・システムという用語は、オペレーティング・システムのデバイス・ドライバを含む。
本明細書において使用されるとき、バス接続されたモジュールという用語は、任意の種類のバス接続されたモジュールを含んでよい。実施形態によれば、モジュールは、例えば、ストレージ機能、処理モジュール、ネットワーク・モジュール、暗号モジュール、PCI/PCIeアダプタ、その他の種類の入出力モジュールなどの、ハードウェア・モジュールであってよい。その他の実施形態によれば、モジュールは、例えば、ストレージ機能、処理機能、ネットワーク機能、暗号機能、PCI/PCIe機能、その他の種類の入出力機能などの、ソフトウェア・モジュール(すなわち、機能)であってよい。したがって、本明細書において提示される例では、モジュールは、特に注記されない限り、機能(例えば、PCI/PCIe機能)およびアダプタ(例えば、PCI/PCIe機能)と交換可能なように使用される。
実施形態は、割り込み信号ルーティング・メカニズム(例えば、MSI-Xメッセージ・ルーティング・メカニズム)が提供されるという利点を有することができ、このメカニズムは、バス接続されたモジュール(例えば、PCIeアダプタおよびPCIe機能)およびバス接続されたモジュールを操作または制御するために使用されるデバイス・ドライバを変更されない状態に保つことができる。さらに、バス接続されたモジュールとゲスト・オペレーティング・システムの間で通信を実施するための基礎になるアーキテクチャ(例えば、PCIe MSI-Xアーキテクチャ)をハイパーバイザが妨害するのを、防ぐことができる。言い換えると、ハイパーバイザおよびバス接続されたモジュールの外部で、割り込み信号ルーティング・メカニズムに対する変更が実施されてよい。
一実施形態によれば、コンピュータ・システムがメモリをさらに備えており、バス接続デバイスがメモリに操作可能なように接続されており、この方法は、バス接続デバイスによって、デバイス・テーブル・エントリのコピーをメモリに格納されているデバイス・テーブルから取り出すことであって、デバイス・テーブル・エントリが、ターゲット・プロセッサが直接アドレス指定されるかどうかを示す直接信号伝達インジケータを含む、取り出すことと、直接信号伝達インジケータが割り込み信号の直接転送を示している場合に、ターゲット・プロセッサの論理プロセッサIDを使用してターゲット・プロセッサを直接アドレス指定する割り込み信号の転送が実行され、そうでない場合に、バス接続デバイスによって、ブロードキャストを使用して割り込み信号を処理するために複数のプロセッサに転送することとを、さらに含む。
実施形態は、直接アドレス指定またはブロードキャストのいずれを使用して割り込み信号が転送されるかを直接信号伝達インジケータによって制御するという有益な効果を有することができる。バス接続されたモジュールから受信された割り込み信号に関して、直接アドレス指定またはブロードキャストのいずれが実行されるかに関わらず、バス接続されたモジュールごとに直接信号伝達インジケータを使用して、個別の事前に定義された選択が提供されてよい。
一実施形態によれば、直接信号伝達インジケータは単一のビットとして実装される。実施形態は、直接信号伝達インジケータが、最小限のメモリ空間であり、高速な、効率的に処理できる形態で提供されるという有益な効果を有することができる。
一実施形態によれば、直接信号伝達インジケータは、ゲスト・オペレーティング・システムの初期化中に、ゲスト・オペレーティング・システムに対して静的インジケータとして設定される。一実施形態によれば、複数のプロセッサの論理プロセッサIDへの、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDのマッピングは、マッピング・テーブルによって定義された静的マッピングである。実施形態は、接続デバイスがメモリから大量のデータをフェッチせずに直接アドレス指定を実行できるようにするマッピングと共に、バス接続デバイスが提供されるという、有益な効果を有することができる。
一実施形態によれば、バス接続デバイスは、デバイス・テーブル・エントリのコピーが、バス接続デバイスに操作可能なように接続されたローカル・キャッシュにキャッシュされているかどうかをチェックし、デバイス・テーブル・エントリのコピーがキャッシュされている場合、デバイス・テーブル・エントリのコピーの取り出しは、各キャッシュから取り出すことであり、そうでない場合、デバイス・テーブル・エントリの取り出しは、メモリから取り出すことである。実施形態は、デバイス・テーブル・エントリのコピーの高速かつ効率的な取り出しを保証するという、有益な効果を有することができる。
一実施形態によれば、メモリは、割り込み要約ベクトル(interrupt summary vector)をさらに含んでおり、デバイス・テーブル・エントリが、割り込み要約ベクトルのメモリ・アドレスを示す割り込み要約ベクトル・アドレス・インジケータをさらに含み、割り込み要約ベクトルが、バス接続されたモジュールごとに割り込み要約インジケータを含み、各割り込み要約インジケータが、バス接続されたモジュールに割り当てられ、各バス接続されたモジュールによって発行された処理される割り込み信号が存在するかどうかを示し、この方法は、バス接続デバイスによって、割り込み要約ベクトルの示されたメモリ・アドレスを使用して、受信された割り込み信号の発行元であるバス接続されたモジュールに割り当てられた割り込み要約インジケータを更新し、更新された割り込み要約インジケータが、各バス接続されたモジュールによって発行された処理される割り込み信号が存在するということを示すようにすることを、さらに含む。
実施形態は、どのバス接続されたモジュールからの処理される割り込み信号が存在しているかを監視し、記録するという有益な効果を有することができる。この情報は、例えば、直接アドレス指定が失敗するか、または使用できない場合のフォールバックとして、ブロードキャストを実行する必要がある場合に特に役立つことがある。一実施形態によれば、割り込み要約ベクトルは連続領域として実装される。実施形態は、割り込み要約ベクトルが、最小限のメモリ空間であり、高速な、効率的に処理できる形態で提供されるという有益な効果を有することができる。連続領域は、例えば単一のキャッシュ・ラインであってよい。一実施形態によれば、割り込み要約インジケータは、それぞれ単一のビットとして実装される。実施形態は、割り込み要約インジケータが、最小限のメモリ空間であり、高速な、効率的に処理できる形態で提供されるという有益な効果を有することができる。
一実施形態によれば、メモリは、有向割り込み要約ベクトルをさらに含んでおり、デバイス・テーブル・エントリが、有向割り込み要約ベクトルのメモリ・アドレスを示す有向割り込み要約ベクトル・アドレス・インジケータをさらに含んでおり、有向割り込み要約ベクトルが、割り込みターゲットIDごとに有向割り込み要約インジケータを含み、各有向割り込み要約インジケータが、割り込みターゲットIDに割り当てられ、各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在するかどうかを示し、この方法は、バス接続デバイスによって、有向割り込み要約ベクトルの示されたメモリ・アドレスを使用して、受信された割り込み信号のアドレス指定先であるターゲット・プロセッサIDに割り当てられた割り込み要約インジケータを更新し、更新された割り込み要約インジケータが、各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在するということを示すようにすることを、さらに含む。
実施形態は、どのバス接続されたモジュールからの処理される割り込み信号が存在しているかを監視し、記録するという有益な効果を有することができる。この情報は、例えば、直接アドレス指定が失敗するか、または使用できない場合のフォールバックとして、ブロードキャストを実行する必要がある場合に特に役立つことがある。有向割り込み要約インジケータが個別の割り込みターゲットIDに割り当てられる場合、特定のプロセッサによって処理される割り込みが存在するかどうかを判定するために、単一のインジケータがチェックされることのみが必要であってよい。
例えばハイパーバイザがターゲット・プロセッサをスケジューリングしなかったために、割り込みを直接配信できない場合、ゲスト・オペレーティング・システムは、ブロードキャストを使用して、当初意図された類似性(すなわち、どのプロセッサに対して割り込みが意図されたかの情報)を有する割り込みを配信することによる恩恵を受けることができる。この場合、バス接続デバイスは、DIBVを設定した後に、ブロードキャスト割り込み要求をゲスト・オペレーティング・システムに配信する前に、DISB内のターゲット・プロセッサを指定するビットを設定してよい。したがって、ゲスト・オペレーティング・システムがブロードキャスト割り込み要求を受信した場合、ゲスト・オペレーティング・システムは、DISB内の直接割り込み要約インジケータをスキャンして無効化する(例えば、直接割り込み要約ビットをスキャンしてリセットする)ことによって、どのターゲット・プロセッサがDIBV内で信号伝達された保留中の割り込み信号を有しているかを識別してよい。このようにして、ゲスト・オペレーティング・システムは、割り込み信号が、ブロードキャストを受信した現在のプロセッサによって処理されるのか、または元のターゲット・プロセッサにさらに転送されるのかを判定できるようになってよい。
一実施形態によれば、有向割り込み要約ベクトルは連続領域として実装される。実施形態は、有向割り込み要約ベクトルが、最小限のメモリ空間であり、高速な、効率的に処理できる形態で提供されるという有益な効果を有することができる。連続領域は、例えば単一のキャッシュ・ラインであってよい。一実施形態によれば、有向割り込み要約インジケータは、それぞれ単一のビットとして実装される。実施形態は、有向割り込み要約インジケータが、最小限のメモリ空間であり、高速な、効率的に処理できる形態で提供されるという有益な効果を有することができる。
一実施形態によれば、メモリは、1つまたは複数の割り込み信号ベクトルをさらに含んでおり、デバイス・テーブル・エントリが、1つまたは複数の割り込み信号ベクトルのうちの1つの割り込み信号ベクトルのメモリ・アドレスを示す割り込み信号ベクトル・アドレス・インジケータをさらに含み、割り込み信号ベクトルの各々が、1つまたは複数の信号インジケータを含み、各割り込み信号インジケータが、1つまたは複数のバス接続されたモジュールのうちの1つのバス接続されたモジュールおよび割り込みターゲットIDに割り当てられ、割り込み信号が、各割り込みターゲットIDに向けてアドレス指定された各バス接続されたモジュールから受信されたかどうかを示し、この方法は、バス接続デバイスによって、割り込み信号ベクトルの示されたメモリ・アドレスを使用して、受信された割り込み信号を発行したバス接続されたモジュール、および受信された割り込み信号のアドレス指定先である割り込みターゲットIDに割り当てられた割り込み信号インジケータを選択することと、選択された割り込み信号インジケータが、各バス接続されたモジュールによって発行され、各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在することを示すように、選択された割り込み信号インジケータを更新することとをさらに含む。
一実施形態によれば、割り込み信号ベクトルは、各割り込みターゲットIDに割り当てられた割り込みターゲットIDごとの割り込み信号インジケータをそれぞれ含んでおり、割り込み信号ベクトルの各々が個別のバス接続されたモジュールに割り当てられ、各割り込み信号ベクトルの割り込み信号インジケータが、各個別のバス接続されたモジュールにさらに割り当てられる。実施形態は、ゲスト・オペレーティング・システムが、どのターゲット・プロセッサに対してバス接続されたモジュールが処理される割り込み信号を発行したかを追跡できるようにするという有益な効果を有することができる。
一実施形態によれば、割り込み信号ベクトルは、各バス接続されたモジュールに割り当てられたバス接続されたモジュールごとの割り込み信号インジケータをそれぞれ含んでおり、割り込み信号ベクトルの各々が個別のターゲット・プロセッサIDに割り当てられ、各割り込み信号ベクトルの割り込み信号インジケータが、各ターゲット・プロセッサIDにさらに割り当てられる。実施形態は、ゲスト・オペレーティング・システムが、どのバス接続されたモジュールから、特定のターゲット・プロセッサによって処理される割り込み信号が発行されたかを追跡できるようにするという有益な効果を有することができる。
割り込み信号ベクトルは、ターゲット・プロセッサIDに応じて順序付けられた(すなわち、有向割り込みを追跡するために最適化された)有向割り込み信号ベクトルとして実装されてよい。言い換えると、主要な順序基準は、発行元のバス接続されたモジュールを識別する要求元IDではなく、ターゲット・プロセッサIDである。各有向割り込み信号ベクトルは、バス接続されたモジュールの数に応じて、1つまたは複数の有向割り込み信号インジケータを含んでよい。
個別の割り込み信号を示す、例えば割り込み信号伝達ビットの形態での割り込み信号インジケータの順序付けは、例えばMSI-Xメッセージの形態で、キャッシュ・ラインのようなメモリの連続領域内で、連続的に受信されており、したがって、例えばPCIe機能のような個別のバス接続されたモジュールの場合、回避することができる。例えば割り込み信号伝達ビットを設定するか、またはリセットするか、あるいはその両方を実行することによって、割り込み信号インジケータを有効化するか、無効化するか、あるいはその両方を実行するには、メモリの各連続領域をプロセッサのうちの1つに移動し、それに依って各割り込み信号インジケータを変更する必要がある。
プロセッサが、ゲスト・オペレーティング・システムの視点からの責任を負っているすべてのインジケータ、すなわち特に、各プロセッサに割り当てられたすべてのインジケータを処理することが意図されてよい。これによって、各プロセッサが割り当てられたすべてのデータを処理している場合に、この状況において必要なデータがプロセッサに提供されるか、またはローカル・キャッシュに格納されるか、あるいはその両方である可能性が高まることができ、大きいキャッシュ・トラフィックを必要とせずにプロセッサの各データへの高速アクセスを可能にするため、性能上の優位性を可能にすることができる。
しかし、それにもかかわらず、各プロセッサが、責任を負っているすべてのインジケータを処理しようとすることは、各プロセッサがすべての機能に関するすべてのキャッシュ・ラインを書き込む必要があるため、プロセッサ間の大きいキャッシュ・トラフィックにつながることがある。各個別のプロセッサに割り当てられたインジケータが、キャッシュ・ラインなどのすべての連続領域にわたって分散されることがあるためである。
同じ割り込みターゲットIDに割り当てられたすべての割り込み信号伝達インジケータが、メモリの同じ連続領域(例えば、キャッシュ・ライン)内で結合されるように、割り込み信号伝達インジケータが、有向割り込み信号伝達ベクトルの形態で記録されてよい。したがって、各プロセッサ(すなわち、割り込みターゲットID)に割り当てられたインジケータを処理しようとするプロセッサは、メモリの単一の連続領域を読み込むことのみが必要であってよい。したがって、バス接続されたモジュールごとの連続領域ではなく、割り込みターゲットIDごとの連続領域が使用される。各プロセッサは、割り込みターゲットIDによって識別されたターゲット・プロセッサとしてその特定のプロセッサをターゲットにするすべての使用可能なバス接続されたモジュールから受信されたすべての割り込み信号に関するメモリの単一の連続領域(例えば、キャッシュ・ライン)をスキャンして更新することのみが必要であってよい。実施形態によれば、ゲスト・オペレーティング・システムがビットを異なるオフセットにアライメントするように、ハイパーバイザによってオフセットが適用されてよい。
一実施形態によれば、割り込み信号ベクトルは、それぞれメモリ内の連続領域として実装される。実施形態は、最小限のメモリ空間であり、高速な、効率的に処理できる形態で割り込み信号ベクトルを提供するという有益な効果を有することができる。連続領域は、例えばキャッシュ・ラインであってよい。一実施形態によれば、割り込み信号インジケータは、それぞれ単一のビットとして実装される。実施形態は、最小限のメモリ空間であり、高速な、効率的に処理できる形態で割り込み信号ベクトルを提供するという有益な効果を有することができる。
一実施形態によれば、デバイス・テーブル・エントリは、ゲスト・オペレーティング・システムが割り当てられた論理パーティションを識別する論理パーティションIDをさらに含んでおり、バス接続デバイスによる割り込み信号の転送が、割り込み信号と共に論理パーティションIDを転送することをさらに含む。実施形態は、受信側プロセッサが、どのゲスト・オペレーティング・システムに向けて割り込み信号がアドレス指定されたかをチェックできるようにするという有益な効果を有することができる。
一実施形態によれば、バス接続モジュールは、論理パーティションIDごとにマッピング・テーブルを備えている。実施形態は、例えば、ハイパーバイザまたはゲスト・オペレーティング・システムあるいはその両方ごとに個別のマッピング・テーブルを提供するという有益な効果を有することができる。
一実施形態によれば、この方法は、バス接続デバイスによって、受信された割り込み信号が割り当てられた割り込みサブクラスを識別する割り込みサブクラスIDを取り出すことをさらに含み、バス接続デバイスによる割り込み信号の転送が、割り込み信号と共に割り込みサブクラスIDを転送することをさらに含む。
一実施形態によれば、複数のゲスト・オペレーティング・システムを実行するためにコンピュータ・システムのプロセッサが使用され、バス接続デバイスが、複数のゲスト・オペレーティング・システムのゲスト・オペレーティング・システムごとにマッピング・テーブルを備える。
一実施形態によれば、この方法は、バス接続デバイスによって、メモリ内のバス接続されたモジュールの状態情報を更新するためのダイレクト・メモリ・アクセスの要求をバス接続されたモジュールから受信することであって、バス接続されたモジュールの状態更新が割り込み信号をトリガーする、受信することと、この要求の受信時に、バス接続デバイスによって、メモリへのダイレクト・メモリ・アクセスを実行して、メモリ内のバス接続されたモジュールの状態情報を更新することとをさらに含んでいる。
実施形態によれば、処理回路によって実行するためにコンピュータ可読の非一過性媒体上で提供された命令が、本明細書において説明されているように割り込み信号をゲスト・オペレーティング・システムに提供するための方法の実施形態のいずれかを実行するように、構成される。
実施形態によれば、コンピュータ・システムが、本明細書において説明されているように割り込み信号をゲスト・オペレーティング・システムに提供するための方法の実施形態のいずれかを実行するように、さらに構成される。
図1は、割り込み信号をゲスト・オペレーティング・システムに提供するための例示的なコンピュータ・システム100を示している。コンピュータ・システム100は、ゲスト・オペレーティング・システムを実行するために使用される複数のプロセッサ130を含んでいる。コンピュータ・システム100は、記憶装置またはメイン・メモリとも呼ばれるメモリ140をさらに含んでいる。メモリ140は、コンピュータ・システム100に含まれているハードウェア・コンポーネント、ファームウェア・コンポーネント、およびソフトウェア・コンポーネントで使用するために割り当てられたメモリ空間(すなわち、メモリ・セクション)を提供してよい。メモリ140は、コンピュータ・システム100のハードウェアおよびファームウェアならびにソフトウェア(例えば、ハイパーバイザ、ホスト/ゲスト・オペレーティング・システム、アプリケーション・プログラムなど)によって使用されてよい。1つまたは複数のバス接続されたモジュール120が、バス102およびバス接続デバイス110を介して複数のプロセッサ130およびメモリ140に操作可能なように接続される。バス接続デバイス110は、一方では、バス接続されたモジュール120とプロセッサ130の間の通信を管理し、他方では、メモリ140を管理する。バス接続されたモジュール120は、バス102に直接、または例えばスイッチ104のような1つまたは複数の中間コンポーネントを介して、接続されてよい。
バス接続されたモジュール120は、例えば、PCIe(Peripheral Component Interconnect express)モジュール(PCIeアダプタまたはPCIeアダプタによって提供されるPCIe機能とも呼ばれる)の形態で提供されてよい。PCIe機能120は、バス接続デバイス110(例えば、PCIブリッジ・ユニット(PBU:PCI Bridge Unit)とも呼ばれるPCIホスト・ブリッジ(PHB:PCI Host Bridge))に送信される要求を発行してよい。バス接続デバイス110は、バス接続されたモジュール120から要求を受信する。これらの要求は、例えば、バス接続デバイス110によってメモリ140へのダイレクト・メモリ・アクセス(DMA:direct memory access)を実行するために使用される入出力アドレス、または割り込み信号(例えば、メッセージ信号割り込み(MSI))を示す入出力アドレスを含んでよい。
図2は、コンピュータ・システム100によって提供される例示的な仮想マシンのサポートを示している。コンピュータ・システム100は、1つまたは複数の仮想マシン202および少なくとも1つのハイパーバイザ200を備えてよい。仮想マシンのサポートは、多数の仮想マシンを動作させることができるようにしてよく、各仮想マシンは、z/Linuxなどのゲスト・オペレーティング・システム204を実行することができる。各仮想マシン201は、別々のシステムとして機能することができてよい。したがって、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、アプリケーション・プログラムのような種々のプログラムを実行してよい。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なコンピュータ・システム全体にアクセスできるように見える。しかし、実際は、コンピュータ・システムの使用可能なリソースの一部のみが、各オペレーティング・システムまたはアプリケーション・プログラムによって利用可能であることがある。
仮想マシンは、V=Vモデルを使用してよく、V=Vモデルでは、仮想マシンに割り当てられたメモリは、実メモリの代わりに、仮想メモリによって支援される。したがって、各仮想マシンは、仮想線形メモリ空間を有する。物理リソースは、VMハイパーバイザなどのハイパーバイザ200によって所有され、共有物理リソースは、必要に応じて処理要求を満たすために、ハイパーバイザによってゲスト・オペレーティング・システムにディスパッチされる。多数のゲストが、ハイパーバイザが単にハードウェア・リソースを分割して構成されたゲストに割り当てることを不可能にすることがあるため、V=V仮想マシン・モデルは、ゲスト・オペレーティング・システムとマシンの共有物理リソースの間の相互作用がVMハイパーバイザによって制御されることを仮定する。
プロセッサ120は、ハイパーバイザ200によって仮想マシン202に割り当て可能である。仮想マシン202に、例えば1つまたは複数の論理プロセッサが割り当てられてよい。論理プロセッサの各々は、ハイパーバイザ200によって仮想マシン202に動的に割り当てることができる物理プロセッサ120のすべてまたは一部を表してよい。仮想マシン202は、ハイパーバイザ200によって管理される。ハイパーバイザ200は、例えば、プロセッサ120上で実行されるファームウェアにおいて実装されてよく、またはコンピュータ・システム100上で実行されるオペレーティング・システムの一部であってよい。ハイパーバイザ200は、例えば、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)などのVMハイパーバイザであってよい。
図3は、コンピュータ・システム100によって提供される例示的な複数レベルの仮想マシンのサポートを示している。図2の第1のレベルの仮想化に加えて、第2のレベルの仮想化が提供され、第2のハイパーバイザ210が、第2のハイパーバイザ210用のホスト・オペレーティング・システムとして機能する第1のレベルのゲスト・オペレーティング・システムのうちの1つで実行されている。第2のハイパーバイザ210は、1つまたは複数の第2のレベルの仮想マシン212を管理してよく、各仮想マシン212は、第2のレベルのゲスト・オペレーティング・システム214を実行することができる。
図4は、コンピュータ・システム100の異なる階層レベルでプロセッサを識別するための異なる種類のIDの使用を示す例示的なパターンを示している。基礎になるファームウェア220は、コンピュータ・システム100のプロセッサ130を識別するために、論理プロセッサID lCPU222を提供してよい。第1のレベルのハイパーバイザ200は、論理プロセッサID lCPU222を使用して、プロセッサ130と通信する。第1のレベルのハイパーバイザが、ゲスト・オペレーティング・システム204で使用するために第1の仮想プロセッサID vCPU224を提供してよく、または第2のレベルのハイパーバイザ219が、第1のレベルのハイパーバイザ200によって管理される仮想マシン上で実行される。ハイパーバイザ200は、第1の仮想プロセッサID vCPU224をグループ化して、論理パーティション(ゾーンとも呼ばれる)をゲスト・オペレーティング・システム204またはハイパーバイザ210あるいはその両方に提供してよい。第1の仮想プロセッサID vCPU224は、第1のレベルのハイパーバイザ200によって論理プロセッサID lCPU222にマッピングされる。第1のレベルのハイパーバイザ200によって提供された第1の仮想プロセッサID vCPU224のうちの1つまたは複数は、第1のレベルのハイパーバイザ200を使用して実行される各ゲスト・オペレーティング・システム204またはハイパーバイザ210に割り当てられてよい。第1のレベルのハイパーバイザ200上で実行される第2のレベルのハイパーバイザ210は、例えばさらなるゲスト・オペレーティング・システム214のようなソフトウェアを実行している1つまたは複数の仮想マシンを提供してよい。このために、第2のレベルのハイパーバイザは、第1のレベルのハイパーバイザ200の仮想マシン上で実行される第2のレベルのゲスト・オペレーティング・システム214で使用するために、第2の仮想プロセッサID vCPU226を管理する。第2の仮想プロセッサID vCPU226は、第2のレベルのハイパーバイザ200によって第1の仮想プロセッサID vCPU224にマッピングされる。
第1/第2のレベルのゲスト・オペレーティング・システム204によって使用されるプロセッサ130をアドレス指定するバス接続されたモジュール120は、第1/第2の仮想プロセッサID vCPU224、226または第1/第2の仮想プロセッサID vCPU224、226から得られた代替のIDの形態で、ターゲット・プロセッサIDを使用してよい。
図5は、割り込み信号をコンピュータ・システム100上で実行されるゲスト・オペレーティング・システムに提供するための方法における主な参加者を示す、コンピュータ・システム100の簡略化された概略設定を示している。例示の目的で簡略化された設定は、割り込み信号をプロセッサ(CPU)130のうちの1つまたは複数で実行されるゲスト・オペレーティング・システムに送信するバス接続されたモジュール(BCM:bus connected module)120を含む。割り込み信号は、プロセッサ130のうちの1つをターゲット・プロセッサとして識別する割り込みターゲットID(IT_ID)を持つバス接続デバイス110に送信される。バス接続デバイス110は、コンピュータ・システム100のバス接続されたモジュール120とプロセッサ130の間の通信およびメモリ140を管理する中間デバイスである。バス接続デバイス110は、割り込み信号を受信し、各ターゲット・プロセッサを直接アドレス指定するために、割り込みターゲットIDを使用してターゲット・プロセッサの論理プロセッサIDを識別する。ターゲット・プロセッサへの有向転送は、例えばキャッシュ・トラフィックを削減することによって、データ処理の効率を改善することができる。
図6は、図5のコンピュータ・システム100を示している。バス接続デバイス110は、メモリ140のモジュール固有の領域(MSA:module specific area)149内のバス接続されたモジュール120の状態の状態更新を実行するように構成される。そのような状態更新は、状態更新をメモリ140に書き込むことを指定するダイレクト・メモリ・アクセス(DMA)書き込みをバス接続されたモジュールから受信することに応答して実行されてよい。
メモリは、バス接続されたモジュール120ごとにデバイス・テーブル・エントリ(DTE:device table entry)146を含むデバイス・テーブル(DT:device table)144をさらに含んでいる。割り込み信号(例えば、割り込み要求のターゲット・プロセッサを識別する割り込みターゲットIDおよび割り込み要求の要求元をバス接続されたモジュール120の形態で識別する要求元IDを含むMSI-X書き込みメッセージ)の受信時に、バス接続デバイス110は、要求元のバス接続されたモジュール120に割り当てられたDTE146をフェッチする。DTE146は、例えばdIRQビットを使用して、要求元のバス接続されたモジュール120に対してターゲット・プロセッサの有向アドレス指定が有効化されているかどうかを示してよい。バス接続デバイスは、プロセッサ130のうちのどのプロセッサに対する割り込み信号が受信されたかを追跡するために、有向割り込み信号ベクトル(DIBV)162および有向割り込み要約ベクトル(DISB)160のエントリを更新する。DISB160は、いずれかのバス接続されたモジュール120からのこのプロセッサ130に対する処理される割り込み信号が存在するかどうかを示す、割り込みターゲットIDごとに1つのエントリを含んでよい。各DIBV162は、割り込みターゲットID(すなわち、プロセッサ130)のうちの1つに割り当てられ、1つまたは複数のエントリを含んでよい。各エントリは、バス接続されたモジュール120のうちの1つに割り当てられている。したがって、DIBVは、どのバス接続されたモジュールからの特定のプロセッサ130に対する処理される割り込み信号が存在するかを示す。この方法は、割り込み信号が存在するかどうか、またはどのバス接続されたモジュール120からの特定のプロセッサに対する処理される割り込み信号が存在するかをチェックするための利点を有することができる。1つの信号エントリ(例えば、ビット)のみ、または1つの信号ベクトル(例えば、ビット・ベクトル)のみがメモリ140から読み取られる必要がある。代替の実施形態によれば、割り込み信号ベクトル(AIBV)および割り込み要約ベクトル(AISB)が使用されてよい。AIBVに加えて、AISBのエントリが、特定のバス接続されたモジュール120に割り当てられる。
バス接続デバイス110は、バス接続されたモジュール110上で提供されたマッピング・テーブル112を使用して、割り込みターゲットID(IT_ID)を論理プロセッサID(lCPU)に変換し、論理プロセッサIDを使用してターゲット・プロセッサを直接アドレス指定し、受信された割り込み信号をターゲット・プロセッサに転送する。各プロセッサは、直接割り込み信号を受信して処理するためのファームウェア(例えば、ミリコード132)を含む。ファームウェアは、例えばプロセッサ130のマイクロコードまたはマクロコードあるいはその両方をさらに含んでよい。ファームウェアは、上位レベルのマシン・コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含んでよい。実施形態によれば、ファームウェアは、信頼できるソフトウェアを含むマイクロコード、または基礎になるハードウェアに固有のマイクロコードとして提供できる、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含んでよい。
図7は、DMA書き込み要求を使用してバス接続デバイス110を介してバス接続されたモジュール120の状態更新を実行するための例示的な方法のフローチャートである。ステップYY00で、バス接続されたモジュールが、その状態を更新することを決定し、例えば信号の完了を示すために、割り込みをトリガーしてよい。ステップYY10で、バス接続されたモジュールが、バス接続されたモジュールの状態を更新するために、バス接続デバイスを介して、コンピュータ・システム上で実行されているホストに割り当てられたメモリのセクション(すなわち、ホスト・メモリ)へのダイレクト・メモリ・アクセス(DMA)書き込みを開始する。DMAは、システム・プロセッサに関与させる必要なしに、コンピュータ・システムのペリフェラル・コンポーネントがI/Oデータをメイン・メモリとの間で直接転送できるようにする、ハードウェア・メカニズムである。DMAを実行するために、バス接続されたモジュールは、DMA書き込み要求を、例えばMSI-Xメッセージの形態でバス接続デバイスに送信する。PCIeの場合、バス接続されたモジュールは、例えばPCIeアダプタで提供されるPCIe機能のことを指してよい。ステップYY20で、バス接続されたモジュールが、バス接続されたモジュールの状態更新を含むDMA書き込み要求を受信し、受信された更新を使用してメモリを更新する。この更新は、各バス接続されたモジュールのために確保されているホスト・メモリの領域内で実行されてよい。
図8は、図6のコンピュータ・システム100を使用して割り込み信号をゲスト・オペレーティング・システムに提供するための例示的な方法のフローチャートである。ステップ330で、バス接続デバイスが、バス接続されたモジュールによって送信された割り込み信号を、例えばMSI-X書き込みメッセージの形態で受信する。割り込み信号のこの送信は、PCIアーキテクチャの仕様に従って実行されてよい。MSI-X書き込みメッセージは、割り込みのターゲット・プロセッサを識別する割り込みターゲットIDを含む。割り込みターゲットIDは、例えば、マルチプロセッサ・コンピュータ・システムのプロセッサを識別するためにゲスト・オペレーティング・システムによって使用される仮想プロセッサIDであってよい。実施形態によれば、割り込みターゲットIDは、プロセッサを識別できるようにするためにゲスト・オペレーティング・システムおよびバス接続されたモジュールによって合意された任意のその他のIDであってよい。そのような別のIDは、例えば、仮想プロセッサIDのマッピングの結果であってよい。加えて、MSI-X書き込みメッセージは、割り込み要求元ID(RID)(すなわち、割り込み要求を発行しているPCIe機能のID)、ベクトル内のベクトル・エントリのオフセットを定義するベクトル・インデックス、MSIアドレス(例えば、64ビット・アドレス)、およびMSIデータ(例えば、32ビット・データ)をさらに含んでよい。MSIアドレスおよびMSIデータは、MSIメッセージの形態で、各書き込みメッセージが実際に割り込み要求であるということを示してよい。
ステップ340で、バス接続デバイスは、メモリに格納されたデバイス・テーブルのエントリのコピーをフェッチする。デバイス・テーブル・エントリ(DTE)は、ターゲット・プロセッサに対する割り込み信号が受信されたことを示すために更新される1つまたは複数のベクトルまたはベクトル・エントリのアドレス・インジケータを提供する。ベクトル・エントリのアドレス・インジケータは、例えば、メモリ内のベクトルのアドレスおよびベクトル内のオフセットを含んでよい。さらに、DTEは、バス接続デバイスによって、割り込み信号と共に提供された割り込みターゲットIDを使用して、ターゲット・プロセッサが直接アドレス指定されるかどうかを示す、直接信号伝達インジケータを提供してよい。さらに、DTEは、論理パーティションID(ゾーンIDとも呼ばれる)および割り込みサブクラスIDを提供してよい。デバイス・テーブル・エントリの各コピーは、キャッシュまたはメモリからフェッチされてよい。ステップ350で、バス接続デバイスは、DTE内で指定されたベクトルを更新する。
ステップ360で、バス接続デバイスは、割り込み信号と共に提供された直接信号伝達インジケータをチェックする。直接信号伝達インジケータが直接信号伝達を示していない場合、バス接続デバイスは、割り込み信号をゲスト・オペレーティング・システムによって使用されるプロセッサに提供するために、ゾーン識別子および割り込みサブクラス識別子を使用して、ブロードキャストによって割り込み信号を転送する。直接信号伝達インジケータが直接信号伝達を示していない場合、ステップ370で、ブロードキャストによって割り込み信号がプロセッサに転送される。ブロードキャスト・メッセージは、ゾーンIDまたは割り込みサブクラスIDあるいはその両方を含む。プロセッサによる受信時に、ゾーンに対して割り込み要求が有効化されている場合、例えばネスト通信プロトコル(nest communication protocol)に従って、状態ビットがアトミックに設定される。さらに、このプロセッサ上のファームウェア(例えば、ミリコード)が、その活動(例えば、プログラムの実行)を中断し、ゲスト・オペレーティング・システムの割り込みハンドラの実行に切り替える。直接信号伝達インジケータが直接信号伝達を示している場合、ステップ380で、バス接続デバイスが、割り込み信号と共に提供された割り込みターゲットIDを、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの論理プロセッサIDに変換する。この変換のために、バス接続デバイスは、バス接続デバイスに含まれているマッピング・テーブルを使用してよい。バス接続デバイスは、マッピング・テーブルまたはゾーン(すなわち、論理パーティション)ごとのサブテーブルを含んでよい。
ステップ390で、バス接続デバイスが、論理プロセッサIDを使用して各プロセッサを直接アドレス指定し(すなわち、直接メッセージを送信し)、割り込み信号をターゲット・プロセッサに転送する。ステップ396で、ターゲット・プロセッサの受信側ファームウェア(例えば、ミリコード)が、ゲスト・オペレーティング・システムに提示するための直接アドレス指定された割り込みを受け取る。直接メッセージは、ゾーンIDまたは割り込みサブクラスIDあるいはその両方をさらに含んでよい。ステップ3100で、ターゲット・プロセッサのファームウェア(例えば、ミリコード)が割り込みを受信する。それに応じて、ファームウェアは、その活動(例えば、プログラムの実行)を中断し、ゲスト・オペレーティング・システムの割り込みハンドラの実行に切り替えてよい。この割り込みは、直接信号伝達の指示と共にゲスト・オペレーティング・システムに提示されてよい。
図9は、図8の方法をさらに示す追加のフローチャートである。ステップ400で、割り込みメッセージがバス接続デバイスに送信される。ステップ402で、割り込みメッセージが受信される。ステップ404で、割り込み要求元(すなわち、バス接続されたモジュール)に割り当てられたDTEが、バス接続デバイスに操作可能なように接続されたローカル・キャッシュにキャッシュされているかどうかがチェックされる。DTEがキャッシュされていない場合、ステップ406で、バス接続デバイスによってメモリから各DTEがフェッチされる。ステップ408で、DTEによって提供されたベクトル・アドレス・インジケータが、メモリ内のベクトル・ビットを設定するために使用される。ステップ410で、バス接続デバイスによって、割り込み信号と共に提供された割り込みターゲットIDを使用して、ターゲット・プロセッサが直接アドレス指定されるかどうかが、DTEによって提供された直接信号伝達インジケータを使用してチェックされる。ターゲット・プロセッサが直接ターゲットにされない場合、この方法は、ステップ412で、プロセッサへの割り込み要求のブロードキャストを続行する。ターゲット・プロセッサが直接ターゲットにされる場合、この方法は、ステップ414で、割り込みターゲットIDを論理プロセッサIDに変換し、ステップ416で、割り込み信号を転送するメッセージをターゲット・プロセッサに送信することを続行する。論理プロセッサIDは、ターゲット・プロセッサを直接アドレス指定するために使用される。ステップ418で、プロセッサがメッセージを受信する。ステップ420で、プロセッサが割り込み要求をゲスト・オペレーティング・システムに提示する。その後、プロセッサは、次の割り込みメッセージが受信されるまで活動を続行する。
図10は、図5のコンピュータ・システム100のさらに別の実施形態を示している。図10のコンピュータ・システム100は図6のコンピュータ・システム100に対応しており、さらに、プロセッサ130は、バス接続デバイス110によって受信側プロセッサ130に転送された割り込みターゲットIDに従って受信側プロセッサがターゲット・プロセッサと同一であるかどうかをチェックするためのチェック論理134を含む。受信側プロセッサ130がターゲット・プロセッサでない場合、すなわち、受信された割り込みターゲットIDと受信側プロセッサ130の参照割り込みターゲットIDが一致しない場合、割り込み信号を処理するプロセッサを見つけるために、割り込み信号が論理パーティションにブロードキャストされる。
図11は、図10のコンピュータ・システム100を使用して割り込み信号をゲスト・オペレーティング・システムに提供するための例示的な方法のフローチャートである。図8に示されているステップに加えて、図11に従う方法は次を含む。ステップ390で、バス接続デバイスが、論理プロセッサIDを使用して各プロセッサを直接アドレス指定し(すなわち、直接メッセージを送信し)、割り込み信号をターゲット・プロセッサに転送する。直接メッセージは、割り込みターゲットISを含む。直接メッセージは、ゾーンIDまたは割り込みサブクラスIDあるいはその両方をさらに含んでよい。受信側プロセッサは、割り込みターゲットIDチェック論理を備える。このチェック論理は、割り込みターゲットIDが論理パーティションごとにのみ一意である場合、論理パーティションIDをさらに考慮してよい。
ステップ392で、このチェック論理は、受信された割り込みターゲットIDまたは論理パーティションIDあるいはその両方が、受信側プロセッサに現在割り当てられている、チェック論理にとってアクセス可能な割り込みターゲットIDまたは論理パーティションあるいはその両方に一致するかどうかをチェックする。一致しない場合、ステップ394で、受信側ファームウェアが、ブロードキャストを開始し、論理パーティションIDまたは割り込みサブクラスIDあるいはその両方を使用して、割り込みを処理するための有効なターゲット・プロセッサを識別し、受信された割り込み要求を残りのプロセッサにブロードキャストする。肯定的な一致の場合、ステップ3100で、ターゲット・プロセッサの受信側ファームウェア(例えば、ミリコード)が、ゲスト・オペレーティング・システムに提示するための直接アドレス指定された割り込みを受け取る。それに応じて、ファームウェアは、その活動(例えば、プログラムの実行)を中断し、ゲスト・オペレーティング・システムの割り込みハンドラの実行に切り替えてよい。この割り込みは、直接信号伝達の指示と共にゲスト・オペレーティング・システムに提示されてよい。
図12は、図11の方法をさらに示す追加のフローチャートである。図9に示されているステップに加えて、図12に従う方法は次を含む。メッセージは、割り込みターゲットID、論理パーティションID、および割り込みサブクラスIDを含む。ステップ418で、プロセッサがメッセージを受信する。ステップ419で、プロセッサが、割り込みターゲットIDまたは論理パーティションIDあるいはその両方が、チェックのための参照として提供された現在の割り込みターゲットIDまたは論理パーティションIDあるいはその両方と一致するかどうかをチェックする。一致する場合、ステップ420で、プロセッサが割り込み要求をゲスト・オペレーティング・システムに提示する。一致しない場合、ステップ422で、プロセッサが後で割り込み要求を他のプロセッサにブロードキャストする。その後、プロセッサは、次の割り込みメッセージが受信されるまで活動を続行する。
図13は、論理パーティションID(ゾーン)および割り込みターゲットIDに割り当てられたDIBV内のオフセット(DIBVO)を含む例示的なDTE146を示している。DIBVOは、特定のバス接続されたモジュールに割り当てられたベクトルのセクションまたはエントリの開始を識別する。割り込み信号(例えば、MSI-Xメッセージ)は、バス接続されたモジュールに割り当てられたベクトルの特定のエントリを識別するためにDIBVOに追加されたDIBV-Idxを提供してよい。さらに、各バス接続されたモジュールのために確保されているDIBV内の最大ビット数を定義する有向割り込みの数(NOI:number of interrupts)が提供される。DIBVの詳細が、図16Aにさらに示されている。AIBVの場合、DTEは、図16Bに示されているように、対応するAIBV固有のパラメータを提供してよい。
図14は、DISB160および複数のDIBV162の概略構造を示している。DISB160は、割り込みターゲットIDごとにエントリ161(例えば、ビット)を含むメモリの連続的セクション(例えば、キャッシュ・ライン)の形態で提供されてよい。各エントリは、割り込みターゲットIDによって識別された各プロセッサによって処理される割り込み要求(IRQ)が存在するかどうかを示す。割り込みターゲットID(すなわち、DISB160のエントリ)ごとに、DIBV162が提供される。各DIBV162は、特定の割り込みターゲットIDに割り当てられ、バス接続されたモジュールMN AおよびMN Bごとに1つまたは複数のエントリ163を含む。DIBV162はそれぞれ、同じ割り込みターゲットIDに割り当てられたエントリ163を含むメモリの連続的セクション(例えば、キャッシュ・ライン)の形態で提供されてよい。異なるバス接続されたモジュールのエントリは、バス接続されたモジュールごとに異なるオフセットDIBVOを使用する順序であってよい。
図15は、AISB170および複数のAIBV172の概略構造を示している。AISB170は、バス接続されたモジュールMN A~MN Dごとにエントリ171(例えば、ビット)を含むメモリの連続的セクション(例えば、キャッシュ・ライン)の形態で提供されてよい。各エントリは、各バス接続されたモジュールから処理される割り込み要求(IRQ)が存在するかどうかを示す。バス接続されたモジュール(すなわち、AISB170のエントリ)ごとに、AIBV172が提供される。各AIBV172は、特定のバス接続されたモジュールに割り当てられ、割り込みターゲットIDごとに1つまたは複数のエントリ173を含む。AIBV172はそれぞれ、同じバス接続されたモジュールに割り当てられたエントリ173を含むメモリの連続的セクション(例えば、キャッシュ・ライン)の形態で提供されてよい。異なるターゲット・プロセッサIDに関するエントリは、バス接続されたモジュールごとに異なるオフセットAIBVOを使用する順序であってよい。
図17Aおよび17Bは、例示的なDISB160およびAISB170をそれぞれ示している。エントリ161、171は、オフセットDISBOおよびAISBOとそれぞれ組み合わせて基本アドレスDISB@およびAISB@をそれぞれ使用して、アドレス指定されてよい。DISB160の場合、DISBOは、例えば、各エントリ161が割り当てられている割り込みターゲットIDと同一であってよい。割り込みターゲットIDは、例えば、仮想プロセッサID(vCPU)の形態で提供されてよい。
ゲスト・オペレーティング・システムは、例えば、ページング可能ストレージ・モード・ゲストを使用して実装されてよい。ページング可能ゲスト(例えば、z/Architecture(R)におけるページング可能ゲスト)は、解釈のレベル2で、解釈実行開始(SIE:Start Interpretive Execution)命令によって解釈的に実行されてよい。例えば、論理パーティション(LPAR)ハイパーバイザは、SIE命令を実行して、固定された物理メモリ内で論理パーティションを開始する。その論理パーティション内のオペレーティング・システム(例えば、z/VM(R))は、SIE命令を発行し、仮想ストレージ内でゲスト(仮想)マシンを実行してよい。したがって、LPARハイパーバイザはレベル1のSIEを使用してよく、z/VM(R)ハイパーバイザはレベル2のSIEを使用してよい。
実施形態によれば、コンピュータ・システムは、International Business Machines Corporationによって提供されるSystem z(R)サーバである。System z(R)は、International Business Machines Corporationによって提供されるz/Architecture(R)に基づく。z/Architecture(R)に関する詳細は、IBM(R)の公開文献“z/Architecture Principles of Operation,”IBM(R) Publication No. SA22-7832-11, August 25, 2017に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。IBM(R)、System z(R)、およびz/Architecture(R)は、International Business Machines Corporation(ニューヨーク州アーモンク市)の登録商標である。本明細書において使用されるその他の名称は、International Business Machines Corporationまたはその他の会社の登録商標、商標、または製品名であることがある。
実施形態によれば、その他のアーキテクチャのコンピュータ・システムが、本発明の1つまたは複数の態様を実装して使用してよい。例としては、International Business Machines Corporationによって提供されるPower Systemsサーバまたはその他のサーバ、あるいはその他の企業のサーバなどの、System z(R)サーバ以外のサーバが、本発明の1つまたは複数の態様を実装するか、使用するか、またはそれらの態様から恩恵を受けるか、あるいはその組合せであってよい。さらに、本明細書における例では、バス接続されたモジュールおよびバス接続デバイスがサーバの一部と見なされているが、他の実施形態では、バス接続されたモジュールおよびバス接続デバイスは、必ずしもサーバの一部と見なされる必要はなく、コンピュータ・システムのシステム・メモリまたはその他のコンポーネントあるいはその両方に単に結合されていると見なされてよい。コンピュータ・システムはサーバである必要はない。さらに、バス接続されたモジュールはPCIeであってよいが、本発明の1つまたは複数の態様は、他のバス接続されたモジュールと共に使用可能である。PCIeアダプタおよびPCIe機能は、単なる例である。さらに、本発明の1つまたは複数の態様は、PCI MSIおよびPCI MSI-X以外の割り込み方式に適用可能であってよい。さらに、ビットが設定される例が説明されたが、他の実施形態では、バイトまたはその他の種類のインジケータが設定されてよい。さらに、DTEおよびその他の構造が、さらに多い情報、さらに少ない情報、または異なる情報を含んでよい。
さらに、その他の種類のコンピュータ・システムが、本発明の1つまたは複数の態様から恩恵を受けることができる。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含む、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない、入出力デバイスまたはI/Oデバイスが、直接的に、または介在するI/Oコントローラを通じて、システムに結合されてよい。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
図18を参照すると、本発明の1つまたは複数の態様を実装するためのホスト・コンピュータ・システム500の代表的コンポーネントが示されている。代表的ホスト・コンピュータ500は、コンピュータ・メモリ502と通信する1つまたは複数のプロセッサ(例えば、CPU501)と、ストレージ媒体デバイス511および他のコンピュータまたはSANなどと通信するためのネットワーク510へのI/Oインターフェイスとを備える。CPU501は、設計済み命令セットおよび設計済み機能を含むアーキテクチャに準拠している。CPU501は、プログラム・アドレス、仮想アドレスをメモリの実アドレスに変換するための動的アドレス変換(DAT:dynamic address translation)503を含んでよい。DATは、後のコンピュータ・メモリ502のブロックへのアクセスがアドレス変換の遅延を必要としないように、変換をキャッシュするために、変換索引バッファ(TLB:translation lookaside buffer)507を備えてよい。キャッシュ509は、コンピュータ・メモリ502とCPU501の間で採用されてよい。キャッシュ509は、2つ以上のCPUに使用できる大きい高レベルのキャッシュ、および高レベルのキャッシュと各CPUの間の小さい高速の下位レベルのキャッシュを提供して、階層的に構造化されてよい。一部の実装では、下位レベルのキャッシュは、命令のフェッチおよびデータ・アクセスのための個別の低レベル・キャッシュを提供するように、分割されてよい。実施形態によれば、命令は、キャッシュ509を介して命令フェッチ・ユニット504によってメモリ502からフェッチされてよい。命令は、命令デコード・ユニット506においてエンコードされ、一部の実施形態では他の命令と共に、命令実行ユニット508にディスパッチされる。複数の実行ユニット508(例えば、演算実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニット)が採用されてよい。命令は、実行ユニットによって実行され、必要に依って、命令によって規定されたレジスタまたはメモリからオペランドにアクセスする。オペランドがメモリ502からアクセスされる(例えば、読み込まれるか、または格納される)場合、読み込み/格納ユニット505は、実行されている命令の制御下でアクセスを処理してよい。命令は、ハードウェア回路で実行されるか、または内部マイクロコード(すなわち、ファームウェア)で実行されるか、あるいはその両方の組合せによって実行されてよい。
コンピュータ・システムは、アドレス指定、保護、ならびに参照および変更の記録に加えて、情報をローカル・ストレージまたは主記憶装置に含んでよい。アドレス指定の一部の態様は、アドレスの形式、アドレス空間の概念、さまざまなタイプのアドレス、およびあるタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主記憶装置の一部は、永続的に割り当てられたストレージ位置を含む。主記憶装置は、直接アドレス指定可能な高速アクセス・ストレージのデータをシステムに提供する。データとプログラムの両方が、例えば入力デバイスから、処理される前に主記憶装置に読み込まれる。
主記憶装置は、1つまたは複数のより小さい高速アクセス・バッファ・ストレージ(しばしば、キャッシュと呼ばれる)を含んでよい。キャッシュは、CPUまたはI/Oプロセッサに物理的に関連付けられてよい。個別のストレージ媒体の物理的構造および使用の、性能に関する以外の影響は、通常、実行されるプログラムによって観察できなくてよい。
命令のため、およびデータ・オペランドのための別々のキャッシュが維持されてよい。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ラインと呼ばれる整数境界上の連続するバイト内で維持されてよい。モデルは、キャッシュ・ラインのサイズをバイト単位で返すEXTRACT CACHE ATTRIBUTE命令を提供してよい。モデルは、データ・キャッシュまたは命令キャッシュへのストレージのプリフェッチまたはキャッシュからのデータの解放を実行するPREFETCH DATA命令およびPREFETCH DATA RELATIVE LONG命令を提供してもよい。
ストレージは、長い水平なビット列と見なされてよい。ほとんどの動作の場合、ストレージへのアクセスは左から右の順に進んでよい。ビット列は、8ビットの単位にさらに分割される。8ビットの単位はバイトと呼ばれ、すべての情報形式の基本的な構成要素である。ストレージ内の各バイト位置は、そのバイト位置のアドレス(バイト・アドレスとも呼ばれる)である、一意の非負整数によって識別されてよい。隣接するバイト位置は、左端の0から開始して、左から右の順に進む、連続するアドレスを有してよい。アドレスは、符号なし2進整数であり、例えば24ビット、31ビット、または64ビットであってよい。
情報は、メモリとCPUの間で、一度に1バイトまたはバイトのグループとして送信される。特に規定されない限り、例えばz/Architecture(R)では、メモリ内のバイトのグループは、グループの左端のバイトによってアドレス指定される。グループ内のバイトの数は、暗示されるか、または実行される動作によって明示的に規定される。CPUの動作で使用される場合、バイトのグループはフィールドと呼ばれる。例えばz/Architecture(R)では、バイトの各グループ内のビットには、左から右の順に番号が付けられる。z/Architecture(R)では、左端のビットはしばしば「上位」ビットと呼ばれ、右端のビットは「下位」ビットと呼ばれる。ただし、ビット番号はストレージ・アドレスではない。バイトのみがアドレス指定可能であってよい。ストレージ内のバイトの個別のビットを操作するために、バイト全体がアクセスされてよい。バイト内のビットには、例えばz/Architectureでは、左から右に、0~7の番号が付けられてよい。アドレス内のビットは、24ビット・アドレスの場合、8~31または40~63の番号が付けられてよく、31ビット・アドレスの場合、1~31または33~63の番号が付けられてよい。64ビット・アドレスの場合、アドレス内のビットには、0~63の番号が付けられる。複数バイトの任意のその他の固定長形式内で、形式を構成するビットには、0から始まる番号が連続的に付けられてよい。エラー検出の目的で、好ましくは修正のために、1つまたは複数のチェック・ビットが、各バイトまたはバイトのグループと共に送信されてよい。そのようなチェック・ビットは、マシンによって自動的に生成され、プログラムによって直接制御することはできない。ストレージ容量は、バイト数で表される。ストレージ・オペランド・フィールドの長さが命令のオペコードによって暗示される場合、フィールドは固定長を有すると言われ、固定長は、1バイト、2バイト、4バイト、8バイト、または16バイトであってよい。一部の命令では、さらに大きいフィールドが暗示されてよい。ストレージ・オペランド・フィールドの長さが暗示されず、明示的に規定される場合、フィールドは可変長を有すると言われる。可変長オペランドの長さは、1バイト、または一部の命令では、2バイトの倍数またはその他の倍数のインクリメントによって変化してよい。情報がストレージに配置された場合、ストレージへの物理的パスの幅が、格納されるフィールドの長さよりも大きい場合でも、指定されたフィールドに含まれているバイト位置のみの内容が置換される。
情報の特定の単位は、ストレージ内の整数境界上に存在する。ストレージ・アドレスがバイト単位の長さの倍数である場合、情報の単位の境界は整数と呼ばれる。整数境界上の2バイト、4バイト、8バイト、および16バイトのフィールドには、特殊な名前が与えられる。ハーフワードは、2バイト境界上の2つの連続するバイトのグループであり、命令の基本的な構成要素である。ワードは、4バイト境界上の4つの連続するバイトのグループである。ダブルワードは、8バイト境界上の8つの連続するバイトのグループである。クワッドワードは、16バイト境界上の16個の連続するバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、およびクワッドワードを指定する場合、アドレスの2進表現はそれぞれ、1つ、2つ、3つ、または4つの右端のゼロ・ビットを含む。命令は、2バイト整数境界上にある。ほとんどの命令のストレージ・オペランドには、境界合わせ要件がない。
命令およびデータ・オペランドのために別々のキャッシュを実装するデバイスでは、プログラムがあるキャッシュ・ラインに格納し、その後、そのキャッシュ・ラインから命令がフェッチされる場合、格納が後でフェッチされる命令を変更するかどうかに関わらず、大幅な遅延が発生することがある。
1つの実施形態では、本発明はソフトウェア(しばしば、ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれ、これらのいずれかが本発明と一致する)によって実践されてよい。図18を参照すると、本発明を具現化するソフトウェア・プログラム・コードは、CD-ROMドライブ、テープ・ドライブ、またはハード・ドライブなどの長期ストレージ媒体デバイス511からアクセスされてよい。ソフトウェア・プログラム・コードは、データ処理システムで使用するために、フロッピー(R)・ディスク、ハード・ドライブ、またはCD-ROMなどの、さまざまな既知の媒体のいずれかで具現化されてよい。コードは、そのような媒体で配布されてよく、またはネットワーク510を経由してあるコンピュータ・システムのコンピュータ・メモリ502またはストレージから他のコンピュータ・システムへ、そのような他のシステムのユーザによって使用されるために、ユーザに配布されてよい。
ソフトウェア・プログラム・コードは、さまざまなコンピュータ・コンポーネントおよび1つまたは複数のアプリケーション・プログラムの機能および相互作用を制御するオペレーティング・システムを含んでよい。プログラム・コードは、ストレージ媒体デバイス511から相対的に高速なコンピュータ・ストレージ502にページングされてよく、コンピュータ・ストレージ502において、プロセッサ501によって処理するために使用可能になる。ソフトウェア・プログラム・コードを、メモリ内、物理的媒体上で具現化するため、またはネットワークを介してソフトウェア・コードを配布するため、あるいはその両方を行うための周知の手法および方法が使用されてよい。プログラム・コードは、作成されて、電子的メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD:Compact Discs)、DVD、磁気テープを含むが、これらに限定されない有形の媒体に格納された場合、「コンピュータ・プログラム製品」と呼ばれることがある。コンピュータ・プログラム製品の媒体は、処理回路によって実行するために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能であってよい。
図19は、本発明の実施形態が実装されてよい代表的なワークステーションまたはサーバ・ハードウェア・システムを示している。図19のシステム520は、オプションの周辺機器を含むパーソナル・コンピュータ、ワークステーション、またはサーバなどの、代表的なベース・コンピュータ・システム521を含む。ベース・コンピュータ・システム521は、1つまたは複数のプロセッサ526と、既知の手法に従ってプロセッサ526とシステム521の他のコンポーネントの間の通信を接続して有効にするために採用されたバスとを含む。バスは、プロセッサ526を、メモリ525と、例えばハード・ドライブ(例えば、磁気媒体、CD、DVD、およびフラッシュ・メモリのいずれかを含む)またはテープ・ドライブを含んでよい長期ストレージ527とに接続する。システム521は、ユーザ・インターフェイス・アダプタを含んでもよく、このユーザ・インターフェイス・アダプタは、バスを介してマイクロプロセッサ526を、キーボード524、マウス523、プリンタ/スキャナ530、または任意のユーザ・インターフェイス・デバイスであってよいその他のインターフェイス・デバイス(タッチ・センサ式画面、デジタイズ入力パッドなど)、あるいはその組合せなどの、1つまたは複数のインターフェイス・デバイスに接続する。また、バスは、LCD画面またはモニタなどのディスプレイ・デバイス522を、ディスプレイ・アダプタを介してマイクロプロセッサ526に接続する。
システム521は、ネットワーク529と通信(528)できるネットワーク・アダプタを経由して、他のコンピュータまたはコンピュータのネットワークと通信してよい。ネットワーク・アダプタの例は、通信チャネル、トークン・リング、イーサネット(R)、またはモデムである。あるいは、システム521は、セルラー・デジタル・パケット・データ(CDPD:cellular digital packet data)カードなどの無線インターフェイスを使用して通信してよい。システム521は、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)内のそのような他のコンピュータに関連付けられてよく、またはシステム521は、別のコンピュータなどを含むクライアント/サーバ配置内のクライアントであってよい。
図20は、本発明の実施形態が実装されてよいデータ処理ネットワーク540を示している。データ処理ネットワーク540は、無線ネットワークおよび有線ネットワークなどの、複数の個別のネットワークを含んでよく、各ネットワークは、複数の個別のワークステーション541、542、543、544を含んでよい。さらに、当業者が理解するであろうように、1つまたは複数のLANが含まれてよく、LANはホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含んでよい。
引き続き図20を参照すると、ネットワークは、ゲートウェイ・コンピュータ(例えば、クライアント・サーバ546)またはアプリケーション・サーバ(例えば、データ・リポジトリにアクセスしてよく、ワークステーション545から直接アクセスされてもよいリモート・サーバ548)などの、メインフレーム・コンピュータまたはサーバを含んでもよい。ゲートウェイ・コンピュータ546は、個々のネットワークへの入り口として機能してよい。ゲートウェイは、あるネットワーク・プロトコルを別のネットワーク・プロトコルに接続する場合に必要になることがある。ゲートウェイ546は、好ましくは、通信リンクを用いて別のネットワーク(例えば、インターネット547のようなネットワーク)に結合されてよい。ゲートウェイ546は、通信リンクを使用して、1つまたは複数のワークステーション541、542、543、544に直接結合されてもよい。ゲートウェイ・コンピュータは、International Business Machines Corporationから提供されているIBM eServer(TM)System z(R)サーバを使用して実装されてよい。
図19および20を同時に参照すると、本発明を具現化できるソフトウェア・プログラミング・コードは、CD-ROMドライブまたはハード・ドライブなどの長期ストレージ媒体527から、システム520のプロセッサ526によってアクセスされてよい。ソフトウェア・プログラミング・コードは、データ処理システムで使用するために、フロッピー(R)・ディスク、ハード・ドライブ、またはCD-ROMなどの、さまざまな既知の媒体のいずれかで具現化されてよい。コードは、そのような媒体で配布されてよく、またはネットワークを経由してあるコンピュータ・システムのメモリまたはストレージから他のコンピュータ・システムへ、そのような他のシステムのユーザによって使用されるために、ユーザ550、551に配布されてよい。
あるいは、プログラミング・コードは、メモリ525内で具現化され、プロセッサ・バスを使用してプロセッサ526によってアクセスされてよい。そのようなプログラミング・コードは、さまざまなコンピュータ・コンポーネントおよび1つまたは複数のアプリケーション・プログラム532の機能および相互作用を制御するオペレーティング・システムを含んでよい。プログラム・コードは、ストレージ媒体527から高速メモリ525にページングされてよく、高速メモリ525において、プロセッサ526によって処理するために使用可能になる。ソフトウェア・プログラミング・コードを、メモリ内、物理的媒体上で具現化するため、またはネットワークを介してソフトウェア・コードを配布するため、あるいはその両方を行うための周知の手法および方法が使用されてよい。
最も容易にプロセッサで使用できるキャッシュ(すなわち、プロセッサの他のキャッシュよりも高速で小さい可能性がある)は、最低レベルのキャッシュ(L1またはレベル1のキャッシュとも呼ばれる)であり、メイン・メモリは、最高レベルのキャッシュ(n個(例えば、n=3)のレベルが存在する場合は、Ln(例えば、L3)とも呼ばれる)である。最低レベルのキャッシュは、実行される機械可読命令を保持する命令キャッシュ(Iキャッシュとも呼ばれる)およびデータ・オペランドを保持するデータ・キャッシュ(Dキャッシュとも呼ばれる)に分割されてよい。
図21を参照すると、プロセッサの実施形態例が、プロセッサ526に示されている。プロセッサの性能を改善するために、1つまたは複数のレベルのキャッシュ553が採用され、メモリ・ブロックをバッファしてよい。キャッシュ553は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。例えば、キャッシュ・ラインは、64バイト、128バイト、または256バイトのメモリ・データであってよい。命令をキャッシュするため、およびデータをキャッシュするために、別々のキャッシュが採用されてよい。さまざまな適切なアルゴリズム(例えば、「スヌープ」アルゴリズム)によって、キャッシュ・コヒーレンス(すなわち、メモリおよびキャッシュ内のラインのコピーの同期)が提供されてよい。プロセッサ・システムのメイン・メモリ・ストレージ525は、キャッシュと呼ばれることがある。4つのレベルのキャッシュ553を含むプロセッサ・システムでは、主記憶装置525は、高速に構成され得て、コンピュータ・システムで使用できる不揮発性ストレージの一部のみを保持するため、しばしばレベル5(L5)のキャッシュと呼ばれる。主記憶装置525は、オペレーティング・システムによって主記憶装置525内へページングされるデータおよび主記憶装置525から外へページングされるデータのページを「キャッシュ」する。
プログラム・カウンタ(命令カウンタ)561は、実行される現在の命令のアドレスを追跡する。z/Architecture(R)プロセッサでは、プログラム・カウンタは64ビットであり、以前のアドレス指定制限をサポートするために、31ビットまたは24ビットに切り詰められてよい。プログラム・カウンタは、コンテキスト切り替え時に持続するように、コンピュータのプログラム状態ワード(PSW:program status word)内で具現化されてよい。したがって、プログラム・カウンタ値を含む進行中のプログラムは、例えば、プログラム環境からオペレーティング・システム環境へのコンテキスト切り替えを引き起こすオペレーティング・システムによって、中断されることがある。プログラムのPSWは、プログラムがアクティブでない間、プログラム・カウンタ値を維持し、オペレーティング・システムのPSW内のプログラム・カウンタは、オペレーティング・システムの実行中に使用される。プログラム・カウンタは、現在の命令のバイト数に等しい数だけインクリメントされてよい。RISC(Reduced Instruction Set Computing)命令は、固定長であることができ、一方、CISC(Complex Instruction Set Computing)命令は、可変長であることができる。IBM z/Architecture(R)の命令は、2バイト、4バイト、または6バイトの長さを有するCISC命令である。プログラム・カウンタ561は、例えば、コンテキスト切り替え動作、または分岐命令の分岐実行動作のいずれかによって変更されてよい。コンテキスト切り替え動作では、現在のプログラム・カウンタ値は、実行されているプログラムに関する他の状態情報(条件コードなど)と共にプログラム状態ワードに保存され、実行される新しいプログラム・モジュールの命令を指す新しいプログラム・カウンタ値が読み込まれる。分岐実行動作は、分岐命令の結果をプログラム・カウンタ561に読み込むことによって、プログラムが決定を行うか、またはプログラム内でループできるようにするために実行されてよい。
プロセッサ526の代わりに命令をフェッチするために、命令フェッチ・ユニット555が採用されてよい。フェッチ・ユニットは、「次の順次命令」、分岐実行命令のターゲットの命令、またはコンテキスト切り替えの後のプログラムの最初の命令のいずれかをフェッチする。最新の命令フェッチ・ユニットは、プリフェッチ手法を採用し、プリフェッチされた命令が使用される可能性に基づいて、命令を投機的にプリフェッチすることができる。例えば、フェッチ・ユニットは、次の順次命令を含む命令の16バイト、および以降の順次命令の追加バイトをフェッチしてよい。
その後、フェッチされた命令は、プロセッサ526によって実行されてよい。実施形態によれば、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット556に渡されてよい。ディスパッチ・ユニットは、命令をデコードし、デコードされた命令に関する情報を、適切なユニット557、558、560に転送する。実行ユニット557は、デコードされた算術命令に関する情報を命令フェッチ・ユニット555から受信してよく、命令のオペコードに従ってオペランドに対して算術演算を実行してよい。オペランドは、好ましくは、メモリ525、設計済みレジスタ559から、または実行されている命令の即時フィールドから、実行ユニット557に提供されてよい。実行の結果は、格納される場合、メモリ525、レジスタ559に、または他のマシンのハードウェア(制御レジスタ、PSWレジスタなど)に格納されてよい。
プロセッサ526は、命令の機能を実行するための1つまたは複数のユニット557、558、560を備えてよい。図26Aを参照すると、実行ユニット557は、インターフェイス論理571を経由して、設計済み汎用レジスタ559、デコード/ディスパッチ・ユニット556、読み込み格納ユニット560、およびその他のプロセッサ・ユニット565と通信してよい。実行ユニット557は、算術論理演算ユニット(ALU:arithmetic logic unit)566が操作する情報を保持するために、複数のレジスタ回路567、568、569を採用してよい。ALUは、加算、減算、乗算、および除算などの算術演算と、AND、OR、排他的OR(XOR)、ローテート、およびシフトなどの論理関数とを実行する。ALUは、設計に依存する特殊な演算をサポートできるのが好ましい。その他の回路は、例えば条件コードおよび回復支援論理を含むその他の設計済み機能572を提供してよい。ALUの演算の結果は出力レジスタ回路570に保持されてよく、出力レジスタ回路570は、この結果をさまざまな他の処理機能に転送するように構成される。プロセッサ・ユニットの多くの配置が存在し、本説明は、一実施形態の代表的な理解を可能することのみを目的としている。
例えばADD命令は、算術論理演算機能を備えている実行ユニット557で実行されてよく、一方、例えば浮動小数点命令は、特殊な浮動小数点機能を備えている浮動小数点実行ユニットで実行される。好ましくは、実行ユニットは、オペコードによって定義された機能をオペランドに対して実行することによって、命令によって識別されたオペランドを操作する。例えば、ADD命令は、実行ユニット557によって、命令のレジスタ・フィールドによって識別された2つのレジスタ559にあるオペランドに対して実行されてよい。
実行ユニット557は、2つのオペランドに対して算術加算を実行し、その結果を第3のオペランドに格納し、第3のオペランドは、第3のレジスタまたは2つのソース・レジスタのうちの1つであってよい。実行ユニットは、好ましくは、シフト、ローテート、AND、OR、およびXORなどのさまざまな論理関数、ならびに加算、減算、乗算、除算のいずれかを含むさまざまな代数関数を実行できる算術論理演算ユニット(ALU)566を使用する。一部のALU566はスカラー演算用に設計され、一部のALU566は浮動小数点用に設計される。データは、アーキテクチャに依って、最下位バイトが最も大きいバイト・アドレスにあるビッグ・エンディアン、または最下位バイトが最も小さいバイト・アドレスにあるリトル・エンディアンであってよい。IBM z/Architecture(R)はビッグ・エンディアンである。符号付きフィールドは、符号および大きさであってよく、アーキテクチャに依って1の補数または2の補数であってよい。2の補数では、負値または正値がALU内で加算のみを必要とするため、2の補数は、ALUが減算機能を設計する必要がないという点において有利であることがある。数値は省略して表されてよく、例えば、12ビット・フィールドは、4キロバイト・ブロックとして表される4,096バイト・ブロックのアドレスを定義する。
図22Bを参照すると、分岐命令を実行するための分岐命令情報が、分岐ユニット558に送信されてよく、分岐ユニット558は、多くの場合、他の条件付き演算が完了する前に分岐の結果を予測するために、分岐履歴テーブル582などの分岐予測アルゴリズムを採用する。現在の分岐命令のターゲットは、条件付き演算が完了する前に、フェッチされて投機的に実行される。条件付き演算が完了したときに、投機的に実行された分岐命令は、条件付き演算の条件および投機的実行の結果に基づいて、完了されるか、または破棄される。分岐命令は、条件コードをテストし、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐してよく、ターゲット・アドレスは、例えば命令のレジスタ・フィールドまたは即時フィールドにある数値を含む複数の数値に基づいて計算されてよい。分岐ユニット558は、複数の入力レジスタ回路575、576、577、および出力レジスタ回路580を含むALU574を採用してよい。分岐ユニット558は、例えば汎用レジスタ559、デコード・ディスパッチ・ユニット556、またはその他の回路573と通信してよい。
命令のグループの実行は、例えば、オペレーティング・システムによって開始されたコンテキスト切り替え、コンテキスト切り替えを引き起こすプログラム例外またはエラー、コンテキスト切り替えを引き起こすI/O割り込み信号、またはマルチスレッド環境内の複数のプログラムのマルチスレッド動作を含む、さまざまな理由のために中断されることがある。好ましくは、コンテキスト切り替え動作は、現在実行中のプログラムに関する状態情報を保存してから、呼び出されている別のプログラムに関する状態情報を読み込む。状態情報は、例えば、ハードウェア・レジスタまたはメモリに保存されてよい。状態情報は、好ましくは、実行される次の命令を指すプログラム・カウンタ値、条件コード、メモリ変換情報、および設計済みレジスタの内容を含む。コンテキスト切り替え動作は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード(例えば、マイクロコード、ピココード、またはライセンス内部コード(LIC:licensed internal code)など)によって、単独で、または組み合わせて行われてよい。
プロセッサは、命令によって定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を使用して即時オペランドを提供してよく、汎用レジスタまたは専用レジスタ(例えば、浮動小数点レジスタなど)を明示的に指す1つまたは複数のレジスタ・フィールドを提供してよい。命令は、オペコード・フィールドによってオペランドとして識別された暗黙のレジスタを使用してよい。命令は、オペランドのメモリ位置を使用してよい。オペランドのメモリ位置は、レジスタ、即時フィールド、またはz/Architecture(R)の長変位ファシリティなどのレジスタと即時フィールドの組合せによって提供されてよく、長変位ファシリティでは、命令がベース・レジスタ、インデックス・レジスタ、および即時フィールド(すなわち、変位フィールド)を定義し、これらが一緒に加算されて、例えばメモリ内のオペランドのアドレスを提供する。本明細書では、特に示されない限り、位置は、メイン・メモリ内の位置を意味してよい。
図22Cを参照すると、プロセッサは、読み込み/格納ユニット560を使用してストレージにアクセスする。読み込み/格納ユニット560は、メモリ553内のターゲット・オペランドのアドレスを取得し、レジスタ559内または別のメモリ(553)位置内のオペランドを読み込むことによって、読み込み動作を実行してよく、またはメモリ553内のターゲット・オペランドのアドレスを取得して、レジスタ559または別のメモリ(553)位置から取得されたデータを、メモリ553内のターゲット・オペランドの位置に格納することによって、格納動作を実行してよい。読み込み/格納ユニット560は、投機的であってよく、命令の順序とは異なる順序でメモリにアクセスしてよいが、読み込み/格納ユニット560は、プログラムからは命令が順序通りに実行されたように見えるということを維持する。読み込み/格納ユニット560は、汎用レジスタ559、デコード/ディスパッチ・ユニット556、キャッシュ/メモリ・インターフェイス553、またはその他の要素583と通信してよく、ストレージ・アドレスを計算するため、および動作の順序を維持するパイプライン・シーケンシングを提供するために、さまざまなレジスタ回路、ALU585、ならびに制御論理590を備えている。一部の動作の順序は、命令の順序とは異なる順序であってよいが、読み込み/格納ユニットは、プログラムからは不規則な順序の動作が順序通りに実行されたように見えるようにする機能を提供する。
好ましくは、アプリケーション・プログラムから「見える」アドレスは、多くの場合、仮想アドレスと呼ばれる。仮想アドレスは、しばしば「論理アドレス」および「実効アドレス」とも呼ばれる。これらの仮想アドレスは、さまざまな動的アドレス変換(DAT)技術のうちの1つによって物理的メモリ位置にリダイレクトされるという点において仮想的であり、動的アドレス変換技術は、仮想アドレスの先頭に単純にオフセット値を付加することと、1つまたは複数の変換テーブルを介して仮想アドレスを変換することとを含むが、これらに限定されず、変換テーブルは、好ましくは少なくともセグメント・テーブルおよびページ・テーブルを単独で、または組み合わせて含み、セグメント・テーブルは、好ましくはページ・テーブルを指すエントリを含む。z/Architecture(R)では、第1の領域テーブル、第2の領域テーブル、第3の領域テーブル、セグメント・テーブル、およびオプションのページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、多くの場合、仮想アドレスを関連する物理的メモリ位置にマッピングするエントリを含む変換索引バッファ(TLB)を使用することによって改善される。このエントリは、DATが変換テーブルを使用して仮想アドレスを変換するときに作成される。その後、仮想アドレスを使用する際に、低速で順次的な変換テーブル・アクセスではなく、高速なTLBのエントリを使用してよい。TLBの内容は、最長時間未使用(LRU:Least Recently used)を含むさまざまな置換アルゴリズムによって管理されてよい。
マルチプロセッサ・システムの各プロセッサは、I/O、キャッシュ、TLB、およびメモリなどの共有リソースが連動されて、一貫性を保つ責任を持つ。キャッシュの一貫性の維持において、いわゆる「スヌープ」技術が使用されてよい。スヌープ環境では、共有を容易にするために、各キャッシュ・ラインには、共有状態、排他的状態、変更済み状態、無効状態などのうちのいずれか1つであるとしてマークが付けられてよい。
I/Oユニット554は、例えばテープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む周辺機器に接続するための手段をプロセッサに提供してよい。I/Oユニットは、多くの場合、ソフトウェア・ドライバによってコンピュータ・プログラムに提供される。IBM(R)のSystem z(R)などのメインフレームでは、チャネル・アダプタおよびオープン・システム・アダプタが、オペレーティング・システムと周辺機器の間の通信を提供するメインフレームのI/Oユニットである。
さらに、その他の種類のコンピュータ・システムが、本発明の1つまたは複数の態様から恩恵を受けることができる。一例として、コンピュータ・システムは、エミュレータ(例えば、ソフトウェアまたはその他のエミュレーション・メカニズム)を備えてよく、エミュレータでは、例えば命令実行、アドレス変換などの設計済み機能、および設計済みレジスタを含む特定のアーキテクチャがエミュレートされるか、または特定のアーキテクチャのサブセットが、例えばプロセッサおよびメモリを含むネイティブ・コンピュータ・システム上で、エミュレートされる。そのような環境では、エミュレータの1つまたは複数のエミュレーション機能は、エミュレータを実行しているコンピュータが、エミュレートされている機能とは異なるアーキテクチャを有している場合でも、本発明の1つまたは複数の態様を実装してよい。例えば、エミュレーション・モードでは、エミュレートされる特定の命令または動作がデコードされてよく、適切なエミュレーション機能が構築されて、個別の命令または動作を実装してよい。
エミュレーション環境では、ホスト・コンピュータは、例えば、命令およびデータを格納するためのメモリと、命令をメモリからフェッチするため、および必要に応じてフェッチされた命令のローカル・バッファを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信するため、およびフェッチされた命令のタイプを決定するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを備えてよい。実行は、データをメモリからレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、またはデコード・ユニットによって決定された任意の種類の算術演算もしくは論理演算を実行すること、あるいはその組合せを含んでよい。例えば、各ユニットはソフトウェアで実装されてよい。ユニットによって実行される動作は、エミュレータ・ソフトウェア内の1つまたは複数のサブルーチンとして実装されてよい。
さらに具体的には、メインフレームでは、設計済み機械命令は、例えばコンパイラ・アプリケーションを介して、プログラマー(例えば、「C」プログラマーなど)によって使用される。ストレージ媒体に格納されたこれらの命令は、z/Architecture(R)IBM(R) Serverにおいてネイティブに実行されるか、または代替として、他のアーキテクチャを実行しているマシンにおいて実行されてよい。これらの命令は、既存の、および将来のIBM(R)のメインフレーム・サーバにおいて、およびIBM(R)のその他のマシン(例えば、Power SystemsサーバおよびSystem x(R)Servers)上でエミュレートされてよい。これらの命令は、IBM(R)、Intel(R)、AMD(TM)、およびその他の企業によって製造されたハードウェアを使用している多種多様なマシン上で、Linuxを実行しているマシンにおいて実行されてよい。このハードウェア上のz/Architecture(R)の下での実行に加えて、Hercules、UMX、またはFSI(Fundamental Software, Inc)によるエミュレーションを使用するマシンと同様に、Linuxも使用されてよく、その場合、実行は典型的には、エミュレーション・モードにある。エミュレーション・モードでは、エミュレーション・ソフトウェアは、ネイティブ・プロセッサによって実行されて、エミュレートされるプロセッサのアーキテクチャをエミュレートする。
ネイティブ・プロセッサは、ファームウェアまたはネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行して、エミュレートされるプロセッサのエミュレーションを実行してよい。エミュレーション・ソフトウェアは、エミュレートされるプロセッサ・アーキテクチャの命令をフェッチして実行することを担当する。エミュレーション・ソフトウェアは、エミュレートされるプログラム・カウンタを維持し、命令境界を追跡する。エミュレーション・ソフトウェアは、1つまたは複数のエミュレートされる機械命令を一度にフェッチし、1つまたは複数のエミュレートされる機械命令を、ネイティブ・プロセッサによって実行するために、ネイティブ機械命令の対応するグループに変換してよい。これらの変換された命令は、より高速な変換を実現できるように、キャッシュされてよい。それでも、エミュレーション・ソフトウェアは、エミュレートされるプロセッサ用に記述されたオペレーティング・システムおよびアプリケーションが正しく動作することを保証するために、エミュレートされるプロセッサ・アーキテクチャのアーキテクチャ・ルールを維持する。さらに、エミュレーション・ソフトウェアは、エミュレートされるプロセッサ上で実行するように設計されたオペレーティング・システムまたはアプリケーション・プログラムを、エミュレーション・ソフトウェアを含むネイティブ・プロセッサ上で実行できるように、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割り込みメカニズム、コンテキスト切り替えメカニズム、時刻(TOD:Time of Day)クロック、ならびにI/Oサブシステムへの設計済みインターフェイスを含むが、これらに限定されない、エミュレートされるプロセッサ・アーキテクチャによって識別されるリソースを提供する。
エミュレートされる特定の命令がデコードされ、サブルーチンが呼び出されて個別の命令の機能を実行する。エミュレートされるプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば「C」のサブルーチンまたはドライバで実装されるか、または特定のハードウェアのドライバを提供する何らかのその他の方法で実装される。
図23では、エミュレートされるホスト・コンピュータ・システム592の例が提供されており、この例では、ホスト・アーキテクチャのホスト・コンピュータ・システム500’をエミュレートする。エミュレートされるホスト・コンピュータ・システム592では、ホスト・プロセッサ(すなわち、CPU)591は、エミュレートされるホスト・プロセッサまたは仮想ホスト・プロセッサであり、ホスト・コンピュータ500’のプロセッサ591のネイティブ命令セット・アーキテクチャとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ593を備えている。エミュレートされるホスト・コンピュータ・システム592は、エミュレーション・プロセッサ593がアクセスできるメモリ594を含む。実施形態例では、メモリ594は、ホスト・コンピュータ・メモリ596の部分とエミュレーション・ルーチン597の部分に分割される。ホスト・コンピュータ・メモリ596は、ホスト・コンピュータ・アーキテクチャに従って、エミュレートされるホスト・コンピュータ592のプログラムで使用できる。エミュレーション・プロセッサ593は、エミュレートされるプロセッサ591のアーキテクチャ以外のアーキテクチャの設計済み命令セットのネイティブ命令(エミュレーション・ルーチンのメモリ597から取得されたネイティブ命令)を実行し、シーケンスおよびアクセス/デコード・ルーチンにおいて取得された1つまたは複数の命令を採用することによって、ホスト・コンピュータ・メモリ596内のプログラムから実行するために、ホスト命令にアクセスしてよく、シーケンスおよびアクセス/デコード・ルーチンは、アクセスされるホスト命令をデコードして、アクセスされるホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを決定してよい。ホスト・コンピュータ・システム500’のアーキテクチャに対して定義されたその他の機能は、例えば汎用レジスタ、制御レジスタ、動的アドレス変換およびI/Oサブシステムのサポート、ならびにプロセッサ・キャッシュなどの機能を含む、設計済み機能ルーチンによってエミュレートされてよい。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ593で使用できる機能(汎用レジスタおよび仮想アドレスの動的変換など)を利用してもよい。ホスト・コンピュータ500’の機能のエミュレーションにおいてプロセッサ593を支援するために、特殊なハードウェアおよびオフロード・エンジンが提供されてもよい。
組み合わせられた実施形態が互いに排他的でない限り、本発明の前述の実施形態のうちの1つまたは複数が組み合わせられてよいということが理解される。例えば「第1の」および「第2の」などの序数は、本明細書では、同じ名前を割り当てられた異なる要素を示すために使用されるが、必ずしも各要素の順序を確立しない。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含むコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ・システムのコンピュータ上で全体的に実行すること、ユーザのコンピュータ・システムのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ・システムのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータ・システムのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含む製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
前述した特徴の可能性のある組合せは、次の通りであってよい。
1.ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するための方法であって、このコンピュータ・システムが、バスおよびバス接続デバイスを介して複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、
複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにバス接続デバイスによって使用される論理プロセッサIDが割り当てられており、
ゲスト・オペレーティング・システムで使用するために割り当てられた複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにゲスト・オペレーティング・システムおよび1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、
この方法は、
バス接続デバイスによって、バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、この割り込みターゲットIDが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサのうちの1つを、割り込み信号を処理するためのターゲット・プロセッサとして識別する、受信することと、
バス接続デバイスによって、バス接続デバイスに含まれているマッピング・テーブルを使用して受信された割り込みターゲットIDをターゲット・プロセッサの論理プロセッサIDに変換することであって、このマッピング・テーブルが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDを複数のプロセッサの論理プロセッサIDにマッピングする、変換することと、
バス接続デバイスによって、ターゲット・プロセッサを直接アドレス指定するためにターゲット・プロセッサの論理プロセッサIDを使用して、割り込み信号を処理するためにターゲット・プロセッサに転送することとを含む。
2.ターゲット・プロセッサの割り込みターゲットIDを含むメッセージ信号割り込みの形態で割り込み信号が受信される、項目1に記載の方法。
3.コンピュータ・システムがメモリをさらに備え、バス接続デバイスがメモリに操作可能なように接続されており、方法が、
バス接続デバイスによって、デバイス・テーブル・エントリのコピーをメモリに格納されているデバイス・テーブルから取り出すことであって、デバイス・テーブル・エントリが、ターゲット・プロセッサが直接アドレス指定されるかどうかを示す直接信号伝達インジケータを含む、取り出すことと、
直接信号伝達インジケータが割り込み信号の直接転送を示している場合に、ターゲット・プロセッサの論理プロセッサIDを使用してターゲット・プロセッサを直接アドレス指定する割り込み信号の転送が実行され、
そうでない場合に、バス接続デバイスによって、ブロードキャストを使用して割り込み信号を処理するために複数のプロセッサに転送することとをさらに含む、項目1または2のいずれかに記載の方法。
4.直接信号伝達インジケータが単一のビットとして実装される、項目3に記載の方法。
5.直接信号伝達インジケータが、ゲスト・オペレーティング・システムの初期化中に、ゲスト・オペレーティング・システムに対して静的インジケータとして設定される、項目3または4のいずれかに記載の方法。
6.複数のプロセッサの論理プロセッサIDへの、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDのマッピングが、マッピング・テーブルによって定義された静的マッピングである、項目3ないし5のいずれかに記載の方法。
7.バス接続デバイスが、デバイス・テーブル・エントリのコピーが、バス接続デバイスに操作可能なように接続されたローカル・キャッシュにキャッシュされているかどうかをチェックし、
デバイス・テーブル・エントリのコピーがキャッシュされている場合、デバイス・テーブル・エントリのコピーの取り出しが、各キャッシュから取り出すことであり、
そうでない場合、デバイス・テーブル・エントリの取り出しが、メモリから取り出すことである、項目3ないし6のいずれかに記載の方法。
8.メモリが、割り込み要約ベクトルをさらに含み、デバイス・テーブル・エントリが、割り込み要約ベクトルのメモリ・アドレスを示す割り込み要約ベクトル・アドレス・インジケータをさらに含み、割り込み要約ベクトルが、バス接続されたモジュールごとに割り込み要約インジケータを含み、各割り込み要約インジケータが、バス接続されたモジュールに割り当てられ、各バス接続されたモジュールによって発行された処理される割り込み信号が存在するかどうかを示し、
方法が、バス接続デバイスによって、割り込み要約ベクトルの示されたメモリ・アドレスを使用して、受信された割り込み信号の発行元であるバス接続されたモジュールに割り当てられた割り込み要約インジケータを更新し、更新された割り込み要約インジケータが、各バス接続されたモジュールによって発行された処理される割り込み信号が存在するということを示すようにすることをさらに含む、項目3ないし7のいずれかに記載の方法。
9.割り込み要約ベクトルが連続領域として実装される、項目8に記載の方法。
10.割り込み要約インジケータが単一のビットとしてそれぞれ実装される、項目8または9のいずれかに記載の方法。
11.メモリが、有向割り込み要約ベクトルをさらに含み、デバイス・テーブル・エントリが、有向割り込み要約ベクトルのメモリ・アドレスを示す有向割り込み要約ベクトル・アドレス・インジケータをさらに含み、有向割り込み要約ベクトルが、割り込みターゲットIDごとに有向割り込み要約インジケータを含み、各有向割り込み要約インジケータが、割り込みターゲットIDに割り当てられ、各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在するかどうかを示し、
方法が、バス接続デバイスによって、有向割り込み要約ベクトルの示されたメモリ・アドレスを使用して、受信された割り込み信号のアドレス指定先であるターゲット・プロセッサIDに割り当てられた割り込み要約インジケータを更新し、更新された割り込み要約インジケータが、各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在するということを示すようにすることをさらに含む、項目3ないし10のいずれかに記載の方法。
12.有向割り込み要約ベクトルが連続領域として実装される、項目11に記載の方法。
13.有向割り込み要約インジケータが単一のビットとしてそれぞれ実装される、項目11または12のいずれかに記載の方法。
14.メモリが1つまたは複数の割り込み信号ベクトルをさらに含み、デバイス・テーブル・エントリが、1つまたは複数の割り込み信号ベクトルのうちの1つの割り込み信号ベクトルのメモリ・アドレスを示す割り込み信号ベクトル・アドレス・インジケータをさらに含み、割り込み信号ベクトルの各々が、1つまたは複数の信号インジケータを含み、各割り込み信号インジケータが、1つまたは複数のバス接続されたモジュールのうちの1つのバス接続されたモジュールおよび割り込みターゲットIDに割り当てられ、割り込み信号が、各割り込みターゲットIDに向けてアドレス指定された各バス接続されたモジュールから受信されたかどうかを示し、
方法が、
バス接続デバイスによって、割り込み信号ベクトルの示されたメモリ・アドレスを使用して、受信された割り込み信号を発行したバス接続されたモジュール、および受信された割り込み信号のアドレス指定先である割り込みターゲットIDに割り当てられた割り込み信号インジケータを選択することと、
選択された割り込み信号インジケータが、各バス接続されたモジュールによって発行され、各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在することを示すように、選択された割り込み信号インジケータを更新することとをさらに含む、項目3ないし13のいずれかに記載の方法。
15.割り込み信号ベクトルが、各割り込みターゲットIDに割り当てられた割り込みターゲットIDごとの割り込み信号インジケータをそれぞれ含み、割り込み信号ベクトルの各々が個別のバス接続されたモジュールに割り当てられ、各割り込み信号ベクトルの割り込み信号インジケータが、各個別のバス接続されたモジュールにさらに割り当てられる、項目14に記載の方法。
16.割り込み信号ベクトルが、各バス接続されたモジュールに割り当てられたバス接続されたモジュールごとの割り込み信号インジケータをそれぞれ含み、割り込み信号ベクトルの各々が個別のターゲット・プロセッサIDに割り当てられ、各割り込み信号ベクトルの割り込み信号インジケータが、各ターゲット・プロセッサIDにさらに割り当てられる、項目14に記載の方法。
17.割り込み信号ベクトルがメモリ内の連続領域としてそれぞれ実装される、項目14ないし16のいずれかに記載の方法。
18.割り込み信号インジケータが単一のビットとしてそれぞれ実装される、項目14ないし17のいずれかに記載の方法。
19.デバイス・テーブル・エントリが、ゲスト・オペレーティング・システムが割り当てられた論理パーティションを識別する論理パーティションIDをさらに含み、バス接続デバイスによる割り込み信号の転送が、割り込み信号と共に論理パーティションIDを転送することをさらに含む、項目1ないし18のいずれかに記載の方法。
20.バス接続モジュールが、論理パーティションIDごとにマッピング・テーブルを備える、項目19に記載の方法。
21.方法が、バス接続デバイスによって、受信された割り込み信号が割り当てられた割り込みサブクラスを識別する割り込みサブクラスIDを取り出すことをさらに含み、バス接続デバイスによる割り込み信号の転送が、割り込み信号と共に割り込みサブクラスIDを転送することをさらに含む、項目1ないし20のいずれかに記載の方法。
22.コンピュータ・システムのプロセッサが、複数のゲスト・オペレーティング・システムを実行するように適合され、バス接続デバイスが、複数のゲスト・オペレーティング・システムのゲスト・オペレーティング・システムごとにマッピング・テーブルを備える、項目1ないし21のいずれかに記載の方法。
23.バス接続デバイスによって、メモリ内のバス接続されたモジュールの状態情報を更新するためのダイレクト・メモリ・アクセスの要求をバス接続されたモジュールから受信することであって、バス接続されたモジュールの状態更新が割り込み信号をトリガーする、受信することと、
この要求の受信時に、バス接続デバイスによって、メモリへのダイレクト・メモリ・アクセスを実行して、メモリ内のバス接続されたモジュールの状態情報を更新することとをさらに含む、項目1ないし22のいずれかに記載の方法。
24.ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するためのコンピュータ・システムであって、このコンピュータ・システムが、バスおよびバス接続デバイスを介して複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、
複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにバス接続デバイスによって使用される論理プロセッサIDが割り当てられており、
ゲスト・オペレーティング・システムで使用するために割り当てられた複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにゲスト・オペレーティング・システムおよび1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、
このコンピュータ・システムが、
バス接続デバイスによって、バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、この割り込みターゲットIDが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサのうちの1つを、割り込み信号を処理するためのターゲット・プロセッサとして識別する、受信することと、
バス接続デバイスによって、バス接続デバイスに含まれているマッピング・テーブルを使用して受信された割り込みターゲットIDをターゲット・プロセッサの論理プロセッサIDに変換することであって、このマッピング・テーブルが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDを複数のプロセッサの論理プロセッサIDにマッピングする、変換することと、
バス接続デバイスによって、ターゲット・プロセッサを直接アドレス指定するためにターゲット・プロセッサの論理プロセッサIDを使用して、割り込み信号を処理するためにターゲット・プロセッサに転送することとを含む方法を実行するように構成される、コンピュータ・システム。
25.ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行されるゲスト・オペレーティング・システムに割り込み信号を提供するためのコンピュータ・プログラム製品であって、このコンピュータ・システムが、バスおよびバス接続デバイスを介して複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、
複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにバス接続デバイスによって使用される論理プロセッサIDが割り当てられており、
ゲスト・オペレーティング・システムで使用するために割り当てられた複数のプロセッサの各プロセッサに、各プロセッサをアドレス指定するためにゲスト・オペレーティング・システムおよび1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、
このコンピュータ・プログラム製品が、処理回路によって読み取り可能な、方法を実行するために処理回路によって実行される命令を格納しているコンピュータ可読の非一過性媒体を備え、この方法が、
バス接続デバイスによって、バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、この割り込みターゲットIDが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサのうちの1つを、割り込み信号を処理するためのターゲット・プロセッサとして識別する、受信することと、
バス接続デバイスによって、バス接続デバイスに含まれているマッピング・テーブルを使用して受信された割り込みターゲットIDをターゲット・プロセッサの論理プロセッサIDに変換することであって、このマッピング・テーブルが、ゲスト・オペレーティング・システムで使用するために割り当てられたプロセッサの割り込みターゲットIDを複数のプロセッサの論理プロセッサIDにマッピングする、変換することと、
バス接続デバイスによって、ターゲット・プロセッサを直接アドレス指定するためにターゲット・プロセッサの論理プロセッサIDを使用して、割り込み信号を処理するためにターゲット・プロセッサに転送することとを含む、コンピュータ・プログラム製品。

Claims (24)

  1. ゲスト・オペレーティング・システムで使用するために割り当てられたコンピュータ・システムの複数のプロセッサのうちの1つまたは複数のプロセッサを使用して実行される前記ゲスト・オペレーティング・システムに割り込み信号を提供するための方法であって、前記コンピュータ・システムが、バスおよびバス接続デバイスを介して前記複数のプロセッサに操作可能なように接続されている1つまたは複数のバス接続されたモジュールをさらに備え、
    前記複数のプロセッサの各プロセッサに、前記各プロセッサをアドレス指定するために前記バス接続デバイスによって使用される論理プロセッサIDが割り当てられており、
    前記ゲスト・オペレーティング・システムで使用するために割り当てられた前記複数のプロセッサの各プロセッサに、前記各プロセッサをアドレス指定するために前記ゲスト・オペレーティング・システムおよび前記1つまたは複数のバス接続されたモジュールによって使用される割り込みターゲットIDがさらに割り当てられており、
    前記方法が、
    前記バス接続デバイスによって、前記バス接続されたモジュールのうちの1つから割り込みターゲットIDと共に割り込み信号を受信することであって、前記割り込みターゲットIDが、前記ゲスト・オペレーティング・システムで使用するために割り当てられた前記プロセッサのうちの1つを、前記割り込み信号を処理するためのターゲット・プロセッサとして識別する、前記受信することと、
    前記バス接続デバイスによって、前記バス接続デバイスに含まれているマッピング・テーブルを使用して前記受信された割り込みターゲットIDを前記ターゲット・プロセッサの論理プロセッサIDに変換することであって、前記マッピング・テーブルが、前記ゲスト・オペレーティング・システムで使用するために割り当てられた前記プロセッサの前記割り込みターゲットIDを前記複数のプロセッサの論理プロセッサIDにマッピングする、前記変換することと、
    前記バス接続デバイスによって、前記ターゲット・プロセッサを直接アドレス指定するために前記ターゲット・プロセッサの前記論理プロセッサIDを使用して、前記割り込み信号を処理するために前記ターゲット・プロセッサに転送することを含み、
    前記コンピュータ・システムの前記プロセッサが、複数のゲスト・オペレーティング・システムを実行するように適合され、前記バス接続デバイスが、前記複数のゲスト・オペレーティング・システムのゲスト・オペレーティング・システムごとにマッピング・テーブルを備える、方法。
  2. 前記ターゲット・プロセッサの前記割り込みターゲットIDを含むメッセージ信号割り込みの形態で前記割り込み信号が受信される、請求項1に記載の方法。
  3. 前記コンピュータ・システムがメモリをさらに備え、前記バス接続デバイスが前記メモリに操作可能なように接続されており、前記方法が、
    前記バス接続デバイスによって、デバイス・テーブル・エントリのコピーを前記メモリに格納されているデバイス・テーブルから取り出すことであって、前記デバイス・テーブル・エントリが、前記ターゲット・プロセッサが直接アドレス指定されるかどうかを示す直接信号伝達インジケータを含む、前記取り出すことと、
    前記直接信号伝達インジケータが前記割り込み信号の直接転送を示している場合に、前記ターゲット・プロセッサの論理プロセッサIDを使用して前記ターゲット・プロセッサを直接アドレス指定する前記割り込み信号の前記転送が実行され、
    そうでない場合に、前記バス接続デバイスによって、ブロードキャストを使用して、前記割り込み信号を処理するために前記複数のプロセッサに転送することをさらに含む、請求項1に記載の方法。
  4. 前記直接信号伝達インジケータが単一のビットとして実装される、請求項3に記載の方法。
  5. 前記直接信号伝達インジケータが、前記ゲスト・オペレーティング・システムの初期化中に、前記ゲスト・オペレーティング・システムに対して静的インジケータとして設定される、請求項3に記載の方法。
  6. 前記複数のプロセッサの論理プロセッサIDへの、前記ゲスト・オペレーティング・システムで使用するために割り当てられた前記プロセッサの前記割り込みターゲットIDの前記マッピングが、前記マッピング・テーブルによって定義された静的マッピングである、請求項3に記載の方法。
  7. 前記バス接続デバイスが、前記デバイス・テーブル・エントリの前記コピーが、前記バス接続デバイスに操作可能なように接続されたローカル・キャッシュにキャッシュされているかどうかをチェックし、
    前記デバイス・テーブル・エントリの前記コピーがキャッシュされている場合、前記デバイス・テーブル・エントリの前記コピーの前記取り出しが、前記各キャッシュから取り出すことであり、
    そうでない場合、前記デバイス・テーブル・エントリの前記取り出しが、前記メモリから取り出すことである、請求項3に記載の方法。
  8. 前記メモリが、割り込み要約ベクトルをさらに含み、前記デバイス・テーブル・エントリが、前記割り込み要約ベクトルのメモリ・アドレスを示す割り込み要約ベクトル・アドレス・インジケータをさらに含み、前記割り込み要約ベクトルが、バス接続されたモジュールごとに割り込み要約インジケータを含み、各割り込み要約インジケータが、バス接続されたモジュールに割り当てられ、前記各バス接続されたモジュールによって発行された処理される割り込み信号が存在するかどうかを示し、
    前記方法が、前記バス接続デバイスによって、前記割り込み要約ベクトルの前記示されたメモリ・アドレスを使用して、受信された前記割り込み信号の発行元である前記バス接続されたモジュールに割り当てられた前記割り込み要約インジケータを更新し、前記更新された割り込み要約インジケータが、前記各バス接続されたモジュールによって発行された処理される割り込み信号が存在するということを示すようにすることをさらに含む、請求項3に記載の方法。
  9. 前記割り込み要約ベクトルが連続領域として実装される、請求項8に記載の方法。
  10. 前記割り込み要約インジケータが単一のビットとしてそれぞれ実装される、請求項8に記載の方法。
  11. 前記メモリが、有向割り込み要約ベクトルをさらに含み、前記デバイス・テーブル・エントリが、前記有向割り込み要約ベクトルのメモリ・アドレスを示す有向割り込み要約ベクトル・アドレス・インジケータをさらに含み、前記有向割り込み要約ベクトルが、割り込みターゲットIDごとに有向割り込み要約インジケータを含み、各有向割り込み要約インジケータが、割り込みターゲットIDに割り当てられ、前記各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在するかどうかを示し、
    前記方法が、前記バス接続デバイスによって、前記有向割り込み要約ベクトルの前記示されたメモリ・アドレスを使用して、前記受信された割り込み信号のアドレス指定先である前記割り込みターゲットIDに割り当てられた前記割り込み要約インジケータを更新し、前記更新された割り込み要約インジケータが、前記各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在するということを示すようにすることをさらに含む、請求項3に記載の方法。
  12. 前記有向割り込み要約ベクトルが連続領域として実装される、請求項11に記載の方法。
  13. 前記有向割り込み要約インジケータが単一のビットとしてそれぞれ実装される、請求項11に記載の方法。
  14. 前記メモリが1つまたは複数の割り込み信号ベクトルをさらに含み、前記デバイス・テーブル・エントリが、前記1つまたは複数の割り込み信号ベクトルのうちの1つの割り込み信号ベクトルのメモリ・アドレスを示す割り込み信号ベクトル・アドレス・インジケータをさらに含み、前記割り込み信号ベクトルの各々が、1つまたは複数の信号インジケータを含み、各割り込み信号インジケータが、前記1つまたは複数のバス接続されたモジュールのうちの1つのバス接続されたモジュールおよび割り込みターゲットIDに割り当てられ、割り込み信号が、前記各割り込みターゲットIDに向けてアドレス指定された前記各バス接続されたモジュールから受信されたかどうかを示し、
    前記方法が、
    前記バス接続デバイスによって、前記割り込み信号ベクトルの前記示されたメモリ・アドレスを使用して、前記受信された割り込み信号を発行した前記バス接続されたモジュール、および前記受信された割り込み信号のアドレス指定先である前記割り込みターゲットIDに割り当てられた前記割り込み信号インジケータを選択することと、
    前記選択された割り込み信号インジケータが、前記各バス接続されたモジュールによって発行され、前記各割り込みターゲットIDに向けてアドレス指定された処理される割り込み信号が存在することを示すように、前記選択された割り込み信号インジケータを更新することをさらに含む、請求項3に記載の方法。
  15. 前記割り込み信号ベクトルが、前記各割り込みターゲットIDに割り当てられた割り込みターゲットIDごとの割り込み信号インジケータをそれぞれ含み、前記割り込み信号ベクトルの各々が個別のバス接続されたモジュールに割り当てられ、前記各割り込み信号ベクトルの前記割り込み信号インジケータが、前記各個別のバス接続されたモジュールにさらに割り当てられる、請求項14に記載の方法。
  16. 前記割り込み信号ベクトルが、前記各バス接続されたモジュールに割り当てられたバス接続されたモジュールごとの割り込み信号インジケータをそれぞれ含み、前記割り込み信号ベクトルの各々が個別のターゲット・プロセッサIDに割り当てられ、前記各割り込み信号ベクトルの前記割り込み信号インジケータが、前記各ターゲット・プロセッサIDにさらに割り当てられる、請求項14に記載の方法。
  17. 前記割り込み信号ベクトルがメモリ内の連続領域としてそれぞれ実装される、請求項14に記載の方法。
  18. 前記割り込み信号インジケータが単一のビットとしてそれぞれ実装される、請求項14に記載の方法。
  19. 前記デバイス・テーブル・エントリが、前記ゲスト・オペレーティング・システムが割り当てられた論理パーティションを識別する論理パーティションIDをさらに含み、前記バス接続デバイスによる前記割り込み信号の前記転送が、前記割り込み信号と共に前記論理パーティションIDを転送することをさらに含む、請求項3に記載の方法。
  20. 前記バス接続デバイスが、論理パーティションIDごとにマッピング・テーブルを備える、請求項19に記載の方法。
  21. 前記方法が、前記バス接続デバイスによって、前記受信された割り込み信号が割り当てられた割り込みサブクラスを識別する割り込みサブクラスIDを取り出すことをさらに含み、前記バス接続デバイスによる前記割り込み信号の前記転送が、前記割り込み信号と共に前記割り込みサブクラスIDを転送することをさらに含む、請求項1に記載の方法。
  22. 前記バス接続デバイスによって、前記メモリ内の前記バス接続されたモジュールの状態情報を更新するためのダイレクト・メモリ・アクセスの要求を前記バス接続されたモジュールから受信することであって、前記バス接続されたモジュールの状態更新が前記割り込み信号をトリガーする、前記受信することと、
    前記要求の受信時に、前記バス接続デバイスによって、前記メモリへの前記ダイレクト・メモリ・アクセスを実行して、前記メモリ内の前記バス接続されたモジュールの前記状態情報を更新することをさらに含む、請求項3に記載の方法。
  23. 請求項1~22の何れか1項に記載の方法をコンピュータ・ハードウェアによる手段として構成した、コンピュータ・システム。
  24. 請求項1~22の何れか1項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
JP2021540052A 2019-02-14 2020-01-10 有向割り込みの仮想化方法、システム、プログラム Active JP7335339B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19157093 2019-02-14
EP19157093.6 2019-02-14
PCT/EP2020/050500 WO2020164820A1 (en) 2019-02-14 2020-01-10 Directed interrupt virtualization

Publications (2)

Publication Number Publication Date
JP2022520713A JP2022520713A (ja) 2022-04-01
JP7335339B2 true JP7335339B2 (ja) 2023-08-29

Family

ID=65440824

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021540052A Active JP7335339B2 (ja) 2019-02-14 2020-01-10 有向割り込みの仮想化方法、システム、プログラム

Country Status (5)

Country Link
US (2) US11036661B2 (ja)
EP (1) EP3924817A1 (ja)
JP (1) JP7335339B2 (ja)
CN (1) CN113454590A (ja)
WO (1) WO2020164820A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI727607B (zh) 2019-02-14 2021-05-11 美商萬國商業機器公司 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
TWI764082B (zh) 2019-02-14 2022-05-11 美商萬國商業機器公司 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品
WO2020164819A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt for multilevel virtualization with interrupt table
WO2020164935A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with running indicator
WO2020165666A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with blocking indicator
BR112021016093A2 (pt) 2019-02-14 2021-10-26 International Business Machines Corporation Interrupção dirigida para virtualização de multiníveis
TWI759677B (zh) 2019-02-14 2022-04-01 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
EP3924817A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization
US20230266919A1 (en) * 2022-02-18 2023-08-24 Seagate Technology Llc Hint-based fast data operations with replication in object-based storage
CN118260224A (zh) * 2022-12-28 2024-06-28 华为技术有限公司 上报中断的方法、中断的配置方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183951A (ja) 2005-12-30 2007-07-19 Intel Corp 仮想プロセッサへの直接的なインタラプトの送信
JP2010113667A (ja) 2008-11-10 2010-05-20 Renesas Technology Corp 情報処理装置
JP2010250453A (ja) 2009-04-14 2010-11-04 Hitachi Ltd 計算機システム、割込み中継回路及び割込み中継方法
JP2013519170A (ja) 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ゲストローカル割込みコントローラを仮想化するように構成されたプロセッサ
JP2013537656A (ja) 2010-06-23 2013-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション アダプタ割り込み要求が処理される速度の制御

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4037723C2 (de) 1990-11-27 1995-04-06 Siemens Ag Verfahren zum Übermitteln von an mehreren Datenschnittstellen einer prozessorgesteuerten Einrichtung vorliegenden Informationen an deren Prozessoreinrichtung
GB2339035B (en) 1998-04-29 2002-08-07 Sgs Thomson Microelectronics A method and system for transmitting interrupts
US7620955B1 (en) 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US20030204655A1 (en) 2002-04-24 2003-10-30 Schmisseur Mark A. Prioritizing vector generation in interrupt controllers
US7028302B2 (en) 2002-04-24 2006-04-11 Hewlett-Packard Development Company, L.P. System and method for automatically tuning a multiprocessor computer system
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US20050080982A1 (en) 2003-08-20 2005-04-14 Vasilevsky Alexander D. Virtual host bus adapter and method
US7222203B2 (en) 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US7386640B2 (en) 2004-12-28 2008-06-10 Intel Corporation Method, apparatus and system to generate an interrupt by monitoring an external interface
US8238376B2 (en) 2005-04-13 2012-08-07 Sony Corporation Synchronized audio/video decoding for network devices
US7447820B2 (en) 2005-09-30 2008-11-04 Intel Corporation Retargeting of platform interrupts
US9032127B2 (en) 2006-09-14 2015-05-12 Hewlett-Packard Development Company, L.P. Method of balancing I/O device interrupt service loading in a computer system
US20080162762A1 (en) 2006-12-29 2008-07-03 Gilbert Neiger Interrupt remapping based on requestor identification
US8453143B2 (en) 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
US9037768B2 (en) * 2008-04-28 2015-05-19 Hewlett-Packard Development Company, L.P. Virtual-interrupt-mode interface and method for virtualizing an interrupt mode
US7849247B2 (en) 2008-10-14 2010-12-07 Freescale Semiconductor, Inc. Interrupt controller for accelerated interrupt handling in a data processing system and method thereof
CN101427916B (zh) 2008-12-05 2012-02-22 张锦景 电生理数据与病理图像监测的移动网络终端装置及方法
US8635387B2 (en) 2009-10-09 2014-01-21 Emulex Design & Manufacturing Corporation Enhanced I/O performance in a multi-processor system via interrupt affinity schemes
US8566492B2 (en) * 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US8381002B2 (en) * 2010-06-23 2013-02-19 International Business Machines Corporation Transparently increasing power savings in a power management environment
KR20120042354A (ko) 2010-10-25 2012-05-03 한국전자통신연구원 위성통신 시스템용 중심국의 이중모드 망동기 장치 및 그 방법
CN102184122B (zh) 2011-05-16 2014-04-23 曙光信息产业股份有限公司 一种龙芯CPU主板bios及中断的实现方法
US8495267B2 (en) 2010-11-24 2013-07-23 International Business Machines Corporation Managing shared computer memory using multiple interrupts
US8612659B1 (en) 2010-12-14 2013-12-17 Vmware, Inc. Hardware interrupt arbitration in virtualized computer systems
US8601194B2 (en) 2011-02-08 2013-12-03 Red Hat Israel, Ltd. On-demand interrupt vector allocation based on activity detection
US8631181B2 (en) * 2011-09-26 2014-01-14 Oracle International Corporation Validating message-signaled interrupts by tracking interrupt vectors assigned to devices
US8874786B2 (en) 2011-10-25 2014-10-28 Dell Products L.P. Network traffic control by association of network packets and processes
US8910158B2 (en) 2011-12-14 2014-12-09 Intel Corporation Virtualizing interrupt priority and delivery
TWI537877B (zh) 2011-12-30 2016-06-11 群光電子股份有限公司 膚色偵測方法及系統
US20130318269A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9436626B2 (en) 2012-08-09 2016-09-06 Freescale Semiconductor, Inc. Processor interrupt interface with interrupt partitioning and virtualization enhancements
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system
US10078603B2 (en) * 2012-11-30 2018-09-18 Red Hat Israel, Ltd. MSI events using dynamic memory monitoring
US9940291B2 (en) 2013-01-29 2018-04-10 Hewlett Packard Enterprise Development Lp Assigning processors to memory mapped configuration
US9235538B2 (en) * 2013-02-07 2016-01-12 Red Hat Israel, Ltd. Injecting interrupts in virtualized computer systems
US9830286B2 (en) * 2013-02-14 2017-11-28 Red Hat Israel, Ltd. Event signaling in virtualized systems
US9378162B2 (en) * 2013-05-21 2016-06-28 Arm Limited Handling and routing interrupts to virtual processors
US9384132B2 (en) 2013-06-28 2016-07-05 Intel Corporation Emulated message signaled interrupts in a virtualization environment
US9465760B2 (en) * 2013-11-18 2016-10-11 Futurewei Technologies, Inc. Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters
US9756118B2 (en) 2014-04-28 2017-09-05 Vmware, Inc. Virtual performance monitoring decoupled from hardware performance-monitoring units
US9507740B2 (en) * 2014-06-10 2016-11-29 Oracle International Corporation Aggregation of interrupts using event queues
US9772868B2 (en) 2014-09-16 2017-09-26 Industrial Technology Research Institute Method and system for handling interrupts in a virtualized environment
US9910699B2 (en) 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
US9697029B2 (en) 2014-10-30 2017-07-04 Red Hat Israel, Ltd. Guest idle based VM request completion processing
US9952987B2 (en) 2014-11-25 2018-04-24 Intel Corporation Posted interrupt architecture
US9910700B2 (en) 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
KR102509986B1 (ko) * 2016-03-28 2023-03-14 삼성전자주식회사 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법
US10282327B2 (en) 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
US10210112B2 (en) 2017-06-06 2019-02-19 International Business Machines Corporation Techniques for issuing interrupts in a data processing system with multiple scopes
US20180356964A1 (en) 2017-06-07 2018-12-13 Sitting Man, Llc Methods, systems, and computer program products for intergrating configuration, monitoring, and operations
US10838760B2 (en) * 2017-11-29 2020-11-17 Nxp Usa, Inc. Systems and methods for interrupt distribution
TWI764082B (zh) 2019-02-14 2022-05-11 美商萬國商業機器公司 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品
WO2020165666A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with blocking indicator
WO2020164819A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt for multilevel virtualization with interrupt table
TWI759677B (zh) 2019-02-14 2022-04-01 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
EP3924817A1 (en) 2019-02-14 2021-12-22 International Business Machines Corporation Directed interrupt virtualization
BR112021016093A2 (pt) 2019-02-14 2021-10-26 International Business Machines Corporation Interrupção dirigida para virtualização de multiníveis
WO2020164935A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with running indicator
TWI727607B (zh) 2019-02-14 2021-05-11 美商萬國商業機器公司 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183951A (ja) 2005-12-30 2007-07-19 Intel Corp 仮想プロセッサへの直接的なインタラプトの送信
JP2010113667A (ja) 2008-11-10 2010-05-20 Renesas Technology Corp 情報処理装置
JP2010250453A (ja) 2009-04-14 2010-11-04 Hitachi Ltd 計算機システム、割込み中継回路及び割込み中継方法
JP2013519170A (ja) 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ゲストローカル割込みコントローラを仮想化するように構成されたプロセッサ
JP2013537656A (ja) 2010-06-23 2013-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション アダプタ割り込み要求が処理される速度の制御

Also Published As

Publication number Publication date
JP2022520713A (ja) 2022-04-01
US20210255975A1 (en) 2021-08-19
US20200264992A1 (en) 2020-08-20
US11036661B2 (en) 2021-06-15
CN113454590A (zh) 2021-09-28
EP3924817A1 (en) 2021-12-22
US11249927B2 (en) 2022-02-15
WO2020164820A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
JP7335339B2 (ja) 有向割り込みの仮想化方法、システム、プログラム
JP7324287B2 (ja) 割り込みテーブルを使用した有向割り込みの仮想化方法、システム、プログラム
JP7379502B2 (ja) フォールバックを伴う有向割り込みの仮想化方法、システム、プログラム
JP7459119B2 (ja) 割り込みテーブルを使用したマルチレベルの仮想化のための有向割り込み方法、システム、プログラム
JP7398465B2 (ja) 有向割り込みの仮想化のための割り込み信号伝達方法、システム、プログラム
JP7450627B2 (ja) 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
JP5719435B2 (ja) メッセージ信号割り込みのi/oアダプタ・イベント通知への変換
JP7482882B2 (ja) マルチレベルの仮想化のための有向割り込み方法、システム、プログラム
JP7448550B2 (ja) ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220128

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230622

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230817

R150 Certificate of patent or registration of utility model

Ref document number: 7335339

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150