JP3748191B2 - 計算機とその制御方法 - Google Patents

計算機とその制御方法 Download PDF

Info

Publication number
JP3748191B2
JP3748191B2 JP2000043441A JP2000043441A JP3748191B2 JP 3748191 B2 JP3748191 B2 JP 3748191B2 JP 2000043441 A JP2000043441 A JP 2000043441A JP 2000043441 A JP2000043441 A JP 2000043441A JP 3748191 B2 JP3748191 B2 JP 3748191B2
Authority
JP
Japan
Prior art keywords
instruction
exception
register
executing
branch
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
JP2000043441A
Other languages
English (en)
Other versions
JP2001236228A (ja
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 JP2000043441A priority Critical patent/JP3748191B2/ja
Priority to EP07108697.9A priority patent/EP1840735A3/en
Priority to US09/736,357 priority patent/US6889315B2/en
Priority to EP00311245A priority patent/EP1109096A3/en
Priority to KR1020000077734A priority patent/KR100930332B1/ko
Publication of JP2001236228A publication Critical patent/JP2001236228A/ja
Application granted granted Critical
Publication of JP3748191B2 publication Critical patent/JP3748191B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、プログラムされた命令を実行する計算機とその制御方法に関するものである。
【0002】
【従来の技術】
図1は、汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。図1に示されるように、この計算機はメモリ1と、メモリ1に接続された命令読み出し部3と、メモリ1及び命令読み出し部3に接続された命令実行部6と、命令実行部6に接続されたレジスタ制御部8と、命令読出し部3と命令実行部6及びレジスタ制御部8に接続された割り込み制御部9とを備える。
ここで、命令読み出し部3は命令読み出し制御部11と、プログラムカウンタ(PC)13と、命令語レジスタ(IR)15とを含む。そして、命令読み出し制御部11はメモリ1に接続され、プログラムカウンタ(PC)13は命令読み出し制御部11に接続される。さらに、命令語レジスタ(IR)15は命令読み出し制御部11に接続される。
【0003】
また、命令実行部6は命令デコード部17と、ロード命令実行部19と、ストア命令実行部21と、演算命令実行部22と、命令実行回路23と、浮動小数点(F)ロード命令実行部25と、浮動小数点(F)ストア命令実行部27と、浮動小数点(F)演算命令実行部29とを含む。
【0004】
そして、命令デコード部17は命令語レジスタ15に接続され、ロード命令実行部19はメモリ1及び命令デコード部17に接続される。また、ストア命令実行部21は命令デコード部17及び後述する汎用レジスタ37に接続され、演算命令実行部22は命令デコード部17と汎用レジスタ37及び後述する条件レジスタ30に接続され、命令実行回路23は命令デコード部17と汎用レジスタ37及び後述するレジスタ31,33,35に接続される。
【0005】
また、浮動小数点ロード命令実行部25はメモリ1及び命令デコード部17に接続され、浮動小数点ストア命令実行部27及び浮動小数点演算命令実行部29は命令デコード部17及び後述する浮動小数点レジスタ39に接続される。
【0006】
一方、レジスタ制御部8は条件レジスタ30と、レジスタ(EPCR)31と、レジスタ(EPSR)33と、レジスタ(PSR)35と、汎用レジスタ37と、浮動小数点レジスタ39とを含む。ここで、条件レジスタ30は演算命令実行部22と命令実行回路23及び浮動小数点演算命令実行部29に接続され、レジスタ(EPCR)31とレジスタ(EPSR)33及びレジスタ(PSR)35は、さらに割込制御部40に接続される。また、汎用レジスタ37はロード命令実行部19とストア命令実行部21及び命令実行回路23に接続される。また、浮動小数点レジスタ39は浮動小数点ロード命令実行部25と、浮動小数点ストア命令実行部27及び浮動小数点演算命令実行部29に接続される。
【0007】
また、割り込み制御部9は割込制御回路40を含む。そして、この割込制御回路40は命令読出制御部11とプログラムカウンタ13、ロード命令実行部19、ストア命令実行部21、演算命令実行部22、命令実行回路23、浮動小数点ロード命令実行部25、浮動小数点ストア命令実行部27及び浮動小数点演算命令実行部29などに接続される。
【0008】
上記のような構成を有する計算機において、命令読み出し部3はプログラムカウンタ13が示す命令語をメモリ1から読み出し、命令語レジスタ(IR)15を介して命令実行部6へ供給する。また命令読出制御部11は、命令実行部6あるいは割込処理を行う割込制御回路40より分岐先アドレスが供給された場合には、それをプログラムカウンタ13へ書き込む。なお命令読出制御部11は、それ以外の場合には次の命令語を命令実行部6へ供給するため、読み出すべき命令語のアドレスを示すプログラムカウンタ13をインクリメントする。また、命令語を読み出す際に割り込みを検出した場合には、割込制御回路40へ割込信号を供給する。
【0009】
また、命令デコード部17は、命令語レジスタ15から供給された命令をデコードし、ロード命令の場合にはロード命令実行部19へ、ストア命令の場合にはストア命令実行部21へ、演算命令の場合には演算命令実行部22へ、浮動小数点ロード命令の場合には浮動小数点ロード命令実行部25へ、浮動小数点ストア命令の場合には浮動小数点ストア命令実行部27へ、浮動小数点演算命令の場合には浮動小数点演算命令実行部29へ、割込復帰命令やその他の命令の場合には命令実行回路23へそれぞれ供給する。
【0010】
また、ロード命令実行部19はロード命令が供給された場合には、図2に示されるように、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応するメモリ1の領域からデータを読み出し、その結果を汎用レジスタ37へ書き込む。ここでロード命令は、図3に示されるように、命令コードOP-CODE とレジスタを指定するコードGR1,GR2,GRD とを含む。そして、コードGR1 が示すレジスタの値とコードGR2 が示すレジスタの値を加算した結果がロード対象とするデータのアドレスを意味し、コードGRD は読み出した結果を保持するレジスタの番号を意味する。なお、ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0011】
同様に、ストア命令実行部21はストア命令が供給された場合には、図4に示されるように、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ37の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ1の領域へ書き込む。ここでストア命令は、図5に示されるように、命令コードOP-CODE とレジスタを指定するコードGR1,GR2,GRS とを含む。そして、コードGR1 が示すレジスタの値とコードGR2 が示すレジスタの値を加算した結果がストア対象とするデータのアドレスを意味し、コードGRS は書き込む値を保持するレジスタの番号を意味する。なお、ストア命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0012】
また、演算命令実行部22は演算命令が供給された場合には、図6に示されるように、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ37の領域からデータを読み出し、そのデータに基づき演算し、該演算結果を汎用レジスタ37へ書き込む。なお演算命令は、図3に示された上記ロード命令と同じ形式を有する。さらに演算命令実行部22は、比較命令が供給された場合には、汎用レジスタ37から読み出された二つの値を比較し、該二つの値が等しい場合には真であることを示すデータを、該二つの値が等しくない場合には偽であることを示すデータを条件レジスタ30へ書き込む。
【0013】
また、浮動小数点ロード命令実行部25は、浮動小数点ロード命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応するメモリ1の領域からデータを読み出し、その結果を浮動小数点レジスタ39へ書き込む。なお、浮動小数点ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0014】
また、浮動小数点ストア命令実行部27は、浮動小数点ストア命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応する浮動小数点レジスタ39の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ1の領域へ書き込む。なお、浮動小数点ストア命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0015】
また、浮動小数点演算命令実行部29は、浮動小数点演算命令が供給された場合には浮動小数点レジスタ39から読み出した値に基づき演算を実行し、その結果を浮動小数点レジスタ39へ書き込む。そしてさらに、浮動小数点演算命令実行部29は、浮動小数点比較命令が供給された場合には浮動小数点レジスタ39から読み出した二つの値を比較し、その結果として、該二つの値が等しいか否かにより真又は偽を示す値を条件レジスタ30へ書き込む。
【0016】
また、命令実行回路23は、命令デコード部17から分岐命令が供給された場合には、分岐成立時に分岐先アドレスをプログラムカウンタ13へ供給する。さらに、命令デコード部17から条件分岐命令が供給された場合には、条件レジスタ30に格納された値が真であることを示すものである時に分岐先アドレスをプログラムカウンタ13へ供給する。同様に割込み復帰命令が供給された場合には、割込み発生前の動作状態を示すデータをPSR35へ書き込む。そしてこのとき、EPCR31から復帰先の命令のアドレスを読み出し、それを分岐先アドレスとしてプログラムカウンタ13へ供給する。なお、上記命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0017】
また、条件レジスタ30は比較命令に応じて真あるいは偽を示すデータ(値)を保持する。なお、該値は条件分岐命令に応じて参照される。また、EPCR31は割込みからの復帰先に該当する命令のアドレスを保持し、そのアドレスは割込み発生時に設定される。また、PSR35は動作状態(state )を示すデータを保持し、EPSR33は割込み発生時に設定された割込み発生前の動作状態を示すデータを保持する。
【0018】
また、割込制御回路40は命令読み出し部3あるいは命令実行部6から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをEPCR31へ、割り込み発生前の動作状態を示すデータをEPSR33へ、発生した割り込みに対応する動作状態を示すPSR35へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部3へ供給する。
【0019】
以下に、上記計算機の動作を要約すると、初期動作状態を通常の動作としたとき次のようになる。通常の動作においては、命令読み出し部3は、プログラムカウンタ13が示す命令語を読み出し、命令実行部6へ供給し、命令実行部6は供給された命令を実行する。
【0020】
一方、割り込みが発生した時には、割込制御回路40は命令読み出し部3あるいは命令実行部6から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをEPCR31へ、割り込み発生前の動作状態を示すデータをEPSR33へ、発生した割り込みに対応する動作状態を示すPSR35へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部3へ供給する。また、命令読み出し部3は割込制御部9から供給された分岐先アドレスに応じて命令語を読み出し、命令実行部6へ供給する。そして、以降においては上記の通常の場合と同様に動作する。
【0021】
また、割り込みから復帰する時は、命令実行部6は割込み復帰命令を実行することにより、EPSR33の値をPSR35へ書き込む。また、EPCR31に格納されたデータを読み出し、その結果を分岐先アドレスとして命令読み出し部3へ供給する。このとき命令読み出し部3は、命令実行部6から供給された分岐先アドレスに基づいて命令語を読み出し、命令実行部6へ供給する。そして、以降においては上記通常の動作がなされる。
【0022】
以上のような従来の計算機では、プログラムを構成する命令語の並列性を活用し、計算機の命令レベルでの処理能力を向上させる手法として、スーパースカラや投機的実行(speculative execution )といった、同時に複数の命令を実行する制御方式が採られている。ここで、一般にこのような計算機では、複数の命令実行部を有し、プログラムに含まれる命令を順次実行するが、1サイクルにおいて複数の命令がメモリから読み出され、また該命令相互の依存関係が考慮されつつ1サイクル中で複数の命令が発行されうる。
【0023】
また、この時命令の実行制御において、アウト・オブ・オーダー完了(out-of-order completion )を採ることで、計算機の命令レベルでの処理能力をより向上させることができる。ここで、「アウト・オブ・オーダー完了」とは、プログラム上における命令の順序すなわち命令の発行順序と、命令の実行順序すなわち命令の完了順序とが異なることを意味する。そして、このような実行制御を行うことにより、命令実行部の有効稼働率を高め、プログラムの全体的な実行時間の短縮が図られている。なお、アウト・オブ・オーダー完了において、プログラムが生成された時の命令の順序を保証するためには、データ依存関係や制御依存関係といった命令の依存関係が考慮されるが、これらの依存関係は命令語に記されている情報から抽出される。
【0024】
さらに、上記のような計算機の性能をより向上させるべく、コンパイラ他によってプログラムが生成された時に命令の順序を変更するといった手法が知られており、このような手法を「命令移動」という。そして、この「命令移動」は命令実行部の有効稼働率を高める点や、早期に命令の実行を開始することによりレイテンシを隠蔽できる点で有効な手法とされる。すなわち、例えばロード命令を実行する場合には、メモリへのロード操作を早期に開始することで、潜在的なキャッシュミスを含むメモリアクセスの遅延を隠蔽できる可能性がある。
【0025】
ここで、上記のような命令移動において、特にコンパイラにおける基本ブロックの境界を越えた命令移動を行うものは、広域命令移動と呼ばれており、さらに広域命令移動において条件分岐を越えて命令移動を行うものは、投機的命令移動と呼ばれている。しかし、このように投機的に移動した命令において例外が発生した場合、例外処理を必要とするため大幅な性能の低下を招いたり、本来のプログラムの順序ではあり得なかったプログラム実行における不正な停止を招いたりする。
【0026】
すなわち例えば、必要とされるデータがメモリ上に無い状態であるページフォルト(page fault)を起こす可能性がある命令を投機的に移動した場合には、移動先においてページフォルトを伴う例外処理プログラムが実行されることとなり、本来の順序では生じ得なかったページフォルトによって性能が低下する。また、例えば除算命令を投機的に移動した場合には、移動先においてゼロで除算する処理(ゼロ除算)が発生することも生じるが、このような場合にはプログラムの実行が停止することとなる。なお上記のように、投機的に移動した命令の実行において発生した例外は投機的例外と呼ばれる。
【0027】
そして、上記問題を解決する方法として、例外抑止(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 共著)が発行されている。
【0028】
一方、上記例外にはページフォルトのように、例外要因を解消することにより本来の処理が続行可能なものと、ゼロ除算のように本来の処理を続行することが不可能なものとがある。そして、上記の例外抑止命令によるデータの処理方式においては、いずれの例外も投機的例外として検出され、所定期間延期された後に実行される。
【0029】
しかしながら、上記において続行可能な例外処理及びそれに続く本来の処理は、割り込み処理プログラムを実行することによりなされていたため、全体としてプログラムが長大化する結果、計算機に必要な記憶容量が増大すると共に、処理速度が低下するという問題があった。
【0030】
【発明が解決しようとする課題】
本発明は、上述の問題点を解消するためになされたもので、動作の高速化により処理能力が高められた計算機とその制御方法を提供することを目的とする。
【0031】
【課題を解決するための手段】
上記の目的は、プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作の必要性が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行する第四のステップとを有し、第二のステップでは、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与されて、また、所定の命令を実行することにより前記識別情報が無効化されるステップを更に有する、計算機の制御方法を提供することにより達成される。このような手段によれば、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行することにより、動作の高速化を図ることができる。該識別情報に応じて例外動作による処理が必要であるか否かが判別されることで、さらに動作の高速化を図ることができる。また、所定の命令を実行することにより、留保される例外動作を実行するための情報や識別情報を無効化できるようにすることで、複数の命令について実行順序を変更することができるため、計算機の処理能力を高めることができる。
【0032】
また本発明の目的は、プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作の必要性が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行する第四のステップとを有し、第二のステップでは、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与されて、 所定の命令を実行することにより、前記識別情報を読み出し、又は、前記識別情報を書き換えるステップを更に有する、ことを特徴とする計算機の制御方法を提供することにより達成される。
このような手段によれば、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行することにより、動作の高速化を図ることができる。該識別情報に応じて例外動作による処理が必要であるか否かが判別されることで、さらに動作の高速化を図ることができる。
また、所定の命令を実行することによって、識別情報を読み出し、又は識別情報を書き換えることができるようにすれば、複数の命令において重畳的に実行順序を変更することができるため、計算機の処理能力を高めることができる。
また、本発明の目的は、第二のステップにおいて、例外動作を必要とする例外起因命令が検出された場合、前記第4のステップでは、前記例外動作が終了したときに、前記プログラムに復帰して前記例外起因命令から順次実行する、ことを特徴とする計算機の制御方法を提供することで達成される。このような手段によれば、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行するため、動作の高速化を図ることができる
【0033】
また本発明の目的は、プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作の必要性が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行する復帰手段と、所定の命令を実行することにより、識別情報を無効化する識別情報無効化手段と、を有し、例外抑止手段は、例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、ことを特徴とする計算機を提供することにより達成される。
【0034】
また本発明の目的は、プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作を必要とする例外起因命令が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行する復帰手段と、所定の命令を実行することにより、識別情報を読み出す識別情報読み出し手段と、所定の命令を実行することにより、識別情報を書き換える識別情報書き換え手段と、を有し、例外抑止手段は、例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、ことを特徴とする計算機を提供することにより達成される。
また、本発明の目的は、例外抑止手段が、後置された命令の実行中に例外動作を必要とする例外起因命令を検出した場合、例外動作が終了したときに、復帰手段は前記プログラムに復帰して例外起因命令から順次実行することを特徴とする計算機を提供することにより達成される。
【0035】
【発明の実施の形態】
以下において、本発明の実施の形態を図面を参照しつつ詳しく説明する。なお、図中同一符号は、同一又は相当部分を示す。
[実施の形態1]
図7は、本発明の実施の形態1に係る計算機の構成を示す図である。図7に示されるように、本実施の形態1に係る計算機は、図1に示された従来の計算機に対して履歴制御部173をさらに備え、命令実行部170には例外抑止ロード命令実行部24、コミット命令実行部26、例外抑止履歴読み出し命令実行部28、例外抑止履歴書き込み命令実行部20を含み、レジスタ制御部171には例外抑止フラグ38を含み、割り込み制御部10にはコミット例外割り込み制御部44を含む点で相違する。
【0036】
ここで、履歴制御部173は例外抑止履歴書き込み命令実行部20と例外抑止ロード命令実行部24、コミット命令実行部26、例外抑止履歴読み出し命令実行部28、及びコミット例外割り込み制御部44に接続される。また、例外抑止履歴書き込み命令実行部20とコミット命令実行部26、及び例外抑止履歴読み出し命令実行部28は、さらに命令デコード部17と汎用レジスタ37に接続される。そして、例外抑止ロード命令実行部24はさらにメモリ1に接続される。
【0037】
また、例外抑止フラグ38は汎用レジスタ37に並設され、コミット例外割り込み制御部44はさらにプログラムカウンタ(PC)13とレジスタ31,33,35に接続される。
【0038】
上記のような構成を有する本実施の形態に係る計算機において、例外抑止ロード命令実行部24は、例外抑止ロード命令が供給された場合には、まず最初に汎用レジスタ37より読み出した値から実効アドレスを求め、該実効アドレスに対応するメモリ1内の領域からデータを読み出す。そして、図9に示されるように、ステップS1において読み出したデータの中に例外要因が存在するか否か確認する。その結果、ステップS2において例外要因が存在しないと判断された場合には、ステップS3へ進みロード対象アドレス域から読み出した上記データを、汎用レジスタ37へ書き込む。
【0039】
一方、ステップS2において例外要因が存在すると判断された場合には、ステップS10へ進み、履歴制御部173へ登録指示信号が供給されることにより、検出された例外情報が履歴制御部173に記憶される。このとき、ステップS11において、上記例外情報が記憶されるレジスタに対応する例外抑止フラグ38に1の値が設定され有効とされる。なお、例外抑止ロード命令の命令形式は、図3に示されたロード命令の命令形式と同様なものである。
【0040】
次にコミット命令実行部26は、コミット命令が供給された場合には、図10のステップS1に示されるように、該命令により指定された汎用レジスタ37内のレジスタに対応する例外抑止フラグ38が有効か否か確認する。そして、ステップS2において、該フラグに1が設定されており有効であると判断された場合には、ステップS3へ進み該例外抑止フラグ38を0として無効にする。そして、ステップS4において履歴制御部173へ確認指示信号が供給される。これにより、コミット例外が発生したことが割り込み制御部10へ伝達される。なお、ステップS2において例外抑止フラグ38が無効であると判断された場合には、コミット命令による動作を終了する。なおコミット命令の命令形式は、図11に示されるように、命令コードOP-CODE とレジスタを指定するコードGRとからなる。
【0041】
次に、例外抑止履歴読み出し命令実行部28は、例外抑止履歴読み出し命令が供給された場合、履歴制御部173へ読み出し指示信号を供給することにより、履歴制御部173に記憶されている上記例外情報を読み出し、汎用レジスタ37へ書き込む。また、同様に例外抑止履歴書き込み命令実行部20は、例外抑止履歴書き込み命令が供給された場合、汎用レジスタ37から読み出したデータと書き込み指示信号を履歴制御部173へ供給して、該読み出したデータを履歴制御部173に書き込む。
【0042】
またコミット例外割り込み制御部44は、履歴制御部173から供給された割り込みを通知するコミット信号CMに応じて、割り込みからの復帰先の命令アドレスをレジスタ(EPCR)31へ書き込み、割り込み発生前の動作状態を示すデータをレジスタ(EPSR)33へ書き込み、発生した割り込みに対応する動作状態をレジスタ(PSR)35へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ(PC)13へ供給する。
【0043】
次に履歴制御部173は、コミット命令実行部26から供給された確認指示信号に応じて、指定されたレジスタ番号に例外情報が保持されているか否か確認する。そして、指定されたレジスタ番号に例外情報が保持されている場合には、コミット例外を検出したことを示すコミット信号CMをコミット例外割り込み制御部44へ供給する。
【0044】
また、例外抑止履歴読み出し命令実行部28から供給された読み出し指示信号に応じて、記憶されている例外情報を読み出して例外抑止履歴読み出し命令実行部28へ供給する。さらに、例外抑止履歴書き込み命令実行部20から供給された書き込み指示信号に応じて、供給されたデータを記憶する。
【0045】
図8は、図7に示された履歴制御部173の構成を示す図である。図8に示されるように、履歴制御部173は、アドレスレジスタ57と、データタイプレジスタ59と、レジスタ番号レジスタ61と、例外要因(EC)レジスタ175と、レジスタタイプレジスタ105と、デコード回路65と、比較器67〜69と、ECフィールド(EC)177〜179と、Vフィールド151〜153と、レジスタタイプフィールド(RT)107〜109と、アドレスフィールド(ADDR)71,75,79と、データタイプフィールド(DT)72,76,80と、レジスタ番号フィールド(REG #)73,77,81と、コミット判定部180と、コミットエントリ検出部181と、無効エントリ検出部87と、例外抑止履歴登録制御部183と、コミット命令実行部185と、例外抑止履歴読み出し命令実行部187と、例外抑止履歴書き込み命令実行部189とを含む。
【0046】
ここでアドレスレジスタ57と、データタイプレジスタ59と、レジスタ番号レジスタ61と、レジスタタイプレジスタ105と、ECレジスタ175及びデコード回路65は命令実行部170に接続される。そして、アドレスレジスタ57は、例外抑止ロード命令が実行される際の実効アドレスを保持する。また、データタイプレジスタ59は、例外抑止ロード命令の実行においてロードストア対象とされるデータの型(大きさ)を示す識別値を保持する。そして、レジスタ番号レジスタ61は、例外抑止ロード命令の実行において書き込み対象とするレジスタ番号を保持する。
【0047】
またレジスタタイプレジスタ105は、操作対象とするレジスタの型を示す識別値を保持する。そして、ECレジスタ175は例外抑止ロード命令を実行するとき検出された例外要因の識別値を保持する。ここで、該例外要因とその識別値の例が、以下の表1に示される。
【0048】
【表1】
Figure 0003748191
また、デコード回路65は命令実行部170から供給された信号を解析し、対応する制御部を起動する。すなわち、供給される登録指示信号に応じて例外抑止履歴登録制御部183を起動し、確認指示信号に応じてコミット命令実行部185を起動し、読み出し指示信号に応じて例外抑止履歴読み出し命令実行部187を起動し、書き込み指示信号に応じて例外抑止履歴書き込み命令実行部189を起動する。
【0049】
一方比較器67〜69は、レジスタ番号レジスタ61とレジスタタイプレジスタ105、及び対応するエントリに接続される。ここで、並設された複数のエントリは例外抑止履歴テーブルを構成するが、各エントリは例外要因を示すECフィールド(EC)177〜179と、対応するエントリに例外が発生したか否かを2値データにより示すVフィールド151〜153と、例外情報が格納されたレジスタの種別を示すレジスタタイプフィールド(RT)107〜109と、例外処理の対象とするデータの実効アドレスを示すアドレスフィールド(ADDR)71,75,79と、ロード操作の対象とされるデータの型を示すデータタイプフィールド(DT)72,76,80と、例外情報が書き込まれたレジスタの番号を示すレジスタ番号フィールド(REG #)73,77,81とを含む。
【0050】
なお、上記データタイプフィールド(DT)72,76,80にはデータの型に応じた識別値が記録されるが、この識別値の例が以下の表2に示される。
【0051】
【表2】
Figure 0003748191
上記表2に示されるように、該識別値は例えば符号無しバイトに対して0、符号付きバイトに対しては1、符号無しハーフワードには2、符号付きハーフワードには3、ワードには4、ダブルワードには5、クワッドワードには6とされる。
【0052】
また、上記レジスタタイプフィールド107〜109には、レジスタの種別に応じた識別値が記録されるが、この識別値の例が以下の表3に示される。
【0053】
【表3】
Figure 0003748191
そして上記比較器67〜69は、レジスタ番号フィールド73,77,81やレジスタタイプフィールド107〜109に記録された値から特定される例外情報が書き込まれたレジスタと、コミット命令により指定されたレジスタとが一致しているか否かを比較し、両者が一致するか否かを示す信号を出力する。
【0054】
また、コミット判定部180は比較器67〜69に接続され、比較器67〜69から供給された信号に応じて、例外情報が格納されているレジスタがコミット命令により指定されているか否かを判定する。そして、その判定結果をコミット命令実行部185へ出力すると共に、コミット信号CMをコミット例外割り込み制御部44へ供給する。
【0055】
そして、コミットエントリ検出部181は、比較器67〜69に接続され、比較器67〜69から供給された信号に応じて、コミット命令により指定されたレジスタの番号と所定のフィールドに記録されているレジスタの番号とが一致したエントリの番号を検出する。
【0056】
また、無効エントリ検出部87は、各エントリのECフィールド177,178,179の情報に応じて、空きエントリ(無効なエントリ)の検出を行う。また、例外抑止履歴登録制御部183は、アドレスレジスタ57とデータタイプレジスタ59、レジスタ番号レジスタ61、レジスタタイプレジスタ105、ECレジスタ175、デコード回路65及び無効エントリ検出部87に接続され、デコード回路65から供給された登録信号ADDに応じて、無効エントリ検出部87で検出された空きエントリのアドレスフィールド(ADDR)71,75,79とレジスタタイプフィールド107,108,109と、レジスタ番号フィールド(REG #)73,77,81へ例外情報を書き込む。
【0057】
また、コミット命令実行部185は、レジスタ番号レジスタ61と、レジスタタイプレジスタ105と、コミット判定部180と、コミットエントリ検出部181と、デコード回路65及びVフィールド151〜153に接続される。そして、コミット命令実行部185は、コミット判定部180においてコミット命令により指定されたレジスタの番号と所定のフィールドに記録されているレジスタの番号とが一致したと判定された場合、一致した該レジスタ番号が格納されているレジスタのVフィールド151〜153へ1を書き込む。
【0058】
また、例外抑止履歴読みだし命令実行部187は、指定されたエントリから例外情報を読み出して命令実行部170へ供給する。さらに、例外抑止履歴書き込み命令実行部189は、命令実行部170から供給された値を指定されたエントリへ書き込む。
【0059】
次に、上記の計算機に係る動作の概要を説明する。なお、初期状態は通常動作を行うものとする。まず、該通常の動作においては命令読み出し部3は、プログラムカウンタ(PC)13が示す命令語を読み出し、命令実行部170へ供給する。そして、命令実行部170は供給された命令を実行するが、例外抑止ロード命令が供給された場合には、該実行時に例外処理の必要性を検出した場合において、書き込み対象とするレジスタに対応する例外抑止フラグ38を1と設定して有効にすると共に、履歴制御部173に例外情報を登録する。
【0060】
そして、コミット命令が供給された場合には、汎用レジスタ37内の指定されたレジスタの番号に対応する例外抑止フラグ38が有効か否か確認し、有効な場合には履歴制御部173を通じて抑止されていたコミット例外を発生させる。なお、通常動作においては、以上のような動作を繰り返す。
【0061】
また、割り込みが発生した場合には、命令読み出し部3又は命令実行部170から供給された割込信号に応じて、割込制御回路40は割り込みから復帰する先の命令語アドレスをレジスタ31へ、割り込み発生前の動作状態をレジスタ33へ、発生した割り込みに対応する動作状態をレジスタ35へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ13へ供給する。ここで命令読み出し部3は、割り込み制御部10から供給された分岐先アドレスに応じてメモリ1から命令語を読み出し、該命令語を命令実行部170へ供給する。そして、以降においては上記の通常の動作と同様である。
【0062】
また、割り込みから復帰する場合には、命令実行部170は割り込み復帰命令を実行することによりレジスタ33に格納された値をレジスタ35へ書き込む。また、レジスタ31に格納された値を読み出し、分岐先アドレスとして命令読み出し部3へ供給する。ここで、命令読み出し部3は供給された分岐先アドレスに応じて命令語をメモリ1から読み出し、命令実行部170へ供給する。そして、以降においては上記の通常動作と同様に動作する。
【0063】
次に、図12を参照しつつ、本実施の形態1に係る計算機において、コミット例外における割り込み処理プログラムを実行する手順について説明する。図12に示されるように、ステップS1ではコンテキストを退避する。次にステップS2において、例外抑止履歴テーブル内でVフィールドが有効なエントリを求める。そしてステップS3では、有効なエントリが見出せたか否か判断し、見出せない場合にはステップS20へ進み、不当なコミット例外としてエラーと処理する。なお、この場合には次にステップS8へ進む。
【0064】
一方、ステップS3において有効なエントリが見出せた場合には、ステップS4へ進み、ECフィールドに記録されたデータに基づいて回復可能な例外処理か否かを特定する。そしてステップS5において、該例外処理が回復可能なものであるか否かを判断し、回復可能でない場合にはステップS10へ進み、異常終了処理がなされる。また、ステップS5において回復可能と判断された場合には、ステップS6へ進み、例外処理が実行される。そして、ステップS7において、例外抑止履歴書き込み命令により、例外抑止履歴テーブルのエントリを無効化する。
【0065】
次に、ステップS8において、本来の処理におけるコンテキストが復元され、ステップS9で、割り込み復帰命令によりコミット例外から復帰する。
【0066】
以上より、本発明の実施の形態1に係る計算機によれば、命令の実行順序に起因して例外処理を留保する必要がある場合には、該例外処理を実行するために必要な例外情報が履歴制御部173に格納され、留保した例外処理を実行すべきであることが本来の処理で確定したときに初めて例外処理が実行される。そしてこのとき、上記のように、履歴制御部173に予め格納された上記例外情報に応じて該例外処理がなされ、その後本来の処理が続行されるため、動作速度が向上される。
[実施の形態2]
図13は、本発明の実施の形態2に係る計算機の構成を示す図である。図13に示されるように、本実施の形態2に係る計算機は、図7に示された実施の形態1に係る計算機と同様な構成を有するが、命令実行部190には浮動小数点ロード命令実行部25と、浮動小数点ストア命令実行部27と、浮動小数点演算命令実行部29と、浮動小数点コミット命令実行部191と、例外抑止・浮動小数点演算命令実行部199とを含み、履歴制御部207の構成が変更される点で相違するものである。また、レジスタ制御部203には浮動小数点レジスタ39と例外抑止フラグ205とがさらに備えられる点でも相違する。
【0067】
ここで、浮動小数点ロード命令実行部25はメモリ1及び命令デコード部17と汎用レジスタ37に接続され、浮動小数点ストア命令実行部27及び浮動小数点演算命令実行部29は命令デコード部17及び浮動小数点レジスタ39に接続される。そして、さらに浮動小数点ストア命令実行部27は汎用レジスタ37に接続され、浮動小数点演算命令実行部29は条件レジスタ30に接続される。なお、浮動小数点ロード命令実行部25と浮動小数点ストア命令実行部27及び浮動小数点演算命令実行部29は共に割込制御回路40に接続される。
【0068】
また、浮動小数点コミット命令実行部191は命令デコード部17と、例外抑止・浮動小数点演算命令実行部199と、履歴制御部207と、浮動小数点ストア命令実行部27及び浮動少数点レジスタ39に接続される。そして、例外抑止・浮動小数点演算命令実行部199はさらに、命令デコード部17と、浮動少数点レジスタ39と、履歴制御部207に接続される。
【0069】
ここで、浮動小数点ロード命令実行部25は、浮動小数点ロード命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応するメモリ1の領域からデータを読み出し、その結果を浮動小数点レジスタ39へ書き込む。なお、浮動小数点ロード命令を実行する際に割込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0070】
また、浮動小数点ストア命令実行部27は、浮動小数点ストア命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応する浮動小数点レジスタ39の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ1の領域へ書き込む。なお、浮動小数点ストア命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路40へ供給する。また、浮動小数点演算命令実行部29は、浮動小数点演算命令が供給された場合には浮動小数点レジスタ39から読み出した値に基づき演算を実行し、その結果を浮動小数点レジスタ39へ書き込む。
【0071】
次に、例外抑止・浮動小数点演算命令実行部199は、命令デコード部17より例外抑止・浮動小数点演算命令が供給された場合には、浮動小数点レジスタ39から読み出した値に基づいて浮動小数点演算を行い、その結果を浮動小数点レジスタ39へ書き込む。なお、命令を実行する際に割り込みを検出した場合には、浮動小数点レジスタ39内の書き込みレジスタの番号に対応する例外抑止フラグ205を1に設定する。また、履歴制御部207に対して登録指示信号を供給することにより例外情報を履歴制御部207に記憶する。
【0072】
そして、浮動小数点コミット命令実行部191は命令デコード部17より浮動小数点コミット命令が供給された場合には、浮動小数点レジスタ39内の指定されたレジスタの番号に対応する例外抑止フラグ205が1であれば、該フラグを0とし、履歴制御部207に対して確認指示信号を供給する。これにより、履歴制御部207からコミット信号CMが割り込み制御部10へ供給され、コミット例外の発生が割り込み制御部10へ伝えられる。なお、上記例外抑止フラグ205は、その各ビットが浮動小数点レジスタ39内の各エントリに対応して設けられる。
【0073】
図14は、図13に示された履歴制御部207の構成を示す図である。図14に示されるように、履歴制御部207は図8に示された履歴制御部173と同様な構成を有するが、命令語レジスタ213をさらに備え、各エントリには例外処理の起因となる例外起因命令の命令語を示す命令語フィールド209〜211が含まれる点で相違する。
【0074】
ここで、命令語レジスタ213の入力端は命令実行部170に接続され、出力端は例外抑止履歴登録制御部183と例外抑止履歴書き込み命令実行部189に接続される。上記において、命令語レジスタ213が、命令実行部170から供給された例外起因命令の命令語を保持すると共に、命令語フィールド209〜211には該命令語を示す値が、例外抑止履歴書き込み命令実行部189により書き込まれる。
【0075】
そして、該命令語フィールド209〜211に書き込まれた命令語を示す値は、例外抑止履歴読み出し命令実行部187により読み出され、命令実行部170に供給される。
【0076】
ここで、本実施の形態2に係る例外抑止・浮動小数点演算命令による動作を、図15を参照しつつ説明する。図15に示されるように、ステップS1において読み出したデータの中に例外要因が存在するか否か確認する。その結果、ステップS2において例外要因が存在しないと判断された場合には、ステップS3へ進み、読み出した上記データに基づき演算を行い、その結果を浮動小数点レジスタ39へ書き込む。
【0077】
一方、ステップS2において例外要因が存在すると判断された場合には、ステップS10へ進み、履歴制御部207へ登録指示信号が供給されることにより、検出された命令語等の例外情報が履歴制御部207に登録される。このとき、ステップS11において、上記例外情報が書き込まれるレジスタに対応する例外抑止フラグ205に1の値が設定され有効とされる。
【0078】
以上より、本実施の形態2に係る計算機によれば、例外情報として例外起因命令語も保持され、例外処理を終えた後に上記例外起因命令から本来の処理が順次再開されるため、上記実施の形態1に係る計算機と同様な効果を奏すると共に、動作の信頼性を高めることができる。
[実施の形態3]
図16は、本発明の実施の形態3に係る計算機の構成を示す図である。図16に示されるように、本実施の形態3に係る計算機は、図7に示された実施の形態1に係る計算機と同様な構成を有するが、命令実行部215には例外抑止履歴無効化制御部217をさらに含み、履歴制御部219には図17に示されるように、履歴テーブル無効化部218を含む点で相違するものである。
【0079】
ここで、上記例外抑止履歴無効化制御部217は入力端が命令デコード部17に接続され、出力端が汎用レジスタ37及び履歴制御部219に接続される。
【0080】
そして、この例外抑止履歴無効化制御部217は、例外抑止フラグ無効化命令が命令デコード部17から供給された場合には、図18のステップS1に示されるように、指定されたレジスタに対応する例外抑止フラグ38を無効化する。そしてさらに、ステップS2において、指定されたレジスタ番号に対応する例外情報が保持されている場合には、該例外情報が保持されているエントリを無効化するためのリセット信号RSを履歴制御部219へ供給する。
【0081】
ここで、履歴制御部219に含まれた履歴テーブル無効化部218は、該リセット信号RSに応じて、指定されたレジスタに対応する例外情報を保持する履歴テーブルのエントリを、そのECフィールドを無効化することにより無効化する。
【0082】
以上より、本実施の形態3に係る計算機によれば、上記実施の形態1に係る計算機と同様な効果を奏すると共に、例外抑止フラグ無効化命令を実行することにより、例外抑止フラグを無効化することができるため、複数の投機的命令移動を可能として、さらに動作の高速化を図ることができる。
[実施の形態4]
図19は、本発明の実施の形態4に係る計算機の構成を示す図である。図19に示されるように、本実施の形態4に係る計算機は、図7に示された実施の形態1に係る計算機と同様な構成を有するが、命令実行部220には例外抑止フラグ読み出し命令実行部221と例外抑止フラグ書き込み命令実行部223をさらに含む点で相違するものである。
【0083】
ここで、例外抑止フラグ読み出し命令実行部221と例外抑止フラグ書き込み命令実行部223とは共に、入力端が命令デコード部17と汎用レジスタ37に接続され、出力端が汎用レジスタ37に接続される。
【0084】
そして、例外抑止フラグ読み出し命令実行部221は、命令デコード部17から供給された例外抑止フラグ読み出し命令に応じて例外抑止フラグ38の値を読み出し、汎用レジスタ37へ書き込む。また、例外抑止フラグ書き込み命令実行部223は、命令デコード部17から供給された例外抑止フラグ書き込み命令に応じて汎用レジスタ37からデータを読み出し、それを例外抑止フラグ38へ書き込む。
【0085】
以上のような本実施の形態4に係る計算機によれば、上記実施の形態1に係る計算機と同様な効果を奏すると共に、例外抑止フラグ38の値を汎用レジスタ37へ退避することができるため、重畳的な投機的命令移動を可能として、さらに動作の高速化を図ることができる。
[実施の形態5]
本発明の実施の形態5に係る計算機は、図7に示された実施の形態1に係る計算機と同様な構成を有するが、履歴制御部の構成が相違するものである。ここで図20は、本発明の実施の形態5に係る履歴制御部225の構成を示す図である。 図20に示されるように、本実施の形態に係る履歴制御部225は、図8に示された実施の形態1に係る履歴制御部173と同様な構成を有するが、例外PCレジスタ(EPCレジスタ)227をさらに備え、例外抑止履歴テーブルを構成する各エントリにはEPCフィールド229〜231が設けられる点で相違する。
【0086】
ここで、例外PCレジスタ227は入力端が命令実行部170に接続され、出力端が例外抑止履歴登録制御部183と例外抑止履歴書き込み命令実行部189に接続される。そして、例外PCレジスタ227は例外起因命令の一つである例外抑止ロード命令の命令アドレスを保持する。また、各EPCフィールド229〜231には、例外起因命令の命令アドレスが記録される。
【0087】
次に、図21を参照しつつ、本実施の形態5に係る計算機において、コミット例外における割り込み処理プログラムを実行する手順について説明する。図21に示されるように、ステップS1ではコンテキストを退避する。次にステップS2において、例外抑止履歴テーブル内でVフィールドが有効なエントリを求める。そしてステップS3では、有効なエントリが見出せたか否か判断し、見出せない場合にはステップS30へ進み、不当なコミット例外としてエラーと処理する。なお、この場合には次にステップS9へ進む。
【0088】
一方、ステップS3において有効なエントリが見出せた場合には、ステップS4へ進み、ECフィールドに記録されたデータに基づいて例外要因が解消可能か否かを特定する。そしてステップS5において、該例外要因が解消可能なものであるか否かを判断し、解消可能でない場合にはステップS20へ進み、異常終了処理がなされる。なお、この場合には次にステップS7へ進む。
【0089】
また、ステップS5において解消可能と判断された場合には、ステップS6へ進み、例外要因の解消処理が実行される。そして、ステップS7において、例外起因命令の命令アドレスをコンテキスト復元時のレジスタ(EPCR)31の値として設定する。次に、ステップS8において、例外抑止履歴書き込み命令により、例外抑止履歴テーブルのエントリを無効化する。
【0090】
そして、ステップS9において、本来の処理におけるコンテキストが復元され、ステップS10で、割り込み復帰命令によりコミット例外から復帰する。
【0091】
以上のように、本実施の形態5に係る計算機によれば、実施の形態1に係る計算機と同様の効果を奏すると共に、例外抑止履歴テーブルへ例外起因命令の命令アドレスが保持されるため、例外要因を解消した後に例外起因命令に戻って、本来の処理を確実に続行することができる。
[実施の形態6]
図22は、本発明の実施の形態6に係る計算機の構成を示す図である。図22に示されるように、本実施の形態6に係る計算機は、図7に示された実施の形態1に係る計算機と同様な構成を有するが、命令実行部239に含まれるロード命令実行部233と演算命令実行部235、及び例外抑止ロード命令実行部237の構成が相違するものである。
【0092】
図23は、図22に示されたロード命令実行部233の構成を示す図である。図23に示されるように、ロード命令実行部233は、ロード制御回路241と、フラグ検出回路243と、セレクタ245とを含む。ここで、ロード制御回路241の入力端は命令デコード部17と、メモリ1及び汎用レジスタ37に接続され、出力端は割込制御回路40と、汎用レジスタ37及びセレクタ245に接続される。また、フラグ検出回路243の入力端は汎用レジスタ37に接続され、出力端はセレクタ245に接続される。さらに、セレクタ245の出力端は汎用レジスタ37に接続される。
【0093】
このような構成を有するロード命令実行部233においては、図25に示されるように、ステップS1においてGR読出データに応じて、フラグ検出回路243によりデータの読み出し対象としたレジスタに対応する例外抑止フラグ38が有効か否かが確認され、ステップS2において無効であると判定された場合には、ステップS3へ進み、ロード制御回路241から供給されたデータが、GR書き込みデータとしてセレクタ245から選択的に汎用レジスタ37へ出力される。
【0094】
なお、上記においてGR読出データは、汎用レジスタ37から読み出されたデータと該データに対応する例外抑止フラグ38の値とからなり、以下において同様である。
【0095】
一方、ステップS2においてフラグ検出回路243により、データの読み出し対象としたレジスタに対応する例外抑止フラグ38が有効であると判定された場合には、ステップS10へ進み、フラグ検出回路243から供給され書き込み先のレジスタに対応する例外抑止フラグ38を有効とする信号が、セレクタ245から選択的に出力される。
【0096】
図24は、図22に示された演算命令実行部235の構成を示す図である。図24に示されるように、演算命令実行部235は、演算制御回路247と、フラグ検出回路243と、セレクタ245とを含む。ここで、演算制御回路247の入力端は命令デコード部17及び汎用レジスタ37に接続され、出力端は割込制御回路40と、汎用レジスタ37及びセレクタ245に接続される。また、フラグ検出回路243の入力端は汎用レジスタ37に接続され、出力端はセレクタ245に接続される。さらに、セレクタ245の出力端は汎用レジスタ37に接続される。
【0097】
このような構成を有する演算命令実行部235においては、図26に示されるように、ステップS1においてGR読出データに応じて、フラグ検出回路243によりデータの読み出し対象としたレジスタに対応する例外抑止フラグ38が有効か否かが確認され、ステップS2において無効であると判定された場合には、ステップS3へ進み、演算制御回路247から供給されたデータが、GR書き込みデータとしてセレクタ245から選択的に汎用レジスタ37へ出力される。
【0098】
一方、ステップS2においてフラグ検出回路243により、データの読み出し対象としたレジスタに対応する例外抑止フラグ38が有効であると判定された場合には、ステップS10へ進み、フラグ検出回路243から供給され書き込み先のレジスタに対応する例外抑止フラグ38を有効とする信号が、セレクタ245から選択的に出力される。
【0099】
なお、本実施の形態に係る例外抑止ロード命令実行部237の構成及び動作は、上記ロード命令実行部233や演算命令実行部235の構成及び動作と同様であるが、以下において本実施の形態6に係る例外抑止ロード命令実行部237の動作を、図27のフローチャートを参照しつつ説明する。
【0100】
図27に示されるように、ステップS1においてGR読出データに応じて、データの読み出し対象としたレジスタに対応する例外抑止フラグ38が有効か否かが確認され、ステップS2において無効であると判定された場合には、ステップS3へ進み、読み出したデータの中に例外要因が存在するか否か確認する。
【0101】
一方、ステップS2において、データの読み出し対象としたレジスタに対応する例外抑止フラグ38が有効であると判定された場合には、ステップS20へ進み、書き込み先のレジスタに対応する例外抑止フラグ38を有効とする信号が出力される。
【0102】
ステップS4では、例外要因が存在しないと判断された場合には、ステップS5へ進みロード対象アドレス域から読み出した上記データを、汎用レジスタ37へ書き込む。
【0103】
一方、ステップS4において例外要因が存在すると判断された場合には、ステップS10へ進み、履歴制御部173へ登録指示信号が供給されることにより、検出された例外情報が履歴制御部173に登録される。このとき、ステップS11において、上記例外情報が記憶されるレジスタに対応する例外抑止フラグ38に1の値が設定され有効とされる。
【0104】
以上より、本実施の形態6に係る計算機によれば、命令の実行に際して、データ読み出し先のレジスタに対応する例外抑止フラグ38が有効である場合には、実行結果の書き込み先となるレジスタに対応する例外抑止フラグ38も有効にするため、例外抑止フラグ38の有効情報を伝播させることができ、投機的に移動した命令と依存関係を持った命令も移動することができる。これより、投機的な命令の移動についての自由度を高めることができ、動作速度をさらに高めることができる。
【0105】
最後に、本発明の課題を解決するための手段について付記する。
(1)プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作の必要性が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して分岐先の命令の実行を続行する第四のステップとを有することを特徴とする計算機の制御方法。
(2)プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、例外動作を必要とする例外起因命令が検出された場合には、例外動作を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した例外動作が必要とされる場合には、例外動作を遂行する第三のステップと、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行する第四のステップとを有することを特徴とする計算機の制御方法。
(3)第三のステップにおいては、例外動作が割り込み処理プログラムを実行することにより遂行される(1)または(2)のいずれかに記載の計算機の制御方法。
(4)第二のステップにおいては、留保される例外動作を実行するための情報が記憶され、第三のステップにおいては、情報に応じて例外動作が遂行される(1)または(2)のいずれかに記載の計算機の制御方法。このように、留保される例外動作を実行するための情報が記憶され、該情報に応じて例外動作が遂行されるようにすれば、例外動作を実行するために必要なプログラムを削減することができるため、計算機の回路規模を低減することができると共に、動作の高速化を図ることができる。
(5)第二のステップでは、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、第三のステップでは、分岐命令を実行することにより選択された分岐先の命令を実行する場合において、識別情報に応じて例外動作による処理が必要であると判別されるデータが実行対象とされるとき、例外動作が遂行される(1)または(2)のいずれかに記載の計算機の制御方法。このように、例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、該識別情報に応じて例外動作による処理が必要であるか否かが判別されることとすれば、さらに動作の高速化を図ることができる。
(6)所定の命令を実行することにより、留保される例外動作を実行するための情報が無効化される(4)に記載の計算機の制御方法。
(7)所定の命令を実行することにより、識別情報が無効化される(5)に記載の計算機の制御方法。このように、所定の命令を実行することにより、留保される例外動作を実行するための情報や識別情報を無効化できるようにすれば、複数の命令について実行順序を変更することができるため、計算機の処理能力を高めることができる。
(8)所定の命令を実行することにより、識別情報を読み出し、又は識別情報を書き換える(5)に記載の計算機の制御方法。このように、所定の命令を実行することによって、識別情報を読み出し、又は識別情報を書き換えることができるようにすれば、複数の命令において重畳的に実行順序を変更することができるため、計算機の処理能力を高めることができる。
(9)プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作の必要性が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して分岐先の命令の実行を続行する復帰手段とを備えたことを特徴とする計算機。
(10)プログラムされた命令を実行する計算機であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行するよう制御する制御手段と、後置された命令の実行中に、例外動作を必要とする例外起因命令が検出された場合には、例外動作を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された例外動作が必要とされる場合には、例外動作を遂行する例外動作実行手段と、例外動作が終了したときには、プログラムに復帰して例外起因命令から順次実行する復帰手段とを備えたことを特徴とする計算機。
(11)例外動作実行手段は、割り込み処理プログラムを実行することにより例外動作を遂行する(9)または(10)のいずれかに記載の計算機。
(12)例外抑止手段により留保される例外動作を実行するための情報を記憶する記憶手段をさらに備え、例外動作実行手段は、記憶手段に記憶された情報に応じて例外動作を遂行する(9)または(10)のいずれかに記載の計算機。
(13)例外抑止手段は、例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与し、例外動作実行手段は、分岐命令を実行することにより選択された分岐先の命令を実行する場合において、識別情報に応じて例外動作による処理が必要であると判別されるデータが実行対象とされるときに、例外動作を遂行する(9)または(10)のいずれかに記載の計算機。
(14)所定の命令を実行することにより、留保された例外動作を実行するための情報を無効化する履歴無効化手段をさらに備えた(12)に記載の計算機。
(15)所定の命令を実行することにより、識別情報を無効化する識別情報無効化手段をさらに備えた(13)に記載の計算機。
(16)所定の命令を実行することにより、識別情報を読み出す識別情報読み出し手段と、所定の命令を実行することにより、識別情報を書き換える識別情報書き換え手段とをさらに備えた(13)に記載の計算機。
【0106】
【発明の効果】
上述の如く、プログラムにおいて分岐命令より後置された命令を該分岐命令より先に実行したために留保された例外動作の実行が必要とされる場合に、例外動作を遂行すると共に、例外動作が終了したときにはプログラムに復帰して例外動作の遂行が必要とされた命令の次の命令から順次実行することにより、動作の高速化を図ることができるため、計算機の処理能力を高めることができる。
【0107】
また、例外動作が終了したときには、プログラムに復帰して例外動作の起因となる命令から順次実行することによっても、動作の高速化を図ることができるため、計算機の処理能力を高めることができる。
【図面の簡単な説明】
【図1】汎用レジスタと浮動小数点レジスタとを有する従来の計算機の構成を示す図である。
【図2】ロード命令による動作を示すフローチャートである。
【図3】ロード命令の命令形式を示す図である。
【図4】ストア命令による動作を示すフローチャートである。
【図5】ストア命令の命令形式を示す図である。
【図6】演算命令による動作を示すフローチャートである。
【図7】本発明の実施の形態1に係る計算機の構成を示す図である。
【図8】図7に示された履歴制御部の構成を示す図である。
【図9】実施の形態1に係る例外抑止ロード命令による動作を示すフローチャートである。
【図10】実施の形態1に係るコミット命令による動作を示すフローチャートである。
【図11】実施の形態1に係るコミット命令の命令形式を示す図である。
【図12】実施の形態1に係るコミット例外における割り込み処理を示すフローチャートである。
【図13】本発明の実施の形態2に係る計算機の構成を示す図である。
【図14】図13に示された履歴制御部の構成を示す図である。
【図15】実施の形態2に係る例外抑止浮動小数点演算命令による動作を示すフローチャートである。
【図16】本発明の実施の形態3に係る計算機の構成を示す図である。
【図17】図16に示された履歴制御部の構成を示す図である。
【図18】実施の形態3に係る例外抑止フラグ無効化命令による動作を示す図である。
【図19】本発明の実施の形態4に係る計算機の構成を示す図である。
【図20】本発明の実施の形態5に係る履歴制御部の構成を示す図である。
【図21】実施の形態5に係るコミット例外における割り込み処理を示すフローチャートである。
【図22】本発明の実施の形態6に係る計算機の構成を示す図である。
【図23】図22に示されたロード命令実行部の構成を示す図である。
【図24】図22に示された演算命令実行部の構成を示す図である。
【図25】実施の形態6に係るロード命令による動作を示すフローチャートである。
【図26】実施の形態6に係る演算命令による動作を示すフローチャートである。
【図27】実施の形態6に係る例外抑止ロード命令による動作を示すフローチャートである。
【符号の説明】
1 メモリ
3 命令読み出し部
6,170,190,215,220,239 命令実行部
8,171,203 レジスタ制御部
9,10 割り込み制御部
11 命令読み出し制御部
13 プログラムカウンタ(PC)
15 命令語レジスタ(IR)
17 命令デコード部
19,233 ロード命令実行部
20 例外抑止履歴書き込み命令実行部
21 ストア命令実行部
22,235 演算命令実行部
23 命令実行回路
24,237 例外抑止ロード命令実行部
25 浮動小数点(F)ロード命令実行部
26 コミット命令実行部
27 浮動小数点(F)ストア命令実行部
28 例外抑止履歴読出し命令実行部
29 浮動小数点(F)演算命令実行部
30 条件レジスタ
31 レジスタ(EPCR)
33 レジスタ(EPSR)
35 レジスタ(PSR)
37 汎用レジスタ
38,205 例外抑止フラグ
39 浮動小数点レジスタ
40 割込制御回路
44 コミット例外割り込み制御部
173,207,219,225 履歴制御部
57 アドレスレジスタ
59 データタイプレジスタ
61 レジスタ番号レジスタ
65 デコード回路
67〜69 比較器
71,75,79 アドレスフィールド(ADDR)
72,76,80 データタイプフィールド(DT)
73,77,81 レジスタ番号フィールド(REG #)
87 無効エントリ検出部
105 レジスタタイプレジスタ(RTREG )
107〜109 レジスタタイプフィールド
151〜153, V0〜Vm Vフィールド
175 例外要因レジスタ(ECレジスタ)
177〜179 ECフィールド
180 コミット判定部
181 コミットエントリ検出部
183 例外抑止履歴登録制御部
185 コミット命令実行部
187 例外抑止履歴読み出し命令実行部
189 例外抑止履歴書き込み命令実行部
191 浮動小数点コミット命令実行部
199 例外抑止・浮動小数点演算命令実行部
209〜211 命令語フィールド(INST)
213 命令語レジスタ
217 例外抑止履歴無効化制御部
218 履歴テーブル無効化部
221 例外抑止フラグ読み出し命令実行部
223 例外抑止フラグ書き込み命令実行部
227 例外PCレジスタ(EPCレジスタ)
229〜231 EPCフィールド
241 ロード制御回路
243 フラグ検出回路
245 セレクタ
247 演算制御回路
ADD 登録信号
CC 確認信号
R 読み出し信号
W 書き込み信号
CM コミット信号
RS リセット信号

Claims (6)

  1. プログラムされた命令の実行を制御する計算機の制御方法であって、
    前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
    前記第一のステップにおいて、例外動作の必要性が検出された場合には、前記例外動作を留保する第二のステップと、
    前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記例外動作が必要とされる場合には、前記例外動作を遂行する第三のステップと、
    前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する第四のステップと、を有し、
    前記第二のステップでは、前記例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、
    所定の命令を実行することにより前記識別情報が無効化されるステップを更に有する、
    ことを特徴とする計算機の制御方法
  2. プログラムされた命令の実行を制御する計算機の制御方法であって、
    前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
    前記第一のステップにおいて、例外動作の必要性が検出された場合には、前記例外動作を留保する第二のステップと、
    前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記例外動作が必要とされる場合には、前記例外動作を遂行する第三のステップと、
    前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する第四のステップと、を有し、
    前記第二のステップでは、前記例外動作による処理が必要とされるデータか否かを示す識別情報が、所定の処理の結果得られるデータ毎に付与され、
    所定の命令を実行することにより、前記識別情報を読み出し、又は、前記識別情報を書き換えるステップを更に有する
    ことを特徴とする計算機の制御方法。
  3. 前記第二のステップにおいて、前記例外動作を必要とする例外起因命令が検出された場合、
    前記第4のステップでは、前記例外動作が終了したときに、前記プログラムに復帰して前記例外起因命令から順次実行する、
    ことを特徴とする請求項1又は2記載の計算機の制御方法。
  4. プログラムされた命令を実行する計算機であって、
    前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行するよう制御する制御手段と、
    前記後置された命令の実行中に、例外動作の必要性が検出された場合には、前記例外動作を留保する例外抑止手段と、
    前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記例外抑止手段により留保された前記例外動作が必要とされる場合には、前記例外動作を遂行する例外動作実行手段と、
    前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する復帰手段と、
    所定の命令を実行することにより、前記識別情報を無効化する識別情報無効化手段と、を有し、
    前記例外抑止手段は、前記例外動作による処理が必要とされるか否かを示す識別情報を 、所定の処理の結果得られるデータ毎に付与する、
    ことを特徴とする計算機。
  5. プログラムされた命令を実行する計算機であって、
    前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行するよう制御する制御手段と、
    前記後置された命令の実行中に、例外動作の必要性が検出された場合には、前記例外動作を留保する例外抑止手段と、
    前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記例外抑止手段により留保された前記例外動作が必要とされる場合には、前記例外動作を遂行する例外動作実行手段と、
    前記例外動作が終了したときには、前記プログラムに復帰して前記分岐先の命令の実行を続行する復帰手段と、
    所定の命令を実行することにより、前記識別情報を読み出す識別情報読み出し手段と、
    所定の命令を実行することにより、前記識別情報を書き換える識別情報書き換え手段と、を有し、
    前記例外抑止手段は、前記例外動作による処理が必要とされるか否かを示す識別情報を、所定の処理の結果得られるデータ毎に付与する、
    ことを特徴とする計算機。
  6. 前記例外抑止手段が、前記後置された命令の実行中に前記例外動作を必要とする例外起因命令を検出した場合、
    前記例外動作が終了したときに、前記復帰手段は前記プログラムに復帰して前記例外起因命令から順次実行する、
    ことを特徴とする請求項4又は5記載の計算機。
JP2000043441A 1999-12-17 2000-02-21 計算機とその制御方法 Expired - Fee Related JP3748191B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2000043441A JP3748191B2 (ja) 2000-02-21 2000-02-21 計算機とその制御方法
EP07108697.9A EP1840735A3 (en) 1999-12-17 2000-12-15 Processor and method of controlling the same
US09/736,357 US6889315B2 (en) 1999-12-17 2000-12-15 Processor and method of controlling the same
EP00311245A EP1109096A3 (en) 1999-12-17 2000-12-15 Processor and method of controlling the same
KR1020000077734A KR100930332B1 (ko) 1999-12-17 2000-12-18 프로세서 및 그 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000043441A JP3748191B2 (ja) 2000-02-21 2000-02-21 計算機とその制御方法

Publications (2)

Publication Number Publication Date
JP2001236228A JP2001236228A (ja) 2001-08-31
JP3748191B2 true JP3748191B2 (ja) 2006-02-22

Family

ID=18566358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000043441A Expired - Fee Related JP3748191B2 (ja) 1999-12-17 2000-02-21 計算機とその制御方法

Country Status (1)

Country Link
JP (1) JP3748191B2 (ja)

Also Published As

Publication number Publication date
JP2001236228A (ja) 2001-08-31

Similar Documents

Publication Publication Date Title
US5377336A (en) Improved method to prefetch load instruction data
US7111126B2 (en) Apparatus and method for loading data values
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US6631460B1 (en) Advanced load address table entry invalidation based on register address wraparound
US20080148022A1 (en) Marking registers as available for register renaming
JP7007371B2 (ja) ベクトル命令のための要素間アドレス・ハザードの取扱い
JP2005243050A (ja) コンピュータシステム
TWI786181B (zh) 在例外遮罩更新指令之後允許未中止的交易處理
JP7281491B2 (ja) トランザクショナル比較及び破棄命令
CN109416632B (zh) 用于处理数据的装置和方法
JP4243271B2 (ja) データ処理装置およびデータ処理方法
US6889315B2 (en) Processor and method of controlling the same
JP3146058B2 (ja) 並列処理型プロセッサシステムおよび並列処理型プロセッサシステムの制御方法
JP3748191B2 (ja) 計算機とその制御方法
CN114116002A (zh) 一种存储重命名的实现方法、处理器及计算机设备
CN111164572B (zh) 数据处理装置和方法
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP3762608B2 (ja) 計算機とその制御方法
CN112334874B (zh) 数据处理装置和数据处理方法
JP3762597B2 (ja) 計算機とその制御方法
US10552156B2 (en) Processing operation issue control
JP2000347858A (ja) マイクロプロセッサ
JPH10124313A (ja) 並列処理計算機
JPH09244889A (ja) ロードアドレスキャッシュ装置及び方法
JPH0423129A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040324

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051021

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: 20051122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051124

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: 20091209

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091209

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131209

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees