JPH0887400A - 乗加減算器 - Google Patents
乗加減算器Info
- Publication number
- JPH0887400A JPH0887400A JP6246989A JP24698994A JPH0887400A JP H0887400 A JPH0887400 A JP H0887400A JP 6246989 A JP6246989 A JP 6246989A JP 24698994 A JP24698994 A JP 24698994A JP H0887400 A JPH0887400 A JP H0887400A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- multiplication
- adder
- shift
- input
- 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
Links
Landscapes
- Complex Calculations (AREA)
Abstract
(57)【要約】
【目的】 高速かつ低消費電力にて動作するバレルシフ
タを提供する。また、左右両方向シフタについては、同
時に回路面積の低減を図る。 【構成】 バレルシフタを構成する単位シフト段を、従
来の2入力1出力セレクタに変えて、4入力1出力セレ
クタにて構成する。また、単一方向バレルシフタの前後
にビット順逆転回路を用いて両方向へのシフトを実現す
る方法において、ビット順逆転回路の配線領域中に、シ
フト量の大きなシフト回路の配線を埋め込むことによっ
て、回路面積の低減を図る。
タを提供する。また、左右両方向シフタについては、同
時に回路面積の低減を図る。 【構成】 バレルシフタを構成する単位シフト段を、従
来の2入力1出力セレクタに変えて、4入力1出力セレ
クタにて構成する。また、単一方向バレルシフタの前後
にビット順逆転回路を用いて両方向へのシフトを実現す
る方法において、ビット順逆転回路の配線領域中に、シ
フト量の大きなシフト回路の配線を埋め込むことによっ
て、回路面積の低減を図る。
Description
【0001】
【産業上の利用分野】本発明は、A×B+Cの演算を行
う乗加減算器の改良に関する。また、他の発明は、演算
装置等においてデータを指定された量だけ桁シフトする
バレルシフタの改良に関する。
う乗加減算器の改良に関する。また、他の発明は、演算
装置等においてデータを指定された量だけ桁シフトする
バレルシフタの改良に関する。
【0002】
(乗加減算器)科学技術計算、コンピュータ・グラフィ
ックス、信号処理等では、膨大な量の演算を高速に処理
する必要がある。このような応用では行列計算が頻繁に
実行される。演算の多くは、A×B+Cを行う乗加減算
に帰着させることができる。そのため高速な乗加減算演
算器が要求されている。特に、高速な演算性能が要求さ
れるデジタル信号処理プロセッサ(DSP)は、ハード
ウェアで構成された乗加減算演算器を実装している。
ックス、信号処理等では、膨大な量の演算を高速に処理
する必要がある。このような応用では行列計算が頻繁に
実行される。演算の多くは、A×B+Cを行う乗加減算
に帰着させることができる。そのため高速な乗加減算演
算器が要求されている。特に、高速な演算性能が要求さ
れるデジタル信号処理プロセッサ(DSP)は、ハード
ウェアで構成された乗加減算演算器を実装している。
【0003】図8は、従来の乗加減算演算器の一例を示
すブロック図である。同図において、2進数の被乗数A
と乗数Bとの積を求める乗算器は、例えば、公知のブー
ス(Booth )のアルゴリズムによる、乗算を実行する乗
算アレイ101と、乗算アレイ101の和出力群Fss
及び桁上げ出力群Fcc(乗算中間値)を2進数の形に
整える最終加算器102と、によって構成される。最終
加算器102の出力に得られる乗算器の出力P(=(A
×B))と、加算(あるいは減算)すべき2進数の加算
値(あるいは減算値)Cとを加算器103によって加算
(あるいは減算)して、(A×B)+Cを得る構成とな
っている。
すブロック図である。同図において、2進数の被乗数A
と乗数Bとの積を求める乗算器は、例えば、公知のブー
ス(Booth )のアルゴリズムによる、乗算を実行する乗
算アレイ101と、乗算アレイ101の和出力群Fss
及び桁上げ出力群Fcc(乗算中間値)を2進数の形に
整える最終加算器102と、によって構成される。最終
加算器102の出力に得られる乗算器の出力P(=(A
×B))と、加算(あるいは減算)すべき2進数の加算
値(あるいは減算値)Cとを加算器103によって加算
(あるいは減算)して、(A×B)+Cを得る構成とな
っている。
【0004】図9は、ブース(Booth )のアルゴリズム
による乗算を行う乗算アレイ101の構成を示してお
り、被乗数Aのリコード(再符号化)を行うブースのリ
コーダ101a、被乗数Aと乗数Bとの部分積を生成す
る部分積生成回路101b、重み付された部分積を累積
的に加算する部分積加算用桁上げ保存加算器群(例え
ば、ワラス(Wallace )・ツリー)101c、によって
構成される。
による乗算を行う乗算アレイ101の構成を示してお
り、被乗数Aのリコード(再符号化)を行うブースのリ
コーダ101a、被乗数Aと乗数Bとの部分積を生成す
る部分積生成回路101b、重み付された部分積を累積
的に加算する部分積加算用桁上げ保存加算器群(例え
ば、ワラス(Wallace )・ツリー)101c、によって
構成される。
【0005】部分積生成回路101bは、例えば、一次
のブースのアルゴリズムを実行する場合には、次式に従
う部分積を生成する。
のブースのアルゴリズムを実行する場合には、次式に従
う部分積を生成する。
【0006】 ここで、被乗数Aはnビットの2進数(=an ,
an-1 ,…,a1 ,a0 )、乗数Bはnビットの2進数
(=bn ,bn-1 ,…,b1 ,b0 )である。iはi番
目の乗算ステップを意味する。
an-1 ,…,a1 ,a0 )、乗数Bはnビットの2進数
(=bn ,bn-1 ,…,b1 ,b0 )である。iはi番
目の乗算ステップを意味する。
【0007】また、二次のブースのアルゴリズムの場合
は、次式で示されるような部分積を生成する。
は、次式で示されるような部分積を生成する。
【0008】 P=A・B 二次のブースのアルゴリズムでは、nがn/2に減少
し、部分積の加算量が減る。また、部分積の加算回数を
n/3にした、三次のブースのアルゴリズムも知られて
いる。なお、ブースのアルゴリズムは良く知られてお
り、部分積を生成する乗算のアルゴリズムとして他のア
ルゴリズムを使用することもできる、等の理由により、
ブースのアルゴリズムについては詳述しない。
し、部分積の加算量が減る。また、部分積の加算回数を
n/3にした、三次のブースのアルゴリズムも知られて
いる。なお、ブースのアルゴリズムは良く知られてお
り、部分積を生成する乗算のアルゴリズムとして他のア
ルゴリズムを使用することもできる、等の理由により、
ブースのアルゴリズムについては詳述しない。
【0009】図10は、部分積生成回路101b及び部
分積加算用桁上げ保存加算器群101cを説明するもの
である。部分積生成回路101bが出力する、例えば、
12ビットの被乗数A及び乗数Bについての、部分積を
数値としての重み付をして配列した例を示している。同
図において、黒丸はある部分積を示している。部分積の
配列は、12ビットの被乗数A、12ビットの乗数B、
により、行方向に24ビット、列方向に12ビットであ
り、同一列は同一桁を示す。なお、同図に示される部分
積b0 a0 ,b0 a1 ,…,b11a11は、説明の便宜上
付されたものであり、上述した式の値に付される添字に
関連したものではない点に注意されたい。
分積加算用桁上げ保存加算器群101cを説明するもの
である。部分積生成回路101bが出力する、例えば、
12ビットの被乗数A及び乗数Bについての、部分積を
数値としての重み付をして配列した例を示している。同
図において、黒丸はある部分積を示している。部分積の
配列は、12ビットの被乗数A、12ビットの乗数B、
により、行方向に24ビット、列方向に12ビットであ
り、同一列は同一桁を示す。なお、同図に示される部分
積b0 a0 ,b0 a1 ,…,b11a11は、説明の便宜上
付されたものであり、上述した式の値に付される添字に
関連したものではない点に注意されたい。
【0010】桁上げ保存加算器群101cは、生じた桁
上げを次段に繰上げるようにして桁上げを保存しなが
ら、各列の部分積を累積的に加算する。この累積加算に
はいわゆる木(ツリー)構造に配置された桁上げ保存加
算器(CPA:carry-save adder)、例えば、2進木やワラ
ス(Wallace )ツリーを用いる。
上げを次段に繰上げるようにして桁上げを保存しなが
ら、各列の部分積を累積的に加算する。この累積加算に
はいわゆる木(ツリー)構造に配置された桁上げ保存加
算器(CPA:carry-save adder)、例えば、2進木やワラ
ス(Wallace )ツリーを用いる。
【0011】図11は、部分積加算用桁上げ保存加算器
群101cにおいて、図10に点線で示す一列分(b0
a11,b1 a10,…,b11a0 )についての加算を担
う、ワラス・ツリー構造の加算器群を示している。ツリ
ーを構成する、桁上げ保存加算器4wは、4つの入力
と、1つの桁上げ入力との、5つの入力に対応して、1
つの和出力、2つの桁上げ出力を備える。第1段の、3
つの桁上げ保存加算器4wの各入力には、同一桁(同じ
重み)の部分積b0 a11,b1 a11,…,b11a0が入
力される。各部分積の和は、ツリー構造の第2段、第3
段の複数の加算器4wを伝搬し、図示しない桁上げ伝搬
加算器(CPA:carry-propagate adder )に出力される。
同図中、各加算器4wへの1つ下位の桁の図示しないワ
ラス・ツリーからの桁上げ入力及び1つ上の桁の図示し
ないワラス・ツリーへの桁上げ出力は、夫々三角の矢印
によって示されている。他の桁(列)のワラス・ツリー
も部分積の入力数に応じた加算器を備えて同様に、配列
分だけ構成される。
群101cにおいて、図10に点線で示す一列分(b0
a11,b1 a10,…,b11a0 )についての加算を担
う、ワラス・ツリー構造の加算器群を示している。ツリ
ーを構成する、桁上げ保存加算器4wは、4つの入力
と、1つの桁上げ入力との、5つの入力に対応して、1
つの和出力、2つの桁上げ出力を備える。第1段の、3
つの桁上げ保存加算器4wの各入力には、同一桁(同じ
重み)の部分積b0 a11,b1 a11,…,b11a0が入
力される。各部分積の和は、ツリー構造の第2段、第3
段の複数の加算器4wを伝搬し、図示しない桁上げ伝搬
加算器(CPA:carry-propagate adder )に出力される。
同図中、各加算器4wへの1つ下位の桁の図示しないワ
ラス・ツリーからの桁上げ入力及び1つ上の桁の図示し
ないワラス・ツリーへの桁上げ出力は、夫々三角の矢印
によって示されている。他の桁(列)のワラス・ツリー
も部分積の入力数に応じた加算器を備えて同様に、配列
分だけ構成される。
【0012】図12は、桁上げ保存加算器4wの構成例
を示している。加算器4wは、4つの入力d0 〜d3 か
ら桁上げ出力Cout を得る第1の論理回路グループと、
4つの入力d0 〜d3 の和と、下位桁からの桁上げ入力
とから和Sを得る第2の論理回路グループと、4つの入
力d0 〜d3 から生じる桁上げと、4つの入力d0 〜d
3 の和と、下位桁からの桁上げ入力Cinとから桁上げ出
力CCを得る第3の論理回路グループと、によって構成
される。
を示している。加算器4wは、4つの入力d0 〜d3 か
ら桁上げ出力Cout を得る第1の論理回路グループと、
4つの入力d0 〜d3 の和と、下位桁からの桁上げ入力
とから和Sを得る第2の論理回路グループと、4つの入
力d0 〜d3 から生じる桁上げと、4つの入力d0 〜d
3 の和と、下位桁からの桁上げ入力Cinとから桁上げ出
力CCを得る第3の論理回路グループと、によって構成
される。
【0013】このようにして、部分積生成回路101b
によって生成された被乗数A及び乗数Bについての複数
の部分積は、部分積加算用桁上げ保存加算器群(例え
ば、ワラス・ツリー)101cによって桁上がりが上位
の桁に伝搬するように加算処理される。各桁の和出力、
桁上がり出力が乗算アレイ101から桁上げ伝搬加算器
によって構成される最終加算器102に与えられ、桁上
がりが上位桁に伝搬する最終の加算が行われ、2進数の
形の積Pに整えられる。そして、この積Pと加算数Cと
の加算が加算器103によって行われ、A×B+Cの演
算結果が得られる。
によって生成された被乗数A及び乗数Bについての複数
の部分積は、部分積加算用桁上げ保存加算器群(例え
ば、ワラス・ツリー)101cによって桁上がりが上位
の桁に伝搬するように加算処理される。各桁の和出力、
桁上がり出力が乗算アレイ101から桁上げ伝搬加算器
によって構成される最終加算器102に与えられ、桁上
がりが上位桁に伝搬する最終の加算が行われ、2進数の
形の積Pに整えられる。そして、この積Pと加算数Cと
の加算が加算器103によって行われ、A×B+Cの演
算結果が得られる。
【0014】図13は、他の乗算器の構成例を示してお
り、同図において、図8と対応する部分には同一符号を
付し、かかる部分の説明は省略する。この例では、図8
に示される乗加減算器が乗算器と加算器とを連結して構
成されるのに対し、乗算器、加算器をバスやバイパス線
を介して接続することによって、独立した乗算器、加算
器を用いて乗加減算の演算を行う構成としている。この
構成では、乗加減算以外に、加算、乗算を独立に実行で
きるので演算の自由度が大きい利点がある。このため、
多くの汎用DSPをはじめ、汎用マイクロプロセッサの
殆どが、このような構成の演算器を実装している。
り、同図において、図8と対応する部分には同一符号を
付し、かかる部分の説明は省略する。この例では、図8
に示される乗加減算器が乗算器と加算器とを連結して構
成されるのに対し、乗算器、加算器をバスやバイパス線
を介して接続することによって、独立した乗算器、加算
器を用いて乗加減算の演算を行う構成としている。この
構成では、乗加減算以外に、加算、乗算を独立に実行で
きるので演算の自由度が大きい利点がある。このため、
多くの汎用DSPをはじめ、汎用マイクロプロセッサの
殆どが、このような構成の演算器を実装している。
【0015】上述した乗算器と加算器とを直列に接続し
た形式の乗加減算器において不具合な点は、乗算終了後
に加算を行うため、独立した乗算器、加算器で夫々演算
を行った場合と、演算の実行時間に大差がないことであ
る。
た形式の乗加減算器において不具合な点は、乗算終了後
に加算を行うため、独立した乗算器、加算器で夫々演算
を行った場合と、演算の実行時間に大差がないことであ
る。
【0016】図14は、かかる不具合を改善した乗加減
算器(浮動小数点型)の一例を示している。この構成に
よれば、乗加減算の演算を乗算あるいは加算を行うのに
必要な実行時間と同等な時間で実行することができるも
のであり、以下に説明する。
算器(浮動小数点型)の一例を示している。この構成に
よれば、乗加減算の演算を乗算あるいは加算を行うのに
必要な実行時間と同等な時間で実行することができるも
のであり、以下に説明する。
【0017】図14において、乗算アレイ201は、供
給される第1のオペランドAの仮数部Faと、第2のオ
ペランドBの仮数部Fbとの乗算を行う。乗算アレイ2
01は、前述したように、木状に接続された桁上げ保存
加算器(CSA)群によって構成されており、部分積が
キャリー・セーブ・フォーム(和成分Fss,キャリー
成分Fcc)で得られる。この例を図15に示す。桁合
わせシフタ202は、加算すべき第3のオペランドCの
仮数部Fcの桁合わせを行うためのバレルシフタであ
る。最終加算器903は、複数ビットの和成分Fss、
キャリー成分Fcc、オペランドCの仮数部Fcの3つ
の入力を桁上げ伝搬加算する、桁上げ伝搬加算器であ
る。キャリー・セーブ・フォーム(和成分Fss,キャ
リー成分Fcc)で求められた第1、第2のオペランド
の仮数部の積Fa×Fbを2進数に変換すると共に、第
3のオペランドの仮数部Fcの加算を行う。先行1検出
回路204は、正規化の為に必要なシフト数を求める。
正規化シフタ205は、演算結果Fbbの正規化用のバ
レルシフタ、丸め回路906は演算結果Fbbに丸め処
理を行う。
給される第1のオペランドAの仮数部Faと、第2のオ
ペランドBの仮数部Fbとの乗算を行う。乗算アレイ2
01は、前述したように、木状に接続された桁上げ保存
加算器(CSA)群によって構成されており、部分積が
キャリー・セーブ・フォーム(和成分Fss,キャリー
成分Fcc)で得られる。この例を図15に示す。桁合
わせシフタ202は、加算すべき第3のオペランドCの
仮数部Fcの桁合わせを行うためのバレルシフタであ
る。最終加算器903は、複数ビットの和成分Fss、
キャリー成分Fcc、オペランドCの仮数部Fcの3つ
の入力を桁上げ伝搬加算する、桁上げ伝搬加算器であ
る。キャリー・セーブ・フォーム(和成分Fss,キャ
リー成分Fcc)で求められた第1、第2のオペランド
の仮数部の積Fa×Fbを2進数に変換すると共に、第
3のオペランドの仮数部Fcの加算を行う。先行1検出
回路204は、正規化の為に必要なシフト数を求める。
正規化シフタ205は、演算結果Fbbの正規化用のバ
レルシフタ、丸め回路906は演算結果Fbbに丸め処
理を行う。
【0018】次に、この乗加減算器における演算処理動
作について説明する。まず、第1、第2のオペランド
A,Bの仮数部Fa,Fbが、乗算アレイ201に入力
され乗算が行われる。積はキャリー・セーブ・フォーム
(和成分Fss,キャリー成分Fcc)で求められる。
オペランドCの仮数部Fcは桁合わせシフタに入力さ
れ、乗算処理に並行して桁合わせが行われる。桁合わせ
は、| Ea+Eb−Ec| だけ、シフトすることに
よって行われる。ここで、Ea,Eb,Ecは、オペラ
ンドA,B,Cの指数部である。積(和成分Fss,キ
ャリー成分Fcc)とオペランドFcは、3入力加算器
で加算され、2進数の乗加減算結果Fbbが求められ
る。乗加減算結果Fbbは、正規化され、さらに丸め処
理が行われる。
作について説明する。まず、第1、第2のオペランド
A,Bの仮数部Fa,Fbが、乗算アレイ201に入力
され乗算が行われる。積はキャリー・セーブ・フォーム
(和成分Fss,キャリー成分Fcc)で求められる。
オペランドCの仮数部Fcは桁合わせシフタに入力さ
れ、乗算処理に並行して桁合わせが行われる。桁合わせ
は、| Ea+Eb−Ec| だけ、シフトすることに
よって行われる。ここで、Ea,Eb,Ecは、オペラ
ンドA,B,Cの指数部である。積(和成分Fss,キ
ャリー成分Fcc)とオペランドFcは、3入力加算器
で加算され、2進数の乗加減算結果Fbbが求められ
る。乗加減算結果Fbbは、正規化され、さらに丸め処
理が行われる。
【0019】このように乗算アレイ201における乗算
と桁合わせシフタ202における桁合わせシフトとを並
行して実行し、積を求める最終加算(Fss+Fcc)
とオペランドFcとの加算を3入力加算器203を用い
て一度に実行することによって、乗加減算の演算を加
算、乗算と同じ実行時間内に実行することができる。
と桁合わせシフタ202における桁合わせシフトとを並
行して実行し、積を求める最終加算(Fss+Fcc)
とオペランドFcとの加算を3入力加算器203を用い
て一度に実行することによって、乗加減算の演算を加
算、乗算と同じ実行時間内に実行することができる。
【0020】しかしながら、上記構成の乗加減算の演算
器においても別の不具合がある。すなわち、桁合わせを
行う桁合わせシフタ202、積の和成分Fss,キャリ
ー成分Fcc、及びオペランドFcを加算する3入力加
算器203、正規化シフトの為のシフト数を算出する先
行1検出回路204に、約160ビット(IEEE75
4規格浮動小数点倍精度の場合)のビット幅を必要とす
る。このため、ハードウェア量が増大し、実行速度の高
速化も妨げられている。(バレルシフタ)ところで、こ
のような演算装置においては、データを必要な量(桁
数)だけシフトするためにバレルシフタが用いられる。
バレルシフタにおいては、一般に、シフト量は2のべき
乗の数にて指定される。また、配線面積を最小とするた
めに、図27に示すような構成となっている。
器においても別の不具合がある。すなわち、桁合わせを
行う桁合わせシフタ202、積の和成分Fss,キャリ
ー成分Fcc、及びオペランドFcを加算する3入力加
算器203、正規化シフトの為のシフト数を算出する先
行1検出回路204に、約160ビット(IEEE75
4規格浮動小数点倍精度の場合)のビット幅を必要とす
る。このため、ハードウェア量が増大し、実行速度の高
速化も妨げられている。(バレルシフタ)ところで、こ
のような演算装置においては、データを必要な量(桁
数)だけシフトするためにバレルシフタが用いられる。
バレルシフタにおいては、一般に、シフト量は2のべき
乗の数にて指定される。また、配線面積を最小とするた
めに、図27に示すような構成となっている。
【0021】すなわち、データ入力におけるビット数を
2n とした場合、図25に示すような2入力1出力のセ
レクタをn段使用して、バレルシフタを実現している。
このシフタが動作すると、信号の通過経路にあたるトラ
ンジスタ対がONとなることから、n×2n 対のトラン
ジスタにおいて電力が消費されることになる。また、バ
レルシフタの動作速度は信号が通過する経路上にあるト
ランジスタ対の数によって大きく支配されることから、
従来の構成においてはn段分のトランジスタ対による遅
延時間によって動作速度が決定づけられている。
2n とした場合、図25に示すような2入力1出力のセ
レクタをn段使用して、バレルシフタを実現している。
このシフタが動作すると、信号の通過経路にあたるトラ
ンジスタ対がONとなることから、n×2n 対のトラン
ジスタにおいて電力が消費されることになる。また、バ
レルシフタの動作速度は信号が通過する経路上にあるト
ランジスタ対の数によって大きく支配されることから、
従来の構成においてはn段分のトランジスタ対による遅
延時間によって動作速度が決定づけられている。
【0022】一般に、計算機システムでは、いわゆるデ
ータのビットシフト演算のために右方向シフトと左方向
シフトの両方向のシフト機能を具備している必要があ
る。そこで、図28に示すような、左方向へのバレルシ
フタ及び右方向へのバレルシフタを別々に備え、データ
の左右へのシフト方向をセレクタによって選択してい
る。
ータのビットシフト演算のために右方向シフトと左方向
シフトの両方向のシフト機能を具備している必要があ
る。そこで、図28に示すような、左方向へのバレルシ
フタ及び右方向へのバレルシフタを別々に備え、データ
の左右へのシフト方向をセレクタによって選択してい
る。
【0023】しかしながら、この構成においては配線量
の増加が顕著である。このため、図29に示すような、
左あるいは右への単一方向にのみシフトを行うバレルシ
フタの前後に、ビット順を逆転するビット順逆転回路を
付加することによって、ハード量の増加を抑えながら左
右両方向へのビットシフトを実現するものが提案されて
いる。この場合には、ビット順逆転回路による動作速度
の低下が大きな問題となる。
の増加が顕著である。このため、図29に示すような、
左あるいは右への単一方向にのみシフトを行うバレルシ
フタの前後に、ビット順を逆転するビット順逆転回路を
付加することによって、ハード量の増加を抑えながら左
右両方向へのビットシフトを実現するものが提案されて
いる。この場合には、ビット順逆転回路による動作速度
の低下が大きな問題となる。
【0024】従って、高速、低消費電力、省面積といっ
た、大規模集積回路におけるニーズを全て満たすことは
困難であり、使用個所に応じた回路の使い分けがなされ
ている。
た、大規模集積回路におけるニーズを全て満たすことは
困難であり、使用個所に応じた回路の使い分けがなされ
ている。
【0025】
(乗加減算器)このように、従来の乗加減算方式では演
算の実行に長時間を要する。また、乗加減算演算を高速
に実行するには非常にビット幅の大きい加算器、先行1
検出器等多くのハードウェアを必要とし、また、この点
が高速化の妨げとなっていた。
算の実行に長時間を要する。また、乗加減算演算を高速
に実行するには非常にビット幅の大きい加算器、先行1
検出器等多くのハードウェアを必要とし、また、この点
が高速化の妨げとなっていた。
【0026】よって、本発明は、比較的に少ないハード
ウェア構成で乗加減算の演算速度の高速化を実現し得る
乗加減算演算器を提供することを目的とする。 (バレルシフタ)上述したバレルシフタの従来技術にお
いては、高速、低消費電力、省面積、という、一般的に
相矛盾するような要求については、ある程度の妥協を余
儀なくされてている。すなわち、従来の構成におけるバ
レルシフタでは、他の加算器のような回路とは異なり、
シフタを構成しているセレクタ回路のほとんど全てが動
作することから消費電力が大きくなる傾向がある。動作
速度についても、高速であることが要求される。更に、
バレルシフタでは配線領域の占める面積が大きく、マイ
クロプロセッサ等における演算回路の回路面積について
決定的な要因となり得る。また、上述した乗加減算器の
コンパクト化、動作の高速化の実現のために、そこで用
いられるバレルシフタについてもコンパクトな構成、動
作の高速化の実現が求められている。
ウェア構成で乗加減算の演算速度の高速化を実現し得る
乗加減算演算器を提供することを目的とする。 (バレルシフタ)上述したバレルシフタの従来技術にお
いては、高速、低消費電力、省面積、という、一般的に
相矛盾するような要求については、ある程度の妥協を余
儀なくされてている。すなわち、従来の構成におけるバ
レルシフタでは、他の加算器のような回路とは異なり、
シフタを構成しているセレクタ回路のほとんど全てが動
作することから消費電力が大きくなる傾向がある。動作
速度についても、高速であることが要求される。更に、
バレルシフタでは配線領域の占める面積が大きく、マイ
クロプロセッサ等における演算回路の回路面積について
決定的な要因となり得る。また、上述した乗加減算器の
コンパクト化、動作の高速化の実現のために、そこで用
いられるバレルシフタについてもコンパクトな構成、動
作の高速化の実現が求められている。
【0027】よって、他の発明は、このバレルシフタに
対する相矛盾する省面積、高速、低消費電力という3つ
の要求を、高い次元で両立させることを目的とする。
対する相矛盾する省面積、高速、低消費電力という3つ
の要求を、高い次元で両立させることを目的とする。
【0028】
(乗加減算器)上記目的を達成するために本発明の固定
小数点の乗加減算器は、入力される第1及び第2のオペ
ランドを乗算した乗算値と、入力される第3のオペラン
ドとの、加算あるいは減算を行う固定小数点演算の乗加
減算器において、所定乗算アルゴリズムに従って、上記
第1及び第2のオペランドに対応する複数の部分積を生
成する部分積生成回路と、上記複数の部分積の加算と、
上記第3のオペランドの加算若しくは減算とを、木構造
に配列された複数の加算器群によって行って減算して重
み付された複数の乗算中間値を出力する乗算アレイと、
上記複数の乗算中間値を加算して乗加減算値を求める桁
上げ伝搬型加算器と、を備えることを特徴とする。
小数点の乗加減算器は、入力される第1及び第2のオペ
ランドを乗算した乗算値と、入力される第3のオペラン
ドとの、加算あるいは減算を行う固定小数点演算の乗加
減算器において、所定乗算アルゴリズムに従って、上記
第1及び第2のオペランドに対応する複数の部分積を生
成する部分積生成回路と、上記複数の部分積の加算と、
上記第3のオペランドの加算若しくは減算とを、木構造
に配列された複数の加算器群によって行って減算して重
み付された複数の乗算中間値を出力する乗算アレイと、
上記複数の乗算中間値を加算して乗加減算値を求める桁
上げ伝搬型加算器と、を備えることを特徴とする。
【0029】また、上記目的を達成するため本発明の浮
動小数点の乗加減算器は、入力される第1及び第2のオ
ペランドを乗算した乗算値と、入力される第3のオペラ
ンドとの、加算あるいは減算を行う浮動小数点演算の乗
加減算器において、所定乗算アルゴリズムに従って、上
記第1及び第2のオペランド各々の仮数部の各値に対応
する複数の部分積を生成する部分積生成回路と、上記第
3のオペランドの指数部の値が上記第1及び第2のオペ
ランドの積の指数部の値と等しくなるように、上記第3
のオペランドの仮数部の値の桁合わせを行うシフト回路
と、上記複数の部分積の加算と、桁合わせされた上記第
3のオペランドの仮数部の値のうち、上記第1及び第2
のオペランドの仮数部の積の演算に割当てられた桁数に
よって表される値内の、下位桁の各ディジットの値の加
算若しくは減算とを、木構造に配列された複数の加算器
群によって行って重み付された複数の乗算中間値を出力
する乗算アレイと、上記複数の乗算中間値を加算して下
位桁の乗加減算値を求める桁上げ伝搬型加算器と、桁合
わせされた上記第3のオペランドの仮数部の値のうち、
上記第1及び第2のオペランドの仮数部の積の演算に割
当てられた桁数によって表される値を超える、上位桁の
値と、上記桁上げ伝搬型加算器の桁上げ出力とを、加算
して上位桁出力値を得る増分加算器と、上記上位桁出力
値及び上記下位桁の乗加減算値をビット結合して最終乗
加減算値を得る手段と、を備えることを特徴とする。
動小数点の乗加減算器は、入力される第1及び第2のオ
ペランドを乗算した乗算値と、入力される第3のオペラ
ンドとの、加算あるいは減算を行う浮動小数点演算の乗
加減算器において、所定乗算アルゴリズムに従って、上
記第1及び第2のオペランド各々の仮数部の各値に対応
する複数の部分積を生成する部分積生成回路と、上記第
3のオペランドの指数部の値が上記第1及び第2のオペ
ランドの積の指数部の値と等しくなるように、上記第3
のオペランドの仮数部の値の桁合わせを行うシフト回路
と、上記複数の部分積の加算と、桁合わせされた上記第
3のオペランドの仮数部の値のうち、上記第1及び第2
のオペランドの仮数部の積の演算に割当てられた桁数に
よって表される値内の、下位桁の各ディジットの値の加
算若しくは減算とを、木構造に配列された複数の加算器
群によって行って重み付された複数の乗算中間値を出力
する乗算アレイと、上記複数の乗算中間値を加算して下
位桁の乗加減算値を求める桁上げ伝搬型加算器と、桁合
わせされた上記第3のオペランドの仮数部の値のうち、
上記第1及び第2のオペランドの仮数部の積の演算に割
当てられた桁数によって表される値を超える、上位桁の
値と、上記桁上げ伝搬型加算器の桁上げ出力とを、加算
して上位桁出力値を得る増分加算器と、上記上位桁出力
値及び上記下位桁の乗加減算値をビット結合して最終乗
加減算値を得る手段と、を備えることを特徴とする。
【0030】上記乗算アレイを構成する加算器群とし
て、和を和成分、桁上げ成分に分けて求める桁上げ保存
型加算器、冗長数を用いて加算するSD加算器、PD加
算器、全加算器等を用いることが可能である。 (バレルシフタ)上記目的を達成するために本発明のバ
レルシフタは、少なくともデータ入力、データ出力、制
御入力を持ち、入力されるデータを制御入力によって指
定されたビット数だけシフトして出力するバレルシフタ
において、供給されるl(整数)ビットからなる入力デ
ータから、4つのビット信号を出力するl個の信号シフ
ト手段と、各信号シフト手段が出力する4つのビット信
号の中から1つを選択するl個のセレクト手段と、供給
される制御入力をデコードして、各セレクト手段に選択
すべきビット信号を指令する制御信号を与える制御信号
生成手段と、を備え、上記l個の信号シフト手段のうち
i番目の信号シフト手段は、入力データのi番目のビッ
ト信号に対し、0ビット、n(整数)ビット、m(整
数)ビット、m+nビット、ビット位置をシフトした位
置にある4つのビット信号を出力するようになされる、
ことを特徴とする。上記信号シフト手段及びセレクト手
段は、入力データのビット数、取扱うシフトビット数の
範囲に応じて所要段数だけ縦列接続される。なお、通常
はn及びmは、2のべき乗の数を用いる。
て、和を和成分、桁上げ成分に分けて求める桁上げ保存
型加算器、冗長数を用いて加算するSD加算器、PD加
算器、全加算器等を用いることが可能である。 (バレルシフタ)上記目的を達成するために本発明のバ
レルシフタは、少なくともデータ入力、データ出力、制
御入力を持ち、入力されるデータを制御入力によって指
定されたビット数だけシフトして出力するバレルシフタ
において、供給されるl(整数)ビットからなる入力デ
ータから、4つのビット信号を出力するl個の信号シフ
ト手段と、各信号シフト手段が出力する4つのビット信
号の中から1つを選択するl個のセレクト手段と、供給
される制御入力をデコードして、各セレクト手段に選択
すべきビット信号を指令する制御信号を与える制御信号
生成手段と、を備え、上記l個の信号シフト手段のうち
i番目の信号シフト手段は、入力データのi番目のビッ
ト信号に対し、0ビット、n(整数)ビット、m(整
数)ビット、m+nビット、ビット位置をシフトした位
置にある4つのビット信号を出力するようになされる、
ことを特徴とする。上記信号シフト手段及びセレクト手
段は、入力データのビット数、取扱うシフトビット数の
範囲に応じて所要段数だけ縦列接続される。なお、通常
はn及びmは、2のべき乗の数を用いる。
【0031】また、本発明の両方向シフトのバレルシフ
タは、少なくともデータ入力、データ出力、制御入力を
持ち、入力されるデータを制御入力によって指定された
ビット数だけシフトして出力するバレルシフタにおい
て、供給されるl(整数)ビットからなる入力データか
ら、4つのビット信号を出力するl個の第1の信号シフ
ト/ビット順逆転手段と、上記第1の信号シフト/ビッ
ト順逆転手段各々が出力する4つのビット信号の中から
1つを選択するl個の第1のセレクト手段と、上記l個
の第1のセレクト手段から入力されるl個の出力から、
4つのビット信号を出力するl個の信号シフト手段と、
各信号シフト手段が出力する4つのビット信号の中から
1つを選択するl個の第2のセレクト手段と、上記l個
の第2のセレクト手段から入力されるl個の出力から、
4つのビット信号を出力するl個の第2の信号シフト/
ビット順逆転手段と、前記第2の信号シフト/ビット順
逆転手段各々が出力する4つのビット信号の中から1つ
を選択するl個の第3のセレクト手段と、供給される制
御入力をデコードして、各セレクト手段に選択すべきビ
ット信号を指令する制御信号を与える制御信号生成手段
と、を備え、上記l個の第1の信号シフト/ビット順逆
転手段のうちi番目の第1の信号シフト/ビット順逆転
手段は、入力データのi番目のビット信号に対し、変化
なし、ビット順逆転、o(整数)ビットシフト、ビット
順逆転及びo(整数)ビットシフト、となる関係にある
4つのビット信号を出力し、上記l個の信号シフト手段
のうちi番目の信号シフト手段は、入力されるi番目の
ビット信号に対し、シフトなし、p(整数)+q(整
数)ビット、p(整数)ビット、q(整数)ビット、ビ
ット位置をシフトした位置にある4つのビット信号を出
力し、上記l個の第2の信号シフト/ビット順逆転手段
のうちi番目の第2の信号シフト/ビット順逆転手段
は、入力データのi番目のビット信号に対し、変化な
し、ビット順逆転、r(整数)ビットシフト、r(整
数)ビットシフト及びビット順逆転、となる関係にある
4つのビット信号を出力する、ことを特徴とする。信号
シフト手段及びセレクト手段は所要段数だけ縦続接続す
ることができる。
タは、少なくともデータ入力、データ出力、制御入力を
持ち、入力されるデータを制御入力によって指定された
ビット数だけシフトして出力するバレルシフタにおい
て、供給されるl(整数)ビットからなる入力データか
ら、4つのビット信号を出力するl個の第1の信号シフ
ト/ビット順逆転手段と、上記第1の信号シフト/ビッ
ト順逆転手段各々が出力する4つのビット信号の中から
1つを選択するl個の第1のセレクト手段と、上記l個
の第1のセレクト手段から入力されるl個の出力から、
4つのビット信号を出力するl個の信号シフト手段と、
各信号シフト手段が出力する4つのビット信号の中から
1つを選択するl個の第2のセレクト手段と、上記l個
の第2のセレクト手段から入力されるl個の出力から、
4つのビット信号を出力するl個の第2の信号シフト/
ビット順逆転手段と、前記第2の信号シフト/ビット順
逆転手段各々が出力する4つのビット信号の中から1つ
を選択するl個の第3のセレクト手段と、供給される制
御入力をデコードして、各セレクト手段に選択すべきビ
ット信号を指令する制御信号を与える制御信号生成手段
と、を備え、上記l個の第1の信号シフト/ビット順逆
転手段のうちi番目の第1の信号シフト/ビット順逆転
手段は、入力データのi番目のビット信号に対し、変化
なし、ビット順逆転、o(整数)ビットシフト、ビット
順逆転及びo(整数)ビットシフト、となる関係にある
4つのビット信号を出力し、上記l個の信号シフト手段
のうちi番目の信号シフト手段は、入力されるi番目の
ビット信号に対し、シフトなし、p(整数)+q(整
数)ビット、p(整数)ビット、q(整数)ビット、ビ
ット位置をシフトした位置にある4つのビット信号を出
力し、上記l個の第2の信号シフト/ビット順逆転手段
のうちi番目の第2の信号シフト/ビット順逆転手段
は、入力データのi番目のビット信号に対し、変化な
し、ビット順逆転、r(整数)ビットシフト、r(整
数)ビットシフト及びビット順逆転、となる関係にある
4つのビット信号を出力する、ことを特徴とする。信号
シフト手段及びセレクト手段は所要段数だけ縦続接続す
ることができる。
【0032】
(乗加減算器)上記構成において、この発明では、まず
オペランドA、及びBの仮数部Fa,Fbが、乗算アレ
イに入力され乗算が行われる。乗算アレイは木状に接続
されたキャリー・セーブ・アダーで構成されており、積
はキャリー・セーブ・フォームで求められる。オペラン
ドCの仮数部Fcは桁合わせシフタに入力され、Fa,
Fbの乗算処理に並行して桁合わせが行われる。桁合わ
せは、|Ea+Eb−Ec| だけ、シフトすることに
よって行われる。ここで、Ea,Eb,Ecは、オペラ
ンドA,B,Cの指数部である。桁合わせシフト結果F
c shift は、(Fa×Fb)の各デジットと同じ桁にな
る部分Fc low とそれより上位の部分Fchighとに分割
される。Fc low は乗算アレイに入力され、部分積とと
もに加算され、積がキャリー・セーブ・フォーム(和成
分Fss,キャリー成分Fcc)で求められる。和成分
Fss,キャリー成分Fccは、最終加算器で加算さ
れ、乗加減算演算結果の下位側Fbb lowが求まる。ま
た、Fc highは、最終加算のキャリーの値によってイン
クリメントされ、乗加減算演算結果の上位側Fbb high
が求まる。また、インクリメント結果は、先行1検出回
路に入力され、正規化シフトに必要なシフト・ステップ
数を算出する。この結果をもとに、乗加減算演算結果F
bb(Fbb high とFbb lowのビット結合)は正規化さ
れ、丸め処理が施される。 (バレルシフタ)入力データのビット長がLであると
き、本発明のバレルシフタにおける第1の構成において
は信号シフト手段ならびにセレクト手段を所要段数だけ
縦続接続したものを入力データの各ビットに対応する数
Lだけ並列に設けておき、与えられたシフトビット数か
らセレクト手段を動作させるための制御信号生成手段か
らの制御信号を、並列に並んでいる各ビット位置のセレ
クト手段に供給する。このとき、並列に並んでいるセレ
クト手段については、それぞれ同一の制御信号によって
動作することから、制御信号生成手段は垂直方向の各セ
レクト手段毎に一つあれば足りることになる。これらの
手段により、入力されたデータは各々の信号シフト手段
+セレクト手段においてビット位置を順次変更されてい
き、最後に所望のビット数だけシフトした結果が得られ
る。ここで、L=2n (nは整数)である場合について
考えると、従来の2入力1出力のセレクト手段を用いた
構成では、信号が入力されてから出力に現われるまで
に、合計n段のセレクト手段を通過することになるが、
本発明による構成ではn/2段(nが奇数である場合は
n/2+1段)のセレクト手段を通過するだけで済むこ
とになり、高速化ならびに消費電力の低減を図ることが
できる。さらには、通常信号シフト手段とセレクト手段
とは入力データのビット列に対して垂直方向に段組みさ
れていることから、これらの手段を結合する配線におい
て、従来の2入力1出力セレクタを用いた方式では2組
必要となるのに対し、本発明による構成では1組で済
む。しかも、トランジスタのスイッチング確立を平均で
25%低減できることから、更に消費電力を低減でき
る。また、セレクト手段に使用される素子の数は、2入
力1出力のセレクト手段を用いた場合に対して、8入力
1出力等の、4入力1出力以外の構成とした場合には増
加してしまうのに対し、4入力1出力のセレクト手段を
用いた場合には全く同じとなることから、ハードウエア
の増加量は最小限に抑えられることになる。
オペランドA、及びBの仮数部Fa,Fbが、乗算アレ
イに入力され乗算が行われる。乗算アレイは木状に接続
されたキャリー・セーブ・アダーで構成されており、積
はキャリー・セーブ・フォームで求められる。オペラン
ドCの仮数部Fcは桁合わせシフタに入力され、Fa,
Fbの乗算処理に並行して桁合わせが行われる。桁合わ
せは、|Ea+Eb−Ec| だけ、シフトすることに
よって行われる。ここで、Ea,Eb,Ecは、オペラ
ンドA,B,Cの指数部である。桁合わせシフト結果F
c shift は、(Fa×Fb)の各デジットと同じ桁にな
る部分Fc low とそれより上位の部分Fchighとに分割
される。Fc low は乗算アレイに入力され、部分積とと
もに加算され、積がキャリー・セーブ・フォーム(和成
分Fss,キャリー成分Fcc)で求められる。和成分
Fss,キャリー成分Fccは、最終加算器で加算さ
れ、乗加減算演算結果の下位側Fbb lowが求まる。ま
た、Fc highは、最終加算のキャリーの値によってイン
クリメントされ、乗加減算演算結果の上位側Fbb high
が求まる。また、インクリメント結果は、先行1検出回
路に入力され、正規化シフトに必要なシフト・ステップ
数を算出する。この結果をもとに、乗加減算演算結果F
bb(Fbb high とFbb lowのビット結合)は正規化さ
れ、丸め処理が施される。 (バレルシフタ)入力データのビット長がLであると
き、本発明のバレルシフタにおける第1の構成において
は信号シフト手段ならびにセレクト手段を所要段数だけ
縦続接続したものを入力データの各ビットに対応する数
Lだけ並列に設けておき、与えられたシフトビット数か
らセレクト手段を動作させるための制御信号生成手段か
らの制御信号を、並列に並んでいる各ビット位置のセレ
クト手段に供給する。このとき、並列に並んでいるセレ
クト手段については、それぞれ同一の制御信号によって
動作することから、制御信号生成手段は垂直方向の各セ
レクト手段毎に一つあれば足りることになる。これらの
手段により、入力されたデータは各々の信号シフト手段
+セレクト手段においてビット位置を順次変更されてい
き、最後に所望のビット数だけシフトした結果が得られ
る。ここで、L=2n (nは整数)である場合について
考えると、従来の2入力1出力のセレクト手段を用いた
構成では、信号が入力されてから出力に現われるまで
に、合計n段のセレクト手段を通過することになるが、
本発明による構成ではn/2段(nが奇数である場合は
n/2+1段)のセレクト手段を通過するだけで済むこ
とになり、高速化ならびに消費電力の低減を図ることが
できる。さらには、通常信号シフト手段とセレクト手段
とは入力データのビット列に対して垂直方向に段組みさ
れていることから、これらの手段を結合する配線におい
て、従来の2入力1出力セレクタを用いた方式では2組
必要となるのに対し、本発明による構成では1組で済
む。しかも、トランジスタのスイッチング確立を平均で
25%低減できることから、更に消費電力を低減でき
る。また、セレクト手段に使用される素子の数は、2入
力1出力のセレクト手段を用いた場合に対して、8入力
1出力等の、4入力1出力以外の構成とした場合には増
加してしまうのに対し、4入力1出力のセレクト手段を
用いた場合には全く同じとなることから、ハードウエア
の増加量は最小限に抑えられることになる。
【0033】また、本発明のバレルシフタにおける第2
の構成においては、データ入力に近い側に、ビット順逆
転を行った後にシフトビット数の大きなシフトを行える
ような信号シフト/ビット順逆転手段ならびにセレクト
手段を縦続接続したものを入力データのビット長Lだけ
並列に設けておき、これに引き続いて、第1の構成にお
ける信号シフト手段+セレクト手段を所要段数だけ縦続
接続してあり、最後にシフトビット数の大きなシフトを
行った後にビット順逆転を行えるような信号シフト/ビ
ット順逆転手段を接続する。このとき、制御信号生成手
段においては、異なる2つの量のシフトビット数に応じ
て制御信号を生成するものに加えて、あるシフトビット
量のシフト及び、ビット順逆転の有無に応じて制御信号
を生成するものを、この構成におけるシフトの最初と最
後のセレクタ段に対して用いる。まず、ビット順逆転を
行わない場合には、この最初と最後のセレクタ段におい
ては、ビット位置のシフトのみが行われ、ある方向への
ビットシフトが全体として行われることになる。そし
て、最初と最後の段において、ビット順逆転を行うと、
入力されたデータはまずビット順を逆転されたのちに所
定の量だけのビットシフト操作を受け、最後にもう一度
ビット順を逆転されることによって、逆方向へのシフト
動作が実現される。このとき、第1の構成におけると同
様の理由によって、従来の2入力1出力セレクタを用い
たシフタの前後にビット逆転機構を設けた構成に対し
て、信号が通過するセレクタの段数が大幅に減少する。
よって、シフト動作の高速化ならびに低消費電力化が達
成できる。さらには、入力データのビット数を2n (n
は整数)とした時には、通常ビット順逆転を行うために
は2n 本の配線が入力データのビット列に対して並行に
配置され、配線領域の増加によるシフタ回路面積の増大
が問題となるが、本発明による構成では、この2n 本分
の配線を、2n-1 及び2n-2 ビットシフトを行うための
配線として共用することができるため、配線領域の面積
を2n-1 及び2n-2 本分低減することができる。また、
このとき入力データビット列に平行して敷設される配線
の最大長は、入力データビット列の横方向の長さに一致
するが、従来の構成ではビット順逆転を行ってから最大
ビット長のシフトを行うという最悪のケースでは、信号
が通過しなければならない配線長は、入力データビット
列の横方向の長さに、シフトによってビット位置が移動
する長さを加えたものとなることから、本発明により配
線による負荷容量を低減できる。なお、ビット順を逆転
させるための配線を具備していることから、ビット順の
変更をシフトの前後にて行う、あるいは単純にビット順
を逆転するような演算も可能である。
の構成においては、データ入力に近い側に、ビット順逆
転を行った後にシフトビット数の大きなシフトを行える
ような信号シフト/ビット順逆転手段ならびにセレクト
手段を縦続接続したものを入力データのビット長Lだけ
並列に設けておき、これに引き続いて、第1の構成にお
ける信号シフト手段+セレクト手段を所要段数だけ縦続
接続してあり、最後にシフトビット数の大きなシフトを
行った後にビット順逆転を行えるような信号シフト/ビ
ット順逆転手段を接続する。このとき、制御信号生成手
段においては、異なる2つの量のシフトビット数に応じ
て制御信号を生成するものに加えて、あるシフトビット
量のシフト及び、ビット順逆転の有無に応じて制御信号
を生成するものを、この構成におけるシフトの最初と最
後のセレクタ段に対して用いる。まず、ビット順逆転を
行わない場合には、この最初と最後のセレクタ段におい
ては、ビット位置のシフトのみが行われ、ある方向への
ビットシフトが全体として行われることになる。そし
て、最初と最後の段において、ビット順逆転を行うと、
入力されたデータはまずビット順を逆転されたのちに所
定の量だけのビットシフト操作を受け、最後にもう一度
ビット順を逆転されることによって、逆方向へのシフト
動作が実現される。このとき、第1の構成におけると同
様の理由によって、従来の2入力1出力セレクタを用い
たシフタの前後にビット逆転機構を設けた構成に対し
て、信号が通過するセレクタの段数が大幅に減少する。
よって、シフト動作の高速化ならびに低消費電力化が達
成できる。さらには、入力データのビット数を2n (n
は整数)とした時には、通常ビット順逆転を行うために
は2n 本の配線が入力データのビット列に対して並行に
配置され、配線領域の増加によるシフタ回路面積の増大
が問題となるが、本発明による構成では、この2n 本分
の配線を、2n-1 及び2n-2 ビットシフトを行うための
配線として共用することができるため、配線領域の面積
を2n-1 及び2n-2 本分低減することができる。また、
このとき入力データビット列に平行して敷設される配線
の最大長は、入力データビット列の横方向の長さに一致
するが、従来の構成ではビット順逆転を行ってから最大
ビット長のシフトを行うという最悪のケースでは、信号
が通過しなければならない配線長は、入力データビット
列の横方向の長さに、シフトによってビット位置が移動
する長さを加えたものとなることから、本発明により配
線による負荷容量を低減できる。なお、ビット順を逆転
させるための配線を具備していることから、ビット順の
変更をシフトの前後にて行う、あるいは単純にビット順
を逆転するような演算も可能である。
【0034】
【実施例】以下、本発明の乗加減算器の実施例について
図面を参照して説明する。図1は、本発明の第1の実施
例である固定小数点乗加減算器を示すブロック図であ
り、同図において、図8と対応する部分には同一符号を
付している。
図面を参照して説明する。図1は、本発明の第1の実施
例である固定小数点乗加減算器を示すブロック図であ
り、同図において、図8と対応する部分には同一符号を
付している。
【0035】この実施例の固定小数点乗加減算器は、乗
算アレイ301において、オペランドA及びBの重み付
された部分積を累積的に加算する木(ツリー)構造の加
算器群を利用してオペランドCを加算若しくは減算し、
加算結果を桁上げ伝搬加算器である最終加算器102に
よって2進数の形に整える。
算アレイ301において、オペランドA及びBの重み付
された部分積を累積的に加算する木(ツリー)構造の加
算器群を利用してオペランドCを加算若しくは減算し、
加算結果を桁上げ伝搬加算器である最終加算器102に
よって2進数の形に整える。
【0036】図2は、乗算アレイ301の構成例を示し
ており、まず、図9に示す従来例とと同様に、供給され
る2つのオペランドA及びBの乗算を行う。乗算アレイ
301は、例えば、2次のブースのアルゴリズムを用い
ており、2次のブースのリコーダ301a、部分積生成
回路301b、部分積加算用桁上げ保存加算器群(例え
ば、ワラス・ツリー)301c、により構成される。2
4ビット固定小数点の演算を行う場合には、2次のブー
スのアルゴリズムにより、12個の部分積が生成され、
ツリー構造の桁上げ保存加算器群で加算される。積は、
キャリー・セーブ・フォーム(和成分Fssとキャリー
成分Fcc)で算出される。
ており、まず、図9に示す従来例とと同様に、供給され
る2つのオペランドA及びBの乗算を行う。乗算アレイ
301は、例えば、2次のブースのアルゴリズムを用い
ており、2次のブースのリコーダ301a、部分積生成
回路301b、部分積加算用桁上げ保存加算器群(例え
ば、ワラス・ツリー)301c、により構成される。2
4ビット固定小数点の演算を行う場合には、2次のブー
スのアルゴリズムにより、12個の部分積が生成され、
ツリー構造の桁上げ保存加算器群で加算される。積は、
キャリー・セーブ・フォーム(和成分Fssとキャリー
成分Fcc)で算出される。
【0037】図3は、部分積生成回路301b及び部分
積加算用桁上げ保存加算器群301cを説明するもので
あり、同図において図10と対応する部分には同一符号
を付している。この図は、部分積生成回路101bが出
力する、例えば、12ビットの被乗数A及び乗数Bにつ
いての、部分積を数値としての重み付をして配列した例
を概念的に示している。同図において、黒丸はある部分
積を示している。部分積の配列は、12ビットの被乗数
A、12ビットの乗数B、により、行方向に24ビッ
ト、列方向に12ビットであり、同一列は同一桁を示
す。なお、同図に示される部分積b0 a0 ,b0 a1 ,
…,b11a11は、説明の便宜上付されたものである。こ
の部分積の配列の中に、オペランドC(=c11,c10,
…,c1 ,c0 )が桁合せして配置される。減算の場合
はオペランドCの補数の加算となる(以下、同様であ
る)。
積加算用桁上げ保存加算器群301cを説明するもので
あり、同図において図10と対応する部分には同一符号
を付している。この図は、部分積生成回路101bが出
力する、例えば、12ビットの被乗数A及び乗数Bにつ
いての、部分積を数値としての重み付をして配列した例
を概念的に示している。同図において、黒丸はある部分
積を示している。部分積の配列は、12ビットの被乗数
A、12ビットの乗数B、により、行方向に24ビッ
ト、列方向に12ビットであり、同一列は同一桁を示
す。なお、同図に示される部分積b0 a0 ,b0 a1 ,
…,b11a11は、説明の便宜上付されたものである。こ
の部分積の配列の中に、オペランドC(=c11,c10,
…,c1 ,c0 )が桁合せして配置される。減算の場合
はオペランドCの補数の加算となる(以下、同様であ
る)。
【0038】桁上げ保存加算器群301cは、生じた桁
上げを次段に繰上げるようにして桁上げを保存しなが
ら、各列の部分積を累積的に加算する。この累積加算に
はいわゆる木構造に配置された桁上げ保存加算器(CPA
)、例えば、2進木やワラス・ツリーを用いる。
上げを次段に繰上げるようにして桁上げを保存しなが
ら、各列の部分積を累積的に加算する。この累積加算に
はいわゆる木構造に配置された桁上げ保存加算器(CPA
)、例えば、2進木やワラス・ツリーを用いる。
【0039】図4は、部分積加算用桁上げ保存加算器群
301cにおいて、図3に点線で示す一列分(b0 a1
1,b1 a10,…,b11a0 )についての加算を担う、
ワラス・ツリー構造の加算器群を示している。ツリーを
構成する、桁上げ保存加算器4wは、図12に示される
ものと同じであり、4つの入力と、1つの桁上げ入力と
の、5つの入力に対応して、1つの和出力、2つの桁上
げ出力を備える。また、桁上げ保存加算器3wは、3つ
の入力に対応して、1つの和出力、1つの桁上げ出力を
備える全加算器である。第1段の、3つの桁上げ保存加
算器4wの各入力には、同一桁(同じ重み)の部分積b
0 a11,b1 a11,…,b11a0 が加えられる。第2段
の加算器3wには、オペランドCのc11あるいはその補
数が入力される。各部分積の和は、ツリー構造の第2
段、第3段の複数の加算器4wを伝搬し、オペランドC
の1ビット分c11が加算されて、図示しない桁上げ伝搬
加算器(CPA )である最終加算器102に出力される。
同図中、各加算器4w,3wへの1つ下位の桁の図示し
ないワラス・ツリーからの桁上げ入力及び1つ上の桁の
図示しないワラス・ツリーへの桁上げ出力は、夫々三角
の矢印によって示されている。他の桁(列)のワラス・
ツリーも部分積の入力数に応じた数の加算器、オペラン
ドCを部分積に加え合わせる加算器を備えて同様に、配
列分(桁数分)だけ構成される。
301cにおいて、図3に点線で示す一列分(b0 a1
1,b1 a10,…,b11a0 )についての加算を担う、
ワラス・ツリー構造の加算器群を示している。ツリーを
構成する、桁上げ保存加算器4wは、図12に示される
ものと同じであり、4つの入力と、1つの桁上げ入力と
の、5つの入力に対応して、1つの和出力、2つの桁上
げ出力を備える。また、桁上げ保存加算器3wは、3つ
の入力に対応して、1つの和出力、1つの桁上げ出力を
備える全加算器である。第1段の、3つの桁上げ保存加
算器4wの各入力には、同一桁(同じ重み)の部分積b
0 a11,b1 a11,…,b11a0 が加えられる。第2段
の加算器3wには、オペランドCのc11あるいはその補
数が入力される。各部分積の和は、ツリー構造の第2
段、第3段の複数の加算器4wを伝搬し、オペランドC
の1ビット分c11が加算されて、図示しない桁上げ伝搬
加算器(CPA )である最終加算器102に出力される。
同図中、各加算器4w,3wへの1つ下位の桁の図示し
ないワラス・ツリーからの桁上げ入力及び1つ上の桁の
図示しないワラス・ツリーへの桁上げ出力は、夫々三角
の矢印によって示されている。他の桁(列)のワラス・
ツリーも部分積の入力数に応じた数の加算器、オペラン
ドCを部分積に加え合わせる加算器を備えて同様に、配
列分(桁数分)だけ構成される。
【0040】このように、本乗算アレイ301で最も重
要かつ特徴的な点は、図4に示すように外部より他の値
Ci を入力することができ、この値Ci を部分積と同様
にワラス・アレイの中で部分積の加算と同時に加算(あ
るいはcの補数の加算による減算)をすることができる
ことである。図4では全加算器をツリー構造の加算器群
(ワラス・ツリー)に挿入して外部からの入力を実現し
た。全加算器を挿入することが、本乗算アレイのクリテ
ィカル・パスに全く影響を与えない利点に着目すべきで
ある。
要かつ特徴的な点は、図4に示すように外部より他の値
Ci を入力することができ、この値Ci を部分積と同様
にワラス・アレイの中で部分積の加算と同時に加算(あ
るいはcの補数の加算による減算)をすることができる
ことである。図4では全加算器をツリー構造の加算器群
(ワラス・ツリー)に挿入して外部からの入力を実現し
た。全加算器を挿入することが、本乗算アレイのクリテ
ィカル・パスに全く影響を与えない利点に着目すべきで
ある。
【0041】最終加算器102は、キャリー・セーブ・
フォーム(桁上げ成分Fcc、和成分Fss)で出力さ
れたアレイ出力を2進数に変換する、例えば、24ビッ
トのオペランドA及びBの入力に対応して48ビットを
出力する桁上げ伝搬加算器である。なお、乗算アレイを
構成する加算器群として、上述した和を和成分、桁上げ
成分に分けて求める桁上げ保存型加算器の他、冗長数を
用いて加算するSD加算器、PD加算器、全加算器等を
用いることが可能である。
フォーム(桁上げ成分Fcc、和成分Fss)で出力さ
れたアレイ出力を2進数に変換する、例えば、24ビッ
トのオペランドA及びBの入力に対応して48ビットを
出力する桁上げ伝搬加算器である。なお、乗算アレイを
構成する加算器群として、上述した和を和成分、桁上げ
成分に分けて求める桁上げ保存型加算器の他、冗長数を
用いて加算するSD加算器、PD加算器、全加算器等を
用いることが可能である。
【0042】次に、本乗加減算器の動作を説明する。ま
ず、第1及び第2のオペランドA,Bは、乗算アレイ3
01に入力され乗算が行われる。乗算アルゴリズムとし
て2次のブースのアルゴリズムを用いた場合、12個の
部分積が、全加算器4wにより構成される、同じ重み
(同じ桁)の部分積の和を得るワラス・ツリーで加算さ
れる。ワラス・ツリーは、各桁毎に設けられ、ある桁の
ツリーにおける桁上げ分が次段のツリーで加算されるよ
うにして逐次的に加算される。一方、第3のオペランド
Cも乗算アレイ301に入力され、オペランドCの各桁
に対応するワラス・ツリーの加算器によってオペランド
Cの各桁の値が同じ重みの部分積と直接加算される。こ
の結果、乗算アレイからは、キャリー・セーブ・フォー
ムで乗加減算の演算結果A×B+Cが算出される。最終
加算器では、キャリー・セーブ・フォームで求められた
乗加減算の演算結果A×B+Cが2進数に変換される。
ず、第1及び第2のオペランドA,Bは、乗算アレイ3
01に入力され乗算が行われる。乗算アルゴリズムとし
て2次のブースのアルゴリズムを用いた場合、12個の
部分積が、全加算器4wにより構成される、同じ重み
(同じ桁)の部分積の和を得るワラス・ツリーで加算さ
れる。ワラス・ツリーは、各桁毎に設けられ、ある桁の
ツリーにおける桁上げ分が次段のツリーで加算されるよ
うにして逐次的に加算される。一方、第3のオペランド
Cも乗算アレイ301に入力され、オペランドCの各桁
に対応するワラス・ツリーの加算器によってオペランド
Cの各桁の値が同じ重みの部分積と直接加算される。こ
の結果、乗算アレイからは、キャリー・セーブ・フォー
ムで乗加減算の演算結果A×B+Cが算出される。最終
加算器では、キャリー・セーブ・フォームで求められた
乗加減算の演算結果A×B+Cが2進数に変換される。
【0043】このように第3のオペランドCの加算を乗
算アレイ301で(A×B)を求める部分積の加算と同
時に行うことによって、第1、第2のオペランドの積
(A×B)と第3のオペランドCを加算する加算器10
3、203を省略することができる。これによって、高
速化かつ省ハードウェアである乗加減算の演算器を実現
することが可能となる。
算アレイ301で(A×B)を求める部分積の加算と同
時に行うことによって、第1、第2のオペランドの積
(A×B)と第3のオペランドCを加算する加算器10
3、203を省略することができる。これによって、高
速化かつ省ハードウェアである乗加減算の演算器を実現
することが可能となる。
【0044】次に、第2の実施例について説明する。上
述した固定小数点乗加減算器を浮動小数点乗加減算器の
仮数部演算器に用いることによって、同様に高速化、省
ハードウェア化を図った浮動小数点乗加減算器を得るこ
とが可能となる。図5は、このような例を示す浮動小数
点乗加減算器の仮数部演算器を示したブロック図であ
る。
述した固定小数点乗加減算器を浮動小数点乗加減算器の
仮数部演算器に用いることによって、同様に高速化、省
ハードウェア化を図った浮動小数点乗加減算器を得るこ
とが可能となる。図5は、このような例を示す浮動小数
点乗加減算器の仮数部演算器を示したブロック図であ
る。
【0045】同図において、乗加減算器は、乗算アレイ
401、最終加算器402、桁合せシフタ403、イン
クリメンタ(増分加算器)404、先行1検出回路40
5、正規化シフタ406、丸め回路407によって構成
される。A×B+Cの演算を行う浮動小数点乗加減算器
の場合、積(A×B)の値よりも、Cの値が大きい場合
がある。そこで、この構成では、オペランドA,Bの仮
数部の積(Fa×Fb)を表す2進値とオペランドCの
仮数部Fcを表わす2進値とが共通する桁幅(下位ビッ
トFc low )の部分について、乗算アレイ401を用い
て加算処理(Fa×Fb+Fc low )を行う。Fcが
(Fa×Fb)を表す2進値の桁幅を超える桁幅の部分
(上位ビットFc high)については、そのままFc high
を出力する。ただし、加算処理(Fa×Fb+Fc low
)において桁上げが生じた場合、インクリメンタ40
4によってFc highに「1」を付加える。そして、正規
化シフタに、(Fa×Fb+Fc low )と、Fc highあ
るいは桁上げによってインクリメントされたFc high+
1とを、入力して、桁を揃えたFa×Fb+Fcの2進
値表示を得、Fc highにおいて「1」となる先頭のビッ
ト位置(桁)を判別する先行1の検出結果に対応して正
規化する。そして、丸め回路407によって規定の丸め
処理を行う。
401、最終加算器402、桁合せシフタ403、イン
クリメンタ(増分加算器)404、先行1検出回路40
5、正規化シフタ406、丸め回路407によって構成
される。A×B+Cの演算を行う浮動小数点乗加減算器
の場合、積(A×B)の値よりも、Cの値が大きい場合
がある。そこで、この構成では、オペランドA,Bの仮
数部の積(Fa×Fb)を表す2進値とオペランドCの
仮数部Fcを表わす2進値とが共通する桁幅(下位ビッ
トFc low )の部分について、乗算アレイ401を用い
て加算処理(Fa×Fb+Fc low )を行う。Fcが
(Fa×Fb)を表す2進値の桁幅を超える桁幅の部分
(上位ビットFc high)については、そのままFc high
を出力する。ただし、加算処理(Fa×Fb+Fc low
)において桁上げが生じた場合、インクリメンタ40
4によってFc highに「1」を付加える。そして、正規
化シフタに、(Fa×Fb+Fc low )と、Fc highあ
るいは桁上げによってインクリメントされたFc high+
1とを、入力して、桁を揃えたFa×Fb+Fcの2進
値表示を得、Fc highにおいて「1」となる先頭のビッ
ト位置(桁)を判別する先行1の検出結果に対応して正
規化する。そして、丸め回路407によって規定の丸め
処理を行う。
【0046】次に、各部について説明する。乗算アレイ
401は、入力される正規化された2つのオペランドA
及びBの仮数部Fa及びFbの乗算を行う。乗算アレイ
401は、図1に示される乗算アレイ301と同様の構
成である。例えば、2次のブースのアルゴリズムを用い
ており、図2に示したような、2次のブースのリコー
ダ、部分積生成回路、部分積加算用桁上げ保存加算器群
(例えば、ワラス・ツリー)、によって構成される。倍
精度の演算を行う場合には、27個の部分積が生成さ
れ、これらの各部分積はワラス・ツリーで加算され、キ
ャリー・セーブ・フォーム(桁上げ成分Fcc,和成分
Fss)で積が算出される。
401は、入力される正規化された2つのオペランドA
及びBの仮数部Fa及びFbの乗算を行う。乗算アレイ
401は、図1に示される乗算アレイ301と同様の構
成である。例えば、2次のブースのアルゴリズムを用い
ており、図2に示したような、2次のブースのリコー
ダ、部分積生成回路、部分積加算用桁上げ保存加算器群
(例えば、ワラス・ツリー)、によって構成される。倍
精度の演算を行う場合には、27個の部分積が生成さ
れ、これらの各部分積はワラス・ツリーで加算され、キ
ャリー・セーブ・フォーム(桁上げ成分Fcc,和成分
Fss)で積が算出される。
【0047】図6は、第2の実施例における桁上げ保存
加算器4wを用いたワラス・ツリーの構成図である。4
段に配列された桁上げ保存加算器4wと、その間に挿入
された桁上げ保存加算器3wにより構成されている。前
述したように、桁上げ保存加算器4wは、4つの入力
と、1つの桁上げ入力との、5つの入力に対応して、1
つの和出力、2つの桁上げ出力を備える。また、桁上げ
保存加算器3wは、3つの入力に対応して、1つの和出
力、1つの桁上げ出力を備える。
加算器4wを用いたワラス・ツリーの構成図である。4
段に配列された桁上げ保存加算器4wと、その間に挿入
された桁上げ保存加算器3wにより構成されている。前
述したように、桁上げ保存加算器4wは、4つの入力
と、1つの桁上げ入力との、5つの入力に対応して、1
つの和出力、2つの桁上げ出力を備える。また、桁上げ
保存加算器3wは、3つの入力に対応して、1つの和出
力、1つの桁上げ出力を備える。
【0048】この乗算アレイ401で最も重要かつ特徴
的な点は、図4に示されるワラス・ツリーと同様に、外
部より他の値を入力することができ、部分積と同様にツ
リー構造(例えば、ワラス・ツリー)に配列された加算
器群のアレイの中で部分積の加算と同時に加算すること
ができることである。図6では、ワラス・ツリーに、3
つの入力に対応して、1つの和出力、1つの桁上げ出力
を備える全加算器3wを挿入して外部からの入力を可能
とした。ワラス・ツリーに全加算器3wを挿入しても、
乗算アレイ301の演算時間に関するクリティカル・パ
スに全く影響を与えていない。
的な点は、図4に示されるワラス・ツリーと同様に、外
部より他の値を入力することができ、部分積と同様にツ
リー構造(例えば、ワラス・ツリー)に配列された加算
器群のアレイの中で部分積の加算と同時に加算すること
ができることである。図6では、ワラス・ツリーに、3
つの入力に対応して、1つの和出力、1つの桁上げ出力
を備える全加算器3wを挿入して外部からの入力を可能
とした。ワラス・ツリーに全加算器3wを挿入しても、
乗算アレイ301の演算時間に関するクリティカル・パ
スに全く影響を与えていない。
【0049】桁合わせシフタ403は、正規化された第
3のオペランドCの仮数部Fcと、乗算アレイ401内
に得られる積(Fa×Fb)との、桁合わせを行う、例
えば、106ビットのバレル・シフタである。桁合わせ
シフタ403には、シフト・ステップ数として3つのオ
ペランドの指数部より求められた値| Ea+Eb−E
c| が入力され、その分だけオペランドCの仮数部F
cがシフトされる。前述したように、Ea,Eb,Ec
は、夫々オペランドA,B,Cの指数部である。
3のオペランドCの仮数部Fcと、乗算アレイ401内
に得られる積(Fa×Fb)との、桁合わせを行う、例
えば、106ビットのバレル・シフタである。桁合わせ
シフタ403には、シフト・ステップ数として3つのオ
ペランドの指数部より求められた値| Ea+Eb−E
c| が入力され、その分だけオペランドCの仮数部F
cがシフトされる。前述したように、Ea,Eb,Ec
は、夫々オペランドA,B,Cの指数部である。
【0050】仮数部Fcの桁合わせシフト結果Fc shif
t は、積(Fa×Fb)の各デジットと同じ桁になる部
分Fc low と、それより上位の部分Fc highとに分割さ
れる。Fc low は乗算アレイ401に入力され、Fc hi
ghはインクリメンタ404に入力される。
t は、積(Fa×Fb)の各デジットと同じ桁になる部
分Fc low と、それより上位の部分Fc highとに分割さ
れる。Fc low は乗算アレイ401に入力され、Fc hi
ghはインクリメンタ404に入力される。
【0051】最終加算器402は、キャリー・セーブ・
フォームで出力されたアレイ出力(和成分Fss,桁上
げ成分Fcc)を2進数Fbb lowに変換する106ビッ
トの桁上げ伝搬加算器である。Fbb lowは、正規化シフ
タ106に入力される。また、キャリーccは、インク
リメンタ404に入力される。
フォームで出力されたアレイ出力(和成分Fss,桁上
げ成分Fcc)を2進数Fbb lowに変換する106ビッ
トの桁上げ伝搬加算器である。Fbb lowは、正規化シフ
タ106に入力される。また、キャリーccは、インク
リメンタ404に入力される。
【0052】インクリメンタ404は、乗加減算の演算
結果の上位部分Fbb high を計算する53bビットのイ
ンクリメンタである。インクリメンタ404では、Fc
high+1を求め、最終加算器402のキャリーCCの値
によって、Fc high+1,Fc highのいずれかを選択、
Fbb high として出力する。先行1検出回路405に、
Fbb high が入力され先行「1」の位置が検出される。
出力値Snormは、正規化シフトのステップ数として、正
規化シフタ406に入力される。
結果の上位部分Fbb high を計算する53bビットのイ
ンクリメンタである。インクリメンタ404では、Fc
high+1を求め、最終加算器402のキャリーCCの値
によって、Fc high+1,Fc highのいずれかを選択、
Fbb high として出力する。先行1検出回路405に、
Fbb high が入力され先行「1」の位置が検出される。
出力値Snormは、正規化シフトのステップ数として、正
規化シフタ406に入力される。
【0053】正規化シフタ406は、乗加減算の演算結
果Fbb(Fbb high ,Fbb lowのビット結合)の正規
化を行うバレル・シフタである。53ビット幅の先行1
検出回路405の出力Snormだけ左にシフトされた出力
Fnを得る。丸め回路407は、例えば、IEEE 7
54規格に従って、出力Fnの丸め処理を行い、最終演
算結果Fmacを得る。
果Fbb(Fbb high ,Fbb lowのビット結合)の正規
化を行うバレル・シフタである。53ビット幅の先行1
検出回路405の出力Snormだけ左にシフトされた出力
Fnを得る。丸め回路407は、例えば、IEEE 7
54規格に従って、出力Fnの丸め処理を行い、最終演
算結果Fmacを得る。
【0054】次に、第2の実施例における(浮動小数
点)乗加減算器のより詳細な動作について、図5及び図
7を参照して説明する。図7は、乗加減算器におけるデ
ータ信号の流れを表している。
点)乗加減算器のより詳細な動作について、図5及び図
7を参照して説明する。図7は、乗加減算器におけるデ
ータ信号の流れを表している。
【0055】まず、正規化されている第1のオペランド
Aの仮数部Fa及び第2のオペランドBの仮数部Fb
は、乗算アレイ401に入力され乗算が行われる。本実
施例では、2次のブースのアルゴリズムを用いているの
で、27個の部分積が4段の4−2コンパクタ(加算器
4w)により構成されるワラス・ツリー(図6)で加算
される。一方、正規化されている第3のオペランドCの
仮数部Fcは、桁合わせシフタ403に入力され、乗算
アレイ401におけるFa,Fbの乗算処理に並行して
桁合わせが行われる。桁合わせは、オペランドA,B及
びC各々の指数部である、Ea,Eb及びEcに基づい
て、| Ea+Eb−Ec| だけシフトすることによ
って行われる。桁合わせシフト結果Fc shift は、積
(Fa×Fb)の各デジットと同じ桁になる部分Fc lo
w と、積(Fa×F)の桁幅を超える上位の部分Fc hi
ghとに分割される。
Aの仮数部Fa及び第2のオペランドBの仮数部Fb
は、乗算アレイ401に入力され乗算が行われる。本実
施例では、2次のブースのアルゴリズムを用いているの
で、27個の部分積が4段の4−2コンパクタ(加算器
4w)により構成されるワラス・ツリー(図6)で加算
される。一方、正規化されている第3のオペランドCの
仮数部Fcは、桁合わせシフタ403に入力され、乗算
アレイ401におけるFa,Fbの乗算処理に並行して
桁合わせが行われる。桁合わせは、オペランドA,B及
びC各々の指数部である、Ea,Eb及びEcに基づい
て、| Ea+Eb−Ec| だけシフトすることによ
って行われる。桁合わせシフト結果Fc shift は、積
(Fa×Fb)の各デジットと同じ桁になる部分Fc lo
w と、積(Fa×F)の桁幅を超える上位の部分Fc hi
ghとに分割される。
【0056】Fc low は乗算アレイ401に入力され、
部分積と共にワラス・ツリーで加算され、乗加減算の演
算結果の下位部分がキャリー・セーブ・フォーム(和成
分Fss,キャリー成分Fcc)で求められる。これら
の和成分Fss,キャリー成分Fccは、最終加算器4
02で加算され、2進数の乗加減算の演算結果の下位部
分Fbb lowが算出される。この際、キャリーオーバが発
生すると、このオーバ分をFc highのビット幅に担わせ
るべく、最終加算器402のキャリー出力CCは、イン
クリメンタ404に入力される。
部分積と共にワラス・ツリーで加算され、乗加減算の演
算結果の下位部分がキャリー・セーブ・フォーム(和成
分Fss,キャリー成分Fcc)で求められる。これら
の和成分Fss,キャリー成分Fccは、最終加算器4
02で加算され、2進数の乗加減算の演算結果の下位部
分Fbb lowが算出される。この際、キャリーオーバが発
生すると、このオーバ分をFc highのビット幅に担わせ
るべく、最終加算器402のキャリー出力CCは、イン
クリメンタ404に入力される。
【0057】一方、桁合わせシフト結果Fc shift の上
位部分Fc highはインクリメンタ404に入力される。
Fc highからFc high+1が生成される。インクリメン
タ404において、最終加算器402のキャリーCCの
値が「1」のとき、Fc high+1が選択され、キャリー
CCの値が「0」のとき、Fc highが選択される。選択
されたFc high+1あるいはFc highが、乗加減算の演
算結果の上位部分Fbbhigh として出力される。また、
インクリメンタ404の出力Fbb high は先行1検出回
路405に入力され、正規化シフトに必要なシフト・ス
テップ数Snormが算出される。乗加減算の演算結果Fbb
high 及びFbb lowはビット結合され、正規化シフタ1
06においてシフト・ステップ数Snorm分だけシフトさ
れ、正規化される。正規化された正規化結果Fnは、丸
め回路107において、有効桁数に満たない下位ビット
(sticky)について、例えば、IEEE−754に準じ
た丸めが施され、乗加減算の演算結果Fmacを得る。
位部分Fc highはインクリメンタ404に入力される。
Fc highからFc high+1が生成される。インクリメン
タ404において、最終加算器402のキャリーCCの
値が「1」のとき、Fc high+1が選択され、キャリー
CCの値が「0」のとき、Fc highが選択される。選択
されたFc high+1あるいはFc highが、乗加減算の演
算結果の上位部分Fbbhigh として出力される。また、
インクリメンタ404の出力Fbb high は先行1検出回
路405に入力され、正規化シフトに必要なシフト・ス
テップ数Snormが算出される。乗加減算の演算結果Fbb
high 及びFbb lowはビット結合され、正規化シフタ1
06においてシフト・ステップ数Snorm分だけシフトさ
れ、正規化される。正規化された正規化結果Fnは、丸
め回路107において、有効桁数に満たない下位ビット
(sticky)について、例えば、IEEE−754に準じ
た丸めが施され、乗加減算の演算結果Fmacを得る。
【0058】このように、第3のオペランドCの加算を
乗算アレイ401で行うことにより、従来、約160ビ
ットのビット幅を必要とした、乗加減算器を構成する桁
合せシフタ202、加算器203、先行1検出器204
等の演算モジュールのビット幅を減らした構成を得るこ
とが可能となる。これによって、乗加減算の演算速度の
高速化を実現することができる。 (バレルシフタ)次に、乗加減算器等の演算装置におい
て、データをシフトするために用いられるバレルシフタ
の改良について説明する。第1の実施例を図16を参照
して説明する。同図は、入出力データ長が16ビットで
あり、シフト量を4ビット長の2進数値b8 b4 b2 b
1 にて指定する単一方向バレルシフタの機能ブロック図
を示している。この例では、8、4、2、1ビットのシ
フトを行うかどうかを選択することによって、指定され
たシフト量だけのシフトを実現する。8ビット及び4ビ
ットのシフトは、1組の信号シフト手段と、4入力1出
力のセレクト手段とにて行われる。同様に、2ビット及
び1ビットのシフトは、1組のシフト段と、4入力1出
力のセレクト手段とにて実現される。
乗算アレイ401で行うことにより、従来、約160ビ
ットのビット幅を必要とした、乗加減算器を構成する桁
合せシフタ202、加算器203、先行1検出器204
等の演算モジュールのビット幅を減らした構成を得るこ
とが可能となる。これによって、乗加減算の演算速度の
高速化を実現することができる。 (バレルシフタ)次に、乗加減算器等の演算装置におい
て、データをシフトするために用いられるバレルシフタ
の改良について説明する。第1の実施例を図16を参照
して説明する。同図は、入出力データ長が16ビットで
あり、シフト量を4ビット長の2進数値b8 b4 b2 b
1 にて指定する単一方向バレルシフタの機能ブロック図
を示している。この例では、8、4、2、1ビットのシ
フトを行うかどうかを選択することによって、指定され
たシフト量だけのシフトを実現する。8ビット及び4ビ
ットのシフトは、1組の信号シフト手段と、4入力1出
力のセレクト手段とにて行われる。同様に、2ビット及
び1ビットのシフトは、1組のシフト段と、4入力1出
力のセレクト手段とにて実現される。
【0059】図17は、図16に示された、初段の8ビ
ット+4ビットシフトを行う4入力1出力のセレクト手
段ならびにセレクト手段を適切に動作させるための制御
信号を生成するセレクタ制御信号生成手段の構成例を示
している。図16に示される16ビット長のシフタを構
成するためには、もう一段、2ビット+1ビットシフト
に対応する機構を縦続接続する。ここでは、セレクタ制
御信号生成手段に入力された2ビットのシフト量指示信
号をデコードして、4入力1出力のトランスミッション
ゲート形セレクタのトランジスタのうち、1組のpチャ
ネル及びnチャネルトランジスタを導通させることによ
り、信号シフト手段によって供給された信号の内の適切
なものを次の段あるいは出力に伝えるようになってい
る。このシフタについて、シフト量制御入力によって1
3ビットのシフトが指示された場合について考えて見
る。13ビットというシフト量を2進数値にて表現する
と、(1101)となることから、8ビット、4ビット
及び1ビットシフトを行えば良いことになる。このこと
を図16にて考えると、まず、初段の8ビット+4ビッ
トシフト段においては、合計12ビットのシフトが行わ
れることになり、続く2ビット+1ビットのシフト段に
おいては、1ビットのシフトが行われることから、両段
合わせて13ビットのシフトが実現される。例えば、デ
ータ入力においてビット16にあったデータは、最初の
8ビット+4ビットシフト段において、ビット位置が1
2ビット右方向にシフトされ、ビット位置が4ビット目
に相当する位置にまで移動する。その後、2ビット+1
ビットシフト段において、1ビットだけ右方向にシフト
される結果、最終的には入力されたビット位置(16)
から13ビットだけ右にシフトした3ビット目のビット
位置にデータが現われる。
ット+4ビットシフトを行う4入力1出力のセレクト手
段ならびにセレクト手段を適切に動作させるための制御
信号を生成するセレクタ制御信号生成手段の構成例を示
している。図16に示される16ビット長のシフタを構
成するためには、もう一段、2ビット+1ビットシフト
に対応する機構を縦続接続する。ここでは、セレクタ制
御信号生成手段に入力された2ビットのシフト量指示信
号をデコードして、4入力1出力のトランスミッション
ゲート形セレクタのトランジスタのうち、1組のpチャ
ネル及びnチャネルトランジスタを導通させることによ
り、信号シフト手段によって供給された信号の内の適切
なものを次の段あるいは出力に伝えるようになってい
る。このシフタについて、シフト量制御入力によって1
3ビットのシフトが指示された場合について考えて見
る。13ビットというシフト量を2進数値にて表現する
と、(1101)となることから、8ビット、4ビット
及び1ビットシフトを行えば良いことになる。このこと
を図16にて考えると、まず、初段の8ビット+4ビッ
トシフト段においては、合計12ビットのシフトが行わ
れることになり、続く2ビット+1ビットのシフト段に
おいては、1ビットのシフトが行われることから、両段
合わせて13ビットのシフトが実現される。例えば、デ
ータ入力においてビット16にあったデータは、最初の
8ビット+4ビットシフト段において、ビット位置が1
2ビット右方向にシフトされ、ビット位置が4ビット目
に相当する位置にまで移動する。その後、2ビット+1
ビットシフト段において、1ビットだけ右方向にシフト
される結果、最終的には入力されたビット位置(16)
から13ビットだけ右にシフトした3ビット目のビット
位置にデータが現われる。
【0060】図18は、図17において示した8ビット
+4ビットシフト段における信号シフト手段ならびにセ
レクト手段の構成を示している。
+4ビットシフト段における信号シフト手段ならびにセ
レクト手段の構成を示している。
【0061】また、図24は、従来の構成によって、8
ビットシフト及び4ビットシフトを独立して実行する場
合の信号シフト手段ならびにセレクト手段の接続形態を
示している。この場合、信号シフト手段の配線が縦方向
に占める面積は8本(図中配線8本分の高さとして示さ
れている)+4本(同じく、配線4本分の高さとして示
されている)=12本の配線によって決定されるが、本
発明による図18の構成においても同じく12本分の配
線面積となることから、構成を変更することによる信号
シフト手段の占有面積の変化(増加)はないことにな
る。また、図19に示す、本発明における4入力1出力
セレクト手段をトランスミッションゲートにて構成した
場合の回路と、図25に示す、これと等価な従来の構成
による回路とを比較すると、セレクタを動作させるため
の制御信号線の本数が従来の4本から本発明における構
成では8本と増加しはするものの、トランジスタの数と
しては全く同じであり、制御信号線を除いてはハードウ
エアの増加はない。
ビットシフト及び4ビットシフトを独立して実行する場
合の信号シフト手段ならびにセレクト手段の接続形態を
示している。この場合、信号シフト手段の配線が縦方向
に占める面積は8本(図中配線8本分の高さとして示さ
れている)+4本(同じく、配線4本分の高さとして示
されている)=12本の配線によって決定されるが、本
発明による図18の構成においても同じく12本分の配
線面積となることから、構成を変更することによる信号
シフト手段の占有面積の変化(増加)はないことにな
る。また、図19に示す、本発明における4入力1出力
セレクト手段をトランスミッションゲートにて構成した
場合の回路と、図25に示す、これと等価な従来の構成
による回路とを比較すると、セレクタを動作させるため
の制御信号線の本数が従来の4本から本発明における構
成では8本と増加しはするものの、トランジスタの数と
しては全く同じであり、制御信号線を除いてはハードウ
エアの増加はない。
【0062】図19及び図25で、データ信号がそれぞ
れ上部から入力されて、出力されるまでの経路について
考えてみると、従来の構成では2つのトランジスタ対を
通過するのに対して、本発明による構成では1つのトラ
ンジスタ対を通過するだけであることから、信号経路に
おけるインピーダンスが半分に低下し、信号通過時の遅
延時間が減少するのと同時に、トランジスタ対における
電力消費量が減少することになる。
れ上部から入力されて、出力されるまでの経路について
考えてみると、従来の構成では2つのトランジスタ対を
通過するのに対して、本発明による構成では1つのトラ
ンジスタ対を通過するだけであることから、信号経路に
おけるインピーダンスが半分に低下し、信号通過時の遅
延時間が減少するのと同時に、トランジスタ対における
電力消費量が減少することになる。
【0063】すなわち、本発明のバレルシフタの第1の
実施例においては、セレクタの制御信号線の本数が若干
増加するが、制御信号を生成するためのハードウエアが
増加する代償として、シフタの高速化ならびに低消費電
力化を図れることになる。
実施例においては、セレクタの制御信号線の本数が若干
増加するが、制御信号を生成するためのハードウエアが
増加する代償として、シフタの高速化ならびに低消費電
力化を図れることになる。
【0064】図20はこの第1の実施例について、1段
のセレクタ段において実行されるビットシフト量の組み
合わせを変更したものであり、8ビット/1ビットシフ
トと、4ビット/2ビットシフトとを、それぞれ足し合
わせた数、すなわち図18に示したような信号シフト手
段における横方向の配線の長さがほぼ等しくなるような
構成とすることによって、それぞれのセレクト手段にお
ける負荷容量を均等化させ、セレクタ段の前後に信号強
化用のバッファ回路を用いるような場合において、負荷
容量分担の設計を容易にするといった応用が可能であ
る。
のセレクタ段において実行されるビットシフト量の組み
合わせを変更したものであり、8ビット/1ビットシフ
トと、4ビット/2ビットシフトとを、それぞれ足し合
わせた数、すなわち図18に示したような信号シフト手
段における横方向の配線の長さがほぼ等しくなるような
構成とすることによって、それぞれのセレクト手段にお
ける負荷容量を均等化させ、セレクタ段の前後に信号強
化用のバッファ回路を用いるような場合において、負荷
容量分担の設計を容易にするといった応用が可能であ
る。
【0065】図21に、本発明のバレルシフタの第2の
実施例を示す。この実施例は、入出力データ長が16ビ
ットであり、シフト量が4ビット長の2進数値にて指定
され、シフト方向が1ビットの信号にて指定される、両
方向バレルシフタである。この例では、データ入力側か
らデータ出力側に向って順に、ビット順逆転+8ビット
シフト、2ビットシフト+1ビットシフト、4ビットシ
フト+ビット順逆転を、それぞれ実行するセレクタ段
が、信号シフト/ビット順逆転手段あるいは信号シフト
手段に引き続いて接続されている。
実施例を示す。この実施例は、入出力データ長が16ビ
ットであり、シフト量が4ビット長の2進数値にて指定
され、シフト方向が1ビットの信号にて指定される、両
方向バレルシフタである。この例では、データ入力側か
らデータ出力側に向って順に、ビット順逆転+8ビット
シフト、2ビットシフト+1ビットシフト、4ビットシ
フト+ビット順逆転を、それぞれ実行するセレクタ段
が、信号シフト/ビット順逆転手段あるいは信号シフト
手段に引き続いて接続されている。
【0066】図22は、図21に示されるビット順逆転
を含むセレクト手段ならびにセレクタ制御信号生成手段
の構成例である。本発明のバレルシフタの第1の実施例
において2種類のシフト量を組み合わせる代わりに、1
種類のシフト量と、ビット順逆転操作とを組み合わせて
1段としているのが特徴である。そして、図21に示す
構成においては、その初段に図22に示すビット順逆転
+8ビットシフトを行うブロックを設置した後、第1の
実施例における図17に示すような構成を用いた2ビッ
ト+1ビットシフトを実行するブロックを縦続接続す
る。そして、最後に図21に示す構成において4ビット
シフトを行ってからビット順を逆転させる機能を持たせ
た機能ブロックを設置することによって、全体の両方向
バレルシフタを構成している。すなわち、4入力1出力
のセレクト手段を用いることによる特質は、第1の実施
例におけるものと同一であることになる。
を含むセレクト手段ならびにセレクタ制御信号生成手段
の構成例である。本発明のバレルシフタの第1の実施例
において2種類のシフト量を組み合わせる代わりに、1
種類のシフト量と、ビット順逆転操作とを組み合わせて
1段としているのが特徴である。そして、図21に示す
構成においては、その初段に図22に示すビット順逆転
+8ビットシフトを行うブロックを設置した後、第1の
実施例における図17に示すような構成を用いた2ビッ
ト+1ビットシフトを実行するブロックを縦続接続す
る。そして、最後に図21に示す構成において4ビット
シフトを行ってからビット順を逆転させる機能を持たせ
た機能ブロックを設置することによって、全体の両方向
バレルシフタを構成している。すなわち、4入力1出力
のセレクト手段を用いることによる特質は、第1の実施
例におけるものと同一であることになる。
【0067】ここで、図21に示す両方向シフタにおけ
るデータの流れについて説明する。例えば、13ビット
の右方向へのシフトを行う場合について考える。図21
に示したシフタにおいて、ビット順を逆転させない場合
に右方向へのシフトが行われるように信号シフト手段が
構成されているものとすると、まず、初段のビット順逆
転+8ビットシフト段においては、8ビット右シフトの
みが行われる。そして、次の2ビット+1ビットシフト
段において1ビットの右シフトが行われたのち、最後の
4ビットシフト+ビット順逆転段においては、4ビット
右シフトのみを実行することによって、全体で13ビッ
トの右シフトが実現される。すなわち、このシフタの初
段と最終段に設置されているビット順逆転機構を使用し
ないことによって、このシフタのディフォルトのシフト
方向である右方向へのシフトであることを指示し、入力
データのシフト量は、8ビットシフト+4ビットシフト
+1ビットシフトにより、13ビットシフトとなる。
るデータの流れについて説明する。例えば、13ビット
の右方向へのシフトを行う場合について考える。図21
に示したシフタにおいて、ビット順を逆転させない場合
に右方向へのシフトが行われるように信号シフト手段が
構成されているものとすると、まず、初段のビット順逆
転+8ビットシフト段においては、8ビット右シフトの
みが行われる。そして、次の2ビット+1ビットシフト
段において1ビットの右シフトが行われたのち、最後の
4ビットシフト+ビット順逆転段においては、4ビット
右シフトのみを実行することによって、全体で13ビッ
トの右シフトが実現される。すなわち、このシフタの初
段と最終段に設置されているビット順逆転機構を使用し
ないことによって、このシフタのディフォルトのシフト
方向である右方向へのシフトであることを指示し、入力
データのシフト量は、8ビットシフト+4ビットシフト
+1ビットシフトにより、13ビットシフトとなる。
【0068】ここで、入力データにおけるビット位置が
16ビット目にあったデータが、シフタの13ビット右
シフトの操作によってどのように流れていくのかについ
て説明すると、初段のビット順逆転+8ビットシフト段
においては8ビットシフトのみの操作を受けて、16ビ
ット目にあったデータのビット位置が8ビット目に移動
する。続いて、2ビット+1ビットシフト段にて1ビッ
ト右シフトされて、ビット位置が7ビット目となる。そ
して、最後の4ビットシフト+ビット順逆転手段におい
ては、4ビットシフトのみが行われて、最終的にはデー
タは3ビット目の位置に現われる。当初の16ビット目
の位置から、13ビットシフトした3ビット目の位置に
データがシフトされることがわかる。
16ビット目にあったデータが、シフタの13ビット右
シフトの操作によってどのように流れていくのかについ
て説明すると、初段のビット順逆転+8ビットシフト段
においては8ビットシフトのみの操作を受けて、16ビ
ット目にあったデータのビット位置が8ビット目に移動
する。続いて、2ビット+1ビットシフト段にて1ビッ
ト右シフトされて、ビット位置が7ビット目となる。そ
して、最後の4ビットシフト+ビット順逆転手段におい
ては、4ビットシフトのみが行われて、最終的にはデー
タは3ビット目の位置に現われる。当初の16ビット目
の位置から、13ビットシフトした3ビット目の位置に
データがシフトされることがわかる。
【0069】13ビット左シフトの操作について説明す
る。この場合には、初段と最終段におけるビット順逆転
機構が両方動作する。まず、初段のビット順逆転+8ビ
ットシフト段においては、入力データのビット順を逆転
した後に8ビット右シフトする。これにより、例えば、
当初0ビット目にあったデータは、7ビット目の位置に
まで移動する。そして、2ビット+1ビットシフト段に
て1ビット右シフトされることによって6ビット目にビ
ット位置が移動する。最後の4ビットシフト+ビット順
逆転段においては、6ビット目のデータを4ビット右シ
フトした後にビット順を逆転させる。これにより、6ビ
ット目の位置から論理的にはまず2ビット目の位置に移
動した後、ビット順逆転によって13ビット目の位置に
移動することになる。0ビット位置のデータの13ビッ
ト位置への左シフトが達成される。
る。この場合には、初段と最終段におけるビット順逆転
機構が両方動作する。まず、初段のビット順逆転+8ビ
ットシフト段においては、入力データのビット順を逆転
した後に8ビット右シフトする。これにより、例えば、
当初0ビット目にあったデータは、7ビット目の位置に
まで移動する。そして、2ビット+1ビットシフト段に
て1ビット右シフトされることによって6ビット目にビ
ット位置が移動する。最後の4ビットシフト+ビット順
逆転段においては、6ビット目のデータを4ビット右シ
フトした後にビット順を逆転させる。これにより、6ビ
ット目の位置から論理的にはまず2ビット目の位置に移
動した後、ビット順逆転によって13ビット目の位置に
移動することになる。0ビット位置のデータの13ビッ
ト位置への左シフトが達成される。
【0070】図23は、図22に示す信号シフト/ビッ
ト順逆転手段の構成例を示している。縦方向へは16本
分の配線スペースが必要となることが分かる。このと
き、配線容量が最大となる信号パスは、同図におけるb
0 から入力されて、x15に出力されるものであり、ちょ
うど入力データ列の横幅に相当する距離となる。
ト順逆転手段の構成例を示している。縦方向へは16本
分の配線スペースが必要となることが分かる。このと
き、配線容量が最大となる信号パスは、同図におけるb
0 から入力されて、x15に出力されるものであり、ちょ
うど入力データ列の横幅に相当する距離となる。
【0071】図26は、同じ機能を有する信号シフト/
ビット順逆転手段を、従来の2入力1出力セレクト手段
を用いて構成した例を示している。この場合、ビット順
逆転のみを行う信号逆転手段においてすでに16本分の
縦方向への配線領域が必要となっている。さらには8ビ
ットシフトを行うための8本分の配線スペースが加わる
ことから、合わせて24本分の配線スペースが必要とな
る。すなわち、信号シフト/ビット順逆転手段に要する
配線領域の面積という観点では、本発明のバレルシフタ
を用いたものの方が小さくて済む。また、図26に示さ
れる従来の構成では、信号が入力されてから出力される
までの最長の信号パスは、同図中のb0 から入力されて
y15を経由してz7 に至るという経路であるが、本発明
による図23に示すものと比べると、y15からz7にい
たる配線長が余分に加わっている。従って、本発明のバ
レルシフタを用いることによって、信号の伝搬距離を短
縮することができるから、シフト動作の高速化を図るこ
とが可能となる。
ビット順逆転手段を、従来の2入力1出力セレクト手段
を用いて構成した例を示している。この場合、ビット順
逆転のみを行う信号逆転手段においてすでに16本分の
縦方向への配線領域が必要となっている。さらには8ビ
ットシフトを行うための8本分の配線スペースが加わる
ことから、合わせて24本分の配線スペースが必要とな
る。すなわち、信号シフト/ビット順逆転手段に要する
配線領域の面積という観点では、本発明のバレルシフタ
を用いたものの方が小さくて済む。また、図26に示さ
れる従来の構成では、信号が入力されてから出力される
までの最長の信号パスは、同図中のb0 から入力されて
y15を経由してz7 に至るという経路であるが、本発明
による図23に示すものと比べると、y15からz7にい
たる配線長が余分に加わっている。従って、本発明のバ
レルシフタを用いることによって、信号の伝搬距離を短
縮することができるから、シフト動作の高速化を図るこ
とが可能となる。
【0072】
(乗加減算器)以上説明したように、本発明の乗加減算
器においては、オペランドA,B及びCの乗加減算(A
×B+C)の演算を行うに際し、第3のオペランドCの
加算を、第1及び第2のオペランドA,Bの乗算を行う
乗算アレイにおける部分積の加算と同時に行うようにし
たので、従来の乗加減算器に比較して、乗加減算器を構
成するシフタ、加算器、先行1検出器等の演算モジュー
ルのビット幅を減らしてコンパクトに構成することが可
能となり、乗加減算の演算速度をより一層高速化するこ
とが可能となる。 (バレルシフタ)シフトを行うセレクタを従来の2入力
1出力のものに対して4入力1出力のものを使用するこ
とによって、入力データ信号がシフトされて出力される
までに通過する信号経路のトランジスタ対の数を従来構
成に比して略1/2にまで減少させることが可能とな
り、信号の通過に要する時間が短縮される。よって、シ
フト動作の高速化及びがトランジスタの消費電力の低減
が達成される。
器においては、オペランドA,B及びCの乗加減算(A
×B+C)の演算を行うに際し、第3のオペランドCの
加算を、第1及び第2のオペランドA,Bの乗算を行う
乗算アレイにおける部分積の加算と同時に行うようにし
たので、従来の乗加減算器に比較して、乗加減算器を構
成するシフタ、加算器、先行1検出器等の演算モジュー
ルのビット幅を減らしてコンパクトに構成することが可
能となり、乗加減算の演算速度をより一層高速化するこ
とが可能となる。 (バレルシフタ)シフトを行うセレクタを従来の2入力
1出力のものに対して4入力1出力のものを使用するこ
とによって、入力データ信号がシフトされて出力される
までに通過する信号経路のトランジスタ対の数を従来構
成に比して略1/2にまで減少させることが可能とな
り、信号の通過に要する時間が短縮される。よって、シ
フト動作の高速化及びがトランジスタの消費電力の低減
が達成される。
【0073】また、ビット順の逆転機構を利用した左右
両方向へのシフトにも同様に適用でき、配線面積の低減
と同時に低消費電力ならびに高速動作を達成することが
可能となる。勿論、本発明のバレルシフタを用いること
によって、乗算器等の演算装置のビット逆転演算を高速
かつ低消費電力にて実行することが可能となる。
両方向へのシフトにも同様に適用でき、配線面積の低減
と同時に低消費電力ならびに高速動作を達成することが
可能となる。勿論、本発明のバレルシフタを用いること
によって、乗算器等の演算装置のビット逆転演算を高速
かつ低消費電力にて実行することが可能となる。
【図1】本発明に係る乗加減算の構成を示すブロック
図。
図。
【図2】本発明に係る乗加減算器における乗算アレイの
構成を示すブロック図。
構成を示すブロック図。
【図3】ワラス・ツリーによる部分積と第3のオペラン
ドとの加算を説明する説明図。
ドとの加算を説明する説明図。
【図4】加算器群によるワラス・ツリーの構成例を示す
説明図。
説明図。
【図5】本発明に係る浮動小数点乗加減算器の構成を示
すブロック図。
すブロック図。
【図6】加算器群によるワラス・ツリーの構成例を示す
説明図。
説明図。
【図7】本発明に係る浮動小数点乗加減算器の動作を説
明する説明図。
明する説明図。
【図8】従来の乗加減算器の構成例を示すブロック図。
【図9】従来の乗加減算器における乗算アレイの構成を
示すブロック図。
示すブロック図。
【図10】ワラス・ツリーによる部分積の加算を説明す
る説明図。
る説明図。
【図11】加算器群によるワラス・ツリーの構成例を示
す説明図。
す説明図。
【図12】加算器4w(4−2コンパクタ)の構成例を
示す論理回路図。
示す論理回路図。
【図13】従来の乗加減算演算器の他の構成例を示すブ
ロック図。
ロック図。
【図14】従来の浮動小数点乗加減算器の構成例を示す
ブロック図。
ブロック図。
【図15】乗算アレイ201におけるワラス・ツリーの
構成例を示すブロック図。
構成例を示すブロック図。
【図16】本発明のバレルシフタの第1の実施例を示
す、16ビット長単一方向バレルシフタの構成図。
す、16ビット長単一方向バレルシフタの構成図。
【図17】第1の実施例において使用されるセレクト手
段、セレクタ制御信号生成手段及び周辺回路の構成例を
示すブロック図。
段、セレクタ制御信号生成手段及び周辺回路の構成例を
示すブロック図。
【図18】本発明による16ビット長バレルシフタの、
8ビット+4ビット信号シフト手段の構成例を示すブロ
ック図。
8ビット+4ビット信号シフト手段の構成例を示すブロ
ック図。
【図19】本発明における4入力1出力セレクト手段の
構成例を示すブロック図。
構成例を示すブロック図。
【図20】上記バレルシフタの第1の実施例を、負荷分
散を考慮して構成変更した例を示すブロック図。
散を考慮して構成変更した例を示すブロック図。
【図21】第2の実施例である、16ビット長両方向バ
レルシフタの構成例を示すブロック図。
レルシフタの構成例を示すブロック図。
【図22】第2の実施例において使用されるセレクト手
段、セレクタ制御信号生成手段及び周辺回路の構成例を
示すブロック図。
段、セレクタ制御信号生成手段及び周辺回路の構成例を
示すブロック図。
【図23】第2の実施例における16ビット長両方向バ
レルシフタの8ビット信号シフト/ビット順逆転手段の
構成例を示すブロック図。
レルシフタの8ビット信号シフト/ビット順逆転手段の
構成例を示すブロック図。
【図24】バレルシフタの従来構成における、16ビッ
ト長バレルシフタの8ビット及び4ビット信号シフト手
段の構成例を示すブロック図。
ト長バレルシフタの8ビット及び4ビット信号シフト手
段の構成例を示すブロック図。
【図25】従来構成における2入力1出力セレクト手段
の構成例を示すブロック図。
の構成例を示すブロック図。
【図26】従来構成における16ビット長両方向バレル
シフタのビット順逆転手段ならびに8ビット信号シフト
手段の構成例を示すブロック図。
シフタのビット順逆転手段ならびに8ビット信号シフト
手段の構成例を示すブロック図。
【図27】従来の単一方向バレルシフタの構成例を示す
ブロック図。
ブロック図。
【図28】独立した左及び右シフタの出力を選択するこ
とによって両方向バレルシフタを構成した例を示すブロ
ック図。
とによって両方向バレルシフタを構成した例を示すブロ
ック図。
【図29】従来の構成における、単一方向バレルシフタ
の前後に入力データのビットの並びを逆に配列するビッ
ト順逆転機構を設けた両方向バレルシフタの構成例を示
すブロック図。
の前後に入力データのビットの並びを逆に配列するビッ
ト順逆転機構を設けた両方向バレルシフタの構成例を示
すブロック図。
101,201,301,401 乗算アレイ 202, 403 桁合わせシフタ 102,203,402, 最終加算器 404 インクリメンタ 204,405 先行1検出回路 205,406 正規化シフタ 206,407 丸め回路
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 G06F 17/10
Claims (8)
- 【請求項1】入力される第1及び第2のオペランドを乗
算した乗算値と、入力される第3のオペランドとの、加
算あるいは減算を行う固定小数点演算の乗加減算器であ
って、 所定乗算アルゴリズムに従って、前記第1及び第2のオ
ペランドに対応する複数の部分積を生成する部分積生成
回路と、 前記複数の部分積の加算と、前記第3のオペランドの加
算若しくは減算とを、木構造に配列された複数の加算器
群によって行って重み付された複数の乗算中間値を出力
する乗算アレイと、 前記複数の乗算中間値を加算して乗加減算値を求める桁
上げ伝搬型加算器と、 を備えることを特徴とする乗加減算器。 - 【請求項2】入力される第1及び第2のオペランドを乗
算した乗算値と、入力される第3のオペランドとの、加
算あるいは減算を行う浮動小数点演算の乗加減算器であ
って、 その仮数部演算器が、 所定乗算アルゴリズムに従って、前記第1及び第2のオ
ペランド各々の仮数部の各値に対応する複数の部分積を
生成する部分積生成回路と、 前記複数の部分積の加算と、前記第3のオペランドの仮
数部の値の加算若しくは減算とを、木構造に配列された
複数の加算器群によって行って重み付された複数の乗算
中間値を出力する乗算アレイと、 前記複数の乗算中間値を加算して乗加減算値を求める桁
上げ伝搬型加算器と、 を備えることを特徴とする乗加減算器。 - 【請求項3】入力される第1及び第2のオペランドを乗
算した乗算値と、入力される第3のオペランドとの、加
算あるいは減算を行う浮動小数点演算の乗加減算器であ
って、 所定乗算アルゴリズムに従って、前記第1及び第2のオ
ペランド各々の仮数部の各値に対応する複数の部分積を
生成する部分積生成回路と、 前記第3のオペランドの指数部の値が前記第1及び第2
のオペランドの積の指数部の値と等しくなるように、前
記第3のオペランドの仮数部の値の桁合わせを行うシフ
ト回路と、 前記複数の部分積の加算と、桁合わせされた前記第3の
オペランドの仮数部の値の一部若しくは全部との加算又
は減算とを、木構造に配列された複数の加算器群によっ
て行って重み付された複数の乗算中間値を出力する乗算
アレイと、 前記複数の乗算中間値を加算して乗加減算の演算値を求
める桁上げ伝搬型加算器と、 を備える、ことを特徴とする乗加減算器。 - 【請求項4】入力される第1及び第2のオペランドを乗
算した乗算値と、入力される第3のオペランドとの、加
算あるいは減算を行う浮動小数点演算の乗加減算器であ
って、 所定乗算アルゴリズムに従って、前記第1及び第2のオ
ペランド各々の仮数部の各値に対応する複数の部分積を
生成する部分積生成回路と、 前記第3のオペランドの指数部の値が前記第1及び第2
のオペランドの積の指数部の値と等しくなるように、前
記第3のオペランドの仮数部の値の桁合わせを行うシフ
ト回路と、 前記複数の部分積の加算と、桁合わせされた前記第3の
オペランドの仮数部の値のうち、前記第1及び第2のオ
ペランドの仮数部の積の演算に割当てられた桁数によっ
て表される値内の、下位桁の各ディジットの値の加算若
しくは減算とを、木構造に配列された複数の加算器群に
よって行って重み付された複数の乗算中間値を出力する
乗算アレイと、 前記複数の乗算中間値を加算して下位桁の乗加減算値を
求める桁上げ伝搬型加算器と、 桁合わせされた前記第3のオペランドの仮数部の値のう
ち、前記第1及び第2のオペランドの仮数部の積の演算
に割当てられた桁数によって表される値を超える、上位
桁の値と、前記桁上げ伝搬型加算器の桁上げ出力とを、
加算して上位桁出力値を得る増分加算器と、 前記上位桁出力値及び前記下位桁の乗加減算値をビット
結合して最終乗加減算値を得る手段と、 を備えることを特徴とする乗加減算器。 - 【請求項5】前記乗算アレイを構成する加算器群とし
て、和を和成分、桁上げ成分に分けて求める桁上げ保存
型加算器、冗長数を用いて加算するSD加算器、PD加
算器、全加算器のうちいずれかが用いられることを特徴
とする請求項1乃至5のいずれか1つに記載の乗加減算
器。 - 【請求項6】少なくともデータ入力、データ出力、制御
入力を持ち、入力されるデータを制御入力によって指定
されたビット数だけシフトして出力するバレルシフタで
あって、 供給されるl(整数)ビットからなる入力データから、
4つのビット信号を出力するl個の信号シフト手段と、 各信号シフト手段が出力する4つのビット信号の中から
1つを選択するl個のセレクト手段と、 供給される制御入力をデコードして、各セレクト手段に
選択すべきビット信号を指令する制御信号を与える制御
信号生成手段と、を備え、 前記l個の信号シフト手段のうちi番目の信号シフト手
段は、入力データのi番目のビット信号に対し、0ビッ
ト、n(整数)ビット、m(整数)ビット、m+nビッ
ト、ビット位置をシフトした位置にある4つのビット信
号を出力するようになされる、 ことを特徴とするバレルシフタ。 - 【請求項7】少なくともデータ入力、データ出力、制御
入力を持ち、入力されるデータを制御入力によって指定
されたビット数だけシフトして出力するバレルシフタで
あって、 供給されるl(整数)ビットからなる入力データから、
4つのビット信号を出力するl個の第1の信号シフト/
ビット順逆転手段と、 前記第1の信号シフト/ビット順逆転手段各々が出力す
る4つのビット信号の中から1つを選択するl個の第1
のセレクト手段と、 前記l個の第1のセレクト手段から入力されるl個の出
力から、4つのビット信号を出力するl個の信号シフト
手段と、 各信号シフト手段が出力する4つのビット信号の中から
1つを選択するl個の第2のセレクト手段と、 前記l個の第2のセレクト手段から入力されるl個の出
力から、4つのビット信号を出力するl個の第2の信号
シフト/ビット順逆転手段と、 前記第2の信号シフト/ビット順逆転手段各々が出力す
る4つのビット信号の中から1つを選択するl個の第3
のセレクト手段と、 供給される制御入力をデコードして、各セレクト手段に
選択すべきビット信号を指令する制御信号を与える制御
信号生成手段と、を備え、 前記l個の第1の信号シフト/ビット順逆転手段のうち
i番目の第1の信号シフト/ビット順逆転手段は、入力
データのi番目のビット信号に対し、変化なし、ビット
順逆転、o(整数)ビットシフト、ビット順逆転及びo
(整数)ビットシフト、となる関係にある4つのビット
信号を出力し、 前記l個の信号シフト手段のうちi番目の信号シフト手
段は、入力されるi番目のビット信号に対し、シフトな
し、p(整数)+q(整数)ビット、p(整数)ビッ
ト、q(整数)ビット、ビット位置をシフトした位置に
ある4つのビット信号を出力し、 前記l個の第2の信号シフト/ビット順逆転手段のうち
i番目の第2の信号シフト/ビット順逆転手段は、入力
データのi番目のビット信号に対し、変化なし、ビット
順逆転、r(整数)ビットシフト、r(整数)ビットシ
フト及びビット順逆転、となる関係にある4つのビット
信号を出力する、 ことを特徴とする両方向シフトのバレルシフタ。 - 【請求項8】前記信号シフト手段及びセレクト手段が所
要段数だけ縦続接続されることを特徴とする請求項6又
は7記載のバレルシフタ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24698994A JP3493064B2 (ja) | 1994-09-14 | 1994-09-14 | バレルシフタ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP24698994A JP3493064B2 (ja) | 1994-09-14 | 1994-09-14 | バレルシフタ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0887400A true JPH0887400A (ja) | 1996-04-02 |
| JP3493064B2 JP3493064B2 (ja) | 2004-02-03 |
Family
ID=17156724
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP24698994A Expired - Fee Related JP3493064B2 (ja) | 1994-09-14 | 1994-09-14 | バレルシフタ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3493064B2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
| US8106914B2 (en) | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
| US8190669B1 (en) | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
-
1994
- 1994-09-14 JP JP24698994A patent/JP3493064B2/ja not_active Expired - Fee Related
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8190669B1 (en) | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
| US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
| US8106914B2 (en) | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3493064B2 (ja) | 2004-02-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5273866B2 (ja) | 乗算器/アキュムレータ・ユニット | |
| US6571268B1 (en) | Multiplier accumulator circuits | |
| JP3761977B2 (ja) | 遅延整合技術の利用によりクリティカル・パスを減少させた浮動小数点型掛け算器及びその演算方法 | |
| US4969118A (en) | Floating point unit for calculating A=XY+Z having simultaneous multiply and add | |
| KR940002479B1 (ko) | 고속 디지탈 병렬승산기(multiplier) | |
| US6751644B1 (en) | Method and apparatus for elimination of inherent carries | |
| US6411980B2 (en) | Data split parallel shifter and parallel adder/subtractor | |
| Boro et al. | Approximate radix-8 booth multiplier for low power and high speed applications | |
| US5633819A (en) | Inexact leading-one/leading-zero prediction integrated with a floating-point adder | |
| JPH0431412B2 (ja) | ||
| CN116400883A (zh) | 一种可切换精度的浮点乘加器 | |
| Oklobdzija | High-speed VLSI arithmetic units: adders and multipliers | |
| JP3436994B2 (ja) | シフト装置 | |
| JP3493064B2 (ja) | バレルシフタ | |
| US4979141A (en) | Technique for providing a sign/magnitude subtraction operation in a floating point computation unit | |
| US5170371A (en) | Method and apparatus for rounding in high-speed multipliers | |
| KR100627993B1 (ko) | 3입력 분할 가산기 | |
| JPH08161152A (ja) | 浮動小数点演算装置 | |
| US4823300A (en) | Performing binary multiplication using minimal path algorithm | |
| US4873660A (en) | Arithmetic processor using redundant signed digit arithmetic | |
| US5097434A (en) | Hybrid signed-digit/logarithmic number system processor | |
| US6202078B1 (en) | Arithmetic circuit using a booth algorithm | |
| US20080071852A1 (en) | Method to perform a subtraction of two operands in a binary arithmetic unit plus arithmetic unit to perform such a method | |
| Stouraitis et al. | Hybrid signed digit logarithmic number system processor | |
| JPH04172526A (ja) | 浮動小数点除算器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071114 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081114 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091114 Year of fee payment: 6 |
|
| LAPS | Cancellation because of no payment of annual fees |