JPH0414366B2 - - Google Patents

Info

Publication number
JPH0414366B2
JPH0414366B2 JP59095795A JP9579584A JPH0414366B2 JP H0414366 B2 JPH0414366 B2 JP H0414366B2 JP 59095795 A JP59095795 A JP 59095795A JP 9579584 A JP9579584 A JP 9579584A JP H0414366 B2 JPH0414366 B2 JP H0414366B2
Authority
JP
Japan
Prior art keywords
exponent
result
bits
operands
bit
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
Application number
JP59095795A
Other languages
English (en)
Other versions
JPS6027026A (ja
Inventor
Rii Jooji Suchiibun
Rii Hefunaa Jeemuzu
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS6027026A publication Critical patent/JPS6027026A/ja
Publication of JPH0414366B2 publication Critical patent/JPH0414366B2/ja
Granted 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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/49936Normalisation mentioned as feature only

Description

【発明の詳細な説明】
[産業上の利用分野] 本発明は固定小数点オペランドおよび浮動小数
点オペランドのための高速デイジタル乗算装置に
関する。 [従来技術] 近年、科学技術計算のためにコンピユータを使
用することは非常に多い。通常のアプリケーシヨ
ンは、コンピユータによる設計(CAD)、大規模
なモデル化およびシミユレーシヨン、グラフイツ
ク表示のための計算、物理・化学・生物学の分野
における複雑な計算を有している。しかしながら
どんなに複雑な数値計算であつてもそれは、加
算、減算、乗算および除算の組合せに帰着でき
る。通常の事務用アプリケーシヨンにおいて乗算
および除算が用いられることはあまりないが、科
学技術計算用のプログラムにおいては、特に乗算
の使用頻度は著しく高い。 算術的な乗算は加算の繰返しとして定義され
る。被乗数はそれ自身に、乗数により指定された
回数だけ加算される。紙とエンピツを用いる人間
は被乗数と乗算の乗数を1回に1桁ずつ処理して
からその部分積を加算する。この基本的な考え方
はプロセツサによつても用いられる。プロセツサ
はマイクロコードとハードウエアの組合せを用い
てシフトおよび加算アルゴリズムを実行する。乗
数および被乗数のオペランドは2進形式で記憶さ
れている。最も簡単なのは、1回に1ビツトのみ
を吟味し正のオペランドのみを仮定するものであ
る。吟味されたビツトによつて、累算された積に
被乗数を加算すべきかどうかを判定する。そのビ
ツトが“1”ならば、被乗数は累算された積に加
算され、そのビツトが“0”ならば、何も加算さ
れない。新たに累算された積は1桁分シフトされ
て、次の繰返しのための入力として用いられる。
乗数も累算された積と同じ方向にシフトされ、次
のビツトが吟味される。残りの乗数ビツトを累算
された積の入つている同じレジスタに入れる場合
もある。この基本的なシフトおよび加算に関して
これまで様々な方法が適用されている。乗算のう
ち、1回に1ビツトではなく数ビツトを吟味する
場合もある。その場合は、累算された積に加算す
べき値は被乗数の倍数(例えば2倍、4倍)であ
り、シフト量は1度に吟味されるビツト数に関係
する。負の数値を正しく解釈するための準備を行
う場合もある。 従来のシフトおよび加算プロセツサは、実行速
度と必要回路数の関係はうまくつり合いがとれて
いる。オペレーシヨンの速度を増加するために、
並列式部分積乗算器を使用して固定小数点数の乗
算を実行するプロセツサもある。このタイプの乗
算器は、乗数および被乗数の一部から複数の部分
積を同時に生成する。最終積はそれから部分積を
まとめて加算することによつて生成される。 [発明が解決しようとする問題点] 従来のシフトおよび加算の手法を用いる乗算装
置はその処理速度が比較的遅く、また、これを改
善した部分積乗算装置は固定小数点数しか処理で
きないという問題があつた。 本発明の目的は固定小数点および浮動小数点数
のいずれをも高速に処理することができる乗算装
置を提供することにある。 [問題点を解決するための手段] 本発明は、乗算すべき2つのオペランドを受け
取る入力バスと、 該入力バスに接続され前記2つのオペランドの
各々の少なくとも一部分を受け取る複数のレジス
タと、 該複数のレジスタの少なくとも1つに接続され
前記複数のレジスタの少なくとも2つの内容を乗
算することによつて部分積を生成する複数の乗算
器と、 該複数の乗算器の各々に接続され前記複数の乗
算器の各々によつて生成される部分積を合計して
最終積を生成する加算手段と、 前記入力バスに接続され前記2つのオペランド
に係る符号情報および指数情報を受け取る複数の
指数レジスタと、 該複数の指数レジスタの少なくとも2つに接続
され結果符号ビツトを生成する論理手段と、 前記複数の指数レジスタの少なくとも2つに接
続され複数の結果指数ビツトを生成する指数加算
手段と、 前記加算手段、前記論理手段、および前記指数
加算手段に接続され前記最終積に係る正しい符号
ビツトおよび指数ビツトを組合せる指数部組合せ
手段と、 前記加算手段および前記複数の乗算器の少なく
とも1つに接続され最終積を必要なだけシフトす
るシフト手段と、 該シフト手段に接続され前記最終積に係る正し
い小数部ビツトを組合せる小数部組合せ手段と、 前記指数部組合せ手段および前記小数部組合せ
手段に接続され、前記2つのオペランドの積を構
成する符号ビツト、指数ビツト、および小数部ビ
ツトを受け取る出力バスとを有することを特徴と
する乗算装置である。 [実施例] 乗算オペレーシヨンに係るオペランドおよび演
算結果は2進ビツトによつてある様式で表わされ
る。固定小数点数は単に2の補数表示によつて形
成される。整数オペランドは4バイト長、整数結
果は8バイト長である。浮動小数点数は、符号ビ
ツト、指数部、および小数部を有する。符号ビツ
ト、“0”は正オペランドを示唆し、符号ビツト
“1”は負オペランドを示唆する。指数は7ビツ
トの64増しコードによつて表わされる。指数部は
16のべき指数を表わしており、従つて小数部は16
の指数乗と掛け合わされる。小数部は上位桁のす
ぐ左に基点を有する16進数字によつて表わされ
る。データの形式によつて小数部の桁数が確定す
る。短精度浮動小数点形式は6桁、長精度浮動小
数点形式は14桁、拡張精度浮動小数点形式は28桁
である。 第3図について説明する。短精度浮動小数点形
式10は、符号ビツト、7ビツトの指数部、6桁
(24ビツト)の小数部を有する。長精度浮動小数
点形式11は、符号ビツト、7ビツトの指数部、
14桁(56ビツト)の小数部を有する。拡張精度浮
動小数点形式は、上位部12と下位部13から成
り、上位部12および下位部13はいずれも、符
号ビツト、7ビツトの指数部および、28桁のうち
の14桁(56ビツト)の小数部を有する。上位部1
2は左側14桁のための小数部を有し、下位部13
は右側14桁のための小数部を有する。 固定小数点形式14は32ビツト(4バイト)の
整数部を有する。固定小数点形式による演算結果
15は、4バイトから成る固定小数点形式の整数
どうしの積が8バイトの整数となることを表わし
ている。 第1図について説明する。第1図は、本発明に
従つた乗算装置の実施例の概略を表わすブロツク
図である。乗算ユニツト29は、2個のデータ径
路またはバスに接続された専用の機能ユニツトと
みなすことができる。8バイトのオペランドは入
力バス20からレジスタ21およびレジスタ22
に逐次にロードされる。オペランドのロード制御
は、オペランドまたは演算結果の形式に関係な
く、同じである。長精度浮動小数点オペランド1
7は1バイトの指数部と7バイトの小数部を有す
る。短精度浮動小数点オペランド16および固定
小数点オペランド18にはゼロを埋め込まねばな
らない。乗数と被乗数との区別は必要ではない。
オペランドは、単に、乗算される2個の数値M1
およびM2とみなすことができる。オペランドM
1が初めにレジスタ21にラツチされ、次に、オ
ペランドM2がレジスタ22にラツチされる。レ
ジスタ21の内容はまた、レジスタ23に複製さ
れる。そうして2個のオペランドは、組合せ回路
を有する指数論理24および乗算論理25の入力
として使用可能になる。指数論理24はオペラン
ドのバイト0にある指数の加算を実行する。同時
に、オペランドの残りの7バイトの積が、乗算論
理25によつて生成される。指数論理24は、パ
リテイチエツク、指数部加算、64増しコード訂
正、指数部減分、および真ゼロ強制を行う。乗算
論理25は、パリテイチエツク、剰余生成、非事
前正規化検知、小数部=0検出、部分オペランド
選択、28×28ビツト部分積生成、および部分積加
算を行う。正規化論理26は、事後正規化、小数
部組合せ、指数部組合せ、乗余チエツク、および
パリテイ生成を行う。指数論理24および乗算論
理25の結果は真ゼロおよび事後正規化によつて
指数論理24および正規化論理26で変更される
場合がある。指数論理24、乗算論理25、およ
び正規化論理26の働きの詳細は、第2図を参照
して後に述べる。 浮動小数点乗算の演算結果が長精度浮動小数点
形式で要求された場合は、演算結果の指数部1バ
イトおよび小数部7バイト(拡張小数部の初めの
14桁)をそれぞれバイト0およびバイト1〜7と
して、出力バス27に送る。拡張精度の演算結果
が要求された場合は、演算結果の指数部1バイト
および小数部7バイト(拡張小数部の後半の14
桁)をそれぞれバイト0およびバイト1〜7とし
て、出力バス27に送る。固定小数点乗算の演算
結果が要求された場合は、結果の8バイトをバイ
ト0〜7として出力バス27に送る。 第2図について説明する。第2図は、第1図の
乗算ユニツトの詳細を表わすブロツク図である。
前述のように、2個のオペランドM1およびM2
のロードは逐次に行われる。オペランドは、局所
記憶レジスタその他の適切な記憶場所からデータ
入力バス30へ取り出される。2個のオペランド
を同時にロードできるように2倍幅のデータバス
または補助バスを備えたプロセツサにおいても、
本発明を実施できるが、簡単のために、ここでは
逐次ロードのみについて記述する。 第1オペランドロードのため、例えばマイクロ
コードによつてLDM1状況が活動化される。そ
うしてデータが取り出されてデータ入力バス30
において使用可能になる。符号情報および指数情
報を有するバイト0はM1指数レジスタ(M1
E)31にラツチされる。仮数情報を有する残り
のバイト1〜7は選択論理70を介して適切な部
分オペランドレジスタ34,35,36および3
7に送られる(第2図においてこれらをそれぞれ
M1A,M1B,M1C、およびM1Dと記す)。
LDM1状況は、オペランド小数部の上位がマル
チプレクサ65を通過し、下位部がマルチプレク
サ66を通過することを指示する。こうして小数
部の上位3.5バイトM1(HI)がレジスタ34お
よびレジスタ35にラツチされ、小数部の下位
3.5バイトM1(LO)がレジスタ36およびレジ
スタ37にラツチされる。 その後、第2オペランドロードのためのLDM
2状況が活動化される。そうしてデータが取り出
されてデータ入力バス30において使用可能にな
る。符号情報および指数情報を有するバイト0は
M2指数レジスタ(M2E)32にラツチされ
る。仮数情報を有する残りのバイト1〜7は選択
論理70を介して適切な部分オペランドレジスタ
38(M2A),39(M2B),40(M2C)、
および41(M2D)に送られる。LDM2状況
は、オペランド小数部の上位部がマルチプレクサ
66を通過し、下位部がマルチプレクサ65を通
過するように指示する。こうして小数部の上位
3.5バイトM2(HI)がレジスタ38およびレジ
スタ40にラツチされ、小数部の下位3.5バイト
M2(LO)がレジスタ39およびレジスタ41
にラツチされる。 またLDM2状況が活動化された際、M1デー
タはM1′レジスタに転送される。詳しく言うと、
レジスタ(M1)31,34,35,36、およ
び37の内容がレジスタ(M1′)33,42,
43,44および45にそれぞれ複製される。こ
のようにM1オペランドデータを2度バツフアす
る理由は、乗算ユニツト29のオペレーシヨンの
並行処理を可能にするためである。並行処理の詳
細は後に述べる。 誤り検出のために、入力データの各バイトにパ
リテイビツトを付加する。バイト0のパリテイチ
エツクは、ロードが終了した後、レジスタ32お
よびレジスタ33において実行される。残りの7
バイトに係るパリテイ標示は、データが選択論理
70を通過する際に、パリテイチエツク回路
PAR71によつて得られる。残りの7バイトに
係るパリテイチエツクを、選択論理通過時に行う
理由は、小数部データはレジスタに一旦ラツチさ
れれば、別々の乗算チツプ46,47,48およ
び49に分離されてしまうからである。ロードと
同時に行われるパリテイチエツクは、どのオペラ
ンドがエラーを有するかを確定する。 2個のオペランドの小数部はパリテイの他に、
剰余情報に係る検査も行われる。バイト1〜7に
係るモジユロ剰余情報も、パリテイと同様に、選
択論理通過中に得られる。モジユロ剰余情報は、
積剰余と組合されて、乗算ユニツト29自身にエ
ラーがあればそれを標示する。剰余チエツクの詳
細は後に述べる。 オペランド小数部が選択論理70を通過する
際、さらに2つの機能が遂行される。小数部全ゼ
ロ検出回路(OF=Z)72が、いずれかのオペ
ランドの小数部が全てゼロであるという条件を検
出する。コンピユータのアーキテクチヤによつて
は、この条件により真ゼロ指数が強制されること
がある。オペランド桁ゼロ検出回路(OD=Z)
73が、いずれかのオペランドの小数部の上位桁
が全てゼロであるという条件を検出する。このと
き、いずれのオペランドの小数部も全ゼロでなけ
れば、それは一方(または両方)のオペランドの
事前正規化が行われていないことを示唆する。乗
算ユニツト29は、オペランドの事前正規化は行
わず、単に、正規化の必要性の有無を検出するだ
けである。コンピユータのアーキテクチヤによつ
ては、オペランドの事前正規化を必要とするの
で、いずれか一方のオペランドの小数部の上位桁
が全ゼロ、かつ、いずれのオペランドの小数部も
全ゼロでないという条件を満たすと、NPRE状況
を活動化する事によつて、プロセツサに事前正規
化ルーチンへの分岐を命ずる事もできる。乗算ユ
ニツト29は、オペランドが事前正規化されてい
るかいないかに関係なく、適切な算術的乗算を提
供する。 部分オペランド選択の目的は、56ビツト同志の
1つの乗算問題を、28ビツト同志の4つの乗算問
題に帰着することである。この機能は、乗算チツ
プと呼ばれるLSIチツプによつて実現することが
できる。実施例においては、乗算ユニツト29の
構成に、4つの乗算チツプ46,47,48およ
び49が使用される。乗算チツプは、28ビツトの
部分オペランドを2つ要する。28ビツトの部分オ
ペランド2つは2つのレジスタに記憶されてお
り、28ビツト×28ビツトの乗算器によつて乗算さ
れる。こうした部分オペランドは、オペランドM
1およびM2から選択されて4つの乗算チツプに
記憶される。これを以下に示す。 乗算チツプ46 レジスタ34およびレジスタ42 M1HI(M1小数部の上位28ビツト) レジスタ38 M2HI(M2小数部の上位28ビツト) 乗算チツプ47 レジスタ35およびレジスタ43 M1HI(M1小数部の上位28ビツト) レジスタ39 M2LO(M2小数部の下位28ビツト) 乗算チツプ48 レジスタ36およびレジスタ44 M1LO(M1小数部の下位28ビツト) レジスタ40 M2HI(M2小数部の上位28ビツト) 乗算チツプ49 レジスタ37およびレジスタ45 M1LO(M1小数部の下位28ビツト) レジスタ41 M2LO(M2小数部の下位28ビツト) こうした部分オペランドの乗算の各々の結果を
部分積と呼ぶ。オペランド全体に対する部分オペ
ランドの相対位置関係から、最終積は、部分積5
0,51,52,53および54を加算すること
によつて得られる。これを次に示す。
【表】 部分積50,51および52の内部の56ビツト
を和するには、3入力の加算器が必要である。演
算を高速に行うために、これを、3入力2出力の
桁上げ保管加算器CSA55および次段の2入力
の桁上げ先見全加算器CLAA56によつて構成す
る。最終積の下位28ビツトは、単に、乗算チツプ
49からの部分積の下位28ビツト54である。最
終積の上位28ビツトは、部分積50の上位28ビツ
トと、内部56ビツトからの桁上げとの和である。
従つて、桁上げ保管加算器55の第1の入力は、
ビツト0〜55として部分積50およびビツト5
6〜83として乗算チツプ49からの部分積の上
位28ビツト53を受け取る。桁上げ保管加算器5
5の第2の入力は、ビツト0〜27にゼロを受け
取り、ビツト28〜83として部分積51を受け
取る。桁上げ保管加算器55の第3の入力は、ビ
ツト0〜27にゼロを受け取り、ビツト28〜8
3として部分積52を受け取る。下位28ビツト5
4は、最終積シフタ58のビツト84〜111に
直接送られる。桁上げ先見全加算器56の出力
は、最終積シフタ58のビツト0〜83の入力と
なる。 最終積57は事前正規化が行われているかどう
かには関係なく、オペランド小数部M1およびM
2の乗算の正しい結果である。コンピユータアー
クテクチヤによつて多く使用されている乗算オペ
レーシヨンは、両オペランドの事前正規化と演算
結果の事後正規化の両方を必要とする場合もあ
る。これは、一連の乗算オペレーシヨンによつて
小数部の有効部分が消失してしまうことのないよ
うにするためである。 事後正規化部75は、最終積57の上位4ビツ
トを吟味して事後正規化すべきかどうかを判定す
る。上位4ビツトが全ゼロでない場合(少なくと
も1つが“1”)は、最終積シフタ58はシフト
も行わない(シフト量=0)。浮動小数点数をア
ンロードするためのUNFL状況が活動化してい
れば、出力バス59へ送られる演算結果は最終積
57の上位56ビツトである。拡張精度浮動小数
点数の拡張部分をアンロードするためのUNFE
状況が活動化していれば、出力バス59へ送られ
る演算結果は最終積57の下位56ビツトである。
最終積57の上位4ビツトが全ゼロの場合は、最
終積シフタ58が左方へ4ビツトのシフトを行
う。UNFL状況が活動化していれば、出力バス
59へ送られる演算結果は最終積57のビツト4
〜59である。UNFE状況が活動化していれば、
1つのゼロデイジツトが埋め込まれているビツト
60〜111である。これは、下位の結果デイジ
ツトに適切な最終積ビツト(すなわち保護桁)を
挿入しながら、最終積57を左方にひと桁シフト
する処理である。こうして、上位桁にゼロを有す
る小数部を生成するような浮動小数点乗算であつ
ても、そのゼロデイジツトをシフトアウトし最終
積57の残りのビツトを左方にシフトしかつ指数
部を減分することによつて、その精度を維持する
ことができる。指数部の値は、事後正規化のシフ
トの後においても前と同じ結果になるように必ず
減分しなければならない。 マルチプレクサ60は、UNFL状況が活動状
態にある間、最終積シフタ58の上位部分を出力
バス59に送り、UNFE状況が活動状態にある
間、最終積シフタ58の下位部分を出力バス59
に送る。このように、2つのアンロードオペレー
シヨンによつて拡張精度浮動小数点式による演算
結果の全体が出力バス59に得られる。 浮動小数点形式による演算結果の第1のバイト
は1つの符号ビツトおよび7ビツトの指数部から
成る。結果符号ビツト63は、単に、オペランド
の符号ビツトの排他的論理和(XOR)である。
結果の指数部はオペランドの指数部の加算から導
出される。指数加算器61において、指数部の和
から64が減算される。事後正規化を行う場合
は、小数部が左方にひと桁シフトされることを考
慮して、指数部は1だけ減分されねばならない。
拡張結果が要求された場合は、小数部の下位部に
合わせるために、指数部はさらに14だけ減分され
ねばならない。こうして、UNFL状況が活動状
態の場合は、事後正規化の必要性に応じて、指数
部は減分されないかまたは1だけ減分される。
UNFE状況が活動状態の場合は、事後正規化の
必要性に応じて、指数は14または15だけ減分され
る。指数加算器62において、指数加算器61の
出力から、適切な減分量(0、1、14、または
15)が減算される。指数加算器62から出力され
る7ビツトの結果指数、および結果符号ビツト6
3は、UNFL状況またはUNFE状況が活動状態
にある場合に、マルチプレクサ64を介して出力
バス59に送られる。一方のオペランドの仮数部
がゼロである場合は、結果の指数部および符号ビ
ツトは、全ゼロに強制される。このような結果を
「真ゼロ」と定義しているコンピユータアーキテ
クチヤもある。この操作は、マルチプレクサ64
を介して全ゼロのバイトを出力バス59へ送るこ
とにより行われる。従つて、指数部の計算結果は
無視される。 次に示す表−1は、出力バス59に送られる指
数部と最終積の組合せを示すものである。 表−1のEXPは、指数加算器61の出力であ
る7ビツトの指数部とこれに連結する結果符号ビ
ツト63を表わしている。 表−1のUNFX状況(固定小数点数のアンロ
ード)については後に説明する。
【表】 3つの異なつた状態が乗算ユニツト29により
検知され、状況標識によつてプロセツサの他の部
分に伝達される。3つの異なつた状態というの
は、事前正規化が行われていないことを示す
NPRE状況、事後正規化が必要であることを示す
POST状況、および、指数部オーバフロー/アン
ダーフローを示すOFUF状況である。 正規化された積の指数部が+63より大きいかま
たは−63より小さい場合は、それぞれ指数部オー
バーフロー、または指数部アンダーフローの状態
である。OFUF状況が活動化されて、そうした状
態にあることが示される。マイクロコードエラー
ルーチンは、最終積および状況標識に基づいて、
正しい例外処理を遂行することができる。乗算ユ
ニツト29は通常、省略時解釈によつて適切な例
外結果を生成する。 乗算オペレーシヨンによつてはオペレーシヨン
の前に2つのオペランドの事前正規化(小数部の
上位桁がゼロにならないようにする)を要するも
のもある。一連のオペレーシヨンにわたつて、正
規化された数値が維持されれば、オペランドは既
に事前正規化されているとみなすことができる。
これを利用するために、オペランドに関係なく、
乗算ユニツト29の内部で乗算が行われる。マイ
クロコードエラールーチンは結果の導出中に
NPRE状況を吟味し、オペランドが実際には、事
前正規化されていなかつた場合に(実際にはほと
んどこういう場合はない)、あとで訂正動作を行
えるようにする。いずれか一方のオペランドが事
前正規化されておらずかついずれのオペランドも
小数部がゼロでない場合に、NPRE状況が活動化
される。 適切な浮動小数点形式の演算結果を生成する一
方で事後正規化が必要となつた場合は、POST状
況が活動化される。マイクロコード例外処理ルー
チンは、指数部のオーバーフロー/アンダフロー
の分析にこれを利用できる。 実施例の乗算装置は、浮動小数点数の乗算と同
様の方法によつて、固定小数点乗算を行うことも
できる。ただし固定小数点乗算においては、演算
結果のアンロードは異なつた方法で処理され、指
数計算および事後正規化は行われない。 固定小数点オペランドをロードするためには、
それを入力バス30のバイト1〜4に置き、他は
ゼロとしなければならない。実際には、例えば、
バイト0がゼロでなくとも、演算結果には影響を
与えない場合もある。浮動小数点の場合と同じ
く、オペランドM1およびM2は逐次にロードさ
れるものとする。バイト1〜4のデータは、それ
があたかも浮動小数点オペランドの一部であるか
のように、選択論理70、レジスタ、乗算チツ
プ、および加算器によつて処理される。最終積の
最初の8バイト(ただし事後正規化はされていな
い)は、固定小数点乗算の正しい結果を与える。 出力バス59に所望の8バイトの結果を得るた
めには、マルチプレクサ64が最終積の上位8ビ
ツトを送り、最終積シフタ58が8ビツトのシフ
トを行い、かつ、マルチプレクサ60が上位56ビ
ツト(最終積のビツト8〜63)を送らねばなら
ない。固定小数点数のアンロードが指定された場
合(UNFX状況)は、指数計算および事後正規
化のためのハードウエアは結果に対して何ら影響
を及ぼさない。UNFX状況においては、NPRE
状況、POST状況、およびOFUF状況は意味を持
たず、固定小数点オペレーシヨンの間、これらは
無視される。 固定小数点乗算の結果は正オペランドの場合の
み有効である。マイクロコードまたは特別のハー
ドウエアがオペランドのビツト0を吟味し、それ
が“1”であれば(2の補数表示によつて負数を
示唆している)、オペランドを正しく補数化する
か、または、負オペランドを含む固定小数点乗算
の結果を補正する。小数オペランドデータはハー
ドウエアによつて常に“正”と解釈されるので、
どんな負固定小数点オペランドであつてもそれは
正で232よりも大きいと解釈される。こうして、
固定小数点乗算が正オペランドおよび負オペラン
ドを含む場合は、あたかもそれらが正オペラン
ド、および232よりも大きい正オペランドである
かのびとく乗算が実行される。従つて、乗算ユニ
ツト29の結果から正オペランドの232倍を減算
することによつて正しい結果を得ることができ
る。オペランドが両方とも負ならば、それらをロ
ードする前に補数化することによつて、UNFX
状況活動化することによつて、UNFX状況活動
化に従つて正しい結果を直接得ることができる。 浮動小数点乗算および固定小数点乗算の実行に
加えて、誤つた結果を生成するような障害が乗算
ユニツト29の内部または周辺部で発生すれば、
それらを検知することも要求される。エラーを示
すERR状況は、オペランドパリテイエラー、指
数加算器エラー、または、剰余エラーがあつた場
合に、活動化される。出力バス59から出力を受
け取る装置(図示せず)がエラーチエツクを実行
できるように、最終積のパリテイが生成される。 乗算ユニツト29は8バイトを1単位としてオ
ペランドを受け取る。各々のバイトには、1つの
パリテイビツトが付加されている。従つて単一ビ
ツトエラーが生じていると、これはオペランドパ
リテイエラーとして、検知され、ERR状況が活
動化される。 2つの指数加算器61および62は、デユア
ル・レイル・パルテイ予測、または剰余検査のよ
うな、任意の標準的なエラー検知技術を用いるこ
ができる。 乗算器の内部エラー検知には、モジユロ剰余検
査による方法が用いられる。数学的に言うと、代
数的な結果の剰余は、同じ代数的演算をオペラン
ドの剰余に適用することによつて得られる剰余
に、常に等しい。これを乗算ユニツト29に適分
すれば、最終積の乗余が、オペランドの剰余どう
しの積の剰余に一致するはずである。もしこの一
致がないとすれば、内部に何らかのエラーが発生
したことを意味する。こうして、選択論理70が
オペランドを受け取つた際に、剰余処理部PES7
6において、各々のオペランドの剰余が計算され
る。最終積(ただし事後正規化の前)の剰余は、
その積が得られたときに剰余処理部RES77で、
計算される。結果処理部75における剰余検査時
に、最終積の剰余と、2つのオペランドの剰余の
積との比較が行われる。もしこれらが一致しなけ
れば、ERR状況が活動化される。 非常に短いマシンサイクルを有するプロセツサ
においては、組合せ回路を介して結果を伝搬させ
るために余分のサイクルを用意しなければならな
い場合がある。このような場合には、乗算マイク
ロコードルーチンにおいてロード・制御ワードお
よびアンロード制御ワードの間にダミーマイクロ
ワードを挿入しておいてもよい。これを用いてオ
ペランドのロードを並行して行うことによつて、
ベクトル処理を効率よく実用できる。例えば、レ
ジスタ42とレジスタ38の乗算が行われている
間に、LDM1状況によつて次のM1オペランド
をレジスタ34にロードすることができる。現在
の結果をアンロードした後に、LDM2状況だけ
を用いて、次のM2オペランドをロードし新しい
M1オペランドをM1′レジスタに送る。このよ
うにして、1回ループ繰返しにつき平均1つのマ
イクロコードを減らして、非常に長いベクトル乗
算を実行することができる。 [発明の効果] 以上に説明した乗算装置によつて、固定小数点
乗算および浮動小数点乗算のいずれをも高速に実
行することが可能になる。
【図面の簡単な説明】
第1図は本発明に従つた乗算装置の実施例の概
略を表わすブロツク図、第2図は第1図の乗算装
置の詳細を表わすブロツク図、第3図は数値の表
現形式の種類を表わす図である。

Claims (1)

  1. 【特許請求の範囲】 1 符号ビツト、指数ビツト、および小数部ビツ
    トを有する2つのオペランドを乗算して、上記の
    3種のビツトを保有する結果を出力する乗算器で
    あり、 上記2つのオペランドの小数部を入力する第1
    および第2小数部レジスタ34〜37,38〜4
    1,42〜45、 上記小数部レジスタに接続され、結果小数部ビ
    ツトを出力する乗算手段、 上記2つのオペランドの指数ビツトを入力する
    第1および第2指数レジスタ31,32,33、 上記第1および第2指数レジスタに接続され、
    結果指数ビツトを出力する指数加算器61、 上記2つのオペランド中の符号ビツトに従つて
    結果符号ビツトを出力する論理手段、 上記乗算手段に接続され、上記結果小数部ビツ
    ト所定のシフトを実行する事後正規化部75、 とを有する乗算装置において、 上記第1および第2小数部レジスタは各々が上
    記2つのオペランドの小数部ビツトの一部を入力
    するように構成された複数のサブレジスタ34〜
    45を有し、 上記乗算手段は上記2つのオペランドの小数部
    ビツトの一部を各々が入力するように接続され、
    各々がそれぞれの入力に基づく部分結果を生成す
    るサブ乗算器と、上記サブ乗算器の各々に接続さ
    れ、上記部分結果を加算して結果小数部ビツトを
    生成する加算器55,56とを有し、 上記第1小数部レジスタの各々のサブレジスタ
    は上記2つのオペランドの上記小数部ビツトの上
    記一部を第1サイクルで受領する第1レジスタ3
    4,35,36,37と、上記第1レジスタに接
    続され、上記第2小数部レジスタ38〜41の上
    記サブレジスタが上記2つのオペランドの他方の
    該当部分を受領したときを次のサイクルとして上
    記第1レジスタの内容を受領する第2レジスタ4
    2,43,44,45とを有し、 結果符号ビツトを生成する上記論理手段は上記
    2つのオペランドの指数ビツトの供給を受ける上
    記第1および第2指数レジスタ31,32に接続
    された構成を持ち、 上記加算器55,56、上記論理手段、および
    上記指数加算器61に接続され、最終結果に関す
    る結果符号ビツトおよび結果指数ビツトを生成す
    る指数アセンブラ手段であるマルチプレクサ64
    を有し、 上記事後正規化部に接続され、最終結果に関す
    る結果小数部ビツトを生成する小数部アセンブラ
    手段であるマルチプレクサ60を有し、 入力オペランドの種類に従つて発生される指定
    状況信号に応じて上記事後正規化部におけるシフ
    ト状況を変更し、さらに上記マルチプレクサ6
    0,64からの上記出力バスへの最終積の出力形
    態を変更する手段を有することを特徴とする乗算
    装置。
JP59095795A 1983-07-21 1984-05-15 乗算装置 Granted JPS6027026A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/515,845 US4594679A (en) 1983-07-21 1983-07-21 High speed hardware multiplier for fixed floating point operands
US515845 1983-07-21

Publications (2)

Publication Number Publication Date
JPS6027026A JPS6027026A (ja) 1985-02-12
JPH0414366B2 true JPH0414366B2 (ja) 1992-03-12

Family

ID=24052998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59095795A Granted JPS6027026A (ja) 1983-07-21 1984-05-15 乗算装置

Country Status (6)

Country Link
US (1) US4594679A (ja)
EP (1) EP0132646B1 (ja)
JP (1) JPS6027026A (ja)
AR (1) AR241060A1 (ja)
BR (1) BR8401796A (ja)
DE (1) DE3483929D1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4716539A (en) * 1984-12-31 1987-12-29 Gte Communication Systems Corporation Multiplier circuit for encoder PCM samples
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPH069028B2 (ja) * 1986-02-18 1994-02-02 日本電気株式会社 演算装置
US4974198A (en) * 1986-07-16 1990-11-27 Nec Corporation Vector processing system utilizing firm ware control to prevent delays during processing operations
US4991131A (en) * 1987-10-06 1991-02-05 Industrial Technology Research Institute Multiplication and accumulation device
US4893268A (en) * 1988-04-15 1990-01-09 Motorola, Inc. Circuit and method for accumulating partial products of a single, double or mixed precision multiplication
US4926371A (en) * 1988-12-28 1990-05-15 International Business Machines Corporation Two's complement multiplication with a sign magnitude multiplier
US4953119A (en) * 1989-01-27 1990-08-28 Hughes Aircraft Company Multiplier circuit with selectively interconnected pipelined multipliers for selectively multiplication of fixed and floating point numbers
JPH04205559A (ja) * 1990-11-30 1992-07-27 Nec Corp ベクトル演算装置
US5187679A (en) * 1991-06-05 1993-02-16 International Business Machines Corporation Generalized 7/3 counters
JPH0820942B2 (ja) * 1991-09-26 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 高速乗算器
US5253195A (en) * 1991-09-26 1993-10-12 International Business Machines Corporation High speed multiplier
US5200912A (en) * 1991-11-19 1993-04-06 Advanced Micro Devices, Inc. Apparatus for providing power to selected portions of a multiplying device
US5265043A (en) * 1991-12-23 1993-11-23 Motorola, Inc. Wallace tree multiplier array having an improved layout topology
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
US5615402A (en) * 1993-10-18 1997-03-25 Cyrix Corporation Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US5740398A (en) * 1993-10-18 1998-04-14 Cyrix Corporation Program order sequencing of data in a microprocessor with write buffer
US6219773B1 (en) 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
JP3583474B2 (ja) * 1994-06-29 2004-11-04 株式会社ルネサステクノロジ 乗算装置
US5586070A (en) * 1994-08-03 1996-12-17 Chromatic Research, Inc. Structure and method for embedding two small multipliers in a larger multiplier
US5912832A (en) * 1996-09-12 1999-06-15 Board Of Regents, The University Of Texas System Fast n-bit by n-bit multipliers using 4-bit by 4-bit multipliers and cascaded adders
KR100425674B1 (ko) * 1996-10-11 2004-06-11 엘지전자 주식회사 디지탈신호처리기의부동소숫점형식곱셈방법
US6021422A (en) * 1998-03-04 2000-02-01 International Business Machines Corporation Partitioning of binary quad word format multiply instruction on S/390 processor
US6055554A (en) * 1998-03-04 2000-04-25 Internatinal Business Machines Corporation Floating point binary quad word format multiply instruction unit
US6341300B1 (en) 1999-01-29 2002-01-22 Sun Microsystems, Inc. Parallel fixed point square root and reciprocal square root computation unit in a processor
US6523055B1 (en) 1999-01-20 2003-02-18 Lsi Logic Corporation Circuit and method for multiplying and accumulating the sum of two products in a single cycle
US6480872B1 (en) * 1999-01-21 2002-11-12 Sandcraft, Inc. Floating-point and integer multiply-add and multiply-accumulate
US6912557B1 (en) * 2000-06-09 2005-06-28 Cirrus Logic, Inc. Math coprocessor
US6829627B2 (en) * 2001-01-18 2004-12-07 International Business Machines Corporation Floating point unit for multiple data architectures
KR100402734B1 (ko) * 2001-12-21 2003-10-22 한국전자통신연구원 부호화된 피승수를 사용하는 고정 소수점 곱셈 장치 및 그방법
US7188133B2 (en) * 2002-06-20 2007-03-06 Matsushita Electric Industrial Co., Ltd. Floating point number storage method and floating point arithmetic device
US8073892B2 (en) * 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US7519646B2 (en) * 2006-10-26 2009-04-14 Intel Corporation Reconfigurable SIMD vector processing system
US8706790B1 (en) * 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US20120191955A1 (en) * 2011-01-20 2012-07-26 Jonsson Ragnar H Method and system for floating point acceleration on fixed point digital signal processors
US20130339417A1 (en) * 2012-06-14 2013-12-19 International Business Machines Corporation Residue-based exponent flow checking
CN104166535B (zh) * 2013-07-19 2017-07-28 郑州宇通客车股份有限公司 定点处理器及其防溢方法
US20150095396A1 (en) * 2013-10-01 2015-04-02 Rockwell Automation Technologies, Inc. Multiplying varying fixed-point binary numbers
CN112148249B (zh) * 2020-09-18 2023-08-18 北京百度网讯科技有限公司 点积运算实现方法、装置、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3508038A (en) * 1966-08-30 1970-04-21 Ibm Multiplying apparatus for performing division using successive approximate reciprocals of a divisor
US3670956A (en) * 1968-09-26 1972-06-20 Hughes Aircraft Co Digital binary multiplier employing sum of cross products technique
US3873820A (en) * 1974-01-31 1975-03-25 Ibm Apparatus for checking partial products in iterative multiply operations
US4130879A (en) * 1977-07-15 1978-12-19 Honeywell Information Systems Inc. Apparatus for performing floating point arithmetic operations using submultiple storage
US4208722A (en) * 1978-01-23 1980-06-17 Data General Corporation Floating point data processing system
US4228520A (en) * 1979-05-04 1980-10-14 International Business Machines Corporation High speed multiplier using carry-save/propagate pipeline with sparse carries
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4366548A (en) * 1981-01-02 1982-12-28 Sperry Corporation Adder for exponent arithmetic
US4523210A (en) * 1982-06-11 1985-06-11 Sperry Corporation Fast error checked multibit multiplier
US4528640A (en) * 1982-07-13 1985-07-09 Sperry Corporation Method and a means for checking normalizing operations in a computer device

Also Published As

Publication number Publication date
BR8401796A (pt) 1985-03-19
EP0132646B1 (en) 1991-01-16
AR241060A2 (es) 1991-04-30
EP0132646A2 (en) 1985-02-13
DE3483929D1 (de) 1991-02-21
JPS6027026A (ja) 1985-02-12
US4594679A (en) 1986-06-10
AR241060A1 (es) 1991-04-30
EP0132646A3 (en) 1987-04-15

Similar Documents

Publication Publication Date Title
JPH0414366B2 (ja)
EP0976027B1 (en) ARITHMETIC PROCESSOR combining finite field arithmetic and modular integer arithmetic
US4975868A (en) Floating-point processor having pre-adjusted exponent bias for multiplication and division
EP0326415A2 (en) Floating point/integer processor with divide and square root functions
JP3891997B2 (ja) 可変幅の符号付きおよび符号なしオペランドのためのモジュラ2進乗算器
EP0657805A1 (en) Result normalizer and method of operation
US4866652A (en) Floating point unit using combined multiply and ALU functions
GB2488863A (en) Leading zero prediction in floating point addition
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
US5301341A (en) Overflow determination for three-operand alus in a scalable compound instruction set machine which compounds two arithmetic instructions
EP0478745A1 (en) High performance interlock collapsing scism alu apparatus
Naini et al. 1 GHz HAL SPARC64/sup R/Dual Floating Point Unit with RAS features
JPH07168697A (ja) 倍精度除算回路および方法
US6728744B2 (en) Wide word multiplier using booth encoding
EP0416308A2 (en) Rectangular array signed digit multiplier
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
US5337265A (en) Apparatus for executing add/sub operations between IEEE standard floating-point numbers
US5867413A (en) Fast method of floating-point multiplication and accumulation
JPH10500513A (ja) ディジタル除算実行装置
EP0643352A1 (en) Self-checking complementary adder unit
JPH0628155A (ja) 除算方法および除算装置
US6151616A (en) Method and circuit for detecting overflow in operand multiplication
US8219604B2 (en) System and method for providing a double adder for decimal floating point operations
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
EP0534760A2 (en) High speed multiplier device