JP2002366346A - プロセッサ、演算装置及び演算方法 - Google Patents

プロセッサ、演算装置及び演算方法

Info

Publication number
JP2002366346A
JP2002366346A JP2001168737A JP2001168737A JP2002366346A JP 2002366346 A JP2002366346 A JP 2002366346A JP 2001168737 A JP2001168737 A JP 2001168737A JP 2001168737 A JP2001168737 A JP 2001168737A JP 2002366346 A JP2002366346 A JP 2002366346A
Authority
JP
Japan
Prior art keywords
floating
carry
bit
point number
variable
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
JP2001168737A
Other languages
English (en)
Other versions
JP3778489B2 (ja
Inventor
Yoshinao Kobayashi
芳直 小林
Takeshi Namura
健 名村
Kenya Kato
健矢 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2001168737A priority Critical patent/JP3778489B2/ja
Priority to US10/162,812 priority patent/US6988120B2/en
Publication of JP2002366346A publication Critical patent/JP2002366346A/ja
Application granted granted Critical
Publication of JP3778489B2 publication Critical patent/JP3778489B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/552Powers or roots, e.g. Pythagorean sums
    • 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

Landscapes

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

Abstract

(57)【要約】 【課題】 演算装置の回路技術により、浮動小数点数の
2乗算器を構成する演算器の数を減少させると共に、処
理速度を向上させる。 【解決手段】 浮動小数点数の2乗算器において、演算
対象である変数の演算における所定ビット分の桁上がり
に関する情報を擬似的に生成する擬似キャリー生成回路
21aと、演算結果における最上位ビット(MSB:Mo
st Significant Bit)の位置を演算対象である変数から
先見的に確定するMSB先見回路21bと、この擬似キ
ャリー生成回路21aにて生成された桁上がりに関する
情報を用い、かつこのMSB先見回路21bによって確
定された最上位ビットの位置に基づいてまるめ処理を行
いながら変数の演算を行う組合せ回路とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータのプ
ロセッサなどに用いられる演算装置に関し、特に浮動小
数点数の2乗算を行う演算装置の構成及びその演算方法
に関する。
【0002】
【従来の技術】コンピュータを用いた科学技術計算で
は、浮動小数点数で表現した数の2乗計算が頻繁に行わ
れる。そのため、浮動小数点数の2乗算器の処理速度
は、科学技術計算におけるコンピュータの処理能力に大
きく影響する。したがって、従来から浮動小数点数の2
乗算器の処理速度を向上させる種々の工夫がされてい
る。
【0003】以下、電子回路による浮動小数点数の2乗
算及び従来におけるその高速化の手法について説明す
る。浮動小数点数の乗算には、数値の積算と積算結果の
まるめ処理という2つの処理を要する。従来の浮動小数
点数の2乗算における高速化の工夫は、主として数値の
積算に対して行われている。
【0004】まず、8ビットの数a(=a7 a6 a5
a4 a3 a2 a1 a0)、b(=b7 b6 b5
b4 b3 b2 b1 b0)の積算について説明する。
図6は、数a、bの積算を説明する図である。図6に示
すように、数a、bの積算では、まず各数のビットごと
にa0b0からa7b7までの64(=8×8)個の積
項が生成され、次にこれらの積項が順次加算される。こ
のような積算を実行する積算器は、回路技術の定石的な
手法として、ワラスツリー(Wallace tree)とバイナリ
アダー(加算器)との組合せによって構成される。
【0005】2乗算では、積算する2つの数が同一であ
り、また、浮動小数点数の乗算では、最上位ビット(M
SB:Most Significant Bit)は常に「1」である。し
たがって、8ビットの数aの2乗算は、図6において、
b=a、a7=1として、図7に示すようになる。ここ
で、図7に示す積項において、 (a)aiai=ai (b)aiaj=ajai が成り立つ。(a)式は、同じ項の積算であるため、A
NDゲートそのものが必要ないこととなる。(b)式
は、aiajという積項ajaiという積項が同じ項で
あることを意味する。したがって、この2つの積項が同
じ位で加算される場合は、これらをまとめて1つの積項
とし、1つ上の位で加算すれば良いことがわかる。
【0006】この2乗算器における積項の対称性を用い
て、ワラスツリーを簡単にする手法が従来から知られて
いる。図8は、図7の2乗算に対して積項の対称性を用
い、ワラスツリーを簡単化して積項の数を減らした様子
を示す図である。図8において、例えば、s0の位の積
項は、a0a0のみであり、これに上述した(a)式を
適用できる。したがって、s0の位の値はa0がそのま
ま入ることとなる。また、s1の位の積項はa1a0と
a0a1であり、上述した(b)式が適用できる。した
がって、1つ上のs2の位にこれらをまとめた1つの積
項a1a0が加算される。さらに、このs2の位の積項
は、a2a0、a1a1及びa0a2の3つである。こ
のうち、a1a1には(a)式が適用でき、a2a0と
a0a2とには(b)式が適用できる。したがって、s
2の位では、s1の位から(b)式の適用により桁上が
りして加算されたa1a0と、(a)式の適用により残
ったa1との加算が行われることとなる。以上のように
して、図7において64個あった積項が36個に減少す
る。積項を減少させたことにより、2乗算器を構成する
演算器を減少させて回路サイズを削減することができ、
処理における遅延の蓄積を減少させて2乗算器における
処理速度の向上を図ることができる。
【0007】また、上記の積項を積算するバイナリアダ
ー(加算器)において、組合せ回路を使って下位のキャ
リー(桁上げ)から上位のキャリーを作るキャリールッ
クアヘッド(Carry Look Ahead:CLA)と呼ばれる回
路技術がある。このキャリールックアヘッドを用いるこ
とにより、加算器の積算処理における遅延を小さくする
ことができる。
【0008】また、上述したように、浮動小数点数の乗
算では、入力の有効ビット数と出力の有効ビット数とを
同じにするため、数値の積算結果に対するまるめ処理が
行われる。図9は、まるめ処理を含む乗算処理の手順を
説明するフローチャートである。図9を参照すると、浮
動小数点数の乗算では、まず、上述した手法などを用い
て積算が行われ(ステップ901)、積算結果に基づい
て、仮数におけるMSBの位置が確定する(ステップ9
02)。次に、MSBの位置に基づいてガードビットの
位置が確定し(ステップ903)、さらにまるめ処理の
対象であるラウンドビットが確定する(ステップ90
4)。そして、ステップ901の積算結果におけるラウ
ンドビットに対して実際にまるめ処理が実行される(ス
テップ905)。このまるめ処理の結果、桁上がりが発
生する場合は、指数部の値に「1」を加算する(ステッ
プ906)。以上の浮動小数点数の演算方法及びまるめ
処理の方法は、IEEE(Institute of Electrical an
d Electronics Engineers:米国電気電子学会)754
に準拠している。
【0009】
【発明が解決しようとする課題】上述したように、従来
から浮動小数点数の2乗算器の処理速度を向上させる工
夫はなされているが、今日、コンピュータの処理能力に
対する要求から、浮動小数点数の2乗算器においてもさ
らなる高速化が求められている。
【0010】そこで、本発明は、浮動小数点数の積算
(仮数の積算)を論理圧縮することにより、浮動小数点
数の2乗算器を構成する演算器の数を減少させると共
に、その処理速度を向上させることを目的とする。
【0011】また、本発明は、浮動小数点数の積算とそ
の積算結果に対するまるめ処理とを並列に行うことによ
り、浮動小数点数の2乗算器の処理速度を向上させるこ
とを他の目的とする。
【0012】
【課題を解決するための手段】上記の目的を達成する本
発明は、2進法で表された所定の変数を保持するレジス
タと、このレジスタから演算対象の変数を読み出して種
々の演算を行う演算装置とを備えたプロセッサにおい
て、この演算装置は、変数の演算における所定ビット分
の桁上がりに関する情報を擬似的に生成する擬似キャリ
ー生成回路と、この擬似キャリー生成回路にて生成され
た桁上がりに関する情報を用いて変数の演算を行う組合
せ回路とを備えることを特徴とする。ここで、桁上がり
に関する情報(キャリー)を擬似的に生成するとは、実
際に数値計算を行った結果としてキャリーを得るのでは
なく、組合せ回路(擬似キャリー生成回路)を用いてキ
ャリーのみを先読みして生成することを意味する。さら
にここで、この擬似キャリー生成回路は、演算における
まるめ処理の対象となるビットに対して、この桁上がり
に関する情報を生成する。
【0013】また、本発明は、2進法で表された所定の
変数を保持するレジスタと、このレジスタから演算対象
の変数を読み出して種々の演算を行う演算装置とを備え
たプロセッサにおいて、この演算装置は、変数の演算に
おける所定ビット分の桁上がりを先読みする擬似キャリ
ー生成回路と、この擬似キャリー生成回路による先読み
の結果を用いて変数の演算を行う組合せ回路とを備える
ことを特徴とする。
【0014】さらに、本発明は、2進法で表された所定
の変数を保持するレジスタと、このレジスタから演算対
象の変数を読み出して種々の演算を行う演算装置とを備
えたプロセッサにおいて、この演算装置は、変数におけ
る下位所定ビット分の値に対して、数値を計算した場合
の桁上がりに関する情報を生成する擬似キャリー生成回
路と、この桁上がりに関する情報を加味して上位ビット
の値の計算を行う組合せ回路とを備えることを特徴とす
る。
【0015】さらにまた、本発明は、2進法で表された
所定の変数を保持するレジスタと、このレジスタから演
算対象の変数を読み出して種々の演算を行う演算装置と
を備えたプロセッサにおいて、この演算装置は、変数の
演算に伴うまるめ処理に用いるラウンドビットの位置に
関する情報を、演算対象である変数から直接求める第1
の組合せ回路と、この第1の組合せ回路により求められ
たラウンドビットの位置に関する情報を用いてまるめ処
理を実行しながら、変数の演算を行う第2の組合せ回路
とを備えることを特徴とする。より詳しくは、この第2
の組合せ回路は、演算対象である変数の下位の桁から順
に計算を行うと共に、この第1の組合せ回路にて求めら
れたラウンドビットの位置に関する情報を取得し、検出
されたラウンドビットの位置まで計算が進んだ場合にこ
のラウンドビットの値を確定し、確定したラウンドビッ
トの値を加味してさらに上位の桁の計算を行う。
【0016】また、本発明は、2進法で表された所定の
変数を保持するレジスタと、このレジスタから演算対象
の変数を読み出して種々の演算を行う演算装置とを備え
たプロセッサにおいて、この演算装置は、演算結果にお
ける最上位ビット(MSB:Most Significant Bit)の
位置を、演算対象である変数から先見的に確定するMS
B先見回路と、このMSB先見回路によって確定された
最上位ビットの位置に基づいてまるめ処理を行う組合せ
回路とを備えることを特徴とする。
【0017】さらに、本発明は、2進法で表された所定
の変数を保持するレジスタと、このレジスタから演算対
象の変数を読み出してこの変数の2乗計算を行う演算装
置とを備えたプロセッサにおいて、この演算装置は、演
算対象の変数を√2と比較し、比較結果に基づいて、演
算結果における最上位ビット(MSB:Most Significa
nt Bit)の位置を確定するMSB先見回路と、このMS
B先見回路によって確定された最上位ビットの位置に基
づいてまるめ処理を行う組合せ回路とを備えることを特
徴とする。
【0018】また、本発明は、2進法で表された所定の
浮動小数点数の乗算を行う演算装置において、浮動小数
点数を保持するレジスタから演算対象の浮動小数点数を
読み出す手段と、読み出された浮動小数点数における所
定ビット分の桁上がりに関する情報を生成する手段と、
この桁上がりに関する情報を加味して演算対象である浮
動小数点数の仮数の積算を行う手段とを備えることを特
徴とする。ここで、この桁上がりに関する情報を生成す
る手段は、演算対象の浮動小数点数の仮数における下位
所定ビット分の値に対して桁上がりに関する情報を生成
し、積算を行う手段は、この桁上がりに関する情報を加
味して仮数の上位ビットの値の積算を行うことを特徴と
する。
【0019】さらに、本発明は、2進法で表された所定
の浮動小数点数の乗算を行う演算装置において、浮動小
数点数を保持するレジスタから演算対象の浮動小数点数
を読み出す手段と、この浮動小数点数の乗算における所
定ビット分の桁上がりを先読みする手段と、この桁上が
りの先読みの結果を用いて演算対象である浮動小数点数
の乗算を行う手段とを備えることを特徴とする。
【0020】さらにまた、本発明は、2進法で表された
所定の浮動小数点数の乗算を行う演算装置において、浮
動小数点数を保持するレジスタから演算対象の浮動小数
点数を読み出す手段と、この浮動小数点数の乗算に伴う
まるめ処理に用いる情報を、演算対象である浮動小数点
数から直接求める手段と、求められたまるめ処理に用い
る情報を用いてまるめ処理を実行しながら、この浮動小
数点数の仮数の積算を行う手段とを備えることを特徴と
する。
【0021】また、本発明は、2進法で表された所定の
浮動小数点数の乗算を行う演算装置において、浮動小数
点数を保持するレジスタから演算対象の浮動小数点数を
読み出す手段と、この浮動小数点数の乗算結果における
最上位ビット(MSB:MostSignificant Bit)の位置
を、この浮動小数点数自体の仮数から直接求める手段と
を備えることを特徴とする。
【0022】さらに、本発明は、2進法で表された所定
の浮動小数点数の2乗計算を行う演算装置において、浮
動小数点数を保持するレジスタから演算対象の浮動小数
点数を読み出す手段と、読み出された浮動小数点数の仮
数を√2と比較し、比較結果に基づいて、演算結果にお
ける最上位ビット(MSB:Most Significant Bit)の
位置を確定する手段とを備えることを特徴とする。
【0023】また、本発明は、2進法で表された所定の
浮動小数点数の乗算を行う演算装置の演算方法におい
て、浮動小数点数を保持するレジスタから演算対象の浮
動小数点数を読み出すステップと、読み出された浮動小
数点数の仮数における下位所定ビット分の値に対して、
数値を計算した場合の桁上がりに関する情報を生成する
ステップと、この桁上がりに関する情報を加味して上位
ビットの値の計算を行うステップとを含むことを特徴と
する。
【0024】さらに、本発明は、2進法で表された所定
の浮動小数点数の乗算を行う演算装置の演算方法におい
て、浮動小数点数を保持するレジスタから演算対象の浮
動小数点数を読み出すステップと、読み出された浮動小
数点数の仮数を下位の桁から順に計算すると共に、まる
め処理に用いるラウンドビットの位置を検出するステッ
プと、検出されたラウンドビットの位置まで計算が進ん
だ場合にこのラウンドビットの値を確定するステップ
と、確定したラウンドビットの値を加味してさらに上位
の桁の計算を行うステップとを含むことを特徴とする。
【0025】
【発明の実施の形態】以下、添付図面に示す実施の形態
に基づいて、この発明を詳細に説明する。本発明は、浮
動小数点数の2乗算器を高速化する手法として、 ・浮動小数点数の下位ビットの積算におけるキャリーの
先読みを行う。 ・浮動小数点数の積算結果におけるMSBを先見的に確
定することにより、積算結果のまるめ処理を当該積算と
並列に行う。 という2つの手法を提案する。本実施の形態では、これ
らの手法を実現する組合せ回路(後述する擬似キャリー
生成回路及びMSB先見回路)を組み込んだ演算装置を
提供する。
【0026】図1は、本実施の形態の演算装置が用いら
れるプロセッサの構成例を示す図である。図1を参照す
ると、プロセッサ100は、アドレス生成器11とデコ
ーダ12とを備えた制御部10、演算装置21と汎用レ
ジスタ22とを備えたデータ・パス20、及びメモリ2
00にアクセスするための外部バス・インタフェース3
0を備える。このプロセッサ100において、まず、制
御部10のデコーダ12が、メモリ200に展開された
プロセスの命令を、外部バス・インタフェース30を介
して入力し、復号してアドレス生成器11とデータ・パ
ス20の演算装置21とに送る。そして、アドレス生成
器11が受け取った命令に基づいてアドレスを生成し、
メモリ200の該当アドレスからデータが読み出されて
データ・パス20の汎用レジスタ22に送られる。そし
て、演算装置21と汎用レジスタ22との間でデータの
流れが循環する(CPUサイクル)。
【0027】また、演算装置21は、浮動小数点数の2
乗計算を行う演算手段である組合せ回路と共に、浮動小
数点数の下位ビットの積算におけるキャリーの先読みを
行うキャリー先読み手段としての組合せ回路である擬似
キャリー生成回路21aと、浮動小数点数の積算結果に
おけるMSBを先見的に確定するMSB先見手段として
の組合せ回路であるMSB先見回路21bとを備える。
【0028】本発明の対象である浮動小数点数の2乗算
器は、図1に示した演算装置21における2乗算の機能
を特に限定して最適化したものである。したがって、こ
の演算装置21を備えたプロセッサ100は、3次元グ
ラフィックスエンジンや科学技術計算などの用途におけ
る専用計算機として用いられる。
【0029】次に、上述した浮動小数点数の2乗算器を
高速化する2つの手法について詳細に説明する。 (1)キャリーの先読みにより浮動小数点数の積算を高
速化する手法 浮動小数点数の演算では、仮数の上位ビットは有効ビッ
トとして使われるが、下位ビットに関してはまるめ処理
の対象になるので、値の如何によらず、キャリーの有無
と、1になっているビットがあるかどうかの判断のみが
必要となる。そこで、下位ビットの部分を実際に計算す
るのではなく、この下位ビットに関する情報(キャリー
の有無と1になっているビットの有無)を適当な組合せ
回路(擬似キャリー生成回路21a)を用いて生成でき
れば、簡単な回路構成で浮動小数点数の2乗算における
数値の積算を高速化できる。
【0030】ここで、擬似キャリー生成回路21aを構
成するため、浮動小数点数の2乗算におけるキャリー信
号の個数とまるめ信号について考察する。図8に示した
計算例に関して、キャリー信号の個数とまるめ信号とを
下位ビットから順にまとめる。 <s0の位について>s0の位は、加算する項がa0だけなの
で、加算結果はa0であり、キャリーは発生しない。まる
めの結果はa0になる。よって、この桁からのキャリー信
号をCarry0、まるめ信号をRound0とすると次式が成立す
る。 s0 = a0 Carry0 = 0 Round0 = a0
【0031】<s1の位について>s1の位は、加算する項
が無いのでキャリーは発生せず、まるめの結果は保存さ
れる。よって、この桁からのキャリー信号をCarry1、ま
るめ信号をRound1とすると次式が成立する。 s1 = 0 Carry1 = 0 Round1 = a0
【0032】<s2の位について>ここでは、a1、a1a0の
二つの項が加算される。これに、下位からのCarry1を加
算すれば良いが、上記s0、s1の位についての検討に基づ
き、Carry1は常に0である。したがって、a1a0のビット
パターンと出力の関係は次の真理値表にしたがう。 a1 a0 a1 a1a0 Carry1 Total 0 0 0 1 1 0 1 1 1 1 1 1 2 有効項数の総計が2以下なので、キャリーは1本であ
り、まるめの結果が更新される。したがって、この桁か
らのキャリー信号をCarry2、まるめ信号をRound2とする
と次式が成立する。 Carry2 = a1a0 Round2 = Round1 + a1・−a0 = a0 + a1
【0033】<s3の位について>ここでは、a2a0の項が
加算される。そして、キャリー信号Carry3とまるめ信号
Round3の真理値表は次のようになる。 a2 a1 a0 a2a0 Carry2 Total 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 2 よって、この桁からのキャリー信号Carry3、まるめ信号
Round3について、次式が成立する。 Round3 = Round2 + −a2・a1・a0 + a2・−a1・a0
= a0 + a1 Carry3 = a2・a1・a0
【0034】<s4の位について>ここでは、a2、a3a0、
a2a1の各項が加算される。そして、キャリー信号Carry4
とまるめ信号Round4の真理値表は次のようになる。 a3 a2 a1 a0 a2 a3a0 a2a1 Carry3 Total 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 2 0 1 1 1 1 1 1 3 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 2 1 1 1 0 1 1 2 1 1 1 1 1 1 1 1 4 これにより、Round4、Carry4の真理値表は次のようにな
る。 a3 a2 a1 a0 Total Round4 Carry4 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 2 1 0 1 1 1 3 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 2 1 1 1 1 0 2 1 1 1 1 1 4 1 よって、この桁からのキャリー信号Carry4、まるめ信号
Round4について、次式が成立する。 Round4 = Round3 +([a3..a0] = 0100, 0101, 0111, 1001, 1011, 1100) =(a0 + a1)+([a3..a0] = 0100, 1100) = a0 + a1 + a2 Carry4a = a2a1 Carry4b = a3a2a0
【0035】<s5の位について>ここでは、a4a0 a3a1
の項が加算される。そして、キャリー信号Carry5とまる
め信号Round5の真理値表は次のようになる。 a4 a3 a2 a1 a0 a4a0 a3a1 Carry4 Total 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 2 0 1 1 1 1 1 2 3 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 2 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 2 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 2 1 1 1 0 0 1 1 1 0 1 1 1 2 1 1 1 1 0 1 1 2 1 1 1 1 1 1 1 2 4 これにより、Round5及びCarry5の真理値表は次のように
なる。 a4 a3 a2 a1 a0 Total Carry5 Round5 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 2 1 0 1 1 1 1 3 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 2 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 2 1 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 2 1 1 1 1 0 0 1 1 1 0 1 2 1 1 1 1 1 0 2 1 1 1 1 1 1 4 2 ここで、Carry5の擬似キャリー生成回路を作る。上の真
理値表のうちで、Carry5の値を「1」または「2」にす
る項を集めると、次のようになる。 a4 a3 a2 a1 a0 Carry5 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 2 これから、Carry5の主項は、a3a2a1 a4a2a1a0 a4a3a2
a0 a4a3a1a0 の4つが見つかる。この主項を見つける
手法は、論理圧縮の手法として知られているクワイン・
マクラスキー法を用いることができる。ここで見つかっ
た3つの主項とCarry5との関係を調べると、 pt0 = a3a2a1 pt1 = a4a2a1a0 pt2 = a4a3a2a0 pt3 = a4a3a1a0 a4 a3 a2 a1 a0 pt0 pt1 pt2 pt3 Carry5 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 2 (i) ここで、2つの擬似キャリーを作るとすると、(i)式
からpt0、pt1、pt2、pt3を2つのグループに分ければ良
いことがわかる。分け方は任意なので、例えば、 Carry5a = pt0 = a3a2a1 Carry5b = pt1 + pt2 + pt3 = a4a0(a3a2 + a2a1
+ a1a3) とすることができる。また、Round5は、次の論理式によ
り作ることができる。 Round5 = a2 + a1 + a0 この3つの式によって2乗回路のs5までの論理を代理さ
せることができる。
【0036】<s6の位について>ここでは、a3、a5a0、
a4a1、a3a2 の項が加算される。そして、項数の総計の
真理値表は次のようになる。 a5 a4 a3 a2 a1 a0 a3 a5a0 a4a1 a3a2 Carry5 Total 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 0 1 1 2 0 0 1 1 0 1 1 1 2 0 0 1 1 1 0 1 1 1 3 0 0 1 1 1 1 1 1 1 3 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 2 0 1 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 2 0 1 1 0 1 1 1 1 1 3 0 1 1 1 0 0 1 1 2 0 1 1 1 0 1 1 1 1 3 0 1 1 1 1 0 1 1 1 1 4 0 1 1 1 1 1 1 1 1 2 5 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 2 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 2 1 0 1 1 0 0 1 1 2 1 0 1 1 0 1 1 1 1 3 1 0 1 1 1 0 1 1 1 3 1 0 1 1 1 1 1 1 1 3 1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 2 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 3 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 2 1 1 1 0 1 0 1 1 2 1 1 1 0 1 1 1 1 1 1 4 1 1 1 1 0 0 1 1 2 1 1 1 1 0 1 1 1 1 1 4 1 1 1 1 1 0 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 2 6 上の真理値表をCarry6とRound6について整理すると、次
のようになる。 a5 a4 a3 a2 a1 a0 Total Carry6 Round6 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 0 2 1 0 0 1 1 0 1 2 1 0 0 1 1 1 0 3 1 1 0 0 1 1 1 1 3 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 2 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 2 1 0 1 1 0 1 1 3 1 1 0 1 1 1 0 0 2 1 0 1 1 1 0 1 3 1 1 0 1 1 1 1 0 4 2 0 1 1 1 1 1 5 2 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 2 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 2 1 1 0 1 1 0 0 2 1 1 0 1 1 0 1 3 1 1 1 0 1 1 1 0 3 1 1 1 0 1 1 1 1 3 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 2 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 3 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 2 1 1 1 1 0 1 0 2 1 1 1 1 0 1 1 4 2 1 1 1 1 0 0 2 1 1 1 1 1 0 1 4 2 1 1 1 1 1 0 4 2 1 1 1 1 1 1 6 3 これを、さらにCarry6について整理すると、次のように
なる。 a5 a4 a3 a2 a1 a0 Carry6 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 2 0 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 2 1 1 1 1 0 0 1 1 1 1 1 0 1 2 1 1 1 1 1 0 2 1 1 1 1 1 1 3 これを論理圧縮すると、Carry6の主項は、次のように求
めることができる。 a5 a4 a3 a2 a1 a0 Carry6 - - 1 1 - - 1 (i) - 1 1 - 1 - 1 (ii) 1 - 1 - - 1 1 (iii) 1 1 - - 1 1 1 (iv) - 1 - 1 1 1 1 (v) ここで、各主項について出力への寄与を調べると、次の
ようになる。 a5 a4 a3 a2 a1 a0 (i) (ii) (iii) (iv) (v) Carry6 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 2 0 1 1 1 1 1 1 1 1 2 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 1 (vi) 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 (vi) 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 2 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 2 (vii) 1 1 1 1 1 0 1 1 2 1 1 1 1 1 1 1 1 1 1 1 3
【0037】上の表において、主項だけを考えると、
(vi)から(i)と(iii)とは同一グループとなる。一
方、(vii)から(i)と(iii)とは別グループとな
り、これは矛盾する。この矛盾を解消するためには、主
項が(vii)で発火し(値が1となり)、(vi)で発火
しない(値が1とならない)ような新しい項を考える必
要がある。そこで、 (iii)’= a5a4a3a0 なる項を新たに作成する。この(iii)’は、(iii)の
部分項になっている。このとき、3本のキャリーは次の
ようになる。 Carry6a =(i)+(iii)+(iv)+(v) Carry6b =(ii) Carry6c =(iii)’ また、Round6は、次の論理式により作ることができる。 Round6 = a3 + a2 + a1 + a0 以上のように、包含関係だけでは擬似キャリーを作れな
くなる場合がある。この場合に、上記の(iii)’のよ
うな新しい項を作ってつじつまを合わせる。新たに作っ
た項は主項ではなく、何かの部分項になっている。
【0038】<s7の位について>ここではa6a0、a5a1、
a4a2の項が加算される。そして、項数の総計の真理値表
は次のようになる。 a6 a5 a4 a3 a2 a1 a0 a6a0 a5a1 a4a2 Carry6 Total 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 2 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 2 0 0 1 1 1 0 1 1 1 2 0 0 1 1 1 1 0 1 2 3 0 0 1 1 1 1 1 1 2 3 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 2 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 2 0 1 0 1 1 1 1 1 1 2 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 2 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 2 0 1 1 0 1 1 1 1 1 1 3 0 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 2 0 1 1 1 0 1 1 1 2 3 0 1 1 1 1 0 0 1 1 2 0 1 1 1 1 0 1 1 2 3 0 1 1 1 1 1 0 1 1 2 4 0 1 1 1 1 1 1 1 1 3 5 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 1 1 2 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 2 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 1 1 2 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 3 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 2 1 0 1 1 1 0 0 1 1 2 1 0 1 1 1 0 1 1 1 1 3 1 0 1 1 1 1 0 1 2 3 1 0 1 1 1 1 1 1 1 2 4 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 2 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 1 2 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 2 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 3 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 1 2 1 1 0 1 1 1 0 1 1 2 1 1 0 1 1 1 1 1 1 1 3 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 3 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 2 1 1 1 0 1 1 0 1 1 2 1 1 1 0 1 1 1 1 1 1 1 4 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 2 1 1 1 1 0 1 0 1 1 2 1 1 1 1 0 1 1 1 1 2 4 1 1 1 1 1 0 0 1 1 2 1 1 1 1 1 0 1 1 1 2 4 1 1 1 1 1 1 0 1 1 2 4 1 1 1 1 1 1 1 1 1 1 3 6 上の真理値表をCarry7とRound7について整理すると、次
のようになる。 a6 a5 a4 a3 a2 a1 a0 Total Carry7 Round7 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 2 1 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 0 2 1 0 0 1 1 1 0 1 2 1 0 0 1 1 1 1 0 3 1 1 0 0 1 1 1 1 1 3 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 2 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 2 1 0 1 0 1 1 1 1 2 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 2 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 2 1 0 1 1 0 1 1 1 3 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 2 1 0 1 1 1 0 1 1 3 1 1 0 1 1 1 1 0 0 2 1 0 1 1 1 1 0 1 3 1 1 0 1 1 1 1 1 0 4 2 0 1 1 1 1 1 1 5 2 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 2 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 2 1 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 2 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 3 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 2 1 1 0 1 1 1 0 0 2 1 1 0 1 1 1 0 1 3 1 1 1 0 1 1 1 1 0 3 1 1 1 0 1 1 1 1 1 4 2 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 2 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 2 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 2 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 3 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 2 1 1 1 0 1 1 1 0 2 1 1 1 0 1 1 1 1 3 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 3 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 2 1 1 1 1 0 1 1 0 2 1 1 1 1 0 1 1 1 4 2 1 1 1 1 0 0 0 1 1 1 1 0 0 1 2 1 1 1 1 1 0 1 0 2 1 1 1 1 1 0 1 1 4 2 1 1 1 1 1 0 0 2 1 1 1 1 1 1 0 1 4 2 1 1 1 1 1 1 0 4 2 1 1 1 1 1 1 1 6 3 これを、さらにCarry7について整理すると、次のように
なる。 a6 a5 a4 a3 a2 a1 a0 Carry7 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 0 2 0 1 1 1 1 1 1 2 1 0 0 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 2 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 2 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 2 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 2 1 1 1 1 1 1 0 2 1 1 1 1 1 1 1 3 これを論理圧縮して、Carry7の主項を取り出すと、次の
ようになる。 a6 a5 a4 a3 a2 a1 a0 Carry7 - - 1 1 1 - - 1 - 1 1 - 1 1 - 1 1 1 - - - 1 1 1 1 - 1 - 1 - 1 1 - - 1 - 1 1 1 1 - 1 - 1 - 1 1 1 - 1 - 1 1 1 - 1 - 1 1 - - 1 1 1 - 1 1 1 - 1 - 1 1 - - 1 1 - 1 1 1 - 1 1 - 1 1 1 1 1 - 1 - - 1 1
【0039】以上、図8におけるs0からs7までの各桁に
ついて、キャリー信号の個数及びまるめ信号の検討を行
った。図2は、上述した、キャリー信号の個数及びまる
め信号を求め、擬似キャリーを生成する手法を一般化し
たフローチャートである。図2に示すように、まず、キ
ャリーに寄与する主項が検出される(ステップ20
1)。次に、1つのキャリーに対して複数の主項が発火
するものがあるかどうかが判断され、そのような主項が
存在する場合は、これらの主項が1つのグループにまと
められる(ステップ202、203)。また、複数のキ
ャリーに対して複数の主項が発火するものがあるかどう
かが判断され、そのような主項が存在する場合は、同一
の主項の重複を許し、かつキャリーの個数に合わせて、
主項がグループ分けされる(ステップ204、20
5)。
【0040】次に、主項の複数のグループが発火する個
数とキャリーの数とを一致させる処理が行われる(ステ
ップ206)。ステップ205までの処理が終わった段
階で、擬似キャリーが1本の場合、当該擬似キャリーの
値が一意的に決まる。また、擬似キャリーが2本の場
合、当該擬似キャリーの取り得る値は一般に複数存在す
る。また、擬似キャリーが3本以上になると、当該擬似
キャリーの値は決まらないことが多く、特殊な場合分け
が必要となる。例えば上述のs0からs7までの各桁につい
て調べると、s0及びs1は、キャリーの個数が0であるか
ら対象外である。s2及びs3は、キャリーの個数が1であ
るから擬似キャリーの値が一意的に決まる。s4は、キャ
リーの個数が2であるが、主項の数とキャリーの数とが
一致しているので、擬似キャリーの値が一意的に決ま
る。s5は、キャリーの個数が2であり、擬似キャリーの
取り得る値は複数存在する。s6及びs7は、キャリーの個
数が3であり、主項だけでは擬似キャリーの値が決まら
ない。ここでは、s5の場合に擬似キャリーの取り得る値
が複数であるので、ステップ206において、主項の複
数のグループが発火する個数とキャリーの数とを一致さ
せ、2つの擬似キャリーを作成している。
【0041】次に、ステップ202乃至ステップ206
の処理において擬似キャリーの値が決まらない場合、適
当な主項が部分項に分けられ、ステップ202に戻って
これ以降の処理が繰り返され、擬似キャリーの値が決定
される(ステップ207、208)。上記の例では、s6
の場合が該当し、主項を部分項へ分割する操作を行って
3つの擬似キャリーの値を決めている。
【0042】以上のような手順で擬似キャリーを作成す
ることができる。しかしながら、上述したようにs6以上
の上位ビットに関しては、擬似キャリーの取り得る値が
増加し、これを一意的に決定するための処理が複雑にな
るので、キャリーの先読みを行うことは現実的ではな
い。そこで、本実施の形態では、s5の桁から発生する2
つの擬似キャリーをf0 = Carry5a、f1 = Carry5bと
し、まるめをr5として、元の式に代入すると、浮動小数
点数の2乗計算は図3に示すようになる。
【0043】図3に示すように、本実施の形態では下位
6ビットの演算が不要となるため、この部分の演算にお
ける遅延の蓄積を削減することができ、動作速度が向上
する。上記s5までの擬似キャリーf0、f1は、2ゲート・
ディレイ(2ゲート分の遅延)で作ることができ、s6
の桁のワラスツリーの入力となる。一方、s6の桁に元々
あった4つの積項a3、a5a0、a4a1、a3a2は、1ゲート・
ディレイで作ることができる。したがって、差引き1ゲ
ート・ディレイのコストで擬似キャリー生成回路21a
が導入されたことになる。また、図3と従来技術におい
て説明した図8とを比較すると、積項の数は、図8にお
ける36個から29個に減少しており、回路サイズの削
減にも効果があることがわかる。
【0044】実際の2乗算器は、VHDLやVerilog H
DLなどのハードウェア記述言語(HDL:Hardware D
escription Language)にて図3に示したような演算式
を記述し、CADにてこの演算式を満足する回路設計を
行うことにより作成する。図5は、8ビット×8ビット
の2乗算器の構成例を示す図である。図5において、r
5、f0、f1とある出力が、図3におけるr5、f0、f1
の値にそれぞれ対応する。したがって、この部分の組合
せ回路が擬似キャリー生成回路21aに相当し、これら
の出力に、下位6ビット分の計算が集約されることとな
る。なお、本実施の形態では、浮動小数点数の2乗計算
を対象としているが、キャリーの先読みにより浮動小数
点数の積算を高速化する手法自体は、他の演算において
も利用することができる。すなわち、本手法は、乗算に
おける積項の加算のような多数のビットを加算する場合
であって、かつ下位の数ビットに関しては、まるめ処理
などによって値の如何によらず、キャリーの有無と1に
なっているビットがあるかどうかの判断のみが必要とな
る場合に、当該下位ビットに対して、キャリーに関する
情報のみを先読みし、数値計算を省略するものである。
したがって、2乗計算のみならず、浮動小数点数の乗算
など、同様の条件が該当する演算であれば、本手法を利
用することが可能である。
【0045】ところで、本実施の形態における2乗算、
すなわち8ビットの浮動小数点数の2乗算において、最
上位のs15、s14、s13、s12は、加算する積項がa6、a5、
a4のみで構成されできているので、この部分の計算を簡
略化することができる。s11からは最大で2個のキャリ
ーが出てくるので、これをCarry11としてs12とCarry12
の真理値表を求めると、次のようになる。 a6 a5 a4 Carry11 a6 a4 a6a5 s12 Carry12 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 2 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 2 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 2 0 1 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 2 1 0 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 2 1 1 0 0 2 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 2 1 0 1 0 2 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 2 1 1 1 2 1 1 1 1 2 ここで得られたCarry12を使って、s13、Carry13の真理
値表を求めると、次のようになる。 a6 a5 a4 Carry11 Carry12 a5 s13 Carry13 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 2 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 2 1 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 2 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 2 2 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 2 2 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 1 ここで得られたCarry13を使って、さらにs14、s15(=
Carry14)の真理値表を求めると、次のようになる。 a6 a5 a4 Carry11 Carry13 a6 1 S14 S15 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 2 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 2 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 2 1 0 1 0 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 2 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 2 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 2 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 これらの関係からs6、s5、s4、Carry11が決まれば、s12
より上位の擬似キャリーを全て決定することができる。
この擬似キャリーを使ってs14、s15を決めることができ
る。例えば、S14は、次の計算により求めることができ
る。 S14 ≦ '1'when S(6 downto 5)="00" or S(6 downto 5)="11" or (S(6 downto 5)="01" and Carry11 =0) or ((S(5 downto 4)="01" or S(5 downto 4)="10") and Carry11 =1 ) or (S(6= ='1' and S(4)='1' Carry11 =2) 以上のようにして、Carry11が決まれば、S12、S13、S1
4、S15は、全て2ゲート・ディレイで確定することがで
きる。これは、この部分にアダーを置いて下位から順次
決定するよりも速い。しかしながら、上位ビットはワラ
スツリーのディレイの下り坂にある部分であるため、様
々な回路構成を取ることが可能である。例えば、この部
分に2段キャリースキップアダーを用いても、同程度の
動作速度を実現することができる。
【0046】さて、本実施の形態及び従来の乗算器に関
して、s6のワラスツリーの出力が確定するまでのゲート
・ディレイを比較すると、通常の乗算器を2乗計算に用
いた場合で7ゲート・ディレイとなる。また、図8に示
したように2乗回路の特性を使って項数を削減した場合
で6ゲート・ディレイとなる。これに対し、本実施の形
態によるキャリーの先読みを行った場合、3ゲート・デ
ィレイとなる。したがって、本実施の形態による擬似キ
ャリー生成回路21aを演算装置21に組み込むことに
よって、2乗回路の処理速度を大幅に高速化することが
できる。
【0047】なお、擬似キャリー生成回路21aを、よ
り高位の桁に対して作ることは、論理的には可能であ
る。しかし、擬似キャリーを組合せ回路で作るために必
要な積項の数は、Carry6で6、Carry7で10となり、桁
が上がるに伴って高速化という擬似キャリー生成回路の
利点が徐々になくなる。また、Carry7以上の高位の擬似
キャリーを生成するには、主項だけでなく部分項が必要
になるため、計算にようする時間がさらに増すこととな
る。そして、キャリーの個数が多い場合は、通常の演算
回路における手法でキャリーを扱った方が回路サイズも
少なくなり、回路ディレイも少なくなる。つまり高位の
桁に関しては最適に組まれた擬似キャリー発生回路と真
のキャリーを発生させる演算回路は一致し、擬似キャリ
ーを用いる意義はなくなる。
【0048】(2)浮動小数点数の積算結果におけるM
SBを先見的に確定し、積算結果のまるめ処理を当該積
算と並列に行う手法 浮動小数点数の乗算では、入力の有効ビット数と出力の
有効ビット数とを同じにするため、仮数の積算結果に対
するまるめ処理が行われる。まるめ処理では、浮動小数
点数の積算結果の何桁目をラウンドビットとしてまるめ
るかを決めるために、当該積算結果におけるMSBの
「1」の位置を確定する必要がある。そのため、通常は
浮動小数点数の積算が完了した後にまるめ処理が行われ
ている。そこで、適当な組合せ回路(MSB先見回路2
1b)を用いてMSBの「1」の位置を先見的に確定す
ることができれば、これに基づいてラウンドビットの位
置を確定できるため、まるめ処理を浮動小数点数の積算
と並行して行うことが可能となり、これにより浮動小数
点数の2乗計算を高速化することができる。
【0049】まず、本実施の形態によるMSBの位置を
先見的に確定する手法の説明の準備として、浮動小数点
数の積算が完了した後にまるめ処理を行う通常の手法に
ついて説明する。従来の技術において説明したように、
IEEE754に基づく通常のまるめ処理を含む浮動小
数点数の乗算処理は、図9のフローチャートにしたが
う。
【0050】具体的な計算例を挙げて、図9にしたがっ
た浮動小数点数の2乗算の手順を説明する。図4は、数
値4/3の2進数表記(ただし、有効桁数は24ビッ
ト)である1.01010101010101010101011の2乗算におけ
る積算結果を示す図である。図4に示す積算結果である 011100011100011100011100111000111000111000111001 からMSBがわかるので(図9のステップ902参
照)、ここから24ビットを切り取り、25ビット目を
ガードビットとする(ステップ903参照)。そして、
26ビット目以降、すなわち下位22ビットについて、
次のORを取り、ラウンドビットとする(ステップ90
4参照)。 RoundBit = '0' when ("1000111000111000111001"="0
000000000000000000000") else '1' したがって、図4の積算結果においては、 RoundBit = '1' となる。
【0051】そして、下位から23ビット目、すなわち
ガードビットの値が「1」であり、かつラウンドビット
または下位から24ビット目、すなわちulp(Unit o
f Least Precis)の値が「1」である場合、IEEE7
54の決めるところにより、このulpのビットに1を
加えてまるめ処理の結果とする(ステップ905参
照)。その他の場合は、上述したMSBから24ビット
目までの値をまるめ処理の結果とする。図4に示した積
算結果においては、下位から22ビット目、23ビット
目、24ビット目の値がいずれも「1」であるので、下
位から24ビット目のulpに1を加える。したがっ
て、まるめ処理の結果は、 111000111000111000111001+1 = 11100011100011100011
1010 となる。さらに、このまるめ処理によって桁上がりが発
生しMSBがずれる場合は、指数に1を加える処理を行
うが(ステップ906参照)、図4に示した例では桁上
がりは発生しないので、この処理は行われない。以上の
ようにして、積算結果に基づいてMSBの位置を検出
し、これに続く一連の処理により、まるめ処理が行われ
る。
【0052】ここで、MSBの「1」の位置を先見的に
発見する方法について考察する。浮動小数点数の乗算で
は、乗算結果が2以上の値か否かによりMSBの位置が
変わる。これから、乗算結果が2以上となるかどうかを
予め知ることができれば、MSBの位置を先見的に検出
することができる。したがって、2乗算の場合は、2乗
する浮動小数点数の仮数を√2(=21/2)と比較する
ことにより、計算結果が2以上となるかどうかがわか
り、当該計算結果におけるMSBの位置を確定すること
が可能となる。
【0053】IEEE754で規定されている単精度3
2ビットと倍精度64ビットの場合について具体的に説
明する。単精度の√2は、 √2= 1.0110 1010 0000 1001 1110 011 であり、これを2乗すると、 1.1111 1111 1111 1111 1111 111 となる。したがって、計算対象である元の数が√2以下
であれば、2乗した数は2以下になる。同様に、倍精度
の√2は、 √2= 1.0110 1010 0000 1001 1110 0110 0110 0111 1
111 0011 1010 0010 0000 1 であり、これを2乗すると、 1.1111 1111 1111 1111 1111 1111 1111 1111 1111 111
1 1111 1111 1111 1 となる。したがって、計算対象である元の数が√2以下
であれば、2乗した数は2以下になる。以上のように、
単精度、倍精度ともに、乗算対象の浮動小数点数の仮数
を√2と比較することにより、乗算結果におけるMSB
の位置を確定することができる。そして、このMSBの
位置に基づいて、当該乗算結果における指数とulp、
ガードビット、ラウンドビットが確定することとなる。
【0054】このMSBを先見的に発見する手法を、上
述した数値4/3の2進数表記である1.01010101010101
010101011の2乗算(図4参照)に適用すると、次のよ
うになる。上述したように、単精度の√2は1.0110 101
0 0000 1001 1110 011であり、これと1.01010101010101
010101011(=4/3)とを比較すると、 4/3<√2 である。したがって、仮数の積算を行うまでもなく、
(4/3)2は2よりも小さい値であることがわかり、
乗算結果におけるMSBの位置を先見的に確定すること
ができる。
【0055】さて、このMSBを先見的に発見する手法
を用いて浮動小数点数の2乗算を行う場合、まるめ処理
は仮数の積算と並列に行われる。すなわち、仮数の積算
において、まず仮数の各項における積項が生成され、生
成された積項に対してワラスツリーが動作し、バイナリ
アダーによる加算が実行されるが、この間に、MSB先
見回路21bが、上述した当該仮数と√2とを比較し、
比較結果に基づいてMSBの位置を確定し、さらにul
p、ガードビット、ラウンドビットの位置を確定する。
そして、MSB先見回路21bによって確定されたラウ
ンドビットの桁まで仮数の積算が進み、ビットの値が確
定すると、ラウンドビットが確定する。引き続いて、仮
数のさらに上位のビットに対する積算が行われるが、ラ
ウンドビットが既に確定しているため、仮数の積算が終
了すると同時にまるめ処理も終了する。
【0056】図5に示した2乗算器を用いて、MSB先
見回路21bの回路構成について説明する。 A=[1 a6 a5 a4 a3 a2 a1 a0] とすると、A>181の場合、 A×A=1XXXXXXXXXXXXXXX であり、A≦181の場合、 A×A=01XXXXXXXXXXXXXX であり、MSBの位置がずれることとなる。Aを浮動小
数点数とした場合、Aの変域は 255>A>128 なので、 [a6 a5 a4 a3 a2 a1 a0]>53 の判断を行うことによって、MSBの位置を確定できる
こととなる。図5の2乗算器では、組合せ回路501の
部分にて演算対象である浮動小数点数の下位7桁と数値
53(2進数表記で110101)とが比較され、その出力
(比較結果)によって、MSBの位置が確定される。す
なわち、この組合せ回路501がMSB先見回路21b
に相当する。
【0057】そして、 [a6 a5 a4 a3 a2 a1 a0]>53 の場合は、有効数字が[s15 s14 s13 s12 s11 s10
s9 s8]、ガードビットがs7、ラウンドビットがs6
〜s0のORとなる。このとき、s8の位に p1 = s7 &(s8+(s6 + r5)) を加算することにより、まるめ処理が実行される。この
処理は、図5の2乗算器におけるまるめ処理実行手段と
しての組合せ回路502によって行われる。また、 [a6 a5 a4 a3 a2 a1 a0]≦53 の場合は、有効数字が[s14 s13 s12 s11 s10 s9
s8 s7]、ガードビットがs6、ラウンドビットがs5
〜s0のORとなる。このとき、s7の位に p0 = s6 &(s7 + r5) を加算することにより、まるめ処理が実行される。この
処理は、図5の2乗算器におけるまるめ処理実行手段と
しての組合せ回路503によって行われる。上述した [a6 a5 a4 a3 a2 a1 a0]>53 の判断は、十分に速く、図5の2乗算器において浮動小
数点数の仮数の積算の実行中に、上記のまるめ処理の計
算を入れることができる。
【0058】以上のように、本実施の形態によれば、ま
るめ処理を浮動小数点数の仮数の積算の中に隠すことが
できる。すなわち、図9に示したステップ901の積算
が完了すると同時にまるめ処理が終了するため、ステッ
プ902以降の処理が省略されることとなる。これによ
り、浮動小数点数の2乗算の高速化を図ることができ
る。また、本実施の形態では、演算装置21にMSB先
見回路21bが組み込まれるが、浮動小数点数の仮数の
積算結果に基づいてまるめ処理を行うための加算回路が
不要となるため、全体としてゲート数が減少し、回路サ
イズの削減に寄与することとなる。
【0059】
【発明の効果】以上説明したように、本発明によれば、
浮動小数点数の積算(仮数の積算)を論理圧縮すること
により、浮動小数点数の2乗算器を構成する演算器の数
を減少させると共に、その処理速度を向上させることが
できる。
【0060】また、本発明によれば、浮動小数点数の積
算とその積算結果に対するまるめ処理とを並列に行うこ
とにより、浮動小数点数の2乗算器の処理速度を向上さ
せることができる。
【図面の簡単な説明】
【図1】 本実施の形態の演算装置が用いられるプロセ
ッサの構成例を示す図である。
【図2】 本実施の形態における擬似キャリーを生成す
る手法を説明するフローチャートである。
【図3】 本実施の形態による擬似キャリーを用いた2
乗計算を説明する図である。
【図4】 まるめ処理の具体的な計算例を説明する図で
ある。
【図5】 本実施の形態による擬似キャリー生成回路及
びMSB先見回路を含む8ビット×8ビットの2乗算器
の構成例を示す図である。
【図6】 8ビットの2変数の積算を説明する図であ
る。
【図7】 8ビット×8ビットの2乗算を説明する図で
ある。
【図8】 図7の2乗算に対して積項の対称性を用い、
ワラスツリーを簡単化して積項の数を減らした様子を示
す図である。
【図9】 まるめ処理を含む乗算処理の手順を説明する
フローチャートである。
【符号の説明】
10…制御部、11…アドレス生成器、12…デコー
ダ、20…データ・パス、21…演算装置、21a…擬
似キャリー生成回路、21b…MSB先見回路、22…
汎用レジスタ、30…外部バス・インタフェース、10
0…プロセッサ、200…メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小林 芳直 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 (72)発明者 名村 健 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 (72)発明者 加藤 健矢 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 Fターム(参考) 5B016 AA01 BA06 BB02 CA01 FA03

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから当該変数を読み出して種
    々の演算を行う演算装置とを備えたプロセッサにおい
    て、 前記演算装置は、 前記変数の演算における所定ビット分の桁上がりに関す
    る情報を擬似的に生成する擬似キャリー生成回路と、 前記擬似キャリー生成回路にて生成された桁上がりに関
    する情報を用いて前記変数の演算を行う組合せ回路とを
    備えることを特徴とするプロセッサ。
  2. 【請求項2】 前記擬似キャリー生成回路は、前記演算
    におけるまるめ処理の対象となるビットに対して、前記
    桁上がりに関する情報を生成することを特徴とする請求
    項1に記載のプロセッサ。
  3. 【請求項3】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから当該変数を読み出して種
    々の演算を行う演算装置とを備えたプロセッサにおい
    て、 前記演算装置は、 前記変数の演算における所定ビット分の桁上がりを先読
    みする擬似キャリー生成回路と、 前記擬似キャリー生成回路による先読みの結果を用いて
    前記変数の演算を行う組合せ回路とを備えることを特徴
    とするプロセッサ。
  4. 【請求項4】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから当該変数を読み出して種
    々の演算を行う演算装置とを備えたプロセッサにおい
    て、 前記演算装置は、 前記変数における下位所定ビット分の値に対して、当該
    値を計算した場合の桁上がりに関する情報を生成する擬
    似キャリー生成回路と、 前記桁上がりに関する情報を加味して上位ビットの値の
    計算を行う組合せ回路とを備えることを特徴とするプロ
    セッサ。
  5. 【請求項5】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから前記変数を読み出して種
    々の演算を行う演算装置とを備えたプロセッサにおい
    て、 前記演算装置は、 前記変数の演算に伴うまるめ処理に用いるラウンドビッ
    トの位置に関する情報を、演算対象である変数から直接
    求める第1の組合せ回路と、 前記第1の組合せ回路により求められた前記ラウンドビ
    ットの位置に関する情報を用いてまるめ処理を実行しな
    がら、前記変数の演算を行う第2の組合せ回路とを備え
    ることを特徴とするプロセッサ。
  6. 【請求項6】 前記第2の組合せ回路は、 前記変数の下位の桁から順に計算を行うと共に、前記第
    1の組合せ回路にて求められた前記ラウンドビットの位
    置に関する情報を取得し、 検出された前記ラウンドビットの位置まで計算が進んだ
    場合に前記ラウンドビットの値を確定し、 確定した前記ラウンドビットの値を加味してさらに上位
    の桁の計算を行うことを特徴とする請求項5に記載のプ
    ロセッサ。
  7. 【請求項7】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから当該変数を読み出して種
    々の演算を行う演算装置とを備えたプロセッサにおい
    て、 前記演算装置は、 演算結果における最上位ビット(MSB:Most Signifi
    cant Bit)の位置を、演算対象である変数から先見的に
    確定するMSB先見回路と、 前記MSB先見回路によって確定された最上位ビットの
    位置に基づいてまるめ処理を行う組合せ回路とを備える
    ことを特徴とするプロセッサ。
  8. 【請求項8】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから当該変数を読み出して当
    該変数の2乗計算を行う演算装置とを備えたプロセッサ
    において、 前記演算装置は、 前記変数を√2と比較し、比較結果に基づいて、演算結
    果における最上位ビット(MSB:Most Significant B
    it)の位置を確定するMSB先見回路と、 前記MSB先見回路によって確定された最上位ビットの
    位置に基づいてまるめ処理を行う組合せ回路とを備える
    ことを特徴とするプロセッサ。
  9. 【請求項9】 2進法で表された所定の変数を保持する
    レジスタと、当該レジスタから当該変数を読み出して種
    々の演算を行う演算装置とを備えたプロセッサにおい
    て、 前記演算装置は、 前記変数の演算における所定ビット分の桁上がりに関す
    る情報を擬似的に生成する擬似キャリー生成回路と、 演算結果における最上位ビット(MSB:Most Signifi
    cant Bit)の位置を、演算対象である変数から先見的に
    確定するMSB先見回路と、 前記擬似キャリー生成回路にて生成された桁上がりに関
    する情報を用い、かつ前記MSB先見回路によって確定
    された最上位ビットの位置に基づいてまるめ処理を行い
    ながら前記変数の演算を行う組合せ回路とを備えること
    を特徴とするプロセッサ。
  10. 【請求項10】 2進法で表された所定の浮動小数点数
    の乗算を行う演算装置において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出す手段と、 前記浮動小数点数における所定ビット分の桁上がりに関
    する情報を生成する手段と、 前記桁上がりに関する情報を加味して前記浮動小数点数
    の仮数の積算を行う手段とを備えることを特徴とする演
    算装置。
  11. 【請求項11】 前記桁上がりに関する情報を生成する
    手段は、前記浮動小数点数の仮数における下位所定ビッ
    ト分の値に対して前記桁上がりに関する情報を生成し、 前記積算を行う手段は、前記桁上がりに関する情報を加
    味して前記仮数の上位ビットの値の積算を行うことを特
    徴とする請求項10に記載の演算装置。
  12. 【請求項12】 2進法で表された所定の浮動小数点数
    の乗算を行う演算装置において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出す手段と、 前記乗算における所定ビット分の桁上がりを先読みする
    手段と、 前記桁上がりの先読みの結果を用いて前記浮動小数点数
    の乗算を行う手段とを備えることを特徴とする演算装
    置。
  13. 【請求項13】 2進法で表された所定の浮動小数点数
    の乗算を行う演算装置において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出す手段と、 前記浮動小数点数の乗算に伴うまるめ処理に用いる情報
    を、演算対象である当該浮動小数点数から直接求める手
    段と、 求められた前記まるめ処理に用いる情報を用いてまるめ
    処理を実行しながら、前記浮動小数点数の仮数の積算を
    行う手段とを備えることを特徴とする演算装置。
  14. 【請求項14】 2進法で表された所定の浮動小数点数
    の乗算を行う演算装置において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出す手段と、 乗算結果における最上位ビット(MSB:Most Signifi
    cant Bit)の位置を、演算対象である前記浮動小数点数
    の仮数から直接求める手段とを備えることを特徴とする
    演算装置。
  15. 【請求項15】 2進法で表された所定の浮動小数点数
    の2乗計算を行う演算装置において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出す手段と、 読み出された前記浮動小数点数の仮数を√2と比較し、
    比較結果に基づいて、演算結果における最上位ビット
    (MSB:Most Significant Bit)の位置を確定する手
    段とを備えることを特徴とする演算装置。
  16. 【請求項16】 2進法で表された所定の浮動小数点数
    の乗算を行う演算装置の演算方法において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出すステップと、 前記浮動小数点数の仮数における下位所定ビット分の値
    に対して、当該値を計算した場合の桁上がりに関する情
    報を生成するステップと、 前記桁上がりに関する情報を加味して上位ビットの値の
    計算を行うステップとを含むことを特徴とする演算方
    法。
  17. 【請求項17】 2進法で表された所定の浮動小数点数
    の乗算を行う演算装置の演算方法において、 前記浮動小数点数を保持するレジスタから演算対象の浮
    動小数点数を読み出すステップと、 前記浮動小数点数の仮数を下位の桁から順に計算すると
    共に、まるめ処理に用いるラウンドビットの位置を検出
    するステップと、 検出された前記ラウンドビットの位置まで計算が進んだ
    場合に前記ラウンドビットの値を確定するステップと、 確定した前記ラウンドビットの値を加味してさらに上位
    の桁の計算を行うステップとを含むことを特徴とする演
    算方法。
JP2001168737A 2001-06-04 2001-06-04 プロセッサ、演算装置及び演算方法 Expired - Fee Related JP3778489B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001168737A JP3778489B2 (ja) 2001-06-04 2001-06-04 プロセッサ、演算装置及び演算方法
US10/162,812 US6988120B2 (en) 2001-06-04 2002-06-04 Arithmetic unit and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001168737A JP3778489B2 (ja) 2001-06-04 2001-06-04 プロセッサ、演算装置及び演算方法

Publications (2)

Publication Number Publication Date
JP2002366346A true JP2002366346A (ja) 2002-12-20
JP3778489B2 JP3778489B2 (ja) 2006-05-24

Family

ID=19010918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001168737A Expired - Fee Related JP3778489B2 (ja) 2001-06-04 2001-06-04 プロセッサ、演算装置及び演算方法

Country Status (2)

Country Link
US (1) US6988120B2 (ja)
JP (1) JP3778489B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500233B2 (en) * 2005-04-14 2009-03-03 Microsoft Corporation Parallel filter check using an arithmetic memory location
WO2013101233A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Floating point round-off amount determination processors, methods, systems, and instructions
KR101566008B1 (ko) 2013-12-30 2015-11-05 건국대학교 산학협력단 산술 장치 및 방법
US9817661B2 (en) * 2015-10-07 2017-11-14 Arm Limited Floating point number rounding
RU2642385C1 (ru) * 2017-04-06 2018-01-24 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Устройство для вычисления функции arctg y/x

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2683340A1 (fr) * 1991-11-05 1993-05-07 Sgs Thomson Microelectronics Circuit elevateur au carre de nombres binaires.
US6018758A (en) * 1997-07-30 2000-01-25 Lucent Technologies Inc. Squarer with diagonal row merged into folded partial product array
US6393453B1 (en) * 1998-09-22 2002-05-21 Ati International Srl Circuit and method for fast squaring
US6301598B1 (en) * 1998-12-09 2001-10-09 Lsi Logic Corporation Method and apparatus for estimating a square of a number
US6766346B2 (en) * 1999-11-30 2004-07-20 Mosaid Technologies Incorporation System and method for computing a square of a number

Also Published As

Publication number Publication date
US6988120B2 (en) 2006-01-17
JP3778489B2 (ja) 2006-05-24
US20030126177A1 (en) 2003-07-03

Similar Documents

Publication Publication Date Title
KR100239029B1 (ko) 가산기와 함께 사용하기 위한 결과 정규화기 및 결과 정규화 방법과 그를 포함하는 데이터 프로세서
US4941120A (en) Floating point normalization and rounding prediction circuit
KR100955557B1 (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
EP1857925A2 (en) Method and apparatus for decimal number multiplication using hardware for binary number operations
EP1752870B1 (en) Multiplier
JPH05216620A (ja) 浮動小数点を正規化する方法及び回路
JPH08212058A (ja) 加算オーバフロ検出回路
US6542915B1 (en) Floating point pipeline with a leading zeros anticipator circuit
US6061707A (en) Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system
JP2002366346A (ja) プロセッサ、演算装置及び演算方法
US5867413A (en) Fast method of floating-point multiplication and accumulation
JPH04270415A (ja) 高性能加算器
US9448767B2 (en) Three-term predictive adder and/or subtracter
JP3306497B2 (ja) 浮動小数点乗算器における丸め回路
US5097434A (en) Hybrid signed-digit/logarithmic number system processor
US7051062B2 (en) Apparatus and method for adding multiple-bit binary-strings
US20040073593A1 (en) Hybrid carry look ahead/carry select adder including carry logic generating complementary hot carry signals, and method for producing the carry logic
US6631393B1 (en) Method and apparatus for speculative addition using a limited carry
He et al. Multiply-add fused float point unit with on-fly denormalized number processing
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
JP3201097B2 (ja) 乗算器における乗算処方方法
EP0780759A1 (en) Elimination of math overflow flag generation delay in an alu
GB2337621A (en) Determining a scaling factor
Pazhani et al. Design and Implementation of Computationally Efficient Arithmetic Unit
JP6975234B2 (ja) 符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050406

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060224

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees