(57)【特許請求の範囲】
【請求項１】
第１のプロセッサと、第２のプロセッサと、前記第１及び第２のプロセッサに共有される第１のリソースと、前記第１及び第２のプロセッサに共有される第２のリソースと、前記第１及び第２のリソースと各プロセッサとを接続するシステムバスと、を含むマルチプロセッサシステムであって、
前記第１のプロセッサで実行される割り込み処理に関して複数の割り込み要求を制御する第１の割り込み制御回路と、
前記第２のプロセッサで実行される割り込み処理に関して複数の割り込み要求を制御する第２の割り込み制御回路と、をさらに備え、
前記第１の割り込み制御回路は、
前記複数の割り込み要求に設定する複数の優先度を保持する第１の優先度設定レジスタと、
前記複数の優先度に対応して、各優先度に属する割り込み要求をマスクするか否かを指定する情報を保持する第１の優先度マスクレジスタと、
第１の割り込み要求に応じて前記第１のプロセッサが第１の割り込み処理の実行中に、前記複数の割り込み要求のうち、前記第１の優先度設定レジスタによって前記複数の割り込み要求に設定された優先度が前記第１の割り込み処理より高く、かつ、前記設定された優先度が前記第１の優先度マスクレジスタによってマスクされると指定された第２の割り込み要求の有無を検出し、検出した前記第２の割り込み要求を、前記第１の優先度設定レジスタが保持する複数の優先度のレベル毎に振り分け、前記第２の割り込み要求の有無を前記複数の優先度のレベル毎に集約する第１の検出手段と、
前記第１の検出手段が集約した前記第２の割り込み要求の有無を示す第１の優先度マスクフラグと、を備え、
前記第２の割り込み制御回路は、
前記複数の割り込み要求に設定する複数の優先度を保持する第２の優先度設定レジスタと、
前記複数の優先度に対応して、各優先度に属する割り込み要求をマスクするか否かを指定する情報を保持する第２の優先度マスクレジスタと、
第３の割り込み要求に応じて前記第２のプロセッサが第３の割り込み処理の実行中に、前記複数の割り込み要求のうち、前記第２の優先度設定レジスタによって前記複数の割り込み要求に設定された優先度が前記第３の割り込み処理より高く、かつ、前記設定された優先度が前記第２の優先度マスクレジスタによってマスクされると指定された第４の割り込み要求の有無を検出し、検出した前記第４の割り込み要求を、前記第２の優先度設定レジスタが保持する複数の優先度のレベル毎に振り分け、前記第４の割り込み要求の有無を前記複数の優先度のレベル毎に集約する第２の検出手段と、
前記第２の検出手段が集約した前記第４の割り込み要求の有無を示す第２の優先度マスクフラグと、を備え、
前記第１のプロセッサは、前記第１の割り込み要求に応じて前記第１のリソースを獲得し、さらに前記第１の割り込み要求に応じて前記第２のリソースを獲得する場合に、前記第１の優先度マスクフラグの値に応じて、前記第１のリソースの保持あるいは開放を行うマルチプロセッサシステム。
【請求項２】
前記第１のプロセッサは、前記第１の優先度マスクフラグが、前記第２の割り込み要求が有ることを示す場合には、前記第１のリソースを開放し、前記第２の割り込み要求が無いことを示す場合には、前記第１のリソースを保持することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
第１のプロセッサと、第２のプロセッサと、前記第１及び第２のプロセッサに共有される第１のリソースと、前記第１及び第２のプロセッサに共有される第２のリソースと、前記第１及び第２のリソースと各プロセッサとを接続するシステムバスと、前記第１のプロセッサで実行される割り込み処理に関して複数の割り込み要求を制御する第１の割り込み制御回路と、前記第２のプロセッサで実行される割り込み処理に関して複数の割り込み要求を制御する第２の割り込み制御回路と、を含み、
前記第１の割り込み制御回路は、
前記複数の割り込み要求に設定する複数の優先度を保持する第１の優先度設定レジスタと、
前記複数の優先度に対応して、各優先度に属する割り込み要求をマスクするか否かを指定する情報を保持する第１の優先度マスクレジスタと、
割り込み処理の実行中に、前記複数の割り込み要求のうち、前記第１の優先度設定レジスタによって前記複数の割り込み要求に設定された優先度が実行中の割り込み処理より高く、かつ、前記設定された優先度が前記第１の優先度マスクレジスタによってマスクされると指定された割り込み要求を検出し、検出した前記マスクされると指定された割り込み要求を、前記第１の優先度設定レジスタが保持する複数の優先度のレベル毎に振り分け、前記マスクされると指定された割り込み要求の有無を前記複数の優先度のレベル毎に集約する第１の検出手段と、
前記第１の検出手段が集約した前記マスクされると指定された割り込み要求の有無を前記複数の優先度のレベル毎に示す、複数のフラグを有する第１の優先度マスクフラグを備え、
前記第２の割り込み制御回路は、
前記複数の割り込み要求に設定する複数の優先度を保持する第２の優先度設定レジスタと、
前記複数の優先度に対応して、各優先度に属する割り込み要求をマスクするか否かを指定する情報を保持する第２の優先度マスクレジスタと、
割り込み処理の実行中に、前記複数の割り込み要求のうち、前記第２の優先度設定レジスタによって前記複数の割り込み要求に設定された優先度が実行中の割り込み処理より高く、かつ、前記設定された優先度が前記第２の優先度マスクレジスタによってマスクされると指定された割り込み要求を検出し、検出した前記マスクされると指定された割り込み要求を、前記第２の優先度設定レジスタが保持する複数の優先度のレベル毎に振り分け、前記マスクされると指定された割り込み要求の有無を前記複数の優先度のレベル毎に集約する第２の検出手段と、
前記第２の検出手段が集約した前記マスクされると指定された割り込み要求の有無を前記複数の優先度のレベル毎に示す、複数のフラグを有する第２の優先度マスクフラグと、を備えるマルチプロセッサシステムの割り込み制御方法であって、
前記第１のプロセッサは、
前記第１の割り込み制御回路が制御する第１の割り込み要求に応じて前記第１のリソースを獲得し、
前記第１の割り込み要求に応じてさらに前記第２のリソースを獲得する場合に、前記第１の優先度マスクフラグを参照し、
前記第１の優先度マスクフラグの値に応じて、前記第１のリソースの保持または開放を判断し実行する、割り込み制御方法。
【請求項４】
前記第１のリソースの保持または開放の判断及び実行は、前記第２のリソースが前記第２のプロセッサに獲得されているために前記第２のリソースの獲得を待つ間、一定の時間が経過した場合に行われる、ことを特徴とする請求項３に記載の割り込み制御方法。
【請求項５】
前記第１のリソースの保持または開放の判断及び実行は、
前記第１の優先度マスクフラグが、前記複数の割り込み要求のうち、前記第１の優先度設定レジスタによって前記複数の割り込み要求に設定された優先度が実行中の第１の割り込み処理より高く、かつ、前記設定された優先度が前記第１の優先度マスクレジスタによってマスクされると指定された第２の割り込み要求が有ることを示す場合には、前記獲得した第１のリソースを開放し、
前記第２の割り込み要求が無いことを示す場合には、前記獲得した第１のリソースを保持する、ように行われることを特徴とする請求項３または４に記載の割り込み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割り込み制御回路に関し、複数の割り込み要求をプロセッサで処理する場合に、処理に必要な情報を提供する割り込み制御回路及び割り込み制御方法に関する。
【背景技術】
【０００２】
近年、家電機器や自動車等といった多岐の分野にわたって、特定用途向けの組み込みシステム（embedded system）が普及している。組み込みシステムにおいては、プロセッサが制御する対象が増えてきており、それに伴いプロセッサが取り扱う割り込み信号の数も増加している。例えば、プロセッサが制御する対象が電子制御機器である場合、システム制御を行うと共に、データのバックアップを行う場合が生じる。その場合、プロセッサには、システム制御に関係する割り込み要求と、データのバックアップに関係する割り込み要求とが入力される。
【０００３】
システム制御に関係する割り込み処理は、あらかじめ定められた所定の期間に終えなければ、電子制御機器の状態の変化に追いつかなくなり、システム制御に支障が出ることがある。従って、プロセッサでは、システム制御に係る割り込み処理については、必ず割り込みが発生してから所定の期間内に処理を終え、その結果を返すリアルタイム性が要求される。一方、データのバックアップに関係する割り込み処理は、割り込みが発生してから実際に処理を終えるまでの時間が、時によってまちまちであったとしても大きな問題が発生しない。従って、それほど高いリアルタイム性は要求されない。
【０００４】
プロセッサに課せられる処理時間は、電子制御機器の動作状況に応じて変化する。例えば、電子制御機器の動作が高速である場合には処理時間は短くなり、低速である場合には長くなる。プロセッサに課せられる処理時間が短いとき、或いは、一定時間に行う処理が増えたとき、プロセッサの処理能力の余裕が少なくなる。従って、プロセッサが全ての割り込み処理を受け付け可能にした場合、割り込みが過剰に発生すると、処理が間に合わなくなるといった事態が生じ得る。そこで、プロセッサは、処理能力に余裕がないときには、リアルタイム性が低い割り込みを一時的にマスクしてこれを保留し、リアルタイム性が高い割り込みのみが受け付けられるよう割り込みを制御する割り込み制御回路を設けている。
【０００５】
従来の割り込み制御回路の例が、特許文献１に開示されている。特許文献１では、複数の割り込み要求をグループ化し、グループ単位でマスクを設定する方法について述べられている。それによって、複数の割り込み要求のうち所定の割り込みを簡易にマスクすることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２８４７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、発明者は従来技術に以下の課題があることを見出した。従来技術では、割り込み要求の実行が受け付けられている間、より優先度の高い割り込み要求がマスクされる場合がある。そこでプロセッサは、割り込み要求が保管されるレジスタを個別に確認し、マスクされている割り込み要求の有無を確認する。プロセッサが確認する割り込みレジスタ数が少ない場合は対応できるが、数十から数百の多数のレジスタを確認する場合は、非常に多くの時間がかかるという問題が生じる。
【課題を解決するための手段】
【０００８】
第１の視点に基づく本発明に係る割り込み制御回路は、プロセッサで実行される割り込み処理に関して複数の割り込み要求を制御する割り込み制御回路であって、割り込み処理の実行中に、該割り込み処理によりマスクされている割り込み要求の有無を検出する検出手段と、前記割り込み要求の有無を示す優先度マスクフラグを備えたものである。このような構成により、マスクされている割り込み要求の有無を検出することができる。
【０００９】
また、本発明は第２の視点に基づけば、プロセッサで実行される割り込み処理に関して複数の割り込み要求を制御する割り込み制御方法であって、割り込み処理を実行し、前記割り込み処理の実行中に、該割り込み処理によりマスクされている割り込み要求の有無を検出し、前記割り込み要求の有無に基づいて前記割り込み処理が使用するリソースを開放する割り込み制御方法である。このような構成により、リソースの使用を効率的に行うことができる。
【発明の効果】
【００１０】
以上のように、複数の割り込み要求をプロセッサで処理する場合、マスクされている他の割り込み要求の有無を効率的に検出する割り込み制御回路を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に係る半導体装置の構成を示すブロック図である。
【図２】第１の実施形態に係る半導体装置に係る割り込み制御回路の構成を示すブロック図である。
【図３】第１の実施形態に係るＰＭＲの構成例を示す説明図である。
【図４】第１の実施形態に係るＰＭＲに割り込み優先度を割り当てた例を示す図である。
【図５】第１の実施形態に係る割り込み制御レジスタの仕様を示す図である。
【図６】第１の実施形態に係るＰＭＦの実装例を示す回路図である。
【図７】第１の実施形態に係る割り込み制御方法の処理動作を示すフロー図である。
【図８】第１の実施形態に係るＰＭＲＲの構成例を示す説明図である。
【図９】第１の実施形態の第１の変形例に係る実装例を示すブロック図である。
【図１０】第２の実施形態に係る半導体装置の構成を示すブロック図である。
【図１１】第２の実施形態に係る割り込み処理の動作例を時間経過に従って示した図である。
【図１２】従来技術に係る割り込み処理のタイミングチャートを示す図である。
【図１３】従来技術に係る割り込み処理の別の形態のタイミングチャートを示す図である。
【図１４】第２の実施形態に係る割り込み処理のタイミングチャートを示す図である。
【図１５】第２の実施形態に係る割り込み処理の別の形態のタイミングチャートを示す図である。
【図１６】第３の実施形態に係る半導体装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下に、本発明の好ましい実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、説明の明確化のため、必要に応じて重複説明は省略されている。
【００１３】
発明の実施の形態１．
図面を参照し、第１の実施形態について説明する。第１の実施形態は、本発明に係る割り込み制御回路を、ＬＳＩ（大規模集積回路：Large Scale Integrated Circuit）等の半導体素子に１チップ形成された回路として例を示すものである。図１は、第１の実施形態に係る割り込み制御回路を有する半導体装置の構成図を示したものである。図１に示すように、半導体装置１００は、プロセッサ１１０、割り込み制御回路１２０、リソース３００、及びこれらを接続し、命令やデータ等のやり取りを行うシステムバス４００、割り込み制御回路１２０とプロセッサ１１０を直接接続する信号線４１０、４２０等を有している。更に、これらを動作させるための電源配線、入出力端子等を有している。なお、電源配線や入出力端子等は図示していない。
【００１４】
第１の実施形態では、例えば電子制御機器の制御を行う組み込みシステム等に用いられる半導体装置１００について、例示的に述べる。この場合、プロセッサ（ＣＰＵ：Central Processing Unit）１１０は、電子制御機器のシステム制御や、センサから入力された情報によるデータの演算処理、システムの自己診断、及びデータのバックアップ等の割り込み処理を実行する。割り込み制御回路１２０は、プロセッサ１１０への割り込み要求を制御する回路である。リソース３００は、割り込み処理を実行するために必要な機能であり、タイマー、メモリ、及びシリアル通信機構等を示している。
【００１５】
各々のリソースは、必要に応じてシステムバス４００と接続し、システムバス４００を介してプロセッサ１１０や、割り込み制御回路１２０、更にリソース３００の相互間でデータや命令のやり取りを行っている。また、各々のリソースには必要に応じて入出力端子が設けられている。なお、必要に応じてシステムバス４００を経由せず、所定の回路間に直接的にデータ等をやり取りするようにしても良いのは勿論であるが、煩雑になるので図示しない。より説明を分かりやすくするために、これらリソースを例示して述べると、例えば、リソース３００は、リソースＡ３０１、リソースＢ３０２、リソースＣ３０３、及びリソースＤ３０４を有している。また、より例示的に述べるとリソースＡ３０１がタイマー１、リソースＢ３０２がメモリ、リソースＣ３０３がタイマー２、及びリソースＤ３０４がシリアル通信機構（以下、シリアルと略称する）で構成されている。なお、リソースの数や機能については、半導体装置１００の使用用途に応じて変更が可能であることはいうまでもない。なお、上述した半導体装置１００はマイクロコントローラとも呼称され、更に広義には、マイクロコンピュータとも捉えられる。
【００１６】
割り込み制御回路１２０は更に、割り込み処理の実行中に割り込み処理によりマスクされている割り込み要求の有無を検出する検出手段である割り込み制御モジュールユニット１５０と、この割り込み要求の有無を示す優先度マスクフラグ１４０（以下、ＰＭＦ（Priority Mask Flag）と称す）等を備える。これらの構成、動作の詳細は後述する。すでに述べたように、割り込み制御回路１２０に割り込み制御モジュールユニット１５０とＰＭＦ１４０とを備えることが本発明を第１の観点から見た場合の中核的な部分である。また、このＰＭＦ１４０のフラグの状態、つまりＰＭＦ１４０のデータは、システムバス４００を介してプロセッサ１１０から読み出し可能である。これについても詳細は後述する。なお、ＰＭＦ１４０のデータは、システムバス４００に限らず、プロセッサ１１０からＰＭＦ１４０の情報を読み出す専用バスを設けることで読み出すことも可能である。
【００１７】
図２は、半導体装置１００における割り込み制御回路１２０を更に詳細に示した図である。割り込み制御回路１２０は、優先度マスクレジスタ（Priority Mask Register：以下、ＰＭＲと記す）１２１、優先度設定レジスタ１２２、出力信号生成回路１２３、ＰＭＦ１４０を備えた割り込み制御レジスタ１２４、及び複数の割り込み制御モジュール１２５（０）〜１２５（Ｎ）（Ｎ：自然数）と、そのモジュール群の第１の出力を処理してＰＭＦ１４０へ出力する第１の出力回路１３５などからなる割り込み制御モジュールユニット１５０、とを有している。また、プロセッサ１１０からＰＭＦ１４０の情報を読み出す専用バスを設ける場合、信号線４１１、４２１が設けられる。なお、割り込み制御モジュールユニット１５０についての詳細は後述する。
【００１８】
割り込み制御回路１２０では、複数の割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）が、割り込み制御モジュールユニット１５０の夫々の割り込み制御モジュール１２５（０）〜１２５（Ｎ）に入力される。割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）は、半導体装置１００内部で発生した要求信号に限らず、半導体装置１００の外部から要求される場合もある。それらの要求の中からプロセッサ１１０で処理する信号を選択するため、優先度設定レジスタ１２２によって各割り込み要求に優先度が設定される。そして、ＰＭＲ１２１によって、どの優先度に属する割り込み要求をマスクすべきか否かが決定される。その結果、出力信号生成回路１２３は、ＰＭＲ１２１によってマスクされなかった割り込み要求の中から最も優先度が高い割り込み要求を選択し、それに対応する割り込み要求信号及び割り込み識別信号をプロセッサ１１０に出力する。一方、割り込み制御レジスタ１２４は、プロセッサ１１０からの要求に応じて、ＰＭＲ１２１によってマスクされている割り込み要求の有無を検出し、プロセッサ１１０に出力する。
【００１９】
複数の割り込み制御モジュール１２５（０）〜１２５（Ｎ）は、割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）に対応して設けられている。割り込み制御モジュール１２５（０）〜１２５（Ｎ）は、入力された割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）がプロセッサ１１０によって受け付けられるまで保持する。そして、割り込み要求に設定された優先度に応じて出力信号生成回路１２３に伝達するか否かを決定する。
【００２０】
優先度設定レジスタ１２２は、複数の割り込み制御モジュール１２５（０）〜１２５（Ｎ）に入力する割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）に設定された優先度を記憶するレジスタである。この優先度は、例えば、割り込み要求に対応する処理に要求されるリアルタイム性の高低等に応じて設定することが可能である。
【００２１】
図３は、ＰＭＲ１２１の説明図を示している。ＰＭＲ１２１は、優先度設定レジスタ１２２によって設定された優先度に属する割り込み要求をマスクすべきか否かを指定する情報を保持する。ＰＭＲ１２１は、割り込み優先度のレベル数に応じたビット数を有するレジスタとして構成される。ＰＭＲ１２１では、各ビットにビット番号及びビット名称を設け、各々に割り込み優先度を対応させている。例えば、特定の優先度（例えば、優先度９）を有するビット番号にマスクするというフラグ１が立っている場合は、優先度９に設定されている割り込み要求がマスクされている。各ビット値には、それぞれのビットに対応する割り込み優先度をマスクするという情報（"Ｈ"）、又は割り込み処理をマスクしないという情報（"Ｌ"）が書き込まれている。図３の例では、優先度のレベルは１６あるので、ＰＭＲ１２１は、１６ビットで構成されている。割り込み処理をマスクするという情報（"Ｈ"）が"１"に対応し、割り込み処理をマスクしないという情報（"Ｌ"）が"０"に対応し、ビットに格納されている。初期値は０であり、図３では、初期状態を示している。このようにレジスタのビット数は割り込み優先度のレベル数に応じた数としている。
【００２２】
図４は、システムが必要とする割り込み要求の分類と優先度をＰＭＲ１２１に割り当てた例を示した図である。例えば、ＯＳレベルとアプリケーションレベルに分類される割り込み要求をマスクしたい場合、割り込み優先度４から優先度１５の割り込み要求を全てマスクするよう設定する。従って、図３に示すＰＭＲ１２１の４番から１５番のビット値に"Ｈ"を示す"１"を書き込み、それ以外のビット（即ち、０番から３番のビット値）に"Ｌ"を示す"０"を書き込む。ＰＭＲ１２１の内容は、プロセッサ１１０の処理状況に応じて書き換えが可能である。従って、マスクする割り込み要求を随時変更することが可能である。
【００２３】
出力信号生成回路１２３は、割り込み制御モジュール１２５（０）〜１２５（Ｎ）から、対応する割り込み要求が発生した旨の信号が入力されると、最も優先度が高い割り込み要求を選択し、その割り込み要求に対応する割り込み要求信号と、割り込み識別信号とをプロセッサ１１０に出力する。プロセッサ１１０は、いずれかの割り込みを受け付けると、その割り込みに対応した処理を開始する。
【００２４】
図５を参照して、割り込み制御レジスタ１２４について説明する。図５は、第１の実施形態に係る割り込み制御レジスタの一例として示すものであり、ＩＣＳＲ（Interrupt Control Status Register）と称される。このレジスタは、例えば１６ビットを有し、図５ではビット０、１、２、４、５、６及び８に機能が割り当てられている。このレジスタのビット番号８には、優先度マスクフラグ（ＰＭＦ）１４０が割り当てられている。ＰＭＦ１４０は、ＰＭＲ１２１でマスクされている他の割り込み要求の状態を監視し、その結果を格納するフラグである。ＰＭＦ１４０は、割り込み処理に設定された優先度に応じてマスクされている割り込み要求が割り込み制御モジュール１２５（０）〜１２５（Ｎ）に存在するか否かを示す機能を有している。プロセッサ１１０はＰＭＦ１４０を読み出すことによって、ＰＭＦ１４０が"Ｈ"の場合はＰＭＲ１２１の設定でマスクされている割り込み要求が存在することを検出する。ＰＭＦ１４０が"Ｌ"の場合はそれに該当する割り込み要求が存在しないことを検出することができる。なお、図５においてビット名称が"０"のビットは、機能が割り当てられていないことを示す。また、ＰＭＦ以外のＡ、Ｂ、及びＣ等のビット名称の機能は、本発明と無関係であるので説明は省略する。
【００２５】
図６を参照し、ＰＭＦ１４０にＰＭＲ１２１でマスクされている割り込み要求の有無を格納する方法の一例を説明する。図６では、図２に示す割り込み制御回路１２０の割り込み制御モジュール１２５（０）〜１２５（Ｎ）の構成を更に詳細に示している。複数の割り込み制御モジュール１２５（０）〜１２５（Ｎ）は、個々にフラグレジスタ１２６、マスクレジスタ１２７、三つの論理回路１２８、１２９、１３０、及びセレクタ１３２を有している。更に、複数個の割り込み制御モジュール１２５（０）〜１２５（Ｎ）、及びＯＲ回路１３１によって、割り込み制御モジュールユニット１５０が構成されている。なお、ＯＲ回路１３１は、図２に示した第１の出力を処理してＰＭＦ１４０へ出力する第１の出力回路１３５を具体的に実現した一例である。
【００２６】
フラグレジスタ１２６は、入力する割り込み要求がプロセッサ１１０によって受け付けられるまで、割り込み要求を保持する。マスクレジスタ１２７は、個別に割り込み要求をマスクする機能を有している。マスクレジスタ１２７の値が"Ｈ"の場合、フラグレジスタ１２６に保持された割り込み信号はマスクされる。即ち、論理回路１２８からは出力されない。つまり、論理回路１２８の出力は"Ｌ"になる。
【００２７】
また、論理回路１２８には、現在ＣＰＵ１１０で処理中の割り込み処理の優先度情報と、優先度設定レジスタ１２２に設定されている優先度情報が入力される。論理回路１２８では、現在ＣＰＵ１１０で処理中の割り込み処理の優先度が優先度設定レジスタ１２２に設定されている優先度と同等、又はより高い場合、論理回路１２８の信号Ｂの出力がフラグレジスタ１２６の入力がたとえ"Ｈ"であり、マスクレジスタ１２７が"Ｌ"（マスクしない）であっても、"Ｌ"となる。つまり、出力されない。従って、フラグレジスタ１２６に割り込み要求が入力され、"Ｈ"がフラグレジスタ１２６から出力された場合、フラグレジスタ１２６に入力した割り込み要求に対して、マスクレジスタ１２７がマスクしない場合で、かつ現在ＣＰＵ１１０で処理中の割り込み処理の優先度が優先度設定レジスタ１２２で設定された優先度より低い場合には、論理回路１２８の出力信号Ｂは"Ｈ"になる。
【００２８】
一方、割り込み要求は、優先度設定レジスタ１２２で設定されている割り込み優先度に従ってＰＭＲ１２１でマスクするか否かも選択される。従って、ＰＭＲ１２１でマスクするか否かを示す信号Ａが、ＰＭＲ１２１から読み出しセレクタ１３２を介して出力される。即ち、ＰＭＲ１２１によってマスクされる場合、信号Ａは"Ｈ"となり、マスクされない場合、信号Ａは"Ｌ"となる。
【００２９】
ここで、信号Ｂが"Ｈ"（論理回路１２８でマスクされない）であり、信号Ａが"Ｌ"（ＰＭＲ１２１でマスクされない）である場合、割り込み要求はマスクされない。従って、論理回路１２９の出力は"Ｈ"となり、更に他の割り込み要求との競合制御が行われた後、図２に示した出力信号生成回路１２３からプロセッサ１１０へ割り込み要求が出力される。なお、競合制御の具体的な動作については後述する。信号Ｂが"Ｈ"（論理回路１２８でマスクされない）であり、信号Ａが"Ｈ"（ＰＭＲ１２１でマスクする）である場合、割り込み要求はマスクされる。従って、論理回路１２９の出力は"Ｌ"となり、割り込み要求は出力されない。それと同時に、論理回路１３０の信号Ｃは"Ｈ"となる。信号Ｃは、割り込み制御モジュール１２５（０）〜１２５（Ｎ）に、ＰＭＲ１２１にマスクされている割り込み要求があるか否かを示す信号である。従って、"Ｈ"の場合、ＰＭＲ１２１でマスクされている割り込み要求が存在することを示し、"Ｌ"の場合、ＰＭＲ１２１でマスクされている割り込み要求が存在しないことを示す。全ての割り込み制御モジュール１２５（０）〜１２５（Ｎ）から出力される信号ＣをＯＲ回路１３１で集約し、ＰＭＲ１２１でマスクしている割り込み要求の有無を検出する。
【００３０】
即ち、複数個の割り込み制御モジュール１２５（０）〜１２５（Ｎ）と第１の出力回路１３５（ＯＲ回路１３１は、第１の出力回路１３５の具体例）で、割り込み制御モジュールユニット１５０が構成され、この割り込み制御モジュールユニット１５０が割り込み要求の有無を示す検出手段として機能する。そして、この検出手段の検出情報は、ＰＦＭ１４０に格納される。割り込み要求がマスクされているか否かを示すフラグは、プロセッサ１１０からシステムバス４００を介して読み出すことができる。なお、図６に示す割り込み制御モジュール１２５（０）〜１２５（Ｎ）や、割り込み制御モジュールユニット１５０の構成は第１の実施形態に係る一例を示している。従って、同様の機能を有す回路であれば、その他の構成とすることも可能である。例えば、上述では論理回路１２８に設けられていた現在処理中の割り込み処理より優先度の低い割り込み要求をマスクする機能を、論理回路１２８の出力部と論理回路１２９の入力部との間に別途設けることも可能である。
【００３１】
また、本実施例では、論理回路１２９からのチャネル割り込み要求は、個別に出力信号生成回路１２３に出力されているが、これらの出力を統合すると共に、そのうちから１のチャネル割り込み要求を選択する、いわば競合制御を行う回路を割り込み制御モジュールユニット１５０に設けてもよい。また、これを第２の出力回路とし、前述の第１の出力回路１３５を併せて、複数の割り込み制御モジュール１２５（Ｎ）の後段においた制御回路として構成することもできる。
【００３２】
以上のように、優先度設定レジスタ１２２とＰＭＲ１２１、ＣＰＵ１１０で処理中の割り込み優先度の情報に基づいてマスクすべきか否かを判定し、その結果に従って割り込み要求をマスクすると同時に、マスクされている割り込み要求の有無を検出することが可能となる。
【００３３】
次に、図７を参照して、ＰＭＲ１２１でマスクされる割り込み要求の有無に応じて割り込み要求を処理する処理動作について説明する。図７は、割り込み制御回路１２０に割り込み要求が入力され、ＰＭＦ１４０にＰＭＲ１２１でマスクされている割り込み要求の有無を示す情報を格納し、その情報に応じて割り込み処理が実行されるまでを示すフローチャートである。なお、必要に応じて、具体的な回路構成を示していた図６等も参照して述べる。
【００３４】
始めに、Ｓ１において、複数の割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）が入力される。割り込み信号は０〜Ｎ＋１個のいずれかの個数が入力される。従って、図７は、複数の割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）の処理を示すフローであるが、代表して割り込み要求信号ＩＮＴ（０）とＩＮＴ（Ｎ）を図に示す。Ｓ２において、入力された割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）が、図６に示すマスクレジスタ１２７によってマスクされているかどうか個別に選別する。（Ｓ２１、Ｓ２Ｎ）。マスクレジスタ１２７によってマスクされている場合は、割り込み要求は、そのまま図６に示すフラグレジスタ１２６に保持される。マスクレジスタ１２７によってマスクされていない場合には、Ｓ３において更にＣＰＵ１１０にて現在処理中の割り込み要求の優先度（Ｐ）と優先度設定レジスタ１２２に設定されている優先度（Ｘ）とを比較する（Ｓ３１、Ｓ３Ｎ）。なお、本説明においては、Ｐ及びＸは優先度を示す数値（自然数）であり、数が少ない方が優先度が高いことを示す。従って、現在処理中の割り込み要求の優先度の方が低い場合、即ちＰ＞Ｘの場合にはＳ４へ進む。ＣＰＵ１１０で現在処理中の割り込み要求の優先度の方が高いか同等の場合、即ちＰ≦Ｘの場合には、図７に示すようにＳ１の後へ戻る。そしてＳ２、Ｓ３の処理が終了してからＳ４へ進む。Ｓ４において、更に図６に示すＰＭＲ１２１によってマスクされているかどうか、個別に選別される（Ｓ４１、Ｓ４Ｎ）。
【００３５】
割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）がＰＭＲ１２１によってマスクされていない場合、図６に示すようにチャネル割り込み要求が該当する割り込み制御モジュール１２５（Ｎ）から、図示しない出力制御回路１２３へ出力される。なお、複数の割り込み制御モジュール１２５（０）〜１２５（Ｎ）からチャネル割り込み要求が出された場合には、図２に示す出力制御回路１２３で他の割り込み要求との競合制御が行われる（Ｓ５）。詳しくは図示しないが、この競合制御は、図２に示す出力信号生成回路１２３で行われ、最も優先度が高い割り込み要求が選択される。その結果、選択された割り込み要求が、出力信号生成回路１２３からプロセッサ１１０へ出力される（Ｓ６）。選択されなかった他の割り込み信号は出力されず、再度競合制御が行われる。
【００３６】
一方、割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）がＰＭＲ１２１によってマスクされている場合は、割り込み要求信号ＩＮＴ（０）〜ＩＮＴ（Ｎ）は出力されない。それと同時に、ＰＭＲ１２１によってマスクされているという情報がＯＲ回路１３１によって集められる（Ｓ７）。マスクされている信号数（Ｄ）が０の場合は、ＰＭＦ１４０に"０"が設定される（Ｓ８）。マスクされている信号数（Ｄ）が１以上Ｎ＋１以下である場合は、ＰＭＦに"１"が設定される（Ｓ９）。
【００３７】
なお、ここで強調しておきたいのは、前述のようにＣＰＵ１１０で現在処理中の割り込み要求の優先度が優先度設定レジスタ１２２で予め設定された優先度よりも低い場合に、ＰＭＲ１２１によりマスクされているか否かの判断対象となるということである。換言すれば、ＰＭＦ１４０の設定対象となるということである。従って、ＣＰＵ１１０で現在処理中の割り込み要求の優先度が優先度設定レジスタ１２２で予め設定されていた優先度と同等か高い場合には、それが終了してからマスクされるか否かが決められ、マスクされればＰＭＦ１４０に"１"が設定されるということである。つまり、ＰＭＦ１４０に"１"が設定されている場合の割り込み要求は、その重要度が相対的に高い割り込み要求であるともいえる。換言すればＰＭＦ１４０は、重要度の高い割り込み要求の有無を簡単に判別できるフラグであるとも言える。また、更に別の表現をすれば、ＰＭＦ１４０は、ＣＰＵ１１０が現在処理中の割り込み要求の優先度と同等以上の優先度をもつ割り込み要求がマスクされているか否かを簡便に示すフラグであるとも言え、実用上、重要な割り込み要求の有無が簡便に判る。
【００３８】
次に、プロセッサ１１０は、前述の割り込み要求（Ｓ６）を受けると、Ｓ１０において、割り込み処理が開始される。Ｓ１１にて、Ｓ１０の割り込み処理実行中に処理待ち時間の有無をタイマー等（不図示）で確認する。処理待ち時間が無い場合は、Ｓ１２にてＳ１０の割り込み処理が続行される。処理待ち時間が有る場合は、ＰＭＦ１４０を読み出し、ＰＭＲ１２１によってマスクされている割り込み要求の有無を確認する（Ｓ１３）。そして、ＰＭＦ１４０の値に応じて、プロセッサ１１０が処理する割り込み要求を決定する。ＰＭＦ１４０が"０"である場合（マスクされている割り込み要求が無い場合）、Ｓ１２にて割り込み処理の実行が続行される。ＰＭＦ１４０が"１"である場合（マスクされている割り込み要求が有る場合）、マスクされている割り込み要求を処理する（Ｓ１４）。マスクされている割り込み要求が複数ある場合は、出力生成回路１２３が最も優先度の高い割り込み要求を選別し、その割り込み要求を処理する。
【００３９】
以上のように、プロセッサ１１０がＰＭＦ１４０を読み出すことにより、マスクされている割り込み要求の有無を検出することが可能となる。従って、プロセッサ１１０は、割り込み要求が保管されているレジスタを個別に確認する必要もなくなるため、確認にかかる処理時間を削減することができる。
【００４０】
なお、第１の実施形態の第１の変形例として、割り込み制御モジュール１２５（０）〜１２５（Ｎ）から出力される信号Ｃを、割り込み優先度のレベル毎に集約するレジスタをＰＭＦ１４０の他に設けることも可能である。図８は、信号Ｃを優先度のレベル毎に集約するレジスタの一例であるＰＭＲＲ（Priority Masked Request Register）レジスタの仕様を示す。前述のようにＰＭＦ１４０には、ＰＭＲ１２１によってマスクされている割り込み要求が割り込み制御モジュール１２５（０）〜１２５（Ｎ）にあるか否かのみの情報が集約されていた。しかし、優先度のレベルに対応して割り込み要求の有無を確認したい場合には、このＰＭＲＲにおいて割り込み要求の優先度レベルに対応するレジスタの値を読み出すことで、プロセッサは、ＰＭＲ１２１でマスクされている割り込み要求の有無を優先度のレベル毎に確認することができる。その結果、マスクされている割り込み要求が複数ある場合、前述のように優先度の高いものを自動的に処理するのではなく、優先度のレベルに応じて処理するか否かを決定できる。例えば、マスクされている割り込み要求の優先度が高い場合であっても、必要がある場合には、処理できないように設定が可能となる。
【００４１】
図９は、第１の実施形態の第１の変形例に係る実装例を示す図である。図９の実装例は、図６に示す実装例に加え、比較回路１６０（Ｎ）、ＯＲ回路１３６、及びＰＭＲＲ１７０が配設されている。比較回路１６０（Ｎ）は、割り込み制御モジュール１３７（Ｎ）毎に設けられている。ここで、割り込み制御モジュールの番号が１３７（Ｎ）となっているのは、図６に示す第１の実施形態の割り込み制御モジュール１２５（Ｎ）と比べて、比較回路１６０（Ｎ）が個々の割り込み制御モジュールに付加されているからである。この点の詳細は後述する。その他の構成及び機能については、図６に示す実施例と同様である。なお、一点鎖線で囲まれた領域は、割り込み制御モジュールユニット１５１を示す。ここで、ＯＲ回路１３６が複数設置されていることも、図６に示す第１の実施形態と異なる点である。以下に、図９に示す実装例について説明するが、信号Ｃが出力されるまでの構成については、図６で示した実装例の説明と同様であるので説明を割愛する。
【００４２】
比較回路１６０（Ｎ）は、信号Ｃから出力された割り込み要求の優先度レベルを振り分ける機能を有している。比較回路１６０（Ｎ）は、比較器１６１（０）〜１６１（１５）、及びＡＮＤ回路１６２（０）〜１６２（１５）を有している。本変形例では、優先度が１６レベルの場合について説明するため、比較器及びＡＮＤ回路が各々１６個あるが、１６個に限る必要はない。比較器１６１（０）〜１６１（１５）は、チャネルに設定されている優先度を調べる比較器である。即ち、優先度設定レジスタ１２２に設定されている優先度情報を読み出し、優先度に対応する比較器１６１（０）〜１６１（１５）のいずれかに格納する。例えば、チャネルの設定が優先度９であれば、優先度設定レジスタ１２２から優先度９を示す情報が出力され、比較器１６１（９）の出力が"１"となる。この時、比較器１６１（９）以外の比較器の出力は"０"である。次に、ＡＮＤ回路１６２（０）〜１６２（１５）は、ＰＭＲ１２１でマスクされている割り込み要求、即ち信号Ｃから出力された割り込み要求がどの優先度に該当するか確認する論理回路である。ＡＮＤ回路１６２（０）〜１６２（１５）では、比較器１６１（０）〜１６１（１５）から出力された情報と論理回路１３０から出力された信号Ｃを入力し、信号Ｃの優先度を判定する。
【００４３】
比較器１６１（０）〜１６１（１５）からの出力はどれか１つしか"１"にならない。従って、信号Ｃが"１"を示す場合、ＡＮＤ回路１６２（０）〜１６２（１５）のどれか１つが"１"となる。ＡＮＤ回路１６２（０）〜１６２（１５）から出力された情報は、優先度に応じた数のＯＲ回路１６３（０）〜１６３（１５）に出力される。ＯＲ回路１６３（０）〜１６３（１５）では、他の割り込み制御モジュール１３７（Ｎ）から出力された割り込み要求が優先度レベル毎に集約される。そして、優先度レベル毎の割り込み要求の有無が、ＰＭＲＲ１７０に出力される。ＰＭＲＲ１７０では、割り込み要求の優先度レベルに対応するレジスタに割り込み要求の有無を示すフラグが格納される。従って、ＰＭＲＲ１７０のレジスタの値を読み出すことで、プロセッサ１１０は、ＰＭＲ１２１でマスクされている割り込み要求の有無を優先度のレベル毎に確認することができる。なお、優先度のレベル数が少なく、ＰＭＦ１４０とＰＭＲＲ１７０を共に備える必要がない場合には、ＰＭＦ１４０に代えてＰＭＲＲ１７０を設けることもできる。なお、ここに述べた割り込み要求も、前述のように信号Ｃまでは第１の実施形態で詳しく説明したものと同様に、ＣＰＵ１１０において現在処理中の割り込み要求の優先度と同等以上の優先度をもつ割り込み要求が、その対象となっている。従って、第１の変形例においても、このような相対的に重要度の高い割り込み要求の有無を優先度のレベル毎に確認するものであると言える。
【００４４】
また、第１の実施形態の第２の変形例として、複数の割り込み要求をグループ化し、グループ単位でマスクが設定されている場合、グループ数に応じてマスクされている割り込み要求の有無を格納するレジスタを設けることも可能である。その場合の構成例は省略するが、図９を用いて説明することが可能である。即ち、図９に示す比較器１６１（０）〜１６１（１５）、ＡＮＤ回路１６２（０）〜１６２（１５）、ＯＲ回路１６３（０）〜１６３（１５）、及びＰＭＲＲ１７０のレジスタの数が、グループの数に応じて配設される。更に、優先度設定レジスタ１２２の代りにグループ情報を設定するレジスタ、及びＰＭＲ１２１の代りにグループ単位のマスク情報を設定するレジスタを設ける。このような構成により、グループ毎にマスクされている割り込み要求の有無をＰＭＲＲ１７０に格納することが可能である。その結果、プロセッサ１１０は、グループ毎にマスクされている割り込み要求の有無を確認することが可能となる。
【００４５】
また、本発明の割り込み制御回路を図２を用いて他の観点から述べると、複数の割り込み要求について、夫々の割り込み要求に設定された優先度を保持する優先度設定レジスタ１２２と、夫々の優先度に属する割り込み要求をマスクすべきか否かを指定する情報を保持する優先度マスクレジスタ、つまりＰＭＲ１２１と、複数の割り込み要求について、夫々優先度設定レジスタ１２２及び優先度マスクレジスタ１２１の情報に基づいてマスクすべきか否かを判定し、この判定結果に従って夫々の割り込み要求をマスクするマスク手段、つまり割り込み制御モジュールユニット１５０と、前記マスク手段の判定結果に基づいて、マスクされている割り込み要求の有無を示す優先度マスクフラグ、つまりＰＭＦ１４０と、を備える割り込み制御回路ということもできる。このような構成により、マスクされている割り込み要求の有無を容易に検出することができる。
【００４６】
なお、前述の第１の変形例の割り込み制御回路の割り込み制御モジュールユニット１５１を用いれば、マスクされている割り込み要求の有無を、割り込み要求の優先度のレベル毎に検出することが可能になる。同様に、第２の変形例では、マスクされている割り込み要求の有無を、割り込み要求に設定された割り込み要求のグループ毎に検出することも可能である、と既に述べたが、これは変形の実施例の一例であって、他の手段により同様な機能を持たせることもできる。
【００４７】
このように、ＰＭＲ１２１でマスクされている割り込み要求の有無を検出するＰＭＦ１４０等を設けることにより、プロセッサから可視なレジスタを設定することとなる。従って、プロセッサは、割り込み要求の存在の有無を容易に読み出すことが可能となる。更に、優先度に応じた処理をすることも可能となる。
【００４８】
発明の実施の形態２．
次に、図面を参照し、本発明の第２の実施形態について説明する。第２の実施形態は、本発明に係る割り込み制御回路を、ＬＳＩ等の半導体素子に１チップ形成された回路として例を示すものであることは、第１の実施形態と同様である。第２の実施形態は、複数のプロセッサによって制御される組み込みシステムであることに特徴を有している。
【００４９】
図面を参照し、第２の実施形態について説明する。図１０は、第２の実施形態に係る割り込み制御回路を有する半導体装置の構成図を示したものである。半導体装置の構成要素や動作原理等、第１の実施形態と同様のものは説明を省略する。
【００５０】
図１０に示すように、半導体装置２００は、二つのプロセッサ１１０、２１０、割り込み制御回路１２０、２２０、リソース３００、及びこれらを接続し、命令やデータ等のやり取りを行うシステムバス４００、割り込み制御回路１２０、２２０とプロセッサ１１０、２１０を直接接続する信号線４１０、４２０、４３０、４４０等を有している。更に、これらを動作させるための電源配線、入出力端子等を有している。なお、電源配線や入出力端子等は図示していない。第２の実施形態では、プロセッサ１１０に割り込み制御回路１２０、プロセッサ２１０に割り込み制御回路２２０がそれぞれ割り当てられている。リソース３００は、二つのプロセッサ１１０、２１０で共有して使用されている。
【００５１】
ここで、半導体装置２００が、例えば電子制御機器の制御を行う組み込みシステム等に用いられるものとして例示的に述べられることは、第１の実施形態と同様である。プロセッサ１１０及び２１０は、電子制御機器のシステム制御や、センサから入力された情報によるデータの演算処理、システムの自己診断、及びデータのバックアップ等の割り込み処理を実行する。割り込み制御回路１２０及び２２０は、それぞれプロセッサ１１０及び２１０への割り込み処理を制御する回路である。リソース３００は、割り込み処理を実行するために必要な機能であり、タイマー、メモリ、及びシリアル通信機構等を示している。
【００５２】
各々のリソースは、必要に応じてシステムバス４００と接続し、システムバス４００を介してプロセッサ１１０、２１０や、割り込み制御回路１２０、２２０、更にリソース３００の相互間でデータや命令のやり取りを行うことは第１の実施形態と同様である。また、各々のリソースには必要に応じて入出力端子が設けられている。なお、必要に応じてシステムバス４００を経由せず、所定の回路間に直接的にデータ等をやり取りするようにしても良いのは勿論であるが、煩雑になるので図示しない。
【００５３】
例えば、リソース３００は、リソースＡ３０１、リソースＢ３０２、リソースＣ３０３、及びリソースＤ３０４を有していることについては、第１の実施形態と同様である。なお、リソースの数や機能については、半導体装置２００の使用用途に応じて変更が可能であることはいうまでもない。また、二つのプロセッサでは、複数の割り込み処理が並列に実行される。プロセッサの数については、二つ以上の複数であってもかまわない。なお、上述した半導体装置２００は特に複数のＣＰＵを有するマイクロコントローラとも呼称され、更に広義には、複数のＣＰＵを有するマイクロコンピュータとも捉えられる。
【００５４】
割り込み制御回路１２０、２２０は、更に、割り込み処理の実行中に、割り込み処理によりマスクされている割り込み要求の有無を検出する検出手段である割り込み制御モジュールユニット１５０、２５０と、この割り込み要求の有無を示す優先度マスクフラグ１４０、２４０等を備えることは第１の実施形態と同様である。これらの構成、動作の詳細についても、第１の実施形態と同様である。第２の実施形態では、第１の実施形態で示す効果に加え、更に以下のような効果が得られる。以下では、マルチプロセッサシステムにおける従来課題を説明すると共に、第２の実施形態における効果について説明する。
【００５５】
デュアルプロセッサを始めプロセッサが複数形成されたマルチプロセッサシステムにおいて、複数のプロセッサで共有しているメモリや周辺機器（以下、リソースと称す）へのアクセスは、プロセッサ間で競合する場合がある。ある割り込み処理に必要なリソースは、その処理が完了するまで独占的に使用できなければ、正しい処理結果を得られない可能性がある。そこで、例えばプロセッサ上で実行されるＯＳがリソースの使用状態を管理し、ＯＳから使用許可を得て始めてリソースにアクセスできるような仕組みが用いられている。
【００５６】
図１１は、複数のプロセッサで共有するリソースを使用して処理を行う場合の動作例を時間経過に従って示した図である。図１１では、リソースＡとリソースＢを使用する割り込み要求が、割り込み許可を得るまでの時間経過を示している。始めに、割り込み要求の実行が開始されると、リソースＡの使用許可を得てリソースＡをロックする。ここではＯＳからリソースの使用許可を得たことを、リソースをロックしたと称する。その後、割り込み要求は、リソースＢの使用許可を得てリソースＢをロックする。例えば、リソースＢが他の割り込み処理に使用されている場合、その処理が完了するまでリソースＢにアクセスすることができない。リソースの使用状態を管理し、リソースへのアクセスを制御する仕組みが用いられているためである。その仕組みにＰＭＲを用いることが可能である。
【００５７】
リソースへのアクセスを制御するためには、ＯＳレベルとアプリケーションレベルに分類される割り込み要求のアクセスを制限することが必要である。即ち、リソースを使用している間、他の割り込み要求に実行されないようＰＭＲによってマスクする。具体的には、先に開始された割り込み処理は、後から発生し、同じリソースを使用する他の割り込み要求をマスクするためにＰＭＲに適切な値を設定する。図４に示したように、ＯＳレベルとアプリケーションレベルに分類される割り込み要求は、優先度４から優先度１５である。よって、割り込み優先度４から１５の割り込み要求を全てマスクするようＰＭＲを設定する。即ち、ＰＭＲの４番目から１５番目のビットに"Ｈ"を書き込み、それ以外のビット（即ち、０番目から３番目）に"Ｌ"を書き込む。
【００５８】
しかし、割り込み優先度４から１５の割り込み要求を全てマスクする場合、リソースＢの獲得待ちをしている割り込み要求よりも優先度の高い他の割り込み要求がマスクされる場合がある。従って、リソースの獲得待ちをしている間に、処理しなければならない他の割り込み要求があるか否かを確認する必要がある。
【００５９】
従来、リソースの獲得待ちをしている間、マスクされている他の割り込み要求の有無を確認するには、前述したように、割り込み要求が保管されるレジスタを一つ一つ確認する方法がある。その他にも、ＰＭＲによる設定でマスクされている割り込みを許可し、たまっている割り込みがあればそれを受け付けて処理を行うことも可能である。この従来方法について、図１２及び図１３の簡便なタイミング図を用いて説明する。図１２及び図１３では、複数の割り込み処理が並列に動作するマルチプロセッサ環境を例に説明する。ここでは、５つの割り込み処理がプロセッサ１とプロセッサ２で実行される場合を考える。ここで、それぞれの図の５つの割り込み処理の時間軸は同一の時間軸である。ただし、プロセッサ間でのリソース共有方法は別途定められており、そのために必要な時間や割り込み処理の切り替え時間は図中に示さない。図中において、プロセッサ１では割り込み処理１が実行されており、プロセッサ２では割り込み処理２がリソースＢを使用して実行されている。
【００６０】
図１２を用いて、リソースの獲得待ちの間に、他の割り込み処理が存在する場合の処理動作について説明する。実行中の割り込み処理１より優先度の高い割り込み処理３が発生した場合、ａにおいて割り込み要求が発生し、割り込み処理１が中断される（ｂ）。そして、ｃにおいて割り込み処理３が起動される。割り込み処理３はリソースＡとＢを使用するため、ｄにおいてＰＭＲを設定し、他の割り込み要求をマスクする。その後、割り込み処理３はｅにおいてリソースＡを獲得するが、割り込み処理２でリソースＢが使用中のため、リソースＢを獲得するためしばらく待つ必要がある。この時、ＰＭＲでマスクしている他の割り込み要求の有無を確認する場合、ｆにおいて獲得していたリソースＡを開放し、ｇにおいてＰＭＲによるマスクを解除する。ここでリソースＡを開放するのは、リソースを獲得している割り込み処理がそのリソースを開放する前に他の割り込み処理に割り込まれ、獲得していたリソースの取り合いとなるとプロセッサでの処理がデッドロックとなってしまうためである。
【００６１】
一方、プロセッサ１が他の割り込み要求の有無を確認している間に、ｈにおいてプロセッサ２の割り込み処理２がリソースＢを開放し、ｉにおいて実行を終了する。プロセッサ２では、割り込み処理４がｊにおいて起動する。割り込み処理４がリソースＡを使用する場合、ｋにおいて開放されているリソースＡを獲得する。図１２では、割り込み処理５が存在していたため、ｌにおいて割り込み要求有と判断し、割り込み処理３の実行が中断される（ｍ）。そして、ｎにおいて割り込み処理５が起動され割り込み処理を実行する。ｐにおいて割り込み処理５が終了すると、ｑにおいて割り込み処理３は再開するが、リソースＡは割り込み処理４に使用されているため、ｒにおいて再度ＰＭＲを設定し、リソースＡの獲得待ちから再開する。
【００６２】
一方、図１３は、リソースの獲得待ちの間に、他の割り込み処理が存在しなかった場合の処理動作について説明する。ｋまでは図１２と同じ動作であるため、説明を省略する。図１３では、割り込み処理５が存在していなかったため、ｌにおいて割り込み要求無と判断し、ｍにおいてＰＭＲを再度設定し、割り込み処理３を再開しようとする。しかし、割り込み処理４において、リソースＡが使用されているため、割り込み処理３はリソースＡの獲得待ちから再開することになる。
【００６３】
図１２及び図１３では、あるかどうかわからない割り込み要求のために、割り込み処理３は一度獲得したリソースＡの使用を一時的に放棄することになる。マルチプロセッサシステムにおいては、その間に他のプロセッサで実行されている割り込み処理がリソースＡを獲得してしまう可能性がある。マスクされている割り込み要求が存在した場合は仕方がないが、存在しなかった場合、割り込み処理３は再度リソースＡの獲得を待たなければならなく、処理効率が低下するという問題が生じていた。
【００６４】
そこで、本発明の第２の実施形態に係る割り込み制御回路での動作を図１４及び図１５を用いて説明する。図１４は、リソースの獲得待ちの間に、他の割り込み要求が存在する場合の処理動作を示す。ｅまでは図１２と同じ動作であるため、説明を省略する。その後、リソースＢを待つ間に一定の時間が経過して、他の割り込み要求の確認を行う場合、ｆに示すようにＰＭＦの値を確認する。図１４では、他の割り込み処理が存在する場合の動作を示すため、ＰＭＦの値は"１"を示している。従って、割り込み処理３より優先度の高い割り込み要求が入力され、ＰＭＲでマスクされていることを示している。従って、ｇで割り込み処理３は獲得していたリソースＡを開放し、ｈにおいてＰＭＲによるマスクを解除する。そして、ｊにおいて割り込み処理５を起動して割り込み処理を開始する。一方、割り込み処理２では、ｋにおいてリソースＢを開放しｌにおいて実行を終了すると、ｍにおいて割り込み処理４が起動する。割り込み処理４がリソースＡを使用する場合、ｎにおいて開放されているリソースＡを獲得する。割り込み処理５はｐにおいて実行を終了し、再開された割り込み処理３はｑにおいてＰＭＲを設定し、他の割り込み要求を再度マスクして、リソースＡの獲得を待つ。
【００６５】
また、図１５は、リソースの獲得待ちの間に、他の割り込み要求が存在しなかった場合の処理動作を示す。ｅまでは図１４と同じ動作であるため、説明を省略する。図１５では、割り込み処理３より優先度の高い割り込み要求がＰＭＲでマスクされていないため、ｆにおいてＰＭＦの値は"０"を示している。従って、ｇのように割り込み処理３はそのままリソースＡを保持し続ける。その後、割り込み処理２がｈでリソースＢを開放しｉで実行を終了すると、割り込み処理３はｋでリソースＢを獲得する。従って、割り込み処理３はリソースＢを獲得したため、割り込み処理を実施する。割り込み処理４は、ｊで起動されるが、リソースＡを割り込み処理３が使用中であるため、リソースＡの開放を待つ。割り込み処理３は、ｌでリソースＡ、ｍでリソースＢを開放し、ｎで割り込み処理の実行を終了する。従って、割り込み処理１は、ｐにて実行を再開すると同時に、割り込み処理４は、ｑでリソースＡを獲得する。
【００６６】
このように、図１５では図１３と比べ、割り込み処理３が、ＰＭＲによる割り込み要求の有無を確認する間リソースＡを保持したままであるため、確認中に開放したリソースＡを他の割り込み処理に獲得されることなく、確認後すみやかに割り込み処理３の処理が続行することができる。従って、割り込み処理が効率的に実行されることとなる。
【００６７】
以上のように、ＰＭＦを設けることにより、実行中の割り込み処理が、あるかどうかわからない割り込み要求の確認のため、一度獲得したリソースを開放する必要がなくなる。従って、実行中の割り込み処理がリソースを他の割り込み処理に奪われることがなくなる。その結果、リソースを奪われた場合に生じる再獲得の待機時間が減り、タスクの処理効率が上昇する。従って、第１の実施形態に加え、更に効率的に割り込み処理を行うことが可能である。
【００６８】
また、割り込み要求が保管されているレジスタを個別に確認する必要がなくなるため、確認にかかる時間を削減できることは第１の実施形態と同様である。
【００６９】
また、割り込み処理をグルーピングする場合、プロセッサは、ＰＭＦを読み出すことにより、グループ毎にマスクされている割り込み処理の有無を確認できることは第１の実施形態と同様である。
【００７０】
更に、ＰＭＲでマスクされている割り込み要求の有無を検出するＰＭＦを設けることにより、プロセッサから可視なレジスタを設定することとなる。従って、プロセッサは、割り込み要求の存在の有無を容易に読み出すことができることは第１の実施形態と同様である。
【００７１】
発明の実施の形態３．
次に、図面を参照し、本発明の第３の実施形態について説明する。第３の実施形態は、本発明に係る割り込み制御回路が、プロセッサ等と別の半導体素子に形成された回路として例を示すものである。図１６は、第３の実施形態に係る割り込み制御回路を有するプロセッサ制御システムの構成図を示したものである。
【００７２】
図１６に示すように、プロセッサ制御システム５００は、プロセッサ５１０、割り込み制御回路５２０、リソース３００、及びこれらを接続し、命令やデータ等のやり取りを行うシステムバス５３０、割り込み制御回路５２０とプロセッサ５１０を直接接続する信号線５６０、５７０等を有している。更に、図示しないがこれらを動作させるための電源配線、入出力端子等を有していることは、第１の実施形態と同様である。第３の実施形態では、プロセッサ５１０、割り込み制御回路５２０が別の半導体素子に形成されていることに特徴を有している。割り込み制御回路５２０の構成要素や動作原理等は、第１の実施形態と同様であるため、説明を省略する。
【００７３】
なお、第３の実施形態に係る割り込み制御回路５２０も、第２の実施形態で示したように複数のプロセッサによって制御されることが可能である。また、リソース３００は、割り込み制御回路５２０、或いはプロセッサ５１０と同じチップに形成されていることが可能である。或いは、リソース３００が、割り込み制御回路５２０及びプロセッサ５１０が形成されているチップと、別のチップに形成されることももちろん可能である。
【００７４】
各々のリソースは、必要に応じてシステムバス５３０と接続し、システムバス５３０を介してプロセッサ５１０や、割り込み制御回路５２０、更にリソース相互間でデータや命令のやり取りを行うことは第１の実施形態と同様である。また、各々のリソースには必要に応じて入出力端子が設けられている。なお、必要に応じてシステムバス５３０を経由せず、所定の回路間に直接的にデータ等をやり取りするようにしても良いのは勿論であるが、煩雑になるので図示しない。
【００７５】
以上のような構成によって、プロセッサ５１０と割り込み制御回路５２０が別の半導体素子に形成されているプロセッサ制御システム５００においても、前述した第１の実施形態及び第２の実施形態と同様の効果を得ることが可能である。
【００７６】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。従って、本発明の適用例としては、半導体装置１００、２００、及びプロセッサ制御システム５００に限らず、割り込み制御回路を有するプロセッサ制御システム等、組み込みシステムを利用するあらゆる機器に適用可能であることはもちろんである。
【符号の説明】
【００７７】
１００  半導体装置
１１０  プロセッサ、  １２０  割り込み制御回路、
１２１  ＰＭＲ、  １２２  優先度設定レジスタ、  １２３  出力信号生成回路、
１２４  割り込み制御レジスタ、
１２５（０）〜１２５（Ｎ）  割り込み制御モジュール、
１２６  フラグレジスタ、  １２７  マスクレジスタ、
１２８、１２９、１３０  論理回路、  １３１  ＯＲ回路、
１３２  セレクタ、  １３５、１３６  第１の出力回路
１３７（０）〜１３７（Ｎ）  割り込み制御モジュール、
１４０  ＰＭＦ、
１５０、１５１  割り込み制御モジュールユニット、
１６０（０）〜１６０（Ｎ）  比較回路、
１６１（０）〜１６１（Ｎ）  比較器、
１６２（０）〜１６２（Ｎ）  ＡＮＤ回路、
１６３（０）〜１６３（Ｎ）  ＯＲ回路、
１７０  ＰＭＲＲ、
２００  半導体回路
２１０  プロセッサ、  ２２０  割り込み制御回路、
２４０  ＰＭＦ、  ２５０  割り込み制御モジュールユニット、
３００  リソース、
３０１  リソースＡ、  ３０２  リソースＢ、
３０３  リソースＣ、  ３０４  リソースＤ、
４００  システムバス、
４１０、４１１、４１２、４３０  信号線、
４２０、４２１、４２２、４４０  信号線、
５００  プロセッサ制御システム、
５１０  プロセッサ、  ５２０  割り込み制御回路、
５３０  システムバス、５４０  ＰＭＦ、
５５０  割り込み制御モジュールユニット、
５６０、５７０  信号線  
【図１】
0005166590.tif 000002
【図２】
0005166590.tif 000003
【図３】
0005166590.tif 000004
【図４】
0005166590.tif 000005
【図５】
0005166590.tif 000006
【図６】
0005166590.tif 000007
【図７】
0005166590.tif 000008
【図８】
0005166590.tif 000009
【図９】
0005166590.tif 000010
【図１０】
0005166590.tif 000011
【図１１】
0005166590.tif 000012
【図１２】
0005166590.tif 000013
【図１３】
0005166590.tif 000014
【図１４】
0005166590.tif 000015
【図１５】
0005166590.tif 000016
【図１６】
0005166590.tif 000017