(57)【要約】プロセッサを用いるシステムにおいて、Ｉ／Ｏデバイス３０１からの割込リクエストを素早く処理する、予め格納されるベクトルの割込処理システムは、選択ロジック３０７および割込ベクトル記憶装置３０８を含み、分岐命令を、割込ベクトル記憶装置から、直接、プロセッサの実行ユニット３１５に素早く伝達する。割込ベクトル記憶装置は、システム初期化の間に、プロセッサの分岐命令のテーブルが予めロードされているか、または、ＲＯＭに実装されるかのいずれかである。通常動作の間、割込が受け取られる場合、マスタ割込信号がプロセッサに対して発行され、外部チップ選択ロジック３０７への命令サイクルモード信号をアサートする。チップ選択ロジックは、プログラム記憶装置を非選択にし、割込ベクトル記憶装置を選択する。ベクトル記憶装置からの割込ベクトルは、データバスにロードされ、その後、直接、プロセッサの実行ユニットにロードされる。【選択図】図３
2004516548.tif 000002
【特許請求の範囲】
【請求項１】
プログラム記憶装置に格納されるプログラムコード命令を実行するように構築されるプロセッサを含む、予め格納されるベクトルの割込処理システムは、
複数の割込ベクトルを含む割込ベクトル記憶装置と、
複数の割込リクエスト信号に接続される割込制御デバイスであって、該割込制御デバイスは、割込リクエスト信号を該プロセッサに出力する、割込制御デバイスと、
該プロセッサのサイクルタイプ信号に応答して、該プログラム記憶装置からのプログラムコード命令と該割込ベクトル記憶装置からの割込ベクトルとの間で、該プロセッサの実行ユニットにロードされるものの選択を行う、セレクタと
を含む、システム。
【請求項２】
前記割込制御デバイスは、複数の割込リクエスト信号の優先順位付けを行う優先順位付け器を含む、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項３】
前記優先順位付け器は、いずれの割込ベクトルを前記実行ユニットにロードするかを識別する、前記割込ベクトル記憶装置への割込識別子信号をアサートする、請求項２に記載の予め格納されるベクトルの割込処理システム。
【請求項４】
前記割込制御デバイスは、複数の割込リクエスト信号をマスキングする手段を含む、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項５】
前記マスキングする手段は、複数の割込リクエストラインをマスキングするレジスタを含む、請求項４に記載の予め格納されるベクトルの割込処理システム。
【請求項６】
前記割込ベクトル記憶装置は、割込ベクトルを用いて、予めプログラムされており、該割込ベクトルの各々は、前記プログラム記憶装置内の割込サービスルーチンにジャンプする分岐命令である、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項７】
前記割込ベクトル記憶装置は、読出し専用メモリ（ＲＯＭ）に実装されている、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項８】
割込ソースは、データ入力デバイス、データ出力デバイス、埋込ハードウェアデバイス、およびデータ格納デバイスのうちの１つ以上を含む、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項９】
前記予め格納されるベクトルの割込処理システムは、コンピュータシステムに組み込まれる、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項１０】
前記予め格納されるベクトルの割込処理システムは、マイクロコントローラに組み込まれる、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項１１】
前記プロセッサは、マイクロプロセッサである、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項１２】
前記マイクロプロセッサは、キャッシュを含む、請求項１１に記載の予め格納されるベクトルの割込処理システム。
【請求項１３】
前記マイクロプロセッサは、命令をプリフェッチする手段を含む、請求項１２に記載の予め格納されるベクトルの割込処理システム。
【請求項１４】
前記予め格納されるベクトルの割込処理システムは、無線通信デバイスに含まれる、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項１５】
初期化モードと割込モードとの間で選択を行うマルチプレクサをさらに含む、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項１６】
前記セレクタは、前記プロセッサからのサイクルタイプ出力信号に接続される、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項１７】
前記セレクタは、前記プロセッサからの前記サイクルタイプ出力信号が割込サイクルである場合、前記割込ベクトル記憶装置へのチップ選択信号をアサートし、前記プログラム記憶装置へのチップ選択制御信号をデアサートし、該プロセッサからの該サイクルタイプ出力信号が非割込命令サイクルである場合、該割込ベクトル記憶装置への前記制御信号をデアサートし、該プログラム記憶装置への該チップ選択信号をアサートする、請求項１６に記載の予め格納されるベクトルの割込処理システム。
【請求項１８】
前記セレクタは、前記プロセッサからの読出し／書込み出力信号に接続され、該読出し／書込み出力信号は、該セレクタによって、該プロセッサからの前記サイクルタイプ出力信号が割込サイクルである場合、前記割込ベクトル記憶装置を読出しモードにするために用いられる、請求項１７に記載の予め格納されるベクトルの割込処理システム。
【請求項１９】
前記プロセッサが、デジタル信号プロセッサ（ＤＳＰ）である、請求項１に記載の予め格納されるベクトルの割込処理システム。
【請求項２０】
プロセッサを含むシステムにおいて、予め格納されるベクトルの割込処理を行う方法であって、
プロセッサの通常命令フェッチバスサイクルに割り込む工程と、
割込識別子信号を該割込ベクトル記憶装置に対して生成する工程と、
予め格納される割込ベクトルを、該プロセッサの実行ユニットに直接伝達する工程であって、該予め格納される割込ベクトルは、該割込識別子信号に依存する、工程と
を包含する、方法。
【請求項２１】
前記割込ベクトル記憶装置を初期化する工程をさらに含む、請求項２０に記載の方法。
【請求項２２】
前記ベクトル記憶装置を初期化する工程は、該割込ベクトル記憶装置に複数の割込ベクトルを予め格納する工程をさらに含む、請求項２１に記載の方法。
【請求項２３】
前記プロセッサの通常命令フェッチバスサイクルに割り込む工程は、前記割込ベクトル記憶装置が、該割込ベクトル記憶装置へのチップ選択制御信号をアサートし、前記プログラム記憶装置へのチップ選択制御信号をデアサートすることによって、該データバスの排他的制御を有することを確実にする工程をさらに含む、請求項２０に記載の方法。
【請求項２４】
プロセッサ制御デバイスにおいて割込を処理するシステムであって、該プロセッサ制御デバイスは、プログラム命令の組として格納されるソフトウェアプログラムを実行するプロセッサを含み、該システムは、
割込ベクトル記憶装置と、
複数の割込リクエスト信号に接続される割込コントローラであって、該割込コントローラは、マスタ割込信号を出力し、
該割込ベクトル記憶装置とともに制御構成内にあり、メモリ格納プログラム命令が該プロセッサによって実行されている、セレクタであって、該セレクタは、該プロセッサに、該マスタ割込信号がアサートされない場合に、次のプログラム命令を受け取り、該マスタ割込信号がアサートされる場合に、該割込ベクトル記憶装置から割込ベクトル（分岐命令オペレーションコードおよびアドレス）を受け取らせる、セレクタと
を含む、システム。
【請求項２５】
前記割込ベクトルは、前記プロセッサの実行ユニットに直接提供される、請求項２４に記載のシステム。
【請求項２６】
前記割込ベクトル記憶装置は、前記プロセッサの実行中に、１つ以上の割込ベクトルがダイナミックにロードされる、請求項２４に記載のシステム。
【請求項２７】
前記割込ベクトル記憶装置は、１つ以上の割込ベクトルがスタティックに予めロードされる、請求項２４に記載のシステム。
【請求項２８】
前記プロセッサは、システムバスに接続され、前記セレクタは、前記プロセッサに、前記マスタ割込信号がアサートされない場合に、前記プログラム命令を格納する前記メモリに接続される第１の選択信号をアサートすることによって、次のプログラム命令を受け取らせ、該プロセッサに、該マスタ割込信号がアサートされる場合に、前記割込ベクトル記憶装置に接続される第２の選択信号をアサートすることによって、該割込ベクトル記憶装置から割込ベクトルを受け取らせる、請求項２４に記載のシステム。
【請求項２９】
前記割込ベクトル記憶装置は、複数の割込ベクトルを含み、該割込ベクトルの各々は、異なる割込リクエスト信号に対応する、請求項２４に記載のシステム。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明の分野は、概してプロセッサベースのシステムに関し、より詳細には、プロセッサベースのシステムにおけるベクトル割り込み処理のための方法およびシステムに関する。
【０００２】
（背景）
プロセッサベースのシステムは周辺コンポーネント（入出力（Ｉ／Ｏデバイス）と呼ばれる）を使用して外部環境と通信する。恐らく最も知られたプロセッサベースのシステムは、デジタルコンピュータである。コンピュータシステムで見られるＩ／Ｏデバイスの例は、いくつか列挙すると、キーボード、モニタ、ディスクドライブ、およびネットワークインターフェースカードを含む。注意を必要とするＩ／Ｏデバイスは、通常いくつかの種類のＩ／Ｏサービスリクエストをプロセッサに送信する。
【０００３】
ほとんどのアプリケーションでは、システムがＩ／Ｏリクエストを処理する速度および効率はシステム全体のスループットの主要な決定の内の１つである。従って、通常の単一のプロセッサシステムは、Ｉ／Ｏデバイスのそれぞれがプロセッサからの注意を周期的に必要とする場合、概してシステムのＩ／Ｏデバイスのそれぞれの間にプロセッサの時間を割り当てるためのいくつかの方法を有しなければならない。これらのリクエストを提供するための支配的な方法は、ポーリングおよび割込み制御である。
【０００４】
図１は、ポーリング方法を用いてプロセッサベースのシステム１００を機能的に表すブロック図である。プロセッサ１０１、ＲＡＭモジュール１０２、およびＲＯＭモジュール１０３、ならびに恐らく図には占めされない他のシステムコンポーネントは、それぞれシステムバス１０４に接続される。複数のＩ／Ｏデバイス１０７もまた、システムバス１０４に接続される。各Ｉ／Ｏデバイス１０７もまた、選択信号１１５によってプロセッサ１０１によって選択的に制御されるプロセッサ制御マルチプレクサ１０６の入力に接続される。ポーリング方法の典型的な用途では、マルチプレクサ１０６は、各Ｉ／Ｏデバイス１０７をクエリ（すなわちポーリング）することに対して責任がある。次いで、Ｉ／Ｏデバイス１０７がプロセッサ１０１の注意を必要とするかどうかを決定する。ポーリングされた各Ｉ／Ｏデバイスは、マルチプレクサ出力信号１２０の状態によって示されるようにプロセッサ１０１の注意を必要とする場合、プロセッサ１０１は、現在の動作を中断し、必要に応じてＩ／Ｏデバイス１０７にサービスする時間を充てることによって応答する。ポーリングされたＩ／Ｏデバイス１０７が現在サービスを必要としない場合、全てのＩ／Ｏデバイス１０７がクエリされるまで、マルチプレクサ１０６は、次のＩ／Ｏデバイス１０７を順次ポーリングする。ポーリングサイクルがサービスの必要性に応じてＩ／Ｏデバイス１０７と遭遇する度に、プログラム実行を一時的に中断しつつ、プロセッサ１０１はポーリングサイクルを介して連続的にループしている。
【０００５】
図２は、Ｉ／Ｏサービスリクエストを処理する割込み制御方法を機能的に示すブロック図である。プロセッサ２０１、ＲＡＭモジュール２０２、およびＲＯＭモジュール２０３、ならびに恐らく図には占めされない他のシステムコンポーネントは、それぞれシステムバス２０４に接続される。複数のＩ／Ｏデバイス２０７もまた、システムバス２０４に接続される。所定の用途における割込み制御方法は、一般的に割込みリクエスト（「ＩＲＱ」）ラインをプログラム可能な割込みコントローラ（ＰＩＣ）２０６として従来から公知の制御ブロック集めることによってサービスリクエストを容易にする。ＰＩＣ２０６は、全体の割込み処理の管理に対して責任がある。実用的な問題として、Ｉ／Ｏデバイス２０７は、プロセッサ２０１に直接割込み信号をアサートしない。その代わりに、ＰＩＣ２０６は、制御を集中し、現在の割込みリクエストが現在のプロセッサのタスクよりもより重要度が高いかどうかを決定する。この決定は、優先順位付け（ｐｒｉｏｒｉｔｉｚａｔｉｏｎ）と呼ばれ、通常ＰＩＣ内部の優先順位付け器（ｐｒｉｏｒｉｔｉｚｅｒ）によって実行される。
【０００６】
優先順位付けは、１つ以上のＩ／Ｏデバイスが同時または順次のいずれかでサービスをリクエストする場合、プロセッサによる割込み処理の順序を階層的に配列する手段である。システムはハードウエアまたはソフトウエアのいずれかによって優先順位を確立する。いくつかのコンピュータシステムは、バックプレーンに沿ってＩ／Ｏデバイスの物理的な配置によってハードウエアの優先順位を確立する。従って、バックプレーン上のデバイスの物理的な配置は、階層のレベルに対応する。例えば、より高い優先順位のＩ／Ｏデバイスは、プロセッサの物理的に近くに設けられる一方で、より低い優先順位のＩ／Ｏデバイスは、デバイスチェーンの末端付近に（さらにはバックプレーン外部）配置される。
【０００７】
優先順位付けに加えて、ＰＩＣはプロセッサへの割込み信号をマスクする。マスキングは、割込みがサービス可能である動的な制御のために使用される。割込みが望ましくないこれらの用途について、サービスリクエストが一時的にディセーブルされる。しかし、いくつかの割込みはマスキング可能ではない（電源故障等）。いくつかのシステムでは、割込みがディセーブルされる間に発行されるサービスリクエストは、割込みが再度イネーブルされた後、処理のために保存され得る。
【０００８】
図２に示されるような従来のシステムの例を再度参照すると、マスキングおよび優先順位の確立の後、ＰＩＣ２０６は割込み信号をプロセッサのＩＲＱ入力にアサートする。プロセッサ２０１は、メモリ２０２、２０３に予めロードされる割込みサービスルーチン（ＩＳＲ）（時には割込みハンドラープログラムと呼ばれる）を実行することによってリクエストに応答する。プロセッサは特定のＩ／Ｏデバイス２０７に関連付けられたＩＳＲを終了することによって割込みリクエストを「満たす」。
【０００９】
割込み制御方法の共通のインプリメンテーションは、「ベクトル化」割込みを含み、これは、プロセッサが、どのデバイスが割込みリクエストを発行したかを知ることを可能にする。この点において、ベクトルは、対応するＩＳＲへのアドレス、またはポインタである。プロセッサがＰＩＣからＩＲＱを受信する場合、プロセッサは、特定のデバイスのためのＩＳＲに関連付けられた分枝命令に対応するベクトルにためのメモリを検索する。
【００１０】
ポーリングおよび割込み制御技術に関して、プロセッサはＩＳＲを実行するために現在のプログラムの実行を一時的に中断しなければならない。プロセッサは第１に現在のプログラム命令を中断し、次いで、レジスタバンク（プログラムカウンタ（ＰＣ）を含む）の現在の状態をプロセス制御ブロックとして公知のメモリのスタック位置に保存する。ＩＳＲの終了時には、レジスタおよびＰＣ値は、プロセス制御ブロックから復元され、プログラム実行は、割込みの前にＰＣによって本来保持されるメモリアドレスに配置される命令を継続する。このように、プロセッサはいくつかのＩ／Ｏデバイス間にその時間を割り当てるための上述の必要性を満たすことができる。
【００１１】
ポーリングおよび割込み制御技術の両方は、割込みソースを検索するようにプロセッサを利用する。各方法は、その方法自身の関係において不十分であり、無駄である。ポーリング方法は、ポーリングサイクルによってループしているプロセッサ時間を浪費することによってシステムスループットの潜在的に著しい損害を引き起こす。典型的には、割込み制御方法は、典型的には、割込みデータ（例えば、フラグまたはデータレジスタ）をＰＩＣから読み出し、提供されたデータを構文解析することをしばしば含む割込みソースを識別するための不十分なソフトウエア検索プロセスを使用する。両方の方法では、ＰＩＣによって提供されたデータを構文解析するオーバーヘッドは、より多くの割込みソースがシステムに与えられるにつれて増加する。一旦ソースが決定されると、プロセッサは最終的にＩＳＲに分枝し、ＩＳＲが実行される。
【００１２】
割込み制御方法によって使用されたソフトウエア検索ルーチンは、割込みのアサートと適切なＩＳＲの実行の開始との間に不必要な遅延を導入する。この遅延は、数１０個または数百個の割込みを有するシステムに特に明らかになり得る。いくつかのリアルタイムシステムにおいて（特に無線電話において見られたデジタル信号プロセッサ）、この遅延は、効率的な信号処理に対する実質的な負担を表す。従って、複数のＩ／Ｏデバイスまたはプロセッサベースのシステムにおいてサービスを要求する他のコンポーネントのためのより高速で、より効率的な技術を提供することは有利である。
【００１３】
（発明の要旨）
一局面において、本発明は、プロセッサベースのシステムにおいて割込みを処理するためのシステムおよび方法に関する。特定の実施形態では、プロセッサ分枝命令は、ベクトルとしてベクトル格納装置に格納される。各ベクトルはメモリ内の割込みサービスルーチンに対応する。イベントが発生する場合、予め格納されたベクトル割り込み処理システムは、プロセッサがＩＲＱ入力に応答して、命令フェッチサイクルを受けるたびに、メモリからの命令ではなく、ベクトル格納装置からのベクトルを用いて実行ユニットをロードする。次いで、プロセッサは、ベクトルによって特定された位置に速やかに効率的に分枝し、対応する割込みサービスルーチンを実行する。
【００１４】
直接ベクトル送達はソフトウエア集中検索ルーチンを避けることによってシステム低減割り込み処理遅延を与える。多数の割込みを含むプロセッサベースのシステムでは、予め格納されたベクトル割込み処理システムによって実現されたオーバーヘッド保存が重要であり得る。本発明の観点では、割込みベクトルは、完全な分枝命令を含み、この命令は分枝オペレーションコードおよびターゲットアドレスを含む。
【００１５】
（好適な実施形態の詳細な説明）
図３は、予め処理されたベクトル割り込み処理システムの一実施形態のブロック図である。図３に示されるように、複数のＩ／Ｏデバイス３０１は、複数の割込みリクエストライン３０２を介して割込み制御デバイス３０３に接続される。割り込み制御デバイス３０３は、プロセッサ３０４の割込みリクエスト（ＩＲＱ）入力３１０に接続されたマスター入力リクエスト信号３３０を出力する。プログラム格納装置３０５および割込みベクトル格納装置３０８（および図３に示されていない潜在的な他のコンポーネント）と共にプロセッサ３０４は、システムバス３０６に接続される。制御信号３１１は、プロセッサ３０４からアドレスデコーダおよびセレクタ３０７に出力され、プログラム格納装置３０５にチップ選択（ＣＳ）制御信号３３５を介して接続され、割込みベクトル格納装置３０８にＣＳ＿Ｉｒｑ制御信号３３６を介して接続される。アドレスデコーダおよびセレクタ３０７はまた、信号パス３４０によってシステムバス３０６に接続される。割込み制御デバイス３０３はまた、割込み識別信号３０９を介して割込みベクトル格納装置３０８に接続される。
【００１６】
動作の際、サービスがＩ／Ｏデバイス３０１の内の１つによってリクエストされる場合、割込み制御デバイスは、（１）割込み識別子３０９を割込みベクトル格納装置３０８に発行することによって、および（２）マスター割込みリクエスト信号３３０をプロセッサ３０４のＩＲＱ入力３１０にアサートすることによって、応答する。マスターＩＲＱ信号３３０に応答して、プロセッサ３０４は、特定のバスサイクルタイプに対応する制御信号３１１（本明細書中では、またＣ＿ｔｙｐｅまたはサイクルタイプ信号と呼ぶ）を発行する。サイクルタイプシグナリングの特定のインプリメンテーションは、プロセッサに依存する。例えば、一実施形態では、サイクルタイプ信号は、特定のプロセッサによって支援された種々のタイプの動作（すなわちデータ書き込み、データ読み出し、命令フェッチ等）に対応するように解釈されるコードである。アドレスデコーダおよびセレクタ３０７は、プロセッサのサイクルタイプ信号を傍受することに対して責任がある。（１）アドレスデコーダおよびセレクタ３０７が傍受するサイクルタイプ信号が、アドレスデコーダおよびセレクタ３０７によって命令フェッチ動作を行う権限が与えられる場合、および（２）アドレスバス上のアドレスが割込みベクトル記憶媒体に関連付けられたプログラム格納装置における有効なメモリマッピング位置に復元する場合、アドレスデコーダおよびセレクタ３０７は、制御信号３３６を割込みベクトル格納装置３０８にアサートする。アドレスデコーダおよびセレクタ３０７（いくつかの例では、反転および非反転出力を有するフリップフロップと同様に簡単に埋め込まれ得る）は、プログラム格納装置３０５に対してチップ選択信号３３５をデアサートすることによってこれを行い、その代わりとして、割込みチップリクエストチップ選択（ＣＳ＿Ｉｒｑ）信号３３６を割込みベクトル格納装置３０８にアサートする。このＣＳ＿Ｉｒｑ信号３３６およびチップ選択信号３３５は、相互に排他的である。次いで、割込みベクトル格納装置３０８は、予め格納されたベクトル（分枝命令オペレーション−コードおよびアドレスの形態で）をプロセッサ実行ユニット３１５に直接送達する。プロセッサは速やかに分枝命令を実行し、従来行われていたようにプロセッサ３０４がプログラム格納装置３０５からの分枝命令をフェッチすることを可能にするのではなく、アドレスをプログラムカウンタに挿入する。図中のシステムバス３０６によって互いに接続されることにより、プロセッサ３０４、プログラム格納装置３０５、アドレスデコーダおよびセレクタ３０７および割込みベクトル格納装置３０８のブロックは、アドレシングおよびこれらのブロック間のデータ転送の実行を可能にする。しかし、アドレスデコーダおよびセレクタ３０７は、システムバス３０６のアドレス部分への読み出しのみのアクセスが与えられるが、割込みベクトル格納装置３０８が、バス３０６のデータ部分への書き込みアクセスのみ可能にされる。
【００１７】
プロセッサの実行ユニットしばしば、命令フェッチャ（ｆｅｔｃｈｅｒ），命令デコーダ、演算／論理ユニット（ＡＬＵ）、プログラムカウンタ、および潜在的にプロセッサの複雑さに依存している他のコンポーネントを含む。予め格納されたベクトル割込み処理システムの実施形態では、分枝命令オペレーション−コードおよびアドレスが割込みベクトル格納装置３０８によってプロセッサの実行ユニット３１５に送達される。本実施形態では、実行ユニットは、分枝命令オペレーション−コードを復号化すること、および分枝命令アドレスを実行ユニットのプログラムカウンタに送達することに対して責任がある。次いで次の命令は、分枝アドレス位置からフェッチされる。しかし、予め格納された割込みベクトル処理システムの別の実施形態は、割込みベクトル格納装置３０８から直接、実行ユニット３１５のプログラムカウンタへの分枝命令のアドレスコンポーネントの送達を企図し、実行ユニットの命令フェッチおよびデコード論理をバイパスする。本実施形態は有利である。なぜなら、命令実行遅延が最小化されるが、本実施形態のインプリメンテーションは、プロセッサの内部作業へのプログラマによるアクセスを要求するからである。従って、本実施形態では、予め格納されたベクトル割込み処理システムの特定のアプリケーションのためにインプリメントするための選択は、プロセッサに依存する。
【００１８】
予め格納されたベクトル割込み処理システム３００はまた、割込みリクエストライン３０２をマスキングするための機構を含み得る。プロセッサ制御下のアプリケーションは、アプリケーションが割込まれる場合に負に影響を与える場合、マスキングは、１つ以上の割込みリクエストライン３０２を一時的にディセーブルするために使用される。割込み制御デバイス３０３内の割込みマスクレジスタ（図示せず）を含むことは、割込みマスキングを有効にする１つの方法を表す。このような場合、割込み制御デバイス３０３は、システムバス３０６に接続され、プロセッサ３０４が割込みマスクレジスタのコンテンツを調整することを可能にする。
【００１９】
図３のシステムの１つ以上の概念を組み込む予め格納されたベクトル割込み処理システムの別の実施形態は、割込み制御要素内に優先順位付け器を含む。優先順位付け器によって、割込み制御デバイスに入力する複数の割込みリクエスト信号が処理の前に優先順位付けされ得る。さらに、予め格納されたベクトル割込み処理システムがプロセッサの通常の命令フェッチサイクルタイプの信号を傍受する場合、どの割込みベクトルが出力するかを識別するために、優先順位付け器は、割込み識別子信号を割込みベクトル格納装置にアサートするように構成され得る。優先順位付け器は、２つの状態で特に利用可能であり得る。すなわち、（１）１より多いＩ／Ｏデバイスが同時にサービスをリクエストする場合、または（２）Ｉ／Ｏデバイスが、現在処理されているより優先順位の低い割込みリクエストの緊急度よりも緊急の（より高い優先順位）リクエストを発行する場合である。第２の状況では、より低い優先順位の割込みリクエストがより高い優先順位の割込みリクエスト内に入れ子にされることが示される。入れ子にされた割込みの処理はプロセッサに依存する。従って、優先順位付け器が種々の優先順位の複数の同時（すなわち入れ子にされた）割込みを発行する際の困難を有し得ない一方で、各プロセッサは異なる態様でこれらの入れ子にされた割込みを受信かつ処理するように設計または構成される。あるいは、一旦初期の割込みリクエストが開始すると、いくつかのプロセッサが優先順位付け器からの以後の割込みリクエスト信号をマスキングアウト（ｍａｓｋｉｎｇ  ｏｕｔ）することによって、入れ子または優先順位付けられた割込み処理を互いに無効にし得る。
【００２０】
予め格納されたベクトル割込み処理システムは、プロセッサ依存性である。さらに、多くのマイクロプロセッサはキャッシュＲＡＭ等の素子を含み、これにより、予め格納されたベクトル割込み処理システム動作の変化を必要とし得る。予め格納されたベクトル割込み処理回路は、割込みベクトルが命令キャッシュに格納されないように配置されるべきである。例えば、図３のプロセッサ３０４がキャッシュ素子を含む場合、キャッシュのコンテンツがレジスタバンクおよびプログラムカウンタに保存することに加えて、プロセッサ３０４によって保存される必要があり得る。さらに、プロセッサ３０４は、プログラム格納装置３０５からの命令をプリフェッチするパイプライン技術を使用し得る。パイプラインまたはバーストフィル（ｂｕｒｓｔ  ｆｉｌｌ）技術がプロセッサによって使用される場合、割込みベクトル格納装置は、プロセッサの特定の要求を満たす十分な命令を支持すべきである。両方の場合では、予め格納されたベクトル割込み処理システムは、プロセッサに依存し、キャッシングおよび命令プリフェッチ能力を管理し、図３のわずかな改変を潜在的に要求する。
【００２１】
図４は、割込みコントローラ４５０の一部として優先順位付け器４０３を用いる多チャンネルの予め格納されたベクトル割込み処理システム４００のブロック図である。図４では、システムバスの分離データバス４０８およびアドレスバス４０７部分が示される。プロセッサ４０９およびプログラム格納装置４２９は、データバス４０８およびアドレスバス４０７の両方に接続される。割込みベクトル格納装置４０６は、データバス４０８に接続される。割込みベクトル格納装置４０６に関連付けられたメモリマッピング位置にアドレスバスのコンテンツを分解する際に使用するためのアドレスバスから高次（ｐ−ｎ）ビットを受け取るために、セレクタ４７０の一部であるアドレスデコーダ４０５がアドレスバスに接続される。このアドレスバス４０７は、バスチャンネル４２７を介してマルチプレクサ４０４にさらに接続される。マルチプレクサ４０４は、以下にさらに説明されるように、通常割込み処理動作（割込みモード）とベクトル格納初期化（初期化モード）との間でシステム４００をスイッチングする場合に支援する。セレクタ４７０は、割込みベクトル格納装置４０６に接続され、割込みベクトル格納装置４０６の読み出し／書き込み（Ｒ／Ｗ）入力にモード制御信号４２８を発行する。このセレクタは、制御信号４５１によって割込みベクトル格納装置４０６のＣＳ＿ＶＳ入力にさらに接続され、制御信号４４０によってプログラム格納装置４２９のＣＳ＿ＰＳ入力に接続される。複数の２ｎ個までのＩ／Ｏデバイス４０１は、複数の２ｎ個までの割込みリクエストライン４０２を介して優先順位付け器４０３に接続される。優先順位付け器４０３は、マルチプレクサ４０４への割込みソースを明確に識別するｎビットのマルチビット優先順位付け割込みソース識別子信号４１０を出力する。サービス可能Ｉ／Ｏデバイス４０１の数と割込みソース識別子信号４１０の対応する好適なビット幅との間の関係は、ｎ＝ｌｏｇ２ｍによって与えられ、ｍはサービス可能Ｉ／Ｏデバイスの最大数を表し、ｎは、割込みソース識別子信号４１０の大きさを切り上げたビットで表す。例えば、３２個までのＩ／Ｏデバイス４０１に対して、ｎは５であり、１６個までのＩ／Ｏデバイス４０１に対して、ｎは４に等しい。
【００２２】
セレクタのアドレスデコードブロック４０５は、好ましくは、システム４００において存在し得るかまたはそのシステム外部に存在し得る任意の他のアドレスデコーダの機能性から独立して存在する。予め格納されたベクトル割込み処理システムの外部にある改変されたチップ選択論理はまた、システムが初期化モードで動作する場合、好ましくは信号に供給される。例えば、プロセッサの現在の状態を規定するプロセッサ４０９内部のレジスタのセットは、この目的のためにセレクタ４７０に制御信号を供給し得る。これは、単に予め格納されたベクトル割込み処理システム４００が初期化の開始の通知を提供することに依存し得る状態レジスタまたはフラグであり得る。同様な外部論理は、割込みベクトルがそのデバイスにロードされると同時に、他のデバイスがデータバス４０８に対して選択されないことを確実にすることに対して責任がある。
【００２３】
ベクトル格納初期化（初期化モード）の間、割込みベクトル格納装置４０６のＣＳ＿ＶＳ入力は、制御信号４５１によって活性化され、割込みベクトル格納装置にデータバスの排他的な制御を与える。このセレクタはまた、初期化の間にプログラム格納装置４２９のＣＳ＿ＰＳ入力へのＣＳ＿Ｃｏｄｅ制御信号が選択されないことを確実にしなければならない。初期化モード動作の一部として、アドレスデコーダおよびセレクタ４７０はまた、（１）書き込み（Ｗ）モードで割込みベクトル格納装置４０６を配置するように制御信号４２８を割込みベクトル格納装置４０６に発行する、および（２）マルチプレクサ４０４を初期化モードにするようにマルチプレクサ４０４にモード制御信号４２８を発行する。アドレスバスハイビット（ｐ−ｎ）を割込みベクトル格納装置のメモリマッピング位置に首尾よく分解することによって、マルチプレクサ４０４は、ロウビット（ｎ）でアドレスバス４０７を通って、バスチャンネル４２７を介して割込みベクトル格納装置４０６に簡単に伝達させる。
【００２４】
一方で初期化モードでは、アドレスバス４０７は、特定の割込みサービスルーチンのための特定の割込みベクトルに（分枝命令アドレスの形態で）対応するメモリアドレスを受信する。あるいは、一方で初期化モードでは、割込みベクトル格納装置４０６への書き込みを待って、データバス４０８は特定の割込みベクトル（すなわち、分枝命令オペレーション−コードおよびアドレス）を受信する。システム４００は、割込みベクトルおよびそれに関連付けられたアドレスの全てにわたってサイクルして、割込みベクトル格納装置４０８にロードする。ロードはプロセッサ４０９または別のコントローラ（例えばＤＭＡコントローラ）の制御の下で実行され得る。初期化は割込みベクトル格納装置４０８が各割込みルーチン分枝命令のコピーを保持する場合に終了する。
【００２５】
予め格納されたベクトル割込み処理システムのコンポーネントとしてマルチプレクサ４０４の包含は、割込みベクトル格納装置４０６の初期化の他の方法が存在しない場合に限り必要である。予め格納されたベクトル割込み処理システムの一実施形態は、ＲＯＭ（図３または図４に示されない）割込みベクトル格納装置４０６のインプリメンテーションを企図する。この場合、マルチプレクサ４０４は必要とされない。所定のチップ選択論理およびアドレス復号化機能性は、それに従って、マルチプレクサの欠如に適応するように改変される必要がある。
【００２６】
予め格納されたベクトル割込み処理システム４００が割込みベクトル格納装置４０６の初期化を終了する場合、システム４００は、動作モード（割込みモード）にスイッチングする。一方で割込みモードでは、セレクタ４７０は、（１）マルチプレクサ４０４にモード制御信号４２８を発行して、マルチプレクサ４０４を割込みモードにし（従って、セレクタは、アドレスバス４０７ではなく、優先順位付け器４０３から割込みソース識別子４１０を介して伝達するように）、（２）割込みベクトル格納装置４０６にモード制御信号４２８を発行して、割込みベクトル格納装置４０６を読み出し（Ｒ）モードにする。いくつかの理由によって割込みベクトルがプログラムの実行の間に改変されない場合、割込みモードの間、通常情報は、書き込まれるのではなく、割込みベクトル格納装置４０６から読み出されるだけである。
【００２７】
初期化および割込みモードの両方では、セレクタ４７０は、２つのデバイスの一方または他方によってデータバス４０８への排他的なアクセスを確実にすることに対して責任がある（割込みベクトル格納装置４０６とプログラム格納装置４２９デバイスのみとの間にある場合）。一実施形態では、セレクタは、ＡＮＤ、ＯＲ、またはＮＯＴゲートを使用して、ＣＳ＿ＰＳ信号およびＣＳ＿ＶＳ信号を割込みベクトル格納装置４０６またはプログラム格納装置４２９に送達するように単純なデジタル論理を使用する。従って、割込みベクトル格納装置へのＣＳ＿ＶＳ入力が制御信号４５１を介してアサートされる場合、セレクタは、制御信号４４０を介したプログラム格納装置４２９へのＣＳ＿ＰＳ入力がデアサートされることを確実にする。同様に、プログラム格納装置４２９へのＣＳ＿ＰＳ入力が制御信号４４０を介してアサートされる場合、セレクタは、割込みベクトル格納装置４０６へのＣＳ＿ＶＳ入力がデアサートされることを確実にする。この態様で、割込みベクトル格納装置およびプログラム格納装置はデータバスを同時に制御しない。
【００２８】
分離Ｒ／Ｗ制御信号４２８および割込みベクトル格納装置４０６へのＣＳ＿ＶＳ制御信号４５１の入力は、予め格納されたベクトル割込み処理システムのこの実施形態において両方とも必要である。割込みベクトル格納装置４０６へのＲ／Ｗ制御信号は、割込みベクトル格納装置４０６が初期化モードにわたって書き込み（Ｗ）および割込みモードにわたって読み出し（Ｒ）をアサートしたままであることを確実にする。割込みベクトル格納装置４０６への分離ＣＳ＿ＶＳ入力は、割込みベクトル格納装置４０６が、割込みモードおよび初期化モードの両方においてデータバス４０８の排他的制御を維持する。
【００２９】
割込みモードでは、任意の割込みがない場合、プロセッサ４０９はプログラム格納装置４２９から読み出し、命令を実行する。この時点で、セレクタ４７０に接続されるプロセッサのサイクルタイプ出力信号４３５は、プロセッサ４０９が非割込み条件において動作することを示す状態で維持される。割込みが存在しない場合、セレクタ４７０が、プログラム格納装置４２９にアサートされたチップ選択信号４４０を維持し、割込みベクトル格納装置４０６にデアサートされた割込みリクエストチップ選択信号４５１を維持する。
【００３０】
優先順位付け器４０３は時折、複数の割り込みリクエストライン４０２を介してＩ／Ｏデバイス４０１から割り込みリクエストを受け取る。割り込みモード中に割り込みが起こると、マスタ割り込みリクエスト信号４３６が優先順位付け器４０３からプロセッサ４０９にアサートされ、プロセッサ４０９はこれに応答して現在の命令を終えてサイクルタイプ信号４３５およびＲ／Ｗ信号４４４をアサートする。サイクルタイプ信号４３５およびＲ／Ｗ信号４４４は両方ともセレクタ４７０に接続されている。セレクタ４７０は上記（図３に示す実施形態）同様、プロセッサの命令フェッチサイクルタイプ信号ならびにプロセッサのＲ／Ｗ出力信号およびアドレスを妨害し、プログラム記憶装置４２９を非選択にし割り込みベクトル記憶装置４０６を選択することにより、割り込みベクトル（ブランチ命令オペコードおよびアドレス）が直接プロセッサ４０９にロードされるようにする。優先順位付け器４０３は、マスタ割り込みリクエスト信号４３６を生成することに加えて、起こった割り込み（あるいは複数の割り込みの場合は、優先順位の最も高い割り込み）に基づき割り込み識別信号４１０を生成することにより適切なベクトルを識別する。割り込み識別信号４１０はマルチプレクサ４０４を通過して割り込みベクトル記憶装置４０６に達し、割り込みベクトル記憶装置４０６からの対応する割り込みベクトルをデータバス４０８に強制的に送る。より特定すると、セレクタ４７０は、割り込みベクトル記憶装置４０６を選択して、その内容をデータバス４０８上で使用可能にする。プロセッサ４０９がサイクルタイプ信号４３５をアサートすると、次の割り込みベクトル（ブランチ命令オペコードおよびアドレス）が予測され、そのためデータバス４０８からの割り込みベクトルがプロセッサ４０９の実行ユニット４５２に直接ロードされる。
【００３１】
図３および図４の両方のシステムの特徴は、割り込み識別信号が実質的に、割り込み源の多ビット符号化識別を提供し、したがって割り込みベクトルの多ビット符号化識別を提供することである。割り込み識別信号は様々な実施形態において、直接割り込みベクトル記憶装置３０８または４０６に、対応する割り込みベクトルが見つけられるべきアドレスにおいて付与される。割り込み識別子と割り込みベクトル記憶装置内の割り込みベクトルの位置との間の直接的対応は、割り込みに応答する際に速度および効率の点で利点がある。
【００３２】
図３を参照して述べたシステム３００同様、図４のシステム４００も様々な割り込み源をマスクする回路を含み得る。たとえば、割り込みマスクレジスタは、特定の割り込みが通過し得るか否かを示す個々のマスクビットを保持するために用いられ得る。各マスクビットは、マスクビットの状態に依存して対応する割り込み信号が通過することを可能にするゲート（たとえば、ＡＮＤゲートまたはＮＡＮＤゲート）を制御し得る。マスキングは、ネスティングされてもよいしされなくてもよい。ネスティングされた場合、高層マスクビットが各々、低層マスクビットの指定されたグループを制御し得る。割り込みは、割り込みに対して特定の低層マスクビットおよび割り込みの指定されたグループ用の高層マスクビットの両方が適切に設定された場合にのみ、通過する。
【００３３】
図５は、予め記憶されたベクトル割り込み処理システム、たとえば、図３または図４に示すシステムなどを組み込んだプロセッサベースのシステムが行う工程のフロー図を示す。第１の工程５０５では、アプリケーション用のプログラムコードがプログラム記憶装置（メモリ）にロードされる。次の工程５１０では、予め記憶されたベクトル割り込み処理システムが、一例として図４に示す実施形態で述べた初期化技術を用いて初期化される。工程５１０は、割り込みベクトル記憶装置がＲＯＭで実行された場合に随意である工程である。工程５１５において、プログラム実行が開始される。プログラム実行を図５に示す。一連のプログラム命令ブロックを「プログラム命令１」５２０、「プログラム命令２」５２５〜「プログラム命令Ｎ」５８５と示す。通常のプログラム実行中は、プロセッサの命令サイクルは、予め記憶されたベクトル割り込み処理システムが割り込みコントローラ５３０からのマスクされていないサービスリクエストを受け取ったときに割り込み込まれる。
【００３４】
工程５３５において、割り込みコントローラは、プロセッサ５４０への割り込みリクエスト信号（ＩＲＱ）をアサートする前に割り込みの優先順位を付ける。割り込みをまず処理することは、レジスタのスタックダンプおよびスタックへのプログラムカウンタを必要とし得る。割り込みコントローラは、割り込みベクトル記憶装置を選択しプログラム格納装置を非選択にすることにより、工程５５０でプロセッサの命令フェッチバスサイクル動作を妨害する。工程５５５において、割り込みコントローラの識別子信号に対応するブランチ命令オペコードおよびアドレス（割り込みベクトル）は、プロセッサの実行ユニット５６０まで直接移動する。割り込みベクトル５６５の実行後、プロセッサによって実行される次の命令が、リクエストされた割り込みサービスルーチン５７０の第１の命令となる。工程５７０の割り込みサービスルーチンが完了すると、ＰＣおよびレジスタの保存されたコンテンツがスタックから取り出され、プロセッサ命令サイクルが割り込まれた点でプログラム実行が再開される（５８０）。
【００３５】
本願発明の各実施形態において、割り込みソースは、ハードディスクドライブなどのデータ格納デバイス、ビデオディスプレイモニタなどのデータ出力デバイス、タイマーなどの埋め込みハードウェアデバイス、またはキーパッドもしくはポインティングデバイスなどのデータ入力デバイスのいずれでもあり得る。これらのカテゴリのＩ／Ｏデバイスの各々は、前格納ベクトル割り込みハンドリングシステムによって得られる利点を享受し得る。本願発明およびその実施形態は、割り込みソースの性質および数とは独立に機能する。
【００３６】
本明細書に記載の前格納ベクトル割り込みハンドリングシステムの実施形態はすべて、サイクルタイプ（Ｃ＿ｔｙｐｅ）信号を使用してプロセッサの現在のバスサイクルを認定するが、そのような信号の使用は本発明の必須要件ではない。サイクルタイプ信号は一般にプロセッサ上に見られ得、かつバスサイクル復号を容易にし得る。当業者は、図３および４に示すアドレスデコーダおよびセレクタがサイクルタイプ信号を生成しないプロセッサを使用するためには変更が必要であり得ることを理解する。これらの変更は、プロセッサによって異なる。
【００３７】
さらに、当業者は、プロセッサに基づくシステムが十分に広く、コンピュータシステム、携帯電話などの無線通信デバイス、マイクロコントローラ、デジタル信号処理システム、または中央プロセッサを含む任意の割り込み駆動システムを含むことを理解する。本明細書に記載される種々の実施形態によるプロセッサは、例えば、汎用プロセッサ、専用アプリケーション用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、または命令を処理するために使用される任意の他のタイプのプロセッサであり得る。
【００３８】
本明細書に記載されるような種々の実施形態は、以下の理由により従来の割り込み方法よりも高速であると期待される。第一に、前格納ベクトル割り込みハンドリングシステムは従来の割り込みハンドリング方法よりも高速である。なぜなら、システムは、割り込みサービスルーチンをメモリに配置するために使用される従来の方法では時間のかかる検索によって遅延されるからである。第二に、割り込み待ち時間（ｌａｔｅｎｃｙ）が小さくあり得る。なぜなら、前格納ベクトル割り込みハンドリングシステムはハードウェアで完全に実施されるが、割り込みサービスルーチンを検索する従来の方法は一般にソフトウェアに基づくからである。第三に、プロセッサ時間は割り込みサービスルーチンを検索する際に無駄にされない。なぜなら、前格納ベクトル割り込みハンドリングシステムはベクトル（分岐命令オペコードおよびアドレス）を割り込みベクトル格納から直接にプロセッサの実行部分に転送する。その結果、プロセッサが実行するまさに次の命令は、関連割り込みサービスルーチンの第１の命令である。
【００３９】
前格納ベクトル割り込みハンドリングシステムは、プロセッサの独立、スケーラビリティ、およびネスティングを含むさらなる利点を提供する。前格納ベクトル割り込みハンドリングシステムは特定のプロセッサ命令セットとは独立に動作するので、システムは多くの異なるプロセッサを用いて使用され得る。さらに、システムは任意の数の割り込みリクエストソースに対してスケーラブルである。例えば、図４のシステムなどの優先順位付け器を組み込む前格納ベクトル割り込みハンドリングシステム設計において、割り込みネスティングは適切に優先順位付け器を構成することによって可能である。
【００４０】
種々のコンポーネントが互いに接続されるように記載される種々の実施形態が本明細書中に記載されたが、用語「接続される」は直接または間接に接続されることを意味するように最も広い意味で使用される。例えば、当業者は、本明細書中に記載される種々のシステム、プロセスおよび装置の一般的な全体機能を変更することなく、種々の信号がマルチプレクサ、バッファまたは他の中間コンポーネントを介してルーティングされ得ることを理解する。したがって、他の要素またはコンポーネントを本明細書に記載の割り込みハンドリングシステムおよびプロセスの種々の実施例に付与することも本発明の範囲内に完全に含まれることを意図する。
【００４１】
本発明の好適な実施形態が本明細書中に記載されたが、本発明の概念および範囲内にある多くの変形例が可能である。そのような変形例は本明細書および図面を読んだ当業者にとって明らかである。したがって、本発明は特許請求の範囲に限定される。
【図面の簡単な説明】
【図１】
図１は、割込みを処理するポーリング方法を用いるプロセッサベースのシステムを示すブロック図である。
【図２】
図２は、割込みを処理する割込み方法を用いるプロセッサベースのシステムを示すブロック図である。
【図３】
図３は、本明細書中で開示されたような一実施形態によるセレクタを用いる予め格納されたベクトル処理システムのブロック図である。
【図４】
図４は、本明細書中で開示されたような別の実施形態による優先順位付け器を用いる予め格納されたベクトル割込み処理システムのブロック図である。
【図５】
図５は、本明細書中で開示されたような一実施形態による割込み処理のための方法のステップを示すフローチャートである。
【図１】
2004516548.tif 000003
【図２】
2004516548.tif 000004
【図３】
2004516548.tif 000005
【図４】
2004516548.tif 000006
【図５】
2004516548.tif 000007
【国際公開パンフレット】
2004516548.tif 000008
2004516548.tif 000009
2004516548.tif 000010
2004516548.tif 000011
2004516548.tif 000012
2004516548.tif 000013
2004516548.tif 000014
2004516548.tif 000015
2004516548.tif 000016
2004516548.tif 000017
2004516548.tif 000018
2004516548.tif 000019
2004516548.tif 000020
2004516548.tif 000021
2004516548.tif 000022
2004516548.tif 000023
2004516548.tif 000024
2004516548.tif 000025
2004516548.tif 000026
2004516548.tif 000027
2004516548.tif 000028
2004516548.tif 000029
2004516548.tif 000030
2004516548.tif 000031
2004516548.tif 000032
2004516548.tif 000033
【国際調査報告】
2004516548.tif 000034