(57)【要約】    【課題】  割り込み要求に対する応答性を向上し、システム全体の性能を高めることが可能な割り込みコントローラ及びシステムＬＳＩを提供する。    【解決手段】  複数のデバイスと、入力ポートをそれぞれ有する複数のプロセッサとに接続され、前記複数のデバイスの少なくとも１つから割り込み要求を受けて、前記複数のプロセッサのいずれかの入力ポートに対し、該割り込み要求を通知する割り込みコントローラにおいて、前記複数のプロセッサのそれぞれの動作状態を保持するプロセッサ動作状態レジスタ５０１〜５０３と、上記割り込み要求を通知するプロセッサを該プロセッサ動作状態レジスタ５０１に保持された動作状態に応じて選択するプロセッサ選択回路６１０とを備える。【選択図】      図２
2005346673.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスと、入力ポートをそれぞれ有する複数のプロセッサとに接続され、前記複数のデバイスの少なくとも１つから割り込み要求を受けて、前記複数のプロセッサのいずれかの入力ポートに対し、該割り込み要求を通知する割り込みコントローラにおいて、
前記複数のプロセッサのそれぞれの動作状態を保持する保持手段と、
前記割り込み要求を通知するプロセッサを前記保持手段に保持された動作状態に応じて選択する選択手段とを備えることを特徴とする割り込みコントローラ。
【請求項２】
前記複数のプロセッサの動作状態のうちの１つが、前記複数のプロセッサの待機状態であることを特徴とする請求項１記載の割り込みコントローラ。
【請求項３】
入力ポートをそれぞれ有する複数のプロセッサと、
前記複数のプロセッサのそれぞれの動作状態を保持する保持手段と、外部デバイスからの割り込み要求を通知するプロセッサを前記保持手段に保持された動作状態に応じて選択する選択手段とを有する割り込みコントローラと
を備えることを特徴とするシステムＬＳＩ。
【請求項４】
前記複数のプロセッサの動作状態のうちの１つが、前記複数のプロセッサの待機状態であることを特徴とする請求項３記載のシステムＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つのシステムＬＳＩ内に複数のプロセッサを内蔵する場合の割り込みコントローラ及びそのシステムＬＳＩに関する。
【背景技術】
【０００２】
近年における半導体の集積度の向上は、１つのＬＳＩ（Large Scale Integrated Circuit：大規模集積回路）内にシステムの大半の回路を集積することが可能なシステムＬＳＩを実現した。さらに最近では製品開発期間の短縮へのさらなる要求とプロセッサ技術の進歩とにより、１つのシステムＬＳＩ内部に複数のプロセッサを内蔵し、従来、開発設計に時間のかかる専用ハードウェアで処理していた部分をソフトウェアによる処理に置き換えることにより、システムＬＳＩの設計期間を短縮するようになってきた（例えば特許文献１参照）。
【０００３】
図４は、そのような従来のシステムＬＳＩの全体構成を示す図である。
【０００４】
同図において、１００〜１０２はシステムＬＳＩに内蔵されるプロセッサである。
【０００５】
３００，３０１はＩ／Ｏインターフェイスであり、たとえばＵＡＲＴ（Universal Asynchronous Receiver Transmitter）やＵＳＢ（Universal Serial Bus）コントローラ、又はＰＣＩバスブリッジコントローラ等である。４００はそれぞれ特定のデータ処理専用に設計されたハードウェアエンジンであり、例えばＭＰＥＧコーデックやレンダリングエンジンである。２００はプロセッサ１００，１０２、Ｉ／Ｏインターフェース３００，３０１、ハードウェアエンジン４００を接続するシステムバスである。５００は割り込みコントローラであり、Ｉ／Ｏインターフェース３００，３０１からの割り込み要求３１０，３１１、ハードウェアエンジン４００からの割り込み要求４１０を入力し、予め決められた設定に従って、プロセッサ１００〜１０２に対しプロセッサ割り込み入力信号５１０，５１２のいずれかの信号をアサートすることにより、前記割り込み要求３１０，３１１，４１０をプロセッサ１００〜１０２に伝達する機能を持つ。尚、プロセッサ、Ｉ／Ｏインターフェイス及びハードウェアエンジンの各個数は、複数あればよく、図示されるものに限定されない。
【０００６】
例えば、割り込みコントローラ５００には、Ｉ／Ｏインターフェース３００，３０１からの割り込み要求は全てプロセッサ１００に伝達する、ハードウェアエンジン４００からの割り込み要求は全てプロセッサ１０１に伝達する、というように設計時又はシステム初期化時に静的に設定される。
【０００７】
尚、従来のシステムＬＳＩは、外部又は内部の記憶装置（メモリ）との間でデータ信号の通信をするメモリコントローラや割り込み要求を生じないその他のペリフェラルを有するが、本発明には直接関係しないため説明は省略する。
【特許文献１】特開平７−９３２５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のように、従来、システムＬＳＩ内部で生じるさまざまな割り込み要求については、そのそれぞれの割り込み要求について複数あるプロセッサのうちのどのプロセッサで処理するかはシステム設計時に予め決められていた。
【０００９】
したがって、１つのプロセッサに対し多重に割り込みが生じ得る一方で、同時に負荷が少なくアイドル状態にあるプロセッサが存在していた。このような状態がなるべく生じないように割り込み処理を各プロセッサに最適に割り当てることがシステム設計段階で重要になるが、動的に起こる各種割り込みを設計時に全て予測し最適化することは困難である。
【００１０】
本発明は、このような点に鑑みてなされたものであって、割り込み要求に対する応答性を向上し、システム全体の性能を高めることが可能な割り込みコントローラ及びシステムＬＳＩを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の割り込みコントローラは、複数のデバイスと、入力ポートをそれぞれ有する複数のプロセッサとに接続され、前記複数のデバイスの少なくとも１つから割り込み要求を受けて、前記複数のプロセッサのいずれかの入力ポートに対し、該割り込み要求を通知する割り込みコントローラにおいて、前記複数のプロセッサのそれぞれの動作状態を保持する保持手段と、前記割り込み要求を通知するプロセッサを前記保持手段に保持された動作状態に応じて選択する選択手段とを備えることを特徴とする。
【００１２】
また、本発明のシステムＬＳＩは、入力ポートをそれぞれ有する複数のプロセッサと、前記複数のプロセッサのそれぞれの動作状態を保持する保持手段と、外部デバイスからの割り込み要求を通知するプロセッサを前記保持手段に保持された動作状態に応じて選択する選択手段とを有する割り込みコントローラとを備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数のプロセッサのそれぞれの動作状態が保持され、割り込み要求を通知するプロセッサが該保持された動作状態に応じて選択されるので、各プロセッサに対し割り込み処理を最適に分配することができ、割り込み要求に対する応答性を向上し、システム全体の性能を高めることが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、図１〜図３を参照して本発明の実施の形態を説明する。
【００１５】
図１は、本発明の実施の形態に係る割り込みコントローラを含むシステムＬＳＩの全体構成を示す図である。尚、システムＬＳＩとは、多数の機能を１個のチップ上に集積した超多機能ＬＳＩであり、ポータブルオーディオやデジタルカメラなど、特定用途の電子機器に組み込まれている。
【００１６】
図４の従来のシステムＬＳＩの全体構成との比較を容易にするため、図４と同一の構成要素については番号に符号「ａ」を付加している。図１において、図４と異なるのは割り込みコントローラ５００ａ内にプロセッサ１００ａ〜１０２ａの動作状態を示すプロセッサ動作状態レジスタ５０１〜５０３を備える点である。該プロセッサ動作状態レジスタ５０１〜５０３は各々がプロセッサ１００ａ〜１０２ａの動作状態を保持し、システムバス２００ａを介して全てのプロセッサ１００ａ〜１０２ａからデータの書き込みやデータの読み出しを実行することができる。尚、プロセッサ、プロセッサ動作状態レジスタ、Ｉ／Ｏインターフェイス及びハードウェアエンジンの各個数は、複数あればよく、図示されるものに限定されない。
【００１７】
その他のシステムＬＳＩの構成は図４の従来のシステムＬＳＩの構成と同様なので、その説明は省略する。
【００１８】
図２は本発明の実施の形態に係る割り込みコントローラの構成を詳細に示す図である。
【００１９】
同図において、システムバス２００ａからのレジスタアクセスはレジスタインターフェース６０５を介して各プロセッサ動作状態レジスタ５０１〜５０３に伝達される。プロセッサ動作状態レジスタ５００〜５０３は、それぞれプロセッサ１００ａ〜１０２ａの動作状態に応じた、「１（動作中）」、「０（待機中）」のいずれかの値が保持されている。
【００２０】
割り込み要求３１０ａ，３１１ａ，４１０ａは、割り込み選択回路６２０〜６２２及びプロセッサ選択回路６１０に入力される。プロセッサ選択回路６１０には、前記プロセッサ動作状態レジスタ５００〜５０３及び割り込み要求３１０ａ，３１１ａ，４１０ａが入力され、後述の規則に従って割り込み選択信号６１１〜６１３が出力される。
【００２１】
割り込み選択回路６２０〜６２２には、それぞれ割り込み要求３１０ａ，３１１ａ，４１０ａが入力され、割り込み選択回路６２０はプロセッサ割り込み信号５１０ａを出力し、割り込み選択回路６２１はプロセッサ割り込み信号５１１ａを出力し、割り込み選択回路６２２はプロセッサ割り込み信号５１２ａを出力する。
【００２２】
割り込み選択回路６２０は、プロセッサ選択回路６１０からの割り込み選択信号６１１に基づいて、割り込み要求３１０ａ，３１１ａ，４１０ａのいずれかをプロセッサ割り込み信号５１０ａとして出力する。割り込み選択回路６２１は、割り込み選択回路６２０と同様の方法で、割り込み選択信号６１２に基づいて、割り込み要求３１０ａ，３１１ａ，４１０ａのいずれかをプロセッサ割り込み信号５１１ａとして出力し、割り込み選択回路６２２は、割り込み選択信号６１３に基づいて、割り込み要求３１０ａ，３１１ａ，４１０ａのいずれかをプロセッサ割り込み信号５１２ａとして出力する。
【００２３】
割り込み選択回路６２０〜６２２で選択された割り込み要求（即ち、割り込み要求３１０ａ，３１１ａ，４１０ａ）は、割り込みコントローラ５００ａ内に設けられた割り込み要因レジスタ（不図示）をレジスタインターフェース６０５を介して読み出すことにより知ることができる。この割り込み要因レジスタ（不図示）は、各々のプロセッサ毎に備えられている。
【００２４】
次に、図１のシステムＬＳＩの動作例を説明する。
【００２５】
なお、システムＬＳＩの構成によっては特定のデバイスからの割り込み要求は特定のプロセッサで処理しなければならない場合もある。その場合は当該プロセッサの動作状態によらず、該割り込み要求はその特定のプロセッサにのみ伝達される。ここでは、それ以外の場合、すなわち、ある割り込み要求に対し、複数のプロセッサのいずれもが対処可能な場合に注目し、その場合のみについて説明する。
【００２６】
図３は、図１のシステムＬＳＩの動作の一例を示すタイミングチャートであり、プロセッサ１００ａ〜１０２ａの動作状態、割り込み要求３１０ａ，３１１ａ，４１０ａの状態、および割り込みコントローラ５００ａから各プロセッサへの出力であるプロセッサ割り込み信号５１０ａ，５１１ａ，５１２ａが同じ時間軸上に示されている。
【００２７】
図３において、割り込み要求３１０ａ，３１１ａ，４１０ａはプロセッサ１００ａ〜１０２ａのいずれによっても処理可能である。実際には、Ｉ／Ｏインターフェースからの割り込み要求に対する処理はＯＳによってハンドリングされるＯＳ依存部分である。しかしドライバ層の実装方法によっては複数のプロセッサのうちいずれによっても割り込み処理の一部ないし全部を扱うことができる。この部分については公知の技術を用いるため、ここでは詳細には言及しない。
【００２８】
まず、初期状態（時刻Ｔ１）においては、プロセッサ１００ａ〜１０２ａの全てが待機状態にある。このとき、割り込みコントローラ５００ａ内のプロセッサ動作状態レジスタ５０１〜５０３の内容は全て「０」である。
【００２９】
時刻Ｔ２において、プロセッサ１００ａにタスクが割り当てられ、動作状態に移る。このとき、プロセッサ１００ａは割り込みコントローラ５００ａ内のプロセッサ動作状態レジスタ５０１の値を「１」に書き換えてからタスク処理に移る。
【００３０】
時刻Ｔ３において、割り込み要求３１１ａが生じる。このとき、割り込みコントローラ５００ａ内のプロセッサ選択回路６１０は、待機状態にあるプロセッサのうちプロセッサ１０１ａを選択すると共に割り込み選択回路６２１が割り込み要求３１１ａをプロセッサ１０１ａに伝達するような割り込み選択信号６１２を割り込み選択回路６２１に出力する。これにより、プロセッサ割り込み信号５１１ａがアサートされる。この割り込みに応答し、時刻Ｔ４においてプロセッサ１０１ａが動作状態に移行する。このときもプロセッサ１００ａは割り込みコントローラ５００ａ内のプロセッサ動作状態レジスタ５０２の値を「１」に書き換えてからタスク処理に移る。
【００３１】
次に、時刻Ｔ５において割り込み要求３１０ａが生じる。このときプロセッサ１００ａ，１０１ａはまだ動作中であることから、割り込みコントローラ５００ａ内のプロセッサ選択回路６１０は待機状態にあるプロセッサ１０２ａを選択すると共に割り込み選択回路６２２が割り込み要求３１０ａをプロセッサ１０２ａに伝達するような割り込み選択信号６１３を割り込み選択回路６２２に出力する。これにより、プロセッサ割り込み信号５１２ａがアサートされる。この割り込みに応答し、時刻Ｔ６においてプロセッサプロセッサ１０２ａが動作状態に移行する。このときもプロセッサプロセッサ１０２ａは割り込みコントローラ５００ａ内のプロセッサ動作状態レジスタ５０３の値を「１」に書き換えてからタスク処理に移る。
【００３２】
それぞれのプロセッサは割り当てられたタスクが終了し、待機状態に戻るときには割り込みコントローラ５００ａ内のプロセッサ動作状態レジスタ５０１〜５０３の値を「０」に書き換える。
【００３３】
以上説明したように、本実施の形態によれば、割り込みコントローラ内のプロセッサ動作状態レジスタに複数のプロセッサの動作状態を保持させ、割り込み要求が発生したときに、プロセッサ動作状態レジスタに保持された複数のプロセッサの動作状態に応じて、動作状態にないプロセッサが選択され、割り込み応答するため、各プロセッサに対し割り込み処理を最適に分配することができ、割り込み応答性を向上させその結果としてシステム全体の性能を高めることが可能となる。
【００３４】
本実施の形態においては、割り込みコントローラの内部に、複数のプロセッサの動作状態を保持するためのプロセッサ動作状態レジスタを備える場合について説明したが、この構成に限定するものではなく、外部に備えられるレジスタから、又は各プロセッサから直接入力される状態を参照するように構成してもよい。この場合、各プロセッサから直接入力される状態情報としては、例えば、プロセッサが割り込み待ち状態でスリープモードにあること等を示す、プロセッサ状態出力信号をそのまま用いることができる。
【００３５】
また、本実施の形態において、割り込みコントローラは、複数のプロセッサのそれぞれに対応して、複数のプロセッサ動作状態レジスタを備えているが、複数のプロセッサの動作状態を個別に保持することができれば、１つのプロセッサ動作状態レジスタを備えるようにしてもよい。
【００３６】
また、本実施の形態においては、プロセッサの動作状態として「１（動作中）」又は「０（待機中）」の２つの状態のみをとる場合を説明したが、もちろんこれに限定するものではなく、さらに「２（割り込み処理中）」、「３（ＯＳタスク実行中）」等の任意の数の状態を区別するように構成しても良い。この場合には、例えば、待機中のプロセッサが１つもない場合には、動作状態が「１（動作中）」であるプロセッサから選択し、「２（割り込み処理中）」及び「３（ＯＳタスク実行中）」のプロセッサからは選択しないように構成することができる。
【００３７】
本実施の形態においては、複数のプロセッサ、複数のＩ／Ｏインターフェース及び複数の専用ハードウェアエンジンが全て１つのシステムバスに接続されている場合を説明したが、この構成に限定するものではなく、これらがクロスバースイッチを介して接続されていてもよく、又は階層化（マルチレイヤー）バスによって接続されていてもよい。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施の形態に係る割り込みコントローラを含むシステムＬＳＩの全体構成を示す図である。
【図２】本発明の実施の形態に係る割り込みコントローラの構成を詳細に示す図である。
【図３】図１のシステムＬＳＩの動作の一例を示すタイミングチャートである。
【図４】従来のシステムＬＳＩの全体構成を示す図である。
【符号の説明】
【００３９】
１００ａ〜１０２ａ  プロセッサ
２００ａ  システムバス
３００ａ，３０１ａ  Ｉ／Ｏインターフェイス
３１０ａ，３１１ａ，４１０ａ  割り込み要求
４００ａ  ハードウェアエンジン
５００ａ  割り込みコントローラ
５０１〜５０３  プロセッサ動作状態レジスタ
５１０ａ，５１１ａ，５１２ａ  プロセッサ割り込み信号
６１０  プロセッサ選択回路
６２０〜６２２  割り込み選択回路
【図１】
2005346673.tif 000003
【図２】
2005346673.tif 000004
【図３】
2005346673.tif 000005
【図４】
2005346673.tif 000006