(57)【要約】【課題】複数の割込みの要求があった場合に、割込み要求の発生順にＣＰＵに対して割込み処理の要求を行うことができるようにする。【解決手段】同一の優先順位をもつ複数の割込み入力の個々について、割込み要求の発生順序にしたがって優先順位を割り振って記憶する発生順序記憶回路３を備え、発生順序記憶回路３は、最優先順位の割込み入力についてＣＰＵに対して割込み処理を要求し、最優先順位の割込み入力についての割込み処理が完了する毎に、割込み要求のあった残りの割込み入力について優先順位を１つづつ繰り上げるよう記憶内容を更新する。【選択図】  図３
2007310438.tif 000002
【特許請求の範囲】
【請求項１】
同一の優先順位をもつ複数の割込み入力に割込み要求があったとき、該割込み要求の発生の順序にしたがって、前記割込み入力に応じた割込み処理をＣＰＵに要求する割込み処理回路であって、
前記複数の割込み入力の個々について、前記割込み要求の発生順序にしたがって優先順位を割り振って記憶する発生順序記憶手段を備え、
該発生順序記憶手段は、最優先順位の割込み入力について前記ＣＰＵに対して割込み処理を要求し、最優先順位の割込み入力についての割込み処理が完了する毎に、割込み要求のあった残りの割込み入力について前記優先順位を１つづつ繰り上げるよう記憶内容が更新されることを特徴とする割込み処理回路。
【請求項２】
請求項１に記載の割込み処理回路において、
割込み要求があった割込み入力について個々にフラグを立てると共に割込み処理が完了した割込み入力については該フラグをリセットし、フラグの立っている割込み入力については新たな割込み要求を受け付けない割込み要求受付手段を備え、
前記発生順序記憶手段は、特定の割込み入力について新たな割込み要求があったとき、前記割込み要求受付手段の現在立っているフラグの数を参照して、当該特定の割込み入力に優先順位を割り振ることを特徴とする割込み処理回路。
【請求項３】
請求項２に記載の割込み処理回路において、
前記割込み要求受付手段の前記フラグの立上りを検出する立上り検出手段を備え、前記発生順序記憶手段は、該立上り検出手段の検出出力によって前記特定の割込み入力についての新たな割込み要求を知ることを特徴とする割込み処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一の優先順位をもつ複数の割込み入力に割込み要求があったとき、割込み要求の発生の順序にしたがって、割込み入力に応じた割込み処理をＣＰＵに要求する割込み処理回路に関するものである。
【背景技術】
【０００２】
割込み処理回路（割込みコントローラ）は、ＣＰＵと周辺装置との間に介在し、周辺装置から割込み要求があった場合に、予め設定した優先順位に基づいて、優先順位の高い割込み入力への割込み要求から順にＣＰＵに対して割込み処理を要求するものである。ＣＰＵに対して割込み処理が要求されると、ＣＰＵは現在実行中の処理を中断して割込み処理を実行し、割込み処理の完了後に中断された元の処理が再開される。
【０００３】
従来の割込み処理回路は、例えばインテル社製の８２５９という割込みコントローラに代表されるように、複数の割込み入力を持ち、各割込み入力についてハードウエア的に予め決定された優先順位が与えられている。
【０００４】
このような割込み処理回路を使用して、優先度が同一の複数の割込み要求について、その割込み要求の発生順に処理を希望する場合には、予め定められた優先順位になってしまうので、期待した順番で割り込み処理が実行されないという問題があった。これは多重割込み時（ある割込み処理の実行中に別の割込み要求が発生する時）が顕著な例である。
【０００５】
図４は従来の割込み処理回路の構成を示すブロック図、図５はこの割込み処理回路を使用した多重割込み時の処理の説明図である。図４において、１は４個の割込み入力ＩＲ０〜ＩＲ３を受け付ける割込み要求レジスタ（ＩＲＲ）、６は割込み入力ＩＲ０に最優先を割り当て、ＩＲ１，ＩＲ２，ＩＲ３の順に低い優先順位を割り当てた優先順位割当回路、４は現在割込み処理が行われている割込み入力を示すインサービスレジスタ（ＩＳＲ）、５はＣＰＵとの間で指令のやりとりを行い、割込み要求レジスタ１、優先順位割当回路６、インサービスレジスタ４を制御する制御回路である。
【０００６】
割込み要求レジスタ１は、割込み入力ＩＲ０〜ＩＲ３のいずれか１つに割込み要求があると、当該割込み入力に対応する出力に「１」のフラグを立て、優先順位割当回路６と制御回路５に送る。他に割り込み入力がないときは、制御回路５はこの入力に基づきＣＰＵに割込み要求（ＩＮＴ）を出力し、ＣＰＵから割込み許可（ＩＮＴＡの反転）」を受けると割込み要求レジスタ１の当該「１」のフラグを「０」にリセットし、次の割込み要求を受け付け可能にする。インサービスレジスタ４は、制御回路５によって、ＣＰＵの割込み処理中は当該割込み入力に対応する内容を「１」にして、現在の処理がどの割込み入力についての割込み処理であるかを示し、制御回路５がＣＰＵから割込み処理完了（ＥＯＩ）を受けると、その制御回路５によって該当内容が「０」にリセットされる。
【０００７】
このような構成の割込み処理回路を使用して、ユーザがシステムを構築するときは、使用する割込み要求の優先順位を予め把握して、割込み入力ＩＲ０〜ＩＲ３に割り当てることが必要となる。この例では、割込み入力としてＩＲ０〜ＩＲ３を使用することになるが、ユーザは割込み入力ＩＲ１，ＩＲ２，ＩＲ３が機能的に同一優先度のものを想定しているものとする。
【０００８】
この場合は、図５に示すように、まず、ＣＰＵがメインルーチンを実行しているときに、最初の割込み入力ＩＲ０に割込み要求が発生すると、処理はメインルーチンから割り込み入力ＩＲ０に対応する割込みルーチンに飛ぶ。この割込み入力ＩＲ０に対応する割込みルーチンの実行中に割り込み入力ＩＲ３に割込み要求が発生しても、割込み入力ＩＲ０が最優先であるのでその割込み入力ＩＲ３の処理に飛ぶことはない。その後に割込み入力ＩＲ２に割込み要求が発生しても、先と同様に、割込み入力ＩＲ０に対応するルーチンの処理の実行が続く。その後にさらに割込み入力ＩＲ１に割込み要求が発生しても、同様に割り込み入力ＩＲ０に対応する割込みルーチンの処理の実行が続く。
【０００９】
割込み入力ＩＲ０に対応する割込みルーチンの処理が完了すると、割込み処理回路はサービスを待つ割込み入力について、その状態を記憶している割込み要求レジスタ１のフラグを読み、割込み入力ＩＲ１，ＩＲ２，ＩＲ３が処理待ちであることを認識する。このような場合、ユーザは、割込み入力ＩＲ１，ＩＲ２，ＩＲ３に優先度が同一と想定した割込み要求を接続していたのであるから、本来発生順序に従ってＩＲ３，ＩＲ２，ＩＲ１の順序で割込みが処理されることを期待する。
【００１０】
ところが、実際には、図４の割込み処理回路では、優先順位割当回路６の優先順位割当を参照して、この中で最も優先順位が高い割込み入力ＩＲ１についてのサービスを行うことを決定をする。その割込み入力ＩＲ１に対応する割込みルーチンの処理の実行中に割り込み入力ＩＲ０に要求が発生しなければ、その割込み入力ＩＲ１に対応する割込みルーチンの処理が完了したところで、次の優先順位の割込み入力ＩＲ２に対応する割込みルーチンの処理へと移る。その後、その割込み入力ＩＲ２に対応する割込みルーチンの処理の実行中に割り込み入力ＩＲ０，ＩＲ１に要求が発生しなければ、その割込み入力ＩＲ２に対応する割込みルーチンの処理が完了したところで、次の優先順位の割込み入力ＩＲ３に対応する割込みルーチンの処理へと移る。
【００１１】
このように、図４に示す割込み処理回路では、ユーザが期待した順序で割込み処理が行われない場合がある。すなわち、図５のＩＲ３のように、早く発生したにもかかわらず実行までに長時間待たされる場合がある。
【００１２】
従来では、割込み要求の発生順を検出する提案として、割込み要求の発生時刻情報をメモリに書き込むもの（特許文献１）がある。また、割込み順序を設定する割込み順序設定センスレジスタを設けて、その内容に基づいて割込み発生順序を認識して発生順に処理するもの（特許文献２）もある。
【特許文献１】特開平１１−３３８７１２号公報
【特許文献２】特開平０８−２１２０８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ところが、特許文献１に記載の手法は、障害発生時に割込み要求発生の正確な順序をトレースすることができるようにするためであり、発生順により優先度を決めることについては記載がない。また、特許文献２に記載の手法は、割込み要求の発生順序を認識しその順序にその順に処理するものであるが、割込み順序設定センスレジスタの内容を読み出して処理するので、次に処理する割込みがどれになるかを決めるには比較や決定処理を行う特別なソフトウエア処理が必要となる。
【００１４】
本発明の目的は、複数の割込みの要求があった場合に、特別なソフトウエア処理を必要とすることなく、割込み要求の発生順にＣＰＵに対して割込み処理の要求を行うことができるようにした割込み処理回路を提供することである。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、請求項１にかかる発明の割込み処理回路は、同一の優先順位をもつ複数の割込み入力に割込み要求があったとき、該割込み要求の発生の順序にしたがって、前記割込み入力に応じた割込み処理をＣＰＵに要求する割込み処理回路であって、前記複数の割込み入力の個々について、前記割込み要求の発生順序にしたがって優先順位を割り振って記憶する発生順序記憶手段を備え、該発生順序記憶手段は、最優先順位の割込み入力について前記ＣＰＵに対して割込み処理を要求し、最優先順位の割込み入力についての割込み処理が完了する毎に、割込み要求のあった残りの割込み入力について前記優先順位を１つづつ繰り上げるよう記憶内容が更新されることを特徴とする。
請求項２にかかる発明は、請求項１に記載の割込み処理回路において、割込み要求があった割込み入力について個々にフラグを立てると共に割込み処理が完了した割込み入力については該フラグをリセットし、フラグの立っている割込み入力については新たな割込み要求を受け付けない割込み要求受付手段を備え、前記発生順序記憶手段は、特定の割込み入力について新たな割込み要求があったとき、前記割込み要求受付手段の現在立っているフラグの数を参照して、当該特定の割込み入力に優先順位を割り振ることを特徴とする。
請求項３にかかる発明は、請求項２に記載の割込み処理回路において、前記割込み要求受付手段の前記フラグの立上りを検出する立上り検出手段を備え、前記発生順序記憶手段は、該立上り検出手段の検出出力によって前記特定の割込み入力についての新たな割込み要求を知ることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、発生順序記憶手段の記憶内容が、最優先順位の割込み入力についての割込み処理が完了する毎に、割込み要求のあった残りの割込み入力について優先順位を１つづつ繰り上げるよう更新されるので、最優先順位の割込み入力は順次更新されることになり、特別なソフトウエア処理を必要とすることなく、多重割込みの要求があった場合でも、割込みの要求の発生順に割込み処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明の１つの実施例の割込み処理回路の構成を示すブロック図である。図１において、１は割込み要求レジスタ（ＩＲＲ）（請求項の割込み要求受付手段に相当）であって、図４で説明したものと同じであり、４個の割込み入力ＩＲ０〜ＩＲ３のいずれかに割込み要求を受け付けると、出力ＩＲＡ０〜ＩＲＡ３の対応するものを「１」にセットしてフラグを立てる。
【００１８】
２はＩＲＲ立上りエッジ検出回路（請求項の立上り検出手段に相当）であって、図２に示すように、割込み要求レジスタ１からの各出力ＩＲＡ０〜ＩＲＡ３毎に、ＦＦ２１とアンド回路２２の組み合わせで構成され、割込み要求レジスタ１の出力ＩＲＡ０〜ＩＲＡ３が「１」に立ち上がると、その立上りエッジを検出して、出力ＩＲＢ０〜ＩＲＢ３の対応するものに「１」パルスを出力する。
【００１９】
３は発生順序記憶回路（請求項の発生順序記憶手段に相当）であって、割込み要求レジスタ１の出力ＩＲＡ０〜ＩＲＡ３とＩＲＲ立上りエッジ検出回路２のパルス出力ＩＲＢ０〜ＩＲＢ３を入力し、そのときの出力ＩＲＡ０〜ＩＲＡ３の「１」の数を参照して、割込み入力ＩＲ０〜ＩＲ３の立上りの順序を記憶する発生順序記憶レジスタ（ＩＳＱ）を有する。この発生順序記憶レジスタ（ＩＳＱ）の割込み入力ＩＲ０〜ＩＲ３に対応した４個の出力の値は、それぞれ「０」，「１」，「２」，「３」，「４」のいずれかで順位を示す。「０」は割込み要求なし、「１」は最優先、「２」は次優先、・・・、「４」は最低優先である。
【００２０】
そして、この発生順序記憶回路３は、システムリセットされると、発生順序記憶レジスタ（ＩＳＱ）の４個の出力を「０」にする。また、ＩＲＲ立上り検出回路２の出力ＩＲＢ０〜ＩＲＢ３のいずれかに「１」パルスが発生すると、割込み要求レジスタ１の出力ＩＲＡ０〜ＩＲＡ３の出力（フラグ）を見て、そこに「１」があれば、出力ＩＲＢ０〜ＩＲＢ３の内のすでに「１」になったものに対応する発生順序記憶レジスタ（ＩＳＱ）の出力の最大値に「＋１」して、その発生順序記憶レジスタ（ＩＳＱ）に記憶させる。
【００２１】
例えば、ＩＲＲ立上りエッジ検出回路２の出力ＩＲＢ０に「１」パルスが発生したときに、割込み要求レジスタ１の出力ＩＲＡ０〜ＩＲＡ３の「１」の数が合計で１個であった場合は最優先順位「１」を、２個であった場合は次の優先順位の「２」を、・・・、４個であった場合は最低の優先順位の「４」を、当該割込み入力ＩＲ０に対応して記憶する。
【００２２】
さらに、この発生順序記憶回路３は、割込み処理が完了してＣＰＵが発行する割込み処理完了（ＥＯＩ）が制御回路５に受け付けられると、発生順序記憶レジスタ（ＩＳＱ）の「０」以外の各出力について、「−１」を行う。すなわち、最優先順位「１」の割込み入力についての割込み処理が完了すると、その優先順位が「０」に、「２」であった優先順位が「１」に、「３」であった優先順位が「２」に、「４」であった優先順位が「３」に、それぞれ更新して繰り上げられる。
【００２３】
４はインサービスレジスタ（ＩＳＲ）であって、図４で説明したものと同じであり、割込み入力ＩＲ０〜ＩＲ３に対応する値が「１」であるとき、当該割込み入力について現在ＣＰＵによって処理が行われていることを示す。
【００２４】
制御回路５は、図４で説明したものと同様であり、ＣＰＵへの割込み要求（ＩＮＴ）を出力したり、ＣＰＵからの割込み許可（ＩＮＴＡの反転）を受け付けたり、ＣＰＵからの割込み完了（ＥＯＩ）を受け付けて、割込み要求レジスタ１、発生順序記憶回路３、インサービスレジスタ４を制御する。
【００２５】
以下、図３を参照し、具体的な例を挙げて説明する。ここでは、割込み入力ＩＲ０〜ＩＲ３は全て同一の優先順位であるとする。図３において、ＩＲＲは割込み要求レジスタ１のレジスタのフラグ（２値）を、ＩＳＱは発生順序記憶回路３の発生順序記憶レジスタの内容（１０進数）を示す。システムリセット解除後に、まだ割込み要求がなされていない場合が図３(a)である。
【００２６】
割込み入力ＩＲ２に割込み要求が発生したときは、図３(b)に示すように、割込み要求レジスタ１（ＩＲＲ）はＩＲ２に対応する出力が「１」になる。これを受けて、ＩＲＲ立上りエッジ検出回路２のＩＲ２に対応する出力に「１」パルスが立ち、図３(c)に示すように、ＩＲ２に対応する発生順序記憶レジスタ（ＩＳＱ）の出力を「１」の順位に設定する。
【００２７】
続いて、割込み入力ＩＲ３に割り込み要求が発生したときは、図３(d)に示すように、割込み要求レジスタ１（ＩＲＲ）はＩＲ３に対応する出力が「１」になる。これを、ＩＲＲ立上りエッジ検出回路２が検出し、発生順序記憶レジスタ（ＩＳＱ）のＩＲ３に対応する出力を「２」の順位に設定する。
【００２８】
続いて、割込み入力ＩＲ１，ＩＲ０に割込み要求が順次発生したときは、図３(e)に示すように、割込み要求レジスタ１（ＩＲＲ）はＩＲ１、ＩＲ０に対応する出力が「１」になる。これを、ＩＲＲ立上りエッジ検出回路２が検出し、発生順序記憶レジスタ（ＩＳＱ）のＩＲ１，ＩＲ０に対応する出力をそれぞれ「３」、「４」の順位に設定する。
【００２９】
この後、制御回路５からのＣＰＵへの割込み要求（ＩＮＴ）がＣＰＵに受け付けられてＣＰＵから割り込み許可（ＩＮＴＡの反転）が入力し、割込み入力ＩＲ２に対応した割込み処理が開始されると、図３(f)に示すように、割込み要求レジスタ１（ＩＲＲ）のＩＲ２に対応する出力ＩＲＡ２のフラグは「１」から「０」にクリアされる。これにより、ＩＲ２への割込み要求の再受付が可能となる。
【００３０】
そして、割込み入力ＩＲ２に対応した割込み処理が完了し、ＣＰＵが発行する割込み処理完了（ＥＯＩ）を制御回路５が受け取ると、その制御回路５によって、発生順序記憶レジスタ（ＩＳＱ）のＩＲ２に対応する値は「０」にクリアされる。それと同時に発生順序記憶レジスタ（ＩＳＱ）の他の出力はその値が「−１」されて、図３(g)に示すように更新される。すなわち、割込み要求のあった残りの割込み入力について、優先順位を１つづつ繰り上げるよう記憶内容が更新される。この結果、次に割込みサービスを受ける権利をもつのは、発生順序記憶レジスタ（ＩＳＱ）の値が「１」になった割込み入力ＩＲ３への割込み要求となる。以降同様に、発生順序記憶レジスタ（ＩＳＱ）の値が「１」になった割込み入力に対応した割込み処理をＣＰＵに要求すると共に、発生順序記憶レジスタ（ＩＳＱ）の記憶内容の更新を行うことにより、割込み要求が発生した順番に割込み処理を実行することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施例の割込み処理回路の構成を示すブロック図である。
【図２】ＩＲＲ立上りエッジ検出回路の具体的回路図である。
【図３】本実施例の割込み処理の説明図である。
【図４】従来の割込み処理回路の構成を示すブロック図である。
【図５】従来の割込み処理の説明図である。
【符号の説明】
【００３２】
１：割込み要求レジスタ
２：ＩＲＲ立上りエッジ検出回路
３：発生順序記憶回路
４：インサービスレジスタ
５：制御回路
６：優先順位割当回路
【図１】
2007310438.tif 000003
【図２】
2007310438.tif 000004
【図３】
2007310438.tif 000005
【図４】
2007310438.tif 000006
【図５】
2007310438.tif 000007