JP2013502004A - マルチコア・アーキテクチャのためのユーザレベル割り込み機構 - Google Patents

マルチコア・アーキテクチャのためのユーザレベル割り込み機構 Download PDF

Info

Publication number
JP2013502004A
JP2013502004A JP2012524751A JP2012524751A JP2013502004A JP 2013502004 A JP2013502004 A JP 2013502004A JP 2012524751 A JP2012524751 A JP 2012524751A JP 2012524751 A JP2012524751 A JP 2012524751A JP 2013502004 A JP2013502004 A JP 2013502004A
Authority
JP
Japan
Prior art keywords
interrupt
user level
mailbox
level interrupt
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012524751A
Other languages
English (en)
Other versions
JP5646628B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013502004A publication Critical patent/JP2013502004A/ja
Application granted granted Critical
Publication of JP5646628B2 publication Critical patent/JP5646628B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F9/4818Priority circuits therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

【解決手段】
方法は、マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コアに対して、第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインおよび第一プロセッサ・コア上で実行しているアプリケーション・スレッドの受信者識別子がユーザレベル割り込みメッセージにおける対応するフィールドに一致する場合に、ユーザレベル割り込みメッセージによって示されるユーザレベル割り込みを受け入れることを含む。
【選択図】図3

Description

本発明は、マルチプロセッサ・システム、特にマルチプロセッサ・システムの割り込み処理に係る。
一般的に、割り込み(例えば、例外)は現在実行中の命令フローから、別の命令フローに命令実行を変更するイベントである。割り込みは通常、プロセッサまたはプロセッサに結合されたデバイスによって生成される。模範的な割り込み処理機構は、割り込まれたプロセッサのプログラム制御フローを割り込みハンドラ(例えば、割り込みサービスルーチン)に変更する。図1に関して、模範的なマルチプロセッサ・システム(例えば、システム100)には少なくとも2つのプロセッサ・コア(すなわち中央処理ユニット、コア、またはハードウェア・アクセラレータ)が含まれており、同時に複数のアプリケーション・スレッドを実行するように設定されている。模範的な割り込み配信メカニズム(例えば、x86アーキテクチャの割り込み配信メカニズム)には、システム内の各コアに対する割り込みコントローラ(例えば、ローカルな高度プログラム可能割り込みコントローラ (APIC))が含まれている。さらに、割り込みコントローラ(例えば、I/O APIC)はシステム内の各周辺バスに含まれる事が可能である。専用バスまたはシステム・バス(例えば、クロスバー116)がAPIC間の通信に使われてよい。
一般的に、ローカルAPICは対応するコアまたはCPUに対する外部割り込みを管理する。ローカルAPICはプロセッサ間割り込み (IPI) メッセージを受け付け、生成出来る。模範的なIPIは、マルチプロセッサ・システムの最初のコアが別のコアへの並列タスクをオフロードした場合に発生する。模範的なローカルAPICは、224までの使用可能な割り込みベクタをサポートし、これは割り込み優先度と、それぞれの割り込みサービス・ルーチンに対応する。別の32のベクタが関連コアまたはCPUによって、割り込み処理用に予約されている。
図1と2に関して、プロセッサ間割り込みが、対応するローカルAPIC(例えば、ローカルAPIC106)で、割り込み制御レジスタ (ICR) に書き込むコア(例えば、コア102)によって生成される(202)。ICRには、送信先識別子、配信モード、割り込みベクタ、そして他の適切な情報のためのフィールドが含まれている。ローカルAPIC106は、割り込みメッセージを生成し、クロスバー116を使用してオンチップネットワークを介して割り込みメッセージをブロードキャストする(204)。割り込みメッセージを受信したローカルAPIC(例えば、ローカルAPIC108)は、関連コア(例えば、コア104)の状態、そして受信側ローカルAPIC自体の状態(例えば、配信モードおよび送信先識別子)に基づいて、割り込みを受け付けるかを判断する。例えば、ローカルAPIC108が、配信モードに応じて送信先IDと一致する、識別子、物理ID、論理IDを持っていれば、ローカルAPIC108は、割り込みメッセージを受け付け、割り込みメッセージから割り込みベクタ番号を読み取り、対応するビットが割り込み要求レジスタ (IRR) に設定される。ローカルAPIC108はACK(肯定応答)メッセージを割り込みメッセージを発信したローカルAPIC106へ送信し、ローカルAPIC108による割り込みメッセージの受け付けを確認する(206)。
ローカルAPIC108によって割り込みメッセージから読まれた割り込みベクタ番号は、割り込みの優先順位を表し、これは、他の保留中割り込みの優先順位、および1つ以上の現在実行中のスレッドの優先順位と比較される。割り込みが最も高い優先順位の場合、インサービス・レジスタ (ISR) 内で対応するビットが設定され、割り込みがコア104に配信される。ローカルAPICのロジック108は、コア104にメッセージを送信する(208)。メッセージを受信すると、コア104は割り込みを検出し、現在実行中のアプリケーション・スレッドの命令境界でコアは割り込みサービス・ルーチンを実行する。割り込みサービス・ルーチンは、割り込みディスクリプタ・テーブル レジスタ(IDTR) の内容に基づいて、割り込みディスクリプタ・テーブル (IDT) にアクセスする。そして割り込みベクタに対応する、コード・セグメント・セレクタ、オフセット、そして割り込みハンドラの特権モードを取得する。セグメント・セレクタそしてオフセットプログラムに基づいて、割り込みハンドラのエントリポイントが判断されると、制御は割り込みハンドラに転送され、コア104は割り込みハンドラで指定されたアクションを実行する事により、割り込みを処理する (212)。制御は、割り込みハンドラから戻り、割り込みハンドラによって指定された当該アクションの結果によって、以前に実行中のアプリケーション・スレッドに戻る事が可能である(214)。
引き続き図1と2に関して、マルチプロセッサ・システム(例えば、システム100)の周辺バス(例えば、周辺バス114)に結合されたデバイス(例えば、デバイス112)からの割り込みは、上記のようにプロセッサ間割り込みと同様に処理される。例えば、ネットワークパケットの処理システムでは、デバイス112は、ネットワーク・インターフェース・カード (NIC) である。パケットが到着すると、(NIC) はプロセッサに割り込みを送信し、プロセッサにパケットの到着を通知する。デバイス112は、割り込み信号をアサートする事によって割り込みを生成し(202)、I/O APIC(例えば、I/O APIC110)は割り込みリダイレクション・テーブル (IRT) 116内の対応するエントリを読み込む。I/O APIC110は、エントリからの情報例えば、送信先識別子、配信モード、割り込みベクタまたは他の適切な情報を伴う割り込みメッセージを生成する。そして、割り込みはローカルAPIC(例えば、ローカルAPIC106およびローカルAPIC108)にブロードキャストされる(204)。送信先ローカルAPIC(例えば、ローカルAPIC108)がI/O APIC に確認応答を送信する(206)。そして、割り込みは、送信先のローカルAPIC(例えば、コア104)に対応した受信コアに配信される。コア108は割り込みをコア108がプロセッサ間割り込みを処理するのと同じ方法で処理する(210、212、214、216)。
1つのコアで実行中のアプリケーションから別のコアに割り込みを送信するには、ICRはカーネルモードのみで書込み可能なので、送信元のコアがオペレーティング・システムに制御を転送する必要がある。別のコアへの割り込みを生成するアプリケーションは、ICRを書込むためにカーネルモードに切り替わり、その後ユーザ・モードに切り替わり、2回の制御転送を必要とする。模範的なオペレーティング・システムへの制御転送は、多くのサイクルを使用する(例えば、オペレーティング・システム実装の複雑さに応じて数千回から数万回以上)。その上、割り込みがアプリケーション・スレッドに情報を渡すために使用される場合、アプリケーション・スレッドにプログラム制御を戻すために追加の制御転送が必要である。ユーザレベル割り込みを処理するためにオペレーティング・システムに関連する割り込み機構を使用するこの高いオーバーヘッドは、システムのパフォーマンスを遅くする場合がある。
本発明の少なくとも1つの実施形態では、方法は、マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コアに対して、第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインおよび第一プロセッサ・コア上で実行しているアプリケーション・スレッドの受信者識別子がユーザレベル割り込みメッセージにおける対応するフィールドに一致する場合に、ユーザレベル割り込みメッセージによって示されるユーザレベル割り込みを受け入れることを含む。少なくとも1つの実施形態では、方法は、ユーザレベル割り込みが他の受け入れられた割り込みよりも高い優先度およびプロセッサ・コア上で実行しているアプリケーション・スレッドよりも高い優先順位を有する場合にユーザレベル割り込みを処理することを含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込みは、オペレーティング・システム割り込みを呼び出さずに処理される。方法の少なくとも1つの実施形態では、処理することは、ユーザレベル・インサービス・レジスタの状態を変更することと、ユーザレベル割り込みルーチンを実行することとを含み、実行することは、ユーザレベル割り込みメッセージにおけるベクタ番号およびユーザレベル割り込みディスクリプタ・テーブル・レジスタの内容に基づいてユーザレベル割り込みハンドラを呼び出すこととを含む。少なくとも1つの実施形態では、方法は、割り込みからのユーザ・レベル・戻り(user-level-return-from-interrupt instruction)命令に基づいて、ユーザレベル割り込みハンドラからプログラム・フローを戻すことを含む。少なくとも1つの実施形態では、方法は、ユーザレベル割り込みの処理が完了した場合に、ユーザレベル・インサービス・レジスタの状態をリセットすることを含む。方法の少なくとも1つの実施形態では、第一プロセッサ・コアに関連するローカル割り込みコントローラは、複数のプロセッサ・コアの第二プロセッサ・コアに関連する個々のローカル割り込みコントローラ、および入力/出力割り込みコントローラの少なくとも一つからユーザレベル割り込みメッセージを受信する。方法の少なくとも1つの実施形態では、ユーザレベル割り込みは、オペレーティング・システム割り込みより低い優先順位を持つ。
本発明の少なくとも1つの実施形態では、方法は、マルチコア・システムにおける複数のプロセッサ・コアの1つ以上のプロセッサ・コアにユーザレベル割り込みを示すユーザレベル割り込みメッセージを送ることを含む。ユーザレベル割り込みメッセージには、ユーザレベル割り込みに関連する割り込みドメイン識別子と、ユーザレベル割り込みに関連する受信者識別子が含まれている。少なくとも1つの実施形態では、方法は、複数のプロセッサ・コアのプロセッサ・コアに対応するユーザレベル割り込み制御レジスタへ書き込むことによりユーザレベル割り込みを生成することを含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込み制御レジスタへ書き込むことは、ユーザレベル割り込み制御レジスタの送信先フィールドを設定することと、ユーザレベル割り込み制御レジスタの配信モードフィールドを設定することとを含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込みは、複数のプロセッサ・コアの第一プロセッサ・コア上で実行されているアプリケーション・スレッドによって発行され、方法は、ユーザレベル割り込みの配信不能状態を検出するとともにそれに基づいて第一プロセッサ・コアへの割り込みをトリガすることをさらに含む。
本発明の少なくとも1つの実施形態では、装置は、マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コアに対応するローカル割り込みコントローラを含む。ローカル割り込みコントローラは、第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインのインジケータを格納する動作が可能な割り込みドメイン識別子状態要素を含む。ローカル割り込みコントローラは、第一プロセッサ・コア上で実行しているアプリケーション・スレッドのインジケータを格納する動作が可能な受信者識別子状態要素を含む。ローカル割り込みコントローラは、割り込みドメイン識別子および受信者識別子状態要素の内容に基づいてユーザレベル割り込みを少なくとも部分的に処理する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、ローカル割り込みコントローラのユーザーレベル割り込み構成を示すユーザーレベル割り込み制御状態要素、肯定応答したユーザレベル割り込みを示すユーザーレベル・インサービス状態要素、およびユーザーレベル割り込みの保留中の肯定応答を示すユーザーレベル割り込み要求状態要素をさらに含む。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、割り込みドメイン識別子状態要素および受信者識別子状態要素の内容に基づいて割り込みメッセージを生成する動作が可能である。少なくとも1つの実施形態では、装置は、少なくとも1つのユーザレベル割り込みハンドラ、ユーザレベル割り込みディスクリプタ・テーブル、およびユーザレベル割り込みディスクリプタ・テーブル・レジスタを含み、少なくとも一つのユーザレベル割り込みハンドラは、ユーザレベル割り込みディスクリプタ・テーブル・レジスタの内容に応じて、ユーザレベル割り込みディスクリプタ・テーブルからアクセス可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、割り込みリダイレクション・テーブルを含む別の個々のローカル割り込みコントローラおよび入力/出力割り込みコントローラの少なくとも1つからユーザレベル割り込みを受信する動作が可能であり、割り込みリダイレクション・テーブルには割り込みドメイン識別子が含まれている。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、ユーザレベル割り込みのソースに、ユーザレベル割り込みのソースから受信した割り込みメッセージを個々のローカル割り込みコントローラが受け入れたかを示すインジケータを提供する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、受信割り込みメッセージにおける配信モードフィールドがユーザレベル割り込みコードを示す場合、受信割り込みメッセージにおける送信先インジケータを受信者識別子格納場所の内容と比較し、受信した割り込みメッセージにおける割り込みドメイン識別子を割り込みドメイン識別子格納場所の内容と比較する動作が可能である。装置の少なくとも1つの実施形態では、ユーザレベル割り込みハンドラには、ユーザレベル割り込みベクタが含まれている。少なくとも1つの実施形態では、装置は、デバイスからのイベントを受信するとともに受信したイベントを割り込みとしてローカル割り込みコントローラへルートする動作が可能な入力/出力割り込みコントローラを含む。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、割り込みが発行される複数のプロセッサコアの第二プロセッサ・コアに対応する別のローカル割り込みコントローラからの確認インジケータを受信するよう構成されている。少なくとも1つの実施形態では、装置は、ローカル割り込みコントローラのオペレーティング・システム・レベル割り込み構成を示すオペレーティング・システム・レベル割り込み制御状態要素と、オペレーティング・システムレベル割り込みの肯定応答を示すオペレーティング・システム・レベル・インサービス状態要素と、肯定応答が保留のオペレーティング・システム・レベル割り込みを示すオペレーティング・システム・レベル割り込み要求状態要素とを含む。
本発明の少なくとも1つの実施形態では、方法は、ユーザレベル割り込みに関連するユーザレベル割り込みメッセージに含まれる割り込みドメイン識別子および割り込み受信者識別子に少なくとも部分的に基づいて、ユーザレベル割り込みを配信不能としてメールボックス内に記録することを含む。記録することは、ユーザレベル割り込みが、マルチコア・システムにおける複数のプロセッサ・コアのプロセッサ・コア上で実行している受信者アプリケーション・スレッドへ配信不能であることの表示に少なくとも部分的に基づいている。少なくとも1つの実施形態では、方法は、ユーザレベル割り込みの目的受信者によってユーザレベル割り込みが受け入れられていない事を示す少なくとも1つのメッセージを受信することを含み、ユーザレベル割り込みが配信不能である事の表示は、少なくとも部分的に少なくとも1つのメッセージに基づいている。方法の少なくとも1つの実施形態では、ユーザレベル割り込みが配信不能である事の表示は、ユーザレベル割り込みメッセージに対して肯定応答メッセージが受信されていない事の決定に基づいている。少なくとも1つの実施形態では、方法は、受信者アプリケーション・スレッド状態がプロセッサ・コアに戻った後であって且つ受信者アプリケーション・スレッドを実行する前に、メールボックスのエントリを処理することを含む。少なくとも1つの実施形態では、方法は、メールボックスが満杯な場合に追加のユーザレベル割り込みを配信不能としてメールボックスに記録する試みに応答して、オペレーティング・システムにメールボックスのオーバーフローを通知することを含む。少なくとも1つの実施形態では、方法は、メールボックスオーバーフローの通知に応答してメールボックスのストレージ容量を増加することを含む。少なくとも1つの実施形態では、方法は、メールボックスオーバーフローに応答して追加のユーザレベル割り込みを無視することを含む。少なくとも1つの実施形態では、方法は、メールボックス内に配信不能として記録されたユーザレベル割り込みを追加のユーザレベル割り込みで上書きすることによりユーザレベル割り込みを無視することを含む。少なくとも1つの実施形態では、方法は、アプリケーション・スレッドがドメインに参加し、1つ以上のプロセッサ・コア上で実行しているオペレーティング・システムから受信者識別子を受信した場合に、メールボックス・テーブル・エントリとメールボックス・バッファを作成することを含む。
本発明の少なくとも1つの実施形態では、装置はマルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コアを含む。装置は配信不能のユーザレベル割り込みメッセージを格納する動作が可能なメールボックスストレージ構造を含む。メールボックスストレージ構造は、メールボックスストレージ構造ルート記憶要素の内容、割り込みドメイン識別子および割り込み受信者識別子に従って、第一プロセッサ・コアによってアクセス可能である。少なくとも1つの実施形態では、装置は、第一プロセッサ・コアに対応するメールボックスルート記憶要素を含み、第一プロセッサ・コアは、メールボックスルート記憶要素に従ってアクセス可能なメールボックス・テーブルに格納されている対応するメールボックス・ディスクリプタに基づいて、メールボックスストレージ構造内に配信不能のユーザレベル割り込みメッセージを格納する動作が可能である。少なくとも1つの実施形態では、装置は、メールボックスルート記憶要素の内容に応じてアクセス可能なメールボックス・テーブルを含み、メールボックス・テーブルは複数のプロセッサ・コアによって共有されるメモリ空間内に存在する。装置の少なくとも1つの実施形態では、メールボックス・テーブルは、ルートテーブルと少なくとも1つの受信者メールボックス・ポインタテーブルを備える階層的なテーブルのセットを含み、ルートテーブルは割り込みドメイン識別子を受信者メールボックス・ポインタテーブルへ関連付ける。装置の少なくとも1つの実施形態では、メールボックス・テーブルは、割り込みドメイン識別子と割り込み受信者識別子に従ってアクセス可能なメールボックス・ディスクリプタのエントリを含む。装置の少なくとも1つの実施形態では、メールボックスストレージ構造は、配信不能ユーザレベル割り込みの種類に対応する個々のエントリのキューを備える。装置の少なくとも1つの実施形態では、メールボックスストレージ構造は、特定の受信者アプリケーション・スレッドに対して、ーつまたは複数のユーザレベル割り込みタイプが保留されているかを示すビットベクタを備える。少なくとも1つの実施形態では、装置は第一プロセッサ・コアに対応するローカル割込みコントローラを含み、ローカル割り込みコントローラは、第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインの表示を格納する動作が可能な割り込みドメイン識別子状態要素と、第一プロセッサ・コア上で実行しているアプリケーションスレッドの表示を格納する動作が可能な受信者識別子状態要素とを含み、ローカル割り込みコントローラは、割り込みドメイン識別子と受信者識別子の状態要素の内容に基づいてユーザレベル割り込みを少なくとも部分的に処理するように動作可能である。
本発明の少なくとも1つの実施形態では、方法は、割り込みドメインおよび第一プロセッサ・コア上で実行しているアプリケーションスレッドの受信者識別子の少なくとも1つとユーザレベル割り込みメッセージにおける対応するフィールドとが一致しない場合に、ユーザーレベル割り込みメッセージの受信者によって受け入れられていないユーザーレベル割り込みのインジケーターを送信することと、そうでない場合に、受け入れられているユーザレベル割り込みのインジケータを送信することとを含む。少なくとも1つの実施形態では、方法は、受け入れられていないユーザレベル割り込みのインジケータの受信に基づいて、ユーザレベル割り込みが目的受信者アプリケーション・スレッドに配信不能である事を示すインジケータを生成することを含む。少なくとも1つの実施形態では、方法は、ユーザレベル割り込みの配信不能状態を検出するとともにそれに基づいて第一プロセッサ・コアへの割り込みをトリガすることを含む。
本発明の少なくとも1つの実施形態では、方法は、複数のユーザレベル割り込み配信設定から選択されたユーザレベル割り込み配信設定に応じて、1つ以上の受信者にユーザレベル割り込みを示すユーザレベル割り込みメッセージを配信することを含む。1つ以上の受信者は、マルチコア・システムにおける複数のプロセッサ・コアの1つ以上のプロセッサ・コア上で実行している1つ以上のアプリケーション・スレッドに対応する。少なくとも1つの実施形態では、方法は、複数のユーザレベル割り込み配信設定からユーザレベル割り込み配信設定を選択することを含む。方法の少なくとも1つの実施形態では、複数のユーザレベル割り込み配信設定はユニキャスト配信、マルチキャスト配信、およびブロードキャスト配信を含む。少なくとも1つの実施形態では、方法は、1つ以上の受信者から少なくとも1つの応答を収集することと、1つ以上の受信者から収集された少なくとも1つの応答に従って割り込み操作を正常に完了することとを含む。少なくとも1つの実施形態では、方法は、1つ以上の受信者から少なくとも1つの応答を収集することと、通知モード設定と1つ以上の受信者から収集された少なくとも1つの応答とに従って配信不能割り込みをトリガすることとを含む。少なくとも1つの実施形態では、方法は、選択可能な配信失敗通知モード設定に従って、配信不能ユーザレベル割り込みに対して配信失敗通知を配信することを含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込み配信設定は、複数のプロセッサ・コアのマルチ・プロセッサ・コアに対応するマルチ受信者にユーザレベル割り込みメッセージをマルチキャストすることを含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込み配信設定は、ユーザレベル割り込みメッセージを複数のプロセッサ・コアの他のプロセッサ・コアへブロードキャストすることを含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込みは、複数のプロセッサ・コアの第一プロセッサ・コア上で実行しているアプリケーション・スレッドによって発行され、方法は、ユーザレベル割り込みの配信不能状態を検出するとともにそれに基づいて第一プロセッサ・コア上で実行しているアプリケーション・スレッドにユーザレベル割り込みをトリガすることをさらに含む。方法の少なくとも1つの実施形態では、ユーザレベル割り込みメッセージは、1つ以上の受信者アプリケーション・スレッドの割り込みドメインと、1つ以上の受信者アプリケーション・スレッドを示す受信者グループ・フィールドとを含む。
本発明の少なくとも1つの実施形態では、方法は、配信失敗通知モード設定に従って、ユーザレベル割り込みメッセージの1つ以上の目的受信者へ、ユーザレベル割り込みが配信不能である事のインジケータを生成することを含む。ユーザレベル割り込みは、マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コア上で実行しているアプリケーション・スレッドによって発行される事が可能である。方法の少なくとも1つの実施形態では、インジケータは、ユーザレベル割り込みが配信不能である目的ユーザレベル割り込み受信者の数に少なくとも部分的に基づいている。方法の少なくとも1つの実施形態では、ユーザレベル割り込みは、マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コア上で実行しているアプリケーション・スレッドによって発行される。少なくとも1つの実施形態では、方法は、ユーザレベル割り込みの配信不能状態を検出するとともにそれに基づいて第一プロセッサ・コアへのユーザレベル割り込みをトリガすることを含む。少なくとも1つの実施形態では、方法は、ユーザレベル割り込みに関連するユーザレベル割り込みメッセージに含まれる割り込みドメイン識別子および割り込み受信者識別子とユーザレベル割り込みが配信不能であることの少なくとも1つの表示とに少なくとも部分的に基づいて、ユーザレベル割り込みを配信不能として受信者識別子に関連するメールボックス内に記録することを含む。
本発明の少なくとも1つの実施形態では、装置はマルチコア・システムの複数のプロセッサ・コアの第一プロセッサ・コアに対応するローカル割り込みコントローラを含む。ローカル割り込みコントローラは、受信者グループ状態要素および配信失敗通知モード状態要素の少なくとも1つを含む。ローカル割り込みコントローラは、受信者グループ状態要素および配信失敗通知モード状態要素の少なくとも1つの内容に基づいてユーザレベル割り込みを処理する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは受信者グループ状態要素を備え、ローカル割り込みコントローラは、1つ以上の受信者に受信者グループ状態要素の内容に応じてユーザレベル割り込みメッセージを送信する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは配信失敗通知モード状態要素を備え、ローカル割り込みコントローラは、配信失敗通知モード状態要素の内容のインジケータを含むユーザレベル割り込みメッセージを生成する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは配信失敗通知モード状態要素を備え、そしてローカル割り込みコントローラは、配信失敗通知モード状態要素の内容に応じて、配信不能ユーザレベル割り込みに対して配信失敗通知を生成する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、1つ以上の受信者からの任意の応答を収集する動作が可能であり、そして1つ以上の受信者から収集された応答に応じて割り込み動作を正常に完了する動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、1つ以上の受信者から任意の応答を収集し、配信失敗通知モード状態要素の内容と1つ以上の受信者から収集した応答とに応じて配信不能割り込みをトリガする動作が可能である。装置の少なくとも1つの実施形態では、ローカル割り込みコントローラは、第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインのインジケータをを格納する動作が可能な割り込みドメイン識別子状態要素と、第一プロセッサコア上で実行しているアプリケーション・スレッドのインジケータを格納する動作が可能な受信者識別子状態要素とをさらに含み、ローカル割り込みコントローラは、割り込みドメイン識別子状態と受信者識別子状態要素の内容にさらに基づいてユーザレベル割り込みを処理するよう動作が可能である。
添付の図面を参照することによって、当業者にとって、本発明はより良く理解されるであろうし、またその多くの目的、特徴および利点が明らかになるであろう。
図1は、模範的な割り込み配信メカニズムのブロック図である。 図2は図1の割り込み配信メカニズムを使用した割り込みのための模範的な情報および制御のフローを示す。 図3は本発明の少なくとも一つの実施形態と一致する、模範的な割り込み配信機構のブロック図を示す。 図4は本発明の少なくとも一つの実施形態と一致する、図3の模範的な割り込み配信・メカニズムのための模範的な情報および制御のフローを示す。
別の図面での同じ参照符号の使用は、類似または同一の項目を示す。
本発明の1つ以上の実施形態と一致する模範的なユーザレベル割り込み配信技法は、ユーザレベル割り込みを直接ユーザ・レベルのアプリケーション・スレッドに配信する事により、ユーザレベル割り込み(例えば、アプリケーション・スレッドによって生成された割り込み、またはシステムの周辺バスに結合されたデバイスによって生成された割り込み)を処理中に使用する制御転送の数を減らす。図3および4に関して、模範的なマルチプロセッサ・システム(例えば、システム300)には、同時に複数のアプリケーション・スレッドを実行するように設定される、少なくとも2つのプロセッサ・コア(すなわち中央処理ユニット、コア、またはハードウェア・アクセラレータ)が含まれている。各ローカルAPICには割り込みドメイン識別子レジスタ(すなわちIDIR)そして受信者識別子レジスタ(つまりRIR)が含まれている。IDIRは、関連するコアで現在実行しているアプリケーション・スレッドの割り込みドメイン識別子を格納する状態要素である。割り込みドメインは、ユーザレベル割り込みの交換を許可された、アプリケーション・スレッドとデバイスのセットである。各ドメインは、割り込みドメイン識別子と名付けられた一意の識別子を持っている。識別子は、オペレーティング・システム・インスタンス内で一意である。ドメインの各メンバは、受信者識別子が与えられ、これはドメイン内のみで一意である。RIRは、コア上で現在実行しているアプリケーション・スレッドの受信者識別子を格納する状態要素である。システム300においては、ユーザレベル割り込みの送信先アプリケーション・スレッドは、割り込みドメイン識別子と受信者識別子の組み合わせによって識別される。
図3はシステム300のIDIRとRIRがローカルAPICに含まれている事を示すが、これらの識別子は他の任意のコアごとのモジュールに格納出来る。ローカルAPIC306およびローカルAPIC308は、それぞれコア302および304とは別のものとして示されているが、ローカルAPIC306およびローカルAPIC308の機能は、対応するコア回路または他のコアごとのモジュールに組み込める事に注意が必要である。IDIRとRIRのレジスタの状態は、2つの識別子がアプリケーション・スレッドのコンテキストの一部であるため、コンテキスト・スイッチ時に保存および復元される。IDIRとRIRは次の技法によって保存および復元出来る:マシンの状態レジスタ (MSR) を介したマッピング、メモリマップ I/O (MMIO) を介してのアクセス、命令セットアーキテクチャのエクステンション、または他の適切な技法。
割り込みメッセージはコアコマンドまたはデバイス・コマンドへの応答として、APIC(例えば、ローカルAPIC306、ローカルAPIC308、またはI/O APIC310)によって生成される。少なくとも1つの実施形態では、システム300は、ユーザレベル割り込みをサポートするために既知の割り込みメッセージを修正する。例えば、x86の割り込みメッセージは、ユーザレベル割り込みに固有のコードに設定された配信モード (すなわちDM) フィールド、および/または割り込みの受信者アプリケーション・スレッドを識別するように設定された送信先フィールド、を含むよう構成出来る。システム300の少なくとも1つの実施形態で、割り込みドメイン識別子は、x86割り込みメッセージのペイロードに含む事ができる。システム300の少なくとも1つの実施形態では、既存の割り込みメッセージを拡張するより、個別のユーザレベル割り込みメッセージが使用される。例えば、ユーザレベル割り込みメッセージは次を含む事が出来る:割り込みドメイン識別子、受信者識別子、ユーザレベル割り込みタイプ、および/または他の適切な情報。
引き続き図3と4に関して、システム300のコア(例えば、コア302)上で実行しているアプリケーション・スレッドが、対応するローカルAPIC(例えば、ローカルAPIC 306)のユーザレベル割り込み制御レジスタ(すなわちUICR)に書き込む事により、ユーザレベル割り込みを生成する(402)。UICRは各ローカルAPICに含まれている、割込み制御レジスタ(すなわちICR)のユーザ・レベルのレプリカである。UICRはユーザモードでアクセス可能で、UICRへの書き込みは、オペレーティング・システムの支援またはコントロールの転送を必要としない。少なくとも1つの実施形態では、アプリケーション・スレッドは割り込みの受信者を識別するために、UICRの送信先フィールドを設定する。そしてユーザレベル割り込みを示す特定のコードを含めるよう、UICRのDMフィールドを設定する。ローカルAPIC306は、UICRの値に基づいてユーザレベル割り込みメッセージを生成する(404)。それはICRの内容に基づいたオペレーティング・システム・レベル割り込み(すなわち、オペレーティング・システムの割り込みハンドラを含む、既存の割り込みメカニズムによって発行された割り込み)の生成と同様である。IDIRに含まれている割り込みドメイン識別子は、ローカルAPIC 306によってユーザレベル割り込みメッセージに含まれる。IDIRの割り込みドメイン識別子は、目的の送信先アプリケーション・スレッドではなく、割り込みを開始するアプリケーション・スレッドのIDに対応する事に注意が必要である。それに応じて、ユーザレベル割り込みは、開始アプリケーション・スレッドと同じ割り込みドメイン内の、受信側アプリケーション・スレッドによって受信用に設定される。
システム300の少なくとも1つの実施形態では、ローカルAPIC 306はオペレーティング・システム・レベル割り込みのルーティングと同様に、全てのコアへユーザレベル割り込みメッセージをブロードキャストする。インターコネクト・ネットワーク(例えば、クロスバー316、または他の適当なバス構造)は、オペレーティング・システム・レベル割り込みメッセージをブロードキャストするのに使用するのと同じ技法で、ユーザレベル割り込みメッセージをブロードキャストする。従って、ネットワークはユーザレベル割り込みとオペレーティング・システム・レベル割り込みを区別する必要がない。システム300の少なくとも1つの実施形態では、ユーザレベル割り込みは、マルチキャストであってよく、または送信先コアへの直接送信が可能である。
少なくとも1つの実施形態では、割り込みメッセージの受信に応答して、ローカルAPIC(例えば、ローカルAPIC308)は、割り込みメッセージのDMフィールドの内容を所定のユーザレベル割り込みコードの内容と比較して、割り込みがユーザレベル割り込みであるかを判断する。割り込みがユーザレベル割り込みである場合、ローカルAPIC308は、割り込みメッセージの送信先フィールドの内容(すなわち、割り込みメッセージの受信者識別子、RIIM)をローカルAPIC308のRIRの内容と比較し、割り込みメッセージに含まれている割り込みドメイン識別子(すなわち、IDIM)をローカルAPIC308 のIDIRの内容と比較する(406)。値が一致する場合、割り込みは、ローカルAPIC308および対応するコア(例えば、コア304)に関連するアプリケーション・スレッドへ送信が決まっている。ローカルAPIC308は、割り込みメッセージに基づいて、割り込みベクタ番号を決定する。そして、個々のローカルAPICに対応するIRRのユーザレベルの複製である、UIRR内の対応するビットの状態を変更する。そして、ローカルAPIC308は、受信確認メッセージ(すなわちACK)を送信元のローカルAPIC(例えば、ローカルAPIC306)へ送信して 割り込みメッセージが受け付けられた事を示す(408)。システム300の少なくとも1つの実施形態では、値が一致しない場合、ローカルAPIC308は、ローカルAPIC306 にNACKメッセージを送信し、ローカルAPIC308によって割り込みが受け付けされていない事を示す(416)。
ローカルAPIC308がユーザレベル割り込みを受け付けた際、処理のためにコア304に割り込みをルーティングする (410)。一般的に、コアはユーザレベル割り込みが他の受け付けられた割り込みとコア上で現在実行しているスレッドとよりも高い優先度を持つ場合、ユーザレベル割り込みを処理する。例えば、ユーザレベル割り込みは、全てのオペレーティング・システム・レベル割り込みより優先順位が低い。コアがユーザレベル割り込みを処理する時、ローカルAPICごとに追加した ISR のユーザ・レベルのレプリカである、ユーザレベルのISR (UISR) 内の対応するビットを設定する。その後、コア304はユーザレベル割り込みのためのプログラムコードを呼び出し、ユーザレベルのIDT (UIDT) を指す、ユーザ・レベルのIDTR (UIDTR) を読取る(412)。UIDTはIDTのユーザ・レベルのレプリカであり、ユーザレベル割り込みハンドラへのポインタが含まれている。システム300の少なくとも1つの実施形態では、UIDTエントリとIDTエントリは、同じデータ構造を持っており、単一のマージされたIDTにマージされる。マージされたIDTには、オペレーティング・システム・レベルのハンドラとユーザレベルのハンドラが含まれている。それに応じて、別のUIDTRは含まれていない。
コア304は、コード・セグメント・セレクタ、オフセット、および/またはユーザレベル割り込みのベクタ番号に対応する、ユーザレベルのハンドラの他の適切な情報にアクセスする。コア304はその情報を使用し、ユーザレベル割り込みハンドラに対応する、メモリへのエントリ・ポイントを計算する。最後に、プログラムの制御フローは、ユーザレベル割り込みハンドラのエントリポイント のメモリ内の場所にジャンプする事で、ユーザレベル割り込みハンドラに転送される(412)。
ユーザレベル割り込みハンドラが終了すると、UISR内の対応するビットがソフトウェア、マイクロコード、またはハードウェアによってリセットされる。ローカルAPIC308はUISR内のこれらのビットのリセットを検出し、現在のアプリケーション・スレッドと残りの保留中の割り込みの優先順位を確認する。そしてローカルAPIC308は、残りの保留中の割り込みを、現在のアプリケーション・スレッドに比べたそれらの優先順位に従って配信するかを判断する。ローカルAPIC308が別の保留中の割り込みを配信する事を決定した場合、処理のために割り込みをコア304にルーティングする (410)。それ以外の場合、コアの実行は、ユーザレベル割り込みルーチンから戻る (414)。システム300の少なくとも1つの実施形態では、この手順は割り込み命令からの戻りによってトリガされる。それは、ユーザレベルの特定の命令、例えば、IRET命令のユーザレベルのバージョンであるUIRETであってよい。システム100内の割り込み処理に使用される、2つのコンテキストの変更(214および216)に比べて、システム300内の割り込み処理 (414) には1つのコンテキストの変更だけが使用される事に注意が必要である。
システム300の少なくとも1つの実施形態では、システム300はユーザレベル割り込みの送信先アプリケーション・スレッドが、ユーザレベル割り込みが配信される前に、プリエンプトされた状態を検出する。少なくとも1つの実施形態では、システム300は、ブロードキャストされたユーザレベル割り込みメッセージに対して、ACKメッセージが受信されたかを送信者(例えば、ローカルAPIC 306)に判断させる事によって、ユーザレベル割り込みが配信できない(すなわち、ユーザレベル割り込みが配信不能である)事を判断する。ユーザレベル割り込みが配信不能である場合、少なくとも一実施形態でローカルAPIC 306は、配信不能割り込みの繰延べ配信(すなわち、繰延べ)を処理する、繰延べ割込み配信ハンドラのために予約されている所定の割り込みベクタ番号で、コア302に割り込み(例えば、ユーザレベル割り込みまたはオペレーティング・システム・レベル割り込み)をトリガする。コア302は、ユーザレベル割り込みサブルーチンを呼び出し、UIDTによって示された対応するユーザ・レベルの割り込みハンドラにマップされたハンドラへジャンプする。ハンドラは、ユーザレベルのハンドラ、またはオペレーティング・システム・レベルのハンドラである事ができる。管理された環境では、オペレーティング・システムの上で実行しているシステムレベルのソフトウェアは、ユーザレベルのアプリケーションを直接管理する。システムレベルのソフトウェアは、オペレーティング・システムに代わって、繰延べされたユーザレベル割り込みを記憶し、送信先アプリケーションが再スケジュールされた時に割り込みを配信する。例えば、ユーザレベル割り込みが管理環境下で使用されている場合、繰延べユーザレベル割り込みに対処するためにユーザレベル割り込みハンドラの使用が可能である。そうではない場合、オペレーティング・システム・レベルのハンドラが使用される。システム300の少なくとも1つの実施形態では、ユーザレベル割り込みと、オペレーティング・システム・レベル割り込みの間の選択は、ソフトウェアのシステムによって行われる。しかしながら、システム300は、ユーザレベル割り込みの繰延べをハードウェアおよび/またはマイクロコードでサポートすることが出来る。
システム300の少なくとも1つの実施形態では、ユーザレベル割り込みを配信出来ない事をローカルAPIC306が検出した際、オペレーティング・システム・レベルまたはユーザレベル割り込みハンドラを呼び出すよりむしろ、ローカルAPIC306は、割り込みメールボックス・テクニックを呼び出す。このハードウェア機構は、マイクロコードとしてまたはハードウェア有限状態機械として直接実装出来る。オペレーティング・システムは、UIDTの事前指定したエントリに登録されたオペレーティング・システム・レベルのメールハンドラを使用して、全ての繰延べ割り込みを処理する。オペレーティング・システムはさらに、割り込みドメイン識別子と受信者識別子によって識別される受信者ごとの割り込みキューで構成された、割り込みメールボックスを保持する。呼び出された際、オペレーティング・システム・レベルのメールボックスのハンドラは繰延べ割込みを割り込みメールボックス内の対応するキューに挿入する。その後、受信者アプリケーション・スレッドがコア上で実行するようスケジュールされた時、オペレーティング・システムは、繰延べ割り込みが、対応するメールボックスにあるかを判断する。繰延べ割り込みがある場合、オペレーティング・システムは、受信者アプリケーション・スレッドがその時点で割り込みを受信したかのように、システム・スタックを構成する。そして受信者アプリケーション・スレッドは対応するユーザレベル割り込みハンドラにジャンプする。
少なくとも1つの実施形態では、割り込みメールボックス技法には、各コア用のメールボックスのルート・レジスタ(つまり、MRR)が含まれている。MRRは管理されており、メールボックス・テーブル(例えば、メールボックス・テーブル520またはメールボックス・テーブル522)の管理に従って、オペレーティング・システムによって、入り切りを切り換える必要があるかも知れない。MRRはユーザモードで実行されている通常の命令ではアクセス出来ない。システム300の少なくとも1つの実施形態では、メールボックステーブル520は、全てのスレッドに対するグローバル構造体であり、したがって、MRRは入り切りを切り替えする必要はない。少なくとも1つの実施形態では、メールボックステーブル520は、共有メモリ領域に格納される。メールボックステーブル520には、特定の受信者のメールボックスを見つける方法を示す、状態情報が含まれている。メールボックス・テーブルの少なくとも1つの実施形態では、エントリは、ドメインIDと受信者のIDをメールボックス・ディスクリプタに関連付ける。システム300の少なくとも1つの実施形態では、メールボックス・テーブルとメールボックスは、ユーザモード命令が直接アクセス出来ないアドレス空間に割り当てられている。すなわち特権命令、マイクロコードまたはハードウェアのみが直接メールボックス・テーブルとメールボックスにアクセス出来る。
システム300の少なくとも1つの実施形態では、メールボックステーブル520は、階層的なテーブルのセットとして構成される。状態はドメイン識別子を他の補助テーブル、受信者メールボックス・ポインタテーブル (RMPT)、を指すフィールドに関連付ける、1つのメインルート・テーブル(ドメイン・メールボックス・ポインタ・テーブル、またはDMPT)、として構成されている。受信者メールボックス・ポインタテーブルは、受信者のメールボックスを見つけるために使用される情報である、メールボックス・ディスクリプタに受信者識別子を関連付ける。模範的なメールボックス・ディスクリプタには、メールボックス・ポインタ、その割り当てサイズ、そして次の保留中のユーザレベル割り込みが記録されるべきメールボックス内の場所、の内1つ以上が含まれている。システム300の少なくとも1つの実施形態では、メールボックス・テーブルは、状態情報のフラットテーブルとして構成されている。エントリは、ドメインIDと受信者のIDによってインデックスされ、メールボックス・ディスクリプタを含んでいる。
配信不能割り込みがオペレーティング・システムにトラップされる代わりに、コアによって受信された時、ハードウェア(またはマイクロコード)は、対応するメールボックスのルート・レジスタにアクセスして、メールボックス・テーブルへのポインタを読み取る。そしてハードウェアは、ドメインIDと受信者の受信者のIDに基づいてメールボックス・テーブルからメールボックス・ディスクリプタにアクセスする。その後、メールボックス・ディスクリプタは、受信者のメールボックスに、配信不能ユーザレベル割り込みを記録するために使用される。
システム300の少なくとも1つの実施形態では、オペレーティング・システムが、メールボックス・テーブルとメールボックスのルート・レジスタを設定する。メールボックス・テーブルが階層的な場合、ドメイン・メールボックス・ポインタ・テーブルが割り当てられ、オペレーティング・システムの初期化時に初期化される。ドメイン・メールボックス・ポインタテーブルは、追加のドメインが必要な場合後でサイズを変更出来る。受信者メールボックス・ポインタテーブルは、新しいドメインが作成されるたびに割り当てられ、初期化される。受信者メールボックス・ポインタテーブルがフラットな場合、オペレーティング・システムの初期化時に割り当てられ、初期化される。受信者のメールボックス・ポインタ・テーブルは、追加のドメイン受信者ペアが必要な場合、後でサイズを変更出来る。システム300の少なくとも1つの実施形態では、アプリケーション・スレッドがドメインに参加して、オペレーティング・システムから受信者のIDを受信する時、オペレーティング・システムはまた、メールボックス・バッファおよびメールボックス・テーブルを作成する。オペレーティング・システムは、受信者アプリケーション・スレッドに対応する、メールボックス・バッファに対する受信者用メモリ空間内にメモリを割り当て、ハードウェアがその後メールボックス・バッファを見つけるられように、メールボックス・テーブルにエントリを追加する。
模範的なメールボックスは、ビットベクトルあるいはキューとして実装されるが、他の適切な構造も使う事ができる。ビットベクトルとして実装された場合、メールボックス・ビットベクトルの個々のビットは、特定の受信者アプリケーション・スレッドのために保留している、特定のタイプのユーザレベル割り込みがあるかを示す。メールボックスは、受信者が保留している各タイプのユーザレベル割り込み数をエンコードしない。ビットベクトルのエンコーディングはコンパクトで、メールボックス・テーブル内のエントリのメールボックス・ディスクリプタ・フィールドに直接記録出来、そしてローカルAPIC UIRRに似ていてよい。メールボックスがキューとして実装されている場合、メールボックスの個々のエントリは、配信不能のユーザレベル割り込みタイプの特定のインスタンスを記述する。キューの実装は、ビットベクトルの実装よりも多くの領域を使うかも知れないが、ユーザレベル割り込みが記録された順番と、各タイプがいくつ発生したかを記録する事が可能である。メールボックス・ディスクリプタには、メールボックス・バッファへのポインタとメールボックスバッファサイズが含まれる。少なくとも1つの実施形態では、メールボックス・ディスクリプタには、メールボックス・バッファ内の次の空きエントリへのポインタが含まれている。
システム300の少なくとも1つの実施形態では、ユーザレベル割り込みが配信出来ない場合、システム300は配信不能割り込みの送信先アプリケーション・スレッドに対してメールボックスのエントリをインデックスするためにドメインIDと受信者のIDを使用する。ビットベクトル形式のメールボックスが使用されている場合、割り込みベクタ番号に対応するビットが、ビットベクタ内に設定される。キュー形式のメールボックスが使用されている場合、割り込みはFIFO方式でキューイングされる。システム300の少なくとも1つの実施形態では、配信不能の割り込みは、例えば、繰延べ割り込みのキューを優先順位で形成するなどの他の適切な技法を使用してエンキュー出来る。
メールボックスのキュー形式を使用する場合、システムが(例えば、ハードウェアまたはマイクロコードを介して)満杯なメールボックスに配信不能ユーザレベル割り込みのエントリを追加しようとする時に、メールボックスがオーバーフローする可能性がある。オーバーフローを処理するための模範的なテクニックには、オペレーティング・システムにトラップし、オーバーフローが発生した事をオペレーティング・システムに通知する事が含まれる。応答して、オペレーティング・システムは、メールボックスにより多くの領域を割り当てる事が出来る。別の模範的な手法には、新たな配信不能割り込みを無視する事が含まれる。少なくとも1つの実施形態では、システム300はすでにメールボックスに記録された割り込みに上書きする事で、それを無視する。メールボックスのオーバーフローを処理するための他の適切な技法も使う事ができる。システム300の少なくとも1つの実施形態では、システム300によって使用されているメールボックスのオーバーフロー技法は、オペレーティング・システムによって設定できるかも知れない。例えば、可能なメールボックスのオーバーフロー技法の中から選択するために制御ビットを使用する。
オペレーティング・システムが実行のためプログラム・フローにアプリケーション・スレッドを切り替えた際、オペレーティング・システムは、その特定のアプリケーション・スレッドに関連するメールボックスを流し出す。メールボックスがビットベクトル形式を使用している場合、オペレーティング・システムはアプリケーション・スレッドを実行する前、且つ状態を復元した後に、ローカルAPICのUIRRと受信者アプリケーション・スレッドのメールボックス・ビットベクトルの間で、論理OR演算を実行する。その後、ローカルAPICハードウェアは、それらが全て同時に受信されたかの様に流し出された割り込みを個別に配信する。メールボックスがキューの形式を使用する場合、オペレーティング・システムは、アプリケーション・スレッドが実行を開始する直前、且つ状態を復元した後に、メールボックス・キューに記録された割り込みを直接配信する(例えば、対応するハンドラにジャンプする事によって)。対応するローカルAPIC UIRRとUISRは、処理されている保留中のユーザレベル割り込みと一致するように更新される。
図3に関して、システム300の少なくとも1つの実施形態では、デバイスによって生成されるユーザレベル割り込みをサポートするため、I/O APIC310 内のIRTテーブルが、テーブルエントリごとに割り込みドメイン識別子を含むように拡張される。割り込みドメイン識別子は、エントリのDMフィールドが所定のユーザレベル割り込み値に設定されている場合にのみ使用される。デバイス(例えば、デバイス312)が割り込みを生成する時、IRTは例えば、DMフィールド、送信先(DESTINATION)フィールド、または割り込みラインにマッピングされたテーブルエントリの他の適切なフィールドなどのIRTフィールドに基づいて割り込みメッセージを提供する。DMフィールドが所定のユーザレベル割り込み値に設定されている場合、割り込みドメイン識別子は割り込みメッセージに含まれる。ユーザレベル割り込みメッセージが生成されると、それはIPIメッセージと同様にルーティング、受け入れ、処理される。
システム300の少なくとも1つの実施形態では、I/O APICのIRTテーブルを拡張するより、追加のハードウェアが、デバイス312からコア302および304への割り込みメッセージのパスに含まれている。その追加のハードウェアは、ユーザレベル割り込みのように扱われるよう意図されたデバイス割り込み(追加のハードウェアまたはマイクロコードにより、ユーザレベル割り込みとして事前登録されている)を検出し、そしてデバイス割り込みとユーザレベル割り込み(例えば、I/Oメモリ管理ユニット)の間のマッピングを実行する。
デバイス312によって生成されたユーザレベル割り込みが目的受信者に配信できない際、繰延べユーザ・レベルのIPIのローカルAPICとは異なり、I/O APIC310 は、繰延べユーザレベル割り込みのハンドラを実行しない。むしろI/O APIC310はDMフィールドを所定値に設定し(所定値はユーザレベル割り込みメッセージを示すために使用される所定値とは異なる)、それはアービトレイテッド割り込みを示すが、割り込みはユーザレベルである。アービトレイテッド割り込み配信モードでは、I/O APIC310はクエリーメッセージをブロードキャストして、対応するコア上で実行されている現在のアプリケーション・スレッドの優先順位について、ローカルAPIC 306およびローカルAPIC308に聞く。I/O APIC310 は、ローカルAPIC306およびローカルAPIC308から応答メッセージを受信し、優先順位が最も低いアプリケーション・スレッドのコアを割り込みに対する送信先として選択する。I/O APIC310 は選択したコアに対応するローカルAPICを示すために送信先フィールドを設定し、送信元の受信者識別子は割り込みメッセージのペイロードに含まれる。その後、I/O APIC310は割り込みメッセージをブロードキャストする。選択したコアのローカルAPICは割り込みメッセージを受信し、そして割り込みメッセージのDMフィールドが他の所定値に設定されているか否かを決断する。ローカルAPICは割り込みドメイン識別子と受信者識別子をペイロードから取得する。ローカルAPICはコアへの所定のメールボックスハンドラでユーザレベル割り込みをトリガし、繰延べIPIが処理されるのと同じように、繰延べデバイス割り込みを処理するためにマイクロコードが呼び出される。
少なくとも1つの実施形態では、システム300は配信不能割り込みを常に処理する必要はない。それよりシステム300は、配信不能割り込みの通知を生成するまたは配信不能割り込みを無視するように構成出来る。各APIC(例えば、APIC306、ローカルAPIC308、およびI/O APIC310 )には、1つ以上の本来の受信者にユーザレベル割り込みが配信出来ない場合に通知を生成する必要があるかを示す、配信失敗通知モードフィールドが含まれている。例えば、2ビットのフィールドを、表1で説明される3つの可能な状態をエンコードするために使用できる。
表1:模範的な配信失敗通知モードフィールドの可能な状態
Figure 2013502004
状態「全て」は、ユーザレベル割り込みの全ての目的受信者が明確に識別出来る場合にのみ使用される。全ての目的受信者は例えば、後述するように受取人グループのフィールドが1ビットで実装されていて、ユーザレベル割り込みの全ての目的受信者を識別する他のメカニズムがない場合には、明確に識別できない。より複雑な実装が可能である事に注意。例えば、より大きな配信失敗通知モードフィールドがあれば、配信不能なユーザレベルの通知が必要な、必須受信者のセットを指定する事が可能な実装、が可能である。
図3を再び参照して、システム300の少なくとも1つの実施形態では、ローカルAPIC306、ローカルAPIC308、および/またはI/O APIC310 は、ユーザレベル割り込みの1つ以上の受信者を設定する。各APICには、ユーザレベル割り込みの目的受信者を示す受信者グループフィールドが含まれている。このフィールドは1ビットだけで実装出来て、それによって受信者が1つだけあるか(個別のフィールド、例えば送信先フィールドにエンコードされた)、または送信者のドメインに関連する全てのスレッドが受信者であるか(すなわち、ブロードキャスト)を判断する。より複雑な実装は、送信者のドメインに関連する全てのスレッドのサブセット(であってよい受信者グループのための様々なビットエンコーディングを持つより大きなフィールドを含むすなわち、マルチキャスト)。
システム300の少なくとも1つの実施形態では、受信者グループフィールドおよび/または配信失敗通知モードフィールドはUICRレジスタの一部として含まれている。しかしながら、受信者グループおよび/または配信失敗通知モードの他の実施形態では、情報は別々のレジスタに格納される。システム300の少なくとも1つの実施形態では、それらの1つ以上のフィールドはUICRレジスタの一部であり、フィールドはアプリケーション・スレッドがユーザレベル割り込みを送信するたびに設定される。頻繁なフィールドの変更は、ユーザレベル割り込みの送信のオーバーヘッドを実質的に増加させる事があり、パフォーマンスに影響を与える。システム300の少なくとも1つの実施形態では、それらの1つ以上のフィールドは、1つ以上の別々のレジスタに実装され、事前に設定される。システム300の少なくとも1つの実施形態では、それらの1つ以上のフィールドのデフォルト値は、1つ以上の別々のレジスタに格納される。したがって送信者はそれらがデフォルト値と異なる場合、UICRにおいて値を設定するのみで良い。UICRレジスタへの更新メカニズムは全て、それらが別々のレジスタに含まれている場合、それらのフィールドを更新するために使える(例えば、MMIOを介して、またはMSRを経由して)。
システム300の少なくとも1つの実施形態では、ユーザレベル割り込みメッセージには、配信失敗通知ステータスフィールドと受信者グループフィールドが含まれる。配信失敗通知ステータスフィールドは、ユーザレベル割り込みのどの目的受信者が、ユーザレベル割り込みを受信しなかったかを示す。フィールドは、システムが複数の目的受信者のために配信失敗を通知するように構成されている場合に使用される(例えば、上記の全ての配信失敗通知モード)。システム300の少なくとも1つの実施形態では、配信失敗通知ステータスフィールドはそれ自体でレジスタとして実装される、または既存のステータス・レジスタの一部である事が出来る。システム300の少なくとも1つの実施形態では、"全て"通知モードでマルチキャストおよびブロードキャストのメカニズムをサポートするために、ACK応答はACK応答を送信するAPICの受信者識別子で拡張される。
システム300の少なくとも1つの実施形態では、ローカルAPIC306、ローカルAPIC308、および/またはI/O APIC310 は、ユニキャスト、マルチキャスト、およびブロードキャスト技法でユーザレベル割り込みメッセージを配信するように設定されている。これらの技法は、表2に記載されたアクションと一貫して動作するように実装できる。ユーザレベル割り込みメッセージは、当技法分野で既知のメッセージの配信技法、またはネットワーク内の任意のポイントから直接または間接的に受信者に到達出来る他の適当な配信メディアを使用して配布出来る事に注意が必要である。
表2:ユーザレベル割り込みメカニズムのさまざまな構成に関連するアクション
Figure 2013502004
システム300の少なくとも1つの実施形態では、システム300上で実行しているソフトウェアには、ユーザレベル割り込みをサポートする、少なくとも1つのシステム呼び出しが含まれている。表3は、ユーザレベル割り込みをサポートするための5つの模範的なシステム呼び出し、が含まれている。アプリケーション・スレッドのグループおよび/またはユーザレベル割り込みを交換するデバイス、を設定するために、システムはCreateDomain() コールを使用して割り込みドメインを作成する。これらのアプリケーション・スレッドおよび/またはデバイスはSubscribe() 呼び出しで割り込みドメインに参加し、そしてRegisterHandler() でユーザレベル割り込みハンドラを登録する。ユーザレベル割り込みがUICRへのストア動作によって送られる。ハンドラはUnregisterHandler() で登録解除される。アプリケーション・スレッドとデバイス(例えば、デバイスドライバを介して)はUnsubscribe() 呼び出しで割り込みドメインを離れる。
表3 ユーザレベル割り込みアプリケーション・プログラミング・インターフェース
Figure 2013502004
回路と物理構造は一般的に仮定されるが、現代の半導体設計と製造で物理的な構造や回路は、その後の設計、テストや製造の段階での使用に適したコンピュータ読み取り可能な記述形式で具現化出来る事はよく認識されている。模範的な構成では別々の部品として提示された構造や機能は複合構造やコンポーネントとして実装できる。本発明は、全て本明細書に記載され、そして添付の特許請求の範囲に定義されたような、回路、回路のシステム、関連する方法、およびこのような回路、システムや方法の、コンピュータ可読媒体のエンコーディング、を含むように意図されている。本明細書で使用される、コンピュータ可読媒体には少なくともディスク、テープ、またはその他の磁気、光、半導体(例えば、フラッシュメモリカード、ROM)が含まれる。
ここに記載された発明の説明は例示であり、次の請求項に記載の本発明の範囲を制限するものではない。例えば、本発明は、2つのコアを含む実施の形態で説明してきたが、当業者は本明細書の教示が追加のコアまたは他の処理ユニットを利用出来る事を理解するであろう。本明細書に開示された実施形態の変形および変更は、ここに記載された説明に基づいて、以下の請求項に記載の本発明の範囲および精神から逸脱する事なく行う事が出来る。

