JP3658079B2 - 演算処理装置及びデータ処理装置 - Google Patents

演算処理装置及びデータ処理装置 Download PDF

Info

Publication number
JP3658079B2
JP3658079B2 JP08954196A JP8954196A JP3658079B2 JP 3658079 B2 JP3658079 B2 JP 3658079B2 JP 08954196 A JP08954196 A JP 08954196A JP 8954196 A JP8954196 A JP 8954196A JP 3658079 B2 JP3658079 B2 JP 3658079B2
Authority
JP
Japan
Prior art keywords
addition
bit
digit
input
data
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.)
Expired - Fee Related
Application number
JP08954196A
Other languages
English (en)
Other versions
JPH08339292A (ja
Inventor
武史 市川
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

Images

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)

Description

【0001】
【発明の属する技術分野】
本発明は、加算や乗算などの演算を実行する半導体装置等の演算処理装置、及び該装置で用いる演算方法、並びに前記演算処理装置を用いたデータ処理装置に関するものである。
【0002】
【従来の技術】
近年、微細化に伴う半導体製造技術及びアルゴリズムを含む半導体回路技術の目ざましい発展に伴い、加算器(adder) や乗算器(multiplier)等の演算速度の向上には著しいものが有る。又その演算処理は、CPU(central processing unit)やDSP(digital signal processor) の分野をはじめ、あらゆる半導体装置に使用されている。しかしながら、技術が発展すればするほどこのような演算処理に対する要求は厳しいものになり、さらなる高速化が求められているのが現状である。
【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)に示す半加算器、点線で囲まれた部分は、図42の(C)に示すCMOS回路で実現される。
【0011】
実際に回路にインプリメントする場合には、ハードウェア量や効率を考えて、全ての桁の桁上げ信号をCLAで生成することはなく、例えば4ビットを1つのブロックとして、ブロック単位でCLAを用いて桁上げ信号を伝搬させ、ブロック内はリップルで桁上げ信号を伝える方式(ブロックCLAと呼ぶ)を採る場合が多い。この方式を用いた16ビットアダーの例を図43に示す。
【0012】
また、減算は、加算回路をそのまま用いて、減数(subtracter)の2の補数(2's complement)を被減数(minuend) に加えることで実現される。
【0013】
しかしながら、以上の方法によっても、operand 数が増大すればするほど、素子数、演算時間とも大きく増大し、operandsの増加に対して更なる高速化を図ることは容易でない。
【0014】
例えば、63個のデータを全て加算する場合において、高速化を追求すれば、図44のように、並列に6段の加算処理を行なうことができるが、62個の全加算器を要する。一方、素子数を減らせば、図45のように全加算器を1個とすることもできるが、62回の加算を順次行なう必要がある。
【0015】
次に、現状の演算方式の乗算器(multiplier)の一例として、ここでは並列乗算器について簡単に説明する。
【0016】
n×n ビットの乗算の場合、まず部分積(partial product)
【0017】
【外1】
Figure 0003658079
を求める。ここで部分積とは、被乗数(multiplicand)
【0018】
【外2】
Figure 0003658079
に乗数(multiplicator) Yの1ビット2jYj(J=0,1,・・・,n-1 )を掛け合わせた結果を言う。
【0019】
2進数の場合は0か1しかないので、Yjが0のときはPij はすべて0となり、Yjが1のときはPij の各ビットはXiの各ビットに等しい。従って部分積は、被乗数の各ビットと乗数の1ビットとの論理積をとることにより得られる。生成された部分積を乗数ビットの重みに従って桁を合わせ、それらを加算することにより、乗算結果
【0020】
【外3】
Figure 0003658079
が得られる。最も基本的な並列乗算器は、上記の部分積生成のハードウエア(AND ゲート) および部分積加算の回路を、アレイ状に配列して結線することにより得られる。例として、8ビット×8ビットの並列乗算器を図46に示す。同図に示すように、この並列乗算器は、全加算器301 、半加算器302 、ANDゲート303 を含む。
【0021】
この例に示されるように、乗算は、n ×n ビットの場合、n2個のANDゲートで部分積を容易に且つ高速に演算するとともに、この部分積を加算する加算工程が演算速度を律速している。従って、部分積の加算工程の高速化が乗算器の高速化の鍵である。
【0022】
そのための改良案として、各部分積の加算段の桁上げ信号を次の加算段の加算器に伝えることにより、自段内での桁上げ信号伝搬をなくすことが可能となるキャリーセーブアダー方式や、同一桁内の加算工程を並列に行うWallace-tree方式(Wallace, C., IEEE Trans.on Electronic Computers,EC-13,1,1964, pp14-17) 、および生成される部分積の個数そのものを減らす、Booth のアルゴリズム(Rubinifield,L.,IEEE Trans. on Computers, C24,10,1975, pp.1014-1015)を用いる方式等があり、高速化が図られている。
【0023】
しかしながら、上述の方式では、いずれもビット数が増大すればするほど、素子数、演算時間とも大きく増大し、多ビット化に対して更なる高速化を図ることは容易でなく、最近では多値理論を応用した乗算器等も報告されているが(T.Hanyu et al. Proc. IEEE Int. Symp. on MVL, pp19-26, May(1994).Nov.1993)、なかなか実用化に至らないのが、実状である。
【0024】
本発明の目的は、上述した技術課題を解決し、高速で素子数の少ない演算処理装置及びその方法、並びにデータ処理装置を提供することにある。
【0025】
本発明の他の目的は、演算処理装置及びデータ処理装置において、高速化を図りつつ、必要な素子数を削減し、消費電力を減少させることにある。
【0026】
本発明の他の目的は、加算においてキャリーの伝搬をなくし、演算の高速化を図ることにある。
【0027】
本発明の他の目的は、データを再編成して加算すべきデータ数を削減し、演算を高速化させ、演算に必要な素子数を削減することにある。
【0028】
本発明の他の目的は、演算を並列に実行することで、処理の高速化を図ることにある。
【0029】
【課題を解決するための手段】
上述の目的を達成するために、本発明によれば、複数の多ビットデータを加算する演算処理装置に、該複数の多ビットデータの共通する桁について、値が1である入力の個数を検出して2進表現で出力する個数検出手段に対して当該桁の値を並列入力することにより各桁の加算を行なう第1の加算手段と、該第1の加算手段による加算結果の総和を求める第2の加算手段とを有し、前記個数検出手段は、入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定する判定手段と、該判定手段の判定出力に基づいて値が1であるビットの個数を2進表現で出力する2進化手段とを備える。
【0030】
また、本発明の他の態様によれば、複数の多ビットデータを乗算する演算処理装置に、該複数の多ビットデータの部分積を生成する部分積生成手段と、該部分積生成手段で生成された複数の部分積の共通する桁について、値が1である入力の個数を検出して2進表現で出力する個数検出手段に対して当該桁の値を並列入力することにより、各桁を独立に加算する第1の加算手段と、該第1の加算手段による加算結果の総和を求める第2の加算手段とを有し、前記個数検出手段は、入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定する判定手段と、該判定手段の判定出力に基づいて値が1であるビットの個数を2進表現で出力する2進化手段とを備える。
【0033】
また、本発明の他の態様によれば、データを入力する入力手段と、該入力手段より入力されたデータを記憶する記憶手段と、該記憶手段に記憶されたデータと前記入力手段より入力されたデータとを、所定の処理手順で処理する処理手段と、該処理手段の処理結果を出力する出力手段とを有し、前記処理手段が、複数の多ビットデータの共通する桁について、値が1である入力の個数を検出して2進表現で出力する個数検出手段に対して当該桁の値を並列入力することにより各桁の加算を行なう第1の加算手段と、該第1の加算手段による加算結果の総和を求める第2の加算手段とを具えて複数の多ビットデータの加算を実行し、前記個数検出手段は、入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定する判定手段と、該判定手段の判定出力に基づいて値が1であるビットの個数を2進表現で出力する2進化手段とを備える。
【0034】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
【0035】
(実施形態1)
本実施形態では、複数の多ビットデータの加算方法について、8ビットデータ列7個を加算する演算を例として説明する。
【0036】
図1は、本実施形態を表す図である。ここでは、8ビットのデータ列を7個加算するために、まず、7個の8ビットデータ列をそれぞれ桁ごとに一括加算する第1の加算工程を行なう。この加算は後に詳細に構成を説明するが、n 入力中何個がhighであったかをバイナリーモード( 図1ではS(pq) で示している。( pは桁の重み、 qはS の中での桁の重みを表わす)) で出力する機能を持つブロック11を用いて行う。
【0037】
以下、この機能を持つブロック11をNumber Detector と称し、NDと略記する。図1では、このND11というブロックを1つの箱で表している。箱の中の数字は、"/" の前後がそれぞれ入力数(In)と出力数(Out) を示している。この出力数は入力数で決定され、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 circuit)の回路図を示す。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+〔Log2m〕 )ビットデータ列を加算すれば最終的な演算結果が得られる。全加算器通過段数は、
【0049】
【外4】
Figure 0003658079
で表わせる。ここで、
【0050】
【外5】
Figure 0003658079
は 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トランジスタがオン状態になり、
Figure 0003658079
なる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+X6Y1+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から出力される加算結果は最大〔Log2(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】
Figure 0003658079
で表わせる。
【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は、AND 回路もしくは図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であった場合、先に述べたように重み付け入力端子にはLOW LEVEL が印加される。さらに重み付け入力端子以外の入力端子に加えられる信号のうち7入力中6入力以上がHIGH LEVELであった場合、トータルとして11入力多数決論理回路は過半数であるとの判定を下しHIGH LEVELを出力する。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 、インバータ206 をリセットするための第2のリセットスイッチ207 、リセット電源208 、第二のリセット電源210 、出力端子211 、キャパシタ 202の共通接続された一端につく寄生容量209 を備える。図15は、これを模式的に表わしたものであるがこれに限るものではない。
【0075】
図16は、図15の回路の動作タイミング説明図である。同図を用いてその動作を説明すると、まずリセットパルスφRES により、キャパシタ202 の一端をリセットする。リセット電圧は、例えば電源電圧が5V系であった場合、そのほぼ半分の2.5Vを用いる。リセット電圧はこれに限るものではなく、他の電圧でも良い。この時ほぼ同時に、センスアンプ内のインバータ206 の入力端を、リセットスイッチ207 を導通させることによりリセットする。この時リセット電圧は、インバータの出力が反転する論理反転電圧近傍の値が選ばれる。リセットパルスφRES をOFF すると、キャパシタ 202の両端はそれぞれのリセット電位に保持される。
【0076】
次に転送パルスφT により転送スイッチ203 が導通すると、信号がキャパシタ 202の一端に転送され、キャパシタの一端の電位は、例えば2.5Vのリセット電圧から、LOW LEVEL に相当する0V、もしくはHIGH LEVELに相当する5Vに変化する。ここでキャパシタ 202の容量をC 、寄生容量の容量値をCoとし、キャパシタ 202がN 個並列に接続されていると仮定すると、キャパシタ202 の共通接続された一端は、一個の入力に対して、容量分割により、インバータの論理反転電圧近傍から±〔2.5C/(C0+CN)〕×|V| だけ変化する。
【0077】
インバータ 206の入力端電圧が論理反転電圧から変化すると、インバータ 206の出力端電圧はそれに応じて反転する。N 個の入力にそれぞれ信号が入力されると、インバータ 206の入力端には容量分割出力のN 個の和が入力される。結局、N 個の入力のうちHIGH LEVELの信号数が過半数であれば、インバータ 206の入力端は論理反転電圧より高電位にシフトして、センスアンプの出力端211 にはHIGH LEVELが出力される。一方、LOW LEVEL の信号数が過半数であれば、LOW LEVEL が出力される。以上の様に構成することで、図15の回路は、複数入力のうち過半数を占める論理値を出力する多数決論理回路として機能する。
【0078】
図13では、一例として7入力のNDを示しているが、もちろんこれに限るものではなく、さらに多入力に容易に拡張できる。また多数決論理回路と多数決論理回路の間にラッチ回路等をいれてパイプライン処理を行ない、更に高速化する構成をとることも自由にできる。
【0079】
NDが必要とする多数決論理回路ブロックの数は、NDへの入力数n に対して〔Log2n〕 で表わせる。一方、NDへの入力数はm ×n ビットの乗算器では、1 からMin(m,n)までの値をとるが、演算時間は、明らかに入力数が最大となるMin(m,n)入力のNDが最も長い。これは、多数決論理回路の段数が入力数n に対して〔Log2n〕 で増加していくからである。しかしながら、ビット数が増えてもこの段数はLog 関数で増加するため、大きくは増大しないのは明らかである。
【0080】
並列演算であるので、入力数最大であるMin(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 LEVEL の信号数が過半数であれば、LOW LEVEL が出力される。
【0090】
以上の様に構成することで、図18の回路は、複数入力のうち過半数を占める論理値を出力する多数決論理回路として機能する。図17は、1例として7入力のNDを示している。
【0091】
同図において、信号はそれぞれ多数決回路ブロック401 に入力される。多数決論理回路ブロック401 は、入力端子経路に接続するキャパシタ値を仮にC とすると、13個のC が共通接続され、そのうち3つのC に重み付け入力端子からHIGH LEVELの信号が印加され、別の3つのC に重み付け入力端子からLOW LEVEL の信号が印加され、他の7つの端子には402 からの信号が印加される構成の、13 入力多数決論理回路と見ることができる。
【0092】
よって、入力値が入力されると、HIGH LEVELの数が過半数の場合、つまり、7入力中4入力以上がHIGH LEVELであった場合、多数決論理回路ブロックからHIGH LEVELが出力される。13入力の多数決論理回路ブロックの出力値を入力のHIGH LEVELの数ごとに示すと、表1のS3のようになる。次にパルスφLAT1、φLAT2によって、出力信号はラッチ回路12にラッチされる。例えば、7入力中4入力以上がHIGH LEVELであった場合、重み付け入力端子501 にはHIGH LEVELが、502 、503 にはLOW LEVEL が、それぞれ印加される。
【0093】
更に、重み付け入力端子以外の入力端子に加えられる信号において、7入力中6入力以上がHIGH LEVELであった場合、トータルとして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】
Figure 0003658079
【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) 、その反転を(BSF6,BSF5, …,BSF0)とすると、
【0122】
【外8】
Figure 0003658079
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】
Figure 0003658079
上述の計算を数値的に記述すると、Xijが i個目のデータ列の (j+1)ビット目を表すとして、
【0128】
【外10】
Figure 0003658079
従って、 out≧0 の時は、上式より、
【0129】
【外11】
Figure 0003658079
すなわち、13ビット目は1が加わり0となる。
【0130】
一方、 out<0の時は、
【0131】
【外12】
Figure 0003658079
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+〔Log2m〕-1)ビットデータ列を加算すれば最終的な演算結果が得られる。全加算器通過段数は、
【0138】
【外13】
Figure 0003658079
で表わせる。上式より、多ビットデータの数が増大しても全加算器通過段数は低く抑えられることがわかる。
【0139】
また、フラグビットのところで小さな全加算器を通しているが、これを1段とすると、
【0140】
【外14】
Figure 0003658079
となる。一方、そこに全加算器を持たせずに、フラグビットをlとした時、lビットのみが1となるデータ列を最後に加算すると考えると、データ列は 〔Log2m〕+1個あると考えられるので、全加算器通過段数は、
【0141】
【外15】
Figure 0003658079
で表せる。いずれにせよ、ビット数が増えても、全加算器通過段数は低く抑えられることがわかる。
【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よりの出力であり、その反転をインバータで形成し、データ列BSF を形成している。(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にまとめることができる。図29のNDには入力数および出力数が数字で示してあるが、最高で21入力を最大49までカウントできるNDを用いればよい。それぞれ6ビットの出力となる。ND91では、0桁目が単位容量Cに入力され、1桁目は2C、2桁目は22 =4Cに入力される。
【0152】
また、フラグビット(8ビット目)と数値ビット(7ビット目、MSB(most significant 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】
Figure 0003658079
と表せる。各々次の桁も、LSB (least significant bit) も同様に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〕 個のデータ列へ変換することができる。最後に〔Log2m〕 個のデータ列を加算すれば最終的な演算結果が得られる。全加算器通過段数は、
【0163】
【外17】
Figure 0003658079
で表わせる。上式より、多ビットデータの数が増大しても全加算器通過段数は低く抑えられることがわかる。なお、この効率化は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との ANDをとって部分積を求める。他の方法、例えば実施形態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】
Figure 0003658079
で表わせる。よって、全加算器通過段数は図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,S85,S45,S05は、実施形態13の法則に則る。次の桁のS104,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を計算している間に Si5+Si4の計算を行なうことができる。同様にして、 Si3と Si2が出力された後、NDが Si1を計算している間に Si3+Si2を行なうことができる。このようにして、NDの結果が全て出力されるのを待たずに、第 2の加算工程を開始することで高速化が達成できる。
【0184】
極端な例としては、図34に示すように、 Si3の計算中に 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と同様である。この効率化により、図35の例では、2つのデータを1つにまとめることができる。これに限らず、2つ以上のデータであれば同様に効率化が図れる。
【0190】
更に高速化するために、第1、第2の加算工程を並列に実行する。図35では、NDからのデータとしては、8桁目のデータ、すなわちS70(Z7) が最も早く出力され、次いで7桁目のデータS61 S60、更に6桁目、5桁目の順である。そのために、図35の例では、例えば、1桁目の演算が終るのを待つことなく、S70 S51 S50+S61 S60 の演算を行なう。引き続き次の出力結果S42 S41 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との ANDをとって部分積を求める。他の方法、例えば実施形態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 に対して〔Log2n〕 で増加していくからである。しかしながら、ビット数が増えてもこの段数はLog 関数で増加するため、大きくは増大しないのは明らかである。
【0201】
並列演算であるので、入力数最大であるMin(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 の構成を示す。DSP に搭載される演算ユニットは、乗算器と累算器であり、乗算器は、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)が判断する。クロックドライバは外部からのクロックパルス(CLK )をもとにT0とT2の2相クロックを生成し演算ユニットやメモリ等に供給する。入出力レジスタ、演算ユニット及びメモリとデータのやりとりは16ビットバスを介して行う。
【0221】
本実施形態では、前述した16ビット×16ビット高速乗算器を、他の論理回路及びメモリー部と同一基板上に同一プロセスで形成している。
【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、相関演算部1403A、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で相関スコアを計算する。相関演算部1403Bから出力された相関スコアを元に、判定器1405で信号が復調される。
【0227】
SS通信は、信号を多ビットのコードに変換して送信することから、秘話性が高い、ノイズに対して強いといった優れた特徴を有しているが、送信する情報量が増大するため、実際の信号処理に関しては、受信した信号をPNコードと比較し、相関の高い状態を検出するために、図45に示すような加算回路で加算を繰り返す処理が必要となり、処理の負荷が膨大になるという問題点があった。
【0228】
しかしながら、上述の実施形態の演算装置でこの加算を行なうことで、拘束で素子数が少なく、低消費電力のSS通信受信回路が構成できる。従って、SS通信により無線通信を行なう携帯型情報機器を実現できる。
【0229】
更に、演算速度の高速化により、多量の情報の通信を可能とすると共に、素子数が少なく、低消費電力に対応できるため、図40に示すようなコンパクトなカード型送受信部2001を形成することが可能となる。従って、従来のパソコンのインターフェースを備えたPCMCIAカードにSS通信を使用することが容易になった。ここでは、PCMCIAカードを例にとったが、他のインターフェースに合わせることも容易にできる。入出力は通常のCMOSコンパチブルであり、上述の演算装置により、小型化、低消費電力化が容易に達成できる。
【0230】
また、ここではSS通信用のデータ処理装置を例に説明したが、これまで述べたようにCMOSコンパチブルな入出力インターフェースであり、複数の多ビットデータ、特に負数を含む複数の多ビットデータを加算する他のデータ処理装置、例えば、既に述べたDSPやCPU、画像や音声を処理する並列演算処理部に適用できる。更に、平均値や標準偏差を求める統計処理、最小自乗法などの数値演算にも利用できる。
【0231】
他にも、高速化、小型化、低消費電力化のメリットにより、ワイヤレスLANや、入出管理、課金システム、TV会議システムなどの各種システムを大きく改善できる。
【0232】
【発明の効果】
以上説明したように、本発明によれば、複数の多ビットデータの共通する桁について、当該桁の値を並列入力し、値が1である入力の個数を検出して2進表現で出力することにより各桁の加算を行ない、その加算結果の総和を求めるようにし、前記個数を検出する際に、入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定し、該判定の出力に基づいて値が1であるビットの個数を2進表現で出力することで、複数の多ビットデータを高速に加算することができる。
【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 Number 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 (25)

  1. 複数の多ビットデータを加算する演算処理装置であって、
    該複数の多ビットデータの共通する桁について、値が1である入力の個数を検出して2進表現で出力する個数検出手段に対して当該桁の値を並列入力することにより各桁の加算を行なう第1の加算手段と、
    該第1の加算手段による加算結果の総和を求める第2の加算手段とを有し、
    前記個数検出手段は、
    入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定する判定手段と、
    該判定手段の判定出力に基づいて値が1であるビットの個数を2進表現で出力する2進化手段とを備えることを特徴とする演算処理装置。
  2. 前記第1の加算手段は、前記複数の多ビットデータを、複数桁毎に加算することを特徴とする請求項1に記載の演算処理装置。
  3. 前記第2の加算手段は、前記第1の加算手段の加算結果のうちで、桁の重複のない複数の加算結果を合わせて1データとして、加算を行うことを特徴とする請求項1に記載の演算処理装置。
  4. 前記第1の加算手段は前記個数検出手段を複数有し、少なくとも1つの前記個数検出手段に、他の複数の前記個数検出手段の出力を入力することを特徴とする請求項1に記載の演算処理装置。
  5. 前記判定手段は、複数の多数決論理演算手段を有することを特徴とする請求項1に記載の演算処理装置。
  6. 前記複数の多数決論理演算手段の少なくとも1つが、複数の入力端子と、該複数の入力端子とスイッチ手段を介して接続された複数の容量手段と、該複数の容量手段が共通に接続されたセンスアンプとを有することを特徴とする請求項5に記載の演算処理装置。
  7. 前記複数の容量手段において、特定の容量手段の容量を、他の容量手段の複数個分の容量としたことを特徴とする請求項6に記載の演算処理装置。
  8. 前記センスアンプの出力が、前記複数の入力端子の少なくとも1つにフィードバック入力されることを特徴とする請求項6に記載の演算処理装置。
  9. 前記センスアンプの出力は、前記複数の入力端子の少なくとも1つに、ラッチ手段を介して接続されていることを特徴とする請求項6に記載の演算処理装置。
  10. 前記複数の多ビットデータは符号を表すフラグビットを含み、前記第1の加算手段は、前記複数の多ビットデータの各桁をフラグビットも含めて独立に加算することを特徴とする請求項1に記載の演算処理装置。
  11. 前記複数の多ビットデータは、負の数を2の補数または1の補数により表すことを特徴とする請求項10に記載の演算処理装置。
  12. 前記第2の加算手段は、前記第1の加算手段による異なる桁についての加算結果におけるそれぞれの桁よりn(n≧0)桁目の値を合わせて1データとして、加算を行うことを特徴とする請求項1に記載の演算処理装置。
  13. 前記第2の加算手段は、前記第1の加算手段による各桁についての加算結果におけるそれぞれの桁よりn(n≧0)桁目の値を合わせて1データとして、加算を行うことを特徴とする請求項1に記載の演算処理装置。
  14. 前記n桁目はそれぞれの桁についての加算結果の最上位桁であることを特徴とする請求項12に記載の演算処理装置。
  15. 前記第1の加算手段は、加算結果を最上位桁から順次出力することを特徴とする請求項14に記載の演算処理装置。
  16. 前記第2の加算手段は、前記第1の加算手段による1部の桁についての加算と並行して、前記第1の加算手段によって既に実行された他の1部の桁についての加算結果を用いて加算を実行することを特徴とする請求項1に記載の演算処理装置。
  17. 複数の多ビットデータを乗算する演算処理装置であって、
    該複数の多ビットデータの部分積を生成する部分積生成手段と、
    該部分積生成手段で生成された複数の部分積の共通する桁について、値が1である入力の個数を検出して2進表現で出力する個数検出手段に対して当該桁の値を並列入力することにより、各桁を独立に加算する第1の加算手段と、
    該第1の加算手段による加算結果の総和を求める第2の加算手段とを有し、
    前記個数検出手段は、
    入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定する判定手段と、
    該判定手段の判定出力に基づいて値が1であるビットの個数を2進表現で出力する2進化手段とを備えることを特徴とする演算処理装置。
  18. 前記部分積生成手段が、第1の多ビットデータの各ビットと、第2の多ビットデータの特定の1ビットとの部分積を同時に生成することを特徴とする請求項17に記載の演算処理装置。
  19. 前記部分積生成手段が、
    前記第1の多ビットデータの各ビットを並列に入力する入力手段と、
    該入力手段からの入力を、前記第2の多ビットデータの各ビットの値に応じてオン・オフするスイッチ手段とを有することを特徴とする請求項17に記載の演算処理装置。
  20. 前記部分積生成手段が、ゲート電極を共通化した複数のトランジスタを有することを特徴とする請求項17に記載の演算処理装置。
  21. 前記部分積生成手段が、複数のAND回路を有することを特徴とする請求項17に記載の演算処理装置。
  22. データを入力する入力手段と、
    データを記憶する記憶手段と、
    該記憶手段に記憶されたデータと前記入力手段より入力されたデータとを、所定の処理手順で処理する処理手段と、
    該処理手段の処理結果を出力する出力手段とを有し、
    前記処理手段が、
    複数の多ビットデータの共通する桁について、値が1である入力の個数を検出して2進表現で出力する個数検出手段に対して当該桁の値を並列入力することにより各桁の加算を行なう第1の加算手段と、
    該第1の加算手段による加算結果の総和を求める第2の加算手段とを具えて複数の多ビットデータの加算を実行し、
    前記個数検出手段は、
    入力がmビットであるとき値が1であるビットがi個以上あるか否かを各i(1≦i≦m)について並列して判定する判定手段と、
    該判定手段の判定出力に基づいて値が1であるビットの個数を2進表現で出力する2進化手段とを備えることを特徴とするデータ処理装置。
  23. 前記処理手段が、更に、複数の多ビットデータの部分積を生成する部分積生成手段を具え、該部分積生成手段の生成した部分積を、前記第1、第2の加算手段を用いて加算することにより、多ビットデータ同士の乗算を実行することを特徴とする請求項22に記載のデータ処理装置。
  24. 前記入力手段は信号を入力し、前記記憶手段は重み係数を記憶し、前記処理手段は、入力された信号に重み係数を乗じて累算することを特徴とする請求項22に記載のデータ処理装置。
  25. 前記入力手段は多ビット符号を入力し、前記記憶手段は多ビット符号を予め記憶し、前記処理手段は、入力された多ビット符号と記憶された多ビット符号との相関量を計算し、計算された相関量に基づいて入力された多ビット符号を復調することを特徴とする請求項22に記載のデータ処理装置。
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 JPH08339292A (ja) 1996-12-24
JP3658079B2 true 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
US20230238047A1 (en) * 2022-01-21 2023-07-27 National Tsing Hua University Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof

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
JP2011107972A (ja) * 2009-11-17 2011-06-02 Fujitsu Ltd 総和計算方法及び数値演算装置
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
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230238047A1 (en) * 2022-01-21 2023-07-27 National Tsing Hua University Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof
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

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
EP0741354A2 (en) 1996-11-06
JPH08339292A (ja) 1996-12-24
EP0741354B1 (en) 2004-07-28
CN1139777A (zh) 1997-01-08

Similar Documents

Publication Publication Date Title
JP3658079B2 (ja) 演算処理装置及びデータ処理装置
US11520584B2 (en) FPGA specialist processing block for machine learning
Samimi et al. Res-DNN: A residue number system-based DNN accelerator unit
US11809798B2 (en) Implementing large multipliers in tensor arrays
WO1996028774A1 (en) Exponentiation circuit utilizing shift means and method of using same
TWI263402B (en) Reconfigurable fir filter
JP3637073B2 (ja) 倍精度・単精度・内積演算および複素乗算が可能な乗算器
CN112558920A (zh) 有/无符号乘累加装置及方法
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258544A (zh) 乘法器、数据处理方法、芯片及电子设备
US8417761B2 (en) Direct decimal number tripling in binary coded adders
TW201939266A (zh) 快速向量乘累加電路
US5935202A (en) Compressor circuit in a data processor and method therefor
Balsara et al. Understanding VLSI bit serial multipliers
US20190272150A1 (en) Fast vector multiplication and accumulation circuit
JPH0981541A (ja) 累算器
Abraham et al. An ASIC design of an optimized multiplication using twin precision
KR20020047509A (ko) 여분 이진 부분곱을 이용한 복소수 승산방법 및 이를적용한 복소수 승산기
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
Adhikari et al. Performance Evaluation and Implementation of Parallel Multipliers
Mohan Fast algorithms for implementation of montgomery's modular multiplication technique
Pushpavalli et al. Compressors Based High Speed 8 Bit Multipliers Using Urdhava Tiryakbhyam Method
Cherian et al. A High Bit Rate Serial-Serial Multiplier in a Most Efficient Manner
Asadpour et al. The use of reversible logic gates in the design of residue number systems
Phalguna et al. New RNS-To-Binary Converters for Three-Moduli Set $\{2^{n+ 1}-1,\2^{n}-1,\2^{n+ k}\} $

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