JPS6027026A - 乗算装置 - Google Patents

乗算装置

Info

Publication number
JPS6027026A
JPS6027026A JP59095795A JP9579584A JPS6027026A JP S6027026 A JPS6027026 A JP S6027026A JP 59095795 A JP59095795 A JP 59095795A JP 9579584 A JP9579584 A JP 9579584A JP S6027026 A JPS6027026 A JP S6027026A
Authority
JP
Japan
Prior art keywords
exponent
operands
bit
multiplication
bits
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
JP59095795A
Other languages
English (en)
Other versions
JPH0414366B2 (ja
Inventor
スチ−ブン・リ−・ジヨ−ジ
ジエ−ムズ・リ−・ヘフナ−
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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は固定小数点オペランドおよび浮動小数点オペラ
ンドのための高速ディジタル乗算装置に関する。
[従来技術] 近年、科学技術計算のためにコンピュータを使用するこ
とは非常に多い。通常のアプリケーション、は、コンピ
ュータによる設計(CAD) 、大規模なモデル化およ
びシミュレーション、グラフィック表示のための計算、
物理・化学・生物乎の分野における複雑な計算を有して
いる。しかしながらどんなに複雑な数値計算であっても
それは、加算、減算、乗算および除算の紹合せに帰着で
きる。
通常の事務用アプリケーションにおいて乗算および除算
が用いられることはあまりないが、科学技術計算用のプ
ログラムにおいては、特に乗算の使用頻度は著しく高い
算術的な乗算は加算の繰返しとして定義される。
被乗数はそれ自身に、乗数により指定された回数だけ加
算される。紙とエンピッを用いる人間は被乗数と乗算の
乗数を1回に1桁ずつ処理してからその部分積を加算す
る。この基本的な考え方はプロセッサによっても用いら
れる。プロセッサはマイクロコードとハードウェアの組
合せを用いてシフトおよび加算アルゴリズムを実行する
。乗数および被乗数のオペランドは2進形式で記憶され
−でいる。最も簡単なのは、1回に1ビツトのみを吟味
し正のオペランドのみを仮定するものである。
吟味されたビットによって、累算された積に被乗数を加
算すべきかどうかを判定する。そのビットが1”ならば
、被乗数は累算された積に加算され、そのビットが11
011ならば、何も加算されない。新たに累算された積
は1桁分シフトされて、次の繰返しのための入力として
用いられる。乗数も累算された積と同じ方向にシフトさ
れ、次のビットが吟味される。残りの乗数ビットを累算
された積の入っている同じレジスタに入れる場合もある
。この基本的なシフトおよび加算に関してこれまで様々
な方法が適用されている。乗数のうち、1回に1ビット
ではなく数ビットを吟味する場合もある。その場合は、
累算された積に加算すべき値は被乗数の倍数(例えば2
倍、4倍)であり、シフト量は1度に吟味されるビット
数に関係する。
負の数値を正しく解釈するための準備を行う場合もある
従来のシフ1−および加算プロセッサは、実行速度と必
要回路数の関係はうまくつり合いがとれている。オペレ
ーションの速度を増加するために。
並列式部分積乗算器を使用して固定小数点数の乗算を実
行するプロセッサもある。このタイプの乗算器は、乗数
および被乗数の一部から複数の部分積を同時に生成する
。最終積はそれから部分積をまとめて加算することによ
って生成される。
[発明が解決しようとする問題点] 従来のシフトおよび加算の手法を用いる乗算装置はその
処理速度が比較的遅く、また、これを改善した部分積乗
算装置は固定小数点数しか処理できないという問題があ
った。
本発明の目的は固定小数点数および浮動小数点数のいず
れをも高速に処理することができる乗算装置を提供する
ことにある。
[問題点を解決するための手段] 本発明は、乗算すべき2つのオペランドを受け取る入力
バスと、 該入力バスに接続され前記2つのオペランドの各々の少
なくとも一部分を受け取る複数のレジスタと、 該複数のレジスタの少なくとも1つに接続され前記複数
のレジスタの少なくとも2つの内容を乗算することによ
って部分積を生成する複数の乗算器と、 該複数の乗算器の各々に接続され前記複数の乗算器の各
々によって生成される部分積を合計して最終積を生成す
る加算手段と、 前記入力バスに接続され前記2つのオペランドに係る符
号情報および指数情報を受け取る複数の指数レジスタと
、 該複数の指数レジスタの少なくとも2つに接続され結果
符号ビットを生成する論理手段と、前記複数の指数レジ
スタの少なくとも2つに接続され複数の結果指数ビット
を生成する指数加算手段と、 前記加算手段、前記論理手段、および前記指数加算手段
に接続され前記最終積に係る正しい符号ビットおよび指
数ビットを組合せる指数部組合せ手段と、 前記加算手段および前記複数の乗算器の少なくとも1つ
に接続され最終積を必要なだけシフトするシフト手段と
、 該シフト手段に接続され前記最終積に係る正しい小数部
ビットを組合せる小数部組合せ手段と、前記指数部組合
せ手段および前記小数部組合せ手段に接続され、前記2
つのオペランドの積を構成する符号ビット、指数ビット
、および小数部ビットを受け取る出力バスとを有するこ
とを特徴とする乗算装置である。
[実施例] 乗算オペレーションに係るオペランドおよび演算結果は
2進ビツトによっである様式で表わされる。固定小数点
数は単に2の補数表示によって形成される。整数オペラ
ンドは4バイト長、整数結果は8バイト長である。浮動
小数点数は、符号ビット、指数部、および小数部を有す
る。符号ビット、110”は正オペランドを示唆し、符
号ビットKL I IIは負オペランドを示唆する。指
数は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−)の小数部を有する。
上位部12は左側14桁のための小数部を有し、下位部
13は右側14桁のための小数部を有する。
固定小数点形式14は32ビット(4バイト)の整数部
を有する。固定小数点形式による演算結果15は、4バ
イトから成る固定小数点形式の整数どうしの債が8バイ
トの整数となることを表わしている。
第1図について説明する。第1図は、本発明に従った乗
算装置の実施例の概略を表わすブロック図である。乗算
ユニツ1−29は、2個のデータ径路またはバスに接続
さ九た専用の機能ユニツ]−とみなすことができる。8
バイトのオペランドは入力バス20からレジスタ21お
よびレジスタ22に逐次にロードされる。オペランドの
ロード制御は、オペランドまたは演算結果の形式に関係
なく、同じである。良精度浮動小数点オペランド17は
1バイトの指数部と7バイトの小数部を有する。
短精度浮動小数点オペランド16および固定小数点オペ
ランド18にはゼロを埋め込まねばならない。乗数と被
乗数との区別は必要ではない。オペランドは、単に、乗
算される2個の数値M1およびM2とみなすことができ
る。オペランドM1が初めにレジスタ21にラッチされ
、次に、オペランドM2がレジスタ22にラッチされる
。レジスタ21の内容はまた、レジスタ23に複製され
る。
そうして2個のオペランドは、組合せ回路を有する指数
論理24および乗算論理25の入力として使用可能にな
る。指数論理24はオペランドのバイト0にある指数の
加算を実行する。同時に、オペランドの残りの7バイト
の積が、乗算論理25によって生成される。指数論理2
4は、パリティチェック、指数部加算、64増しコード
訂正、指数部減分、および真ゼロ強制を行う。乗算論理
25は、パリティチェック、剰余生成、非事前正規化検
知、小数部二〇検出、部分オペランド選択、28X28
ビット部分積生成、および部分積加算を行う。正規化論
理26は、事後正規化、tJs数部組合せ、指数部組合
せ、来示チェック、およびパリティ生成を行う。指数論
理24および乗算論理25の結果は真ゼロおよび事後正
規化によって指数論理24および正規化論理26で変更
される場合がある。指数論理24、乗算論理25、およ
び正規化論理26の働きの詳細は、第2図を参照して後
に述べる。
浮動小数点乗算の演算結果が良精度浮動小数点形式で要
求された場合は、演算結果の指数部1バイトおよび小数
部7バイト(拡張小数部の初めの14桁)をそれぞれバ
イトOおよびバイト1〜7として、出力バス27に送る
。拡張117度の演算結果が要求された場合は、演算結
果の指数部1バイトおよび小数部7バイト(拡張小数部
の後半の14桁)をそれぞれバイ1−〇およびバイト1
〜7として、出力バス27に送る。固定小数点乗算の演
算結果が要求された場合は、結果の8バイ1へをバイト
0〜7として出力バス27に送る。
第2図について説明する。第2図は、第1図の乗算ユニ
ツ1〜の詳細を表わすブロック図である。
前述のように、2個のオペランドM1およびM2のロー
ドは逐次に行わわる。オペランドは、局所記憶レジスタ
その他の適切な記憶場所からデータ入力バス30へ取り
出される。2個のオペランドを同時にロードできるよう
に2倍幅のデータバスまたは補助バスを備えたプロセッ
サにおいてもJ本発明を実施できるが、簡単のために、
ここでは逐次ロードのみについて記述する。
第1オペランドロードのため、例えばマイクロコードに
よってLDMI状況が活動化される。そうしてデータが
取り出されてデータ入力バス30において使用可能にな
る。符号情報および指数情報を有するバイト0はM1指
数レジスタ(MIE)31にラッチされる。仮数情報を
有する残りのバイト1〜7は選択論理70を介して適切
な部分オペランドレジスタ34.35.36および37
に送られる(第1図においてこれらをそれぞれMIA、
MIB、MIC:、およびMIDと記す)。LDMI状
況は、オペランド小数部の上位がマルチプレクサ65を
通過し、下位部がマルチプレクサ66を通過することを
指示する。こうして小数部の上位3.5バイトMl()
!I)がレジスタ34およびレジスタ35にランチさ肛
、小数部の下位3.5バイトMl (LO)がレジスタ
36およびレジスタ37にラッチされる。
その後、第2オペランドロードのためのLDM2状況が
活動化される。そうしてデータが取り出されてデータ入
力バス30において使用可能になる。符号情報および指
数情報を有するバイI〜0はM2指数レジスタ(M2E
)32にラッチされる。
仮数情数を有する残りのバイI−L〜′7は選択論理7
0を介して適切な部分オペランドレジスタ38(M2A
) 、39 (M2B) 、40 (M2C)、および
41(M2D)に送られる。LDM2状況は、オペラン
ド小数部の上位部がマルチプレクサ66を通過し、下位
部がマルチプレクサ65を通過するように指示する。こ
うして小数部の上位3゜5バイトM2 (HI)がレジ
スタ38およびレジスタ40にラッチされ、小数部の下
位3.5バイ1−M2(LO)がレジスタ39およびレ
ジスタ41にラッチされる。
またLDM2状況が活動化された際、M1データはMl
’レジスタに転送される。詳しく言うと、レジスタ(M
l)31.34.35.36.および37の内容がレジ
スタ(Ml’)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.つの機能が遂行される。小数部全ゼロ検出回路(O
F=Z)72が、いず汎かのオペランドの小数部が全て
ゼロであるという条件を検出する。コンピュータのアー
キテクチャによっては、この条件により真ゼロ指数が強
制されることがある。オペランド桁ゼロ検出回路(OD
=Z)73が、いずれかのオペランドの小数部の上位桁
が全てゼロであるという条件を検出する。このとき、い
ずれのオペランドの小数部も全ゼロでなければ、それは
一方(または両方)のオペランドの事前正規化が行われ
ていないことを示唆する。乗算ユニット29は、オペラ
ンドの事前正規化は行わず、単に、正規化の必要性の有
無を検出するだけである。コンピュータのアーキテクチ
ャによっては、オペランドの事前正規化を必要とするの
で、いずれか一方のオペランドの小数部の上位桁が全ゼ
ロ、かつ、いずれのオペランドの小数部も全ゼロでない
という条件を満たすと、NPRE状況を活動化する事に
よって、プロセッサに事前正規化ルーチンへの分岐を命
する事もできる。乗算ユニット29は、オペランドが事
前正規化されているかいないかに関係なく、適切な算術
的乗算を提供する。
部分オペランド選択の目的は、56ビツ1へ同志の1つ
の乗算問題を、28ビツト同志の4つの乗算問題に帰着
することである。この機能は1乗算チップと呼ばれるL
SIチップによって実現することができる。実施例にお
いては、乗算ユニット29の構成に、4つの乗算チップ
46.47.48および49が使用される。乗算チップ
は、28ビツトの部分オペランドを2つ要する。28ピ
ッ1−の部分オペランド2つは2つのレジスタレこ記憶
されており、28ビツト×28ピツ1〜の乗算器によっ
て乗算される。こうした部分オペランド【土、オペラン
ドM1およびM2から選択さAして4つの乗算チップに
記憶される。これを以下に示す。
乗算チップ46 レジスタ34およびレジスタ42 MIHI (Ml小数部の」二位28ビット、)レジス
タ38 M2HI (M2小数部の上位28ビツト)乗算チップ
47 レジスタ35およびレジスタ43 MIHI(M1小数部の上位28ビツト)レジスタ39 M2LO(M2小数部の下位28ビツト)乗算チップ4
8 レジスタ36およびレジスタ44 MILO(Ml小数部の下位28ビツト)レジスタ40 M’2HI(M2小数部の上位28ピツ1へ)乗算チッ
プ49 レジスタ37およびレジスタ45 MILO(M、1小数部の下位28ビツト)レジスタ4
1 M2LO(M2小数部の下位28ピツトンこうした部分
オペランドの乗算の各々の結果を部分積と呼ぶ。オペラ
ンド全体に対する部分オペランドの相対位置関係から、
最終積は、部分積50.51.52.53および54を
加算することによって得られる。これを次に示す。
I−1?−1!−1、−1、−1 Σ Σ Σ Σ Σ 黒 部 郡 都 郡 じ 余 φ 巾 余 案 φ 釉 釉 棉 垢 畷 舗n 部分積50.51および52の内部の56ビツトを和す
るには、3人力の加算器が必要である。
演算を高速に行うために、これを、3人力2出力の桁上
げ保管加算器C3A55および次段の2人力の桁上げ先
見全加算器CL A A 56によって構成する。最終
積の下位28ビツトは、単に、乗算チップ49からの部
分積の下位28ビツト54である。最終積の上位28ビ
ツトは、部分積50の上位28ビツトと、内部56ビツ
トからの桁上げとの和である。従って、桁上げ保管加算
器55の第1の入力は、ビットO〜55として部分積5
0およびビット56〜83として乗算チップ49からの
部分積の上位28ビツト53を受け取る。桁上げ保管加
算器55の第2の入力は、ビット0〜27にゼロを受け
取り、ビット28〜83として部分積51を受け取る。
桁上げ保管加算器55の第3の入力は、ビン1−〇〜2
7にゼロを受け取り、ビット28〜83として部分積5
2を受け取る。
下位28ビツト54は、最終積シフタ58のビット84
〜111に直接送られる。桁上げ先見全加算器56の出
力は、最終積シフタ58のビット0〜83の入力となる
最終積57は事前正規化が行われているかどうかには関
係なく、オペランド小数部M1およびM2の乗算の正し
い結果である。コンピュータアーキテクチャによって多
く使用されている乗算オペレーションは、両オペランド
の事前正規化と演算結果の事後正規化の両方を必要とす
る場合もある。
これは、一連の乗算オペレーションによって小数部の有
効部分が消失してしまうことのないようにするためであ
る。
事後正規化部75は、最終積57の」三位4ビットを吟
味して事後正規化すべきかどうかを判定する。上位4ビ
ツトが全ゼロでない場合(少なくとも1つが61″)は
、最終積シフタ58はシフトを行わない(シフ1〜量=
0)。浮動小数点数をアンロードするためのUNFL状
況が活動化していれば、出力バス59へ送られる演算結
果は最終積57の上位56ビツトである。拡張精度浮動
小数点数の拡張部分をアンロードするためのtJ N 
F E状況が活動化していれば、出力バスS9へ送られ
る演算結果は最終積57の下位56ビツトである。
最終積57の上位4ピツ1〜が全ゼロの場合は、最終積
シフタ58が左方へ4ビツトのシフトを行う。
UNFL状況が活動化していれば、出力バス59へ送ら
れる演算結、果は最終積57のビット4〜′59である
。UNFE状況が活動化していれば、1つのゼロディジ
ットが埋め込まれているビット60〜111である。こ
れは、下位の結果ディジットに適切な最終積ビット(す
なわち保護桁)を挿入しながら、最終積57を左方にひ
と桁シフトする処理である。こうして、上位桁にゼロを
有する小数部を生成するような浮動小数点乗算であって
も、そのゼロデイジッ1へをシフトアウトし最終積57
の残りのビン1〜を左方にシフトしかつ指数部を減分す
ることによって、その精度を維持することができる。指
数部の値は、事後正規化のシフトの後においても前と同
じ結果になるように必ず減分しなければならない。
マルチプレクサ60は、UNFL状況が活動状態にある
間、最終積シフタ58の」三位部分を出力バス59に送
り、UNFE状況が活動状態にある間、最終積シフタ5
8の下位部分を出力バス59に送る。このように、2つ
のアンロードオペレーションによって拡張精度浮動小数
点形式による演算結果の全体が出力バス59に得らJし
る。
浮動小数点形式による演算結果の第1のバイトは1つの
符号ビットおよび7ビツ1−の指数部から成る。結果符
号ビット63は、単に、オペランドの符号ビットの排他
的論理和(XOR)である。
結果の指数部はオペランドの指数部の加算から導出され
る。指数加算器61において、指数部の和から64が減
算される。事後正規化を行う場合は、小数部が左方にひ
と桁シフトされることを考慮して、指数部は1だけ減分
されねばならない。拡張結果が要求された場合は、小数
部の下位部に合わせるために、指数部はさらに14だL
j減分されねばならない。こうして、U N FL状況
が活動状態の場合は、事後正規化の必要性に応じて、指
数部は減分されないかまたは1だけ減分される。UNF
E状況が活動状態の場合は、事後正規化の必要性に応じ
て、指数は14または15だけ減分される。指数加算器
62において、指数加算器61の出力から、適切な減分
量(0,1,14、または15)が減算される。指数加
算器62から出力される7ビツトの結果指数、および結
果符号ビット63は、UNFL状況またはUNFE状況
が活動状態にある場合に、マルチプレクサ64を介して
出力バス59に送られる。一方のオペランドの仮数部が
ゼロである場合は、結果の指数部および符号ビットは、
全ゼロに強制される。このような結果を「真ゼロ」と定
義しているコンピュータアーキテクチャもある。この操
作は、マルチプレクサ64を介して全ゼロのバイ1−を
出力バス59へ送ることにより行われる。従って、指数
部の計算結果は無視される。
次に示す表−1は、出力バス59に送られる指数部と最
終積の組合せを示すものである。
表−1のEXPは、指数加算器61の出力である7ビツ
トの指数部とこれに連結する結果符号ピッ1−63を表
わしている。
表−1のUNFX状況(固定小数LJ、数のアンロード
)については後に説明する。
3つの異なった状態が乗算ユニット29により検知され
、状況標識によってプロセッサの他の部分に伝達される
。3つの異なった状態というのは、事前正規化が行われ
ていないことを示すNPRE状況、事後正規化が必要で
あることを示す208丁状況、および、指数部オーバフ
ロー/アンダーフローを示す0FUF状況である。
正規化された積の指数部が+63より大きいかまたは−
63より小さい場合は、そ71シぞれ指数部オーバーフ
ロー、または指数部アンダーフローの状態である。OF
 U F状況が活動化されて、そうした状態にあること
が示される。マイクロコードエラールーチンは、最終積
および状況標識に基づいて、正しい例外処理を遂行する
ことができる。
来算ユニツ1〜29は通常、省略時解釈によって適切な
例外結果を生成する。
乗算オペレーションによってはオペレーションの前に2
つのオペランドの事前正規化(小数部の上位桁がゼロに
ならないようにする)を要するものもある。一連のオペ
1ノージヨンにわたって、正規化された数値が維持され
れば、オペランドは既に事前正規化されているとみなす
ことができる。
これを利用するために、オペランドに関係なく、乗算ユ
ニット29の内部で乗算が行われる。マイクロコードエ
ラールーチンは結果の導出中にNPRE状況を吟味し、
オペランドが実際には、事−前正規化されていなかった
場合に(実際にはほとんどこういう場合はない)、あと
で訂正動作を行えるようにする。いずれか一方のオペラ
ンドが事前正規化されておらずかついずれのオペランド
も小数部がゼロでない場合に、N P RE状況が活動
化される。
適切な浮動小数点形式の演算結果を生成する一方で事後
正規化が必要となった場合は、P□ST状況が活動化さ
れる。マイクロコード例外処理ルーチンは、指数部のオ
ーバーフロー/アンプフローの分析にこれを利用できる
実施例の乗算装置は、浮動小数点数の乗算と同様の方法
によって、固定小数点数乗算を行うこともできる。ただ
し固定小数点乗算においては、演算結果のアンロードは
異なった方法で処理され、指数計算および事後正規化は
行わAしなl、%。
固定小数点オペランドをロードするために番よ、そAし
を入力バス30のバイト1〜4に置き、他【よゼロとし
なければならない。実際には、例えば、バイトOがゼロ
でなくとも、演算結果には影響を与えない場合もある。
浮動小数点の場合と同じく、オペランドM1およびM2
は逐次にロードされるものとする。バイI−1〜4のデ
ータは、それがあたかも浮動小数点オペランドの一部で
あるかのように、選択論理70、レジスタ、乗算チップ
、および加算器によって処理される。最4,11積の最
初の8パイ1〜(ただし事後正規化はされていなシ))
は、固定小数点乗算の正しい結果を与える。
出力バス59に所望の8パイ1〜の結果を得るためには
、マルチプレクサ64が最終積の上位8ピツ1〜を送り
、最終積シフタ58が8ビツトのシフ1〜を行い、かつ
、マルチプレクサ60が」三位56ビツト(最終積のピ
ッl−8〜6H3)を送らねばならない。固定小数点数
のアンロードが指定された場合(UNFX状況)は、指
数計算および事後正規化のためのハードウェアは結果に
対して何ら影響を及ぼさない。UNFX状況におulて
は、NPRE状況、PO8T状況、および0FUF状況
は意味を持たず、固定小数点オペレーションの間、これ
らは無視される。
固定小数点乗算の結果は正オペランドの場合のみ有効で
ある。マイクロコードまたは特別のノ1−ドウエアがオ
ペランドのピッI−0を吟味し、それが# I I+で
あれば(2の補数表示によって負数を示唆している)、
オペランドを正しく補数化するか、または、負オペラン
ドを含む固定小数点乗算の結果を補正する。小数オペラ
ンドデータはノ1−トウエアによって常に11正″と解
釈されるので、どんな負固定小数点オペランドであって
もそれは正で232よりも大きいと解釈される。こうし
て、固定小数点乗算が正オペランドおよび負オペランド
を含む場合は、あたかもそれらが正オペランド、および
232よりも大きい正オペランドであるかのびとく乗算
が実行される。従って、乗算ユニット29の結果から正
オペランドの232倍kW<算することによって正しい
結果を得ることができる。オペランドが両方とも負なら
ば、それらをロードする前に補数化することによって、
UNFX状況活動化することによって、U N F X
状況活動化に従って正しい結果を直接得ることができる
浮動小数点乗算および固定小数点乗算の実行に加えて、
誤った結果を生゛成するような障害が乗算ユニツ1〜2
9の内部または周辺部で発生すれば、そAしらを検知す
ることも要求される。エラーを示すE RR状況は、オ
ペランドパリティエラー、指数加算器エラー、または、
剰余エラーがあった場合に、活動化される。出力バス5
9から出力を受け取る装置(図示せず)がエラーチェッ
クを実行できるように、最終積のパリティが生成される
累算ユニット29は8バイ1〜をl lj、位としてオ
ペランドを受け取る。各々のパイ1〜には、1つのパリ
ティビットが付加されている。従って単一ビツ1−エラ
ーが生じていると、これはオペランドパリティエラーと
して、検知され、E RR状況が活動化される。
2つの指数加算器61および62は、デュアル・レイル
、パリティ予測−1または剰余検査のような、任意の標
準的なエラー検知技術を用いることができる。
乗算器の内部エラー検知には、モジュロ剰余検査による
方法が用いられる。数学的に言うと、代数的な結果の剰
余は、同じ代数的演算をオペランドの剰余に適用するこ
とによって得られる剰余に、常に等しい。これを乗算ユ
ニット29に適分すれば、最終積の乗剰が、オペランド
の剰余どうしの積の剰余に一致するはずである。もしこ
の一致がないとすれば、内部に何らかのエラーが発生し
たことを意味する。こうして、選択論理70がオペラン
ドを受け取った際に、剰余処理部PE576において、
各々のオペランドの剰余が計算される。
最終積(ただし事後正規化の前)の剰余は、その積が得
られたときに剰余処理部RES77で、計算される。結
果処理部75における剰余検査時に、最終積の剰余と、
2つのオペランドの剰余の積との比較が行われる。もし
これらが一致しなければ、ERR状況が活動化される。
非常に短いマシンサイクルを有するプロセッサにおいて
は、組合せ回路を介して結果を伝搬させるために余分の
サイクルを用意しなければならない場合がある。このよ
うな場合には、乗算マイクロコードルーチンにおいてロ
ード・制御ワードおよびアンロード制御ワードの間にダ
ミーマイクロワードを挿入しておいてもよい。これを用
いてオペラン1(のロードを並行して行うことによって
、ベクトル処理を効率よく実行できる。例えば、レジス
タ42とレジスタ38の乗算が行わオしている間に、L
DMI状況によって次のM]オペランドをレジスタ34
にロードすることができる。現在の結果をアンロードし
た後に、L L) M 2状況だけを用いて、次のM2
オペランドをロードし新しいM1オペランドをMl’レ
ジスタに送る。このようにして、1回ループ繰返しにつ
き平均1つのマイクロコードを減らして、非常に長いベ
クトル乗算を実行することができる。
[発明の効果] 以上に説明した乗算装置によって、固定小数点乗算およ
び浮動小数点乗算のいずれをも高速に実行スることが可
能になる。
【図面の簡単な説明】
第1図は本発明に従った乗算装置の実施例の概略を表わ
すブロック図、第2図は第1図の乗算−装置の詳細に表
わすブロック図、第3図は数値の表現形式の種類を表わ
す図である。 出願人 インターナショナル・ビジネス・マシーンズ・
コーポレーション 代理人 弁理士 頓 宮 孝 − (外1名)

