JP2003196079A - 積和演算装置、及び積和演算方法 - Google Patents

積和演算装置、及び積和演算方法

Info

Publication number
JP2003196079A
JP2003196079A JP2001398851A JP2001398851A JP2003196079A JP 2003196079 A JP2003196079 A JP 2003196079A JP 2001398851 A JP2001398851 A JP 2001398851A JP 2001398851 A JP2001398851 A JP 2001398851A JP 2003196079 A JP2003196079 A JP 2003196079A
Authority
JP
Japan
Prior art keywords
data
result
addition
value
mantissa
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
JP2001398851A
Other languages
English (en)
Other versions
JP3845009B2 (ja
Inventor
Shiro Kawada
志郎 河田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001398851A priority Critical patent/JP3845009B2/ja
Priority to US10/108,398 priority patent/US6895423B2/en
Publication of JP2003196079A publication Critical patent/JP2003196079A/ja
Application granted granted Critical
Publication of JP3845009B2 publication Critical patent/JP3845009B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • 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

Landscapes

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

Abstract

(57)【要約】 【課題】 浮動小数点数積和演算について十分な演算精
度を有する演算装置を少ない回路規模の増加で実現す
る。 【解決手段】 第一のデータと第二のデータとの積へ第
三のデータを加算する積和演算を実行するために、浮動
小数点乗算器114に第一のデータと第二のデータとの
乗算を行なわせ、その乗算結果における仮数部を表現す
るビット列を該仮数部における上位の桁を表現するもの
と該仮数部における下位の桁を表現するものとに分割す
る。該下位の桁を表現するビット列を仮数部とする下位
乗算結果データ114Lと第三のデータとの加算を浮動
小数点加算器113に先に行なわせ、該加算の結果と該
上位の桁を表現するビット列を仮数部とする上位乗算結
果データ114Hとの加算を浮動小数点加算器113に
後に行なわせるようにし、その後の加算の結果に対して
丸めの処理を施して該積和演算の結果とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デジタルデータの
算術演算を行なう演算装置で用いられる技術に関し、特
に、積和演算を行なう演算装置で用いられる技術に関す
る。
【0002】
【従来の技術】まず、IEEE(The Institute of Ele
ctrical and Electronics Engineers,Inc. )の2進浮
動小数点算術演算についての規格(IEEE−754)
における浮動小数点数値の表現形式について、図14を
参照しながら説明する。
【0003】図14の(A)に示すように、浮動小数点
数値は、符号ビットS、指数部E、及び仮数部Fの3つ
のフィールドから構成される。符号ビットSは数値の正
負の符号を示す常に1ビットのデータであり、「0」は
正数を、「1」は負数をそれぞれ表す。
【0004】仮数部Fは1.0以上2.0未満の値(正
規化数)を表しており、各ビットは2を負の冪乗した数
値を表している。例えば、指数部Fの第一番目のビット
が「1」のときは2-1、すなわち0.5を表し、第二番
目のビットが「1」のときは2-2、すなわち0.25を
表しており、これらの各ビットが表す値の合計に1.0
を加算した値が仮数部の値となる。この加算する1.0
は、仮数部Fに第0番目のビットとして「1」があたか
も存在するとみなしたときの20 の値に対応するもので
ある。このビットには正規化数に対して常に「1」が設
定されるので、このビットは実際には仮数部Fのフィー
ルドに置かれないが、常に存在するものとして扱われ
る。このビットは「暗黙の1」などと呼ばれている。
【0005】指数部Eは2の冪乗の整数値を表すが、こ
の指数部Eで負数値の表現を可能とするためにバイアス
付き表現が使用される。このバイアスの値は、表現する
浮動小数点数値の精度に基づいて予め定義されている。
【0006】指数部Eに与えられるバイアス値をBとす
ると、S、E、F、Bによって表現される浮動小数点数
値Xは下記の式で求められる。 X=(−1)S ×2E-B ×(1.0+F) 図14(A)に示す各フィールドに割り当てられるビッ
ト数及びバイアスBの値を表現する浮動小数点数値に定
義されている精度ごとに示したものが図14の(B)に
示す表である。
【0007】次に、上述したIEEE規格に準拠する、
指数部にNビットが割り当てられ仮数部にMビットが割
り当てられている3つの浮動小数点数A、B、Cについ
ての積和演算A×B+Cを、正確な中間結果を保ちなが
ら実行することを考える。
【0008】このような演算を実行し得る、従来の積和
演算器の構成例を図15に示す。同図において、加算回
路1001及び仮数部乗算回路1002がAとBとの積
算を実行し、その他の回路でA×BとCとの加算を実行
する。なお、ここではA、B、Cの各々の符号の処理は
行なわないものとする。
【0009】加算回路1001はAの指数部の値(指数
値)とBの指数値との加算を行なう回路である。加算回
路1001の入力にはA及びBの値の表現における指数
部に割り当てられたビット幅に相当するNビットのビッ
ト幅が用意され、その出力にはここでの加算によっては
桁落ちが生じない(N+1)ビットのビット幅が用意さ
れる。
【0010】仮数部乗算回路1002はAの仮数部の値
(仮数値)とBの仮数値との加算を行なう回路である。
仮数部乗算回路1002の入力にはA及びBの値の表現
における仮数部に割り当てられたビット幅に前述した暗
黙の1のための1ビットを加えたものに相当する(M+
1)ビットのビット幅が用意され、その出力にはここで
の乗算によっては桁落ちが生じない(2M+2)ビット
のビット幅が用意される。
【0011】A×Bの演算結果とCとを加算するとき、
その両者の指数値が一致していない場合には、桁揃えを
行なってから、すなわちそのどちらか一方の仮数値にお
ける小数点を移動させて両者の指数値を一致させてから
仮数値の加算を行なう必要がある。これらの処理が減算
回路1003、仮数部選択回路1004、及びアライン
回路1005によって行なわれる。
【0012】減算回路1003はA×Bの演算結果とC
とでどちらの指数値が大きいかの判定を行なうと共に、
その両者の差の値を算出して両者のうちの一方の仮数値
の小数点の移動量を求める。
【0013】仮数部選択回路1004は、減算回路10
03から出力されるセレクト信号、すなわちA×Bの演
算結果とCとのうちでその指数値の大きい方を示す信号
に基づき、両者のうち指数値の大きい方についての仮数
値を絶対値加算回路1006の一方の入力へと出力し、
小さい方についての仮数値をアライン回路1005へ出
力する。なお、この仮数部選択回路1004の一方の入
力には仮数部乗算回路1002から送られてくるA×B
の演算結果の仮数値が入力されるため(2M+2)ビッ
トのビット幅が用意されており、他方の入力にはCの値
の表現における仮数部に割り当てられたビット幅に暗黙
の1のための1ビットを加えたものに相当する(M+
1)ビットのビット幅が用意される。また、この仮数部
選択回路1004の2つの出力には、どちらにもA×B
の演算結果の仮数値がそのまま出力され得るので(2M
+2)ビットのビット幅が用意されている。
【0014】アライン回路1005は、減算回路100
3から出力されるシフト量情報、すなわちA×Bの演算
結果とCとのうちで指数値の小さい方についての仮数値
の小数点を桁揃えのために移動させるときの移動量を示
す情報に基づいて、仮数部選択回路1004から与えら
れた仮数値の小数点を移動させ、その移動させた後の仮
数値を絶対値加算回路1006のもう一方の入力へと出
力する。なお、このアライン回路1005の入出力には
共に(2M+2)ビットのビット幅が用意される。
【0015】絶対値加算回路1006は、仮数部選択回
路1004及びアライン回路1005から与えられた、
桁揃えがなされているA×Bの演算結果とCとの仮数値
についての(2M+2)ビットのビット幅での加算を行
なう。
【0016】絶対値加算回路1006によって行なわれ
るA×BとCとの仮数部の加算結果が前述した正規化数
の存在範囲を外れてしまうことが生じ得る。正規化回路
1007はそのような加算結果に対して正規化を施す回
路であり、この正規化によって行なわれた仮数値の小数
点の移動量はシフト量情報として指数部補正回路101
0へと送られる。なお、正規化回路1007の入出力に
も共に(2M+2)ビットのビット幅が用意される。
【0017】丸め回路1008は、正規化回路1007
から出力された(2M+2)ビットの仮数部の桁数から
有効な精度を有する桁数への丸め、すなわちここでは元
のA、B、Cの仮数部で示されている(M+1)ビット
から暗黙の1のための1ビットを減じたMビットへの変
換を行ない、A×B+Cの積和演算結果の仮数部として
出力する。
【0018】ここで丸めについて更に説明を加える。丸
めの方法には一般に以下の種類がよく知られている。 (1)切り捨て:演算結果のうち、定義されている数値
表現形式において仮数部に割り当てられているビット数
より下位のビットを切り捨てる。
【0019】(2)切り上げ:定義されている数値表現
形式において仮数部に割り当てられているビット数で表
現し得る値であって、その値の絶対値が演算結果よりも
大きく且つ最も近い値とする。
【0020】(3)正方向切り上げ:定義されている数
値表現形式において仮数部に割り当てられているビット
数で表現し得る値であって、その値が演算結果よりも大
きく且つ最も近い値とする。
【0021】(4)負方向切り上げ:定義されている数
値表現形式において仮数部に割り当てられているビット
数で表現し得る値であって、その値が演算結果よりも小
さく且つ最も近い値とする。
【0022】(5)平均値1:定義されている数値表現
形式において仮数部に割り当てられているビット数で表
現し得る値であって、最も演算結果に近い値とする。も
しも、演算結果がそのような値を決められない値である
とき、すなわち仮数部以下第1位ビットが「1」で、そ
れより下のビットが全て「0」のときには、それに最も
近い2つの値のうち、仮数部最下位ビットが0(又は
1)の方を取る。なお、仮数部以下第1位ビットとは、
図16に示すように、定義されている数値表現形式にお
いて仮数部に割り当てられているうちの最下位のビット
である仮数部最下位ビットの1つ下の位のビットであ
る。
【0023】(6)平均値2:定義されている数値表現
形式において仮数部に割り当てられているビット数で表
現し得る値であって、最も演算結果に近い値とする。も
しも、演算結果がそのような値を決められない値である
とき、すなわち仮数部以下第1位ビットが「1」で、そ
れより下のビットが全て「0」のときには、それに最も
近い2つの値のうち、それらの絶対値が大きい(又は小
さい)方を取る。
【0024】(7)平均値3:定義されている数値表現
形式において仮数部に割り当てられているビット数で表
現し得る値であって、最も演算結果に近い値とする。も
しも、演算結果がそのような値を決められない値である
とき、すなわち仮数部以下第1位ビットが「1」で、そ
れより下のビットが全て「0」のときには、それに最も
近い2つの値のうち、大きい(又は小さい)方を取る。
【0025】以上のように、丸めには様々な方法があ
り、演算結果の用途に応じて使い分けられている。図1
5の説明へ戻る。セレクタ1009は、減算回路100
3から出力されるセレクト信号に基づき、A×Bの演算
結果とCとの指数値のうちで大きい方、すなわち、絶対
値加算回路1006で行なわれる仮数値同士の加算にお
ける基準である指数値を選択する。
【0026】指数部補正回路1010は、正規化回路1
007から送られてくるシフト量情報に基づいてセレク
タ1009で選択された指数値の補正を行ない、更に数
値表現形式における指数部のために割り当てられている
Nビットの値への変換を行なってA×B+Cの積和演算
結果の指数値として出力する。
【0027】図15に示す積和演算器は以上のようにし
てA×B+Cの積和演算を実行する。
【0028】
【発明が解決しようとする課題】上述したように、A、
B、Cの各々がとり得る指数値又は仮数値に対して制限
を与えることなく上述したA×B+Cの積和演算を行な
うためには、まずAとBとの積算の結果のために、仮数
部では最低でも(2M+2)ビット、指数部では最低で
も(N+1)ビットの精度が必要であり、更に、この積
算結果A×Bをそのまま次の加算演算のオペランドとし
なくてはならなかった。このため、汎用の演算器がこの
積和演算を実行可能とするためには、図15のように、
(N+1)ビットの指数部減算回路1003、(N+
1)ビットからNビットへの指数部補正回路1010、
(2M+2)ビットの仮数部選択回路1004、(2M
+2)ビットのアライン回路1005、(2M+2)ビ
ットの絶対値加算回路1006、(2M+2)ビットの
正規化回路1007、及び丸め演算回路1008をこの
ためのみに装備しなければならず、回路実装上での負担
が大きかった。
【0029】また、この他にも既存の演算器を利用して
積和演算を行なう技術が開示されているが(例えば、特
開平10−207693号公報)、これらの技術では、
演算結果が正規化を必要とする場合や、A×Bの積算結
果とCとの加算において仮数部からのキャリーアウトが
起こる場合などを特殊ケースと見なし、その特殊ケース
を対処する特別な処理を行なうようにしており、この特
別な処理の実行は演算のレイテンシを長くさせてしまう
ため、これらの技術では不向きな演算が存在していた。
例えば、非除数Xを除数Yで除算したときの剰余を連続
して求めるには、まず、非除数Xを除数Yで除算したと
きの商の整数部Zを求め、その後にX−Z×Yなる計算
を実行してその剰余を得る計算が一般に実行されるが、
このような演算では特に除算演算の実行後において正規
化処理が高い確率で発生するため、ほとんどの場合が例
外処理となり、演算のレイテンシを長くさせてしまって
いた。
【0030】以上の問題を鑑み、浮動小数点数積和演算
について十分な演算精度を有する演算装置を少ない回路
規模の増加で実現することが本発明が解決しようとする
課題である。
【0031】
【課題を解決するための手段】本発明の態様のひとつで
ある積和演算装置は、浮動小数点数をビット列で表現す
る浮動小数点数データの乗算及び加算を行なうことで積
和演算を実行する装置を前提とし、この装置に、前記浮
動小数点数データの乗算を行なう乗算手段と、前記浮動
小数点数データの加算を行なう加算手段と、前記加算手
段で行なわれた加算の結果として得られる浮動小数点数
データに丸めの処理を施す丸め手段と、前記浮動小数点
数データである第一のデータと第二のデータとの積へ該
浮動小数点数データである第三のデータを加算する積和
演算の結果が格納される結果格納手段と、前記第一のデ
ータと前記第二のデータとの乗算の結果である乗算結果
データを前記乗算手段に算出させる乗算制御手段と、前
記乗算結果データにおける仮数部を表現するビット列を
該仮数部における上位の桁を表現するものと該仮数部に
おける下位の桁を表現するものとの2つに分割したうち
の該下位の桁を表現するビット列を仮数部とする下位乗
算結果データに、前記第三のデータを加算して得られる
第一加算結果データを前記加算手段に算出させる第一加
算制御手段と、前記第一加算結果データに前記上位の桁
を表現するビット列を仮数部とする上位乗算結果データ
を加算して得られる第二加算結果データを前記加算手段
に算出させる第二加算制御手段と、を有し、前記結果格
納手段には、前記第二加算結果データに対する丸めの処
理が前記丸め手段によって施されて得られる浮動小数点
データである第一の積和演算結果データが格納されるよ
うに構成することによって前述した課題を解決する。
【0032】ここで、前記浮動小数点数データの表現形
式は、例えば、IEEE(The Institute of Electrica
l and Electronics Engineers, Inc. )の2進浮動小数
点算術演算についての規格であるIEEE−754規格
に準拠しているものとする。
【0033】上記の構成によれば、第一のデータと第二
のデータとの乗算結果を、その仮数部における上位の桁
を仮数部とするデータとその仮数部における下位の桁を
仮数部とするデータとの2つに分け、これらと第三のデ
ータとの加算を2回に分けて行なうようにしたので、乗
算結果がそのままのビット幅で加算手段に入力する構成
を採る場合に比べて加算手段の回路規模が小さくなり、
また乗算手段から加算手段へデータを転送するバスのビ
ット幅も少なくなるので、回路規模の増大が抑制され
る。
【0034】また、加算手段における加算の順序につい
て、乗算結果の仮数部における下位の桁を仮数部とする
データと第三のデータとの加算を先に行なうようにした
ので、乗算結果の仮数部における上位の桁を仮数部とす
るデータと第三のデータとの加算を先に行なうとその加
算の途中で行なわれる仮数部の桁揃えのために消失して
しまう可能性のある第三のデータの下位部分が消失する
ことなく、十分な演算精度を有することができる。
【0035】なお、上述した本発明に係る積和演算装置
において、前記上位乗算結果データに前記第三のデータ
を加算して得られる第三加算結果データを前記加算手段
に算出させる第三加算制御手段と、前記第三加算結果デ
ータに前記下位乗算結果データを加算して得られる第四
加算結果データを前記加算手段に算出させる第四加算制
御手段と、前記上位乗算結果データと前記第三のデータ
との比較を行なう比較手段と、を更に有し、前記結果格
納手段には、前記比較手段による前記比較の結果に基づ
き、前記第一の積和演算結果データの代わりに、前記第
四加算結果データに対する丸めの処理が前記丸め手段に
よって施されて得られる浮動小数点データである第二の
積和演算結果データが格納されるように構成することも
できる。
【0036】第一加算結果データと上位乗算結果データ
と加算して第二加算結果データを得る後の加算において
正規化を行なう必要が生じた場合には、先に行なわれた
第一加算結果データを算出するための加算の際に桁揃え
のために切り捨てられてしまった下位の桁の値に関する
情報が必要になるが、この順序で和を求めるときには、
後の加算のときに既に下位の桁の値は消失してしまう。
そこで、このような場合が生じるか否かを比較手段を用
いて先に判定するようにし、このような場合が生じると
きには上位乗算結果データと第三のデータとから第三加
算結果データを得る加算を先に行ない、第三加算結果デ
ータと下位乗算加算結果データとから第四加算結果デー
タを得る加算を後に行なうようにして、この問題を解消
するものがこの発明である。
【0037】なお、ここで、前記比較手段による比較の
結果が前記上位乗算結果データと前記第三のデータとの
符号が一致していることを示しているときには、前記結
果格納手段には前記第一の積和演算結果データが格納さ
れるように構成することができる。
【0038】また、前記比較手段による比較の結果が前
記上位乗算結果データと前記第三のデータとの符号が異
なっていることを示しているときには、該比較の結果
が、該上位乗算結果データで表現されている指数部の値
と該第三のデータとの指数部の値とが一致していること
を示している場合、若しくは、該上位乗算結果データで
表現されている指数部の値と該第三のデータとの指数部
の値との差が1であって且つ該乗算結果データと該第三
のデータとでそれぞれ表現されている指数部の値のうち
大きい方のものについての仮数部を表現しているビット
列のうちの最上位のビットが0である場合には前記第二
の積和演算結果データが格納され、その他の場合には前
記第一の積和演算結果データが格納されるように構成す
ることができる。
【0039】また、前述した本発明に係る積和演算装置
において、前記乗算手段による乗算の結果若しくは前記
加算手段による加算の結果を示す浮動小数点数データに
おいて指数部の表現のために割り当てられているビット
数を、該乗算若しくは該加算においてオーバーフロー又
はアンダーフローが生じたことを示す情報に基づいて拡
張する変換を行なう指数部変換手段を更に有し、前記加
算手段で行なわれる加算の対象が前記乗算手段による乗
算の結果若しくは該加算手段自身が以前に行なった加算
の結果を示すデータであるとき、該加算手段は、前記指
数部変換手段による変換が行なわれた後の値が該データ
における指数部の値であるものとして該データの加算を
行なうように構成することもできる。
【0040】この構成によれば、前記乗算手段及び前記
加算手段のそれぞれから出力される加算結果若しくは乗
算結果で表現し得る指数値の範囲が制限されているとき
でも、その制限が積和演算に及ぼす精度の低下の影響を
低減することができる。
【0041】また、前述した本発明に係る積和演算装置
において、前記加算手段は、該加算手段で行なわれた加
算の結果として得られる浮動小数点数データに前記丸め
手段が丸めの処理を施すための基とする情報である丸め
処理情報を該加算の結果と併せて出力し、前記丸め手段
は、前記第二加算結果データに対して前記丸めの処理を
施すときには、前記加算手段が前記第一加算結果データ
の算出を行なったときに出力された第一の丸め処理情
報、及び該加算手段が該第二加算結果データの算出を行
なったときに出力された第二の丸め処理情報に基づいて
該丸めの処理を施すように構成することもできる。
【0042】この構成は、例えば、前記丸め処理情報
は、前記加算手段による加算の対象とする2つの浮動小
数点数データのうちのいずれかの仮数部の値に対し、仮
数部の値の加算のために施される桁揃えによって切り捨
てられたビット列のうちの最上位のビットであるガード
ビット、該最上位のビットの下の桁である第二位のビッ
トであるラウンドビット、及び該第二位のビットの下の
桁以降の全てのビットの論理和を示すビットであるステ
ィッキービットとを有し、前記丸め手段は、前記第二加
算結果データに対して前記丸めの処理を施すときには、
前記第一の丸め情報におけるガードビットと前記第二の
丸め情報におけるガードビットとの論理和、該第一の丸
め情報におけるラウンドビットと該第二の丸め情報にお
けるラウンドビットとの論理和、及び該第一の丸め情報
におけるガードビットとラウンドビットとスティッキー
ビットと該第二の丸め情報におけるスティッキービット
との論理和、に基づいて該丸めの処理を施すように構成
する。
【0043】この構成によれば、第一のデータと第二の
データとの乗算結果を、その仮数部における上位の桁を
仮数部とするデータとその仮数部における下位の桁を仮
数部とするデータとの2つに分け、これらと第三のデー
タとの加算を2回に分けて行なうようにしたことが丸め
手段による丸め処理に対して及ぼす影響を除外すること
ができるようになり、その影響に起因する積和演算結果
の精度の低下を防止することができる。
【0044】また、本発明の別の態様のひとつである積
和演算方法は、浮動小数点数をビット列で表現する浮動
小数点数データである第一のデータと第二のデータとの
積へ該浮動小数点数データである第三のデータを加算す
る積和演算を実行する方法を前提とし、浮動小数点数デ
ータの乗算を行なう乗算器に前記第一のデータと前記第
二のデータとの乗算を行なわせ、前記乗算の結果である
乗算結果データにおける仮数部を表現するビット列を該
仮数部における上位の桁を表現するものと該仮数部にお
ける下位の桁を表現するものとの2つに分割したうちの
該下位の桁を表現するビット列を仮数部とする下位乗算
結果データに前記第三のデータを加算する演算を浮動小
数点数データの加算を行なう加算器に行なわせ、前記加
算の結果である第一加算結果データに前記上位の桁を表
現するビット列を仮数部とする上位乗算結果データを加
算して得られる第二加算結果データを前記加算器に算出
させ、前記第二加算結果データに対して丸めの処理を施
して得られたデータを該積和演算の結果とすることで前
述した本発明に係る積和演算装置と同様の作用・効果が
得られ、前述した課題を解決することができる。
【0045】
【発明の実施の形態】以下、本発明の実施の形態を図面
に基づいて説明する。まず、本実施の形態の原理を説明
する。なお、以下の説明では、IEEE規格に準拠す
る、指数部にNビットが割り当てられ仮数部にMビット
が割り当てられている3つの浮動小数点数A、B、Cに
ついての積和演算A×B+Cを実行する演算装置を、既
存のIEEE浮動小数点数演算器を改良して実現するこ
とについて説明する。
【0046】まず、この演算器に入力されるオペランド
AとBとの乗算を行なう乗算演算部について説明する。
この乗算演算部に入力される値の仮数部はMビットであ
るが、IEEE浮動小数点数の表現形式では仮数部最上
位ビットの上に暗黙の1である1ビットが省かれている
ため、実際にはそれを加えた(M+1)ビットが仮数乗
算の対象となる。また、その乗算演算部の有している乗
算器による演算結果は(2M+2)ビットで表されるこ
ととなるが、IEEE浮動小数点数の表現形式に準拠さ
せるとそこから暗黙の1である1ビットが取り除かれる
ので、この乗算器から出力される演算結果の仮数部は
(2M+1)ビットを有することとなる。
【0047】なお、既存の浮動小数点数演算器の乗算演
算部では、前述したような仮数値に対する丸め処理が回
路内部で行なわれるように構成されているためそのよう
なビット数の演算結果を出力しないものもある。しか
し、そのような乗算演算部であっても、正確な丸め演算
を行なうために、内部の乗算器自体では(2M+2)ビ
ットからなる正確な積算結果を得ているのが通常である
ため、この段階の積算結果を取り出すようにすればこの
ような乗算演算部を流用する場合であっても正確な演算
結果の仮数値を得ることが可能である。
【0048】一方、この乗算演算部において、オペラン
ドA、Bの指数部についての演算はNビット同士の加算
となり、その結果は(N+1)ビットで表現可能であ
る。但し、本実施の形態の演算装置の出力を、積和演算
A×B+Cに関してはIEEE浮動小数点数の表現形式
に準拠せずに、(N+1)ビットの指数値を得るように
するためには、この乗算演算部の後段に設けられる演算
部に適当な変更を加える必要がある。
【0049】この乗算演算部がIEEE浮動小数点数の
表現形式に則りNビットの指数値を出力するのであれ
ば、A×BとCとの加算を行なう前に、まず、乗算演算
部から出力される、演算結果におけるNビットの指数値
と指数オーバーフロー及び指数アンダーフローを示す信
号とから以下のような操作を加えて(N+1)ビットの
指数値を得るための回路を設ける。
【0050】通常、乗算演算部において指数オーバーフ
ローや指数アンダーフローが生じたときの出力である演
算結果の指数値は補正が施されている。この指数補正で
は、予め定義されている指数部のビット数では表現しき
れなくなった浮動小数点数を、定数βで除算又は乗算し
て指数値を調整する。指数オーバーフローが生じたとき
はその値をβで除し、指数アンダーフローが生じたとき
はその値にβを乗じる。ここで、βは、指数オーバーフ
ロー又は指数アンダーフローが生じたときにとり得る全
ての指数値について、定義されているビットで表現し得
る範囲に収める値とされる。
【0051】次に、前述した乗算演算部の内部で指数補
正処理が施された後のNビットの指数値と、その乗算演
算部から出力されるオーバーフロー又はアンダーフロー
の信号とから、(N+1)ビットに拡張した指数値を得
る手法について具体的に説明する。なお、この手法で
は、指数値に与えられている前述したバイアス値もその
指数部に割り当てられているビット数に応じて変更す
る。
【0052】変換前のバイアス込みのNビットからなる
指数値をE1、変換後のバイアス込みの(N+1)ビッ
トからなる指数値をE2とし、変換前のNビットからな
るバイアスをB1、変換後の(N+1)ビットからなる
バイアスをB2、乗算演算部の指数補正処理において使
用されていた定数βを2のα乗(但し、αはNビットの
数値)とすると、 オーバーフロー発生時 :E2=E1+
(−B1+B2+α) アンダーフロー発生時 :E2=E1+
(−B1+B2−α) オーバーフロー・アンダーフローが共に生じていない場
合 :E2=E1+(−B1+B2) が指数値の変換式になる。これらの式を、後の説明の都
合上、指数値変換式と称することとする。
【0053】この指数値変換式において、Nビットの値
については、最上位ビットが「0」である(N+1)ビ
ットの値であるとみなして(N+1)ビットでの加減算
を行なう。なお、上記の各式における右辺の括弧内の値
は全て定数であるので、この指数値の変換では、上記の
括弧内の演算を予め行なっておき、その結果として得ら
れた定数を変換前の指数値に加算するだけで得られる。
【0054】この変換によって得られた(N+1)ビッ
トの指数値で表現し得る数値の範囲は、図1に示すよう
に、変換前のNビットの指数値で表現し得る数値の範囲
に対して大幅に広がる。
【0055】次に、A×BとCとの加算を行なう回路に
ついて説明する。既存のIEEE浮動小数点数演算器の
有する加算演算部における指数部の入力は一般的にNビ
ットのビット幅を有しているが、上述した変更によって
乗算演算部から出力される演算結果における指数部のビ
ット数が通常より1ビット増えたため、このままではA
×BとCとの加算が実行できない。そこで、この加算演
算部に変更を加える。
【0056】まず、A×BとCとの大小比較、及び仮数
値の桁揃えのためのシフト量を求めるための減算器(前
述した図15における減算回路1003に相当する回
路)を、(N+1)ビット入力が行なえるように変更す
る。
【0057】次に、A×Bの乗算結果の値における(2
M+1)ビット仮数部を、Mビットの高位部分と、(M
+1)ビットの低位部分とに単純に分割し、それぞれ同
じ精度を有する浮動小数点数H、Lの仮数部とする。こ
れは、A×Bの演算結果とCとの仮数値の加算を行なう
回路として(2M+1)ビットの加算器を用いることは
回路規模の増大に繋がるので、予めA×Bの演算結果の
仮数値をその上位部分と下位部分とに分割するように
し、これらとCの仮数値との加算を求めるようにするこ
とによってその回路規模の増大を抑えることを意図して
行なうものである。
【0058】ところが、Lの仮数値は乗算結果の値の仮
数値の下位を切り取っただけなので、このままではIE
EE浮動小数点数の表現形式に沿ったものとはならな
い。これをIEEE浮動小数点数の表現形式に準拠した
ものとするためには、(M+1)ビットの低位部分にお
ける最も左の、すなわち最も上位のビット位置のひとつ
上の位置の値が暗黙の1となるように左シフトを行な
い、更にその暗黙の1を切り取る必要がある。
【0059】また、Hの指数部についてはA×Bの乗算
結果の値における(N+1)ビットの指数部に何ら変更
を加える必要はないが、Lの指数部は、仮数部に対して
行なわれた左シフトの量に応じた値の修正が必要とな
る。このときのLの指数値は、仮数部に対して行なわれ
た左シフトの量をZとすると、次式で求めることができ
る。
【0060】 (Lの指数値)=(Hの指数値) −(M+1+Z) なお、上式において、Hの指数値がM+1以下のときに
はLの指数値が負になってしまう場合があるが、この場
合はLの指数値を0とする。このようにすると、Lは実
際の値と異なるものになってしまうが、この値でもその
後の演算が正しく行われることは保証される。このこと
について説明する。
【0061】HとLの指数部には(N+1)ビットが割
り当てられており、このときのバイアス値がB2であ
る。また、Cの指数部にはNビットが割り当てられてお
り、バイアス値がB1である。
【0062】ここで、仮にCの指数値が、表現し得る最
小の値を示す「0」で、Hの指数値が「M+1」である
とすると、CとHの指数値の差は、 (0−B1)−(M+1−B2)=B2−B1−M−1 となる。通常、バイアス値はその指数部がとり得る最大
値のほぼ2分の1の値が与えられるので、上式のB1及
びB2にこの値を代入すると、 B2−B1−M−1≒(2N+1 −1)/2−(2N −1)/2−M−1 =2N-1 −M−1 これは、例えば図14に示す表の数値を用いれば、単精
度なら104、倍精度なら971、拡張精度なら162
71となる。つまり、Cがその精度内で最も小さい値を
取っても、Hの指数値がM以下のときであればA×Bの
演算結果はCに比べて十分小さなものであり、無視し得
る程度の大きさのものとなっていることを意味する。つ
まり、少なくともA×B+Cの演算結果をA、B、Cを
同一の精度で求める限りにおいては、Lの指数値の多少
のずれはそれほど重要ではないといえるのである。
【0063】このようなデータ操作を行なう回路を加算
演算部に追加する。以上までに説明した、A×Bの乗算
結果の値における仮数値についての分割の様子を図2に
示す。
【0064】図2において、(1)にはIEEE規格に
準拠する、指数部にNビットが割り当てられ仮数部にM
ビットが割り当てられている浮動小数点数A、Bが示さ
れており、これらの各々から仮数部が抽出されて暗黙の
1が付された様子が(2)に示されている。そして、こ
れらの乗算結果の仮数部は、(3)に示すように、暗黙
の1と(2M+1)ビットで表現される。その後、
(4)に示すように、この仮数部がMビットからなる高
位部分と(M+1)ビットからなる低位部分とに分割さ
れる。そして、(5)に示すように、高位部分はこのま
まIEEE規格に準拠する浮動小数点数Hとなり、低位
部分は左方向へのビットシフトが行なわれ更に暗黙の1
が削除されてIEEE規格に準拠する浮動小数点数Lと
なる。但し、このLの仮数部には(M+1)ビットが割
り当てられ、Lの指数部にはビットシフトの量に応じた
値の修正が行なわれる。
【0065】次にA×Bの演算結果とCとの加算を行な
う加算器について説明する。前述したように、この加算
器では、C、H、Lの3つの浮動小数点数の加算を2回
に分けて行なうのであるが、既存の浮動小数点数演算器
の加算演算部では暗黙の1を含む(M+1)ビットの加
算にしか対応していないため、この加算演算部で加算を
行なうと(M+1)ビットで表現可能な桁より下位の桁
の値に対しては丸め処理が施され、切り捨てられてしま
う。そこで、本発明においては、原則としてLについて
の加算を先に行なうようにする。つまり、本実施形態で
は、通常はCとLとの加算を先に行なってその結果とH
の加算を後に行なうようにする。
【0066】ところが、後で行なう加算において正規化
を行なう必要が生じた場合には、先に行なわれたCにつ
いての加算で丸め処理により切り捨てられてしまった下
位の桁の値に関する情報が必要になるが、上記の順で和
を求めると、後の加算のときにはすでに下位の桁の値は
丸め処理によって失われてしまっている。そこで、この
ような場合が生じるか否かを先に判定するようにし、こ
のような場合が生じるときには加算の順番を逆にする。
つまり、本実施形態においては、この場合にはCとHと
の加算を先に行ない、その結果とLの加算とを後に行な
うようにする。
【0067】以下、上述した手法の詳細について説明す
る。まずは通常の場合から説明する。HとCとの符号が
同じであるか、または、HとCの符号が異なり且つHの
指数値とCの指数値との差が1以上(但し、Hの指数値
とCの指数値との差が1で且つ両者のうち指数値が大き
い方の仮数値の最上位ビットが0の場合を除く)の場合
には、加算結果の値における仮数値に対する正規化が生
じないか、または起こったとしても高々1ビットのビッ
トシフトによる正規化が生じるに過ぎないので、特段の
処理は不要である。そこで、この場合にはLとCとの加
算を先に行ない、その結果とHとの加算を後に行なうと
いう順番で和を求める。
【0068】ここで、上述した加算を行なう加算器は、
図3に示すように、加算演算の中間結果として、仮数部
の最下位ビットの下の第一番目のビットであるGビット
(Guard ビットなどとも称されている)、第二番目のビ
ットであるRビット(Roundビットなどとも称されてい
る)、及び第三番目以下の全てのビットの論理和を取っ
たビットであるKビット(Stickyビットなどとも称され
ている)を出力するように構成する。
【0069】通常の加算演算部ではこのGRKビットに
基づいて演算結果の仮数値に丸めの処理を施したものが
出力されるので、演算結果にはGRKの値は現れない。
しかし、ここで使用する加算器では、このような丸めの
処理が施される前の加算結果の仮数値が出力されるよう
にし、更にGRKの各ビットの値も出力されるように既
存のIEEE浮動小数点数演算器に変更を加える。な
お、このGRKの各ビットは、加算対象である2つの仮
数値のうちの一方を桁揃えのためにビットシフトさせた
ときに求めることができる。
【0070】この第一の加算結果、すなわちLとCとの
加算結果をPとする。このPはNビットからなる指数値
と、Mビットからなる仮数値と、GRKの各ビットを有
するものとする。本来、このPの値としては仮数値とし
てビット幅に制限のない値を持つことができるように構
成するべきだが、回路規模の要請を考慮し、PがGRK
の各ビットの値を持つことでこれを補うようにするので
ある。またこのとき指数値がNビットとなるのは、既存
のIEEE浮動小数点数演算器をそのまま流用すること
により指数補正が行なわれることによるものである。し
たがって、前述した乗算演算部からの演算結果の指数値
に対して行なったものと同様の(N+1)ビットへの変
換をここでも行なう必要がある。
【0071】次に、指数値が(N+1)ビットに変換さ
れたPとHとを、先の加算演算を行なわせたものと同一
の加算器に入力して第二の加算結果を求めさせる。ここ
で、Pの指数値がHの指数値よりも大きい場合には、H
の仮数値に対して桁揃えの処理が行なわれ、このときH
についてのGRKの各ビットが生成される。このHにつ
いてのGRKの各ビットをG’R’K’と示すこととす
る。
【0072】ところで、この場合では、先に行なわれた
第一の加算においてPにも既にGRKが存在している。
このように両オペランドにGRKが存在するときには、
Kビットの基である仮数部の最下位ビットの下の第三番
目以下の桁のビットからの繰り上がりの様子が予測でき
ないため演算が破綻してしまう。
【0073】例えば、仮数部の最下位ビット以下が2進
で10110…である値Xと、00100…である値Y
とについてX+Yを求めると、その加算結果の仮数部最
下位ビット以下の値は11010…となる。このとき、
X、Y、X+YについてのGRKの各ビットの値はそれ
ぞれ「101」、「001」、「111」である。
【0074】同様に、仮数部の最下位ビット以下が2進
で10010…である値X'と、00010…である値
Y'とX'+Y'を求めると、その加算結果の仮数部最下
位ビット以下の値は10100…となる。このとき、
X’、Y’、X’+Y’についてのGRKの各ビットの
値はそれぞれ「101」、「001」、「101」であ
る。
【0075】つまり、X及びX’と、Y及びY’とのG
RKの各ビットの値はそれぞれ同じであるにもかかわら
ず、X+YとX’+Y’とのGRKの各ビットの値は異
なってしまう。この結果は、X+YについてはKビット
の基である桁からの繰り上がりがあるが、X’+Y’に
ついてはその桁からの繰り上がりがないために生じたも
のである。しかも、この繰り上がりの発生は、仮数部以
下の正確な値を保持しなくては予測できない。
【0076】ところが、今回の計算ではその繰り上がり
がないことが保証されている。このことについて説明す
る。まず、Pの指数値がHの指数値よりも大きいとき
は、第一の加算を行なう以前の浮動小数点数C、H、L
の大きさの関係は、Cが一番大きく、その後にH、Lと
なるのは明らかである。
【0077】また、C及びHに割り当てられている桁数
の関係を考慮すれば、この場合におけるC、H、Lの仮
数値は図4に示すような関係となっているはずである。
つまり、第一の加算結果であるPはLとCとの和である
から、このPの仮数値は結局Cの仮数値をそのまま引き
継いだものに過ぎないのである。また、このときのPに
おけるGRKの各ビットはLの仮数値に基づいて作成さ
れていることも明らかである。
【0078】ここで、Pの方がHよりも大きいので、第
二の加算における桁揃えではHの仮数値の右シフトが行
われる。従って、Hの仮数部の最下位ビット以下にある
部分に基づいてG’R’K’が生成される。
【0079】ところで、HとLとはA×Bの演算結果の
値の仮数値を2つに分割したものであるから、HとLと
の仮数値において同一桁の重複が存在することはない。
しかも、上述したように、GRKの各ビットはLより、
一方G’R’K’の各ビットはHよりそれぞれ生成され
ることから、これらのGRKとG’R’K’との各ビッ
トが互いに重複している部分はないといえる(図4参
照)。
【0080】以上のことから、PとHとの加算において
は、Kビットの基である桁からの繰り上がりは生じない
といえ、更に、GとRとからの繰り上がりも生じないと
いえる。よって、第二の加算結果の値についての最終的
なGRKの各ビットの値(この値をそれぞれG''、
R''、K''とする)は、G''=G’∪G、R''=R’∪
R、K''=K’∪Kという演算によって求めてよいこと
が分かる。
【0081】上述した論理演算によりこのG''R''K''
の各ビットの値を求め、これらの値に基づいて第2の演
算結果の値に丸めの処理を施したものをA×B+Cの積
和演算の最終結果として出力する。
【0082】なお、Hの指数値がPの指数値よりも大き
い場合には、Pに対して桁揃えが施されるので、新たな
GRKの各ビットの値が生成されるが、その後の計算は
通常の加算と同じように、新たに求められたGRKの各
ビットの値に基づいて丸めの処理を加算演算の結果に対
して施し、これを積和演算の最終結果とする。
【0083】次に、前述した通常の場合から外れる場
合、すなわち、HとCの符号が異なる場合であってHの
指数値とCの指数値とが一致している場合、または、H
とCの符号が異なる場合であってHの指数値とCの指数
値との差が1であり且つ両者のうち指数値が大きい方の
仮数値の最上位ビットが0である場合について説明す
る。
【0084】上述した場合では、A×Bの演算結果とC
との加算を行なったときに必ず1ビット以上の正規化を
行なう必要が生じる。このような場合にLとCとの加算
を先に行なうと、この第一の加算のときに演算結果に施
される丸めの処理と、その後の第一の加算結果とHとの
和の演算結果に施される正規化によって、所定の精度を
維持するために必要な情報が失われてしまうことにな
る。そのため、前述した通常の場合とは逆の順番、すな
わちHとCとを上述した加算器に入力してNビットの指
数部とMビットの仮数部とからなる第一の加算結果Pを
先に求める。この第一の加算では1ビット以上の正規化
が生じるが、2つのオペランドの指数値の差は1以内に
過ぎないので桁揃えのためのビットシフトは発生しない
ためGRKは発生しない。よって、このときPとLとを
加算する第二の加算では、通常の加算と同じように、第
一の演算結果Pの指数部を(N+1)ビットに変換した
ものとLとを第一の加算において用いられたものと同一
の加算器に入力して第二の加算結果とそのときのGRK
の各ビットの値を求めればよい。そしてその後、このG
RKを基に第二の演算結果に丸めの処理を施し、その結
果得られた値を積和演算の最終結果とするようにする。
【0085】以上の原理に沿った積和演算を行なえる演
算装置の具体的な構成例について説明する。図5は本発
明を実施する演算装置の構成を示す図である。この演算
装置は、IEEEの倍精度浮動小数点数についての規格
に準拠する、符号に1ビットが割り当てられ指数部に1
1ビットが割り当てられ仮数部に52ビットが割り当て
られている計64ビットからなる3つの浮動小数点数
A、B、Cについての積和演算A×B+Cを、以上まで
に説明した原理に従って実行するものである。なお、こ
こでは説明を簡単にするために、A×Bの演算結果とC
との符号は一致しているものとする。
【0086】OP1R(OP1レジスタ)109及びO
P2R(OP2レジスタ)110は浮動小数点乗算器1
12または浮動小数点加算器113のいずれかに入力す
る数値データが格納されるレジスタである。これらのう
ち、OP1R109については64ビットのビット幅を
有するように構成する。また、OP2R1110のビッ
ト幅については後述する。
【0087】RR(リザルトレジスタ)111は、浮動
小数点乗算器112または浮動小数点加算器113のい
ずれかから出力される演算結果である数値データが格納
されるレジスタである。
【0088】これらのOP1R109、OP2R11
0、及びRR111の各レジスタに格納される数値デー
タの選択はレジスタ制御回路105によって制御され
る。A×Bの演算を実行するのであれば、A及びBの値
がそれぞれOP1R109及びOP2R110に格納さ
れた状態で浮動小数点乗算器112が乗算命令に従って
動作するとその演算が実行され、その演算結果がRR1
11に格納される。
【0089】ここで図6について説明する。同図は図5
における浮動小数点乗算器の詳細構成を示している。こ
の浮動小数点乗算器112はIEEE浮動小数点数の乗
算に対応しており、仮数部乗算器202は仮数部の正確
な乗算結果を算出し、その乗算結果を格納する106ビ
ットの仮数部乗算結果レジスタ211を有している。
【0090】通常の乗算であれば、この仮数部乗算結果
レジスタ211に格納されたデータは丸め演算回路21
2へ送られて丸め処理が施された後、暗黙の1を含めた
上位53ビットの数値データのみが仮数値として出力さ
れ、残された下位ビットのデータは棄てられる。これに
対し、浮動小数点数A、B、Cについての積和演算A×
B+Cについては、仮数部乗算結果レジスタ211に格
納されたデータに対して丸め演算回路212による丸め
処理が施されることなく、上述した下位ビットのデータ
を廃棄することなく出力するためのバスが仮数部乗算結
果レジスタ211に追加される。
【0091】具体的には、仮数部乗算結果レジスタ21
1に格納された106ビットのデータのうちの上位の5
3ビットから暗黙の1を除いた52ビットの仮数部デー
タについての浮動小数点数値データHと、仮数部乗算結
果レジスタ211に格納されたデータのうちの下位の5
3ビットの仮数部データについての浮動小数点数値デー
タLとを出力するようにし、このH及びLの出力を2回
に分けてRR111に格納するようにする。
【0092】ここで、H及びLの符号ビットには、Ex
−OR(Exclusive-OR)213によって求められてS
レジスタ(符号レジスタ)204に格納されている、O
P1R109及びOP2R110にそれぞれ格納された
データにおける符号ビットについての排他的論理和の値
が与えられる。
【0093】また、Hの指数部には、指数部演算部20
1によって求められて上位データ用指数値レジスタ20
7に格納されている、OP1R109及びOP2R11
0にそれぞれ格納されたデータにおける指数値の加算結
果が与えられる。更に、Lの指数部には、加算器203
によって求められて下位データ用指数値レジスタ210
に格納されている、OP1R109及びOP2R110
にそれぞれ格納されたデータにおける指数値の加算結果
から「−53」を減じた値が与えられる。この加算器2
03による「−53」の加算は、Hの値を基準としたと
きのLの値の桁揃えを行なうためのものである。
【0094】以上のようにしてH及びLは求められる
が、図5においては浮動小数点乗算器112に乗算結果
レジスタ114を示し、乗算結果がこのH及びLが乗算
結果レジスタ114に格納されるものとして示してい
る。
【0095】また、この浮動小数点乗算器112から
は、H及びLに加え、Hについてのオーバーフロー及び
アンダーフローの情報として、上位データ用オーバーフ
ローレジスタ205に格納されている、指数部演算部2
01による加算によってオーバーフローが生じたことを
示すデータOFHと、上位データ用アンダーフローレジ
スタ206に格納されている、指数部演算部201によ
る加算によってアンダーフローが生じたことを示すデー
タUFHとが出力され、更に、Lについてのオーバーフ
ロー及びアンダーフローの情報として、下位データ用オ
ーバーフローレジスタ208に格納されている、加算器
203による加算によってオーバーフローが生じたこと
を示すデータOFLと、下位データ用アンダーフローレ
ジスタ209に格納されている、加算器203による加
算によってアンダーフローが生じたことを示すデータU
FLとが出力される。
【0096】これらのオーバーフロー及びアンダーフロ
ーの情報は、既存の演算装置であれば一旦ラッチされた
後にCPU等の制御ユニットにその情報が報告されるの
であるが、この演算装置においてA×B+Cの積和演算
を実行するときには、A×BとCとについての2回に分
けて行なわれる加算においてもこれらの情報が用いられ
るため、これらの情報を適切なタイミングで浮動小数点
加算器113に提供できるようにするための回路が必要
となる。
【0097】このための回路が、図5における4つのラ
ッチレジスタOF1R101、OF2R102、UF1
R106、UF2R107と、2つのセレクタ103及
び108である。
【0098】ここで、直列に接続されているOF1R1
01及びOF2R102の2つのラッチレジスタがOF
H及びOFLと、浮動小数点加算器113による演算で
のオーバーフローを示すデータであるOFSとのラッチ
を行ない、直列に接続されているUF1R106及びU
F2R107の2つのラッチレジスタがUFH及びUF
Lと、浮動小数点加算器113による演算でのアンダー
フローを示すデータであるUFSとのラッチを行なう。
【0099】また、OF2R102によるラッチの前後
のオーバーフロー情報の選択を行なうセレクタ103、
及びUF2R107によるラッチの前後のアンダーフロ
ー情報の選択を行なうセレクタ108はレジスタ制御回
路105によって制御される。
【0100】ところで、Lの仮数部は正規化が施されて
おらず、また暗黙の1についての処置も施されていない
ので、Lの値は、IEEE規格の表現形式から外れてい
る、全体で65ビットのデータとなっている。そのた
め、このLの値を格納することになるRR111は、既
存のIEEE倍精度浮動小数点数の演算に対応している
演算装置が有している結果格納レジスタは64ビットの
ビット幅であるものが一般的であるのに対し、65ビッ
トのビット幅を有するように構成する。
【0101】但し、RR111のビット幅を65ビット
とする代わりに、図7に示すように仮数部正規化回路2
14と指数部減算器215とからなる下位データ正規化
部216を浮動小数点乗算器112に設け、Lの仮数値
の正規化とそれに伴うLの指数値の変更を行なってから
暗黙の1を除いた値を乗算結果におけるLの仮数値とし
て浮動小数点乗算器112から出力するようにすれば、
RR111のビット幅を既存の演算装置と同様の64ビ
ット幅に留めることもできる。なお、このときのOFL
及びUFLのデータとしては、加算器203と指数部減
算器402とで生じたオーバーフロー若しくはアンダー
フローの論理和をそれぞれ出力する。
【0102】浮動小数点乗算器112から出力されるH
及びLをRR111に格納する順番は、Hを先、Lを後
とする。これは、この演算装置においてA×B+Cの積
和演算を実行するときにおけるA×BとCとについての
2回に分けて行なわれる加算の順序の決定、すなわちL
とCとの加算を先とするか、あるいはHとCとの加算を
先とするかの決定は、前述したようにHとCとの比較結
果に基づいて行なわれるため、Hを先にRR111へ転
送した方がこのHとCとの比較を早く開始することがで
きるからである。
【0103】判定回路115には、図8に示されてい
る、上述したHとCとの比較結果に基づいて加算順序を
決定するための回路が設けられている。図8において、
SH及びSCはそれぞれH及びCの符号ビットであり、
Ex−OR301によってこれらの符号ビットの一致・
不一致が判定される。
【0104】EH及びECはそれぞれH及びCの指数値
であり、Ex−OR302及びNOR303によってH
とCとの指数部の全ビットの一致・不一致が判定され
る。なお、図8におけるNOR303の入力部分は、E
x−OR302をH及びCの指数部の各ビットにひとつ
ずつ設け、全ビットをビット毎に比較することを簡略化
して表現したものである。
【0105】加算器304及び加算器307はEH及び
ECに「1」を加算する回路である。つまり、加算器3
04、Ex−OR305、及びNOR306によって、
Cの指数値に「1」を加算した値とHの指数値との全ビ
ットの一致・不一致が判定され、加算器307、Ex−
OR308、及びNOR309によって、Hの指数値に
「1」を加算した値とCの指数値との全ビットの一致・
不一致が判定される。
【0106】また、F0H及びF0Cは、それぞれH及
びCの仮数部の最上位ビットである。従って、NOR3
03、NOR306、及びNOR309の出力がそれぞ
れ入力されるOR310の出力は、HとCの符号が異な
る場合であってHの指数値とCの指数値との差が1であ
り且つ両者のうち指数値が大きい方の仮数部の最上位ビ
ットが0である場合であるか否かの判定結果を示すもの
となる。
【0107】以上のことから、Ex−OR301の出力
とOR310の出力とが入力されるAND311の出力
は、A×BとCとについての2回に分けて行なわれる加
算の順序を決定するための信号となっていることが分か
る。
【0108】なお、判定回路115に上述した判定を行
なわせるためには、H及びCの値がOP1R109、O
P2R110、又はRR111のいずれかに格納されて
いる必要がある。
【0109】図5の説明に戻る。浮動小数点乗算器11
2から出力されるHがRR111に格納されるのと同じ
タイミングでOFH及びUFHをそれぞれOF1R10
1及びUF1R106に格納する。
【0110】次のタイミングでは、浮動小数点乗算器1
12から出力されるLをRR111に格納すると共に、
OFL及びUFLをそれぞれOF1R101及びUF1
R106に格納する。このとき、それまでRR111に
格納されていたHはOP2R110に移動させるように
する。また、それまでOF1R101及びUF1R10
6に格納されていたデータはそれぞれOF1R102及
びUF1R107に移される。更に、このタイミングで
Hの値とCの値とに基づく判定を判定回路115に行な
わせる。このために、予めCの値をOP1R109に格
納しておくようにする。なお、Hの値をOP1R109
に格納するようにし、Cの値をOP2R110に格納す
るようにしてもよい。
【0111】次のタイミングでは、判定回路115によ
る判定結果に応じた順序での加算演算が行なわれる。判
定回路115による判定結果がHとCとの加算を先に行
なうべきであると判定した場合には、このタイミングで
OP1R109に格納されている数値データとOP2R
110に格納されている数値データ、すなわちCとHと
が浮動小数点加算器113へと転送され、加算演算が行
なわれる。なお、このときにセレクタ103及びセレク
タ108が制御され、OF2R102に格納されている
OFHデータ及びUF2R107に格納されているUF
Hデータも浮動小数点加算器113へと転送される。こ
れに伴い、OF1R101に格納されているOFLデー
タがOF2R102に移され、UF1R106に格納さ
れているUFLデータがUF2R107に移される。更
にこのタイミングでRR111に格納されているLをO
P2R110へ転送する。
【0112】なお、LがOP2R110に格納されるの
で、浮動小数点演算器112が図6のように構成されて
いるのであれば、OP2R110は65ビットのビット
幅を有するように構成しておく必要があるが、浮動小数
点演算器112が図7のように構成されているのであれ
ば、OP2R110は64ビットのビット幅を有するよ
うに構成すればよい。なお、このOP2R110の構成
に対する要求については、判定回路115の判定結果と
は無関係である。
【0113】一方、判定回路115による判定結果がL
とCとの加算を先に行なうべきであると判定した場合に
は、RR111に格納されているLをOP2R110に
転送し、この次のタイミングでOP1R109に格納さ
れている数値データとOP2R110に格納されている
数値データ、すなわちCとLとを浮動小数点加算器11
3へと転送して加算演算を行なわせる。
【0114】なお、このとき、OP2R110に格納さ
れていたHの値は失われてしまうので、前のタイミング
でRR111からOP2R110にHを転送したとき
に、併せてこのHの値をTMPR(テンポラリレジス
タ)104にも格納しておくようにする。
【0115】また、CとLとが浮動小数点加算器113
へと転送されるタイミングにおいてセレクタ103及び
セレクタ108が制御され、OF1R101に格納され
ているOFLデータ及びUF1R106に格納されてい
るUFLデータも浮動小数点加算器113へと転送され
る。なお、この場合には、OF2R102に格納されて
いるOFHデータ、及びUF2R107に格納されてい
るUFHデータはそのまま保持される。
【0116】ここで図9について説明する。同図は図5
における浮動小数点加算器113の詳細構成を示してい
る。指数部変換回路401及び402は、OP1R10
9及びOP2R110から浮動小数点加算器113へと
転送されてくる数値データにおける11ビットの指数値
のデータを、これらのデータを得るために行なわれた演
算によって生じたオーバーフロー若しくはアンダーフロ
ーについての情報を利用して12ビットのデータへと変
換するものである。
【0117】指数部変換回路401及び402の詳細構
成は図10に示されている。同図において、EXPはこ
の回路に入力される11ビットの指数値であり、OFは
オーバーフローの発生を示すフラグ、UFはアンダーフ
ローの発生を示すフラグである。そして、加算器507
による加算結果である12ビットの数値がこの回路の出
力となる。
【0118】図10において、OF及びUFが共に
「0」である場合、すなわちEXPの値を求める演算に
おいてオーバーフローもアンダーフローも生じていなか
った場合には、OF及びUFの論理値をそれぞれ反転す
るNOT501及びNOT502の作用により、数値
「1024」がAND503及びOR506を経て加算
器507に入力され、EXPの値に加算される。ここ
で、「1024」とは、EXPの値である11ビットの
指数値に与えられているバイアス値B1が1023であ
り、変換後の12ビットの指数値に与えられるバイアス
値B2を2047としたときの(−B1+B2)の値で
ある。つまり、この場合には、図10に示す回路は前述
した指数値変換式におけるオーバーフロー・アンダーフ
ローが共に生じていない場合の変換式の計算を実行する
ものとなる。
【0119】また、図10において、OFが「1」でU
Fが「0」の場合、すなわちEXPの値を求める演算に
おいてオーバーフローが生じていた場合には、数値「2
056」がAND504及びOR506を経て加算器5
07に入力され、EXPの値に加算される。ここで、
「2056」とは、前述した場合と同様に、B1が10
23であって、B2を2047とし、更に、この演算装
置における指数部演算部201及び加算器203(更に
浮動小数点乗算器112が図7の構成を有している場合
には指数部減算器215)において指数補正のために使
用されていた定数βから求まる値α(β=2のα乗)が
いずれも「1536」であるとしたときの(−B1+B
2+α)の値である。つまり、この場合には、図10に
示す回路は前述した指数値変換式におけるオーバーフロ
ーが生じた場合の変換式の計算を実行するものとなる。
【0120】更に、図10において、OFが「0」でU
Fが「1」の場合、すなわちEXPの値を求める演算に
おいてアンダーフローが生じていた場合には、数値「−
512」がAND505及びOR506を経て加算器5
07に入力され、EXPの値に加算される。ここで、
「−512」とは、前述した場合と同様に、B1が10
23であって、B2を2047とし、更に、αが「15
36」であるとしたときの(−B1+B2−α)の値で
ある。つまり、この場合には、図10に示す回路は前述
した指数値変換式におけるアンダーフローが生じた場合
の変換式の計算を実行するものとなる。
【0121】以上のように、図10に示されている回路
は、前述した指数値変換式に従って11ビットの指数値
のデータを12ビットのデータへと変換する。図9の説
明へ戻る。指数部比較部403は、2つの指数部変換部
401及び402から出力される指数値データを比較し
てそのどちらが大きいかの判定を行なうと共に、その両
者の差を算出する。この指数部比較部403は、図15
に示した従来の積和演算器における減算回路1003に
相当する機能を実行するものである。
【0122】仮数部選択回路404は、指数部比較部4
03から出力されるセレクト信号、すなわち2つの指数
部変換部401及び402から出力される変換された指
数値データのうちでそのどちらの値が大きいかを示す信
号に基づき、OP1R109及びOP2R110から浮
動小数点加算器113へと転送されてくる数値データの
うちその変換後の指数値の大きい方についての仮数値を
絶対値加算回路406の一方の入力へと出力し、小さい
方についての仮数値をアライン回路405へ出力する。
この仮数部選択回路404は図15に示した従来の積和
演算器における仮数部選択回路1004に相当する機能
を実行するものであるが、その入出力を、OP1R10
9側の入力については52ビットのビット幅、OP1R
側の入力及び2つの出力については53ビットのビット
幅を有するように構成することができ、回路規模の増大
が抑制される。更に、浮動小数点演算器112が図7の
ように構成されているのであれば、全ての入出力で52
ビットのビット幅を有するように構成することができ
る。
【0123】アライン回路405は、指数部比較部40
3から出力されるシフト量情報、すなわち2つの指数部
変換部401及び402から出力される変換された2つ
の指数値の差、つまりOP1R109及びOP2R11
0から浮動小数点加算器113へと転送されてくる数値
データのうちその変換後の指数値の小さい方についての
仮数値の小数点を桁揃えのために移動させるときの移動
量を示す情報に基づいて、仮数部選択回路404から与
えられた仮数値の小数点を移動させ、その移動させた後
の仮数値を絶対値加算回路406のもう一方の入力へと
出力する。このアライン回路405は図15におけるア
ライン回路1005に相当する機能を実行するものであ
るが、その入出力を共に53ビット(浮動小数点演算器
112が図7のように構成されているのであれば52ビ
ット)のビット幅として構成することができる。
【0124】絶対値加算回路406は、仮数部選択回路
404及びアライン回路405から与えられた、桁揃え
がなされているOP1R109及びOP2R110から
浮動小数点加算器113へと転送されてくる数値データ
のうちの仮数値についての53ビットのビット幅での加
算を行なう。なお、浮動小数点演算器112が図7のよ
うに構成されているのであればここで暗黙の1を付加し
た53ビットのビット幅での加算を行なう。この絶対値
加算回路406は図15における絶対値加算回路100
6に相当する機能を実行するものであるが、ここでも回
路規模の増大が抑制されている。
【0125】先行0カウンタ407は、絶対値加算回路
406による演算結果である仮数値を表現しているビッ
ト列における最上位から並ぶ「0」の数を計数する。正
規化処理部408では、絶対値加算回路406による演
算結果である仮数値が正規化数の存在範囲内に収まるよ
うにするために、その仮数値を表現しているビット列
を、シフト量情報で示される数、すなわち先行0カウン
タ407による計数値に相当するビット数だけ左シフト
する。
【0126】この先行0カウンタ407及び正規化処理
部408は、図15においても正規化回路1006が本
来備えることとなるものであるが、絶対値加算回路40
6の出力が53ビットのビット幅なので、ここでも図1
5の積和演算器に比べて回路規模が小さくなる。
【0127】セレクタ409は、指数部比較部403か
ら出力されるセレクト信号に基づき、OP1R109及
びOP2R110から浮動小数点加算器113へと転送
されてくる数値データのうち指数部変換部401及び4
04によって変換された後の指数値の大きい方、すなわ
ち、絶対値加算回路406で行なわれる仮数値同士の加
算における基準である指数値を選択するものであり、図
15におけるセレクタ1009に相当するものである。
【0128】減算器410は、セレクタ1009で選択
された指数値から正規化回路1007から送られてくる
シフト量情報で示される値の減算を行ない、正規化処理
部408で行なわれる左ビットシフトによって生じる仮
数値の増加の補償を指数値に対して施す。
【0129】指数部補正回路411は、減算器410の
出力までは12ビットで表現されている指数値から、I
EEEの倍精度浮動小数点数についての規格に準拠する
11ビットの指数値への補正を行なう回路である。
【0130】指数部補正回路411の詳細構成は図11
に示されている。同図において、EXPはこの回路に入
力される12ビットの指数値である。まず、加算器60
1によって入力された指数値と「−1024」との加算
が実行される。そして、この加算の結果の値を11ビッ
トのビット幅で表現するとき、オーバーフローが生じて
しまうときにはオーバーフローの発生を示すフラグOF
がセットされて出力され、また、アンダーフローが生じ
てしまうときにはアンダーフローの発生を示すフラグU
Fがセットされて出力される。従って、OF及びUFの
論理値をそれぞれ反転するNOT602及びNOT60
3の作用により、加算器601でOF及びUFが共にセ
ットされなかったとき、すなわち加算器601による加
算の結果の値を11ビットのビット幅で表現してもオー
バーフローもアンダーフローも生じなかったときには、
加算器601による加算結果はAND606及びOR6
09を経てこの回路から11ビットの指数値として出力
される。ここで、「−1024」という数値は、EXP
の値である12ビットの指数値に与えられているバイア
ス値B1が2047であり、指数補正後の11ビットの
指数値に与えられるバイアス値B2が1023であると
きの(−B1+B2)の値であり、EXPの値にこの
(−B1+B2)の値を加算することで12ビットから
11ビットの指数補正が行なえることは前述した説明よ
り明らかである。
【0131】一方、加算器601でOFがセットされた
とき、すなわち加算器601による加算の結果の値を1
1ビットのビット幅で表現するとオーバーフローが生じ
たときには、加算器601による加算結果に更に「−1
536」が加算器604によって加算され、その加算結
果がAND607及びOR609を経てこの回路から1
1ビットの指数値として出力される。ここで、「153
6」という数値は、前述した図10の説明で用いたαの
値である。つまり、EXPの値に前述した(−B1+B
2)の値を加算した結果を11ビットのビット幅で表現
するとオーバーフローが生じるときは、この回路はその
値からαの値を減じた結果を11ビットの指数値として
出力すると共に、オーバーフローの発生を示すフラグO
Fを併せて出力するようにしているのである。
【0132】また、加算器601でUFがセットされた
とき、すなわち加算器601による加算の結果の値を1
1ビットのビット幅で表現するとアンダーフローが生じ
たときには、加算器601による加算結果に更に「+1
536」が加算器605によって加算され、その加算結
果がAND608及びOR609を経てこの回路から1
1ビットの指数値として出力される。つまり、EXPの
値に前述した(−B1+B2)の値を加算した結果を1
1ビットのビット幅で表現するとアンダーフローが生じ
るときは、この回路はその値からαの値を加えた結果を
11ビットの指数値として出力すると共に、アンダーフ
ローの発生を示すフラグUFを併せて出力するようにし
ているのである。
【0133】なお、この減算器410及び指数部補正回
路411は、図15においても指数部補正部1010が
本来備えることとなるものである。図9の説明へ戻る。
GRK演算回路412は、正規化処理部408から出力
される仮数値の加算結果に対して丸め回路413が施す
丸めの処理の内容を決定する基となる前述したGRKの
各ビットを得るための回路である。
【0134】丸め回路413は、正規化処理部408か
ら出力された仮数値に対し、GRK演算回路412から
送られてくるGRKの各ビットに基づいて丸めの処理を
施す。
【0135】GRK演算回路412の詳細構成は図12
に示されている。同図において、G’R’K’はアライ
ン回路405において桁そろえのために行なわれた右ビ
ットシフトにより生じたGRKの各ビットである。ま
た、指数部比較部403からはセレクト信号がこの回路
に入力される。このセレクト信号は仮数部選択回路40
4によるデータ選択を制御する信号でもあるから、この
信号より、アライン回路405へ入力された数値データ
が、OP1R109及びOP2R110から浮動小数点
加算器113へと各々転送されてくる数値データのうち
のどちらの仮数値であるかを知ることができる。
【0136】ラッチレジスタ701、702、及び70
3は、浮動小数点加算器113が前回に加算演算を実行
したときにアライン回路405から出力されたGRKの
各ビットの値を一時的に保持する。なお、ラッチレジス
タ701、702、及び703は、A×B+Cの積和演
算で実行される2回の加算における先の加算演算の開始
時にリセットされる。従って、この2回の加算における
後の加算演算が実行されるときには、先の加算演算にお
いてアライン回路405から出力されたGRKの各ビッ
トの値が保持されている。
【0137】ラッチレジスタ701、702、及び70
3がこのような動作をするので、この2回の加算におけ
る先の加算演算が実行されたときのGRKの各ビットの
値をG、R、Kとし、後の加算演算が実行されたときの
GRKの各ビットの値をG’R’K’とすると、OR7
04、705、及び706の出力は、それぞれG’∪
G、R’∪R、K’∪Kとなる。
【0138】従って、L+Cを先に加算して行なう2回
の加算における後の加算演算において、L+Cの演算結
果の指数値がHの指数値よりも大きいためアライン回路
405がHの仮数値に対して桁揃えを行なった場合にこ
のOR704、705、及び706の出力がGRK演算
回路412から出力されるようにすれば、前述したよう
に、この出力を丸め回路413での丸めの処理の基とす
ることができる。
【0139】ここで、Hの仮数値はOP2R110から
転送されてくる数値データの一部である。従って、指数
部比較部403から出力されるセレクト信号が、OP2
R110から転送されてくる数値データの仮数部をアラ
イン回路405に入力させるように仮数部選択回路40
4を切り換える信号であるときには、OR704、70
5、及び706の出力がGRK演算回路412から出力
されるようにセレクタ708を構成する。
【0140】一方、L+Cを先に加算して行なう2回の
加算における後の加算演算においてHの指数値がL+C
の演算結果の指数値よりも大きいときには、アライン回
路405はL+Cの演算結果の仮数値に対して桁揃えを
行なったものについてのGRKの各ビットを出力する。
従って、丸め回路413での丸めの処理の基とするGR
Kの各ビットとしては、G及びRの両ビットについては
このアライン回路405の出力をそのまま使用し、Kビ
ットについては、このアライン回路405の出力のKビ
ットと先に行なわれたL+Cの加算演算において廃棄さ
れた全ての下位ビットとの論理和、すなわちアライン回
路405の出力のKビットとラッチレジスタ701、7
02、及び703に保持されている先の加算演算時のG
RKの各ビットとの論理和を使用すればよい。
【0141】つまり、指数部比較部403から出力され
るセレクト信号がOP1R109から転送されてくる数
値データの仮数部、すなわちL+Cの演算結果の仮数値
をアライン回路405に入力させるように仮数部選択回
路404を切り換える信号であるときには、アライン回
路405から送られてくるビットのうち、G及びRの両
ビットについてはこのまま出力され、Kビットについて
はこれとラッチレジスタ701、702、及び703に
保持されている先の加算演算時のGRKの各ビットとを
OR707に入力したときのOR707の出力がGRK
演算回路412から出力されるようにセレクタ708を
構成する。
【0142】なお、H+Cを先に加算して行なう2回の
加算の場合には、前述したように先に行なわれるH+C
の加算ではGRKは発生しないため、ラッチレジスタ7
01、702、及び703にはGRKの各ビットが入力
されない。この場合では、図12に示すGRK演算回路
412から出力されるGRKの各ビットの値は、例えセ
レクタ708がどちらに切り替わったとしてもこの回路
に入力されたGRKの各ビットの値がそのまま出力され
ることは明らかである。
【0143】丸め回路413ではGRK演算回路412
においてこのようにして得られたGRKの各ビットの値
に基づいて正規化処理部408から出力された仮数値に
対して丸めの処理を施す。
【0144】カウンタ414は、この浮動小数点加算器
113で実行される加算の回数を計数し、今回行なわれ
た加算演算がA×B+Cの積和演算で実行される2回の
加算のうちの先の加算であるか後の加算であるかを判別
する。
【0145】セレクタ415、416、及び417は、
カウンタ414での判別結果に基づき、今回行なわれた
加算演算がA×B+Cの積和演算で実行される2回の加
算のうちの先の加算であれば、指数部補正回路411か
らの11ビットの出力を指数値とし、正規化処理部40
8の出力から暗黙の1を取り除いた52ビットの値を仮
数値とする加算演算の結果を出力し、併せて指数部補正
回路411から出力されるOF及びUFの両フラグをそ
れぞれOFS及びUFSとして出力する。一方、今回行
なわれた加算演算がA×B+Cの積和演算で実行される
2回の加算のうちの後の加算であれば、セレクタ41
5、416、及び417は、指数部補正回路411から
の出力に対して必要に応じて丸め回路11によって変更
が加えられた11ビットの値を指数値とし、丸め回路4
13から出力される丸め処理を施された仮数値から暗黙
の1を取り除いた52ビットの値を仮数値とする加算演
算の結果を出力し、併せて丸め回路413から出力され
る、指数部補正回路411又は丸め回路413のいずれ
か若しくは両方から出力されるOF及びUFの両フラグ
をそれぞれOFS及びUFSとして出力する。
【0146】図5に示す演算装置は以上のようにして、
倍精度浮動小数点数A、B、Cについての積和演算A×
B+Cを行なう。なお、これまでに説明したこの演算装
置における乗算・加算の実行やレジスタ間でのデータの
授受は、図5に示す演算装置の各部の動作制御を司る動
作制御部116によって管理される。この動作制御部1
16は、ワイヤードロジックで構成してハードウェアで
これらの管理を実現させるようにするか、あるいは中央
処理ユニットを備えてそこでマイクロコード命令やファ
ームウェアを実行させてソフトウェアでこれらの管理を
実現させるようにする。なお、動作制御部116を設け
る代わりに、この動作管理を図5の演算装置の外部から
行なうようにすることも可能である。
【0147】ソフトウェアによる動作管理を行なうとき
に用いられる擬似命令コードを用いて記述した制御プロ
グラムの一例を図13に示す。図13に示す制御プログ
ラムは、積和演算A×B+CにおけるAの値がOP1R
109に、Bの値がOP2R110にそれぞれ格納され
ている状態で開始される。
【0148】同図において、(1)は、OP1R109
とOP2R110とに格納されているそれぞれの値につ
いてその仮数部を正確に算出する乗算、すなわち、演算
結果の下位部分を丸めずに算出する乗算を浮動小数点乗
算器112に行なわせることを示している。
【0149】(2)は、(1)の乗算結果が格納される
乗算結果レジスタ114におけるH(上位)部分をRR
111へ転送すると共に、Cの値をOP1R109に格
納することを示している。
【0150】(3)は、RR111に格納されている
値、すなわち(1)の乗算結果におけるHの値をOP2
R110とTMPR104とへ同時に転送することを示
している。
【0151】(4)は、OP1R109とOP2R11
0とに格納されているそれぞれの値、すなわちCの値と
Hの値との比較を判定回路115に行なわせると共に、
(1)の乗算結果が格納される乗算結果レジスタ114
におけるL(下位)部分をRR111に転送することを
示している。
【0152】(5)は、(4)で判定回路115に行な
わせた判定結果に基づき、C+Lを先に行なうべきであ
ると判定されたときには処理を(6)に分岐させ、C+
Hを先に行なうべきであると判定されたときには処理を
(10)に分岐させることを示している。
【0153】(6)は、RR111に格納されている
値、すなわち、(1)の乗算結果におけるLの値をOP
2R110へ転送することを示している。(7)は、O
P1R109とOP2R110とに格納されているそれ
ぞれの値、すなわちCの値とLの値との加算を浮動小数
点加算器113に行なわせることを示している。なお、
浮動小数点加算器113での加算の結果は自動的にRR
111へ転送されて格納される。
【0154】(8)は、RR111に格納されている
値、すなわちCの値とLの値との加算結果をOP1R1
09に転送すると共に、TMPR104に格納されてい
る値、すなわちHの値をOP2R110に転送すること
を示している。
【0155】(9)は、OP1R109とOP2R11
0とに格納されているそれぞれの値、すなわちC+Lの
加算結果とHの値との加算を浮動小数点加算器113に
行なわせることを示している。この後にRR111に格
納される値がA×B+Cの積和演算の結果の値である。
【0156】(10)は、OP1R109とOP2R1
10とに格納されているそれぞれの値、すなわちCの値
とHの値との加算を浮動小数点加算器113に行なわせ
ると共に、RR111に格納されている値、すなわち
(4)でRRへ転送されていたLの値をOP2R110
へ転送することを示している。
【0157】(11)は、RR111に格納されている
値、すなわち(10)の加算結果であるC+Hの値をO
P1R109へ転送することを示している。(12)
は、OP1R109とOP2R110とに格納されてい
るそれぞれの値、すなわちC+Hの加算結果とLの値と
の加算を浮動小数点加算器113に行なわせることを示
している。この後にRR111に格納される値がA×B
+Cの積和演算の結果の値である。
【0158】図13に示す制御プログラムは上述した命
令内容を示しており、図5に示す演算装置がこの制御プ
ログラムに記述されている命令に従って動作することに
よって、精度の維持されたA×B+Cの積和演算が行な
われる。
【0159】(付記1)浮動小数点数をビット列で表現
する浮動小数点数データの乗算及び加算を行なうことで
積和演算を実行する積和演算装置であって、前記浮動小
数点数データの乗算を行なう乗算手段と、前記浮動小数
点数データの加算を行なう加算手段と、前記加算手段で
行なわれた加算の結果として得られる浮動小数点数デー
タに丸めの処理を施す丸め手段と、前記浮動小数点数デ
ータである第一のデータと第二のデータとの積へ該浮動
小数点数データである第三のデータを加算する積和演算
の結果が格納される結果格納手段と、前記第一のデータ
と前記第二のデータとの乗算の結果である乗算結果デー
タを前記乗算手段に算出させる乗算制御手段と、前記乗
算結果データにおける仮数部を表現するビット列を該仮
数部における上位の桁を表現するものと該仮数部におけ
る下位の桁を表現するものとの2つに分割したうちの該
下位の桁を表現するビット列を仮数部とする下位乗算結
果データに、前記第三のデータを加算して得られる第一
加算結果データを前記加算手段に算出させる第一加算制
御手段と、前記第一加算結果データに前記上位の桁を表
現するビット列を仮数部とする上位乗算結果データを加
算して得られる第二加算結果データを前記加算手段に算
出させる第二加算制御手段と、を有し、前記結果格納手
段には、前記第二加算結果データに対する丸めの処理が
前記丸め手段によって施されて得られる浮動小数点デー
タである第一の積和演算結果データが格納される、こと
を特徴とする積和演算装置。 (付記2)前記浮動小数点数データの表現形式は、IE
EE(The Institute ofElectrical and Electronics E
ngineers, Inc. )の2進浮動小数点算術演算について
の規格であるIEEE−754規格に準拠していること
を特徴とする付記1に記載の積和演算装置。 (付記3)前記上位乗算結果データに前記第三のデータ
を加算して得られる第三加算結果データを前記加算手段
に算出させる第三加算制御手段と、前記第三加算結果デ
ータに前記下位乗算結果データを加算して得られる第四
加算結果データを前記加算手段に算出させる第四加算制
御手段と、前記上位乗算結果データと前記第三のデータ
との比較を行なう比較手段と、を更に有し、前記結果格
納手段には、前記比較手段による前記比較の結果に基づ
き、前記第一の積和演算結果データの代わりに、前記第
四加算結果データに対する丸めの処理が前記丸め手段に
よって施されて得られる浮動小数点データである第二の
積和演算結果データが格納される、ことを特徴とする付
記1に記載の積和演算装置。 (付記4)前記比較手段による比較の結果が前記上位乗
算結果データと前記第三のデータとの符号が一致してい
ることを示しているときには、前記結果格納手段には前
記第一の積和演算結果データが格納されることを特徴と
する付記3に記載の積和演算装置。 (付記5)前記比較手段による比較の結果が前記上位乗
算結果データと前記第三のデータとの符号が異なってい
ることを示しているときには、該比較の結果が、該上位
乗算結果データで表現されている指数部の値と該第三の
データとの指数部の値とが一致していることを示してい
る場合に前記第二の積和演算結果データが格納されるこ
とを特徴とする付記3に記載の積和演算装置。 (付記6)前記比較手段による比較の結果が前記上位乗
算結果データと前記第三のデータとの符号が異なってい
ることを示しているときには、該上位乗算結果データで
表現されている指数部の値と該第三のデータとの指数部
の値との差が1であって且つ該乗算結果データと該第三
のデータとでそれぞれ表現されている指数部の値のうち
大きい方のものについての仮数部を表現しているビット
列のうちの最上位のビットが0である場合には前記第二
の積和演算結果データが格納されることを特徴とする付
記3に記載の積和演算装置。 (付記7)前記比較手段による比較の結果が前記上位乗
算結果データと前記第三のデータとの符号が異なってい
ることを示しているときには、該比較の結果が、該上位
乗算結果データで表現されている指数部の値と該第三の
データとの指数部の値とが一致していることを示してい
る場合、若しくは、該上位乗算結果データで表現されて
いる指数部の値と該第三のデータとの指数部の値との差
が1であって且つ該乗算結果データと該第三のデータと
でそれぞれ表現されている指数部の値のうち大きい方の
ものについての仮数部を表現しているビット列のうちの
最上位のビットが0である場合には前記第二の積和演算
結果データが格納され、その他の場合には前記第一の積
和演算結果データが格納されることを特徴とする付記3
に記載の積和演算装置。 (付記8)前記乗算手段による乗算の結果若しくは前記
加算手段による加算の結果を示す浮動小数点数データに
おいて指数部の表現のために割り当てられているビット
数を、該乗算若しくは該加算においてオーバーフロー又
はアンダーフローが生じたことを示す情報に基づいて拡
張する変換を行なう指数部変換手段を更に有し、前記加
算手段で行なわれる加算の対象が前記乗算手段による乗
算の結果若しくは該加算手段自身が以前に行なった加算
の結果を示すデータであるとき、該加算手段は、前記指
数部変換手段による変換が行なわれた後の値が該データ
における指数部の値であるものとして該データの加算を
行なう、ことを特徴とする付記1に記載の積和演算装
置。 (付記9)前記加算手段は、該加算手段で行なわれた加
算の結果として得られる浮動小数点数データに前記丸め
手段が丸めの処理を施すための基とする情報である丸め
処理情報を該加算の結果と併せて出力し、前記丸め手段
は、前記第二加算結果データに対して前記丸めの処理を
施すときには、前記加算手段が前記第一加算結果データ
の算出を行なったときに出力された第一の丸め処理情
報、及び該加算手段が該第二加算結果データの算出を行
なったときに出力された第二の丸め処理情報に基づいて
該丸めの処理を施す、ことを特徴とする付記1に記載の
積和演算装置。 (付記10)前記丸め処理情報は、前記加算手段による
加算の対象とする2つの浮動小数点数データのうちのい
ずれかの仮数部の値に対し、仮数部の値の加算のために
施される桁揃えによって切り捨てられたビット列のうち
の最上位のビットであるガードビット、該最上位のビッ
トの下の桁である第二位のビットであるラウンドビッ
ト、及び該第二位のビットの下の桁以降の全てのビット
の論理和を示すビットであるスティッキービットとを有
し、前記丸め手段は、前記第二加算結果データに対して
前記丸めの処理を施すときには、前記第一の丸め情報に
おけるガードビットと前記第二の丸め情報におけるガー
ドビットとの論理和、該第一の丸め情報におけるラウン
ドビットと該第二の丸め情報におけるラウンドビットと
の論理和、及び該第一の丸め情報におけるガードビット
とラウンドビットとスティッキービットと該第二の丸め
情報におけるスティッキービットとの論理和、に基づい
て該丸めの処理を施す、ことを特徴とする付記9に記載
の積和演算装置。 (付記11)浮動小数点数をビット列で表現する浮動小
数点数データである第一のデータと第二のデータとの積
へ該浮動小数点数データである第三のデータを加算する
積和演算を実行する積和演算方法であって、浮動小数点
数データの乗算を行なう乗算器に前記第一のデータと前
記第二のデータとの乗算を行なわせ、前記乗算の結果で
ある乗算結果データにおける仮数部を表現するビット列
を該仮数部における上位の桁を表現するものと該仮数部
における下位の桁を表現するものとの2つに分割したう
ちの該下位の桁を表現するビット列を仮数部とする下位
乗算結果データに前記第三のデータを加算する演算を浮
動小数点数データの加算を行なう加算器に行なわせ、前
記加算の結果である第一加算結果データに前記上位の桁
を表現するビット列を仮数部とする上位乗算結果データ
を加算して得られる第二加算結果データを前記加算器に
算出させ、前記第二加算結果データに対して丸めの処理
を施して得られたデータを該積和演算の結果とする、こ
とを特徴とする積和演算方法。
【0160】
【発明の効果】以上詳細に説明したように、本発明は、
浮動小数点数をビット列で表現する浮動小数点数データ
である第一のデータと第二のデータとの積へ該浮動小数
点数データである第三のデータを加算する積和演算を実
行するために、第一のデータと第二のデータとの乗算の
結果である乗算結果データにおける仮数部を表現するビ
ット列を該仮数部における上位の桁を表現するものと該
仮数部における下位の桁を表現するものとの2つに分割
し、そのうちの該下位の桁を表現するビット列を仮数部
とする下位乗算結果データと第三のデータとの加算を先
に行ない、該加算の結果と該上位の桁を表現するビット
列を仮数部とする上位乗算結果データとの加算を後に行
なうようにし、その後の加算の結果に対して丸めの処理
を施して得られたデータを該積和演算の結果とする。
【0161】こうすることにより、乗算結果をそのまま
のビット幅で加算器に入力する構成を採る場合に比べて
加算器の回路規模が小さくなり、乗算器から加算器へデ
ータを転送するバスのビット幅も少なくなるので、回路
規模の増大が抑制される。
【0162】また、乗算結果の仮数部における上位の桁
を仮数部とするデータと第三のデータとの加算を先に行
なうとその加算の途中で行なわれる仮数部の桁揃えのた
めに消失してしまう可能性のある第三のデータの下位部
分が消失することなく、十分な演算精度を有することが
できる。
【0163】以上のように、本発明によれば、浮動小数
点数積和演算について十分な演算精度を有する演算装置
を少ない回路規模の増加で実現することが可能となる効
果を奏する。
【図面の簡単な説明】
【図1】指数値の変換を説明する図である。
【図2】乗算結果の値における仮数値の分割を説明する
図である。
【図3】G、R、Kの各ビットを説明する図である。
【図4】Pの指数値がHの指数値よりも大きい場合にお
けるC、H、Lの関係を示す図である。
【図5】本発明を実施する演算装置の構成を示す図であ
る。
【図6】図5における浮動小数点乗算器の詳細構成を示
す図である。
【図7】図5における浮動小数点乗算器の別の例を示す
図である。
【図8】図5における判定回路に設けられている回路の
構成を示す図である。
【図9】図5における浮動小数点加算器の詳細構成を示
す図である。
【図10】図9における指数部変換回路の詳細構成を示
す図である。
【図11】図9における指数部補正回路の詳細構成を示
す図である。
【図12】図9におけるGRK演算回路の詳細構成を示
す図である。
【図13】図5に示す演算装置に積和演算を行なわせる
ための制御プログラムの例を示す図である。
【図14】IEEE規格における浮動小数点数値の表現
形式を示す図である。
【図15】従来の積和演算器の構成例を示す図である。
【図16】丸め処理の例を説明する図である。
【符号の説明】
101、102、106、107、 701、702、703 ラッチレジスタ 103、108、409、415、416、417、7
08、1009 セレクタ 104 テンポラリレジスタ 105 レジスタ制御回路 109 OP1レジスタ 110 OP2レジスタ 111 リザルトレジスタ 112 浮動小数点乗算器 113 浮動小数点加算器 114 乗算結果レジスタ 115 判定回路 116 動作制御部 201 指数部演算部 202 仮数部演算部 203、304、307、507、601、604、6
05 加算器 204 符号レジスタ 205 上位データ用オーバーフローレジスタ 206 上位データ用アンダーフローレジスタ 207 上位データ用指数値レジスタ 208 下位データ用オーバーフローレジスタ 209 下位データ用アンダーフローレジスタ 210 下位データ用指数値レジスタ 211 仮数部乗算結果レジスタ 212 丸め演算回路 213、301、302、305、308 Exclusive-
OR 214 仮数部正規化回路 215 指数部減算器 216 下位データ正規化部 303、306、309 NOR 310、506、609、704、705、706、7
07 OR 311、503、504、505、606、607、6
08 AND 401、402 指数部変換部 403 指数部比較部 404、1004 仮数部選択回路 405、1005 アライン回路 406、1006 絶対値加算回路 407 先行0カウンタ 408 正規化処理部 410 減算器 411 指数部補正回路 412 GRK演算回路 413、1008 丸め回路 414 カウンタ 501、502、602、603 NOT 1001 加算回路 1002 仮数部乗算回路 1003 減算回路 1007 正規化回路 1010 指数部補正部

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 浮動小数点数をビット列で表現する浮動
    小数点数データの乗算及び加算を行なうことで積和演算
    を実行する積和演算装置であって、 前記浮動小数点数データの乗算を行なう乗算手段と、 前記浮動小数点数データの加算を行なう加算手段と、 前記加算手段で行なわれた加算の結果として得られる浮
    動小数点数データに丸めの処理を施す丸め手段と、 前記浮動小数点数データである第一のデータと第二のデ
    ータとの積へ該浮動小数点数データである第三のデータ
    を加算する積和演算の結果が格納される結果格納手段
    と、 前記第一のデータと前記第二のデータとの乗算の結果で
    ある乗算結果データを前記乗算手段に算出させる乗算制
    御手段と、 前記乗算結果データにおける仮数部を表現するビット列
    を該仮数部における上位の桁を表現するものと該仮数部
    における下位の桁を表現するものとの2つに分割したう
    ちの該下位の桁を表現するビット列を仮数部とする下位
    乗算結果データに、前記第三のデータを加算して得られ
    る第一加算結果データを前記加算手段に算出させる第一
    加算制御手段と、 前記第一加算結果データに前記上位の桁を表現するビッ
    ト列を仮数部とする上位乗算結果データを加算して得ら
    れる第二加算結果データを前記加算手段に算出させる第
    二加算制御手段と、 を有し、 前記結果格納手段には、前記第二加算結果データに対す
    る丸めの処理が前記丸め手段によって施されて得られる
    浮動小数点データである第一の積和演算結果データが格
    納される、 ことを特徴とする積和演算装置。
  2. 【請求項2】 前記上位乗算結果データに前記第三のデ
    ータを加算して得られる第三加算結果データを前記加算
    手段に算出させる第三加算制御手段と、 前記第三加算結果データに前記下位乗算結果データを加
    算して得られる第四加算結果データを前記加算手段に算
    出させる第四加算制御手段と、 前記上位乗算結果データと前記第三のデータとの比較を
    行なう比較手段と、 を更に有し、 前記結果格納手段には、前記比較手段による前記比較の
    結果に基づき、前記第一の積和演算結果データの代わり
    に、前記第四加算結果データに対する丸めの処理が前記
    丸め手段によって施されて得られる浮動小数点データで
    ある第二の積和演算結果データが格納される、 ことを特徴とする請求項1に記載の積和演算装置。
  3. 【請求項3】 前記乗算手段による乗算の結果若しくは
    前記加算手段による加算の結果を示す浮動小数点数デー
    タにおいて指数部の表現のために割り当てられているビ
    ット数を、該乗算若しくは該加算においてオーバーフロ
    ー又はアンダーフローが生じたことを示す情報に基づい
    て拡張する変換を行なう指数部変換手段を更に有し、 前記加算手段で行なわれる加算の対象が前記乗算手段に
    よる乗算の結果若しくは該加算手段自身が以前に行なっ
    た加算の結果を示すデータであるとき、該加算手段は、
    前記指数部変換手段による変換が行なわれた後の値が該
    データにおける指数部の値であるものとして該データの
    加算を行なう、 ことを特徴とする請求項1に記載の積和演算装置。
  4. 【請求項4】 前記加算手段は、該加算手段で行なわれ
    た加算の結果として得られる浮動小数点数データに前記
    丸め手段が丸めの処理を施すための基とする情報である
    丸め処理情報を該加算の結果と併せて出力し、 前記丸め手段は、前記第二加算結果データに対して前記
    丸めの処理を施すときには、前記加算手段が前記第一加
    算結果データの算出を行なったときに出力された第一の
    丸め処理情報、及び該加算手段が該第二加算結果データ
    の算出を行なったときに出力された第二の丸め処理情報
    に基づいて該丸めの処理を施す、 ことを特徴とする請求項1に記載の積和演算装置。
  5. 【請求項5】 浮動小数点数をビット列で表現する浮動
    小数点数データである第一のデータと第二のデータとの
    積へ該浮動小数点数データである第三のデータを加算す
    る積和演算を実行する積和演算方法であって、 浮動小数点数データの乗算を行なう乗算器に前記第一の
    データと前記第二のデータとの乗算を行なわせ、 前記乗算の結果である乗算結果データにおける仮数部を
    表現するビット列を該仮数部における上位の桁を表現す
    るものと該仮数部における下位の桁を表現するものとの
    2つに分割したうちの該下位の桁を表現するビット列を
    仮数部とする下位乗算結果データに前記第三のデータを
    加算する演算を浮動小数点数データの加算を行なう加算
    器に行なわせ、 前記加算の結果である第一加算結果データに前記上位の
    桁を表現するビット列を仮数部とする上位乗算結果デー
    タを加算して得られる第二加算結果データを前記加算器
    に算出させ、 前記第二加算結果データに対して丸めの処理を施して得
    られたデータを該積和演算の結果とする、 ことを特徴とする積和演算方法。
JP2001398851A 2001-12-28 2001-12-28 積和演算装置、及び積和演算方法 Expired - Fee Related JP3845009B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001398851A JP3845009B2 (ja) 2001-12-28 2001-12-28 積和演算装置、及び積和演算方法
US10/108,398 US6895423B2 (en) 2001-12-28 2002-03-29 Apparatus and method of performing product-sum operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001398851A JP3845009B2 (ja) 2001-12-28 2001-12-28 積和演算装置、及び積和演算方法

Publications (2)

Publication Number Publication Date
JP2003196079A true JP2003196079A (ja) 2003-07-11
JP3845009B2 JP3845009B2 (ja) 2006-11-15

Family

ID=19189395

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001398851A Expired - Fee Related JP3845009B2 (ja) 2001-12-28 2001-12-28 積和演算装置、及び積和演算方法

Country Status (2)

Country Link
US (1) US6895423B2 (ja)
JP (1) JP3845009B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007096982A1 (ja) * 2006-02-24 2009-07-09 富士通株式会社 演算処理装置および演算処理方法
JP2023509121A (ja) * 2019-12-31 2023-03-07 華為技術有限公司 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225216B1 (en) * 2002-07-09 2007-05-29 Nvidia Corporation Method and system for a 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
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
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US8037119B1 (en) 2006-02-21 2011-10-11 Nvidia Corporation Multipurpose functional unit with single-precision and double-precision operations
US7739324B1 (en) 2006-03-22 2010-06-15 Cadence Design Systems, Inc. Timing driven synthesis of sum-of-product functional blocks
JP4388543B2 (ja) * 2006-12-14 2009-12-24 株式会社日立製作所 3項入力の浮動小数点加減算器
US8051123B1 (en) 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
US8037118B2 (en) * 2007-04-10 2011-10-11 Eric Quinnell Three-path fused multiply-adder circuit
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8495121B2 (en) * 2008-11-20 2013-07-23 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
US20100125621A1 (en) * 2008-11-20 2010-05-20 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
US8468191B2 (en) * 2009-09-02 2013-06-18 Advanced Micro Devices, Inc. Method and system for multi-precision computation
CN113924622B (zh) * 2019-06-04 2022-09-09 美光科技公司 存储器阵列***中的位串累加
US10942889B2 (en) 2019-06-04 2021-03-09 Micron Technology, Inc. Bit string accumulation in memory array periphery
CN111078188A (zh) * 2019-12-16 2020-04-28 广东三维家信息科技有限公司 JavaScript运算中浮点数据处理方法、装置及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4754421A (en) * 1985-09-06 1988-06-28 Texas Instruments Incorporated Multiple precision multiplication device
JPS6280764A (ja) 1985-10-04 1987-04-14 Nec Corp 浮動小数点積和演算器
JPH0833809B2 (ja) 1990-10-02 1996-03-29 富士通テン株式会社 浮動小数点表示データの演算方法
US5241493A (en) * 1991-12-16 1993-08-31 International Business Machines Corporation Floating point arithmetic unit with size efficient pipelined multiply-add architecture
JPH0689300A (ja) 1992-09-07 1994-03-29 Nagano Japan Radio Co Ltiシステムのデータ処理方法
FR2718866B1 (fr) * 1994-04-19 1996-05-15 Sgs Thomson Microelectronics Dispositif de calcul arithmétique et logique et procédé de commande.
US5867413A (en) 1995-10-17 1999-02-02 Hitachi Micro Systems, Inc. Fast method of floating-point multiplication and accumulation
US5880984A (en) 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007096982A1 (ja) * 2006-02-24 2009-07-09 富士通株式会社 演算処理装置および演算処理方法
JP4500358B2 (ja) * 2006-02-24 2010-07-14 富士通株式会社 演算処理装置および演算処理方法
US8549054B2 (en) 2006-02-24 2013-10-01 Fujitsu Limited Arithmetic processing apparatus and arithmetic processing method
JP2023509121A (ja) * 2019-12-31 2023-03-07 華為技術有限公司 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置
JP7407291B2 (ja) 2019-12-31 2023-12-28 華為技術有限公司 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置

Also Published As

Publication number Publication date
US20030126174A1 (en) 2003-07-03
JP3845009B2 (ja) 2006-11-15
US6895423B2 (en) 2005-05-17

Similar Documents

Publication Publication Date Title
JP2003196079A (ja) 積和演算装置、及び積和演算方法
JP3541066B2 (ja) コンピュータにおいて除算および平方根計算を実施するための方法および装置
US10019231B2 (en) Apparatus and method for fixed point to floating point conversion and negative power of two detector
JP4388543B2 (ja) 3項入力の浮動小数点加減算器
US10338889B2 (en) Apparatus and method for controlling rounding when performing a floating point operation
US11119729B2 (en) Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
US10061561B2 (en) Floating point addition with early shifting
US20070038693A1 (en) Method and Processor for Performing a Floating-Point Instruction Within a Processor
US5623435A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
JP7285966B2 (ja) 多入力浮動小数点加算器
GB2559039B (en) Leading zero anticipation
US11366638B1 (en) Floating point multiply-add, accumulate unit with combined alignment circuits
JP2558669B2 (ja) 浮動小数点演算装置
CN112214196A (zh) 浮点异常处理方法及装置
JP2578482B2 (ja) 浮動小数点演算器
GB2386986A (en) Apparatus and method for calculation of divisions and square roots
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
Tyagi et al. A novel hardware efficient reconfigurable 32-bit arithmetic unit for binary, BCD and floating point operands
JP2902041B2 (ja) 浮動小数点数演算装置
JP3100868B2 (ja) 浮動小数点数のための算術演算装置
KR100974190B1 (ko) 부동 소수점을 이용한 복소수 곱셈방법
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
JP3124286B2 (ja) 浮動小数点数演算装置
Natarajan et al. Arithmetic Operations and Circuits

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040823

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060810

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060817

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090825

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100825

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110825

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120825

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120825

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130825

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees