(57)【特許請求の範囲】
【請求項１】
システム内の１つ又はそれ以上のデバイスからの割り込みを受信するように連結されている回路構成と、
前記回路構成へ連結されていて、前記システム内の複数のプロセッサから、前記デバイスから受信された第１の割り込みについてプロセッサを選択するように構成されている割り込みルータとを備えた割り込みコントローラであって、
前記割り込みルータは、前記受信された第１の割り込みに応えて、割り込みが前記選択されたプロセッサへ合図されるよう仕向けるように構成され、前記複数のプロセッサの状態を監視し、前記状態に応じて、プロセッサに対する割り込み提示に関し最も好ましいからあまり好ましくないまでの好ましさの順序で前記複数のプロセッサを複数の適格性グループにグループ分けし、
前記割り込みルータは、空でなく最も好ましいグループである第１の適格性グループに含まれる前記選択されるプロセッサを選択し、更に、
前記割り込みルータは、前記割り込みが前記選択されたプロセッサへ合図されたことに応答してタイムアウトカウンタを初期化し、前記割り込みについて前記選択されたプロセッサからの応答無しに前記タイムアウトカウンタが満了したことの検知に応えて別のプロセッサを選択し、
前記割り込みルータは、前記別のプロセッサに前記割り込みを合図するように構成され、
前記割り込みルータは、前記割り込みについて前記選択されたプロセッサからの応答無しに前記タイムアウトカウンタが満了したことの検知に応えて前記選択されたプロセッサを不応答であると見なし、後に前記デバイスから受信した割り込みのために前記第１の適格性グループよりも好適でない第２の適格性グループ内に前記不応答のプロセッサを含むようにし、前記第２の適格性グループ内に前記不応答のプロセッサを含むようにした後、前記複数の適格性グループに応じて後に受信した前記割り込みのために第１のプロセッサを選択し、当該第１のプロセッサに対し、後に受信した前記割り込みを合図するように構成されている、
割り込みコントローラ。
【請求項２】
前記応答は割り込み受信確認応答である、請求項１に記載の割り込みコントローラ。
【請求項３】
前記割り込み受信確認応答に、前記第１の割り込みを識別する割り込みベクトルで応答する回路構成を更に備えている請求項２に記載の割り込みコントローラ。
【請求項４】
前記割り込み受信確認応答は、前記割り込みコントローラについて定義されている割り込み受信確認レジスタの読み出しであり、
前記割り込み受信確認応答へ応答するように構成されている前記回路構成は、レジスタアクセスオペレーションを受信するように連結されているレジスタインターフェースユニットであり、
前記読み出しへの応答で返されるデータは前記割り込みベクトルを含んでいる、請求項３に記載の割り込みコントローラ。
【請求項５】
前記プロセッサ状態は、前記プロセッサがスリープ状態にあるか否かを含み、
割り込みが前記プロセッサ内でスリープ状態にない場合、前記複数の適格性グループのうち第１又は第２の適格性グループに前記プロセッサが含まれ、割り込みが前記プロセッサ内でスリープ状態にある場合、前記複数の適格性グループのうち第３の適格性グループに前記プロセッサが含まれるようにし、前記第３の適格性グループは前記第２の適格性グループよりも好適でない、請求項１に記載の割り込みコントローラ。
【請求項６】
前記プロセッサ状態は、前記プロセッサ内で割り込みが有効になっているか否かを含み、
割り込みが前記プロセッサ内で有効でない場合、前記複数の適格性グループのうち第２の適格性グループに前記プロセッサが含まれ、割り込みが前記プロセッサ内で有効である場合、前記複数の適格性グループのうち第１の適格性グループに前記プロセッサが含まれるようにし、前記第２の適格性グループは前記第１の適格性グループよりも好適でない、請求項１に記載の割り込みコントローラ。
【請求項７】
前記プロセッサ状態は、ソフトウェアによってプログラムされているオフライン状態を含み、前記プロセッサがオフライン状態の場合、当該プロセッサは不適格である、請求項１に記載の割り込みコントローラ。
【請求項８】
前記プロセッサ状態は、仮想化されたゲストオペレーティングシステムが前記プロセッサ上で実行されている状態を含み、
前記割り込みは第１のプロセッサへ経路指定され、前記第１のプロセッサは割り込みを狙うゲストオペレーティングを実行する、請求項１に記載の割り込みコントローラ。
【請求項９】
前記タイムアウトカウンタの値は複数の値から前記プロセッサの状態に応じて選択されている、請求項１に記載の割り込みコントローラ。
【請求項１０】
前記値は、更に、前記複数のプロセッサのうち次に選択されるプロセッサの状態に応じて選択される、請求項９に記載の割り込みコントローラ。
【請求項１１】
複数のデバイスと、
複数のプロセッサと、
請求項１に記載の前記割り込みコントローラであって、前記複数のデバイス及び前記複数のプロセッサへ連結されている前記割り込みコントローラと、
を備えているシステム。
【請求項１２】
システム内の割り込みコントローラが、当該システム内の１以上のデバイスのうちの１つから割り込みを受信する処理と、
前記割り込みコントローラが、前記システム内の複数のプロセッサのうちの２つ又はそれ以上の適格プロセッサを識別する処理であって、少なくとも一部にはそれぞれのプロセッサの状態に応じて識別する当該処理と、
前記２つ又はそれ以上の適格プロセッサから或るプロセッサを選択する処理と、
前記割り込みを前記選択されたプロセッサへ提示する処理と、
前記選択されたプロセッサについて、当該選択されたプロセッサからの割り込み受信確認を受信すること無しにタイムアウトを検知する処理と、
前記選択されたプロセッサから割り込み受信確認を受信すること無しに前記タイムアウトが検知されたことに応えて、前記選択されたプロセッサを不応答であると見なす処理と、
プロセッサに対する割り込み提示に関し最も好ましいからあまり好ましくないまでの好ましさの順序で、各プロセッサの状態に応じて前記プロセッサを複数の適格性グループにグループ分けする処理と、
前記複数のプロセッサのうちの異なったプロセッサを選択する処理と、
前記割り込みを前記異なったプロセッサへ提示する処理と、
前記割り込みを前記異なったプロセッサによって受け入れる処理と、
前記割り込みコントローラが、前記１以上のデバイスのうちの１つから前記後に受信した割り込みを受信する処理と、
前記割り込みコントローラが、前記後に受信した割り込みのために第２の異なったプロセッサを、空でなく最も好ましいグループである第１の適格性グループから選択する処理と、
前記割り込みコントローラが、前記第２の異なったプロセッサを選択することに応答して、前記後に受信した割り込みを前記第２の異なったプロセッサに対し合図する処理と、を含む方法。
【請求項１３】
前記適格プロセッサが前記割り込み受信先としてまだ選択されていない、請求項１２に記載の方法。
【請求項１４】
前記適格プロセッサは、割り込みが有効にされている、請求項１２に記載の方法。
【請求項１５】
前記２つ又はそれ以上のプロセッサのうちの第１のプロセッサは低パワー状態にあり、
前記２つ又はそれ以上のプロセッサのうちの第２のプロセッサは低パワー状態にはなく、
前記選択する処理は、前記第２のプロセッサを前記選択されるプロセッサとして選択することを含む、請求項１２に記載の方法。
【請求項１６】
前記２つ又はそれ以上のプロセッサのうちの第１のプロセッサは低パワー状態にあり、
前記選択する処理は、前記第１のプロセッサが前記低パワー状態にあったとしても当該第１のプロセッサを前記選択されるプロセッサとして選択することを含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割り込みコントローラの分野に関係している。
【背景技術】
【０００２】
デジタルシステムは、概して、ソフトウェアを実行する１つ又はそれ以上のプロセッサ及びソフトウェアによって制御される各種ハードウェアデバイスを含んでいる。例えば、デジタルシステムには、デスクトップ、ラップトップ、ネットトップ、サーバ、ワークステーション等のコンピュータシステム、セルラーフォン、パーソナルデジタルアシスタント、スマートフォンなどのモバイルデバイス、及び他の専用目的デバイスが含まれる。ハードウェアデバイスは、概して、或る特定の機能性を提供するものであって、記憶（例えば、ディスクドライブ、フラッシュメモリ、光学ドライブ等）、通信（例えば、ネットワーク化、ワイヤレスオペレーション等）、及び他の入力／出力の機能性（タッチスクリーン、キーボード、マウス、ディスプレイ、音声等）の機能性を提供している。
【０００３】
ハードウェアデバイスは、典型的には、或る期間の間はソフトウェアの介入無しに動作するように設計されている。ソフトウェアの介入が必要なとき（例えば、デバイスに対応するドライバを実行させる必要があるとき）、ハードウェアデバイスは割り込みを合図する。割り込みは、システム内のプロセッサの１つへ配信され、タスクの実行を中断させて割り込みに対応するコード（例えば割り込みサービスルーチンコード及び／又はドライバコード）を実行させる。
【０００４】
システムが２つ以上のプロセッサを含んでいる場合、所与の割り込みはそれらプロセッサのうちの１つ（１つのみ）へ提示される必要がある。静的分配スキームが使用されることがあり、その場合、それぞれのデバイスの割り込みは特定のプロセッサへマップされ、当該マッピングはそう頻繁に変更されない。即ち、同じプロセッサが概して所与の割り込みを果たす。その様な静的スキームは、標的プロセッサが割り込みに即座に応答できない場合には長い割り込み待ち時間を生じさせかねない。複数のプロセッサが、所与の割り込みを受信することができるなら、それらプロセッサが割り込みに応答しようとする際に競合状態になる。その様な競合状態は、システムの性能及び／又はパワー効率を低下させかねない。
【発明の概要】
【０００５】
１つの実施形態では、割り込みコントローラは、割り込みを複数のプロセッサ間で分配するための割り込み分配スキームを実施している。スキームは、どのプロセッサが所与の割り込みを受信するべきかを判定する際に様々なプロセッサ状態を勘案することができる。例えば、プロセッサ状態には、プロセッサがスリープ状態にあるか否か、割り込みが有効になっている否か、プロセッサが先の割り込みに応答したか否か等が含まれよう。幾つかの実施形態では、割り込み分配時にプロセッサ状態を勘案することにより、割り込み待ち時間を縮めることができる。代替的又は追加的に、割り込みコントローラは、割り込みが（例えばプロセッサへ提示された後）遅延していることを検知するタイムアウトメカニズムを実施していてもよい。割り込みは、タイムアウトが満了した時点で評価し直され、恐らくは別のプロセッサへ提示されることになろう。
【０００６】
或る実施形態では、割り込みコントローラは、割り込みについての割り込みベクトルが応答プロセッサへ配信されたことに応えて割り込みを自動的に且つ不可分式にマスクするように構成されている。割り込みコントローラは、不可分式マスキングの一環として、プロセッサからの割り込み受信確認を直列化する。その様な実施形態では、その結果、１つ１つの割り込みは１つのプロセッサへ配信され、２つ以上のプロセッサへ配信されることはない。
【０００７】
次に続く詳細な説明では添付図面を参照しており、図面についてこれより簡単に説明する。
【図面の簡単な説明】
【０００８】
【図１】プロセッサと、割り込みコントローラと、割り込みのソースとなる各種デバイスとを含んでいるシステムの一実施形態のブロック線図である。
【図２】割り込みコントローラの一実施形態において、割り込みをプロセッサへ経路指定するオペレーションを示すフローチャートである。
【図３】割り込みコントローラの一実施形態において、プロセッサからの割り込み受信確認に応答してのオペレーションを示すフローチャートである。
【図４】割り込みコントローラの一実施形態において、割り込みにとって適格なプロセッサを識別するオペレーションを示しているフローチャートである。
【図５】割り込みコントローラの一実施形態において、適格なプロセッサを選択するオペレーションを示しているフローチャートである。
【図６】割り込みコントローラの一実施形態における更に詳細なブロック線図である。
【図７】図６に示されているマスク／ＳＷ  Ｏｒ回路の一実施形態のブロック線図である。
【図８】図６に示されている割り込みルータ回路の一実施形態のブロック線図である。
【図９】図６に示されている割り込みコントローラでのタイムアウトの一実施形態を示すブロック線図である。
【図１０】割込みコントローラを含むシステムの別の実施形態のブロック線図である。
【図１１】システムの更に別の実施形態のブロック線図である。
【発明を実施するための形態】
【０００９】
本発明には、様々な修正及び代わりの形態の余地があるが、本発明の特定の実施形態を例示として図面に示し、ここで詳細に説明していく。とはいえ、図面及びそれに対する詳細な説明は本発明を開示されている特定の形態へ限定しようとするものではなく、それどころか、付随の特許請求の範囲によって定義されている本発明の精神及び範囲内に入る全ての修正、均等、及び代替を対象として含むものであることを理解されたい。ここに使用されている見出しは編集のためであり、記載範囲を限定するために使用されることを意図していない。本出願全体を通しての使用に際し、英語の「ｍａｙ」の対訳である「〜してもよい、〜かもしれない、〜できるであろう」は、必須の意味（即ち、せねばならないを意味する）というよりむしろ許容の意味（即ち、可能性があることを意味する）に使用されている。同様に、英語の「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」の対訳である「〜を含む、〜を含める」は、〜に限定される、ではなく、〜を含んでいる、という意味である。
【００１０】
各種ユニット、回路、又は他の構成要素が、単数又は複数のタスクを遂行する「ように構成されている」と記述されていることがあるかもしれない。その様な文脈では、「〜するように構成されている」は、概して、オペレーション中に単数又は複数のタスクを遂行する「回路構成を有している」ことを意味する、構造の広義的な叙述である。そういうものとして、ユニット／回路／構成要素は、ユニット／回路／構成要素が現在オンになっていなくとも、タスクを遂行するように構成されているといえる。一般に、「〜するように構成されている」に対応する構造を形成している回路構成は、オペレーションを実施するハードウェア回路を含んでいよう。同様に、各種ユニット／回路／構成要素が、記載の便宜上、単数又は複数のタスクを遂行する様に記述されていることがあるかもしれない。その様な記載は、「〜するように構成されている」という語句を含んでいるものと解釈されねばならない。ユニット／回路／構成要素が１つ又はそれ以上のタスクを遂行するように構成されているという説明は、当該ユニット／回路／構成要素について３５Ｕ．Ｓ．Ｃ．第１１２条、第６項の解釈を行使しないつもりであることを明示しておく。
【００１１】
システム内で割り込みに対処する場合の様々な実施形態を以下に説明する。一般に、割り込みは、デバイス（例えば周辺デバイス）からプロセッサへの通信であって、プロセッサに、プロセッサが現在実行しているコードの実行を、割り込みに対応するコードを実行するために中断させる通信である。デバイスからの割り込みの通信には、様々な形式（例えば、信号のアサーション、割り込みメッセージの送信など）がある。デバイスは、割り込みを使用して、デバイスのための割り込みサービスルーチンコード及び／又はドライバコードが実行されるように仕向ける。中断されたコードの処理は、プロセッサが割り込みを処理するべく少なくとも幾つかの段階を踏んだ後に続行されてもよい。場合によっては、中断されたコードは、割り込みが完全に処理されるまで中断されたままにされてもよい。他の場合には、割り込みサービスルーチンコードが割り込みを後で処理するためにログし、その後、中断されたコードへ戻るという、好適な割り込み処理スキームが採用されてもよい。
【００１２】
割り込みコントローラは、システム内の各種デバイスから割り込みを受信し、割り込みをプロセッサへ提示する。割り込み提示は、概して、割り込みの指示をプロセッサへ送信することであるといえる。幾つかの実施形態では、割り込みは、割り込み要求信号をプロセッサへアサートすることによって提示されてもよい。他の実施形態では、割り込みは、割り込みを識別するメッセージをプロセッサへ送信することによって提示されてもよい。プロセッサは、割り込みに様々な様式で応えることができる。例えば、プロセッサは、割り込みの受諾を指し示す割り込み受信確認を送信してもよい。割り込み受信確認は、様々な形式で送信することができるであろう。例えば、割り込み受信確認は、割り込み受信確認レジスタとして指定されているレジスタに対するレジスタ読み出しであってもよい。割り込み受信確認は、プロセッサのインターフェース上の特定の送信であってもよい。他の実施形態では、プロセッサは、割り込みの受諾か又は拒絶のどちらかを通信することになる。
【００１３】
以下で詳細に浮かび上がってくる様に、幾つかの実施形態では、割り込みコントローラは、プロセッサの割り込みを受諾する（又は低待ち時間で割り込みを受諾する）能力に影響を及ぼし得る様々なプロセッサ状態を考慮する。こうして、割り込みコントローラは、動的に、所与の割り込みを受諾するプロセッサを、所与の割り込みの時点での様々なプロセッサのプロセッサ状態に基づいて識別する。同じ割り込みが続いて起こったら、それは、次に起こった時点での異なったプロセッサ状態に基づいて異なったプロセッサへ提供されることになろう。幾つかの実施形態では、プロセッサ状態に基づいてプロセッサを選択することで、全体としての割り込み待ち時間減少につながることであろう。概して、プロセッサ状態には、直接にプロセッサへプログラムされている状態（例えば、割り込み有効／無効、特権レベル、など）、及び／又は直接にプロセッサへ適用されている状態（例えば、パワーゲーティング、クロックゲーティングなど）が含まれよう。
【００１４】
幾つかの実施形態では、割り込みコントローラは、割り込みがプロセッサによって受諾されたことに応えて、不可分式に割り込みをマスクするように構成されていてもよい。このタイプの場合、割り込みコントローラは、同じ割り込みを２つ以上のプロセッサへ送信することを回避できる。加えて、割り込みのソースはレベルに敏感である場合もあり、従って、割り込みは、ソースが所望の処理を受信するまでアサートされたままにされることもある。マスクは、ソフトウェアによって明示的にマスクが変更されるまでは、割り込みが重ねて報告されることが起きないようにする。割り込みの自動マスキングは、割り込み受信確認がステートレスであることを許容していてもよい。割り込みコントローラは、プロセッサが例えば割り込みの処理の最中であるか否かを把握している必要はない。従って、割り込みコントローラの設計は、他の割り込みメカニズムに比較して単純なものとなろう。
【００１５】
図１は、複数のプロセッサ６０Ａ−６０Ｂと、割り込みコントローラ５０と、パワーマネジャ５２と、複数の周辺デバイス６４Ａ−６４Ｂとを含んでいるシステム５の１つの実施形態のブロック線図である。周辺デバイス６４Ａ−６４Ｂは、割り込みコントローラ５０へ連結されていて、割り込みを割り込みコントローラ５０へ合図する（図１の「割り込み」）ように構成されていてもよい。パワーマネジャ５２は、オフラインレジスタ５４を含んでいて、割り込みコントローラ５０へ連結されていてもよい。具体的には、オフラインレジスタ５４のコンテンツ及びプロセッサ６０Ａ−６０Ｂに関係している追加のプロセッサ状態（図１の「ＰＳｔａｔｅ」）がパワーマネジャ５２によって割り込みコントローラ５０へ提供されていてもよい。プロセッサ６０Ａ−６０Ｂは、パワーマネジャ５２及び割り込みコントローラ５０へ連結されていてもよい。具体的には、プロセッサ６０Ａ−６０Ｂは、それぞれ、追加のプロセッサ状態（「ＰＳｔａｔｅ」）を割り込みコントローラ５０へ提示し、またそれぞれ、割り込み要求（「ＩＲＱ」）を割り込みコントローラ５０から受信していてもよい。プロセッサ６０Ａ−６０Ｂ及び割り込みコントローラ５０は、加えて、割り込みコントローラレジスタインターフェース６２（図１の「ＩＣ  Ｒｅｇ  Ｉｎｔｅｒｆａｃｅ」）を介して連結されていてもよい。割り込みコントローラ５０は、更に、マスクレジスタ５６及び少なくとも１つのタイムアウトレジスタ５８を含んでいてもよい。
【００１６】
或る実施形態では、割り込みコントローラ５０は、プロセッサ６０Ａ−６０ＢのＰＳｔａｔｅを受信するように連結されていて、どのプロセッサ６０Ａ−６０Ｂが割り込みを提示されるべきかを判定する際にＰＳｔａｔｅを含めるように構成されている。その結果、選択対象のプロセッサ６０Ａ−６０Ｂは、所与の割り込みについて、プロセッサと関連付けられている現在のＰＳｔａｔｅに依存して動的に判定される。割り込みコントローラ５０は、割り込みを選択されたプロセッサ６０Ａ−６０Ｂへ（例えば、図１ではＩＲＱを選択されたプロセッサ６０Ａ−６０Ｂへアサートすることによって）提示してもよい。プロセッサ６０Ａ−６０Ｂは、例えば割り込み受信確認（ＩＡｃｋ）を割り込みコントローラ５０へ送信することによって、割り込みを受諾してもよい。割り込みを所与のプロセッサ６０Ａ−６０Ｂへ経路指定する場合の決定にプロセッサ状態を含めることにより、割り込み処理全体の待ち時間は、プロセッサ６０Ａ−６０Ｂへの割り込みの提示から当該プロセッサが割り込みを受諾するまでの待ち時間が縮められる分だけ縮まる。
【００１７】
割り込みコントローラ５０によって監視されるプロセッサ状態には、プロセッサの割り込みに応答する能力に影響し得る何れの状態が含まれていてもよい。例えば、パワーマネジャ５２からのプロセッサ状態には、プロセッサのパワー状態が含まれていてもよい。プロセッサ６０Ａ−６０Ｂが、スリーブ状態の様な低パワー状態にあれば、当該プロセッサは、割り込みに応答するために満タン状態の様な高パワー状態へ移行するのに時間が必要であろう。従って、既により高いパワー状態にあるプロセッサが、割り込み提示にとってより良い選択肢となろう。パワーマネジャ５２からのプロセッサ状態には、更に、オフラインレジスタ５４からのオフライン状態が含まれていてもよい。オフライン状態は、システム５上で実行しているソフトウェアによってプログラムされていてもよい。所与のプロセッサがオフラインとしてオフラインレジスタ５４に指し示されている場合は、当該プロセッサは割り込みを果たす上で利用できないということになり、従って、割り込み提示先に選択されない。
【００１８】
プロセッサ６０Ａ−６０Ｂからのプロセッサ状態には、割り込みが、現在、当該プロセッサで有効になっているか否かの指示が含まれていてもよい。現在、割り込みが無効にされているプロセッサは、現在、割り込みが有効にされているプロセッサよりも、提示される割り込みを迅速に受諾する可能性が低いであろう。１つの実施形態では、プロセッサ６０Ａ−６０Ｂは、割り込み有効ビット又は割り込み無効ビットを格納するレジスタを含んでいてもよい。ビットは、外部から監視できるようにプロセッサ６０Ａ−６０Ｂによって出力されてもよい。プロセッサ６０Ａ−６０Ｂからの他のプロセッサ状態には、例えば、プロセッサの特権状態の指示が含まれていてもよい。低特権状態（例えばユーザー状態）にあるプロセッサはアプリケーションコードを実行しているものであり、一方、高特権状態（例えばスーパーバイザー状態）にあるプロセッサはオペレーションシステムコードを実行しているものとしてもよい。低特権状態にあるプロセッサは、高特権状態にあるプロセッサよりも割り込みを提示するにはより良い選択肢となろう。様々な実施形態では、何れの他のプロセッサ状態が考慮されてもよい。
【００１９】
プロセッサ及び割り込みコントローラの仮想化をサポートしている実施形態では、割り込みの経路指定にあたり、追加のプロセッサ状態が考慮されてもよい。その様な環境では、周辺デバイス（ひいてはその割り込み）は、ゲストオペレーティングシステム（ＯＳ）にとってプライベートとされている。即ち、デバイスはゲストＯＳへ割り当てられており、デバイスが当該ゲストＯＳへ割り当てられた状態でなくなるまで、当該デバイスはシステム上で実行している他のゲストＯＳによる使用には利用できなくなっている。ゲストＯＳにとってプライベートである割り込みの場合、割り込みが既にゲストＯＳを実行しているプロセッサのうちの１つへ経路指定されたなら、割り込み待ち時間を短縮できるであろう。それぞれのプロセッサは、どのゲストＯＳが当該プロセッサ上で実行中であるかの指示（例えばゲストタグ）を割り込みコントローラへ提示するように構成されていて、割り込みコントローラは割り込みの経路指定先のプロセッサを選択する際に当該指示を考慮するように構成されていてもよい。選択されたプロセッサが割り込みに応答しなかったことを判定するのにタイムアウトがサポートされていて、ハイパーバイザー／仮想マシンモニタを実行しているプロセッサがタイムアウトに応えて選択されてもよい。所望のゲストＯＳを実行しているプロセッサが無いなら、残っている経路指定規則を使用してプロセッサが選択されることになろう。幾つかの実施形態では、ハイパーバイザー／仮想マシンモニタに割り込むのに異なった割り込み指示が使用されてもよい（例えば、ハイパーバイザー／仮想マシンモニタ及びゲストのそれぞれに別々のＩＲＱがあってもよい）。その様な実施形態では、所望のゲストＯＳがどのプロセッサでも実行されていないとき、ハイパーバイザー／仮想マシンモニタＩＲＱがアサートされることになろう。
【００２０】
或る実施形態では、割り込みコントローラ５０は、１つ又はそれ以上のタイムアウトをサポートしていてもよい。選択されたプロセッサへの割り込みの提示に応えて、割り込みコントローラ５０は、タイムアウトカウンタを、タイムアウトレジスタ５８からの対応するタイムアウト値で初期化してもよい。選択されたプロセッサが割り込みに応答すること無くタイムアウトが満了したなら、割り込みコントローラ５０は、割り込みを評価し直し、割り込みを別のプロセッサへ提示することになろう。その結果、元々選択されたプロセッサが応答に遅延を来している場合、別のプロセッサが選択され応答することになる。１つの実施形態では、提示は、先に選択されたプロセッサから撤回されていない。従って、どちらでも最初に応答したプロセッサに割り込みが提供されることになる。他の実施形態では、提示は、先に選択されたプロセッサから（例えばそのＩＲＱをデアサートすることにより）撤回されてもよい。
【００２１】
タイムアウトは、ソフトウェアプログラム可能であって、特定の事象の期待待ち時間に基づいていてもよい。例えば、或るプロセッサで割り込みが無効になっている場合、それら割り込みは典型的な時間量（例えば２０マイクロ秒）にわたって無効のままにされる。タイムアウトは典型時間より僅かに長めにプログラムされていてもよく、そうすると、プロセッサは、割り込みが典型的な時間量にわたって無効にされている場合タイムアウトが起こる前に割り込みを有効にして割り込みを受諾することができるであろう。プロセッサが低パワー状態にある場合、プロセッサが低パワー状態を脱する間に一定の時間量（例えば６０マイクロ秒）が経過するかもしれない。タイムアウトは、この時間量より僅かに長めにプログラムされていてもよく、そうするとプロセッサはタイムアウトが起こる前に満タン状態に達し割り込みを受諾することができるであろう。
【００２２】
或る実施形態では、複数のタイムアウト値がサポートされていて、タイムアウトレジスタ５８へプログラムされていてもよい。それぞれのタイムアウト値は、プロセッサ状態及び関連付けられている割り込み受諾待ち時間に対応していてもよい。割り込み提示先のプロセッサが選択されたことに応えて、割り込みコントローラ５０は、タイムアウトカウンタを当該プロセッサの状態に対応しているタイムアウトで初期化してもよい。別の実施形態では、タイムアウト値は、選択されたプロセッサの現在状態に依存し、なお且つ現在選択されているプロセッサがタイムアウトした場合に選択されそうな次のプロセッサの現在状態に依存するものであってもよい。割り込みがプロセッサへ提示され、プロセッサが受信確認を遂行するより前にタイムアウトが満了した場合、プロセッサは無応答であると見なされ、プロセッサの無応答は以降の割り込み経路指定オペレーションに影響を及ぼすことになる。
【００２３】
それぞれのプロセッサについて測定される（例えば、ＩＲＱから割り込み受信確認よる割り込み受諾までの）タイムアウト値に加え、タイムアウトはそれぞれの割り込みについて測定されてもよい。割り込みタイムアウトは、割り込みの所与のプロセッサへの経路指定から割り込みのサービス提供までが測定されてもよい。割り込みタイムアウトの満了は、上述したプロセッサについてのタイムアウトの満了と同様に、割り込みが評価し直しされ異なったプロセッサに割り込みが提示されることにつながる。或る実施形態では、割り込みがタイムアウトしても、プロセッサが無応答であると見なされることにはならず、ひいては以降の割り込み経路指定オペレーションには影響を及ぼさない。
【００２４】
或る実施形態では、割り込みコントローラ５０は、プロセッサからの割り込み受信確認に応えてプロセッサへ配信される割り込みを不可分式にマスクしてもよい。割り込みコントローラ５０は、割り込みコントローラ５０によってサポートされているそれぞれの割り込みについてマスクビットを含むことのできるマスクレジスタ５６を含んでいてもよい。割り込みコントローラ５０は、マスクビットを、割り込みをマスクする場合はマスク状態へ設定することができる。マスクビットは、更に、割り込みをマスクしない場合はマスク解除状態へ設定される。或る実施形態では、マスク状態は設定状態であり、マスク解除状態はクリア状態であるが、他の実施形態で逆の状態割り当てが使用されてもよい。
【００２５】
不可分式に割り込みをマスクする場合、割り込みのマスクは、たとえ次の割り込み受信確認が可能な限り早く受信されたとしても、当該の次の割り込み受信確認に応えて割り込みが提供されることのないように行われる。割り込みコントローラ５０がパイプライン化されている場合、例えば、マスキングの効果は、次の割り込み受信確認が割り込み状態にアクセスする前に、パイプラインを行きつくところまでパスされてゆく。１つの実施形態では、割り込みコントローラ５０は割り込み受信確認を直列化し、１つの割り込み受信確認が、先の割り込み受信確認によってマスクされるべき割り込みを検知することのないようにしていてもよい。割り込みの不可分式マスキングは、上述したプロセッサ状態把握割り込み経路指定から独立に実施されるものであり、同様に単一プロセッサ実施形態でも実施されるものであることを指摘しておく。
【００２６】
上述したように、オフライン状態は、特定のプロセッサが割り込みに利用できないことを指し示すようにシステム５内（プロセッサ６０Ａ−６０Ｂ上）で実行しているソフトウェアによってプログラム可能とされていてもよい。対照的に、低パワー状態にあるプロセッサは割り込み受諾に当たりより長い待ち時間を生じさせることにはなろうが、低パワー状態プロセッサはそれでもなお割り込みに利用できる。或る実施形態では、割り込みコントローラ５０は、オフラインプロセッサには割り込みを提示しない。ソフトウェアに、所与のプロセッサへ割り込みが経路指定されることを、それがオフラインであることをもって阻止させる理由は様々ある。例えば、プロセッサは、重要コードシーケンスを実行しているかもしれず、簡潔性の観点から又は安全性の観点から、割り込みを阻止するのが望ましいこともある。コードシーケンスは、例えばブートコードシーケンスであるかもしれない。重要と考えられる他のコードシーケンスは、秘密が格納されている場所の様な細心の注意を払うべきメモリ場所にアクセスするコードシーケンスである。他の例は、パワー関連であろう。即ち、プロセッサがオフラインであれば、システム全体にとってはパワー効率がより高いということもあろう。システムの熱エンベロープにプロセッサをオンラインにしておく十分な余裕がないかもしれない。即ち、プロセッサがオンラインになったなら温度が上がり過ぎないとも限らない。
【００２７】
以上に論じられている様に、割り込みコントローラ５０は、割り込みをプロセッサへ提示するように構成されている。図示の実施形態では、割り込みを提示するのにＩＲＱ信号がアサートされてもよい。他の実施形態は、割り込みメッセージをプロセッサへ通信し、プロセッサがメッセージを捕えて受信確認することになる。プロセッサは、何れの所望の様式で提示に応答していてもよい。例えば、以上に論じられている割り込み受信確認（ＩＡｃｋ）が送信されてもよい。プロセッサが、割り込みコントローラによって提示された割り込みを受諾しようとしているという何らかの肯定的な確認が応答を構成していてもよい。更に他の実施形態は、提示されている割り込みを明示的に受諾又は拒絶するようになっていてもよい。
【００２８】
周辺デバイス６４Ａ−６４Ｂには、何れの所望の入力／出力デバイスも又はシステム５に含まれている他のハードウェアデバイスも含めることができる。例えば、周辺デバイス６４Ａ−６４Ｂは、イーサネット（Ｒ）ＭＡＣの様な１つ又はそれ以上のネットワークキングメディアアクセスコントローラ（ＭＡＣ）又はワイヤレスファイデリティ（ＷｉＦｉ）コントローラの様なネットワーク化周辺デバイスを含んでいてもよい。周辺デバイス６４Ａ−６４Ｂには、様々な音声処理デバイスを含む音声ユニットが含まれていてもよい。周辺デバイス６４Ａ−６４Ｂには、１つ又はそれ以上のデジタル信号プロセッサが含まれていてもよい。周辺デバイス６４Ａ−６４Ｂは、タイマー、オンチップ秘密メモリ、暗号化エンジンなど、又はそれらの何らかの組合せの何れの他の所望の機能を含んでいてもよい。周辺デバイス６４Ａ−６４Ｂは、グラフィック処理ハードウェア、映像処理ハードウェア、映像エンコーダ／デコーダ、及び／又はディスプレイハードウェアを含んでいてもよい。
【００２９】
それぞれの周辺デバイス６４Ａ−６４Ｂは、１つ又はそれ以上の割り込みを割り込みコントローラ５０へ通信することができる。図示の実施形態では、それぞれの周辺デバイス６４Ａ−６４Ｂは、割り込みを割り込みコントローラ５０へ合図する割り込み信号を含んでいてもよい。幾つかのデバイスは、複数の割り込み信号を含むものもあろう。更にまた、他のデバイスには、割り込み及び仮にあるなら関連の状態を運ぶのに割り込みメッセージを使用するものもあろう。
【００３０】
プロセッサ６０Ａ−６０Ｂは、何れかの命令設定アーキテクチャを実装していて、当該命令設定アーキテクチャに定義されている命令を実行するように構成されていてもよい。プロセッサ６０Ａ−６０Ｂは、スケーラ、スーパースケーラ、パイプライン式、スーパーパイプライン式、順不同、順繰り、推論的、非推論的など、又はそれらの組合せを含む何れかのマイクロアーキテクチャを採用していてもよい。プロセッサ６０Ａ−６０Ｂは、回路構成を含んでいてもよく、随意的にはマイクロコーディング技法を実装していてもよい。プロセッサ６０Ａ−６０Ｂは対称である必要はない。即ち、プロセッサ６０Ａ−６０Ｂは、異なった命令セットを実装していてもよい。例えば、プロセッサ６０Ａ−６０Ｂには、汎用中央処理ユニット（ＣＰＵ）、特殊用途プロセッサ、埋め込みプロセッサ、デジタル信号プロセッサなどを含めることができる。
【００３１】
ＰＳｔａｔｅを割り込みコントローラ５０へ提供すること及びＩＲＱを割り込みコントローラ５０から受信することに加え、プロセッサ６０Ａ−６０Ｂは、割り込みコントローラ５０と通信するためにインターフェース６２を実装していてもよい。相互接続６２は、プロセッサ６０Ａ−６０Ｂと割り込みコントローラ５０の間でレジスタアクセスオペレーション（例えば読み出し及び書き込み）を運んでいてもよい。これらのオペレーションは、アドレスを含んでおり、アドレスが割り込みコントローラ５０によってデコードされ、読み出し／書き込みされるレジスタが識別されることになる。アドレスは、プロセッサ６０Ａ−６０Ｂのメモリアドレス空間の部分であってもよい（即ち、レジスタはメモリマップされていてもよい）。代わりに、アドレスは、構成空間、Ｉ／Ｏ空間、又は何れかの他のアドレス空間の部分であってもよい。
【００３２】
レジスタアクセスオペレーションの１つは、ＩＡｃｋレジスタに対する書き込みオペレーションであってもよい。ＩＡｃｋレジスタ読み出しは、以上に論じられている割り込み受信確認であってもよいし、するとＩＡｃｋレジスタ読み出しに応答して返されるデータは、プロセッサへ配信されようとしている割り込みに対応する割り込みベクトルであってもよい。他のレジスタアクセスオペレーションには、オフラインレジスタ５４及び（単数又は複数の）タイムアウトレジスタ５８の読み出し又は書き込みがあろう。マスクレジスタ５６は、２つのレジスタ書き込みオペレーションを使用して更新されてもよい。マスク設定レジスタへの書き込みは、マスクレジスタ内に１つ又はそれ以上のマスクビットを設定することであろう（例えば、識別されたマスクビットをマスク状態に入れる）。マスククリアレジスタへの書き込みは、１つ又はそれ以上のマスクビットをクリアにする（例えば、識別されたマスクビットをマスク解除状態に入れる）。マスク設定レジスタとマスククリアレジスタは異なったアドレスを有しており、アドレスが割り込みコントローラ５０によってデコードされて、マスクレジスタ内のビットが設定又はクリアされることになる。即ち、マスク設定レジスタとマスククリアレジスタは、物理的には存在しないが、その代わりに、マスクレジスタ上に起こるオペレーションを特定するものである。同様に、ＩＡｃｋレジスタは、物理的に存在しないが、レジスタを読み出しているプロセッサへの割り込みベクトルの配信を生じさせるものである。他のレジスタアクセスオペレーションとしては、割り込みコントローラ５０内の他のレジスタ（図１には示されていない）の読み出し／書き込みがあろう。
【００３３】
インターフェース６２は、何れの構成を有していてもよい。例えば、インターフェース６２は、メモリオペレーションや他の種類のオペレーションをプロセッサ６０Ａ−６０Ｂから送信するのにも使用されている汎用インターフェース（例えば、バス、ポイント・ツー・ポイント相互接続など）であってもよい。インターフェース６２は、プロセッサ６０Ａ−６０Ｂと割り込みコントローラ５０の間の１つ又はそれ以上の他のユニットを通過していてもよい。例えば、図１０に示されている実施形態では、インターフェースはブリッジ／ＤＭＡユニットを通過している。
【００３４】
上述の様に、プロセッサ６０Ａ−６０Ｂは様々なパワー状態にある。満タン状態では、プロセッサは、いつでも命令を実行できる態勢にあり、割り込みを受諾することができるであろう。満タン状態には、オペレーションが（例えば、仕事量、利用できるパワー、など、に依存して）サポートされ得る複数の電圧／周波数ペアが含められる。１つ又はそれ以上の低パワー状態もある。低パワー状態では、プロセッサ６０Ａ−６０Ｂは、アイドル中（命令を実行していない）であり、満タン状態へ移行するのに或る期間が必要であろう。移行の期間は特定の低パワー状態に依存する。例えば、プロセッサはクロックゲート制御されているかもしれず、するとプロセッサではクロックはトグルしていない。クロックを再起動させプロセッサに実行の準備をさせるには数サイクルが必要になろう。別の低パワー状態では、プロセッサ内の論理回路構成へのパワーはゲート制御されているが、プロセッサ内のキャッシュの様なメモリアレイはなおパワー供給されているということもある。その様なパワーゲート制御状態から満タン状態への復帰には、論理回路構成のパワー供給を上げ、パワーが安定するのを待つことが含まれる。更に別の低パワー状態では、プロセッサ論理回路構成及びメモリアレイへのパワーがゲート制御されているということもある。その様なパワーゲート制御状態からの復帰には、回路構成のパワー供給を上げることが含まれると同時にメモリアレイを初期化することが含まれる。他の低パワー状態もあり得る。様々な低パワー状態は、プロセッサのスリープ状態と呼ばれることもある。
【００３５】
システム５の様々な相互接続は、図１には、割り込みの処理に関連して示されていることを指摘しておく。しかしながら、所望に応じ、様々な他の相互接続が提供されよう。加えて、システム５では様々な他の構成要素（例えば、メモリコントローラ、メモリコントローラへ連結されているメモリなど）が提供されていてもよい。図１に示されている構成要素の１つ又はそれ以上及び／又は他の構成要素は、システム・オン・チップとして単一の集積回路へ一体化されていてもよいことを更に指摘しておく。図１に示されている各種構成要素は幾つの数であってもよい（例えば、任意数のプロセッサ６０Ａ−６０Ｂ、任意数の周辺デバイス６４Ａ−６４Ｂなど）。
【００３６】
次に図２を参照すると、割り込みコントローラ５０の１つの実施形態の、割り込みをプロセッサへ経路指定するオペレーションを例示するフローチャートが示されている。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ５０の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び／又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ５０は、図２に示されているオペレーションを実施するように構成されていてもよい。
【００３７】
様々なプロセッサ６０Ａ−６０Ｂに対応するＰＳｔａｔｅを使用して、割り込みコントローラ５０は、プロセッサ６０Ａ−６０Ｂのうちのどれが割り込みの提示先として適格かを識別する（ブロック７０）ように構成されていてもよい。所与のプロセッサのＰＳｔａｔｅが（恐らくは他のプロセッサのＰＳｔａｔｅに比較して）、当該プロセッサへ割り込みが提示されることを受諾できると指し示していれば、当該プロセッサは割り込みの提示先として適格ということになろう。幾つかのプロセッサは不適格であるかもしれない。例えば、既に割り込みが提示されていて、タイムアウトしてしまっているプロセッサは、割り込みにとって不適格ということになろう。割り込みを受諾することの他に割り込みを拒絶する通信を実施している実施形態では、割り込みを拒絶したプロセッサは不適格ということになろう。オフラインであるプロセッサは不適格となろう。加えて、所与の割り込みは、プロセッサ６０Ａ−６０Ｂのサブセットを標的とするように（例えば、割り込みメッセージの部分として、又は割り込みと関連付けられているプログラム可能な状態により）指定されていてもよい。標的とされていないプロセッサは不適格ということになろう。
【００３８】
割り込みコントローラ５０は、適格プロセッサのうちの１つを選択し（ブロック７２）、選択されたプロセッサへ割り込みを提示する（例えば、選択されたプロセッサへＩＲＱをアサートする）（ブロック７４）ように構成されていてもよい。割り込みコントローラ５０は、選択されたプロセッサについてタイムアウトカウンタを、恐らくは幾つかの実施形態では選択されたプロセッサのＰＳｔａｔｅに基づいて、初期化する（ブロック７６）ように構成されていてもよい。割り込みコントローラ５０は、割り込みが受諾されたかどうかを判定する（判定ブロック７８）ように構成されていてもよい。例えば、割り込みコントローラ５０は、プロセッサからの割り込み受信確認を検知するようになっていてもよい。割り込みが受諾された場合（判定ブロック７８、「イエス」の分岐）、割り込みの経路指定は完了することになる。割り込みがまだ受諾されておらず（判定ブロック７８、「ノー」の分岐）、現在の割り込み提示先のプロセッサについてのタイムアウトが満了していない（判定ブロック８０、「ノー」の分岐）場合、割り込みコントローラ５０は、タイムアウト及び割り込み受諾についてチェックを継続することになる。割り込みがなお受諾されず（判定ブロック７８、「ノー」の分岐）、割り込み提示先のプロセッサについてのタイムアウトが感知された（判定ブロック８０、「イエス」の分岐）場合、割り込みコントローラ５０は、プロセッサは割り込みにとって不適格であると考え（ブロック８２）、別の適格プロセッサを選択して（ブロック７２）、割り込みを提示する（ブロック７４）ことになる。
【００３９】
次に図３を参照すると、割り込みコントローラ５０の１つの実施形態の、割り込み受信確認（ＩＡｃｋ）に応えたオペレーションを例示するフローチャートが示されている。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ５０の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び／又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ５０は、図３に示されているオペレーションを実施するように構成されていてもよい。
【００４０】
割り込みコントローラ５０は、プロセッサへ経路指定された割り込みを識別する割り込みベクトルを返してもよい（ブロック８４）。２つ以上の割り込みが同時にプロセッサへ提示された場合、割り込みコントローラ５０は提示された割り込みのうちの１つを選択することになる。例えば、最も小さい番号の割り込みベクトルが選択されてもよいし、又は最も大きい番号の割り込みが受諾されてもよい。別の実施形態では、最も古い割り込みが選択されてもよい。割り込み間に優先順位を実施している実施形態では、優先順位の最も高い割り込みが選択されることになろう。割り込みは、ランダムに選択されてもよい。割り込みコントローラ５０は、更に、割り込みベクトルによって識別された割り込みを不可分式にマスクしてもよい（ブロック８６）。
【００４１】
次に図４を参照すると、割り込みコントローラ５０による適格プロセッサの識別（図２より、ブロック７０）の１つの実施形態を例示するフローチャートが示されている。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ５０の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び／又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ５０は、システム内のそれぞれのプロセッサについて図４に示されているオペレーションを実施するように構成されていてもよい。
【００４２】
プロセッサがオフラインである（オフラインレジスタに指し示されている）（判定ブロック９０、「イエス」の分岐）又は割り込みが既にプロセッサへ経路指定されている（判定ブロック９２、「イエス」の分岐）場合、割り込みコントローラは、プロセッサを不適格と識別する（ブロック９４）ように構成されていてもよい。そうでない場合で、プロセッサがスリープ状態又は他の低パワー状態にある（判定ブロック９６、「イエス」の分岐）場合、割り込みコントローラ５０は、プロセッサを適格と識別し、プロセッサを適格性グループ３に含める（ブロック９８）ように構成されていてもよい。プロセッサがオフラインでなく（判定ブロック９０、「ノー」の分岐）、既に経路指定されてはいず（判定ブロック９２、「ノー」の分岐）、スリープ状態でなく（判定ブロック９６、「ノー」の分岐）、プロセッサが無応答であるか又はプロセッサで割り込みが無効になっているかのどちらかである（判定ブロック１００、「イエス」の分岐）場合、割り込みコントローラ５０は、プロセッサを適格と識別し、プロセッサを適格性グループ２に含める（ブロック１０２）ように構成されていてもよい。
【００４３】
先述の様に、幾つかの実施形態では、プロセッサ６０Ａ−６０Ｂのサブセットが、所与の割り込みの狙い先として識別されることもある。その様な実施形態では、標的とされるサブセットに含まれているプロセッサのみが適格プロセッサということになろう。標的とされるサブセットにないプロセッサは、それらが割り込みの提示先として選択されることのない点でオフラインプロセッサと同様式に扱われる。
【００４４】
割り込みについて優先順位を実施している実施形態では、適格プロセッサの識別には更に優先順位も織り込まれる。例えば、プロセッサが、現在、優先順位のより高い割り込みを処理している場合は、プロセッサは割り込みにとって適格でない（又は一部の他のプロセッサよりも適格性に劣る）と見なされることになろう。優先順位のより低い割り込みを処理しているプロセッサは、優先順位のより高い割り込みを処理するように割り込みをかけられてもよく、ひいては優先順位のより高い割り込みにとって適格であると考えられることになろう。
【００４５】
適格プロセッサのグループ分けは、割り込み提示についての順番又は好ましさであってもよく、適格プロセッサの中で、グループ１は最も好ましい、グループ２は次いで最も好ましい、そしてグループ３はあまり好ましくない、としてもよい。グループ１のプロセッサは、低パワー状態にはなく、割り込みに応答していて、割り込みが無効になっておらず、その結果、それらは提示された割り込みを低待ち時間で受諾できる可能性が最も高いということになる。グループ２のプロセッサは、同様に低パワー状態にはないが、無応答であるか又は現在割り込みが無効になっている。従って、平均して、グループ１よりも高い待ち時間が予想されることになる。グループ３のプロセッサは、低パワー状態にあり、従って、このグループについては平均して最も高い待ち時間が予想されることになる。
【００４６】
以上の論考に基づき、図５のフローチャートは、割り込みコントローラ５０での適格プロセッサの選択（図２のブロック７２）の１つの実施形態を例示するものである。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ５０の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び／又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ５０は、図５に示されているオペレーションを実施するように構成されていてもよい。
【００４７】
グループ１が空でない場合（判定ブロック１０６、「ノー」分岐）、割り込みコントローラ５０は、グループ１からプロセッサを選択する（ブロック１０８）ように構成されていてもよい。グループ１が空であり（判定ブロック１０６、「イエス」の分岐）、グループ２が空でない（判定ブロック１１０、「ノー」の分岐）場合、割り込みコントローラ５０は、グループ２からプロセッサを選択する（ブロック１１２）ように構成されていてもよい。グループ１が空（判定ブロック１０６、「イエス」の分岐）で、グループ２が空（判定ブロック１１０、「イエス」の分岐）で、グループ３が空でない（判定ブロック１１４、「ノー」の分岐）場合、割り込みコントローラ５０は、グループ３からプロセッサを選択する（ブロック１１６）ように構成されていてもよい。所与のグループ内で、何れかの適格プロセッサが選択されることになろう。例えば、最も小さい番号のプロセッサが選択されてもよいし、最も大きい番号のプロセッサが選択されてもよい。プロセッサはランダムに選択されてもよいし、直近に選択されていないプロセッサが選択されてもよい。
【００４８】
次に図６を参照すると、割り込みコントローラ５０の１つの実施形態のブロック線図が示されている。図６の実施形態では、割り込みコントローラ５０は、レジスタインターフェースユニット１２０と、マスク／ソフトウェア（ＳＷ）ＯＲユニット１２２と、割り込みルータ１２４と、プロセッサスケジューラ１２６Ａ−１２６Ｂの様な複数のプロセッサスケジューラとを含んでいる。レジスタインターフェースユニット１２０は、ＩＣレジスタインターフェース６２、並びにマスク／ＳＷ  ＯＲユニット１２２、割り込みルータ１２４、及び随意的にプロセッサスケジューラ１２６Ａ−１２６Ｂへ連結されていてもよい。概して、レジスタインターフェースユニット１２０は、インターフェース６２上のレジスタ読み出し／書き込みオペレーションを介して制御又は更新される、割り込みコントローラ５０内の何れかの他の構成要素へ連結されていてもよい。マスク／ＳＷ  ＯＲユニット１２２は、マスクレジスタ５６を含んでいて、システム内の様々な割り込みソースからの割り込みを受信するように連結されていて、割り込みルータ１２４へ連結されていてもよい。割り込みルータ１２４は、プロセッサのオフライン状態及び他のＰＳｔａｔｅを受信するように連結されていて、タイムアウトレジスタ５８を含んでいて、プロセッサスケジューラ１２６Ａ−１２６Ｂへ連結されていてもよい。それぞれのプロセッサスケジューラ１２６Ａ−１２６Ｂは、ＩＲＱ信号を対応するプロセッサ６０Ａ−６０Ｂへ提供するように連結されていてもよい。
【００４９】
マスク／ＳＷ  ＯＲユニット１２２は、割り込みソース（例えば周辺デバイス６４Ａ−６４Ｂ）から受信された割り込みにマスクを適用し、マスクされた割り込みが割り込みルータ１２４へ提供されるように構成されていてもよい。或る実施形態では、マスク／ＳＷ  ＯＲユニット１２２は、更に、プロセッサ上で実行しているソフトウェアに（あたかも対応するソースが割り込みをアサートしたかの様に）割り込みを引き起こさせるメカニズムを提供していてもよい。ソフトウェアは、インターフェース６２上で、所望の割り込みをもたらすレジスタアクセスオペレーションを送信してもよい。マスク／ＳＷ  ＯＲユニット１２２は、ソフトウェア割り込みを各ソースから受信された実際の割り込みと論理的ＯＲ処理してそれぞれの割り込みを発生させ、論理的ＯＲ処理された割り込みをマスクレジスタ５６に従ってマスクして、マスクされた割り込みを発生させる。他の実施形態は、ソフトウェアＯＲを実施しておらず、単純に、割り込みソースから受信された割り込みをマスクしてマスクされた割り込みを割り込みルータ１２４へ提供していてもよい。
【００５０】
割り込みルータ１２４は、マスクされた割り込みを受信し、そして割り込みをプロセッサへ、オフライン状態、ＰＳｔａｔｅ、タイムアウトなどに基づいて経路指定するように構成されていてもよい。即ち、割り込みルータ１２４は、１つの実施形態では、図２のフローチャートを実施していてもよい。割り込みルータは、割り込みの経路指定先のプロセッサに対応するプロセッサスケジューラ１２６Ａ−１２６Ｂに合図することになろう。
【００５１】
それぞれのプロセッサスケジューラ１２６Ａ−１２６Ｂは、割り込みルータ１２４からの割り込みの受信に応答して、対応するプロセッサ６０Ａ−６０ＢへのＩＲＱ信号をアサートするように構成されていてもよい。ＩＲＱ信号は、一般的な割り込み要求信号とすることができる。様々なプロセッサ実装は、更に、特殊目的の割り込み又は他の割り込みも同様にサポートしていてもよい。例えば、幾つかの実施形態は、ＩＲＱに加えて低待ち時間割り込みをサポートしていてもよい。実施形態は、図６に示されている外部デバイス割り込みに加えて様々なタイマー割り込みをサポートしていてもよい。プロセッサスケジューラ１２６Ａ−１２６Ｂは、外部デバイス割り込みに加えてＩＲＱ信号へのタイマー割り込みをスケジュールするように構成されていてもよいし、及び／又は、他の割り込みへのタイマー割り込みをスケジュールしたり、他の種類の割り込みをスケジュールしたりしていてもよい。
【００５２】
レジスタインターフェースユニット１２０は、インターフェース６２からのレジスタアクセスオペレーションをデコードし、割り込みコントローラ５０の他の構成要素と対話してレジスタアクセスオペレーションを完遂させるように構成されていてもよい。レジスタ読み出しオペレーションの場合、レジスタインターフェースユニット１２０は、レジスタ読み出しオペレーションからの読み出しデータを開始プロセッサへ戻すように構成されていてもよい。レジスタインターフェースユニット１２０は、レジスタアクセスオペレーションのアドレスをデコードしてどのレジスタがアクセスされようとしているかを判定するように構成されていてもよい。加えて、ソースプロセッサは、更に、どのレジスタがアクセスされようとしているのかを（例えば、ＩＡｃｋコマンドにはＩＡｃｋレジスタという様にプロセッサ毎のレジスタ）識別していてもよい。
【００５３】
次に図７を参照すると、１つの割り込みに対応する、マスク／ＳＷ  ＯＲユニット１２２部分の１つの実施形態のブロック線図が示されている。他の割り込みそれぞれについて同様の回路構成が提供されることになろう。図７に示されている回路構成は、ユニット１２２のオペレーションを例示する１つの実施形態であり、図７に示されている回路構成の何らかのブール等価物を含め他の実装が使用されていてもよい。図７の実施形態は、マスクフロップ１３０と、ＯＲゲート１３２と、ソフトウェア割り込みフロップ１３４と、ＯＲゲート１３６と、ＡＮＤゲート１３８とを含んでいる。
【００５４】
マスクフロップ１３０は、割り込みについてマスクビットを格納していてもよい（そして、ひいては他の割り込みについての同様のフロップ共々、マスクレジスタ５６の部分となっていてもよい）。マスクビットは、この実施形態では、割り込みをマスクする場合に設定され、割り込みをマスク解除する場合にクリアにされることになろう。従って、マスクフロップ１３０の反転出力がＡＮＤゲート１３８に提供されて、ＯＲゲート１３６によって出力された（ハードウェア生成か又はソフトウェア生成の何れかの）割り込みをマスクさせる。即ち、マスクビットが設定されれば、マスクフロップ１３０の反転出力がクリアされ、ＡＮＤゲート１３８の出力がクリアされる。マスクビットがクリアされれば、マスクフロップ１３０の反転出力が設定され、割り込みはマスクされた割り込みとしてＡＮＤゲート１３８を通過する。こうして、この実施形態では、割り込みはアクティブ・ハイである。他の実施形態は、アクティブ・ロー割り込みを使用していてもよく、ＮＡＮＤゲートが使用されていてもよい。ＯＲゲートは、外部割り込みをソフトウェア割り込みフロップ１３４の出力と論理ＯＲ処理する。従って、外部（ハードウェア）割り込みがアサートされるか又はソフトウェアが割り込みをアサートしたか何れかの場合、ＯＲゲート１３６による割り込み出力がアサートされる。
【００５５】
マスクビットがフロップ１３０で、この割り込みを受信確認しているプロセッサへ配信させることになるＩＡｃｋサイクルに応えて設定されるか、又はソフトウェアがマスク設定レジスタ（ＯＲゲート１３２）への書き込みによりマスクを設定するか、何れかであろう。割り込みコントローラによるＩＡａｃｋサイクルへの応答で自動的にマスクビットが設定される場合は、マスクビットの不可分式設定を実施していてもよい。次のＩＡｃｋサイクルは、従って、異なった割り込みを受信し（この割り込みは今やマスクされているため）、こうして複数のプロセッサによる割り込み読み出しでの競合状態は適切に対処されることになる。ソフトウェアにもマスクビットを設定することを許容している場合は、ソフトウェアが効率的に割り込みを無効にできるようにしていてもよい。ソフトウェアは、更に、例えば割り込みが果たされた後、マスクビットをクリアすることができる。
【００５６】
図示の実施形態では、ソフトウェアは、マスク設定レジスタへの書き込みオペレーションを実行することによってマスクレジスタ５６内にマスクビットを設定してもよい。書き込みデータの設定ビットは、どのマスクビットを設定するかを識別するものであってもよい。レジスタインターフェースユニット１２０は、マスク設定レジスタ書き込みをデコードし、書き込みデータに基づいてＳＷマスク設定信号をアサートすることになる。同様に、ソフトウェアは、マスククリアレジスタへの書き込みオペレーションを実行することもでき、書き込みデータの設定ビットは、どのマスクビットをクリアするかを識別するものであってもよい。レジスタインターフェースユニット１２０は、マスククリアレジスタ書き込みをデコードし、書き込みデータに基づいてＳＷマスククリア信号をアサートすることになる。
【００５７】
同様の様式で、ソフトウェアは、１つ又はそれ以上の割り込みを、割り込み設定レジスタ書き込みオペレーションでトリガしてもよい。書き込みデータは、どの割り込みビットを設定するかを識別するものであり、レジスタインターフェースユニット１２０は、対応するＳＷ割り込み設定信号をアサートしてフロップ１３４を設定させるようになっていてもよい。ソフトウェアが生成した割り込みをクリアする場合、ソフトウェアは割り込みクリアレジスタ書き込みオペレーションを発動してもよい。書き込みデータは、どの割り込みビットをクリアするかを（例えば、設定ビットが書き込みデータ内の対応するビット位置にあることで）識別するものであり、レジスタインターフェースユニット１２０は、対応するＳＷ割り込みクリア信号をアサートすることになる。
【００５８】
フロップ１３０と１３４はどちらも設定入力とクリア入力を有しているものとして示されている。フロップは、何れの所望の様式（例えば、設定−リセット（ＳＲ）フロップ、設定入力又はクリア入力に基づいてフロップを設定又はクリアする論理を有するＤフロップ、など）に実装されていてもよい。
【００５９】
図８は、割り込みの１つについての割り込みルータ１２４の１つの実施形態のブロック線図である。他の割り込みそれぞれについて同様の回路構成が提供されることになろう。図８の実施形態では、割り込みルータ１２４は、経路選択回路１４０と、タイムアウトコントロールユニット１４２（タイムアウトレジスタ５８を含んでいる）と、経路指定先のフロップ１４４Ａ−１４４Ｂのセットと、を含んでいてもよい。プロセッサ６０Ａ−６０Ｂそれぞれに経路指定先フロップ１４４Ａ−１４４Ｂが１つあってもよい。
【００６０】
経路選択回路１４０は、オフライン状態及びＰＳｔａｔｅの他にマスク／ＳＷ  ＯＲユニット１２２からのマスクされた割り込みを受信していてもよい。経路選択回路構成１４０は、図２に示されているオペレーションを実施して、適格プロセッサを識別し（ブロック７０）、適格プロセッサを選択する（ブロック７２）ことができる。幾つかの実施形態では、経路選択回路１４０は、図４及び図５に示されている実施形態を実装していてもよい。経路選択回路１４０は、ＳｅｔＲｏｕｔｅ信号（割り込みを果たすように構成されているプロセッサそれぞれに１つの信号）を出力することになる。選択されたプロセッサについてＳｅｔＲｏｕｔｅ信号がアサートされ、他のＳｅｔＲｏｕｔｅ信号はデアサートされる。それぞれのＳｅｔＲｏｕｔｅ信号は、各フロップ１４４Ａ−１４４Ｂの設定入力へ連結されていて、プロセッサスケジューラ１２６Ａ−１２６Ｂそれぞれへの出力信号となる。
【００６１】
この実施形態では、割り込みは、マスクされた割り込みがデアサートされるまで（「割り込みデアサート」はそれぞれのフロップ１４４Ａ−１４４Ｂのクリア入力へ連結される）、所与のプロセッサへ経路指定されたままにされる。即ち、割り込みは、それがプロセッサに受諾されるまで経路指定されたままにされる。従って、割り込みがタイムアウトし、割り込みが別のプロセッサへ経路指定されたとしても、割り込みは「タイムアウト」したプロセッサへ経路指定されたままになっている。この方式では、プロセッサがタイムアウトしたがその後割り込みに応答できる態勢になった場合、当該プロセッサへのＩＲＱはその時点でなおアサートされているであろう。他の実施形態は、タイムアウトの時点又は割り込みが別のプロセッサへ提示された時点で経路指定された状態をクリアしてもよい。
【００６２】
タイムアウトコントロールユニット１４２は、レジスタ５８へプログラムされているタイムアウト値に基づき、タイムアウトを測定する回路構成を含んでいてもよい。即ち、タイムアウトコントロールユニットは、プロセッサタイムアウトについて、ＩＲＱアサーションと受諾（又はタイムアウト）の間の時間をカウントするカウンタ、及び割り込みの所与のプロセッサへの経路指定と割り込みのサービス提供（又は割り込みのタイムアウト）の間の時間をカウントするカウンタを含んでいてもよい。タイムアウトが検知された場合、タイムアウトコントロールユニット１４２は、経路選択回路１４０へタイムアウトをアサートするように構成されていてもよく、すると経路選択回路１４０は割り込みを評価し直し、割り込みの経路指定先のプロセッサを選択することであろう。タイムアウトコントロールユニット１４２は、図２のブロック７６及び８０に示されているオペレーションを実施していてもよい（すると、経路選択１１０は、タイムアウトに応えてブロック８２を実施することになる）。
【００６３】
タイムアウトコントロールユニット１４２は、割り込み当たり２つのカウンタを実装していてもよく、また比較的多数の割り込みがあるかもしれないということを指摘しておく。或る実施形態では、タイムアウトカウンタにかかるハードウェアの費用を抑えるため、カウンタは様々なタイムアウトで共有されていてもよい。共有を成し遂げている或る実施形態が図９に示されている。図９の実施形態では、カウンタへのクロック入力の各クロックサイクルを増分するフリーランニングカウンタ１５０が示されている。カウンタ１５０は、様々な実施形態では、カウンタをクロックするクロックの周波数及びタイムアウトの所望範囲に基づき何れの数のビットを実装していてもよい。
【００６４】
カウンタ１５０のビットは、マルチプレクサ１５２及び１５４へ連結されていてもよい。マルチプレクサ１５２は、タイムアウトレジスタ５８からのプロセッサタイムアウトに基づいて制御されており、マルチプレクサ１５４は、タイムアウトレジスタ５８からの割り込みタイムアウトに基づいて制御されている。より厳密には、マルチプレクサ１５２及び１５４によって選択されるビットは、要求タイムアウト期間内で２回、状態を論理１へ変化させると期待されるビットということになる。選択されたビットは、立ち上がりエッジ検知回路構成１５６及び１５８それぞれへ給送され、するとそれら回路構成はティック信号を生成する。ティック信号は、選択されたビットが論理０から論理１へ変化する都度にアサートされる。
【００６５】
回路構成１５６からのティック信号は、プロセッサタイムアウトコントロールユニット１４２Ａへ連結されていてもよい。プロセッサタイムアウトコントロールユニット１４２Ａは、対応するプロセッサからのＩＡｃｋに応えて、又はＩＲＱがデアサートされたこと（ＯＲゲート１６２及びマルチプレクサ１６４）に応えて、タイムアウトカウンタ１６０をゼロに初期化するように構成されていてもよい。そうでなければ、マルチプレクサ１６６の出力が選択される。マルチプレクサ１６６は、ティック信号がアサートされ、プロセッサへのＩＲＱがアサートされ、そしてタイムアウトがまだ検知されていない（ＡＮＤゲート１６８）場合を除いては、カウンタ１６０からの現在値を選択するように構成されていてもよく、上述の場合には増分された値が選択される。こうして、ティック信号がアサートされる都度、タイムアウトカウンタ１６０は、ＩＲＱがアサートされたら、タイムアウトに至るまで増分されることになる。
【００６６】
コンパレータ１７０がカウンタ１６０の出力へ連結されており、コンパレータ１７０はカウンタを３に比較するように構成されていてもよい。カウンタが３であれば、タイムアウトが検知されることになる。カウンタ１５０からのカウンタビットは、選択されたタイムアウト期間内で２回、高をトグルするように選択されているので、ティック信号のティックが３つを数えたら、タイムアウトが超過したことが裏付けられる。この場合タイムアウトは完璧に正確というわけにはゆかなくとも、タイムアウトそれぞれにつき２ビットカウンタ１６０しか実装しておらずフリーランニングカウンタ１５０を共有しているわりには正確性は割り込みコントローラ５０の目的に適うに十分であろう。プロセッサタイムアウトコントロールユニット１４２Ａはタイムアウトを合図し、プロセッサが無応答であることを指し示すことになる。
【００６７】
割り込みタイムアウトコントロールユニット１４２Ｂは、プロセッサタイムアウトコントロールユニット１４２Ａと同様であり、回路構成１５８からのティック信号を使用するものであってもよい。割り込みタイムアウトコントロールユニット１４２Ｂの場合、タイムアウトは、割り込みのプロセッサへの経路指定から割り込みのサービス提供まで（例えば、マスクされた割り込みのデアサーションまで）を測定されることになる。カウンタ１７２は、割り込みのデアサーション又は割り込みの何れかのプロセッサへの経路指定（ＯＲゲート１７４）に応えて、マルチプレクサ１７６を通してゼロに初期化されることになる。その後、カウンタは、ティックに応えてマルチプレクサ１７８を通して増分され、その間もマスクされた割り込みはなおアサートされている（ＡＮＤゲート１８０）。カウンタ１７２が３に達したことをコンパレータ１８２が検知したとき、タイムアウトがアサートされることになる。
【００６８】
図９にはコントロールユニット１４２Ａ−１４２Ｂ（どちらもこの実施形態では図８に示されているタイムアウトコントロールユニット１４２の一部である）について特定の論理回路構成が示されているが、他の実施形態は任意の論理回路構成を使用してもよいことを指摘しておく。具体的には、例示されている回路構成の何らかのブール等価物が使用されていてもよい。加えて、他の実施形態では、所望に応じ、様々な他のタイムアウトを検知するのにより多くのタイマーが使用されていてもよい。
【００６９】
次に図１０を参照すると、システム５の別の実施形態のブロック線図が示されている。図１０の実施形態では、システム５は、外部メモリ１２Ａ-１２Ｂへ連結されている集積回路（ＩＣ）１０を含んでいる。図示の実施形態では、集積回路１０は、１つ又はそれ以上のプロセッサ１６とレベル２（Ｌ２）キャッシュ１８とを含む中央プロセッサユニット（ＣＰＵ）ブロック１４を含んでいる。他の実施形態は、Ｌ２キャッシュ１８を含んでいないものもあれば、追加のキャッシュレベルを含んでいるものもあろう。加えて、２つより多くのプロセッサを含んでいる実施形態、及びプロセッサ１６を１つしか含んでいない実施形態も考えられる。集積回路１０は、更に、１つ又はそれ以上の非リアルタイム（ＮＲＴ）周辺デバイス２０のセット、及び１つ又はそれ以上のリアルタイム（ＲＴ）周辺デバイス２２のセットを含んでいる。図示の実施形態では、ＲＴ周辺デバイスは、画像プロセッサ２４と、１つ又はそれ以上のディスプレイパイプ２６と、翻訳ユニット４６と、ポートアービタ２８とを含んでいる。他の実施形態では、より多い又は少ない画像プロセッサ２４、より多い又は少ないディスプレイパイプ２６、及び／又は所望に応じ幾つもの追加のリアルタイム周辺デバイスを含んでいてもよい。画像プロセッサ２４は、システム５内の１つ又はそれ以上のカメラから画像データを受信するように連結されていてもよい。同様に、ディスプレイパイプ２６は、システム内の１つ又はそれ以上のディスプレイを制御する１つ又はそれ以上のディスプレイコントローラ（図示せず）へ連結されていてもよい。画像プロセッサ２４は翻訳ユニット４６へ連結されていて、翻訳ユニット４６は更にポートアービタ２８へ連結されていてもよい。ポートアービタ２８は、その上、ディスプレイパイプ２６へ連結されていてもよい。図示の実施形態では、ＣＰＵブロック１４は、１つ又はそれ以上の周辺デバイス３２及び／又は１つ又はそれ以上の周辺デバイスインターフェースコントローラ３４へ連結されていてもよいとされるブリッジ／ダイレクトメモリアクセス（ＤＭＡ）コントローラ３０へ連結されている。ブリッジ／ＤＭＡコントローラ３０は、Ｉ／Ｏプロセッサ（ＩＯＰ）１８４を含んでいてもよい。周辺デバイス３２及び周辺デバイスインターフェースコントローラ３４の数は、様々な実施形態では、ゼロから任意の所望数まで異なっていてもよい。図１に示されているシステム５は、更に、Ｇ０  ３８Ａ及びＧ１  ３８Ｂの様な１つ又はそれ以上のグラフィックコントローラを含むグラフィックユニット３６を含んでいる。グラフィックユニット当たりのグラフィックコントローラの数及びグラフィックユニットの数は、他の実施形態では、異なっていてもよい。図１に示されている様に、システム５は、１つ又はそれ以上のメモリ物理的インターフェース回路（ＰＨＹ）４２Ａ−４２Ｂへ連結されているメモリコントローラ４０を含んでいる。メモリＰＨＹ４２Ａ−４２Ｂは、集積回路１０のピン上でメモリ１２Ａ−１２Ｂへ通信するように構成されている。メモリコントローラ４０は、更に、ポート４４Ａ-４４Ｅのセットを含んでいる。ポート４４Ａ−４４Ｂは、グラフィックコントローラ３８Ａ−３８Ｅへそれぞれ連結されている。ＣＰＵブロック１４は、ポート４４Ｃへ連結されている。ＮＲＴ周辺デバイス２０及びＲＴ周辺デバイス２２は、ポート４４Ｄ-４４Ｅへそれぞれ連結されている。メモリコントローラ４０に含まれるポートの数は、メモリコントローラの数と同様に、他の実施形態では異なっていてもよい。メモリＰＨＹ４２Ａ−４２Ｂ及び対応するメモリ１２Ａ−１２Ｂの数は、他の実施形態では、１つであってもよいし、又は２つより多くてもよい。割り込みコントローラ５０及びパワーマネジャ５２もまた図１０に示されている（また、図１に各々示されているオフラインレジスタ５４とマスクレジスタ５６とタイムアウトレジスタ５８を含んでいてもよい）。
【００７０】
図示の実施形態では、割り込みコントローラ５０は、周辺デバイスインターフェースコントローラ３４、周辺デバイス３２、グラフィックユニット３８Ａ−３８Ｂ、ＲＴ周辺デバイス２２、及びＮＲＴ周辺デバイス２０から、割り込みを受信することであろう。従って、この実施形態では、周辺デバイスインターフェースコントローラ３４、周辺デバイス３２、グラフィックユニット３８Ａ−３８Ｂ、ＲＴ周辺デバイス２２、及びＮＲＴ周辺デバイス２０は、図１の周辺デバイス６４Ａ−６４Ｂの実例である。他の実施形態では、上記のもののサブセットからの割り込みが割り込みコントローラ５０によって受信されていてもよい。図示の実施形態では、プロセッサ１６の何れかが割り込みを果たすこともあろうし、またＩＯＰ１８４が割り込みを果たすこともあろう。従って、この実施形態では、プロセッサ１６及びＩＯＰ１８４は、図１のプロセッサ６０Ａ−６０Ｂの実例ということになる。
【００７１】
加えて、この実施形態では、ＩＣレジスタインターフェース６２は、プロセッサ１６からＣＰＵブロック１４を通ってブリッジ／ＤＭＡコントローラ３０へ至り、次いで割り込みコントローラ５０へ至っている。より厳密には、ブリッジ／ＤＭＡコントローラ３０は、プログラムＩ／Ｏ（ＰＩＯ）オペレーションのマスターであるＰＩＯコントローラを含んでいてもよい。レジスタアクセスオペレーションは、この実施形態では、ＰＩＯオペレーションである。
【００７２】
１つの実施形態では、それぞれのポート４４Ａ−４４Ｅには特定のトラフィック型式が関連付けられていてもよい。例えば、１つの実施形態では、トラフィック型式は、ＲＴトラフィック、ＮＲＴトラフィック、及びグラフィックトラフィックを含んでいてもよい。他の実施形態は、以上のトラフィック型式に加えて、代えて、又はそれらのサブセットに加えて、他のトラフィック型式を含んでいてもよい。それぞれのトラフィック型式は、（例えば、要件及び挙動の観点で）特性を異にし、メモリコントローラは、特性に基づいてより高い性能が提供されるように、それらトラフィック形式に異なった対処の仕方をしていてもよい。例えば、ＲＴトラフィックは、それぞれのメモリオペレーションが特定の時間量内で果たされることを要件とする。オペレーションの待ち時間が特定の時間量を超過すれば、ＲＴ周辺デバイスにオペレーションエラーが起こる可能性がある。例えば、画像プロセッサ２４内で画像データが失われるかもしれないし、又はディスプレイパイプ２６の連結先のディスプレイ上に映し出される画像が視覚的に歪みを来すかもしれない。ＲＴトラフィックは、例えば等時性を特徴としている。他方、グラフィックトラフィックは、比較的高い帯域であるが、待ち時間に敏感というわけではない。プロセッサ１６からの様なＮＲＴトラフィックは、性能上の理由から、待ち時間にやや敏感ではあるが、高待ち時間でも生き残る。即ち、ＮＲＴトラフィックは、概して、何れの待ち時間でも、ＮＲＴトラフィックを生成するデバイスにオペレーションエラーを引き起こすことなく果たされることであろう。同様に、待ち時間にあまり敏感ではないが帯域の高いグラフィックトラフィックは、概して、何れの待ち時間でも果たされることであろう。他のＮＲＴトラフィックには音声トラフィックが含まれ、音声トラフィックは、比較的低帯域であり、概して妥当な待ち時間なら果たされることであろう。殆どの周辺デバイスのトラフィック（例えば、磁気式、光学式、又はソリッドステートのストレージ、の様なストレージデバイスへのトラフィック）もまたＮＲＴである。異なったトラフィック型式と関連付けられているポート４４Ａ−４４Ｂが提供されていることにより、メモリコントローラ４０は異なったトラフィック型式に並列して曝されることになる。
【００７３】
上述の様に、ＲＴ周辺デバイス２２は、画像プロセッサ２４とディスプレイパイプ２６とを含んでいてもよい。ディスプレイパイプ２６は、１つ又はそれ以上の画像フレームをフェッチし、それらフレームを配合してディスプレイ画像を作成する回路構成を含んでいてもよい。ディスプレイパイプ２６は、更に、１つ又はそれ以上の映像パイプラインを含んでいて、映像フレームが（比較的）静的な画像フレームと配合されて、映像フレームレートで表示されるフレームが作成されてもよい。ディスプレイパイプ２６の結果は、ディスプレイ画面に表示させる画素のストリームということになろう。ディスプレイ画面に表示させるために画素値がディスプレイコントローラへ送信される。画像プロセッサ２４は、カメラデータを受信し、データを画像へ加工してメモリに格納させていてもよい。
【００７４】
メモリコントローラ４０へ戻り、概して、ポートは、１つ又はそれ以上のソースと通信するためのメモリコントローラ４０側の通信ポイントということになろう。幾つかの場合には、ポートは或るソース専用とされていてもよい（例えば、ポート４４Ａ−４４Ｂは、グラフィックコントローラ３８Ａ−３８Ｂそれぞれの専用とされていてもよい）。他の場合には、ポートは複数のソースの間で共有されていてもよい（例えば、プロセッサ１６はＣＰＵポート４４Ｃを共有し、ＮＲＴ周辺デバイス２０はＮＲＴポート４４Ｄを共有し、ディスプレイパイプ２６や画像プロセッサ２４の様なＲＴ周辺デバイス２２はＲＴポート４４Ｅを共有していてもよい）。ポートは、１つ又はそれ以上のソースと通信するために単一のインターフェースへ連結されていてもよい。こうして、ソースがインターフェースを共有している場合、インターフェースのソース側にはソース同士の間で選択を行うためにアービタがあってもよい。例えば、Ｌ２キャッシュ１８は、メモリコントローラ４０に対しＣＰＵポート４４Ｃのためのアービタの役目を果たしていてもよい。ポートアービタ２８は、ＲＴポート４４Ｅのためのアービタの役目を果たし、同様のポートアービタ（図示せず）がＮＲＴポート４４Ｄのためのアービタとなっていてもよい。ポート上の単一ソース又はポート上のソースの組合せは、エージェントと呼ぶこともできる。それぞれのポート４４Ａ−４４Ｅは、各自のエージェントと通信するようにインターフェースへ連結されている。インターフェースは、何れの型式の通信媒体（例えば、バス、ポイント・ツー・ポイント相互接続など）であってもよく、何れのプロトコルを実装していてもよい。幾つかの実施形態では、ポート４４Ａ−４４Ｅはどれも同じインターフェース及びプロトコルを実装していてもよい。他の実施形態では、異なったポートは異なったインターフェース及び／又はプトロコルを実装していてもよい。更に他の実施形態では、メモリコントローラ４０にはポートが１つしかなくてもよい。
【００７５】
或る実施形態では、それぞれのソースは、ソースによって送信されるそれぞれのメモリオペレーションにサービスの質（ＱｏＳ）パラメータを割り当てていてもよい。ＱｏＳパラメータは、メモリオペレーションについて要求されるサービスレベルを識別するものである。高レベルのサービスを要求するＱｏＳパラメータ値を有するメモリオペレーションには、低レベルのサービスを要求するメモリオペレーションに勝る優先順位が与えられることになる。それぞれのメモリオペレーションは、フローＩＤ（ＦＩＤ）を含んでいてもよい。ＦＩＤは、メモリオペレーションフローの部分であるメモリオペレーションを識別するものである。或るフローのメモリオペレーション同士は、概して関連しているが、一方で異なったフローからのメモリオペレーションは、たとえ同じソース由来であっても、関連していない。ＦＩＤの一部分（例えばソースフィールド）はソースを識別していて、ＦＩＤの残部はフロー（例えばフローフィールド）を識別していてもよい。従って、ＦＩＤはトランザクションＩＤと同様であり、幾つかのソースは単純にトランザクションＩＤをＦＩＤとして送信していてもよい。その様な場合、トランザクションＩＤのソースフィールドはＦＩＤのソースフィールドということになり、トランザクションＩＤの（同じソース由来のトランザクション同士の間でトランザクションを識別している）シーケンス番号はＦＩＤのフローフィールドということになろう。幾つかの実施形態では、異なったトラフィック型式は、ＱｏＳパラメータの異なった定義を有しているかもしれない。即ち、異なったトラフィック型式は、異なったＱｏＳパラメータセットを有していてもよい。
【００７６】
メモリコントローラ４０は、それぞれのポート４４Ａ-４４Ｅで受信されたＱｏＳパラメータを処理するように構成されていて、相対的なＱｏＳパラメータ値を使用して、ポートで受信されたメモリオペレーションを、当該ポート由来の他のメモリオペレーション並びに他のポートで受信された他のメモリオペレーションに関して、スケジュールするようになっていてもよい。より厳密には、メモリコントローラ４０は、異なったＱｏＳパラメータセットから引き出されたＱｏＳパラメータ（例えば、ＲＴのＱｏＳパラメータ及びＮＲＴのＱｏＳパラメータ）を比較するように構成されていてもよく、ＱｏＳパラメータに基づいてスケジュールの決定を下すように構成されていてもよい。
【００７７】
幾つかの実施形態では、メモリコントローラ４０は、メモリオペレーションを保留するためにＱｏＳレベルをアップグレードするように構成されていてもよい。様々なアップグレードメカニズムがサポートされることであろう。例えば、メモリコントローラ４０は、或るフローのメモリオペレーションを、同じフロー由来のメモリオペレーションであってより高いＱｏＳレベルを特定しているＱｏＳパラメータを有する別のメモリオペレーションの受信に応えて保留するために、ＱｏＳレベルをアップグレードするように構成されていてもよい。このＱｏＳアップグレードの形式は、帯域内アップグレードと呼ばれており、というのも、通常のメモリオペレーション送信方法を使用して送信されたＱｏＳパラメータが、同じフロー内のメモリオペレーションについて暗黙のアップグレード要求としての役目も果たすからである。メモリコントローラ４０は、同じフロー由来ではなく同じポート又は同じソース由来のメモリオペレーションであって、より高いＱｏＳレベルを特定している新たに受信されたメモリオペレーションである保留中のメモリオペレーションを、プッシュするように構成されていてもよい。別の例として、メモリコントローラ４０は、１つ又はそれ以上のエージェントからのサイドバンドインターフェースへ連結するように構成されていて、サイドバンドインターフェースでのアップグレード要求の受信に応えてＱｏＳレベルをアップグレードするようになっていてもよい。別の例では、メモリコントローラ４０は、保留中のメモリオペレーションの相対的な古さを追跡するように構成されていてもよい。メモリコントローラ４０は、或る特定の古さにある古いメモリオペレーションのＱｏＳレベルをアップグレードするように構成されていてもよい。アップグレードが起こる古さは、古いメモリオペレーションの現在のＱｏＳパラメータに依存していてもよい。
【００７８】
プロセッサ１６は、何れの命令セットアーキテクチャを実装していてもよく、当該命令セットアーキテクチャに定義されている命令を実行するように構成されていてもよい。プロセッサ１６は、スケーラ、スーパースケーラ、パイプライン式、スーパーパイプライン式、順不同、順繰り、推論的、非推論的など、又はそれらの組合せを含む何れかのマイクロアーキテクチャを採用していてもよい。プロセッサ１６は、回路構成を含んでいてもよく、随意的にはマイクロコーディング技法を実装していてもよい。プロセッサ１６は、１つ又はそれ以上のレベル１キャッシュを含んでいてもよく、而してキャッシュ１８はＬ２キャッシュである。他の実施形態は、プロセッサ１６に複数のキャッシュレベルを含んでいることもあり、するとキャッシュ１８は階層内で次に下のレベルとなる。キャッシュ１８は、何れのサイズまた何れの構成（セット・アソシエイティブ型、ダイレクトマップ型、など）を採用していてもよい。
【００７９】
グラフィックコントローラ３８Ａ−３８Ｂは、何れのグラフィック処理回路構成であってもよい。概して、グラフィックコントローラ３８Ａ−３８Ｂは、表示させるべきオブジェクトをフレームバッファへレンダするように構成されていてもよい。グラフィックコントローラ３８Ａ−３８Ｂは、グフィックオペレーションの一部又は全部及び／又は特定のグラフィックオペレーションのハードウェアアクセラレーションを遂行するグラフィックソフトウェアを実行することのできるグラフィックプロセッサを含んでいてもよい。ハードウェアアクセラレーションの量及びソフトウェア実装は、実施形態により様々であろう。
【００８０】
ＮＲＴ周辺デバイス２０は、何れの非リアルタイム周辺デバイスを含んでいてもよく、それらは、性能上又は帯域上の理由から、メモリ１２Ａ−１２Ｂへの独立したアクセスが提供されている。即ち、ＮＲＴ周辺デバイス２０によるアクセスは、ＣＰＵブロック１４から独立しており、ＣＰＵブロックのメモリオペレーションと並行して進行する。周辺デバイス３２及び／又は周辺デバイスインターフェースコントローラ３４によって制御されている周辺デバイスインターフェースへ連結されている周辺デバイスの様な他の周辺デバイスもまた非リアルタイム周辺デバイスであるが、メモリへの独立したアクセスは要件とされない。ＮＲＴ周辺デバイス２０の様々な実施形態には、映像エンコーダ及びデコーダ、スケーラ／ローテータ回路構成、画像圧縮／圧縮解凍回路構成などが含まれよう。
【００８１】
ブリッジ／ＤＭＡコントローラ３０は、（単数又は複数の）周辺デバイス３２及び（単数又は複数の）周辺デバイスインターフェースコントローラ３４をメモリ空間へブリッジする回路構成を備えていてもよい。図示の実施形態では、ブリッジ／ＤＭＡコントローラ３０は、周辺デバイス／周辺デバイスインターフェースコントローラからのメモリオペレーションを、ＣＰＵブロック１４を通じてメモリコントローラ４０へブリッジすることができる。ＣＰＵブロック１４は、更に、ブリッジされたメモリオペレーションとプロセッサ１６／Ｌ２キャッシュ１８からのメモリオペレーションの間のコヒーレンスを維持することもできる。Ｌ２キャッシュ１８は、更に、ブリッジされたメモリオペレーションとプロセッサ１６からのメモリオペレーションとの調停をして、ＣＰＵインターフェース上をＣＰＵポート４４Ｃへ送信させる。ブリッジ／ＤＭＡコントローラ３０は、更に、周辺デバイス３２及び周辺デバイスインターフェースコントローラ３４に代わってＤＭＡオペレーションを提供してデータブロックをメモリへ及びメモリから転送させてもよい。より厳密には、ＤＭＡコントローラは、メモリ１２Ａ−１２Ｂへの又はメモリ１２Ａ−１２Ｂからのメモリコンコントローラ４０経由の転送を、周辺デバイス３２及び周辺デバイスインターフェースコントローラ３４に成り変わって遂行するように構成されていてもよい。ＤＭＡコントローラは、ＤＭＡオペレーションを遂行するように、プロセッサ１５によってプログラム可能であってもよい。例えば、ＤＭＡコントローラは、記述子によりプログラム可能であってもよい。記述子は、メモリ１２Ａ−１２Ｂに格納されているデータ構造であってＤＭＡ転送（例えば、ソースアドレス及び宛先アドレス、サイズなど）を記述するデータ構造である。代わりに、ＤＭＡコントローラは、ＤＭＡコントローラ内のレジスタ（図示せず）によりプログラム可能であってもよい。
【００８２】
周辺デバイス３２には、何れの所望の入力／出力デバイスも又は集積回路１０上に含まれている他のハードウェアデバイスも含めることができる。例えば、周辺デバイス３２は、イーサネットＭＡＣの様な１つ又はそれ以上のネットワークキングメディアアクセスコントローラ（ＭＡＣ）又はワイヤレスファイデリティ（ＷｉＦｉ）コントローラの様なネットワーク化周辺デバイスを含んでいてもよい。周辺デバイス３２には、様々な音声処理デバイスを含む音声ユニットが含まれていてもよい。周辺デバイス３２には、１つ又はそれ以上のデジタル信号プロセッサが含まれていてもよい。周辺デバイス３２は、タイマー、オンチップ秘密メモリ、暗号化エンジンなど、又はそれらの何らかの組合せといった他の所望の機能を含んでいてもよい。
【００８３】
周辺デバイスインターフェースコントローラ３４は、任意の型式の周辺デバイスインターフェースのための何れのコントローラを含んでいてもよい。例えば、周辺デバイスインターフェースコントローラには、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、周辺構成要素相互接続エクスプレス（ＰＣＩｅ）コントローラ、フラッシュメモリインターフェース、汎用入力／出力（Ｉ／Ｏ）ピンなどを含めることができる。
【００８４】
メモリ１２Ａ−１２Ｂは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、など）ＳＤＲＡＭ（ｍＤＤ３などのＳＤＲＡＭのモバイルバージョン及び／又はＬＰＤＤＲ２などのＳＤＲＡＭの低パワーバージョンを含む）、ＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）などの何れの型式のメモリであってもよい。１つ又はそれ以上のメモリデバイスは回路板へ連結されて、シングルインラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）などのメモリモジュールを形成していてもよい。代わりに、デバイスは、チップ・オン・チップ構成、パッケージ・オン・パッケージ構成、又はマルチチップモジュール構成の集積回路が搭載されていてもよい。
【００８５】
メモリＰＨＹ４２Ａ−４２Ｂは、メモリ１２Ａ−１２Ｂへの低レベルの物理的インターフェースに対処していてもよい。例えば、メモリＰＨＹ４２Ａ−４２Ｂは、シンクロナスＤＲＡＭメモリ、など、への正しいクロッキングのための信号のタイミングに責任を負っていてもよい。１つの実施形態では、メモリＰＨＹ４２Ａ−４２Ｂは、集積回路１０内で供給されるクロックをロックするように構成されていてもよく、メモリ１２によって使用されるクロックを生成するように構成されていてもよい。
【００８６】
他の実施形態は、図１に示されている構成要素及び／又は他の構成要素のサブセット又は上位セットを含め、構成要素の他の組合せを含んでいてもよいことを指摘しておく。所与の構成要素の１つのインスタンスが図１に示されているが、他の実施形態は、所与の構成要素の１つ又はそれ以上のインスタンスを含んでいてもよい。同様に、この詳細な説明全体を通して、所与の構成要素のインスタンスについては、たとえ１つのインスタンスしか示されていなくても１つ又はそれ以上のインスタンスが含まれていてもよく、及び／又は、たとえ複数のインスタンスが示されていてもインスタンスを１つしか含んでいない実施形態が使用されてもよい。
【００８７】
次に図１１を参照すると、システム３５０の１つの実施形態のブロック線図が示されている。図示の実施形態では、システム３５０は、外部メモリ１２（例えば図１０のメモリ１２Ａ−１２Ｂ）へ連結されている集積回路１０の少なくとも１つのインスタンスを含んでいる。集積回路１０は、更に、図１に示されている構成要素の幾つか又は全てを組み入れた集積回路であってもよい。集積回路１０は、１つ又はそれ以上の周辺デバイス３５４及び外部メモリ１２へ連結されている。集積回路１０への供給電圧並びにメモリ１２及び／又は周辺デバイス３５４への１つ又はそれ以上の供給電圧を供給する電源３５６も提供されている。幾つかの実施形態では、集積回路１０のインスタンスが２つ以上含まれていてもよい（また同様に２つ以上の外部メモリ１２が含まれていてもよい）。
【００８８】
周辺デバイス３５４は、システム３５０の型式に依存して、何れの所望の回路構成を含んでいてもよい。例えば、１つの実施形態では、システム３５０は、モバイルデバイス（例えば、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、など）であってもよく、周辺デバイス３５４には、ｗｉｆｉ、ブルートゥース、セルラー、全地球測位システムなど、様々な型式のワイヤレス通信用のデバイスを含めることができる。周辺デバイス３５４には、ＲＡＭストレージ、ソリッドステートストレージ、又はディスクストレージを含め、追加のストレージも含まれる。周辺デバイス３５４には、タッチディスプレイスクリーンやマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力デバイス、マイクロフォン、スピーカなどのユーザーインターフェースデバイスを含めることができる。他の実施形態では、システム３５０は、何れかの型式のコンピューティングシステム（例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなど）であってもよい。
【００８９】
以上の開示がくまなく理解されたからには、当業者には数多くの変型及び修正が自明となることであろう。付随の特許請求の範囲は、その様な変型及び修正全てを網羅すると解釈されるべきものとする。
【符号の説明】
【００９０】
５  システム
１０  集積回路（ＩＣ）
１２Ａ−１２Ｂ  メモリ
１４  中央プロセッサユニット（ＣＰＵ）ブロック
１６  プロセッサ
１８  レベル２（Ｌ２）キャッシュ
２０  非リアルタイム（ＮＲＴ）周辺デバイス
２２  リアルタイム（ＲＴ）周辺デバイス
２４  画像プロセッサ
２６  ディスプレイパイプ
２８  ポートアービタ
３０  ブリッジ／ダイレクトメモリアクセス（ＤＭＡ）コントローラ
３２  周辺デバイス
３４  周辺デバイスインターフェースコントローラ
３６  グラフィックユニット
３８Ａ−３８Ｅ  グラフィックコントローラ
４０  メモリコントローラ
４２Ａ−４２Ｂ  メモリ物理的インターフェース回路（ＰＨＹ）
４４Ａ−４４Ｅ  ポート
４６  翻訳ユニット
５０  割り込みコントローラ
５２  パワーマネジャ
５４  オフラインレジスタ
５６  マスクレジスタ
５８  タイムアウトレジスタ
６０Ａ−６０Ｂ  プロセッサ
６２  割り込みコントローラレジスタインターフェース
６４Ａ−６４Ｂ  周辺デバイス
１２０  レジスタインターフェースユニット
１２２  マスク／ソフトウェア（ＳＷ）ＯＲユニット
１２４  割り込みルータ
１２６Ａ−１２６Ｂ  プロセッサスケジューラ
１３０  マスクフロップ
１３２  ＯＲゲート
１３４  ソフトウェア割り込みフロップ
１３６  ＯＲゲート
１３８  ＡＮＤゲート
１４０  経路選択回路
１４２Ａ−１４２Ｂ  タイムアウトコントロールユニット
１４４Ａ−１４４Ｂ  フロップ
１５０  カウンタ
１５２、１５４  マルチプレクサ
１５６、１５８  立ち上がりエッジ検知回路構成
１６０  タイムアウトカウンタ
１６２  ＯＲゲート
１６４、１６６  マルチプレクサ
１６８  ＡＮＤゲート
１７０  コンパレータ
１７２  カウンタ
１７４  ＯＲゲート
１７６、１７８  マルチプレクサ
１８０  ＡＮＤゲート
１８２  コンパレータ
１８４  Ｉ／Ｏプロセッサ（ＩＯＰ）
３５０  システム
３５４  周辺デバイス
３５６  電源
【図１】
0005923838.tif 000002
【図２】
0005923838.tif 000003
【図３】
0005923838.tif 000004
【図４】
0005923838.tif 000005
【図５】
0005923838.tif 000006
【図６】
0005923838.tif 000007
【図７】
0005923838.tif 000008
【図８】
0005923838.tif 000009
【図９】
0005923838.tif 000010
【図１０】
0005923838.tif 000011
【図１１】
0005923838.tif 000012