JPH05233228A - 浮動小数点演算装置およびその演算方法 - Google Patents
浮動小数点演算装置およびその演算方法Info
- Publication number
- JPH05233228A JPH05233228A JP4304203A JP30420392A JPH05233228A JP H05233228 A JPH05233228 A JP H05233228A JP 4304203 A JP4304203 A JP 4304203A JP 30420392 A JP30420392 A JP 30420392A JP H05233228 A JPH05233228 A JP H05233228A
- Authority
- JP
- Japan
- Prior art keywords
- partial product
- bit
- bits
- incrementer
- sum
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- 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)
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】 浮動小数点ユニットのサイズを縮小する。
【構成】 A*B+Cの数値演算を実行する浮動小数演
算に関するアーキテクチャおよび方法。乗算は2つまた
は3つのステージで実行され、各ステージは部分積およ
び同時に実行された増分の加算の応答セットを含む。パ
イプラインのアーキテクチャは、全加算器21への入力
に先立つステージで中間の積と最下位ビットとオペラン
ドCとの加算を提供する。それにより、全加算器21の
有効部分をより簡潔および小型の増分器回路に置換える
ことができる。乗算演算を2つまたは3つの部分積演算
に分割することで必要な乗算器のサイズを比例的に縮小
する乗算器での乗算、加算演算のパイプラインおよび同
時の実行処理により通常サイズの3/4のサイズの全加
算器を用いても数学演算A*B+Cの結果を2サイクル
で提供する。
算に関するアーキテクチャおよび方法。乗算は2つまた
は3つのステージで実行され、各ステージは部分積およ
び同時に実行された増分の加算の応答セットを含む。パ
イプラインのアーキテクチャは、全加算器21への入力
に先立つステージで中間の積と最下位ビットとオペラン
ドCとの加算を提供する。それにより、全加算器21の
有効部分をより簡潔および小型の増分器回路に置換える
ことができる。乗算演算を2つまたは3つの部分積演算
に分割することで必要な乗算器のサイズを比例的に縮小
する乗算器での乗算、加算演算のパイプラインおよび同
時の実行処理により通常サイズの3/4のサイズの全加
算器を用いても数学演算A*B+Cの結果を2サイクル
で提供する。
Description
【0001】
【産業上の利用分野】本発明は、一般にデータ処理シス
テムに関し、およびさらに詳しくは、効率よく構成され
た浮動小数点演算ユニットを用いるアーキテクチャおよ
び方法に関する。
テムに関し、およびさらに詳しくは、効率よく構成され
た浮動小数点演算ユニットを用いるアーキテクチャおよ
び方法に関する。
【0002】
【従来の技術】デジタルコンピュータでの浮動小数点演
算の実行に対して種々のアーキテクチャが知られてお
り、および用いられている。浮動小数点演算の複雑さお
よび代表的なオペランドのサイズが与えられると、そこ
では科学的なアプリケーションに対して、小数部は、名
目上、50ビットより大きいビットで構成されるが、科
学的な精度を維持しながら、さらに、回路の複雑さを削
減するアーキテクチャに対する必要性が強く存在してい
る。このことは、ワークステーションの競合マーケッ
ト、すなわち、コンピュータ設計者達が最大級の計算能
力と、一方、最小限の価格およびサイズのハードウェア
とをワークステーションのユーザーに提供しようと努力
しているワークステーションの競合マーケットにおいて
は、特に、真実である。
算の実行に対して種々のアーキテクチャが知られてお
り、および用いられている。浮動小数点演算の複雑さお
よび代表的なオペランドのサイズが与えられると、そこ
では科学的なアプリケーションに対して、小数部は、名
目上、50ビットより大きいビットで構成されるが、科
学的な精度を維持しながら、さらに、回路の複雑さを削
減するアーキテクチャに対する必要性が強く存在してい
る。このことは、ワークステーションの競合マーケッ
ト、すなわち、コンピュータ設計者達が最大級の計算能
力と、一方、最小限の価格およびサイズのハードウェア
とをワークステーションのユーザーに提供しようと努力
しているワークステーションの競合マーケットにおいて
は、特に、真実である。
【0003】本発明が指向している古典的な浮動小数点
数値演算は、2つのオペランドの乗算、すなわち、乗算
結果を第3のオペランドに加える加算が連続で引続くよ
うな乗算を含み、数学的にはA*B+Cと表わされる。
この数値演算の重要性を米国特許4,969,118号
の中の説明から拾い出すことができる。A*B+Cの数
値演算は、非常に柔軟に使用されるが、慣例のアーキテ
クチャにおいて実施するとき、回路の複雑さに限って
は、犠牲を強いることになる。問題は、個々にNビット
のオペランドが持つ精度を計算結果が維持していること
を確実にするためには、最終ステージの加算器は全3N
ビットを取扱うことが可能でなければならないという事
実から生じる。このために、我々の代表的な50ビット
オペランドに対して全加算器は150ビットより大きい
ビットを取扱うことが可能でなければならない。そのよ
うなアーキテクチャの一例は米国特許4,999,80
2号に現われている。
数値演算は、2つのオペランドの乗算、すなわち、乗算
結果を第3のオペランドに加える加算が連続で引続くよ
うな乗算を含み、数学的にはA*B+Cと表わされる。
この数値演算の重要性を米国特許4,969,118号
の中の説明から拾い出すことができる。A*B+Cの数
値演算は、非常に柔軟に使用されるが、慣例のアーキテ
クチャにおいて実施するとき、回路の複雑さに限って
は、犠牲を強いることになる。問題は、個々にNビット
のオペランドが持つ精度を計算結果が維持していること
を確実にするためには、最終ステージの加算器は全3N
ビットを取扱うことが可能でなければならないという事
実から生じる。このために、我々の代表的な50ビット
オペランドに対して全加算器は150ビットより大きい
ビットを取扱うことが可能でなければならない。そのよ
うなアーキテクチャの一例は米国特許4,999,80
2号に現われている。
【0004】ビットの計数が150の範囲内となる出力
を与えるような資源を伴なう全加算器は、非常に大規模
であり、およびそれ故に、それを搭載する集積回路チッ
プの大部分を占有してしまいがちである。米国特許4,
999,802号におけるアーキテクチャは、第1の演
算の結果が連続的な演算の中のオペランドとなるように
定められた状況でのパイプライン処理の演算を選択的に
行うことにより、より効率化して、浮動小数点演算ユニ
ットの全処理能力を改良している。
を与えるような資源を伴なう全加算器は、非常に大規模
であり、およびそれ故に、それを搭載する集積回路チッ
プの大部分を占有してしまいがちである。米国特許4,
999,802号におけるアーキテクチャは、第1の演
算の結果が連続的な演算の中のオペランドとなるように
定められた状況でのパイプライン処理の演算を選択的に
行うことにより、より効率化して、浮動小数点演算ユニ
ットの全処理能力を改良している。
【0005】全加算器のサイズを縮小する洗練された浮
動小数点アーキテクチャでは上述の3番目の最上位ビッ
トに対して増分器を用いている。そのような構成例は米
国特許4,969,118号およびIBM Techn
ical Disclosure Bulletin
Volume30,No.3,8月 1987,ページ
982〜987に現われている。このようにして、サイ
ズNの増分器は全加算器のサイズを比例した量だけ縮小
し、全加算器を、A*B+Cの計算においてNサイズの
オペランドに対して2Nサイズにする。増分器は、単
に、桁上り入力(carry−in)信号を取り込み、
結果を上位の有効ビット位置に伝えるという点において
加算器よりも実質的に小さいことが知られている。米国
特許4,969,118号に示されているように、増分
器の桁上り出力(carry−out)は、加算器の桁
上り入力への循環桁上げの戻り(end around
carry back)となる。
動小数点アーキテクチャでは上述の3番目の最上位ビッ
トに対して増分器を用いている。そのような構成例は米
国特許4,969,118号およびIBM Techn
ical Disclosure Bulletin
Volume30,No.3,8月 1987,ページ
982〜987に現われている。このようにして、サイ
ズNの増分器は全加算器のサイズを比例した量だけ縮小
し、全加算器を、A*B+Cの計算においてNサイズの
オペランドに対して2Nサイズにする。増分器は、単
に、桁上り入力(carry−in)信号を取り込み、
結果を上位の有効ビット位置に伝えるという点において
加算器よりも実質的に小さいことが知られている。米国
特許4,969,118号に示されているように、増分
器の桁上り出力(carry−out)は、加算器の桁
上り入力への循環桁上げの戻り(end around
carry back)となる。
【0006】数値演算A*B+Cの乗算ステージを実行
する必要のある電子機器は、大きいNの値を有するオペ
ランドに対して同様に複雑となる。現代の高速浮動小数
点乗算アーキテクチャは、アレイ形態の桁上げ保存加算
器(CSAs)で構成されたウォーレスツリー(Wal
lace trees)を用いて、個々にNビットで構
成された2つのオペランドに対して2Nビットの出力を
与える。そのような例は、上述したIBM Techn
ical Disclosure Bulletin、
ならびに米国特許4,969,118号および米国特許
4,999,802号および表題がComputer
Architecture A Quantitati
ve Approachと付けられた、D.A.Pat
terson等によるテキストブック、版権1990,
ページA−42〜A−49、に現われている。Patt
erson等によるテキストブック中には、乗算パスの
実行を通じて乗算アレイのサイズを縮小できるという提
言がある。
する必要のある電子機器は、大きいNの値を有するオペ
ランドに対して同様に複雑となる。現代の高速浮動小数
点乗算アーキテクチャは、アレイ形態の桁上げ保存加算
器(CSAs)で構成されたウォーレスツリー(Wal
lace trees)を用いて、個々にNビットで構
成された2つのオペランドに対して2Nビットの出力を
与える。そのような例は、上述したIBM Techn
ical Disclosure Bulletin、
ならびに米国特許4,969,118号および米国特許
4,999,802号および表題がComputer
Architecture A Quantitati
ve Approachと付けられた、D.A.Pat
terson等によるテキストブック、版権1990,
ページA−42〜A−49、に現われている。Patt
erson等によるテキストブック中には、乗算パスの
実行を通じて乗算アレイのサイズを縮小できるという提
言がある。
【0007】
【発明が解決しようとする課題】そのような教示に関連
して、全加算器のサイズをさらに縮小し、乗算器アレイ
のサイズを縮小し、乗算および加算の演算を重複させて
パイプライン処理を実施するような浮動小数点アーキテ
クチャおよびそれに関連する使用方法に対する必要性が
なお存在する。
して、全加算器のサイズをさらに縮小し、乗算器アレイ
のサイズを縮小し、乗算および加算の演算を重複させて
パイプライン処理を実施するような浮動小数点アーキテ
クチャおよびそれに関連する使用方法に対する必要性が
なお存在する。
【0008】
【課題を解決するための手段】本発明は、A*B+Cの
浮動小数点数値演算を実行するアーキテクチャを提供す
る。このアーキテクチャでは、オペランドの小数部はN
ビットであり、およびオペランドAおよびオペランドB
の最下位ビット(least significant
bits)の小数部N/M(ここでMは1より大きい
整数部)を用いて第1の部分積を発生する回路と、オペ
ランドAおよびオペランドBの別の小数部のビットの第
2の部分積を発生する回路と、オペランドCと第1の部
分積との和を算出し、およびその結果の選択ビットを、
上記数値演算の最下位ビットの小数部分の受取りに適し
た第1の増分器に対して提供する回路と、第1の部分積
から選択された最上位ビット(most signif
icant bits)と第2の部分積から選択された
最上位ビットとの和を、2Nビットより十分に小さいビ
ットで構成される和を提供可能な加算器において算出す
る回路とを有している。一つの変形として、加算器から
の桁上げ出力ビットは、そのん第2の増分器に対して桁
上げ入力ビットとして提供され、その第2の増分器はそ
の桁上げ出力を循環桁上げビットとして第1の増分器に
提供する。本発明は、さらに、オペランドAおよびオペ
ランドBの最下位ビットを用いて、第1の部分積を発生
し、その結果から選択されたビットを、最下位ビット増
分器への入力のためにオペランドCに加算し、および第
1の部分積から選択された最上位ビットと、第2の部分
積から選択された最上位ビットとを加算器で加算するス
テップをさらに考えている。
浮動小数点数値演算を実行するアーキテクチャを提供す
る。このアーキテクチャでは、オペランドの小数部はN
ビットであり、およびオペランドAおよびオペランドB
の最下位ビット(least significant
bits)の小数部N/M(ここでMは1より大きい
整数部)を用いて第1の部分積を発生する回路と、オペ
ランドAおよびオペランドBの別の小数部のビットの第
2の部分積を発生する回路と、オペランドCと第1の部
分積との和を算出し、およびその結果の選択ビットを、
上記数値演算の最下位ビットの小数部分の受取りに適し
た第1の増分器に対して提供する回路と、第1の部分積
から選択された最上位ビット(most signif
icant bits)と第2の部分積から選択された
最上位ビットとの和を、2Nビットより十分に小さいビ
ットで構成される和を提供可能な加算器において算出す
る回路とを有している。一つの変形として、加算器から
の桁上げ出力ビットは、そのん第2の増分器に対して桁
上げ入力ビットとして提供され、その第2の増分器はそ
の桁上げ出力を循環桁上げビットとして第1の増分器に
提供する。本発明は、さらに、オペランドAおよびオペ
ランドBの最下位ビットを用いて、第1の部分積を発生
し、その結果から選択されたビットを、最下位ビット増
分器への入力のためにオペランドCに加算し、および第
1の部分積から選択された最上位ビットと、第2の部分
積から選択された最上位ビットとを加算器で加算するス
テップをさらに考えている。
【0009】すなわち、請求項1記載の発明は、小数部
がNビットで構成され、浮動小数点数値演算(A*B+
C)を実行する浮動小数点演算装置において、Aおよび
Bの中のN/M(Mは1より大きい整数)の最下位ビッ
トを用いて第1の部分積を発生する手段と、AおよびB
の中の次のN/Mビットを用いて第2の部分積を発生す
る手段と、Cと前記第1の部分積との和を算出し、その
結果から選択されたビットを第1の増分器に提供し、当
該第1の増分器は前記数値演算のN(M−1)/Mの最
下位ビットを受取る手段と、前記第1の部分積から選択
された最上位ビットと、前記第2の部分積から選択され
た最上位ビットとの和を2N−N(M−1)/Mビット
加算器において算出する手段とを具えたことを特徴とす
る。
がNビットで構成され、浮動小数点数値演算(A*B+
C)を実行する浮動小数点演算装置において、Aおよび
Bの中のN/M(Mは1より大きい整数)の最下位ビッ
トを用いて第1の部分積を発生する手段と、AおよびB
の中の次のN/Mビットを用いて第2の部分積を発生す
る手段と、Cと前記第1の部分積との和を算出し、その
結果から選択されたビットを第1の増分器に提供し、当
該第1の増分器は前記数値演算のN(M−1)/Mの最
下位ビットを受取る手段と、前記第1の部分積から選択
された最上位ビットと、前記第2の部分積から選択され
た最上位ビットとの和を2N−N(M−1)/Mビット
加算器において算出する手段とを具えたことを特徴とす
る。
【0010】請求項2記載の発明は、前記選択された最
上位ビットの和を算出する手段は桁上げビットを第2の
増分器に提供し、前記第1の増分器から当該桁上げビッ
トを受取ることを特徴とする。
上位ビットの和を算出する手段は桁上げビットを第2の
増分器に提供し、前記第1の増分器から当該桁上げビッ
トを受取ることを特徴とする。
【0011】請求項3記載の発明は、前記Cと第1の部
分積との和を算出する手段は、前記第2の部分積を発生
する手段と同時に動作することを特徴とする。
分積との和を算出する手段は、前記第2の部分積を発生
する手段と同時に動作することを特徴とする。
【0012】請求項4記載の発明は、小数部がNビット
で構成され、浮動小数点数値演算(A*B+C)を実行
する浮動小数点演算方法において、AおよびBの中のN
/M(Mは1より大きい整数)の最下位ビットを用いて
乗算器において第1の部分積を発生するステップと、A
およびBの中の次のN/Mビットを用いて前記乗算器に
おいて第2の部分積を発生するステップと、Cと前記第
1の部分積との和を算出し、その結果から選択されたビ
ットを、前記数値演算のN(M−1)/Mの最下位のビ
ットを受取る第1の増分器に提供するステップと、前記
第1の部分積から選択された最上位ビットと、前記第2
の部分積から選択された最上位ビットとの和を2N−N
(M−1)/Mビット加算器において算出するステップ
とを具えたことを特徴とする。
で構成され、浮動小数点数値演算(A*B+C)を実行
する浮動小数点演算方法において、AおよびBの中のN
/M(Mは1より大きい整数)の最下位ビットを用いて
乗算器において第1の部分積を発生するステップと、A
およびBの中の次のN/Mビットを用いて前記乗算器に
おいて第2の部分積を発生するステップと、Cと前記第
1の部分積との和を算出し、その結果から選択されたビ
ットを、前記数値演算のN(M−1)/Mの最下位のビ
ットを受取る第1の増分器に提供するステップと、前記
第1の部分積から選択された最上位ビットと、前記第2
の部分積から選択された最上位ビットとの和を2N−N
(M−1)/Mビット加算器において算出するステップ
とを具えたことを特徴とする。
【0013】請求項5記載の発明は、前記第1の増分器
から前記加算器へ桁上げビットを転送するステップと、
前記加算器から第2の増分器へ桁上げビットを転送する
ステップとを具えたことを特徴とする。
から前記加算器へ桁上げビットを転送するステップと、
前記加算器から第2の増分器へ桁上げビットを転送する
ステップとを具えたことを特徴とする。
【0014】請求項6記載の発明は、Cと第1の部分積
との和を算出する前記ステップと、前記第2の部分積を
発生する前記ステップとをほぼ同時に実行することを特
徴とする。
との和を算出する前記ステップと、前記第2の部分積を
発生する前記ステップとをほぼ同時に実行することを特
徴とする。
【0015】請求項7記載の発明は、小数部A,Bおよ
びCを用いて浮動小数点数値演算(A*B+C)を実行
し、結果として生じる小数部を作成する浮動小数点演算
装置において、AおよびBの中の第1の最下位ビット部
分を用いて第1の部分積を発生する手段と、AおよびB
の中の最下位ビットの次のビットを用いて第2の部分積
を発生する手段と、Cと前記第1の部分積との和を算出
し、その和の一部分を第1の増分器に提供して、前記結
果として生じる小数部の最下位ビット部分を形成する手
段と、前記第1の部分積および前記第2の部分積の和を
算出して、結果として生じる小数部の残余の部分を形成
する手段とを具えたことを特徴とする。
びCを用いて浮動小数点数値演算(A*B+C)を実行
し、結果として生じる小数部を作成する浮動小数点演算
装置において、AおよびBの中の第1の最下位ビット部
分を用いて第1の部分積を発生する手段と、AおよびB
の中の最下位ビットの次のビットを用いて第2の部分積
を発生する手段と、Cと前記第1の部分積との和を算出
し、その和の一部分を第1の増分器に提供して、前記結
果として生じる小数部の最下位ビット部分を形成する手
段と、前記第1の部分積および前記第2の部分積の和を
算出して、結果として生じる小数部の残余の部分を形成
する手段とを具えたことを特徴とする。
【0016】
【作用】好適実施例において、本発明は、乗算アレイ,
サイズを縮小した加算器、2つの増分器、および増分器
から増分器への循環桁上げを用いて、2サイクルシーケ
ンスでA*B+Cの演算を実行する浮動小数点演算ユニ
ットに関する。そのアーキテクチャは、第1のサイクル
の間、オペランドAがオペランドBの小数部と乗算され
るようにしたパイプライン処理のデータ操作を提供す
る。この結果の最下位ビットはオペランドCの適切にシ
フトされたビットに加算される。第2のサイクルの間、
オペランドAはオペランドBの残余のビットに乗算さ
れ、オペランドCの整列したビットに加算され、一つの
加算器および2つの増分器を用いて前の乗算サイクルか
らのビットと組合わされる。加算器は最下位ビット(L
SB)増分器から桁上げを受取り、および最上位ビット
(MSB)増分器に桁上げを提供する。2サイクルおよ
びLSB増分器の使用によって乗算器アレイおよび全加
算器の双方のサイズが十分に縮小する。本発明のこれら
の形態および他の形態は以下の詳細な記述を考慮する
と、さらに明確に理解および評価されよう。
サイズを縮小した加算器、2つの増分器、および増分器
から増分器への循環桁上げを用いて、2サイクルシーケ
ンスでA*B+Cの演算を実行する浮動小数点演算ユニ
ットに関する。そのアーキテクチャは、第1のサイクル
の間、オペランドAがオペランドBの小数部と乗算され
るようにしたパイプライン処理のデータ操作を提供す
る。この結果の最下位ビットはオペランドCの適切にシ
フトされたビットに加算される。第2のサイクルの間、
オペランドAはオペランドBの残余のビットに乗算さ
れ、オペランドCの整列したビットに加算され、一つの
加算器および2つの増分器を用いて前の乗算サイクルか
らのビットと組合わされる。加算器は最下位ビット(L
SB)増分器から桁上げを受取り、および最上位ビット
(MSB)増分器に桁上げを提供する。2サイクルおよ
びLSB増分器の使用によって乗算器アレイおよび全加
算器の双方のサイズが十分に縮小する。本発明のこれら
の形態および他の形態は以下の詳細な記述を考慮する
と、さらに明確に理解および評価されよう。
【0017】
【実施例】以下、図面を参照して本発明の実施例を詳細
に説明する。
に説明する。
【0018】図1は数学的関係がA*B+Cと定義さ
れ、ここで、A,BおよびCは個々にNビット(N=5
3)で構成された浮動小数点演算の実行に対する古典的
なアプローチ方法を示す。オペランドCの小数部は、中
間結果A*Bの切捨てまたは丸目の前に加算されなけれ
ばならないことは明らかである。従って、A*Bの中間
結果は、106ビットから成り、桁上げ状態を決定する
2ビットをさらに有する。古典的なやり方に従っては、
オペランドCの小数部をA*Bの小数部に整列させてか
ら、オペランドCの53ビットがA*Bの結果の108
ビットに加算される。Cの整列の範囲は図1中で点線に
より示されている。そのような整列に引続き、A*Bお
よびCの2つの値が、161ビットの出力を有する全加
算器において加算される。左側のSビットは、別個の論
理で取扱われる積A*Bの符号を伴った値Cの符号を表
わす。XORは161ビット全加算器からの正しい1の
補数値を提供するために用いられる。
れ、ここで、A,BおよびCは個々にNビット(N=5
3)で構成された浮動小数点演算の実行に対する古典的
なアプローチ方法を示す。オペランドCの小数部は、中
間結果A*Bの切捨てまたは丸目の前に加算されなけれ
ばならないことは明らかである。従って、A*Bの中間
結果は、106ビットから成り、桁上げ状態を決定する
2ビットをさらに有する。古典的なやり方に従っては、
オペランドCの小数部をA*Bの小数部に整列させてか
ら、オペランドCの53ビットがA*Bの結果の108
ビットに加算される。Cの整列の範囲は図1中で点線に
より示されている。そのような整列に引続き、A*Bお
よびCの2つの値が、161ビットの出力を有する全加
算器において加算される。左側のSビットは、別個の論
理で取扱われる積A*Bの符号を伴った値Cの符号を表
わす。XORは161ビット全加算器からの正しい1の
補数値を提供するために用いられる。
【0019】全加算および乗算に対する電子回路の設計
における当業者は、全加算器が、非常に規模が大きく、
複雑な機器であることを知っている。もしも全加算器の
ビットサイズを縮小できるのであれば利益があることは
明らかである。同様に、もし、複数のCSAで典型的に
構成されたウォーレスツリーのビット数を縮小できるの
であれば、回路のサイズを十分に縮小することができ
る。
における当業者は、全加算器が、非常に規模が大きく、
複雑な機器であることを知っている。もしも全加算器の
ビットサイズを縮小できるのであれば利益があることは
明らかである。同様に、もし、複数のCSAで典型的に
構成されたウォーレスツリーのビット数を縮小できるの
であれば、回路のサイズを十分に縮小することができ
る。
【0020】上述の米国特許4,969,118号は、
A*B+Cの数学的演算(ここでオペランドA,Bおよ
びCは各Nビットである)に対して、Nビット増分器を
全加算器の最上位ビット(MSB)位置で用いて全加算
器のサイズを3Nから2Nに縮小することができること
を提言している。同様のアプローチは、上述のIBMT
echnical Disclosure Bulle
tinに述べられている。本発明によるアーキテクチャ
は、全加算器を用いることによって、全加算の最下位ビ
ット(LSB)側で実行される演算を置き換えて、全加
算器のサイズを縮小し、およびその態様のひとつとして
ウォーレスツリー乗算器のサイズを縮小する。
A*B+Cの数学的演算(ここでオペランドA,Bおよ
びCは各Nビットである)に対して、Nビット増分器を
全加算器の最上位ビット(MSB)位置で用いて全加算
器のサイズを3Nから2Nに縮小することができること
を提言している。同様のアプローチは、上述のIBMT
echnical Disclosure Bulle
tinに述べられている。本発明によるアーキテクチャ
は、全加算器を用いることによって、全加算の最下位ビ
ット(LSB)側で実行される演算を置き換えて、全加
算器のサイズを縮小し、およびその態様のひとつとして
ウォーレスツリー乗算器のサイズを縮小する。
【0021】改良された手法の中心は乗算の演算を複数
サイクルに分割することおよびその複数サイクルにおい
て部分積をパイプラインのアーキテクチャを用いて選択
的に加算することにある。
サイクルに分割することおよびその複数サイクルにおい
て部分積をパイプラインのアーキテクチャを用いて選択
的に加算することにある。
【0022】図2は本発明の好適実施例に関連する演算
を概念的に示す。再び、オペランドA,BおよびCはN
ビット(ここでN=53)より成り、そしてオペランド
BはM、すなわち、1より大きい整数であるMのセグメ
ントに分割される。図中、Mは2である。そのように実
施しながら、回路アーキテクチャは、図3の構成におい
て点線により区別したように、3つの基本セグメントで
構成されるパイプラインに分割される。図2に関連し
て、オペランドAおよび部分オペランドB0を含む第1
の乗算が実行される。演算A*B+Cを実行する第2の
ステージは、AとオペランドBのB1で表わされる第2
の最上位セグメントとの乗算を含んでいる。しかしなが
ら、A*B0の演算の最下位側のビットは固定されてい
るので、適切にシフトされたCの値を、最終結果の最下
位ビット範囲にも、また、加算することができる。最終
結果のこれらビット範囲は乗算A*B1の結果の影響を
直接受けないので、第2の乗算を第1の加算と同時に実
行することができる。パイプラインのアーキテクチャに
対する枠組はそれにより決定される。
を概念的に示す。再び、オペランドA,BおよびCはN
ビット(ここでN=53)より成り、そしてオペランド
BはM、すなわち、1より大きい整数であるMのセグメ
ントに分割される。図中、Mは2である。そのように実
施しながら、回路アーキテクチャは、図3の構成におい
て点線により区別したように、3つの基本セグメントで
構成されるパイプラインに分割される。図2に関連し
て、オペランドAおよび部分オペランドB0を含む第1
の乗算が実行される。演算A*B+Cを実行する第2の
ステージは、AとオペランドBのB1で表わされる第2
の最上位セグメントとの乗算を含んでいる。しかしなが
ら、A*B0の演算の最下位側のビットは固定されてい
るので、適切にシフトされたCの値を、最終結果の最下
位ビット範囲にも、また、加算することができる。最終
結果のこれらビット範囲は乗算A*B1の結果の影響を
直接受けないので、第2の乗算を第1の加算と同時に実
行することができる。パイプラインのアーキテクチャに
対する枠組はそれにより決定される。
【0023】図2の特定の例に対して、N/2の最下位
側のビットについての加算は、回路が第2の乗算を実行
しているのと同時に行われる。図2に示す概念を、一層
細分化したオペランドB、並びに、部分結果について
の、関連するパイプラインまたは同時の乗算および加算
の演算に対しても拡張できることもまた、明らかであ
る。Mの値、すなわち、オペランドBの除数が増大する
につれて、あいにくと、応答(return)は小さく
なる。たとえば、M=2に対して全加算器はA*B1の
全てのビットを収容しなければならない。この例では、
全加算器のサイズは2N−N/2である。しかし、全加
算器のサイズは、Mが増大するにつれて、式2N−N
(M−1)/Mで決まるように、ある減少率で減少す
る。
側のビットについての加算は、回路が第2の乗算を実行
しているのと同時に行われる。図2に示す概念を、一層
細分化したオペランドB、並びに、部分結果について
の、関連するパイプラインまたは同時の乗算および加算
の演算に対しても拡張できることもまた、明らかであ
る。Mの値、すなわち、オペランドBの除数が増大する
につれて、あいにくと、応答(return)は小さく
なる。たとえば、M=2に対して全加算器はA*B1の
全てのビットを収容しなければならない。この例では、
全加算器のサイズは2N−N/2である。しかし、全加
算器のサイズは、Mが増大するにつれて、式2N−N
(M−1)/Mで決まるように、ある減少率で減少す
る。
【0024】A*B0とオペランドCの適切にシフトし
たビットとの加算の最下位側ビットは、以降の乗算の直
接の結果として変化することはない点を人が評価しなけ
れば、図2に示す手順に従って部分積を使用すること
は、重要ではない。それ故、これらのビットについては
全加算器よりも複雑ではない機器において操作すること
ができる。
たビットとの加算の最下位側ビットは、以降の乗算の直
接の結果として変化することはない点を人が評価しなけ
れば、図2に示す手順に従って部分積を使用すること
は、重要ではない。それ故、これらのビットについては
全加算器よりも複雑ではない機器において操作すること
ができる。
【0025】演算の別の結果は、各部分積A*B0およ
びA*B1は積A*Bよりもビット数が少ないという認
識にもとづいて理解されよう。すなわち、A*Bの全乗
算は2Nビットの積を生じるのに対して、一方、A*B
0およびA*B1の個々の積は、およそ1.5Nビット
から成る。同一の乗算器を通じて複数サイクルを行う本
実施例の演算のアーキテクチャおよびシーケンスはウォ
ーレスツリー乗算器のサイズについて大きい効果を奏す
る。ビット数は25%減少するけれども乗算器中のCS
Aの数は概略50%減少する。このように、別の面から
も、本発明は、乗算器のサイズを大きく減少する。図3
に具体化したように、本発明は、同時に乗算および加算
を行う資源を有するウォーレスツリーを採用している。
それにより、整列したオペランドCは、A*B0の最上
位ビットを伴ったA*B1の最終加算とは別個のA*B
0の適切なビットに加算される。
びA*B1は積A*Bよりもビット数が少ないという認
識にもとづいて理解されよう。すなわち、A*Bの全乗
算は2Nビットの積を生じるのに対して、一方、A*B
0およびA*B1の個々の積は、およそ1.5Nビット
から成る。同一の乗算器を通じて複数サイクルを行う本
実施例の演算のアーキテクチャおよびシーケンスはウォ
ーレスツリー乗算器のサイズについて大きい効果を奏す
る。ビット数は25%減少するけれども乗算器中のCS
Aの数は概略50%減少する。このように、別の面から
も、本発明は、乗算器のサイズを大きく減少する。図3
に具体化したように、本発明は、同時に乗算および加算
を行う資源を有するウォーレスツリーを採用している。
それにより、整列したオペランドCは、A*B0の最上
位ビットを伴ったA*B1の最終加算とは別個のA*B
0の適切なビットに加算される。
【0026】図2に示した方法に従う乗算により生じる
利点が図3の回路アーキテクチャに与えられている。こ
のアーキテクチャは、図3に点線1および2により区分
けされた3つのセグメントに分割される。これら3つの
セグメントは、全加算器および乗算器の機能を果たす非
常に小さな回路を用いて、名目2サイクルシーケンスで
A*B+Cの数学演算を実行するパイプラインの3つの
ステージを表わす。オペランドA,BおよびCの小数部
はファイルレジスタ3により与えられる。指数は、他の
箇所で、周知の方法で操作して、整列(位置合わせ)シ
フタ/インバータ4を動作可能にする。同様に、最終的
には増分器23の符号ビット位置6の適切な符号に導く
ように別個の論理がオペランドA,BおよびCの符号を
操作するのに用いられる。引続く段落中の用語“オペラ
ンド”は一般に各オペランドA,BおよびCの小数部を
指し、その場合、小数部は、達成される操作の主要な対
象である。
利点が図3の回路アーキテクチャに与えられている。こ
のアーキテクチャは、図3に点線1および2により区分
けされた3つのセグメントに分割される。これら3つの
セグメントは、全加算器および乗算器の機能を果たす非
常に小さな回路を用いて、名目2サイクルシーケンスで
A*B+Cの数学演算を実行するパイプラインの3つの
ステージを表わす。オペランドA,BおよびCの小数部
はファイルレジスタ3により与えられる。指数は、他の
箇所で、周知の方法で操作して、整列(位置合わせ)シ
フタ/インバータ4を動作可能にする。同様に、最終的
には増分器23の符号ビット位置6の適切な符号に導く
ように別個の論理がオペランドA,BおよびCの符号を
操作するのに用いられる。引続く段落中の用語“オペラ
ンド”は一般に各オペランドA,BおよびCの小数部を
指し、その場合、小数部は、達成される操作の主要な対
象である。
【0027】オペランドAおよびCはそれぞれラッチ7
および8にラッチされ、一方、オペランドBはラッチ1
1に格納される前にマルチプレクサ9により分割され
る。そのようなラッチ処理に引続いてB0またはB1の
各値はブース(booth)エンコーダ12により変換
され、および乗算器13に送られる。乗算器13は、5
3ビットのオペランドと28ビットのオペランドとを乗
算し、一方、同時に、さらに3つのオペランドを加算す
ることの可能なウォーレスツリー構成を採用するのが好
適である。桁上げ保存加算器(CSA)で構成されたウ
ォーレスツリーは上述の米国特許4,969,118号
および4,999,802号ならびにPatterso
n等によるテキストブックで述べられている。ブースエ
ンコード処理は、Patterson等による上述のテ
キスト中で説明され、同様に、上述のIBM Tech
nical Disclosure Bulletin
でも述べられている。
および8にラッチされ、一方、オペランドBはラッチ1
1に格納される前にマルチプレクサ9により分割され
る。そのようなラッチ処理に引続いてB0またはB1の
各値はブース(booth)エンコーダ12により変換
され、および乗算器13に送られる。乗算器13は、5
3ビットのオペランドと28ビットのオペランドとを乗
算し、一方、同時に、さらに3つのオペランドを加算す
ることの可能なウォーレスツリー構成を採用するのが好
適である。桁上げ保存加算器(CSA)で構成されたウ
ォーレスツリーは上述の米国特許4,969,118号
および4,999,802号ならびにPatterso
n等によるテキストブックで述べられている。ブースエ
ンコード処理は、Patterson等による上述のテ
キスト中で説明され、同様に、上述のIBM Tech
nical Disclosure Bulletin
でも述べられている。
【0028】図3に示すように、乗算器13はオペラン
ドAを表わす入力ビット、B0またはB1を表わすエン
コードされたビット、オペランドCからのシフトして整
列された最下位ビット、および直前のサイクルからの和
および桁上げビットを受取る。かくして、図2のシーケ
ンスに従って達成された第2の乗算に関連して、図3の
乗算器13はオペランドCの適切にシフトした下位の端
部ビット、オペランドA,オペランドB1ならびにA*
B0を含む以前の乗算からの結果のうちN/2の最下位
ビットの和および桁上げ値を受取る。パイプラインの次
のステージは、ラッチ14,16,17および18によ
り、今、演算について説明したステージとは絶縁されて
いる。ラッチ18は第1の乗算、すなわちA*B0の最
下位ビットとオペランドCの適切にシフトされた最下位
ビットとの全加算の結果を格納することに注意された
い。
ドAを表わす入力ビット、B0またはB1を表わすエン
コードされたビット、オペランドCからのシフトして整
列された最下位ビット、および直前のサイクルからの和
および桁上げビットを受取る。かくして、図2のシーケ
ンスに従って達成された第2の乗算に関連して、図3の
乗算器13はオペランドCの適切にシフトした下位の端
部ビット、オペランドA,オペランドB1ならびにA*
B0を含む以前の乗算からの結果のうちN/2の最下位
ビットの和および桁上げ値を受取る。パイプラインの次
のステージは、ラッチ14,16,17および18によ
り、今、演算について説明したステージとは絶縁されて
いる。ラッチ18は第1の乗算、すなわちA*B0の最
下位ビットとオペランドCの適切にシフトされた最下位
ビットとの全加算の結果を格納することに注意された
い。
【0029】図3に示すパイプラインの第2ステージの
主要的な機能は中間結果の全加算を完了することであ
る。図2を参照するに、これは、A*B1と、オペラン
ドCのシフトして整列されたビットの影響を受けたA*
B0の最上位ビットとの全加算を意味する。境界線1お
よび2の間に位置する、パイプラインの第2ステージは
LSB増分器19,全加算器21,論理ゲート22およ
びMSB増分器23を有し、これらによって、161ビ
ットの丸め処理の施されていない結果をXOR24に供
給する。オペランドCの符号の有効ビットは、符号ビッ
ト位置6からXORゲート24に導かれる。XORゲー
ト24の出力はラッチ26に保持される。従来のやり方
とは対照的に、全加算器21は単に83ビットの出力を
与えることに注目されたい。古典的なアプローチでは1
06ビットより大きいビットを必要とする。したがっ
て、加算器21のサイズは著しく縮小される。LSB増
分器19は、161ビットの結果のうちの最下位の28
ビットを操作する。かかる結果のうちの最上位の50ビ
ットはMSB増分器23により操作される。さらに、こ
こで、LSB増分器19は加算器21に桁上げを供給
し、この加算器21自体は選択された桁上げをゲート2
2を介してMSB増幅器23に供給し、このMSB増幅
器23はLSB増分器19の入力に循環桁上げを供給す
ることにより続いてループを終了することに注意された
い。
主要的な機能は中間結果の全加算を完了することであ
る。図2を参照するに、これは、A*B1と、オペラン
ドCのシフトして整列されたビットの影響を受けたA*
B0の最上位ビットとの全加算を意味する。境界線1お
よび2の間に位置する、パイプラインの第2ステージは
LSB増分器19,全加算器21,論理ゲート22およ
びMSB増分器23を有し、これらによって、161ビ
ットの丸め処理の施されていない結果をXOR24に供
給する。オペランドCの符号の有効ビットは、符号ビッ
ト位置6からXORゲート24に導かれる。XORゲー
ト24の出力はラッチ26に保持される。従来のやり方
とは対照的に、全加算器21は単に83ビットの出力を
与えることに注目されたい。古典的なアプローチでは1
06ビットより大きいビットを必要とする。したがっ
て、加算器21のサイズは著しく縮小される。LSB増
分器19は、161ビットの結果のうちの最下位の28
ビットを操作する。かかる結果のうちの最上位の50ビ
ットはMSB増分器23により操作される。さらに、こ
こで、LSB増分器19は加算器21に桁上げを供給
し、この加算器21自体は選択された桁上げをゲート2
2を介してMSB増幅器23に供給し、このMSB増幅
器23はLSB増分器19の入力に循環桁上げを供給す
ることにより続いてループを終了することに注意された
い。
【0030】LSB増分器19を用いてN/2の最下位
ビットを処理するということは、本発明のアーキテクチ
ャによるデータ操作には、複合の161ビット出力のう
ちの最下位ビット位置への入力としての単一の桁上げビ
ットのみが係ってくるという認識の下になされている。
ビットを処理するということは、本発明のアーキテクチ
ャによるデータ操作には、複合の161ビット出力のう
ちの最下位ビット位置への入力としての単一の桁上げビ
ットのみが係ってくるという認識の下になされている。
【0031】
【表1】
【0032】例#1は10進数6,10,11,−6お
よび−11の2進数形態での1の補数の操作を示す。例
#1に現われる選択された数の1の補数の加算は、最上
位ビット位置から最下位ビット位置に循環桁上げを与え
る能力を有しなければならないことを示している。10
と−6との加算例を見られたい。
よび−11の2進数形態での1の補数の操作を示す。例
#1に現われる選択された数の1の補数の加算は、最上
位ビット位置から最下位ビット位置に循環桁上げを与え
る能力を有しなければならないことを示している。10
と−6との加算例を見られたい。
【0033】ゲート22の目的は、加算器21からMS
B増分器23へ伝わる桁上げビットを選択的に削除する
ことにある。Cオペランドがシフトされて、ウォーレス
ツリー乗算器からの部分積中の符号の位置にビットを整
列、すなわち位置合わせしたときに、桁上げビットは選
択的に削除される。桁上げビットを削除することに対す
る制約は以下の3つの例により定められる。
B増分器23へ伝わる桁上げビットを選択的に削除する
ことにある。Cオペランドがシフトされて、ウォーレス
ツリー乗算器からの部分積中の符号の位置にビットを整
列、すなわち位置合わせしたときに、桁上げビットは選
択的に削除される。桁上げビットを削除することに対す
る制約は以下の3つの例により定められる。
【0034】
【表2】
【0035】例#2として示した例では、桁上げ保存加
算器で構成されたウォーレスツリー乗算器は、3つの入
力を組合わせて、和の出力および桁上げの出力を提供
し、その結果を、ウォーレスツリー乗算器の順次のステ
ージで、Cオペランドの整列済みの値(C1 )に加算さ
れる。X記号はCオペランドから削除されるビット位置
を示す。その理由は、その位置は乗算された値の符号位
置と整列するからである。ウォーレスツリーの出力は和
および桁上げの2進ビットで構成され、それら自体は全
加算器21への2つの入力となる。全加算器21の結果
については符号ビット位置に“1”のビットを伝播させ
ることに注意されたい。本発明によれば、ゲート22
は、そのような桁上げビットがMSB増分器23に伝わ
る前に使用不能となって、そのような桁上げビットを削
除する。
算器で構成されたウォーレスツリー乗算器は、3つの入
力を組合わせて、和の出力および桁上げの出力を提供
し、その結果を、ウォーレスツリー乗算器の順次のステ
ージで、Cオペランドの整列済みの値(C1 )に加算さ
れる。X記号はCオペランドから削除されるビット位置
を示す。その理由は、その位置は乗算された値の符号位
置と整列するからである。ウォーレスツリーの出力は和
および桁上げの2進ビットで構成され、それら自体は全
加算器21への2つの入力となる。全加算器21の結果
については符号ビット位置に“1”のビットを伝播させ
ることに注意されたい。本発明によれば、ゲート22
は、そのような桁上げビットがMSB増分器23に伝わ
る前に使用不能となって、そのような桁上げビットを削
除する。
【0036】
【表3】
【0037】例#3として示す例に対しても同様の状態
が存在する。この場合、C2 のオペランド値が加算され
る。ここでもまた、桁上げビットは、この桁上げビット
が符号位置6に入る時に削除されるが、ここでは、これ
は全加算サイクルに先立つ加算の間に発生する。
が存在する。この場合、C2 のオペランド値が加算され
る。ここでもまた、桁上げビットは、この桁上げビット
が符号位置6に入る時に削除されるが、ここでは、これ
は全加算サイクルに先立つ加算の間に発生する。
【0038】
【表4】
【0039】例#4として示した例は、ゲート22が桁
上げを加算器21からMSB増分器23に伝える間、C
3 のオペランド値を加算する例を示す。この場合、全加
算に先立って演算から生じる桁上げビットは再び削除さ
れるが、全加算の間、第2の桁上げが続くときは、その
ような第2の桁上げは、次の最上位ビットに伝えられ
る。このようにして、加算器21において発生された桁
上げは、前以ってMSB増分器23に入力した時にCの
値を増分することが適切な場合にのみ伝えられる。
上げを加算器21からMSB増分器23に伝える間、C
3 のオペランド値を加算する例を示す。この場合、全加
算に先立って演算から生じる桁上げビットは再び削除さ
れるが、全加算の間、第2の桁上げが続くときは、その
ような第2の桁上げは、次の最上位ビットに伝えられ
る。このようにして、加算器21において発生された桁
上げは、前以ってMSB増分器23に入力した時にCの
値を増分することが適切な場合にのみ伝えられる。
【0040】図3に示したアーキテクチャにおいて、ラ
ッチ26に保持された161ビットの結果は比較的慣例
のやり方に従って、およびA*B+Cと定義される数学
的演算に等しい53ビットの出力として提供される前に
ブロック27において正規化され、および丸められる。
ッチ26に保持された161ビットの結果は比較的慣例
のやり方に従って、およびA*B+Cと定義される数学
的演算に等しい53ビットの出力として提供される前に
ブロック27において正規化され、および丸められる。
【0041】パイプラインのアーキテクチャがA*Bの
増分乗算を最適化するようにして同時に演算を行うこと
は、以上の記述から明らかである。分割された乗算およ
び時間インターリーブの加算により、全加算器の多数の
最下位ビットの代りに、より小型の乗算器および増分器
の使用が可能となる。最後に、本発明は、桁上げビット
の伝播が適切ではない状態のときには、本発明によらな
ければ、全加算器21から最上位ビット増分器23に伝
播してしまうであろう桁上げビットを選択的に削除する
資源を有している。
増分乗算を最適化するようにして同時に演算を行うこと
は、以上の記述から明らかである。分割された乗算およ
び時間インターリーブの加算により、全加算器の多数の
最下位ビットの代りに、より小型の乗算器および増分器
の使用が可能となる。最後に、本発明は、桁上げビット
の伝播が適切ではない状態のときには、本発明によらな
ければ、全加算器21から最上位ビット増分器23に伝
播してしまうであろう桁上げビットを選択的に削除する
資源を有している。
【0042】本発明は特定の実施例にもとづいて記述さ
れ、図示されてきたけれども、本発明が包含する装置お
よび方法は特許請求の範囲の記載に一致していると解釈
すべきである。
れ、図示されてきたけれども、本発明が包含する装置お
よび方法は特許請求の範囲の記載に一致していると解釈
すべきである。
【0043】
【発明の効果】以上、説明したように、本発明では、パ
イプラインのアーキテクチャは、全加算器への入力に先
立つステージで中間の積と最下位ビットとオペランドC
との加算を提供する。それにより、全加算器の有効部分
をより簡潔および小型の増分器回路に置換えることがで
きる。乗算演算を2つまたは3つの部分積演算に分割す
ることで必要な乗算器のサイズを比例的に縮小すること
ができる。
イプラインのアーキテクチャは、全加算器への入力に先
立つステージで中間の積と最下位ビットとオペランドC
との加算を提供する。それにより、全加算器の有効部分
をより簡潔および小型の増分器回路に置換えることがで
きる。乗算演算を2つまたは3つの部分積演算に分割す
ることで必要な乗算器のサイズを比例的に縮小すること
ができる。
【図1】古典的な浮動小数点乗算におけるオペランドの
ビット位置の構成を示す図である。
ビット位置の構成を示す図である。
【図2】本発明の実施に従ったビットのオリエンテーシ
ョンを示す図である。
ョンを示す図である。
【図3】本発明の浮動小数点乗算器に対する好適なアー
キテクチャの構成を示すブロック図である。
キテクチャの構成を示すブロック図である。
1,2 境界線 3 ファイルレジスタ 4 位置合わせシフタ/インバータ 6 符号ビット位置 7 “A”ラッチ 8 “C”ラッチ 9 マルチプレクサ 11 “B”ラッチ 12 ブースエンコーダ 13 乗算器 14 “CHIGH”ラッチ 16 和ラッチ 17 桁上げラッチ 18 LSBラッチ 19 LSB増分器 21 全加算器 22 ゲート 23 MSB増分器 24 XORゲート 26 ラッチ
フロントページの続き (72)発明者 ファレイドン オズモンド カリム アメリカ合衆国 78681 テキサス州 ラ ウンド ロック ブランチャード ドライ ブ 1606 (72)発明者 クリストファー ハンズ オルソン アメリカ合衆国 78730 テキサス州 オ ースチン ランチ クリーク ドライブ 3649
Claims (7)
- 【請求項1】 小数部がNビットで構成され、浮動小数
点数値演算(A*B+C)を実行する浮動小数点演算装
置において、 AおよびBの中のN/M(Mは1より大きい整数)の最
下位ビットを用いて第1の部分積を発生する手段と、 AおよびBの中の次のN/Mビットを用いて第2の部分
積を発生する手段と、 Cと前記第1の部分積との和を算出し、その結果から選
択されたビットを第1の増分器に提供し、当該第1の増
分器は前記数値演算のN(M−1)/Mの最下位ビット
を受取る手段と、 前記第1の部分積から選択された最上位ビットと、前記
第2の部分積から選択された最上位ビットとの和を2N
−N(M−1)/Mビット加算器において算出する手段
とを具えたことを特徴とする浮動小数点演算装置。 - 【請求項2】 前記選択された最上位ビットの和を算出
する手段は桁上げビットを第2の増分器に提供し、前記
第1の増分器から当該桁上げビットを受取ることを特徴
とする請求項1に記載の浮動小数点演算装置。 - 【請求項3】 前記Cと第1の部分積との和を算出する
手段は、前記第2の部分積を発生する手段と同時に動作
することを特徴とする請求項1に記載の浮動小数点演算
装置。 - 【請求項4】 小数部がNビットで構成され、浮動小数
点数値演算(A*B+C)を実行する浮動小数点演算方
法において、 AおよびBの中のN/M(Mは1より大きい整数)の最
下位ビットを用いて乗算器において第1の部分積を発生
するステップと、 AおよびBの中の次のN/Mビットを用いて前記乗算器
において第2の部分積を発生するステップと、 Cと前記第1の部分積との和を算出し、その結果から選
択されたビットを、前記数値演算のN(M−1)/Mの
最下位のビットを受取る第1の増分器に提供するステッ
プと、 前記第1の部分積から選択された最上位ビットと、前記
第2の部分積から選択された最上位ビットとの和を2N
−N(M−1)/Mビット加算器において算出するステ
ップとを具えたことを特徴とする浮動小数点演算方法。 - 【請求項5】 前記第1の増分器から前記加算器へ桁上
げビットを転送するステップと、前記加算器から第2の
増分器へ桁上げビットを転送するステップとを具えたこ
とを特徴とする請求項4に記載の浮動小数点演算方法。 - 【請求項6】 Cと第1の部分積との和を算出する前記
ステップと、前記第2の部分積を発生する前記ステップ
とをほぼ同時に実行することを特徴とする請求項5に記
載の浮動小数点演算方法。 - 【請求項7】 小数部A,BおよびCを用いて浮動小数
点数値演算(A*B+C)を実行し、結果として生じる
小数部を作成する浮動小数点演算装置において、 AおよびBの中の第1の最下位ビット部分を用いて第1
の部分積を発生する手段と、 AおよびBの中の最下位ビットの次のビットを用いて第
2の部分積を発生する手段と、 Cと前記第1の部分積との和を算出し、その和の一部分
を第1の増分器に提供して、前記結果として生じる小数
部の最下位ビット部分を形成する手段と、 前記第1の部分積および前記第2の部分積の和を算出し
て、結果として生じる小数部の残余の部分を形成する手
段とを具えたことを特徴とする浮動小数点演算装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US807697 | 1991-12-16 | ||
| US07/807,697 US5241493A (en) | 1991-12-16 | 1991-12-16 | Floating point arithmetic unit with size efficient pipelined multiply-add architecture |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05233228A true JPH05233228A (ja) | 1993-09-10 |
Family
ID=25196981
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4304203A Pending JPH05233228A (ja) | 1991-12-16 | 1992-11-13 | 浮動小数点演算装置およびその演算方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5241493A (ja) |
| EP (1) | EP0547835A3 (ja) |
| JP (1) | JPH05233228A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6038582A (en) * | 1996-10-16 | 2000-03-14 | Hitachi, Ltd. | Data processor and data processing system |
Families Citing this family (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6441842B1 (en) * | 1992-02-19 | 2002-08-27 | 8×8, Inc. | Video compression/decompression processing and processors |
| EP0645699A1 (en) * | 1993-09-29 | 1995-03-29 | International Business Machines Corporation | Fast multiply-add instruction sequence in a pipeline floating-point processor |
| US5418736A (en) * | 1994-03-11 | 1995-05-23 | Nexgen, Inc. | Optimized binary adders and comparators for inputs having different widths |
| US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
| US7395298B2 (en) * | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
| US5867413A (en) * | 1995-10-17 | 1999-02-02 | Hitachi Micro Systems, Inc. | Fast method of floating-point multiplication and accumulation |
| US5880983A (en) * | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
| US5790445A (en) * | 1996-04-30 | 1998-08-04 | International Business Machines Corporation | Method and system for performing a high speed floating point add operation |
| US5790444A (en) * | 1996-10-08 | 1998-08-04 | International Business Machines Corporation | Fast alignment unit for multiply-add floating point unit |
| US5928316A (en) * | 1996-11-18 | 1999-07-27 | Samsung Electronics Co., Ltd. | Fused floating-point multiply-and-accumulate unit with carry correction |
| US5796644A (en) * | 1996-11-18 | 1998-08-18 | Samsung Electronics Company, Ltd. | Floating-point multiply-and-accumulate unit with classes for alignment and normalization |
| US6205459B1 (en) * | 1996-12-18 | 2001-03-20 | Yamaha Corporation | Digital signal processor and digital signal processing system incorporating same |
| 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 |
| US6061707A (en) * | 1998-01-16 | 2000-05-09 | International Business Machines Corporation | Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system |
| US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
| US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
| US6115729A (en) * | 1998-08-20 | 2000-09-05 | Arm Limited | Floating point multiply-accumulate unit |
| US6381624B1 (en) * | 1999-04-29 | 2002-04-30 | Hewlett-Packard Company | Faster multiply/accumulator |
| US6571266B1 (en) * | 2000-02-21 | 2003-05-27 | Hewlett-Packard Development Company, L.P. | Method for acquiring FMAC rounding parameters |
| US7430578B2 (en) | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
| JP3845009B2 (ja) * | 2001-12-28 | 2006-11-15 | 富士通株式会社 | 積和演算装置、及び積和演算方法 |
| US7590677B2 (en) * | 2002-03-11 | 2009-09-15 | Texas Instruments Incorporated | Processor with summation instruction using overflow counter |
| US7519647B2 (en) | 2005-02-09 | 2009-04-14 | International Business Machines Corporation | System and method for providing a decimal multiply algorithm using a double adder |
| US7739324B1 (en) | 2006-03-22 | 2010-06-15 | Cadence Design Systems, Inc. | Timing driven synthesis of sum-of-product functional blocks |
| US20080071852A1 (en) * | 2006-09-14 | 2008-03-20 | International Business Machines Corporation | Method to perform a subtraction of two operands in a binary arithmetic unit plus arithmetic unit to perform such a method |
| US20090112963A1 (en) * | 2007-10-29 | 2009-04-30 | International Business Machines Corporation | Method to perform a subtraction of two operands in a binary arithmetic unit plus arithmetic unit to perform such a method |
| US20100125621A1 (en) * | 2008-11-20 | 2010-05-20 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
| US8495121B2 (en) * | 2008-11-20 | 2013-07-23 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
| GB201508635D0 (en) * | 2015-05-20 | 2015-07-01 | Ibm | Multiply-and-accumulate unit in carry-save adder format and application in a feedback loop equalizer |
| US9952829B2 (en) * | 2016-02-01 | 2018-04-24 | International Business Machines Corporation | Binary fused multiply-add floating-point calculations |
| US11163531B2 (en) * | 2018-07-28 | 2021-11-02 | Dsp Group Ltd. | Multiply and accumulate (MAC) unit and a method of adding numbers |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS60200338A (ja) * | 1984-03-23 | 1985-10-09 | Yokogawa Medical Syst Ltd | 浮動小数点乗算装置の仮数部乗算装置 |
| JPS6284335A (ja) * | 1985-10-09 | 1987-04-17 | Hitachi Ltd | 乗算回路 |
| JPH02196328A (ja) * | 1989-01-13 | 1990-08-02 | Internatl Business Mach Corp <Ibm> | 浮動小数点演算装置 |
| JPH02205923A (ja) * | 1989-02-03 | 1990-08-15 | Nec Corp | 演算プロセッサ |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4190894A (en) * | 1978-03-10 | 1980-02-26 | Digital Equipment Corporation | High speed parallel multiplication apparatus with single-step summand reduction |
| US4228520A (en) * | 1979-05-04 | 1980-10-14 | International Business Machines Corporation | High speed multiplier using carry-save/propagate pipeline with sparse carries |
| EP0086904B1 (de) * | 1982-02-18 | 1985-11-21 | Deutsche ITT Industries GmbH | Digitale Parallel-Rechenschaltung für positive und negative Binärzahlen |
| US4910701A (en) * | 1987-09-24 | 1990-03-20 | Advanced Micro Devices | Split array binary multiplication |
| US4996661A (en) * | 1988-10-05 | 1991-02-26 | United Technologies Corporation | Single chip complex floating point numeric processor |
| US4999802A (en) * | 1989-01-13 | 1991-03-12 | International Business Machines Corporation | Floating point arithmetic two cycle data flow |
-
1991
- 1991-12-16 US US07/807,697 patent/US5241493A/en not_active Expired - Fee Related
-
1992
- 1992-11-13 JP JP4304203A patent/JPH05233228A/ja active Pending
- 1992-12-09 EP EP19920311237 patent/EP0547835A3/en not_active Withdrawn
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS60200338A (ja) * | 1984-03-23 | 1985-10-09 | Yokogawa Medical Syst Ltd | 浮動小数点乗算装置の仮数部乗算装置 |
| JPS6284335A (ja) * | 1985-10-09 | 1987-04-17 | Hitachi Ltd | 乗算回路 |
| JPH02196328A (ja) * | 1989-01-13 | 1990-08-02 | Internatl Business Mach Corp <Ibm> | 浮動小数点演算装置 |
| JPH02205923A (ja) * | 1989-02-03 | 1990-08-15 | Nec Corp | 演算プロセッサ |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6038582A (en) * | 1996-10-16 | 2000-03-14 | Hitachi, Ltd. | Data processor and data processing system |
| US6243732B1 (en) | 1996-10-16 | 2001-06-05 | Hitachi, Ltd. | Data processor and data processing system |
| US6327605B2 (en) | 1996-10-16 | 2001-12-04 | Hitachi, Ltd. | Data processor and data processing system |
Also Published As
| Publication number | Publication date |
|---|---|
| US5241493A (en) | 1993-08-31 |
| EP0547835A3 (en) | 1993-08-18 |
| EP0547835A2 (en) | 1993-06-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5241493A (en) | Floating point arithmetic unit with size efficient pipelined multiply-add architecture | |
| US5790446A (en) | Floating point multiplier with reduced critical paths using delay matching techniques | |
| EP0377837B1 (en) | Floating point unit having simultaneous multiply and add | |
| US6813626B1 (en) | Method and apparatus for performing fused instructions by determining exponent differences | |
| US3814924A (en) | Pipeline binary multiplier | |
| US4866656A (en) | High-speed binary and decimal arithmetic logic unit | |
| US5659495A (en) | Numeric processor including a multiply-add circuit for computing a succession of product sums using redundant values without conversion to nonredundant format | |
| JPH04227531A (ja) | パイプライン浮動小数点プロセッサ | |
| JPH03208170A (ja) | 数学関数の近似を計算する数値システム及び計算法 | |
| US5751619A (en) | Recurrent adrithmetical computation using carry-save arithmetic | |
| US4320464A (en) | Binary divider with carry-save adders | |
| KR100308726B1 (ko) | 고속 산술 장치에서 올림수 예견가산기 스테이지의 수를 감소시키는 장치 및 방법 | |
| US5574672A (en) | Combination multiplier/shifter | |
| US5734599A (en) | Performing a population count using multiplication | |
| US5721697A (en) | Performing tree additions via multiplication | |
| US7958180B2 (en) | Multiplier engine | |
| US20040010536A1 (en) | Apparatus for multiplication of data in two's complement and unsigned magnitude formats | |
| US4677583A (en) | Apparatus for decimal multiplication | |
| US5867413A (en) | Fast method of floating-point multiplication and accumulation | |
| US7827226B2 (en) | Hybrid arithmetic logic unit | |
| US6282557B1 (en) | Low latency fused multiply-adder | |
| US6421699B1 (en) | Method and system for a speedup of a bit multiplier | |
| EP0534760A2 (en) | High speed multiplier device | |
| US5377134A (en) | Leading constant eliminator for extended precision in pipelined division | |
| US3462589A (en) | Parallel digital arithmetic unit utilizing a signed-digit format |