(57)【特許請求の範囲】
【請求項１】
プログラムされた命令の実行を制御する計算機の制御方法であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
前記第一のステップにおいて、例外動作の必要性が検出された場合には、前記例外動作を留保する第二のステップと、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記例外動作が必要とされる場合には、前記例外動作を遂行する第三のステップと、
前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する第四のステップと、を有し、
前記第二のステップでは、前記例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、
所定の命令を実行することにより前記識別情報が無効化されるステップを更に有する、
ことを特徴とする計算機の制御方法
【請求項２】
プログラムされた命令の実行を制御する計算機の制御方法であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
前記第一のステップにおいて、例外動作の必要性が検出された場合には、前記例外動作を留保する第二のステップと、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記例外動作が必要とされる場合には、前記例外動作を遂行する第三のステップと、
前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する第四のステップと、を有し、
前記第二のステップでは、前記例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、
所定の命令を実行することにより、前記識別情報を読み出し、又は、前記識別情報を書き換えるステップを更に有する、
ことを特徴とする計算機の制御方法。
【請求項３】
前記第二のステップにおいて、前記例外動作を必要とする例外起因命令が検出された場合、
前記第４のステップでは、前記例外動作が終了したときに、前記プログラムに復帰して前記例外起因命令から順次実行する、
ことを特徴とする請求項１又は２記載の計算機の制御方法。
【請求項４】
プログラムされた命令を実行する計算機であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行するよう制御する制御手段と、
前記後置された命令の実行中に、例外動作の必要性が検出された場合には、前記例外動作を留保する例外抑止手段と、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記例外抑止手段により留保された前記例外動作が必要とされる場合には、前記例外動作を遂行する例外動作実行手段と、
前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する復帰手段と、
所定の命令を実行することにより、前記識別情報を無効化する識別情報無効化手段と、を有し、
前記例外抑止手段は、前記例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、
ことを特徴とする計算機。
【請求項５】
プログラムされた命令を実行する計算機であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行するよう制御する制御手段と、
前記後置された命令の実行中に、例外動作の必要性が検出された場合には、前記例外動作を留保する例外抑止手段と、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記例外抑止手段により留保された前記例外動作が必要とされる場合には、前記例外動作を遂行する例外動作実行手段と、
前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する復帰手段と、
所定の命令を実行することにより、前記識別情報を読み出す識別情報読み出し手段と、
所定の命令を実行することにより、前記識別情報を書き換える識別情報書き換え手段と、を有し、
前記例外抑止手段は、前記例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、
ことを特徴とする計算機。
【請求項６】
前記例外抑止手段が、前記後置された命令の実行中に前記例外動作を必要とする例外起因命令を検出した場合、
前記例外動作が終了したときに、前記復帰手段は前記プログラムに復帰して前記例外起因命令から順次実行する、
ことを特徴とする請求項４又は５記載の計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムされた命令を実行する計算機とその制御方法に関するものである。
【０００２】
【従来の技術】
図１は、汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。図１に示されるように、この計算機はメモリ１と、メモリ１に接続された命令読み出し部３と、メモリ１及び命令読み出し部３に接続された命令実行部６と、命令実行部６に接続されたレジスタ制御部８と、命令読出し部３と命令実行部６及びレジスタ制御部８に接続された割り込み制御部９とを備える。
ここで、命令読み出し部３は命令読み出し制御部１１と、プログラムカウンタ（ＰＣ）１３と、命令語レジスタ（ＩＲ）１５とを含む。そして、命令読み出し制御部１１はメモリ１に接続され、プログラムカウンタ（ＰＣ）１３は命令読み出し制御部１１に接続される。さらに、命令語レジスタ（ＩＲ）１５は命令読み出し制御部１１に接続される。
【０００３】
また、命令実行部６は命令デコード部１７と、ロード命令実行部１９と、ストア命令実行部２１と、演算命令実行部２２と、命令実行回路２３と、浮動小数点（Ｆ）ロード命令実行部２５と、浮動小数点（Ｆ）ストア命令実行部２７と、浮動小数点（Ｆ）演算命令実行部２９とを含む。
【０００４】
そして、命令デコード部１７は命令語レジスタ１５に接続され、ロード命令実行部１９はメモリ１及び命令デコード部１７に接続される。また、ストア命令実行部２１は命令デコード部１７及び後述する汎用レジスタ３７に接続され、演算命令実行部２２は命令デコード部１７と汎用レジスタ３７及び後述する条件レジスタ３０に接続され、命令実行回路２３は命令デコード部１７と汎用レジスタ３７及び後述するレジスタ３１，３３，３５に接続される。
【０００５】
また、浮動小数点ロード命令実行部２５はメモリ１及び命令デコード部１７に接続され、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９は命令デコード部１７及び後述する浮動小数点レジスタ３９に接続される。
【０００６】
一方、レジスタ制御部８は条件レジスタ３０と、レジスタ（ＥＰＣＲ）３１と、レジスタ（ＥＰＳＲ）３３と、レジスタ（ＰＳＲ）３５と、汎用レジスタ３７と、浮動小数点レジスタ３９とを含む。ここで、条件レジスタ３０は演算命令実行部２２と命令実行回路２３及び浮動小数点演算命令実行部２９に接続され、レジスタ（ＥＰＣＲ）３１とレジスタ（ＥＰＳＲ）３３及びレジスタ（ＰＳＲ）３５は、さらに割込制御部４０に接続される。また、汎用レジスタ３７はロード命令実行部１９とストア命令実行部２１及び命令実行回路２３に接続される。また、浮動小数点レジスタ３９は浮動小数点ロード命令実行部２５と、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９に接続される。
【０００７】
また、割り込み制御部９は割込制御回路４０を含む。そして、この割込制御回路４０は命令読出制御部１１とプログラムカウンタ１３、ロード命令実行部１９、ストア命令実行部２１、演算命令実行部２２、命令実行回路２３、浮動小数点ロード命令実行部２５、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９などに接続される。
【０００８】
上記のような構成を有する計算機において、命令読み出し部３はプログラムカウンタ１３が示す命令語をメモリ１から読み出し、命令語レジスタ（ＩＲ）１５を介して命令実行部６へ供給する。また命令読出制御部１１は、命令実行部６あるいは割込処理を行う割込制御回路４０より分岐先アドレスが供給された場合には、それをプログラムカウンタ１３へ書き込む。なお命令読出制御部１１は、それ以外の場合には次の命令語を命令実行部６へ供給するため、読み出すべき命令語のアドレスを示すプログラムカウンタ１３をインクリメントする。また、命令語を読み出す際に割り込みを検出した場合には、割込制御回路４０へ割込信号を供給する。
【０００９】
また、命令デコード部１７は、命令語レジスタ１５から供給された命令をデコードし、ロード命令の場合にはロード命令実行部１９へ、ストア命令の場合にはストア命令実行部２１へ、演算命令の場合には演算命令実行部２２へ、浮動小数点ロード命令の場合には浮動小数点ロード命令実行部２５へ、浮動小数点ストア命令の場合には浮動小数点ストア命令実行部２７へ、浮動小数点演算命令の場合には浮動小数点演算命令実行部２９へ、割込復帰命令やその他の命令の場合には命令実行回路２３へそれぞれ供給する。
【００１０】
また、ロード命令実行部１９はロード命令が供給された場合には、図２に示されるように、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を汎用レジスタ３７へ書き込む。ここでロード命令は、図３に示されるように、命令コードOP-CODE とレジスタを指定するコードGR1,GR2,GRD とを含む。そして、コードGR1 が示すレジスタの値とコードGR2 が示すレジスタの値を加算した結果がロード対象とするデータのアドレスを意味し、コードGRD は読み出した結果を保持するレジスタの番号を意味する。なお、ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１１】
同様に、ストア命令実行部２１はストア命令が供給された場合には、図４に示されるように、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ３７の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。ここでストア命令は、図５に示されるように、命令コードOP-CODE とレジスタを指定するコードGR1,GR2,GRS とを含む。そして、コードGR1 が示すレジスタの値とコードGR2 が示すレジスタの値を加算した結果がストア対象とするデータのアドレスを意味し、コードGRS は書き込む値を保持するレジスタの番号を意味する。なお、ストア命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１２】
また、演算命令実行部２２は演算命令が供給された場合には、図６に示されるように、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ３７の領域からデータを読み出し、そのデータに基づき演算し、該演算結果を汎用レジスタ３７へ書き込む。なお演算命令は、図３に示された上記ロード命令と同じ形式を有する。さらに演算命令実行部２２は、比較命令が供給された場合には、汎用レジスタ３７から読み出された二つの値を比較し、該二つの値が等しい場合には真であることを示すデータを、該二つの値が等しくない場合には偽であることを示すデータを条件レジスタ３０へ書き込む。
【００１３】
また、浮動小数点ロード命令実行部２５は、浮動小数点ロード命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を浮動小数点レジスタ３９へ書き込む。なお、浮動小数点ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１４】
また、浮動小数点ストア命令実行部２７は、浮動小数点ストア命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する浮動小数点レジスタ３９の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。なお、浮動小数点ストア命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１５】
また、浮動小数点演算命令実行部２９は、浮動小数点演算命令が供給された場合には浮動小数点レジスタ３９から読み出した値に基づき演算を実行し、その結果を浮動小数点レジスタ３９へ書き込む。そしてさらに、浮動小数点演算命令実行部２９は、浮動小数点比較命令が供給された場合には浮動小数点レジスタ３９から読み出した二つの値を比較し、その結果として、該二つの値が等しいか否かにより真又は偽を示す値を条件レジスタ３０へ書き込む。
【００１６】
また、命令実行回路２３は、命令デコード部１７から分岐命令が供給された場合には、分岐成立時に分岐先アドレスをプログラムカウンタ１３へ供給する。さらに、命令デコード部１７から条件分岐命令が供給された場合には、条件レジスタ３０に格納された値が真であることを示すものである時に分岐先アドレスをプログラムカウンタ１３へ供給する。同様に割込み復帰命令が供給された場合には、割込み発生前の動作状態を示すデータをＰＳＲ３５へ書き込む。そしてこのとき、ＥＰＣＲ３１から復帰先の命令のアドレスを読み出し、それを分岐先アドレスとしてプログラムカウンタ１３へ供給する。なお、上記命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１７】
また、条件レジスタ３０は比較命令に応じて真あるいは偽を示すデータ（値）を保持する。なお、該値は条件分岐命令に応じて参照される。また、ＥＰＣＲ３１は割込みからの復帰先に該当する命令のアドレスを保持し、そのアドレスは割込み発生時に設定される。また、ＰＳＲ３５は動作状態（state ）を示すデータを保持し、ＥＰＳＲ３３は割込み発生時に設定された割込み発生前の動作状態を示すデータを保持する。
【００１８】
また、割込制御回路４０は命令読み出し部３あるいは命令実行部６から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３へ供給する。
【００１９】
以下に、上記計算機の動作を要約すると、初期動作状態を通常の動作としたとき次のようになる。通常の動作においては、命令読み出し部３は、プログラムカウンタ１３が示す命令語を読み出し、命令実行部６へ供給し、命令実行部６は供給された命令を実行する。
【００２０】
一方、割り込みが発生した時には、割込制御回路４０は命令読み出し部３あるいは命令実行部６から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３へ供給する。また、命令読み出し部３は割込制御部９から供給された分岐先アドレスに応じて命令語を読み出し、命令実行部６へ供給する。そして、以降においては上記の通常の場合と同様に動作する。
【００２１】
また、割り込みから復帰する時は、命令実行部６は割込み復帰命令を実行することにより、ＥＰＳＲ３３の値をＰＳＲ３５へ書き込む。また、ＥＰＣＲ３１に格納されたデータを読み出し、その結果を分岐先アドレスとして命令読み出し部３へ供給する。このとき命令読み出し部３は、命令実行部６から供給された分岐先アドレスに基づいて命令語を読み出し、命令実行部６へ供給する。そして、以降においては上記通常の動作がなされる。
【００２２】
以上のような従来の計算機では、プログラムを構成する命令語の並列性を活用し、計算機の命令レベルでの処理能力を向上させる手法として、スーパースカラや投機的実行（speculative execution ）といった、同時に複数の命令を実行する制御方式が採られている。ここで、一般にこのような計算機では、複数の命令実行部を有し、プログラムに含まれる命令を順次実行するが、１サイクルにおいて複数の命令がメモリから読み出され、また該命令相互の依存関係が考慮されつつ１サイクル中で複数の命令が発行されうる。
【００２３】
また、この時命令の実行制御において、アウト・オブ・オーダー完了（out-of-order completion ）を採ることで、計算機の命令レベルでの処理能力をより向上させることができる。ここで、「アウト・オブ・オーダー完了」とは、プログラム上における命令の順序すなわち命令の発行順序と、命令の実行順序すなわち命令の完了順序とが異なることを意味する。そして、このような実行制御を行うことにより、命令実行部の有効稼働率を高め、プログラムの全体的な実行時間の短縮が図られている。なお、アウト・オブ・オーダー完了において、プログラムが生成された時の命令の順序を保証するためには、データ依存関係や制御依存関係といった命令の依存関係が考慮されるが、これらの依存関係は命令語に記されている情報から抽出される。
【００２４】
さらに、上記のような計算機の性能をより向上させるべく、コンパイラ他によってプログラムが生成された時に命令の順序を変更するといった手法が知られており、このような手法を「命令移動」という。そして、この「命令移動」は命令実行部の有効稼働率を高める点や、早期に命令の実行を開始することによりレイテンシを隠蔽できる点で有効な手法とされる。すなわち、例えばロード命令を実行する場合には、メモリへのロード操作を早期に開始することで、潜在的なキャッシュミスを含むメモリアクセスの遅延を隠蔽できる可能性がある。
【００２５】
ここで、上記のような命令移動において、特にコンパイラにおける基本ブロックの境界を越えた命令移動を行うものは、広域命令移動と呼ばれており、さらに広域命令移動において条件分岐を越えて命令移動を行うものは、投機的命令移動と呼ばれている。しかし、このように投機的に移動した命令において例外が発生した場合、例外処理を必要とするため大幅な性能の低下を招いたり、本来のプログラムの順序ではあり得なかったプログラム実行における不正な停止を招いたりする。
【００２６】
すなわち例えば、必要とされるデータがメモリ上に無い状態であるページフォルト（page fault）を起こす可能性がある命令を投機的に移動した場合には、移動先においてページフォルトを伴う例外処理プログラムが実行されることとなり、本来の順序では生じ得なかったページフォルトによって性能が低下する。また、例えば除算命令を投機的に移動した場合には、移動先においてゼロで除算する処理（ゼロ除算）が発生することも生じるが、このような場合にはプログラムの実行が停止することとなる。なお上記のように、投機的に移動した命令の実行において発生した例外は投機的例外と呼ばれる。
【００２７】
そして、上記問題を解決する方法として、例外抑止（non-excepting）命令を用いて投機的例外の発生を延期する方法については知られている。すなわち、投機的例外処理を延期する例外抑止命令方式について、文献  "A VLIW architecture for a trace scheduling compiler", Proceedings of the 2nd International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 180-192, 1987 （B. P. Colwel, B. P. Nix, J. J. O'Donnel, D. B. Papworth and P. K. Rodman 共著）が発行されており、例外抑止命令方式を拡張し、投機的例外からの実行の再開を実現したスケジューリングについて、文献  "Sentinel Scheduling for VLIW and Superscalar Processor", Proceedings of the Fifth International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 238-247, 1992 （S. A. Mahlke, W. Y. Chen, W. W. Hwu, B. R. Rau and M. S. Schlansker 共著）が発行されている。
【００２８】
一方、上記例外にはページフォルトのように、例外要因を解消することにより本来の処理が続行可能なものと、ゼロ除算のように本来の処理を続行することが不可能なものとがある。そして、上記の例外抑止命令によるデータの処理方式においては、いずれの例外も投機的例外として検出され、所定期間延期された後に実行される。
【００２９】
しかしながら、上記において続行可能な例外処理及びそれに続く本来の処理は、割り込み処理プログラムを実行することによりなされていたため、全体としてプログラムが長大化する結果、計算機に必要な記憶容量が増大すると共に、処理速度が低下するという問題があった。
【００３０】
【発明が解決しようとする課題】
本発明は、上述の問題点を解消するためになされたもので、動作の高速化により処理能力が高められた計算機とその制御方法を提供することを目的とする。
【００３１】
【課題を解決するための手段】
上記の目的は、プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作の必要性が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行する第四のステップとを有し、第二のステップでは、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与されて、また、所定の命令を実行することにより前記識別情報が無効化されるステップを更に有する、計算機の制御方法を提供することにより達成される。このような手段によれば、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行することにより、動作の高速化を図ることができる。該識別情報に応じて例外動作による処理が必要であるか否かが判別されることで、さらに動作の高速化を図ることができる。また、所定の命令を実行することにより、留保される例外動作を実行するための情報や識別情報を無効化できるようにすることで、複数の命令について実行順序を変更することができるため、計算機の処理能力を高めることができる。
【００３２】
また本発明の目的は、プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作の必要性が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行する第四のステップとを有し、第二のステップでは、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与されて、  所定の命令を実行することにより、前記識別情報を読み出し、又は、前記識別情報を書き換えるステップを更に有する、ことを特徴とする計算機の制御方法を提供することにより達成される。
このような手段によれば、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行することにより、動作の高速化を図ることができる。該識別情報に応じて例外動作による処理が必要であるか否かが判別されることで、さらに動作の高速化を図ることができる。
また、所定の命令を実行することによって、識別情報を読み出し、又は識別情報を書き換えることができるようにすれば、複数の命令において重畳的に実行順序を変更することができるため、計算機の処理能力を高めることができる。
また、本発明の目的は、第二のステップにおいて、例外動作を必要とする例外起因命令が検出された場合、前記第４のステップでは、前記例外動作が終了したときに、前記プログラムに復帰して前記例外起因命令から順次実行する、ことを特徴とする計算機の制御方法を提供することで達成される。このような手段によれば、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行するため、動作の高速化を図ることができる
【００３３】
また本発明の目的は、プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作の必要性が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行する復帰手段と、所定の命令を実行することにより、識別情報を無効化する識別情報無効化手段と、を有し、例外抑止手段は、例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、ことを特徴とする計算機を提供することにより達成される。
【００３４】
また本発明の目的は、プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作を必要とする例外起因命令が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行する復帰手段と、所定の命令を実行することにより、識別情報を読み出す識別情報読み出し手段と、所定の命令を実行することにより、識別情報を書き換える識別情報書き換え手段と、を有し、例外抑止手段は、例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、ことを特徴とする計算機を提供することにより達成される。
また、本発明の目的は、例外抑止手段が、後置された命令の実行中に例外動作を必要とする例外起因命令を検出した場合、例外動作が終了したときに、復帰手段は前記プログラムに復帰して例外起因命令から順次実行することを特徴とする計算機を提供することにより達成される。
【００３５】
【発明の実施の形態】
以下において、本発明の実施の形態を図面を参照しつつ詳しく説明する。なお、図中同一符号は、同一又は相当部分を示す。
［実施の形態１］
図７は、本発明の実施の形態１に係る計算機の構成を示す図である。図７に示されるように、本実施の形態１に係る計算機は、図１に示された従来の計算機に対して履歴制御部１７３をさらに備え、命令実行部１７０には例外抑止ロード命令実行部２４、コミット命令実行部２６、例外抑止履歴読み出し命令実行部２８、例外抑止履歴書き込み命令実行部２０を含み、レジスタ制御部１７１には例外抑止フラグ３８を含み、割り込み制御部１０にはコミット例外割り込み制御部４４を含む点で相違する。
【００３６】
ここで、履歴制御部１７３は例外抑止履歴書き込み命令実行部２０と例外抑止ロード命令実行部２４、コミット命令実行部２６、例外抑止履歴読み出し命令実行部２８、及びコミット例外割り込み制御部４４に接続される。また、例外抑止履歴書き込み命令実行部２０とコミット命令実行部２６、及び例外抑止履歴読み出し命令実行部２８は、さらに命令デコード部１７と汎用レジスタ３７に接続される。そして、例外抑止ロード命令実行部２４はさらにメモリ１に接続される。
【００３７】
また、例外抑止フラグ３８は汎用レジスタ３７に並設され、コミット例外割り込み制御部４４はさらにプログラムカウンタ（ＰＣ）１３とレジスタ３１，３３，３５に接続される。
【００３８】
上記のような構成を有する本実施の形態に係る計算機において、例外抑止ロード命令実行部２４は、例外抑止ロード命令が供給された場合には、まず最初に汎用レジスタ３７より読み出した値から実効アドレスを求め、該実効アドレスに対応するメモリ１内の領域からデータを読み出す。そして、図９に示されるように、ステップＳ１において読み出したデータの中に例外要因が存在するか否か確認する。その結果、ステップＳ２において例外要因が存在しないと判断された場合には、ステップＳ３へ進みロード対象アドレス域から読み出した上記データを、汎用レジスタ３７へ書き込む。
【００３９】
一方、ステップＳ２において例外要因が存在すると判断された場合には、ステップＳ１０へ進み、履歴制御部１７３へ登録指示信号が供給されることにより、検出された例外情報が履歴制御部１７３に記憶される。このとき、ステップＳ１１において、上記例外情報が記憶されるレジスタに対応する例外抑止フラグ３８に１の値が設定され有効とされる。なお、例外抑止ロード命令の命令形式は、図３に示されたロード命令の命令形式と同様なものである。
【００４０】
次にコミット命令実行部２６は、コミット命令が供給された場合には、図１０のステップＳ１に示されるように、該命令により指定された汎用レジスタ３７内のレジスタに対応する例外抑止フラグ３８が有効か否か確認する。そして、ステップＳ２において、該フラグに１が設定されており有効であると判断された場合には、ステップＳ３へ進み該例外抑止フラグ３８を０として無効にする。そして、ステップＳ４において履歴制御部１７３へ確認指示信号が供給される。これにより、コミット例外が発生したことが割り込み制御部１０へ伝達される。なお、ステップＳ２において例外抑止フラグ３８が無効であると判断された場合には、コミット命令による動作を終了する。なおコミット命令の命令形式は、図１１に示されるように、命令コードOP-CODE とレジスタを指定するコードGRとからなる。
【００４１】
次に、例外抑止履歴読み出し命令実行部２８は、例外抑止履歴読み出し命令が供給された場合、履歴制御部１７３へ読み出し指示信号を供給することにより、履歴制御部１７３に記憶されている上記例外情報を読み出し、汎用レジスタ３７へ書き込む。また、同様に例外抑止履歴書き込み命令実行部２０は、例外抑止履歴書き込み命令が供給された場合、汎用レジスタ３７から読み出したデータと書き込み指示信号を履歴制御部１７３へ供給して、該読み出したデータを履歴制御部１７３に書き込む。
【００４２】
またコミット例外割り込み制御部４４は、履歴制御部１７３から供給された割り込みを通知するコミット信号ＣＭに応じて、割り込みからの復帰先の命令アドレスをレジスタ（ＥＰＣＲ）３１へ書き込み、割り込み発生前の動作状態を示すデータをレジスタ（ＥＰＳＲ）３３へ書き込み、発生した割り込みに対応する動作状態をレジスタ（ＰＳＲ）３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ（ＰＣ）１３へ供給する。
【００４３】
次に履歴制御部１７３は、コミット命令実行部２６から供給された確認指示信号に応じて、指定されたレジスタ番号に例外情報が保持されているか否か確認する。そして、指定されたレジスタ番号に例外情報が保持されている場合には、コミット例外を検出したことを示すコミット信号ＣＭをコミット例外割り込み制御部４４へ供給する。
【００４４】
また、例外抑止履歴読み出し命令実行部２８から供給された読み出し指示信号に応じて、記憶されている例外情報を読み出して例外抑止履歴読み出し命令実行部２８へ供給する。さらに、例外抑止履歴書き込み命令実行部２０から供給された書き込み指示信号に応じて、供給されたデータを記憶する。
【００４５】
図８は、図７に示された履歴制御部１７３の構成を示す図である。図８に示されるように、履歴制御部１７３は、アドレスレジスタ５７と、データタイプレジスタ５９と、レジスタ番号レジスタ６１と、例外要因（ＥＣ）レジスタ１７５と、レジスタタイプレジスタ１０５と、デコード回路６５と、比較器６７〜６９と、ＥＣフィールド（EC）１７７〜１７９と、Ｖフィールド１５１〜１５３と、レジスタタイプフィールド（RT）１０７〜１０９と、アドレスフィールド（ADDR）７１，７５，７９と、データタイプフィールド（DT）７２，７６，８０と、レジスタ番号フィールド（REG ＃）７３，７７，８１と、コミット判定部１８０と、コミットエントリ検出部１８１と、無効エントリ検出部８７と、例外抑止履歴登録制御部１８３と、コミット命令実行部１８５と、例外抑止履歴読み出し命令実行部１８７と、例外抑止履歴書き込み命令実行部１８９とを含む。
【００４６】
ここでアドレスレジスタ５７と、データタイプレジスタ５９と、レジスタ番号レジスタ６１と、レジスタタイプレジスタ１０５と、ＥＣレジスタ１７５及びデコード回路６５は命令実行部１７０に接続される。そして、アドレスレジスタ５７は、例外抑止ロード命令が実行される際の実効アドレスを保持する。また、データタイプレジスタ５９は、例外抑止ロード命令の実行においてロードストア対象とされるデータの型（大きさ）を示す識別値を保持する。そして、レジスタ番号レジスタ６１は、例外抑止ロード命令の実行において書き込み対象とするレジスタ番号を保持する。
【００４７】
またレジスタタイプレジスタ１０５は、操作対象とするレジスタの型を示す識別値を保持する。そして、ＥＣレジスタ１７５は例外抑止ロード命令を実行するとき検出された例外要因の識別値を保持する。ここで、該例外要因とその識別値の例が、以下の表１に示される。
【００４８】
【表１】
0003748191.tif 000002
また、デコード回路６５は命令実行部１７０から供給された信号を解析し、対応する制御部を起動する。すなわち、供給される登録指示信号に応じて例外抑止履歴登録制御部１８３を起動し、確認指示信号に応じてコミット命令実行部１８５を起動し、読み出し指示信号に応じて例外抑止履歴読み出し命令実行部１８７を起動し、書き込み指示信号に応じて例外抑止履歴書き込み命令実行部１８９を起動する。
【００４９】
一方比較器６７〜６９は、レジスタ番号レジスタ６１とレジスタタイプレジスタ１０５、及び対応するエントリに接続される。ここで、並設された複数のエントリは例外抑止履歴テーブルを構成するが、各エントリは例外要因を示すＥＣフィールド（EC）１７７〜１７９と、対応するエントリに例外が発生したか否かを２値データにより示すＶフィールド１５１〜１５３と、例外情報が格納されたレジスタの種別を示すレジスタタイプフィールド（RT）１０７〜１０９と、例外処理の対象とするデータの実効アドレスを示すアドレスフィールド（ADDR）７１，７５，７９と、ロード操作の対象とされるデータの型を示すデータタイプフィールド（DT）７２，７６，８０と、例外情報が書き込まれたレジスタの番号を示すレジスタ番号フィールド（REG ＃）７３，７７，８１とを含む。
【００５０】
なお、上記データタイプフィールド（DT）７２，７６，８０にはデータの型に応じた識別値が記録されるが、この識別値の例が以下の表２に示される。
【００５１】
【表２】
0003748191.tif 000003
上記表２に示されるように、該識別値は例えば符号無しバイトに対して０、符号付きバイトに対しては１、符号無しハーフワードには２、符号付きハーフワードには３、ワードには４、ダブルワードには５、クワッドワードには６とされる。
【００５２】
また、上記レジスタタイプフィールド１０７〜１０９には、レジスタの種別に応じた識別値が記録されるが、この識別値の例が以下の表３に示される。
【００５３】
【表３】
0003748191.tif 000004
そして上記比較器６７〜６９は、レジスタ番号フィールド７３，７７，８１やレジスタタイプフィールド１０７〜１０９に記録された値から特定される例外情報が書き込まれたレジスタと、コミット命令により指定されたレジスタとが一致しているか否かを比較し、両者が一致するか否かを示す信号を出力する。
【００５４】
また、コミット判定部１８０は比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、例外情報が格納されているレジスタがコミット命令により指定されているか否かを判定する。そして、その判定結果をコミット命令実行部１８５へ出力すると共に、コミット信号ＣＭをコミット例外割り込み制御部４４へ供給する。
【００５５】
そして、コミットエントリ検出部１８１は、比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、コミット命令により指定されたレジスタの番号と所定のフィールドに記録されているレジスタの番号とが一致したエントリの番号を検出する。
【００５６】
また、無効エントリ検出部８７は、各エントリのＥＣフィールド１７７，１７８，１７９の情報に応じて、空きエントリ（無効なエントリ）の検出を行う。また、例外抑止履歴登録制御部１８３は、アドレスレジスタ５７とデータタイプレジスタ５９、レジスタ番号レジスタ６１、レジスタタイプレジスタ１０５、ＥＣレジスタ１７５、デコード回路６５及び無効エントリ検出部８７に接続され、デコード回路６５から供給された登録信号ＡＤＤに応じて、無効エントリ検出部８７で検出された空きエントリのアドレスフィールド（ADDR）７１，７５，７９とレジスタタイプフィールド１０７，１０８，１０９と、レジスタ番号フィールド（REG ＃）７３，７７，８１へ例外情報を書き込む。
【００５７】
また、コミット命令実行部１８５は、レジスタ番号レジスタ６１と、レジスタタイプレジスタ１０５と、コミット判定部１８０と、コミットエントリ検出部１８１と、デコード回路６５及びＶフィールド１５１〜１５３に接続される。そして、コミット命令実行部１８５は、コミット判定部１８０においてコミット命令により指定されたレジスタの番号と所定のフィールドに記録されているレジスタの番号とが一致したと判定された場合、一致した該レジスタ番号が格納されているレジスタのＶフィールド１５１〜１５３へ１を書き込む。
【００５８】
また、例外抑止履歴読みだし命令実行部１８７は、指定されたエントリから例外情報を読み出して命令実行部１７０へ供給する。さらに、例外抑止履歴書き込み命令実行部１８９は、命令実行部１７０から供給された値を指定されたエントリへ書き込む。
【００５９】
次に、上記の計算機に係る動作の概要を説明する。なお、初期状態は通常動作を行うものとする。まず、該通常の動作においては命令読み出し部３は、プログラムカウンタ（ＰＣ）１３が示す命令語を読み出し、命令実行部１７０へ供給する。そして、命令実行部１７０は供給された命令を実行するが、例外抑止ロード命令が供給された場合には、該実行時に例外処理の必要性を検出した場合において、書き込み対象とするレジスタに対応する例外抑止フラグ３８を１と設定して有効にすると共に、履歴制御部１７３に例外情報を登録する。
【００６０】
そして、コミット命令が供給された場合には、汎用レジスタ３７内の指定されたレジスタの番号に対応する例外抑止フラグ３８が有効か否か確認し、有効な場合には履歴制御部１７３を通じて抑止されていたコミット例外を発生させる。なお、通常動作においては、以上のような動作を繰り返す。
【００６１】
また、割り込みが発生した場合には、命令読み出し部３又は命令実行部１７０から供給された割込信号に応じて、割込制御回路４０は割り込みから復帰する先の命令語アドレスをレジスタ３１へ、割り込み発生前の動作状態をレジスタ３３へ、発生した割り込みに対応する動作状態をレジスタ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ１３へ供給する。ここで命令読み出し部３は、割り込み制御部１０から供給された分岐先アドレスに応じてメモリ１から命令語を読み出し、該命令語を命令実行部１７０へ供給する。そして、以降においては上記の通常の動作と同様である。
【００６２】
また、割り込みから復帰する場合には、命令実行部１７０は割り込み復帰命令を実行することによりレジスタ３３に格納された値をレジスタ３５へ書き込む。また、レジスタ３１に格納された値を読み出し、分岐先アドレスとして命令読み出し部３へ供給する。ここで、命令読み出し部３は供給された分岐先アドレスに応じて命令語をメモリ１から読み出し、命令実行部１７０へ供給する。そして、以降においては上記の通常動作と同様に動作する。
【００６３】
次に、図１２を参照しつつ、本実施の形態１に係る計算機において、コミット例外における割り込み処理プログラムを実行する手順について説明する。図１２に示されるように、ステップＳ１ではコンテキストを退避する。次にステップＳ２において、例外抑止履歴テーブル内でＶフィールドが有効なエントリを求める。そしてステップＳ３では、有効なエントリが見出せたか否か判断し、見出せない場合にはステップＳ２０へ進み、不当なコミット例外としてエラーと処理する。なお、この場合には次にステップＳ８へ進む。
【００６４】
一方、ステップＳ３において有効なエントリが見出せた場合には、ステップＳ４へ進み、ＥＣフィールドに記録されたデータに基づいて回復可能な例外処理か否かを特定する。そしてステップＳ５において、該例外処理が回復可能なものであるか否かを判断し、回復可能でない場合にはステップＳ１０へ進み、異常終了処理がなされる。また、ステップＳ５において回復可能と判断された場合には、ステップＳ６へ進み、例外処理が実行される。そして、ステップＳ７において、例外抑止履歴書き込み命令により、例外抑止履歴テーブルのエントリを無効化する。
【００６５】
次に、ステップＳ８において、本来の処理におけるコンテキストが復元され、ステップＳ９で、割り込み復帰命令によりコミット例外から復帰する。
【００６６】
以上より、本発明の実施の形態１に係る計算機によれば、命令の実行順序に起因して例外処理を留保する必要がある場合には、該例外処理を実行するために必要な例外情報が履歴制御部１７３に格納され、留保した例外処理を実行すべきであることが本来の処理で確定したときに初めて例外処理が実行される。そしてこのとき、上記のように、履歴制御部１７３に予め格納された上記例外情報に応じて該例外処理がなされ、その後本来の処理が続行されるため、動作速度が向上される。
［実施の形態２］
図１３は、本発明の実施の形態２に係る計算機の構成を示す図である。図１３に示されるように、本実施の形態２に係る計算機は、図７に示された実施の形態１に係る計算機と同様な構成を有するが、命令実行部１９０には浮動小数点ロード命令実行部２５と、浮動小数点ストア命令実行部２７と、浮動小数点演算命令実行部２９と、浮動小数点コミット命令実行部１９１と、例外抑止・浮動小数点演算命令実行部１９９とを含み、履歴制御部２０７の構成が変更される点で相違するものである。また、レジスタ制御部２０３には浮動小数点レジスタ３９と例外抑止フラグ２０５とがさらに備えられる点でも相違する。
【００６７】
ここで、浮動小数点ロード命令実行部２５はメモリ１及び命令デコード部１７と汎用レジスタ３７に接続され、浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９は命令デコード部１７及び浮動小数点レジスタ３９に接続される。そして、さらに浮動小数点ストア命令実行部２７は汎用レジスタ３７に接続され、浮動小数点演算命令実行部２９は条件レジスタ３０に接続される。なお、浮動小数点ロード命令実行部２５と浮動小数点ストア命令実行部２７及び浮動小数点演算命令実行部２９は共に割込制御回路４０に接続される。
【００６８】
また、浮動小数点コミット命令実行部１９１は命令デコード部１７と、例外抑止・浮動小数点演算命令実行部１９９と、履歴制御部２０７と、浮動小数点ストア命令実行部２７及び浮動少数点レジスタ３９に接続される。そして、例外抑止・浮動小数点演算命令実行部１９９はさらに、命令デコード部１７と、浮動少数点レジスタ３９と、履歴制御部２０７に接続される。
【００６９】
ここで、浮動小数点ロード命令実行部２５は、浮動小数点ロード命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を浮動小数点レジスタ３９へ書き込む。なお、浮動小数点ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００７０】
また、浮動小数点ストア命令実行部２７は、浮動小数点ストア命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する浮動小数点レジスタ３９の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。なお、浮動小数点ストア命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。また、浮動小数点演算命令実行部２９は、浮動小数点演算命令が供給された場合には浮動小数点レジスタ３９から読み出した値に基づき演算を実行し、その結果を浮動小数点レジスタ３９へ書き込む。
【００７１】
次に、例外抑止・浮動小数点演算命令実行部１９９は、命令デコード部１７より例外抑止・浮動小数点演算命令が供給された場合には、浮動小数点レジスタ３９から読み出した値に基づいて浮動小数点演算を行い、その結果を浮動小数点レジスタ３９へ書き込む。なお、命令を実行する際に割り込みを検出した場合には、浮動小数点レジスタ３９内の書き込みレジスタの番号に対応する例外抑止フラグ２０５を１に設定する。また、履歴制御部２０７に対して登録指示信号を供給することにより例外情報を履歴制御部２０７に記憶する。
【００７２】
そして、浮動小数点コミット命令実行部１９１は命令デコード部１７より浮動小数点コミット命令が供給された場合には、浮動小数点レジスタ３９内の指定されたレジスタの番号に対応する例外抑止フラグ２０５が１であれば、該フラグを０とし、履歴制御部２０７に対して確認指示信号を供給する。これにより、履歴制御部２０７からコミット信号ＣＭが割り込み制御部１０へ供給され、コミット例外の発生が割り込み制御部１０へ伝えられる。なお、上記例外抑止フラグ２０５は、その各ビットが浮動小数点レジスタ３９内の各エントリに対応して設けられる。
【００７３】
図１４は、図１３に示された履歴制御部２０７の構成を示す図である。図１４に示されるように、履歴制御部２０７は図８に示された履歴制御部１７３と同様な構成を有するが、命令語レジスタ２１３をさらに備え、各エントリには例外処理の起因となる例外起因命令の命令語を示す命令語フィールド２０９〜２１１が含まれる点で相違する。
【００７４】
ここで、命令語レジスタ２１３の入力端は命令実行部１７０に接続され、出力端は例外抑止履歴登録制御部１８３と例外抑止履歴書き込み命令実行部１８９に接続される。上記において、命令語レジスタ２１３が、命令実行部１７０から供給された例外起因命令の命令語を保持すると共に、命令語フィールド２０９〜２１１には該命令語を示す値が、例外抑止履歴書き込み命令実行部１８９により書き込まれる。
【００７５】
そして、該命令語フィールド２０９〜２１１に書き込まれた命令語を示す値は、例外抑止履歴読み出し命令実行部１８７により読み出され、命令実行部１７０に供給される。
【００７６】
ここで、本実施の形態２に係る例外抑止・浮動小数点演算命令による動作を、図１５を参照しつつ説明する。図１５に示されるように、ステップＳ１において読み出したデータの中に例外要因が存在するか否か確認する。その結果、ステップＳ２において例外要因が存在しないと判断された場合には、ステップＳ３へ進み、読み出した上記データに基づき演算を行い、その結果を浮動小数点レジスタ３９へ書き込む。
【００７７】
一方、ステップＳ２において例外要因が存在すると判断された場合には、ステップＳ１０へ進み、履歴制御部２０７へ登録指示信号が供給されることにより、検出された命令語等の例外情報が履歴制御部２０７に登録される。このとき、ステップＳ１１において、上記例外情報が書き込まれるレジスタに対応する例外抑止フラグ２０５に１の値が設定され有効とされる。
【００７８】
以上より、本実施の形態２に係る計算機によれば、例外情報として例外起因命令語も保持され、例外処理を終えた後に上記例外起因命令から本来の処理が順次再開されるため、上記実施の形態１に係る計算機と同様な効果を奏すると共に、動作の信頼性を高めることができる。
［実施の形態３］
図１６は、本発明の実施の形態３に係る計算機の構成を示す図である。図１６に示されるように、本実施の形態３に係る計算機は、図７に示された実施の形態１に係る計算機と同様な構成を有するが、命令実行部２１５には例外抑止履歴無効化制御部２１７をさらに含み、履歴制御部２１９には図１７に示されるように、履歴テーブル無効化部２１８を含む点で相違するものである。
【００７９】
ここで、上記例外抑止履歴無効化制御部２１７は入力端が命令デコード部１７に接続され、出力端が汎用レジスタ３７及び履歴制御部２１９に接続される。
【００８０】
そして、この例外抑止履歴無効化制御部２１７は、例外抑止フラグ無効化命令が命令デコード部１７から供給された場合には、図１８のステップＳ１に示されるように、指定されたレジスタに対応する例外抑止フラグ３８を無効化する。そしてさらに、ステップＳ２において、指定されたレジスタ番号に対応する例外情報が保持されている場合には、該例外情報が保持されているエントリを無効化するためのリセット信号ＲＳを履歴制御部２１９へ供給する。
【００８１】
ここで、履歴制御部２１９に含まれた履歴テーブル無効化部２１８は、該リセット信号ＲＳに応じて、指定されたレジスタに対応する例外情報を保持する履歴テーブルのエントリを、そのＥＣフィールドを無効化することにより無効化する。
【００８２】
以上より、本実施の形態３に係る計算機によれば、上記実施の形態１に係る計算機と同様な効果を奏すると共に、例外抑止フラグ無効化命令を実行することにより、例外抑止フラグを無効化することができるため、複数の投機的命令移動を可能として、さらに動作の高速化を図ることができる。
［実施の形態４］
図１９は、本発明の実施の形態４に係る計算機の構成を示す図である。図１９に示されるように、本実施の形態４に係る計算機は、図７に示された実施の形態１に係る計算機と同様な構成を有するが、命令実行部２２０には例外抑止フラグ読み出し命令実行部２２１と例外抑止フラグ書き込み命令実行部２２３をさらに含む点で相違するものである。
【００８３】
ここで、例外抑止フラグ読み出し命令実行部２２１と例外抑止フラグ書き込み命令実行部２２３とは共に、入力端が命令デコード部１７と汎用レジスタ３７に接続され、出力端が汎用レジスタ３７に接続される。
【００８４】
そして、例外抑止フラグ読み出し命令実行部２２１は、命令デコード部１７から供給された例外抑止フラグ読み出し命令に応じて例外抑止フラグ３８の値を読み出し、汎用レジスタ３７へ書き込む。また、例外抑止フラグ書き込み命令実行部２２３は、命令デコード部１７から供給された例外抑止フラグ書き込み命令に応じて汎用レジスタ３７からデータを読み出し、それを例外抑止フラグ３８へ書き込む。
【００８５】
以上のような本実施の形態４に係る計算機によれば、上記実施の形態１に係る計算機と同様な効果を奏すると共に、例外抑止フラグ３８の値を汎用レジスタ３７へ退避することができるため、重畳的な投機的命令移動を可能として、さらに動作の高速化を図ることができる。
［実施の形態５］
本発明の実施の形態５に係る計算機は、図７に示された実施の形態１に係る計算機と同様な構成を有するが、履歴制御部の構成が相違するものである。ここで図２０は、本発明の実施の形態５に係る履歴制御部２２５の構成を示す図である。  図２０に示されるように、本実施の形態に係る履歴制御部２２５は、図８に示された実施の形態１に係る履歴制御部１７３と同様な構成を有するが、例外ＰＣレジスタ（EPCレジスタ）２２７をさらに備え、例外抑止履歴テーブルを構成する各エントリにはＥＰＣフィールド２２９〜２３１が設けられる点で相違する。
【００８６】
ここで、例外ＰＣレジスタ２２７は入力端が命令実行部１７０に接続され、出力端が例外抑止履歴登録制御部１８３と例外抑止履歴書き込み命令実行部１８９に接続される。そして、例外ＰＣレジスタ２２７は例外起因命令の一つである例外抑止ロード命令の命令アドレスを保持する。また、各ＥＰＣフィールド２２９〜２３１には、例外起因命令の命令アドレスが記録される。
【００８７】
次に、図２１を参照しつつ、本実施の形態５に係る計算機において、コミット例外における割り込み処理プログラムを実行する手順について説明する。図２１に示されるように、ステップＳ１ではコンテキストを退避する。次にステップＳ２において、例外抑止履歴テーブル内でＶフィールドが有効なエントリを求める。そしてステップＳ３では、有効なエントリが見出せたか否か判断し、見出せない場合にはステップＳ３０へ進み、不当なコミット例外としてエラーと処理する。なお、この場合には次にステップＳ９へ進む。
【００８８】
一方、ステップＳ３において有効なエントリが見出せた場合には、ステップＳ４へ進み、ＥＣフィールドに記録されたデータに基づいて例外要因が解消可能か否かを特定する。そしてステップＳ５において、該例外要因が解消可能なものであるか否かを判断し、解消可能でない場合にはステップＳ２０へ進み、異常終了処理がなされる。なお、この場合には次にステップＳ７へ進む。
【００８９】
また、ステップＳ５において解消可能と判断された場合には、ステップＳ６へ進み、例外要因の解消処理が実行される。そして、ステップＳ７において、例外起因命令の命令アドレスをコンテキスト復元時のレジスタ（EPCR）３１の値として設定する。次に、ステップＳ８において、例外抑止履歴書き込み命令により、例外抑止履歴テーブルのエントリを無効化する。
【００９０】
そして、ステップＳ９において、本来の処理におけるコンテキストが復元され、ステップＳ１０で、割り込み復帰命令によりコミット例外から復帰する。
【００９１】
以上のように、本実施の形態５に係る計算機によれば、実施の形態１に係る計算機と同様の効果を奏すると共に、例外抑止履歴テーブルへ例外起因命令の命令アドレスが保持されるため、例外要因を解消した後に例外起因命令に戻って、本来の処理を確実に続行することができる。
［実施の形態６］
図２２は、本発明の実施の形態６に係る計算機の構成を示す図である。図２２に示されるように、本実施の形態６に係る計算機は、図７に示された実施の形態１に係る計算機と同様な構成を有するが、命令実行部２３９に含まれるロード命令実行部２３３と演算命令実行部２３５、及び例外抑止ロード命令実行部２３７の構成が相違するものである。
【００９２】
図２３は、図２２に示されたロード命令実行部２３３の構成を示す図である。図２３に示されるように、ロード命令実行部２３３は、ロード制御回路２４１と、フラグ検出回路２４３と、セレクタ２４５とを含む。ここで、ロード制御回路２４１の入力端は命令デコード部１７と、メモリ１及び汎用レジスタ３７に接続され、出力端は割込制御回路４０と、汎用レジスタ３７及びセレクタ２４５に接続される。また、フラグ検出回路２４３の入力端は汎用レジスタ３７に接続され、出力端はセレクタ２４５に接続される。さらに、セレクタ２４５の出力端は汎用レジスタ３７に接続される。
【００９３】
このような構成を有するロード命令実行部２３３においては、図２５に示されるように、ステップＳ１においてＧＲ読出データに応じて、フラグ検出回路２４３によりデータの読み出し対象としたレジスタに対応する例外抑止フラグ３８が有効か否かが確認され、ステップＳ２において無効であると判定された場合には、ステップＳ３へ進み、ロード制御回路２４１から供給されたデータが、ＧＲ書き込みデータとしてセレクタ２４５から選択的に汎用レジスタ３７へ出力される。
【００９４】
なお、上記においてＧＲ読出データは、汎用レジスタ３７から読み出されたデータと該データに対応する例外抑止フラグ３８の値とからなり、以下において同様である。
【００９５】
一方、ステップＳ２においてフラグ検出回路２４３により、データの読み出し対象としたレジスタに対応する例外抑止フラグ３８が有効であると判定された場合には、ステップＳ１０へ進み、フラグ検出回路２４３から供給され書き込み先のレジスタに対応する例外抑止フラグ３８を有効とする信号が、セレクタ２４５から選択的に出力される。
【００９６】
図２４は、図２２に示された演算命令実行部２３５の構成を示す図である。図２４に示されるように、演算命令実行部２３５は、演算制御回路２４７と、フラグ検出回路２４３と、セレクタ２４５とを含む。ここで、演算制御回路２４７の入力端は命令デコード部１７及び汎用レジスタ３７に接続され、出力端は割込制御回路４０と、汎用レジスタ３７及びセレクタ２４５に接続される。また、フラグ検出回路２４３の入力端は汎用レジスタ３７に接続され、出力端はセレクタ２４５に接続される。さらに、セレクタ２４５の出力端は汎用レジスタ３７に接続される。
【００９７】
このような構成を有する演算命令実行部２３５においては、図２６に示されるように、ステップＳ１においてＧＲ読出データに応じて、フラグ検出回路２４３によりデータの読み出し対象としたレジスタに対応する例外抑止フラグ３８が有効か否かが確認され、ステップＳ２において無効であると判定された場合には、ステップＳ３へ進み、演算制御回路２４７から供給されたデータが、ＧＲ書き込みデータとしてセレクタ２４５から選択的に汎用レジスタ３７へ出力される。
【００９８】
一方、ステップＳ２においてフラグ検出回路２４３により、データの読み出し対象としたレジスタに対応する例外抑止フラグ３８が有効であると判定された場合には、ステップＳ１０へ進み、フラグ検出回路２４３から供給され書き込み先のレジスタに対応する例外抑止フラグ３８を有効とする信号が、セレクタ２４５から選択的に出力される。
【００９９】
なお、本実施の形態に係る例外抑止ロード命令実行部２３７の構成及び動作は、上記ロード命令実行部２３３や演算命令実行部２３５の構成及び動作と同様であるが、以下において本実施の形態６に係る例外抑止ロード命令実行部２３７の動作を、図２７のフローチャートを参照しつつ説明する。
【０１００】
図２７に示されるように、ステップＳ１においてＧＲ読出データに応じて、データの読み出し対象としたレジスタに対応する例外抑止フラグ３８が有効か否かが確認され、ステップＳ２において無効であると判定された場合には、ステップＳ３へ進み、読み出したデータの中に例外要因が存在するか否か確認する。
【０１０１】
一方、ステップＳ２において、データの読み出し対象としたレジスタに対応する例外抑止フラグ３８が有効であると判定された場合には、ステップＳ２０へ進み、書き込み先のレジスタに対応する例外抑止フラグ３８を有効とする信号が出力される。
【０１０２】
ステップＳ４では、例外要因が存在しないと判断された場合には、ステップＳ５へ進みロード対象アドレス域から読み出した上記データを、汎用レジスタ３７へ書き込む。
【０１０３】
一方、ステップＳ４において例外要因が存在すると判断された場合には、ステップＳ１０へ進み、履歴制御部１７３へ登録指示信号が供給されることにより、検出された例外情報が履歴制御部１７３に登録される。このとき、ステップＳ１１において、上記例外情報が記憶されるレジスタに対応する例外抑止フラグ３８に１の値が設定され有効とされる。
【０１０４】
以上より、本実施の形態６に係る計算機によれば、命令の実行に際して、データ読み出し先のレジスタに対応する例外抑止フラグ３８が有効である場合には、実行結果の書き込み先となるレジスタに対応する例外抑止フラグ３８も有効にするため、例外抑止フラグ３８の有効情報を伝播させることができ、投機的に移動した命令と依存関係を持った命令も移動することができる。これより、投機的な命令の移動についての自由度を高めることができ、動作速度をさらに高めることができる。
【０１０５】
最後に、本発明の課題を解決するための手段について付記する。
（１）プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作の必要性が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して分岐先の命令の実行を続行する第四のステップとを有することを特徴とする計算機の制御方法。
（２）プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作を必要とする例外起因命令が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行する第四のステップとを有することを特徴とする計算機の制御方法。
（３）第三のステップにおいては、例外動作が割り込み処理プログラムを実行することにより遂行される（１）または（２）のいずれかに記載の計算機の制御方法。
（４）第二のステップにおいては、留保される例外動作を実行するための情報が記憶され、第三のステップにおいては、情報に応じて例外動作が遂行される（１）または（２）のいずれかに記載の計算機の制御方法。このように、留保される例外動作を実行するための情報が記憶され、該情報に応じて例外動作が遂行されるようにすれば、例外動作を実行するために必要なプログラムを削減することができるため、計算機の回路規模を低減することができると共に、動作の高速化を図ることができる。
（５）第二のステップでは、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、第三のステップでは、分岐命令を実行することにより選択された分岐先の命令を実行する場合において、識別情報に応じて例外動作による処理が必要であると判別されるデータが実行対象とされるとき、例外動作が遂行される（１）または（２）のいずれかに記載の計算機の制御方法。このように、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、該識別情報に応じて例外動作による処理が必要であるか否かが判別されることとすれば、さらに動作の高速化を図ることができる。
（６）所定の命令を実行することにより、留保される例外動作を実行するための情報が無効化される（４）に記載の計算機の制御方法。
（７）所定の命令を実行することにより、識別情報が無効化される（５）に記載の計算機の制御方法。このように、所定の命令を実行することにより、留保される例外動作を実行するための情報や識別情報を無効化できるようにすれば、複数の命令について実行順序を変更することができるため、計算機の処理能力を高めることができる。
（８）所定の命令を実行することにより、識別情報を読み出し、又は識別情報を書き換える（５）に記載の計算機の制御方法。このように、所定の命令を実行することによって、識別情報を読み出し、又は識別情報を書き換えることができるようにすれば、複数の命令において重畳的に実行順序を変更することができるため、計算機の処理能力を高めることができる。
（９）プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作の必要性が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して分岐先の命令の実行を続行する復帰手段とを備えたことを特徴とする計算機。
（１０）プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作を必要とする例外起因命令が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行する復帰手段とを備えたことを特徴とする計算機。
（１１）例外動作実行手段は、割り込み処理プログラムを実行することにより例外動作を遂行する（９）または（１０）のいずれかに記載の計算機。
（１２）例外抑止手段により留保される例外動作を実行するための情報を記憶する記憶手段をさらに備え、例外動作実行手段は、記憶手段に記憶された情報に応じて例外動作を遂行する（９）または（１０）のいずれかに記載の計算機。
（１３）例外抑止手段は、例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与し、例外動作実行手段は、分岐命令を実行することにより選択された分岐先の命令を実行する場合において、識別情報に応じて例外動作による処理が必要であると判別されるデータが実行対象とされるときに、例外動作を遂行する（９）または（１０）のいずれかに記載の計算機。
（１４）所定の命令を実行することにより、留保された例外動作を実行するための情報を無効化する履歴無効化手段をさらに備えた（１２）に記載の計算機。
（１５）所定の命令を実行することにより、識別情報を無効化する識別情報無効化手段をさらに備えた（１３）に記載の計算機。
（１６）所定の命令を実行することにより、識別情報を読み出す識別情報読み出し手段と、所定の命令を実行することにより、識別情報を書き換える識別情報書き換え手段とをさらに備えた（１３）に記載の計算機。
【０１０６】
【発明の効果】
上述の如く、プログラムにおいて分岐命令より後置された命令を該分岐命令より先に実行したために留保された例外動作の実行が必要とされる場合に、例外動作を遂行すると共に、例外動作が終了したときにはプログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行することにより、動作の高速化を図ることができるため、計算機の処理能力を高めることができる。
【０１０７】
また、例外動作が終了したときには、プログラムに復帰して例外動作の起因となる命令から順次実行することによっても、動作の高速化を図ることができるため、計算機の処理能力を高めることができる。
【図面の簡単な説明】
【図１】汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。
【図２】ロード命令による動作を示すフローチャートである。
【図３】ロード命令の命令形式を示す図である。
【図４】ストア命令による動作を示すフローチャートである。
【図５】ストア命令の命令形式を示す図である。
【図６】演算命令による動作を示すフローチャートである。
【図７】本発明の実施の形態１に係る計算機の構成を示す図である。
【図８】図７に示された履歴制御部の構成を示す図である。
【図９】実施の形態１に係る例外抑止ロード命令による動作を示すフローチャートである。
【図１０】実施の形態１に係るコミット命令による動作を示すフローチャートである。
【図１１】実施の形態１に係るコミット命令の命令形式を示す図である。
【図１２】実施の形態１に係るコミット例外における割り込み処理を示すフローチャートである。
【図１３】本発明の実施の形態２に係る計算機の構成を示す図である。
【図１４】図１３に示された履歴制御部の構成を示す図である。
【図１５】実施の形態２に係る例外抑止浮動小数点演算命令による動作を示すフローチャートである。
【図１６】本発明の実施の形態３に係る計算機の構成を示す図である。
【図１７】図１６に示された履歴制御部の構成を示す図である。
【図１８】実施の形態３に係る例外抑止フラグ無効化命令による動作を示す図である。
【図１９】本発明の実施の形態４に係る計算機の構成を示す図である。
【図２０】本発明の実施の形態５に係る履歴制御部の構成を示す図である。
【図２１】実施の形態５に係るコミット例外における割り込み処理を示すフローチャートである。
【図２２】本発明の実施の形態６に係る計算機の構成を示す図である。
【図２３】図２２に示されたロード命令実行部の構成を示す図である。
【図２４】図２２に示された演算命令実行部の構成を示す図である。
【図２５】実施の形態６に係るロード命令による動作を示すフローチャートである。
【図２６】実施の形態６に係る演算命令による動作を示すフローチャートである。
【図２７】実施の形態６に係る例外抑止ロード命令による動作を示すフローチャートである。
【符号の説明】
１  メモリ
３  命令読み出し部
６，１７０，１９０，２１５，２２０，２３９  命令実行部
８，１７１，２０３  レジスタ制御部
９，１０  割り込み制御部
１１  命令読み出し制御部
１３  プログラムカウンタ（ＰＣ）
１５  命令語レジスタ（ＩＲ）
１７  命令デコード部
１９，２３３  ロード命令実行部
２０  例外抑止履歴書き込み命令実行部
２１  ストア命令実行部
２２，２３５  演算命令実行部
２３  命令実行回路
２４，２３７  例外抑止ロード命令実行部
２５  浮動小数点（Ｆ）ロード命令実行部
２６  コミット命令実行部
２７  浮動小数点（Ｆ）ストア命令実行部
２８  例外抑止履歴読出し命令実行部
２９  浮動小数点（Ｆ）演算命令実行部
３０  条件レジスタ
３１  レジスタ（ＥＰＣＲ）
３３  レジスタ（ＥＰＳＲ）
３５  レジスタ（ＰＳＲ）
３７  汎用レジスタ
３８，２０５  例外抑止フラグ
３９  浮動小数点レジスタ
４０  割込制御回路
４４  コミット例外割り込み制御部
１７３，２０７，２１９，２２５  履歴制御部
５７  アドレスレジスタ
５９  データタイプレジスタ
６１  レジスタ番号レジスタ
６５  デコード回路
６７〜６９  比較器
７１，７５，７９  アドレスフィールド（ADDR）
７２，７６，８０  データタイプフィールド（DT）
７３，７７，８１  レジスタ番号フィールド（REG ＃）
８７  無効エントリ検出部
１０５  レジスタタイプレジスタ（RTREG ）
１０７〜１０９  レジスタタイプフィールド
１５１〜１５３, V0〜Vm  Ｖフィールド
１７５  例外要因レジスタ（ＥＣレジスタ）
１７７〜１７９  ＥＣフィールド
１８０  コミット判定部
１８１  コミットエントリ検出部
１８３  例外抑止履歴登録制御部
１８５  コミット命令実行部
１８７  例外抑止履歴読み出し命令実行部
１８９  例外抑止履歴書き込み命令実行部
１９１  浮動小数点コミット命令実行部
１９９  例外抑止・浮動小数点演算命令実行部
２０９〜２１１  命令語フィールド（INST）
２１３  命令語レジスタ
２１７  例外抑止履歴無効化制御部
２１８  履歴テーブル無効化部
２２１  例外抑止フラグ読み出し命令実行部
２２３  例外抑止フラグ書き込み命令実行部
２２７  例外ＰＣレジスタ（EPCレジスタ）
２２９〜２３１  EPCフィールド
２４１  ロード制御回路
２４３  フラグ検出回路
２４５  セレクタ
２４７  演算制御回路
ＡＤＤ  登録信号
ＣＣ  確認信号
Ｒ  読み出し信号
Ｗ  書き込み信号
ＣＭ  コミット信号
ＲＳ  リセット信号
【図１】
0003748191.tif 000005
【図２】
0003748191.tif 000006
【図３】
0003748191.tif 000007
【図４】
0003748191.tif 000008
【図５】
0003748191.tif 000009
【図６】
0003748191.tif 000010
【図７】
0003748191.tif 000011
【図８】
0003748191.tif 000012
【図９】
0003748191.tif 000013
【図１０】
0003748191.tif 000014
【図１１】
0003748191.tif 000015
【図１２】
0003748191.tif 000016
【図１３】
0003748191.tif 000017
【図１４】
0003748191.tif 000018
【図１５】
0003748191.tif 000019
【図１６】
0003748191.tif 000020
【図１７】
0003748191.tif 000021
【図１８】
0003748191.tif 000022
【図１９】
0003748191.tif 000023
【図２０】
0003748191.tif 000024
【図２１】
0003748191.tif 000025
【図２２】
0003748191.tif 000026
【図２３】
0003748191.tif 000027
【図２４】
0003748191.tif 000028
【図２５】
0003748191.tif 000029
【図２６】
0003748191.tif 000030
【図２７】
0003748191.tif 000031