JP4109181B2 - 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ - Google Patents

論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ Download PDF

Info

Publication number
JP4109181B2
JP4109181B2 JP2003367203A JP2003367203A JP4109181B2 JP 4109181 B2 JP4109181 B2 JP 4109181B2 JP 2003367203 A JP2003367203 A JP 2003367203A JP 2003367203 A JP2003367203 A JP 2003367203A JP 4109181 B2 JP4109181 B2 JP 4109181B2
Authority
JP
Japan
Prior art keywords
bit
function
adder
zero position
leading non
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 - Fee Related
Application number
JP2003367203A
Other languages
English (en)
Other versions
JP2005134965A (ja
Inventor
文男 荒川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2003367203A priority Critical patent/JP4109181B2/ja
Publication of JP2005134965A publication Critical patent/JP2005134965A/ja
Application granted granted Critical
Publication of JP4109181B2 publication Critical patent/JP4109181B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、浮動小数点演算回路に係り、特に、浮動小数点データの正規化を高速におこなうことのできる浮動小数点演算回路とマイクロプロセッサに関する。
浮動小数点データは、符号部、指数部、仮数部の三つの部分を持ち、演算結果を正規化して、最終的にメモリなどに格納される。正規化とは、演算結果の仮数部の絶対値の先頭の非ゼロを検出して仮数部が1で始まるようにシフトし、シフト数に応じて指数部を補正する処理である。
演算結果が得られてから先頭非ゼロを検出して、正規化処理をおこなうと、演算の高速化の要請に反するため、従来より、演算結果を得るためのキャリー伝播加算と同時にキャリー伝播加算の入力から先頭非ゼロを求める方式が考案されている。例えば、以下の特許文献1や特許文献2の方式である。
これらの方式では、検出した先頭非ゼロ位置に1ビットの誤差が生じる恐れがある。そのため、正規化前に検出した先頭非ゼロ位置を加算結果で補正するか、正規化後に最上位桁をチェックして補正する必要が生じる。
特開平8−212192号公報
米国特許5493520号明細書
従来技術において、先頭非ゼロ位置に1ビットの誤差が生じるのは、下位ビットからのキャリー伝播を無視して、上位ビットから先頭非ゼロ位置の検出を暫定的におこなおうとする発想によるものである。
したがって、キャリー伝播加算の入力から正確に先頭非ゼロ位置を検出すれば、正規化前後で従来おこなつていた1ビットの誤差の補正が不要となる。しかしながら、正確ではあっても低速な方法によれば演算速度の高速化という要請は達成されないことになる。すなわち、キャリー伝播加算終了時に正確な先頭非ゼロ位置の検出ができていれば、正規化に要する時間は、正規化シフトの時間のみに抑えることができる。
先頭非ゼロ位置の検出をするために、演算結果の全ビットがある定数と一致することを検出する方式も存在する。
しかしながら、先頭非ゼロ位置が同一である演算結果は、先頭非ゼロ位置より下位のビットが1でも0でも良く、多様なパターンが存在するため、下位の全ての多様な場合を一致検出でチェックすることは現実的でない。
また、別に考えられるの選択肢としては、先頭非ゼロ位置へのキャリーの有無をチェックすることである。しかしながら、先頭非ゼロ位置が判明してから、その位置へのキャリーを選択して判断していては、時間がかかり、演算の高速化はおこなえない。
本発明は、上記問題点を解決するためになされたもので、キャリー伝播加算の入力から正確に先頭非ゼロ位置を検出し、正規化に要する時間を短くして、浮動小数点演算の高速化を図ることにある。
本発明では、加算結果が正のとき、先頭の非ゼロ位置を表すことのあるステップ関数Pと、加算結果が負のとき、その加算器出力をビット反転したときの先頭の非ゼロ位置を表すことのあるステップ関数Nとを、そのビットのキャリーの値によって適宜選択して関数値とするステップ関数Fを定義する。Fにより先頭の非ゼロ位置を検出して、浮動小数点データの正規化をおこなうようにした。 PとNは、1ビットの誤差が生じる可能性があるが、Fは、キャリーを考慮するので誤差は生じない。しかも、Fは、演算の最終結果を待たずとも、ビット毎の加算と並列して値を求めていくことができるので、演算の高速化の障壁となることもない。
本発明によれば、キャリー伝播加算の入力から正確に先頭非ゼロ位置を検出し、正規化に要する時間を短くして、浮動小数点演算の高速化された浮動小数点回路を提供することができる。
以下、本発明に係る一実施形態を、図1ないし図11を用いて説明する。
〔本発明の先頭非ゼロ位置を検出するためのステップ関数の原理〕
先ず、図1ないし図3を用いて先頭非ゼロ位置を検出するためのステップ関数の原理について説明する。
図1は、本発明の先頭非ゼロ位置を検出するためのステップ関数に関係する関数の定義式を示す図である。
図2は、加算結果が正のときの具体例を示す図である。
図3は、加算結果が負のときの具体例を示す図である。
以下では、加算器の入力は、2の補数表現でビッグエンディアン表示(先頭桁が0ビット目から始まる)であるものとする。すなわち、ビット0は符号ビットである、正のときには、0であり、負のときには、1である。
また、以下では、「先頭非ゼロ位置」を、正のときには先頭の0でないビットの位置、負のときには、符号ビット以外のビットをビット反転したときの先頭の0でないビットの位置とする。
図1の記法で、インデックスは、ビットi番目を表すものとする。
aiは、加算器への第一の入力であり、biは、加算器への第二の入力であり、Siが、算術加算結果である。
そして、zi、gi、および、siは、2つの加算器入力のビットi番目が、それぞれ双方とも0、双方とも1、および、一方が0で他方が1であることを示す関数である。
また、Ciはビットiへの下位ビットからのキャリー(桁上がり)である。
iは、加算結果の正の場合の先頭非ゼロ位置を検出するためのステップ関数であり、Niは、加算結果の負の場合の先頭非ゼロ位置を検出するためのステップ関数であり、1から0の変化を見ることにより、先頭非ゼロ位置が検出される仕様の関数である。しかしながら、ここで、これらの関数は、場合によっては、1ビットの誤差が生じることがあることを注意する。
iは、図1に示されるように、j=1からiまでのpjすべての論理積を取った関数であり、同様に、Niは、j=1からiまでのnjすべての論理積を取った関数であり、あるビット位置で、pi=0、ni=0になるとそれより下位(ビット位値が大きい)では、すべて0になる。ここで、pj,njは、2桁づつのパターンを検査するための関数である。Piは、iとそれより上位のビットが全て0、または、iとそれより上位のビットが全て1のときに、1となり、それ以外の場合には、0となる関数である。一方、Niは、iより上位のビットが全て1のときに、1となり、それ以外の場合には、0となる関数である。
そして、これらの関数Pi,Niが1から0に変わる場所で、Siの先頭非ゼロ位置を検出しようとするものであるが、これらは、正確に、Siの先頭非ゼロ位置を検出していることもあるが、下位の方にずれることもある。
これは、関数Pi,Niが上位からパターンを検出する関数であるため、下位からのキャリーの有無によって、誤差が生じることがあるためである。従来技術では、演算の高速性を確保するため、演算結果を正規化するときには、このような関数によって暫定的な先頭非ゼロ位置を求めて、必要ならば補正するという手法を採っていた。
図に示した例では、正のときの図2B、図2D、図2F、負のときの図3B、図3D、図3Fが、先頭非ゼロ位置の検出に、誤差を生じる場合である。例えば、加算結果が正の場合には、図2Aの例では、ビットkで正しく、先頭非ゼロ位置の検出が求められるが、図2Bの例では、ビットkで桁上がりがあり、ビットk−1の先頭非ゼロ位置が正しく求められていない。逆に、加算結果が負の場合には、図3Aの例では、ビットkで桁上がりがあり、ビットkで正しく、先頭非ゼロ位置(反転した0のパターン)の検出が求められるが、図3Bの例では、ビットk−1の先頭非ゼロ位置が正しく求められていない。
そこで、本発明のステップ関数Fiでは、ビットiで、キャリーがないときには、Piを、キャリーがあるときには、Niを選択的に取るようにする。
iとNiの取り方によって、1の列は、加算結果が正のときには、Piが常に長く、加算結果が負のときには、Niが常に長くなることが保証されている。したがって、加算結果が正のときでも、キャリーがあるときには、常に、Piに対して反転しているビットNiの方を取って、加算結果が負のときでも、キャリーがないときには、常に、Niに対して反転しているビットPiを取るようにすると、ステップ関数で従来生じていた誤差が修正される。
図2と図3は、具体的なビット入力の結果を示したものであり、図2が加算結果が正の場合であり、図3が加算結果が負の場合である。
図2Aに示される加算結果が正の場合の第一の例では、上位jビットは、aは1で、bは0、ビットjは双方とも1、次のk−j−1ビットは双方とも0、ビットkはaが1で、bが0、ビットk+1は双方とも0である。ビットk+1より下位は任意の値でよい。このとき、図のように、加算結果Sの先頭非ゼロ位置はkであり、ビットk−1からkでステップ関数Fが1から0に変化している。
図2Bに示される加算結果が正の場合の第二の例では、上位jビットは、aは1で、bは0、ビットjは双方とも1、次のk−j−1ビットは双方とも0、ビットk+1は双方とも1である。ビットk+1より下位は任意の値でよい。このとき、図のように、加算結果Sの先頭非ゼロ位置はk−1であり、ビットk−2からk−1でステップ関数Fが1から0に変化している。
図2Cに示される加算結果が正の場合の第三の例では、上位k−1ビットは、aは1で、bは0、ビットk−1は双方とも1、ビットkはaが1で、bが0、ビットk+1は双方とも0である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はkであり、ビットk−1からkでステップ関数Fが1から0に変化している。
図2Dに示される加算結果が正の場合の第四の例では、上位k−1ビットは、aは1で、bは0、ビットk−1は双方とも1、ビットkは双方とも1である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Siの先頭非ゼロ位置はk−1であり、ビットk−1からkでステップ関数Fが1から0に変化している。
図2Eに示される加算結果が正の場合の第五の例では、上位kビットは、aおよびb双方とも0、ビットkはaが1で、bが0、ビットk+1は双方とも0である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はkであり、ビットk−1からkでステップ関数Fが1から0に変化している。
図2Fに示される加算結果が正の場合の第六の例では、上位kビットは、aおよびb双方とも0、ビットkは双方とも1である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はk−1であり、ビットk−2からk−1でステップ関数Fが1から0に変化している。
図3Aに示される加算結果が負の場合の第一の例では、上位jビットは、aは1で、bは0、ビットjは双方とも0、次のk−j−1ビットは双方とも1、ビットkはaが1で、bが0、ビットk+1は双方とも1である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はkであり(加算結果が負であることに注意)、ビットk−1からkでステップ関数Fが1から0に変化している。
図3Bに示される加算結果が負の場合の第二の例では、上位jビットは、aは1で、bは0、ビットjは双方とも0、次のk−j−1ビットは双方とも1、ビットkは双方とも0である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はk−1であり、ビットk−1からkでステップ関数Fが1から0に変化している。
図3Cに示される加算結果が負の場合の第三の例では、上位k−1ビットは、aは1で、bは0、ビットk−1は双方とも0、ビットkはaが1で、bが0、ビットk+1は双方とも1である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はkであり、ビットk−1からkでステップ関数Fが1から0に変化している。
図3Dに示される加算結果が負の場合の第一の例では、上位k−1ビットは、aは1で、bは0、ビットkは双方とも0、ビットk+1は双方とも0である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はk−1であり、ビットk−1からkでステップ関数Fが1から0に変化している。
図3Eに示される加算結果が負の場合の第四の例では、上位kビットは、aおよびb双方とも1、ビットkはaが1で、bが0、ビットk+1は双方とも1である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はkであり、ビットk−1からkでステップ関数Fが1から0に変化している。
図3Fに示される加算結果が負の場合の第五の例では、上位kビットは、aおよびb双方とも1、ビットkは双方とも0である。ビットk+1より下位は任意の値でよい。このとき、図のように加算結果Sの先頭非ゼロ位置はk−1であり、ビットk−1からkでステップ関数Fが1から0に変化している。
以上の例から理解できるように、加算結果が正の場合に、下位ビットからのキャリーがあるときには、加算結果Sとステップ関数Pには、先頭非ゼロ位置の検出に1ビットのずれが生じ、逆に、加算結果が負の場合に、下位ビットからのキャリーがないときには、加算結果Sとステップ関数Nには、先頭非ゼロ位置の検出に1ビットのずれが生じる。
したがって、下位からのキャリーに従って、ステップ関数Pとステップ関数Nを選択して、新しいステップ関数Fを作れば、加算結果が正の場合であれ負の場合であれ、正確な先頭非ゼロ位置を表すことができるというのが本発明の発想である。
実際、図2B、図2D、図2Fの場合に、Pにより先頭非ゼロ位置を検出するときに、1ビットの誤差が生じるにもかかわらず、Fは正確に先頭非ゼロ位置を検出することができる。図3B、図3D、図3Fの場合にも同様に、Nにより先頭非ゼロ位置を検出するときに、1ビットの誤差が生じるにもかかわらず、Fは正確に先頭非ゼロ位置を検出することができるには1ビットの誤差があるにもかかわらず、正確に先頭非ゼロ位置を検出することができる。
〔浮動小数点演算回路を有するマイクロプロセッサの構成〕
次に、図4を用いて本発明の浮動小数点演算がおこなわれるマイクロプロセッサの構成について説明する。
図4は、一般的な浮動小数点演算をおこなうことのできるマイクロプロセッサのブロック図である。
マイクロプロセッサ00は、コア01と周辺モジュール02とメモリコントローラ30が内部バス20を介して結合された形態である。また、外部バス40により、RAM50に接続されている。
コア01は、CPU10、FPU11、命令キャッシュ12、データキャッシュ13を含んでいる。
CPU10は、プログラムの命令を実行し、メモリ上のデータをアクセスする。FPU11は、本発明の浮動小数点演算をおこなうための回路である。命令キャッシュ12は、命令用のキャッシュメモリであり、データキャッシュ13は、データ用のキャッシュメモリである。CPU10がRAM50上のプログラムとデータをアクセスするときには、メモリコントローラ30を介して命令キャッシュ12とデータキャッシュ13に取り込まれる。
周辺モジュール02は、タイマー、シリアルインターフェース、割り込み、DMA(Direct Memory Access)などの機能を含む周辺機器を制御するための回路である。
〔浮動小数点演算回路の構成と動作〕
次に、図5を用いて本発明に係る浮動小数点演算回路の構成と動作について説明する。
図5は、本発明に係る浮動小数点演算回路の浮動小数点積和乗算器の構成を示すブロック図である。
この浮動小数点演算回路は、被乗数Xと乗数Yの積に加数Zを加算する積和演算をおこなう浮動小数点積和乗算器である。
加数Zを0.0とすれば乗算器に、また、乗数Yを1.0とすれば加算器にもなる。積和演算器は、乗算アレイARY、指数差生成回路EXPD、指数部生成回路EXPG、桁合せシフタALN、キャリー保存加算器CSA、先頭非ゼロ位置検出およびキャリー伝播加算器LNZCPA、仮数部正規化シフタNRM、指数部正規化回路EXPN、および、丸め回路RNDから成る。
先ず、乗算アレイARYにおいて被乗数Xと乗数Yの仮数部の積をキャリー保存形式で生成し桁合せシフタALNに出力する。同時に、指数差生成回路EXPDは積と加数Zとの指数差を求めてシフタALNに出力する。さらに、指数部生成回路EXPGは、積または加数Zの指数部うち大きい方を演算結果の正規化前指数部として指数部正規化回路EXPNに出力する。
桁合せシフタALNは、乗算アレイARY出力および加数Zを指数差生成回路EXPDからの指数差によって桁合せし、キャリー保存加算器CSAに出力する。キャリー保存加算器CSAは、キャリー保存形式の積の2項と加数Zの3項を加算し、キャリー保存形式の2項aおよびbとして、先頭非ゼロ位置検出およびキャリー伝播加算器LNZCPAに出力する。
先頭非ゼロ検出およびキャリー伝播加算器LNZCPAは本発明によってキャリー伝播加算器入力aおよびbから、本発明の正確に先頭非ゼロ位置を検出できるステップ関数Fおよびキャリー伝播加算結果Sを生成し、仮数部正規化シフタNRMおよび指数部正規化回路EXPNに出力する。
仮数部正規化シフタNRMはキャリー伝播加算結果Sを正確な先頭非ゼロ位置関数Fによってシフトして正規化し、正規化後仮数部として丸め回路RNDに出力する。指数部正規化回路EXPNは、本発明の正確に先頭非ゼロ位置を検出できるステップによって正規化前指数部を正規化し、正規化後指数部として丸め回路RNDに出力する。
丸め回路RNDは正規化後仮数部を丸めて、必要に応じて正規化後指数部を補正して、さらに必要に応じて無限大、ゼロ、非数等に演算結果を差し替えて、浮動小数点積和演算結果Rとして出力する。
本発明のステップ関数Fは、キャリー伝播加算結果Sと並行してビット毎に演算していけるので、キャリー伝播加算器LNZCPAにおける先頭非ゼロ検出が高速になり、正規化のための遅延時間を最小限に抑えることができる。
しかも、正確に先頭非ゼロ位置検出がおこなえるので、正規化の補正が不要となって、仮数部正規化シフタNRM、指数部正規化回路EXPN、および、丸め回路RNDの構造も簡素化され、演算も高速におこなえるようになる。
〔論理回路での実現〕
次に、図6および図11を用いて本発明の浮動小数点演算に用いる関数の論理回路の実現例について説明する。
図6は、zi、giおよびsiを求める論理回路の例を示す図である。
図7は、Ciを求める論理回路の例を示す図である。
図8は、Siを求める論理回路の例を示す図である。
図9は、piおよびniを求める論理回路の例を示す図である。
図10は、PiおよびNiを求める論理回路の例を示す図である。
図11は、Fiを求める論理回路の例を示す図である。
ここで、加算器入力ai、biは、8ビットであるものとする。
先ず、図6の論理回路により、zi、giの論理反転、および、siを生成する。
さらに、図7の論理回路により、ziおよびgiの論理反転からキャリーCiを、また、図8の論理回路のより、siおよびCiから加算結果Siを生成する。
そして、図9に示される論理回路により、piおよびnを生成し、図10Aに示される論理回路により、PおよびNを生成する。二進木構造にすることによりビット数の対数のオーダーでpおよびnからPおよびNを生成することができる。
そして、最後に、図11に示される論理回路により、P、NおよびCからステップ関数Fを生成する。この論理回路は、セレクタであり、C=0のとき、Pを出力し、C=1のとき、Nを出力する。
なお、図11のセレクタ入力がPとNの反転となっているのは、回路の実現上NAND回路とNOR回路を使っているためである。
上記の図10Aに示される論理回路は、単純な二進木構造であるため、全ビットのPおよびNを生成する際に出力ファンアウトの多いゲートができてしまう。この問題はビット幅の増大とともに深刻になる。図10Bのように二進木構造を多重化すると出力ファンアウトを最大2に抑えることが可能となり、PおよびNの生成が高速化される。
また、キャリーCを生成する論理回路は、図7のものに限定されない。加算の高速化方式は長年にわたって研究されている。特にキャリーCの高速生成方式はそのキーとなる技術であり、様々な論理回路が提案されている。本発明に使用するキャリーが加算結果を生成するためのキャリーと同一であるか、同等の速度で生成されるのであれば、排他的論理和とセレクタの速度は同等であるため、通常はステップ関数Fの生成が加算結果Sの生成より遅くなることはない。
さらに、PおよびNを生成する論理回路も図10Aや図10Bのものに限定されない。上位から逐次論理積をとる最もゲート数が少なく低速な方式から図10Bの論理回路までの様々な中間方式が考えられる。加算器のキャリーC生成速度より高速であっても、Fの生成がキャリーCネックとなってしまい、Fの生成速度に寄与しないので、加算器の方式に合わせて実現方式を選択すべきである。
本発明の先頭非ゼロ位置を検出するためのステップ関数に関係する関数の定義式を示す図である。 加算結果が正のときの加算演算の具体例を示す図である(第一の例)。 加算結果が正のときの加算演算の具体例を示す図である(第二の例)。 加算結果が正のときの加算演算の具体例を示す図である(第三の例)。 加算結果が正のときの加算演算の具体例を示す図である(第四の例)。 加算結果が正のときの加算演算の具体例を示す図である(第五の例)。 加算結果が正のときの加算演算の具体例を示す図である(第六の例)。 加算結果が負のときの加算演算の具体例を示す図である(第一の例)。 加算結果が負のときの加算演算の具体例を示す図である(第二の例)。 加算結果が負のときの加算演算の具体例を示す図である(第三の例)。 加算結果が負のときの加算演算の具体例を示す図である(第四の例)。 加算結果が負のときの加算演算の具体例を示す図である(第五の例)。 加算結果が負のときの加算演算の具体例を示す図である(第六の例)。 一般的な浮動小数点演算をおこなうことのできるマイクロプロセッサのブロック図である。 本発明に係る浮動小数点演算回路の浮動小数点積和乗算器の構成を示すブロック図である。 zi、giおよびsiを求める論理回路の例を示す図である。 iを求める論理回路の例を示す図である。 iを求める論理回路の例を示す図である。 iおよびniを求める論理回路の例を示す図である。 iおよびNiを求める論理回路の例を示す図である(その一)。 iおよびNiを求める論理回路の例を示す図である(その一)。 iを求める論理回路の例を示す図である。

Claims (7)

  1. 最上位ビットが符号ビットとしてデジタル表現されたデータの加算器出力を解析するための論理回路において、
    符号ビットを除く各ビット毎に値を定められた第一の関数は、
    そのビットおよびそのビットより上位の加算器入力の算術加算結果が、
    すべて0またはすべて1のときに、そのビットの関数値を1、
    その他のときには、そのビットの関数値を0と定義される関数であって、
    符号ビットを除く各ビット毎に値を定められた第二の関数は、
    そのビットより上位の加算器入力の算術加算結果が、
    すべて1のときに、そのビットの関数値を1、
    その他のときには、そのビットの関数値を0と定義される関数であって、
    符号ビットを除く各ビット毎に値を定められた第三の関数は、
    そのビットの下位ビットからのキャリーが、0の場合には、前記第一の関数の関数値をそのビットの関数値として選択し、1の場合には、前記第二の関数の関数値をそのビットの関数値として選択される関数であって、
    前記第三の関数により、
    前記加算器出力が正の場合には、先頭の非ゼロ位置を、
    前記加算器出力が負の場合には、その加算器出力をビット反転したときの先頭の非ゼロ位置を検出する論理回路。
  2. 最上位ビットを第0番目としたときに、第j−1番目のビットに対して加算器の第一の入力と加算器の第二の入力との排他的論理和sj−1と、
    第j番目のビットに対して加算器の第一の入力と加算器の第二の入力との論理和のビット反転値zとに対し、
    前記第一の関数の第i番目のビットの関数値は、j=1からiまでのすべての前記sj−1と前記zとの排他的論理和の論理積を取った値であることを特徴とする請求項1記載の論理回路。
  3. 最上位ビットを第0番目としたときに、第j−1番目のビットに対して加算器の第一の入力と加算器の第二の入力との排他的論理和sj−1と、
    第j番目のビットに対して加算器の第一の入力と加算器の第二の入力との論理積gとに対し、
    前記第二の関数の第i番目のビットの関数値は、j=1からiまでのすべての前記sj−1と前記gとの排他的論理和の論理積を取った値であることを特徴とする請求項1記載の論理回路。
  4. 2の補数表現で表された仮数部を持つ浮動小数点演算回路において、
    加算結果が正のとき、下位ビットからキャリーがないときに、先頭の非ゼロ位置を表す第一のステップ関数の関数値を出力する第一の手段と、
    加算結果が負のとき、下位ビットからキャリーがあるときに、その加算器出力をビット反転したときの先頭の非ゼロ位置を表す第二のステップ関数の関数値とを出力する第二の手段と、
    下位ビットからのキャリーの有無によって、前記第一の手段と前記第二の手段の出力を適宜選択して関数値とする第三のステップ関数の関数値とを出力する第三の手段とを有し、
    前記第三の手段によって、前記加算器出力が正の場合には、先頭の非ゼロ位置を、
    前記加算器出力が負の場合には、その加算器出力をビット反転したときの先頭の非ゼロ位置を検出することを特徴とする浮動小数点演算回路。
  5. 前記加算器出力が正の場合には、先頭の非ゼロ位置を、
    前記加算器出力が負の場合には、その加算器出力をビット反転したときの先頭の非ゼロ位置を検出して、正規化をおこなうことを特徴とする請求項4記載の浮動小数点演算回路。
  6. 2の補数表現で表された仮数部のデータによって演算をおこなう浮動小数点演算プロセッサを有するマイクロプロセッサにおいて、
    前記浮動小数点演算プロセッサは、
    加算結果が正のとき、下位ビットからキャリーがないときに、先頭の非ゼロ位置を表す第一のステップ関数の関数値を出力する第一の手段と、
    加算結果が負のとき、下位ビットからキャリーがあるときに、その加算器出力をビット反転したときの先頭の非ゼロ位置を表す第二のステップ関数の関数値とを出力する第二の手段と、
    下位ビットからのキャリーの有無によって、前記第一の手段と前記第二の手段の出力を適宜選択して関数値とする第三のステップ関数の関数値とを出力する第三の手段とを有し、
    前記浮動小数点演算プロセッサは、
    前記第三の手段によって、前記加算器出力が正の場合には、先頭の非ゼロ位置を、
    前記加算器出力が負の場合には、その加算器出力をビット反転したときの先頭の非ゼロ位置を検出することを特徴とするマイクロプロセッサ。
  7. 前記浮動小数点演算プロセッサは、
    前記加算器出力が正の場合には、先頭の非ゼロ位置を、
    前記加算器出力が負の場合には、その加算器出力をビット反転したときの先頭の非ゼロ位置を検出して、正規化をおこなうことを特徴とする請求項6記載のマイクロプロセッサ。
JP2003367203A 2003-10-28 2003-10-28 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ Expired - Fee Related JP4109181B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003367203A JP4109181B2 (ja) 2003-10-28 2003-10-28 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003367203A JP4109181B2 (ja) 2003-10-28 2003-10-28 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2005134965A JP2005134965A (ja) 2005-05-26
JP4109181B2 true JP4109181B2 (ja) 2008-07-02

Family

ID=34645275

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003367203A Expired - Fee Related JP4109181B2 (ja) 2003-10-28 2003-10-28 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP4109181B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4806453B2 (ja) * 2007-02-09 2011-11-02 富士通株式会社 演算処理装置、情報処理装置、および演算方法

Also Published As

Publication number Publication date
JP2005134965A (ja) 2005-05-26

Similar Documents

Publication Publication Date Title
US8694572B2 (en) Decimal floating-point fused multiply-add unit
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
Pineiro et al. Algorithm and architecture for logarithm, exponential, and powering computation
CN1928809A (zh) 用于执行浮点运算的系统、设备和方法
CN107273090A (zh) 面向神经网络处理器的近似浮点乘法器及浮点数乘法
JP4500358B2 (ja) 演算処理装置および演算処理方法
Qiqieh et al. Significance-driven logic compression for energy-efficient multiplier design
CN103914276A (zh) 利用浮点架构的定点除法电路
CN106250098B (zh) 用于在执行浮点运算时控制舍入的装置及方法
US8930433B2 (en) Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors
US9430190B2 (en) Fused multiply add pipeline
US20110131262A1 (en) Floating point divider and information processing apparatus using the same
JP4883251B1 (ja) 半導体集積回路及び指数算出方法
US7752250B2 (en) Rounding floating point division results
US7016930B2 (en) Apparatus and method for performing operations implemented by iterative execution of a recurrence equation
CN116070474B (zh) 一种面向ai浮点融合运算单元的验证激励产生方法
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
JP4109181B2 (ja) 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ
US20220365755A1 (en) Performing constant modulo arithmetic
US10416960B2 (en) Check procedure for floating point operations
US9229686B2 (en) Accuracy configurable adders and methods
He et al. Multiply-add fused float point unit with on-fly denormalized number processing
US7051062B2 (en) Apparatus and method for adding multiple-bit binary-strings
Arvind et al. Floating-Point Hardware Design: A Test Perspective
CN115983360A (zh) 数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051007

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20051007

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: 20080311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080403

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

Free format text: PAYMENT UNTIL: 20110411

Year of fee payment: 3

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: 20110411

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20110411

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120411

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120411

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130411

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140411

Year of fee payment: 6

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees