JP2004537809A - Efficient interrupt system for system-on-chip design - Google Patents

Efficient interrupt system for system-on-chip design Download PDF

Info

Publication number
JP2004537809A
JP2004537809A JP2003517765A JP2003517765A JP2004537809A JP 2004537809 A JP2004537809 A JP 2004537809A JP 2003517765 A JP2003517765 A JP 2003517765A JP 2003517765 A JP2003517765 A JP 2003517765A JP 2004537809 A JP2004537809 A JP 2004537809A
Authority
JP
Japan
Prior art keywords
interrupt
processor
processors
management system
controller
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.)
Withdrawn
Application number
JP2003517765A
Other languages
Japanese (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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2004537809A publication Critical patent/JP2004537809A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Abstract

【課題】本発明は、システムオンチップ設計において割り込み要求(「割り込み」)を管理するための方法およびシステムであって、より単純かつより効率的なマルチバス設計に対応でき、かつ割り込みを処理するためにプロセッサ間で通信でき、かつプロセッサへの割り込みの割り当てに関して柔軟性があり、かつ集積回路の設計を容易にする、割り込み管理システムおよび方法を提供すること。
【解決手段】複数の周辺デバイス(120a, 120b, ..., 120m)に結合された複数のプロセッサ(100a, 100b, ..., 100n)を含むシステムオンチップ設計における割り込みを管理するための方法(400)およびシステム(10)。相互接続された複数の割り込みコントローラ(110a, 110b, ..., 110n)が、プロセッサと周辺デバイスの間に結合される。周辺デバイスによって生成される割り込みは、すべての割り込みコントローラによって受信される。一実施例においては、割り込みコントローラは、プロセッサと対にされる。各割り込みコントローラは、どの割り込みを自身のプロセッサに渡すかを識別できる。割り込みコントローラは、各割り込みを特定のプロセッサに渡すために協力して動作する。
【選択図】図1
A method and system for managing interrupt requests ("interrupts") in a system-on-a-chip design that can accommodate simpler and more efficient multi-bus designs and handle interrupts. To provide an interrupt management system and method that is capable of communicating between processors and is flexible in assigning interrupts to processors, and that facilitates integrated circuit design.
A method for managing interrupts in a system-on-chip design including a plurality of processors (100a, 100b, ..., 100n) coupled to a plurality of peripheral devices (120a, 120b, ..., 120m). The method (400) and the system (10). A plurality of interconnected interrupt controllers (110a, 110b, ..., 110n) are coupled between the processor and peripheral devices. Interrupts generated by peripheral devices are received by all interrupt controllers. In one embodiment, the interrupt controller is paired with the processor. Each interrupt controller can identify which interrupt to pass to its processor. The interrupt controllers work together to pass each interrupt to a particular processor.
[Selection diagram] Fig. 1

Description

【0001】
【発明が属する技術分野】
本発明は、全般的には、集積回路(「チップ」)の分野に関する。より具体的には、本発明は、複数のプロセッサと複数の周辺デバイスとを含むシステムオンチップ設計における割り込みの管理に関する。
【0002】
【従来の技術】
「システムオンチップ」アーキテクチャ(例:マイクロコントローラ、マイクロプロセッサ)は、オーディオシステム、無線システム、携帯システム、データ通信システム、インターネット制御システム、産業/コンシューマー・システムなどの用途において一般的に使用されている。システムオンチップアーキテクチャでは、特定の用途におけるチップの生産とチップの組み込みの両方において、設計と製造の効率が向上する。
【0003】
一部のシステムオンチップアーキテクチャでは、パフォーマンスを向上させるため、複数のCPU(中央処理装置)を利用する。また、システムオンチップアーキテクチャでは、代表的には階層的な配列に編成される複数のバスを利用できる。
【0004】
システムオンチップアーキテクチャでは、チップが複雑になるほど問題が生じる。チップ上に複数のCPUが存在し、複数の周辺デバイスがチップによってサポートされる場合に、周辺デバイスによって生成される割り込み要求の管理が複雑になることがある。例えば、周辺デバイスによって割り込み要求が同時に生成されることがある。割り込み要求は、個別に処理する必要があり、各要求はCPUに送られる。割り込み要求を処理する各CPUは、割り込み要求の生成元であるデバイスを判断するために、周辺デバイスそれぞれに問い合わせる必要がある。CPUが複数の割り込み要求を同時に受信した場合には、割り込み要求の衝突を調停する必要がある。
【0005】
複数プロセッサのアーキテクチャにおいて割り込み要求を管理するための先行技術の手法には、共通する欠点がある。先行技術の割り込み管理手法では、複雑かつ非効率的なマルチバス設計が必要とされることがある。さらに、先行技術の手法では、割り込み要求の処理に関してプロセッサが互いに通信できないことがある。また、先行技術の手法では、特定の割り込み要求がハードウェアの特定のCPUに割り当てられることがあり、従って、先行技術の手法は相対的に固定的であり、柔軟性が低い。さらに、先行技術の手法では、集積回路の設計者に、タイミングとレイアウトに関する難しい制約が課されることがあり、従って、集積回路を設計、生産するために必要な時間が増大することがある。
【0006】
従って、より単純かつより効率的なマルチバス設計に対応できる割り込み管理システムおよび/または方法が、必要とされている。また、この要件を満たすことができ、かつ割り込み要求を処理するためにプロセッサ間で通信できる割り込み管理システムおよび/または方法も、必要とされている。さらに、この要件を満たすことができ、かつCPUへの割り込み要求の割り当てに関して柔軟性のある割り込み管理システムおよび/または方法も、必要とされている。さらに、この要件を満たすことができ、かつタイミングとレイアウトに関する不必要に重い制約を設計者に課さないことによって集積回路の設計を容易にすることのできる割り込み管理システムおよび/または方法も、必要とされている。本発明は、これらの必要性に対する新規の解決法を提供する。
【0007】
【課題を解決するための手段】
本発明は、複数の周辺デバイスに結合された複数のCPU(例:プロセッサ)を含むシステムオンチップ設計において割り込み要求(「割り込み」)を管理するための方法およびシステムに関する。本発明は、より単純かつより効率的なマルチバス設計に対応できる割り込み管理システムおよび/または方法を提供する。また、本発明は、割り込みを処理するためにプロセッサ間で通信できる割り込み管理システムおよび方法を提供する。さらに、本発明は、プロセッサへの割り込みの割り当てに関して柔軟性のある割り込み管理システムおよび方法を提供する。さらに、本発明は、タイミングとレイアウトに関する不必要に重い制約を設計者に課さないことによって集積回路の設計を容易にすることのできる割り込み管理システムおよび方法を提供する。
【0008】
本発明によると、複数の周辺デバイスをサポートする複数プロセッサのアーキテクチャにおいて、相互接続された複数の割り込みコントローラが、プロセッサと周辺デバイスの間に結合される。割り込みコントローラは、割り込みを特定のプロセッサに渡すために協力して動作する。また、割り込みコントローラは、必要な場合にプロセッサ間通信にも使用できる。すなわち、1基のプロセッサによって生成された割り込みを、割り込みコントローラを介して別のプロセッサに伝えることができる。
【0009】
一実施例においては、割り込みコントローラの数とプロセッサの数が等しく、各割り込みコントローラは、1基のプロセッサと対にされている(逆も同様)。このような実施例においては、各割り込みコントローラは、周辺デバイスそれぞれの優先度順位を含む割り込み優先度レジスタ(または同様のメモリ装置)を含む。この情報は、割り込みコントローラそれぞれに固有であり、割り込みコントローラは、この情報を使用することで、自身と対のプロセッサに割り込みを渡すか否かを判断できる。また、割り込みコントローラは、この情報を使用することで、2つ以上の割り込みが同時に割り込みコントローラで受信されるときに割り込み間で調停できる。
【0010】
周辺デバイスによって生成される各割り込みは、すべての割り込みコントローラによって受信される。各割り込みコントローラは、前の段落に説明されている情報を使用して、自身の対のプロセッサに割り込みを渡すか否かを識別する。このように、割り込みコントローラは、割り込みを特定のプロセッサに渡すために協力して動作する。
【0011】
一実施例においては、各割り込みコントローラには、割り込み優先度リミタレジスタ(limiter register)(または同様のメモリ装置)が含まれ、このレジスタは、現在処理中の割り込みの優先度の値に設定される。別の実施例においては、各割り込みコントローラには、割り込みソースレジスタ(または同様のメモリ装置)が含まれ、このレジスタは、優先度が最高であり、かつ優先度が割り込み優先度リミタレジスタの中の値よりも大きい未処理の割り込みを識別する。すなわち、割り込みソースレジスタは、次に処理すべき割り込みを識別する。この割り込みを処理するとき、プロセッサは、このレジスタへの読み取りアクセスを1回行うことで、その割り込みを生成した周辺デバイスを識別する。
【0012】
割り込みを管理するための本発明の方法およびシステムは、スケーラブルである。周辺デバイスを加えることは簡単であり、割り込みコントローラのレジスタ転送言語(RTL: Register Transfer Language)の記述を変更することによって制御できる。また、本発明は、任意の数のプロセッサを含めるように拡張することもできる。さらに、任意の数のオンチップバスを使用できる。
【0013】
割り込みコントローラは、割り込みを任意のプロセッサにマッピングするようにソフトウェアにおいてプログラムできる。本発明によると、入れ子構造の割り込み(例えば割り込みが同時またはほぼ同時に発生する)が容易に処理される。例えば、プロセッサは割り込みの生成元である周辺デバイスを識別するのに1回の読み取りアクセスを実行するのみでよいため、割り込み処理の効率が向上する。
【0014】
さらに、割り込みは非同期に処理でき、このため集積回路のタイミングまたはレイアウトを確立するうえで割り込みの処理が決定的に重要ではなくなるため、集積回路の設計と実装が容易になる。
【0015】
本発明の上記およびその他の目的と利点は、複数の図面に図解されている望ましい実施例についての以下の詳細な説明を読むことにより、当業者に明確になるであろう。
【0016】
添付の図面(この明細書に組み込まれ、かつこの明細書の一部を形成する)は、本発明の実施例を図解し、説明文と合わせて本発明の原理について説明するのに役立つ。
【0017】
【発明を実施するための形態】
本発明の望ましい実施例について、以下に詳細に説明する。これらの実施例は、添付の図面に図解されている。本発明は、望ましい実施例を参照しながら説明されているが、これらの実施例は、本発明をこれらに制限するものではないことが理解されるであろう。そうではなく、本発明は、代替手段、変更、および等価物も含むものとし、これらは、添付される請求項によって定義される本発明の精神と範囲の中に含まれる。さらに、本発明の以下の詳細な説明においては、本発明を完全に理解するために多数の固有の詳細が示されている。しかしながら、当業者には、本発明がこれらの固有な詳細を採用せずに実施できることは、明らかであろう。周知の方法、手順、構成要素、回路については、本発明の観点が不必要にあいまいになることを避けるため、詳細には説明されていない。
【0018】
以下の詳細な説明の一部は、データビットに対する操作の手順、論理ブロック、処理、その他の記号表現を使用して示されている。これらの説明と表現は、データ処理の分野の当業者が、自身の仕事の内容を同じ分野の別の当業者に最も効果的に伝えるために使用される手段である。本出願においては、手順、論理ブロック、プロセス、または同種のものは、必要な結果につながるステップまたは命令の内部矛盾のないシーケンスであるものと理解される。この場合のステップとは、物理量の物理的な操作を必要とするステップである。通常(そうでない場合もあるが)、これらの数量は、コンピュータシステムにおいて格納、転送、結合、比較、その他の操作を行うことのできる電気信号または磁気信号の形式をとる。場合によっては、これらの信号をトランザクション、ビット、値、要素、記号、文字、フラグメント、ピクセルなどと呼ぶことは便利であることが判明し、なぜならこれらは一般的に使用されているためである。
【0019】
しかしながら、留意すべき点として、これらの用語すべておよび類似する用語は、適切な物理量に関連し、これらの数量に貼り付けられる便宜上のラベルにすぎない。以下の説明において特に明記されない限りは、本発明全体を通じて、「生成する」、「通信する」、「渡す」、「受信する」、「送る」、「格納する」、「識別する」、または同様の用語を使用する説明は、コンピュータシステムまたは同様の電子計算装置の動作とプロセス(例:図4のプロセス400)について言及する。コンピュータシステムまたは同様の電子計算装置は、物理的(電子的)な量としてコンピュータシステムのメモリ、レジスタ、またはそのような他の情報記憶装置、伝送またはディスプレイデバイスの中で表されるデータを操作および変形する。
【0020】
図1は、本発明の一実施例による割り込み管理システム10の概要を示すブロック線図である。この実施例においては、割り込み管理システム10は、多数のプロセッサ(CPU)100a−nと、多数の割り込みコントローラ110a−nと、多数の周辺デバイス120a−mとを含む。本発明のこの実施例によると、周辺デバイス120a−mの1つが割り込み要求(「割り込み」)を生成すると、割り込みコントローラ110a−nは、CPU 100a−nのうちの1基のCPUにこの割り込みを送るように協力して動作する。さらに詳しい説明は後から行う。後から明らかになるように、本発明の割り込み管理システム10は、スケーラブルであり、任意の数のプロセッサと、割り込みコントローラと、周辺デバイスとに対応できる。
【0021】
割り込みコントローラ110a−nは、相互接続され、互いに通信できる(図3も参照)。一般に、CPU 100a−nと割り込みコントローラ110a−nは、集積回路内に属す(例えばこれらはシステムオンチップアーキテクチャの代表的な要素である)。しかしながら、CPU 100a−nの一部と、割り込みコントローラ110a−nの一部が、集積回路外に属していてもよいことが理解されるであろう。同様に、周辺デバイス120a−mの一部またはすべては、集積回路内に属す。
【0022】
図1を参照して、一実施例においては、割り込みコントローラの数とプロセッサの数が等しく、かつ、少なくとも割り込みに関しては、CPUとの通信は割り込みコントローラを通じて行われる。この実施例においては、各割り込みコントローラ110a−nは、1基のCPU 100a−nと対にされ、この逆も同様である。すなわち、CPU 100aは割り込みコントローラ110aと対にされ、CPU 100bは割り込みコントローラ110bと対にされ、他も同様である。この実施例においては、少なくとも割り込みに関し、割り込みコントローラ110a−nは、それぞれの対のCPU 100a−nとは直接的に通信し、別のCPUとは、そのCPUと対の割り込みコントローラを介して通信する。すなわち、例えば、割り込みコントローラ110aはCPU 100aと直接的に通信し、CPU 100b−nとは別の割り込みコントローラ110b−nを通じて通信する。留意すべき点として、この実施例においては、割り込みコントローラ110a−nは、データをCPU 100a−nに渡すための通路でなく、CPU 100a−nへの割り込みの流れと分配を制御することを主な目的とする。
【0023】
一実施例においては、各CPU 100a−nは、オンチップバス130を介して周辺デバイス120a−mのそれぞれと通信できる。一実施例においては、CPU 100a−nは、レジスタアクセスバス135と結合され(図2参照)、これによりCPUは、割り込みコントローラレジスタからの読み取りとレジスタへの書き込みを行うことができる。一実施例においては、周辺デバイス120a−mのいずれかによって生成された割り込みは、すべての割り込みコントローラ110a−nに送られる。しかしながら、代替の実施例においては、割り込みをすべての割り込みコントローラに送る代わりに、割り込みコントローラ110a−nのサブセットに選択的に送ることができる。
【0024】
各割り込みコントローラ110a−nは、それぞれの(対の)CPUに渡すべき割り込みと渡さない割り込みを認識するようにプログラムされる。割り込みコントローラ110a−nは、各周辺デバイス120a−mが処理対象となるようにプログラムされる。このプログラミングによると、各割り込みコントローラ110a−nは、自身が受信する割り込みを対のCPUに渡すべきか否かを判断する。例えば、割り込みコントローラ110aは、割り込みをCPU 100aに渡すか否かを判断し、渡す場合には、この割り込みはCPU 100aに渡され、そうでない場合には渡されない。すべての周辺デバイス120a−mが処理対象となるため、周辺デバイスの任意の1つによって生成される割り込みが、割り込みコントローラ110a−nの1つ、従ってCPU 100a−nの1つによって処理される。次に、図2を参照して補足的な説明を行う。
【0025】
図2は、本発明による割り込みコントローラ110aの一実施例のブロック線図である。この実施例においては、割り込みコントローラ110aは、割り込みソースレジスタ210と、割り込み優先度レジスタ220と、比較論理ブロック225と、割り込み優先度リミタ230と、ANDゲート240と、ORゲート250とを有するハードウェア要素である。割り込みコントローラ110aの機能はこれらの様々な要素に照らして説明されるため、割り込みコントローラ110aは説明されている実施例に限定されず、意図する機能を達成するために割り込みコントローラ110aを別の方法で構成できることが、理解されるであろう。
【0026】
この実施例においては、割り込み優先度レジスタ220は、動的かつ構成可能なレジスタであり、周辺デバイス120a−m(図1)のそれぞれに割り当てられている優先度が含まれる。従って、この実施例においては、周辺デバイス120a−mのすべての優先度順位を使用して各割り込みコントローラ110a−n(図1)をプログラムできる。割り込み優先度レジスタ220の中の情報は、割り込みコントローラ110a−nに固有である。すなわち、周辺デバイス120a−mの優先度順位は、割り込みコントローラ110a−nそれぞれで異なる。
【0027】
本発明によると、優先度順位は、プロセッサ100a−n(図1)の1つによって実行されるソフトウェアによって、各割り込みコントローラ110a−nに供給される。言い換えれば、各割り込みコントローラ110aは、周辺デバイス120a−mの一意の優先度順位を使用してプログラムされる。特定の割り込みコントローラ110a−nによって使用される優先度順位と、周辺デバイス120a−mそれぞれに割り当てられる優先度順位は、動的に変更できる。この結果として、周辺デバイス120a−mを任意のCPU 100a−nに割り当てる(マッピングする)ことができ、このマッピングを変更することで、1つの割り込みコントローラ(およびCPU)に割り当てられている周辺デバイスを別のCPUに割り当てることができる。さらに、周辺デバイスが追加または除去されるときには、本発明の割り込み管理システムおよび方法は容易にアップデートでき、従って、本発明の割り込み管理システムおよび方法は、任意の数の周辺デバイスに拡張可能(スケーラブル)である。周辺デバイスからCPUへのマッピングがソフトウェアにおいて提供され、従って容易に変更または拡張できるため、本発明は、割り込みを管理するための柔軟かつスケーラブルなシステムおよび方法を提供する。
【0028】
図2を参照して、いくつかの周辺デバイスは、その周辺デバイスの割り込みが割り込みコントローラ110aによってCPU 100aに渡されないことを示す優先度順位が割り込み優先度レジスタ220の中に保持される。例えば、優先度レジスタ220の中に保持されるこれらの周辺デバイスの優先度順位が、これらの周辺デバイスの優先度順位を無効にできることを定義する0、あるいは1つまたは複数のビットであることがある。このように、割り込み優先度レジスタ220の中の優先度順位は、どの周辺デバイスが割り込みコントローラ110aに、従ってCPU 100aに割り当てられるかを定義するのに使用される。
【0029】
それ以外の周辺デバイスは、それらの割り込みが割り込みコントローラ110aによってCPU 100aに渡されることを示す優先度順位が、割り込み優先度レジスタ220の中に保持される。このような周辺デバイスそれぞれに、異なる優先度を割り当てることで、いくつかの周辺デバイスからの割り込みが他の周辺デバイスからの割り込みより優先することを示すことができる。この結果として、割り込みコントローラ110aが複数の割り込み260を同時またはほぼ同時に受信すると、割り込みコントローラ110aは、最も優先度の高い割り込みを選択して処理するために、割り込み間で自動的に調停することができる。
【0030】
この実施例においては、割り込み優先度リミタ230は、動的かつ構成可能なレジスタであり、割り込みコントローラ110aによって現在処理されている割り込み270の優先度の値に、ソフトウェアによって設定される。この設定により、割り込み優先度リミタ230は、割り込みコントローラ110aによって現在処理されている割り込み270に基づくしきい値を指定する。
【0031】
一実施例においては、入れ子構造の割り込みは、次のように処理できる。次の割り込み260が割り込みコントローラ110aによって受信されると、比較論理ブロック225が、次の(後の)割り込みの優先度順位を現在処理中の割り込み270の優先度順位と比較する。この実施例においては、比較ブロック225は、この比較に基づいて信号をANDゲート240に供給する。後の割り込みの優先度が、割り込み優先度リミタ230によって指定されるしきい値より高い場合には、イネーブル信号(例:アクティブな「1」)がANDゲート240に渡され、後の割り込みがCPU 100aに渡され、割り込み優先度リミタ230が、新しいしきい値でソフトウェアによりアップデートされる。後の割り込みの優先度が、割り込み優先度リミタ230によって指定されるしきい値より低い場合には、後の割り込みはCPU 100aに渡されない。このように、本発明によると、入れ子構造の割り込みが容易に処理される。従って、本発明のこの実施例においては、必ずしも最初に到着した割り込みではなく、優先度が最高の割り込みがCPU 100aによって処理される。割り込みの優先度を調べて、その優先度をしきい値と比較するプロセスは、割り込みコントローラ110aによって受信される各割り込み260ごとに1回行われる。
【0032】
一実施例においては、ORゲート250は、1つの割り込みのみをCPU 100aに供給するように機能する。CPUの設計に応じて、複数の割り込み入力が可能である場合と、1つの割り込み入力のみが可能である場合とがある。従って、ORゲート250により、割り込みコントローラ110aは、いずれのタイプのCPU設計とも一緒に使用できる。
【0033】
図2をさらに参照し、割り込みソースレジスタ210には、CPU 100aが次に処理するべき割り込みを生成した周辺デバイス120a−m(図1)を識別する情報が含まれる。割り込みソースレジスタ210は、優先度が最高であり、かつ優先度が割り込み優先度リミタレジスタ220の中の値よりも大きい未処理の割り込みを識別する。従って、割り込みソースレジスタ210は、次に処理するべき割り込みを識別する。このため、CPU 100aは、割り込みソースレジスタ210を読み取って、次に処理すべき周辺デバイス120a−mを判断する。従って、CPU 100aは、この割り込みを生成した周辺デバイスを判断するのに、各周辺デバイス120a−mにアクセスする代わりに、割り込みソースレジスタ210に1回アクセスするのみでこの判断を行うことができ、これにより、割り込み処理プロセスの効率が向上する。CPU 100aは、その割り込みを生成した周辺デバイスにオンチップバス130(図1)を使用してアクセスできる。
【0034】
割り込みを処理した後、CPU 100aは、周辺デバイスにおける割り込みをクリアする。この結果として、その割り込みが割り込みコントローラ110aとCPU 100aにおいてデアサートされる。
【0035】
重要な点として、割り込みコントローラ110a−nは、一般に、割り込み入力と割り込み出力の間に組合せ論理のみを有する。これにより、割り込みコントローラ内のクロックなしに割り込みをそれぞれのCPU 100a−nに渡すことができる。本発明のこの実施例によると、割り込みは非同期に処理でき、従って集積回路のタイミングまたはレイアウトを確立するうえで割り込みの処理が決定的に重要ではなくなるため、このような回路の設計が容易になる。
【0036】
図3は、図1の割り込み管理システム10におけるブロック間の相互接続の詳細が追加されているブロック線図である。具体的には、図3は、割り込みコントローラ110a−n、従ってCPU 100a−nが本発明の一実施例に従って互いに通信できるようにするバスを示す。ただし、バスの数やタイプが異なる他のバス構成も本発明に従って利用できることが理解されるであろう。
【0037】
この実施例においては、オンチップバス130により、各CPU 100a−nは周辺デバイス120a−mと通信できる。さらに、一実施例においては、CPU 100a−nは、それぞれレジスタアクセスバス135に結合されている。レジスタアクセスバス135により、各CPUは図2の割り込みソースレジスタ210にアクセスできる。これにより、各CPUは、自身が次に処理すべき割り込みを生成した周辺デバイス120a−mを、1回の読み取りアクセスにおいて判断できる。
【0038】
この実施例においては、割り込み要求バス330は、1つの割り込みコントローラから別の割り込みコントローラに、従って1つのCPUから別のCPUに割り込みを送信するための通信経路を提供する。従って、各CPUは、必要なときに別のCPUの支援を要求できる。また、割り込み要求バス330は、周辺デバイス120a−mから割り込みコントローラ110a−nに割り込みを送信するための通信経路も提供する。割り込みクリアバス320は、割り込みが処理された(実行された)後にこれをクリアするためのバスである。
【0039】
一般に、割り込みコントローラがCPUから割り込み要求を受信すると、その割り込み要求は、周辺デバイスから受信された割り込み要求と同じ方式で処理される。すなわち、CPUからの割り込み要求に優先度が関連付けられ、割り込みコントローラは、割り込み要求をその優先度に従って処理する。優先度は、その割り込みを生成したCPUに基づくか、または割り込みを生成するようにCPUに要求する割り込みを生成した周辺デバイスに基づくようにできる。割り込み要求は、割り込みを処理できる割り込みコントローラ(およびそのCPU)が見つかるまで、1つの割り込みコントローラから次の割り込みコントローラに渡すことができる。プロセッサ間通信用のプロトコルについては、図5Aと5Bを参照しながら後からさらに説明する。
【0040】
図4は、本発明による割り込みを管理するためのプロセス400の一実施例におけるステップのフローチャートである。一実施例においては、プロセス400は、図1の割り込みコントローラ110a−nによって実行される。プロセス400におけるステップは、この図に提示されている順序とは異なる順序で実行できることと、プロセス400におけるステップすべてを必ずしも実行しなくてよいことが理解されるであろう。
【0041】
図4のステップ410において、図1と図2も参照して、この実施例においては、各割り込みコントローラ110a−nは、各割り込みコントローラに関連付けられているCPU 100a−nに渡す割り込みを識別するための十分な情報を受信する。一実施例においては、各割り込みコントローラ110a−nは、周辺デバイス120a−mの優先度順位を使用してプログラムされる。優先度順位は、各割り込みコントローラ110a−nに一意であり、割り込みコントローラとCPUの各対について、割り込みコントローラによって割り込みがCPUに渡される周辺デバイスを識別するのに使用される。
【0042】
一実施例においては、優先度順位は、各割り込みコントローラ220の割り込み優先度レジスタ220の中に格納される。割り込み優先度レジスタ220に格納されている優先度順位は、例えば、追加の周辺デバイスがCPU 100a−nに結合される場合、または周辺デバイス120a−mからCPU 100a−nへのマッピングを変更することが望ましい場合に、動的に変更できる。
【0043】
図4のステップ420において、図1と2も参照して、この実施例においては、割り込み260が、割り込みコントローラ110a−nのすべてによって受信される。一実施例においては、周辺デバイス120a−mによって生成される割り込みは、障害が起こらないことが想定される。
【0044】
図4のステップ430において、一実施例においては、割り込みコントローラ110a−nそれぞれ(図1)は、上記のステップ410においてプログラムされた優先度順位を使用して、割り込みをそれぞれの(対の)CPUに渡すべきか否かを判断する。割り込みがイネーブルにされていて(すなわち割り込みの優先度が0以外である)、かつ割り込みの優先度が図3の割り込み優先度リミタ230に指定されているしきい値よりも大きい場合には、割り込みコントローラは、対のCPUに割り込みを渡す。
【0045】
図4のステップ440において、この実施例においては、次にCPUによって処理すべき割り込みを生成した周辺デバイスを識別する情報が、図3の割り込みソースレジスタ210に格納される。CPU(具体的にはCPUの割り込みハンドラ)は、割り込みソースレジスタ210を読み取ることができる。CPUは、割り込みソースレジスタに基づいて、割り込みを生成した周辺デバイスからの割り込みのステータスを読み取ることができる。ステータス情報は、割り込みを処理するための十分な情報をCPUに提供する。割り込みを実行した後、CPUは、周辺デバイスにおける割り込みをクリアし、この結果として、割り込みコントローラとCPUに割り込みがデアサートされる。
【0046】
図4のステップ450においては、CPUがビジーであり別のCPUからの支援を必要とする場合に、第一CPUによって割り込みを生成し、その割り込みを第二CPUに、それぞれの割り込みコントローラを介して渡すことができる。このことについて、図5Aと5Bを参照しながら以下にさらに説明する。
【0047】
図5Aは、本発明の一実施例による、割り込みコントローラPIC1 (501)とPIC2 (502)を介してのプロセッサ間通信を示すデータフロー図である。説明を単純にするため、プロセッサ間通信は、2基のプロセッサの文脈において説明されている。しかしながら、プロセッサ間通信は任意の数のプロセッサに拡張できる。プロセッサ間通信をイネーブルにするために、複数の信号510が割り込みコントローラPIC1 (501)とPIC2 (502)の間で渡される。信号510には、割り込み要求信号(例:Int_req[p−0]とInt_req[r−0])と割り込みクリア信号(例:Int_clr[p−0]とInt_clr[r−0])が含まれる。割り込みコントローラを介してのプロセッサ間通信は、非同期に実行される。
【0048】
図5Bは、図5Aに図解されている場合など、プロセッサ間通信(IPC)のタイミング図である。図5Aと図5Bの両方を参照して、CPU1 (505)は、プロセッサ間通信の要求を開始するため、割り込みコントローラPIC1 (501)に書き込みを行ってInt_req1 (510a)を設定する。これにより、割り込みコントローラPIC2 (502)がInt_to_cpu2 (504)をアサートする(割り込みの優先度が図2の割り込み優先度リミタ230内のしきい値よりも高い場合)。PIC2 (502)は、プロセッサ間通信の割り込みを、周辺デバイス120a−m(図1)によって生成される割り込みと同じ方法で処理する。
【0049】
図5Aと5Bをさらに参照して、CPU2 (506)は、PIC2 (502)の割り込みソースレジスタ210(図2)を読み取り、割り込みハンドラを実行する。割り込みハンドラの実行が終了した後、割り込みは、CPU2 (506)がPIC2 (502)に書き込みを行うことによってクリアされる。この書き込み後、Int_clr1 (510b)がアサートされ、Int_to_cpu2 (504)がデアサートされ、かつInt_req1 (510a)がデアサートされる。この時点で、PIC1 (501)は、再びInt_req1 (510a)を設定するための、CPU1 (505)からの別の書き込みを受信できる状態になる。しかしながら、Int_clr1 (510b)がアサートされている間は、Int_req1 (510a)をアサートするための書き込みを完了できない。これは、前の割り込みのクリアを確実に完了させるために必要である。
【0050】
本発明によるプロセッサ間通信は、多数の利点を提供する。第一に、このプロセッサ間通信は、安全かつ効率的である。割り込みをアサートするCPU(例:CPU1 505)は、それぞれの割り込みコントローラ(例:PIC1 501)に1回の書き込みを実行するのみでよい。割り込まれる側のCPU(例:CPU2 506)は、割り込みソースレジスタを読み取って割り込みの生成元を判断し、処理が完了するとその割り込みをクリアする。CPU2 506は、PIC2 (502)への読み取りと書き込みによってこれを達成する。従って、本発明によると、マルチバスシステムを介しての待ち時間の長いアクセスが回避される。第二に、本発明によるプロセッサ間通信は、スケーラブルである。第三に、プロセッサ間通信は非同期であるため、集積回路のタイミングまたはレイアウトを確立するうえで決定的に重要ではなく、このような回路の設計が容易になる。
【0051】
さらに、プロセッサ間通信の割り込みが、周辺デバイス120a−m(図2)によって生成される割り込みと同じ方法で処理されるため、プロセッサ間通信をソフトウェアにおいて容易に処理でき、特に、周辺デバイス120a−mを管理するために使用されるソフトウェアによって処理できる。
【0052】
要約すると、本発明は、より簡単かつより効率的なマルチバス設計に対応できる割り込み管理システムおよび方法を提供する。また、本発明は、プロセッサ間通信を行うことのできる割り込み管理システムおよび方法を提供する。さらに、本発明は、プロセッサ(例:CPU)への割り込みの割当に関して柔軟な割り込み管理システムおよび方法を提供する。さらに、本発明は、タイミングとレイアウトの重い制約を設計者に課すことなく、より短期間で設計および生産を行うことのできる割り込み管理システムおよび方法を提供する。
【0053】
以上が、本発明(システムオンチップ設計用の効率的な割り込みシステム)の望ましい実施例の説明である。本発明は特定の実施例において説明されているが、本発明はこのような実施例に制限されず、添付の請求項に従って解釈されるものとする。
【図面の簡単な説明】
【図1】本発明の一実施例による割り込み管理システムの概要を示すブロック線図である。
【図2】本発明による割り込みコントローラの一実施例のブロック線図である。
【図3】図1の割り込み管理システムにおけるブロック間の相互接続の詳細が追加されているブロック線図である。
【図4】本発明の一実施例による、割り込みを管理するためのプロセスにおけるステップのフローチャートである。
【図5A】本発明の一実施例による、割り込みコントローラを介してのプロセッサ間通信を示すデータフロー図である。
【図5B】図5Aに図解されているものなど、プロセッサ間通信のタイミング図である。
【符号の説明】
10 割り込み管理システム
100a−n プロセッサ
110a−n 割り込みコントローラ
120a−m 周辺デバイス
130、135 バス
210 割り込みソースレジスタ
220 割り込み優先度レジスタ
225 比較論理ブロック
230 割り込み優先度リミタ
240 ANDゲート
250 ORゲート
260、270 割り込み
320 割り込みクリアバス
330 割り込み要求バス
400 プロセス
410、420、430、440、450 ステップ
510 信号
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates generally to the field of integrated circuits ("chips"). More specifically, the present invention relates to managing interrupts in a system-on-a-chip design that includes multiple processors and multiple peripheral devices.
[0002]
[Prior art]
"System-on-a-chip" architectures (eg, microcontrollers, microprocessors) are commonly used in applications such as audio systems, wireless systems, portable systems, data communication systems, Internet control systems, industrial / consumer systems, and the like. . System-on-a-chip architectures increase the efficiency of design and manufacturing, both for chip production and chip integration for specific applications.
[0003]
Some system-on-chip architectures utilize multiple CPUs (Central Processing Units) to improve performance. In the system-on-chip architecture, a plurality of buses typically arranged in a hierarchical arrangement can be used.
[0004]
In a system-on-a-chip architecture, the more complex the chip, the more problems arise. When there are a plurality of CPUs on a chip and a plurality of peripheral devices are supported by the chip, management of interrupt requests generated by the peripheral devices may be complicated. For example, an interrupt request may be generated simultaneously by a peripheral device. Interrupt requests must be processed individually and each request is sent to the CPU. Each CPU that processes an interrupt request needs to make an inquiry to each peripheral device in order to determine the device that generated the interrupt request. When the CPU receives a plurality of interrupt requests at the same time, it is necessary to arbitrate the conflict between the interrupt requests.
[0005]
Prior art approaches to managing interrupt requests in a multiple processor architecture have common drawbacks. Prior art interrupt management approaches may require complex and inefficient multi-bus designs. Further, in prior art approaches, processors may not be able to communicate with each other with respect to servicing interrupt requests. Also, in the prior art approach, certain interrupt requests may be assigned to a particular CPU in hardware, and thus the prior art approach is relatively fixed and less flexible. Further, prior art approaches may impose difficult timing and layout constraints on integrated circuit designers, and thus may increase the time required to design and produce integrated circuits.
[0006]
Therefore, there is a need for an interrupt management system and / or method that can accommodate simpler and more efficient multi-bus designs. There is also a need for an interrupt management system and / or method that can meet this requirement and that can communicate between processors to service interrupt requests. There is also a need for an interrupt management system and / or method that can meet this requirement and that is flexible with respect to assigning interrupt requests to CPUs. Further, there is also a need for an interrupt management system and / or method that can meet this requirement and facilitate the design of integrated circuits by not imposing unnecessarily heavy timing and layout constraints on the designer. Have been. The present invention provides a novel solution to these needs.
[0007]
[Means for Solving the Problems]
The present invention relates to a method and system for managing interrupt requests ("interrupts") in a system-on-chip design that includes multiple CPUs (eg, processors) coupled to multiple peripheral devices. The present invention provides an interrupt management system and / or method that can accommodate simpler and more efficient multi-bus designs. The present invention also provides an interrupt management system and method that can communicate between processors to handle interrupts. Further, the present invention provides a flexible interrupt management system and method for assigning interrupts to processors. Further, the present invention provides an interrupt management system and method that can facilitate integrated circuit design by not imposing unnecessarily heavy constraints on timing and layout on a designer.
[0008]
In accordance with the present invention, in a multiple processor architecture supporting multiple peripheral devices, multiple interconnected interrupt controllers are coupled between the processor and the peripheral device. Interrupt controllers operate in concert to pass interrupts to a particular processor. The interrupt controller can also be used for interprocessor communication if needed. That is, an interrupt generated by one processor can be transmitted to another processor via an interrupt controller.
[0009]
In one embodiment, the number of interrupt controllers is equal to the number of processors, and each interrupt controller is paired with one processor and vice versa. In such an embodiment, each interrupt controller includes an interrupt priority register (or similar memory device) that contains the priority of each of the peripheral devices. This information is unique to each interrupt controller, and the interrupt controller can use this information to determine whether or not to pass an interrupt to itself and a paired processor. The interrupt controller can also use this information to arbitrate between interrupts when two or more interrupts are received by the interrupt controller simultaneously.
[0010]
Each interrupt generated by a peripheral device is received by all interrupt controllers. Each interrupt controller uses the information described in the previous paragraph to identify whether to pass an interrupt to its paired processor. In this way, the interrupt controllers work cooperatively to pass interrupts to a particular processor.
[0011]
In one embodiment, each interrupt controller includes an interrupt priority limiter register (or similar memory device), which is set to the priority value of the interrupt currently being serviced. . In another embodiment, each interrupt controller includes an interrupt source register (or similar memory device), which has the highest priority and has a priority in the interrupt priority limiter register. Identify outstanding interrupts greater than the value. That is, the interrupt source register identifies the interrupt to be processed next. When processing this interrupt, the processor performs one read access to this register to identify the peripheral device that generated the interrupt.
[0012]
The inventive method and system for managing interrupts is scalable. It is easy to add a peripheral device, and it can be controlled by changing the description of the register transfer language (RTL) of the interrupt controller. Also, the present invention can be extended to include any number of processors. Further, any number of on-chip buses can be used.
[0013]
The interrupt controller can be programmed in software to map the interrupt to any processor. According to the present invention, nested interrupts (e.g., interrupts occur simultaneously or nearly simultaneously) are easily handled. For example, the processor only needs to perform one read access to identify the peripheral device from which the interrupt was generated, thereby improving the efficiency of interrupt processing.
[0014]
In addition, interrupts can be handled asynchronously, which facilitates the design and implementation of integrated circuits because the handling of interrupts is not critical in establishing the timing or layout of the integrated circuit.
[0015]
The above and other objects and advantages of the present invention will become apparent to those skilled in the art from a reading of the following detailed description of the preferred embodiment, as illustrated in the accompanying drawings.
[0016]
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention.
[0017]
BEST MODE FOR CARRYING OUT THE INVENTION
Preferred embodiments of the present invention will be described in detail below. These embodiments are illustrated in the accompanying drawings. Although the present invention has been described with reference to preferred embodiments, it will be understood that these embodiments are not limiting of the invention. On the contrary, the invention is intended to cover alternatives, modifications, and equivalents, which are included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. Well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the present invention.
[0018]
Some of the detailed descriptions that follow are presented using procedures, logic blocks, operations, and other symbolic representations of operations on data bits. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In this application, a procedure, logic block, process, or the like, is understood to be an internally consistent sequence of steps or instructions leading to the required result. The step in this case is a step that requires physical manipulation of a physical quantity. Usually (but not always), these quantities take the form of electrical or magnetic signals that can be stored, transferred, combined, compared, and otherwise manipulated in a computer system. In some cases, it has proven convenient to refer to these signals as transactions, bits, values, elements, symbols, characters, fragments, pixels, etc., because they are commonly used.
[0019]
It should be noted, however, that all of these and similar terms relate to the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise indicated in the following description, “generate,” “communicate,” “pass,” “receive,” “send,” “store,” “identify,” or similar throughout the present invention. The description using the term refers to the operation and process of a computer system or similar electronic computing device (eg, process 400 of FIG. 4). A computer system or similar electronic computing device manipulates and represents data represented as physical (electronic) quantities in computer system memory, registers, or such other information storage, transmission or display devices. Deform.
[0020]
FIG. 1 is a block diagram showing an outline of an interrupt management system 10 according to one embodiment of the present invention. In this embodiment, interrupt management system 10 includes multiple processors (CPUs) 100a-n, multiple interrupt controllers 110a-n, and multiple peripheral devices 120a-m. According to this embodiment of the present invention, when one of the peripheral devices 120a-m generates an interrupt request ("interrupt"), the interrupt controller 110a-n issues this interrupt to one of the CPUs 100a-n. Work cooperatively to send. A more detailed description will be given later. As will become apparent, the interrupt management system 10 of the present invention is scalable and can accommodate any number of processors, interrupt controllers, and peripheral devices.
[0021]
The interrupt controllers 110a-n are interconnected and can communicate with each other (see also FIG. 3). Generally, CPUs 100a-n and interrupt controllers 110a-n reside within an integrated circuit (eg, they are representative elements of a system-on-chip architecture). However, it will be appreciated that some of the CPUs 100a-n and some of the interrupt controllers 110a-n may reside outside of the integrated circuit. Similarly, some or all of the peripheral devices 120a-m belong to an integrated circuit.
[0022]
Referring to FIG. 1, in one embodiment, the number of interrupt controllers is equal to the number of processors, and at least for interrupts, communication with the CPU is through the interrupt controller. In this embodiment, each interrupt controller 110a-n is paired with one CPU 100a-n and vice versa. That is, CPU 100a is paired with interrupt controller 110a, CPU 100b is paired with interrupt controller 110b, and so on. In this embodiment, at least with respect to interrupts, the interrupt controllers 110a-n communicate directly with each pair of CPUs 100a-n and communicate with another CPU via the paired interrupt controller with that CPU. I do. That is, for example, the interrupt controller 110a communicates directly with the CPU 100a, and communicates with the CPU 100b-n through another interrupt controller 110b-n. It should be noted that in this embodiment, the interrupt controllers 110a-n mainly control the flow and distribution of interrupts to the CPUs 100a-n, rather than the path for passing data to the CPUs 100a-n. Purpose.
[0023]
In one embodiment, each CPU 100a-n can communicate with each of the peripheral devices 120a-m via the on-chip bus 130. In one embodiment, CPUs 100a-n are coupled to register access bus 135 (see FIG. 2), which allows the CPU to read from and write to the interrupt controller registers. In one embodiment, interrupts generated by any of the peripheral devices 120a-m are sent to all interrupt controllers 110a-n. However, in alternate embodiments, instead of sending interrupts to all interrupt controllers, interrupts can be selectively sent to a subset of interrupt controllers 110a-n.
[0024]
Each interrupt controller 110a-n is programmed to recognize which interrupts should be passed to the respective (paired) CPU and which interrupts should not. The interrupt controllers 110a-n are programmed so that each of the peripheral devices 120a-m is to be processed. According to this programming, each interrupt controller 110a-n determines whether the interrupt received by itself should be passed to the paired CPU. For example, the interrupt controller 110a determines whether to pass an interrupt to the CPU 100a, and if so, the interrupt is passed to the CPU 100a; otherwise, it is not passed. Since all peripheral devices 120a-m are to be processed, interrupts generated by any one of the peripheral devices are processed by one of the interrupt controllers 110a-n and thus one of the CPUs 100a-n. Next, a supplementary explanation will be given with reference to FIG.
[0025]
FIG. 2 is a block diagram of one embodiment of the interrupt controller 110a according to the present invention. In this embodiment, the interrupt controller 110a includes a hardware having an interrupt source register 210, an interrupt priority register 220, a comparison logic block 225, an interrupt priority limiter 230, an AND gate 240, and an OR gate 250. Element. Because the function of the interrupt controller 110a is described in the context of these various elements, the interrupt controller 110a is not limited to the described embodiment, and may otherwise be modified to achieve the intended function. It will be appreciated that it can be configured.
[0026]
In this embodiment, the interrupt priority register 220 is a dynamic and configurable register that includes the priority assigned to each of the peripheral devices 120a-m (FIG. 1). Thus, in this embodiment, each interrupt controller 110a-n (FIG. 1) can be programmed using all priorities of the peripheral devices 120a-m. The information in the interrupt priority register 220 is specific to the interrupt controllers 110a-n. That is, the priority order of the peripheral devices 120a-m differs among the interrupt controllers 110a-n.
[0027]
According to the present invention, the priority order is provided to each interrupt controller 110a-n by software executed by one of the processors 100a-n (FIG. 1). In other words, each interrupt controller 110a is programmed using the unique priority order of peripheral devices 120a-m. The priority order used by a particular interrupt controller 110a-n and the priority order assigned to each of the peripheral devices 120a-m can be dynamically changed. As a result, the peripheral devices 120a-m can be assigned (mapped) to an arbitrary CPU 100a-n. By changing the mapping, the peripheral devices assigned to one interrupt controller (and CPU) can be assigned. It can be assigned to another CPU. Further, when peripheral devices are added or removed, the interrupt management system and method of the present invention can be easily updated, and thus the interrupt management system and method of the present invention can be scaled to any number of peripheral devices. It is. The present invention provides a flexible and scalable system and method for managing interrupts, since the mapping from peripheral devices to the CPU is provided in software and thus can be easily changed or extended.
[0028]
Referring to FIG. 2, for some peripheral devices, a priority order indicating that an interrupt of the peripheral device is not passed to the CPU 100a by the interrupt controller 110a is held in the interrupt priority register 220. For example, the priority of these peripheral devices held in the priority register 220 may be 0, or one or more bits defining that the priority of these peripheral devices may be overridden. is there. Thus, the priority order in the interrupt priority register 220 is used to define which peripheral device is assigned to the interrupt controller 110a and thus to the CPU 100a.
[0029]
For other peripheral devices, the priority order indicating that those interrupts are passed to the CPU 100a by the interrupt controller 110a is held in the interrupt priority register 220. By assigning different priorities to such peripheral devices, it is possible to indicate that interrupts from some peripheral devices take precedence over interrupts from other peripheral devices. As a result, when the interrupt controller 110a receives a plurality of interrupts 260 simultaneously or nearly simultaneously, the interrupt controller 110a may automatically arbitrate between the interrupts to select and process the highest priority interrupt. it can.
[0030]
In this embodiment, interrupt priority limiter 230 is a dynamic and configurable register that is set by software to the priority value of interrupt 270 currently being processed by interrupt controller 110a. With this setting, the interrupt priority limiter 230 specifies a threshold based on the interrupt 270 currently being processed by the interrupt controller 110a.
[0031]
In one embodiment, nested interrupts can be handled as follows. When the next interrupt 260 is received by the interrupt controller 110a, the comparison logic block 225 compares the priority of the next (later) interrupt with the priority of the interrupt 270 currently being serviced. In this embodiment, comparison block 225 provides a signal to AND gate 240 based on the comparison. If the priority of the later interrupt is higher than the threshold specified by the interrupt priority limiter 230, an enable signal (eg, active "1") is passed to the AND gate 240 and the later interrupt is sent to the CPU. Passed to 100a, the interrupt priority limiter 230 is updated by software with the new threshold. If the priority of the later interrupt is lower than the threshold specified by the interrupt priority limiter 230, the later interrupt will not be passed to the CPU 100a. Thus, according to the present invention, nested interrupts are easily handled. Therefore, in this embodiment of the present invention, the interrupt with the highest priority, not necessarily the interrupt that arrived first, is processed by the CPU 100a. The process of examining the priority of the interrupt and comparing the priority to a threshold is performed once for each interrupt 260 received by the interrupt controller 110a.
[0032]
In one embodiment, OR gate 250 functions to provide only one interrupt to CPU 100a. Depending on the design of the CPU, there are cases where a plurality of interrupt inputs are possible and cases where only one interrupt input is possible. Thus, OR gate 250 allows interrupt controller 110a to be used with any type of CPU design.
[0033]
With further reference to FIG. 2, interrupt source register 210 includes information identifying the peripheral device 120a-m (FIG. 1) that generated the next interrupt to be processed by CPU 100a. Interrupt source register 210 identifies the pending interrupt having the highest priority and a priority greater than the value in interrupt priority limiter register 220. Thus, interrupt source register 210 identifies the next interrupt to be serviced. Therefore, the CPU 100a reads the interrupt source register 210 and determines the peripheral devices 120a-m to be processed next. Therefore, instead of accessing each of the peripheral devices 120a-m, the CPU 100a can make this determination only by accessing the interrupt source register 210 once instead of accessing each of the peripheral devices 120a-m. This improves the efficiency of the interrupt processing process. The CPU 100a can access the peripheral device that generated the interrupt using the on-chip bus 130 (FIG. 1).
[0034]
After servicing the interrupt, CPU 100a clears the interrupt in the peripheral device. As a result, the interrupt is deasserted in interrupt controller 110a and CPU 100a.
[0035]
Importantly, interrupt controllers 110a-n generally have only combinational logic between interrupt inputs and interrupt outputs. This allows an interrupt to be passed to each CPU 100a-n without a clock in the interrupt controller. In accordance with this embodiment of the present invention, interrupts can be handled asynchronously, thus facilitating the design of such circuits because the handling of interrupts is not critical in establishing the timing or layout of the integrated circuit. .
[0036]
FIG. 3 is a block diagram in which details of interconnection between blocks in the interrupt management system 10 of FIG. 1 are added. Specifically, FIG. 3 illustrates a bus that allows interrupt controllers 110a-n, and thus CPUs 100a-n, to communicate with one another in accordance with one embodiment of the present invention. However, it will be appreciated that other bus configurations having different numbers and types of buses may be utilized in accordance with the present invention.
[0037]
In this embodiment, on-chip bus 130 allows each CPU 100a-n to communicate with peripheral devices 120a-m. Further, in one embodiment, CPUs 100a-n are each coupled to a register access bus 135. The register access bus 135 allows each CPU to access the interrupt source register 210 of FIG. Accordingly, each CPU can determine the peripheral device 120a-m that has generated the interrupt to be processed next in one read access.
[0038]
In this embodiment, interrupt request bus 330 provides a communication path for transmitting interrupts from one interrupt controller to another interrupt controller, and thus from one CPU to another. Therefore, each CPU can request the support of another CPU when necessary. Interrupt request bus 330 also provides a communication path for transmitting interrupts from peripheral devices 120a-m to interrupt controllers 110a-n. The interrupt clear bus 320 is a bus for clearing an interrupt after it has been processed (executed).
[0039]
Generally, when an interrupt controller receives an interrupt request from a CPU, the interrupt request is processed in the same manner as an interrupt request received from a peripheral device. That is, the priority is associated with the interrupt request from the CPU, and the interrupt controller processes the interrupt request according to the priority. The priority can be based on the CPU that generated the interrupt or on the peripheral device that generated the interrupt requesting the CPU to generate the interrupt. Interrupt requests can be passed from one interrupt controller to the next until an interrupt controller (and its CPU) that can handle the interrupt is found. The protocol for inter-processor communication will be further described later with reference to FIGS. 5A and 5B.
[0040]
FIG. 4 is a flowchart of the steps in one embodiment of a process 400 for managing interrupts according to the present invention. In one embodiment, process 400 is performed by interrupt controllers 110a-n in FIG. It will be understood that the steps in process 400 can be performed in a different order than that presented in this figure, and that not all steps in process 400 need be performed.
[0041]
In step 410 of FIG. 4, with reference also to FIGS. 1 and 2, in this embodiment, each interrupt controller 110a-n identifies an interrupt to pass to the CPU 100a-n associated with each interrupt controller. To receive enough information. In one embodiment, each interrupt controller 110a-n is programmed using the priority order of peripheral devices 120a-m. The priority order is unique to each interrupt controller 110a-n and is used by each interrupt controller and CPU pair to identify the peripheral device whose interrupt is passed to the CPU by the interrupt controller.
[0042]
In one embodiment, the priority order is stored in the interrupt priority register 220 of each interrupt controller 220. The priority order stored in the interrupt priority register 220 may be, for example, when additional peripheral devices are coupled to the CPUs 100a-n or changing the mapping from the peripheral devices 120a-m to the CPUs 100a-n. Can be changed dynamically if desired.
[0043]
In step 420 of FIG. 4, and with reference also to FIGS. 1 and 2, in this embodiment, an interrupt 260 is received by all of the interrupt controllers 110a-n. In one embodiment, it is assumed that the interrupts generated by peripheral devices 120a-m will not fail.
[0044]
In step 430 of FIG. 4, in one embodiment, each of the interrupt controllers 110a-n (FIG. 1) uses the priority order programmed in step 410 above to interrupt the respective (paired) CPU. To determine if it should be passed. If the interrupt is enabled (i.e., the priority of the interrupt is other than 0) and the priority of the interrupt is greater than the threshold specified in the interrupt priority limiter 230 of FIG. The controller passes an interrupt to the paired CPU.
[0045]
At step 440 in FIG. 4, in this embodiment, information identifying the peripheral device that has generated the interrupt to be processed next by the CPU is stored in the interrupt source register 210 of FIG. The CPU (specifically, the CPU's interrupt handler) can read the interrupt source register 210. The CPU can read the status of the interrupt from the peripheral device that generated the interrupt based on the interrupt source register. The status information provides the CPU with enough information to handle the interrupt. After executing the interrupt, the CPU clears the interrupt in the peripheral device, and as a result, the interrupt is deasserted to the interrupt controller and the CPU.
[0046]
In step 450 of FIG. 4, if the CPU is busy and needs assistance from another CPU, an interrupt is generated by the first CPU and the interrupt is sent to the second CPU via the respective interrupt controller. You can pass. This is further explained below with reference to FIGS. 5A and 5B.
[0047]
FIG. 5A is a data flow diagram illustrating inter-processor communication via interrupt controllers PIC1 (501) and PIC2 (502) according to one embodiment of the present invention. For simplicity, interprocessor communication is described in the context of two processors. However, interprocessor communication can be extended to any number of processors. A plurality of signals 510 are passed between the interrupt controllers PIC1 (501) and PIC2 (502) to enable inter-processor communication. The signal 510 includes an interrupt request signal (eg, Int_req [p-0] and Int_req [r-0]) and an interrupt clear signal (eg, Int_clr [p-0] and Int_clr [r-0]). Communication between processors via the interrupt controller is performed asynchronously.
[0048]
FIG. 5B is a timing diagram for inter-processor communication (IPC), such as that illustrated in FIG. 5A. Referring to both FIG. 5A and FIG. 5B, CPU1 (505) sets Int_req1 (510a) by writing to interrupt controller PIC1 (501) to start a request for interprocessor communication. This causes the interrupt controller PIC2 (502) to assert Int_to_cpu2 (504) (if the interrupt priority is higher than the threshold in the interrupt priority limiter 230 of FIG. 2). PIC2 (502) handles interprocessor communication interrupts in the same manner as interrupts generated by peripheral devices 120a-m (FIG. 1).
[0049]
5A and 5B, CPU2 (506) reads the interrupt source register 210 (FIG. 2) of PIC2 (502) and executes the interrupt handler. After the execution of the interrupt handler is completed, the interrupt is cleared by CPU2 (506) writing to PIC2 (502). After this write, Int_clr1 (510b) is asserted, Int_to_cpu2 (504) is deasserted, and Int_req1 (510a) is deasserted. At this point, PIC1 (501) is ready to receive another write from CPU1 (505) to set Int_req1 (510a) again. However, the writing for asserting Int_req1 (510a) cannot be completed while Int_clr1 (510b) is asserted. This is necessary to ensure that the clearing of the previous interrupt has been completed.
[0050]
Inter-processor communication according to the present invention provides a number of advantages. First, this interprocessor communication is secure and efficient. The CPU asserting the interrupt (eg, CPU1 505) need only execute one write to each interrupt controller (eg, PIC1 501). The interrupting CPU (eg, CPU2 506) reads the interrupt source register to determine the source of the interrupt, and clears the interrupt when the processing is completed. CPU2 506 accomplishes this by reading and writing to PIC2 (502). Therefore, according to the present invention, access with a long waiting time via the multi-bus system is avoided. Second, interprocessor communication according to the present invention is scalable. Third, the inter-processor communication is asynchronous and thus is not critical in establishing the timing or layout of the integrated circuit, facilitating the design of such circuits.
[0051]
Further, interprocessor communication interrupts are handled in the same manner as interrupts generated by peripheral devices 120a-m (FIG. 2), so that interprocessor communication can be easily handled in software, and in particular, peripheral devices 120a-m. Can be handled by the software used to manage it.
[0052]
In summary, the present invention provides an interrupt management system and method that can accommodate simpler and more efficient multi-bus designs. The present invention also provides an interrupt management system and method capable of performing interprocessor communication. In addition, the present invention provides a flexible interrupt management system and method for assigning interrupts to processors (eg, CPUs). Further, the present invention provides an interrupt management system and method that can be designed and manufactured in a shorter time without imposing heavy timing and layout constraints on a designer.
[0053]
The above is a description of a preferred embodiment of the present invention (an efficient interrupt system for system-on-chip design). Although the invention has been described in particular embodiments, the invention is not limited to such embodiments, but is to be construed in accordance with the appended claims.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an outline of an interrupt management system according to an embodiment of the present invention.
FIG. 2 is a block diagram of one embodiment of an interrupt controller according to the present invention.
FIG. 3 is a block diagram with additional details of interconnection between blocks in the interrupt management system of FIG. 1;
FIG. 4 is a flowchart of steps in a process for managing interrupts, according to one embodiment of the present invention.
FIG. 5A is a data flow diagram illustrating inter-processor communication via an interrupt controller, according to one embodiment of the present invention.
FIG. 5B is a timing diagram of inter-processor communication, such as that illustrated in FIG. 5A.
[Explanation of symbols]
10 Interrupt management system
100a-n processor
110a-n interrupt controller
120am peripheral device
130, 135 bus
210 Interrupt source register
220 Interrupt Priority Register
225 Comparison logic block
230 Interrupt priority limiter
240 AND gate
250 OR gate
260, 270 interrupt
320 Clear interrupt bus
330 Interrupt request bus
400 process
410, 420, 430, 440, 450 steps
510 signal

Claims (23)

割り込み管理システムであって、当該システムが、
− 割り込みを生成するように適合化されている複数の周辺デバイスと、
− 各プロセッサがすべての周辺デバイスと通信できるように、1つの集積回路内に結合されかつ当該複数の周辺デバイスに結合された複数のプロセッサと、
− 当該複数のプロセッサと当該複数の周辺デバイスとの間に結合されている、相互接続された複数の割り込みコントローラであって、当該割り込みコントローラの処理によって、当該周辺デバイスの1つによって生成された割り込みが当該複数のプロセッサのうちの特定のプロセッサに渡される、割り込みコントローラと
を有する、割り込み管理システム。
An interrupt management system, wherein the system comprises:
-A plurality of peripheral devices adapted to generate interrupts;
-A plurality of processors coupled within one integrated circuit and coupled to the plurality of peripheral devices so that each processor can communicate with all peripheral devices;
Interconnected interrupt controllers coupled between the processors and the peripheral devices, the interrupts being generated by one of the peripheral devices by processing of the interrupt controllers; And an interrupt controller, which is passed to a specific processor among the plurality of processors.
当該周辺デバイスのうちの当該1つによって生成された割り込みが、すべての割り込みコントローラに送られる、請求項1の割り込み管理システム。The interrupt management system of claim 1, wherein an interrupt generated by the one of the peripheral devices is sent to all interrupt controllers. 前記プロセッサの数と前記割り込みコントローラの数とが等しい、請求項1の割り込み管理システム。2. The interrupt management system according to claim 1, wherein the number of said processors is equal to the number of said interrupt controllers. 各割り込みコントローラが、1基のプロセッサと対にされている、請求項3の割り込み管理システム。4. The interrupt management system of claim 3, wherein each interrupt controller is paired with one processor. プロセッサと対にされている割り込みコントローラが、周辺デバイスによって生成されたどの割り込みを当該プロセッサに渡すかを判断するように適合化されている、請求項4の割り込み管理システム。5. The interrupt management system of claim 4, wherein the interrupt controller paired with the processor is adapted to determine which interrupt generated by the peripheral device to pass to the processor. 割り込みコントローラが、当該特定のプロセッサに渡す割り込みを生成した周辺デバイスを識別する情報を格納するように適合化されている、請求項1の割り込み管理システム。The interrupt management system of claim 1, wherein the interrupt controller is adapted to store information identifying a peripheral device that generated the interrupt to pass to the particular processor. 当該特定のプロセッサが、1回の読み取りアクセスにおいて当該周辺デバイスを識別する、請求項6の割り込み管理システム。7. The interrupt management system of claim 6, wherein the particular processor identifies the peripheral device in a single read access. 割り込みコントローラが、当該周辺デバイスの優先度順位を識別する情報を格納するように適合化されている、請求項1の割り込み管理システム。The interrupt management system of claim 1, wherein the interrupt controller is adapted to store information identifying a priority of the peripheral device. 当該割り込みコントローラが、当該複数のプロセッサのうちの1基のプロセッサによって生成された割り込みを、当該複数のプロセッサの別のプロセッサに渡す、請求項1の割り込み管理システム。The interrupt management system according to claim 1, wherein the interrupt controller passes an interrupt generated by one of the plurality of processors to another of the plurality of processors. 割り込み管理システムであって、当該システムが、
− プロセッサと複数の周辺デバイスの間に結合された割り込みコントローラであって、当該割り込みコントローラが、
− 当該周辺デバイスによって生成されたどの割り込みを当該プロセッサに渡すかを識別するための情報を有する第一レジスタと、
− 当該プロセッサに渡す割り込みに関連付けられている特定の周辺デバイスを識別する情報を有する第二レジスタであって、当該プロセッサが、1回の読み取りアクセスにおいて当該特定の周辺デバイスを識別する、第二レジスタと、
を有する、割り込みコントローラ
を有する割り込み管理システム。
An interrupt management system, wherein the system comprises:
An interrupt controller coupled between the processor and the plurality of peripheral devices, the interrupt controller comprising:
-A first register having information for identifying which interrupt generated by the peripheral device is to be passed to the processor;
A second register having information identifying a particular peripheral device associated with the interrupt to be passed to the processor, wherein the processor identifies the particular peripheral device in a single read access; When,
An interrupt management system having an interrupt controller.
当該複数の周辺デバイスに結合された相互接続された複数の割り込みコントローラを有する請求項10の割り込み管理システムにおいて、当該周辺デバイスによって生成される割り込みが、すべての割り込みコントローラに送られる、割り込み管理システム。11. The interrupt management system of claim 10, comprising a plurality of interconnected interrupt controllers coupled to the plurality of peripheral devices, wherein an interrupt generated by the peripheral device is sent to all interrupt controllers. 1つの集積回路内の複数のプロセッサを有する請求項11の割り込み管理システムであって、当該複数のプロセッサが、当該複数の割り込みコントローラに結合され、当該複数の割り込みコントローラが、各プロセッサがすべての周辺デバイスと通信できるように、当該複数の周辺デバイスに結合されている、割り込み管理システム。12. The interrupt management system of claim 11, comprising a plurality of processors in a single integrated circuit, wherein the plurality of processors are coupled to the plurality of interrupt controllers, and wherein the plurality of interrupt controllers are configured such that each processor has all peripherals. An interrupt management system coupled to the plurality of peripheral devices so as to communicate with the device. 当該割り込みコントローラが、当該複数のプロセッサのうちの1つによって生成された割り込みを、当該複数のプロセッサのうちの別のプロセッサに渡す、請求項12の割り込み管理システム。13. The interrupt management system of claim 12, wherein the interrupt controller passes an interrupt generated by one of the plurality of processors to another of the plurality of processors. 前記プロセッサの数と前記割り込みコントローラの数とが等しい、請求項12の割り込み管理システム。13. The interrupt management system according to claim 12, wherein the number of said processors is equal to the number of said interrupt controllers. 各割り込みコントローラが、1基のプロセッサと対にされている、請求項14の割り込み管理システム。15. The interrupt management system of claim 14, wherein each interrupt controller is paired with one processor. 当該第一レジスタが、当該周辺デバイスの優先度順位を識別する情報を有する、請求項10の割り込み管理システム。The interrupt management system of claim 10, wherein the first register has information identifying a priority order of the peripheral device. 割り込みを管理するための方法であって、当該方法が、
a)複数の周辺デバイスのうちの1つによって生成された割り込みを、複数のプロセッサに結合されている複数の割り込みコントローラにおいて受信するステップであって、当該割り込みコントローラが複数のプロセッサに結合されている、ステップと、
b)当該割り込みを1基のプロセッサに渡すステップと、
を有する、方法。
A method for managing interrupts, the method comprising:
a) receiving an interrupt generated by one of the plurality of peripheral devices at a plurality of interrupt controllers coupled to the plurality of processors, the interrupt controller being coupled to the plurality of processors; , Steps and
b) passing the interrupt to one processor;
A method comprising:
前記プロセッサの数と前記割り込みコントローラの数とが等しい、請求項17に記載の方法。18. The method of claim 17, wherein the number of processors and the number of interrupt controllers are equal. 各割り込みコントローラが、1基のプロセッサと対にされている、請求項18に記載の方法。19. The method of claim 18, wherein each interrupt controller is paired with one processor. 当該ステップb)が、
− 各割り込みコントローラにおいて情報を受信するステップであって、当該情報が、割り込みコントローラに固有であり、かつ当該割り込みコントローラと対にされているプロセッサにどの割り込みを渡すかを識別するのに十分である、ステップ
を有する、請求項19に記載の方法。
Step b) is
Receiving information at each interrupt controller, the information being specific to the interrupt controller and being sufficient to identify which interrupt to pass to the processor paired with the interrupt controller; 20. The method of claim 19, comprising the steps of:
当該情報が、当該周辺デバイスの優先度順位である、請求項20に記載の方法。21. The method of claim 20, wherein the information is a priority order of the peripheral device. 請求項17に記載の方法であって、当該方法が、
− 割り込みを生成した周辺デバイスを識別する情報を格納するステップであって、当該1基のプロセッサが、1回の読み取りアクセスにおいて当該周辺デバイスを識別する、ステップ、
を有する、方法。
18. The method of claim 17, wherein the method comprises:
Storing information identifying the peripheral device that generated the interrupt, wherein the one processor identifies the peripheral device in a single read access;
A method comprising:
請求項17に記載の方法であって、当該方法が、
− 当該複数のプロセッサのうちの1基によって生成された割り込みを、当該複数のプロセッサのうちの別のプロセッサに渡すステップ
を有する、方法。
18. The method of claim 17, wherein the method comprises:
-Passing the interrupt generated by one of said plurality of processors to another of said plurality of processors.
JP2003517765A 2001-07-30 2002-07-02 Efficient interrupt system for system-on-chip design Withdrawn JP2004537809A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US91860301A 2001-07-30 2001-07-30
PCT/IB2002/002801 WO2003012658A1 (en) 2001-07-30 2002-07-02 Efficient interrupt system for system on chip design

