(57)【要約】【課題】デバイスが割り込み処理の実行要求をしてから割り込み処理のハンドラーが呼び出されるまでの時間である割り込みレイテンシーを効果的に短縮し、一定時間内の応答を保証することができる装置及び方法を提供する。【解決手段】汎用ＣＰＵと、他の処理よりも優先させる割り込み処理を実行するための割り込み処理プログラムを実行する割り込み用プロセッサとを備える。割り込み用プロセッサは、割り込み処理を実行する割り込み処理実行ユニットと、割り込み処理を実行するための割り込み処理プログラムを記憶するメモリと、割り込み処理の実行を要求する実行要求を検知する割り込み検知部と、割り込み処理を汎用ＣＰＵで実行するか、割り込み処理実行ユニットで実行するかを選択する割り込み処理選択部とを備える。【選択図】図２
2010140239.tif 000002
【特許請求の範囲】
【請求項１】
汎用ＣＰＵと、
他の処理よりも優先させる割り込み処理を実行するための割り込み処理プログラムを実行する割り込み用プロセッサと
を有し、
前記割り込み用プロセッサは、
割り込み処理を実行する割り込み処理実行ユニットと、
割り込み処理を実行するための割り込み処理プログラムを記憶するメモリと、
割り込み処理の実行を要求する実行要求を検知する割り込み検知部と、
割り込み処理を前記汎用ＣＰＵで実行するか、前記割り込み処理実行ユニットで実行するかを選択する割り込み処理選択部と
を備える装置。
【請求項２】
前記割り込み用プロセッサは、時間を計時するタイマを備え、
前記割り込み処理選択部は、
前記タイマによる計時により一定時間経過する都度、所定の条件が成立しているか否かを判断する基礎となる信号を出力し、
前記割り込み処理実行ユニットが、
出力された信号に基づいて所定の条件が成立しているか否かを判断して、前記割り込み処理実行ユニットで割り込み処理を実行するか否かを選択する請求項１記載の装置。
【請求項３】
前記割り込み用プロセッサは、一定のタスク数を上限として複数の割り込み処理を実行することが可能であり、
前記割り込み処理実行ユニットが、
割り込み処理ごとにラウンドロビン方式で実行することが可能な条件が成立しているか否かを判断する請求項２記載の装置。
【請求項４】
割り込み処理ごとに割り込みの状態に関する情報を記憶する状態レジスタを有し、
前記割り込み処理実行ユニットが、
前記状態レジスタに記憶されている割り込みの状態に関する情報に基づいて、実行することが可能な条件が成立しているか否かを判断する請求項３記載の装置。
【請求項５】
汎用ＣＰＵと、
他の処理よりも優先させる割り込み処理を実行するための割り込み処理プログラムを実行する割り込み用プロセッサと
を有し、
割り込み処理の実行を要求する実行要求を検知し、
割り込み処理を前記汎用ＣＰＵで実行するか、前記割り込み用プロセッサで実行するかを選択する方法。
【請求項６】
前記割り込み用プロセッサは、時間を計時するタイマを備え、
前記割り込み処理選択部は、
前記タイマによる計時により一定時間経過する都度、所定の条件が成立しているか否かを判断する基礎となる信号を出力し、
前記割り込み処理実行ユニットが、
出力された信号に基づいて所定の条件が成立しているか否かを判断して、前記割り込み処理実行ユニットで割り込み処理を実行するか否かを選択する請求項５記載の方法。
【請求項７】
前記割り込み用プロセッサは、一定のタスク数を上限として複数の割り込み処理を実行することが可能であり、
前記割り込み処理実行ユニットが、
割り込み処理ごとにラウンドロビン方式で実行することが可能な条件が成立しているか否かを判断する請求項６記載の方法。
【請求項８】
割り込み処理ごとに割り込みの状態に関する情報を記憶する状態レジスタを有し、
前記割り込み処理実行ユニットが、
前記状態レジスタに記憶されている割り込みの状態に関する情報に基づいて、実行することが可能な条件が成立しているか否かを判断する請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスが割り込み処理の実行要求をしてから割り込み処理のハンドラーが呼び出されるまでの時間である割り込みレイテンシーを短縮し、一定時間内の応答を保証することができる装置及び方法に関する。
【背景技術】
【０００２】
従来、割り込み処理が発生した場合には、割り込み要求を検知する割り込みコントローラは割り込み要求をＣＰＵへ通知し、ＣＰＵは、記憶装置に記憶してある割り込み処理プログラムに基づいて割り込み処理を実行する。図１は、従来の割り込み処理実行の具体例を示すブロック図である。
【０００３】
図１では、複数のデバイス１、１、・・・のいずれかからの割り込み要求を割り込みコントローラ２が検知した場合、割り込みコントローラ２は、割り込み要求をＣＰＵ３へ通知し、ＣＰＵ３で割り込み要求に対応した処理４が行われる。
【０００４】
従来の割り込み処理は次のような手順で行われる。外部割り込みが禁止状態でない場合、ＣＰＵ３が外部割り込み例外を起こし、ＯＳ（オペレーティングシステム）６の例外ハンドラを呼び出す。例外ハンドラーでは、割り込みが起きる直前に実行されていたプログラムの状態（以下、コンテキスト情報）を保存し、どのデバイスが割り込みを起こしたかを割り込みコントローラ２のレジスタを読み出すことにより確認する。デバイスが特定された場合、特定されたデバイスに対応するデバイスドライバ７の割り込み処理ルーチンを呼び出す（斯かる処理を以下、ディスパッチという）（第１レベル）。割り込み処理ルーチンでは緊急度の高い処理だけを実行し（第２レベル）、メインの処理は後で実行することができるように信号を送信して処理を終了する。その後、時間が空いた時に該信号を受信し、メインの処理が実行される（第３レベル）。さらに、より高度な処理はミドルウエア又はアプリケーション８により実行される（第４レベル）。
【０００５】
割り込み処理は、他のタスクに影響を与えないよう短時間で処理を完了することが望ましい。しかし、割り込み処理に相当の時間を要するデバイスが１つでも含まれている場合、割り込み処理がＣＰＵ３を占有することにより他の処理が待ち状態となり、割り込み要求から割り込み処理のハンドラーが呼び出されるまでの時間である割り込みレイテンシーを短縮することが困難になる場合が生じうる。すなわち、割り込み処理の第１レベルと第２レベルとを包括する処理５がボトルネックとなり、割り込み処理の実行が遅れるという問題点が潜在的に存在する。
【０００６】
例えば特許文献１では、高速割り込み処理用のプロセッサと、低速割り込み処理用のプロセッサとを備え、高速割り込み処理の実行中は低速割り込み処理用のプロセッサを停止状態とし、割り込み処理に伴うＣＰＵのレジスタの退避、復帰の時間を短縮することにより割り込みレイテンシーを短縮する高速割り込み処理方式が開示されている。また、特許文献２では、主となる汎用ＣＰＵと別のレジスタを有する優先割り込み専用ＣＰＵとを備え、割り込み処理発生時には優先割り込み専用ＣＰＵに割り込み処理を実行させることでレジスタの退避、復帰の時間を無くすことにより割り込みレイテンシーを短縮する半導体装置が開示されている。
【特許文献１】特開昭４９−９５５４８号公報
【特許文献２】特開平９−１８５５９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に開示されている高速割り込み処理方式では、複数のプロセッサが同時に実行することが無いので、実質上一のプロセッサで実行する場合と同様である。また、特許文献２では、割り込み処理に伴うＣＰＵのレジスタの退避、復帰の時間を無くすことはできるが、割り込み信号の発生する数だけ優先割り込み専用ＣＰＵを必要とする。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、デバイスが割り込み処理の実行要求をしてから割り込み処理のハンドラーが呼び出されるまでの時間である割り込みレイテンシーを効果的に短縮し、一定時間内の応答を保証することができる装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために第１発明に係る装置は、汎用ＣＰＵと、他の処理よりも優先させる割り込み処理を実行するための割り込み処理プログラムを実行する割り込み用プロセッサとを有し、前記割り込み用プロセッサは、割り込み処理を実行する割り込み処理実行ユニットと、割り込み処理を実行するための割り込み処理プログラムを記憶するメモリと、割り込み処理の実行を要求する実行要求を検知する割り込み検知部と、割り込み処理を前記汎用ＣＰＵで実行するか、前記割り込み処理実行ユニットで実行するかを選択する割り込み処理選択部とを備える。
【００１０】
また、第２発明に係る装置は、第１発明において、前記割り込み用プロセッサは、時間を計時するタイマを備え、前記割り込み処理選択部は、前記タイマによる計時により一定時間経過する都度、所定の条件が成立しているか否かを判断する基礎となる信号を出力し、前記割り込み処理実行ユニットが、出力された信号に基づいて所定の条件が成立しているか否かを判断して、前記割り込み処理実行ユニットで割り込み処理を実行するか否かを選択する。
【００１１】
また、第３発明に係る装置は、第２発明において、前記割り込み用プロセッサは、一定のタスク数を上限として複数の割り込み処理を実行することが可能であり、前記割り込み処理実行ユニットが、割り込み処理ごとにラウンドロビン方式で実行することが可能な条件が成立しているか否かを判断する。
【００１２】
また、第４発明に係る装置は、第３発明において、割り込み処理ごとに割り込みの状態に関する情報を記憶する状態レジスタを有し、前記割り込み処理実行ユニットが、前記状態レジスタに記憶されている割り込みの状態に関する情報に基づいて、実行することが可能な条件が成立しているか否かを判断する。
【００１３】
次に、上記目的を達成するために第５発明に係る方法は、汎用ＣＰＵと、他の処理よりも優先させる割り込み処理を実行するための割り込み処理プログラムを実行する割り込み用プロセッサとを有し、割り込み処理の実行を要求する実行要求を検知し、割り込み処理を前記汎用ＣＰＵで実行するか、前記割り込み用プロセッサで実行するかを選択する。
【００１４】
また、第６発明に係る方法は、第５発明において、前記割り込み用プロセッサは、時間を計時するタイマを備え、前記割り込み処理選択部は、前記タイマによる計時により一定時間経過する都度、所定の条件が成立しているか否かを判断する基礎となる信号を出力し、前記割り込み処理実行ユニットが、出力された信号に基づいて所定の条件が成立しているか否かを判断して、前記割り込み処理実行ユニットで割り込み処理を実行するか否かを選択する。
【００１５】
また、第７発明に係る方法は、第６発明において、前記割り込み用プロセッサは、一定のタスク数を上限として複数の割り込み処理を実行することが可能であり、前記割り込み処理実行ユニットが、割り込み処理ごとにラウンドロビン方式で実行することが可能な条件が成立しているか否かを判断する。
【００１６】
また、第８発明に係る方法は、第７発明において、割り込み処理ごとに割り込みの状態に関する情報を記憶する状態レジスタを有し、前記割り込み処理実行ユニットが、前記状態レジスタに記憶されている割り込みの状態に関する情報に基づいて、実行することが可能な条件が成立しているか否かを判断する。
【発明の効果】
【００１７】
本発明によれば、割り込み処理を実行する専用の割り込み用プロセッサを用いて、汎用ＣＰＵとは完全に独立して割り込み処理を実行することにより、例えばデバイスドライバ、ＯＳ等が無用の割り込み禁止時間を設けている場合、処理時間が長い場合等に、リアルタイム性が要求される割り込み処理の実行を阻害することを回避することができ、割り込みレイテンシーを大きく短縮することができ、一定時間内の応答を保証することができる。また、割り込み機能を有していないデバイスに対しても外部割り込み処理を実行することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態に係る割り込みレイテンシーを短縮する装置について、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
【００１９】
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
【００２０】
本発明の実施の形態では、割り込み処理を実行する専用の割り込み用プロセッサにより、汎用ＣＰＵとは完全に独立して割り込み処理を実行することにより、割り込みレイテンシーを大きく短縮することができる。また、ラウンドロビン方式で実行する各割り込み処理ルーチンの最大実行時間に制限を加えることにより、一定時間内に要求された割り込み処理ルーチンの実行が開始されることを保証することができる。さらに、割り込み機能を有していないデバイスに対しても外部割り込み処理を実行することが可能となる。
【００２１】
図２は、本発明の実施の形態に係る割り込みレイテンシーを短縮することができる半導体装置の構成例を示すブロック図である。本発明の実施の形態に係る半導体装置１０は、汎用ＣＰＵ３０と割り込み用プロセッサ２０とを備えている。汎用ＣＰＵ３０、割り込み用プロセッサ２０、デバイス１１、１１、・・・、メモリ４０は、バス５０を介して互いにデータ通信することが可能に接続されている。
【００２２】
半導体装置１０の割り込み用プロセッサ２０は、割り込み処理専用のＩ／Ｏ主体のプロセッサである。割り込み用プロセッサ２０は、割り込み検知部２１、割り込み処理選択部２２、割り込み処理実行ユニット２３、内部メモリ２４及びタイマ２５を備えている。割り込み処理実行ユニット２３はバスインタフェース２６を介してバス５０と接続されている。
【００２３】
割り込み検知部２１は、図１に示す従来の割り込みコントローラ２に相当し、デバイス１１、１１、・・・からの割り込み処理の実行を要求する実行要求（以下、割り込み要求という）を検知する。割り込み検知部２１は、割り込み要求を直接汎用ＣＰＵ３０へ通知するのではなく、割り込み処理選択部２２へ通知する。
【００２４】
割り込み処理選択部２２は、割り込み処理を汎用ＣＰＵ３０で実行するか、割り込み処理実行ユニット２３で実行するかを選択する。例えばデバイス１１からの割り込み要求における割り込み処理の種類を検出し、割り込み処理の種類がリアルタイム性が必要な処理、緊急性は無いが、汎用ＣＰＵ３０で実行するには処理時間が過大である処理等の場合には、割り込み用プロセッサ２０の内部で割り込み処理を実行するよう、割り込み処理実行ユニット２３へ割り込み要求を通知する（処理６２）。それ以外の処理である場合には、従来と同様、割り込み要求を汎用ＣＰＵ３０へ通知する（処理６１）。
【００２５】
割り込み処理プログラムは、汎用ＣＰＵ３０からバス５０を介して割り込み用プロセッサ２０内の内部メモリ２４にダウンロードしておく。したがって、割り込み要求を受け付けた割り込み処理実行ユニット２３は、内部メモリ２４から対応する割り込み処理プログラムを呼び出して割り込み処理を実行し、割り込み処理の完了を汎用ＣＰＵ３０へ通知する（処理６２）。
【００２６】
図３は、本発明の実施の形態に係る半導体装置１０における割り込みレイテンシーを短縮する原理の説明図である。図３（ａ）は、割り込み用プロセッサ２０を備えていない従来の半導体装置におけるデバイスＢの割り込み要求が有った場合の割り込みレイテンシーＴ１を、図３（ｂ）は、本発明の実施の形態に係る半導体装置１０におけるデバイスＢの割り込み要求が有った場合の割り込みレイテンシーＴ２を、それぞれ示している。
【００２７】
図３（ａ）に示すように、時刻ｔ＝０にてデバイスＢの割り込み要求が発せられてから、一定時間ｔ１経過後に汎用ＣＰＵ３０に到達する。そして、時刻ｔ＝ｔ２となるまでは、汎用ＣＰＵ３０による割り込み処理の禁止期間ΔＴとなり、時刻ｔ＝ｔ２になった時点で割り込み処理の実行を開始する。なお、図３（ａ）では、汎用ＣＰＵ３０により割り込み処理の禁止期間ΔＴが存在する場合について説明しているが、禁止期間ΔＴが存在しない場合には、ｔ＝ｔ１から割り込み処理の実行を開始する。
【００２８】
割り込み処理の実行を開始する場合、まず時刻ｔ＝ｔ２にて実行されている他のプログラムの状況に関する情報であるコンテキスト情報を保存し、ディスパッチする。斯かる処理はＯＳのハンドラーを呼び出すことにより実行される。そして、図３の例では、割り込み要求の有ったデバイスＢの割り込み処理を実行する場合、デバイスＡの割り込み処理Ａを実行する必要がある例としているため、デバイスＡに対応するデバイスドライバのハンドラーを呼び出して割り込み処理Ａを実行させた後、再度ＯＳのハンドラーを呼び出すことによりディスパッチする必要が生じる。
【００２９】
その後、時刻ｔ＝ｔ３にてデバイスＢに対応するデバイスドライバのハンドラーを呼び出して、割り込み要求に対する割り込み処理Ｂを実行させるので、割り込みレイテンシーＴ１は時刻ｔ＝０からｔ＝ｔ３までの時間ｔ３となる。
【００３０】
一方、図３（ｂ）では、時刻ｔ＝０にてデバイスＢの割り込み要求が発せられてから、汎用ＣＰＵ３０による割り込み処理の禁止期間も存在しない。したがって、他の割り込み処理ルーチンの処理待ち時間経過後の時刻ｔ＝ｔ４にて割り込み処理Ｂ１が実行される。この場合、割り込みレイテンシーＴ２は時刻ｔ＝０からｔ＝ｔ４までの時間ｔ４となり、割り込みレイテンシーを大きく短縮することができる。なお、説明図の都合上、処理時間の長い割り込み処理Ａが割り込み処理Ｂ１の後に実行されているように記載されているが、実際には、割り込み処理Ａは汎用ＣＰＵ３０にて実行されるので、割り込み処理Ｂ１と並行に処理されていることは言うまでも無い。
【００３１】
図２に戻って、割り込み用プロセッサ２０は、一定周期でポーリング処理に相当する割り込み処理を実行するためのタイマ（インターバルタイマ）２５を備えている。すなわち、デバイス１１、１１、・・・が、割り込み機能を有していない場合、通常はポーリング処理が実行される。ポーリング処理は一定時間間隔で信号を発することから、ＣＰＵ、バス等への負荷が大きい。そこで、本実施の形態ではタイマ２５の計時により一定周期で内部的にタイマ割り込みを発生させている。
【００３２】
一定周期で発生するタイマ割り込みにより後述の割り込み処理ルーチンが割り込み処理実行ユニット２３で実行される。汎用ＣＰＵ３０の代わりに、実行される割り込み処理ルーチンの中でデバイスの状態を確認し、所定の条件が成立した時点でＣＰＵ３０に対して割り込み要求を通知する（図２の処理６３）。したがって、例えば割り込み機能を有していないメモリデバイス等にも汎用ＣＰＵ３０に対する割り込み機能を持たせることができる。図４は、デバイス１１が割り込み機能を有していない場合に、従来のように汎用ＣＰＵ３０にてポーリング処理を実行する場合と、割り込み用プロセッサ２０の内部で割り込み処理を実行する場合とを比較するタイムチャートである。
【００３３】
図４（ａ）は、汎用ＣＰＵ３０にてポーリング処理を実行する場合の汎用ＣＰＵ３０のタイムチャートを示しており、図４（ｂ）は、割り込み用プロセッサ２０にて割り込み処理を実行する場合の汎用ＣＰＵ３０及び割り込み用プロセッサ２０のタイムチャートを示している。
【００３４】
図４（ａ）において、時刻ＴＳ０から時刻ＴＳ１までは、汎用ＣＰＵ３０によりタスクＡが実行されている。時刻ＴＳ１にて制御がＯＳに渡され、時刻ＴＳ２にてタスクＢが実行される。タスクＢの中で所定の条件が成立しているか否かを判断する判断処理が実行され、所定の条件が成立していないと判断した場合、時刻ＴＳ３にて制御をＯＳへ戻し、時刻ＴＳ４からタスクＣを実行する。以後、同様の処理を繰り返して時刻ＴＳ５にて所定の条件が成立していると判断した場合、タスクＢは所定の条件が成立している場合の処理の実行を開始する。
【００３５】
一方、図４（ｂ）において、時刻ＴＳ０から時刻ＴＳ１までは、汎用ＣＰＵ３０によりタスクＡが実行されている。時刻ＴＳ１にて制御がＯＳに渡されるまでは、図４（ａ）と同様である。図４（ｂ）では、時刻ＴＳ１にて制御がＯＳに渡された後、タイマ２５の計時により一定周期で割り込み用プロセッサ２０による、所定の条件が成立しているか否かを判断する判断処理が実行される。
【００３６】
すなわち、時刻ＴＳ２’にて割り込み用プロセッサ２０が汎用ＣＰＵ３０とは独立に所定の条件が成立しているか否かを判断する判断処理を実行し、所定の条件が成立していないと判断した場合、時刻ＴＳ３’にて判断処理を終了する。以後、割り込み用プロセッサ２０は、一定周期で判断処理を実行し、時刻ＴＳ６にて判断処理を実行して時刻ＴＳ７にて所定の条件が成立していると判断した場合、時刻ＴＳ８にて汎用ＣＰＵ３０に対して割り込み要求を通知し、時刻ＴＳ９にてタスクＢは所定の条件が成立している場合の処理の実行を開始する。
【００３７】
図４（ａ）と図４（ｂ）とを比較すればわかるように、割り込み用プロセッサ２０のタイマ割り込みを繰り返し発生させることにより、タスクＢを毎回起動させる必要が無くなり、ＯＳへ制御を戻す回数が減少する。また、タスクＢにおける判断処理の必要がないことから、汎用ＣＰＵ３０の負荷も軽減することができる。よって、デバイス１１が割り込み機能を有していない場合であっても、ポーリング処理を実行することなく外部割り込み処理を実行することができる。
【００３８】
図５は、本発明の実施の形態に係る割り込み用プロセッサ２０の詳細構成を示す模式図である。図５では、いわゆるラウンドロビン方式にて割り込み処理を実行する場合を例に挙げて説明する。本実施の形態に係る割り込み用プロセッサ２０は、１つのＩＰコア（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ  Ｃｏｒｅ）としてＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）に組み込むことを前提としている。
【００３９】
図５において、バス５０は汎用ＣＰＵ３０のローカルバスである。バス５０を経由して汎用ＣＰＵ３０から制御レジスタ５１及び内部メモリ２４へアクセスすることができる。また、割り込み処理実行ユニット２３は、バス５０のバスマスターとしても機能する。ほとんどの処理は、割り込み用プロセッサ２０の内部で完結され、デバイス１１にアクセスする場合のみ汎用ＣＰＵ３０と共有するバス５０を占有する。
【００４０】
各デバイス１１からの割り込み要求及びタイマ２５からのタイマ割り込みの割り込み要求のうち、最大ｎ個（ｎは自然数）の割り込み要求が割り込み処理実行ユニット２３へ通知される。ここでｎは固定値であり、割り込み処理実行ユニット２３をＳｏＣに組み込む時点でハードウウエア的に決定される。内部メモリ２４にはｎ個の割り込み処理ルーチンが汎用ＣＰＵ３０からバス５０を介して事前にダウンロードされている。
【００４１】
一の割り込み処理実行ユニット２３は、内部メモリ２４に記憶してある割り込み処理ルーチンＰ０、Ｐ１、・・・Ｐn-1 を順次切り替えながら実行する。割り込み処理ルーチンＰｉ（ｉは０〜ｎ−１の整数）が実行されるのは、割り込み処理ルーチンＰｉが有効であり、割り込み要求がアクティブである場合のみである。割り込み要求１回につき割り込み処理ルーチンＰｉを１度だけ実行し、必要な場合には最後に汎用ＣＰＵ３０に対して割り込み要求を通知する。
【００４２】
割り込み処理の実行中に他の処理が割り込むことは無いが、一定時間Ｔｉｍｅｏｕｔ内に割り込み処理ルーチンが終了しない場合には、割り込み処理実行ユニット２３は強制的に次の割り込み処理ルーチンＰi+1 に制御を渡す。割り込み処理ルーチンを切り替える場合のコンテキスト情報の保存は、割り込み処理実行ユニット２３によりハードウエア的に実行される。
【００４３】
制御レジスタ５１は、割り込み処理ルーチンＰｉの数に対応し、例えば３２ビットレジスタとして構成されている。図６は、割り込み要求と割り込み処理ルーチンＰｉ又は汎用ＣＰＵ３０への割り込み要求Ｒとの対応付けを示す模式図である。
【００４４】
図７は、論理スイッチＳｊ（ｊは０からｍ−１の整数、ｍは自然数）及びＳｔの構成を示す例示図である。図７の例では、１つのＡＮＤ回路と１つのＮＯＴ回路を組み合わせて、割り込み要求を汎用ＣＰＵ３０へ通知することを示す信号ｒを出力する。図６の論理スイッチＳ０、Ｓ１、・・・、Ｓ（ｍ−１）及びＳｔから出力された信号をそれぞれｒ０、ｒ１、・・・、ｒ（ｍ−１）及びｒｔとし、論理回路ＧのＯＲ回路により、汎用ＣＰＵ３０へ通知する割り込み要求Ｒを特定する。
【００４５】
なお、論理スイッチＳ０、Ｓ１、・・・、Ｓ（ｍ−１）及びＳｔには、イネーブル信号（ＥＮＡＢＬＥ）、リクエスト信号（ＲＥＱＵＥＳＴ）、セレクト信号（ＳＥＬＥＣＴ）が入力される。イネーブル信号は、割り込み信号の出力を行うか否かを示しており、リクエスト信号は、割り込み要求を受け付けたか否かを示している。セレクト信号は、割り込み要求を汎用ＣＰＵ３０へ通知するか、割り込み処理実行ユニット２３へ通知するかを示している。図６の論理回路Ｈｊ（ｊは０〜ｍ−１の整数）のＡＮＤ回路への入力も同様である。
【００４６】
図６に示すように、割り込み要求を汎用ＣＰＵ３０へ通知するか、割り込み処理実行ユニット２３へ通知するか、は、図７に示すセレクト信号により決定される。論理回路Ｇは、複数の論理スイッチＳｊ及びタイマ２５用の論理スイッチＳｔを備えており、複数の論理スイッチＳｊ及びタイマ２５用の論理スイッチＳｔからの出力信号ｒ０、ｒ１、・・・、ｒ（ｍ−１）及びｒｔの中からＯＲ回路にて特定した出力信号を割り込み要求Ｒとして汎用ＣＰＵ３０へ通知する。
【００４７】
各論理回路Ｈｉ（ｉは０〜ｎ−１の整数）は、ｍ個（ｍは自然数）の割り込み要求０、割り込み要求１、・・・、割り込み要求（ｍ−１）、及びタイマ割り込み要求に対応してＡＮＤ回路をそれぞれ設けておき、割り込み要求ｊ（ｊは０〜ｍ−１の整数）又はタイマ割り込み要求が出された場合には、割り込み要求ｊ（ｊは０〜ｍ−１の整数）又はタイマ割り込み要求が出されたＡＮＤ回路のみがオン状態の信号ｐｊ又はｐｔを出力し、ＯＲ回路により割り込み要求ｊに対応した任意の割り込み処理ルーチンＰｉ（ｉは０〜ｎ−１の整数）のみがアクティブとなる。
【００４８】
図８は、本発明の実施の形態に係る制御レジスタ５１の構成を示す模式図である。制御レジスタ５１は、内部に割り込み処理ルーチンＰ０〜Ｐn-1 にそれぞれ対応したレジスタ群７１、７１、・・・を設けてあり、それぞれ割り込み処理プログラムの開始アドレスレジスタ（ＳＴＡＲＴ）、終了アドレスレジスタ（ＥＮＤ）、現在実行中のアドレスを示すインストラクションポインタ（ＩＡＲ）、状態レジスタ（ＳＴＡＴ）、イネーブルレジスタ（ＥＮＡＢＬＥ）、及びリクエストレジスタ（ＲＥＱＵＥＳＴ）で構成されている。
【００４９】
割り込み要求ｉを受信した割り込み処理実行ユニット２３は、割り込み処理ルーチンＰｉの処理の順番が回ってくると、Ｐｉに対応する図８に示すレジスタ群７１を照会しながら、内部メモリ２４から割り込み処理ルーチンＰｉを読み出して割り込み処理を実行する。割り込み処理が完了した場合には、割り込み処理の完了を汎用ＣＰＵ３０へ通知する。
【００５０】
図９は、本発明の実施の形態に係る状態レジスタ（ＳＴＡＴ）のビット配列の例示図である。図９の例では、ビット０から順に、割り込み処理ルーチンＰｉが有効であるか否かを示すＶ（Ｖａｌｉｄ）ビット、割り込み要求が発生しているか否かを示すＴ（Ｔｒｉｇｇｅｒ）ビット、割り込み処理中であるか否かを示すＰ（Ｉｎ  Ｐｒｏｃｅｓｓ）ビット、及び汎用ＣＰＵ３０へ割り込み要求が通知されているか否かを示すＩ（Ｉｎｔｅｒｒｕｐｔ）ビットが配置されている。
【００５１】
割り込み処理実行ユニット２３は、図８に示すように制御レジスタ５１のレジスタ群７１、７１、・・・の状態レジスタ（ＳＴＡＴ）をそれぞれ照会し、該当する割り込み処理ルーチンＰｉを実行する。また、レジスタ群７２は、割り込み処理ルーチンＰｉで使用される汎用レジスタＧＰＲ０、ＧＰＲ１、・・・、ＧＰＲｉで構成されている。ほとんどの処理は、割り込み用プロセッサ２０の内部で完結しており、デバイス１１、１１、・・・に対する処理が発生した場合にのみバス５０を介してデータ通信すれば足りるので、汎用ＣＰＵ３０による割り込み処理の実行時に比べてバス５０の通信負荷を大きく低減することが可能となる。
【００５２】
各レジスタ群７１に設けてあるレジスタＥＮＡＢＬＥは、割り込み信号の出力を行うか否かを示しており、レジスタＲＥＱＵＥＳＴは、割り込み要求を受け付けたか否かを示している。なお、レジスタＲＥＱＵＥＳＴは、割り込み要求に対する処理がペンディング状態であるか否か（ステータス）を示しており、一般に割り込みステータスレジスタと呼ばれているレジスタと同様である。
【００５３】
また、レジスタＴＩＭＥＲは、割り込み処理ルーチンのタイムアウト時間を書き込んであり、レジスタＳＥＬＥＣＴは、割り込み要求を汎用ＣＰＵ３０へ通知するか、割り込み処理実行ユニット２３へ通知するかを示している。
【００５４】
図１０は、本発明の実施の形態に係るレジスタＳＴＡＴによる割り込み処理ルーチンＰｉ特定方法の例示図である。図１０では、割り込み処理ルーチンＰ０〜Ｐn-1 にそれぞれ対応したレジスタ群７１に含まれるレジスタＥＮＡＢＬＥ（図１０（ａ））、レジスタＲＥＱＵＥＳＴ（図１０（ｂ））及び制御レジスタ５１に１個だけ設けてあるレジスタＳＥＬＥＣＴが、それぞれ３２ビット構成である場合について説明する。各レジスタのビットは、各割り込み要求信号に対応している。例えば、割り込み要求番号０がレジスタＲＥＱＵＥＳＴのビット０（ＭＳＢ）に対応し、タイマ割り込みが同レジスタのビット３１（ＬＳＢ）に対応する。また、レジスタＥＮＡＢＬＥとレジスタＲＥＱＵＥＳＴとは各割り込み処理ルーチンＰｉごとに設けてあり、一又は複数の割り込み要求番号に対応付けることが可能となっている。
【００５５】
例えば、レジスタＥＮＡＢＬＥの値が３２‘ｂ１１１０・・・０００である場合、割り込み要求番号０、１、２が有効である。ここで、レジスタＳＥＬＥＣＴの値が３２‘ｂ１１００・・・０００となった場合、割り込み要求番号０、１に対しては割り込み用プロセッサ２０の内部で処理（図２の処理６２）し、割り込み要求番号２に対しては汎用ＣＰＵ３０で処理（図２の処理６１）することを意味している。デバイス１１の割り込み要求があり、レジスタＲＥＱＵＥＳＴのビット０又はビット１が‘１’となった場合、対応する割り込み処理ルーチンＰｉが割り込み処理実行ユニット２３で実行される。
【００５６】
割り込み処理実行ユニット２３は、図５の内部メモリ２４に示すように、ラウンドロビン方式で割り込み処理ルーチンＰｉを順次切り替えつつ実行する。図１１は、割り込み処理ルーチンＰｉの動作を説明する処理の説明図である。図１１は、説明をわかりやすくするためにプログラミング言語風に記述しているが、割り込み処理実行ユニット２３がハードウエア的に行う処理を示している。
【００５７】
図１１において、割り込み要求が生じ（Ｔ＝１）、対応する割り込み処理ルーチンＰｉが有効（Ｖ＝１）である場合、レジスタＴＩＭＥＲで指定されるタイムアウト値を残り時間を示すレジスタＴＬＥＦＴにロードする。レジスタＴＬＥＦＴの値は、割り込み用プロセッサ２０のクロックに同期して‘０’になるまで自動的に減少する。
【００５８】
次に、割り込み処理が実行中であることを示すフラグＰを‘１’とし、開始アドレスレジスタ（ＳＴＡＲＴ）を現在の実行アドレス（ＩＡＲ＝ＳＴＡＲＴ）として実行を開始する。割り込み処理ルーチンＰｉの現在の実行アドレスが終了アドレスレジスタ（ＥＮＤ）に到達した場合（ＩＡＲ＝ＥＮＤ）、必要ならば汎用ＣＰＵ３０へ割り込み要求を通知し（Ｉ＝１）、フラグＰを‘０’にして処理を終了する。また、割り込み処理ルーチンＰｉがレジスタＴＩＭＥＲで指定されたタイムアウト時間内に終了しない場合、割り込み処理ルーチンＰｉにより使用されるレジスタ群７２（汎用レジスタＧＰＲｉ、カウントレジスタＣＴＲ等）に記憶されている値を退避してから、強制的に次の割り込み処理ルーチンへと制御を渡す（タスクスイッチ）。
【００５９】
そして、同一の割り込み処理ルーチンの順番が再び回ってきた場合、フラグＰ＝１であるときには前回退避したレジスタ群７２のコンテキスト情報を各レジスタに復帰させる。ただし、レジスタ群７２を割り込み処理ルーチンの数ｎだけ設けている場合には、退避及び復帰は不要となる。前回タスクスイッチを行った時点での実行アドレスはレジスタＩＡＲに残っているので、レジスタＩＡＲに残っているアドレスから実行を再開し、割り込み処理ルーチンＰｉの現在の実行アドレスが終了アドレスレジスタ（ＥＮＤ）に到達するか（ＩＡＲ＝ＥＮＤ）、タイムアウトしてタスクスイッチが行われるまで割り込み処理ルーチンＰｉの実行を続ける。
【００６０】
通常のＣＰＵでは、タスクスイッチに必要な処理はＯＳ等のソフトウエアにより行われる。しかし、上述のように本発明では、タスクスイッチに必要な処理はハードウエア的に実行されることから、ＯＳは不要となる。
【００６１】
また、割り込みレイテンシーの最大値Ｔmax は、ラウンドロビン方式による割り込み処理ルーチンの実行により、次に処理の順番が回ってくるまでの時間の最大値に等しい。したがって、割り込みレイテンシーの最大値Ｔmax は、式（１）にて表すことができる。つまり、割り込み処理ルーチンの数ｎが固定値であるため、式（１）の時間内に割り込み処理が実行されることが保証される。
【００６２】
Ｔmax ＝Ｔｉｍｅｏｕｔ×ｎ＋オーバヘッド時間    ・・・  式（１）
【００６３】
ここでオーバヘッド時間とは、コンテキスト情報の保存等に要する時間を意味しており、ＯＳによるタスク切り替え時間と比べるとはるかに小さい。
【００６４】
通常のＣＰＵ上で実行する割り込み処理ルーチンの場合、他の割り込み処理への影響を考慮してできるだけ短い時間で処理できるように記述するのが鉄則である。本発明では、長い処理時間を要する割り込み処理ルーチンを使用した場合であっても他の割り込み処理に対するレイテンシーに影響を与えない。したがって、図１の第３レベルで行っていたようなメインの処理を割り込み処理ルーチンの中に含めても問題とはならない。
【００６５】
以上のように本実施の形態によれば、割り込み処理を実行する専用の割り込み用プロセッサ２０を用いて、汎用ＣＰＵ３０とは完全に独立して割り込み処理を実行することにより、例えばデバイスドライバ、ＯＳ等が無用の割り込み禁止時間を設けている場合、処理時間が長いデバイスドライバのハンドラーが実行されている場合等であっても、それに影響されることなくリアルタイム性が要求される割り込み処理を即座に実行することができる。また、割り込み機能を有していないデバイスに対しても外部割り込み処理を実行することが可能となる。
【００６６】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。
【図面の簡単な説明】
【００６７】
【図１】従来の割り込み処理実行の具体例を示すブロック図である。
【図２】本発明の実施の形態に係る割り込みレイテンシーを短縮することができる半導体装置の構成例を示すブロック図である。
【図３】本発明の実施の形態に係る半導体装置における割り込みレイテンシーを短縮する原理の説明図である。
【図４】デバイスが割り込み機能を有していない場合に、従来のように汎用ＣＰＵにてポーリング処理を実行する場合と、割り込み用プロセッサにて割り込み処理を実行する場合とを比較するタイムチャートである。
【図５】本発明の実施の形態に係る割り込み用プロセッサの詳細構成を示す模式図である。
【図６】割り込み要求と割り込み処理ルーチン又は汎用ＣＰＵへの割り込みとの対応付けを示す模式図である。
【図７】論理スイッチの構成を示す例示図である。
【図８】本発明の実施の形態に係る制御レジスタの構成を示す模式図である。
【図９】本発明の実施の形態に係る状態レジスタ（ＳＴＡＴ）のビット配列の例示図である。
【図１０】本発明の実施の形態に係るレジスタＳＴＡＴによる割り込み処理ルーチンＰｉ特定方法の例示図である。
【図１１】割り込み処理ルーチンＰｉの動作を説明する処理の説明図である。
【符号の説明】
【００６８】
１０  半導体装置
１１  デバイス
２０  割り込み用プロセッサ
２１  割り込み検知部
２２  割り込み処理選択部
２３  割り込み処理実行ユニット
２４  内部メモリ
２５  タイマ（インターバルタイマ）
３０  汎用ＣＰＵ
５１  制御レジスタ
【図１】
2010140239.tif 000003
【図２】
2010140239.tif 000004
【図３】
2010140239.tif 000005
【図４】
2010140239.tif 000006
【図５】
2010140239.tif 000007
【図６】
2010140239.tif 000008
【図７】
2010140239.tif 000009
【図８】
2010140239.tif 000010
【図９】
2010140239.tif 000011
【図１０】
2010140239.tif 000012
【図１１】
2010140239.tif 000013