JP3766772B2 - Information processing apparatus, exception recovery processing method, and recording medium - Google Patents

Information processing apparatus, exception recovery processing method, and recording medium Download PDF

Info

Publication number
JP3766772B2
JP3766772B2 JP33607099A JP33607099A JP3766772B2 JP 3766772 B2 JP3766772 B2 JP 3766772B2 JP 33607099 A JP33607099 A JP 33607099A JP 33607099 A JP33607099 A JP 33607099A JP 3766772 B2 JP3766772 B2 JP 3766772B2
Authority
JP
Japan
Prior art keywords
instruction
exception
causing
address
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP33607099A
Other languages
Japanese (ja)
Other versions
JP2001154843A (en
Inventor
泰基 中村
英雄 三宅
敦浩 須賀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP33607099A priority Critical patent/JP3766772B2/en
Publication of JP2001154843A publication Critical patent/JP2001154843A/en
Application granted granted Critical
Publication of JP3766772B2 publication Critical patent/JP3766772B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は情報処理装置、例外回復処理方法および記録媒体に関し、特に、通常の処理の最中に発生した誤りや例外的な条件に対処するための例外回復処理の動作を制御する装置および方法に用いて好適なものである。
【0002】
【従来の技術】
現在の計算機システムには、プログラムを実行する上で何らかの誤りが発生した場合、あるいは例外的な条件に合致したような場合、本来のプログラムとは別の処理を行い、発生した問題を解消してから本来のプログラムに戻って処理を続行するという機能が備えられている。一般に、誤りが発生したこと等を例外が発生したと言い、問題解消のための処理を例外回復処理と言う。
【0003】
通常の処理の最中に例外が発生すると、本来のプログラムとは別の例外ハンドラと呼ばれる処理プログラムにプロセッサの制御が移る。例外ハンドラの中では、例外の原因となった問題を処理して解消し、その後本来のプログラムを再開するというような例外回復の処理を行う。
【0004】
図7は、従来の例外ハンドラの動作を示すフローチャートである。通常の処理の最中に例外が発生すると、プロセッサは、例外発生時のプログラムカウンタの値、プロセッサの状態、発生した例外の要因等の情報をレジスタに書き込むことにより、例外発生前のプロセッサの動作情報を退避させる。そして、プロセッサはユーザ状態からスーパバイザ状態(特権状態)に遷移し、通常のアプリケーション・プログラムから図7のような例外ハンドラに処理を移行する。
【0005】
図7において、ステップS21では、例外発生時にレジスタに記憶した例外発生の要因等の情報をもとに、例外要因を解消する処理を行う。そして、例外要因の解消が完了すると、ステップS22に進み、例外発生時にレジスタに退避しておいたプログラムカウンタの値をもとに、通常のアプリケーション・プログラム上で例外が発生した元の命令(例外起因命令)に復帰する。
【0006】
例えば、図8に示すプログラム中のロード命令(2: ld )でMMU(Memory Management Unit)のメモリアクセスに関する例外が発生したとする。この場合は、このプログラム中のロード命令(2: ld )から例外ハンドラの処理プログラムに移って図7のような処理を行う。そして、例外発生の要因となった問題を解消したら、例外起因命令である元のロード命令(2: ld )に戻って元のプログラムの処理を再開することにより、例外からの回復を実現する。
【0007】
また、近年におけるプロセッサのマイクロアーキテクチャでは、プロセッサの処理性能の向上を図るために、時間方向の並列化(例えばパイプライン方式)や、空間方向の並列化(例えばスーパースカラプロセッサ)といった手法を採用することが行われる。図9に、上記図8のプログラムをパイプライン動作させた場合の処理の様子を示す。
【0008】
上記パイプライン動作を表す図9の例において、D は命令デコードのステージ、E は演算実行のステージ、C はメモリアクセスのステージ、W はレジスタへの書き込みのステージを意味する。上記図9の例では、1つの命令のデコード処理が終了した時点で次の命令のデコード処理を直ちに開始することにより、パイプライン動作を実現している。
【0009】
【発明が解決しようとする課題】
プロセッサがパイプライン動作を行っている場合、1つの命令を実行してその結果をレジスタに書き込むまでの時間が各命令ごとに異なっていると、命令の完了順序がプログラム順となるように保証することは難しくなる。すなわち、図9の例では、2行目のロード命令(2: ld )はその処理に DECCWの5ステージ必要であるのに対し、3行目の減算命令(3: sub)は DEWの3ステージで処理が終了し、ロード命令の方が長い処理時間を必要とする。そのため、2行目のロード命令よりも3行目の減算命令の方が早く処理が完了することとなる。
【0010】
このようなパイプライン動作をしている際に、例えば2行目のロード命令(2: ld )中の書き込みステージで例外が発生したとする。この場合、例外起因命令であるロード命令の次の減算命令(3: sub)については、例外が発生する前の時点でレジスタへの書き込みが終わっており、当該減算命令の実行が既に完了している。この場合に、図7に示したフローに従って例外回復処理を行うと、例外回復処理から復帰したロード命令(2: ld )の処理後に、既に完了している減算命令(3: sub)を再び実行してしまうことになる。
【0011】
このような不都合を解消するために、パイプライン動作を行っていてもプログラム上の完了順序を保証するような機構をハードウェアで実現することが考えられる。例えば、処理の結果が早く出てくる命令については実行開始のタイミングを遅らせるなどの手法を採用することにより、命令完了順序がプログラム順となることを保証することが可能となり、例外回復処理からの復帰時に既に実行済の命令を再実行してしまう不都合を防止することができる。
【0012】
しかしながら、このような手法では、命令の実行サイクル数を増やすことになるため、プロセッサの性能面でペナルティとなる。また、命令の完了順序を保証するためにハードウェア的な機構を設けると、例外回復のための機構が複雑になり、回路規模の増大を招いてしまう。一般に例外の発生頻度は低いため、例外回復機構に過剰なハードウェア資源を投入するのは不経済である。したがって、高性能が求められる現在のプロセッサでは、各命令の完了順序をハードウェアで保証することは行わないことが多い。
【0013】
これに対し、例外回復処理からの復帰時に既に実行済の命令を再実行してしまう不都合をソフトウェアの機能により防止するようにしたものが提案されている。これは、上記図9の例で言えば、例外回復処理から正しく復帰するために、例外が発生した2行目のロード命令(2: ld )に関して例外の要因を除去した後、元のプログラムに復帰してロード命令(2: ld )を実行し、その後、既に実行済である3行目の減算命令(3: sub)は飛ばして4行目の加算命令(4: add)から処理を再開させるものである。
【0014】
図10は、プログラム順に命令が完了しない場合の例外ハンドラの動作を示すフローチャートである。この場合は、通常の処理の最中に例外が発生すると、プロセッサは、例外発生時のプログラムカウンタの値、例外起因命令より後で最初にくる実行未完了の命令(図9の例では、4行目の加算命令(4: add))のアドレス、プロセッサの状態、発生した例外の要因等の情報をレジスタに書き込むことにより、例外発生前のプロセッサの動作情報を退避させる。そして、プロセッサはユーザ状態からスーパバイザ状態に遷移し、通常のアプリケーション・プログラムから図10のような例外ハンドラに処理を移行する。
【0015】
図10において、ステップS31では、例外発生時にレジスタに記憶した例外発生の要因等の情報をもとに、例外要因を解消する処理を行う。そして、例外要因の解消が完了すると、ステップS32に進み、例外発生時にレジスタに退避しておいたプログラムカウンタの値をもとに、例外起因命令をメモリ上から読み出して実行する。その後、ステップS33に進み、例外発生時にレジスタに退避しておいた実行未完了命令のアドレスをもとに、未完了の命令から元のアプリケーション・プログラムの処理に復帰する。
【0016】
このように、例外回復処理から復帰する際には、例外の要因を除去した後に、元のプログラムの処理を再開する前に何らかの方法で例外起因命令だけを実行させる処理を行う必要がある。従来、これを実現するために、以下のような方法を採用してきた。
(1) 実行する例外起因命令を解析し、あらかじめ用意した複数の命令列により命令をエミュレーションする方法。
(2) 例外ハンドラの命令シーケンスの中に命令を差し替えるための領域を用意しておき、そこに実行したい例外起因命令をコピーし、コピーした命令を実行することによって例外起因命令を実行するという自己改変コードによる方法。
【0017】
図11は、命令のエミュレーションにより単一の例外起因命令を再実行させる処理を示すフローチャートである。図11において、ステップS41では、例外発生時に退避しておいたプログラムカウンタの値をもとに、例外起因命令をメモリ上から取得する。そして、ステップS42で、その取得した例外起因命令を解析し、その解析結果に応じてステップS43-1〜S43-nの何れかのエミュレーションの処理を実行する。
【0018】
例えば、ステップS43-1の処理は、メモリ上からレジスタにデータを1バイト読み込む処理を示す。また、ステップS43-2の処理は、メモリ上からレジスタにデータを2バイト読み込む処理を示し、ステップS43-3の処理は、メモリ上からレジスタにデータを4バイト読み込む処理を示す。なお、この図11では、各命令別のエミュレーションの例として、データのロード命令およびストア命令のみを示しているが、実際には加減算、乗除算などの演算命令なども用意されており、命令語の解析結果に応じて適切なものが選ばれて実行される。
【0019】
図12は、自己改変コードにより単一の例外起因命令を再実行させる処理を示すフローチャートである。図12において、ステップS51では、例外発生時に退避しておいたプログラムカウンタの値をもとに、例外起因命令をメモリ上から取得する。そして、ステップS52で、その取得した例外起因命令を、メモリ上に例外ハンドラとは別にあらかじめ用意された記憶領域にロード・ストア命令を使ってコピーする。
【0020】
次に、ステップS53では、キャッシュメモリのフラッシュおよび無効化の処理を行う。キャッシュのフラッシュとは、データ用キャッシュメモリに格納されているデータをメインメモリ上に反映する処理を言い、キャッシュの無効化とは、命令用キャッシュメモリに格納されている命令を無効にする処理を言う。
【0021】
このようなキャッシュのフラッシュおよび無効化の処理を行うことにより、メインメモリ上の記憶領域にコピーを行う前の命令がキャッシュメモリから読み出されて実行されることを防ぎ、コピーした例外起因命令を上記メインメモリの記憶領域から読み出して実行することが可能となる。
【0022】
上記ステップS53の処理後のステップS54では、例外起因命令のコピー先の記憶領域に処理を移し、ステップS55でその例外起因命令を実行する。上記コピー先の記憶領域においては、この例外起因命令の直後には復帰命令が記憶されており、例外起因命令の実行後には、ステップS56で元の例外ハンドラの処理に直ちに戻る。これにより、図10のステップS33へと処理が進み、既に実行済の命令は飛ばして実行未完了の命令から処理が再開する。
【0023】
しかしながら、命令をエミュレーションする方法では、命令を解析してエミュレーションするためには多くの命令が必要であり、そのため例外回復の実行時間が長くなってしてしまうとともに、コードサイズが大きくなってしまうという問題があった。また、例外を発生する全ての命令をエミュレーションできるようにしなければならないため、例外ハンドラのコードサイズが膨大になってしまうという問題もあった。
【0024】
また、自己改変コードを用いる方法では、現在の計算機システムの多くはキャッシュメモリを用いているため、自己改変コードを用いるためにはキャッシュのフラッシュおよび無効化の操作が必要となる。しかし、これらの処理には多くの実行時間を必要とするため、例外回復の処理速度が低下してしまうという問題があった。また、キャッシュの無効化を行うと、元のプログラムシーケンスでキャッシュされている命令も無効にされてしまうため、元のプログラムを実行する際のキャッシュ性能が低下してしまい、全体としての処理速度も低下してしまうという問題があった。
【0025】
本発明は、パイプライン動作を行うプロセッサを用いた計算機システムにおいて、特に各命令の完了がプログラムの実行順序とは異なる場合に、正しい例外回復の処理をハードウェアで実現しようとすると回路規模の増大や動作周波数向上の阻害要因を招き、ソフトウェアで実現しようとすると処理速度が低下するという従来の問題を解決するために成されたものであり、少ないハードウェアで例外回復の処理速度の向上を図ることを目的とする。
【0026】
【課題を解決するための手段】
本発明の情報処理装置は、例外が発生したときに、その例外起因命令の命令語および例外が発生したことにより実行が途中で中断された実行未完了命令の少なくとも一方の命令語あるいは命令アドレスを保持する手段を備える。さらに、例外回復処理から通常の処理に復帰する際の処理として、例外起因命令や実行未完了命令の再実行が必要になったときに、再実行命令を実行することにより、例外発生時に保持しておいた命令語、あるいは保持しておいた命令アドレスに存在する命令語に従って処理を実行する手段を備える。
また、上記再実行命令は、例外回復処理のための命令シーケンス中に含まれるようにしても良い。
【0027】
本発明は上記技術手段より成るので、例外回復処理から通常の処理に復帰する際に必要な再実行のための処理を、1つの再実行命令を実行するだけで実現することが可能となり、各命令別のエミュレーションをあらかじめ用意しておき、命令語を解釈して何れかのエミュレーションを選択的に実行したり、キャッシュのフラッシュおよび無効化の操作を実行したりするなどの複雑な処理は必要がなくなる。
【0028】
また、本発明の他の特徴によれば、例外起因命令を再実行するにあたって、例外回復処理の命令シーケンス通りに命令を順次処理し、その中に書かれた再実行命令を単に実行すれば良いので、再実行する例外起因命令が格納された別の記憶領域のアドレス値にプログラム・カウンタの値を書き換える必要がなく、また、当該別領域へのアクセスを行うことなく例外起因命令を再実行することが可能となる。
【0029】
【発明の実施の形態】
以下に、本発明の一実施形態を図面に基づいて説明する。
(第1の実施形態)
図1は、第1の実施形態による例外回復処理方法を適用したプロセッサ(情報処理装置)の一構成例を示すブロック図である。
図1において、10はメモリであり、アプリケーション・プログラムや例外ハンドラ等のプログラムを格納している。20は命令フェッチ部、30は命令解析実行制御部、40はALU(演算論理装置)等の命令実行部、50はレジスタ部である。
【0030】
上記命令フェッチ部20は、プログラム・カウンタ21と、命令レジスタ22と、セレクタ23とを備える。この命令フェッチ部20は、例外が発生していない通常処理および例外回復処理の実行中では、プログラム・カウンタ21が示す命令アドレスに基づいてメモリ10から命令語を1つずつ読み出し、それをセレクタ23を介して命令レジスタ22に一旦格納した後、命令解析実行制御部30に供給する。一方、例外回復処理から元の通常処理に復帰する際には、レジスタ部50から供給される例外起因命令の命令語をセレクタ23で選択し、それを命令レジスタ22を解して命令解析実行制御部30に供給する。
【0031】
命令フェッチ部20は、命令解析実行制御部30より分岐先の命令アドレスが供給されたとき、あるいは例外発生に対応して例外ハンドラの先頭アドレスが供給されたときには、その供給された命令アドレスをプログラム・カウンタ21に書き込む。それ以外の場合は、次の命令語を順次読み出すべくプログラム・カウンタ21の値をインクリメントする。
【0032】
命令解析実行制御部30は、命令フェッチ部20から供給された命令語の解析を行うデコーダ31と、命令語の解析結果に応じて例外回復処理を制御する例外処理制御部32と、同じく命令語の解析結果に応じて命令実行部40を制御する実行制御部33とを備える。このうち、実行制御部33は、命令フェッチ部20から供給されデコーダ31で解析された命令語の指示に従って命令実行部40を制御し、演算、分岐、データのロード/ストア等の各種処理を実行する。
【0033】
例えば、供給された命令語が演算命令であったときは、命令実行部40は実行制御部33からの制御に基づき、指定されたアドレスに従ってメモリ10から読み出したデータ値、あるいはレジスタ部50内の図示しない汎用レジスタから読み出したデータ値に基づいて演算を実行する。また、供給された命令語が分岐命令であって、分岐条件が成立したときには、実行制御部33は、分岐先の命令アドレスを命令フェッチ部20に供給する。
【0034】
また、供給された命令語がロード命令あるいはストア命令であったときには、実行制御部33は命令実行部40を制御し、メモリ10上の指定されたアドレスに対応した記憶領域に対して、データの読み出し、あるいはデータ(レジスタ部50内の図示しない汎用レジスタのデータ等)の書き込みを行う。
【0035】
また、例外処理制御部32は、上記命令実行部40での演算実行の過程で何らかの問題等(例えば、ゼロによる除算、データオーバーフロー等のエラー)が発生すると、その通知を受けて命令フェッチ部20、命令実行部40、レジスタ50を制御し、例外回復処理を実行する。
【0036】
すなわち、例外処理制御部32は、例外発生を検出すると、検出した例外の内容に対応する例外ハンドラの先頭アドレスを命令フェッチ部20に供給し、そのアドレスをプログラム・カウンタ21にセットする。また、命令キャンセル等の指示を命令実行部40に発行するとともに、レジスタ部50内の各レジスタ51〜54に以下に述べる情報を書き込む処理を行う。その後、プロセッサはユーザ状態からスーパバイザ状態に遷移し、プログラム・カウンタ21にセットされた例外ハンドラの命令アドレスに従って例外回復処理を実行する。
【0037】
上記レジスタ部50は、命令実行部40の演算などに使用するデータを保持する図示しない汎用レジスタと、以下に述べる例外回復処理に使用するデータを保持するレジスタ51〜54とを含み、命令フェッチ部20、命令解析実行制御部30、命令実行部40からこれらのレジスタに対してデータの読み出しあるいは書き込みが行われる。なお、命令実行部40とレジスタ部50との間のデータのやり取りは一般的なものであるため、ここでは図示を省略している。以下に、例外回復処理用のレジスタ51〜54について説明する。
【0038】
例外命令語レジスタ51は、例外が発生したときに、その例外起因命令の命令語を保持するためのレジスタである。状態レジスタ52は、例外発生前のプロセッサの状態(ユーザ状態、スーパバイザ状態など)を保持するレジスタである。要因レジスタ53は、発生した例外の要因を保持するレジスタである。また、復帰アドレスレジスタ54は、例外回復処理から復帰する元のプログラム中の命令アドレスを保持するレジスタであり、例外起因命令より後で最初にくる実行未完了命令のアドレスがここに格納される。これらのレジスタ51〜54の値は何れも例外発生時に設定される。
【0039】
また、上記例外処理制御部32は、例外回復処理の実行中は、順次インクリメントされるプログラム・カウンタ21に従ってメモリ10から読み出され、デコーダ31で解釈された例外ハンドラの命令が、例外ハンドラの途中(例外の回復処理が終了する部分)に組み込まれた本実施形態に特有の命令再実行命令(以下では、これをREI命令と称する)かどうかを判断する。
【0040】
そして、メモリ10から読み出された命令がREI命令であると判断したときは、命令フェッチ部20内のセレクタ23の選択状態をA側に切り替えることにより、例外命令語レジスタ51から読み出した例外起因命令を選択するように制御する。この例外起因命令を実行した後は、セレクタ23の選択状態をB側に戻すことにより、例外ハンドラの残りの処理(元のプログラムへの復帰処理)を実行する。
【0041】
すなわち、上記例外起因命令を実行した後に例外処理制御部32は、状態レジスタ52の値に基づいてプロセッサの状態を元のユーザ状態に遷移させるとともに、例外回復処理から復帰する元のプログラム中の命令アドレスを復帰アドレスレジスタ54から読み出し、命令フェッチ部20のプログラム・カウンタ21にセットする。これにより命令フェッチ部20は、プログラム・カウンタ21にセットされた命令アドレスに基づいて、元のプログラムの命令語をメモリ10から順次読み出し、命令解析実行制御部30で実行することになる。
【0042】
次に、図1に示すプロセッサの動作を、図9に示すようにプログラムをパイプライン動作させた場合を例にとって説明する。
例外が発生していないユーザ状態にあるとき、命令フェッチ部20は、プログラム・カウンタ21により示される命令アドレスに基づき、メモリ10からプログラムの命令語を読み出し、読み出した命令語をセレクタ23および命令レジスタ22を介して命令解析実行制御部30に供給する。
【0043】
命令解析実行制御部30は、供給された命令語をデコーダ31で解釈し、その命令の指示に従って実行制御部33が命令実行部40を制御することによって、プログラムの処理を実行する。このユーザ状態で例外が発生しなければ、プロセッサは以上の動作をパイプライン処理により繰り返し行う。しかし、命令解析実行制御部30が例外の発生を検出すると、命令解析実行制御部30内の例外処理制御部32は、命令フェッチ部20およびレジスタ部50を制御して以下のような例外回復処理を行う。
【0044】
まず、例外処理制御部32は、例外が発生したときの例外起因命令を例外命令語レジスタ51に格納する。図9の例では、2行目のロード命令(2: ld )で例外が発生しているため、このロード命令の命令語を例外起因命令として例外命令語レジスタ51に格納する。また、例外処理制御部32は、例外発生前のプロセッサの状態を状態レジスタ52に格納するとともに、発生した例外の要因を要因レジスタ53に格納する。
【0045】
さらに、例外処理制御部32は、例外回復処理から復帰する元のプログラム中の命令アドレスとして、例外起因命令より後で最初にくる実行未完了命令のアドレスを復帰アドレスレジスタ54に格納する。図9の例では、2行目のロード命令(2: ld )の書き込みステージで例外が発生したときに、次の3行目の減算命令(3: sub)は既に実行が完了しており、更にその次の4行目の加算命令(4: add)はまだ処理を完了していない。したがって、この4行目の加算命令のアドレスを復帰アドレスレジスタ54に格納する。
【0046】
次に、例外処理制御部32は、発生した例外に対応する例外ハンドラの先頭アドレスを命令フェッチ部20に供給し、その値をプログラム・カウンタ21にセットする。以上の処理を経て、プロセッサはユーザ状態からスーパバイザ状態に遷移する。スーパバイザ状態に遷移したプロセッサは、プログラム・カウンタ21にセットされた例外ハンドラの先頭アドレスに従って、当該例外ハンドラの命令語を命令フェッチ部20に読み出し、読み出した命令語をセレクタ23および命令レジスタ22を介して命令解析実行制御部30に供給する。
【0047】
命令解析実行制御部30は、例外ハンドラの処理途中でREI命令が発生しない限り、例外ハンドラの最終アドレスに向かって順次供給される命令語を実行するという動作を繰り返す。しかし、この例外ハンドラの動作中に、例外要因の解消が終わってメモリ10からREI命令が読み出されると、例外処理制御部32はそのREI命令を実行するように制御する。
【0048】
すなわち、例外処理制御部32は、セレクタ23の選択状態をB側からA側に切り替えることにより、例外発生時に例外命令語レジスタ51に保持しておいた例外起因命令(ロード命令(2: ld ))をセレクタ23で選択し、それを命令レジスタ22を介して命令解析実行制御部30に供給するようにする。これにより、命令実行部40は、供給された例外起因命令を命令解析実行制御部30の制御に基づき実行する。
【0049】
そして、このようにREI命令に基づき例外起因命令を実行した後は、例外処理制御部32は、セレクタ23の選択状態をB側に戻すことにより、例外ハンドラの残りの処理(ユーザ状態への復帰処理)を実行するようにする。つまり、上記例外起因命令の処理が完了すると、命令解析実行制御部30は、メモリ10から読み出される例外ハンドラの例外復帰命令を実行する。
【0050】
このとき命令解析実行制御部30は、例外回復処理から復帰する元のプログラム中の命令アドレス(加算命令(4: add))を復帰アドレスレジスタ54から読み出し、それをプログラム・カウンタ21にセットする。命令フェッチ部20は、プログラム・カウンタ21にセットされた命令アドレスに基づいて、通常動作時の命令語をメモリ10から読み出し、命令解析実行制御部30に供給する。これにより、プロセッサはスーパバイザ状態からユーザ状態に遷移し、命令実行部40が通常動作に対応したプログラムの残りの処理を実行することになる。
【0051】
このような動作により、例外の発生に対応して例外ハンドラで例外の回復を行った後に、1つの例外起因命令(ロード命令(2: ld ))だけを実行し、既に実行済の減算命令(3: sub)は飛ばして次の未実行の加算命令(4: add)から処理を再開することができるようになる。すなわち、図10に示したフローチャートのように、ステップS31で例外要因を解消した後、ステップS32で例外起因命令だけを実行し、ステップS33で未完了の命令から元のプログラムの処理に復帰することが可能となる。
【0052】
図2は、上記ステップS32で単一の例外起因命令を再実行させる本実施形態の処理を示すフローチャートである。図2に示すように、本実施形態では、例外ハンドラの先頭アドレスから順次インクリメントされるプログラム・カウンタ21の値に従ってREI命令がメモリ10から読み出されたときに、そのREI命令をステップS1で実行するだけで良い。
【0053】
以上詳しく説明したように、本実施形態によれば、例外ハンドラから元のプログラムの処理に復帰する際に例外起因命令だけを実行するための処理を、例外ハンドラの中に組み込んだ1つのREI命令を実行するだけで実現することができる。これにより、図11に示したように各命令別のエミュレーションをあらかじめ用意しておき、命令語を解釈して何れかのエミュレーションを選択的に実行したり、図12に示したようにキャッシュのフラッシュおよび無効化の操作を実行したりする必要がなくなる。
【0054】
また、本実施形態では、例外起因命令を再実行するにあたって、例外ハンドラのシーケンス通りに命令を順次処理し、その中に書かれたREI命令を単に実行すれば良いので、図12のフローチャートのように、再実行する例外起因命令をコピーしたメモリ10上の別領域のアドレス値にプログラム・カウンタ21の値を書き換える必要がなく、また、当該別領域へのアクセスを行うことなく例外起因命令を再実行することができる。
【0055】
これにより、従来に比べて極めて簡単な処理で例外起因命令の再実行を実現することができ、例外回復の処理速度を向上させることができるとともに、例外ハンドラのコードサイズを小さくすることができる。
【0056】
さらに、プログラム・カウンタ21の値を再実行する命令のアドレスに書き換えていないため、REI命令に基づき例外起因命令の動作が完了した後は、そのREI命令の次に記述された命令を続いて行えば良く、元のプログラムの実行の継続性を維持することができる。また、キャッシュの無効化も不要であるため、元のプログラムを実行する際のキャッシュ性能の低下を防止することもできる。
【0057】
また、本実施形態によれば、上記REI命令に基づき例外起因命令だけを実行する機能は、例外命令語レジスタ51およびセレクタ23という少ないハードウェア資源を追加するだけで実現することができる。また、制御的にも、例外発生時における上記例外命令語レジスタ51への例外起因命令の書き込み、REI命令実行時における上記例外命令語レジスタ51からの例外起因命令の読み出しおよび命令フェッチ部20への転送という少ない手順を追加するだけで良い。
【0058】
(第2の実施形態)
図3は、第2の実施形態による例外回復処理方法を適用したプロセッサ(情報処理装置)の一構成例を示すブロック図である。なお、図3において、図1に示した符号と同一の符号を付したものは、同一の機能を有するものであるので、これについての詳細な説明は省略する。
【0059】
図3に示すように、第2の実施形態では、図1に示す第1の実施形態で用いていた例外命令語レジスタ51の代わりに、例外が発生した例外起因命令の命令アドレスを保持するための例外命令アドレスレジスタ55を設ける。また、命令語の選択を行うセレクタ23の代わりに、命令アドレスの選択を行うセレクタ24を設ける。セレクタ24は、例外ハンドラの中でREI命令が実行されるとき以外はB側を選択し、REI命令の実行時にはA側を選択する。
【0060】
本実施形態において、命令解析実行制御部30により例外の発生が検出されたときは、例外処理制御部32からの通知に基づいて、命令フェッチ部20が例外起因命令の命令アドレス(例外発生時にプログラム・カウンタ21にセットされていた値)を例外命令アドレスレジスタ55に格納する。その後、例外処理制御部32から供給され、プログラム・カウンタ21に新たにセットされた例外ハンドラの命令アドレスに従い、例外処理制御部32が例外回復処理を実行する。
【0061】
また、本実施形態において、例外ハンドラの動作中に、例外要因の解消が終わってメモリ10からREI命令が読み出されると、例外処理制御部32は、セレクタ24の選択状態をB側からA側に切り替える。これにより、例外発生時に例外命令アドレスレジスタ55に保持しておいた例外起因命令の命令アドレスをメモリ10に供給し、対応するアドレスから例外起因命令の命令語を読み出して命令フェッチ部20に供給するようにする。
【0062】
そして、命令フェッチ部20は、メモリ10から読み出された例外起因命令の命令語を命令解析実行制御部30に供給する。これにより、命令解析実行制御部30は、命令実行部40を制御して上記供給された例外起因命令を実行する。そして、この例外起因命令を実行した後は、例外処理制御部32は、セレクタ24の選択状態をB側に戻すことにより、例外ハンドラの残りの処理(ユーザ状態への復帰処理)を実行するようにする。
【0063】
このように構成した第2の実施形態においても、第1の実施形態と同様の効果を得ることができる。
【0064】
(第3の実施形態)
図4は、第3の実施形態による例外回復処理方法を適用したプロセッサの一構成例を示すブロック図である。なお、図4において、図1に示した符号と同一の符号を付したものは、同一の機能を有するものであるので、これについての詳細な説明は省略する。
【0065】
図4に示すように、第3の実施形態では、図1に示す第1の実施形態で用いていた例外命令語レジスタ51の代わりに、例外が発生した例外起因命令の命令語に加え、例外が発生したことにより実行が最後まで完了しなかった実行未完了命令の命令語を保持するための命令語レジスタ56を設ける。
【0066】
このように構成した第3の実施形態は、例えば、図5に示すようにパイプライン動作を行っている場合に有効である。すなわち、近年のプロセッサでは、処理の更なる高速化を図るために、図5のように複数の命令を同時に実行することが多い。この図5の例では、2つの命令を同時に実行している。
【0067】
このようなパイプライン動作を行った場合、1つの命令を実行してその結果が出るまでの時間が各命令ごとに異なっていると、例外が発生したときに、実行が完了していない命令と実行が完了した命令の順序がまだら状になる場合がある。図5の例では、3行目のロード命令(3: ld )の書き込みステージで例外が発生したときに、4行目の減算命令(4: sub)と6行目の加算命令(6: add)は実行を完了しているが、その間の5行目の除算命令(5: div)は実行がまだ完了していない状態となっている。
【0068】
このような場合は、例外回復処理からの復帰の際に、例外起因命令であるロード命令(3: ld )の再実行に加えて、実行が未完了の除算命令(5: div)の再実行を行った後、7行目の加算命令(7: add)から元のプログラムの実行を再開するという手順が必要である。そのために、本実施形態では、例外が発生したときに、例外起因命令の命令語だけでなく、実行未完了命令の命令語も命令語レジスタ56に格納しておくようにする。
【0069】
本実施形態における例外ハンドラの処理フローは、図6に示すようになる。図6において、ステップS11では、例外要因を解消する処理を行う。そして、例外要因が解消され、REI命令がメモリ10から読み出されると、ステップS12で、例外発生時に命令語レジスタ56に格納しておいた例外起因命令の命令語をセレクタ23で選択し、この例外起因命令を実行する。
【0070】
さらに、例外起因命令の実行後にはステップS13に進み、例外発生時に上記命令語レジスタ56に格納しておいた実行未完了命令の命令語を上記例外起因命令に続けてセレクタ23で選択し、この実行未完了命令を実行する。そして、ステップS14で、上記命令語レジスタ56内にまだ処理していない実行未完了命令の命令語が存在するか否かを判断し、存在する場合はステップS13に戻って同様の処理を繰り返す。上記ステップS12の処理を開始してからステップS13、S14のループを抜けるまでは、命令フェッチ部20のセレクタ23は、A側を選択する。
【0071】
その後、上記命令語レジスタ56内に格納されている実行未完了命令の命令語を全て処理した場合は、ステップS15に進み、例外発生時に復帰アドレスレジスタ54に退避しておいた命令アドレスをもとに、実行未完了の命令から元のプログラムの処理に復帰する。このとき、セレクタ23は、選択状態をB側に切り替える。
【0072】
以上説明したように、第3の実施形態によれば、第1の実施形態で説明した効果に加えて、例外が発生したときに、実行が完了していない実行未完了命令と、実行が完了した実行完了命令の順序がまだら状になる場合であっても、例外回復処理からの復帰時に再実行が必要な命令だけを簡単な処理で実行することが可能となるというメリットを有する。
【0073】
なお、この第3の実施形態では、命令語レジスタ56に例外起因命令の命令語と実行未完了命令の命令語とを格納するようにしているが、実行未完了命令の命令語のみを格納するようにしても良い。例えば、浮動小数点データを処理する機能を持たないプロセッサで浮動小数点に関する演算命令を実行した場合には例外が発生するが、その例外回復処理を行った後に例外起因命令に戻っても、また同じ例外が発生することになる。このような場合に、命令語レジスタ56に実行未完了命令の命令語のみを格納しておけば、例外起因命令も飛ばして次の実行未完了命令から処理に復帰することが可能となる。
【0074】
また、上記第3の実施形態では、命令語レジスタ56に例外起因命令の命令語と実行未完了命令の命令語とを格納するようにしているが、第2の実施形態のように、例外起因命令の命令アドレスと実行未完了命令の命令アドレスとを格納する命令アドレスレジスタを命令語レジスタ56の代わりに設けるようにしても良い。この場合は、命令語の選択を行うセレクタ23の代わりに、命令アドレスの選択を行うセレクタ24を設ける。
【0075】
また、上記第3の実施形態において、REI命令に基づき例外起因命令あるいは実行未完了命令を再実行しているときに、再実行している命令において再び例外が発生した場合は、REI命令の例外ではなく、REI命令により再実行している命令の例外を検出して発生させる。この場合に、再実行している命令において例外が発生したことを示す情報を格納するためのレジスタを設けても良い。
【0076】
なお、以上に説明した本実施形態の情報処理装置は、計算機のCPUあるいはMPU、RAM、ROMなどで構成されるものであり、RAMやROMに記憶されたプログラムが動作することによって実現できる。したがって、計算機が上記機能を果たすように動作させるプログラムを、例えばCD−ROMのような記録媒体に記録し、計算機に読み込ませることによって実現できるものである。上記プログラムを記録する記録媒体としては、CD−ROM以外に、フロッピーディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
【0077】
また、計算機が供給されたプログラムを実行することにより上述の実施形態の機能が実現されるだけでなく、そのプログラムが計算機において稼働しているOS(オペレーティングシステム)あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合や、供給されたプログラムの処理の全てあるいは一部が計算機の機能拡張ボードや機能拡張ユニットにより行われて上述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。
【0078】
さらに、以上説明した各実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0079】
本発明の様々な形態をまとめると、以下のようになる。
(1)命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令語を保持する例外命令語保持手段と、
上記命令記憶手段から読み出される命令語と、上記例外命令語保持手段から読み出される命令語との何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記例外命令語保持手段から読み出される上記例外起因命令の命令語を選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
(2)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記命令記憶手段から読み出される命令語を選択するように上記選択手段を制御することを特徴とする上記(1)に記載の情報処理装置。
(3)上記例外起因命令の再実行命令は、上記命令記憶手段に記憶された例外回復処理のための命令シーケンス中に含まれることを特徴とする上記(1)に記載の情報処理装置。
【0080】
(4)命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令またはその例外が発生したことにより実行が中断された実行未完了命令の命令語を保持する命令語保持手段と、
上記命令記憶手段から読み出される命令語と、上記命令語保持手段から読み出される命令語との何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記命令語保持手段から読み出される上記例外起因命令または上記実行未完了命令の命令語を選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
(5)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記命令記憶手段から読み出される命令語を選択するように上記選択手段を制御することを特徴とする上記(4)に記載の情報処理装置。
【0081】
(6)命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外が発生したことにより実行が中断された実行未完了命令の命令語を保持する命令語保持手段と、
上記命令記憶手段から読み出される命令語と、上記命令語保持手段から読み出される命令語との何れかを選択する選択手段と、
例外起因命令の再実行命令が供給されたときには、上記命令語保持手段から読み出される上記実行未完了命令の命令語を選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
(7)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記命令記憶手段から読み出される命令語を選択するように上記選択手段を制御することを特徴とする上記(6)に記載の情報処理装置。
【0082】
(8)命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令アドレスを保持する例外命令アドレス保持手段と、
上記命令記憶手段から命令語を読み出すための命令アドレスとして、プログラム・カウンタから読み出される命令アドレスと、上記例外命令アドレス保持手段から読み出される命令アドレスとの何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記例外命令アドレス保持手段から読み出される上記例外起因命令の命令アドレスを選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
(9)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記プログラム・カウンタから読み出される命令アドレスを選択するように上記選択手段を制御することを特徴とする上記(8)に記載の情報処理装置。
(10)上記例外起因命令の再実行命令は、上記命令記憶手段に記憶された例外回復処理のための命令シーケンス中に含まれることを特徴とする上記(8)に記載の情報処理装置。
【0083】
(11)命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令またはその例外が発生したことにより実行が中断された実行未完了命令の命令アドレスを保持する命令アドレス保持手段と、
上記命令記憶手段から命令語を読み出すための命令アドレスとして、プログラム・カウンタから読み出される命令アドレスと、上記命令アドレス保持手段から読み出される命令アドレスとの何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記命令アドレス保持手段から読み出される上記例外起因命令または上記実行未完了命令の命令アドレスを選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
(12)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記プログラム・カウンタから読み出される命令アドレスを選択するように上記選択手段を制御することを特徴とする上記(11)に記載の情報処理装置。
【0084】
(13)命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外が発生したことにより実行が中断された実行未完了命令の命令アドレスを保持する命令アドレス保持手段と、
上記命令記憶手段から命令語を読み出すための命令アドレスとして、プログラム・カウンタから読み出される命令アドレスと、上記命令アドレス保持手段から読み出される命令アドレスとの何れかを選択する選択手段と、
例外起因命令の再実行命令が供給されたときには、上記命令アドレス保持手段から読み出される上記実行未完了命令の命令アドレスを選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
(14)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記プログラム・カウンタから読み出される命令アドレスを選択するように上記選択手段を制御することを特徴とする上記(13)に記載の情報処理装置。
【0085】
(15)命令記憶手段に記憶された例外回復処理のための命令シーケンス中に例外起因命令の再実行命令を持たせておき、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令語を保持するステップと、
上記例外起因命令の再実行命令が上記命令記憶手段から供給されたときに、実行する命令語として、上記例外の発生時に保持しておいた上記例外起因命令の命令語を選択するステップとを有することを特徴とする例外回復処理方法。
【0086】
(16)命令記憶手段に記憶された例外回復処理のための命令シーケンス中に例外起因命令の再実行命令を持たせておき、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令アドレスを保持するステップと、
上記例外起因命令の再実行命令が上記命令記憶手段から供給されたときに、上記命令記憶手段から命令語を読み出すための命令アドレスとして、上記例外の発生時に保持しておいた上記例外起因命令の命令アドレスを選択するステップとを有することを特徴とする例外回復処理方法。
【0087】
(17)命令シーケンスを記憶した命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令語をレジスタに保存する例外命令語保存手段と、
上記命令記憶手段から読み出される命令語と、上記レジスタから読み出される命令語との何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記レジスタから読み出される上記例外起因命令の命令語を選択するように上記選択手段を制御する制御手段として計算機を機能させるためのプログラムを記録したことを特徴とする計算機読み取り可能な記録媒体。
(18)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記命令記憶手段から読み出される命令語を選択するように上記選択手段を制御することを特徴とする上記(17)に記載の計算機読み取り可能な記録媒体。
【0088】
(19)命令シーケンスを記憶した命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令アドレスをレジスタに保存する例外命令アドレス保存手段と、
上記命令記憶手段から命令語を読み出すための命令アドレスとして、プログラム・カウンタから読み出される命令アドレスと、上記レジスタから読み出される命令アドレスとの何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記レジスタから読み出される上記例外起因命令の命令アドレスを選択するように上記選択手段を制御する制御手段として計算機を機能させるためのプログラムを記録したことを特徴とする計算機読み取り可能な記録媒体。
(20)上記制御手段は、上記例外起因命令の再実行命令が供給されたとき以外は、上記プログラム・カウンタから読み出される命令アドレスを選択するように上記選択手段を制御することを特徴とする上記(19)に記載の計算機読み取り可能な記録媒体。
【0089】
【発明の効果】
上記のように構成した本発明によれば、例外回復処理から元の通常の処理に復帰する際に必要な命令再実行のための処理を、1つの再実行命令を実行するだけで実現することが可能となる。これにより、従来、命令の再実行を行うために必要であったソフトウェアでのエミュレーションや自己改変コードによる実行などの複雑な処理は行わなくて済み、例外回復処理を簡単に行うことができる。
【0090】
また、本発明によれば、上述の例外回復処理は、例外起因命令や実行未完了命令の命令語あるいは命令アドレスを保持する保持手段と、再実行命令の実行時にこれらの保持しておいた命令語や命令アドレスを選択するための選択手段という少ないハードウェア資源を追加するだけで実現することができる。
【0091】
このように、本発明によれば、少しのハードウェア資源を付け加えるだけで、例外回復のための命令シーケンスを大幅に削減することができ、例外からの回復を容易に行うことができるようになる。これにより、例外回復にかかる実行時間の削減(例外応答性の向上)を図ることができるとともに、例外ハンドラのコードサイズの縮小を図ることができる。
【0092】
また、本発明の他の特徴によれば、例外起因命令を再実行するにあたって、例外回復処理のシーケンス通りに命令を順次処理し、その中に書かれた再実行命令を単に実行すれば良いので、再実行する例外起因命令が格納された別の記憶領域のアドレス値にプログラム・カウンタの値を書き換える必要がなく、また、当該別領域へのアクセスを行うことなく例外起因命令を再実行することが可能となる。よって、例外回復処理を高速に行うことができるとともに、元のプログラムを実行する際のキャッシュ性能の低下を防止することもできる。
【図面の簡単な説明】
【図1】第1の実施形態による例外回復処理方法を適用したプロセッサ(情報処理装置)の構成例を示すブロック図である。
【図2】本実施形態による例外起因命令の再実行の方法を説明するフローチャートである。
【図3】第2の実施形態による例外回復処理方法を適用したプロセッサ(情報処理装置)の構成例を示すブロック図である。
【図4】第3の実施形態による例外回復処理方法を適用したプロセッサ(情報処理装置)の構成例を示すブロック図である。
【図5】第3の実施形態に適用可能なパイプライン動作の例を示す図である。
【図6】プログラム順に命令が完了しない場合の第3の実施形態による例外ハンドラの動作を示すフローチャートである。
【図7】従来の例外ハンドラの動作を示すフローチャートである。
【図8】命令シーケンスの例を示す図である。
【図9】図8の命令シーケンスをパイプライン動作させた場合の例を示す図である。
【図10】プログラム順に命令が完了しない場合の例外ハンドラの動作を示すフローチャートである。
【図11】命令のエミュレーションにより単一の例外起因命令を再実行させる従来の処理を示すフローチャートである。
【図12】自己改変コードにより単一の例外起因命令を再実行させる従来の処理を示すフローチャートである。
【符号の説明】
10 メモリ
20 命令フェッチ部
21 プログラム・カウンタ
22 命令レジスタ
23,24 セレクタ
30 命令解析実行制御部
31 デコーダ
32 例外処理制御部
33 実行制御部
40 命令実行部(ALU)
50 レジスタ部
51 例外命令語レジスタ
52 状態レジスタ
53 要因レジスタ
54 復帰アドレスレジスタ
55 例外命令アドレスレジスタ
56 命令語レジスタ
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an information processing apparatus, an exception recovery processing method, and a recording medium, and more particularly, to an apparatus and method for controlling an operation of exception recovery processing for dealing with errors and exceptional conditions that occur during normal processing. It is suitable for use.
[0002]
[Prior art]
In the current computer system, if an error occurs in executing a program or if an exceptional condition is met, processing different from the original program is performed to solve the problem. From the original program to continue the process. In general, when an error has occurred, an exception has occurred and processing for solving the problem is called exception recovery processing.
[0003]
If an exception occurs during normal processing, control of the processor is transferred to a processing program called an exception handler different from the original program. In the exception handler, exception recovery processing is performed such that the problem causing the exception is processed and resolved, and then the original program is resumed.
[0004]
FIG. 7 is a flowchart showing the operation of a conventional exception handler. If an exception occurs during normal processing, the processor writes the information of the program counter at the time of the exception occurrence, the state of the processor, the cause of the exception, etc. to the register, so that the processor operation before the exception occurs Save information. Then, the processor transitions from the user state to the supervisor state (privileged state), and shifts the processing from a normal application program to an exception handler as shown in FIG.
[0005]
In FIG. 7, in step S21, processing for eliminating the exception factor is performed based on information such as the factor of the exception occurrence stored in the register when the exception occurs. When the elimination of the cause of the exception is completed, the process proceeds to step S22, and the original instruction (exception that caused the exception on the normal application program is generated based on the value of the program counter saved in the register when the exception occurred. Return to cause instruction).
[0006]
For example, it is assumed that an exception related to memory access of an MMU (Memory Management Unit) occurs in the load instruction (2: ld) in the program shown in FIG. In this case, the load instruction (2: ld) in this program is transferred to the exception handler processing program and the processing shown in FIG. 7 is performed. After the problem that caused the exception is resolved, recovery from the exception is realized by returning to the original load instruction (2: ld) that is the exception-causing instruction and restarting the processing of the original program.
[0007]
Further, in recent processor microarchitectures, techniques such as time direction parallelization (for example, a pipeline method) and space direction parallelization (for example, a superscalar processor) are employed in order to improve processor processing performance. Is done. FIG. 9 shows the state of processing when the program of FIG. 8 is pipeline-operated.
[0008]
In the example of FIG. 9 representing the pipeline operation, D means an instruction decode stage, E means an operation execution stage, C means a memory access stage, and W means a register write stage. In the example of FIG. 9, the pipeline operation is realized by immediately starting the decoding process of the next instruction when the decoding process of one instruction is completed.
[0009]
[Problems to be solved by the invention]
When the processor is performing a pipeline operation, if the time from execution of one instruction to writing the result in a register is different for each instruction, the instruction completion order is guaranteed to be in program order. Things get harder. That is, in the example of FIG. 9, the load instruction (2: ld) on the second line requires five stages of DECCW for processing, whereas the subtract instruction (3: sub) on the third line has three stages of DEW. The process ends, and the load instruction requires a longer processing time. For this reason, the subtraction instruction on the third line is completed earlier than the load instruction on the second line.
[0010]
Assume that an exception occurs in the write stage in the load instruction (2: ld) on the second line during such a pipeline operation. In this case, for the subtraction instruction (3: sub) next to the load instruction that is an exception-causing instruction, writing to the register is completed before the exception occurs, and the execution of the subtraction instruction has already been completed. Yes. In this case, if exception recovery processing is performed according to the flow shown in FIG. 7, after completion of the load instruction (2: ld) returned from the exception recovery processing, the already completed subtraction instruction (3: sub) is executed again. Will end up.
[0011]
In order to eliminate such an inconvenience, it is conceivable to implement a mechanism that guarantees the completion order in the program by hardware even when performing a pipeline operation. For example, it is possible to guarantee that the instruction completion order will be the program order by adopting a method such as delaying the execution start timing for an instruction that results in processing earlier. It is possible to prevent the inconvenience of re-execution of already executed instructions upon return.
[0012]
However, such a method increases the number of instruction execution cycles, which is a penalty in terms of processor performance. If a hardware mechanism is provided to guarantee the completion order of instructions, the mechanism for exception recovery becomes complicated and the circuit scale increases. In general, since the occurrence frequency of exceptions is low, it is uneconomical to put excessive hardware resources in the exception recovery mechanism. Therefore, current processors that require high performance often do not guarantee the completion order of instructions with hardware.
[0013]
On the other hand, there has been proposed a software function that prevents the inconvenience of re-execution of already executed instructions upon return from exception recovery processing. In the example of FIG. 9 above, in order to return correctly from exception recovery processing, after removing the cause of the exception for the load instruction (2: ld) on the second line where the exception occurred, Return and execute the load instruction (2: ld), then skip the already executed third line subtraction instruction (3: sub) and resume processing from the fourth line addition instruction (4: add) It is something to be made.
[0014]
FIG. 10 is a flowchart showing the operation of the exception handler when instructions are not completed in the program order. In this case, if an exception occurs during normal processing, the processor counts the value of the program counter at the time of the exception, the unexecuted instruction that comes first after the exception-causing instruction (in the example of FIG. By writing information such as the address of the add instruction (4: add) on the line, the state of the processor, the cause of the exception that has occurred, etc., to the register, the operation information of the processor before the exception is saved. Then, the processor shifts from the user state to the supervisor state, and shifts the processing from the normal application program to the exception handler as shown in FIG.
[0015]
In FIG. 10, in step S31, processing for eliminating the exception factor is performed based on information such as the factor of the exception occurrence stored in the register when the exception occurs. When the elimination of the exception factor is completed, the process proceeds to step S32, and the exception-causing instruction is read from the memory and executed based on the value of the program counter saved in the register when the exception occurs. Thereafter, the process proceeds to step S33, and the process returns to the original application program process from the uncompleted instruction based on the address of the unexecuted instruction saved in the register when the exception occurs.
[0016]
Thus, when returning from exception recovery processing, after removing the cause of the exception, it is necessary to perform processing for executing only the exception-causing instruction by some method before restarting the processing of the original program. Conventionally, in order to realize this, the following method has been adopted.
(1) A method of analyzing an exception-caused instruction to be executed and emulating the instruction using a plurality of instruction sequences prepared in advance.
(2) A self-preparing area for replacing instructions in the instruction sequence of the exception handler, copying the exception-causing instruction you want to execute, and executing the exception-causing instruction by executing the copied instruction Method by modified code.
[0017]
FIG. 11 is a flowchart showing a process for re-executing a single exception-causing instruction by instruction emulation. In FIG. 11, in step S41, an exception-causing instruction is acquired from the memory based on the value of the program counter saved when the exception occurred. In step S42, the acquired exception cause instruction is analyzed, and step S43 is performed according to the analysis result. -1 ~ S43 -n One of the emulation processes is executed.
[0018]
For example, step S43 -1 This process indicates a process of reading 1 byte of data from the memory into the register. Step S43 -2 This process indicates a process of reading 2 bytes of data from the memory into the register. -3 This process indicates a process of reading 4 bytes of data from the memory into the register. In FIG. 11, only the data load instruction and the store instruction are shown as an example of emulation for each instruction. However, actually, arithmetic instructions such as addition / subtraction and multiplication / division are also provided. An appropriate one is selected and executed according to the analysis result.
[0019]
FIG. 12 is a flowchart showing a process for re-executing a single exception-causing instruction using self-modifying code. In FIG. 12, in step S51, an exception-causing instruction is acquired from the memory based on the value of the program counter saved when the exception occurred. In step S52, the acquired exception cause instruction is copied to a memory area prepared in advance separately from the exception handler on the memory using a load / store instruction.
[0020]
Next, in step S53, the cache memory is flushed and invalidated. Cache flushing refers to the process of reflecting the data stored in the data cache memory on the main memory. Cache invalidation refers to the process of invalidating the instructions stored in the instruction cache memory. To tell.
[0021]
By performing such cache flushing and invalidation processing, it is possible to prevent the instruction before copying to the storage area on the main memory from being read from the cache memory and executed, and to copy the exception-caused instruction. It can be read from the storage area of the main memory and executed.
[0022]
In step S54 after the process of step S53, the process moves to the storage area where the exception-causing instruction is copied, and in step S55, the exception-causing instruction is executed. In the copy destination storage area, a return instruction is stored immediately after the exception-causing instruction, and after execution of the exception-causing instruction, the process immediately returns to the processing of the original exception handler in step S56. As a result, the process proceeds to step S33 in FIG. 10, the already executed instruction is skipped, and the process is restarted from the unexecuted instruction.
[0023]
However, in the method of emulating instructions, many instructions are required to analyze and emulate the instructions, which increases the execution time of exception recovery and increases the code size. There was a problem. There is also a problem that the code size of the exception handler becomes enormous because it is necessary to be able to emulate all instructions that generate exceptions.
[0024]
In the method using the self-modifying code, since many current computer systems use a cache memory, cache flushing and invalidation operations are required to use the self-modifying code. However, since these processes require a lot of execution time, there is a problem that the processing speed of exception recovery decreases. In addition, if the cache is invalidated, the cached instruction in the original program sequence is invalidated, so that the cache performance when the original program is executed is reduced, and the overall processing speed is also reduced. There was a problem of being lowered.
[0025]
In a computer system using a processor that performs a pipeline operation, the present invention increases the circuit scale when it is attempted to implement correct exception recovery processing by hardware, particularly when the completion of each instruction is different from the program execution order. This is designed to solve the conventional problem of causing a hindrance to increase the operating frequency and reducing the processing speed when trying to implement it with software, and to improve the processing speed of exception recovery with less hardware For the purpose.
[0026]
[Means for Solving the Problems]
When an exception occurs, the information processing apparatus of the present invention obtains at least one instruction word or instruction address of an instruction word of the exception-causing instruction and an incomplete execution instruction that has been interrupted due to the occurrence of the exception. Means for holding; Furthermore, when returning from exception recovery processing to normal processing, it is necessary to re-execute an exception-causing instruction or an instruction that has not yet been executed. Means for executing processing in accordance with the stored instruction word or the instruction word existing at the stored instruction address.
The re-execution instruction may be included in an instruction sequence for exception recovery processing.
[0027]
Since the present invention comprises the above technical means, it is possible to realize the re-execution process required when returning from the exception recovery process to the normal process only by executing one re-execution instruction. There is a need for complicated processing such as preparing instruction-specific emulations in advance and selectively executing one of the emulations by interpreting the instruction word or performing cache flushing and invalidation operations. Disappear.
[0028]
According to another feature of the present invention, when an exception-causing instruction is re-executed, the instructions are sequentially processed according to the instruction sequence of the exception recovery process, and the re-execution instruction written therein is simply executed. Therefore, it is not necessary to rewrite the value of the program counter to the address value of another storage area in which the exception cause instruction to be re-executed is stored, and the exception cause instruction is re-executed without accessing the other area. It becomes possible.
[0029]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
(First embodiment)
FIG. 1 is a block diagram illustrating a configuration example of a processor (information processing apparatus) to which the exception recovery processing method according to the first embodiment is applied.
In FIG. 1, reference numeral 10 denotes a memory, which stores programs such as application programs and exception handlers. Reference numeral 20 denotes an instruction fetch unit, 30 denotes an instruction analysis execution control unit, 40 denotes an instruction execution unit such as an ALU (arithmetic logic unit), and 50 denotes a register unit.
[0030]
The instruction fetch unit 20 includes a program counter 21, an instruction register 22, and a selector 23. The instruction fetch unit 20 reads instruction words one by one from the memory 10 on the basis of the instruction address indicated by the program counter 21 during execution of normal processing and exception recovery processing in which no exception has occurred, and selects them from the selector 23. Are stored in the instruction register 22 via the instruction analysis execution control unit 30. On the other hand, when returning from the exception recovery process to the original normal process, the instruction word of the exception-caused instruction supplied from the register unit 50 is selected by the selector 23, and the instruction register 22 is used to interpret the instruction word to control the instruction analysis execution. To the unit 30.
[0031]
The instruction fetch unit 20 programs the supplied instruction address when a branch destination instruction address is supplied from the instruction analysis execution control unit 30 or when the leading address of an exception handler is supplied in response to the occurrence of an exception. Write to counter 21 In other cases, the value of the program counter 21 is incremented to sequentially read out the next instruction word.
[0032]
The instruction analysis execution control unit 30 includes a decoder 31 that analyzes the instruction word supplied from the instruction fetch unit 20, an exception processing control unit 32 that controls exception recovery processing according to the analysis result of the instruction word, and the instruction word And an execution control unit 33 that controls the instruction execution unit 40 according to the analysis result. Among these, the execution control unit 33 controls the instruction execution unit 40 in accordance with the instruction of the instruction word supplied from the instruction fetch unit 20 and analyzed by the decoder 31, and executes various processes such as calculation, branching, data load / store, etc. To do.
[0033]
For example, when the supplied instruction word is an arithmetic instruction, the instruction execution unit 40 controls the data value read from the memory 10 according to the designated address or the register unit 50 based on the control from the execution control unit 33. An operation is executed based on a data value read from a general-purpose register (not shown). When the supplied instruction word is a branch instruction and the branch condition is satisfied, the execution control unit 33 supplies the instruction address of the branch destination to the instruction fetch unit 20.
[0034]
When the supplied instruction word is a load instruction or a store instruction, the execution control unit 33 controls the instruction execution unit 40 to store the data in the storage area corresponding to the designated address on the memory 10. Reading or writing of data (data of a general register (not shown) in the register unit 50) is performed.
[0035]
Further, when any problem or the like (for example, an error such as division by zero or data overflow) occurs in the process of executing the operation by the instruction execution unit 40, the exception processing control unit 32 receives the notification and receives the notification. The instruction execution unit 40 and the register 50 are controlled to execute exception recovery processing.
[0036]
That is, when the exception processing control unit 32 detects the occurrence of an exception, it supplies the instruction fetch unit 20 with the exception handler start address corresponding to the detected exception content, and sets the address in the program counter 21. In addition, an instruction such as instruction cancellation is issued to the instruction execution unit 40, and processing for writing the information described below to each of the registers 51 to 54 in the register unit 50 is performed. Thereafter, the processor transits from the user state to the supervisor state, and executes exception recovery processing according to the instruction address of the exception handler set in the program counter 21.
[0037]
The register unit 50 includes a general-purpose register (not shown) that holds data used for operations of the instruction execution unit 40 and registers 51 to 54 that hold data used for exception recovery processing described below. 20, the instruction analysis execution control unit 30 and the instruction execution unit 40 read or write data to these registers. In addition, since the exchange of data between the instruction execution unit 40 and the register unit 50 is general, the illustration is omitted here. The exception recovery processing registers 51 to 54 will be described below.
[0038]
The exception instruction word register 51 is a register for holding the instruction word of the exception-causing instruction when an exception occurs. The state register 52 is a register that holds the state of the processor (user state, supervisor state, etc.) before the occurrence of the exception. The factor register 53 is a register that holds the cause of the exception that has occurred. The return address register 54 is a register that holds an instruction address in the original program that returns from the exception recovery process, and stores the address of the unexecuted instruction that comes first after the exception-causing instruction. The values of these registers 51 to 54 are all set when an exception occurs.
[0039]
Further, during the execution of the exception recovery process, the exception processing control unit 32 reads from the memory 10 according to the program counter 21 that is sequentially incremented, and the exception handler instruction interpreted by the decoder 31 is in the middle of the exception handler. It is determined whether or not an instruction re-execution instruction (hereinafter referred to as a REI instruction) unique to the present embodiment incorporated in (the part where exception recovery processing ends).
[0040]
When it is determined that the instruction read from the memory 10 is the REI instruction, the exception cause read from the exception instruction word register 51 is switched by switching the selection state of the selector 23 in the instruction fetch unit 20 to the A side. Control to select an instruction. After executing this exception-causing instruction, the remaining state of the exception handler (return processing to the original program) is executed by returning the selection state of the selector 23 to the B side.
[0041]
In other words, after executing the exception-causing instruction, the exception processing control unit 32 changes the processor state to the original user state based on the value of the state register 52, and also returns the instruction in the original program from the exception recovery processing. The address is read from the return address register 54 and set in the program counter 21 of the instruction fetch unit 20. As a result, the instruction fetch unit 20 sequentially reads out the instruction words of the original program from the memory 10 based on the instruction address set in the program counter 21 and executes them in the instruction analysis execution control unit 30.
[0042]
Next, the operation of the processor shown in FIG. 1 will be described by taking as an example a case where a program is pipelined as shown in FIG.
When in the user state where no exception has occurred, the instruction fetch unit 20 reads the instruction word of the program from the memory 10 on the basis of the instruction address indicated by the program counter 21, and selects the read instruction word as the selector 23 and the instruction register. The instruction analysis execution control unit 30 is supplied to the instruction analysis execution control unit 30.
[0043]
The instruction analysis execution control unit 30 interprets the supplied instruction word by the decoder 31, and the execution control unit 33 controls the instruction execution unit 40 according to the instruction of the instruction, thereby executing processing of the program. If no exception occurs in this user state, the processor repeats the above operation by pipeline processing. However, when the instruction analysis execution control unit 30 detects the occurrence of an exception, the exception processing control unit 32 in the instruction analysis execution control unit 30 controls the instruction fetch unit 20 and the register unit 50 to perform the following exception recovery processing. I do.
[0044]
First, the exception handling control unit 32 stores an exception-causing instruction when an exception occurs in the exception instruction word register 51. In the example of FIG. 9, since an exception has occurred in the load instruction (2: ld) on the second line, the instruction word of this load instruction is stored in the exception instruction word register 51 as an exception causing instruction. In addition, the exception processing control unit 32 stores the state of the processor before the occurrence of the exception in the state register 52 and stores the cause of the generated exception in the factor register 53.
[0045]
Further, the exception processing control unit 32 stores, in the return address register 54, the address of the unexecuted instruction that comes first after the exception-causing instruction as the instruction address in the original program that returns from the exception recovery process. In the example of FIG. 9, when an exception occurs at the write stage of the load instruction (2: ld) on the second line, the subtraction instruction (3: sub) on the next third line has already been executed, Further, the add instruction (4: add) on the next fourth line has not yet been processed. Therefore, the address of the addition instruction in the fourth row is stored in the return address register 54.
[0046]
Next, the exception processing control unit 32 supplies the instruction fetch unit 20 with the leading address of the exception handler corresponding to the generated exception, and sets the value in the program counter 21. Through the above processing, the processor transitions from the user state to the supervisor state. The processor that has transitioned to the supervisor state reads the instruction word of the exception handler to the instruction fetch unit 20 according to the start address of the exception handler set in the program counter 21, and the read instruction word is transmitted via the selector 23 and the instruction register 22. To the instruction analysis execution control unit 30.
[0047]
The instruction analysis execution control unit 30 repeats the operation of executing the instruction words sequentially supplied toward the final address of the exception handler unless an REI instruction is generated during the processing of the exception handler. However, when the exception cause is finished and the REI instruction is read from the memory 10 during the operation of the exception handler, the exception processing control unit 32 controls to execute the REI instruction.
[0048]
That is, the exception processing control unit 32 switches the selection state of the selector 23 from the B side to the A side, thereby causing an exception causing instruction (load instruction (2: ld)) held in the exception instruction word register 51 when an exception occurs. ) Is selected by the selector 23 and supplied to the instruction analysis execution control unit 30 via the instruction register 22. As a result, the instruction execution unit 40 executes the supplied exception cause instruction based on the control of the instruction analysis execution control unit 30.
[0049]
Then, after executing the exception cause instruction based on the REI instruction in this way, the exception processing control unit 32 returns the selection state of the selector 23 to the B side, so that the remaining processing of the exception handler (return to the user state) Process). That is, when the processing of the exception-causing instruction is completed, the instruction analysis execution control unit 30 executes the exception return instruction of the exception handler read from the memory 10.
[0050]
At this time, the instruction analysis execution control unit 30 reads the instruction address (addition instruction (4: add)) in the original program that returns from the exception recovery process from the return address register 54, and sets it in the program counter 21. The instruction fetch unit 20 reads an instruction word during normal operation from the memory 10 based on the instruction address set in the program counter 21 and supplies the instruction word to the instruction analysis execution control unit 30. As a result, the processor transitions from the supervisor state to the user state, and the instruction execution unit 40 executes the remaining processing of the program corresponding to the normal operation.
[0051]
With this operation, after exception recovery is performed in the exception handler in response to the occurrence of the exception, only one exception-causing instruction (load instruction (2: ld)) is executed, and the already executed subtraction instruction ( 3: sub) can be skipped and processing can be resumed from the next unexecuted addition instruction (4: add). That is, as shown in the flowchart of FIG. 10, after the exception cause is eliminated in step S31, only the exception cause instruction is executed in step S32, and the unfinished instruction is returned to the processing of the original program in step S33. Is possible.
[0052]
FIG. 2 is a flowchart showing the processing of this embodiment in which a single exception-causing instruction is re-executed in step S32. As shown in FIG. 2, in this embodiment, when the REI instruction is read from the memory 10 in accordance with the value of the program counter 21 that is sequentially incremented from the head address of the exception handler, the REI instruction is executed in step S1. Just do it.
[0053]
As described above in detail, according to the present embodiment, one REI instruction in which processing for executing only an exception-causing instruction when returning from the exception handler to the processing of the original program is incorporated in the exception handler. It can be realized simply by executing. As a result, emulation for each instruction is prepared in advance as shown in FIG. 11, and one of the emulations is selectively executed by interpreting the instruction word, or the cache is flushed as shown in FIG. And the need to perform invalidation operations.
[0054]
Further, in this embodiment, when re-executing an exception-causing instruction, it is only necessary to sequentially process the instruction according to the sequence of the exception handler and simply execute the REI instruction written therein, as shown in the flowchart of FIG. In addition, it is not necessary to rewrite the value of the program counter 21 to the address value of another area on the memory 10 to which the exception causing instruction to be re-executed is copied, and the exception causing instruction is re-executed without accessing the other area. Can be executed.
[0055]
As a result, it is possible to re-execute the exception-causing instruction with extremely simple processing as compared with the prior art, thereby improving the exception recovery processing speed and reducing the exception handler code size.
[0056]
Further, since the value of the program counter 21 is not rewritten to the address of the instruction to be re-executed, after the operation of the exception causing instruction is completed based on the REI instruction, the instruction described next to the REI instruction is continuously executed. The continuity of execution of the original program can be maintained. Further, since cache invalidation is not necessary, it is possible to prevent a decrease in cache performance when the original program is executed.
[0057]
Further, according to the present embodiment, the function of executing only an exception-causing instruction based on the REI instruction can be realized by adding few hardware resources such as the exception instruction word register 51 and the selector 23. In terms of control, the exception-causing instruction is written to the exception instruction word register 51 when an exception occurs, the exception-causing instruction is read from the exception instruction word register 51 when the REI instruction is executed, and the instruction fetch unit 20 is read. It is only necessary to add a few steps of transfer.
[0058]
(Second Embodiment)
FIG. 3 is a block diagram illustrating a configuration example of a processor (information processing apparatus) to which the exception recovery processing method according to the second embodiment is applied. In FIG. 3, the same reference numerals as those shown in FIG. 1 have the same functions, and thus detailed description thereof will be omitted.
[0059]
As shown in FIG. 3, in the second embodiment, instead of the exception instruction word register 51 used in the first embodiment shown in FIG. The exception instruction address register 55 is provided. Further, a selector 24 for selecting an instruction address is provided instead of the selector 23 for selecting an instruction word. The selector 24 selects the B side except when the REI instruction is executed in the exception handler, and selects the A side when the REI instruction is executed.
[0060]
In this embodiment, when the occurrence of an exception is detected by the instruction analysis execution control unit 30, the instruction fetch unit 20 determines the instruction address of the exception-causing instruction based on the notification from the exception processing control unit 32 (program when an exception occurs). (The value set in the counter 21) is stored in the exception instruction address register 55. Thereafter, according to the instruction address of the exception handler supplied from the exception processing control unit 32 and newly set in the program counter 21, the exception processing control unit 32 executes exception recovery processing.
[0061]
In this embodiment, when the exception cause is finished and the REI instruction is read from the memory 10 during the operation of the exception handler, the exception processing control unit 32 changes the selection state of the selector 24 from the B side to the A side. Switch. As a result, the instruction address of the exception-causing instruction held in the exception instruction address register 55 when the exception occurs is supplied to the memory 10, and the instruction word of the exception-causing instruction is read from the corresponding address and supplied to the instruction fetch unit 20. Like that.
[0062]
Then, the instruction fetch unit 20 supplies the instruction word of the exception-caused instruction read from the memory 10 to the instruction analysis execution control unit 30. Accordingly, the instruction analysis execution control unit 30 controls the instruction execution unit 40 to execute the supplied exception cause instruction. After executing the exception-causing instruction, the exception processing control unit 32 returns the selection state of the selector 24 to the B side so that the remaining processing of the exception handler (return processing to the user state) is executed. To.
[0063]
Also in the second embodiment configured as described above, the same effect as in the first embodiment can be obtained.
[0064]
(Third embodiment)
FIG. 4 is a block diagram showing a configuration example of a processor to which the exception recovery processing method according to the third embodiment is applied. In FIG. 4, components having the same reference numerals as those shown in FIG. 1 have the same functions, and thus detailed description thereof will be omitted.
[0065]
As shown in FIG. 4, in the third embodiment, in addition to the exception instruction word register 51 used in the first embodiment shown in FIG. An instruction word register 56 is provided for holding an instruction word of an unexecuted instruction whose execution has not been completed to the end due to the occurrence of.
[0066]
The third embodiment configured as described above is effective, for example, when a pipeline operation is performed as shown in FIG. That is, recent processors often execute a plurality of instructions simultaneously as shown in FIG. 5 in order to further increase the processing speed. In the example of FIG. 5, two instructions are executed simultaneously.
[0067]
When such a pipeline operation is performed, if an instruction is executed and the time until the result is obtained is different for each instruction, when an exception occurs, The order of instructions that have been executed may be mottled. In the example of FIG. 5, when an exception occurs in the write stage of the load instruction (3: ld) on the third line, the subtract instruction (4: sub) on the fourth line and the add instruction (6: add on the sixth line) ) Has completed execution, but the division instruction (5: div) on the fifth line in the meantime has not yet been executed.
[0068]
In such a case, when returning from exception recovery processing, in addition to the re-execution of the load instruction (3: ld), which is the instruction causing the exception, the re-execution of the division instruction (5: div) that has not been executed yet After performing the above, it is necessary to resume the execution of the original program from the addition instruction (7: add) on the seventh line. Therefore, in the present embodiment, when an exception occurs, not only the instruction word of the exception-causing instruction but also the instruction word of the unexecuted instruction is stored in the instruction word register 56.
[0069]
The processing flow of the exception handler in this embodiment is as shown in FIG. In FIG. 6, in step S11, processing for eliminating the exception factor is performed. When the exception cause is resolved and the REI instruction is read from the memory 10, the instruction word of the exception-causing instruction stored in the instruction word register 56 when the exception occurs is selected by the selector 23 in step S12. Execute the cause instruction.
[0070]
Further, after execution of the exception cause instruction, the process proceeds to step S13, and the instruction word of the incomplete execution instruction stored in the instruction word register 56 when the exception occurs is selected by the selector 23 following the exception cause instruction. Execute an incomplete instruction. In step S14, it is determined whether or not there is an instruction word of an unexecuted instruction that has not been processed in the instruction word register 56. If there is an instruction word, the process returns to step S13 to repeat the same processing. The selector 23 of the instruction fetch unit 20 selects the A side from the start of the process of step S12 until the exit of the loop of steps S13 and S14.
[0071]
Thereafter, when all the instruction words of the unexecuted instructions stored in the instruction word register 56 are processed, the process proceeds to step S15, and the instruction address saved in the return address register 54 when an exception occurs is used as the basis. Then, the process returns to the original program process from the unexecuted instruction. At this time, the selector 23 switches the selection state to the B side.
[0072]
As described above, according to the third embodiment, in addition to the effects described in the first embodiment, when an exception occurs, an execution incomplete instruction that has not been executed, and execution has been completed. Even when the order of execution completion instructions is mottled, there is an advantage that only instructions that need to be re-executed upon return from exception recovery processing can be executed with simple processing.
[0073]
In the third embodiment, the instruction word register 56 stores the instruction word of the exception-causing instruction and the instruction word of the unexecuted instruction, but stores only the instruction word of the unexecuted instruction. You may do it. For example, if a floating-point operation instruction is executed on a processor that does not have a function for processing floating-point data, an exception will be generated. Will occur. In such a case, if only the instruction word of the unexecuted instruction is stored in the instruction word register 56, it is possible to skip the exception causing instruction and return to the process from the next unexecuted instruction.
[0074]
In the third embodiment, the instruction word register 56 stores the instruction word of the exception cause instruction and the instruction word of the unexecuted instruction. However, as in the second embodiment, the exception cause An instruction address register for storing an instruction address of an instruction and an instruction address of an incomplete execution instruction may be provided instead of the instruction word register 56. In this case, a selector 24 for selecting an instruction address is provided instead of the selector 23 for selecting an instruction word.
[0075]
In the third embodiment, when an exception causing instruction or an incomplete execution instruction is re-executed based on the REI instruction, if an exception occurs again in the re-executed instruction, the exception of the REI instruction Instead, an exception of an instruction re-executed by the REI instruction is detected and generated. In this case, a register for storing information indicating that an exception has occurred in the re-executed instruction may be provided.
[0076]
The information processing apparatus according to the present embodiment described above is configured by a CPU or MPU of a computer, a RAM, a ROM, and the like, and can be realized by operating a program stored in the RAM or the ROM. Therefore, the program that causes the computer to perform the above functions can be realized by recording the program on a recording medium such as a CD-ROM and causing the computer to read the program. As a recording medium for recording the program, a floppy disk, a hard disk, a magnetic tape, a magneto-optical disk, a nonvolatile memory card, or the like can be used in addition to the CD-ROM.
[0077]
Further, not only the functions of the above-described embodiments are realized by executing a program supplied to the computer, but the program is also used in cooperation with an OS (operating system) or other application software running on the computer. When the functions of the above-described embodiment are realized, or when all or part of the processing of the supplied program is performed by a function expansion board or a function expansion unit of the computer, the functions of the above-described embodiment are realized. Such a program is included in the embodiment of the present invention.
[0078]
Further, each of the embodiments described above is merely an example of a specific example for carrying out the present invention, and the technical scope of the present invention should not be construed as being limited thereto. is there. In other words, the present invention can be implemented in various forms without departing from the spirit or main features thereof.
[0079]
The various aspects of the present invention are summarized as follows.
(1) instruction storage means for storing an instruction sequence;
An exception instruction word holding means for holding the instruction word of the instruction causing the exception when an exception occurs in the instruction read and executed from the instruction storage means;
Selecting means for selecting one of the instruction word read from the instruction storage means and the instruction word read from the exception instruction word holding means;
Control means for controlling the selection means so as to select an instruction word of the exception-causing instruction read from the exception instruction word holding means when a re-execution instruction of the exception-causing instruction is supplied. Information processing apparatus.
(2) The control means controls the selection means to select an instruction word read from the instruction storage means, except when a re-execution instruction for the exception-causing instruction is supplied. The information processing apparatus according to (1).
(3) The information processing apparatus according to (1), wherein the exception reexecution instruction re-execution instruction is included in an instruction sequence for exception recovery processing stored in the instruction storage means.
[0080]
(4) instruction storage means for storing an instruction sequence;
Instruction word holding means for holding an instruction word of an instruction caused by the exception or an execution incomplete instruction whose execution has been interrupted due to the occurrence of an exception when an exception occurs in an instruction read and executed from the instruction storage means; ,
Selecting means for selecting either an instruction word read from the instruction storage means or an instruction word read from the instruction word holding means;
Control means for controlling the selection means so as to select the exception cause instruction read from the instruction word holding means or the instruction word of the unexecuted instruction when the exception execution instruction re-execution instruction is supplied; An information processing apparatus comprising the information processing apparatus.
(5) The control means controls the selection means to select an instruction word read from the instruction storage means, except when a re-execution instruction for the exception-causing instruction is supplied. The information processing apparatus according to (4).
[0081]
(6) command storage means for storing a command sequence;
When an exception occurs in an instruction read and executed from the instruction storage means, an instruction word holding means for holding an instruction word of an incomplete execution instruction whose execution has been interrupted due to the occurrence of the exception;
Selecting means for selecting either an instruction word read from the instruction storage means or an instruction word read from the instruction word holding means;
Control means for controlling the selection means so as to select an instruction word of the unexecuted instruction read from the instruction word holding means when a re-execution instruction of an exception-causing instruction is supplied. Information processing apparatus.
(7) The control means controls the selection means to select an instruction word read from the instruction storage means, except when a re-execution instruction for the exception-causing instruction is supplied. The information processing apparatus according to (6).
[0082]
(8) command storage means for storing a command sequence;
An exception instruction address holding means for holding the instruction address of the instruction causing the exception when an exception occurs in the instruction read from the instruction storage means and executed;
A selection means for selecting either an instruction address read from a program counter or an instruction address read from the exception instruction address holding means as an instruction address for reading an instruction word from the instruction storage means;
And a control means for controlling the selection means so as to select an instruction address of the exception-caused instruction read from the exception instruction address holding means when a re-execution instruction for the exception-caused instruction is supplied. Information processing apparatus.
(9) The control unit controls the selection unit to select an instruction address read from the program counter except when a re-execution instruction for the exception-causing instruction is supplied. The information processing apparatus according to (8).
(10) The information processing apparatus according to (8), wherein the exception reexecution instruction re-execution instruction is included in an instruction sequence for exception recovery processing stored in the instruction storage means.
[0083]
(11) command storage means for storing a command sequence;
An instruction address holding means for holding the instruction address of an instruction caused by the exception or an execution incomplete instruction whose execution has been interrupted due to the occurrence of an exception when an exception occurs in an instruction read and executed from the instruction storage means; ,
A selection means for selecting one of an instruction address read from the program counter and an instruction address read from the instruction address holding means as an instruction address for reading an instruction word from the instruction storage means;
Control means for controlling the selection means so as to select the exception cause instruction read from the instruction address holding means or the instruction address of the unexecuted instruction when the exception execution instruction re-execution instruction is supplied; An information processing apparatus comprising the information processing apparatus.
(12) The control means controls the selection means so as to select an instruction address read from the program counter except when an exception execution instruction re-execution instruction is supplied. The information processing apparatus according to (11).
[0084]
(13) command storage means storing a command sequence;
An instruction address holding means for holding an instruction address of an execution incomplete instruction whose execution has been interrupted due to the occurrence of an exception when an exception occurs in an instruction read and executed from the instruction storage means;
A selection means for selecting one of an instruction address read from the program counter and an instruction address read from the instruction address holding means as an instruction address for reading an instruction word from the instruction storage means;
And a control means for controlling the selection means so as to select an instruction address of the unexecuted instruction read from the instruction address holding means when a re-execution instruction of an exception-causing instruction is supplied. Information processing apparatus.
(14) The control means controls the selection means so as to select an instruction address read from the program counter except when a re-execution instruction for the exception-causing instruction is supplied. The information processing apparatus according to (13).
[0085]
(15) An exception cause instruction re-execution instruction is included in the instruction sequence for exception recovery processing stored in the instruction storage means;
Holding an instruction word of the instruction that caused the exception when an exception has occurred in the instruction read and executed from the instruction storage means;
Selecting an instruction word of the exception-causing instruction held when the exception occurs as an instruction word to be executed when a re-execution instruction of the exception-causing instruction is supplied from the instruction storage unit An exception recovery processing method.
[0086]
(16) A re-execution instruction for an exception-causing instruction is included in the instruction sequence for exception recovery processing stored in the instruction storage means,
When an exception occurs in the instruction read and executed from the instruction storage means, holding the instruction address of the exception-causing instruction;
When an exception execution instruction re-execution instruction is supplied from the instruction storage means, an instruction address for reading an instruction word from the instruction storage means is used as an instruction address stored at the time of occurrence of the exception. And a step of selecting an instruction address.
[0087]
(17) Exception instruction word storage means for storing the instruction word of the exception-causing instruction in a register when an exception occurs in the instruction read and executed from the instruction storage means storing the instruction sequence;
Selecting means for selecting either an instruction word read from the instruction storage means or an instruction word read from the register;
When a re-execution instruction for the exception-causing instruction is supplied, a program for causing the computer to function as a control means for controlling the selection means to select an instruction word of the exception-causing instruction read from the register is recorded A computer-readable recording medium characterized by the above.
(18) The control means controls the selection means to select an instruction word read from the instruction storage means, except when a re-execution instruction for the exception-causing instruction is supplied. The computer-readable recording medium according to (17).
[0088]
(19) Exception instruction address storage means for storing the instruction address of the exception-causing instruction in a register when an exception occurs in the instruction read and executed from the instruction storage means storing the instruction sequence;
A selection means for selecting either an instruction address read from a program counter or an instruction address read from the register as an instruction address for reading an instruction word from the instruction storage means;
When a re-execution instruction for the exception-causing instruction is supplied, a program for causing the computer to function as a control means for controlling the selection means to select an instruction address of the exception-causing instruction read from the register is recorded A computer-readable recording medium characterized by the above.
(20) The control means controls the selection means so as to select an instruction address read from the program counter except when a re-execution instruction for the exception-causing instruction is supplied. The computer-readable recording medium according to (19).
[0089]
【The invention's effect】
According to the present invention configured as described above, the processing for instruction re-execution necessary for returning from the exception recovery processing to the original normal processing can be realized by executing only one re-execution instruction. Is possible. This eliminates the need for complicated processing such as software emulation and execution with self-modifying code, which has conventionally been necessary to re-execute instructions, and allows exception recovery processing to be performed easily.
[0090]
Further, according to the present invention, the exception recovery process described above includes the holding means for holding the instruction word or instruction address of the exception-causing instruction or the instruction that has not been executed, and the instructions that have been held when the re-executed instruction is executed. This can be realized simply by adding a small number of hardware resources such as selection means for selecting a word or instruction address.
[0091]
As described above, according to the present invention, the instruction sequence for exception recovery can be greatly reduced by adding a few hardware resources, and recovery from an exception can be easily performed. . As a result, it is possible to reduce the execution time required for exception recovery (improve exception response) and reduce the code size of the exception handler.
[0092]
According to another feature of the present invention, when an exception-causing instruction is re-executed, the instructions are sequentially processed according to the sequence of exception recovery processing, and the re-executed instruction written therein is simply executed. It is not necessary to rewrite the value of the program counter to the address value of another storage area in which the exception-causing instruction to be re-executed is stored, and the exception-causing instruction is re-executed without accessing the other area. Is possible. Therefore, exception recovery processing can be performed at high speed, and deterioration in cache performance when the original program is executed can be prevented.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a configuration example of a processor (information processing apparatus) to which an exception recovery processing method according to a first embodiment is applied.
FIG. 2 is a flowchart illustrating a method for re-execution of an exception-causing instruction according to the present embodiment.
FIG. 3 is a block diagram showing a configuration example of a processor (information processing apparatus) to which an exception recovery processing method according to a second embodiment is applied.
FIG. 4 is a block diagram illustrating a configuration example of a processor (information processing apparatus) to which an exception recovery processing method according to a third embodiment is applied.
FIG. 5 is a diagram illustrating an example of a pipeline operation applicable to the third embodiment.
FIG. 6 is a flowchart showing the operation of an exception handler according to the third embodiment when instructions are not completed in program order.
FIG. 7 is a flowchart showing the operation of a conventional exception handler.
FIG. 8 is a diagram illustrating an example of an instruction sequence.
FIG. 9 is a diagram illustrating an example when the instruction sequence of FIG. 8 is pipelined.
FIG. 10 is a flowchart showing the operation of an exception handler when instructions are not completed in program order.
FIG. 11 is a flowchart showing conventional processing for re-executing a single exception-causing instruction by instruction emulation;
FIG. 12 is a flowchart showing a conventional process for re-executing a single exception-causing instruction by self-modifying code.
[Explanation of symbols]
10 memory
20 Instruction fetch section
21 Program counter
22 Instruction register
23, 24 selector
30 Instruction analysis execution controller
31 Decoder
32 Exception handling control unit
33 Execution control unit
40 Instruction execution unit (ALU)
50 Register section
51 Exception instruction word register
52 Status register
53 Cause register
54 Return address register
55 Exception instruction address register
56 Instruction word register

