(57)【特許請求の範囲】
【請求項１】
処理装置によって命令を処理する方法であって：
前記処理装置によって、マルチサイクル命令の実行を開始する段階；
前記処理装置と接続されたステート制御ユニットによって、前記マルチサイクル命令の開始から、前記マルチサイクル命令のセットアップ時間が完了するまでの初期期間（２２２）の間、前記マルチサイクル命令の割り込みを許可しない段階；
前記ステート制御ユニットによって、前記マルチサイクル命令の実行中、前記初期期間（２２２）後に、閾値（４０８）を、前記マルチサイクル命令の完了前に残っているカウント数を示すカウント値（４０４）と比較する段階；および
前記処理装置によって、前記比較した結果に基づいて前記マルチサイクル命令の割り込みを許可する段階；
によって構成されることを特徴とする方法。
【請求項２】
装置であって：
割り込み制御モジュール（３０２）を含む処理ユニット（１２）であって、前記割り込み制御モジュールは、割り込み要求信号（３１０）を受信する第１入力を有し、かつマルチサイクル命令が、前記マルチサイクル命令の完了前に前記マルチサイクル命令の割り込みが許可されるかどうかを示すマルチサイクル命令割り込み信号（３２２）を受信する第２入力を有する、処理ユニット（１２）を備え、
前記処理ユニットは、
前記マルチサイクル命令の開始から前記マルチサイクル命令の割り込みが許可されることを示す前記マルチサイクル命令割り込み信号（３２２）を受信するまでの前記マルチサイクル命令のセットアップ時間に対応する初期期間（２２２）の間、前記第２入力で受信された、前記マルチサイクル命令の割り込みが許可されないことを示す前記マルチサイクル命令割り込み信号（３２２）に応答して、前記マルチサイクル命令の割り込みを実行しないことを特徴とする装置。
【請求項３】
コンピュータがデータを処理するためのマルチサイクル命令を含むプログラムを記憶したコンピュータ読み取り可能な記録媒体であって：
前記マルチサイクル命令は、
第１実行期間（２２２）の命令：
第２実行期間（２２４）の命令；および
第３実行期間の命令；
によって構成され、
前記第１実行期間の命令は、前記マルチサイクル命令の開始から前記マルチサイクル命令のセットアップ時間が完了するまでの初期期間（２２２）の間、割り込みを許可せず；
前記第２実行期間の命令は、前記マルチサイクル命令のセットアップ時間が完了してから、前記マルチサイクル命令の実行を完了する前に、割り込みを許可し；および
前記第３実行期間の命令は、割り込み前に前記マルチサイクル命令の実行を完了することを特徴とする、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般に、データ処理を実行する方法および装置に関し、さらに詳しくは、実行中に割り込みできるマルチサイクル命令を処理する方法および装置に関する。
【０００２】
【従来の技術】
割り込みは、データ処理システムにおいて一般に用いられる。例えば、割り込みは、データ処理システムがリアルタイム・イベントに高速に応答できるようにするため、多くのリアルタイム制御用途において特に重要である。データ処理システムが割り込みに応答するのに要する時間は、データ処理システムの割り込みレイテンシ(interrupt latency)である。短い割り込みレイテンシ時間では、割り込みに対して高速に応答できるが、データ処理システムのスループットを低減することがある。長い割り込みレイテンシ時間は、割り込みへの応答を遅くするが、データ処理システムのスループットを向上させることがある。ほとんどのデータ処理システムでは、データ処理システムの通常動作性能を低減せずに、割り込みレイテンシ時間をできるだけ短くすることが望ましい。
【０００３】
割り込みレイテンシは、プロセッサ・クロック境界(processor clock boundaries)のタイミングによって一般に影響され、ここで割り込みが一般にサンプリングされる。これらの境界は、一つの命令の完了時および次の命令の開始時に生じる。マルチサイクル命令は、データ処理システムにおけるレイテンシを増加するが、これは、命令完了が多くのサイクルを要し、そのため割り込みがサンプリングされる境界を延期するためである。このような命令の例には、乗算(multiply)，除算(divide)，多重メモリ・アイテムの移動(m ove multiple items)およびファジー論理命令(fuzzy logic instruction)がある。保留中の割り込み要求(pending interrupt request)に応答する前にこのような命令の実行を完了するのに要する時間は、データ処理システムの割り込みレイテンシを著しく長くすることがある。データ処理システムが割り込みに応答するのに要する最大時間、多くの場合、最長マルチサイクル命令の実行の時間、は、データ処理システムの「最大割り込みレイテンシ時間」を決定する。
【０００４】
ほとんどのデータ処理システムでは、データ処理システムが割り込みに応答するのに要する時間を最小限にすることが望ましい。例えば、自動車エンジンを制御するデータ処理システムは、自動車が横滑り(skid)に入ったことをアンチロック・ブレーキング・システムが検出したときに、アンチロック・ブレーキング・システムから割り込み要求を受信する。多くのリアルタイム制御用途では、最大割り込みレイテンシ時間の低減は望ましいだけでなく、特定の用途に対してどのデータ処理システムが選ばれるのかを決定することがある。上記の例では、エンジン制御システムがアンチロック・ブレーキング・システムからの割り込みに十分高速に応答できなければ、より短い割り込みレイテンシ時間を有する別のデータ処理システムが選択・利用されることが多い。
【０００５】
【発明が解決しようとする課題】
従って、データ処理システムの通常動作性能を大幅に低減せずに、最大割り込みレイテンシ時間を低減することは、データ処理システム分野において極めて望ましい。ただし、割り込みレイテンシを低減する多くの従来システムは、プロセッサ・スループットも低減する。割り込みレイテンシを低減する必要性は、データ処理システムのデータ・スループットを最大限にする必要性とバランスをとる必要がある。故に、プロセッサ・スループットを最小限に低減あるいは維持しながら、レイテンシを低減または最小限にするために命令を処理する改善された方法および装置が必要とされる。
【０００６】
【実施例】
以下の説明および添付の図面において、少なくとも一つの実施例について開示する。
【０００７】
以下では、本発明の少なくとも一つの実施例について詳細に説明するが、本発明自体の制限とみなすべきではない。むしろ、任意の数の変形例は、特許請求の範囲において定められる発明の範囲内であるものとする。
【０００８】
本明細書における教示に基づき、マルチサイクル命令は、割り込みレイテンシの低減を促進し、かつデータ処理スループットを促進するように、この命令が実行中に割り込み可能となるように処理される。例えば、長い命令の実行は、割り込み要求を処理するために、この長い命令の実行の特定の期間中に割り込むことができる。命令実行中に割り込み期間(interrupt intervals)を利用することは、このような割り込み可能動作中にスループットを最大限にしつつ、割り込みレイテンシを低減および／または最小限にする。
【０００９】
一実施例において、データ処理ユニットは、特定の動作について実行クロックの残りの数を計算（例えば，計数，読出しあるいはそれ以外で判定）する。残りのクロック数が所定の、あるいはプログラム可能な、ポスト閾値または期間よりも小さい場合、命令はほぼ完了であり、この特定の動作の割り込み認識は、次の命令境界まで延期される。命令は、割り込みを処理する前に完了することが許されるので、データはこの割り込みによって損失せず、また割り込みを処理した後に命令を再実行する必要はない。残りのクロック数がポスト閾値期間よりも大きい場合、命令はほとんど完了しておらず、命令の実行中に割り込みは認識される。ポスト閾値期間の前に命令は割り込み可能なので、割り込みレイテンシは、長い命令の長さではなく、ポスト閾値期間の長さに制限できる。従って、割り込みレイテンシおよびプロセッサ再実行オーバヘッドはともに、本明細書における教示に基づき最適化される。
【００１０】
図１は、中央処理装置（ＣＰＵ）回路１２，メモリ回路１４，タイマ回路１６，シリアル回路１８，他の回路２０およびシステム集積回路２２を含むデータ処理システム１０を示し、これらの回路すべてはバス２４によって互いに双方向結合される。図１に示すように、ＣＰＵ１２については、図３を参照してさらに説明する。ＣＰＵ１２は、一つまたはそれ以上の集積回路端子３０を介してデータ処理システム１０の外部に結合できる。メモリ１４は、一つまたはそれ以上の集積回路端子３２を介してデータ処理システム１０の外部に結合できる。タイマ１６は、一つまたはそれ以上の集積回路端子３４を介してデータ処理システム１０の外部に結合できる。シリアル回路１８は、一つまたはそれ以上の集積回路端子３６を介してデータ処理システム１０の外部に結合できる。システム集積回路２２は、バス２６を介してデータ処理システム１０の外部に双方向結合される。
【００１１】
図２は、データ処理システム１０の命令実行フロー２００を示す。命令実行フロー２００は、順次実効命令(sequentially executing instructions)Ａ，Ｂ，Ｃ，Ｄを含む。命令Ａ，Ｂは、シングル・サイクル命令である。命令Ｃは、２サイクルのマルチサイクル命令である。命令Ｄは、Ｎサイクルのマルチサイクル命令であり、例えば、Ｎ＞２またはＮ＞＞２である。例えば、命令Dは、実行するのに３８クロック以上も必要とする浮動小数点除算命令などの反復命令(iterative instruction)でもよい。他のマルチサイクル命令は、実行するのに１６以上のクロックを必要とすることが多い。
【００１２】
命令実行フロー２００は、割り込み認識ポイント２１１，２１２，２１３，２１４，２１５，２１６，２１７，２１８を含む、各割り込み認識ポイント２１０を含む。割り込み認識ポイント２１０は、データ処理システム１０が割り込みを認識・処理できる、命令Ａ〜Ｄの実行における各ポイントを表す。割り込みが受信されると、データ処理システム１０は、割り込みを認識・処理するために割り込み認識ポイントを待つ。割り込みが受信・認識されると、命令フロー２００における命令の実行は次の割り込み認識ポイントにて停止(halt)され、割り込み処理ルーチンが選択・実行される。そして、命令の実行は、最後に完全に実行された命令の後に再開される。
【００１３】
また、図２は実行期間(execution intervals)２２０を示す。実行期間２２０は、初期期間２２２，割り込み可能期間２２４およびポスト閾値期間２２６を含む。初期期間２２２は、命令Ｄまたは他の命令が割り込めないセットアップ期間である。命令Dは、割り込まれる前に、初期期間２２２を完了しなければならない。割り込み可能期間２２４は、命令Ｄが割り込み認識ポイント２１４，２１５，２１６，２１７に示されるように割り込みできる期間である。ポスト閾値期間２２６は、命令Ｄが割り込めない期間である。命令Ｄがポスト閾値期間２２６に入ると、命令Ｄは割り込まれる前に実行を完了しなければならない。
【００１４】
従って、マルチサイクル命令Ｄは、データ処理システム１０の割り込みレイテンシを低減するため、命令Ｄが実行している間、割り込み可能期間２２４中に割り込み可能となるが、マルチサイクル命令Ｄは、命令Ｄが完了近くであるポスト閾値期間２２６中には割り込み可能とならない。ポスト閾値期間２２６中に命令Ｄの割り込みを禁止することにより、データ処理システム１０のスループットは、割り込みを生じさせる命令Ｄの終了によって過剰に影響されず、そのため多くの場合ほぼ完了したデータの損失を生じさせる。実行期間２２２，２２４，２２６については、図３ないし図８を参照して以下でさらに説明する。
【００１５】
図３は、ＣＰＵ１２の一部を示す。ＣＰＵ１２は、整数ＣＰＵ３００および浮動小数点ユニット（ＦＰＵ）３４０を含む。整数ＣＰＵ３００は、オプコード・バス３１２，オペランド・バス３１４，結果バス３１６、ステータス・バス３１８および制御バス３２０を介してＦＰＵ３０４に結合される。さらに、整数ＣＰＵ３００は、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２およびＡＢＯＲＴ＿Ｂ信号３２４を介してＦＰＵ３４０に結合される。整数ＣＰＵ３００は、データ処理システム１０の割り込み要求３１０を受信すべく結合される。
【００１６】
整数ＣＰＵ３００は、プロセッサ・ステータス制御レジスタ(processor status and control register)３０４および割り込みコントローラ３０２を含む。プロセッサ・ステータス制御レジスタ３０４は、割り込みコントローラ３０２に割り込みイネーブル制御ビットおよび割り込みマスク制御ビットを与えるべく結合された格納位置である。割り込みイネーブル制御ビットは、割り込みがイネーブルされるかどうかを示し、割り込みマスク制御ビットは、受信した割り込みをマスクするかどうかを示す。割り込みコントローラ３０２は、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２および割り込み要求３１０を受信すべく結合され、かつＡＢＯＲＴ＿Ｂ信号３２４を与えるべく結合された割り込み制御モジュールである。
【００１７】
浮動小数点ユニット３４０は、制御ユニット３４２を含む。制御ユニット３４２は、ステート制御ユニット３４４を含む。ステート制御ユニット３４４は、ＡＢＯＲＴ＿Ｂ信号３２４を受信すべく結合され、かつＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２を与えるべく結合される。ステート制御ユニット３４４については、図４を参照して以下でさらに説明する。
【００１８】
動作中、浮動小数点ユニット３４０は、オプコード・バス３１２を介して整数ＣＰＵ３００から命令（例えば、命令実行フロー）を受信する。受信した命令に従って、浮動小数点ユニット３４０は、オペランド・バス３１４を介して受信したオペランドに対して各演算を実行する。浮動小数点ユニット３４０は、結果バス３１６およびステータス・バス３１８を介して結果情報およびステータス情報をそれぞれ与える。
【００１９】
浮動小数点ユニット３４０によって実行される命令の割り込みを制御するため、整数ＣＰＵ３００と浮動小数点ユニット３４０との間でハンドシェイク制御(handshake control)が用いられる。ハンドシェイク・プロトコルは、浮動小数点ユニット３４０が最適な割り込み認識ウィンドウを整数ＣＰＵ３００に指示することを可能にする。浮動小数点ユニット３４０は、浮動小数点ユニット３４０が整数ＣＰＵ３００からＡＢＯＲＴ＿Ｂ信号３２４を受信した後の次の割り込み認識ポイントにて、命令実行フローに割り込む。浮動小数点ユニット３４０は、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２をアサート(assert)することにより、浮動小数点ユニット３４０がＡＢＯＲＴ＿Ｂ信号３２４を受信する準備ができたことを整数ＣＰＵ３００に通知する。例えば、一実施例において、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は、１サイクル命令の実行中およびマルチサイクル命令の割り込み可能期間２２４中に、浮動小数点ユニット３４０によってアサートされる。ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２がアサートされなければ、浮動小数点ユニット３４０はＡＢＯＲＴ＿Ｂ信号３２４を受信せず、命令実行フローに割り込まない。
【００２０】
図４に示すように、ステート制御ユニット３４４は、デコード論理４０２，カウンタ４０４および制御論理４０６を含む。制御論理４０６は、比較ブロック４１０および閾値４０８を含む。デコード論理４０２は、オプコード・バス３１２を介して命令を受信すべく結合されたデコード・モジュールである。デコード論理４０２は、命令サイクル・カウント４１４をカウンタ４０４に与えるべく結合される。さらに、デコード論理４０２は、命令タイプ信号４１２を制御論理４０６に与えるべく結合される。カウンタ４０４は、命令サイクル・カウント４１４，クロック４２２および開始信号４２０を受信すべく結合されたカウント・モジュールである。カウンタ４０４は、例えば、反復命令のために一般に用いられる任意のカウンタでもよく、必ずしもデータ処理システム１０に対する追加論理ではない。カウンタ４０４は、バス４１６を介して比較ブロック４１０にカウンタ値を与えるべく結合される。比較ブロック４１０は、バス４１６を介してカウンタ値信号を受信し、かつバス４１８を介して閾値４０８を受信すべく結合される。比較ブロック４１０は、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２を与えるべく結合される。
【００２１】
図３および図４ならびに図５の動作５２５を参照して、ステート制御ユニット３４４は、命令オプコード・バス３１２を介して第１命令を受信する。この第１命令は、データ処理システム１０が実行できる任意の命令でもよい。第１命令は、主プログラム(primary program)内，サーブルーチン内，割り込み処理ルーチン内または任意の他のコンピュータ・プログラム内の命令でもよい。動作５２５の後、動作５２６において、デコード論理４０２は第１命令をデコードし、バス４１４を介して命令サイクル・カウントをカウンタ４０４に与える。動作５２６の後、動作５２７において、制御ユニット３４２は第１命令の実行を開始する。動作５２７の後、判定５１５において、整数ＣＰＵ３００は、データ処理システム１０に対して外部のデバイス（図示せず）が割り込みを要求しているかどうかを判定し、データ処理システム１０に対して内部の回路（例えば、図１の１６，１８または２０）が割り込みを要求しているかどうかを判定する。割り込みコントローラ３０２は、プロセッサ・ステータス制御レジスタ３０４から割り込みイネーブル制御ビットを受信し、割り込みがイネーブルされるかどうかを判定する。
【００２２】
割り込みがイネーブルされない場合、整数ＣＰＵ３００は割り込み要求を受信せず、第１命令の実行は、動作５２８において、通常のように割り込みなしで完了する。動作５２８の後、動作６３５（図６に図示）において、命令実行は、次の命令のフェッチ，受信，デコードおよび実行に進む。
【００２３】
割り込みがイネーブルされる場合、制御は判定５１５から判定５１６に遷移する。判定５１６において、割り込みコントローラ３０２は割り込み要求を調べて、割り込み要求が受信され、保留中(pending)であるかどうかを判定する。割り込み要求が整数ＣＰＵ３００によって受信されていない場合、第１命令の実行は、動作５２８，６３６を参照して説明したように、割り込みなしで完了する。割り込み要求を受信した場合、制御は判定５１６から判定５１７に遷移する。
【００２４】
判定５１７において、割り込み要求が受信され、保留中である場合、割り込みコントローラ３０２はプロセッサ・ステータス制御レジスタ３０４から割り込みマスク制御ビットを受信し、受信した割り込みがマスクされるかどうかを判定する。割り込みをマスクすることは、データ処理分野において周知である。例えば、受信した割り込みが、割り込みマスク制御ビットによって決定される閾値優先度よりも低い優先レベルを有するために、割り込みがマスクされている場合、第１命令の実行は、動作５２８，６３５を参照して説明したように、割り込みなしで完了する。
【００２５】
しかし、例えば、受信した割り込み要求が、割り込みマスク制御ビットによって決定される閾値優先度よりも高い優先レベルを有するために、保留中の割り込み要求がマスクされていない場合、割り込み要求は動作５２９において受け付けられ、整数ＣＰＵ３００は割り込みコントローラ３０２によって割り込まれる。次に、制御は動作５２９から判定６１８に遷移する。
【００２６】
図６を参照して、判定６１８において、浮動小数点ユニット３４０は、第１命令が多重割り込み期間をサポートするかどうかを判定する。第１命令が多重割り込み期間をサポートしない場合、第１命令の実行は、動作６３０において、割り込みなしに完了する。次に、動作６３４において、割り込み要求は、第１命令と次の命令との間の命令境界にて処理される。最後に、動作６３５において、通常の命令実行は、次の命令のフェッチ，受信，デコードおよび実行に進む。判定６１８において第１命令が多重割り込み期間をサポートすると判定されると、浮動小数点ユニット３４０は、判定６１９において、第１命令の現在実行中のサイクルが割り込み可能期間内であるかどうかを判定する。現在実行中のサイクルが割り込み可能期間内でない場合、浮動小数点ユニット３４０は、判定６２０において、第１命令の実行が完了したかどうかを判定する。第１命令の実行が完了していない場合、制御は判定６１９に遷移し、次の実行クロック・サイクルが割り込み可能期間内であるかどうかを判定する。
【００２７】
判定６１９において、第１命令の現在実行中のサイクルが割り込み可能期間内であると浮動小数点ユニット３４０が判断した場合、浮動小数点ユニット３４０はＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２をアサートする。ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２がアサートされることに応答して、割り込みコントローラ３０２（図３）はＡＢＯＲＴ＿Ｂ信号３２４をアサートし、浮動小数点ユニット３４０は、動作６３１において、次の割り込み認識ポイント（例えば、次のクロック・サイクルの前）にて第１命令の実行を停止する。従って、割り込みが割り込み可能期間中に受信された場合、第１命令が実行を完了する間は、割り込み処理は延期されず、そのため割り込みレイテンシは低減される。
【００２８】
一実施例において、第１命令の部分的結果は破棄され、データ処理システム１０は、動作６３２において割り込みの処理の完了時に第１命令の実行を開始する前のデータ処理システム１０の状態に戻される。割り込み要求は、動作６３３において、第１命令と次の命令との間の命令境界の前に処理される。割り込み要求の処理が完了した後、データ処理システム１０は、第１命令の実行が完了していないので、動作５２６において第１命令を再デコードおよび再実行する。
【００２９】
判定６２０において、第１命令の実行が完了したと浮動小数点ユニット３４０が判断した場合、動作６３４において、第１命令と次の命令との間の命令境界にて割り込み要求は処理され、動作６３５において、命令実行は次の命令のフェッチ，受信，デコードおよび実行に進む。
【００３０】
図７を参照して、タイミング図は、データ処理システム１０による一例としてのマルチサイクル命令の実行を示す。この特定の例において、マルチサイクル命令は浮動小数点除算演算である。また、この特定の例では、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は、高状態(high state)のときアクティブであり、ＩＮＳＴＲＵＣＴＩＯＮ＿ＳＴＡＲＴ＿Ｂ信号４２０，ＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号３１０，浮動小数点ユニットＦＰＵ＿ＩＤＬＥ＿Ｂ信号７１８およびＡＢＯＲＴ＿Ｂ信号３２４は、低状態(low state)のときアクティブである。
【００３１】
時間７１０において、浮動小数点除算命令の実行が開始される。浮動小数点ユニット３４０は、バス３１２を介して浮動小数点除算命令オペレーション・コード（オプコード）を受信し、またバス３１４を介して有効オペランド(valid operands)を受信する。ＩＮＳＴＲＵＣＴＩＯＮ＿ＳＴＡＲＴ＿Ｂ信号４２０（図４参照）は、ステート制御ユニット３４４内で低にアサートされ、ＦＰＵ＿ＩＤＬＥ＿Ｂ信号７１８（これはステータス信号３１８に含まれる）は、浮動小数点ユニット３４０が第１命令の実行を開始したことを通知するために、高にニゲート(negate)される。この例では、命令セットアップ時間中に第１命令の実行の割り込みを禁止するために、時間７１０，７２０における初期期間２２２中には、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２はアサートされない（すなわち、高ではない）。初期期間２２２の必要性は、もしあれば、実施例に特有のものである。
【００３２】
時間７２０において、割り込みが保留中であることを示すために、ＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号３１０は低にアサートされる。時間７３０において、初期期間２２０の終了および割り込み可能期間２２４の開始を示すために、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は高にアサートされる。ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２がアサートされることに応答し、かつＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号Ｂ３１０がすでにアサートされていることに応答して、割り込みコントローラ３０２は、時間７４０においてＡＢＯＲＴ＿Ｂ信号３２４をアサートする。ＡＢＯＲＴ＿Ｂ信号３２４が低にアサートされることに応答して、浮動小数点ユニット３４０は、次の割り込み認識ポイント（例えば、割り込み可能期間中の次のサイクル）にて浮動小数点除算演算に割り込み、また時間７４０後に低にアサートされるＦＰＵ＿ＩＤＬＥ＿Ｂ信号７１８に示されるように、アイドル状態に戻る。さらに、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は低にニゲートされる。第１命令の割り込みの結果として、結果は結果バス３１６を介して報告されない。
【００３３】
図８を参照して、タイミング図は、データ処理システム１０による一例としてのマルチサイクル命令の実行を示す。この特定の例では、マルチサイクル命令は浮動小数点除算演算である。また、この特定の例では、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は高状態のときアクティブであり、ＦＰＵ＿ＩＤＥＬ＿Ｂ信号７１８，ＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号３１０およびＡＢＯＲＴ＿Ｂ信号３２４は低状態のときアクティブである。
【００３４】
時間８１０において、浮動小数点除算演算が実行されるとき、ＦＰＵ＿ＩＤＬＥ＿Ｂ信号７１８は高であり、浮動小数点ユニット３４０がアイドルでないことを示し、ＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号３１０は高であり、保留中の割り込みがないことを示し、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は高であり、除算命令は、除算演算が割り込み可能である割り込み可能期間中であることを示し、ＡＢＯＲＴ＿Ｂ信号３２４は高であり、アクティブでないことを示す。時間８２０において、割り込みが保留中になると、ＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号３１０はアサートされるが、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は低状態に遷移し、命令は完了する前に割り込めないことを示す。従って、ＡＢＯＲＴ＿Ｂ信号３２４はアサートされず、除算演算は時間８４０にて完了する。結果は、時間８４０にて除算命令の完了時に、結果バス３１６を介して生成される。
【００３５】
図示の例では、除算演算は極めて完了に近く、その完了の前に除算演算に割り込むことを許さないことにより、浮動小数点ユニット３４０によって利用される処理時間は無駄にならず、そのため処理スループットは向上する。この特定の例では、除算演算が完了の３クロック・サイクル以内になると、ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２は低状態に変化する。ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号３２２のアサートを決定する閾値は、３クロック・サイクルの値を有する。従って、完了する３クロック・サイクル以内である除算命令は、完了前に割り込めないが、完了前に４クロック以上残っている除算命令は割り込むことができる。このように、プロセッサの最大レイテンシは小さな値、例えば、３クロック・サイクル、を有し、これはリアルタイム応答にとって有利であり、プロセッサは改善された処理帯域幅を有する。
【００３６】
一実施例において、データ処理システム１０は、割り込み可能な命令および割り込み不可能な命令を含む。すなわち、データ処理システム１０は、処理環境および／または実行される命令について適切であれば、割り込み認識を命令の途中で生じさせるオプションを許可する。命令が実行途中で割り込まれると、命令の部分的な結果は破棄され、保留中の割り込みが処理される。実質的に完了した命令からのデータの損失を防ぐために、閾値が用いられる。一実施例において、この閾値は、最長の割り込み不可能な命令である、システムの最大レイテンシとなるように選択される。例えば、最長の割り込み不可能な命令が４クロック・サイクルの場合、データ処理システム１０の最大レイテンシを増加しないように、閾値４を選ぶことができる。閾値を利用することは、データ処理システム１０の最大割り込みレイテンシ時間を増加せずに、実質的に完了した命令からのデータの損失を防ぐ。
【００３７】
一実施例において、処理装置によって命令を処理する方法が提供される。この処理装置は、マルチサイクル命令の実行を開始する。マルチサイクル命令の実行中に、閾値は、マルチサイクル命令の完了前に残っているサイクル数を示すカウント値と比較される。
【００３８】
一実施例において、装置は処理ユニットを含む。処理ユニットは、割り込み制御モジュールを含む。割り込み制御モジュールは、割り込み要求信号入力と、マルチサイクル命令が、マルチサイクル命令の割り込みがマルチサイクル命令の完了前に許可されるところの割り込み可能期間内であるかどうか示すマルチサイクル命令割り込み信号を受信する第２入力とを有する。
【００３９】
一実施例において、データ処理ユニットは実行ユニットを含む。実行ユニットは、マルチサイクル命令を処理すべく構成される。実行ユニットは、デコード論理，カウンタ，閾値および比較ユニットを含む。デコード論理は、命令オペレーション・コードを受信すべく結合される。カウンタは、デコード論理に応答して、命令サイクル・カウントを受信する。比較ユニットは、カウンタと、閾値とに応答する。比較ユニットは、マルチサイクル命令の割り込みが許可されるときに割り込み可能期間を示すマルチサイクル命令割り込み信号を生成する出力を有する。
【００４０】
一実施例において、データを処理するためのマルチサイクル命令は、第１および第２実行期間を含む。第１実行期間は、マルチサイクル命令の実行を完了する前に割り込みを許す。第２実行期間は、割り込み前にマルチサイクル命令の完了を示す。
【００４１】
一実施例において、装置は信号を含む。この信号は、第１信号値および第２信号値を含む。マルチサイクル命令の実行中に、第１信号値は、完了前にマルチサイクル命令が割り込み可能であるところの第１実行ポイントに、マルチサイクル命令があることを示す。また、マルチサイクル命令の実行中に、第２信号値は、割り込み前にマルチサイクル命令が完了するところの第２実行ポイントに、マルチサイクル命令があることを示す。
【００４２】
一実施例において、コンピュータ・プログラム製品は、コンピュータ読出し可能な媒体において符号化される。コンピュータ・プログラム製品は、第１命令を含む。この第１命令は、コンピュータ・システム上で実行可能である。第１命令は、マルチサイクル・オペレーションを実行するためのものである。第１命令は、第１および第２実行期間を含む。第１実行期間は、マルチサイクル命令の実行を完了する前に割り込みを許し、第２実行期間は、割り込み前にマルチサイクル命令の完了を示す。
【００４３】
一実施例において、データを処理する装置は、コンピュータ読出し可能な媒体およびマルチサイクル命令を含む。マルチサイクル命令は、コンピュータ読出し可能な媒体上に格納される。マルチサイクル命令は、第１および第２実行期間を含む。第１実行期間は、マルチサイクル命令の実行を完了する前に割り込みを許し、第２実行期間は、割り込み前にマルチサイクル命令の完了を示す。
【００４４】
一つまたはそれ以上の実施例について説明してきたが、かかる実施例は本発明を例示するものであり、発明の範囲はそれらに制限されないことが理解される。むしろ、発明の範囲は、特許請求の範囲において定められる。従って、発明の他の実施例は、本明細書で説明した実施例に対するさまざまな修正，追加および／または改善を含む。
【００４５】
上記の構成要素，デバイス，動作などは、本明細書において概念的な明瞭さのために例として用いられている。例えば、データ処理ユニット１０および／またはＣＰＵ１２は、単一の集積回路上に形成されたデータ・プロセッサ，シングル・チップ・マイクロコントローラまたはマイクロプロセッサ・ユニットを含むがそれらに制限されない任意の処理ユニットの例として用いられる。データ処理システム１０およびその構成要素は、任意の種類の電気回路またはその機能および／または構造を実行および／またはシミュレーションするための任意の種類のユニットまたはモジュール（ソフトウェア，ハードウェア，ファームウェアなど）を利用して実装できる。そのため、本明細書で用いられるように、これらの特定の例は、より一般的なクラスを表すものとする。さらに、一般に、詳細な説明における特定の例の使用は、そのクラスを表すものとし、上記のリストにこのような特定のデバイスを含まないことは、制限が望ましいことを示すものとはみなすべきではない。
【００４６】
集積回路端子３０，３２，３４，３６，３８は、データ処理システム１０と電気信号のやり取りを可能にする任意の種類の装置でもよい。例えば、集積回路端子３０，３２，３４，３６，３８は、集積回路ピン，半田バンプ，ワイヤ導体などでもよい。さらに、バス２６は、集積回路端子を介してデータ処理システム１０に対して電気信号を導通してもよい。
【００４７】
一実施例において、上記の閾値は、特定の値に固定、あるいはハードワイヤ(hard-wired)してもよい。別の実施例では、閾値はユーザ・プログラミング可能あるいはシステム・プログラミング可能でもよく、例えば、システム環境変化またはユーザ条件に基づいて変化できる。一実施例において、閾値は、例えば、イネーブル・フラグを立てることより、任意にイネーブルまたはディセーブルされる。
【００４８】
一実施例において、割り込みレイテンシおよびプロセッサ実行オーバヘッドを最適化するためのハンドシェイク・プロトコルは、整数ＣＰＵ３００と浮動小数点ユニット３４０との間で実装される。別の実施例では、ハンドシェイク・プロトコルは、最適な割り込みウィンドウを示すめ、さまざまな機能ユニットの間で実装される。
【００４９】
当業者であれば、論理ブロックの境界は例示的なものに過ぎず、別の実施例ではこれらのブロックを融合したり、あるいはブロックの機能を分解することもできる。例えば、閾値４０８は浮動小数点ユニット３４０においてハードワイヤあるいは格納でき、もしくは閾値４０８は、例えば、ＣＰＵ３００のプロセッサ・ステータス制御レジスタ３０４内に格納して、浮動小数点ユニット３４０に送信してもよい。さらに、ステート制御論理は、浮動小数点ユニット３４０内に配置しても、あるいは、例えば、ＣＰＵ３００および浮動小数点ユニット３４０が同一マイクロプロセッサ内に集積される場合には、ＣＰＵ３００内に配置してもよい。
【００５０】
また、データ処理システム１０の別の実施例は、より多くの、より少ない、あるいは異なる回路ブロックを含んでもよい。例えば、データ処理システム１０の別の実施例は、メモリ１４，タイマ１６，シリアル１８，または他の回路２０を含まなくてもよい。本発明のある実施例では、システム集積回路２２を含んでも、含まなくてもよい。ある実施例では、特定の構成要素の複数のインスタンスを合成してもよい。
【００５１】
本明細書で説明した機能は、任意の種類のデータ処理システム１０によって、あるいはその内部で実行できる。例えば、データ処理システム１０は、マイクロプロセッサ（例えば、単一集積回路チップ上で作製された処理ユニット），マイクロコントローラ（例えば、集積されたメモリおよび／またはＩ／Ｏデバイスを内蔵するマイクロプロセッサ），コンピュータ・システム基板，組み込み型(embedded)コンピュータ・システムおよび／または汎用コンピュータ・システムを含むが、それらに限定されない任意の処理ユニットでもよく、あるいは任意の処理ユニットを内蔵してもよい。また、回路ブロックは、ソフトウェアのモジュール、またはソフトウェアのモジュールを実行するための汎用回路、もしくはこのような回路ブロックをシミュレーションするためのソフトウェアを含んでも、あるいはそれらに置き換えてもよい。
【００５２】
さらに、当業者であれば、例示的な実施例で説明した上記の動作および判定（例えば、図５および図６）の機能間の境界は、一例に過ぎないことが理解されよう。動作は合成してもよく、あるいは本発明に従って、動作の機能を追加動作において分散してもよい。さらに、別の実施例では、特定の動作の複数のインスタンス、または異なる動作の順番を含んでもよい。
【００５３】
図５および図６の動作の一部または全ては、命令によって、あるいはモジュール（例えば、ソフトウェア・モジュール）またはモジュールの一部および／またはコンピュータ・システム・ユーザによって実行できる。従って、上記の方法，その動作およびその任意のモジュールは、この方法の動作を実行すべく構成されたコンピュータ・システム上で実行でき、および／またはマシン読出し可能なおよび／またはコンピュータ読出し可能な媒体から実行できる。本方法は、本方法を実行するべくコンピュータ・システムを構築するためのコンピュータ読出し可能な媒体において具現できる。従って、ソフトウェア・モジュールは、モジュールの機能を実行すべくコンピュータ・システムを構築するために、コンピュータ・システム・メモリ内に格納でき、および／またはコンピュータ・システム・メモリに送信できる。
【００５４】
本明細書で説明したソフトウェア・モジュール，動作および／または命令は、例えば、メモリ１４などのコンピュータ読出し可能な媒体から、データ処理システム１０によって受信される。コンピュータ読み出し可能な媒体は、データ処理システム１０に永久に、着脱可能に、あるいは遠隔的に結合できる。コンピュータ読出し可能な媒体は、例えば、ディスクおよびテープ保存媒体を含む磁気保存媒体；コンパクト・ディスク媒体（例えば、ＣＤ−ＲＯＭ，ＣＤ−Ｒなど）およびデジタル・ビデオ・ディスク保存媒体などの光保存媒体；フラッシュ・メモリ，ＥＥＰＲＯＭ，ＥＰＲＯＭ，ＲＯＭまたはＡＳＩＣ（特定用途向け集積回路）など、半導体ベースのメモリ・ユニットを含む不揮発性メモリ／保存装置；レジスタ，バッファまたはキャッシュ，メイン・メモリ，ＲＡＭなどを含む、揮発性保存媒体；およびコンピュータ・ネットワーク，ポイント・ツー・ポイント通信，搬送波伝送媒体を含む、データ伝送媒体；のうち、任意の数のものを非排他的に含んでもよい。上記の一例としてのコンピュータ読出し可能な媒体は、メモリ１４，集積回路端子３０，３２，３４，３６，３８および／またはバス２４，２６の形式をとってもよく、あるいはこれらによってアクセス可能であってもよい。ＵＮＩＸ（登録商標）に基づいた実施例では、ソフトウェア・モジュールはファイル内で具現され、これはデバイス，端末，ローカルまたはリモート・ファイル，ソケット，ネットワーク接続，信号または他の通信もしくは状態変化の手段(expedient of communication or state change)でもよい。他の新たなあるいはさまざまな種類のコンピュータ読出し可能な媒体は、本明細書で説明した動作および判定を含むソフトウェア・モジュールを格納および／または送信するために利用できる。
【００５５】
一実施例において、データ処理システム１０は、パーソナル・コンピュータ・システムなどのコンピュータ・システムである。他の実施例では、異なる種類のコンピュータを含んでもよい。コンピュータ・システムとは、一人のユーザあるいは複数のユーザに独立したコンピューティング能力を与えるべく設計できる情報処理システムのことである。コンピュータ・システムには多くの形式があり、メインフレーム，ミニコンピュータ，ワークステーション，サーバ，パーソナル・コンピュータ，ノートパッド，組み込みシステム(embedded systems)を含むが、それらに限定されない。典型的なコンピュータ・システムは、少なくとも一つの処理ユニットと、関連するメモリと、多数の入出力（Ｉ／Ｏ）デバイスとを含む。一例としてのＩ／Ｏデバイスには、ディスプレイ・モニタ，キーボード，ディスケット・ドライブ，固定ディスク保存装置，プリンタ，モデム，サウンドおよびビデオ・デバイスまたは特殊な通信デバイス，フロッピ・ディスクまたはハード・ディスクおよびＣＤ−ＲＯＭドライブなどのコンピュータ読出し可能な媒体が含まれる。このような多くのコンピュータ・システムは、これらの構成要素を互いに接続するためにシステム基板を利用する。コンピュータ・システムは、プログラムに従って情報を処理し、Ｉ／Ｏデバイスを介してその出力を生成する。プログラムとは、特定のアプリケーション・プログラムおよび／またはオペレーティング・システムなど、内部格納された命令のリストである。ソフトウェア・モジュールは、プログラムを含んでもよい。コンピュータ・システムの動作を制御するプログラムは、一般にソフトウェア・アプリケーション、または単純にソフトウェアという。
【００５６】
信号は、電圧信号，電流信号，ステータス・ビット、または信号の情報を伝達するための同様な装置または回路効果であっても、あるいはこれらを含んでもよい。本明細書で説明した信号の多くは、１ビットの信号である。他の実施例の対応する信号は、例えば、マルチビット信号のアサートを示す第１ビットまたは信号と、マルチビット信号のニゲートを示す第２ビットまたは信号とを含む、マルチビット信号でもよい。
【００５７】
多くの場合、必ずしもそうではないが、本明細書で説明した量(quantities)または動作は、格納，転送，合成，比較またはその他処理可能な電気信号または磁気信号の処理を必要とし、もしくはこれらの形式をとる。主に慣用上および一般的な利用上の理由により、これらの信号をビット，値，要素，シンボル，文字，用語，数字などとして表すことは、時として便利であることがわかっている。ただし、これらおよび同様な用語の全ては、特定の実施例の適切な物理的特徴に関連することを理解されたい。
【００５８】
当業者であれば、信号は第１論理ブロックから第２論理ブロックに直接伝送でき、あるいは信号は論理ブロック間で修正（例えば、増幅，減衰，遅延，ラッチ，バッファ，反転，濾波，その他変換など）できることが理解されよう。上記の実施例の信号はあるブロックから次のブロックに伝送されるものとして特徴づけられるが、他の実施例では、信号の情報および／または機能的態様がブロック間で伝送される限り、このように直接伝送される信号の代わりに、修正された信号を含んでもよい。ある程度、第２論理ブロックにて入力される信号は、関連する回路の物理的な制限により（例えば、必然的にある程度の減衰および遅延が存在する）、第１論理ブロックから出力された第１信号から導出された第２信号として概念化できる。従って、本明細書で用いられるように、論理ブロック間で伝送される信号は、結果として第２信号を生じる修正を含むものとし、このような修正は、回路の制限に起因しても、あるいは他の回路要素を通過することに起因するものであり、第１信号の情報および／または最終的な機能的態様を変えるものではない。
【００５９】
「アサート(assert)」および「ニゲート(negate)」という用語は、それぞれ信号を論理的に真(true)の状態または論理的に偽(false)の状態にすることを表すときに用いられる。論理的に真の状態が論理レベル１である場合、論理的に偽の状態は論理レベル０であり、またその逆である。本明細書におけるある信号は低(low)にアサートされ（例えば、アクティブ・ロー）、ある信号は高にアサートされる（例えば、アクティブ・ハイ）。他の実施例では、本明細書で開示した極性を逆にしてもよい。
【００６０】
「バス(bus)」という用語は、データ，アドレス，制御またはステータスなど、一つまたはそれ以上の種類の情報を転送するために利用できる複数の信号または導体(conductors)を表すために用いられる。他の実施例では、例えば、上記のバスの代わりに、シリアル信号またはシングル・ライン接続を利用してもよい。上記の説明は、本発明の実施例の包括的なリストを提示することを意図するものではない。一例としての実施例およびその変形例を概説することを試みてきたが、他の実施例および／または変形例は、特許請求の範囲に定められる発明の範囲内である。
【図面の簡単な説明】
【図１】データ処理システムを示すブロック図である。
【図２】命令実行タイミング図である。
【図３】図１のデータ処理システムの中央処理装置（ＣＰＵ）の一部を示すブロック図である。
【図４】図１のデータ処理システムの浮動小数点ユニット（ＦＰＵ）の一部を示すブロック図である。
【図５】データ処理システムにおいて割り込みレイテンシを制御する方法を示すフロー図である。
【図６】データ処理システムにおいて割り込みレイテンシを制御する方法を示すフロー図である。
【図７】図１のデータ処理システムの動作を示すタイミング図である。
【図８】図１のデータ処理システムの動作を示すタイミング図である。
【符号の説明】
１０  データ処理システム
１２  中央処理装置（ＣＰＵ）回路
１４  メモリ回路
１６  タイマ回路
１８  シリアル回路
２０  他の回路
２２  システム集積回路
２４，２６  バス
３０，３２，３４，３６，３８  集積回路端子
２００  命令実行フロー
２１０，２１１，２１２，２１３，２１４，２１５，２１６，２１７，２１８  割り込み認識ポイント
２２０  実行期間
２２２  初期期間
２２４  割り込み可能期間
２２６  ポスト閾値期間
３００  整数ＣＰＵ
３０２  割り込みコントローラ
３０４  プロセッサ・ステータス制御レジスタ
３１０  割り込み要求（ＩＮＴＥＲＲＵＰＴ＿ＲＥＱＵＥＳＴ＿Ｂ信号）
３１２  オプコード・バス
３１４  オペランド・バス
３１６  結果バス
３１８  ステータス・バス
３２０  制御バス
３２２  ＯＫ＿ＴＯ＿ＩＮＴＥＲＲＵＰＴ信号
３２４  ＡＢＯＲＴ＿Ｂ信号
３４０  浮動小数点ユニット（ＦＰＵ）
３４２  制御ユニット
３４４  ステート制御ユニット
４０２  デコード論理
４０４  カウンタ
４０６  制御論理
４０８  閾値
４１０  比較ブロック
４１２  命令タイプ信号
４１４  命令サイクル・カウント
４１６，４１８  バス
４２０  開始信号（ＩＮＳＴＲＵＣＴＩＯＮ＿ＳＴＡＲＴ＿Ｂ信号）
４２２  クロック
７１８  ＦＰＵ＿ＩＤＬＥ＿Ｂ信号
【図１】
0004628521.tif 000002
【図２】
0004628521.tif 000003
【図３】
0004628521.tif 000004
【図４】
0004628521.tif 000005
【図５】
0004628521.tif 000006
【図６】
0004628521.tif 000007
【図７】
0004628521.tif 000008
【図８】
0004628521.tif 000009