JP2000057126A - 浮動小数点演算器 - Google Patents

浮動小数点演算器

Info

Publication number
JP2000057126A
JP2000057126A JP10228267A JP22826798A JP2000057126A JP 2000057126 A JP2000057126 A JP 2000057126A JP 10228267 A JP10228267 A JP 10228267A JP 22826798 A JP22826798 A JP 22826798A JP 2000057126 A JP2000057126 A JP 2000057126A
Authority
JP
Japan
Prior art keywords
adder
product
exponent
sum
result
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.)
Granted
Application number
JP10228267A
Other languages
English (en)
Other versions
JP3600026B2 (ja
Inventor
Yukihiro Ide
進博 井出
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP22826798A priority Critical patent/JP3600026B2/ja
Priority to US09/372,135 priority patent/US6363476B1/en
Publication of JP2000057126A publication Critical patent/JP2000057126A/ja
Application granted granted Critical
Publication of JP3600026B2 publication Critical patent/JP3600026B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 この発明は、連続した積和演算の繰り返し実
行における加算処理のクリティカルパスを短縮し、浮動
小数点積和演算時間の短縮を課題とする。 【解決手段】 この発明は、現在実行中の積和演算にお
ける加算処理における正規化処理が終了する前に、後続
の積和演算の加算処理における桁合わせ処理で必要とす
る桁合わせのためのシフト数(計算するオペランドの指
数部の差)の計算を開始し、正規化処理と並行して桁合
わせ数の算出を実行するように構成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点の積和
演算を乗算処理と累積を行う加算処理によって実現する
浮動小数点演算器に関する。
【0002】
【従来の技術】近年、マルチメディアの急速な普及、高
度なGUI(Graphic User Interface)、またグラフィ
ックを用いたTVゲームの普及などにより、コンピュー
タ・グラフィック(CG)が大変重要になってきてい
る。特にパソコンの家庭への急激な普及、TVゲーム機
の普及により高性能プロセッサ上で走らせるアプリケー
ションとして3次元コンピュータ・グラフィックス(3
D−CG)、特に高い品位の動画の要求が高まってい
る。この処理には膨大な計算量、計算能力が要求され
る。CGにおけるジオメトリカル処理は、座標変換、視
点変換などの幾何学的なグラフィックモデルの変換処理
や照光処理を行うフェイズである。これらの処理には行
列演算、ベクトル演算が行われるため、内積の演算が多
く用いられる。以上のような3D−CG処理以外にも、
従来からの科学技術計算における数値計算においても同
様に内積の計算は多用されている。
【0003】以上のような要求により高速な積和演算器
の実現が望まれている。以下に、従来の浮動小数点積和
演算器の構成を具体的に説明する。積和演算器の構成の
タイプには、大きく分けて2つのタイプがある。
【0004】第1のタイプは、独立した乗算部および加
算部を実装し、積和演算はこれらの演算部を縦列接続、
あるいは演算結果をオペランドとしてバイパスすること
により実現するタイプであり、その構成を図7に示す。
第2のタイプの浮動小数点積和演算器の構成は、積和演
算器を直接構成する方法であり、図8にその構成を示
す。積和演算が処理の多くを占めるグラフィック専用器
では第2のタイプの構成をとることが多いが、一般のM
PU(マイクロ・プロセッシング・ユニット)では、こ
のような専用の演算器を設ける構成はコストが大きいた
め、構成が単純でありかつ多くのMPUの浮動小数点演
算器と親和性の良い第1のタイプの構成が採用されるこ
とが多い。
【0005】ここでは、第1のタイプの構成における処
理の詳細を以下に述べ、この構成における問題点を明ら
かにする。また、第2の構成に関しても簡単に説明し、
同様の問題が生じることを示す。なお、以下に説明する
浮動小数点演算器は、すべて浮動小数点数の演算規格で
あるIEEE754規格に準拠しているものとする。
【0006】図7において、第1のタイプの演算器は、
乗算部100と加算部200とから構成される。乗算部
100の仮数部は、乗算ツリー101、ブースデコーダ
102、最終加算器103、正規化回路104ならびに
レジスタ105〜109を備えて構成される。また、指
数部は、2つの加算器110、111、ならびにレジス
タ112〜115を備えて構成される。乗算は、まず仮
数部の乗算が実行される。2つのオペランドの仮数部F
a、Fbの乗算は、ブースデコーダ102と乗算ツリー
101を用いて実行され、さらに最終加算器103で最
終的な積を算出する。一方、指数部は2つのオペランド
の指数部Ea、Ebを加算器110により加算すること
で求める(より厳密には、指数部は下駄履き表現されて
いるので、指数部の和を求め、さらにバイアス値を引く
ことにより求める)。前記乗算の結果、仮数部で桁上げ
が生じている場合には、仮数部を正規化回路104によ
り1ビットだけシフトし、指数部を加算器111により
インクリメントして正規化を行う。この従来例では、図
9に示す上記処理を2段のステージ(ステージX1、ス
テージX2)でパイプライン処理している。ステージX
1では乗算、ステージX2では最終加算、正規化であ
る。この構成は、現在の技術では典型的な構成である。
【0007】次に、加算部200の構成と動作について
述べる。仮数部は、オペランドFm、Fnの桁合わせを
行うシフタ201、和を求める加算器202、正規化回
路203、先行0検出回路204ならびにレジスタ20
5〜209を備えて構成される。また、指数部は、2つ
の加算器210、211、セレクタ212およびレジス
タ213〜215を備えて構成される。このような構成
において、加算は、(1)桁合わせ数算出、(2)スワ
ップ、(3)桁合わせ、(4)加算減算、(5)正規化
数の算出、(6)正規化、のステップにしたがって処理
される。まず、(1)桁合わせ数算出では、2つのオペ
ランドの仮数部Fm、Fnの桁あわせを行うために何ビ
ットだけシフトすればよいかを算出する。これは、オペ
ランドの指数部Em、Ecの差を絶対値で求めることで
あり、加算器210で実行される。(2)スワップで
は、2つの指数部Em、Ecのうち大きいほうを加算器
210による加算結果のキャリーにしたがって加算演算
の中間値Edとして選択する。また、仮数部Fm、Fn
は指数部Em、Ecの小さいほうの仮数部を桁あわせの
ためシフタ201に送るべく、必要ならばオペランドの
入れ替えを行う。(3)桁合わせでは、(1)の結果に
基づいて、シフタ201において指数部の小さいほうの
仮数部が必要な数だけ右にシフトされて桁合わせが行わ
れる。(4)加算減算では、加算器202で仮数部の加
算を行う。(5)正規化数算出では、(4)の結果にお
いて、何桁の桁落ちが生じたのかを先行0検出回路20
4によって先行0の数をカウントすることにより検出を
行う。(6)正規化では、(5)の結果により正規化を
行う。すなわち、指数部では加算器211を用いて指数
部の中間値Edから正規化数Nを引き、また仮数部では
正規化回路203を用いて正規化数分だけ仮数部を左に
シフトする。この従来例では、図10に示す上記処理を
2段のステージ(ステージA1、ステージA2)でパイ
プライン処理している。ステージA1では(1)から
(3)、ステージA2では(4)から(6)を実行して
いる。この構成は、現在の技術では典型的な構成であ
る。
【0008】以上、第1のタイプの構成における乗算、
加減算の処理に関して説明したが、積和演算を行うに
は、これら2つの演算器を縦続接続することによって、
積和演算を行う。積和演算A×B+C(ここではCは先
行する積和演算の答えとする)を行う場合には、まず2
つのオペランドA及びBが乗算部100に入力され、乗
算が実行される。演算結果は図7において*1、*2で
示すパスを用いて、加算部200にオペランドの1つと
して入力される。また、先行する積和演算の演算結果
は、図7において*3、*4で示すパスを用いてもう一
方のオペランドとして加算部200に入力され、加減算
が行われる。
【0009】図11に上記パイプラインの処理の流れを
を示す。図11から明らかであるが、第1のタイプの演
算器を実現した場合は、依存関係のある積和演算は連続
して実行することができない。すなわち、スループット
“1”で演算を実行することができない。これは、一般
に浮動小数点数の演算には複数サイクル、上記従来例で
は2サイクルを必要とするためであった。
【0010】一方、グラフィック処理、数値演算などで
多用される内積演算は、一般に連続した依存関係のある
積和演算によって実現される。この場合に、積和演算毎
にNOP(No Operation:演算を行わない状態)が生
じ、演算の効率が著しく悪化する。この問題は、命令の
スケジューリングによりある程度軽減することが可能で
あるが、すべての場合に有効なわけではない。すなわ
ち、偶然にもNOPの部分を埋めることのできる依存関
係のない命令が存在する場合に限られる。
【0011】このような不具合を完全に解決するには、
積和演算のスループットを“1”にすることである。す
なわち、上記(1)から(6)の処理を1サイクルで実
行する必要がある。この場合、クリティカルパスは
(1)〜(6)であり、1サイクルの時間は、(1)か
ら(6)までの全ての処理に掛かる時間となる。これは
非常に長い時間となり現実的ではない。
【0012】次に、図8を参照して第2のタイプの構成
と動作について説明し、上述したと同じような問題が生
じることを説明する。
【0013】図8において、積和演算器300の仮数部
は、第1,第2のオペランドの仮数部Fa、Fbの積を
求めるための乗算ツリー301、ブースデコーダ30
2、第3のオペランドの桁合わせを行う双方向シフタ3
03、乗算ツリー301による乗算結果および桁合わせ
結果の和(積和)を求める加算器304、305、加算
器305による積和演算結果の正規化を行う正規化回路
306、正規化数を求める先行0検出回路307、及び
レジスタ308〜313を備えて構成され、指数部は、
第1,第2のオペランドの指数部Ea、Ebの積の値
(指数部同士の和)を計算する加算器314、桁合わせ
の桁数(第3のオペランドの指数部と前記第1,第2の
オペランドの積の指数部の差)を求める加算器315、
第3のオペランドと前記第1,第2のオペランドの積と
の和(積和)の指数部(第3のオペランドの指数部と前
記第1,第2のオペランドの積の指数部の内、大きい方
の値)を加算器315の演算結果のキャリーに基づいて
求めるセレクタ316と、正規化を行う加算器317及
びレジスタ319〜322を備えて構成される。
【0014】このような構成において、積和演算器30
0では積和を一度に求める。積和演算は、次のように実
行される。すなわち、第1,第2のオペランドの仮数部
は、第1,第2のオペランドの積を求める乗算ツリー3
01、ブースデコーダ302に入力されて乗算が行われ
る。この処理と並行して、第3のオペランドの桁合わせ
が双方向シフタ303により行われる。左右どちらに何
ビットシフトされるかは、第1と第2のオペランドの指
数の和と第3のオペランドの指数の差として求められ
る。これらの算出は、加算器314,315によって行
われる。また、第1と第2のオペランドの指数の和と第
3のオペランドの指数の内、大きい方の値を指数部中間
値とする。第1,第2のオペランドの積と第3のオペラ
ンドの桁合わせ結果の和(積和)は、加算器304、3
05によって求められる。加算器304、305による
積和演算結果は、正規化回路307で正規化が行われ
る。正規化において何ビットシフトするかは、先行0検
出回路308によって求められる。指数部では加算器3
17により先行0検出回路308によって求められた正
規化数を指数部の中間値より加算あるいは減算すること
により正規化を行う。これらの一連の処理は2ステージ
のパイプライン処理によって実行される。
【0015】この構成は、第2のタイプの積和演算器に
おいて最も典型的な構成である。したがって、あるオペ
ランドの演算結果は、2クロック後にならないと次の演
算のオペランドとして用いることができない。すなわ
ち、依存関係のある演算は2クロック毎にしか実行する
ことができず、前述した第1のタイプの積和演算器と同
様の不具合を招いていた。
【0016】
【発明が解決しようとする課題】以上説明したように、
従来の浮動小数点積和演算器は、整数積和演算器と異な
り、レイテンシが多く、依存のある積和演算を毎クロッ
クごとに実行することができず、演算時間が長くなると
いった不具合を招いていた。
【0017】そこで、この発明は、上記に鑑みてなされ
たものであり、その目的とするところは、連続した積和
演算の繰り返し実行における累積処理のクリティカルパ
スを短縮し、演算時間の短縮を達成し得る浮動小数点演
算器を提供することにある。
【0018】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明は、仮数部と指数部で表現され
た浮動小数点数の積和演算における乗算処理を行う乗算
部と、前記乗算部の乗算結果を受けて累積処理を行う加
算部とを有する浮動小数点演算器において、前記加算部
は、先行する積和演算結果の仮数部と前記乗算部におけ
る乗算結果の仮数部の桁合わせを桁合わせ数に基づいて
行うシフタと、前記シフタにより桁合わせされた仮数部
の和を求める仮数部加算器と、前記仮数部加算器の加算
結果を受けて、加算結果の桁落ちした桁数を検出して正
規化数を求める先行0検出回路と、前記仮数部加算器の
加算結果を受けて、前記先行0検出回路により求められ
た正規化数に基づいて加算結果を正規化し、積和演算の
仮数部を求める正規化回路とを備えた仮数演算部と、先
行する積和演算における累積処理の指数部の中間値又は
前記乗算部における乗算結果の指数部の大きい方を累積
処理の指数部の中間値として選択するセレクタと、前記
乗算部における乗算結果の指数部と前記セレクタにより
選択された中間値を受けて両値の差を算出する第1の指
数部加算器と、前記第1の指数部加算器の演算結果と前
記先行0検出回路で求められた正規化数を受けて両値の
差を算出し桁合わせ数を求め、求めた桁合わせ数を前記
シフタに与え、演算結果のキャリーにより前記セレクタ
の選択を制御する第2の指数部加算器と、前記セレクタ
により選択された中間値と前記先行0検出回路により求
められた正規化数を受けて両値の差を算出し、積和演算
の指数部を求める第3の指数部加算器とを備えた指数演
算部とを有し、連続した積和演算n,(n+1)の実行
において、積和演算(n+1)の累積処理における桁合
わせ数を、前記第1の指数部加算器により積和演算nの
指数部の中間値と積和演算(n+1)の乗算結果の指数
部との差を算出し、前記第2の指数部加算器により前記
第1の指数部加算器の演算結果と前記正規化回路で求め
られた積和演算nの正規化数との差を算出することによ
り求めることを特徴とする。
【0019】
【発明の実施の形態】以下、図面を用いてこの発明の実
施形態を説明する。
【0020】図1は請求項1記載の発明の一実施形態に
係る浮動小数点演算器の構成を示す図である。
【0021】図1において、この実施形態の特徴とする
ところは、図7に示す従来の演算器に比べて、加算部2
に加算器3、レジスタ4、レジスタ5の構成を追加し、
セレクタ212の出力を加算器210の入力の一方に与
え、加算器3は加算器210の加算結果と先行0検出回
路204で得られた正規化数Nを加算して桁合わせ数S
を算出し、算出された桁合わせ数Sがレジスタ5で保持
され、レジスタ5で保持された桁合わせ数Sでシフタ2
01をシフト制御し、加算器3の加算結果のキャリーを
レジスタ4で保持し、レジスタ4で保持されたキャリー
でセレクタ212とスワップ動作を制御するようにした
ことにあり、図7に示す従来と同符号のものは同一機能
を有するものである。
【0022】この実施形態の積和演算器は、乗算部10
0と加算部2とから構成され、上述したように、図7に
示す従来の積和演算器と多くの部分で共通である。図1
に示す積和演算器は3ステージ、すなわちXステージ、
Yステージ、Zステージで構成されている。Xステージ
は、乗算部100の仮数部の乗算ツリー101とブース
デコーダ102及び指数部の加算器114を含んで構成
される。Yステージは乗算部100の仮数部の最終加算
器103、正規化回路104、指数部の加算器111、
加算部2の指数部の2つの加算器3、210を含んで構
成される。Zステージは、加算部2の仮数部のオペラン
ドの桁合わせを行うシフタ201、和を求める加算器2
02、正規化回路203、先行0検出回路204及び指
数部のセレクタ212、加算器211を含んで構成され
る。
【0023】ここで特徴的なのは、加算部2に加算器3
が追加されている点である。加算器3は、本発明の要点
である後続の積和演算のための桁合わせ桁数Sを現行の
積和演算の正規化の終了前に計算するための演算器であ
る。また、本積和演算器が3ステージで構成されている
点にも注意されたい。
【0024】以下、図1の構成図、図2〜図6のタイミ
ング図を参照して本演算器の動作を、Yステージの後
半、およびZステージにおける累積加算処理の動作に注
目して説明する まず、Xステージでは従来と同様にして乗算を行う。仮
数部のオペランドFa,Fbの乗算は、ブースデコーダ
102と乗算ツリー101を用いて実行される。一方、
指数部は2つのオペランドEa,Ebの指数部を加算す
ることにより求める(より厳密には、指数部は下駄履き
表現されているので、指数部の和を求め、さらにバイア
ス値を引くことにより求める)。
【0025】Yステージでは、最終加算器103で最終
的な積を算出する。仮数部で桁上げが生じている場合に
は、仮数部を1ビットだけシフトし、指数部をインクリ
メントして正規化を行う。さらに、Yステージでは、加
算処理における、(1)桁合わせ数の算出を行う。この
算出は2つの指数部の加算器210、3によって行われ
る。
【0026】図2は下記のような依存関係のある積和演
算を連続して実行している場合のタイミング図であり、
図3は従来の積和演算における加算部200で行われる
加算処理の動作タイミングを示す図であり、図4はこの
実施形態の積和演算における加算部2で行われる加算処
理の動作タイミングを示す図である。
【0027】図2において、現在時刻Tでは、積和演算
nの加算処理をZステージで実行中であるとする。この
とき後続の積和演算(n+1)は、Yステージで乗算の
最終加算と次の時刻(T+1)におけるZステージでの
加算処理で桁合わせを行うための桁合わせ数の算出を行
う。
【0028】 先行 積和演算(n−1) A’ ← A + B×C 現在 積和演算 n A’’ ← A’ + D×E 後続 積和演算(n+1) A’’’ ← A’’+ F×G 一般に桁合わせ数Sの算出は、(T+1)の時刻に時刻
TのZステージで求められた積和演算nの指数部Enの
値から時刻Tで求められた積和演算(n+1)の積の指
数の値Em(n+1)(以下、Em(n+1)は現在の
積和演算nの後続の積和演算(n+1)におけるEmの
値を表す)を引くことにより求められる。これは、積和
演算nの指数部の値Enは、先行0検出回路204で求
めた正規化数Nを加算器211によって指数部の中間値
Edから引くことで求まるため、時刻Tの終わりで確定
するためである。すなわち、
【数1】 時刻 T : En=Ed−N …(1) 時刻(T+1): S=En−Em(n+1) …(2) となる。この実施形態ではこの演算を時刻(T+1)で
はなく、まだ積和演算nの指数部の結果が確定していな
い時刻Tの前半に開始する。桁合わせ数Sは、上式
(1)(2)より、
【数2】 S=(Ed−N)−Em(n+1) =(Ed−Em(n+1))−N …(3) となる。ここで、Nは時刻Tの後半でないと確定されな
いが、Ed、Em(n+1)は、時刻Tの比較的早い時
期に確定している。そこで、上式(3)に示すように演
算の順番を入れ替えて、加算器210で(Ed−Em
(n+1))の実行を行い、その後正規化数Nが求まり
次第、加算器3で正規化数Nの減算を行うことにより桁
合わせ数Sを求める。ここで、(1)−a桁合わせ数算
出における(Ed−Em(n+1))の実行、(1)−
b桁合わせ数算出における(Ed−Em(n+1))−
Nの実行とする。
【0029】Zステージでは、(2)スワップ、(3)
桁合わせ、(4)加算減算、(5)正規化数の算出、
(6)正規化を実行する。(2)スワップ、(3)桁合
わせでは、2つの指数部のうち大きいほうを加算演算の
中間値Edとしてセレクタ212により選択する。ま
た、仮数部は指数部の小さいほうの仮数部を桁合わせの
ためシフタ201に送るべく、必要ならばオペランドの
入れ替えを行い、シフタ201において指数部の小さい
ほうの仮数部が必要な数だけ右にシフトされ、桁合わせ
が行われる。これらの処理は、Yステージで先に算出し
た桁合わせ数Sに基づいて行われる。また、選択された
指数部の中間値Edは、さらに後続の積和演算(n+
2)の桁合わせ数を算出するために転送される。(4)
加算減算では、加算器202で仮数部の加算を行う。
(5)正規化数算出では、(4)加算減算の結果におい
て、何桁の桁落ちが生じたのかを先行0検出回路204
によって先行0の検出を行う。また、この値は、さらに
後続の積和演算(n+2)の桁合わせ数を算出するため
に転送される。(6)正規化では、(5)の結果により
正規化を行う。すなわち、指数部では加算器211を用
いて指数部の中間値Edから正規化数Nを引き、また仮
数部ではシフタ201を用いて正規化数分だけ仮数部を
左にシフトする。
【0030】以上、本実施形態の動作について説明した
が、ここでは、さらに本実施形態の効果に焦点を当てて
説明する。本発明の目的は、依存関係のある積和演算の
スループットを“1”にするため、連続した積和演算に
おける加算(累積)処理のクリティカルパスを短縮する
点である。図7に示した従来例において、連続した積和
演算における加算(累積)処理のクリティカルパスは、
図5の累積加算の実行の様子に示すように、(1)桁合
わせ算出→(2)スワップ→(3)桁合わせ→(4)加
算減算→(5)正規化数算出→(6)正規化である。す
なわち、(1)〜(6)の処理が終了するまで、次の累
積加算を実行することができなかった。一方、この実施
形態では、連続した積和演算における加算(累積)処理
のクリティカルパスは、図6の累積加算の実行の様子に
示すように、(1)−b桁合わせ数算出における(Ed
−Em(n+1))−Nの実行→(2)スワップ→
(3)桁合わせ→(4)加算減算→(5)正規化数算
出、又は(2)スワップ→(3)桁合わせ→(4)加算
減算→(5)正規化数算出→(6)正規化となる。これ
は、桁合わせ数の算出を先行して実行するため正規化と
並列実行できるためである。すなわち、図6に示すよう
に(1)桁合わせ数の算出と(6)正規化の処理が並行
に実行される。このように本実施形態によれば、連続し
た積和演算における加算(累積)処理のクリティカルパ
スを短縮することができる。
【0031】これにより、スループット“1”の積和演
算器を構成した場合のクリティカルパスが短縮でき、浮
動小数点積和演算の演算時間を従来に比べて短縮するこ
とができるようになる。
【0032】
【発明の効果】以上説明したように、本発明によれば、
先行する積和演算の正規化処理が完了する前に、この正
規化処理と並行して次に実行する積和演算に必要な桁合
わせ数の算出の実行を開始するようにしたので、連続し
た積和演算における加算(累積)処理のクリティカルパ
スを短縮することができる。これにより、スループット
1の積和演算器を構成した場合のクリティカルパスが短
縮され、浮動小数点積和演算の演算時間を短縮すること
ができる。
【図面の簡単な説明】
【図1】この発明の一実施形態に係わる浮動小数点積和
演算器の構成を示す図である。
【図2】積和演算の実行のタイミングを示す図である。
【図3】従来の積和演算における加算処理の動作タイミ
ングを示す図である。
【図4】この実施形態における積和演算における加算処
理の動作タイミングを示す図である。
【図5】従来における累積加算の実行のタイミングを示
す図である。
【図6】この実施形態における累積加算の実行のタイミ
ングを示す図である。
【図7】従来の浮動小数点積和演算器の構成を示す図で
ある。
【図8】従来の他の浮動小数点積和演算器の構成を示す
図である。
【図9】従来の積和演算における乗算処理の内容を示す
図である。
【図10】従来の積和演算における加算処理の内容を示
す図である。
【図11】従来の積和演算の実行のタイミングを示す図
である。
【符号の説明】
2,3,110,111,202,210,211 加
算器 4,5,105〜108,112〜114,205,2
06,209,213〜215 レジスタ 100 乗算器 101 乗算ツリー 102 ブースデコーダ 103 最終加算器 104,203 正規化回路 201 シフタ 204 先行0検出回路 212 セレクタ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 仮数部と指数部で表現された浮動小数点
    数の積和演算における乗算処理を行う乗算部と、前記乗
    算部の乗算結果を受けて累積処理を行う加算部とを有す
    る浮動小数点演算器において、 前記加算部は、先行する積和演算結果の仮数部と前記乗
    算部における乗算結果の仮数部の桁合わせを桁合わせ数
    に基づいて行うシフタと、 前記シフタにより桁合わせされた仮数部の和を求める仮
    数部加算器と、 前記仮数部加算器の加算結果を受けて、加算結果の桁落
    ちした桁数を検出して正規化数を求める先行0検出回路
    と、 前記仮数部加算器の加算結果を受けて、前記先行0検出
    回路により求められた正規化数に基づいて加算結果を正
    規化し、積和演算の仮数部を求める正規化回路を備えた
    仮数演算部と、 先行する積和演算における累積処理の指数部の中間値又
    は前記乗算部における乗算結果の指数部の大きい方を累
    積処理の指数部の中間値として選択するセレクタと、 前記乗算部における乗算結果の指数部と前記セレクタに
    より選択された中間値を受けて両値の差を算出する第1
    の指数部加算器と、 前記第1の指数部加算器の演算結果と前記先行0検出回
    路で求められた正規化数を受けて両値の差を算出し桁合
    わせ数を求め、求めた桁合わせ数を前記シフタに与え、
    演算結果のキャリーにより前記セレクタの選択を制御す
    る第2の指数部加算器と、 前記セレクタにより選択された中間値と前記先行0検出
    回路により求められた正規化数を受けて両値の差を算出
    し、積和演算の指数部を求める第3の指数部加算器を備
    えた指数演算部とを有し、 連続した積和演算n,(n+1)の実行において、積和
    演算(n+1)の累積処理における桁合わせ数を、前記
    第1の指数部加算器により積和演算nの指数部の中間値
    と積和演算(n+1)の乗算結果の指数部との差を算出
    し、前記第2の指数部加算器により前記第1の指数部加
    算器の演算結果と前記正規化回路で求められた積和演算
    nの正規化数との差を算出することにより求めることを
    特徴とする浮動小数点積和演算器。
JP22826798A 1998-08-12 1998-08-12 浮動小数点演算器 Expired - Fee Related JP3600026B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP22826798A JP3600026B2 (ja) 1998-08-12 1998-08-12 浮動小数点演算器
US09/372,135 US6363476B1 (en) 1998-08-12 1999-08-11 Multiply-add operating device for floating point number

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22826798A JP3600026B2 (ja) 1998-08-12 1998-08-12 浮動小数点演算器

Publications (2)

Publication Number Publication Date
JP2000057126A true JP2000057126A (ja) 2000-02-25
JP3600026B2 JP3600026B2 (ja) 2004-12-08

Family

ID=16873804

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22826798A Expired - Fee Related JP3600026B2 (ja) 1998-08-12 1998-08-12 浮動小数点演算器

Country Status (2)

Country Link
US (1) US6363476B1 (ja)
JP (1) JP3600026B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285721A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 演算処理装置および演算処理方法
JP2010218197A (ja) * 2009-03-17 2010-09-30 Nec Computertechno Ltd 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム
US8805915B2 (en) 2010-11-17 2014-08-12 Samsung Electronics Co., Ltd. Fused multiply-add apparatus and method
CN118227085A (zh) * 2024-05-23 2024-06-21 北京微核芯科技有限公司 一种浮点乘加指令的延迟降低的方法及其装置

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000348017A (ja) * 1999-06-02 2000-12-15 Toshiba Corp 浮動小数点演算器
US7080111B2 (en) * 2001-06-04 2006-07-18 Intel Corporation Floating point multiply accumulator
US8190669B1 (en) 2004-10-20 2012-05-29 Nvidia Corporation Multipurpose arithmetic functional unit
US7240184B2 (en) * 2004-11-10 2007-07-03 Nvidia Corporation Multipurpose functional unit with multiplication pipeline, addition pipeline, addition pipeline and logical test pipeline capable of performing integer multiply-add operations
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US7225323B2 (en) * 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
JP4891252B2 (ja) * 2004-11-10 2012-03-07 エヌヴィディア コーポレイション 汎用乗算加算機能ユニット
JP2006228121A (ja) * 2005-02-21 2006-08-31 Toshiba Corp 演算処理装置
US8037119B1 (en) 2006-02-21 2011-10-11 Nvidia Corporation Multipurpose functional unit with single-precision and double-precision operations
US8051123B1 (en) 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US10838718B2 (en) * 2017-09-28 2020-11-17 Fujitsu Limited Processing device, arithmetic unit, and control method of processing device
JP7115211B2 (ja) * 2018-10-18 2022-08-09 富士通株式会社 演算処理装置および演算処理装置の制御方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825400A (en) * 1986-01-13 1989-04-25 General Electric Company Floating point accumulator circuit
US5590365A (en) * 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US5247471A (en) * 1991-12-13 1993-09-21 International Business Machines Corporation Radix aligner for floating point addition and subtraction
US5957997A (en) * 1997-04-25 1999-09-28 International Business Machines Corporation Efficient floating point normalization mechanism
US5943249A (en) * 1997-04-25 1999-08-24 International Business Machines Corporation Method and apparatus to perform pipelined denormalization of floating-point results
US6049865A (en) * 1997-12-18 2000-04-11 Motorola, Inc. Method and apparatus for implementing floating point projection instructions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285721A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 演算処理装置および演算処理方法
JP2010218197A (ja) * 2009-03-17 2010-09-30 Nec Computertechno Ltd 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム
US8805915B2 (en) 2010-11-17 2014-08-12 Samsung Electronics Co., Ltd. Fused multiply-add apparatus and method
CN118227085A (zh) * 2024-05-23 2024-06-21 北京微核芯科技有限公司 一种浮点乘加指令的延迟降低的方法及其装置

Also Published As

Publication number Publication date
US6363476B1 (en) 2002-03-26
JP3600026B2 (ja) 2004-12-08

Similar Documents

Publication Publication Date Title
JP3600026B2 (ja) 浮動小数点演算器
US6904446B2 (en) Floating point multiplier/accumulator with reduced latency and method thereof
US8239440B2 (en) Processor which implements fused and unfused multiply-add instructions in a pipelined manner
US8838664B2 (en) Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
JP4418578B2 (ja) 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法
KR102318494B1 (ko) 곱셈 가산기
US20060101244A1 (en) Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
Mueller et al. The vector floating-point unit in a synergistic processor element of a Cell processor
US10379859B2 (en) Inference based condition code generation
EP1049025B1 (en) Method and apparatus for arithmetic operations
JP2002108606A (ja) スティッキービット生成回路及び乗算器
KR100911786B1 (ko) 다목적 승산-가산 기능 유닛
US20190012143A1 (en) Circuit for performing a multiply-and-accumulate operation
US10108397B2 (en) Fast close path solution for a three-path fused multiply-add design
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
JPH09507941A (ja) multiply−add浮動小数点シーケンスにおけるウエイト・サイクルなしのブロック正規化
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
JP2011118633A (ja) 浮動小数点除算器、及びそれを用いた情報処理装置
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
US20100250635A1 (en) Vector multiplication processing device, and method and program thereof
JP2006228191A (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
Gök et al. Multi-functional floating-point MAF designs with dot product support
JP4355705B2 (ja) 乗算装置、及び演算装置
JP2010218197A (ja) 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム
Schwarz Binary Floating-Point Unit Design: the fused multiply-add dataflow

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040812

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: 20040824

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040915

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070924

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100924

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110924

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees