(57)【要約】【課題】セキュリティ攻撃に対して抵抗力を持つデータ処理システムを提供する。【解決手段】条件付き書き込み処理操作をサポートするデータ処理システムの中にトラッシュレジスタが設けられていて、非書き込み条件に遭遇したとき、レジスタ書き込みが条件付き書き込み操作により特定されるデータレジスタでなくてトラッシュレジスタになされる。したがって、レジスタ書き込みが起きるか否かに関係する電力変動が外部から観察できなくなる。トラッシュレジスタはシステム・コンフィギュレーション・レジスタ内に記憶されているコンフィギュレーション・パラメータによって、イネーブルとディスエーブルにプログラム可能である。【選択図】図１
2010282651.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置において、
データ処理操作の実行時に結果データ値を発生するように動作可能な結果データ値発生回路と、前記結果データ値が書き込まれるデータ処理レジスタとを備え、
前記結果データ発生回路により実行される少なくとも１つのデータ処理操作が条件付き書き込みデータ処理操作であり、該条件付き書き込みデータ処理操作のための結果データ値は、非書き込み条件が満足したとき、前記データ処理レジスタに書き込まれず、
さらに、前記非書き込み条件が満足したとき、前記条件付き書き込みデータ処理操作の実行時に結果データ値を書き込むことのできるトラッシュレジスタを有する、データ処理装置。
【請求項２】
データ処理方法において、
データ処理操作の実行時に結果データ値を発生するステップを備え、実行する少なくとも１つのデータ処理操作は条件付き書き込みデータ処理操作であり、
非書き込み条件が満足したときに、結果データ値はデータ処理レジスタに書き込まれず、替わりにトラッシュレジスタに書き込まれる、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムの分野に関する。特に本発明はたとえばセキュリティを高めるために、データ処理システム内の処理動作のマスクに関するものである。
【背景技術】
【０００２】
安全なデータを扱うデータ処理システムを提供することは知られており、そのために高度のセキュリティを確保することが望ましい。一例として、スマートカードを提供することが知られているが、これは秘密の暗号キーのような安全なデータを扱うデータ処理システムを含むものであり、偽物を防止するためにこのデータは秘密にしておかなければならない。
【０００３】
このようなシステムのセキュリティを攻撃する方法として、タイミング分析とパワー分析とを含む方法が知られている。入力に反応するこの種のシステムのタイミング動作と電力消費の様子を観察することによって、実行中の処理に関する情報と処理中のデータを、セキュリティと妥協することができるように決定することができる。セキュリティ攻撃に対して抵抗力を持つことは非常に有利なことである。
【発明の概要】
【０００４】
本発明の一態様として提供されるデータ処理装置は、
データ処理操作の実行時に結果データ値を発生するように動作可能な結果データ値発生回路と、
結果データ値が書き込まれるデータ処理レジスタとを含み、
結果データ発生回路により実行される少なくとも１つのデータ処理操作が条件付き書き込みデータ処理操作であり、条件付き書き込みデータ処理操作のための結果データ値は、非書き込み条件が満たされたとき、データ処理レジスタに書き込まれず、
さらに、非書き込み条件が満たされたとき、条件付き書き込みデータ処理操作の実行時に結果データ値を書き込むことができるトラッシュレジスタを含む、データ処理装置である。
【０００５】
データ処理レジスタへの書き込みに関連した電力消費に特徴があり、したがって、条件付き書き込みデータ処理操作に付随して実行中のデータ処理に関する情報が外部から観察することができることを本発明は認識している。ここでいう情報はすなわち、条件付き書き込みが起きたか起きなかったかに関する情報である。本発明はこの問題に取り組むものであり、条件付き書き込みデータ処理操作がその非書き込み条件を満たすときに結果値（好ましくは真の値）をトラッシュレジスタに書き込む。他の場合には書き込みは起きないであろう。したがって、書き込み条件または非書き込み条件が満たされているか否かにかかわらず、トルー（true）レジスタかまたはトラッシュレジスタへのレジスタ書き込みが常に起きる。こうしてこのシステムのセキュリティが高まる。
【０００６】
書き込み条件が満たされたときに書き込みが正常に行われるデータレジスタは、好ましくはその種のレジスタを複数個含むレジスタバンクである。この環境において、レジスタバンク内にいくつリアルデータレジスタが設けられているかとは無関係に、ダミー書き込み用に共通のトラッシュレジスタ（１つまたは複数）を使うことができる。
【０００７】
トラッシュレジスタは物理的にレジスタバンクの一部として設けることが好ましい。回路のどの部分が任意の所定の時間に動作しているかを観察することによって、情報の漏洩を防ぐためである。
【０００８】
本発明はたとえばマイクロプロセッサ方式のシステム、ディジタル信号処理システムなど、広範囲のシステムに適用可能であるが、本発明が特によく適合するのはデータ処理命令に応答するプロセッサコアを含むシステムである。これらの命令は、本技術が取り組む潜在的な脆弱性を引き起こす条件付き書き込み命令をしばしば含んでいるからである。
特定の条件が満たされたとき、条件付き書き込み操作が起きるかまたは起きないかのいずれかになるようにできることが理解されよう。
【０００９】
できるだけ電力消費量を減らすということは、この分野における通常の技術的欲望であることは理解されよう。したがって、条件付き書き込み操作を要求しないとき、レジスタ書き込みを実行しないことが有利な機能であろうということが通常考えられるであろう。その方が電力消費量を軽減するからである。本発明の技術はこの分野におけるこの技術的欲望に逆らうものであって、たとえシステムの実処理動作のために必要でないとしても、トラッシュレジスタ書き込みを慎重に実行して、電力を消費するものである。
【００１０】
本発明の好ましい実施例において、トラッシュレジスタの動作は、システム・コンフィギュレーション・レジスタに記憶されている制御信号に従って、選択的にイネーブルとディスエーブルにすることができる。このことによってトラッシュレジスタ動作のプログラマブル操作が可能になり、安全でない処理が起きているときこの機能をディスエーブルにすることにより、電力を節約することができるようになる。更に、暗号キーの処理や、パスワードの解読等々を行うときのように、必要なときのセキュリティも改善される。
【００１１】
前述のように、トラッシュレジスタは通常のデータレジスタと共にレジスタバンク内に物理的に配置することができるが、好ましい実施例では、トラッシュレジスタはどんなプログラム命令によっても特定することができないように、レジスタ番号にマップされない。したがってプログラマのモデルから見るとレジスタとして見えない。しかしながら、好ましい実施例においてその動作はコンフィギュレーション・パラメータによってイネーブルまたはディスエーブルにすることができる、というようにトラッシュレジスタは見える。
【００１２】
本発明の別の態様として提供されるデータ処理方法は、
データ処理操作の実行時に結果データ値を発生するステップを備え、実行する少なくとも１つのデータ処理操作は条件付き書き込みデータ処理操作であり、非書き込み条件が満足したときに、結果データ値はデータ処理レジスタに書き込まれず、代わりにトラッシュレジスタに書き込まれる、データ処理方法である。
【図面の簡単な説明】
【００１３】
【図１】固定タイミングモードと可変タイミングモードにおいて操作可能なデータ処理システムの概略を示す。
【図２】条件付きプログラミング命令の概略を示す。
【図３】本発明の技術に従って働く命令デコーダによって実行される処理操作の一部の概略を示す流れ図である。
【図４】固定タイミングモードにおける条件付き分岐命令の実行の概略を示す。
【図５】必須の処理操作またはダミーの処理操作を選択的に実行可能にすることができる複数の回路部分を含むデータ処理システムの概略を示す。
【図６】必須のイネーブル信号とランダムダミー動作イネーブル信号の両方に反応することができる回路部分とそれに付随するダミー動作イネーブル回路の概略を示す。
【図７】擬似ランダム信号発生器として使うことができる線形フィードバック・シフトレジスタの概略を示す。
【図８】必須の処理動作とダミーの処理動作を実行する回路部分の制御の概略を示す流れ図である。
【図９】複数のデータ処理レジスタ、複数のダミーレジスタ、複数の共有ダミーレジスタおよびマップされてないトラッシュレジスタＲＴを含むレジスタバンクの一部の概略を示す。条件付き書き込み操作がその条件コードを失敗したとき、トラッシュレジスタＲＴにダミーレジスタ書き込みが行われる。
【図１０】レジスタ書き込みが起きたとき、ハイからローへとローからハイへの遷移が起きる回数を平衡させようとして働くレジスタ書き込み制御回路の概略を示す流れ図である。
【図１１】データレジスタ内の特定のビットに対するビット遷移と３個の追加レジスタに関するそれらとの間の関係を示す表である。これらのレジスタはレジスタ書き込みに付随して起きるハイからローへとローからハイへの遷移を平衡させるように構成されている。
【図１２】書き込み操作がその条件コードを失敗したとき、トラッシュレジスタへの書き込み制御の概略を示す流れ図である。
【図１３】１個の命令に対するマルチプル命令実行メカニズムと、少なくともいくつかの命令のために採用された実行メカニズムの擬似ランダム選択とを有するシステムの概略を示す。
【図１４】図１３に示したシステムの制御の概略を示す流れ図である。
【発明を実施するための形態】
【実施例】
【００１４】
次に本発明の実施例について、図面を参照して説明する。
図１はプロセッサコア４、コプロセッサ６およびメモリ８を含むデータ処理システム２を示す。
動作時に、プロセッサコア４はメモリ８から命令とデータとを取込む。命令は命令パイプライン１０に送られ、そこで命令は例えば、取込み、デコード、実行、記憶およびライトバックのようなパイプラインステージを、連続的な処理サイクルで次々と実行する。パイプライン式のプロセッサ自体は、処理性能を改善するために、部分的にオーバーラップしながらいくつかのプログラムの命令を効率的に実行する方法としてよく知られている。
【００１５】
プロセッサコア４によってメモリ８から読み出されたデータ値はレジスタバンク１２に送られ、そこから乗算器１４，シフタ１６，加算器１８のうち１つまたは複数使ってプログラム命令の制御下で処理される。アンド、オア、カウントリーディングゼロ（count leading zeros）のように論理操作を行う回路のような他のデータ操作用回路を備えることもできる。
【００１６】
図１はまたプロセッサコア４の中に命令デコーダ２０を含む。これはデータ処理動作の実行を制御するために、命令パイプライン１０内のプログラム命令に応答して、レジスタバンク１２、乗算器１４、シフタ１６および加算器１８のような各種の処理要素に供給される実行制御信号を発生する。一例として、デコーダ２０より生ずる制御信号によって適当なオペランドがレジスタバンク１２から読み出され、乗算器１４、シフタ１６、および加算器１８のうち適当なものに供給されて作用し、レジスタバンク１２にライトバックされる結果を生ずる。
【００１７】
コプロセッサ６はいくつかのコンフィギュレーション・レジスタ２２を含むシステム・コンフィギュレーション・コプロセッサである。このレジスタはプログラム制御下でコンフィギュレーション制御パラメータを設定するように書き込まれる。これらのコンフィギュレーション制御パラメータは、たとえばエンディアン（endianess）などのようなデータ処理システム２の構成に関して多くの点を特定することができる。これらのコンフィギュレーション制御レジスタ２２のうちの１つの中に、プロセッサコアが固定タイミングモードで動作すべきかそれとも可変タイミングモードで動作すべきかを特定するビットが含まれている。このビットは命令デコーダ２０への入力として示されているが、このビットはプロセッサコア４内にある各種の他の点の動作を制御する必要性に応じてそれらの点に供給することもできることが理解されよう。この固定/可変ビットに依存して、プロセッサコア４は固定タイミングモードかそれとも可変タイミングモードのいずれかで動作する。固定タイミングモードで動作するとき、可変タイミングモードのときに可変タイミングを有する（すなわち完了するのに可変数の処理サイクルを要する）少なくとも１つのプログラム命令が、替わって強制的に固定タイミングを有するようにされる（たとえば、完了するのに最多可能数の処理サイクルを要する）。このことはまるごと抑制することができたかもしれないか否かにかかわらず、あるいは最多数より少ない処理サイクルで完了することができたかもしれないかどうかにかかわらず、行われる。命令デコーダ２０は主にプログラム命令を解読してプロセッサコア４の他の要素の動作を命令する責任があるので、固定タイミングモードまたは可変タイミングモードのいずれかで動作するのに、命令デコーダ２０はプロセッサコア４を制御する中で主要な役割を果たすことができる。固定タイミングモードタイプで動作するのであれば、すべての可変タイミング命令を備える必要はない。
【００１８】
上述の説明によりコンフィギュレーション・レジスタ２２の中の１ビットが固定タイミングモードと可変タイミングモードの間の切り替えとして示されていることが理解されよう。替わりに、コンフィギュレーション・レジスタ２２内に複数のビットを備えて、たとえば条件付き命令動作、一様分岐動作、ディスエーブル早期終了などのような各種の命令の固定タイミング動作または可変タイミング動作を個別にイネーブルとディスエーブルするようにしてもよい。
【００１９】
図２は条件付き命令の略図を示す。この条件付き命令は、いくつかの条件付き命令だけ、または実質的に完全に条件付きであるＡＲＭ命令セットのような命令セットの一部だけを含む命令セットの一部とすることができる。条件コード２６は関連の命令が実行されるかまたは実行されないかという１組のプロセッサ状態条件を符号化する。たとえば、条件コード２６は、もしそのシステムで今設定されている条件コードがゼロという結果を示している、けた上げが起きた、オーバフローが起きたなどがあれば、命令２４が実行されないということを規定するように構成することができる。このタイプの命令は効率的なプログラム・コーディングを行うのに使うことができる。命令はその条件コードにかかわらず実行するが、その結果がプロセッサの状態に影響するように結果の書き込みをしないという点で、固定／可変ビットは少なくとも部分的に条件付き動作を抑制する。  
【００２０】
図３は命令デコーダ２０によって実行される処理操作の一部分の概略を示す。図３はこれらの処理操作を論理シーケンスとして示すが、実際にはこれらの処理操作は少なくとも部分的には並列にまたは異なる順番で実行してもよい。
【００２１】
ステップ２８において、命令デコーダ２０は新しい命令が実行されるのを待つ。新しい命令を受けると処理はステップ３０に進み、そこで新しい命令に付随する条件コードが読まれる。ステップ３２でこれらの条件コードがそのシステムに今ある条件コードと比較される。そのシステムに今あるこれらの条件コードは、これらの条件コードを更新したであろう直前の命令または最新の命令のいずれかにおける前の処理活動の結果である。
【００２２】
ステップ３４で今実行中の命令の条件コード２６と現在ある条件コードとの照合のためのチェックが行われる。もしも一致しなければ、処理はステップ３６に進み、現在の命令の実行がスタートする。図３は一致しなかったときに実行されるシステムを示すが、別の実施例では一致したときに実行されるシステムとすることもできるであろう。
【００２３】
ステップ３６の次に処理はステップ３８に進み、そこで命令の早期終了が可能か否かに関してチェックが行われる。この早期終了は例えば、オペランドの一つがゼロまたは１のような特定の値を有するという理由によるか、または特定の部分的な結果が生じた次の処理サイクル時に起きる。もし早期終了が可能であれば、処理はステップ４０に進み、そこでプロセッサコア４が今固定タイミングモードで動いているのかそれとも可変タイミングモードで動いているのかというチェックが行われる。もしプロセッサが可変タイミングモードにあれば、処理はステップ４２に進み、その命令は結果を適当に戻して早期に終了し、処理はステップ２８に戻る。
【００２４】
もしステップ４０における決定によりシステムは固定タイミングモードにあるということならば、早期終了が可能か否かにかかわらず、処理はステップ４４に進む。ステップ４４はステップ３８で早期終了が可能でないと判断されたときにも進むことができるが、その命令を１サイクルだけ実行する。乗算、除算、加算または減算のようなマルチサイクルの命令の場合、これらは一般に実行するのに数サイクルを要するので、ステップ４４の次に処理はステップ４６に進み、そこでその命令に関して最多数のサイクルが既に実行されたかまだかに関する判断がなされる。もし最多数のサイクルが実行されたのであれば、結果が生じているであろう。もし早期終了が可能であって、システムが強制的に次の処理サイクルを実行中であったならば、ステップ４６は、このタイプの命令の最多数の処理サイクルに達したときに、この強制実行を止めるべきであることを依然として示しているであろう。もし最多数の処理サイクルがまだ実行されてなければ、処理はステップ３８に戻る。
【００２５】
もしステップ３４の照合結果が肯定であれば、処理はステップ４８に進む。この例においてステップ４４の照合で肯定ということは特定の命令の実行を抑制すべきであることを示す。ステップ４８はシステムが現在強制実行モードであるか否かを判断する。もし強制実行モードにあれば、処理はステップ５０に進み、そこで命令の強制ダミー実行が行われるであろう。ダミー実行が行われると、その結果が命令自体に特定されている行き先ではなく、トラッシュレジスタ（図１のトラッシュレジスタ５１参照）に書き込まれる。それはシステムの状態があるプログラム命令によって修正されるのを防止するためである。そのプログラム命令は実質的に変わらない電力消費量を維持しながら抑制されるべきだったもので、実行されるはずのものではない。もしステップ４８でシステムが強制実行モードではなく可変タイミングモードにあると判断されれば、処理はステップ５０を迂回してステップ２８に戻る。このときプログラム命令は通常のやり方で抑制される。
【００２６】
図３は、ダミー実行がすべての条件コードの失敗した（failed）命令に適用されて、命令の早期終了がすべて抑制される一般的なシステムを示していることを理解されよう。実際、これらの技術を条件付き命令と早期終了可能な命令のサブセットに適用することも可能である。前述のマルチコンフィギュレーション制御ビットを使って、早期終了抑制のような機能を選択的に働かせるのに使うことができようが、条件コード不成功（fail）に続くダミー実行のような他のものには適用されないであろう。
【００２７】
図４は固定タイミングモードで条件付き分岐命令を実行することの概略を示す。命令Ａ、Ｂのシーケンスは条件付き分岐命令ＢＥＱ（等しいときに分岐、branch upon equal）に到達するまで実行される。この命令は、もし前の処理と結果が同じであることを示すフラグがセットされていれば、特定の分岐が実行されて、もしこのフラグがセットされていなければ、抑制されるという動作をエンコードする。条件コードがパスする、すなわち条件コードが一致すると、分岐が採用されて、処理は命令Ｘ，Ｙ等々へ進む。もしも条件コードが不成功であれば、まるごと抑制する替わりにＢＥＱ命令は直後の命令Ｃへの分岐を実行する。これは、もしもＢＥＱ命令が既に抑制されていて全く実行されなかったならば到達していたであろうのと同じ命令である。しかしながら、固定タイミングモードで、条件コードがパスしたか不成功だったかにかかわらず、ＢＥＱは同じ数の処理サイクルの消費を実行したであろう。このことは、安全なデータへのアクセスを得ようとしている人に対して、前に実行したデータ処理操作の結果をぼかすのに役立つ。
【００２８】
図５はプログラマブル・プロセッサコアの形式をしたデータ処理装置５２の概略を示す。これはプログラム命令Ｉに応答してデータＤを処理する。データ処理装置５２はレジスタバンク５４、乗算器５６、シフタ５８、加算器６０，算術論理ユニット６２，ロードストア・ユニット６４，データパイプライン６６，命令デコーダ６８，およびランダムクロック・ゲーティング回路７０を含む。システム・コンフィギュレーション・コプロセッサＣＰ１５  ７２がプロセッサコアに接続されている。システム・コンフィギュレーション・コプロセッサＣＰ１５  ７２はシステム・コンフィギュレーション・レジスタ７４を有し、これは複数のフラグ値を保有していて、それぞれがデータ処理システム５２に含まれる各種の回路部分の擬似ランダムダミー動作をイネーブルまたはディスエーブルにする役目を果たす。データ処理システム５２は一般にもっと多くの回路要素を含むが、これらは明瞭化のため図では省略してあることが理解されよう。
【００２９】
乗算器５６にダミー活動イネーブル回路７６が付随していて、これは適当なときに乗算器５６内でダミー動作をイネーブルにする役目を果たす。あるいは実行中のプログラム命令がその要求を実行したとき、必須の動作をイネーブルにする信号を通過させて乗算器５６を動かす役目を果たす。前述のように、同様なダミー動作イネーブル回路７８，８０，８２，８４がそれぞれ他の回路部分５８，６０，６２，６４に付随している。
【００３０】
動作時には、実行すべき命令が命令パイプライン６６を通って命令デコーダ６８に送られ、命令に駆動されるイネーブル信号を発生して、これらの信号がそれぞれの回路部分に加えられる。これらのイネーブル信号はデータ処理システム５２を通るデータ通路を選択して、それらの入力を読みとるべき回路部分を動かし、特定の処理を実行して、それぞれの出力信号を発生する。一例として、乗算器の累算演算はレジスタバンク５４からデータ値を読みとり、これらを乗算器５６と加算器６０に加えて、その結果をレジスタバンク５４にライトバックすることができよう。したがって、レジスタバンク５４、乗算器５６および加算器６０はすべて必須の動作イネーブル信号に従うことになろう。これらの信号はこれらの回路の動作をイネーブルにしてそれらを選択し、完全なデータ通路を形成した。種々の回路が種々の電力消費特性とタイミング特性を有する。それらのパラメータを観察することによって、どの命令が実行中であるかを外部で観察することができるであろう。したがって、実行中の命令にとって必要とされない他の回路の擬似ランダムダミー動作もイネーブルになる。このようにして、たとえシフタ５８が特定の乗算器の累算命令を実行中に使われていないとしても、擬似ランダムイネーブルにされて、その入力に加えられる値を何であれシフトすることによって電力を消費するであろう。回路の状態を望まない状態に変えるこのダミー動作を避けるために、その出力のラッチはイネーブルとされないであろう。そのダミー動作は必須の動作を邪魔するかもしれない、たとえばある回路は出力値を持続するように装うかもしれないのである。ダミー動作は関係する回路に関して正規の動作タイミングと一致する期間にイネーブルになる。
【００３１】
ランダムクロック・ゲーティング回路７０は種々のそれぞれの回路用に複数の擬似ランダムイネーブル信号を受信し、これらをゲートしてそれぞれの回路に加える。このことは、システム・コンフィギュレーション・コプロセッサ７２の中のシステム・コンフィギュレーション・レジスタ７４から読み出したコンフィギュレーション・パラメータの制御下で行われる。これらのコンフィギュレーション・フラグにより、ダミー動作はシフタ５８、ＡＬＵ６２および乗算器５６に対してイネーブルにすべきであって、加算器６０またはロードストア・ユニット６４に対してはイネーブルにすべきでないことを示す。種々の擬似ランダムダミー・イネーブル信号は、関係するこれらのそれぞれの回路部分と整合することができるように、種々の擬似ランダムダミー特性が加えられることを可能にする。一例として、種々の回路部分の正規のタイミングに付随して別の最低のイネーブル時間があるかもしれない。
【００３２】
全体的に見て、命令デコーダ６８は必須の動作をイネーブルにする回路として働くことが理解されるであろう。これは現在実行中の命令によって特定されたデータ処理操作を実行するのに必要な回路をイネーブルにするものである。この必須の動作に重畳して、他の回路部分内で各種のダミー動作がイネーブルになるであろう。これらはデータ処理システム５２の残りの各所に設けられたダミー動作制御回路によって刺激されるものである。ダミー動作は必須の動作に付随する電力消費とタイミング特性をマスクする役を果たす。
【００３３】
図６に必須イネーブル信号enとダミー・イネーブル信号ranの両方の支配を受ける回路部分８６の概略を示す。この回路部分８６はラッチのシーケンスとして考えることができ、ラッチの間に処理ロジックがデータ値を処理する。本物の必須の動作が必要なとき、回路部分８６を通るデータ路を提供するラッチはすべてイネーブルとなり、入力ラッチと出力ラッチの間で必要な処理が実行されるであろう。ダミー動作が指示されているとき、入力ラッチと中間ラッチのみがイネーブルになる。したがって、全回路部分を通るデータ路は提供されず、その回路部分により作られる出力値は変わらない。
【００３４】
図７は擬似ランダムクロック信号を発生するのに使われるタイプの線形フィードバック・シフトレジスタを示す。これらのクロック信号は図５のランダムクロック・ゲーティング回路７２に提供することができる。種々の回路部分に別々の擬似ランダム信号発生器を提供することができる。種々の擬似ランダム発生器に付随する固定クロック周波数は、この回路部分の特性に整合するように、かつ必要に応じてマスキング操作を更にあいまいにするように変更することができる。
【００３５】
図８は回路部分に対するイネーブル信号の制御の概略を示す。ステップ８８で命令デコーダ６８からイネーブル信号enを受信したか否かという判断がなされる。もしそのようなイネーブル信号を受信しておれば、処理はステップ９０に進む。命令デコーダ６８から受信したイネーブル信号は、デコード中の本物のプログラム命令にしたがって、必須の処理動作が必要であることを示す。したがって、ステップ９０は回路部分に対して入力、出力およびクロック信号をイネーブルにする。もしステップ８８で命令レジスタからイネーブル信号enをまったく受信していなければ、処理はステップ９２に進み、そこでその回路部分のダミー操作が許されるか否かが判断される。もしダミー操作が許されていれば、処理はステップ９４に進み、そこでその回路部分に対する入力とクロックがイネーブルにされるが、その回路部分からの出力はイネーブルにされない。それから回路部分はダミー動作を引き受ける。もしもステップ９２でシステム・コンフィギュレーション・パラメータにより指示されたようにダミー操作が許されなかったと判断すれば、処理はステップ９４を迂回して終わる。
【００３６】
図８に示した処理はシーケンシャルな流れ図の形をしていることが理解されよう。実際、この制御は異なるシーケンスでも実行することができ、それにはデータ処理システム５２に展開された回路要素を使う。操作が順次的に実行されるように示されているが、実際には並列に実行することができる、または制御機能を修正することができる。全体的に見て、個々の回路部分はイネーブルになると、適切なプログラム命令に応答して正規の必須の操作を実行するだろう。そして付随するコンフィギュレーション・パラメータによって許されたとき、ダミー動作を実行するであろう。
【００３７】
図９はレジスタバンク９６の概略を示す。このレジスタバンクは英国、ケンブリッジのＡＲＭ社により設計されたプロセッサにしたがうユーザモード操作のためのＡＲＭプロセッサ・プログラマズ・モデルに基づいている。実際、他のプロセッサモード用に追加のレジスタを備えることができるが、これらは明瞭化のために省略してある。データ値を保持するために通常のレジスタＲ０〜Ｒ１５が設けられている。レジスタＲ１３、Ｒ１４およびＲ１５は一般にプログラムカウンタ値、分岐リターンアドレス値およびスタックポインタを記憶する役目をする。これらはセキュリティに無関係のデータ値であるという傾向にある。したがって、データ書き込み時の遷移平衡はＲ１３、Ｒ１４、Ｒ１５にとって必要でない。トラッシュレジスタＲＴがレジスタバンク９６内に設けられている。これは条件コードを失敗した条件付き書き込みに付随して使われる。したがって、条件コードを失敗した条件付き書き込み命令は通常どんな書き込みもしないであろう。しかしながら、このシステムを使えば、たとえ条件コードが失敗したとしても、この失敗した条件付き書き込み命令はトラッシュデータレジスタＲＴにデータ値を書き込む。条件付き書き込み操作の条件コード失敗または条件コードパスに付随して電力消費量またはタイミングに何らかの差を生ずるかもしれないが、このことがその差をマスクする。トラッシュデータレジスタＲＴは、命令の中のレジスタを特定するオペランドでアドレス可能になるようにして、プログラマズモデルには現れない。
【００３８】
トラッシュデータレジスタＲＴと同様に、ハイからローとローからハイへの遷移を平衡させる目的で、追加のレジスタ９８，１００も設けられる。専用のダミーレジスタ９８がトラッシュデータレジスタＲＴと同様にデータレジスタＲ０からＲ１２に関して設けられる。共有ダミーレジスタ１００が排他的ＯＲの反転値と排他的ＯＲ値を記憶するために設けられる。これは遷移平衡技術に従ったデータレジスタへの各書き込みに応答して動作する。レジスタ書き込み制御回路１０２はデータレジスタへのデータ値の書き込みに応答して、追加のレジスタ９８，１００に書き込まれる適切なデータ値を発生する働きをする。この対称型書き込み制御は、システム・コンフィギュレーション・コプロセッサ７２から生ずる適切なシステム・コンフィギュレーション・制御フラグによって、選択的にイネーブルとディスエーブルにされる。
【００３９】
図１０はレジスタ書き込み制御回路１０２の操作の概略を示す流れ図である。ステップ１０４で、回路はレジスタ書き込み操作が命令されるのを待つ。ステップ１０６で、このレジスタ書き込みが、対称型書き込み制御システムが適用されるデータレジスタのうちの１個に対するものか、あるいはトラッシュデータレジスタＲＴのうちの１個に対するものか否かが判断される。もしレジスタ書き込みがこれらのレジスタに対するものでなければ、処理はステップ１０８に進み、レジスタＲ１３、Ｒ１４およびＲ１５のうちの１個に対して要求されたデータ値Ｘの単純書き込みがなされる。
【００４０】
もし書き込み中のレジスタが対称型レジスタ書き込みに従うのが可能であれば、ステップ１１０はこの機能が現在イネーブルであるか否かを判断する働きをする。もしもこの機能が現在イネーブルでなければ、処理はステップ１０８に進む。もしこの機能がイネーブルであれば、処理はステップ１１２に進む。
【００４１】
ステップ１１２で、レジスタ制御回路はデータ値内の各ビットの位置を計算する。値はその位置に書き込み中の現在のビットとその位置に先に記憶されたビットとの反転排他的オアである。それからそのビット位置に対して先に記憶されたダミーレジスタ値と排他的オアがとられる（図１１参照）。レジスタ制御回路１０２はまた決定の逆も同様に計算する。そのビットの反転値がデータレジスタへのデータ値として書き込まれる。これらの値は書き込み中のすべてのビットに対して計算される（たとえば、３個のダミー３２ビット値）。
【００４２】
ステップ１４でステップ１０８と同様にしてデータ値がデータレジスタに書き込まれる。ステップ１１６でレジスタ内の各ビット位置に対して決められた３つの追加の値が３つの追加のレジスタに書き込まれる。ステップ１１４と１１６は同時に起こる。図１１で後述するが、この結果、ハイからローとローからハイへの遷移の数が平衡して、電力が消費される。
【００４３】
図１１はデータ書き込み操作の前後における可能なビット値の表を示す。データ値がレジスタＲｎに書き込まれている。このレジスタは対称型書き込み操作が適用されるレジスタである。時刻ｔと時刻ｔ＋１における値が示されている。これらの値の反転値は単純に決定される。この対称型操作に従う各データレジスタには専用のダミーレジスタ９８が供給されていて、ダミーレジスタ９８はデータレジスタに現在保持されているデータ値の反転値を記憶する。
【００４４】
共有ダミーレジスタ１００は図１１ではＲｄとして示されている。共有ダミーレジスタＲｄ内の各ビット位置毎に、データ書き込みが起きたときそのビット位置に書き込むべき新しい値が、図１１の下段に示した関数によって決定される。この関数は、データ値とデータ値の反転値に変化が無ければ、共有ダミーレジスタ内の対応するビットとその反転値に変化が起きることを確実に保証するものである。この表はデータ値が変化しないときに起きる共有ダミーレジスタにおける変化と、データ値が変化するときに変わらないダミーレジスタの共有値とを示すものである。したがって、各書き込み毎の遷移固定数が保証されている、すなわちハイからローとローからハイへの遷移数が等しく平衡している。
【００４５】
図１２は、書き込み操作がその条件コードを失敗したときに書き込みを行うダミーデータレジスタＲＤの動作を示す流れ図である。ステップ１１８で、制御論理装置は受信すべき命令を待つ。この制御論理装置は命令デコーダ６８または他の論理装置でよい。ステップ１２０は命令がその条件コードを失敗したか否かを判断する。もしも命令がその条件コードを失敗していなければ、その命令はステップ１２２で正常に実行されて、その命令の中のレジスタオペランドにより特定されたレジスタにその書き込みを行う。もしも命令がその条件コードを失敗していれば、処理はステップ１２４に進み、そこでダミーレジスタ書き込みがイネーブルになっているか否かの判断が行われる。もしこれらがイネーブルになっていなければ、処理は終わる。もしダミーレジスタ書き込みがイネーブルであれば、処理はステップ１２６に進む。ステップ１２６で、たとえ条件コードが失敗していても、条件コードが失敗した命令によって計算されたデータ値の書き込みがトラッシュデータレジスタＲＴに対してなされる。このことが条件コードのパスか失敗かにかかわらず、電力消費とタイミングを平衡させる。トラッシュデータレジスタＲＴもまた前述の遷移平衡メカニズムに従うことが理解されよう。
【００４６】
図１３は少なくともいくつかの命令にはマルチプル命令実行メカニズムが備わっているデータ処理システム１２８を示す。データ処理システム１２８は少なくともいくつかのJava（登録商標）バイトコード命令のネイティブ実行をサポートするタイプのものである。このタイプのデータ処理システムとネイティブ実行（native execution）は公開されたＰＣＴ特許出願番号、ＷＯ−Ａ−０２／２９５５５、に記載されている。この公開された出願すべてと、特にネイティブ・ハードウェア実行ともっと複雑なJava（登録商標）バイトコードの選択性のソフトウェア・エミュレーションに関する記述を参考文献としてここに組み入れる。
【００４７】
Java（登録商標）のバイトコードデコーダ１３０は入力信号により選択的にイネーブルとディスエーブルになる。Java（登録商標）のバイトコード・デコーダ１３０がディスエーブルになると、受信したバイトコードは例外をトリガするだろう。例外はネイティブＡＲＭサム命令セットを使ってJava（登録商標）バイトコードを操作するために、ソフトウェア・エミュレーションコードの実行を開始する。このサポートコードは図示のようにエリア１３２内のメモリに記憶される。Java（登録商標）バイトコードプログラム１３４もまたメモリ内に記憶される。Java（登録商標）プログラム実行の性質をぼかすことを望むとき、Java（登録商標）バイトコードデコーダ１３０は擬似ランダム信号に従うことができる。この信号はこの要素を選択的にイネーブルとディスエーブルにして、Java（登録商標）バイトコードに対する命令実行メカニズムがハードウェアとエミュレーションの混合実行メカニズムと純粋なエミュレーションメカニズムとの間を効率的に切り替えることができるようにする。システム・コンフィギュレーション・レジスタ１３６内のコンフィギュレーション制御値は、Java（登録商標）デコーダ１３０が存在しているか否かと、このJava（登録商標）デコーダ１３０のランダムイネーブルとディスエーブルが許されるか否かを特定する。
【００４８】
図１４は受信したJava（登録商標）バイトコードの処理の概略を示す。ステップ１３８でJava（登録商標）バイトコードが受信される。ステップ１４０はJava（登録商標）デコーダ１３０がイネーブルであるか否かを判断する。Java（登録商標）デコーダ１３０の擬似ランダムイネーブルとディスエーブルにより、ステップ１４２と１４６どちらかへの効率的な分岐が可能になる。ステップ１４２ではバイトコードが常にエミュレートされ、ステップ１４６ではハードウェアにおいて命令の実行が試行される。このことがバイトコードの実行に付随する電力の特徴をあいまいにし／マスクする。もしステップ１４６で特定のJava（登録商標）バイトコードがJava（登録商標）デコーダ１３０によりサポートされていないと決定されれば、このJava（登録商標）バイトコードもステップ１４２においてソフトウェアでエミュレーションされるであろう。しかしながら、もしJava（登録商標）バイトコードがハードウェアでサポートされていれば、ステップ１４６においてハードウェアで実行される。
【図１】
2010282651.tif 000003
【図２】
2010282651.tif 000004
【図３】
2010282651.tif 000005
【図４】
2010282651.tif 000006
【図５】
2010282651.tif 000007
【図６】
2010282651.tif 000008
【図７】
2010282651.tif 000009
【図８】
2010282651.tif 000010
【図９】
2010282651.tif 000011
【図１０】
2010282651.tif 000012
【図１１】
2010282651.tif 000013
【図１２】
2010282651.tif 000014
【図１３】
2010282651.tif 000015
【図１４】
2010282651.tif 000016