(57)【要約】【課題】２つの命令バイトを利用して再開可能な命令を実行するデータ処理方法を提供する。【解決手段】プログラム・カウンタ７２が第１命令バイトを指すと、第１データ処理演算が開始される。第１データ処理演算の実行中に割り込みが発生すると、複数の一時レジスタ６４，６６，６８に保持された中間データ計算値は、スタック・ポインタ・レジスタ７２によって指された番地でスタック・メモリに格納される。プログラム・カウンタは、命令の第２バイトを指すため繰り上げられる。命令再開動作が実行され、データ処理演算の中間結果はスタック・メモリからアクセスされ、データ処理システム内のそれぞれの格納番地に復元される。中間結果が復元された後、プログラム・カウンタは第１命令バイトを指すため繰り下げられ、命令は、あたかも割り込みが発生しなかったかのようにデータ処理演算の実行を継続する。【選択図】図３
2006196013.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置において再開可能な命令を実行するための方法であって、
第１命令部分及び第２命令部分を有した、再開可能な命令を受信するステップと、
長い計算を開始することによって前記第１命令部分の実行を開始するステップと、
前記第１命令部分の実行中に割り込みが受け付けられた場合には、前記長い計算の中間結果を格納し、及び前記割り込みを処理する前に前記第２命令部分を指すようにプログラム・カウンタを設定するステップと、
前記第１命令部分の実行中に割り込みが受け付けられなかった場合には、前記第２命令部分を実行することなく前記再開可能な命令の実行を完了させるステップとを備える、命令の実行方法。
【請求項２】
データ処理装置において再開可能な命令を実行するための方法であって、
第１命令部分及び第２命令部分を有した、再開可能な命令を受信するステップと、
前記第１命令部分を指すようにプログラム・カウンタをイネーブルするステップと、
前記プログラム・カウンタが第１命令部分を指すことに応答して、長い計算を開始するステップと、
前記第１命令部分の実行中に割り込みに応答した割り込み信号が発生した場合には、前記長い計算の中間データを一時的に格納し、及び前記割り込みを処理する前に前記第２命令部分を指すようにプログラム・カウンタを設定するステップと、
前記割り込みを処理するステップと、
前記割り込みを処理した後に、前記第２命令部分の実行を開始するステップと、
前記第２命令部分の実行の間に、前記一時的に格納された中間データを復元し、及び前記プログラム・カウンタを再び前記第１命令部分を指すように設定するステップと、
他の割り込みが受信されるまで、又は前記長い計算が完了するまで、前記第１命令部分の実行を再開するステップと、
前記第１命令部分の実行中に割り込み信号が発生されなかった場合には、前記第２命令部分を実行することなく前記再開可能な命令の実行を完了させるステップとを備える、命令の実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理システムにおける命令に関し、さらに詳しくは、データ処理システムにおける再開可能な(resumable) 命令に関する。
【背景技術】
【０００２】
データ処理システムの複雑さが増加するにつれて、データ処理システムによって実行される命令は、より多くの命令サイクルを完全に実行させることが必要なことがある。命令サイクルを増加することは、より長い実行時間に相当し、そのため、機能の実行に割り込む信号の必要性に相当する。一般に割り込み信号は、より緊急なデータ処理機能を実行すべきであることを示す。長い待ち時間(latency) を有する現在の命令では、命令が完全に実行される前に割り込みがアサートされた場合に、２つの方法のうち１つが一般に行われる。
【０００３】
第１の方法では、データ処理システムは、命令が完全に実行されるまで、割り込みを無視する。命令が実行された後、割り込みは処理される。除算，乗算，累算および複雑なファジー論理命令などのデータ処理命令では、割り込みを処理する前に費やされる時間はデータ処理システムの適正動作にとって重要となりうる。割り込みのタイミングが重要でない他のシステムでは、システムの効率は、現在実行中の命令の長い実行時間によって低下する。
【０００４】
第２の方法では、割り込みを受けると、データ処理システムは命令の実行を単純に停止する。命令の実行に必要なデータは、一般に、データ処理システム内のスタック・メモリまたは他のメモリ・デバイスに格納され、ついで割り込みが即刻処理される。割り込みを処理した後、データ処理システムはスタック・メモリまたは他のメモリ・デバイスに格納されたデータを取り出し、命令の実行を最初から再開する。前に計算された中間結果は取り出され、同じ命令の以降の実行において再び用いられる。この第２の割り込み処理方法を実行するデータ処理システムでは、命令実行のための初期化(initialization)を一連の追加命令中に実行しなければならない。命令の実行中に初期化ステップを実行すると、すべての初期化ステップは命令が割り込まれる度に繰り返されることになる。ここでも、データ処理システムの効率は最適化されない。命令実行の前に必要な初期化ステップを挿入することは、第２の割り込み処理方法を実行するシステムの機能性を向上させずに、貴重なメモリ・スペースを消費する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
割り込みを効率的に処理でき、しかもシステムの最適性能を維持するデータ処理システムに対する必要性が生じている。これまで、従来の方法では、緊急度または優先度にかかわりなく、命令実行まで割り込みを単純に無視するか、あるいは命令実行に割り込み、即刻割り込みを処理し、すべての中間命令計算を失っていた。概して、上記の従来の方法は、これらの方法が実施されるデータ処理システムの最適性能を提供していない。
【課題を解決するための手段】
【０００６】
上記問題点を解決するために、請求項１に記載の発明は、データ処理装置において再開可能な命令を実行するための方法であって、第１命令部分及び第２命令部分を有した、再開可能な命令を受信するステップと、長い計算を開始することによって前記第１命令部分の実行を開始するステップと、前記第１命令部分の実行中に割り込みが受け付けられた場合には、前記長い計算の中間結果を格納し、及び前記割り込みを処理する前に前記第２命
令部分を指すようにプログラム・カウンタを設定するステップと、前記第１命令部分の実行中に割り込みが受け付けられなかった場合には、前記第２命令部分を実行することなく前記再開可能な命令の実行を完了させるステップとを備えることを要旨とする。
【０００７】
請求項２に記載の発明は、データ処理装置において再開可能な命令を実行するための方法であって、第１命令部分及び第２命令部分を有した、再開可能な命令を受信するステップと、前記第１命令部分を指すようにプログラム・カウンタをイネーブルするステップと、前記プログラム・カウンタが第１命令部分を指すことに応答して、長い計算を開始するステップと、前記第１命令部分の実行中に割り込みに応答した割り込み信号が発生した場合には、前記長い計算の中間データを一時的に格納し、及び前記割り込みを処理する前に前記第２命令部分を指すようにプログラム・カウンタを設定するステップと、前記割り込みを処理するステップと、前記割り込みを処理した後に、前記第２命令部分の実行を開始するステップと、前記第２命令部分の実行の間に、前記一時的に格納された中間データを復元し、及び前記プログラム・カウンタを再び前記第１命令部分を指すように設定するステップと、他の割り込みが受信されるまで、又は前記長い計算が完了するまで、前記第１命令部分の実行を再開するステップと、前記第１命令部分の実行中に割り込み信号が発生されなかった場合には、前記第２命令部分を実行することなく前記再開可能な命令の実行を完了させるステップとを備えることを要旨とする。
【発明を実施するための最良の形態】
【０００８】
第１の形態では、データ処理システムが提供される。このデータ処理システムは、再開可能な(resumable) 命令を受けるインタフェース回路を含む。再開可能な命令は、第１命令バイトおよび第２命令バイトを有する。また、データ処理システムは、複数の制御値を与えるため再開可能な命令を解読する命令解読回路を含む。命令解読回路は、再開可能な命令を受けるためインタフェース回路に接続される。プログラム・カウンタは、再開可能な命令を指すプログラム・カウンタ値を格納する。プログラム・カウンタは、再開可能な命令の第１命令バイトおよび第２命令バイトのうち一方を選択的に指す。レジスタ回路は、プログラム・カウンタ値が再開可能な命令の第１命令バイトを指したときに、複数の初期化値と、計算された複数の中間値とを格納する。演算論理ユニットは、複数の初期化値および複数の中間値を受けるためレジスタ回路に接続される。演算論理ユニットは、複数の初期化値および複数の中間値を選択的に利用して、複数の制御値に応答して再開可能な命令の結果を算出する。スタック・メモリは、割り込み信号がアサートされ、かつプログラム・カウンタ値が再開可能な命令の第１命令バイトを指したときに、レジスタ回路に格納された複数の中間値を格納する。スタック・メモリは、プログラム・カウンタ値が再開可能な命令の第２命令バイトを指したときに、複数の中間値をレジスタ回路に与える。
【０００９】
さらに、第２の形態では、データ・プロセッサにおいて再開可能な命令を実行する方法が提供される。この方法は、第１命令バイトおよび第２命令バイトを有する再開可能な命令を受ける段階を含む。プログラム・カウンタは、第１命令バイトおよび第２命令バイトのうち一方を指すためイネーブルされる。第１データ処理機能は、プログラム・カウンタが第１命令バイトを指したときに実行される。第２データ処理機能は、プログラム・カウンタが第２命令バイトを指したときに実行され、この場合、第２データ処理機能により、データ・プロセッサは第１データ処理機能の実行を再開できる。
【００１０】
これらおよび他の特徴および利点は、添付の図面とともに以下の詳細な説明から明らかになろう。ただし、図面は本発明の唯一の形態を表すものではないことに留意されたい。
【実施例】
【００１１】
本発明は、一時的に割り込み可能であり、かつ後で再開可能な命令を実行するデータ処理システムを提供する。命令の割り込み前に計算された中間結果は、スタック・メモリに
格納され、命令のアドレスを示すプログラム・カウンタ値は繰り上げられ、割り込みは前回定義されたプログラムに基づいて処理される。
【００１２】
プログラム・カウンタは、命令の第２バイトをアクセスするため１だけ繰り上げられる。次に、データ処理システムは割り込みルーチンを実行する。割り込みルーチンを実行した後、繰り上げられたプログラム・カウンタは命令の第２命令バイトを指し、命令実行を再開する。命令の第２バイトがアクセスされると、命令の再開部分は実行され、ここでデータ処理演算の中間結果はスタック・メモリからアクセスされ、データ処理システム内のそれぞれの格納番地に復元される。また、プログラム・カウンタは、命令の第１バイトを指すため１だけ繰り下げられる。中間結果が復元された後、命令は、あたかも割り込みが発生しなかったように、データ処理演算の実行を継続する。
【００１３】
本明細書で説明するデータ処理システムにより、処理システムのユーザは命令に割り込み、割り込みルーチンを実行し、それから命令の実行を、サイクル時間を失わずに完了できる。従来の方法とは異なり、ユーザは、割り込み信号に応答して割り込みルーチンを実行するため、命令が完全に実行されるまで待つ必要はない。また、ユーザは中間結果を失わない。
【００１４】
本明細書で説明するシステムは、効率的に命令に割り込むことができ、しかも最適性能および効率的動作を維持できる。データ処理動作の適正動作は、割り込み信号を即座に処理することによって維持される。さらに、命令の実行中に生成される中間結果はスタック・メモリに格納されるため、前回計算された値を求めることに処理時間が費やされない。長い実行時間を有する命令の最適化された実行を可能にする本発明の実施例および回路についてさらに詳しく説明する。
【００１５】
（接続についての説明）
上記の命令および動作方法の１つの構成を図１に示す。図１は、再開可能な命令を実行できるデータ処理システム１０を示す。データ処理システム１０は、一般に、中央処理ユニット（ＣＰＵ）１２，発振器２４，電力回路２６，タイミング回路２８，外部バス・インタフェース３０および内部メモリ３２を含む。一般に、ＣＰＵ１２は、実行ユニット１４，バス制御論理回路１６，命令解読論理回路１８，制御ユニット２０およびシーケンサ２２を有する。
【００１６】
動作中、「ＯＳＣ１］信号は、水晶などの外部発生源を介して発振器２４に与えられる。水晶は、ＯＳＣ１信号とＯＳＣ２信号との間に接続され、水晶が発振することを可能にする。ＯＳＣ１は、データ処理システム１０の残りの部分に「クロック(CLOCK) 」信号を与える。水晶発振器の動作はデータ処理の技術分野で周知であり、当業者に明らかである。
【００１７】
同様に、電力回路２６は、外部電源から「Ｖｄｄ」および「Ｖｓｓ」信号の両方を受ける。Ｖｄｄ信号は正の５ボルトを供給し、Ｖｓｓ信号は基準または接地電圧を供給する。ＶｄｄおよびＶｓｓ信号は、データ処理システム１０の各残りの部分に与えられる。これらの信号の供給はデータ処理の技術分野で周知であり、当業者に明らかである。
【００１８】
タイミング回路２８は、クロック信号を受け、その後適切なタイミング信号をＣＰＵ１２，外部バス・インタフェース３０および内部メモリ３２にタイミング制御バス３８を介して与える。
【００１９】
複数のアドレス値は、外部バス・インタフェース３０から外部アドレス・バス３５を介して与えられる。同様に、複数のデータ値は外部データ・バス３３を介して外部バス・イ
ンタフェース３０に交信される。外部バス・インタフェース３０は、外部ユーザとデータ処理システム１０との間でアドレスおよびデータ値を交信すべく機能する。複数のアドレスおよびデータ値は、内部アドレス・バス３６および内部データ・バス３４をそれぞれ介して、外部バス・インタフェース３０とデータ処理システム１０の残りの部分との間で交信される。内部メモリ３２は、データ処理システム１０の適正動作のために必要な情報値を格納すべく機能する。さらに、他のデータ値も、ユーザ・プログラムで指定されれば、内部メモリに格納できる。
【００２０】
ＣＰＵ１２は、データ処理システム１０の動作中に必要とされる各命令を実行する。内部アドレス・バス３６および内部データ・バス３４は、実行ユニット１４とデータ処理システム１０の残りの部分との間で情報を交信する。バス制御論理回路１６は、命令およびオペランドをフェッチする。各命令は、命令解読論理回路１８によって解読され、制御ユニット２０およびシーケンサ２２に与えられる。制御ユニット２０およびシーケンサ２２は、データ処理システム１０の演算能力を最も効率的に利用するため、各命令の実行のシーケンスを維持する。さらに、制御ユニット２０は、マイクロＲＯＭメモリ（図示せず）を含み、これは複数の制御情報を各実行ユニット１４，バス制御論理１６および命令解読論理１８にマイクロＲＯＭ制御バス６５を介して与える。
【００２１】
図２は、データ処理システム１０の実行ユニット１４の一実施例を示す。実行ユニット１４は、一般に、演算論理ユニット（ＡＬＵ）５２，状態コード・レジスタ（ＣＣＲ：condition code register)）５４，累算器Ａ（ＡＣＣＡ）５６，累算器Ｂ（ＡＣＣＢ）５８，インデックスＸレジスタ６０，インデックスＹレジスタ６２，第１一時レジスタ（ＴＥＭＰ１）６４，第２一時レジスタ（ＴＥＭＰ２）６６，第３一時レジスタ（ＴＥＭＰ３）６８，プログラム・カウンタ７０およびスタック・ポインタ７２を含む。
【００２２】
各ＡＬＵ５２，状態コード・レジスタ５４，累算器Ａ５６，累算器Ｂ８５，インデックスＸレジスタ６０，インデックスＹレジスタ６２，ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８，プログラム・カウンタ７０およびスタック・ポインタ７２は、データおよびアドレス情報を受けるためＡバス７４に結合される。さらに、各ＡＬＵ５２，状態コード・レジスタ５４，累算器Ａ５６，累算器Ｂ８５，インデックスＸレジスタ６０，インデックスＹレジスタ６２，ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８，プログラム・カウンタ７０およびスタック・ポインタ７２は、データおよびアドレス情報を与えるためＢバス７６に結合される。Ａバス７４およびＢバス７６はともに、内部アドレス・バス３６および内部データ・バス３４に双方向的に結合される。
【００２３】
（動作の説明）
本発明の実施例では、加重平均演算を行うために用いられる命令が再開可能な命令として実施される。この場合、加重平均演算を実行するために用いられる命令は、「ＷＡＶ」という簡略記号形式(mnemonic form) を有し、かつ２バイト・オプコード＄１８  ３１を有すると想定する。オプコードの第１バイトは＄１８であり、オプコードの第２バイトは＄３１である。
【００２４】
プログラムすると、ＷＡＶ命令は加重平均を求めるため次式を実行する：
【００２５】
【数１】
2006196013.tif 000003
【００２６】
加重平均の計算中に、数１におけるＢに等しい数の反復(iterations)が実行される。各反復において、第１値Ｓi がＦi と乗ぜられ、積となる。すべてのＢ回の反復の積の和は、最終結果の分子をなすために用いられる。最終結果の分母は、すべてのＦi 値の和に等しい。次に、分子は分母で除せられ、最終的な加重平均値となる。
【００２７】
数１の複雑さの結果、本質的に長い実行時間の命令となる。ＷＡＶ命令が割り込み可能でない場合、反復回数Ｂの７倍と、定数値１０の和に等しい過剰な時間の間、割り込みは処理されない。従って、反復回数が１０に等しい場合、ＷＡＶ命令を完全に実行するためには８０タイミング・サイクルが必要になる。このような遅延は長すぎて、割り込み処理で待つことができない。
【００２８】
さらに、ＷＡＶ命令の長さのため、加重平均演算の実行中に割り込みが発生する可能性が高くなる。従来の構成で行われるように、割り込みが即刻処理され、命令が再初期化され、再実行されると、ＷＡＶ命令を部分的に実行するためにすでに費やされた処理時間は実質的に無駄になる。ＷＡＶ命令は、最初から実行しなければならず、加重平均演算の前回処理された反復は再び実行しなければならない。
【００２９】
しかし、本発明では、ＷＡＶ命令は、加重平均演算の実行中に命令に割り込むことができ、割り込まれたところから後で再開できる。
前に述べたように、本明細書で説明するデータ処理システムは、２つの命令バイト、すなわち＄１８  ３１を利用してＷＡＶ命令を実行する。プログラム・カウンタが＄１８を指すと、第１命令バイトはアクセスされ、データ処理システムにＷＡＶ命令を実行させるために用いられる。割り込みが発生しなければ、ＷＡＶ演算は完全に実行される。しかし、データ処理演算の実行中に割り込みが発生すると、ＷＡＶ演算の結果として算出された中間データがスタック・メモリに格納される。さらに、プログラム・カウンタは、命令の第２バイトである＄３１をアクセスするため、１だけ繰り上げられる。
【００３０】
次に、データ処理システムは割り込みルーチンを実行する。割り込みルーチンを実行した後、繰り上げられたプログラム・カウンタは、ＷＡＶ命令の実行を再開するため、命令の第２命令バイトを指す。ＷＡＶ命令の第２バイトがアクセスされると、命令の再開部分が実行され、データ処理演算の中間結果がスタック・メモリからアクセスされ、データ処理システム内のそれぞれの格納番地に復元される。また、プログラム・カウンタは、命令の第１バイトを指すように１だけ繰り下げられる。中間結果が復元されると、ＷＡＶ命令は、あたかも割り込みが発生しなかったかのように、データ処理演算の実行を継続する。
【００３１】
本明細書で説明するデータ処理システムにより、処理システムのユーザはＷＡＶ命令に割り込み、割り込みルーチンを実行し、そしてサイクル時間を失わずにＷＡＶ命令の実行を完了できる。従来の構成とは異なり、ユーザは、割り込み信号に応答して割り込みルーチンを実行するために、命令が完全に実行されるまで待つ必要がない。また、ユーザは中
間結果を失わない。
【００３２】
本発明の実施例におけるＷＡＶ命令の実行のさらに詳しい説明を以下で行う。本発明の構成の以下の説明では、「アサート(assert)」および「ニゲート(negate)」ならびにそのさまざまな文法上の形式は、「アクティブ・ハイ(active high) 」および「アクティブ・ロー(active low)」論理信号の組合せに伴う混乱を避けるために用いられる。「アサート」は、論理信号またはレジスタ・ビットをアクティブまたは論理真状態にすることを意味する。「ニゲート」は、論理信号またはレジスタ・ビットを非アクティブまたは論理偽状態にすることを意味する。さらに、値の前の「」記号は、この値が１６進数であることを表す。
【００３３】
図１に示すデータ処理システムの動作中、ＷＡＶ命令が実行される前に多くの演算を行わなければならない。数１で用いられる各Ｓi およびＦi 値は、内部メモリ３２などのメモリ番地に格納しなければならない。さらに、複数のＳi 値のうち第１値を格納するメモリ番地のアドレス値は、インデックスＸレジスタ６０に格納される。複数のＦi 値の第１値を格納するメモリ番地のアドレス値は、インデックスＹレジスタ６２に格納される。さらに、データ処理システム１０のユーザは、実行される加重平均演算の反復回数Ｂを指定しなければならない。反復回数は一般に、ＷＡＶ命令の実行の前に累算器Ｂ５８に格納される。値をメモリに格納する動作，値をインデックス・レジスタに格納する動作および値を累算器に格納する動作は、データ処理の技術分野で周知であるので、これらの動作についてさらに詳しく説明しない。
【００３４】
各Ｓi およびＦi 値が内部メモリ３２に格納され、適切な開始アドレス値がインデックスＸレジスタ６０およびインデックスＹレジスタ６２に格納されると、ＷＡＶ命令はデータ処理システム１０のユーザによって与えることができる。ＷＡＶ命令は一般に、内部メモリ３２に格納されるか、あるいは外部バス・インタフェース３０を介して外部ソースから与えられるプログラムの一部である。
【００３５】
ＷＡＶ命令が内部メモリ３２に格納されると、ＷＡＶ命令のオプコード表現が内部データ・バス３４を介してＣＰＵ１２に転送される。本発明の実施例では、オプコード表現は＄１８  ３１に等しい。実行ユニット１４は、マイクロＲＯＭ制御バス６５を介してＷＡＶ命令を命令解読論理１８に渡し、ここでこの命令は解読され、実行ユニット１４において加重平均演算の実行を制御するための複数の制御信号となる。
【００３６】
同様に、ＷＡＶ命令が外部ソースによって与えられると、外部バス・インタフェース３０は、ＷＡＶ命令のオプコード表現を内部データ・バス３４を介してＣＰＵ１２に与える。ここでも、実行ユニット１４はマイクロＲＯＭ制御バス６５を介してＷＡＶ命令を命令解読論理１８に渡し、ここで命令は解読され、加重平均演算の実行を制御するために必要な複数の制御信号となる。
【００３７】
ＷＡＶ命令の開始時に、プログラム・カウンタ７０は、ＷＡＶ命令の第１バイトである１６進数値＄１８のアドレスを保持する。ＷＡＶ命令の実行における第１段階では、各ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８をクリアする必要がある。次に、累算器Ｂ５８の内容、すなわちユーザが必要とする加重平均演算の反復回数は、値１だけ繰り下げられ、この繰り下げられた値は累算器Ｂ５８に格納される。累算器Ｂ５８の内容がゼロに等しい場合、状態コード・レジスタ５４のＺビットがアサートされ、加重平均演算の最後の反復が現在進行中であることを示すことに留意されたい。ただし、加重平均演算を完全に完了するためには、分子と分母を除算しなければならない。
【００３８】
累算器Ｂ５８の内容がゼロに等しくない場合、インデックスＸレジスタ６０は、そこに
格納された第１アドレスをＢバス７６に与える。Ｂバス７６は、この第１アドレスを内部アドレス・バス３６を介して内部メモリ３２に転送する。第１アドレスは、内部メモリ３２に格納された第１Ｓi 値のメモリ番地をアクセスする。次に、内部メモリ３２は、内部データ・バス３４およびＡバス７４の両方を介して、Ｓi 値をＡＬＵ５２の第１入力に与える。  同様に、インデックスＹレジスタ６２は、そこに格納された第２アドレスをＢバス７６に与える。Ｂバス７６は、この第２アドレスを内部アドレス・バス３６を介して内部メモリ３２に転送する。第２アドレスは、内部メモリ３２に格納された第１Ｆi 値のメモリ番地をアクセスする。次に、内部メモリ３２は、内部データ・バス３４およびＢバス７６の両方を介して、Ｆi 値をＡＬＵ５２の第２入力に与える。また、Ｆi 値は、後で用いるためにＴＥＭＰ１  ６４に格納された値に追加される。本発明の実施例では、ＴＥＭＰ１  ６４は、数１の分母を格納するために用いられる１６ビット・レジスタである。
【００３９】
ＡＬＵ５２は、第１Ｓi およびＦi 値を乗算して、第１積を与える。この第１積は、後で用いるためにＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８に追加され、格納される。本発明の実施例では、各ＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８は、数１の分子の部分を格納するために用いられる１６ビット・レジスタである。ＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８は連結され、分子を格納する３２ビット・レジスタとなる。
【００４０】
積が生成され、ＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８に格納され、第１Ｆi 値がＴＥＭＰ１  ６４に格納された後、各インデックスＸレジスタ６０およびインデックスＹレジスタ６２に格納されたアドレスは１だけ繰り上げられる。
【００４１】
次に、加重平均演算は実行を継続する。累算器Ｂ５８の内容は１だけ繰り下げられ、状態コード・レジスタ５４のＺビットは再び調べられ、データ処理システム１０のユーザによって要求された加重平均演算の反復回数が実行されたかどうか判定する。Ｚビットがアサートされると、もう一回乗算・累算反復が実行される。最後の乗算・累算反復が実行されると、ＴＥＭＰ２  ６６およびＴＥＭＰ３６８に格納された分子はＴＥＭＰ１  ６４に格納された分母によって除され、最終的な加重平均値となる。
【００４２】
Ｂ累算器５８が繰り下げられるごとに、ＣＰＵ１２は、データ処理システム１０において割り込み信号がアサートされたかどうか調べる。割り込み信号がアサートされていない場合、インデックスＸレジスタ６０は、第１の繰り上げられたアドレスを、Ｂバス７６および内部アドレス・バス３６を介して内部メモリ３２に与える。繰り上げられたアドレスは、内部メモリ３２に格納された次のＳi ＋１値のメモリ番地をアクセスする。内部メモリ３２は、内部データ・バス３４およびＡバス７４の両方を介して、Ｓi ＋１値をＡＬＵ５２の第１入力に与える。
【００４３】
同様に、インデックスＹレジスタ６２は、そこに格納された第２の繰り上げられたアドレスをＢバス７６および内部アドレス・バス３６を介して内部メモリ３２に与える。この第２アドレスは、内部メモリ３２に格納された次のＦi ＋１値のメモリ番地をアクセスする。次に、内部メモリ３２は、内部データ・バス３４およびＢバス７６の両方を介して、Ｆi ＋１値をＡＬＵ５２の第２入力に与える。
【００４４】
ＡＬＵ５２は、Ｓi ＋１およびＦi ＋１を乗じて、次の積を与える。ＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８の内容は、Ａバス７４を介してＡＬＵ５２に与えられる。ＡＬＵ５２は、ＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８の現在の内容を、Ｓi ＋１とＦi ＋１の積と加算する。この反復計算の結果として生成された分子は、後で用いるためＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８に転送され、格納される。
【００４５】
次に、ＴＥＭＰ１  ６４の内容は、Ｆi ＋１値と加算される。この加算の結果として生
成された分母は、後で用いるためＴＥＭＰ１  ６４に転送され、格納される。分子が生成されＴＥＭＰ２  ６６およびＴＥＭＰ３  ６８に格納され、分母がＴＥＭＰ１  ６４に格納されると、各インデックスＸレジスタ６０およびインデックスＹレジスタ６２に格納されたアドレスは１だけ繰り上げられる。本明細書で説明してきた乗算および累算演算は、Ｚビットが設定されるまで、あるいは割り込み信号が保留になるまで、反復的に実行される。
【００４６】
割り込み信号が保留になると、各ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８に格納された値は、スタック・ポインタ・レジスタ７２に格納されたスタック・ポインタ値によって指された内部メモリ３２内のアドレスに格納される。スタック・ポインタ値は繰り下げられ、ＴＥＭＰ１  ６４に格納された分母は、スタック・ポインタ値によって指されたメモリ番地に格納される。次に、スタック・ポインタ値は繰り下げられ、ＴＥＭＰ２  ６６に格納された分子の第１部分が格納された次のメモリ番地を指す。スタック・ポインタ値は再び繰り下げられ、ＴＥＭＰ３  ６８に格納された分子の第２部分は、繰り下げられたスタック・ポインタ値によって指されたメモリ番地に格納される。次に、プログラム・カウンタは１だけ繰り上げられ、＄１８ではなく＄３１を指す。ＴＥＭＰ１６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８の内容だけでなく、プログラム・カウンタ７０，インデックスＹレジスタ６２，インデックスＸレジスタ６０，累算器Ａ５６，累算器Ｂ５８および状態コード・レジスタ５４の内容も、スタック・ポインタ値によって指定された番地で内部メモリ３２に格納される。
【００４７】
次に、割り込み信号は肯定応答(acknowledge) され、適切な割り込みルーチンに基づいて処理される。このような割り込み処理はデータ処理の技術分野で周知であり、さらに詳しく説明しない。
【００４８】
プログラム・カウンタが＄３１を指すと、ＷＡＶＲという再開可能なＷＡＶ命令がアクセスされる。ＷＡＶＲ命令により、ユーザは、あたかも割り込みが発生しなかったかのようにＷＡＶ命令の処理を再開できる。ＷＡＶＲ命令がアクセスされると、実行ユニット１４はＷＡＶ命令をマイクロＲＯＭ制御バス６５を介して命令解読論理１８に渡す。解読論理１８は、ＷＡＶＲ命令を解読して、実行ユニット１４において再開可能な加重平均演算の実行を制御するための複数の制御信号を与える。
【００４９】
各状態コード・レジスタ５４，累算器Ｂ５８，累算器Ａ５６，インデックスＸレジスタ６０，インデックスＹレジスタ６２およびプログラム・カウンタ７０の内容も、内部メモリ３２から取り出され、実行ユニット内のそれぞれのレジスタに格納される。スタック・ポインタは、内部メモリ３２から分子の第２部分をアクセスするために用いられる。分子の第２部分は、内部データ・バス３４およびＡバス７４を介して転送され、ＴＥＭＰ３  ６８に格納される。次に、スタック・ポインタは、内部メモリ３２から分子の第１部分をアクセスするために繰り上げられる。分子の第１部分は、内部データ・バス３４およびＡバス７４を介して転送され、ＴＥＭＰ２  ６６に格納される。スタック・ポインタは、内部メモリ３２から分母をアクセスするために再び繰り上げられる。分母は、内部データ・バス３４およびＡバス７４によって転送され、ＴＥＭＰ１  ６４に格納される。レジスタの内容をＷＡＶ命令の実行における中間状態に復元することの他に、ＷＡＶＲ命令は、ＷＡＶ命令の第１バイトである＄１８を再び指すように、プログラム・カウンタ値を１だけ繰り下げる。従って、加重平均演算が再び割り込まれると、本明細書で説明する格納・再開動作が適切に実行される。
【００５０】
レジスタが復元され、プログラム・カウンタが繰り上げられると、ＷＡＶ命令の実行は、あたかも割り込みが発生しなかったかのように継続する。オペランドは、インデックスＸレジスタ６０およびインデックスＹレジスタ６２によって指された内部メモリ３２内の
番地からアクセスされ、反復的に用いられ、加重平均演算を実行するために必要な乗算および累算演算を行う。前述のように、乗算および累算反復は、状態コード・レジスタ内のＺビットがアサートされるまで行われる。この時点で、もう一回乗算・累算反復が実行され、分子が分母によって除されて、加重平均値となる。
【００５１】
前述の動作は、図３に示すフローチャートでまとめられる。各ボックス８０〜９０内の数値は、加重平均演算の各部分を実行するために必要なタイミング・サイクルの回数を示すことに留意されたい。
【００５２】
図３において、ボックス８０は、ＷＡＶ命令の開始ポイントである。このポイントで、各ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８の内容が１タイミング・サイクルでクリアされる。ボックス８２において、累算器Ｂ５８の内容が繰り下げられ、内容コード・レジスタ５４のＺビットが更新される。これらのステップは１タイミング・サイクルを必要とする。
【００５３】
ボックス８３において、ＣＰＵ１２は、割り込み保留であるかどうか調べる。割り込み保留でない場合、ＷＡＶ命令の実行は、ボックス８４によって表されるように、メモリからオペランドを読み出す段階，オペランドを乗算し、オペランドを分子および分母として累算する段階で継続する。インデックス・レジスタも、メモリから次のオペランドをアクセスするために繰り上げられる。ボックス８４に示す段階は、７タイミング・サイクルを必要とする。
【００５４】
ボックス８５において、状態コード・レジスタ内のＺビットが調べられる。Ｚビットが設定されていなければ、ＷＡＶ命令の実行の流れは、すべての反復が行われるまで、ボックス８２とボックス８４との間で往復する。
【００５５】
ボックス８６は、ＷＡＶ命令の実行における最後の段階を示す。状態コード・レジスタ５４内のＺビットが設定されると、すべての乗算・累算演算の反復の結果として算出された分子および分母は、６タイミング・サイクルを必要とする処理で除される。
【００５６】
しかし、ボックス８２の段階の実行後に割り込み保留であるとＣＰＵ１２が判断すると、ボックス８８が次にアクセスされる。ボックス８８において、各ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８は、スタック・ポインタ・レジスタ７２に格納されたスタック・ポインタによって指定された番地で内部メモリ３２にスタックされる。ＴＥＭＰ３  ６８，ＴＥＭＰ２  ６６，ＴＥＭＰ１６４の内容を格納する段階は、４タイミング・サイクルを必要とする。
【００５７】
次に、割り込み信号が肯定応答され、割り込みルーチンが実行される。割り込みルーチンの実行後、ＷＡＶ命令の実行を再開するためＷＡＶＲ命令がアクセスされる。ボックス９０に示すように、各ＴＥＭＰ１  ６４，ＴＥＭＰ２  ６６，ＴＥＭＰ３  ６８の内容は、割り込み前の値に復元され、プログラム・カウンタは１だけ繰り下げられる。
【００５８】
図３のフロー図が示すように、ＷＡＶ命令は２回以上割り込み、再開できる。プログラム・カウンタは、ＷＡＶＲ命令が実行された後、ＷＡＶオプコードの第１バイト（＄１８）を指すため復元される。従って、割り込みが発生し、ＷＡＶＲ命令（＄３１）がアクセスされると、プログラム・カウンタは、割り込みが処理された後、かつ乗算・累算反復を開始する前に、値を指すために復元される。よって、別の割り込みがアサートされても、ＷＡＶＲ命令は再びアクセスできる。
【００５９】
本明細書で説明してきたデータ処理システムは、２つの命令バイトを利用して命令を実
行する。プログラム・カウンタがメモリ内の命令のアドレスを指すと、第１命令バイトがアクセスされ、これを用いて、データ処理システムに特定のデータ処理演算を実行させることができる。割り込みが発生しなければ、データ処理演算は完全に実行される。しかし、データ処理演算の実行中に割り込みが発生すると、データ処理演算の結果として算出され、かつ複数の一時レジスタに保持された中間データは、スタック・ポインタ・レジスタ７２に格納された値によって指された番地でスタック・メモリに格納される。さらに、プログラム・カウンタは、命令の第２バイトを指すように１だけ繰り上げられる。
【００６０】
次に、データ処理システムは割り込みルーチンを実行する。割り込みルーチンを実行した後、繰り上げられたプログラム・カウンタは、命令実行を再開するため命令の第２命令バイトを指す。命令の第２バイトがアクセスされると、命令の再開部分が実行され、ここでデータ処理演算の中間結果がスタック・メモリからアクセスされ、データ処理システム内のそれぞれの格納番地に復元される。また、プログラム・カウンタは、命令の第１バイトを指すように、１だけ繰り下げられる。中間結果が復元されると、命令は、あたかも割り込みが発生しなかったかのようにデータ処理演算の実行を継続する。
【００６１】
本データ処理システムにより、処理システムのユーザは命令に割り込み、割り込みルーチンを実行し、サイクル時間を失わずに命令の実行を完了することができる。従来の構成とは異なり、ユーザは、割り込み信号に応答して割り込みルーチンを実行するため、命令が完全に実行されるまで待つ必要がない。また、ユーザは中間結果を失わない。
【００６２】
本明細書で説明した発明の構成は一例にすぎない。ここで説明した機能を実行するための多くの他の構成も存在する。例えば、本発明の実施例は、ＷＡＶ、すなわち加重平均命令に限定されない。多くの他の命令も、割り込み後に命令実行の再開を可能にする２バイト命令符号化を利用して実行できる。概して、本発明は、実行時間が長く、初期化が多数のタイミング・サイクルを必要とするような命令で最も有効である。
【００６３】
本明細書で説明してきた概念を他の命令に適用するだけでなく、説明してきた実施例は、データ処理システム１０および実行ユニット１４を構築する上で別の回路も利用できる。さらに、説明してきた再開可能な命令は２バイト長以上でもよい。命令実行に対して複数の入力を与えるため、多重バイトも利用できる。
【００６４】
以上、本発明の原理について説明してきたが、この説明は一例にすぎず、本発明を制限するものではないことは当業者に明らかである。よって、特許請求の範囲は、本発明の真の精神および範囲内の一切の修正を網羅するものとする。
【図面の簡単な説明】
【００６５】
【図１】本発明によるデータ処理システムの実施例を示すブロック図。
【図２】図１のデータ処理システムの実行ユニットを示すブロック図。
【図３】図１のデータ処理システムにおける再開可能な命令の実行フローを示すフローチャート。
【符号の説明】
【００６６】
１０…データ処理システム、１２…中央処理ユニット、１４…実行ユニット、１６…バス制御論理回路、１８…命令解読論理回路、２０…制御ユニット、２２…シーケンサ、２４…発振器、２６…電力回路、２８…タイミング回路、３０…外部バス・インタフェース、３２…内部メモリ、３３…外部データ・バス、３４…内部データ・バス、３５…外部アドレス・バス、３６…内部アドレス・バス、３８…タイミング制御バス、５２…演算論理ユニット（ＡＬＵ）、５４…状態コード・レジスタ（ＣＣＲ）、５６…累算器Ａ（ＡＣＣＡ）、５８…累算器Ｂ（ＡＣＣＢ）、６０…インデックスＸレジスタ、６２…インデックス
Ｙレジスタ、６４…第１一時レジスタ（ＴＥＭＰ１）、６５…マイクロＲＯＭ制御バス、６６…第２一時レジスタ（ＴＥＭＰ２）、６８…第３一時レジスタ（ＴＥＭＰ３）、７０…プログラム・カウンタ、７２…スタック・ポインタ、７４…Ａバス、７６…Ｂバス。
【図１】
2006196013.tif 000004
【図２】
2006196013.tif 000005
【図３】
2006196013.tif 000006