JP2013545205A - 割り込み分配スキーム - Google Patents

割り込み分配スキーム Download PDF

Info

Publication number
JP2013545205A
JP2013545205A JP2013543183A JP2013543183A JP2013545205A JP 2013545205 A JP2013545205 A JP 2013545205A JP 2013543183 A JP2013543183 A JP 2013543183A JP 2013543183 A JP2013543183 A JP 2013543183A JP 2013545205 A JP2013545205 A JP 2013545205A
Authority
JP
Japan
Prior art keywords
interrupt
processor
controller
processors
timeout
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
JP2013543183A
Other languages
English (en)
Other versions
JP5923838B2 (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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of JP2013545205A publication Critical patent/JP2013545205A/ja
Application granted granted Critical
Publication of JP5923838B2 publication Critical patent/JP5923838B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2424Interrupt packet, e.g. event
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

1つの実施形態では、割り込みコントローラは、割り込みを複数のプロセッサ間で分配するための割り込み分配スキームを実施している。スキームは、どのプロセッサが所与の割り込みを受信するべきかを判定する際に様々なプロセッサ状態を勘案することができる。例えば、プロセッサ状態には、プロセッサがスリープ状態にあるか否か、割り込みが有効になっているか否か、プロセッサが先の割り込みへ応答したか否か、など、が含まれよう。割り込みコントローラは、割り込みが(例えばプロセッサへ提示された後)遅延していることを検知するタイムアウトメカニズムを実施していてもよい。割り込みは、タイムアウトが満了した時点で評価し直され、恐らくは別のプロセッサへ提示されることになる。割り込みコントローラは、割り込みについての割り込みベクトルが応答プロセッサへ配信されたことに応えて割り込みを自動的に且つ不可分式にマスクするように構成されている。
【選択図】図6

Description

本発明は、割り込みコントローラの分野に関係している。
デジタルシステムは、概して、ソフトウェアを実行する1つ又はそれ以上のプロセッサ及びソフトウェアによって制御される各種ハードウェアデバイスを含んでいる。例えば、デジタルシステムには、デスクトップ、ラップトップ、ネットトップ、サーバ、ワークステーション等のコンピュータシステム、セルラーフォン、パーソナルデジタルアシスタント、スマートフォンなどのモバイルデバイス、及び他の専用目的デバイスが含まれる。ハードウェアデバイスは、概して、或る特定の機能性を提供するものであって、記憶(例えば、ディスクドライブ、フラッシュメモリ、光学ドライブ等)、通信(例えば、ネットワーク化、ワイヤレスオペレーション等)、及び他の入力/出力の機能性(タッチスクリーン、キーボード、マウス、ディスプレイ、音声等)の機能性を提供している。
ハードウェアデバイスは、典型的には、或る期間の間はソフトウェアの介入無しに動作するように設計されている。ソフトウェアの介入が必要なとき(例えば、デバイスに対応するドライバを実行させる必要があるとき)、ハードウェアデバイスは割り込みを合図する。割り込みは、システム内のプロセッサの1つへ配信され、タスクの実行を中断させて割り込みに対応するコード(例えば割り込みサービスルーチンコード及び/又はドライバコード)を実行させる。
システムが2つ以上のプロセッサを含んでいる場合、所与の割り込みはそれらプロセッサのうちの1つ(1つのみ)へ提示される必要がある。静的分配スキームが使用されることがあり、その場合、それぞれのデバイスの割り込みは特定のプロセッサへマップされ、当該マッピングはそう頻繁に変更されない。即ち、同じプロセッサが概して所与の割り込みを果たす。その様な静的スキームは、標的プロセッサが割り込みに即座に応答できない場合には長い割り込み待ち時間を生じさせかねない。複数のプロセッサが、所与の割り込みを受信することができるなら、それらプロセッサが割り込みに応答しようとする際に競合状態になる。その様な競合状態は、システムの性能及び/又はパワー効率を低下させかねない。
1つの実施形態では、割り込みコントローラは、割り込みを複数のプロセッサ間で分配するための割り込み分配スキームを実施している。スキームは、どのプロセッサが所与の割り込みを受信するべきかを判定する際に様々なプロセッサ状態を勘案することができる。例えば、プロセッサ状態には、プロセッサがスリープ状態にあるか否か、割り込みが有効になっている否か、プロセッサが先の割り込みに応答したか否か等が含まれよう。幾つかの実施形態では、割り込み分配時にプロセッサ状態を勘案することにより、割り込み待ち時間を縮めることができる。代替的又は追加的に、割り込みコントローラは、割り込みが(例えばプロセッサへ提示された後)遅延していることを検知するタイムアウトメカニズムを実施していてもよい。割り込みは、タイムアウトが満了した時点で評価し直され、恐らくは別のプロセッサへ提示されることになろう。
或る実施形態では、割り込みコントローラは、割り込みについての割り込みベクトルが応答プロセッサへ配信されたことに応えて割り込みを自動的に且つ不可分式にマスクするように構成されている。割り込みコントローラは、不可分式マスキングの一環として、プロセッサからの割り込み受信確認を直列化する。その様な実施形態では、その結果、1つ1つの割り込みは1つのプロセッサへ配信され、2つ以上のプロセッサへ配信されることはない。
次に続く詳細な説明では添付図面を参照しており、図面についてこれより簡単に説明する。
プロセッサと、割り込みコントローラと、割り込みのソースとなる各種デバイスとを含んでいるシステムの一実施形態のブロック線図である。 割り込みコントローラの一実施形態において、割り込みをプロセッサへ経路指定するオペレーションを示すフローチャートである。 割り込みコントローラの一実施形態において、プロセッサからの割り込み受信確認に応答してのオペレーションを示すフローチャートである。 割り込みコントローラの一実施形態において、割り込みにとって適格なプロセッサを識別するオペレーションを示しているフローチャートである。 割り込みコントローラの一実施形態において、適格なプロセッサを選択するオペレーションを示しているフローチャートである。 割り込みコントローラの一実施形態における更に詳細なブロック線図である。 図6に示されているマスク/SW Or回路の一実施形態のブロック線図である。 図6に示されている割り込みルータ回路の一実施形態のブロック線図である。 図6に示されている割り込みコントローラでのタイムアウトの一実施形態を示すブロック線図である。 割込みコントローラを含むシステムの別の実施形態のブロック線図である。 システムの更に別の実施形態のブロック線図である。
本発明には、様々な修正及び代わりの形態の余地があるが、本発明の特定の実施形態を例示として図面に示し、ここで詳細に説明していく。とはいえ、図面及びそれに対する詳細な説明は本発明を開示されている特定の形態へ限定しようとするものではなく、それどころか、付随の特許請求の範囲によって定義されている本発明の精神及び範囲内に入る全ての修正、均等、及び代替を対象として含むものであることを理解されたい。ここに使用されている見出しは編集のためであり、記載範囲を限定するために使用されることを意図していない。本出願全体を通しての使用に際し、英語の「may」の対訳である「〜してもよい、〜かもしれない、〜できるであろう」は、必須の意味(即ち、せねばならないを意味する)というよりむしろ許容の意味(即ち、可能性があることを意味する)に使用されている。同様に、英語の「include」、「including」、及び「includes」の対訳である「〜を含む、〜を含める」は、〜に限定される、ではなく、〜を含んでいる、という意味である。
各種ユニット、回路、又は他の構成要素が、単数又は複数のタスクを遂行する「ように構成されている」と記述されていることがあるかもしれない。その様な文脈では、「〜するように構成されている」は、概して、オペレーション中に単数又は複数のタスクを遂行する「回路構成を有している」ことを意味する、構造の広義的な叙述である。そういうものとして、ユニット/回路/構成要素は、ユニット/回路/構成要素が現在オンになっていなくとも、タスクを遂行するように構成されているといえる。一般に、「〜するように構成されている」に対応する構造を形成している回路構成は、オペレーションを実施するハードウェア回路を含んでいよう。同様に、各種ユニット/回路/構成要素が、記載の便宜上、単数又は複数のタスクを遂行する様に記述されていることがあるかもしれない。その様な記載は、「〜するように構成されている」という語句を含んでいるものと解釈されねばならない。ユニット/回路/構成要素が1つ又はそれ以上のタスクを遂行するように構成されているという説明は、当該ユニット/回路/構成要素について35U.S.C.第112条、第6項の解釈を行使しないつもりであることを明示しておく。
システム内で割り込みに対処する場合の様々な実施形態を以下に説明する。一般に、割り込みは、デバイス(例えば周辺デバイス)からプロセッサへの通信であって、プロセッサに、プロセッサが現在実行しているコードの実行を、割り込みに対応するコードを実行するために中断させる通信である。デバイスからの割り込みの通信には、様々な形式(例えば、信号のアサーション、割り込みメッセージの送信など)がある。デバイスは、割り込みを使用して、デバイスのための割り込みサービスルーチンコード及び/又はドライバコードが実行されるように仕向ける。中断されたコードの処理は、プロセッサが割り込みを処理するべく少なくとも幾つかの段階を踏んだ後に続行されてもよい。場合によっては、中断されたコードは、割り込みが完全に処理されるまで中断されたままにされてもよい。他の場合には、割り込みサービスルーチンコードが割り込みを後で処理するためにログし、その後、中断されたコードへ戻るという、好適な割り込み処理スキームが採用されてもよい。
割り込みコントローラは、システム内の各種デバイスから割り込みを受信し、割り込みをプロセッサへ提示する。割り込み提示は、概して、割り込みの指示をプロセッサへ送信することであるといえる。幾つかの実施形態では、割り込みは、割り込み要求信号をプロセッサへアサートすることによって提示されてもよい。他の実施形態では、割り込みは、割り込みを識別するメッセージをプロセッサへ送信することによって提示されてもよい。プロセッサは、割り込みに様々な様式で応えることができる。例えば、プロセッサは、割り込みの受諾を指し示す割り込み受信確認を送信してもよい。割り込み受信確認は、様々な形式で送信することができるであろう。例えば、割り込み受信確認は、割り込み受信確認レジスタとして指定されているレジスタに対するレジスタ読み出しであってもよい。割り込み受信確認は、プロセッサのインターフェース上の特定の送信であってもよい。他の実施形態では、プロセッサは、割り込みの受諾か又は拒絶のどちらかを通信することになる。
以下で詳細に浮かび上がってくる様に、幾つかの実施形態では、割り込みコントローラは、プロセッサの割り込みを受諾する(又は低待ち時間で割り込みを受諾する)能力に影響を及ぼし得る様々なプロセッサ状態を考慮する。こうして、割り込みコントローラは、動的に、所与の割り込みを受諾するプロセッサを、所与の割り込みの時点での様々なプロセッサのプロセッサ状態に基づいて識別する。同じ割り込みが続いて起こったら、それは、次に起こった時点での異なったプロセッサ状態に基づいて異なったプロセッサへ提供されることになろう。幾つかの実施形態では、プロセッサ状態に基づいてプロセッサを選択することで、全体としての割り込み待ち時間減少につながることであろう。概して、プロセッサ状態には、直接にプロセッサへプログラムされている状態(例えば、割り込み有効/無効、特権レベル、など)、及び/又は直接にプロセッサへ適用されている状態(例えば、パワーゲーティング、クロックゲーティングなど)が含まれよう。
幾つかの実施形態では、割り込みコントローラは、割り込みがプロセッサによって受諾されたことに応えて、不可分式に割り込みをマスクするように構成されていてもよい。このタイプの場合、割り込みコントローラは、同じ割り込みを2つ以上のプロセッサへ送信することを回避できる。加えて、割り込みのソースはレベルに敏感である場合もあり、従って、割り込みは、ソースが所望の処理を受信するまでアサートされたままにされることもある。マスクは、ソフトウェアによって明示的にマスクが変更されるまでは、割り込みが重ねて報告されることが起きないようにする。割り込みの自動マスキングは、割り込み受信確認がステートレスであることを許容していてもよい。割り込みコントローラは、プロセッサが例えば割り込みの処理の最中であるか否かを把握している必要はない。従って、割り込みコントローラの設計は、他の割り込みメカニズムに比較して単純なものとなろう。
図1は、複数のプロセッサ60A−60Bと、割り込みコントローラ50と、パワーマネジャ52と、複数の周辺デバイス64A−64Bとを含んでいるシステム5の1つの実施形態のブロック線図である。周辺デバイス64A−64Bは、割り込みコントローラ50へ連結されていて、割り込みを割り込みコントローラ50へ合図する(図1の「割り込み」)ように構成されていてもよい。パワーマネジャ52は、オフラインレジスタ54を含んでいて、割り込みコントローラ50へ連結されていてもよい。具体的には、オフラインレジスタ54のコンテンツ及びプロセッサ60A−60Bに関係している追加のプロセッサ状態(図1の「PState」)がパワーマネジャ52によって割り込みコントローラ50へ提供されていてもよい。プロセッサ60A−60Bは、パワーマネジャ52及び割り込みコントローラ50へ連結されていてもよい。具体的には、プロセッサ60A−60Bは、それぞれ、追加のプロセッサ状態(「PState」)を割り込みコントローラ50へ提示し、またそれぞれ、割り込み要求(「IRQ」)を割り込みコントローラ50から受信していてもよい。プロセッサ60A−60B及び割り込みコントローラ50は、加えて、割り込みコントローラレジスタインターフェース62(図1の「IC Reg Interface」)を介して連結されていてもよい。割り込みコントローラ50は、更に、マスクレジスタ56及び少なくとも1つのタイムアウトレジスタ58を含んでいてもよい。
或る実施形態では、割り込みコントローラ50は、プロセッサ60A−60BのPStateを受信するように連結されていて、どのプロセッサ60A−60Bが割り込みを提示されるべきかを判定する際にPStateを含めるように構成されている。その結果、選択対象のプロセッサ60A−60Bは、所与の割り込みについて、プロセッサと関連付けられている現在のPStateに依存して動的に判定される。割り込みコントローラ50は、割り込みを選択されたプロセッサ60A−60Bへ(例えば、図1ではIRQを選択されたプロセッサ60A−60Bへアサートすることによって)提示してもよい。プロセッサ60A−60Bは、例えば割り込み受信確認(IAck)を割り込みコントローラ50へ送信することによって、割り込みを受諾してもよい。割り込みを所与のプロセッサ60A−60Bへ経路指定する場合の決定にプロセッサ状態を含めることにより、割り込み処理全体の待ち時間は、プロセッサ60A−60Bへの割り込みの提示から当該プロセッサが割り込みを受諾するまでの待ち時間が縮められる分だけ縮まる。
割り込みコントローラ50によって監視されるプロセッサ状態には、プロセッサの割り込みに応答する能力に影響し得る何れの状態が含まれていてもよい。例えば、パワーマネジャ52からのプロセッサ状態には、プロセッサのパワー状態が含まれていてもよい。プロセッサ60A−60Bが、スリーブ状態の様な低パワー状態にあれば、当該プロセッサは、割り込みに応答するために満タン状態の様な高パワー状態へ移行するのに時間が必要であろう。従って、既により高いパワー状態にあるプロセッサが、割り込み提示にとってより良い選択肢となろう。パワーマネジャ52からのプロセッサ状態には、更に、オフラインレジスタ54からのオフライン状態が含まれていてもよい。オフライン状態は、システム5上で実行しているソフトウェアによってプログラムされていてもよい。所与のプロセッサがオフラインとしてオフラインレジスタ54に指し示されている場合は、当該プロセッサは割り込みを果たす上で利用できないということになり、従って、割り込み提示先に選択されない。
プロセッサ60A−60Bからのプロセッサ状態には、割り込みが、現在、当該プロセッサで有効になっているか否かの指示が含まれていてもよい。現在、割り込みが無効にされているプロセッサは、現在、割り込みが有効にされているプロセッサよりも、提示される割り込みを迅速に受諾する可能性が低いであろう。1つの実施形態では、プロセッサ60A−60Bは、割り込み有効ビット又は割り込み無効ビットを格納するレジスタを含んでいてもよい。ビットは、外部から監視できるようにプロセッサ60A−60Bによって出力されてもよい。プロセッサ60A−60Bからの他のプロセッサ状態には、例えば、プロセッサの特権状態の指示が含まれていてもよい。低特権状態(例えばユーザー状態)にあるプロセッサはアプリケーションコードを実行しているものであり、一方、高特権状態(例えばスーパーバイザー状態)にあるプロセッサはオペレーションシステムコードを実行しているものとしてもよい。低特権状態にあるプロセッサは、高特権状態にあるプロセッサよりも割り込みを提示するにはより良い選択肢となろう。様々な実施形態では、何れの他のプロセッサ状態が考慮されてもよい。
プロセッサ及び割り込みコントローラの仮想化をサポートしている実施形態では、割り込みの経路指定にあたり、追加のプロセッサ状態が考慮されてもよい。その様な環境では、周辺デバイス(ひいてはその割り込み)は、ゲストオペレーティングシステム(OS)にとってプライベートとされている。即ち、デバイスはゲストOSへ割り当てられており、デバイスが当該ゲストOSへ割り当てられた状態でなくなるまで、当該デバイスはシステム上で実行している他のゲストOSによる使用には利用できなくなっている。ゲストOSにとってプライベートである割り込みの場合、割り込みが既にゲストOSを実行しているプロセッサのうちの1つへ経路指定されたなら、割り込み待ち時間を短縮できるであろう。それぞれのプロセッサは、どのゲストOSが当該プロセッサ上で実行中であるかの指示(例えばゲストタグ)を割り込みコントローラへ提示するように構成されていて、割り込みコントローラは割り込みの経路指定先のプロセッサを選択する際に当該指示を考慮するように構成されていてもよい。選択されたプロセッサが割り込みに応答しなかったことを判定するのにタイムアウトがサポートされていて、ハイパーバイザー/仮想マシンモニタを実行しているプロセッサがタイムアウトに応えて選択されてもよい。所望のゲストOSを実行しているプロセッサが無いなら、残っている経路指定規則を使用してプロセッサが選択されることになろう。幾つかの実施形態では、ハイパーバイザー/仮想マシンモニタに割り込むのに異なった割り込み指示が使用されてもよい(例えば、ハイパーバイザー/仮想マシンモニタ及びゲストのそれぞれに別々のIRQがあってもよい)。その様な実施形態では、所望のゲストOSがどのプロセッサでも実行されていないとき、ハイパーバイザー/仮想マシンモニタIRQがアサートされることになろう。
或る実施形態では、割り込みコントローラ50は、1つ又はそれ以上のタイムアウトをサポートしていてもよい。選択されたプロセッサへの割り込みの提示に応えて、割り込みコントローラ50は、タイムアウトカウンタを、タイムアウトレジスタ58からの対応するタイムアウト値で初期化してもよい。選択されたプロセッサが割り込みに応答すること無くタイムアウトが満了したなら、割り込みコントローラ50は、割り込みを評価し直し、割り込みを別のプロセッサへ提示することになろう。その結果、元々選択されたプロセッサが応答に遅延を来している場合、別のプロセッサが選択され応答することになる。1つの実施形態では、提示は、先に選択されたプロセッサから撤回されていない。従って、どちらでも最初に応答したプロセッサに割り込みが提供されることになる。他の実施形態では、提示は、先に選択されたプロセッサから(例えばそのIRQをデアサートすることにより)撤回されてもよい。
タイムアウトは、ソフトウェアプログラム可能であって、特定の事象の期待待ち時間に基づいていてもよい。例えば、或るプロセッサで割り込みが無効になっている場合、それら割り込みは典型的な時間量(例えば20マイクロ秒)にわたって無効のままにされる。タイムアウトは典型時間より僅かに長めにプログラムされていてもよく、そうすると、プロセッサは、割り込みが典型的な時間量にわたって無効にされている場合タイムアウトが起こる前に割り込みを有効にして割り込みを受諾することができるであろう。プロセッサが低パワー状態にある場合、プロセッサが低パワー状態を脱する間に一定の時間量(例えば60マイクロ秒)が経過するかもしれない。タイムアウトは、この時間量より僅かに長めにプログラムされていてもよく、そうするとプロセッサはタイムアウトが起こる前に満タン状態に達し割り込みを受諾することができるであろう。
或る実施形態では、複数のタイムアウト値がサポートされていて、タイムアウトレジスタ58へプログラムされていてもよい。それぞれのタイムアウト値は、プロセッサ状態及び関連付けられている割り込み受諾待ち時間に対応していてもよい。割り込み提示先のプロセッサが選択されたことに応えて、割り込みコントローラ50は、タイムアウトカウンタを当該プロセッサの状態に対応しているタイムアウトで初期化してもよい。別の実施形態では、タイムアウト値は、選択されたプロセッサの現在状態に依存し、なお且つ現在選択されているプロセッサがタイムアウトした場合に選択されそうな次のプロセッサの現在状態に依存するものであってもよい。割り込みがプロセッサへ提示され、プロセッサが受信確認を遂行するより前にタイムアウトが満了した場合、プロセッサは無応答であると見なされ、プロセッサの無応答は以降の割り込み経路指定オペレーションに影響を及ぼすことになる。
それぞれのプロセッサについて測定される(例えば、IRQから割り込み受信確認よる割り込み受諾までの)タイムアウト値に加え、タイムアウトはそれぞれの割り込みについて測定されてもよい。割り込みタイムアウトは、割り込みの所与のプロセッサへの経路指定から割り込みのサービス提供までが測定されてもよい。割り込みタイムアウトの満了は、上述したプロセッサについてのタイムアウトの満了と同様に、割り込みが評価し直しされ異なったプロセッサに割り込みが提示されることにつながる。或る実施形態では、割り込みがタイムアウトしても、プロセッサが無応答であると見なされることにはならず、ひいては以降の割り込み経路指定オペレーションには影響を及ぼさない。
或る実施形態では、割り込みコントローラ50は、プロセッサからの割り込み受信確認に応えてプロセッサへ配信される割り込みを不可分式にマスクしてもよい。割り込みコントローラ50は、割り込みコントローラ50によってサポートされているそれぞれの割り込みについてマスクビットを含むことのできるマスクレジスタ56を含んでいてもよい。割り込みコントローラ50は、マスクビットを、割り込みをマスクする場合はマスク状態へ設定することができる。マスクビットは、更に、割り込みをマスクしない場合はマスク解除状態へ設定される。或る実施形態では、マスク状態は設定状態であり、マスク解除状態はクリア状態であるが、他の実施形態で逆の状態割り当てが使用されてもよい。
不可分式に割り込みをマスクする場合、割り込みのマスクは、たとえ次の割り込み受信確認が可能な限り早く受信されたとしても、当該の次の割り込み受信確認に応えて割り込みが提供されることのないように行われる。割り込みコントローラ50がパイプライン化されている場合、例えば、マスキングの効果は、次の割り込み受信確認が割り込み状態にアクセスする前に、パイプラインを行きつくところまでパスされてゆく。1つの実施形態では、割り込みコントローラ50は割り込み受信確認を直列化し、1つの割り込み受信確認が、先の割り込み受信確認によってマスクされるべき割り込みを検知することのないようにしていてもよい。割り込みの不可分式マスキングは、上述したプロセッサ状態把握割り込み経路指定から独立に実施されるものであり、同様に単一プロセッサ実施形態でも実施されるものであることを指摘しておく。
上述したように、オフライン状態は、特定のプロセッサが割り込みに利用できないことを指し示すようにシステム5内(プロセッサ60A−60B上)で実行しているソフトウェアによってプログラム可能とされていてもよい。対照的に、低パワー状態にあるプロセッサは割り込み受諾に当たりより長い待ち時間を生じさせることにはなろうが、低パワー状態プロセッサはそれでもなお割り込みに利用できる。或る実施形態では、割り込みコントローラ50は、オフラインプロセッサには割り込みを提示しない。ソフトウェアに、所与のプロセッサへ割り込みが経路指定されることを、それがオフラインであることをもって阻止させる理由は様々ある。例えば、プロセッサは、重要コードシーケンスを実行しているかもしれず、簡潔性の観点から又は安全性の観点から、割り込みを阻止するのが望ましいこともある。コードシーケンスは、例えばブートコードシーケンスであるかもしれない。重要と考えられる他のコードシーケンスは、秘密が格納されている場所の様な細心の注意を払うべきメモリ場所にアクセスするコードシーケンスである。他の例は、パワー関連であろう。即ち、プロセッサがオフラインであれば、システム全体にとってはパワー効率がより高いということもあろう。システムの熱エンベロープにプロセッサをオンラインにしておく十分な余裕がないかもしれない。即ち、プロセッサがオンラインになったなら温度が上がり過ぎないとも限らない。
以上に論じられている様に、割り込みコントローラ50は、割り込みをプロセッサへ提示するように構成されている。図示の実施形態では、割り込みを提示するのにIRQ信号がアサートされてもよい。他の実施形態は、割り込みメッセージをプロセッサへ通信し、プロセッサがメッセージを捕えて受信確認することになる。プロセッサは、何れの所望の様式で提示に応答していてもよい。例えば、以上に論じられている割り込み受信確認(IAck)が送信されてもよい。プロセッサが、割り込みコントローラによって提示された割り込みを受諾しようとしているという何らかの肯定的な確認が応答を構成していてもよい。更に他の実施形態は、提示されている割り込みを明示的に受諾又は拒絶するようになっていてもよい。
周辺デバイス64A−64Bには、何れの所望の入力/出力デバイスも又はシステム5に含まれている他のハードウェアデバイスも含めることができる。例えば、周辺デバイス64A−64Bは、イーサネット(R)MACの様な1つ又はそれ以上のネットワークキングメディアアクセスコントローラ(MAC)又はワイヤレスファイデリティ(WiFi)コントローラの様なネットワーク化周辺デバイスを含んでいてもよい。周辺デバイス64A−64Bには、様々な音声処理デバイスを含む音声ユニットが含まれていてもよい。周辺デバイス64A−64Bには、1つ又はそれ以上のデジタル信号プロセッサが含まれていてもよい。周辺デバイス64A−64Bは、タイマー、オンチップ秘密メモリ、暗号化エンジンなど、又はそれらの何らかの組合せの何れの他の所望の機能を含んでいてもよい。周辺デバイス64A−64Bは、グラフィック処理ハードウェア、映像処理ハードウェア、映像エンコーダ/デコーダ、及び/又はディスプレイハードウェアを含んでいてもよい。
それぞれの周辺デバイス64A−64Bは、1つ又はそれ以上の割り込みを割り込みコントローラ50へ通信することができる。図示の実施形態では、それぞれの周辺デバイス64A−64Bは、割り込みを割り込みコントローラ50へ合図する割り込み信号を含んでいてもよい。幾つかのデバイスは、複数の割り込み信号を含むものもあろう。更にまた、他のデバイスには、割り込み及び仮にあるなら関連の状態を運ぶのに割り込みメッセージを使用するものもあろう。
プロセッサ60A−60Bは、何れかの命令設定アーキテクチャを実装していて、当該命令設定アーキテクチャに定義されている命令を実行するように構成されていてもよい。プロセッサ60A−60Bは、スケーラ、スーパースケーラ、パイプライン式、スーパーパイプライン式、順不同、順繰り、推論的、非推論的など、又はそれらの組合せを含む何れかのマイクロアーキテクチャを採用していてもよい。プロセッサ60A−60Bは、回路構成を含んでいてもよく、随意的にはマイクロコーディング技法を実装していてもよい。プロセッサ60A−60Bは対称である必要はない。即ち、プロセッサ60A−60Bは、異なった命令セットを実装していてもよい。例えば、プロセッサ60A−60Bには、汎用中央処理ユニット(CPU)、特殊用途プロセッサ、埋め込みプロセッサ、デジタル信号プロセッサなどを含めることができる。
PStateを割り込みコントローラ50へ提供すること及びIRQを割り込みコントローラ50から受信することに加え、プロセッサ60A−60Bは、割り込みコントローラ50と通信するためにインターフェース62を実装していてもよい。相互接続62は、プロセッサ60A−60Bと割り込みコントローラ50の間でレジスタアクセスオペレーション(例えば読み出し及び書き込み)を運んでいてもよい。これらのオペレーションは、アドレスを含んでおり、アドレスが割り込みコントローラ50によってデコードされ、読み出し/書き込みされるレジスタが識別されることになる。アドレスは、プロセッサ60A−60Bのメモリアドレス空間の部分であってもよい(即ち、レジスタはメモリマップされていてもよい)。代わりに、アドレスは、構成空間、I/O空間、又は何れかの他のアドレス空間の部分であってもよい。
レジスタアクセスオペレーションの1つは、IAckレジスタに対する書き込みオペレーションであってもよい。IAckレジスタ読み出しは、以上に論じられている割り込み受信確認であってもよいし、するとIAckレジスタ読み出しに応答して返されるデータは、プロセッサへ配信されようとしている割り込みに対応する割り込みベクトルであってもよい。他のレジスタアクセスオペレーションには、オフラインレジスタ54及び(単数又は複数の)タイムアウトレジスタ58の読み出し又は書き込みがあろう。マスクレジスタ56は、2つのレジスタ書き込みオペレーションを使用して更新されてもよい。マスク設定レジスタへの書き込みは、マスクレジスタ内に1つ又はそれ以上のマスクビットを設定することであろう(例えば、識別されたマスクビットをマスク状態に入れる)。マスククリアレジスタへの書き込みは、1つ又はそれ以上のマスクビットをクリアにする(例えば、識別されたマスクビットをマスク解除状態に入れる)。マスク設定レジスタとマスククリアレジスタは異なったアドレスを有しており、アドレスが割り込みコントローラ50によってデコードされて、マスクレジスタ内のビットが設定又はクリアされることになる。即ち、マスク設定レジスタとマスククリアレジスタは、物理的には存在しないが、その代わりに、マスクレジスタ上に起こるオペレーションを特定するものである。同様に、IAckレジスタは、物理的に存在しないが、レジスタを読み出しているプロセッサへの割り込みベクトルの配信を生じさせるものである。他のレジスタアクセスオペレーションとしては、割り込みコントローラ50内の他のレジスタ(図1には示されていない)の読み出し/書き込みがあろう。
インターフェース62は、何れの構成を有していてもよい。例えば、インターフェース62は、メモリオペレーションや他の種類のオペレーションをプロセッサ60A−60Bから送信するのにも使用されている汎用インターフェース(例えば、バス、ポイント・ツー・ポイント相互接続など)であってもよい。インターフェース62は、プロセッサ60A−60Bと割り込みコントローラ50の間の1つ又はそれ以上の他のユニットを通過していてもよい。例えば、図10に示されている実施形態では、インターフェースはブリッジ/DMAユニットを通過している。
上述の様に、プロセッサ60A−60Bは様々なパワー状態にある。満タン状態では、プロセッサは、いつでも命令を実行できる態勢にあり、割り込みを受諾することができるであろう。満タン状態には、オペレーションが(例えば、仕事量、利用できるパワー、など、に依存して)サポートされ得る複数の電圧/周波数ペアが含められる。1つ又はそれ以上の低パワー状態もある。低パワー状態では、プロセッサ60A−60Bは、アイドル中(命令を実行していない)であり、満タン状態へ移行するのに或る期間が必要であろう。移行の期間は特定の低パワー状態に依存する。例えば、プロセッサはクロックゲート制御されているかもしれず、するとプロセッサではクロックはトグルしていない。クロックを再起動させプロセッサに実行の準備をさせるには数サイクルが必要になろう。別の低パワー状態では、プロセッサ内の論理回路構成へのパワーはゲート制御されているが、プロセッサ内のキャッシュの様なメモリアレイはなおパワー供給されているということもある。その様なパワーゲート制御状態から満タン状態への復帰には、論理回路構成のパワー供給を上げ、パワーが安定するのを待つことが含まれる。更に別の低パワー状態では、プロセッサ論理回路構成及びメモリアレイへのパワーがゲート制御されているということもある。その様なパワーゲート制御状態からの復帰には、回路構成のパワー供給を上げることが含まれると同時にメモリアレイを初期化することが含まれる。他の低パワー状態もあり得る。様々な低パワー状態は、プロセッサのスリープ状態と呼ばれることもある。
システム5の様々な相互接続は、図1には、割り込みの処理に関連して示されていることを指摘しておく。しかしながら、所望に応じ、様々な他の相互接続が提供されよう。加えて、システム5では様々な他の構成要素(例えば、メモリコントローラ、メモリコントローラへ連結されているメモリなど)が提供されていてもよい。図1に示されている構成要素の1つ又はそれ以上及び/又は他の構成要素は、システム・オン・チップとして単一の集積回路へ一体化されていてもよいことを更に指摘しておく。図1に示されている各種構成要素は幾つの数であってもよい(例えば、任意数のプロセッサ60A−60B、任意数の周辺デバイス64A−64Bなど)。
次に図2を参照すると、割り込みコントローラ50の1つの実施形態の、割り込みをプロセッサへ経路指定するオペレーションを例示するフローチャートが示されている。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ50の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ50は、図2に示されているオペレーションを実施するように構成されていてもよい。
様々なプロセッサ60A−60Bに対応するPStateを使用して、割り込みコントローラ50は、プロセッサ60A−60Bのうちのどれが割り込みの提示先として適格かを識別する(ブロック70)ように構成されていてもよい。所与のプロセッサのPStateが(恐らくは他のプロセッサのPStateに比較して)、当該プロセッサへ割り込みが提示されることを受諾できると指し示していれば、当該プロセッサは割り込みの提示先として適格ということになろう。幾つかのプロセッサは不適格であるかもしれない。例えば、既に割り込みが提示されていて、タイムアウトしてしまっているプロセッサは、割り込みにとって不適格ということになろう。割り込みを受諾することの他に割り込みを拒絶する通信を実施している実施形態では、割り込みを拒絶したプロセッサは不適格ということになろう。オフラインであるプロセッサは不適格となろう。加えて、所与の割り込みは、プロセッサ60A−60Bのサブセットを標的とするように(例えば、割り込みメッセージの部分として、又は割り込みと関連付けられているプログラム可能な状態により)指定されていてもよい。標的とされていないプロセッサは不適格ということになろう。
割り込みコントローラ50は、適格プロセッサのうちの1つを選択し(ブロック72)、選択されたプロセッサへ割り込みを提示する(例えば、選択されたプロセッサへIRQをアサートする)(ブロック74)ように構成されていてもよい。割り込みコントローラ50は、選択されたプロセッサについてタイムアウトカウンタを、恐らくは幾つかの実施形態では選択されたプロセッサのPStateに基づいて、初期化する(ブロック76)ように構成されていてもよい。割り込みコントローラ50は、割り込みが受諾されたかどうかを判定する(判定ブロック78)ように構成されていてもよい。例えば、割り込みコントローラ50は、プロセッサからの割り込み受信確認を検知するようになっていてもよい。割り込みが受諾された場合(判定ブロック78、「イエス」の分岐)、割り込みの経路指定は完了することになる。割り込みがまだ受諾されておらず(判定ブロック78、「ノー」の分岐)、現在の割り込み提示先のプロセッサについてのタイムアウトが満了していない(判定ブロック80、「ノー」の分岐)場合、割り込みコントローラ50は、タイムアウト及び割り込み受諾についてチェックを継続することになる。割り込みがなお受諾されず(判定ブロック78、「ノー」の分岐)、割り込み提示先のプロセッサについてのタイムアウトが感知された(判定ブロック80、「イエス」の分岐)場合、割り込みコントローラ50は、プロセッサは割り込みにとって不適格であると考え(ブロック82)、別の適格プロセッサを選択して(ブロック72)、割り込みを提示する(ブロック74)ことになる。
次に図3を参照すると、割り込みコントローラ50の1つの実施形態の、割り込み受信確認(IAck)に応えたオペレーションを例示するフローチャートが示されている。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ50の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ50は、図3に示されているオペレーションを実施するように構成されていてもよい。
割り込みコントローラ50は、プロセッサへ経路指定された割り込みを識別する割り込みベクトルを返してもよい(ブロック84)。2つ以上の割り込みが同時にプロセッサへ提示された場合、割り込みコントローラ50は提示された割り込みのうちの1つを選択することになる。例えば、数の最も低い割り込みベクトルが選択されてもよいし、又は数の最も高い割り込みが受諾されてもよい。別の実施形態では、最も古い割り込みが選択されてもよい。割り込み間に優先順位を実施している実施形態では、優先順位の最も高い割り込みが選択されることになろう。割り込みは、ランダムに選択されてもよい。割り込みコントローラ50は、更に、割り込みベクトルによって識別された割り込みを不可分式にマスクしてもよい(ブロック86)。
次に図4を参照すると、割り込みコントローラ50による適格プロセッサの識別(図2より、ブロック70)の1つの実施形態を例示するフローチャートが示されている。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ50の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ50は、システム内のそれぞれのプロセッサについて図4に示されているオペレーションを実施するように構成されていてもよい。
プロセッサがオフラインである(オフラインレジスタに指し示されている)(判定ブロック90、「イエス」の分岐)又は割り込みが既にプロセッサへ経路指定されている(判定ブロック92、「イエス」の分岐)場合、割り込みコントローラは、プロセッサを不適格と識別する(ブロック94)ように構成されていてもよい。そうでない場合で、プロセッサがスリープ状態又は他の低パワー状態にある(判定ブロック96、「イエス」の分岐)場合、割り込みコントローラ50は、プロセッサを適格と識別し、プロセッサを適格性グループ3に含める(ブロック98)ように構成されていてもよい。プロセッサがオフラインでなく(判定ブロック90、「ノー」の分岐)、既に経路指定されてはいず(判定ブロック92、「ノー」の分岐)、スリープ状態でなく(判定ブロック96、「ノー」の分岐)、プロセッサが無応答であるか又はプロセッサで割り込みが無効になっているかのどちらかである(判定ブロック100、「イエス」の分岐)場合、割り込みコントローラ50は、プロセッサを適格と識別し、プロセッサを適格性グループ2に含める(ブロック102)ように構成されていてもよい。
先述の様に、幾つかの実施形態では、プロセッサ60A−60Bのサブセットが、所与の割り込みの狙い先として識別されることもある。その様な実施形態では、標的とされるサブセットに含まれているプロセッサのみが適格プロセッサということになろう。標的とされるサブセットにないプロセッサは、それらが割り込みの提示先として選択されることのない点でオフラインプロセッサと同様式に扱われる。
割り込みについて優先順位を実施している実施形態では、適格プロセッサの識別には更に優先順位も織り込まれる。例えば、プロセッサが、現在、優先順位のより高い割り込みを処理している場合は、プロセッサは割り込みにとって適格でない(又は一部の他のプロセッサよりも適格性に劣る)と見なされることになろう。優先順位のより低い割り込みを処理しているプロセッサは、優先順位のより高い割り込みを処理するように割り込みをかけられてもよく、ひいては優先順位のより高い割り込みにとって適格であると考えられることになろう。
適格プロセッサのグループ分けは、割り込み提示についての順番又は好ましさであってもよく、適格プロセッサの中で、グループ1は最も好ましい、グループ2は次いで最も好ましい、そしてグループ3はあまり好ましくない、としてもよい。グループ1のプロセッサは、低パワー状態にはなく、割り込みに応答していて、割り込みが無効になっておらず、その結果、それらは提示された割り込みを低待ち時間で受諾できる可能性が最も高いということになる。グループ2のプロセッサは、同様に低パワー状態にはないが、無応答であるか又は現在割り込みが無効になっている。従って、平均して、グループ1よりも高い待ち時間が予想されることになる。グループ3のプロセッサは、低パワー状態にあり、従って、このグループについては平均して最も高い待ち時間が予想されることになる。
以上の論考に基づき、図5のフローチャートは、割り込みコントローラ50での適格プロセッサの選択(図2のブロック72)の1つの実施形態を例示するものである。理解し易くするために、ブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、割り込みコントローラ50の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。割り込みコントローラ50は、図5に示されているオペレーションを実施するように構成されていてもよい。
グループ1が空でない場合(判定ブロック106、「ノー」分岐)、割り込みコントローラ50は、グループ1からプロセッサを選択する(ブロック108)ように構成されていてもよい。グループ1が空であり(判定ブロック106、「イエス」の分岐)、グループ2が空でない(判定ブロック110、「ノー」の分岐)場合、割り込みコントローラ50は、グループ2からプロセッサを選択する(ブロック112)ように構成されていてもよい。グループ1が空(判定ブロック106、「イエス」の分岐)で、グループ2が空(判定ブロック110、「イエス」の分岐)で、グループ3が空でない(判定ブロック114、「ノー」の分岐)場合、割り込みコントローラ50は、グループ3からプロセッサを選択する(ブロック116)ように構成されていてもよい。所与のグループ内で、何れかの適格プロセッサが選択されることになろう。例えば、数の最も低いプロセッサが選択されてもよいし、数の最も高いプロセッサが選択されてもよい。プロセッサはランダムに選択されてもよいし、直近に選択されていないプロセッサが選択されてもよい。
次に図6を参照すると、割り込みコントローラ50の1つの実施形態のブロック線図が示されている。図6の実施形態では、割り込みコントローラ50は、レジスタインターフェースユニット120と、マスク/ソフトウェア(SW)ORユニット122と、割り込みルータ124と、プロセッサスケジューラ126A−126Bの様な複数のプロセッサスケジューラとを含んでいる。レジスタインターフェースユニット120は、ICレジスタインターフェース62、並びにマスク/SW ORユニット122、割り込みルータ124、及び随意的にプロセッサスケジューラ126A−126Bへ連結されていてもよい。概して、レジスタインターフェースユニット120は、インターフェース62上のレジスタ読み出し/書き込みオペレーションを介して制御又は更新される、割り込みコントローラ50内の何れかの他の構成要素へ連結されていてもよい。マスク/SW ORユニット122は、マスクレジスタ56を含んでいて、システム内の様々な割り込みソースからの割り込みを受信するように連結されていて、割り込みルータ124へ連結されていてもよい。割り込みルータ124は、プロセッサのオフライン状態及び他のPStateを受信するように連結されていて、タイムアウトレジスタ58を含んでいて、プロセッサスケジューラ126A−126Bへ連結されていてもよい。それぞれのプロセッサスケジューラ126A−126Bは、IRQ信号を対応するプロセッサ60A−60Bへ提供するように連結されていてもよい。
マスク/SW ORユニット122は、割り込みソース(例えば周辺デバイス64A−64B)から受信された割り込みにマスクを適用し、マスクされた割り込みが割り込みルータ124へ提供されるように構成されていてもよい。或る実施形態では、マスク/SW ORユニット122は、更に、プロセッサ上で実行しているソフトウェアに(あたかも対応するソースが割り込みをアサートしたかの様に)割り込みを引き起こさせるメカニズムを提供していてもよい。ソフトウェアは、インターフェース62上で、所望の割り込みをもたらすレジスタアクセスオペレーションを送信してもよい。マスク/SW ORユニット122は、ソフトウェア割り込みを各ソースから受信された実際の割り込みと論理的OR処理してそれぞれの割り込みを発生させ、論理的OR処理された割り込みをマスクレジスタ56に従ってマスクして、マスクされた割り込みを発生させる。他の実施形態は、ソフトウェアORを実施しておらず、単純に、割り込みソースから受信された割り込みをマスクしてマスクされた割り込みを割り込みルータ124へ提供していてもよい。
割り込みルータ124は、マスクされた割り込みを受信し、そして割り込みをプロセッサへ、オフライン状態、PState、タイムアウトなどに基づいて経路指定するように構成されていてもよい。即ち、割り込みルータ124は、1つの実施形態では、図2のフローチャートを実施していてもよい。割り込みルータは、割り込みの経路指定先のプロセッサに対応するプロセッサスケジューラ126A−126Bに合図することになろう。
それぞれのプロセッサスケジューラ126A−126Bは、割り込みルータ124からの割り込みの受信に応答して、対応するプロセッサ60A−60BへのIRQ信号をアサートするように構成されていてもよい。IRQ信号は、一般的な割り込み要求信号とすることができる。様々なプロセッサ実装は、更に、特殊目的の割り込み又は他の割り込みも同様にサポートしていてもよい。例えば、幾つかの実施形態は、IRQに加えて低待ち時間割り込みをサポートしていてもよい。実施形態は、図6に示されている外部デバイス割り込みに加えて様々なタイマー割り込みをサポートしていてもよい。プロセッサスケジューラ126A−126Bは、外部デバイス割り込みに加えてIRQ信号へのタイマー割り込みをスケジュールするように構成されていてもよいし、及び/又は、他の割り込みへのタイマー割り込みをスケジュールしたり、他の種類の割り込みをスケジュールしたりしていてもよい。
レジスタインターフェースユニット120は、インターフェース62からのレジスタアクセスオペレーションをデコードし、割り込みコントローラ50の他の構成要素と対話してレジスタアクセスオペレーションを完遂させるように構成されていてもよい。レジスタ読み出しオペレーションの場合、レジスタインターフェースユニット120は、レジスタ読み出しオペレーションからの読み出しデータを開始プロセッサへ戻すように構成されていてもよい。レジスタインターフェースユニット120は、レジスタアクセスオペレーションのアドレスをデコードしてどのレジスタがアクセスされようとしているかを判定するように構成されていてもよい。加えて、ソースプロセッサは、更に、どのレジスタがアクセスされようとしているのかを(例えば、IAckコマンドにはIAckレジスタという様にプロセッサ毎のレジスタ)識別していてもよい。
次に図7を参照すると、1つの割り込みに対応する、マスク/SW ORユニット122部分の1つの実施形態のブロック線図が示されている。他の割り込みそれぞれについて同様の回路構成が提供されることになろう。図7に示されている回路構成は、ユニット122のオペレーションを例示する1つの実施形態であり、図7に示されている回路構成の何らかのブール等価物を含め他の実装が使用されていてもよい。図7の実施形態は、マスクフロップ130と、ORゲート132と、ソフトウェア割り込みフロップ134と、ORゲート136と、ANDゲート138とを含んでいる。
マスクフロップ130は、割り込みについてマスクビットを格納していてもよい(そして、ひいては他の割り込みについての同様のフロップ共々、マスクレジスタ56の部分となっていてもよい)。マスクビットは、この実施形態では、割り込みをマスクする場合に設定され、割り込みをマスク解除する場合にクリアにされることになろう。従って、マスクフロップ130の反転出力がANDゲート138に提供されて、ORゲート136によって出力された(ハードウェア生成か又はソフトウェア生成の何れかの)割り込みをマスクさせる。即ち、マスクビットが設定されれば、マスクフロップ130の反転出力がクリアされ、ANDゲート138の出力がクリアされる。マスクビットがクリアされれば、マスクフロップ130の反転出力が設定され、割り込みはマスクされた割り込みとしてANDゲート138を通過する。こうして、この実施形態では、割り込みはアクティブ・ハイである。他の実施形態は、アクティブ・ロー割り込みを使用していてもよく、NANDゲートが使用されていてもよい。ORゲートは、外部割り込みをソフトウェア割り込みフロップ134の出力と論理OR処理する。従って、外部(ハードウェア)割り込みがアサートされるか又はソフトウェアが割り込みをアサートしたか何れかの場合、ORゲート136による割り込み出力がアサートされる。
マスクビットがフロップ130で、この割り込みを受信確認しているプロセッサへ配信させることになるIAckサイクルに応えて設定されるか、又はソフトウェアがマスク設定レジスタ(ORゲート132)への書き込みによりマスクを設定するか、何れかであろう。割り込みコントローラによるIAackサイクルへの応答で自動的にマスクビットが設定される場合は、マスクビットの不可分式設定を実施していてもよい。次のIAckサイクルは、従って、異なった割り込みを受信し(この割り込みは今やマスクされているため)、こうして複数のプロセッサによる割り込み読み出しでの競合状態は適切に対処されることになる。ソフトウェアにもマスクビットを設定することを許容している場合は、ソフトウェアが効率的に割り込みを無効にできるようにしていてもよい。ソフトウェアは、更に、例えば割り込みが果たされた後、マスクビットをクリアすることができる。
図示の実施形態では、ソフトウェアは、マスク設定レジスタへの書き込みオペレーションを実行することによってマスクレジスタ56内にマスクビットを設定してもよい。書き込みデータの設定ビットは、どのマスクビットを設定するかを識別するものであってもよい。レジスタインターフェースユニット120は、マスク設定レジスタ書き込みをデコードし、書き込みデータに基づいてSWマスク設定信号をアサートすることになる。同様に、ソフトウェアは、マスククリアレジスタへの書き込みオペレーションを実行することもでき、書き込みデータの設定ビットは、どのマスクビットをクリアするかを識別するものであってもよい。レジスタインターフェースユニット120は、マスククリアレジスタ書き込みをデコードし、書き込みデータに基づいてSWマスククリア信号をアサートすることになる。
同様の様式で、ソフトウェアは、1つ又はそれ以上の割り込みを、割り込み設定レジスタ書き込みオペレーションでトリガしてもよい。書き込みデータは、どの割り込みビットを設定するかを識別するものであり、レジスタインターフェースユニット120は、対応するSW割り込み設定信号をアサートしてフロップ134を設定させるようになっていてもよい。ソフトウェアが生成した割り込みをクリアする場合、ソフトウェアは割り込みクリアレジスタ書き込みオペレーションを発動してもよい。書き込みデータは、どの割り込みビットをクリアするかを(例えば、設定ビットが書き込みデータ内の対応するビット位置にあることで)識別するものであり、レジスタインターフェースユニット120は、対応するSW割り込みクリア信号をアサートすることになる。
フロップ130と134はどちらも設定入力とクリア入力を有しているものとして示されている。フロップは、何れの所望の様式(例えば、設定−リセット(SR)フロップ、設定入力又はクリア入力に基づいてフロップを設定又はクリアする論理を有するDフロップ、など)に実装されていてもよい。
図8は、割り込みの1つについての割り込みルータ124の1つの実施形態のブロック線図である。他の割り込みそれぞれについて同様の回路構成が提供されることになろう。図8の実施形態では、割り込みルータ124は、経路選択回路140と、タイムアウトコントロールユニット142(タイムアウトレジスタ58を含んでいる)と、経路指定先のフロップ144A−144Bのセットと、を含んでいてもよい。プロセッサ60A−60Bそれぞれに経路指定先フロップ144A−144Bが1つあってもよい。
経路選択回路140は、オフライン状態及びPStateの他にマスク/SW ORユニット122からのマスクされた割り込みを受信していてもよい。経路選択回路構成140は、図2に示されているオペレーションを実施して、適格プロセッサを識別し(ブロック70)、適格プロセッサを選択する(ブロック72)ことができる。幾つかの実施形態では、経路選択回路140は、図4及び図5に示されている実施形態を実装していてもよい。経路選択回路140は、SetRoute信号(割り込みを果たすように構成されているプロセッサそれぞれに1つの信号)を出力することになる。選択されたプロセッサについてSetRoute信号がアサートされ、他のSetRoute信号はデアサートされる。それぞれのSetRoute信号は、各フロップ144A−144Bの設定入力へ連結されていて、プロセッサスケジューラ126A−126Bそれぞれへの出力信号となる。
この実施形態では、割り込みは、マスクされた割り込みがデアサートされるまで(「割り込みデアサート」はそれぞれのフロップ144A−144Bのクリア入力へ連結される)、所与のプロセッサへ経路指定されたままにされる。即ち、割り込みは、それがプロセッサに受諾されるまで経路指定されたままにされる。従って、割り込みがタイムアウトし、割り込みが別のプロセッサへ経路指定されたとしても、割り込みは「タイムアウト」したプロセッサへ経路指定されたままになっている。この方式では、プロセッサがタイムアウトしたがその後割り込みに応答できる態勢になった場合、当該プロセッサへのIRQはその時点でなおアサートされているであろう。他の実施形態は、タイムアウトの時点又は割り込みが別のプロセッサへ提示された時点で経路指定された状態をクリアしてもよい。
タイムアウトコントロールユニット142は、レジスタ58へプログラムされているタイムアウト値に基づき、タイムアウトを測定する回路構成を含んでいてもよい。即ち、タイムアウトコントロールユニットは、プロセッサタイムアウトについて、IRQアサーションと受諾(又はタイムアウト)の間の時間をカウントするカウンタ、及び割り込みの所与のプロセッサへの経路指定と割り込みのサービス提供(又は割り込みのタイムアウト)の間の時間をカウントするカウンタを含んでいてもよい。タイムアウトが検知された場合、タイムアウトコントロールユニット142は、経路選択回路140へタイムアウトをアサートするように構成されていてもよく、すると経路選択回路140は割り込みを評価し直し、割り込みの経路指定先のプロセッサを選択することであろう。タイムアウトコントロールユニット142は、図2のブロック76及び80に示されているオペレーションを実施していてもよい(すると、経路選択110は、タイムアウトに応えてブロック82を実施することになる)。
タイムアウトコントロールユニット142は、割り込み当たり2つのカウンタを実装していてもよく、また比較的多数の割り込みがあるかもしれないということを指摘しておく。或る実施形態では、タイムアウトカウンタにかかるハードウェアの費用を抑えるため、カウンタは様々なタイムアウトで共有されていてもよい。共有を成し遂げている或る実施形態が図9に示されている。図9の実施形態では、カウンタへのクロック入力の各クロックサイクルを増分するフリーランニングカウンタ150が示されている。カウンタ150は、様々な実施形態では、カウンタをクロックするクロックの周波数及びタイムアウトの所望範囲に基づき何れの数のビットを実装していてもよい。
カウンタ150のビットは、マルチプレクサ152及び154へ連結されていてもよい。マルチプレクサ152は、タイムアウトレジスタ58からのプロセッサタイムアウトに基づいて制御されており、マルチプレクサ154は、タイムアウトレジスタ58からの割り込みタイムアウトに基づいて制御されている。より厳密には、マルチプレクサ152及び154によって選択されるビットは、要求タイムアウト期間内で2回、状態を論理1へ変化させると期待されるビットということになる。選択されたビットは、立ち上がりエッジ検知回路構成156及び158それぞれへ給送され、するとそれら回路構成はティック信号を生成する。ティック信号は、選択されたビットが論理0から論理1へ変化する都度にアサートされる。
回路構成156からのティック信号は、プロセッサタイムアウトコントロールユニット142Aへ連結されていてもよい。プロセッサタイムアウトコントロールユニット142Aは、対応するプロセッサからのIAckに応えて、又はIRQがデアサートされたこと(ORゲート162及びマルチプレクサ164)に応えて、タイムアウトカウンタ160をゼロに初期化するように構成されていてもよい。そうでなければ、マルチプレクサ166の出力が選択される。マルチプレクサ166は、ティック信号がアサートされ、プロセッサへのIRQがアサートされ、そしてタイムアウトがまだ検知されていない(ANDゲート168)場合を除いては、カウンタ160からの現在値を選択するように構成されていてもよく、上述の場合には増分された値が選択される。こうして、ティック信号がアサートされる都度、タイムアウトカウンタ160は、IRQがアサートされたら、タイムアウトに至るまで増分されることになる。
コンパレータ170がカウンタ160の出力へ連結されており、コンパレータ170はカウンタを3に比較するように構成されていてもよい。カウンタが3であれば、タイムアウトが検知されることになる。カウンタ150からのカウンタビットは、選択されたタイムアウト期間内で2回、高をトグルするように選択されているので、ティック信号のティックが3つを数えたら、タイムアウトが超過したことが裏付けられる。この場合タイムアウトは完璧に正確というわけにはゆかなくとも、タイムアウトそれぞれにつき2ビットカウンタ160しか実装しておらずフリーランニングカウンタ150を共有しているわりには正確性は割り込みコントローラ50の目的に適うに十分であろう。プロセッサタイムアウトコントロールユニット142Aはタイムアウトを合図し、プロセッサが無応答であることを指し示すことになる。
割り込みタイムアウトコントロールユニット142Bは、プロセッサタイムアウトコントロールユニット142Aと同様であり、回路構成158からのティック信号を使用するものであってもよい。割り込みタイムアウトコントロールユニット142Bの場合、タイムアウトは、割り込みのプロセッサへの経路指定から割り込みのサービス提供まで(例えば、マスクされた割り込みのデアサーションまで)を測定されることになる。カウンタ172は、割り込みのデアサーション又は割り込みの何れかのプロセッサへの経路指定(ORゲート174)に応えて、マルチプレクサ176を通してゼロに初期化されることになる。その後、カウンタは、ティックに応えてマルチプレクサ178を通して増分され、その間もマスクされた割り込みはなおアサートされている(ANDゲート180)。カウンタ172が3に達したことをコンパレータ182が検知したとき、タイムアウトがアサートされることになる。
図9にはコントロールユニット142A−142B(どちらもこの実施形態では図8に示されているタイムアウトコントロールユニット142の一部である)について特定の論理回路構成が示されているが、他の実施形態は任意の論理回路構成を使用してもよいことを指摘しておく。具体的には、例示されている回路構成の何らかのブール等価物が使用されていてもよい。加えて、他の実施形態では、所望に応じ、様々な他のタイムアウトを検知するのにより多くのタイマーが使用されていてもよい。
次に図10を参照すると、システム5の別の実施形態のブロック線図が示されている。図10の実施形態では、システム5は、外部メモリ12A-12Bへ連結されている集積回路(IC)10を含んでいる。図示の実施形態では、集積回路10は、1つ又はそれ以上のプロセッサ16とレベル2(L2)キャッシュ18とを含む中央プロセッサユニット(CPU)ブロック14を含んでいる。他の実施形態は、L2キャッシュ18を含んでいないものもあれば、追加のキャッシュレベルを含んでいるものもあろう。加えて、2つより多くのプロセッサを含んでいる実施形態、及びプロセッサ16を1つしか含んでいない実施形態も考えられる。集積回路10は、更に、1つ又はそれ以上の非リアルタイム(NRT)周辺デバイス20のセット、及び1つ又はそれ以上のリアルタイム(RT)周辺デバイス22のセットを含んでいる。図示の実施形態では、RT周辺デバイスは、画像プロセッサ24と、1つ又はそれ以上のディスプレイパイプ26と、翻訳ユニット46と、ポートアービタ28とを含んでいる。他の実施形態では、より多い又は少ない画像プロセッサ24、より多い又は少ないディスプレイパイプ26、及び/又は所望に応じ幾つもの追加のリアルタイム周辺デバイスを含んでいてもよい。画像プロセッサ24は、システム5内の1つ又はそれ以上のカメラから画像データを受信するように連結されていてもよい。同様に、ディスプレイパイプ26は、システム内の1つ又はそれ以上のディスプレイを制御する1つ又はそれ以上のディスプレイコントローラ(図示せず)へ連結されていてもよい。画像プロセッサ24は翻訳ユニット46へ連結されていて、翻訳ユニット46は更にポートアービタ28へ連結されていてもよい。ポートアービタ28は、その上、ディスプレイパイプ26へ連結されていてもよい。図示の実施形態では、CPUブロック14は、1つ又はそれ以上の周辺デバイス32及び/又は1つ又はそれ以上の周辺デバイスインターフェースコントローラ34へ連結されていてもよいとされるブリッジ/ダイレクトメモリアクセス(DMA)コントローラ30へ連結されている。ブリッジ/DMAコントローラ30は、I/Oプロセッサ(IOP)184を含んでいてもよい。周辺デバイス32及び周辺デバイスインターフェースコントローラ34の数は、様々な実施形態では、ゼロから任意の所望数まで異なっていてもよい。図1に示されているシステム5は、更に、G0 38A及びG1 38Bの様な1つ又はそれ以上のグラフィックコントローラを含むグラフィックユニット36を含んでいる。グラフィックユニット当たりのグラフィックコントローラの数及びグラフィックユニットの数は、他の実施形態では、異なっていてもよい。図1に示されている様に、システム5は、1つ又はそれ以上のメモリ物理的インターフェース回路(PHY)42A−42Bへ連結されているメモリコントローラ40を含んでいる。メモリPHY42A−42Bは、集積回路10のピン上でメモリ12A−12Bへ通信するように構成されている。メモリコントローラ40は、更に、ポート44A-44Eのセットを含んでいる。ポート44A−44Bは、グラフィックコントローラ38A−38Eへそれぞれ連結されている。CPUブロック14は、ポート44Cへ連結されている。NRT周辺デバイス20及びRT周辺デバイス22は、ポート44D-44Eへそれぞれ連結されている。メモリコントローラ40に含まれるポートの数は、メモリコントローラの数と同様に、他の実施形態では異なっていてもよい。メモリPHY42A−42B及び対応するメモリ12A−12Bの数は、他の実施形態では、1つであってもよいし、又は2つより多くてもよい。割り込みコントローラ50及びパワーマネジャ52もまた図10に示されている(また、図1に各々示されているオフラインレジスタ54とマスクレジスタ56とタイムアウトレジスタ58を含んでいてもよい)。
図示の実施形態では、割り込みコントローラ50は、周辺デバイスインターフェースコントローラ34、周辺デバイス32、グラフィックユニット38A−38B、RT周辺デバイス22、及びNRT周辺デバイス20から、割り込みを受信することであろう。従って、この実施形態では、周辺デバイスインターフェースコントローラ34、周辺デバイス32、グラフィックユニット38A−38B、RT周辺デバイス22、及びNRT周辺デバイス20は、図1の周辺デバイス64A−64Bの実例である。他の実施形態では、上記のもののサブセットからの割り込みが割り込みコントローラ50によって受信されていてもよい。図示の実施形態では、プロセッサ16の何れかが割り込みを果たすこともあろうし、またIOP184が割り込みを果たすこともあろう。従って、この実施形態では、プロセッサ16及びIOP184は、図1のプロセッサ60A−60Bの実例ということになる。
加えて、この実施形態では、ICレジスタインターフェース62は、プロセッサ16からCPUブロック14を通ってブリッジ/DMAコントローラ30へ至り、次いで割り込みコントローラ50へ至っている。より厳密には、ブリッジ/DMAコントローラ30は、プログラムI/O(PIO)オペレーションのマスターであるPIOコントローラを含んでいてもよい。レジスタアクセスオペレーションは、この実施形態では、PIOオペレーションである。
1つの実施形態では、それぞれのポート44A−44Eには特定のトラフィック型式が関連付けられていてもよい。例えば、1つの実施形態では、トラフィック型式は、RTトラフィック、NRTトラフィック、及びグラフィックトラフィックを含んでいてもよい。他の実施形態は、以上のトラフィック型式に加えて、代えて、又はそれらのサブセットに加えて、他のトラフィック型式を含んでいてもよい。それぞれのトラフィック型式は、(例えば、要件及び挙動の観点で)特性を異にし、メモリコントローラは、特性に基づいてより高い性能が提供されるように、それらトラフィック形式に異なった対処の仕方をしていてもよい。例えば、RTトラフィックは、それぞれのメモリオペレーションが特定の時間量内で果たされることを要件とする。オペレーションの待ち時間が特定の時間量を超過すれば、RT周辺デバイスにオペレーションエラーが起こる可能性がある。例えば、画像プロセッサ24内で画像データが失われるかもしれないし、又はディスプレイパイプ26の連結先のディスプレイ上に映し出される画像が視覚的に歪みを来すかもしれない。RTトラフィックは、例えば等時性を特徴としている。他方、グラフィックトラフィックは、比較的高い帯域であるが、待ち時間に敏感というわけではない。プロセッサ16からの様なNRTトラフィックは、性能上の理由から、待ち時間にやや敏感ではあるが、高待ち時間でも生き残る。即ち、NRTトラフィックは、概して、何れの待ち時間でも、NRTトラフィックを生成するデバイスにオペレーションエラーを引き起こすことなく果たされることであろう。同様に、待ち時間にあまり敏感ではないが帯域の高いグラフィックトラフィックは、概して、何れの待ち時間でも果たされることであろう。他のNRTトラフィックには音声トラフィックが含まれ、音声トラフィックは、比較的低帯域であり、概して妥当な待ち時間なら果たされることであろう。殆どの周辺デバイスのトラフィック(例えば、磁気式、光学式、又はソリッドステートのストレージ、の様なストレージデバイスへのトラフィック)もまたNRTである。異なったトラフィック型式と関連付けられているポート44A−44Bが提供されていることにより、メモリコントローラ40は異なったトラフィック型式に並列して曝されることになる。
上述の様に、RT周辺デバイス22は、画像プロセッサ24とディスプレイパイプ26とを含んでいてもよい。ディスプレイパイプ26は、1つ又はそれ以上の画像フレームをフェッチし、それらフレームを配合してディスプレイ画像を作成する回路構成を含んでいてもよい。ディスプレイパイプ26は、更に、1つ又はそれ以上の映像パイプラインを含んでいて、映像フレームが(比較的)静的な画像フレームと配合されて、映像フレームレートで表示されるフレームが作成されてもよい。ディスプレイパイプ26の結果は、ディスプレイ画面に表示させる画素のストリームということになろう。ディスプレイ画面に表示させるために画素値がディスプレイコントローラへ送信される。画像プロセッサ24は、カメラデータを受信し、データを画像へ加工してメモリに格納させていてもよい。
メモリコントローラ40へ戻り、概して、ポートは、1つ又はそれ以上のソースと通信するためのメモリコントローラ40側の通信ポイントということになろう。幾つかの場合には、ポートは或るソース専用とされていてもよい(例えば、ポート44A−44Bは、グラフィックコントローラ38A−38Bそれぞれの専用とされていてもよい)。他の場合には、ポートは複数のソースの間で共有されていてもよい(例えば、プロセッサ16はCPUポート44Cを共有し、NRT周辺デバイス20はNRTポート44Dを共有し、ディスプレイパイプ26や画像プロセッサ24の様なRT周辺デバイス22はRTポート44Eを共有していてもよい)。ポートは、1つ又はそれ以上のソースと通信するために単一のインターフェースへ連結されていてもよい。こうして、ソースがインターフェースを共有している場合、インターフェースのソース側にはソース同士の間で選択を行うためにアービタがあってもよい。例えば、L2キャッシュ18は、メモリコントローラ40に対しCPUポート44Cのためのアービタの役目を果たしていてもよい。ポートアービタ28は、RTポート44Eのためのアービタの役目を果たし、同様のポートアービタ(図示せず)がNRTポート44Dのためのアービタとなっていてもよい。ポート上の単一ソース又はポート上のソースの組合せは、エージェントと呼ぶこともできる。それぞれのポート44A−44Eは、各自のエージェントと通信するようにインターフェースへ連結されている。インターフェースは、何れの型式の通信媒体(例えば、バス、ポイント・ツー・ポイント相互接続など)であってもよく、何れのプロトコルを実装していてもよい。幾つかの実施形態では、ポート44A−44Eはどれも同じインターフェース及びプロトコルを実装していてもよい。他の実施形態では、異なったポートは異なったインターフェース及び/又はプトロコルを実装していてもよい。更に他の実施形態では、メモリコントローラ40にはポートが1つしかなくてもよい。
或る実施形態では、それぞれのソースは、ソースによって送信されるそれぞれのメモリオペレーションにサービスの質(QoS)パラメータを割り当てていてもよい。QoSパラメータは、メモリオペレーションについて要求されるサービスレベルを識別するものである。高レベルのサービスを要求するQoSパラメータ値を有するメモリオペレーションには、低レベルのサービスを要求するメモリオペレーションに勝る優先順位が与えられることになる。それぞれのメモリオペレーションは、フローID(FID)を含んでいてもよい。FIDは、メモリオペレーションフローの部分であるメモリオペレーションを識別するものである。或るフローのメモリオペレーション同士は、概して関連しているが、一方で異なったフローからのメモリオペレーションは、たとえ同じソース由来であっても、関連していない。FIDの一部分(例えばソースフィールド)はソースを識別していて、FIDの残部はフロー(例えばフローフィールド)を識別していてもよい。従って、FIDはトランザクションIDと同様であり、幾つかのソースは単純にトランザクションIDをFIDとして送信していてもよい。その様な場合、トランザクションIDのソースフィールドはFIDのソースフィールドということになり、トランザクションIDの(同じソース由来のトランザクション同士の間でトランザクションを識別している)シーケンス番号はFIDのフローフィールドということになろう。幾つかの実施形態では、異なったトラフィック型式は、QoSパラメータの異なった定義を有しているかもしれない。即ち、異なったトラフィック型式は、異なったQoSパラメータセットを有していてもよい。
メモリコントローラ40は、それぞれのポート44A-44Eで受信されたQoSパラメータを処理するように構成されていて、相対的なQoSパラメータ値を使用して、ポートで受信されたメモリオペレーションを、当該ポート由来の他のメモリオペレーション並びに他のポートで受信された他のメモリオペレーションに関して、スケジュールするようになっていてもよい。より厳密には、メモリコントローラ40は、異なったQoSパラメータセットから引き出されたQoSパラメータ(例えば、RTのQoSパラメータ及びNRTのQoSパラメータ)を比較するように構成されていてもよく、QoSパラメータに基づいてスケジュールの決定を下すように構成されていてもよい。
幾つかの実施形態では、メモリコントローラ40は、メモリオペレーションを保留するためにQoSレベルをアップグレードするように構成されていてもよい。様々なアップグレードメカニズムがサポートされることであろう。例えば、メモリコントローラ40は、或るフローのメモリオペレーションを、同じフロー由来のメモリオペレーションであってより高いQoSレベルを特定しているQoSパラメータを有する別のメモリオペレーションの受信に応えて保留するために、QoSレベルをアップグレードするように構成されていてもよい。このQoSアップグレードの形式は、帯域内アップグレードと呼ばれており、というのも、通常のメモリオペレーション送信方法を使用して送信されたQoSパラメータが、同じフロー内のメモリオペレーションについて暗黙のアップグレード要求としての役目も果たすからである。メモリコントローラ40は、同じフロー由来ではなく同じポート又は同じソース由来のメモリオペレーションであって、より高いQoSレベルを特定している新たに受信されたメモリオペレーションである保留中のメモリオペレーションを、プッシュするように構成されていてもよい。別の例として、メモリコントローラ40は、1つ又はそれ以上のエージェントからのサイドバンドインターフェースへ連結するように構成されていて、サイドバンドインターフェースでのアップグレード要求の受信に応えてQoSレベルをアップグレードするようになっていてもよい。別の例では、メモリコントローラ40は、保留中のメモリオペレーションの相対的な古さを追跡するように構成されていてもよい。メモリコントローラ40は、或る特定の古さにある古いメモリオペレーションのQoSレベルをアップグレードするように構成されていてもよい。アップグレードが起こる古さは、古いメモリオペレーションの現在のQoSパラメータに依存していてもよい。
プロセッサ16は、何れの命令セットアーキテクチャを実装していてもよく、当該命令セットアーキテクチャに定義されている命令を実行するように構成されていてもよい。プロセッサ16は、スケーラ、スーパースケーラ、パイプライン式、スーパーパイプライン式、順不同、順繰り、推論的、非推論的など、又はそれらの組合せを含む何れかのマイクロアーキテクチャを採用していてもよい。プロセッサ16は、回路構成を含んでいてもよく、随意的にはマイクロコーディング技法を実装していてもよい。プロセッサ16は、1つ又はそれ以上のレベル1キャッシュを含んでいてもよく、而してキャッシュ18はL2キャッシュである。他の実施形態は、プロセッサ16に複数のキャッシュレベルを含んでいることもあり、するとキャッシュ18は階層内で次に下のレベルとなる。キャッシュ18は、何れのサイズまた何れの構成(セット・アソシエイティブ型、ダイレクトマップ型、など)を採用していてもよい。
グラフィックコントローラ38A−38Bは、何れのグラフィック処理回路構成であってもよい。概して、グラフィックコントローラ38A−38Bは、表示させるべきオブジェクトをフレームバッファへレンダするように構成されていてもよい。グラフィックコントローラ38A−38Bは、グフィックオペレーションの一部又は全部及び/又は特定のグラフィックオペレーションのハードウェアアクセラレーションを遂行するグラフィックソフトウェアを実行することのできるグラフィックプロセッサを含んでいてもよい。ハードウェアアクセラレーションの量及びソフトウェア実装は、実施形態により様々であろう。
NRT周辺デバイス20は、何れの非リアルタイム周辺デバイスを含んでいてもよく、それらは、性能上又は帯域上の理由から、メモリ12A−12Bへの独立したアクセスが提供されている。即ち、NRT周辺デバイス20によるアクセスは、CPUブロック14から独立しており、CPUブロックのメモリオペレーションと並行して進行する。周辺デバイス32及び/又は周辺デバイスインターフェースコントローラ34によって制御されている周辺デバイスインターフェースへ連結されている周辺デバイスの様な他の周辺デバイスもまた非リアルタイム周辺デバイスであるが、メモリへの独立したアクセスは要件とされない。NRT周辺デバイス20の様々な実施形態には、映像エンコーダ及びデコーダ、スケーラ/ローテータ回路構成、画像圧縮/圧縮解凍回路構成などが含まれよう。
ブリッジ/DMAコントローラ30は、(単数又は複数の)周辺デバイス32及び(単数又は複数の)周辺デバイスインターフェースコントローラ34をメモリ空間へブリッジする回路構成を備えていてもよい。図示の実施形態では、ブリッジ/DMAコントローラ30は、周辺デバイス/周辺デバイスインターフェースコントローラからのメモリオペレーションを、CPUブロック14を通じてメモリコントローラ40へブリッジすることができる。CPUブロック14は、更に、ブリッジされたメモリオペレーションとプロセッサ16/L2キャッシュ18からのメモリオペレーションの間のコヒーレンスを維持することもできる。L2キャッシュ18は、更に、ブリッジされたメモリオペレーションとプロセッサ16からのメモリオペレーションとの調停をして、CPUインターフェース上をCPUポート44Cへ送信させる。ブリッジ/DMAコントローラ30は、更に、周辺デバイス32及び周辺デバイスインターフェースコントローラ34に代わってDMAオペレーションを提供してデータブロックをメモリへ及びメモリから転送させてもよい。より厳密には、DMAコントローラは、メモリ12A−12Bへの又はメモリ12A−12Bからのメモリコンコントローラ40経由の転送を、周辺デバイス32及び周辺デバイスインターフェースコントローラ34に成り変わって遂行するように構成されていてもよい。DMAコントローラは、DMAオペレーションを遂行するように、プロセッサ15によってプログラム可能であってもよい。例えば、DMAコントローラは、記述子によりプログラム可能であってもよい。記述子は、メモリ12A−12Bに格納されているデータ構造であってDMA転送(例えば、ソースアドレス及び宛先アドレス、サイズなど)を記述するデータ構造である。代わりに、DMAコントローラは、DMAコントローラ内のレジスタ(図示せず)によりプログラム可能であってもよい。
周辺デバイス32には、何れの所望の入力/出力デバイスも又は集積回路10上に含まれている他のハードウェアデバイスも含めることができる。例えば、周辺デバイス32は、イーサネットMACの様な1つ又はそれ以上のネットワークキングメディアアクセスコントローラ(MAC)又はワイヤレスファイデリティ(WiFi)コントローラの様なネットワーク化周辺デバイスを含んでいてもよい。周辺デバイス32には、様々な音声処理デバイスを含む音声ユニットが含まれていてもよい。周辺デバイス32には、1つ又はそれ以上のデジタル信号プロセッサが含まれていてもよい。周辺デバイス32は、タイマー、オンチップ秘密メモリ、暗号化エンジンなど、又はそれらの何らかの組合せといった他の所望の機能を含んでいてもよい。
周辺デバイスインターフェースコントローラ34は、任意の型式の周辺デバイスインターフェースのための何れのコントローラを含んでいてもよい。例えば、周辺デバイスインターフェースコントローラには、ユニバーサルシリアルバス(USB)コントローラ、周辺構成要素相互接続エクスプレス(PCIe)コントローラ、フラッシュメモリインターフェース、汎用入力/出力(I/O)ピンなどを含めることができる。
メモリ12A−12Bは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3、など)SDRAM(mDD3などのSDRAMのモバイルバージョン及び/又はLPDDR2などのSDRAMの低パワーバージョンを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)などの何れの型式のメモリであってもよい。1つ又はそれ以上のメモリデバイスは回路板へ連結されて、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)などのメモリモジュールを形成していてもよい。代わりに、デバイスは、チップ・オン・チップ構成、パッケージ・オン・パッケージ構成、又はマルチチップモジュール構成の集積回路が搭載されていてもよい。
メモリPHY42A−42Bは、メモリ12A−12Bへの低レベルの物理的インターフェースに対処していてもよい。例えば、メモリPHY42A−42Bは、シンクロナスDRAMメモリ、など、への正しいクロッキングのための信号のタイミングに責任を負っていてもよい。1つの実施形態では、メモリPHY42A−42Bは、集積回路10内で供給されるクロックをロックするように構成されていてもよく、メモリ12によって使用されるクロックを生成するように構成されていてもよい。
他の実施形態は、図1に示されている構成要素及び/又は他の構成要素のサブセット又は上位セットを含め、構成要素の他の組合せを含んでいてもよいことを指摘しておく。所与の構成要素の1つのインスタンスが図1に示されているが、他の実施形態は、所与の構成要素の1つ又はそれ以上のインスタンスを含んでいてもよい。同様に、この詳細な説明全体を通して、所与の構成要素のインスタンスについては、たとえ1つのインスタンスしか示されていなくても1つ又はそれ以上のインスタンスが含まれていてもよく、及び/又は、たとえ複数のインスタンスが示されていてもインスタンスを1つしか含んでいない実施形態が使用されてもよい。
次に図11を参照すると、システム350の1つの実施形態のブロック線図が示されている。図示の実施形態では、システム350は、外部メモリ12(例えば図10のメモリ12A−12B)へ連結されている集積回路10の少なくとも1つのインスタンスを含んでいる。集積回路10は、更に、図1に示されている構成要素の幾つか又は全てを組み入れた集積回路であってもよい。集積回路10は、1つ又はそれ以上の周辺デバイス354及び外部メモリ12へ連結されている。集積回路10への供給電圧並びにメモリ12及び/又は周辺デバイス354への1つ又はそれ以上の供給電圧を供給する電源356も提供されている。幾つかの実施形態では、集積回路10のインスタンスが2つ以上含まれていてもよい(また同様に2つ以上の外部メモリ12が含まれていてもよい)。
周辺デバイス354は、システム350の型式に依存して、何れの所望の回路構成を含んでいてもよい。例えば、1つの実施形態では、システム350は、モバイルデバイス(例えば、パーソナルデジタルアシスタント(PDA)、スマートフォン、など)であってもよく、周辺デバイス354には、wifi、ブルートゥース、セルラー、全地球測位システムなど、様々な型式のワイヤレス通信用のデバイスを含めることができる。周辺デバイス354には、RAMストレージ、ソリッドステートストレージ、又はディスクストレージを含め、追加のストレージも含まれる。周辺デバイス354には、タッチディスプレイスクリーンやマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力デバイス、マイクロフォン、スピーカなどのユーザーインターフェースデバイスを含めることができる。他の実施形態では、システム350は、何れかの型式のコンピューティングシステム(例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなど)であってもよい。
以上の開示がくまなく理解されたからには、当業者には数多くの変型及び修正が自明となることであろう。付随の特許請求の範囲は、その様な変型及び修正全てを網羅すると解釈されるべきものとする。
5 システム
10 集積回路(IC)
12A−12B メモリ
14 中央プロセッサユニット(CPU)ブロック
16 プロセッサ
18 レベル2(L2)キャッシュ
20 非リアルタイム(NRT)周辺デバイス
22 リアルタイム(RT)周辺デバイス
24 画像プロセッサ
26 ディスプレイパイプ
28 ポートアービタ
30 ブリッジ/ダイレクトメモリアクセス(DMA)コントローラ
32 周辺デバイス
34 周辺デバイスインターフェースコントローラ
36 グラフィックユニット
38A−38E グラフィックコントローラ
40 メモリコントローラ
42A−42B メモリ物理的インターフェース回路(PHY)
44A−44E ポート
46 翻訳ユニット
50 割り込みコントローラ
52 パワーマネジャ
54 オフラインレジスタ
56 マスクレジスタ
58 タイムアウトレジスタ
60A−60B プロセッサ
62 割り込みコントローラレジスタインターフェース
64A−64B 周辺デバイス
120 レジスタインターフェースユニット
122 マスク/ソフトウェア(SW)ORユニット
124 割り込みルータ
126A−126B プロセッサスケジューラ
130 マスクフロップ
132 ORゲート
134 ソフトウェア割り込みフロップ
136 ORゲート
138 ANDゲート
140 経路選択回路
142A−142B タイムアウトコントロールユニット
144A−144B フロップ
150 カウンタ
152、154 マルチプレクサ
156、158 立ち上がりエッジ検知回路構成
160 タイムアウトカウンタ
162 ORゲート
164、166 マルチプレクサ
168 ANDゲート
170 コンパレータ
172 カウンタ
174 ORゲート
176、178 マルチプレクサ
180 ANDゲート
182 コンパレータ
184 I/Oプロセッサ(IOP)
350 システム
354 周辺デバイス
356 電源

