(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-10
(45)【発行日】2024-01-18
(54)【発明の名称】割込みコントローラ
(51)【国際特許分類】
G06F 9/48 20060101AFI20240111BHJP
G06F 9/455 20180101ALI20240111BHJP
【FI】
G06F9/48 110F
G06F9/455 150
(21)【出願番号】P 2020563922
(86)(22)【出願日】2019-05-01
(86)【国際出願番号】 GB2019051211
(87)【国際公開番号】W WO2019224515
(87)【国際公開日】2019-11-28
【審査請求日】2022-04-25
(32)【優先日】2018-05-24
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ヘイ、ティモシー ニコラス
(72)【発明者】
【氏名】ウェイドマン、マーティン
(72)【発明者】
【氏名】ケネディー、マイケル アレクサンダー
(72)【発明者】
【氏名】ターナー、アンドリュー ジョン
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2016/0124771(US,A1)
【文献】米国特許出願公開第2005/0080965(US,A1)
【文献】米国特許第05717932(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
処理要素に割込み要求を発行する発行回路と、
発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態の存在を検出することと、前記競合状態が解決されたときにバリア・インジケータを設定することとを行うための制御回路と
を備え
、
前記競合状態が存在することに応答して、前記発行回路が、前記少なくとも1つの保留中の割込み要求のうちの1つを選択することと、前記選択された保留中の割込み要求に続い
てダミー要求を
、前記処理要素が前記ダミー要求を受信する前に前記選択された保留中の割込み要求を受信することを確実にするパスを介して前記処理要素に発
行することと、前記処理要素が前記ダミー要求を受信したことを示す確認応答を受信することとを行うように構成され、
前記確認応答に応答して、前記制御回路が前記バリア・インジケータを設定するように構成されている、割込みコントローラ。
【請求項2】
前記処理要素が前記選択された保留中の割込み要求を受信すると、前記割込みコントローラが採用されているシステムのコンポーネントの動作を実施したい場合に、前記競合状態が発生する、請求項1に記載の割込みコントローラ。
【請求項3】
前記制御回路が、前記競合状態が存在するかどうかを決定するため
のシステム状態情報を監視する監視回路を備える、請求項2に記載の割込みコントローラ。
【請求項4】
前記制御回路が、前記システム状態情報及び前記少なくとも1つの保留中の割込み要求に基づいて、前記競合状態が存在するかどうかを決定するために配置されている、請求項3に記載の割込みコントローラ。
【請求項5】
前記バリア・インジケータを設定することにより
、前記競合状態が解決されたことが
前記コンポーネントに通知されるように、前記バリア・インジケータを記憶するためのインジケータ・ストレージをさらに備える、請求項2から4までのいずれか一項に記載の割込みコントローラ。
【請求項6】
前記システムの前記コンポーネントが前記処理要素である、請求項2から5までのいずれか一項に記載の割込みコントローラ。
【請求項7】
前記処理要素の前記動作が、前記選択された保留中の割込み要求の受信後に
要求された関連付けられるデータ処理動作を実施するための1つ又は複数のプログラム命令の実行を含む、請求項2から6までのいずれか一項に記載の割込みコントローラ。
【請求項8】
前記処理要素が、ハイパーバイザの制御下で複数のオペレーティング・システムを採用するように構成され、任意の時点で、前記オペレーティング・システムのうちの1つが前記処理要素の常駐オペレーティング・システムであり、
前記少なくとも1つの保留中の割込み要求のターゲット・オペレーティング・システムが前記常駐オペレーティング・システム以外の場合に前記競合状態が発生し、前記1つ又は複数の命令が前記ターゲット・オペレーティング・システムの前記制御下で実行され、
前記制御回路が、前記競合状態が存在する場合、前記ハイパーバイザに前記ターゲット・オペレーティング・システムを前記常駐オペレーティング・システムにさせるために前記処理要素に切替え要求を送るように構成されている、請求項7に記載の割込みコントローラ。
【請求項9】
前記割込みコントローラが、前記ハイパーバイザが前記ターゲット・オペレーティング・システムを前記常駐オペレーティング・システムにしたことを示す応答インジケータを受信することと、前記応答インジケータの受信後に、前記選択した保留中の割込み要求の後に前記ダミー要求を発行することとを行うように構成されている、請求項8に記載の割込みコントローラ。
【請求項10】
前記制御回路が、前記ターゲット・オペレーティング・システムによる前記1つ又は複数のプログラム命令の実行が実施され得ることを示すために、前記確認応答に応答して前記バリア・インジケータを設定するように構成されている、請求項9に記載の割込みコントローラ。
【請求項11】
前記処理要素にアクセス可能な常駐レジスタをさらに備え、前記処理要素が、前記常駐レジスタ内に前記応答インジケータを設定するように配置され、前記制御回路が、前記応答インジケータ
が前記常駐レジスタ内に設定されたかどうかを決定するために前記常駐レジスタを監視するように構成されている、請求項10に記載の割込みコントローラ。
【請求項12】
前記パスが、
前記パスに沿った前記処理要素への送信の間に、前記選択された保留中の割込み要求
及び前記ダミー要求の再順序付けを
防止する、請求項1から11までのいずれか一項に記載の割込みコントローラ。
【請求項13】
前記発行回路が、割込み要求の識別子を備えるクリア割込み要求を発行するように構成され、前記クリア割込み要求が、識別された割込み要求がもはや実行される必要がないことを示し、
前記ダミー要求が、クリアされるべき前記割込み要求の偽の識別子を備える
ダミークリア割込み要求
を含み、前記偽の識別子が、既存の割込み要求を識別しない、請求項1から12までのいずれか一項に記載の割込みコントローラ。
【請求項14】
処理要素に割込み要求を発行するための発行手段と、
発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態の存在を検出することと、前記競合状態が解決されたときにバリア・インジケータを設定することとを行うための制御手段と
を備え、
前記競合状態が存在することに応答して、前記発行手段が、前記少なくとも1つの保留中の割込み要求のうちの1つを選択することと、前記選択された保留中の割込み要求に続い
てダミー要求を
、前記処理要素が前記ダミー要求を受信する前に前記選択された保留中の割込み要求を受信することを確実にするパスを介して前記処理要素に発
行することと、前記処理要素が前記ダミー要求を受信したことを示す確認応答を受信することとを行うように構成され、
前記確認応答に応答して、前記制御手段が前記バリア・インジケータを設定するように構成されている、割込みコントローラ。
【請求項15】
発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態を検出するステップと、
前記競合状態が存在することに応答して、前記少なくとも1つの保留中の割込み要求のうちの1つを選択するステップと、
前記選択された保留中の割込み要求に続い
てダミー要求
を処理要素に
、前記処理要素が前記ダミー要求を受信する前に前記選択された保留中の割込み要求を受信することを確実にするパスを介して発
行するステップと、
前記処理要素が前記ダミー要求を受信したことを示す確認応答を受信するステップと、
前記競合状態が解決されたことを示すために、前記確認応答に応じてバリア・インジケータを設定するステップと
を含む、処理要素に割込み要求を発行するための方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技法はデータ処理に関する。より具体的には、本技法は、割込みコントローラに関する。
【背景技術】
【0002】
処理要素に割込み要求を発行するために、割込みコントローラが提供され得る。
【発明の概要】
【課題を解決するための手段】
【0003】
1つの実例では、本技法は、処理要素に割込み要求を発行する発行回路と、発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態の存在を検出することと、競合状態が解決されたときにバリア・インジケータを設定することとを行うための制御回路とを備え、競合状態が存在することに応答して、発行回路が、少なくとも1つの保留中の割込み要求のうちの1つを選択することと、選択された保留中の割込み要求に続いてパスを介してダミー要求を処理要素に発行し、ダミー要求を受信する前に処理要素が選択された保留中の割込み要求を受信することを確実にすることと、処理要素がダミー要求を受信したことを示す確認応答を受信することとを行うように構成され、確認応答に応答して、制御回路がバリア・インジケータを設定するように構成される、割込みコントローラを提供する。
【0004】
別の実例では、本技法は、処理要素に割込み要求を発行するための発行手段と、発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態の存在を検出することと、競合状態が解決されたときにバリア・インジケータを設定することとを行うための制御手段とを備え、競合状態が存在することに応答して、発行手段が、少なくとも1つの保留中の割込み要求のうちの1つを選択することと、選択された保留中の割込み要求に続いてパスを介してダミー要求を処理要素に発行し、ダミー要求を受信する前に処理要素が選択された保留中の割込み要求を受信することを確実にすることと、処理要素がダミー要求を受信したことを示す確認応答を受信することとを行うように構成され、確認応答に応答して、制御手段がバリア・インジケータを設定するように構成される、割込みコントローラを提供する。
【0005】
別の実例では、本技法は、発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態を検出するステップと、競合状態が存在することに応答して、少なくとも1つの保留中の割込み要求のうちの1つを選択するステップと、選択された保留中の割込み要求に続いてパスを介してダミー要求を処理要素に発行し、ダミー要求を受信する前に処理要素が選択された保留中の割込み要求を受信することを確実にするステップと、処理要素がダミー要求を受信したことを示す確認応答を受信するステップと、競合状態が解決されたことを示すために、確認応答に応じてバリア・インジケータを設定するステップとを含む、処理要素に割込み要求を発行するための方法を提供する。
【0006】
本技法は、添付の図面に示されているようなその実例を参照して、例示のみによってさらに説明される。
【図面の簡単な説明】
【0007】
【
図1】本技法による、割込みコントローラの1つの実例を示す図である。
【
図2】ハイパーバイザの制御下でゲスト・オペレーティング・システムを採用する処理要素の割込み要求を扱うように配置された本技法による割込みコントローラの別の実例を示す図である。
【
図3】本技法の実例による、割込みコントローラの常駐レジスタのフィールドを示す図である。
【
図4】本技法の実例による、割込み要求を扱うための方法を示す図である。
【
図5】本技法の実例による、割込みコントローラに結合された処理要素によって実施される方法を示す図である。
【
図6A】本技法の実例による割込みコントローラが、あるゲスト・オペレーティング・システムからターゲット・ゲスト・オペレーティング・システムへの切替えを開始するときに常駐レジスタにおいて発生する一連のビット・フィールド遷移を示す図である。
【
図6B】処理要素のハイパーバイザが、あるゲスト・オペレーティング・システムから別のゲスト・オペレーティング・システムに切り替わるときに発生し得る別の一連のビット・フィールド遷移を示す図である。
【
図7】ゲート可能な相互接続を介して複数の処理要素に結合された本技法の実例による割込みコントローラの別の実例を示す図である。
【発明を実施するための形態】
【0008】
本明細書で説明する少なくとも1つの実例は、処理要素に割込み要求を発行する発行回路と、発行される少なくとも1つの保留中の割込み要求に関連付けられる競合状態の存在を検出することと、競合状態が解決されたときにバリア・インジケータを設定することとを行うための制御回路とを備え、競合状態が存在することに応答して、発行回路が、少なくとも1つの保留中の割込み要求のうちの1つを選択することと、選択された保留中の割込み要求に続いてパスを介してダミー要求を処理要素に発行し、ダミー要求を受信する前に処理要素が選択された保留中の割込み要求を受信することを確実にすることと、処理要素がダミー要求を受信したことを示す確認応答を受信することとを行うように構成され、確認応答に応答して、制御回路がバリア・インジケータを設定するように構成される、割込みコントローラを提供する。
【0009】
状況によっては、保留中の割込み要求がその処理要素によって受信された後まで、処理要素内の特定の処理イベントが発生しないようにすることを求めることが望ましい場合がある。たとえば、割込みコントローラにおける割込み要求の出現に続いて、その割込み要求が関連する処理要素に配信される前に発生した場合、割込み要求の処理を禁止する、又は遅延させる、様々な処理イベントが発生する可能性がある。本技法は、選択された割込み要求に続くダミー要求の発行が、特定の割込み要求がいつその宛先に到着したかを選択的に決定する効率的な方法を提供することを認識する。次に、これに基づいてバリア・インジケータを設定することができ、通常なら割込み要求の処理が禁止又は遅延された任意の処理イベントを、バリア・インジケータが設定されるまで遅延させることができるようになる。
【0010】
知られているシステムでは、割込みコントローラが処理要素に割込み要求を発行するとき、その処理要素は、それが処理要素によって受信されたときに割込み要求を確認するように構成されていない場合がある。たとえば、多くの場合、確認応答が発行される範囲で、処理要素が少なくとも割込み要求の扱いを開始した後にのみ発行され、したがって、そのような確認応答のタイミングは、割込み要求が受信されたタイミングに比べて大幅に変動する可能性がある。したがって、これは、割込み要求が処理要素によって受信されたとき、割込みコントローラが効果的に推論することを困難にする。
【0011】
しかしながら、割込み要求の多くにとって、割込みがいつ受信されたかを割込みコントローラが知る必要はないため、割込みコントローラから受信したすべての割込み要求の受信を確認するために処理要素が確認応答を返すという要件を追加の制約として追加することは不適切であり、そのため、処理要素は、すべての割込み要求の受信を確認することによって、時間と処理能力を浪費する可能性があり得る。これにより、割込みコントローラと処理要素との間のトラフィックも増加し、帯域幅が減少し、優先度の高い割込み及びアプリケーションにとって望ましくないレイテンシが増加する。
【0012】
しかしながら、本発明者らは、ダミー要求の即時の確認応答を引き起こすダミー要求を処理要素に送ることが可能であった点に留意した。選択された保留中の割込み要求の発行の直後にダミー要求が続くように配置することによって、選択された保留中の割込み要求の受信を推測するために、ダミー要求に対して受信された確認応答を使用することができ、したがって、選択された保留中の割込み要求が受信された時間の正確な表示を提供する。その時点でバリア・インジケータを設定することによって、対象の割込み要求が処理要素によって受信された後までそのような処理イベントが発生しないことを確実にするために、対象の割込み要求の受信と特定の処理イベントの実施との間にバリアを挿入することが可能である。
【0013】
いくつかの実例では、処理要素が選択された保留中の割込み要求を受信すると、割込みコントローラが採用されているシステムのコンポーネントの動作を実施したい場合に、競合状態が発生する。したがって、処理要素による割込み要求の受信とコンポーネントの動作との間にバリアを効果的に挿入することができ、その結果、動作は、割込み要求が受信されるまで実施されない。このようなバリアの実装形態は、様々な状況において役立ち、その実例については、後で説明する。いずれにしても、本技法は、割込み要求が受信される前に実施された場合、動作が割込み要求の処理に悪影響を与える可能性がある任意の状況において有利であり、本明細書で説明する技法を使用することによって、割込み要求が少なくとも処理要素によって受信されるまで、動作が実施されないことを確実にすることができる。
【0014】
いくつかの実例では、制御回路は、競合状態が存在するかどうかを決定するために、システム状態情報を監視する監視回路を備える。選択された保留中の割込み要求の正しい処理は、システムにおける他の要素によって実施される動作と同様に、処理要素の動作に依存し得る。したがって、システム状態を監視するように割込みコントローラを配置すると、様々な状況でバリアを設定することができるようになる。割込み要求の選択、発行、及び処理は、システム内の他のイベントに依存しない、比較的分離された一連の動作であると通常予想されるため、これは直観に反している。しかしながら、本技法は、これが常に当てはまるわけではないことを認識している。たとえば、割込み要求を選択して発行するプロセスは比較的長くなる可能性があり、(たとえば、次に選択されるべき割込み要求を決定するために保留中の割込み要求の記録を検索するのにかかる時間のため)、この間、選択した割込み要求の処理を不利に妨害する他のイベントが発生し得る。
【0015】
純粋に1つの特定の実例として、システム状態情報は、特定の割込み要求のターゲット・オペレーティング・システムがCPU(central processing unit)に常駐していないため、現在割込み要求を扱う立場にないことを示し得る。別の実例として、状態情報は、ゲーティング・コントローラが処理要素へのパスをクロック・ゲートしたいことを示し得、したがって、ゲーティングが発生する前に処理要素によって割込み要求が受信されることが望ましい。
【0016】
いくつかの実例では、制御回路は、システム状態情報及び少なくとも1つの保留中の割込み要求に基づいて、競合状態が存在するかどうかを決定する。したがって、システム状態情報に加えて、保留中の少なくとも1つの割込み要求も、競合状態の原因と見なすことができる。これは、様々な場合に適しており、たとえば、処理要素を少なくとも1つの保留中の割込み要求を受信できる状態にするためのステップは、処理の開始を引き起こし、これによりコンポーネントの前述の動作が実施される可能性がある。本技法は、処理要素が選択されている保留中の割込み要求を扱うことができるようにするために実施される予備動作が、正しく制御されない場合、選択された保留中の割込み要求の処理に悪影響を及ぼす可能性があることを認識し、上述の技法は、バリアを挿入することによってその可能性を軽減するために使用することができ、その結果、選択された割込み要求が処理要素によって受信されるまで、上述の悪影響をもたらす可能性のある動作の実施が延期される。
【0017】
いくつかの実例では、割込みコントローラは、バリア・インジケータを設定することによりコンポーネントに競合状態が解決されたことが通知されるように、バリア・インジケータを記憶するためのインジケータ・ストレージをさらに備える。したがって、割込みコントローラは、競合状態が解決され、今は動作を実施することができることをコンポーネントに明示的に示す必要はない。代わりに、インジケータ・ストレージに単に表示するだけで十分であり、これにより、割込みコントローラに必要な処理を減らすことができる。
【0018】
いくつかの実例では、選択された保留中の割込み要求が受信されるまで1つ又は複数の動作が延期されるシステムのコンポーネントは、実際には選択された保留中の割込み要求を受信する処理要素である。
【0019】
いくつかの実例では、延期することが望まれる処理要素の動作は、所与の割込み要求の受信後に必要な関連付けられるデータ処理動作を実施するための1つ又は複数のプログラム命令の実行を含む。本技法は、処理要素によって割込み要求が扱われる方法が、データ処理動作が実施されるときに割込み要求が受信されるかどうかに依存することを認識し、割込み要求が効率的及び/又は正しく扱われるためには、データ処理動作が、割込み要求が受信された後にのみ実施されることが望ましい。
【0020】
いくつかの実例では、処理要素は、ハイパーバイザの制御下で複数のオペレーティング・システムを採用するように構成され、任意の時点で、それらのオペレーティング・システムのうちの1つが処理要素の常駐オペレーティング・システムである。次いで、少なくとも1つの保留中の割込み要求のターゲット・オペレーティング・システムが常駐オペレーティング・システム以外の場合に競合状態が発生し得、1つ又は複数の命令がターゲット・オペレーティング・システムの制御下で実行される。制御回路は、競合状態が存在する場合、ハイパーバイザにターゲット・オペレーティング・システムを常駐オペレーティング・システムにさせるために処理要素に切替え要求を送るように構成され得る。オペレーティング・システム間の切替えのコストは通常、比較的高くなる。したがって、割込み要求が対象のオペレーティング・システムをターゲットとしており、その割込み要求が処理されるためにそのオペレーティング・システムに対して切替えが実施される必要がある場合、割込み要求は実際に切替えの後に処理されることが望ましい。しかしながら、割込みコントローラが切替え要求を送信することによって切替えを開始するのと、割込みコントローラが選択された保留中の割込み要求を発行するのとの間の時間は、選択された保留中の割込み要求を見つけるために保留中の割込み要求を検索するのにかかる時間のため、比較的長くなる可能性がある。制御されていない場合、処理要素は、ターゲット・オペレーティング・システムの制御下で1つ又は複数の命令の実行を完了し、保留中の割込み要求がそれらの命令が実行されるまでに受信されなかったため、別のオペレーティング・システムに切り替えることを決定し得る。その結果、選択した割込み要求が処理要素によって処理されるために利用可能である場合、ターゲット・オペレーティング・システムがもはや常駐していないため、処理することはできない。したがって、割込みコントローラが割込み要求が処理要素によって受信されたと決定するまで、処理要素による1つ又は複数のプログラム命令の実行を遅延させることができるので、本技法はこの配置に特によく適している。
【0021】
いくつかの実例では、割込みコントローラは、ハイパーバイザがターゲット・オペレーティング・システムを常駐オペレーティング・システムにしたことを示す応答インジケータを受信することと、応答インジケータの受信後に、選択した保留中の割込み要求の後にダミー要求を発行することとを行うように構成される。これは、ターゲットのオペレーティング・システムが処理要素に常駐していることがわかっている場合に、選択した保留中の割込み要求が発行されることを可能にすることと、選択した保留中の割込み要求があまりにもすぐに送られる可能性を回避することとを行うが、割込みコントローラが保留中の割込み要求を選択して発行することが安全であることを認識する前に、任意の過度の遅延を回避することを行うためのシンプルで効果的なメカニズムを提供する。
【0022】
いくつかの実例では、割込みコントローラは、ターゲット・オペレーティング・システムによる1つ又は複数のプログラム命令の実行が実施され得ることができることを示すために、確認応答に応答してバリア・インジケータを設定するように構成される。これにより、通常なら選択された保留中の割込み要求の適切な処理を妨げる可能性がある1つ又は複数のプログラム命令の実行が、処理要素が選択された保留中の割込み要求を受信したことが確認されるまで遅延されることを確実にするためのシンプルで効果的なメカニズムが提供される。
【0023】
いくつかの実例では、割込みコントローラは、処理要素にアクセス可能な常駐レジスタをさらに備え、処理要素は、常駐レジスタ内に応答インジケータを設定するように配置され、制御回路は、応答インジケータについて常駐レジスタを監視するように構成される。この方法でレジスタを使用すると、処理要素によって応答インジケータが設定されたときに、割込みコントローラに通知するシンプルで簡単な方法が提供される。
【0024】
様々な要求がそこから発行される、割込みコントローラと処理要素との間のパスは、様々な形式をとることができる。しかしながら、いくつかの実例では、パスは、要求を順番に送信することによって、ダミー要求を受信する前に、処理要素が選択された保留中の割込み要求を受信することを確実にする。順序正しい扱いを管理することができる方法はいくつかある。たとえば、要求が確実に順番に伝播されることを確実にするために、1つ又は複数のFIFO(first-in-first-out:先入れ先出し)バッファ構造がパスに関連付けて含まれ得る。
【0025】
上述の技法において使用されるダミー要求は、処理要素によって受信されたときに確認応答が割込みコントローラに発行されるようにする形式であれば、様々な形式をとることができる。いくつかの実例では、ダミー要求はクリア割込み要求であり得、これは通常、すでに発行された割込み要求はもはや実施される必要がないことを示したい場合に、割込みコントローラによって発行される。そのようなクリア割込み要求は、受信時に確認されるように配置することができる。発明者らは、クリアされるべき割込み要求の偽の識別子を指定することによって、クリア割込み要求をダミー要求として使用できると決定することによって、この事実を利用した。偽のID(identification)を使用しているため、これは割込み要求がクリアされないことを意味し、したがってダミー要求が処理要素に不要な影響を与えることはない。さらに、これは、割込みコントローラにとってすでに使用可能な要求フォーマットであり、処理要素が確認するように配置されているため、対象の選択された保留中の割込み要求の直後に伝搬されたダミー要求の受信を割込みコントローラに確実に通知することができ、それによって、割込みコントローラに、選択された保留中の割込み要求がいつ受信されたかのおおよその目安を示す。
【0026】
次に、本技法のいくつかの特定の実例について、図面を参照して説明する。
【0027】
図1は、本技法による、割込みコントローラ100の1つの実例を示している。割込みコントローラ100は、割込み要求を受信することと、待ち行列に入れることと、優先順位を付けることとを行うように構成された割込み要求バッファ102を備える。割込み要求は、いくつかのソースから発生する可能性がある。たとえば、割込みコントローラ100は、いくつかの周辺デバイスと、周辺デバイスからの入力に応答してプログラム命令を実行するためのいくつかの処理要素とを備えるシステムにおいて配置され得る。しかしながら、周辺デバイスの処理需要は、ときには処理要素の処理能力を超える場合がある。したがって、処理要素は、周辺デバイス間で効果的に共有されるように、周辺デバイスの異なるものに対応するプログラム命令の処理間で切り替えるように適合されている。周辺デバイスによる処理要素のこの共有は、全体的な処理能力をあまり必要としない方法で周辺デバイスの処理需要が満たされることを可能にする。処理要素が他のタスクを完了するのを待つ必要がなく、任意の所与の周辺デバイスが動作されたときに反応するように、割込みコントローラ100はシステムの割込み要求を扱うように配置されているため、緊急性の低い処理よりも緊急性の高い処理を優先することができる。優先順位付けスキームは、要求バッファ102内の保留中のどの割込み要求が他の保留中の割込み要求に先立って処理要素に発行されるべきかを決定するために、制御回路104によって実装することができる。制御回路104が要求バッファ102からの割込み要求を選択すると、それは発行回路106にその選択を示し、その後、選択された割込み要求を要求バッファ102から選択された処理要素に発行する。
【0028】
上記の実例では、周辺デバイスによって発行された割込み要求が考慮されているが、多くのシステムにおいては、周辺デバイスに加えて他の割込み要求ソースが存在する可能性があることも理解され、それらの様々な割込み要求はすべて、割込みコントローラ100によって優先順位を付けて発行される必要がある。
【0029】
場合によっては、要求バッファ102内の保留中の割込み要求が、その保留中の割込み要求が発行される処理要素によって受信されると、システム・コンポーネント(たとえば、処理要素のうちの1つ)が特定の動作のみを実施することが望ましい場合に、競合状態が発生する可能性があり、又は、言い換えれば、処理要素による保留中の割込み要求の受信と、システム・コンポーネントによって実施される特定の処理動作(1つの実例では、保留中の割込み要求を受信したのと同じ処理要素)との間にバリアが挿入される。たとえば、処理要素は、あるプロセスから別のプロセスへの切替えを実施する必要がある場合がある。保留中の割込み要求が以前のプロセスに関連している場合、処理要素が切替えを実施できるようになる前に、割込み要求が処理要素によって受信されることが望ましい。別の実例として、処理要素を第1のプロセスから第2のプロセスに切り替えて、第2のプロセスが割込み要求を扱うことができるようにする必要があり得る。しかしながら、第2のプロセスの開始が速すぎると、割込み要求を待機して停止する点に達し得、その場合、処理要素は第2のプロセスからさらなるプロセスに切り替えることを決定し得る。割込み要求がその後処理要素によって受信されると、もはや処理されることができなくなり、割込みコントローラによってリコールされ、その後の時間にスケジューリングされる必要があるため、これは効率に大きな影響を与える。
【0030】
この問題に対処するために、割込みコントローラ100はインジケータ・ストレージ108をさらに備え、これは、競合状態に関連するシステム・コンポーネント(上記の場合は処理要素自体)にアクセス可能であり、動作が実施され得るときをシステム・コンポーネントに示すために使用することができる。この表示は、処理要素が実際に割込み要求を受信したことが確認された場合にのみ設定される。しかしながら、いくつかのシステムは、処理要素と割込みコントローラとの間のトラフィックが大幅に増加する可能性があるため、デフォルトで割込み要求の受信を確認する処理要素が配置されていない場合がある。したがって、割込み要求の選択的確認応答を容易にするために、割込みコントローラ100は、確認するために処理要素が配置されている特定の割込み要求に続いてダミー要求を送信するように構成されている。たとえば、ダミー要求は、存在しない割込みに対応する偽のID値を有するクリア割込み要求であり得る。クリア割込み要求は、受信時に確認されるように配置することができるが、誤ったIDが原因で、処理要素は存在しない割込みをクリアすることができないため、処理要素によってアクションが取られる必要はない。対象の選択された保留中の割込み要求に続いてダミー要求が発行されたので、ダミー要求の受信の確認応答は、ダミー要求の前に発行された割込み要求も受信されたと推論していると見なすことができる。したがって、この確認応答に基づいて、割込みコントローラは、処理要素が割込み要求を受信したことを認識して、インジケータ・ストレージにインジケータを設定することができる。
【0031】
割込み要求と後続のダミー要求は、ダミー要求を受信する前に処理要素が割込み要求を受信することを確実にするパスを介して処理要素に発行される。この機能を満たすことができるパスの具体的な実例はいくつかある。たとえば、パスは、先入れ先出しプロトコルに従って要求を送信するように配置されたパスであり得る。或いは、パスは、要求の再順序付けが禁止されている順序付けされたパスであり得る。
【0032】
制御回路はまた、競合状態の存在を決定するために使用される状態情報110にアクセスし得る。参照される状態情報は、割込みコントローラが設置されているシステムのタイプに応じて、様々な形式をとることができる。純粋に1つの特定の実例として、システム状態情報は、特定の割込み要求のターゲット・オペレーティング・システムがCPUに常駐していないため、現在割込み要求を扱う立場にないことを示し得る。別の実例として、状態情報は、ゲーティング・コントローラが処理要素へのパスをクロック・ゲートしたいことを示し得、したがって、ゲーティングが発生する前に処理要素によって割込み要求が受信されることが望ましい。
【0033】
図2は、本技法による割込みコントローラ210を含むシステム200の実例を示している。割込みコントローラ210は、外部ソースから割込み要求を受信することと、処理要素に割込み要求を発行することとを行うように配置されているという点で
図1のものと同様であるが、システム200のゲスト・オペレーティング・システム(OS:operating system)環境において本技法を実装するように特に構成されている。たとえば、図面に示されるように、CPUの各々は、ハイパーバイザ208の制御下でいくつかのゲスト・オペレーティング・システム206を採用することができる。割込みコントローラによって受信された割込み要求のうちのいくつかは、特定のゲスト・オペレーティング・システムにおいてターゲットにされ得る。各CPUのハイパーバイザ208は、CPUの処理リソースを常駐ゲスト・オペレーティング・システムに割り振ることによって、ゲスト・オペレーティング・システムを制御するために提供されるが、他のゲスト・オペレーティング・システムは非常駐として設定されているため、非アクティブである。たとえば、CPU0 202は最初にゲストOS0 206-2を実動かしているかもしれないが、その後、ゲストOS3による命令の実行を可能にするために、ハイパーバイザ208-2はゲストOS0 206-2からゲストOS3 206-6に切り替えることを決定し得る。割込みコントローラ210によって受信された特定の割込み要求は、特定のゲストOSにおいてターゲットにされる場合があり、したがって、そのような割込み要求が処理される前に、関連するゲスト・オペレーティング・システムが常駐である必要がある。
【0034】
一般的なレベルでは、割込み要求は、特定のCPUをターゲットとする物理的な割込み要求、又は特定のオペレーティング・システムをターゲットとする仮想割込み要求のいずれかとして定義され得る。たとえば、割込みコントローラは、ゲストOS2 206-8をターゲットとする周辺デバイスから仮想割込み要求を受信し得る。次いで、制御回路220は、どのコアがゲストOS2の親であるかを決定するために親コア・レジスタ216をチェックし得、この場合はCPU1 204である。次いで、制御回路220は、ゲストOS2 206-8が現在常駐しているかどうかを決定するために、対応する常駐レジスタ、この場合は常駐レジスタ214をチェックする。常駐していない場合、ゲストOS2 206-8が非アクティブあり、現在実行されていないため、仮想割込み要求を発行することはできない。したがって、制御回路は、第1に、物理的な割込み要求をCPU1 204に発行し、これはゲストOS2 206-8を常駐させるように切り替えることをCPU1 204に示す。この切替えが実施されたときのみ、最初に受信された仮想割込み要求がCPU1 204に発行される。
【0035】
図2では、各ゲストOSが特定のCPUに関連付けられているように示されているが、ゲストOSは、あるCPUと別のCPUとの間で移行することができ、その場合、親コア・レジスタ216の内容がそれに応じて更新される。
【0036】
システム200の修正された実例では、CPU1 204が含まれなくてもよく、したがって、本技法は、単一のCPUのみを備えるシステムに適用できることが理解されよう。さらに、CPU1 204が含まれない場合、親コア・レジスタ216又は常駐レジスタ1 214も必要ない。
【0037】
図3は、常駐レジスタの実例をより詳細に示している。図面に示されるように、常駐ゲストOSフィールド302は、どのゲスト・オペレーティング・システムが対応するCPU上に現在常駐しているかを示している。このフィールドは、CPUのハイパーバイザによって制御され、ゲストOSの切替えが発生すると更新される。ハイパーバイザはまた、有効なフィールド304も制御する。このフィールドは、ゲストOSが常駐し、またコアでプログラム命令を実行しているときに設定され、ゲストOSが実質的にビジーであることを示す。常駐ゲストOSによって実行されるべき任意のプログラム命令の処理が完了すると、ハイパーバイザは、ゲストOSがもはやビジーではないこと、及び別のゲストOSへの切替えが実施され得ることを示すために、有効なフィールド304をクリアすることができる。しかしながら、切替えは、切替え開始イベントが発生するまで実際には実施されない場合があり、このときまで、現在のゲストOSがアイドル状態でCPUに常駐したままである場合がある。割込みコントローラ・チェック完了フィールド306も提供され、ハイパーバイザではなく割込みコントローラ210によって制御される。このフィールドは、本技法による割込みコントローラ210によって実施されるチェックを考慮して、常駐ゲストOSによる処理をいつ実施できるかを示すために使用される。所与のゲストOSによる処理は、常駐であり、有効であり、対応する割込みコントローラ・チェックが常駐レジスタにおいて完了していることが示されない限り、実施することはできない。
【0038】
図4は、本技法による
図2のゲストOS環境における割込み要求を扱うための方法の実例を示している。ステップ402において、特定のゲストOSをターゲットとする仮想割込み要求が、たとえば、周辺デバイス又はソフトウェアなどの外部ソースから受信される。ステップ404において、割込みコントローラ210は、割込み要求によってターゲットにされるゲストOSを決定し、どのCPUがターゲット・ゲストOSの親であるかを決定するために、親コア・レジスタ216をチェックする。次いで、制御回路220は、ステップ406に示されるように、ゲストOSが現在コアに常駐しているかどうかを決定するために、親コアに対応する常駐レジスタをチェックする。ゲストOSが現在コアに常駐している場合、ステップ408において、割込み要求がコアに発行され、プロセスが終了する。発行の正確なタイミングは任意の他の保留中の割込み要求に対する優先順位に依存するため、割込み要求は必ずしもステップ408においてすぐに発行されるとは限らない点に留意されたい。
【0039】
一方、割込み要求によってターゲットにされたゲストOSが現在親コアに常駐していない場合、制御回路は、親コアにおいてゲストOSへの切替えを開始する必要があると決定する。したがって、今回は、受信した割込み要求が、要求バッファ222内の保留キューに追加される。この決定の結果、監視回路は競合状態の存在を検出し、これは常駐していないゲストOSをターゲットとする保留中の仮想割込み要求があるためである。ゲストOSへの切替えを開始するために、ステップ410において、割込みコントローラ210は、物理的な割込み要求(本明細書ではドアベル要求と呼ばれる)を親コアに発行し、コアのハイパーバイザが指定されたゲストOSを常駐させるべきであることを示す。ドアベル要求が発行される時間は、他の物理的な保留中の割込み要求に対するその優先順位に依存するため、ドアベル要求がすぐに発行されるとは限らない点に留意されたい。
【0040】
ドアベル要求が発行されると、割込みコントローラ210は、ゲストOSが常駐されたことを示すために、親コアに対応する常駐レジスタが更新されるまで待機する。具体的には、制御回路は、ステップ412に示されるように、仮想割込み要求のターゲットであるゲストOSと一致するように更新されるまで、常駐レジスタの常駐ゲストOSフィールド302を監視する。ターゲット・ゲストOSが常駐していることを示し、ゲストOSが有効であることを示すために、常駐レジスタが更新されると、ステップ414において、制御回路は、ゲストOSをターゲットとする任意の保留中の仮想割込み要求を見つけるために、要求バッファ222内で検索を実施する。多くの場合、ステップ414において見つかった保留中の割込み要求は、最初にステップ402において受信したものと同じ割込み要求になる。しかしながら、場合によっては、最初に受信した仮想割込み要求がリコールされ、別の仮想割込み要求に置き換えられることがある。又は、最初に受信した割込み要求が依然として要求バッファにおいて保留されている可能性があるが、優先順位のより高い割込み要求も現在要求バッファに追加されている可能性がある。いずれにしても、現在常駐しているゲストOSをターゲットとする保留中の割込み要求が見つかった場合、制御回路220は、ステップ414において、発行回路224に保留中の割込み要求とそれに続くダミー要求を親コアに送らせる。次いで、割込みコントローラ210は、ステップ416において、ダミー要求の確認応答信号(ACK:acknowledgment)を待つ。ACKが受信されると、割込みコントローラ210は、親コアが割込み要求を受信したことを確認し、ステップ418において、親コアが現在プログラム命令の処理を開始し得ることを示すために、IC(integrated circuit)チェック・フィールドを完了として設定する。この時点までICチェック完了フィールドの設定を遅延させることにより、切替えを引き起こした仮想割込み要求をコアが受信するまで、親コアがデータ処理動作の実施を開始しないことを確実にすることができ、それによって、割込み要求が受信される前にそれらの動作を早期に実施すると、CPUがターゲット・ゲストOSから切り替わる可能性を回避する。これにより、軽微な切替えが実施される可能性が低くなり、ゲスト・オペレーティング・システム間の切替えは比較的高価になるため、無駄な処理リソースが削減される。
【0041】
図5は、
図4の方法に応答するCPUにおける処理の1つの実例を示している。ステップ502において、CPUは、ターゲット・ゲストOSを常駐させるべきであることを示す物理的な割込み要求(ドアベル要求)を受信する。ステップ504において、CPUは、任意の他のゲストOSによる現在の実行を停止し、ターゲット・ゲストOSによる命令を実行する準備をすることによって、ターゲットOSに切り替える。以前のゲストOSが撤回され、CPUがターゲット・ゲストOSによる命令を実行する準備ができると、ターゲット・ゲストOSが常駐していることを示し、それが有効であることを識別するために、CPUは常駐レジスタを更新する。また、この段階でICチェックが完了しているかどうかを決定するために、CPUは常駐レジスタの監視を開始する。しかしながら、ダミー要求に対するACKはまだ割込みコントローラによって受信されていないため、ICチェックは完了としてマーク付けされない。ステップ506において、CPUは、ダミー要求を待つ。ICチェックが完了したことを常駐レジスタがまだ示していないため、ターゲット・ゲストOSによるプログラム命令の実行は不可能である。ダミー要求が受信されると、CPUは、ステップ508において、受信の確認応答を割込みコントローラに送信する。これに続いて、CPUは、常駐レジスタを監視し続け、ステップ510に示されるように、ICチェック完了フィールドが設定されるのを待つ。これが発生すると、方法はステップ512に進み、CPUはターゲット・ゲストOSでプログラム命令の実行を開始することができる。
【0042】
図6Aは、割込みコントローラが所与のコアにおいてゲストOSの切替えを開始するときに常駐レジスタにおいて発生する遷移の実例を示している。
図6Aの実例では、ゲストOS0に切り替えられている。
図6Aに示されているステップの目的のために、ゲストOSの切替え前は、常駐レジスタにおける現在の値は特に関連しておらず、最初の行において「X」によって示されている任意の値であってよい。しかしながら、いくつかの実例では、たとえば、現在のOSがまだ切替えのターゲットOSでないことを確認するために、又は、切替えを実施する必要がある場合は現在のOSが無効としてマーク付けされていることを確認するために、現在の値に対していくつかの初期チェックが行うことができることが理解されよう。割込みコントローラがターゲット・ゲストOSへの切替えを開始する場合、
図4のステップ410を参照して説明したように、そのゲストOSの親コアにドアベル要求を第1に発行する。ドアベル要求に応答して、コアはターゲットのゲストOSに切り替え、それに応じて常駐レジスタを更新する。具体的には、コアは常駐ゲストOSフィールドを0に更新し、常駐ゲストOSがゲストOS0であることを示し、第2の行に示されるように、ゲストOS0が有効であることを示すために、有効ビットを「1」に設定する。コアによって常駐ゲストOSフィールド又は有効なフィールドが変更されるときはいつでも、第2の行に示されるように、割込みコントローラがゲストOSによる処理を実施するために必要なチェックをまだ実施していないことを示すために、ICチェック完了フィールドは論理1状態に遷移する。割込みコントローラは、常駐ゲストOSフィールドにおける変更から、ゲストOS0が現在常駐していると決定し、したがって、たとえば
図4のステップ414を参照して説明したように、仮想割込み要求に続いてダミー要求を送信する。第3の行に示されるように、この時点では常駐レジスタにおける値に対する変更は発生していない。割込みコントローラがダミー要求に対するACKを受信すると、コアが仮想割込み要求を受信したと決定することができるため、割込みコントローラはICチェック完了フィールドを「0」に設定し、チェックが完了したことと、コアがゲストOS0の制御下で命令の実行に進むことができることとを示す。
【0043】
図6Bは、所与のコアのハイパーバイザがゲストOSの切替えを引き起こしたときに常駐レジスタにおいて発生する変更の実例を示している。
図6Bの実例では、ゲストOS0からゲストOS1に切り替えられている。第1の行において、常駐ゲストOSフィールドは、現在の常駐ゲストOSがゲストOS0であることを「0」の値によって示している。ゲストOS0が現在プログラム命令を実行しており、実質的にビジーであるため、有効ビットも「1」に設定される。ゲストOS0の割込みコントローラ・チェックが以前に完了しているため、ICチェック完了フィールドは「0」である。
【0044】
後の時点で、たとえば、ゲストOS1によって完了されるべき保留中のタスクがあり得るため、ハイパーバイザはゲストOS1に切り替える必要があると決定し得る。切り替えるために、ゲストOS0が常駐している間、その常駐がもはや無効になり、第2の行に示されているように、それによってさらなる動作を実施できないことを示すために、ハイパーバイザは第1に有効なフィールドを「0」に設定する。さらに、やはり第2の行に示されているように、割込みコントローラのチェックが完了していないこと、及び常駐レジスタにおける任意の変更がまだ割込みコントローラによって承認されていないことを示すために、常駐レジスタの内容におけるこの変更により、ICチェック完了フィールドが「1」に設定される。
【0045】
第3の行では、割込みコントローラがチェックを実施し、完了すると、ICチェック完了フィールドを「0」としてマーク付けする。たとえば、割込みコントローラは、ゲストOS0に関して任意の割込み要求を発行したかどうかをチェックし得るが、それらの割込み要求はコアによってまだ処理されていない。その場合、それらの割込み要求を要求バッファ222に再び追加できるように、コアからのそれらの割込み要求をリコールする必要があり得る。そのような場合、その後のある時点で、コアをゲストOS0に再び切り替えるためにドアベル要求を発行することができるように、保留中の物理的な割込み要求に別のドアベル要求を追加する必要もあり得る。或いは、常駐レジスタは、OS1による処理が完了したときにゲストOS0を再度常駐させる必要があるという表示を記録するための追加フィールドを含み得る。そのような実装形態では、追加のドアベルを必要とせずに、OS0に再び切り替えるときを決定するために、要求バッファ内の割込み要求の優先順位付けと並行して追加フィールドのチェックを実施することができる。
【0046】
チェックが完了すると、割込みコントローラは、第3の行に示されるように、ICチェック完了フィールドを「0」に設定する。これに応答して、ハイパーバイザはゲストOS1に切り替わり、第4の行に示されるように、常駐ゲストOSフィールドと有効なフィールドを設定することによってこれを示す。しかしながら、やはり常駐レジスタにおいて変更があったため、第4の行に示されるようにICチェック完了フィールドが「1」に設定されており、したがって、ゲストOS1は常駐しているが、プログラム命令の処理を開始することはできない。割込みコントローラがそのチェックを完了すると(ゲストOS1の任意の仮想の保留中の割込み要求を識別することと、OS1の保留中の割込み要求が少なくとも1つある場合、
図4を参照して説明したように、選択された保留中の割込み要求に続いてダミー要求の送信と、そのダミー要求の確認応答の受信とを含む)、割込みコントローラは、ICチェック完了フィールドを第5の行において「0」に設定し、そのため、ゲストOS1はプログラム命令を実行することによって継続することができる。
【0047】
図7は、本技法が適用され得るシステム700の別の実例を示している。システム700において、割込みコントローラ710は、相互接続720を介して3つの処理要素に結合される。システム700はまた、電力消費を低減するために、使用されていないときに相互接続の要素をクロック・ゲートするように構成されたゲーティング回路730を含む。
【0048】
特定のパスを所与の処理要素にゲーティングすることが適切であるときを決定するために、ゲーティング回路730によっていくつかのチェックが実施され得る。しかしながら、これらのチェックが、特定の処理要素へのパスをゲーティングすることが適切であると示す一方で、その処理要素をターゲットとする割込み要求バッファ735に依然として割込み要求がある場合、問題が発生する可能性がある。この問題に対処するために、割込みコントローラ710には、ゲーティング回路730が特定のプログラミング要素へのパスをゲーティングしたいことを示すときを検出するための制御回路740が設けられている。これが当てはまる場合、制御回路740は、割込み要求バッファ740内の特定の処理要素をターゲットとする保留中の割込み要求があるかどうかをチェックし、ある場合、その割込み要求に続いて前述のダミー要求を関連する処理要素に発行するために、発行回路750を制御する。保留中の割込み要求が発行され、ダミー要求の確認応答が必要な処理要素によって受信されたことを示すと、制御回路は、その処理要素へのパスが今ではゲーティングされ得ることをゲーティング回路730に示すために、ゲート・インジケータ760にバリア・インジケータを設定する。このようにして、特定の処理要素へのパスがゲーティングされて使用できなくなるが、その処理要素をターゲットとする割込み要求が依然として保留中である状況を回避することができる。したがって、本技法は、そのパスを介して発行される必要があり得る保留中の割込み要求が依然として存在する間、相互接続を通じたパスがゲーティングされるのを回避し、したがって、単に割込み要求を扱うことができるようにするためにそれらのパスのゲーティングを解除する必要を回避するため、効率を向上させる。これにより、不必要なゲーティング及びゲーティング解除が回避され、電力消費コストが発生する可能性があるが、割込み要求バッファ740において保留状態を維持する必要があるため、1つ又は複数の保留中の割込み要求の扱いを遅延させる可能性があり、一方、ゲーティングされたパスは、適切な処理要素に発行できるようにするためにゲーティング解除されている。
【0049】
本出願では、「~ように構成された」又は「~ように配置された」という用語は、装置の要素が、定義された動作を行うことができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味する。たとえば、本装置は、定義された動作を提供する専用ハードウェアを有し得、或いはプロセッサ又は他の処理デバイスは、機能を実施するようにプログラムされ得る。「~ように構成された」又は「~ように配置された」は、定義された動作を提供するために装置要素を何らかの方法で変更される必要があることを含意しない。
【0050】
本明細書において、添付図面を参照して、例示的な実施例について詳細に説明したが、本発明はそれらの厳密な実施例に限定されず、様々な変更、追加、及び修正が、当業者によって、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなしに達成され得ることを理解されたい。たとえば、本発明の範囲から逸脱することなしに、従属請求項の特徴の様々な組合せを、独立請求項の特徴で作成することができる。