(57)【特許請求の範囲】
【請求項１】
プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機の制御方法であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
前記第一のステップにおいて、前記プログラムの実行を中断する必要性が見出された場合に、前記中断を留保すると共に、前記留保される中断を実行するための情報を記憶する第二のステップと、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記中断が必要とされる場合には、前記中断を遂行する第三のステップと、
前記中断が必要でないと判明した前記情報を所定の命令を実行することにより無効化する第四のステップと、
を有する計算機の制御方法。
【請求項２】
前記第二のステップでは、フラグを所定の値に設定し、
前記第三のステップでは、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、
ことを特徴とする請求項１に記載の計算機の制御方法。
【請求項３】
前記第三のステップにおける分岐命令を実行することにより選択された分岐先の命令は、割り込み処理プログラムにより実行されることを特徴とする請求項１に記載の計算機の制御方法。
【請求項４】
ブレークポイントを含むプログラムされた命令の実行を制御する計算機の制御方法であって、
前記プログラムにおいて分岐命令より後置された命令を、前記分岐命令より先に実行する第一のステップと、
前記第一のステップにおいて、ブレークポイントを実行する必要性が見出された場合に、前記ブレークポイントの実行を留保すると共に、該ブレークポイントの制御パスをテーブルに登録する第二のステップと、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記第二のステップで留保した前記ブレークポイントの実行が必要とされる場合、前記ブレークポイントを実行する第三のステップと、を有し、
前記第三のステップにおいて、留保した前記ブレークポイントの前記制御パスが前記テーブルに登録されている場合に前記ブレークポイントに基づくブレーク処理を行う、
ことを特徴とする計算機の制御方法。
【請求項５】
前記第三のステップにおいて、留保した前記ブレークポイントの前記制御パスが前記テーブルに登録されている場合であって、更に他の制御パスが登録されている場合、前記他の制御パスを無効化する、
ことを特徴とする請求項４記載の計算機の制御方法。
【請求項６】
プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機であって、
分岐命令より後置された所定の命令を前記分岐命令より先に実行したとき、前記プログラムの実行を中断する必要性が見出された場合に前記中断を留保する例外抑止手段と、
留保される前記中断を実行するための情報を記憶する記憶手段と、
前記分岐命令を実行することにより選択された分岐先の命令の実行において、前記例外抑止手段により留保された前記中断が必要とされる場合には、前記記憶手段に記憶された前記情報に応じて前記中断を遂行する中断処理実行手段と、
前記中断が必要でないと判明した前記情報を無効化する無効化手段と、
を備えたことを特徴とする計算機。
【請求項７】
フラグをさらに備え、
前記例外抑止手段は前記フラグを所定の値に設定すると共に、前記中断処理実行手段は、前記分岐命令を実行することにより選択された分岐先の命令の実行において、先に留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、
ことを特徴とする請求項６記載の計算機。
【請求項８】
前記中断処理実行手段により前記中断が遂行された場合には、割り込み処理プログラムを実行する割り込み処理実行手段をさらに備える、
ことを特徴とする請求項６記載の計算機。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムされた命令を実行する計算機とその制御方法に関するものである。
【０００２】
【従来の技術】
従来より、プログラムの開発におけるデバッグを支援するシステムとしてデバッガが作られているが、このようなシステムにおいては、プログラムの実行を所定の命令により中断するブレークポイント機能が備えられている。
【０００３】
ここで、上記ブレークポイント機能とは、デバッグ対象プログラムにおいて、予め指定した任意の命令に対して、その都度実行を停止させる機能をいう。そして、このような機能は、プログラムのデバッグ処理において有益であることから、上記のように多くのデバッガに組み込まれている。
【０００４】
利用者は、このブレークポイント機能を用いる場合、予め実行を停止させたい命令あるいは命令の種類を指定し、デバッグ対象プログラムを起動させる。これにより、デバッグ対象プログラムは、指定された命令で実行を停止する。その際、利用者は必要に応じて、停止した時点でのレジスタやメモリの値を調べたり、変更したりすることができる。なおこの時には、その後において、停止した時点から該プログラムの実行を再開することもできる。
【０００５】
ここで、上記ブレークポイント機能の実現方法としては、命令ブレークと、ソフトウェアブレークと、データブレークとがある。このうち、命令ブレークにおいては、実行を停止させたい命令のアドレスを保持するブレークポイントレジスタがハードウェアに設けられる。そして、このブレークポイントレジスタで指定される命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、利用者にその旨が通知される。そしてさらに実行の再開が指示されると、制御が元に戻される。
【０００６】
一方、ソフトウェアブレークにおいては、予め指定された命令が割り込みを発生する命令で置き換えられる。そして、該割り込みを発生する命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、利用者にその旨が通知される。そしてさらに実行の再開が指示されると、置き換えられた元の命令を模擬的に実行した後、制御が元に戻される。なおこの方法においては、割り込みを発生する命令として、ブレークポイント命令と呼ばれる専用の命令を用意する方法もある。
【０００７】
また、上記のデータブレークにおいては、命令の実行において参照あるいは変更の対象とするデータのメモリアドレス（あるいはメモリアドレス域）を保持するブレークポイントレジスタがハードウェアに設けられる。そして、このレジスタに保持されたメモリアドレス（あるいはメモリアドレス域）を参照あるいは変更する命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、利用者にその旨が通知される。そして、その後に実行の再開が指示されると、制御が元に戻される。
【０００８】
以下において、上記のような機能を有する従来の計算機について説明する。図１は、該従来の計算機の構成を示す図である。図１に示されるように、この計算機はメモリ１と、メモリ１に接続された命令読み出し部３０３と、メモリ１及び命令読み出し部３０３に接続された命令実行部３０７と、命令実行部３０７に接続されたレジスタ制御部３０９と、命令読み出し部３０３と命令実行部３０７及びレジスタ制御部３０９に接続された割り込み制御部９とを備える。
【０００９】
ここで、命令読み出し部３０３は命令読み出し制御部１１と、プログラムカウンタ（ＰＣ）１３と、命令語レジスタ（ＩＲ）１５と、命令ブレーク検出部３０１とを含む。そして、命令読み出し制御部１１はメモリ１に接続され、プログラムカウンタ（ＰＣ）１３は命令読み出し制御部１１に接続される。さらに、命令語レジスタ（ＩＲ）１５は命令読み出し制御部１１に接続され、命令ブレーク検出部３０１はメモリ１と後述する命令実行回路２３に接続される。
【００１０】
また、命令実行部３０７は命令デコード部１７と、ロード命令実行部１９と、ストア命令実行部２１と、演算命令実行部２２と、命令実行回路２３と、データブレーク検出部３０５とを含む。
【００１１】
そして、命令デコード部１７は命令語レジスタ１５に接続され、ロード命令実行部１９はメモリ１及び命令デコード部１７と、後述する汎用レジスタ３７に接続される。また、ストア命令実行部２１は命令デコード部１７及び汎用レジスタ３７に接続され、演算命令実行部２２は命令デコード部１７と汎用レジスタ３７に接続され、命令実行回路２３は命令デコード部１７と汎用レジスタ３７及び後述するレジスタ３１，３３，３５に接続される。さらに、データブレーク検出部３０５は、ロード命令実行部１９とストア命令実行部２１及び命令実行回路２３に接続される。
【００１２】
一方、レジスタ制御部３０９は、レジスタ（ＥＰＣＲ）３１と、レジスタ（ＥＰＳＲ）３３と、レジスタ（ＰＳＲ）３５と、汎用レジスタ３７とを含む。ここで、レジスタ（ＥＰＣＲ）３１とレジスタ（ＥＰＳＲ）３３及びレジスタ（ＰＳＲ）３５は、さらに割込制御回路４０に接続される。また、汎用レジスタ３７はロード命令実行部１９とストア命令実行部２１、演算命令実行部２２、及び命令実行回路２３に接続される。
【００１３】
また、割り込み制御部９は割込制御回路４０を含む。そして、この割込制御回路４０は命令読み出し制御部１１とプログラムカウンタ１３、命令ブレーク検出部３０１、ロード命令実行部１９、ストア命令実行部２１、演算命令実行部２２、命令実行回路２３、データブレーク検出部３０５などに接続される。
【００１４】
上記のような構成を有する計算機において、命令読み出し部３０３はプログラムカウンタ１３が示す命令語をメモリ１から読み出し、命令語レジスタ（ＩＲ）１５を介して命令実行部３０７へ供給する。また命令読み出し制御部１１は、命令実行部３０７あるいは割り込み処理を行う割込制御回路４０より分岐先アドレスが供給された場合には、それをプログラムカウンタ１３へ書き込む。なお命令読み出し制御部１１は、それ以外の場合には次の命令語を命令実行部３０７へ供給するため、読み出すべき命令語のアドレスを示すプログラムカウンタ１３をインクリメントする。また、命令語を読み出す際に割り込みを検出した場合には、割込制御回路４０へ割込信号を供給する。
【００１５】
また、命令デコード部１７は、命令語レジスタ１５から供給された命令をデコードし、ロード命令の場合にはロード命令実行部１９へ、ストア命令の場合にはストア命令実行部２１へ、演算命令の場合には演算命令実行部２２へ、分岐命令や割り込み復帰命令その他の命令の場合には命令実行回路２３へそれぞれ供給する。
【００１６】
また、ロード命令実行部１９はロード命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応するメモリ１の領域からデータを読み出し、その結果を汎用レジスタ３７へ書き込む。なお、ロード命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１７】
同様に、ストア命令実行部２１はストア命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ３７の領域からデータを読み出し、その結果を実効アドレスに対応するメモリ１の領域へ書き込む。なお、ストア命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００１８】
また、演算命令実行部２２は演算命令が供給された場合には、汎用レジスタ３７から読み出された値に基づいて求められた実効アドレスに対応する汎用レジスタ３７の領域からデータを読み出し、そのデータに基づき演算し、該演算結果を汎用レジスタ３７へ書き込む。
【００１９】
また、命令実行回路２３は、命令デコード部１７から分岐命令が供給された場合には、分岐成立時に分岐先アドレスをプログラムカウンタ１３へ供給する。さらに、命令デコード部１７から割り込み復帰命令が供給された場合には、割り込み発生前の動作状態を示すＥＰＳＲ３３の値をＰＳＲ３５へ書き込む。そしてこのとき、ＥＰＣＲ３１から復帰先の命令のアドレスを読み出し、それを分岐先アドレスとしてプログラムカウンタ１３へ供給する。
【００２０】
また、命令実行回路２３は、命令デコード部１７からブレークポイント命令が供給された場合には、ソフトウェアブレークが成立した旨を割込制御回路４０へ通知する。また、命令デコード部１７から命令ブレークポイントレジスタ読み出し命令が供給された場合には、後述する命令ブレーク検出部３０１の命令ブレークポイントレジスタからブレークポイント対象アドレスを読み出し、汎用レジスタ３７へ書き込む。また、命令デコード部１７から命令ブレークポイントレジスタ書込命令が供給された場合には、汎用レジスタ３７から読み出した値に応じたブレークポイント対象アドレスを命令ブレーク検出部３０１の命令ブレークポイントレジスタへ書き込む。
【００２１】
また同様に、命令デコード部１７からデータブレークポイントレジスタ読み出し命令が供給された場合には、データブレーク検出部３０５のデータブレークポイントレジスタからブレークポイント対象アドレスを読み出し、汎用レジスタ３７へ書き込む。また、命令デコード部１７からデータブレークポイントレジスタ書込命令が供給された場合には、汎用レジスタ３７から読み出した値に応じたブレークポイント対象アドレスをデータブレーク検出部３０５のデータブレークポイントレジスタへ書き込む。
【００２２】
なお、上記の種々の命令を実行する際に割り込みを検出した場合には、割込信号を割込制御回路４０へ供給する。
【００２３】
また、ＥＰＣＲ３１は割り込みからの復帰先に該当する命令のアドレスを保持し、そのアドレスは割り込み発生時に設定される。また、ＰＳＲ３５は動作状態（state）を示すデータを保持し、ＥＰＳＲ３３は割り込み発生時に設定された割り込み発生前の動作状態を示すデータを保持する。
【００２４】
また、割込制御回路４０は命令読み出し部３０３あるいは命令実行部３０７から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３０３へ供給する。
【００２５】
以上より、上記計算機の動作を要約すると、初期動作状態を通常の動作としたとき次のようになる。通常の動作においては、命令読み出し部３０３は、プログラムカウンタ１３が示す命令語を読み出し、命令実行部３０７へ供給し、命令実行部３０７は供給された命令を実行する。
【００２６】
一方、割り込みが発生した時には、割込制御回路４０は命令読み出し部３０３あるいは命令実行部３０７から供給された割込信号に基づいて、割り込みからの復帰先に該当する命令のアドレスをＥＰＣＲ３１へ、割り込み発生前の動作状態を示すデータをＥＰＳＲ３３へ、発生した割り込みに対応する動作状態を示すＰＳＲ３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスを命令読み出し部３０３へ供給する。また、命令読み出し部３０３は割り込み制御部９から供給された分岐先アドレスに応じて命令語を読み出し、命令実行部３０７へ供給する。そして、以降においては上記の通常の場合と同様に動作する。
【００２７】
また、割り込みから復帰する時は、命令実行部３０７は割り込み復帰命令を実行することにより、ＥＰＳＲ３３の値をＰＳＲ３５へ書き込む。また、ＥＰＣＲ３１に格納されたデータを読み出し、その結果を分岐先アドレスとして命令読み出し部３０３へ供給する。このとき命令読み出し部３０３は、命令実行部３０７から供給された分岐先アドレスに基づいて命令語を読み出し、命令実行部３０７へ供給する。そして、以降においては上記通常の動作がなされる。
【００２８】
次に、図１に示された命令ブレーク検出部３０１について詳しく説明する。図２は、上記命令ブレーク検出部３０１の構成を示す図である。図２に示されるように、命令ブレーク検出部３０１は検出部３１１〜３１４と、アドレスフィールド（ADDR）３１５〜３１８と、Ｅフィールド（E）３１９〜３２２と、Ｖフィールド（V）３２３〜３２６と、ＯＲ回路３２７とを含む。
【００２９】
ここで、アドレスフィールド（ADDR）３１５〜３１８は、それぞれブレークポイント対象アドレスを保持し、命令ブレークポイントレジスタを構成する。また、Ｅフィールド（E）３１９〜３２２は、命令ブレーク動作が有効か否かを示すデータを保持し、具体的には命令ブレーク動作が無効である場合には０を、命令ブレーク動作が有効である場合には１を保持する。そして、このＥフィールド（E）３１９〜３２２は、命令ブレークポイントレジスタを構成する。また、Ｖフィールド（V）３２３〜３２６は、命令ブレーク検出済みか否かを示すデータを保持し、具体的には命令ブレーク未検出の時には０を、命令ブレーク検出済みの時には１を保持する。
【００３０】
また、各検出部３１１〜３１４は、命令ブレークが成立するか否かを判定し、より具体的にはメモリ１から供給された命令アドレスと命令ブレークポイントレジスタから供給されたアドレスとを比較する。そして、これら両アドレスが一致した場合には、対応するＶフィールド（V）３２３〜３２６に１を書き込むと共に、一致信号ｍｔをＯＲ回路３２７へ供給する。これにより、この場合には命令ブレークが成立した旨がＯＲ回路３２７から割込制御回路４０へ割込信号により通知される。
【００３１】
次に、図１に示されたデータブレーク検出部３０５について詳しく説明する。図３は、上記データブレーク検出部３０５の構成を示す図である。図３に示されるように、データブレーク検出部３０５は検出部３１１〜３１４と、アドレスフィールド（ADDR）３１５〜３１８と、Ｅフィールド（E）３１９〜３２２と、Ｖフィールド（V）３２３〜３２６と、ＯＲ回路３２７とを含む。
【００３２】
ここで、アドレスフィールド（ADDR）３１５〜３１８は、それぞれブレークポイント対象アドレスを保持し、データブレークポイントレジスタを構成する。また、Ｅフィールド（E）３１９〜３２２は、データブレーク動作が有効か否かを示すデータを保持し、具体的にはデータブレーク動作が無効である場合には０を、データブレーク動作が有効である場合には１を保持する。そして、このＥフィールド（E）３１９〜３２２は、データブレークポイントレジスタを構成する。また、Ｖフィールド（V）３２３〜３２６は、データブレーク検出済みか否かを示すデータを保持し、具体的にはデータブレーク未検出の時には０を、データブレーク検出済みの時には１を保持する。
【００３３】
また、各検出部３１１〜３１４は、データブレークが成立するか否かを判定し、より具体的にはメモリ１から供給されたロードストア命令の実効アドレス（データアドレス）とアドレスフィールド（ADDR）３１５〜３１８に格納されたブレークポイント対象アドレスとを比較する。そして、これら両アドレスが一致した場合には、対応するＶフィールド（V）３２３〜３２６に１を書き込むと共に、一致信号ｍｔをＯＲ回路３２７へ供給する。これにより、この場合にはデータブレークが成立した旨がＯＲ回路３２７から割込制御回路４０へ割込信号により通知される。
【００３４】
次に、割り込み処理プログラムによる上記計算機のデータブレーク割り込み動作の概要を、図４のフローチャートを参照しつつ説明する。まず図４に示されるように、ステップＳ１ではコンテキストを退避する。次に、ステップＳ２においてデータブレーク処理を行い、ステップＳ３でコンテキストの復元がなされる。そして、ステップＳ４において割り込み復帰命令を実行し、割り込み処理から復帰して割り込み処理動作を終了する。
【００３５】
次に、割り込み処理プログラムによるソフトウェアブレーク割り込み動作の概要を、図５のフローチャートを参照しつつ説明する。まず図５に示されるように、ステップＳ１ではコンテキストを退避する。次に、ステップＳ２においてソフトウェアブレーク処理を行い、ステップＳ３でコンテキストの復元がなされる。そして、ステップＳ４において割り込み復帰命令を実行し、割込み処理から復帰して割込み処理動作を終了する。
【００３６】
ところで、近年の計算機では、処理性能を向上すべくコンパイラ他によりプログラムが生成された時に命令の順序を変更するという手法が用いられており、このような手法は命令移動と呼ばれる。そしてこれは、命令実行部の有効稼働率を高めると共に、早期に命令の実行を開始することで、命令のレイテンシを隠蔽すること、すなわち例えば、ロード命令の場合には、メモリからのロード操作を早期に開始することで、潜在的なキャッシュミスを含むメモリへのアクセスの遅延を隠蔽できる可能性があるといったことを狙いとした手法である。
【００３７】
ここで、上記のような命令移動において、特にコンパイラにおける基本ブロックの境界を越えた命令移動を行うものは、広域命令移動と呼ばれており、さらに広域命令移動において条件分岐を越えて命令移動を行うものは、投機的命令移動と呼ばれている。しかし、このように投機的に移動した命令において例外が発生した場合、例外処理を必要とするため大幅な性能の低下を招いたり、本来のプログラムの順序ではあり得なかったプログラム実行における不正な停止を招いたりする。
【００３８】
すなわち例えば、必要とされるデータがメモリ上に無い状態であるページフォルト（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 共著）が発行されている。
【００４０】
そして従来においては、上記のような例外抑止命令を含むプログラムのデバッグを行う場合に、投機的に移動した命令のうち本来の順序では確定していない命令によっても、データブレークによりプログラムの実行が中断してしまうという問題があった。
【００４１】
【発明が解決しようとする課題】
本発明は、上述の問題を解消するためになされたもので、データ処理能力が高く動作の信頼性が向上された計算機とその制御方法を提供することを目的とする。
【００４２】
【課題を解決するための手段】
上記の目的は、プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、プログラムの実行を中断する必要性が見出された場合に、中断を留保すると共に、留保される中断を実行するための情報を記憶する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされる場合には、中断を遂行する第三のステップと、中断が必要でないと判明した情報を所定の命令を実行することにより無効化する第四のステップと、を有する計算機の制御方法を提供することによって達成される。このような手段によれば、分岐命令より後置された命令を、分岐命令より先に実行することによる無用な中断を回避して、プログラムされた命令の実行を確実に遂行することができる。
ここで、第二のステップでは、フラグを所定の値に設定し、第三のステップでは、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、ことを特徴とする。
【００４３】
また、前記第三のステップにおける分岐命令を実行することにより選択された分岐先の命令は、割り込み処理プログラムにより実行されることにより、該中断によって、例えばデバッグ支援プログラムの実行などによる異なるシステムの制御を実現することができる。
【００４４】
また、本発明の目的は、プログラムされた命令の実行を制御して、指定した条件でプログラム実行を中断する計算機であって、分岐命令より後置された所定の命令を分岐命令より先に実行したとき、プログラムの実行を中断する必要性が見出された場合に中断を留保する例外抑止手段と、留保される中断を実行するための情報を記憶する記憶手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された前記中断が必要とされる場合には、記憶手段に記憶された情報に応じて中断を遂行する中断処理実行手段と、中断が必要でないと判明した情報を無効化する無効化手段と、を備えたことを特徴とする計算機を提供することにより達成される。
【００４５】
ここで、計算機は、フラグをさらに備え、例外抑止手段はフラグを所定の値に設定すると共に、中断処理実行手段は、分岐命令を実行することにより選択された分岐先の命令の実行において、先に留保した中断が必要とされるか否かをフラグの値を参照することにより判断する、ものとすることができる。
また、中断処理実行手段により前記中断が遂行された場合には、割り込み処理プログラムを実行する割り込み処理実行手段をさらに備える、ものとすることができる。
【００４６】
【発明の実施の形態】
以下において、本発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一符号は同一又は相当部分を示す。
［実施の形態１］
図６は、本発明の実施の形態１に係る計算機の構成を示す図である。図６に示されるように、本実施の形態１に係る計算機は、図１に示された従来の計算機に対してレジスタ制御部３３１内に例外抑止フラグ（GNER）３８を、命令実行部３２９内に例外抑止ロード命令実行部２４をさらに備える点で相違する。また、上記例外抑止フラグ（GNER）３８が備えられたことに伴い、演算命令実行部２３５の構成が図１に示された演算命令実行部２２と異なるものとされる。
【００４７】
すなわち図７に示されるように、演算命令実行部２３５は、演算制御回路２４７と、フラグ検出回路２４３と、セレクタ２４５と、ＯＲ回路２４８とを含む。ここで、演算制御回路２４７の入力端は命令デコード部１７及び汎用レジスタ３７に接続され、出力端はＯＲ回路２４８を介して割込制御回路４０と接続され、さらに汎用レジスタ３７とセレクタ２４５に接続される。また、フラグ検出回路２４３の入力端は汎用レジスタ３７に接続され、出力端はセレクタ２４５及びＯＲ回路２４８に接続される。そして、セレクタ２４５の出力端は汎用レジスタ３７に接続される。
【００４８】
また、図６に示されるように、例外抑止ロード命令実行部２４はメモリ１と、命令デコード部１７及び汎用レジスタ３７に接続され、例外抑止フラグ３８は汎用レジスタ３７に並設される。
【００４９】
上記のような構成を有する本実施の形態１に係る計算機において、例外抑止ロード命令実行部２４は、命令デコード部１７から例外抑止ロード命令が供給された場合には、まず最初に汎用レジスタ３７より読み出した値から実効アドレスを求め、該実効アドレスに対応するメモリ１内の領域からデータを読み出す。そして、データを読み出す際にデータブレーク等の例外要因が存在するか否か確認する。
【００５０】
その結果、該例外要因が存在しないと判断された場合には、メモリ１内のロード対象アドレス域から読み出した上記データを、汎用レジスタ３７へ書き込む。
【００５１】
一方、該例外要因が存在すると判断された場合には、検出された該例外要因を識別する識別値が汎用レジスタ３７に記憶される。このとき、上記識別値が記憶されるレジスタに対応する例外抑止フラグ３８に１の値が設定される。なお、上記例外要因を識別する識別値の例は、次の表１に示される。
【００５２】
【表１】
0003762608.tif 000002
また、上記の例外抑止フラグ３８は、その各ビットが汎用レジスタ３７の各エントリに対応し、例外要因が未検出の状態では０とされ、例外抑止ロード命令の実行において例外要因が検出された場合には１とされる。
【００５３】
一方、本実施の形態に係る計算機においては、メモリ１内の所定のアドレス領域に、例外抑止ロード命令テーブルと、コミットポイントテーブル、コミットブレークポイントテーブル、及び例外抑止データブレーク履歴テーブルが格納される。
【００５４】
ここで例外抑止ロード命令テーブルは、図１２に示されるように、例外抑止ロード命令の命令アドレスと、該例外抑止ロード命令が含まれる制御経路（制御パス）の識別番号とを対にしたデータ、すなわち（ａ０，ｐ０）、（ａ１，ｐ１）、…（ａｉ，ｐｉ）から構成される。また、同様にコミットポイントテーブルは、図１３に示されるように、制御経路の識別番号と、その制御経路が本来の順序による実行において確定する場所を示す命令アドレスと、該制御経路が確定することで無効となる他の制御経路の識別番号とを組にしたデータ、すなわち（ｐ０，ｂ０，ｓｐ０）、（ｐ１，ｂ１，ｓｐ１）、…（ｐｊ，ｂｊ，ｓｐｊ）から構成される。
【００５５】
また、コミットブレークポイントテーブルは、図１４に示されるように、制御経路が本来の順序による実行において確定する場所を示す命令アドレスと、該命令アドレスに対応する制御経路の識別番号とを組にしたデータ、すなわち（ｂ０，ｐ０）、（ｂ１，ｐ１）、…（ｂｋ，ｐｋ）から構成される。また、例外抑止データブレーク履歴テーブルは、図１５に示されるように、ブレーク対象とされる命令が含まれる制御経路の識別番号と、該ブレーク対象とされる命令の命令アドレスと、上記命令の実効アドレスとを組にしたデータ、すなわち（ｐ０，ｃ０，ｅｃ０）、（ｐ１，ｃ１，ｅｃ１）、…（ｐｌ，ｃｌ，ｅｃｌ）から構成される。
【００５６】
次に、上記のような構成を有する計算機の動作を説明する。なお、本実施の形態に係る計算機における以下の動作は、プログラムされた命令からなる所定のソフトウェアを実行することにより実現される。
【００５７】
図８は、図６に示された計算機の、データブレークを検出した際の動作を示すフローチャートである。図８に示されるように、まずステップＳ１で、命令ブレーク検出部３０１によりブレーク対象とする命令が検出された場合には、該命令が例外抑止命令であるか否かが、演算命令実行部２３５の命令比較動作により判定される。そして、ステップＳ２において該命令が例外抑止命令であると判断された場合には、ステップＳ３へ進み、例外抑止命令でないと判断された場合にはステップＳ１０へ進む。
【００５８】
このとき、ステップＳ３では該ブレーク対象命令に関する情報を、メモリ１内に格納された上記例外抑止データブレーク履歴テーブルに登録し、動作を終了する。一方、ステップＳ１０ではデータブレーク処理を実行して、動作を終了する。
【００５９】
図９は、図６に示された計算機において、分岐命令の実行により本来の順序での命令の実行が確定したときの動作を示すフローチャートである。図９に示されるように、まずステップＳ１では、実行が確定した制御経路のデータブレークがメモリ１に格納されている例外抑止データブレーク履歴テーブルに存在するものであるか否か確認する。そしてステップＳ２において、演算命令実行部２３５の比較動作により、該制御経路のデータブレークがメモリ１に格納されている例外抑止データブレーク履歴テーブルに存在すると判断された場合にはステップＳ１０へ進み、存在しないと判断された場合にはステップＳ３へ進む。
【００６０】
そしてステップＳ３では、他の制御経路におけるデータブレークに関する情報が、上記例外抑止データブレーク履歴テーブル内に存在するか否かがサーチされ、ステップＳ４で演算命令実行部２３５により該情報が存在するものと判断された場合にはステップＳ５へ進み、存在しないものと判断された場合には動作を終了する。ここで、ステップＳ５では例外抑止データブレーク履歴テーブルに含まれる上記他の制御経路におけるデータブレークに関する情報を無効化し、動作を終了する。
【００６１】
一方、ステップＳ１０では、他の制御経路におけるデータブレークに関する情報が、上記例外抑止データブレーク履歴テーブル内に存在するか否かがサーチされ、ステップＳ１１において演算命令実行部２３５により存在するものと判断された場合にはステップＳ１２へ進み、存在しないものと判断された場合にはステップＳ１３へ進む。ここで、ステップＳ１２では例外抑止データブレーク履歴テーブルに含まれる上記他の制御経路におけるデータブレークに関する情報を無効化する。
【００６２】
そして、ステップＳ１３では、ステップＳ２において見出されたデータブレークの処理が実行され、ステップＳ１４では例外抑止データブレーク履歴テーブルに含まれる実行が確定した制御経路のデータブレーク、すなわちステップＳ１３で実行した処理、に関する情報を無効化して動作を終了する。
【００６３】
次に図６に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を、図１０のフローチャートを参照しつつ説明する。図１０に示されるように、まずステップＳ１ではコンテキストが退避される。そして次に、ステップＳ２においてブレーク対象命令を読み出し、該命令が例外抑止命令であるか否かが、演算命令実行部２３５の命令比較動作により判定される。そして、ステップＳ３において該命令が例外抑止命令であると判断された場合には、ステップＳ４へ進み、例外抑止命令でないと判断された場合にはステップＳ２０へ進む。
【００６４】
このとき、ステップＳ４では例外抑止ロード命令テーブルを参照し、該ブレーク対象命令が含まれる制御経路番号を求める。そして、ステップＳ５において、メモリ１内に格納された上記例外抑止データブレーク履歴テーブルに、ブレーク対象命令が含まれる上記制御経路番号と、命令アドレスと、実効アドレスとを登録する。次に、ステップＳ６において、上記制御経路番号に基づき、メモリ１に格納されたコミットポイントテーブルを参照し、他の制御経路が存在するか否かを確認する。そして、ステップＳ７において演算命令実行部２３５の比較動作により他の制御経路が存在すると判断された場合にはステップＳ８へ進み、存在しないと判断された場合にはステップＳ１１へ進む。
【００６５】
ここでステップＳ８では、見出された制御経路番号が求められ、ステップＳ９ではコミットブレークポイントテーブルへ、該他の制御経路のコミットポイントに対応するブレークポイントの命令アドレスと、制御経路番号とを登録する。このようにして、ステップＳ１０において該他の制御経路のコミットポイントに対するブレークポイントを設定する。
【００６６】
そして、ステップＳ１１において、ステップＳ１で退避されたコンテキストが復元される。なお、ステップＳ２０ではデータブレーク処理を実行し、上記ステップＳ１１へ動作が進行する。そしてさらにステップＳ１２においては、割り込み復帰命令を実行することにより、データブレーク割込みの処理から元のプログラムの実行へ復帰し、割込み処理動作を終了する。
【００６７】
次に、図６に示された計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作を、図１１に示されたフローチャートを参照しつつ説明する。図１１に示されるように、まずステップＳ１ではコンテキストが退避される。そして次に、ステップＳ２においてブレーク対象命令の命令アドレスがコミットブレークポイントテーブルに存在するか否かが確認され、ステップＳ３において演算命令実行部２３５の比較動作により該命令アドレスが存在すると判断された場合には、ステップＳ４へ進み、存在しないと判断された場合にはステップＳ４０へ進む。
【００６８】
そして、ステップＳ４ではコミットブレークポイントテーブルからブレーク対象命令の命令アドレスに対応する制御経路番号を求める。次に、ステップＳ５において、例外抑止データブレーク履歴テーブルに上記の制御経路番号が存在するか否かが演算命令実行部２３５の比較動作によりサーチされ、ステップＳ６において存在すると判断された場合にはステップＳ２０へ進み、存在しないと判断された場合にはステップＳ７へ進む。そして、ステップＳ７ではコミットポイントテーブルに他の制御経路が存在するか否かが演算命令実行部２３５の比較動作によりサーチされ、ステップＳ８において存在すると判断された場合にはステップＳ９へ進み、存在しないと判断された場合にはステップＳ１３へ進む。
【００６９】
ステップＳ９では、ステップＳ８において見出された他の制御経路のコミットポイントにおける命令アドレスを求める。そして、ステップＳ１０では上記命令アドレスに対するブレークポイントを、元の命令を復元することにより解除する。次に、ステップＳ１１では、コミットブレークポイントテーブルから上記他の制御経路の制御経路番号と一致するエントリを無効化する。そしてさらに、ステップＳ１２では、例外抑止データブレーク履歴テーブルにおいて、該他の制御経路の制御経路番号に一致するエントリを無効化する。
【００７０】
次に、ステップＳ１３ではブレーク対象命令の命令アドレスに対するブレークポイントを解除し、ステップＳ１４においてコンテキストが復元される。そして最後に、ステップＳ１５において割り込み復帰命令を実行することにより割込み処理から復帰し、割込み処理動作を終了する。
【００７１】
一方、ステップＳ２０では、コミットポイントテーブルに他の制御経路が存在するか否かが演算命令実行部２３５の比較動作によりサーチされ、ステップＳ２１において存在すると判断された場合にはステップＳ２２へ進み、存在しないと判断された場合にはステップＳ２６へ進む。
【００７２】
ステップＳ２２では、ステップＳ２１において見出された他の制御経路のコミットポイントにおける命令アドレスを求める。そして、ステップＳ２３では上記命令アドレスに対するブレークポイントを、元の命令を復元することにより解除する。次に、ステップＳ２４では、コミットブレークポイントテーブルから上記他の制御経路の制御経路番号と一致するエントリを無効化する。そしてさらに、ステップＳ２５では、例外抑止データブレーク履歴テーブルにおいて、該他の制御経路の制御経路番号に一致するエントリを無効化する。
【００７３】
次に、ステップＳ２６でデータブレーク処理を実行し、ステップＳ２７においては、例外抑止データブレーク履歴テーブルから実行が確定した制御経路の制御経路番号に一致するエントリを削除する。そして、上記ステップＳ１４へ進む。
【００７４】
一方、ステップＳ４０ではソフトウェアブレーク処理が実行され、ステップＳ１４へ進む。
【００７５】
以上より、本実施の形態１に係る計算機によれば、上記のような動作を実現するソフトウェアを実行することにより、投機的に移動した命令のうち本来の順序による実行では確定していない命令によりデータブレークが生じてプログラムの実行が中断してしまうことが回避されるため、データ処理能力及び動作の信頼性が高い計算機を得ることができる。
［実施の形態２］
図１６は、本発明の実施の形態２に係る計算機の構成を示す図である。図１６に示されるように、本実施の形態２に係る計算機は、図６に示された実施の形態１に係る計算機と同様な構成を有するが、履歴制御部２１９をさらに含むと共に、命令実行部３３５には例外抑止履歴確認制御部２６と、例外抑止フラグ無効化命令実行部２１７と、例外抑止履歴読み出し命令実行部２８と、例外抑止履歴書き込み命令実行部２０とを含む点で相違する。また、コミット例外割り込み制御部４４を含む割り込み制御部１０を備える点で相違する。
【００７６】
さらに、命令実行部３３５に含まれるデータブレーク検出部３３３の構成は、後に詳しく説明するように、従来のデータブレーク検出部３０５の構成と相違する。
【００７７】
ここで、履歴制御部２１９は例外抑止履歴書き込み命令実行部２０と例外抑止ロード命令実行部２４、例外抑止履歴確認制御部２６、例外抑止履歴読み出し命令実行部２８、例外抑止フラグ無効化命令実行部２１７及びコミット例外割り込み制御部４４に接続される。また、例外抑止履歴書き込み命令実行部２０と例外抑止履歴確認制御部２６、例外抑止履歴読み出し命令実行部２８、及び例外抑止フラグ無効化命令実行部２１７は、さらに命令デコード部１７と汎用レジスタ３７に接続される。
【００７８】
また、コミット例外割り込み制御部４４はさらにプログラムカウンタ（ＰＣ）１３と、レジスタ３１，３３，３５に接続される。そして、データブレーク検出部３３３は、さらに命令デコード部１７に接続される。
【００７９】
ここで、例外抑止履歴確認制御部２６は、コミット命令が供給された場合には、該命令により指定された汎用レジスタ３７内のレジスタに対応する例外抑止フラグ３８が有効か否か確認する。そして、該フラグに１が設定されており有効であると判断された場合には、該例外抑止フラグ３８を０にして無効とし、履歴制御部２１９へ確認信号が供給される。これにより、コミット例外が発生したことが割り込み制御部１０へ伝達される。なお、例外抑止フラグ３８が無効であると判断された場合には、コミット命令による動作を終了する。
【００８０】
次に、例外抑止履歴読み出し命令実行部２８は、例外抑止履歴読み出し命令が供給された場合、履歴制御部２１９へ読み出し信号を供給することにより、履歴制御部２１９に記憶されている上記例外情報を読み出し、汎用レジスタ３７へ書き込む。また、同様に例外抑止履歴書き込み命令実行部２０は、例外抑止履歴書き込み命令が供給された場合、汎用レジスタ３７から読み出したデータと書き込み信号を履歴制御部２１９へ供給して、該読み出したデータを履歴制御部２１９に書き込む。さらに、例外抑止フラグ無効化命令実行部２１７は例外抑止フラグ無効化命令が供給された場合には、汎用レジスタ３７の指定されたレジスタ番号に対応する例外抑止フラグ３８を０とすると共に、履歴制御部２１９へ無効化信号を供給して、指定されたレジスタに対応する例外情報を無効化する。
【００８１】
また、コミット例外割り込み制御部４４は、履歴制御部２１９から供給された割り込みを通知するコミット信号ＣＭに応じて、割り込みからの復帰先の命令アドレスをレジスタ（ＥＰＣＲ）３１へ書き込み、割り込み発生前の動作状態を示すデータをレジスタ（ＥＰＳＲ）３３へ書き込み、発生した割り込みに対応する動作状態をレジスタ（ＰＳＲ）３５へ書き込む。また、発生した割り込みに対応する分岐先アドレスをプログラムカウンタ（ＰＣ）１３へ供給する。
【００８２】
次に履歴制御部２１９は、例外抑止ロード命令実行部２４から供給された登録信号ＡＤＤに応じて、例外抑止履歴テーブルに例外情報を登録する。また、履歴制御部２１９は、例外抑止履歴確認制御部２６から供給された確認信号ＣＣに応じて、指定されたレジスタ番号に例外情報が保持されているか否か確認する。そして、指定されたレジスタ番号に例外情報が保持されている場合には、コミット例外を検出したことを示すコミット信号ＣＭをコミット例外割り込み制御部４４へ供給する。
【００８３】
また履歴制御部２１９は、例外抑止履歴読み出し命令実行部２８から供給された読み出し信号Ｒに応じて、記憶されている例外情報を読み出して例外抑止履歴読み出し命令実行部２８へ供給する。さらに、例外抑止履歴書き込み命令実行部２０から供給された書き込み信号Ｗに応じて、供給されたデータを記憶する。また、例外抑止フラグ無効化命令実行部２１７から供給されたリセット信号ＲＳに応じて、指定されたレジスタ番号の例外情報が保持されている場合に、そのエントリを無効化する。
【００８４】
図１７は、図１６に示されたデータブレーク検出部３３３の構成を示す図である。図１７に示されるように、本実施の形態２に係るデータブレーク検出部３３３は、図３に示された従来のデータブレーク検出部３０５と同様な構成を有するが、命令デコード部１７に接続された例外抑止判定部３３７をさらに備える点で相違する。また、各ＮＥフィールド３３８〜３４１が、対応するＶフィールド３２３〜３２６に並設され、ＡＮＤ回路３４３〜３４６を含む点で相違する。ここで、各ＡＮＤ回路３４３〜３４６の入力端は、対応する検出部３１１〜３１４及び例外抑止判定部３３７に接続され、出力端は対応するＮＥフィールド３３８〜３４１に接続される。
【００８５】
ここで、上記各ＮＥフィールド３３８〜３４１は、例外抑止命令に対してデータブレークを検出したか否かを示し、データブレークポイントレジスタを構成する。そして、ＮＥフィールド３３８〜３４１に０が書き込まれたときには例外抑止命令に対してデータブレークが未検出であることを示し、１が書き込まれたときには例外抑止命令に対してデータブレークが検出済みであることを示す。
【００８６】
また、例外抑止判定部３３７は、ブレーク対象命令が例外抑止命令か否かを判定し、データブレーク条件が成立した場合には、対応するＮＥフィールド３３８〜３４１にその出力値が書き込まれる。
【００８７】
図１８は、図１６に示された履歴制御部２１９の構成を示す図である。図１８に示されるように、履歴制御部２１９は、アドレスレジスタ５７と、データタイプレジスタ５９と、レジスタ番号レジスタ６１と、例外要因（ＥＣ）レジスタ１７５と、デコード回路６５と、比較器６７〜６９と、ＥＣフィールド（EC）１７７〜１７９と、Ｖフィールド１５１〜１５３と、アドレスフィールド（ADDR）７１，７５，７９と、データタイプフィールド（DT）７２，７６，８０と、レジスタ番号フィールド（REG ＃）７３，７７，８１と、コミット判定部１８０と、コミットエントリ検出部１８１と、無効エントリ検出部８７と、例外抑止履歴登録制御部１８３と、例外抑止履歴確認制御部１８５と、例外抑止履歴読み出し命令実行部１８７と、例外抑止履歴書き込み命令実行部１８９と、履歴テーブル無効化部２１８を含む。
【００８８】
ここでアドレスレジスタ５７と、データタイプレジスタ５９と、レジスタ番号レジスタ６１と、ＥＣレジスタ１７５及びデコード回路６５は命令実行部３３５に接続される。そして、アドレスレジスタ５７は、例外抑止ロード命令が実行される際の実効アドレスを保持する。また、データタイプレジスタ５９は、例外抑止ロード命令の実行においてロードストア対象とされるデータの型（大きさ）を示す識別値を保持する。そして、レジスタ番号レジスタ６１は、例外抑止ロード命令の実行において書き込み対象とするレジスタ番号を保持する。
【００８９】
そして、ＥＣレジスタ１７５は例外抑止ロード命令を実行するとき検出された例外要因の識別値を保持する。ここで、該例外要因とその識別値の例は、上記の表１に示されたものとなる。
【００９０】
また、デコード回路６５は命令実行部３３５から供給された信号を解析し、対応する制御部を起動する。すなわち、供給される登録信号に応じて例外抑止履歴登録制御部１８３を起動し、確認信号に応じて例外抑止履歴確認制御部１８５を起動し、読み出し信号に応じて例外抑止履歴読み出し命令実行部１８７を起動し、書き込み信号に応じて例外抑止履歴書き込み命令実行部１８９を起動し、無効化信号に応じて履歴テーブル無効化部２１８を起動する。
【００９１】
一方比較器６７〜６９は、レジスタ番号レジスタ６１及び対応するエントリに接続される。ここで、並設された複数のエントリは例外抑止履歴テーブルを構成するが、各エントリは例外要因を示すＥＣフィールド（EC）１７７〜１７９と、対応するエントリに例外が発生したか否かを２値データにより示すＶフィールド１５１〜１５３と、例外処理の対象とするデータの実効アドレスを示すアドレスフィールド（ADDR）７１，７５，７９と、ロード操作の対象とされるデータの型を示すデータタイプフィールド（DT）７２，７６，８０と、例外情報が書き込まれたレジスタの番号を示すレジスタ番号フィールド（REG ＃）７３，７７，８１とを含む。
【００９２】
なお、上記データタイプフィールド（DT）７２，７６，８０にはデータの型に応じた識別値が記録されるが、この識別値の例は以下の表２に示される。
【００９３】
【表２】
0003762608.tif 000003
上記表２に示されるように、該識別値は例えば符号無しバイトに対して０、符号付きバイトに対しては１、符号無しハーフワードには２、符号付きハーフワードには３、ワードには４、ダブルワードには５、クワッドワードには６とされる。
【００９４】
そして上記比較器６７〜６９は、ＥＣフィールド（EC）１７７〜１７９が有効なエントリに対して、レジスタ番号フィールド７３，７７，８１に記録された値から特定される例外情報が書き込まれたレジスタと、コミット命令により指定されたレジスタとが一致しているか否かを比較し、両者が一致するか否かを示す信号を出力する。
【００９５】
また、コミット判定部１８０は比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、例外情報が格納されているレジスタがコミット命令により指定されているか否かを判定する。そして、その判定結果を例外抑止履歴確認制御部１８５へ出力すると共に、コミット信号ＣＭをコミット例外割り込み制御部４４へ供給する。
【００９６】
そして、コミットエントリ検出部１８１は、比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、コミット命令により指定されたレジスタの番号と所定のフィールドに記録されているレジスタの番号とが一致したエントリの番号を検出する。
【００９７】
また、無効エントリ検出部８７は、各エントリのＥＣフィールド１７７，１７８，１７９の情報に応じて、空きエントリ（無効なエントリ）の検出を行う。また、例外抑止履歴登録制御部１８３は、アドレスレジスタ５７とデータタイプレジスタ５９、レジスタ番号レジスタ６１、ＥＣレジスタ１７５、デコード回路６５及び無効エントリ検出部８７に接続され、デコード回路６５から供給された登録信号ＡＤＤに応じて、無効エントリ検出部８７で検出された空きエントリのＥＣフィールド１７７，１７８，１７９と、アドレスフィールド（ADDR）７１，７５，７９と、レジスタ番号フィールド（REG ＃）７３，７７，８１と、データタイプフィールド（DT）７２，７６，８０へ例外情報を書き込む。
【００９８】
また、例外抑止履歴確認制御部１８５は、レジスタ番号レジスタ６１と、コミット判定部１８０と、コミットエントリ検出部１８１と、デコード回路６５及びＶフィールド１５１〜１５３に接続される。そして、例外抑止履歴確認制御部１８５は、コミット判定部１８０においてコミット命令により指定されたレジスタの番号と所定のフィールドに記録されている結果書込み対象のレジスタの番号とが一致したと判定された場合、一致した該レジスタ番号が格納されているレジスタのＶフィールド１５１〜１５３へ１を書き込む。
【００９９】
また、例外抑止履歴読み出し命令実行部１８７は、指定されたエントリから例外情報を読み出して命令実行部３３５へ供給する。さらに、例外抑止履歴書き込み命令実行部１８９は、命令実行部３３５からＥＣレジスタ１７５やレジスタ番号レジスタ６１、アドレスレジスタ５７、及びデータタイプレジスタ５９を介して供給された値を、例外抑止履歴書き込み命令で指定されたエントリへ書き込む。  また、履歴テーブル無効化部２１８は、デコード回路６５から供給された例外抑止フラグ無効化命令において指定された該エントリのＥＣフィールド１７７，１７８，１７９を無効化する。
【０１００】
以下において、図１６に示された計算機の、割り込み処理プログラムによるデータブレーク割り込み動作を、図１９のフローチャートを参照しつつ説明する。なお、図１６に示された本実施の形態２に係る計算機においては、上記実施の形態１に係る計算機と同様に、メモリ１内の所定のアドレス領域に例外抑止ロード命令テーブルと、コミットポイントテーブル、コミットブレークポイントテーブル、及び例外抑止データブレーク履歴テーブルが格納される。
【０１０１】
図１９に示されるように、まずステップＳ１ではコンテキストが退避される。そして次に、ステップＳ２においてデータブレーク検出部３３３に含まれるデータブレークポイントレジスタのＮＥフィールド３３８〜３４１を参照し、ブレーク対象命令が例外抑止命令であるか否かを確認する。そしてステップＳ３において、ＮＥフィールド３３８〜３４１に１が書き込まれていることにより該命令が例外抑止命令であると判断された場合には、ステップＳ４へ進み、ＮＥフィールド３３８〜３４１に０が書き込まれていることにより例外抑止命令でないと判断された場合にはステップＳ２０へ進む。
【０１０２】
このとき、ステップＳ４では例外抑止ロード命令テーブルを参照し、該ブレーク対象命令が含まれる制御経路番号を求める。そして、ステップＳ５において、メモリ１内に格納された上記例外抑止データブレーク履歴テーブルに、ブレーク対象命令が含まれる上記制御経路番号と、命令アドレスと、実効アドレスとを登録する。次に、ステップＳ６において、上記制御経路番号に基づき、メモリ１に格納されたコミットポイントテーブルを参照し、他の制御経路が存在するか否かを確認する。
【０１０３】
そして、ステップＳ７において演算命令実行部２２の比較動作により他の制御経路が存在すると判断された場合にはステップＳ８へ進み、存在しないと判断された場合にはステップＳ１１へ進む。ここでステップＳ８では、見出された制御経路番号が求められ、ステップＳ９ではコミットブレークポイントテーブルへ、該他の制御経路のコミットポイントに対応するブレークポイントの命令アドレスと、制御経路番号とを登録する。このようにして、ステップＳ１０において該他の制御経路のコミットポイントに対するブレークポイントを設定する。
【０１０４】
そして、ステップＳ１１において、ステップＳ１で退避されたコンテキストが復元される。なお、ステップＳ２０ではデータブレーク処理を実行し、上記ステップＳ１１へ動作が進行する。そしてさらにステップＳ１２においては、割り込み復帰命令を実行することにより、データブレーク割込みの処理から元のプログラムの実行へ復帰し、割込み処理動作を終了する。
【０１０５】
なお、図１６に示された本実施の形態に係る計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作は、図１１のフローチャートに示された実施の形態１に係る計算機による動作と同様である。
【０１０６】
以上より、本実施の形態２に係る計算機によれば、履歴制御部２１９は例外抑止履歴テーブルに例外情報を登録し、データブレーク検出部３３３はＮＥフィールド３３８〜３４１に該例外動作を留保する（例外抑止命令である）ことを示す１のデータを書き込んだ上で、コミット命令の実行により該留保した例外動作を上記例外情報に応じて遂行するため、投機的に移動した命令のうち本来の順序による実行では確定していない命令によりデータブレークが生じてプログラムの実行が中断してしまうことが回避され、データ処理能力及び動作の信頼性が高い計算機を得ることができる。
［実施の形態３］
図２０は、本発明の実施の形態３に係る計算機の構成を示す図である。図２０に示されるように、本実施の形態３に係る計算機は、図１６に示された実施の形態２に係る計算機と同様な構成を有するが、ブレーク履歴制御部３５５をさらに含むと共に、命令実行部３５３にはブレーク履歴読み出し命令実行部３４９と、ブレーク履歴書込み命令実行部３５１とを含む点で相違する。また後述するように、命令実行部３５３に含まれたデータブレーク検出部３４７の構成が、図１６に示されたデータブレーク検出部３３３の構成と相違する。
【０１０７】
ここで、ブレーク履歴読み出し命令実行部３４９は命令デコード部１７と、ブレーク履歴制御部３５５及び履歴制御部２１９に接続される。また、ブレーク履歴書込み命令実行部３５１は命令デコード部１７と、汎用レジスタ３７、履歴制御部２１９及びブレーク履歴制御部３５５に接続される。また、ブレーク履歴制御部３５５は、さらに例外抑止履歴確認制御部２６と例外抑止フラグ無効化命令実行部２１７、データブレーク検出部３４７及びコミット例外割り込み制御部４４に接続される。
【０１０８】
そして、例外抑止履歴確認制御部２６は上記実施の形態２における場合の動作に加え、コミット命令の実行によりブレーク履歴制御部３５５に対して確認信号ＣＣを供給する。また、例外抑止フラグ無効化命令実行部２１７は上記実施の形態２における場合の動作に加え、例外抑止フラグ無効化命令の実行によりブレーク履歴制御部３５５に対してリセット（無効化）信号ＲＳを供給する。
【０１０９】
また、ブレーク履歴読み出し命令実行部３４９は、命令デコード部１７からブレーク履歴読み出し命令が供給された場合、ブレーク履歴制御部３５５に対して読み出し信号Ｒを供給することにより例外抑止データブレーク履歴テーブルを読み出し、その結果を汎用レジスタ３７へ書き込む。また、ブレーク履歴書込み命令実行部３５１は、命令デコード部１７からブレーク履歴書込み命令が供給された場合、汎用レジスタ３７から読み出したデータを書き込み信号Ｗと共にブレーク履歴制御部３５５へ供給する。
【０１１０】
そして、ブレーク履歴制御部３５５は、データブレーク検出部３４７から供給された登録信号ＡＤＤに応じて、後述する例外抑止データブレーク履歴テーブル部にデータブレーク情報を登録する。また、供給された確認信号ＣＣに応じて、指定されたレジスタ番号にデータブレーク情報が保持されているか否か確認する。そして、指定されたレジスタ番号にデータブレーク情報が保持されている場合には、ブレーク割込みを検出した旨をブレーク信号ＢＲによりコミット例外割り込み制御部４４へ伝達する。また、供給された無効化信号ＲＳに応じて、指定されたレジスタ番号にデータブレーク情報が保持されている場合には、そのエントリを無効化する。また、供給された読み出し信号Ｒに応じて例外抑止データブレーク履歴テーブル部から読み出したデータをブレーク履歴読み出し命令実行部３４９へ供給する。さらには、供給された書込み信号Ｗに応じて、ブレーク履歴書き込み命令実行部３５１から供給された値を例外抑止データブレーク履歴テーブル部へ書き込む。
【０１１１】
図２１は、図２０に示されたデータブレーク検出部３４７の構成を示す図である。図２１に示されるように、本実施の形態に係るデータブレーク検出部３４７は、図１７に示されたデータブレーク検出部３３３と同様な構成を有するが、出力端がブレーク履歴制御部３５５に接続されたＡＮＤ回路３４８を備えている点で相違するものである。
【０１１２】
なお、図２１に示された検出部３１１〜３１４は、データブレーク条件が成立したか否かを判定する。具体的には、非例外抑止命令であるロードストア命令の実効アドレスと、アドレスフィールドに格納されたアドレスとを比較し、それらが一致した場合には対応するＶフィールドに１を書き込み、データブレークが成立した旨を示す信号ｍｔを出力する。また、例外抑止命令の実効アドレスとアドレスフィールドに格納されたアドレスとを比較して一致した場合には、ＯＲ回路３２７を介して登録信号ＡＤＤをブレーク履歴制御部３５５へ供給する。
【０１１３】
図２２は、図２０に示されたブレーク履歴制御部３５５の構成を示す図である。図２２に示されるように、本実施の形態に係るブレーク履歴制御部３５５は、図１８に示された履歴制御部２１９と同様な構成を有し、アドレスレジスタ５７と、実効アドレスレジスタ３５９と、レジスタ番号レジスタ６１と、有効レジスタ３５７と、デコード回路６５と、比較器６７〜６９と、Ｅフィールド（E）３６１〜３６３と、Ｖフィールド１５１〜１５３と、アドレスフィールド（ADDR）７１，７５，７９と、ＥＡフィールド（EA）３６４〜３６６と、レジスタ番号フィールド（REG ＃）７３，７７，８１と、ブレーク判定部３６７と、ブレークエントリ検出部３６９と、無効エントリ検出部８７と、ブレーク履歴登録制御部１８３ｂと、ブレーク履歴確認制御部１８６と、ブレーク履歴読み出し命令実行部１８７ｂと、ブレーク履歴書き込み命令実行部１８９ｂと、履歴テーブル無効化部２１８とを含む。
【０１１４】
ここでアドレスレジスタ５７と、実効アドレスレジスタ３５９と、レジスタ番号レジスタ６１と、有効レジスタ３５７及びデコード回路６５は命令実行部３５３に接続される。そして、アドレスレジスタ５７は、ブレーク対象命令の命令アドレスを保持する。また、実効アドレスレジスタ３５９は、ブレーク対象命令の実効アドレスを保持する。そして、レジスタ番号レジスタ６１は、例外抑止ロード命令の実行において書き込み対象とするレジスタ番号を保持する。
【０１１５】
また、有効レジスタ３５７は有効フラグからなるものとすることができ、データブレーク情報が有効か否かを示すデータを保持する。そして、０が書き込まれているときにはエントリが無効であることを意味し、１が書き込まれているときにはエントリが有効であることを示す。
【０１１６】
また、デコード回路６５は命令実行部３５３から供給された信号を解析し、対応する制御部を起動する。すなわち、供給される登録信号ＡＤＤに応じてブレーク履歴登録制御部１８３ｂを起動し、確認信号ＣＣに応じてブレーク履歴確認制御部１８６を起動し、読み出し信号Ｒに応じてブレーク履歴読み出し命令実行部１８７ｂを起動し、書き込み信号Ｗに応じてブレーク履歴書き込み命令実行部１８９ｂを起動し、無効化信号ＲＳに応じて履歴テーブル無効化部２１８を起動する。
【０１１７】
一方比較器６７〜６９は、レジスタ番号レジスタ６１及び対応するエントリに接続される。ここで、並設された複数のエントリは例外抑止データブレーク履歴テーブルを構成するが、各エントリはエントリが有効か否かを２値データにより示すＥフィールド（E）３６１〜３６３と、対応するエントリにデータブレークが発生したか否かを２値データにより示すＶフィールド１５１〜１５３と、登録されているデータブレークの命令アドレスを保持するアドレスフィールド（ADDR）７１，７５，７９と、登録されているデータブレークの実効アドレスを保持するＥＡフィールド３６４〜３６６と、登録されているデータブレークの結果を書き込むレジスタの番号を示すレジスタ番号フィールド（REG ＃）７３，７７，８１とを含む。
【０１１８】
そして上記比較器６７〜６９は、Ｅフィールド（E）３６１〜３６３が有効なエントリに対して、レジスタ番号フィールド７３，７７，８１に記録された値と、レジスタ番号レジスタ６１に保持されたレジスタ番号とを比較し、両者が一致するか否かを示す信号を出力する。
【０１１９】
また、ブレーク判定部３６７は比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、データブレーク情報が格納されているレジスタがコミット命令により指定されているか否かを判定する。そして、その判定結果をブレーク履歴確認制御部１８６へ出力すると共に、ブレーク信号ＢＲをコミット例外割り込み制御部４４へ供給する。
【０１２０】
そしてブレークエントリ検出部３６９は、比較器６７〜６９に接続され、比較器６７〜６９から供給された信号に応じて、例外抑止データブレーク履歴に登録されている結果書込み対象を指定するレジスタ番号のうちコミット命令により指定されたレジスタの番号を格納するエントリ番号を検出する。また、無効エントリ検出部８７は、各エントリのＥフィールド３６１〜３６３の情報に応じて、例外抑止データブレーク履歴テーブルにおける空きエントリ（無効なエントリ）の検出を行う。
【０１２１】
また、ブレーク履歴登録制御部１８３ｂは、アドレスレジスタ５７と実効アドレスレジスタ３５９、レジスタ番号レジスタ６１、有効レジスタ３５７、デコード回路６５及び無効エントリ検出部８７に接続され、デコード回路６５から供給された登録信号ＡＤＤに応じて、無効エントリ検出部８７で検出された空きエントリのＥフィールド３６１〜３６３と、アドレスフィールド（ADDR）７１，７５，７９と、レジスタ番号フィールド（REG ＃）７３，７７，８１と、ＥＡフィールド３６４〜３６６へデータブレーク情報を書き込む。
【０１２２】
また、ブレーク履歴確認制御部１８６は、レジスタ番号レジスタ６１と、ブレーク判定部３６７と、ブレークエントリ検出部３６９と、デコード回路６５及びＶフィールド１５１〜１５３に接続される。そして、ブレーク履歴確認制御部１８６は、ブレーク判定部３６７においてコミット命令により指定されたレジスタの番号と例外抑止データブレーク履歴に登録されている結果書込み対象を指定するレジスタ番号とが一致したと判定された場合、一致した該レジスタ番号が格納されているエントリのＶフィールド１５１〜１５３へ１を書き込む。
【０１２３】
また、ブレーク履歴読み出し命令実行部１８７ｂは、例外抑止データブレーク履歴読み出し命令により指定されたエントリからデータブレーク情報を読み出して命令実行部３５３へ供給する。さらに、ブレーク履歴書き込み命令実行部１８９ｂは、命令実行部３５３から有効レジスタ３５７やレジスタ番号レジスタ６１、アドレスレジスタ５７、及び実効アドレスレジスタ３５９を介して供給された値を、例外抑止データブレーク履歴書き込み命令で指定されたエントリへ書き込む。また、履歴テーブル無効化部２１８は、デコード回路６５から供給された例外抑止フラグ無効化命令において指定された該エントリのＥフィールド３６１〜３６３を無効化する。
【０１２４】
以上より、本実施の形態３に係る計算機によれば、上記実施の形態２に係る計算機と同様な効果を奏すると共に、ブレーク履歴制御部３５５は実行を留保するデータブレークについてのデータブレーク情報を例外抑止データブレーク履歴テーブルに登録した上で、コミット命令の実行により該留保したデータブレーク動作を上記データブレーク情報に応じて遂行するため、データ処理に必要なプログラムをさらに短縮化することができる。従って、該プログラムの実行に必要とされるメモリ容量が低減できると共に、データ処理をより高速化することができる。
［実施の形態４］
図２３は、本発明の実施の形態４に係る計算機の構成を示す図である。図２３に示されるように、本実施の形態に係る計算機は、図１６に示された実施の形態２に係る計算機と同様な構成を有するが、命令実行部３７３にはモード命令実行部３７１がさらに含まれ、レジスタ制御部３７７にはモードレジスタ３７５がさらに含まれる点で相違するものである。
【０１２５】
ここで、このモード命令実行部３７１は命令デコード部１７と、モードレジスタ３７５及び汎用レジスタ３７に接続される。また、モードレジスタ３７５は、さらに例外抑止履歴確認制御部２６と例外抑止フラグ無効化命令実行部２１７に接続される。
【０１２６】
そして、以上のような構成を有する本実施の形態４に係る計算機においては、本来の命令のみを実行するときにはモードレジスタ３７５に０の値が格納され、本来の命令に加えてコミット命令あるいは例外抑止フラグ無効化命令が実行されたことに応じて割り込みを発生させるときにはモードレジスタ３７５に１の値が格納される。
【０１２７】
また、例外抑止履歴確認制御部２６は、モードレジスタ３７５に１の値が格納されているときに限り、割込信号を出力することによってコミット命令の実行による割り込みの発生を割り込み制御部１０へ通知する。また、例外抑止フラグ無効化命令実行部２１７は、モードレジスタ３７５に１の値が格納されているときに限り、割込信号を出力することによって例外抑止フラグ無効化命令の実行による割り込みの発生を割り込み制御部１０へ通知する。
【０１２８】
また、命令実行回路２３は、命令デコード部１７から動作モード読み出し命令が供給された場合には、モードレジスタ３７５から格納されている値を読み出し、その値を汎用レジスタ３７へ書き込む。また、同様に動作モード書き込み命令が供給された場合には、汎用レジスタ３７から読み出した値をモードレジスタ３７５へ書き込む。
【０１２９】
なお、本実施の形態４に係る計算機においては、メモリ１内の所定のアドレス領域に、例外抑止データブレーク履歴テーブルが格納される。そして、本実施の形態４に係る例外抑止データブレーク履歴テーブルは、図２５に示されるように、ブレーク対象とされる命令の実行結果を書き込むレジスタの番号と、該ブレーク対象とされる命令の命令アドレスと、上記命令の実効アドレスとを組にしたデータ、すなわち（ｒ０，ａ０，ｅａ０）、（ｒ１，ａ１，ｅａ１）、…（ｒｌ，ａｌ，ｅａｌ）から構成される。
【０１３０】
以下において、図２３に示された計算機の、割り込み処理プログラムによるデータブレーク割り込み動作を、図２４のフローチャートを参照しつつ説明する。
【０１３１】
なお、図２３に示された本実施の形態４に係る計算機の、割り込み処理プログラムによるソフトウェアブレーク割り込み動作は、図５のフローチャートに示された従来の計算機による動作と同様である。
【０１３２】
図２４に示されるように、まずステップＳ１ではコンテキストを退避する。次にステップＳ２では割り込みの種類を判定し、ステップＳ３では該割り込みがコミット命令または例外抑止フラグ無効化命令の実行に起因するものであるか否かが判断される。そして、該割り込みがコミット命令または例外抑止フラグ無効化命令の実行のいずれにも起因しない場合にはステップＳ３０へ進み、いずれかに起因する場合にはステップＳ２０へ進む。さらにステップＳ２０では、コミット命令の実行に起因するものであるか否かが判断され、コミット命令の実行に起因するものである場合にはステップＳ４へ進み、コミット命令でなく例外抑止フラグ無効化命令の実行に起因する場合にはステップＳ２１へ進む。
【０１３３】
そして、ステップＳ４ではメモリ１に格納された例外抑止データブレーク履歴テーブル内に、コミット命令により指定されたレジスタ番号が実行結果を書き込むレジスタの番号データｒｌとして格納されているか否か確認する。そして、ステップＳ５において該レジスタ番号が存在しないと判断したときには、ステップＳ８へ進む一方、該レジスタ番号が存在すると判断したときには、ステップＳ６へ進んでそのレジスタ番号により指定されるレジスタを結果書き込みの対象とする該データブレーク処理を実行する。その後、ステップＳ７では上記例外抑止データブレーク履歴テーブルより、コミット命令により指定されたレジスタ番号が含まれる一組（エントリ）のデータを削除する。
【０１３４】
次に、ステップＳ８では例外抑止データブレーク履歴テーブルに有効なエントリが存在するか否か確認し、ステップＳ９において存在しないと判断された場合にはステップＳ１０へ進み、存在すると判断された場合にはステップＳ１１へ進む。ここで、ステップＳ１０ではモード書き込み命令を実行することにより、モードレジスタ３７５に０の値が格納される。
【０１３５】
そして、ステップＳ１１においてコンテキストの復元がなされ、ステップＳ１２において割り込み復帰命令を実行することにより、割り込み処理から復帰し、データブレーク割り込みの動作を終了する。
【０１３６】
一方、ステップＳ２１では、メモリ１に格納された例外抑止データブレーク履歴テーブル内に、例外抑止フラグ無効化命令により指定されたレジスタ番号が実行結果を書き込むレジスタの番号データｒｌとして格納されているか否か確認する。そして、ステップＳ２２において該レジスタ番号が存在しないと判断したときには、ステップＳ２４へ進む一方、該レジスタ番号が存在すると判断したときには、ステップＳ２３へ進んで上記例外抑止データブレーク履歴テーブルより、例外抑止フラグ無効化命令により指定されたレジスタ番号が含まれる一組（エントリ）のデータを削除する。
【０１３７】
次に、ステップＳ２４では例外抑止データブレーク履歴テーブルに有効なエントリが存在するか否か確認し、ステップＳ２５において存在しないと判断された場合にはステップＳ２６へ進み、存在すると判断された場合にはステップＳ１１へ進む。ここで、ステップＳ２６ではモード書込み命令を実行することによってモードレジスタ３７５に０の値が格納され、ステップＳ１１へ進む。
【０１３８】
一方、ステップＳ３０においては、読み出したブレーク対象命令が例外抑止命令であるか否かが、演算命令実行部２２の命令比較動作により判定される。そして、ステップＳ３１において該命令が例外抑止命令であると判断された場合には、ステップＳ３２へ進み、例外抑止命令でないと判断された場合にはステップＳ４０へ進む。
【０１３９】
そして、ステップＳ３２において、メモリ１内に格納された上記例外抑止データブレーク履歴テーブルに、ブレーク対象命令の実行結果を書き込むレジスタの番号と、命令アドレスと、実効アドレスとを登録する。その後、ステップＳ３３においては、モードレジスタ３７５に格納された値が０であるか否か判断され、０であると判断された場合にはステップＳ３４へ進み、１であると判断された場合にはステップＳ１１へ進む。ここで、ステップＳ３４においては、モード書込み命令を実行することによりモードレジスタ３７５に１の値が格納され、ステップＳ１１へ進む。
【０１４０】
一方、ステップＳ４０においてはデータブレーク処理が実行され、ステップＳ１１へ進む。
【０１４１】
以上より、本実施の形態４に係る計算機によれば、例外抑止命令の実行においてデータブレーク処理の実行を留保（抑止）した場合には、モードレジスタ３７５に１の値を設定することとするため、モードレジスタ３７５に格納された値を参照することにより、確定した命令の実行において必要なデータブレーク処理の有無を迅速に判断でき、データ処理をさらに高速化することができる。
【０１４２】
最後に、本発明の課題を解決するための手段について付記する。
（１）プログラムされた命令の実行を制御する計算機の制御方法であって、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行する第一のステップと、第一のステップにおいて、プログラムの実行を中断する必要性が見出された場合に、中断を留保する第二のステップと、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされる場合には、中断を遂行する第三のステップとを有することを特徴とする計算機の制御方法。
（２）第二のステップにおいては、留保される中断を実行するための情報を記憶し、第三のステップにおいては、情報に応じて中断を遂行する（１）に記載の計算機の制御方法。また、留保される中断を実行するための情報を記憶し、上記情報に応じて上記中断を遂行することとすれば、所定の処理を遂行するためのプログラムを短縮化することができるため、該プログラムを記憶するために必要な記憶容量を低減して、動作の高速化と回路規模の低減を図ることができる。
（３）前記情報を無効化する第四のステップをさらに有する（２）に記載の計算機の制御方法。このように、必要に応じて上記情報を無効化することとすれば、分岐命令の実行の結果必要とされないことが確定した情報を削除することができるため、ハードウェア資源の有効活用を図ることができる。
（４）第二のステップでは、フラグを所定の値に設定し、第三のステップでは、分岐命令を実行することにより選択された分岐先の命令の実行において、第二のステップで留保した中断が必要とされるか否かをフラグの値を参照することにより判断する（１）に記載の計算機の制御方法。このように、分岐命令を実行することにより選択された分岐先の命令の実行において、中断を必要とするか否かをフラグの値を参照することにより判断すれば、該判断を迅速に行うことができるため、計算機の回路規模の増大を抑制しつつデータ処理の高速化を図ることができる。
（５）所定の命令を実行することによりフラグの値を無効化するステップをさらに有する（４）に記載の計算機の制御方法。
（６）第三のステップにおける分岐命令を実行することにより選択された分岐先の命令は、割り込み処理プログラムにより実行される（１）に記載の計算機の制御方法。
（７）プログラムされた命令を実行する計算機であって、分岐命令より後置された所定の命令を分岐命令より先に実行したとき、プログラムの実行を中断する必要性が見出された場合に中断を留保する例外抑止手段と、分岐命令を実行することにより選択された分岐先の命令の実行において、例外抑止手段により留保された中断が必要とされる場合には、中断を遂行する中断処理実行手段とを備えたことを特徴とする計算機。
（８）留保される中断を実行するための情報を記憶する記憶手段をさらに備え、前記中断処理実行手段は、前記記憶手段に記憶された前記情報に応じて前記中断を遂行する（７）に記載の計算機。
（９）情報を無効化する無効化手段をさらに備えた（８）に記載の計算機。
（１０）フラグをさらに備え、例外抑止手段はフラグを所定の値に設定すると共に、中断処理実行手段は、分岐命令を実行することにより選択された分岐先の命令の実行において、先に留保した中断が必要とされるか否かをフラグの値を参照することにより判断する（７）に記載の計算機。
（１１）所定の命令を実行することによりフラグを無効化するフラグ無効化手段をさらに備えた（１０）に記載の計算機。
（１２）分岐命令を実行することにより選択された分岐先の命令を、割り込み処理プログラムにより実行する割り込み処理実行手段をさらに備えた（７）に記載の計算機。
【０１４３】
【発明の効果】
上述の如く、プログラムにおいて分岐命令より後置された命令を、分岐命令より先に実行したときに必要とされた中断を留保し、分岐命令を実行することにより選択された分岐先の命令の実行において、その留保した中断が必要とされる場合に該中断を遂行すれば、分岐命令より後置された命令を、分岐命令より先に実行することによる無用な中断を回避して、プログラムされた命令の実行を確実に遂行することができるため、計算機の動作の信頼性を高めることができる。
【０１４４】
ここで、上記中断を遂行した場合には割り込み処理プログラムを実行すれば、該中断により、例えばデバッグ支援プログラムの実行などによる異なるシステムの制御ができるため、多様なデータ処理を実現することができる。
【図面の簡単な説明】
【図１】従来の計算機の構成を示す図である。
【図２】図１に示された命令ブレーク検出部の構成を示す図である。
【図３】図１に示されたデータブレーク検出部の構成を示す図である。
【図４】図１に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を示すフローチャートである。
【図５】図１に示された計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作を示すフローチャートである。
【図６】本発明の実施の形態１に係る計算機の構成を示す図である。
【図７】図６に示された演算命令実行部の構成を示す図である。
【図８】図６に示された計算機の、データブレークを検出した際の動作を示すフローチャートである。
【図９】図６に示された計算機の、本来の順序での命令の実行が確定した際の動作を示すフローチャートである。
【図１０】図６に示された計算機の、データブレーク割込みにおける割込み処理プログラムによる動作を示すフローチャートである。
【図１１】図６に示された計算機の、割込み処理プログラムによるソフトウェアブレーク割込み動作を示すフローチャートである。
【図１２】本発明の実施の形態１に係る例外抑止ロード命令テーブルの構成を示す図である。
【図１３】本発明の実施の形態１に係るコミットポイントテーブルの構成を示す図である。
【図１４】本発明の実施の形態１に係るコミットブレークポイントテーブルの構成を示す図である。
【図１５】本発明の実施の形態１に係る例外抑止データブレーク履歴テーブルの構成を示す図である。
【図１６】本発明の実施の形態２に係る計算機の構成を示す図である。
【図１７】図１６に示されたデータブレーク検出部の構成を示す図である。
【図１８】図１６に示された履歴制御部の構成を示す図である。
【図１９】図１６に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を示すフローチャートである。
【図２０】本発明の実施の形態３に係る計算機の構成を示す図である。
【図２１】図２０に示されたデータブレーク検出部の構成を示す図である。
【図２２】図２０に示されたブレーク履歴制御部の構成を示す図である。
【図２３】本発明の実施の形態４に係る計算機の構成を示す図である。
【図２４】図２３に示された計算機の、割込み処理プログラムによるデータブレーク割込み動作を示すフローチャートである。
【図２５】本発明の実施の形態４に係る例外抑止データブレーク履歴テーブルの構成を示す図である。
【符号の説明】
１  メモリ
９，１０  割り込み制御部
１１  命令読み出し制御部
１３  プログラムカウンタ（ＰＣ）
１５  命令語レジスタ（ＩＲ）
１７  命令デコード部
１９  ロード命令実行部
２０  例外抑止履歴書き込み命令実行部
２１  ストア命令実行部
２２，２３５  演算命令実行部
２３  命令実行回路
２４，２３７  例外抑止ロード命令実行部
２６  例外抑止履歴確認制御部
２８  例外抑止履歴読み出し命令実行部
３１  レジスタ（ＥＰＣＲ）
３３  レジスタ（ＥＰＳＲ）
３５  レジスタ（ＰＳＲ）
３７  汎用レジスタ
３８  例外抑止フラグ
４０，５５  割込制御回路
４４  コミット例外割り込み制御部
５７  アドレスレジスタ
５９  データタイプレジスタ
６１  レジスタ番号レジスタ
６５  デコード回路
６７〜６９  比較器
７１，７５，７９，３１５〜３１８  アドレスフィールド（ADDR）
７２，７６，８０  データタイプフィールド（DT）
７３，７７，８１  レジスタ番号フィールド（REG ＃）
８７  無効エントリ検出部
１７７〜１７９  ＥＣフィールド
１８０  コミット判定部
１８１  コミットエントリ検出部
１８３  例外抑止履歴登録制御部
１８３ｂ  ブレーク履歴登録制御部
１８５  例外抑止履歴確認制御部
１８６  ブレーク履歴確認制御部
１８７  例外抑止履歴読み出し命令実行部
１８７ｂ  ブレーク履歴読み出し命令実行部
１８９  例外抑止履歴書き込み命令実行部
１８９ｂ  ブレーク履歴書き込み命令実行部
２１７  例外抑止フラグ無効化命令実行部
２１８  履歴テーブル無効化部
２１９  履歴制御部
２４８，３２７  ＯＲ回路
３０１  命令ブレーク検出部
３０３  命令読み出し部
３０５，３３３，３４７  データブレーク検出部
３０７，３２９，３３５，３５３，３７３  命令実行部
３０９，３３１，３７７  レジスタ制御部
３１１〜３１４  検出部
３１９〜３２２，３６１〜３６３  Ｅフィールド（E ）
３２３〜３２６  Ｖフィールド
３３７  例外抑止判定部
３３８〜３４１  ＮＥフィールド
３４３〜３４６，３４８  ＡＮＤ回路
３４９  ブレーク履歴読み出し命令実行部
３５１  ブレーク履歴書込み命令実行部
３５５  ブレーク履歴制御部
３５７  有効レジスタ
３５９  実効アドレスレジスタ
３６４〜３６６  実効アドレス（EA）フィールド
３６７  ブレーク判定部
３６９  ブレークエントリ検出部
３７１  モード命令実行部
３７５  モードレジスタ
ＡＤＤ  登録信号
ＣＣ  確認信号
Ｒ  読み出し信号
Ｗ  書き込み信号
ＣＭ  コミット信号
ＲＳ  リセット信号
ＢＲ  ブレーク信号
【図１】
0003762608.tif 000004
【図２】
0003762608.tif 000005
【図３】
0003762608.tif 000006
【図４】
0003762608.tif 000007
【図５】
0003762608.tif 000008
【図６】
0003762608.tif 000009
【図７】
0003762608.tif 000010
【図８】
0003762608.tif 000011
【図９】
0003762608.tif 000012
【図１０】
0003762608.tif 000013
【図１１】
0003762608.tif 000014
【図１２】
0003762608.tif 000015
【図１３】
0003762608.tif 000016
【図１４】
0003762608.tif 000017
【図１５】
0003762608.tif 000018
【図１６】
0003762608.tif 000019
【図１７】
0003762608.tif 000020
【図１８】
0003762608.tif 000021
【図１９】
0003762608.tif 000022
【図２０】
0003762608.tif 000023
【図２１】
0003762608.tif 000024
【図２２】
0003762608.tif 000025
【図２３】
0003762608.tif 000026
【図２４】
0003762608.tif 000027
【図２５】
0003762608.tif 000028