(57)【要約】      （修正有）【課題】迅速かつ安全な計算ユニットを提供する。【解決手段】計算ユニットは、デュアルレール入力段１０と、切替段１２Ａと、出力段１４Ａとを備え、上記出力段は、デュアルレール出力部２２Ａ、２２Ｂを提供する。上記切替段は、デュアルレール技術による実施ではないが、「ワンホット」実現に基づく。上記切替段１２Ａは、少なくとも１つの内部ノードを含み、上記内部ノードは、制御手段２８から伸びる制御線２８Ｅにおける制御信号に基づいて上記準備モードにおいて、基準電位に接続される。データモードにおいては、上記内部ノードを処理するためのノード電位回路は、有効化信号ではない。したがって、面積効率よく、交差電流を低減し、信頼のおける計算ユニットが得られる。この計算ユニットは、高スピードでクロックされる。準備モードからデータモードへの推移は、時間のかかる放電プロセスなしで行われるからである。【選択図】図１
2006302260.tif 000002
【特許請求の範囲】
【請求項１】
デュアルレール入力段（１０）と、
切替段（１２Ａ、１２Ｂ、１２Ｃ）と、
デュアルレール出力段（１４Ａ、１４Ｂ、１４Ｃ）と、
ノード電位回路（７１０）と、
を備える計算ユニットであって、
上記デュアルレール入力段（１０）は、
少なくとも１つの入力被演算数を受け取り、
データモードにおいて、上記入力被演算数を上記デュアルレール入力段（１０）の第１出力部（１１ａ）に非反転形で出力し、上記入力被演算数を上記デュアルレール入力段（１０）の第２出力部（１１ｂ）に反転形で出力し、
準備モードにおいて、上記第１および上記第２出力部（１１ａ、１１ｂ）を同じ電位にするように実装されたものであり、
上記切替段（１２Ａ、１２Ｂ、１２Ｃ）は、
上記少なくとも１つの入力被演算数から出力ビットを決めるための計算規則に基づいて、計算電位（１６Ａ、１６Ｂ、１６Ｃ）を当該切替段の出力部（１８Ａ、１８Ｂ、１８Ｃ）に接続するように実装されたものであり、
ここで、上記出力部における上記計算電位は、上記出力ビット、または、上記出力ビットを反転したものを表すものであり、
上記デュアルレール出力段（１４Ａ、１４Ｂ、１４Ｃ）は、
上記切替段（１２Ａ、１２Ｂ、１２Ｃ）の上記出力部（１８Ａ、１８Ｂ、１８Ｃ）に接続された入力部と、第１出力部（２６Ｂ）と、第２出力部（２６Ａ）とを有し、
データモードにおいて、上記第１出力部（２６Ｂ）に上記出力ビットが出力され、上記第２出力部（２６Ａ）に上記出力ビットを反転したものが出力され、
準備モードにおいて、上記第１出力部（２６Ｂ）と上記第２出力部（２６Ａ）とが上記同じ準備電位になるように調節されたものであり、
ここで、上記準備電位（Ｖｓｓ）は、上記計算電位（Ｖｄｄ）とは異なるものであり、
上記切替段（１２Ａ、１２Ｂ、１２Ｃ）は、
少なくとも１つの内部ノード（７００〜７０６）を備え、
上記内部ノード（７００〜７０６）は、
上記準備モードにおいて、上記入力段の上記第１または上記第２入力部（１１ａ、１１ｂ）の電位にも、上記出力段（１４Ａ、１４Ｂ、１４Ｃ）の上記入力部の電位にも結合されておらず、
上記ノード電位回路（７１０）は、
上記準備モードにおいて、上記内部ノード（７００〜７０６）を基準電位（Ｖｓｓ）に結合するため、および、上記データモードにおいて、上記内部ノード（７００〜７０６）を上記基準電位（Ｖｓｓ）から切断するためのものである、
計算ユニット。
【請求項２】
上記基準電位（Ｖｓｓ）は、
上記計算電位（Ｖｄｄ）よりも小さいものである、
請求項１に記載の計算ユニット。
【請求項３】
各内部ノード（７００〜７０６）に対する上記ノード電位回路（７１０）は、
上記内部ノードと上記基準電位（Ｖｓｓ）との間に接続されているスイッチを備え、
上記準備モードでは有効化信号であり、上記データモードでは無効化信号である制御信号（２８Ｅ）が、制御入力部に供給され得るものである、
請求項１または２に記載の計算ユニット。
【請求項４】
上記データモードにあること、および、上記準備モードにあることを、上記入力段（１０）と上記出力段（１４Ａ、１４Ｂ、１４Ｃ）とに、交互に信号として知らせるための制御手段（２８）をさらに備え、
上記制御手段は、
さらに、上記制御信号を上記ノード電位回路（７１０）に供給するように実装されているものである、
請求項３に記載の計算ユニット。
【請求項５】
上記基準電位は接地電位であり、上記少なくとも1つの内部ノード（７００〜７０６）は、上記準備モードにおいて接地電位まで放電される、
請求項１から４のうち何れか１項に記載の計算ユニット。
【請求項６】
上記出力段（１４Ａ、１４Ｂ、１４Ｃ）は、
上記準備モードにおいて、上記出力段の上記第１および上記第２出力部（２６Ａ、２６Ｂ）を放電するように実装されたものである、
請求項１から５のうち何れか１項に記載の計算ユニット。
【請求項７】
上記入力段（１０）は、
上記準備モードにおいて、上記入力段（１０）の上記第１出力部および上記第２出力部を高電位（Ｖｄｄ）に充電するように実装されたものである、
請求項１から６のうち何れか１項に記載の計算ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算ユニットに関するものである。特に、本発明は、安全で迅速な計算ユニットに関するものであり、例えば、暗号法プロセッサにおいて、特に暗号法プロセッサのための加算器回路において使用される安全で迅速な計算ユニットに関するものである。
【背景技術】
【０００２】
ＤＥ３６３１９９２Ｃ２に、ＲＳＡ公開キー暗号化システムを実現するための暗号法プロセッサが記載されている。ここでは、基数、指数、法を用いる冪乗剰余法が、複数回の３つの被演算数の加算（以下、３被演算数加算）に分解されている。３つの被演算数は、法である被演算数Ｎと、被乗数である被演算数Ｃと、中間結果である被演算数Ｚとを含んでいる。例えば、加算前に３つの被演算数を適切にシフト／重み付けすることにより、乗算先見アルゴリズムおよび換算先見アルゴリズムによって加速された乗算／換算が行われる。
【０００３】
図７に、加算器ユニットの一部を示す。これは、例えばＤＥ３６３１９９２Ｃ２に示す暗号法プロセッサの要部を示すものである。詳細には、図７は、それぞれ３つの入力被演算数におけるビットＣｉ・Ｎｉ・Ｚｉ、Ｃｉ−１・Ｎｉ−１・Ｚｉ−１、またはＣｉ−２・Ｎｉ−２・Ｚｉ−２から、和における２つのビットｉ−１およびｉを計算するための、２つの連続するビットスライスを示す。
【０００４】
ビットレベルで考えると、ＣとＮとＺとの３被演算数加算は、２段階の演算に分解されている。演算の第１段階を実行するために、３ビット半加算器８０が備えられている。各３ビット半加算器８０は、後段に２ビット全加算器８１を有している。３ビット半加算器は、２つの出力ビットｘｉとｙｉとを渡す。出力ビットｘｉとｙｉとは、図７に示すように、後段の２ビット全加算器に供給される。特に、ビットスライスの各２ビット全加算器において、３ビット半加算器の出力のうち下位のビットｙｉが、２ビット全加算器８１に対して１桁下の桁の３ビット半加算器段の上位のビット（ｘｉ−１）と組み合わせられ、和のビット８２と繰り上げビット８３とが計算される。したがって、３被演算数加算は、２つのセクションに分解されている。第１のセクションでは、２進数の各桁について、被演算数の３つのビットの和が構成される。この和は、例えば（１０進法表示における）０〜３の値をとる。この和は、２つのビットｘとｙとをもつ２進数により表示され得る。この和は、各桁に対して構成されるので、２つのビットをまとめて、新しい２つの数が作られる。
【０００５】
第２のセクションでは、上記２つの数が、従来の方法により、２ビット全加算器８１によって加算される。２ビット全加算器が２つの異なる３ビット半加算器から出力される２つのビットを入力として受け取るような相互接続形態がとられている。このため、計算ユニットは、１ビット分だけ長くなる。
【０００６】
図７に示す３被演算数加算器の問題点は、入力被演算数であるＣとＮとＺとのバックアップも、「中間被演算数」であるｘとｙとのバックアップも提供されない点である。このことは、特に、全ての回路がＣＭＯＳロジックにより実装されている通常の場合において問題となる。ＣＭＯＳロジックは、各ビットを０から１に、または、１から０に切り替えるが、これは、ビット状態が切り替えられる時点で立ち上がる電流パルスを引き起こす。ＣＭＯＳ回路は、静的な状態にあるとき電流を消費しないことが知られている。しかしながら、ＣＭＯＳ回路は、状態を切り替えるとき電流を消費する。この電流消費量は、例えば電力分析により決定され得る。このように、例えばＲＳＡ演算において使用される秘密鍵をつきとめるために、ＣとＮとＺとを介して情報を引き出すことが基本的には可能である。
【０００７】
攻撃者は、例えば電流プロファイルを検出することにより、０から１への、または、１から０への、何れの切り替えが行われたのかを決定することができる。安全でない回路を用いている場合、電流ピークが電流プロファイルにおいて検出されたときに、ビットの切り替えが生じたものと考えられる。したがって、攻撃者は、電流プロファイルを使用することにより、計算ユニットが任意の切り替えを実行したことを理解するであろう。したがって、攻撃者は、「１」から「０」への、または、その逆の、何れの切り替えが行われたのかを再構成するために必要とするのは、完全な時系列におけるある１つのビットである。
【０００８】
ある種のＣＭＯＳ回路は、０から１への切り替えと１から０への切り替えとで、電流消費量が異なるという特性をさらに有している。この場合、攻撃者は、２つの異なる電流ピークを比較することにより、計算ユニットにおいてどのビットが処理されたかを直接見分ける。
【０００９】
このような電力分析攻撃に対する防御措置として、いわゆるデュアルレール技術を使用することが提案された。デュアルレール技術では、原則的には、各信号経路が二重に実装されている。第１の信号経路では、例えば信号ｘが通常通りに処理される。同じチップに集積されている第２の信号経路では、信号ｘが処理される代わりに、相補的な信号ｘ−が処理される。それゆえ、例えば信号線において０から１への遷移が生じる場合は常に、他方の信号線、すなわち、第２「レール」において、相補的な遷移が生じることとなる。したがって、各ビットの遷移に対して、２つの線において常に２つの遷移が生じている。その結果、０から１への遷移と、１から０への遷移とで異なる量の電流を消費する回路についても、０から１への遷移が生じたのか、または、１から０への遷移が生じたのかを決定できなくなる。その理由は、各回路遷移に対する電流プロファイルは、２つのレールの電流消費量が重ね合わせられた１つのピークを含んでいるからである。デュアルレール技術は、高い安全性を提供する。しかしながら、すべての回路が常に二重に実装されている必要があり、回路全体の電力消費量も２倍の大きさになってしまうという欠点を有している。しかしながら、この回路は、電力分析攻撃に対してある程度の耐性を有している。
【００１０】
さて、デュアルレール技術だけを使用する場合、電流プロファイルを使用することによって、あるビットが０から１に、または１から０に変化させられたということや、クロック周期が先行するクロック周期と同じままであるのかということ、が依然として知られてしまう。ビット遷移の際には、電力ピークが認められるであろう。しかしながら、ビットが、１つの周期から次ぎの周期までの間、例えば１のままであったり、あるいは、０のままである（すなわち、変化しない）場合には、電力ピークは認められないであろう。この効果に基づく攻撃に対して防御を行うために、デュアルレール技術に予備充電／予備放電モードを付け加えることが提案された。回路を、データモードと準備モード（予備充電／予備放電）とにおいて交互に動作させる。各データ周期は、先行する準備周期を有している。予備充電が行われる場合は、この準備周期において、双方のレール（すなわち、例えばｘとｘ−と）が「１」に予備充電される。これは、その後、データモードにおいて、処理される相補的な入力信号を双方のレールに供給するためである。その結果、データ周期から準備周期へ、または、準備周期からデータ周期へ、全く同じ数の遷移が常に生じていることになる。準備モードが予備放電モードとして実装されている場合は、準備モードにおいて、全ての入力データは０に「予備放電」されており、予備充電でのように１に初期化されない。したがって、同じく、準備周期からデータ周期へ、および、その逆に、正確に同じ数の遷移が生じる。
【００１１】
上に示唆したように、例えばＲＳＡまたは楕円曲線などの暗号アルゴリズムの範疇で、加算や乗算などの剰余演算を実施するためには、３つの被演算数の加算が要求される。他の理由によっても、これらの演算は、電力攻撃に対して安全なように、加算器ユニットによって行われる必要がある。暗号計算は、強力な演算を要求するので、加算器ユニットは高い能力を有している必要がある。特に、暗号法では、長精度の被演算数を処理する必要がある。被演算数の長さは、楕円曲線の場合には、１００〜２００ビットの範囲になり、ＲＳＡの場合には、１０２４〜２０４８ビットの範囲になる。したがって、計算ユニット自身も、計算ユニットに対する速度に関する条件を満たすために、長いビット長を有するものになる。
【００１２】
図７は、例えば２３００個のビットスライスを有する大規模な計算ユニットの２つのビットスライスの一部を示したものである。図７に示して計算ユニットを、暗号攻撃に対してより安全なものとするためには、まず、入力被演算数ＣとＮとＺとを、デュアルレール技術で３ビット半加算器８０に供給する必要がある。
【００１３】
安全性をより高くするには、デュアルレール技術だけではなく、予備充電または予備放電をそれぞれ含むデュアルレール技術も応用する必要がある。ここでは、データクロックは、いわゆる準備クロックと必ず交互に現れる。データクロックにおいて、例えば、ビットＣｉは、０または１に等しく、「第２レール」に供給される相補的なビットＣ−ｉは、ビットＣｉに対して相補的な値をもつ。データクロックに続く準備クロックでは、準備モードにて予備充電を行う場合、双方の線が例えばＶｄｄまで充電される。このことは、例えば「１」の論理状態に対応するであろう。したがって、双方のデュアルレール線は、準備モードにおいて同じ値を有している。放電の場合、双方の線ＣｉとＣ−ｉとは、典型的には接地電位であるＶｓｓの電位にされる。この例では、接地電位は、論理的な「０」に対応している。当然、Ｖｓｓは、論理的な「１」にも対応していることもある。その場合は、Ｖｄｄが論理的な「０」に対応する。
【００１４】
したがって、論理的には、ビットｘｉとｙｉとは、あるいは、ビットｘｉ−１とｙｉ−１とは、予備充電を伴うデュアルレール技術によって対応する後段の２ビット全加算器８１にそれぞれ供給される必要がある。この場合、同じく、常に１つのデータクロックが１つの準備クロックに続いている。したがって、出力側において、繰り上げビットＣ８３および和のビット８２も、予備充電／予備放電を伴うデュアルレール技術によって２ビット全加算器から引き出されてしまうであろう。
【００１５】
それゆえ、安全性を最適なものとするには、素子８０および８１への入力線と、素子８０および８１からの出力線とをデュアルレール技術で実装するだけでは不十分である。さらに、回路８０・８１自体も、デュアルレール回路として実装されていることが重要である。デュアルレール回路としての実装は、３ビット半加算器８０と各２ビット全加算器８１とを２個ずつ設けることにより実現することができる。ここで、第１の３ビット半加算器８０は、例えば、非反転被演算数のビットＣｉとＮｉとＺｉとを用いて計算を行い、ｘｉとｙｉとを得る。また、同じビットスライス用の第２の３ビット半加算器８０は、例えば、反転ビットＣｉ−とＮｉ−とＺｉ−とを用いて演算を行い、反転出力ビットｘ−ｉとｙ−ｉとを得る。当然、任意の交差組み合わせが可能である。その結果、第１の３ビット半加算器は、非反転入力ビットから反転出力ビットを計算するようにも、その逆を計算するようにも実施される。
【００１６】
法の長さが１０２４ビット、２０４８ビットなどに及ぶＲＳＡ計算のための長精度数計算ユニットのビットスライスにおいて、最適に安全化された回路を得るためには、同じことを、２ビット全加算器８１に対しても行わなければならないであろう。このような計算ユニットは、例えばＲＳＡまたは楕円曲線などの暗号アルゴリズムの範疇で、加算や乗算などの剰余演算を実施するために必要とされる。図７に一部を示す３被演算数加算器によって行われる３被演算数加算は、第１被加算数Ｃを第２被加算数Ｚに加算し、先見仕様（look-ahead specification）に基づいて法Ｎを最終的に加算または減算することである。この演算は、既述のように電力攻撃に対して安全な加算器ユニットによって行われる必要がある。
【００１７】
暗号計算が強力な演算を要求することは明らかである。それゆえ、計算ユニットは、安全性の他に、できるだけ短い演算時間で、あるいは、例えばチップカード上など資源が限られている場合には、妥当な演算時間で、非常に安全な演算を実行できる高い性能を有している必要もある。
【００１８】
暗号演算における演算は、長精度演算なので、既述の通り計算ユニット自体は、必要な性能にとにかく達するように、大きなビット長を有している。したがって、各ビットスライスは、全ての桁が対応するハードウエアビットスライスに対応付けられている限り、法の各桁に対応しているものと考えられる。たいていの場合、この最大限にパラレルな実装だけが、充分な性能を保証する。
【００１９】
必要とされる最大限の並行化、および、他方では、このような計算ユニットを含むチップのコスト、ならびに、チップエリアに適用される他の制限を考慮すると、空間を節約するように計算ユニットを設計する必要性が極めて高い。したがって、基本的には、安全性に加え、面積を最小化した高性能の計算ユニットが必要となる。
【００２０】
ドイツ特許ＤＥ１０３０７９４２Ｂ３に、少なくとも２つの出力ビットを得るために、少なくとも２つの入力被演算数のビットを加算するための半加算器が記載されている。この半加算器は、入力段とは別に、複数の切替段を備えている。各切替段は、後段の出力段を有している。切替段は、データモードにおいて、ビットまたは反転ビットを、対応する切替段の後段にある出力段への出力部に提供するように動作可能である。次に、出力段は、対応する切替段から受け取ったビットに基づいて、先行する準備モードと比較して出力ビットを変更し、先行する準備モードからの相補的なビットを補う。この半加算器回路だけでも、完全なデュアルレール論理なしで演算するので空間効率がよく、暗号攻撃に対しては依然として安全である。特に、入力段および出力段は、予備充電または予備放電を伴う完全なデュアルレール回路技術によって実装されている。一方、個々のビットに対する切替段は、入力被演算数のビットに応じた出力ビットに対する半加算器制御に基づいて、計算電位を、切替段の出力部に接続するように実装されている。出力部の計算電位は、出力ビットまたは出力ビットを反転したものを表している。この切替段は、デュアルレール技術で実装されているのではなく、「ワンホット」実現に基づいて動作する。
【特許文献１】ＤＥ  １０３０７９４２  Ｂ３
【特許文献２】ＤＥ  ３６３１９９２  Ｃ２
【特許文献３】ＤＥ  １０２  １５  ７８５  Ａ１
【特許文献４】ＤＥ  ３２  ２８  ０１８  Ｃ２
【発明の開示】
【発明が解決しようとする課題】
【００２１】
上記回路は、切替段が完全なデュアルレール論理で実装されていないので、空間効率がよくなっている。また、この回路は、エネルギー効率がよい。なぜなら、切替段は、常に反転ビットまたはビット自体のどちらかしか計算しない（すなわち、双方のビットのために電流を消費しない）からである。しかしながら、準備モードからデータモードへの移行において、いずれにせよ問題のあることが分かった。
【００２２】
つまり、切替段は、その入力部に入力されるものに応じて、２つのＶＤＤ経路を、その２つの出力部のビットまたはその反転ビットＢｉｔＱに接続する。その結果、論理的に有効な数が生じる。切替段は、内部ノードを有している。しかしながら、切替段の特別なワンホット実現のせいで、内部ノードは分断されている。すなわち、準備モードにおいては（すなわち、入力側および出力側において予備充電操作または予備放電操作が行われる場合には）、内部ノードは浮遊している。このような内部ノードが、先行するデータモードにおいて高電位になっている場合、すなわち、充電された場合、内部ノードは、電荷を自動的に迅速に失うことはないであろう。なぜなら、内部ノードは、準備モードでは浮遊しているからである。したがって、ＶＤＤ経路は、例えば結果ビットの１つのビット線に切り替えられる可能性がある。また、浮遊ノードが有している内部残留電荷は、同じ結果ビットの反転ビットに切り替えられる可能性がある。
【００２３】
このことにより、駆動されたビットはＢｉｔＱにおける残留電荷と競合することになる、という状況が生じる。この場合、横流が生じ、回路は必要以上に減速する。
【００２４】
さらに、この効果は、避けられない結合容量によって、本質的に増大する可能性がある、ということが分かった。その結果、特に好ましくない条件下では、駆動されたビットではなく、残留電荷が、いわば競り勝ち、駆動されたビットを「逆転」する。これは、計算された結果に誤りが生じるということを意味する。
【００２５】
本発明の目的は、迅速かつ安全な計算ユニットを提供することである。
【課題を解決するための手段】
【００２６】
上記目的は、請求項１に記載の計算ユニットによって達成される。
【００２７】
本発明は、準備モードにおいて入力段からの電位にも出力段からの電位にも結合されていない内部ノードは、準備モードにおいて浮遊状態のままになっていてはならず、制御されている必要がある、という認識に基づくものである。本発明によれば、準備モードにおいて内部ノードを基準電位に結合するように実装されたノード電位回路が提供される。
【００２８】
好ましい一形態では、基準電位は、接地電位またはＶｓｓである。それゆえ、切替段の範囲内にある内部ノードは、浮遊状態におかれるのではなく、確実に放電される。その結果、内部ノードは、その電荷を確実に放出し、次のデータモードに対して最適に準備される。データモードでビットが駆動されている場合、このビットは、相補的なビットに存在する残留電荷と競合することなく、自由に進むことができる。
【００２９】
したがって、一方では、横流が防止される。他方では、このような回路は、より速くクロックされ得る。なぜなら、この回路をクロックする際、安定した状態を確立するために必要であった時間、すなわち、駆動されたビットが残留電荷に対抗して演算を成功させるために必要であった時間を考慮する必要が無いからである。さらに、上記結合容量効果に起因する誤った結果が出ない、ということがいずれにせよ保証される。
【００３０】
したがって、本発明の構想によれば、性能損失や横流を生じることなく、かつ、信頼性が欠如することもない計算ユニットを得ることができる。内部ビットを本発明で定義されたように処理することは、本質的な安全性に関して、さらに有利である。つまり、本発明によれば、内部ノードを基準電位に結合することによって、「切替段の内部状態が各サイクルにおいて等しく設定される」ということが保証される。その結果、電流プロファイルは、入力されるデータに依存しなくなる。
【００３１】
好ましい一形態では、半加算規則に基づいて動作する切替段の内部ノードの放電が行われ、これにより、本発明の半加算器が得られる。
【００３２】
本発明の半加算器は、切替段が計算しなければならない出力ビットがたった１つなので、面積を占めることはない。この場合、切替段が出力ビット自身を提供するか、出力ビットを反転したものを提供するかは、実装に応じて決まる。要求される情報が、出力ビットと反転出力ビットとのどちらにも含まれていることは明らかである。
【００３３】
したがって、切替段によって計算されたものではない対応する相補的なビットが、準備モード（すなわち、予備充電または予備放電モード）においても、出力段に生じる。したがって、実装に応じて、データモードでは、出力段のたった１つの出力ビット（すなわち、出力ビット自身、または、出力ビットを反転したもの）が、予備充電状態と比較して再充電される。その結果、データモードでは、切替段によって計算されたものであり、予備充電モードと比較して再充電されたものであるビットが、半加算器から出力される。一方、データモードにおける他方のビットは、準備モードにおけるのと同じ値を有しており、データクロックに先行する準備クロックにおいて既に生成されたものとなる。
【００３４】
本発明の回路は、切替段が反転ビットまたは非反転ビットを実装に応じて計算するものであり、両方のビットを計算する必要が無いので、面積を占めない。したがって、第２のビットは、デュアルレール予備充電／予備放電出力段において生成される。
【００３５】
さらに、本発明の回路の利点は、少数のトランジスタによって実装され得る点にある。これは、切替段が、同じ計算電位を、３入力被演算数に応じて、異なる経路上の出力部に接続するように実装されている場合である。分岐する各経路に対して、同じ数のトランジスタを割り当てることが好ましい。その結果、例えば切替段によって実現される各経路は、計算電位から出力部までの間に、同じ数のトランジスタスイッチを含んでいることになる。その結果、「切替段がどの経路を取ったか」ということが、電力プロファイルを用いても外部からは分からなくなる。したがって、「どの入力被演算数が電流計算サイクルに使われたか」ということは電流消費量を見ても分からない。
【００３６】
さらに、本発明の回路の利点は、応用可能な幅が広いことである。すなわち、各出力ビットに対して、個別の切替段が設けられている。電流安全性は、１つの切替段の１つの経路にあるトランジスタの数が、同じ切替段の他の経路にあるトランジスタの数に等しい場合、既に達成される。しかしながら、１つの切替段と次の切替段とでトランジスタの数が同じである必要はない。例えば全ての切替段が同じ数のトランジスタを備えていれば、トランジスタオーバーヘッドなしで、個々のビットのために任意の半加算規則を実装することができる。
【００３７】
したがって、出力側に生じた半加算数の符号化（２進法の重み付け、グレーコード、１０進法の重み付け、など）に関する任意の半加算規則により、常に、少数のトランジスタによって設計された、最適な切替段を見出すことができる。
【００３８】
さらに、本発明の回路は、交差回路が低減されており、理想的な場合は、横流は生じない。なぜなら、常に、出力段のある１つの出力ノードからの再充電動作が必要とされるだけだからでる。したがって、常に、出力ビットは、準備モードにおいて、言わば推測により、既に計算されており、一方、データモードでは、１つの出力段の２つの出力ビットのうちの１つのビットだけを再充電する必要がある。この再充電は、高電位（例えば、Ｖｄｄ）から低電位（Ｖｓｓ）への横流なしに行われ、さらに、常に２つの出力ビットを再充電する必要のあった場合よりも電流消費量が少ない。したがって、本発明の回路は、横流が低減されているだけではなく、その全体的な電流消費量についても好ましいものである。このことは、特に、応用上、例えば、バッテリー形式の自己充実電圧供給部を有していないチップカードなどへの応用（例えば、非接触な応用）において有利である。
【００３９】
本発明の回路は、各段が完全なＣＭＯＳ技術にて実装されている必要はなく、さらに好ましく実装され得るものである。各段について、ＮＭＯＳトランジスタのみ、あるいは、ＰＭＯＳトランジスタのみであっても十分である。しかしながら、完全なＣＭＯＳ設計の場合のように、つまり、ＰＭＯＳトランジスタが、関連付けられた対応する相補的なトランジスタ（ＮＭＯＳトランジスタ）を常に有している場合のように、２つのトランジスタの型が、全ての段において必ずしも必要とされる訳ではない。
【００４０】
さらに、本発明の回路は、切替段によって入力被演算数に基づいて出力部に接続される計算電位が高電位Ｖｄｄであるか、あるいは、低電位Ｖｓｓであるか、ということに関し、柔軟である。高電位Ｖｄｄが、計算電位として選択される場合、出力段における準備電位として他の電位、すなわち、この場合は低電位Ｖｓｓを使用する必要がある。しかしながら、切替段において、低電位Ｖｓｓが計算電位として使用される場合は、出力段において、計算電位とは異なる準備電位を使用する必要がある。計算電位として低電位Ｖｓｓが使用される場合、準備電位は高電位Ｖｄｄである。
【００４１】
したがって、本発明の半加算器は、安全で、高電力で、空間的に最小化された３被演算数加算器に寄与する。３被演算数計算ユニットに適用される被演算数は、典型的には、例えばＳＲＡＭセルのようなメモリ素子に格納され、電力攻撃に対する安全性を得るため、デュアルレール実装された計算ユニットに供給される。半加算器に続く全加算器は、デュアルレール予備充電論理において小型に実装されていてもよいので、半加算器と全加算器との間の接続も、予備充電／予備放電技術を伴うデュアルレール論理において実施されていてもよい。小型でかつ安全な本発明の半加算器は、「ワンホット」実現に基づいている。適用される各ビットパターンに対し、それぞれの切替段において、正確に１つの経路の切り替えが行われる。したがって、出力ビットが２つの場合、適用される３つの被演算数の各ビットパターンに対し、２つの経路の経路の切り替えが行われる。これらの２つの経路は、各出力段について、１つのビットを計算するために必要なものである。一方、他方のビットは、いわゆる出力段自身によって生成される、すなわち、先行する準備モードから「引き継がれる」。適用される全てのビットパターンに対して、入力部においては、再充電される容量の合計の和が等しい。したがって、適用されたビットパターンは、半加算器における切り替えプロセスの間に、外部から検出されることはないであろう。
【００４２】
本発明によれば、性能をできるだけ高くするために、切り替えられる経路に、できるだけ少ないトランジスタを装備することが好ましい。このことは、半加算規則に応じて、各切替段に対して、無作為に、および、個々に行われてもよい。したがって、より複雑な半加算規則を有する１つの切替段が、あまり複雑でない半加算規則を有する他の切替段のトランジスタ数を、言わば「独り決め」してしまうことはない。
【００４３】
本発明の半加算器は、２進数の重み付けのされた２つの出力ビットを生成するために、３つの入力被演算数を有する３被演算数加算器としてのその好ましい形態で使用される。３重に限らず、Ｎ重のＺＤＮアルゴリズムも実行するために、このような３被演算数加算器を複数個直列に接続することによる、Ｎ被演算数加算器が採用されてもよい。直列接続された本発明の複数の３被演算数加算器からなるこのようなＮ被演算数加算器により、１チップ面積あたりの性能は、上昇するであろう。すなわち、エリアオーバーヘッドは、性能の向上と比べて些細なものである。
【００４４】
しかしながら、本発明の半加算器は、直列接続された３被演算数加算器素子を使用せずに、例えば、３つ以上の出力ビットに対して、例えば７被演算数加算器のための対応する真理値表に応じて、他の半加算規則を採用することにより、直接Ｎ被演算数加算器として使用される可能性もある。７被演算数加算器は、例えば、７つの入力被演算数の全てのビットが１に等しい場合、最大で７つの１を有している。１０進数７は、２進法の重み付けのされた３つの出力ビットの合計によって表されてもよい。したがって、７被演算数半加算器は、３つの出力ビットによって得られるであろう。
【発明の効果】
【００４５】
本発明によれば、迅速かつ安全な計算ユニットを提供することができる。
【発明を実施するための最良の形態】
【００４６】
以下で、本発明の好ましい実施形態を、添付の図を参照してより詳しく説明する。
【００４７】
図１は、無作為な個数の入力被演算数と、対応する個数の出力ビットとを有する、半加算器の回路図である。
【００４８】
図２は、計算電位と、準備電位と、対応するトランジスタ技術との考えられる組み合わせを示す図である。
【００４９】
図３は、２つの出力ビットＳＵＭ１とＳＵＭ０とを有する３被演算数半加算器のための真理値表を示す図である。
【００５０】
図４は、異なる計算電位を有する切替段の概略図である。
【００５１】
図５Ａは、ある被演算数のビットパターンに対する切替段を通る経路の一例を示す図である。
【００５２】
図５Ｂは、他の被演算数のビットパターンに対する切替段を通る経路の一例を示す図である。
【００５３】
図６Ａおよび図６Ｂは、デュアルレール入力段と、２つの切替段と、２つのデュアルレール出力段とを有する本発明の好ましい半加算器に対するトランジスタレベルのブロック図である。
【００５４】
図６Ｃは、準備モードにおいて内部ノードを基準電位に結合するためのノード電位回路の好ましい形状を示す図である。
【００５５】
図７は、長精度計算ユニットのビットスライスについて、対応して相互接続された３ビット半加算器と２ビット全加算器とを有する従来の３被演算数加算器を示す図である。
【００５６】
以下では、図１〜図６Ｃを参照し、本発明の構想を、半加算器を参照しながら説明する。しかしながら、本発明は、計算のために、フルデュアルレールで実装されていない切替段に基づいて動作する計算ユニットに適用することもできる。この計算ユニットにおいて、上記切替段は、計算規則に基づいて出力ビット、または、反転出力ビットに計算電位を接続することにより、加算規則に基づいて出力ビットの何れか１つを計算するものである。また、ここで、相補的なビットは、対応する出力段において加算されるもの、すなわち、相補的なビットは、先行する準備クロックからいわば引き継がれ、必要に応じて、適切に安定化されるものである。特に、本発明は、切替段が準備モードでは入力段の電位にも出力段の電位にも結合されていない少なくとも１つの内部ノードを有している場合、このような切替段を備える全ての計算ユニットに応用できる。
【００５７】
図１は、複数の入力被演算数のビットを加算するための、本発明に係る半加算器の概略的ブロック図を示す。複数の入力被演算数は、図１では、入力段１０に供給されるように記載されている。Ｍ個の入力被演算数は、図１ではＡ１、Ａ２、Ａ３、…、ＡＭによって表されている。図６Ａおよび図６Ｂでは、例えばたった３つの入力被演算数がＣ、Ｎ、Ｚよって表されている。入力被演算数として、乱数が入力段１０に供給されてもよい。さらに、上記入力段は、デュアルレール入力段として実装されている。すなわち、上記入力段は、各入力被演算数について、それと相補的な入力被演算数を受け取る。
【００５８】
上記入力段は、主に、入力被演算数と、相補的な入力被演算数とを、図１に示すｎ個の切替段１２Ａ、１２Ｂ、および１２Ｃに配分するように動作可能である。上記入力段は、各切替段に対する出力部を備えている。上記切り替え段が備えている出力部の数は、入力被演算数の数の２倍である。すなわち、図１において、ビットｎに対する切替段のために、上記入力段は、被演算数Ａ１が通過する第１出力部１１ａと、Ａ１に対して相補的な被演算数が通過する第２出力部１１ｂと、を備えている。また、Ａ２は、第３出力部１１ｃを通過し、Ａ２に対して相補的な被演算数は、第４出力部１１ｄを通過する、などのようになっている。
【００５９】
さらに、Ｍとｎとは異なることに注意すべきである。Ｍが１に等しい場合は、ｎ＝１である。Ｍが２または３である場合は、ｎ＝２である。Ｍが４〜７である場合は、ｎ＝３である。Ｍが８〜１５の間の数である場合は、ｎ＝４である。
【００６０】
切替段１２Ａは、ビットＳＵＭ０としても表される出力ビット０に関連付けられている。相補的なビットＳＵＭ０−も、図１において、出力側に示されている。切替段１２Ｂは、ビットＳＵＭ１としても表される出力ビット１に関連付けられている。相補的なビットＳＵＭ１−も、図１において、出力側に示されている。切替段１２Ｃは、出力ビットｎのために設けられている。出力ビットｎは、ビットＳＵＭｎとも表される。相補的なビットＳＵＭｎ−も、図１において、出力側に示されている。図１から分かるように、各切替段１２Ａ、１２Ｂ、および１２Ｃは、それぞれ関連付けられた出力段を備えている。具体的には、出力段１４Ａは、ビット０に対する切替段１２Ａの後段にある。出力段１４Ｂは、ビット１に対する切替段１２Ｂの後段にある。出力段１４Ｃは、ビットｎに対する切替段１２Ｃの後段にある。
【００６１】
図１から分かるように、さらに、計算電位がこの切替段の各切替段に供給され得る。このことは、計算電位端子１６Ａ、１６Ｂ、および１６Ｃにより示される。原則的には、各切替段に対し、個別の計算電位が供給され得る。ここで、個別の計算電位は、好ましい実施形態においては、高電位Ｖｄｄまたは低電位Ｖｓｓである。しかしながら、回路実装上の理由から、各切替段に同じ計算電位が供給されることが好ましく、この同じ計算電位１６Ａ、１６Ｂ、および１６Ｃは、ＶｓｓまたはＶｄｄの何れかであることが好ましい。実装された回路が３つ以上の電位を有する可能性のある場合、ＶｓｓともＶｄｄとも異なる計算電位が切替段１２Ａ、１２Ｂ、および１２Ｃに供給されてもよい。
【００６２】
切替段１２Ａ、１２Ｂ、および１２Ｃは、切替段１２Ａ、１２Ｂ、および１２Ｃに供給された計算電位１６Ａ、１６Ｂ、および１６Ｃを、出力部１８Ａ、１８Ｂ、および１８Ｃに供給するように動作可能である。この場合、出力部１８Ａ、１８Ｂ、および１８Ｃに供給される電圧電位は、出力ビットまたは出力ビットを反転したものを表している。
【００６３】
この時点で、出力ビットは、論理ビット、すなわち、論理的「０」または論理的「１」とみなされることに注意されたい。切替段１２Ａにおいて、入力部１６Ａから出力部１８Ａまでが導電的に接続され、計算電位１６Ａが切替段１２Ａの出力部１８Ａに供給される場合、出力部１８Ａに印加される電圧値は、後段の出力段１４Ａにおける論理出力ビットＳＵＭ０を表すものであるか、反転ビットＳＵＭ０−を表すものであるかの何れかである。何れを表すものであるかは、選択された実装に依存する。
【００６４】
出力段１４Ａは、一方の入力信号として、切替段の出力部１８Ａを介して信号を受け取り、他方の入力信号として、端子２０ａを介して準備電位を受け取る。出力段１４Ｂと１４Ｃとは、同様の状況で、入力部２０ｂまたは入力部２０ｃを介して準備電位をそれぞれ受け取る。各出力段は、２つの出力部を備えており、出力段１４Ａは、２２Ａと２２Ｂとを備えている。また、ビット１に対する出力段１４Ｂは、２つの出力部２４Ａと２４Ｂとを備えている。同様に、ビットｎに対する出力段１４Ｃは、２つの出力段２６Ａと２６Ｂとを備えている。ビット０に対する出力段１４Ａの出力部２２Ａは、反転出力ビットＳＵＭ０−を出力する。また、出力段１４Ａの出力部２２Ｂは、非反転出力ビットＳＵＭ０を出力する。
【００６５】
図１に示す半加算器は、さらに、データモードと準備モードとに設定するための制御手段２８を備えている。準備モードでは、予備充電モードまたは予備放電モードが行われ得る。データモードであるか、準備モードであるかは、制御線２８Ａ・２８Ｂ・２８Ｃにより、それぞれ、出力段１４Ａ、１４Ｂ、および１４Ｃに信号で知らせられる。状況に応じて、入力段１０は、データモードにおいても、あるいは、準備モードにおいても、動作可能である。制御手段２８は、他の制御線２８Ｄを介して、このことを、上記入力段に信号で知らせる。
【００６６】
データモードにおいては、出力段の出力部に、出力ビットが非反転で出力される。すなわち、ＳＵＭ０、ＳＵＭ１またはＳＵＭｎが出力される。また、データモードにおいて、他の出力部に、出力ビットを反転したもの、すなわち、ＳＵＭ０−、ＳＵＭ１−またはＳＵＭｎ−がそれぞれ出力される。
【００６７】
さらに、上記出力段は、同じ準備電位を１つの出力部と他の出力部とに印加するように動作可能である。準備モードにおいて、上記準備電位は、各出力段に、それぞれ対応する入力部２０ａ、２０ｂを介して供給される。この場合、本発明によれば、例えば入力部２０ａを介して出力段に供給される準備電位は、例えば入力部１６Ａを介してこの出力段の前段にある切替段に供給される計算電位とは異なるものである。準備モードであることは、図１に示す実施形態では、制御線２８Ａ、制御線２８Ｂまたは制御線２８Ｃを介して、制御手段２８から個々の出力段に対して信号として知らされる。
【００６８】
切替段１２Ｃ、１２Ｂ、および１２Ａの内部に、さらに、内部ノードが概略的に示されている。内部ノードは、準備モードにおいて、入力側の電位にも出力側の電位にも結合されていない。すなわち、内部ノードは、準備モードにおいて、浮遊している。本発明のノード電位回路は、これらの内部ノードの各々を、準備モードにおいて、基準電位（好ましくは接地電位）に接続するように実装されている。この目的のために、制御手段２８は、制御線２８Ｅをさらに備えている。この制御線２８Ｅは、各切替段に結合されており、特に、対応する切替段における各内部ノードに対する各放電スイッチに結合されている。制御線２８Ｅには、制御線２８Ａ〜２８Ｄの信号と同期している信号が供給される。スイッチの実装と準備モードとに応じて、入力段および対応する出力段では、同じ信号が使用されることが好ましい。しかしながら、ノード電位回路のスイッチの実装に応じて、例えば制御線２８Ｅと制御線２８Ｄとで互いに相補的な信号を使用してもよい。
【００６９】
以下では、図２を参照して、計算電位と、準備電位と、トランジスタ技術との好ましい組み合わせについて説明する。切替段（入力部１６Ａ）の計算電位として、高電位Ｖｄｄが回路に供給される場合、後段の出力段とは異なる準備電位は、低電位Ｖｓｓである。準備電位として低電位Ｖｓｓを供給することにより、出力段（例えば、１４Ａ）が予備放電されることになる。その結果、準備モードでは、ビットＳＵＭ０とＳＵＭ０−との両方が低電圧状態となり、ここに示す例では、論理的な「０」が出力される。
【００７０】
データモードにおいては、切替段１２Ａから、高い計算電位Ｖｄｄが、ビットＳＵＭ０またはビットＳＵＭ０−として、出力段１４Ａに供給される。すなわち、データモードにおいては、３つの入力被演算数のビットパターンに応じて、出力ビットＳＵＭ０またはＳＵＭ０−のうち１つだけが再充電され、論理状態「０」から論理状態「１」に変更される。
【００７１】
Ｖｄｄを計算電位とし、Ｖｓｓを準備電位とする場合、トランジスタ技術としては、ＰＭＯＳ技術が好ましい。なぜなら、ＰＭＯＳトランジスタは、より好適な方法で高電位に接続するからである。
【００７２】
しかしながら、他の場合、つまり、低電位Ｖｓｓを計算電位とし、それゆえ高電位Ｖｄｄを準備電位とする場合、出力段１４Ａの２つの出力ビットＳＵＭ０、ＳＵＭ０−が例えば論理的「１」を表している限り、出力段は準備モードになる。切替段を介して、ｂｉｔまたはｂｉｔ−の何れかとして、低電位Ｖｓｓが出力段１４Ａに供給され、２つの出力ビットＳＵＭ０とＳＵＭ０−とのうちの１つが、低電位状態に再充電される。すなわち、２つのビットＳＵＭ０とＳＵＭ０−とのうちの１つが、論理的「１」から論理的「０」に変更される。この場合、切替段におけるトランジスタ技術としては、ＮＭＯＳ技術が好ましい。なぜなら、ＮＭＯＳ技術は、低電圧電位を接続するために最も適しているからである。
【００７３】
図３に、入力被演算数ＣｉとＮｉとＺｉとの各ビットパターンに対して、対応する出力ビットＳＵＭ１とＳＵＭ０とを計算するための、３被演算数加算器のための好ましい半加算規則を表形式で示す。図３の半加算規則は、「１のカウンター」として実装されている。ここで、１の数は、ビットＳＵＭ０とＳＵＭ１とにより、２進法で表されている。すなわち、出力ビットＳＵＭ１とＳＵＭ０とは、１つの２進数を表すものであり、ビットＳＵＭ１はこの２進数のＭＳＢであり、ビットＳＵＭ０はこの２進数のＬＳＢである。したがって、２つの出力ビットＳＵＭ１とＳＵＭ０とは、入力被演算数の各ビットパターンの１の数を、２進法の符号化によって表している。例えば、全ての３つの入力被演算数が論理的「１」を有している場合のみ、両方のビットＳＵＭ１とＳＵＭ０とがセットされる。このことは、２進数「１１」に相当し、この２進数は、１０進法表示の数３に等しい。
【００７４】
図３の組成を使用することにより、任意のＮ個の被演算数半加算器を設定してもよいことが当業者には明らかである。例えば、７被演算数半加算器を設定する場合、７つの被演算数すべてが論理「１」を有している最大の場合を表すために、３つの出力ビットが多数必要となる。なぜなら、２進数「１１１」は１０進数「７」に対応しているからである。
【００７５】
したがって、通常の２進法の重み付けを採用する場合、７つの以上の被演算数を有する半加算器に対して、より多くの出力ビットが必要となる。
【００７６】
図３の組成から、さらに、特別な場合に有利であれば、他の符号化を使用してもよいことが分かる。すなわち、ビットＳＵＭ１とＳＵＭ０との意味は、任意に設定されてよく、例えば、「１１１」であるＳＵＭ０とＳＵＭ１とのビットの組み合わせが、入力ビットＣ・Ｎ・Ｚにおける０の数が３に等しいということを示すように設定されてもよい。このことは、特定の関連ビット組み合わせにおいて、Ｃ・Ｎ・Ｚにおける１の数が０に等しいという事実に相当している。
【００７７】
線４１・４２・４３は、ノード電位レベルを示し、その分岐は、切替段の対応するトランジスタによってによって実現され得る。これらのトランジスタは、内部ノードにつながっている。内部ノードは、準備モードにおいて、入力部からも出力部からも遮断されている。本発明によれば、準備モードにおいて、内部ノードは、付加されたノード電位回路によって基準電位に接続される。ここで、基準電位は、接地電位であることが好ましい。
【００７８】
しかしながら、基準電位は、必ずしも接地電位である必要はない。準備モードに応じて、すなわち、予備充電動作が使用されているのか、あるいは、予備放電動作が使用されているのかに応じて、および、回路実装に応じて、すなわち、ビット自体が駆動されているのか、反転ビットが駆動されているのかに応じて、基準電位は、高電位（すなわち、Ｖｄｄ）であってもよい。
【００７９】
以下では、図５Ａおよび図５Ｂを参照する。ここでは、それぞれ異なる２つの経路が、異なるビットパターンのための個々の切替段により表されている。
【００８０】
図５Ａに、第１被演算数が１に等しく、第２被演算数が２に等しく、第３被演算数が１に等しい場合を一例として示す。この図は、切替段１２Ａに関して、次のことを意味する。第１被演算数が１に等しいので、第１切替ノード５０Ａを通過すると、経路は４５°分岐する。第２被演算数は０に等しいので、第２切替ノード５０Ｂは、経路を水平に保つように動作する。第３被演算数は１に等しいので、第３切替ノード５０Ｃを通過すると、経路は再び４５°分岐する。このことにより、計算電位Ｖｓｓは、出力側において、切替段の非反転ビットを決定することとなる。データモードにおける、非反転ビットのための電圧状態Ｖｓｓは、次のことを導く。すなわち、それまで状態「１」であった２つの出力部２２Ａと２２Ｂを有する、切替段１２Ａの後段の出力段１４Ｂは、非反転ビットＳＵＭ０（２２Ｂ）を低電圧状態に放電し、一方、反転ビットＳＵＭ０（２２Ａ）を高電圧状態のままにする。
【００８１】
切替段１２Ｂは、計算電位として、高電位Ｖｄｄを有している。第１分枝ノード５２Ａにおいて、４５°の分枝が起こっている。第２被演算数に対応する第２分枝ノード５２Ｂにおいては、水平な分岐が起こっている。第３被演算数に対応する第３分枝ノード５２Ｃにおいては、４５°の分岐が起こっている。その結果、最終的に、非反転ビットに対応する出力部１８Ｂに、高い電圧電位Ｖｄｄが印加される。出力部１８Ｂにおける電圧電位が高い場合は、図１の出力段１４Ｂにおいて、非反転ビットＳＵＭ１（２４Ｂ）は、準備モードでは低い状態であったものが論理的に高い状態に設定される。一方、反転ビットＳＵＭ１−は、準備モードからずっと続いている状態、すなわち、低い状態「０」のままである。
【００８２】
上記の説明から分かるように、切替段が算出しなくてはならないのは、１つのビット、すなわち、反転ビットまたは非反転ビットの何れか一方のみであり、第２ビットは、先行する準備モードから出力段によって引き継がれる。
【００８３】
さらに、例えば図５Ａの切替段１２Ａでは、３つの入力被演算数の８通りの組み合わせに基づいて、８通りの異なる経路が選択され得る。しかしながら、図５Ａの切替段１２Ｂから分かるように、第１入力被演算数と第２入力被演算数とが０に等しい場合、すなわち、分枝ノード５２Ｄにおいて経路が水平に続いている場合、第３被演算数に関する個別の分岐点は、もはや存在しない。このことは、以下の事実から容易に分かる。すなわち、第１および第２の被演算数が０であった場合、３つの被演算数のなかで１の数は高々１つ（第３被演算数の１）のみなので、真理値表から分かるように、ビットＳＵＭ１は、いずれにせよ、０に等しい。すなわち、図３の真理値表により要求されるとおり、データモードにおいて非反転ビットを０に等しくするために、高電位Ｖｄｄは、反転ビットｂｉｔ−の状態を、論理的「１」になるように決める。
【００８４】
図５Ｂにおいて、３つの被演算数のビットの他の組み合わせ、すなわち、３つの被演算数の全てが１に等しい場合を示す。切替段１２Ａにおいて、図５Ｂにプロットされた、４５°の分岐のみかを含む経路がとられる。この経路は、最終的に論理的「０」を表す低い電位Ｖｓｓが反転ビットｂｉｔ−に印加されるように終了する。切替段１２Ｂにおいては、最初の２つの被演算数だけでビットが決まってしまうということが明らかである。したがって、すなわち、切替段の非反転出力部１８ＢにおけるＶｄｄは、第３被演算数に依存しなくなる。その結果、第３被演算数に関連付けられる分岐点はない。
【００８５】
さらに、図５Ａおよび図５Ｂから分かるように、分岐点の数は、各切替段に対して同一である必要はない（切替段１２Ｂでは４つ、および、切替段１２Ａでは５つ）。むしろ、分枝点の数が最小の切替段が望ましい。なぜなら、分枝点の数は、切替段におけるトランジスタの数を最終的に決定し、それに伴って、貴重なチップ面も決定されるからである。電力攻撃に対する安全性は、切替段を通る各経路が、同じ数の分枝点を有しているということによって達成されるのであって、必ずしも、分枝点の数が、切替段毎に同じである必要はない。この相違により、「切替が２つの切替段において行われた」という情報の一片が攻撃者に唯一提供される。しかしながら、この一片の情報は、いずれにせよ明らかなことなので、攻撃者にとって有用なものではない。攻撃者は、３つの入力被演算数の値を結論付けるために、切替段のどの経路が接続されたのかを検出することができないであろう。
【００８６】
分かりやすいように、図５Ａおよび図５Ｂでは、対応する準備モードを右側に示した。この準備モードは、出力段に関連付けられている準備電位によって決定される。この準備電位は、本発明の計算電位とは異なるものである。したがって、回路の利用できる電位が２つしか無い場合、計算電位が高電位Ｖｄｄであれば、切替段１２Ａは、それとは異なる準備電位、すなわち、低電位Ｖｓｓを有する関連付けられた出力段をもつ。
【００８７】
これと同様に、切替段１２Ａは、計算電位が低い電位Ｖｓｓである場合、高い準備電位となる。
【００８８】
以下では、図６を参照して、本発明の好ましい一実施形態について、トランジスタレベルで説明する。
【００８９】
図５Ａおよび図５Ｂに、同じく、分枝ノード５２Ａ〜５２Ｄまたは５０Ａ〜５０Ｄがそれぞれプロットされている。これらの分枝ノードは同じく、本発明のノード電位回路によって規定の基準電位状態にされる内部ノードにつながる。
【００９０】
図６Ａと図６Ｂとは、切替段（図１のブロック１２Ａ・１２Ｂ）および出力段（図１のブロック１４Ａ・１４Ｂ）のデュアルレール入力段（図１のブロック１０）の好ましいトランジスタ実装を、モジュール状の図解で示している。ここで、本発明の構想は、ドイツ特許ＤＥ１０３０７９４２Ｂ３に記載のような半加算器実装を参照して説明される。しかしながら、半加算規則の代わりに、図６Ａおよび図６Ｂにおける切替段によって実現されるように、他の計算制御（例えば、全加算器計算制御、インバータ計算制御、または、任意の他の論理および／または演算による計算制御など）も実装されている。さらに、本発明は３つの入力被演算数に制限されておらず、任意の数の入力被演算数に応用可能である。すなわち、本発明を、たった１つの入力被演算数に応用することもできる。入力被演算数がただ１つの場合は、計算制御は、例えばインバーター制御である。インバーターは、対応する切替段に関して、少なくとも１つの内部ノードが存在するように実装されている。内部ノードは、準備モードでは、入力側からも出力側からも遮断されているので、浮遊している。すなわち、内部ノードは、残留電荷を有している。残留電荷は、好ましくない場合（すなわち、本発明の原則の適用されていない場合）は、回路速度を落とすこととなり、横流が生じ、結果の変造につながることさえある。
【００９１】
以下では、デュアルレール入力段（図１のブロック１０）の実装について説明する。まず、図６のデュアルレール入力段は、６つの入力部を備えており、これらは、３つの被演算数Ｚ・Ｎ・Ｃの非反転ビットと反転ビットとに対応している。これらのビットは、図６に示すように、デュアルレール入力段に供給される。さらに、図１において線２８ｄにより示されるように、入力段は、準備モードにおいて入力段を予備充電状態にするために、予備充電信号Ｖｓｓを含んでいる。予備充電状態において、６個の入力部すべてが、同じ電位にされる。この電位は、図６における電圧供給状況を参照すると分かるように、高電位である。なぜなら、デュアルレール入力段には、他の場所に高電位Ｖｄｄが供給されているからである。
【００９２】
予備充電状態を引き起こすために、準備モードにおいて、図６ではＰＭＯＳトランジスタとして実施されているトランジスタに、そのゲートを介して低電位Ｖｓｓが供給される。その結果、上記トランジスタは、図６から分かるように、被演算数のビットの全てのノード、および、反転被演算数のビットの全てのノードを、電位Ｖｄｄに接続する。
【００９３】
具体的には、各デュアルレール入力段は、４つのトランジスタ６００、６０１、６０２、および６０３を備えている。以下では、第２および第３の被演算数に関する代表的な例として、第３被演算数に関連付けられた入力段のみを提示する。予備充電信号が有効化されている準備モードにおいて、すなわち、Ｖｓｓが線２８ｄに印加されている場合、２つのトランジスタ６０１と６００とは、２つのトランジスタの一方側に印加された高電圧Ｖｄｄを、非反転第１被演算数のビットではなく、反転された第１被演算数のビットのための、出力ノード６０４と６０５とに接続する役割を果たす。したがって、２つのトランジスタ６０３と６０２とは、直接ブロックされる。なぜなら、これらのトランジスタは、各ゲート端子に高電位Ｖｄｄを印加されることになるからである。
【００９４】
一方、データモードにおいて、線２８ｄは高電位Ｖｄｄとなり、このことにより、２つのトランジスタ６０１と６００とは無効化される。２つのトランジスタ６０２と６０３とは、データモードにおける状態を安定化させる役割を果たす。例えば、被演算ビットＮｉがhigh状態の場合、トランジスタ６０２がブロックされ、その結果、トランジスタ６０２の一方側における電位Ｖｄｄは、ノード６０４に達しない。このため、ノード６０４は、第１被演算数の反転ビットＮｉ−を表すように、低電位になる。この低電位は、開いているトランジスタ６０３に導かれる。しかしながら、理想的な状態では、電流は流れない。なぜなら、ノード６０５もＶｄｄになっているからである。しかしながら、トランジスタ６０３は、安定化のために機能し、漏れ電流がどこかに生じた場合でも、ノード６０５に高電位を適切に再充電する。
【００９５】
すなわち、デュアルレール入力段は、準備モードにおいてビット線に等しい電位を生成し、データモードにおいてビット線における状態を安定させる役割を果たす。さらに、デュアルレール入力段は、配分レール６１１、６１２、および６１３を介して、切替段へ被演算数のビットを配分する役割を果たす。デュアルレール入力段は、各被演算数または相補的な被演算数に対して、それぞれ、第１出力部１１ａまたは第２出力部１１ｂを備えている。
【００９６】
図６Ａおよび図６Ｂに示すように、２つの切替段は、計算電位として供給される高い電位Ｖｄｄを有するように実装されている。このことは、第１切替段に対しては電圧供給部１６Ａによって示され、第２切替段に対しては１６Ｂによって示されている。ビット０（ＳＵＭ０  ２２ＢまたはＳＵＭ０−  ２２Ａ）のための、あるいは、ビット０を生成するためのビットのための着替段は、１０個のトランジスタ６２０〜６２９の全体から構成されている。この場合、常に、２つのトランジスタがまとまって、図５Ａおよび図５Ｂに示した複数の分枝点のうちの１つの分枝点を形成する。これと同じように、ビット１（ＳＵＭ１  ２４ＢまたはＳＵＭ１−  ２４Ａ）のための切替段は、８個のトランジスタ６３０〜６３７のみにより構成され、対に配置されたトランジスタが、１つの分枝点を規定する。
【００９７】
さらに、次の点について、注意されたい。すなわち、計算電位１６Ａ・１６Ｂの状況は、図４、図５Ａおよび図５Ｂの切替段１２Ｂにおける高電位Ｖｄｄの状況に対応する。特に、トランジスタ６３０と６３１とは、分枝点５２Ａに相当する。また、トランジスタ６３２と６３３とは、図５Ａの分枝点５２Ｂに相当する。また、２つのトランジスタ６３４と６３５とは、図５Ａの分枝点５２Ｄに相当する。最後に、トランジスタ６３６と６３７とは、分枝点５２Ｃに相当する。
【００９８】
これと同様に、ビット０のための切替段においては、２つのトランジスタ６２０と６２１とは、図５Ａの分枝点５０Ａに相当する。また、トランジスタ６２２と６２３とは、図５Ａの分枝点５０Ｂに相当する。また、トランジスタ６２６と６２７とは、図５Ａの分枝点５０Ｃに相当する。
【００９９】
切替段は、さらに、図６に参照番号６３９で示す出力レールを備えている。出力レール６３９は、同時に、後段の出力段に対する入力レールでもある。出力レール６３９の右側の２本の線は、上部の出力段１４Ｂに関連付けられている。一方、出力レール６３９の左側の２本の線は、下部の出力段１４Ａに関連付けられている。切替段におけるトランジスタは、端子１６Ａまたは端子１６Ｂから、出力レール６３９の線のうちの一つに至る経路を切替えるように動作可能であることに注意されたい。各経路は、ビットパターンに応じて切替段により設定されるが、どの経路も、同じ数のトランジスタを含んでいるということは明らかである。
【０１００】
さらに、図６から分かるように、図示した実施形態において、１つの分枝点は、非反転被演算数のビットに加え、相補的な被演算数のビットをも用いて実装されている。２つのトランジスタだけが用いられ、また、ビットが０を含んでいるかまたは１を含んでいるかということについてビットをチェックする必要がないので、これにより、簡単な実装が可能となる。もしくは、しかしながら、実装に関して、および、安全性が損なわれる可能性があるので好ましくないが、シングルレール被演算数だけが切替段に供給される実装を使用することもできる。この場合、各分枝点には、対応する経路を接続するため、供給されたビットが０であるのかまたは１であるのかを決定するための手段がさらに備えられている。この場合、本発明の半加算器を、シングルレール−デュアルレール変換のために使用することもできる。入力側に存在するシングルレールデータを出力側のデュアルレールデータに変換するために、さらに、出力側のデュアルレールデータは、半加算規則に基づいて、入力側のシングルレールデータから導出されたものとなる。
【０１０１】
スイッチとして機能する２つのトランジスタ（例えば、図５Ａにおいて分枝点５０Ａとして表されるトランジスタ６２０および６２１）の機能性が明らかになるのは、データモードにおいて、一方のトランジスタが導通状態にあり、他方のトランジスタが遮断あるいはブロックされているとされる場合である。この場合は、常に上方または下方への１つの経路だけが取られ、同時に２つの経路が取られるということは決して起こらない。データモードにおいて、２つのノード６０５と６０４と（すなわち、データモードにおける第１被演算数を表す２つのビット）はＶｄｄになっているので、２つのトランジスタ６２０と６２１とは、準備モードにおいて両方とも遮断され、横流は生じ得ない。入力段において予備充電が使用されていること、および、切替段においてＰＭＯＳトランジスタが使用されていることにより、ノード１６Ａまたはノード１６Ｂからの横流が生じない限り、切替段は準備モードにおいて自動的に不活化される。デュアルレール入力段が、放電操作される場合は、切替段のトランジスタを、対応する計算電位（この場合はＶｓｓ）を伴うＮＭＯＳ技術で駆動することが好ましいであろう。
【０１０２】
以下では、一例として、合計４つのトランジスタ６４０、６４１、６４２、および６４３を備える出力段１４Ａのトランジスタ実装について説明する。図６では、計算電位１６Ａおよび１６Ｂとして、高電位Ｖｄｄが使用されているので、準備電位としては低電位Ｖｓｓ（２０Ａ）が使用されている。同じく、第２出力段１４Ｂにおいても、低電位Ｖｓｓが準備電位として、すなわち、計算電位Ｖｄｄとは異なる電位として使用される。
【０１０３】
準備モードにおいて、出力段１４Ａと１４Ｂとに、予備放電信号が供給される。この予備放電信号は、トランジスタ６４０〜６４３がＮＭＯＳ技術で実装されているので、高電圧信号Ｖｄｄである。逆に、データモードでは、放電トランジスタ６４１と６４０とをブロックするために、線２８Ａと２８Ｂとに低電位Ｖｓｓが印加される。
【０１０４】
しかしながら、（出力段１４Ｂとちょうど同じような）出力段１４Ａが、準備モードで操作されている場合、（実際の実装では共通線として実装されている）線２８Ａと２８ＢとにＶｄｄが印加される。その結果、２つのノード２２Ａと２２ＢとがＶｓｓになる。なぜなら、ＮＭＯＳ技術で実装されている２つのトランジスタ６４０と６４１とが導通するからである。このことは、直接的に、次の事実を導く。すなわち、トランジスタ６４３は、トランジスタ６４２と同様、ブロックされる。したがって、トランジスタ６４３と６４２とは、準備モードにおいては影響をもたない。しかしながら、データモードでは、既述のように、放電トランジスタ６４０と６４１とがブロックされる。データモードでは、ノード２２Ａと２２Ｂとのうちの１つが高電位になる。なぜなら、切替段が、電位Ｖｄｄ（１６Ａ）を、ノード２２Ａ、または、ノード２２Ｂに接続するように切り替えるからである。トランジスタ６４２と６４３との機能を説明するために、ノード２２Ｂが高電位になっているとする。この場合、トランジスタ６４２は導通状態となり、ノード２２Ａを確実に低電位Ｖｓｓになる。これにより、同時に、トランジスタ６４３がブロックされることが保障される。このことにより、同じく、トランジスタ６４３の一方側に印加された電位Ｖｓｓは、ノード２２Ｂには印加されず、それゆえ、ノード２２Ｂは高電位のままである。一方、ノード２２Ａは確実に低電位にとどまる。その結果、明らかな結果が得られる。すなわち、ビットＳＵＭ０は高電位となり、一方、相補的なビットＳＵＭ０−は低電位となる。
【０１０５】
したがって、出力段は、（先行する準備モードのせいで）データモードにおいて切替段によって決定されないビットを提供するという機能とは別に、双方のビット、特に、データモードにおいて、切替段によって提供されず、電荷漏れと競合するビットを安定化させる機能をも有している。
【０１０６】
さらに、本発明における好ましい図６の出力段の実装は、横流を生じないという利点を有している。その結果、本発明の半加算器回路は、面積効率が良いという特徴、および、性能が高いという特徴に加え、電流消費量も少ないという特徴をもつ。
【０１０７】
図６Ａおよび図６Ｂには、さらに、内部ノード７００〜７０６がプロットされている。内部ノード７００〜７０６は、すべて切替段の範囲内に配置されており、準備モードにおいては、入力側と出力側との両方でどの規定の電位にも結合されていない。準備モードにおいてノードを基準電位に接続するため、各内部ノードに対して、１つずつノード電位回路が設けられていることが好ましい。しかしながら、実装に応じて、少なくともいくつかの内部ノードを処理するだけでも、完全に浮動している内部ノードを有する回路と比べて、改善が行われることとなる。その結果、横流は、既に本質的に低減される。さらに、ある特定の場合には、特に電荷が残留しやすい内部ノード、および、特に結合容量を生じやすい内部ノードを、準備モードにおいて特別に処理すれば十分である。したがって、切替段に多数の内部ノードが設けられている場合でも、多すぎる数のノード電位回路によって切替段のトランジスタ数が本質的に増えることなく、操作安全性が向上するであろう。
【０１０８】
図６Ｃに、内部ノードに対する本発明の好ましいノード電位回路７１０を示す。ノード電位回路は、スイッチとして実装されている。このスイッチの一端は、内部ノードに接続されており、他端は、基準電位に接続されている。制御信号は、スイッチの制御端子に印加される。本発明の好ましい実施形態では、スイッチは、ＮＭＯＳトランジスタまたはＰＭＯＳトランジスタとして実装されている。スイッチのトランジスタ実装に応じて、制御信号は、準備モードにおいて有効化される場合、論理的に高い状態または論理的に低い状態を有している。この状態は、選択された実装がＰＭＯＳトランジスタであるかＮＭＯＳトランジスタであるかに応じて、準備モードにおいてトランジスタのソース−ドレイン間の導電性によりノード基準電位接続が得られるように選択される必要がある。これに対し、制御信号は、データモードにおいて切替トランジスタが開放されるように選択される必要がある。すなわち、内部ノードは、基準電位に関さず、計算ユニットの計算制御および印加された１つまたは複数の入力被演算数に応じて、高い電位または低い電位に接続される。
【０１０９】
本明細書の記載においては、記号上部にバーを付したものを、当該記号の直後に上付きの「−」を付して表記した。例えば、本明細書中の「ｘ−」は、
【０１１０】
【数１】
2006302260.tif 000003
を表すものであり、「ＳＵＭ０−」は、
【０１１１】
【数２】
2006302260.tif 000004
を表すものである。なお、本明細書に添付した図面における記載は、この限りではない。
【図面の簡単な説明】
【０１１２】
【図１】無作為な個数の入力被演算数と、対応する個数の出力ビットとを有する、半加算器の回路図である。
【図２】計算電位と、準備電位と、対応するトランジスタ技術との考えられる組み合わせを示す図である。
【図３】２つの出力ビットＳＵＭ１とＳＵＭ０とを有する３被演算数半加算器のための真理値表を示す図である。
【図４】異なる計算電位を有する切替段の概略図である。
【図５Ａ】ある被演算数のビットパターンに対する切替段を通る経路の一例を示す図である。
【図５Ｂ】他の被演算数のビットパターンに対する切替段を通る経路の一例を示す図である。
【図６Ａ】デュアルレール入力段と、２つの切替段と、２つのデュアルレール出力段とを有する本発明の好ましい半加算器に対するトランジスタレベルのブロック図である。
【図６Ｂ】デュアルレール入力段と、２つの切替段と、２つのデュアルレール出力段とを有する本発明の好ましい半加算器に対するトランジスタレベルのブロック図である。
【図６Ｃ】準備モードにおいて内部ノードを基準電位に結合するためのノード電位回路の好ましい形状を示す図である。
【図７】長精度計算ユニットのビットスライスについて、対応して相互接続された３ビット半加算器と２ビット全加算器とを有する従来の３被演算数加算器を示す図である。
【符号の説明】
【０１１３】
１０            デュアルレール入力段
１１ａ〜ｄ      入力段の出力部
１２Ａ〜Ｃ      切替段
１８Ａ〜Ｃ      切替段の出力部
１４Ａ〜Ｃ      デュアルレール出力段
２２Ａ〜Ｂ      出力段１４Ａの出力部
２４Ａ〜Ｂ      出力段１４Ｂの出力部
２６Ａ〜Ｂ      出力段１４Ｃの出力部
１６Ａ〜Ｃ      計算電位端子、計算電位
７００〜７０６  内部ノード
【図１】
2006302260.tif 000005
【図２】
2006302260.tif 000006
【図３】
2006302260.tif 000007
【図４】
2006302260.tif 000008
【図５Ａ】
2006302260.tif 000009
【図５Ｂ】
2006302260.tif 000010
【図６Ａ】
2006302260.tif 000011
【図６Ｂ】
2006302260.tif 000012
【図６Ｃ】
2006302260.tif 000013
【図７】
2006302260.tif 000014
【外国語明細書】
2006302260000001.pdf