JP3811354B2 - 演算処理用半導体回路および演算処理方法 - Google Patents

演算処理用半導体回路および演算処理方法 Download PDF

Info

Publication number
JP3811354B2
JP3811354B2 JP2000539404A JP2000539404A JP3811354B2 JP 3811354 B2 JP3811354 B2 JP 3811354B2 JP 2000539404 A JP2000539404 A JP 2000539404A JP 2000539404 A JP2000539404 A JP 2000539404A JP 3811354 B2 JP3811354 B2 JP 3811354B2
Authority
JP
Japan
Prior art keywords
data
digit
arithmetic
calculation
signal
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
JP2000539404A
Other languages
English (en)
Inventor
忠弘 大見
誠 今井
俊行 野澤
正典 藤林
光司 小谷
直 柴田
雄久 新田
Original Assignee
忠弘 大見
ユーシーティー株式会社
アイ・アンド・エフ株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 忠弘 大見, ユーシーティー株式会社, アイ・アンド・エフ株式会社 filed Critical 忠弘 大見
Application granted granted Critical
Publication of JP3811354B2 publication Critical patent/JP3811354B2/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
    • G06F7/4824Methods 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 using signed-digit representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Description

技術分野
この発明は、演算処理用半導体回路および演算処理方法に係り、特に、情報処理や機器の制御に使用される演算処理用半導体回路および演算処理方法に関する。
背景技術
情報処理などの分野では、半導体回路が数値演算や論理演算の処理を担う。したがって、半導体回路は、情報処理などの分野で非常に重要な部分であり、さまざまな回路が実際に設計されている。
半導体回路では、まず、アナログ情報とデジタル情報に分けられるが、高い信頼性を持った演算を行うためには情報をデジタル情報に変換した後に演算処理を行う必要がある。従って、本発明においては、アナログ情報は多値情報もしくはデジタル信号に変換して演算処理するということを原則とする。
デジタル化された情報は数値化されたことになり、その数値の取り得る範囲によって、8ビット、16ビット、32ビット、現在は64ビットや128ビットといったビット幅のデータが用いられている。このような多ビット情報を処理する回路形式を大別すると、ビットパラレル回路とビットシリアル回路に分けられる。
ビットパラレル処理は、全ビット分の演算回路を用意しておき、全ビット同時に入力し、演算処理を行う形式である。マイクロプロセッサを始め、現在のプロセッサのほぼ全数近くがこの形式を採用していると言っても過言ではないだろう。
ビットシリアル処理は、演算時間単位(通常はクロック)毎に、下位ビットから順番にビット単位でデータを入力し、演算処理する手法である。この形式は1ビットの演算回路を設計すればよく、面積が小さいという利点を持つ。しかし、この形式は下位桁から処理を行っているために、最上位桁のデータを取得するまでに非常に長い時間がかかるという欠点を持つ。
下位桁と上位桁でどちらが重要な情報であるかといえば、上位桁であることは当たり前である。それゆえ、最上位桁を英語でMost Significant Digit(最も重要な桁)と呼ぶ。しかしながら、従来のビットシリアル処理が下位桁から処理を行っていたのは、加算演算等における「桁上げ信号」の問題があるからである。
加算演算で発生する、桁上げ信号と加算結果には、まず、そもそもの数字としての桁(10進数の位)が違い、同列に取り扱うことができない。
また、最下位桁から発生する桁上げ信号が最悪の場合最上位桁まで伝播する可能性を秘めており、最下位桁から解と桁上げ信号を決定していく必要がある。この桁上げ伝播の問題を解決しないことには、本発明にあたる、上位桁からの演算処理は不可能である。
当然、桁上げ信号に相当するものがない演算、たとえば単なる大小判断回路などでは上位桁からの比較判断を含む演算処理半導体回路というものが存在している。しかしながら、桁上げ信号を含むような演算処理を含む上位桁からの演算処理という発明は皆無である。
この発明は、より重要な情報を含む上位桁を優先し、上位桁から順番にビットシリアル形式で演算処理が行える演算処理用半導体回路および演算処理方法を提供することを目的とする。
そのため、加算等演算における桁上げ信号の桁あわせの問題を第1の課題とし、桁上げ伝播の問題を解決することを第2の課題とし、ビットシリアル形式の演算速度の問題を解決することを第3の課題とし、乗算を含めその他の複雑な演算・処理を上位桁から行えるようにすることを第4の課題とする。
発明の開示
この発明が対象にしている演算は、上位桁から、時間ステップ(演算時間単位)毎にビットシリアルで入力されたデータに対する演算であり、発生する桁上げ信号を様々な手法を用いて解決し、結果として様々な用途を実現しようとするものである。
この発明による演算処理用半導体回路は、複数の桁で構成される数のデータが1つ以上入力され、かつ、前記数のデータの上位桁側から演算時間単位につき1桁毎に順に入力される演算処理用半導体回路であって、前記入力されたデータの演算をする演算ユニットを備え、前記演算ユニットは、入力された桁のデータを演算時間単位内で演算し、演算で得た結果を示す演算結果を出力し、演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する演算回路と、前記演算回路からの演算結果を1演算時間単位分だけ遅延する遅延手段とを具備した演算ユニットを具備するものである。この遅延により、桁上げ信号を桁上げ信号として特殊扱いする必要はなくなり、第1の課題の解決がなされる。
この発明による演算省略用半導体回路による桁上げ信号伝播の問題は、(1)出力されるデータが冗長な数系に属することを特徴とする手法、(2)ある桁の演算により上位桁へ出力する前記桁上げデータが、この桁よりも下位の桁の演算で発生する桁上げデータで変化するか否かを判断する第1判断手段と、前記第1判断手段の判断結果が下位桁から出力される桁上げデータに依存しないことを示すとき、桁上げデータの変更がないことを上位側へ示す出力手段と、前記第1判断手段の判断結果が下位桁から出力される桁上げデータに依存することを示すとき、下位側の桁上げデータを待つ入力手段と、下位側からの下位桁の桁上げデータに応じて、前記演算結果を変える変更手段とを備えたことを特徴とする手法、(3)上位桁から演算時間単位毎に順に演算を行い、入力されている桁よりも下位桁で取り得る演算結果の最大値と最小値とを演算する算出手段と、前記算出手段が演算した最大値および最小値の少なくとも一方に対して、別の桁のデータとの比較を行う比較手段とを備えたことを特徴とする手法、の3つの手法のいずれか一手法により、第2の課題の解決される。
この発明による演算処理用半導体回路は、上位桁から前記演算時間単位毎に順に出力される演算結果に対して、上位桁から前記演算時間単位毎に比較および判断をする判断手段を備え、前記判断手段の判断結果の真偽が確定した場合に、残りの下位桁について比較および判断を含む演算処理を省略することを特徴とするものである。これにて、第3の課題の解決される。
また、この発明による演算処理用半導体回路は、2つのデータの一方を被乗数とし、他方を乗数とし、前記乗数が上位桁から演算時間単位毎に順に入力され、2つのデータの乗算を行いその結果を上位桁から演算時間単位毎に順に出力する演算処理用半導体回路であって、前記乗数を1演算時間単位毎にシフトしながら記憶する記憶手段と、前記記憶手段からの乗数と、前記被乗数との部分積をそれぞれ算出し、演算時間単位毎に最上位桁から順番に、乗算における同一桁の部分積を全て生成して出力する第1演算手段と、前記第1演算手段からの同一桁を示す前記部分積をすべて加算して、1つの乗算結果を上位桁から出力する第2演算手段とを備えるものである。こうして第4の課題の解決される。
この発明による演算処理方法は、複数の桁で構成される数のデータが1つ以上入力され、かつ、前記数のデータの上位桁側から順に入力される演算処理方法であって、入力された桁のデータを演算時間単位で演算し、演算で得た結果を示す演算結果を出力する第1処理と、前記第1処理の演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する第2処理と、前記演算結果を1演算時間単位分だけ遅延する第3処理とを含む。
発明を実施するための最良の形態
次に、この発明の実施の形態について、図面を参照して説明する。
なお、以下の説明の中で、「桁」が次のことを意味する。つまり、データが数値で表現されているとき、「桁」は、このデータの演算処理をする際の単位となる慨念であり、10進数で言う「位」である。「演算」は、数値演算に限らず、論理演算を含む。特に、「上位桁」が現在処理している桁よりも一桁分大きい桁を表し、「下位桁」が一桁分小さい桁を表す。「上位桁側」とは、処理している桁から連続した複数桁の上位の桁を表し、「下位桁側」とは、処理している桁よりも連続した複数桁の下位の桁を表す。
さらに、「冗長な数系」とは、N進数の各桁に、N+1個以上の数を許す数系を示す概念である。
[発明の実施の形態1]
実施の形態1は、データを加算する演算処理用半導体回路に対して、この発明を適用したものである。実施の形態1では、冗長n進数系として2進SD(Signed Digit)数系が用いられている。
2進SD数系は、冗長数系の1つであり、「0」と「1」との組み合わせで構成される2進数に対して、「−1」という本来ない冗長な値の数字を許可する。この2進SD数系を用いた計算規則の例を、次の表1に示す。以下の説明では、たとえば、データ「010」が2進SD数系で示されているときには、このデータを「010」SDで表し、データ「010」が2進数系で示されているときには、このデータを「010」で表す。また、10進数系で示されているデータ「2」を「2」で表す。
Figure 0003811354
Figure 0003811354
なお、表1の中では、印「・」の前にある2文字が「Carry(キャリー)」を表し、後にある1文字が「Sum(サム)」を表す。表1は、値Aと値Bとの加算を示す計算規則である。2つの値の加算結果が「Sum」の値と「Carry」の値とで表される。このとき、「Sum」が値Aと値Bの加算値を示し、「Carry」が桁上げデータを示す。以下では、「Carry」を桁上げ信号と記し、「Sum」を加算信号と記す。「Carry」として「1」〜「−1」まで発生する可能性があり、また、複数の表現手法がある組み合わせも存在する。
この2進SD数系によれば、たとえば、加算の場合に最下位桁から計算が行われたとき、加算で発生する桁上げ信号が上位の2桁までしか伝えずに加算する手法がある。つまり、桁上げ信号は、この信号が発生した桁から上位の2桁の加算結果までしか影響を与えない。2進SD数系には、このような特徴がある。
この2進SD数系を用いた演算処理用半導体回路を図1に示す。図1の演算処理用半導体回路は、加算器1〜3とメモリ4,5とを備えている。
加算器1は、演算処理用半導体回路の中で、初段つまり入力側の演算回路である。加算器1には、データa1とデータa2とが入力される。データa1は、数の中で1つの桁を表し、データa2は、別の数の中で1つの桁を表す。数は2進SD数系で示されているためデータa1,a2はともに「−1」,「0」,「1」のいずれかである。データa1,a2が示す桁は、数の中の最上位から順に加算器1に入力される。
加算器1は、制御信号に含まれるパルスの立ち上がりで、データa1,a2を読み込み、次の制御信号の立ち上がりまでの間に、データa1とデータa2との加算を行う。データa1とデータa2との加算に際して、加算器1は、次の表2に示す加算規則に従う。
Figure 0003811354
データa1,a2が示す各桁の値が、「−1」〜「1」の範囲であるので、加算器1内部での加算結果が「−2」〜「2」の範囲になる。加算結果が「−2」であるとき、加算器1は、2進SD数系の桁上げ信号c1の値を「−1」にし、加算信号s1の値を「0」にする。加算器1は、値「−1」の桁上げ信号c1を加算器2に出力し、値「0」の加算信号s1をメモリ4に出力する。
加算器1内部での加算結果が「2」であるとき、加算器1は、桁上げ信号c1の値を「1」にし、加算信号s1の値を「0」にする。加算器1内部での加算結果が「0」であるとき、加算器1は、桁上げ信号c1と加算信号s1との値を「0」にする。
加算器1内部での加算結果が「−1」であるとき、加算器1は、桁上げ信号c1の値を「−1」にし、加算信号s1の値を「1」にする。加算器1内部での加算結果が「1」であるとき、加算器1は、桁上げ信号c1の値を「0」にし、加算信号s1の値を「1」にする。つまり、内部での加算結果が「−1」または「1」の値になったときに、加算器1は、加算信号s1の値として「1」を出力する。
メモリ4は、制御信号d1の立ち上がりで、加算器1からの加算信号s1を記憶する。この制御信号d1の立ち上がりから次の制御信号d1の立ち上がりまでが演算時間単位(ステップ)になる。つまり、メモリ4は、制御信号d1の1演算時間単位分(制御信号のパルスと次のパルスとの間)だけ、加算信号s1の値を遅延して、加算器2に出力する。実施の形態1では、メモリ4として、パルスの立ち上がりでデータを読み込むDフリップフロップが用いられている。また、Dフリップフロップの代わりとして、RSフリップフロップやJKフリップフロップがある。
加算器2は、演算処理用半導体回路の中で、中段の演算回路である。加算器2には、桁上げ信号c1と加算信号s1とが入力される。このとき、加算信号s1がメモリ4で遅延されるので、加算器2には、図2に示すような組み合わせの桁上げ信号c1と加算信号s1とが入力される。加算器2は、制御信号の立ち上がりのタイミングT1で、桁上げ信号c1T1および加算信号s1T1を出力し、タイミングT2で、桁上げ信号c1T2および加算信号s1T2を出力する。また、タイミングT3で、桁上げ信号c1T3および加算信号s1T3を出力する。
このような状態のとき、加算信号s1T1〜s1T3がメモリ4によって遅延されるので、加算器2には、桁上げ信号c1T2および加算信号s1T1の組み合わせがタイミングT2で入力され、桁上げ信号c1T3および加算信号s1T2の組み合わせがタイミングT3で入力される。
加算器2は、制御信号のパルスの立ち上がりで、桁上げ信号c1および加算信号s1を読み込み、次の制御信号の立ち上がりまでの間に、桁上げ信号c1と加算信号s1との加算を行う。桁上げ信号c1と加算信号s1との加算に際して、加算器2は、次の表3に示す加算規則に従う。
Figure 0003811354
桁上げ信号c1の各桁が「−1」〜「1」の範囲の値であり、加算信号s1の各桁が「0」,「1」の値であるので、加算器2内部での加算結果が「−1」〜「2」の範囲になる。加算器2内部での加算結果が「2」であるとき、加算器2は、2進SD数系の桁上げ信号c2の値を「1」にし、加算信号s2の値を「0」にする。加算器2は、値「1」桁上げ信号c2を加算器3に出力し、値「0]加算信号s2をメモリ5に出力する。加算器2内部での加算結果が「0」であるとき、加算器2は、桁上げ信号c2と加算信号s2との値を「0」にする。
加算器2内部での加算結果が「−1」であるとき、加算器2は、桁上げ信号c2の値を「0」にし、加算信号s2の値を「−1」にする。また、加算器2内部での加算結果が「1」であるとき、加算器2は、桁上げ信号c2の値を「1」にし、加算信号s2の値を「−1」にする。このように、内部での加算結果が「−1」または「1」になったときに、加算器1と異なり、加算器2は、加算信号s2の値として「−1」を出力する。これは、2進SD数系が冗長数系であるので、1つの数を2通りに示すことができる点が、加算器2で利用されている。
メモリ5は、メモリ4と同じである。つまり、メモリ5は、制御信号d2の立ち上がりで加算器2からの加算信号s2を読み込む。これによって、メモリ5は、制御信号の1演算時間単位分だけ、加算信号s2の値を遅延し、遅延した加算信号s2を加算器3に出力する。
加算器3は、演算処理用半導体回路の中で、後段つまり出力側の演算回路である。加算器3には、桁上げ信号c2と加算信号s2とが入力される。このとき、加算信号s2がメモリ5で遅延されているので、加算器3には、1つ前の演算時間単位で加算器2が出力した加算信号s2が入力される。
加算器3は、制御信号のパルスの立ち上がりで、桁上げ信号c2および加算信号s2を読み込み、次のパルスの立ち上がりまでに、桁上げ信号c2と加算信号s2との加算を行う。桁上げ信号c2と加算信号s2との加算に際して、加算器3は、次の表4に示す加算規則に従う。
Figure 0003811354
桁上げ信号c2が用いることができる値が、「0」,「1」であり、加算信号s2が用いることができる値が、「−1」,「0」であるので、加算器3内部での加算結果が「−1」〜「1」の範囲になる。加算器3は、内部での加算結果をそのままデータa3として出力する。つまり、加算器3の加算結果には、2進SD数系の桁上げを示す桁上げ信号が含まれていない。
次に、実施の形態1の動作について説明する。
ここでは、例として、データ[100]SDとデータ[00−1]SDとの加算、つまり、
[100]SD+[00−1]SD
を説明する。2つのデータが、
[100]SD=[4]
「00−1]SD=[−1]
であるので、加算結果が10進数系で値[3]になる。この加算の演算が次のようにして行われる。
図3に示すように、制御信号のタイミングT1で、[100]SDの最上位の桁を表す「1」と、[00−1]SDの最上位の桁を表す「0」とが、前段の回路から加算器1にデータa1,a2として入力される。これによって、内部での加算結果が「1」になるので、加算器1は、表2に示される加算規則に従って、桁上げ信号c1の値を「0」にし、加算信号s1の値を「1」にする。メモリ4は、加算器1から「1」を受け取ると、次のタイミングT2でこの値を出力する。この結果、値「1」の加算信号s1を受け取った時点では、値「0」の加算信号s1を出力する。
加算器2は、加算器1から受け取った桁上げ信号c1の値「0」と、メモリ4から受け取った加算信号s1の値「0」とを加算する。これによって、内部での加算結果が「0」になるので、加算器2は、表3に示される真理値表に従って、桁上げ信号c2と加算信号s2との両方の値を「0」にする。メモリ5は、前のタイミングのときに受け取った値「0」を出力する。
加算器3は、加算器2から受け取った桁上げ信号c2の値「0」と、メモリ4から受け取った加算信号s2の値「0」とを加算する。これによって、内部での加算結果が「0」になるので、加算器3は、表4に示される加算規則に従って、データa3の値を「0」にする。
こうして、制御信号のタイミングT1では、最上位の桁の演算結果として、値「0」のデータa3が、後段の回路に出力される。
制御信号のタイミングT2で、データ[100]SDの中の、最上位の桁から2番目の桁「0」と、データ[00−1]SDの中の、最上位の桁から2番目の桁「0」とが前段の回路から加算器1に入力される。タイミングT1の場合と同じように、加算器1〜3が2〜4の加算規則を用い、また、メモリ4.5が値を遅延して、2番目の桁が加算される。この結果、制御信号のタイミングT2では、値「1」のデータa3が後段の回路に出力される。
制御信号のタイミングT3で、データ[100]SDの中の、3番目の桁「0」と、データ[00−1]SDの中の、3番目の桁「−1」とが前段の回路から加算器1に入力される。タイミングT1の場合と同じように、加算器1〜3とメモリ4.5とが3番目の桁を加算する。この結果、制御信号のタイミングT3では、値「−1」のデータa3が後段の回路に出力される。
制御信号のタイミングT4では、演算の終了のために、前段の回路がデータa1,a2として、値「0」を加算器1にそれぞれ入力する。この結果、タイミングT4では、値「0」のデータa3が後段の回路に出力される。制御信号のタイミングT5では、同じく演算の終了のために、前段の回路がデータa1,a2として、値「0」を加算器1にそれぞれ入力する。この結果、タイミングT4では、値「−1」のデータa3が後段の回路に出力される。
タイミングT1〜T5によって、加算器3が後段の回路に出力するデータの値が[01−10−1]SDとなる。このデータが10進数で[3]になるので、正しい結果が出力されている。
このように、実施の形態1によれば、2つのデータの加算に際して、桁上げ信号が発生しないので、最上位の桁からの加算が可能になる。つまり、遅延手段としてメモリ4.5を備え、かつ、必要な桁分の演算回路1〜3だけの、非常に簡単な構成によって、上位桁からの一桁または複数桁単位で、すべての加算を処理することができる。つまり、小規模な回路で加算を実現できる。
また、上位桁からの加算に限らず、減算を含め、桁上げ信号が必要な演算は全て実現できることになる。一般に情報は下位桁よりも上位桁のほうが重要な要素であるため、上位桁から処理することで、有効な情報をより先に取得することができることになる。また、回路として1桁分の演算回路であるため、小型化できる特徴も持ち合わせる。
なお、実施の形態1では、データa1,a2の値として2進SD数系を用いたが、通常の2進バイナリを用いてもよい。各制御信号としてクロックパルスを用いてもよい。このときには、メモリ4,5がクロックのエッジで値を記憶するようにする。
また、10進11値といった冗長数系でも、実施の形態1と同様の回路形式で加算が可能である。冗長数が負である必要はなく、正の方向に伸ばしても問題はない。実施の形態1では、加算器を3段で構成しているが、加算器を4段以上にすると、上位桁からの多入力の加算を実現することができる。
さらに、2進SD数系で発生する桁上げ信号が上位の2桁まで伝わるが、2進SD数系に比べてさらに、冗長度の大きな数系によれば、桁上げ信号の伝搬が上位の1桁で収まる。このために、加算器を2段にすることができる。
[発明の実施の形態2]
実施の形態2では、実施の形態1の加算器1,2を次のようにして具体化している。つまり、このために、「0」と「1」の組み合わせで構成される、2桁の2進数を用いる。2桁の2進数によれば、4通りの「0」と「1」の組み合わせがある。実施の形態2では、2進SD数系の「0」が2通りの2進数で表される。したがって、2進数による2進SD数系の「1」、「0」、「−1」は、次のように表現される。
2進SD数系の「−1」…[11]
2進SD数系の「0」 …[00][10]
2進SD数系の「1」 …[01」
このように表された2進SD数系の「1」、「0」、「−1」によると、加算器1は次のようになる。たとえば、データa1が「0」であり、データa2が「−1」である場合、加算器1には、値が[00]Bであるデータa1が入力され、値が[11]であるデータa2が入力される。
加算器1内では、2進SD数系の表現によると、加算結果が「−1」である。この場合、表2によれば、桁上げ信号の値が「−1」であり、加算信号の値が「1」である。したがって、加算器1は、桁上げ信号として[11]を出力し、加算信号として[01]を出力する。
このように、加算器1の場合、入力が[00]と[11]とである場合、出力が[11]と[01]とである。さらに、この他の入力と出力との組み合わせに基づいて、ANDゲート、ORゲートおよびNOTゲートを用いて加算器1を構成することができる。
なお、2進SD数系を構成する値「−1」、「0」、「1」には、2進数の各種の対応がある。そして、この対応に応じて、ANDゲート、ORゲートおよびNOTゲートのAND、OR、NOTに限定されない組み合わせが可能である。
また、ANDゲート、ORゲートおよびNOTゲートの組み合わせによる回路構成以外に、他の論理関数の組み合わせでも設計が可能である。
[発明の実施の形態3]
実施の形態3では、実施の形態1の加算器1,2が次のような構造である。
つまり、加算器1として、図4に示す加算器が用いられている。図4の加算器101は、ニューロンMOS(Metal Oxide Semiconductor)トランジスタを用いて作られたニューロンMOSインバータ101A〜101Cとインバータ101D〜101Fとを備えている。
ニューロンMOSトランジスタ101A〜101Cは、順次に接続されている。
ニューロンMOSインバータ101Aの出力がニューロンMOSインバータ101Cとインバータ101Fとに接続され、ニューロンMOSインバータ101Bの出力がニューロンMOSインバータ101Cとインバータ101Eとに接続されている。また、ニューロンMOSインバータ101Cの出力がインバータ101Dに接続されている。
2ビットで構成されるデータa4およびデータa5は、図1のデータa1およびデータa2に相当している。冗長な数系の数の桁が、データa4,a5で表されている。1本の信号線を伝わる電気信号によって、データa4,a5を表現することができない。したがって、データa4,a5を表現するためには、2本の信号線が必要である。
実施の形態3では、「−1」SDを「00」として表現し、「0」SDを「10」または「01」として表現し、「1」SDを「11」として表現する。この表現によれば、ニューロンMOSにとって、処理が最も簡単になる。すなわち、2本の信号線のうち、“1”の数が0個のときに「−1」SDを示し、“1”の数が1個のときに「0」を示し、“1”の数が2個のときに「+1」SDを示す。この“1”の数の情報と元のSD数の関係には線形性があり、かつ、“1”の数をニューロンMOSでは、等しい容量の2つの入力端子にそれぞれの信号線を入力すれば簡単に計算が行えるからである。
ニューロンMOSインバータ101A,101Bには、しきい値が設けられている。加算結果が「−0.5」および「1.5」である場合に、出力が反転するように、しきい値が設定されている。そして、それぞれの出力を反転することで、桁上げ信号c3が出力される。桁上げ信号c3の冗長数と電気信号のコードとは、データa4,a5と同じである。同時に、ニューロンMOSインバータ101Bの出力がニューロンMOSインバータ101Cに入力される。さらに、インバータ101DがニューロンMOSインバータ101Cの出力を反転することで、加算信号に相当するs3が出力される。s3は図1のs1に相当している。
図5は、実施の形態1の加算器2に相当するものである。図5の加算器は、ニューロンMOSインバータ201A,201Bを備えている。ニューロンMOSインバータ201A,201Bは、順次に接続されている。ニューロンMOSインバータ201Aの出力がニューロンMOSインバータ201Bとインバータ201Cとに接続され、ニューロンMOSインバータ201Bの出力がインバータ201Dに接続されている。
前段の加算器からの中間和成分s3と桁上げ信号c3とが加算される。内部の加算結果が「−0.5」のときにニューロンMOSインバータ201Aの出力が反転し、その出力をインバータ201Cが反転して、桁上げ信号c4が出力される。同時に、ニューロンMOSインバータ201Aの出力がニューロンMOSインバータ201Bに入力されることで、加算結果成分s4が出力される。加算結果成分s4は、ロウレベルのときに「−1」を、ハイレベルのときに「0」を表現している。c4とs4はそれぞれ図1のc2とs2に相当している。
実施の形態1の加算器3に相当する加算器は、ニューロンMOSトランジスタを用いた場合には不要になる。加算器201からの中間和成分s4を1演算時間単位分だけ遅延素子にて遅らせる。桁上げ信号c4と、遅延した加算結果成分s4とをペアにして出力する。遅延素子は実施の形態1のメモリ4である。このペアの出力は、図1のa3に相当し,冗長数と2本の信号線の対応は、a4,a5のものと同じである。
このように、ニューロンMOSトランジスタを用いると、極めて容易に回路を実現することができる。また、2進SD数に限定されることなく、基数を増加させた冗長加算器や、4入力といった入力数を増加させた冗長加算器、基数の増加と冗長数の増加とにより、遅延素子が1つ(上位一桁への桁上げ信号の伝搬)の冗長加算器が容易な回路で実現することができる。
なお、実施の形態3では、ニューロンMOSトランジスタの演算用の基本ゲートとして、インバータ回路を用いているが、任意のしきい値の設定が可能であり、かつ、出力がバイナリ「0」、「1」である形式のものであれば、インバータ回路に限定されることがない。たとえば、センスアンプ形式の論理回路を用いてもよい。
[発明の実施の形態4]
実施の形態4は、第1と第2の数の差、第3と第4の数の差の小さい方を演算し、出力する演算処理用半導体回路に対して、この発明を適用したものである。この演算半導体回路を図6に示す。図6の演算処理用半導体回路は、差分絶対値回路6,7、5メモリ8,9および最小値回路10を備えている。
差分回路6には、第1の数の1つの桁を表すデータa6と、第2の数の1つの桁を表すデータa7とが入力される。データa6,a7は、最上位の桁から順に差分回路6に入力される。差分回路6は、入力されたデータa6とデータa7との差分を算出し、算出した差分を表す差分信号b6をメモリ8に出力する。
同じように、差分回路7には、第3の数の1つの桁を表すデータa8と、第4の数の1つの桁を表すデータa9とが入力される。データa8,a9は、最上位の桁から順に差分回路7に入力される。差分回路7は、入力されたデータa8とデータa9との差分を算出し、算出した差分を表す差分信号b7をメモリ9に出力する。
メモリ8,9は、制御クロックc6で動作する。メモリ8,9として、たとえば、Dフリップフロップを用いれば、メモリ8,9は、制御クロックc6のエッジトリガによって、記憶している内容を更新する。つまり、メモリ8,9は、1演算時間単位前の差分信号b6,b7を最小値回路10に出力する。
最小値回路10は、メモリ8,9からの差分信号b6,b7の大小関係に応じて、信号を出力する。つまり、差分信号b6が差分信号b7に比べて小さい場合、差分信号b6を出力する。この状態が第1状態である。差分信号b7が差分信号b6に比べて小さい場合、最小値回路10は、差分信号b7を出力する。この状態が第2状態である。また、差分信号b6と差分信号b7が等しい場合、最小値回路10は、差分信号b6と差分信号b7とのどちらの信号を出力してもよい。この状態が第3状態である。
そして、リセット信号が最小値回路10に加えられるまで、最小値回路10が第1状態や第2状態から抜け出ることがない。
次に、実施の形態4の動作について説明する。
差分回路6がデータa6とデータa7との差分を算出し、絶対値回路7がデータa8とデータa9との差分を算出する。算出結果は、差分信号b6,b7として出力される。
差分信号b6,b7は、メモリ8,9に入力される。このとき、制御クロックc6により記憶内容が更新される。メモリ8,9の出力は、前回の演算結果であり、一桁上位の差分結果である。このように、メモリ8,9は、演算した結果を記憶する。つまり、メモリ8,9は、差分信号b6,b7を遅延して、桁情報の仕切りとして動作する。
メモリ8,9は、記憶している差分信号b6,b7を最小値回路10に出力する。最小値回路10は、差分信号b6,b7の中の小さい方の値を選択する。そして、最小値回路10は、選択した差分信号を出力する。
この後、制御クロックc6の次のパルスによって、データa6〜a9の桁が次に移ると、演算が一桁下位に移り、上位桁から下位桁に向かって演算が進んで行く。
このように、実施の形態4によれば、差分の小さい方の値を上位桁から順に出力することができる。通常、最小値の判断に際して、データを構成する桁の中の上位桁から順に調べる必要がある。この結果、実施の形態4は、上位桁からの演算に適している。
また、異なった演算器を多段に配置することで、複雑な演算の組み合わせを実現することができる。
これは、上位桁からの処理の特徴である。なお、実施の形態4では、演算が2段になっているが、2段以上であれば何段でもよい。
また、桁情報の区切りおよび記憶をするメモリが必ずしも各段にある必要がなく、最終段の出力に設けられていなくてもよい。
[発明の実施の形態5]
実施の形態5では、差分の絶対値を算出する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図7に示す。図7の演算処理用半導体回路は、差分回路11、正反転回路12、状態記憶回路13およびメモリ14を備えている。
差分回路11には、第1の数の1つの桁を表すデータa11と、第2の数の1つの桁を表すデータa12とが入力される。データa11,a12は、データを構成する桁の最上位桁から演算時間単位毎順に差分回路11に入力される。
差分回路11は、入力されたデータa11からデータa12を減算する。差分回路11は、差分の算出で発生した桁上げ信号b11を出力すると共に、減算した差分を示す差分信号b12を正反転回路12と状態記憶回路13とに出力する。
状態記憶回路13は、差分信号b12の状態を記憶する。差分演算には3つの状態がある。データa11とデータa12とのどちらが大きいが下位桁に判断をゆだねる状態、データa11が大きいと判断がついた状態、すなわち差分信号b12が正のとき、データa12が大きいと判断ついた状態、すなわち差分信号b12が負のときである。一度どちらかが大きいと判断がつくと、処理が終わるまでその状態を抜け出すことはない。状態記憶回路13は、これら3つの状態を記憶する。そして、データa12が大きいと判断ついた状態のとき、状態記憶回路13は、正反転回路12に反転命令を出力する。
正反転回路12は、差分信号b12の値の絶対値をとる。このために、正反転回路12は、状態記憶回路13が記憶している差分信号b12の状態を用いる。すなわち、データa12が大きい状態の場合、差分信号b12は負であるため、正反転回路12は、差分信号b12の各桁の正負を示す符号を反転する。正反転回路12は、こうして算出した差分信号b12の絶対値を示す絶対値信号c11を上位桁から順に出力する。
メモリ14は、制御クロックd11で動作し、正反転回路12からの絶対値信号c11を記憶する。
このような実施の形態5によって、メモリ14に記憶されている絶対値信号c11は、制御クロックd11の次のクロックで出力される。すなわち一演算時間単位分遅延させる。これによって、差分回路11が生成した桁上げ信号b11と、メモリ14が出力する絶対値信号c11とが同一時間で同じ桁を示すことになり、外部回路での取り扱いを容易にすることができる。
[発明の実施の形態6]
実施の形態6では、上位桁から行われる任意の演算に連続して、上位桁から比較・判断をし、真偽が確定した場合に残りの下位桁の比較・判断を含む演算処理を省略する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図8に示す。この演算処理用半導体回路は、2つの2進数の平均値について複数組の中から最大なものを探し出す回路であり、加算器21、遅延回路22、比較器23および記憶回路24を備えている。
加算器21には、第1の数の1つの桁を表すデータa21と、第2の数の1つの桁を表すデータa22とが入力される。データa21,a22は、最上位の桁から順に加算器21に入力される。加算器21は、入力されたデータa21とデータa22とを加算し、加算結果を示す加算信号b21を遅延回路22に出力する。この加算器は、実施の形態1で述べた回路であり、内部に遅延手段を持ち、外部へは桁上げ信号を発生しない。
遅延回路22は、加算器21から加算信号b21を受け取ると、制御クロックc21によって、加算信号b21を1演算時間単位だけ遅らせる。上位桁からの処理の場合、1演算時間単位の遅延は、桁を1つずらすこと、すなわち、12進数では2で割ったことに相当する。第1のデータおよび第2のデータは、2進数であるため、一桁分の遅れは、2で割ったことと同じになり、この結果、平均値が計算される。遅延回路22は、平均値を示す平均値信号d21を比較器23に出力する。
一方、記憶回路24は、比較器23が出力する最大の平均値信号d22を記憶している。そして、比較器23からの制御信号e22がオフであるとき、記憶している現在の平均値信号、つまり、過去の平均値の最大値を示す平均値信号を最上位桁から順に比較器23に出力する。また、比較器23からの制御信号e22がオンになると、記憶回路24は、出力を中止し、次からは再び最上位桁から順に最大平均値を出力するように準備をする。
比較器23は、遅延回路22からの平均値信号d21および記憶回路24からの過去の最大平均値信号を上位桁から順番に受け取る。比較器23は、遅延回路22からの平均値信号d21が示す値と、記憶回路24からの過去の最大平均値信号が示す値とを比較し、どちらが大きいかを判断する。そして、比較器23は、大きい方の平均値信号を記憶回路24に上位桁から順番に出力する。
また、2つの平均値信号の比較の際に、過去からの平均値の最大値、つまり、記憶回路24からの平均値信号が示す値の方が大きいと、比較器23が判断することができる場合がある。たとえば、2進SD数系であれば、遅延回路22からの平均値信号が[00−1...]SDであるのに対して、記憶回路24からの平均値信号が[010...]SDである場合が相当する。この場合、比較器23は、上位から数桁目の時点で、比較判定を確定することができる。この場合には、比較器23は、制御信号e22をオンにする。
制御信号をオンにした時点で、比較器23がそれ以降の下位桁の比較判断を止め、同時に、記憶回路24が平均値信号の出力を中止するので、平均値の計算や比較演算が中止される。そして、すべての演算回路のデータ転送を最上位桁からに戻し、次の桁のデータa21,a22に投入する。
こうして、データが上位桁から逐次比較され、比較された結果の中で大きな方を出力すると共に、最大値を更新できないと、比較判断がついた桁以降の比較を含む演算処理を省略することができる。この結果、無駄のない演算を実現することができる。
また、この無駄な演算の抑止によって、処理を高速化することができるばかりでなく、低消費電力回路の実現が可能になる。特に、大量のデータを処理する際に有効である。
演算の種類は平均値に限定されるものでもなく、比較・判断演算の種類も最大のものに限定されるものでもなく、何らかの演算した結果に対して比較・判断をする回路があればよく、たとえば、2つの数の差分値がある値以下のものを出力する回路などでもよい。
また、演算の停止命令後、速やかに次のデータを投入するためには、データa21やデータa22以前に、データのバッファが必要になることもある。
[発明の実施の形態7]
実施の形態7では、データが示す値の範囲を演算し、演算した結果が所定範囲に属するかどうかを判断する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図9に示す。図9の演算処理用半導体回路は、最大値出力用の加算器26A、最小値出力用の加算器26B、比較器27,28およびANDゲート29を備えている。
最大値出用の力加算器26Aは、上位桁から順に入力されるデータa26とデータa27との加算結果として、下位桁側によって取り得る値の中の最大値を算出する。そして、加算器26Aは、算出した最大値を示す最大値信号b26を出力する。
最小値出力用の加算器26Bは、データa26とデータa27との加算結果として、下位桁側によって取り得る値の中の最小値を算出する。そして、加算器26Bは、算出した最小値を示す最小値信号b27を出力する。
比較器27は、あらかじめ設定された上限値と加算器26Aからの最大値信号b26とを比較する。比較の結果、最大値信号b26が示す値が上限値に比べて小さくなったときに、比較器27は、真をc26に出力する。それ以外のときはc26は偽を出力する。
比較器28は、あらかじめ設定された下限値と加算器26Bからの最小値信号b27とを比較する。比較の結果、最小値信号b27が示す値が下限値に比べて大きくなったときに、比較器28は、真をc27に出力する。それ以外のときはc27に偽を出力する。c26,c27のいずれも真のときに「1」,偽のときに「0」となるようにする。
ANDゲート29は、比較器27からの出力c26と比較器28からの出力c27との論理積の演算をする。それぞれの比較器27,28が真を出力したとき、ANDゲート29が真を出力する。逆にc26,c27のどちらかが偽ならば出力も偽となる。
この実施の形態7によれば、たとえば、図10に示すように、加算結果が所定範囲に入ったどうかの判断を下せる。図10ではバイナリ2進数系を仮定している。つまり、初期状態では、加算器26Aが算出する最大値と、加算器26Bが算出する最小値との範囲が、全範囲B1になる可能性がある。最上位桁の演算結果が「0」である場合、それ以降の桁によって取り得る範囲は、[011...11]から[0000...0]までである。したがって、範囲B2が加算結果の中で取り得る部分である。この場合、比較器27,28のどちらも偽を出力している。
次の下位のデータa26,a27を用いた演算結果が、「1」である場合、最小値が「010...0」に変化する。この場合、範囲B3が加算結果の中で取り得る部分である。
次の下位のデータa26,a27を用いた演算結果が、「0」である場合、最大値が「01011..,1」に減少する。この場合、範囲B4が加算結果の中で取り得る部分である。このとき、範囲B4の最大値が上限値よりも小さくなっている。すなわち比較器27が真を出力するようになる。しかし、比較器28が偽を出力しているので全体の出力は偽のままである。
次の下位のデータa26,a27を用いた演算結果が、「1」になると、範囲B5のように、とりうる最小値が上限値よりも大きくなる。これによって、次の下位桁を演算することなく、上限値と下限値とで決められる所定範囲に、範囲B5が入っていることが分かる。この場合、比較器27.28の両方が真を出力するため、ANDゲート29の出力も真となる。
こうして、実施の形態7によって、データa26とデータa27との加算結果が所定範囲内に入るかどうかを検出することが可能である。
実施の形態7では、加算器26A,26Bを用いているが、最大値と最小値が検出できる回路構成であれば、どのような演算でもよい。
また、比較演算としては、上限値だけとの比較でも良く、下限値だけとの比較でもよい。演算も加算に限定されるものではない。
さらに、図示を省略しているが、上限値と最小値との比較、あるいは下限値と最大値との比較を行うことで、所定範囲外のデータであるかどうかを検出することも可能である。
[発明の実施の形態8]
実施の形態8では、演算機能の切り替えが可能な演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図11に示す。図11の演算処理用半導体回路は、上位桁から処理することが可能な汎用回路31,32とメモリ33とを備えている。
汎用回路31は、上位桁からの加算機能や上位桁から比較機能等の複数の上位桁から順に処理できる演算機能を持つ回路である。汎用回路31は、制御信号c31が示す命令によって、複数機能の中の1つを選択する。汎用回路31は、入力されたデータa31,a32を、選択した演算機能で処理する。この後、汎用回路31は、演算結果を示すデータb31をメモリ33に出力する。また、汎用回路31は、必要に応じて、上位桁の制御信号b32を出力する。
汎用回路32は、汎用回路31と同じように、加算機能や比較機能等の複数の上位桁から順に処理される演算機能を持つ回路である。汎用回路32は、制御信号c32が示す命令によって、複数機能の中の1つを選択する。汎用回路32は、入力されたデータa33やメモリ33からのデータb32を、選択した演算機能で処理する。
メモリ33は、汎用回路31からのデータb31を制御クロックd31によって、1演算時間単位だけ遅らせる。そして、メモリ33は、遅延させたデータb32を汎用回路32に出力する。
このような実施の形態8によれば、制御信号c31,c32によって演算機能をコントロールすることができ、制御信号c31,c32が示す命令に応じた答えを出力することができる。つまり、制御信号c31,c32を与えることによって、演算機能の任意の設定を可能にする。
なお、実施の形態8が2つの汎用回路と1つのメモリから成り立っているが、汎用回路とメモリの個数および組み合わせについては、特にこれに限定されるものではない。
また、汎用回路としては、各機能を行う回路を用意することで実現可能であり、ニューロンMOSトランジスタを用いたフレックスウェアでも実現することが可能あり、汎用回路が特に限定されるものではない。
さらに、この制御信号c31,c32が同じでもあっても、異なっていてもよい。たとえば、制御信号c31が加算命令を示し、制御信号c32が比較命令を示すという連続演算でもよく、また、c31とc32とを共に加算命令にして連続した桁を演算する命令でもよい。
[発明の実施の形態9]
実施の形態9では、アナログ信号を一般に逐次比較形式と呼ばれる上位桁から順にアナログ−デジタル(A/D)変換処理後のデータ処理を行う演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図12に示す。図12の演算処理用半導体回路は、A/D変換器36と演算回路37とを備えている。
A/D変換器36は、アナログ信号をデジタル信号に変換する手段である。A/D変換器36は、一般に逐次比較形式と呼ばれる変換方式により、デジタル信号に上位桁から順に変換する。たとえば2進数の場合、全体を2つの領域に分割して、どちらの領域に入力アナログ電圧が属するか判断する。判断結果が高電圧側ならば“1”、低電圧側ならば“0”を出力する。次いでアナログ電圧の属していた片方の領域を更に2つの領域に分割し、どちらの領域に属するか判断を下す。同じように高電圧側の領域に属していれば“1”を、低電圧側ならば“0”を出力させる。このような分割を判断をくりかえし、入力するアナログ電圧の属する領域の範囲を順に狭めていくことで、上位桁から逐次変換する。分割と判断は1演算時間単位毎に行う。
A/D変換器36の変換の様子を図13を用いて詳しく説明する。A/D変換器36に入力されたアナログ信号a36の電圧レベル(以下、入力電圧と記す)が破線で示したレベルであったとする。最初に、入力電圧が最大振幅の半分より大きいか小さいかを、A/D変換器36が判断する。この場合、最大振幅の全範囲A36を2つの小範囲に分け、入力電圧が最小側の1/2範囲に入るが、最大側の1/2範囲に入るかを判断する。この場合、入力電圧が最大側の1/2範囲に入るので、A/D変換器36は、第1ビットが「1」であるデジタル信号b36を出力する。
次の演算時間単位後に、最大側の1/2範囲A37をさらに2つの1/4範囲に分け、入力電圧が最小側の1/4範囲に入るか、最大側の1/4範囲に入るかを判断する。この場合、入力電圧が最小側の1/4範囲に入るので、A/D変換器36は、第2ビットが「0」であるデジタル信号b36を出力する。以下、同じようにして、A/D変換器36は、演算時間単位毎に1/4範囲A38では第3ビットの結果「1」を出力し、1/8範囲A39では第4ビットの結果「1」を出力する。
このように、A/D変換器36は、電圧の範囲を狭めて、アナログ信号a36をデジタル信号b36に変換する。このとき、A/D変換器36は、変換結果を上位ビットから順に出力する。このようなA/D方式は既知のものであるが、本特許では上位桁からの演算回路37と組み合わせ,かつ変換をこの演算回路と同期させることに特徴がある。
また、A/D変換器36は、演算回路37から制御信号b37を受け取ると、アナログ信号a36の上位桁からのA/D変換を中止する。
演算回路37は、A/D変換器36が出力するデジタル信号b36を受け取ると、デジタル信号b36に対して、あらかじめ設定された演算をする。そして、演算回路37は、演算結果に基づいて、アナログ信号a36をデジタル信号b36に変換する必要がないと判断すると、変換中止を示す制御信号b37をA/D変換器36に出力する。必要がないという判断は、たとえば、その時にA/D変換器に求める変換精度が得られた時や、何らかの判断手段の真偽が確定した場合などが考えられる。
このような実施の形態9によれば、制御信号b37をA/D変換器36に戻すことで、アナログ・デジタル変換を途中で中止し、次のアナログ信号を入力することが可能である。この結果、無駄な変換を抑止し、平均的な変換速度の向上、消費電力の低減などの利点が生まれる。
なお、実施の形態9では、デジタル信号b36として1ビット(2進数)毎の出力を得るために、電圧の範囲を1/2ずつ狭めていったが、複数ビット単位などの場合には、Nビット毎の出力を得るためには、電圧の範囲を2のN乗分の1にし、どの範囲に入るか判断を下していけばよい。
[発明の実施の形態10]
実施の形態10では、フレキシブルなビット幅のデータを転送できるバスを用いる演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路について図14を用いて説明する。図14では、メモリ41A,41Bがビットシーケンシャルメモリである。つまり、メモリ41A,41Bは、複数のデータを記憶し、データを演算単位の桁毎にデータバス42A,42Bに出力する。このとき、メモリ41A,41Bは、上位桁から下位桁に向かい順番に桁毎のデータを出力する。つまり、2進数においてはメモリ41A,41Bは、記憶しているデータの上位ビットから下位ビットに向かい、1ビットずつ順番に出力する仕組みを持っている。メモリ41A,41Bとしては、たとえば、シフトレジスタで構成されたものがある。
データバス42A,42Bを経由してメモリ41A,41Bに接続されている演算処理用半導体回路43は、データを上位桁から順に処理する演算回路もしくは演算ユニットである。
データバス42A,42Bは、一つのデータにつき1ビット幅のデータバスがあればよい。つまり、データバス42A,42Bのバス幅が、メモリ41A,41Bから同時に読み出せるデータ数(=並列度)に相当している。
このように、従来のバス幅がデータのビット幅、または、その倍数であったのに対し、実施の形態10によれば、全バス幅をメモリ41A,41Bから同時に読み出せるデータ数にすればよい。
なお、実施の形態10では、演算単位として1ビット単位を採用して説明をしたが、2ビット以上でもよく、本発明はそれに限定されないことは言うまでもない。
また、演算処理用半導体回路43として単一の回路を用いているが、特に一つの回路である必要はなく、上位桁から順に処理する演算処理用半導体回路であればよい。
[発明の実施の形態11]
実施の形態11では、上位桁からの加算により上位桁から乗算を行う演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図15に示す。図15の演算処理用半導体回路は、シフトレジスタ45A〜45H、部分積発生回路46A〜46Hおよび冗長加算器47A〜47D,48A,48B,49を備えている。
シフトレジスタ45A〜45Hは、全部で8ビットの乗算を想定し、8個のシフトレジスタであり、上位桁から入力されたデータをクロックのエッジにより順に45Hには45Gの内容がシフトされ、45Gには45Fの内容が、45Fには45Eの内容がシフトされ、以下同様に内容がシフトされ、45Aには新しい桁の乗数情報が入る。このデータは、乗数を示すデータの最上位桁から順に、シフトレジスタの45Aに入力される。シフトレジスタ45A〜45Hは、記憶された乗数データを部分積発生回路46A〜46Hに出力する。たとえば、最初のステップでは、シフトレジスタ45Aに乗数データの最上位桁が入り、部分積発生回路46Aにデータを出力する。残りの45B〜46Hには0が記憶されている。次のステップでは、45Bに最上位桁が記憶され、45Aには最上位から2桁目のデータが記憶され、部分積発生回路46A〜46Bにそれぞれ出力される。
部分積発生回路46A〜46Hは、8ビットの乗算のため、8回の部分積発生回路であり、シフトレジスタ45A〜45Hから出力される乗数と、全ビットが同時に入力されている被乗数との部分積を算出する。被乗数は、46Aに最上位桁、46Hに最下位桁が入るようになっている。そして、部分積発生回路46A〜46Hは、最上位桁から順番に、乗算における同一桁の部分積を加算回路へ出力する。
冗長加算器47A〜47D,48A,48B,49は、ツリー状の接続をしている。このツリー型接続によって、冗長加算器47A〜47D,48A,48B,49は、部分積発生回路46A〜46Hで発生した部分積を加算し、最終段の冗長加算器49で1つの乗算結果を上位桁から順に出力する。
このような構成によって、図16に示すように、乗算が筆算の形式に展開され、加算する部分積を縦割りした状態の、部分積列が生成・加算されることで乗算が実現される。図16では、縦割りにされた部分積の範囲が範囲A45で示されている。そして、部分積発生回路46A〜46Hからは、範囲A45の内部の8つの枠に入る数字が同一クロックで出力されることになる。1ステップ(演算時間単位)毎に範囲A45が下位桁(図16上では、右側)に移動し、一つ下位桁の部分積が範囲A45に現れることになる。こうして範囲を下位桁に移動することで部分積が上位桁から下位桁に向かい順に生成されることになる。冗長加算器47A〜47D,48A,48B,49によって、部分積発生回路46A〜46Hが生成して上位桁からの部分積を加算し、こうして上位桁からの乗算結果を得ることができる。
このように、実施の形態11によれば、上位桁からの加算によって、上位桁がらの乗算を行うことが可能になる。
なお、実施の形態11では、単純化のため、8ビット単位の乗算に対して、8つの部分積を発生しているが、一般に用いられているブースデコーダを用いて、同一時間に生成する部分積の数を減らしてもよい。
また、冗長加算器47A〜47D,48A,48B,49として、2入力1出力タイプのものを用いているが、上位桁からの加算が行える加算器なら何でもよく、たとえば、4入力1出力の冗長加算器等でもよい。
さらに、実施の形態11では、8ビットの乗算器を例にしているが、8ビットに限定されるものではなく、16ビットなど何でもよい。16ビットの場合には、生成される部分積が原則として16個になる。
[発明の実施の形態12]
実施の形態12は、実施の形態11の変形例である。つまり、実施の形態12では、乗算以外にも検索などを含む情報集約型の処理をする演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図17に示す。図17の演算処理用半導体回路は、汎用演算器51A〜51H,52A〜52D,53A,53B,54を備えている。
実施の形態12では、汎用演算器51A〜51H,52A〜52D,53A,53B,54がツリー状に接続されている。汎用演算器51A〜51Hが制御命令b51によって制御され、汎用演算器52A〜52Dが制御命令c52によって制御される。そして、汎用演算器53A,53Bが制御命令d53によって制御される。
たとえば、汎用演算器51A〜51Hは、制御命令b51によって指定される演算処理を、データa51〜a5116に対して行う。つまり、汎用演算器51A〜51H,52A〜52D,53A,53B,54が上位桁からの加算を行う機能を持てば、実施の形態11と同等の機能を果たす。また、汎用演算器51A〜51H,52A〜52D,53A,53B,54が上位桁からの最大値を出力する回路であれば、汎用演算器54から最大値が出力されることになる。
このように、この実施の形態12によれば、情報の絞り込み、または、情報の集約を行い、これによって、情報を一つにするという処理をすることが可能になる。つまり、乗算以外にも検索を含む他の情報集約型の処理が可能になる。また、上位桁からの演算原理により汎用演算器51A〜51H,52A〜52D,53A,53B,54が一桁の処理だけを行えばよいため、回路の小型化が可能になり、さらに、回路全体として並列度を向上することができる。
なお、実施の形態12では、16入力の回路について記述しているが、16入力にこだわる必要はなく、たとえば、8入力や32入力などでもよい。
[発明の実施の形態13]
実施の形態13では、加算を繰り返すことで上位桁からの乗算を実現する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図18に示す。図18の演算処理用半導体回路は、部分積発生回路55A〜55D、単体の遅延メモリ56A,56E遅延メモリ内蔵加算ブロック56B〜56Dおよび冗長加算器57を備えている。ここでは、4ビット乗算器としている。
部分積発生回路55A〜55Dには、被乗数a55が入力される。このとき、被乗数a55の最上位桁データが部分積発生回路55Dに入力され、最上位桁の一桁下位桁のデータが部分積発成回路55Cに入力され、最下位から2番目の桁のデータを部分積生成回路55Bに、最下位桁のデータを部分積発成回路55Aに入力している。また、部分積発生回路55A〜55Dには、乗数a56が入力される。乗数a56は、上位桁から演算時間単位に一桁ずつ順番に部分積発生回路55A〜55Dに同時に入力される。部分積発生回路55A〜55Dは、被乗数a55と乗数a56とから部分積を生成する。
部分積発生回路55A〜55Dからの部分積をメモリ56A、メモリを内蔵した加算器56B〜56Dで加算処理する。このために、加算器56Bは、メモリ56Aによって遅延された部分積発生回路55Aからの部分積と、部分積発生回路55Bからの部分積とを加算し、制御信号55eの次の立ち上がりで、桁上げ信号b55と加算信号b56とを出力する。すなわち、内部に演算結果を記憶し、1ステップ(演算単位時間)だけ遅らせる機能を持つ。メモリ内蔵型加算器56Cは、値「0」と、部分積発生回路55Cからの部分積とメモリ内蔵型加算器56Bの加算信号b56とを加算し、制御信号55eの次の立ち上がりで、桁上げ信号c55と加算信号c56とを出力する。
加算器56Dは、2つ下位の桁の加算をする加算器56Bからの桁上げ信号b55と、部分積発生回路55Dからの部分積とメモリ内蔵型加算器56Cからの加算信号c56とを加算し、制御信号55eの次の立ち上がりで、桁上げ信号d55と加算信号d56とを出力する。メモリ56Eは、2つ下位の桁の加算をする加算器56Cからの桁上げ信号c55とメモリ内蔵型加算器56Dの加算信号d56とを遅延して冗長加算器57に出力する。
メモリ56A,56Eとメモリ内蔵型加算器56B〜56Dとは、制御クロックe55によって、冗長加算器57側に向けてデータを1桁ずつ左シフトすることになる。また、メモリ内蔵型加算器56Dが発生した桁上げ信号d55と、その他の結果を同じ桁に変換するために、メモリ56Eが必要である。
冗長加算器57は、メモリ56Eが遅延した加算器56Dからの加算信号d56と、メモリ内蔵型加算器56Cからの桁上げ信号c55と、加算器56Dからの桁上げ信号d55とを用いて、上位桁からの加算を行う。この加算器は2進SD数系の場合実施の形態1に記載の上位桁先行加算器の設計とほぼ同一である。ただ、加算器1にSD数系の2つの入力以外にバイナリ数系の入力が一つ増加しただけである。表2の内部加算値が+3のときにCarry+1、Sumlを出力する条件を加えればよい。こうして上位桁から順に乗算結果を出力する。
実施の形態13によれば、図19に示すように、4ビット×4ビットの乗算をする場合、筆算形式で部分積を発生させ、それを加算する。
行加算部56は、この乗算方式における加算の仕組みを簡略化して示したものである。行加算部56では、円で囲まれた記号「+」記号が、上位桁からの加算が行える加算器を表し、四角で囲まれた記号「D」が、メモリを表す。メモリは、1演算時間単位毎に入力データを記憶していく。「+」記号と「D」記号をペアにしたものが、図18の56B〜56Dに相当する。この部分積を加算するために、予めメモリDを0にリセットしておく。始めのステップで、筆算の一番下の行A55を示すデータを加算部56に入力し、このデータを記憶する。
2番目のタイミングでは、メモリ「D」により入力データを左シフト(×2倍)する。同時に、下から2番目の行A56を示すデータを行加算部56に入力し、入力データと、行加算部56に蓄えられているデータとを加算する。加算部56に蓄えられているデータは、前回の行A55をシフトして得たものである。
3番目のタイミングでは、2番目のタイミングで得た加算結果を左シフトし記憶する。この後、上の行をさらに加算していくことを繰り返すことで、最終的な結果を出力する。
このように、実施の形態13によれば、加算を繰り返すことで乗算を実現する場合、乗算結果を最終段から、かつ、上位桁から出力することができる。
なお、実施の形態13では、4ビット×4ビットの乗算器を仮定しているが特に4ビットに限定されるものではない。4ビット以上の場合は、メモリ付き加算器56Dのように、部分積発成回路からの部分積データと、2桁下の加算器からの桁上げデータと、1桁下の加算器からの加算和データの3つを入力するメモリ付き加算器を増加させればよい。
また、ブースデコーダなどの既知のデコード手法を組み合わせてもよい。
図18では加算器56B〜56Dの桁上げ信号を遅延させたため2桁上位の加算器に桁上げデータを入力する形式としたが、この遅延メモリを取り除き、一桁上位の加算器に直に桁上げデータを入力してもよい。
また、上位桁からの乗算で取り扱う数系がバイナリ数系や2進SD数系に特に限定されるものではない。
[発明の実施の形態14]
実施の形態14では、冗長数系を用いない一般的な数系を用いて、上位桁から加算演算をする。このために、実施の形態14では、演算対象の数字に確定・不確定を表すフラグを付ける。この様子を図20に示す。図20では、
[2999]+[902]=[3901]
の10進数加算を例としている。この加算例では、一の位から百の位まで、下位の桁で発生した桁上げが伝搬する。
タイミングT71では、千の位の数字が加算され、値[2]が得られる。この値[2]は、下位の桁からの桁上げ信号によって変化する可能性がある。このときには、値[2]に対してフラグが付けられる。実施の形態14では、フラグとして「?」マークが用いられている。
タイミングT72では、百の位の数字が加算され、値[18]が得られる。この値[18]では、桁上げ信号として値[1]が発生し、また、加算信号が値[8]である。桁上げ信号[1]は、千の位の数字で値[2]を値[3]に変更する。
ここで、加算信号値[8]は、下位の十の位以下の信号に係わらず、千の位への桁上げ信号にならない。このために、千の位の数字に付けられていた「?」マークが外れて、値[3]が確定する。
タイミングT73では、十の位の数字が加算され、値[09]が得られる。この値[09]では、桁上げ信号は値[0]である。加算信号である値[9]は、一の位の計算結果によって、桁上げ信号の値[0]や加算信号の値[9]が変更される可能性ある。このために、加算結果である桁上げ信号の値[0]と、加算信号の値[9]との両方に「?」マークが付けられる。
したがって、十の位からの桁上げ信号が確定されていないので、百の位の加算信号である値[8]に付けられた「?」マークは、外れないで伝播していく。
タイミングT74では、一の位の数字が加算され、値[11]が得られる。この値[11]では、桁上げ信号として値[1]が発生し、また、加算信号が値[1]である。
一の位の桁上げ信号である値[1]は、十の位の加算信号である値[9]に加算される。この結果、十の位では、値[10]が得られ、桁上げ信号である値[1]が発生する。この桁上げ信号は、百の位の加算信号である値[8]に加算される。
こうして、百の位と十の位とに桁上げ信号が伝搬する。一の位から桁上げ信号が「1」で確定したため、十の位の加算信号の値、十の位からの桁上げ信号と百の位の加算信号の全ての値が確定される。この操作を繰り返して、確定された値が順に出力され、正しい加算結果である値[3901]が得られる。なお、図20では、出力される桁に下線が描かれている。
このような加算をする演算処理用半導体回路を図21に示す。この演算処理用半導体回路では、桁上げ信号にのみフラグ(図20の?マーク)に相当する信号が状態信号として付加されている。図21の演算処理用半導体回路は、加算器61と桁上げ制御回路62,63とそれぞれに遅延素子61m、62m、63mとを備えている。
加算器61は、第1の数の上位桁から入力される1つの桁データa61と、第2の数の上位桁から入力される1つの桁データa62との加算をする。加算器61は、結果として、桁上げ信号b61と加算信号b62とを出力する。また、加算器61は、状態信号b63を出力する。状態信号b63は、桁上げ信号b61が発生する可能性があるかないかを示す。この状態信号b63が真であれば、桁上げ信号b61が発生する可能性があることを示す。加算信号b62は、遅延素子61mで1ステップ(演算時間単位)分、すなわち1桁分の遅延をし記憶する。
桁上げ制御回路62は、図22に示すように、状態制御回路601、出力回路603を備えている。桁上げ制御回路は、桁上げ信号b61および状態信号b63、遅延された加算結果b62に従って、桁上げの必要があるかないかを判断し、必要に応じて結果を変えていく。判断のために、桁上げ制御回路62は、次の表5に示すような入出力関係を内部に記憶している。
Figure 0003811354
表5によれば、入力加算結果b12により処理が異なる。
入力加算結果b12が、値「0」〜「8」である時は、上位桁への桁上げ信号伝播の可能性がないため、状態制御回路601は、値「0」を示す桁上げ信号c61と、「固定」状態を示す状態信号c63を出力する。出力回路603は、入力桁上げ信号b61が値「0」の時には、入力加算結果信号b62と同一の値を示す結果成分c62を出力し、入力桁上げ信号b61が値「1」の時には、入力加算結果信号b62に1を足した値を示す結果成分c62を出力する。
入力加算結果b12が、値「9」である時は、状態制御回路601は、入力された桁上げデータb61と同一の値を示す桁上げデータc61と、入力された状態信号b63と同一の値を示す状態信号c63を出力する。入力桁上げ信号b61が値「1」の時には、値「0」を示す結果成分c62を出力し、値[0]の時には、値「9」を示す結果成分c62を出力する。
このようにして生成した状態信号c63を、桁上げ制御回路62は桁上げ制御回路63に出力する。また、桁上げ制御回路62は、桁上げ信号b61と加算信号b62との加算結果から、桁上げ信号c61を生成する。そして、桁上げ制御回路62は、生成した桁上げ信号c61を桁上げ制御回路63に出力する。
出力回路603は、メモリ61mからの加算信号b62と、桁上げ信号b61とに基づいて、加算信号c62を生成する。つまり、出力回路603は、表3に示すように、メモリ602からの加算信号b62すなち記憶値に桁上げ信号b61の値を加算して、加算信号c62を生成する。出力回路603は、生成した加算信号c62を桁上げ制御回路63に出力する。
こうして、桁上げ制御回路62は、桁上げ信号b61、加算信号b62および状態信号b63に基づいて、桁上げ信号c61、加算信号c62および状態信号c63を生成し、これらの信号を桁上げ制御回路63に出力する。同じようにして、桁上げ制御回路63は、桁上げ信号c61、加算信号c62および状態信号c63に基づいて、桁上げ信号d61、加算信号d62および状態信号d63を生成して、これらの信号を次段の回路に出力する。
このような実施の形態14によれば、桁上げ制御回路62の出力が同じ機能を持つ桁上げ制御回路630入力になっている。このように複数段の接続により、たとえば、[999+001]というように、桁上げが複数桁にわたって伝搬するとき、桁上げによって発生する変化が吸収される。
このように、実施の形態14によれば、桁上げ信号を処理するために、計算した値が不確定であり、後で変化する可能性がある場合に、「?」マークにあたるフラグを付ける。これによって、桁上げの影響を除くことができる。また、実施の形態14によれば、バイナリ出力がされるために、現在の回路との親和性を高めることができる。
なお、実施の形態14では、演算例として10進数を用いたが、10進数に限定されるものではなく、2進数などでも構わない。
[発明の実施の形態15]
実施の形態15では、冗長な数系のデータを非冗長な数系のデータに変換する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図23に示す。図23の演算処理用半導体回路は、冗長変換回路66と桁上げ処理回路67〜67とメモリ68〜68を備えている。図23の演算処理用半導体回路では、最悪な入力パターンのときには、最下位のビットから最上位のビットまで、桁上げが生じる可能性があるため、冗長変換回路66と桁上げ処理回路67〜67とを合わせて数桁分の回路が必要である。
冗長変換回路66には、冗長数系に属する数の1つの桁を表すデータa66が入力される。上位桁から演算時間単位毎に順にデータa66は入力される。
データa66が入力されると、冗長変換回路66は、データa66を非冗長な数系のデータに変換し、データb67を出力する。その結果、冗長変換回路66は、必要ならば、桁上げ信号b66を発生させる。このような変換をするために、冗長変換回路66は、次の表6に示す入力関係を内部に保持している。
Figure 0003811354
表6によれば、データa66として「1」が入力されると、冗長変換回路66は、「0」の桁上げ信号(Carry)b66と、「1」の変換結果(Result)b67とを生成する。データa66として「−1」が入力されると、冗長変換回路66は、「−1」の桁上げ信号b66と、「1」の変換結果b67とを生成する。つまり、変換結果が必ず非冗長な数系になるようにするため、冗長変換回路66は、2進SD数の場合に「−1」という桁上げ信号b66を生成する。
また、冗長変換回路66は、下位桁からの桁上げ信号によって、桁上げ信号b66の値が変化する可能性がある場合、「?」マークにあたる信号を付ける。つまり、データa66として「0」が入力されると、冗長変換回路66は、「0?」の桁上げ信号b66と、「0」の変換結果b67とを生成する。
冗長変換回路66は、生成した桁上げ信号b66を桁上げ処理回路67に出力し、変換結果b67をメモリ68へ出力する。
メモリ68は、冗長変換回路66からの変換結果b67を、制御クロックd66によって1ステップ(演算時間単位)だけ遅延する。メモリ68〜68は、メモリ68と同じで、1演算時間単位だけ入力データを遅延させる機能を持つ。
処理回路67は、下位桁から来る桁上げ信号b66とメモリ68が変換結果b67を遅延して出力した変換結果b68とを入力し変換する。この変換のために、桁上げ処理回路67は、次の表7に示す入出力関係を内部に保持している。
Figure 0003811354
表7によれば、桁上げ信号b66に「?」マークが付いていない場合、桁上げ信号の成分が確定していることになる。この結果、上位桁側の回路では再演算の必要がないため、演算結果を確定することができる。
桁上げ信号b66に「?」マークが付いている場合、桁上げ信号b66が「0?」であり、変換結果b68が「0」であるとき、桁上げ処理回路67は、「0?」の桁上げ信号c66と、「0」の変換結果c67とを生成する。また、桁上げ信号b66が「0?」であり、変換結果b68が「1」であるとき、桁上げ処理回路671は、「0」の桁上げ信号c66と、「1」の変換結果c67とを生成する。
桁上げ処理回路67は、こうして生成した桁上げ信号c66を次段の桁上げ処理回路67に出力し、変換結果c67を遅延メモリ68を介して次段の桁上げ処理回路67に出力する。桁上げ処理回路67〜67は、桁上げ処理回路67と同じような処理をする。
このような実施の形態15によれば、冗長な数系のデータを通常の非冗長な数系のデータに変換することができる。
なお、実施の形態15では、演算の処理例として2進SD数の冗長数系をバイナリ2進数に変換する場合を例として説明したが、特に、この数系に限定されるものではなく、4進数や8進数といった多値の冗長数系でもよく、拡張する数を正にしてもよい。
以上、実施の形態1〜15について説明したが、この発明は、これらの実施の形態に限定されることはない。たとえば、「桁」は、10進数などである必要はなく、2進数の「ビット」という単位でもよく、また、それを複数組み合わせた4進数などでもよい。
また、演算命令として加算命令を取り上げたが、減算命令や比較命令など桁毎に演算できるものなら、どのような演算命令でもよい。
また、「冗長な数系」としては、2進SD数系と呼ばれる、2進数「0.1」に「−1」を許可したものに限定される必要はなく、10進数11値(「0〜9」以外に「A=10」を許可したもの)や2進3値(「0.1」に「2」を許可したもの)などでもよい。
さらに、従来のトランジスタで実現される、すべての回路のなかで、このトランジスタをニューロンMOSトランジスタで置き換えることが可能である。
産業上の利用可能性
請求項1に係る発明によれば、より重要な情報を示す上位桁の情報からデータの処理をする回路が実現可能である。
請求項2に係る発明によれば、上位桁から複数の組み合わせ演算処理用半導体回路が実現可能となる。
請求項3に係る発明によれば、冗長な数系を取り扱うことで加算演算などの下位桁からの伝搬信号を吸収でき、上位桁からの数値演算を可能にする演算処理用半導体回路が得られる。
請求項4に係る発明によれば、回路外部から見ると、全く桁上げ信号がない完全な上位桁からの演算処理用半導体回路が実現できる。
請求項5に係る発明によれば、冗長な数系を用いることなく下位桁からの桁上げ信号を処理できる上位桁からの演算処理用半導体回路も可能にする。
請求項6に係る発明によれば、結果判別のついた桁から下位桁側の演算を省略できる演算処理用半導体回路が実現できる。
請求項7に係る発明によれば、最小値、最大値を元に下位桁からの信号に依存しない、上位桁からの演算比較判断が可能な演算処理用半導体回路が得られる。
請求項8に係る発明によれば、汎用プロセッサ向けの上位桁からの演算処理用半導体回路や、単一のハードウェアでありながら、実時間で機能を可変にできる演算処理用半導体回路が実現できる。
請求項9に係る発明によれば、冗長な数系を上位桁からバイナリ変換できる演算処理用半導体回路回路が実現できる。
請求項10に係る発明によれば、コンパクトなアナログ信号に対して逐次上位桁から処理が行える演算処理用半導体回路が実現できる。
請求項11に係る発明によれば、上位桁から結果が出力される半導体乗算器が実現可能である。
請求項12に係る発明によれば、請求項13とは別の手法により上位桁からの半導体乗算回路が実現できる。
請求項13に係る発明によれば、ニューロンMOSトランジスタを用いることで、回路を小規模にし、演算機能を増大し、知的演算の概念を導入した上位桁からの演算処理が可能になる。
請求項14,15に係る発明によれば、冗長な数系を用いることで上位桁からの数値演算を可能とした方法を用いることが可能になる。
請求項16に係る発明によれば、上位桁からの演算が確定した時点で残りの演算が省略できる高速な処理手法が可能になる。
【図面の簡単な説明】
図1は、この発明の実施の形態1による演算処理用半導体回路を示すブロック図である。
図2は、実旋の形態1の加算器2に対するデータ入力のタイミングを説明する説明図である。
図3は、実施の形態1による加算の様子を説明する説明図である。
図4は、この発明の実施の形態3に用いられる初段の加算器を示す回路図である。
図5は、実施の形態3に用いられる次段の加算器を示す回路図である。
図6は、この発明の実施の形態4による演算処理用半導体回路を示すブロック図である。
図7は、この発明の実施の形態5による演算処理用半導体回路を示すブロック図である。
図8は、この発明の実施の形態6による演算処理用半導体回路を示すブロック図である。
図9は、この発明の実施の形態7による演算処理用半導体回路を示すブロック図である。
図10は、実施の形態7によって範囲を検出する様子を説明する説明図である。
図11は、この発明の実施の形態8による演算処理用半導体回路を示すブロック図である。
図12は、この発明の実施の形態9による演算処理用半導体回路を示すブロック図である。
図13は、実施の形態9のA/D変換器の動作を説明する説明図である。
図14は、この発明の実施の形態10を説明するための説明図である。
図15は、この発明の実施の形態11による演算処理用半導体回路を示すブロック図である。
図16は、実施の形態11による乗算を説明するための説明図である。
図17は、この発明の実施の形態12による演算処理用半導体回路を示すブロック図である。
図18は、この発明の実施の形態13による演算処理用半導体回路を示すブロック図である。
図19は、実施の形態13による乗算を説明するための説明図である。
図20は、この発明の実施の形態14の原理を説明するための説明図である。
図21は、実施の形態14による演算処理用半導体回路を示すブロック図である。
図22は、実施の形態14の桁上げ制御回路の一例を示すブロック図である。
図23は、この発明の実施の形態15による演算処理用半導体回路を示すブロック図である。
(符号の説明)
1〜3,21,26A,26B,56A,56E,56B〜56D,61 加算器
4.5,8.9,14,33,41A,41B,602,68〜68メモリ
101A〜101C,201A,201B ニューロンMOSトランジスタ
101D〜101F,201C,201D インバータ
6.7 絶対値回路
10 最中値回路
11 差分回路
12 正反転回路
13 状態記憶回路
22 遅延回路
23,27,28 比較器
24 記憶回路
29 ANDゲート
31,32 汎用回路
36 A/D変換器
37 演算回路
42A,42B データバス
43 演算処理用半導体回路
45A〜45H シフトレジスタ
46A〜46H,55A〜55D 部分積発生回路
47A〜47D,48A,48B,49 冗長加算器
51A〜51H,52A〜52D,53A,53B,54 汎用演算器
61m〜63m 遅延素子
56 加算部
57 冗長加算器
62,63 桁上げ制御回路
601 状態制御回路
603 出力回路
66 冗長変換回路
671〜67n 桁上げ処理回路
a1〜a9,a11,a12,a21,a22,a26,a27,a31〜a33,b31,a51〜a5116’a61,a36 アナログ信号
a55 被乗数
a56 乗数
a62,a66 データ
b6,b7,b12 差分信号
b21,b56,c56,b62,c62,d62,s1,s2 加算信号
b26 最大値信号
b27 最小値信号
b36 デジタル信号
b51,c52,d53 制御命令
b63,c63,d63 状態信号
b67,b68,c67 変換結果
c1〜c4,b11,c26、c27、b55,c55,b61,c61,d61,b66,
c6,c21,d11,d31,e55,d66 制御クロック
c11 絶対値信号
c66 桁上げ信号
d1,d2,b32,c31,c32,b37,e22,a601 制御信号 d21,d22 平均値信号
s3,s4 中間和成分
A37 1/2範囲
A38 1/4範囲
A39 1/8範囲
A45 範囲
A55,A56 行
B1,A36 全範囲
B2〜B5 範囲
T1〜T5,T71〜T74 タイミング

Claims (16)

  1. 複数の桁で構成される数のデータが1つ以上入力され、かつ、前記数のデータの上位桁側から演算時間単位につき1桁毎に順に入力される演算処理用半導体回路であって、
    前記入力されたデータの演算をする演算ユニットを備え、
    前記演算ユニットは、
    入力された桁のデータを演算時間単位内で演算し、演算で得た結果を示す演算結果を出力し、演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する演算回路と、
    前記演算回路からの演算結果を1演算時間単位分だけ遅延する遅延手段とを具備した演算ユニットを具備することを特徴とする演算処理用半導体回路。
  2. 複数の前記演算ユニットを直列に接続し、入力された桁のデータに基づき、前記各演算ユニットが前記演算時間単位毎に順に処理していくことを特徴とする請求項1に記載の演算処理用半導体回路。
  3. 前記数のデータ、前記演算結果または前記桁上げデータが冗長な数系に属することを特徴とする請求項1または2に記載の演算処理用半導体回路。
  4. 前記冗長な数系に属するデータを演算する演算ブロックであって、前記演算ブロックは、1個以上の前記演算ユニットと、前記演算ブロックの出力を処理する演算回路とを具備し、前記演算ブロックからは上位桁への桁上げデータを発生しないことを特徴とする請求項3に記載の演算処理用半導体回路。
  5. 前記演算ユニットは、
    ある桁の演算により上位桁へ出力する前記桁上げデータが、この桁よりも下位の桁の演算で発生する桁上げデータで変化するか否かを判断する第1判断手段と、
    前記第1判断手段の判断結果が下位桁から出力される桁上げデータに依存しないことを示すとき、桁上げデータの変更がないことを上位側へ示す出力手段と、
    前記第1判断手段の判断結果が下位桁から出力される桁上げデータに依存することを示すとき、下位側の桁上げデータを待つ入力手段と、
    下位側からの下位桁の桁上げデータに応じて、前記演算結果を変える変更手段とを備えたことを特徴とする請求項1又は2に記載の演算処理用半導体回路。
  6. 上位桁から前記演算時間単位毎に順に出力される演算結果に対して、上位桁から前記演算時間単位毎に比較および判断をする第2判断手段を備え、
    前記第2判断手段の判断結果の真偽が確定した場合に、残りの下位桁について比較および判断を含む演算処理を省略することを特徴とする請求項1乃至5のいずれか1項に記載の演算処理用半導体回路。
  7. 上位桁から前記演算時間単位毎に順に演算を行い、入力されている桁よりも下位桁で取り得る演算結果の最大値と最小値とを演算する算出手段と、
    前記算出手段が演算した最大値および最小値の少なくとも一方に対して、別の桁のデータとの比較を行う比較手段とを備えたことを特徴とする請求項1、2又は6に記載の演算処理用半導体回路。
  8. 前記演算ユニットに制御命令を与えることによって、入力された桁のデータに対する演算機能を切り替える切替え手段を備えたことを特徴とする請求項1又は2に記載の演算処理用半導体回路。
  9. 上位桁から前記演算時間単位毎に順に入力されるデータが、前記冗長な数系に属するデータの場合に非冗長数系に変換する演算ブロックであって、
    前記演算ブロックは、複数の直列に接続された演算ユニットからなり、
    前記各演算ユニットは、
    入力された桁のデータが冗長表現に属し変換する必要があるか判断する判断手段と、
    非冗長表現と桁上げ信号または桁借り信号とに変換する変換手段と、
    桁上げ信号または桁借り信号を上位桁の演算ユニットへ出力する出力手段とを具備し、
    全体として冗長数系を非冗長数系に変換する機能を備えたことを特徴とする請求項5に記載の演算処理用半導体回路。
  10. アナログデータをデジタルデータに変換するために、前記アナログデータの比較の範囲を狭めて行くことで、前記アナログデータをデジタルデータの上位桁側から演算時間単位毎に逐次変換する変換手段と、
    前記変換手段の出力を上位桁から演算時間単位毎に演算する前記演算ユニットまたは前記演算回路とを備えたことを特徴とする請求項1乃至8のいずれか1項に記載の演算処理用半導体回路。
  11. 前記乗数を1演算時間単位毎にシフトしながら記憶する記憶手段と、
    前記記憶手段からの乗数と、前記被乗数との部分積をそれぞれ算出し、演算時間単位毎に最上位桁から順番に、乗算における同一桁の部分積を全て生成して出力する第1演算手段と、
    前記第1演算手段からの同一桁を示す前記部分積をすべて加算して、1つの乗算結果を上位桁から出力する第2演算手段とを備えたことを特徴とする演算処理用半導体回路。
  12. 2つのデータの一方を被乗数とし、他方を乗数とし、前記乗数が上位桁から演算時間単位毎に順に入力され、2つのデータの乗算を行いその結果を上位桁から演算時間単位毎に順に出力する演算処理用半導体回路であって、
    入力された前記乗数と被乗数とで連続した桁の部分積を1演算時間単位毎に算出する算出手段と、
    算出された部分積と1演算時間単位前の加算結果との連続した桁の加算が行える加算手段と、
    加算結果を一時的に記憶する手段とを備えたことを特徴とする演算処理用半導体回路。
  13. 前記演算ユニットは、ニューロンMOSトランジスタを用いて、構成されていることを特徴とする請求項1乃至14のいずれか1項に記載のデータ処理演算半導体回路。
  14. 複数の桁で構成される数のデータが1つ以上入力され、かつ、前記数のデータの上位桁側から演算時間単位につき1桁毎に順に入力される演算処理方法であって、
    入力された桁のデータを演算時間単位で演算し、演算で得た結果を示す演算結果を出力する第1処理と、
    前記第1処理の演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する第2処理と、
    前記演算結果を1演算時間単位分だけ遅延する第3処理とを含むことを特徴とする演算処理方法。
  15. 前記第1処理から第3処理を順に繰り返して行うことを特徴とする請求項14に記載の演算処理方法。
  16. 前記第1処理の演算結果を上位桁から順に判断する第4処理と、
    前記第4処理で判断結果が確定した時点で下位桁の演算を中止する第5処理とを含むことを特徴とする請求項15に記載の処理演算方法。
JP2000539404A 1997-12-17 1998-12-17 演算処理用半導体回路および演算処理方法 Expired - Fee Related JP3811354B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP34831397 1997-12-17
PCT/JP1998/005720 WO1999031573A1 (fr) 1997-12-17 1998-12-17 Procede et circuit semi-conducteur pour effectuer des operations arithmetiques

Publications (1)

Publication Number Publication Date
JP3811354B2 true JP3811354B2 (ja) 2006-08-16

Family

ID=18396197

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000539404A Expired - Fee Related JP3811354B2 (ja) 1997-12-17 1998-12-17 演算処理用半導体回路および演算処理方法

Country Status (4)

Country Link
US (2) US6728745B1 (ja)
EP (1) EP1039372A4 (ja)
JP (1) JP3811354B2 (ja)
WO (1) WO1999031573A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019537787A (ja) * 2016-10-20 2019-12-26 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 動的に可変な精度計算

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003243988A (ja) * 2002-02-20 2003-08-29 Tadahiro Omi データ処理装置
US7912075B1 (en) * 2006-05-26 2011-03-22 Avaya Inc. Mechanisms and algorithms for arbitrating between and synchronizing state of duplicated media processing components
JP4988627B2 (ja) * 2008-03-05 2012-08-01 ルネサスエレクトロニクス株式会社 フィルタ演算器及び動き補償装置
US8990282B2 (en) * 2009-09-21 2015-03-24 Arm Limited Apparatus and method for performing fused multiply add floating point operation
US8463838B1 (en) * 2009-10-28 2013-06-11 Lockheed Martin Corporation Optical processor including windowed optical calculations architecture
US8463834B2 (en) * 2009-11-03 2013-06-11 Arm Limited Floating point multiplier with first and second partial product shifting circuitry for result alignment
US8965945B2 (en) 2011-02-17 2015-02-24 Arm Limited Apparatus and method for performing floating point addition
RU2454703C1 (ru) * 2011-06-07 2012-06-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Санкт-Петербургский государственный политехнический университет" (ФГБОУ ВПО "СПбГПУ") Одноразрядный двоичный кмоп сумматор
US9081653B2 (en) 2011-11-16 2015-07-14 Flextronics Ap, Llc Duplicated processing in vehicles
KR101236977B1 (ko) * 2011-12-08 2013-02-26 숭실대학교산학협력단 다중 센서 배열을 위한 전류 검출 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4100532A (en) * 1976-11-19 1978-07-11 Hewlett-Packard Company Digital pattern triggering circuit
JPS583028A (ja) 1981-06-30 1983-01-08 Fujitsu Ltd 2進数シリアル演算方式
US4633410A (en) * 1982-06-28 1986-12-30 Hewlett-Packard Company Method and apparatus for determining if a digital value lies within a range
US4839847A (en) * 1987-04-14 1989-06-13 Harris Corp. N-clock, n-bit-serial multiplier
US5034908A (en) * 1988-05-04 1991-07-23 General Electric Company Digit-serial transversal filters
JPH02113749A (ja) * 1988-10-24 1990-04-25 Oki Electric Ind Co Ltd シリアルコンパレータおよびそれを有するエレメントスイッチ
JPH0498319A (ja) 1990-08-10 1992-03-31 Nec Ic Microcomput Syst Ltd ディジタル回路
US5150321A (en) * 1990-12-24 1992-09-22 Allied-Signal Inc. Apparatus for performing serial binary multiplication
TW203665B (ja) * 1991-03-21 1993-04-11 Shibata Naoru
KR930010942B1 (ko) * 1991-08-16 1993-11-17 삼성전자 주식회사 직렬비교기
DE69329260T2 (de) * 1992-06-25 2001-02-22 Canon Kk Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019537787A (ja) * 2016-10-20 2019-12-26 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 動的に可変な精度計算

Also Published As

Publication number Publication date
US20050080835A1 (en) 2005-04-14
WO1999031573A1 (fr) 1999-06-24
EP1039372A4 (en) 2005-02-02
US7296048B2 (en) 2007-11-13
EP1039372A1 (en) 2000-09-27
US6728745B1 (en) 2004-04-27

Similar Documents

Publication Publication Date Title
KR100500855B1 (ko) 연산장치의연산방법,기억매체및연산장치
JP3811354B2 (ja) 演算処理用半導体回路および演算処理方法
EP3444757A1 (en) Discrete data representation supported device and method for forward operation of artificial neural network
US5957996A (en) Digital data comparator and microprocessor
JP3304971B2 (ja) 絶対値演算回路
KR100282516B1 (ko) 길쌈부호 생성기 및 이를 내장한 디지털 신호 프로세서
JPH0573269A (ja) 加算器
Premkumar et al. Improved memoryless RNS forward converter based on the periodicity of residues
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
KR101007259B1 (ko) 패리티 생성 회로, 계수 회로 및 계수 방법
US20140059106A1 (en) Arithmetic circuit for performing division based on restoring division
US11475288B2 (en) Sorting networks using unary processing
CN113570053A (zh) 一种神经网络模型的训练方法、装置以及计算设备
CN111091190A (zh) 数据处理方法及装置、光子神经网络芯片、数据处理电路
JPH07111459A (ja) データ圧縮方法
EP0431417A2 (en) Method and apparatus for SRT divison using gray coded quotient bit signals
US20230195621A1 (en) Architecture and method for binary and unary in-memory sorting
Abraham et al. An ASIC design of an optimized multiplication using twin precision
Nithyashree et al. Design of an efficient vedic binary squaring circuit
JP2005165502A (ja) Lut符号化方法及びlut符号化装置並びにlutカスケード論理回路
Martynovych et al. Design of Ternary Decoder
CN116522967A (zh) 乘法器与芯片
US6954773B2 (en) Providing an adder with a conversion circuit in a slack propagation path
JP2004013709A (ja) 部分積生成回路および乗算器
SU1072040A1 (ru) Устройство дл делени двоичного числа на коэффициент

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041125

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: 20060502

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060526

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