JPH11143685A - キャリー・スキップ・アダー - Google Patents

キャリー・スキップ・アダー

Info

Publication number
JPH11143685A
JPH11143685A JP10091837A JP9183798A JPH11143685A JP H11143685 A JPH11143685 A JP H11143685A JP 10091837 A JP10091837 A JP 10091837A JP 9183798 A JP9183798 A JP 9183798A JP H11143685 A JPH11143685 A JP H11143685A
Authority
JP
Japan
Prior art keywords
adder
circuit
carry
group
output
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.)
Pending
Application number
JP10091837A
Other languages
English (en)
Inventor
Yoshinao Kobayashi
芳直 小林
Akashi Sato
証 佐藤
Seiji Muneto
誠治 宗藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP10091837A priority Critical patent/JPH11143685A/ja
Priority to US09/102,532 priority patent/US6199091B1/en
Publication of JPH11143685A publication Critical patent/JPH11143685A/ja
Priority to US09/699,976 priority patent/US6735612B1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F7/508Adding; 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 using carry look-ahead circuits

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

(57)【要約】 (修正有) 【課題】高速な2段以上のキャリー・スキップ・アダー
を提供すること。 【解決手段】複数のリプル・アダーを有し、この複数の
リプル・アダーのうち少なくとも一部のリプル・アダー
はグループ分けされており、キャリー信号はあるグルー
プか1つ上位のグループへ伝達されている。そして、あ
るグループから1つ上位のグループへのキャリー信号C
1と、1つ上位のグループ内の全アダーの出力が1ある
か否かを表す信号Fと、1つ上位のグループ内において
最も上位のリプル・アダーに関連するキャリー信号C2
とを用いて、C=C2+F・C1を計算する回路を有す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、バイナリ・アダー
に関し、より詳しくは、多ビット数のキャリー・スキッ
プ・アダーに関する。
【0002】
【従来の技術】RSA暗号系を高速に処理するために
は、1024ビットから2048ビットという非常にビ
ット数の多いバイナリ・アダーを高速に動作させる必要
がある。しかし、以下で述べる従来技術では、動作速度
が下位から送られてくるキャリー信号によって制限さ
れ、所望の動作速度を得ることができなかった。以下、
従来技術について述べる。
【0003】(1)リプル・キャリー方式 リプル・アダーはビット数に等しい数のフル・アダーを
並べて作ることができる。このリプル・キャリー方式の
回路は簡単だが、最大ゲート・ディレイはビット数分の
ゲート・ディレイとなり、所望の動作速度を確保するこ
とは非常に困難である。
【0004】(2)キャリー・モニタ方式 長大なリプル・アダーのゲート・ディレイは、Nビット
について最大N段のゲート・ディレイとなるため、保証
できる動作速度はビット数に反比例して遅くなる。しか
し、キャリーの伝搬が必要な場合は、加算される2つの
数X,Yが排他的に1で、しかも下位からキャリーが来
る場合だけなので、このような条件が連続していること
はまれである。1024ビットではこのような条件はせ
いぜい連続して11ビット程度と計算されていて、平均
動作速度は保証できる動作速度の100倍を期待でき
る。この方式は、キャリー・モニタ回路を付けることに
より、キャリーが連続する時だけ待ち時間を入れるとい
うものである。しかし、このキャリー・モニタ方式は、
回路サイズが大きく、消費電力が大きくなること、そし
て潜在的に動作が不安定になる危険性という欠点があ
る。
【0005】(3)キャリー・スキップ方式 バイナリ・アダーをいくつかのブロックに分割して、各
々の部分について加算を済ませてから、下位からのキャ
リー信号で+1の補正をすることができる。この方式に
従うバイナリ・アダーを、キャリー・スキップ・アダー
という。このキャリー・スキップ方式は、回路は複雑に
なるが、消費電力が少なく、動作も安定している。回路
の複雑さについては、リプル・アダーより大きく、キャ
リー・モニター方式によるアダーと同程度である。
【0006】1段のキャリー・スキップ方式では、Nビ
ットの加算について、N≦n(n+2)/2+2なるn
を求めて、このnに対して(n+3)がゲート・ディレ
イとなる。1024ビットでは、N=1024でn=4
5、すなわち、48ゲート・ディレイとなる。
【0007】このようなキャリー・スキップ方式につい
ては、例えば、情報処理第37巻第1号p80−85,
情報処理学会発行、1996年1月に記載されている。
【0008】また、IBM Technical Disclosure Bul
letin Vol. 27, No.11, April 1985, pages 6785-6787
には、スキップするキャリーを2段にすることを記載し
ている。しかし、バイナリー・アダーのブロック分けを
シンメトリックに行っているため、ビット数が少ない場
合には高速であるが、ビット数が多くなると、キャリー
・スキップの効果が少なくなって、動作速度が相対的に
遅くなってしまう。
【0009】
【発明が解決しようとする課題】よって、本発明の目的
は、スキップするキャリーを2段以上にし、より高速な
動作速度を可能とするバイナリ・アダーを提供すること
である。
【0010】また、キャリー・スキップ・アダーを応用
した高速マルチプライアを提供することも目的である。
【0011】
【課題を解決するための手段】本発明の第1の態様であ
る、N段(Nは3以上の整数)キャリー・スキップ・ア
ダーは、複数のリプル・アダーを有し、この複数のリプ
ル・アダーのうち少なくとも一部のリプル・アダーはグ
ループ分けされている。キャリー信号はあるグループか
ら1つ上位のグループへ伝達されており、グループ内に
複数のリプル・アダーが存在する場合には、当該グルー
プ内のリプル・アダー間でもキャリー信号が伝達されて
いる。そして、あるグループから1つ上位のグループへ
のキャリー信号C1と、1つ上位のグループ内の全アダ
ーの出力が1であるか否かを表す信号Fと、1つ上位の
グループ内において最も上位のリプル・アダーに関連す
るキャリー信号C2とを用いて、C=C2+F・C1を
計算する回路を有する。また、グループ内に3以上のリ
プル・アダーが存在する場合には、当該グループ内の複
数のリプル・アダーはN−2段階のレベルでさらにグル
ープ化されており、当該最も上位のリプル・アダーが属
する、最下段であるレベル1のグループ内におけるリプ
ル・アダー間で前記最も上位のリプル・アダーに伝達さ
れてきたキャリー信号C30と、前記最も上位のリプル
・アダーが属する、レベルnのグループに、レベルnの
隣接するグループから伝達されてきたキャリー信号C3
n(1≦n≦N−2)と、前記最も上位のリプル・アダ
ーのキャリー信号C4と、前記最も上位のリプル・アダ
ーの全アダーの出力が1であるか否かを表す信号F20
と、キャリー信号C3nを出力している回路に関連する
リプル・アダーより上位で前記最も上位のリプル・アダ
ーまでの全アダーの出力が1であるか否かを表す信号F
nとを用いて、C21=C4+F20・C30を計算する
回路と、C2n+ 1=C2n+F2n・C3n(1≦n≦N−
2,C2N-1=C2)を計算する回路とを含む。これに
より3段以上のキャリー・スキップ・アダーが構成さ
れ、ゲート・ディレイを大幅に削減できる。キャリー信
号は上位に伝搬されるだけで下位に戻されることはな
い。3段キャリー・スキップ・アダーの場合には1段階
のレベルでさらにグループ化されており、C21=C4
+F20・C30を計算する回路と、C22=C2=C1
F21・C31を計算する回路とを含む。4段キャリー・
スキップ・アダーの場合には2段階のレベルでさらにグ
ループ化されており、C21=C4+F20・C30を計
算する回路と、C2=C1+F21・C31を計算する回路
と、C23=C2=C2+F22・C32を計算する回路と
を含む。なお、本発明の第1の態様は、例えば図3にお
ける、AND回路435とOR回路437の組、AND
回路441とOR回路443の組、AND回路445と
OR回路447の組、を表している。C=C2+F・C
1、C21=C4+F20・C30、及びC2n+1=C2n
+F2n・C3nは、あるアダーのキャリーは、そのアダ
ーのキャリーが発生する場合、又はそのアダーが含まれ
るブロックの全てのアダーが1を出力し且つ前のブロッ
クからキャリーが伝搬されている場合に生成されること
を示す。また、「少なくとも一部のリプル・アダー」と
いう文言を用いているのは、本構成のキャリー・スキッ
プ・アダーの下位又は上位に単純なリプル・アダーや他
の方式に基づくアダーを付加する場合も考えられるため
である。特に、マルチプライア中のアダーでは、本発明
の方式によるアダーより下位に、2種類のキャリーが独
立に発生する場合に対応する、本方式の変形の回路が連
結される。なお、前記1つ上位のグループに属するリプ
ル・アダーの数は、前記あるグループに属するリプル・
アダーの数以上とすることもできる。よって、ビット数
が多くなった場合でも飛躍的に加算速度を上げることが
できる。
【0012】本発明の第2の態様であるキャリー・スキ
ップ・アダーは、複数のリプル・アダーを有し、当該複
数のリプル・アダーのうち少なくとも一部のリプル・ア
ダーはグループ分けされており、キャリー信号はあるグ
ループから1つ上位のグループへ伝達されており、前記
あるグループから前記1つ上位のグループへのキャリー
信号C1と、前記1つ上位のグループ内の全アダーの出
力が1であるか否かを表す信号Fと、前記1つ上位のグ
ループ内において最も上位のリプル・アダーに関連する
キャリー信号C2とを用いて、C=C2+F・C1を計
算する回路を有する。また、グループ内に複数のリプル
・アダーが存在する場合には、当該グループ内の複数の
リプル・アダー間でもキャリー信号が伝達されており、
前記最も上位のリプル・アダーより1つ下位のリプル・
アダーに関連するキャリー信号C31と、前記最も上位
のリプル・アダーのキャリー信号C4と、前記最も上位
のリプル・アダーの全アダーの出力が1であるか否かを
表す信号F21とを用いて、C2=C4+F21・C31
を計算する回路を含む。これにより2段キャリー・スキ
ップ・アダーが構成され、ゲート・ディレイが大幅に削
減される。キャリー信号は上位に伝搬されるだけで、下
位に戻されることはない。C=C2+F・C1を計算す
る回路は、例えば図1では、AND回路71及びOR回
路73であり、C2=C4+F21・C31を計算する回
路は、AND回路67及びOR回路69である。なお、
ハーフ・アダー11及びフル・アダー13で構成される
リプル・アダーと、ハーフ・アダー15及びフル・アダ
ー17で構成されるリプル・アダーとは一つのグループ
を構成している。このグループ内では2つのリプル・ア
ダーが存在するので、グループ間で伝達されるキャリー
とグループ内で伝達される、2本のキャリーが存在す
る。なお、前記1つ上位のグループよりさらに1つ上位
のグループ中の最下位のリプル・アダー内において最下
位アダーの出力S0とCとの排他的論理和を計算する回
路と、当該最下位アダーより1つ上位のアダーの出力S
1と、C及びS0の論理積との排他的論理和を計算する
回路とをさらに有する。この排他的論理和の出力が、当
該最下位アダーの最終的な出力と、最下位アダーより1
つ上位のアダーの最終的な出力となる。
【0013】本発明の第3の態様であるキャリ・スキッ
プ・アダーは、複数のリプル・アダーを有し、複数のリ
プル・アダーのうち少なくとも一部のリプル・アダーに
含まれる第1リプル・アダーについて、第1リプル・ア
ダーのキャリー信号C1と、第1リプル・アダー内の全
ての出力が1になっているか否かを示す信号F1と、第
1リプル・アダーより1つ下位のリプル・アダーに関連
するキャリー信号C0が伝達されている場合には当該キ
ャリー信号C0とに対して、C2=C1+F1・C0な
る計算を実行する回路を有する。また、第1リプル・ア
ダーから2以上下位のリプル・アダーである第2リプル
・アダーに関連する回路から第1リプル・アダーに当該
第2リプル・アダーに関連するキャリー信号Cが伝達さ
れる場合には、各第1リプル・アダー及び各キャリー信
号Cについて、第2リプル・アダーより上位で第1リプ
ル・アダーまでの全ての出力が1になっているか否かを
示す信号F2と、第1リプル・アダーに関連するキャリ
ー信号C2'とキャリー信号Cに対して、C3=C2'+
F2・Cなる計算を実行する回路をさらに有する。これ
により複数段のキャリー・スキップ・アダーが構成さ
れ、ゲート・ディレイが大幅に削減される。キャリー信
号は上位に伝搬されるだけで、下位に戻されることはな
い。例えば図1においては、第1リプル・アダーがアダ
ー23及び25である場合、AND回路97及びOR回
路103がC2=C1+F1・C0なる計算を実行する
回路であり、AND回路101及びOR回路105がC
3=C2'+F2・Cなる計算を実行する回路である。
【0014】第1リプル・アダーに関連してC3が出力
される場合には、第1リプル・アダーから1つ上位の第
3リプル・アダー中最下位アダーの出力S0とC3との
排他的論理和を計算する回路と、最下位アダーより1つ
上位のアダーの出力S1と、C3及びS0の論理積との
排他的論理和を計算する回路とをさらに有し、第1リプ
ル・アダーに関連してC3が出力されない場合には、第
3リプル・アダー中最下位アダーの出力S0とC2との
排他的論理和を計算する回路と、最下位アダーより1つ
上位のアダーの出力S1と、C2及びS0の論理積との
排他的論理和を計算する回路とをさらに有する。これら
排他的論理和の出力は、第3リプル・アダー中最下位ア
ダーの最終的な出力、当該最下位アダーより1つ上位の
アダーの最終的な出力となる。例えば図1において第1
リプル・アダーがハーフ・アダー15及びフル・アダー
17である場合には、ハーフ・アダー19及びフル・ア
ダー21(第3リプル・アダー)にはC3が出力されて
おり、第1ルプル・アダーがハーフ・アダー19及びフ
ル・アダー21である場合には、ハーフ・アダー23及
びフル・アダー25(第3リプル・アダー)にはC2が
出力されている。第3リプル・アダーが3以上のアダー
から構成される場合には、最下位アダーよりm(m≧
3)上位のアダーの出力Smと、C3及び最下位アダー
から最下位アダーよりm−1上位のアダーまでの全出力
の論理積との排他的論理和を計算する回路をさらに有す
る。例えば図4において第1リプル・アダーがハーフ・
アダー471及びフル・アダー473である場合には、
第3リプル・アダーはハーフ・アダー475及びフル・
アダー477及び479であり、第3リプル・アダーは
3以上のアダーを含む。そして、フル・アダー479の
最終的な出力は、ハーフ・アダー475及びフル・アダ
ー477の出力とC3との論理積と、フル・アダー47
9の出力との排他的論理和となっている(m=3)。
【0015】本発明の第4の態様であるキャリー・スキ
ップ・アダーは、複数のリプル・アダーを有し、この複
数のリプル・アダーのうち少なくとも一部のリプル・ア
ダーはグループ分けされており、キャリー信号はあるグ
ループから1つ上位のグループへ伝達されている。そし
て、前記あるグループから前記1つ上位のグループへの
キャリー信号C1と、前記1つ上位のグループ内の全ア
ダーの出力が1であるか否かを表す信号Fと、前記1つ
上位のグループ内において最も上位のリプル・アダーに
関連するキャリー信号C2とを用いて、C=C2+F・
C1を計算する回路を有する。また、2以上のリプル・
アダーを有するグループにおいては、当該グループ内の
複数のリプル・アダーがさらに複数のサブグループに分
けられ、キャリー信号はあるサブグループから1つ上位
のサブグループへ伝達されており、前記あるサブグルー
プから前記1つ上位のサブグループへのキャリー信号C
3と、前記1つ上位のサブグループ内の全てのアダーの
出力が1であるか否かを表す信号F1と、前記1つ上位
のサブグループ内において最も上位のリプル・アダーに
関連するキャリー信号C4とを用いて、C5=C4+F
1・C3を計算する回路を有する。グループは、1つの
リプル・アダーのみを有することもあり、サブ・グルー
プはさらにサブ・グループを持ち得る。例えば、図4に
おいてはアダー451乃至479は1つのグループであ
り、アダー451乃至465が第1サブグループでアダ
ー467乃至479が第2サブグループである。また、
第1サブグループは、アダー451乃至457のサブグ
ループ、アダー459及び465のサブグループに分け
られる。さらに、第2サブグループは、アダー467及
び469のサブグループ、アダー471及び473のサ
ブグループ、アダー475乃至479のサブグループに
分けられる。第1サブグループの2つのサブグループ
は、それぞれリプル・アダーの単位でさらにサブグルー
プに分けられる。
【0016】本発明の第1乃至第4の態様の変形となる
キャリー・スキップ・アダーは、複数のリプル・アダー
を有し、最下位のアダーの入力が3ビットである、少な
くとも一部のリプル・アダーについて、最下位のアダー
を含むリプル・アダーのキャリー信号C1と、当該リプ
ル・アダー内の全ての出力が1になっているか否かを示
す信号F1と、最下位のアダーより1つ下位のアダーに
関連するキャリー信号C0が伝達されている場合には当
該キャリー信号C0と、当該リプル・アダーの1つ上位
のリプル・アダーの最下位の出力F2とに対して、実質
的にF1・C0とC1とF2を加算する回路を有する。
二種類のキャリーが独立に発生するため、加算回路(フ
ル・アダー)が採用されている。
【0017】2段のキャリー・スキップ・アダーの場合
には、下位レベルのブロックをセット、上位レベルのブ
ロックをグループとし、下位から、3ビットの第1グル
ープ、2ビットの第2グループ、2ビットのセットと2
ビットのセットからなる第3グループ、第4グループ以
降はグループ番号n−1個のセットを含み(nは4以上
の整数)、当該グループ内で第1及び第2のセットは2
ビット、第3のセット以降はセット番号mビットとなる
ように、2つのNビット(足し算を行う2つの数)の入
力を分ける。そして、各々2つのNビットの入力のうち
同じビット位置の2つの入力に接続された、N個のアダ
ー(フルー・アダーの場合とハーフ・アダーの場合を含
む)と有し、第1及び第2グループと各セット内では、
あるアダーから次のアダーへ、リプル・キャリーを直接
伝達する。これにより、ブロック分けされたリプル・ア
ダーが構成される。また、第3グループ以降の各グルー
プ内で、あるセットから次のセットへキャリーを伝達す
るラインと、第2グループ以降の各グループ内で、前の
グループからキャリーを伝達するラインとが、スキップ
するキャリー2本を示す。最後に、伝達されるキャリー
とアダーの出力とを用いて、加算結果を補正する回路
(1つに限らない。通常複数。)を設ける。このアダー
は、リプル・アダーのブロック分けに特徴を有する。
【0018】3段のキャリー・スキップ・アダーの場合
には、最下位レベルのブロックからセット、グループ、
クラスと名付け、下位から、3ビットの第1クラス、2
ビットの第2クラス、2つの2ビットのグループからな
る第3クラス、2つの2ビットのセットからなる第1の
グループと2つの2ビットのセットからなる第2のグル
ープとからなる第4クラス、2つの2ビットのセットか
らなる第1のグループと2つの2ビットのセットからな
る第2のグループと2つの2ビットのセットと3ビット
のセットを含む第3のグループとからなる第5クラス、
第6クラス以降は、クラス番号n−2個のグループを有
し、第1乃至第3のグループは第5クラスと同じで、第
4のグループ以降は、グループ番号g個のセットを有
し、第4のグループ以降の各グループ内では、2ビット
の第1セット、第2セット以降は、セット番号sビット
のセットを含むように、2つのNビットの入力を分け
る。そして、各々2つのNビットの入力のうち同じビッ
ト位置の2つの入力に接続された、N個のアダーと、第
1及び第2クラスと第3クラスの各グループ内と各セッ
ト内で、あるアダーから次のアダーへ、リプル・キャリ
ーを直接伝達する。これにより、ブロック分けされたリ
プル・アダーが構成される。また、第3クラス以降の各
グループ内で、あるセットから次のセットへキャリーを
伝達するラインと、第4クラス以降の各クラス内で、あ
るグループから次のグループへキャリーを伝達するライ
ンと、第2クラス以降の各クラスで、前のクラスからキ
ャリーを伝達するラインと、が3本のスキップされたキ
ャリーを示す。最後に、伝達されるキャリーとアダーの
出力とを用いて、加算結果を補正する回路とを含める。
【0019】4段のキャリー・スキップ・アダーの場合
には、最下位レベルのブロックから、セット、グルー
プ、クラス、ブロックと名付け、下位から、3ビットの
第1ブロック、2ビットの第2ブロック、2ビットのセ
ット2つからなる第3ブロック、2ビットのセット2つ
からなるグループと2ビットのセット2つからなるグル
ープとからなるクラスと、当該クラスの構成と同じ構成
のクラスとからなる第4ブロック、第5ブロック以降
は、ブロック番号b−2個のクラスを有し、b−3番目
のクラスまでは前のブロックと同様の構成を有してお
り、b−2番目のクラスの構成は、b−2個のグループ
を有し、第1グループは2ビットのセット2つ、第2グ
ループは2ビットのセット2つ、第3グループ以降はグ
ループ番号g個のセットを有し、2ビットの第1セット
と第2セット以降は当該セット番号sビットからなるセ
ットとを有するように、2つのNビットの入力を分け
る。
【0020】そして、各々2つのNビットの入力のうち
同じビット位置の2つの入力に接続された、N個のアダ
ーと、第1及び第2ブロックと第3ブロック以降の各セ
ット内で、あるアダーから次のアダーへ、リプル・キャ
リーを直接伝達する。これが、ブロック分けされたリプ
ル・アダーである。また、第3ブロック内及び第4ブロ
ック以降の各グループ内で、あるセットから次のセット
へキャリーを伝達するラインと、第4ブロック以降の各
クラス内で、あるグループから次のグループへキャリー
を伝達するラインと、第4ブロック以降の各ブロック内
で、あるクラスから次の前記クラスへキャリーを伝達す
るラインと、第2ブロック以降の各ブロック内で、前の
ブロックからキャリーを伝達するラインとが、3本のス
キップされたキャリーを表す。最後に、伝達されるキャ
リーとアダーの出力とを用いて、加算結果を補正する回
路とを設ける。
【0021】
【発明の実施の形態】A.2段キャリー・スキップ・ア
ダー 最初に、入力のブロック分けについて示しておく。以下
の数字はバイナリ・アダーの数を示す。 3 2 2,2 2,2,3 2,2,3,4 2,2,3,4,5 .... .... この各行は、上位レベルのブロック分けであるグループ
を示し、列に並んでいる数字は、グループのレベルにお
けるブロック分けでセットを示す。
【0022】図1及び図2に2段キャリー・スキップ・
アダーを示す。第1グループは、3つのフル・アダー1
乃至5を含み、これらはリプル・アダーを構成する。す
なわち、フル・アダー1のキャリーはフル・アダー3
に、フル・アダー3のキャリーはフル・アダー5に入力
される。フル・アダー1には、a0という信号も入力さ
れているが、これは任意であり、よって、フル・アダー
でなく、ハーフ・アダーでもよい。それぞれのアダーの
出力は、それぞれZ0,Z1,Z2となる。また、第1グ
ループ全体のキャリー信号C1は、第2グループに出力
される。この最下位のグループは、下位からキャリーが
来ないので、ゲート・ディレイをここだけ1段深くする
ことができる。
【0023】次に、第2グループは、ハーフ・アダー7
及びフル・アダー9を含み、この2つのアダーでリプル
・アダーを構成する。すなわち、ハーフ・アダー7のキ
ャリーはフル・アダー9に入力される。そして、ハーフ
・アダー7の出力とキャリー信号C1とを入力とする排
他的論理和回路33の出力がZ3となる。また、キャリ
ー信号C1とハーフ・アダー7の出力とがAND回路3
5に入力されており、このAND回路35の出力とフル
・アダー9の出力とを入力とする排他的論理和回路37
の出力がZ4となる。そして、この第2グループ全体の
キャリー信号C2を作成するため、アダー7及び9の出
力が入力されたAND回路39と、そのAND回路39
の出力とキャリー信号C1とが入力されるAND回路4
1と、AND回路41の出力とフル・アダー9のキャリ
ーとが入力されるOR回路43とが設けられる。このキ
ャリー信号C2は、第3グループに伝搬される。第2グ
ループでは、第1グループからのキャリー信号C11本
のみが入力されており、AND回路39、AND回路4
1及びOR回路43にて、キャリー信号C2が生成でき
る。ここで、キャリーC2信号が発生するのは、グルー
プ内の全てのアダーの出力が1であって且つ前のグルー
プからのキャリーが1である場合、又はグループ内の最
高位のアダーがキャリーを生成している場合である。
【0024】ハーフ・アダー11及びフル・アダー13
で第1セットを構成し、ハーフ・アダー15及びフル・
アダー17で第2セットを構成し、第3グループはこの
2つのセットを有する。各セットはリプル・アダーを構
成し、ハーフ・アダー11からフル・アダー13へ、ハ
ーフ・アダー15からフル・アダー17にキャリーは伝
搬される。そして、ハーフ・アダー11の出力とキャリ
ー信号C2とを入力とする排他的論理和回路45の出力
が出力Z5となる。また、キャリー信号C2とハーフ・ア
ダー11の出力とがAND回路47に入力されており、
このAND回路47の出力とフル・アダー13の出力と
を入力とする排他的論理和回路49の出力がZ6とな
る。第1セットのキャリーとして、フル・アダー13の
キャリーは第2セットに伝搬される。また、第1セット
に含まれるアダー11及び13の出力が共に1であるか
否かを示す信号を作成するために、AND回路51が設
けられている。このAND回路51の出力も第2セット
に送られる。
【0025】キャリー信号C2とAND回路51の出力
とを入力とするAND回路53、及びAND回路53の
出力とフル・アダー13のキャリーを入力とするOR回
路55は、全体としてこの第1セットまでのキャリー信
号を生成する。そして、OR回路55の出力とハーフ・
アダー15の出力とは排他的論理和回路57に入力さ
れ、この排他的論理和回路57の出力は出力Z7とな
る。また、OR回路55の出力とハーフ・アダー15の
出力とはAND回路59に入力され、このAND回路5
9の出力とフル・アダー17の出力とが入力である排他
的論理和回路61の出力が出力Z8である。次に、この
グループ内での第2セットまでのキャリーを生成する。
このキャリーは、アダー15及び17の出力が共に1で
あるか否か判断するAND回路63、フル・アダー13
からのキャリーとAND回路63の出力とを入力とする
AND回路67、及びAND回路67の出力とフル・ア
ダー17のキャリーとを入力とするOR回路69にて生
成される。加えて、第2グループ全体のキャリー信号C
3を生成する必要がある。このキャリー信号C3は、AN
D回路51の出力とAND回路63の出力とを入力にす
るAND回路65と、このAND回路65の出力とキャ
リー信号C2とを入力とするAND回路71と、このA
ND回路71の出力と、OR回路69の出力とを入力に
するOR回路73から生成される。このAND回路65
は、このグループ内の全てのアダーの出力が1であるか
否かを示す信号を生成するために設けられる。
【0026】第4グループは、3つのセットを有する。
第1セットは、ハーフ・アダー19及びフル・アダー2
1を含み、これらでリプル・アダーを構成する。第2セ
ットは、ハーフ・アダー23及びフル・アダー25を含
み、これらでリプル・アダーを構成する。第3セット
は、ハーフ・アダー27及びフル・アダー29及び31
を含み、これらでリプル・アダーを構成する。
【0027】ハーフ・アダー19の出力とキャリー信号
C3とが排他的論理和回路75に入力され、この回路7
5の出力は出力Z9となる。また、ハーフ・アダー19
の出力とキャリー信号C3とがAND回路77に入力さ
れ、このAND回路77の出力と、フル・アダー21の
出力とを入力とする排他的論理和回路79の出力が、出
力Z10となる。アダー19及び21の出力はAND回路
81に入力され、このAND回路81の出力は第2セッ
トに伝搬される。加えて、フル・アダー21のキャリー
も同様に第2セットに伝搬される。全体としてこの第1
セットまでのキャリーを生成するための回路が、キャリ
ー信号C3及びAND回路81の出力とが入力されるA
ND回路83と、このAND回路83の出力とフル・ア
ダー21のキャリーが入力されるOR回路85とによっ
て構成される。
【0028】全体としてこの第1セットまでのキャリー
に対応する信号であるOR回路85の出力と、ハーフ・
アダー23の出力とが入力される排他的論理和回路87
の出力が、出力Z11となる。また、OR回路85の出力
と、ハーフ・アダー23の出力とがAND回路89に入
力され、このAND回路89の出力とフル・アダー25
の出力とが入力される排他的論理和回路91の出力が出
力Z12となる。
【0029】第4グループ内での第2セットまでのキャ
リーを生成するために、アダー23及び25の出力を入
力とするAND回路93と、このAND回路93の出力
とフル・アダー21の出力とが入力されるAND回路9
7、及びこのAND回路97の出力及びフル・アダー2
5のキャリーが入力されるOR回路103とが設けられ
る。加えて、第1及び第2セットの全てのアダーの出力
が共に1であるか否かを表す信号を、AND回路81の
出力及びAND回路93の出力とを入力とするAND回
路95が生成する。このAND回路95の出力及びOR
回路103の出力は、第3セットに伝搬される。
【0030】キャリー信号C3及びAND回路95の出
力とが入力されるAND回路101、このAND回路1
01の出力とOR回路103の出力とが入力されるOR
回路105は、全体として第2セットまでのキャリーを
生成する回路である。このOR回路105の出力とハー
フ・アダー27の出力とが排他的論理和回路107に入
力され、この回路107の出力が出力Z13となる。ま
た、OR回路105の出力とハーフ・アダー27の出力
とがAND回路109に入力され、このAND回路10
9の出力と、フル・アダー29の出力とが入力される排
他的論理和回路111の出力が、出力Z14である。
【0031】アダー27及び29の出力はAND回路1
17に入力され、このAND回路117の出力とOR回
路105の出力とがAND回路113に入力される。こ
のAND回路113の出力は、フル・アダー31の出力
と共に排他的論理和回路115の入力である。この回路
115の出力は、出力Z15である。
【0032】第4グループ内での第3セットまでのキャ
リーを生成するため、AND回路117の出力とフル・
アダー31の出力とが入力されるAND回路119、こ
のAND回路119の出力と本グループの第2セットま
でのキャリーであるOR回路103の出力とが入力され
るAND回路125、及びこのAND回路125の出力
とフル・アダー31のキャリーとが入力されるOR回路
127が設けられる。
【0033】これに加えて、第4グループまでの全体と
してのキャリー信号C4を生成するための回路を設け
る。これは、第2セットまでのアダーの出力が全て共に
1であるか否かを示す信号であるAND回路95の出力
とAND回路119の出力とが入力されるAND回路1
21、このAND回路121の出力とキャリー信号C3
とが入力されるAND回路123と、このAND回路1
23の出力と第3セットまでのキャリーであるOR回路
127の出力とが入力されるOR回路129から構成さ
れる。このキャリー信号C4は図2の回路(第5グルー
プ)に伝搬されている。
【0034】第5グループを図2に示す。この第5グル
ープは、4つのセットを含んでいる。第1セットは、ハ
ーフ・アダー131とフル・アダー133を含み、これ
らはリプル・アダーを構成する。第2セットは、ハーフ
・アダー135とフル・アダー137を含み、これらは
リプル・アダーを構成する。第3セットは、ハーフ・ア
ダー139とフル・アダー141及び143を含み、こ
れらはリプル・アダーを構成する。第4セットは、ハー
フ・アダー145とフル・アダー147乃至151を含
む。
【0035】ハーフ・アダー131の出力とキャリー信
号C4とは排他的論理和回路155に入力され、この回
路155の出力は出力Z16となる。また、ハーフ・アダ
ー131の出力とキャリー信号C4とはAND回路15
7に入力され、このAND回路157の出力とフル・ア
ダー133の出力とが入力される排他的論理和回路15
9の出力が、出力Z17となる。アダー131及び133
の出力はAND回路153に入力され、このAND回路
153の出力と、フル・アダー133の出力とが、第2
セットに伝搬される。
【0036】また、第1グループから第5グループの第
1セットまでのキャリーを生成するために、キャリー信
号C4とAND回路153の出力とが入力されたAND
回路161と、このAND回路161の出力とフル・ア
ダー133のキャリーとが入力されたOR回路163と
が設けられる。このOR回路163の出力とハーフ・ア
ダー135の出力とが入力される排他的論理和回路16
5の出力が、出力Z18となる。また、OR回路163の
出力とハーフ・アダー135の出力とがAND回路16
7に入力され、このAND回路167の出力とフル・ア
ダー137の出力とが入力される排他的論理和回路16
9の出力が、出力Z19となる。
【0037】第5グループ内での第2セットまでのキャ
リーを生成するために、アダー135及び137の出力
が入力されるAND回路171、このAND回路171
の出力とフル・アダー133のキャリーとが入力される
AND回路175、及びこのAND回路175の出力と
フル・アダー137のキャリーが入力されるOR回路1
77が設けられる。ここで発生された第5グループ内で
の第2セットまでのキャリーは、第3セットに伝搬され
る。また、第2セットまでの全てのアダーの出力が共に
1であるか否かを示す信号を生成するために、AND回
路153の出力とAND回路171の出力とが入力され
るAND回路173が設けられ、このAND回路173
の出力も第3セットに伝搬される。
【0038】第1グループから第5グループの第2セッ
トまでのキャリーを生成するために、キャリー信号C4
と第2セットまでの全てのアダーの出力が共に1である
か否かを示す信号であるAND回路173の出力とが入
力されるAND回路179と、このAND回路179の
出力と第2セットまでのキャリーであるOR回路177
の出力とを入力とするOR回路181が設けられる。こ
のOR回路181の出力と、ハーフ・アダー139の出
力とが排他的論理和回路183に入力され、この回路1
83の出力が出力Z20である。また、OR回路181の
出力とハーフ・アダー139の出力とがAND回路18
5に入力され、このAND回路185の出力とフル・ア
ダー141の出力とが入力される排他的論理和回路18
7の出力が出力Z21である。
【0039】アダー139及び141の出力は、AND
回路193に入力される。このAND回路193の出力
とOR回路181の出力とはAND回路189に入力さ
れる。このAND回路189の出力とフル・アダー14
3の出力とが排他的論理和回路191に入力され、この
回路191の出力が出力Z22である。
【0040】第5グループ内での第3セットまでのキャ
リーを生成するために、フル・アダー143の出力とA
ND回路193の出力とが入力されるAND回路195
と、このAND回路195の出力と第5グループ内の第
2セットまでのキャリーであるOR回路177の出力と
が入力されるAND回路199と、このAND回路19
9の出力とフル・アダー143のキャリーとが入力され
るOR回路201とが設けられる。第1乃至第3セット
の全てのアダーの出力が共に1であるか否かを示す信号
を生成するために、第2セットから伝搬されたAND回
路173の出力とAND回路195の出力とを入力とす
るAND回路197が設けられる。このAND回路19
7の出力と、OR回路201の出力である、第5グルー
プ内での第3セットまでのキャリーとが、第4セットに
伝搬される。
【0041】第1グループから当該第5グループの第3
セットまでのキャリーを生成するために、キャリー信号
C4とAND回路197の出力とが入力されるAND回
路203と、このAND回路203の出力と第5グルー
プ内での第3セットまでのキャリーであるOR回路20
1の出力とが入力されるOR回路205が設けられる。
このOR回路205の出力は、ハーフ・アダー145と
共に排他的論理和回路207に入力され、この回路20
7の出力が出力Z23となる。また、OR回路205の出
力とハーフ・アダー145の出力とがAND回路209
に入力される。このAND回路209の出力とフル・ア
ダー147の出力とが入力された排他的論理和回路21
1の出力が、出力Z24である。
【0042】アダー145及び147の出力はAND回
路215に入力され、そのAND回路215の出力とO
R回路205の出力とはAND回路213に入力され
る。このAND回路213の出力とフル・アダー149
の出力とが入力される排他的論理和回路217の出力
は、出力Z25である。また、フル・アダー149の出力
とAND回路215の出力はAND回路219に入力さ
れ、このAND回路219の出力とOR回路205の出
力とがAND回路221に入力される。このAND回路
221の出力は、フル・アダー151の出力と共に、排
他的論理和回路223に入力され、この回路223の出
力が出力Z26である。
【0043】第5グループ内での第4セットまでのキャ
リーを生成するために、AND回路219の出力とフル
・アダー151の出力とが入力されるADN回路225
と、このAND回路225の出力と第3セットまでのキ
ャリーであるOR回路201の出力とが入力されるAN
D回路229と、このAND回路229の出力とフル・
アダー151のキャリーとを入力とするOR回路231
とが設けられる。さらに、第5グループのキャリー信号
C5を第6グループに出力するために、AND回路19
7の出力とAND回路225の出力とが入力されるAN
D回路227と、このAND回路227の出力とキャリ
ー信号C4とが入力されるAND回路237と、このA
ND回路237の出力と第4セットまでのキャリーであ
るOR回路231の出力とが入力されるOR回路235
が設けられる。このOR回路235の出力が、第5グル
ープのキャリー信号C5である。
【0044】以上は26ビット分の回路であるが、先に
示した分割方法に従って、図2より上位の回路を構成す
ることができる。
【0045】図1及び図2の回路では、フル・アダー1
及び他のハーフ・アダーは、前のキャリーを見ずに加算
の実行を開始する。そして、第1及び第2グループ、及
び第3グループ以降の各セットにおいてリプル・キャリ
ー方式で加算を実行する。後は、排他的論理和、AND
及びOR回路それぞれの処理を実施すると、出力が生成
される。
【0046】特に注意すべきは、第3グループ以降の各
セットごとに、当該グループ内の当該セットまでのキャ
リーを生成するための回路、当該セットまでを全て(前
のグループをも含める)考慮したキャリーを生成するた
めの回路を設ける点である。前者は、セット内の全ての
アダーの出力が共に1であるか否かを示す信号F1を生
成するための1又は複数のAND回路、前のセットから
伝搬されたキャリーC0と先のAND回路の出力F1と
が入力されるAND回路、そしてこのAND回路の出力
と当該セットのリプル・キャリーC1とが入力されるO
R回路から構成される。これらの回路を数式にすると、
C2=C1+F1・C0となる。後者についても、グル
ープ内の当該セットまでの全てのアダーの出力が共に1
であるか否かを表す信号F2を生成するための1又は複
数のAND回路、先のAND回路の出力F2と前のグル
ープからキャリー信号とCが入力されるAND回路、及
びこのAND回路の出力と当該セットに関するキャリー
C2'が入力されるOR回路から構成される。これらの
回路を数式にするとC3=C2'+F2・Cとなる。
【0047】図1及び図2は正論理にて記述している
が、負論理で記述することも可能である。その際にはA
NDやOR回路は、NANDやNOR回路となる。よっ
て、図1及び図2どおりの回路でなくとも、実質的に同
様の処理を実施することができる。また、その際には上
記数式も変形されるが、実質的に同一の処理を行うもの
であればよい。
【0048】このような2段キャリー・スキップ・アダ
ーでは、ビット数Nについて、N≦n(n+1)(n+
2)/6+n+3なるnについて、全体のゲート・ディ
レイは(n+5)となる。nとNの関係を以下に示す。 n N 4 27 5 43 6 65 7 94 8 131 9 177 ・ ・・ 17 989 18 1161 ・・ ・・・ 22 2049 よって、2段キャリー・スキップ・アダーでは、102
4ビットでゲート・ディレイは23に、2048ビット
でゲート・ディレイ27となる。
【0049】B.3段キャリー・スキップ・アダー 3重にキャリー・スキップを行った場合の分割法を以下
に示す。 3 −− 2 −−− 2,2 −−−−− 2,2 2,2 −−−−− 2,2 2,2 2,2,3 −−−−−− 2,2 2,2 2,2,3 2,2,3,4 −−−−−−− ここで、横線は最上位のブロック分け(クラスと呼ぶ)
を示し、第4クラス以降は、クラス内の行はグループの
ブロック分けを示し、各グループ内のブロック分け(セ
ットと呼ぶ)は列の数字により表される。
【0050】それでは、図3にこの回路を示す。第1ク
ラスは、フル・アダー301乃至305を含み、これら
はリプル・アダーを構成する。そして、各フル・アダー
の出力は、それぞれZ0,Z1,Z2となる。最初のフル
・アダー301には、a0信号が入力されているが、こ
れは無くともよい。よって、ハーフ・アダーを用いるこ
とも可能である。フル・アダー305のキャリー信号C
1は、第2クラスに伝搬される。
【0051】第2クラスは、ハーフ・アダー307及び
フル・アダー309を含み、これらはリプル・アダーを
構成する。そして、キャリー信号C1とハーフ・アダー
307の出力とが入力される排他的論理和回路335の
出力は、出力Z3となる。また、ハーフ・アダー307
の出力とキャリー信号C1とはAND回路337に入力
され、このAND回路337の出力とフル・アダー30
9の出力とが入力される排他的論理和回路345の出力
が、出力Z4となる。
【0052】アダー307及び309の出力はAND回
路339に入力される。このAND回路339の出力と
キャリー信号C1とはAND回路341に入力され、こ
のAND回路341の出力とフル・アダー309のキャ
リーとが入力されるOR回路343にて、第2クラスま
でのキャリー信号C2が生成される。このキャリー信号
C2は、第3クラスに伝搬される。
【0053】第3クラスは、2つのセットを含む。第1
セットは、ハーフ・アダー311とフル・アダー313
とを含み、これらはリプル・アダーを構成する。第2セ
ットは、ハーフ・アダー315とフル・アダー317と
を含み、これらはリプル・アダーを構成する。
【0054】キャリー信号C2とハーフ・アダー311
の出力とが入力される排他的論理回路347の出力は、
出力Z5である。また、ハーフ・アダー311の出力と
キャリー信号C2は、AND回路349に入力され、こ
のAND回路349の出力とフル・アダー313の出力
とが入力される排他的論理和回路351の出力は、出力
Z6である。
【0055】アダー311及び313の出力はAND回
路353に入力され、このAND回路353の出力と、
フル・アダー313のキャリーは、第2セットに伝搬さ
れる。
【0056】第1クラスから第3クラスの第1セットま
でのキャリーを生成するために、AND回路353の出
力とキャリー信号C2とが入力されるAND回路355
と、このAND回路355の出力とフル・アダー313
の出力と入力されるOR回路357が設けられる。この
OR回路357の出力と、ハーフ・アダー315の出力
は、排他的論理和回路359に入力され、この回路35
9の出力は出力Z7となる。また、OR回路357の出
力とハーフ・アダー315の出力とはAND回路361
に入力され、このAND回路361の出力とフル・アダ
ー317の出力とが入力される排他的論理和回路363
の出力は、出力Z8となる。
【0057】アダー315及び317の出力はAND回
路365に入力される。この第3クラス内での第2セッ
トまでのキャリーを生成するために、AND回路365
の出力とフル・アダー313のキャリーとが入力される
AND回路371、このAND回路371の出力とフル
・アダー317の出力とが入力されるOR回路373が
設けられる。また、第3クラスに存在する全てのアダー
の出力が共に1であるか否かを示す信号を生成するた
め、AND回路353の出力とAND回路365の出力
とを入力とするAND回路367が設けられる。そし
て、第3クラスまでのキャリー信号C3を生成するため
に、キャリー信号C2とこのAND回路367の出力と
が入力されるAND回路369と、このAND回路36
9の出力とOR回路373の出力とが入力されるOR回
路375が設けられる。このOR回路375の出力が、
第3クラスのキャリー信号C3である。キャリー信号C3
は第4クラスに伝搬される。
【0058】ここまでは、2段キャリー・スキップ回路
の第3グループまでと同様である。
【0059】次に、第4クラスについて説明する。この
第4クラスは、2つのグループを有している。そして、
各グループは2つのセットを有している。第1グループ
の第1セットは、ハーフ・アダー319及びフル・アダ
ー321を含み、これらはリプル・アダーを構成する。
また、第1グループの第2セットは、ハーフ・アダー3
23及びフル・アダー325を含み、これらはリプル・
アダーを構成する。第2グループの第1セットは、ハー
フ・アダー327及びフル・アダー329を含み、これ
らはリプル・アダーを構成する。第2グループの第2セ
ットは、ハーフ・アダー331及びフル・アダー333
とを含み、これらはリプル・アダーを構成する。
【0060】ハーフ・アダー319の出力とキャリー信
号C3は、排他的論理和回路377に入力され、この回
路377の出力が出力Z9である。また、キャリー信号
C3とハーフ・アダー319の出力は、AND回路37
9に入力され、このAND回路379の出力とフル・ア
ダー321の出力とが入力される排他的論理和回路38
1の出力は、出力Z10である。アダー319及び321
の出力は、AND回路383に入力される。このAND
回路383の出力と、フル・アダー321のキャリー
は、第2セットに伝搬される。
【0061】第1クラスから第4クラスのこの第1セッ
トまでのキャリーを生成するため、AND回路383の
出力及びキャリー信号C3とが入力されるAND回路3
85と、このAND回路385の出力とフル・アダー3
21の出力とが入力されるOR回路387とが設けられ
る。このOR回路387の出力は、ハーフ・アダー32
3の出力と共に排他的論理和回路389に入力され、こ
の回路389の出力は出力Z11である。また、OR回路
387の出力とハーフ・アダー323の出力はAND回
路391に入力され、このAND回路391の出力とフ
ル・アダー325の出力とが入力される排他的論理和回
路393の出力は出力Z12である。
【0062】第2セット内のアダー323及び325の
出力が共に1であるか否か表す信号を生成するため、ア
ダー323及び325の出力が入力されるAND回路3
95が設けられる。また、第2セットまで、すなわち、
第1グループまでのキャリーを生成するために、このA
ND回路395の出力と第1セットのフル・アダー32
1のキャリーとが入力されるADN回路399と、この
AND回路399の出力とフル・アダー325の出力と
が入力されたOR回路401が設けられる。この第1グ
ループのキャリーは第2グループに伝搬される。さら
に、AND回路383の出力とAND回路395の出力
とが入力されたAND回路397の出力も、第2グルー
プに伝搬される。このAND回路397の出力は、第1
グループ内の全てのアダーが共に1を出力しているか否
かを示す信号である。
【0063】第1クラスから第4クラスの第1グループ
までのキャリーを生成するために、AND回路397の
出力とキャリー信号C3が入力されるAND回路403
と、このAND回路403の出力とOR回路401の出
力とが入力されるOR回路405が設けられる。このO
R回路405の出力は、ハーフ・アダー327の出力と
共に、排他的論理和回路407に出力され、この回路4
07の出力は出力Z13となる。また、OR回路405の
出力と、ハーフ・アダー327の出力はAND回路40
9に入力され、このAND回路409の出力とフル・ア
ダー329の出力とが入力される排他的論理和回路41
1の出力が、出力Z14となる。
【0064】第2グループの第1セットのアダー327
及び329の出力はAND回路413に入力される。こ
のAND回路413の出力と、フル・アダー329の出
力は、第2グループの第2セットに伝搬される。そし
て、第4クラス内における第2グループの第1セットま
でのキャリーを生成するため、AND回路413の出力
とOR回路401の出力とが入力されるAND回路41
9と、このAND回路419の出力とフル・アダー32
9の出力とが入力されるOR回路423が設けられる。
【0065】さらに、第1クラスから第4クラスの第2
グループの第1セットまでのキャリーを生成するため
に、AND回路397の出力とAND回路413の出力
とが入力されるAND回路415と、このAND回路4
15の出力とキャリー信号C3とが入力されるAND回
路417と、このAND回路417の出力とOR回路4
23の出力とが入力されるOR回路421が設けられ
る。
【0066】OR回路421の出力とハーフ・アダー3
31の出力とが排他的論理和回路425に入力され、こ
の回路425の出力が出力Z15となる。また、OR回路
421の出力とハーフ・アダー331の出力とはAND
回路427に入力される。このAND回路427の出力
とフル・アダー333の出力とが排他的論理和回路42
9に入力され、この回路429の出力が出力Z16とな
る。
【0067】第2グループ第2セットのアダーの出力が
共に1であるか否か示す信号を作成するために、アダー
331及び333の出力はAND回路431に入力され
る。そして、第2グループにおけるキャリーを生成する
ために、AND回路431の出力とフル・アダー329
のキャリーとが入力されるAND回路435と、このA
ND回路435の出力とフル・アダー333のキャリー
が入力されるOR回路437が設けられる。
【0068】さらに、第1グループ及び第2グループを
合わせたキャリーを生成するために、AND回路413
の出力とAND回路431の出力とが入力されるAND
回路433と、このAND回路433の出力とOR回路
401の出力とが入力されるAND回路441と、この
AND回路441の出力とOR回路437の出力とが入
力されるOR回路443が設けられる。
【0069】さらに、第4クラスまでの全体のキャリー
信号C4を生成するために、AND回路397の出力と
AND回路433の出力とが入力されるAND回路43
9と、このAND回路439の出力とキャリー信号C3
とが入力されるAND回路445と、このAND回路4
45の出力及びOR回路443の出力が入力されるOR
回路447が設けられる。
【0070】図4には図3の続きの回路であって、第5
クラスが示されている。この第5クラスは、3つのグル
ープを有している。第1グループは、2つのセットを、
第2グループは2つのセットを、第3グループは3つの
セットを有している。第1グループの第1セットは、ハ
ーフ・アダー451及びフル・アダー453を含み、こ
れらはリプル・アダーを構成する。第1グループの第2
セットは、ハーフ・アダー455及びフル・アダー45
7を含み、これらはリプル・アダーを構成する。第2グ
ループの第1セットは、ハーフ・アダー459及びフル
・アダー461を含み、これらはリプル・アダーを構成
する。第2グループの第2セットは、ハーフ・アダー4
63及びフル・アダー465を含み、これらはリプル・
アダーを構成する。第3グループの第1セットは、ハー
フ・アダー467及びフル・アダー469を含み、これ
らはリプル・アダーを構成する。第3グループの第2セ
ットは、ハーフ・アダー471及びフル・アダー473
を含み、これらはリプル・アダーを構成する。第3グル
ープの第3セットは、ハーフ・アダー475とフル・ア
ダー477及び479を含み、これらはリプル・アダー
を構成する。
【0071】第4クラスから伝達されてくるキャリー信
号C4とハーフ・アダー451の出力とは排他的論理和
回路483に入力され、この回路483の出力が出力Z
17となる。また、キャリー信号C4とハーフ・アダー4
51の出力はAND回路481に入力され、このAND
回路481の出力とフル・アダー453の出力とが入力
される排他的論理和回路485の出力は出力Z18とな
る。
【0072】第1セットのアダー451及び453の出
力は、AND回路481に入力される。このAND回路
481の出力と、フル・アダー453のキャリーは、第
2セットに伝搬される。また、第1クラスからこのクラ
スの第1グループの第1セットまでのキャリーを生成す
るために、AND回路481の出力とキャリー信号C4
の出力とが入力されるAND回路489と、このAND
回路489の出力とフル・アダー453のキャリーとが
入力されるOR回路491が設けられる。
【0073】OR回路491の出力は、ハーフ・アダー
455の出力と共に、排他的論理和回路493に入力さ
れ、この排他的論理和回路493の出力は出力Z19であ
る。また、OR回路491の出力とハーフ・アダー45
5の出力は、AND回路495に入力される。このAN
D回路495の出力とフル・アダー457の出力とが排
他的論理和回路497に入力され、この回路497の出
力が出力Z20となる。
【0074】第2セットのアダー455及び457の出
力は、AND回路503に入力される。第1グループに
おけるキャリーを生成するために、AND回路503の
出力とフル・アダー453の出力とが入力されるAND
回路507と、このAND回路507の出力とフル・ア
ダー457のキャリーが入力されるOR回路509とが
設けられる。また、第1グループの全てのアダーの出力
が共に1であるか否かを示す信号を生成するため、AN
D回路481の出力とAND回路503の出力とが入力
されるAND回路505が設けられる。このAND回路
505の出力とOR回路509の出力が第2グループに
伝搬される。
【0075】第1クラスからこのクラスの第1グループ
までのキャリーを生成するために、キャリー信号C4と
AND回路505の出力とが入力されるAND回路49
9と、このAND回路499の出力とOR回路509の
出力が入力されるOR回路501とが設けられる。この
OR回路501の出力は、ハーフ・アダー459の出力
と共に、排他的論理和回路511に入力され、この回路
511の出力が出力Z21となる。また、OR回路501
の出力とハーフ・アダー459の出力とがAND回路5
13に入力される。このAND回路513の出力とフル
・アダー461の出力とが排他的論理和回路515に入
力され、この回路515の出力が出力Z22となる。
【0076】第2グループの第1セットのアダー459
及び461の出力はAND回路517に入力される。こ
のAND回路517とフル・アダー461のキャリー
は、共に第2グループの第2セットに伝搬される。
【0077】また、第5クラス内の第2グループの第1
セットまでのキャリーを生成するために、OR回路50
9の出力とAND回路517の出力とが入力されるAN
D回路525と、フル・アダー461のキャリーとAN
D回路525の出力とが入力されるOR回路527が設
けられる。さらに、全体として、第5クラスの第2グル
ープの第1セットまでのキャリーを生成するために、A
ND回路505の出力とAND回路517の出力とが入
力されるAND回路519と、キャリー信号C4とAN
D回路519の出力とが入力されるAND回路521
と、このAND回路521の出力とOR回路527の出
力とが入力されるOR回路523とが設けられる。
【0078】このOR回路523の出力は、ハーフ・ア
ダー463の出力と共に、排他的論理和回路529に入
力され、この回路529の出力は出力Z23である。ま
た、OR回路523の出力とハーフ・アダー463の出
力はAND回路531に入力される。このAND回路5
31の出力とフル・アダー465の出力は排他的論理和
回路533に入力され、この回路533の出力は出力Z
24である。
【0079】第2グループ第2セットのアダー463及
び465の出力はAND回路535に入力される。第2
グループとしてのキャリーを生成するために、AND回
路535の出力とフル・アダー461の出力とが入力さ
れるAND回路541と、このAND回路541の出力
とフル・アダー465のキャリーとが入力されるOR回
路545とが設けられる。
【0080】さらに、第1グループ及び第2グループに
ついてのキャリーを生成するために、AND回路517
の出力及びAND回路535の出力が入力されるAND
回路537と、このAND回路537の出力と第1グル
ープから伝搬されるキャリーであるOR回路509の出
力とが入力されるAND回路543と、このAND回路
543の出力とOR回路545の出力とが入力されるO
R回路547とが設けられる。AND回路537の出力
と、第1グループから伝搬されるAND回路505の出
力とはAND回路539に入力される。このAND回路
539の出力とOR回路547の出力は第3グループに
伝搬される。
【0081】また、全体として第5クラスの第2グルー
プまでのキャリーを生成するために、AND回路539
の出力とキャリー信号C4とが入力されるAND回路5
49と、このAND回路549の出力とOR回路547
の出力とが入力されるOR回路551とが設けられる。
【0082】このOR回路551の出力は、ハーフ・ア
ダー467の出力と共に、排他的論理和回路553に入
力される。この回路553の出力は出力Z25である。O
R回路551の出力とハーフ・アダー467の出力とは
AND回路555に入力される。このAND回路555
の出力とフル・アダー469の出力は排他的論理和回路
557に入力され、この回路557の出力は出力Z26で
ある。
【0083】第3グループの第1セットのアダー467
及び469の出力はAND回路559に入力される。こ
のAND回路559の出力及びフル・アダー469のキ
ャリーは第2セットに伝搬される。また、第5クラス内
において第3グループの第1セットまでのキャリーを生
成するために、AND回路559の出力とOR回路54
7の出力とが入力されるAND回路565と、このAN
D回路565の出力とフル・アダー469のキャリーと
が入力されるOR回路567とが設けられる。
【0084】さらに、全体として第5クラスの第3グル
ープの第1セットまでのキャリーを生成するために、A
ND回路539の出力とAND回路559の出力とが入
力されるAND回路561と、このAND回路561の
出力とキャリー信号C4とが入力されるAND回路56
3と、このAND回路563の出力とOR回路567の
出力とが入力されるOR回路569が設けられる。
【0085】また、OR回路569の出力とハーフ・ア
ダー471の出力とは排他的論理和回路571に出力さ
れ、この回路571の出力は出力Z27である。また、O
R回路569の出力とハーフ・アダー471の出力はA
ND回路573に入力される。このAND回路573の
出力とフル・アダー473の出力とが排他的論理和回路
575に入力され、この回路575の出力は出力Z28で
ある。
【0086】第3グループの第2セットのアダー471
及び473の出力はAND回路577に入力される。こ
の第3グループの第2セットまでのキャリーを生成する
ために、AND回路577の出力とフル・アダー469
のキャリーとが入力されるAND回路581と、このA
ND回路581の出力とフル・アダー473のキャリー
とが入力されるOR回路583とが設けられる。さら
に、第5クラス内でこの第3グループの第2セットまで
のキャリーを生成するために、AND回路559の出力
及びAND回路577の出力とが入力されるAND回路
579と、このAND回路579の出力と第2グループ
から伝搬されるキャリーであるOR回路547の出力と
が入力されるAND回路587と、このAND回路58
7の出力とOR回路583の出力とが入力されるOR回
路589とが設けられる。
【0087】さらに、全体として第3グループの第2セ
ットまでのキャリーを生成するために、第2グループか
ら伝搬されるAND回路539の出力とAND回路57
9の出力とが入力されるAND回路585と、このAN
D回路585の出力とキャリー信号C4とが入力される
AND回路591と、このAND回路591の出力とO
R回路589の出力とが入力されるOR回路593とが
設けられる。
【0088】このOR回路593の出力は、ハーフ・ア
ダー475の出力と共に、排他的論理和回路595に入
力され、この回路595の出力は出力Z29である。ま
た、OR回路593の出力とハーフ・アダー475の出
力とは、AND回路597に入力される。そして、AN
D回路597の出力とフル・アダー477の出力は排他
的論理和回路599に入力され、この回路599の出力
は出力Z30となる。アダー475及び477の出力はA
ND回路601に入力される。このAND回路601の
出力とOR回路593の出力とがAND回路603に入
力される。このAND回路603の出力とフル・アダー
479の出力とが排他的論理和回路605に入力され、
この回路605の出力が出力Z31となる。
【0089】第3グループの第3セットの全てのアダー
が共に1を出力しているか否か示す信号を作成するため
に、AND回路601の出力とフル・アダー479の出
力とが入力されるAND回路607が設けられる。そし
て、第3グループにおけるキャリーを生成するために、
AND回路607の出力と第2セットから伝搬されてく
るキャリーであるOR回路583の出力とが入力される
AND回路611と、このAND回路611の出力とフ
ル・アダー479のキャリーとが入力されるOR回路6
13とが設けられる。
【0090】さらに、第5クラスとしてのキャリーを生
成するために、AND回路579の出力とAND回路6
07の出力とが入力されるAND回路609と、このA
ND回路609の出力と第2グループから伝搬されるキ
ャリーであるOR回路547の出力とが入力されるAN
D回路617と、このAND回路617の出力とOR回
路613の出力とが入力されるOR回路619とが設け
られる。
【0091】また、全体として第5クラスまでのキャリ
ー信号C5を生成するために、AND回路539の出力
とAND回路609の出力とが入力されるAND回路6
15と、このAND回路615の出力とキャリー信号C
4とが入力されるAND回路621と、このAND回路
621の出力とOR回路619の出力とが入力されるO
R回路623とが設けられる。
【0092】以上は32ビット分の回路であるが、先に
示した分割方法に従って、図4以下の回路を構成するこ
とができる。
【0093】図3及び図4の回路では、フル・アダー3
01及び他のハーフ・アダーは、前のキャリーを見ずに
加算の実行を開始する。そして、第1及び第2クラス、
及び第3クラス以降の各セットにおいてリプル・キャリ
ー方式で加算を実行する。後は、排他的論理和、AND
及びOR回路それぞれの処理を実施すると、出力が生成
される。
【0094】図3及び図4で注意すべき点は、あるセッ
トのキャリー信号C1と、あるセットの1つ前のセット
に関連するキャリーC0と、当該セット内の全てのアダ
ーの出力が共に1であるか否かを示す信号F1とが用意
され、これらに対してC2=C1+F1・C0なる信号
を生成するAND回路とOR回路が存在することであ
る。また、あるセットより2以上下位のセットからこの
2以上下位のセットに関連するキャリー信号Cが当該あ
るセットに伝達されている場合には、この2以上下位の
セットより上位で当該あるセットまでの各セットに含ま
れるアダーの出力が共に1であるか否かを示す信号F2
と、キャリー信号Cと、先に述べた信号C2とから、C
3=C2+F2・Cなる信号を生成するAND回路とO
R回路が存在することである。さらに、3本目のスキッ
プされたキャリー信号が存在するため、あるセットより
2以上下位のセットからこの2以上下位のセットに関連
するキャリー信号Cが当該あるセットに伝達されている
場合には、この2以上下位のセットより上位で当該ある
セットまでの各セットに含まれるアダーの出力が共に1
であるか否かを示す信号F2と、キャリー信号Cと、先
に述べた信号C3とから、C4=C3+F2・Cなる信
号を生成するAND回路とOR回路が存在することであ
る。
【0095】図3及び図4は正論理にて記述している
が、負論理で記述することも可能である。その際にはA
NDやOR回路は、NANDやNOR回路となる。よっ
て、図3及び図4どおりの回路でなくとも、実質的に同
様の処理を実施することができる。また、その際には上
記数式も変形されるが、実質的に同一の処理を行うもの
であればよい。
【0096】このような三段キャリー・スキップ・アダ
ーでは、ビット数Nについて、N≦n(n+1)(n+
2)(n+3)/24+n(n+1)/2+2n+5な
るnについて、ゲート・ディレイはn+7となる。10
24ビットであればゲート・ディレイは18となる。2
048ビットではゲート・ディレイは21となる。
【0097】nとNの関係を以下に示す。
【0098】C.四段キャリー・スキップ・アダー 以上述べた事項の延長としてキャリー・スキップを4重
にかけることもできる。この場合のリプル・アダーの分
割方法は以下のとおりである。
【0099】 3 −− 2 −−− 2,2 −−−− 2,2 2,2 2,2 2,2 −−−−− 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 −−−−−−−− 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2,3 2,2,3,4 −−−−−−−−− 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2,3 2,2,3,4 2,2 2,2 2,2,3 2,2,3,4 2,2,3,4,5 −−−−−−−−−−−
【0100】横線で一番上位のクラスの区分けがなさ
れ、次にそのクラスのなかで空行が入れられたところで
二番目に上位のクラスの区分けがなされる。そして、2
番目に上位のクラスの中で各行が三番目のクラスの区分
けであり、各数字が最下位のクラスの区分けである。数
字は、リプル・アダーに含まれるアダーの数を示す。
【0101】この場合、ビット数NについてN≦n(n
+1)(n+2)(n+3)(n+4)/120+n
(n+1)(n+2)/6+n(n+1)+5n+7な
るnについて、ゲート・ディレイは(n+9)となる。
よって、1024ビットの場合には17で、2048ビ
ットの場合には19となる。以下、nとNの関係を示
す。
【0102】D.五段キャリー・スキップ・アダー キャリー・スキップを5重にかけた場合の分割法を以下
に示す。 3 −− 2 −−− 2,2 −−−− 2,2 2,2 2,2 2,2 −−−−− 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 −−−−−−−− 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2,3 2,2,3,4 −−−−−−−−− 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2,3 2,2,3,4 2,2 2,2 2,2 2,2 2,2 2,2 2,2,3 2,2 2,2 2,2 2,2 2,2,3 2,2,3,4 2,2 2,2 2,2,3,4 2,2,3,4,5 −−−−−−−−−−−
【0103】この場合、ビット数Nについて、 N≦n(n+1)(n+2)(n+3)(n+4)(n
+5)/720+n(n+1)(n+2)(n+3)/
24+n(n+1)(n+2)/3+5n(n+1)/
2+7n+9 なるnについて、ゲート・ディレイはn+11となる。
1024ビットの場合にはゲート・ディレイは18にな
り、2048ビットの場合には19となる。以下、nと
Nの関係について示す。
【0104】これ以上の段数のキャリー・スキップを実
施することも可能であるが、回路サイズは大きくなり、
現実的ではない。また、1024ビットのレベルでは4
段が最高速であるが、回路サイズとパフォーマンスとの
トレード・オフで段数を決定すべきである。
【0105】理論的考察 一般にビット数をNとして、キャリー・スキップの深さ
をxとすると、 N≦n(n+1)・・(n+x)/((x+1)!) (1) なるnを求めて(n+2x+1)がゲート・ディレイに
なる。実際にはNとnとの関係には次数の低い補正項が
入っているが、本願発明で問題にするような長大なバイ
ナリ・アダーについては第1項が優勢であり、この近似
により式を解くことができる。xの値をいろいろ変えて
いくと、ゲート・ディレイを最小にするxが存在する。
一般的には、Nが決まればゲート・ディレイを最小にす
るxとnを一義的に決めることができる。この関係は次
のように求めることができる。
【0106】すなわち、ゲート・ディレイをdとする
と、d=n+2x+1より, n=d−2x−1 となる。最適曲線上ではxをx+1に変更しても、dの
値が一定になるところが存在する。これはキャリー・ス
キップをかけた場合のNとディレイの関係をグラフにし
た場合、2つの曲線が交わるところがある事から分かる
(図5参照)。
【0107】xとx+1の場合、式(1)は、以下のよ
うになる。但し、xの時のNをN1、x+1の時のNを
N2とする。
【数1】 先に述べた交点では、N1とN2とは等しいので、
【数2】 となる。数2をdについて解くと、 d2−(5x+7)d+(5x2+13x+8)=0 これをさらに解くと、以下のようになる。但し、正の値
を解としている。
【数3】 これにより、
【数4】 となる。
【0108】これがキャリー・スキップをした時の、キ
ャリー・スキップの深さとその時の最適なnの関係とな
る。このnを式(1)に入力して、バイナリ・アダーの
長さNをN=f(x)とすることができる。以下、x,
n,Nの関係について示す。 x n N 0 4 4 1 6 22 2 7 94 3 9 563 4 11 3483 5 12 14952
【0109】このようにして、4ビットまではバイナリ
・アダーはキャリー・スキップなし、8ビット、16ビ
ットのバイナリ・アダーは1段のキャリー・スキップ
が、32ビット、64ビットのバイナリ・アダーには2
段のキャリー・スキップが、128ビット、256ビッ
トのバイナリ・アダーには3段のキャリー・スキップ
が、1024ビット、2048ビットのバイナリ・アダ
ーには4段のキャリー・スキップが最速であることがわ
かる。
【0110】以上は、アダーについてのみ記載したが、
ワラス・ツリー(Wallace Tree)と上述のキャリー・ス
キップ・アダーを変形したものの組み合わせによりマル
チプライアを作成することも可能である。ワラス・ツリ
ー部分は、出力の項数列を、ある決まったパターンにす
る。また、キャリー・スキップ・アダーは、ワラス・ツ
リーの出力を最小のディレイで加算するもので、このア
ダー自体が3つの部分に分けられる。以下、各部分につ
いて説明する。
【0111】(a)ワラス・ツリーの出力項数列 nビットのマルチプライアで2つのnビット入力の最大
値は2n−1なので、これを2つ掛けたものがマルチプ
ライアの取り得る値の最大値となる。この最大値は、 (2n−1)×(2n−1)=22n−2n+1+1 である。これを変形すると、以下のようになる。 22n−2n+1+1=(22n-1−1)+(22n-1−2n+1
2)+4 この計算結果は、以下のように解釈される。すなわち、
第1項は、(2n−1)ビットのすべてのビットが'1'
になったものである。これは図6(a)のような状態で
ある。一方、第2項は、LSBから(n+2)番目のビ
ットが'0'であり、さらにLSBが0となっている。よ
って、図6(b)のような状態である。第3項は4なの
で、図6(c)のような状態である。これらを加える
と、図6(d)のような項数列が求められる。これが、
本発明における指定の項数列である。以下、この項数列
をWnと呼ぶ。
【0112】マルチプライアを作る時には、まず二進数
である乗数及び被乗数の全てのビット組み合わせに対す
る積項を作成し、位を揃えて並べる。この積項の並べ方
は、1,2,3,4,・・・・n−1,n,n−1,n
−2,・・・・3,2,1というように自然数が単調増
加してnになった後、単調減少するように並べる。これ
にフル・アダーを作用させていくと、同位になるビット
数は1/3の等比級数で減り、出力と同じ数のキャリー
がMSB側にひとつずれて現れる。このようにして全体
としてはMSB側に少しずれながら、積項のシンメトリ
ックな三角山はフル・アダーを介すごとに平に押しつぶ
されるような形で、Wnの項数列になる。Wnを得るため
にワラス・ツリーを以下のような手順で作成する。
【0113】(1)項数が3、2、1である最下位には
手を付けない。 (2)項数が3以上で3x+a(a=0,1,2)と書
くことができる時、これにx個のフル・アダーを接続
し、その桁の項数をx+a個に減らし、またその際に発
生したx個のキャリーを上位の桁に渡す。 (3)フル・アダーの必要が無くなれば終了し、それ以
外の場合には(2)に戻る。
【0114】(b)アダー部分の分割 このようにして作られたワラス・ツリーの出力Wnは、
LSBからMSBまでを3分割し、それぞれの部分につ
いて別の方式の回路で加算する。第1アダー部分は、L
SBから2つ目までで、項数は1及び2である。第2ア
ダー部分は、LSBから3番目の項からn+2番目の項
までで、最上位の項数は1、最下位の項数は3である。
第3アダー部分は、LSBからn+3番目の項から2n
−1番目項までである。以下、第1乃至第3アダーにつ
いて説明する。
【0115】(b1)第1アダー 第1アダーのLSBは、項数1だから、そのまま出力す
る。また、第2項は恒数2なので、ハーフ・アダーで加
算して、キャリーを第2アダーに送る。
【0116】(b2)第2アダー 先に述べた多重キャリー・スキップ・アダーは、まずキ
ャリーを考慮しないで加算をし、加算が終わった後でキ
ャリーが発生すれば+1の補正をするという計算をリカ
ーシブに、多重の数だけ繰り返すというものである。項
数が2以下ならば、補正は+1するか否かなので、+1
の補正回路(1−インクリメンタ)は1セットあればよ
い。なぜなら、項数2の加算の最大値は加算する2つの
数の全ビット(nビット)が'1'になっている場合だ
が、これらを加算した値の最大値は、 (2n−1)+(2n−1)+carry=2n+1−2+carry となり、これは2n+1より小さいので、最終的なキャリ
ーはたかだか1本しか発生しない。すなわち、ローカル
なリプル・アダーで発生したキャリーと、スキップして
きたキャリーは排他的にしか1にならないことがわか
る。但し、+1の補正回路を起動する条件だけは多重の
分だけ複雑になる。
【0117】この第2アダーの場合、最下位が項数3な
ので、最大値を計算してみると、 (2n−1)+(2n−1)+carry1+carry2=2n+1−2+c
arry1+carry2 となり、ローカルなリプル・アダーで発生したキャリー
に加えてスキップしてきたキャリーも'1'になる可能性
がある。すなわち、2つのキャリーは独立して発生す
る。このためアダーのブロックの切れ目では2つのキャ
リーはOR条件でなく、本当に加算する必要がある。具
体的には、リプル・アダーのブロックの最上位で、自分
が発したキャリーと、下位からスキップしてきたキャリ
ーと、次段のアダーのLSBとをフル・アダーで加算
し、このフル・アダーのキャリーで+1の補正回路を起
動する。このためリプル・アダーのブロック間でのディ
レイの成長は2になる。
【0118】この補正回路を説明するために、第1アダ
ーと第2アダーの最初のリプル・アダーのブロックを図
7に示す。第1アダー部分は、最下位項のライン734
と、ハーフ・アダーであるAND回路702及び排他的
論理和回路700とで構成される。このハーブ・アダー
のキャリーが第2アダーの最初のリプル・アダーに伝搬
される。第2アダーのLSBは項数3であり、このワラ
ス・ツリーからの入力が、フル・アダー704に接続さ
れる。このフル・アダー704の出力と、第1アダーの
ハーフ・アダーのキャリーとは排他的論理和回路720
に入力され、この排他的論理和回路720の出力が第3
ビットの出力となる。第2アダーの次の入力は項数2で
あり、この入力は、フル・アダー704のキャリーと共
に、フル・アダー706に入力される。フル・アダー7
04の出力と第1アダーのハーフ・アダーの出力はAN
D回路714に入力され、このAND回路714の出力
と、このフル・アダー706の出力は排他的論理和回路
722に入力される。この排他的論理和回路722の出
力が、第4ビットの出力になる。第2アダーの第3項目
の入力は項数2であり、この入力及びフル・アダー70
6のキャリーがフル・アダー708に入力される。フル
・アダー704とフル・アダー706の出力はAND回
路710に入力され、このAND回路710の出力及び
第1アダーのハーフ・アダーのキャリーとはAND回路
716に入力される。このAND回路716の出力は、
フル・アダー708の出力と共に排他的論理和回路72
4に入力され、この排他的論理和回路724の出力が第
5ビットの出力になる。さらに、AND回路710の出
力とフル・アダー708の出力はAND回路712に入
力される。このAND回路712の出力は、第1アダー
のハーフ・アダーのキャリーと共にAND回路718に
入力される。
【0119】一方、第2アダーの4項目の入力は項数2
であり、リプル・アダーの第2のブロックであるので、
前のフル・アダーからのキャリーは存在しない。よっ
て、この第2アダーの4項目の入力はハーフ・アダー7
28に入力される。このハーフ・アダー728の出力
は、フル・アダー708のキャリーとAND回路718
の出力と共に、フル・アダー726に出力される。この
フル・アダー726の出力が第6ビットの出力となり、
キャリーがこのリプル・アダーの第2のブロックに伝搬
される。第2アダーの5項目の入力は項数2であり、ハ
ーフ・アダー728のキャリーと共にフル・アダー73
0に入力される。このフル・アダー730の出力とフル
・アダー726のキャリーとは、排他的論理和回路73
2に入力され、この回路732の出力が第7ビットの出
力となる。このように、次のリプル・アダーのブロック
に伝搬されるキャリーは、フル・アダー726で生成さ
れる。
【0120】先に述べたように、リプル・アダーのブロ
ック間でディレイが2発生するため、それに合わせて次
のブロックのリプル・アダーのディレイは前段より2づ
つ多くなるように構成される。2キャリー・1スキップ
・アダーであれば、リプル・アダーのブロック・サイズ
は、次のようになる。 2,2,4,6,8,10,12.... 2キャリー・2スキップ・アダーであれば、 2,2 2,2,3,4 2,2,3,4,5,6 2,2,3,4,5,6,7,8 というようになる。なお、2キャリー・多スキップ・ア
ダーの場合、一番外側のスキップについてはフル・アダ
ーによって生成されたキャリーを次段のリプル・キャリ
ーに伝搬するが、その他の内側のスキップについては、
最初に述べた例と同じで、キャリーはOR回路を含む回
路(C2=C1+F1・C0などで表される回路)にて
作成される。
【0121】(b3)第3アダー この第2アダーの最上位ビットの入力は項数1であった
ので、第3アダーは最初に説明した1キャリー・多重ス
キップ・アダーで問題ない。
【0122】以上のようにすると、ワラス・ツリーの入
力のLSBから入力項数が増加していって、ワラス・ツ
リーによるディレイが多くなってしまう部分は第1及び
第2アダーで、ワラス・ツリーの入力の項数が減少して
いって、ワラス・ツリーによるディレイが減少する部分
は、よりディレイの少ない第3アダーにより対応するこ
とにより、より高速なマルチプライアが構成される。お
おまかなマルチプライアの構成を図8に示す。
【0123】
【効果】スキップするキャリーを2段以上にし、より高
速な動作速度を可能とするバイナリ・アダーを提供する
ことができた。
【0124】高速なマルチプライアも提供することがで
きた。
【図面の簡単な説明】
【図1】2段のキャリー・スキップの回路図である。
【図2】2段のキャリー・スキップの回路図である。
【図3】3段のキャリー・スキップの回路図である。
【図4】3段のキャリー・スキップの回路図である。
【図5】ゲート・ディレイとビット数の関係を示した図
である。
【図6】ワラス・ツリーの出力項数を説明するための図
である。
【図7】本発明のマルチプライア中の第1アダー及び第
2アダーの下位の部分を示す回路図である。
【図8】本発明のマルチプライアのブロック図である。
【符号の説明】
1 フル・アダー 7 ハーフ・アダー
───────────────────────────────────────────────────── フロントページの続き (72)発明者 佐藤 証 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 (72)発明者 宗藤 誠治 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】複数のリプル・アダーを有するN段(Nは
    3以上の整数)キャリー・スキップ・アダーであって、 前記複数のリプル・アダーのうち少なくとも一部のリプ
    ル・アダーはグループ分けされており、 キャリー信号はあるグループから1つ上位のグループへ
    伝達されており、 前記グループ内に複数のリプル・アダーが存在する場合
    には、当該グループ内のリプル・アダー間でもキャリー
    信号が伝達されており、 前記あるグループから前記1つ上位のグループへのキャ
    リー信号C1と、前記1つ上位のグループ内の全アダー
    の出力が1であるか否かを表す信号Fと、前記1つ上位
    のグループ内において最も上位のリプル・アダーに関連
    するキャリー信号C2とを用いて、C=C2+F・C1
    を計算する回路を有し、 前記グループ内に3以上のリプル・アダーが存在する場
    合には、当該グループ内の複数のリプル・アダーはN−
    2段階のレベルでさらにグループ化されており、 前記最も上位のリプル・アダーが属する、最下段である
    レベル1のグループ内におけるリプル・アダー間で前記
    最も上位のリプル・アダーに伝達されてきたキャリー信
    号C30と、前記最も上位のリプル・アダーが属する、
    レベルnのグループに、前記レベルnの隣接するグルー
    プから伝達されてきたキャリー信号C3 n(1≦n≦N
    −2)と、前記最も上位のリプル・アダーのキャリー信
    号C4と、前記最も上位のリプル・アダーの全アダーの
    出力が1であるか否かを表す信号F20と、前記キャリ
    ー信号C3nを出力している回路に関連するリプル・ア
    ダーより上位で前記最も上位のリプル・アダーまでの全
    アダーの出力が1であるか否かを表す信号F2nとを用
    いて、 C21=C4+F20・C30を計算する回路と、 C2n+1=C2n+F2n・C3n(1≦n≦N−2,C2
    N-1=C2)を計算する回路と、 を有するN段キャリー・スキップ・アダー。
  2. 【請求項2】前記1つ上位のグループに属するリプル・
    アダーの数は、前記あるグループに属するリプル・アダ
    ーの数以上であることを特徴とする請求項1記載のキャ
    リー・スキップ・アダー。
  3. 【請求項3】複数のリプル・アダーを有し、 前記複数のリプル・アダーのうち少なくとも一部のリプ
    ル・アダーはグループ分けされており、 キャリー信号はあるグループから1つ上位のグループへ
    伝達されており、 前記あるグループから前記1つ上位のグループへのキャ
    リー信号C1と、前記1つ上位のグループ内の全アダー
    の出力が1であるか否かを表す信号Fと、前記1つ上位
    のグループ内において最も上位のリプル・アダーに関連
    するキャリー信号C2とを用いて、C=C2+F・C1
    を計算する回路を有し、 前記グループ内に複数のリプル・アダーが存在する場合
    には、当該グループ内の複数のリプル・アダー間でもキ
    ャリー信号が伝達されており、前記最も上位のリプル・
    アダーより1つ下位のリプル・アダーに関連するキャリ
    ー信号C31と、前記最も上位のリプル・アダーのキャ
    リー信号C4と、前記最も上位のリプル・アダーの全ア
    ダーの出力が1であるか否かを表す信号F21とを用い
    て、 C2=C4+F21・C31を計算する回路と、 を有するキャリー・スキップ・アダー。
  4. 【請求項4】前記1つ上位のグループよりさらに1つ上
    位のグループ中の最下位のリプル・アダー内において最
    下位アダーの出力S0と前記Cとの排他的論理和を計算
    する回路と、 前記最下位アダーより1つ上位のアダーの出力S1と、
    前記C及び前記S0の論理積との排他的論理和を計算す
    る回路と、 をさらに有する、請求項3記載のキャリー・スキップ・
    アダー。
  5. 【請求項5】複数のリプル・アダーを有し、 前記複数のリプル・アダーのうち少なくとも一部のリプ
    ル・アダーに含まれる第1リプル・アダーについて、 前記第1リプル・アダーのキャリー信号C1と、前記第
    1リプル・アダー内の全ての出力が1になっているか否
    かを示す信号F1と、前記第1リプル・アダーより1つ
    下位のリプル・アダーに関連するキャリー信号C0が伝
    達されている場合には当該キャリー信号C0とに対し
    て、 C2=C1+F1・C0なる計算を実行する回路を有
    し、 前記第1リプル・アダーから2以上下位のリプル・アダ
    ーである第2リプル・アダーに関連する回路から前記第
    1リプル・アダーに当該第2リプル・アダーに関連する
    キャリー信号Cが伝達される場合には、各前記第1リプ
    ル・アダー及び各キャリー信号Cについて、 前記第2リプル・アダーより上位で前記第1リプル・ア
    ダーまでの全ての出力が1になっているか否かを示す信
    号F2と、前記第1リプル・アダーに関連するキャリー
    信号C2'と前記キャリー信号Cに対して、 C3=C2'+F2・Cなる計算を実行する回路をさら
    に有するキャリー・スキップ・アダー。
  6. 【請求項6】前記第1リプル・アダーに関連して前記C
    3が出力される場合には、 前記第1リプル・アダーから1つ上位の第3リプル・ア
    ダー中最下位アダーの出力S0と前記C3との排他的論
    理和を計算する回路と、 前記最下位アダーより1つ上位のアダーの出力S1と、
    前記C3及び前記S0の論理積との排他的論理和を計算
    する回路と、 をさらに有し、 前記第1リプル・アダーに関連して前記C3が出力され
    ない場合には、 前記第3リプル・アダー中最下位アダーの出力S0と前
    記C2との排他的論理和を計算する回路と、 前記最下位アダーより1つ上位のアダーの出力S1と、
    前記C2及び前記S0の論理積との排他的論理和を計算
    する回路と、 をさらに有する、請求項5記載のキャリー・スキップ・
    アダー。
  7. 【請求項7】前記第3リプル・アダーが3以上のアダー
    から構成される場合には、 前記最下位アダーよりm(m≧3)上位のアダーの出力
    Smと、前記C3及び前記最下位アダーから前記最下位
    アダーよりm−1上位のアダーまでの全出力の論理積と
    の排他的論理和を計算する回路をさらに有する、請求項
    6記載のキャリー・スキップ・アダー。
  8. 【請求項8】複数のリプル・アダーを有し、 前記複数のリプル・アダーのうち少なくとも一部のリプ
    ル・アダーはグループ分けされており、 キャリー信号はあるグループから1つ上位のグループへ
    伝達されており、 前記あるグループから前記1つ上位のグループへのキャ
    リー信号C1と、前記1つ上位のグループ内の全アダー
    の出力が1であるか否かを表す信号Fと、前記1つ上位
    のグループ内において最も上位のリプル・アダーに関連
    するキャリー信号C2とを用いて、C=C2+F・C1
    を計算する回路を有し、 2以上のリプル・アダーを有するグループにおいては、
    当該グループ内の複数のリプル・アダーがさらに複数の
    サブグループに分けられ、キャリー信号はあるサブグル
    ープから1つ上位のサブグループへ伝達されており、 前記あるサブグループから前記1つ上位のサブグループ
    へのキャリー信号C3と、前記1つ上位のサブグループ
    内の全てのアダーの出力が1であるか否かを表す信号F
    1と、前記1つ上位のサブグループ内において最も上位
    のリプル・アダーに関連するキャリー信号C4とを用い
    て、C5=C4+F1・C3を計算する回路を有するキ
    ャリー・スキップ・アダー。
  9. 【請求項9】下位から、3ビットの第1グループ、2ビ
    ットの第2グループ、2ビットのセットと2ビットのセ
    ットからなる第3グループ、第4グループ以降はグルー
    プ番号n−1個のセットを含み(nは4以上の整数)、
    当該グループ内で第1及び第2のセットは2ビット、第
    3のセット以降はセット番号mビットとなるように分け
    られた(mは3以上の整数)、2つのNビットの入力
    と、各々前記2つのNビットの入力のうち同じビット位
    置の2つの入力に接続された、N個のアダーと、 前記第1及び第2グループと各前記セット内で、ある前
    記アダーから次の前記アダーへ、リプル・キャリーを直
    接伝達するラインと、 前記第3グループ以降の各グループ内で、ある前記セッ
    トから次の前記セットへキャリーを伝達するラインと、 前記第2グループ以降の各グループ内で、前の前記グル
    ープからキャリーを伝達するラインと、 伝達されるキャリーと前記アダーの出力とを用いて、加
    算結果を補正する回路と、 を有する二段キャリー・スキップ・アダー。
  10. 【請求項10】下位から、3ビットの第1クラス、2ビ
    ットの第2クラス、2つの2ビットのグループからなる
    第3クラス、2つの2ビットのセットからなる第1のグ
    ループと2つの2ビットのセットからなる第2のグルー
    プとからなる第4クラス、2つの2ビットのセットから
    なる第1のグループと2つの2ビットのセットからなる
    第2のグループと2つの2ビットのセットと3ビットの
    セットを含む第3のグループとからなる第5クラス、第
    6クラス以降は、クラス番号n−2個のグループを有
    し、第1乃至第3のグループは前記第5クラスと同じ
    で、第4のグループ以降は、グループ番号g個のセット
    を有し、前記第4のグループ以降の各グループ内では、
    2ビットの第1セット、第2セット以降は、セット番号
    sビットのセットを含むように分けられた、2つのNビ
    ットの入力と、 各々前記2つのNビットの入力のうち同じビット位置の
    2つの入力に接続された、N個のアダーと、 前記第1及び第2クラスと前記第3クラスの各グループ
    内と各前記セット内で、ある前記アダーから次の前記ア
    ダーへ、リプル・キャリーを直接伝達するラインと、 前記第3クラス以降の各グループ内で、ある前記セット
    から次の前記セットへキャリーを伝達するラインと、 前記第4クラス以降の各クラス内で、ある前記グループ
    から次の前記グループへキャリーを伝達するラインと、 前記第2クラス以降の各クラスで、前の前記クラスから
    キャリーを伝達するラインと、 伝達されるキャリーと前記アダーの出力とを用いて、加
    算結果を補正する回路と、 を有する三段キャリー・スキップ・アダー。
  11. 【請求項11】下位から、3ビットの第1ブロック、2
    ビットの第2ブロック、2ビットのセット2つからなる
    第3ブロック、2ビットのセット2つからなるグループ
    と2ビットのセット2つからなるグループとからなるク
    ラスと、当該クラスの構成と同じ構成のクラスとからな
    る第4ブロック、第5ブロック以降は、ブロック番号b
    −2個のクラスを有し、b−3番目のクラスまでは前の
    ブロックと同様の構成を有しており、b−2番目のクラ
    スの構成は、b−2個のグループを有し、第1グループ
    は2ビットのセット2つ、第2グループは2ビットのセ
    ット2つ、第3グループ以降はグループ番号g個のセッ
    トを有し、2ビットの第1セットと第2セット以降は当
    該セット番号sビットからなるセットとを有するように
    分割された、2つのNビットの入力と、 各々前記2つのNビットの入力のうち同じビット位置の
    2つの入力に接続された、N個のアダーと、 前記第1及び第2ブロックと前記第3ブロック以降の各
    セット内で、ある前記アダーから次の前記アダーへ、リ
    プル・キャリーを直接伝達するラインと、 前記第3ブロック内及び前記第4ブロック以降の各グル
    ープ内で、ある前記セットから次の前記セットへキャリ
    ーを伝達するラインと、 前記第4ブロック以降の各クラス内で、ある前記グルー
    プから次の前記グループへキャリーを伝達するライン
    と、 前記第4ブロック以降の各ブロック内で、ある前記クラ
    スから次の前記クラスへキャリーを伝達するラインと、 前記第2ブロック以降の各ブロック内で、前のブロック
    からキャリーを伝達するラインと、 伝達されるキャリーと前記アダーの出力とを用いて、加
    算結果を補正する回路と、 を有する四段キャリー・スキップ・アダー。
  12. 【請求項12】複数のリプル・アダーを有し、 最下位のアダーの入力が3ビットである、少なくとも一
    部のリプル・アダーについて、 前記最下位のアダーを含むリプル・アダーのキャリー信
    号C1と、当該リプル・アダー内の全ての出力が1にな
    っているか否かを示す信号F1と、前記最下位のアダー
    より1つ下位のアダーに関連するキャリー信号C0が伝
    達されている場合には当該キャリー信号C0と、当該リ
    プル・アダーの1つ上位のリプル・アダーの最下位の出
    力F2とに対して、 実質的にF1・C0とC1とF2を加算する回路を有す
    ることを特徴とするキャリー・スキップ・アダー。
JP10091837A 1997-06-24 1998-04-03 キャリー・スキップ・アダー Pending JPH11143685A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP10091837A JPH11143685A (ja) 1997-06-24 1998-04-03 キャリー・スキップ・アダー
US09/102,532 US6199091B1 (en) 1997-06-24 1998-06-22 Carry skip adder
US09/699,976 US6735612B1 (en) 1997-06-24 2000-10-30 Carry skip adder

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP16729297 1997-06-24
JP9-167292 1997-09-08
JP24309197 1997-09-08
JP9-243091 1997-09-08
JP10091837A JPH11143685A (ja) 1997-06-24 1998-04-03 キャリー・スキップ・アダー

Publications (1)

Publication Number Publication Date
JPH11143685A true JPH11143685A (ja) 1999-05-28

Family

ID=27306855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10091837A Pending JPH11143685A (ja) 1997-06-24 1998-04-03 キャリー・スキップ・アダー

Country Status (2)

Country Link
US (1) US6199091B1 (ja)
JP (1) JPH11143685A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6584484B1 (en) * 2000-05-11 2003-06-24 Agere Systems Inc. Incorporation of split-adder logic within a carry-skip adder without additional propagation delay
US7007059B1 (en) * 2001-07-30 2006-02-28 Cypress Semiconductor Corporation Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization
DE10201449C1 (de) * 2002-01-16 2003-08-14 Infineon Technologies Ag Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
DE10215785A1 (de) * 2002-04-10 2003-10-30 Infineon Technologies Ag Rechenwerk und Verfahren zum Addieren
DE10215784A1 (de) * 2002-04-10 2003-10-30 Infineon Technologies Ag Rechenwerk und Verfahren zum Subtrahieren
JP3540807B2 (ja) * 2002-08-27 2004-07-07 沖電気工業株式会社 加算器,乗算器,及び集積回路
US7516173B2 (en) * 2004-08-04 2009-04-07 Intel Corporation Carry-skip adder having merged carry-skip cells with sum cells
CN103631560B (zh) * 2013-12-06 2016-10-05 重庆邮电大学 基于可逆逻辑的4位阵列乘法器
US20220244912A1 (en) * 2021-02-02 2022-08-04 Efinix, Inc. Dynamic block size carry-skip adder construction on fpgas by combining ripple carry adders with routable propagate/generate signals

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5166899A (en) 1990-07-18 1992-11-24 Hewlett-Packard Company Lookahead adder
US5337269A (en) * 1993-03-05 1994-08-09 Cyrix Corporation Carry skip adder with independent carry-in and carry skip paths
KR950004225B1 (ko) * 1993-04-16 1995-04-27 현대전자산업주식회사 고속 캐리 증가 가산기
US5539332A (en) 1994-10-31 1996-07-23 International Business Machines Corporation Adder circuits and magnitude comparator
KR100197354B1 (ko) * 1995-06-28 1999-06-15 김영환 클럭 위상을 이용한 캐리증가 가산기

