JP2000010959A - Processor and method for multiplying and accumulating operation - Google Patents

Processor and method for multiplying and accumulating operation

Info

Publication number
JP2000010959A
JP2000010959A JP11148664A JP14866499A JP2000010959A JP 2000010959 A JP2000010959 A JP 2000010959A JP 11148664 A JP11148664 A JP 11148664A JP 14866499 A JP14866499 A JP 14866499A JP 2000010959 A JP2000010959 A JP 2000010959A
Authority
JP
Japan
Prior art keywords
rounding
data processing
result
data
multiply
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
JP11148664A
Other languages
Japanese (ja)
Other versions
JP4166367B2 (en
Inventor
Neal Hinds Christopher
ニール ヒンズ クリストファー
Vivien Jagger David
ビビアン ジャガー デビッド
David Terrence Matheny
ターレンス マセニイ デビッド
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/084,304 external-priority patent/US6282634B1/en
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of JP2000010959A publication Critical patent/JP2000010959A/en
Application granted granted Critical
Publication of JP4166367B2 publication Critical patent/JP4166367B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime 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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To perform fast multiplying and accumulating matching the IEEE 754-1985 standards by determining a rounded value needed to generate a final multiplying and accumulating result equivalent to individual multiplication instructions in which rounding is embedded and individual addition instructions in which following rounding is embedded. SOLUTION: The processor is equipped with a multiplier 120 which generates an unrounded multiplication result by multiplying two values by each other and further generates 1st data needed to determine rounding. Similarly, the processor is equipped with an adder which generates an unrounded multiplying and accumulating operation result by adding a specific value to the unrounded result and further generates 2nd data needed to determine rounding. The decision logic 150 uses the 1st and 2nd data to determine a rounding value needed to generate the final multiplying and accumulating operation result equivalent to the execution of individual multiplication instructions wherein rounding is incorporated and individual addition instructions wherein following rounding is incorporated.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は掛け算累積演算実行
用データ処理装置並びに方法に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data processing apparatus and method for performing a multiply-accumulate operation.

【0002】[0002]

【従来の技術】データ処理装置では種々の浮動小数点演
算をデータ上で実行する事を要求されるのが一般的であ
る。その様な浮動小数点計算が種々のデータ処理装置で
一定の方法で取り扱えることを保証するために、1つの
標準が1985年、“バイナリ浮動小数点算術に関する
IEEE標準”、ANSI/IEEE標準754−19
85、電気電子技術者協会(IEEE)社、ニューヨー
ク、10017(これ以降IEEE754−1985標
準とよぶ)に制定されている。この標準は中でも掛け算
演算が丸め演算で終了すべきこと、また同様に加算また
は累積演算も丸め演算で終了すべきことを定めている。
このIEEE754−1985標準は更に、IEEE7
54−1985標準に適合すると考えられる丸め演算の
回数の定義も提供している。
2. Description of the Related Art Generally, a data processing device is required to execute various floating point operations on data. To ensure that such floating point calculations can be handled in a consistent manner on various data processing devices, one standard is 1985, "IEEE Standard for Binary Floating Point Arithmetic", ANSI / IEEE Standard 754-19.
85, established by the Institute of Electrical and Electronics Engineers (IEEE), New York, 10017 (hereinafter referred to as the IEEE 754-1985 standard). The standard stipulates, among other things, that a multiplication operation should end with a rounding operation, and that an addition or accumulation operation should also end with a rounding operation.
This IEEE 754-1985 standard further defines the IEEE 7
It also provides a definition of the number of rounding operations that are considered to conform to the 54-1985 standard.

【0003】汎用目的プロセッサは浮動小数点計算性能
に合致していないことが知られており、従ってその様な
計算を取り扱うために特殊浮動小数点ユニット(FP
U)が開発されている。
[0003] General purpose processors are known to be incompatible with floating point computational performance, and therefore require special floating point units (FPs) to handle such computations.
U) has been developed.

【0004】一般的に要求される特別な浮動小数点計算
の1つは掛け算・累積演算であり、ここでは2つの数が
互いに掛け算され、その積が第三数に加算される。掛け
算・累積演算はIEEE754−1985標準では特に
議論されておらず、掛け算と累積演算とが個別に議論さ
れている。もちろん掛け算・累積演算は掛け算命令に続
いて別の累積命令を実行することにより実現できるが、
その様なやり方は相対的に遅くなる。
[0004] One of the special floating point calculations generally required is a multiply-accumulate operation, in which two numbers are multiplied together and the product is added to a third number. The multiplication / accumulation operation is not specifically discussed in the IEEE 754-1985 standard, and the multiplication and the accumulation operation are separately discussed. Of course, the multiplication / accumulation operation can be realized by executing another accumulation instruction following the multiplication instruction.
Such an approach is relatively slow.

【0005】従って、高速に掛け算・累積演算を実行す
るように特別に構成されたFPUを開発することに大き
な関心が存在する。この様なFPUの1例がUS−A−
4,969,118に開示されており、これはIBMで
開発された掛け算・累積演算を実行するためのFPUを
説明している。IBM技術によれば、部分掛け算器が2
つの数の部分積を生成し、この部分積が加算回路に送ら
れて第三数と加算される。従って掛け算・累積演算は
‘融合’されており、掛け算の結果は累積演算の前に別
個に決定されることは無い。このやり方は掛け算・累積
演算の速度を飛躍的に向上させる。
[0005] Accordingly, there is a great interest in developing FPUs specially configured to perform multiply-accumulate operations at high speed. One example of such an FPU is US-A-
No. 4,969,118, which describes an FPU for performing multiply-accumulate operations developed by IBM. According to the IBM technology, the partial multiplier is 2
A partial product of the two numbers is generated, and the partial product is sent to an adding circuit and added to the third number. Therefore, the multiplication / accumulation operation is “fused”, and the result of the multiplication is not determined separately before the accumulation operation. This method dramatically increases the speed of the multiplication / accumulation operation.

【0006】更に掛け算は掛け算からの全てのビット
(n*nビットの掛け算では2nビット)を含む内部精
度で実行され、続いて累積は掛け算ビットの全てを用い
て実行される。これは掛け算の結果に対してそれが後続
の累積で使用される前に丸めが行われていないので、特
に正確な結果を与える。しかしながらこの技術はIEE
E754−1985標準に適合していない、それはこの
標準は掛け算結果に対して丸め演算が実行されるべき事
を定めているからである。
Further, the multiplication is performed with an internal precision that includes all the bits from the multiplication (2n bits for n * n bit multiplication), and then the accumulation is performed using all of the multiplication bits. This gives a particularly accurate result, since the result of the multiplication has not been rounded before it is used in subsequent accumulations. However, this technology is IEEE
It does not conform to the E754-1985 standard, since this standard specifies that rounding operations should be performed on multiplication results.

【0007】掛け算・累積演算速度を向上させそして/
または回路の複雑さを軽減するために、特に設計された
FPUの別の例がUS−A−5,241,493, U
S−A−5,375,078, US−A−5,53
0,663 及び EP−A−0,645,699,
US−A−4,866,652 及び US−A−4,
841,467に記載されている。これらのドキュメン
トの何れも丸めに関して触れておらず、特に何れもIE
EE754−1985標準に適合した結果を算出するこ
とに関心を払っていない。
To increase the speed of multiplication / accumulation operation and /
Another example of a FPU specifically designed to reduce circuit complexity is US Pat. No. 5,241,493, U.S. Pat.
SA-5,375,078, US-A-5,53
0,663 and EP-A-0,645,699,
US-A-4,866,652 and US-A-4,
841,467. None of these documents mention rounding, especially none of the IEs
There is no interest in calculating results that meet the EE754-1985 standard.

【0008】MIPS R10000製品の中で使用さ
れている、これに代わるやり方は掛け算器と加算器を別
の論理ユニットとして保持するものである。掛け算・累
積演算を実行する際、丸めが掛け算器ユニットの出力に
施され、続いて加算器論理ユニットに入力され、その加
算器論理ユニットの結果もまた丸められる。これはIE
EE754−1985に適合する結果を掛け算・累積演
算に対して得られるが、掛け算・累積演算を実行するた
めに特別に構成された特殊論理ユニットから得られる速
度的利益は確保できない。
[0008] An alternative approach used in the MIPS R10000 product is to maintain the multiplier and adder as separate logic units. In performing the multiply-accumulate operation, rounding is applied to the output of the multiplier unit and subsequently to the adder logic unit, the result of which is also rounded. This is IE
Although a result conforming to EE 754-1985 can be obtained for a multiply / accumulate operation, the speed advantage obtained from a special logic unit specially configured to execute the multiply / accumulate operation cannot be secured.

【0009】[0009]

【発明が解決しようとする課題】本発明の目的は、単一
命令に応答して掛け算・累積演算を効率的に実行しなが
ら、丸めを組み込まれた個別の掛け算命令を実行し、続
いて丸めを組み込まれた加算命令を実行するのと等価な
結果が得られる、データ処理装置並びに方法を提供する
ことである。
SUMMARY OF THE INVENTION It is an object of the present invention to execute individual multiply instructions incorporating rounding while efficiently performing multiply and accumulate operations in response to a single instruction, followed by rounding. To provide a data processing apparatus and method capable of obtaining a result equivalent to executing an addition instruction in which is incorporated.

【0010】[0010]

【課題を解決するための手段】従って本発明は、掛け算
・累積演算A+(B*C)を、前記掛け算・累積演算を
同定する単一命令に応答して実行するためのデータ処理
装置を提供し:値BとCを掛け算して丸められていない
掛け算結果を生成し、更に丸めを決定するために必要な
第一データを生成するように構成されている1つの掛け
算器と;丸められていない掛け算結果を値Aに加算して
丸められていない掛け算累積結果を生成し、更に丸めを
決定するために必要な第二データを生成するように構成
されている1つの加算器と;第一及び第二データを用い
て、丸めを組み込まれた個別の掛け算命令と、それに続
く丸めを組み込まれた個別の加算命令を実行するのと同
等の最終掛け算・累積演算結果を生成するために必要な
1つまたは複数の丸め値を決定するための決定論理と;
そして最終掛け算・累積演算結果を生成するために1つ
または複数の丸め値を供給するための丸め論理とを含
む。
Accordingly, the present invention provides a data processing apparatus for executing a multiply / accumulate operation A + (B * C) in response to a single instruction for identifying the multiply / accumulate operation. A single multiplier configured to multiply the values B and C to produce a non-rounded multiplication result, and further to generate the first data required to determine the rounding; An adder configured to add the unmultiplied result to the value A to produce an unrounded multiplied accumulated result, and further to generate second data required to determine rounding; And using the second data to produce a final multiply-accumulate result equivalent to executing a separate multiply instruction with rounding followed by a separate add instruction with rounding. One or more And determination logic for determining the fit value;
And rounding logic for providing one or more rounded values to generate a final multiply / accumulate operation result.

【0011】本発明によれば、値BとCを掛け算するこ
とにより丸められていない掛け算結果を生成し、更に丸
めを決定するために必要な第一データを生成するための
掛け算器が具備されている。同様に値Aを丸められてい
ない結果に加算して丸められていない掛け算・累積演算
結果を生成し、更に丸めを決定するために必要な第二デ
ータを生成するための加算器が具備されている。次に、
決定論理は第一及び第二データを用いて、丸めを組み込
まれた個別の掛け算命令と、それに続く丸めを組み込ま
れた個別の加算命令を実行したのと等価な最終掛け算・
累積演算結果を生成するために必要な1つまたは複数の
丸め値を決定するように構成されている。
According to the present invention, there is provided a multiplier for generating an unrounded multiplication result by multiplying the values B and C, and for generating first data necessary for determining the rounding. ing. Similarly, an adder is provided for adding the value A to the non-rounded result to generate an unrounded multiplication / accumulation result, and for generating second data necessary for determining rounding. I have. next,
The decision logic uses the first and second data to perform a final multiplication instruction equivalent to executing a separate multiply instruction with rounding followed by a separate add instruction with rounding.
It is configured to determine one or more rounding values required to generate the cumulative operation result.

【0012】このやり方により、IEEE754−19
85標準に適合した結果を生成し、掛け算・累積命令を
高速で実行できる専用掛け算・累積論理を提供すること
が出来る。
In this manner, IEEE 754-19
It is possible to provide a dedicated multiplication / accumulation logic capable of generating a result conforming to the 85 standard and executing a multiplication / accumulation instruction at high speed.

【0013】1つの実施例では、決定論理は加算演算中
の適切なステップで供給される複数の丸め値を決定する
ように構成できる。しかしながら提出された実施例で
は、決定論理は丸め論理によって丸められていない掛け
算・累積結果に供給され、最終掛け算・累積結果を生成
するための単一丸め値を生成するように構成されてい
る。このやり方は掛け算・累積演算の実行速度を更に改
善する。
In one embodiment, the decision logic can be configured to determine a plurality of round values provided at appropriate steps during the addition operation. However, in the preferred embodiment, the decision logic is applied to the unrounded multiply-accumulate result by the rounding logic and is configured to generate a single rounded value to produce the final multiply-accumulate result. This method further improves the execution speed of the multiplication / accumulation operation.

【0014】好ましい実施例に於いて、掛け算器で生成
された第一データはガード及び付着ビットを含み、決定
論理は第一データから掛け算器丸め値を決定するための
第一論理を含む。更に第一データは好適に、1つまたは
複数の掛け算結果の最下位ビットを含み、これはまた掛
け算器丸め値を生成する中で使用される。この様な提出
された実施例に於いて、決定論理は更に1つまたは複数
の丸め値を、掛け算器丸め値と第二データとから決定す
るための第二論理を含む。
In a preferred embodiment, the first data generated by the multiplier includes guard and sticky bits, and the decision logic includes first logic for determining a multiplier round value from the first data. Further, the first data preferably includes the least significant bit of one or more multiplication results, which is also used in generating the multiplier rounding value. In such a preferred embodiment, the decision logic further includes second logic for determining one or more rounded values from the multiplier rounded value and the second data.

【0015】好ましい実施例に於いて、加算器は加算を
実行する前に値Aと掛け算結果の小さい方を整列させる
ための整列シフト器(alignment shift
er)と、また整列シフト器でシフトアウトされたビッ
トが全て1であるかまたは全てゼロであるかを検出する
ための検出ユニットを含む。この実施例に於いて、加算
器で生成された第二データは、好適にガード及び丸めビ
ットと検出ユニットの出力とを含む。
In a preferred embodiment, the adder aligns the value A with the smaller of the multiplication results before performing the addition.
er) and a detection unit for detecting whether the bits shifted out by the alignment shifter are all ones or all zeros. In this embodiment, the second data generated by the adder preferably includes guard and round bits and the output of the detection unit.

【0016】掛け算器を多数の方法で構成できることは
明らかであろう。しかしながら、好ましい実施例に於い
て、掛け算器は桁上げ保存形式で部分結果を生成するた
めの掛け算ユニットと、掛け算結果を生成するための積
加算器とを含む。更に掛け算器は好適に掛け算ユニット
で生成された部分積の一群の最下位ビットを互いに加算
するための付着加算器と、付着加算器の出力からガード
及び付着ビットを生成するためのガード及び付着ビット
生成器とを含む。
It will be apparent that the multiplier can be configured in a number of ways. However, in the preferred embodiment, the multiplier includes a multiply unit for producing a partial result in carry-save form and a product adder for producing the multiplied result. Further, the multiplier is preferably a glue adder for adding together a group of least significant bits of the partial product generated by the multiply unit, and a guard and glue bit for generating a guard and glue bit from the output of the glue adder. And a generator.

【0017】理解されるであろうが、多数のやり方で最
終掛け算・累積結果を1つまたは複数の丸め値を用いて
生成することが可能である。好ましい実施例に於いて、
値A,B及びCは仮数と指数とで構成され、これらは別
々に取り扱われる。従って提出された実施例に於いて、
丸められていない掛け算・累積結果は仮数と指数とを含
み、データ処理装置は更に仮数をインクリメントするた
めの更新器(incrementer)を含み、そして
丸め論理は仮数またはインクリメントされた仮数のいず
れかを最終掛け算・累積結果として、決定論理で生成さ
れた前記1つまたは複数の丸め値の1つに依存して出力
するためのマルチプレクサを含む。この様な提出された
実施例に於いて、1つの丸め値は好適にマルチプレクサ
に入力される最終インクリメント信号を含み、これは仮
数またはインクリメントされた仮数のどちらが最終仮数
として出力されるべきかを示す。
As will be appreciated, the final multiply-accumulate result can be generated using one or more rounding values in a number of ways. In a preferred embodiment,
The values A, B and C consist of a mantissa and an exponent, which are treated separately. Therefore, in the submitted example,
The unrounded multiply-accumulate result includes the mantissa and the exponent, the data processing device further includes an incrementer for incrementing the mantissa, and the rounding logic determines whether the mantissa or the incremented mantissa is the final. A multiplexer for outputting as a result of the multiplication / accumulation depending on one of the one or more rounded values generated by the decision logic. In such a preferred embodiment, one rounded value preferably includes a final increment signal input to the multiplexer, which indicates whether the mantissa or the incremented mantissa is to be output as the final mantissa. .

【0018】理解されるように、仮数を更新する際にオ
ーバーフロー条件が生じる可能性がある。これを説明す
るために、丸め論理は好適に更に仮数をインクリメント
した結果がオーバーフローする場合に指数をインクリメ
ントするための指数更新論理を含み、インクリメントさ
れた仮数が最終仮数として選択される。
As will be appreciated, an overflow condition can occur when updating the mantissa. To illustrate this, the rounding logic preferably includes exponent updating logic for incrementing the exponent if the result of further incrementing the mantissa overflows, and the incremented mantissa is selected as the final mantissa.

【0019】好ましい実施例に於いて、決定論理は第一
変換器を含み、これは加算器で生成された第二データを
受信し、丸められていない掛け算・累積結果に対して加
算器が行った右シフト正規化を補償する。更に、決定論
理は好適に第一データから掛け算器丸め値を決定するよ
うに構成され、また決定論理は好適に更に掛け算器丸め
値を第一変換器回路の出力に供給するための第二変換器
を含む。この様な実施例に於いて、決定論理は好適に更
に第三変換器を含み、これは第二変換器からの信号出力
に予め定められた丸め公式を適用し、1つまたは複数の
丸め値を生成する。
In a preferred embodiment, the decision logic includes a first converter, which receives the second data generated by the adder and performs the operation on the unrounded multiply-accumulate result. To compensate for the right shift normalization. Further, the decision logic is preferably configured to determine a multiplier round value from the first data, and the decision logic preferably further provides a multiplier round value to an output of the first converter circuit. Including vessel. In such an embodiment, the decision logic preferably further comprises a third converter, which applies a predetermined rounding formula to the signal output from the second converter, and applies one or more rounding values. Generate

【0020】第二の特徴に鑑み、本発明は掛け算・累積
演算A+(B*C)を前記掛け算・累積演算を同定する
単一命令に応答して実行するための方法を提供してお
り、これは:値BとCとを掛け算して丸められていない
掛け算結果を生成し、そして丸め決定に必要な第一デー
タを生成し;丸められていない掛け算結果を値Aに加算
して丸められていない掛け算・累積結果を生成し、そし
て丸め決定に必要な第二データを生成し;第一及び第二
データを用いて、丸めを組み込まれた個別の掛け算命令
を実行し、続いて丸めを組み込まれた個別の加算命令を
実行したのと等価な最終掛け算・累積結果を生成するた
めに必要な1つまたは複数の丸め値を決定し;そして1
つまたは複数の丸め値を適用して最終掛け算・累積結果
を生成する、以上で構成されている。
In view of the second aspect, the present invention provides a method for performing a multiply / accumulate operation A + (B * C) in response to a single instruction identifying the multiply / accumulate operation, This involves: multiplying the values B and C to generate an unrounded multiplication result, and generating the first data required for the rounding decision; adding the unrounded multiplication result to the value A and rounding. Generating a multiplication-accumulation result that is not rounded and generating second data required for the rounding decision; using the first and second data to execute a separate multiplication instruction incorporating rounding, followed by rounding. Determining one or more rounding values required to produce a final multiply-accumulate result equivalent to executing the embedded individual add instruction; and
Apply one or more rounding values to generate the final multiplication / accumulation result.

【0021】[0021]

【発明の実施の形態】本発明を添付図に図示された提出
された実施例を単なる例としてのみ参照しながら、更に
説明する。
BRIEF DESCRIPTION OF THE DRAWINGS The invention will be further described, by way of example only, with reference to the submitted embodiment illustrated in the accompanying drawings, in which: FIG.

【0022】図1はデータ処理システム22を図示し、
主プロセッサ24,浮動小数点ユニット(FPU)コプ
ロセッサ26、キャシュメモリ28、主メモリ30およ
び入出力システム32を含む。主プロセッサ24、キャ
シュメモリ28、主メモリ30及び入出力システム32
は主バス34を経由してリンクされている。コプロセッ
サバス36は主プロセッサ24を浮動小数点ユニットコ
プロセッサ26にリンクしている。
FIG. 1 illustrates a data processing system 22;
It includes a main processor 24, a floating point unit (FPU) coprocessor 26, a cache memory 28, a main memory 30, and an input / output system 32. Main processor 24, cache memory 28, main memory 30, and input / output system 32
Are linked via the main bus 34. Coprocessor bus 36 links main processor 24 to floating point unit coprocessor 26.

【0023】動作に際して、主プロセッサ24(またA
RMコアと参照される)は、キャシュメモリ28、主メ
モリ30及び入出力システム32との相互作用を含む一
般的型式のデータ処理操作を制御するデータ処理命令の
ストリームを実行する。データ処理命令のストリームの
中にはコプロセッサ命令が組み込まれている。主プロセ
ッサ24はこれらのコプロセッサ命令が、付属のコプロ
セッサで実行されるべきものとして認識する。従って主
プロセッサ24はこれらのコプロセッサ命令をコプロセ
ッサバス36上に発行し、そこからこれらは付属のコプ
ロセッサで受信される。この場合FPUコプロセッサ2
6は全ての受信されたコプロセッサ命令を受容し、検出
されたものが意図するように実行する。この検出はコプ
ロセッサ命令内のコプロセッサ番号フィールドを介して
行われる。
In operation, the main processor 24 (also A
RM core) executes a stream of data processing instructions that control general types of data processing operations, including interaction with cache memory 28, main memory 30, and input / output system 32. Coprocessor instructions are embedded in the stream of data processing instructions. Main processor 24 recognizes these coprocessor instructions as being to be executed on an attached coprocessor. Accordingly, main processor 24 issues these coprocessor instructions on coprocessor bus 36, from which they are received by the associated coprocessor. In this case, FPU coprocessor 2
6 accepts all received coprocessor instructions and executes as detected what is intended. This detection is performed via a coprocessor number field in the coprocessor instruction.

【0024】図2は図1のFPUコプロセッサ26を更
に詳細に図示するブロック図である。図2に図示される
ように、FPU26は浮動小数点演算を実行するための
データ経路構成要素ブロック160、コプロセッサバス
36を経由して主プロセッサ24とインタフェースする
ためのコプロセッサインタフェース180、及び特に浮
動小数点演算用の入力値と浮動小数点演算の結果を格納
するためのレジスタファイル170とを有する。
FIG. 2 is a block diagram illustrating the FPU coprocessor 26 of FIG. 1 in more detail. As shown in FIG. 2, FPU 26 includes a datapath component block 160 for performing floating point operations, a coprocessor interface 180 for interfacing with main processor 24 via coprocessor bus 36, and, in particular, a floating point It has a register file 170 for storing input values for the decimal point operation and results of the floating point operation.

【0025】浮動小数点命令が主プロセッサからFPU
26へ通される際に、これはコプロセッサインタフェー
ス180で受信され、これは浮動小数点命令がFPU2
6で処理できるか否かを判定する。従って何らかの理由
でデータ経路構成要素ブロック160が新たな命令が受
信された時点で、その新たな命令の実行を開始できない
場合、従ってコプロセッサインタフェース180は主プ
ロセッサに通知する。しかしながら、命令を実行できる
と判断すると、コプロセッサインタフェース180は制
御信号を生成し、データ経路構成要素ブロック160に
送って浮動小数点演算を開始させる。
Floating point instructions are sent from the main processor to the FPU
26, this is received at the coprocessor interface 180, which indicates that the floating point
Then, it is determined whether or not processing can be performed in step 6. Thus, if for some reason the datapath component block 160 cannot start executing the new instruction when the new instruction is received, then the coprocessor interface 180 notifies the main processor. However, if the coprocessor interface 180 determines that the instruction can be executed, it generates a control signal and sends it to the datapath component block 160 to initiate a floating point operation.

【0026】浮動小数点演算を実行する前に、この演算
用の入力値はデータバスを介してレジスタファイル17
0に通される。次にコプロセッサインタフェース180
は制御信号をレジスタファイル170に送信して、この
入力値を適切なソースレジスタに中に格納させる。
Before executing the floating-point operation, the input value for this operation is transferred to the register file 17 via the data bus.
Passed through 0. Next, the coprocessor interface 180
Sends a control signal to the register file 170 to store this input value in the appropriate source register.

【0027】浮動小数点演算が開始されるとき、ソース
レジスタの内容はレジスタファイル170からデータ経
路構成要素ブロック160へ出力される。更に、浮動小
数点演算が完了すると、その結果はデータ経路構成要素
ブロックから、適切な行き先レジスタに格納されるよう
にレジスタファイル170に送られる。
When the floating point operation is started, the contents of the source register are output from register file 170 to datapath component block 160. Further, when the floating point operation is completed, the result is sent from the data path component block to the register file 170 for storage in the appropriate destination register.

【0028】図3は図2のデータ経路構成要素ブロック
160を更に詳細に図示するブロック図である。データ
経路構成要素ブロック160はデータ経路論理100と
制御回路110とで構成されている。データ経路論理1
00は値BとCとを掛け算して掛け算結果を生成するた
めの掛け算器120と値Aを掛け算結果に加算するため
の加算器130とを有する。更に丸め論理140が、加
算器130の出力である掛け算累積結果の値に丸めを施
すために具備されている。
FIG. 3 is a block diagram illustrating data path component block 160 of FIG. 2 in more detail. The data path component block 160 includes the data path logic 100 and the control circuit 110. Data path logic 1
00 has a multiplier 120 for multiplying the values B and C to generate a multiplication result and an adder 130 for adding the value A to the multiplication result. Further, rounding logic 140 is provided for rounding the value of the multiply-accumulate result which is the output of adder 130.

【0029】制御回路110はFPU26で実行される
べき命令(例えば加算、掛け算、または掛け算累積)を
識別するためのデータと演算用の入力(例えば、A,B
及びC)を受信し、種々の制御信号をデータ経路論理に
送ることによりデータ経路論理100内の種々の論理構
成要素の動作を制御する。更に、データ経路内の種々の
点に於いてデータ経路論理は信号を制御回路に供給する
ように構成されており、それらは制御回路で適切な制御
信号を生成するように使用される。これらの信号は図4
から図9を参照して後ほど更に詳細に説明する。
The control circuit 110 includes data for identifying an instruction (for example, addition, multiplication, or multiplication / accumulation) to be executed by the FPU 26 and inputs for operation (for example, A and B).
And C) to control the operation of various logic components within datapath logic 100 by sending various control signals to datapath logic. Further, at various points in the data path, the data path logic is configured to provide signals to the control circuit, which are used to generate the appropriate control signals at the control circuit. These signals are shown in FIG.
This will be described in more detail later with reference to FIG.

【0030】簡明にするために丸めに関連するデータ経
路と制御論理との間の信号伝送のみが図2及び図3に図
示されている。従って掛け算器120は丸め決定のため
に必要な第一データ信号を、制御回路110内の決定論
理150に送り、また同様に加算器130は丸め決定に
必要な第二データ信号を決定論理150に提供する。続
いて決定論理150はこれらのデータ信号を使用して丸
め値を生成し、それをデータ経路論理100内の丸め論
理140に出力する。続いて丸め論理140は丸め値を
用いて最終掛け算累積結果を生成する。
For simplicity, only the signaling between the data path and control logic involved in rounding is illustrated in FIGS. Thus, multiplier 120 sends the first data signal needed for the rounding decision to decision logic 150 in control circuit 110, and similarly, adder 130 sends the second data signal needed for the rounding decision to decision logic 150. provide. The decision logic 150 then uses these data signals to generate a rounding value and outputs it to the rounding logic 140 in the data path logic 100. Subsequently, the rounding logic 140 uses the rounded value to generate a final multiply-accumulate result.

【0031】後ほど更に詳しく説明するように、決定論
理は丸め値が丸め論理140から供給された際に、掛け
算・累積結果が丸めを組み込まれた個別の掛け算命令
と、それに続く丸めを組み込まれた個別の加算命令を実
行して得られた結果と等価になることを保証するように
丸め値を生成するように構成されている。
As will be described in more detail below, the decision logic incorporates a separate multiply instruction whose rounding / accumulation result incorporates rounding, followed by rounding when the rounded value is provided by rounding logic 140. It is configured to generate a rounded value so as to guarantee that the result obtained by executing the individual addition instruction is equivalent to the result.

【0032】本発明の好ましい実施例に基づけば、FP
U26は浮動小数点掛け算・累積連鎖(FMAC: floating
point multiply-accumulate chained)演算を実行する
ように構成されており、ここで掛け算・累積演算は掛け
算と累積との間での効果的な丸めを具備して実行され
る。提出された実施例に於いて、実行段E1からE4を
有する4段パイプラインが採用されている。提出された
実施例に於いて、掛け算・累積演算に際して各々の段で
実行される演算は以下の通りである: E1: ・乗数(Mant(C))と被乗数(Mant(B))の仮数を掛け算
し、冗長形式で結果を生成する。 ・乗数と被乗数の指数を合計し積の指数を形成する。 ・これを被加算数の指数と比較し、被加算数または積の
大きな方のオペランドを選び、小さい方のオペランドに
対するシフト数を計算する。 E2: ・掛け算結果の2つの部分を合計し、非冗長形式とす
る。 ・被加算数と積の小さい方を整列シフト器に接続されて
いるレジスタに接続する。 ・被加算数と積の大きな方を、被加算数反転マルチプレ
クサ(augent negate maltiple
xer)に接続されているレジスタに接続する。 ・正しい丸めとするために積をインクリメントする必要
が有るかを計算する。 E3: ・被加算数と積の小さい方をシフトし、大きな方の加算
数と整列させる。 ・演算が実質引き算の場合、被加算数を反転する。 ・小さな方と大きな方の加算数を加算する。 E4: ・合計値内の先頭1及び0の位置を計算する。 ・掛け算丸め計算と加算丸め計算から、丸めが必要かを
計算する。 ・必要で有れば合計値をインクリメントする。 ・合計値を正規化する。 ・最終指数を計算し、合計値が計算または丸めの中でオ
ーバーフローする場合、指数をインクリメントする。
According to a preferred embodiment of the present invention, FP
U26 is a floating point multiplication / accumulation chain (FMAC: floating
point multiply-accumulate chained) operation, where the multiply-accumulate operation is performed with effective rounding between multiplication and accumulation. In the preferred embodiment, a four-stage pipeline having execution stages E1 to E4 is employed. In the submitted embodiment, the operations performed at each stage during the multiplication / accumulation operation are as follows: E1: The mantissa of the multiplier (Mant (C)) and the multiplicand (Mant (B)) Multiply and produce a result in verbose form. • Sum the multiplier and multiplicand indices to form the product index. • Compare this with the exponent of the augend, select the operand with the larger augend or product, and calculate the shift number for the smaller operand. E2:-The two parts of the multiplication result are summed to make a non-redundant format. Connect the smaller of the augend and the product to the register connected to the alignment shifter. -The larger of the augend and the product is determined by using the augend invert multiplexer (augment negative multiple).
xer) to the register connected to it. Calculate whether the product needs to be incremented for correct rounding. E3: Shift the smaller of the product to be added and the product, and align them with the larger number of addition. -When the operation is a substantial subtraction, the addend is inverted.・ Add the smaller number and the larger number. E4: Calculate the position of the leading 1 and 0 in the total value.・ Calculate whether rounding is necessary from multiplication rounding calculation and addition rounding calculation. -If necessary, increment the total value. -Normalize the total value. Calculate the final exponent and increment the exponent if the sum overflows during calculation or rounding.

【0033】先に概要を示したFMACアーキテクチャ
はIEEE754−1985標準と矛盾せず、同一丸め
モードを使用して共に丸めを施された浮動小数点掛け算
に続いて浮動小数点加算を行ったのと同様のビットレベ
ルで一致する結果を生成する。FMACアーキテクチャ
のサイクル総数は、先に説明した従来技術によるIBM
手法よりもたった1つ大きいだけで、一方スループット
は単精度演算に対しては演算当たり1サイクル、そして
倍精度に対しては演算当たり2サイクルを維持してい
る。
The FMAC architecture outlined above is consistent with the IEEE 754-1985 standard and is similar to performing floating point multiplication followed by floating point addition together rounded together using the same rounding mode. Produces matching results at the bit level. The total number of cycles in the FMAC architecture is based on the prior art IBM
Only one greater than the approach, while maintaining throughput one cycle per operation for single precision operations and two cycles per operation for double precision.

【0034】本発明の好ましい実施例に於いて、上記の
FMACを実施するために使用されるデータ経路論理1
00を図4から図9を参照して更に詳細に説明する。図
4から図7は入力値の仮数を処理するために使用される
データ経路論理の構成要素を図示する図であり、一方図
8と図9は入力値の指数を処理するために使用されるデ
ータ経路論理の構成要素を図示する図である。
In the preferred embodiment of the present invention, the data path logic 1 used to implement the FMAC described above
00 is described in more detail with reference to FIGS. 4 to 7 illustrate the components of the data path logic used to process the mantissa of the input value, while FIGS. 8 and 9 are used to process the exponent of the input value. FIG. 3 illustrates the components of the data path logic.

【0035】図4はパイプラインの段E1中に仮数に対
して実施される処理を図示する。値B及びCの仮数は掛
け算器200に入力され、これは任意の既知の設計で構
わず、この掛け算器は値BとCを互いに掛け算し、桁上
げ保存形式で積を生成するように構成されている。合計
データはレジスタ230へ出力され、桁上げデータはレ
ジスタ240に出力される。一方で、値Aの仮数は直接
レジスタ210に通される。更にAとBとの単純加算を
行うために、値Bの仮数はまたレジスタ220に出力さ
れる。
FIG. 4 illustrates the processing performed on the mantissa during stage E1 of the pipeline. The mantissas of the values B and C are input to a multiplier 200, which may be of any known design, and which is configured to multiply the values B and C by one another to produce a product in carry-preserve format. Have been. The total data is output to the register 230, and the carry data is output to the register 240. On the other hand, the mantissa of the value A is passed directly to the register 210. The mantissa of value B is also output to register 220 to perform a simple addition of A and B.

【0036】図8はパイプラインの段E1中に指数に対
して実施される処理を図示する。値B及びCの指数は積
指数加算器600に入力され、それらは此処で加算され
て積指数を生成し、これは指数選択マルチプレクサ61
0に出力される。積指数はまたマルチプレクサ640に
供給され、これは第二入力として値Bの指数を受信す
る。マルチプレクサ640は加算数指数選択信号を制御
回路110から受信するように構成されており、これは
どの入力がマルチプレクサ640から出力されるかを制
御する。制御回路110は実行される演算型式を識別す
るデータを受信するので、加算数指数選択信号を生成し
てマルチプレクサ640が、AとBの単純加算演算が実
行される場合は値Bの指数を選択し、または掛け算・累
積演算が実行される場合は積指数を選択するように構成
することができる。
FIG. 8 illustrates the processing performed on the index during stage E1 of the pipeline. The exponents of the values B and C are input to a product exponent adder 600, which adds them here to produce a product exponent, which is an exponent select multiplexer 61.
Output to 0. The product exponent is also provided to multiplexer 640, which receives the exponent of value B as a second input. Multiplexer 640 is configured to receive the sum exponent select signal from control circuit 110, which controls which input is output from multiplexer 640. Since control circuit 110 receives data identifying the type of operation to be performed, it generates an addend exponent select signal and multiplexer 640 selects the exponent of value B if a simple add operation of A and B is to be performed. Alternatively, when a multiplication / accumulation operation is performed, a product exponent may be selected.

【0037】マルチプレクサ640からの出力は加算器
630に通され、これはまた第二入力として値Aの指数
を反転器620で反転されて入力するように構成されて
いる。値Aの指数は反転されているので、加算器630
は指数引き算器として動作し、従って経路655の上に
2つの入力指数の間の差を識別する信号(これ以降ExpD
iff信号と呼ぶ)を出力する。更に加算器630は経路
650の上に値Aの指数がその他の入力指数よりも小さ
いか否かを示す信号を出力するように構成されている。
このA_Smaller信号はExpDiff信号と共に制御回路に通さ
れ、データ経路論理用の後続の制御信号を生成するため
に制御回路で使用される。
The output from the multiplexer 640 is passed to an adder 630, which is also configured to input the exponent of the value A as a second input, inverted by an inverter 620. Since the exponent of value A is inverted, adder 630
Operates as an exponent subtractor, and thus a signal on path 655 that identifies the difference between the two input exponents (hereinafter ExpD
iff signal). Further, adder 630 is configured to output a signal on path 650 indicating whether the exponent of value A is less than the other input exponents.
This A_Smaller signal is passed to the control circuit along with the ExpDiff signal and used by the control circuit to generate subsequent control signals for data path logic.

【0038】指数選択マルチプレクサ610は3つの入
力、すなわちA指数、B指数及び積指数を受信する。指
数選択マルチプレクサ610の目的は、実行されるべき
演算に関連する最大指数を選択する事である。指数選択
マルチプレクサ610は制御回路110で生成された制
御信号で制御される。制御回路はどの演算が実行される
かを知っており、A_Smaller信号を加算器630から受
信しているので、これは指数選択マルチプレクサ610
への3つの入力のどれが出力されるべきかを決定するの
に必要な全ての情報を持っている。従って、純粋加算演
算が実行される場合、ExpMuxSelect信号はA指数または
B指数のどちらが出力されるべきかを、どちらが大きい
か(A_Smaller信号で示されるように)に基づいて指示
する。純粋掛け算演算が実行される場合、ExpMuxSelect
信号が積指数を選択させるようにする。最後に掛け算累
積演算が実行される場合、ExpMuxSelect信号はA指数ま
たは積指数のどちらが出力されるべきかを、どちらが大
きいかに基づいて指示する。
The exponent select multiplexer 610 receives three inputs, an A exponent, a B exponent, and a product exponent. The purpose of the exponent select multiplexer 610 is to select the largest exponent associated with the operation to be performed. The exponent selection multiplexer 610 is controlled by a control signal generated by the control circuit 110. Since the control circuit knows which operation is to be performed and has received the A_Smaller signal from adder 630, this is the exponent select multiplexer 610.
It has all the information needed to determine which of the three inputs to is to be output. Thus, when a pure addition operation is performed, the ExpMuxSelect signal indicates which of the A exponent or the B exponent should be output based on which is greater (as indicated by the A_Smaller signal). ExpMuxSelect if a pure multiply operation is performed
Let the signal select the product exponent. Finally, when a multiply-accumulate operation is performed, the ExpMuxSelect signal indicates which of the A exponent or the product exponent should be output based on which is greater.

【0039】図9に示されるように、指数選択マルチプ
レクサ610からの出力はレジスタ670へ通される。
パイプラインの段E2及びE3に於いて、この出力値は
それぞれ単にレジスタ680および690に通される。
As shown in FIG. 9, the output from exponent select multiplexer 610 is passed to register 670.
At pipeline stages E2 and E3, this output value is simply passed to registers 680 and 690, respectively.

【0040】図5はパイプラインの段E2で実行される
仮数処理を図示する。レジスタ230と240からの合
計および桁上げデータはそれぞれ、合計及び桁上げデー
タの最上位ビットが積加算器250へ送られ、桁上げ及
び保存データの最下位ビットが付着加算器260に送ら
れるように分離される。
FIG. 5 illustrates the mantissa processing performed in stage E2 of the pipeline. The sum and carry data from registers 230 and 240, respectively, is such that the most significant bit of the sum and carry data is sent to product adder 250 and the least significant bit of the carry and stored data is sent to attachment adder 260, respectively. Is separated into

【0041】付着加算器260への入力は互いに加算さ
れ、ガード及び付着ビット生成器270へ出力される。
生成器270で決定されたガード及び付着ビットは続い
て経路280の上を制御回路110へ出力される。付着
加算器260への入力の加算結果がオーバーフローする
と、オーバーフロービットが経路265の上を積加算器
250へ通される。積加算器への入力は互いに加算さ
れ、経路265を介して受信された全てのオーバーフロ
ービットを考慮に入れて積Pを生成する。この段で積P
は丸められておらず、また正規化されていない。
The inputs to the attachment adder 260 are added together and output to the guard and attachment bit generator 270.
The guard and sticky bits determined by generator 270 are then output on path 280 to control circuit 110. When the result of the addition to the attachment adder 260 overflows, the overflow bit is passed over path 265 to product adder 250. The inputs to the product adder are added together to generate a product P taking into account all overflow bits received via path 265. The product P at this stage
Is not rounded and is not normalized.

【0042】積Pは被加算数マルチプレクサ320と加
算数マルチプレクサ330とに供給され、これらのマル
チプレクサはまた値AおよびBの仮数をそれぞれレジス
タ210及び220から受信するように構成されてい
る。積Pの最下位ビットの数、好ましい実施例ではビッ
ト0と1、は275の上を制御回路110へ出力され
る。当業者には理解されるように、経路275の上に出
力された最下位ビットと経路280の上に出力されたガ
ード及び付着ビットに基づいて、制御回路は掛け算結果
Pが丸められるべきか否かを指示する丸め値(これ以降
MulRoundと呼ぶ)を生成するように構成できる。しかし
ながら、制御回路はMulRoundを生成はするが、好ましい
実施例に於いてこの段階では丸めは実行されない。
The product P is provided to an addend multiplexer 320 and an addend multiplexer 330, which are also configured to receive the mantissas of the values A and B from registers 210 and 220, respectively. The number of least significant bits of the product P, bits 0 and 1 in the preferred embodiment, is output over 275 to control circuit 110. As will be appreciated by those skilled in the art, based on the least significant bit output on path 275 and the guard and sticky bits output on path 280, the control circuit determines whether the multiplication result P should be rounded. The rounding value that indicates
MulRound). However, although the control circuit generates the MulRound, no rounding is performed at this stage in the preferred embodiment.

【0043】加えて、Movfl信号が後ほど丸め中に制御
回路で使用されるために経路285の上に出力され、こ
のMovfl信号は積加算器250の出力がオーバーフロー
している場合は論理1値を有し、積加算器250の出力
がオーバーフローしていない場合は論理0値を有する。
In addition, the Movfl signal is output on path 285 for later use by the control circuit during rounding, and the Movfl signal has a logic 1 value if the output of product adder 250 overflows. If the output of the product adder 250 does not overflow, it has a logical 0 value.

【0044】被加算数マルチプレクサ320及び加算数
マルチプレクサ330は制御信号、すなわち大選択(L_
Sel)と小選択(S_Sel)信号で、それぞれ制御されてお
り、これらの信号は制御回路で生成される。制御回路は
どの演算が実行されているかを知り、またA_Smqller信
号を加算器630から受信しているので、被加算数マル
チプレクサ320と加算数マルチプレクサ330への3
つの入力のどれが出力されるべきかを決定するために必
要な全ての情報を有する。純粋加算演算が実行される場
合は、L_Sel信号が被加算数マルチプレクサ320に値
AおよびBの大きい方を選択させ(指数から導かれたA_
Smaller信号で指示される通り)、一方S_Selは加算数マ
ルチプレクサ330に値A及びBの小さな方を選択させ
る。純粋掛け算演算が実行される場合は、L_Sel信号が
積Pを被加算数マルチプレクサで選択させ、一方S_Sel
信号は加算数マルチプレクサにゼロ値を出力させる。最
後に掛け算・累積演算が実行される場合は、L_Sel信号
は被加算数マルチプレクサ320が値AとPの大きな方
を選択させ(指数から導かれたA_Smaller信号で指示さ
れるとおり)、一方S_Selは加算数マルチプレクサ33
0が値AとPの小さな方を選択させる。次に被加算数マ
ルチプレクサ320と加算数マルチプレクサ330から
の出力はレジスタ350と360の中に格納され、後ほ
どパイプラインの段E3の中で使用される。
The addend multiplexer 320 and the addend multiplexer 330 control signals, that is, the large selection (L_
Sel) and a small selection (S_Sel) signal, respectively, and these signals are generated by a control circuit. Since the control circuit knows which operation is being performed and has received the A_Smqller signal from adder 630, the control circuit 3
It has all the information needed to determine which of the two inputs should be output. When a pure addition operation is performed, the L_Sel signal causes the augend multiplexer 320 to select the larger of the values A and B (A_ derived from the exponent).
S_Sel, on the other hand, causes the adder multiplexer 330 to select the smaller of the values A and B, as indicated by the Smaller signal). When a pure multiplication operation is performed, the L_Sel signal causes the product P to be selected by the augend multiplexer while the S_Sel
The signal causes the adder multiplexer to output a zero value. Finally, if a multiply-accumulate operation is performed, the L_Sel signal causes the augend multiplexer 320 to select the larger of the values A and P (as indicated by the A_Smaller signal derived from the exponent), while S_Sel is Addition number multiplexer 33
0 causes the smaller of the values A and P to be selected. The outputs from addend multiplexer 320 and addend multiplexer 330 are then stored in registers 350 and 360 for later use in stage E3 of the pipeline.

【0045】図6はパイプラインの段E3の中で実行さ
れる仮数処理を図示する。レジスタ360内に格納され
ているより小さな値は整列シフト器390へ通され、こ
こでより大きな値と整列されるようにシフトされる。こ
れは制御回路110がShiftCount値を経路395経由で
整列シフト器390へ提供することにより実現される。
ShiftCount値はパイプラインの段E1での指数処理中に
データ経路論理100で出力されたExpDiff信号を用い
て制御回路110で計算される。
FIG. 6 illustrates the mantissa processing performed in stage E3 of the pipeline. The smaller value stored in register 360 is passed to an alignment shifter 390, where it is shifted to be aligned with the larger value. This is achieved by the control circuit 110 providing the ShiftCount value to the alignment shifter 390 via the path 395.
The ShiftCount value is calculated by the control circuit 110 using the ExpDiff signal output by the data path logic 100 during exponential processing at stage E1 of the pipeline.

【0046】経路420の上に出された整列シフト器3
90の出力は、整列された小さい方の値、ガードビット
および丸めビットで構成されている。ガードビットと丸
めビットとは経路425の上を制御回路110に通さ
れ、一方整列された小さい方の値は経路430の上を合
計値加算器450に通される。経路420の上の出力に
加えて、整列シフト器390はまた経路400の上にシ
フト処理中にシフトアウトされたビットを出力する。こ
れらのビットは論理405に入力され、これはビットが
全てゼロかまたは全て1かを判定する。シフトアウトさ
れた各々のビットがゼロだった場合、論理1値が経路4
10の上を出力され、一方シフトアウトされた各々のビ
ットが1だった場合、論理1値が経路415の上を出力
される。後ほど更に詳細に説明するように、これらの値
は経路425上のガードおよび丸めビット出力と共に制
御回路110で使用されて丸めを決定する。
Alignment shifter 3 placed on path 420
The output of 90 consists of the aligned smaller value, the guard bit and the rounding bit. The guard bits and the rounding bits are passed on path 425 to control circuit 110, while the aligned smaller values are passed on path 430 to sum adder 450. In addition to the output on path 420, alignment shifter 390 also outputs on path 400 the bits that have been shifted out during the shifting process. These bits are input to logic 405, which determines whether the bits are all zeros or all ones. If each bit shifted out was zero, a logical 1 value is passed to path 4
A logic one value is output on path 415 if each bit shifted out was one while one was output one. These values are used in control circuit 110 along with the guard and round bit outputs on path 425 to determine rounding, as described in more detail below.

【0047】段E2の途中でレジスタ350の中に格納
されている大きな方の値は、反転器370で反転された
その値の反転版と共にマルチプレクサ380に通され
る。制御回路110は命令と種々の入力信号の符号とか
ら、累積論理が“異符号加算”(USA:unlike signed ad
d)、例えばX−Yを実行するか否かを決定する。その
場合は、制御回路は1の論理値を有する被加算数反転信
号を出力して、マルチプレクサに反転された大きな方の
値を選択させる。それ以外の場合は、被加算数反転信号
は0の論理値を有し、マルチプレクサに反転されていな
い大きな方の値を選択させる。
The larger value stored in register 350 in the middle of stage E2 is passed to multiplexer 380, along with an inverted version of that value inverted in inverter 370. The control circuit 110 determines that the cumulative logic is “addition of different signs” (USA: like signed ad) from the instruction and the sign of various input signals.
d), for example, determine whether to execute XY. In that case, the control circuit outputs an augend inversion signal having a logical value of 1, and causes the multiplexer to select the inverted larger value. Otherwise, the augend inverted signal has a logical value of 0, causing the multiplexer to select the larger value that is not inverted.

【0048】マルチプレクサ380からの出力は経路4
40の上を合計加算器450に通され、そこで整列され
た小さい方の値に加算される。USAが実行される場合
は、制御回路110で生成されたAddCarryIn信号が論理
1値にセットされ合計加算器450に入力される。これ
は大きい方の値の正しい2の補数が加算の中で使用され
ることを保証するために必要である(この2の補数は大
きい方の値の負の状態を表す)。先に例として上げたX
−Yを考えると、これは−(−X+Y)と等価であり、
合計加算器は合計−X+Yを実行すると見なせる。合計
加算器450の出力は次にレジスタ455に通され、後
ほどパイプラインの段E4の中で使用される。更に最下
位ビットL[0],L[1]及びL[2]は経路452
の上を制御回路110に出力され、丸めを決定する際に
後ほど使用される。
The output from multiplexer 380 is route 4
Above 40 is passed to sum adder 450 where it is added to the aligned smaller value. When the USA is executed, the AddCarryIn signal generated by the control circuit 110 is set to a logical 1 value and input to the sum adder 450. This is necessary to ensure that the correct two's complement of the larger value is used in the addition (the two's complement represents the negative state of the larger value). X mentioned above as an example
Considering -Y, this is equivalent to-(-X + Y),
The sum adder can be considered to perform the sum -X + Y. The output of sum adder 450 is then passed to register 455 for later use in stage E4 of the pipeline. Further, the least significant bits L [0], L [1] and L [2] are routed 452
Is output to the control circuit 110 and used later in determining rounding.

【0049】図7はパイプラインの段E4で実行される
仮数処理を図示する。レジスタ455の中に格納されて
いる値は正規化シフト器457に通され、これは必要で
あれば合計加算器の出力に対して右シフトを実行する。
この様なUSA及び同符号加算(LSA:Like Signed Ad
d)演算に対して、合計加算器の出力がオーバーフロー
する可能性があり、出力を正規化するためにその出力値
を1または2ビット右シフトする必要がある(実際上小
数点を左にシフトする)。従って制御回路は合計加算器
450の出力からその様なオーバーフローが生じている
か否かを判定し、整列シフト器が出力の適切なシフトを
行わせる制御信号を生成するように構成されている。
FIG. 7 illustrates the mantissa processing performed in stage E4 of the pipeline. The value stored in register 455 is passed to a normalizing shifter 457, which performs a right shift on the output of the sum adder if necessary.
Such USA and the same sign addition (LSA: Like Signed Ad)
d) For operations, the output of the sum adder can overflow and its output value needs to be shifted right by one or two bits to normalize the output (effectively shifting the decimal point to the left ). Accordingly, the control circuit is configured to determine from the output of sum adder 450 whether such an overflow has occurred and to generate a control signal that causes the alignment shifter to perform the appropriate shift of the output.

【0050】レジスタ455の中に格納されている値は
また論理480に通され、そこでゼロの先頭及び1の先
頭が決定される。これはUSA演算を考慮して実行され
ており、この演算では合計加算器450の出力値を正規
化するために左シフトさせる必要のある相殺が生じる可
能性があるためである。先頭ゼロの位置は経路485の
上を制御回路110に出力され、先頭1の位置は経路4
90の上を制御回路110に出力される。これらの信号
は制御回路でNormShiftCount信号を決定するために使用
され、これは仮数を後で正規化する際に使用される。こ
のNormShiftCount信号はUAS演算による全ての相殺に
対処するために仮数が左にシフトされるべきビット位置
の数を識別する。
The value stored in register 455 is also passed to logic 480, where the leading zeros and leading ones are determined. This is because the USA operation is taken into consideration, and this operation may cause a cancellation that needs to be shifted left in order to normalize the output value of the sum adder 450. The position of the leading zero is output on the path 485 to the control circuit 110, and the position of the leading zero is on the path 4
The data above 90 is output to the control circuit 110. These signals are used in the control circuit to determine the NormShiftCount signal, which is used later in normalizing the mantissa. This NormShiftCount signal identifies the number of bit positions where the mantissa should be shifted left to account for any cancellations due to the UAS operation.

【0051】整列シフト器457の出力は、反転器46
0で反転されたその値を反転したものと一緒にマルチプ
レクサ465に通される。制御回路110は合計加算器
450の出力が負であるか否かを評価し、負の場合はRe
sult Negative制御信号を経路470の上を1の論理値
を有するマルチプレクサ465に送る。これはマルチプ
レクサ465に反転器460から受信された反転入力を
選択させる。それ以外の場合は、レジスタ455から直
接受信された非反転入力が選択される。
The output of the alignment shifter 457 is output to the inverter 46.
The value, which has been inverted by 0, is passed to multiplexer 465 together with the inverted version. The control circuit 110 evaluates whether or not the output of the adder 450 is negative.
The sult Negative control signal is sent on path 470 to a multiplexer 465 having a logical value of one. This causes multiplexer 465 to select the inverting input received from inverter 460. Otherwise, the non-inverting input received directly from register 455 is selected.

【0052】マルチプレクサ465の出力は更新器50
0と、丸め選択マルチプレクサ510に通される。丸め
選択マルチプレクサ510はまた更新器500の出力も
受信し、制御回路110から経路515の上を通された
最終インクリメント信号に応答して、2つの入力の1つ
を選択し正規化器520に出力する。制御回路110は
段E2内で生成されたMulRoundから、及びパイプライン
の段E3の間に経路410,415,425及び452
の上に出力された種々の信号とから、最終インクリメン
ト信号の値を決定する。制御回路110での最終インク
リメント信号の生成について後ほど詳細に説明する。
The output of the multiplexer 465 is supplied to the updater 50.
0 is passed to the rounding select multiplexer 510. Rounding select multiplexer 510 also receives the output of updater 500 and selects one of the two inputs and outputs it to normalizer 520 in response to the final increment signal passed on path 515 from control circuit 110. I do. The control circuit 110 provides paths 410, 415, 425 and 452 from the MulRound generated in stage E2 and between stages E3 of the pipeline.
The value of the final increment signal is determined from the various signals output above. The generation of the final increment signal in the control circuit 110 will be described later in detail.

【0053】正規化器520は丸め選択マルチプレクサ
510から出力を受信し、先に説明したNormShiftCount
で決定されたように、出力の全ての正規化を実行する。
正規化器520からの出力は続いて最終結果の仮数とし
てレジスタ530の中に格納される。
The normalizer 520 receives the output from the rounding selection multiplexer 510 and receives the output from the NormShiftCount described above.
Perform all normalizations of the output as determined in.
The output from normalizer 520 is then stored in register 530 as the mantissa of the final result.

【0054】図9はパイプラインの段E4内で実行され
る指数処理を図示する。レジスタ690の中に格納され
ている指数値は指数調整加算器700に入力され、これ
はまた第二入力としてマルチプレクサ710の出力も受
信する。マルチプレクサ710は制御回路110から出
力されたExpAdjust信号で制御され、この信号はマルチ
プレクサ710への4入力のどれが指数調整加算器70
0に出力されるべきかを指示している。従って、仮数の
左シフトがNormShiftCountに基づいて段E4で実行され
る場合、ExpAdjust信号はマルチプレクサ710が反転
されたNormShiftCount信号を指数調整加算器700に出
力して、指数を仮数とは逆の考えで調整するようにさせ
る。同様に、これに代わって指数がシフト器457によ
りパイプラインの段E4の間に右にシフトされた場合、
ExpAdjust信号はマルチプレクサ710が指数に対して
適切な調整を選択するようにさせる。従って、例えば仮
数が1ビット右にシフトされる場合、マルチプレクサ7
10は1の値を出力して指数を1だけインクリメントさ
せる。
FIG. 9 illustrates the exponential processing performed in stage E4 of the pipeline. The exponent value stored in register 690 is input to exponent adjust adder 700, which also receives the output of multiplexer 710 as a second input. The multiplexer 710 is controlled by an ExpAdjust signal output from the control circuit 110, and this signal is output to any one of the four inputs to the multiplexer 710.
Indicates whether it should be output to 0. Thus, if a left shift of the mantissa is performed at stage E4 based on NormShiftCount, the ExpAdjust signal outputs the inverted NormShiftCount signal to the exponent adjustment adder 700 by multiplexer 710, and the exponent is inversely related to the mantissa. Let them adjust. Similarly, if, instead, the exponent was shifted right by shifter 457 during stage E4 of the pipeline,
The ExpAdjust signal causes multiplexer 710 to select the appropriate adjustment for the exponent. Therefore, for example, when the mantissa is shifted one bit to the right, the multiplexer 7
10 outputs a value of 1 and increments the exponent by 1.

【0055】指数調整加算器700の出力は指数更新器
720と最終指数選択マルチプレクサ730に通され
る。最終指数選択マルチプレクサ730はまた指数更新
器720からの出力を受信し、制御回路110からのFi
nalExpSel信号で制御され、どの値を最終結果の指数と
してレジスタ740に出力するかを決定する。仮数のイ
ンクリメントされたものがオーバーフローして、図7に
示される丸め選択マルチプレクサ510で選択される場
合、FinExpSel信号は高に駆動されてマルチプレクサ7
30にインクリメントされた指数を選択させる。注意し
ておかなければならないのは、この時点で仮数のオーバ
ーフローは正規化器520で実行される最初の正規化で
は考慮されておらず、従って仮数は図7には図示されて
いない更に別の正規化を受けて、仮数をインクリメント
することで引き起こされた全てのオーバーフローに対処
している。
The output of exponent adjustment adder 700 is passed to exponent updater 720 and final exponent select multiplexer 730. The final exponent select multiplexer 730 also receives the output from the exponent updater 720 and
Controlled by the nalExpSel signal, it determines which value to output to register 740 as the exponent of the final result. If the incremented mantissa overflows and is selected by the rounding selection multiplexer 510 shown in FIG. 7, the FinExpSel signal is driven high and the multiplexer 7
Let 30 select the incremented index. It should be noted that at this point the mantissa overflow has not been taken into account in the first normalization performed by the normalizer 520, and therefore the mantissa is not shown in FIG. Following normalization, it handles all overflows caused by incrementing the mantissa.

【0056】データ経路論理100を詳細に説明したの
で、制御回路110内で丸め値を生成するために使用さ
れている決定論理150について説明する。決定論理で
実行される丸めの決定はパイプラインの段E3で生成さ
れた7つの信号を、掛け算結果Pが丸められるべきか否
かを指示する段E2内の決定論理で生成されたMulRound
信号と共に使用して、結果に対して実行される必要のあ
る最終丸めを計算する。段E3からの7つの信号は: ・シフト器390で実行された整列シフトの結果、経路
425の上に出力されたガード(G)及び丸め(R)ビ
ット。 ・それぞれ経路410及び415の上に出力されたAllO
nesまたはAllZeros信号で、これらの信号はシフト器3
90でシフトアウトされたビットをチェックした結果で
ある。AllOnesはシフトアウトされた全てのビットが1
の場合に成立し、一方AllZerosはシフトアウトされた全
てのビットがゼロの時に成立する。シフトアウトされた
ビットが1及び0の両方を含む場合はどちらも成立しな
い。 ・経路452の上のL[2],L[1],及びL[0]
出力で、これらの信号は合計加算器450の合計出力の
下位3ビットである。
Having described the data path logic 100 in detail, the decision logic 150 used to generate the rounding value in the control circuit 110 will now be described. The rounding decision performed by the decision logic is performed by multiplying the seven signals generated in the stage E3 of the pipeline by the MulRound generated by the decision logic in the stage E2 indicating whether the multiplication result P should be rounded or not.
Used with the signal to calculate the final rounding that needs to be performed on the result. The seven signals from stage E3 are: The guard (G) and round (R) bits output on path 425 as a result of the alignment shift performed by shifter 390. AllO output on paths 410 and 415, respectively
nes or AllZeros signals, these signals are
This is the result of checking the bit shifted out at 90. AllOnes means that all bits shifted out are 1
Holds, while AllZeros holds when all bits shifted out are zero. Neither holds if the shifted out bit contains both 1s and 0s. L [2], L [1], and L [0] on path 452
On output, these signals are the lower three bits of the sum output of sum adder 450.

【0057】図10は制御回路110の中に具備されて
いる決定論理150を更に詳細に図示している。これは
パイプラインの段E3中に生成された上述の7つの信号
を受信するための第一変換器800を含む。第一変換器
800の第一の目的はパイプラインの段E4中に実行さ
れた右シフトを要求する全ての正規化を補償することで
ある。先に述べたように1および2ビットのみの右シフ
トを準備する必要があるだけである。第一変換器800
からの出力は中間最下位ビット(IL),ガード(I
G),丸め(IR)および付着(IS)ビットであり、
これらは第二変換器810に入力され、これらの値は下
記の表に基づいて決定される:
FIG. 10 illustrates the decision logic 150 provided in the control circuit 110 in more detail. It includes a first converter 800 for receiving the above seven signals generated during stage E3 of the pipeline. The first purpose of the first converter 800 is to compensate for any normalization that requires a right shift performed during stage E4 of the pipeline. It is only necessary to provide a right shift of only one and two bits as described above. First converter 800
Output from the intermediate least significant bit (IL) and guard (I
G), rounding (IR) and sticking (IS) bits;
These are input to a second converter 810, whose values are determined based on the following table:

【0058】[0058]

【表1】 [Table 1]

【0059】上記の表の中、及びこれ以降で用語Inv(X)
はXを反転した値を表すために使用され、一方ORおよ
びANDは論理ORまたは論理AND機能を表してい
る。
In the above table and hereafter, the term Inv (X)
Is used to represent the inverted value of X, while OR and AND represent logical OR or logical AND functions.

【0060】中間丸めビットは更に第二変換器810で
処理され、これはMulRound値、合計加算器450の合計
出力の否定で必要とされる全ての2の補数(この様な否
定は制御回路で高に駆動されたResultNegative信号で選
択される)、そして3つの有効信号を組み込む。
The intermediate rounding bits are further processed in a second converter 810, which converts the MulRound value, all two's complements required in negating the sum output of sum adder 450 (such negation is controlled by a control circuit). (Selected by the ResultNegative signal driven high), and incorporates three valid signals.

【0061】有効信号はシフト器390で実行された整
列演算がそれぞれの丸めビットを生成した場合に真であ
り、整列がそれぞれのビットを生成しない場合は偽であ
る。これを下記の表で二倍精度演算を例として具体的に
示す(Movfl信号は積加算器250からの積P出力が1.x
yyyでは無くて1x.yyyの形式の時に真(すなわち1)で
ある。GVは有効Gビットが整列シフト演算より戻され
た場合に真である。RVおよびSVは同様に有効Rビッ
トおよびSビットが整列シフトビット演算より戻された
場合に真である。):
The valid signal is true if the alignment operation performed by shifter 390 produces respective rounded bits, and false if the alignment does not generate individual bits. This is specifically shown in the following table by taking a double-precision operation as an example (the output of the product P from the product adder 250 is 1.x
True (that is, 1) when the format is 1x.yyy instead of yyy. GV is true if valid G bits are returned from the alignment shift operation. RV and SV are also true if the valid R and S bits are returned from the aligned shift bit operation. ):

【0062】[0062]

【表2】 第二変換器810の出力は最終最下位ビット(FL),
ガード(FG),丸め(FR)及び付着(FS)ビット
であり、これらは第三変換器830に入力される。これ
らの最終ビットは更に第三変換器830で処理されて、
IEEE754−1985丸め式をFL,FG,FR,
FS,及び強制更新(FI)ビットに適用することによ
り丸め値(段E4内の丸め選択マルチプレクサ510へ
の最終インクリメント信号入力として使用される)を生
成する。第三変換器の出力はデータ経路論理の丸め論理
140で、最終結果を丸めるために使用される。
[Table 2] The output of the second converter 810 is the final least significant bit (FL),
Guard (FG), round (FR) and stick (FS) bits, which are input to the third converter 830. These last bits are further processed in a third converter 830,
The IEEE 754-1985 rounding formula is FL, FG, FR,
Generate a rounding value (used as the final increment signal input to rounding select multiplexer 510 in stage E4) by applying to the FS and forced update (FI) bits. The output of the third converter is the data path logic rounding logic 140, which is used to round the final result.

【0063】当業者には理解されるであろうが、浮動小
数点加算には2つの異なるケースが存在し、同符号加算
と異符号加算である。同符号加算(LSA:like−
signed addition)の場合、入力オペラ
ンドの符号は加算演算の場合は等しく、引き算の場合は
反対である。異符号加算(USA:unlike−si
gned addition)の場合、符号は加算の場
合は反対で、引き算の場合は等しい。以下に示すケース
はLSAまたはUSA演算のいずれかで区別されてい
る。
As will be appreciated by those skilled in the art, there are two different cases of floating point addition, homo-sign addition and hetero-sign addition. Same sign addition (LSA: like-
In the case of a signed addition, the signs of the input operands are equal for an addition operation and opposite for a subtraction operation. Different sign addition (USA: unlike-si
In the case of gned addition, the sign is opposite for addition and equal for subtraction. The following cases are distinguished by either LSA or USA operation.

【0064】図4から図9を参照して先に説明したよう
に、‘小さい方’のオペランドまたは‘大きい方’のオ
ペランドの決定は、指数を比較して小さい方の指数を具
備したオペランドを‘小さい方’また、もう一方のオペ
ランドを‘大きい方’と示すことで行われている。大き
い方のオペランドは被加算数と呼ばれ、一方小さい方の
オペランドは加算数と呼ばれている。
As described above with reference to FIGS. 4-9, the determination of the 'smaller' operand or the 'larger' operand is accomplished by comparing the exponents with the operand having the smaller exponent. This is done by showing the other operand as 'larger'. The larger operand is called the augend, while the smaller operand is called the addend.

【0065】第二変換器810は6つのケースを考慮し
ている、すなわち: ケース1:LSA,積が小さい ケース2:LSA,積が大きい ケース3:USA,積が小さい、結果は正 ケース4:USA,積が小さい、結果は負 ケース5:USA,積が大きい、結果は正 ケース6:USA,積が大きい、結果は負
The second converter 810 considers six cases: Case 1: LSA, small product Case 2: LSA, large product Case 3: USA, small product, the result is positive Case 4 : USA, product is small, result is negative Case 5: USA, product is large, result is positive Case 6: USA, product is large, result is negative

【0066】ケース1:LSA,積が小さい 演算がMACの場合、MulRoundビットに基づいて2つの
ケースが存在する。演算がMACで無い場合、MulRound
ビットは0である。両方のケースに対して、FLビット
はILの値にセットされる。
Case 1: LSA, when the product with a small product is MAC, there are two cases based on the MulRound bit. If the operation is not a MAC, MulRound
The bit is 0. For both cases, the FL bit is set to the value of IL.

【0067】[0067]

【数1】 (Equation 1)

【0068】有効信号(GV,RV,及びSV)はこの
場合は必要ない。有効で無い場合、丸めビットはゼロで
あり丸め式の中に正しく組み込まれる。
The valid signals (GV, RV and SV) are not needed in this case. If not valid, the rounding bit is zero and is correctly incorporated into the rounding expression.

【0069】MulRound=1 このケースは有効信号(GV,RV,及びSV)を必要
とする。
MulRound = 1 This case requires valid signals (GV, RV, and SV).

【0070】[0070]

【表3】 [Table 3]

【0071】Sビットは有効である(GおよびRは有効
である必要は無い。これらは有効でない場合はゼロであ
る。)
The S bit is valid (G and R need not be valid; they are zero if not valid).

【0072】[0072]

【表4】 [Table 4]

【0073】ケース2:LSA,積が大きい MulRoundビットは経路445上を合計加算器450に通
されたAddCarryIn信号の中に組み込まれている。MulRou
ndは段4丸めの中では強制的に0とされていて、影響は
与えない。
Case 2: LSA, MulRound bit with large product is incorporated in the AddCarryIn signal passed to sum adder 450 on path 445. MulRou
nd is forcibly set to 0 in the rounding of stage 4 and has no effect.

【0074】第4段丸めビットは: FL=IL FG=IG FR=IR FS=IS FI=0The fourth rounding bit is: FL = IL FG = IG FR = IR FS = IS FI = 0

【0075】ケース3:USA,積が小さい、結果は正 このケースでは指数は等しく加算数の仮数は被加算数の
仮数より大きいか、または積の指数は被加算数の指数よ
り1だけ小さいが、積の仮数はオーバーフローしていて
実際上被加算数よりも大きい。
Case 3: USA, product is small, result is positive. In this case, the exponents are equal and the mantissa of the addend is greater than the mantissa of the augend, or the exponent of the product is one less than the exponent of the augend. , The mantissa of the product overflows and is actually larger than the augend.

【0076】積からの丸めビットの極性は正しく、反転
する必要はない。
The polarity of the round bit from the product is correct and does not need to be inverted.

【0077】FL,FG,FR,FS,及びFIビット
はケース1と同様に計算される。
The FL, FG, FR, FS, and FI bits are calculated as in Case 1.

【0078】ケース4:USA,積が小さい、結果は負 このケースでは加算数丸めビットはMulRoubdビットと同
様に、反転されなければならない。
Case 4: USA, product is small, result is negative. In this case, the addend rounding bit must be inverted, like the MulRoubd bit.

【0079】MulRound=0 合計値を反転する際に必要とされる2の補数ビットは、
反転された丸めビットのLSBに組み込まれなければな
らない。
MulRound = 0 The two's complement bits required when inverting the sum are:
Must be incorporated into the LSB of the inverted rounding bit.

【0080】有効ビットは必要でない;丸めビットがそ
の対応する有効ビットの組を持たない場合、それは0で
あり、反転した後、丸め状況を正しく表すはずである。
No significant bits are required; if a round bit does not have its corresponding set of significant bits, it is zero and, after inversion, should correctly represent the rounding situation.

【0081】[0081]

【表5】 FLビットはILにセットされる。[Table 5] The FL bit is set to IL.

【0082】MulRound=1 MulRoundビットがセットされているので、結果を反転す
るために必要な2の補数ビットは下記の恒等式に基づ
き、MulRoundビットで相殺される: 丸めビットは以下の通りである:
MulRound = 1 Since the MulRound bit is set, the two's complement bits required to invert the result are offset by the MulRound bit based on the identity: The rounding bits are as follows:

【0083】[0083]

【数2】 (Equation 2)

【0084】ケース5:USA,積が大きい、結果は正 このケースでは、加算数は実際に積よりも大きく、合計
値は反転する必要が無い。
Case 5: USA, product is large, result is positive. In this case, the number of additions is actually larger than the product and the sum does not need to be inverted.

【0085】FL,FG,FR,FS,及びFIビット
はケース1と同様に計算される。MulRoundビットはAddC
arryIn信号をゼロにするために第3段で使用された。Mu
lRoundビットは第4段に送られる前に消去される。
The FL, FG, FR, FS, and FI bits are calculated as in Case 1. MulRound bit is AddC
Used in the third stage to nullify the arryIn signal. Mu
The lRound bit is cleared before being sent to the fourth stage.

【0086】ケース6:USA,積が大きい、結果は負 ケース4と同様、加算数丸めビットは反転されなければ
ならない。MulRoundビットはAddCarryIn信号をゼロにす
るために第3段で使用された。MulRoundビットは第4段
に送られる前に消去される。
Case 6: USA, product is large, the result is negative, as in case 4; the addend round bit must be inverted. The MulRound bit was used in the third stage to zero out the AddCarryIn signal. The MulRound bit is cleared before being sent to the fourth stage.

【0087】丸めビットはケース4と同様に計算され
る。
The rounding bits are calculated as in Case 4.

【0088】好ましい実施例のFMAC能力を備えてい
ないアーキテクチャに対して、サイクル総数および命令
総数の両方に於ける優位性が、下記の簡単なDPS“有
限インパルス応答”(FIR:Finit Impulse Response)フ
ィルタ例で具体的に示されている。この例に於いて、8
つの係数と8つのデータ項目が掛け算されて合計されて
いる: Acc=D0*C0+D1*C1+D2*C2+D3*C3+D4*C4+D5*C5+D6*C6+D7*C
7
Advantages over both the total number of cycles and the total number of instructions for the preferred embodiment without FMAC capability are the following simple DPS "Finit Impulse Response" (FIR) filters: This is specifically shown in the examples. In this example, 8
One coefficient and eight data items are multiplied and summed: Acc = D0 * C0 + D1 * C1 + D2 * C2 + D3 * C3 + D4 * C4 + D5 * C5 + D6 * C6 + D7 * C
7

【0089】8つの係数、8つのデータ項目、及びAc
cがレジスタの中に有り、また8つの暫定レジスタが利
用可能であると仮定すると、従来型プロセッサは以下の
演算を実行するはずである:(FMUL及びFADD演
算は3サイクルレイテンシィ(latency)と1サ
イクルスループットを有すると仮定する。)
Eight coefficients, eight data items, and Ac
Assuming that c is in a register and that eight interim registers are available, a conventional processor would perform the following operations: (FMUL and FADD operations have three cycle latency and Assume that it has one cycle throughput.)

【0090】[0090]

【表6】 [Table 6]

【0091】演算毎に1サイクルと3サイクルのレイテ
ンシィを仮定すると、最初の13演算は従属性を持たず
に13サイクルを順番に実行するはずである。演算14
は演算12の結果が完了するのを待つために1サイクル
停止し、2サイクルを要する。演算15は停止しない
が、それは演算14の停止中に演算13がT0に書き込
みを完了する事が可能なためである、一方最終累積演算
16はAcc値が演算15からロードされるのを待つた
めに2サイクルの間停止する。総サイクル数は16+1
+2+2,すなわち16演算に対して21サイクルであ
る。
Assuming a latency of one cycle and three cycles for each operation, the first thirteen operations should execute thirteen cycles in order without any dependency. Operation 14
Stops for one cycle to wait for the result of operation 12 to be completed, and requires two cycles. The operation 15 does not stop because the operation 13 can complete writing to T0 while the operation 14 is stopped, while the final accumulation operation 16 waits for the Acc value to be loaded from the operation 15. Stop for two cycles. 16 + 1 total cycles
+ 2 + 2, that is, 21 cycles for 16 operations.

【0092】好ましい実施例のFPU26内のFMAC
演算を用いると、以下の演算が同一結果を生成する:
(FMAC,FMUL,及びFADD演算は4サイクル
レイテンシィと1サイクルスループットを有する。)
FMAC in the FPU 26 of the Preferred Embodiment
Using operations, the following operations produce the same result:
(FMAC, FMUL, and FADD operations have 4 cycle latency and 1 cycle throughput.)

【0093】[0093]

【表7】 [Table 7]

【0094】この例に於いて、最初の8つの演算は停止
することなく順番に8サイクルで実行される。演算9は
演算6がT1への書き込みを完了するのを待つために1
サイクルの間停止する。演算10もまた1サイクルの間
停止し、一方最終演算11は演算10がT3への書き込
みを完了するのを待つために3サイクルの間停止する。
総サイクル数は11+1+1+3+3,すなわち11演
算に対して19サイクルである。
In this example, the first eight operations are executed sequentially in eight cycles without stopping. Operation 9 takes 1 to wait for operation 6 to complete writing to T1.
Stop during the cycle. Operation 10 also stops for one cycle, while final operation 11 stops for three cycles to wait for operation 10 to complete writing to T3.
The total number of cycles is 11 + 1 + 1 + 3 + 3, that is, 19 cycles for 11 operations.

【0095】FMAC演算のDSP機能に対する第1の
利点はFIR演算がパイプラインの深さに展開される際
に分かる。例えば、同じ8つのデータ点と8つの係数が
4つのセットの中にグループ化され、部分FIR演算が
4つのデータ点に対して実行される場合、下記の計算は
停止することなく実行できる:
The first advantage of the FMAC operation over the DSP function can be seen when the FIR operation is expanded to the depth of the pipeline. For example, if the same eight data points and eight coefficients are grouped into four sets and a partial FIR operation is performed on the four data points, the following calculations can be performed without stopping:

【0096】[0096]

【数3】 (Equation 3)

【0097】好ましい実施例のFPU26内の以下のF
MAC演算はこれらの式を停止状態を持つことなく実行
するはずである:
The following F in the FPU 26 of the preferred embodiment:
The MAC operation should execute these expressions without having to stop:

【0098】[0098]

【表8】 [Table 8]

【0099】このシーケンスは先に与えられた8つのデ
ータと8つの係数演算に対して、再び停止することなく
繰り返される。上記の例のスループットはサイクル毎に
1掛け算累積演算であり、結果として8データ及び8係
数の例では有効サイクル数が8となる。同じループ展開
技術を用いた従来型プロセッサでは8データ及び8係数
問題に対して16演算を必要とするが、それは単純に各
々の演算が1つの掛け算と1つの加算を必要とし、各々
1サイクルが必要だからである。従来型プロセッサは8
命令を必要とするが、好ましい実施例のFPU26は唯
4つを必要とするのみである。
This sequence is repeated without stopping again for the previously given eight data and eight coefficient operations. The throughput in the above example is a multiplication-accumulation operation by one every cycle, and as a result, the number of effective cycles is eight in the example of eight data and eight coefficients. Conventional processors using the same loop unrolling technique require 16 operations for 8 data and 8 coefficient problems, but each operation simply requires one multiplication and one addition, and each cycle takes one cycle. Because it is necessary. 8 conventional processors
Although requiring instructions, the FPU 26 of the preferred embodiment requires only four.

【0100】本発明の特定の実施例を説明してきたが、
本発明がそれに限定されるものではなく、多くの修正及
び追加を本発明の範囲の中で行えることは明らかであろ
う。例えば、提出された実施例では物理的に分離されて
いるコプロセッサを具備したCPUに関連して説明して
きたが、これは必須の要件では無い。例えば浮動小数点
ユニットを主プロセッサの中に具備することも可能であ
る。更に、以下の関連する特許請求の項の特徴を、独立
した請求項の特徴と本発明の範囲から逸脱することなく
種々組み合わせることも出来るであろう。
Having described certain embodiments of the invention,
It will be apparent that the invention is not so limited and that many modifications and additions can be made within the scope of the invention. For example, while the preferred embodiment has been described with reference to a CPU having a physically separate coprocessor, this is not a requirement. For example, a floating point unit could be included in the main processor. Furthermore, the features of the following related claims could be variously combined with the features of the independent claims without departing from the scope of the invention.

【図面の簡単な説明】[Brief description of the drawings]

【図1】図1は本発明の好ましい実施例に基づくデータ
処理装置の構成要素を図示するブロック図である。
FIG. 1 is a block diagram illustrating components of a data processing apparatus according to a preferred embodiment of the present invention.

【図2】図2は本発明の好ましい実施例に基づくFPU
コプロセッサの構成要素を図示するブロック図である。
FIG. 2 shows an FPU according to a preferred embodiment of the present invention.
FIG. 2 is a block diagram illustrating components of a coprocessor.

【図3】図3は図2のデータ経路構成要素ブロックを更
に詳細に図示するブロック図である。
FIG. 3 is a block diagram illustrating the data path component blocks of FIG. 2 in further detail.

【図4】図4は本発明の好ましい実施例に基づき仮数を
処理するために使用されるデータ経路論理の構成要素を
図示するブロック図で、パイプラインの段E1内の仮数
処理を示す。
FIG. 4 is a block diagram illustrating the components of the data path logic used to process the mantissa in accordance with a preferred embodiment of the present invention, showing the mantissa processing in stage E1 of the pipeline.

【図5】図5は本発明の好ましい実施例に基づき仮数を
処理するために使用されるデータ経路論理の構成要素を
図示するブロック図で、パイプラインの段E2内の仮数
処理を示す。
FIG. 5 is a block diagram illustrating the components of the data path logic used to process the mantissa in accordance with a preferred embodiment of the present invention, illustrating the mantissa processing in stage E2 of the pipeline.

【図6】図6は本発明の好ましい実施例に基づき仮数を
処理するために使用されるデータ経路論理の構成要素を
図示するブロック図で、パイプラインの段E3内の仮数
処理を示す。
FIG. 6 is a block diagram illustrating the components of the data path logic used to process the mantissa in accordance with a preferred embodiment of the present invention, showing the mantissa processing in stage E3 of the pipeline.

【図7】図7は本発明の好ましい実施例に基づき仮数を
処理するために使用されるデータ経路論理の構成要素を
図示するブロック図で、パイプラインの段E4内の仮数
処理を示す。
FIG. 7 is a block diagram illustrating components of data path logic used to process mantissas according to a preferred embodiment of the present invention, showing mantissa processing in stage E4 of the pipeline.

【図8】図8は本発明の好ましい実施例に基づき指数を
処理するために使用されるデータ経路論理の構成要素を
図示するブロック図で、パイプラインの段E1内の指数
処理を示す。
FIG. 8 is a block diagram illustrating components of data path logic used to process exponents in accordance with a preferred embodiment of the present invention, illustrating exponent processing within stage E1 of the pipeline.

【図9】図9は本発明の好ましい実施例に基づき指数を
処理するために使用されるデータ経路論理の構成要素を
図示するブロック図で、パイプライン内の段E1からE
4での指数処理の流れを示す。
FIG. 9 is a block diagram illustrating the components of the data path logic used to process the exponent in accordance with a preferred embodiment of the present invention, the stages E1 through E in the pipeline;
4 shows the flow of exponential processing.

【図10】図10は本発明の好ましい実施例で使用され
る、浮動小数点演算の結果に適用される丸め値を決定す
るための、決定論理を図示する。
FIG. 10 illustrates decision logic used in a preferred embodiment of the present invention to determine a rounding value to be applied to the result of a floating point operation.

【符号の説明】[Explanation of symbols]

22 データ処理システム 24 主プロセッサ 26 浮動小数点ユニット(FPU)コプロセッサ 28 キャシュメモリ 30 主メモリ 32 入出力システム 34 主バス 36 コプロセッサバス 100 データ経路論理 110 制御回路 120 掛け算器 130 加算器 140 丸め論理 150 決定論理 160 データ経路構成要素ブロック 170 レジスタファイル 180 コプロセッサインタフェース 200 掛け算器 210,220,230,240 レジスタ 250 積加算器 260 付着加算器 270 付着ビット生成器 320 被加算数マルチプレクサ 330 加算数マルチプレクサ 350,360 レジスタ 370 反転器 380 マルチプレクサ 390 整列シフト器 450 合計加算器 457 整列シフト器 460 反転器 465 マルチプレクサ 500 更新器 510 丸め選択マルチプレクサ 520 正規化器 600 積指数加算器 610 指数選択マルチプレクサ 620 反転器 630 加算器 670,680,690 レジスタ 700 指数調整加算器 710 マルチプレクサ 720 指数更新器 730 最終指数選択マルチプレクサ 800 第一変換器 810 第二変換器 830 第三変換器 22 Data Processing System 24 Main Processor 26 Floating Point Unit (FPU) Coprocessor 28 Cache Memory 30 Main Memory 32 Input / Output System 34 Main Bus 36 Coprocessor Bus 100 Data Path Logic 110 Control Circuit 120 Multiplier 130 Adder 140 Rounding Logic 150 Decision logic 160 Data path component block 170 Register file 180 Coprocessor interface 200 Multiplier 210, 220, 230, 240 Register 250 Product adder 260 Adhesive adder 270 Adhesive bit generator 320 Addend multiplexer 330 Addend multiplexer 350, 360 Register 370 Inverter 380 Multiplexer 390 Alignment shifter 450 Sum adder 457 Alignment shifter 460 Inverter 465 Multiplex Kusa 500 Updater 510 Rounding Select Multiplexer 520 Normalizer 600 Product Exponent Adder 610 Exponent Selector Multiplexer 620 Inverter 630 Adder 670,680,690 Register 700 Exponent Adjustment Adder 710 Multiplexer 720 Exponent Updater 730 Final Exponent Selector 800 First converter 810 Second converter 830 Third converter

───────────────────────────────────────────────────── フロントページの続き (72)発明者 デビッド ターレンス マセニイ アメリカ合衆国 テキサス,オースチン, バックソーン ドライブ 10706 ──────────────────────────────────────────────────続 き Continuing on the front page (72) Inventor David Tarence Masenii United States Texas, Austin, Buckthorn Drive 10706

Claims (16)

【特許請求の範囲】[Claims] 【請求項1】 掛け算・累積演算A+(B*C)を、前
記掛け算・累積演算を同定する単一命令に応答して実行
するためのデータ処理装置であって:値BとCを掛け算
して丸められていない掛け算結果を生成し、更に丸めを
決定するために必要な第一データを生成するように構成
されている1つの掛け算器と;丸められていない掛け算
結果を値Aに加算し丸められていない掛け算累積結果を
生成し、更に丸めを決定するために必要な第二データを
生成するように構成されている1つの加算器と;第一及
び第二データを用いて、丸めを組み込まれた掛け算命令
と、それに続く丸めを組み込まれた個別の加算命令を個
別に実行するのと同等の最終掛け算・累積演算結果を生
成するために必要な1つまたは複数の丸め値を決定する
ための決定論理と;そして最終掛け算・累積演算結果を
生成するために1つまたは複数の丸め値を供給するため
の丸め論理とを含む、前記データ処理装置。
1. A data processing device for performing a multiply / accumulate operation A + (B * C) in response to a single instruction identifying said multiply / accumulate operation, comprising: multiplying values B and C; A multiplier configured to generate a non-rounded multiplied result and further generate first data required to determine the rounding; and add the unrounded multiplied result to the value A. An adder configured to generate an unrounded multiply-accumulate result and further to generate second data required to determine the rounding; and Determine one or more rounding values required to produce a final multiply-accumulate result equivalent to separately executing the embedded multiply instruction followed by a separate add instruction with rounding incorporated. Decision logic for; And a rounding logic for providing one or more rounded values to generate a final multiply / accumulate operation result.
【請求項2】 請求項1記載のデータ処理装置に於い
て、決定論理が最終掛け算累積結果を生成するために、
丸められていない掛け算累積結果を丸め論理に適用し単
一丸め値を生成するように構成されている、前記データ
処理装置。
2. The data processing apparatus according to claim 1, wherein the decision logic generates a final multiply-accumulate result.
The data processing apparatus, wherein the data processing apparatus is configured to apply a non-rounded multiply-accumulate result to rounding logic to generate a single rounded value.
【請求項3】 請求項1記載のデータ処理装置に於い
て、掛け算器により生成された第一データがガード及び
付着ビットを含み、決定論理がこの第一データから掛け
算器丸め値を決定するための第一論理を含む、前記デー
タ処理装置。
3. The data processing apparatus of claim 1, wherein the first data generated by the multiplier includes a guard and a sticky bit, and the decision logic determines a multiplier round value from the first data. The data processing device, comprising:
【請求項4】 請求項3記載のデータ処理装置に於い
て、第一データが更に掛け算結果の1つまたは複数の最
下位ビットを含む、前記データ処理装置。
4. The data processing device according to claim 3, wherein the first data further includes one or more least significant bits of a multiplication result.
【請求項5】 請求項3記載のデータ処理装置に於い
て、決定論理が更に第二論理を含み、これが掛け算器丸
め値と第二データから1つまたは複数の丸め値を決定す
るためのものである、前記データ処理装置。
5. The data processing apparatus according to claim 3, wherein the decision logic further comprises a second logic for determining one or more round values from the multiplier round value and the second data. The data processing device described above.
【請求項6】 請求項1記載のデータ処理装置に於い
て、加算器が、値Aと掛け算結果の小さい方を、加算を
実行する前に整列させるための整列シフト器と、整列シ
フト器でシフトアウトされたビットが全て1であるか全
て0であるかを検出するための検出ユニットとを含む、
前記データ処理装置。
6. The data processing apparatus according to claim 1, wherein the adder includes an alignment shifter for aligning a smaller one of the multiplication result and the value A before performing the addition. A detection unit for detecting whether the shifted out bits are all ones or all zeros.
The data processing device.
【請求項7】 請求項6記載のデータ処理装置に於い
て、加算器で生成された第二データがガードおよび丸め
ビット、検出ユニットの出力、及び丸められていない掛
け算累積結果の最下位ビットの一群を含む、前記データ
処理装置。
7. The data processing apparatus according to claim 6, wherein the second data generated by the adder includes a guard and a round bit, an output of the detection unit, and a least significant bit of an unrounded multiplication and accumulation result. The data processing device includes a group.
【請求項8】 請求項1記載のデータ処理装置に於い
て、掛け算器が部分結果を桁上げ保存形式で生成するた
めの掛け算ユニットと、掛け算結果を生成するための積
加算器とを含む、前記データ処理装置。
8. The data processing apparatus according to claim 1, wherein the multiplier includes a multiplication unit for generating the partial result in a carry-save format, and a product adder for generating the multiplication result. The data processing device.
【請求項9】 請求項8記載のデータ処理装置に於い
て、掛け算器が更に掛け算ユニットで生成された部分積
の一群の最下位ビットを一緒に加算するための付着加算
器と、付着加算器の出力からガード及び付着ビットを生
成するためのガード及び付着ビット生成器とを含む、前
記データ処理装置。
9. The data processing apparatus according to claim 8, wherein the multiplier further adds together a group of least significant bits of a group of partial products generated by the multiplying unit, A guard and sticky bit generator for generating guard and sticky bits from the output of the data processing apparatus.
【請求項10】 請求項1記載のデータ処理装置に於い
て、丸められていない掛け算累積結果が仮数と指数を含
み、データ処理装置が更に仮数をインクリメントするた
めの更新器を含み、丸め論理が最終掛け算累積結果の最
終仮数として仮数またはインクリメントされた仮数のい
ずれかを、決定論理で生成された1つまたは複数の丸め
値の1つに依存して出力するためのマルチプレクサを含
む、前記データ処理装置。
10. The data processing device of claim 1, wherein the unrounded multiply-accumulate result includes a mantissa and an exponent, the data processing device further includes an updater for incrementing the mantissa, and the rounding logic is A data multiplexer comprising: a multiplexer for outputting either a mantissa or an incremented mantissa as a final mantissa of a final multiplication accumulation result depending on one of one or a plurality of rounded values generated by the decision logic. apparatus.
【請求項11】 請求項10記載のデータ処理装置に於
いて、前記1つの丸め値が、仮数またはインクリメント
された仮数のいずれが最終仮数として出力されるべきか
を指示するためにマルチプレクサに入力される最終更新
信号を含む、前記データ処理装置。
11. The data processing apparatus according to claim 10, wherein said one rounded value is input to a multiplexer to indicate whether a mantissa or an incremented mantissa is to be output as a final mantissa. The data processing device including a final update signal.
【請求項12】 請求項11記載のデータ処理装置に於
いて、丸め論理が更に、仮数をインクリメントした結果
がオーバーフローした場合に指数をインクリメントする
ための指数更新論理を含み、インクリメントされた仮数
が最終仮数として選択される、前記データ処理装置。
12. The data processing apparatus according to claim 11, wherein the rounding logic further includes exponent update logic for incrementing the exponent when the result of incrementing the mantissa overflows, and the incremented mantissa is used as the final mantissa. The data processing device, wherein the data processing device is selected as a mantissa.
【請求項13】 請求項1記載のデータ処理装置に於い
て、決定論理が第一変換器を含み、第一変換器が加算器
で生成された第二データを受信し、加算器によって丸め
られていない掛け算累積結果に適用された右シフト正規
化を補償する、前記データ処理装置。
13. The data processing apparatus according to claim 1, wherein the decision logic includes a first converter, the first converter receiving the second data generated by the adder, and the second data being rounded by the adder. Said data processing apparatus for compensating for a right shift normalization applied to unmultiplied accumulation results.
【請求項14】 請求項13記載のデータ処理装置に於
いて、決定論理が第一データから掛け算器丸め値を決定
するように構成されており、また決定論理が更に掛け算
器丸め値を第一変換器回路の出力に適用する第二変換器
を含む、前記データ処理装置。
14. The data processing apparatus of claim 13, wherein the decision logic is configured to determine a multiplier round value from the first data, and wherein the decision logic further determines the multiplier round value. The data processing apparatus further comprising a second converter applied to an output of the converter circuit.
【請求項15】 請求項14記載のデータ処理装置に於
いて、決定論理が更に第三変換器を含み、これが予め定
められた丸め公式を第二変換器から出力された信号に適
用して1つまたは複数の丸め値を生成するためのもので
ある、前記データ処理装置。
15. The data processing apparatus according to claim 14, wherein the decision logic further comprises a third converter which applies a predetermined rounding formula to the signal output from the second converter. The data processing device for generating one or more rounded values.
【請求項16】 掛け算・累積演算A+(B*C)を前
記掛け算・累積演算を同定する単一命令に応答して実行
するための方法であって:値BとCとを掛け算して丸め
られていない掛け算結果を生成し、丸め決定に必要な第
一データを生成し;丸められていない掛け算結果を値A
に加算して丸められていない掛け算・累積結果を生成
し、丸め決定に必要な第二データを生成し;第一及び第
二データを用いて、丸めを組み込まれた掛け算命令を実
行し、続いて丸めを組み込まれた個別の加算命令を個別
に実行したのと等価な最終掛け算・累積結果を生成する
ために必要な1つまたは複数の丸め値を決定し;そして
1つまたは複数の丸め値を適用して最終掛け算・累積結
果を生成する、以上を含む、前記方法。
16. A method for performing a multiply / accumulate operation A + (B * C) in response to a single instruction identifying said multiply / accumulate operation, comprising: multiplying values B and C and rounding. Generating an unrounded multiplication result and generating first data required for a rounding decision;
To generate an unrounded multiply-accumulate result and generate second data required for the rounding decision; using the first and second data to execute a multiplication instruction incorporating rounding; Determining one or more rounding values required to produce a final multiply-accumulate result equivalent to individually executing individual add instructions with embedded rounding; and one or more rounding values Generating a final multiplication / accumulation result.
JP14866499A 1998-05-27 1999-05-27 Data processing apparatus and method for executing multiplication / accumulation operations Expired - Lifetime JP4166367B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/084,304 US6282634B1 (en) 1998-05-27 1998-05-27 Apparatus and method for processing data having a mixed vector/scalar register file
US084304 1998-08-28
US144264 1998-08-31
US09/144,264 US6360189B1 (en) 1998-05-27 1998-08-31 Data processing apparatus and method for performing multiply-accumulate operations

Publications (2)

Publication Number Publication Date
JP2000010959A true JP2000010959A (en) 2000-01-14
JP4166367B2 JP4166367B2 (en) 2008-10-15

Family

ID=26770832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14866499A Expired - Lifetime JP4166367B2 (en) 1998-05-27 1999-05-27 Data processing apparatus and method for executing multiplication / accumulation operations

Country Status (2)

Country Link
JP (1) JP4166367B2 (en)
GB (1) GB2339936B (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149402A (en) * 2000-11-14 2002-05-24 Pacific Design Kk Data processor and method for controlling the same
JP2006221622A (en) * 2005-02-09 2006-08-24 Internatl Business Mach Corp <Ibm> System and method for floating point unit with feedback prior to normalization and rounding
JP2011086133A (en) * 2009-10-16 2011-04-28 Fujitsu Ltd Floating-point adder

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4969118A (en) * 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add
EP0472148B1 (en) * 1990-08-24 2001-05-09 Matsushita Electric Industrial Co., Ltd. Method and apparatus for computing floating point data
GB2291515B (en) * 1994-07-14 1998-11-18 Advanced Risc Mach Ltd Data processing using multiply-accumulate instructions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149402A (en) * 2000-11-14 2002-05-24 Pacific Design Kk Data processor and method for controlling the same
JP2006221622A (en) * 2005-02-09 2006-08-24 Internatl Business Mach Corp <Ibm> System and method for floating point unit with feedback prior to normalization and rounding
JP2011086133A (en) * 2009-10-16 2011-04-28 Fujitsu Ltd Floating-point adder

Also Published As

Publication number Publication date
GB2339936A (en) 2000-02-09
GB9908542D0 (en) 1999-06-09
GB2339936B (en) 2002-09-25
JP4166367B2 (en) 2008-10-15

Similar Documents

Publication Publication Date Title
US6360189B1 (en) Data processing apparatus and method for performing multiply-accumulate operations
US8965945B2 (en) Apparatus and method for performing floating point addition
US5963461A (en) Multiplication apparatus and methods which generate a shift amount by which the product of the significands is shifted for normalization or denormalization
US6904446B2 (en) Floating point multiplier/accumulator with reduced latency and method thereof
JP4418578B2 (en) Data processing apparatus and method for applying floating point arithmetic to first, second and third operands
JP4953644B2 (en) System and method for a floating point unit providing feedback prior to normalization and rounding
KR100302686B1 (en) Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instructions
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
US5357237A (en) In a data processor a method and apparatus for performing a floating-point comparison operation
JPH06236257A (en) Method and apparatus for post-normalization at inside of floating-point execution unit in data processor
JPH02294819A (en) Floating point arithmetic processor
CN107608655B (en) Method for executing FMA instruction in microprocessor and microprocessor
JPH04227531A (en) Pipeline floating-point processor
JPH04227530A (en) Floating-point processor
JPH02294820A (en) Floating point arithmetic processor and arithmetic processing
US11068238B2 (en) Multiplier circuit
Schwarz et al. FPU implementations with denormalized numbers
EP2109038B1 (en) Apparatus and method for optimizing the performance of X87 floating point addition instructions in a microprocessor
JPH0542013B2 (en)
Quinnell et al. Bridge floating-point fused multiply-add design
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
JP2006228190A (en) Data processor and data processing method performing reciprocal operation on input value for producing result value
US6701427B1 (en) Data processing apparatus and method for processing floating point instructions
US7054898B1 (en) Elimination of end-around-carry critical path in floating point add/subtract execution unit
JP3803438B2 (en) Floating point multiplication and accumulator

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080616

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080711

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080730

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120808

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130808

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term