(57)【要約】【課題】発生頻度の小さい割込み要求が、頻度の大きな割込み要求にブロックされてなかなかサービスされないといった不具合を軽減する。【解決手段】受け取った複数の割込み要求の中から１つを選択してＣＰＵに対して割込みサービスの要求を行うとき、所定期間内における複数の割込み要求のそれぞれの入力回数をカウントし、入力回数の少ない割込み要求に対して、入力回数が多い割込み入力要求に比較して高い優先順位を割り当て、その優先順位に従って、複数の割込み要求の中から、次に実行すべき割込み要求を選択し、該選択した割込み要求に対応する割込みサービスの要求をＣＰＵに対して行う。【選択図】図１
2008171178.tif 000002
【特許請求の範囲】
【請求項１】
受け取った複数の割込み要求の中から１つを選択してＣＰＵに対して割込みサービスの要求を行う割込み制御方法において、
所定期間内における複数の割込み要求のそれぞれの発生頻度をカウントし、発生頻度の小さい割込み要求に対して、発生頻度が大きい割込み入力要求に比較して高い優先順位を割り当て、その優先順位に従って、複数の割込み要求の中から、次に実行すべき割込み要求を選択し、該選択した割込み要求に対応する割込みサービスの要求をＣＰＵに対して行うことを特徴とする割込み制御方法。
【請求項２】
受け取った複数の割込み入力端子への複数の割込み要求の中から１つを選択してＣＰＵに対して割込みサービスの要求を行う割込み制御装置において、
前記複数の割込み入力端子のそれぞれに対応して備えられ、所定期間内に、対応する割込み入力端子に新たな割込み要求が入力された回数を積算するカウント手段と、
対応する前記カウント手段に積算された前記回数の少ない割込み入力端子に対して、対応する前記カウント手段に積算された前記回数が多い割込み入力端子に比較して高い優先順位を割り当てる優先順位割当手段と、
前記優先順位割当回路が割り当てた優先順位に従って、前記複数の割込み入力端子に入力された割込み要求から、次に実行すべき割込み要求を選択し、該選択した割込み要求に対応する割込みサービスの要求を前記ＣＰＵに対して行う要求選択手段と、
を有することを特徴とする割込み制御装置。
【請求項３】
前記複数の割込み入力端子のそれぞれに対応する記憶領域を有し、割込み要求の受付が可能な期間内に、対応する前記割込み入力端子に割込み要求が入力された場合に、該割込み要求を受け付けたことを示す所定の値が前記対応する記憶領域に記憶される割込み要求記憶手段をさらに有し、
前記要求選択手段は、前記割込み要求記憶手段の対応する記憶領域に前記所定の値が記憶された前記割込み入力端子に入力された割込み要求を対象に、前記次に実行すべき割込み要求の選択を行うものであり、
前記割込み要求記憶手段は、前記割込み要求の受付が可能な期間を除く、割込み要求の受付が不可能な期間には、前記割込み入力端子に割込み要求が入力されても前記所定の値の対応する記憶領域への記憶を行わず、
前記カウント手段は、前記割込み要求の受付が可能な期間であるか不可能な期間であるかにかかわらず、前記所定期間内に、前記新たな割込み要求が入力された回数の積算を行う、
ことを特徴とする請求項２に記載の割込み制御装置。
【請求項４】
前記所定期間を外部から設定可能であることを特徴とする請求項２又は３に記載の割込み制御装置。
【請求項５】
前記所定期間の開始を外部から指示可能であることを特徴とする請求項２乃至４のいずれかに記載の割込み制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受け取った複数の割込み要求の中から１つを選択してＣＰＵに対して割込みサービスの要求を行う割込み制御方法および装置に関するものである。
【背景技術】
【０００２】
従来の割込み制御装置（割込みコントローラ）は、Intel社８２５９に代表されるように、オートマチック・ローテーションという手法を採用しており、例えば、特許文献１に開示されているように、現在割込み処理が実施されている割込み入力端子の優先順位を、その処理の終了時、すなわちＣＰＵ（マイクロプロセッサ）からＥＯＩ（End Of Interrupt）を受け取った際に、最下位とし、その他の割込み入力端子にはあらかじめ決定されている優先順位を割り当てるという方法が採用されている。
【０００３】
また、特許文献２に記載されているように、各割込み入力端子に一定時間内に入力される割込み要求の回数をそれぞれ数えて出力する複数のカウンタを設け、割込み要求の回数の多い順に割込み入力端子の優先順位を変更して新たな優先順位を与える比較器を設けるものもある。
【特許文献１】特開平４−３６３７４８号公報
【特許文献２】特開平６−３０９１７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１および２のいずれにおいても、発生回数の少ない割込み要求の優先順位が次に高い優先順位になるとは限らず、受け付けられる割込み要求の機会が均等でないという問題があった。つまり、発生頻度の小さい割込み要求が、発生頻度の大きな割込み要求にブロックされて、なかなかサービスされないといった不具合があった。
【０００５】
本発明の目的は、このような不具合を軽減できるようにした割込み制御方法および装置を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１にかかる発明の割込み制御方法は、受け取った複数の割込み要求の中から１つを選択してＣＰＵに対して割込みサービスの要求を行う割込み制御方法において、所定期間内における複数の割込み要求のそれぞれの発生頻度をカウントし、発生頻度の小さい割込み要求に対して、発生頻度が大きい割込み入力要求に比較して高い優先順位を割り当て、その優先順位に従って、複数の割込み要求の中から、次に実行すべき割込み要求を選択し、該選択した割込み要求に対応する割込みサービスの要求をＣＰＵに対して行うことを特徴とする。
請求項２にかかる発明の割込み制御装置は、受け取った複数の割込み入力端子への複数の割込み要求の中から１つを選択してＣＰＵに対して割込みサービスの要求を行う割込み制御装置において、前記複数の割込み入力端子のそれぞれに対応して備えられ、所定期間内に、対応する割込み入力端子に新たな割込み要求が入力された回数を積算するカウント手段と、対応する前記カウント手段に積算された前記回数の少ない割込み入力端子に対して、対応する前記カウント手段に積算された前記回数が多い割込み入力端子に比較して高い優先順位を割り当てる優先順位割当手段と、前記優先順位割当回路が割り当てた優先順位に従って、前記複数の割込み入力端子に入力された割込み要求から、次に実行すべき割込み要求を選択し、該選択した割込み要求に対応する割込みサービスの要求を前記ＣＰＵに対して行う要求選択手段と、を有することを特徴とする。
請求項３にかかる発明は、請求項２に記載の割込み制御装置において、前記複数の割込み入力端子のそれぞれに対応する記憶領域を有し、割込み要求の受付が可能な期間内に、対応する前記割込み入力端子に割込み要求が入力された場合に、該割込み要求を受け付けたことを示す所定の値が前記対応する記憶領域に記憶される割込み要求記憶手段をさらに有し、前記要求選択手段は、前記割込み要求記憶手段の対応する記憶領域に前記所定の値が記憶された前記割込み入力端子に入力された割込み要求を対象に、前記次に実行すべき割込み要求の選択を行うものであり、前記割込み要求記憶手段は、前記割込み要求の受付が可能な期間を除く、割込み要求の受付が不可能な期間には、前記割込み入力端子に割込み要求が入力されても前記所定の値の対応する記憶領域への記憶を行わず、前記カウント手段は、前記割込み要求の受付が可能な期間であるか不可能な期間であるかにかかわらず、前記所定期間内に、前記新たな割込み要求が入力された回数の積算を行う、ことを特徴とする。
請求項４にかかる発明は、請求項２又は３に記載の割込み制御装置において、前記所定期間を外部から設定可能であることを特徴とする。
請求項５にかかる発明は、請求項２乃至４のいずれかに記載の割込み制御装置において、前記所定期間の開始を外部から指示可能であることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ある所定の期間を指定し、その期間内における各割込み要求の発生頻度をカウントし、発生頻度の小さい割込み要求に対して、発生頻度の大きな割込み要求よりも高い優先順位を割り当てるので、発生頻度の小さい割込み要求が、発生頻度の大きな割込み要求にブロックされてなかなかサービスされないといった不具合を軽減でき、割込みサービスの機会の均等化を実現することが可能となる。
【発明を実施するための最良の形態】
【０００８】
図１は本発明の１つの実施例の割込み制御装置の構成を示すブロック図である。１は割込み要求レジスタ（ＩＲＲ）であり、複数の割込み入力端子ＩＲｎ（ｎ＝０〜４）のぞれぞれに対応するビットを有し、対応する割込み入力端子への外部機器からの割込み要求が発生すると、該当ビットが「１」にセットされる。この「１」のビット値は、割込み要求の入力が継続される間は維持される。そして、割込み要求レジスタ１のそれぞれのビットは、本割込み制御装置からの要求を受けたＣＰＵによる、対応する割込み入力端子に入力された割込み要求に対応するサービスが開始され、ＩＮＴＡがアクティブになると、当該ビットは「０」にリセットされる。また、途中で入力が断たれたときも「０」にリセットされる。これらのリセットにより、当該ビットの割込み入力端子への新たな割込み要求の入力が可能になる。
【０００９】
２は割込み要求記憶レジスタ（ＩＬＲ）であり、割込み要求受け付け時の割込み要求レジスタ１の値を記憶する。例えば、本割込み制御装置からＣＰＵに対して割込みサービスの要求ＩＮＴを送り、ＣＰＵでの割込みサービス開始を待っている期間は、新たな割込み要求を割込み制御装置が実施することができない。このため、割込み入力端子ＩＲｎ（ｎ＝０〜４）に割込み要求が入力されても、本割込み制御装置は、割込み要求の受付を行わない。この、受付が不可能である期間を除いた、受け付け可能な期間に、対応する割込み入力端子ＩＲｎ（ｎ＝０〜４）に割込み要求が入力され（その直前の、割込み要求の受付が不可能な期間内に新たな割込み要求の入力が開始され、受付可能な期間にまで維持されていた場合も含む）、割込み要求が受け付けられると、割込み要求レジスタ１の値（例えば「１」）が、割込み要求記憶レジスタ２の該当ビットにセットされる。具体的には、例えば、ＣＰＵが割込みサービスの実施を開始し、ＩＮＴＡ信号がアクティブとなった期間を、割込み要求の受付が可能な期間とすることができる。
【００１０】
本割込み制御装置は、受け付けた（割込み要求記憶レジスタ２の該当ビットに要求を受け付けたことを示す値がセットされた）割込み要求のなから、次に実施するものを選択し、ＣＰＵに対してサービスの要求を行う。割込み要求記憶レジスタ２の当該ビットにセットされた値は、この選択を終えた後、次に割込み要求の受付が可能になる以前に、リセットされる。
【００１１】
３はイン・サービス・レジスタであり、受け付けた割込み要求のいずれに対応するサービスをＣＰＵに要求するかを選択する要求選択回路を含む。このイン・サービス・レジスタ３は、それぞれの割込み入力端子ＩＲｎ（ｎ＝０〜４）に対応するビットを有し、ＣＰＵに対して要求を行った割込みサービスの該当ビットが「１」にセットされ、サービス終了時に「０」にリセットされる。
【００１２】
４は優先順位割当回路であり、各割込み入力端子ＩＲｎ（ｎ＝０〜４）に優先順位を割り当てる回路である。５は制御回路であり、本割込み制御装置とＣＰＵとの間のインターフェースをとる。
【００１３】
６はタイマブロックであり、「タイマ」とステートマシン「ＴＳＥＱ」の２つで構成される。「タイマ」はＣＰＵから書込み信号βが「０」のときに書込みデータα（設定値）が書き込まれ、ＣＰＵからのスタート命令信号γにより、システムクロックＣＬＫに同期して、その設定値がゼロになるまで１ずつダウンカウントを行うタイマである。ステートマシン「ＴＳＥＱ」は、「タイマ」の現在の動作状態を表す。状態には、ＩＤＬＥ：タイマ停止状態、ＷＡＩＴ：スタート命令待ち状態、ＶＡＬＩＤ：カウントダウン実行状態、ＦＩＮＩＳＨ：カウントダウン終了状態の４状態がある。
【００１４】
図２(a)にタイマブロック６内のステートマシン「ＴＳＥＱ」の動作例を、図２(b)に遷移例を示す。「ＴＳＥＱ」はハードウエアのリセット後、ＩＤＬＥとなるが、ＣＰＵから「タイマ」への書込み信号βが「０」のときに行われる書込みデータα（設定値）の書き込みにより、ＷＡＩＴへと遷移する。その後、ＣＰＵから「タイマ」へのスタート命令γによりＶＡＬＩＤへ遷移する。「タイマ」がダウンカウントしている間はＶＡＬＩＤの状態のままであるが、「タイマ」の値が「ゼロ」に達すると、ＦＩＮＩＳＨへと遷移を行う。そして、ＦＩＮＩＳＨとなった次のクロックＣＬＫでＩＤＬＥに戻る。この遷移は、システムに応じて、１サイクルだけ、あるいは繰り返して行う。なお、カウントブロック７へ供給されるＴＶＡＬＩＤは「ＴＳＥＱ＝ＶＡＬＩＤ」の論理で生成される。
【００１５】
図３にカウントブロック７の構成例を示す。カウントブロック７は、各割込み入力端子ＩＲｎ（ｎ＝０〜４）について、何回割込み要求がＴＶＡＬＤ期間に発生したかを計算する機能を有し、各割込み入力端子ＩＲｎ（ｎ＝０〜４）ごとに用意されたカウンタで構成される。割込み要求レジスタ１に記憶された入力ＩＲＲｎ（ｎ＝０〜４）（「１」で割込み要求あり、「０」で割込み要求なし）は、それぞれ、フリップフロップとアンドゲートからなるポジティブエッジ検出回路７１ｎ（ｎ＝０〜４）を経て、カウンタ７２ｎ（ｎ＝０〜４）に入力される。カウンタ７２ｎ（ｎ＝０〜４）はＴＶＡＬＩＤ＝「１」の期間でイネーブルとなり、クロックＣＬＫが「１」のときにポジティブエッジ検出回路７１ｎ（ｎ＝０〜４）がポジティブエッジを検出してその出力を「１」にする毎に、その値を「＋１」していくものであり、そのカウント値＃ｎ（ｎ＝０〜４）を優先順位割当回路４へ出力する。また、タイマブロック６への書込み信号βが「０」のとき、ゼロクリアが実行される。
【００１６】
なお、このカウンタブロック７は、割込み要求が受け付け可能である期間であるか、不可能な期間であるかにかかわらず、割込み要求レジスタ１の割込み入力端子ＩＲｎ（ｎ＝０〜４）に新たな割込み要求が入力される回数のカウントを継続する。これにより、ＴＶＡＬＩＤ期間に割込み受付が不可能な期間が存在した場合であっても、ＴＶＡＬＩＤ期間の全域にわたって発生した割込み要求の回数を計数することができる。
【００１７】
図４に優先順位割当回路４の構成例を示す。図４では、複雑さを避けるため、カウントブロック７から出力するカウント値を、割込み入力端子ＩＲ０への割込み要求回数のカウント値＃０と割込み入力端子ＩＲ１への割込み要求回数のカウント値＃１の２入力とする場合について説明する。比較器４１はカウント値＃０と＃１を比較する回路であり、＃０＞＃１が成立する場合に「１」、成立しない場合に「０」を出力する。この信号を、タイマブロック６内の「ＴＳＥＱ」から出力されるＦＩＮＩＳＨ（ＴＳＥＱ＝ＦＩＮＩＳＨ）信号が「１」になるときに、セレクタ４２を介してフリップフロップ４３に記憶する。記憶された値は、優先順位を表す値ＰＲＩ（「１」で優先、「０」で非優先）として保持される。
【００１８】
例えば、＃０＞＃１、すなわち割込み入力端子ＩＲ１の割込み要求回数が割込み入力端子ＩＲ０のそれよりも少ない場合は、ＰＲＩ＝「１」となることで、割込み入力端子ＩＲ０よりも割込み入力端子ＩＲ１の優先順位が高く設定される。
【００１９】
この優先順位に従って、受け付けた（割込み要求記憶レジスタ２の該当ビットに「１」がセットされた）割込み要求のなかから、後記する表１に基づき、次に実施する割込み要求の選択が行われる。ただし、ここでは、割込み要求記憶レジスタ２だけではなく、割込み要求レジスタ１をも考慮する例を示す。
【００２０】
ＩＲＲ０は割込み要求レジスタ１の割込み入力端子ＩＲ０のビット値、ＩＲＲ１は同様に割込み入力端子ＩＲ１のビット値、ＩＬＲ０は割込み要求記憶レジスタ２の割込み入力端子ＩＲ０に対応するビット値、ＩＬＲ１は同様に割込み入力端子ＩＲ１に対応するビット値である。
【００２１】
ＩＮ０は、ビット値ＩＲＲ０とＩＬＲ０とのアンドをとるアンドゲート４４の出力、ＩＮ１はビット値ＩＲＲ１とＩＬＲ１とのアンドをとるアンドゲート４５の出力である。それらの値が「１」のときは、割込み要求レジスタ１の当該ビットと割込み要求記憶レジスタ２の当該ビットとの両方が「１」である。この場合に、この時点で、対応する割込み入力端子に、サービスを必要とする割込み要求が存在すると判断し、その中からサービスを行うものが選択される。
【００２２】
ＩＳ０，ＩＳ１は割込みサービスをどの割込み要求に対して行うかの判断をするための信号であり、アンドゲート４６と複合ゲート４７，４８に前記した信号ＰＲＩ，ＩＮ０，ＩＮ１を入力することにより生成される。本例では、その値が大きい方の優先順位が高いと仮定している。すなわち、本例においては、「１」である方の割込みサービスが選択される。
【００２３】
通常、割込み入力端子ＩＲｎ（ｎ＝０〜４）に一旦入力された割込み要求は、その要求に対するサービスが完了するまで維持される。この場合、割込み要求記憶レジスタ２の当該ビットが「１」である場合には、割込み要求レジスタ１の当該ビットも「１」であり、割込み要求記憶レジスタ２の当該ビットの値だけを見て、割込みサービスの必要性を判断することができる。
【００２４】
しかし、現実には、割込み要求が入力された後で、サービスが実施されないにも拘わらずその必要性が失われ、割込み要求の入力が中断される場合も考えられる。そのような場合には、割込み要求の中断によって、割込み要求レジスタ１の当該ビットが「０」になる。従って、割込み要求レジスタ１の当該ビットと割込み要求記憶レジスタ２の当該ビットの両方を考慮して、サービスを必要とする割込み入力端子を特定することにより、既に必要が無くなった割込み要求に対するサービスが実施されることを、防止することができる。
【００２５】
表１において、値ＩＮ０，ＩＮ１の一方のみが「１」である場合には、「１」である割込み入力にのみ割込みサービスが必要であるので、値ＰＲＩの値にかかわらず、「１」である割込み入力が選択される。一方、値ＩＮ０，ＩＮ１の両方が「１」である場合には、値ＰＲＩの値によって定められた優先度に従って、すなわち、値ＰＲＩが「０」である場合には、割込み入力端子ＩＲ０が選択され、「１」である場合には割込み入力端子ＩＲ１が選択され、割込みサービスの要求が行われる。
【００２６】
【表１】
2008171178.tif 000003
【００２７】
以下、手順を追って説明する。
（１）ユーザは、ＣＰＵによりタイマブロック６の書込み信号βを「０」にして、書込みデータαにより、「タイマ」に割込み頻度計測期間に相当する設定値（例えば、「０ｘ３Ｆ」）を書き込む。これにより、タイマブロック６内の「ＴＳＥＱ」は、ＩＤＬＥ→ＷＡＩＴＩへと遷移する。
【００２８】
（２）ユーザはＣＰＵにより計測開始のためにスタート命令信号γでスタート命令を書き込む。これにより、タイマブロック６内の「ＴＳＥＱ」は、ＷＡＩＴ→ＶＡＬＩＤへと遷移すると同時に、ＴＶＡＬＩＤが０→１へと変化する。
【００２９】
（３）今回（ＴＳＥＱ＝ＩＬＤＥ〜ＦＩＮＩＳＨに至るまで）は、先に設定した優先順位（もしくはハードウェア的に規定された初期値）を使用し、実際のサービスが実施される。それと同時に、カウントブロック７内の各カウンタ７２ｎ（ｎ＝０〜４）は、それぞれの割込み要求レジスタ１の当該ビットの立ち上がりエッジを、ＴＶＡＬＩＤ＝「１」の期間中、カウントする。
【００３０】
（４）タイマブロック６内の「タイマ」がゼロになると同時に、ＴＳＥＱ＝ＦＩＮＩＳＨとなり、これを受けて優先順位割当回路４内の各比較器の出力は、出力段のフリップフロップにそれぞれ記憶される。この、フリップフロップに記憶された値が、イン・サービス・レジスタが次に割り込みサービスの割り当てを行うときに利用される。以下、割込みサービス割り当ての際の手順を説明する。
【００３１】
（５）例えば、カウント値＃ｎ（ｎ＝０〜４）が表２のような場合は、
【表２】
2008171178.tif 000004
カウント値が少ない順、すなわち、割込み入力端子ＩＲ０がもっとも高く、割込み入力端子ＩＲ４，ＩＲ１，ＩＲ３，ＩＲ２の順に低くなる優先順位が設定される。この結果、例えば、値ＩＮｎ（ｎ＝０〜４）がすべて「１」である場合には、値ＩＳｎ（ｎ＝０〜４）は表３のようになる。
【００３２】
【表３】
2008171178.tif 000005
【００３３】
（６）上記の値ＩＳｎ（ｎ＝０〜４）を利用して、イン・サービス・レジスタ３は割込みサービスを割り当てる。すなわち、この場合には、値ＩＳｎ（ｎ＝０〜４）の内の最も大きな値に対応する割込み入力端子ＩＲ０に入力された割込み要求に対するサービスが、次に実施すべきサービスとして選択され、割込みサービス要求ＩＮＴがＣＰＵに発せられる。
【００３４】
このように、発生頻度が大きい割込み要求ほど優先順位を低く設定することで、発生頻度の小さい割込み要求が、頻度の大きな割込み要求にブロックされてなかなかサービスされないといった不具合を軽減でき、割込みサービスの機会の均等化を実現できることとなる。
【００３５】
なお、以上の実施例において、請求項に記載の「カウント手段」の具体例はカウンタ７２ｎ（ｎ＝０〜４）で、「優先順位割当手段」の具体例は優先順位割当回路４で、「要求選択手段」の具体例はイン・サービス・レジスタ３内に備えられる要求選択回路で、「割込み要求記憶手段」の具体例は割込み要求記憶レジスタ２で、それぞれ説明した。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施例の割込み制御装置の構成を示すブロック図である。
【図２】(a)はタイマブロック内のステートマシン「ＴＳＥＱ」の動作例を示すタイムチャート、(b)はＴＳＥＱの状態遷移図である。
【図３】本実施例の割込み制御装置のカウントブロックの構成を示すブロック図である。
【図４】本実施例の割込み制御装置の優先順位割当回路の構成（但し、割込み入力が２入力の場合）を示すブロック図である。
【符号の説明】
【００３７】
１：割込み要求レジスタ
２：割込み要求記憶レジスタ
３：イン・サービス・レジスタ
４：優先順位割当回路、４１：比較器、４２：セレクタ、４３：フリップフロップ、４４，４５，４６：アンドゲート、４７，４８：複合ゲート
５：制御回路
６：タイマブロック
７：カウントブロック、７１０，７１４：立上りエッジ検出回路、７２０，７２４：カウンタ
【図１】
2008171178.tif 000006
【図２】
2008171178.tif 000007
【図３】
2008171178.tif 000008
【図４】
2008171178.tif 000009