Also Published As

Publication number Publication date
US6199091B1 (en) 2001-03-06

Similar Documents

Publication Publication Date Title
KR920007029B1 (ko) X×y 비트 배열 배율기/어큐뮬레이터 회로
JPH11143685A (ja) キャリー・スキップ・アダー
US5231415A (en) Booth's multiplying circuit
US5477480A (en) Carry look ahead addition method and carry look ahead addition device
JPH07191832A (ja) 2進数2乗回路
JPH0713741A (ja) アルファ合成演算器
JPH10307706A (ja) 半及び全加算器を用いたウォレスツリー乗算器
US4348736A (en) Programmable logic array adder
KR950005522B1 (ko) 룩어헤드 가산기의 캐리 발생기
US5113362A (en) Integrated interpolator and method of operation
JPH082014B2 (ja) 多段デジタル・フィルタ
JP2803601B2 (ja) 有限体元の反転回路
JPH06236255A (ja) 並列桁上げ発生ネットワーク、並列加算器ネットワーク、桁上げ発生モジュール、マルチビット加算器ネットワークおよびモジュラー桁上げ伝ぱんユニット
US6735612B1 (en) Carry skip adder
JPH0326114A (ja) 乗算剰余演算器
JP2606326B2 (ja) 乗算器
JP2991788B2 (ja) 復号器
JP3255251B2 (ja) 配列型桁上げ保存加算器を有する乗算器
JP2606339B2 (ja) 乗算器
US7111034B2 (en) Carry foreknowledge adder
JPH1011267A (ja) 乗算器
JP2699358B2 (ja) デコーダ回路
SU1083185A1 (ru) Матричный вычислитель
JP2633165B2 (ja) 分散算術を用いる演算装置
JPH0199325A (ja) エンコーダ回路