JP3762608B2 - 計算機とその制御方法 - Google Patents
計算機とその制御方法 Download PDFInfo
- Publication number
- JP3762608B2 JP3762608B2 JP2000067789A JP2000067789A JP3762608B2 JP 3762608 B2 JP3762608 B2 JP 3762608B2 JP 2000067789 A JP2000067789 A JP 2000067789A JP 2000067789 A JP2000067789 A JP 2000067789A JP 3762608 B2 JP3762608 B2 JP 3762608B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- break
- register
- exception
- 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
Links
Images
Landscapes
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、プログラムされた命令を実行する計算機とその制御方法に関するものである。
【0002】
【従来の技術】
従来より、プログラムの開発におけるデバッグを支援するシステムとしてデバッガが作られているが、このようなシステムにおいては、プログラムの実行を所定の命令により中断するブレークポイント機能が備えられている。
【0003】
ここで、上記ブレークポイント機能とは、デバッグ対象プログラムにおいて、予め指定した任意の命令に対して、その都度実行を停止させる機能をいう。そして、このような機能は、プログラムのデバッグ処理において有益であることから、上記のように多くのデバッガに組み込まれている。
【0004】
利用者は、このブレークポイント機能を用いる場合、予め実行を停止させたい命令あるいは命令の種類を指定し、デバッグ対象プログラムを起動させる。これにより、デバッグ対象プログラムは、指定された命令で実行を停止する。その際、利用者は必要に応じて、停止した時点でのレジスタやメモリの値を調べたり、変更したりすることができる。なおこの時には、その後において、停止した時点から該プログラムの実行を再開することもできる。
【0005】
ここで、上記ブレークポイント機能の実現方法としては、命令ブレークと、ソフトウェアブレークと、データブレークとがある。このうち、命令ブレークにおいては、実行を停止させたい命令のアドレスを保持するブレークポイントレジスタがハードウェアに設けられる。そして、このブレークポイントレジスタで指定される命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、利用者にその旨が通知される。そしてさらに実行の再開が指示されると、制御が元に戻される。
【0006】
一方、ソフトウェアブレークにおいては、予め指定された命令が割り込みを発生する命令で置き換えられる。そして、該割り込みを発生する命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、利用者にその旨が通知される。そしてさらに実行の再開が指示されると、置き換えられた元の命令を模擬的に実行した後、制御が元に戻される。なおこの方法においては、割り込みを発生する命令として、ブレークポイント命令と呼ばれる専用の命令を用意する方法もある。
【0007】
また、上記のデータブレークにおいては、命令の実行において参照あるいは変更の対象とするデータのメモリアドレス(あるいはメモリアドレス域)を保持するブレークポイントレジスタがハードウェアに設けられる。そして、このレジスタに保持されたメモリアドレス(あるいはメモリアドレス域)を参照あるいは変更する命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、利用者にその旨が通知される。そして、その後に実行の再開が指示されると、制御が元に戻される。
【0008】
以下において、上記のような機能を有する従来の計算機について説明する。図1は、該従来の計算機の構成を示す図である。図1に示されるように、この計算機はメモリ1と、メモリ1に接続された命令読み出し部303と、メモリ1及び命令読み出し部303に接続された命令実行部307と、命令実行部307に接続されたレジスタ制御部309と、命令読み出し部303と命令実行部307及びレジスタ制御部309に接続された割り込み制御部9とを備える。
【0009】
ここで、命令読み出し部303は命令読み出し制御部11と、プログラムカウンタ(PC)13と、命令語レジスタ(IR)15と、命令ブレーク検出部301とを含む。そして、命令読み出し制御部11はメモリ1に接続され、プログラムカウンタ(PC)13は命令読み出し制御部11に接続される。さらに、命令語レジスタ(IR)15は命令読み出し制御部11に接続され、命令ブレーク検出部301はメモリ1と後述する命令実行回路23に接続される。
【0010】
また、命令実行部307は命令デコード部17と、ロード命令実行部19と、ストア命令実行部21と、演算命令実行部22と、命令実行回路23と、データブレーク検出部305とを含む。
【0011】
そして、命令デコード部17は命令語レジスタ15に接続され、ロード命令実行部19はメモリ1及び命令デコード部17と、後述する汎用レジスタ37に接続される。また、ストア命令実行部21は命令デコード部17及び汎用レジスタ37に接続され、演算命令実行部22は命令デコード部17と汎用レジスタ37に接続され、命令実行回路23は命令デコード部17と汎用レジスタ37及び後述するレジスタ31,33,35に接続される。さらに、データブレーク検出部305は、ロード命令実行部19とストア命令実行部21及び命令実行回路23に接続される。
【0012】
一方、レジスタ制御部309は、レジスタ(EPCR)31と、レジスタ(EPSR)33と、レジスタ(PSR)35と、汎用レジスタ37とを含む。ここで、レジスタ(EPCR)31とレジスタ(EPSR)33及びレジスタ(PSR)35は、さらに割込制御回路40に接続される。また、汎用レジスタ37はロード命令実行部19とストア命令実行部21、演算命令実行部22、及び命令実行回路23に接続される。
【0013】
また、割り込み制御部9は割込制御回路40を含む。そして、この割込制御回路40は命令読み出し制御部11とプログラムカウンタ13、命令ブレーク検出部301、ロード命令実行部19、ストア命令実行部21、演算命令実行部22、命令実行回路23、データブレーク検出部305などに接続される。
【0014】
上記のような構成を有する計算機において、命令読み出し部303はプログラムカウンタ13が示す命令語をメモリ1から読み出し、命令語レジスタ(IR)15を介して命令実行部307へ供給する。また命令読み出し制御部11は、命令実行部307あるいは割り込み処理を行う割込制御回路40より分岐先アドレスが供給された場合には、それをプログラムカウンタ13へ書き込む。なお命令読み出し制御部11は、それ以外の場合には次の命令語を命令実行部307へ供給するため、読み出すべき命令語のアドレスを示すプログラムカウンタ13をインクリメントする。また、命令語を読み出す際に割り込みを検出した場合には、割込制御回路40へ割込信号を供給する。
【0015】
また、命令デコード部17は、命令語レジスタ15から供給された命令をデコードし、ロード命令の場合にはロード命令実行部19へ、ストア命令の場合にはストア命令実行部21へ、演算命令の場合には演算命令実行部22へ、分岐命令や割り込み復帰命令その他の命令の場合には命令実行回路23へそれぞれ供給する。
【0016】
また、ロード命令実行部19はロード命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応するメモリ1の領域からデータを読み出し、その結果を汎用レジスタ37へ書き込む。なお、ロード命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0017】
同様に、ストア命令実行部21はストア命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ37の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ1の領域へ書き込む。なお、ストア命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0018】
また、演算命令実行部22は演算命令が供給された場合には、汎用レジスタ37から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ37の領域からデータを読み出し、そのデータに基づき演算し、該演算結果を汎用レジスタ37へ書き込む。
【0019】
また、命令実行回路23は、命令デコード部17から分岐命令が供給された場合には、分岐成立時に分岐先アドレスをプログラムカウンタ13へ供給する。さらに、命令デコード部17から割り込み復帰命令が供給された場合には、割り込み発生前の動作状態を示すEPSR33の値をPSR35へ書き込む。そしてこのとき、EPCR31から復帰先の命令のアドレスを読み出し、それを分岐先アドレスとしてプログラムカウンタ13へ供給する。
【0020】
また、命令実行回路23は、命令デコード部17からブレークポイント命令が供給された場合には、ソフトウェアブレークが成立した旨を割込制御回路40へ通知する。また、命令デコード部17から命令ブレークポイントレジスタ読み出し命令が供給された場合には、後述する命令ブレーク検出部301の命令ブレークポイントレジスタからブレークポイント対象アドレスを読み出し、汎用レジスタ37へ書き込む。また、命令デコード部17から命令ブレークポイントレジスタ書込命令が供給された場合には、汎用レジスタ37から読み出した値に応じたブレークポイント対象アドレスを命令ブレーク検出部301の命令ブレークポイントレジスタへ書き込む。
【0021】
また同様に、命令デコード部17からデータブレークポイントレジスタ読み出し命令が供給された場合には、データブレーク検出部305のデータブレークポイントレジスタからブレークポイント対象アドレスを読み出し、汎用レジスタ37へ書き込む。また、命令デコード部17からデータブレークポイントレジスタ書込命令が供給された場合には、汎用レジスタ37から読み出した値に応じたブレークポイント対象アドレスをデータブレーク検出部305のデータブレークポイントレジスタへ書き込む。
【0022】
なお、上記の種々の命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路40へ供給する。
【0023】
また、EPCR31は割り込みからの復帰先に該当する命令のアドレスを保持し、そのアドレスは割り込み発生時に設定される。また、PSR35は動作状態(state)を示すデータを保持し、EPSR33は割り込み発生時に設定された割り込み発生前の動作状態を示すデータを保持する。
【0024】
また、割込制御回路40は命令読み出し部303あるいは命令実行部307から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをEPCR31へ、割り込み発生前の動作状態を示すデータをEPSR33へ、発生した割り込みに対応する動作状態を示すPSR35へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部303へ供給する。
【0025】
以上より、上記計算機の動作を要約すると、初期動作状態を通常の動作としたとき次のようになる。通常の動作においては、命令読み出し部303は、プログラムカウンタ13が示す命令語を読み出し、命令実行部307へ供給し、命令実行部307は供給された命令を実行する。
【0026】
一方、割り込みが発生した時には、割込制御回路40は命令読み出し部303あるいは命令実行部307から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをEPCR31へ、割り込み発生前の動作状態を示すデータをEPSR33へ、発生した割り込みに対応する動作状態を示すPSR35へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部303へ供給する。また、命令読み出し部303は割り込み制御部9から供給された分岐先アドレスに応じて命令語を読み出し、命令実行部307へ供給する。そして、以降においては上記の通常の場合と同様に動作する。
【0027】
また、割り込みから復帰する時は、命令実行部307は割り込み復帰命令を実行することにより、EPSR33の値をPSR35へ書き込む。また、EPCR31に格納されたデータを読み出し、その結果を分岐先アドレスとして命令読み出し部303へ供給する。このとき命令読み出し部303は、命令実行部307から供給された分岐先アドレスに基づいて命令語を読み出し、命令実行部307へ供給する。そして、以降においては上記通常の動作がなされる。
【0028】
次に、図1に示された命令ブレーク検出部301について詳しく説明する。図2は、上記命令ブレーク検出部301の構成を示す図である。図2に示されるように、命令ブレーク検出部301は検出部311〜314と、アドレスフィールド(ADDR)315〜318と、Eフィールド(E)319〜322と、Vフィールド(V)323〜326と、OR回路327とを含む。
【0029】
ここで、アドレスフィールド(ADDR)315〜318は、それぞれブレークポイント対象アドレスを保持し、命令ブレークポイントレジスタを構成する。また、Eフィールド(E)319〜322は、命令ブレーク動作が有効か否かを示すデータを保持し、具体的には命令ブレーク動作が無効である場合には0を、命令ブレーク動作が有効である場合には1を保持する。そして、このEフィールド(E)319〜322は、命令ブレークポイントレジスタを構成する。また、Vフィールド(V)323〜326は、命令ブレーク検出済みか否かを示すデータを保持し、具体的には命令ブレーク未検出の時には0を、命令ブレーク検出済みの時には1を保持する。
【0030】
また、各検出部311〜314は、命令ブレークが成立するか否かを判定し、より具体的にはメモリ1から供給された命令アドレスと命令ブレークポイントレジスタから供給されたアドレスとを比較する。そして、これら両アドレスが一致した場合には、対応するVフィールド(V)323〜326に1を書き込むと共に、一致信号mtをOR回路327へ供給する。これにより、この場合には命令ブレークが成立した旨がOR回路327から割込制御回路40へ割込信号により通知される。
【0031】
次に、図1に示されたデータブレーク検出部305について詳しく説明する。図3は、上記データブレーク検出部305の構成を示す図である。図3に示されるように、データブレーク検出部305は検出部311〜314と、アドレスフィールド(ADDR)315〜318と、Eフィールド(E)319〜322と、Vフィールド(V)323〜326と、OR回路327とを含む。
【0032】
ここで、アドレスフィールド(ADDR)315〜318は、それぞれブレークポイント対象アドレスを保持し、データブレークポイントレジスタを構成する。また、Eフィールド(E)319〜322は、データブレーク動作が有効か否かを示すデータを保持し、具体的にはデータブレーク動作が無効である場合には0を、データブレーク動作が有効である場合には1を保持する。そして、このEフィールド(E)319〜322は、データブレークポイントレジスタを構成する。また、Vフィールド(V)323〜326は、データブレーク検出済みか否かを示すデータを保持し、具体的にはデータブレーク未検出の時には0を、データブレーク検出済みの時には1を保持する。
【0033】
また、各検出部311〜314は、データブレークが成立するか否かを判定し、より具体的にはメモリ1から供給されたロードストア命令の実効アドレス(データアドレス)とアドレスフィールド(ADDR)315〜318に格納されたブレークポイント対象アドレスとを比較する。そして、これら両アドレスが一致した場合には、対応するVフィールド(V)323〜326に1を書き込むと共に、一致信号mtをOR回路327へ供給する。これにより、この場合にはデータブレークが成立した旨がOR回路327から割込制御回路40へ割込信号により通知される。
【0034】
次に、割り込み処理プログラムによる上記計算機のデータブレーク割り込み動作の概要を、図4のフローチャートを参照しつつ説明する。まず図4に示されるように、ステップS1ではコンテキストを退避する。次に、ステップS2においてデータブレーク処理を行い、ステップS3でコンテキストの復元がなされる。そして、ステップS4において割り込み復帰命令を実行し、割り込み処理から復帰して割り込み処理動作を終了する。
【0035】
次に、割り込み処理プログラムによるソフトウェアブレーク割り込み動作の概要を、図5のフローチャートを参照しつつ説明する。まず図5に示されるように、ステップS1ではコンテキストを退避する。次に、ステップS2においてソフトウェアブレーク処理を行い、ステップS3でコンテキストの復元がなされる。そして、ステップS4において割り込み復帰命令を実行し、割込み処理から復帰して割込み処理動作を終了する。
【0036】
ところで、近年の計算機では、処理性能を向上すべくコンパイラ他によりプログラムが生成された時に命令の順序を変更するという手法が用いられており、このような手法は命令移動と呼ばれる。そしてこれは、命令実行部の有効稼働率を高めると共に、早期に命令の実行を開始することで、命令のレイテンシを隠蔽すること、すなわち例えば、ロード命令の場合には、メモリからのロード操作を早期に開始することで、潜在的なキャッシュミスを含むメモリへのアクセスの遅延を隠蔽できる可能性があるといったことを狙いとした手法である。
【0037】
ここで、上記のような命令移動において、特にコンパイラにおける基本ブロックの境界を越えた命令移動を行うものは、広域命令移動と呼ばれており、さらに広域命令移動において条件分岐を越えて命令移動を行うものは、投機的命令移動と呼ばれている。しかし、このように投機的に移動した命令において例外が発生した場合、例外処理を必要とするため大幅な性能の低下を招いたり、本来のプログラムの順序ではあり得なかったプログラム実行における不正な停止を招いたりする。
【0038】
すなわち例えば、必要とされるデータがメモリ上に無い状態であるページフォルト(page fault)を起こす可能性がある命令を投機的に移動した場合には、移動先においてページフォルトを伴う例外処理プログラムが実行されることとなり、本来の順序では生じ得なかったページフォルトによって性能が低下する。また、例えば除算命令を投機的に移動した場合には、例外処理プログラムにおいてゼロで除算する処理(ゼロ除算)が発生することも生じるが、このような場合にはプログラムの実行が停止することとなる。なお上記のように、投機的に移動した命令の実行において発生した例外は投機的例外と呼ばれる。
【0039】
そして、上記問題を解決する方法として、例外抑止(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 共著)が発行されている。
【0040】
そして従来においては、上記のような例外抑止命令を含むプログラムのデバッグを行う場合に、投機的に移動した命令のうち本来の順序では確定していない命令によっても、データブレークによりプログラムの実行が中断してしまうという問題があった。
【0041】
【発明が解決しようとする課題】
本発明は、上述の問題を解消するためになされたもので、データ処理能力が高く動作の信頼性が向上された計算機とその制御方法を提供することを目的とする。
【0042】
【課題を解決するための手段】
上記の目的は、プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、プログラムの実行を中断する必要性が見出された場合に、中断を留保すると共に、留保される中断を実行するための情報を記憶する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされる場合には、中断を遂行する第三のステップと、中断が必要でないと判明した情報を所定の命令を実行することにより無効化する第四のステップと、を有する計算機の制御方法を提供することによって達成される。このような手段によれば、分岐命令より後置された命令を、分岐命令より先に実行することによる無用な中断を回避して、プログラムされた命令の実行を確実に遂行することができる。
ここで、第二のステップでは、フラグを所定の値に設定し、第三のステップでは、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、ことを特徴とする。
【0043】
また、前記第三のステップにおける分岐命令を実行することにより選択された分岐先の命令は、割り込み処理プログラムにより実行されることにより、該中断によって、例えばデバッグ支援プログラムの実行などによる異なるシステムの制御を実現することができる。
【0044】
また、本発明の目的は、プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機であって、分岐命令より後置された所定の命令を分岐命令より先に実行したとき、プログラムの実行を中断する必要性が見出された場合に中断を留保する例外抑止手段と、留保される中断を実行するための情報を記憶する記憶手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された前記中断が必要とされる場合には、記憶手段に記憶された情報に応じて中断を遂行する中断処理実行手段と、中断が必要でないと判明した情報を無効化する無効化手段と、を備えたことを特徴とする計算機を提供することにより達成される。
【0045】
ここで、計算機は、フラグをさらに備え、例外抑止手段はフラグを所定の値に設定すると共に、中断処理実行手段は、分岐命令を実行することにより選択された分岐先の命令の実行において、先に留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、ものとすることができる。
また、中断処理実行手段により前記中断が遂行された場合には、割り込み処理プログラムを実行する割り込み処理実行手段をさらに備える、ものとすることができる。
【0046】
【発明の実施の形態】
以下において、本発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一符号は同一又は相当部分を示す。
[実施の形態1]
図6は、本発明の実施の形態1に係る計算機の構成を示す図である。図6に示されるように、本実施の形態1に係る計算機は、図1に示された従来の計算機に対してレジスタ制御部331内に例外抑止フラグ(GNER)38を、命令実行部329内に例外抑止ロード命令実行部24をさらに備える点で相違する。また、上記例外抑止フラグ(GNER)38が備えられたことに伴い、演算命令実行部235の構成が図1に示された演算命令実行部22と異なるものとされる。
【0047】
すなわち図7に示されるように、演算命令実行部235は、演算制御回路247と、フラグ検出回路243と、セレクタ245と、OR回路248とを含む。ここで、演算制御回路247の入力端は命令デコード部17及び汎用レジスタ37に接続され、出力端はOR回路248を介して割込制御回路40と接続され、さらに汎用レジスタ37とセレクタ245に接続される。また、フラグ検出回路243の入力端は汎用レジスタ37に接続され、出力端はセレクタ245及びOR回路248に接続される。そして、セレクタ245の出力端は汎用レジスタ37に接続される。
【0048】
また、図6に示されるように、例外抑止ロード命令実行部24はメモリ1と、命令デコード部17及び汎用レジスタ37に接続され、例外抑止フラグ38は汎用レジスタ37に並設される。
【0049】
上記のような構成を有する本実施の形態1に係る計算機において、例外抑止ロード命令実行部24は、命令デコード部17から例外抑止ロード命令が供給された場合には、まず最初に汎用レジスタ37より読み出した値から実効アドレスを求め、該実効アドレスに対応するメモリ1内の領域からデータを読み出す。そして、データを読み出す際にデータブレーク等の例外要因が存在するか否か確認する。
【0050】
その結果、該例外要因が存在しないと判断された場合には、メモリ1内のロード対象アドレス域から読み出した上記データを、汎用レジスタ37へ書き込む。
【0051】
一方、該例外要因が存在すると判断された場合には、検出された該例外要因を識別する識別値が汎用レジスタ37に記憶される。このとき、上記識別値が記憶されるレジスタに対応する例外抑止フラグ38に1の値が設定される。なお、上記例外要因を識別する識別値の例は、次の表1に示される。
【0052】
【表1】
また、上記の例外抑止フラグ38は、その各ビットが汎用レジスタ37の各エントリに対応し、例外要因が未検出の状態では0とされ、例外抑止ロード命令の実行において例外要因が検出された場合には1とされる。
【0053】
一方、本実施の形態に係る計算機においては、メモリ1内の所定のアドレス領域に、例外抑止ロード命令テーブルと、コミットポイントテーブル、コミットブレークポイントテーブル、及び例外抑止データブレーク履歴テーブルが格納される。
【0054】
ここで例外抑止ロード命令テーブルは、図12に示されるように、例外抑止ロード命令の命令アドレスと、該例外抑止ロード命令が含まれる制御経路(制御パス)の識別番号とを対にしたデータ、すなわち(a0,p0)、(a1,p1)、…(ai,pi)から構成される。また、同様にコミットポイントテーブルは、図13に示されるように、制御経路の識別番号と、その制御経路が本来の順序による実行において確定する場所を示す命令アドレスと、該制御経路が確定することで無効となる他の制御経路の識別番号とを組にしたデータ、すなわち(p0,b0,sp0)、(p1,b1,sp1)、…(pj,bj,spj)から構成される。
【0055】
また、コミットブレークポイントテーブルは、図14に示されるように、制御経路が本来の順序による実行において確定する場所を示す命令アドレスと、該命令アドレスに対応する制御経路の識別番号とを組にしたデータ、すなわち(b0,p0)、(b1,p1)、…(bk,pk)から構成される。また、例外抑止データブレーク履歴テーブルは、図15に示されるように、ブレーク対象とされる命令が含まれる制御経路の識別番号と、該ブレーク対象とされる命令の命令アドレスと、上記命令の実効アドレスとを組にしたデータ、すなわち(p0,c0,ec0)、(p1,c1,ec1)、…(pl,cl,ecl)から構成される。
【0056】
次に、上記のような構成を有する計算機の動作を説明する。なお、本実施の形態に係る計算機における以下の動作は、プログラムされた命令からなる所定のソフトウェアを実行することにより実現される。
【0057】
図8は、図6に示された計算機の、データブレークを検出した際の動作を示すフローチャートである。図8に示されるように、まずステップS1で、命令ブレーク検出部301によりブレーク対象とする命令が検出された場合には、該命令が例外抑止命令であるか否かが、演算命令実行部235の命令比較動作により判定される。そして、ステップS2において該命令が例外抑止命令であると判断された場合には、ステップS3へ進み、例外抑止命令でないと判断された場合にはステップS10へ進む。
【0058】
このとき、ステップS3では該ブレーク対象命令に関する情報を、メモリ1内に格納された上記例外抑止データブレーク履歴テーブルに登録し、動作を終了する。一方、ステップS10ではデータブレーク処理を実行して、動作を終了する。
【0059】
図9は、図6に示された計算機において、分岐命令の実行により本来の順序での命令の実行が確定したときの動作を示すフローチャートである。図9に示されるように、まずステップS1では、実行が確定した制御経路のデータブレークがメモリ1に格納されている例外抑止データブレーク履歴テーブルに存在するものであるか否か確認する。そしてステップS2において、演算命令実行部235の比較動作により、該制御経路のデータブレークがメモリ1に格納されている例外抑止データブレーク履歴テーブルに存在すると判断された場合にはステップS10へ進み、存在しないと判断された場合にはステップS3へ進む。
【0060】
そしてステップS3では、他の制御経路におけるデータブレークに関する情報が、上記例外抑止データブレーク履歴テーブル内に存在するか否かがサーチされ、ステップS4で演算命令実行部235により該情報が存在するものと判断された場合にはステップS5へ進み、存在しないものと判断された場合には動作を終了する。ここで、ステップS5では例外抑止データブレーク履歴テーブルに含まれる上記他の制御経路におけるデータブレークに関する情報を無効化し、動作を終了する。
【0061】
一方、ステップS10では、他の制御経路におけるデータブレークに関する情報が、上記例外抑止データブレーク履歴テーブル内に存在するか否かがサーチされ、ステップS11において演算命令実行部235により存在するものと判断された場合にはステップS12へ進み、存在しないものと判断された場合にはステップS13へ進む。ここで、ステップS12では例外抑止データブレーク履歴テーブルに含まれる上記他の制御経路におけるデータブレークに関する情報を無効化する。
【0062】
そして、ステップS13では、ステップS2において見出されたデータブレークの処理が実行され、ステップS14では例外抑止データブレーク履歴テーブルに含まれる実行が確定した制御経路のデータブレーク、すなわちステップS13で実行した処理、に関する情報を無効化して動作を終了する。
【0063】
次に図6に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を、図10のフローチャートを参照しつつ説明する。図10に示されるように、まずステップS1ではコンテキストが退避される。そして次に、ステップS2においてブレーク対象命令を読み出し、該命令が例外抑止命令であるか否かが、演算命令実行部235の命令比較動作により判定される。そして、ステップS3において該命令が例外抑止命令であると判断された場合には、ステップS4へ進み、例外抑止命令でないと判断された場合にはステップS20へ進む。
【0064】
このとき、ステップS4では例外抑止ロード命令テーブルを参照し、該ブレーク対象命令が含まれる制御経路番号を求める。そして、ステップS5において、メモリ1内に格納された上記例外抑止データブレーク履歴テーブルに、ブレーク対象命令が含まれる上記制御経路番号と、命令アドレスと、実効アドレスとを登録する。次に、ステップS6において、上記制御経路番号に基づき、メモリ1に格納されたコミットポイントテーブルを参照し、他の制御経路が存在するか否かを確認する。そして、ステップS7において演算命令実行部235の比較動作により他の制御経路が存在すると判断された場合にはステップS8へ進み、存在しないと判断された場合にはステップS11へ進む。
【0065】
ここでステップS8では、見出された制御経路番号が求められ、ステップS9ではコミットブレークポイントテーブルへ、該他の制御経路のコミットポイントに対応するブレークポイントの命令アドレスと、制御経路番号とを登録する。このようにして、ステップS10において該他の制御経路のコミットポイントに対するブレークポイントを設定する。
【0066】
そして、ステップS11において、ステップS1で退避されたコンテキストが復元される。なお、ステップS20ではデータブレーク処理を実行し、上記ステップS11へ動作が進行する。そしてさらにステップS12においては、割り込み復帰命令を実行することにより、データブレーク割込みの処理から元のプログラムの実行へ復帰し、割込み処理動作を終了する。
【0067】
次に、図6に示された計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作を、図11に示されたフローチャートを参照しつつ説明する。図11に示されるように、まずステップS1ではコンテキストが退避される。そして次に、ステップS2においてブレーク対象命令の命令アドレスがコミットブレークポイントテーブルに存在するか否かが確認され、ステップS3において演算命令実行部235の比較動作により該命令アドレスが存在すると判断された場合には、ステップS4へ進み、存在しないと判断された場合にはステップS40へ進む。
【0068】
そして、ステップS4ではコミットブレークポイントテーブルからブレーク対象命令の命令アドレスに対応する制御経路番号を求める。次に、ステップS5において、例外抑止データブレーク履歴テーブルに上記の制御経路番号が存在するか否かが演算命令実行部235の比較動作によりサーチされ、ステップS6において存在すると判断された場合にはステップS20へ進み、存在しないと判断された場合にはステップS7へ進む。そして、ステップS7ではコミットポイントテーブルに他の制御経路が存在するか否かが演算命令実行部235の比較動作によりサーチされ、ステップS8において存在すると判断された場合にはステップS9へ進み、存在しないと判断された場合にはステップS13へ進む。
【0069】
ステップS9では、ステップS8において見出された他の制御経路のコミットポイントにおける命令アドレスを求める。そして、ステップS10では上記命令アドレスに対するブレークポイントを、元の命令を復元することにより解除する。次に、ステップS11では、コミットブレークポイントテーブルから上記他の制御経路の制御経路番号と一致するエントリを無効化する。そしてさらに、ステップS12では、例外抑止データブレーク履歴テーブルにおいて、該他の制御経路の制御経路番号に一致するエントリを無効化する。
【0070】
次に、ステップS13ではブレーク対象命令の命令アドレスに対するブレークポイントを解除し、ステップS14においてコンテキストが復元される。そして最後に、ステップS15において割り込み復帰命令を実行することにより割込み処理から復帰し、割込み処理動作を終了する。
【0071】
一方、ステップS20では、コミットポイントテーブルに他の制御経路が存在するか否かが演算命令実行部235の比較動作によりサーチされ、ステップS21において存在すると判断された場合にはステップS22へ進み、存在しないと判断された場合にはステップS26へ進む。
【0072】
ステップS22では、ステップS21において見出された他の制御経路のコミットポイントにおける命令アドレスを求める。そして、ステップS23では上記命令アドレスに対するブレークポイントを、元の命令を復元することにより解除する。次に、ステップS24では、コミットブレークポイントテーブルから上記他の制御経路の制御経路番号と一致するエントリを無効化する。そしてさらに、ステップS25では、例外抑止データブレーク履歴テーブルにおいて、該他の制御経路の制御経路番号に一致するエントリを無効化する。
【0073】
次に、ステップS26でデータブレーク処理を実行し、ステップS27においては、例外抑止データブレーク履歴テーブルから実行が確定した制御経路の制御経路番号に一致するエントリを削除する。そして、上記ステップS14へ進む。
【0074】
一方、ステップS40ではソフトウェアブレーク処理が実行され、ステップS14へ進む。
【0075】
以上より、本実施の形態1に係る計算機によれば、上記のような動作を実現するソフトウェアを実行することにより、投機的に移動した命令のうち本来の順序による実行では確定していない命令によりデータブレークが生じてプログラムの実行が中断してしまうことが回避されるため、データ処理能力及び動作の信頼性が高い計算機を得ることができる。
[実施の形態2]
図16は、本発明の実施の形態2に係る計算機の構成を示す図である。図16に示されるように、本実施の形態2に係る計算機は、図6に示された実施の形態1に係る計算機と同様な構成を有するが、履歴制御部219をさらに含むと共に、命令実行部335には例外抑止履歴確認制御部26と、例外抑止フラグ無効化命令実行部217と、例外抑止履歴読み出し命令実行部28と、例外抑止履歴書き込み命令実行部20とを含む点で相違する。また、コミット例外割り込み制御部44を含む割り込み制御部10を備える点で相違する。
【0076】
さらに、命令実行部335に含まれるデータブレーク検出部333の構成は、後に詳しく説明するように、従来のデータブレーク検出部305の構成と相違する。
【0077】
ここで、履歴制御部219は例外抑止履歴書き込み命令実行部20と例外抑止ロード命令実行部24、例外抑止履歴確認制御部26、例外抑止履歴読み出し命令実行部28、例外抑止フラグ無効化命令実行部217及びコミット例外割り込み制御部44に接続される。また、例外抑止履歴書き込み命令実行部20と例外抑止履歴確認制御部26、例外抑止履歴読み出し命令実行部28、及び例外抑止フラグ無効化命令実行部217は、さらに命令デコード部17と汎用レジスタ37に接続される。
【0078】
また、コミット例外割り込み制御部44はさらにプログラムカウンタ(PC)13と、レジスタ31,33,35に接続される。そして、データブレーク検出部333は、さらに命令デコード部17に接続される。
【0079】
ここで、例外抑止履歴確認制御部26は、コミット命令が供給された場合には、該命令により指定された汎用レジスタ37内のレジスタに対応する例外抑止フラグ38が有効か否か確認する。そして、該フラグに1が設定されており有効であると判断された場合には、該例外抑止フラグ38を0にして無効とし、履歴制御部219へ確認信号が供給される。これにより、コミット例外が発生したことが割り込み制御部10へ伝達される。なお、例外抑止フラグ38が無効であると判断された場合には、コミット命令による動作を終了する。
【0080】
次に、例外抑止履歴読み出し命令実行部28は、例外抑止履歴読み出し命令が供給された場合、履歴制御部219へ読み出し信号を供給することにより、履歴制御部219に記憶されている上記例外情報を読み出し、汎用レジスタ37へ書き込む。また、同様に例外抑止履歴書き込み命令実行部20は、例外抑止履歴書き込み命令が供給された場合、汎用レジスタ37から読み出したデータと書き込み信号を履歴制御部219へ供給して、該読み出したデータを履歴制御部219に書き込む。さらに、例外抑止フラグ無効化命令実行部217は例外抑止フラグ無効化命令が供給された場合には、汎用レジスタ37の指定されたレジスタ番号に対応する例外抑止フラグ38を0とすると共に、履歴制御部219へ無効化信号を供給して、指定されたレジスタに対応する例外情報を無効化する。
【0081】
また、コミット例外割り込み制御部44は、履歴制御部219から供給された割り込みを通知するコミット信号CMに応じて、割り込みからの復帰先の命令アドレスをレジスタ(EPCR)31へ書き込み、割り込み発生前の動作状態を示すデータをレジスタ(EPSR)33へ書き込み、発生した割り込みに対応する動作状態をレジスタ(PSR)35へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ(PC)13へ供給する。
【0082】
次に履歴制御部219は、例外抑止ロード命令実行部24から供給された登録信号ADDに応じて、例外抑止履歴テーブルに例外情報を登録する。また、履歴制御部219は、例外抑止履歴確認制御部26から供給された確認信号CCに応じて、指定されたレジスタ番号に例外情報が保持されているか否か確認する。そして、指定されたレジスタ番号に例外情報が保持されている場合には、コミット例外を検出したことを示すコミット信号CMをコミット例外割り込み制御部44へ供給する。
【0083】
また履歴制御部219は、例外抑止履歴読み出し命令実行部28から供給された読み出し信号Rに応じて、記憶されている例外情報を読み出して例外抑止履歴読み出し命令実行部28へ供給する。さらに、例外抑止履歴書き込み命令実行部20から供給された書き込み信号Wに応じて、供給されたデータを記憶する。また、例外抑止フラグ無効化命令実行部217から供給されたリセット信号RSに応じて、指定されたレジスタ番号の例外情報が保持されている場合に、そのエントリを無効化する。
【0084】
図17は、図16に示されたデータブレーク検出部333の構成を示す図である。図17に示されるように、本実施の形態2に係るデータブレーク検出部333は、図3に示された従来のデータブレーク検出部305と同様な構成を有するが、命令デコード部17に接続された例外抑止判定部337をさらに備える点で相違する。また、各NEフィールド338〜341が、対応するVフィールド323〜326に並設され、AND回路343〜346を含む点で相違する。ここで、各AND回路343〜346の入力端は、対応する検出部311〜314及び例外抑止判定部337に接続され、出力端は対応するNEフィールド338〜341に接続される。
【0085】
ここで、上記各NEフィールド338〜341は、例外抑止命令に対してデータブレークを検出したか否かを示し、データブレークポイントレジスタを構成する。そして、NEフィールド338〜341に0が書き込まれたときには例外抑止命令に対してデータブレークが未検出であることを示し、1が書き込まれたときには例外抑止命令に対してデータブレークが検出済みであることを示す。
【0086】
また、例外抑止判定部337は、ブレーク対象命令が例外抑止命令か否かを判定し、データブレーク条件が成立した場合には、対応するNEフィールド338〜341にその出力値が書き込まれる。
【0087】
図18は、図16に示された履歴制御部219の構成を示す図である。図18に示されるように、履歴制御部219は、アドレスレジスタ57と、データタイプレジスタ59と、レジスタ番号レジスタ61と、例外要因(EC)レジスタ175と、デコード回路65と、比較器67〜69と、ECフィールド(EC)177〜179と、Vフィールド151〜153と、アドレスフィールド(ADDR)71,75,79と、データタイプフィールド(DT)72,76,80と、レジスタ番号フィールド(REG #)73,77,81と、コミット判定部180と、コミットエントリ検出部181と、無効エントリ検出部87と、例外抑止履歴登録制御部183と、例外抑止履歴確認制御部185と、例外抑止履歴読み出し命令実行部187と、例外抑止履歴書き込み命令実行部189と、履歴テーブル無効化部218を含む。
【0088】
ここでアドレスレジスタ57と、データタイプレジスタ59と、レジスタ番号レジスタ61と、ECレジスタ175及びデコード回路65は命令実行部335に接続される。そして、アドレスレジスタ57は、例外抑止ロード命令が実行される際の実効アドレスを保持する。また、データタイプレジスタ59は、例外抑止ロード命令の実行においてロードストア対象とされるデータの型(大きさ)を示す識別値を保持する。そして、レジスタ番号レジスタ61は、例外抑止ロード命令の実行において書き込み対象とするレジスタ番号を保持する。
【0089】
そして、ECレジスタ175は例外抑止ロード命令を実行するとき検出された例外要因の識別値を保持する。ここで、該例外要因とその識別値の例は、上記の表1に示されたものとなる。
【0090】
また、デコード回路65は命令実行部335から供給された信号を解析し、対応する制御部を起動する。すなわち、供給される登録信号に応じて例外抑止履歴登録制御部183を起動し、確認信号に応じて例外抑止履歴確認制御部185を起動し、読み出し信号に応じて例外抑止履歴読み出し命令実行部187を起動し、書き込み信号に応じて例外抑止履歴書き込み命令実行部189を起動し、無効化信号に応じて履歴テーブル無効化部218を起動する。
【0091】
一方比較器67〜69は、レジスタ番号レジスタ61及び対応するエントリに接続される。ここで、並設された複数のエントリは例外抑止履歴テーブルを構成するが、各エントリは例外要因を示すECフィールド(EC)177〜179と、対応するエントリに例外が発生したか否かを2値データにより示すVフィールド151〜153と、例外処理の対象とするデータの実効アドレスを示すアドレスフィールド(ADDR)71,75,79と、ロード操作の対象とされるデータの型を示すデータタイプフィールド(DT)72,76,80と、例外情報が書き込まれたレジスタの番号を示すレジスタ番号フィールド(REG #)73,77,81とを含む。
【0092】
なお、上記データタイプフィールド(DT)72,76,80にはデータの型に応じた識別値が記録されるが、この識別値の例は以下の表2に示される。
【0093】
【表2】
上記表2に示されるように、該識別値は例えば符号無しバイトに対して0、符号付きバイトに対しては1、符号無しハーフワードには2、符号付きハーフワードには3、ワードには4、ダブルワードには5、クワッドワードには6とされる。
【0094】
そして上記比較器67〜69は、ECフィールド(EC)177〜179が有効なエントリに対して、レジスタ番号フィールド73,77,81に記録された値から特定される例外情報が書き込まれたレジスタと、コミット命令により指定されたレジスタとが一致しているか否かを比較し、両者が一致するか否かを示す信号を出力する。
【0095】
また、コミット判定部180は比較器67〜69に接続され、比較器67〜69から供給された信号に応じて、例外情報が格納されているレジスタがコミット命令により指定されているか否かを判定する。そして、その判定結果を例外抑止履歴確認制御部185へ出力すると共に、コミット信号CMをコミット例外割り込み制御部44へ供給する。
【0096】
そして、コミットエントリ検出部181は、比較器67〜69に接続され、比較器67〜69から供給された信号に応じて、コミット命令により指定されたレジスタの番号と所定のフィールドに記録されているレジスタの番号とが一致したエントリの番号を検出する。
【0097】
また、無効エントリ検出部87は、各エントリのECフィールド177,178,179の情報に応じて、空きエントリ(無効なエントリ)の検出を行う。また、例外抑止履歴登録制御部183は、アドレスレジスタ57とデータタイプレジスタ59、レジスタ番号レジスタ61、ECレジスタ175、デコード回路65及び無効エントリ検出部87に接続され、デコード回路65から供給された登録信号ADDに応じて、無効エントリ検出部87で検出された空きエントリのECフィールド177,178,179と、アドレスフィールド(ADDR)71,75,79と、レジスタ番号フィールド(REG #)73,77,81と、データタイプフィールド(DT)72,76,80へ例外情報を書き込む。
【0098】
また、例外抑止履歴確認制御部185は、レジスタ番号レジスタ61と、コミット判定部180と、コミットエントリ検出部181と、デコード回路65及びVフィールド151〜153に接続される。そして、例外抑止履歴確認制御部185は、コミット判定部180においてコミット命令により指定されたレジスタの番号と所定のフィールドに記録されている結果書込み対象のレジスタの番号とが一致したと判定された場合、一致した該レジスタ番号が格納されているレジスタのVフィールド151〜153へ1を書き込む。
【0099】
また、例外抑止履歴読み出し命令実行部187は、指定されたエントリから例外情報を読み出して命令実行部335へ供給する。さらに、例外抑止履歴書き込み命令実行部189は、命令実行部335からECレジスタ175やレジスタ番号レジスタ61、アドレスレジスタ57、及びデータタイプレジスタ59を介して供給された値を、例外抑止履歴書き込み命令で指定されたエントリへ書き込む。 また、履歴テーブル無効化部218は、デコード回路65から供給された例外抑止フラグ無効化命令において指定された該エントリのECフィールド177,178,179を無効化する。
【0100】
以下において、図16に示された計算機の、割り込み処理プログラムによるデータブレーク割り込み動作を、図19のフローチャートを参照しつつ説明する。なお、図16に示された本実施の形態2に係る計算機においては、上記実施の形態1に係る計算機と同様に、メモリ1内の所定のアドレス領域に例外抑止ロード命令テーブルと、コミットポイントテーブル、コミットブレークポイントテーブル、及び例外抑止データブレーク履歴テーブルが格納される。
【0101】
図19に示されるように、まずステップS1ではコンテキストが退避される。そして次に、ステップS2においてデータブレーク検出部333に含まれるデータブレークポイントレジスタのNEフィールド338〜341を参照し、ブレーク対象命令が例外抑止命令であるか否かを確認する。そしてステップS3において、NEフィールド338〜341に1が書き込まれていることにより該命令が例外抑止命令であると判断された場合には、ステップS4へ進み、NEフィールド338〜341に0が書き込まれていることにより例外抑止命令でないと判断された場合にはステップS20へ進む。
【0102】
このとき、ステップS4では例外抑止ロード命令テーブルを参照し、該ブレーク対象命令が含まれる制御経路番号を求める。そして、ステップS5において、メモリ1内に格納された上記例外抑止データブレーク履歴テーブルに、ブレーク対象命令が含まれる上記制御経路番号と、命令アドレスと、実効アドレスとを登録する。次に、ステップS6において、上記制御経路番号に基づき、メモリ1に格納されたコミットポイントテーブルを参照し、他の制御経路が存在するか否かを確認する。
【0103】
そして、ステップS7において演算命令実行部22の比較動作により他の制御経路が存在すると判断された場合にはステップS8へ進み、存在しないと判断された場合にはステップS11へ進む。ここでステップS8では、見出された制御経路番号が求められ、ステップS9ではコミットブレークポイントテーブルへ、該他の制御経路のコミットポイントに対応するブレークポイントの命令アドレスと、制御経路番号とを登録する。このようにして、ステップS10において該他の制御経路のコミットポイントに対するブレークポイントを設定する。
【0104】
そして、ステップS11において、ステップS1で退避されたコンテキストが復元される。なお、ステップS20ではデータブレーク処理を実行し、上記ステップS11へ動作が進行する。そしてさらにステップS12においては、割り込み復帰命令を実行することにより、データブレーク割込みの処理から元のプログラムの実行へ復帰し、割込み処理動作を終了する。
【0105】
なお、図16に示された本実施の形態に係る計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作は、図11のフローチャートに示された実施の形態1に係る計算機による動作と同様である。
【0106】
以上より、本実施の形態2に係る計算機によれば、履歴制御部219は例外抑止履歴テーブルに例外情報を登録し、データブレーク検出部333はNEフィールド338〜341に該例外動作を留保する(例外抑止命令である)ことを示す1のデータを書き込んだ上で、コミット命令の実行により該留保した例外動作を上記例外情報に応じて遂行するため、投機的に移動した命令のうち本来の順序による実行では確定していない命令によりデータブレークが生じてプログラムの実行が中断してしまうことが回避され、データ処理能力及び動作の信頼性が高い計算機を得ることができる。
[実施の形態3]
図20は、本発明の実施の形態3に係る計算機の構成を示す図である。図20に示されるように、本実施の形態3に係る計算機は、図16に示された実施の形態2に係る計算機と同様な構成を有するが、ブレーク履歴制御部355をさらに含むと共に、命令実行部353にはブレーク履歴読み出し命令実行部349と、ブレーク履歴書込み命令実行部351とを含む点で相違する。また後述するように、命令実行部353に含まれたデータブレーク検出部347の構成が、図16に示されたデータブレーク検出部333の構成と相違する。
【0107】
ここで、ブレーク履歴読み出し命令実行部349は命令デコード部17と、ブレーク履歴制御部355及び履歴制御部219に接続される。また、ブレーク履歴書込み命令実行部351は命令デコード部17と、汎用レジスタ37、履歴制御部219及びブレーク履歴制御部355に接続される。また、ブレーク履歴制御部355は、さらに例外抑止履歴確認制御部26と例外抑止フラグ無効化命令実行部217、データブレーク検出部347及びコミット例外割り込み制御部44に接続される。
【0108】
そして、例外抑止履歴確認制御部26は上記実施の形態2における場合の動作に加え、コミット命令の実行によりブレーク履歴制御部355に対して確認信号CCを供給する。また、例外抑止フラグ無効化命令実行部217は上記実施の形態2における場合の動作に加え、例外抑止フラグ無効化命令の実行によりブレーク履歴制御部355に対してリセット(無効化)信号RSを供給する。
【0109】
また、ブレーク履歴読み出し命令実行部349は、命令デコード部17からブレーク履歴読み出し命令が供給された場合、ブレーク履歴制御部355に対して読み出し信号Rを供給することにより例外抑止データブレーク履歴テーブルを読み出し、その結果を汎用レジスタ37へ書き込む。また、ブレーク履歴書込み命令実行部351は、命令デコード部17からブレーク履歴書込み命令が供給された場合、汎用レジスタ37から読み出したデータを書き込み信号Wと共にブレーク履歴制御部355へ供給する。
【0110】
そして、ブレーク履歴制御部355は、データブレーク検出部347から供給された登録信号ADDに応じて、後述する例外抑止データブレーク履歴テーブル部にデータブレーク情報を登録する。また、供給された確認信号CCに応じて、指定されたレジスタ番号にデータブレーク情報が保持されているか否か確認する。そして、指定されたレジスタ番号にデータブレーク情報が保持されている場合には、ブレーク割込みを検出した旨をブレーク信号BRによりコミット例外割り込み制御部44へ伝達する。また、供給された無効化信号RSに応じて、指定されたレジスタ番号にデータブレーク情報が保持されている場合には、そのエントリを無効化する。また、供給された読み出し信号Rに応じて例外抑止データブレーク履歴テーブル部から読み出したデータをブレーク履歴読み出し命令実行部349へ供給する。さらには、供給された書込み信号Wに応じて、ブレーク履歴書き込み命令実行部351から供給された値を例外抑止データブレーク履歴テーブル部へ書き込む。
【0111】
図21は、図20に示されたデータブレーク検出部347の構成を示す図である。図21に示されるように、本実施の形態に係るデータブレーク検出部347は、図17に示されたデータブレーク検出部333と同様な構成を有するが、出力端がブレーク履歴制御部355に接続されたAND回路348を備えている点で相違するものである。
【0112】
なお、図21に示された検出部311〜314は、データブレーク条件が成立したか否かを判定する。具体的には、非例外抑止命令であるロードストア命令の実効アドレスと、アドレスフィールドに格納されたアドレスとを比較し、それらが一致した場合には対応するVフィールドに1を書き込み、データブレークが成立した旨を示す信号mtを出力する。また、例外抑止命令の実効アドレスとアドレスフィールドに格納されたアドレスとを比較して一致した場合には、OR回路327を介して登録信号ADDをブレーク履歴制御部355へ供給する。
【0113】
図22は、図20に示されたブレーク履歴制御部355の構成を示す図である。図22に示されるように、本実施の形態に係るブレーク履歴制御部355は、図18に示された履歴制御部219と同様な構成を有し、アドレスレジスタ57と、実効アドレスレジスタ359と、レジスタ番号レジスタ61と、有効レジスタ357と、デコード回路65と、比較器67〜69と、Eフィールド(E)361〜363と、Vフィールド151〜153と、アドレスフィールド(ADDR)71,75,79と、EAフィールド(EA)364〜366と、レジスタ番号フィールド(REG #)73,77,81と、ブレーク判定部367と、ブレークエントリ検出部369と、無効エントリ検出部87と、ブレーク履歴登録制御部183bと、ブレーク履歴確認制御部186と、ブレーク履歴読み出し命令実行部187bと、ブレーク履歴書き込み命令実行部189bと、履歴テーブル無効化部218とを含む。
【0114】
ここでアドレスレジスタ57と、実効アドレスレジスタ359と、レジスタ番号レジスタ61と、有効レジスタ357及びデコード回路65は命令実行部353に接続される。そして、アドレスレジスタ57は、ブレーク対象命令の命令アドレスを保持する。また、実効アドレスレジスタ359は、ブレーク対象命令の実効アドレスを保持する。そして、レジスタ番号レジスタ61は、例外抑止ロード命令の実行において書き込み対象とするレジスタ番号を保持する。
【0115】
また、有効レジスタ357は有効フラグからなるものとすることができ、データブレーク情報が有効か否かを示すデータを保持する。そして、0が書き込まれているときにはエントリが無効であることを意味し、1が書き込まれているときにはエントリが有効であることを示す。
【0116】
また、デコード回路65は命令実行部353から供給された信号を解析し、対応する制御部を起動する。すなわち、供給される登録信号ADDに応じてブレーク履歴登録制御部183bを起動し、確認信号CCに応じてブレーク履歴確認制御部186を起動し、読み出し信号Rに応じてブレーク履歴読み出し命令実行部187bを起動し、書き込み信号Wに応じてブレーク履歴書き込み命令実行部189bを起動し、無効化信号RSに応じて履歴テーブル無効化部218を起動する。
【0117】
一方比較器67〜69は、レジスタ番号レジスタ61及び対応するエントリに接続される。ここで、並設された複数のエントリは例外抑止データブレーク履歴テーブルを構成するが、各エントリはエントリが有効か否かを2値データにより示すEフィールド(E)361〜363と、対応するエントリにデータブレークが発生したか否かを2値データにより示すVフィールド151〜153と、登録されているデータブレークの命令アドレスを保持するアドレスフィールド(ADDR)71,75,79と、登録されているデータブレークの実効アドレスを保持するEAフィールド364〜366と、登録されているデータブレークの結果を書き込むレジスタの番号を示すレジスタ番号フィールド(REG #)73,77,81とを含む。
【0118】
そして上記比較器67〜69は、Eフィールド(E)361〜363が有効なエントリに対して、レジスタ番号フィールド73,77,81に記録された値と、レジスタ番号レジスタ61に保持されたレジスタ番号とを比較し、両者が一致するか否かを示す信号を出力する。
【0119】
また、ブレーク判定部367は比較器67〜69に接続され、比較器67〜69から供給された信号に応じて、データブレーク情報が格納されているレジスタがコミット命令により指定されているか否かを判定する。そして、その判定結果をブレーク履歴確認制御部186へ出力すると共に、ブレーク信号BRをコミット例外割り込み制御部44へ供給する。
【0120】
そしてブレークエントリ検出部369は、比較器67〜69に接続され、比較器67〜69から供給された信号に応じて、例外抑止データブレーク履歴に登録されている結果書込み対象を指定するレジスタ番号のうちコミット命令により指定されたレジスタの番号を格納するエントリ番号を検出する。また、無効エントリ検出部87は、各エントリのEフィールド361〜363の情報に応じて、例外抑止データブレーク履歴テーブルにおける空きエントリ(無効なエントリ)の検出を行う。
【0121】
また、ブレーク履歴登録制御部183bは、アドレスレジスタ57と実効アドレスレジスタ359、レジスタ番号レジスタ61、有効レジスタ357、デコード回路65及び無効エントリ検出部87に接続され、デコード回路65から供給された登録信号ADDに応じて、無効エントリ検出部87で検出された空きエントリのEフィールド361〜363と、アドレスフィールド(ADDR)71,75,79と、レジスタ番号フィールド(REG #)73,77,81と、EAフィールド364〜366へデータブレーク情報を書き込む。
【0122】
また、ブレーク履歴確認制御部186は、レジスタ番号レジスタ61と、ブレーク判定部367と、ブレークエントリ検出部369と、デコード回路65及びVフィールド151〜153に接続される。そして、ブレーク履歴確認制御部186は、ブレーク判定部367においてコミット命令により指定されたレジスタの番号と例外抑止データブレーク履歴に登録されている結果書込み対象を指定するレジスタ番号とが一致したと判定された場合、一致した該レジスタ番号が格納されているエントリのVフィールド151〜153へ1を書き込む。
【0123】
また、ブレーク履歴読み出し命令実行部187bは、例外抑止データブレーク履歴読み出し命令により指定されたエントリからデータブレーク情報を読み出して命令実行部353へ供給する。さらに、ブレーク履歴書き込み命令実行部189bは、命令実行部353から有効レジスタ357やレジスタ番号レジスタ61、アドレスレジスタ57、及び実効アドレスレジスタ359を介して供給された値を、例外抑止データブレーク履歴書き込み命令で指定されたエントリへ書き込む。また、履歴テーブル無効化部218は、デコード回路65から供給された例外抑止フラグ無効化命令において指定された該エントリのEフィールド361〜363を無効化する。
【0124】
以上より、本実施の形態3に係る計算機によれば、上記実施の形態2に係る計算機と同様な効果を奏すると共に、ブレーク履歴制御部355は実行を留保するデータブレークについてのデータブレーク情報を例外抑止データブレーク履歴テーブルに登録した上で、コミット命令の実行により該留保したデータブレーク動作を上記データブレーク情報に応じて遂行するため、データ処理に必要なプログラムをさらに短縮化することができる。従って、該プログラムの実行に必要とされるメモリ容量が低減できると共に、データ処理をより高速化することができる。
[実施の形態4]
図23は、本発明の実施の形態4に係る計算機の構成を示す図である。図23に示されるように、本実施の形態に係る計算機は、図16に示された実施の形態2に係る計算機と同様な構成を有するが、命令実行部373にはモード命令実行部371がさらに含まれ、レジスタ制御部377にはモードレジスタ375がさらに含まれる点で相違するものである。
【0125】
ここで、このモード命令実行部371は命令デコード部17と、モードレジスタ375及び汎用レジスタ37に接続される。また、モードレジスタ375は、さらに例外抑止履歴確認制御部26と例外抑止フラグ無効化命令実行部217に接続される。
【0126】
そして、以上のような構成を有する本実施の形態4に係る計算機においては、本来の命令のみを実行するときにはモードレジスタ375に0の値が格納され、本来の命令に加えてコミット命令あるいは例外抑止フラグ無効化命令が実行されたことに応じて割り込みを発生させるときにはモードレジスタ375に1の値が格納される。
【0127】
また、例外抑止履歴確認制御部26は、モードレジスタ375に1の値が格納されているときに限り、割込信号を出力することによってコミット命令の実行による割り込みの発生を割り込み制御部10へ通知する。また、例外抑止フラグ無効化命令実行部217は、モードレジスタ375に1の値が格納されているときに限り、割込信号を出力することによって例外抑止フラグ無効化命令の実行による割り込みの発生を割り込み制御部10へ通知する。
【0128】
また、命令実行回路23は、命令デコード部17から動作モード読み出し命令が供給された場合には、モードレジスタ375から格納されている値を読み出し、その値を汎用レジスタ37へ書き込む。また、同様に動作モード書き込み命令が供給された場合には、汎用レジスタ37から読み出した値をモードレジスタ375へ書き込む。
【0129】
なお、本実施の形態4に係る計算機においては、メモリ1内の所定のアドレス領域に、例外抑止データブレーク履歴テーブルが格納される。そして、本実施の形態4に係る例外抑止データブレーク履歴テーブルは、図25に示されるように、ブレーク対象とされる命令の実行結果を書き込むレジスタの番号と、該ブレーク対象とされる命令の命令アドレスと、上記命令の実効アドレスとを組にしたデータ、すなわち(r0,a0,ea0)、(r1,a1,ea1)、…(rl,al,eal)から構成される。
【0130】
以下において、図23に示された計算機の、割り込み処理プログラムによるデータブレーク割り込み動作を、図24のフローチャートを参照しつつ説明する。
【0131】
なお、図23に示された本実施の形態4に係る計算機の、割り込み処理プログラムによるソフトウェアブレーク割り込み動作は、図5のフローチャートに示された従来の計算機による動作と同様である。
【0132】
図24に示されるように、まずステップS1ではコンテキストを退避する。次にステップS2では割り込みの種類を判定し、ステップS3では該割り込みがコミット命令または例外抑止フラグ無効化命令の実行に起因するものであるか否かが判断される。そして、該割り込みがコミット命令または例外抑止フラグ無効化命令の実行のいずれにも起因しない場合にはステップS30へ進み、いずれかに起因する場合にはステップS20へ進む。さらにステップS20では、コミット命令の実行に起因するものであるか否かが判断され、コミット命令の実行に起因するものである場合にはステップS4へ進み、コミット命令でなく例外抑止フラグ無効化命令の実行に起因する場合にはステップS21へ進む。
【0133】
そして、ステップS4ではメモリ1に格納された例外抑止データブレーク履歴テーブル内に、コミット命令により指定されたレジスタ番号が実行結果を書き込むレジスタの番号データrlとして格納されているか否か確認する。そして、ステップS5において該レジスタ番号が存在しないと判断したときには、ステップS8へ進む一方、該レジスタ番号が存在すると判断したときには、ステップS6へ進んでそのレジスタ番号により指定されるレジスタを結果書き込みの対象とする該データブレーク処理を実行する。その後、ステップS7では上記例外抑止データブレーク履歴テーブルより、コミット命令により指定されたレジスタ番号が含まれる一組(エントリ)のデータを削除する。
【0134】
次に、ステップS8では例外抑止データブレーク履歴テーブルに有効なエントリが存在するか否か確認し、ステップS9において存在しないと判断された場合にはステップS10へ進み、存在すると判断された場合にはステップS11へ進む。ここで、ステップS10ではモード書き込み命令を実行することにより、モードレジスタ375に0の値が格納される。
【0135】
そして、ステップS11においてコンテキストの復元がなされ、ステップS12において割り込み復帰命令を実行することにより、割り込み処理から復帰し、データブレーク割り込みの動作を終了する。
【0136】
一方、ステップS21では、メモリ1に格納された例外抑止データブレーク履歴テーブル内に、例外抑止フラグ無効化命令により指定されたレジスタ番号が実行結果を書き込むレジスタの番号データrlとして格納されているか否か確認する。そして、ステップS22において該レジスタ番号が存在しないと判断したときには、ステップS24へ進む一方、該レジスタ番号が存在すると判断したときには、ステップS23へ進んで上記例外抑止データブレーク履歴テーブルより、例外抑止フラグ無効化命令により指定されたレジスタ番号が含まれる一組(エントリ)のデータを削除する。
【0137】
次に、ステップS24では例外抑止データブレーク履歴テーブルに有効なエントリが存在するか否か確認し、ステップS25において存在しないと判断された場合にはステップS26へ進み、存在すると判断された場合にはステップS11へ進む。ここで、ステップS26ではモード書込み命令を実行することによってモードレジスタ375に0の値が格納され、ステップS11へ進む。
【0138】
一方、ステップS30においては、読み出したブレーク対象命令が例外抑止命令であるか否かが、演算命令実行部22の命令比較動作により判定される。そして、ステップS31において該命令が例外抑止命令であると判断された場合には、ステップS32へ進み、例外抑止命令でないと判断された場合にはステップS40へ進む。
【0139】
そして、ステップS32において、メモリ1内に格納された上記例外抑止データブレーク履歴テーブルに、ブレーク対象命令の実行結果を書き込むレジスタの番号と、命令アドレスと、実効アドレスとを登録する。その後、ステップS33においては、モードレジスタ375に格納された値が0であるか否か判断され、0であると判断された場合にはステップS34へ進み、1であると判断された場合にはステップS11へ進む。ここで、ステップS34においては、モード書込み命令を実行することによりモードレジスタ375に1の値が格納され、ステップS11へ進む。
【0140】
一方、ステップS40においてはデータブレーク処理が実行され、ステップS11へ進む。
【0141】
以上より、本実施の形態4に係る計算機によれば、例外抑止命令の実行においてデータブレーク処理の実行を留保(抑止)した場合には、モードレジスタ375に1の値を設定することとするため、モードレジスタ375に格納された値を参照することにより、確定した命令の実行において必要なデータブレーク処理の有無を迅速に判断でき、データ処理をさらに高速化することができる。
【0142】
最後に、本発明の課題を解決するための手段について付記する。
(1)プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、プログラムの実行を中断する必要性が見出された場合に、中断を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされる場合には、中断を遂行する第三のステップとを有することを特徴とする計算機の制御方法。
(2)第二のステップにおいては、留保される中断を実行するための情報を記憶し、第三のステップにおいては、情報に応じて中断を遂行する(1)に記載の計算機の制御方法。また、留保される中断を実行するための情報を記憶し、上記情報に応じて上記中断を遂行することとすれば、所定の処理を遂行するためのプログラムを短縮化することができるため、該プログラムを記憶するために必要な記憶容量を低減して、動作の高速化と回路規模の低減を図ることができる。
(3)前記情報を無効化する第四のステップをさらに有する(2)に記載の計算機の制御方法。このように、必要に応じて上記情報を無効化することとすれば、分岐命令の実行の結果必要とされないことが確定した情報を削除することができるため、ハードウェア資源の有効活用を図ることができる。
(4)第二のステップでは、フラグを所定の値に設定し、第三のステップでは、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされるか否かをフラグの値を参照することにより判断する(1)に記載の計算機の制御方法。このように、分岐命令を実行することにより選択された分岐先の命令の実行において、中断を必要とするか否かをフラグの値を参照することにより判断すれば、該判断を迅速に行うことができるため、計算機の回路規模の増大を抑制しつつデータ処理の高速化を図ることができる。
(5)所定の命令を実行することによりフラグの値を無効化するステップをさらに有する(4)に記載の計算機の制御方法。
(6)第三のステップにおける分岐命令を実行することにより選択された分岐先の命令は、割り込み処理プログラムにより実行される(1)に記載の計算機の制御方法。
(7)プログラムされた命令を実行する計算機であって、分岐命令より後置された所定の命令を分岐命令より先に実行したとき、プログラムの実行を中断する必要性が見出された場合に中断を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された中断が必要とされる場合には、中断を遂行する中断処理実行手段とを備えたことを特徴とする計算機。
(8)留保される中断を実行するための情報を記憶する記憶手段をさらに備え、前記中断処理実行手段は、前記記憶手段に記憶された前記情報に応じて前記中断を遂行する(7)に記載の計算機。
(9)情報を無効化する無効化手段をさらに備えた(8)に記載の計算機。
(10)フラグをさらに備え、例外抑止手段はフラグを所定の値に設定すると共に、中断処理実行手段は、分岐命令を実行することにより選択された分岐先の命令の実行において、先に留保した中断が必要とされるか否かをフラグの値を参照することにより判断する(7)に記載の計算機。
(11)所定の命令を実行することによりフラグを無効化するフラグ無効化手段をさらに備えた(10)に記載の計算機。
(12)分岐命令を実行することにより選択された分岐先の命令を、割り込み処理プログラムにより実行する割り込み処理実行手段をさらに備えた(7)に記載の計算機。
【0143】
【発明の効果】
上述の如く、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行したときに必要とされた中断を留保し、分岐命令を実行することにより選択された分岐先の命令の実行において、その留保した中断が必要とされる場合に該中断を遂行すれば、分岐命令より後置された命令を、分岐命令より先に実行することによる無用な中断を回避して、プログラムされた命令の実行を確実に遂行することができるため、計算機の動作の信頼性を高めることができる。
【0144】
ここで、上記中断を遂行した場合には割り込み処理プログラムを実行すれば、該中断により、例えばデバッグ支援プログラムの実行などによる異なるシステムの制御ができるため、多様なデータ処理を実現することができる。
【図面の簡単な説明】
【図1】従来の計算機の構成を示す図である。
【図2】図1に示された命令ブレーク検出部の構成を示す図である。
【図3】図1に示されたデータブレーク検出部の構成を示す図である。
【図4】図1に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を示すフローチャートである。
【図5】図1に示された計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作を示すフローチャートである。
【図6】本発明の実施の形態1に係る計算機の構成を示す図である。
【図7】図6に示された演算命令実行部の構成を示す図である。
【図8】図6に示された計算機の、データブレークを検出した際の動作を示すフローチャートである。
【図9】図6に示された計算機の、本来の順序での命令の実行が確定した際の動作を示すフローチャートである。
【図10】図6に示された計算機の、データブレーク割込みにおける割込み処理プログラムによる動作を示すフローチャートである。
【図11】図6に示された計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作を示すフローチャートである。
【図12】本発明の実施の形態1に係る例外抑止ロード命令テーブルの構成を示す図である。
【図13】本発明の実施の形態1に係るコミットポイントテーブルの構成を示す図である。
【図14】本発明の実施の形態1に係るコミットブレークポイントテーブルの構成を示す図である。
【図15】本発明の実施の形態1に係る例外抑止データブレーク履歴テーブルの構成を示す図である。
【図16】本発明の実施の形態2に係る計算機の構成を示す図である。
【図17】図16に示されたデータブレーク検出部の構成を示す図である。
【図18】図16に示された履歴制御部の構成を示す図である。
【図19】図16に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を示すフローチャートである。
【図20】本発明の実施の形態3に係る計算機の構成を示す図である。
【図21】図20に示されたデータブレーク検出部の構成を示す図である。
【図22】図20に示されたブレーク履歴制御部の構成を示す図である。
【図23】本発明の実施の形態4に係る計算機の構成を示す図である。
【図24】図23に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を示すフローチャートである。
【図25】本発明の実施の形態4に係る例外抑止データブレーク履歴テーブルの構成を示す図である。
【符号の説明】
1 メモリ
9,10 割り込み制御部
11 命令読み出し制御部
13 プログラムカウンタ(PC)
15 命令語レジスタ(IR)
17 命令デコード部
19 ロード命令実行部
20 例外抑止履歴書き込み命令実行部
21 ストア命令実行部
22,235 演算命令実行部
23 命令実行回路
24,237 例外抑止ロード命令実行部
26 例外抑止履歴確認制御部
28 例外抑止履歴読み出し命令実行部
31 レジスタ(EPCR)
33 レジスタ(EPSR)
35 レジスタ(PSR)
37 汎用レジスタ
38 例外抑止フラグ
40,55 割込制御回路
44 コミット例外割り込み制御部
57 アドレスレジスタ
59 データタイプレジスタ
61 レジスタ番号レジスタ
65 デコード回路
67〜69 比較器
71,75,79,315〜318 アドレスフィールド(ADDR)
72,76,80 データタイプフィールド(DT)
73,77,81 レジスタ番号フィールド(REG #)
87 無効エントリ検出部
177〜179 ECフィールド
180 コミット判定部
181 コミットエントリ検出部
183 例外抑止履歴登録制御部
183b ブレーク履歴登録制御部
185 例外抑止履歴確認制御部
186 ブレーク履歴確認制御部
187 例外抑止履歴読み出し命令実行部
187b ブレーク履歴読み出し命令実行部
189 例外抑止履歴書き込み命令実行部
189b ブレーク履歴書き込み命令実行部
217 例外抑止フラグ無効化命令実行部
218 履歴テーブル無効化部
219 履歴制御部
248,327 OR回路
301 命令ブレーク検出部
303 命令読み出し部
305,333,347 データブレーク検出部
307,329,335,353,373 命令実行部
309,331,377 レジスタ制御部
311〜314 検出部
319〜322,361〜363 Eフィールド(E )
323〜326 Vフィールド
337 例外抑止判定部
338〜341 NEフィールド
343〜346,348 AND回路
349 ブレーク履歴読み出し命令実行部
351 ブレーク履歴書込み命令実行部
355 ブレーク履歴制御部
357 有効レジスタ
359 実効アドレスレジスタ
364〜366 実効アドレス(EA)フィールド
367 ブレーク判定部
369 ブレークエントリ検出部
371 モード命令実行部
375 モードレジスタ
ADD 登録信号
CC 確認信号
R 読み出し信号
W 書き込み信号
CM コミット信号
RS リセット信号
BR ブレーク信号
Claims (8)
- プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機の制御方法であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
前記第一のステップにおいて、前記プログラムの実行を中断する必要性が見出された場合に、前記中断を留保すると共に、前記留保される中断を実行するための情報を記憶する第二のステップと、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記中断が必要とされる場合には、前記中断を遂行する第三のステップと、
前記中断が必要でないと判明した前記情報を所定の命令を実行することにより無効化する第四のステップと、
を有する計算機の制御方法。 - 前記第二のステップでは、フラグを所定の値に設定し、
前記第三のステップでは、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、
ことを特徴とする請求項1に記載の計算機の制御方法。 - 前記第三のステップにおける分岐命令を実行することにより選択された分岐先の命令は、割り込み処理プログラムにより実行されることを特徴とする請求項1に記載の計算機の制御方法。
- ブレークポイントを含むプログラムされた命令の実行を制御する計算機の制御方法であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
前記第一のステップにおいて、ブレークポイントを実行する必要性が見出された場合に、前記ブレークポイントの実行を留保すると共に、該ブレークポイントの制御パスをテーブルに登録する第二のステップと、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記ブレークポイントの実行が必要とされる場合、前記ブレークポイントを実行する第三のステップと、を有し、
前記第三のステップにおいて、留保した前記ブレークポイントの前記制御パスが前記テーブルに登録されている場合に前記ブレークポイントに基づくブレーク処理を行う、
ことを特徴とする計算機の制御方法。 - 前記第三のステップにおいて、留保した前記ブレークポイントの前記制御パスが前記テーブルに登録されている場合であって、更に他の制御パスが登録されている場合、前記他の制御パスを無効化する、
ことを特徴とする請求項4記載の計算機の制御方法。 - プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機であって、
分岐命令より後置された所定の命令を前記分岐命令より先に実行したとき、前記プログラムの実行を中断する必要性が見出された場合に前記中断を留保する例外抑止手段と、
留保される前記中断を実行するための情報を記憶する記憶手段と、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記例外抑止手段により留保された前記中断が必要とされる場合には、前記記憶手段に記憶された前記情報に応じて前記中断を遂行する中断処理実行手段と、
前記中断が必要でないと判明した前記情報を無効化する無効化手段と、
を備えたことを特徴とする計算機。 - フラグをさらに備え、
前記例外抑止手段は前記フラグを所定の値に設定すると共に、前記中断処理実行手段は、前記分岐命令を実行することにより選択された分岐先の命令の実行において、先に留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、
ことを特徴とする請求項6記載の計算機。 - 前記中断処理実行手段により前記中断が遂行された場合には、割り込み処理プログラムを実行する割り込み処理実行手段をさらに備える、
ことを特徴とする請求項6記載の計算機。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000067789A JP3762608B2 (ja) | 2000-03-10 | 2000-03-10 | 計算機とその制御方法 |
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 |
---|---|---|---|
JP2000067789A JP3762608B2 (ja) | 2000-03-10 | 2000-03-10 | 計算機とその制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001256047A JP2001256047A (ja) | 2001-09-21 |
JP3762608B2 true JP3762608B2 (ja) | 2006-04-05 |
Family
ID=18586929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000067789A Expired - Fee Related JP3762608B2 (ja) | 1999-12-17 | 2000-03-10 | 計算機とその制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3762608B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007058731A (ja) * | 2005-08-26 | 2007-03-08 | Matsushita Electric Ind Co Ltd | プロセッサ、及び並列命令実行対応デバッグ装置 |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
-
2000
- 2000-03-10 JP JP2000067789A patent/JP3762608B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001256047A (ja) | 2001-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539485B2 (en) | Polling using reservation mechanism | |
US6708326B1 (en) | Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence | |
JP3733842B2 (ja) | ベクトルスキャタ命令制御回路及びベクトル型情報処理装置 | |
US20070006158A1 (en) | Instruction execution device, debugging method, debugging device, and debugging program | |
KR102344010B1 (ko) | 벡터 명령들에 대한 요소간 어드레스 해저드들의 처리 | |
TWI786181B (zh) | 在例外遮罩更新指令之後允許未中止的交易處理 | |
JP7281491B2 (ja) | トランザクショナル比較及び破棄命令 | |
US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
KR20210021521A (ko) | 트랜잭션 메모리를 지원하는 장치에서의 로드 전용 명령 처리 | |
KR100930332B1 (ko) | 프로세서 및 그 제어 방법 | |
JP3762608B2 (ja) | 計算機とその制御方法 | |
JP7041353B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US11379233B2 (en) | Apparatus and data processing method for transactional memory | |
JP2009230479A (ja) | マイクロプロセッサ | |
JP3748191B2 (ja) | 計算機とその制御方法 | |
JP3762597B2 (ja) | 計算機とその制御方法 | |
JPS62144246A (ja) | 計算機 | |
JPH05233288A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041105 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051004 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051205 |
|
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: 20060110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060113 |
|
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: 20100120 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110120 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110120 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120120 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130120 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130120 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140120 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |