(57)【要約】【課題】本発明は、従来の浮動小数点積和演算を可能としながら、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)を並列処理する事ができる浮動小数点演算装置を提供する。【解決手段】本発明は、２つの浮動小数点A、Bに対する加算(A+B)及び減算(A-B)を並列実行するために、従来の浮動小数点積和演算器(FMA)に加え、浮動小数点加算器を一つ備え、加算(A+B)または減算(A-B)のうちで、いずれかが2ビット以上の左シフト正規化が必要であるかを判定する手段を有し、加算(A+B)または減算(A-B)のうちで、2ビット以上の左シフト正規化が必要でない方の正規化論理を省く事で、性能を２倍に向上し回路規模は２倍未満に抑える。【選択図】図１
2009157671.tif 000002
【特許請求の範囲】
【請求項１】
動小数点積和演算器を一つ有する演算装置において、浮動小数点加算器を一つ備える事で、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)を並列処理する事を特徴とする浮動小数点演算装置。
【請求項２】
請求項１の演算装置において、２つの浮動小数点A、Bの加算(A+B)または減算(A-B)のうちで、2ビット以上左シフト正規化が必要でない方の正規化論理を省く事を特徴とする浮動小数点演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)を並列実行する技術に関し、例えば、FFT(高速フーリエ変換)の計算を高速に行うための並列演算処理技術に関する。
【背景技術】
【０００２】
マイクロプロセッサの浮動小数点ユニットの一部として、一般的に、図２のように、FMA(浮動小数点積和演算器)１１０を用いる。３つの浮動小数点A、B、Cについて浮動小数点積和演算はAxB+Cで表され、浮動小数点の乗算と加算という２命令を一つに結合して実行ことによって命令実行時間を減らす。乗算と加算を分けて行う方式に比べて、約２倍早く浮動小数点処理を行う事ができる。
【０００３】
演算される浮動小数点A、B、Cはレジスタファイル１００から出力され、FMA１１０にて浮動小数点積和演算された後、正規化１２０にてFFO(Find Fist One)処理や2ビット以上の左シフト処理が行われ、丸め１３０にて１ビット右シフト処理あるいは1ビット左シフト処理を含む丸め処理が行われた後、レジスタファイル１００に演算結果が格納される。つまり、乗算及び加算の２つの演算を同時に実行する事で、命令実行時間は最速1cycとなる。また、レジスタファイル１００は４ポート構成である。
【０００４】
次に、浮動小数点A、Bの加算(A+B)と減算(A-B)という２つの演算を行うケースでは、加算、減算をそれぞれ一回ずつFMA１１０で演算するため、命令実行時間は最速で2cycとなる。FMA１１０をもう１個設けFMA１１０を２つ備えた場合、A+B、A-Bを1cycにて処理する事は可能となるが、一方、レジスタファイルのポート数が８ポートとなり、回路規模が増大してしまう。
【０００５】
【特許文献１】特開２００２−２０２９６４号公報
【特許文献２】特開平９−１４６９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、従来の浮動小数点積和演算を可能としながら、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)を並列処理する事ができる浮動小数点演算装置を提供することを主たる課題とする。
【課題を解決するための手段】
【０００７】
本発明は、２つの浮動小数点A、Bに対する加算(A+B)及び減算(A-B)を並列実行するために、従来の浮動小数点積和演算器が一つある構成に、浮動小数点加算器を一つ備え、加算(A+B)または減算(A-B)のうちで、いずれかが2ビット以上の左シフト正規化が必要であるかを判定する手段を有し、加算(A+B)または減算(A-B)のうちで、2ビット以上の左シフト正規化が必要でない方の正規化論理を省く事を特徴とする。
【発明の効果】
【０００８】
本発明の演算処理装置は、従来の浮動小数点積和演算器が一つある構成に、浮動小数点加算器を一つ備え、２つの浮動小数点A、Bに対する加算(A+B)または減算(A-B)のうちで、いずれかが2ビット以上の左シフト正規化が必要であるかを判定する手段を有する事で、加算(A+B)および減算(A-B)を並列処理することができる他、性能を２倍に向上し回路規模は２倍未満に抑える事ができるという利点がある。
【発明を実施するための最良の形態】
【０００９】
２つの浮動小数点A、Bに対する加算(A+B)と減算(A-B)を並列処理するという目的を、性能を２倍に向上し回路規模を2倍未満に抑える事を実現した。
【００１０】
図１は、本発明装置の１実施例であって、１００、１１０、１２０、１３０は図２と同様である。以下、２つの浮動小数点A、Bに対する加算(A+B)と減算(A-B)の２つの演算処理を行い、先行命令が加算(A+B)、後続命令が減算(A-B)、Aが+1.0x2^5、Bが+1.111x2^4のケースを例に説明する。
【００１１】
図３は、加算(A+B)または減算(A-B)のうちで、いずれかが2ビット以上の左シフト正規化が必要であるかを判定し、各セレクタ１５０への制御信号1ビット(’0’か’1’)を生成するまでのフローを示す。まず、３００で、本実施例ではこれから行う演算命令が２つの浮動小数点A、Bに対する加算(A+B)及び減算(A-B)のうち、先行命令が加算(A+B)であるので３１０に移行する。次に、３１０で、本実施例ではAとBはどちらも正であり異符号でないため、各セレクタ１５０への制御信号は’1’となる。
【００１２】
図１において、レジスタファイル１００よりA=1.0x2^5は１６０に出力され、FMA１１０及びFADD１４０に入力される。一方、B=1.111x2^4は１７０に出力され、先の図３のフローチャートにて生成された制御信号(’1’)によりセレクタ１５０のデータ1側が選ばれるため、インバーター２２０により浮動小数点B（+1.111ｘ2^4）の符号を正負反転したデータ(-1.111x2^4)がFMA１１０及びFADD１４０に入力される。
【００１３】
FMA１１０ではA+Bの演算(A + B = (+1.0x2^5) + (-1.111x2^4)= 0.0001x2^5)が行われる。一方、FADD１４０ではA-Bの演算(A - B = (+1.0x2^5) - (-1.111x2^4) = +1.1111x2^5)が行われる。従って、FMA１１０から出力された２００は0.0001x2^5、FADD１４０から出力された２１０は+1.1111x2^5となる。
【００１４】
次に、２００は正規化１２０に入力され、1.0x2^1に正規化され、丸め１３０を経て、セレクタ１５０のデータ1側を経由し、レジスタファイル１００へ入力される１９０は1.0x2^1で、これが後続命令(A-B)の結果である。
【００１５】
一方、FADD１４０の出力データ２１０(+1.1111x2^5)は、丸め１３０を経て、セレクタ１５０のデータ1側を経由し、レジスタファイル１００へ入力される１８０は+1.1111x2^5で、これが先行命令(A+B)の演算結果である。
【産業上の利用可能性】
【００１６】
本発明は、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)を並列実行する場合について、従来に比べ高速に処理を行う事ができ、例えば、FFT(高速フーリエ変換)計算で性能向上が可能である。
【００１７】
Cooley-Turkey型FFT演算は、長さNのDFT(離散クーリエ変換)は、
N-1          jk              -2πi/N
A      = Σ     a    W   、   W   =  e
k       j=0     j    N        N                    …(1)
となり、一般的に計算量を減らす目的で、次の二つの式(2,3)に分解して計算する。
N/2-1                         jk
A      = Σ     (a   +   a      )    W
2k      j=0      j       N/2+j        N/2          …(2)
N/2-1                        j       jk
A      = Σ     (a   -   a      )    W   )   W
2k+1    j=0      j       N/2+j       N       N/2   …(3)
上の二つの式((2)、(3))を浮動小数点演算器で計算する時に、演算処理のうち、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)の演算が出現する。従来の浮動小数点積和演算器が1つの構成における演算処理は、FADDx4、FMULx2、FMAx2の計8cyc要するのに対し、本発明の浮動小数点演算器による演算処理は、２つの浮動小数点A、Bの加算(A+B)及び減算(A-B)の同時実行x2、FMULx2、FMAx2で計6cyc要し、従来の浮動小数点演算器に比べ、全体で1.3倍高速に処理できる。
【図面の簡単な説明】
【００１８】
【図１】２つの浮動小数点の加算(A+B)及び減算(A-B)を並列実行する手段を備えた演算装置の説明図である。
【図２】浮動小数点積和演算処理の先行技術に係る説明図である。
【図３】２つの浮動小数点に対する加算(A+B)または減算(A-B)のうちで、いずれかが2ビット以上の左シフト正規化が必要であるかを判定しセレクタ制御信号生成に係るフローチャート説明図である。
【符号の説明】
【００１９】
１００…レジスタファイル、１１０…FMA(浮動小数点積和演算器)、１２０…正規化器、１３０…丸め処理器、１４０…FADD(浮動小数点加算器)、１５０…セレクタ、１６０…浮動小数点、１７０…浮動小数点、１８０…浮動小数点、１９０…浮動小数点、２００…浮動小数点、２１０…浮動小数点、２２０…インバーター。
【図１】
2009157671.tif 000003
【図２】
2009157671.tif 000004
【図３】
2009157671.tif 000005