(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて割込を実施する方法であって、前記データ処理システムは、複数の入力を有する第１格納デバイスであって、前記複数の入力のそれぞれは、選択的にハードウェア割込を生成する複数のハードウェア生成割込ソースのうちの一つにそれぞれ物理的導体によって結合されている、前記第１格納デバイスと、複数の入力を有する第２格納デバイスと、前記第１格納デバイスおよび前記第２格納デバイスに結合された論理回路と、処理回路とを備え、前記方法は、
前記第１格納デバイスが、前記ハードウェア割込を選択的に格納し、かつ一つまたはそれ以上のハードウェア生成割込信号を与える段階と、
前記第２格納デバイスが、前記複数の入力のそれぞれを介して、複数のソフトウェア生成割込信号のうちの所定の一つを受信・格納し、一つまたはそれ以上のソフトウェア割込信号を与える段階であって、前記複数のソフトウェア生成割込信号の各々は、前記ハードウェア割込とは異なるソースからの、あるいは異なる種類の割込を指示する、前記一つまたはそれ以上のソフトウェア割込信号を与える段階と、
前記論理回路が、前記一つまたはそれ以上のハードウェア生成割込信号および前記一つまたはそれ以上のソフトウェア割込信号を受信して、前記データ処理システムにおいて割込を生じさせる割込要求信号を生成する段階と、
前記第１格納デバイスおよび前記第２格納デバイスの複数の格納位置に割込優先レベルが割り当てられ、前記第１格納デバイスに結合された前記複数のハードウェア生成割込ソースの割込優先レベルは不変的に割り当てられており、
前記処理回路が、特定のソフトウェア生成割込信号の格納を、前記第２格納デバイス内の第１の割込優先レベルが割当てられた第１の格納位置から前記第１の割込優先レベルよりも高い第２の割込優先レベルが割当てられた第２の格納位置に変更する段階と
を備えることを特徴とする方法。
【請求項２】
第１割込はハードウェア生成であり、第２割込はソフトウェア生成である、２つの割込が同じ優先レベルを有する場合に、前記処理回路が前記ハードウェア生成第１割込または前記ソフトウェア生成第２割込のうち一方を処理するべく選択することによって、２つの割込間の優先順位を決定する段階；
をさらに含んで構成されることを特徴とする請求項１記載の方法。
【請求項３】
割込制御回路を有するデータ処理システムであって、
複数のハードウェア割込ソースと、
複数の入力を有するハードウェア割込格納デバイスであって、前記複数の入力のそれぞれは、複数のハードウェア割込ソースの一つに導電体によって結合され、前記ハードウェア割込格納デバイスは、ハードウェア生成割込を格納し、各前記ハードウェア生成割込を所定の出力端子にて与える、ハードウェア割込格納デバイスと、
複数の入力を有するソフトウェア割込格納デバイスであって、前記複数の入力のそれぞれを介して複数のソフトウェア生成割込信号のうちの所定の一つを受信・格納し、前記複数のソフトウェア生成割込信号の各々は、前記ハードウェア割込とは異なるソースからの、あるいは異なる種類の割込を指示するソフトウェア割込格納デバイスと、
前記ハードウェア割込格納デバイスおよび前記ソフトウェア割込格納デバイスに結合され、ハードウェア生成割込またはソフトウェア生成割込のいずれかの受信に応答してデータ処理システム割込信号を生成する論理回路と、
第１割込がハードウェア生成であり、第２割込がソフトウェア生成である、２つの割込が同じ優先レベルを有する場合に、前記ハードウェア生成第１割込または前記ソフトウェア生成第２割込のうち一方を処理するべく選択することによって、前記２つの割込間の優先順位を決定する処理回路と
を備え、
前記ハードウェア割込格納デバイス及び前記ソフトウェア割込格納デバイスは、複数の格納位置に割り当てられた割込優先レベルを有し、前記ハードウェア割込ソースの割込優先レベルは不変的に割り当てられており、
前記処理回路は、特定のソフトウェア生成割込信号の格納を、ソフトウェア割込格納デバイス内の第１の割込優先レベルが割当てられた第１の格納位置から前記第１の割込優先レベルよりも高い第２の割込優先レベルが割当てられた第２の格納位置に変更する、ことを特徴とするデータ処理システム。
【請求項４】
データ処理システムにおいて割込を実施する方法であって、前記データ処理システムは、複数の入力を有する第１格納デバイスであって、前記複数の入力のそれぞれは、選択的にハードウェア割込を生成する複数のハードウェア生成割込ソースのうちの一つにそれぞれ物理的導体によって結合されている、前記第１格納デバイスと、一つまたはそれ以上の入力を有する第２格納デバイスと、前記第１格納デバイスおよび前記第２格納デバイスに結合された論理回路と、処理回路とを備え、前記方法は、
前記第１格納デバイスが、前記ハードウェア割込を選択的に格納し、かつ一つまたはそれ以上のハードウェア生成割込信号を与える段階と、
該第２格納デバイスが、前記一つまたはそれ以上の入力のそれぞれを介して、複数のソフトウェア生成割込信号のうちの所定の一つを受信・格納し、一つまたはそれ以上のソフトウェア割込信号を与える段階であって、前記複数のソフトウェア生成割込信号の各々は、前記ハードウェア割込とは異なるソースからの、あるいは異なる種類の割込を指示する、一つまたはそれ以上のソフトウェア割込信号を与える段階と、
前記論理回路が、前記一つまたはそれ以上のハードウェア生成割込信号および前記一つまたはそれ以上のソフトウェア割込信号を受信して、前記データ処理システムにおいて割込を生じさせる割込要求信号を生成する段階と、
前記処理回路が、所定のソフトウェア生成割込を与えることにより所定のハードウェア生成割込の優先レベルを変更する段階であって、前記所定のソフトウェア生成割込は、前記所定のハードウェア生成割込に対応するハードウェア生成割込ソースを表し、かつ前記所定のハードウェア生成割込とは異なる優先レベルを有する、前記変更する段階と
を備えることを特徴とする方法。
【請求項５】
データ処理システムにおいて割込を実施する方法であって、前記データ処理システムは、その内部に格納された複数のハードウェア生成割込信号に対する割込処理の優先順位を表す第１の複数の優先格納位置を有する第１格納デバイスであって、前記第１格納デバイスは複数の入力を有し、前記複数の入力の各々は、選択的にハードウェア割込を生成する複数のハードウェア生成割込ソースに物理的導体によって結合されている、前記第１格納デバイスと、その内部に格納された複数のソフトウェア生成割込信号に対する割込処理の優先順位を表す第２の複数の優先格納位置を有するとともに、複数の入力を有する第２格納デバイスと、前記第１格納デバイスおよび前記第２格納デバイスに結合された論理回路と、処理回路を備え、前記方法は、
前記第１格納デバイスが、前記ハードウェア割込を選択的に格納し、かつ一つまたはそれ以上のハードウェア生成割込信号を与える段階と、
前記第２格納デバイスが、前記複数の入力の各々を介して、前記複数のソフトウェア生成割込信号のうちの所定の一つを受信・格納し、一つまたはそれ以上のソフトウェア生成割込信号を与える段階であって、前記所定のソフトウェア生成割込信号は、前記ハードウェア割込とは異なるソース、あるいは異なる種類の割込を指示する、一つまたはそれ以上のソフトウェア生成割込信号を与える段階と、
前記処理回路が、前記データ処理システムでソフトウェアを実行して、前記複数のハードウェア生成割込ソースのうちの所定の一つをエミュレートする、当該所定のハードウェア生成割込ソースとは異なる優先順位を有する所定のソフトウェア生成割込信号を生成することにより、前記データ処理システムにおける割込処理の優先順位を動的に変更する段階と、
前記論理回路が、前記一つまたはそれ以上のハードウェア割込信号および前記一つまたはそれ以上のソフトウェア生成割込信号を前記第１格納デバイス及び前記第２格納デバイスからそれぞれ受信して、前記データ処理システムにおいて割込を生じさせる割込要求信号を生成する段階と
を備えることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般に、割込コントローラに関し、さらに詳しくは、ソフトウェアによって制御される割込強制レジスタを含む割込コントローラに関する。
【０００２】
【従来の技術】
割込は、ソフトウェアに現在の実行を変更させ、割込を「処理(service)」するタスクを実行させる機構を提供するために、コンピュータ・システムにおいて一般に用いられる。例えば、バッファに格納すべき有効なデータがシリアル・データ・インタフェース上で着信すると、このシリアル・データ・インタフェースは割込をアサート(assert)し、この割込は、処理されると、データを捕捉して、バッファに入れる。多くの場合、割込の処理の優先順位(prioritization)は重要となるが、これは多くの割込は、割込の処理に伴う待ち時間(latency)に対して耐性が限られている割込ソースに関連しているためである。例えば、シリアル・データ・インタフェース上のデータは限られた時間でのみ有効であり、そのためこの時間期間内で捕捉する必要がある。割込の処理は、割込処理ルーチン(interrupt service routine)または割込ハンドラ(interrupt handler)と一般に呼ばれるソフトウェア・ルーチンを利用することによって一般に達成される。
【０００３】
典型的な従来の割込コントローラ・モジュールは、複数の割込ソースから割込要求を受信する。これらの要求は、各割込ソースに対応するビットを有する割込ソース・レジスタ(interrupt source register)に格納され、そのためどのソースが保留割込(pending interrupts)をアサートしているのかを判定するために割込ソース・レジスタを読み出すことができる。割込イネーブル・レジスタ(interrupt enable register)は、割込ソース・レジスタの個別ビット・マスキングが促進されるように、各潜在的な保留割込に対応するビットを格納する。割込保留レジスタ(interrupt pending register)の内容を形成するために、割込ソース・レジスタと割込イネーブル・レジスタの内容に対して論理積（ＡＮＤ）が実行される。従って、割込がアサートされ、マスク・レジスタによってイネーブルされると、割込保留レジスタ内のこの割込に対して論理１が生成される。中央処理ユニット（ＣＰＵ）に送られる割込信号を生成するために、割込保留レジスタに対してビットワイズ論理和(logical bit-wise OR)が実行される。そのため、イネーブルされる任意の保留割込は、ＣＰＵに対する割込信号のアサートを強制する。
【０００４】
割込信号がアサートされたことをＣＰＵが検出すると、それに応答してどの割込処理ルーチンを実行すべきかを判断するために、割込保留レジスタを調べることができる。これは、割込優先順位を解決することからなり、ここで優先順位は割込保留レジスタ内の特定の割込のビット位置に基づくことができる。従って、割込保留レジスタ内のより上位のビットは、下位ビットに比べて高い優先順位を有することができる。割込ソース・レジスタおよび割込保留レジスタは読出し専用なので、このような従来の割込コントローラは、強制的にハードウェアに割込要求をアサートさせることによってのみ、ソフトウェア割込要求を生成できるという点で制限される。
【０００５】
別の従来の割込コントローラについては、Connellらに発行された米国特許第５，４５９，８７２号（以下、「Connell特許」という）において説明されている。Connell特許は、複数のハードウェア割込ソースに対応する保留割込を格納する割込レジスタを含む割込コントローラについて説明する。また、割込レジスタを修正することによって、割込要求をアサートさせることができる制御ソフトウェアも含まれる。Connell特許の教示により、割込レジスタに格納されたハードウェア割込指標(hardware interrupt indications)を修正することによってソフトウェア割込を生成できるが、割込レジスタの内容を参照することによって、ハードウェア生成割込とソフトウェア生成割込とを区別するすべはない。さらに、Connell特許によって教示されるように割込コントローラによってサポート可能な異なる割込要求の数は、割込レジスタによってサポートされるハードウェア割込ソースの数に制限される。
【０００６】
【発明が解決しようとする課題】
従って、ワードウェア割込とソフトウェア割込とを区別でき、しかもハードウェア割込要求およびソフトウェア割込要求の両方の一元的な処理を可能にする割込コントローラが必要とされる。
【０００７】
【実施例】
本発明は、添付の実施例において一例として示され、制限するものではない。なお、同様な参照番号は同様な要素を表すものとする。
【０００８】
当業者であれば、図面における要素は簡単・明瞭となるように図示されており、必ずしも縮尺通りではないことが理解されよう。例えば、図面における一部の要素の寸法は、本発明の実施例の理解を深めるために、他の要素に対して誇張されることがある。
【０００９】
一般に、本発明は、割込強制レジスタを含む柔軟な割込コントローラを提供する。それぞれハードウェア・ソースによって現在アサートされているハードウェア割込は、割込コントローラに内蔵される割込ソース・レジスタに格納される。独立した割込強制レジスタは、現在保留中のソフトウェア割込を格納し、このソフトウェア割込は、データ処理システム内の中央処理ユニット（ＣＰＵ）によってソフトウェア・ルーチンを実行することでアサートできる。一実施例では、割込ソース・レジスタ内の各ビット位置は、割込強制レジスタ内の対応するビット位置を有し、割込強制レジスタ内の各ビットは、割込ソース・レジスタ内の対応するビットと論理和(logical OR)がとられる。この論理和演算の結果は割込保留レジスタに格納され、割込保留レジスタの内容は、ＣＰＵに与えられる割込要求信号を生成するために、互いにビットワイズ論理和(bit wise OR)がとられる。
【００１０】
本発明については、図１ないし図６を参照することによって理解を深めることができよう。図１は、中央処理ユニット（ＣＰＵ）回路１２と、メモリ回路１４と、タイマ回路１６と、シリアル回路１８と、他の回路２０と、システム統合回路(system integration circuit)２２とを有し、これら全てがバス２４によって互いに双方向結合されている、データ処理システム１０を示す。
【００１１】
ＣＰＵ１２は、一つまたはそれ以上の集積回路端子３０を介してデータ処理システム１０の外部に結合できる。メモリ１４は、一つまたはそれ以上の集積回路端子３２を介してデータ処理システム１０の外部に結合できる。タイマ１６は、一つまたはそれ以上の集積回路端子３４を介してデータ処理システム１０の外部に結合できる。シリアル回路１８は、一つまたはそれ以上の集積回路端子３６を介してデータ処理システム１０の外部に結合できる。また、他の回路２０は、一つまたはそれ以上の集積回路端子３８を介してデータ処理システム１０の外部に結合できる。システム統合回路２２は、バス２６を介してデータ処理システム１０の外部に双方向結合される。システム統合回路２２は、割込回路２８を含む。割込回路２８は、集積回路端子４０を介してデータ処理システム１０の外部に結合でき、またバス２４を介してＣＰＵ１２に結合できる。
【００１２】
本発明のいくつかの実施例では、データ処理システム１０は単一の集積回路上に形成されるデータ・プロセッサである。ある実施例では、データ処理システム１０はシングル・チップ・マイクロコントローラである。別の実施例では、データ処理システム１０は任意の種類の電気回路を利用して構築できる。メモリ１４は、任意の種類のメモリでもよい。データ処理システム１０の別の実施例は、それ以上の、それ以下の、あるいは異なるブロックの回路を含んでもよい。例えば、データ処理システム１０の別の実施例は、メモリ１４，タイマ１６，シリアル１８または他の回路２０を有していなくてもよい。本発明のある実施例は、割込回路２８をＣＰＵ１２の一部として有してもよく、またシステム統合回路２２を有しても、有していなくてもよい。
【００１３】
集積回路端子３０，３２，３４，３６，３８，４０は、電気信号をデータ処理システム１０とやり取りできる任意の種類の装置でもよい。例えば、集積回路端子３０，３０，３４，３６，３８，４０は集積回路ピン，半田バンプ，ワイヤ導体などでもよい。さらに、バス２６は集積回路端子を介してデータ処理システム１０と電気信号をやり取りできる。
【００１４】
図２は、本発明の一実施例による図１の割込回路２８の一部を示す。割込回路２８は、割込ソース・レジスタ１１０，割込強制レジスタ１２０，割込イネーブル・レジスタ１４０，割込保留レジスタ１６０および論理ゲート１３１〜１３３，１５１〜１５３，１７２を含んで示される。本発明の一実施例では、割込ソース・レジスタ１１０，割込強制レジスタ１２０，割込イネーブル・レジスタ１４０および割込保留レジスタ１６０は、それぞれＮビットを含み、Ｎは整数である。
【００１５】
割込ソース・レジスタ１１０は、複数の入力を有する格納デバイスであり、これらの入力はデータ処理システム１０が受信するハードウェア割込に対応する。これらのハードウェア割込は、集積回路端子４０などの物理的な導体を介して受信でき、各ハードウェア割込１０２は特定のハードウェア生成割込ソースに対応する。割込ソース・レジスタ１１０は、物理的な導体を介して受信したハードウェア割込を選択的に格納し、各ハードウェア生成割込を所定の出力端子にて与える。
【００１６】
割込ソース・レジスタ１１０は複数のトランスペアレント・ラッチ(transparent latch)を含んでもよく、各トランスペアレント・ラッチは一つのハードウェア割込１０２の値を格納し、また割込ソース・レジスタ１１０を読むことによってハードウェア割込ライン１０２に関連する値をアサートさせることができる。このようなトランスペアレント・ラッチは、ハードウェア割込１０２上の変化が、タイミング制約を違反せずに、割込回路２８内の他の回路に伝搬することを保証するのに有用である。
【００１７】
別の実施例では、割込ソース・レジスタ１１０は、各ハードウェア割込１０２についてフリップフロップなどの個別のビット・レジスタを含む。ハードウェア割込ソースが割込要求をアサートすると、このソースからのこの特定の割込要求に対応する割込ソース・レジスタ１１０内のビットがセットされる。好ましくは、割込ソース・レジスタ１１０は、読出し専用レジスタ(read-only register)として構築され、そのため、ソフトウェアは割込ソース・レジスタ１１０内の特定のビットをセット状態またはクリア状態に強制できない。
【００１８】
割込強制レジスタ１２０は、一つまたはそれ以上の入力を介して複数のソフトウェア生成割込信号（ソフトウェア割込）１０４を受信する。各ソフトウェア割込１０４は、ハードウェア割込１０２とは異なるソースの、あるいは異なる種類の割込を表し、ソフトウェア生成割込のうちの少なくとも一つは、ハードウェア割込ソースとして指定されていないデータ処理システムの一部に対応する。ソフトウェア割込は、ＣＰＵ１２によってメモリ１４に格納されたソフトウェアを実行することで生成される。
【００１９】
割込強制レジスタ１２０は、各ソフトウェア割込１０４についてビット位置を含む格納デバイスである。割込強制レジスタ１２０を構成する格納デバイスは、割込ソース・レジスタ１１０の場合と同様に、ラッチまたはレジスタを含んでもよい。割込強制レジスタ１２０への書込みを実行することによってソフトウェア割込をアサートさせるために、割込強制レジスタ１２０は読出し／書込みレジスタ(read/write register)として構築してもよい。
【００２０】
割込ソース・レジスタ１１０および割込強制レジスタ１２０の内容（それぞれ、ハードウェア生成割込信号およびソフトウェア生成割込信号）は、論理回路を利用して合成され、割込要求信号１７４を生成し、この割込要求信号１７４はＣＰＵ１２に与えられ、データ処理システム１０内で割込を発生させる。図２に示す実施例では、割込ソース・レジスタ１１０内の特定の位置におけるビットの値と、割込強制レジスタ１２０内の対応するビットの値との論理和をとるために、複数のＯＲゲート１３１〜１３３が用いられる。従って、ＯＲゲート１３１は、割込ソース・レジスタ１１０内の最下位ビット位置におけるビットと、割込強制レジスタ１２０の最下位位置のビットとの論理和をとる。なお、本発明は他の実施例でも実施でき、ここでは複数のＯＲゲート１３１〜１３３は、割込ソース・レジスタ１１０内の特定の位置におけるビットの値と、必ずしも対応するビットではない割込強制レジスタ１２０内の値との論理和をとるために用いられる。
【００２１】
データ処理システムに含まれる割込が非マスカブル(non-maskable)である実施例では、ＯＲゲート１３１〜１３３の出力は割込保留レジスタ１６０に直接与えることができる。しかし、ある実施例では、個別の割込はマスカブルであるため、割込イネーブル・レジスタ１４０（これはマスク・レジスタともいう）および他のイネーブル回路は、データ処理システム内の潜在的な割込をイネーブルあるいはディセーブルするために用いられる。従って、ＯＲゲート１３１〜１３３の出力は、対応する複数のＡＮＤゲート１５１〜１５３への入力として与えられる。各ＡＮＤゲート１５１〜１５３の他の入力は、割込イネーブル・レジスタ１４０内の対応するビット位置にて格納されたビット値である。そして、ＡＮＤゲート１５１〜１５３の出力は、割込保留レジスタ１６０に与えられる。従って、割込イネーブル・レジスタ１４０内でセットされたビットは、保留割込を割込保留レジスタ１６０に伝搬あるいは通過させることができる。好ましくは、割込イネーブル・レジスタ１４０は、データ処理システム内の読出し／書込みレジスタとして構築される。これにより、処理システム内で各割込の動的なマスキングが可能になる。
【００２２】
読出し専用レジスタでもよい割込保留レジスタ１６０は、割込ソース・レジスタ１１０，割込強制レジスタ１２０および割込イネーブル・レジスタ１４０内の値の合成を格納する。割込保留レジスタ１６０内の各ビット位置についての値は、ＯＲゲート１７２によって互いにビットワイズ論理和がとられ、ＣＰＵ１２に与えられる割込要求信号１７４を生成する。従って、割込保留レジスタ１６０内の任意のビットがセットされると、割込要求信号１７４はアサートされる。
【００２３】
割込保留レジスタ１６０内のビット位置（格納位置）は、より上位のビット位置にてセットされたビットにより指示される割込が、割込保留レジスタ１６０内の下位ビット位置にてセットされたビットにより指示される割込よりも高い優先順位を有する割込に対応するように、優先順位方式と関連付けることができる。例えば、割込保留レジスタ１６０がＮビットを含む場合、ビット位置０は最低優先順位の割込に対応し、一方、ビット位置Ｎ−１は最高優先順位を有する割込に対応する。ファインド・ファースト・ビット・セット命令(find first set instruction)を割込保留レジスタ１６０とともに利用して、最高優先順位を有する保留割込を判定できる。なお、割込保留レジスタ内の特定の格納位置に対する割込優先レベルの割当は、割込ソース・レジスタ１１０および割込強制レジスタ１２０内のビット位置がこのような優先順位に直接関連することを意味する。
【００２４】
一実施例では、図２に示すような割込回路２８は、ハードウェア割込に関連するソースがアクティブでなく、あるいはシステム内に存在しなくても、ハードウェア割込の存在をエミュレーションするために用いることができる。これは、エミュレーションすべきハードウェア割込が対応する割込ソース・レジスタ１１０内のビット位置に対応する割込強制レジスタ１２０内のビット位置を有するソフトウェア割込をアサートするために、ソフトウェアを利用することによって達成できる。
【００２５】
ＯＲゲート１３１〜１３３は割込ソース・レジスタ１１０に格納された値を、割込強制レジスタ１２０に格納された値と合成するので、割込強制レジスタ１２０内の特定のビット位置にてソフトウェア割込を強制することは、割込ソース・レジスタ１１０内の同じビット位置に対応する受信ハードウェア割込と同じように、ＯＲゲート１３１〜１３３のうちの特定の一つで正の出力値を生成する。従って、複数のソフトウェア生成割込信号の一部には、ハードウェア割込を生成し、かつ対応する優先レベルを有する割込ソースからの割込を表すために利用できるように、優先レベルを割り当てることができる。このようなエミュレーションは、他の手段を介してハードウェア割込のアサートをシミュレーションすることが不可能であるデバッグ動作において、貴重である。
【００２６】
割込回路２８によって生成された割込要求１７４をＣＰＵ１２が受信すると、一般に最初の動作手順は割込保留レジスタ１６０を読み出す。次に、ファインド・ファースト・セット・ビット機能を利用して、割込保留レジスタ１６０によって指示される最高優先順位を有する保留割込を判定でき、ここでビット位置は各保留割込の優先順位を決定する。次に、最高優先割込のビット位置は、ジャンプ・テーブルから割込処理ルーチンに対応してフェッチされるベクトルを判定するために用いられる。フェッチされたベクトルは、ＣＰＵが、一般にメモリ１４に格納される適切な割込処理ルーチンを実行することを可能にする。割込処理ルーチンの実行は、この割込処理ルーチンの実行をトリガした割込がデアサート(deassert)されるべく、完了時にシステムの状態が変更できように実施される。
【００２７】
ＣＰＵ１２による割込の処理について説明した優先順位方式の維持を促進にするため、現在処理中の割込と同じまたは低い優先順位を有する割込は、（割込イネーブル・レジスタ１４０を利用して）一般にマスクオフ(mask off)され、低い優先割込をアサートしても、ＣＰＵ１２への追加の割込要求は生成されない。このようなＣＰＵ１２への追加割込要求により、ＣＰＵ１２は割込保留レジスタ１６０を読み出して、新たに受信した割込の優先順位について判定を行うが、これは高優先割込処理ルーチンの実行の速度および効率を劣化させる。しかし、高優先割込が受信されると（この割込はマスクオフされない）、ＣＰＵは高優先割込の処理に切り替え、処理中だった割込の処理の完了を遅らせる。
【００２８】
図３は、本発明の教示の一部の理解を助けるために用いられる割込ソース・レジスタ２００および割込強制レジスタ２０１の例を示す。割込ソース・レジスタ２００は、６ビット（位置０〜５）を含んで示される。割込ソース・レジスタ２００のビット位置１，３，５は、特定のハードウェア割込に対応して示される。ビット位置１はパラレル入出力（Ｉ／Ｏ）割込に対応し、ビット位置３はタイマ割込に対応し、ビット位置５はＵＡＲＴ(universal asynchronous receiver-transmitter)シリアル通信ポートに対応して示される。図３に示すこの一例の割込ソース・レジスタ２００では、ＵＡＲＴは割込処理について最高優先順位を有すると想定される。従って、パラレルＩ／Ｏ割込は最低優先レベルを有する。
【００２９】
ＵＡＲＴ割込の処理により、ＵＡＲＴシリアル・インタフェース上のデータは捕捉され、処理システム内のバッファに格納される。ある場合には、このデータをバッファに格納することに応答して、ＵＡＲＴデータの展開(decompression)などのバックエンド処理が必要なこともある。このようなバックエンド処理を促進するために、ソフトウェアはソフトウェア割込をアサートして、このようなバッファに格納されるデータの展開が必要なことを指示する。
【００３０】
通常動作では、ＵＡＲＴ割込の処理によってバッファに入れられたデータが、バッファが閾値レベル以上に満杯にならないことを保証するレートで展開されると、バッファされたＵＡＲＴデータの処理への要求に対応するソフトウェア割込の優先順位は一般に低い優先順位である。これは、図３の割込強制レジスタ２０１について示されており、ここでＵＡＲＴバッファ低優先指標は、割込強制レジスタ２０１内のビット位置２に対応して示されている。この優先レベルのソフトウェア割込を利用して、ＵＡＲＴバッファの処理を要求すると、その処理はより高い優先順位を有する割込の不在に基づいて条件付けられる。このような高優先割込の一つとして、ハードウェア・タイマ割込がある。ハードウェア・タイマ割込は優先レベル３を有し、これはＵＡＲＴバッファ低優先割込要求のレベル２優先順位よりも高い優先順位である。
【００３１】
ある場合には、ＵＡＲＴバッファの処理を高い優先順位に格上げすべきことをＣＰＵが検出することがある。これは、ＵＡＲＴハードウェア割込の処理が大量のデータをＵＡＲＴバッファにダンプして、タイマによって発行される割込などより高優先順位の割込の処理がＵＡＲＴバッファ・オーバフローの危険を生じる場合に、発生することがある。
【００３２】
データ損失を防ぐために、ＵＡＲＴバッファの処理の優先順位は、割込強制レジスタ２０１内のＵＡＲＴバッファ高優先指標によって指示されるようなより高い優先順位に格上げできる。ＵＡＲＴバッファ高指標は優先レベル４に対応し、これは割込ソース・レジスタ２００内のタイマよりも高い優先順位である。従って、タイマと、より高い優先レベルでのＵＡＲＴバッファの処理の両方について割込が保留中の場合、ＵＡＲＴバッファが優先して処理される。
【００３３】
ＣＰＵは、ＵＡＲＴバッファの内容が優先順位について格上げを必要とするかどうかについて判断できる。ＵＡＲＴバッファ低またはＵＡＲＴバッファ高優先レベルのいずれかの割込に基づいて、ＵＡＲＴバッファの処理を促進するために、図４に示すジャンプ・テーブル２１０を利用できる。ジャンプ・テーブル２１０は、レベル２優先割込に対応するポインタ２１２を格納する。ポインタ２１２は、ＵＡＲＴバッファを処理させる割込処理ルーチン２２０を指す。同様に、ジャンプ・テーブル２１０は、レベル４優先割込に対応するポインタ２１４を格納する。ポインタ２１４も、ＵＡＲＴバッファを処理させる割込処理ルーチン２２０を指す。
【００３４】
ＣＰＵ１２が割込要求１７４を受信すると、割込保留レジスタ１６０を読み出して、現在の最高優先保留割込を確認する。この現在の最高優先保留割込がレベル２またはレベル４優先割込である場合、ジャンプ・テーブル２１０は、ＵＡＲＴバッファが処理されるように、割込処理ルーチン２２０へのポインタを取得すべく参照される。なお、ジャンプ・テーブル２１０は、割込ソース・レジスタ２００について説明したハードウェア割込に対応する各優先レベルにおけるポインタも格納する。
【００３５】
図５は、図３について説明したのと同様なシナリオに対応する割込ソース・レジスタ３００および割込強制レジスタ３０１を示す。図５に関連する例では、アラーム・クロックに対応する追加のハードウェア割込は、アラーム・クロックが割込優先レベル４を有するように、割込ソース・レジスタ３００に関連して示されている。割込強制レジスタ３０１について図示するように、通常ＵＡＲＴバッファは、レベル２優先順位であるＵＡＲＴバッファ低優先レベルに基づいて処理される。ＵＡＲＴバッファが不適切に処理されており、その処理レベルを向上させるために関連するより高い優先レベルを有する必要があるとＣＰＵが判断した場合、通常のＵＡＲＴバッファ低優先割込ではなく、ＵＡＲＴバッファ高優先レベルに対応するソフトウェア割込をアサートできる。しかし、ＵＡＲＴバッファ高優先割込は、アラーム・クロックに対応するハードウェア割込と同じ優先順位であることが明らかである。両方はレベル４優先割込を有する。
【００３６】
レベル４割込に応答してＣＰＵに適切な割込処理ルーチンを実行させるために、図６に示すジャンプ・テーブル３１０は、追加の判定を含む割込処理ルーチン３３０へのポインタ３１４を含む。この割込処理ルーチン３３０は、割込強制レジスタ（ＩＦＲ）３０１を読み出して、割込強制レジスタ３０１内のレベル４優先ビットがセットされているかどうかを判定する判定ステップ３３２を含む。レベル４優先に対応するビットが割込強制レジスタ３０１内でセットされていると判断すると、ステップ３３４に進み、ここでＵＡＲＴバッファが処理される。
【００３７】
割込強制レジスタ３０１内のレベル４優先ビットがセットされていないと判断されると、レベル４優先割込は、アラーム・クロックによる割込アサートによって生じたに違いない。なぜならば、レベル４優先割込は、割込ソース・レジスタ３００および割込強制レジスタ３０１のレベル４優先ビットの論理和から生じるためである。割込強制レジスタ３０１内のレベル４優先ビットがセットされていないと判断し、アラーム・クロックが割込をアサートしたことを示すと、割込処理ルーチンは、アラーム・クロックが処理されるように、ステップ３３６を実行する。
【００３８】
なお、ポインタ３１４に対応する割込処理ルーチン３３０は、アラーム・クロックからのハードウェア割込に対応する割込ソース・レジスタ３００のレベル４優先割込よりも、ソフトウェア割込に対応する割込強制レジスタ３０１のレベル４優先割込を本質的に優先する。これは、割込処理ルーチン３３０は、割込強制レジスタ３０１の検査に基づいて、どの割込を処理すべきかを判定するという事実に起因する。アラーム・クロック・ハードウェア割込と、ＵＡＲＴバッファ高優先ソフトウェア割込の両方が同時に保留中である場合、割込強制レジスタ３０１の検査によって、ＵＡＲＴバッファ高優先ソフトウェア割込が保留中であることが判明し、そのため割込処理ルーチン３３０はステップ３３４に進んで、このＵＡＲＴバッファを処理する。従って、アラーム・クロックがＵＡＲＴバッファ高優先ソフトウェア割込と同じ優先レベルを有することが示されても、割込処理ルーチン３３０は、判定ステップ３３２の実行によって、ＵＡＲＴバッファ高優先ソフトウェア割込に対して追加の優先順位を与える。
【００３９】
別の割込処理ルーチン３４０は、割込処理ルーチン３４０内の判定ステップの固有の優先順位は、アラーム・クロックに対応するハードウェア割込を優先するという点を除いて、割込処理ルーチン３３０と同様な結果を与える。ジャンプ・テーブル３１０は、ソフトウェア割込を優先する割込処理ルーチン３３０へのポインタ３１４を格納でき、あるいはハードウェア割込を優先するポインタ３１６を格納できる。
【００４０】
割込処理ルーチン３４０は、割込ソース・レジスタ３００を読出し、アラーム・クロック・ハードウェア割込に対応する割込ソース・レジスタ３００内のレベル４優先ビットがセットされているかどうかを判定することによって開始する。割込ソース・レジスタ３００内のレベル４優先ビットがセットされていない場合、割込強制レジスタ３０１内のレベル４優先ビットがセットされているとＣＰＵは判断し、従ってＵＡＲＴバッファがステップ３４６にて処理される。割込ソース・レジスタ３００内のレベル４優先ビットがセットされていると判断されると、ステップ３４４にてアラーム・クロックが処理される。
【００４１】
なお、ジャンプ・テーブル３１０は、割込処理ルーチン３２０を指すレベル２優先割込に対応するポインタ３１２を格納することを留意されたい。割込処理ルーチン３２０は、ＵＡＲＴバッファを処理させる。割込処理ルーチン３２０を実行するのに、判定は必要ない。なぜならば、システム内で発生できるのは一つのレベル２優先割込しかないためである。これは、ＵＡＲＴバッファ低優先ソフトウェア割込である。割込ソース・レジスタ３００は、レベル２優先ビット位置に対応するハードウェア割込を有さずに示されている。
【００４２】
図２に示す割込回路２８は、同様な優先レベルのハードウェア割込およびソフトウェア割込の両方をデータ処理システム内で共存させることができる。これは、従来の割込ハンドラに比べて、割込保留レジスタによってサポートされる潜在的な割込の数を実質的に２倍にする。従って、割込保留レジスタは、Ｎ個の優先レベルに対応するＮ個のビット位置を含むことができ、ここでこれらのビット位置の任意の一つにおけるセット値は、この優先レベルのハードウェア割込またはこの優先レベルのソフトウェア割込に対応することができる。割込保留レジスタ１６０内の値がソフトウェア生成割込またはハードウェア生成割込に起因するのかを確認するために、一つまたはそれ以上の割込ソース・レジスタ１１０および割込強制レジスタ１２０を参照できる。
【００４３】
割込ソース・レジスタ１１０によって受信されるハードウェア割込は、割込ソース・レジスタ１１０に結合された物理的な導体上で受信される信号に基づくので、これらの物理的な導体上で受信される割込の割込優先レベルは、物理的導体が対応する特定のビット位置に基づいて永久に割り当てられるか、固定される。しかし、割込強制レジスタ１２０に与えられるソフトウェア割込に関連する優先レベルは、ソフトウェア制御に基づいて変更できる。
【００４４】
上記の例で説明したように、ソフトウェア割込の優先レベルの制御は、特定の優先レベルのソフトウェア割込が検出されたときに、実行すべきこの特定のソフトウェア割込に対応する割込処理ルーチンにジャンプ・テーブルが命令するように、ジャンプ・テーブルを修正することによって達成される。従って、ＵＡＲＴバッファの処理に対応するソフトウェア割込は、最初は優先レベル２であり、ジャンプ・テーブルは、レベル２優先ソフトウェア割込がＵＡＲＴバッファを処理させるべきである旨の指標を格納する。ＵＡＲＴバッファをより高い割込優先レベルで処理すべきであるとＣＰＵがその後判断した場合、以降のＵＡＲＴバッファ・ソフトウェア割込は、優先レベル２よりも高い優先順位を有する割込強制レジスタ内のビットをセットすることによって、アサートできる。より高い優先ソフトウェア割込がＵＡＲＴバッファの所望の処理となることを保証するために、ジャンプ・テーブルは、高優先レベルに対応するソフトウェア割込の結果、ＵＡＲＴバッファを処理する割込処理ルーチンが実行されるように構築される。
【００４５】
割込優先レベルをデータ処理システムの必要性に適応させるために図２の割込回路２８の柔軟性を利用する別の用途では、受信したハードウェア割込の有効な優先レベルを変更できる。例えば、より高い優先順位の以降に受信した割込によって割り込ませずに、ＣＰＵが処理すべきと判断した低優先のハードウェア割込を受信すると、ＣＰＵはより高い優先レベルのソフトウェア割込をアサートできる。このより高い優先順位のソフトウェア割込は、ジャンプ・テーブルの構築に基づいて、低優先ハードウェア割込と同様な割込処理ルーチンの実行をトリガする。高優先ソフトウェア割込が処理中である場合、低優先割込はマスクオフされ、そのため低優先ハードウェア割込によって当初指定された割込処理ルーチンの実行は割り込めないことを保証する。
【００４６】
同様に、受信したハードウェア割込の割込処理ルーチンの実行の優先順位は実質低に格下げできる。これは、高優先ハードウェア割込の受信に応答して、低優先ソフトウェア割込をアサートすることによって達成される。低優先ソフトウェア割込がアサートされると、割込イネーブル・レジスタ１４０は、有効的な優先順位が修正される高優先レベルのハードウェア割込に対応する優先レベルをマスクオフするために利用できる。そのため、保留中のハードウェア割込はＣＰＵによって無視され、高レベルのハードウェア割込の当初の受信に応答して生成された低レベルのソフトウェア割込は、その低優先レベルに基づいて処理される。
【００４７】
上記のデータ処理システムにおける割込処理の優先順位の動的な変更は、データ処理システムが全体的な性能を向上させるために柔軟に適応することを可能にする。ジャンプ・テーブルおよび割込強制レジスタのソフトウェア構築能力とともにイネーブル・レジスタのマスキング機能を利用することによって、従来のシステムでは不可能だった、さまざまな優先順位の変更が可能になる。
【００４８】
上記の明細書では、特定の実施例を参照して、本発明について説明した。ただし、当業者であれば、特許請求の範囲に規定される本発明の範囲から逸脱せずに、さまざまな修正および変更が可能なことが理解されよう。従って、明細書および図面は、制限的な意味ではなく、例示的な意味でみなすものとし、一切のかかる修正は本発明の範囲に含まれるものとする。
【００４９】
特定の実施例について、効果，他の利点および課題の解決を説明した。ただし、効果，利点，課題の解決および任意の効果，利点または解決を生じせしめる、あるいはより明確にせしめる任意の要素は、任意あるいは全ての請求項の重要，必要もしくは不可欠な特徴または要素としてみなされるものではない。本明細書において、「構成する(comprise)」という用語およびその任意の変形は、非包括的な含有を表すものとし、要素のリストを構成するプロセス，方法，物品または装置は、これらの要素のみを含むのではなく、明示的にリスとされていない、あるいはかかるプロセス，方法，物品または装置に固有に備わっていない他の要素を含むことができる。
【図面の簡単な説明】
【図１】本発明の特定の実施例によるデータ処理システムのブロック図を示す。
【図２】本発明の特定の実施例による図１の割込回路の一部のブロック図を示す。
【図３】本発明の特定の実施例による割込ソース・レジスタおよび割込強制レジスタのブロック図を示す。
【図４】本発明の特定の実施例によるジャンプ・テーブルおよび関連ポインタのブロック図を示す。
【図５】本発明の別の実施例による別の割込ソース・レジスタおよび割込強制レジスタを示す。
【図６】本発明の別の実施例による別のジャンプ・テーブルおよび関連ポインタのブロック図を示す。
【符号の説明】
１０  データ処理システム
１２  中央処理ユニット（ＣＰＵ）回路
１４  メモリ回路
１６  タイマ回路
１８  シリアル回路
２０  他の回路
２２  システム統合回路
２４，２６  バス
２８  割込回路
３０，３２，３４，３６，３８，４０集積回路端子
１０２  ハードウェア割込
１０４  ソフトウェア割込
１１０  割込ソース・レジスタ
１２０  割込強制レジスタ
１３１，１３２，１３３  ＯＲゲート
１４０  割込イネーブル・レジスタ
１５１，１５２，１５３  ＡＮＤゲート
１６０  割込保留レジスタ
１７２  ＯＲゲート
１７４  割込要求信号
２００  割込ソース・レジスタ
２０１  割込強制レジスタ
２１０  ジャンプ・テーブル
２１２，２１４  ポインタ
２２０  割込処理ルーチン
３００  割込ソース・レジスタ
３０１  割込強制レジスタ
３１０  ジャンプ・テーブル
３１２，３１４，３１６  ポインタ
３２０，３３０，３４０  割込処理ルーチン
【図１】
0004749556.tif 000002
【図２】
0004749556.tif 000003
【図３】
0004749556.tif 000004
【図４】
0004749556.tif 000005
【図５】
0004749556.tif 000006
【図６】
0004749556.tif 000007