(57)【特許請求の範囲】
【請求項１】
複数の桁で構成される数のデータが１つ以上入力され、かつ、前記数のデータの上位桁側から演算時間単位につき１桁毎に順に入力される演算処理用半導体回路であって、
前記入力されたデータの演算をする演算ユニットを備え、
前記演算ユニットは、
入力された桁のデータを演算時間単位内で演算し、演算で得た結果を示す演算結果を出力し、演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する演算回路と、
前記演算回路からの演算結果を１演算時間単位分だけ遅延する遅延手段とを具備した演算ユニットを具備することを特徴とする演算処理用半導体回路。
【請求項２】
複数の前記演算ユニットを直列に接続し、入力された桁のデータに基づき、前記各演算ユニットが前記演算時間単位毎に順に処理していくことを特徴とする請求項１に記載の演算処理用半導体回路。
【請求項３】
前記数のデータ、前記演算結果または前記桁上げデータが冗長な数系に属することを特徴とする請求項１または２に記載の演算処理用半導体回路。
【請求項４】
前記冗長な数系に属するデータを演算する演算ブロックであって、前記演算ブロックは、１個以上の前記演算ユニットと、前記演算ブロックの出力を処理する演算回路とを具備し、前記演算ブロックからは上位桁への桁上げデータを発生しないことを特徴とする請求項３に記載の演算処理用半導体回路。
【請求項５】
前記演算ユニットは、
ある桁の演算により上位桁へ出力する前記桁上げデータが、この桁よりも下位の桁の演算で発生する桁上げデータで変化するか否かを判断する第１判断手段と、
前記第１判断手段の判断結果が下位桁から出力される桁上げデータに依存しないことを示すとき、桁上げデータの変更がないことを上位側へ示す出力手段と、
前記第１判断手段の判断結果が下位桁から出力される桁上げデータに依存することを示すとき、下位側の桁上げデータを待つ入力手段と、
下位側からの下位桁の桁上げデータに応じて、前記演算結果を変える変更手段とを備えたことを特徴とする請求項１又は２に記載の演算処理用半導体回路。
【請求項６】
上位桁から前記演算時間単位毎に順に出力される演算結果に対して、上位桁から前記演算時間単位毎に比較および判断をする第２判断手段を備え、
前記第２判断手段の判断結果の真偽が確定した場合に、残りの下位桁について比較および判断を含む演算処理を省略することを特徴とする請求項１乃至５のいずれか１項に記載の演算処理用半導体回路。
【請求項７】
上位桁から前記演算時間単位毎に順に演算を行い、入力されている桁よりも下位桁で取り得る演算結果の最大値と最小値とを演算する算出手段と、
前記算出手段が演算した最大値および最小値の少なくとも一方に対して、別の桁のデータとの比較を行う比較手段とを備えたことを特徴とする請求項１、２又は６に記載の演算処理用半導体回路。
【請求項８】
前記演算ユニットに制御命令を与えることによって、入力された桁のデータに対する演算機能を切り替える切替え手段を備えたことを特徴とする請求項１又は２に記載の演算処理用半導体回路。
【請求項９】
上位桁から前記演算時間単位毎に順に入力されるデータが、前記冗長な数系に属するデータの場合に非冗長数系に変換する演算ブロックであって、
前記演算ブロックは、複数の直列に接続された演算ユニットからなり、
前記各演算ユニットは、
入力された桁のデータが冗長表現に属し変換する必要があるか判断する判断手段と、
非冗長表現と桁上げ信号または桁借り信号とに変換する変換手段と、
桁上げ信号または桁借り信号を上位桁の演算ユニットへ出力する出力手段とを具備し、
全体として冗長数系を非冗長数系に変換する機能を備えたことを特徴とする請求項５に記載の演算処理用半導体回路。
【請求項１０】
アナログデータをデジタルデータに変換するために、前記アナログデータの比較の範囲を狭めて行くことで、前記アナログデータをデジタルデータの上位桁側から演算時間単位毎に逐次変換する変換手段と、
前記変換手段の出力を上位桁から演算時間単位毎に演算する前記演算ユニットまたは前記演算回路とを備えたことを特徴とする請求項１乃至８のいずれか１項に記載の演算処理用半導体回路。
【請求項１１】
前記乗数を１演算時間単位毎にシフトしながら記憶する記憶手段と、
前記記憶手段からの乗数と、前記被乗数との部分積をそれぞれ算出し、演算時間単位毎に最上位桁から順番に、乗算における同一桁の部分積を全て生成して出力する第１演算手段と、
前記第１演算手段からの同一桁を示す前記部分積をすべて加算して、１つの乗算結果を上位桁から出力する第２演算手段とを備えたことを特徴とする演算処理用半導体回路。
【請求項１２】
２つのデータの一方を被乗数とし、他方を乗数とし、前記乗数が上位桁から演算時間単位毎に順に入力され、２つのデータの乗算を行いその結果を上位桁から演算時間単位毎に順に出力する演算処理用半導体回路であって、
入力された前記乗数と被乗数とで連続した桁の部分積を１演算時間単位毎に算出する算出手段と、
算出された部分積と１演算時間単位前の加算結果との連続した桁の加算が行える加算手段と、
加算結果を一時的に記憶する手段とを備えたことを特徴とする演算処理用半導体回路。
【請求項１３】
前記演算ユニットは、ニューロンＭＯＳトランジスタを用いて、構成されていることを特徴とする請求項１乃至１４のいずれか１項に記載のデータ処理演算半導体回路。
【請求項１４】
複数の桁で構成される数のデータが１つ以上入力され、かつ、前記数のデータの上位桁側から演算時間単位につき１桁毎に順に入力される演算処理方法であって、
入力された桁のデータを演算時間単位で演算し、演算で得た結果を示す演算結果を出力する第１処理と、
前記第１処理の演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する第２処理と、
前記演算結果を１演算時間単位分だけ遅延する第３処理とを含むことを特徴とする演算処理方法。
【請求項１５】
前記第１処理から第３処理を順に繰り返して行うことを特徴とする請求項１４に記載の演算処理方法。
【請求項１６】
前記第１処理の演算結果を上位桁から順に判断する第４処理と、
前記第４処理で判断結果が確定した時点で下位桁の演算を中止する第５処理とを含むことを特徴とする請求項１５に記載の処理演算方法。
【発明の詳細な説明】
技術分野
この発明は、演算処理用半導体回路および演算処理方法に係り、特に、情報処理や機器の制御に使用される演算処理用半導体回路および演算処理方法に関する。
背景技術
情報処理などの分野では、半導体回路が数値演算や論理演算の処理を担う。したがって、半導体回路は、情報処理などの分野で非常に重要な部分であり、さまざまな回路が実際に設計されている。
半導体回路では、まず、アナログ情報とデジタル情報に分けられるが、高い信頼性を持った演算を行うためには情報をデジタル情報に変換した後に演算処理を行う必要がある。従って、本発明においては、アナログ情報は多値情報もしくはデジタル信号に変換して演算処理するということを原則とする。
デジタル化された情報は数値化されたことになり、その数値の取り得る範囲によって、８ビット、１６ビット、３２ビット、現在は６４ビットや１２８ビットといったビット幅のデータが用いられている。このような多ビット情報を処理する回路形式を大別すると、ビットパラレル回路とビットシリアル回路に分けられる。
ビットパラレル処理は、全ビット分の演算回路を用意しておき、全ビット同時に入力し、演算処理を行う形式である。マイクロプロセッサを始め、現在のプロセッサのほぼ全数近くがこの形式を採用していると言っても過言ではないだろう。
ビットシリアル処理は、演算時間単位（通常はクロック）毎に、下位ビットから順番にビット単位でデータを入力し、演算処理する手法である。この形式は１ビットの演算回路を設計すればよく、面積が小さいという利点を持つ。しかし、この形式は下位桁から処理を行っているために、最上位桁のデータを取得するまでに非常に長い時間がかかるという欠点を持つ。
下位桁と上位桁でどちらが重要な情報であるかといえば、上位桁であることは当たり前である。それゆえ、最上位桁を英語でＭｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｄｉｇｉｔ（最も重要な桁）と呼ぶ。しかしながら、従来のビットシリアル処理が下位桁から処理を行っていたのは、加算演算等における「桁上げ信号」の問題があるからである。
加算演算で発生する、桁上げ信号と加算結果には、まず、そもそもの数字としての桁（１０進数の位）が違い、同列に取り扱うことができない。
また、最下位桁から発生する桁上げ信号が最悪の場合最上位桁まで伝播する可能性を秘めており、最下位桁から解と桁上げ信号を決定していく必要がある。この桁上げ伝播の問題を解決しないことには、本発明にあたる、上位桁からの演算処理は不可能である。
当然、桁上げ信号に相当するものがない演算、たとえば単なる大小判断回路などでは上位桁からの比較判断を含む演算処理半導体回路というものが存在している。しかしながら、桁上げ信号を含むような演算処理を含む上位桁からの演算処理という発明は皆無である。
この発明は、より重要な情報を含む上位桁を優先し、上位桁から順番にビットシリアル形式で演算処理が行える演算処理用半導体回路および演算処理方法を提供することを目的とする。
そのため、加算等演算における桁上げ信号の桁あわせの問題を第１の課題とし、桁上げ伝播の問題を解決することを第２の課題とし、ビットシリアル形式の演算速度の問題を解決することを第３の課題とし、乗算を含めその他の複雑な演算・処理を上位桁から行えるようにすることを第４の課題とする。
発明の開示
この発明が対象にしている演算は、上位桁から、時間ステップ（演算時間単位）毎にビットシリアルで入力されたデータに対する演算であり、発生する桁上げ信号を様々な手法を用いて解決し、結果として様々な用途を実現しようとするものである。
この発明による演算処理用半導体回路は、複数の桁で構成される数のデータが１つ以上入力され、かつ、前記数のデータの上位桁側から演算時間単位につき１桁毎に順に入力される演算処理用半導体回路であって、前記入力されたデータの演算をする演算ユニットを備え、前記演算ユニットは、入力された桁のデータを演算時間単位内で演算し、演算で得た結果を示す演算結果を出力し、演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する演算回路と、前記演算回路からの演算結果を１演算時間単位分だけ遅延する遅延手段とを具備した演算ユニットを具備するものである。この遅延により、桁上げ信号を桁上げ信号として特殊扱いする必要はなくなり、第１の課題の解決がなされる。
この発明による演算省略用半導体回路による桁上げ信号伝播の問題は、（１）出力されるデータが冗長な数系に属することを特徴とする手法、（２）ある桁の演算により上位桁へ出力する前記桁上げデータが、この桁よりも下位の桁の演算で発生する桁上げデータで変化するか否かを判断する第１判断手段と、前記第１判断手段の判断結果が下位桁から出力される桁上げデータに依存しないことを示すとき、桁上げデータの変更がないことを上位側へ示す出力手段と、前記第１判断手段の判断結果が下位桁から出力される桁上げデータに依存することを示すとき、下位側の桁上げデータを待つ入力手段と、下位側からの下位桁の桁上げデータに応じて、前記演算結果を変える変更手段とを備えたことを特徴とする手法、（３）上位桁から演算時間単位毎に順に演算を行い、入力されている桁よりも下位桁で取り得る演算結果の最大値と最小値とを演算する算出手段と、前記算出手段が演算した最大値および最小値の少なくとも一方に対して、別の桁のデータとの比較を行う比較手段とを備えたことを特徴とする手法、の３つの手法のいずれか一手法により、第２の課題の解決される。
この発明による演算処理用半導体回路は、上位桁から前記演算時間単位毎に順に出力される演算結果に対して、上位桁から前記演算時間単位毎に比較および判断をする判断手段を備え、前記判断手段の判断結果の真偽が確定した場合に、残りの下位桁について比較および判断を含む演算処理を省略することを特徴とするものである。これにて、第３の課題の解決される。
また、この発明による演算処理用半導体回路は、２つのデータの一方を被乗数とし、他方を乗数とし、前記乗数が上位桁から演算時間単位毎に順に入力され、２つのデータの乗算を行いその結果を上位桁から演算時間単位毎に順に出力する演算処理用半導体回路であって、前記乗数を１演算時間単位毎にシフトしながら記憶する記憶手段と、前記記憶手段からの乗数と、前記被乗数との部分積をそれぞれ算出し、演算時間単位毎に最上位桁から順番に、乗算における同一桁の部分積を全て生成して出力する第１演算手段と、前記第１演算手段からの同一桁を示す前記部分積をすべて加算して、１つの乗算結果を上位桁から出力する第２演算手段とを備えるものである。こうして第４の課題の解決される。
この発明による演算処理方法は、複数の桁で構成される数のデータが１つ以上入力され、かつ、前記数のデータの上位桁側から順に入力される演算処理方法であって、入力された桁のデータを演算時間単位で演算し、演算で得た結果を示す演算結果を出力する第１処理と、前記第１処理の演算によって桁上げが発生すると、この桁上げを示す桁上げデータを出力する第２処理と、前記演算結果を１演算時間単位分だけ遅延する第３処理とを含む。
発明を実施するための最良の形態
次に、この発明の実施の形態について、図面を参照して説明する。
なお、以下の説明の中で、「桁」が次のことを意味する。つまり、データが数値で表現されているとき、「桁」は、このデータの演算処理をする際の単位となる慨念であり、１０進数で言う「位」である。「演算」は、数値演算に限らず、論理演算を含む。特に、「上位桁」が現在処理している桁よりも一桁分大きい桁を表し、「下位桁」が一桁分小さい桁を表す。「上位桁側」とは、処理している桁から連続した複数桁の上位の桁を表し、「下位桁側」とは、処理している桁よりも連続した複数桁の下位の桁を表す。
さらに、「冗長な数系」とは、Ｎ進数の各桁に、Ｎ＋１個以上の数を許す数系を示す概念である。
［発明の実施の形態１］
実施の形態１は、データを加算する演算処理用半導体回路に対して、この発明を適用したものである。実施の形態１では、冗長ｎ進数系として２進ＳＤ（Ｓｉｇｎｅｄ  Ｄｉｇｉｔ）数系が用いられている。
２進ＳＤ数系は、冗長数系の１つであり、「０」と「１」との組み合わせで構成される２進数に対して、「−１」という本来ない冗長な値の数字を許可する。この２進ＳＤ数系を用いた計算規則の例を、次の表１に示す。以下の説明では、たとえば、データ「０１０」が２進ＳＤ数系で示されているときには、このデータを「０１０」ＳＤで表し、データ「０１０」が２進数系で示されているときには、このデータを「０１０」Ｂで表す。また、１０進数系で示されているデータ「２」を「２」Ｄで表す。
0003811354.tif 000002
0003811354.tif 000003
なお、表１の中では、印「・」の前にある２文字が「Ｃａｒｒｙ（キャリー）」を表し、後にある１文字が「Ｓｕｍ（サム）」を表す。表１は、値Ａと値Ｂとの加算を示す計算規則である。２つの値の加算結果が「Ｓｕｍ」の値と「Ｃａｒｒｙ」の値とで表される。このとき、「Ｓｕｍ」が値Ａと値Ｂの加算値を示し、「Ｃａｒｒｙ」が桁上げデータを示す。以下では、「Ｃａｒｒｙ」を桁上げ信号と記し、「Ｓｕｍ」を加算信号と記す。「Ｃａｒｒｙ」として「１」〜「−１」まで発生する可能性があり、また、複数の表現手法がある組み合わせも存在する。
この２進ＳＤ数系によれば、たとえば、加算の場合に最下位桁から計算が行われたとき、加算で発生する桁上げ信号が上位の２桁までしか伝えずに加算する手法がある。つまり、桁上げ信号は、この信号が発生した桁から上位の２桁の加算結果までしか影響を与えない。２進ＳＤ数系には、このような特徴がある。
この２進ＳＤ数系を用いた演算処理用半導体回路を図１に示す。図１の演算処理用半導体回路は、加算器１〜３とメモリ４，５とを備えている。
加算器１は、演算処理用半導体回路の中で、初段つまり入力側の演算回路である。加算器１には、データａ１とデータａ２とが入力される。データａ１は、数の中で１つの桁を表し、データａ２は、別の数の中で１つの桁を表す。数は２進ＳＤ数系で示されているためデータａ１，ａ２はともに「−１」，「０」，「１」のいずれかである。データａ１，ａ２が示す桁は、数の中の最上位から順に加算器１に入力される。
加算器１は、制御信号に含まれるパルスの立ち上がりで、データａ１，ａ２を読み込み、次の制御信号の立ち上がりまでの間に、データａ１とデータａ２との加算を行う。データａ１とデータａ２との加算に際して、加算器１は、次の表２に示す加算規則に従う。
0003811354.tif 000004
データａ１，ａ２が示す各桁の値が、「−１」〜「１」の範囲であるので、加算器１内部での加算結果が「−２」〜「２」の範囲になる。加算結果が「−２」であるとき、加算器１は、２進ＳＤ数系の桁上げ信号ｃ１の値を「−１」にし、加算信号ｓ１の値を「０」にする。加算器１は、値「−１」の桁上げ信号ｃ１を加算器２に出力し、値「０」の加算信号ｓ１をメモリ４に出力する。
加算器１内部での加算結果が「２」であるとき、加算器１は、桁上げ信号ｃ１の値を「１」にし、加算信号ｓ１の値を「０」にする。加算器１内部での加算結果が「０」であるとき、加算器１は、桁上げ信号ｃ１と加算信号ｓ１との値を「０」にする。
加算器１内部での加算結果が「−１」であるとき、加算器１は、桁上げ信号ｃ１の値を「−１」にし、加算信号ｓ１の値を「１」にする。加算器１内部での加算結果が「１」であるとき、加算器１は、桁上げ信号ｃ１の値を「０」にし、加算信号ｓ１の値を「１」にする。つまり、内部での加算結果が「−１」または「１」の値になったときに、加算器１は、加算信号ｓ１の値として「１」を出力する。
メモリ４は、制御信号ｄ１の立ち上がりで、加算器１からの加算信号ｓ１を記憶する。この制御信号ｄ１の立ち上がりから次の制御信号ｄ１の立ち上がりまでが演算時間単位（ステップ）になる。つまり、メモリ４は、制御信号ｄ１の１演算時間単位分（制御信号のパルスと次のパルスとの間）だけ、加算信号ｓ１の値を遅延して、加算器２に出力する。実施の形態１では、メモリ４として、パルスの立ち上がりでデータを読み込むＤフリップフロップが用いられている。また、Ｄフリップフロップの代わりとして、ＲＳフリップフロップやＪＫフリップフロップがある。
加算器２は、演算処理用半導体回路の中で、中段の演算回路である。加算器２には、桁上げ信号ｃ１と加算信号ｓ１とが入力される。このとき、加算信号ｓ１がメモリ４で遅延されるので、加算器２には、図２に示すような組み合わせの桁上げ信号ｃ１と加算信号ｓ１とが入力される。加算器２は、制御信号の立ち上がりのタイミングＴ１で、桁上げ信号ｃ１Ｔ１および加算信号ｓ１Ｔ１を出力し、タイミングＴ２で、桁上げ信号ｃ１Ｔ２および加算信号ｓ１Ｔ２を出力する。また、タイミングＴ３で、桁上げ信号ｃ１Ｔ３および加算信号ｓ１Ｔ３を出力する。
このような状態のとき、加算信号ｓ１Ｔ１〜ｓ１Ｔ３がメモリ４によって遅延されるので、加算器２には、桁上げ信号ｃ１Ｔ２および加算信号ｓ１Ｔ１の組み合わせがタイミングＴ２で入力され、桁上げ信号ｃ１Ｔ３および加算信号ｓ１Ｔ２の組み合わせがタイミングＴ３で入力される。
加算器２は、制御信号のパルスの立ち上がりで、桁上げ信号ｃ１および加算信号ｓ１を読み込み、次の制御信号の立ち上がりまでの間に、桁上げ信号ｃ１と加算信号ｓ１との加算を行う。桁上げ信号ｃ１と加算信号ｓ１との加算に際して、加算器２は、次の表３に示す加算規則に従う。
0003811354.tif 000005
桁上げ信号ｃ１の各桁が「−１」〜「１」の範囲の値であり、加算信号ｓ１の各桁が「０」，「１」の値であるので、加算器２内部での加算結果が「−１」〜「２」の範囲になる。加算器２内部での加算結果が「２」であるとき、加算器２は、２進ＳＤ数系の桁上げ信号ｃ２の値を「１」にし、加算信号ｓ２の値を「０」にする。加算器２は、値「１」桁上げ信号ｃ２を加算器３に出力し、値「０］加算信号ｓ２をメモリ５に出力する。加算器２内部での加算結果が「０」であるとき、加算器２は、桁上げ信号ｃ２と加算信号ｓ２との値を「０」にする。
加算器２内部での加算結果が「−１」であるとき、加算器２は、桁上げ信号ｃ２の値を「０」にし、加算信号ｓ２の値を「−１」にする。また、加算器２内部での加算結果が「１」であるとき、加算器２は、桁上げ信号ｃ２の値を「１」にし、加算信号ｓ２の値を「−１」にする。このように、内部での加算結果が「−１」または「１」になったときに、加算器１と異なり、加算器２は、加算信号ｓ２の値として「−１」を出力する。これは、２進ＳＤ数系が冗長数系であるので、１つの数を２通りに示すことができる点が、加算器２で利用されている。
メモリ５は、メモリ４と同じである。つまり、メモリ５は、制御信号ｄ２の立ち上がりで加算器２からの加算信号ｓ２を読み込む。これによって、メモリ５は、制御信号の１演算時間単位分だけ、加算信号ｓ２の値を遅延し、遅延した加算信号ｓ２を加算器３に出力する。
加算器３は、演算処理用半導体回路の中で、後段つまり出力側の演算回路である。加算器３には、桁上げ信号ｃ２と加算信号ｓ２とが入力される。このとき、加算信号ｓ２がメモリ５で遅延されているので、加算器３には、１つ前の演算時間単位で加算器２が出力した加算信号ｓ２が入力される。
加算器３は、制御信号のパルスの立ち上がりで、桁上げ信号ｃ２および加算信号ｓ２を読み込み、次のパルスの立ち上がりまでに、桁上げ信号ｃ２と加算信号ｓ２との加算を行う。桁上げ信号ｃ２と加算信号ｓ２との加算に際して、加算器３は、次の表４に示す加算規則に従う。
0003811354.tif 000006
桁上げ信号ｃ２が用いることができる値が、「０」，「１」であり、加算信号ｓ２が用いることができる値が、「−１」，「０」であるので、加算器３内部での加算結果が「−１」〜「１」の範囲になる。加算器３は、内部での加算結果をそのままデータａ３として出力する。つまり、加算器３の加算結果には、２進ＳＤ数系の桁上げを示す桁上げ信号が含まれていない。
次に、実施の形態１の動作について説明する。
ここでは、例として、データ［１００］ＳＤとデータ［００−１］ＳＤとの加算、つまり、
［１００］ＳＤ＋［００−１］ＳＤ
を説明する。２つのデータが、
［１００］ＳＤ＝［４］Ｄ
「００−１］ＳＤ＝［−１］Ｄ
であるので、加算結果が１０進数系で値［３］Ｄになる。この加算の演算が次のようにして行われる。
図３に示すように、制御信号のタイミングＴ１で、［１００］ＳＤの最上位の桁を表す「１」と、［００−１］ＳＤの最上位の桁を表す「０」とが、前段の回路から加算器１にデータａ１，ａ２として入力される。これによって、内部での加算結果が「１」になるので、加算器１は、表２に示される加算規則に従って、桁上げ信号ｃ１の値を「０」にし、加算信号ｓ１の値を「１」にする。メモリ４は、加算器１から「１」を受け取ると、次のタイミングＴ２でこの値を出力する。この結果、値「１」の加算信号ｓ１を受け取った時点では、値「０」の加算信号ｓ１を出力する。
加算器２は、加算器１から受け取った桁上げ信号ｃ１の値「０」と、メモリ４から受け取った加算信号ｓ１の値「０」とを加算する。これによって、内部での加算結果が「０」になるので、加算器２は、表３に示される真理値表に従って、桁上げ信号ｃ２と加算信号ｓ２との両方の値を「０」にする。メモリ５は、前のタイミングのときに受け取った値「０」を出力する。
加算器３は、加算器２から受け取った桁上げ信号ｃ２の値「０」と、メモリ４から受け取った加算信号ｓ２の値「０」とを加算する。これによって、内部での加算結果が「０」になるので、加算器３は、表４に示される加算規則に従って、データａ３の値を「０」にする。
こうして、制御信号のタイミングＴ１では、最上位の桁の演算結果として、値「０」のデータａ３が、後段の回路に出力される。
制御信号のタイミングＴ２で、データ［１００］ＳＤの中の、最上位の桁から２番目の桁「０」と、データ［００−１］ＳＤの中の、最上位の桁から２番目の桁「０」とが前段の回路から加算器１に入力される。タイミングＴ１の場合と同じように、加算器１〜３が２〜４の加算規則を用い、また、メモリ４．５が値を遅延して、２番目の桁が加算される。この結果、制御信号のタイミングＴ２では、値「１」のデータａ３が後段の回路に出力される。
制御信号のタイミングＴ３で、データ［１００］ＳＤの中の、３番目の桁「０」と、データ［００−１］ＳＤの中の、３番目の桁「−１」とが前段の回路から加算器１に入力される。タイミングＴ１の場合と同じように、加算器１〜３とメモリ４．５とが３番目の桁を加算する。この結果、制御信号のタイミングＴ３では、値「−１」のデータａ３が後段の回路に出力される。
制御信号のタイミングＴ４では、演算の終了のために、前段の回路がデータａ１，ａ２として、値「０」を加算器１にそれぞれ入力する。この結果、タイミングＴ４では、値「０」のデータａ３が後段の回路に出力される。制御信号のタイミングＴ５では、同じく演算の終了のために、前段の回路がデータａ１，ａ２として、値「０」を加算器１にそれぞれ入力する。この結果、タイミングＴ４では、値「−１」のデータａ３が後段の回路に出力される。
タイミングＴ１〜Ｔ５によって、加算器３が後段の回路に出力するデータの値が［０１−１０−１］ＳＤとなる。このデータが１０進数で［３］Ｄになるので、正しい結果が出力されている。
このように、実施の形態１によれば、２つのデータの加算に際して、桁上げ信号が発生しないので、最上位の桁からの加算が可能になる。つまり、遅延手段としてメモリ４．５を備え、かつ、必要な桁分の演算回路１〜３だけの、非常に簡単な構成によって、上位桁からの一桁または複数桁単位で、すべての加算を処理することができる。つまり、小規模な回路で加算を実現できる。
また、上位桁からの加算に限らず、減算を含め、桁上げ信号が必要な演算は全て実現できることになる。一般に情報は下位桁よりも上位桁のほうが重要な要素であるため、上位桁から処理することで、有効な情報をより先に取得することができることになる。また、回路として１桁分の演算回路であるため、小型化できる特徴も持ち合わせる。
なお、実施の形態１では、データａ１，ａ２の値として２進ＳＤ数系を用いたが、通常の２進バイナリを用いてもよい。各制御信号としてクロックパルスを用いてもよい。このときには、メモリ４，５がクロックのエッジで値を記憶するようにする。
また、１０進１１値といった冗長数系でも、実施の形態１と同様の回路形式で加算が可能である。冗長数が負である必要はなく、正の方向に伸ばしても問題はない。実施の形態１では、加算器を３段で構成しているが、加算器を４段以上にすると、上位桁からの多入力の加算を実現することができる。
さらに、２進ＳＤ数系で発生する桁上げ信号が上位の２桁まで伝わるが、２進ＳＤ数系に比べてさらに、冗長度の大きな数系によれば、桁上げ信号の伝搬が上位の１桁で収まる。このために、加算器を２段にすることができる。
［発明の実施の形態２］
実施の形態２では、実施の形態１の加算器１，２を次のようにして具体化している。つまり、このために、「０」と「１」の組み合わせで構成される、２桁の２進数を用いる。２桁の２進数によれば、４通りの「０」と「１」の組み合わせがある。実施の形態２では、２進ＳＤ数系の「０」が２通りの２進数で表される。したがって、２進数による２進ＳＤ数系の「１」、「０」、「−１」は、次のように表現される。
２進ＳＤ数系の「−１」…［１１］Ｂ
２進ＳＤ数系の「０」  …［００］Ｂ［１０］Ｂ
２進ＳＤ数系の「１」  …［０１」Ｂ
このように表された２進ＳＤ数系の「１」、「０」、「−１」によると、加算器１は次のようになる。たとえば、データａ１が「０」であり、データａ２が「−１」である場合、加算器１には、値が［００］Ｂであるデータａ１が入力され、値が［１１］Ｂであるデータａ２が入力される。
加算器１内では、２進ＳＤ数系の表現によると、加算結果が「−１」である。この場合、表２によれば、桁上げ信号の値が「−１」であり、加算信号の値が「１」である。したがって、加算器１は、桁上げ信号として［１１］Ｂを出力し、加算信号として［０１］Ｂを出力する。
このように、加算器１の場合、入力が［００］Ｂと［１１］Ｂとである場合、出力が［１１］Ｂと［０１］Ｂとである。さらに、この他の入力と出力との組み合わせに基づいて、ＡＮＤゲート、ＯＲゲートおよびＮＯＴゲートを用いて加算器１を構成することができる。
なお、２進ＳＤ数系を構成する値「−１」、「０」、「１」には、２進数の各種の対応がある。そして、この対応に応じて、ＡＮＤゲート、ＯＲゲートおよびＮＯＴゲートのＡＮＤ、ＯＲ、ＮＯＴに限定されない組み合わせが可能である。
また、ＡＮＤゲート、ＯＲゲートおよびＮＯＴゲートの組み合わせによる回路構成以外に、他の論理関数の組み合わせでも設計が可能である。
［発明の実施の形態３］
実施の形態３では、実施の形態１の加算器１，２が次のような構造である。
つまり、加算器１として、図４に示す加算器が用いられている。図４の加算器１０１は、ニューロンＭＯＳ（Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）トランジスタを用いて作られたニューロンＭＯＳインバータ１０１Ａ〜１０１Ｃとインバータ１０１Ｄ〜１０１Ｆとを備えている。
ニューロンＭＯＳトランジスタ１０１Ａ〜１０１Ｃは、順次に接続されている。
ニューロンＭＯＳインバータ１０１Ａの出力がニューロンＭＯＳインバータ１０１Ｃとインバータ１０１Ｆとに接続され、ニューロンＭＯＳインバータ１０１Ｂの出力がニューロンＭＯＳインバータ１０１Ｃとインバータ１０１Ｅとに接続されている。また、ニューロンＭＯＳインバータ１０１Ｃの出力がインバータ１０１Ｄに接続されている。
２ビットで構成されるデータａ４およびデータａ５は、図１のデータａ１およびデータａ２に相当している。冗長な数系の数の桁が、データａ４，ａ５で表されている。１本の信号線を伝わる電気信号によって、データａ４，ａ５を表現することができない。したがって、データａ４，ａ５を表現するためには、２本の信号線が必要である。
実施の形態３では、「−１」ＳＤを「００」Ｂとして表現し、「０」ＳＤを「１０」Ｂまたは「０１」Ｂとして表現し、「１」ＳＤを「１１」Ｂとして表現する。この表現によれば、ニューロンＭＯＳにとって、処理が最も簡単になる。すなわち、２本の信号線のうち、“１”の数が０個のときに「−１」ＳＤを示し、“１”の数が１個のときに「０」を示し、“１”の数が２個のときに「＋１」ＳＤを示す。この“１”の数の情報と元のＳＤ数の関係には線形性があり、かつ、“１”の数をニューロンＭＯＳでは、等しい容量の２つの入力端子にそれぞれの信号線を入力すれば簡単に計算が行えるからである。
ニューロンＭＯＳインバータ１０１Ａ，１０１Ｂには、しきい値が設けられている。加算結果が「−０．５」および「１．５」である場合に、出力が反転するように、しきい値が設定されている。そして、それぞれの出力を反転することで、桁上げ信号ｃ３が出力される。桁上げ信号ｃ３の冗長数と電気信号のコードとは、データａ４，ａ５と同じである。同時に、ニューロンＭＯＳインバータ１０１Ｂの出力がニューロンＭＯＳインバータ１０１Ｃに入力される。さらに、インバータ１０１ＤがニューロンＭＯＳインバータ１０１Ｃの出力を反転することで、加算信号に相当するｓ３が出力される。ｓ３は図１のｓ１に相当している。
図５は、実施の形態１の加算器２に相当するものである。図５の加算器は、ニューロンＭＯＳインバータ２０１Ａ，２０１Ｂを備えている。ニューロンＭＯＳインバータ２０１Ａ，２０１Ｂは、順次に接続されている。ニューロンＭＯＳインバータ２０１Ａの出力がニューロンＭＯＳインバータ２０１Ｂとインバータ２０１Ｃとに接続され、ニューロンＭＯＳインバータ２０１Ｂの出力がインバータ２０１Ｄに接続されている。
前段の加算器からの中間和成分ｓ３と桁上げ信号ｃ３とが加算される。内部の加算結果が「−０．５」のときにニューロンＭＯＳインバータ２０１Ａの出力が反転し、その出力をインバータ２０１Ｃが反転して、桁上げ信号ｃ４が出力される。同時に、ニューロンＭＯＳインバータ２０１Ａの出力がニューロンＭＯＳインバータ２０１Ｂに入力されることで、加算結果成分ｓ４が出力される。加算結果成分ｓ４は、ロウレベルのときに「−１」を、ハイレベルのときに「０」を表現している。ｃ４とｓ４はそれぞれ図１のｃ２とｓ２に相当している。
実施の形態１の加算器３に相当する加算器は、ニューロンＭＯＳトランジスタを用いた場合には不要になる。加算器２０１からの中間和成分ｓ４を１演算時間単位分だけ遅延素子にて遅らせる。桁上げ信号ｃ４と、遅延した加算結果成分ｓ４とをペアにして出力する。遅延素子は実施の形態１のメモリ４である。このペアの出力は、図１のａ３に相当し，冗長数と２本の信号線の対応は、ａ４，ａ５のものと同じである。
このように、ニューロンＭＯＳトランジスタを用いると、極めて容易に回路を実現することができる。また、２進ＳＤ数に限定されることなく、基数を増加させた冗長加算器や、４入力といった入力数を増加させた冗長加算器、基数の増加と冗長数の増加とにより、遅延素子が１つ（上位一桁への桁上げ信号の伝搬）の冗長加算器が容易な回路で実現することができる。
なお、実施の形態３では、ニューロンＭＯＳトランジスタの演算用の基本ゲートとして、インバータ回路を用いているが、任意のしきい値の設定が可能であり、かつ、出力がバイナリ「０」、「１」である形式のものであれば、インバータ回路に限定されることがない。たとえば、センスアンプ形式の論理回路を用いてもよい。
［発明の実施の形態４］
実施の形態４は、第１と第２の数の差、第３と第４の数の差の小さい方を演算し、出力する演算処理用半導体回路に対して、この発明を適用したものである。この演算半導体回路を図６に示す。図６の演算処理用半導体回路は、差分絶対値回路６，７、５メモリ８，９および最小値回路１０を備えている。
差分回路６には、第１の数の１つの桁を表すデータａ６と、第２の数の１つの桁を表すデータａ７とが入力される。データａ６，ａ７は、最上位の桁から順に差分回路６に入力される。差分回路６は、入力されたデータａ６とデータａ７との差分を算出し、算出した差分を表す差分信号ｂ６をメモリ８に出力する。
同じように、差分回路７には、第３の数の１つの桁を表すデータａ８と、第４の数の１つの桁を表すデータａ９とが入力される。データａ８，ａ９は、最上位の桁から順に差分回路７に入力される。差分回路７は、入力されたデータａ８とデータａ９との差分を算出し、算出した差分を表す差分信号ｂ７をメモリ９に出力する。
メモリ８，９は、制御クロックｃ６で動作する。メモリ８，９として、たとえば、Ｄフリップフロップを用いれば、メモリ８，９は、制御クロックｃ６のエッジトリガによって、記憶している内容を更新する。つまり、メモリ８，９は、１演算時間単位前の差分信号ｂ６，ｂ７を最小値回路１０に出力する。
最小値回路１０は、メモリ８，９からの差分信号ｂ６，ｂ７の大小関係に応じて、信号を出力する。つまり、差分信号ｂ６が差分信号ｂ７に比べて小さい場合、差分信号ｂ６を出力する。この状態が第１状態である。差分信号ｂ７が差分信号ｂ６に比べて小さい場合、最小値回路１０は、差分信号ｂ７を出力する。この状態が第２状態である。また、差分信号ｂ６と差分信号ｂ７が等しい場合、最小値回路１０は、差分信号ｂ６と差分信号ｂ７とのどちらの信号を出力してもよい。この状態が第３状態である。
そして、リセット信号が最小値回路１０に加えられるまで、最小値回路１０が第１状態や第２状態から抜け出ることがない。
次に、実施の形態４の動作について説明する。
差分回路６がデータａ６とデータａ７との差分を算出し、絶対値回路７がデータａ８とデータａ９との差分を算出する。算出結果は、差分信号ｂ６，ｂ７として出力される。
差分信号ｂ６，ｂ７は、メモリ８，９に入力される。このとき、制御クロックｃ６により記憶内容が更新される。メモリ８，９の出力は、前回の演算結果であり、一桁上位の差分結果である。このように、メモリ８，９は、演算した結果を記憶する。つまり、メモリ８，９は、差分信号ｂ６，ｂ７を遅延して、桁情報の仕切りとして動作する。
メモリ８，９は、記憶している差分信号ｂ６，ｂ７を最小値回路１０に出力する。最小値回路１０は、差分信号ｂ６，ｂ７の中の小さい方の値を選択する。そして、最小値回路１０は、選択した差分信号を出力する。
この後、制御クロックｃ６の次のパルスによって、データａ６〜ａ９の桁が次に移ると、演算が一桁下位に移り、上位桁から下位桁に向かって演算が進んで行く。
このように、実施の形態４によれば、差分の小さい方の値を上位桁から順に出力することができる。通常、最小値の判断に際して、データを構成する桁の中の上位桁から順に調べる必要がある。この結果、実施の形態４は、上位桁からの演算に適している。
また、異なった演算器を多段に配置することで、複雑な演算の組み合わせを実現することができる。
これは、上位桁からの処理の特徴である。なお、実施の形態４では、演算が２段になっているが、２段以上であれば何段でもよい。
また、桁情報の区切りおよび記憶をするメモリが必ずしも各段にある必要がなく、最終段の出力に設けられていなくてもよい。
［発明の実施の形態５］
実施の形態５では、差分の絶対値を算出する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図７に示す。図７の演算処理用半導体回路は、差分回路１１、正反転回路１２、状態記憶回路１３およびメモリ１４を備えている。
差分回路１１には、第１の数の１つの桁を表すデータａ１１と、第２の数の１つの桁を表すデータａ１２とが入力される。データａ１１，ａ１２は、データを構成する桁の最上位桁から演算時間単位毎順に差分回路１１に入力される。
差分回路１１は、入力されたデータａ１１からデータａ１２を減算する。差分回路１１は、差分の算出で発生した桁上げ信号ｂ１１を出力すると共に、減算した差分を示す差分信号ｂ１２を正反転回路１２と状態記憶回路１３とに出力する。
状態記憶回路１３は、差分信号ｂ１２の状態を記憶する。差分演算には３つの状態がある。データａ１１とデータａ１２とのどちらが大きいが下位桁に判断をゆだねる状態、データａ１１が大きいと判断がついた状態、すなわち差分信号ｂ１２が正のとき、データａ１２が大きいと判断ついた状態、すなわち差分信号ｂ１２が負のときである。一度どちらかが大きいと判断がつくと、処理が終わるまでその状態を抜け出すことはない。状態記憶回路１３は、これら３つの状態を記憶する。そして、データａ１２が大きいと判断ついた状態のとき、状態記憶回路１３は、正反転回路１２に反転命令を出力する。
正反転回路１２は、差分信号ｂ１２の値の絶対値をとる。このために、正反転回路１２は、状態記憶回路１３が記憶している差分信号ｂ１２の状態を用いる。すなわち、データａ１２が大きい状態の場合、差分信号ｂ１２は負であるため、正反転回路１２は、差分信号ｂ１２の各桁の正負を示す符号を反転する。正反転回路１２は、こうして算出した差分信号ｂ１２の絶対値を示す絶対値信号ｃ１１を上位桁から順に出力する。
メモリ１４は、制御クロックｄ１１で動作し、正反転回路１２からの絶対値信号ｃ１１を記憶する。
このような実施の形態５によって、メモリ１４に記憶されている絶対値信号ｃ１１は、制御クロックｄ１１の次のクロックで出力される。すなわち一演算時間単位分遅延させる。これによって、差分回路１１が生成した桁上げ信号ｂ１１と、メモリ１４が出力する絶対値信号ｃ１１とが同一時間で同じ桁を示すことになり、外部回路での取り扱いを容易にすることができる。
［発明の実施の形態６］
実施の形態６では、上位桁から行われる任意の演算に連続して、上位桁から比較・判断をし、真偽が確定した場合に残りの下位桁の比較・判断を含む演算処理を省略する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図８に示す。この演算処理用半導体回路は、２つの２進数の平均値について複数組の中から最大なものを探し出す回路であり、加算器２１、遅延回路２２、比較器２３および記憶回路２４を備えている。
加算器２１には、第１の数の１つの桁を表すデータａ２１と、第２の数の１つの桁を表すデータａ２２とが入力される。データａ２１，ａ２２は、最上位の桁から順に加算器２１に入力される。加算器２１は、入力されたデータａ２１とデータａ２２とを加算し、加算結果を示す加算信号ｂ２１を遅延回路２２に出力する。この加算器は、実施の形態１で述べた回路であり、内部に遅延手段を持ち、外部へは桁上げ信号を発生しない。
遅延回路２２は、加算器２１から加算信号ｂ２１を受け取ると、制御クロックｃ２１によって、加算信号ｂ２１を１演算時間単位だけ遅らせる。上位桁からの処理の場合、１演算時間単位の遅延は、桁を１つずらすこと、すなわち、１２進数では２で割ったことに相当する。第１のデータおよび第２のデータは、２進数であるため、一桁分の遅れは、２で割ったことと同じになり、この結果、平均値が計算される。遅延回路２２は、平均値を示す平均値信号ｄ２１を比較器２３に出力する。
一方、記憶回路２４は、比較器２３が出力する最大の平均値信号ｄ２２を記憶している。そして、比較器２３からの制御信号ｅ２２がオフであるとき、記憶している現在の平均値信号、つまり、過去の平均値の最大値を示す平均値信号を最上位桁から順に比較器２３に出力する。また、比較器２３からの制御信号ｅ２２がオンになると、記憶回路２４は、出力を中止し、次からは再び最上位桁から順に最大平均値を出力するように準備をする。
比較器２３は、遅延回路２２からの平均値信号ｄ２１および記憶回路２４からの過去の最大平均値信号を上位桁から順番に受け取る。比較器２３は、遅延回路２２からの平均値信号ｄ２１が示す値と、記憶回路２４からの過去の最大平均値信号が示す値とを比較し、どちらが大きいかを判断する。そして、比較器２３は、大きい方の平均値信号を記憶回路２４に上位桁から順番に出力する。
また、２つの平均値信号の比較の際に、過去からの平均値の最大値、つまり、記憶回路２４からの平均値信号が示す値の方が大きいと、比較器２３が判断することができる場合がある。たとえば、２進ＳＤ数系であれば、遅延回路２２からの平均値信号が［００−１．．．］ＳＤであるのに対して、記憶回路２４からの平均値信号が［０１０．．．］ＳＤである場合が相当する。この場合、比較器２３は、上位から数桁目の時点で、比較判定を確定することができる。この場合には、比較器２３は、制御信号ｅ２２をオンにする。
制御信号をオンにした時点で、比較器２３がそれ以降の下位桁の比較判断を止め、同時に、記憶回路２４が平均値信号の出力を中止するので、平均値の計算や比較演算が中止される。そして、すべての演算回路のデータ転送を最上位桁からに戻し、次の桁のデータａ２１，ａ２２に投入する。
こうして、データが上位桁から逐次比較され、比較された結果の中で大きな方を出力すると共に、最大値を更新できないと、比較判断がついた桁以降の比較を含む演算処理を省略することができる。この結果、無駄のない演算を実現することができる。
また、この無駄な演算の抑止によって、処理を高速化することができるばかりでなく、低消費電力回路の実現が可能になる。特に、大量のデータを処理する際に有効である。
演算の種類は平均値に限定されるものでもなく、比較・判断演算の種類も最大のものに限定されるものでもなく、何らかの演算した結果に対して比較・判断をする回路があればよく、たとえば、２つの数の差分値がある値以下のものを出力する回路などでもよい。
また、演算の停止命令後、速やかに次のデータを投入するためには、データａ２１やデータａ２２以前に、データのバッファが必要になることもある。
［発明の実施の形態７］
実施の形態７では、データが示す値の範囲を演算し、演算した結果が所定範囲に属するかどうかを判断する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図９に示す。図９の演算処理用半導体回路は、最大値出力用の加算器２６Ａ、最小値出力用の加算器２６Ｂ、比較器２７，２８およびＡＮＤゲート２９を備えている。
最大値出用の力加算器２６Ａは、上位桁から順に入力されるデータａ２６とデータａ２７との加算結果として、下位桁側によって取り得る値の中の最大値を算出する。そして、加算器２６Ａは、算出した最大値を示す最大値信号ｂ２６を出力する。
最小値出力用の加算器２６Ｂは、データａ２６とデータａ２７との加算結果として、下位桁側によって取り得る値の中の最小値を算出する。そして、加算器２６Ｂは、算出した最小値を示す最小値信号ｂ２７を出力する。
比較器２７は、あらかじめ設定された上限値と加算器２６Ａからの最大値信号ｂ２６とを比較する。比較の結果、最大値信号ｂ２６が示す値が上限値に比べて小さくなったときに、比較器２７は、真をｃ２６に出力する。それ以外のときはｃ２６は偽を出力する。
比較器２８は、あらかじめ設定された下限値と加算器２６Ｂからの最小値信号ｂ２７とを比較する。比較の結果、最小値信号ｂ２７が示す値が下限値に比べて大きくなったときに、比較器２８は、真をｃ２７に出力する。それ以外のときはｃ２７に偽を出力する。ｃ２６，ｃ２７のいずれも真のときに「１」，偽のときに「０」となるようにする。
ＡＮＤゲート２９は、比較器２７からの出力ｃ２６と比較器２８からの出力ｃ２７との論理積の演算をする。それぞれの比較器２７，２８が真を出力したとき、ＡＮＤゲート２９が真を出力する。逆にｃ２６，ｃ２７のどちらかが偽ならば出力も偽となる。
この実施の形態７によれば、たとえば、図１０に示すように、加算結果が所定範囲に入ったどうかの判断を下せる。図１０ではバイナリ２進数系を仮定している。つまり、初期状態では、加算器２６Ａが算出する最大値と、加算器２６Ｂが算出する最小値との範囲が、全範囲Ｂ１になる可能性がある。最上位桁の演算結果が「０」である場合、それ以降の桁によって取り得る範囲は、［０１１．．．１１］Ｂから［００００．．．０］Ｂまでである。したがって、範囲Ｂ２が加算結果の中で取り得る部分である。この場合、比較器２７，２８のどちらも偽を出力している。
次の下位のデータａ２６，ａ２７を用いた演算結果が、「１」である場合、最小値が「０１０．．．０」に変化する。この場合、範囲Ｂ３が加算結果の中で取り得る部分である。
次の下位のデータａ２６，ａ２７を用いた演算結果が、「０」である場合、最大値が「０１０１１．．，１」に減少する。この場合、範囲Ｂ４が加算結果の中で取り得る部分である。このとき、範囲Ｂ４の最大値が上限値よりも小さくなっている。すなわち比較器２７が真を出力するようになる。しかし、比較器２８が偽を出力しているので全体の出力は偽のままである。
次の下位のデータａ２６，ａ２７を用いた演算結果が、「１」になると、範囲Ｂ５のように、とりうる最小値が上限値よりも大きくなる。これによって、次の下位桁を演算することなく、上限値と下限値とで決められる所定範囲に、範囲Ｂ５が入っていることが分かる。この場合、比較器２７．２８の両方が真を出力するため、ＡＮＤゲート２９の出力も真となる。
こうして、実施の形態７によって、データａ２６とデータａ２７との加算結果が所定範囲内に入るかどうかを検出することが可能である。
実施の形態７では、加算器２６Ａ，２６Ｂを用いているが、最大値と最小値が検出できる回路構成であれば、どのような演算でもよい。
また、比較演算としては、上限値だけとの比較でも良く、下限値だけとの比較でもよい。演算も加算に限定されるものではない。
さらに、図示を省略しているが、上限値と最小値との比較、あるいは下限値と最大値との比較を行うことで、所定範囲外のデータであるかどうかを検出することも可能である。
［発明の実施の形態８］
実施の形態８では、演算機能の切り替えが可能な演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図１１に示す。図１１の演算処理用半導体回路は、上位桁から処理することが可能な汎用回路３１，３２とメモリ３３とを備えている。
汎用回路３１は、上位桁からの加算機能や上位桁から比較機能等の複数の上位桁から順に処理できる演算機能を持つ回路である。汎用回路３１は、制御信号ｃ３１が示す命令によって、複数機能の中の１つを選択する。汎用回路３１は、入力されたデータａ３１，ａ３２を、選択した演算機能で処理する。この後、汎用回路３１は、演算結果を示すデータｂ３１をメモリ３３に出力する。また、汎用回路３１は、必要に応じて、上位桁の制御信号ｂ３２を出力する。
汎用回路３２は、汎用回路３１と同じように、加算機能や比較機能等の複数の上位桁から順に処理される演算機能を持つ回路である。汎用回路３２は、制御信号ｃ３２が示す命令によって、複数機能の中の１つを選択する。汎用回路３２は、入力されたデータａ３３やメモリ３３からのデータｂ３２を、選択した演算機能で処理する。
メモリ３３は、汎用回路３１からのデータｂ３１を制御クロックｄ３１によって、１演算時間単位だけ遅らせる。そして、メモリ３３は、遅延させたデータｂ３２を汎用回路３２に出力する。
このような実施の形態８によれば、制御信号ｃ３１，ｃ３２によって演算機能をコントロールすることができ、制御信号ｃ３１，ｃ３２が示す命令に応じた答えを出力することができる。つまり、制御信号ｃ３１，ｃ３２を与えることによって、演算機能の任意の設定を可能にする。
なお、実施の形態８が２つの汎用回路と１つのメモリから成り立っているが、汎用回路とメモリの個数および組み合わせについては、特にこれに限定されるものではない。
また、汎用回路としては、各機能を行う回路を用意することで実現可能であり、ニューロンＭＯＳトランジスタを用いたフレックスウェアでも実現することが可能あり、汎用回路が特に限定されるものではない。
さらに、この制御信号ｃ３１，ｃ３２が同じでもあっても、異なっていてもよい。たとえば、制御信号ｃ３１が加算命令を示し、制御信号ｃ３２が比較命令を示すという連続演算でもよく、また、ｃ３１とｃ３２とを共に加算命令にして連続した桁を演算する命令でもよい。
［発明の実施の形態９］
実施の形態９では、アナログ信号を一般に逐次比較形式と呼ばれる上位桁から順にアナログ−デジタル（Ａ／Ｄ）変換処理後のデータ処理を行う演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図１２に示す。図１２の演算処理用半導体回路は、Ａ／Ｄ変換器３６と演算回路３７とを備えている。
Ａ／Ｄ変換器３６は、アナログ信号をデジタル信号に変換する手段である。Ａ／Ｄ変換器３６は、一般に逐次比較形式と呼ばれる変換方式により、デジタル信号に上位桁から順に変換する。たとえば２進数の場合、全体を２つの領域に分割して、どちらの領域に入力アナログ電圧が属するか判断する。判断結果が高電圧側ならば“１”、低電圧側ならば“０”を出力する。次いでアナログ電圧の属していた片方の領域を更に２つの領域に分割し、どちらの領域に属するか判断を下す。同じように高電圧側の領域に属していれば“１”を、低電圧側ならば“０”を出力させる。このような分割を判断をくりかえし、入力するアナログ電圧の属する領域の範囲を順に狭めていくことで、上位桁から逐次変換する。分割と判断は１演算時間単位毎に行う。
Ａ／Ｄ変換器３６の変換の様子を図１３を用いて詳しく説明する。Ａ／Ｄ変換器３６に入力されたアナログ信号ａ３６の電圧レベル（以下、入力電圧と記す）が破線で示したレベルであったとする。最初に、入力電圧が最大振幅の半分より大きいか小さいかを、Ａ／Ｄ変換器３６が判断する。この場合、最大振幅の全範囲Ａ３６を２つの小範囲に分け、入力電圧が最小側の１／２範囲に入るが、最大側の１／２範囲に入るかを判断する。この場合、入力電圧が最大側の１／２範囲に入るので、Ａ／Ｄ変換器３６は、第１ビットが「１」であるデジタル信号ｂ３６を出力する。
次の演算時間単位後に、最大側の１／２範囲Ａ３７をさらに２つの１／４範囲に分け、入力電圧が最小側の１／４範囲に入るか、最大側の１／４範囲に入るかを判断する。この場合、入力電圧が最小側の１／４範囲に入るので、Ａ／Ｄ変換器３６は、第２ビットが「０」であるデジタル信号ｂ３６を出力する。以下、同じようにして、Ａ／Ｄ変換器３６は、演算時間単位毎に１／４範囲Ａ３８では第３ビットの結果「１」を出力し、１／８範囲Ａ３９では第４ビットの結果「１」を出力する。
このように、Ａ／Ｄ変換器３６は、電圧の範囲を狭めて、アナログ信号ａ３６をデジタル信号ｂ３６に変換する。このとき、Ａ／Ｄ変換器３６は、変換結果を上位ビットから順に出力する。このようなＡ／Ｄ方式は既知のものであるが、本特許では上位桁からの演算回路３７と組み合わせ，かつ変換をこの演算回路と同期させることに特徴がある。
また、Ａ／Ｄ変換器３６は、演算回路３７から制御信号ｂ３７を受け取ると、アナログ信号ａ３６の上位桁からのＡ／Ｄ変換を中止する。
演算回路３７は、Ａ／Ｄ変換器３６が出力するデジタル信号ｂ３６を受け取ると、デジタル信号ｂ３６に対して、あらかじめ設定された演算をする。そして、演算回路３７は、演算結果に基づいて、アナログ信号ａ３６をデジタル信号ｂ３６に変換する必要がないと判断すると、変換中止を示す制御信号ｂ３７をＡ／Ｄ変換器３６に出力する。必要がないという判断は、たとえば、その時にＡ／Ｄ変換器に求める変換精度が得られた時や、何らかの判断手段の真偽が確定した場合などが考えられる。
このような実施の形態９によれば、制御信号ｂ３７をＡ／Ｄ変換器３６に戻すことで、アナログ・デジタル変換を途中で中止し、次のアナログ信号を入力することが可能である。この結果、無駄な変換を抑止し、平均的な変換速度の向上、消費電力の低減などの利点が生まれる。
なお、実施の形態９では、デジタル信号ｂ３６として１ビット（２進数）毎の出力を得るために、電圧の範囲を１／２ずつ狭めていったが、複数ビット単位などの場合には、Ｎビット毎の出力を得るためには、電圧の範囲を２のＮ乗分の１にし、どの範囲に入るか判断を下していけばよい。
［発明の実施の形態１０］
実施の形態１０では、フレキシブルなビット幅のデータを転送できるバスを用いる演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路について図１４を用いて説明する。図１４では、メモリ４１Ａ，４１Ｂがビットシーケンシャルメモリである。つまり、メモリ４１Ａ，４１Ｂは、複数のデータを記憶し、データを演算単位の桁毎にデータバス４２Ａ，４２Ｂに出力する。このとき、メモリ４１Ａ，４１Ｂは、上位桁から下位桁に向かい順番に桁毎のデータを出力する。つまり、２進数においてはメモリ４１Ａ，４１Ｂは、記憶しているデータの上位ビットから下位ビットに向かい、１ビットずつ順番に出力する仕組みを持っている。メモリ４１Ａ，４１Ｂとしては、たとえば、シフトレジスタで構成されたものがある。
データバス４２Ａ，４２Ｂを経由してメモリ４１Ａ，４１Ｂに接続されている演算処理用半導体回路４３は、データを上位桁から順に処理する演算回路もしくは演算ユニットである。
データバス４２Ａ，４２Ｂは、一つのデータにつき１ビット幅のデータバスがあればよい。つまり、データバス４２Ａ，４２Ｂのバス幅が、メモリ４１Ａ，４１Ｂから同時に読み出せるデータ数（＝並列度）に相当している。
このように、従来のバス幅がデータのビット幅、または、その倍数であったのに対し、実施の形態１０によれば、全バス幅をメモリ４１Ａ，４１Ｂから同時に読み出せるデータ数にすればよい。
なお、実施の形態１０では、演算単位として１ビット単位を採用して説明をしたが、２ビット以上でもよく、本発明はそれに限定されないことは言うまでもない。
また、演算処理用半導体回路４３として単一の回路を用いているが、特に一つの回路である必要はなく、上位桁から順に処理する演算処理用半導体回路であればよい。
［発明の実施の形態１１］
実施の形態１１では、上位桁からの加算により上位桁から乗算を行う演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図１５に示す。図１５の演算処理用半導体回路は、シフトレジスタ４５Ａ〜４５Ｈ、部分積発生回路４６Ａ〜４６Ｈおよび冗長加算器４７Ａ〜４７Ｄ，４８Ａ，４８Ｂ，４９を備えている。
シフトレジスタ４５Ａ〜４５Ｈは、全部で８ビットの乗算を想定し、８個のシフトレジスタであり、上位桁から入力されたデータをクロックのエッジにより順に４５Ｈには４５Ｇの内容がシフトされ、４５Ｇには４５Ｆの内容が、４５Ｆには４５Ｅの内容がシフトされ、以下同様に内容がシフトされ、４５Ａには新しい桁の乗数情報が入る。このデータは、乗数を示すデータの最上位桁から順に、シフトレジスタの４５Ａに入力される。シフトレジスタ４５Ａ〜４５Ｈは、記憶された乗数データを部分積発生回路４６Ａ〜４６Ｈに出力する。たとえば、最初のステップでは、シフトレジスタ４５Ａに乗数データの最上位桁が入り、部分積発生回路４６Ａにデータを出力する。残りの４５Ｂ〜４６Ｈには０が記憶されている。次のステップでは、４５Ｂに最上位桁が記憶され、４５Ａには最上位から２桁目のデータが記憶され、部分積発生回路４６Ａ〜４６Ｂにそれぞれ出力される。
部分積発生回路４６Ａ〜４６Ｈは、８ビットの乗算のため、８回の部分積発生回路であり、シフトレジスタ４５Ａ〜４５Ｈから出力される乗数と、全ビットが同時に入力されている被乗数との部分積を算出する。被乗数は、４６Ａに最上位桁、４６Ｈに最下位桁が入るようになっている。そして、部分積発生回路４６Ａ〜４６Ｈは、最上位桁から順番に、乗算における同一桁の部分積を加算回路へ出力する。
冗長加算器４７Ａ〜４７Ｄ，４８Ａ，４８Ｂ，４９は、ツリー状の接続をしている。このツリー型接続によって、冗長加算器４７Ａ〜４７Ｄ，４８Ａ，４８Ｂ，４９は、部分積発生回路４６Ａ〜４６Ｈで発生した部分積を加算し、最終段の冗長加算器４９で１つの乗算結果を上位桁から順に出力する。
このような構成によって、図１６に示すように、乗算が筆算の形式に展開され、加算する部分積を縦割りした状態の、部分積列が生成・加算されることで乗算が実現される。図１６では、縦割りにされた部分積の範囲が範囲Ａ４５で示されている。そして、部分積発生回路４６Ａ〜４６Ｈからは、範囲Ａ４５の内部の８つの枠に入る数字が同一クロックで出力されることになる。１ステップ（演算時間単位）毎に範囲Ａ４５が下位桁（図１６上では、右側）に移動し、一つ下位桁の部分積が範囲Ａ４５に現れることになる。こうして範囲を下位桁に移動することで部分積が上位桁から下位桁に向かい順に生成されることになる。冗長加算器４７Ａ〜４７Ｄ，４８Ａ，４８Ｂ，４９によって、部分積発生回路４６Ａ〜４６Ｈが生成して上位桁からの部分積を加算し、こうして上位桁からの乗算結果を得ることができる。
このように、実施の形態１１によれば、上位桁からの加算によって、上位桁がらの乗算を行うことが可能になる。
なお、実施の形態１１では、単純化のため、８ビット単位の乗算に対して、８つの部分積を発生しているが、一般に用いられているブースデコーダを用いて、同一時間に生成する部分積の数を減らしてもよい。
また、冗長加算器４７Ａ〜４７Ｄ，４８Ａ，４８Ｂ，４９として、２入力１出力タイプのものを用いているが、上位桁からの加算が行える加算器なら何でもよく、たとえば、４入力１出力の冗長加算器等でもよい。
さらに、実施の形態１１では、８ビットの乗算器を例にしているが、８ビットに限定されるものではなく、１６ビットなど何でもよい。１６ビットの場合には、生成される部分積が原則として１６個になる。
［発明の実施の形態１２］
実施の形態１２は、実施の形態１１の変形例である。つまり、実施の形態１２では、乗算以外にも検索などを含む情報集約型の処理をする演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図１７に示す。図１７の演算処理用半導体回路は、汎用演算器５１Ａ〜５１Ｈ，５２Ａ〜５２Ｄ，５３Ａ，５３Ｂ，５４を備えている。
実施の形態１２では、汎用演算器５１Ａ〜５１Ｈ，５２Ａ〜５２Ｄ，５３Ａ，５３Ｂ，５４がツリー状に接続されている。汎用演算器５１Ａ〜５１Ｈが制御命令ｂ５１によって制御され、汎用演算器５２Ａ〜５２Ｄが制御命令ｃ５２によって制御される。そして、汎用演算器５３Ａ，５３Ｂが制御命令ｄ５３によって制御される。
たとえば、汎用演算器５１Ａ〜５１Ｈは、制御命令ｂ５１によって指定される演算処理を、データａ５１１〜ａ５１１６に対して行う。つまり、汎用演算器５１Ａ〜５１Ｈ，５２Ａ〜５２Ｄ，５３Ａ，５３Ｂ，５４が上位桁からの加算を行う機能を持てば、実施の形態１１と同等の機能を果たす。また、汎用演算器５１Ａ〜５１Ｈ，５２Ａ〜５２Ｄ，５３Ａ，５３Ｂ，５４が上位桁からの最大値を出力する回路であれば、汎用演算器５４から最大値が出力されることになる。
このように、この実施の形態１２によれば、情報の絞り込み、または、情報の集約を行い、これによって、情報を一つにするという処理をすることが可能になる。つまり、乗算以外にも検索を含む他の情報集約型の処理が可能になる。また、上位桁からの演算原理により汎用演算器５１Ａ〜５１Ｈ，５２Ａ〜５２Ｄ，５３Ａ，５３Ｂ，５４が一桁の処理だけを行えばよいため、回路の小型化が可能になり、さらに、回路全体として並列度を向上することができる。
なお、実施の形態１２では、１６入力の回路について記述しているが、１６入力にこだわる必要はなく、たとえば、８入力や３２入力などでもよい。
［発明の実施の形態１３］
実施の形態１３では、加算を繰り返すことで上位桁からの乗算を実現する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図１８に示す。図１８の演算処理用半導体回路は、部分積発生回路５５Ａ〜５５Ｄ、単体の遅延メモリ５６Ａ，５６Ｅ遅延メモリ内蔵加算ブロック５６Ｂ〜５６Ｄおよび冗長加算器５７を備えている。ここでは、４ビット乗算器としている。
部分積発生回路５５Ａ〜５５Ｄには、被乗数ａ５５が入力される。このとき、被乗数ａ５５の最上位桁データが部分積発生回路５５Ｄに入力され、最上位桁の一桁下位桁のデータが部分積発成回路５５Ｃに入力され、最下位から２番目の桁のデータを部分積生成回路５５Ｂに、最下位桁のデータを部分積発成回路５５Ａに入力している。また、部分積発生回路５５Ａ〜５５Ｄには、乗数ａ５６が入力される。乗数ａ５６は、上位桁から演算時間単位に一桁ずつ順番に部分積発生回路５５Ａ〜５５Ｄに同時に入力される。部分積発生回路５５Ａ〜５５Ｄは、被乗数ａ５５と乗数ａ５６とから部分積を生成する。
部分積発生回路５５Ａ〜５５Ｄからの部分積をメモリ５６Ａ、メモリを内蔵した加算器５６Ｂ〜５６Ｄで加算処理する。このために、加算器５６Ｂは、メモリ５６Ａによって遅延された部分積発生回路５５Ａからの部分積と、部分積発生回路５５Ｂからの部分積とを加算し、制御信号５５ｅの次の立ち上がりで、桁上げ信号ｂ５５と加算信号ｂ５６とを出力する。すなわち、内部に演算結果を記憶し、１ステップ（演算単位時間）だけ遅らせる機能を持つ。メモリ内蔵型加算器５６Ｃは、値「０」と、部分積発生回路５５Ｃからの部分積とメモリ内蔵型加算器５６Ｂの加算信号ｂ５６とを加算し、制御信号５５ｅの次の立ち上がりで、桁上げ信号ｃ５５と加算信号ｃ５６とを出力する。
加算器５６Ｄは、２つ下位の桁の加算をする加算器５６Ｂからの桁上げ信号ｂ５５と、部分積発生回路５５Ｄからの部分積とメモリ内蔵型加算器５６Ｃからの加算信号ｃ５６とを加算し、制御信号５５ｅの次の立ち上がりで、桁上げ信号ｄ５５と加算信号ｄ５６とを出力する。メモリ５６Ｅは、２つ下位の桁の加算をする加算器５６Ｃからの桁上げ信号ｃ５５とメモリ内蔵型加算器５６Ｄの加算信号ｄ５６とを遅延して冗長加算器５７に出力する。
メモリ５６Ａ，５６Ｅとメモリ内蔵型加算器５６Ｂ〜５６Ｄとは、制御クロックｅ５５によって、冗長加算器５７側に向けてデータを１桁ずつ左シフトすることになる。また、メモリ内蔵型加算器５６Ｄが発生した桁上げ信号ｄ５５と、その他の結果を同じ桁に変換するために、メモリ５６Ｅが必要である。
冗長加算器５７は、メモリ５６Ｅが遅延した加算器５６Ｄからの加算信号ｄ５６と、メモリ内蔵型加算器５６Ｃからの桁上げ信号ｃ５５と、加算器５６Ｄからの桁上げ信号ｄ５５とを用いて、上位桁からの加算を行う。この加算器は２進ＳＤ数系の場合実施の形態１に記載の上位桁先行加算器の設計とほぼ同一である。ただ、加算器１にＳＤ数系の２つの入力以外にバイナリ数系の入力が一つ増加しただけである。表２の内部加算値が＋３のときにＣａｒｒｙ＋１、Ｓｕｍｌを出力する条件を加えればよい。こうして上位桁から順に乗算結果を出力する。
実施の形態１３によれば、図１９に示すように、４ビット×４ビットの乗算をする場合、筆算形式で部分積を発生させ、それを加算する。
行加算部５６は、この乗算方式における加算の仕組みを簡略化して示したものである。行加算部５６では、円で囲まれた記号「＋」記号が、上位桁からの加算が行える加算器を表し、四角で囲まれた記号「Ｄ」が、メモリを表す。メモリは、１演算時間単位毎に入力データを記憶していく。「＋」記号と「Ｄ」記号をペアにしたものが、図１８の５６Ｂ〜５６Ｄに相当する。この部分積を加算するために、予めメモリＤを０にリセットしておく。始めのステップで、筆算の一番下の行Ａ５５を示すデータを加算部５６に入力し、このデータを記憶する。
２番目のタイミングでは、メモリ「Ｄ」により入力データを左シフト（×２倍）する。同時に、下から２番目の行Ａ５６を示すデータを行加算部５６に入力し、入力データと、行加算部５６に蓄えられているデータとを加算する。加算部５６に蓄えられているデータは、前回の行Ａ５５をシフトして得たものである。
３番目のタイミングでは、２番目のタイミングで得た加算結果を左シフトし記憶する。この後、上の行をさらに加算していくことを繰り返すことで、最終的な結果を出力する。
このように、実施の形態１３によれば、加算を繰り返すことで乗算を実現する場合、乗算結果を最終段から、かつ、上位桁から出力することができる。
なお、実施の形態１３では、４ビット×４ビットの乗算器を仮定しているが特に４ビットに限定されるものではない。４ビット以上の場合は、メモリ付き加算器５６Ｄのように、部分積発成回路からの部分積データと、２桁下の加算器からの桁上げデータと、１桁下の加算器からの加算和データの３つを入力するメモリ付き加算器を増加させればよい。
また、ブースデコーダなどの既知のデコード手法を組み合わせてもよい。
図１８では加算器５６Ｂ〜５６Ｄの桁上げ信号を遅延させたため２桁上位の加算器に桁上げデータを入力する形式としたが、この遅延メモリを取り除き、一桁上位の加算器に直に桁上げデータを入力してもよい。
また、上位桁からの乗算で取り扱う数系がバイナリ数系や２進ＳＤ数系に特に限定されるものではない。
［発明の実施の形態１４］
実施の形態１４では、冗長数系を用いない一般的な数系を用いて、上位桁から加算演算をする。このために、実施の形態１４では、演算対象の数字に確定・不確定を表すフラグを付ける。この様子を図２０に示す。図２０では、
［２９９９］Ｄ＋［９０２］Ｄ＝［３９０１］Ｄ
の１０進数加算を例としている。この加算例では、一の位から百の位まで、下位の桁で発生した桁上げが伝搬する。
タイミングＴ７１では、千の位の数字が加算され、値［２］Ｄが得られる。この値［２］Ｄは、下位の桁からの桁上げ信号によって変化する可能性がある。このときには、値［２］Ｄに対してフラグが付けられる。実施の形態１４では、フラグとして「？」マークが用いられている。
タイミングＴ７２では、百の位の数字が加算され、値［１８］Ｄが得られる。この値［１８］Ｄでは、桁上げ信号として値［１］Ｄが発生し、また、加算信号が値［８］Ｄである。桁上げ信号［１］Ｄは、千の位の数字で値［２］Ｄを値［３］Ｄに変更する。
ここで、加算信号値［８］Ｄは、下位の十の位以下の信号に係わらず、千の位への桁上げ信号にならない。このために、千の位の数字に付けられていた「？」マークが外れて、値［３］Ｄが確定する。
タイミングＴ７３では、十の位の数字が加算され、値［０９］Ｄが得られる。この値［０９］Ｄでは、桁上げ信号は値［０］Ｄである。加算信号である値［９］Ｄは、一の位の計算結果によって、桁上げ信号の値［０］Ｄや加算信号の値［９］Ｄが変更される可能性ある。このために、加算結果である桁上げ信号の値［０］Ｄと、加算信号の値［９］Ｄとの両方に「？」マークが付けられる。
したがって、十の位からの桁上げ信号が確定されていないので、百の位の加算信号である値［８］Ｄに付けられた「？」マークは、外れないで伝播していく。
タイミングＴ７４では、一の位の数字が加算され、値［１１］Ｄが得られる。この値［１１］Ｄでは、桁上げ信号として値［１］Ｄが発生し、また、加算信号が値［１］Ｄである。
一の位の桁上げ信号である値［１］Ｄは、十の位の加算信号である値［９］Ｄに加算される。この結果、十の位では、値［１０］Ｄが得られ、桁上げ信号である値［１］Ｄが発生する。この桁上げ信号は、百の位の加算信号である値［８］Ｄに加算される。
こうして、百の位と十の位とに桁上げ信号が伝搬する。一の位から桁上げ信号が「１」Ｄで確定したため、十の位の加算信号の値、十の位からの桁上げ信号と百の位の加算信号の全ての値が確定される。この操作を繰り返して、確定された値が順に出力され、正しい加算結果である値［３９０１］Ｄが得られる。なお、図２０では、出力される桁に下線が描かれている。
このような加算をする演算処理用半導体回路を図２１に示す。この演算処理用半導体回路では、桁上げ信号にのみフラグ（図２０の？マーク）に相当する信号が状態信号として付加されている。図２１の演算処理用半導体回路は、加算器６１と桁上げ制御回路６２，６３とそれぞれに遅延素子６１ｍ、６２ｍ、６３ｍとを備えている。
加算器６１は、第１の数の上位桁から入力される１つの桁データａ６１と、第２の数の上位桁から入力される１つの桁データａ６２との加算をする。加算器６１は、結果として、桁上げ信号ｂ６１と加算信号ｂ６２とを出力する。また、加算器６１は、状態信号ｂ６３を出力する。状態信号ｂ６３は、桁上げ信号ｂ６１が発生する可能性があるかないかを示す。この状態信号ｂ６３が真であれば、桁上げ信号ｂ６１が発生する可能性があることを示す。加算信号ｂ６２は、遅延素子６１ｍで１ステップ（演算時間単位）分、すなわち１桁分の遅延をし記憶する。
桁上げ制御回路６２は、図２２に示すように、状態制御回路６０１、出力回路６０３を備えている。桁上げ制御回路は、桁上げ信号ｂ６１および状態信号ｂ６３、遅延された加算結果ｂ６２に従って、桁上げの必要があるかないかを判断し、必要に応じて結果を変えていく。判断のために、桁上げ制御回路６２は、次の表５に示すような入出力関係を内部に記憶している。
0003811354.tif 000007
表５によれば、入力加算結果ｂ１２により処理が異なる。
入力加算結果ｂ１２が、値「０」〜「８」である時は、上位桁への桁上げ信号伝播の可能性がないため、状態制御回路６０１は、値「０」を示す桁上げ信号ｃ６１と、「固定」状態を示す状態信号ｃ６３を出力する。出力回路６０３は、入力桁上げ信号ｂ６１が値「０」の時には、入力加算結果信号ｂ６２と同一の値を示す結果成分ｃ６２を出力し、入力桁上げ信号ｂ６１が値「１」の時には、入力加算結果信号ｂ６２に１を足した値を示す結果成分ｃ６２を出力する。
入力加算結果ｂ１２が、値「９」である時は、状態制御回路６０１は、入力された桁上げデータｂ６１と同一の値を示す桁上げデータｃ６１と、入力された状態信号ｂ６３と同一の値を示す状態信号ｃ６３を出力する。入力桁上げ信号ｂ６１が値「１」の時には、値「０」を示す結果成分ｃ６２を出力し、値［０］の時には、値「９」を示す結果成分ｃ６２を出力する。
このようにして生成した状態信号ｃ６３を、桁上げ制御回路６２は桁上げ制御回路６３に出力する。また、桁上げ制御回路６２は、桁上げ信号ｂ６１と加算信号ｂ６２との加算結果から、桁上げ信号ｃ６１を生成する。そして、桁上げ制御回路６２は、生成した桁上げ信号ｃ６１を桁上げ制御回路６３に出力する。
出力回路６０３は、メモリ６１ｍからの加算信号ｂ６２と、桁上げ信号ｂ６１とに基づいて、加算信号ｃ６２を生成する。つまり、出力回路６０３は、表３に示すように、メモリ６０２からの加算信号ｂ６２すなち記憶値に桁上げ信号ｂ６１の値を加算して、加算信号ｃ６２を生成する。出力回路６０３は、生成した加算信号ｃ６２を桁上げ制御回路６３に出力する。
こうして、桁上げ制御回路６２は、桁上げ信号ｂ６１、加算信号ｂ６２および状態信号ｂ６３に基づいて、桁上げ信号ｃ６１、加算信号ｃ６２および状態信号ｃ６３を生成し、これらの信号を桁上げ制御回路６３に出力する。同じようにして、桁上げ制御回路６３は、桁上げ信号ｃ６１、加算信号ｃ６２および状態信号ｃ６３に基づいて、桁上げ信号ｄ６１、加算信号ｄ６２および状態信号ｄ６３を生成して、これらの信号を次段の回路に出力する。
このような実施の形態１４によれば、桁上げ制御回路６２の出力が同じ機能を持つ桁上げ制御回路６３０入力になっている。このように複数段の接続により、たとえば、［９９９＋００１］Ｄというように、桁上げが複数桁にわたって伝搬するとき、桁上げによって発生する変化が吸収される。
このように、実施の形態１４によれば、桁上げ信号を処理するために、計算した値が不確定であり、後で変化する可能性がある場合に、「？」マークにあたるフラグを付ける。これによって、桁上げの影響を除くことができる。また、実施の形態１４によれば、バイナリ出力がされるために、現在の回路との親和性を高めることができる。
なお、実施の形態１４では、演算例として１０進数を用いたが、１０進数に限定されるものではなく、２進数などでも構わない。
［発明の実施の形態１５］
実施の形態１５では、冗長な数系のデータを非冗長な数系のデータに変換する演算処理用半導体回路に対して、この発明が適用されている。この演算処理用半導体回路を図２３に示す。図２３の演算処理用半導体回路は、冗長変換回路６６と桁上げ処理回路６７１〜６７ｎとメモリ６８１〜６８ｎを備えている。図２３の演算処理用半導体回路では、最悪な入力パターンのときには、最下位のビットから最上位のビットまで、桁上げが生じる可能性があるため、冗長変換回路６６と桁上げ処理回路６７１〜６７ｎとを合わせて数桁分の回路が必要である。
冗長変換回路６６には、冗長数系に属する数の１つの桁を表すデータａ６６が入力される。上位桁から演算時間単位毎に順にデータａ６６は入力される。
データａ６６が入力されると、冗長変換回路６６は、データａ６６を非冗長な数系のデータに変換し、データｂ６７を出力する。その結果、冗長変換回路６６は、必要ならば、桁上げ信号ｂ６６を発生させる。このような変換をするために、冗長変換回路６６は、次の表６に示す入力関係を内部に保持している。
0003811354.tif 000008
表６によれば、データａ６６として「１」が入力されると、冗長変換回路６６は、「０」の桁上げ信号（Ｃａｒｒｙ）ｂ６６と、「１」の変換結果（Ｒｅｓｕｌｔ）ｂ６７とを生成する。データａ６６として「−１」が入力されると、冗長変換回路６６は、「−１」の桁上げ信号ｂ６６と、「１」の変換結果ｂ６７とを生成する。つまり、変換結果が必ず非冗長な数系になるようにするため、冗長変換回路６６は、２進ＳＤ数の場合に「−１」という桁上げ信号ｂ６６を生成する。
また、冗長変換回路６６は、下位桁からの桁上げ信号によって、桁上げ信号ｂ６６の値が変化する可能性がある場合、「？」マークにあたる信号を付ける。つまり、データａ６６として「０」が入力されると、冗長変換回路６６は、「０？」の桁上げ信号ｂ６６と、「０」の変換結果ｂ６７とを生成する。
冗長変換回路６６は、生成した桁上げ信号ｂ６６を桁上げ処理回路６７１に出力し、変換結果ｂ６７をメモリ６８１へ出力する。
メモリ６８１は、冗長変換回路６６からの変換結果ｂ６７を、制御クロックｄ６６によって１ステップ（演算時間単位）だけ遅延する。メモリ６８２〜６８ｎは、メモリ６８１と同じで、１演算時間単位だけ入力データを遅延させる機能を持つ。
処理回路６７１は、下位桁から来る桁上げ信号ｂ６６とメモリ６８１が変換結果ｂ６７を遅延して出力した変換結果ｂ６８とを入力し変換する。この変換のために、桁上げ処理回路６７１は、次の表７に示す入出力関係を内部に保持している。
0003811354.tif 000009
表７によれば、桁上げ信号ｂ６６に「？」マークが付いていない場合、桁上げ信号の成分が確定していることになる。この結果、上位桁側の回路では再演算の必要がないため、演算結果を確定することができる。
桁上げ信号ｂ６６に「？」マークが付いている場合、桁上げ信号ｂ６６が「０？」であり、変換結果ｂ６８が「０」であるとき、桁上げ処理回路６７１は、「０？」の桁上げ信号ｃ６６と、「０」の変換結果ｃ６７とを生成する。また、桁上げ信号ｂ６６が「０？」であり、変換結果ｂ６８が「１」であるとき、桁上げ処理回路６７１は、「０」の桁上げ信号ｃ６６と、「１」の変換結果ｃ６７とを生成する。
桁上げ処理回路６７１は、こうして生成した桁上げ信号ｃ６６を次段の桁上げ処理回路６７２に出力し、変換結果ｃ６７を遅延メモリ６８２を介して次段の桁上げ処理回路６７２に出力する。桁上げ処理回路６７２〜６７ｎは、桁上げ処理回路６７１と同じような処理をする。
このような実施の形態１５によれば、冗長な数系のデータを通常の非冗長な数系のデータに変換することができる。
なお、実施の形態１５では、演算の処理例として２進ＳＤ数の冗長数系をバイナリ２進数に変換する場合を例として説明したが、特に、この数系に限定されるものではなく、４進数や８進数といった多値の冗長数系でもよく、拡張する数を正にしてもよい。
以上、実施の形態１〜１５について説明したが、この発明は、これらの実施の形態に限定されることはない。たとえば、「桁」は、１０進数などである必要はなく、２進数の「ビット」という単位でもよく、また、それを複数組み合わせた４進数などでもよい。
また、演算命令として加算命令を取り上げたが、減算命令や比較命令など桁毎に演算できるものなら、どのような演算命令でもよい。
また、「冗長な数系」としては、２進ＳＤ数系と呼ばれる、２進数「０．１」に「−１」を許可したものに限定される必要はなく、１０進数１１値（「０〜９」以外に「Ａ＝１０」を許可したもの）や２進３値（「０．１」に「２」を許可したもの）などでもよい。
さらに、従来のトランジスタで実現される、すべての回路のなかで、このトランジスタをニューロンＭＯＳトランジスタで置き換えることが可能である。
産業上の利用可能性
請求項１に係る発明によれば、より重要な情報を示す上位桁の情報からデータの処理をする回路が実現可能である。
請求項２に係る発明によれば、上位桁から複数の組み合わせ演算処理用半導体回路が実現可能となる。
請求項３に係る発明によれば、冗長な数系を取り扱うことで加算演算などの下位桁からの伝搬信号を吸収でき、上位桁からの数値演算を可能にする演算処理用半導体回路が得られる。
請求項４に係る発明によれば、回路外部から見ると、全く桁上げ信号がない完全な上位桁からの演算処理用半導体回路が実現できる。
請求項５に係る発明によれば、冗長な数系を用いることなく下位桁からの桁上げ信号を処理できる上位桁からの演算処理用半導体回路も可能にする。
請求項６に係る発明によれば、結果判別のついた桁から下位桁側の演算を省略できる演算処理用半導体回路が実現できる。
請求項７に係る発明によれば、最小値、最大値を元に下位桁からの信号に依存しない、上位桁からの演算比較判断が可能な演算処理用半導体回路が得られる。
請求項８に係る発明によれば、汎用プロセッサ向けの上位桁からの演算処理用半導体回路や、単一のハードウェアでありながら、実時間で機能を可変にできる演算処理用半導体回路が実現できる。
請求項９に係る発明によれば、冗長な数系を上位桁からバイナリ変換できる演算処理用半導体回路回路が実現できる。
請求項１０に係る発明によれば、コンパクトなアナログ信号に対して逐次上位桁から処理が行える演算処理用半導体回路が実現できる。
請求項１１に係る発明によれば、上位桁から結果が出力される半導体乗算器が実現可能である。
請求項１２に係る発明によれば、請求項１３とは別の手法により上位桁からの半導体乗算回路が実現できる。
請求項１３に係る発明によれば、ニューロンＭＯＳトランジスタを用いることで、回路を小規模にし、演算機能を増大し、知的演算の概念を導入した上位桁からの演算処理が可能になる。
請求項１４，１５に係る発明によれば、冗長な数系を用いることで上位桁からの数値演算を可能とした方法を用いることが可能になる。
請求項１６に係る発明によれば、上位桁からの演算が確定した時点で残りの演算が省略できる高速な処理手法が可能になる。
【図面の簡単な説明】
図１は、この発明の実施の形態１による演算処理用半導体回路を示すブロック図である。
図２は、実旋の形態１の加算器２に対するデータ入力のタイミングを説明する説明図である。
図３は、実施の形態１による加算の様子を説明する説明図である。
図４は、この発明の実施の形態３に用いられる初段の加算器を示す回路図である。
図５は、実施の形態３に用いられる次段の加算器を示す回路図である。
図６は、この発明の実施の形態４による演算処理用半導体回路を示すブロック図である。
図７は、この発明の実施の形態５による演算処理用半導体回路を示すブロック図である。
図８は、この発明の実施の形態６による演算処理用半導体回路を示すブロック図である。
図９は、この発明の実施の形態７による演算処理用半導体回路を示すブロック図である。
図１０は、実施の形態７によって範囲を検出する様子を説明する説明図である。
図１１は、この発明の実施の形態８による演算処理用半導体回路を示すブロック図である。
図１２は、この発明の実施の形態９による演算処理用半導体回路を示すブロック図である。
図１３は、実施の形態９のＡ／Ｄ変換器の動作を説明する説明図である。
図１４は、この発明の実施の形態１０を説明するための説明図である。
図１５は、この発明の実施の形態１１による演算処理用半導体回路を示すブロック図である。
図１６は、実施の形態１１による乗算を説明するための説明図である。
図１７は、この発明の実施の形態１２による演算処理用半導体回路を示すブロック図である。
図１８は、この発明の実施の形態１３による演算処理用半導体回路を示すブロック図である。
図１９は、実施の形態１３による乗算を説明するための説明図である。
図２０は、この発明の実施の形態１４の原理を説明するための説明図である。
図２１は、実施の形態１４による演算処理用半導体回路を示すブロック図である。
図２２は、実施の形態１４の桁上げ制御回路の一例を示すブロック図である。
図２３は、この発明の実施の形態１５による演算処理用半導体回路を示すブロック図である。
（符号の説明）
１〜３，２１，２６Ａ，２６Ｂ，５６Ａ，５６Ｅ，５６Ｂ〜５６Ｄ，６１  加算器
４．５，８．９，１４，３３，４１Ａ，４１Ｂ，６０２，６８１〜６８ｎメモリ
１０１Ａ〜１０１Ｃ，２０１Ａ，２０１Ｂ  ニューロンＭＯＳトランジスタ
１０１Ｄ〜１０１Ｆ，２０１Ｃ，２０１Ｄ  インバータ
６．７  絶対値回路
１０  最中値回路
１１  差分回路
１２  正反転回路
１３  状態記憶回路
２２  遅延回路
２３，２７，２８  比較器
２４  記憶回路
２９  ＡＮＤゲート
３１，３２  汎用回路
３６  Ａ／Ｄ変換器
３７  演算回路
４２Ａ，４２Ｂ  データバス
４３  演算処理用半導体回路
４５Ａ〜４５Ｈ  シフトレジスタ
４６Ａ〜４６Ｈ，５５Ａ〜５５Ｄ  部分積発生回路
４７Ａ〜４７Ｄ，４８Ａ，４８Ｂ，４９  冗長加算器
５１Ａ〜５１Ｈ，５２Ａ〜５２Ｄ，５３Ａ，５３Ｂ，５４  汎用演算器
６１ｍ〜６３ｍ  遅延素子
５６  加算部
５７  冗長加算器
６２，６３  桁上げ制御回路
６０１  状態制御回路
６０３  出力回路
６６  冗長変換回路
６７１〜６７ｎ  桁上げ処理回路
ａ１〜ａ９，ａ１１，ａ１２，ａ２１，ａ２２，ａ２６，ａ２７，ａ３１〜ａ３３，ｂ３１，ａ５１１〜ａ５１１６’ａ６１，ａ３６  アナログ信号
ａ５５  被乗数
ａ５６  乗数
ａ６２，ａ６６  データ
ｂ６，ｂ７，ｂ１２  差分信号
ｂ２１，ｂ５６，ｃ５６，ｂ６２，ｃ６２，ｄ６２，ｓ１，ｓ２  加算信号
ｂ２６  最大値信号
ｂ２７  最小値信号
ｂ３６  デジタル信号
ｂ５１，ｃ５２，ｄ５３  制御命令
ｂ６３，ｃ６３，ｄ６３  状態信号
ｂ６７，ｂ６８，ｃ６７  変換結果
ｃ１〜ｃ４，ｂ１１，ｃ２６、ｃ２７、ｂ５５，ｃ５５，ｂ６１，ｃ６１，ｄ６１，ｂ６６，
ｃ６，ｃ２１，ｄ１１，ｄ３１，ｅ５５，ｄ６６  制御クロック
ｃ１１  絶対値信号
ｃ６６  桁上げ信号
ｄ１，ｄ２，ｂ３２，ｃ３１，ｃ３２，ｂ３７，ｅ２２，ａ６０１  制御信号  ｄ２１，ｄ２２  平均値信号
ｓ３，ｓ４  中間和成分
Ａ３７  １／２範囲
Ａ３８  １／４範囲
Ａ３９  １／８範囲
Ａ４５  範囲
Ａ５５，Ａ５６  行
Ｂ１，Ａ３６  全範囲
Ｂ２〜Ｂ５  範囲
Ｔ１〜Ｔ５，Ｔ７１〜Ｔ７４  タイミング
【図１】
0003811354.tif 000010
【図２】
0003811354.tif 000011
【図３】
0003811354.tif 000012
【図４】
0003811354.tif 000013
【図５】
0003811354.tif 000014
【図６】
0003811354.tif 000015
【図７】
0003811354.tif 000016
【図８】
0003811354.tif 000017
【図９】
0003811354.tif 000018
【図１０】
0003811354.tif 000019
【図１１】
0003811354.tif 000020
【図１２】
0003811354.tif 000021
【図１３】
0003811354.tif 000022
【図１４】
0003811354.tif 000023
【図１５】
0003811354.tif 000024
【図１６】
0003811354.tif 000025
【図１７】
0003811354.tif 000026
【図１８】
0003811354.tif 000027
【図１９】
0003811354.tif 000028
【図２０】
0003811354.tif 000029
【図２１】
0003811354.tif 000030
【図２２】
0003811354.tif 000031
【図２３】
0003811354.tif 000032