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
Application number
JP7153915A
Other languages
English (en)
Other versions
JP2765516B2 (ja
Inventor
Kouhei Nabuhara
恒平 撫原
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP7153915A priority Critical patent/JP2765516B2/ja
Priority to US08/640,701 priority patent/US5784305A/en
Publication of JPH08328828A publication Critical patent/JPH08328828A/ja
Application granted granted Critical
Publication of JP2765516B2 publication Critical patent/JP2765516B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 CSAツリーの入力数の削減により、ハード
ウェア量が少なくてすみ高速に動作しうる積和演算器を
提供する。 【構成】 ビット分割器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

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、積和演算器に関し、特
にCSA(Carry Save Adder。キャリ
セーブ加算器)ツリーを有して固定小数点積和演算を行
う積和演算器に関する。
【0002】
【従来の技術】以前より、パーソナル・コンピュータや
エンジニアリング・ワークステーション等に採用される
汎用マイクロプロセッサは、符号付き整数乗算命令を命
令セットに備えていた。
【0003】ところで、近年、音声,オーディオまたは
画像の圧縮および伸長等のために、いわゆるディジタル
信号処理を高速に行う必要が生じてきた。
【0004】したがって、最近のマイクロプロセッサで
は、上述の既存の命令セット(符号付き整数乗算命令を
備えた命令セット)に加えて、ディジタル信号処理で頻
繁に用いられる符号付き固定小数点積和演算を行うため
の符号付き固定小数点積和演算命令が命令セットに追加
されることが一般的になりつつある。
【0005】このように、マイクロプロセッサの命令セ
ットに符号付き固定小数点積和演算命令を追加すること
により、次のような利点が生じる。すなわち、従来であ
れば、符号付き乗算命令および符号付き加算命令の2命
令で行われていた処理が、符号付き固定小数点積和演算
命令だけで(すなわち、1命令で)行えるようになるた
め、デジタル信号処理を大幅に高速化することができ
る。
【0006】本発明は、このようなマイクロプロセッサ
(ディジタル信号処理性能を強化したマイクロプロセッ
サ)に内蔵するための積和演算器(符号付き固定小数点
積和演算が可能な積和演算器)を対象とするものであ
る。
【0007】ここで、本発明で対象とする積和演算器に
は、33ビット長の符号付き被乗数Xと、32ビット長
の符号付き乗数Yと、同じく32ビット長の加算値Zと
が入力されるものとする。ただし、被乗数Xは、32ビ
ット長の任意の符号付き数を33ビット長に符号拡張し
た値,または33ビット長の任意の正数であるものとす
る。
【0008】この種の積和演算器では、次のおよび
に示すような処理が必要になる(図4参照)。なお、本
発明で対象とする積和演算器で採用される固定小数点数
表現は、最上位ビット側に小数点を固定する表現である
ものとする。
【0009】 被乗数Xと乗数Yとの符号付き乗算を
行って65ビット長の中間結果を得る。
【0010】 その中間結果の上位側33ビットに、
加算値Zが1ビット符号拡張された33ビット長の値を
符号付き加算して、65ビット長の結果Rを出力する。
【0011】この種の積和演算器における「乗算を行う
手法」としては、乗数Yの一部と被乗数X全体とからブ
ースのデコーダで部分積を生成し、生成した複数個の部
分積をCSAツリーで加算する手法が一般的である。
【0012】ブースのデコーダの構成手法は、ウェステ
(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頁」に示されている。
【0013】ここで、ブースのデコーダについての基本
的な考え方を説明する(この考え方における各式ならび
に図5および図6は、後述する本発明の実施例の説明に
おいても引用する)。
【0014】今、符号付き33ビット長の被乗数Xと符
号付き33ビット長の乗数Yとの積P(P=X×Y)を
求めたいとする。
【0015】被乗数Xおよび乗数Yの各ビット(最下位
ビットを第0ビットとしたときの第iビット(iは0ま
たは正整数))をそれぞれxi およびyi と示すと、被
乗数Xおよび乗数Yは次式で表される。
【0016】
【数1】
【0017】乗数Yをブースのデコーダで以下のように
3ビット単位に分割すると、乗数Yを次のように書き換
えることができる。
【0018】
【数2】
【0019】式(4)で定義されるYj (jは−1,0
または正整数)は、乗数Yの各ビット(y-1を含む)の
うちの3つのビットの組み合わせによって、−2,−
1,0,1,および2のいずれかの値をとる。すなわ
ち、図5に示すように、y(2j+1),y2j,およびy
(2j-1)の3つのビットの全ての組み合わせ(0または1
の組み合わせ)を検討しても、上記5つの値のうちのい
ずれかの値しかとらない。
【0020】求めたい積Pは、次式のように表される。
【0021】
【数3】
【0022】ここで、 Pj =X・Yj (6) とおくと、このPj は、各Yj の値について、図6に示
す方法(生成法)で生成することができる。すなわち、
j の値が負の場合には、被乗数Xの各ビットxi を反
転してcj =1を加算することにより、被乗数Xの2の
補数が求められる。
【0023】このPj をビット単位に書き表わすと、次
式のようになる(同式中のPjiおよびcj については図
6を参照されたい)。
【0024】
【数4】
【0025】被乗数Xが33ビット長であり、Yj が−
2,1,0,1,または2であるので、Pj は最大34
ビット長になりうる。
【0026】次に、上述のようにして求めた積Pに加算
値Zを加算し、積和演算の結果Rを求める考え方につい
て説明する。
【0027】符号付き固定小数点32ビット長の加算値
Zは、各ビットをzi と示し、z32=z31として1ビッ
トの符号拡張を行えば、次式のように表される。
【0028】
【数5】
【0029】したがって、積和演算の結果Rは、式
(5),(7)および(8)より、次式で表される。
【0030】
【数6】
【0031】式(9)中の負数部Nの2の補数化を次式
のようにして行い、加算器で扱えるようにする。ここ
で、被乗数Xおよび乗数Yが32ビット長の負の最大値
であり加算値Zが正の最大値であるときに、積和演算の
結果Rは最大65ビット長になるので、当該演算は65
ビット長で行われる。
【0032】
【数7】
【0033】このNを用いると、積和演算の結果Rは次
式で表される。
【0034】
【数8】
【0035】式(13)より、積和演算の結果Rを求め
るには、ブースのデコーダを用いて式(13)に示すさ
れる各項目を全て生成し、CSAツリーで加算すればよ
いことが分かる。
【0036】次に、このような考え方に基づく従来の積
和演算器(固定小数点積和演算器)の構成および動作に
ついて、図7〜図9を参照しながら説明する。
【0037】図7に示す積和演算器は、この種の積和演
算器の一例であり、第1のセレクタ101と、第2のセ
レクタ102と、第3のセレクタ103と、第4のセレ
クタ104と、ブースのデコーダ105と、11入力C
SAツリー106と、第1のパイプライン・レジスタ1
07と、第2のパイプライン・レジスタ108と、キャ
リ伝播加算器109と、符号拡張器110とを含んで構
成されている。
【0038】図7に示す構成の積和演算器では、基本的
に上述の考え方(式(13)によって積和演算の結果R
を求める考え方)を採用しながらも、部分積の生成およ
び加算を複数回に分割して行うことで、ハードウェア量
を削減している。なお、このような積和演算器と同種の
技術は、特開平4−205624号公報(直並列型乗算
器)に開示されている。ただし、特開平4−20562
4号公報に示された構成の直並列型乗算器では、部分積
加算の途中結果として、CSAに続いてキャリ伝播加算
器を通した後の単一の値を保持しているが、図7に示す
積和演算器の構成では、部分積加算の途中結果としてC
SAの出力であるハーフサムとハーフキャリとの組を保
持して演算を高速化している。
【0039】次に、図7に示す積和演算器の動作につい
て、図8および図9を参照しながら説明する。
【0040】図7に示す積和演算器は、ハードウェア量
を削減するために、部分積の生成および加算を「第1の
演算ステップ」と「第2の演算ステップ」との2回に分
けて行う。
【0041】第1に、第1の演算ステップにおける演算
実行時の動作を説明する。
【0042】第1の演算ステップでは、被乗数Xと乗数
Yの下位16ビットとが乗算され、演算前半(第1の演
算ステップ)の演算結果(途中演算結果)が生成され
る。
【0043】第1のセレクタ101は、演算ステップ切
替えビット(第1の演算ステップの演算を行うか第2の
演算ステップの演算を行うかを示す1ビット長の情報。
この場合には第1の演算ステップの演算を行う旨を示し
ている)を参照し、乗数Yの下位16ビットを選択出力
する。
【0044】また、第2のセレクタ102は、第1の演
算ステップの演算を行う旨を示している演算ステップ切
替えビットを参照し、第2の定数を選択出力する。ここ
で、第2の定数とは、式(13)における1・232(j
=0の場合の1・2(32+2j))とcn (1・231)とを
示す数値をいう(図8参照)。
【0045】さらに、第3のセレクタ103は、第1の
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、全ビット0を示す定数(値0の
定数)を選択出力する。
【0046】加えて、第4のセレクタ104は、第1の
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、第1の定数を選択出力する。こ
こで、第1の定数とは、式(13)におけるcz (1・
31)とc15・230(j=15の場合のcj ・22j)と
7 ・214(j=7の場合のcj ・22j)とを示す数値
をいう(図8参照)。
【0047】ブースのデコーダ105は、被乗数Xと第
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 )を生成する。
【0048】各部分積は、図5に示すように被乗数Xを
−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
に示すように決定される。
【0049】11入力CSAツリー106は、当該8個
の部分積(ブースのデコーダ105内の第1の部分積生
成器〜第8の部分積生成器によって生成される部分積。
付加ビット情報を含む),第2のセレクタ102の出
力,第3のセレクタ103の出力,および第4のセレク
タ104の出力を第1入力〜第11入力として入力し、
それらを加算し、その加算結果をハーフサムとハーフキ
ャリとの組として出力する。
【0050】当該ハーフサムおよびハーフキャリは、第
1の演算ステップの演算結果として、それぞれ、第1の
パイプライン・レジスタ107および第2のパイプライ
ン・レジスタ108に保持される。
【0051】なお、図8に、第1の演算ステップにおけ
る11入力CSAツリー106の各入力(ビット列)お
よび各出力(ハーフサムおよびハーフキャリのビット
列)の一覧を示す。
【0052】第2に、第2の演算ステップにおける演算
実行時の動作を説明する。
【0053】第2の演算ステップでは、被乗数Xと乗数
Yの上位17ビットとが乗算され、その乗算結果と第1
の演算ステップにおける演算結果と加算値Zとが加算さ
れ、最終的な積和演算の結果Rが生成される。
【0054】符号拡張器110は、加算値Zに対する1
ビットの符号拡張を行う。これにより、加算値Zは33
ビット長になる。
【0055】第1のセレクタ101は、第2の演算ステ
ップの演算を行う旨を示している演算ステップ切替えビ
ット(第1の演算ステップから第2の演算ステップへの
移行時に演算ステップ切替えビットの情報は切り替えら
れる)を参照し、乗数Yの上位17ビットを選択出力す
る。
【0056】また、第2のセレクタ102は、第2の演
算ステップの演算を行う旨を示している演算ステップ切
替えビットを参照し、第2のパイプライン・レジスタ1
08に保持されている値(第1の演算ステップの演算結
果のうちのハーフキャリ)の上位35ビットを選択出力
する。
【0057】さらに、第3のセレクタ103は、第2の
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、符号拡張器110の出力(符号
拡張された加算値Z)を選択出力する。
【0058】加えて、第4のセレクタ104は、第2の
演算ステップの演算を行う旨を示している演算ステップ
切替えビットを参照し、第1のパイプライン・レジスタ
107に保持されている値(第1の演算ステップの演算
結果のうちのハーフサム)の上位34ビットを選択出力
する。
【0059】ブースのデコーダ105は、被乗数Xと第
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 )を生成する。
【0060】各部分積は、図5に示すように被乗数Xを
−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参照)。
【0061】11入力CSAツリー106は、当該8個
の部分積(ブースのデコーダ105内の第1の部分積生
成器〜第8の部分積生成器によって生成される部分積。
付加ビット情報を含む),第2のセレクタ102の出
力,第3のセレクタ103の出力,および第4のセレク
タ104の出力を第1入力〜第11入力として入力し、
それらを加算し、その加算結果をハーフサムとハーフキ
ャリとの組として出力する。
【0062】キャリ伝播加算器109は、以下のの値
およびの値を加算し、単一の結果R(当該積和演算の
結果R)を得て出力する(以下のの値およびの値を
対象としてキャリ伝播加算を行う)。 49ビット長のハーフサム(第2の演算ステップで
求められたハーフサム)と、第1の演算ステップで求め
られたハーフサムの下位16ビット(第1のパイプライ
ン・レジスタ107に保持されている値の下位16ビッ
ト)とを連結した値(図8および図9参照) 48ビット長のハーフキャリ(第2の演算ステップ
で求められたハーフキャリ)と、第1の演算ステップで
求められたハーフキャリの下位15ビット(第2のパイ
プライン・レジスタ108に保持されている値の下位1
5ビット)とを連結した値(図8および図9参照)
【0063】なお、図9に、第2の演算ステップにおけ
る11入力CSAツリー106の各入力(ビット列)お
よび各出力(ハーフサムおよびハーフキャリのビット
列)の一覧を示す。
【0064】式(13)中の各項目は、必ず、図8また
は図9中の入力のビット列に含まれている。したがっ
て、第1の演算ステップおよび第2の演算ステップのい
ずれかで、式(13)中の各項目の値は11入力CSA
ツリー106により入力され加算されることになる。
【0065】
【発明が解決しようとする課題】上述した従来の積和演
算器(図7に示すような積和演算器)では、符号拡張さ
れた加算値Z全体が第2の演算ステップで加算されてい
るので、第2の演算ステップではCSAツリーで11個
の値を入力して加算する必要があり(図9参照)、入力
数が11のCSAツリーを用意する必要がある。CSA
ツリーの入力数が多くなると、当該CSAツリーの構成
が複雑になり、当該CSAツリーを実現するためのハー
ドウェア量の増大および当該CSAツリーを使用した演
算の遅延(加算器段数が増えることによる積和演算器全
体の動作速度の低下)が生じうるという問題点がある。
【0066】本発明の目的は、上述の点に鑑み、符号拡
張された加算値Zを2分割するビット分割器を設けるこ
と等により、CSAツリーの入力数を削減することがで
き、ハードウェア量が少なくてすみ、高速に動作しうる
積和演算器を提供することにある。
【0067】すなわち、本発明の目的は、33ビット長
に符号拡張された加算値Zをビット分割器によって上位
15ビットと下位18ビットとに分割し、符号拡張され
た加算値Zのうちの下位18ビットは第1の定数と連結
して第1の演算ステップでCSAツリーに与え、符号拡
張された加算値Zのうちの上位15ビットは第1の演算
ステップにおけるハーフサムの上位34ビットと連結し
て第2の演算ステップでCSAツリーに与えることによ
り、CSAツリーの入力数を削減することにある。
【0068】
【課題を解決するための手段】本発明の積和演算器は、
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ビットと
を連結した値を対象としてキャリ伝播加算を行うキャリ
伝播加算器とを有する。
【0069】
【作用】本発明の積和演算器では、33ビット長の符号
付き被乗数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ビットとを連結した値を対象としてキャリ伝播加算を
行う。
【0070】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0071】図1は、本発明の積和演算器の一実施例の
構成を示すブロック図である。
【0072】本実施例の積和演算器は、33ビット長の
符号付き被乗数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とを含んで構成されている。
【0073】ブースのデコーダ4は、第1の部分積生成
器〜第8の部分積生成器を含んで構成されている。
【0074】図2は、本実施例の積和演算器における第
1の演算ステップでの10入力CSAツリー6の各入力
(ビット重みを表すためのビット開始位置およびビット
長を示したビット列)および各出力(ハーフサムおよび
ハーフキャリのビット列)の一覧を示す図である。
【0075】図3は、本実施例の積和演算器における第
2の演算ステップでの10入力CSAツリー6の各入力
(ビット列)および各出力(ハーフサムおよびハーフキ
ャリのビット列)の一覧を示す図である。
【0076】図5および図6は、先にも言及したが、本
実施例の積和演算器の動作を説明するための図(本発明
で採用されるブースのデコーダの考え方を説明するため
の図)である。
【0077】次に、図1とともに図2および図3を参照
して、このように構成された本実施例の積和演算器の動
作について説明する。
【0078】図1に示す本実施例の積和演算器は、ハー
ドウェア量を削減するために、部分積の生成および加算
を「第1の演算ステップ」と「第2の演算ステップ」と
の2回に分けて行う(この点は図7に示す従来の積和演
算器と同様である)。
【0079】第1に、第1の演算ステップにおける演算
実行時の動作を説明する。
【0080】本実施例の積和演算器は、第1の演算ステ
ップでは、被乗数Xと乗数Yの下位16ビットとを乗算
し、さらに加算値Zの一部(下位18ビット)を加算
し、途中演算結果を生成する。
【0081】符号拡張器10は、加算値Zに対する1ビ
ットの符号拡張を行う。これにより、加算値Zは33ビ
ット長になる。
【0082】ビット分割器5は、符号拡張器10の出力
(符号拡張された加算値Z)を下位18ビットと上位1
5ビットとに分割する。
【0083】第1のセレクタ1は、演算ステップ切替え
ビット(第1の演算ステップの演算を行うか第2の演算
ステップの演算を行うかを示す1ビット長の情報。この
場合には第1の演算ステップの演算を行う旨を示してい
る)を参照し、乗数Yの下位16ビットを選択出力す
る。
【0084】また、第2のセレクタ2は、第1の演算ス
テップの演算を行う旨を示している演算ステップ切替え
ビットを参照し、第2の定数を選択出力する。ここで、
第2の定数とは、式(13)における1・232(j=0
の場合の1・2(32+2j) )とcn (1・231)とを示す
数値をいう(図2参照)。
【0085】さらに、第3のセレクタ3は、第1の演算
ステップの演算を行う旨を示している演算ステップ切替
えビットを参照し、ビット分割器5の出力の下位18ビ
ット(ビット分割器5によって出力された「符号拡張さ
れた加算値Zの下位18ビット」)と第1の定数とを連
結した値を選択出力する。ここで、第1の定数とは、式
(13)におけるcz (1・231)とc15・230(j=
15の場合のcj ・22j)とc7 ・214(j=7の場合
のcj ・22j)とを示す数値をいう(図2参照)。
【0086】ブースのデコーダ4は、被乗数Xと第1の
セレクタ1の出力とを入力し、第1のセレクタ1の出力
を切出し開始位置を最上位ビットから2ビットずつ下位
ビットに移動しながら3ビット単位で切り出した値を第
8の部分積生成器,第7の部分積生成器,第6の部分積
生成器,第5の部分積生成器,第4の部分積生成器,第
3の部分積生成器,第2の部分積生成器,および第1の
部分積生成器に供給し、これらの値と被乗数Xの値とか
ら第8の部分積生成器〜第1の部分積生成器により第8
の部分積〜第1の部分積(被乗数Xと乗数Yの下位16
ビットとを乗算したときの8個の部分積P7 〜P0 )を
生成する。
【0087】各部分積は、図5に示すように被乗数Xを
−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に示す
ように決定される。
【0088】10入力CSAツリー6は、当該8個の部
分積(ブースのデコーダ4内の第1の部分積生成器〜第
8の部分積生成器によって生成される部分積。付加ビッ
ト情報を含む),第2のセレクタ2の出力,および第3
のセレクタ3の出力を第1入力〜第10入力として入力
し、それらを加算し、その加算結果をハーフサムとハー
フキャリとの組として出力する。
【0089】当該ハーフサムおよびハーフキャリは、第
1の演算ステップの演算結果として、それぞれ、第1の
パイプライン・レジスタ7および第2のパイプライン・
レジスタ8に保持される。
【0090】第2に、第2の演算ステップにおける演算
実行時の動作を説明する。
【0091】本実施例の積和演算器は、第2の演算ステ
ップでは、被乗数Xと乗数Yの上位17ビットとを乗算
し、さらに第1の演算ステップの演算結果および加算値
Zの一部(第1の演算ステップで加算しなかった上位1
5ビット)を加算し、最終的な積和演算の結果Rを生成
する。
【0092】なお、第1の演算ステップから第2の演算
ステップへの移行時には、演算ステップ切替えビットが
「第1の演算ステップを行う旨を示す情報」から「第2
の演算ステップを行う旨を示す情報」に切り替えられ
る。
【0093】第1のセレクタ1は、第2の演算ステップ
の演算を行う旨を示している演算ステップ切替えビット
を参照し、乗数Yの上位17ビットを選択出力する。
【0094】また、第2のセレクタ2は、第2の演算ス
テップの演算を行う旨を示している演算ステップ切替え
ビットを参照し、第2のパイプライン・レジスタ8に保
持されている値(第1の演算ステップの演算結果のうち
のハーフキャリ)の上位35ビットを選択出力する。
【0095】さらに、第3のセレクタ3は、第2の演算
ステップの演算を行う旨を示している演算ステップ切替
えビットを参照し、ビット分割器5の出力の上位15ビ
ット(ビット分割器5によって出力された「符号拡張さ
れた加算値Zの上位15ビット」)と第1のパイプライ
ン・レジスタ7に保持されている値(第1の演算ステッ
プの演算結果のうちのハーフサム)の上位34ビットと
を連結した値を選択出力する。
【0096】ブースのデコーダ4は、被乗数Xと第1の
セレクタ1の出力とを入力し、第1のセレクタ1の出力
を切出し開始位置を最上位ビットから2ビットずつ下位
ビットに移動しながら3ビット単位で切り出した値を第
8の部分積生成器,第7の部分積生成器,第6の部分積
生成器,第5の部分積生成器,第4の部分積生成器,第
3の部分積生成器,第2の部分積生成器,および第1の
部分積生成器に供給し、これらの値と被乗数Xの値とか
ら第8の部分積生成器〜第1の部分積生成器により第8
の部分積〜第1の部分積(被乗数Xと乗数Yの上位17
ビットとを乗算したときの8個の部分積P15〜P8 )を
生成する。
【0097】各部分積は、図5に示すように被乗数Xを
−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参照)。
【0098】10入力CSAツリー6は、当該8個の部
分積(ブースのデコーダ4内の第1の部分積生成器〜第
8の部分積生成器によって生成される部分積。付加ビッ
ト情報を含む),第2のセレクタ2の出力,および第3
のセレクタ3の出力を第1入力〜第10入力として入力
し、それらを加算し、その加算結果をハーフサムとハー
フキャリとの組として出力する。
【0099】キャリ伝播加算器9は、以下のの値およ
びの値を加算し、単一の結果R(当該積和演算の結果
R)を得て出力する(以下のの値およびの値を対象
としてキャリ伝播加算を行う)。 49ビット長のハーフサム(第2の演算ステップで
求められたハーフサム)と、第1の演算ステップで求め
られたハーフサムの下位16ビット(第1のパイプライ
ン・レジスタ7に保持されている値の下位16ビット)
とを連結した値(図2および図3参照) 48ビット長のハーフキャリ(第2の演算ステップ
で求められたハーフキャリ)と、第1の演算ステップで
求められたハーフキャリの下位15ビット(第2のパイ
プライン・レジスタ8に保持されている値の下位15ビ
ット)とを連結した値(図2および図3参照)
【0100】図7に示した従来の積和演算器では、加算
値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)に与えられる。
【0101】このため、従来11個必要であったCSA
ツリーの入力数を10個に減らすことができ、CSAツ
リーにおけるハードウェアの簡素化および演算の遅延の
短縮(動作の高速化)を達成することが可能となる。
【0102】なお、図2および図3を参照すると、式
(13)中の各項目は、必ず、図2または図3中の各入
力のビット列に含まれている。したがって、第1の演算
ステップおよび第2の演算ステップのいずれかで、式
(13)中の各項目の値は10入力CSAツリー6によ
り入力され加算されている。
【0103】ここで、式(13)中に現れる1・2
(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の定数の値も、本実施例における値
に限られるものではない。
【0104】また、本実施例では部分積P0 〜P15に対
する付加ビット情報がブースのデコーダ4側で付加され
るものとしたが、10入力CSAツリー6側でこれらの
付加ビット情報を付加することも可能である。
【0105】なお、第1演算ステップの演算と第2演算
ステップの演算とのいずれを行っているかを示す情報を
第1のセレクタ1,第2のセレクタ2および第3のセレ
クタ3に指示する手法は、本実施例のように「演算ステ
ップ切替えビットによって指示する手法」に限られるも
のではない。
【0106】
【発明の効果】以上説明したように本発明は、加算値Z
が符号拡張された値を他の入力値とビット重みが重なら
ないように分割して他の入力値と連結し、当該分割・連
結によって生成された値を第1の演算ステップと第2の
演算ステップとの2回に分けてCSAツリーに与えるこ
とにより、従来は11個必要であったCSAツリーの入
力数を10個に削減することができ(CSAツリーのハ
ードウェア量を削減することができ)、従来の積和演算
器(固定小数点積和演算器)よりもハードウェア量を減
らすことができ、従来の積和演算器よりも動作を高速化
できる(演算の遅延を短縮できる)積和演算器を実現す
ることが可能になるという効果を有する。
【図面の簡単な説明】
【図1】本発明の積和演算器の一実施例の構成を示すブ
ロック図である。
【図2】図1に示す積和演算器における第1の演算ステ
ップでの図1中の10入力CSAツリーの各入力および
各出力の一覧を示す図である。
【図3】図1に示す積和演算器における第2の演算ステ
ップでの図1中の10入力CSAツリーの各入力および
各出力の一覧を示す図である。
【図4】本発明で対象とする積和演算の態様を示す図で
ある。
【図5】本発明で採用されるブースのデコーダの考え方
を説明し、図1および図7に示す積和演算器の動作を説
明するための図である。
【図6】本発明で採用されるブースのデコーダの考え方
を説明し、図1および図7に示す積和演算器の動作を説
明するための図である。
【図7】従来の積和演算器の一例の構成を示すブロック
図である。
【図8】図7に示す積和演算器における第1の演算ステ
ップでの図7中の11入力CSAツリーの各入力および
各出力の一覧を示す図である。
【図9】図7に示す積和演算器における第2の演算ステ
ップでの図7中の11入力CSAツリーの各入力および
各出力の一覧を示す図である。
【符号の説明】
1 第1のセレクタ 2 第2のセレクタ 3 第3のセレクタ 4 ブースのデコーダ 5 ビット分割器 6 10入力CSAツリー 7 第1のパイプライン・レジスタ 8 第2のパイプライン・レジスタ 9 キャリ伝播加算器 10 符号拡張器 R 結果 X 被乗数 Y 乗数 Z 加算値

Claims (3)

    【特許請求の範囲】
  1. 【請求項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. 【請求項2】 第1の演算ステップの演算を行うか第2
    の演算ステップの演算を行うかを示す演算ステップ切替
    えビットを第1のセレクタ,第2のセレクタおよび第3
    のセレクタに与えることを特徴とする請求項1記載の積
    和演算器。
  3. 【請求項3】 第1の定数が「cz とc15・230とc7
    ・214とを示す数値」であり、 第2の定数が「1・232とcn とを示す数値」であり、 第1の演算ステップで、部分積P0 ,P1 ,P2
    3 ,P4 ,P5 ,P6 ,およびP7 に1・2(32+2j)
    (j=1,2,3,4,5,6,7,および8)を示す
    ビットを付加し、部分積P1 ,P2 ,P3 ,P4
    5 ,P6 ,およびP7にcj ・22j(j=0,1,
    2,3,4,5,および6)を示すビットを付加し、 第2の演算ステップで、部分積P8 ,P9 ,P10
    11,P12,P13,および〜P14に1・2(32+2j) (j
    =9,10,11,12,13,14,および15)を
    示すビットを付加し、部分積P9 ,P10,P11,P12
    13,P14,およびP15にcj ・22j(j=8,9,1
    0,11,12,13,および14)を示すビットを付
    加することを特徴とする請求項1または請求項2記載の
    積和演算器。
JP7153915A 1995-05-01 1995-05-29 積和演算器 Expired - Fee Related JP2765516B2 (ja)

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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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