(57)【特許請求の範囲】
【請求項１】
特定用途に特化した演算機能を持つ命令を有する計算機であって、
演算例外を検出したことを示す演算例外検出フラグと、
前記演算例外検出フラグに保持されている値に基づいて設定される条件コード・レジスタと、
特定用途に特化した演算機能を持つ命令の実行時に演算例外を検出すると前記演算例外検出フラグを有効状態に設定する特定用途演算命令実行部と、
前記演算例外検出フラグに保持されている値に基づいて条件コード・レジスタの設定をおこなうフラグ制御部と、
割り込みを発生させるトラップ命令の実行時に、前記条件コード・レジスタに保持されている値と命令フィールドにより示される値とに基づいて割り込みが発生するか否かを決定し、割り込みが発生する場合に、割込制御部に、特定用途演算命令の演算例外による割り込みが発生することを通知する分岐・割込復帰命令制御部と、
割り込みが発生することの通知を受け取ると、割り込み発生に関する制御をおこなう割込制御部と、
を具備することを特徴とする計算機。
【請求項２】
特定用途に特化した演算機能を持つ命令を有する計算機の計算方法であって、
前記計算機が
演算例外を検出したことを示す演算例外検出フラグと、
前記演算例外検出フラグに保持されている値に基づいて設定される条件コード・レジスタと、
を具備し、
特定用途に特化した演算機能を持つ命令の実行時に演算例外を検出すると前記演算例外検出フラグを有効状態に設定する第１の工程と、
前記演算例外検出フラグに保持されている値に基づいて条件コード・レジスタの設定をおこなう第２の工程と、
割り込みを発生させるトラップ命令の実行時に、前記条件コード・レジスタに保持されている値と命令フィールドにより示される値とに基づいて割り込みが発生するか否かを決定し、割り込みが発生する場合に、特定用途演算命令の演算例外による割り込みが発生することを通知する第３の工程と、
割り込みが発生することの通知を受け取ると、割り込み発生に関する制御をおこなう第４の工程と、
を含んだことを特徴とする計算機の計算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、特定用途に特化した演算機能を持つ命令を有する計算機およびその計算機の計算方法に関し、特にその特定用途に特化した演算命令の実行中に発生した演算例外による割り込み発生の制御に関する。
【０００２】
特定分野のアプリケーションでは、その用途に特化した特殊な演算処理が存在することがある。その場合、演算処理を効率よくおこなうため、特定用途に特化した演算機能を持つ命令（以下、特定用途演算命令とする）を搭載した計算機が使用される。このような計算機において、特定用途演算命令を実行した際にオーバーフローなどの演算例外が発生する場合があるため、このような演算例外がプログラム上のどこで発生したかを検出する必要がある。
【０００３】
【従来の技術】
従来、プログラム順序を保証して演算例外を検出するため、ある演算命令において例外による制御依存が発生するか否かの判定がおこなわれる。そして、その演算命令が例外による制御依存を有する場合には、その演算命令の実行が完了した後に後続の命令の実行が開始される。一方、例外による制御依存のない演算命令の場合には、すぐに後続の命令の実行が開始される。
【０００４】
図３は、特定用途演算命令を搭載した従来の計算機の構成を示すブロック図である。この計算機は、チップ内外のメモリやバスやキャッシュ回路を有するメモリ１０１、命令読出制御部１２１とプログラム・カウンタ１２２と命令語レジスタ１２３を有する命令読出部１０２、復帰命令アドレスレジスタ１３１と割込発生前動作レジスタ１３２と動作レジスタ１３３と汎用レジスタ１３４を有するレジスタ制御部１０３、通常の割込制御部１４１を有する割込制御部１０４、および命令実行部１０５を備えている。
【０００５】
命令実行部１０５は、命令デコード部１５１、ロード・ストア命令実行部１５２、演算命令実行部１５３、特定用途演算命令実行部１５４、分岐・割込復帰命令制御部１５６、スコアボード１５７、ロード・ストア命令発行制御部１５８、演算命令発行制御部１５９、分岐・割込復帰命令発行制御部１６０および特定用途演算命令発行制御部１６２を備えている。
【０００６】
図３に示す構成の計算機において、特定用途演算命令の演算例外による割り込みは以下のようにしておこなわれる。特定用途演算命令発行制御部１６２は、特定用途演算命令の実行開始前に、スコアボード１５７のフラグの情報と、命令デコード部１５１から供給された特定用途演算命令とに基づいて制御依存の有無を判定する。その判定結果に基づいて、特定用途演算命令発行制御部１６２は特定用途演算命令実行部１５４に、特定用途演算命令が実行可能であるか否かを通知する。
【０００７】
特定用途演算命令実行部１５４は、特定用途演算命令が実行可能であれば、ただちにその命令を実行する。特定用途演算命令が実行不可能であれば、特定用途演算命令実行部１５４は、特定用途演算命令発行制御部１６２から実行可能の通知を受け取るまで待機する。各命令実行部１５２，１５３，１５４は、命令実行時に演算例外を検出すると、割込制御部１０４に割り込み発生を通知し、割り込みを発生させる。
【０００８】
図４は、特定用途演算命令を搭載した従来の計算機の他の構成を示すブロック図である。この計算機は、図３に示す構成の計算機に、条件コード・レジスタ１７１を追加した構成となっている。条件コード・レジスタ１７１は、演算命令実行部１５３または特定用途演算命令実行部１５４からそれぞれの演算命令実行後に通知される条件コードを保持する。また、図４に示す構成の計算機では、その条件コード・レジスタ７１に保持されている値と命令フィールドにより示される値とに基づいて例外を発生させるか否かを決定するトラップ命令が設けられている。
【０００９】
演算命令実行部１５３および特定用途演算命令実行部１５４は、命令実行完了後、条件コード・レジスタ１７１に命令実行結果に対応する値をセットする。分岐・割込復帰命令制御部１５６は、命令デコード部１５１からトラップ命令が供給されると、条件コード・レジスタ１７１に保持されている値と命令フィールドにより示される値とに基づいて、割り込みを発生させるか否かの決定をおこなう。割り込みを発生させる場合には、分岐・割込復帰命令制御部１５６は割込制御部１０４に、割り込みを発生させることを通知する。
【００１０】
図４に示す構成の計算機において、特定用途演算命令の演算例外による割り込みは以下のようにしておこなわれる。特定用途演算命令発行制御部１６２は、特定用途演算命令の実行開始前に、スコアボード１５７のフラグの情報と、命令デコード部１５１から供給された特定用途演算命令とに基づいて制御依存の有無を判定する。その判定結果に基づいて、特定用途演算命令発行制御部１６２は特定用途演算命令実行部１５４に、特定用途演算命令が実行可能であるか否かを通知する。
【００１１】
特定用途演算命令実行部１５４は、特定用途演算命令が実行可能であれば、ただちにその命令を実行する。特定用途演算命令が実行不可能であれば、特定用途演算命令実行部１５４は、特定用途演算命令発行制御部１６２から実行可能の通知を受け取るまで待機する。特定用途演算命令実行部１５４は、命令を実行した場合、その実行完了後、条件コード・レジスタ１７１に命令実行結果に対応する値をセットする。
【００１２】
分岐・割込復帰命令制御部１５６は、トラップ命令実行時に条件コード・レジスタ１７１の値と命令フィールドの値とに基づいて割り込みを発生させるか否かを判定する。割り込みを発生させる場合、分岐・割込復帰命令制御部１５６は、割込制御部１０４に割り込み発生を通知し、割り込みを発生させる。
【００１３】
【発明が解決しようとする課題】
しかしながら、上述した従来の計算機では、特定用途演算命令に対して例外による制御依存が発生するか否かを調べる必要があるため、特定用途演算命令発行制御回路が各特定用途演算命令実行部ごとに必要である。そのため、特定用途演算命令の数が多くなると回路規模が増大するという問題点があった。
【００１４】
本発明は、上記問題点に鑑みてなされたものであって、特定用途演算命令を有する計算機において、特定用途演算命令の数が多くても回路規模の増大を最小限に抑えることができる計算機を提供することを目的とする。また、本発明の他の目的は、回路規模の増大を抑えつつ特定用途演算命令の数を増やすことができる計算機を提供することである。
【００１５】
【課題を解決するための手段】
上記目的を達成するため、本発明にかかる計算機は、演算例外検出フラグとフラグ制御部を有する。特定用途演算命令実行部は、特定用途演算命令の実行時に演算例外を検出したときに演算例外検出フラグを有効状態に設定するようになっている。フラグ制御部は、割り込みを発生させるトラップ命令の実行時に、演算例外検出フラグが有効状態に設定されていれば、特定用途演算命令の演算例外による割り込みが発生することを割込制御部に通知するようになっている。
【００１６】
この発明によれば、演算例外検出フラグは、特定用途演算命令実行部が特定用途演算命令実行時に演算例外を検出すると、有効状態に設定される。特定用途演算命令の演算例外があるか否かの確認が必要な場合には、トラップ命令が実行される。その際、演算例外検出フラグが有効状態に設定されていれば、フラグ制御部から割込制御部に、割り込みが発生することが通知される。それによって割り込みが発生する。
【００１７】
つぎの発明にかかる計算機は、演算例外検出フラグと条件コード・レジスタとフラグ制御部を有する構成となっていてもよい。この構成では、フラグ制御部は、演算例外検出フラグに保持されている値に基づいて条件コード・レジスタの設定をおこなうようになっている。分岐・割込復帰命令制御部は、条件コード・レジスタに保持されている値と命令フィールドにより示される値とに基づいて、割り込みを発生させるトラップ命令の実行時に割り込みが発生するか否かの決定をおこなうようになっている。
【００１８】
この発明によれば、演算例外検出フラグは、特定用途演算命令実行部が特定用途演算命令実行時に演算例外を検出すると、有効状態に設定される。条件コード・レジスタは、フラグ制御部により、演算例外検出フラグの値に基づいて設定される。特定用途演算命令の演算例外があるか否かの確認が必要な場合には、トラップ命令が実行される。その際、分岐・割込復帰命令制御部により、命令フィールドの値と条件コード・レジスタの値とに基づいて割り込みが発生するか否かが決定される。割り込みが発生する場合、分岐・割込復帰命令制御部から割込制御部に、割り込みが発生することが通知される。それによって割り込みが発生する。
【００１９】
【発明の実施の形態】
以下に、本発明にかかる特定用途向け演算命令を有する計算機およびその計算機の計算方法の実施の形態について図面を参照しつつ詳細に説明する。
【００２０】
（実施の形態１）
図１は、実施の形態１の計算機の構成を示すブロック図である。この計算機は、メモリ１、命令読出部２、レジスタ制御部３、割込制御部４および命令実行部５を備えている。メモリ１は、外部メモリ、チップ内部に存在するメモリ回路、メモリアクセスのためのバスおよびその制御回路、キャッシュ回路などを含む。
【００２１】
命令読出部２は、メモリ１から読み出した命令語を命令実行部５へ供給する。命令読出部２は命令読出制御部２１、プログラム・カウンタ２２および命令語レジスタ２３を備えている。前記レジスタ制御部３は、命令読出部２、割込制御部４および命令実行部５からの読み書きの制御をおこなう。レジスタ制御部３は復帰命令アドレスレジスタ３１、割込発生前動作レジスタ３２、動作レジスタ３３および汎用レジスタ３４を備えている。前記割込制御部４は割り込み発生通知に基づいて割り込みを発生する。割込制御部４は通常の割込制御部４１を備えている。
【００２２】
前記命令実行部５は、命令読出部２から供給された命令を実行する。命令実行部５は命令デコード部５１、ロード・ストア命令実行部５２、演算命令実行部５３、特定用途演算命令実行部５４およびフラグ制御部５５を備えている。また、命令実行部５は分岐・割込復帰命令制御部５６、スコアボード５７、ロード・ストア命令発行制御部５８、演算命令発行制御部５９、分岐・割込復帰命令発行制御部６０および演算例外検出フラグ６１を備えている。
【００２３】
命令読出部２の各部について説明する。前記プログラム・カウンタ２２は、読み出した命令語のアドレスを示す。前記命令語レジスタ２３は、読み出した命令語を保持し、それを命令実行部５に供給する。前記命令読出制御部２１は、プログラム・カウンタ２２が示す命令語をメモリ１から読み出し、それを命令語レジスタ２３に書き込む。また、命令読出制御部２１は、次命令を示すためにプログラム・カウンタ２２をインクリメントする。
【００２４】
ただし、命令読出制御部２１は、命令実行部５から分岐先アドレスが供給された場合、その分岐先アドレスの値をプログラム・カウンタ２２に書き込む。あるいは、割込制御部４から割り込みまたは例外に対応する分岐先アドレスが供給された場合、命令読出制御部２１はその分岐先アドレスの値をプログラム・カウンタ２２に書き込む。なお、命令読出制御部２１は、命令語を読み出す際に割り込みを検出した場合には、割込制御部４に割り込みを検出したことを通知する。
【００２５】
つぎに、命令実行部５の各部について説明する。前記命令デコード部５１は、命令読出部２より供給された命令を解析する。供給された命令がロード命令またはストア命令である場合、命令デコード部５１はそのロード命令またはストア命令をロード・ストア命令実行部５２とロード・ストア命令発行制御部５８に供給する。演算命令の場合には、命令デコード部５１はその演算命令を演算命令実行部５３と演算命令発行制御部５９に供給する。
【００２６】
また、命令デコード部５１は、特定用途演算命令が供給された場合、その特定用途演算命令を特定用途演算命令実行部５４に供給する。演算例外検出フラグに対する無効化、読み出しまたは書き込みの命令の場合には、命令デコード部５１はその命令をフラグ制御部５５に供給する。分岐命令または割込復帰命令の場合には、命令デコード部５１はその分岐命令または割込命令の実行に必要な情報を分岐・割込復帰命令制御部５６と分岐・割込復帰命令発行制御部６０に供給する。
【００２７】
前記ロード・ストア命令実行部５２は、命令デコード部５１からロード命令が供給されると、ロード・ストア命令発行制御部５８からその命令が有効または無効であるという情報を受け取る。ロード命令が有効である場合、ロード・ストア命令実行部５２は、汎用レジスタ３４から読み出した値に基づいて実効アドレスを求める。そして、ロード・ストア命令実行部５２は、メモリ１の、その実効アドレスに対応する領域を読み出し、その結果を汎用レジスタ３４に書き込む。
【００２８】
また、ロード・ストア命令実行部５２は、命令デコード部５１からストア命令が供給されると、汎用レジスタ３４から読み出した値に基づいて実効アドレスを求める。そして、ロード・ストア命令実行部５２は、汎用レジスタ３４を読み出し、その結果を、メモリ１の、求めた実効アドレスに対応する領域に書き込む。
【００２９】
また、ロード・ストア命令実行部５２は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。なお、ロード・ストア命令実行部５２は、命令を実行する際に割り込みを検出した場合には、割り込みを検出したことを割込制御部４に通知する。
【００３０】
前記演算命令実行部５３は、命令デコード部５１から演算命令が供給されると、演算命令発行制御部５９からその命令が有効または無効であるという情報を受け取る。その演算命令が有効である場合、演算命令実行部５３は、汎用レジスタ３４から読み出した値に基づいて演算をおこない、その結果を汎用レジスタ３４に書き込む。
【００３１】
また、演算命令実行部５３は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。なお、演算命令実行部５３は、命令を実行する際に割り込みを検出した場合には、割り込みを検出したことを割込制御部４に通知する。
【００３２】
前記特定用途演算命令実行部５４は特定用途演算命令の実行部である。特定用途演算命令実行部５４は、命令デコード部５１から特定用途演算命令が供給されると、その命令を開始する前に、スコアボード５７に対して命令実行時に使用するレジスタおよび演算器のフラグを使用中状態にする。そして、特定用途演算命令実行部５４は、汎用レジスタ３４から読み出した値に基づいて特定用途演算をおこない、その結果を汎用レジスタ３４に書き込む。
【００３３】
また、特定用途演算命令実行部５４は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。また、特定用途演算命令実行部５４は、特定用途演算の実行時に演算例外を検出した際に、演算例外検出フラグ６１を有効状態にする。なお、特定用途演算命令実行部５４は、命令を実行する際に割り込みを検出した場合には、割り込みを検出したことを割込制御部４に通知する。
【００３４】
前記フラグ制御部５５は、演算例外検出フラグ６１の制御をおこなう。フラグ制御部５５は、命令デコード部５１から演算例外検出フラグ無効化命令が供給されると、演算例外検出フラグ６１を無効状態にする。また、フラグ制御部５５は、命令デコード部５１から演算例外検出フラグ読み出し命令を受け取ると、演算例外検出フラグ６１の値を読み出す。また、フラグ制御部５５は、命令デコード部５１から演算例外検出フラグ書き込み命令を受け取ると、演算例外検出フラグ６１に値を書きこむ。
【００３５】
さらに、フラグ制御部５５は、演算例外検出フラグ６１が有効状態に設定されているときに、割り込みを発生させるトラップ命令を実行する。フラグ制御部５５は、トラップ命令実行時に演算例外検出フラグ６１の値を読み出す。フラグ制御部５５は、特定用途演算命令の演算例外による割り込みが発生する際に、割込制御部４に割り込みの発生を通知する。
【００３６】
前記分岐・割込復帰命令制御部５６は、その他の命令を実行する。分岐・割込復帰命令制御部５６は、命令デコード部５１から分岐命令が供給されると、分岐・割込復帰命令発行制御部６０からその命令が有効または無効であるという情報を受け取る。分岐命令が有効である場合、分岐・割込復帰命令制御部５６は分岐先アドレスを命令読出部２に供給する。
【００３７】
分岐・割込復帰命令制御部５６は、命令デコード部５１から割込復帰命令が供給されると、割込発生前動作レジスタ３２の値を動作レジスタ３３に書き込む。また、分岐・割込復帰命令制御部５６は、復帰命令アドレスレジスタ３１を読み出し、その結果を分岐先アドレスとして命令読出部２に供給する。また、分岐・割込復帰命令制御部５６は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。
【００３８】
前記スコアボード５７は、各レジスタ番号が使用中か否かを示すフラグ、および複数サイクルの占有を必要とする演算器が使用中か否かを示すフラグを保持するレジスタである。これらのフラグが未使用状態であれば、命令の実行が可能であることを意味する。また、フラグが使用中状態であれば、命令の実行が不可能であり、既に実行中の命令が完了するのを待つ必要があることを意味する。
【００３９】
前記ロード・ストア命令発行制御部５８は、命令デコード部５１からロード命令またはストア命令を受け取ると、スコアボード５７の各フラグを読み取る。その結果に基づいて、ロード・ストア命令発行制御部５８は命令実行可能か否かをロード・ストア命令実行部５２に通知するとともに、スコアボード５７の、命令実行時に必要となるレジスタおよび演算器のフラグを使用中状態にする。
【００４０】
前記演算命令発行制御部５９は、命令デコード部５１から演算命令を受け取ると、スコアボード５７の各フラグを読み取る。その結果に基づいて、演算命令発行制御部５９は命令実行可能か否かを演算命令実行部５３に通知するとともに、スコアボード５７の、命令実行時に必要となるレジスタおよび演算器のフラグを使用中状態にする。
【００４１】
前記分岐・割込復帰命令発行制御部６０は、命令デコード部５１から分岐命令または割込復帰命令を受け取ると、スコアボード５７の各フラグを読み取る。その結果に基づいて、分岐・割込復帰命令発行制御部６０は命令実行可能か否かを分岐・割込復帰命令制御部５６に通知するとともに、スコアボード５７の、命令実行時に必要となるレジスタおよび演算器のフラグを使用中状態にする。
【００４２】
前記演算例外検出フラグ６１は、特定用途演算命令を実行時の演算例外の有無を示すフラグである。演算例外検出フラグ６１は、特定用途演算命令の演算例外が未検出である場合には、無効状態となる。一方、特定用途演算命令の演算例外が検出済みである場合には、演算例外検出フラグ６１は有効状態となる。
【００４３】
つぎに、レジスタ制御部３の各部について説明する。前記復帰命令アドレスレジスタ３１は、割り込みから復帰する命令アドレスを保持するレジスタである。前記割込発生前動作レジスタ３２は、割り込み発生前のプロセッサの動作状態を保持するレジスタである。復帰命令アドレスレジスタ３１および割込発生前動作レジスタ３２は割り込み発生時に設定される。前記動作レジスタ３３は、プロセッサの動作状態を保持するレジスタである。
【００４４】
割込制御部４において、通常の割込制御部４１は、命令読出部２または命令実行部５から受け取った割り込み通知に基づいて、復帰命令アドレスレジスタ３１に、割り込みから復帰する命令アドレスを書き込む。また、通常の割込制御部４１は、割込発生前動作レジスタ３２に、割り込み発生前のプロセッサの動作状態を書き込む。また、通常の割込制御部４１は、動作レジスタ３３に、発生した割り込みに対応するプロセッサの動作状態を書き込む。また、通常の割込制御部４１は、命令読出部２に、発生した割り込みに対応する分岐先アドレスを供給する。
【００４５】
つぎに、実施の形態１の計算機において、特定用途演算命令の演算例外による割り込みは以下のようにしておこなわれる。特定用途演算命令実行部５４は、特定用途演算命令実行時に演算例外を検出すると、演算例外検出フラグ６１を有効状態にする。特定用途演算命令の演算例外があるか否かの確認が必要な場合には、トラップ命令が実行される。フラグ制御部５５は、トラップ命令実行時に演算例外検出フラグ６１を参照する。その結果、演算例外検出フラグ６１が有効状態に設定されている場合には、フラグ制御部５５は、割込制御部４に割り込みが発生することを通知し、割り込みを発生させる。なお、実施の形態１の計算機において、その他の動作は従来通りであるため、説明を省略する。
【００４６】
実施の形態１によれば、特定用途演算命令実行時に演算例外が検出されると、演算例外検出フラグ６１が有効状態に設定される。特定用途演算命令の演算例外があるか否かの確認が必要な場合、トラップ命令が実行され、その際、演算例外検出フラグ６１が有効状態に設定されていれば、割り込みが発生する。したがって、従来のように、個々の特定用途演算命令に対して、それぞれの特定用途演算命令の演算例外による制御依存が発生する可能性があるか否かを確認するための特定用途演算命令発行制御回路を設ける必要がないので、特定用途演算命令の数が多くても回路規模の増大を最小限に抑えることができる。また、回路規模の増大を抑えつつ特定用途演算命令の数を増やすことができる。
【００４７】
また、実施の形態１によれば、特定用途演算命令実行時に演算例外が検出されたことによって、演算例外検出フラグ６１が有効状態に設定されても、トラップ命令が実行されない限り、逐一、特定用途演算命令の演算例外による制御依存が発生する可能性があるか否かを確認する必要がないので、従来よりも処理速度が向上するという効果が得られる。
【００４８】
（実施の形態２）
図２は、実施の形態２の計算機の構成を示すブロック図である。実施の形態２の計算機が実施の形態１と異なるのは、命令実行部５に代えて命令実行部７を有していることである。命令実行部７は条件コード・レジスタ７１を有する。実施の形態２では、その条件コード・レジスタ７１に保持されている値と命令フィールドにより示される値とに基づいて例外を発生させるか否かを決定するトラップ命令が設けられている。
【００４９】
また、命令実行部７は、演算命令実行部５３、特定用途演算命令実行部５４、フラグ制御部５５および分岐・割込復帰命令制御部５６に代えて、それぞれ演算命令実行部７３、特定用途演算命令実行部７４、フラグ制御部７５および分岐・割込復帰命令制御部７６を有する。その他の構成は実施の形態１と同じであるため実施の形態１と同一の符号を付して説明を省略し、異なる構成についてのみ以下に説明する。
【００５０】
条件コード・レジスタ７１は、演算命令実行後に演算命令実行部７３から通知される条件コードを保持する。また、条件コード・レジスタ７１は、条件コード・レジスタ設定命令実行時にフラグ制御部７５から通知される条件コードを保持する。
【００５１】
前記演算命令実行部７３は、命令デコード部５１から演算命令が供給されると、演算命令発行制御部５９からその命令が有効または無効であるという情報を受け取る。その演算命令が有効である場合、演算命令実行部７３は、汎用レジスタ３４から読み出した値に基づいて演算をおこない、その結果を汎用レジスタ３４に書き込む。
【００５２】
また、演算命令実行部７３は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。また、演算命令実行部７３は、命令実行完了後、条件コード・レジスタ７１に命令実行結果に対応する値を設定する。
【００５３】
前記特定用途演算命令実行部７４は特定用途演算命令の実行部である。特定用途演算命令実行部７４は、命令デコード部５１から特定用途演算命令が供給されると、命令実行可能ならばその命令を開始する前に、スコアボード５７に対して命令実行時に使用するレジスタおよび演算器のフラグをセットする。そして、特定用途演算命令実行部７４は、汎用レジスタ３４から読み出した値に基づいて特定用途演算をおこない、その結果を汎用レジスタ３４に書き込む。
【００５４】
また、特定用途演算命令実行部７４は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。また、特定用途演算命令実行部７４は、特定用途演算の実行時に演算例外を検出した際に、演算例外検出フラグ６１を有効状態にする。なお、特定用途演算命令実行部７４は、命令を実行する際に割り込みを検出した場合には、割り込みを検出したことを割込制御部４に通知する。
【００５５】
前記フラグ制御部７５は、演算例外検出フラグ６１の制御をおこなう。フラグ制御部７５は、命令デコード部５１から演算例外検出フラグ無効化命令が供給されると、演算例外検出フラグ６１を無効状態にする。また、フラグ制御部７５は、命令デコード部５１から演算例外検出フラグ読み出し命令を受け取ると、演算例外検出フラグ６１の値を読み出す。
【００５６】
また、フラグ制御部７５は、命令デコード部５１から演算例外検出フラグ書き込み命令を受け取ると、演算例外検出フラグ６１に値を書きこむ。さらに、フラグ制御部７５は、命令デコード部５１から条件コード・レジスタ設定命令が供給されると、演算例外検出フラグ６１から通知される値に基づいて条件コード・レジスタ７１に条件コードを通知する。
【００５７】
前記分岐・割込復帰命令制御部７６は、その他の命令を実行する。分岐・割込復帰命令制御部７６は、命令デコード部５１から分岐命令が供給されると、分岐・割込復帰命令発行制御部６０からその命令が有効または無効であるという情報を受け取る。分岐命令が有効である場合、分岐・割込復帰命令制御部７６は分岐先アドレスを命令読出部２に供給する。
【００５８】
分岐・割込復帰命令制御部７６は、命令デコード部５１から割込復帰命令が供給されると、割込発生前動作レジスタ３２の値を動作レジスタ３３に書き込む。また、分岐・割込復帰命令制御部７６は、復帰命令アドレスレジスタ３１を読み出し、その結果を分岐先アドレスとして命令読出部２に供給する。
【００５９】
また、分岐・割込復帰命令制御部７６は、命令デコード部５１からトラップ命令が供給されると、条件コード・レジスタ７１に保持されている値と命令フィールドにより示される値とに基づいて、割り込みを発生させるか否かの決定をおこなう。割り込みを発生させる場合には、分岐・割込復帰命令制御部７６は割込制御部４に、割り込みを発生させることを通知する。また、分岐・割込復帰命令制御部７６は、命令実行完了後、スコアボード５７に対して、命令実行完了に伴って使用可能となるレジスタおよび演算器のフラグを未使用状態にする。
【００６０】
つぎに、実施の形態２の計算機において、特定用途演算命令の演算例外による割り込みは以下のようにしておこなわれる。特定用途演算命令実行部７４は、特定用途演算命令実行時に演算例外を検出すると、演算例外検出フラグ６１を有効状態にする。フラグ制御部７５は、条件コード・レジスタ設定命令を実行する際に、演算例外検出フラグ６１の値に基づいて条件コード・レジスタ７１を設定する。
【００６１】
特定用途演算命令の演算例外があるか否かの確認が必要な場合には、トラップ命令が実行される。分岐・割込復帰命令制御部７６は、トラップ命令実行時に条件コード・レジスタ７１の値を参照し、命令フィールドの値と条件コード・レジスタ７１の値とに基づいて割り込みが発生するか否かを決定する。割り込みが発生する場合には、分岐・割込復帰命令制御部７６は、割込制御部４に割り込み発生を通知し、割り込みを発生させる。なお、実施の形態２の計算機において、その他の動作は従来通りであるため、説明を省略する。
【００６２】
実施の形態２によれば、特定用途演算命令実行時に演算例外が検出されると、演算例外検出フラグ６１が有効状態に設定される。その演算例外検出フラグの値に基づいて条件コード・レジスタが設定される。特定用途演算命令の演算例外があるか否かの確認が必要な場合、トラップ命令が実行され、その際、命令フィールドの値と条件コード・レジスタの値とに基づいて割り込みが発生する。したがって、従来のように、個々の特定用途演算命令ごとに特定用途演算命令発行制御回路を設ける必要がないので、特定用途演算命令の数が多くても回路規模の増大を最小限に抑えることができる。また、回路規模の増大を抑えつつ特定用途演算命令の数を増やすことができる。
【００６３】
ここで、上述した実施の形態１または実施の形態２の各計算機は、特に限定しないが、たとえばコンピュータに接続されるプリンタの画像処理をおこなうための計算機に適用される。また、ＪＰＥＧやＭＰＥＧなどの画像データの圧縮や再生などをおこなうための計算機に適用される。
【００６４】
以上において本発明は、上述した各実施の形態に限らず、種々設計変更可能であることはいうまでもない。
【００６５】
（付記１）  特定用途に特化した演算機能を持つ命令を有する計算機であって、
演算例外を検出したことを示す演算例外検出フラグと、
特定用途に特化した演算機能を持つ命令の実行時に演算例外を検出すると前記演算例外検出フラグを有効状態に設定する特定用途演算命令実行部と、
割り込みを発生させるトラップ命令の実行時に、前記演算例外検出フラグが有効状態に設定されている場合、割込制御部に、特定用途演算命令の演算例外による割り込みが発生することを通知するフラグ制御部と、
割り込みが発生することの通知を受け取ると、割り込み発生に関する制御をおこなう割込制御部と、
を具備することを特徴とする計算機。
【００６６】
（付記２）  特定用途に特化した演算機能を持つ命令を有する計算機であって、
演算例外を検出したことを示す演算例外検出フラグと、
前記演算例外検出フラグに保持されている値に基づいて設定される条件コード・レジスタと、
特定用途に特化した演算機能を持つ命令の実行時に演算例外を検出すると前記演算例外検出フラグを有効状態に設定する特定用途演算命令実行部と、
前記演算例外検出フラグに保持されている値に基づいて条件コード・レジスタの設定をおこなうフラグ制御部と、
割り込みを発生させるトラップ命令の実行時に、前記条件コード・レジスタに保持されている値と命令フィールドにより示される値とに基づいて割り込みが発生するか否かを決定し、割り込みが発生する場合に、割込制御部に、特定用途演算命令の演算例外による割り込みが発生することを通知する分岐・割込復帰命令制御部と、
割り込みが発生することの通知を受け取ると、割り込み発生に関する制御をおこなう割込制御部と、
を具備することを特徴とする計算機。
【００６７】
（付記３）  前記フラグ制御部は、演算例外検出フラグ無効化命令を受け取ると、前記演算例外検出フラグを無効化することを特徴とする付記１または２に記載の計算機。
【００６８】
（付記４）  前記フラグ制御部は、演算例外検出フラグ読み出し命令を受け取ると、前記演算例外検出フラグの値を読み出すことを特徴とする付記１〜３のいずれか一つに記載の計算機。
【００６９】
（付記５）  前記フラグ制御部は、演算例外検出フラグ書き込み命令を受け取ると、前記演算例外検出フラグに値を書き込むことを特徴とする付記１〜４のいずれか一つに記載の計算機。
【００７０】
（付記６）  特定用途に特化した演算機能を持つ命令として、画像処理に特化した演算機能を持つ命令を有することを特徴とする付記１〜５のいずれか一つに記載の計算機。
【００７１】
（付記７）  特定用途に特化した演算機能を持つ命令を有する計算機の計算方法であって、
特定用途に特化した演算機能を持つ命令の実行時に演算例外を検出すると、演算例外を検出したことを示す演算例外検出フラグを有効状態に設定する第１の工程と、
割り込みを発生させるトラップ命令の実行時に、前記演算例外検出フラグが有効状態に設定されている場合、特定用途演算命令の演算例外による割り込みが発生することを通知する第２の工程と、
割り込みが発生することの通知を受け取ると、割り込み発生に関する制御をおこなう第３の工程と、
を含んだことを特徴とする計算機の計算方法。
【００７２】
【発明の効果】
本発明によれば、特定用途演算命令実行時に演算例外が検出されると、演算例外検出フラグが有効状態に設定され、その状態で、特定用途演算命令の演算例外の有無を確認するトラップ命令が実行されると割り込みが発生する。したがって、従来のように、個々の特定用途演算命令に対して、それぞれの特定用途演算命令の演算例外による制御依存が発生する可能性があるか否かを確認するための特定用途演算命令発行制御回路を設ける必要がないので、特定用途演算命令の数が多くても回路規模の増大を最小限に抑えることができる。また、回路規模の増大を抑えつつ特定用途演算命令の数を増やすことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１にかかる計算機の構成を示すブロック図である。
【図２】本発明の実施の形態２にかかる計算機の構成を示すブロック図である。
【図３】従来の計算機の構成を示すブロック図である。
【図４】従来の計算機の他の構成を示すブロック図である。
【符号の説明】
４１  割込制御部
５４，７４  特定用途演算命令実行部
５５，７５  フラグ制御部
６１  演算例外検出フラグ
７１  条件コード・レジスタ
７６  分岐・割込復帰命令制御部
【図１】
0003715505.tif 000002
【図２】
0003715505.tif 000003
【図３】
0003715505.tif 000004
【図４】
0003715505.tif 000005