JPH08339292A - 演算処理装置及びその方法、並びにデータ処理装置 - Google Patents

演算処理装置及びその方法、並びにデータ処理装置

Info

Publication number
JPH08339292A
JPH08339292A JP8089541A JP8954196A JPH08339292A JP H08339292 A JPH08339292 A JP H08339292A JP 8089541 A JP8089541 A JP 8089541A JP 8954196 A JP8954196 A JP 8954196A JP H08339292 A JPH08339292 A JP H08339292A
Authority
JP
Japan
Prior art keywords
addition
digit
bit
data
arithmetic processing
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
JP8089541A
Other languages
English (en)
Other versions
JP3658079B2 (ja
Inventor
Takeshi Ichikawa
武史 市川
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.)
Canon Inc
Original Assignee
Canon Inc
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
Priority to US08/630,742 priority Critical patent/US5978827A/en
Priority to KR1019960010745A priority patent/KR100359965B1/ko
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP08954196A priority patent/JP3658079B2/ja
Priority to CN96102871A priority patent/CN1129066C/zh
Priority to EP96302538A priority patent/EP0741354B1/en
Priority to DE69632978T priority patent/DE69632978T2/de
Publication of JPH08339292A publication Critical patent/JPH08339292A/ja
Application granted granted Critical
Publication of JP3658079B2 publication Critical patent/JP3658079B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/23Majority or minority circuits, i.e. giving output having the state of the majority or the minority of the inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3832Less usual number representations
    • G06F2207/3836One's complement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4816Pass transistors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4822Majority gates

Landscapes

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

Abstract

(57)【要約】 【課題】 複数の多ビットデータの加算を含む演算にお
いて、キャリー伝搬をなくし、高速に演算するための演
算装置を提供する。 【解決手段】 複数の多ビットデータを加算する演算処
理装置に、該複数の多ビットデータの共通する桁の値が
並列に入力されて、入力値の中のhighの個数をバイナリ
表現で出力するND(number detector)11を各桁毎に
設け、複数のND11からの出力を、桁の重複のない値
を合わせて1データとして加算する全加算器を具える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、加算や乗算などの
演算を実行する半導体装置等の演算処理装置、及び該装
置で用いる演算方法、並びに前記演算処理装置を用いた
データ処理装置に関するものである。
【0002】
【従来の技術】近年、微細化に伴う半導体製造技術及び
アルゴリズムを含む半導体回路技術の目ざましい発展に
伴い、加算器(adder) や乗算器(multiplier)等の演算速
度の向上には著しいものが有る。又その演算処理は、CP
U(central processing unit)やDSP(digital signal pro
cessor) の分野をはじめ、あらゆる半導体装置に使用さ
れている。しかしながら、技術が発展すればするほどこ
のような演算処理に対する要求は厳しいものになり、さ
らなる高速化が求められているのが現状である。
【0003】特に、マルチメディア時代における画像処
理や行列演算等の莫大な量の計算を必要とする分野にお
いて、演算処理の高速化の要求が強く、中でも、加算器
や乗算器の処理は、これらの処理の性能を決定する最も
重要な演算処理の1つであり、処理の高速化が望まれて
いる。
【0004】現状の演算方式による加算器の一例とし
て、「CMOS超LSIの設計」(菅野卓雄監修、培風
館)に記載された加算器について説明する。
【0005】2つの2進数の加算は、2つの2進数を
X、Yとし、XとYの和(sum) をS、桁上げ(carry) を
Cと置くと、X、Yが1桁の場合は、次の4通りとな
る。
【0006】X=0,Y=0のとき、S=0、C=0 X=0,Y=1のとき、S=1、C=0 X=1,Y=0のとき、S=1、C=0 X=1,Y=1のとき、S=0、C=1
【0007】これを真理値表(truth-table) と見なし
て、和S及び桁上げCを論理式で表すと、S=X+Y,
C=X*Yとなり、図41の(A)に示すような1つの
排他的論理和(exclusive OR)と1つの論理積(AND) から
なる2入力2出力の回路で実現できる。この機能を持つ
回路を半加算器(half adder)と称する。
【0008】2つの2進数が複数桁の場合、すなわち2
ビット以上のビット幅を持つ場合は、下位桁からの桁上
げ信号の処理を要する。従って1桁当たりではXi,Yi
びCi-1の3つの2進数を加算できる回路が必要である。
この3入力2出力の回路を全加算器(full adder)と称す
る。図41(C)に、その動作を表す真理値表と論理式
を示す。この全加算器を必要な個数だけ複数個配置し、
下位の加算器の桁上げ信号を上位の加算器に入力するよ
うに接続することにより、任意の桁数の加算を行なう回
路が得られる。これをリップルキャリーアダー(ripple
carry adder)と呼ぶ。4ビットアダーとして構成した例
を図41の(B)に示す。図41の(C)の真理値表の
動作を正しく反映する1ビット全加算器の回路構成に
は、多くのヴァリエーションが考えられるが、高速演算
を目的とする場合の設計上のポイントは、和信号の生成
ではなく、下位桁から入力された桁上げ信号をいかに速
く上位桁に伝えるかにある。図41の(D)に、この観
点から設計した全加算器の例を示す。
【0009】また、桁数が大きくなり、例えば16ビッ
トになると、個々の全加算器における工夫による高速化
には限界があり、16ビットアダー全体で高速化を図る
必要がある。上述したように、アダーの演算速度はキャ
リーの伝搬速度により律速されているため、下位の加算
器からの桁上げ信号を待たずにその加算器自身の桁上げ
信号が決定できれば高速化が図れる。
【0010】全ての桁の桁上げ信号は自桁の入力値と最
下位桁の桁上げ信号だけから生成することができる。こ
れを桁上げ先見方式(Carry Look Ahead: CLA) と呼ぶ。
この方式を利用した回路(CLA回路)の例を図42の
(A)に示す。図42の(A)において、HAは図42
の(B)に示す半加算器、点線で囲まれた部分は、図4
2の(C)に示すCMOS回路で実現される。
【0011】実際に回路にインプリメントする場合に
は、ハードウェア量や効率を考えて、全ての桁の桁上げ
信号をCLAで生成することはなく、例えば4ビットを
1つのブロックとして、ブロック単位でCLAを用いて
桁上げ信号を伝搬させ、ブロック内はリップルで桁上げ
信号を伝える方式(ブロックCLAと呼ぶ)を採る場合
が多い。この方式を用いた16ビットアダーの例を図4
3に示す。
【0012】また、減算は、加算回路をそのまま用い
て、減数(subtracter)の2の補数(2'scomplement)を被
減数(minuend) に加えることで実現される。
【0013】しかしながら、以上の方法によっても、op
erand 数が増大すればするほど、素子数、演算時間とも
大きく増大し、operandsの増加に対して更なる高速化を
図ることは容易でない。
【0014】例えば、63個のデータを全て加算する場
合において、高速化を追求すれば、図44のように、並
列に6段の加算処理を行なうことができるが、62個の
全加算器を要する。一方、素子数を減らせば、図45の
ように全加算器を1個とすることもできるが、62回の
加算を順次行なう必要がある。
【0015】次に、現状の演算方式の乗算器(multiplie
r)の一例として、ここでは並列乗算器について簡単に説
明する。
【0016】n×n ビットの乗算の場合、まず部分積
(partial product)
【0017】
【外1】 を求める。ここで部分積とは、被乗数(multipl
icand)
【0018】
【外2】 に乗数(multiplicator) Yの1ビット2jYj(J=0,1,・・・,
n-1 )を掛け合わせた結果を言う。
【0019】2進数の場合は0か1しかないので、Yj
0のときはPij はすべて0となり、Yjが1のときはPij
の各ビットはXiの各ビットに等しい。従って部分積は、
被乗数の各ビットと乗数の1ビットとの論理積をとるこ
とにより得られる。生成された部分積を乗数ビットの重
みに従って桁を合わせ、それらを加算することにより、
乗算結果
【0020】
【外3】 が得られる。最も基本的な並列乗算器は、上記の部分積
生成のハードウエア(AND ゲート) および部分積加算の
回路を、アレイ状に配列して結線することにより得られ
る。例として、8ビット×8ビットの並列乗算器を図4
6に示す。同図に示すように、この並列乗算器は、全加
算器301 、半加算器302 、ANDゲート303 を含む。
【0021】この例に示されるように、乗算は、n ×n
ビットの場合、n2個のANDゲートで部分積を容易に且
つ高速に演算するとともに、この部分積を加算する加算
工程が演算速度を律速している。従って、部分積の加算
工程の高速化が乗算器の高速化の鍵である。
【0022】そのための改良案として、各部分積の加算
段の桁上げ信号を次の加算段の加算器に伝えることによ
り、自段内での桁上げ信号伝搬をなくすことが可能とな
るキャリーセーブアダー方式や、同一桁内の加算工程を
並列に行うWallace-tree方式(Wallace, C., IEEE Tran
s.on Electronic Computers,EC-13,1,1964, pp14-17)、
および生成される部分積の個数そのものを減らす、Boot
h のアルゴリズム(Rubinifield,L.,IEEE Trans. on Com
puters, C24,10,1975, pp.1014-1015)を用いる方式等が
あり、高速化が図られている。
【0023】しかしながら、上述の方式では、いずれも
ビット数が増大すればするほど、素子数、演算時間とも
大きく増大し、多ビット化に対して更なる高速化を図る
ことは容易でなく、最近では多値理論を応用した乗算器
等も報告されているが(T.Hanyu et al. Proc. IEEE In
t. Symp. on MVL, pp19-26, May(1994).Nov.1993)、な
かなか実用化に至らないのが、実状である。
【0024】本発明の目的は、上述した技術課題を解決
し、高速で素子数の少ない演算処理装置及びその方法、
並びにデータ処理装置を提供することにある。
【0025】本発明の他の目的は、演算処理装置及びデ
ータ処理装置において、高速化を図りつつ、必要な素子
数を削減し、消費電力を減少させることにある。
【0026】本発明の他の目的は、加算においてキャリ
ーの伝搬をなくし、演算の高速化を図ることにある。
【0027】本発明の他の目的は、データを再編成して
加算すべきデータ数を削減し、演算を高速化させ、演算
に必要な素子数を削減することにある。
【0028】本発明の他の目的は、演算を並列に実行す
ることで、処理の高速化を図ることにある。
【0029】
【課題を解決するための手段】上述の目的を達成するた
めに、本発明によれば、複数の多ビットデータを加算す
る演算処理装置に、該複数の多ビットデータの共通する
桁同士を一括して加算する第1の加算手段と、該第1の
加算手段による加算結果の総和を求める第2の加算手段
とを具える。
【0030】また、本発明の他の態様によれば、複数の
多ビットデータを乗算する演算処理装置に、該複数の多
ビットデータの部分積を生成する部分積生成手段と、該
部分積生成手段で生成された複数の部分積の共通する桁
同士を一括して加算する第1の加算手段と、該第1の加
算手段による加算結果の総和を求める第2の加算手段と
を具える。
【0031】また、本発明の他の態様によれば、複数の
多ビットデータを加算する演算方法に、該複数の多ビッ
トデータの共通する桁同士を一括して、各桁を独立に加
算する第1の加算工程と、該第1の加算工程による加算
結果の総和を求める第2の加算工程とを具える。
【0032】また、本発明の他の態様によれば、複数の
多ビットデータを乗算する演算方法に、前記複数の多ビ
ットデータの部分積を生成する部分積生成工程と、該部
分積生成工程で生成された複数の部分積の共通する桁同
士を一括して加算する第1の加算工程と、該第1の加算
工程による加算結果の総和を求める第2の加算工程とを
具える。
【0033】また、本発明の他の態様によれば、データ
を入力する入力手段と、該入力手段より入力されたデー
タを記憶する記憶手段と、該記憶手段に記憶されたデー
タと前記入力手段より入力されたデータとを、所定の処
理手順で処理する処理手段と、該処理手段の処理結果を
出力する出力手段とを有し、前記処理手段が、複数の多
ビットデータの共通する桁同士を一括して加算する第1
の加算手段と、該第1の加算手段による加算結果の総和
を求める第2の加算手段とを具える。
【0034】
【発明の実施の形態】以下、図面を参照しながら、本発
明の実施の形態を詳細に説明する。
【0035】(実施形態1)本実施形態では、複数の多
ビットデータの加算方法について、8ビットデータ列7
個を加算する演算を例として説明する。
【0036】図1は、本実施形態を表す図である。ここ
では、8ビットのデータ列を7個加算するために、ま
ず、7個の8ビットデータ列をそれぞれ桁ごとに一括加
算する第1の加算工程を行なう。この加算は後に詳細に
構成を説明するが、n 入力中何個がhighであったかをバ
イナリーモード( 図1ではS(pq) で示している。( pは
桁の重み、 qはS の中での桁の重みを表わす)) で出力
する機能を持つブロック11を用いて行う。
【0037】以下、この機能を持つブロック11をNumb
er Detector と称し、NDと略記する。図1では、このND
11というブロックを1つの箱で表している。箱の中の
数字は、"/" の前後がそれぞれ入力数(In)と出力数(Ou
t) を示している。この出力数は入力数で決定され、Out
=〔Log2(In)〕で表わせる。ここで〔a〕 はZ>a となる
最小の整数Z を表わすとする。
【0038】本実施形態では、この第1の加算工程を並
列に処理するため、演算速度は各NDの中で最も遅いNDの
速度により決定される。ここでは、演算速度は全て同じ
であるから1つのNDの演算速度で決定される。本実施形
態では、データ列が8ビットであるから8個のNDを用い
る。また、7個の8ビットデータ列加算を行う演算のた
め、NDへ入力される最大の入力数は7個となる。
【0039】通常の加算演算では、キャリーが発生する
ため、そのキャリー伝搬により演算速度が遅くなる。こ
れに対し、本実施形態では、一括加算を行いキャリーの
無い加算演算を並列処理で行うことに特徴があり、高速
化が可能となる。本実施形態では、全て8ビットのデー
タ列7個を加算する例を示したが、これに限定されず、
複数個の多ビットデータのビット数が各々異なっていて
も構わない。
【0040】次いで、バイナリーモードで表わされた8
個の加算結果を全て加算する第2の加算工程を行うこと
により、所望の加算結果Q が高速に得られる。
【0041】上記NDについて説明する。まず、図2にA,
B,C,D,E の5入力多数決論理回路(majority logic circ
uit)の回路図を示す。5入力多数決論理回路とは、5入
力中3入力以上がHighの場合に出力としてHighが出る論
理である。ブール代数(Boolean Algebra) 表現では、A
(B+C)(D+E)+C(B+E)(A+D)+E(A+B)(C+D) となり、AND21と
OR22で構成されるCMOS回路で容易に形成できる。ここで
は5入力であるが、一般のn 入力に拡張できるのはいう
までもない。
【0042】図3の(a) は、5入力多数決論理回路31を
複数用いて、 mビット中 nビットが真か否かを判定する
回路である。ここで、出力Fi(X1....X7)は、入力の数が
i 個以上のときHighを出力することを示す。
【0043】さらに図3の(b) は、図3の(a) に相当す
るアレイ32の出力に、3ビット2進数のバイナリーコー
ドにするための2進化回路33を接続し、NDとして機能す
る回路を示している。ここでは出力例として、7ビット
中5ビットが真である場合を示している。NDの1例とし
て、ここではCMOS回路を使ったNDについて説明したが、
これに限定されるものではなく、前述したNDの機能を持
っている回路であればよい。
【0044】(実施形態2)本実施形態では、実施形態
1の加算を更に高速化するために、第2の加算工程を高
速化した例を示す。
【0045】図4は、本実施形態の加算器の構成を示し
ている。同図に示すように、第1実施形態でNDから得ら
れた各3ビットの出力データのうち、桁が重ならない加
算結果をまとめて1つの10ビットデータ列とすることが
できる。以上のことを図4の例で説明する。
【0046】同図において、楕円の枠で囲まれた桁の3
ビット出力データは、お互いに重なる桁が存在しないた
め、まとめて10ビットデータ列A とすることができる。
(加算結果3つをまとめても値の存在しない桁がある
が、そこは0とする。この例では1 桁目は0である。)
この処理はアルゴリズム上は1つのステップであるが、
回路内の処理としては配線を引き回しているのみで、演
算は全く行っていない点が重要である。
【0047】このステップで、8 個の加算結果を3 個の
10ビットデータ列と変換することができる。遅延時間
は、他のステップに比べて無視できるほど小さい。最後
に3 個の10ビットデータ列を加算すれば最終的な演算結
果が得られる。図4の例では3個の10ビットデータであ
るから、図5に示すように、わずか2段の全加算器通過
で最終加算結果が求められ、複数の多ビットデータを高
速に加算演算が行える。
【0048】最大n ビットデータ列をm 個加算する一般
的な場合に拡張して説明する。n 個のNDから出力される
加算結果は、最大〔Log2m〕 ビットであり、最大でも
〔Log2m〕 個の(n+〔Log2m〕 )ビットデータ列へ変換
することができる。最後に〔Log2m〕 個の(n+〔Log
2m〕 )ビットデータ列を加算すれば最終的な演算結果
が得られる。全加算器通過段数は、
【0049】
【外4】 で表わせる。ここで、
【0050】
【外5】 は Z≧a となる最小の整数 Zを表わすとする。上式よ
り、多ビットデータの数が増大しても全加算器通過段数
は低く抑えられることがわかる。
【0051】(実施形態3)本実施形態では、多ビット
データ同士の乗算について説明する。以下、 8×8ビッ
ト乗算器を例にとって説明するが、これは、一般の m×
n ビットの乗算に拡張できる。
【0052】被乗数をX(X7 X6 X5 X4 X3 X2 X1 X0)、乗
数をY(Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0)として、 X×Y= Qとす
る。X,Y ともども最大値は10進数では28-1であるか
ら、Q<(28-1)2<216-1 であり、Q は最大 16 ビットで表
わせる。 m×n ビットでは、Q<(2m-1)(2n-1)<2m+n-1 で
あり、Q は最大m+n ビットである。
【0053】まず、図6に示すように、 X×Yjという部
分積を生成する。通常の CMOS 乗算器の様に、被乗数で
あるX の各ビットXiと乗数であるYjとの ANDをとって部
分積を求めても構わないが、ここでは、図7に示すよう
に、ゲート電極を共通化した単なるnMOSトランジスタを
用い簡素化した。1例としてnMOSトランジスタを用いて
いるが、その他のトランスミッションゲートMOS トラン
ジスタ等でも構わないのはいうまでもない。
【0054】初期状態ではXi=Low(0),Yj=high(1)とし、
出力は全て0 としておくと良い。そしてYjをLow 状態に
した後に、Xiを入力する。演算時はこの状態でYjにhigh
(1)もしくはLow(0)を入力する。即ちYjがhighの時はゲ
ート電極にhigh信号が入力され、nMOSトランジスタがオ
ン状態になり、 X×Yj = (X7Yj, X6Yj, X5Yj, X4Yj, X3Yj, X2Yj, X1Yj,
X0Yj) = X(X7, X6, X5, X4, X3, X2, X1, X0) なる8 ビットデータ列が生成される。YjがLow(0)の時は
ゲート電極にLow 信号が入力されるため、nMOSトランジ
スタはオフ状態になり、初期状態のまま8ビットデータ
列(0、0、0、0、0、0、0、0が生成される。これにより、通常の
AND回路より小さい回路規模で X×Y のAND を形成する
ことができるが、通常のAND 回路を用いてもよい。
【0055】次いで、図6で示された部分積の各桁の和
をそれぞれ桁ごとにNDにより一括加算する。この加算工
程は並列で処理するため、高速演算に適しているのが特
徴である。 m×n ビットの乗算回路では(m+n-1)個のND
を用いる。NDへ入力される最大の入力数はMin(m,n)とな
る。図6に示すように 8×8 ビット乗算器の例では、こ
のNDを15個用いる。最大の入力数は8 である(X7Y0+X6Y
1+X5Y2+X4Y3+X3Y4+X2Y5+X1Y6+X0Y7 なる演算を行ってい
るところ)。
【0056】ただし、これは、1入力1出力という、そ
のまま配線を延ばせば済むところもNDを用いた場合の数
であり、それを除くと(m+n-3 )個のNDを用いる。さら
に2入力2 出力のHAですむところを除き(HAもNDの一種
であるがここでは区別する)、3 入力以上の場合にのみ
NDを用いることにすると(m+n-5 )個のNDで良い。
【0057】通常、3入力以上であると加算演算も複雑
になり、特にキャリーが発生するためその伝搬により演
算速度が遅くなる。本実施形態は一括加算を行いキャリ
ーの無い演算を行うことに特徴があり、高速化が可能と
なる。図8は図6をブロック図で示した。簡単化のため
部分積形成部は入力部として省略している。部分積形成
部はANDでもよい。ここではNDを1つの箱で表してい
る。
【0058】次いで、バイナリーモードで表わされた(m
+n-1) 個の加算結果を全て加算する第2の加算工程を行
うことにより、所望の乗算結果Q が高速に得られる。
【0059】更に加算回数を減じるために、実施形態2
と同様に、次の演算方式を導入する。すなわち、それぞ
れ(m+n-1 )個のNDから出力される加算結果は最大〔Lo
g2(Min(m,n))〕ビットであるので、最終的な乗算結果Q
の(m+n)ビットのうち、ほんの1部の桁しか各々使用し
ていない。図6の例ではNDからの出力は、最大4ビット
であり、一方最終的な乗算結果は16ビットである。従っ
て(m+n-1 )個のNDから出力される加算結果のうち、桁
が重ならない加算結果をまとめて1つの(m+n)ビット
データ列とすることができる。
【0060】以上のことを図6の例で説明する。楕円で
囲まれた桁のNDからの加算結果は、お互いに重なる桁が
存在しないため、まとめて16ビットデータ列B とするこ
とができる。(NDからの加算結果4 つをまとめている
が、それでも値が存在しない桁は0とする。この例では
2〜4桁及び8 、12、15、16桁は0である。)この処理
はアルゴリズム上は1つのステップであるが、回路内の
処理としては配線を引き回しているのみで演算は全く行
っていない点が重要である。
【0061】このステップで、(m+n-1 )個の加算結果
を、〔Log2(Min(m,n))〕個の(m+n)ビットデータ列と
変換することができる。遅延時間は、他のステップに比
べて無視できるほど小さい。最後に〔Log2(Min(m,n))〕
個の(m+n )ビットデータ列を加算すれば、最終的な演
算結果が得られる。
【0062】図6、8の例では、4個の16ビットデータ
であるから、図9のように、わずか2段の全加算器通過
で最終積が求められる。一般に、全加算器通過段数は、
実施形態2と同一の記号を用いて、
【0063】
【外6】 で表わせる。
【0064】図10は、横軸にMin(m,n)を、縦軸に全加算
器通過段数をとったグラフである。このグラフに示すよ
うに、m,n が大きくなっても、全加算器の通過段数は、
2度log をとるため、小さく抑えられている。即ち多ビ
ット化しても高速性が保たれる。
【0065】以上の演算方法のフローチャートを図11に
示す。
【0066】先ず、ステップs111で、AND 回路もしくは
スイッチ等により、 X×Yjという部分積を生成する。次
に、ステップs112で、NDにより、生成された部分積 X×
Yjのそれぞれの桁同士を一括して、並列に加算する。続
いて、ステップs113で、ステップs112の加算結果のうち
で桁の重なりのない項をまとめて1つのデータとする。
但し、上述したように、このステップに対応する装置の
動作はなく、ND出力と後段の全加算器の入力との接続関
係によってなされるものである。最後にステップs114
で、ステップs113でまとめられたデータを全加算器によ
り加算する。
【0067】次いで、今回使用したNDをはじめ、上記演
算方法を実行する実際の乗算回路について、図12を用い
て説明する。被乗数入力部71は被乗数X を入力する。乗
数入力部72は乗数Y を入力する。部分積生成部73は、AN
D 回路もしくは図7で示したようなスイッチ部等であ
り、部分積を生成する。前述したように、その他の構成
の回路で部分積を生成してもよい。ND74は、複数の多ビ
ットデータ(ここでは各部分積)の同じ桁を一括並列加
算を行う。
【0068】図13は、7入力のNDを表した模式図であ
る。ここでは、実施形態1のものとは異なる構成のもの
を用いており、多数決論理回路ブロック131-A 、131-B
、131-C 、インバータ132 を有する。端子134 、135
にも、入力端子133 に入力される信号と同様の信号が入
力される。端子136 、137 、138 は、前段の多数決論理
回路ブロックからの出力信号を入力する端子であり、図
中、2C、4Cは、通常の入力端子に接続された容量をC と
したときに、入力端子136 、137 、138 に対応して接続
される容量値を示している。同図において、信号はそれ
ぞれ多数決論理回路ブロック131-A 、131-B 、131-C に
入力される。
【0069】例えば、7入力の多数決論理回路ブロック
131-A に入力されると、HIGH LEVELの数が過半数の場
合、つまり7入力中4入力以上がHIGH LEVELであった場
合、多数決論理回路ブロック131-A からはHIGH LEVELが
出力される。同様に、例えば11入力の多数決論理回路
ブロックでは、6入力以上がHIGH LEVELであった場合、
13入力の多数決論理回路ブロックでは、7入力以上が
HIGH LEVELであった場合に、それぞれHIGH LEVELが出力
される。7入力の多数決論理回路ブロックの出力値を入
力のHIGH LEVELの数ごとに示すと、表1のS3のようにな
る。
【0070】次に、図13に示すように、7入力の多数決
論理回路ブロック131-A の出力をインバータで極性反転
して、多数決論理回路ブロック131-B の重みづけ入力端
子136 に印加する。多数決論理回路ブロック131-B の回
路構成を図14に示す。同図において、キャパシタ212
は、他の入力端子経路に接続するキャパシタ202 のおよ
そ4倍の容量値を持つ。同回路は入力端子経路に接続す
るキャパシタ値を仮にCとすると、11個のC が共通接続
されそのうち4つのC に重み付け入力端子からの信号が
印加され他の7つの端子には131-A に入力されたものと
同じ信号が印加される構成の11入力多数決論理回路で
ある。
【0071】例えば7入力中4入力以上がHIGH LEVELで
あった場合、先に述べたように重み付け入力端子にはLO
W LEVEL が印加される。さらに重み付け入力端子以外の
入力端子に加えられる信号のうち7入力中6入力以上が
HIGH LEVELであった場合、トータルとして11入力多数
決論理回路は過半数であるとの判定を下しHIGH L
EVELを出力する。7入力中4入力以上5入力以下の
場合は過半数に至らずLOW LEVELを出力する。
一方、7入力中3入力以下がHIGH LEVELであった場合に
は重み付け入力端子にはHIGH LEVELが印加される。7入
力中2入力以上3入力以下がHIGH LEVELであった場合
は、4+2 または4+3 となり6以上であるので、過半数と
判定されてHIGH LEVELが出力される。1入力以下がHIGH
LEVELであった場合は、4+0 または4+1 となり5以下で
あるのでLOW LEVEL が出力される。
【0072】多数決論理回路ブロック131-B の出力値を
入力のHIGH LEVELの数ごとに示すと、表1のS2のように
なる。多数決論理回路ブロック131-C についても4倍の
容量値、2倍の容量値を有する二つの重み付け端子に、
多数決論理回路131-A 、多数決論理回路131-B の出力の
反転信号を印加して動作させることにより、表1のS1に
示したような出力が得られる。
【0073】本回路構成により、表1に示したように複
数入力のうちハイレベル入力の数を3桁の2進数に変換
して出力することができる。
【0074】図15に多数決論理回路ブロックの模式回路
図を示す。この多数決論理回路ブロックは、リセットス
イッチ201 、キャパシタ202 、信号転送スイッチ203 、
センスアンプ205 、センスアンプ内のインバータ206 、
センスアンプ内の第二のインバータ204 、インバータ20
6 をリセットするための第2のリセットスイッチ207、
リセット電源208 、第二のリセット電源210 、出力端子
211 、キャパシタ 202の共通接続された一端につく寄生
容量209 を備える。図15は、これを模式的に表わしたも
のであるがこれに限るものではない。
【0075】図16は、図15の回路の動作タイミング説明
図である。同図を用いてその動作を説明すると、まずリ
セットパルスφRES により、キャパシタ202 の一端をリ
セットする。リセット電圧は、例えば電源電圧が5V系で
あった場合、そのほぼ半分の2.5Vを用いる。リセット電
圧はこれに限るものではなく、他の電圧でも良い。この
時ほぼ同時に、センスアンプ内のインバータ206 の入力
端を、リセットスイッチ207 を導通させることによりリ
セットする。この時リセット電圧は、インバータの出力
が反転する論理反転電圧近傍の値が選ばれる。リセット
パルスφRES をOFF すると、キャパシタ 202の両端はそ
れぞれのリセット電位に保持される。
【0076】次に転送パルスφT により転送スイッチ20
3 が導通すると、信号がキャパシタ202の一端に転送さ
れ、キャパシタの一端の電位は、例えば2.5Vのリセット
電圧から、LOW LEVEL に相当する0V、もしくはHIGH LEV
ELに相当する5Vに変化する。ここでキャパシタ 202の容
量をC 、寄生容量の容量値をCoとし、キャパシタ 202が
N 個並列に接続されていると仮定すると、キャパシタ20
2 の共通接続された一端は、一個の入力に対して、容量
分割により、インバータの論理反転電圧近傍から±〔2.
5C/(C0+CN)〕×|V| だけ変化する。
【0077】インバータ 206の入力端電圧が論理反転電
圧から変化すると、インバータ 206の出力端電圧はそれ
に応じて反転する。N 個の入力にそれぞれ信号が入力さ
れると、インバータ 206の入力端には容量分割出力のN
個の和が入力される。結局、N 個の入力のうちHIGH LEV
ELの信号数が過半数であれば、インバータ 206の入力端
は論理反転電圧より高電位にシフトして、センスアンプ
の出力端211 にはHIGHLEVELが出力される。一方、LOW L
EVEL の信号数が過半数であれば、LOW LEVELが出力され
る。以上の様に構成することで、図15の回路は、複数入
力のうち過半数を占める論理値を出力する多数決論理回
路として機能する。
【0078】図13では、一例として7入力のNDを示して
いるが、もちろんこれに限るものではなく、さらに多入
力に容易に拡張できる。また多数決論理回路と多数決論
理回路の間にラッチ回路等をいれてパイプライン処理を
行ない、更に高速化する構成をとることも自由にでき
る。
【0079】NDが必要とする多数決論理回路ブロックの
数は、NDへの入力数n に対して〔Log2n〕 で表わせる。
一方、NDへの入力数はm ×n ビットの乗算器では、1 か
らMin(m,n)までの値をとるが、演算時間は、明らかに入
力数が最大となるMin(m,n)入力のNDが最も長い。これ
は、多数決論理回路の段数が入力数n に対して〔Log
2n〕 で増加していくからである。しかしながら、ビッ
ト数が増えてもこの段数はLog 関数で増加するため、大
きくは増大しないのは明らかである。
【0080】並列演算であるので、入力数最大であるMi
n(m,n)入力のNDの演算速度で、複数のND74での演算が終
了する。早めに演算が終了するNDについては、ラッチ回
路78等を設けて、タイミングを揃えると好ましいが、特
にそれに限定されない。
【0081】このようにNDを構成すると、並列演算であ
るので高速で、且つ素子数も少なく低消費電力化が可能
なNDが形成でき、前述の実施形態の演算方法の特性を、
大きく改善することができる。
【0082】次に、アルゴリズム上では、複数のNDから
出力されたデータを1つのデータ列にまとめるステップ
があるが、回路的には特に何も処理しないのは既に述べ
たとおりであり、図12には、特にこのステップに対応す
る回路は存在しない。全加算器75、76、77は、図6で示
した 8×8 ビットの乗算の例では、16ビット以下の加算
器となる。この図12では、 8×8 ビットの乗算器なの
で、3つの加算器が必要であり、段数は2段である。こ
こでは、加算器として通常のCLA(Carry Look Ahead) 型
の全加算器を用いたが、これに限定されないことは言う
までもない。
【0083】また、ここでは、加算器と加算器の間にラ
ッチ回路79を設けて、2段目の加算器が演算している間
に初段の加算器にも演算を行わせる、いわゆるパイプラ
イン方式をとって高速化しているが、この方式に限定さ
れるものではない。演算結果出力部80は、演算結果を、
ここでは 8×8 ビットの乗算の例であるので、16ビット
で出力する。
【0084】以上のように乗算回路を構成することで、
素子数が少なく、消費電力が少ない、且つ並列演算のた
め高速な乗算器が形成できる。
【0085】(実施形態4)実施形態1−3の並列一括
加算を行うND部の他の構成について説明する。
【0086】図17に、本実施形態に用いるNDの模式図を
示し、並列演算回路ブロック401 、ラッチ回路12を有す
る。図18に並列演算回路ブロック401 の回路図を示す。
同図において端子501 、502 、503 は第1、第2、第3
の重み付け入力端子である。各端子には他の入力端子経
路に接続するキャパシタ2 のおよそ1倍、2倍、3倍の
容量値を持ったキャパシタが設けられている。本実施形
態の動作タイミング図を図19に示す。並列演算回路ブロ
ック401 は、パルスφRES 、φT によって動作する。ラ
ッチ回路12は、パルスφPHによって動作する。
【0087】初めに、図18を用いて基本動作を説明する
と、まず、入力信号がラッチ回路12-Aにラッチされる。
この時パルスφSET により、重み付け端子501 、502 に
はLOW LEVEL に相当する0Vが、503 にはHIGH LEVELに相
当する5Vが印加される。次にリセットパルスφRES によ
って、キャパシタ202 の両端の電圧は、それぞれのリセ
ット電圧にリセットされる。
【0088】次に、転送パルスφT により転送スイッチ
203 が導通すると、信号がキャパシタ 202の1端に転送
され、キャパシタの1端の電位は例えばLOW LEVEL 、も
しくはHIGH LEVELに変化する。キャパシタ 202の共通接
続された1端は入力に対して容量分割によって変化す
る。インバータ 206の入力端電圧が論理反転電圧から変
化すると、インバータ 206の出力端電圧はそれに応じて
反転する。N 個の入力にそれぞれ信号が入力されると、
インバータ 206の入力端には、容量分割出力のN個の和
が入力される。
【0089】本実施形態では、3倍の容量値を持つ重み
付け端子503 と、1倍および2倍の容量値を持つ重み付
け端子501 、502 とに、反対極性の信号が印加されるた
め、キャパシタ 2の共通接続された1端での電圧変化量
が、相互に打ち消される。重み付け入力端子以外の各入
力に設けられたキャパシタ 2は、ほぼ同じ容量値を有し
ているので、結局、N 個の入力のうち、HIGH LEVELの信
号数が過半数であれば、インバータ 206の入力端は、論
理反転電圧より高電位にシフトして、センスアンプの出
力端211 にはHIGH LEVELが出力される。一方、LOW LEVE
L の信号数が過半数であれば、LOW LEVEL が出力され
る。
【0090】以上の様に構成することで、図18の回路
は、複数入力のうち過半数を占める論理値を出力する多
数決論理回路として機能する。図17は、1例として7入
力のNDを示している。
【0091】同図において、信号はそれぞれ多数決回路
ブロック401 に入力される。多数決論理回路ブロック40
1 は、入力端子経路に接続するキャパシタ値を仮にC と
すると、13個のC が共通接続され、そのうち3つのC に
重み付け入力端子からHIGH LEVELの信号が印加され、別
の3つのC に重み付け入力端子からLOW LEVEL の信号が
印加され、他の7つの端子には402 からの信号が印加さ
れる構成の、13 入力多数決論理回路と見ることができ
る。
【0092】よって、入力値が入力されると、HIGH LEV
ELの数が過半数の場合、つまり、7入力中4入力以上が
HIGH LEVELであった場合、多数決論理回路ブロックから
HIGHLEVELが出力される。13入力の多数決論理回路ブロ
ックの出力値を入力のHIGH LEVELの数ごとに示すと、表
1のS3のようになる。次にパルスφLAT1、φLAT2によっ
て、出力信号はラッチ回路12にラッチされる。例えば、
7入力中4入力以上がHIGH LEVELであった場合、重み付
け入力端子501 にはHIGH LEVELが、502 、503にはLOW L
EVEL が、それぞれ印加される。
【0093】更に、重み付け入力端子以外の入力端子に
加えられる信号において、7入力中6入力以上がHIGH L
EVELであった場合、トータルとして13入力多数決論理
回路は過半数であるとの判定を下し、HIGH LEVELを出力
する。7入力中4入力以上5入力以下の場合は、過半数
に至らずLOW LEVEL を出力する。同様に、重み付け端子
に印加する信号を、出力信号の極性およびスイッチ403
の切り替えにより変えることで、表1に示すような出力
を得ることができる。
【0094】本回路構成により、表1に示すように、複
数入力のうちハイレベル信号の入力の数を、3桁の2進
数に変換して出力することが、非常に小規模な回路で、
かつ低消費電力できるものである。後は、実施形態3と
同様であるが、以上のように構成することで、素子数が
さらに少なく、小規模で消費電力が少なく、且つ並列演
算のために高速な半導体装置が形成できる。
【0095】(実施形態5)実施形態1−4の並列一括
加算を行うND部の他の構成について説明する。
【0096】実施形態3 の15個のNDを複数個まとめてし
まい、演算を行う方式である。
【0097】図20に、 2×2 乗算器に用いる 2×2 多数
決論理回路を基にその例を示す。即ち、実施形態3の図
13の初段の多数決論理回路である。1桁目(20の桁であ
るx0y0)は単位容量Cに入力される。2 桁目(21の桁で
あるx1y0及びx0y1)の2つはそれぞれ2倍の容量2Cを
持つ端子に入力されるため、1入力で2カウントされる
ことになる。さらに3 桁目(22の桁であるx1y1)は22の
重み付けがなされ、1入力で4カウントされる。
【0098】後は実施形態1-4 と同様で、4入力である
が最高7までがバイナリーモードで出力されるNDとな
る。この重み付けを行うことにより、並列一括加算機能
が更に効率よく行える。
【0099】例えば実施形態3 の 8×8 ビットの乗算器
で言えば、図21に示すように、桁の重みが0,1,2,3 であ
る桁を加算するNDをND911つにまとめ、同様に桁の重み
が(4,5,6),(7,8,9),(10,11,12,13,14)である領域をそれ
ぞれ1つにまとめることができる( 図中のND92-ND94
)。
【0100】図21のNDには、それぞれ何入力で何出力で
あるかが数字で示してあるが、最高で56入力をカウント
できるNDを用いればよい。それぞれ全て6ビットの出力
となる。その6ビットデータ列を桁の小さい順にA,B,C,
D とすると、実施形態3の図11のフローチャートにおけ
るステップS113である新たなデータ列を形成するステッ
プにおいて、A とC 、B とD を、それぞれ1つのデータ
列P,Q としてまとめることができる。
【0101】従って、加算演算はP+Q のみを行えばよ
い。すなわち、この実施形態では、並列一括加算をNDで
行うステップと、16ビット加算を1度だけ行うステップ
の2つのステップで、 8×8 ビットの乗算器演算が実行
される。
【0102】後は実施形態3 もしくは実施形態4 と同様
であるが、以上のように乗算回路を構成することで、素
子数がさらに少なく、小規模で消費電力が少ない、且つ
並列演算であり、加算段数が少なくさらに高速な乗算器
が形成できる。
【0103】本実施形態では、一般的な重み付けの例と
して、連続した桁をまとめる例で説明したが、特にこれ
に限定されるわけでなく、重み付けが連続でない場合や
(例えば20の桁と22の桁を合わせて入力する場合)、1
つの桁を分割してそれぞれ別のNDに異なる重み付けで入
力したりして(例えば28の桁を二つに分割して別のNDに
入力する等)、効率化を図ることも自由にできる。
【0104】(実施形態6)実施形態3−5では、部分
積を並列加算するNDが1段あり、その後段に全加算器が
あるが、NDの後にさらにNDを接続してもよい。図22で32
×32ビット乗算器の例で説明する。32入力ND付近の図で
ある。32入力NDは7 ビット出力である。下位ビットは16
-31 入力NDまで6 ビット出力であって、この出力はNDに
よる演算結果としての部分積とみなすこともできる。
【0105】従って、再びNDを用いて各々3 ビットの出
力とすることができる。ここまで来るとデータ列として
は、3つの64ビットデータA、B、Cとなり、全加算段
数としては高々2段でよい。加算器とNDの性能にもよる
が、特にビット数が多くなる場合には有効である。また
実施形態5で示したような重みづけNDと組み合せて使用
しても、何ら問題がない。
【0106】(実施形態7)図23に、本実施形態の乗算
器を示す。本実施形態では、実施形態3の図6におい
て、ND出力であるS73,S72,S71,S70 とS102,S101,S100を
先に加算する。実際はS73 をS102,S101,S100に加えれば
よく、単純な3ビット加算器でよい。
【0107】このステップの結果として、実施形態3で
は4つの16ビットデータ列が形成されていたものが、
本実施形態では、3つの16ビットデータ列A、B、C
が形成されることになり、実施形態3と比較すると、更
に素子数が軽減される。
【0108】(実施形態8)実施形態8では、3個のデ
ータの乗算演算の演算方法を示す。簡単な例として、2
ビットデータで説明するが、多ビットで且つ各データの
ビット数が異なっていても同様に実現でき、また3個に
限ることなく、任意の複数個のデータに拡張できる。
【0109】乗算数をA(a1 a0),B(b1 b0),C(c1 c0)とす
る。A ×B ×C を行うが、図24に示すように、Σaibjck
なる部分積が生じ、それらの和をとれば、乗算結果Q が
得られる。Σaibjckなる部分積形成には、これまでの実
施形態と同様に、それぞれのAND をとればよい。3個以
上のデータになってもこの部分積の演算速度は速く、並
列処理により部分積が形成できる。
【0110】次いで、この部分積の同じ桁同士の一括加
算を行う。図24の例では、各同じ桁同士をそれぞれ一括
加算行っているが、これまでの実施形態で述べたよう
に、重みづけを行ったり、その他のステップを交えても
構わないことはいうまでもない。続いて図24では、楕円
で囲まれた桁の一括加算出力結果を、重なり桁が無いこ
とから1つのデータ列として、結局3個の7ビットデー
タ列とし、それらを足し合わせて3個の3ビットデータ
の乗算演算結果Q を得る。
【0111】詳細には、7ビットデータ列のうち、下2
桁(20,21の桁)は加算の必要が無く、それぞれS00,S10
がそのまま出力結果である。従って、2ステップ目の加
算工程は、3個の5 ビットデータ列を加算する工程とな
り、高速な演算が行える。
【0112】このように、3個以上のデータ列の乗算に
おいても、本発明の演算方法は効果があり、高速な乗算
演算が、素子数も少なくその結果低消費電力化に対応で
き形成することができた。
【0113】(実施形態9)本実施形態では、少なくと
も1つの負数を含む複数の多ビットデータの加算方法に
ついて、7ビットデータ列63個を加算する演算を例と
して説明する。
【0114】ここで、負の数は、2の補数で表現されて
いる。即ち、7bit の内の最上位ビット0は符号(sign)
を表し、0ならば正の数、1ならば負の数であり、デー
タ列X=(X6X5X4X3X2X1X0)は
【0115】
【外7】
【0116】図25は、本実施形態を表す図である。こ
こでは、8ビットのデータ列を7個加算するために、ま
ず7個の8ビットデータ列をそれぞれ桁ごとに一括加算
する。この第1の加算は前述した実施形態と同様、ND
を用いて行なわれる。本実施形態では、データ列がフラ
グも含めて7ビットであるから7個のNDを用いる。
【0117】この加算工程は並列で処理するため、演算
速度は単体のND自体の速度で決定される。演算速度は全
て同じであるから1つのNDの演算速度で決定される。ま
た、ここでは63個の7ビットデータ列を加算するた
め、NDへの最大の入力数は、63個となる。
【0118】通常の加算演算では、キャリーが発生する
ため、そのキャリー伝搬により演算速度が遅くなるのに
対し、本実施形態では、フラグも含めて一括加算を行い
キャリーの無い加算演算を並列処理で行うので、加算段
数を減じることができ、高速化が可能となる。本実施形
態では、全て7ビットのデータ列63個を例として示し
たが、これに限定されることなく、少なくとも1つの負
数を含む複数個の多ビットデータのビット数が各々異な
っていても構わない。
【0119】次いでバイナリーモードで表わされた8個
の加算結果を全て加算する、第2の加算工程を行うこと
により所望の加算結果Q が高速に得られる。
【0120】ここで、正または負を示すフラグビットに
ついて説明する。
【0121】フラグビットが1の時、2の補数表現であ
るから、(-1)・26 を示す。従って、63個のうち1の数
がn個ならば、数としては-n・26 を表す。最小値はnが
63の時で、その時、-63・26 = -(26-1)・26 となり、絶
対値において 212を越えない。そこで、この負の数を2
の補数として、13ビット目をフラグとして用い、nの
2進表示を(SF5,SF4,SF3,SF2,SF1,SF0) 、その反転を(B
SF6,BSF5, …,BSF0)とすると、
【0122】
【外8】 A−|F| = A+ F (|F| + F = 0 , 13ビット目が 1+1
で0になり14ビット目はない)となるので、Fを加算す
ればよい。
【0123】図25では、operandsのフラグビットをND
で2進表示SFにし、その反転をとることで、 BSFを生成
する。更に、マイナスを表すフラグデータの2の補数表
示のための1を、7ビット目、13ビット目に加えるこ
とにより、Fが形成できる。
【0124】次いで、バイナリーモードで表わされた7
個の加算結果を全て加算する第2の加算工程を行なうこ
とにより、所望の加算結果Q が高速に得られる。
【0125】フラグビットも数値を表すビットと同様に
扱えることは上記に示した通りであり、少なくとも1つ
の負数を含む63個の7ビットデータが、NDを通すこと
により、7つの6ビットデータに変換される。フラグに
対しての2の補数変換のための7ビット目と13ビット
目の1は、例えば、図25の(b) に示すように、それぞ
れSon、 BSFのデータ列に加えれば、演算を行なうこと
なくとり込むことができる。
【0126】この方法で13ビット目をフラグとして用
いることができ、
【0127】
【外9】 上述の計算を数値的に記述すると、Xijが i個目のデー
タ列の (j+1)ビット目を表すとして、
【0128】
【外10】 従って、 out≧0 の時は、上式より、
【0129】
【外11】 すなわち、13ビット目は1が加わり0となる。
【0130】一方、 out<0の時は、
【0131】
【外12】 13ビット目は1のままであり、負の数である。
【0132】一般化すると、mビット目がフラグビット
であり、n個あるoperandsをNDを用いて加算(減算)演
算するには、 m+〔log2n〕目に1を立て、mビット目に
1を加える2の補数化を行なえば、フラグビット以外の
他の数値ビットと同等にフラグビットを扱え、演算が容
易に行なえる。
【0133】(実施形態10)本実施形態では、実施形
態9の加算を更に高速化するために、第2の加算工程を
高速化した例を示す。
【0134】図26は、本実施形態の加算器の構成を示
している。同図はフラグ込みで8ビットのデータ7個を
加算する例であり、NDから得られた各3ビットの出力デ
ータのうち、桁が重ならない加算結果をまとめて1つの
11ビットデータ列とすることができる。以上のことを図
26の例で説明する。フラグビットに関しては、実施形
態9で示したように、2の補数として考え、NDの出力
をインバータを通している。更に1を加えるために、3
ビットの出力データと、0001で表されるデータとを全加
算器で加算するが、これに限るものではない。また、実
施形態9と同様、(a) で示されるMSBの1が存在す
る。
【0135】同図において、楕円の枠で囲まれた桁の3
ビットもしくは4ビットの出力データは、お互いに重な
る桁が存在しないため、まとめて11ビットデータ列 Aと
することができる。(加算結果3つをまとめても値の存
在しない桁があるが、そこは0とする。この例では1 桁
目は0である。)この処理はアルゴリズム上は1つのス
テップであるが、回路内の処理としては配線を引き回し
ているのみで、演算は全く行っていない点が重要であ
る。
【0136】このステップで、8 個の加算結果を3 個の
11ビットデータ列と変換することができる。遅延時間
は、他のステップに比べて無視できるほど小さい。最後
に3 個の11ビットデータ列を加算すれば最終的な演算結
果が得られる。図26の例では3個の11ビットデータであ
るから、図5に示すように、わずか2段の全加算器通過
で最終加算結果が求められ、複数の多ビットデータを高
速に加算演算が行える。
【0137】最大n ビットデータ列をm 個加算する一般
的な場合に拡張して説明する。n 個のNDから出力される
加算結果は、最大〔Log2m〕 ビットであり、最大でも
〔Log2m〕 個の(n+〔Log2m〕-1)ビットデータ列へ変換
することができる。最後に〔Log2m〕 個の(n+〔Log
2m〕-1)ビットデータ列を加算すれば最終的な演算結果
が得られる。全加算器通過段数は、
【0138】
【外13】 で表わせる。上式より、多ビットデータの数が増大して
も全加算器通過段数は低く抑えられることがわかる。
【0139】また、フラグビットのところで小さな全加
算器を通しているが、これを1段とすると、
【0140】
【外14】 となる。一方、そこに全加算器を持たせずに、フラグビ
ットをlとした時、lビットのみが1となるデータ列を
最後に加算すると考えると、データ列は 〔Log2m〕+1
個あると考えられるので、全加算器通過段数は、
【0141】
【外15】 で表せる。いずれにせよ、ビット数が増えても、全加算
器通過段数は低く抑えられることがわかる。
【0142】(実施形態11)本実施形態では、少なく
とも1つ以上の負数を含む複数の多ビットデータの加算
方法について、7ビットデータ列63個を加算する演算
を例として説明する。
【0143】ここで、負の数は1の補数で表されてい
る。1の補数は、数値ビットに関して単に反転をとれば
よいため、前処理を簡素化しやすいというメリットがあ
る。
【0144】図27は、本実施形態を表す図である。こ
こでは、7ビットのデータ列を63個加算するために、
まず63個の7ビットデータ列をそれぞれ桁ごとに一括
加算する。この加算は63入力6出力のNDで行なう。
【0145】本実施形態では、この加算工程を並列に処
理するため、演算速度は各NDの演算速度で決定される。
本実施形態では、データ列が7ビットであるから7個の
NDを用いる。また、63個の7ビットデータ列加算を行
う演算のため、NDへ入力される入力数は63個となる。
【0146】通常の加算演算では、キャリーが発生する
ため、そのキャリー伝搬により演算速度が遅くなる。こ
れに対し、本実施形態では、一括加算を行いキャリーの
無い加算演算を並列に行うことに特徴があり、加算段数
が減じられ、高速化が可能となる。本実施形態では、全
て7ビットのデータ列63個を加算する例を示したが、
これに限定されず、少なくとも1つ以上の負数を含む複
数個の多ビットデータのビット数が各々異なっていても
構わない。
【0147】次いで、バイナリーモードで表わされた8
個の加算結果を全て加算する第2の加算工程を行うこと
により、所望の加算結果Q が高速に得られる。
【0148】なお、フラグビットに関しては、実施形態
9と同様であるが、1の補数を2の補数に変えるため
に、フラグの数(負のデータ列の数)だけ加算する必要
がある。それが(SF5,SF4,SF3,SF2,SF1,SF0) で表される
データで、図中(a) で示されている。これもNDよりの出
力であり、その反転をインバータで形成し、データ列BS
F を形成している。(b) はマイナスを示すフラグデータ
の1の補数表示のための1である。このNDとしては、図
13あるいは図17につき説明したものを利用できる。
【0149】(実施形態12)本実施形態は、実施形態
10の8個のNDを複数個まとめてしまい、演算を行なう
ものである。図28に、X(X1X0で表す)+Y(Y1Y0
表す)の2ビット加算器の例を、多数決論理回路をもと
に説明する。
【0150】1桁目X0、Y0は単位容量Cに入力される。
そして2桁目X1、Y1の2つは、各々2倍の容量2Cを持
つ端子に入力されるため、1入力で2カウントされる。
【0151】例えば実施形態10の場合、図29に示す
ように、桁の重みが0,1,2である桁を加算するNDを
1つのND91にまとめ、同様に桁の重みが3,4,5で
ある領域を1つのND92にまとめることができる。図2
9のNDには入力数および出力数が数字で示してあるが、
最高で21入力を最大49までカウントできるNDを用い
ればよい。それぞれ6ビットの出力となる。ND91で
は、0桁目が単位容量Cに入力され、1桁目は2C、2
桁目は22 =4Cに入力される。
【0152】また、フラグビット(8ビット目)と数値
ビット(7ビット目、MSB(mostsignificant bit))
とを合わせることが可能である。図29では、フラグビ
ットはインバータを通してND93に入力する。前述の実
施形態では、ND通過後にインバータを通して反転させた
が、どちらでも構わない。但し本実施形態によれば、ND
の総容量は、(2n-1)C(nは整数)とする。
【0153】更に、2の補数用の(00010) を加え、重み
付けとして2Cの容量へ入力する。一方、数値ビットはC
の容量へ入力する。図29に示すように、各出力と2の
補数用の11ビット目の1を加え、データ列としては一
気に2つ減少させられるため、2つのデータ列を加算す
ればよい。重み付けを利用することにより、更に処理が
並列化され、高速化、必要な素子数やパワーの低減に寄
与する。
【0154】本実施形態では、一般的な重み付けの例と
して、連続した桁をまとめる例を中心に説明したが、こ
れに限定されることなく、重み付けが連続でない場合
(例えば、20の桁と22の桁とを合わせて入力する場
合)、1つの桁を分割してそれぞれ別のNDに異なる重み
付けで入力したりして、効率化を図ることも自由にでき
る。
【0155】(実施形態13)本実施形態では、複数の
多ビットデータの加算方法について、8ビットデータ列
7個を加算する演算を例として説明する。
【0156】図30は、本実施形態を表す図である。こ
こでは、8ビットのデータ列を7個加算するために、ま
ず7個の8ビットデータ列をそれぞれ桁ごとに一括加算
する。この加算はNDで実行する。
【0157】第2実施形態と同様、この加算工程の演算
速度は1つのNDの演算速度で決定され、8個のNDを用
い、NDへ入力される最大の入力数は7個となる。また、
キャリーの無い加算演算を並列処理で行うことで高速化
が可能となり、複数個の多ビットデータのビット数が各
々異なっていても構わないのも上述実施形態と同様であ
る。次いで、バイナリーモードで表わされた8個の加算
結果を全て加算する第2の加算工程を行うことにより、
所望の加算結果Q が高速に得られる。
【0158】この加算工程を行なうにあたって、全てを
単純に足し合わせるのではなく、複数のデータを1つの
データにまとめあげることで、更に効率化を図ることが
できる。そのために、図30で一括加算した結果のMSB
に注目すると、各々Si2(0≦i≦7)であるが、どのデ
ータもお互いに重なることなく、データ列
【0159】
【外16】 と表せる。各々次の桁も、LSB (least significant bi
t) も同様に1つのデータ列となる。これらのデータ列
を形成するステップは演算を要さない。
【0160】上述のステップを一般化する。3桁目であ
るI4(I=T,U,・・・,Z) を一括加算すると、S30,S31,S32 と
いう3つのデータが生じるが、各々桁としては、3+0,3+
1,3+2 である。m桁目(m≦1)を一括加算すると、 m+n
(〔Log2(IN)〕 ≧n ≧0, IN はデータ数、ここではIN=7
であるから 2≧ n≧0)の桁にデータが生じる。m'(m'≠
m)桁目を一括加算すると、同様にm'+n桁目にデータが生
じる。 m+n≠m'+nであるから、これらのデータの桁は重
ならない。よって演算なしで1つのデータとすることが
できる。この効率化により、図30の例では、3つのデ
ータA、B、Cにまとめることができる。この処理はア
ルゴリズム上は1つのステップであるが、回路内の処理
としては配線を引き回しているのみで、演算は全く行っ
ていないのは実施形態2と同様である。
【0161】このステップで、8 個の加算結果を3 個の
8ビットデータ列と変換することができる。遅延時間
は、他のステップに比べて無視できるほど小さい。最後
に3 個の8ビットデータ列を加算すれば最終的な演算結
果が得られる。図30の例では3個の8ビットデータであ
るから、図5に示したような、わずか2段の全加算器通
過で最終加算結果が求められ、複数の多ビットデータが
高速に加算できる。
【0162】最大n ビットデータ列をm 個加算する一般
的な場合に拡張して説明する。n 個のNDから出力される
加算結果は、最大〔Log2m〕 ビットであり、〔Log2m〕
個のデータ列へ変換することができる。最後に〔Log
2m〕 個のデータ列を加算すれば最終的な演算結果が得
られる。全加算器通過段数は、
【0163】
【外17】 で表わせる。上式より、多ビットデータの数が増大して
も全加算器通過段数は低く抑えられることがわかる。な
お、この効率化は2つ以上のデータであれば適用できる
ことは明らかである。
【0164】(実施形態14)本実施形態では、図31
につき、多ビットデータ同士の乗算について説明する。
以下、 8×8 ビット乗算器を例にとって説明するが、こ
れは、一般の m×n ビットの乗算に拡張できる。
【0165】被乗数をX(X7 X6 X5 X4 X3 X2 X1 X0)、乗
数をY(Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0)として、 X×Y= Qとす
る。実施形態3で説明したように、 Qは最大 16 ビット
で表わせる。 m×n ビットでは、Q は最大m+n ビットで
ある。
【0166】まず、図31に示すように、 X×Yjという部
分積を生成する。そのために、通常の CMOS 乗算器の様
に、被乗数であるX の各ビットXiと乗数であるYjとの A
NDをとって部分積を求める。他の方法、例えば実施形態
3で説明した方法等でも構わない。
【0167】次いで、図31で示された部分積の各桁の和
をそれぞれ桁ごとにNDにより一括加算する。この加算工
程は並列で処理するため、高速演算に適している。 m×
n ビットの乗算回路では(m+n-1 )個のNDを用いる。ND
へ入力される最大の入力数はMin(m,n)となる。図31に示
すような 8×8 ビット乗算器の例では、このNDを15個用
いる。最大の入力数は8 である(X7Y0+X6Y1+X5Y2+X4Y3+
X3Y4+X2Y5+X1Y6+X0Y7なる演算を行っているところ)。
【0168】ただし、これは、1入力1出力という、そ
のまま配線を延ばせば済むところもNDを用いた場合の数
であり、それを除くと(m+n-3 )個のNDを用いる。さら
に2入力2 出力のHAで済むところを除き、3 入力以上の
場合にのみNDを用いることにすると(m+n-5 )個のNDで
良い。
【0169】通常、3入力以上であると加算演算も複雑
になり、特にキャリーが発生するためその伝搬により演
算速度が遅くなる。本実施形態は一括加算を行いキャリ
ーの無い演算を行うことで高速化が可能となる。
【0170】次いでバイナリーモードで表わされた(m+n
-1) 個の加算結果を全て加算する、第2の加算工程を行
うことにより所望の乗算結果Q が高速に得られる。
【0171】更に加算回数を減じるために、実施形態13
に則り、データの再配列を行なう。図32の例で説明す
る。8桁目の部分積の和は4ビットである。 S73に対し
て、他の一括加算からの出力は3ビットであるから、条
件を満たすデータはない。故にこれは1つのデータ (A)
である。 S72に関しては、4桁目から12桁目までの部分
積が 3ビットデータであり、 S72と重ならないデータが
存在する。これは、 Si2(3≦ i≦11)と表せる9ビット
データ (B)となる。同様にして、Si1, Si0も1つのデー
タとなり、結局 4つのデータ(A,B,C,D) へ再編成でき
る。前述したように、この処理はアルゴリズム上は1つ
のステップであるが、回路内の処理としては配線を引き
回しているのみで演算は全く行っていない。
【0172】遅延時間は、他のステップに比べて無視で
きるほど小さい。このステップで、(m+n-1 )個の加算
結果を、〔Log2(Min(m,n))〕個のデータ列へ変換するこ
とができる。最後に〔Log2(Min(m,n))〕個のデータ列を
加算すれば、最終的な演算結果が得られる。
【0173】図32の例では、4個のデータであるから、
図9のように、わずか2段の全加算器通過で最終積が求
められる。一般に、全加算器通過段数は、実施形態 3と
同様、
【0174】
【外18】 で表わせる。よって、全加算器通過段数は図10のグラフ
に従い、m,n が大きくなっても、小さく抑えられる。即
ち多ビット化しても高速性が保たれ、素子数も削減で
き、消費電力を低減させることができる。また、 S73と
Si2の加算は、11桁目以上での加算(S73+S112 S102 S92
S82) なので4ビット(桁上りを入れて出力は 5ビッ
ト)の加算器でよい。以上の演算方式は、実施形態 3と
同様の図12の構成の乗算回路により実現できる。
【0175】NDとしては図13の構成のものを利用でき
る。この回路構成により、図13の表1に示したように複
数入力のうちハイレベル入力の数を3桁の2進数に変換
して出力することができる。また、この回路は2進数に
変換して出力する際に、MSB から出力され、各MSB はほ
ぼ同じタイミングで出力される。このようなNDによれ
ば、ほぼ同じタイミングで出力されるMSB を1つのデー
タとすることができ、上述の演算におけるデータの圧縮
にはより効果的である。
【0176】以上のように乗算回路を構成することで、
素子数が少なく、低消費電力で、且つ並列演算のため高
速な乗算器が形成できる。
【0177】(実施形態15)また、上述した実施形態
13、14の並列一括加算を行うND部を、実施形態4と
同様に図17に示す構成としてもよい。そうすることで、
図17の表1に示すように、複数入力のうちハイレベル信
号の入力の数を、3桁の2進数に変換して出力すること
が、非常に小規模な回路で、かつ低消費電力でできる。
またこの回路は2進数に変換して出力する際に、MSB か
ら出力される。後は、実施形態13、14と同様である
が、以上のように構成することで、素子数がさらに少な
く、小規模で消費電力が少なく、且つ並列演算のために
高速な半導体装置が形成できる。
【0178】(実施形態16)実施形態5と同様、実施
形態13の15個のNDを複数個まとめてしまい、演算を行う
方式である。NDを図21に示す構成とする。
【0179】図21のNDには、それぞれ何入力で何出力で
あるかが数字で示してあるが、最高で56入力をカウント
できるNDを用いればよい。また、配線としては、21入力
でよい。それぞれ全て6ビットの出力となる。次いで再
編成によりデータをまとめるが、各MSB であるS105,S8
5,S45,S05は、実施形態13の法則に則る。次の桁のS10
4,S84,S44,S43も1つのデータとなるが、更にMSB のデ
ータ列とも重なる桁がないため、併せて1つのデータ列
とできる。これにより、最終的には2つのデータ列にま
とめられる。後は実施形態13もしくは14と同様である
が、以上のように乗算回路を構成することで、素子数が
さらに少なく、小規模で消費電力が少ない、且つ並列演
算であり、加算段数が少なくさらに高速な乗算器が形成
できる。
【0180】本実施形態では、一般的な重み付けの例と
して、連続した桁をまとめる例で説明したが、特にこれ
に限定されるわけでなく、重み付けが連続でない場合や
(例えば20の桁と22の桁を合わせて入力する場合)、1
つの桁を分割してそれぞれ別のNDに異なる重み付けで入
力したりして(例えば28の桁を二つに分割して別のNDに
入力する等)、効率化を図ることも自由にできる。
【0181】(実施形態17)7ビットデータ列を63
個加算する例を説明する。図33は、本実施形態を説明
する図である。まず、63個の7ビットデータ列をそれ
ぞれ桁ごとに一括加算する。この加算は、実施形態14−
16で用いた回路で行なう。本実施形態では、データ列が
7ビットであるから7個のNDを用いる。各NDにおける演
算速度は同一であるから、1つのNDの演算速度で全体の
速度が決定される。また、63個の7ビットデータ列加
算のため、NDへ入力される入力数は63個となる。NDか
らの出力データは 6ビットであり、MSB から順に出力さ
れる。NDを用いてキャリーの無い加算を並列に行うこと
で、高速化が可能となる。本実施形態では、全て7ビッ
トのデータ列63個を加算する例を示したが、これに限
定されず、複数個の多ビットデータのビット数が各々異
なっていても構わない。
【0182】次いで、バイナリーモードで表わされた8
個の加算結果を全て加算する第2の加算工程を行うこと
により、所望の加算結果Q が高速に得られる。
【0183】この加算工程について説明する。上述のよ
うに、NDではMSB から順に出力され、しかも、どのNDか
らのMSB も更にはそれ以下の桁も、同一のタイミングで
出力される。MSB で説明すると、m桁目(m≧1)のNDから
出力されるMSB は、m+5 桁目に出力される。即ち 1≦m
≦7 であるm桁のNDからのMSB は各々、お互いに桁が全
く重ならないため、演算することなく1つのデータにで
きる(図33の枠で囲った部分)同様に、MSB より 1つ下
の桁の出力は、各々m+4 桁目、次の桁はm+3 桁目と、順
次出力する順番に1つのデータとすることができる。図
33では、各MSBは Si5(0≦ i≦6)で表せ、以下 Sik(0≦
i≦6)で表せ、(0≦ k≦5)の6個のデータが順次出力さ
れる。この 6個のデータを加算するが、上記のデータの
再編成により、MSB のデータ Si5とその下の桁 Si4のデ
ータが出力された後、各NDが Si3を計算している間に S
i5+Si4の計算を行なうことができる。同様にして、 Si3
とSi2が出力された後、NDが Si1を計算している間に Si
3+Si2を行なうことができる。このようにして、NDの結
果が全て出力されるのを待たずに、第 2の加算工程を開
始することで高速化が達成できる。
【0184】極端な例としては、図34に示すように、 S
i3の計算中に Si5+Si4を行ない、次いで Si2の計算中に
(Si5+Si4)の結果に Si3を加え、更に順次加算していく
ようにすると、演算が高速化できると共に、加算器が 1
つで済み、素子数の低減が図れる。NDの演算にかかる時
間と第 2の加算にかかる時間の関係には、最適値がある
が、NDの加算、すなわち共通桁の一括加算と並行して、
第 2の加算を行なうことができ、高速化とともに素子数
の低減、ひいては消費電力の低減につながる。
【0185】(実施形態18)本実施形態では、ビット
数の異なる複数のデータ列を加算する例を説明する。図
35は、本実施形態を表す図である。ここでは、nビッ
ト(8≦n≦1)のデータ列8個を加算する。まず8個のn
ビットデータ列をそれぞれ桁ごとに一括加算する。この
第1の加算はNDで行なう。
【0186】本実施形態では、データ列が最大8ビット
であるから8個のNDを用いる(z7は1つの数なのでNDは
7個でよい。またY6+Z6 も2入力なのでHAでよいが、こ
こではNDを用いている)。本実施形態では、この加算工
程を並列に処理するため、演算速度は最も遅いNDの演算
速度で決定される。また、8個のデータ列加算を行う演
算のため、NDへ入力される入力数の最大は8個となる。
各NDの演算速度はそれぞれ異なり、8入力のNDにより演
算速度が律速される。
【0187】通常の加算演算では、キャリーが発生する
ため、そのキャリー伝搬により演算速度が遅くなるが、
本実施形態では、キャリーの無い加算演算を並列に行う
ことで、高速化が可能となる。本実施形態では、1ビッ
トから8ビットまでの全てビット数の異なるデータ列8
個を加算する例を示したが、もちろん、これに限定され
るものではない。
【0188】次いで、バイナリーモードで表わされた8
個の加算結果を全て加算する第2の加算工程を行うこと
により、所望の加算結果Q が高速に得られる。
【0189】この加算工程を行なうにあたって、全てを
単純に足し合わせるのではなく、複数のデータを1つの
データにまとめあげることで、更に効率化を図ることが
できる。そのために、図35で一括加算した結果を調べ
ると、例えば、S70 とS51 、S50 は桁としては全く重な
らず、演算なしで1つのデータとすることができる。こ
の処理はアルゴリズム上は1つのステップであるが、回
路内の処理としては配線を引き回しているのみで、演算
は全く行っておらず、遅延時間は無視できるほど小さい
のは実施形態2と同様である。この効率化により、図3
5の例では、2つのデータを1つにまとめることができ
る。これに限らず、2つ以上のデータであれば同様に効
率化が図れる。
【0190】更に高速化するために、第1、第2の加算
工程を並列に実行する。図35では、NDからのデータと
しては、8桁目のデータ、すなわちS70(Z7) が最も早く
出力され、次いで7桁目のデータS61 S60、更に6桁目、
5桁目の順である。そのために、図35の例では、例え
ば、1桁目の演算が終るのを待つことなく、S70 S51S50
+S61 S60 の演算を行なう。引き続き次の出力結果S42 S
41 S40 S12 S11 S10を加算する(実際はS42 S41 を加え
ればよい。)。このように第1の加算工程であるNDの演
算と第2の加算工程の演算は並列に実行でき、こうする
ことで高速化ができる。
【0191】(実施形態19)本実施形態では、図31に
つき、多ビットデータ同士の乗算について説明する。以
下、 8×8 ビット乗算器を例にとって説明するが、これ
は、一般の m×n ビットの乗算に拡張できる。
【0192】被乗数をX(X7 X6 X5 X4 X3 X2 X1 X0)、乗
数をY(Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0)として、 X×Y= Qとす
る。実施形態3で説明したように、 Qは最大 16 ビット
で表わせる。 m×n ビットでは、Q は最大m+n ビットで
ある。
【0193】まず、図31に示すように、 X×Yjという部
分積を生成する。そのために、通常の CMOS 乗算器の様
に、被乗数であるX の各ビットXiと乗数であるYjとの A
NDをとって部分積を求める。他の方法、例えば実施形態
3で説明した方法等でも構わない。
【0194】次いで、図31で示された部分積の各桁の和
をそれぞれ桁ごとにNDにより一括加算する。この加算工
程は並列で処理するため、高速演算に適している。 m×
n ビットの乗算回路では(m+n-1 )個のNDを用いる。ND
へ入力される最大の入力数はMin(m,n)となる。図31に示
すような 8×8 ビット乗算器の例では、このNDを15個用
いる。最大の入力数は8 である(X7Y0+X6Y1+X5Y2+X4Y3+
X3Y4+X2Y5+X1Y6+X0Y7なる演算を行っているところ)。
【0195】ただし、これは、1入力1出力という、そ
のまま配線を延ばせば済むところもNDを用いた場合の数
であり、それを除くと(m+n-3 )個のNDを用いる。さら
に2入力2 出力のHAで済むところを除き、3 入力以上の
場合にのみNDを用いることにすると(m+n-5 )個のNDで
良い。
【0196】通常、3入力以上であると加算演算も複雑
になり、特にキャリーが発生するためその伝搬により演
算速度が遅くなる。本実施形態は一括加算を行いキャリ
ーの無い演算を行うことで高速化が可能となる。
【0197】次いでバイナリーモードで表わされた(m+n
-1) 個の加算結果を全て加算する、第2の加算工程を行
うことにより所望の乗算結果Q が高速に得られる。
【0198】更に加算回数を減じるために、実施形態18
と同様にデータの共通化を行ない、結局 4つのデータ
(A,B,C,D) にできる。前述したように、この処理はアル
ゴリズム上は1つのステップであるが、回路内の処理と
しては配線を引き回しているのみで演算は全く行ってい
ない。
【0199】遅延時間は、他のステップに比べて無視で
きるほど小さい。NDは図13の構成、乗算回路は図12
の構成を用いることができる。図13において、実施形
態3で述べたようにパイプライン処理を行なうこともで
きる。
【0200】NDが必要とする多数決論理回路ブロックの
数は、NDへの入力数n に対して〔Log2n〕 で表わせる。
一方、NDへの入力数はm ×n ビットの乗算器では、1 か
らMin(m,n)までの値をとるが、演算時間は、明らかに入
力数が最大となるMin(m,n)入力のNDが最も長い。これ
は、多数決論理回路の段数が入力数n に対して〔Log
2n〕 で増加していくからである。しかしながら、ビッ
ト数が増えてもこの段数はLog 関数で増加するため、大
きくは増大しないのは明らかである。
【0201】並列演算であるので、入力数最大であるMi
n(m,n)入力のNDの演算速度で、複数のND74での演算が終
了する。この構成では、まず、S73(A)が最初に出力され
る。次いで早めに演算を終了するBと加算を行なうが、
この時まだ他の出力は全て終了していない。同様にDが
完全に出力される前にCを加算する。このようにして並
列演算により高速化が達成できる。
【0202】このようにNDを構成すると、並列演算であ
るので高速で、且つ素子数も少なく低消費電力化が可能
なNDが形成でき、前述の実施形態の演算方法の特性を、
大きく改善することができる。
【0203】次に、アルゴリズム上は、複数のNDから出
力されたデータを1つのデータ列にまとめるステップが
あるが、回路的には特に何も処理しないのは既に述べた
とおりであり、図12には、特にこのステップに対応する
回路は存在しない。
【0204】以上のように乗算回路を構成することで、
素子数が少なく、消費電力が少ない、且つ並列演算のた
め高速な乗算器が形成できる。なお、NDとして、実施形
態4のように図17の構成を用いてもよい。
【0205】(実施形態20)本実施形態は、実施形態
19の図31の15個のNDを複数個まとめてしまい、演算を行
う方式である。なお、ここでは8×8乗算の結果を2つ
加算する例で説明するが、これに限るものではない。
【0206】図20に、 2×2 乗算器に用いる 2×2 多数
決論理回路を基にその例を示す。即ち、実施形態19の図
13の初段の多数決論理回路である。1桁目(20の桁であ
るx0y0)は単位容量Cに入力される。2 桁目(21の桁で
あるx1y0及びx0y1)の2つはそれぞれ2倍の容量2Cを
持つ端子に入力されるため、1入力で2カウントされる
ことになる。さらに3 桁目(22の桁であるx1y1)は22の
重み付けがなされ、1入力で4カウントされる。
【0207】後は実施形態19と同様で、4入力であるが
最高7までがバイナリーモードで出力されるNDとなる。
この重み付けを行うことにより、並列一括加算機能が更
に効率よく行える。
【0208】例えば実施形態19の 8×8 ビットの乗算器
で言えば、図36に示すように、桁の重みが0,1,2,3 であ
る桁を加算するNDをND91にまとめ、同様に桁の重みが
(4,5,6),(7,8,9),(10,11,12,13,14)である領域をそれぞ
れ1つにまとめることができる( 図中のND92-94 )。
【0209】図36のNDには、それぞれ何入力で何出力で
あるかが数字で示してあるが、最高で56入力をカウント
できるNDを用いればよい。配線としては21入力でよい。
それぞれ全て6ビットの出力となる。NDの数が少なく素
子数を大幅に削減できる。ここで、他の8×8の乗算結
果Q'を加算するにあたっては、S105が出力されND94がつ
ぎのS104を演算している間にS105に対するS105' を加算
してしまうことができる。他のデータであるS85 やS45
も同様であり、かつさらにS104,S104'はその加算和に更
に加算して行くことができる。S103,S103'・・も同様に
行なうことができ、NDの演算と並列の演算で部分和S"が
形成できる。
【0210】本実施形態では、最終的にP,Q,R の3つの
データの加算を行なえばよい。更には、ND92から生じる
S"46を別個にP と和をとってしまえば、P とQ も1つの
データとでき、2つのデータの加算を行なえばよい。
【0211】従って高速化が実現でき、また1つの加算
器を何度も繰り返し使用することも可能で、素子数も大
幅に削減できる。特に上述の多数決論理回路を用いたND
を使用すると、クロック動作であり、効果的である。以
上のように乗算回路を構成することで、素子数がさらに
少なく、小規模で消費電力が少ない、且つ並列演算であ
り、加算段数が少なくさらに高速な乗算器が形成でき
る。
【0212】本実施形態では、一般的な重み付けの例と
して、連続した桁をまとめる例で説明したが、特にこれ
に限定されるわけでなく、重み付けが連続でない場合や
(例えば20の桁と22の桁を合わせて入力する場合)、1
つの桁を分割してそれぞれ別のNDに異なる重み付けで入
力したりして(例えば28の桁を二つに分割して別のNDに
入力する等)、効率化を図ることも自由にできる。
【0213】(実施形態21)本実施形態では、上述し
た演算方法を行う半導体装置を用いたデータ処理装置の
例として、DSP に用いた場合を説明する。
【0214】本実施形態では、代表的なDSP である固定
小数点演算用DSP について説明するが、特にこれに限定
されず、他の形式のDSP やCPU などにも適用可能である
ことは言うまでもない。
【0215】上述した実施形態における演算処理装置
は、通常の半導体MOS トランジスタで形成できるため互
換性がよく、入出力バッファをつけて、今までの半導体
装置を置き換えることができる。
【0216】図37に本実施形態のDSP の構成を示す。DS
P に搭載される演算ユニットは、乗算器と累算器であ
り、乗算器は、2つの16ビットデータを乗算し、31
ビットの出力を得る。累算器は、16ビットの算術論理
演算ユニット(ALU)と、ALU の出力信号を格納するレジ
スタとから構成される。
【0217】オンチップメモリは次の4種類である。デ
ータRAM は入力信号を記憶し、そのアドレスは8ビット
データポインタ(DP)により指定される。DPの下位4ビ
ットは4ビットアップダウンカウンタが、上位4ビット
は4ビットレジスタが、各々担当する。データROM はフ
ィルタの重み係数などを格納する。そのアドレスは10
ビットダウンカウンタのROM ポインタ(RP)により指定さ
れる。16ビットテンポラリーレジスタ(TR)はデータ
の一時記憶に使う。命令ROM は、命令(インストラクシ
ョン)を格納し、そのアドレスは命令カウンタ(PC)に
より、指定される。
【0218】DSP 外部との信号の送受は1ビットシリア
ル出力レジスタ、1ビットシリアル入力レジスタ、及び
8ビットパラレル入出力レジスタを介して行われる。シ
リアル出力及びシリアル入力は、各々、出力制御信号
(SOEN) 及び入力制御信号(SIEN) が0V の時に、シリ
アル入出力クロック(SCK )に同期して実行される。8
ビット並列出力は、読み出し/書き込み制御信号(CS)
が0V のときに、書き込み制御信号(WR)または読み出
し制御信号(RD)を0V にして行う。SOから出力される
データ8ビット分がシリアル出力レジスタにそろうと、
出力準備完了信号(SORQ) が5V になる。
【0219】各命令はプログラムカウンタ(PC)の指定
により、クロック周期ごとにROM から読み出される。読
み出された命令の、それぞれのデコード結果にしたがっ
て、各演算ユニットやメモリが動作する。
【0220】リセットパルス(RST )が加わると、まず
PCのポインタ位置が0番地となり、DSP が動作を開始す
る。次に割り込みパルス(INT) が印加されると、PCのポ
インタ位置は256番地へジャンプする。入出力モード
(8ビットまたは16ビット)の選択や、割り込みを受
け付けるか否かの選択は、8ビットパラレル入出力レジ
スタ中の16ビットステイタスレジスタ(SR)が判断す
る。クロックドライバは外部からのクロックパルス(CL
K )をもとにT0とT2の2相クロックを生成し演算ユニッ
トやメモリ等に供給する。入出力レジスタ、演算ユニッ
ト及びメモリとデータのやりとりは16ビットバスを介
して行う。
【0221】本実施形態では、前述した16ビット×1
6ビット高速乗算器を、他の論理回路及びメモリー部と
同一基板上に同一プロセスで形成している。
【0222】このDSP の実際の動作タイミングについ
て、2段パイプライン積和演算を例に説明する。図38
に、動作時の2相クロックパルスを示す。データROM 、
データRAM に各々格納された入力信号、重み係数の読み
出し、即ち乗算器へのデータ供給は、クロック周期m の
T0が高レベル(5V )となるとき(T0 のタイミングと呼
ぶ)に行われ、引き続き乗算が実行される。乗算結果
は、次のクロック周期(m +1)のT0のタイミングでレ
ジスタにラッチされる。これと同時に乗算器では、次の
データの乗算が並列に処理されている。
【0223】一般に演算速度は、ビット数が大きくなる
ほど、特に乗算演算速度が律速原因となるが、本実施形
態の高速乗算器により、演算速度が向上し、DSP の性能
自体を大きく引き上げることができる。しかも、通常の
CMOSプロセスに形成できるというメリットがある。本実
施形態ではDSP に乗算器として応用した例であるが、限
定されないことはいうまでもなく、他の応用例として複
数の多ビット加算過程や乗算過程を内部に持つ演算回路
に広く応用できることは、入出力や、プロセスが通常の
CMOSプロセスであることの汎用性を考えると明らかであ
り、高速性をはじめチップ面積の縮小化、低消費電力化
にも寄与するという大きな効果がある。
【0224】(実施形態22)本実施形態は、上述した
演算装置をスプレッド・スペクトラム通信(SS通信)
の受信回路の相関演算部に応用したものである。この受
信回路の構成を図39に示す。同図に示すように、受信ア
ンテナ1401、信号を増幅する増幅部1402、相関演算部14
03A、B 、A/D 変換部1404、判定器1405、検波部1406を備
える。
【0225】SS通信では、信号をPNコードと呼ばれ
る多ビット符号に変換し、そのPNコードを送信する。
受信側では、予め有している同様のPNコードと、受信
した信号とを比較し、最も相関の高い状態を検出して、
送られてきた信号を復調している。
【0226】図39において、アンテナ部1401で受信され
た信号は、検波部1406で1次復調された後に、1つは相
関演算部1403Aに、もう1つはA/D 変換部でデジタル信
号に変換された後、相関演算部1403Bに入る。入力され
た信号は、受信側で予め保持しているPNコードと比較
され、2つの信号の相関度から、相関演算部1403Aでは
同期信号が形成され、その同期信号で同期をとって、相
関演算部1403Bで相関スコアを計算する。相関演算部14
03Bから出力された相関スコアを元に、判定器1405で信
号が復調される。
【0227】SS通信は、信号を多ビットのコードに変
換して送信することから、秘話性が高い、ノイズに対し
て強いといった優れた特徴を有しているが、送信する情
報量が増大するため、実際の信号処理に関しては、受信
した信号をPNコードと比較し、相関の高い状態を検出
するために、図45に示すような加算回路で加算を繰り
返す処理が必要となり、処理の負荷が膨大になるという
問題点があった。
【0228】しかしながら、上述の実施形態の演算装置
でこの加算を行なうことで、拘束で素子数が少なく、低
消費電力のSS通信受信回路が構成できる。従って、S
S通信により無線通信を行なう携帯型情報機器を実現で
きる。
【0229】更に、演算速度の高速化により、多量の情
報の通信を可能とすると共に、素子数が少なく、低消費
電力に対応できるため、図40に示すようなコンパクト
なカード型送受信部2001を形成することが可能となる。
従って、従来のパソコンのインターフェースを備えたPC
MCIAカードにSS通信を使用することが容易になった。
ここでは、PCMCIAカードを例にとったが、他のインター
フェースに合わせることも容易にできる。入出力は通常
のCMOSコンパチブルであり、上述の演算装置によ
り、小型化、低消費電力化が容易に達成できる。
【0230】また、ここではSS通信用のデータ処理装
置を例に説明したが、これまで述べたようにCMOSコ
ンパチブルな入出力インターフェースであり、複数の多
ビットデータ、特に負数を含む複数の多ビットデータを
加算する他のデータ処理装置、例えば、既に述べたDS
PやCPU、画像や音声を処理する並列演算処理部に適
用できる。更に、平均値や標準偏差を求める統計処理、
最小自乗法などの数値演算にも利用できる。
【0231】他にも、高速化、小型化、低消費電力化の
メリットにより、ワイヤレスLANや、入出管理、課金
システム、TV会議システムなどの各種システムを大き
く改善できる。
【0232】
【発明の効果】以上説明したように、本発明によれば、
複数の多ビットデータを高速に加算することができる。
【0233】また、負数も含む複数の多ビットデータを
高速に加算することができる。
【0234】また、更に、複数の多ビットデータを高速
に乗算することができる。
【0235】また、更に、複数の多ビットデータを高速
に演算する演算装置を、小さなチップ面積で、かつ低消
費電力の半導体装置で構成できる。
【0236】また、この演算装置は、通常の半導体プロ
セスを用いて実現できるので、様々なデータ処理装置に
応用でき、DSP 、CPU 、SS通信用の送受信装置等のデ
ータ処理装置を、高速で、チップ面積が小さく、且つ低
消費電力の装置として実現できる。
【図面の簡単な説明】
【図1】実施形態1の加算器を表わす図である。
【図2】実施形態1の多数決論理回路を表わす図であ
る。
【図3】実施形態1のNDを表わす図である。
【図4】実施形態2の加算器を表わす図である。
【図5】実施形態2の第2加算工程を行う加算器を表わ
す図である。
【図6】実施形態3の乗算器を表わす図である。
【図7】実施形態3の部分積生成回路を表わす図であ
る。
【図8】実施形態3の乗算器を表わす図である。
【図9】実施形態3の加算器を表わす図である。
【図10】実施形態3における全加算器通過段数を表わ
す図である。
【図11】実施形態3の乗算処理手順を表わすフローチ
ャート。
【図12】実施形態3の乗算回路を表わす図である。
【図13】実施形態3で用いるNDを表わす図である。
【図14】実施形態3で用いる多数決論理回路を表わす
図である。
【図15】実施形態3で用いる多数決論理回路を表わす
図である。
【図16】実施形態3で用いる信号のタイミングチャー
トである。
【図17】実施形態4で用いるNDを表わす図である。
【図18】実施形態4で用いる多数決論理回路を表わす
図である。
【図19】実施形態4で用いる信号のタイミングチャー
トである。
【図20】実施形態5で用いる多数決論理回路を表わす
図である。
【図21】実施形態5の乗算器を表わす図である。
【図22】実施形態6の乗算器を表わす図である。
【図23】実施形態7の乗算器を表わす図である。
【図24】実施形態8の乗算器を表わす図である。
【図25】実施形態9の加算器を表わす図である。
【図26】実施形態10の加算器を表わす図である。
【図27】実施形態11の加算器を表わす図である。
【図28】実施形態12の2ビット加算器を表わす図で
ある。
【図29】実施形態12の加算器を表わす図である。
【図30】実施形態13の加算器を表わす図である。
【図31】実施形態14の乗算器を表わす図である。
【図32】実施形態14の他の乗算器を表わす図であ
る。
【図33】実施形態17の加算器を表わす図である。
【図34】実施形態17の他の加算器を表わす図であ
る。
【図35】実施形態18の加算器を表わす図である。
【図36】実施形態20の乗算器を表わす図である。
【図37】実施形態21のDSPを表わす図である。
【図38】実施形態21の動作タイミングチャートであ
る。
【図39】実施形態22の受信回路を表わす図である。
【図40】実施形態22のカード型送受信部を表わす図
である。
【図41】従来の加算器を説明するための図である。
【図42】従来のCLA回路を説明するための図であ
る。
【図43】ブロックCLAを用いた従来の加算回路の構
成例を示す図である。
【図44】従来の加算回路の構成例を示す図である。
【図45】従来の加算回路の構成例を示す図である。
【図46】従来の乗算器の構成例を示す図である。
【符号の説明】
11,74,91,92,93,94,131 Num
ber detector 12,78,79 ラッチ回路 21,73,303 AND回路 22 OR回路 31,91,92,93,94,131 多数決演算回
路ブロック 32 アレイ 33 2進化回路 71 被乗数入力部 72 乗数入力部 73 部分積生成部 75,76,77,301 全加算器 80 演算結果出力部 132,204,206 インバータ 133,134,135 入力部 136,137,138,211 出力端子 201,207 リセットスイッチ 202,209,212 キャパシタ 203 信号転送スイッチ 205 センスアンプ 208,210 リセット電源 302 半加算器 401 並列演算回路ブロック 403 スイッチ 501,502,503 重みづけ入力端子 1401 アンテナ 1402 増幅部 1403 相関演算部 1404 A/D変換部 1405 判定部 1406 検波部 2001 カード型送受信部

Claims (41)

    【特許請求の範囲】
  1. 【請求項1】 複数の多ビットデータを加算する演算処
    理装置であって、 該複数の多ビットデータの共通する桁同士を一括して加
    算する第1の加算手段と、 該第1の加算手段による加算結果の総和を求める第2の
    加算手段とを有することを特徴とする演算処理装置。
  2. 【請求項2】 前記第1の加算手段は、前記複数の多ビ
    ットデータの各桁を独立に加算することを特徴とする請
    求項1に記載の演算処理装置。
  3. 【請求項3】 前記第1の加算手段は、前記複数の多ビ
    ットデータを、複数桁毎に加算することを特徴とする請
    求項1に記載の演算処理装置。
  4. 【請求項4】 前記第2の加算手段は、前記第1の加算
    手段の加算結果のうちで、桁の重複のない複数の加算結
    果を合わせて1データとして、加算を行うことを特徴と
    する請求項1に記載の演算処理装置。
  5. 【請求項5】 前記第1の加算手段は、前記複数の多ビ
    ットデータの共通する桁の値を並列に入力し、該値が1
    である入力の個数を検出して2進表現で出力する検出手
    段を有することを特徴とする請求項1に記載の演算処理
    装置。
  6. 【請求項6】 少なくとも1つの前記個数検出手段に、
    他の複数の前記個数検出手段の出力を入力することを特
    徴とする請求項5に記載の演算処理装置。
  7. 【請求項7】 前記個数検出手段は、複数の多数決論理
    演算手段を有することを特徴とする請求項5に記載の演
    算処理装置。
  8. 【請求項8】 前記複数の多数決論理演算手段の少なく
    とも1つが、複数の入力端子と、該複数の入力端子とス
    イッチ手段を介して接続された複数の容量手段と、該複
    数の容量手段が共通に接続されたセンスアンプとを有す
    ることを特徴とする請求項7に記載の演算処理装置。
  9. 【請求項9】 前記複数の容量手段において、特定の容
    量手段の容量を、他の容量手段の複数個分の容量とした
    ことを特徴とする請求項8に記載の演算処理装置。
  10. 【請求項10】 前記センスアンプの出力が、前記複数
    の入力端子の少なくとも1つにフィードバック入力され
    ることを特徴とする請求項8に記載の演算処理装置。
  11. 【請求項11】 前記センスアンプの出力は、前記複数
    の入力端子の少なくとも1つに、ラッチ手段を介して接
    続されていることを特徴とする請求項8に記載の演算処
    理装置。
  12. 【請求項12】 前記複数の多ビットデータは符号を表
    すフラグビットを含み、前記第1の加算手段は、前記複
    数の多ビットデータの各桁をフラグビットも含めて独立
    に加算することを特徴とする請求項1に記載の演算処理
    装置。
  13. 【請求項13】 前記複数の多ビットデータは、負の数
    を2の補数により表すことを特徴とする請求項12に記
    載の演算処理装置。
  14. 【請求項14】 前記複数の多ビットデータは、負の数
    を1の補数により表すことを特徴とする請求項12に記
    載の演算処理装置。
  15. 【請求項15】 前記第2の加算手段は、前記第1の加
    算手段による異なる桁についての加算結果におけるそれ
    ぞれの桁よりn(n≧0)桁目の値を合わせて1データ
    として、加算を行うことを特徴とする請求項1に記載の
    演算処理装置。
  16. 【請求項16】 前記第2の加算手段は、前記第1の加
    算手段による各桁についての加算結果におけるそれぞれ
    の桁よりn(n≧0)桁目の値を合わせて1データとし
    て、加算を行うことを特徴とする請求項1に記載の演算
    処理装置。
  17. 【請求項17】 前記n桁目はそれぞれの桁についての
    加算結果の最上位桁であることを特徴とする請求項15
    に記載の演算処理装置。
  18. 【請求項18】 前記第1の加算手段は、加算結果を最
    上位桁から順次出力することを特徴とする請求項17に
    記載の演算処理装置。
  19. 【請求項19】 前記第2の加算手段は、前記第1の加
    算手段による1部の桁についての加算と並行して、前記
    第1の加算手段によって既に実行された他の1部の桁に
    ついての加算結果を用いて加算を実行することを特徴と
    する請求項1に記載の演算処理装置。
  20. 【請求項20】 前記第2の加算手段は、前記第1の加
    算手段によって実行された加算結果同士を加算すること
    を特徴とする請求項19に記載の演算処理装置。
  21. 【請求項21】 前記第2の加算手段は、前記第1の加
    算手段によって実行された加算結果を、前記第2の加算
    手段によって既に実行された加算結果に加算することを
    特徴とする請求項19に記載の演算処理装置。
  22. 【請求項22】 複数の多ビットデータを乗算する演算
    処理装置であって、 該複数の多ビットデータの部分積を生成する部分積生成
    手段と、 該部分積生成手段で生成された複数の部分積の共通する
    桁同士を一括して、各桁を独立に加算する第1の加算手
    段と、 該第1の加算手段による加算結果の総和を求める第2の
    加算手段とを有することを特徴とする演算処理装置。
  23. 【請求項23】 前記部分積生成手段が、第1の多ビッ
    トデータの各ビットと、第2の多ビットデータの特定の
    1ビットとの部分積を同時に生成することを特徴とする
    請求項22に記載の演算処理装置。
  24. 【請求項24】 前記部分積生成手段が、 前記第1の多ビットデータの各ビットを並列に入力する
    入力手段と、 該入力手段からの入力を、前記第2の多ビットデータの
    各ビットの値に応じてオン・オフするスイッチ手段とを
    有することを特徴とする請求項23に記載の演算処理装
    置。
  25. 【請求項25】 前記部分積生成手段が、ゲート電極を
    共通化した複数のトランジスタを有することを特徴とす
    る請求項22に記載の演算処理装置。
  26. 【請求項26】 前記部分積生成手段が、複数のAND
    回路を有することを特徴とする請求項22に記載の演算
    処理装置。
  27. 【請求項27】 前記第2の加算手段が、前記第1の加
    算手段による異なる桁についての加算結果におけるそれ
    ぞれの桁よりn(n≧0)桁目の値を合わせて1データ
    として、加算を行うことを特徴とする請求項22に記載
    の演算処理装置。
  28. 【請求項28】 前記第2の加算手段が、前記第1の加
    算手段による1部の桁についての加算と並行して、前記
    第1の加算手段によって既に実行された他の1部の桁に
    ついての加算結果を用いて加算を実行することを特徴と
    する請求項22に記載の演算処理装置。
  29. 【請求項29】 複数の多ビットデータを加算する演算
    方法であって、 該複数の多ビットデータの共通する桁同士を一括して加
    算する第1の加算工程と、 該第1の加算工程による加算結果の総和を求める第2の
    加算工程とを有することを特徴とする演算方法。
  30. 【請求項30】 前記第2の加算工程においては、前記
    第1の加算工程の加算結果のうちで、桁の重複のない複
    数の加算結果を合わせて1データとして、加算を行うこ
    とを特徴とする請求項29に記載の演算方法。
  31. 【請求項31】 前記複数の多ビットデータは符号を表
    すフラグビットを含み、前記第1の加算工程では、前記
    複数の多ビットデータの各桁をフラグビットも含めて独
    立に加算することを特徴とする請求項29に記載の演算
    方法。
  32. 【請求項32】 前記第2の加算工程では、前記第1の
    加算工程での異なる桁についての加算結果におけるそれ
    ぞれの桁よりn(n≧0)桁目の値を合わせて1データ
    として、加算を行うことを特徴とする請求項29に記載
    の演算方法。
  33. 【請求項33】 前記第1の加算工程における1部の桁
    についての加算と並行して、前記第1の加算工程におい
    て既に実行された他の1部の桁についての加算結果を用
    いて前記第2の加算工程における加算を実行することを
    特徴とする請求項29に記載の演算方法。
  34. 【請求項34】 複数の多ビットデータを乗算する演算
    方法であって、 前記複数の多ビットデータの部分積を生成する部分積生
    成工程と、 該部分積生成工程で生成された複数の部分積の共通する
    桁同士を一括して加算する第1の加算工程と、 該第1の加算工程による加算結果の総和を求める第2の
    加算工程とを有することを特徴とする演算方法。
  35. 【請求項35】 前記第2の加算工程においては、前記
    第1の加算工程の加算結果のうちで、桁の重複のない複
    数の加算結果を合わせて1データとして、加算を行うこ
    とを特徴とする請求項34に記載の演算方法。
  36. 【請求項36】 前記第2の加算工程では、前記第1の
    加算工程での異なる桁についての加算結果におけるそれ
    ぞれの桁よりn(n≧0)桁目の値を合わせて1データ
    として、加算を行うことを特徴とする請求項34に記載
    の演算方法。
  37. 【請求項37】 前記第1の加算工程における1部の桁
    についての加算と並行して、前記第1の加算工程におい
    て既に実行された他の1部の桁についての加算結果を用
    いて前記第2の加算工程における加算を実行することを
    特徴とする請求項34に記載の演算方法。
  38. 【請求項38】 データを入力する入力手段と、 データを記憶する記憶手段と、 該記憶手段に記憶されたデータと前記入力手段より入力
    されたデータとを、所定の処理手順で処理する処理手段
    と、 該処理手段の処理結果を出力する出力手段とを有し、 前記処理手段が、 複数の多ビットデータの共通する桁同士を一括して加算
    する第1の加算手段と、 該第1の加算手段による加算結果の総和を求める第2の
    加算手段とを具え、 複数の多ビットデータの加算を実行することを特徴とす
    るデータ処理装置。
  39. 【請求項39】 前記処理手段が、更に、複数の多ビッ
    トデータの部分積を生成する部分積生成手段を具え、該
    部分積生成手段の生成した部分積を、前記第1、第2の
    加算手段を用いて加算することにより、多ビットデータ
    同士の乗算を実行することを特徴とする請求項38に記
    載のデータ処理装置。
  40. 【請求項40】 前記入力手段は信号を入力し、前記記
    憶手段は重み係数を記憶し、前記処理手段は、入力され
    た信号に重み係数を乗じて累算することを特徴とする請
    求項38に記載のデータ処理装置。
  41. 【請求項41】 前記入力手段は多ビット符号を入力
    し、前記記憶手段は多ビット符号を予め記憶し、前記処
    理手段は、入力された多ビット符号と記憶された多ビッ
    ト符号との相関量を計算し、計算された相関量に基づい
    て入力された多ビット符号を復調することを特徴とする
    請求項38に記載のデータ処理装置。
JP08954196A 1995-04-11 1996-04-11 演算処理装置及びデータ処理装置 Expired - Fee Related JP3658079B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US08/630,742 US5978827A (en) 1995-04-11 1996-04-10 Arithmetic processing
KR1019960010745A KR100359965B1 (ko) 1995-04-11 1996-04-10 프로세서와이의연산방법 및 데이타프로세서
JP08954196A JP3658079B2 (ja) 1995-04-11 1996-04-11 演算処理装置及びデータ処理装置
CN96102871A CN1129066C (zh) 1995-04-11 1996-04-11 处理器及其运算方法以及数据处理器
EP96302538A EP0741354B1 (en) 1995-04-11 1996-04-11 Multi-operand adder using parallel counters
DE69632978T DE69632978T2 (de) 1995-04-11 1996-04-11 Multi-Operand-Addierer, der Parallelzähler benutzt

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7-85255 1995-04-11
JP8525595 1995-04-11
JP08954196A JP3658079B2 (ja) 1995-04-11 1996-04-11 演算処理装置及びデータ処理装置

Publications (2)

Publication Number Publication Date
JPH08339292A true JPH08339292A (ja) 1996-12-24
JP3658079B2 JP3658079B2 (ja) 2005-06-08

Family

ID=32827169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08954196A Expired - Fee Related JP3658079B2 (ja) 1995-04-11 1996-04-11 演算処理装置及びデータ処理装置

Country Status (6)

Country Link
US (1) US5978827A (ja)
EP (1) EP0741354B1 (ja)
JP (1) JP3658079B2 (ja)
KR (1) KR100359965B1 (ja)
CN (1) CN1129066C (ja)
DE (1) DE69632978T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011107972A (ja) * 2009-11-17 2011-06-02 Fujitsu Ltd 総和計算方法及び数値演算装置

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3607494B2 (ja) * 1998-03-03 2005-01-05 東芝マイクロエレクトロニクス株式会社 加算器
US6490608B1 (en) * 1999-12-09 2002-12-03 Synopsys, Inc. Fast parallel multiplier implemented with improved tree reduction schemes
DE60031109D1 (de) * 2000-08-01 2006-11-16 St Microelectronics Sa Übertragsicherstellungsaddierer
US6883011B2 (en) 2000-08-04 2005-04-19 Arithmatica Limited Parallel counter and a multiplication logic circuit
US7136888B2 (en) 2000-08-04 2006-11-14 Arithmatica Limited Parallel counter and a logic circuit for performing multiplication
GB2365636B (en) 2000-08-04 2005-01-05 Automatic Parallel Designs Ltd A parallel counter and a multiplication logic circuit
US6701339B2 (en) * 2000-12-08 2004-03-02 Intel Corporation Pipelined compressor circuit
US6729168B2 (en) * 2000-12-08 2004-05-04 Stmicroelectronics, Inc. Circuit for determining the number of logical one values on a data bus
GB2373602B (en) * 2001-03-22 2004-11-17 Automatic Parallel Designs Ltd A multiplication logic circuit
US6779013B2 (en) * 2001-06-04 2004-08-17 Intel Corporation Floating point overflow and sign detection
US7080111B2 (en) * 2001-06-04 2006-07-18 Intel Corporation Floating point multiply accumulator
EP1308836A1 (en) * 2001-10-31 2003-05-07 Motorola, Inc. Adder tree structure with reduced carry ripple adder stage
US20030154227A1 (en) * 2002-02-08 2003-08-14 Intel Corporation Multi-threaded multiply accumulator
US7734675B1 (en) * 2002-12-05 2010-06-08 Cisco Technology, Inc. System and method for generating a binary result in a data processing environment
US7293056B2 (en) * 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US7260595B2 (en) * 2002-12-23 2007-08-21 Arithmatica Limited Logic circuit and method for carry and sum generation and method of designing such a logic circuit
US6909767B2 (en) 2003-01-14 2005-06-21 Arithmatica Limited Logic circuit
US7042246B2 (en) 2003-02-11 2006-05-09 Arithmatica Limited Logic circuits for performing threshold functions
US7308471B2 (en) 2003-03-28 2007-12-11 Arithmatica Limited Method and device for performing operations involving multiplication of selectively partitioned binary inputs using booth encoding
GB2401962B (en) 2003-05-23 2005-05-18 Arithmatica Ltd A sum bit generation circuit
JP2005182238A (ja) * 2003-12-17 2005-07-07 Renesas Technology Corp 演算装置
US20050228845A1 (en) * 2004-04-12 2005-10-13 Mathstar, Inc. Shift and recode multiplier
US20060020655A1 (en) * 2004-06-29 2006-01-26 The Research Foundation Of State University Of New York Library of low-cost low-power and high-performance multipliers
JP4810090B2 (ja) * 2004-12-20 2011-11-09 キヤノン株式会社 データ処理装置
WO2010045378A2 (en) * 2008-10-14 2010-04-22 The Research Foundation Of State University Of New York (Sunyrf) Generating partial sums
JP5048748B2 (ja) * 2009-12-18 2012-10-17 三菱電機株式会社 試験テーブル生成装置及び試験テーブル生成方法
CN102999310A (zh) * 2012-12-14 2013-03-27 蒋海勇 一种新型芯片晶体管阵列方法
US9355066B1 (en) * 2012-12-17 2016-05-31 Marvell International Ltd. Accelerated calculation of array statistics
RU2547625C2 (ru) * 2013-06-28 2015-04-10 федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский ядерный университет МИФИ" (НИЯУ МИФИ) Многовходовой сумматор
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US10171105B2 (en) 2016-08-25 2019-01-01 International Business Machines Corporation Carry-less population count
US10944404B1 (en) * 2019-12-27 2021-03-09 Kepler Computing, Inc. Low power ferroelectric based majority logic gate adder
US11283453B2 (en) 2019-12-27 2022-03-22 Kepler Computing Inc. Low power ferroelectric based majority logic gate carry propagate and serial adder
US11374574B2 (en) 2019-12-27 2022-06-28 Kepler Computing Inc. Linear input and non-linear output threshold logic gate
US11018672B1 (en) 2019-12-27 2021-05-25 Kepler Computing Inc. Linear input and non-linear output majority logic gate
US11165430B1 (en) 2020-12-21 2021-11-02 Kepler Computing Inc. Majority logic gate based sequential circuit
US11381244B1 (en) 2020-12-21 2022-07-05 Kepler Computing Inc. Low power ferroelectric based majority logic gate multiplier
US11290112B1 (en) * 2021-05-21 2022-03-29 Kepler Computing, Inc. Majority logic gate based XOR logic gate with non-linear input capacitors
US11418197B1 (en) 2021-05-21 2022-08-16 Kepler Computing Inc. Majority logic gate having paraelectric input capacitors and a local conditioning mechanism
US11303280B1 (en) 2021-08-19 2022-04-12 Kepler Computing Inc. Ferroelectric or paraelectric based sequential circuit
US11664370B1 (en) 2021-12-14 2023-05-30 Kepler Corpating inc. Multi-function paraelectric threshold gate with input based adaptive threshold
US11705905B1 (en) 2021-12-14 2023-07-18 Kepler Computing, Inc. Multi-function ferroelectric threshold gate with input based adaptive threshold
US11817859B1 (en) 2021-12-23 2023-11-14 Kepler Computing Inc. Asynchronous circuit with multi-input threshold gate logic and 1-input threshold gate
US11855627B1 (en) 2022-01-13 2023-12-26 Kepler Computing Inc. Asynchronous consensus circuit using multi-function threshold gate with input based adaptive threshold
US11967357B2 (en) * 2022-01-21 2024-04-23 National Tsing Hua University Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof
US11967954B1 (en) 2022-04-20 2024-04-23 Kepler Computing Inc. Majority or minority logic gate with non-linear input capacitors without reset
US11765908B1 (en) 2023-02-10 2023-09-19 Kepler Computing Inc. Memory device fabrication through wafer bonding

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3524977A (en) * 1967-01-17 1970-08-18 Rca Corp Binary multiplier employing multiple input threshold gate adders
US3535502A (en) * 1967-11-15 1970-10-20 Ibm Multiple input binary adder
US3636334A (en) * 1969-01-02 1972-01-18 Univ California Parallel adder with distributed control to add a plurality of binary numbers
US3603776A (en) * 1969-01-15 1971-09-07 Ibm Binary batch adder utilizing threshold counters
US3675001A (en) * 1970-12-10 1972-07-04 Ibm Fast adder for multi-number additions
US3723715A (en) * 1971-08-25 1973-03-27 Ibm Fast modulo threshold operator binary adder for multi-number additions
US3795880A (en) * 1972-06-19 1974-03-05 Ibm Partial product array multiplier
US3950636A (en) * 1974-01-16 1976-04-13 Signetics Corporation High speed multiplier logic circuit
FR2454136B1 (fr) * 1979-04-12 1985-12-06 Materiel Telephonique Additionneur sequentiel rapide
FR2536922A1 (fr) * 1982-11-26 1984-06-01 Efcis Comparateur logique a plusieurs fonctions
CA1236220A (en) * 1984-10-11 1988-05-03 Sterling R. Whitaker Multiplier circuitry using pass transistors
DE3524797A1 (de) * 1985-07-11 1987-01-22 Siemens Ag Anordnung zur bitparallelen addition von binaerzahlen
GB2189630B (en) * 1986-04-23 1990-02-14 Stc Plc Multiplier
FR2599526A1 (fr) * 1986-05-29 1987-12-04 Centre Nat Rech Scient Additionneur mos et multiplicateur binaire mos comprenant au moins un tel additionneur
KR920007505B1 (ko) * 1989-02-02 1992-09-04 정호선 신경회로망을 이용한 곱셈기
US5161119A (en) * 1990-02-14 1992-11-03 Lsi Logic Corporation Weighted-delay column adder and method of organizing same
KR920006323B1 (ko) * 1990-05-31 1992-08-03 삼성전자 주식회사 스킵(Skip)배열과 수정형 월리스(Wallace)트리를 사용하는 병렬 승산기
WO1994012928A1 (en) * 1992-11-20 1994-06-09 Unisys Corporation Enhanced fast multiplier

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011107972A (ja) * 2009-11-17 2011-06-02 Fujitsu Ltd 総和計算方法及び数値演算装置

Also Published As

Publication number Publication date
DE69632978D1 (de) 2004-09-02
CN1129066C (zh) 2003-11-26
KR100359965B1 (ko) 2003-03-15
US5978827A (en) 1999-11-02
KR960038594A (ko) 1996-11-21
EP0741354A3 (en) 1997-05-02
DE69632978T2 (de) 2005-07-21
JP3658079B2 (ja) 2005-06-08
EP0741354A2 (en) 1996-11-06
EP0741354B1 (en) 2004-07-28
CN1139777A (zh) 1997-01-08

Similar Documents

Publication Publication Date Title
JP3658079B2 (ja) 演算処理装置及びデータ処理装置
US11907719B2 (en) FPGA specialist processing block for machine learning
Wang et al. A high-speed residue-to-binary converter for three-moduli (2/sup k/, 2/sup k/-1, 2/sup k-1/-1) RNS and a scheme for its VLSI implementation
US6301600B1 (en) Method and apparatus for dynamic partitionable saturating adder/subtractor
US11809798B2 (en) Implementing large multipliers in tensor arrays
Kumar et al. New algorithm for signed integer comparison in $\{2^{n+ k}, 2^{n}-1, 2^{n}+ 1, 2^{n\pm 1}-1\} $ and its efficient hardware implementation
JP3637073B2 (ja) 倍精度・単精度・内積演算および複素乗算が可能な乗算器
US4866655A (en) Arithmetic processor and divider using redundant signed digit
Castillo et al. A new area-efficient BCD-digit multiplier
Mohan et al. Evaluation of Mixed-Radix Digit Computation Techniques for the Three Moduli RNS {2 n− 1, 2 n, 2 n+ 1− 1}
US8417761B2 (en) Direct decimal number tripling in binary coded adders
US5935202A (en) Compressor circuit in a data processor and method therefor
US7277909B2 (en) High speed adder
US6343303B1 (en) Method of determining a scaling factor
Chong et al. Low-voltage asynchronous adders for low power and high speed applications
Jiang et al. Residue-Weighted Number Conversion with Moduli Set {2^ p-1, 2^ p+ 1, 2^{2p}+ 1, 2^ p} Using Signed-Digit Number Arithmetic
Yan et al. An energy efficient carry-free inner product unit
Abraham et al. An ASIC design of an optimized multiplication using twin precision
US6272514B1 (en) Method and apparatus for interruption of carry propagation on partition boundaries
US6301597B1 (en) Method and apparatus for saturation in an N-NARY adder/subtractor
Cherian et al. A High Bit Rate Serial-Serial Multiplier in a Most Efficient Manner
JP2894749B2 (ja) 並列乗算器
CN114756199A (zh) 部分积求和模块设计方法及乘法器
JPH061437B2 (ja) 演算処理装置
SU822174A1 (ru) Преобразователь пр мого двоично- дЕС ТичНОгО КОдА B дОпОлНиТЕльНыйдВОичНО-дЕС ТичНый КОд

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041101

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050311

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees