(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて命令の実行処理を行うための装置であって、
第１メモリ（３０）と第２メモリ（８４）と第３メモリ（１１４）とを備え、
前記第１メモリ（３０）は、アドレス指定可能な複数の第１メモリ記憶素子と、第１アドレスを第１命令から受け取るために前記複数の第１メモリ記憶素子に接続された第１アドレス入力手段（ＢＩＮ端子）と、第２アドレスを前記第１命令から受け取るために前記複数の第１メモリ記憶素子に接続された第２アドレス入力手段（ＡＩＮ端子）と、第３アドレスを受け取るために前記複数の第１メモリ記憶素子に接続された第３アドレス入力手段（ＳＢＩＮ端子）と、前記第１アドレスによってアドレス指定された第１オペランドを出力するため、及び、前記第２アドレスによってアドレス指定された第２オペランドを出力するために、前記複数の第１メモリ記憶素子に接続された第１メモリ出力手段（ＡＯＵＴ端子、ＢＯＵＴ端子）とを有し、
前記第１オペランド及び前記第２オペランドに関数処理を行い結果データを生成するために前記第１メモリ出力手段（ＢＯＵＴ端子、ＡＯＵＴ端子）に接続された命令実行手段（５０）とを有し、
前記第２メモリ（８４）は、アドレス指定可能な複数の第２メモリ記憶素子を有し、前記第１アドレスを前記第２メモリ記憶素子の一つに記憶するために前記第１アドレス入力手段（ＢＩＮ端子）と前記第２メモリ記憶素子とに接続され、前記第３アドレス入力手段（ＳＢＩＮ端子）に前記第１アドレスを第３アドレスとして出力するために、前記第２メモリ記憶素子及び前記第３アドレス入力手段（ＳＢＩＮ端子）に接続されており、
前記結果データを前記第３アドレスによってアドレス指定された前記第１メモリ記憶素子に選択的に記憶するために前記第２メモリ（８４）及び前記第３アドレス入力手段（ＳＢＩＮ端子）に接続された第１メモリ記憶制御手段（１０４）を有し、
前記第３メモリ（１１４）は、アドレス指定可能な複数の第３メモリ記憶素子を有し、第４アドレスを受け取るために前記複数の第３メモリ記憶素子に接続され、前記第２オペランドを前記第４アドレスによってアドレス指定された前記第３メモリ記憶素子に記憶するために前記第１メモリ出力手段（ＡＯＵＴ端子）及び前記複数の第３メモリ記憶素子に接続されており、
前記関数処理が実行された時に例外(exception) が発生したか否かを示す例外データを生成する例外手段を前記命令実行手段（５０）が有し、
前記第１メモリ記憶制御手段（１０４）は、前記第１メモリ（３０）と前記例外手段とに接続された禁止手段を有し、
前記禁止手段は、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第３アドレスによってアドレス指定された前記第１メモリ記憶素子に前記結果データを記憶することを禁止することを特徴とするパイプラインプロセッサにおける割込み処理のための装置。
【請求項２】
前記第３メモリ（１１４）は、第５アドレスを受け取り、更に、
前記第５アドレスに対応する第３オペランドを出力するために前記複数の第３メモリ記憶素子に接続された第３メモリ出力手段（Ｊ端子）を有している請求項１記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項３】
アドレス指定可能な複数の第４メモリ記憶素子を有し、
第６アドレスを受け取り、更に、
前記第３オペランドを前記第６アドレスによってアドレス指定された前記第４メモリ記憶素子に記憶するために前記第３メモリ出力手段（Ｊ端子）及び前記複数の第４メモリ記憶素子に接続された第２メモリデータ記憶手段（Ｍ端子）を有する第４メモリ（１１８）を備えている請求項２記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項４】
前記第４メモリ（１１８）は、第７アドレスを受け取り、更に、
前記第７アドレスに対応する第４オペランドを出力するために前記第４メモリ記憶素子に接続された第４メモリ出力手段（Ｋ端子）を備えている請求項３記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項５】
前記第４アドレスによってアドレス指定された前記第３メモリ記憶素子の一つに記憶されたデータを、前記第７アドレスによってアドレス指定された前記複数の第４メモリ記憶素子の一つに直接伝送するために前記第３メモリ（１１４）と前記４メモリ（１１８）とを接続する請求項４記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項６】
前記第２メモリデータ記憶手段（Ｍ端子）は、前記例外手段に接続され、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第５アドレスによってアドレス指定された前記第３メモリ記憶素子からの出力データを、前記第６アドレスによってアドレス指定された前記第４メモリ記憶素子の一つに記憶する請求項３記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項７】
前記第１メモリ記憶制御手段（１０４）は、前記第２メモリ（８４）と前記第３メモリ（１１４）とに接続された第４アドレス記憶手段を有し、
この第４アドレス記憶手段は、前記第４アドレスが前記第３アドレスとほぼ同時に前記第２メモリ（８４）によって出力されるように、選択された前記第２メモリ記憶素子に対応する第２メモリ記憶素子に前記第４アドレスを記憶する請求項６記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項８】
前記第３メモリ（１１４）は、前記第２メモリ（８４）に接続され、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第５アドレスからなる前記第４アドレスを受け取る請求項７記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項９】
前記第４メモリ（１１８）は、第７アドレスを受け取るために前記第４メモリ記憶素子に接続され、更に、
前記第７アドレスに対応する第４オペランドを出力するために前記第４メモリ記憶素子に接続された第４メモリ出力手段（Ｋ端子）を備えている請求項８記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項１０】
前記第４アドレスによってアドレス指定された前記第３メモリ記憶素子の一つに記憶されたデータを、前記第７アドレスによってアドレス指定された前記複数の第４メモリ記憶素子の一つに直接伝送するために前記第３メモリ（１１４）と前記４メモリ（１１８）とを接続する請求項９記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項１１】
前記第１アドレス入力手段（ＢＩＮ端子）と前記第２アドレス入力手段（ＡＩＮ端子）とに接続され、各命令の第１アドレスを前記第１アドレス入力手段（ＢＩＮ端子）に伝送することにより、且つ、各命令の第２アドレスを前記第２アドレス入力手段（ＡＩＮ端子）に伝送することにより、複数の命令を発行する命令発行手段（１４）を備えている請求項１０記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項１２】
前記命令発行手段（１４）と前記第２メモリ（８４）とに接続され、第２命令の第１アドレスが前記第２メモリ（８４）に記憶された第１アドレスに一致した場合に、前記第２命令の発行を禁止する発行制御手段を備えている請求項１１記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項１３】
前記第１アドレス入力手段（ＢＩＮ端子）と前記第２アドレス入力手段（ＡＩＮ端子）とに接続され、各命令の第１アドレスを前記第１アドレス入力手段（ＢＩＮ端子）に伝送することにより、且つ、各命令の第２アドレスを前記第２アドレス入力手段（ＡＩＮ端子）に伝送することにより、複数の命令を発行する命令発行手段（１４）を備えている請求項１又は６又は８記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項１４】
前記命令発行手段（１４）と前記第２メモリ（８４）とに接続され、第２命令の第１アドレスが前記第２メモリ（８４）に記憶された第１アドレスに一致した場合に、前記第２命令の発行を禁止する発行制御手段を備えている請求項１３記載のパイプラインプロセッサにおける割込み処理のための装置。
【請求項１５】
前記命令実行手段（５０）が、前記第２メモリ（８４）と前記例外手段とに接続され、選択された前記第２メモリ記憶素子に対応する第２メモリ記憶素子に前記例外データを記憶して、前記第２メモリ（８４）から前記例外データと前記第３アドレスとをほぼ同時に出力する請求項１又は８又は１２記載のパイプラインプロセッサにおける割込み処理のための装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、パイプライン制御により命令の実行処理の高速化を図っているパイプラインプロセッサにおいて割込み処理を行うための装置に関する。
【０００２】
【従来の技術】
伝統的なコンピュータアーキテクチャは、命令の発行と実行が連続的に行われるシーケンシャルモデルに基礎を置くものであった。即ち、各命令は、次の命令が開始される前に完了される。このモデルに従ったエラー回復は非常に容易である。というのは、割込みが検出された時点におけるプログラムカウンタ、汎用レジスタ、メインメモリ等の状態は予め決められており、連続的に実行される最後の命令と矛盾が生じないからである。従って、連続的に実行される最後の命令のすぐ後のプログラム命令を実行することによって処理が容易に再開される。
【０００３】
技術の進歩に伴って、複数の命令が同時に実行段階にあるパイプラインプロセッサが開発された。パイプライン化された命令の処理状態はシーケンシャルアーキテクチャモデルの命令とは異なる。つまり、割込みが検出された時の処理状態は全ての命令が連続的に実行された時の状態とは一致しない。この結果、処理の再開は不可能ではないまでも非常に困難である。
【０００４】
パイプラインプロセッサにおいて割込み処理を行うための技術は、例えば、Ｊａｍｅｓ  Ｅ．Ｓｍｉｔｈ達による「パイプラインプロセッサにおける正確な割込み処理の実行」ＥＥＥ  ＴＲＡＮＳＡＣＴＩＯＮＳ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ第３７巻Ｎｏ．５（１９８８年５月発行）の第５６２〜５７３頁に開示されている。ここに開示された一つの方法（結果シフトレジスタ法）において、ある命令によって処理状態が変化するのは、その命令の前に発行されたすべての命令が例外状態（ｅｘｃｅｐｔｉｏｎ  ｃｏｎｄｉｔｉｏｎｓ）を発生しなかった場合だけである。これを達成するために、命令の実行を制御すべくＮ段の結果シフトレジスタが使用されている。ここでＮは一つの命令を実行するのに必要なクロック数の最大値である。ｉクロックを必要とする命令は、発行された時に結果シフトレジスタのｉ段目に制御情報を置く。この制御情報は１クロック毎に１段ずつ１段目の方へシフトダウンされる。制御情報が１段目に達すれば、次のクロック周期でこの情報は、命令によって発生した結果データがそのとき正しい結果レジスタに記憶されるようにハードウェアを制御するために使用される。
【０００５】
先に発行された命令の制御情報がｊ段目（ｊ＞ｉ）に置かれている場合に、命令が処理状態を順序正しく変化させることを確実にするためには、その命令の制御情報をｉ段目に置いてはならない。このように、ｊ段目に制御情報を置く命令が発行されるとｊ以下の段が全て確保される。その後、確保された段を指定する命令が発行された場合は、指定された段の確保が解除されるまで、その命令は発行ステージで待機しなければならない。
【０００６】
上記の方法の主たる問題点は、速い命令が、他の命令と独立して別個に発行可能であっても、発行レジスタのところで停止してしまうことにある。更に、停止した命令が、その後におそらく発行可能な遅い命令の発行レジスタをも塞いでしまう。
【０００７】
開示された別の方法（リオーダバッファ法）は、命令の順番通りでない完了を許容することにより問題点を解決するものであるが、結果シフトレジスタに加えてリオーダ（ｒｅｏｒｄｅｒ）バッファと呼ばれる特殊な循環バッファを使用して、命令が処理状態を変化させる前に命令の順番を再編成する。命令が発行される毎に、この命令によって発生する結果データのために確保された領域を含む次の連続するリオーダバッファ段に制御情報がロードされる。このようにリオーダバッファへのエントリによって発行シーケンスが保存される。命令に対応するリオーダバッファのエントリを識別するために、適当な結果シフトレジスタ段にタグが置かれる。
【０００８】
一つの命令が完了すると、結果データと例外状態とがリオーダバッファに記憶される。リオーダバッファの先頭のエントリに有効な結果がある（それに対応する命令が完了している）場合は、例外データがチェックされる。例外データが無い場合は、結果データがレジスタに書き込まれる。例外データがある場合は、命令の発行が停止され、以降のレジスタファイルへの書き込みがすべて禁止される。
【０００９】
この方法は前述の結果レジスタ法の改良ではあるが、この方法においても性能の低下は免れない。例えば、互いに独立した命令であるにもかかわらず、後に完了する前の命令によってレジスタファイルが更新されるまで、順番から外れて発生した計算結果がリオーダバッファに保持される。更に、リオーダバッファに保持されている結果の影響を受ける命令は、結果がレジスタファイルに書き込まれるまで発行することができない。
【００１０】
開示された第３の方法（履歴バッファ法）は、上述の結果レジスタ法と記録バッファ法との両方の問題点を解決しようとするものである。この方法によれば、計算結果は作業レジスタファイルに置かれるが、例外状態が発生したときに正確な状態を回復するのに十分な情報は履歴（ｈｉｓｔｏｒｙ）バッファに記憶される。この履歴バッファは前述のリオーダバッファとよく似た構造及び機能を有する。命令が発行されると、履歴バッファのエントリに制御情報がロードされ、目的地レジスタの現在値（発行命令によってオーバーライトされる）がレジスタファイルから読み出されてバッファエントリに書き込まれる。命令によって発生した結果は命令が完了する時にレジスタファイルに直接書き込まれる。例外データは履歴バッファに書き込まれる。履歴バッファの先頭のエントリから、例外状態を発生せずに完了したことがわかる場合は、それ以降の履歴バッファエントリは不要であり、そのバッファ位置は他に使用できる。
【００１１】
バッファの先頭エントリに例外状態が検出された場合は、バッファはホールドされ、命令の発行はすぐに中断され、パイプラインにある命令はキャンセルされる。次に、能動状態のバッファエントリが最後から先頭へ順に空にされ、履歴値（ｈｉｓｔｏｒｙ  ｖａｌｕｅｓ）はそれぞれの対応するレジスタへ戻される。その後、例外状態を発生させた命令とそれに続くすべての命令とを再発行することによってプログラムが再開される。この方法の主な欠点は、例外状態が検出された時にパイプラインレジスタにある命令がキャンセルされることである。つまり、キャンセルされた命令は、例外状態が検出された時に正常に完了していたとしても、システムが再開する時に再実行されることになる。
【００１２】
【発明が解決しようとする課題】
以上のように、従来の各種の方法は解決すべきそれぞれの欠点を有するものであった。そこで本発明の目的は、従来の方法をさらに改良して、命令がシーケンスを外れて完了すことを可能にすると共に、例外状態が検出された時にも命令の同時実行を可能にするパイプラインプロセッサにおける割込み処理のための装置を提供することにある。
【００１３】
【課題を解決するための手段】
本発明によるパイプラインプロセッサにおける割込み処理のための装置の主な特徴は、第１メモリと第２メモリと第３メモリとを備え、前記第１メモリは、アドレス指定可能な複数の第１メモリ記憶素子と、第１アドレスを第１命令から受け取るために前記複数の第１メモリ記憶素子に接続された第１アドレス入力手段と、第２アドレスを前記第１命令から受け取るために前記複数の第１メモリ記憶素子に接続された第２アドレス入力手段と、第３アドレスを受け取るために前記複数の第１メモリ記憶素子に接続された第３アドレス入力手段と、前記第１アドレスによってアドレス指定された第１オペランドを出力するため、及び、前記第２アドレスによってアドレス指定された第２オペランドを出力するために、前記複数の第１メモリ記憶素子に接続された第１メモリ出力手段とを有し、前記第１オペランド及び前記第２オペランドに関数処理を行い結果データを生成するために前記第１メモリ出力手段に接続された命令実行手段とを有し、前記第２メモリは、アドレス指定可能な複数の第２メモリ記憶素子を有し、前記第１アドレスを前記第２メモリ記憶素子の一つに記憶するために前記第１アドレス入力手段と前記第２メモリ記憶素子とに接続され、前記第３アドレス入力手段に前記第１アドレスを第３アドレスとして出力するために、前記第２メモリ記憶素子及び前記第３アドレス入力手段（ＳＢＩＮ端子）に接続されており、前記結果データを前記第３アドレスによってアドレス指定された前記第１メモリ記憶素子に選択的に記憶するために前記第２メモリ及び前記第３アドレス入力手段に接続された第１メモリ記憶制御手段を有し、前記第３メモリは、アドレス指定可能な複数の第３メモリ記憶素子を有し、第４アドレスを受け取るために前記複数の第３メモリ記憶素子に接続され、前記第２オペランドを前記第４アドレスによってアドレス指定された前記第３メモリ記憶素子に記憶するために前記第１メモリ出力手段及び前記複数の第３メモリ記憶素子に接続されており、前記関数処理が実行された時に例外(exception) が発生したか否かを示す例外データを生成する例外手段を前記命令実行手段が有し、前記第１メモリ記憶制御手段は、前記第１メモリと前記例外手段とに接続された禁止手段を有し、前記禁止手段は、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第３アドレスによってアドレス指定された前記第１メモリ記憶素子に前記結果データを記憶することを禁止することを特徴とする点にある。
【００１４】
【００１５】
さらに、前記第１アドレス入力手段と前記第２アドレス入力手段とに接続され、各命令の第１アドレスを前記第１アドレス入力手段に伝送することにより、且つ、各命令の第２アドレスを前記第２アドレス入力手段に伝送することにより、複数の命令を発行する命令発行手段や、前記命令発行手段と前記第２メモリとに接続され、第２命令の第１アドレスが前記第２メモリに記憶された第１アドレスに一致した場合に、前記第２命令の発行を禁止する発行制御手段を備えていることが好ましい。その他の好ましい具体構成については後述する。
【００１６】
【作用】
第１メモリである浮動小数点レジスタが複数の第１メモリ記憶素子を有し、第１アドレス入力手段が第１命令からＢオペランドアドレスを受け取り、第２アドレス入力手段が第１命令からＡオペランドアドレスを受け取る。Ａ及びＢオペランドアドレスは、複数の第１メモリ記憶素子である浮動小数点レジスタ記憶素子の一つをアドレス指定するのに使用される。第１メモリ出力手段である浮動小数点レジスタ出力手段がＡ及びＢオペランドアドレスによってアドレス指定されたオペランドデータを出力する。
【００１７】
命令実行手段が、浮動小数点レジスタから出力されたオペランドデータに基づいて、第１命令によって指定された関数処理を実行して結果データを生成する。命令実行手段が有する例外手段は、関数処理が実行された時に例外が発生したか否かを示す例外データを生成する。
【００１８】
第２メモリであるシフトレジスタが有する複数の記憶素子が、アドレスと制御情報とを記憶する。第２メモリが複数のシフトレジスタ記憶素子のうちの選択された一つの素子にＢオペランドデータを入力することにより、第１命令に対応する結果データが命令実行手段から出力されるのとほぼ同時に、記憶された第１命令のＢオペランドアドレスがシフトレジスタ出力手段から出力される。第２命令のＡオペランドアドレス又はＢオペランドアドレスがシフトレジスタに記憶されたＢオペランドアドレスと一致している場合は、この第２命令の発行は禁止される。この状況では第１命令に対する依存性が存在するからである。
【００１９】
浮動小数点レジスタが有するアドレス入力手段は、シフトレジスタ出力手段から出力されたＢオペランドアドレスを受け取る。関数処理が実行された時に例外が発生しない限り、第１メモリ記憶制御手段である浮動小数点レジスタ記憶制御手段が第１命令に対応する結果データを前述の記憶された第１命令Ｂオペランドアドレスによってアドレス指定された浮動小数点レジスタ記憶素子に記憶する。しかし、例外が発生した時には、誤りである可能性が高い値によって旧のＢオペランド値が破壊されてしまわないように、浮動小数点レジスタ記憶制御手段は結果データの浮動小数点レジスタへの記憶を禁止する。
【００２０】
第３メモリであるオペランドキュー（待ち行列）が、オペランドデータを記憶するための複数の記憶素子を有している。このオペランドキューが受け取るライトアドレス及びリードアドレスは、複数の第３メモリ記憶素子であるオペランドキュー記憶素子の一つをアドレス指定するのに使用される。オペランドキューデータ記憶手段が、浮動小数点レジスタから出力されたＡオペランドデータをライトアドレスによってアドレス指定されたオペランドキュー記憶素子に記憶し、オペランドキュー出力手段が、リードアドレスによってアドレス指定されたＡオペランド記憶データを出力する。
【００２１】
第４メモリであるトラップキューが備えられ、例外データを出力した命令に対応するＡオペランドデータを記憶するための複数の記憶素子を有している。トラップキューが受け取るライトアドレス及びリードアドレスは、複数の第４メモリ記憶素子であるトラップキュー記憶素子の一つをアドレス指定するのに使用される。例外状態が検出された場合は常に、トラップキュー記憶手段がオペランドキューから出力されたＡオペランドデータをライトアドレスによってアドレス指定されたトラップキュー記憶素子に記憶し、トラップキュー出力手段がリードアドレスによってアドレス指定されたデータを出力する。
【００２２】
例外が検出されたときは常に浮動小数点レジスタへの書き込みが禁止されるので、対応する命令のＢオペランドの元の値が依然有効である。更に、Ａオペランドの元の値がオペランドキューに記憶される。例外が検出されたとき、オペランドキューに記憶されたＡオペランドはトラップキューに移される。命令の発行が停止され、パイプライン内の残りの命令の実行は継続され、以降の例外も同様に取り扱われる。パイプラインがクリアされた後、トラップされた命令のＡ及びＢオペランドの元の値がトラップキューと浮動小数点レジスタとにそれぞれ記憶される。トラップされた命令は、処理状態をシーケンシャルアーキテクチャモデルに対応するように更新すべく記憶された値を使用して再実行（又はシミュレート）される。その後、第１の例外的状態を発生させた命令からではなく、例外が検出された時に発行される直前であったプログラム命令から処理が再開される。
【００２３】
【発明の効果】
従って本発明によれば、例外状態が検出された時にも命令の同時実行が可能となり、従来より一層処理速度を向上することができる。
【００２４】
【実施例】
以下、本発明の実施例を図面に基づいて説明する。図１は、パイプラインコンピュータシステムにおいて割込み処理を実行するための装置１０の概念を示すブロック図である。装置１０は、「Ａ ｏｐ Ｂ ＝Ｂ」なる形式の命令を発行する命令発行器１４を有している。命令発行器１４は、通信線２４，２６を通してＡアドレスレジスタ１８にＡオペランドアドレスを、Ｂアドレスレジスタ２２にＢオペランドアドレスをそれぞれ与える。そして、各アドレスレジスタ１８，２４から通信線３４，３８を通して浮動小数点レジスタ３０の第２アドレス入力手段であるＡＩＮ端子と第１アドレス入力手段であるＢＩＮ端子とに、第２及び第１アドレスであるＡ及びＢのオペランドアドレスがそれぞれ与えられる。命令発行器１４はロード／ストア命令をも発行し、ロード／ストアアドレスは通信線９０を通してロード／ストアアドレスレジスタ９２へ伝送される。ロード／ストアアドレスは通信線９４を通してロード／ストアアドレスレジスタ９２から浮動小数点レジスタ３０のＬＳＩＮ端子に入力される。
【００２５】
浮動小数点レジスタ３０は、キャッシュメモリ等から通信線４２を通してメモリデータが入力されるとともに通信線４６を通して他のデータ処理手段へデータを出力する汎用レジスタのスタックを備えている。Ａ及びＢのオペランドアドレスによってアドレス指定されたオペランドは単一エレメントによって代表されている複数の関数ユニット５０に、第１メモリ出力手段であるＡＯＵＴ端子、ＢＯＵＴ端子から通信線５４，５８を通して伝送される。関数ユニット５０は、Ａ及びＢのオペランドの関数を実行し、その結果データを浮動小数点レジスタ３０のＲＩＮ端子に通信線６２を通して伝送する。又、関数ユニット５０は、その関数を実行中に例外（トラップ）が発生した場合に、例外データを通信線６６に出力する。
【００２６】
Ｂアドレスレジスタ２２に記憶されたＢオペランドアドレスをシフトレジスタ８４の複数の段８０Ａ〜８０Ｈの一つに通信線８８を通して伝送すべく、シフトレジスタロード回路７２が通信線３８に接続されている。シフトレジスタ段８０Ｈには後述の理由で遅延素子８１が接続されている。又、後述の理由により、制御情報（通信線６６を通して伝送される例外データを含む）が通信線１０３を通してロードされる制御シフトレジスタ段９８Ａ〜９８Ｈが各シフトレジスタ段８０Ａ〜８０Ｈに接続されている。
【００２７】
ロード／ストアアドレスレジスタ９２に記憶されたロード／ストアアドレスを複数のシフトレジスタ段９６Ａ〜９６Ｈの一つに通信線９７を通して伝送すべく、別のシフトレジスタロード回路７３が通信線９４に接続されている。後述の理由により、シフトレジスタ段９６Ａ，９６Ｂには、制御情報が通信線１０１を通してロードされる制御シフトレジスタ段９９Ａ，９９Ｂが接続されている。
【００２８】
シフトレジスタ８４にはクロック信号線１００を通してクロック信号が供給される。後述の理由により、シフトレジスタ段８０Ａ〜８０Ｈ，９６Ａ，９６Ｂ，９８Ａ〜９８Ｈは記憶されたデータを各クロック信号毎に１シフトレジスタ段ずつシフトする。
【００２９】
シフトレジスタ段８０Ａ，９８Ａ，９９Ａ，９６Ａは記憶されたデータをそれぞれの通信線１０５〜１０８を通して記憶制御回路１０４に伝送する。記憶制御回路１０４はシフトレジスタ段８０Ａ，９８Ａ，９９Ａ，９６Ａからのデータを、通信線１１１，１１２，１１３，１１５を通して、浮動小数点レジスタ３０の第３アドレス入力手段であるＳＢＩＮ，ＳＣＴＬ，ＳＬＳＣＴＬ，ＳＬＳＩＮの各端子にそれぞれ伝送する。
【００３０】
装置１０は、更に、オペランドキュー（オペランド待ち行列）１１４とトラップキュー（トラップ待ち行列）１１８とからなるトラップレジスタ１１０を有している。オペランドキュー１１４は、通信線５４に接続された通信線１２８を通して受け取ったＡオペランド値を記憶するための複数の記憶手段を有している。最初の命令に対応するプログラムカウンタ値を、Ａオペランド値と共にオペランドキュー１１４に記憶させてもよく、あるいはＣＰＵに別個に記憶させてもよい。オペランドキュー１１４用のライトアドレスとして使用される第４アドレスであるカウント値はＬカウンタ１２２が発生し、発生したアドレスは通信線１２４を通してオペランドキュー１１４へ、そして通信線１３２を通してシフトレジスタ段９８Ａ〜９８Ｈへ伝送される。伝送されたライトアドレスは、シフトレジスタ段９８Ａまでシフトされると、記憶制御回路１０４から通信線１３６を通ってオペランドキュー１１４へ戻される。通信線１３６上の第５アドレスからなるアドレスはオペランドキュー１１４のリードアドレスとして機能する。
【００３１】
オペランドキュー１１４から読み取られたオペランド（及びオプションのプログラムカウンタ値）は、第３メモリ出力手段であるＪ端子から通信線１５０を通してトラップキュー１１８の第２メモリデータ記憶手段であるＭ端子に伝送される。トラップキュー１１８用のアドレスとして使用される第６アドレスとしてのカウント値はＭカウンタ１３８が発生し、発生したアドレスは通信線１３６を通してトラップキュー１１８に伝送される。Ｍカウンタ１３８には通信線１４６を介してＭカウンタ初期化回路１４２が接続されている。Ｍカウンタ初期化回路１４２は通信線６６に接続され、例外状態の最初の発生に対応してＭカウンタ１３８を初期化する。トラップキュー１１８用のアドレスとして使用される第７アドレスとしてのカウント値はＫカウンタ１５１が発生し、発生したアドレスは通信線１４６を通してトラップキュー１１８に伝送される。Ｋカウンタ１５１には通信線１５８を介してＫカウント初期化回路１５４が接続されている。
【００３２】
トラップキュー１１８から読み出されたオペランドは、第４メモリ出力手段であるＫ端子から通信線１８４を通して特殊関数回路１８０に伝送される。特殊関数回路１８０は、命令発行器１４から通信線１８８を通して受け取られる信号によって制御され、記憶されたオペランドを通信線１９２を通して通信線６２に与える。又、特殊関数回路１８０は制御信号を通信線１９６を通してトラップレジスタ１１０に与える。
【００３３】
特殊関数回路１８０は、ＭＯＶＥ命令のようにソースオペランドを通常一つだけ含み（例えばＡオペランド）例外状態を発生させない単純な命令のために、関数ユニット５０の代わりに用いられる。命令発行器１４は、関数ユニット５０がバイパスされることを特殊関数回路１８０に知らせる信号を通信線１８８に与える。これに応じて特殊関数回路１８０は、オペランドキュー１１４のＬカウンタ１２２にて指示されたアドレスに記憶されたＡオペランドをトラップキュー１１８のＫカウンタ１５１にて指示されたアドレスへ直ちに転送するための信号を、通信線１９６を通してトラップレジスタ１１０に与える。トラップレジスタ１１０はオペランドを特殊関数回路１８０に伝送し、特殊関数回路１８０にて所定の処理がオペランドに施される。その結果が（あれば）、通信線１９２及び６２を通して浮動小数点レジスタ３０のＲＩＮ端子に伝送される。
【００３４】
装置１０の全体処理は次の通りである。命令発行器１４が、通信線２４，２６を通してＡオペランドアドレスをＡアドレスレジスタ１８に、ＢオペランドアドレスをＢアドレスレジスタ２２にそれぞれ与えることにより命令を発行する。Ａ及びＢのオペランドアドレスは次に浮動小数点レジスタ３０に送られ、記憶されたオペランドのアドレス指定に用いられる。指定されたオペランドは通信線５４，５８を通して関数ユニット５０に送られる。これと同時に、シフトレジスタロード回路７２がＢオペランドアドレスをシフトレジスタ段８０Ａ〜８０Ｈの一つにストアし、これによってＢオペランドアドレスは、対応する命令の結果データが関数ユニット５０によって通信線６２に与えられるのとほぼ同時にシフトレジスタ段８０Ａにシフトされる。例えば、３クロック周期を必要とする命令に対応するＢオペランドアドレスであればシフトレジスタ段８０Ｃにストアされる。
【００３５】
本実施例において、浮動小数点除算命令以外のすべての命令は７クロック周期以下で実行されるが、浮動小数点除算命令の実行には例えば３０クロック周期が必要である。そこで、シフトレジスタ８４を３０段にする代わりに、浮動小数点除算命令用のＢオペランドアドレスをシフトレジスタ段８０Ｈにストアし、遅延素子８１によって時間を稼いで７クロック周期が残るようにする。その後、Ｂオペランドアドレスはシフトレジスタ段８０Ｇへとシフトされ、以後は他の命令のＢオペランドアドレスと同様に処理される。
【００３６】
ロード／ストア命令の場合は、ロード／ストアアドレスがロード／ストアアドレスレジスタ９２に置かれたのち浮動小数点レジスタ３０とシフトレジスタ段９６Ａ，９６Ｂとに伝送される。本実施例において、ロード／ストア命令は２クロック周期を要するので、ロード／ストアアドレスはシフトレジスタ段９６Ｂに入力される。
【００３７】
Ａオペランドが通信線５４に与えられると、オペランドキュー１１４にも伝送され、Ｌカウンタ１２２によって生成された値によって指定された位置に（場合によっては対応するプログラムカウンタ値と共に）記憶される。Ｌカウンタ値はシフトレジスタ段９８Ａ〜９８Ｈにも送られ、Ｂオペランドアドレスを記憶しているシフトレジスタ段８０Ａ〜８０Ｈのいずれかに対応するシフトレジスタ段に記憶される。例えば、Ｂオペランドアドレスがシフトレジスタ段８０Ｅに記憶されていた場合はＬカウンタ値がシフトレジスタ段９８Ｅに記憶される。
【００３８】
命令のＢオペランドアドレスは、対応する制御情報と共に、各クロック毎に１レジスタ段ずつシフトレジスタ段８０Ａ及び９８Ａまでシフトされる。その時、記憶制御回路１０４が制御情報を調べてＢオペランドアドレスを浮動小数点レジスタ３０のＳＢＩＮ端子へ伝送する。更に、最初の命令の結果データが通信線６２を通して浮動小数点レジスタのＲＩＮ端子に伝送されなければならない。次に、通信線１１１上の第３アドレスであるＢオペランドアドレスによって指定された位置に結果データを記憶するための信号が通信路１１２を通して浮動小数点レジスタ３０のＳＣＴＬ端子に伝送される。
【００３９】
オペランドデータに関数処理が実行されている間に例外状態が発生すれば、例外データが通信線６６に出力され、命令のＢオペランドアドレスに対応するシフトレジスタ段と記憶制御回路１０４とに伝送される。例外データがシフトレジスタ段９８Ａまでシフトされると、記憶制御回路１０４が結果データの浮動小数点レジスタ３０への記憶を禁止する信号を通信線１１２に出力して浮動小数点レジスタ３０のＳＣＴＬ端子に伝送する。更に、シフトレジスタ段９８Ａに記憶されたオペランドキューアドレスが通信線１３６を通してオペランドキュー１１４に送られ、例外(exception) を発生した命令に対応するＡオペランドをアドレス指定する。アドレス指定されたＡオペランド（及びオプションのプログラムカウンタ値）は通信線１５０を通してトラップキュー１１８へ伝送され、Ｍカウンタ１３８が発生したアドレスに記憶される。初めて例外が発生したのであれば、Ａオペランドがトラップキュー１１８に記憶される前にＭカウンタ初期化回路１４２がＭカウンタ１３８を初期化する。そうでない場合は、Ａオペランドがトラップキュー１１８に記憶される前にＭカウンタがインクレメントされる。
【００４０】
ロード／ストア命令が発行されていた場合は、命令のロード／ストアアドレスが、対応する制御情報と共に、各クロック毎に１レジスタ段ずつシフトレジスタ段９８Ａ，９９Ａまでシフトされる。その時、記憶制御回路１０４が制御情報を調べてロード／ストアアドレスを通信線１１５を通して浮動小数点レジスタ３０のＳＬＳＩＮ端子に伝送する。ロード命令である場合は、メモリデータが通信線４２を通して浮動小数点レジスタ３０のＭＤＩＮ端子に送られなければならない。その後、通信線１１３上のロード／ストアアドレスによってアドレス指定された位置にメモリデータを記憶するための信号が通信線１１３を通して浮動小数点レジスタ３０のＳＬＳＣＴＬ端子に与えられる。ストア命令である場合は、アドレス指定されたメモリデータを通信線４６に出力するための信号が通信線１１３に出力され浮動小数点レジスタ３０のＳＬＳＣＴＬ端子に伝送される。
【００４１】
通常、ロード／ストア命令では指定された旧値を記憶しておく必要はない。従ってこれらの命令は、関数ユニット５０を使用する命令と同時に実行されることが許容される。しかしながら、何らかの理由によりロード／ストア命令が中断されるべき場合は、その影響に関する制御情報が通信路１０１を通してシフトレジスタ段９９Ａ又は９９Ｂに記憶される。制御情報がシフトレジスタ段９９Ａまでシフトされると、記憶制御回路１０４はロード／ストア命令を禁止する信号を通信路１１３を通して浮動小数点レジスタ３０のＳＬＳＣＴＬ端子に伝送する。
【００４２】
パイプラインプロセッサにおける割込処理のための公知の装置とは異なり、既に発行された命令は、前の命令において例外状態が発生した場合であっても継続実行が許容される。トラップされた命令に続く命令が自らは例外状態を発生することなく完了した場合は、結果データは通常の場合と同様に記憶される。他の命令が例外状態を発生させた場合は、結果データの記憶は禁止され、オペランドキュー１１４に記憶された関連するＡオペランドがトラップキュー１１８のＭカウンタ１３８（例外状態が発生する毎にインクレメントされる）によって指定されるアドレスに転送される。シフトレジスタ８４が空になった後、Ｋカウント初期化回路１５４がＫカウンタ１５１を初期化し、Ａオペランドがトラップレジスタ１１８から読み出され、通信線１８４，１９２を通して浮動小数点レジスタ３０のＲＩＮ端子に伝送され記憶される。例外状態を発生させた命令は、その後トラップレジスタ１１８又はＣＰＵに記憶されたプログラムカウンタ値を用いて再実行され、或はシーケンシャルアーキテクチャモデルに対応するように浮動小数点レジスタ３０を更新すべく適当なソフトウェアにてシミュレートされる。
【００４３】
以上説明した本発明の実施例に種々の変更を施して実施してもよい。例えば、Ｂオペランド値を記憶する別のトラップレジスタを追加することによって、「Ａｏｐ Ｂ ＝ Ｃ」なる形式の命令を発行する命令発行器と共に使用できるように改造することも可能である。
【図面の簡単な説明】
【図１】本発明によるパイプラインプロセッサにおける割込処理のための装置の一実施例を示すブロック図
【符号の説明】
１４        命令発行手段
ＡＩＮ      第２アドレス入力手段
ＢＩＮ      第１アドレス入力手段
３０        第１メモリ
５０        命令実行手段
８４        第２メモリ
ＳＢＩＮ    第３アドレス入力手段
１０４      第１メモリ記憶制御手段
１１４      第３メモリ
１１８      第４メモリ平成１５年１２月２４日付けで出願人名義変更届を提出しております。
【図１】
0003556246.tif 000002