JPH08328828A - 積和演算器 - Google Patents
積和演算器Info
- Publication number
- JPH08328828A JPH08328828A JP7153915A JP15391595A JPH08328828A JP H08328828 A JPH08328828 A JP H08328828A JP 7153915 A JP7153915 A JP 7153915A JP 15391595 A JP15391595 A JP 15391595A JP H08328828 A JPH08328828 A JP H08328828A
- Authority
- JP
- Japan
- Prior art keywords
- bits
- partial product
- operation step
- output
- bit
- 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
ウェア量が少なくてすみ高速に動作しうる積和演算器を
提供する。 【構成】 ビット分割器5は、符号拡張された加算値Z
を下位18ビットと上位15ビットとに分割する。第3
のセレクタ3は、第1の演算ステップではビット分割器
5の出力の下位18ビットと第1の定数との連結値を選
択し、第2の演算ステップではビット分割器5の出力の
上位15ビットと第1のパイプライン・レジスタ7内の
値の上位34ビットとの連結値を選択する。10入力C
SAツリー6は、ブースのデコーダ4の出力(第1〜第
8の部分積)と第2のセレクタ2の出力と第3のセレク
タ3の出力と付加ビット情報群とを加算する。キャリ伝
播加算器9は、両演算ステップでの10入力CSAツリ
ー6のハーフサムおよびハーフキャリに基づくキャリ伝
播加算を行う。
Description
にCSA(Carry Save Adder。キャリ
セーブ加算器)ツリーを有して固定小数点積和演算を行
う積和演算器に関する。
エンジニアリング・ワークステーション等に採用される
汎用マイクロプロセッサは、符号付き整数乗算命令を命
令セットに備えていた。
画像の圧縮および伸長等のために、いわゆるディジタル
信号処理を高速に行う必要が生じてきた。
は、上述の既存の命令セット(符号付き整数乗算命令を
備えた命令セット)に加えて、ディジタル信号処理で頻
繁に用いられる符号付き固定小数点積和演算を行うため
の符号付き固定小数点積和演算命令が命令セットに追加
されることが一般的になりつつある。
ットに符号付き固定小数点積和演算命令を追加すること
により、次のような利点が生じる。すなわち、従来であ
れば、符号付き乗算命令および符号付き加算命令の2命
令で行われていた処理が、符号付き固定小数点積和演算
命令だけで(すなわち、1命令で)行えるようになるた
め、デジタル信号処理を大幅に高速化することができ
る。
(ディジタル信号処理性能を強化したマイクロプロセッ
サ)に内蔵するための積和演算器(符号付き固定小数点
積和演算が可能な積和演算器)を対象とするものであ
る。
は、33ビット長の符号付き被乗数Xと、32ビット長
の符号付き乗数Yと、同じく32ビット長の加算値Zと
が入力されるものとする。ただし、被乗数Xは、32ビ
ット長の任意の符号付き数を33ビット長に符号拡張し
た値,または33ビット長の任意の正数であるものとす
る。
に示すような処理が必要になる(図4参照)。なお、本
発明で対象とする積和演算器で採用される固定小数点数
表現は、最上位ビット側に小数点を固定する表現である
ものとする。
行って65ビット長の中間結果を得る。
加算値Zが1ビット符号拡張された33ビット長の値を
符号付き加算して、65ビット長の結果Rを出力する。
手法」としては、乗数Yの一部と被乗数X全体とからブ
ースのデコーダで部分積を生成し、生成した複数個の部
分積をCSAツリーで加算する手法が一般的である。
(Neil H.E.Weste)らによる「プリンシ
プルズ・オブ・シーモス・ブイエルエスアイ・デザイ
ン,ア・システムズ・パースペクティブ,セカンド・エ
ディション(PRINCIPLES OF CMOS
VLSI DESIGN,A Systems Per
spective,Second Edition),
Addison−Wesley Publishing
Company,ISBN 0−201−53376
−6,第547〜555頁」に示されている。
的な考え方を説明する(この考え方における各式ならび
に図5および図6は、後述する本発明の実施例の説明に
おいても引用する)。
号付き33ビット長の乗数Yとの積P(P=X×Y)を
求めたいとする。
ビットを第0ビットとしたときの第iビット(iは0ま
たは正整数))をそれぞれxi およびyi と示すと、被
乗数Xおよび乗数Yは次式で表される。
3ビット単位に分割すると、乗数Yを次のように書き換
えることができる。
または正整数)は、乗数Yの各ビット(y-1を含む)の
うちの3つのビットの組み合わせによって、−2,−
1,0,1,および2のいずれかの値をとる。すなわ
ち、図5に示すように、y(2j+1),y2j,およびy
(2j-1)の3つのビットの全ての組み合わせ(0または1
の組み合わせ)を検討しても、上記5つの値のうちのい
ずれかの値しかとらない。
す方法(生成法)で生成することができる。すなわち、
Yj の値が負の場合には、被乗数Xの各ビットxi を反
転してcj =1を加算することにより、被乗数Xの2の
補数が求められる。
式のようになる(同式中のPjiおよびcj については図
6を参照されたい)。
2,1,0,1,または2であるので、Pj は最大34
ビット長になりうる。
値Zを加算し、積和演算の結果Rを求める考え方につい
て説明する。
Zは、各ビットをzi と示し、z32=z31として1ビッ
トの符号拡張を行えば、次式のように表される。
(5),(7)および(8)より、次式で表される。
のようにして行い、加算器で扱えるようにする。ここ
で、被乗数Xおよび乗数Yが32ビット長の負の最大値
であり加算値Zが正の最大値であるときに、積和演算の
結果Rは最大65ビット長になるので、当該演算は65
ビット長で行われる。
式で表される。
るには、ブースのデコーダを用いて式(13)に示すさ
れる各項目を全て生成し、CSAツリーで加算すればよ
いことが分かる。
和演算器(固定小数点積和演算器)の構成および動作に
ついて、図7〜図9を参照しながら説明する。
算器の一例であり、第1のセレクタ101と、第2のセ
レクタ102と、第3のセレクタ103と、第4のセレ
クタ104と、ブースのデコーダ105と、11入力C
SAツリー106と、第1のパイプライン・レジスタ1
07と、第2のパイプライン・レジスタ108と、キャ
リ伝播加算器109と、符号拡張器110とを含んで構
成されている。
に上述の考え方(式(13)によって積和演算の結果R
を求める考え方)を採用しながらも、部分積の生成およ
び加算を複数回に分割して行うことで、ハードウェア量
を削減している。なお、このような積和演算器と同種の
技術は、特開平4−205624号公報(直並列型乗算
器)に開示されている。ただし、特開平4−20562
4号公報に示された構成の直並列型乗算器では、部分積
加算の途中結果として、CSAに続いてキャリ伝播加算
器を通した後の単一の値を保持しているが、図7に示す
積和演算器の構成では、部分積加算の途中結果としてC
SAの出力であるハーフサムとハーフキャリとの組を保
持して演算を高速化している。
て、図8および図9を参照しながら説明する。
を削減するために、部分積の生成および加算を「第1の
演算ステップ」と「第2の演算ステップ」との2回に分
けて行う。
実行時の動作を説明する。
Yの下位16ビットとが乗算され、演算前半(第1の演
算ステップ)の演算結果(途中演算結果)が生成され
る。
替えビット(第1の演算ステップの演算を行うか第2の
演算ステップの演算を行うかを示す1ビット長の情報。
この場合には第1の演算ステップの演算を行う旨を示し
ている)を参照し、乗数Yの下位16ビットを選択出力
する。
算ステップの演算を行う旨を示している演算ステップ切
替えビットを参照し、第2の定数を選択出力する。ここ
で、第2の定数とは、式(13)における1・232(j
=0の場合の1・2(32+2j))とcn (1・231)とを
示す数値をいう(図8参照)。
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、全ビット0を示す定数(値0の
定数)を選択出力する。
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、第1の定数を選択出力する。こ
こで、第1の定数とは、式(13)におけるcz (1・
231)とc15・230(j=15の場合のcj ・22j)と
c7 ・214(j=7の場合のcj ・22j)とを示す数値
をいう(図8参照)。
1のセレクタ101の出力とを入力し、第1のセレクタ
101の出力を切出し開始位置を最上位ビットから2ビ
ットずつ下位ビットに移動しながら3ビット単位で切り
出した値を第8の部分積生成器,第7の部分積生成器,
第6の部分積生成器,第5の部分積生成器,第4の部分
積生成器,第3の部分積生成器,第2の部分積生成器,
および第1の部分積生成器に供給し、これらの値と被乗
数Xの値とから第8の部分積生成器〜第1の部分積生成
器により第8の部分積〜第1の部分積(被乗数Xと乗数
Yの下位16ビットとを乗算したときの8個の部分積P
7 〜P0 )を生成する。
−2,−1,0,1,または2倍した値となり、図6に
示すようにして生成される。なお、部分積P0 〜P7 に
は式(13)における1・2(32+2j) (j=1〜8)を
示すビットが付加され、部分積P1 〜P7 には式(1
3)におけるcj ・22j(j=0〜6)を示すビットが
付加される(図8参照。このように部分積に付加される
ビットによって表される情報を「付加ビット情報」と呼
ぶ)。ここで、cj の値は、Yj の値に基づいて、図6
に示すように決定される。
の部分積(ブースのデコーダ105内の第1の部分積生
成器〜第8の部分積生成器によって生成される部分積。
付加ビット情報を含む),第2のセレクタ102の出
力,第3のセレクタ103の出力,および第4のセレク
タ104の出力を第1入力〜第11入力として入力し、
それらを加算し、その加算結果をハーフサムとハーフキ
ャリとの組として出力する。
1の演算ステップの演算結果として、それぞれ、第1の
パイプライン・レジスタ107および第2のパイプライ
ン・レジスタ108に保持される。
る11入力CSAツリー106の各入力(ビット列)お
よび各出力(ハーフサムおよびハーフキャリのビット
列)の一覧を示す。
実行時の動作を説明する。
Yの上位17ビットとが乗算され、その乗算結果と第1
の演算ステップにおける演算結果と加算値Zとが加算さ
れ、最終的な積和演算の結果Rが生成される。
ビットの符号拡張を行う。これにより、加算値Zは33
ビット長になる。
ップの演算を行う旨を示している演算ステップ切替えビ
ット(第1の演算ステップから第2の演算ステップへの
移行時に演算ステップ切替えビットの情報は切り替えら
れる)を参照し、乗数Yの上位17ビットを選択出力す
る。
算ステップの演算を行う旨を示している演算ステップ切
替えビットを参照し、第2のパイプライン・レジスタ1
08に保持されている値(第1の演算ステップの演算結
果のうちのハーフキャリ)の上位35ビットを選択出力
する。
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、符号拡張器110の出力(符号
拡張された加算値Z)を選択出力する。
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、第1のパイプライン・レジスタ
107に保持されている値(第1の演算ステップの演算
結果のうちのハーフサム)の上位34ビットを選択出力
する。
1のセレクタ101の出力とを入力し、第1のセレクタ
101の出力を切出し開始位置を最上位ビットから2ビ
ットずつ下位ビットに移動しながら3ビット単位で切り
出した値を第8の部分積生成器,第7の部分積生成器,
第6の部分積生成器,第5の部分積生成器,第4の部分
積生成器,第3の部分積生成器,第2の部分積生成器,
および第1の部分積生成器に供給し、これらの値と被乗
数Xの値とから第8の部分積生成器〜第1の部分積生成
器により第8の部分積〜第1の部分積(被乗数Xと乗数
Yの上位17ビットとを乗算したときの8個の部分積P
15〜P8 )を生成する。
−2,−1,0,1,または2倍した値となり、図6に
示すようにして生成される。なお、部分積P8 〜P14に
は式(13)における1・2(32+2j) (j=9〜15)
を示すビットが付加され、部分積P9 〜P15には式(1
3)におけるcj ・22j(j=8〜14)を示すビット
が付加される(図9参照)。
の部分積(ブースのデコーダ105内の第1の部分積生
成器〜第8の部分積生成器によって生成される部分積。
付加ビット情報を含む),第2のセレクタ102の出
力,第3のセレクタ103の出力,および第4のセレク
タ104の出力を第1入力〜第11入力として入力し、
それらを加算し、その加算結果をハーフサムとハーフキ
ャリとの組として出力する。
およびの値を加算し、単一の結果R(当該積和演算の
結果R)を得て出力する(以下のの値およびの値を
対象としてキャリ伝播加算を行う)。 49ビット長のハーフサム(第2の演算ステップで
求められたハーフサム)と、第1の演算ステップで求め
られたハーフサムの下位16ビット(第1のパイプライ
ン・レジスタ107に保持されている値の下位16ビッ
ト)とを連結した値(図8および図9参照) 48ビット長のハーフキャリ(第2の演算ステップ
で求められたハーフキャリ)と、第1の演算ステップで
求められたハーフキャリの下位15ビット(第2のパイ
プライン・レジスタ108に保持されている値の下位1
5ビット)とを連結した値(図8および図9参照)
る11入力CSAツリー106の各入力(ビット列)お
よび各出力(ハーフサムおよびハーフキャリのビット
列)の一覧を示す。
は図9中の入力のビット列に含まれている。したがっ
て、第1の演算ステップおよび第2の演算ステップのい
ずれかで、式(13)中の各項目の値は11入力CSA
ツリー106により入力され加算されることになる。
算器(図7に示すような積和演算器)では、符号拡張さ
れた加算値Z全体が第2の演算ステップで加算されてい
るので、第2の演算ステップではCSAツリーで11個
の値を入力して加算する必要があり(図9参照)、入力
数が11のCSAツリーを用意する必要がある。CSA
ツリーの入力数が多くなると、当該CSAツリーの構成
が複雑になり、当該CSAツリーを実現するためのハー
ドウェア量の増大および当該CSAツリーを使用した演
算の遅延(加算器段数が増えることによる積和演算器全
体の動作速度の低下)が生じうるという問題点がある。
張された加算値Zを2分割するビット分割器を設けるこ
と等により、CSAツリーの入力数を削減することがで
き、ハードウェア量が少なくてすみ、高速に動作しうる
積和演算器を提供することにある。
に符号拡張された加算値Zをビット分割器によって上位
15ビットと下位18ビットとに分割し、符号拡張され
た加算値Zのうちの下位18ビットは第1の定数と連結
して第1の演算ステップでCSAツリーに与え、符号拡
張された加算値Zのうちの上位15ビットは第1の演算
ステップにおけるハーフサムの上位34ビットと連結し
て第2の演算ステップでCSAツリーに与えることによ
り、CSAツリーの入力数を削減することにある。
33ビット長の符号付き被乗数X,32ビット長の符号
付き乗数Y,および32ビット長の加算値Zを入力し、
これらの積和であるX×Y+Zを結果Rとして出力する
積和演算器において、加算値Zに対して1ビットの符号
拡張を行う符号拡張器と、前記符号拡張器の出力を下位
18ビットと上位15ビットとに分割するビット分割器
と、第1の演算ステップでは乗数Yの下位16ビットを
選択出力し、第2の演算ステップでは乗数Yの上位17
ビットを選択出力する第1のセレクタと、第1の演算ス
テップでは第2の定数を選択出力し、第2の演算ステッ
プでは第2のパイプライン・レジスタに保持されている
値の上位35ビットを選択出力する第2のセレクタと、
第1の演算ステップでは前記ビット分割器の出力の下位
18ビットと第1の定数とを連結した値を選択出力し、
第2の演算ステップでは前記ビット分割器の出力の上位
15ビットと第1のパイプライン・レジスタに保持され
ている値の上位34ビットとを連結した値を選択出力す
る第3のセレクタと、前記第1のセレクタの出力を切出
し開始位置を最上位ビットから2ビットずつ下位ビット
に移動しながら3ビット単位で切り出した値を第8の部
分積生成器,第7の部分積生成器,第6の部分積生成
器,第5の部分積生成器,第4の部分積生成器,第3の
部分積生成器,第2の部分積生成器,および第1の部分
積生成器に供給し、これらの値と被乗数Xの値とから第
8の部分積,第7の部分積,第6の部分積,第5の部分
積,第4の部分積,第3の部分積,第2の部分積,およ
び第1の部分積を生成するブースのデコーダと、前記ブ
ースのデコーダによって生成された第1の部分積,第2
の部分積,第3の部分積,第4の部分積,第5の部分
積,第6の部分積,第7の部分積,および第8の部分積
と前記第2のセレクタの出力と前記第3のセレクタの出
力と付加ビット情報群とを加算する10入力CSAツリ
ーと、第1の演算ステップにおける前記10入力CSA
ツリーの出力のうちのハーフサムを保持する前記第1の
パイプライン・レジスタと、第1の演算ステップにおけ
る前記10入力CSAツリーの出力のうちのハーフキャ
リを保持する前記第2のパイプライン・レジスタと、第
2の演算ステップで前記10入力CSAツリーにより出
力されたハーフサムと第1の演算ステップで前記第1の
パイプライン・レジスタに保持されたハーフサムの下位
16ビットとを連結した値,および第2の演算ステップ
で前記10入力CSAツリーにより出力されたハーフキ
ャリと第1の演算ステップで前記第2のパイプライン・
レジスタに保持されたハーフキャリの下位15ビットと
を連結した値を対象としてキャリ伝播加算を行うキャリ
伝播加算器とを有する。
付き被乗数X,32ビット長の符号付き乗数Y,および
32ビット長の加算値Zを入力しこれらの積和であるX
×Y+Zを結果Rとして出力する積和演算器において、
符号拡張器が加算値Zに対して1ビットの符号拡張を行
い、ビット分割器が符号拡張器の出力を下位18ビット
と上位15ビットとに分割し、第1のセレクタが第1の
演算ステップでは乗数Yの下位16ビットを選択出力し
第2の演算ステップでは乗数Yの上位17ビットを選択
出力し、第2のセレクタが第1の演算ステップでは第2
の定数を選択出力し第2の演算ステップでは第2のパイ
プライン・レジスタに保持されている値の上位35ビッ
トを選択出力し、第3のセレクタが第1の演算ステップ
ではビット分割器の出力の下位18ビットと第1の定数
とを連結した値を選択出力し第2の演算ステップではビ
ット分割器の出力の上位15ビットと第1のパイプライ
ン・レジスタに保持されている値の上位34ビットとを
連結した値を選択出力し、ブースのデコーダが第1のセ
レクタの出力を切出し開始位置を最上位ビットから2ビ
ットずつ下位ビットに移動しながら3ビット単位で切り
出した値を第8の部分積生成器,第7の部分積生成器,
第6の部分積生成器,第5の部分積生成器,第4の部分
積生成器,第3の部分積生成器,第2の部分積生成器,
および第1の部分積生成器に供給しこれらの値と被乗数
Xの値とから第8の部分積,第7の部分積,第6の部分
積,第5の部分積,第4の部分積,第3の部分積,第2
の部分積,および第1の部分積を生成し、10入力CS
Aツリーがブースのデコーダによって生成された第1の
部分積,第2の部分積,第3の部分積,第4の部分積,
第5の部分積,第6の部分積,第7の部分積,および第
8の部分積と第2のセレクタの出力と第3のセレクタの
出力と付加ビット情報群とを加算し、第1のパイプライ
ン・レジスタが第1の演算ステップにおける10入力C
SAツリーの出力のうちのハーフサムを保持し、第2の
パイプライン・レジスタが第1の演算ステップにおける
10入力CSAツリーの出力のうちのハーフキャリを保
持し、キャリ伝播加算器が第2の演算ステップで10入
力CSAツリーにより出力されたハーフサムと第1の演
算ステップで第1のパイプライン・レジスタに保持され
たハーフサムの下位16ビットとを連結した値,および
第2の演算ステップで10入力CSAツリーにより出力
されたハーフキャリと第1の演算ステップで第2のパイ
プライン・レジスタに保持されたハーフキャリの下位1
5ビットとを連結した値を対象としてキャリ伝播加算を
行う。
説明する。
構成を示すブロック図である。
符号付き被乗数X,32ビット長の符号付き乗数Y,お
よび32ビット長の加算値Zを入力し、これらの積和で
あるX×Y+Zを結果Rとして出力する積和演算器であ
る。この積和演算器は、第1のセレクタ1と、第2セレ
クタ2と、第3のセレクタ3と、ブースのデコーダ4
と、ビット分割器5と、10入力CSAツリー6と、第
1のパイプライン・レジスタ7と、第2のパイプライン
・レジスタ8と、キャリ伝播加算器9と、符号拡張器1
0とを含んで構成されている。
器〜第8の部分積生成器を含んで構成されている。
1の演算ステップでの10入力CSAツリー6の各入力
(ビット重みを表すためのビット開始位置およびビット
長を示したビット列)および各出力(ハーフサムおよび
ハーフキャリのビット列)の一覧を示す図である。
2の演算ステップでの10入力CSAツリー6の各入力
(ビット列)および各出力(ハーフサムおよびハーフキ
ャリのビット列)の一覧を示す図である。
実施例の積和演算器の動作を説明するための図(本発明
で採用されるブースのデコーダの考え方を説明するため
の図)である。
して、このように構成された本実施例の積和演算器の動
作について説明する。
ドウェア量を削減するために、部分積の生成および加算
を「第1の演算ステップ」と「第2の演算ステップ」と
の2回に分けて行う(この点は図7に示す従来の積和演
算器と同様である)。
実行時の動作を説明する。
ップでは、被乗数Xと乗数Yの下位16ビットとを乗算
し、さらに加算値Zの一部(下位18ビット)を加算
し、途中演算結果を生成する。
ットの符号拡張を行う。これにより、加算値Zは33ビ
ット長になる。
(符号拡張された加算値Z)を下位18ビットと上位1
5ビットとに分割する。
ビット(第1の演算ステップの演算を行うか第2の演算
ステップの演算を行うかを示す1ビット長の情報。この
場合には第1の演算ステップの演算を行う旨を示してい
る)を参照し、乗数Yの下位16ビットを選択出力す
る。
テップの演算を行う旨を示している演算ステップ切替え
ビットを参照し、第2の定数を選択出力する。ここで、
第2の定数とは、式(13)における1・232(j=0
の場合の1・2(32+2j) )とcn (1・231)とを示す
数値をいう(図2参照)。
ステップの演算を行う旨を示している演算ステップ切替
えビットを参照し、ビット分割器5の出力の下位18ビ
ット(ビット分割器5によって出力された「符号拡張さ
れた加算値Zの下位18ビット」)と第1の定数とを連
結した値を選択出力する。ここで、第1の定数とは、式
(13)におけるcz (1・231)とc15・230(j=
15の場合のcj ・22j)とc7 ・214(j=7の場合
のcj ・22j)とを示す数値をいう(図2参照)。
セレクタ1の出力とを入力し、第1のセレクタ1の出力
を切出し開始位置を最上位ビットから2ビットずつ下位
ビットに移動しながら3ビット単位で切り出した値を第
8の部分積生成器,第7の部分積生成器,第6の部分積
生成器,第5の部分積生成器,第4の部分積生成器,第
3の部分積生成器,第2の部分積生成器,および第1の
部分積生成器に供給し、これらの値と被乗数Xの値とか
ら第8の部分積生成器〜第1の部分積生成器により第8
の部分積〜第1の部分積(被乗数Xと乗数Yの下位16
ビットとを乗算したときの8個の部分積P7 〜P0 )を
生成する。
−2,−1,0,1,または2倍した値となり、図6に
示すようにして生成される。なお、図7に示す従来の積
和演算器と同様に、部分積P0 〜P7 には式(13)に
おける1・2(32+2j) (j=1〜8)を示すビットが付
加され、部分積P1 〜P7 には式(13)におけるcj
・22j(j=0〜6)を示すビットが付加される(図2
参照。先に述べたように、各部分積に付加されるビット
によって表される情報を「付加ビット情報」と呼ぶ)。
ここで、cj の値は、Yj の値に基づいて、図6に示す
ように決定される。
分積(ブースのデコーダ4内の第1の部分積生成器〜第
8の部分積生成器によって生成される部分積。付加ビッ
ト情報を含む),第2のセレクタ2の出力,および第3
のセレクタ3の出力を第1入力〜第10入力として入力
し、それらを加算し、その加算結果をハーフサムとハー
フキャリとの組として出力する。
1の演算ステップの演算結果として、それぞれ、第1の
パイプライン・レジスタ7および第2のパイプライン・
レジスタ8に保持される。
実行時の動作を説明する。
ップでは、被乗数Xと乗数Yの上位17ビットとを乗算
し、さらに第1の演算ステップの演算結果および加算値
Zの一部(第1の演算ステップで加算しなかった上位1
5ビット)を加算し、最終的な積和演算の結果Rを生成
する。
ステップへの移行時には、演算ステップ切替えビットが
「第1の演算ステップを行う旨を示す情報」から「第2
の演算ステップを行う旨を示す情報」に切り替えられ
る。
の演算を行う旨を示している演算ステップ切替えビット
を参照し、乗数Yの上位17ビットを選択出力する。
テップの演算を行う旨を示している演算ステップ切替え
ビットを参照し、第2のパイプライン・レジスタ8に保
持されている値(第1の演算ステップの演算結果のうち
のハーフキャリ)の上位35ビットを選択出力する。
ステップの演算を行う旨を示している演算ステップ切替
えビットを参照し、ビット分割器5の出力の上位15ビ
ット(ビット分割器5によって出力された「符号拡張さ
れた加算値Zの上位15ビット」)と第1のパイプライ
ン・レジスタ7に保持されている値(第1の演算ステッ
プの演算結果のうちのハーフサム)の上位34ビットと
を連結した値を選択出力する。
セレクタ1の出力とを入力し、第1のセレクタ1の出力
を切出し開始位置を最上位ビットから2ビットずつ下位
ビットに移動しながら3ビット単位で切り出した値を第
8の部分積生成器,第7の部分積生成器,第6の部分積
生成器,第5の部分積生成器,第4の部分積生成器,第
3の部分積生成器,第2の部分積生成器,および第1の
部分積生成器に供給し、これらの値と被乗数Xの値とか
ら第8の部分積生成器〜第1の部分積生成器により第8
の部分積〜第1の部分積(被乗数Xと乗数Yの上位17
ビットとを乗算したときの8個の部分積P15〜P8 )を
生成する。
−2,−1,0,1,または2倍した値となり、図6に
示すようにして生成される。なお、図7に示す従来の積
和演算器と同様に、部分積P8 〜P14には式(13)に
おける1・2(32+2j) (j=9〜15)を示すビットが
付加され、部分積P9 〜P15には式(13)におけるc
j ・22j(j=8〜14)を示すビットが付加される
(図3参照)。
分積(ブースのデコーダ4内の第1の部分積生成器〜第
8の部分積生成器によって生成される部分積。付加ビッ
ト情報を含む),第2のセレクタ2の出力,および第3
のセレクタ3の出力を第1入力〜第10入力として入力
し、それらを加算し、その加算結果をハーフサムとハー
フキャリとの組として出力する。
びの値を加算し、単一の結果R(当該積和演算の結果
R)を得て出力する(以下のの値およびの値を対象
としてキャリ伝播加算を行う)。 49ビット長のハーフサム(第2の演算ステップで
求められたハーフサム)と、第1の演算ステップで求め
られたハーフサムの下位16ビット(第1のパイプライ
ン・レジスタ7に保持されている値の下位16ビット)
とを連結した値(図2および図3参照) 48ビット長のハーフキャリ(第2の演算ステップ
で求められたハーフキャリ)と、第1の演算ステップで
求められたハーフキャリの下位15ビット(第2のパイ
プライン・レジスタ8に保持されている値の下位15ビ
ット)とを連結した値(図2および図3参照)
値Zが符号拡張された値を加算するために、CSAツリ
ー(11入力CSAツリー106)に専用の入力が設け
られていた。これに対して、図1に示す本実施例の積和
演算器では、加算値Zが符号拡張された値が次の〜
に示すような手順でCSAツリー(10入力CSAツリ
ー6)に与えられる。 加算値Zが符号拡張された値が、他の入力値(式
(13)における各項目に対応する入力値)とビット重
みが重ならないようにビット分割器5で分割される。 ビット分割器5の出力の2つの値が、他の入力値と
連結される。 第1の演算ステップと第2の演算ステップとの2回
に分けて、で分割されで他の入力値と連結された
「加算値Zが符号拡張された値」が、CSAツリー(1
0入力CSAツリー6)に与えられる。
ツリーの入力数を10個に減らすことができ、CSAツ
リーにおけるハードウェアの簡素化および演算の遅延の
短縮(動作の高速化)を達成することが可能となる。
(13)中の各項目は、必ず、図2または図3中の各入
力のビット列に含まれている。したがって、第1の演算
ステップおよび第2の演算ステップのいずれかで、式
(13)中の各項目の値は10入力CSAツリー6によ
り入力され加算されている。
(32+2j) (j=0〜16)とcj ・22j(j=0〜1
5)とcz とcn とをどの入力として10入力CSAツ
リー6に与えるかという態様は、図2および図3に示す
態様に限られない。図2および図3に示す位置と同じビ
ット重みの位置に上述の値(1・2(32+2j) (j=0〜
16),cj ・22j(j=0〜15),cz ,およびc
n )を示すビットを入力するのであれば、図2および図
3に示す態様以外の態様も許容される。したがって、第
1の定数および第2の定数の値も、本実施例における値
に限られるものではない。
する付加ビット情報がブースのデコーダ4側で付加され
るものとしたが、10入力CSAツリー6側でこれらの
付加ビット情報を付加することも可能である。
ステップの演算とのいずれを行っているかを示す情報を
第1のセレクタ1,第2のセレクタ2および第3のセレ
クタ3に指示する手法は、本実施例のように「演算ステ
ップ切替えビットによって指示する手法」に限られるも
のではない。
が符号拡張された値を他の入力値とビット重みが重なら
ないように分割して他の入力値と連結し、当該分割・連
結によって生成された値を第1の演算ステップと第2の
演算ステップとの2回に分けてCSAツリーに与えるこ
とにより、従来は11個必要であったCSAツリーの入
力数を10個に削減することができ(CSAツリーのハ
ードウェア量を削減することができ)、従来の積和演算
器(固定小数点積和演算器)よりもハードウェア量を減
らすことができ、従来の積和演算器よりも動作を高速化
できる(演算の遅延を短縮できる)積和演算器を実現す
ることが可能になるという効果を有する。
ロック図である。
ップでの図1中の10入力CSAツリーの各入力および
各出力の一覧を示す図である。
ップでの図1中の10入力CSAツリーの各入力および
各出力の一覧を示す図である。
ある。
を説明し、図1および図7に示す積和演算器の動作を説
明するための図である。
を説明し、図1および図7に示す積和演算器の動作を説
明するための図である。
図である。
ップでの図7中の11入力CSAツリーの各入力および
各出力の一覧を示す図である。
ップでの図7中の11入力CSAツリーの各入力および
各出力の一覧を示す図である。
Claims (3)
- 【請求項1】 33ビット長の符号付き被乗数X,32
ビット長の符号付き乗数Y,および32ビット長の加算
値Zを入力し、これらの積和であるX×Y+Zを結果R
として出力する積和演算器において、 加算値Zに対して1ビットの符号拡張を行う符号拡張器
と、 前記符号拡張器の出力を下位18ビットと上位15ビッ
トとに分割するビット分割器と、 第1の演算ステップでは乗数Yの下位16ビットを選択
出力し、第2の演算ステップでは乗数Yの上位17ビッ
トを選択出力する第1のセレクタと、 第1の演算ステップでは第2の定数を選択出力し、第2
の演算ステップでは第2のパイプライン・レジスタに保
持されている値の上位35ビットを選択出力する第2の
セレクタと、 第1の演算ステップでは前記ビット分割器の出力の下位
18ビットと第1の定数とを連結した値を選択出力し、
第2の演算ステップでは前記ビット分割器の出力の上位
15ビットと第1のパイプライン・レジスタに保持され
ている値の上位34ビットとを連結した値を選択出力す
る第3のセレクタと、 前記第1のセレクタの出力を切出し開始位置を最上位ビ
ットから2ビットずつ下位ビットに移動しながら3ビッ
ト単位で切り出した値を第8の部分積生成器,第7の部
分積生成器,第6の部分積生成器,第5の部分積生成
器,第4の部分積生成器,第3の部分積生成器,第2の
部分積生成器,および第1の部分積生成器に供給し、こ
れらの値と被乗数Xの値とから第8の部分積,第7の部
分積,第6の部分積,第5の部分積,第4の部分積,第
3の部分積,第2の部分積,および第1の部分積を生成
するブースのデコーダと、 前記ブースのデコーダによって生成された第1の部分
積,第2の部分積,第3の部分積,第4の部分積,第5
の部分積,第6の部分積,第7の部分積,および第8の
部分積と前記第2のセレクタの出力と前記第3のセレク
タの出力と付加ビット情報群とを加算する10入力CS
Aツリーと、 第1の演算ステップにおける前記10入力CSAツリー
の出力のうちのハーフサムを保持する前記第1のパイプ
ライン・レジスタと、 第1の演算ステップにおける前記10入力CSAツリー
の出力のうちのハーフキャリを保持する前記第2のパイ
プライン・レジスタと、 第2の演算ステップで前記10入力CSAツリーにより
出力されたハーフサムと第1の演算ステップで前記第1
のパイプライン・レジスタに保持されたハーフサムの下
位16ビットとを連結した値,および第2の演算ステッ
プで前記10入力CSAツリーにより出力されたハーフ
キャリと第1の演算ステップで前記第2のパイプライン
・レジスタに保持されたハーフキャリの下位15ビット
とを連結した値を対象としてキャリ伝播加算を行うキャ
リ伝播加算器とを有することを特徴とする積和演算器。 - 【請求項2】 第1の演算ステップの演算を行うか第2
の演算ステップの演算を行うかを示す演算ステップ切替
えビットを第1のセレクタ,第2のセレクタおよび第3
のセレクタに与えることを特徴とする請求項1記載の積
和演算器。 - 【請求項3】 第1の定数が「cz とc15・230とc7
・214とを示す数値」であり、 第2の定数が「1・232とcn とを示す数値」であり、 第1の演算ステップで、部分積P0 ,P1 ,P2 ,
P3 ,P4 ,P5 ,P6 ,およびP7 に1・2(32+2j)
(j=1,2,3,4,5,6,7,および8)を示す
ビットを付加し、部分積P1 ,P2 ,P3 ,P4 ,
P5 ,P6 ,およびP7にcj ・22j(j=0,1,
2,3,4,5,および6)を示すビットを付加し、 第2の演算ステップで、部分積P8 ,P9 ,P10,
P11,P12,P13,および〜P14に1・2(32+2j) (j
=9,10,11,12,13,14,および15)を
示すビットを付加し、部分積P9 ,P10,P11,P12,
P13,P14,およびP15にcj ・22j(j=8,9,1
0,11,12,13,および14)を示すビットを付
加することを特徴とする請求項1または請求項2記載の
積和演算器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7153915A JP2765516B2 (ja) | 1995-05-29 | 1995-05-29 | 積和演算器 |
US08/640,701 US5784305A (en) | 1995-05-01 | 1996-05-01 | Multiply-adder unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7153915A JP2765516B2 (ja) | 1995-05-29 | 1995-05-29 | 積和演算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08328828A true JPH08328828A (ja) | 1996-12-13 |
JP2765516B2 JP2765516B2 (ja) | 1998-06-18 |
Family
ID=15572888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7153915A Expired - Fee Related JP2765516B2 (ja) | 1995-05-01 | 1995-05-29 | 積和演算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2765516B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0890899A2 (en) * | 1997-07-09 | 1999-01-13 | Matsushita Electric Industrial Co., Ltd. | Multiplication method and apparatus |
KR20020082919A (ko) * | 2001-04-24 | 2002-11-01 | 엘지전자 주식회사 | 암호화 코드의 저장 방법 |
US8352533B2 (en) | 2008-04-25 | 2013-01-08 | Fujitsu Semiconductor Limited | Semiconductor integrated circuit in in a carry computation network having a logic blocks which are dynamically reconfigurable |
-
1995
- 1995-05-29 JP JP7153915A patent/JP2765516B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0890899A2 (en) * | 1997-07-09 | 1999-01-13 | Matsushita Electric Industrial Co., Ltd. | Multiplication method and apparatus |
EP0890899A3 (en) * | 1997-07-09 | 2000-01-05 | Matsushita Electric Industrial Co., Ltd. | Multiplication method and apparatus |
US6233597B1 (en) | 1997-07-09 | 2001-05-15 | Matsushita Electric Industrial Co., Ltd. | Computing apparatus for double-precision multiplication |
KR20020082919A (ko) * | 2001-04-24 | 2002-11-01 | 엘지전자 주식회사 | 암호화 코드의 저장 방법 |
US8352533B2 (en) | 2008-04-25 | 2013-01-08 | Fujitsu Semiconductor Limited | Semiconductor integrated circuit in in a carry computation network having a logic blocks which are dynamically reconfigurable |
Also Published As
Publication number | Publication date |
---|---|
JP2765516B2 (ja) | 1998-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7395304B2 (en) | Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic | |
JP3761977B2 (ja) | 遅延整合技術の利用によりクリティカル・パスを減少させた浮動小数点型掛け算器及びその演算方法 | |
US5784305A (en) | Multiply-adder unit | |
JPS6347874A (ja) | 算術演算装置 | |
JPH0612229A (ja) | 乗累算回路 | |
JPWO2007094223A1 (ja) | 乗算器、デジタルフィルタ、信号処理装置、合成装置、合成プログラム、および合成プログラム記録媒体 | |
US4556948A (en) | Multiplier speed improvement by skipping carry save adders | |
US5721697A (en) | Performing tree additions via multiplication | |
Ahish et al. | Design of high performance Multiply-Accumulate Computation unit | |
US9164728B1 (en) | Ternary DSP block | |
JP3537378B2 (ja) | 加算器および集積回路 | |
JPH08328828A (ja) | 積和演算器 | |
JP3660075B2 (ja) | 除算装置 | |
Jadhav et al. | A novel high speed FPGA architecture for FIR filter design | |
JP2700876B2 (ja) | 並列乗算器 | |
KR100295646B1 (ko) | 왈리스 트리를 이용한 곱셈방법 | |
JP3252954B2 (ja) | 乗算方法および乗算回路 | |
Tamilselvan et al. | An efficient MAC design for image processing application | |
JP2705640B2 (ja) | 積和演算器 | |
Sasipriya et al. | Vedic Multiplier Design Using Modified Carry Select Adder with Parallel Prefix Adder | |
JPS6285333A (ja) | 浮動小数点乗算器丸め処理方式 | |
Esmaeildoust et al. | High Speed Reverse Converter for the Five Moduli Set {2n, 2n-1, 2n+ 1, 2n-3, 2n-1-1} | |
JP3153656B2 (ja) | 乗算器 | |
KR950015180B1 (ko) | 고속연산형 가산기 | |
KR950010451B1 (ko) | 그룹 트리구조 알고리즘(GTSM ; Group Tree Structure Method)을 적용한 고속 승산기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080403 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090403 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100403 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110403 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120403 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120403 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130403 Year of fee payment: 15 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130403 Year of fee payment: 15 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140403 Year of fee payment: 16 |
|
LAPS | Cancellation because of no payment of annual fees |