(57)【要約】【課題】本発明は、システムオンチップ設計において割り込み要求（「割り込み」）を管理するための方法およびシステムであって、より単純かつより効率的なマルチバス設計に対応でき、かつ割り込みを処理するためにプロセッサ間で通信でき、かつプロセッサへの割り込みの割り当てに関して柔軟性があり、かつ集積回路の設計を容易にする、割り込み管理システムおよび方法を提供すること。【解決手段】複数の周辺デバイス（１２０ａ， １２０ｂ， ．．．， １２０ｍ）に結合された複数のプロセッサ（１００ａ， １００ｂ， ．．．， １００ｎ）を含むシステムオンチップ設計における割り込みを管理するための方法（４００）およびシステム（１０）。相互接続された複数の割り込みコントローラ（１１０ａ， １１０ｂ， ．．．， １１０ｎ）が、プロセッサと周辺デバイスの間に結合される。周辺デバイスによって生成される割り込みは、すべての割り込みコントローラによって受信される。一実施例においては、割り込みコントローラは、プロセッサと対にされる。各割り込みコントローラは、どの割り込みを自身のプロセッサに渡すかを識別できる。割り込みコントローラは、各割り込みを特定のプロセッサに渡すために協力して動作する。【選択図】図１
2004537809.tif 000002
【特許請求の範囲】
【請求項１】
割り込み管理システムであって、当該システムが、
− 割り込みを生成するように適合化されている複数の周辺デバイスと、
− 各プロセッサがすべての周辺デバイスと通信できるように、１つの集積回路内に結合されかつ当該複数の周辺デバイスに結合された複数のプロセッサと、
− 当該複数のプロセッサと当該複数の周辺デバイスとの間に結合されている、相互接続された複数の割り込みコントローラであって、当該割り込みコントローラの処理によって、当該周辺デバイスの１つによって生成された割り込みが当該複数のプロセッサのうちの特定のプロセッサに渡される、割り込みコントローラと
を有する、割り込み管理システム。
【請求項２】
当該周辺デバイスのうちの当該１つによって生成された割り込みが、すべての割り込みコントローラに送られる、請求項１の割り込み管理システム。
【請求項３】
前記プロセッサの数と前記割り込みコントローラの数とが等しい、請求項１の割り込み管理システム。
【請求項４】
各割り込みコントローラが、１基のプロセッサと対にされている、請求項３の割り込み管理システム。
【請求項５】
プロセッサと対にされている割り込みコントローラが、周辺デバイスによって生成されたどの割り込みを当該プロセッサに渡すかを判断するように適合化されている、請求項４の割り込み管理システム。
【請求項６】
割り込みコントローラが、当該特定のプロセッサに渡す割り込みを生成した周辺デバイスを識別する情報を格納するように適合化されている、請求項１の割り込み管理システム。
【請求項７】
当該特定のプロセッサが、１回の読み取りアクセスにおいて当該周辺デバイスを識別する、請求項６の割り込み管理システム。
【請求項８】
割り込みコントローラが、当該周辺デバイスの優先度順位を識別する情報を格納するように適合化されている、請求項１の割り込み管理システム。
【請求項９】
当該割り込みコントローラが、当該複数のプロセッサのうちの１基のプロセッサによって生成された割り込みを、当該複数のプロセッサの別のプロセッサに渡す、請求項１の割り込み管理システム。
【請求項１０】
割り込み管理システムであって、当該システムが、
− プロセッサと複数の周辺デバイスの間に結合された割り込みコントローラであって、当該割り込みコントローラが、
− 当該周辺デバイスによって生成されたどの割り込みを当該プロセッサに渡すかを識別するための情報を有する第一レジスタと、
− 当該プロセッサに渡す割り込みに関連付けられている特定の周辺デバイスを識別する情報を有する第二レジスタであって、当該プロセッサが、１回の読み取りアクセスにおいて当該特定の周辺デバイスを識別する、第二レジスタと、
を有する、割り込みコントローラ
を有する割り込み管理システム。
【請求項１１】
当該複数の周辺デバイスに結合された相互接続された複数の割り込みコントローラを有する請求項１０の割り込み管理システムにおいて、当該周辺デバイスによって生成される割り込みが、すべての割り込みコントローラに送られる、割り込み管理システム。
【請求項１２】
１つの集積回路内の複数のプロセッサを有する請求項１１の割り込み管理システムであって、当該複数のプロセッサが、当該複数の割り込みコントローラに結合され、当該複数の割り込みコントローラが、各プロセッサがすべての周辺デバイスと通信できるように、当該複数の周辺デバイスに結合されている、割り込み管理システム。
【請求項１３】
当該割り込みコントローラが、当該複数のプロセッサのうちの１つによって生成された割り込みを、当該複数のプロセッサのうちの別のプロセッサに渡す、請求項１２の割り込み管理システム。
【請求項１４】
前記プロセッサの数と前記割り込みコントローラの数とが等しい、請求項１２の割り込み管理システム。
【請求項１５】
各割り込みコントローラが、１基のプロセッサと対にされている、請求項１４の割り込み管理システム。
【請求項１６】
当該第一レジスタが、当該周辺デバイスの優先度順位を識別する情報を有する、請求項１０の割り込み管理システム。
【請求項１７】
割り込みを管理するための方法であって、当該方法が、
ａ）複数の周辺デバイスのうちの１つによって生成された割り込みを、複数のプロセッサに結合されている複数の割り込みコントローラにおいて受信するステップであって、当該割り込みコントローラが複数のプロセッサに結合されている、ステップと、
ｂ）当該割り込みを１基のプロセッサに渡すステップと、
を有する、方法。
【請求項１８】
前記プロセッサの数と前記割り込みコントローラの数とが等しい、請求項１７に記載の方法。
【請求項１９】
各割り込みコントローラが、１基のプロセッサと対にされている、請求項１８に記載の方法。
【請求項２０】
当該ステップｂ）が、
− 各割り込みコントローラにおいて情報を受信するステップであって、当該情報が、割り込みコントローラに固有であり、かつ当該割り込みコントローラと対にされているプロセッサにどの割り込みを渡すかを識別するのに十分である、ステップ
を有する、請求項１９に記載の方法。
【請求項２１】
当該情報が、当該周辺デバイスの優先度順位である、請求項２０に記載の方法。
【請求項２２】
請求項１７に記載の方法であって、当該方法が、
− 割り込みを生成した周辺デバイスを識別する情報を格納するステップであって、当該１基のプロセッサが、１回の読み取りアクセスにおいて当該周辺デバイスを識別する、ステップ、
を有する、方法。
【請求項２３】
請求項１７に記載の方法であって、当該方法が、
− 当該複数のプロセッサのうちの１基によって生成された割り込みを、当該複数のプロセッサのうちの別のプロセッサに渡すステップ
を有する、方法。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、全般的には、集積回路（「チップ」）の分野に関する。より具体的には、本発明は、複数のプロセッサと複数の周辺デバイスとを含むシステムオンチップ設計における割り込みの管理に関する。
【０００２】
【従来の技術】
「システムオンチップ」アーキテクチャ（例：マイクロコントローラ、マイクロプロセッサ）は、オーディオシステム、無線システム、携帯システム、データ通信システム、インターネット制御システム、産業／コンシューマー・システムなどの用途において一般的に使用されている。システムオンチップアーキテクチャでは、特定の用途におけるチップの生産とチップの組み込みの両方において、設計と製造の効率が向上する。
【０００３】
一部のシステムオンチップアーキテクチャでは、パフォーマンスを向上させるため、複数のＣＰＵ（中央処理装置）を利用する。また、システムオンチップアーキテクチャでは、代表的には階層的な配列に編成される複数のバスを利用できる。
【０００４】
システムオンチップアーキテクチャでは、チップが複雑になるほど問題が生じる。チップ上に複数のＣＰＵが存在し、複数の周辺デバイスがチップによってサポートされる場合に、周辺デバイスによって生成される割り込み要求の管理が複雑になることがある。例えば、周辺デバイスによって割り込み要求が同時に生成されることがある。割り込み要求は、個別に処理する必要があり、各要求はＣＰＵに送られる。割り込み要求を処理する各ＣＰＵは、割り込み要求の生成元であるデバイスを判断するために、周辺デバイスそれぞれに問い合わせる必要がある。ＣＰＵが複数の割り込み要求を同時に受信した場合には、割り込み要求の衝突を調停する必要がある。
【０００５】
複数プロセッサのアーキテクチャにおいて割り込み要求を管理するための先行技術の手法には、共通する欠点がある。先行技術の割り込み管理手法では、複雑かつ非効率的なマルチバス設計が必要とされることがある。さらに、先行技術の手法では、割り込み要求の処理に関してプロセッサが互いに通信できないことがある。また、先行技術の手法では、特定の割り込み要求がハードウェアの特定のＣＰＵに割り当てられることがあり、従って、先行技術の手法は相対的に固定的であり、柔軟性が低い。さらに、先行技術の手法では、集積回路の設計者に、タイミングとレイアウトに関する難しい制約が課されることがあり、従って、集積回路を設計、生産するために必要な時間が増大することがある。
【０００６】
従って、より単純かつより効率的なマルチバス設計に対応できる割り込み管理システムおよび／または方法が、必要とされている。また、この要件を満たすことができ、かつ割り込み要求を処理するためにプロセッサ間で通信できる割り込み管理システムおよび／または方法も、必要とされている。さらに、この要件を満たすことができ、かつＣＰＵへの割り込み要求の割り当てに関して柔軟性のある割り込み管理システムおよび／または方法も、必要とされている。さらに、この要件を満たすことができ、かつタイミングとレイアウトに関する不必要に重い制約を設計者に課さないことによって集積回路の設計を容易にすることのできる割り込み管理システムおよび／または方法も、必要とされている。本発明は、これらの必要性に対する新規の解決法を提供する。
【０００７】
【課題を解決するための手段】
本発明は、複数の周辺デバイスに結合された複数のＣＰＵ（例：プロセッサ）を含むシステムオンチップ設計において割り込み要求（「割り込み」）を管理するための方法およびシステムに関する。本発明は、より単純かつより効率的なマルチバス設計に対応できる割り込み管理システムおよび／または方法を提供する。また、本発明は、割り込みを処理するためにプロセッサ間で通信できる割り込み管理システムおよび方法を提供する。さらに、本発明は、プロセッサへの割り込みの割り当てに関して柔軟性のある割り込み管理システムおよび方法を提供する。さらに、本発明は、タイミングとレイアウトに関する不必要に重い制約を設計者に課さないことによって集積回路の設計を容易にすることのできる割り込み管理システムおよび方法を提供する。
【０００８】
本発明によると、複数の周辺デバイスをサポートする複数プロセッサのアーキテクチャにおいて、相互接続された複数の割り込みコントローラが、プロセッサと周辺デバイスの間に結合される。割り込みコントローラは、割り込みを特定のプロセッサに渡すために協力して動作する。また、割り込みコントローラは、必要な場合にプロセッサ間通信にも使用できる。すなわち、１基のプロセッサによって生成された割り込みを、割り込みコントローラを介して別のプロセッサに伝えることができる。
【０００９】
一実施例においては、割り込みコントローラの数とプロセッサの数が等しく、各割り込みコントローラは、１基のプロセッサと対にされている（逆も同様）。このような実施例においては、各割り込みコントローラは、周辺デバイスそれぞれの優先度順位を含む割り込み優先度レジスタ（または同様のメモリ装置）を含む。この情報は、割り込みコントローラそれぞれに固有であり、割り込みコントローラは、この情報を使用することで、自身と対のプロセッサに割り込みを渡すか否かを判断できる。また、割り込みコントローラは、この情報を使用することで、２つ以上の割り込みが同時に割り込みコントローラで受信されるときに割り込み間で調停できる。
【００１０】
周辺デバイスによって生成される各割り込みは、すべての割り込みコントローラによって受信される。各割り込みコントローラは、前の段落に説明されている情報を使用して、自身の対のプロセッサに割り込みを渡すか否かを識別する。このように、割り込みコントローラは、割り込みを特定のプロセッサに渡すために協力して動作する。
【００１１】
一実施例においては、各割り込みコントローラには、割り込み優先度リミタレジスタ（ｌｉｍｉｔｅｒ ｒｅｇｉｓｔｅｒ）（または同様のメモリ装置）が含まれ、このレジスタは、現在処理中の割り込みの優先度の値に設定される。別の実施例においては、各割り込みコントローラには、割り込みソースレジスタ（または同様のメモリ装置）が含まれ、このレジスタは、優先度が最高であり、かつ優先度が割り込み優先度リミタレジスタの中の値よりも大きい未処理の割り込みを識別する。すなわち、割り込みソースレジスタは、次に処理すべき割り込みを識別する。この割り込みを処理するとき、プロセッサは、このレジスタへの読み取りアクセスを１回行うことで、その割り込みを生成した周辺デバイスを識別する。
【００１２】
割り込みを管理するための本発明の方法およびシステムは、スケーラブルである。周辺デバイスを加えることは簡単であり、割り込みコントローラのレジスタ転送言語（ＲＴＬ： Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌａｎｇｕａｇｅ）の記述を変更することによって制御できる。また、本発明は、任意の数のプロセッサを含めるように拡張することもできる。さらに、任意の数のオンチップバスを使用できる。
【００１３】
割り込みコントローラは、割り込みを任意のプロセッサにマッピングするようにソフトウェアにおいてプログラムできる。本発明によると、入れ子構造の割り込み（例えば割り込みが同時またはほぼ同時に発生する）が容易に処理される。例えば、プロセッサは割り込みの生成元である周辺デバイスを識別するのに１回の読み取りアクセスを実行するのみでよいため、割り込み処理の効率が向上する。
【００１４】
さらに、割り込みは非同期に処理でき、このため集積回路のタイミングまたはレイアウトを確立するうえで割り込みの処理が決定的に重要ではなくなるため、集積回路の設計と実装が容易になる。
【００１５】
本発明の上記およびその他の目的と利点は、複数の図面に図解されている望ましい実施例についての以下の詳細な説明を読むことにより、当業者に明確になるであろう。
【００１６】
添付の図面（この明細書に組み込まれ、かつこの明細書の一部を形成する）は、本発明の実施例を図解し、説明文と合わせて本発明の原理について説明するのに役立つ。
【００１７】
【発明を実施するための形態】
本発明の望ましい実施例について、以下に詳細に説明する。これらの実施例は、添付の図面に図解されている。本発明は、望ましい実施例を参照しながら説明されているが、これらの実施例は、本発明をこれらに制限するものではないことが理解されるであろう。そうではなく、本発明は、代替手段、変更、および等価物も含むものとし、これらは、添付される請求項によって定義される本発明の精神と範囲の中に含まれる。さらに、本発明の以下の詳細な説明においては、本発明を完全に理解するために多数の固有の詳細が示されている。しかしながら、当業者には、本発明がこれらの固有な詳細を採用せずに実施できることは、明らかであろう。周知の方法、手順、構成要素、回路については、本発明の観点が不必要にあいまいになることを避けるため、詳細には説明されていない。
【００１８】
以下の詳細な説明の一部は、データビットに対する操作の手順、論理ブロック、処理、その他の記号表現を使用して示されている。これらの説明と表現は、データ処理の分野の当業者が、自身の仕事の内容を同じ分野の別の当業者に最も効果的に伝えるために使用される手段である。本出願においては、手順、論理ブロック、プロセス、または同種のものは、必要な結果につながるステップまたは命令の内部矛盾のないシーケンスであるものと理解される。この場合のステップとは、物理量の物理的な操作を必要とするステップである。通常（そうでない場合もあるが）、これらの数量は、コンピュータシステムにおいて格納、転送、結合、比較、その他の操作を行うことのできる電気信号または磁気信号の形式をとる。場合によっては、これらの信号をトランザクション、ビット、値、要素、記号、文字、フラグメント、ピクセルなどと呼ぶことは便利であることが判明し、なぜならこれらは一般的に使用されているためである。
【００１９】
しかしながら、留意すべき点として、これらの用語すべておよび類似する用語は、適切な物理量に関連し、これらの数量に貼り付けられる便宜上のラベルにすぎない。以下の説明において特に明記されない限りは、本発明全体を通じて、「生成する」、「通信する」、「渡す」、「受信する」、「送る」、「格納する」、「識別する」、または同様の用語を使用する説明は、コンピュータシステムまたは同様の電子計算装置の動作とプロセス（例：図４のプロセス４００）について言及する。コンピュータシステムまたは同様の電子計算装置は、物理的（電子的）な量としてコンピュータシステムのメモリ、レジスタ、またはそのような他の情報記憶装置、伝送またはディスプレイデバイスの中で表されるデータを操作および変形する。
【００２０】
図１は、本発明の一実施例による割り込み管理システム１０の概要を示すブロック線図である。この実施例においては、割り込み管理システム１０は、多数のプロセッサ（ＣＰＵ）１００ａ−ｎと、多数の割り込みコントローラ１１０ａ−ｎと、多数の周辺デバイス１２０ａ−ｍとを含む。本発明のこの実施例によると、周辺デバイス１２０ａ−ｍの１つが割り込み要求（「割り込み」）を生成すると、割り込みコントローラ１１０ａ−ｎは、ＣＰＵ １００ａ−ｎのうちの１基のＣＰＵにこの割り込みを送るように協力して動作する。さらに詳しい説明は後から行う。後から明らかになるように、本発明の割り込み管理システム１０は、スケーラブルであり、任意の数のプロセッサと、割り込みコントローラと、周辺デバイスとに対応できる。
【００２１】
割り込みコントローラ１１０ａ−ｎは、相互接続され、互いに通信できる（図３も参照）。一般に、ＣＰＵ １００ａ−ｎと割り込みコントローラ１１０ａ−ｎは、集積回路内に属す（例えばこれらはシステムオンチップアーキテクチャの代表的な要素である）。しかしながら、ＣＰＵ １００ａ−ｎの一部と、割り込みコントローラ１１０ａ−ｎの一部が、集積回路外に属していてもよいことが理解されるであろう。同様に、周辺デバイス１２０ａ−ｍの一部またはすべては、集積回路内に属す。
【００２２】
図１を参照して、一実施例においては、割り込みコントローラの数とプロセッサの数が等しく、かつ、少なくとも割り込みに関しては、ＣＰＵとの通信は割り込みコントローラを通じて行われる。この実施例においては、各割り込みコントローラ１１０ａ−ｎは、１基のＣＰＵ １００ａ−ｎと対にされ、この逆も同様である。すなわち、ＣＰＵ １００ａは割り込みコントローラ１１０ａと対にされ、ＣＰＵ １００ｂは割り込みコントローラ１１０ｂと対にされ、他も同様である。この実施例においては、少なくとも割り込みに関し、割り込みコントローラ１１０ａ−ｎは、それぞれの対のＣＰＵ １００ａ−ｎとは直接的に通信し、別のＣＰＵとは、そのＣＰＵと対の割り込みコントローラを介して通信する。すなわち、例えば、割り込みコントローラ１１０ａはＣＰＵ １００ａと直接的に通信し、ＣＰＵ １００ｂ−ｎとは別の割り込みコントローラ１１０ｂ−ｎを通じて通信する。留意すべき点として、この実施例においては、割り込みコントローラ１１０ａ−ｎは、データをＣＰＵ １００ａ−ｎに渡すための通路でなく、ＣＰＵ １００ａ−ｎへの割り込みの流れと分配を制御することを主な目的とする。
【００２３】
一実施例においては、各ＣＰＵ １００ａ−ｎは、オンチップバス１３０を介して周辺デバイス１２０ａ−ｍのそれぞれと通信できる。一実施例においては、ＣＰＵ １００ａ−ｎは、レジスタアクセスバス１３５と結合され（図２参照）、これによりＣＰＵは、割り込みコントローラレジスタからの読み取りとレジスタへの書き込みを行うことができる。一実施例においては、周辺デバイス１２０ａ−ｍのいずれかによって生成された割り込みは、すべての割り込みコントローラ１１０ａ−ｎに送られる。しかしながら、代替の実施例においては、割り込みをすべての割り込みコントローラに送る代わりに、割り込みコントローラ１１０ａ−ｎのサブセットに選択的に送ることができる。
【００２４】
各割り込みコントローラ１１０ａ−ｎは、それぞれの（対の）ＣＰＵに渡すべき割り込みと渡さない割り込みを認識するようにプログラムされる。割り込みコントローラ１１０ａ−ｎは、各周辺デバイス１２０ａ−ｍが処理対象となるようにプログラムされる。このプログラミングによると、各割り込みコントローラ１１０ａ−ｎは、自身が受信する割り込みを対のＣＰＵに渡すべきか否かを判断する。例えば、割り込みコントローラ１１０ａは、割り込みをＣＰＵ １００ａに渡すか否かを判断し、渡す場合には、この割り込みはＣＰＵ １００ａに渡され、そうでない場合には渡されない。すべての周辺デバイス１２０ａ−ｍが処理対象となるため、周辺デバイスの任意の１つによって生成される割り込みが、割り込みコントローラ１１０ａ−ｎの１つ、従ってＣＰＵ １００ａ−ｎの１つによって処理される。次に、図２を参照して補足的な説明を行う。
【００２５】
図２は、本発明による割り込みコントローラ１１０ａの一実施例のブロック線図である。この実施例においては、割り込みコントローラ１１０ａは、割り込みソースレジスタ２１０と、割り込み優先度レジスタ２２０と、比較論理ブロック２２５と、割り込み優先度リミタ２３０と、ＡＮＤゲート２４０と、ＯＲゲート２５０とを有するハードウェア要素である。割り込みコントローラ１１０ａの機能はこれらの様々な要素に照らして説明されるため、割り込みコントローラ１１０ａは説明されている実施例に限定されず、意図する機能を達成するために割り込みコントローラ１１０ａを別の方法で構成できることが、理解されるであろう。
【００２６】
この実施例においては、割り込み優先度レジスタ２２０は、動的かつ構成可能なレジスタであり、周辺デバイス１２０ａ−ｍ（図１）のそれぞれに割り当てられている優先度が含まれる。従って、この実施例においては、周辺デバイス１２０ａ−ｍのすべての優先度順位を使用して各割り込みコントローラ１１０ａ−ｎ（図１）をプログラムできる。割り込み優先度レジスタ２２０の中の情報は、割り込みコントローラ１１０ａ−ｎに固有である。すなわち、周辺デバイス１２０ａ−ｍの優先度順位は、割り込みコントローラ１１０ａ−ｎそれぞれで異なる。
【００２７】
本発明によると、優先度順位は、プロセッサ１００ａ−ｎ（図１）の１つによって実行されるソフトウェアによって、各割り込みコントローラ１１０ａ−ｎに供給される。言い換えれば、各割り込みコントローラ１１０ａは、周辺デバイス１２０ａ−ｍの一意の優先度順位を使用してプログラムされる。特定の割り込みコントローラ１１０ａ−ｎによって使用される優先度順位と、周辺デバイス１２０ａ−ｍそれぞれに割り当てられる優先度順位は、動的に変更できる。この結果として、周辺デバイス１２０ａ−ｍを任意のＣＰＵ １００ａ−ｎに割り当てる（マッピングする）ことができ、このマッピングを変更することで、１つの割り込みコントローラ（およびＣＰＵ）に割り当てられている周辺デバイスを別のＣＰＵに割り当てることができる。さらに、周辺デバイスが追加または除去されるときには、本発明の割り込み管理システムおよび方法は容易にアップデートでき、従って、本発明の割り込み管理システムおよび方法は、任意の数の周辺デバイスに拡張可能（スケーラブル）である。周辺デバイスからＣＰＵへのマッピングがソフトウェアにおいて提供され、従って容易に変更または拡張できるため、本発明は、割り込みを管理するための柔軟かつスケーラブルなシステムおよび方法を提供する。
【００２８】
図２を参照して、いくつかの周辺デバイスは、その周辺デバイスの割り込みが割り込みコントローラ１１０ａによってＣＰＵ １００ａに渡されないことを示す優先度順位が割り込み優先度レジスタ２２０の中に保持される。例えば、優先度レジスタ２２０の中に保持されるこれらの周辺デバイスの優先度順位が、これらの周辺デバイスの優先度順位を無効にできることを定義する０、あるいは１つまたは複数のビットであることがある。このように、割り込み優先度レジスタ２２０の中の優先度順位は、どの周辺デバイスが割り込みコントローラ１１０ａに、従ってＣＰＵ １００ａに割り当てられるかを定義するのに使用される。
【００２９】
それ以外の周辺デバイスは、それらの割り込みが割り込みコントローラ１１０ａによってＣＰＵ １００ａに渡されることを示す優先度順位が、割り込み優先度レジスタ２２０の中に保持される。このような周辺デバイスそれぞれに、異なる優先度を割り当てることで、いくつかの周辺デバイスからの割り込みが他の周辺デバイスからの割り込みより優先することを示すことができる。この結果として、割り込みコントローラ１１０ａが複数の割り込み２６０を同時またはほぼ同時に受信すると、割り込みコントローラ１１０ａは、最も優先度の高い割り込みを選択して処理するために、割り込み間で自動的に調停することができる。
【００３０】
この実施例においては、割り込み優先度リミタ２３０は、動的かつ構成可能なレジスタであり、割り込みコントローラ１１０ａによって現在処理されている割り込み２７０の優先度の値に、ソフトウェアによって設定される。この設定により、割り込み優先度リミタ２３０は、割り込みコントローラ１１０ａによって現在処理されている割り込み２７０に基づくしきい値を指定する。
【００３１】
一実施例においては、入れ子構造の割り込みは、次のように処理できる。次の割り込み２６０が割り込みコントローラ１１０ａによって受信されると、比較論理ブロック２２５が、次の（後の）割り込みの優先度順位を現在処理中の割り込み２７０の優先度順位と比較する。この実施例においては、比較ブロック２２５は、この比較に基づいて信号をＡＮＤゲート２４０に供給する。後の割り込みの優先度が、割り込み優先度リミタ２３０によって指定されるしきい値より高い場合には、イネーブル信号（例：アクティブな「１」）がＡＮＤゲート２４０に渡され、後の割り込みがＣＰＵ １００ａに渡され、割り込み優先度リミタ２３０が、新しいしきい値でソフトウェアによりアップデートされる。後の割り込みの優先度が、割り込み優先度リミタ２３０によって指定されるしきい値より低い場合には、後の割り込みはＣＰＵ １００ａに渡されない。このように、本発明によると、入れ子構造の割り込みが容易に処理される。従って、本発明のこの実施例においては、必ずしも最初に到着した割り込みではなく、優先度が最高の割り込みがＣＰＵ １００ａによって処理される。割り込みの優先度を調べて、その優先度をしきい値と比較するプロセスは、割り込みコントローラ１１０ａによって受信される各割り込み２６０ごとに１回行われる。
【００３２】
一実施例においては、ＯＲゲート２５０は、１つの割り込みのみをＣＰＵ １００ａに供給するように機能する。ＣＰＵの設計に応じて、複数の割り込み入力が可能である場合と、１つの割り込み入力のみが可能である場合とがある。従って、ＯＲゲート２５０により、割り込みコントローラ１１０ａは、いずれのタイプのＣＰＵ設計とも一緒に使用できる。
【００３３】
図２をさらに参照し、割り込みソースレジスタ２１０には、ＣＰＵ １００ａが次に処理するべき割り込みを生成した周辺デバイス１２０ａ−ｍ（図１）を識別する情報が含まれる。割り込みソースレジスタ２１０は、優先度が最高であり、かつ優先度が割り込み優先度リミタレジスタ２２０の中の値よりも大きい未処理の割り込みを識別する。従って、割り込みソースレジスタ２１０は、次に処理するべき割り込みを識別する。このため、ＣＰＵ １００ａは、割り込みソースレジスタ２１０を読み取って、次に処理すべき周辺デバイス１２０ａ−ｍを判断する。従って、ＣＰＵ １００ａは、この割り込みを生成した周辺デバイスを判断するのに、各周辺デバイス１２０ａ−ｍにアクセスする代わりに、割り込みソースレジスタ２１０に１回アクセスするのみでこの判断を行うことができ、これにより、割り込み処理プロセスの効率が向上する。ＣＰＵ １００ａは、その割り込みを生成した周辺デバイスにオンチップバス１３０（図１）を使用してアクセスできる。
【００３４】
割り込みを処理した後、ＣＰＵ １００ａは、周辺デバイスにおける割り込みをクリアする。この結果として、その割り込みが割り込みコントローラ１１０ａとＣＰＵ １００ａにおいてデアサートされる。
【００３５】
重要な点として、割り込みコントローラ１１０ａ−ｎは、一般に、割り込み入力と割り込み出力の間に組合せ論理のみを有する。これにより、割り込みコントローラ内のクロックなしに割り込みをそれぞれのＣＰＵ １００ａ−ｎに渡すことができる。本発明のこの実施例によると、割り込みは非同期に処理でき、従って集積回路のタイミングまたはレイアウトを確立するうえで割り込みの処理が決定的に重要ではなくなるため、このような回路の設計が容易になる。
【００３６】
図３は、図１の割り込み管理システム１０におけるブロック間の相互接続の詳細が追加されているブロック線図である。具体的には、図３は、割り込みコントローラ１１０ａ−ｎ、従ってＣＰＵ １００ａ−ｎが本発明の一実施例に従って互いに通信できるようにするバスを示す。ただし、バスの数やタイプが異なる他のバス構成も本発明に従って利用できることが理解されるであろう。
【００３７】
この実施例においては、オンチップバス１３０により、各ＣＰＵ １００ａ−ｎは周辺デバイス１２０ａ−ｍと通信できる。さらに、一実施例においては、ＣＰＵ １００ａ−ｎは、それぞれレジスタアクセスバス１３５に結合されている。レジスタアクセスバス１３５により、各ＣＰＵは図２の割り込みソースレジスタ２１０にアクセスできる。これにより、各ＣＰＵは、自身が次に処理すべき割り込みを生成した周辺デバイス１２０ａ−ｍを、１回の読み取りアクセスにおいて判断できる。
【００３８】
この実施例においては、割り込み要求バス３３０は、１つの割り込みコントローラから別の割り込みコントローラに、従って１つのＣＰＵから別のＣＰＵに割り込みを送信するための通信経路を提供する。従って、各ＣＰＵは、必要なときに別のＣＰＵの支援を要求できる。また、割り込み要求バス３３０は、周辺デバイス１２０ａ−ｍから割り込みコントローラ１１０ａ−ｎに割り込みを送信するための通信経路も提供する。割り込みクリアバス３２０は、割り込みが処理された（実行された）後にこれをクリアするためのバスである。
【００３９】
一般に、割り込みコントローラがＣＰＵから割り込み要求を受信すると、その割り込み要求は、周辺デバイスから受信された割り込み要求と同じ方式で処理される。すなわち、ＣＰＵからの割り込み要求に優先度が関連付けられ、割り込みコントローラは、割り込み要求をその優先度に従って処理する。優先度は、その割り込みを生成したＣＰＵに基づくか、または割り込みを生成するようにＣＰＵに要求する割り込みを生成した周辺デバイスに基づくようにできる。割り込み要求は、割り込みを処理できる割り込みコントローラ（およびそのＣＰＵ）が見つかるまで、１つの割り込みコントローラから次の割り込みコントローラに渡すことができる。プロセッサ間通信用のプロトコルについては、図５Ａと５Ｂを参照しながら後からさらに説明する。
【００４０】
図４は、本発明による割り込みを管理するためのプロセス４００の一実施例におけるステップのフローチャートである。一実施例においては、プロセス４００は、図１の割り込みコントローラ１１０ａ−ｎによって実行される。プロセス４００におけるステップは、この図に提示されている順序とは異なる順序で実行できることと、プロセス４００におけるステップすべてを必ずしも実行しなくてよいことが理解されるであろう。
【００４１】
図４のステップ４１０において、図１と図２も参照して、この実施例においては、各割り込みコントローラ１１０ａ−ｎは、各割り込みコントローラに関連付けられているＣＰＵ １００ａ−ｎに渡す割り込みを識別するための十分な情報を受信する。一実施例においては、各割り込みコントローラ１１０ａ−ｎは、周辺デバイス１２０ａ−ｍの優先度順位を使用してプログラムされる。優先度順位は、各割り込みコントローラ１１０ａ−ｎに一意であり、割り込みコントローラとＣＰＵの各対について、割り込みコントローラによって割り込みがＣＰＵに渡される周辺デバイスを識別するのに使用される。
【００４２】
一実施例においては、優先度順位は、各割り込みコントローラ２２０の割り込み優先度レジスタ２２０の中に格納される。割り込み優先度レジスタ２２０に格納されている優先度順位は、例えば、追加の周辺デバイスがＣＰＵ １００ａ−ｎに結合される場合、または周辺デバイス１２０ａ−ｍからＣＰＵ １００ａ−ｎへのマッピングを変更することが望ましい場合に、動的に変更できる。
【００４３】
図４のステップ４２０において、図１と２も参照して、この実施例においては、割り込み２６０が、割り込みコントローラ１１０ａ−ｎのすべてによって受信される。一実施例においては、周辺デバイス１２０ａ−ｍによって生成される割り込みは、障害が起こらないことが想定される。
【００４４】
図４のステップ４３０において、一実施例においては、割り込みコントローラ１１０ａ−ｎそれぞれ（図１）は、上記のステップ４１０においてプログラムされた優先度順位を使用して、割り込みをそれぞれの（対の）ＣＰＵに渡すべきか否かを判断する。割り込みがイネーブルにされていて（すなわち割り込みの優先度が０以外である）、かつ割り込みの優先度が図３の割り込み優先度リミタ２３０に指定されているしきい値よりも大きい場合には、割り込みコントローラは、対のＣＰＵに割り込みを渡す。
【００４５】
図４のステップ４４０において、この実施例においては、次にＣＰＵによって処理すべき割り込みを生成した周辺デバイスを識別する情報が、図３の割り込みソースレジスタ２１０に格納される。ＣＰＵ（具体的にはＣＰＵの割り込みハンドラ）は、割り込みソースレジスタ２１０を読み取ることができる。ＣＰＵは、割り込みソースレジスタに基づいて、割り込みを生成した周辺デバイスからの割り込みのステータスを読み取ることができる。ステータス情報は、割り込みを処理するための十分な情報をＣＰＵに提供する。割り込みを実行した後、ＣＰＵは、周辺デバイスにおける割り込みをクリアし、この結果として、割り込みコントローラとＣＰＵに割り込みがデアサートされる。
【００４６】
図４のステップ４５０においては、ＣＰＵがビジーであり別のＣＰＵからの支援を必要とする場合に、第一ＣＰＵによって割り込みを生成し、その割り込みを第二ＣＰＵに、それぞれの割り込みコントローラを介して渡すことができる。このことについて、図５Ａと５Ｂを参照しながら以下にさらに説明する。
【００４７】
図５Ａは、本発明の一実施例による、割り込みコントローラＰＩＣ１ （５０１）とＰＩＣ２ （５０２）を介してのプロセッサ間通信を示すデータフロー図である。説明を単純にするため、プロセッサ間通信は、２基のプロセッサの文脈において説明されている。しかしながら、プロセッサ間通信は任意の数のプロセッサに拡張できる。プロセッサ間通信をイネーブルにするために、複数の信号５１０が割り込みコントローラＰＩＣ１ （５０１）とＰＩＣ２ （５０２）の間で渡される。信号５１０には、割り込み要求信号（例：Ｉｎｔ＿ｒｅｑ［ｐ−０］とＩｎｔ＿ｒｅｑ［ｒ−０］）と割り込みクリア信号（例：Ｉｎｔ＿ｃｌｒ［ｐ−０］とＩｎｔ＿ｃｌｒ［ｒ−０］）が含まれる。割り込みコントローラを介してのプロセッサ間通信は、非同期に実行される。
【００４８】
図５Ｂは、図５Ａに図解されている場合など、プロセッサ間通信（ＩＰＣ）のタイミング図である。図５Ａと図５Ｂの両方を参照して、ＣＰＵ１ （５０５）は、プロセッサ間通信の要求を開始するため、割り込みコントローラＰＩＣ１ （５０１）に書き込みを行ってＩｎｔ＿ｒｅｑ１ （５１０ａ）を設定する。これにより、割り込みコントローラＰＩＣ２ （５０２）がＩｎｔ＿ｔｏ＿ｃｐｕ２ （５０４）をアサートする（割り込みの優先度が図２の割り込み優先度リミタ２３０内のしきい値よりも高い場合）。ＰＩＣ２ （５０２）は、プロセッサ間通信の割り込みを、周辺デバイス１２０ａ−ｍ（図１）によって生成される割り込みと同じ方法で処理する。
【００４９】
図５Ａと５Ｂをさらに参照して、ＣＰＵ２ （５０６）は、ＰＩＣ２ （５０２）の割り込みソースレジスタ２１０（図２）を読み取り、割り込みハンドラを実行する。割り込みハンドラの実行が終了した後、割り込みは、ＣＰＵ２ （５０６）がＰＩＣ２ （５０２）に書き込みを行うことによってクリアされる。この書き込み後、Ｉｎｔ＿ｃｌｒ１ （５１０ｂ）がアサートされ、Ｉｎｔ＿ｔｏ＿ｃｐｕ２ （５０４）がデアサートされ、かつＩｎｔ＿ｒｅｑ１ （５１０ａ）がデアサートされる。この時点で、ＰＩＣ１ （５０１）は、再びＩｎｔ＿ｒｅｑ１ （５１０ａ）を設定するための、ＣＰＵ１ （５０５）からの別の書き込みを受信できる状態になる。しかしながら、Ｉｎｔ＿ｃｌｒ１ （５１０ｂ）がアサートされている間は、Ｉｎｔ＿ｒｅｑ１ （５１０ａ）をアサートするための書き込みを完了できない。これは、前の割り込みのクリアを確実に完了させるために必要である。
【００５０】
本発明によるプロセッサ間通信は、多数の利点を提供する。第一に、このプロセッサ間通信は、安全かつ効率的である。割り込みをアサートするＣＰＵ（例：ＣＰＵ１ ５０５）は、それぞれの割り込みコントローラ（例：ＰＩＣ１ ５０１）に１回の書き込みを実行するのみでよい。割り込まれる側のＣＰＵ（例：ＣＰＵ２ ５０６）は、割り込みソースレジスタを読み取って割り込みの生成元を判断し、処理が完了するとその割り込みをクリアする。ＣＰＵ２ ５０６は、ＰＩＣ２ （５０２）への読み取りと書き込みによってこれを達成する。従って、本発明によると、マルチバスシステムを介しての待ち時間の長いアクセスが回避される。第二に、本発明によるプロセッサ間通信は、スケーラブルである。第三に、プロセッサ間通信は非同期であるため、集積回路のタイミングまたはレイアウトを確立するうえで決定的に重要ではなく、このような回路の設計が容易になる。
【００５１】
さらに、プロセッサ間通信の割り込みが、周辺デバイス１２０ａ−ｍ（図２）によって生成される割り込みと同じ方法で処理されるため、プロセッサ間通信をソフトウェアにおいて容易に処理でき、特に、周辺デバイス１２０ａ−ｍを管理するために使用されるソフトウェアによって処理できる。
【００５２】
要約すると、本発明は、より簡単かつより効率的なマルチバス設計に対応できる割り込み管理システムおよび方法を提供する。また、本発明は、プロセッサ間通信を行うことのできる割り込み管理システムおよび方法を提供する。さらに、本発明は、プロセッサ（例：ＣＰＵ）への割り込みの割当に関して柔軟な割り込み管理システムおよび方法を提供する。さらに、本発明は、タイミングとレイアウトの重い制約を設計者に課すことなく、より短期間で設計および生産を行うことのできる割り込み管理システムおよび方法を提供する。
【００５３】
以上が、本発明（システムオンチップ設計用の効率的な割り込みシステム）の望ましい実施例の説明である。本発明は特定の実施例において説明されているが、本発明はこのような実施例に制限されず、添付の請求項に従って解釈されるものとする。
【図面の簡単な説明】
【図１】本発明の一実施例による割り込み管理システムの概要を示すブロック線図である。
【図２】本発明による割り込みコントローラの一実施例のブロック線図である。
【図３】図１の割り込み管理システムにおけるブロック間の相互接続の詳細が追加されているブロック線図である。
【図４】本発明の一実施例による、割り込みを管理するためのプロセスにおけるステップのフローチャートである。
【図５Ａ】本発明の一実施例による、割り込みコントローラを介してのプロセッサ間通信を示すデータフロー図である。
【図５Ｂ】図５Ａに図解されているものなど、プロセッサ間通信のタイミング図である。
【符号の説明】
１０  割り込み管理システム
１００ａ−ｎ  プロセッサ
１１０ａ−ｎ  割り込みコントローラ
１２０ａ−ｍ  周辺デバイス
１３０、１３５  バス
２１０  割り込みソースレジスタ
２２０  割り込み優先度レジスタ
２２５  比較論理ブロック
２３０  割り込み優先度リミタ
２４０  ＡＮＤゲート
２５０  ＯＲゲート
２６０、２７０  割り込み
３２０  割り込みクリアバス
３３０  割り込み要求バス
４００  プロセス
４１０、４２０、４３０、４４０、４５０  ステップ
５１０  信号
【図１】
2004537809.tif 000003
【図２】
2004537809.tif 000004
【図３】
2004537809.tif 000005
【図４】
2004537809.tif 000006
【図５Ａ】
2004537809.tif 000007
【図５Ｂ】
2004537809.tif 000008
【国際公開パンフレット】
2004537809.tif 000009
2004537809.tif 000010
2004537809.tif 000011
2004537809.tif 000012
2004537809.tif 000013
2004537809.tif 000014
2004537809.tif 000015
2004537809.tif 000016
2004537809.tif 000017
2004537809.tif 000018
2004537809.tif 000019
2004537809.tif 000020
2004537809.tif 000021
2004537809.tif 000022
2004537809.tif 000023
2004537809.tif 000024
2004537809.tif 000025
2004537809.tif 000026
2004537809.tif 000027
2004537809.tif 000028
2004537809.tif 000029
2004537809.tif 000030
2004537809.tif 000031
2004537809.tif 000032
【国際調査報告】
2004537809.tif 000033
2004537809.tif 000034
2004537809.tif 000035