Claims (6)

命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令語を保持する例外命令語保持手段と、
上記命令記憶手段から読み出される命令語と、上記例外命令語保持手段から読み出される命令語との何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記例外命令語保持手段から読み出される上記例外起因命令の命令語を選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
An instruction storage means for storing an instruction sequence;
An exception instruction word holding means for holding the instruction word of the instruction causing the exception when an exception occurs in the instruction read and executed from the instruction storage means;
Selecting means for selecting one of the instruction word read from the instruction storage means and the instruction word read from the exception instruction word holding means;
Control means for controlling the selection means so as to select an instruction word of the exception-causing instruction read from the exception instruction word holding means when a re-execution instruction of the exception-causing instruction is supplied. Information processing apparatus.
命令シーケンスを記憶した命令記憶手段と、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令アドレスを保持する例外命令アドレス保持手段と、
上記命令記憶手段から命令語を読み出すための命令アドレスとして、プログラム・カウンタから読み出される命令アドレスと、上記例外命令アドレス保持手段から読み出される命令アドレスとの何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記例外命令アドレス保持手段から読み出される上記例外起因命令の命令アドレスを選択するように上記選択手段を制御する制御手段とを備えたことを特徴とする情報処理装置。
An instruction storage means for storing an instruction sequence;
An exception instruction address holding means for holding the instruction address of the instruction causing the exception when an exception occurs in the instruction read from the instruction storage means and executed;
A selection means for selecting either an instruction address read from a program counter or an instruction address read from the exception instruction address holding means as an instruction address for reading an instruction word from the instruction storage means;
And a control means for controlling the selection means so as to select an instruction address of the exception-caused instruction read from the exception instruction address holding means when a re-execution instruction for the exception-caused instruction is supplied. Information processing apparatus.
命令記憶手段に記憶された例外回復処理のための命令シーケンス中に例外起因命令の再実行命令を持たせておき、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令語を保持するステップと、
上記例外起因命令の再実行命令が上記命令記憶手段から供給されたときに、実行する命令語として、上記例外の発生時に保持しておいた上記例外起因命令の命令語を選択するステップとを有することを特徴とする例外回復処理方法。
In the instruction sequence for exception recovery processing stored in the instruction storage means, a re-execution instruction for the instruction causing the exception is held,
Holding an instruction word of the instruction that caused the exception when an exception has occurred in the instruction read and executed from the instruction storage means;
Selecting an instruction word of the exception-causing instruction held when the exception occurs as an instruction word to be executed when a re-execution instruction of the exception-causing instruction is supplied from the instruction storage unit An exception recovery processing method.
命令記憶手段に記憶された例外回復処理のための命令シーケンス中に例外起因命令の再実行命令を持たせておき、
上記命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令アドレスを保持するステップと、
上記例外起因命令の再実行命令が上記命令記憶手段から供給されたときに、上記命令記憶手段から命令語を読み出すための命令アドレスとして、上記例外の発生時に保持しておいた上記例外起因命令の命令アドレスを選択するステップとを有することを特徴とする例外回復処理方法。
In the instruction sequence for exception recovery processing stored in the instruction storage means, a re-execution instruction for the instruction causing the exception is held,
When an exception occurs in the instruction read and executed from the instruction storage means, holding the instruction address of the exception-causing instruction;
When an exception execution instruction re-execution instruction is supplied from the instruction storage means, an instruction address for reading an instruction word from the instruction storage means is used as an instruction address stored at the time of occurrence of the exception. And a step of selecting an instruction address.
命令シーケンスを記憶した命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令語をレジスタに保存する例外命令語保存手段と、
上記命令記憶手段から読み出される命令語と、上記レジスタから読み出される命令語との何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記レジスタから読み出される上記例外起因命令の命令語を選択するように上記選択手段を制御する制御手段として計算機を機能させるためのプログラムを記録したことを特徴とする計算機読み取り可能な記録媒体。
When an exception occurs in an instruction read and executed from the instruction storage means storing the instruction sequence, an exception instruction word storage means for saving the instruction word of the exception-causing instruction in a register;
Selecting means for selecting either an instruction word read from the instruction storage means or an instruction word read from the register;
When a re-execution instruction for the exception-causing instruction is supplied, a program for causing the computer to function as a control means for controlling the selection means to select an instruction word of the exception-causing instruction read from the register is recorded A computer-readable recording medium characterized by the above.
命令シーケンスを記憶した命令記憶手段から読み出して実行した命令で例外が発生したときに、その例外起因命令の命令アドレスをレジスタに保存する例外命令アドレス保存手段と、
上記命令記憶手段から命令語を読み出すための命令アドレスとして、プログラム・カウンタから読み出される命令アドレスと、上記レジスタから読み出される命令アドレスとの何れかを選択する選択手段と、
上記例外起因命令の再実行命令が供給されたときには、上記レジスタから読み出される上記例外起因命令の命令アドレスを選択するように上記選択手段を制御する制御手段として計算機を機能させるためのプログラムを記録したことを特徴とする計算機読み取り可能な記録媒体。
An exception instruction address storing means for storing the instruction address of the instruction causing the exception in a register when an exception occurs in the instruction read and executed from the instruction storage means storing the instruction sequence;
A selection means for selecting either an instruction address read from a program counter or an instruction address read from the register as an instruction address for reading an instruction word from the instruction storage means;
When a re-execution instruction for the exception-causing instruction is supplied, a program for causing the computer to function as a control means for controlling the selection means to select an instruction address of the exception-causing instruction read from the register is recorded A computer-readable recording medium characterized by the above.
JP33607099A 1999-11-26 1999-11-26 Information processing apparatus, exception recovery processing method, and recording medium Expired - Fee Related JP3766772B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP33607099A JP3766772B2 (en) 1999-11-26 1999-11-26 Information processing apparatus, exception recovery processing method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33607099A JP3766772B2 (en) 1999-11-26 1999-11-26 Information processing apparatus, exception recovery processing method, and recording medium

Publications (2)

Publication Number Publication Date
JP2001154843A JP2001154843A (en) 2001-06-08
JP3766772B2 true JP3766772B2 (en) 2006-04-19

Family

ID=18295393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33607099A Expired - Fee Related JP3766772B2 (en) 1999-11-26 1999-11-26 Information processing apparatus, exception recovery processing method, and recording medium

Country Status (1)

Country Link
JP (1) JP3766772B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5978008B2 (en) * 2012-05-29 2016-08-24 みずほ情報総研株式会社 Transaction management system, transaction management method, and transaction management program
JP2019003588A (en) * 2017-06-12 2019-01-10 正仁 櫨田 Method of rebooting program on memory from value of program counter according to system clock

Also Published As

Publication number Publication date
JP2001154843A (en) 2001-06-08

Similar Documents

Publication Publication Date Title
US6681280B1 (en) Interrupt control apparatus and method separately holding respective operation information of a processor preceding a normal or a break interrupt
JP5043560B2 (en) Program execution control device
US6687812B1 (en) Parallel processing apparatus
US20080126770A1 (en) Methods and apparatus for recognizing a subroutine call
JPH05173783A (en) System and method for draining instruction pipeline
CN111133418A (en) Allowing non-aborted transactions after an exception mask update instruction
CN108920190B (en) Apparatus and method for determining a resume point from which instruction execution resumes
US20010023479A1 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
JP2000322257A (en) Speculative execution control method for conditional branch instruction
JPH0727462B2 (en) Method for restarting page fault execution in data processing device
JPH1097423A (en) Processor having register structure which is suitable for parallel execution control of loop processing
JP3766772B2 (en) Information processing apparatus, exception recovery processing method, and recording medium
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
JPH1196006A (en) Information processor
JP5209390B2 (en) Information processing apparatus and instruction fetch control method
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
KR20180126518A (en) Vector instruction processing
US6772294B2 (en) Method and apparatus for using a non-committing data cache to facilitate speculative execution
JP3497087B2 (en) Instruction control apparatus and method
CN116841614B (en) Sequential vector scheduling method under disordered access mechanism
US12008372B2 (en) Techniques for reducing CPU privilege boundary crossings
KR100765867B1 (en) Computer and control method of the computer
CN114968364B (en) Conditional statement processing method and device and storage medium
US7890739B2 (en) Method and apparatus for recovering from branch misprediction
JP2000172505A (en) Processor performing register number conversion

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060130

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090203

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100203

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140203

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees