(57)【要約】【課題】  割込処理に関する設計が効率良くできるようにすると共に、設計の柔軟度を高める。【解決手段】  割込ハンドラ記憶部１０４は、割込ソース毎に割込ハンドラを１つ以上登録することが可能な割込ハンドラ登録部１０２を介して登録された割込ハンドラと、割込ソースとを対応付けて記憶する。割込処理部１１０の検索部１１２は、割込要求が発生した割込ソースに対して、割込ハンドラ記憶部１０４に記憶された該割込ソースの割込ハンドラを検索する。実行部１１６は、検索部１１２により得られた割込ハンドラを順次実行する。【選択図】          図１
2006343802.tif 000002
【特許請求の範囲】
【請求項１】
割込ソース毎に、互いに独立して実行される１つ以上の割込ハンドラを登録し、
割込要求が発生した割込ソースに対して、該割込ソースについて登録された割込ハンドラを検索し、
前記検索により得られた、前記割込ソースに関する前記割込ハンドラを順次実行することを特徴とする割込処理方法。
【請求項２】
割込ハンドラを登録するための割込ハンドラ登録部と、
該割込ハンドラ登録部により登録された前記割込ハンドラを記憶する割込ハンドラ記憶部と、
割込ハンドラ検索部と、
割込実行部とを有する割込み処理システムであって、
前記割込ハンドラ登録部は、割込ソース毎に割込ハンドラを１つ以上登録し、
前記割込ハンドラ検索部は、割込要求が発生した割込ソースに対して、前記割込ハンドラ記憶部に記憶された該割込ソースの割込ハンドラを検索し、
前記割込実行部は、前記割込ハンドラ検索部により得られた前記割込ハンドラを順次実行することを特徴とする割込処理システム。
【請求項３】
割込ソース毎に割込ハンドラを記憶した割込ハンドラ記憶部と、
割込要求が発生した割込ソースに対して、前記割込ハンドラ記憶部に記憶された該割込ソースの割込ハンドラを検索する割込ハンドラ検索部と、
該割込ハンドラ検索部により得られた前記割込ハンドラを順次実行する割込実行部とを有することを特徴とする割込処理装置。
【請求項４】
前記割込ハンドラ記憶部が、
割込ハンドラ本体を記憶する本体記憶部と、
該本体記憶部における、割込ハンドラ本体が記憶された場所を示す場所情報を記憶する本体場所記憶部とを有し、
前記割込ハンドラ検索部は、割込要求が発生した割込ソースの場所情報を検索し、
前記割込実行部は、前記割込ハンドラ検索部により得られた前記場所情報により示される場所に記憶された割込ハンドラ本体を実行させることを特徴とする請求項３記載の割込処理装置。
【請求項５】
単一の割込ソースに対して、その割込ハンドラを複数記憶する領域を有することを特徴とする割込ハンドラ記憶装置。
【請求項６】
割込ソースを単位として複数に分割されていることを特徴とする請求項５に記載の割込ハンドラ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割込処理、具体的にはコンピュータシステムにおける割込処理の方法およびシステム、装置並びにそのための割込ハンドラ記憶装置に関するものである。
【背景技術】
【０００２】
コンピュータシステムにおいて、例えばＣＰＵなどのプロセッサは、通常、与えられた処理をメインルーチンとして順次こなしていくが、割込み要求が発生した際に、割込要求に応じた割込処理を行う必要がある。
【０００３】
例えば特許文献１に記載のように、従来、割込ソース毎に、割込要求が発生したときの処理すなわち実行されるプログラムを割込ハンドラとして登録しておき、該当する割込ソースについての割込要求が発生した際に、登録されたその割込ハンドラによる処理を実行すると共に、処理が終了すれば、元のメインルーチンに戻るように、割込処理が行われていた。
【特許文献１】特開平１１−１８４７１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
１つの割込ソースに関する割込要求が発生した際の処理は、複数の処理を含む場合があり得る。例えば割込ソースＡに関する割込要求が発生した際に、対応する割込処理として、処理１、処理２、処理３が順に実行される処理となる場合を想定すると、従来の割込処理方法では、処理１、処理２、処理３を実現するための１つの処理プログラムを、割込ハンドラとして登録することになる。そのため、例えば、処理１、処理２、処理３の実行順番を変えたい場合や、処理１、処理２、処理３のうちのいずれか１つまたは複数を削除したい場合や、他の処理としての処理４を追加したい場合など、システムの仕様を変更したいとき、割込ハンドラとしてのプログラム全体を変更しなければならず、手間がかかり、設計の柔軟度も低いという問題がある。
【０００５】
本発明は、上記事情に鑑みてなされたものであり、割込処理の設計を効率よくすることができると共に、設計の柔軟度を高めることができる割込処理の方法およびシステム、装置並びにそのための割込ハンドラ記憶装置を提供することを目的とするものである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明による割込処理方法は、割込ソース毎に、互いに独立して実行される１つ以上の割込ハンドラを登録し、割込要求が発生した割込ソースに対して、該割込ソースについて登録された割込ハンドラを検索し、この検索により得られた、前記割込ソースに関する前記割込ハンドラを順次実行する。
【０００７】
また、本発明による割込処理システムは、割込ハンドラを登録するための割込ハンドラ登録部と、該割込ハンドラ登録部により登録された割込ハンドラを記憶する割込ハンドラ記憶部と、割込ハンドラ検索部と、割込実行部とを有する割込み処理システムであって、割込ハンドラ登録部は、割込ソース毎に割込ハンドラを１つ以上登録し、割込ハンドラ検索部は、割込要求が発生した割込ソースに対して、割込ハンドラ記憶部に記憶された該割込ソースの割込ハンドラを検索し、割込実行部は、前記割込ハンドラ検索部により得られた前記割込ハンドラを順次実行する。
【０００８】
本発明による割込処理装置は、割込ソース毎に割込ハンドラを記憶した割込ハンドラ記憶部と、割込要求が発生した割込ソースに対して、割込ハンドラ記憶部に記憶された該割込ソースの割込ハンドラを検索する割込ハンドラ検索部と、割込ハンドラ検索部により得られた割込ハンドラを順次実行する割込実行部とを有するものである。
【０００９】
また、本発明による割込処理装置の割込ハンドラ記憶部は、割込ハンドラ本体を記憶する本体記憶部と、該本体記憶部における、割込ハンドラ本体が記憶された場所を示す場所情報を記憶する本体場所記憶部とを有し、割込ハンドラ検索部は、割込要求が発生した割込ソースの場所情報を検索し、割込実行部は、割込ハンドラ検索部により得られた前記場所情報により示される場所に記憶された割込ハンドラ本体を実行させる。
【００１０】
本発明の割込ハンドラ記憶装置は、単一の割込ソースに対して、その割込ハンドラを複数記憶する領域を有することを特徴とするものである。
【００１１】
また、この割込ハンドラ記憶装置は、割込ソースを単位として複数に分割されているものであってもよい。
【００１２】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によれば、割込処理の設計を効率よくすることができると共に、設計の柔軟度を高めることができる。
【発明を実施するための最良の形態】
【００１４】
本発明は、従来の割込処理方法では、１つの割込ソースに１つのハンドラを登録するようになっている。そのハンドラ内で実行される処理が仮に処理１、処理２、処理３など、複数存在していても、それらをまとめて１つのハンドラ内に記述し、このハンドラを割込ソースに対応づけて記憶している。本発明者は、複数の処理（以下単に「処理１」「処理２」「処理３」で説明する）がひとつのハンドラ内にまとめて記述されている点に着目し、以下の方法によって前述の課題を解決する技術を提案する。
【００１５】
１．従来、ひとつのハンドラ内に記述された処理１、処理２、処理３をそれぞれ単独で実行可能な形式に変更する。
【００１６】
２．処理１、処理２、処理３をそれぞれ新たに「割込ハンドラ」と把握し、例えば、いまある割込ソースに対してこれらの処理すべての実行が必要であれば、その割込ソースに対して、これら３つのハンドラを登録する。
【００１７】
３．仮に、これらの処理のうち、処理２と処理３のみの実行が必要であれば、それらふたつのハンドラを割込ソースに対して登録する。
【００１８】
すなわち、従来は複数の処理をまとめてひとつのハンドラとしていたものを、各処理を独立に実行可能なハンドラとして組み替えることにより、これらのハンドラを自由に並び替え可能な部品として利用するものである。このように、本発明は、割込要求が発生した際に実行すべき処理が複数あるとき、これらの複数の処理を互いに独立して実行するという技術思想に基づくものである。ここで、「複数の処理を互いに独立して実行する」とは、これらの複数の処理は、互いに依存しないことを意味し、例えば、１つの処理は他の処理の結果を必要とすることや、１つの処理は他の処理の一部を呼び出すことなどがないことを意味する。
【００１９】
以下、本発明を実施するための最良の形態について、図面を参照して説明する。
【００２０】
はじめに、図１から図４を参照して、概要を説明する。
図１は、本発明による割込処理システム１００の概要を示すブロック図である。図示のように、割込処理システム１００は、割込ハンドラ登録部１０２と、割込ハンドラ記憶部１０４と、割込処理部１１０とを有してなり、割込処理部１１０は、検索部１１２と、実行部１１６とからなる。
【００２１】
割込ハンドラ登録部１０２は、割込ハンドラを登録するためのものであり、例えばシリアルインターフェース、ネットワークインターフェースなど、データを割込ハンドラ記憶部１０４に転送することができるインタフェースおよびそのためのソフトウェアや、ＲＯＭライターなど、開発者がそれを用いて割込ソース毎に割込ハンドラを登録することができればいかなるものであってもよい。また、割込ハンドラ登録部１０２は、登録された割込ハンドラを削除することによって、その割込ハンドラの登録を解除することができる。
【００２２】
割込ハンドラ登録部１０２を介して登録された割込ハンドラは、割込ハンドラ記憶部１０４に記憶される。図２に示すように、割込ハンドラ記憶部１０４において、割込ソース毎に、割込ハンドラが記憶されている。なお、割込ソースは、例えばタイマー、ＵＳＢ、シリアル、ＤＭＡなど、割込要求が発生し得るいかなるソースであってもよい。
【００２３】
割込ハンドラ登録部１０２は、１つの割込ソースに対して複数の割込ハンドラを登録することができ、割込ハンドラ記憶部１０４は、１つの割込ソースに対して複数の割込ハンドラを記憶し得る領域を有する。図２に示すように、割込ソースＡに対しては、割込ハンドラＨＡ１、ＨＡ２、ＨＡ３が複数記憶されており、割込ソースＢ、割込ソースＣに対しては、それぞれに対応する１つの割込ハンドラＨＢ、ＨＣが記憶されている。
【００２４】
ここで、１つの割込ソースに対する複数の割込ハンドラは、互いに独立して実行されるものである。すなわち、１つのハンドラは他のいずれかのハンドラの実行結果を必要としたり、実行中に他のハンドラを呼び出したりするなどの依存関係は、これらの複数の割込ハンドラの間には存在しないものである。
【００２５】
図３は、図１に示す割込処理システム１００における割込処理部１１０による処理を示すフローチャートである。割込処理部１１０は、割込要求の発生を動作開始のトリガーとする。図３に示すように、割込要求が発生する（Ｓ１０：Ｙｅｓ）と、割込処理部１１０の検索部１１２は、割込要求が発生した割込ソースを確認し、割込ハンドラ記憶部１０４からこの割込ソースの割込ハンドラを検索する（Ｓ１２）。そして、実行部１１６は、検索部１１２により得られた割込ハンドラを実行する（Ｓ１４）。ここで、ステップＳ１２において得られた割込ハンドラが１つしかない場合（図２に示す例では、割込要求が発生した割込ソースが割込ソースＢまたは割込ソースＣである場合）においては、実行部１１６は、この１つのハンドラを実行して割込処理を終了する一方、ステップＳ１２において得られた割込ハンドラが複数ある場合（図２に示す例では、割込要求が発生した割込ソースが割込ソースＡである場合）においては、実行部１１６は、割込ハンドラＨＡ１、ＨＡ２、ＨＡ３を順次実行する。
【００２６】
また、割込ハンドラＨＡ１、ＨＡ２、ＨＡ３を順次実行することとは、割込ハンドラ記憶部１０４に記憶された記憶順、例えば図２の例ではＨＡ１、ＨＡ２、ＨＡ３の順で順次実行することであってもよいが、これに限られることではない。例えば図４に示すように、１つの割込ソースに関する複数の割込ハンドラを登録する際に、それぞれが実行される順番を示す情報（図４に示す実行順）も登録し、検索部１１２は、割込ハンドラを検索する際にその実行順も検索し、実行部１１６は、実行順の最も高い割込ハンドラから実行するようにしてもよい。図４に示す例では、割込ソースＡに関する３つの割込ハンドラの実行順は、ＨＡ２、ＨＡ１、ＨＡ３の順となる。
【００２７】
以下、本発明の実施形態を詳細に説明する。
【００２８】
図５は、本発明の実施形態におけるプロセッサシステム１の構成を示すブロック図である。図示のように、本実施形態におけるプロセッサシステム１は、ＣＰＵ１０と、ＲＯＭ３０と、メインメモリ４０とを有してなる。ＣＰＵ１０は、ＤＭＡＣ１２と、デコーダ１４と、割込処理部２０とを有し、ＲＯＭ３０には、ルックアップテーブルＬＵＴ３２が記憶されており、メインメモリ４０には、割込ハンドラの本体（以下ハンドラ本体という）が記憶されている。なお、図５では、ＣＰＵ１０、ＲＯＭ３０、メインメモリ４０に関し、本実施形態の説明に必要な範囲で、それぞれの機能やデータ構造を記載しており、それらの一般的な機能やデータ構造は省略してある。
【００２９】
ＤＭＡＣ１２は、メインメモリ４０との間で直接データ転送を行う。本実施形態では、メインメモリ４０からコマンドをフェッチするフェッチャーとして機能する。
【００３０】
デコーダ１４は、ＤＭＡＣ１２にフェッチされたコマンドを順次解読する。その解読にしたがい、図示しない加算器などを備える実行ユニットは、コマンドを実行し、図示しないフレームメモリなどに演算結果を書き出す。また、デコーダ１４により解読されたコマンドが、割込要求を示すコマンドであるとき、デコーダ１４は、この割込要求を割込処理部２０に送信すると共に、現在処理中の処理を一時中断する。
【００３１】
割込処理部２０は、デコーダ１４から送信されてきた割込要求に応じて割込処理を行う。ここで、割込処理部２０による処理を説明する前に、まずＲＯＭ３０に記憶されたＬＵＴ３２と、メインメモリ４０に記憶されたハンドラ本体４２について説明する。
【００３２】
本実施形態において、ＲＯＭ３０とメインメモリ４０とが、図１に示す割込処理システム１００における割込ハンドラ記憶部１０４に該当する。図６は、ＲＯＭ３０に記憶されたＬＵＴ３２を示している。ＬＵＴ３２は、例えばＲＯＭライターなどを介してＲＯＭ３０に書き込まれたものである。図６は、ＬＵＴ３２の例を示している。図中割込ソースＩＤは、割込ソースを識別するための番号である。以下、説明上の便宜のため、割込ソース３は、割込ソースＩＤが３である割込ソースを示すように、割込ソースと割込ソースＩＤとを特に区別せずに説明をする。
【００３３】
また、割込処理アドレスは、メインメモリ４０上における、ハンドラ本体４２となる処理プログラムが記憶されている開始アドレスである。
【００３４】
図６に示すＬＵＴ３２の例に示すように、割込ソース５に対しては、割込処理アドレスが複数記憶されており、割込ソース８、２に対しては、それぞれ１つの割込処理アドレスが記憶されている。なお、図６に示す例における記憶順位は、割込ソースＩＤ順になっていないが、例えば図７に示すように、同じ割込ソースＩＤに対して、その複数の割込処理アドレスを連続して記憶するようにしてもよい。またたとえばＲＯＭライターを用いて、ＬＵＴ３２の内容の変更、たとえば一部の削除をすることができる。
【００３５】
さらに、ＬＵＴ３２は、図８に示すように、割込ソースを単位として複数に分けられたものであってもよい。図８の例では、ＬＵＴ３２は、割込ハンドラが複数登録された割込ソース（ここでは割込ソース５）に関するＬＵＴ３２ａと、１つの割込ハンドラしか登録されていない割込ソース（ここでは割込ソース８と割込ソース２）に関するＬＵＴ３２ｂとに分けられている。
【００３６】
勿論、割込ソース毎にＬＵＴを設けるようにしてもよい。
【００３７】
ここで、１つおよび／または複数の割込ソース毎に設けられたＬＵＴは、例えばそれぞれ異なる開始アドレスを有する領域によって記憶されており、互いに独立するものである。
【００３８】
ハンドラ本体４２は、メインメモリ４０に記憶されている。これらのハンドラ本体の夫々の開始アドレスが、ＬＵＴ３２中の割込処理アドレスである。
【００３９】
割込処理部２０の説明に戻る。図９は、割込処理部２０の構成を示すブロック図である。図示のように、割込処理部２０は、検索部２２と、実行部２４とからなる。検索部２２は、割込要求に応じて、ＲＯＭ３０のＬＵＴ３２から、割込み要求が発生した割込ソースの割込ハンドラ、ここではハンドラ本体４２のアドレスを示す割込処理アドレスを検索する。そして、実行部２４は、検索部２２により得られた割込処理アドレスに基づいて、メインメモリ４０上の該当アドレスに記憶されたハンドラ本体を実行する。
【００４０】
図１０は、本実施形態における割込処理部２０の処理を詳細に示すフローチャートである。なお、ここでは、ＬＵＴ３２が図６に示す例の態様とする。図示のように、割込処理部２０は、デコーダ１４から割込要求を受信する（Ｓ５０）と、検索部２２によりＬＵＴ３２を上から順次走査する（Ｓ５２）。割込要求が発生した割込ソース以外の割込ソース（Ｓ５４：Ｎｏ）に対しては何も処理をせずにパスする一方、割込要求が発生した割込ソースに対しては、その割込処理アドレスを読み出して実行部２４に供する（Ｓ５４：Ｙｅｓ、Ｓ５６）。実行部２４は、検索部２２から供された割込処理アドレスに基づいて、メインメモリ上のこの割込処理アドレスに記憶されたハンドラ本体を実行する（Ｓ５８）。割込処理部２０は、ステップＳ５４からの処理をＬＵＴ３２の末尾まで繰り返し（Ｓ５０〜Ｓ７０）、割込要求が発生した割込ソースに対して、ＬＵＴ３２に記憶されたすべての割込処理アドレスが示すハンドラ本体を実行し終えることをもって割込処理を終了する。
【００４１】
割込処理が終了すると、デコーダ１４は一時中断した処理を再開させる。
【００４２】
このように、本実施形態によれば、ＲＯＭ３０に記憶されたＬＵＴ３２には、割込ソース毎に割込処理アドレスが１つ以上記憶されており、割込処理部２０の検索部２２は、割込要求が発生した割込ソースに対して、ＬＵＴ３２からその割込処理アドレスを検索して実行部２４に供する。割込処理アドレスは、メインメモリ４０上のアドレスを示すものであり、このアドレスにより示される場所に割込ハンドラ本体４２が記憶されているため、実行部２４は、検索部２２により得られた各割込処理アドレスのそれぞれにある割込ハンドラを順次実行することによって割込処理を実現する。このような構成によって、ＬＵＴ３２に記憶された割込ソースに対応する各割込処理アドレスの順番の変更、増減をするのみで、割込ソースに対する割込処理を変更することができるので、割込処理の設計を効率よくすることができると共に、設計の柔軟度を高めることができる。
【００４３】
また、本発明による実施形態は、上述した実施形態に限られることがなく、本発明の主旨を逸脱しない限り、様々な増減、変更を加えることができる。
【００４４】
例えば、上述した実施形態において、割込ハンドラ記憶部としてＲＯＭ３０およびメインメモリ４０を用い、メインメモリ４０上の異なるアドレスに各々の割込ハンドラ本体４２を記憶させると共に、ＲＯＭ３０に、割込ソースと、該割込ソースに関する各々の割込ハンドラ本体４２がそれぞれ記憶されたアドレスを割込処理アドレスとを対応付けて記憶させるようにしている。こうすることによって、例えば所定の割込ソースに対して、この割込ソースに関する割込ハンドラの実行順番を変えたい場合や、減らしたい場合などにおいて、ＲＯＭ３０におけるＬＵＴ３２を修正するだけでよいので、効率をより良くすることができる。例えば、割込ソースと、その割込ハンドラ本体そのものとを対応付けてメインメモリ４０上に記憶させ、割込要求が発生した際に、該当する割込ソースの割込ハンドラ本体を直接検索して順次実行するようにしてもよい。
【００４５】
また、本実施形態において、割込要求がＤＭＡＣ１２によりフェッチされたコマンドの形式であるが、本発明は、割込ソースからの割込信号によるハードウェア的な割込要求に適用することもできる。
【００４６】
また、ＬＵＴ３２として、図８に示すような、１つおよび／または複数の割込ソースとからなるグループ毎にそれぞれ設けられたＬＵＴを有する態様のものを用いてもよい。この場合、割込要求が発生した際に、該当する割込ソースが属するグループについて設けられたＬＵＴのみを検索することで、検索にかかる時間を短縮することができる。なお、この場合、割込ソースと、その割込ソースが属するグループについて設けられたＬＵＴのアドレスとを対応付けて記憶し、検索の参照に供すればよい。
【図面の簡単な説明】
【００４７】
【図１】本発明による割込処理システムの構成概要を示すブロック図である。
【図２】図１に示す割込処理システムにおける割込ハンドラ記憶部が割込ハンドラを記憶する態様の例を示す図である。
【図３】図１に示す割込処理システムにおける割込処理部が行う処理を示すフローチャートである。
【図４】図１に示す割込処理システムにおける割込ハンドラ記憶部が割込ハンドラを記憶する態様の他の例を示す図である。
【図５】本発明の実施形態によるプロセッサシステムの構成を示すブロック図である。
【図６】ルックアップテーブルＬＵＴの一例を示す図である。
【図７】ルックアップテーブルＬＵＴの他の例を示す図である。
【図８】ルックアップテーブルＬＵＴの他の例を示す図である。
【図９】図５に示すプロセッサシステムにおける割込処理部の構成を示すブロック図である。
【図１０】図９に示す割込処理部が行う処理を示すフローチャートである。
【符号の説明】
【００４８】
１  プロセッサシステム、  １０  ＣＰＵ、  １２  ＤＭＡＣ、  １４  デコーダ、２０  割込処理部、  ２２  検索部、  ２４  実行部、  ３０  ＲＯＭ、  ３２  ＬＵＴ、  ４０  メインメモリ、  ４２  ハンドラ本体、  １００  割込処理システム、  １０２  割込ハンドラ登録部、  １０４  割込ハンドラ記憶部、  １１０  割込処理部、１１２  検索部、  １１６  実行部。
【図１】
2006343802.tif 000003
【図２】
2006343802.tif 000004
【図３】
2006343802.tif 000005
【図４】
2006343802.tif 000006
【図５】
2006343802.tif 000007
【図６】
2006343802.tif 000008
【図７】
2006343802.tif 000009
【図８】
2006343802.tif 000010
【図９】
2006343802.tif 000011
【図１０】
2006343802.tif 000012