Claims (21)

  1. システム内の1つ又はそれ以上のデバイスからの割り込みを受信するように連結されている回路構成と、
    前記回路構成へ連結されていて、前記システム内の複数のプロセッサから、第1の受信された割り込みについてプロセッサを選択するように構成されている割り込みルータであって、割り込みが前記選択されたプロセッサへ合図されるよう仕向けるように構成されていて、前記複数のプロセッサの状態を監視して前記状態に応じて前記選択されるプロセッサを選択するように構成されている、割り込みルータと、を備えている割り込みコントローラ。
  2. 前記割り込みルータは、更に、前記割り込みが前記選択されたプロセッサへ合図されたことに応答してタイムアウトカウンタを初期化するように構成されており、前記割り込みルータは、前記割り込みについて前記選択されたプロセッサからの応答無しに前記タイムアウトカウンタが満了したことの検知に応えて別のプロセッサを選択するように構成されている、請求項1に記載の割り込みコントローラ。
  3. 前記応答は、割り込み受信確認応答である、請求項2に記載の割り込みコントローラ。
  4. 前記割り込み受信確認応答に、前記第1の割り込みを識別する割り込みベクトルで応答するように構成されている回路構成を更に備えている、請求項3に記載の割り込みコントローラ。
  5. 前記割り込み受信確認は、前記割り込みコントローラについて定義されている割り込み受信確認レジスタの読み出しであり、前記割り込み受信応答へ応答するように構成されている前記回路構成は、レジスタアクセスオペレーションを受信するように連結されているレジスタインターフェースユニットであり、前記読み出しへの応答で返されるデータは前記割り込みベクトルを含んでいる、請求項4に記載の割り込みコントローラ。
  6. 前記プロセッサ状態は、前記プロセッサがスリープ状態にあるか否かを含んでいる、請求項1に記載の割り込みコントローラ。
  7. 前記プロセッサ状態は、前記プロセッサ内で割り込みが有効になっているか否かを含んでいる、請求項1に記載の割り込みコントローラ。
  8. 前記プロセッサ状態は、ソフトウェアによってプログラムされているオフライン状態を含んでいる、請求項1に記載の割り込みコントローラ。
  9. 前記プロセッサ状態は、仮想化されたゲストオペレーティングシステムが前記プロセッサ上で実行されていることの指示を含んでいる、請求項1に記載の割り込みコントローラ。
  10. 割り込みコントローラが、割り込みを受信する段階と、
    前記割り込みコントローラが、当該割り込みコントローラを含むシステム内の複数のプロセッサのうちの2つ又はそれ以上の適格プロセッサを識別する段階であって、少なくとも一部にはそれぞれのプロセッサの状態に応じて識別する段階と、
    前記2つ又はそれ以上の適格プロセッサから或るプロセッサを選択する段階と、
    前記割り込みを前記選択されたプロセッサへ提示する段階と、を備えている方法。
  11. 前記適格プロセッサは、前記割り込み受信先としてまだ選択されていない、請求項10に記載の方法。
  12. 前記適格プロセッサは、割り込みが有効にされている、請求項11に記載の方法。
  13. 前記適格プロセッサは、より以前の割り込みに無応答であったと判定されていない、請求項11に記載の方法。
  14. 前記2つ又はそれ以上のプロセッサのうちの第1のプロセッサは低パワー状態にあり、前記2つ又はそれ以上のプロセッサのうちの第2のプロセッサは低パワー状態にはなく、前記選択する段階は、前記第2のプロセッサを前記選択されるプロセッサとして選択する段階を備えている、請求項10に記載の方法。
  15. 前記2つ又はそれ以上のプロセッサのうちの第1のプロセッサは低パワー状態にあり、前記選択する段階は、前記第1のプロセッサが前記低パワー状態にあったとしても当該第1のプロセッサを前記選択されるプロセッサとして選択する段階を備えている、請求項10に記載の方法。
  16. 前記選択されたプロセッサについて当該選択されたプロセッサからの割り込み受信確認を受信すること無しにタイムアウトを検知する段階と、
    前記タイムアウトに応えて前記選択されたプロセッサは不適格であることを指し示す段階と、
    異なった適格プロセッサを選択する段階と、
    前記割り込みを前記異なった適格プロセッサへ提示する段階と、を更に備えている、請求項10に記載の方法。
  17. 複数のデバイスと、
    複数のプロセッサと、
    前記複数のデバイス及び前記複数のプロセッサへ連結されている割り込みコントローラであって、前記複数のデバイスのうちの第1のデバイスからの第1の割り込みを受信するように連結されていて、前記割り込みを前記複数のプロセッサのうちの第1のプロセッサへ経路指定するように構成されていて、前記割り込みの前記第1のプロセッサへの経路指定に応答して当該第1のプロセッサに関しタイムアウトカウンタを初期化するように構成されていて、前記第1のプロセッサからの割り込み受信確認を受信すること無しにタイムアウトが満了したことの検知に応えて、前記割り込みを前記複数のプロセッサのうちの第2のプロセッサへ経路指定するように構成されている、割り込みコントローラと、を備えているシステム。
  18. 前記割り込みコントローラは、更に、前記第1の割り込みの受信に応えて当該第1の割り込みに対応する第2のタイムアウトカウンタを初期化するように構成されており、前記割り込みコントローラは、前記割り込みが前記複数のプロセッサのうちの1つによって受信確認されること無しに前記第2のタイムアウトが満了したことの検知に応えて、前記割り込みを前記第2のプロセッサへ経路指定するように構成されている、請求項17に記載のシステム。
  19. 前記タイムアウトの値を複数の値から前記第1のプロセッサの状態に応じて選択する段階を更に備えている、請求項17に記載のシステム。
  20. 前記値を更に前記第2のプロセッサの状態に応じて選択する段階を更に備えている、請求項19に記載のシステム。
  21. 前記割り込みコントローラは、前記タイムアウトカウンタが満了したことの検知に応えて前記第1のプロセッサが割り込みに無応答であることを指し示すように構成されており、前記割り込みコントローラは、前記第1のプロセッサが無応答である場合、当該第1のプロセッサを割り込みにとっての標的候補として失格させるように構成されている、請求項17に記載のシステム。
JP2013543183A 2010-12-07 2011-11-17 割り込み分配スキーム Active JP5923838B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/962,146 US8959270B2 (en) 2010-12-07 2010-12-07 Interrupt distribution scheme
US12/962,146 2010-12-07
PCT/US2011/061197 WO2012078334A1 (en) 2010-12-07 2011-11-17 Interrupt distribution scheme

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015012014A Division JP5963282B2 (ja) 2010-12-07 2015-01-26 割り込み分配スキーム

Publications (2)

Publication Number Publication Date
JP2013545205A true JP2013545205A (ja) 2013-12-19
JP5923838B2 JP5923838B2 (ja) 2016-05-25

Family

ID=45421878

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013543183A Active JP5923838B2 (ja) 2010-12-07 2011-11-17 割り込み分配スキーム
JP2015012014A Active JP5963282B2 (ja) 2010-12-07 2015-01-26 割り込み分配スキーム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015012014A Active JP5963282B2 (ja) 2010-12-07 2015-01-26 割り込み分配スキーム

Country Status (10)

Country Link
US (2) US8959270B2 (ja)
EP (1) EP2463781B1 (ja)
JP (2) JP5923838B2 (ja)
KR (1) KR101320791B1 (ja)
CN (1) CN102567109B (ja)
AU (1) AU2011338863B2 (ja)
BR (1) BR112013013300B1 (ja)
HK (1) HK1171104A1 (ja)
TW (1) TWI447650B (ja)
WO (1) WO2012078334A1 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909836B2 (en) * 2012-10-08 2014-12-09 Andes Technology Corporation Interrupt controller, apparatus including interrupt controller, and corresponding methods for processing interrupt request event(s) in system including processor(s)
JP2014106755A (ja) * 2012-11-28 2014-06-09 Fujitsu Mobile Communications Ltd 情報処理装置及び制御方法
US9678564B2 (en) * 2012-12-21 2017-06-13 Nxp B.V. Multiprocessor system with interrupt distributor
US10534421B2 (en) 2013-06-13 2020-01-14 Microsoft Technology Licensing, Llc Virtual per-processor timers for multiprocessor systems
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9442775B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
CN106663072B (zh) 2014-09-26 2020-11-17 英特尔公司 用于配置中断的集合的装置和方法
KR20160061726A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 인터럽트 핸들링 방법
US10203955B2 (en) * 2014-12-31 2019-02-12 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality
CN104572282A (zh) * 2015-01-05 2015-04-29 浪潮电子信息产业股份有限公司 一种将sas控制器中断绑定到cpu的自动化方法
US10585826B2 (en) * 2016-01-25 2020-03-10 Advanced Micro Devices, Inc. Using processor types for processing interrupts in a computing device
US10802998B2 (en) * 2016-03-29 2020-10-13 Intel Corporation Technologies for processor core soft-offlining
US11392438B2 (en) * 2017-02-09 2022-07-19 Arm Limited Responding to unresponsive processing circuitry
CN109144680A (zh) 2017-06-27 2019-01-04 阿里巴巴集团控股有限公司 一种时钟滴答中断设置方法及装置
TWI621946B (zh) * 2017-06-28 2018-04-21 緯創資通股份有限公司 排程方法、PCIe控制器及其相關電子系統
US10747298B2 (en) * 2017-11-29 2020-08-18 Advanced Micro Devices, Inc. Dynamic interrupt rate control in computing system
US11144481B2 (en) * 2018-04-11 2021-10-12 Apple Inc. Techniques for dynamically adjusting the manner in which I/O requests are transmitted between a computing device and a storage device
US11113216B2 (en) * 2019-03-20 2021-09-07 Mediatek Inc. Dispatching interrupts in a multi-processor system based on power and performance factors
US11307791B2 (en) * 2019-05-24 2022-04-19 Texas Instruments Incorporated Quick clearing of registers
CN111786546B (zh) * 2020-07-20 2021-10-15 中车青岛四方车辆研究所有限公司 功率模块驱动系统及控制方法
US11630789B2 (en) * 2020-09-11 2023-04-18 Apple Inc. Scalable interrupts
EP4184712A4 (en) 2020-09-15 2024-01-10 Samsung Electronics Co Ltd ELECTRONIC DEVICE HAVING AN ANTENNA STRUCTURE
KR102549360B1 (ko) * 2020-12-14 2023-06-28 재단법인대구경북과학기술원 인터럽트 제어 장치 및 방법
US11675718B2 (en) * 2021-03-26 2023-06-13 Advanced Micro Devices, Inc. Enhanced low-priority arbitration
CN117203616A (zh) * 2021-05-31 2023-12-08 三星电子株式会社 电子设备及电子设备的传感器数据处理方法
KR20220161878A (ko) * 2021-05-31 2022-12-07 삼성전자주식회사 전자 장치 및 전자 장치의 센서 데이터 처리 방법
US11934313B2 (en) 2021-08-23 2024-03-19 Apple Inc. Scalable system on a chip
CN117472637B (zh) * 2023-12-27 2024-02-23 苏州元脑智能科技有限公司 一种中断管理方法、系统、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003281112A (ja) * 2002-03-25 2003-10-03 Fujitsu Ltd マルチプロセッサシステム
JP2009193525A (ja) * 2008-02-18 2009-08-27 Mitsubishi Electric Corp 割込制御装置

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3623014A (en) * 1969-08-25 1971-11-23 Control Data Corp Computer communications system
US5517626A (en) 1990-05-07 1996-05-14 S3, Incorporated Open high speed bus for microcomputer system
US5870621A (en) 1994-12-22 1999-02-09 Texas Instruments Incorporated Quadrilateral multichip computer systems and printed circuit boards therefor
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3676882B2 (ja) 1996-06-12 2005-07-27 株式会社リコー マイクロプロセッサ及びその周辺装置
EP0827085B1 (en) * 1996-08-20 2006-03-29 Compaq Computer Corporation Method and apparatus for distributing interrupts in a scalable symmetric multiprocessor system without changing the bus width or bus protocol
US5918057A (en) 1997-03-20 1999-06-29 Industrial Technology Research Institute Method and apparatus for dispatching multiple interrupt requests simultaneously
JP3699806B2 (ja) 1997-06-20 2005-09-28 株式会社東芝 割込みコントローラ及び制御システム
US6170025B1 (en) * 1997-08-29 2001-01-02 Intel Corporation Distributed computer system supporting remote interrupts and lock mechanism
US6105102A (en) 1998-10-16 2000-08-15 Advanced Micro Devices, Inc. Mechanism for minimizing overhead usage of a host system by polling for subsequent interrupts after service of a prior interrupt
US6701429B1 (en) 1998-12-03 2004-03-02 Telefonaktiebolaget Lm Ericsson(Publ) System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location
US6418497B1 (en) * 1998-12-21 2002-07-09 International Business Machines Corporation Method and system for interrupt handling using system pipelined packet transfers
JP2000242616A (ja) * 1999-02-19 2000-09-08 Nec Eng Ltd 障害処理装置,障害処理方法および記録媒体
US6772257B1 (en) 1999-12-23 2004-08-03 Intel Corporation Method and apparatus for processing interrupts
JP2001229147A (ja) * 2000-02-17 2001-08-24 Nec Shizuoka Ltd Cpu間通信制御方法および携帯情報端末
US20020116563A1 (en) 2000-12-12 2002-08-22 Lever Paul D. Apparatus and method to reduce interrupt latency in shared interrupt systems
US6792492B1 (en) 2001-04-11 2004-09-14 Novell, Inc. System and method of lowering overhead and latency needed to service operating system interrupts
US6813665B2 (en) 2001-09-21 2004-11-02 Intel Corporation Interrupt method, system and medium
US20030065497A1 (en) * 2001-09-28 2003-04-03 Rhoads Monte J. Power management system to select a power state for a network computer system based on load
US7328294B2 (en) * 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
US20040117532A1 (en) 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
GB2396445B (en) 2002-12-19 2005-12-21 Advanced Risc Mach Ltd An interrupt controller and interrupt controlling method for prioritizing interrupt requests generated by a plurality of interrupt sources
US7191349B2 (en) * 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
GB2403822B (en) * 2003-07-07 2006-05-10 Advanced Risc Mach Ltd Data processing apparatus and method for handling interrupts
US7222203B2 (en) 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
GB2409543B (en) 2003-12-23 2006-11-01 Advanced Risc Mach Ltd Interrupt masking control
US7353301B2 (en) 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
US7398343B1 (en) 2006-01-03 2008-07-08 Emc Corporation Interrupt processing system
JP4971676B2 (ja) 2006-04-28 2012-07-11 ルネサスエレクトロニクス株式会社 割り込み制御回路及び割り込み制御方法
JP2008015593A (ja) * 2006-07-03 2008-01-24 Hitachi Ltd 中継装置、プログラム、中継方法及び通信システム
US7721034B2 (en) 2006-09-29 2010-05-18 Dell Products L.P. System and method for managing system management interrupts in a multiprocessor computer system
US8032681B2 (en) * 2007-09-06 2011-10-04 Intel Corporation Processor selection for an interrupt based on willingness to accept the interrupt and on priority
US8661167B2 (en) * 2007-09-17 2014-02-25 Intel Corporation DMA (direct memory access) coalescing
US8453143B2 (en) * 2007-09-19 2013-05-28 Vmware, Inc. Reducing the latency of virtual interrupt delivery in virtual machines
US7962679B2 (en) 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power
US7730248B2 (en) 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
US7962771B2 (en) 2007-12-31 2011-06-14 Intel Corporation Method, system, and apparatus for rerouting interrupts in a multi-core processor
US8190826B2 (en) 2008-05-28 2012-05-29 Advanced Micro Devices, Inc. Write combining cache with pipelined synchronization
JP2010055296A (ja) * 2008-08-27 2010-03-11 Fujitsu Ltd 負荷分散プログラム及び負荷分散装置
EP2166457B1 (en) 2008-09-12 2014-04-23 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Interrupt controller and methods of operation
US7849247B2 (en) 2008-10-14 2010-12-07 Freescale Semiconductor, Inc. Interrupt controller for accelerated interrupt handling in a data processing system and method thereof
US8015337B2 (en) 2009-03-23 2011-09-06 Arm Limited Power efficient interrupt detection
US7996595B2 (en) 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8458386B2 (en) 2010-12-07 2013-06-04 Apple Inc. Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003281112A (ja) * 2002-03-25 2003-10-03 Fujitsu Ltd マルチプロセッサシステム
JP2009193525A (ja) * 2008-02-18 2009-08-27 Mitsubishi Electric Corp 割込制御装置