Claims (18)

  1. マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コアに対して、前記第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインおよび前記第一プロセッサ・コア上で実行している前記アプリケーション・スレッドの受信者識別子がユーザレベル割り込みメッセージにおける対応するフィールドに一致する場合に、前記ユーザレベル割り込みメッセージによって示されるユーザレベル割り込みを受け入れることと、
    前記ユーザレベル割り込みが他の受け入れられた割り込みよりも高い優先度および前記プロセッサ・コア上で実行しているアプリケーション・スレッドよりも高い優先順位を有する場合に前記ユーザレベル割り込みを処理すること、とを備える方法。
  2. 前記処理することは、ユーザレベル・インサービス・レジスタの状態を変更することと、ユーザレベル割り込みルーチンを実行することとを備え、
    前記実行することは、前記ユーザレベル割り込みメッセージにおけるベクタ番号およびユーザレベル割り込みディスクリプタ・テーブル・レジスタの内容に基づいてユーザレベル割り込みハンドラを呼び出すことと、前記ユーザレベル割り込みハンドラからプログラム・フローを戻すこととを備える請求項1に記載の方法。
  3. 前記第一プロセッサ・コアに関連するローカル割り込みコントローラは、前記複数のプロセッサ・コアの第二プロセッサ・コアに関連する個々のローカル割り込みコントローラ、および入力/出力割り込みコントローラの少なくとも一つから前記ユーザレベル割り込みメッセージを受信する請求項1に記載の方法。
  4. ユーザレベル割り込みはオペレーティング・システム割り込みより低い優先順位を有し、
    前記ユーザレベル割り込みはオペレーティング・システム割り込みを呼び出さずに処理される請求項1に記載の方法。
  5. 前記複数のプロセッサ・コアの第二プロセッサ・コアに対応するユーザレベル割り込み制御レジスタへ書き込むことにより前記ユーザレベル割り込みを生成することをさらに備え、前記ユーザレベル割り込み制御レジスタへ書き込むことは、
    前記ユーザレベル割り込み制御レジスタの送信先フィールドを設定することと、
    前記ユーザレベル割り込み制御レジスタの配信モードフィールドを設定することとを備える請求項1に記載の方法。
  6. 前記ユーザレベル割り込みは複数のプロセッサ・コアの第二プロセッサ・コア上で実行しているアプリケーション・スレッドによって発行され、
    前記ユーザレベル割り込みの配信不能状態を検出するとともにそれに基づいて前記第二のプロセッサ・コアへの割り込みをトリガすることをさらに備える請求項1に記載の方法。
  7. 割り込みドメイン識別子および割り込み受信者識別子とユーザレベル割り込みが前記第一プロセッサ・コア上で実行している受信者アプリケーション・スレッドに配信不能である事の表示とに少なくとも部分的に基づいて前記ユーザレベル割り込みを配信不能としてメールボックスに記録することと、
    受信者アプリケーション・スレッド状態が前記第一プロセッサ・コアに戻った後であって且つ前記受信者アプリケーション・スレッドを実行する前に前記メールボックスのエントリを処理することと、をさらに備える請求項1に記載の方法。
  8. メールボックスオーバーフローの通知に応答してオペレーティング・システムによって前記メールボックスのオーバーフローを処理することをさらに備え、メールボックスオーバーフローの前記通知は前記メールボックスが満杯な場合に配信不能として追加のユーザレベル割り込みを前記メールボックスに記録する試みに基づいている請求項7に記載の方法。
  9. 複数のユーザレベル割り込み配信設定のうちから選択されたユーザレベル割り込み配信設定に従って1つ以上の受信者に前記ユーザレベル割り込みメッセージを配信することをさらに備え、
    前記1つ以上の受信者は、前記複数のプロセッサ・コアの1つ以上のプロセッサ・コア上で実行している1つ以上のアプリケーション・スレッドに対応し、
    前記複数のユーザレベル割り込み配信設定は、ユニキャスト配信、前記複数のプロセッサ・コアのマルチ・プロセッサ・コアに対応するマルチ受信者へのマルチキャスト配信、および前記複数のプロセッサ・コアの他のプロセッサ・コアへのブロードキャスト配信を含む請求項1に記載の方法。
  10. 配信失敗の通知モード設定に従って、ユーザレベル割り込みメッセージの1つ以上の目的受信者へユーザレベル割り込みが配信不能である事のインジケータを生成することをさらに備え、前記インジケータはユーザレベル割り込みが配信不能である目的ユーザレベル割り込み受信者の数に少なくとも部分的に基づいている請求項9の方法。
  11. マルチコア・システムにおける複数のプロセッサ・コアの第一プロセッサ・コアに対応するローカル割り込みコントローラを備える装置であって、
    前記ローカル割り込みコントローラは、
    前記第一プロセッサ・コア上で実行しているアプリケーション・スレッドの割り込みドメインのインジケータを格納する動作が可能な割り込みドメイン識別子状態要素と、
    前記第一プロセッサ・コア上で実行しているアプリケーション・スレッドのインジケータを格納する動作が可能な受信者識別子状態要素と、を備え、
    前記ローカル割り込みコントローラは、前記割り込みドメイン識別子と前記受信者識別子の状態要素の内容に基づいて、少なくとも部分的にユーザレベル割り込みを処理する動作が可能であり、
    前記ローカル割り込みコントローラは、前記割り込みドメイン識別子状態要素と前記受信者識別子状態要素の内容に基づいて、割り込みメッセージを生成する動作が可能である装置。
  12. 前記ローカル割り込みコントローラはさらに、
    前記ローカル割り込みコントローラのユーザレベル割り込み構成を示すユーザレベル割り込み制御状態要素と、
    ユーザレベル割り込みの肯定応答を示すユーザレベルインサービス状態要素と、
    ユーザレベル割り込みの保留中肯定応答を示すユーザレベル割り込み要求状態要素と、を備える請求項11に記載の装置。
  13. 少なくとも一つのユーザレベル割り込みハンドラと、
    ユーザレベル割り込みディスクリプタ・テーブルと、
    ユーザレベル割り込みディスクリプタ・テーブル・レジスタと、をさらに備え、
    前記少なくとも一つのユーザレベル割り込みハンドラは、前記ユーザレベル割り込みディスクリプタ・テーブル・レジスタの内容に応じて前記ユーザレベル割り込みディスクリプタ・テーブルからアクセス可能である請求項11に記載の装置。
  14. 前記ローカル割り込みコントローラは、割り込みリダイレクション・テーブルを含む別の個々のローカル割り込みコントローラおよび入力/出力割り込みコントローラの少なくとも1つからユーザレベル割り込みを受信する動作が可能であり、前記割り込みリダイレクション・テーブルは割り込みドメイン識別子を含み、
    前記ローカル割り込みコントローラは、受信した前記ユーザレベル割り込みを前記個々のローカル割り込みコントローラが受け入れたかのインジケータを提供する動作が可能であり、
    前記ローカル割り込みコントローラは、受信割り込みメッセージにおける配信モードフィールドがユーザレベル割り込みコードを示す場合、受信割り込みメッセージにおける送信先インジケータを受信者識別子格納場所の内容と比較し、前記受信割り込みメッセージにおける割り込みドメイン識別子を割り込みドメイン識別子格納場所の内容と比較する動作が可能な請求項11に記載の装置。
  15. 前記第一プロセッサ・コアに対応するメールボックスルート記憶要素と、
    配信不能ユーザレベル割り込みメッセージを格納する動作が可能であると共に前記メールボックスルート記憶要素、割り込みドメイン識別子および割り込み受信者識別子の内容に従って前記第一プロセッサ・コアによってアクセス可能なメールボックスストレージ構造と、をさらに備え、
    前記第一プロセッサ・コアは、前記メールボックスルート記憶要素に従ってアクセス可能なメールボックス・テーブルに格納されている対応するメールボックス・ディスクリプタに基づいて前記メールボックスストレージ構造内に配信不能ユーザレベル割り込みメッセージを格納する動作が可能である請求項11に記載に記載の装置。
  16. 前記メールボックスルートストレージ要素の内容に従ってアクセス可能なメールボックス・テーブルをさらに備え、
    前記メールボックス・テーブルは前記複数のプロセッサ・コアによって共有されるメモリ空間内に存在し、
    前記メールボックス・テーブルは、ルートテーブルと少なくとも1つの受信者メールボックス・ポインタ・テーブルとを備える階層的なテーブルのセットを備え、前記ルートテーブルは割り込みドメイン識別子を受信者メールボックス・ポインタテーブルに関連付ける請求項15に記載の装置。
  17. 前記ローカル割り込みコントローラはさらに配信失敗通知モード状態要素を備え、前記ローカル割り込みコントローラは、前記配信失敗の通知モード状態要素の内容に従って、前記配信失敗通知モード状態要素の前記内容のインジケータを含むユーザレベル割り込みメッセージ、および配信不能ユーザレベル割り込みのための配信失敗通知の少なくとも一つを生成する動作が可能である請求項11に記載の装置。
  18. 前記ローカル割り込みコントローラは、1つ以上の受信者からの応答を収集する動作が可能であるとともに、前記1つ以上の受信者から収集された前記応答に応じて割り込み動作を処理するように設定されている請求項11に記載の装置。
JP2012524751A 2009-08-14 2010-08-05 マルチコア・アーキテクチャのためのユーザレベル割り込み機構 Active JP5646628B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US23398309P 2009-08-14 2009-08-14
US61/233,983 2009-08-14
US12/633,032 2009-12-08
US12/633,032 US8356130B2 (en) 2009-08-14 2009-12-08 Mechanism for recording undeliverable user-level interrupts
US12/633,007 US8255603B2 (en) 2009-08-14 2009-12-08 User-level interrupt mechanism for multi-core architectures
US12/633,034 2009-12-08
US12/633,007 2009-12-08
US12/633,034 US8285904B2 (en) 2009-08-14 2009-12-08 Flexible notification mechanism for user-level interrupts
PCT/US2010/044528 WO2011019578A1 (en) 2009-08-14 2010-08-05 User-level interrupt mechanism for multi-core architectures

Publications (2)

Publication Number Publication Date
JP2013502004A true JP2013502004A (ja) 2013-01-17
JP5646628B2 JP5646628B2 (ja) 2014-12-24

Family

ID=43589266

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012524751A Active JP5646628B2 (ja) 2009-08-14 2010-08-05 マルチコア・アーキテクチャのためのユーザレベル割り込み機構

Country Status (7)

Country Link
US (3) US8255603B2 (ja)
EP (1) EP2465032B1 (ja)
JP (1) JP5646628B2 (ja)
KR (1) KR101651246B1 (ja)
CN (1) CN102483705B (ja)
IN (1) IN2012DN02104A (ja)
WO (1) WO2011019578A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020021745A1 (ja) * 2018-07-24 2020-01-30 三菱電機株式会社 割込み処理方法、コンピュータシステムおよびプログラム製品

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032128B2 (en) * 2008-04-28 2015-05-12 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared memory multi-processor systems
US8255603B2 (en) * 2009-08-14 2012-08-28 Advanced Micro Devices, Inc. User-level interrupt mechanism for multi-core architectures
US8566492B2 (en) 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US9652365B2 (en) * 2010-08-24 2017-05-16 Red Hat, Inc. Fault configuration using a registered list of controllers
KR101717494B1 (ko) * 2010-10-08 2017-03-28 삼성전자주식회사 인터럽트 처리 장치 및 방법
CN103582877B (zh) 2010-12-15 2015-09-23 超威半导体公司 计算机系统中断处理
US20120158631A1 (en) * 2010-12-15 2012-06-21 Scientific Conservation, Inc. Analyzing inputs to an artificial neural network
WO2013057769A1 (ja) * 2011-10-20 2013-04-25 富士通株式会社 情報処理装置、情報処理装置の制御方法および制御プログラム
CN102520916B (zh) * 2011-11-28 2015-02-11 深圳中微电科技有限公司 在mvp处理器中消除纹理延迟和寄存器管理的方法
US9552313B2 (en) * 2011-12-28 2017-01-24 Intel Corporation Delivering real time interrupts with an advanced programmable interrupt controller
KR101331957B1 (ko) * 2012-01-11 2013-11-21 엘아이지넥스원 주식회사 범용 운영체제의 실시간성 쓰레드 처리를 위한 커널 구성 방법
US9785133B2 (en) * 2012-02-10 2017-10-10 Fisher-Rosemount Systems, Inc. Methods for collaboratively assisting a control room operator
US8849731B2 (en) * 2012-02-23 2014-09-30 Microsoft Corporation Content pre-fetching for computing devices
US9043522B2 (en) * 2012-10-17 2015-05-26 Arm Limited Handling interrupts in a multi-processor system
US9208113B2 (en) 2013-01-15 2015-12-08 Apple Inc. Deferred inter-processor interrupts
US9594704B1 (en) 2013-12-17 2017-03-14 Google Inc. User mode interrupts
US9495311B1 (en) * 2013-12-17 2016-11-15 Google Inc. Red zone avoidance for user mode interrupts
US9674141B2 (en) * 2013-12-27 2017-06-06 Intel Corporation Techniques for implementing a secure mailbox in resource-constrained embedded systems
US9563588B1 (en) 2014-01-29 2017-02-07 Google Inc. OS bypass inter-processor interrupt delivery mechanism
US9542254B2 (en) 2014-07-30 2017-01-10 International Business Machines Corporation Application-level signal handling and application-level memory protection
US9665509B2 (en) * 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
WO2016048669A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Apparatus and method for configuring sets of interrupts
US9910699B2 (en) 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
US9928094B2 (en) * 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
US9921984B2 (en) * 2014-12-23 2018-03-20 Intel Corporation Delivering interrupts to user-level applications
US10002102B2 (en) * 2015-03-13 2018-06-19 Microchip Technology Incorporated Low-pin microcontroller device with multiple independent microcontrollers
US10002103B2 (en) * 2015-03-13 2018-06-19 Microchip Technology Incorporated Low-pin microcontroller device with multiple independent microcontrollers
US10922252B2 (en) * 2015-06-22 2021-02-16 Qualcomm Incorporated Extended message signaled interrupts (MSI) message data
CN105094976A (zh) * 2015-10-09 2015-11-25 天津国芯科技有限公司 一种中断控制方法和中断控制器
CN105808338A (zh) * 2016-03-17 2016-07-27 李晓波 一种在处理中实现中断响应核可配置的方法及装置
CN107800546B (zh) * 2016-08-31 2021-03-30 华为技术有限公司 一种广播消息的管理方法及装置
US10496572B1 (en) 2017-03-06 2019-12-03 Apple Inc. Intracluster and intercluster interprocessor interrupts including a retract interrupt that causes a previous interrupt to be canceled
US10467162B2 (en) * 2017-03-31 2019-11-05 Hewlett Packard Enterprise Development Lp Interrupt based on a last interrupt request indicator and a work acknowledgement
US10838760B2 (en) * 2017-11-29 2020-11-17 Nxp Usa, Inc. Systems and methods for interrupt distribution
TWI680375B (zh) 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US11182208B2 (en) 2019-06-29 2021-11-23 Intel Corporation Core-to-core start “offload” instruction(s)
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction
US11366769B1 (en) * 2021-02-25 2022-06-21 Microsoft Technology Licensing, Llc Enabling peripheral device messaging via application portals in processor-based devices
US20230099517A1 (en) * 2021-09-30 2023-03-30 Intel Corporation User-level interprocessor interrupts

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189252A (ja) * 1992-01-13 1993-07-30 Meidensha Corp ソフトウェアのイベント処理方法
JP2005190207A (ja) * 2003-12-25 2005-07-14 Matsushita Electric Ind Co Ltd 割り込み制御装置、制御方法
JP2010538373A (ja) * 2007-09-06 2010-12-09 インテル・コーポレーション クラスタidとイントラクラスタidとを有する論理apicidの作成

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909582A (en) * 1996-04-26 1999-06-01 Nec Corporation Microcomputer having user mode interrupt function and supervisor mode interrupt function
US6061709A (en) 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
US6370606B1 (en) * 1998-11-05 2002-04-09 Compaq Computer Corporation System and method for simulating hardware interrupts in a multiprocessor computer system
US6148361A (en) * 1998-12-17 2000-11-14 International Business Machines Corporation Interrupt architecture for a non-uniform memory access (NUMA) data processing system
JP4057769B2 (ja) * 2000-08-31 2008-03-05 松下電器産業株式会社 割り込み管理装置及び割り込み管理方法
US7529235B2 (en) * 2000-12-06 2009-05-05 Franklin Zhigang Zhang Internet based time distributed message network system and personal mobile access device
US7392282B2 (en) * 2001-03-14 2008-06-24 International Business Machines Corporation Method for ensuring client access to messages from a server
GB0404696D0 (en) * 2004-03-02 2004-04-07 Level 5 Networks Ltd Dual driver interface
US7080179B1 (en) * 2004-03-26 2006-07-18 Foundry Networks, Inc. Multi-level interrupts
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7689747B2 (en) * 2005-03-28 2010-03-30 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources
US7581051B2 (en) * 2005-05-16 2009-08-25 Microsoft Corporation Method for delivering interrupts to user mode drivers
US20070073928A1 (en) * 2005-09-26 2007-03-29 John Bruno High-speed input/output signaling mechanism using a polling CPU and cache coherency signaling
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US8103816B2 (en) * 2008-10-28 2012-01-24 Intel Corporation Technique for communicating interrupts in a computer system
US8255603B2 (en) * 2009-08-14 2012-08-28 Advanced Micro Devices, Inc. User-level interrupt mechanism for multi-core architectures

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189252A (ja) * 1992-01-13 1993-07-30 Meidensha Corp ソフトウェアのイベント処理方法
JP2005190207A (ja) * 2003-12-25 2005-07-14 Matsushita Electric Ind Co Ltd 割り込み制御装置、制御方法
JP2010538373A (ja) * 2007-09-06 2010-12-09 インテル・コーポレーション クラスタidとイントラクラスタidとを有する論理apicidの作成

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020021745A1 (ja) * 2018-07-24 2020-01-30 三菱電機株式会社 割込み処理方法、コンピュータシステムおよびプログラム製品
US11687366B2 (en) 2018-07-24 2023-06-27 Mitsubishi Electric Corporation Interrupt handling method, computer system, and non-transitory storage medium that resumes waiting threads in response to interrupt signals from I/O devices