Claims (1)

  1. 【特許請求の範囲】 乗算すべき2つのオペランドを受け取る入力バスと、 該入力バスに接続され前記2つのオペランドの各々の少
    なくとも一部分を受け取る複数のレジスタと、 該複数のレジスタの少なくとも1つに接続され前記複数
    のレジスタの少なくとも2つの内容を乗算することによ
    って部分積を生成する複数の乗算器と、 該複数の乗算器の各々に接続され前記複数の乗算器の各
    々によって生成される部分積を合計して最終積を生成す
    る加算手段と、 前記入力バスに接続され前記2つのオペランドに係る符
    号情報および指数情報を受け取る複数の指数レジスタと
    、 該複数の指数レジスタの少なくとも2つに接続され結果
    符号ビットを生成する論理手段と、前記複数の指数レジ
    スタの少なくとも2つに接続され複数の結果指数ビット
    を生成する指数加算手段と、 前記加算手段、前記論・理手段、および前記指数加算手
    段に接続され前記最終積に係る正しい符号ビットおよび
    指数ビットを組合せる指数部組合せ手段と、 前記加算手段および前記複数の乗算器の少なくとも1つ
    に接続され最終積を必要なだけシフトするシフト手段と
    、 該シフト手段に接続され前記最終積に係る正しい小数部
    ビットを組合せる小数部組合せ手段と、前記指数部組合
    せ手段および前記小数部組合せ手段に接続さ才b、前記
    2つのオペランドの積を構成する符号ピッ1−1指数ビ
    ツト、および小数部ビットを受け取る出力バスとを有す
    ることを特徴とする乗算装置。
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 true JPS6027026A (ja) 1985-02-12
JPH0414366B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205559A (ja) * 1990-11-30 1992-07-27 Nec Corp ベクトル演算装置
JPH05204608A (ja) * 1991-09-26 1993-08-13 Internatl Business Mach Corp <Ibm> 高速乗算器

