以下に、本発明の好ましい実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、説明の明確化のため、必要に応じて重複説明は省略されている。
発明の実施の形態1.
図面を参照し、第1の実施形態について説明する。第1の実施形態は、本発明に係る割り込み制御回路を、LSI(大規模集積回路:Large Scale Integrated Circuit)等の半導体素子に1チップ形成された回路として例を示すものである。図1は、第1の実施形態に係る割り込み制御回路を有する半導体装置の構成図を示したものである。図1に示すように、半導体装置100は、プロセッサ110、割り込み制御回路120、リソース300、及びこれらを接続し、命令やデータ等のやり取りを行うシステムバス400、割り込み制御回路120とプロセッサ110を直接接続する信号線410、420等を有している。更に、これらを動作させるための電源配線、入出力端子等を有している。なお、電源配線や入出力端子等は図示していない。
第1の実施形態では、例えば電子制御機器の制御を行う組み込みシステム等に用いられる半導体装置100について、例示的に述べる。この場合、プロセッサ(CPU:Central Processing Unit)110は、電子制御機器のシステム制御や、センサから入力された情報によるデータの演算処理、システムの自己診断、及びデータのバックアップ等の割り込み処理を実行する。割り込み制御回路120は、プロセッサ110への割り込み要求を制御する回路である。リソース300は、割り込み処理を実行するために必要な機能であり、タイマー、メモリ、及びシリアル通信機構等を示している。
各々のリソースは、必要に応じてシステムバス400と接続し、システムバス400を介してプロセッサ110や、割り込み制御回路120、更にリソース300の相互間でデータや命令のやり取りを行っている。また、各々のリソースには必要に応じて入出力端子が設けられている。なお、必要に応じてシステムバス400を経由せず、所定の回路間に直接的にデータ等をやり取りするようにしても良いのは勿論であるが、煩雑になるので図示しない。より説明を分かりやすくするために、これらリソースを例示して述べると、例えば、リソース300は、リソースA301、リソースB302、リソースC303、及びリソースD304を有している。また、より例示的に述べるとリソースA301がタイマー1、リソースB302がメモリ、リソースC303がタイマー2、及びリソースD304がシリアル通信機構(以下、シリアルと略称する)で構成されている。なお、リソースの数や機能については、半導体装置100の使用用途に応じて変更が可能であることはいうまでもない。なお、上述した半導体装置100はマイクロコントローラとも呼称され、更に広義には、マイクロコンピュータとも捉えられる。
割り込み制御回路120は更に、割り込み処理の実行中に割り込み処理によりマスクされている割り込み要求の有無を検出する検出手段である割り込み制御モジュールユニット150と、この割り込み要求の有無を示す優先度マスクフラグ140(以下、PMF(Priority Mask Flag)と称す)等を備える。これらの構成、動作の詳細は後述する。すでに述べたように、割り込み制御回路120に割り込み制御モジュールユニット150とPMF140とを備えることが本発明を第1の観点から見た場合の中核的な部分である。また、このPMF140のフラグの状態、つまりPMF140のデータは、システムバス400を介してプロセッサ110から読み出し可能である。これについても詳細は後述する。なお、PMF140のデータは、システムバス400に限らず、プロセッサ110からPMF140の情報を読み出す専用バスを設けることで読み出すことも可能である。
図2は、半導体装置100における割り込み制御回路120を更に詳細に示した図である。割り込み制御回路120は、優先度マスクレジスタ(Priority Mask Register:以下、PMRと記す)121、優先度設定レジスタ122、出力信号生成回路123、PMF140を備えた割り込み制御レジスタ124、及び複数の割り込み制御モジュール125(0)〜125(N)(N:自然数)と、そのモジュール群の第1の出力を処理してPMF140へ出力する第1の出力回路135などからなる割り込み制御モジュールユニット150、とを有している。また、プロセッサ110からPMF140の情報を読み出す専用バスを設ける場合、信号線411、421が設けられる。なお、割り込み制御モジュールユニット150についての詳細は後述する。
割り込み制御回路120では、複数の割り込み要求信号INT(0)〜INT(N)が、割り込み制御モジュールユニット150の夫々の割り込み制御モジュール125(0)〜125(N)に入力される。割り込み要求信号INT(0)〜INT(N)は、半導体装置100内部で発生した要求信号に限らず、半導体装置100の外部から要求される場合もある。それらの要求の中からプロセッサ110で処理する信号を選択するため、優先度設定レジスタ122によって各割り込み要求に優先度が設定される。そして、PMR121によって、どの優先度に属する割り込み要求をマスクすべきか否かが決定される。その結果、出力信号生成回路123は、PMR121によってマスクされなかった割り込み要求の中から最も優先度が高い割り込み要求を選択し、それに対応する割り込み要求信号及び割り込み識別信号をプロセッサ110に出力する。一方、割り込み制御レジスタ124は、プロセッサ110からの要求に応じて、PMR121によってマスクされている割り込み要求の有無を検出し、プロセッサ110に出力する。
複数の割り込み制御モジュール125(0)〜125(N)は、割り込み要求信号INT(0)〜INT(N)に対応して設けられている。割り込み制御モジュール125(0)〜125(N)は、入力された割り込み要求信号INT(0)〜INT(N)がプロセッサ110によって受け付けられるまで保持する。そして、割り込み要求に設定された優先度に応じて出力信号生成回路123に伝達するか否かを決定する。
優先度設定レジスタ122は、複数の割り込み制御モジュール125(0)〜125(N)に入力する割り込み要求信号INT(0)〜INT(N)に設定された優先度を記憶するレジスタである。この優先度は、例えば、割り込み要求に対応する処理に要求されるリアルタイム性の高低等に応じて設定することが可能である。
図3は、PMR121の説明図を示している。PMR121は、優先度設定レジスタ122によって設定された優先度に属する割り込み要求をマスクすべきか否かを指定する情報を保持する。PMR121は、割り込み優先度のレベル数に応じたビット数を有するレジスタとして構成される。PMR121では、各ビットにビット番号及びビット名称を設け、各々に割り込み優先度を対応させている。例えば、特定の優先度(例えば、優先度9)を有するビット番号にマスクするというフラグ1が立っている場合は、優先度9に設定されている割り込み要求がマスクされている。各ビット値には、それぞれのビットに対応する割り込み優先度をマスクするという情報("H")、又は割り込み処理をマスクしないという情報("L")が書き込まれている。図3の例では、優先度のレベルは16あるので、PMR121は、16ビットで構成されている。割り込み処理をマスクするという情報("H")が"1"に対応し、割り込み処理をマスクしないという情報("L")が"0"に対応し、ビットに格納されている。初期値は0であり、図3では、初期状態を示している。このようにレジスタのビット数は割り込み優先度のレベル数に応じた数としている。
図4は、システムが必要とする割り込み要求の分類と優先度をPMR121に割り当てた例を示した図である。例えば、OSレベルとアプリケーションレベルに分類される割り込み要求をマスクしたい場合、割り込み優先度4から優先度15の割り込み要求を全てマスクするよう設定する。従って、図3に示すPMR121の4番から15番のビット値に"H"を示す"1"を書き込み、それ以外のビット(即ち、0番から3番のビット値)に"L"を示す"0"を書き込む。PMR121の内容は、プロセッサ110の処理状況に応じて書き換えが可能である。従って、マスクする割り込み要求を随時変更することが可能である。
出力信号生成回路123は、割り込み制御モジュール125(0)〜125(N)から、対応する割り込み要求が発生した旨の信号が入力されると、最も優先度が高い割り込み要求を選択し、その割り込み要求に対応する割り込み要求信号と、割り込み識別信号とをプロセッサ110に出力する。プロセッサ110は、いずれかの割り込みを受け付けると、その割り込みに対応した処理を開始する。
図5を参照して、割り込み制御レジスタ124について説明する。図5は、第1の実施形態に係る割り込み制御レジスタの一例として示すものであり、ICSR(Interrupt Control Status Register)と称される。このレジスタは、例えば16ビットを有し、図5ではビット0、1、2、4、5、6及び8に機能が割り当てられている。このレジスタのビット番号8には、優先度マスクフラグ(PMF)140が割り当てられている。PMF140は、PMR121でマスクされている他の割り込み要求の状態を監視し、その結果を格納するフラグである。PMF140は、割り込み処理に設定された優先度に応じてマスクされている割り込み要求が割り込み制御モジュール125(0)〜125(N)に存在するか否かを示す機能を有している。プロセッサ110はPMF140を読み出すことによって、PMF140が"H"の場合はPMR121の設定でマスクされている割り込み要求が存在することを検出する。PMF140が"L"の場合はそれに該当する割り込み要求が存在しないことを検出することができる。なお、図5においてビット名称が"0"のビットは、機能が割り当てられていないことを示す。また、PMF以外のA、B、及びC等のビット名称の機能は、本発明と無関係であるので説明は省略する。
図6を参照し、PMF140にPMR121でマスクされている割り込み要求の有無を格納する方法の一例を説明する。図6では、図2に示す割り込み制御回路120の割り込み制御モジュール125(0)〜125(N)の構成を更に詳細に示している。複数の割り込み制御モジュール125(0)〜125(N)は、個々にフラグレジスタ126、マスクレジスタ127、三つの論理回路128、129、130、及びセレクタ132を有している。更に、複数個の割り込み制御モジュール125(0)〜125(N)、及びOR回路131によって、割り込み制御モジュールユニット150が構成されている。なお、OR回路131は、図2に示した第1の出力を処理してPMF140へ出力する第1の出力回路135を具体的に実現した一例である。
フラグレジスタ126は、入力する割り込み要求がプロセッサ110によって受け付けられるまで、割り込み要求を保持する。マスクレジスタ127は、個別に割り込み要求をマスクする機能を有している。マスクレジスタ127の値が"H"の場合、フラグレジスタ126に保持された割り込み信号はマスクされる。即ち、論理回路128からは出力されない。つまり、論理回路128の出力は"L"になる。
また、論理回路128には、現在CPU110で処理中の割り込み処理の優先度情報と、優先度設定レジスタ122に設定されている優先度情報が入力される。論理回路128では、現在CPU110で処理中の割り込み処理の優先度が優先度設定レジスタ122に設定されている優先度と同等、又はより高い場合、論理回路128の信号Bの出力がフラグレジスタ126の入力がたとえ"H"であり、マスクレジスタ127が"L"(マスクしない)であっても、"L"となる。つまり、出力されない。従って、フラグレジスタ126に割り込み要求が入力され、"H"がフラグレジスタ126から出力された場合、フラグレジスタ126に入力した割り込み要求に対して、マスクレジスタ127がマスクしない場合で、かつ現在CPU110で処理中の割り込み処理の優先度が優先度設定レジスタ122で設定された優先度より低い場合には、論理回路128の出力信号Bは"H"になる。
一方、割り込み要求は、優先度設定レジスタ122で設定されている割り込み優先度に従ってPMR121でマスクするか否かも選択される。従って、PMR121でマスクするか否かを示す信号Aが、PMR121から読み出しセレクタ132を介して出力される。即ち、PMR121によってマスクされる場合、信号Aは"H"となり、マスクされない場合、信号Aは"L"となる。
ここで、信号Bが"H"(論理回路128でマスクされない)であり、信号Aが"L"(PMR121でマスクされない)である場合、割り込み要求はマスクされない。従って、論理回路129の出力は"H"となり、更に他の割り込み要求との競合制御が行われた後、図2に示した出力信号生成回路123からプロセッサ110へ割り込み要求が出力される。なお、競合制御の具体的な動作については後述する。信号Bが"H"(論理回路128でマスクされない)であり、信号Aが"H"(PMR121でマスクする)である場合、割り込み要求はマスクされる。従って、論理回路129の出力は"L"となり、割り込み要求は出力されない。それと同時に、論理回路130の信号Cは"H"となる。信号Cは、割り込み制御モジュール125(0)〜125(N)に、PMR121にマスクされている割り込み要求があるか否かを示す信号である。従って、"H"の場合、PMR121でマスクされている割り込み要求が存在することを示し、"L"の場合、PMR121でマスクされている割り込み要求が存在しないことを示す。全ての割り込み制御モジュール125(0)〜125(N)から出力される信号CをOR回路131で集約し、PMR121でマスクしている割り込み要求の有無を検出する。
即ち、複数個の割り込み制御モジュール125(0)〜125(N)と第1の出力回路135(OR回路131は、第1の出力回路135の具体例)で、割り込み制御モジュールユニット150が構成され、この割り込み制御モジュールユニット150が割り込み要求の有無を示す検出手段として機能する。そして、この検出手段の検出情報は、PFM140に格納される。割り込み要求がマスクされているか否かを示すフラグは、プロセッサ110からシステムバス400を介して読み出すことができる。なお、図6に示す割り込み制御モジュール125(0)〜125(N)や、割り込み制御モジュールユニット150の構成は第1の実施形態に係る一例を示している。従って、同様の機能を有す回路であれば、その他の構成とすることも可能である。例えば、上述では論理回路128に設けられていた現在処理中の割り込み処理より優先度の低い割り込み要求をマスクする機能を、論理回路128の出力部と論理回路129の入力部との間に別途設けることも可能である。
また、本実施例では、論理回路129からのチャネル割り込み要求は、個別に出力信号生成回路123に出力されているが、これらの出力を統合すると共に、そのうちから1のチャネル割り込み要求を選択する、いわば競合制御を行う回路を割り込み制御モジュールユニット150に設けてもよい。また、これを第2の出力回路とし、前述の第1の出力回路135を併せて、複数の割り込み制御モジュール125(N)の後段においた制御回路として構成することもできる。
以上のように、優先度設定レジスタ122とPMR121、CPU110で処理中の割り込み優先度の情報に基づいてマスクすべきか否かを判定し、その結果に従って割り込み要求をマスクすると同時に、マスクされている割り込み要求の有無を検出することが可能となる。
次に、図7を参照して、PMR121でマスクされる割り込み要求の有無に応じて割り込み要求を処理する処理動作について説明する。図7は、割り込み制御回路120に割り込み要求が入力され、PMF140にPMR121でマスクされている割り込み要求の有無を示す情報を格納し、その情報に応じて割り込み処理が実行されるまでを示すフローチャートである。なお、必要に応じて、具体的な回路構成を示していた図6等も参照して述べる。
始めに、S1において、複数の割り込み要求信号INT(0)〜INT(N)が入力される。割り込み信号は0〜N+1個のいずれかの個数が入力される。従って、図7は、複数の割り込み要求信号INT(0)〜INT(N)の処理を示すフローであるが、代表して割り込み要求信号INT(0)とINT(N)を図に示す。S2において、入力された割り込み要求信号INT(0)〜INT(N)が、図6に示すマスクレジスタ127によってマスクされているかどうか個別に選別する。(S21、S2N)。マスクレジスタ127によってマスクされている場合は、割り込み要求は、そのまま図6に示すフラグレジスタ126に保持される。マスクレジスタ127によってマスクされていない場合には、S3において更にCPU110にて現在処理中の割り込み要求の優先度(P)と優先度設定レジスタ122に設定されている優先度(X)とを比較する(S31、S3N)。なお、本説明においては、P及びXは優先度を示す数値(自然数)であり、数が少ない方が優先度が高いことを示す。従って、現在処理中の割り込み要求の優先度の方が低い場合、即ちP>Xの場合にはS4へ進む。CPU110で現在処理中の割り込み要求の優先度の方が高いか同等の場合、即ちP≦Xの場合には、図7に示すようにS1の後へ戻る。そしてS2、S3の処理が終了してからS4へ進む。S4において、更に図6に示すPMR121によってマスクされているかどうか、個別に選別される(S41、S4N)。
割り込み要求信号INT(0)〜INT(N)がPMR121によってマスクされていない場合、図6に示すようにチャネル割り込み要求が該当する割り込み制御モジュール125(N)から、図示しない出力制御回路123へ出力される。なお、複数の割り込み制御モジュール125(0)〜125(N)からチャネル割り込み要求が出された場合には、図2に示す出力制御回路123で他の割り込み要求との競合制御が行われる(S5)。詳しくは図示しないが、この競合制御は、図2に示す出力信号生成回路123で行われ、最も優先度が高い割り込み要求が選択される。その結果、選択された割り込み要求が、出力信号生成回路123からプロセッサ110へ出力される(S6)。選択されなかった他の割り込み信号は出力されず、再度競合制御が行われる。
一方、割り込み要求信号INT(0)〜INT(N)がPMR121によってマスクされている場合は、割り込み要求信号INT(0)〜INT(N)は出力されない。それと同時に、PMR121によってマスクされているという情報がOR回路131によって集められる(S7)。マスクされている信号数(D)が0の場合は、PMF140に"0"が設定される(S8)。マスクされている信号数(D)が1以上N+1以下である場合は、PMFに"1"が設定される(S9)。
なお、ここで強調しておきたいのは、前述のようにCPU110で現在処理中の割り込み要求の優先度が優先度設定レジスタ122で予め設定された優先度よりも低い場合に、PMR121によりマスクされているか否かの判断対象となるということである。換言すれば、PMF140の設定対象となるということである。従って、CPU110で現在処理中の割り込み要求の優先度が優先度設定レジスタ122で予め設定されていた優先度と同等か高い場合には、それが終了してからマスクされるか否かが決められ、マスクされればPMF140に"1"が設定されるということである。つまり、PMF140に"1"が設定されている場合の割り込み要求は、その重要度が相対的に高い割り込み要求であるともいえる。換言すればPMF140は、重要度の高い割り込み要求の有無を簡単に判別できるフラグであるとも言える。また、更に別の表現をすれば、PMF140は、CPU110が現在処理中の割り込み要求の優先度と同等以上の優先度をもつ割り込み要求がマスクされているか否かを簡便に示すフラグであるとも言え、実用上、重要な割り込み要求の有無が簡便に判る。
次に、プロセッサ110は、前述の割り込み要求(S6)を受けると、S10において、割り込み処理が開始される。S11にて、S10の割り込み処理実行中に処理待ち時間の有無をタイマー等(不図示)で確認する。処理待ち時間が無い場合は、S12にてS10の割り込み処理が続行される。処理待ち時間が有る場合は、PMF140を読み出し、PMR121によってマスクされている割り込み要求の有無を確認する(S13)。そして、PMF140の値に応じて、プロセッサ110が処理する割り込み要求を決定する。PMF140が"0"である場合(マスクされている割り込み要求が無い場合)、S12にて割り込み処理の実行が続行される。PMF140が"1"である場合(マスクされている割り込み要求が有る場合)、マスクされている割り込み要求を処理する(S14)。マスクされている割り込み要求が複数ある場合は、出力生成回路123が最も優先度の高い割り込み要求を選別し、その割り込み要求を処理する。
以上のように、プロセッサ110がPMF140を読み出すことにより、マスクされている割り込み要求の有無を検出することが可能となる。従って、プロセッサ110は、割り込み要求が保管されているレジスタを個別に確認する必要もなくなるため、確認にかかる処理時間を削減することができる。
なお、第1の実施形態の第1の変形例として、割り込み制御モジュール125(0)〜125(N)から出力される信号Cを、割り込み優先度のレベル毎に集約するレジスタをPMF140の他に設けることも可能である。図8は、信号Cを優先度のレベル毎に集約するレジスタの一例であるPMRR(Priority Masked Request Register)レジスタの仕様を示す。前述のようにPMF140には、PMR121によってマスクされている割り込み要求が割り込み制御モジュール125(0)〜125(N)にあるか否かのみの情報が集約されていた。しかし、優先度のレベルに対応して割り込み要求の有無を確認したい場合には、このPMRRにおいて割り込み要求の優先度レベルに対応するレジスタの値を読み出すことで、プロセッサは、PMR121でマスクされている割り込み要求の有無を優先度のレベル毎に確認することができる。その結果、マスクされている割り込み要求が複数ある場合、前述のように優先度の高いものを自動的に処理するのではなく、優先度のレベルに応じて処理するか否かを決定できる。例えば、マスクされている割り込み要求の優先度が高い場合であっても、必要がある場合には、処理できないように設定が可能となる。
図9は、第1の実施形態の第1の変形例に係る実装例を示す図である。図9の実装例は、図6に示す実装例に加え、比較回路160(N)、OR回路136、及びPMRR170が配設されている。比較回路160(N)は、割り込み制御モジュール137(N)毎に設けられている。ここで、割り込み制御モジュールの番号が137(N)となっているのは、図6に示す第1の実施形態の割り込み制御モジュール125(N)と比べて、比較回路160(N)が個々の割り込み制御モジュールに付加されているからである。この点の詳細は後述する。その他の構成及び機能については、図6に示す実施例と同様である。なお、一点鎖線で囲まれた領域は、割り込み制御モジュールユニット151を示す。ここで、OR回路136が複数設置されていることも、図6に示す第1の実施形態と異なる点である。以下に、図9に示す実装例について説明するが、信号Cが出力されるまでの構成については、図6で示した実装例の説明と同様であるので説明を割愛する。
比較回路160(N)は、信号Cから出力された割り込み要求の優先度レベルを振り分ける機能を有している。比較回路160(N)は、比較器161(0)〜161(15)、及びAND回路162(0)〜162(15)を有している。本変形例では、優先度が16レベルの場合について説明するため、比較器及びAND回路が各々16個あるが、16個に限る必要はない。比較器161(0)〜161(15)は、チャネルに設定されている優先度を調べる比較器である。即ち、優先度設定レジスタ122に設定されている優先度情報を読み出し、優先度に対応する比較器161(0)〜161(15)のいずれかに格納する。例えば、チャネルの設定が優先度9であれば、優先度設定レジスタ122から優先度9を示す情報が出力され、比較器161(9)の出力が"1"となる。この時、比較器161(9)以外の比較器の出力は"0"である。次に、AND回路162(0)〜162(15)は、PMR121でマスクされている割り込み要求、即ち信号Cから出力された割り込み要求がどの優先度に該当するか確認する論理回路である。AND回路162(0)〜162(15)では、比較器161(0)〜161(15)から出力された情報と論理回路130から出力された信号Cを入力し、信号Cの優先度を判定する。
比較器161(0)〜161(15)からの出力はどれか1つしか"1"にならない。従って、信号Cが"1"を示す場合、AND回路162(0)〜162(15)のどれか1つが"1"となる。AND回路162(0)〜162(15)から出力された情報は、優先度に応じた数のOR回路163(0)〜163(15)に出力される。OR回路163(0)〜163(15)では、他の割り込み制御モジュール137(N)から出力された割り込み要求が優先度レベル毎に集約される。そして、優先度レベル毎の割り込み要求の有無が、PMRR170に出力される。PMRR170では、割り込み要求の優先度レベルに対応するレジスタに割り込み要求の有無を示すフラグが格納される。従って、PMRR170のレジスタの値を読み出すことで、プロセッサ110は、PMR121でマスクされている割り込み要求の有無を優先度のレベル毎に確認することができる。なお、優先度のレベル数が少なく、PMF140とPMRR170を共に備える必要がない場合には、PMF140に代えてPMRR170を設けることもできる。なお、ここに述べた割り込み要求も、前述のように信号Cまでは第1の実施形態で詳しく説明したものと同様に、CPU110において現在処理中の割り込み要求の優先度と同等以上の優先度をもつ割り込み要求が、その対象となっている。従って、第1の変形例においても、このような相対的に重要度の高い割り込み要求の有無を優先度のレベル毎に確認するものであると言える。
また、第1の実施形態の第2の変形例として、複数の割り込み要求をグループ化し、グループ単位でマスクが設定されている場合、グループ数に応じてマスクされている割り込み要求の有無を格納するレジスタを設けることも可能である。その場合の構成例は省略するが、図9を用いて説明することが可能である。即ち、図9に示す比較器161(0)〜161(15)、AND回路162(0)〜162(15)、OR回路163(0)〜163(15)、及びPMRR170のレジスタの数が、グループの数に応じて配設される。更に、優先度設定レジスタ122の代りにグループ情報を設定するレジスタ、及びPMR121の代りにグループ単位のマスク情報を設定するレジスタを設ける。このような構成により、グループ毎にマスクされている割り込み要求の有無をPMRR170に格納することが可能である。その結果、プロセッサ110は、グループ毎にマスクされている割り込み要求の有無を確認することが可能となる。
また、本発明の割り込み制御回路を図2を用いて他の観点から述べると、複数の割り込み要求について、夫々の割り込み要求に設定された優先度を保持する優先度設定レジスタ122と、夫々の優先度に属する割り込み要求をマスクすべきか否かを指定する情報を保持する優先度マスクレジスタ、つまりPMR121と、複数の割り込み要求について、夫々優先度設定レジスタ122及び優先度マスクレジスタ121の情報に基づいてマスクすべきか否かを判定し、この判定結果に従って夫々の割り込み要求をマスクするマスク手段、つまり割り込み制御モジュールユニット150と、前記マスク手段の判定結果に基づいて、マスクされている割り込み要求の有無を示す優先度マスクフラグ、つまりPMF140と、を備える割り込み制御回路ということもできる。このような構成により、マスクされている割り込み要求の有無を容易に検出することができる。
なお、前述の第1の変形例の割り込み制御回路の割り込み制御モジュールユニット151を用いれば、マスクされている割り込み要求の有無を、割り込み要求の優先度のレベル毎に検出することが可能になる。同様に、第2の変形例では、マスクされている割り込み要求の有無を、割り込み要求に設定された割り込み要求のグループ毎に検出することも可能である、と既に述べたが、これは変形の実施例の一例であって、他の手段により同様な機能を持たせることもできる。
このように、PMR121でマスクされている割り込み要求の有無を検出するPMF140等を設けることにより、プロセッサから可視なレジスタを設定することとなる。従って、プロセッサは、割り込み要求の存在の有無を容易に読み出すことが可能となる。更に、優先度に応じた処理をすることも可能となる。
発明の実施の形態2.
次に、図面を参照し、本発明の第2の実施形態について説明する。第2の実施形態は、本発明に係る割り込み制御回路を、LSI等の半導体素子に1チップ形成された回路として例を示すものであることは、第1の実施形態と同様である。第2の実施形態は、複数のプロセッサによって制御される組み込みシステムであることに特徴を有している。
図面を参照し、第2の実施形態について説明する。図10は、第2の実施形態に係る割り込み制御回路を有する半導体装置の構成図を示したものである。半導体装置の構成要素や動作原理等、第1の実施形態と同様のものは説明を省略する。
図10に示すように、半導体装置200は、二つのプロセッサ110、210、割り込み制御回路120、220、リソース300、及びこれらを接続し、命令やデータ等のやり取りを行うシステムバス400、割り込み制御回路120、220とプロセッサ110、210を直接接続する信号線410、420、430、440等を有している。更に、これらを動作させるための電源配線、入出力端子等を有している。なお、電源配線や入出力端子等は図示していない。第2の実施形態では、プロセッサ110に割り込み制御回路120、プロセッサ210に割り込み制御回路220がそれぞれ割り当てられている。リソース300は、二つのプロセッサ110、210で共有して使用されている。
ここで、半導体装置200が、例えば電子制御機器の制御を行う組み込みシステム等に用いられるものとして例示的に述べられることは、第1の実施形態と同様である。プロセッサ110及び210は、電子制御機器のシステム制御や、センサから入力された情報によるデータの演算処理、システムの自己診断、及びデータのバックアップ等の割り込み処理を実行する。割り込み制御回路120及び220は、それぞれプロセッサ110及び210への割り込み処理を制御する回路である。リソース300は、割り込み処理を実行するために必要な機能であり、タイマー、メモリ、及びシリアル通信機構等を示している。
各々のリソースは、必要に応じてシステムバス400と接続し、システムバス400を介してプロセッサ110、210や、割り込み制御回路120、220、更にリソース300の相互間でデータや命令のやり取りを行うことは第1の実施形態と同様である。また、各々のリソースには必要に応じて入出力端子が設けられている。なお、必要に応じてシステムバス400を経由せず、所定の回路間に直接的にデータ等をやり取りするようにしても良いのは勿論であるが、煩雑になるので図示しない。
例えば、リソース300は、リソースA301、リソースB302、リソースC303、及びリソースD304を有していることについては、第1の実施形態と同様である。なお、リソースの数や機能については、半導体装置200の使用用途に応じて変更が可能であることはいうまでもない。また、二つのプロセッサでは、複数の割り込み処理が並列に実行される。プロセッサの数については、二つ以上の複数であってもかまわない。なお、上述した半導体装置200は特に複数のCPUを有するマイクロコントローラとも呼称され、更に広義には、複数のCPUを有するマイクロコンピュータとも捉えられる。
割り込み制御回路120、220は、更に、割り込み処理の実行中に、割り込み処理によりマスクされている割り込み要求の有無を検出する検出手段である割り込み制御モジュールユニット150、250と、この割り込み要求の有無を示す優先度マスクフラグ140、240等を備えることは第1の実施形態と同様である。これらの構成、動作の詳細についても、第1の実施形態と同様である。第2の実施形態では、第1の実施形態で示す効果に加え、更に以下のような効果が得られる。以下では、マルチプロセッサシステムにおける従来課題を説明すると共に、第2の実施形態における効果について説明する。
デュアルプロセッサを始めプロセッサが複数形成されたマルチプロセッサシステムにおいて、複数のプロセッサで共有しているメモリや周辺機器(以下、リソースと称す)へのアクセスは、プロセッサ間で競合する場合がある。ある割り込み処理に必要なリソースは、その処理が完了するまで独占的に使用できなければ、正しい処理結果を得られない可能性がある。そこで、例えばプロセッサ上で実行されるOSがリソースの使用状態を管理し、OSから使用許可を得て始めてリソースにアクセスできるような仕組みが用いられている。
図11は、複数のプロセッサで共有するリソースを使用して処理を行う場合の動作例を時間経過に従って示した図である。図11では、リソースAとリソースBを使用する割り込み要求が、割り込み許可を得るまでの時間経過を示している。始めに、割り込み要求の実行が開始されると、リソースAの使用許可を得てリソースAをロックする。ここではOSからリソースの使用許可を得たことを、リソースをロックしたと称する。その後、割り込み要求は、リソースBの使用許可を得てリソースBをロックする。例えば、リソースBが他の割り込み処理に使用されている場合、その処理が完了するまでリソースBにアクセスすることができない。リソースの使用状態を管理し、リソースへのアクセスを制御する仕組みが用いられているためである。その仕組みにPMRを用いることが可能である。
リソースへのアクセスを制御するためには、OSレベルとアプリケーションレベルに分類される割り込み要求のアクセスを制限することが必要である。即ち、リソースを使用している間、他の割り込み要求に実行されないようPMRによってマスクする。具体的には、先に開始された割り込み処理は、後から発生し、同じリソースを使用する他の割り込み要求をマスクするためにPMRに適切な値を設定する。図4に示したように、OSレベルとアプリケーションレベルに分類される割り込み要求は、優先度4から優先度15である。よって、割り込み優先度4から15の割り込み要求を全てマスクするようPMRを設定する。即ち、PMRの4番目から15番目のビットに"H"を書き込み、それ以外のビット(即ち、0番目から3番目)に"L"を書き込む。
しかし、割り込み優先度4から15の割り込み要求を全てマスクする場合、リソースBの獲得待ちをしている割り込み要求よりも優先度の高い他の割り込み要求がマスクされる場合がある。従って、リソースの獲得待ちをしている間に、処理しなければならない他の割り込み要求があるか否かを確認する必要がある。
従来、リソースの獲得待ちをしている間、マスクされている他の割り込み要求の有無を確認するには、前述したように、割り込み要求が保管されるレジスタを一つ一つ確認する方法がある。その他にも、PMRによる設定でマスクされている割り込みを許可し、たまっている割り込みがあればそれを受け付けて処理を行うことも可能である。この従来方法について、図12及び図13の簡便なタイミング図を用いて説明する。図12及び図13では、複数の割り込み処理が並列に動作するマルチプロセッサ環境を例に説明する。ここでは、5つの割り込み処理がプロセッサ1とプロセッサ2で実行される場合を考える。ここで、それぞれの図の5つの割り込み処理の時間軸は同一の時間軸である。ただし、プロセッサ間でのリソース共有方法は別途定められており、そのために必要な時間や割り込み処理の切り替え時間は図中に示さない。図中において、プロセッサ1では割り込み処理1が実行されており、プロセッサ2では割り込み処理2がリソースBを使用して実行されている。
図12を用いて、リソースの獲得待ちの間に、他の割り込み処理が存在する場合の処理動作について説明する。実行中の割り込み処理1より優先度の高い割り込み処理3が発生した場合、aにおいて割り込み要求が発生し、割り込み処理1が中断される(b)。そして、cにおいて割り込み処理3が起動される。割り込み処理3はリソースAとBを使用するため、dにおいてPMRを設定し、他の割り込み要求をマスクする。その後、割り込み処理3はeにおいてリソースAを獲得するが、割り込み処理2でリソースBが使用中のため、リソースBを獲得するためしばらく待つ必要がある。この時、PMRでマスクしている他の割り込み要求の有無を確認する場合、fにおいて獲得していたリソースAを開放し、gにおいてPMRによるマスクを解除する。ここでリソースAを開放するのは、リソースを獲得している割り込み処理がそのリソースを開放する前に他の割り込み処理に割り込まれ、獲得していたリソースの取り合いとなるとプロセッサでの処理がデッドロックとなってしまうためである。
一方、プロセッサ1が他の割り込み要求の有無を確認している間に、hにおいてプロセッサ2の割り込み処理2がリソースBを開放し、iにおいて実行を終了する。プロセッサ2では、割り込み処理4がjにおいて起動する。割り込み処理4がリソースAを使用する場合、kにおいて開放されているリソースAを獲得する。図12では、割り込み処理5が存在していたため、lにおいて割り込み要求有と判断し、割り込み処理3の実行が中断される(m)。そして、nにおいて割り込み処理5が起動され割り込み処理を実行する。pにおいて割り込み処理5が終了すると、qにおいて割り込み処理3は再開するが、リソースAは割り込み処理4に使用されているため、rにおいて再度PMRを設定し、リソースAの獲得待ちから再開する。
一方、図13は、リソースの獲得待ちの間に、他の割り込み処理が存在しなかった場合の処理動作について説明する。kまでは図12と同じ動作であるため、説明を省略する。図13では、割り込み処理5が存在していなかったため、lにおいて割り込み要求無と判断し、mにおいてPMRを再度設定し、割り込み処理3を再開しようとする。しかし、割り込み処理4において、リソースAが使用されているため、割り込み処理3はリソースAの獲得待ちから再開することになる。
図12及び図13では、あるかどうかわからない割り込み要求のために、割り込み処理3は一度獲得したリソースAの使用を一時的に放棄することになる。マルチプロセッサシステムにおいては、その間に他のプロセッサで実行されている割り込み処理がリソースAを獲得してしまう可能性がある。マスクされている割り込み要求が存在した場合は仕方がないが、存在しなかった場合、割り込み処理3は再度リソースAの獲得を待たなければならなく、処理効率が低下するという問題が生じていた。
そこで、本発明の第2の実施形態に係る割り込み制御回路での動作を図14及び図15を用いて説明する。図14は、リソースの獲得待ちの間に、他の割り込み要求が存在する場合の処理動作を示す。eまでは図12と同じ動作であるため、説明を省略する。その後、リソースBを待つ間に一定の時間が経過して、他の割り込み要求の確認を行う場合、fに示すようにPMFの値を確認する。図14では、他の割り込み処理が存在する場合の動作を示すため、PMFの値は"1"を示している。従って、割り込み処理3より優先度の高い割り込み要求が入力され、PMRでマスクされていることを示している。従って、gで割り込み処理3は獲得していたリソースAを開放し、hにおいてPMRによるマスクを解除する。そして、jにおいて割り込み処理5を起動して割り込み処理を開始する。一方、割り込み処理2では、kにおいてリソースBを開放しlにおいて実行を終了すると、mにおいて割り込み処理4が起動する。割り込み処理4がリソースAを使用する場合、nにおいて開放されているリソースAを獲得する。割り込み処理5はpにおいて実行を終了し、再開された割り込み処理3はqにおいてPMRを設定し、他の割り込み要求を再度マスクして、リソースAの獲得を待つ。
また、図15は、リソースの獲得待ちの間に、他の割り込み要求が存在しなかった場合の処理動作を示す。eまでは図14と同じ動作であるため、説明を省略する。図15では、割り込み処理3より優先度の高い割り込み要求がPMRでマスクされていないため、fにおいてPMFの値は"0"を示している。従って、gのように割り込み処理3はそのままリソースAを保持し続ける。その後、割り込み処理2がhでリソースBを開放しiで実行を終了すると、割り込み処理3はkでリソースBを獲得する。従って、割り込み処理3はリソースBを獲得したため、割り込み処理を実施する。割り込み処理4は、jで起動されるが、リソースAを割り込み処理3が使用中であるため、リソースAの開放を待つ。割り込み処理3は、lでリソースA、mでリソースBを開放し、nで割り込み処理の実行を終了する。従って、割り込み処理1は、pにて実行を再開すると同時に、割り込み処理4は、qでリソースAを獲得する。
このように、図15では図13と比べ、割り込み処理3が、PMRによる割り込み要求の有無を確認する間リソースAを保持したままであるため、確認中に開放したリソースAを他の割り込み処理に獲得されることなく、確認後すみやかに割り込み処理3の処理が続行することができる。従って、割り込み処理が効率的に実行されることとなる。
以上のように、PMFを設けることにより、実行中の割り込み処理が、あるかどうかわからない割り込み要求の確認のため、一度獲得したリソースを開放する必要がなくなる。従って、実行中の割り込み処理がリソースを他の割り込み処理に奪われることがなくなる。その結果、リソースを奪われた場合に生じる再獲得の待機時間が減り、タスクの処理効率が上昇する。従って、第1の実施形態に加え、更に効率的に割り込み処理を行うことが可能である。
また、割り込み要求が保管されているレジスタを個別に確認する必要がなくなるため、確認にかかる時間を削減できることは第1の実施形態と同様である。
また、割り込み処理をグルーピングする場合、プロセッサは、PMFを読み出すことにより、グループ毎にマスクされている割り込み処理の有無を確認できることは第1の実施形態と同様である。
更に、PMRでマスクされている割り込み要求の有無を検出するPMFを設けることにより、プロセッサから可視なレジスタを設定することとなる。従って、プロセッサは、割り込み要求の存在の有無を容易に読み出すことができることは第1の実施形態と同様である。
発明の実施の形態3.
次に、図面を参照し、本発明の第3の実施形態について説明する。第3の実施形態は、本発明に係る割り込み制御回路が、プロセッサ等と別の半導体素子に形成された回路として例を示すものである。図16は、第3の実施形態に係る割り込み制御回路を有するプロセッサ制御システムの構成図を示したものである。
図16に示すように、プロセッサ制御システム500は、プロセッサ510、割り込み制御回路520、リソース300、及びこれらを接続し、命令やデータ等のやり取りを行うシステムバス530、割り込み制御回路520とプロセッサ510を直接接続する信号線560、570等を有している。更に、図示しないがこれらを動作させるための電源配線、入出力端子等を有していることは、第1の実施形態と同様である。第3の実施形態では、プロセッサ510、割り込み制御回路520が別の半導体素子に形成されていることに特徴を有している。割り込み制御回路520の構成要素や動作原理等は、第1の実施形態と同様であるため、説明を省略する。
なお、第3の実施形態に係る割り込み制御回路520も、第2の実施形態で示したように複数のプロセッサによって制御されることが可能である。また、リソース300は、割り込み制御回路520、或いはプロセッサ510と同じチップに形成されていることが可能である。或いは、リソース300が、割り込み制御回路520及びプロセッサ510が形成されているチップと、別のチップに形成されることももちろん可能である。
各々のリソースは、必要に応じてシステムバス530と接続し、システムバス530を介してプロセッサ510や、割り込み制御回路520、更にリソース相互間でデータや命令のやり取りを行うことは第1の実施形態と同様である。また、各々のリソースには必要に応じて入出力端子が設けられている。なお、必要に応じてシステムバス530を経由せず、所定の回路間に直接的にデータ等をやり取りするようにしても良いのは勿論であるが、煩雑になるので図示しない。
以上のような構成によって、プロセッサ510と割り込み制御回路520が別の半導体素子に形成されているプロセッサ制御システム500においても、前述した第1の実施形態及び第2の実施形態と同様の効果を得ることが可能である。
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。従って、本発明の適用例としては、半導体装置100、200、及びプロセッサ制御システム500に限らず、割り込み制御回路を有するプロセッサ制御システム等、組み込みシステムを利用するあらゆる機器に適用可能であることはもちろんである。