JP6679145B2 - 仮想プロセッサ・スレッド・グループを使用する処理装置内の割込みを処理するための方法、処理装置、およびプログラム - Google Patents

仮想プロセッサ・スレッド・グループを使用する処理装置内の割込みを処理するための方法、処理装置、およびプログラム Download PDF

Info

Publication number
JP6679145B2
JP6679145B2 JP2016219785A JP2016219785A JP6679145B2 JP 6679145 B2 JP6679145 B2 JP 6679145B2 JP 2016219785 A JP2016219785 A JP 2016219785A JP 2016219785 A JP2016219785 A JP 2016219785A JP 6679145 B2 JP6679145 B2 JP 6679145B2
Authority
JP
Japan
Prior art keywords
virtual processor
event
processor threads
enm
threads
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
JP2016219785A
Other languages
English (en)
Other versions
JP2017091544A (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 JP2017091544A publication Critical patent/JP2017091544A/ja
Application granted granted Critical
Publication of JP6679145B2 publication Critical patent/JP6679145B2/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Landscapes

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

Description

本出願は、2015年11月16日に出願した米国仮特許出願第62/255,766号、ならびに2016年10月26日に出願した米国特許出願第15/334,857号および第15/334,951号の出願日の利益を主張するものである。
本開示は、一般にはデータ処理システムを対象とし、より詳細には、仮想プロセッサ・スレッド・グループを使用するデータ処理システムの処理ユニット内の割込みを処理するための技法を対象とする。
データ処理システムでは、イベントが注意を必要とすることをプロセッサに示すために割込み信号(割込み)が生成される。割込みの優先順位に応じて、プロセッサは、現在の活動を中断し、状態を保存し、イベントをサービスするための機能(すなわち、割込みハンドラ)を実行することによって応答することができる。例えば、ハードウェア割込みは、入力/出力(I/O)デバイス、例えばディスク・ドライブ・コントローラ、キーボード、マウス、または他の周辺デバイスによって生成することができる。一方、ソフトウェア割込みは、プロセッサ内の例外条件、または実行されたときに割込みを生成させる命令セット・アーキテクチャ(ISA)内の特殊命令のどちらかによって引き起こすことができる。割込みサービス処理に続いて、プロセッサは中断した活動を再開する。
割込みサービス・ルーチン(ISR)としても知られる割込みハンドラは、その実行が割込みによってトリガされる(例えば、ファームウェア、オペレーティング・システム(OS)、またはデバイス・ドライバで実装される)コールバック機能である。割込みハンドラは、様々な割込み依存機能を実施する。例えば、コンピュータ・キーボード上のキーを押すこと、またはコンピュータ・マウスを移動することは割込みをトリガし、割込みは、それぞれの割込みハンドラを呼び出して、キーまたはマウス位置を読み取り、関連する情報をコンピュータのメモリ内にコピーする。データ処理システムでは、割込みコントローラは、異なる割込みに対する優先レベルの割当てを容易にしつつ、1つまたは複数のプロセッサ例外ライン上に複数の割込みソースを組み合わせるよう実装されることがある。
米国仮特許出願第62/255,766号 米国特許出願第15/334,857号 米国特許出願第15/334,951号
仮想プロセッサ・スレッド・グループを使用するデータ処理システムの処理ユニット内の割込みを処理するための方法、関連する処理ユニットおよび設計構造が求められている。
データ処理システム内の割込みを処理するための技法は、割込み提示コントローラ(interrupt presentation controller:IPC)でイベント通知メッセージ(ENM)を受信することを含む。ENMは、イベント・ターゲット番号、および無視ビット数を指定する。IPCは、ENM内で指定されるイベント・ターゲット番号および無視ビット数に基づいて、潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定する。潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定する際に、イベント・ターゲット番号は、特定の仮想プロセッサ・スレッドを特定し、無視ビット数は、特定の仮想プロセッサ・スレッドについて下位のビット数を特定する。
本開示の一実施形態による例示的なデータ処理システムの高レベルブロック図である。 本開示の一実施形態による例示的な処理ユニットのより詳細なブロック図である。 従来型イベント通知メッセージ(ENM)の例示的なフィールドの図である。 従来型通知拒否メッセージ(NRM)の例示的なフィールドの図である。 従来型割込み終了(EOI)メッセージの例示的なフィールドの図である。 例示的な従来型割込みソース・コントローラ(ISC)の関連する構成要素のブロック図である。 例示的な従来型割込み提示コントローラ(IPC)の関連する構成要素のブロック図である。 割込みを処理するために従来型ISCによって実装される例示的なプロセスの流れ図である。 割込みを処理するために従来型IPCによって実装される例示的なプロセスの流れ図である。 割込みを処理するために従来型IPCによって実装される別の例示的なプロセスの流れ図である。 割込みを処理するために従来型プロセッサ・コアによって実装される例示的なプロセスの流れ図である。 割込みを処理するために従来型IPCによって実装されるさらに別の例示的なプロセスの流れ図である。 割込みを処理するために従来型IPCによって実装されるさらに別の例示的なプロセスの流れ図である。 本開示の一実施形態に従って構成されるENMの例示的なフィールドの図である。 本開示の一実施形態による、下位の無視ビット数と、関連の割込みをサービスすることができる仮想プロセッサ(VP)スレッドとの間の関係を示すグラフである。 本開示に従って構成された例示的なISCの関連の構成要素のブロック図である。 本開示に従って構成された例示的なIPCの関連の構成要素のブロック図である。 3つの割込みコンテキスト・テーブル(ICT)、すなわちハイパーバイザ・スタック・レベルICT、オペレーティング・システム(OS)スタック・レベルICT、およびユーザ・スタック・レベルICTを実装するために図17のIPCが本開示の一実施形態に従って構成されることを示すブロック図である。 図15のIPCの例示的なセレクタの関連する構成要素のブロック図である。 割込みを処理するために、本開示に従って構成されたIPCによって実装される例示的なプロセスの流れ図である。 割込みを処理するために、本開示に従って構成されたIPCによって実装される別の例示的なプロセスの流れ図である。
ここで図を参照すると、同様の参照番号は全体にわたって同様の対応する部分を指しており、特に図1を参照すると、本開示の1つまたは複数の実施形態に従って構成された1つまたは複数の割込み提示コントローラ(IPC)および複数の割込みソース・コントローラ(ISC)を実装する例示的なデータ処理システム100を示す高レベル・ブロック図が示されている。図示される実施形態では、データ処理システム100は、データおよび命令を処理するための複数の処理ノード102を含むキャッシュ・コヒーレント対称型マルチプロセッサ(SMP)データ処理システムである。処理ノード102は、アドレス、データ、および制御情報を搬送するシステム相互接続110に結合される。システム相互接続110は、例えば、バス状相互接続、スイッチド相互接続(switched interconnect)、またはハイブリッド相互接続として実装されてもよい。
図示される実施形態では、各処理ノード102は、4つの処理ユニット104a〜104dを含むマルチチップモジュール(MCM)として実現され、各処理ユニットは、それぞれの集積回路として実現することができる。各処理ノード102内の処理ユニット104は、ローカル相互接続114によって、互いに対する通信、およびシステム相互接続110に対する通信のために結合され、ローカル相互接続114は、システム相互接続110と同様に、例えば、1つもしくは複数のバスまたはスイッチまたはその両方と共に実装することができる。システム相互接続110およびローカル相互接続114は、共にシステム・ファブリックを形成する。
処理ユニット104は、それぞれのシステム・メモリ108に対するインターフェースを提供するためにローカル相互接続114に結合されたメモリ・コントローラ(図示せず)をそれぞれ含む。システム・メモリ108内にあるデータおよび命令は一般に、データ処理システム100内の任意の処理ノード102の任意の処理ユニット104内のプロセッサ・コアによってアクセスし、キャッシュし、変更することができる。したがって、システム・メモリ108は、データ処理システム100の分散共有メモリ・システム内の最低レベルのメモリ・ストレージを形成する。代替の実施形態では、1つまたは複数のメモリ・コントローラ(およびシステム・メモリ108)は、ローカル相互接続114ではなく、システム相互接続110に結合することができる。
図1のSMPデータ処理システム100が、相互接続ブリッジ、不揮発性ストレージ、ネットワークまたは取り付けられたデバイスへの接続のためのポートなどの、多くの追加の図示されていない構成要素を含むことができることを当業者は理解されよう。そのような追加の構成要素は、記載の実施形態の理解のために必要ではないので、図1には図示されておらず、本明細書ではこれ以上論じられない。しかし、本明細書に記載の拡張は、多様なアーキテクチャのデータ処理システムに適用可能であり、図1に示される一般化されたデータ処理システム・アーキテクチャに決して限定されないことも理解されたい。
次に図2を参照すると、本開示の一実施形態による、例示的な処理ユニット104のより詳細なブロック図が示されている。図示される実施形態では、各処理ユニット104は、命令およびデータを処理するための複数のプロセッサ・コア200を含む集積回路である。好適な実施形態では、各プロセッサ・コア200は、同時マルチスレッド化(SMT)をサポートし、それゆえ同時に複数のハードウェア実行スレッド(hardware threads of execution)を独立して実行することができる。
各プロセッサ・コア200は、メモリI/Oバス210を介して割込み提示コントローラ(IPC)240に結合される。1つまたは複数の実施形態では、IPC240は、物理プロセッサ(PP)スレッドについての様々な情報を維持する単一の割込みコンテキスト・テーブル(ICT)242を含む。1つまたは複数の別の実施形態では、異なるICT242が、PPスレッド上でディスパッチされる各ソフトウェア・スタック・レベルについて実装される(例えば、図16を参照)。図16に示されるように、ICT242aがハイパーバイザ(Hyp)スタック・レベルについて実装され、ICT242bがオペレーティング・システム(OS)スタック・レベルについて実装され、ICT242cがユーザ・スタック・レベルについて実装される。本開示に従って構成されたIPCが、3つを超える異なるソフトウェア・スタック・レベルを実装することができることが理解されたい。1つまたは複数の実施形態では、IPC240は、それぞれの例外ライン212を介して各プロセッサ・コア200に結合され、例外ライン212は、割り当てられた仮想プロセッサ・スレッドについての関連する割込みを各プロセッサ・コア200に通知するために利用される。各ソフトウェア・スタック・レベルについて異なるICT242が実装される実施形態では、各ソフトウェア・スタック・レベルについて異なる例外ライン212が実装される。IPC240はまた、メモリI/Oバス210を介してI/Oコントローラ220に結合される。IPC240は、メモリI/Oバス210を介して、I/Oコントローラ220もしくはプロセッサ・コア200またはその両方に対して情報を送受信するように構成される。
各I/Oコントローラ220は、パケット・デコーダ222と、イベント割当てテーブル(EAT)226を含む割込みソース・コントローラ(ISC)224とを含み、イベント割当てテーブル(EAT)226の値は、ソフトウェアを介して(例えば、ハイパーバイザによって)設定することができる。各I/Oコントローラ220は、I/Oバス214を介してI/Oアダプタ230に結合される。1つまたは複数のデバイス(図示せず)、例えばディスク・ドライブ、キーボード、マウスは、I/Oバス214を介してI/Oコントローラ220のパケット・デコーダ222にパケットを送るようにI/Oアダプタ230にシグナリングすることによってI/Oコントローラ220による割込み生成を開始してもよい。イベント割当てテーブル(EAT)226は、メモリI/Oバス210を介してIPC240に送られるイベント通知メッセージ(ENM)を生成するためにI/Oコントローラ220が使用する情報を含む。単一の割込み提示コントローラのみが図2に示されているが、本開示に従って構成された処理ユニットは、複数の割込み提示コントローラを含むことができることを理解されたい。
次に図3Aを参照すると、例示的な従来型イベント通知メッセージ(ENM)302の構造が示されている。ENM302は、「イベント・ターゲット番号」フィールド、「イベント・ソース番号」フィールド、および「イベント優先順位」フィールド、ならびにメッセージをイベント通知メッセージとして特定するフィールド(図示せず)を含む。「イベント・ターゲット番号」フィールド内の値は、割込みを受ける物理プロセッサ・スレッドを特定して、関連のプロセッサ・コアが関連の割込みをサービスすることを容易にする。「イベント・ソース番号」フィールド内の値は、割込みを生成した通知ソースを特定する。「イベント優先順位」フィールド内の値は、割込みの優先レベルを特定する。ENM302は、従来型ISC424(図4参照)によって生成および発行されて、通知ソース(「イベント・ソース番号」フィールドによって特定される)が割込みを生成していること、および従来型IPC540(図5参照)によって受信および処理されることを示す。
次に図3Bを参照すると、例示的な従来型通知拒否メッセージ(NRM)304の構造が示されている。NRM304は、「イベント・ソース番号」フィールド、ならびにメッセージを通知拒否メッセージとして特定するフィールド(図示せず)を含む。NRM304は、IPC540(図5参照)によって生成および発行され、かつISC424(図4参照)によって受信および処理されて、要求された割込みが拒否されたこと、および再発行する必要があることをISC424に示す。
次に図3Cを参照すると、例示的な従来型割込み終了(EOI)メッセージ306の構造が示されている。EOIメッセージ306は、「イベント・ソース番号」フィールド、ならびにメッセージをEOIメッセージとして特定するフィールド(図示せず)を含む。EOIメッセージ304は、IPC540(図5参照)によって生成および発行され、ISC424(図4参照)に送られ、イベント・ソース番号に関連するデバイスによって要求された割込みがサービスされたことを、ISC424に示す。
図4を参照すると、従来型ISC424の関連する構成要素が示されている。ISC424が、本開示に従って構成された処理ユニット内のISC224によって置き換えられることを理解されたい。ISC424は、割込みコントローラ内に含まれ、この割込みコントローラはまた、I/Oバス414(図2のI/Oバス214と同様の)に結合されるパケット・デコーダ422と、メッセージ・デコーダ404(メモリI/Oバス410(図2のメモリI/Oバス210と同様の)を介して受信されたEOIメッセージ306もしくはNRM304またはその両方を復号するために使用される)と、イベント割当てテーブル(EAT)426と、EAT426内の適切な情報を利用して割込みソースについてのENM302を生成する、割込みメッセージ・エンコーダ406とを含む。パケット・デコーダ422は、I/Oバス414を介して受信されたパケットを復号し、有限状態機械(FSM)を選択してパケットのソースのイベント・ソース番号に基づき受信したパケットを処理するように構成される。図示されるように、ISC424は、EAT426内の各行についてFSM(すなわち、S−FSM 0からS−FSM N)を含み、EAT426は、EAT426内に情報を書き込んでNM302の構築を容易にするように構成される。EAT426内に示されるイベント・ソース番号は、フィールドではないが、行番号を示すためにのみ使用されることを理解されたい。例えば、ソース番号「0」がEAT426の行番号「0」に割り当てられ、ソース番号「1」がEAT426の行番号「1」に割り当てられるなどである。EAT426では、各行は、関連する「イベント優先順位」フィールドおよび「イベント・ターゲット番号」フィールドを有し、その値は、ENM302内の対応するフィールドをポピュレート(populate)するために利用され、ENM302は、関連するI/Oデバイスによって割込みが要求される際に、割込みメッセージ・エンコーダ406によって生成される。
図5を参照すると、従来型IPC540の関連する構成要素が示されている。IPC540は、本開示に従って構成された処理装置内のIPC240によって置き換えられることを理解されたい。IPC540は、メモリI/Oバス410に結合されたメッセージ・デコーダ502、メモリ・マップドI/O(MMIO)ユニット504、およびメモリI/Oバス410に結合されたメッセージ・エンコーダ506を含む。プロセッサ・コアは、MMIOロードおよびMMIOストアを使用して、MMIOユニット504を介してIPC540と通信する。IPC540は、メッセージ・デコーダ502を介してISC424からメッセージを受信する。IPC540は、メッセージ・エンコーダ506を介してISC424宛てのメッセージを生成する。MMIOユニット504は、メッセージ・エンコーダ506にトリガEOIメッセージ507を発行して、メッセージ・エンコーダ506にメモリI/Oバス410上でEOIメッセージ306を生成させ、ISC424に送らせる。メッセージ・デコーダ502はセレクタ508に結合され、セレクタ522は、受信されたENM302に関連するイベント・ターゲット番号に基づいてFSM(すなわち、P−FSM 1からP−FSM Mのうちの1つ)を選択するように構成される。IPC540のFSMは、割込みコンテキスト・テーブル(ICT)542にアクセスし、プロセッサ・コア上で実行中の物理プロセッサ・スレッドに対する例外の生成を開始し、メッセージ・エンコーダ506に対するトリガ拒否メッセージ505の生成を開始し、メッセージ・エンコーダ506は、トリガ拒否メッセージ505に応答してNRM304を生成する。
割込みコンテキスト・テーブル(ICT)542内に示される物理スレッド番号はフィールドではないが、行を示すためにのみ使用されることを理解されたい。例えば、物理スレッド番号「0」がICT542の行番号「0」に割り当てられ、物理スレッド番号「1」がICT542の行番号「1」に割り当てられるなどである。ICT542では、各行は、関連する「有効」フィールド、「動作優先順位」フィールド、「割当て済み」フィールド、「イベント・ソース番号」フィールド、および「イベント優先順位」フィールドを有し、その値をFSMによって設定し、その値にアクセスしてMMIOロードに応答し、プロセッサ・コアに値を返してもよい。
ISCによって実行される(従来通りと本開示の実施形態毎との両方)ものとして本明細書で説明されるプロセスの様々なブロックが、関連するEATの行ごとに同時に実行する場合があること、およびIPCによって実行される(従来通りと本開示の実施形態毎との両方)ものとして本明細書で説明されるプロセスの様々なブロックが、関連するICTの行ごとに同時に実行する場合があることを理解されたい。例として、様々なプロセスのうちの少なくとも一部は、EATもしくはICTまたはその両方の所与の行に関連するFSM論理によって実施されてもよいし、エンジンは、EATもしくはICTまたはその両方のすべての行を順番に配列しながら、様々なプロセスを実施するように実装されてもよい。
図6を参照すると、割込みを処理するためにISC424によって実装される、例示的なプロセス600が示されている。プロセス600は、例えば、ISC424がI/Oバス414を介して入力を受信する際に、ブロック602で開始されてもよい。次に、判定ブロック604では、ISC424は、受信された入力が割込みトリガ(または割込みトリガ・パルス)に相当するかどうかを判定する。受信した入力が割込みトリガではないことに応答して、制御はブロック604上でループする。ブロック604で受信した入力が割込みトリガであることに応答して、制御はブロック606に移る。ブロック606では、ISC424が、EAT426内の関連する情報に基づいてENM302を構築する。次に、ブロック608では、ISC424は、メモリI/Oバス410を介してIPC540にENM302を送る。
次いで、判定ブロック610では、ISC424は、拒否メッセージ(すなわち、NRM304)がIPC540から受信されているかどうかを判定する。例えば、割込みのイベント優先順位よりも動作優先順位の高い割込みをサービスするために割込みを受けるように指定される、物理プロセッサ・スレッドに応答して、IPC540は、NRM304を生成することができる。ブロック610でISC424がENM302についてNRM304を受信したことに応答して、制御はブロック614に移り、プロセス600は、ブロック606に制御を返す前に構成可能時間枠を待機し、ブロック606では、別のENM302が割込みのために構築される。ブロック610でISC424がENM302についてのNRM304を受信しないことに応答して、制御は判定ブロック612に移る。ブロック612では、ISC424は、EOIメッセージ306がIPC540から受信されているかどうかを判定する。ブロック612でISC424がENM302についてEOIメッセージ306を受信したことに応答して、制御はブロック604に戻る。ブロック612でISC424がENM302についてのEOIメッセージ306を受信しないことに応答して、制御はブロック610に戻る。
図7を参照すると、割込みを処理するためにIPC540によって実装される例示的なプロセス700が示されている。プロセス700は、IPC540がメモリI/Oバス410を介して入力を受信した際に、ブロック702で開始されてもよい。次に、判定ブロック704では、IPC540は、ENM302が受信されたかどうかを判定する。受信した入力がENM302ではないことに応答して、制御はブロック704上でループする。ブロック704で受信した入力がENM302であることに応答して、制御は判定ブロック706に移る。ブロック706では、IPC540は、ENM302内で指定されるイベント・ターゲット番号(すなわち、物理プロセッサ・スレッド)に割り当てられるICT542内の行についての有効ビットがアサートされるかどうか(すなわち、ICT542内の物理プロセッサ・スレッドの有効フィールドによって指定された通りに、指定される物理プロセッサ・スレッドがポピュレートされかつ動作可能であるかどうか)を判定する。
有効ビットがブロック706でアサートされないことに応答して、制御はブロック712に移り、ここでエラー処理が開始され、次いでブロック704に戻る。有効ビットがブロック706でアサートされることに応答して、制御は判定ブロック708に移る。ブロック708では、IPC540は、保留中の割込みがイベント・ソース番号に関連する物理プロセッサ・スレッドに既に割り当てられているかどうかを判定する(ICT542内の指定される物理プロセッサ・スレッドの「割当て済み」フィールドの値を検査することによって)。ブロック708で、保留中の割込みが、指定される物理プロセッサ・スレッドにまだ割り当てられていないことに応答して、制御がブロック714に移る。ブロック714では、IPC540は、「割当て済み」フィールドをアサートし、「イベント・ソース番号」フィールド、およびENM302内に含まれる値に基づく指定される物理プロセッサ・スレッドのための「イベント優先順位」フィールドを設定する。ブロック714の後、制御はブロック704に戻る。
ブロック708で保留中の割込みが既に物理プロセッサ・スレッドに割り当てられていることに応答して、制御は判定ブロック710に移る。ブロック710では、ENM302の「イベント優先順位」フィールド内で指定されるような新しい割込みのイベント優先順位が、ICT542内の物理プロセッサ・スレッドの「イベント優先順位」フィールド内で指定されるような既に保留中の割込みのイベント優先順位よりも高いかどうかを、IPC540が判定する。新しい割込みのイベント優先順位が保留中の割込みのイベント優先順位よりも高くないことに応答して、制御はブロック710からブロック716に移る。ブロック716では、IPC540は、ENM302内で指定されるイベント・ソース番号(すなわち、新しい割込みに関連するソース)にNRM304を発行する。
新しい割込みのイベント優先順位が保留中の割込みのイベント優先順位よりも高いことに応答して、制御はブロック710からブロック718に移る。ブロック718では、IPC540は、ICT542内で指定されるイベント・ソース番号(すなわち、保留中の割込みに関連するソース)にNRM304を発行する。次に、ブロック720では、IPC540は、ICT542内の物理プロセッサ・スレッドについて、ENM302内で指定されるようなイベント・ソース番号およびイベント優先順位を修正する。ブロック720の後、制御はブロック704に戻る。
図8を参照すると、例外ラインをアサート/デアサートするためにIPC540によって実装される、例示的なプロセス800が示されている。このアサート/デアサートは、関連する「割当て済み」フィールドがアサートされること(このことは保留中の割込みを示す)、および保留中の割込みのイベント優先順位が、物理プロセッサ・スレッドの動作優先順位よりも大きい(またはそれ以下である)ことに基づいて行われ、後者の物理プロセッサ・スレッドは、関連するプロセッサ・コアによって割込みをサービスすることを容易にするために、割込みを受けるものである。プロセス800は、ブロック802でIPC540によって定期的に開始されて、それぞれのプロセッサ・コアに対する例外ラインがアサートまたはデアサートを必要とするかどうかを判定してもよい。次に、判定ブロック804では、IPC540は、ICT542内の各行についての割当て済みフィールドがアサートされる(すなわち真である)かどうかを判定し、この問いは、関連する物理プロセッサ・スレッドについて割込みが保留中であることを示す。
「割当て済み」フィールドがICT542の行内でアサートされないことに応答して、制御はブロック804からブロック810に移る。ブロック810では、IPC540は、最近割当て解除されていた(unassign)行に関連する例外ラインをデアサートするか、または、割当て解除されているが、最近は割当て解除されていなかった行について、例外ラインをデアサートされた状態に維持する。ブロック810の後、制御はブロック804に戻る。割当て済みフィールドがICT542の行内でアサートされることに応答して、制御はブロック804から判定ブロック806に移る。ブロック806では、IPC540は、保留中の割込みのイベント優先順位が、関連する物理プロセッサ・スレッドの動作優先順位よりも高いかどうかを判定する。
ブロック806で、保留中の割込みのイベント優先順位が、関連する物理プロセッサ・スレッドの動作優先順位よりも高くないことに応答して、制御はブロック810に移り、関連する例外ラインがデアサートされたままとなる。ブロック806で、保留中の割込みのイベント優先順位が、関連する物理プロセッサ・スレッドの動作優先順位よりも高いことに応答して、制御はブロック808に移り、関連する例外ラインがアサートされる。ブロック808の後、制御はブロック804に戻る。
図9を参照すると、割込みを処理するためにプロセッサ・コアによって実装される例示的なプロセス900が示されている。各プロセッサ・コアがそれぞれの関連する例外ラインについて例外イネーブル・ビット(例えば、内部レジスタ内の)を維持することを理解されたい。プロセス900は、割込みをサービスするための割込みハンドラをプロセッサ・コアによって実行することを容易にするよう、物理プロセッサ・スレッドが割込みを受けるべきかどうかを判定するために、プロセッサ・コアによって定期的に実行されてもよい。プロセス900はブロック902で開始され、その時点で制御は判定ブロック904に移る。ブロック904では、プロセッサ・コアは、例外ラインと例外イネーブル・ビットの両方がアサートされるかどうかを判定する。プロセッサ・コアは、例外イネーブル・ビットをデアサートすることによって割込みをマスクする。
例外ラインもしくは関連する例外イネーブル・ビットまたはその両方がアサートされないことに応答して、制御はブロック904上でループする。例外ラインと関連する例外イネーブル・ビットの両方がアサートされることに応答して、制御はブロック904からブロック906に移る。ブロック906では、プロセッサ・コアは、例外イネーブル・ビットをリセットする(後続の割込みが現割込みに割り込むことを防止するため)。次に、ブロック908では、プロセッサ・コアは、適切な割込みハンドラに制御フローを変更する。次に、プロセッサ・コアは、IPC540にMMIOロードを発行することによって保留中の割込みを認識する。次いで、ブロック910では、プロセッサ・コアは、ソース(「イベント・ソース番号」フィールド内の値によって指定される)からの割込みを処理するために登録されるプログラムを実行する。
次に、ブロック914では、プログラムの完了の後、プロセッサ・コアが、IPC540にMMIOストアを発行し、EOIをシグナリングする。次いで、ブロック916では、プロセッサ・コアは、物理プロセッサ・スレッドに関連するICT542内の行内の動作優先順位を事前割込み値にリセットする。次に、ブロック918では、プロセッサ・コアは、例外イネーブル・ビットをアトミックにアサートし、割込みをサービスするために割込みを受けたプログラムに、制御フローを戻す。ブロック918の後、制御はブロック918に戻る。
図10を参照すると、割込みを処理するためにIPC540によって実装される例示的なプロセス1000が示されている。プロセス1000は、IPC540が保留中の割込みに関してプロセッサ・コアから通信(例えば、MMIOロードまたはMMIOストア)を受信したかどうかを判定するために、IPC540によって定期的に実行されてもよい。プロセス1000はブロック1002で開始され、その時点で制御は判定ブロック1004に移る。ブロック1004では、IPC540は、MMIOロードが割込み認識アドレスで受信されたかどうかを判定する。
MMIOロードが割込み認識アドレスで受信されないことに応答して、制御はブロック1004上でループする。MMIOロードが割込み認識アドレスで受信されたことに応答して、制御はブロック1006に移る。ブロック1006では、IPC540は、保留中の割込み優先順位に動作優先順位をアトミックに設定し、ICT542内の割込みについて割当て済みフィールドをリセットし、保留中の割込みソース番号を応答データとしてMMIOロードに返す。ブロック1006から、制御はブロック1004に戻る。
図13を参照すると、物理スレッドについての動作優先順位の変化を処理するためにIPC540によって実装される例示的なプロセス1100が示されている。プロセス1100は、IPC540が保留中の割込みに関してプロセッサ・コアから通信(例えば、MMIOロードまたはMMIOストア)を受信したかどうかを判定するために、IPC540によって定期的に実行することができる。プロセス1100はブロック1102で開始され、その時点で制御は判定ブロック1104に移る。ブロック1104では、IPC540は、MMIOストアが動作優先順位アドレスで受信されたかどうかを判定する。
MMIOストアが動作優先順位アドレスで受信されないことに応答して、制御はブロック1104上でループする。MMIOストアが動作優先順位アドレスで受信されたことに応答して、制御はブロック1104からブロック1106に移る。ブロック1106では、IPC540は、MMIOストアに関連するデータごとにICT542内の各行について動作優先順位を設定する。次に、判定ブロック1108では、IPC540は、動作優先順位がICT542内の各行についての保留中の優先順位未満であるかどうかを判定する。動作優先順位が保留中のイベント優先順位未満であることに応答して、制御はブロック1108からブロック1104に移る。動作優先順位が保留中のイベント優先順位未満ではないことに応答して、制御はブロック1108からブロック1109に移り、1109では、行割当て済みビットが、保留中の優先順位と共にリセットされる。次に、ブロック1110では、IPC540は、保留中の割込みに関連する通知ソースに拒否メッセージを発行する。ブロック1110から、制御はブロック1104に戻る。
本開示の一実施形態によれば、所与の割込みによって割込みを受けるために利用可能なスレッド数を増加させてもよく、それゆえ所与の割込みがより適時にサービスされる機会を向上させることのできる技法が実装される。様々な実施形態では、この技法は、割込みのためのソフトウェア・スタック・レベル(例えば、ユーザ・レベル、OSレベル、またはハイパーバイザ・レベル)を指定することもでき、ユーザ・レベルが割込みを受けることになる際に、プロセス識別子(ID)を指定することもできる。
図12を参照すると、本開示に従って構成される例示的なイベント通知メッセージ(ENM)1202の構造が示されている。ENM1202は、「プロセスID」フィールド、「レベル」フィールド、「イベント・ターゲット番号」フィールド、「無視ビット数」フィールド、「イベント・ソース番号」フィールド、および「イベント優先順位」フィールド、ならびにメッセージをイベント通知メッセージとして特定するフィールド(図示せず)を含む。「プロセスID」フィールド内の値(ユーザ・レベル割込みが指定される際の)は、割込みのためのユーザ・プロセスを特定する(例えば、32個の異なるユーザ・プロセスを指定することがある)。「レベル」フィールド内の値は、割込みがユーザ・レベル割込みであるか、OSレベル割込みであるか、それともハイパーバイザ・レベル割込みであるかを指定する。「イベント・ターゲット番号」フィールド内の値は、仮想プロセッサ(VP)スレッドを特定し、このVPスレッドは、関連のプロセッサ・コアが関連の割込みをサービスすることを容易にするために、割込みを受けるように指定される。「無視ビット数」フィールド内の値は、割込みをサービスするためにどのVPスレッドが割込みを受ける可能性があるかを判定する際に、「イベント・ターゲット番号」内で無視する下位ビット数を指定する。「イベント・ソース番号」フィールド内の値は、割込みを生成した通知ソースを特定する。「イベント優先順位」フィールド内の値は、割込みの優先レベルを特定する。図示される実施形態では、ENM1202は、「プロセスID」フィールドおよび「レベル」フィールドを含む。しかし、代替の実施形態では、「プロセスID」フィールドおよび「レベル」フィールドがENM1202から省略されてもよい。
ENM1202は、本開示(図14参照)に従って構成される割込みソース・コントローラ(ISC)224によって生成され、本開示(図15参照)に従って構成される割込み提示コントローラ(IPC)240に発行されて、「イベント・ソース番号」フィールドによって特定される通知ソースが割込みを生成したことを示す。ENM1202はENM302と同様であり、いくつかの例外として、ENM1202が、ユーザ・レベル割込みのための「プロセスID」を指定する追加のフィールドと、割込みの「レベル」(すなわち、ユーザ・レベル、OSレベル、またはハイパーバイザ・レベル)を指定する追加のフィールドと、割込むための仮想プロセッサ(VP)スレッドを選択する際に使用される「無視ビット数」を指定する追加のフィールドとを含むこと、および「イベント・ターゲット番号」フィールドが、物理プロセッサ・スレッドとは対照的に仮想プロセッサ・スレッドを特定することを理解されたい。
例えば、16個のVPスレッド(すなわち、VPスレッド0000から1111)が実装されると仮定すると、「無視ビット数」フィールド内で指定される値に応じて、割込みのために考慮することのできるVPスレッド数を、単一のVPスレッドまたはすべての16個のVPスレッドとして指定されてもよい。一例として、VPスレッド8、すなわち「1000」が「イベント・ターゲット番号」フィールド内で指定されること、および「無視ビット数」フィールド内で3が指定されると仮定すると、関連する割込みをサービスするために8個のVPスレッド(すなわち、「1000」から「1111」)を割込みのために考慮してもよい。別の例として、VPスレッド8、すなわち「1000」が「イベント・ターゲット番号」フィールド内で指定されること、および「無視ビット数」フィールド内で0が指定されることを仮定すると、関連する割込みをサービスするためにVPスレッド8(すなわち、「1000」)のみを割込みのために考慮してもよい。
図13を参照すると、本開示の一実施形態による、(下位の)無視ビット数と仮想プロセッサ(VP)スレッドとの間の関係を示すグラフ1300が示されており、このVPは、最大16個のVPスレッドを配置するデータ処理システムについて、関連する割込みを潜在的にサービスする可能性がある仮想プロセッサ(VP)スレッドとの間の関係を示すグラフ1300が示されている。開示される技法は、16個より多いかまたは少ないVPスレッドを配置するデータ処理システムに適用可能であることを理解されたい。グラフ1300に示されるように、「無視ビット数」が4であるとき、16個すべてのVPスレッドが、関連する割込みをサービスするために潜在的に利用可能である。「無視ビット数」が3であるとき、8個のVPスレッドが、関連する割込みをサービスするために潜在的に利用可能である。「無視ビット数」が2であるとき、4つのVPスレッドが、関連する割込みをサービスするために潜在的に利用可能である。「無視ビット数」が1であるとき、2つのVPスレッドが、関連する割込みをサービスするために潜在的に利用可能である。「無視ビット数」が0であるとき、1つのVPスレッドが、関連する割込みをサービスするために潜在的に利用可能である。一般には、「無視ビット数」が「n」ビットであるとき、指定される仮想プロセッサ・スレッドおよび2−1個の他の仮想プロセッサ・スレッドが、潜在的に割込みを受ける可能性がある。
図14を参照すると、本開示に従って構成される、図2のISC224の関連する構成要素がさらに示されている。前述のように、割込みコントローラ220は、I/Oバス214に結合されるパケット・デコーダ222と、ISC224とを含む。ISC224は、メッセージ・デコーダ1404(メモリI/Oバス210を介して受信された従来型EOIメッセージ306もしくはNRM304またはその両方を復号するために使用される)と、イベント割当てテーブル(EAT)226と、EAT226内の適切な情報を利用して、ソースについてのENM1202を生成する割込みメッセージ・エンコーダ1406とを含む。パケット・デコーダ222は、I/Oバス214を介して受信されたパケットを復号し、有限状態機械(FSM)を選択し、パケットのソースについてのイベント・ソース番号に基づいて、受信したパケットを処理するように構成される。
図示されるように、ISC224は、EAT226の各行についてFSM(すなわち、S−FSM 0からS−FSM N)を含み、EAT226は、EAT226内の情報を維持して、NM1202の構築を容易にする。EAT226内に示されるイベント・ソース番号は、フィールドではないが、行番号を示すためにのみ使用されることを理解されたい。例えば、ソース番号「0」が、EAT226の行番号「0」に割り当てられ、ソース番号「1」が、EAT226の行番号「1」に割り当てられるなどである。EAT226では、各行は、関連する「イベント優先順位」フィールド、「イベント・ターゲット番号」フィールド、「無視ビット数」フィールド、「レベル」フィールド、および「プロセスID」フィールドを有し、それらの値は、対応するフィールドをENM1202内にポピュレートするために利用され、ENM1202は、関連するI/Oデバイスによって割込みが要求される際に、割込みメッセージ・エンコーダ1406によって生成される。図示される実施形態では、EAT226内の各行は、「レベル」フィールドおよび「プロセスID」フィールドを有する。しかし、代替の実施形態では、「レベル」フィールドおよび「プロセスID」フィールドをEAT226から省略することがある。
図15を参照すると、IPC240の関連する構成要素がさらに示されている。IPC240は、メモリI/Oバス210に結合されたメッセージ・デコーダ1502、メモリ・マップドI/O(MMIO)ユニット1504、およびメッセージ・エンコーダ1506を含む。プロセッサ・コア200は、MMIOロードおよびMMIOストアを使用して、MMIOユニット1504を介してIPC240と通信する。IPC240は、メッセージ・デコーダ1502を介してISC224からメッセージを受信する。IPC240は、メッセージ・エンコーダ1506を介してISC224についてのメッセージを生成する。MMIOユニット1504は、メッセージ・エンコーダ1506にトリガEOIメッセージ1507を発行し、メッセージ・エンコーダ1506に、メモリI/Oバス210上でEOIメッセージ306を生成させ、ISC224に送らせる。メッセージ・デコーダ1502はセレクタ1508に結合され、セレクタ1508は、受信したENM1202に関連するイベント・ターゲット番号に基づいてパケット処理のためにFSM(すなわち、P−FSM 1からP−FSM Mのうちの1つ)を選択するように構成される。IPC240のFSMは、割込みコンテキスト・テーブル(ICT)242にアクセスし、プロセッサ・コア200上で実行中の物理スレッドに対する例外の生成を開始し、メッセージ・エンコーダ1506に対するトリガ拒否メッセージ1505を生成し、メッセージ・エンコーダ1506は、トリガ拒否メッセージ1505に応答してNRM304を生成する。
ICT242内で示される物理プロセッサ・スレッド番号は、フィールドではないが、行を示すためにのみ使用されることを理解されたい。例えば、物理(プロセッサ)スレッド番号「0」がICT242の行番号「0」に割り当てられ、物理スレッド番号「1」がICT242の行番号「1」に割り当てられるなどである。ICT242では、各行は、関連する「有効」フィールド、仮想プロセッサ番号(「VP #」)フィールド、「プロセスID」フィールド(ユーザ・レベル割込みのために使用される)、「動作優先順位」フィールド、「割当て済み」フィールド、「ソース番号」フィールド、および「イベント優先順位」フィールドを有し、それらの値は、例外ラインがIPC240によってアサートされたことに応答して、MMIOロードを使用してプロセッサ・コアによって読み出すことができる。「有効」フィールドは、プロセッサがインストールされ、電源オンされるかどうか、およびVPがディスパッチされ、関連する物理プロセッサ・スレッド上で動作中であるかどうかを示す。「VP #」フィールドは、関連する物理プロセッサ・スレッド上でディスパッチされるVPの番号を指定する。「プロセスID」フィールドは、ユーザ・レベル割込みについてのプロセスIDを指定する。「動作優先順位」フィールドは、関連する物理プロセッサ・スレッド上で現在動作中のプログラムの優先レベルを指定する。図示される実施形態では、ICT242内の各行は、「プロセスID」フィールドを有する。しかし、代替の実施形態では、「プロセスID」フィールドをICT242から省略することができる。
図16を参照すると、ICT242が、3つの異なるICT(すなわち、ハイパーバイザ・スタック・レベルICT242a、OSスタック・レベルICT242b、およびユーザ・スタック・レベルICT242c)を含むものとしてさらに示されており、それぞれは、プロセッサ・コア200に配線される、異なる関連の例外ライン212a、212b、および212cを有する。少なくとも1つの実施形態では、ICT242cのみが「プロセスID」フィールドを有する。
図17を参照すると、本開示の一実施形態による、図15のIPC240のセレクタ1508の関連する構成要素がさらに示されている。図示されるように、セレクタ1508は、コンパレータ(CMP 0からCMP M)、すなわちICT242内の各行について1つのコンパレータを含み、コンパレータは、「イベント・ターゲット番号」、ユーザ・レベル割込みについての「プロセスID」、「レベル」、およびENM1202内で与えられる「無視ビット数」、ならびにICT242a、242b、または242cのうちの1つのそれぞれの行内に格納された「有効」、「プロセスID」、および「VP #」値を比較する。コンパレータの出力は、「ノーヒット」ユニット(’no hits’ unit)1602に与えられ、「ノーヒット」ユニット1602は、何らかのVPスレッドが割込みを受けるために利用可能かどうかを判定する(割込みがユーザ・レベル割込みである際に、プロセスIDも比較される)。ゼロのVPスレッドが、割込みを受けるために利用可能である場合、「ノーヒット」ユニット1602は、メッセージ・エンコーダ1506(図15参照)にトリガ拒否メッセージ1505を発行する。1つを超えるVPスレッドが、割込みを受けるために利用可能である場合、「2次選択」ユニット(’secondary selection’ unit)1604が、どのVPスレッドが割込みを受けるべきかを判定し、適切な割込みトリガを発行して関連の物理プロセッサ・スレッド上で割込みをトリガする。「プロセスID」フィールドおよび「レベル」フィールドがENM1202から省略される代替の実施形態では、「レベル」フィールドおよび「プロセスID」フィールドがEAT226から省略され、「プロセスID」フィールドがICT242から省略され、コンパレータ(CMP 0からCMP M)が、ENM1202内で与えられる「イベント・ターゲット番号」および「無視ビット数」、ならびにICT242のそれぞれの行内に格納された「有効」および「VP #」値を比較することできる。
「2次選択」ユニット1604は、どの利用可能なVPスレッドを割込みのために選択するかを判定する際に、様々な2次選択基準を実装してもよい。例えば、「2次選択」ユニット1604は、「動作優先順位」に対する「イベント優先順位」、最長時間未使用(LRU)、もしくはランダム、またはそれらの組合せなどに基づいて、割込みのためのVPスレッドを選択することができる。所与の選択プロセス後に複数のVPスレッドがまだ利用可能である際に、単一のVPスレッドを選択するために様々な選択基準を順番に実装できることを理解されたい。
図18を参照すると、割込みを処理するためにIPC240によって実装される例示的なプロセス1700が示されている。IPC540がイベント通知メッセージをどのように処理するか(図7参照)とは異なる方式で、IPC240がイベント通知メッセージを処理することを理解されたい。IPC240がメモリI/Oバス210を介して入力を受信する際に、プロセス1700はブロック1701で開始される。次に、判定ブロック1702では、IPC540は、イベント通知メッセージ(ENM)1202が受信されたかどうかを判定する。ISC224はISC424(図6参照)と同様に動作すること、ENM1202は、ENM302を構築するためにISC424について説明した方式と同様の方式でISC224によって構築され、例外として、追加のフィールド(すなわち、図示される実施形態では、「プロセスID」フィールド、「レベル」フィールド、および「無視ビット数」フィールド、または、代替の実施形態では、「無視ビット数」フィールドのみ)を含むようにENM1202が構築され、かつ物理プロセッサ・スレッドとは対照的に「イベント・ターゲット番号」フィールドが仮想プロセッサ・スレッド番号を与えることを理解されたい。受信した入力がENM1202に対応しないことに応答して、制御はブロック1702上でループする。ブロック1702で受信した入力がENM1202に対応することに応答して、制御はブロック1703に移る。
ブロック1703では、IPC240は、ENM1202によって(「無視ビット数」フィールド内で)指定される下位ビット数を無視して、ENM1202からの「イベント・ターゲット番号」をすべての有効なVP番号と比較する。次に、判定ブロック1704では、IPC240は、割込みがユーザ・レベル割込みであることを「レベル」フィールドが示すかどうかを判定する。割込みがユーザ・レベル割込みであることに応答して、制御はブロック1704からブロック1706に移る。ブロック1706では、IPC240は、ENM1202の「プロセスID」を、合致する有効なVP番号を有するICT242c内の行の「プロセスID」と比較する。ブロック1706から、制御は判定ブロック1708に移る。ブロック1704で割込みがユーザ・レベル割込みではないことに応答して、制御はブロック1708に直接移る。代替の実施形態では、判定ブロック1704およびブロック1706がプロセス1700から省略され、制御はブロック1703から判定ブロック1708に直接移る。
ブロック1708では、IPC240は、少なくとも1つのVPスレッドについてヒットが生じたかどうかを判定する。ノーヒット(すなわち、説明している実施形態における指定のプロセスIDを有するか、または代替の実施形態における指定のプロセスIDを有さない際に、VP選択基準(すなわち、「イベント・ターゲット番号」フィールドおよび「無視ビット数」フィールド内で指定される)に合致するVPスレッドが有効ではないことにより、割込みを受けるために利用可能なVPスレッドがない)がブロック1708で生じたことに応答して、制御はブロック1710に移り、ブロック1710では、IPC240は、ENM1202内の「イベント・ソース番号」フィールドによって指定される通知ソースに拒否メッセージ(すなわち、NRM304)を発行する。拒否される関連する割込みが最終的にサービスされること保証するために、様々な技法を利用することがあることを理解されたい。ブロック1710の後、制御はブロック1702に戻る。少なくとも1つのヒットがブロック1708で生じたことに応答して、制御は判定ブロック1712に移り、判定ブロック1712では、IPC240は、保留中の割込みがまだ割り当てられていない何らかのヒットがあるかどうかを判定する。
保留中の割込みがブロック1712でまだ割り当てられていない少なくとも1つのヒットがあることをIPC240が判定したことに応答して、制御はブロック1716に移る。ブロック1716では、IPC240は、ICT242内の行を選択し、割込みをトリガする。次に、ブロック1718では、IPC240は、ENM1202ごとに選択された行の「割当て済み」フィールド、「ソース番号」フィールド、および「イベント優先順位」フィールドを設定する。ブロック1718の後、制御はブロック1702に戻る。ブロック1712で保留中の割込みがまだ割り当てられていないヒットがないことをIPC240が判定したことに応答して、制御は判定ブロック1714に移る。ブロック1714では、IPC240は、ENM1202の割込み優先順位(すなわち、イベント優先順位)が、保留中の割込みを有するヒットを伴うどの行の動作優先順位よりも高いかどうかを判定する。
割込み優先順位が、保留中の割込みを有するヒットを伴うどの行の動作優先順位よりも高くないことに応答して、制御はブロック1714からブロック1710に移る。割込み優先順位が、保留中の割込みを有するヒットを伴う少なくとも1つの行の動作優先順位よりも高いことに応答して、制御はブロック1714からブロック1720に移る。ブロック1720では、IPC240は、ICT242内の行を選択して、割込みをトリガする。次に、ブロック1722では、IPC240は、ICT242の選択された行の割り当てられた通知ソースに拒否メッセージを発行する。次いで、ブロック1718では、IPC240は、ENM1202ごとにICT224内の選択された行の「割当て済み」フィールド、「ソース番号」フィールド、および「イベント優先順位」フィールドを設定する。ブロック1718の後、制御はブロック1702に戻る。
図19を参照すると、プロセッサ・コアから受信したいくつかのMMIOストアを処理するためにIPC240によって実装される例示的なプロセス1800が示されている。例えば、プロセッサ・コア200は、IPC242にMMIOストアを発行し、すべての関連するVPを無効にすることがある。例えば、IPC240が所与のプロセッサ・コア200からMMIOストアを受信した際に、プロセス1800はブロック1802で開始される。次に、判定ブロック1804では、IPC240は、ICT242内の1つまたは複数の行内の有効ビットをデアサートするようにMMIOストアが指示されるかどうかを判定する。ICT242内の1つまたは複数の行内の有効ビットをデアサートするように、受信したMMIOストアが指示されないことに応答して、制御はブロック1804上でループする。ICT242内の1つまたは複数の行内の有効ビットをデアサートするように、受信したMMIOストアが指示されることに応答して、制御はブロック1804から判定ブロック1806に移る。
判定ブロック1806では、IPC240は、割当て済みビットが行内でアサートされるかどうか、すなわちその有効ビットがデアサートされることになる行について割込みが保留中であるかどうかを判定する。割当て済みビットが行についてアサートされることに応答して、制御はブロック1806からブロック1808に移る。ブロック1808では、IPC240は、有効ビットがデアサートされることになる行き先の行に関連する(ICT242内の行の「イベント・ソース番号」フィールド内の値によって指定される)通知ソースに拒否メッセージを発行する。次に、ブロック1810では、IPC240は、行に関連する「割当て済み」フィールドおよび「有効」フィールド内の値をアトミックにデアサートする(1つまたは複数の行について割込みがもはや保留中ではないこと、および1つまたは複数の行が有効なVPを有しないことを示すために)。ブロック1810の後、制御はブロック1804に戻る。ブロック1806で1つまたは複数の行について割当て済みビットがアサートされないことに応答して、制御はブロック1812に移る。ブロック1812では、IPC240は、1つまたは複数の行についての有効ビットをデアサートする。ブロック1812の後、制御はブロック1804に戻る。
したがって、割込みのサービシングを全般的に改善し、好ましくはI/Oデバイスが割込みのレベル(例えば、ユーザ・レベル、OSレベル、ハイパーバイザ・レベル)を指定することを可能にする技法が、本明細書で開示されている。集積回路を設計、製造、または試験するためにコンピュータ可読記憶デバイス内に有形に具現化される設計構造で、本開示の態様を実装できることを理解されたい。
上記の流れ図では、図に示された方法は、コンピュータ可読媒体内で1つまたは複数の設計ファイルとして具現化することができる。いくつかの実装では、本発明の趣旨および範囲から逸脱することなく、方法のうちのいくつかのステップを組み合わせ、同時にまたは異なる順序で実施し、あるいは恐らくは省略することができる。そのため、方法ステップが具体的なシーケンスで説明および図示されるが、特定のステップのシーケンスの使用は、本発明に関するどのような制限も示唆することを意味しない。本発明の趣旨または範囲から逸脱することなく、ステップのシーケンスに関して変更を行ってもよい。具体的なシーケンスの使用は、それゆえ限定的な意味に理解されるものではなく、本発明の範囲は、添付の特許請求の範囲のみによって定義される。
当業者は理解するであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、総体的にハードウェアの実施形態、またはソフトウェア態様とハードウェア態様とを組み合わせる実施形態の形態を取ることができ、それらはすべて、本明細書では概して「回路」、「モジュール」、または「システム」と呼ばれることがある。
1つまたは複数のコンピュータ可読媒体の任意の組合せを利用してもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体としてもよい。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、またはデバイス、または上記の任意の適切な組合せでよいが、コンピュータ可読信号媒体を含まない。コンピュータ可読記憶媒体のより特定の例(非網羅的なリスト)には、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または上記の任意の適切な組合せが含まれる。本文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためにプログラムを収容し、または格納することのできる任意の有形記憶媒体でよい。
例示的な実施形態を参照しながら本発明を説明してきたが、本発明の範囲から逸脱することなく、様々な変更を行うことができ、その要素に均等物を代用できることを、当業者は理解されよう。さらに、その本質的な範囲から逸脱することなく、その具体的なシステム、デバイス、または構成要素を本発明の教示に適合させるように、多くの変更を行うことができる。したがって、本発明は、本発明を実施するために開示された具体的な実施形態に限定されず、本発明は、添付の特許請求の範囲内に包含されるすべての実施形態を含むものとする。さらに、第1、第2などの用語の使用は、何らかの順序または重要度を示すわけではなく、むしろ第1、第2などの用語は、ある要素を別の要素と区別するために用いられる。
本明細書で使用される用語は、具体的な実施形態を説明するためのものに過ぎず、本発明の限定ではないものとする。本明細書で使用される際に、単数形「a」、「an」、および「the」は、文脈が特段に明確に示すのでない限り、複数形も含むものとする。「含む(ccmprises)」もしくは「含んでいる(comprising)」という用語またはその両方は、本明細書で使用される際に、記載の特徴、整数、ステップ、動作、要素、もしくは構成要素、またはそれらの組合せの存在を指定するが、1つもしくは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループ、またはそれらの組合せの存在または追加を除外しないことをさらに理解されよう。
以下の特許請求の範囲内にあるすべてのミーンズまたはステップ・プラス・ファンクションの構成要素の対応する構造、材料、行為、および均等物は、それが存在する場合、特許請求の範囲に具体的に記載されるように、特許請求の範囲に記載の他の構成要素と組み合わせてそのファンクションを実施するための、任意の構造、材料、または行為を含むことを意図する。本発明の説明は、例示および説明のために提示されてきたが、網羅的であること、または開示された形態の本発明に限定することを意図するものではない。本発明の範囲および趣旨から逸脱することなく、多くの変更形態および変形形態が当業者には明らかとなるであろう。本発明の原理および実際の応用例を最良に説明するために、および企図される具体的な使用に適するような様々な変更を伴う様々な実施形態について、他の当業者が本発明を理解することを可能にするために、実施形態を選び、説明した。
100 データ処理システム
102 処理ノード
104 処理装置
108 システム・メモリ
110 システム相互接続
114 ローカル相互接続
200 プロセッサ・コア
210 メモリI/Oバス
212 例外ライン
214 I/Oバス
220 I/Oコントローラ
222 パケット・デコーダ
224 割込みソース・コントローラ(ISC)
226 イベント割当てテーブル(EAT)
230 I/Oアダプタ
240 割込み提示コントローラ(IPC)
242 割込みコンテキスト・テーブル(ICT)
302 イベント通知メッセージ(ENM)
304 通知拒否メッセージ(NRM)
306 割込み終了(EOI)メッセージ
404 メッセージ・デコーダ
405 EOIおよび拒否ライン
406 割込みメッセージ・エンコーダ
410 メモリI/Oバス
414 I/Oバス
422 パケット・デコーダ
424 割込みソース・コントローラ
426 イベント割当てテーブル(EAT)
502 メッセージ・デコーダ
504 メモリ・マップドI/O(MMIO)ユニット
506 メッセージ・エンコーダ
507 トリガEOIメッセージ
540 割込み提示コントローラ(IPC)
542 割込みコンテキスト・テーブル(ICT)
1202 イベント通知メッセージ(ENM)
1404 メッセージ・デコーダ
1406 割込みメッセージ・エンコーダ
1502 メッセージ・デコーダ
1504 MMIOユニット
1505 トリガ拒否メッセージ
1506 メッセージ・エンコーダ
1507 トリガEOIメッセージ
1508 セレクタ
1602 「ノーヒット」ユニット
1604 「2次選択」ユニット

Claims (28)

  1. イベント・ターゲット番号、および無視ビット数を指定するイベント通知メッセージ(ENM)を、割込み提示コントローラ(IPC)で受信することと、
    前記ENM内で指定される前記イベント・ターゲット番号および前記無視ビット数に基づいて、潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを前記IPCによって決定することであって、かつ潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定する際に、前記イベント・ターゲット番号が、特定の仮想プロセッサ・スレッドを特定し、前記無視ビット数が、前記特定の仮想プロセッサ・スレッドに関して下位の無視ビット数を特定することと
    を含む、データ処理システム内の割込みを処理する方法。
  2. 前記ENMは、レベルをさらに指定し、前記仮想プロセッサ・スレッドの前記グループは、前記ENM内で指定される前記レベルがユーザ・レベルに対応する際に、プロセス識別子(ID)をさらに使用することによって決定される、請求項1に記載の方法。
  3. 前記ENMは、イベント・ソース番号およびイベント優先順位をさらに指定する、請求項1に記載の方法。
  4. 前記レベルがオペレーティング・システム(OS)レベルに対応する際に、前記プロセスIDが使用されない、請求項2に記載の方法。
  5. 前記レベルがハイパーバイザ・レベルに対応する際に、前記プロセスIDが使用されない、請求項4に記載の方法。
  6. 前記無視ビット数である場合、前記特定の仮想プロセッサ・スレッドのみが、潜在的に割込みを受ける可能性がある、請求項3に記載の方法。
  7. 前記無視ビット数である場合、前記特定の仮想プロセッサ・スレッドおよび1つの他の仮想プロセッサ・スレッドが、潜在的に割込みを受ける可能性がある、請求項3に記載の方法。
  8. 前記無視ビット数「n」である場合、前記特定の仮想プロセッサ・スレッドおよび(2−1)個の他の仮想プロセッサ・スレッドが、潜在的に割込みを受ける可能性がある、請求項1ないし5のいずれか一項に記載の方法。
  9. 前記無視ビット数は、0に等しくなく、前記方法は、
    仮想プロセッサ・スレッドの前記グループ内の1つまたは複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であるかどうかを判定することと、
    仮想プロセッサ・スレッドの前記グループ内の仮想プロセッサ・スレッドがディスパッチされず、関連する物理プロセッサ上で動作中ではないことに応答して、前記ENM内で指定されるイベント・ソース番号によって指定される通知ソースに拒否メッセージを発行することと
    をさらに含む、請求項1ないし5のいずれか一項に記載の方法。
  10. 前記無視ビット数は、0に等しくなく、前記方法は、
    仮想プロセッサ・スレッドの前記グループ内の複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であるかどうかを判定することと、
    仮想プロセッサ・スレッドの前記グループ内の前記複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であることに応答して、保留中の割込みをまだ有しない前記複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択することと
    をさらに含む、請求項1ないし5のいずれか一項に記載の方法。
  11. 前記複数の仮想プロセッサ・スレッドのうちの複数が保留中の割込みをまだ有しないことに応答して、2次選択基準に基づいて、保留中の割込みをまだ有しない前記複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択すること
    をさらに含む、請求項10に記載の方法。
  12. 前記2次選択基準は、前記複数の仮想プロセッサ・スレッドのそれぞれについての動作優先順位に対する、前記ENM内で指定されるイベント優先順位、前記複数の仮想プロセッサ・スレッドのうちの最長時間未使用(LRU)の1つ、および前記複数の仮想プロセッサ・スレッドのうちのランダムな1つのうちの1つまたは複数を含む、請求項11に記載の方法。
  13. 前記無視ビット数は、0に等しくなく、前記方法は、
    仮想プロセッサ・スレッドの前記グループ内の複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であるかどうかを判定することと、
    仮想プロセッサ・スレッドの前記グループ内の前記複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であることに応答して、前記複数の仮想プロセッサ・スレッドのすべてが保留中の割込みを有するかどうかを判定することと、
    前記複数の仮想プロセッサ・スレッドのすべてが保留中の割込みを有すると判定したことに応答して、前記ENM内で指定されるイベント優先順位が、前記複数の仮想プロセッサ・スレッドのいずれかの動作優先順位よりも高いかどうかを判定することと、
    前記イベント優先順位が前記複数の仮想プロセッサ・スレッドのいずれの前記動作優先順位よりも高くないと判定したことに応答して、前記ENM内で指定されるイベント・ソース番号によって指定される通知ソースに拒否メッセージを発行することと
    をさらに含む、請求項1ないし5のいずれか一項に記載の方法。
  14. 前記イベント優先順位が前記複数の仮想プロセッサ・スレッドのいずれかの前記動作優先順位よりも高いと判定したことに応答して、前記イベント優先順位未満の動作優先順位を有する前記複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択すること
    をさらに含む、請求項13に記載の方法。
  15. 前記イベント優先順位が前記複数の仮想プロセッサ・スレッドのうちの複数の前記動作優先順位よりも高いと判定したことに応答して、2次選択基準に基づいて、前記イベント優先順位未満の動作優先順位を有する前記複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択すること
    をさらに含む、請求項13に記載の方法。
  16. 前記2次選択基準は、前記複数の仮想プロセッサ・スレッドについての動作優先順位に対する前記イベント優先順位、前記複数の仮想プロセッサ・スレッドのうちの最長時間未使用(LRU)の1つ、および前記複数の仮想プロセッサ・スレッドのうちのランダムな1つのうちの1つまたは複数を含む、請求項15に記載の方法。
  17. 割込みソース・コントローラ(ISC)と、
    前記ISCに結合された割込み提示コントローラ(IPC)と
    を備え、前記IPCは、
    前記ISCからイベント通知メッセージ(ENM)を受信することであって、前記ENMが、イベント・ターゲット番号、および無視ビット数を指定する、前記受信すること、および
    前記ENM内で指定される前記イベント・ターゲット番号および前記無視ビット数に基づいて、潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定することであって、かつ潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定する際に、前記イベント・ターゲット番号が、特定の仮想プロセッサ・スレッドを特定し、前記無視ビット数が、前記特定の仮想プロセッサ・スレッドに関して下位の無視ビット数を特定すること
    を行うように構成される、マルチスレッド・データ処理システムのための処理ユニット。
  18. 前記ENMは、レベルをさらに指定し、前記仮想プロセッサ・スレッドの前記グループは、前記ENM内で指定される前記レベルがユーザ・レベルに対応する際に、プロセス識別子(ID)をさらに使用することによって決定される、請求項17に記載の処理ユニット。
  19. 前記ENMは、イベント・ソース番号およびイベント優先順位をさらに指定する、請求項17に記載の処理ユニット。
  20. 前記無視ビット数は、0に等しくなく、前記IPCは、
    仮想プロセッサ・スレッドの前記グループ内の1つまたは複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であるかどうかを判定し、
    仮想プロセッサ・スレッドの前記グループ内の仮想プロセッサ・スレッドがディスパッチされず、関連する物理プロセッサ上で動作中ではないことに応答して、前記ENM内で指定されるイベント・ソース番号によって指定される通知ソースに拒否メッセージを発行する
    ようにさらに構成される、請求項17ないし19のいずれか一項に記載の処理ユニット。
  21. 前記無視ビット数は、0に等しくなく、前記IPCは、
    仮想プロセッサ・スレッドの前記グループ内の複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であるかどうかを判定し、
    仮想プロセッサ・スレッドの前記グループ内の前記複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であることに応答して、保留中の割込みをまだ有しない前記複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択する
    ようにさらに構成される、請求項17ないし19のいずれか一項に記載の処理ユニット。
  22. 前記IPCは、
    前記複数の仮想プロセッサ・スレッドのうちの複数が保留中の割込みをまだ有しないことに応答して、2次選択基準に基づいて、保留中の割込みをまだ有しない複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択する
    ようにさらに構成される、請求項21に記載の処理ユニット。
  23. 前記2次選択基準は、前記複数の仮想プロセッサ・スレッドのそれぞれについての動作優先順位に対する、前記ENM内で指定されるイベント優先順位、前記複数の仮想プロセッサ・スレッドのうちの最長時間未使用(LRU)の1つ、および前記複数の仮想プロセッサ・スレッドのうちのランダムな1つのうちの1つまたは複数を含む、請求項22に記載の処理ユニット。
  24. 前記無視ビット数は、0に等しくなく、前記IPCは、
    仮想プロセッサ・スレッドの前記グループ内の複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であるかどうかを判定し、
    仮想プロセッサ・スレッドの前記グループ内の前記複数の仮想プロセッサ・スレッドがディスパッチされ、関連する物理プロセッサ上で動作中であることに応答して、前記複数の仮想プロセッサ・スレッドのすべてが保留中の割込みを有するかどうかを判定し、
    前記複数の仮想プロセッサ・スレッドのすべてが保留中の割込みを有すると判定したことに応答して、前記ENM内で指定されるイベント優先順位が、前記複数の仮想プロセッサ・スレッドのいずれかの動作優先順位よりも高いかどうかを判定し、
    前記イベント優先順位が前記複数の仮想プロセッサ・スレッドのいずれの前記動作優先順位よりも高くないと判定したことに応答して、前記ENM内で指定されるイベント・ソース番号によって指定される通知ソースに拒否メッセージを発行する
    ようにさらに構成される、請求項17ないし19のいずれか一項に記載の処理ユニット。
  25. 前記IPCは、
    前記イベント優先順位が前記複数の仮想プロセッサ・スレッドのいずれかの前記動作優先順位よりも高いと判定したことに応答して、前記イベント優先順位未満の動作優先順位を有する前記複数の仮想プロセッサ・スレッドのうちの1つを割込みのために選択する
    ようにさらに構成される、請求項24に記載の処理ユニット。
  26. コンピュータ実行可能なプログラムであって、コンピュータを、
    割込みソース・コントローラ(ISC)、および
    前記ISCに結合された割込み提示コントローラ(IPC)
    として機能させるためのプログラムであり、前記IPCは、
    前記ISCからイベント通知メッセージ(ENM)を受信することであって、前記ENMが、イベント・ターゲット番号、および無視ビット数を指定する、前記受信すること、および
    前記ENM内で指定される前記イベント・ターゲット番号および前記無視ビット数に基づいて、潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定することであって、かつ潜在的に割込みを受ける可能性がある仮想プロセッサ・スレッドのグループを決定する際に、前記イベント・ターゲット番号が、特定の仮想プロセッサ・スレッドを特定し、前記無視ビット数が、前記特定の仮想プロセッサ・スレッドに関して下位の無視ビット数を特定すること
    を行うように構成される、プログラム
  27. 前記ENMがレベルをさらに指定し、前記ENM内で指定される前記レベルがユーザ・レベルに対応する際に、前記仮想プロセッサ・スレッドの前記グループが、プロセス識別子(ID)をさらに使用することによって決定される、請求項26に記載のプログラム。
  28. 前記ENMが、イベント・ソース番号およびイベント優先順位をさらに指定する、請求項26に記載のプログラム。
JP2016219785A 2015-11-16 2016-11-10 仮想プロセッサ・スレッド・グループを使用する処理装置内の割込みを処理するための方法、処理装置、およびプログラム Active JP6679145B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562255766P 2015-11-16 2015-11-16
US62/255,766 2015-11-16
US15/334,951 US10437755B2 (en) 2015-11-16 2016-10-26 Techniques for handling interrupts in a processing unit using virtual processor thread groups
US15/334,951 2016-10-26
US15/334,857 2016-10-26
US15/334,857 US9852091B2 (en) 2015-11-16 2016-10-26 Techniques for handling interrupts in a processing unit using virtual processor thread groups and software stack levels

Publications (2)

Publication Number Publication Date
JP2017091544A JP2017091544A (ja) 2017-05-25
JP6679145B2 true JP6679145B2 (ja) 2020-04-15

Family

ID=58691007

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016219785A Active JP6679145B2 (ja) 2015-11-16 2016-11-10 仮想プロセッサ・スレッド・グループを使用する処理装置内の割込みを処理するための方法、処理装置、およびプログラム

Country Status (3)

Country Link
US (13) US10437755B2 (ja)
JP (1) JP6679145B2 (ja)
GB (2) GB2545974B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437755B2 (en) * 2015-11-16 2019-10-08 International Business Machines Corporation Techniques for handling interrupts in a processing unit using virtual processor thread groups
US10121001B1 (en) * 2017-06-21 2018-11-06 Qualcomm Incorporated System and method for monolithic scheduling in a portable computing device using a hypervisor
US10423550B2 (en) 2017-10-25 2019-09-24 International Business Machines Corporation Managing efficient selection of a particular processor thread for handling an interrupt
JP7196439B2 (ja) * 2018-07-03 2022-12-27 株式会社デンソー 仮想化環境におけるデバイスへのアクセス方法
US11188369B2 (en) * 2018-11-26 2021-11-30 International Business Machines Corporation Interrupt virtualization
US11513983B2 (en) * 2020-05-15 2022-11-29 International Business Machines Corporation Interrupt migration
US11755362B2 (en) 2021-06-11 2023-09-12 International Business Machines Corporation Techniques for handling escalation of interrupts in a data processing system
US11561819B2 (en) 2021-06-11 2023-01-24 International Business Machines Corporation Techniques for adapting escalation paths of interrupts in a data processing system

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE662661A (ja) 1964-04-16
JPH0290331A (ja) * 1988-09-28 1990-03-29 Hitachi Ltd 仮想計算機システムのためのプロセツサ間通信命令処理装置
FR2642214B1 (fr) * 1988-12-30 1992-11-20 Cit Alcatel Systeme de detection d'ecrasement de donnees dans une memoire tampon, notamment pour un commutateur de donnees
US5495615A (en) * 1990-12-21 1996-02-27 Intel Corp Multiprocessor interrupt controller with remote reading of interrupt control registers
US5410710A (en) * 1990-12-21 1995-04-25 Intel Corporation Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
US5469571A (en) * 1991-07-15 1995-11-21 Lynx Real-Time Systems, Inc. Operating system architecture using multiple priority light weight kernel task based interrupt handling
JP2870254B2 (ja) * 1991-10-02 1999-03-17 日本電気株式会社 仮想計算機の入出力割り込み処理方式
JP2566719B2 (ja) 1992-04-20 1996-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション データ通信インタフエース及びその動作方法
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
JPH06187178A (ja) 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
CA2123447C (en) 1993-09-20 1999-02-16 Richard L. Arndt Scalable system interrupt structure for a multiprocessing system
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5530891A (en) * 1994-05-31 1996-06-25 Advanced Micro Devices System management interrupt mechanism within a symmetrical multiprocessing system
US5905898A (en) 1994-05-31 1999-05-18 Advanced Micro Devices, Inc. Apparatus and method for storing interrupt source information in an interrupt controller based upon interrupt priority
US6006247A (en) * 1995-03-21 1999-12-21 International Business Machines Corporation Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US5689713A (en) * 1995-03-31 1997-11-18 Sun Microsystems, Inc. Method and apparatus for interrupt communication in a packet-switched computer system
JP3442932B2 (ja) 1995-09-29 2003-09-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理システム
US6163829A (en) 1998-04-17 2000-12-19 Intelect Systems Corporation DSP interrupt control for handling multiple interrupts
US6065089A (en) * 1998-06-25 2000-05-16 Lsi Logic Corporation Method and apparatus for coalescing I/O interrupts that efficiently balances performance and latency
US6205508B1 (en) * 1999-02-16 2001-03-20 Advanced Micro Devices, Inc. Method for distributing interrupts in a multi-processor system
US6338111B1 (en) 1999-02-22 2002-01-08 International Business Machines Corporation Method and apparatus for reducing I/O interrupts
US6327249B1 (en) * 1999-08-04 2001-12-04 Ess Technology, Inc Data communication device
US6430643B1 (en) * 1999-09-02 2002-08-06 International Business Machines Corporation Method and system for assigning interrupts among multiple interrupt presentation controllers
TW501017B (en) * 2000-04-05 2002-09-01 Via Tech Inc Processing method, chip set and controller for supporting message signaled interrupt
US6792525B2 (en) * 2000-04-19 2004-09-14 Hewlett-Packard Development Company, L.P. Input replicator for interrupts in a simultaneous and redundantly threaded processor
US20020087614A1 (en) 2000-08-31 2002-07-04 Andrej Kocev Programmable tuning for flow control and support for CPU hot plug
GB2366880B (en) * 2000-09-15 2005-01-05 Mitel Corp Method of Validating Data in Circular Buffers
US6760830B2 (en) * 2000-12-29 2004-07-06 Intel Corporation Modulo addressing
US20020161961A1 (en) * 2001-01-17 2002-10-31 Ajile Systems, Inc. Multiple virtual machine environment management system
US7191271B2 (en) * 2001-09-20 2007-03-13 Lockheed Martin Corporation Two level multi-tier system bus
US7275247B2 (en) 2002-09-19 2007-09-25 International Business Machines Corporation Method and apparatus for handling threads in a data processing system
US7003610B2 (en) * 2002-09-20 2006-02-21 Lsi Logic Corporation System and method for handling shared resource writes arriving via non-maskable interrupts (NMI) in single thread non-mission critical systems with limited memory space
US9158574B2 (en) 2002-11-18 2015-10-13 Arm Limited Handling interrupts in data processing
GB0230301D0 (en) * 2002-12-30 2003-02-05 Nokia Corp Streaming media
US7653912B2 (en) 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7003611B2 (en) 2003-09-30 2006-02-21 International Business Machines Corporation Method and apparatus for handling interrupts using a set of interrupts servers associated with presentation controllers
US7810093B2 (en) * 2003-11-14 2010-10-05 Lawrence Livermore National Security, Llc Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes
US7650601B2 (en) 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US7590982B1 (en) * 2003-12-17 2009-09-15 Vmware, Inc. System and method for virtualizing processor and interrupt priorities
JP2005190207A (ja) * 2003-12-25 2005-07-14 Matsushita Electric Ind Co Ltd 割り込み制御装置、制御方法
US20060010277A1 (en) 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter interrupt domains
US20060130062A1 (en) 2004-12-14 2006-06-15 International Business Machines Corporation Scheduling threads in a multi-threaded computer
TWI271654B (en) * 2005-04-22 2007-01-21 Via Tech Inc Core logic chip of computer system
US7584328B2 (en) 2005-11-14 2009-09-01 Intel Corporation Method, apparatus, and a system for efficient context switch
US8286162B2 (en) 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US7398343B1 (en) 2006-01-03 2008-07-08 Emc Corporation Interrupt processing system
JP4033215B2 (ja) * 2006-01-31 2008-01-16 セイコーエプソン株式会社 マルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム
US7821980B2 (en) 2006-08-03 2010-10-26 Nokia Corporation Variable rate soft information forwarding
US20080109564A1 (en) 2006-11-03 2008-05-08 Arndt Richard L Method, system, and apparatus for enhanced management of message signaled interrupts
US8763115B2 (en) 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
US8209686B2 (en) 2008-02-12 2012-06-26 International Business Machines Corporation Saving unsaved user process data in one or more logical partitions of a computing system
US8623315B2 (en) 2008-07-15 2014-01-07 Honeywell International Inc. Methods for preparing compositions comprising ammonium nitrate double salts
US8239873B2 (en) 2008-08-12 2012-08-07 Verizon Patent And Licensing Inc. Speedy event processing
EP2157511B1 (fr) 2008-08-19 2012-01-18 STMicroelectronics Rousset SAS Procédé d'acheminement d'un signal d'interruption directement vers une unité de traitement virtuelle dans un système à une ou plusieurs unités de traitement physiques
US8667187B2 (en) 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
DK2349320T3 (en) 2008-10-17 2016-09-26 Vectus Biosystems Ltd Compositions and methods for the treatment of renal disorders
US8719823B2 (en) 2009-03-04 2014-05-06 Vmware, Inc. Managing latency introduced by virtualization
US8566508B2 (en) * 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
US8478924B2 (en) 2009-04-24 2013-07-02 Vmware, Inc. Interrupt coalescing for outstanding input/output completions
US8868809B2 (en) * 2009-11-30 2014-10-21 Lsi Corporation Interrupt queuing in a media controller architecture
US8413161B2 (en) * 2009-09-29 2013-04-02 International Business Machines Corporation Work queue selection on a local processor within a multiple processor architecture
DE112010004017T5 (de) * 2009-10-13 2013-02-07 Turck Holding Gmbh Einzelstapel-ReaI-Time-Betriebssystem für eingebettete Systeme
US8566492B2 (en) * 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US8489789B2 (en) 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US9213567B2 (en) 2010-10-01 2015-12-15 Futurewei Technologies, Inc. System and method for controlling the input/output of a virtualized network
KR20120065097A (ko) 2010-12-10 2012-06-20 한국전자통신연구원 단말 가상화 환경에서 사용자 입력 처리 성능 향상을 위한 인터럽트 처리 장치 및 그 방법
US9934166B2 (en) * 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US9003094B2 (en) 2011-08-30 2015-04-07 Red Hat Israel, Ltd. Optimistic interrupt affinity for devices
WO2013042202A1 (ja) * 2011-09-20 2013-03-28 富士通株式会社 割込監視装置、およびコンピュータシステム
US9569235B1 (en) * 2011-09-30 2017-02-14 EMC IP Holding Company LLC Managing virtual systems in data storage systems
US8626799B2 (en) 2011-10-03 2014-01-07 International Business Machines Corporation Mapping data structures
JP5842206B2 (ja) * 2012-01-27 2016-01-13 株式会社トプスシステムズ プロセッサ・コア、およびマルチコア・プロセッサ・システム
JP5561294B2 (ja) * 2012-03-13 2014-07-30 株式会社デンソー マイクロコンピュータ
US8868810B2 (en) * 2012-04-12 2014-10-21 International Business Machines Corporation Managing over-initiative thin interrupts
CN102789439B (zh) * 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
US8996774B2 (en) 2012-06-27 2015-03-31 Intel Corporation Performing emulated message signaled interrupt handling
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US9442870B2 (en) 2012-08-09 2016-09-13 Freescale Semiconductor, Inc. Interrupt priority management using partition-based priority blocking processor registers
US9436626B2 (en) * 2012-08-09 2016-09-06 Freescale Semiconductor, Inc. Processor interrupt interface with interrupt partitioning and virtualization enhancements
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9772960B2 (en) 2012-10-11 2017-09-26 Wind River Systems, Inc. System and method for operating system aware low latency interrupt handling
US9009377B2 (en) 2012-11-01 2015-04-14 Apple Inc. Edge-triggered interrupt conversion in a system employing level-sensitive interrupts
US10078603B2 (en) 2012-11-30 2018-09-18 Red Hat Israel, Ltd. MSI events using dynamic memory monitoring
US9235538B2 (en) * 2013-02-07 2016-01-12 Red Hat Israel, Ltd. Injecting interrupts in virtualized computer systems
US10331589B2 (en) 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9378047B1 (en) 2013-09-18 2016-06-28 Emc Corporation Efficient communication of interrupts from kernel space to user space using event queues
US9460033B2 (en) 2013-12-27 2016-10-04 Cavium, Inc. Apparatus and method for interrupt collecting and reporting status and delivery information
WO2015159359A1 (ja) * 2014-04-15 2015-10-22 株式会社日立製作所 物理計算機
US9858101B2 (en) 2014-11-13 2018-01-02 Red Hat Israel, Ltd. Virtual machine input/output thread management
US10037292B2 (en) 2015-05-21 2018-07-31 Red Hat Israel, Ltd. Sharing message-signaled interrupt vectors in multi-processor computer systems
US9806904B2 (en) * 2015-09-08 2017-10-31 Oracle International Corporation Ring controller for PCIe message handling
US10437755B2 (en) * 2015-11-16 2019-10-08 International Business Machines Corporation Techniques for handling interrupts in a processing unit using virtual processor thread groups

Also Published As

Publication number Publication date
US20170139853A1 (en) 2017-05-18
US10229075B2 (en) 2019-03-12
GB2545973A (en) 2017-07-05
US20170139859A1 (en) 2017-05-18
US20180365179A1 (en) 2018-12-20
US9904638B2 (en) 2018-02-27
US10114773B2 (en) 2018-10-30
US20170139858A1 (en) 2017-05-18
US20170139856A1 (en) 2017-05-18
US20170139860A1 (en) 2017-05-18
US10061723B2 (en) 2018-08-28
US9870329B2 (en) 2018-01-16
US9678901B2 (en) 2017-06-13
US10614010B2 (en) 2020-04-07
US20170139861A1 (en) 2017-05-18
US20170139854A1 (en) 2017-05-18
US20170139862A1 (en) 2017-05-18
GB2545974B (en) 2020-11-11
US10437755B2 (en) 2019-10-08
US9792232B2 (en) 2017-10-17
US9779043B2 (en) 2017-10-03
GB2545974A (en) 2017-07-05
US20180113824A1 (en) 2018-04-26
GB2545973B (en) 2020-11-11
US20170139857A1 (en) 2017-05-18
US9792233B2 (en) 2017-10-17
US10169270B2 (en) 2019-01-01
US9852091B2 (en) 2017-12-26
JP2017091544A (ja) 2017-05-25
US20170139855A1 (en) 2017-05-18
US20180121378A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
JP6679145B2 (ja) 仮想プロセッサ・スレッド・グループを使用する処理装置内の割込みを処理するための方法、処理装置、およびプログラム
US6349394B1 (en) Performance monitoring in a NUMA computer
KR101455899B1 (ko) 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서
US10552351B2 (en) Techniques for issuing interrupts in a data processing system with multiple scopes
US20150143056A1 (en) Dynamic write priority based on virtual write queue high water mark
US10725940B2 (en) Reallocate memory pending queue based on stall
US10740269B2 (en) Arbitration circuitry
US10229074B2 (en) Techniques for handling interrupts in a processing unit using interrupt request queues
US20150067240A1 (en) Storage apparatus and its data processing method
US11561819B2 (en) Techniques for adapting escalation paths of interrupts in a data processing system
US20220398125A1 (en) Techniques for handling escalation of interrupts in a data processing system
CN109284223B (zh) 可配置的调试方法和系统
KR20230169865A (ko) 병렬성이 높은 시스템에서 큐들을 관리하기 위한 시스템 및 방법

Legal Events

Date Code Title Description
RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20161118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200221

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20200304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200316

R150 Certificate of patent or registration of utility model

Ref document number: 6679145

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150