Families Citing this family (38)

* 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
US5187679A (en) * 1991-06-05 1993-02-16 International Business Machines Corporation Generalized 7/3 counters
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
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
US5740398A (en) * 1993-10-18 1998-04-14 Cyrix Corporation Program order sequencing of data in a microprocessor with write buffer
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
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205559A (ja) * 1990-11-30 1992-07-27 Nec Corp ベクトル演算装置
JPH05204608A (ja) * 1991-09-26 1993-08-13 Internatl Business Mach Corp <Ibm> 高速乗算器

Also Published As

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

Similar Documents

Publication Publication Date Title
JPS6027026A (ja) 乗算装置
US4975868A (en) Floating-point processor having pre-adjusted exponent bias for multiplication and division
US3828175A (en) Method and apparatus for division employing table-lookup and functional iteration
US5392228A (en) Result normalizer and method of operation
EP0326415A2 (en) Floating point/integer processor with divide and square root functions
US4866652A (en) Floating point unit using combined multiply and ALU functions
US6925480B2 (en) Microarchitecture of an arithmetic unit
US5184318A (en) Rectangular array signed digit multiplier
US4755962A (en) Microprocessor having multiplication circuitry implementing a modified Booth algorithm
Naini et al. 1 GHz HAL SPARC64/sup R/Dual Floating Point Unit with RAS features
GB2239536A (en) Binary division of signed operands
EP0487814A2 (en) Overflow determination for three-operand alus in a scalable compound instruction set machine
Davis The ILLIAC IV processing element
US4594680A (en) Apparatus for performing quadratic convergence division in a large data processing system
US5144576A (en) Signed digit multiplier
US4386413A (en) Method and apparatus of providing a result of a numerical calculation with the number of exact significant figures
US3342983A (en) Parity checking and parity generating means for binary adders
US6519621B1 (en) Arithmetic circuit for accumulative operation
US20090198758A1 (en) Method for sign-extension in a multi-precision multiplier
US3840727A (en) Binary multiplication by addition with non-verlapping multiplier recording
US5557563A (en) Data processing method and apparatus including iterative multiplier
US8219604B2 (en) System and method for providing a double adder for decimal floating point operations
US4190894A (en) High speed parallel multiplication apparatus with single-step summand reduction
US3051387A (en) Asynchronous adder-subtractor system
EP0534760A2 (en) High speed multiplier device