Also Published As

Publication number Publication date
US8356130B2 (en) 2013-01-15
IN2012DN02104A (ja) 2015-08-21
WO2011019578A1 (en) 2011-02-17
JP5646628B2 (ja) 2014-12-24
EP2465032A1 (en) 2012-06-20
KR20120062768A (ko) 2012-06-14
US20110040914A1 (en) 2011-02-17
KR101651246B1 (ko) 2016-09-05
US8255603B2 (en) 2012-08-28
US20110040913A1 (en) 2011-02-17
CN102483705A (zh) 2012-05-30
EP2465032B1 (en) 2020-12-16
US8285904B2 (en) 2012-10-09
US20110040915A1 (en) 2011-02-17
CN102483705B (zh) 2014-12-17

Similar Documents

Publication Publication Date Title
JP5646628B2 (ja) マルチコア・アーキテクチャのためのユーザレベル割り込み機構
US7562366B2 (en) Transmit completion event batching
US7610413B2 (en) Queue depth management for communication between host and peripheral device
JP3606551B2 (ja) 割込アーキテクチャを含むデータ処理システム、方法および記憶媒体
EP1856623B1 (en) Including descriptor queue empty events in completion events
US7260663B2 (en) System and method for presenting interrupts
US11074205B2 (en) Managing efficient selection of a particular processor thread for handling an interrupt
US7640549B2 (en) System and method for efficiently exchanging data among processes
US20180183733A1 (en) Receive buffer architecture method and apparatus
EP2383658B1 (en) Queue depth management for communication between host and peripheral device
US10229074B2 (en) Techniques for handling interrupts in a processing unit using interrupt request queues
US11645215B2 (en) Efficient selection of a particular processor thread for handling an interrupt
WO2017135950A1 (en) Memory register interrupt based signaling and messaging

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646628

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250