JP3612248B2 - 固定小数点演算回路 - Google Patents
固定小数点演算回路 Download PDFInfo
- Publication number
- JP3612248B2 JP3612248B2 JP26613399A JP26613399A JP3612248B2 JP 3612248 B2 JP3612248 B2 JP 3612248B2 JP 26613399 A JP26613399 A JP 26613399A JP 26613399 A JP26613399 A JP 26613399A JP 3612248 B2 JP3612248 B2 JP 3612248B2
- Authority
- JP
- Japan
- Prior art keywords
- overflow
- circuit
- overflow detection
- arithmetic
- flag
- 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
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
この発明は、オーバーフロー検出回路に関し、詳しくはFFTアルゴリズムなどの演算処理が可能な乗加算演算回路に使用されるオーバーフロー検出回路に関する。
【0002】
【従来の技術】
従来の乗加算演算回路によるアルゴリズムの演算では、乗加算を繰り返す操作の途中でオーバーフローが発生し、それが原因となって精度のよい結果が得られないことがあった。例えば、FFT(高速フーリエ変換)処理は、多くの乗加算の列とビット逆転の操作からなるアルゴリズムであるが、入力データのレベルによっては処理の途中でオーバーフローすることがあり、それが誤った演算結果を出力する原因となることがあった。
【0003】
従来、このような演算については、例えば浮動小数点演算回路であれば、浮動小数点数の指数部、仮数部の位取りを調整することで回避することができる。また、固定小数点演算回路であれば、途中のオーバーフローを見込んだビットマージンをあらかじめ回路に付加しておくか、あるいはオーバーフローを見込んで入力レベルをあらかじめ減衰させておくことで対処することができる。
【0004】
【発明が解決しようとする課題】
ところで、浮動小数点演算回路では固定小数点型演算回路と比較して回路が複雑になり、規模も大きくなるため、ほとんどの演算が固定小数点型演算回路で足りるような場合には、演算装置を固定小数点型演算回路で構成することが望ましい。
【0005】
しかし、固定小数点演算回路の場合、回路規模を小さくすることはできるが、先に説明した前者の方法では付加回路が大きくなってしまうこと、また後者の方法ではすべてのデータの入力レベルを減衰させてしまうため演算精度が悪くなってしまうなどの問題点があった。また、固定小数点型演算回路では、オーバーフローが発生したことを検出するフラグ信号を利用して、途中でオーバーフローが起こると入力データを減衰させてからもう一度演算をやり直すという方法も考えられるが、演算精度が悪くなるうえ、演算毎にフラグの状態を確認しなければならないので処理速度が落ちてしまうという問題点があった。
【0006】
したがって、ほとんどの演算が固定小数点型演算回路で足りるような演算装置であっても、オーバーフロー対策のために浮動小数点演算回路を用いているのが現状であり、このため回路構成が冗長なものとなっていた。
【0007】
この発明の目的は、固定小数点演算回路で十分な演算回路において、回路規模を大きくすることなしに、演算処理を高速、高精度で行うことができ、とくにオーバーフロー発生時の処理速度の無駄を省くことが可能な固定小数点演算回路を提供することにある。
【0008】
【課題を解決するための手段】
上記課題を解決するため、請求項1の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、前記オーバーフロー検出フラグを累積して記憶するフラグ記憶部とを備え、複数の演算列についての演算処理を連続して実行する間に、オーバーフローの発生した演算列のオーバーフロー検出フラグをフラグ記憶部に累積して記憶しておき、すべての演算列について演算処理を終了した後にオーバーフロー検出フラグの確認を一回行い、オーバーフロー検出フラグが確認された演算列があるときは、入力データを減衰させたうえで、前記オーバーフロー検出フラグが確認された演算列から演算処理をやり直すことを特徴とする。
【0009】
上記構成によれば、演算中に発生したオーバーフロー検出フラグを累積しておき、演算終了後にフラグ確認を行うようにしたので、演算ごとにフラグ確認する場合に比べ、フラグ確認に要する処理時間を少なくすることができる。また、オーバーフローが発生した演算の入力データのみを減衰するようにしたため、演算結果の劣化を最小限に止めることができる。
【0010】
請求項2の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、前記オーバーフロー検出フラグを記憶するフラグ記憶部と、前記オーバーフロー検出フラグに基づいて割り込み信号を発生する割り込み信号発生部とを備え、複数の演算列についての演算処理を連続して実行する間に前記割り込み信号が発生したときは、演算処理を中断して所定の割り込み処理を実行することを特徴とする。
【0011】
上記構成によれば、オーバーフロー検出フラグを割り込み信号として利用し、オーバーフローが発生すると同時に割り込み処理へ移行するようにしたので、演算終了後にフラグ確認を行う場合に比べて、処理時間を短縮することができる。
【0012】
請求項3の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、演算時にオーバーフローに近い状態を検出したときはニアリーオーバーフロー検出フラグを出力するニアリーオーバーフロー検出部と、前記オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを記憶するフラグ記憶部とを備え、複数の演算列についての演算処理を連続して実行する間に前記ニアリーオーバーフロー検出フラグが検出されたときは、入力データを減衰させたうえで、前記ニアリーオーバーフロー検出フラグが確認された演算列から演算処理をやり直すことを特徴とする。
【0013】
上記構成によれば、オーバーフローに近い状態をニアリーオーバーフロー検出フラグで検出するようにしたので、オーバーフローが発生する前の時点で入力データを減衰するなどの対策を講じることができるようになり、処理時間を短縮することができる。
【0014】
請求項4の発明においては、入力データに基づいて演算処理を行う演算部と、演算結果を記憶する演算結果記憶部と、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、演算時にオーバーフローに近い状態を検出したときはニアリーオーバーフロー検出フラグを出力するニアリーオーバーフロー検出部と、前記オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを記憶するフラグ記憶部とを備え、複数の演算列についての演算を連続して実行する間に前記オーバーフロー検出フラグ又はニアリーオーバーフロー検出フラグが検出されたときは、演算処理を中断して所定の割り込み処理を実行することを特徴とする。
【0015】
上記構成によれば、オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを割り込み信号として利用し、オーバーフロー又はニアリーオーバーフローが発生すると同時に割り込み処理へ移行するようにしたので、演算終了後にフラグ確認を行う場合に比べて、処理時間を短縮することができる。
【0016】
請求項5の発明においては、請求項1乃至4において、前記演算部は、複数の入力データについてバタフライ演算を行うものであることを特徴とする。
【0017】
上記構成によれば、ある列の演算でニアリーオーバーフローフラグによる割り込みが発生したときに、次の列の演算に入る前に前処理をしてオーバーフローをあらかじめ防ぐような設定をすることにより、演算のやり直しといった無駄な処理時間を省くことができる。
【0018】
【発明の実施の形態】
以下、この発明に係わる演算回路を、固定小数点型乗加算回路に適用した場合の一実施形態を図面を参照しながら詳細に説明する。
【0019】
まず、この実施形態に係わる乗加算回路の全体的な構成を図7を用いて説明する。図7は、この実施形態に係わる乗加算回路の機能的な構成を示すブロック図である。
【0020】
この乗加算回路1は、乗算器2、加算器3、レジスタ4、ラウンド&リミット回路5、セレクタ6、データ格納装置7、フラグレジスタ8及びオーバーフロー検出回路9により構成されている。
【0021】
図7において、乗算時にはデータ格納装置7からデータX、外部からデータYが乗算器2へ入力されて演算処理がなされる。また、加算時には乗算器2から出力されたデータとレジスタ4からのデータが加算器3へ入力されて演算処理がなされる。この演算の結果(データZ)は再びレジスタ4へ格納される。データZのバス幅(内部演算ビット長)は、演算ヘッドマージンを含んでいるため、出力データバス幅よりも長くなっている。ラウンド&リミット回路5のラウンド回路は、データの下桁を四捨五入して切り捨てを行う。またリミット回路は、演算バス幅を出力バス幅に制限するなどの処理を行う。このラウンド&リミット回路5は、演算結果を格納する演算結果レジスタとして機能し、桁あふれしたデータは強制的に正又は負のフルスケールに固定される。このとき、オーバーフロー検出回路9は桁あふれによるオーバーフローを検出して、オーバーフロー検出フラグをフラグレジスタ8へ記憶する。
【0022】
次に、上記のように構成された乗加算回路において、オーバーフロー検出回路の特徴的な構成を実施形態1〜4として説明する。なお、以下の説明においては、複数の演算からなる1つの演算グループを演算列といい、複数の演算列を連続して演算処理する場合を例とする。
【0023】
[実施形態1]
図1は、実施形態1に係わるオーバーフロー検出回路11とその周辺回路の回路構成図である。このオーバーフロー検出回路11は、2入力OR回路12、2入力NAND回路13、2入力OR回路14及び2入力OR回路15から構成されている。
【0024】
2入力OR回路12及び2入力NAND回路13は、演算結果レジスタ10に格納された演算結果のデータのうち、マージンビットと符号ビットとを比較することで、その演算におけるオーバーフローの有無を検出する。オーバーフローが発生している場合は、いずれか一方の回路から“1”が出力される。
【0025】
2入力OR回路14は、2入力OR回路12及び2入力NAND回路13からの出力に基づいてオーバーフロー検出フラグを出力する。2入力OR回路12又は2入力NAND回路13の一方から“1”が出力されたときは、その演算に対応するフラグレジスタ16の所定エリアにオーバーフロー検出フラグとして“1”が書き込まれる。
【0026】
2入力OR回路15は、2入力OR回路14からのオーバーフロー検出フラグを一方の入力とし、またフラグレジスタ16からの出力を他方の入力とするものであり、連続する演算列に対する演算処理の途中でオーバーフローが発生した場合には、それ以降の演算列に対応するフラグレジスタ16にはすべて“1”が書き込まれる。
【0027】
フラグレジスタ16は、2入力OR回路15から出力されたオーバーフロー検出フラグを累積して記憶する。従来のフラグレジスタでは、フラグの値は一つの演算が終了するたびに更新されるが、ここでは各演算ごとのフラグの値が累積して記憶される。
【0028】
次に、上記のように構成されたオーバーフロー検出回路11及びその周辺回路の動作について説明する。
【0029】
乗加算回路1(図7)は、図示しない制御ユニットから与えられた命令に従って必要なデータを読み出し、複数の演算列について1列ごとに連続して演算処理する。オーバーフロー検出回路11では、演算処理の間にオーバーフローが発生すると、その演算列に対応するフラグレジスタ16の所定エリアにオーバーフロー検出フラグを記憶する。このオーバーフロー検出フラグは、オーバーフローが発生するたびに書き込まれ、フラグは累積して記憶される。次に、すべての演算列についての演算処理が終了した後に、前記制御ユニットはフラグレジスタ16を調べ、オーバーフロー検出フラグの有無を確認する。この確認は一連の演算列についての演算処理が終了した後、一回行なわれる。ここで、フラグレジスタ16にオーバーフロー検出フラグがある場合、前記制御ユニットはオーバーフロー検出フラグが確認された演算列の入力データを減衰させたうえで、その演算列の先頭の演算から再び演算処理をやり直す。
【0030】
上記オーバーフロー検出回路11によれば、演算列の演算を終了するたびにフラグの確認を行う必要がなく、すべての演算列についての演算処理が終了した時に一度だけフラグの確認を行えばよいので、処理時間を短縮することができる。例えば、n回の演算列のアルゴリズムがあり、フラグを確認してオーバーフローが起こっていれば再び演算をやりなおすといった処理について見てみると、m回目の演算列(n>m)でオーバーフローが起こった場合に必要な処理ステップ数は、
従来方式:(オーバーフローまでの演算、毎回フラグ確認)+(やり直し演算、毎回フラグ確認)=2m+2nとなり、
実施形態1:(演算一通りと1回のフラグ確認)+(やり直し演算、1回のフラグ確認)=2n+2
となる(ただし、“2”は一回の演算と一回のフラグ確認を示している)。
【0031】
このように、実施形態1では従来方式に比べてフラグ確認の回数を減らすことができるので、m>1であれば処理時間を短縮することができる。また、実施形態1では、従来のオーバーフロー対策の一つである入力データをあらかじめ減衰させておく方法のように、すべての入力データ列に対して前処理を行うのではなく、オーバーフローが発生したデータ列のみに前処理を行っているので、演算精度の悪化を最小限にすることができる。さらに、実施形態1のオーバーフロー検出回路11の構成は、従来のオーバーフロー検出回路に2入力OR回路を付加するだけで済むため、浮動小数点演算回路を用いた場合のように回路規模を大きくすることなしに、演算処理を高速、高精度で実行することができる。
【0032】
[実施形態2]
図2は、実施形態2に係わるオーバーフロー検出回路21とその周辺回路の回路構成図である。図2では、図1と同等部分を同一符号で示している。
【0033】
このオーバーフロー検出回路21には、2入力OR回路14からのオーバーフロー検出フラグを一方の入力とし、また外部より設定される割り込みマスク信号を他方の入力とする2入力AND回路22が設けられている。これにより、2入力OR回路14からのオーバーフロー検出フラグは、2入力AND回路22を通じてプログラムの割り込み信号として出力される。
【0034】
割り込みマスク信号とは、割り込み信号の出力を制御するための信号であり、割り込みの発生を可能とするときは“1”を、また割り込みを発生させたくないときには“0”を入力する。これは、プログラムへの割り込みが頻繁に発生すると演算処理が遅くなることがあるため、外部から割り込みマスク信号を入力することで割り込みの発生を制御できるようにしたものである。割り込みを発生させないように設定した場合は、演算のたびにフラグを確認することでオーバーフローを検出する。また、割り込みを発生させるように設定した場合、図示しない制御ユニットは、演算処理を中断して割り込みルーチンへ移行する。
【0035】
上記のように構成されたオーバーフロー検出回路21では、連続する演算列についての演算処理の間にオーバーフローが発生すると、その演算列に対応するフラグレジスタ16の所定エリアにオーバーフロー検出フラグが記憶されるとともに、図示しない制御ユニットに2入力AND回路22からの割り込み信号が出力される。割り込み信号を受けた前記制御ユニットでは、割り込みルーチンとして、例えば図3に示すように、入力データに1以下の係数をかけてデータを減衰させる処理を行い、このデータをもう一度入力することにより、前記演算列について演算処理のやり直しを実行する。このように、オーバーフローが発生したときにデータを減衰させるような処理を割り込みルーチンとして設定しておくことにより、オーバーフローが起こった場合に、直ちにデータを入力し直すことが可能となる。なお、図3はFFT処理の途中でオーバーフローが発生した場合を示している。
【0036】
上記オーバーフロー検出回路21によれば、オーバーフロー検出フラグそのものが割り込み信号になっているので、各演算列の演算処理が終了するたびにフラグを確認する必要がなく、オーバーフローが発生すると同時に割り込みルーチンへ移行するため、実施形態1の場合に比べてさらに処理時間を短縮することができる。
【0037】
ここで、実施形態1の場合と同様の例で見てみると、m回目の演算列(n>m)でオーバーフローが起こった場合に必要な処理ステップ数は、
従来方式:(オーバーフローまでの演算、毎回フラグ確認)+(やり直し演算、毎回フラグ確認)=2m+2n
実施形態1:(演算一通りと1回のフラグ確認)+(やり直し演算、1回のフラグ確認)=2n+2
実施形態2:(オーバーフローまでの演算)+(やり直し演算)=m+n
となる。
【0038】
このように、実施形態2では従来方式及び実施形態1に比べて、さらに処理時間を短縮することができる。
【0039】
また、実施形態1と同様に、オーバーフローが発生したデータ列のみに前処理を行うため、演算精度の悪化を最小限にすることができる。さらに、実施形態2のオーバーフロー検出回路21の構成は、従来のオーバーフロー検出回路に2入力AND回路を付加するだけで済むため、浮動小数点演算回路を用いた場合のように回路規模を大きくすることがない。したがって、この実施形態2のオーバーフロー検出回路を固定小数点演算回路に内蔵すれば、回路規模を大きくすることなしに、FFT等のアルゴリズムの演算処理を高速、高精度で実行することが可能となる。
【0040】
[実施形態3]
図4は、実施形態3に係わるオーバーフロー検出回路31とその周辺回路の回路構成図である。図4では、図1と同等部分を同一符号で示している。
【0041】
このオーバーフロー検出回路31は、オーバーフロー検出を行う2入力OR回路12及び2入力NAND回路13の出力段に、2入力OR回路32、同33、同34、2入力NAND回路35、2入力OR回路36、同37が設けられている。これらの回路32〜37は、オーバーフローに近い状態(以下、ニアリーオーバーフローという)を検出するための回路である。このニアリーオーバーフローを検出するため、実施形態1及び2のようにマージンビットと符号ビットだけでなく、さらに1ビット下(あるいは数ビット下)のデータを検査対象としている。例えば、符号ビットの1ビット下のデータをニアリーオーバーフローの検査対象とした場合、このビットが“0”のときは桁上がりができるので、次の演算でオーバーフローになる可能性は低いが、このビットが“1”になると桁上がりができないために次の演算でオーバーフローする可能が高くなる。したがって、このビットに“1”が立った時点をニアリーオーバーフローとして検出することにより、オーバーフローが起こりそうな状態を検出することができる。
【0042】
フラグレジスタ16は、2入力OR回路36から出力されたオーバーフロー検出フラグを所定エリアに累積して記憶する。また、2入力OR回路37から出力されたニアリーオーバーフロー検出フラグを所定エリアに累積して記憶する。
【0043】
次に、上記のように構成されたオーバーフロー検出回路31及びその周辺回路の動作について説明する。
【0044】
乗加算回路1(図7)は、図示しない制御ユニットから与えられた命令に従って必要なデータを読み出し、複数の演算列について1列ごとに連続して演算処理を実行する。オーバーフロー検出回路31では、連続する演算列についての演算処理の間にニアリーオーバーフローが発生すると、その演算列に対応するフラグレジスタ16の所定エリアにニアリーオーバーフロー検出フラグを記憶する。また演算処理の間にオーバーフローが発生すると、その演算列に対応するフラグレジスタ16の所定エリアにオーバーフロー検出フラグを記憶する。次に、すべての演算列についての演算処理が終了した後に、前記制御ユニットはニアリーオーバーフロー検出フラグ又はオーバーフロー検出フラグの有無を確認する。
【0045】
ここでフラグが確認されると、前記制御ユニットは演算処理のやり直しの処理を実行することになる。この場合、先に説明した実施形態1のように、オーバーフロー検出フラグが確認されたときは、入力データを減衰させたうえで、その演算列の先頭の演算から再び演算処理をやり直すようにしてもよい。また、ニアリーオーバーフロー検出フラグが確認されたときは、入力データを減衰させたうえで、オーバーフロー検出フラグが確認された演算列ではなく、ニアリーオーバーフロー検出フラグが確認された演算列の先頭の演算から再び演算処理をやり直すようにしてもよい。あるいは、ニアリーオーバーフロー検出フラグが確認されたときに、その演算列が一連の演算列の最後あるいは最後に近い位置にある場合は、入力データを減衰させることなしに、そのまま次の演算列の演算処理に移るようにしてもよい。このように、ニアリーオーバーフロー検出フラグ及びオーバーフロー検出フラグを用いた場合には、やり直し処理の自由度を広げることが可能となる。
【0046】
上記オーバーフロー検出回路31によれば、演算列の演算を終了するたびにフラグの確認を行う必要がなく、すべての演算列についての演算処理が終了した時に一度だけフラグの確認を行えばよいので、処理時間を短縮することができる。とくに、ニアリーオーバーフロー検出フラグを検出するようにした場合には、オーバーフローが発生する前の時点で対策を講じることができるので、さらに処理時間を短縮することができる。例えば、FFT処理は、図5のようにいくつかの列(グループ)で演算(バタフライ演算)するようなアルゴリズムである(データ数が2L個であれば、L列の処理が必要)。この場合、ニアリーオーバーフローの状態を事前に確認できれば、L−n列目の演算がオーバーフローしなくても、その次の列ではオーバーフローする可能性があることがわかるので、その時点で前処理などの対策をあらかじめ立てることができ、演算のやり直しといった無駄な処理時間を省くことができる。
【0047】
さらに、実施形態3のオーバーフロー検出回路31の構成は、従来のオーバーフロー検出回路にいくつかの論理回路を付加するだけで済むため、浮動小数点演算回路を用いた場合のように回路規模を大きくすることなしに、演算処理を高速、高精度で実行することができる。
【0048】
[実施形態4]
図6は、実施形態4に係わるオーバーフロー検出回路41とその周辺回路の回路構成図である。図6では、図1及び図4と同等部分を同一符号で示している。このオーバーフロー検出回路41には、実施形態3のオーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを割り込み信号として出力するための回路として、割り込みマスクレジスタ42、2入力AND回路43及び同44が設けられている。
【0049】
2入力AND回路43は、2入力OR回路32からのオーバーフロー検出フラグを一方の入力とし、また後述する割り込みマスクレジスタ42からの割り込みマスク信号を他方の入力とする。また、2入力AND回路44は、2入力OR回路34からのニアリーオーバーフロー検出フラグを一方の入力とし、また割り込みマスクレジスタ42からの割り込みマスク信号を他方の入力とする。
【0050】
これによると、2入力OR回路32からのオーバーフロー検出フラグ及び2入力OR回路34からのニアリーオーバーフロー検出フラグは、2入力AND回路43及び2入力AND回路44を通じて、それぞれプログラムの割り込み信号として出力される。この結果、オーバーフローあるいはニアリーオーバーフローを演算毎に確認することなく、発生したらすぐに割り込みルーチンへ移行することができる。
【0051】
割り込みマスクレジスタ42は、割り込み信号の出力を制御するためのレジスタであり、割り込みの発生を可能とするときは“1”を、また割り込みを発生させたくないときには“0”を設定する。これは、実施形態2と同様にプログラムへの頻繁な割り込みが予想されるような場合に、あらかじめ外部から割り込みの発生を制御できるようにしたものである。割り込みを発生させないように設定した場合は、演算のたびにフラグを確認することでオーバーフロー又はニアリーオーバーフローを検出する。また、割り込みを発生させるように設定した場合、図示しない制御ユニットは、演算処理を中断して割り込みルーチンへ移行する。
【0052】
上記のように構成されたオーバーフロー検出回路41では、連続する演算列についての演算処理の間にオーバーフロー又はニアリーオーバーフローが発生すると、その演算列に対応するフラグレジスタ16の所定エリアにオーバーフロー検出フラグ又はニアリーオーバーフロー検出フラグが記憶されるとともに、図示しない制御ユニットに2入力AND回路43又は44からの割り込み信号が出力される。割り込み信号を受けた前記制御ユニットでは、割り込みルーチンとして、例えば図3に示すようなデータ減衰の処理を行い、このデータをもう一度入力することにより、前記演算列について演算処理のやり直しを実行する。このように、オーバーフロー又はニアリーオーバーフローが発生したときにデータを減衰させるような処理を割り込みルーチンとして設定しておくことにより、オーバーフロー又はニアリーオーバーフローの発生とともに、直ちにデータを入力し直すことが可能となる。
【0053】
とくに実施形態4においては、オーバーフロー検出フラグとニアリーオーバーフロー検出フラグが独立しているので、それぞれ別の割り込みルーチンを設定したり、あるいは一方だけ割り込みを発生させないように設定するなどの選択が可能となる。例えばFFT処理について見てみると、ある列の演算でニアリーオーバーフローフラグによる割り込みが発生したときに、次の列の演算に入る前に前処理をしてオーバーフローをあらかじめ防ぐような設定をするなどの対策が可能となる。
【0054】
上記オーバーフロー検出回路41によれば、オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグそのものが割り込み信号になっているので、各演算列の演算処理が終了するたびにフラグを確認する必要がなく、オーバーフロー又はニアリーオーバーフローが発生すると同時に、例えば割り込みルーチンへ移行することができるため、実施形態1の場合に比べて処理時間を短縮することができる。
【0055】
【発明の効果】
以上説明したように、この発明に係わる演算回路においては、オーバーフロー検出フラグやニアリーオーバーフロー検出フラグを累積したり、あるいはこれらのフラグを割り込み信号として利用するようにしたので、演算毎にオーバーフローの確認をする従来方式に比べて処理時間を短縮することができる。また、必要なデータ列のみに前処理を行うことが可能となるので、前処理による演算精度の悪化を最小限にすることができる。さらに、これらの構成を簡単な付加回路で実現することができるので、回路規模を大きくすることがなく、設計、製造及びコストの点でも有利となる。
【0056】
したがって、この発明に係わる演算回路では、固定小数点演算回路で十分な演算回路について、回路規模を大きくすることなしに、演算処理を高速、高精度で行うことができる。
【図面の簡単な説明】
【図1】実施形態1に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図2】実施形態2に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図3】FFT処理の途中でオーバーフローが発生した場合の説明図。
【図4】実施形態3に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図5】FFT処理におけるバタフライ演算の説明図。
【図6】実施形態4に係わるオーバーフロー検出回路とその周辺回路の回路構成図。
【図7】実施形態に係わる乗加算回路の機能的な構成を示すブロック図。
【符号の説明】
10 演算結果レジスタ
11、21、31、41 オーバーフロー検出回路
12、14、15、32、33、34、36、37 2入力OR回路
13、35 2入力NAND回路
22、43、44 2入力AND回路
42 割り込みマスクレジスタ
Claims (3)
- 入力データに基づいて演算処理を行う演算部と、
前記演算部による演算結果を記憶する演算結果記憶部と、
前記演算結果に含まれるマージンビットと符号ビットのデータを検査対象とし、演算時にオーバーフローを検出したときはオーバーフロー検出フラグを出力するオーバーフロー検出部と、
前記演算結果に含まれる前記マージンビット及び前記符号ビットに加え、さらに前記符号ビットの少なくとも1ビット下のデータを検査対象とし、演算時にオーバーフローに近い状態を検出したときはニアリーオーバーフロー検出フラグを出力するニアリーオーバーフロー検出部と、
前記オーバーフロー検出フラグ及びニアリーオーバーフロー検出フラグを記憶するフラグ記憶部と、
を備えたことを特徴とする固定小数点演算回路。 - 複数の演算列についての演算処理を連続して実行する間に前記ニアリーオーバーフロー検出フラグが検出されたときは、入力データを減衰させたうえで、前記ニアリーオーバーフロー検出フラグが確認された演算列から演算処理をやり直すことを特徴とする請求項1に記載の固定小数点演算回路。
- 複数の演算列についての演算を連続して実行する間に前記オーバーフロー検出フラグ又はニアリーオーバーフロー検出フラグが検出されたときは、演算処理を中断して所定の割り込み処理を実行することを特徴とする請求項1に記載の固定小数点演算回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26613399A JP3612248B2 (ja) | 1999-09-20 | 1999-09-20 | 固定小数点演算回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26613399A JP3612248B2 (ja) | 1999-09-20 | 1999-09-20 | 固定小数点演算回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001092632A JP2001092632A (ja) | 2001-04-06 |
JP3612248B2 true JP3612248B2 (ja) | 2005-01-19 |
Family
ID=17426793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP26613399A Expired - Fee Related JP3612248B2 (ja) | 1999-09-20 | 1999-09-20 | 固定小数点演算回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3612248B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5100052B2 (ja) | 2006-07-31 | 2012-12-19 | キヤノン株式会社 | 固体撮像素子の駆動回路、方法及び撮像システム |
-
1999
- 1999-09-20 JP JP26613399A patent/JP3612248B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001092632A (ja) | 2001-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1058185A1 (en) | A multiply and accumulate apparatus and a method thereof | |
KR950003200B1 (ko) | 정확한 부동 소숫점 예외를 처리할 수 있는 방법 및 장치 | |
US5596733A (en) | System for exception recovery using a conditional substitution instruction which inserts a replacement result in the destination of the excepting instruction | |
US5257216A (en) | Floating point safe instruction recognition apparatus | |
US6789098B1 (en) | Method, data processing system and computer program for comparing floating point numbers | |
US5341320A (en) | Method for rapidly processing floating-point operations which involve exceptions | |
US20070033152A1 (en) | Digital signal processing device | |
US5481488A (en) | Block floating point mechanism for fast Fourier transform processor | |
US6378067B1 (en) | Exception reporting architecture for SIMD-FP instructions | |
US6947962B2 (en) | Overflow prediction algorithm and logic for high speed arithmetic units | |
JP3612248B2 (ja) | 固定小数点演算回路 | |
US7680874B2 (en) | Adder | |
JP3495173B2 (ja) | 演算処理方法および演算処理装置 | |
US6920547B2 (en) | Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor | |
US7467178B2 (en) | Dual mode arithmetic saturation processing | |
US7191432B2 (en) | High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit | |
US6487576B1 (en) | Zero anticipation method and apparatus | |
JP2903529B2 (ja) | ベクトル演算方式 | |
JP3555881B2 (ja) | 演算回路とそのエラー検出方法 | |
US7406590B2 (en) | Methods and apparatus for early loop bottom detection in digital signal processors | |
JPH06290045A (ja) | 並列演算処理装置の演算エラー検出方式 | |
JP2558799B2 (ja) | 浮動小数点正規化丸め装置 | |
JP4109181B2 (ja) | 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ | |
KR0145893B1 (ko) | 오버플로 방지 장치 | |
JP2021144426A (ja) | プロセッサ及びエラー検出方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040419 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040511 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040712 |
|
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: 20041012 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041022 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081029 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081029 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091029 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101029 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111029 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111029 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121029 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131029 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |