JP4166367B2 - 掛け算・累積演算実行用データ処理装置並びに方法 - Google Patents
掛け算・累積演算実行用データ処理装置並びに方法 Download PDFInfo
- Publication number
- JP4166367B2 JP4166367B2 JP14866499A JP14866499A JP4166367B2 JP 4166367 B2 JP4166367 B2 JP 4166367B2 JP 14866499 A JP14866499 A JP 14866499A JP 14866499 A JP14866499 A JP 14866499A JP 4166367 B2 JP4166367 B2 JP 4166367B2
- Authority
- JP
- Japan
- Prior art keywords
- rounding
- multiplication
- data processing
- processing apparatus
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation 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)
Description
【発明の属する技術分野】
本発明は掛け算累積演算実行用データ処理装置並びに方法に関する。
【0002】
【従来の技術】
データ処理装置では種々の浮動小数点演算をデータ上で実行する事を要求されるのが一般的である。その様な浮動小数点計算が種々のデータ処理装置で一定の方法で取り扱えることを保証するために、1つの標準が1985年、“バイナリ浮動小数点算術に関するIEEE標準”、ANSI/IEEE標準754−1985、電気電子技術者協会(IEEE)社、ニューヨーク、10017(これ以降IEEE754−1985標準とよぶ)に制定されている。この標準は中でも掛け算演算が丸め演算で終了すべきこと、また同様に加算または累積演算も丸め演算で終了すべきことを定めている。このIEEE754−1985標準は更に、IEEE754−1985標準に適合すると考えられる丸め演算の回数の定義も提供している。
【0003】
汎用目的プロセッサは浮動小数点計算性能に合致していないことが知られており、従ってその様な計算を取り扱うために特殊浮動小数点ユニット(FPU)が開発されている。
【0004】
一般的に要求される特別な浮動小数点計算の1つは掛け算・累積演算であり、ここでは2つの数が互いに掛け算され、その積が第三数に加算される。掛け算・累積演算はIEEE754−1985標準では特に議論されておらず、掛け算と累積演算とが個別に議論されている。もちろん掛け算・累積演算は掛け算命令に続いて別の累積命令を実行することにより実現できるが、その様なやり方は相対的に遅くなる。
【0005】
従って、高速に掛け算・累積演算を実行するように特別に構成されたFPUを開発することに大きな関心が存在する。この様なFPUの1例がUS−A−4,969,118に開示されており、これはIBMで開発された掛け算・累積演算を実行するためのFPUを説明している。IBM技術によれば、部分掛け算器が2つの数の部分積を生成し、この部分積が加算回路に送られて第三数と加算される。従って掛け算・累積演算は‘融合’されており、掛け算の結果は累積演算の前に別個に決定されることは無い。このやり方は掛け算・累積演算の速度を飛躍的に向上させる。
【0006】
更に掛け算は掛け算からの全てのビット(n*nビットの掛け算では2nビット)を含む内部精度で実行され、続いて累積は掛け算ビットの全てを用いて実行される。これは掛け算の結果に対してそれが後続の累積で使用される前に丸めが行われていないので、特に正確な結果を与える。しかしながらこの技術はIEEE754−1985標準に適合していない、それはこの標準は掛け算結果に対して丸め演算が実行されるべき事を定めているからである。
【0007】
掛け算・累積演算速度を向上させそして/または回路の複雑さを軽減するために、特に設計されたFPUの別の例がUS−A−5,241,493, US−A−5,375,078, US−A−5,530,663 及び EP−A−0,645,699, US−A−4,866,652 及び US−A−4,841,467に記載されている。これらのドキュメントの何れも丸めに関して触れておらず、特に何れもIEEE754−1985標準に適合した結果を算出することに関心を払っていない。
【0008】
MIPS R10000製品の中で使用されている、これに代わるやり方は掛け算器と加算器を別の論理ユニットとして保持するものである。掛け算・累積演算を実行する際、丸めが掛け算器ユニットの出力に施され、続いて加算器論理ユニットに入力され、その加算器論理ユニットの結果もまた丸められる。これはIEEE754−1985に適合する結果を掛け算・累積演算に対して得られるが、掛け算・累積演算を実行するために特別に構成された特殊論理ユニットから得られる速度的利益は確保できない。
【0009】
【発明が解決しようとする課題】
本発明の目的は、単一命令に応答して掛け算・累積演算を効率的に実行しながら、丸めを組み込まれた個別の掛け算命令を実行し、続いて丸めを組み込まれた加算命令を実行するのと等価な結果が得られる、データ処理装置並びに方法を提供することである。
【0010】
【課題を解決するための手段】
従って本発明は、掛け算・累積演算A+(B*C)を、前記掛け算・累積演算を同定する単一命令に応答して実行するためのデータ処理装置を提供し:値BとCを掛け算して丸められていない掛け算結果を生成し、更に丸めを決定するために必要な第一データを生成するように構成されている1つの掛け算器と;丸められていない掛け算結果を値Aに加算して丸められていない掛け算累積結果を生成し、更に丸めを決定するために必要な第二データを生成するように構成されている1つの加算器と;第一及び第二データを用いて、丸めを組み込まれた個別の掛け算命令と、それに続く丸めを組み込まれた個別の加算命令を実行するのと同等の最終掛け算・累積演算結果を生成するために必要な1つまたは複数の丸め値を決定するための決定論理と;そして最終掛け算・累積演算結果を生成するために1つまたは複数の丸め値を供給するための丸め論理とを含む。
【0011】
本発明によれば、値BとCを掛け算することにより丸められていない掛け算結果を生成し、更に丸めを決定するために必要な第一データを生成するための掛け算器が具備されている。同様に値Aを丸められていない結果に加算して丸められていない掛け算・累積演算結果を生成し、更に丸めを決定するために必要な第二データを生成するための加算器が具備されている。次に、決定論理は第一及び第二データを用いて、丸めを組み込まれた個別の掛け算命令と、それに続く丸めを組み込まれた個別の加算命令を実行したのと等価な最終掛け算・累積演算結果を生成するために必要な1つまたは複数の丸め値を決定するように構成されている。
【0012】
このやり方により、IEEE754−1985標準に適合した結果を生成し、掛け算・累積命令を高速で実行できる専用掛け算・累積論理を提供することが出来る。
【0013】
1つの実施例では、決定論理は加算演算中の適切なステップで供給される複数の丸め値を決定するように構成できる。しかしながら提出された実施例では、決定論理は丸め論理によって丸められていない掛け算・累積結果に供給され、最終掛け算・累積結果を生成するための単一丸め値を生成するように構成されている。このやり方は掛け算・累積演算の実行速度を更に改善する。
【0014】
好ましい実施例に於いて、掛け算器で生成された第一データはガード及び付着ビットを含み、決定論理は第一データから掛け算器丸め値を決定するための第一論理を含む。更に第一データは好適に、1つまたは複数の掛け算結果の最下位ビットを含み、これはまた掛け算器丸め値を生成する中で使用される。この様な提出された実施例に於いて、決定論理は更に1つまたは複数の丸め値を、掛け算器丸め値と第二データとから決定するための第二論理を含む。
【0015】
好ましい実施例に於いて、加算器は加算を実行する前に値Aと掛け算結果の小さい方を整列させるための整列シフト器(alignment shifter)と、また整列シフト器でシフトアウトされたビットが全て1であるかまたは全てゼロであるかを検出するための検出ユニットを含む。この実施例に於いて、加算器で生成された第二データは、好適にガード及び丸めビットと検出ユニットの出力とを含む。
【0016】
掛け算器を多数の方法で構成できることは明らかであろう。しかしながら、好ましい実施例に於いて、掛け算器は桁上げ保存形式で部分結果を生成するための掛け算ユニットと、掛け算結果を生成するための積加算器とを含む。更に掛け算器は好適に掛け算ユニットで生成された部分積の一群の最下位ビットを互いに加算するための付着加算器と、付着加算器の出力からガード及び付着ビットを生成するためのガード及び付着ビット生成器とを含む。
【0017】
理解されるであろうが、多数のやり方で最終掛け算・累積結果を1つまたは複数の丸め値を用いて生成することが可能である。好ましい実施例に於いて、値A,B及びCは仮数と指数とで構成され、これらは別々に取り扱われる。従って提出された実施例に於いて、丸められていない掛け算・累積結果は仮数と指数とを含み、データ処理装置は更に仮数をインクリメントするための更新器(incrementer)を含み、そして丸め論理は仮数またはインクリメントされた仮数のいずれかを最終掛け算・累積結果として、決定論理で生成された前記1つまたは複数の丸め値の1つに依存して出力するためのマルチプレクサを含む。この様な提出された実施例に於いて、1つの丸め値は好適にマルチプレクサに入力される最終インクリメント信号を含み、これは仮数またはインクリメントされた仮数のどちらが最終仮数として出力されるべきかを示す。
【0018】
理解されるように、仮数を更新する際にオーバーフロー条件が生じる可能性がある。これを説明するために、丸め論理は好適に更に仮数をインクリメントした結果がオーバーフローする場合に指数をインクリメントするための指数更新論理を含み、インクリメントされた仮数が最終仮数として選択される。
【0019】
好ましい実施例に於いて、決定論理は第一変換器を含み、これは加算器で生成された第二データを受信し、丸められていない掛け算・累積結果に対して加算器が行った右シフト正規化を補償する。更に、決定論理は好適に第一データから掛け算器丸め値を決定するように構成され、また決定論理は好適に更に掛け算器丸め値を第一変換器回路の出力に供給するための第二変換器を含む。この様な実施例に於いて、決定論理は好適に更に第三変換器を含み、これは第二変換器からの信号出力に予め定められた丸め公式を適用し、1つまたは複数の丸め値を生成する。
【0020】
第二の特徴に鑑み、本発明は掛け算・累積演算A+(B*C)を前記掛け算・累積演算を同定する単一命令に応答して実行するための方法を提供しており、これは:値BとCとを掛け算して丸められていない掛け算結果を生成し、そして丸め決定に必要な第一データを生成し;丸められていない掛け算結果を値Aに加算して丸められていない掛け算・累積結果を生成し、そして丸め決定に必要な第二データを生成し;第一及び第二データを用いて、丸めを組み込まれた個別の掛け算命令を実行し、続いて丸めを組み込まれた個別の加算命令を実行したのと等価な最終掛け算・累積結果を生成するために必要な1つまたは複数の丸め値を決定し;そして1つまたは複数の丸め値を適用して最終掛け算・累積結果を生成する、以上で構成されている。
【0021】
【発明の実施の形態】
本発明を添付図に図示された提出された実施例を単なる例としてのみ参照しながら、更に説明する。
【0022】
図1はデータ処理システム22を図示し、主プロセッサ24,浮動小数点ユニット(FPU)コプロセッサ26、キャシュメモリ28、主メモリ30および入出力システム32を含む。主プロセッサ24、キャシュメモリ28、主メモリ30及び入出力システム32は主バス34を経由してリンクされている。コプロセッサバス36は主プロセッサ24を浮動小数点ユニットコプロセッサ26にリンクしている。
【0023】
動作に際して、主プロセッサ24(またARMコアと参照される)は、キャシュメモリ28、主メモリ30及び入出力システム32との相互作用を含む一般的型式のデータ処理操作を制御するデータ処理命令のストリームを実行する。データ処理命令のストリームの中にはコプロセッサ命令が組み込まれている。主プロセッサ24はこれらのコプロセッサ命令が、付属のコプロセッサで実行されるべきものとして認識する。従って主プロセッサ24はこれらのコプロセッサ命令をコプロセッサバス36上に発行し、そこからこれらは付属のコプロセッサで受信される。この場合FPUコプロセッサ26は全ての受信されたコプロセッサ命令を受容し、検出されたものが意図するように実行する。この検出はコプロセッサ命令内のコプロセッサ番号フィールドを介して行われる。
【0024】
図2は図1のFPUコプロセッサ26を更に詳細に図示するブロック図である。図2に図示されるように、FPU26は浮動小数点演算を実行するためのデータ経路構成要素ブロック160、コプロセッサバス36を経由して主プロセッサ24とインタフェースするためのコプロセッサインタフェース180、及び特に浮動小数点演算用の入力値と浮動小数点演算の結果を格納するためのレジスタファイル170とを有する。
【0025】
浮動小数点命令が主プロセッサからFPU26へ通される際に、これはコプロセッサインタフェース180で受信され、これは浮動小数点命令がFPU26で処理できるか否かを判定する。従って何らかの理由でデータ経路構成要素ブロック160が新たな命令が受信された時点で、その新たな命令の実行を開始できない場合、従ってコプロセッサインタフェース180は主プロセッサに通知する。しかしながら、命令を実行できると判断すると、コプロセッサインタフェース180は制御信号を生成し、データ経路構成要素ブロック160に送って浮動小数点演算を開始させる。
【0026】
浮動小数点演算を実行する前に、この演算用の入力値はデータバスを介してレジスタファイル170に通される。次にコプロセッサインタフェース180は制御信号をレジスタファイル170に送信して、この入力値を適切なソースレジスタに中に格納させる。
【0027】
浮動小数点演算が開始されるとき、ソースレジスタの内容はレジスタファイル170からデータ経路構成要素ブロック160へ出力される。更に、浮動小数点演算が完了すると、その結果はデータ経路構成要素ブロックから、適切な行き先レジスタに格納されるようにレジスタファイル170に送られる。
【0028】
図3は図2のデータ経路構成要素ブロック160を更に詳細に図示するブロック図である。データ経路構成要素ブロック160はデータ経路論理100と制御回路110とで構成されている。データ経路論理100は値BとCとを掛け算して掛け算結果を生成するための掛け算器120と値Aを掛け算結果に加算するための加算器130とを有する。更に丸め論理140が、加算器130の出力である掛け算累積結果の値に丸めを施すために具備されている。
【0029】
制御回路110はFPU26で実行されるべき命令(例えば加算、掛け算、または掛け算累積)を識別するためのデータと演算用の入力(例えば、A,B及びC)を受信し、種々の制御信号をデータ経路論理に送ることによりデータ経路論理100内の種々の論理構成要素の動作を制御する。更に、データ経路内の種々の点に於いてデータ経路論理は信号を制御回路に供給するように構成されており、それらは制御回路で適切な制御信号を生成するように使用される。これらの信号は図4から図9を参照して後ほど更に詳細に説明する。
【0030】
簡明にするために丸めに関連するデータ経路と制御論理との間の信号伝送のみが図2及び図3に図示されている。従って掛け算器120は丸め決定のために必要な第一データ信号を、制御回路110内の決定論理150に送り、また同様に加算器130は丸め決定に必要な第二データ信号を決定論理150に提供する。続いて決定論理150はこれらのデータ信号を使用して丸め値を生成し、それをデータ経路論理100内の丸め論理140に出力する。続いて丸め論理140は丸め値を用いて最終掛け算累積結果を生成する。
【0031】
後ほど更に詳しく説明するように、決定論理は丸め値が丸め論理140から供給された際に、掛け算・累積結果が丸めを組み込まれた個別の掛け算命令と、それに続く丸めを組み込まれた個別の加算命令を実行して得られた結果と等価になることを保証するように丸め値を生成するように構成されている。
【0032】
本発明の好ましい実施例に基づけば、FPU26は浮動小数点掛け算・累積連鎖(FMAC: floating point multiply-accumulate chained)演算を実行するように構成されており、ここで掛け算・累積演算は掛け算と累積との間での効果的な丸めを具備して実行される。提出された実施例に於いて、実行段E1からE4を有する4段パイプラインが採用されている。提出された実施例に於いて、掛け算・累積演算に際して各々の段で実行される演算は以下の通りである:
E1:
・乗数(Mant(C))と被乗数(Mant(B))の仮数を掛け算し、冗長形式で結果を生成する。
・乗数と被乗数の指数を合計し積の指数を形成する。
・これを被加算数の指数と比較し、被加算数または積の大きな方のオペランドを選び、小さい方のオペランドに対するシフト数を計算する。
E2:
・掛け算結果の2つの部分を合計し、非冗長形式とする。
・被加算数と積の小さい方を整列シフト器に接続されているレジスタに接続する。
・被加算数と積の大きな方を、被加算数反転マルチプレクサ(augent negate maltiplexer)に接続されているレジスタに接続する。
・正しい丸めとするために積をインクリメントする必要が有るかを計算する。
E3:
・被加算数と積の小さい方をシフトし、大きな方の加算数と整列させる。
・演算が実質引き算の場合、被加算数を反転する。
・小さな方と大きな方の加算数を加算する。
E4:
・合計値内の先頭1及び0の位置を計算する。
・掛け算丸め計算と加算丸め計算から、丸めが必要かを計算する。
・必要で有れば合計値をインクリメントする。
・合計値を正規化する。
・最終指数を計算し、合計値が計算または丸めの中でオーバーフローする場合、指数をインクリメントする。
【0033】
先に概要を示したFMACアーキテクチャはIEEE754−1985標準と矛盾せず、同一丸めモードを使用して共に丸めを施された浮動小数点掛け算に続いて浮動小数点加算を行ったのと同様のビットレベルで一致する結果を生成する。FMACアーキテクチャのサイクル総数は、先に説明した従来技術によるIBM手法よりもたった1つ大きいだけで、一方スループットは単精度演算に対しては演算当たり1サイクル、そして倍精度に対しては演算当たり2サイクルを維持している。
【0034】
本発明の好ましい実施例に於いて、上記のFMACを実施するために使用されるデータ経路論理100を図4から図9を参照して更に詳細に説明する。図4から図7は入力値の仮数を処理するために使用されるデータ経路論理の構成要素を図示する図であり、一方図8と図9は入力値の指数を処理するために使用されるデータ経路論理の構成要素を図示する図である。
【0035】
図4はパイプラインの段E1中に仮数に対して実施される処理を図示する。値B及びCの仮数は掛け算器200に入力され、これは任意の既知の設計で構わず、この掛け算器は値BとCを互いに掛け算し、桁上げ保存形式で積を生成するように構成されている。合計データはレジスタ230へ出力され、桁上げデータはレジスタ240に出力される。一方で、値Aの仮数は直接レジスタ210に通される。更にAとBとの単純加算を行うために、値Bの仮数はまたレジスタ220に出力される。
【0036】
図8はパイプラインの段E1中に指数に対して実施される処理を図示する。値B及びCの指数は積指数加算器600に入力され、それらは此処で加算されて積指数を生成し、これは指数選択マルチプレクサ610に出力される。積指数はまたマルチプレクサ640に供給され、これは第二入力として値Bの指数を受信する。マルチプレクサ640は加算数指数選択信号を制御回路110から受信するように構成されており、これはどの入力がマルチプレクサ640から出力されるかを制御する。制御回路110は実行される演算型式を識別するデータを受信するので、加算数指数選択信号を生成してマルチプレクサ640が、AとBの単純加算演算が実行される場合は値Bの指数を選択し、または掛け算・累積演算が実行される場合は積指数を選択するように構成することができる。
【0037】
マルチプレクサ640からの出力は加算器630に通され、これはまた第二入力として値Aの指数を反転器620で反転されて入力するように構成されている。値Aの指数は反転されているので、加算器630は指数引き算器として動作し、従って経路655の上に2つの入力指数の間の差を識別する信号(これ以降ExpDiff信号と呼ぶ)を出力する。更に加算器630は経路650の上に値Aの指数がその他の入力指数よりも小さいか否かを示す信号を出力するように構成されている。このA_Smaller信号はExpDiff信号と共に制御回路に通され、データ経路論理用の後続の制御信号を生成するために制御回路で使用される。
【0038】
指数選択マルチプレクサ610は3つの入力、すなわちA指数、B指数及び積指数を受信する。指数選択マルチプレクサ610の目的は、実行されるべき演算に関連する最大指数を選択する事である。指数選択マルチプレクサ610は制御回路110で生成された制御信号で制御される。制御回路はどの演算が実行されるかを知っており、A_Smaller信号を加算器630から受信しているので、これは指数選択マルチプレクサ610への3つの入力のどれが出力されるべきかを決定するのに必要な全ての情報を持っている。従って、純粋加算演算が実行される場合、ExpMuxSelect信号はA指数またはB指数のどちらが出力されるべきかを、どちらが大きいか(A_Smaller信号で示されるように)に基づいて指示する。純粋掛け算演算が実行される場合、ExpMuxSelect信号が積指数を選択させるようにする。最後に掛け算累積演算が実行される場合、ExpMuxSelect信号はA指数または積指数のどちらが出力されるべきかを、どちらが大きいかに基づいて指示する。
【0039】
図9に示されるように、指数選択マルチプレクサ610からの出力はレジスタ670へ通される。パイプラインの段E2及びE3に於いて、この出力値はそれぞれ単にレジスタ680および690に通される。
【0040】
図5はパイプラインの段E2で実行される仮数処理を図示する。レジスタ230と240からの合計および桁上げデータはそれぞれ、合計及び桁上げデータの最上位ビットが積加算器250へ送られ、桁上げ及び保存データの最下位ビットが付着加算器260に送られるように分離される。
【0041】
付着加算器260への入力は互いに加算され、ガード及び付着ビット生成器270へ出力される。生成器270で決定されたガード及び付着ビットは続いて経路280の上を制御回路110へ出力される。付着加算器260への入力の加算結果がオーバーフローすると、オーバーフロービットが経路265の上を積加算器250へ通される。積加算器への入力は互いに加算され、経路265を介して受信された全てのオーバーフロービットを考慮に入れて積Pを生成する。この段で積Pは丸められておらず、また正規化されていない。
【0042】
積Pは被加算数マルチプレクサ320と加算数マルチプレクサ330とに供給され、これらのマルチプレクサはまた値AおよびBの仮数をそれぞれレジスタ210及び220から受信するように構成されている。積Pの最下位ビットの数、好ましい実施例ではビット0と1、は275の上を制御回路110へ出力される。当業者には理解されるように、経路275の上に出力された最下位ビットと経路280の上に出力されたガード及び付着ビットに基づいて、制御回路は掛け算結果Pが丸められるべきか否かを指示する丸め値(これ以降MulRoundと呼ぶ)を生成するように構成できる。しかしながら、制御回路はMulRoundを生成はするが、好ましい実施例に於いてこの段階では丸めは実行されない。
【0043】
加えて、Movfl信号が後ほど丸め中に制御回路で使用されるために経路285の上に出力され、このMovfl信号は積加算器250の出力がオーバーフローしている場合は論理1値を有し、積加算器250の出力がオーバーフローしていない場合は論理0値を有する。
【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は加算数マルチプレクサ330が値AとPの小さな方を選択させる。次に被加算数マルチプレクサ320と加算数マルチプレクサ330からの出力はレジスタ350と360の中に格納され、後ほどパイプラインの段E3の中で使用される。
【0045】
図6はパイプラインの段E3の中で実行される仮数処理を図示する。レジスタ360内に格納されているより小さな値は整列シフト器390へ通され、ここでより大きな値と整列されるようにシフトされる。これは制御回路110がShiftCount値を経路395経由で整列シフト器390へ提供することにより実現される。ShiftCount値はパイプラインの段E1での指数処理中にデータ経路論理100で出力されたExpDiff信号を用いて制御回路110で計算される。
【0046】
経路420の上に出された整列シフト器390の出力は、整列された小さい方の値、ガードビットおよび丸めビットで構成されている。ガードビットと丸めビットとは経路425の上を制御回路110に通され、一方整列された小さい方の値は経路430の上を合計値加算器450に通される。経路420の上の出力に加えて、整列シフト器390はまた経路400の上にシフト処理中にシフトアウトされたビットを出力する。これらのビットは論理405に入力され、これはビットが全てゼロかまたは全て1かを判定する。シフトアウトされた各々のビットがゼロだった場合、論理1値が経路410の上を出力され、一方シフトアウトされた各々のビットが1だった場合、論理1値が経路415の上を出力される。後ほど更に詳細に説明するように、これらの値は経路425上のガードおよび丸めビット出力と共に制御回路110で使用されて丸めを決定する。
【0047】
段E2の途中でレジスタ350の中に格納されている大きな方の値は、反転器370で反転されたその値の反転版と共にマルチプレクサ380に通される。制御回路110は命令と種々の入力信号の符号とから、累積論理が“異符号加算”(USA:unlike signed add)、例えばX−Yを実行するか否かを決定する。その場合は、制御回路は1の論理値を有する被加算数反転信号を出力して、マルチプレクサに反転された大きな方の値を選択させる。それ以外の場合は、被加算数反転信号は0の論理値を有し、マルチプレクサに反転されていない大きな方の値を選択させる。
【0048】
マルチプレクサ380からの出力は経路440の上を合計加算器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に出力され、丸めを決定する際に後ほど使用される。
【0049】
図7はパイプラインの段E4で実行される仮数処理を図示する。レジスタ455の中に格納されている値は正規化シフト器457に通され、これは必要であれば合計加算器の出力に対して右シフトを実行する。この様なUSA及び同符号加算(LSA:Like Signed Add)演算に対して、合計加算器の出力がオーバーフローする可能性があり、出力を正規化するためにその出力値を1または2ビット右シフトする必要がある(実際上小数点を左にシフトする)。従って制御回路は合計加算器450の出力からその様なオーバーフローが生じているか否かを判定し、整列シフト器が出力の適切なシフトを行わせる制御信号を生成するように構成されている。
【0050】
レジスタ455の中に格納されている値はまた論理480に通され、そこでゼロの先頭及び1の先頭が決定される。これはUSA演算を考慮して実行されており、この演算では合計加算器450の出力値を正規化するために左シフトさせる必要のある相殺が生じる可能性があるためである。先頭ゼロの位置は経路485の上を制御回路110に出力され、先頭1の位置は経路490の上を制御回路110に出力される。これらの信号は制御回路でNormShiftCount信号を決定するために使用され、これは仮数を後で正規化する際に使用される。このNormShiftCount信号はUAS演算による全ての相殺に対処するために仮数が左にシフトされるべきビット位置の数を識別する。
【0051】
整列シフト器457の出力は、反転器460で反転されたその値を反転したものと一緒にマルチプレクサ465に通される。制御回路110は合計加算器450の出力が負であるか否かを評価し、負の場合はResult Negative制御信号を経路470の上を1の論理値を有するマルチプレクサ465に送る。これはマルチプレクサ465に反転器460から受信された反転入力を選択させる。それ以外の場合は、レジスタ455から直接受信された非反転入力が選択される。
【0052】
マルチプレクサ465の出力は更新器500と、丸め選択マルチプレクサ510に通される。丸め選択マルチプレクサ510はまた更新器500の出力も受信し、制御回路110から経路515の上を通された最終インクリメント信号に応答して、2つの入力の1つを選択し正規化器520に出力する。制御回路110は段E2内で生成されたMulRoundから、及びパイプラインの段E3の間に経路410,415,425及び452の上に出力された種々の信号とから、最終インクリメント信号の値を決定する。制御回路110での最終インクリメント信号の生成について後ほど詳細に説明する。
【0053】
正規化器520は丸め選択マルチプレクサ510から出力を受信し、先に説明したNormShiftCountで決定されたように、出力の全ての正規化を実行する。正規化器520からの出力は続いて最終結果の仮数としてレジスタ530の中に格納される。
【0054】
図9はパイプラインの段E4内で実行される指数処理を図示する。レジスタ690の中に格納されている指数値は指数調整加算器700に入力され、これはまた第二入力としてマルチプレクサ710の出力も受信する。マルチプレクサ710は制御回路110から出力されたExpAdjust信号で制御され、この信号はマルチプレクサ710への4入力のどれが指数調整加算器700に出力されるべきかを指示している。従って、仮数の左シフトがNormShiftCountに基づいて段E4で実行される場合、ExpAdjust信号はマルチプレクサ710が反転されたNormShiftCount信号を指数調整加算器700に出力して、指数を仮数とは逆の考えで調整するようにさせる。同様に、これに代わって指数がシフト器457によりパイプラインの段E4の間に右にシフトされた場合、ExpAdjust信号はマルチプレクサ710が指数に対して適切な調整を選択するようにさせる。従って、例えば仮数が1ビット右にシフトされる場合、マルチプレクサ710は1の値を出力して指数を1だけインクリメントさせる。
【0055】
指数調整加算器700の出力は指数更新器720と最終指数選択マルチプレクサ730に通される。最終指数選択マルチプレクサ730はまた指数更新器720からの出力を受信し、制御回路110からのFinalExpSel信号で制御され、どの値を最終結果の指数としてレジスタ740に出力するかを決定する。仮数のインクリメントされたものがオーバーフローして、図7に示される丸め選択マルチプレクサ510で選択される場合、FinExpSel信号は高に駆動されてマルチプレクサ730にインクリメントされた指数を選択させる。注意しておかなければならないのは、この時点で仮数のオーバーフローは正規化器520で実行される最初の正規化では考慮されておらず、従って仮数は図7には図示されていない更に別の正規化を受けて、仮数をインクリメントすることで引き起こされた全てのオーバーフローに対処している。
【0056】
データ経路論理100を詳細に説明したので、制御回路110内で丸め値を生成するために使用されている決定論理150について説明する。決定論理で実行される丸めの決定はパイプラインの段E3で生成された7つの信号を、掛け算結果Pが丸められるべきか否かを指示する段E2内の決定論理で生成されたMulRound信号と共に使用して、結果に対して実行される必要のある最終丸めを計算する。段E3からの7つの信号は:
・シフト器390で実行された整列シフトの結果、経路425の上に出力されたガード(G)及び丸め(R)ビット。
・それぞれ経路410及び415の上に出力されたAllOnesまたはAllZeros信号で、これらの信号はシフト器390でシフトアウトされたビットをチェックした結果である。AllOnesはシフトアウトされた全てのビットが1の場合に成立し、一方AllZerosはシフトアウトされた全てのビットがゼロの時に成立する。シフトアウトされたビットが1及び0の両方を含む場合はどちらも成立しない。
・経路452の上のL[2],L[1],及びL[0]出力で、これらの信号は合計加算器450の合計出力の下位3ビットである。
【0057】
図10は制御回路110の中に具備されている決定論理150を更に詳細に図示している。これはパイプラインの段E3中に生成された上述の7つの信号を受信するための第一変換器800を含む。第一変換器800の第一の目的はパイプラインの段E4中に実行された右シフトを要求する全ての正規化を補償することである。先に述べたように1および2ビットのみの右シフトを準備する必要があるだけである。第一変換器800からの出力は中間最下位ビット(IL),ガード(IG),丸め(IR)および付着(IS)ビットであり、これらは第二変換器810に入力され、これらの値は下記の表に基づいて決定される:
【0058】
【表1】
【0059】
上記の表の中、及びこれ以降で用語Inv(X)はXを反転した値を表すために使用され、一方ORおよびANDは論理ORまたは論理AND機能を表している。
【0060】
中間丸めビットは更に第二変換器810で処理され、これはMulRound値、合計加算器450の合計出力の否定で必要とされる全ての2の補数(この様な否定は制御回路で高に駆動されたResultNegative信号で選択される)、そして3つの有効信号を組み込む。
【0061】
有効信号はシフト器390で実行された整列演算がそれぞれの丸めビットを生成した場合に真であり、整列がそれぞれのビットを生成しない場合は偽である。これを下記の表で二倍精度演算を例として具体的に示す(Movfl信号は積加算器250からの積P出力が1.xyyyでは無くて1x.yyyの形式の時に真(すなわち1)である。GVは有効Gビットが整列シフト演算より戻された場合に真である。RVおよびSVは同様に有効RビットおよびSビットが整列シフトビット演算より戻された場合に真である。):
【0062】
【表2】
第二変換器810の出力は最終最下位ビット(FL),ガード(FG),丸め(FR)及び付着(FS)ビットであり、これらは第三変換器830に入力される。これらの最終ビットは更に第三変換器830で処理されて、IEEE754−1985丸め式をFL,FG,FR,FS,及び強制更新(FI)ビットに適用することにより丸め値(段E4内の丸め選択マルチプレクサ510への最終インクリメント信号入力として使用される)を生成する。第三変換器の出力はデータ経路論理の丸め論理140で、最終結果を丸めるために使用される。
【0063】
当業者には理解されるであろうが、浮動小数点加算には2つの異なるケースが存在し、同符号加算と異符号加算である。同符号加算(LSA:like−signed addition)の場合、入力オペランドの符号は加算演算の場合は等しく、引き算の場合は反対である。異符号加算(USA:unlike−signed addition)の場合、符号は加算の場合は反対で、引き算の場合は等しい。以下に示すケースはLSAまたはUSA演算のいずれかで区別されている。
【0064】
図4から図9を参照して先に説明したように、‘小さい方’のオペランドまたは‘大きい方’のオペランドの決定は、指数を比較して小さい方の指数を具備したオペランドを‘小さい方’また、もう一方のオペランドを‘大きい方’と示すことで行われている。大きい方のオペランドは被加算数と呼ばれ、一方小さい方のオペランドは加算数と呼ばれている。
【0065】
第二変換器810は6つのケースを考慮している、すなわち:
ケース1:LSA,積が小さい
ケース2:LSA,積が大きい
ケース3:USA,積が小さい、結果は正
ケース4:USA,積が小さい、結果は負
ケース5:USA,積が大きい、結果は正
ケース6:USA,積が大きい、結果は負
【0066】
ケース1:LSA,積が小さい
演算がMACの場合、MulRoundビットに基づいて2つのケースが存在する。演算がMACで無い場合、MulRoundビットは0である。両方のケースに対して、FLビットはILの値にセットされる。
【0067】
【数1】
【0068】
有効信号(GV,RV,及びSV)はこの場合は必要ない。有効で無い場合、丸めビットはゼロであり丸め式の中に正しく組み込まれる。
【0069】
MulRound=1
このケースは有効信号(GV,RV,及びSV)を必要とする。
【0070】
【表3】
【0071】
Sビットは有効である(GおよびRは有効である必要は無い。これらは有効でない場合はゼロである。)
【0072】
【表4】
【0073】
ケース2:LSA,積が大きい
MulRoundビットは経路445上を合計加算器450に通されたAddCarryIn信号の中に組み込まれている。MulRoundは段4丸めの中では強制的に0とされていて、影響は与えない。
【0074】
第4段丸めビットは:
FL=IL
FG=IG
FR=IR
FS=IS
FI=0
【0075】
ケース3:USA,積が小さい、結果は正
このケースでは指数は等しく加算数の仮数は被加算数の仮数より大きいか、または積の指数は被加算数の指数より1だけ小さいが、積の仮数はオーバーフローしていて実際上被加算数よりも大きい。
【0076】
積からの丸めビットの極性は正しく、反転する必要はない。
【0077】
FL,FG,FR,FS,及びFIビットはケース1と同様に計算される。
【0078】
ケース4:USA,積が小さい、結果は負
このケースでは加算数丸めビットはMulRoubdビットと同様に、反転されなければならない。
【0079】
MulRound=0
合計値を反転する際に必要とされる2の補数ビットは、反転された丸めビットのLSBに組み込まれなければならない。
【0080】
有効ビットは必要でない;丸めビットがその対応する有効ビットの組を持たない場合、それは0であり、反転した後、丸め状況を正しく表すはずである。
【0081】
【表5】
FLビットはILにセットされる。
【0082】
MulRound=1
MulRoundビットがセットされているので、結果を反転するために必要な2の補数ビットは下記の恒等式に基づき、MulRoundビットで相殺される:
丸めビットは以下の通りである:
【0083】
【数2】
【0084】
ケース5:USA,積が大きい、結果は正
このケースでは、加算数は実際に積よりも大きく、合計値は反転する必要が無い。
【0085】
FL,FG,FR,FS,及びFIビットはケース1と同様に計算される。MulRoundビットはAddCarryIn信号をゼロにするために第3段で使用された。MulRoundビットは第4段に送られる前に消去される。
【0086】
ケース6:USA,積が大きい、結果は負
ケース4と同様、加算数丸めビットは反転されなければならない。MulRoundビットはAddCarryIn信号をゼロにするために第3段で使用された。MulRoundビットは第4段に送られる前に消去される。
【0087】
丸めビットはケース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*C7
【0089】
8つの係数、8つのデータ項目、及びAccがレジスタの中に有り、また8つの暫定レジスタが利用可能であると仮定すると、従来型プロセッサは以下の演算を実行するはずである:(FMUL及びFADD演算は3サイクルレイテンシィ(latency)と1サイクルスループットを有すると仮定する。)
【0090】
【表6】
【0091】
演算毎に1サイクルと3サイクルのレイテンシィを仮定すると、最初の13演算は従属性を持たずに13サイクルを順番に実行するはずである。演算14は演算12の結果が完了するのを待つために1サイクル停止し、2サイクルを要する。演算15は停止しないが、それは演算14の停止中に演算13がT0に書き込みを完了する事が可能なためである、一方最終累積演算16はAcc値が演算15からロードされるのを待つために2サイクルの間停止する。総サイクル数は16+1+2+2,すなわち16演算に対して21サイクルである。
【0092】
好ましい実施例のFPU26内のFMAC演算を用いると、以下の演算が同一結果を生成する:(FMAC,FMUL,及びFADD演算は4サイクルレイテンシィと1サイクルスループットを有する。)
【0093】
【表7】
【0094】
この例に於いて、最初の8つの演算は停止することなく順番に8サイクルで実行される。演算9は演算6がT1への書き込みを完了するのを待つために1サイクルの間停止する。演算10もまた1サイクルの間停止し、一方最終演算11は演算10がT3への書き込みを完了するのを待つために3サイクルの間停止する。総サイクル数は11+1+1+3+3,すなわち11演算に対して19サイクルである。
【0095】
FMAC演算のDSP機能に対する第1の利点はFIR演算がパイプラインの深さに展開される際に分かる。例えば、同じ8つのデータ点と8つの係数が4つのセットの中にグループ化され、部分FIR演算が4つのデータ点に対して実行される場合、下記の計算は停止することなく実行できる:
【0096】
【数3】
【0097】
好ましい実施例のFPU26内の以下のFMAC演算はこれらの式を停止状態を持つことなく実行するはずである:
【0098】
【表8】
【0099】
このシーケンスは先に与えられた8つのデータと8つの係数演算に対して、再び停止することなく繰り返される。上記の例のスループットはサイクル毎に1掛け算累積演算であり、結果として8データ及び8係数の例では有効サイクル数が8となる。同じループ展開技術を用いた従来型プロセッサでは8データ及び8係数問題に対して16演算を必要とするが、それは単純に各々の演算が1つの掛け算と1つの加算を必要とし、各々1サイクルが必要だからである。従来型プロセッサは8命令を必要とするが、好ましい実施例のFPU26は唯4つを必要とするのみである。
【0100】
本発明の特定の実施例を説明してきたが、本発明がそれに限定されるものではなく、多くの修正及び追加を本発明の範囲の中で行えることは明らかであろう。例えば、提出された実施例では物理的に分離されているコプロセッサを具備したCPUに関連して説明してきたが、これは必須の要件では無い。例えば浮動小数点ユニットを主プロセッサの中に具備することも可能である。更に、以下の関連する特許請求の項の特徴を、独立した請求項の特徴と本発明の範囲から逸脱することなく種々組み合わせることも出来るであろう。
【図面の簡単な説明】
【図1】図1は本発明の好ましい実施例に基づくデータ処理装置の構成要素を図示するブロック図である。
【図2】図2は本発明の好ましい実施例に基づくFPUコプロセッサの構成要素を図示するブロック図である。
【図3】図3は図2のデータ経路構成要素ブロックを更に詳細に図示するブロック図である。
【図4】図4は本発明の好ましい実施例に基づき仮数を処理するために使用されるデータ経路論理の構成要素を図示するブロック図で、パイプラインの段E1内の仮数処理を示す。
【図5】図5は本発明の好ましい実施例に基づき仮数を処理するために使用されるデータ経路論理の構成要素を図示するブロック図で、パイプラインの段E2内の仮数処理を示す。
【図6】図6は本発明の好ましい実施例に基づき仮数を処理するために使用されるデータ経路論理の構成要素を図示するブロック図で、パイプラインの段E3内の仮数処理を示す。
【図7】図7は本発明の好ましい実施例に基づき仮数を処理するために使用されるデータ経路論理の構成要素を図示するブロック図で、パイプラインの段E4内の仮数処理を示す。
【図8】図8は本発明の好ましい実施例に基づき指数を処理するために使用されるデータ経路論理の構成要素を図示するブロック図で、パイプラインの段E1内の指数処理を示す。
【図9】図9は本発明の好ましい実施例に基づき指数を処理するために使用されるデータ経路論理の構成要素を図示するブロック図で、パイプライン内の段E1からE4での指数処理の流れを示す。
【図10】図10は本発明の好ましい実施例で使用される、浮動小数点演算の結果に適用される丸め値を決定するための、決定論理を図示する。
【符号の説明】
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 第三変換器
Claims (16)
- 掛け算・累積演算A+(B*C)を、前記掛け算・累積演算を同定する単一命令に応答して実行するためのデータ処理装置であって:
値BとCを掛け算して丸められていない掛け算結果を生成し、更に丸めを決定するために必要な、前記丸められていない掛け算結果に依存する第一データを生成するように構成されている1つの掛け算器と;
丸められていない掛け算結果を値Aに加算し丸められていない掛け算累積結果を生成し、更に丸めを決定するために必要な第二データを生成するように構成されている1つの加算器と;
第一及び第二データを用いて、丸めを組み込まれた掛け算命令と、それに続く丸めを組み込まれた個別の加算命令を個別に実行するのと同等の最終掛け算・累積演算結果を生成するために必要な1つまたは複数の丸め値を決定するための決定論理と;そして
最終掛け算・累積演算結果を生成するために1つまたは複数の丸め値を供給するための丸め論理とを含む、前記データ処理装置。 - 請求項1記載のデータ処理装置に於いて、決定論理が最終掛け算累積結果を生成するために、丸められていない掛け算累積結果を丸め論理に適用し単一丸め値を生成するように構成されている、前記データ処理装置。
- 請求項1記載のデータ処理装置に於いて、掛け算器により生成された第一データがガード及び付着ビットを含み、決定論理がこの第一データから掛け算器丸め値を決定するための第一論理を含む、前記データ処理装置。
- 請求項3記載のデータ処理装置に於いて、第一データが更に掛け算結果の1つまたは複数の最下位ビットを含む、前記データ処理装置。
- 請求項3記載のデータ処理装置に於いて、決定論理が更に第二論理を含み、これが掛け算器丸め値と第二データから1つまたは複数の丸め値を決定するためのものである、前記データ処理装置。
- 請求項1記載のデータ処理装置に於いて、加算器が、値Aと掛け算結果の小さい方を、加算を実行する前に整列させるための整列シフト器と、整列シフト器でシフトアウトされたビットが全て1であるか全て0であるかを検出するための検出ユニットとを含む、前記データ処理装置。
- 請求項6記載のデータ処理装置に於いて、加算器で生成された第二データがガードおよび丸めビット、検出ユニットの出力、及び丸められていない掛け算累積結果の最下位ビットの一群を含む、前記データ処理装置。
- 請求項1記載のデータ処理装置に於いて、掛け算器が部分結果を桁上げ保存形式で生成するための掛け算ユニットと、掛け算結果を生成するための積加算器とを含む、前記データ処理装置。
- 請求項8記載のデータ処理装置に於いて、掛け算器が更に掛け算ユニットで生成された部分積の一群の最下位ビットを一緒に加算するための付着加算器と、付着加算器の出力からガード及び付着ビットを生成するためのガード及び付着ビット生成器とを含む、前記データ処理装置。
- 請求項1記載のデータ処理装置に於いて、丸められていない掛け算累積結果が仮数と指数を含み、データ処理装置が更に仮数をインクリメントするための更新器を含み、丸め論理が最終掛け算累積結果の最終仮数として仮数またはインクリメントされた仮数のいずれかを、決定論理で生成された1つまたは複数の丸め値の1つに依存して出力するためのマルチプレクサを含む、前記データ処理装置。
- 請求項10記載のデータ処理装置に於いて、前記1つの丸め値が、仮数またはインクリメントされた仮数のいずれが最終仮数として出力されるべきかを指示するためにマルチプレクサに入力される最終更新信号を含む、前記データ処理装置。
- 請求項11記載のデータ処理装置に於いて、丸め論理が更に、仮数をインクリメントした結果がオーバーフローした場合に指数をインクリメントするための指数更新論理を含み、インクリメントされた仮数が最終仮数として選択される、前記データ処理装置。
- 請求項1記載のデータ処理装置に於いて、決定論理が第一変換器を含み、第一変換器が加算器で生成された第二データを受信し、加算器によって丸められていない掛け算累積結果に適用された右シフト正規化を補償する、前記データ処理装置。
- 請求項13記載のデータ処理装置に於いて、決定論理が第一データから掛け算器丸め値を決定するように構成されており、また決定論理が更に掛け算器丸め値を第一変換器回路の出力に適用する第二変換器を含む、前記データ処理装置。
- 請求項14記載のデータ処理装置に於いて、決定論理が更に第三変換器を含み、これが予め定められた丸め公式を第二変換器から出力された信号に適用して1つまたは複数の丸め値を生成するためのものである、前記データ処理装置。
- 掛け算・累積演算A+(B*C)を前記掛け算・累積演算を同定する単一命令に応答して実行するための方法であって:
値BとCとを掛け算して丸められていない掛け算結果を生成し、丸め決定に必要な、前記丸められていない掛け算結果に依存する第一データを生成し;
丸められていない掛け算結果を値Aに加算して丸められていない掛け算・累積結果を生成し、丸め決定に必要な第二データを生成し;
第一及び第二データを用いて、丸めを組み込まれた掛け算命令を実行し、続いて丸めを組み込まれた個別の加算命令を個別に実行したのと等価な最終掛け算・累積結果を生成するために必要な1つまたは複数の丸め値を決定し;そして
1つまたは複数の丸め値を適用して最終掛け算・累積結果を生成する、以上を含む、前記方法。
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 | ||
| US09/144,264 US6360189B1 (en) | 1998-05-27 | 1998-08-31 | Data processing apparatus and method for performing multiply-accumulate operations |
| US144264 | 1998-08-31 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2000010959A JP2000010959A (ja) | 2000-01-14 |
| JP4166367B2 true JP4166367B2 (ja) | 2008-10-15 |
Family
ID=26770832
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP14866499A Expired - Lifetime JP4166367B2 (ja) | 1998-05-27 | 1999-05-27 | 掛け算・累積演算実行用データ処理装置並びに方法 |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP4166367B2 (ja) |
| GB (1) | GB2339936B (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002149402A (ja) * | 2000-11-14 | 2002-05-24 | Pacific Design Kk | データ処理装置およびその制御方法 |
| US7730117B2 (en) * | 2005-02-09 | 2010-06-01 | International Business Machines Corporation | System and method for a floating point unit with feedback prior to normalization and rounding |
| JP5515601B2 (ja) * | 2009-10-16 | 2014-06-11 | 富士通株式会社 | 浮動小数点加算器 |
Family Cites Families (3)
| 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 |
| DE69133072T2 (de) * | 1990-08-24 | 2003-03-20 | Matsushita Electric Industrial Co., Ltd. | Verfahren und Gerät zur Berechnung von Gleitkommadaten |
| GB2291515B (en) * | 1994-07-14 | 1998-11-18 | Advanced Risc Mach Ltd | Data processing using multiply-accumulate instructions |
-
1999
- 1999-04-14 GB GB9908542A patent/GB2339936B/en not_active Expired - Lifetime
- 1999-05-27 JP JP14866499A patent/JP4166367B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| GB2339936B (en) | 2002-09-25 |
| GB2339936A (en) | 2000-02-09 |
| JP2000010959A (ja) | 2000-01-14 |
| GB9908542D0 (en) | 1999-06-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6360189B1 (en) | Data processing apparatus and method for performing multiply-accumulate operations | |
| US6542916B1 (en) | Data processing apparatus and method for applying floating-point operations to first, second and third operands | |
| Zhang et al. | Efficient multiple-precision floating-point fused multiply-add with mixed-precision support | |
| US6099158A (en) | Apparatus and methods for execution of computer instructions | |
| US5880984A (en) | Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments | |
| US6904446B2 (en) | Floating point multiplier/accumulator with reduced latency and method thereof | |
| US8965945B2 (en) | Apparatus and method for performing floating point addition | |
| US7428566B2 (en) | Multipurpose functional unit with multiply-add and format conversion pipeline | |
| JP4953644B2 (ja) | 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法 | |
| JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
| US20060101242A1 (en) | Multipurpose multiply-add functional unit | |
| CN100578443C (zh) | 一种x86体系结构的微处理器 | |
| JP2002108606A (ja) | スティッキービット生成回路及び乗算器 | |
| US7720900B2 (en) | Fused multiply add split for multiple precision arithmetic | |
| JPH02294819A (ja) | 浮動小数点数演算処理装置 | |
| US11068238B2 (en) | Multiplier circuit | |
| JPH02294820A (ja) | 浮動小数点数演算処理装置および演算処理方法 | |
| CN111752613A (zh) | 迭代运算的处理 | |
| JPH09507941A (ja) | multiply−add浮動小数点シーケンスにおけるウエイト・サイクルなしのブロック正規化 | |
| US20050228844A1 (en) | Fast operand formatting for a high performance multiply-add floating point-unit | |
| US6701427B1 (en) | Data processing apparatus and method for processing floating point instructions | |
| JP4166367B2 (ja) | 掛け算・累積演算実行用データ処理装置並びに方法 | |
| EP0840207A1 (en) | A microprocessor and method of operation thereof | |
| US7054898B1 (en) | Elimination of end-around-carry critical path in floating point add/subtract execution unit | |
| US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal |
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 |
