(57)【特許請求の範囲】
【請求項１】
入力データに基づいて演算処理を行う演算部と、
前記演算部による演算結果を記憶する演算結果記憶部と、
前記演算結果に含まれるマージンビットと符号ビットのデータを検査対象とし、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、
前記演算結果に含まれる前記マージンビット及び前記符号ビットに加え、さらに前記符号ビットの少なくとも１ビット下のデータを検査対象とし、演算時にオーバーフローに近い状態を検出したときはニアリーオーバーフロー検出フラグを出力するニアリーオーバーフロー検出部と、
前記オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを記憶するフラグ記憶部と、
を備えたことを特徴とする固定小数点演算回路。
【請求項２】
複数の演算列についての演算処理を連続して実行する間に前記ニアリーオーバーフロー検出フラグが検出されたときは、入力データを減衰させたうえで、前記ニアリーオーバーフロー検出フラグが確認された演算列から演算処理をやり直すことを特徴とする請求項１に記載の固定小数点演算回路。
【請求項３】
複数の演算列についての演算を連続して実行する間に前記オーバーフロー検出フラグ又はニアリーオーバーフロー検出フラグが検出されたときは、演算処理を中断して所定の割り込み処理を実行することを特徴とする請求項１に記載の固定小数点演算回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、オーバーフロー検出回路に関し、詳しくはＦＦＴアルゴリズムなどの演算処理が可能な乗加算演算回路に使用されるオーバーフロー検出回路に関する。
【０００２】
【従来の技術】
従来の乗加算演算回路によるアルゴリズムの演算では、乗加算を繰り返す操作の途中でオーバーフローが発生し、それが原因となって精度のよい結果が得られないことがあった。例えば、ＦＦＴ（高速フーリエ変換）処理は、多くの乗加算の列とビット逆転の操作からなるアルゴリズムであるが、入力データのレベルによっては処理の途中でオーバーフローすることがあり、それが誤った演算結果を出力する原因となることがあった。
【０００３】
従来、このような演算については、例えば浮動小数点演算回路であれば、浮動小数点数の指数部、仮数部の位取りを調整することで回避することができる。また、固定小数点演算回路であれば、途中のオーバーフローを見込んだビットマージンをあらかじめ回路に付加しておくか、あるいはオーバーフローを見込んで入力レベルをあらかじめ減衰させておくことで対処することができる。
【０００４】
【発明が解決しようとする課題】
ところで、浮動小数点演算回路では固定小数点型演算回路と比較して回路が複雑になり、規模も大きくなるため、ほとんどの演算が固定小数点型演算回路で足りるような場合には、演算装置を固定小数点型演算回路で構成することが望ましい。
【０００５】
しかし、固定小数点演算回路の場合、回路規模を小さくすることはできるが、先に説明した前者の方法では付加回路が大きくなってしまうこと、また後者の方法ではすべてのデータの入力レベルを減衰させてしまうため演算精度が悪くなってしまうなどの問題点があった。また、固定小数点型演算回路では、オーバーフローが発生したことを検出するフラグ信号を利用して、途中でオーバーフローが起こると入力データを減衰させてからもう一度演算をやり直すという方法も考えられるが、演算精度が悪くなるうえ、演算毎にフラグの状態を確認しなければならないので処理速度が落ちてしまうという問題点があった。
【０００６】
したがって、ほとんどの演算が固定小数点型演算回路で足りるような演算装置であっても、オーバーフロー対策のために浮動小数点演算回路を用いているのが現状であり、このため回路構成が冗長なものとなっていた。
【０００７】
この発明の目的は、固定小数点演算回路で十分な演算回路において、回路規模を大きくすることなしに、演算処理を高速、高精度で行うことができ、とくにオーバーフロー発生時の処理速度の無駄を省くことが可能な固定小数点演算回路を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するため、請求項１の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、前記オーバーフロー検出フラグを累積して記憶するフラグ記憶部とを備え、複数の演算列についての演算処理を連続して実行する間に、オーバーフローの発生した演算列のオーバーフロー検出フラグをフラグ記憶部に累積して記憶しておき、すべての演算列について演算処理を終了した後にオーバーフロー検出フラグの確認を一回行い、オーバーフロー検出フラグが確認された演算列があるときは、入力データを減衰させたうえで、前記オーバーフロー検出フラグが確認された演算列から演算処理をやり直すことを特徴とする。
【０００９】
上記構成によれば、演算中に発生したオーバーフロー検出フラグを累積しておき、演算終了後にフラグ確認を行うようにしたので、演算ごとにフラグ確認する場合に比べ、フラグ確認に要する処理時間を少なくすることができる。また、オーバーフローが発生した演算の入力データのみを減衰するようにしたため、演算結果の劣化を最小限に止めることができる。
【００１０】
請求項２の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、前記オーバーフロー検出フラグを記憶するフラグ記憶部と、前記オーバーフロー検出フラグに基づいて割り込み信号を発生する割り込み信号発生部とを備え、複数の演算列についての演算処理を連続して実行する間に前記割り込み信号が発生したときは、演算処理を中断して所定の割り込み処理を実行することを特徴とする。
【００１１】
上記構成によれば、オーバーフロー検出フラグを割り込み信号として利用し、オーバーフローが発生すると同時に割り込み処理へ移行するようにしたので、演算終了後にフラグ確認を行う場合に比べて、処理時間を短縮することができる。
【００１２】
請求項３の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、演算時にオーバーフローに近い状態を検出したときはニアリーオーバーフロー検出フラグを出力するニアリーオーバーフロー検出部と、前記オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを記憶するフラグ記憶部とを備え、複数の演算列についての演算処理を連続して実行する間に前記ニアリーオーバーフロー検出フラグが検出されたときは、入力データを減衰させたうえで、前記ニアリーオーバーフロー検出フラグが確認された演算列から演算処理をやり直すことを特徴とする。
【００１３】
上記構成によれば、オーバーフローに近い状態をニアリーオーバーフロー検出フラグで検出するようにしたので、オーバーフローが発生する前の時点で入力データを減衰するなどの対策を講じることができるようになり、処理時間を短縮することができる。
【００１４】
請求項４の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、演算時にオーバーフローに近い状態を検出したときはニアリーオーバーフロー検出フラグを出力するニアリーオーバーフロー検出部と、前記オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを記憶するフラグ記憶部とを備え、複数の演算列についての演算を連続して実行する間に前記オーバーフロー検出フラグ又はニアリーオーバーフロー検出フラグが検出されたときは、演算処理を中断して所定の割り込み処理を実行することを特徴とする。
【００１５】
上記構成によれば、オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを割り込み信号として利用し、オーバーフロー又はニアリーオーバーフローが発生すると同時に割り込み処理へ移行するようにしたので、演算終了後にフラグ確認を行う場合に比べて、処理時間を短縮することができる。
【００１６】
請求項５の発明においては、請求項１乃至４において、前記演算部は、複数の入力データについてバタフライ演算を行うものであることを特徴とする。
【００１７】
上記構成によれば、ある列の演算でニアリーオーバーフローフラグによる割り込みが発生したときに、次の列の演算に入る前に前処理をしてオーバーフローをあらかじめ防ぐような設定をすることにより、演算のやり直しといった無駄な処理時間を省くことができる。
【００１８】
【発明の実施の形態】
以下、この発明に係わる演算回路を、固定小数点型乗加算回路に適用した場合の一実施形態を図面を参照しながら詳細に説明する。
【００１９】
まず、この実施形態に係わる乗加算回路の全体的な構成を図７を用いて説明する。図７は、この実施形態に係わる乗加算回路の機能的な構成を示すブロック図である。
【００２０】
この乗加算回路１は、乗算器２、加算器３、レジスタ４、ラウンド＆リミット回路５、セレクタ６、データ格納装置７、フラグレジスタ８及びオーバーフロー検出回路９により構成されている。
【００２１】
図７において、乗算時にはデータ格納装置７からデータＸ、外部からデータＹが乗算器２へ入力されて演算処理がなされる。また、加算時には乗算器２から出力されたデータとレジスタ４からのデータが加算器３へ入力されて演算処理がなされる。この演算の結果（データＺ）は再びレジスタ４へ格納される。データＺのバス幅（内部演算ビット長）は、演算ヘッドマージンを含んでいるため、出力データバス幅よりも長くなっている。ラウンド＆リミット回路５のラウンド回路は、データの下桁を四捨五入して切り捨てを行う。またリミット回路は、演算バス幅を出力バス幅に制限するなどの処理を行う。このラウンド＆リミット回路５は、演算結果を格納する演算結果レジスタとして機能し、桁あふれしたデータは強制的に正又は負のフルスケールに固定される。このとき、オーバーフロー検出回路９は桁あふれによるオーバーフローを検出して、オーバーフロー検出フラグをフラグレジスタ８へ記憶する。
【００２２】
次に、上記のように構成された乗加算回路において、オーバーフロー検出回路の特徴的な構成を実施形態１〜４として説明する。なお、以下の説明においては、複数の演算からなる１つの演算グループを演算列といい、複数の演算列を連続して演算処理する場合を例とする。
【００２３】
［実施形態１］
図１は、実施形態１に係わるオーバーフロー検出回路１１とその周辺回路の回路構成図である。このオーバーフロー検出回路１１は、２入力ＯＲ回路１２、２入力ＮＡＮＤ回路１３、２入力ＯＲ回路１４及び２入力ＯＲ回路１５から構成されている。
【００２４】
２入力ＯＲ回路１２及び２入力ＮＡＮＤ回路１３は、演算結果レジスタ１０に格納された演算結果のデータのうち、マージンビットと符号ビットとを比較することで、その演算におけるオーバーフローの有無を検出する。オーバーフローが発生している場合は、いずれか一方の回路から“１”が出力される。
【００２５】
２入力ＯＲ回路１４は、２入力ＯＲ回路１２及び２入力ＮＡＮＤ回路１３からの出力に基づいてオーバーフロー検出フラグを出力する。２入力ＯＲ回路１２又は２入力ＮＡＮＤ回路１３の一方から“１”が出力されたときは、その演算に対応するフラグレジスタ１６の所定エリアにオーバーフロー検出フラグとして“１”が書き込まれる。
【００２６】
２入力ＯＲ回路１５は、２入力ＯＲ回路１４からのオーバーフロー検出フラグを一方の入力とし、またフラグレジスタ１６からの出力を他方の入力とするものであり、連続する演算列に対する演算処理の途中でオーバーフローが発生した場合には、それ以降の演算列に対応するフラグレジスタ１６にはすべて“１”が書き込まれる。
【００２７】
フラグレジスタ１６は、２入力ＯＲ回路１５から出力されたオーバーフロー検出フラグを累積して記憶する。従来のフラグレジスタでは、フラグの値は一つの演算が終了するたびに更新されるが、ここでは各演算ごとのフラグの値が累積して記憶される。
【００２８】
次に、上記のように構成されたオーバーフロー検出回路１１及びその周辺回路の動作について説明する。
【００２９】
乗加算回路１（図７）は、図示しない制御ユニットから与えられた命令に従って必要なデータを読み出し、複数の演算列について１列ごとに連続して演算処理する。オーバーフロー検出回路１１では、演算処理の間にオーバーフローが発生すると、その演算列に対応するフラグレジスタ１６の所定エリアにオーバーフロー検出フラグを記憶する。このオーバーフロー検出フラグは、オーバーフローが発生するたびに書き込まれ、フラグは累積して記憶される。次に、すべての演算列についての演算処理が終了した後に、前記制御ユニットはフラグレジスタ１６を調べ、オーバーフロー検出フラグの有無を確認する。この確認は一連の演算列についての演算処理が終了した後、一回行なわれる。ここで、フラグレジスタ１６にオーバーフロー検出フラグがある場合、前記制御ユニットはオーバーフロー検出フラグが確認された演算列の入力データを減衰させたうえで、その演算列の先頭の演算から再び演算処理をやり直す。
【００３０】
上記オーバーフロー検出回路１１によれば、演算列の演算を終了するたびにフラグの確認を行う必要がなく、すべての演算列についての演算処理が終了した時に一度だけフラグの確認を行えばよいので、処理時間を短縮することができる。例えば、ｎ回の演算列のアルゴリズムがあり、フラグを確認してオーバーフローが起こっていれば再び演算をやりなおすといった処理について見てみると、ｍ回目の演算列（ｎ＞ｍ）でオーバーフローが起こった場合に必要な処理ステップ数は、
従来方式：（オーバーフローまでの演算、毎回フラグ確認）＋（やり直し演算、毎回フラグ確認）＝２ｍ＋２ｎとなり、
実施形態１：（演算一通りと１回のフラグ確認）＋（やり直し演算、１回のフラグ確認）＝２ｎ＋２
となる（ただし、“２”は一回の演算と一回のフラグ確認を示している）。
【００３１】
このように、実施形態１では従来方式に比べてフラグ確認の回数を減らすことができるので、ｍ＞１であれば処理時間を短縮することができる。また、実施形態１では、従来のオーバーフロー対策の一つである入力データをあらかじめ減衰させておく方法のように、すべての入力データ列に対して前処理を行うのではなく、オーバーフローが発生したデータ列のみに前処理を行っているので、演算精度の悪化を最小限にすることができる。さらに、実施形態１のオーバーフロー検出回路１１の構成は、従来のオーバーフロー検出回路に２入力ＯＲ回路を付加するだけで済むため、浮動小数点演算回路を用いた場合のように回路規模を大きくすることなしに、演算処理を高速、高精度で実行することができる。
【００３２】
［実施形態２］
図２は、実施形態２に係わるオーバーフロー検出回路２１とその周辺回路の回路構成図である。図２では、図１と同等部分を同一符号で示している。
【００３３】
このオーバーフロー検出回路２１には、２入力ＯＲ回路１４からのオーバーフロー検出フラグを一方の入力とし、また外部より設定される割り込みマスク信号を他方の入力とする２入力ＡＮＤ回路２２が設けられている。これにより、２入力ＯＲ回路１４からのオーバーフロー検出フラグは、２入力ＡＮＤ回路２２を通じてプログラムの割り込み信号として出力される。
【００３４】
割り込みマスク信号とは、割り込み信号の出力を制御するための信号であり、割り込みの発生を可能とするときは“１”を、また割り込みを発生させたくないときには“０”を入力する。これは、プログラムへの割り込みが頻繁に発生すると演算処理が遅くなることがあるため、外部から割り込みマスク信号を入力することで割り込みの発生を制御できるようにしたものである。割り込みを発生させないように設定した場合は、演算のたびにフラグを確認することでオーバーフローを検出する。また、割り込みを発生させるように設定した場合、図示しない制御ユニットは、演算処理を中断して割り込みルーチンへ移行する。
【００３５】
上記のように構成されたオーバーフロー検出回路２１では、連続する演算列についての演算処理の間にオーバーフローが発生すると、その演算列に対応するフラグレジスタ１６の所定エリアにオーバーフロー検出フラグが記憶されるとともに、図示しない制御ユニットに２入力ＡＮＤ回路２２からの割り込み信号が出力される。割り込み信号を受けた前記制御ユニットでは、割り込みルーチンとして、例えば図３に示すように、入力データに１以下の係数をかけてデータを減衰させる処理を行い、このデータをもう一度入力することにより、前記演算列について演算処理のやり直しを実行する。このように、オーバーフローが発生したときにデータを減衰させるような処理を割り込みルーチンとして設定しておくことにより、オーバーフローが起こった場合に、直ちにデータを入力し直すことが可能となる。なお、図３はＦＦＴ処理の途中でオーバーフローが発生した場合を示している。
【００３６】
上記オーバーフロー検出回路２１によれば、オーバーフロー検出フラグそのものが割り込み信号になっているので、各演算列の演算処理が終了するたびにフラグを確認する必要がなく、オーバーフローが発生すると同時に割り込みルーチンへ移行するため、実施形態１の場合に比べてさらに処理時間を短縮することができる。
【００３７】
ここで、実施形態１の場合と同様の例で見てみると、ｍ回目の演算列（ｎ＞ｍ）でオーバーフローが起こった場合に必要な処理ステップ数は、
従来方式：（オーバーフローまでの演算、毎回フラグ確認）＋（やり直し演算、毎回フラグ確認）＝２ｍ＋２ｎ
実施形態１：（演算一通りと１回のフラグ確認）＋（やり直し演算、１回のフラグ確認）＝２ｎ＋２
実施形態２：（オーバーフローまでの演算）＋（やり直し演算）＝ｍ＋ｎ
となる。
【００３８】
このように、実施形態２では従来方式及び実施形態１に比べて、さらに処理時間を短縮することができる。
【００３９】
また、実施形態１と同様に、オーバーフローが発生したデータ列のみに前処理を行うため、演算精度の悪化を最小限にすることができる。さらに、実施形態２のオーバーフロー検出回路２１の構成は、従来のオーバーフロー検出回路に２入力ＡＮＤ回路を付加するだけで済むため、浮動小数点演算回路を用いた場合のように回路規模を大きくすることがない。したがって、この実施形態２のオーバーフロー検出回路を固定小数点演算回路に内蔵すれば、回路規模を大きくすることなしに、ＦＦＴ等のアルゴリズムの演算処理を高速、高精度で実行することが可能となる。
【００４０】
［実施形態３］
図４は、実施形態３に係わるオーバーフロー検出回路３１とその周辺回路の回路構成図である。図４では、図１と同等部分を同一符号で示している。
【００４１】
このオーバーフロー検出回路３１は、オーバーフロー検出を行う２入力ＯＲ回路１２及び２入力ＮＡＮＤ回路１３の出力段に、２入力ＯＲ回路３２、同３３、同３４、２入力ＮＡＮＤ回路３５、２入力ＯＲ回路３６、同３７が設けられている。これらの回路３２〜３７は、オーバーフローに近い状態（以下、ニアリーオーバーフローという）を検出するための回路である。このニアリーオーバーフローを検出するため、実施形態１及び２のようにマージンビットと符号ビットだけでなく、さらに１ビット下（あるいは数ビット下）のデータを検査対象としている。例えば、符号ビットの１ビット下のデータをニアリーオーバーフローの検査対象とした場合、このビットが“０”のときは桁上がりができるので、次の演算でオーバーフローになる可能性は低いが、このビットが“１”になると桁上がりができないために次の演算でオーバーフローする可能が高くなる。したがって、このビットに“１”が立った時点をニアリーオーバーフローとして検出することにより、オーバーフローが起こりそうな状態を検出することができる。
【００４２】
フラグレジスタ１６は、２入力ＯＲ回路３６から出力されたオーバーフロー検出フラグを所定エリアに累積して記憶する。また、２入力ＯＲ回路３７から出力されたニアリーオーバーフロー検出フラグを所定エリアに累積して記憶する。
【００４３】
次に、上記のように構成されたオーバーフロー検出回路３１及びその周辺回路の動作について説明する。
【００４４】
乗加算回路１（図７）は、図示しない制御ユニットから与えられた命令に従って必要なデータを読み出し、複数の演算列について１列ごとに連続して演算処理を実行する。オーバーフロー検出回路３１では、連続する演算列についての演算処理の間にニアリーオーバーフローが発生すると、その演算列に対応するフラグレジスタ１６の所定エリアにニアリーオーバーフロー検出フラグを記憶する。また演算処理の間にオーバーフローが発生すると、その演算列に対応するフラグレジスタ１６の所定エリアにオーバーフロー検出フラグを記憶する。次に、すべての演算列についての演算処理が終了した後に、前記制御ユニットはニアリーオーバーフロー検出フラグ又はオーバーフロー検出フラグの有無を確認する。
【００４５】
ここでフラグが確認されると、前記制御ユニットは演算処理のやり直しの処理を実行することになる。この場合、先に説明した実施形態１のように、オーバーフロー検出フラグが確認されたときは、入力データを減衰させたうえで、その演算列の先頭の演算から再び演算処理をやり直すようにしてもよい。また、ニアリーオーバーフロー検出フラグが確認されたときは、入力データを減衰させたうえで、オーバーフロー検出フラグが確認された演算列ではなく、ニアリーオーバーフロー検出フラグが確認された演算列の先頭の演算から再び演算処理をやり直すようにしてもよい。あるいは、ニアリーオーバーフロー検出フラグが確認されたときに、その演算列が一連の演算列の最後あるいは最後に近い位置にある場合は、入力データを減衰させることなしに、そのまま次の演算列の演算処理に移るようにしてもよい。このように、ニアリーオーバーフロー検出フラグ及びオーバーフロー検出フラグを用いた場合には、やり直し処理の自由度を広げることが可能となる。
【００４６】
上記オーバーフロー検出回路３１によれば、演算列の演算を終了するたびにフラグの確認を行う必要がなく、すべての演算列についての演算処理が終了した時に一度だけフラグの確認を行えばよいので、処理時間を短縮することができる。とくに、ニアリーオーバーフロー検出フラグを検出するようにした場合には、オーバーフローが発生する前の時点で対策を講じることができるので、さらに処理時間を短縮することができる。例えば、ＦＦＴ処理は、図５のようにいくつかの列（グループ）で演算（バタフライ演算）するようなアルゴリズムである（データ数が２Ｌ個であれば、Ｌ列の処理が必要）。この場合、ニアリーオーバーフローの状態を事前に確認できれば、Ｌ−ｎ列目の演算がオーバーフローしなくても、その次の列ではオーバーフローする可能性があることがわかるので、その時点で前処理などの対策をあらかじめ立てることができ、演算のやり直しといった無駄な処理時間を省くことができる。
【００４７】
さらに、実施形態３のオーバーフロー検出回路３１の構成は、従来のオーバーフロー検出回路にいくつかの論理回路を付加するだけで済むため、浮動小数点演算回路を用いた場合のように回路規模を大きくすることなしに、演算処理を高速、高精度で実行することができる。
【００４８】
［実施形態４］
図６は、実施形態４に係わるオーバーフロー検出回路４１とその周辺回路の回路構成図である。図６では、図１及び図４と同等部分を同一符号で示している。このオーバーフロー検出回路４１には、実施形態３のオーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを割り込み信号として出力するための回路として、割り込みマスクレジスタ４２、２入力ＡＮＤ回路４３及び同４４が設けられている。
【００４９】
２入力ＡＮＤ回路４３は、２入力ＯＲ回路３２からのオーバーフロー検出フラグを一方の入力とし、また後述する割り込みマスクレジスタ４２からの割り込みマスク信号を他方の入力とする。また、２入力ＡＮＤ回路４４は、２入力ＯＲ回路３４からのニアリーオーバーフロー検出フラグを一方の入力とし、また割り込みマスクレジスタ４２からの割り込みマスク信号を他方の入力とする。
【００５０】
これによると、２入力ＯＲ回路３２からのオーバーフロー検出フラグ及び２入力ＯＲ回路３４からのニアリーオーバーフロー検出フラグは、２入力ＡＮＤ回路４３及び２入力ＡＮＤ回路４４を通じて、それぞれプログラムの割り込み信号として出力される。この結果、オーバーフローあるいはニアリーオーバーフローを演算毎に確認することなく、発生したらすぐに割り込みルーチンへ移行することができる。
【００５１】
割り込みマスクレジスタ４２は、割り込み信号の出力を制御するためのレジスタであり、割り込みの発生を可能とするときは“１”を、また割り込みを発生させたくないときには“０”を設定する。これは、実施形態２と同様にプログラムへの頻繁な割り込みが予想されるような場合に、あらかじめ外部から割り込みの発生を制御できるようにしたものである。割り込みを発生させないように設定した場合は、演算のたびにフラグを確認することでオーバーフロー又はニアリーオーバーフローを検出する。また、割り込みを発生させるように設定した場合、図示しない制御ユニットは、演算処理を中断して割り込みルーチンへ移行する。
【００５２】
上記のように構成されたオーバーフロー検出回路４１では、連続する演算列についての演算処理の間にオーバーフロー又はニアリーオーバーフローが発生すると、その演算列に対応するフラグレジスタ１６の所定エリアにオーバーフロー検出フラグ又はニアリーオーバーフロー検出フラグが記憶されるとともに、図示しない制御ユニットに２入力ＡＮＤ回路４３又は４４からの割り込み信号が出力される。割り込み信号を受けた前記制御ユニットでは、割り込みルーチンとして、例えば図３に示すようなデータ減衰の処理を行い、このデータをもう一度入力することにより、前記演算列について演算処理のやり直しを実行する。このように、オーバーフロー又はニアリーオーバーフローが発生したときにデータを減衰させるような処理を割り込みルーチンとして設定しておくことにより、オーバーフロー又はニアリーオーバーフローの発生とともに、直ちにデータを入力し直すことが可能となる。
【００５３】
とくに実施形態４においては、オーバーフロー検出フラグとニアリーオーバーフロー検出フラグが独立しているので、それぞれ別の割り込みルーチンを設定したり、あるいは一方だけ割り込みを発生させないように設定するなどの選択が可能となる。例えばＦＦＴ処理について見てみると、ある列の演算でニアリーオーバーフローフラグによる割り込みが発生したときに、次の列の演算に入る前に前処理をしてオーバーフローをあらかじめ防ぐような設定をするなどの対策が可能となる。
【００５４】
上記オーバーフロー検出回路４１によれば、オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグそのものが割り込み信号になっているので、各演算列の演算処理が終了するたびにフラグを確認する必要がなく、オーバーフロー又はニアリーオーバーフローが発生すると同時に、例えば割り込みルーチンへ移行することができるため、実施形態１の場合に比べて処理時間を短縮することができる。
【００５５】
【発明の効果】
以上説明したように、この発明に係わる演算回路においては、オーバーフロー検出フラグやニアリーオーバーフロー検出フラグを累積したり、あるいはこれらのフラグを割り込み信号として利用するようにしたので、演算毎にオーバーフローの確認をする従来方式に比べて処理時間を短縮することができる。また、必要なデータ列のみに前処理を行うことが可能となるので、前処理による演算精度の悪化を最小限にすることができる。さらに、これらの構成を簡単な付加回路で実現することができるので、回路規模を大きくすることがなく、設計、製造及びコストの点でも有利となる。
【００５６】
したがって、この発明に係わる演算回路では、固定小数点演算回路で十分な演算回路について、回路規模を大きくすることなしに、演算処理を高速、高精度で行うことができる。
【図面の簡単な説明】
【図１】実施形態１に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図２】実施形態２に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図３】ＦＦＴ処理の途中でオーバーフローが発生した場合の説明図。
【図４】実施形態３に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図５】ＦＦＴ処理におけるバタフライ演算の説明図。
【図６】実施形態４に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図７】実施形態に係わる乗加算回路の機能的な構成を示すブロック図。
【符号の説明】
１０  演算結果レジスタ
１１、２１、３１、４１  オーバーフロー検出回路
１２、１４、１５、３２、３３、３４、３６、３７  ２入力ＯＲ回路
１３、３５  ２入力ＮＡＮＤ回路
２２、４３、４４  ２入力ＡＮＤ回路
４２  割り込みマスクレジスタ
【図１】
0003612248.tif 000002
【図２】
0003612248.tif 000003
【図３】
0003612248.tif 000004
【図４】
0003612248.tif 000005
【図５】
0003612248.tif 000006
【図６】
0003612248.tif 000007
【図７】
0003612248.tif 000008