Publications (1)

Publication Number Publication Date
JP2004537809A true JP2004537809A (en) 2004-12-16

Family

ID=25440649

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003517765A Withdrawn JP2004537809A (en) 2001-07-30 2002-07-02 Efficient interrupt system for system-on-chip design

Country Status (4)

Country Link
EP (1) EP1415233A1 (en)
JP (1) JP2004537809A (en)
CN (1) CN1535427A (en)
WO (1) WO2003012658A1 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1333344C (en) * 2005-08-18 2007-08-22 上海交通大学 Method for reducing software load of system-on-chip (SoC)
KR20110097447A (en) * 2010-02-25 2011-08-31 삼성전자주식회사 System on chip having interrupt proxy and processing method thereof
CN101980149B (en) * 2010-10-15 2013-09-18 无锡中星微电子有限公司 Main processor and coprocessor communication system and communication method
CN103019835A (en) * 2011-09-26 2013-04-03 同方股份有限公司 System and method for optimizing interruption resources in multi-core processor
CN102945214B (en) * 2012-10-19 2016-02-10 北京忆恒创源科技有限公司 Based on the method for IO distribution optimization time delay interrupt processing task
WO2014125324A1 (en) * 2013-02-12 2014-08-21 Freescale Semiconductor, Inc. A method of and circuitry for controlling access by a master to a peripheral, a method of configuring such circuitry, and associated computer program products
CN104503836B (en) * 2015-01-08 2018-01-30 辽宁科技大学 Polycaryon processor process scheduling system and polycaryon processor process scheduling method
CN106020961A (en) * 2016-05-30 2016-10-12 天津国芯科技有限公司 Cross triggering device capable of improving system efficiency
CN112363972B (en) * 2020-10-20 2022-09-23 青岛信芯微电子科技股份有限公司 Electronic device and method for supporting communication among multiple CPUs

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5590380A (en) * 1992-04-22 1996-12-31 Kabushiki Kaisha Toshiba Multiprocessor system with processor arbitration and priority level setting by the selected processor

