(57)【特許請求の範囲】
【請求項１】
特定用途演算命令の実行中に発生した演算例外を検出し、例外処理をおこなう情報処理装置において、
特定用途演算命令を実行中に演算例外の発生情報を記憶する記憶手段と、
デバック中のブレーク位置においてプログラムの実行が中断された後、コンテキストを退避する退避手段と、
特定用途演算命令の実行中に演算例外を検出したか否かを、前記発生情報に基づいて確認する確認手段と、
特定用途演算命令の実行中の演算例外が検出済みである場合に例外処理をおこなう例外処理手段と、
割り込みから復帰する復帰手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されているか否かを確認する第２の確認手段をさらに備えたことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
ブレーク対象命令が特定用途演算命令であるか否かを確認する第３の確認手段をさらに備えたことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
特定用途演算命令の実行中に演算例外を検出したことを記憶手段に記憶し、前記記憶手段の内容を参照して演算例外が検出済みであるか未検出であるかを確認することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
特定用途演算命令の実行中に発生した演算例外を検出し、例外処理をおこなう特定用途演算命令の例外処理方法において、
特定用途演算命令を実行中に演算例外の発生情報を記憶する記憶工程と、
デバック中のブレーク位置においてプログラムの実行が中断された後、コンテキストを退避する退避工程と、
特定用途演算命令の実行中に演算例外を検出したか否かを、前記発生情報に基づいて確認する確認工程と、
特定用途演算命令の実行中の演算例外が検出済みである場合に例外処理をおこなう例外処理工程と、
割り込みから復帰する復帰工程と、
を含むことを特徴とする特定用途演算命令の例外処理方法。
【請求項６】
特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されているか否かを確認する第２の確認工程をさらに含むことを特徴とする請求項５に記載の特定用途演算命令の例外処理方法。
【請求項７】
ブレーク対象命令が特定用途演算命令であるか否かを確認する第３の確認工程をさらに含むことを特徴とする請求項５に記載の特定用途演算命令の例外処理方法。
【請求項８】
特定用途演算命令の実行中に演算例外を検出したことを記憶手段に記憶し、前記記憶手段の内容を参照して演算例外が検出済みであるか未検出であるかを確認することを特徴とする請求項５〜７のいずれか一つに記載の特定用途演算命令の例外処理方法。
【請求項９】
特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されたことをレジスタまたはメモリのフラグに記憶し、前記レジスタまたは前記フラグを参照して演算例外の検出をおこなう状態に設定されているか否かを確認することを特徴とする請求項６に記載の特定用途演算命令の例外処理方法。
【請求項１０】
特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定するための命令を設け、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定するための命令であるか否かを確認することを特徴とする請求項６に記載の特定用途演算命令の例外処理方法。
【請求項１１】
プログラムの実行を中断した命令アドレスが、特定用途演算命令の実行中に発生する演算例外の検出をおこなう対象であることを記憶手段に記憶し、前記記憶手段の内容を参照して演算例外の検出をおこなう状態に設定されているか否かを確認することを特徴とする請求項６に記載の特定用途演算命令の例外処理方法。
【請求項１２】
特定用途演算命令の実行中に発生する演算例外の検出をおこなう対象のブレークポイントを記憶手段に記憶し、前記記憶手段の内容を参照して演算例外の検出をおこなう状態に設定されているか否かを確認することを特徴とする請求項６に記載の特定用途演算命令の例外処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、特定用途演算命令を搭載した情報処理装置および特定用途演算命令を搭載した情報処理において特定用途演算命令を実行中に演算例外が発生した場合の例外処理方法に関する。ここで、特定用途演算命令とは、特定用途に特化した演算機能を持つ命令のことである。
【０００２】
【従来の技術】
特定分野のアプリケーションでは、その用途に特化した特殊な演算処理が存在することがある。その場合、演算処理を効率よくおこなうため、特定用途に特化した演算機能を持つ命令（以下、特定用途演算命令とする）を搭載した情報処理装置が使用される。このような情報処理装置において、特定用途演算命令を実行した際に、プログラムの欠陥であるバグに起因するオーバーフローやアンダーフローなどの演算例外が発生する場合がある。このようなバグをなくすため、プログラムの開発段階においてデバッグ作業がおこなわれる。
【０００３】
デバッグ作業はデバッグ支援システムを用いて実施される。一般に、デバッグ支援システムには、実行中のプログラムを中断させるためのブレークポイント機能やシングルステップ機能が設けられている。デバッグの作業者は、これらの機能を利用してデバッグ対象プログラムをその実行中にいったん停止させ、その状態でレジスタやメモリの値を調べたり、あるいは変更することができる。そして、デバッグの作業者は、その停止した時点からプログラムの実行を再開させることができる。
【０００４】
ここで、ブレークポイント機能の実現方法として、命令ブレーク法とソフトウエア・ブレーク法がある。命令ブレーク法では、プログラムの実行開始前に、ハードウエアに設けられたブレークポイント・レジスタに、実行を停止させたい命令のアドレスが保持される。プログラムの実行中に、ブレークポイント・レジスタにより指定された命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、デバッグの作業者にその旨が通知される。デバッグの作業者がプログラムの実行再開を指示すると、制御がデバッグ支援プログラムから元に戻される。
【０００５】
図１７は、命令ブレーク法による割り込み処理プログラムのフローチャートである。プログラムの実行が中断され、割り込み処理プログラムが開始されると、コンテキストを退避し（ステップＳ１７０１）、命令ブレーク処理をおこなった（ステップＳ１７０２）後、コンテキストを復元し（ステップＳ１７０３）、割り込みから復帰する（ステップＳ１７０４）。
【０００６】
ソフトウエア・ブレーク法では、プログラムの実行開始前に、実行を停止させたい命令が、割り込みを発生させる命令で置き換えられる。プログラムの実行中に、その割り込みを発生させる命令が検出されると、割り込みが発生し、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、デバッグの作業者にその旨が通知される。プログラムの実行再開時には、置き換えられた元の命令の実行がシミュレートされた後、制御が元に戻される。なお、割り込みを発生させる命令として、ブレークポイント命令と呼ばれる専用の命令を用意する場合もある。
【０００７】
図１８は、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。プログラムの実行が中断され、割り込み処理プログラムが開始されると、コンテキストを退避し（ステップＳ１８０１）、ソフトウエア・ブレーク処理をおこなった（ステップＳ１８０２）後、コンテキストを復元し（ステップＳ１８０３）、割り込み復帰命令により割り込みから復帰する（ステップＳ１８０４）。
【０００８】
シングルステップ機能では、デバッグ対象プログラムが停止している状態で、デバッグの作業者がシングルステップ機能の実行を指示すると、つぎに実行すべき命令が実行された後、プログラムが停止する。シングルステップ機能の実現方法としてステップ・ブレーク法がある。ステップ・ブレーク法では、命令を実行した後に割り込みを発生させるか否かを保持するレジスタとしてシングルステップ・モード・レジスタがハードウエアに設けられる。そして、シングルステップ・モードである場合には、注目している命令が実行された後に、割り込みが発生する。割り込みが発生すると、割り込み処理プログラムを経由してデバッグ支援プログラムに制御が渡り、デバッグの作業者にその旨が通知される。プログラムの実行の再開が指示されると、制御が元に戻される。
【０００９】
図１９は、ステップ・ブレーク法による割り込み処理プログラムのフローチャートである。プログラムの実行が中断され、割り込み処理プログラムが開始されると、コンテキストを退避し（ステップＳ１９０１）、ステップ・ブレーク処理をおこなった（ステップＳ１９０２）後、コンテキストを復元し（ステップＳ１９０３）、割り込み復帰命令により割り込みから復帰する（ステップＳ１９０４）。
【００１０】
【発明が解決しようとする課題】
しかしながら、従来、たとえばマルチメディア処理において頻繁に発生するデータのクリップ(ある値の範囲、たとえば０〜２５５の範囲や、−３２７６８〜３２７６７の範囲に収める)に効果的な特定用途演算命令の一つである飽和演算命令の場合、オーバーフローやアンダーフローが発生しても、演算結果が上限値や下限値でクリップされてしまうため、演算例外処理がおこなわれないという問題点があった。そのため、デバッグの作業者が、オーバーフローやアンダーフローの発生の有無を逐一確認しなければならず、デバッグ作業に多大な労力と時間がかかっていた。
【００１１】
本発明は、上記問題点に鑑みてなされたものであって、特定用途演算命令を有する情報処理装置であって、特定用途演算命令の実行中に発生した演算例外の例外処理をおこなうことができる情報処理装置およびその情報処理装置の特定用途演算命令の例外処理方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、本発明にかかる情報処理装置および特定用途演算命令の例外処理方法は、プログラムの実行が中断され、割り込み処理プログラムが開始されると、コンテキストを退避した後、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されているか否かを確認する。演算例外の検出をおこなう状態に設定されている場合には、さらに特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する。演算例外を検出済みであれば特定用途演算例外処理をおこなった後、ステップ・ブレーク処理、ソフトウエア・ブレーク処理または命令ブレーク処理をおこなう。
【００１３】
そして、コンテキストを復元し、割り込みから復帰して終了する。ステップ・ブレークの場合には、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されている場合、ブレーク対象命令が特定用途演算命令である場合にのみ、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認するようにしてもよい。
【００１４】
本発明によれば、特定用途演算命令を有する情報処理装置において、ステップ・ブレーク、ソフトウエア・ブレークまたは命令ブレークの発生時に、特定用途演算命令によるオーバーフローなどの演算例外が発生したことを検出し、例外処理をおこなうことができる。
【００１５】
【発明の実施の形態】
以下に、本発明にかかる情報処理装置および特定用途演算命令の例外処理方法の実施の形態について図面を参照しつつ詳細に説明する。
【００１６】
（実施の形態１）
図１は、本発明の実施の形態１にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。この情報処理装置は、メモリ２１０、メモリ２１０から命令語を読み出す命令読み出し部２２０、命令読み出し部２２０から供給された命令を実行する命令実行部２３０、および割り込み制御部２５０を備えている。また、この情報処理装置は、命令読み出し部２２０、命令実行部２３０および割り込み制御部２５０からの読み書きの制御をおこなうレジスタ制御部２６０を備えている。
【００１７】
メモリ２１０は、外部メモリ、チップ内部に存在するメモリ回路、メモリアクセスのためのバスおよびその制御回路、キャッシュ回路などを含む。前記命令読み出し部２２０は、命令読み出し制御部２２１、プログラム・カウンタ２２２、命令語レジスタ２２３および命令ブレーク検出部２２４を備えている。
【００１８】
前記命令実行部２３０は、命令デコード部２３１、ロード命令実行部２３２、ストア命令実行部２３３、演算命令実行部２３４、その他の命令の実行部２３５、浮動小数点ロード命令実行部２３６、浮動小数点ストア命令実行部２３７、浮動小数点演算命令実行部２３８、特定用途演算命令実行部２３９、特定用途演算ステータス読み書き命令実行部２４０、および動作モード読み書き命令実行部２４１を備えている。
【００１９】
前記割り込み制御部２５０は、通常の割り込み制御部２５１を備えている。前記レジスタ制御部２６０は、ＣＯＮＤ２６１、割り込みから復帰する命令アドレスを保持するレジスタ（以下、「復帰命令アドレス・レジスタ」とする）２６２、プロセッサの動作状態（state）を保持するレジスタ（以下、「動作レジスタ」とする）２６３、割り込み発生前のプロセッサの動作状態（state）を保持するレジスタ（以下、「割り込み発生前動作レジスタ」とする）２６４、汎用レジスタ２６５、浮動小数点レジスタ２６６、特定用途演算ステータス・レジスタ２６７、および動作モード・レジスタ２６８を備えている。
【００２０】
つぎに、命令読み出し部２２０の各部について説明する。前記プログラム・カウンタ２２２は、読み出すべき命令語のアドレスを示す。前記命令読み出し制御部２２１は、プログラム・カウンタ２２２が示す命令語をメモリ２１０から読み出し、それを命令語レジスタ２２３に書き込む。また、命令実行部２３０から分岐先アドレスが供給された場合、または、割り込み制御部２５０から、発生した割り込みもしくは例外に対応する分岐先アドレスが供給された場合、命令読み出し制御部２２１はその分岐先アドレスの値をプログラム・カウンタ２２２に書き込む。それ以外の場合には、つぎの命令語を示すために、命令読み出し制御部２２１はプログラム・カウンタ２２２をインクリメントする。
【００２１】
また、命令読み出し制御部２２１は、命令語を読み出す際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。前記命令語レジスタ２２３は、命令読み出し制御部２２１により読み出された命令語を保持し、それを命令実行部２３０に供給する。
【００２２】
前記命令ブレーク検出部２２４は、命令語の読み出しアドレスが命令ブレークとして成立するか否かを検出する。命令ブレーク検出時には、割り込み制御部２５０に命令ブレークを検出したことを通知する。図２は、命令ブレーク検出部２２４の一例を示すブロック図である。命令ブレーク検出部２２４は、複数組の命令ブレークポイント・レジスタ２２５ａ〜２２５ｄおよび判定器２２６ａ〜２２６ｄと、オア回路２２７を備えている。
【００２３】
また、各命令ブレークポイント・レジスタ２２５ａ〜２２５ｄには、ＡＤＤＲフィールド２２８ａ、Ｅフィールド２２８ｂおよびＶフィールド２２８ｃが設けられている。ＡＤＤＲフィールド２２８ａは、ブレークポイント対象アドレスを保持する。Ｅフィールド２２８ｂは、命令ブレーク動作が有効か否かを示し、たとえば命令ブレーク動作が無効状態のときには「０（ゼロ）」を、また有効状態のときには「１」を保持する。Ｖフィールド２２８ｃは、命令ブレークを検出したか否かを示し、たとえば未検出のときには「０（ゼロ）」を、また検出済みのときには「１」を保持する。
【００２４】
判定器２２６ａ〜２２６ｄは、命令ブレーク条件が成立したか否かの判定をおこなう。各判定器２２６ａ〜２２６ｄは、読み出す命令の命令アドレスと対応する命令ブレークポイント・レジスタ２２５ａ〜２２５ｄのＡＤＤＲフィールド２２８ａの値が一致した場合、対応するＶフィールド２２８ｃの値を「１」に設定するとともに、オア回路２２７に一致信号として「１」を出力する。それによって、オア回路２２７から割り込み制御部２５０に、命令ブレークが成立したことを通知するための割り込み通知が発行される。
【００２５】
命令実行部２３０の各部について説明する。前記命令デコード部２３１は、命令読み出し部２２０から供給された命令を解析し、対応する命令実行部に命令を供給する。すなわち、命令デコード部２３１は、ロード命令をロード命令実行部２３２に、またストア命令をストア命令実行部２３３に、また演算命令および比較命令を演算命令実行部２３４にそれぞれ供給する。
【００２６】
また、命令デコード部２３１は、分岐命令、条件分岐命令、割り込み復帰命令、ブレークポイント命令、動作レジスタ２６３に対する読み出しまたは書き込みの命令、割り込み発生前動作レジスタ２６４に対する読み出しまたは書き込みの命令、ならびに命令ブレーク検出部２２４の命令ブレークポイント・レジスタ２２５ａ〜２２５ｄに対する読み出しまたは書き込みの命令を、その他の命令の実行部２３５に供給する。
【００２７】
また、命令デコード部２３１は、浮動小数点ロード命令を浮動小数点ロード命令実行部２３６に、また浮動小数点ストア命令を浮動小数点ストア命令実行部２３７に、また浮動小数点演算命令および浮動小数点比較命令を浮動小数点演算命令実行部２３８に、また特定用途演算命令を特定用途演算命令実行部２３９にそれぞれ供給する。また、命令デコード部２３１は、特定用途演算ステータス・レジスタ２６７に対する読み出しまたは書き込みの命令を特定用途演算ステータス読み書き命令実行部２４０に、また動作モード・レジスタ２６８に対する読み出しまたは書き込みの命令を動作モード読み書き命令実行部２４１にそれぞれ供給する。
【００２８】
前記特定用途演算ステータス読み書き命令実行部２４０は、命令デコード部２３１から特定用途演算ステータス・レジスタ２６７に対する読み出し命令を受け取ると、特定用途演算ステータス・レジスタ２６７を読み出し、その結果を汎用レジスタ２６５に書き込む。また、特定用途演算ステータス読み書き命令実行部２４０は、命令デコード部２３１から特定用途演算ステータス・レジスタ２６７に対する書き込み命令を受け取ると、汎用レジスタ２６５を読み出し、その結果を特定用途演算ステータス・レジスタ２６７に書き込む。
【００２９】
また、特定用途演算ステータス読み書き命令実行部２４０は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、特定用途演算ステータス読み書き命令実行部２４０は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００３０】
前記動作モード読み書き命令実行部２４１は、命令デコード部２３１から動作モード・レジスタ２６８に対する読み出し命令を受け取ると、動作モード・レジスタ２６８を読み出し、その結果を汎用レジスタ２６５へ書き込む。また、動作モード読み書き命令実行部２４１は、命令デコード部２３１から動作モード・レジスタ２６８に対する書き込み命令を受け取ると、汎用レジスタ２６５を読み出し、その結果を動作モード・レジスタ２６８に書き込む。
【００３１】
また、動作モード読み書き命令実行部２４１は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、動作モード読み書き命令実行部２４１は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００３２】
前記ロード命令実行部２３２は、命令デコード部２３１からロード命令を受け取ると、汎用レジスタ２６５から読み出した値に基づいて実効アドレスを求め、メモリ２１０の、その実効アドレスに対応する領域を読み出し、その結果を汎用レジスタ２６５に書き込む。また、ロード命令実行部２３２は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、ロード命令実行部２３２は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００３３】
前記ストア命令実行部２３３は、命令デコード部２３１からストア命令を受け取ると、汎用レジスタ２６５から読み出した値に基づいて実効アドレスを求めるとともに、汎用レジスタ２６５を読み出し、その結果をメモリ２１０の、その実効アドレスに対応する領域に書き込む。また、ストア命令実行部２３３は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、ストア命令実行部２３３は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００３４】
前記演算命令実行部２３４は、命令デコード部２３１から演算命令を受け取ると、汎用レジスタ２６５から読み出した値に基づいて演算をおこない、その結果を汎用レジスタ２６５に書き込む。また、演算命令実行部２３４は、命令デコード部２３１から比較命令を受け取ると、汎用レジスタ２６５から読み出した値に基づいて比較をおこない、その結果として真または偽を示す値をＣＯＮＤ２６１に書き込む。また、演算命令実行部２３４は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、演算命令実行部２３４は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００３５】
前記その他の命令の実行部２３５は、命令デコード部２３１から分岐命令を受け取ると、分岐先アドレスを命令読み出し部２２０に供給する。また、その他の命令の実行部２３５は、命令デコード部２３１から条件分岐命令を受け取ると、ＣＯＮＤ２６１の値が真を示す値であれば、分岐先アドレスを命令読み出し部２２０に供給する。
【００３６】
また、その他の命令の実行部２３５は、命令デコード部２３１から割り込み復帰命令を受け取ると、割り込み発生前動作レジスタ２６４の値を動作レジスタ２６３へ書き込むとともに、復帰命令アドレス・レジスタ２６２を読み出し、その結果を分岐先アドレスとして命令読み出し部２２０に供給する。また、その他の命令の実行部２３５は、命令デコード部２３１からブレークポイント命令を受け取ると、割り込み制御部２５０にソフトウエア・ブレークが成立したことを通知する。
【００３７】
また、その他の命令の実行部２３５は、命令デコード部２３１から動作レジスタ２６３、割り込み発生前動作レジスタ２６４または命令ブレークポイント・レジスタ２２５ａ〜２２５ｄに対する読み出し命令を受け取ると、それぞれ動作レジスタ２６３、割り込み発生前動作レジスタ２６４または命令ブレーク検出部２２４の命令ブレークポイント・レジスタ２２５ａ〜２２５ｄを読み出し、その結果を汎用レジスタ２６５に書き込む。
【００３８】
また、その他の命令の実行部２３５は、命令デコード部２３１から動作レジスタ２６３、割り込み発生前動作レジスタ２６４または命令ブレークポイント・レジスタ２２５ａ〜２２５ｄに対する書き込み命令を受け取ると、汎用レジスタ２６５を読み出し、その結果をそれぞれ動作レジスタ２６３、割り込み発生前動作レジスタ２６４または命令ブレーク検出部２２４の命令ブレークポイント・レジスタ２２５ａ〜２２５ｄに書き込む。
【００３９】
また、その他の命令の実行部２３５は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、その他の命令の実行部２３５は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００４０】
前記浮動小数点ロード命令実行部２３６は、命令デコード部２３１から浮動小数点ロード命令を受け取ると、汎用レジスタ２６５から読み出した値に基づいて実効アドレスを求め、メモリ２１０の、その実効アドレスに対応する領域を読み出し、その結果を浮動小数点レジスタ２６６に書き込む。また、浮動小数点ロード命令実行部２３６は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、浮動小数点ロード命令実行部２３６は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００４１】
前記浮動小数点ストア命令実行部２３７は、命令デコード部２３１から浮動小数点ストア命令を受け取ると、汎用レジスタ２６５から読み出した値に基づいて実効アドレスを求めるとともに、浮動小数点レジスタ２６６を読み出し、その結果をメモリ２１０の、その実効アドレスに対応する領域に書き込む。また、浮動小数点ストア命令実行部２３７は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、浮動小数点ストア命令実行部２３７は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００４２】
前記浮動小数点演算命令実行部２３８は、命令デコード部２３１から浮動小数点演算命令を受け取ると、浮動小数点レジスタ２６６から読み出した値に基づいて演算をおこない、その結果を浮動小数点レジスタ２６６に書き込む。また、浮動小数点演算命令実行部２３８は、命令デコード部２３１から浮動小数点比較命令を受け取ると、浮動小数点レジスタ２６６から読み出した値に基づいて比較をおこない、その結果として真または偽を示す値をＣＯＮＤ２６１に書き込む。また、浮動小数点演算命令実行部２３８は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、浮動小数点演算命令実行部２３８は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００４３】
前記特定用途演算命令実行部２３９は、命令デコード部２３１から特定用途演算命令を受け取ると、浮動小数点レジスタ２６６から読み出した値に基づいて演算をおこない、その結果を浮動小数点レジスタ２６６に書き込む。また、特定用途演算命令実行部２３９は、演算中にオーバーフローなどの演算例外が発生すると、特定用途演算ステータス・レジスタ２６７に演算例外の発生を示す値を書き込む。また、特定用途演算命令実行部２３９は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００４４】
つぎに、レジスタ制御部２６０の各部について説明する。前記特定用途演算ステータス・レジスタ２６７は、特定用途演算命令の実行中にオーバーフローなどの演算例外が検出されたか否かを示す値を保持する。前記動作モード・レジスタ２６８は、特定用途演算命令の実行中に発生する演算例外の検出をおこなうか否かを示す値を保持する。たとえば、このレジスタ２６８の値は、特定用途演算命令の実行中の演算例外を検出しない場合には「０（ゼロ）」に設定され、一方、特定用途演算命令の実行中の演算例外を検出する場合には「１」に設定される。前記復帰命令アドレス・レジスタ２６２および前記割り込み発生前動作レジスタ２６４は、割り込み発生時に設定される。
【００４５】
図３は、動作レジスタ２６３の一例を示す構成図である。動作レジスタ２６３には、ＳＥフィールド２６９ａおよびＳフィールド２６９ｂが設けられている。ＳＥフィールド２６９ａは、シングルステップ・モードであるか否かを示し、たとえば非シングルステップ・モードのときには「０（ゼロ）」を、またシングルステップ・モードのときには「１」を保持する。したがって、このＳＥフィールド２６９ａの値が「１」のときには、命令を実行した後に、ステップ・ブレーク割り込みが発生する。Ｓフィールド２６９ｂは、スーパーバイザ状態であるか否かを示し、たとえばユーザ状態のときには「０（ゼロ）」を、またスーパーバイザ状態のときには「１」を保持する。
【００４６】
図４は、割り込み発生前動作レジスタ２６４の一例を示す構成図である。割り込み発生前動作レジスタ２６４には、ＳＥフィールド２６９ｃおよびＳフィールド２６９ｄが設けられている。ＳＥフィールド２６９ｃは、割り込み発生前の状態がシングルステップ・モードであったか否かを示し、たとえば割り込み発生前が非シングルステップ・モードのときには「０（ゼロ）」を、また割り込み発生前がシングルステップ・モードのときには「１」を保持する。Ｓフィールド２６９ｄは、割り込み発生前がスーパーバイザ状態であったか否かを示し、たとえば割り込み発生前がユーザ状態のときには「０（ゼロ）」を、また割り込み発生前がスーパーバイザ状態のときには「１」を保持する。
【００４７】
つぎに、前記割り込み制御部２５０の通常の割り込み制御部２５１について説明する。通常の割り込み制御部２５１は、命令読み出し部２２０または命令実行部２３０から割り込み通知を受け取ると、復帰命令アドレス・レジスタ２６２に、割り込みから復帰する命令アドレスを、また割り込み発生前動作レジスタ２６４に割り込み発生前のプロセッサの動作状態（state）を、動作レジスタ２６３に、発生した割り込みに対応するプロセッサの動作状態（state）をそれぞれ書き込む。また、通常の割り込み制御部２５１は、命令読み出し部２２０に、発生した割り込みに対応する分岐先アドレスを供給する。
【００４８】
つぎに、本発明の実施の形態１にかかる特定用途演算命令の例外処理方法について説明する。図５は、本発明の実施の形態１にかかる特定用途演算命令の例外処理方法のうち、ステップ・ブレーク法による割り込み処理プログラムのフローチャートである。図５のフローチャートにおいて、プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ５０１）。そして、動作モード・レジスタ２６８に対する読み出し命令により動作モード・レジスタ２６８の値を読み出し、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されているか否かを確認する（ステップＳ５０２）。
【００４９】
その結果、特定用途演算命令の実行中に発生する演算例外の検出をおこなわない状態に設定されている場合（ステップＳ５０３：特定用途演算例外未検出動作状態）は、ステップ・ブレーク処理をおこなった（ステップＳ５０４）後、コンテキストを復元し（ステップＳ５０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ５０６）、割り込み処理を終了する。したがって、演算例外の検出をおこなう状態に設定されていない場合には、迅速にブレーク処理をおこなって元に戻ることができる。
【００５０】
一方、動作モード・レジスタ２６８を確認した結果、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されている場合（ステップＳ５０３：特定用途演算例外検出動作状態）は、メモリ２１０からブレーク対象命令を読み出し、その命令のコードを解析してその命令が特定用途演算命令であるか否かを確認する（ステップＳ５０７）。その結果、ブレーク対象命令が特定用途演算命令でない場合（ステップＳ５０８：非特定用途演算命令）は、ステップＳ５０４へ移行し、ステップＳ５０４〜Ｓ５０６の処理をおこない、割り込み処理を終了する。したがって、特定用途演算命令でない場合には、迅速にブレーク処理をおこなって元に戻ることができる。
【００５１】
これに対し、ブレーク対象命令が特定用途演算命令である場合（ステップＳ５０８：特定用途演算命令）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ５０９）。その結果、演算例外を未検出であれば（ステップＳ５１０：演算例外未検出）、ステップＳ５０４へ移行し、ステップＳ５０４〜Ｓ５０６の処理をおこない、割り込み処理を終了する。一方、演算例外を検出済みであれば（ステップＳ５１０：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ５１１）後、ステップＳ５０４へ移行し、ステップＳ５０４〜Ｓ５０６の処理をおこない、割り込み処理を終了する。
【００５２】
図６は、本発明の実施の形態１にかかる特定用途演算命令の例外処理方法のうち、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。図６のフローチャートにおいて、プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ６０１）。そして、動作モード・レジスタ２６８に対する読み出し命令により動作モード・レジスタ２６８の値を読み出し、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されているか否かを確認する（ステップＳ６０２）。
【００５３】
その結果、特定用途演算命令の実行中に発生する演算例外の検出をおこなわない状態に設定されている場合（ステップＳ６０３：特定用途演算例外未検出動作状態）は、ソフトウエア・ブレーク処理をおこなった（ステップＳ６０４）後、コンテキストを復元し（ステップＳ６０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ６０６）、割り込み処理を終了する。
【００５４】
一方、動作モード・レジスタ２６８を確認した結果、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されている場合（ステップＳ６０３：特定用途演算例外検出動作状態）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ６０７）。その結果、演算例外を未検出であれば（ステップＳ６０８：演算例外未検出）、ステップＳ６０４へ移行し、ステップＳ６０４〜Ｓ６０６の処理をおこない、割り込み処理を終了する。これに対し、演算例外を検出済みであれば（ステップＳ６０８：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ６０９）後、ステップＳ６０４へ移行し、ステップＳ６０４〜Ｓ６０６の処理をおこない、割り込み処理を終了する。
【００５５】
図７は、本発明の実施の形態１にかかる特定用途演算命令の例外処理方法のうち、命令ブレーク法による割り込み処理プログラムのフローチャートである。図７のフローチャートにおいて、プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ７０１）。そして、動作モード・レジスタ２６８に対する読み出し命令により動作モード・レジスタ２６８の値を読み出し、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されているか否かを確認する（ステップＳ７０２）。
【００５６】
その結果、特定用途演算命令の実行中に発生する演算例外の検出をおこなわない状態に設定されている場合（ステップＳ７０３：特定用途演算例外未検出動作状態）は、命令ブレーク処理をおこなった（ステップＳ７０４）後、コンテキストを復元し（ステップＳ７０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ７０６）、割り込み処理を終了する。
【００５７】
一方、動作モード・レジスタ２６８を確認した結果、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定されている場合（ステップＳ７０３：特定用途演算例外検出動作状態）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ７０７）。その結果、演算例外を未検出であれば（ステップＳ７０８演算例外未検出）、ステップＳ７０４へ移行し、ステップＳ７０４〜Ｓ７０６の処理をおこない、割り込み処理を終了する。これに対し、演算例外を検出済みであれば（ステップＳ７０８：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ７０９）後、ステップＳ７０４へ移行し、ステップＳ７０４〜Ｓ７０６の処理をおこない、割り込み処理を終了する。
【００５８】
上述した実施の形態１によれば、特定用途演算命令を有する情報処理装置において、ステップ・ブレーク、ソフトウエア・ブレーク、命令ブレークのいずれが発生した場合でも、特定用途演算命令によるオーバーフローなどの演算例外が発生したことを検出し、例外処理をおこなうことができる。したがって、デバッグ作業の労力が軽減されるとともに、デバッグ作業に要する時間が短縮されるので、プログラムの開発期間が短縮されるという効果が得られる。
【００５９】
なお、上述した実施の形態１においては、動作モード・レジスタ２６８を設け、このレジスタ２６８に、特定用途演算命令の実行中に発生する演算例外を検出するか否かの情報を保持させているが、これに限らず、メモリ２１０にフラグを設け、そのフラグに同様の情報を保持させるようにしてもよい。
【００６０】
（実施の形態２）
図８は、本発明の実施の形態２にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。この情報処理装置が実施の形態１と異なるのはつぎの４点である。すなわち、第１に、特定用途演算命令の実行中に発生する演算例外の検出をおこなう状態に設定するための命令として特定用途演算例外検出ブレークポイント命令を設けたことである。第２に、実施の形態１の命令実行部２３０の代わりに設けられた命令実行部３３０が特定用途演算例外検出ブレークポイント命令の実行部３３１を有していることである。第３に、その命令実行部３３０には動作モード読み書き命令実行部２４１が設けられていないことである。第４に、実施の形態１のレジスタ制御部２６０の代わりに設けられたレジスタ制御部３６０に、動作モード・レジスタ２６８が設けられていないことである。
【００６１】
その他の構成については、実施の形態１と同様であるため、実施の形態１と同様の構成については、実施の形態１と同じ符号を付して説明を省略する。なお、実施の形態２では、上述した実施の形態１の説明中の動作モード読み書き命令実行部２４１および動作モード・レジスタ２６８に関する説明は適用されないものとする。
【００６２】
前記命令実行部３３０は、命令デコード部２３１、ロード命令実行部２３２、ストア命令実行部２３３、演算命令実行部２３４、その他の命令の実行部２３５、浮動小数点ロード命令実行部２３６、浮動小数点ストア命令実行部２３７、浮動小数点演算命令実行部２３８、特定用途演算命令実行部２３９、特定用途演算ステータス読み書き命令実行部２４０、および特定用途演算例外検出ブレークポイント命令の実行部３３１を備えている。
【００６３】
前記命令デコード部２３１は、実施の形態１で説明した機能のほかに、命令読み出し部２２０から供給された命令を解析した結果、その命令が特定用途演算例外検出ブレークポイント命令である場合には、その命令を特定用途演算例外検出ブレークポイント命令の実行部３３１に供給する機能を有している。
【００６４】
前記特定用途演算例外検出ブレークポイント命令の実行部３３１は、命令デコード部２３１から特定用途演算例外検出ブレークポイント命令を受け取ると、割り込み制御部２５０にソフトウエア・ブレークが成立したことを通知する。また、特定用途演算例外検出ブレークポイント命令の実行部３３１は、命令を実行する際に割り込みを検出すると、割り込み制御部２５０に割り込みを検出したことを通知する。また、特定用途演算例外検出ブレークポイント命令の実行部３３１は、命令を実行した後、シングルステップ・モードであった場合には、割り込み制御部２５０にステップ・ブレークを検出したことを通知する。
【００６５】
前記レジスタ制御部３６０は、ＣＯＮＤ２６１、復帰命令アドレス・レジスタ２６２、動作レジスタ２６３、割り込み発生前動作レジスタ２６４、汎用レジスタ２６５、浮動小数点レジスタ２６６、および特定用途演算ステータス・レジスタ２６７を備えている。
【００６６】
つぎに、本発明の実施の形態２にかかる特定用途演算命令の例外処理方法について説明する。図９は、本発明の実施の形態２にかかる特定用途演算命令の例外処理方法のうち、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。図９のフローチャートにおいて、プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ９０１）。そして、メモリ２１０からソフトウエア・ブレークを発生させた命令を読み出し、その命令のコードを解析してその命令が特定用途演算例外検出ブレークポイント命令であるか否かを確認する（ステップＳ９０２）。
【００６７】
その結果、特定用途演算例外検出ブレークポイント命令でない場合、すなわち単なるブレークポイント命令である場合（ステップＳ９０３：ブレークポイント命令）は、ソフトウエア・ブレーク処理をおこなった（ステップＳ９０４）後、コンテキストを復元し（ステップＳ９０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ９０６）、割り込み処理を終了する。
【００６８】
一方、ソフトウエア・ブレークを発生させた命令が特定用途演算例外検出ブレークポイント命令である場合（ステップＳ９０３：特定用途演算例外検出ブレークポイント命令）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ９０７）。その結果、演算例外を未検出であれば（ステップＳ９０８：演算例外未検出）、ステップＳ９０４へ移行し、ステップＳ９０４〜Ｓ９０６の処理をおこない、割り込み処理を終了する。これに対し、演算例外を検出済みであれば（ステップＳ９０８：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ９０９）後、ステップＳ９０４へ移行し、ステップＳ９０４〜Ｓ９０６の処理をおこない、割り込み処理を終了する。
【００６９】
実施の形態２におけるステップ・ブレーク法および命令ブレーク法による割り込み処理プログラムは、それぞれ図１９および図１７に示す従来のフローチャートと同様であるため、図示および説明を省略する。
【００７０】
上述した実施の形態２によれば、特定用途演算命令を有する情報処理装置において、ソフトウエア・ブレークが発生した場合、特定用途演算命令によるオーバーフローなどの演算例外が発生したことを検出し、例外処理をおこなうことができる。したがって、デバッグ作業の労力が軽減されるとともに、デバッグ作業に要する時間が短縮されるので、プログラムの開発期間が短縮されるという効果が得られる。
【００７１】
なお、上述した実施の形態２においては、特定用途演算例外検出ブレークポイント命令を設け、ソフトウエア・ブレークを発生させた命令が特定用途演算例外検出ブレークポイント命令であるかまたは単なるブレークポイント命令であるかによって、特定用途演算命令の実行中に発生する演算例外の検出をおこなうか否かを設定するようにしているが、これには限らない。たとえば、ブレークポイント命令の命令語に含まれるフィールドが示す値に基づいて、特定用途演算命令の実行中に発生する演算例外の検出をおこなうか否かを設定するようにしてもよい。
【００７２】
（実施の形態３）
図１０は、本発明の実施の形態３にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。この情報処理装置が実施の形態１と異なるのはつぎの３点である。すなわち、第１に、実施の形態１の命令読み出し部２２０の代わりに設けられた命令読み出し部４２０が、命令ブレークポイント・レジスタの構成が異なる命令ブレーク検出部４２４を有していることである。第２に、実施の形態１の命令実行部２３０の代わりに設けられた命令実行部４３０には動作モード読み書き命令実行部２４１が設けられていないことである。第３に、実施の形態１のレジスタ制御部２６０の代わりに実施の形態２と同じ構成のレジスタ制御部３６０が設けられていることである。
【００７３】
その他の構成については、実施の形態１と同様であるため、実施の形態１と同様の構成については、実施の形態１と同じ符号を付して説明を省略する。また、レジスタ制御部３６０についても、実施の形態２の説明と重複するため省略する、実施の形態３では、上述した実施の形態１の説明中の動作モード読み書き命令実行部２４１および動作モード・レジスタ２６８に関する説明は適用されないものとする。
【００７４】
前記命令読み出し部４２０は、命令読み出し制御部２２１、プログラム・カウンタ２２２、命令語レジスタ２２３および命令ブレーク検出部４２４を備えている。図１１は、命令ブレーク検出部４２４の一例を示すブロック図である。この命令ブレーク検出部４２４が実施の形態１と異なるのは、各命令ブレークポイント・レジスタ４２５ａ〜４２５ｄには、ＡＤＤＲフィールド２２８ａ、Ｅフィールド２２８ｂおよびＶフィールド２２８ｃのほかにＭフィールド４２８が設けられていることである。命令ブレーク検出部４２４のその他の構成は実施の形態１の命令ブレーク検出部２２４と同じである。Ｍフィールド４２８は、対応する命令ブレークが、特定用途演算命令の実行中に発生する演算例外の検出をおこなう対象であるか否かを示し、対象でない場合には「０（ゼロ）」を、また対象である場合には「１」を保持する。
【００７５】
前記命令実行部４３０は、命令デコード部２３１、ロード命令実行部２３２、ストア命令実行部２３３、演算命令実行部２３４、その他の命令の実行部２３５、浮動小数点ロード命令実行部２３６、浮動小数点ストア命令実行部２３７、浮動小数点演算命令実行部２３８、特定用途演算命令実行部２３９、および特定用途演算ステータス読み書き命令実行部２４０を備えている。
【００７６】
つぎに、本発明の実施の形態３にかかる特定用途演算命令の例外処理方法について説明する。図１２は、本発明の実施の形態３にかかる特定用途演算命令の例外処理方法のうち、命令ブレーク法による割り込み処理プログラムのフローチャートである。図１２のフローチャートにおいて、プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ１２０１）。そして、命令ブレークポイント・レジスタ４２５ａ〜４２５ｄに対する読み出し命令により対応する命令ブレークポイント・レジスタ４２５ａ〜４２５ｄのＭフィールド４２８の値を読み出し、命令ブレークが、特定用途演算命令の実行中に発生する演算例外の検出をおこなう対象であるか否かを確認する（ステップＳ１２０２）。その結果、命令ブレークが演算例外の検出対象でない場合（ステップＳ１２０３：特定用途演算例外検出動作対象外）は、命令ブレーク処理をおこなった（ステップＳ１２０４）後、コンテキストを復元し（ステップＳ１２０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ１２０６）、割り込み処理を終了する。
【００７７】
一方、対応する命令ブレークが演算例外の検出対象である場合（ステップＳ１２０３：特定用途演算例外検出動作対象）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ１２０７）。その結果、演算例外を未検出であれば（ステップＳ１２０８：演算例外未検出）、ステップＳ１２０４へ移行し、ステップＳ１２０４〜Ｓ１２０６の処理をおこない、割り込み処理を終了する。これに対し、演算例外を検出済みであれば（ステップＳ１２０８：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ１２０９）後、ステップＳ１２０４へ移行し、ステップＳ１２０４〜Ｓ１２０６の処理をおこない、割り込み処理を終了する。
【００７８】
実施の形態３におけるステップ・ブレーク法およびソフトウエア・ブレーク法による割り込み処理プログラムは、それぞれ図１９および図１８に示す従来のフローチャートと同様であるため、図示および説明を省略する。
【００７９】
上述した実施の形態３によれば、特定用途演算命令を有する情報処理装置において、命令ブレークが発生した場合、特定用途演算命令によるオーバーフローなどの演算例外が発生したことを検出し、例外処理をおこなうことができる。したがって、デバッグ作業の労力が軽減されるとともに、デバッグ作業に要する時間が短縮されるので、その結果、プログラムの開発期間が短縮されるという効果が得られる。
【００８０】
（実施の形態４）
図１３は、本発明の実施の形態４にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。この情報処理装置が実施の形態１と異なるのはつぎの３点である。すなわち、第１に、メモリ２１０に特定用途演算例外ブレークポイント・テーブル（図１３では省略）が記憶されていることである。
【００８１】
第２に、実施の形態１の命令実行部２３０の代わりに設けられた命令実行部５３０には動作モード読み書き命令実行部２４１が設けられていないことである。第３に、実施の形態１のレジスタ制御部２６０の代わりに設けられたレジスタ制御部４６０に、動作モード・レジスタ２６８が設けられていないことである。
【００８２】
その他の構成については、実施の形態１と同様であるため、実施の形態１と同様の構成については、実施の形態１と同じ符号を付して説明を省略する。なお、実施の形態４では、上述した実施の形態１の説明中の動作モード読み書き命令実行部２４１および動作モード・レジスタ２６８に関する説明は適用されないものとする。
【００８３】
図１４に、特定用途演算例外ブレークポイント・テーブルの一例を示す。特定用途演算例外ブレークポイント・テーブル２１１は、特定用途演算命令の実行中に発生する演算例外の検出をおこなうブレークポイントを示すテーブルである。特定用途演算例外ブレークポイント・テーブル２１１には、命令ブレークおよびソフトウエア・ブレークによるブレークポイントのうち、特定用途演算命令の実行中に発生した演算例外を検出する対象となるブレークポイントが登録される。特定用途演算例外ブレークポイント・テーブル２１１の命令アドレス欄２１２は、ブレークポイントの命令アドレスを示す欄である。
【００８４】
前記命令実行部５３０は、命令デコード部２３１、ロード命令実行部２３２、ストア命令実行部２３３、演算命令実行部２３４、その他の命令の実行部２３５、浮動小数点ロード命令実行部２３６、浮動小数点ストア命令実行部２３７、浮動小数点演算命令実行部２３８、特定用途演算命令実行部２３９、および特定用途演算ステータス読み書き命令実行部２４０を備えている。
【００８５】
前記レジスタ制御部４６０は、ＣＯＮＤ２６１、復帰命令アドレス・レジスタ２６２、動作レジスタ２６３、割り込み発生前動作レジスタ２６４、汎用レジスタ２６５、浮動小数点レジスタ２６６、および特定演算ステータス・レジスタ２６７を備えている。
【００８６】
つぎに、本発明の実施の形態４にかかる特定用途演算命令の例外処理方法について説明する。図１５は、本発明の実施の形態４にかかる特定用途演算命令の例外処理方法のうち、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。
【００８７】
図１５のフローチャートにおいて、プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ１５０１）。そして、メモリ２１０に記憶された特定用途演算例外ブレークポイント・テーブル２１１にブレークポイントが含まれているか否かを確認する（ステップＳ１５０２）。その結果、特定用途演算例外ブレークポイント・テーブル２１１に含まれていない場合（ステップＳ１５０３：含まれていない）は、ソフトウエア・ブレーク処理をおこなった（ステップＳ１５０４）後、コンテキストを復元し（ステップＳ１５０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ１５０６）、割り込み処理を終了する。
【００８８】
一方、特定用途演算例外ブレークポイント・テーブル２１１にブレークポイントが含まれている場合（ステップＳ１５０３：含まれている）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ１５０７）。その結果、演算例外を未検出であれば（ステップＳ１５０８：演算例外未検出）、ステップＳ１５０４へ移行し、ステップＳ１５０４〜Ｓ１５０６の処理をおこない、割り込み処理を終了する。これに対し、演算例外を検出済みであれば（ステップＳ１５０８：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ１５０９）後、ステップＳ１５０４へ移行し、ステップＳ１５０４〜Ｓ１５０６の処理をおこない、割り込み処理を終了する。
【００８９】
図１６は、本発明の実施の形態４にかかる特定用途演算命令の例外処理方法のうち、命令ブレーク法による割り込み処理プログラムのフローチャートである。プログラムの実行が中断され、割り込み処理プログラムが開始されると、まずコンテキストを退避する（ステップＳ１６０１）。そして、メモリ２１０に記憶された特定用途演算例外ブレークポイント・テーブル２１１にブレークポイントが含まれているか否かを確認する（ステップＳ１６０２）。その結果、特定用途演算例外ブレークポイント・テーブル２１１に含まれていない場合（ステップＳ１６０３：含まれていない）は、命令ブレーク処理をおこなった（ステップＳ１６０４）後、コンテキストを復元し（ステップＳ１６０５）、割り込み復帰命令により割り込みから復帰し（ステップＳ１６０６）、割り込み処理を終了する。
【００９０】
一方、特定用途演算例外ブレークポイント・テーブル２１１にブレークポイントが含まれている場合（ステップＳ１６０３：含まれている）は、特定用途演算ステータス・レジスタ２６７に対する読み出し命令により特定用途演算ステータス・レジスタ２６７の値を読み出し、特定用途演算命令の実行中の演算例外を検出済みであるか否かを確認する（ステップＳ１６０７）。その結果、演算例外を未検出であれば（ステップＳ１６０８：演算例外未検出）、ステップＳ１６０４へ移行し、ステップＳ１６０４〜Ｓ１６０６の処理をおこない、割り込み処理を終了する。これに対し、演算例外を検出済みであれば（ステップＳ１６０８：演算例外検出済）、特定用途演算例外処理をおこなった（ステップＳ１６０９）後、ステップＳ１６０４へ移行し、ステップＳ１６０４〜Ｓ１６０６の処理をおこない、割り込み処理を終了する。
【００９１】
実施の形態４におけるステップ・ブレーク法による割り込み処理プログラムは、図１９に示す従来のフローチャートと同様であるため、図示および説明を省略する。
【００９２】
上述した実施の形態４によれば、特定用途演算命令を有する情報処理装置において、ソフトウエア・ブレークまたは命令ブレークが発生した場合、特定用途演算命令によるオーバーフローなどの演算例外が発生したことを検出し、例外処理をおこなうことができる。したがって、デバッグ作業の労力が軽減されるとともに、デバッグ作業に要する時間が短縮されるので、プログラムの開発期間が短縮されるという効果が得られる。
【００９３】
【発明の効果】
本発明によれば、特定用途演算命令を有する情報処理装置において、ステップ・ブレーク、ソフトウエア・ブレークまたは命令ブレークの発生時に、特定用途演算命令によるオーバーフローなどの演算例外が発生したことを検出し、例外処理をおこなうことができる。したがって、デバッグ作業の労力が軽減されるとともに、デバッグ作業に要する時間が短縮されるので、プログラムの開発期間が短縮されるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の実施の形態１にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態１における命令ブレーク検出部の一例を示すブロック図である。
【図３】本発明の実施の形態１における動作レジスタの一例を示す構成図である。
【図４】本発明の実施の形態１における割り込み発生前動作レジスタの一例を示す構成図である。
【図５】本発明の実施の形態１にかかる特定用途演算命令の例外処理方法のうち、ステップ・ブレーク法による割り込み処理プログラムのフローチャートである。
【図６】本発明の実施の形態１にかかる特定用途演算命令の例外処理方法のうち、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。
【図７】本発明の実施の形態１にかかる特定用途演算命令の例外処理方法のうち、命令ブレーク法による割り込み処理プログラムのフローチャートである。
【図８】本発明の実施の形態２にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。
【図９】本発明の実施の形態２にかかる特定用途演算命令の例外処理方法のうち、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。
【図１０】本発明の実施の形態３にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。
【図１１】本発明の実施の形態３における命令ブレーク検出部の一例を示すブロック図である。
【図１２】本発明の実施の形態３にかかる特定用途演算命令の例外処理方法のうち、命令ブレーク法による割り込み処理プログラムのフローチャートである。
【図１３】本発明の実施の形態４にかかる特定用途演算命令の例外処理方法を適用した情報処理装置の構成を示すブロック図である。
【図１４】本発明の実施の形態４における特定用途演算例外ブレークポイント・テーブルの一例を示す構成図である。
【図１５】本発明の実施の形態４にかかる特定用途演算命令の例外処理方法のうち、ソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。
【図１６】本発明の実施の形態４にかかる特定用途演算命令の例外処理方法のうち、命令ブレーク法による割り込み処理プログラムのフローチャートである。
【図１７】従来の命令ブレーク法による割り込み処理プログラムのフローチャートである。
【図１８】従来のソフトウエア・ブレーク法による割り込み処理プログラムのフローチャートである。
【図１９】従来のステップ・ブレーク法による割り込み処理プログラムのフローチャートである。
【符号の説明】
２１０  メモリ
２１１  演３算例外検出対象のブレークポイントを登録したテーブル（特定用途演算例外ブレークポイント・テーブル）
２４０  特定用途演算ステータス読み書き命令実行部
２４１  動作モード読み書き命令実行部
３３１  特定用途演算例外検出ブレークポイント命令の実行部
２６７  演算例外検出済みであることを記憶したレジスタ（特定用途演算ステータス・レジスタ）
２６８  演算例外検出状態であることを記憶したレジスタ（動作モード・レジスタ）
４２５ａ〜４２５ｄ  演算例外検出対象の命令ブレーク発生アドレスを記憶したレジスタ（命令ブレークポイント・レジスタ）
【図１】
0003866023.tif 000002
【図２】
0003866023.tif 000003
【図３】
0003866023.tif 000004
【図４】
0003866023.tif 000005
【図５】
0003866023.tif 000006
【図６】
0003866023.tif 000007
【図７】
0003866023.tif 000008
【図８】
0003866023.tif 000009
【図９】
0003866023.tif 000010
【図１０】
0003866023.tif 000011
【図１１】
0003866023.tif 000012
【図１２】
0003866023.tif 000013
【図１３】
0003866023.tif 000014
【図１４】
0003866023.tif 000015
【図１５】
0003866023.tif 000016
【図１６】
0003866023.tif 000017
【図１７】
0003866023.tif 000018
【図１８】
0003866023.tif 000019
【図１９】
0003866023.tif 000020