(57)【要約】ある実施例において、プロセッサが、イベントを処理するために形成される。プロセッサによって処理されたイベントは、それぞれ割り当てられた優先順位を有する。第１イベントが処理されるとき、第１優先順位のマスクが、第１イベントの割り当てられた優先順位に基づいて生成される。優先順位マスクは、処理可能なイベントのセットおよび処理不可能なイベントのセットを示し、優先順位レジスタに書き込まれる。第２イベントが受け付けられたとき、優先順位マスクは、第２イベントが第１イベントに優先して直ちに処理されるべきかどうかを決定するために使用される。
2004530966.tif 000002
【特許請求の範囲】
【請求項１】
優先順位が付されたイベントのセットを処理するために適合された、優先順位ロジック・モジュールのセットの第１優先順位ロジック・モジュール内で第１イベントを受け付ける段階と、
前記第１優先順位ロジック・モジュール内でマスクのサブセットを生成すること、および優先順位状態ビットを優先順位のより低いロジック・モジュールへ伝播することによって、処理可能なイベントのセットおよび処理不可能なイベントのセットを示す優先順位マスクを生成する段階と、
から成ることを特徴とする方法。
【請求項２】
前記優先順位マスクのサブセットを生成する段階は、前記第１イベントのためのイベント・アクティブ・ビットを生成する段階と、より高い優先順位のイベントのために１を生成する段階と、より低い優先順位のイベントのために０を生成する段階と、から成ることを特徴とする請求項１記載の方法。
【請求項３】
前記方法は、前記優先順位マスクに従って優先順位レジスタを更新する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項４】
前記方法は、
第２イベントを受け付ける段階と、
前記第２イベントが前記優先順位マスクによって決定された処理可能なイベントである場合には、前記第２イベントを処理する段階と、
をさらに含むことを特徴とする請求項３記載の方法。
【請求項５】
前記方法は、
前記第２イベントの割り当てられた優先順位に基づいて新しい優先順位マスクの生成する段階であって、前記新しい優先順位マスクは、処理可能なイベントのセットおよび処理不可能なイベントのセットを示す、段階と、
前記新しい優先順位マスクに従って優先順位レジスタを更新する段階と、
をさらに含むことを特徴とする請求項４記載の方法。
【請求項６】
前記方法は、
第２イベントを受け付ける段階と、
前記第２イベントが受け付けられたことを表すために、イベント・ラッチ・レジスタをセットする段階と、
前記第１イベントが処理可能かどうかを決定するために、イベント・マスク・レジスタを検出する段階と、
前記第２イベントが、前記優先順位マスクによって決定された処理可能なイベントであるとき、
前記イベント・ラッチ・レジスタが、前記第２イベントが受け付けられたことを反映してセットされたとき、および、
前記イベント・マスク・レジスタが、前記第２イベントをマスクしないとき、
に前記イベントを処理する段階と、
をさらに含むことを特徴とする請求項３記載の方法。
【請求項７】
前記方法は、
前記第１イベントが処理されていることを表すために、イベント状態レジスタをセットする段階をさらに含むことを特徴とする請求項３記載の方法。
【請求項８】
前記イベント状態レジスタをセットする段階および前記優先順位レジスタを更新する段階が、同じクロック・サイクル中に発生することを特徴とする請求項７記載の方法。
【請求項９】
前記方法は、
新しいイベントが取得されるであろうということを示す信号を生成する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項１０】
新しいイベントが取得されるであろうということを示す信号を生成する段階および優先順位マスクを生成する段階が、同じクロック・サイクル中に発生することを特徴とする請求項９記載の方法。
【請求項１１】
イベントを処理するために適合された実行ユニットと、
優先順位ロジック・モジュールのセットを含む制御ユニットであって、前記制御ユニットが、前記第１優先順位ロジック・モジュール内でマスクのサブセットを生成すること、および優先順位状態ビットを優先順位のより低いロジック・モジュールへ伝播することによって、第１ロジック・モジュール内で第１イベントが受け付けられたときに、処理可能なイベントのセットおよび処理不可能なイベントのセットを示す第１優先順位マスクを生成するために適合される、制御ユニットと、
から構成されることを特徴とする装置。
【請求項１２】
前記制御ユニットが優先順位レジスタを含み、前記制御ユニットが、前記優先順位マスクに従って前記優先順位レジスタを更新するために適合されることを特徴とする請求項１１記載の装置。
【請求項１３】
前記処理可能なイベントのセットが、前記第１イベントよりも高い優先順位を割り当てられたことを特徴とする請求項１１記載の装置。
【請求項１４】
前記装置は、
前記制御ユニット内で第２イベントを受け付け、
前記第２イベントが、前記優先順位マスクによって決定された処理可能なイベントである場合には、前記実行ユニット内で前記第２イベントを実行する、
ことを特徴とする請求項１２記載の装置。
【請求項１５】
前記制御ユニットは、
前記第２イベントが、前記優先順位マスクによって決定された処理可能なイベントである場合には、前記第２イベントの割り当てられた優先順位に基づいて第２優先順位マスクを生成し、前記第２優先順位マスクが処理可能なイベントのセットおよび処理不可能なイベントのセットを示し、
前記第２優先順位マスクに従って前記優先順位レジスタを更新する、
ために適合されることを特徴とする請求項１４記載の装置。
【請求項１６】
前記制御ユニットは、さらにイベント・ラッチ・レジスタおよびイベント・マスク・レジスタを含み、前記制御ユニットは、さらに、
第２イベントを受け付け、
前記第２イベントが受け付けられたことを表すために、イベント・ラッチ・レジスタをセットし、
前記第１イベントが処理可能かどうかを決定するために、前記イベント・マスク・レジスタを検出し、
前記第２イベントが、前記優先順位マスクによって決定された処理可能なイベントであるとき、
前記イベント・ラッチ・レジスタが、前記第２イベントが受け付けられたことを反映してセットされたとき、および、
前記イベント・マスク・レジスタが、前記第２イベントをマスクしないとき、
に前記イベントを処理する、
ために適合されることを特徴とする請求項１２記載の装置。
【請求項１７】
前記制御ユニットが、さらにイベント状態レジスタを含み、前記制御ユニットが、前記第１イベントが処理されていることを表すために前記イベント状態レジスタをセットするために適合されていることを特徴とする請求項１１記載の装置。
【請求項１８】
前記制御ユニットが、同じクロック・サイクル中に前記イベント状態レジスタをセットし、かつ、前記優先順位レジスタを更新するために適合されることを特徴とする請求項１７記載の装置。
【請求項１９】
前記制御ユニットが、新しいイベントが得られるであろうということを示す信号を生成するために適合されることを特徴とする請求項１１記載の装置。
【請求項２０】
優先順位ロジック・モジュールのセットのそれぞれが、４つのイベントを処理するために適合されることを特徴とする請求項１１記載の装置。
【請求項２１】
ＳＲＡＭメモリ・デバイスと、
前記メモリ・デバイスに結合されたプロセッサであって、前記プロセッサは、優先順位ロジック・モジュールのセットを含む制御ユニットを含み、前記制御ユニットは、前記第１優先順位ロジック・モジュール内でマスクのサブセットを生成すること、および、優先順位状態ビットを優先順位のより低いロジック・モジュールへ伝播することによって、第１ロジック・モジュール内で第１イベントが受け付けられたときに、処理可能なイベントのセットおよび処理不可能なイベントのセットを示す第１優先順位マスクを生成するために適合される、プロセッサと、
から構成されることを特徴とするシステム。
【請求項２２】
前記制御ユニットが優先順位レジスタを含み、前記制御ユニットが前記優先順位マスクに従って前記優先順位レジスタを更新するために適合されることを特徴とする請求項２１記載のシステム。
【請求項２３】
前記プロセッサが、前記制御ユニットに接続された実行ユニットをさらに含むことを特徴とする請求項２１記載のシステム。
【請求項２４】
前記プロセッサが、
前記制御ユニット内で第２イベントを受け付け、
前記第２イベントが、前記優先順位マスクによって決定された処理可能なイベントである場合には、前記実行ユニット内で前記第２イベントを実行する、
ために適合されることを特徴とする請求項２３記載のシステム。
【請求項２５】
前記制御ユニットが、直交信号を生成するために適合されたイベント管理ロジックを含むことを特徴とする請求項２１記載のシステム。
【請求項２６】
前記制御ユニットが、次の命令のアドレスを選択するための直交信号を使用するために適合される制御ロジックを含むことを特徴とする請求項２５記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサ内のイベント処理に関する。
【０００２】
【従来の技術】
デジタル信号プロセッサのようなプログラム可能なマイクロプロセッサの設計における１つの課題は、割込みおよび例外を含むイベントの処理である。割込みは、プロセッサ内の正常な命令のフローを変更するイベントである。例外は、無効命令やバス・エラーのようなエラーに遭遇したときに生じる、ソフトウェアで開始されるイベントである。プロセッサの設計において、イベントをできるだけ迅速に処理することが望ましい。しかしながら、そのためには、一般的に追加のハードウェアが必要となり、プロセッサの電力消費を増加させることになる。
【０００３】
イベント処理における課題は、割込みが入れ子にされる可能性があるという事実によってさらに複雑になる。換言すれば、第１の割込みがまだ処理されている間に、第２の割込み（例えば入れ子の割込み）が受け付けられることがある。したがって、所定のいかなる時間でも、多くの割り込み処理ルーチンが活動状態になり得る。イベント処理には、最も効率的な方法で、活動状態にある複数の処理ルーチンを取り扱うための優先順位を決める機構が要求される。
【０００４】
【詳細な説明】
図１は、実行ユニット４および制御ユニット６を有するプログラム可能なプロセッサ２を図示するブロック図である。制御ユニット６は、イベント・ハンドラ１０を有する。イベント・ハンドラ１０は、以下で詳述されるように、処理するイベントの演算時間を短縮することができる。特に、イベント・ハンドラ１０は、処理可能なイベントのセットおよび処理不可能なイベントのセットを示す優先順位マスクを生成する。このようにして、プロセッサ２は迅速に処理可能なイベントを認識して処理することができる。
【０００５】
実行ユニット４は、命令を処理するための多くのステージを有する実行パイプラインである。各ステージは他のステージと同時に処理を行い、各クロック・サイクルで結果をパイプライン内の次のステージへ渡す。各命令の最終結果は、間断なくパイプラインの終端に現れる。
【０００６】
制御ユニット６は、実行ユニット４を介して命令およびデータのフローを制御する。命令の処理中に、例えば制御ユニット６は、演算ユニットの多様なコンポーネントに対して、命令を取り出して解読し、対応する動作を実行し、メモリまたはローカル・レジスタに結果を書き戻すことを指示する。
【０００７】
図２は、イベント・ハンドラ１０の実施例を図示するブロック図である。イベント・ハンドラ１０は、イベント優先順位レジスタ（ＩＰＥＮＤ＿Ｒ）１６に接続された優先順位ロジック１４を有する。イベント・ハンドラ１０はまた、イベント・マスク・レジスタ（ＩＭＡＳＫ）１８およびイベント・ラッチ・レジスタ（ＩＬＡＴ）２０を有する。ロジック２２は、ＩＭＡＳＫ１８およびＩＬＡＴ２０に接続される。ＩＰＥＮＤ＿Ｒ１６、ＩＭＡＳＫ１８およびＩＬＡＴ２０は、すべてイベント管理ロジック２４に接続される。イベント管理ロジック２４は、制御ロジック２５に接続される。さらに、イベント管理ロジック２４は、状態レジスタ（ＩＰＥＮＤ）２６に接続される。さらに、イベント管理ロジック２４は、優先順位ロジック１４に接続される。
【０００８】
プロセッサ２によって処理されるすべてのイベントは、イベント優先順位を有する。レジスタ１６，１８，２０，２６はすべて同じ幅を有し、各レジスタは複数の番号が付されたビットを有する。さらに、レジスタ１６，１８，２０，２６のそれぞれにおいて、同じ番号が付されたビットは同じイベントに関連する。したがって、プロセッサ２によって処理されるすべてのイベントは、レジスタ１６，１８，２０，２６のそれぞれと関連するビットを有する。
【０００９】
典型的な実施例では、レジスタ１６，１８，２０，２６は１６ビットのレジスタである。各レジスタは、１６のイベント（例えばイベント０−１５）のうちの１つに対応するビットを有する。イベント０−１５は、例えば０番目のイベントが優先順位の最も高いイベントであり、１５番目のイベントが優先順位の最も低いイベントであるというように優先順位がつけられる。例として、イベント０−１５は、以下のように優先順位がつけられる：エミュレーション０、リセット１、マスクできない割込み２、例外３、グローバル割込み可能４、ハードウェア・エラー５、優先順位の高いタイマ６、および一般的な割込み優先順に一般的な割込み７−１５。
【００１０】
ＩＭＡＳＫレジスタ１８は、イベントを割込み可能または割込み禁止にすることを容易にするイベント・マスク・レジスタである。したがって、ＩＭＡＳＫ１８内の各ビットは、対応するイベントが割込み可能であるかどうか示す。例えば、特別のイベントのためのＩＭＡＳＫビットが１である場合、イベントは割込み可能である。イベントが割込み可能でない場合、回路は決してイベントを処理しない。ＩＭＡＳＫレジスタ１８内のビットは、当業者に知られている任意の方法によってセットされる。これらは、ＩＭＡＳＫをセットするためにメモリ・マップ・レジスタへ書き込むこと、またはＩＭＡＳＫをセットするためにソフトウェア命令を実行することを含むであろう。このように、どのようなイベントも、容易に割込み可能または割込み禁止にすることができる。
【００１１】
１つの特定の実施例では、たとえシステム内に１６個の異なる優先順位の命令が存在するとしても、ＩＭＡＳＫレジスタは１６ビットよりも小さい幅を有する。この実施例において、例えば、特定の優先順位が高いビット（例えば０−４）は、決してマスクされない。したがって、ＩＭＡＳＫレジスタは、常に割込み可能であるイベント０−４を占めるビットを有さない。
【００１２】
イベント・ラッチ・レジスタ（ＩＬＡＴ）２０内のビットは、対応するイベントがシステムによっていつラッチ（または受付）されたかを示す。イベントがラッチされる時は常に、それに対応するビットがＩＬＡＴ内で１にセットされる。そして、イベントがシステムによって受け入れられるときに、対応するビットがＩＬＡＴ内で０にリセットされる。したがって、ＩＬＡＴは、受け付けられたがまだ処理されていないイベントを示す。
【００１３】
ＩＬＡＴ内の各ビットは、ハードウェア要求またはソフトウェア要求によってセットされる。一度セットされると、関連するイベントが処理のために受け入れられない限り、ビットはＩＬＡＴ内に保持される。しかしながら、一旦イベントがシステムによって受け入れられると、ＩＬＡＴ内のビットは０にリセットされる。さらに、いくつかの実施例では、ＩＬＡＴ内の１またはそれ以上のビットはクリアされ得る。
【００１４】
ＩＰＥＮＤレジスタ２６は、現在活動状態にあるすべてのイベントを追跡する状態レジスタである。イベントがシステムによって受け入れられる（そして、例えばＩＬＡＴ内のそのビットが０にリセットされる）とき、ＩＰＥＮＤ内のそのビットが１にセットされる。所定のいかなる時間でも、複数のイベントを活動可能にすることができ、したがって、ＩＰＥＮＤ内の複数のビットをセットすることができる。しかしながら、１つのイベントだけを一度に処理することもできる。したがって、ＩＰＥＮＤ内でセットされる優先順位が最も高いビットは、どのイベントが現在処理されているのかを示す。
【００１５】
ＩＰＥＮＤ＿Ｒ１６は、システムによって現在処理されているイベントの優先順位を表す優先順位レジスタである。同時に、ＩＰＥＮＤ＿Ｒは、処理可能なイベントおよび処理不可能なイベントの進行中のタブを提供する。
【００１６】
１つの構成において、ＩＰＥＮＤ内でセットされた優先順位が最も高いビットが、ＩＰＥＮＤ＿Ｒ内のイベント・アクティブ・ビットに対応する。ＩＰＥＮＤ＿Ｒ内のイベント・アクティブ・ビットは、ＩＰＥＮＤ＿Ｒ内の優先順位がより低いすべてのビットと共に０にセットされる。イベント・アクティブ・ビットよりも優先順位が高いすべてのビットは、１にセットされる。したがって、ＩＰＥＮＤ＿Ｒ内のイベント・アクティブ・ビットは、そのレジスタ内で０にセットされるビットのうち、優先順位が最も高いビットである。
【００１７】
ＩＰＥＮＤ＿Ｒは、処理可能なイベントを検出するために、プロセッサ２に迅速かつ効率的な方法を提供する。イベント・アクティブ・ビットよりも優先順位が高いビットだけがＩＰＥＮＤ＿Ｒ内で１にセットされるので、イベント・ハンドラ１０は迅速にイベントが処理可能であることを識別することができる。ＩＰＥＮＤ＿Ｒ内のイベントのビットが１である場合、それは直ちに処理可能である。
【００１８】
さらに、ＩＰＥＮＤの入力は、ＩＰＥＮＤ＿Ｒの値を計算するロジックに入力を提供する。したがって、ＩＰＥＮＤが調整されるとき（例えば新しいイベントが得られるとき）はいつでも、ＩＰＥＮＤ＿Ｒは同一のクロック・サイクル内で自動的に調整される。このように、新しいイベントが受け付けられたときはいつでも、イベント・ハンドラ１０が優先順位の決定を行うことを可能にするために、ＩＰＥＮＤ＿Ｒを利用することができる。
【００１９】
イベント・ハンドラは、レジスタＩＰＥＮＤ＿Ｒ１６，ＩＬＡＴ１８，ＩＭＡＳＫ２０を使用することによって、迅速かつ効率的にイベントを処理することができる。ＩＬＡＴ１８は、受け付けられたが処理されていないイベントをイベント・ハンドラ１０に伝える。ＩＭＡＳＫ２０は、プロセッサ２が特別のイベントを処理することが可能であるかどうかをハンドラ１０に伝える。そして、ＩＰＥＮＤ＿Ｒ１６は、イベントが直ちに処理されるほど優先順位が高いかどうかをハンドラに伝える。したがって、イベントのビットが、これら３つのレジスタのすべてにおいて１であるときに、イベントが得られる。さらに、新しいイベントが得られるであろうという事実を迅速に検出することによって、イベント管理ロジック２４および制御ロジック２５が、新しいイベントの処理ルーチンへのフローの変更を、迅速かつ効率的に処理することが可能になる。
【００２０】
時には、より高い優先順位のイベントが処理されているために、イベントが直ちに得られないことがある。例えば、より高い優先順位のイベントが現在処理されている場合、ＩＰＥＮＤ＿Ｒは、より低い優先順位のイベントのために０となる。したがって、イベントはシステムによって受け入れられず、そのＩＬＡＴビットはその値を保持する。
【００２１】
しかしながら、ついには、システムがより高い優先順位のイベントの処理を終える。一旦その処理ルーチンが終了すると、より高い優先順位のイベントのビットは、ＩＰＥＮＤ内で０に戻され、ＩＰＥＮＤ＿Ｒが調整される。この時点で、そのＩＰＥＮＤ＿Ｒビットが１に調整された場合は、より低い優先順位のイベントがシステムに受け入れられる。
【００２２】
図３は、イベントの割り当てられた優先順位に基づいて優先順位マスクを生成するために使用される、優先順位ロジック１４の典型的な実施例を示す回路図である。この優先順位マスクは、ＩＰＥＮＤ＿Ｒに書き込まれ、かつイベント・ハンドラ１０によって使用され、これによって、プロセッサ２が処理可能なイベントを迅速に認識し処理できるようになる。
【００２３】
優先順位ロジック１４は１６個の入力を有し、各入力が１６個のイベントのうちの１つに対応する。これら１６個の入力は、ＩＰＥＮＤレジスタ（図示せず）をセットするイベント管理ロジック２４のそれぞれの出力から到来する。優先順位ロジックは、さらに、ＩＰＥＮＤ＿Ｒレジスタ１６の１６個のビットのそれぞれに接続された１６個の出力を有する。
【００２４】
優先順位ロジック１４の各入力はそれぞれ、イベント管理ロジック（図示せず）の対応する出力から到来する。イベントのビットが、イベント管理ロジック（図示せず）によってＩＰＥＮＤ内で０にセットされたとき、優先順位ロジックは０を反転し、イベント・ビットに対して１を出力する。イベントのビットが、イベント管理ロジック（図示せず）によってＩＰＥＮＤ内で１にセットされたとき、優先順位ロジック１４は１を反転し、イベントのビットに対して０を出力する。さらに、イベントのビットが、イベント管理ロジック（図示せず）によってＩＰＥＮＤ内で１にセットされたとき、優先順位ロジックは、１を反転し、かつイベントのビットよりも優先順位が低いすべてのビットに対して０を伝播するために適合される。優先順位ロジック１４によって生成された１と０のこの収集は、ＩＰＥＮＤ＿Ｒ１６内に書き込まれる優先順位マスクである。
【００２５】
図３に示されるように、優先順位ロジック１４の１つの実施例は、優先順位ロジック・モジュール４０，４２，４４，４６によって実施される。これらの優先順位ロジック・モジュールは、４０，４２，４４，４６は、総体として優先順位マスクを生成する。例えば、優先順位ロジック・モジュール４０，４２，４４，４６に１が入力された場合、そのモジュールは、そのそれぞれのビットのために優先順位マスクのサブセットを生成する。優先順位マスクのサブセットは、モジュールによって受け付けられるイベントのためにイベント・アクティブ・ビット（例えば０）を生成し、モジュールによって処理される優先順位のより高いイベントのために１を生成し、そして、モジュールによって処理される優先順位のより低いイベントのために０を生成することにより生成される。優先順位状況ビットもまた、より低い優先順位のロジック・モジュールに伝播される（例えば、より低い優先順位のモジュールによって処理されるイベントのために０を出力する結果となる）。さらに、より高い優先順位のロジック・モジュールは、それらが処理するイベントのために１を出力する。このようにして、優先順位ロジック・モジュールの収集は優先順位マスクを生成する。
【００２６】
特定の実施例において、優先順位ロジック・モジュール４０，４２，４４，４６は、それぞれが４個の入力および４個の出力を有するクワッドである。１がクワッドへ入力されるときは常に、全ての優先順位のより低いクワッド（ｑｕａｄ）の出力は０である。さらに、あるクワッドによって１が受け付けられた場合、そのクワッド内の対応するビットおよび全ての優先順位のより低いビットの出力は０であり、一方で、全ての優先順位のより高いビットの出力は１である。図３に示されるように、優先順位ロジック・モジュール４０は、１層のＡＮＤゲートを有するクワッドであり、一方、優先順位ロジック・モジュール４２は、２層のＡＮＤゲートを有するクワッドである。同様に、優先順位ロジック・モジュール４４および優先順位ロジック・モジュール４６は、それぞれが２層のＡＮＤゲート（モジュール４２内で示されたものと同様）を有するクワッドである。モジュール４４内のＡＮＤゲートの第２層は、モジュール４２から到来する１個の入力を有する。同様に、モジュール４６内のＡＮＤゲートの第２層は、モジュール４４から到来する１個の入力を有する。このようにして、優先順位ロジック１４は、迅速かつ効率的に機能することができる。優先順位ロジック１４、および／または優先順位ロジック・モジュール４０，４２，４４，４６の他の実施例は、図３に照らして明らかになるであろう。
【００２７】
図４は、本発明の実施例に従って動作モードを示すフロー・チャートである。イベントが受け付けられたとき（６０）、ＩＬＡＴ内でそのビットがセットされ（６２）、その優先順位が決定される（６４）。その優先順位が、ＩＰＥＮＤ＿Ｒレジスタ内で１に対応するまで（６６）、イベントは処理されない。イベントの優先順位が、ＩＰＥＮＤ＿Ｒ（６６）およびＩＭＡＳＫ（６８）内で１に対応する場合、そのビットがＩＰＥＮＤ内でセットされ（７０）、ＩＬＡＴ内でクリアされる（７２）。ＩＰＥＮＤをセットすることによって、次に、ＩＰＥＮＤ＿Ｒレジスタが調整される（７４）。この時点で、イベントが処理される（７６）。イベントが処理されるとすぐに（７８）、ＩＰＥＮＤ内のそのビットが０に戻され（８０）、それが再びＩＰＥＮＤ＿Ｒを調整する（８２）。
【００２８】
図５は、本発明の実施例に従って動作モードを示す別のフロー・チャートである。図５は、１つの実施例が、どのようにして入れ子のイベントを効率的に処理するかを示す。優先順位ＸのイベントＸが受け付けられたとき、ＩＬＡＴ内のＸ番目のビットが１にセットされる（９２）。しかしながら、ここでもまた、ＩＰＥＮＤ＿Ｒ（９４）およびＩＭＡＳＫ（９６）内のそのビットが１にセットされるまで、イベント・ハンドラはイベントを処理しない。ＩＬＡＴ、ＩＰＥＮＤ＿ＲおよびＩＭＡＳＫのすべてがイベントのビットのために１を有する場合、そのＩＬＡＴビットは０に戻され（９８）、イベントが処理される（１００）。この時点で、ＩＰＥＮＤ内のイベントのビットが１にセットされる（１０２）。ＩＰＥＮＤをセットすることによって（１０２）、次に、ＩＰＥＮＤ＿Ｒが調整される（１０４）。イベントが処理されるとすぐに（１０６）、ＩＰＥＮＤとＩＰＥＮＤ＿Ｒが再び調整される（１０８）。
【００２９】
イベントが処理される前に（１０６）、第２のイベントが受け付けられた場合（１１０）、第２のイベントのビットがＩＬＡＴ内で１にセットされる（１１２）。第２のイベントが第１のイベントよりも高い優先順位を有さない場合（１１４）、（ＩＰＥＮＤ＿Ｒを調査することにより迅速に決定される）、第１のイベントが処理される（１１６）。（１１８）で示されるように、ステップ（９４）で始まるプロセスが、第２のイベントのために繰り返される。
【００３０】
第２のイベントが第１のイベントよりも高い優先順位を有する場合（１１４）、（再び、ＩＰＥＮＤ＿Ｒを調査することにより迅速に決定される）、第２のイベントは第１のイベントに優先して処理される。（１１８）で示されるように、ステップ（９４）で始まるプロセスが、第２のイベントのために繰り返される。そして、第２のイベントが処理された後、回路は第１のイベントの処理を終了する（１２０）。
【００３１】
図６は、状態レジスタ（ＩＰＥＮＤ）２６を調節するために実施される回路の実施例を示す回路図である。図６はＩＰＥＮＤ内の１ビットのための典型的な回路である。ＩＰＥＮＤ内の他のビットのいずれもが、それと関連する同様の回路を有する。
【００３２】
ＩＰＥＮＤ２６の対応するビットは、システムによって得られたすべてのイベントのために１にセットされる。しかしながら、一旦特定のイベントの処理ルーチンが実行されると、ＩＰＥＮＤ内の対応するビットは、この事実を表すためにクリアされる必要がある。図５に示されるように、ＩＰＥＮＤ＿Ｒレジスタ内の遷移は、３ウエイＡＮＤゲート１２２によって検出される。上述のように、ＩＰＥＮＤ＿Ｒ内の０から１への遷移は、ＩＰＥＮＤ内の現在活動可能なイベントのビットを画定する。ゲート１２２のＲＴＩ入力は、イベント・ハンドラの最終命令（例えばＲＴＩ命令）を検出する。したがって、ゲート１２２が、ＩＰＥＮＤ＿Ｒ内の遷移およびＲＴＩ命令の双方を検出するとき、そのイベントのためのＩＰＥＮＤのビットがクリアされる。さらに、同一の信号１２４は、同一のクロック・サイクル間に、ＩＰＥＮＤ＿Ｒ１６を調整するために優先順位ロジック・モジュール４０，４２，４４，４６に送り返される。
【００３３】
図７は、本発明の実施例に従って、他の特徴を示す回路ブロック図である。ＩＰＥＮＤ＿Ｒレジスタ１６、ＩＭＡＳＫレジスタ１８、ＩＬＡＴレジスタ２０は、すべてイベント管理ロジック２４に接続される。イベント管理ロジックは、制御ロジック２５に接続される。イベント管理ロジックは、そのそれぞれの出力が互いに関して直交するように適合される。換言すると、イベント管理ロジックからの１６個の出力のうちの１つだけを、任意の所定時間にセットすることができる。したがって、イベント管理ロジック２４からの出力を全くセットしないことも、また、出力の１つだけを所定の時間にセットすることもできる。
【００３４】
これらの直交信号に基づいて、イベント・ベクトル選択線１３０は、いずれの処理ルーチンの取り出しが必要であるかを決定するために使用される。したがって、ＩＰＥＮＤが書き込まれている（および、優先順位ロジックが優先順位マスクを生成し、ＩＰＥＮＤ＿Ｒにそれが書き込まれる）間に、イベント・ベクトル選択線が、適切な処理ルーチンを選択するために使用される。そして、処理ルーチンがＩＣＡＣＨＥ（図示せず）から取り出され、実行パイプライン内で実行される。
【００３５】
図８は、本発明に従った実施例を示す回路ブロック図であって、イベント管理ロジック２４に接続されたレジスタ１６，１８，２０を示す。図示のように、各レジスタの４番目のビットは、ＡＮＤゲート１３１へ移動する。レジスタ１６，１８，２０の他のすべてのビットは、同様のＡＮＤゲート（図示せず）へ移動する。このようにして、イベント管理ロジックは、３つのレジスタ１６，１８，２０のすべてに書き込まれたイベントを有するイベントのみを取得する。
【００３６】
イベント管理ロジック２４は、それぞれが、ロジック２４の出力の１つだけが任意の所定時間に駆動し得ることを保証する回路（図１０−１３の各図を参照）を有するイベント管理ロジック・モジュール１３２，１３４，１３６，１３８を実行する。したがって、イベント・ベクトル選択線１３０に対して、信号はは互いに関して直交である。これらの直交の信号に基づいて、イベント・ベクトル選択線１３０は、イベント・ベクトル・テーブルからのイベントを選択する（例えば、どの処理ルーチンの取り出しが必要であるかを指定する）ために使用される。
【００３７】
図９は、本発明の実施例に従って他の特徴を示す回路図である。上述のように、レジスタ１６，１８，２０のすべてのビットは、図８の１３１で示さたＡＮＤゲートに類似したＡＮＤゲートに、それぞれの入力を提供する。図９は、イベント管理ロジック・モジュール１３２，１３４，１３６，１３８に接続されたそれぞれの出力を有する、全１６個のＡＮＤゲートを示す。しかしながら、１６個のＡＮＤゲートの出力は、さらに１６ウエイのＯＲゲート１５０に入力を提供する。このＯＲゲート１５０は、他方で、制御ロジック２５に接続される。このようにして、イベントが次のクロック・サイクルで取得されるであろうということを示すために、初期信号が作成される。そして、この初期信号は、フローの変更を効率的に処理するために、制御ロジック２５内で使用することができる。
【００３８】
図１０−図１３はそれぞれ、イベント・ベクトル選択線１３０で直交信号を生成するために使用されるイベント管理ロジック・モジュール１３８，１３６，１３４，１３２のための典型的なロジックを示す。図１０は、モジュール１３８のための典型的なロジックを示す。図１１は、ＮＯＲゲート１６０を含むモジュール１３６のための典型的なロジックを示す。ＮＯＲゲート１６０の入力はまた、モジュール１３８の入力でもある。図１２は、ＮＯＲゲート１６０およびＮＯＲゲート１７０を含むモジュール１３４のための典型的なロジックを示す。ＮＯＲゲート１６０の入力はモジュール１３８の入力と同じであり、一方、ＮＯＲゲート１７０の入力はモジュール１３６の入力である。図１３は、ＮＯＲゲート１６０，１７０，１８０を含むモジュール１３２のための典型的なロジックを示す。さらに、ゲート１６０の入力はモジュール１３８の入力であり、ゲート１７０の入力はモジュール１３６の入力であり、ゲート１８０の入力はモジュール１３４の入力である。イベント・ベクトル選択線１３０で直交信号を生成するための他の実施例は、図１０−図１３に照らして明らかになるであろう。
【００３９】
図１４は、イベント処理ルーチン動作のモードを示すフロー・チャートである。図示のように、イベント管理はわずか３つのクロック・サイクルしか要しない。最初のサイクルは、イベントをラッチすることを含む。第１のクロックのサイクル間に、イベントが受け付けられ（１９０）、そのビットがＩＬＡＴ内でセットされる（１９２）。
【００４０】
第２のクロック・サイクル間に、イベントが処理される。第２のクロック・サイクル間に、優先順位検出（１９４）およびイベント・マスキング（１９６）が、イベントが取得されるかどうかを決定する（１９８）。もしそうであれば、イベントのビットが状態レジスタに書き込まれ（２００）、優先順位レジスタが調整される（２０２）。さらに、１またはそれ以上の信号が生成され、フローの変更の処理を促進する（２０４）。これらの信号は、新しいイベントが取得されるであろうということを示す初期信号、または、適切な処理ルーチンを選択するために使用される直交信号を含む。
【００４１】
第３のクロック・サイクル間に、フローの変更が処理される。実行ユニットが終了し（２０６）、新しいイベント・アドレスがＩＣＡＣＨＥに付与される（２０８）。さらに、１またはそれ以上のアボートされた命令のアドレスは、復帰レジスタ内に保存される（２１０）。そして、続くクロック・サイクル間に、適切な処理ルーチンが演算ユニット内で実行される。
【００４２】
発明の多くの実施例が記述された。例えば、処理可能なイベントのセットおよび処理不可能なイベントのセットを示す優先順位マスクを生成するイベント・ハンドラを有するプロセッサについて記述された。プロセッサは、汎用目的の演算システム、デジタル処理システム、ラップトップ・コンピュータ、個人用デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステムで実行される。このようなあらゆるシステムにおいて、プロセッサは、フラッシュ・メモリ・デバイスまたはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のような、オペレーティング・システムを格納するメモリ・デバイスおよび他のソフトウェア・アプリケーションに結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図１】本発明の実施例に従ってプログラム可能なプロセッサを示すブロック図である。
【図２】イベント・ハンドラの実施例を示すブロック図である。
【図３】優先順位ロジックの典型的な実施例を示す回路図である。
【図４】本発明の実施例に従って動作モードを示すフロー・チャートである。
【図５】本発明の実施例に従って動作モードを示す他のフロー・チャートである。
【図６】本発明の実施例に従って状態レジスタを調整するための回路を示す回路図である。
【図７】本発明の実施例に従ってイベント・ベクトル選択線を示す回路ブロック図である。
【図８】本発明の実施例に従ってモジュールを有するイベント管理ロジックに接続されたレジスタを示す回路ブロック図である。
【図９】本発明の実施例に従って初期信号がどのように生成されるかを示す回路図である。
【図１０】本発明の実施例に従って図８のモジュールのための典型的なロジックを示す。
【図１１】本発明の実施例に従って図８のモジュールのための典型的なロジックを示す。
【図１２】本発明の実施例に従って図８のモジュールのための典型的なロジックを示す。
【図１３】本発明の実施例に従って図８のモジュールのための典型的なロジックを示す。
【図１４】本発明の実施例に従ってイベント処理ルーチン動作のモードを示すフロー・チャートである。
【図１】
2004530966.tif 000003
【図２】
2004530966.tif 000004
【図３】
2004530966.tif 000005
【図４】
2004530966.tif 000006
【図５】
2004530966.tif 000007
【図６】
2004530966.tif 000008
【図７】
2004530966.tif 000009
【図８】
2004530966.tif 000010
【図９】
2004530966.tif 000011
【図１０】
2004530966.tif 000012
【図１１】
2004530966.tif 000013
【図１２】
2004530966.tif 000014
【図１３】
2004530966.tif 000015
【図１４】
2004530966.tif 000016
【国際公開パンフレット】
2004530966.tif 000017
2004530966.tif 000018
2004530966.tif 000019
2004530966.tif 000020
2004530966.tif 000021
2004530966.tif 000022
2004530966.tif 000023
2004530966.tif 000024
2004530966.tif 000025
2004530966.tif 000026
2004530966.tif 000027
2004530966.tif 000028
2004530966.tif 000029
2004530966.tif 000030
2004530966.tif 000031
2004530966.tif 000032
2004530966.tif 000033
2004530966.tif 000034
2004530966.tif 000035
2004530966.tif 000036
2004530966.tif 000037
2004530966.tif 000038
2004530966.tif 000039
2004530966.tif 000040
2004530966.tif 000041
2004530966.tif 000042
2004530966.tif 000043
2004530966.tif 000044
2004530966.tif 000045
2004530966.tif 000046
2004530966.tif 000047
2004530966.tif 000048
2004530966.tif 000049
2004530966.tif 000050
2004530966.tif 000051
2004530966.tif 000052
2004530966.tif 000053
2004530966.tif 000054
2004530966.tif 000055
2004530966.tif 000056
2004530966.tif 000057
2004530966.tif 000058