明細書 演算処理用半導体回路および演算処理方法 技 ¾分野
二の発明は、 演算処理用半導体回路および演算処理方法に係り、 特に、 情報処 理ゃ褛器の制御に使用される演算処理用半導体回路および演算処理方法に関す る。 背景技術
ί青報処理などの分野では、 半導体回路が数値演算や論理演算の処理を担う。 し たがって、 半導体回路は、 情報処理などの分野で非常に重要な部分であり、 さま ざまな回路が実際に設計されている。
半導体回路では、 まず、 アナログ情報とデジタル情報に分けられる力 高い信 頼性を持った演算を斤うためには情報をデジタル情報に変換した後に演算処理を ί亍ぅ必要がある。 ½つて、 本発明においては、 アナログ情報は多値情報もしくは デジタル ί言号に変換して演算処理するということを原則とする。
ジタル化された情報は数値化されたことになり、 その数値の取り得る範囲に よって、 8ビッ ト、 1 6ビッ 卜、 3 2ビッ ト、 現在は 6 4ビットゃ 1 2 8ビット といったビッ ト幅のデータが用いられている。 このような多ビット情報を処理す る回 ¾形式を大別すると、 ビットパラレル回路とビットシリアル回路に分けられ ビッ ト ラレル処理は、 全ビッ ト分の演算回路を用意しておき、 全ビッ ト同時 に人力し、 演算処理を行う形式である。 マイクロプロセッサを始め、.現在のプロ セッザのほぼ全数近くがこの形式を採用していると言っても過言ではないだろ ビッ卜シリアル処理は、 演算時間単位 (通常はクロック) 毎に、 下位ビッ 卜か ら頓番にビッ 卜単位でデータを入力し、 演算処理する手法である。 この形式は 1ビ ··,' i、の演算回路を設計すればよく、 面積が小さいという利点を持つ。 しか
し、 この形式は下位桁から処理を行っているために、 最上位桁のデータを取得す るまでに非常に長 t、時間がかかるという欠点を持つ。
下位桁と上位桁でどちらが重要な情報であるかと L、えば、 上位桁であることは 当たり前である。 それゆえ、 最上位桁を英語で Most Significant Digit (最も重 要な桁) と呼ぶ。 しかしながら、 従来のビッ トシリアル処理が下位桁から処理を 行っていたのは、 加算演算等における 「桁上げ信号」 の問題があるからである。 加算演算で発生する、 桁上げ信号と加算結果には、 まず、 そもそもの数字とし ての桁 ( 1 0進数の位) が違い、 同列に取り扱うことができない。
また、 最下位桁から発生する桁上げ信号が最悪の場合最上位桁まで伝播する可 能性を秘めており、 最下位桁から解と桁上げ信号を決定していく必要がある。 こ の桁上げ ί云播の問題を解決しないことには、 本発明にあたる、 上位桁からの演算 処理は不可能である。
当然、 桁上げ信号に相当するものがない演算、 たとえば単なる大小判断回路な どでは上位桁からの比較判断を含む演算処理半導体回路というものが存在してい る: しかしながら、 桁上げ信号を含むような演算処理を含む上位桁からの演算処 理という発明は皆無である。
二の発明は、 より重要な情報を含む上位桁を優先し、 上位桁から順番にビッ ト リアル形式で演算処理が行える演算処理用半導体回路および演算処理方法を提 することを目的とする。
そのため、 加算等演算における桁上げ信号の桁あわせの問題を第 1の課題と し、 桁上げ ί云播の問題を解決することを第 2の課題とし、 ビットシリアル形式の 演算速度の問題を解決することを第 3の課題とし、 乗算を含めその他の複雑な演 算 · ¾理を上位桁から斤えるようにすることを第 4の課題とする。
^明の開示
二の発明が対象にしている演算は、 上位桁から、 時間ステップ (演算時間単 (立 i 毎にビッ トシリアルで入力されたデータに対する演算であり、 発生する桁上 I τ ;1号を様々な手法を用し、て解決し、 結果として様々な用途を実現しょうとする のである。
この発明による演算処理用半導体回路は、 複数の桁で構成される数のデータが 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処理とを含む。
5
図面の簡単な説明
1は、 この発明の実施の形態 1による演算処理用半導体回路を示すプロック
^である。
i¾J は、 実 の形態 1の加算器 2に対するデ一夕入力のタイミングを説明するU 説明図である。
図 3は、 実施の形態 1による加算の様子を説明する説明図である。
図 4は、 この発明の実施の形態 3に用いられる初段の加算器を示す回路図であ
13 5は、 実施の形態 3に用いられる次段の加算器を示す回路図である。
o 図 6は、 この発明の実施の形態 4による演算処理用半導体回路を示すプロック 図である。
図 7は、 この発明の実施の形態 5による演算処理用半導体回路を示すプロック 図である。
S' 8は、 この発明の実施の形態 6による演算処理用半導体回路を示すプロック
δ
図である。
図 9は、 この発明の実施の形態 7による演算処理用半導体回路を示すプロック 図である。
1 0は、 実施の形態 7によって範囲を検出する様子を説明する説明図であ 図 1 1は、 この発明の実施の形態 8による演算処理用半導体回路を示すブロッ ク図である。
図 1 2は、 この発明の実施の形態 9による演算処理用半導体回路を示すブロッ ク図である。
図 I 3は、 実施の形態 9の AZD変換器の動作を説明する説明図である。 図 1 4は、 この発明の実施の形態 1 0を説明するための説明図である。
図 1 5は、 この発明の実施の形態 1 1による演算処理用半導体回路を示すプロ ック図である。
図 1 6は、 実施の形態 1 1による乗算を説明するための説明図である。
図 1 7は、 この発明の実施の形態 12による演算処理用半導体回路を示すプロ ク図である。
1 8は、 この発明の実施の形態 1 3による演算処理用半導体回路を示すプロ
'■/ク図である。
図 1 9は、 実施の形態 1 3による乗算を説明するための説明図である。
図 20は、 この発明の実施の形態 14の原理を説明するための説明図である。 図 2 1は、 実施の形態 1 4による演算処理用半導体回路を示すブロック図であ つつ
図 22は、 実施の形態 1 4の桁上げ制御回路の一例を示すプロック図である。 図 23は、 この発明の実施の形態 15による演算処理用半導体回路を示すプロ ック図である。
号の説明)
ト 3. 2 1. 26 A, 26 B, 56 A, 56 E, 56 B〜56D, 6 1 加
^器
1. 5. 8. 9, 1 4, 33, 4 1 A. 4 1 B, 602, 68 ^68 メ 丄 π
モリ
1 0 に入〜 1 0 1 C, 20 1 A, 20 1 B ニューロン MO S トランジスタ i i) l D〜1 0 1 F. 20 1 C, 20 I D インバータ
6. 7 絶対値回路
1 0 最小値回路
1 1 差分回路
1 2 正反転回路
1 3 状態記憶回路
22 遅延回路
23. 27. 28 比較器
24 記憶回路
29 ANDゲート
3 1. 32 汎用回路
36 AZD変換器
37 演算回路
42 A. 42 B データバス
43 演算処理用半導体回路
45 A〜 45H シフ トレジスタ
46 A〜 46 H, 5 δ Α~δ 5 D 部分積発生回路
47 Α〜 47 D, 48 A, 48 B, 49 冗長加算器
5 1 A〜5 1 H, 52A〜52D, 53 A, 53 B, 54 汎用演算器 6 1 m〜 63 m 遅延素子
56 加算部
57 冗長加算器
62. 63 桁上げ制御回路
H 0 1 状態制御回路
603 出力回路
66 冗長変換回路
67 1〜 67 n 桁上げ処理回路
a 1 ~a 9, a l l , a 1 2, a 2 1 , a 22, a 26, a 2 7, a 3 1 ~ a 33. b 3 1 , a 5 1 1〜a 5 1 1 6. a 6 1 , a 36 アナログ信号 a 5 δ 被乗数
a δ 6 乗数
a 62. a 66 データ
b 6. b 7. b 1 2 差分信号
b 2 1. b 56, c δ 6, b 62, c 62. d 62, s l, s 2 加算信号 b 26 最大値信号
b 27 最小値信号
b 36 デジタル信号
b 1. c δ 2. d δ 3 制御命令
b 63. c 63, d 63 状態信号
b 67. b 68, c 67 変換結果
c 1 ~c 4, b l l, c 26、 c 27、 b 55, c 55, b 6 1 , c 6 1, d 6 1. b 66,
じ 6. c 2 1 , d 1 1 , d 3 1, e 5 δ, d 66 制御クロック
c 1 1 絶対値 ί言号
c 66 桁上げ信号
d 1. d 2, b 32, c 3 1, c 32, b 37, e 22, a 60 1 制御信号 d 2 1. d 22 平均値信号.
s 3. s 4 中間和成分
Λ 3 7 1 /2範囲
Λ 38 1 /4範囲
A 39 1 /8範囲
Λ 45 範囲
A 5 o . A δ D 汀
B 1. A36 全範囲
β 2〜 B 5 範囲
T 1〜T5. Τ 7 1〜Τ 74 タイミ ング
発明を実施するための最良の形態
次に、 この発明の実施の形態について、 図面を参照して説明する。
なお、 以下の説明の中で、 「桁」 が次のことを意味する。 つまり、 データ力数 ί直で表現されているとき、 「桁」 は、 このデータの演算処理をする際の単位とな る概念であり、 1 0進数で言う 「位」 である。 「演算」 は > 数値演算に限らず、 論理演算を含む。 特に、 「上位桁」 が現在処理している桁よりも一桁分大きい桁 を表し、 「下位桁」 カ 桁分小さい桁を表す。 「上位析側」 とは、 処理している 桁から連読した複数桁の上位の桁を表し、 「下位桁側」 とは、 処理している桁よ りも連铳した複数桁の下位の桁を表す。
さらに、 「冗長な数系」 とは、 Ν進数の各桁に、 Ν + 1個以上の数を許す数系 を示す概念である。
[発明の実施の形態 1 ]
実施の形態 1は、 データを加算する演算処理用半導体回路に対して、 この発明 を適用したものである。 実施の形態 1では、 冗長 η進数系として 2進 S D ( Signed Digi t) 数系が用いられている。
2進 S D数系は、 冗長数系の 1つであり、 「0」 と 「1」 との組み合わせで構 成される 2進数に対して、 「― 1」 という本来ない冗長な値の数字を許可する。 二の '2進 S D数系を用 L、た計算規則の例を、 次の表 Iに示す。 以下の説明では、 とえば、 データ 「0 1 0」 が 2進 S D数系で示されているときには、 このデー クを 「0 1 0」 SDで表し、 データ 「0 1 0」 が 2進数系で示されているときに は、 このデータを 「0 1 o」 Bで表す。 また、 1 0進数系で示されているデータ 2」 を 「2」 Dで表す。
(表 1 >
なお、 表 1の中では、 印 「 ·」 の前にある 2文字が「Carry (キャリー) 」 を 表し、 後にある 1文字が「Sum (サム) 」 を表す。 表 1は、 値 Aと値 Bとの加算 を示す計算規則である。 2つの値の加算結果が「Sum」 の値と 「Carry」 の値とで 表される。 このとき、 「Sum」 が値 Aと値 Bの加算値を示し、 「Carry」 が桁上げ データを示す。 以下では、 「Carry」 を桁上げ信号と記し、 「Suni」 を加算信号と 記す〕 「CanT」 として 「1」 〜 「一 1」 まで発生する可能性があり、 また、 複 ¾の表現手法がある組み合わせも存在する。
二の 2 il S D数系によれば、 たとえば、 加算の場合に最下位桁から計算が行わ たとき、 加算で発生する桁上げ信号が上位の 2桁までしか伝えずに加算する手 がある。 つまり、 桁上げ信号は、 この信号が発生した桁から上位の 2桁の加算 詰果までしか影響を与えない。 2進 S D数系には、 このような特徴がある。 二の 2進 S D数系を用いた演算処理用半導体回路を図 1に示す。 図 1の演算処 理¾半導 ί本回路は、 加算器 1〜3とメモリ 4, 5とを備えている。
加算器 1は、 演算処理用半導体回路の中で、 初段つまり入力側の演算回路であ るつ 加算器 1には、 データ a 1とデータ a 2とが入力される。 データ a 1は、 数 の中で 1つの桁を表し、 データ a 2は、 別の数の中で 1つの桁を表す。 数は 2進 S D数系で示されているためデータ a 1 , a 2はともに 「一 1」 , 「0」 , —に の 、ずれかである。 データ a 1 , a 2が示す桁は、 数の中の最上位から順 に Π葛-器 1に入力される。
り Π -器 1は、 制御信号に含まれるパルスの立ち上がりで、 データ a 1, a 2を
読み込み、 次の制御信号の立ち上がりまでの間に、 データ a lとデータ a 2との 加算を斤う。 データ a 1とデータ a 2との加算に際して、 加算器 1は、 次の表 2 に示す加算規則に従う。
(表 2 )
データ a 1 , a 2が示す各桁の値が、 「一 1」〜「 1」 の範囲であるので、 加 算器 1内部での加算結果が「- 2」 〜「2」 の範囲になる。 加算結果が「- 2」 であるとき、 加算器 1は、 2進 S D数系の桁上げ信号 c 1の値を 「一 1」 にし、 加算 ί言号 s 1の値を 「0」 にする。 加算器 1は、 値「一 1」 の桁上げ信号 c 1を 加算器 2に出力し、 値「0」 の加算信号 s 1をメモリ 4に出力する。
加算器 1内部での加算結果が「2」 であるとき、 加算器 1は、 桁上げ信号 c 1
の値を 「1」 にし、 加算信号 s 1の値を 「0」 にする。 加算器 1内部での加算結 果が 「0」 であるとき、 加算器 1は、 桁上げ信号 c 1と加算信号 s 1との値を
0 j に 9 ·る 0
加算器 1内部での加算結果が 「- 1」 であるとき、 加算器 1は、 桁上げ ft号 c 1の値を 「一 1」 にし、 加算信号 s 1の値を 「1」 にする。 加算器 1内部での 加算結果が「1」 であるとき、 加算器 1は、 桁上げ信号 c 1の値を 「0」 にし、 加算信号 s 1の値を 「1」 にする。 つまり、 内部での加算結果が「一 1」 または 「 1」 の値になったときに、 加算器 1は、 加算信号 s 1の値として 「1」 を出力 する。
メモリ 4は、 制御信号 d 1の立ち上がりで、 加算器 1からの加算信号 s 1を記 憶する。 この制御信号 d 1の立ち上がりから次の制御信号 d 1の立ち上がりまで が演算時間単位 (ステップ) になる。 つまり、 メモリ 4は、 制御信号 d 1の 1演 算時間単位分 (制御信号のパルスと次のパルスとの間) だけ、 加算信号 s 1の値 を遅延して、 加算器 2に出力する。 実施の形態 1では、 メモリ 4として、 パルス の立ち上がりでデータを読み込む Dフリップフロップが用いられている。 また、 Dフ リ ップフ口ップの代わりとして、 R Sフリップフロップや J Kフリップフロ ップがある。
加算器 2は、 演算処理用半導体回路の中で、 中段の演算回路である。 加算器 2 には、 桁上げ ί言号 c 1と加算信号 s 1とが入力される。 このとき、 加算信号 s 1 がメモリ 4で遅延されるので、 加算器 2には、 図 2に示すような組み合わせの桁 上げ ί言号 c 1と加算信号 s 1とが入力される。 加算器 2は、 制御信号の立ち上が りのタイミング Τ 1で、 桁上げ信号 c 1 Τ1および加算信号 s 1 Τ 1を出力し、 タイ ミ ング Τ 2で、 桁上げ信号 c 1 Τηおよび加算信号 s 1 τ2を出力する。 また、 タイ ミ ング Τ 3で、 桁上げ信号 c 1 Τοおよび加算信号 s 1 Τ3を出力する。
このような状態のとき、 加算信号 s l T 1〜s 1 T3がメモリ 4によって遅延され るので、 加算器 2には、 桁上げ信号 c 1 Τ2および加算信号 s 1 Τ 1の組み合わせが タイミング Τ 2で入力され、 桁上げ信号 c 1 Τ3および加算信号 s 1 Τοの組み合わ せがタイミング Τ 3で入力される。
加算器 2は、 制御信号のパルスの立ち上がりで、 桁上げ信号 c 1および加算信
号 s 1を読み込み、 次の制御信号の立ち上がりまでの間に、 桁上げ信号 c 1と加 算 ί言号 s 1との加算を行う。 桁上げ信号 c 1と加算信号 s 1との加算に際して、 加算器 2は、 次の表 3に示す加算規則に従う。
(表 3 )
桁上げ ί言号 c 1の各桁が「一 1」 〜「 1」 の範囲の値であり、 加算信号 s 1の
&桁が「0」 . 「1」 の値であるので、 加算器 2内部での加算結果が「― 1」 〜 —2」 の範囲になる。 加算器 2内部での加算結果が「2」 であるとき、 加算器 2 は、 2進 S D数系の桁上げ信号 c 2の値を 「 1」 にし、 加算信号 s 2の値を _ ( )」 にする。 加算器 2は、 値 「1」 桁上げ信号 c 2を加算器 3に出力し、 値 〕」加算 ί言号 s 2をメモリ 5に出力する。 加算器 2内部での加算結果が「0」 であるとき、 加算器 2は、 桁上げ信号 c 2と加算信号 s 2との値を 「0」 にす る:
加算器 2内部での加算結果が 「- 1」 であるとき、 加算器 2は、 桁上げ信号 c 2の値を 「0」 にし、 加算信号 s 2の値を「一 1」 にする。 また、 加算器 2内 部での加算結果が「1」 であるとき、 加算器 2は、 桁上げ信号 c 2の値を 「1」
にし、 加算信号 s 2の値を 「― 1」 にする。 このように、 内部での加算結果が 「― 1」 または 「1」 になったときに、 加算器 1と異なり、 加算器 2は、 加算信 号 s 2の値として 「一 1」 を出力する。 これは、 2進 S D数系が冗長数系である ので、 1つの数を 2通りに示すことができる点が、 加算器 2で利用されている。 メモリ 5は、 メモリ 4と同じである。 つまり、 メモリ 5.は、 制御信号 d 2の立 ち上がりで加算器 2からの加算信号 s 2を読み込む。 これによつて、 メモリ 5 は、 制御信号の 1演算時間単位分だけ、 加算信号 s 2の値を遅延し、 遅延した加 算信号 s 2を加算器 3に出力する。
加算器 3は、 演算処理用半導体回路の中で、 後段つまり出力側の演算回路であ る。 加算器 3には、 桁上げ信号 c 2と加算信号 s 2とカ认力される。 このとき、 加算信号 s 2がメモリ 5で遅延されているので、 加算器 3には、 1つ前の演算時 間単 ί立で加算器 2が出力した加算信号 s 2が入力される。
加算器 3は、 制御信号のパルスの立ち上がりで、 桁上げ信号 c 2および加算信 号 s 2を読み込み、 次のパルスの立ち上がりまでに、 桁上げ信号 c 2と加算信号 s 2 との加算を斤う。 桁上げ信号 c 2と加算信号 s 2との加算に際して、 加算器 :3 、 次の表 4に示す加算規則に従う。
(表 4 )
上げ ί言号 c 2が用いることができる値が、 「0」, 「1」であり、 加算信号
s 2が用いることができる値が、 「― 1」, 「0」 であるので、 加算器 3内部で の加算結果が「- 1」〜「1」 の範囲になる。 加算器 3は、 内部での加算結果を そのままデータ a 3として出力する。 つまり、 加算器 3の加算結果には、 2進 S D数系の桁上げを示す桁上げ信号が含まれていない。
次に、 実施の形態 1の動作について説明する。
ここでは、 冽として、 データ [1 00] cDとデータ [00— 1] SDとの加算、 つまり、
[l o o] SD+ [00- 1] SD
[00- 1] SD= [- 1] D
であるので、 加算結果が 1 0進数系で値 [3 ]Dになる。 この加算の演算が次のよ うにして斤われる。
図 3に示すように、 制御信号のタイミング T 1で、 [100] CDの最上位の桁 を表す「 1」 と、 [00— 1] SDの最上位の桁を表す「0」 と力、 前段の回路か ら加算器 1にデータ a 1, a 2として入力される。 これによつて、 内部での加算 詰果が「1」 になるので、 加算器 1は、 表 2に示される加算規則に従って、 桁上 げ ί言号 c 1の値を 「0」 にし、 加算信号 s 1の値を 「1」 にする。 メモリ 4は、 加算器 1から Γ1」 を受け取ると、 次のタイミング Τ 2でこの値を出力する。 こ の ¾果、 値 「1」 の加算信号 s 1を受け取った時点では、 値 「0」 の加算信号 s 1を出力する。
算器 2は、 加算器 1から受け取った桁上げ信号 c 1の値「0」 と、 メモリ 4 つ、ら受け取った加算信号 s 1の値「0」 とを加算する。 これによつて、 内部での ¾算¾果が「0」 になるので、 加算器 2は、 表 3に示される真理値表に従って、 桁上げ ί言号 c 2と加算信号 s 2との両方の値を 「0」 にする。 メモリ 5は、 前の タイミ ング'のときに受け取った値「0」 を出力する。
加算器 3は、 加算器 2から受け取った桁上げ信号 c 2の値「0」 と、 メモリ 4 力、ら受け取った加算信号 s 2の値「0」 とを加算する。 これによつて、 内部での 加算 ΐ吉果が「 0」 になるので、 加算器 3は、 表 4に示される加算規則に従って、
データ a 3の値を 「0」 にする。
こうして、 制御信号のタイミング T 1では、 最上位の桁の演算結果として、 値 一 0」 のデータ a 3カ^ 後段の回路に出力される。
制御 ί言号のタイミング T 2で、 データ [ 1 0 0 ] CJ)の中の、 最上位の桁から 2 目の Ϊ 「0」 と、 データ [ 0 0 - 1 ] SDの中の、 最上位の桁から 2番目の桁 —0」 とが前段の回路から加算器 1に入力される。 タイミング T 1の場合と同じ ように、 加算器 1〜3が 2〜4の加算規則を用い、 また、 メモリ 4 . 5が値を遅 延して、 2番目の桁が加算される。 この結果、 制御信号のタイミング T 2では、 暄 「1」 のデータ a 3が後段の回路に出力される。
制御信号のタイミング T 3で、 データ [ 1 0 0 ] SDの中の、 3番目の桁「0」 と、 データ [ 0 0— 1 ] SDの中の、 3番目の桁「― 1」 とが前段の回路から加算 器 1に入力される。 タイミング T 1の場合と同じように、 加算器 1 ~ 3とメモリ 4 . 5とが 3番目の桁を加算する。 この結果、 制御信号のタイミング T 3では、 値 「一 1」 のデータ a 3が後段の回路に出力される。
制御 ί言号のタイミング Τ 4では、 演算の終了のために、 前段の回路がデータ a 1 . a 2として、 値 「0」 を加算器 1にそれぞれ入力する。 この結果、 タイミ ング T 4では、 値「0」 のデータ a 3が後段の回路に出力される。 制御信号の夕 ィミング Τ δでは、 同じく演算の終了のために、 前段の回路がデ一夕 a 1 , a 2 として、 値 「0」 を加算器 1にそれぞれ入力する。 この結果、 タイミング T 4で は、 値「― 1」 のデータ a 3が後段の回路に出力される。
タイミング T 1〜T 5によって、 加算器 3が後段の回路に出力するデータの値 力 0 1 - 1 0 - 1 ] SDとなる。 このデータが 1 0進数で (そ になるので、 正し ί、結果が出力されている。
二のように、 実施の形態 1によれば、 2つのデータの加算に際して、 桁上げ信 号が発生しないので、 最上位の桁からの加算が可能になる。 つまり、 遅延手段と してメモリ 4 . δを備え、 かつ、 必要な桁分の演算回路 1〜 3だけの、 非常に簡 な構成によって、 上位桁からの一桁または複数桁単位で、 すべての加算を処理 することができる。 つまり、 小規模な回路で加算を実現できる。
また、 上位桁からの加算に限らず、 減算を含め、 桁上げ信号が必要な演算は全
て実現できることになる。 一般に情報は下位桁よりも上位桁のほうが重要な要素 てあるため、 上位桁から処理することで、 有効な情報をより先に取得することが てきることになる。 また、 回路として 1桁分の演算回路であるため、 小型化でき る持徴も持ち合わせる。
なお、 実施の形態 1では、 データ a 1, a 2の値として 2進 SD数系を用いた 力 \ 通常の 2進バイナリを用いてもよい。 各制御信号としてクロックパルスを用 いてもよい。 このときには、 メモリ 4, 5がクロックのエッジで値を言己憶するよ うにする。
また、 1 0進 1 1値といった冗長数系でも、 実施の形態 1と同様の回路形式で 加算が可能である。 冗長数が負である必要はなく、 正の方向に伸ばしても問題は ない 3 実施の形態 1では、 加算器を 3段で構成しているが、 加算器を 4段以上に すると、 上位桁からの多入力の加算を実現することができる。
さらに、 2進 S D数系で発生する桁上げ信号が上位の 2桁まで伝わるが、 2進 S D数系に比べてさらに、 冗長度の大きな数系によれば、 桁上げ信号の伝搬が上 位のけ で収まる。 このために、 加算器を 2段にすることができる。
[発明の実施の形態 2]
実施の形態 2では、 実施の形態 1の加算器 1 , 2を次のようにして具体化して いるつ つまり、 このために、 「0」 と 「1」 の組み合わせで構成される、 2桁の 2進 ¾を用いる。 2桁の 2進数によれば、 4通りの 「0」 と 「1」 の組み合わせ がある。 実施の形態 2では、 2進 S D数系の 「0」 が 2通りの 2進数で表され る。 したがって、 2進数による 2進 S D数系の 「1」、 「0」 、 「一 1」 は、 次 のように表現される。
. 2進 S D数系の 「一 1」 … [1 1] B
2進 S D数系の 「0」 … [00] B, [ 1 0] B
2進 S D数系の 「1」 … [0 1] B
このように表された 2進 S D数系の 「1」、 「0」 、 「— 1」 によると、 加算 器 1は次のようになる。 たとえば、 データ a 1力 「0」 であり、 データ a 2力く :__ 1」 である場合、 加算器 1には、 値が [00] Bであるデータ a 1が入力さ れ、 値が [ 1 1] Bであるデータ a 2が入力される。
加算器 1内では、 2進 S D数系の表現によると、 加算結果が「― 1」 である。 この場合、 表 2によれば、 桁上げ信号の値が 「― 1」 であり、 加算信号の値が 「 1」 である。 したがって、 加算器 1は、 桁上げ信号として [ 1 1 ] Bを出力 し、 加算 ί言号として [0 1 ] ηを出力する。
このように、 加算器 1の場合、 入力が [00] Βと [1 1] Βとである場合、 出 力が [ 1 1] Βと [0 1 ] Βとである。 さらに、 この他の入力と出力との組み合わ せに基づいて、 ANDゲート、 ORゲートおよび NOTゲートを用いて加算器 1 を構成することができる。
なお、 2進 S D数系を構成する値「一 1」、 「0」 、 「1」 には、 2進数の各 種の対応がある。 そして、 この対応に応じて、 ANDゲート、 〇Rゲートおよび X 0 Tゲートの A N D、 0 R、 NOTに限定されな t、組み合わせが可能である。 また、 AXDゲート、 ORゲートおよび NOTゲートの組み合わせによる回路 構成以外に、 他の論理関数の組み合わせでも設計が可能である。
[発明の実施の形態 3]
実施の形態 3では、 実施の形態 1の加算器 1 , 2が次のような構造である。 つまり、 加算器 1として、 図 4に示す加算器が用いられている。 図 4の加算器 1 0 1は、 ニューロン MO S (Metal Oxide Semiconductor)トランジスタを用 いて作られたニューロン MO Sイ ンバー夕 1 0 1 A〜 1 0 1 Cとインバー夕 1 0 1 D〜 1 0 1 Fとを備えている。
ニューロン MO S トランジスタ 1 0 1 A〜 1 0 1 Cは、 順次に接続されてい るつ
ニューロン MO Sィンバ一夕 1 0 1 Aの出力がニューロン IO Sィンバ一夕 い;) 1 Cとイ ンバ一タ 1 0 1 Fとに接続され、 ニューロン MO Sィンバ一夕 1 0 1 Bの出力がニューロン MO Sィンバータ 1 0 1 Cとィンバータ 1 0 1 Eと に接読されている。 また、 ニューロン MO Sィンバ一夕 1 0 1 Cの出力がィン パータ 1 0 1 Dに接続されている。
2ビッ 卜で構成されるデータ a 4およびデータ a 5は、 図 1のデータ a 1およ びデータ a 2に相当している。 冗長な数系の数の桁が、 データ a 4. a 5で表さ れている。 1本の信号線を伝わる電気信号によって、 データ a 4, a 5を表現す
ることができない。 したがって、 データ a 4, a 5を表現するためには、 2本の ί言号線が必要である。
実施の形態 3では、 「― 1」 SDを 「00」 Βとして表現し、 「0」 S Dを
" 1 ()」 Bまたは 「o 1」 。として表現し、 「 1」 SDを 「 1 1」 Bとして表現す る。 この表現によれば、 ニューロン MOSにとつて、 処理が最も簡単になる。 す なわち、 2本の信号線のうち、 " 1" の数が 0個のときに 「― 1」 SDを示し、
- 1 " の数が 1個のときに 「0」 を示し、 "1" の数が 2個のときに 「+ 1」 SD を示す この "1" の数の情報と元の SD数の関係には線形性があり、 かつ、 " 1 " の数をニューロン M OSでは、 等しい容量の 2つの入力端子にそれぞれの ί言号镍を入力すれば簡単に計算が行えるからである。
ニューロン- VIOSインバー夕 10 1 A, 1 0 1 Bには、 しきい値が設けられて いる。 加算結果が「― 0. 5」 および「1. 5」である場合に、 出力が反転する ように、 しきい値が設定されている。 そして、 それぞれの出力を反転すること で、 桁上げ信号 c 3が出力される。 桁上げ信号 c 3の冗長数と電気信号のコード とは、 データ a 4. a 5と同じである。 同時に、 ニューロン M〇 Sインバータ 1 0 1 Bの出力がニューロン MOSィンバ一夕 10 1 Cに入力される。 さらに、 ィン ー夕 10 1 Dがニューロン MO Sインバータ 10 1 Cの出力を反転するこ とで、 加算信号に相当する s 3が出力される。 s 3は図 1の siに相当している。 図 5は、 実施の形態 1の加算器 2に相当するものである。 図 5の加算器は、 二 二一ロン M〇 Sインバ一タ 201 A, 201 Bを備えている。 ニューロン MO S ィンパータ 20 1 A, 20 1 Bは、 順次に接続されている。 ニューロン M〇Sィ ンバ一タ 20 1 Aの出力がニューロン MOSインバータ 20 1 Bとインバータ 20 1 Cとに接続され、 ニューロン MOSインバー夕 20 1 Bの出力がインバー タ 20 1 Dに接続されている。
前段の加算器からの中間和成分 s 3と桁上げ信号 c 3と力く加算される。 内部の 算結果が「― 0. 5」 のときにニューロン MOSインバー夕 20 1 Aの出力が . ¾し、 その出力をインバー夕 20 1 Cが反転して、 桁上げ信号 c 4が出力され るつ 同時に、 ニューロン MO Sィンバータ 201 Aの出力がニューロン MO Sィ ンバータ 20 1 Bに入力されることで、 加算結果成分 s 4が出力される。 加算結
果戎分 s 4は、 ロウレベルのときに 「一 1」 を、 ハイレベルのときに 「0」 を表 現している。 c 4と s 4はそれぞれ図 1の c 2と s 2に相当している。
実施の形態 1の加算器 3に相当する加算器は、 ニューロン MO S トランジスタ を用〔、た場合には不要になる。 加算器 2 0 1からの中間和成分 s 4を 1演算時間 単 ί立分た'け遅延素子にて遅らせる。 桁上げ信号 c 4と、 遅延した加算結果成分 s 4とをベアにして出力する。 遅延素子は実施の形態 1のメモリ 4である。 この ヘアの出力は、 図 1の a 3に相当し, 冗長数と 2本の信号線の対応は、 a 4 , a 5のものと同じである。
このように、 ニューロン M O Sトランジスタを用いると、 極めて容易に回路を 実現することができる。 また、 2進 S D数に限定されることなく、 基数を増加さ せた冗長加算器や、 4入力といった入力数を増加させた冗長加算器、 基数の増加 と冗長数の増加とにより、 遅延素子が 1つ (上位一桁への桁上げ信号の伝搬) の 冗長加算器が容易な回路で実現することができる。
なお、 実施の形態 3では、 ニューロン M O S トランジスタの演算用の基本ゲー 卜として、 インバータ回路を用いているが、 任意のしきい値の設定が可能であ り、 かつ、 出力がバイナリ 「0」 、 「1」 である形式のものであれば、 インバー ク に限定されることがない。 たとえば、 センスアンプ形式の論理回路を用い
、つ = い 0
二発明の実施の形態 4 ]
実施の形態 4は、 第 1と第 2の数の差、 第 3と第 4の数の差の小さい方を演算し、 出力する演算処理用半導体回路に対して、 この発明を適用したものである。 この 演算半導体回路を図 6に示す。 図 6の演算処理用半導体回路は、 差分絶対値回路 6 . 7、 メモリ 8 , 9および最小値回路 1 0を備えている。
差分回路 6には、 第 1の数の 1つの桁を表すデータ a 6と、 第 2の数の 1つの 桁を表すデータ a 7とが入力される。 データ a 6, a 7は、 最上位の桁から順に 差分回路 6に入力される。 差分回路 6は、 入力されたデータ a 6とデータ a 7と の差分を算出し、 算出した差分を表す差分信号 b 6をメモリ 8に出力する。 同じように、 差分回路 7には、 第 3の数の 1つの桁を表すデータ a 8と、 第 4 ^ ¾の 1つの桁を表すデータ a 9とが入力される。 データ a 8 . a 9は、 最上位
の桁から順に差分回路 7に入力される。 差分回路 7は、 入力されたデータ a 8と データ a 9との差分を算出し、 算出した差分を表す差分信号 b 7をメモリ 9に出
] 9 D
メモリ 8 . 9は、 制御クロック c 6で動作する。 メモリ 8 , 9として、 たとえ 5 ば、 Dフリップフロップを用いれば、 メモリ 8 , 9は、 制御クロック c 6のエツ ジ卜リガによって、 記憶している内容を更新する。 つまり、 メモリ 8 , 9は、 1 演算時間単位前の差分信号 b 6 , b 7を最小値回路 1 0に出力する。
最小値回路 1 0は、 メモリ 8 , 9からの差分信号 b 6 , b 7の大小関係に応じ て、 (言号を出力する。 つまり、 差分信号 b 6が差分信号 b 7に比べて小さい場 10 合、 差分 ί言号 b 6を出力する。 この状態が第 1状態である。 差分信号 b 7が差分 ί言号 b 6に比べて小さい場合、 最小値回路 1 0は、 差分信号 b 7を出力する。 こ の状態が第 2状態である。 また、 差分信号 b 6と差分信号 b 7が等しい場合、 最 小値回路 1 0は、 差分信号 b 6と差分信号 b 7とのどちらの信号を出力してもよ (、3 この状態が第 3状態である。
! 5 そして、 リセット ί言号が最小値回路 1 0に加えられるまで、 最小値回路 1 0力 m 1状態や第 2状態から抜け出ることがな L、。
次に、 実施の形態 4の動作につ t、て説明する。
差分回路 6がデータ a 6とデータ a 7との差分を算出し、 絶対値回路 7がデー タ a 8とデータ a 9との差分を算出する。 算出結果は、 差分信号 b 6 , b 7とし 0 て出力されるつ
差分 ί言号 b 6 . b 7は、 メモリ 8 , 9に入力される。 このとき、 制御クロック c 6により記憶内容が更新される。 メモリ 8 , 9の出力は、 前回の演算結果であ り、 一桁上位の差分結果である。 このように、 メモリ 8, 9は、 演算した結果を 記憶する。 つまり、 メモリ 8 . 9は、 差分信号 b 6 , b 7を遅延して、 桁情報のδ ί-上切りとして動作する。
メモリ 8 . 9は、 記憶している差分信号 b 6 , b 7を最小値回路 1 0に出力す る 展' 1、値回路 1 0は、 差分信号 b 6 , b 7の中の小さい方の値を選択する。 そ して、 最小値回路 1 0は、 選択した差分信号を出力する。
この後、 制御クロック c 6の次のパルスによって、 データ a 6〜a 9の桁が次
に^ると、 演算が一桁下位に移り、 上位桁から下位桁に向かって演算が進んで行 二のように、 実施の形態 4によれば、 差分の小さい方の値を上位桁から順に出 力することができる。 通常、 最小値の判断に際して、 データを構成する桁の中の 上位桁から順に調べる必要がある。 この結果、 実施の形態 4は、 上位桁からの演 算に適して L、る。
また、 異なった演算器を多段に配置することで、 複雑な演算の組み合わせを実 現することができる。
これは、 上 桁からの処理の特徴である。 なお、 実施の形態 4では、 演算が 2 Sになっているが、 2段以上であれば何段でもよい。
また、 桁情報の区切りおよび記憶をするメモリ力必ずしも各段にある必要がな く、 最終 aの出力に設けられていなくてもよい。
二発明の実施の形態 5 ]
実施の形態 5では、 差分の絶対値を算出する演算処理用半導体回路に対して、 この発明が適用されている。 この演算処理用半導体回路を図 7に示す。 図 7の演 算 !β理用半導体回路は、 差分回路 1 1、 正反転回路 1 2、 状態記憶回路 1 3およ メモリ i 4を備えている。
差分回路 1 1には、 第 1の数の 1つの桁を表すデータ a 1 1と、 第 2の数の 1 つの桁を表すデータ a 1 2とが入力される。 データ a 1 1 . a 1 2は、 データを 構成する桁の最上位桁から演算時間単位毎順に差分回路 1 1に入力される。 差分回路 1 1は、 入力されたデータ a 1 1からデータ a 1 2を減算する。 差分 回! ½ 1 1は、 差分の算出で発生した桁上げ信号 b 1 1を出力すると共に、 減算し Γこ iき分を示す差分信号 b 1 2を正反転回路 1 2と状態記憶回路 1 3とに出力す 状態記 I意回路 1 3は、 差分信号 b 1 2の状態を記憶する。 差分演算には 3つの 状態がある。 データ a 1 1とデータ a 1 2とのどちらが大きいか下位桁に判断を だねる伏態、 データ a 1 1が大きいと判断がついた状態、 すなわち差分信号 b 1 2が正のとき、 データ a 1 2が大きいと判断ついた状態、 すなわち差分信号 b 1 2が負のときである。 一度どちらかが大きいと判断がつくと、 処理が終わる
までその状態を抜け出すことはない。 状態記憶回路 1 3は、 これら 3つの状態を 記憶するつ そして、 データ a l 2が大きいと判断ついた状態のとき、 状態記憶回 ¾ 1 3は、 正反転回路 1 2に反転命令を出力する。
正反転回路 1 2は、 差分信号 b 1 2の値の絶対値をとる。 このために、 正反転 回路 1 2は、 状態記憶回路 1 3が記憶している差分信号 b 1 2の状態を用! ^ゝる。 すなわち、 データ a 1 2が大きい状態の場台、 差分信号 b 1 2は負であるため、 正反転回路 1 2は、 差分信号 b 1 2の各桁の正負を示す符号を反転する。 正反転 回路 1 2は、 こうして算出した差分信号 b 1 2の絶対値を示す絶対値信号 c 1 1 を上位桁から順に出力する。
メモリ 1 4は、 制御クロック d 1 1で動作し、 正反転回路 1 2からの絶対値信 号 c 1 1を記憶する。
このような実施の形態 5によって、 メモリ 1 4に記憶されている絶対値信号 c 1 1は、 制御クロック d 1 1の次のクロックで出力される。 すなわち一演算時 間単位分遅延させる。 これによつて、 差分回路 1 1が生成した桁上げ信号 b 1 1 と、 メモリ 1 4が出力する絶対値信号 c 1 1とが同一時間で同じ桁を示すことに なり、 外部回路での取り扱 L、を容易にすることができる。
[発明の実施の形態 6 ]
実施の形態 6では、 上位桁から行われる任意の演算に連続して、 上位桁から比 ·判断をし、 真偽が確定した場合に残りの下位桁の比較 ·判断を含む演算処理 を省略する演算処理用半導体回路に対して、 この発明が適用されている。 この演 ¾理用半導体回路を図 8に示す。 この演算処理用半導体回路は、 2つの 2進数 の平 ¾値について複数組の中から最大なものを探し出す回路であり、 加算器 2 し 運延回路 2 2、 比較器 2 3および記憶回路 2 4を備えている。
加^器 2 1には、 第 1の数の 1つの桁を表すデータ a 2 1と、 第 2の数の 1つ の ίί'ϊを表すデータ a 2 2とが入力される。 データ a 2 1, a 2 2は、 最上位の桁 から順に加算器 2 1に入力される。 加算器 2 1は、 入力されたデータ a 2 1と データ a 2 2とを加算し、 加算結果を示す加算信号 b 2 1を遅延回路 2 2に出力 する。 この加算器は、 実施の形態 1で述べた回路であり、 内部に遅延手段を持 ち、 外部へは桁上げ信号を発生しない。
遅延回路 2 2は、 加算器 2 1から加算信号 b 2 1を受け取ると、 制御クロック c 2 1によって、 加算信号 b 2 1を 1演算時間単位だけ遅らせる。 上位桁からの 処理の場合、 1演算時間単位の遅延は、 桁を 1つずらすこと、 すなわち、 1 2進 数では 2で割ったことに相当する。 第 1のデータおよび第 2のデータは、 2進数 δ であるため、 一桁分の遅れは、 2で割ったことと同じになり、 この結果、 平均値 が計算される。 遅延回路 2 2は、 平均値を示す平均値信号 d 2 1を比較器 2 3に 出力する。
一方、 記憶回路 2 4は、 比較器 2 3が出力する最大の平均値信号 d 2 2を記憶 している。 そして、 比較器 2 3からの制御信号 e 2 2がオフであるとき、 記憶し0 ている現在の平均値信号、 つまり、 過去の平均値の最大値を示す平均値信号を最 上位桁から順に比較器 2 3に出力する。 また、 比較器 2 3からの制御信号 e 2 2 がオンになると、 記憶回路 2 4は、 出力を中止し、 次からは再び最上位桁から順 に最大平均値を出力するように準備をする。
比蛟器 2 3は、 遅延回路 2 2からの平均値信号 d 2 1および記憶回路 2 4から の過去の最大平均値信号を上位桁から順番に受け取る。 比較器 2 3は、 遅延回路 2 2からの平均値信号 d 2 1が示す値と、 記憶回路 2 4からの過去の最大平均値 ί言号が示す値とを比較し、 どちらが大きいかを判断する。 そして、 比較器 2 3 、 大きい方の平均値信号を記憶回路 2 4に上位桁から順番に出力する。
また、 2つの平均値信号の比較の際に、 過去からの平均値の最大値、 つまり、 記 I意回路 2 4からの平均値信号が示す値の方が大きいと、 比較器 2 3カ碎 ij断する 二とができる場台がある。 たとえば、 2進 S D数系であれば、 遅延回路 2 2から の平均値 (言号が [ 0 0— 1 . . . ] SDであるのに対して、 記憶回路 2 4からの平 均暄信号が [ 0 1 0 . . . ] SDである場合が相当する。 この場合、 比較器 2 3 は、 上位から数桁目の時点で、 比較判定を確定することができる。 この場合に は、 比較器 2 3は、 制御信号 e 2 2をオンにする。
制御信号をオンにした時点で、 比較器 2 3がそれ以降の下位桁の比較判断を止 め、 同時に、 記憶回路 2 4が平均値信号の出力を中止するので、 平均値の計算や 比狡演算が中止される。 そして、 すべての演算回路のデータ転送を最上位桁から に戻し、 次の桁のデータ a 2 1 , a 2 2に投入する。
こうして、 データが上位桁から逐次比較され、 比較された結果の中で大きな方 を出力すると共に、 最大値を更新できないと、 比較判断がついた桁以降の比較を きむ演算 ¾理を省略することができる。 この結果、 無駄のな t、演算を実現するこ とができる。
また、 この無駄な演算の抑止によって、 処理を高速化することができるばかり でなく、 ί氐消費電力回路の実現が可能になる。 特に、 大量のデータを処理する際 に有効である。
演算の種類は平均値に限定されるものでもなく、 比較,判断演算の種類も最大 のものに限定されるものでもなく、 何らかの演算した結果に対して比較 ·判断を する回路があればよく、 たとえば、 2つの数の差分値がある値以下のものを出力 する回路などでもよい。
また、 演算の停止命令後、 速やかに次のデータを投入するためには、 データ a 2 1やデータ a 2 2以前に、 データのバッファが必要になることもある。
[発明の実施の形態 7 ]
実施の形態 7では、 データが示す値の範囲を演算し、 演算した結果が所定範囲 に属するかどうかを判断する演算処理用半導体回路に対して、 この発明が適用さ : ている。 この演算処理用半導体回路を図 9に示す。 図 9の演算処理用半導体回 、 大値出力用の加算器 2 6 A、 最小値出力用の加算器 2 6 B、 比較器 2 7 . 2 8および A N Dゲー卜 2 9を備えている。
最大値出用の力加算器 2 6 Aは、 上位桁から順に入力されるデータ a 2 6と ーク a 2 7との加算結果として、 下位桁側によって取り得る値の中の最大値を ^岀する。 そして、 加算器 2 6 Aは、 算出した最大値を示す最大値信号 b 2 6を 出 する。
最小値出力用の加算器 2 6 Bは、 データ a 2 6とデータ a 2 7との加算結果と して、 下位桁则によって取り得る値の中の最小値を算出する。 そして、 加算器 2 6 Bは、 算出した最小値を示す最小値信号 b 2 7を出力する。
比較器' 2 7は、 あらかじめ設定された上限値と加算器 2 6 Aからの最大値信号 b 2 6とを比較する。 比較の結果、 最大値信号 b 2 6が示す値が上限値に比べて :'さ なつたときに、 比較器 2 7は、 真を c 2 6に出力する。 それ以外のときは
c 2 6は (為を出力する。
比較器 2 8は、 あらかじめ設定された下限値と加算器 26 Bからの最小値信号 b 2 7とを比較する。 比較の結果、 最小値信号 b 27が示す値力下限値に比べて 大きくなつたときに、 i 較器 28は、 真を c 27に出力する。 それ以外のときは c 27に偽を出力する。 c 26, c 27のいずれも真のときに 「1」, 偽のとき に 「0」 となるようにする。
AXDゲート 29は、 比較器 2 7からの出力 c 2 6と比較器 28からの出力 c 2 7との論理積の演算をする。 それぞれの比較器 27, 28が真を出力したと き、 AXDゲート 29が真を出力する。 逆に c 26, c 27のどちらかが偽なら ば出力も ί為となる。
この実施の形態 7によれば、 たとえば、 図 1 0に示すように、 加算結果が所定 範囲に入ったどうかの判断を下せる。 図 1 0ではバイナリ 2進数系を仮定してい る。 つまり、 初期状態では、 加算器 26 Αが算出する最大値と、 加算器 26 Bが 算出する最小値との範囲が、 全範囲 B 1になる可能性がある。 最上位桁の演算結 ^が「0」 である場台、 それ以降の桁によって取り得る範囲は、 [0 1 1. . . 1 1 ] から [0000. . . 0] Bまでである。 したがって、 範囲 B 2が加算結 果の中で取り得る部分である。 この場合、 比較器 27, 28のどちらも偽を出力 している。
次の下 ί立のデータ a 26, a 27を用いた演算結果が、 「1」 である場合、 最 'W直が「0 1 0. . . 0」 に変化する。 この場合、 範囲 B 3が加算結果の中で取 り ί尊る部分である。
次の下位のデータ a 2 6, a 2 7を用いた演算結果が、 「0」 である場合、 最 大 (直が「0 1 0 1 1. . . 1」 に減少する。 この場合、 範囲 B 4が加算結果の中 で取り得る部分である。 このとき、 範囲 B 4の最大値が上限値よりも小さくなつ ている。 すなわち比較器 2 7が真を出力するようになる。 し力、し、 比較器 2 8が i, を出力しているので全体の出力は偽のままである。
^の下 ( のデータ a 2 6, a 2 7を用いた演算結果が、 「 1」 になると、 範囲 B 5のように、 とりうる最小値が上限値よりも大きくなる。 これによつて、 次の 下位桁を演算することなく、 上限値と下限値とで決められる所定範囲に、 範囲
B 5が入っていることが分かる。 この場合、 比較器 2 7 . 2 8の両方が真を出力 するため、 A N Dゲート 2 9の出力も真となる。
こうして、 実施の形態 7によって、 データ a 2 6とデータ a 2 7との加算結果 が所定範囲内に入るかどうかを検出することが可能である。
実施の形態 7では、 加算器 2 6 A, 2 6 Bを用いているが、 最大値と最小値が 検出できる回路構成であれば、 どのような演算でもよい。
また、 比較演算としては、 上限値だけとの比較でも良く、 下限値だけとの比較 でもよい。 演算も加算に限定されるものではない。
さらに、 図示を省略しているが、 上限値と最小値との比铰、 あるいは下限値と 最大値との比較を行うことで、 所定範囲外のデータであるかどうかを検出するこ とも可能である。
:発明の実施の形態 8 ]
実施の形態 8では、 演算機能の切り替えが可能な演算処理用半導体回路に対し て、 この発明が適用されている。 この演算処理用半導体回路を図 1 1に示す。 図 1 1の演算処理用半導体回路は、 上位桁から処理することが可能な汎用回路 3 1 . 3 2とメモリ 3 3とを備えている。
;凡用回路 3 1は、 上位桁からの加算機能や上位桁から比較機能等の複数の上位 Ϊから順に処理できる演算機能を持つ回路である。 汎用回路 3 1は、 制御信号 c 3 1が示す命令によって、 複数機能の中の 1つを選択する。 ;凡用回路 3 1は、 人力されたデータ a 3 1 , a 3 2を、 選択した演算機能で処理する。 この後、 汎 ¾回路 3 1は、 演算結果を示すデータ b 3 1をメモリ 3 3に出力する。 また、 汎 回路 3 1は、 必要に応じて、 上位桁の制御 ί言号 b 3 2を出力する。
回路 3 2は、 汎用回路 3 1と同じように、 加算機能や比較機能等の複数の r. .iiiから順に処理される演算機能を持つ回路である。 汎用回路 3 2は、 制御信 号し' 3 2が示す命令によって、 複数機能の中の 1つを選択する。 汎用回路 3 2 は、 入力されたデータ a 3 3やメモリ 3 3からのデータ b 3 2を、 選択した演算 it能で !β理する。
メモリ 3 3は、 汎用回路 3 1からのデータ b 3 1を制御クロック d 3 1によつ て、 し;寅算時間単位だけ遅らせる。 そして、 メモリ 3 3は、 遅延させたデータ
b 3 2を汎用回路 3 2に出力する。
このような実施の形態 8によれば、 制御信号 c 3 1. c 32によつて演算機能 をコントロールすることができ、 制御信号 c 3 1, c 3 2が示す命令に応じた答 えを出力することができる。 つまり、 制御信号 c 3 1, c 32を与えることによ 5 つて、 演算機能の任意の設定を可能にする。
なお、 実施の形態 8が 2つの汎用回路と 1つのメモリから成り立っているが、 汎用回路とメモリの個数および組み合わせについては、 特にこれに限定されるも のではない。
また、 汎用回路としては、 各機能を行う回路を用意することで実現可能であ ;() ,、 ニューロン MO S トランジスタを用いたフレックスウェアでも実現すること 可能あり、 汎用回路が特に限定されるものではな! <、。
さらに、 この制御信号 c 3 1 , c 3 2が同じでもあっても、 異なっていてもよ い。 たとえば、 制御信号 c 3 1が加算命令を示し、 制御 ί言号 c 3 2カ<比較命令を 示すという連铳演算でもよく、 また、 c 3 1と c 32とを共に加算命令にして連 15 読した桁を演算する命令でもよい。
[発明の実施の形態 9]
実施の形態 9では、 アナログ信号を一般に逐次比較形式と呼ばれる上位桁から 順にアナログ-デジタル (AZD) 変換処理後のデータ処理を行う演算処理用半 導 ί本回路に対して、 この発明が適用されている。 この演算処理用半導体回路を図0 1 2に示す。 図 1 2の演算処理用半導体回路は、 AZD変換器 3 6と演算回路 :;丁ご 'ご てい 。
.入, じ变換器3 6は、 アナログ信号をデジタル信号に変換する手段である。 A - D変換器 3 6は、 一般に逐次比較形式と呼ばれる変換方式により、 デジタル信 号に上位桁から順に変換する。 たとえば 2進数の場合、 全体を 2つの領域に分割5 して、 どちらの領域に入力アナログ電圧が属するか判断する。 判断結果が高電圧 側ならば " 、 低電圧側ならば "0" を出力する。 次いでアナログ電圧の属し XI、た片方の領域を更に 2つの領域に分割し、 どちらの領域に属するか判断を下 す: 同じように高電圧側の領域に属していれば " 1 " を、 低電圧側ならば "0"
¾出力させる。 このような分割を判断をくりかえし、 入力するアナログ電圧の属
する領域の範囲を順に狭めていくことで、 上位桁から逐次変換する。 分割と判断 は 1演算時間単位毎に行う。
A/ D変換器 3 6の変換の様子を図 1 3を用いて詳しく説明する。 AZ D変換 器 3 6に入力されたアナログ信号 a 3 6の電圧レベル (以下、 入力電圧と記す) δ が破線で示したレベルであったとする。 最初に、 入力電圧が最大振幅の半分より 大きいか小さいかを、 A Z D変換器 3 6力伴 ij断する。 この場合、 最大振幅の全範 S! A 3 6を 2つの小範囲に分け、 入力電圧が最小側の 1 2範囲に入るか、 最大 则の 1 / 2範囲に入るかを判断する。 この場合、 入力電圧が最大側の 1 Z 2範囲 に入るので、 A / D変換器 3 6は、 第 1 ビッ 卜力 「 1」 であるデジタル信号0 b 3 6を出力する。
次の演算時間単位後に、 最大側の 1 2範囲 A 3 7をさらに 2つの 1 4範囲 に分け、 入力電圧力最小側の 1 Z 4範囲に入るか、 最大側の 1 Z 4範囲に入るか を判断する。 この場合、 入力電圧が最小側の 1ノ 4範囲に入るので、 AZD変換 器 3 6は、 第 2ビッ 卜が「0」 であるデジタル信号 b 3 6を出力する。 以下、 同5 じょうにして、 AZ D変換器 3 6は、 演算時間単位毎に 1 4範囲 A 3 8では第 3ビッ 卜の結果「 1」 を出力し、 1ノ8範囲八3 9では第 4ビッ卜の結果「 1」 を出力する。
二のように、 0変換器3 6は、 電圧の範囲を抉めて、 アナログ信号 a 3 6 'を ジタル (言号 b 3 6に変換する。 このとき、 八/ 0変換器3 6は、 変換結果を(j 上位ビッ 卜から順に出力する。 このような A/ D方式は既知のものである力、 本 持許では上位桁からの演算回路 3 7と組み合わせ. かつ変換をこの演算回路と同 期させることに特徴がある。
また、 AZ D変換器 3 6は、 演算回路 3 7から制御信号 b 3 7を受け取ると、 アナログ (言号 a 3 6の上位桁からの A/ D変換を中止する。
5 演算回路 3 7は、 A/ D変換器 3 6力出力するデジタル信号 b 3 6を受け取る と、 デジタル ί言号 b 3 6に対して、 あらかじめ設定された演算をする。 そして、 ¾算回路3 7は、 演算結果に基づいて、 アナログ信号 a 3 6をデジタル信号 b 3 6に变換する必要がないと判断すると、 変換中止を示す制御 ί言号 b 3 7を A • D变換 -器 3 6に出力する。 必要がないという判断は、 たとえば、 その時に AZ
D変換器に求める変換精度が得られた時や、 何らかの判断手段の真偽が確定した 場台などが考えられる。
二のような実施の形態 9によれば、 制御信号 b 3 7を A/ D変換器 3 6に戻す 二とで、 アナログ 'デジタル変換を途中で中止し、 次のアナログ信号を入力する 二とが可能である。 この結果、 無駄な変換を抑止し、 平均的な変換速度の向上、 消費電力の低減などの利点が生まれる。
なお、 実施の形態 9では、 デジタル信号 b 3 6として 1ビット (2進数) 毎の 出力を得るために、 電圧の範囲を 1 Z 2ずつ抉めていったが、 複数ビット単位な どの場合には、 Xビッ 卜毎の出力を得るためには、 電圧の範囲を 2の N乗分の 1 にし、 どの範囲に入るか判断を下していけばよい。
[発明の実施の形態 1 0 ]
実施の形態 1 0では、 フレキシブルなビッ ト幅のデータを転送できるバスを用 いる演算処理用半導体回路に対して、 この発明が適用されている。 この演算処理 用半導体回路について図 1 4を用いて説明する。 図 1 4では、 メモリ 4 1 A. 4 1 Bがビッ トシーケンシャルメモリである。 つまり、 メモリ 4 1 A, 4 1 B は、 複数のデータを記憶し、 データを演算単位の桁毎にデータバス 4 2 A , 4 2 Bに出力する。 このとき、 メモリ 4 1 A, 4 1 Bは、 上位桁から下位桁に向 つ、い順番に桁毎のデータを出力する。 つまり、 2進数においてはメモリ 4 1 A, 4 1 Bは、 記憶しているデータの上位ビッ 卜から下位ビッ 卜に向かい、 1ビッ ト ずつ順番に出力する仕組みを持.つている。 メモリ 4 1 A, 4 I Bとしては、 たと えは'、 シフ トレジスタで構成されたものがある。
データバス 4 2 A, 4 2 Bを経由してメモリ 4 1 A, 4 1 Bに接続されている 演算処理用半導体回路 4 3は、 データを上位桁から順に処理する演算回路もしく は 具ュニッ 卜でめる。
子一タバス 4 2 Λ. 4 2 Bは、 一つのデータにつき 1ビッ卜幅のデータバスが あればよい。 つまり、 データバス 4 2 A, 4 2 Bのバス幅が、 メモリ 4 1 A , 1 Bから同時に読み出せるデータ数 (=並列度) に相当している。
このように、 従来のバス幅がデータのビッ 卜幅、 または、 その倍数であつたの に対し、 実施の形態 1 0によれば、 全バス幅をメモリ 4 1 A. 4 1 Bから同時に
読み出せるデータ数にすればよい。
なお、 実施の形態 1 0では、 演算単位として 1ビッ ト単位を採用して説明をし たが、 2ビッ ト以上でもよく、 本発明はそれに限定されないことは言うまでもな また、 演算処理用半導体回路 4 3として単一の回路を用いているが、 特に一つ の回路である必要はなく、 上位桁から順に処理する演算処理用半導体回路であれ ばよい。
[発明の実施の形態 1 1 ]
実施の形態 1 1では、 上位桁からの加算により上位桁から乗算を行う演算処理 用半導体回路に対して、 この発明が適用されている。 この演算処理用半導体回路 を図 1 5に示す。 図 1 5の演算処理用半導体回路は、 シフ トレジスタ 4 5 A〜 4 5 H、 部分積発生回路 4 6 A〜4 6 Hおよび冗長加算器 4 7 A〜4 7 D , 4 8 A. 4 8 B , 4 9を備えている。
シフトレジスタ 4 5 A〜4 5 Hは、 全部で 8ビットの乗算を想定し、 8個のシ フトレジスタであり、 上位桁から入力されたデータをクロックのエッジにより順 に 4 5 Hには 4 5 Gの内容がシフトされ、 4 5 Gには 4 5 Fの内容が、 4 5 Fに !5 4 5 Eの内容がシフ卜され、 以下同様に内容がシフ卜され、 4 5 Aには新しい 桁の乗数情報が入る。 このデータは、 乗数を示すデータの最上位桁から順に、 シ フ 卜レジスタの 4 5 Aに入力される。 シフ卜レジスタ 4 5 A〜4 5 Hは、 記憶さ れた乗数データを部分積発生回路 4 6 A〜4 6 Hに出力する。 たとえば、 最初の ステップでは、 シフ トレジスタ 4 5 Aに乗数データの最上位桁が入り、 部分積発 生回路 4 6 Aにデータを出力する。 残りの 4 δ Β〜4 6 Ηには 0が記憶されてい る: 次のステツブでは、 4 5 Βに最上位桁が記憶され、 4 5 Αには最上位から 2 t行目のデータが記憶され、 部分積発生回路 4 6 A〜4 6 Bにそれぞれ出力され る。
部分積発生回路 4 6 A〜 4 6 Hは、 8ビッ トの乗算のため、 8回の部分積発生 回路であり、 シフ卜レジスタ 4 5 A〜4 5 Hから出力される乗数と、 全ビッ 卜が 同時に人力されている被乗数との部分積を算出する。 被乗数は、 4 6 Aに最上位 i行、 4 6 Hに最下位桁が入るようになつている。 そして、 部分積発生回路 4 6 A
〜4 6 Hは、 最上位桁から順番に、 乗算における同一桁の部分積を加算回路へ出 力する。
冗長加算器 4 7 A〜4 7 D , 4 8 A, 4 8 B , 4 9は、 ツリー状の接続をして いる。 このツリー型接続によって、 冗長加算器 4 7 A〜4 7 D , 4 8 A , δ 4 8 Β . 4 9は、 部分積発生回路 4 6 Α〜 4 6 Ηで発生した部分積を加算し、 最 終段の冗長加算器 4 9で 1つの乗算結果を上位桁から順に出力する。
このような構成によって、 図 1 6に示すように、 乗算が筆算の形式に展開さ れ、 加算する部分積を縦割りした状態の、 部分積列が生成,加算されることで乗 算が実現される。 図 1 6では、 縦割りにされた部分積の範囲が範囲 A 4 5で示さ0 れている。 そして、 部分積発生回路 4 6 A〜 4 6 Hからは、 範囲 A 4 5の内部の
8つの枠に入る数字が同一クロックで出力されることになる。 1ステップ (演算 時間単位) 毎に範囲 A 4 5が下位桁 (図 1 6上では、 右側) に移動し、 一つ下位 桁の部分積が範囲 A 4 5に現れることになる。 こうして範囲を下位桁に移動する 二とで部分積力 <上位桁から下位桁に向かい順に生成されることになる。 冗長加算5 器 4 7 A〜4 7 D . 4 8 A, 4 8 B, 4 9によって、 部分積発生回路 4 6 A〜 4 6 H力性成して上位桁からの部分積を加算し、 こうして上位桁からの乗算結果 を得ることができる。
このように、 実施の形態 1 1によれば、 上位桁からの加算によって、 上位桁か らの乗算を斤うことが可能になる。
d なお、 実施の形態 1 1では、 単純化のため、 8ビット単位の乗算に対して、 8 つの部分積を発生しているが、 一般に用いられているブースデコーダを用いて、 同一時間に生成する部分積の数を減らしてもよい。
また、 冗長加算器 4 7 A〜4 7 D , 4 8 A, 4 8 B, 4 9として、 2入力 1出 力タイブのものを用いているが、 上位桁からの加算が行える加算器なら何でもよ5 く、 たとえば、 4入力 1出力の冗長加算器等でもよい。
さらに、 実施の形態 1 1では、 8ビッ 卜の乗算器を例にしているが、 8ビッ ト に限定されるものではなく、 1 6ビットなど何でもよい。 1 6ビッ トの場合に は、 生成される部分積が原則として 1 6個になる。
[発明の実施の形態 1 2 ]
実施の形態 1 2は、 実施の形態 1 1の変形例である。 つまり、 実施の形態 12 では、 乗算以外にも検索などを含む情報集約型の処理をする演算処理用半導体回 路に対して、 この発明が適用されている。 この演算処理用半導体回路を図 17に 示す。 図 17の演算処理用半導体回路は、 汎用演算器 5 1 A〜5 1 H. 52 A〜 δ 2 D. 53 A, 53B, 54を備えている。
実施の形態 1 2では、 汎用演算器 5 1 A〜5 1 H, 52 A~52D, 53 A, 53 B. 54がツリー状に接続されている。 汎用演算器 5 1 A~5 1 Hが制御命 令 b 5 1によって制御され、 汎用演算器 52 A〜52D力制御命令 c 52によつ て制御される。 そして、 汎用演算器 53 A, 53 Bが制御命令 d 53によって制 御される。
たとえば、 汎用演算器 5 1 A~5 1 Hは、 制御命令 b δ 1によって指定される 演算 理を、 データ a 5 l i a S 116に対して行う。 つまり、 汎用演算器 5 に 〜 5 1 H, 52A〜52D, 53 A. 53 B, 54力上位桁からの加算を 斤う機能を持てば、 実施の形態 1 1と同等の機能を果たす。 また、 汎用演算器 5 し 〜 5 1 H, 52A〜52D, 53 A. 53 B, 54が上位桁からの最大値 を出力する回路であれば、 汎用演算器 54から最大値が出力されることになる。 二のように、 この実施の形態 1 2によれば、 情報の絞り込み、 または、 情報の ¾を斤ぃ、 これによつて、 情報を一つにするという処理をすること力 <可能にな る: つまり、 乗算以外にも検索を含む他の情報集約型の処理が可能になる。 ま た、 上位桁からの演算原理により汎用演算器 5 1 A~5 1 H. 52 A〜52 D. 53 Α. δ 3 B, 54が一桁の処理だけを行えばよいため、 回路の小型化が可能 になり、 さらに、 回路全体として並列度を向上することができる。
なお、 実施の形態 1 2では、 1 6入力の回路について記述しているが、 16入 力にこだわる'必要はなく、 たとえば、 8入力や 32入力などでもよい。
[発明の実施の形態 1 3〕
実施の形態 1 3では、 加算を繰り返すことで上位桁からの乗算を実現する演算 処理用半導体回路に対して、 この発明が適用されている。 この演算処理用半導体 回路を図 1 8に示す。 図 18の演算処理用半導体回路は、 部分積発生回路 5 δ A 〜 55 D、 単体の遅延メモリ 56 A, δ 6 Ε遅延メモリ内蔵加算プロック 56 Β
〜5 6 Dおよび冗長加算器 5 7を備えている。 ここでは、 4ビット乗算器として ί、る。
部分嬉発生回路 5 5 Α〜 5 5 Dには、 被乗数 a 5 5が入力される。 このとき、 ¾乗数 a 5 5の最上位桁データが部分積発生回路 5 5 Dに入力され、 最上位桁の 一桁下位桁のデータが部分積発成回路 5 5 Cに入力され、 最下位から 2番目の桁 のデータを部分積生成回路 5 5 Bに、 最下位桁のデータを部分積発成回路 5 5 A に入力している。 また、 部分積発生回路 5 5 A〜5 5 Dには、 乗数 a 5 6が入力 される。 乗数 a 5 6は、 上位桁から演算時間単位に一桁ずつ順番に部分積発生回 ί½ 5 5 A〜5 5 Dに同時に入力される。 部分積発生回路 5 5 A〜5 5 Dは、 被乗 ¾ a 5 5と乗数 a 5 6とから部分積を生成する。
部分積発生回路 5 5 A〜5 5 Dからの部分積をメモリ 5 6 A、 メモリを内蔵し た加算器 5 6 B〜 5 6 Dで加算処理する。 このために、 加算器 5 6 Bは、 メモリ δ 6 Αによって遅延された部分積発生回路 5 5 Αからの部分積と、 部分積発生回 路 5 5 Bからの部分積とを加算し、 制御信号 5 5 eの次の立ち上がりで、 桁上げ (言号 b δ 5と加算 ί言号 b 5 6とを出力する。 すなわち、 内部に演算結果を記憶 し、 1 ステップ (演算単位時間) だけ遅らせる機能を持つ。 メモリ内蔵型加算器 5 6 Cは、 値 「0」 と、 部分積発生回路 5 5 Cからの部分積とメモリ内蔵型加算 器 5 6 Bの加算信号 b δ 6とを加算し、 制御信号 5 5 eの次の立ち上がりで、 桁 上げ信号に 5 5と加算信号 c 5 6とを出力する。
加算器 5 6 Dは、 2つ下位の桁の加算をする加算器 5 6 Bからの桁上げ信号 b 5 5と、 部分積発生回路 5 5 Dからの部分積とメモリ内蔵型加算器 5 6 Cから の加算 (言号 c δ 6とを加算し、 制御信号 5 δ eの次の立ち上がりで、 桁上げ信号 d δ 5と加算 ί言号 d 5 6とを出力する。 メモリ 5 6 Eは、 2つ下位の桁の加算を する加算器 5 6 Cからの桁上げ信号 c 5 5とメモリ内蔵型加算器 5 6 Dの加算信 号 d 5 6とを遅延して冗長加算器 5 7に出力する。
メモリ , 5 6 A. 5 6 Eとメモリ内蔵型加算器 5 6 B〜5 6 Dとは、 制御クロッ ク e 5 5によって、 冗長加算器 5 7側に向けてデータを 1桁ずつ左シフ卜するこ とになる。 また、 メモリ内蔵型加算器 5 6 Dが発生した桁上げ信号 d 5 5と、 そ の他の結果を同じ桁に変換するために、 メモリ 5 6 Eが必要である。
冗長加算器 5 7は、 メモリ 5 6 Eが遅延した加算器 5 6 Dからの加算信号 cl .5 6と、 メモリ内蔵型加算器 5 6 Cからの桁上げ信号 c 5 5と、 加算器 5 6 D からの桁上げ信号 d 5 5とを用いて、 上位桁からの加算を行う。 この加算器は 2 進 S D数系の場合実施の形態 1に記載の上位桁先行加算器の設計とほぼ同一であ る。 ただ、 加算器 1に S D数系の 2つの入力以外にバイナリ数系の入力が一つ増 加しただけである。 表 2の内部加算値が + 3のときに Carry+ 1、 Sum 1を出力す る条件を加えればよい。 こうして上位桁から順に乗算結果を出力する。
実施の形態 1 3によれば、 図 1 9に示すように、 4ビット X 4ビッ 卜の乗算を する場合、 筆算形式で部分積を発生させ、 それを加算する。
斤加算部 5 6は、 この乗算方式における加算の仕組みを簡略化して示したもの である。 ί亍加算部 5 6では、 円で囲まれた記号「十」記号が、 上位桁からの加算 が斤える加算器を表し、 四角で囲まれた記号 「D」 、 メモリを表す。 メモリ は、 1演算時間単位毎に入力データを記憶していく。 「十」記号と 「D」記号を ベアにしたものカ^ 図 1 8の 5 6 B〜5 6 Dに相当する。 この部分積を加算する ために、 予めメモリ Dを 0にリセッ卜しておく。 始めのステップで、 筆算の一番 下の行 A 5 5を示すデータを加算部 5 6に入力し、 このデータを記憶する。
2番目のタイミングでは、 メモリ 「D」 により入力データを左シフト (X 2 ί咅) する。 同時に、 下から 2番目の行 A 5 6を示すデータを行加算部 5 6に入力 し、 入力データと、 斤加算部 5 6に蓄えられているデータとを加算する。 加算部 5 6に蓄えられているデータは、 前回の行 A 5 5をシフトして得たものである。
3番目のタイミングでは、 2番目のタイミングで得た加算結果を左シフトし記 憶する。 この後、 上の行をさらに加算していくことを繰り返すことで、 最終的な ¾果を出力する。
このように、 実施の形態 1 3によれば、 加算を繰り返すことで乗算を実現する 場台、 乗算结果を最終段から、 力、つ、 上位桁から出力することができる。
なお、 実施の形態 1 3では、 4ビット X 4ビッ 卜の乗算器を仮定しているが特 に- 1 ビッ 卜に限定されるものではない。 4ビット以上の場合は、 メモリ付き加算 -器 5 6 Dのように、 部分積発成回路からの部分積データと、 2桁下の加算器から の桁上げデータと、 1桁下の加算器からの加算和データの 3つを入力するメモリ
付き加算器を増加させればよ t、。
また、 ブースデコ一ダなどの既知のデコ一ド手法を組み合わせてもよい。
図 1 8では加算器 56 Β~δ 6 Dの桁上げ信号を遅延させたため 2桁上位の加 算器に桁上げデータを入力する形式としたが、 この遅延メモリを取り除き、 一桁 上位の加算器に直に桁上げデータを入力してもよい。
また、 上位桁からの乗算で取り扱う数系がノ <ィナリ数系や 2進 S D数系に特に 限定されるものではない。
[発明の実施の形態 1 4]
実施の形態 1 4では、 冗長数系を用いない一般的な数系を用いて、 上位桁から 加算演算をする。 このために、 実施の形態 1 4では、 演算対象の数字に確定 '不 確定を表すフラグを付ける。 この様子を図 20に示す。 図 20では、
[2999]D+[902] D=[390 1 ] Β
の 1 0進数加算を例としている。 この加算例では、 一の位から百の位まで、 下位 の桁で発生した桁上げが伝搬する。
タイミング Τ 7 1では、 千の位の数字力加算され、 値 [2] Dが得られる。 こ の値 [2] ま、 下位の桁からの桁上げ信号によって変化する可能性がある。 こ のときには、 値 [2] Dに対してフラグが付けられる。 実施の形態 1 4では、 フ ラグとして 「?」 マークが用いられている。
タイ ミング Τ 72では、 百の位の数字が加算され、 値 [1 8] Dが得られる。 この値 [18] Dでは、 桁上げ信号として値 [1] Dが発生し、 また、 加算信号が !l [8] Dである。 桁上げ信号 [1] ま、 千の位の数字で値 [2] Dを値 [3] D に变更する。
ここで、 加算 ί言号値 [8] Dは、 下位の十の位以下の信号に係わらず、 千の位 への桁上げ ί言号にならない。 このために、 千の位の数字に付けられていた 「?」 マークが外れて、 値 [3] Dが確定する。
タイミング Τ 73では、 十の位の数字が加算され、 値 [09] Dが得られる。 二の値 [09] Dでは、 桁上げ信号は値 [0] Dである。 加算信号である値 [9] ま、 一の位の計算結果によって、 桁上げ信号の値 [0] Dや加算信号の値 [9] Dが変更される可能性ある。 このために、 加算結果である桁上げ信号の値 [0] D
と、 加算信号の値 [9] Dとの両方に 「?」 マークが付けられる。
したがって、 十の位からの桁上げ信号が確定されていないので、 百の位の加算 ί言号である値 [8] Dに付けられた 「?」 マークは、 外れないで伝播していく。 タイミング T74では、 一の位の数字が加算され、 値 [1 1] Dが得られる。 この値 [1 1] Dでは、 桁上げ信号として値 [1] Dが発生し、 また、 加算信号が 値 [ 1 ] Dである。
一の位の桁上げ信号である値 [1] ま、 十の位の加算信号である値 [9] Dに 加算される。 この結果、 十の位では、 値 [1 0] Dが得られ、 桁上げ信号である 値 [1] Dが発生する。 この桁上げ信号は、 百の位の加算信号である値 [8] Dに 加算される。
こうして、 百の位と十の位とに桁上げ信号が伝搬する。 一の位から桁上げ信号 が「1」 Dで確定したため、 十の位の加算信号の値、 十の位からの桁上げ信号と 百の位の加算信号の全ての値が確定される。 この操作を繰り返して、 確定された 値が順に出力され、 正しい加算結果である値 [390 1 ] Dが得られる。 なお、 図 20では、 出力される桁に下線が描かれている。
二のような加算をする演算処理用半導体回路を図 2 1に示す。 この演算処理用 半導体回路では、 桁上げ信号にのみフラグ (図 20の?マーク) に相当する信号 カ 犬態信号として付加されている。 図 2 1の演算処理用半導体回路は、 加算器 6 1と桁上げ制御回路 62, 63とそれぞれに遅延素子 6 1 m、 62 m、 63m とを備えている。
加算器 6 1は、 第 1の数の上位桁から入力される 1つの桁データ a 61と、 第 2の数の上位桁から入力される 1つの桁データ a 62との加算をする。 加算器 6 1は、 結果として、 桁上げ信号 b 61と加算信号 b 62とを出力する。 また、 加算器 6 1は、 状態信号 b 63を出力する。 状態信号 b 63は、 桁上げ信号 b 6 1が発生する可能性があるかないかを示す。 この状態信号 b 63力真であれ ば、 桁上げ (言号 b 6 1が発生する可能性があることを示す。 加算 ί言号 b 62は、 遅延素子 6 1 mで 1ステップ (演算時間単位) 分、 すなわち 1桁分の遅延をし記 憶 9る。
ΗΪ上げ制御回路 62は、 図 22に示すように、 状態制御回路 60 1、 出力回路
6 0 3を備えている。 桁上げ制御回路は、 桁上げ信号 b 6 1および状態信号 b 6 3、 遅延された加算結果 b 6 2に従って、 桁上げの必要があるかないかを判 断し、 必要に応じて結果を変えていく。 判断のために、 桁上げ制御回路 6 2は、 次の表 5に示すような入出力関係を内部に記憶している。
(表 5 )
表 5によれば、 入力加算結果 b 1 2により処理が異なる。
入力加算結果 b 1 2力、 値 「0」 〜「8」 である時は、 上位桁への桁上げ信号 伝播の可能性がないため、 状態制御回路 6 0 1は、 値「0」 を示す桁上げ信号 c 6 1と、 「固定」状態を示す状態信号 c 6 3を出力する。 出力回路 6 0 3は、 入力桁上げ信号 b 6 1が値 「0」 の時には、 入力加算結果信号 b 6 2と同一の値 を示す結果成分 c 6 2を出力し、 入力桁上げ信号 b 6 1が値「 1」 の時には、 入 力加算結果信号 b 6 2に 1を足した値を示す結果成分 c 6 2を出力する。
入力加算結果 b 1 2力 値「9」 である時は、 状態制御回路 6 0 1は、 入力さ れた桁上げデータ b 6 1と同一の値を示す桁上げデータ c 6 1と、 入力された状 態信号 b 6 3と同一の値を示す状態信号 c 6 3を出力する。 入力桁上げ信号 b 6 1が値 「1」 の時には、 値「0」を示す結果成分 c 6 2を出力し、 値「0」
の時には、 値「9」 を示す結果成分 c 6 2を出力する。
二のようにして生成した状態信号 c 6 3を、 桁上げ制御回路 6 2は桁上げ制御 回路 6 3に出力する。 また、 桁上げ制御回路 6 2は、 桁上げ信号 b 6 1と加算信 号 b 6 2との加算結果から、 桁上げ信号 c 6 1を生成する。 そして、 桁上げ制御 回路 6 2は、 生成した桁上げ信号 c 6 1を桁上げ制御回路 6 3に出力する。 出力回路 6 0 3は、 メモリ 6 1 mからの加算信号 b 6 2と、 桁上げ信号 b 6 1 とに基づいて、 加算信号 c 6 2を生成する。 つまり、 出力回路 6 0 3は、 表 3に 示すように、 メモリ 6 0 2からの加算信号 b 6 2すなち記憶値に桁上げ信号 b 6 1の値を加算して、 加算信号 c 6 2を生成する。 出力回路 6 0 3は、 生成し た加算信号 c 6 2を桁上げ制御回路 6 3に出力する。
こうして、 桁上げ制御回路 6 2は、 桁上げ信号 b 6 1、 加算信号 b 6 2および 伏態 ί言号 b 6 3に基づいて、 桁上げ信号 c 6 1、 加算信号 c 6 2および状態信号 じ 6 3を生成し、 これらの信号を桁上げ制御回路 6 3に出力する。 同じようにし て、 桁上げ制御回路 6 3は、 桁上げ信号 c 6 1、 加算信号 c 6 2および状態信号 c 6 3に基づいて、 桁上げ信号 d 6 1、 加算信号 d 6 2および状態信号 d 6 3を 生成して、 これらの信号を次段の回路に出力する。
このような実施の形態 1 4によれば、 桁上げ制御回路 6 2の出力が同じ機能を 待つ桁上げ制御回路 6 3の入力になっている。 このように複数段の接続により、 たとえば、 [ 9 9 9 + 0 0 1 ] Dというように、 桁上げが複数桁にわたって伝搬 するとき、 桁上げによって発生する変化が吸収される。
このように、 実施の形態 1 4によれば、 桁上げ信号を処理するために、 計算し た値が不確定であり、 後で変化する可能性がある場合に、 「?」 マークにあたる フラク」'を (寸ける。 これによつて、 桁上げの影響を除くことができる。 また、 実施 I -1によれば、 バイナリ出力がされるために、 現在の回路との親和性を高 めることができる。
なお、 実施の形態 1 4では、 演算例として 1 0進数を用いたが、 1 0進数に限 定されるものではなく、 2進数などでも構わない。
[発明の実施の形態 1 5 ]
実施の形態 1 5では、 冗長な数系のデータを非冗長な数系のデータに変換する
演算処理用半導体回路に対して、 この発明が適用されている。 この演算処理用半 導体回路を図 2 3に示す。 図 2 3の演算処理用半導体回路は、 冗長変換回路 6 6 と桁上げ処理回路 6 7 i〜6 7 11とメモリ 6 S i S 8 nを備えている。 図 2 3の演 算 ¾理用半導体回路では、 最悪な入力パターンのときには、 最下位のビッ卜から 最上位のビッ 卜まで、 桁上げが生じる可能性があるため、 冗長変換回路 6 6と桁 上げ処理回路 6 T i S 7 nとを合わせて数桁分の回路が必要である。
冗長変換回路 6 6には、 冗長数系に属する数の 1つの桁を表すデータ a 6 6力 入力される。 上位桁から演算時間単位毎に順にデータ a 6 6は入力される。 データ a 6 6が入力されると、 冗長変換回路 6 6は、 データ a 6 6を非冗長な ΐϋ のデータに変換し、 データ b 6 7を出力する。 その結果、 冗長変換回路 6 6 は、 必要ならば、 桁上げ信号 b 6 6を発生させる。 このような変換をするため に、 冗長変換回路 6 6は、 次の表 6に示す入力関係を内部に保持している。
(表 6 ) 5
表 ΰによれば、 データ a 6 6として 「1」 が入力されると、 冗長変換回路 6 6 、 —リ」 の桁上げ信号 (Carry) b 6 6と、 「1」 の変換結果 (Resul t) b 6 7とを生成する。 データ a 6 6として 「一 1」 が入力されると、 冗長変換回 路 6 6は、 「― 1」 の桁上げ信号 b 6 6と、 「1」 の変換結果 b 6 7とを生成す るつ つまり、 変換結果が必ず非冗長な数系になるようにするため、 冗長変換回路 6 6は、 2進 S D数の場合に 「ー 1」 という桁上げ信号 b 6 6を生成する。
また、 冗長変換回路 6 6は、 下位桁からの桁上げ信号によって、 桁上げ信号 b 6 6の値が変化する可能性がある場合、 「?」 マークにあたる信号を付ける。 つまり、 データ a 6 6として 「0」 が入力されると、 冗長変換回路 6 6は、
" 0 '?」 の桁上げ信号 b 6 6と、 「0」 の変換結果 b 6 7とを生成する。
冗長変換回路 6 6は、 生成した桁上げ信号 b 6 6を桁上げ処理回路 6 7,に出 力し、 変換結果 b 6 7をメモリ 6 8ェへ出力する。
メモリ 6 8 ま、 冗長変換回路 6 6からの変換結果 b 6 7を、 制御クロック d 6 6によって 1ステップ (演算時間単位) だけ遅延する。 メモリ 6 8。〜 6 8— は、 メモリ 6 8 1と同じで、 1演算時間単位だけ入力データを遅延させる機能を 持つ。
¾理回路 6 7 iは、 下位桁から来る桁上げ信号 b 6 6とメモリ 6 変換結果 b 6 7を遅延して出力した変換結果 b 6 8とを入力し変換する。 この変換のため に、 桁上げ処理回路 6 7ェは、 次の表 7に示す入出力関係を内部に保持してい る:
(表 7 )
表 7によれば、 桁上げ信号 b 6 6に 「?」 マークが付いていない場合、 桁上げ ί言号の成分が確定していることになる。 この結果、上位桁側の回路では再演算の 必要がな L、ため、 演算結果を確定することができる。
桁上げ ί言号 b 6 6に 「?」 マークが付いている場合、 桁上げ信号 b 6 6が 「0 」 であり、 変換結果 b 6 8力 「0」 であるとき、 桁上げ処理回路 6 7 ^ 、 「0?」 の桁上げ信号 c 6 6と、 「0」 の変換結果 c 6 7とを生成す るつ また、 桁上げ信号 b 6 6力 「0?」 であり、 変換結果 b 6 8力 「 1」 である とき、 桁上げ処理回路 6 7 1は、 「 0」 の桁上げ信号 c 6 6と、 「 1」 の変換結
果 c 6 7とを生成する。
桁上げ処理回路 6 7 { こうして生成した桁上げ信号 c 6 6を次段の桁上げ 理回路 6 7 9に出力し、 変換結果 c 6 7を遅延メモリ 6 8 2を介して次段の桁上 げ ½理回路 6 7 2に出力する。 桁上げ処理回路 6 7 2〜 6 7 nは、 桁上げ処理回路 6 7 ^と同じような処理をする。
二のような実施の形態 1 5によれば、 冗長な数系のデータを通常の非冗長な数 系のデータに変換することができる。
なお、 実施の形態 1 5では、 演算の処理例として 2進 S D数の冗長数系をバイ ナリ 2進数に変換する場合を例として説明したが、 特に、 この数系に限定される ものではなく、 4進数や 8進数といった多値の冗長数系でもよく、 拡張する数を 正にして よい。
以上、 実施の形態 1〜1 5について説明したが、 この発明は、 これらの実施の 形態に限定されることはない。 たとえば、 「桁」 は、 1 0進数などである必要は なく、 2進数の 「ビッ ト」 という単位でもよく、 また、 それを複数組み合わせた 4進数などでもよい。
また、 演算命令として加算命令を取り上げたが、 減算命令や比較命令など桁毎 に ; '亩算できるものなら、 どのような演算命令でもよい。
また、 「冗長な数系」 としては、 2進 S D数系と呼ばれる、 2進数「0 , 1」 に 「一 1」 を許可したものに限定される必要はなく、 1 0進数 1 1値 ( 「0〜 9」 以外に 「A = 1 0」 を許可したもの) や 2進 3値 (「0 , 1」 に 「2」 を許 可したもの) などでもよい。
さらに、 従来のトランジスタで実現される、 すべての回路のなかで、 このトラ ンジスタをニューロン M O S トランジスタで置き換えることが可能である。 萤業上の利用可能性
請求項 1に ί系る発明によれば、 より重要な情報を示す上位桁の情報からデータ の ¾理をする回路が実現可能である。
請求項 2に ί系る発明によれば、 上位桁から複数の組み合わせ演算処理用半導体 回路が実現可能となる。
請求項 3に係る発明によれば、 冗長な数系を取り扱うことで加算演算などの下 位桁からの ί云搬信号を吸収でき、 上位桁からの数値演算を可能にする演算処理用 半導体回路が得られる。
請求項 4に ί系る発明によれば、 回路外部から見ると、 全く桁上げ信号がない完 全な上位桁からの演算処理用半導体回路が実現できる。
請求項 5に係る発明によれば、 冗長な数系を用いることなく下位桁からの桁上 げ ί言号を処理できる上位桁からの演算処理用半導体回路も可能にする。
請求項 6に係る発明によれば、 結果判別のついた桁から下位桁側の演算を省略 できる演算処理用半導体回路が実現できる。
請求項 7に (系る発明によれば、 最小値、 最大値を元に下位桁からの信号に依存 しな〔、、 上位桁からの演算比較判断が可能な演算処理用半導体回路が得られる。 請求項 8に (系る発明によれば、 汎用プロセッサ向けの上位桁からの演算処理用 半導体回路や、 単一のハードウェアでありながら、 実時間で機能を可変にできる 演算処理用半導体回路が実現できる。
請求項 9に ί系る発明によれば、 冗長な数系を上位桁からバイナリ変換できる演 算処理用半導体回路回路が実現できる。
請求項 1 0に ί系る発明によれば、 コンパク卜なアナログ信号に対して逐次上位 桁から : 理が行える演算処理用半導体回路が実現できる。
請求項 1 1に係る発明によれば、 上位桁から結果が出力される半導体乗算器が 実現可能である。
請求項 1 2に ί系る発明によれば、 請求項 1 3とは別の手法により上位桁からの 半導体乗算回路が実現できる。
請求項 1 3に係る発明によれば、 ニューロン MO S トランジスタを用いること で、 回路を' j、規模にし、 演算機能を増大し、 知的演算の概念を導入した上位桁か らの演算処理が可能になる。
請求項 1 4 . 1 5に ί系る発明によれば、 冗長な数系を用いることで上位桁から の数値演算を可能とした方法を用いることが可能になる。
請求項 1 6に ί系る発明によれば、 上位桁からの演算が確定した時点で残りの演 算が省略できる高速な処理手法が可能になる。