Also Published As

Publication number Publication date
JP2015079542A (ja) 2015-04-23
US20120144172A1 (en) 2012-06-07
BR112013013300B1 (pt) 2021-01-05
KR101320791B1 (ko) 2013-10-23
BR112013013300A2 (pt) 2016-09-13
JP5923838B2 (ja) 2016-05-25
TWI447650B (zh) 2014-08-01
US9262353B2 (en) 2016-02-16
JP5963282B2 (ja) 2016-08-03
US8959270B2 (en) 2015-02-17
CN102567109B (zh) 2015-04-08
HK1171104A1 (en) 2013-03-15
EP2463781B1 (en) 2015-01-21
WO2012078334A1 (en) 2012-06-14
AU2011338863B2 (en) 2015-01-22
KR20120063436A (ko) 2012-06-15
TW201229911A (en) 2012-07-16
US20150113193A1 (en) 2015-04-23
EP2463781A2 (en) 2012-06-13
AU2011338863A1 (en) 2013-05-09
CN102567109A (zh) 2012-07-11
EP2463781A3 (en) 2012-11-21

Similar Documents

Publication Publication Date Title
JP5963282B2 (ja) 割り込み分配スキーム
US8458386B2 (en) Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements
US8234429B2 (en) Monitoring interrupt acceptances in guests
US8806232B2 (en) Systems and method for hardware dynamic cache power management via bridge and power manager
US20090037932A1 (en) Mechanism for broadcasting system management interrupts to other processors in a computer system
KR20120061938A (ko) 시스템 관리 모드의 프로세서에 상태 스토리지를 제공하기 위한 장치, 방법 및 시스템
US9009377B2 (en) Edge-triggered interrupt conversion in a system employing level-sensitive interrupts
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
KR20170013882A (ko) 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc)
EP3770759A1 (en) Wake-up and scheduling of functions with context hints
US20120137078A1 (en) Multiple Critical Word Bypassing in a Memory Controller
US8719506B2 (en) Push mechanism for quality of service (QoS) support in coherency port
US9152588B2 (en) Race-free level-sensitive interrupt delivery using fabric delivered interrupts
US20230132931A1 (en) Hardware management of direct memory access commands
US11886910B2 (en) Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware
Larsen et al. Survey on system I/O hardware transactions and impact on latency, throughput, and other factors

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130605

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140501

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150126

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150202

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20150227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160401

R150 Certificate of patent or registration of utility model

Ref document number: 5923838

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