Also Published As

Publication number Publication date
WO2003012658A1 (en) 2003-02-13
EP1415233A1 (en) 2004-05-06
CN1535427A (en) 2004-10-06

Similar Documents

Publication Publication Date Title
JP3570810B2 (en) Symmetric multiprocessing system
US6711643B2 (en) Method and apparatus for interrupt redirection for arm processors
EP1442378B1 (en) Switch/network adapter port for clustered computers employing a chain of multiadaptive processors in a dual in-line memory module format
KR100420706B1 (en) Method and system for I / O control in multiprocessor system using simultaneous access of variable width bus
JP5237351B2 (en) Switch matrix system with multiple bus arbitrations per cycle via higher frequency arbiters
JP4562107B2 (en) Direct memory access engine to support multiple virtual direct memory access channels
US20010042147A1 (en) System-resource router
WO1996000940A1 (en) Pci to isa interrupt protocol converter and selection mechanism
JP5578713B2 (en) Information processing device
US5752043A (en) Interrupt control system provided in a computer
JP4564065B2 (en) Scalable, high-performance, large-scale interconnection scheme for multi-threaded, multi-processing system-on-chip network processor units
US7765250B2 (en) Data processor with internal memory structure for processing stream data
JP2004537809A (en) Efficient interrupt system for system-on-chip design
US7689758B2 (en) Dual bus matrix architecture for micro-controllers
TW594489B (en) Apparatus and method for monitoring computer system resources
TW380226B (en) Using intelligent bridges with pico-code to improve interrupt response
US10210114B2 (en) Interrupt-driven I/O arbiter for a microcomputer system
US5666556A (en) Method and apparatus for redirecting register access requests wherein the register set is separate from a central processing unit
US20070106826A1 (en) Method and computer system using PCI-Express
US8380908B2 (en) Emulation of an input/output advanced programmable interrupt controller
US7660939B2 (en) Operating system arrangement for flexible computer system design
US11886737B2 (en) Devices and systems for in-memory processing determined
US20230133088A1 (en) Methods and apparatus for system-on-a-chip neural network processing applications
WO2009004628A2 (en) Multi-core cpu
CN114970844A (en) Universal neural network tensor processor

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050906