(57)【要約】終了するまでに可変の処理サイクル数を必要とする可変タイミング・モードで動作するプログラム命令に応じるデータ処理装置（２）を提供する。この装置は固定タイミング・モードでも動作する。すなわち、構成制御レジスタ内の１つのビット（または複数のビット）を用いてプログラムすることにより、命令が固定の処理サイクル数を用いて動作することを強制される固定タイミング・モードで動作する。これにより、条件コードを失敗した命令は抑制され、また或るデータを処理するのに必要な処理サイクル数を観察して装置の秘密保護に対して攻撃が行われるのを防ぐために、プログラム命令の早期終了も抑制される。【特許請求の範囲】
【請求項１】
データ処理装置であって、
終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも１つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクルをそれぞれ必要とする個別の処理動作を実行するプロセッサを備え、
前記プロセッサは可変タイミング・モードで動作して、前記少なくとも１つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、また、
前記プロセッサは固定タイミング・モードで動作して、前記少なくとも１つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
データ処理装置。
【請求項２】
前記少なくとも１つの可変タイミング命令は条件付き命令を含み、前記プロセッサは前記可変タイミング・モードで動作して１つ以上の前に実行したプログラム命令の実行に応じて１つ以上の条件コード集合に従って前記条件付き命令の実行を抑制し、また前記プロセッサは前記固定タイミング・モードで動作して１つ以上の前に実行したプログラム命令の実行に応じて前記１つ以上の条件コード集合に関係なく固定の処理サイクル数で前記条件付き命令を終了する、請求項１記載のデータ処理装置。
【請求項３】
前記条件付き命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き命令の実行を抑制する場合は、前記条件付き命令は後のデータ処理動作に影響を与える何らかの変更を行うことが禁じられる、請求項２記載のデータ処理装置。
【請求項４】
前記条件付き命令が条件付き分岐命令である場合は、前記条件付き分岐命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き分岐命令の実行を抑制する場合は、前記条件付き分岐命令内で指定されている分岐先に関係なく、前記条件付き分岐命令は次の命令に分岐することを強制される、請求項３記載のデータ処理装置。
【請求項５】
前記条件付き命令が条件付きデータ操作命令である場合は、前記条件付きデータ操作命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付きデータ操作命令の実行を抑制する場合には、前記条件付きデータ操作命令は前記条件付きデータ操作命令のどの通常の結果宛先にも結果を書き込むことが禁じられる、請求項３記載のデータ処理装置。
【請求項６】
どの通常の宛先にも前記結果を書き込むことが禁じられる場合は、代わりに前記結果は少なくとも１つのダミー宛先に書き込まれる、請求項５記載のデータ処理装置。
【請求項７】
前記少なくとも１つのダミー宛先はダミー・プロセッサ・レジスタを含む、請求項６記載のデータ処理装置。
【請求項８】
前記少なくとも１つの可変タイミング命令は処理中の１つ以上のデータ値に従って早期終了を行うことが可能な命令を含み、また前記プロセッサは前記可変タイミング・モードで動作するときは早期終了が許され、前記プロセッサは前記固定タイミング・モードで動作するときは早期終了が禁じられる、請求項１記載のデータ処理装置。
【請求項９】
早期終了が可能な前記命令は、
多重サイクル乗算命令と、
多重サイクル除算命令と、
多重サイクル加算命令と、
多重サイクル減算命令と
の１つである、請求項８記載のデータ処理装置。
【請求項１０】
前記プロセッサは、プログラマブル・モード制御用パラメータに従って前記可変タイミング・モードか前記固定タイミング・モードを採用する、先行請求項のどれかに記載のデータ処理装置。
【請求項１１】
前記プログラマブル・モード制御用パラメータはシステム構成レジスタ内に記憶される、請求項１０記載のデータ処理装置。
【請求項１２】
前記プロセッサはプログラム実行経路を隠すために前記固定タイミング・モードに切り替えられる、先行請求項のどれかに記載のデータ処理装置。
【請求項１３】
終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも１つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクル数をそれぞれ必要とする個別の処理動作を実行するプロセッサを用いてデータを処理する方法であって、
前記プロセッサを可変タイミング・モードで動作させて、前記少なくとも１つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、
前記プロセッサを固定タイミング・モードで動作させて、前記少なくとも１つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
ステップを含むデータを処理する方法。
【請求項１４】
前記少なくとも１つの可変タイミング命令は条件付き命令を含み、また更に前記プロセッサを前記可変タイミング・モードで動作させるときは１つ以上の前に実行したプログラム命令の実行に応じて１つ以上の条件コード集合に従って前記条件付き命令の実行を抑制し、また前記プロセッサを前記固定タイミング・モードで動作させるときは１つ以上の前に実行したプログラム命令の実行に応じて前記１つ以上の条件コード集合に関係なく固定の処理サイクル数で前記条件付き命令を終了することを含む、請求項１３記載のデータを処理する方法。
【請求項１５】
前記条件付き命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き命令の実行を抑制する場合には、前記条件付き命令は後のデータ処理動作に影響を与える何らかの変更を行うことが禁じられる、請求項１４記載のデータを処理する方法。
【請求項１６】
前記条件付き命令が条件付き分岐命令である場合は、前記条件付き分岐命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付き分岐命令の実行を抑制する場合は、前記条件付き分岐命令内で指定されている分岐先に関係なく、前記条件付き分岐命令は次の命令に分岐することを強制される、請求項１５記載のデータを処理する方法。
【請求項１７】
前記条件付き命令が条件付きデータ操作命令である場合は、前記条件付きデータ操作命令を前記固定タイミング・モードで実行するとき、前記条件付きコードが前記可変タイミング・モードでは前記条件付きデータ操作命令の実行を抑制する場合は、前記条件付きデータ操作命令は前記条件付きデータ操作命令のどの通常の結果宛先にも結果を書き込むことが禁じられる、請求項１５記載のデータを処理する方法。
【請求項１８】
どの通常の宛先にも前記結果を書き込むことが禁じられる場合は、代わりに前記結果は少なくとも１つのダミー宛先に書き込まれる、請求項１７記載のデータを処理する方法。
【請求項１９】
前記少なくとも１つのダミー宛先はダミー・プロセッサ・レジスタを含む、請求項１８記載のデータを処理する方法。
【請求項２０】
前記少なくとも１つの可変タイミング命令は処理中の１つ以上のデータ値に従って早期終了を行うことが可能な命令を含み、また更に前記プロセッサは前記可変タイミング・モードで動作するときは早期終了が許され、前記プロセッサは前記固定タイミング・モードで動作するときは早期終了が禁じられることを含む、請求項１３記載のデータを処理する方法。
【請求項２１】
早期終了が可能な前記命令は、
多重サイクル乗算命令と、
多重サイクル除算命令と、
多重サイクル加算命令と、
多重サイクル減算命令と
の１つである、請求項２０記載のデータを処理する方法。
【請求項２２】
前記プロセッサは、プログラマブル・モード制御用パラメータに従って前記可変タイミング・モードか前記固定タイミング・モードを採用する、請求項１３から２１のどれかに記載のデータを処理する方法。
【請求項２３】
前記プログラマブル・モード制御用パラメータはシステム構成レジスタ内に記憶される、請求項２２記載のデータを処理する方法。
【請求項２４】
前記プロセッサはプログラム実行経路を隠すために前記固定タイミング・モードに切り替えられる、請求項１３から２３のどれかに記載のデータを処理する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置の分野に関するものである。より特定すると、本発明は少なくとも複数のプログラム命令が終了するまでに可変の処理サイクル数を必要とするデータ処理装置に関するものである。
【背景技術】
【０００２】
終了するまでに可変の処理サイクル数を必要とする命令を有するプロセッサ・コア（例えば、英国キャンブリッジのＡＲＭ社の設計によるもの）が提供されている。このようなプログラム命令の一例は条件付命令である。これは、先行命令を実行した結果或る条件が満足される場合（例えば、先行命令により結果がゼロ、オーバーフロー、桁上げなどになった場合）にだけ実行されるよう符号化される。プロセッサの性能を高めるため、早期終了方式を備えるプロセッサも提供されている。これは、処理サイクルを続けても結果が変わらないとプロセッサが判定した場合は、マルチサイクル演算を早期に終了するものである。例えばマルチサイクル加算演算において、両方のオペランドの高次のビットが全てゼロであれば、桁上げがないと判定された場合はその後のプロセッサ・サイクルで高次のビットを計算する必要がない。終了するまでに可変の処理サイクル数をかけるプログラム命令は他にも例が多い。
【０００３】
例えば高度の機密保護で動作して、処理中のデータに許可なくアクセスすることが出来ないようにするプロセッサを提供することがますます重要になっている。例えば、金融取引を扱うスマートカードに用いられるプロセッサ・コアは、パスワードやデータなどを証明するために高度に秘密の暗号鍵を用いることが多い。装置の機密保護と完全性とを保持するには、このような暗号鍵は秘密にしなければならない。このような装置の機密保護を攻撃する１つの周知の方法は、所定の動作を終了するまでに要する処理サイクル数を数えて、処置中のデータに関する情報を識別しようと試みることである。要した処理サイクル数と処理中のデータとの間に相関がある場合は、処理中のデータに関する情報を知ることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
サイクルを数えることにより装置の機密保護に加えられる攻撃を防ぐための周知の方法は、コンピュータ・プログラム・コードの書き方に注意して、コンピュータ・プログラムのフローに無関係に固定のサイクル数で終了させることである。実際には、これを行うのは困難である。なぜなら、高いレベルの知識と熟練がプログラマに要求されるためと、全ての場合に処理サイクル数を等しくするという所望の目的が達成されたことを確認／テストすることが困難なためである。また、プログラマが普通に用いる生産性向上ツール（コンパイラなど）はこのような機密のコードを生成するのに適していない。なぜなら、通るプログラム経路に従って、このようなツールが作るコードは処理サイクル数が大幅に変わるのが普通だからである。
【課題を解決するための手段】
【０００５】
１つの観点から、本発明が提供するデータ処理装置は、
終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも１つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクルをそれぞれ必要とする個別の処理動作を実行するプロセッサを備え、
前記プロセッサは可変タイミング・モードで動作して、前記少なくとも１つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、また、
前記プロセッサは固定タイミング・モードで動作して、前記少なくとも１つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される。
【０００６】
本発明の認識では、処理動作を速くしまた電力消費を減らすためにプロセッサ内で用いられる可変タイミング命令は、要した処理サイクル数と処理中のデータとの関係を完全に隠すことが望ましい安全な装置という文脈では明らかに不利である。同時に、機密のデータを処理していないときは、速度を上げたり電力消費を減らしたりする可変タイミング命令に付随する大きな利点は望ましいものである。本発明は上記の問題を認めると共に、可変タイミング・モードと固定タイミング・モードとで動作する装置を提供することにより、可能な環境で現在の装置に付随する利点を保持する。可変タイミング・モードでは、可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、固定タイミング・モードでは、可変タイミング命令は終了するまでに必ず固定のサイクル数をかけるよう強制される。このように、機密のデータを処理するときは装置を固定タイミング・モードに置いて、処理動作を終了するまでにかける処理サイクル数を容易に隠すが、機密のデータを処理しないときは装置を可変タイミング・モードで動作させて、可変タイミングの機構に付随する速度の利点と電力消費削減の利点とを活用する。固定タイミング・モードを用いると各命令のタイミングは処理中のデータとは無関係なので、プログラム・フローの経路に無関係に、プログラマは終了するまでに固定の処理サイクル数をかけるプログラム・コードを書くのが容易になる。またこれにより、固定タイミング・コードを生成するコンパイラを作るのが容易になる。
【０００７】
前に述べたように、本発明の方法は可変タイミングをとることのできる広範囲のプログラム命令に適用可能であるが、特に適しているのは、装置が固定タイミング・モードにあって全ての条件コードに関係なく条件付命令は固定の処理サイクル数をかけることを強制される場合か、可変タイミング・モードにあって条件コードが或るパラメータと一致する場合は命令の実行が抑制される場合かに従って、１つ以上の条件付き命令が実行される実施の形態である。
【０００８】
可変タイミング・モードでは抑制すべき条件付き命令を固定タイミング・モードで実行する場合は、本発明の好ましい実施の形態では、後のデータ処理に影響を与えるような変更を条件付き命令が行うことは全て禁止される。例えば、後の処理に影響するようなプロセッサ内の状態の更新や変更を条件付き命令が行うことは全て禁止される。
【０００９】
本発明の技術が適しているプログラム命令の種類は条件付き分岐命令である。なぜなら、この技術を用いなければ、分岐が抑制されるかどうかに従ってこの種の命令はプログラム・タイミングに強い影響を与えることがあるからである。固定タイミング・モードで動作するとき、条件付き分岐命令は条件コードが満足されない場合でも分岐することを強制されるが、この場合は条件付き分岐命令に指定された分岐先に関係なくプログラム・フロー内の次の命令に分岐され、条件付き分岐命令が全く抑制された場合と同じように次の命令が実行される。
【００１０】
条件付き命令が条件付きデータ操作命令の場合は、本発明の好ましい実施の形態では、固定タイミング・モードにあるときは、条件コードを失敗したときは条件付きデータ操作命令は実行されるが、通常これは抑制されて、命令は実行されるが条件付きデータ操作命令の通常の結果の宛先に結果を書き込むことは禁止される。
【００１１】
条件付きデータ操作命令から結果が書き込まれるかどうかに従って生じるプロセッサの消費電力の変動を観察してこれに基づいて機密保護に対する攻撃が行われることから守るために、好ましい実施の形態では、条件コードを失敗したときに、結果を通常の結果の宛先に書き込むのではなく１つ以上のダミー宛先に書き込む。これにより、条件コードを失敗したかどうかに関係なく実質的に同じ電力消費が保たれ、条件付きデータ操作命令は必ず実行され、ダミーの宛先ではあるにしても結果は必ず書き込まれる。
【００１２】
可変タイミング実行が可能な命令の別の型は、１つ以上の処理中のデータ値に従って早期終了が可能な命令である。好ましい実施の形態は固定タイミング・モードで動作して、このような早期終了可変タイミング・モードを与えるために装置内に設けられた機構がそれが可能であることを示しているときでも、早期終了を全て抑制する。例えば、乗算の一方のオペランドがゼロであれば他方のオペランドが何であっても結果はゼロなので、結果をゼロとして命令を早期に終了させることができる。しかし固定タイミング・モードでは、命令は処理サイクル数を全てかけてゼロの結果を返すよう強制される。
【００１３】
早期終了が可能な好ましい型の命令の例として、マルチサイクル乗算命令、マルチサイクル除算命令、マルチサイクル加算命令、マルチサイクル減算命令がある。
或るハードウエア信号などによって装置を固定タイミング・モードにすることは可能であるが、本発明の好ましい実施の形態では、プログラマブル・モード制御用パラメータ（例えば、１ビットまたは複数のビット）によって可変タイミング・モードか固定タイミング・モードかを採用するようプロセッサを構成してよい。
【００１４】
このようにして、機密のデータを処理中でなくかつ低い電力消費で高い性能が必要なときは可変タイミング・モードにし、機密のデータを処理中であって処理中のデータが処理サイクル数に依存することを隠す必要性の方が速度や電力消費などの考慮より優先するときは固定タイミング・モードにするというように、ソフトウエア制御の下で装置を切替えることができる。
プログラマブル・モード制御用パラメータを設定する好ましい方法は、装置制御用コプロセッサなどのシステム構成レジスタ内にこれを保存することである。
【００１５】
別の形態から見ると、本発明は終了するまでに最小のサイクル数と最大のサイクルの数との間を必要とする少なくとも１つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクル数をそれぞれ必要とする個別の処理動作を実行するプロセッサを用いてデータを処理する方法を提供し、前記方法は、
前記プロセッサを可変タイミング・モードで動作させて、前記少なくとも１つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、
前記プロセッサを固定タイミング・モードで動作させて、前記少なくとも１つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
ステップを含む。
【実施例】
【００１６】
図１は、プロセッサ・コア４と、コプロセッサ６と、メモリ８とを含むデータ処理装置２を示す。
動作を説明すると、プロセッサ・コア４はメモリ８から命令とデータとを取り出す。命令は命令パイプライン１０に取り出され、例えば、取出し、復号、実行、メモリ、次の処理サイクルでの書き込みなど順次のパイプライン段を占める。パイプライン付きプロセッサ自体は、部分的に重ねることにより多数のプログラム命令を実質的に実行してプロセッサの性能を向上させる方法として周知である。
【００１７】
プロセッサ・コア４がメモリ８から読み取ったデータ値はレジスタ・バンク１２に送られ、ここから乗算器１４、シフタ１６、加算器１８の１つ以上を用いてプログラム命令制御の下に操作される。ＡＮＤ、ＯＲ、ゼロまでのカウントなどの論理演算を実行する回路などの他のデータ操作回路も設けられる。
【００１８】
図１はプロセッサ・コア４内の命令復号器２０も示す。これは命令パイプライン１０内のプログラム命令に応じて実行制御信号を生成して、レジスタ・バンク１２、乗算器１４、シフタ１６、加算器１８などの種々の処理要素に与えて、実行される処理動作を制御する。例えば、復号器２０が生成する制御信号は該当するオペランドをレジスタ・バンク１２から読み取り、乗算器１４、シフタ１６、加算器１８の該当する要素に与えて実行して結果を生成し、これをレジスタ・バンク１２に戻して書き込む。
【００１９】
コプロセッサ６は多数の構成レジスタ２２を含むシステム構成コプロセッサである。構成レジスタ２２はプログラム制御の下に書き込まれて構成制御用パラメータを設定する。このような構成制御用パラメータは処理装置２の構成の多くの形態（例えばエンディアネス（ｅｎｄｉａｎｅｓｓ）など）を指定する。このような構成制御用レジスタ２２の１つの中に、プロセッサ・コアの動作を固定タイミング・モードで行うか可変タイミング・モードで行うかを指定する１つのビットが含まれる。図ではこのビットは命令復号器２０の入力として与えられるように示しているが、認識されるように、このビットはその行動を制御する必要に応じてプロセッサ・コア４内の種々の他の点に与えてもよい。この固定／可変ビットに従って、プロセッサ・コア４は固定タイミング・モードまたは可変タイミング・モードで動作する。
【００２０】
固定タイミング・モードでは、可変タイミング・モードで可変タイミング（すなわち、終了するまでに可変の処理サイクル数をかける）を有する少なくとも１つのプログラム命令は、可変ではなく固定タイミングを有するように強制される（例えば、全体として抑制されたかまたは最大の処理サイクル数より早く終了したかに関わらず、終了するまでに最大の可能な処理サイクル数をかける）。命令復号器２０は、プログラム命令を復号してプロセッサ・コア４の他の要素の活動を命令する主役なので、命令復号器２０はプロセッサ・コア４の動作を固定タイミング・モードか可変タイミング・モードかに制御するのに主導的な役割を果たす。全ての可変タイミング命令が固定タイミング・モード型の動作を行う必要はない。
【００２１】
認識されるように、上の説明では構成制御用レジスタ２２内の１つのビットでタイミング・モードを固定か可変かに切替えるものとして示した。他の方法として、構成制御用レジスタ２２内の複数のビットを用いて、異なる型の命令（条件付き命令行動、均一分岐行動、早期終了の禁止など）の固定または可変のタイミング行動を別々に可能にしまた使用禁止にしてよい。
【００２２】
図２は条件付き命令２４の概要を示す。この条件付き命令は、複数の条件付き命令だけを含む命令集合の一部でもよいし、実質的に完全に条件付きである命令集合（ＡＲＭ命令集合など）の一部でもよい。条件コード２６は、関連する命令を実行するかしないかという一組のプロセッサ状態条件を符号化する。例えば条件コード２６は、装置内に現在設定されている条件コードがゼロの結果や、桁上げの発生や、オーバーフローの発生などを示す場合は命令２４を実行しないと指定することができる。この型の命令を用いて効率的なプログラム符号化を行うことができる。固定／可変ビットは条件付き行動を少なくとも部分的に抑制する。すなわち、その条件コードに関係なく命令は実行するが、プロセッサ状態に影響を与えるようなその結果の書き込み方はしない。
【００２３】
図３は命令復号器２０が実行する処理動作の一部の概要を示す流れ図である。理解されるように、図３はこのような処理動作を論理シーケンスとして示すが、実際にはこのような処理動作は少なくとも部分的に並列にまたは異なる順序で実行してよい。
【００２４】
ステップ２８で、命令復号器２０は実行する新しい命令を待つ。新しい命令を受けると、処理はステップ３０に進み、新しい命令に関連する条件コードを読み取る。ステップ３２で、これらの条件コードと装置内の既存の条件コードとを比較する。装置内のこれらの既存の条件コードは、前の処理活動（直前の命令かまたはこれらの条件コードを更新した最新の命令で行った）の結果である。
【００２５】
ステップ３４で、実行される現在の命令の条件コード２６と既存の条件コードとが一致するかどうかチェックする。一致しない場合は、処理はステップ３６に進み、現在の命令の実行を開始する。認識されるように、図３は一致しない場合に実行する装置を示すが、別の実施の形態では一致する場合に実行する装置でもよい。
【００２６】
ステップ３６の後、処理はステップ３８に進んで、命令の早期終了が可能かどうかチェックする。この早期終了は、例えば、オペランドの１つが特定の値（０や１など）を有するためか、または次の処理サイクルで特定の部分的結果が作られたためである。早期終了が可能な場合は処理はステップ４０に進み、プロセッサ・コア４が現在動作中のタイミング・モードが固定か可変かをチェックする。プロセッサが可変タイミング・モードにある場合は処理はステップ４２に進み、関係する命令を早期終了し、結果を適当に返して、処理はステップ２８に戻る。
【００２７】
ステップ４０で装置が固定タイミング・モードにあると判定された場合は、早期終了が可能であるかどうかに関係なく処理はステップ４４に進む。ステップ３８で早期終了が可能でないと判定されたときにもステップ４４に進むが、関係する命令をここで１処理サイクルの間実行する。乗算や除算や加算や減算などのマルチサイクル処理命令の場合は実行するのに一般に数サイクルを要するので、ステップ４４の後で処理はステップ４６に進み、その命令に関連する最大のサイクル数を実行したかどうか判定する。最大のサイクル数を実行した場合は結果が生成されている。早期終了が可能ではあるが更に続いて複数の処理サイクル間実行するよう装置が強制された場合も、その型の命令の最大の可能な処理サイクル数に到達したときはこの強制実行を終了してよいことをステップ４６は示す。最大の処理サイクル数をまだ実行していない場合は、処理はステップ３８に戻る。
【００２８】
ステップ３４でのテストで一致した場合は、処理はステップ４８に進む。この例では、ステップ３４で一致したと検出されたことは、特定の命令の実行を抑制すべきことを示す。ステップ４８で、装置が現在強制実行モードにあるかどうか判定する。強制実行モードにある場合は処理はステップ５０に進み、命令の強制ダミー実行を行う。ダミー実行を行ったときは、命令自体の中に指定されている宛先ではなくトラッシュ・レジスタ（図１のトラッシュ・レジスタ５１を参照）に結果を書き込んで、抑制すべきであったので実行してはならなかったプログラム命令によって装置の状態が変更されるのを防ぐと共に、電力消費を実質的に不変に保つ。ステップ４８で装置が強制実行モードではなく可変タイミング・モードにあると判定された場合は、処理はステップ５０をバイパスしてステップ２８に戻り、プログラム命令は通常の方法で抑制される。
【００２９】
認識されるように、図３は条件コードを失敗した全ての命令と命令の全ての早期終了を抑制したものにダミー実行が適用される一般的な装置を示す。実際には、このような方法は条件付き命令と早期終了が可能な命令の部分集合にも適用することができる。上に述べた複数の構成制御用ビットを用いて、早期終了抑制などの機能は選択的に実行するが、条件コードの失敗の後のダミー実行などの他の機能は実行しないようにすることもできる。
【００３０】
図４は、固定タイミング・モードにおける条件付き分岐命令の実行の概要を示す。命令のシーケンスＡＢを、条件付き分岐命令ＢＥＱ（等しいとき分岐）に到達するまで実行する。命令ＢＥＱは、前の処理と結果が等しいことを示すフラグがセットされている場合は指定された分岐を実行し、このフラグがセットされていない場合は抑制するという行動を符号化する。条件コードが合格のとき（すなわち、条件コードが一致するとき）は分岐を行って、処理は命令Ｘ、Ｙなどに進む。条件コード失敗のときは、全体を抑制するのではなく、ＢＥＱ命令はすぐ次の命令Ｃに分岐する。これは、ＢＥＱ命令が抑制されて全く実行されなかった場合に到達する命令と同じである。しかし固定タイミング・モードでは、条件コードが合格か失敗かに関係なくＢＥＱは同じ処理サイクル数になる。これにより、秘密データにアクセスしようとする人に対して前に実行したデータ処理動作の結果を隠すことができる。
【００３１】
図５は、プログラム命令Ｉに応答してデータＤを操作するプログラマブル・プロセッサ・コアの形のデータ処理装置５２の略図を示す。データ処理装置５２は、レジスタ・バンク５４、乗算器５６、シフタ５８、加算器６０、算術論理ユニット６２、ロード・ストア・ユニット６４、データ・パイプライン６６、命令復号器６８、ランダム・クロック・ゲート用回路７０を含む。システム構成コプロセッサＣＰ１５  ７２はプロセッサ・コアに結合する。システム構成コプロセッサ７２は、データ処理装置５２の種々の回路部の擬似ランダム・ダミー活動をそれぞれ可能にしまたは使用禁止にする多数のフラグ値を保持するシステム構成レジスタ７４を含む。認識されるように、データ処理装置５２は一般に更に多くの回路要素を含むが、簡単のために図５では省略した。
【００３２】
乗算器５６に付随するのはダミー活動可能回路７６である。これは必要に応じて乗算器５６内でのダミー活動を可能にし、または実行中のプログラム命令が必要とするときは、必要な活動可能信号を通して乗算器５６を活動的にする。同様なダミー活動可能回路７８，８０，８２，８４が前に述べた他の各回路部５８，６０，６２，６４に付随する。
【００３３】
動作を説明すると、実行する命令は命令パイプライン６６に、更に命令復号器６８に送られて命令駆動可能信号を生成し、各回路部に与えられる。このような可能信号は、データ処理装置５２を通るデータ経路を選択し、関係する回路部を活動的にしてその入力を読み取り、指定された処理を実行し、その関連する出力信号を生成する。例えば、乗算・累算演算はレジスタ・バンク５４からデータ値を読み取り、これを乗算器５６と加算器６０とに与え、その結果をレジスタ・バンク５４に返して書き込む。このように、レジスタ・バンク５４と乗算器５６と加算器６０とは全てその動作を可能にしまたそれを選択する必要な活動可能信号を受けて、完全なデータ経路を形成する。
【００３４】
異なる回路部は異なる電力消費特性とタイミング特性とを有するので、外部の観察者はこのようなパラメータを観察することによりどの命令を実行中かを知ることができる。これに対抗して、実行中の命令に必要ない他の回路部の擬似ランダム・ダミー活動も可能にする。例えば、実行中の特定の乗算・累算命令でシフタ５８が用いられていなくても、擬似ランダム的に可能にして、その入力に与えられる全ての値をシフトして電力を消費する。このダミー活動が必要な動作（例えば、或る回路部が出力値を持続する）を妨げるような望ましくない方法で回路状態を変えることを防ぐため、その出力ラッチは可能にしない。ダミー活動が可能になるのは、関係する回路部の通常の動作タイミングと一致する期間である。
【００３５】
ランダム・クロック・ゲート用回路７０は異なる各回路部向けの複数の擬似ランダム可能信号を受けてこれをゲートし、システム構成コプロセッサ７２内のシステム構成レジスタ７４から読み取られた構成パラメータの制御の下に各回路部に与える。このような構成フラグは、例えば、シフタ５８、ＡＬＵ６２、乗算器５６についてはダミー活動を可能にするが、加算器６０とロード・ストア・ユニット６４については可能にしないことを示す。異なる擬似ランダム可能信号により、関係するこれらの各回路部と一致させて異なる擬似ランダム特性を与えることができる。例えば、異なる回路部の通常のタイミングに関連して異なる最小可能時間があってよい。
【００３６】
全体レベルにおいて、命令復号器６８は現在実行中の命令が指定するデータ処理動作を実行するのに必要な回路部を可能にする必要な活動可能回路として機能することが分かる。この必要な活動に重ねて、データ処理装置５２の他の種々の場所に設けられているダミー活動制御回路により、他の回路部内の種々のダミー活動が可能になり／刺激される。ダミー活動は、必要な活動に付随する電力消費およびタイミング特性を隠すのに役立つ。
【００３７】
図６は、必要な可能信号ｅｎとダミー可能信号ｒｎｄとを受ける回路部８６を示す略図である。この回路部８６は、その間で処理論理がデータ値を操作するラッチのシーケンスと考えることができる。真に要求された活動が必要なとき、回路部８６を通るデータ経路を与える全てのラッチが可能になり、要求された処理は入力ラッチと出力ラッチとの間で実行される。ダミー活動が命令されると、入力ラッチと中間ラッチだけが可能になる。この場合は、全回路部を通ってデータ経路が形成されないので、回路部が生成した出力値は変わらない。
【００３８】
図７は、擬似ランダム・クロック信号を生成するのに用いてよい型の線形フィードバック・シフト・レジスタを示す。このようなクロック信号は図５のランダム・クロック日付回路（ｒａｎｄｏｍ  ｃｌｏｃｋ  ｄａｔｉｎｇ  ｃｉｒｃｕｉｔ）７２に与えられる。異なる回路部には別個の擬似ランダム信号発生器を設けてよい。異なる擬似ランダム発生器に関連する固定クロック周波数を変えて関連する回路部の特性を一致させ、更に必要に応じて隠蔽動作を隠してよい。
【００３９】
図８は、回路部の可能信号の制御の概要を示す。ステップ８８で、命令復号器６８から可能信号ｅｎを受けたかどうか判定する。このような可能信号を受けた場合は、処理はステップ９０に進む。命令復号器６８からの可能信号は、復号された真のプログラム命令に従って、要求された処理演算を行うことが必要であることを示す。したがってステップ９０では、関係する回路部への入力と出力とクロック信号とを可能にする。ステップ８８で命令復号器から可能信号ｅｎを受けない場合は、処理はステップ９２に進んで、その回路部のダミー演算が許されるかどうか判定する。ダミー演算が許される場合は、処理はステップ９４に進み、回路部への入力とクロックとは可能になるが、回路部からの出力は可能にならない。次に回路部はダミー活動を行う。ステップ９２での判定の結果、システム構成パラメータの指示によりダミー演算が許されない場合は、ステップ９４をバイパスして処理は終了する。
【００４０】
認識されるように、図８に示すプロセスは順次流れ図の形である。実際には、この制御は異なる順序で行われて、データ処理装置５２全体に広がる回路要素を用いてよい。順次に実行されるように示されている動作も実際は並列に実行されてよくまたは制御機能は修正されてよい。全体レベルでは、個別の回路部は、該当するプログラム命令に応じて通常要求される動作を行うことが可能になり、また関連する構成パラメータにより許される場合はダミー活動を行うことが可能になる。
【００４１】
図９はレジスタ・バンク９６の略図を示す。このレジスタ・バンクは、英国キャンブリッジのＡＲＭ社が設計したプロセッサに従う、ユーザ・モード動作用のＡＲＭプロセッサ・プログラマのモデルに基づくものである。実際には、他のプロセッサ・モードについて更にレジスタを用いることがあるが、簡単のために省略した。通常のデータ・レジスタＲ０からＲ１５はデータ値を保持するのに用いる。レジスタＲ１３，Ｒ１４，Ｒ１５は、一般に機密保護に関係ないデータ値であるプログラム・カウンタ値、分岐復帰アドレス値、スタック・ポインタを記憶する。したがって、Ｒ１３，Ｒ１４，Ｒ１５についてはデータ書込みの際の移行バランスは必要ない。トラッシュ・レジスタＲＴは、その条件コードを失敗した条件付き書込みに関連して用いるためにレジスタ・バンク９６内に設けられる。その条件コードを失敗した条件付き書込み命令は、通常は書込みは行わない。しかしこの装置では、このような失敗した条件付き書込み命令は、条件コードを失敗したにもかかわらずやはりトラッシュ・データ・レジスタＲＴにデータ値を書き込む。これにより、条件付き書込み動作の条件コード失敗または条件コード合格に付随するはずの電力消費やタイミングの違いを全て隠す。トラッシュ・データ・レジスタＲＴは、命令内のレジスタ指定オペランドでアドレス指定できるような方法ではプログラマのモデルに現れない。
【００４２】
トラッシュ・データ・レジスタＲＴだけでなく、高から低へと低から高への移行のバランスをとるために別のレジスタ９８，１００も設けられる。専用のダミー・レジスタ９８は、トラッシュ・データ・レジスタＲＴだけでなくデータ・レジスタＲ０からＲ１２に関して設けられる。共用ダミー・レジスタ１００は、移行バランシング技術に従ってデータ・レジスタへの書込みのたびに応答して排他的ＯＲ値と排他的ＯＲ値の逆とを記憶するために設けられる。レジスタ書込み制御回路１０２は、データ・レジスタへのデータ値の書込みに応じて別のレジスタ９８、１００に書き込む該当するデータ値を生成する。この対称的書込み制御は、システム構成コプロセッサ７２からの該当するシステム構成制御フラグ信号により選択的に可能または使用禁止になる。
【００４３】
図１０はレジスタ書込み制御回路１０２の動作の概要を示す流れ図である。ステップ１０４で、回路はレジスタ書込み動作の命令を待つ。ステップ１０６で、このレジスタ書込み先が、対称的書込み制御装置が適用されるデータ・レジスタの１つかトラッシュ・データ・レジスタＲＴかを判定する。レジスタ書込み先がこれらのレジスタでない場合は処理はステップ１０８に進み、要求されたデータ値ＸがレジスタＲ１３，Ｒ１４，Ｒ１５の１つに単に書き込まれる。
【００４４】
書込みが行われるレジスタが対称的レジスタ書込みに従う可能性がある場合は、ステップ１１０で現在この機能が可能かどうか判定する。現在この機能が可能でない場合は、処理はステップ１０８に進む。この機能が可能な場合は、処理はステップ１１２に進む。
【００４５】
ステップ１１２で、レジスタ制御回路はデータ値内のビット位置毎に、その位置に書き込まれた現在のビットとその位置に前に記憶されたビットとの逆排他的ＯＲの値を計算し、次にこれと、そのビット位置に前に記憶されたダミー・レジスタ値との排他的ＯＲをとる（図１１を参照）。またレジスタ制御回路１０２は、この決定の逆と、データ値としてデータ・レジスタに書き込まれたビットの逆も計算する。これらの値を、書き込まれる全てのビットについて計算する（例えば、３ダミー３２ビット値）。
【００４６】
ステップ１１４で、ステップ１０８と同様にしてデータ値をデータ・レジスタに書き込む。ステップ１１６で、関係するレジスタ内のビット位置毎に決定された別の３つの値を別の３レジスタに書き込む。ステップ１１４と１１６とは同時に行う。図１１に関して説明するように、これにより高から低へと低から高への遷移の数と消費電力のバランスが得られる。
【００４７】
図１１はデータ書込み動作の前と後の可能なビット値の表を示す。データ値はレジスタＲｎに書き込まれる。これは対称的書込み動作機能が適用されるレジスタである。時刻ｔと時刻ｔ＋１での値が示されている。これらの値の逆は簡単に決定される。この対称的動作に従う各データ・レジスタに対して、現在データ・レジスタ内に保持されているデータ値の逆を記憶する専用のダミーレジスタ９８が設けられる。
【００４８】
共用ダミー・レジスタ１００は図１１にはレジスタＲｄで示されている。共用ダミー・レジスタＲｄ内のビット位置毎に、データ書込みが起こったときにそのビット位置に書き込まれる新しい値が、図１１の下部に示す関数で決定される。この関数により、データ値とデータ値の逆とに変化が起こらないときは、共用ダミー・レジスタ内の対応するビットとその逆とに、確かに変化が起こる。この表は、データ値が変化しないときに起こる共用ダミー・レジスタ値の変化と、データ値が変化したときに変化しないダミー・レジスタ値内の共用値を示す。このように、書込み毎に保証された固定の遷移数がある、すなわち、高から低へと低から高へのバランスされた等しい遷移数がある。
【００４９】
図１３は、書込み動作がその条件コードを失敗したときに書き込みを行うダミー・データ・レジスタＲＤの動作を示す流れ図である。ステップ１１８で、制御論理は命令を受けるのを待つ。この制御論理は命令復号器６８または他の論理でよい。ステップ１２０で、命令がその条件コードを失敗したかどうか判定する。命令コードがその条件コードを失敗しない場合は、通常はステップ１２２に進んで、その命令内のレジスタ・オペランドが指定するレジスタに書込みを行う。命令がその条件コードを失敗した場合は処理はステップ１２４に進み、ダミー・データ・レジスタ書込みが可能かどうか判定する。これが可能でない場合は処理は終了する。ダミー・データ・レジスタ書込みが可能な場合は処理はステップ１２６に進み、条件コードを失敗したにもかかわらず、条件コード失敗命令が計算したデータ値がトラッシュ・データ・レジスタＲＴに書き込まれる。これにより、条件コード合格か条件コード失敗かに関係なく、電力消費とタイミングとがバランスする。認識されるように、トラッシュ・データ・レジスタＲＴも前に説明した遷移バランシング機構に従う。
【００５０】
図１３は、少なくとも複数の命令について多重命令実行機構を備えるデータ処理装置１２８を示す。データ処理装置１２８は、少なくとも複数のジャバ（登録商標）（Ｊａｖａ（登録商標））バイトコード命令の本来の実行（ｎａｔｉｖｅ  ｅｘｅｃｕｔｉｏｎ）を支援するものである。この型のデータ処理装置と固有の実行はＰＣＴ特許出願第ＷＯ−Ａ−０２／２９５５５号に述べられている。この出願全体と、本来のハードウエア実行と、特に一層複雑なジャバ・バイトコードの選択的ソフトウエア・エミュレーションに関する開示をここに援用する。
【００５１】
ジャバ・バイトコード復号器１３０は入力信号により選択的に可能と使用禁止になってよい。ジャバ・バイトコード復号器１３０が使用禁止の場合は、受けたジャバ・バイトコードは、例外的に固有のＡＲＭサム（Ｔｈｕｍｂ）命令集合を用いてジャバ・バイトコードを処理するためのソフトウエア・エミュレーション・コードの実行を開始する。この支援コードは図に示す領域１３２内のメモリ内に記憶される。ジャバ・バイトコード・プログラム１３４もメモリ内に記憶される。ジャバ・プログラムの実行の性質を隠したい場合は、ジャバ・バイトコード復号器１３０に擬似ランダム信号を与えてこの要素を選択的に可能および使用禁止にして、ジャバ・バイトコードの命令実行機構を、混合ハードウエアおよびエミュレーション機構と純粋エミュレーション機構との間で実質的に切り替えてよい。システム構成レジスタ１３６内の構成制御値はジャバ復号器１３０が存在するかどうか、またこのジャバ復号器１３０をランダムに可能および使用禁止にすることが許されるかどうかを指定する。
【００５２】
図１４は、受けたジャバ・バイトコードの処理の概要を示す。ステップ１３８でジャバ・バイトコードを受ける。ステップ１４０で、ジャバ復号器１３０が可能かどうか判定する。ジャバ復号器１３０を擬似ランダムに可能および使用禁止にすることにより、バイトコードを必ずエミュレートするステップ１４２かまたはハードウエアで命令を実行するステップ１４６に実質的に分岐する。これにより、ジャバ・バイトコード実行に付随する電力シグネチャが隠される／マスクされる。ステップ１４６で、関係する特定のジャバ・バイトコードがジャバ復号器１３０で支援されないと判定されると、ステップ１４２でこのジャバ・バイトコードもソフトウエアでエミュレートされる。しかしジャバ・バイトコードがハードウエアで支援される場合は、ステップ１４６でハードウエアで実行される。
【図面の簡単な説明】
【００５３】
本発明の実施の形態について単なる例であるが添付の図面を参照して説明する。
【図１】固定タイミング・モードと可変タイミング・モードとで動作するデータ処理装置の略図を示す。
【図２】条件付きプログラミング命令の概要を示す。
【図３】本発明の技術に従って動作する命令復号器が実行する処理動作の一部を示す概略の流れ図である。
【図４】固定タイミング・モードにおける条件付き分岐命令の実行の概要を示す。
【図５】選択的に可能になって要求された処理動作またはダミー処理動作を実行する多数の回路部を含むデータ処理装置を示す略図である。
【図６】要求された可能信号とランダム・ダミー活動可能信号とに応じる、回路部とその関連するダミー活動可能回路との概略を示す。
【図７】擬似ランダム信号発生器として用いてよい線形シフト・フィードバック・レジスタを示す略図である。
【図８】要求された処理活動とダミー処理活動とを実行する回路部の制御の概要を示す流れ図である。
【図９】条件付き書込み動作がその条件コードを失敗したときにダミー・レジスタ書込みが行われる宛先の多数のデータ処理レジスタと、多数のダミー・レジスタと、多数の共用ダミー・レジスタと、マップされないトラッシュ・レジスタＲＴとを含むレジスタ・バンクの一部を示す略図である。
【図１０】レジスタ書込みが生じたときに起こる高から低へと低から高への移行の数をバランスさせようとするレジスタ書込み制御回路の概要を示す流れ図である。
【図１１】レジスタ書込みに関連して起こる高から低へと低から高への移行をバランスさせるよう形成された、データ・レジスタと３個の別のレジスタ内の特定のビットのビット移行の関係とを示す表である。
【図１２】書込み動作の条件コード失敗のときのトラッシュ・レジスタへの書込みの制御の概要を示す流れ図である。
【図１３】命令の多重実行機構と、少なくとも複数の命令に用いられる実行機構の擬似ランダム選択とを有する装置を示す略図である。
【図１４】図１３の装置の制御の概略を示す流れ図である。
【図１】
2006510127.tif 000002
【図２】
2006510127.tif 000003
【図３】
2006510127.tif 000004
【図４】
2006510127.tif 000005
【図５】
2006510127.tif 000006
【図６】
2006510127.tif 000007
【図７】
2006510127.tif 000008
【図８】
2006510127.tif 000009
【図９】
2006510127.tif 000010
【図１０】
2006510127.tif 000011
【図１１】
2006510127.tif 000012
【図１２】
2006510127.tif 000013
【図１３】
2006510127.tif 000014
【図１４】
2006510127.tif 000015
【国際調査報告】
2006510127.tif 000016
2006510127.tif 000017