JP2010282651A - Processing activity masking in data processing system - Google Patents

Processing activity masking in data processing system Download PDF

Info

Publication number
JP2010282651A
JP2010282651A JP2010185224A JP2010185224A JP2010282651A JP 2010282651 A JP2010282651 A JP 2010282651A JP 2010185224 A JP2010185224 A JP 2010185224A JP 2010185224 A JP2010185224 A JP 2010185224A JP 2010282651 A JP2010282651 A JP 2010282651A
Authority
JP
Japan
Prior art keywords
register
data
data processing
instruction
write
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
JP2010185224A
Other languages
Japanese (ja)
Inventor
Christophe Justin Evrard
エヴラード、クリストフ、ジャスティン
Francoise Marie Pruvost Julie-Anne
− アン、フランソワ、マリー プリュヴォ、ジュリー
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
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
Priority claimed from GB0307823A external-priority patent/GB2396229B/en
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2010282651A publication Critical patent/JP2010282651A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a data processing system having resistance against security attacks. <P>SOLUTION: Within a data processing systems supporting conditional write processing operations, a trash register is provided such that when non-write conditions are encountered a register write is made to the trash register rather than the data register specified by the conditional write operation. Thus it becomes unable to observe the power fluctuation associated with whether or not a register write does or does not occur from the outside. The trash register may be programmable enabled and disabled by a configuration parameter stored within a system configuration register. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

本発明はデータ処理システムの分野に関する。特に本発明はたとえばセキュリティを高めるために、データ処理システム内の処理動作のマスクに関するものである。   The present invention relates to the field of data processing systems. In particular, the present invention relates to a mask of processing operations within a data processing system, for example to increase security.

安全なデータを扱うデータ処理システムを提供することは知られており、そのために高度のセキュリティを確保することが望ましい。一例として、スマートカードを提供することが知られているが、これは秘密の暗号キーのような安全なデータを扱うデータ処理システムを含むものであり、偽物を防止するためにこのデータは秘密にしておかなければならない。   It is known to provide a data processing system that handles secure data, and therefore it is desirable to ensure a high degree of security. As an example, it is known to provide a smart card, which includes a data processing system that handles secure data, such as a secret cryptographic key, and keeps this data secret to prevent counterfeiting. I have to keep it.

このようなシステムのセキュリティを攻撃する方法として、タイミング分析とパワー分析とを含む方法が知られている。入力に反応するこの種のシステムのタイミング動作と電力消費の様子を観察することによって、実行中の処理に関する情報と処理中のデータを、セキュリティと妥協することができるように決定することができる。セキュリティ攻撃に対して抵抗力を持つことは非常に有利なことである。   As a method of attacking the security of such a system, a method including timing analysis and power analysis is known. By observing the timing behavior and power consumption behavior of this type of system in response to input, information about the processing being performed and the data being processed can be determined so that security can be compromised. It is very advantageous to have resistance against security attacks.

本発明の一態様として提供されるデータ処理装置は、
データ処理操作の実行時に結果データ値を発生するように動作可能な結果データ値発生回路と、
結果データ値が書き込まれるデータ処理レジスタとを含み、
結果データ発生回路により実行される少なくとも1つのデータ処理操作が条件付き書き込みデータ処理操作であり、条件付き書き込みデータ処理操作のための結果データ値は、非書き込み条件が満たされたとき、データ処理レジスタに書き込まれず、
さらに、非書き込み条件が満たされたとき、条件付き書き込みデータ処理操作の実行時に結果データ値を書き込むことができるトラッシュレジスタを含む、データ処理装置である。
A data processing device provided as one aspect of the present invention includes:
A result data value generation circuit operable to generate a result data value when performing a data processing operation;
A data processing register into which the result data value is written,
At least one data processing operation executed by the result data generation circuit is a conditional write data processing operation, and the result data value for the conditional write data processing operation is a data processing register when a non-write condition is satisfied Is not written to
Further, the data processing apparatus includes a trash register that can write a result data value when a conditional write data processing operation is executed when a non-write condition is satisfied.

データ処理レジスタへの書き込みに関連した電力消費に特徴があり、したがって、条件付き書き込みデータ処理操作に付随して実行中のデータ処理に関する情報が外部から観察することができることを本発明は認識している。ここでいう情報はすなわち、条件付き書き込みが起きたか起きなかったかに関する情報である。本発明はこの問題に取り組むものであり、条件付き書き込みデータ処理操作がその非書き込み条件を満たすときに結果値(好ましくは真の値)をトラッシュレジスタに書き込む。他の場合には書き込みは起きないであろう。したがって、書き込み条件または非書き込み条件が満たされているか否かにかかわらず、トルー(true)レジスタかまたはトラッシュレジスタへのレジスタ書き込みが常に起きる。こうしてこのシステムのセキュリティが高まる。   The present invention recognizes that the power consumption associated with writing to the data processing registers is characteristic and, therefore, information regarding the data processing being performed can be observed from the outside accompanying the conditional write data processing operation. Yes. The information here is information regarding whether or not conditional writing has occurred. The present invention addresses this problem and writes a result value (preferably a true value) to the trash register when a conditional write data processing operation satisfies its non-write condition. In other cases, writing will not occur. Therefore, a register write to a true register or a trash register always occurs regardless of whether a write condition or a non-write condition is satisfied. This increases the security of this system.

書き込み条件が満たされたときに書き込みが正常に行われるデータレジスタは、好ましくはその種のレジスタを複数個含むレジスタバンクである。この環境において、レジスタバンク内にいくつリアルデータレジスタが設けられているかとは無関係に、ダミー書き込み用に共通のトラッシュレジスタ(1つまたは複数)を使うことができる。   The data register that is normally written when the write condition is satisfied is preferably a register bank including a plurality of such registers. In this environment, a common trash register (s) can be used for dummy writing regardless of how many real data registers are provided in the register bank.

トラッシュレジスタは物理的にレジスタバンクの一部として設けることが好ましい。回路のどの部分が任意の所定の時間に動作しているかを観察することによって、情報の漏洩を防ぐためである。   The trash register is preferably physically provided as part of the register bank. This is because information leakage is prevented by observing which part of the circuit is operating at an arbitrary predetermined time.

本発明はたとえばマイクロプロセッサ方式のシステム、ディジタル信号処理システムなど、広範囲のシステムに適用可能であるが、本発明が特によく適合するのはデータ処理命令に応答するプロセッサコアを含むシステムである。これらの命令は、本技術が取り組む潜在的な脆弱性を引き起こす条件付き書き込み命令をしばしば含んでいるからである。
特定の条件が満たされたとき、条件付き書き込み操作が起きるかまたは起きないかのいずれかになるようにできることが理解されよう。
The present invention is applicable to a wide range of systems, such as microprocessor-based systems and digital signal processing systems, for example, but the present invention is particularly well suited for systems that include a processor core that responds to data processing instructions. These instructions often include conditional write instructions that cause potential vulnerabilities addressed by this technology.
It will be appreciated that when certain conditions are met, a conditional write operation may or may not occur.

できるだけ電力消費量を減らすということは、この分野における通常の技術的欲望であることは理解されよう。したがって、条件付き書き込み操作を要求しないとき、レジスタ書き込みを実行しないことが有利な機能であろうということが通常考えられるであろう。その方が電力消費量を軽減するからである。本発明の技術はこの分野におけるこの技術的欲望に逆らうものであって、たとえシステムの実処理動作のために必要でないとしても、トラッシュレジスタ書き込みを慎重に実行して、電力を消費するものである。   It will be appreciated that reducing power consumption as much as possible is a normal technical desire in this field. Thus, it would normally be considered that it would be an advantageous feature not to perform a register write when a conditional write operation is not required. This is because it reduces power consumption. The technique of the present invention counters this technical desire in this field and consumes power by carefully performing a trash register write even if it is not necessary for the actual processing operation of the system. .

本発明の好ましい実施例において、トラッシュレジスタの動作は、システム・コンフィギュレーション・レジスタに記憶されている制御信号に従って、選択的にイネーブルとディスエーブルにすることができる。このことによってトラッシュレジスタ動作のプログラマブル操作が可能になり、安全でない処理が起きているときこの機能をディスエーブルにすることにより、電力を節約することができるようになる。更に、暗号キーの処理や、パスワードの解読等々を行うときのように、必要なときのセキュリティも改善される。   In the preferred embodiment of the present invention, the operation of the trash register can be selectively enabled and disabled according to control signals stored in the system configuration register. This allows programmable operation of the trash register operation, and can save power by disabling this function when unsafe processing is occurring. Furthermore, security when necessary, such as when processing encryption keys and decrypting passwords, is improved.

前述のように、トラッシュレジスタは通常のデータレジスタと共にレジスタバンク内に物理的に配置することができるが、好ましい実施例では、トラッシュレジスタはどんなプログラム命令によっても特定することができないように、レジスタ番号にマップされない。したがってプログラマのモデルから見るとレジスタとして見えない。しかしながら、好ましい実施例においてその動作はコンフィギュレーション・パラメータによってイネーブルまたはディスエーブルにすることができる、というようにトラッシュレジスタは見える。   As mentioned above, the trash register can be physically located in the register bank along with the normal data registers, but in the preferred embodiment, the trash register cannot be specified by any program instruction. Not mapped to Therefore, it is not visible as a register from the programmer's model. However, in the preferred embodiment, the trash register appears such that its operation can be enabled or disabled by a configuration parameter.

本発明の別の態様として提供されるデータ処理方法は、
データ処理操作の実行時に結果データ値を発生するステップを備え、実行する少なくとも1つのデータ処理操作は条件付き書き込みデータ処理操作であり、非書き込み条件が満足したときに、結果データ値はデータ処理レジスタに書き込まれず、代わりにトラッシュレジスタに書き込まれる、データ処理方法である。
A data processing method provided as another aspect of the present invention includes:
A step of generating a result data value upon execution of the data processing operation, wherein at least one data processing operation to be executed is a conditional write data processing operation, and when the non-write condition is satisfied, the result data value is stored in the data processing register This is a data processing method in which data is not written to the trash register, but is written to the trash register instead.

固定タイミングモードと可変タイミングモードにおいて操作可能なデータ処理システムの概略を示す。1 shows an outline of a data processing system operable in a fixed timing mode and a variable timing mode. 条件付きプログラミング命令の概略を示す。Outlines conditional programming instructions. 本発明の技術に従って働く命令デコーダによって実行される処理操作の一部の概略を示す流れ図である。6 is a flow diagram that outlines some of the processing operations performed by an instruction decoder that operates in accordance with the techniques of the present invention. 固定タイミングモードにおける条件付き分岐命令の実行の概略を示す。An outline of execution of a conditional branch instruction in the fixed timing mode is shown. 必須の処理操作またはダミーの処理操作を選択的に実行可能にすることができる複数の回路部分を含むデータ処理システムの概略を示す。1 shows an overview of a data processing system including a plurality of circuit portions that can selectively enable a mandatory processing operation or a dummy processing operation. 必須のイネーブル信号とランダムダミー動作イネーブル信号の両方に反応することができる回路部分とそれに付随するダミー動作イネーブル回路の概略を示す。FIG. 2 shows an outline of a circuit portion capable of responding to both an essential enable signal and a random dummy operation enable signal, and an accompanying dummy operation enable circuit. FIG. 擬似ランダム信号発生器として使うことができる線形フィードバック・シフトレジスタの概略を示す。1 shows a schematic of a linear feedback shift register that can be used as a pseudo-random signal generator. 必須の処理動作とダミーの処理動作を実行する回路部分の制御の概略を示す流れ図である。It is a flowchart which shows the outline of control of the circuit part which performs essential processing operation and dummy processing operation. 複数のデータ処理レジスタ、複数のダミーレジスタ、複数の共有ダミーレジスタおよびマップされてないトラッシュレジスタRTを含むレジスタバンクの一部の概略を示す。条件付き書き込み操作がその条件コードを失敗したとき、トラッシュレジスタRTにダミーレジスタ書き込みが行われる。Fig. 2 schematically shows part of a register bank including a plurality of data processing registers, a plurality of dummy registers, a plurality of shared dummy registers and an unmapped trash register RT. When the conditional write operation fails the condition code, a dummy register write is performed to the trash register RT. レジスタ書き込みが起きたとき、ハイからローへとローからハイへの遷移が起きる回数を平衡させようとして働くレジスタ書き込み制御回路の概略を示す流れ図である。6 is a flow diagram illustrating an overview of a register write control circuit that works to balance the number of times a low-to-high transition occurs from high to low when a register write occurs. データレジスタ内の特定のビットに対するビット遷移と3個の追加レジスタに関するそれらとの間の関係を示す表である。これらのレジスタはレジスタ書き込みに付随して起きるハイからローへとローからハイへの遷移を平衡させるように構成されている。FIG. 6 is a table showing the relationship between bit transitions for specific bits in the data register and those for the three additional registers. These registers are configured to balance the high to low and low to high transitions associated with register writes. 書き込み操作がその条件コードを失敗したとき、トラッシュレジスタへの書き込み制御の概略を示す流れ図である。6 is a flowchart showing an outline of control for writing to a trash register when a write operation fails its condition code. 1個の命令に対するマルチプル命令実行メカニズムと、少なくともいくつかの命令のために採用された実行メカニズムの擬似ランダム選択とを有するシステムの概略を示す。1 shows an overview of a system having multiple instruction execution mechanisms for one instruction and a pseudo-random selection of execution mechanisms employed for at least some instructions. 図13に示したシステムの制御の概略を示す流れ図である。It is a flowchart which shows the outline of control of the system shown in FIG.

次に本発明の実施例について、図面を参照して説明する。
図1はプロセッサコア4、コプロセッサ6およびメモリ8を含むデータ処理システム2を示す。
動作時に、プロセッサコア4はメモリ8から命令とデータとを取込む。命令は命令パイプライン10に送られ、そこで命令は例えば、取込み、デコード、実行、記憶およびライトバックのようなパイプラインステージを、連続的な処理サイクルで次々と実行する。パイプライン式のプロセッサ自体は、処理性能を改善するために、部分的にオーバーラップしながらいくつかのプログラムの命令を効率的に実行する方法としてよく知られている。
Next, embodiments of the present invention will be described with reference to the drawings.
FIG. 1 shows a data processing system 2 including a processor core 4, a coprocessor 6 and a memory 8.
In operation, the processor core 4 fetches instructions and data from the memory 8. The instructions are sent to the instruction pipeline 10, where they execute pipeline stages such as, for example, fetch, decode, execute, store and write back one after another in successive processing cycles. Pipelined processors themselves are well known as a way to efficiently execute the instructions of several programs with partial overlap in order to improve processing performance.

プロセッサコア4によってメモリ8から読み出されたデータ値はレジスタバンク12に送られ、そこから乗算器14,シフタ16,加算器18のうち1つまたは複数使ってプログラム命令の制御下で処理される。アンド、オア、カウントリーディングゼロ(count leading zeros)のように論理操作を行う回路のような他のデータ操作用回路を備えることもできる。   The data value read from the memory 8 by the processor core 4 is sent to the register bank 12, from which it is processed under the control of program instructions using one or more of the multiplier 14, shifter 16 and adder 18. . Other data manipulation circuits such as AND, OR, and circuits that perform logical operations such as count leading zeros can also be provided.

図1はまたプロセッサコア4の中に命令デコーダ20を含む。これはデータ処理動作の実行を制御するために、命令パイプライン10内のプログラム命令に応答して、レジスタバンク12、乗算器14、シフタ16および加算器18のような各種の処理要素に供給される実行制御信号を発生する。一例として、デコーダ20より生ずる制御信号によって適当なオペランドがレジスタバンク12から読み出され、乗算器14、シフタ16、および加算器18のうち適当なものに供給されて作用し、レジスタバンク12にライトバックされる結果を生ずる。   FIG. 1 also includes an instruction decoder 20 in the processor core 4. This is supplied to various processing elements such as register bank 12, multiplier 14, shifter 16 and adder 18 in response to program instructions in instruction pipeline 10 to control the execution of data processing operations. Generating an execution control signal. As an example, an appropriate operand is read from the register bank 12 by a control signal generated by the decoder 20, supplied to an appropriate one of the multiplier 14, the shifter 16, and the adder 18, and written to the register bank 12. Results in being backed up.

コプロセッサ6はいくつかのコンフィギュレーション・レジスタ22を含むシステム・コンフィギュレーション・コプロセッサである。このレジスタはプログラム制御下でコンフィギュレーション制御パラメータを設定するように書き込まれる。これらのコンフィギュレーション制御パラメータは、たとえばエンディアン(endianess)などのようなデータ処理システム2の構成に関して多くの点を特定することができる。これらのコンフィギュレーション制御レジスタ22のうちの1つの中に、プロセッサコアが固定タイミングモードで動作すべきかそれとも可変タイミングモードで動作すべきかを特定するビットが含まれている。このビットは命令デコーダ20への入力として示されているが、このビットはプロセッサコア4内にある各種の他の点の動作を制御する必要性に応じてそれらの点に供給することもできることが理解されよう。この固定/可変ビットに依存して、プロセッサコア4は固定タイミングモードかそれとも可変タイミングモードのいずれかで動作する。固定タイミングモードで動作するとき、可変タイミングモードのときに可変タイミングを有する(すなわち完了するのに可変数の処理サイクルを要する)少なくとも1つのプログラム命令が、替わって強制的に固定タイミングを有するようにされる(たとえば、完了するのに最多可能数の処理サイクルを要する)。このことはまるごと抑制することができたかもしれないか否かにかかわらず、あるいは最多数より少ない処理サイクルで完了することができたかもしれないかどうかにかかわらず、行われる。命令デコーダ20は主にプログラム命令を解読してプロセッサコア4の他の要素の動作を命令する責任があるので、固定タイミングモードまたは可変タイミングモードのいずれかで動作するのに、命令デコーダ20はプロセッサコア4を制御する中で主要な役割を果たすことができる。固定タイミングモードタイプで動作するのであれば、すべての可変タイミング命令を備える必要はない。   Coprocessor 6 is a system configuration coprocessor that includes a number of configuration registers 22. This register is written to set configuration control parameters under program control. These configuration control parameters can specify a number of points regarding the configuration of the data processing system 2 such as, for example, endianess. One of these configuration control registers 22 includes a bit that specifies whether the processor core should operate in a fixed timing mode or a variable timing mode. Although this bit is shown as an input to the instruction decoder 20, this bit can also be supplied to those points as needed to control the operation of various other points within the processor core 4. It will be understood. Depending on the fixed / variable bits, the processor core 4 operates in either a fixed timing mode or a variable timing mode. When operating in fixed timing mode, at least one program instruction having variable timing (ie, requiring a variable number of processing cycles to complete) when in variable timing mode is forced to have fixed timing instead. (E.g., requiring the most possible number of processing cycles to complete). This is done whether or not it could have been suppressed entirely or whether it could have been completed in fewer processing cycles. Since the instruction decoder 20 is primarily responsible for decoding program instructions and commanding the operation of other elements of the processor core 4, the instruction decoder 20 operates in either a fixed timing mode or a variable timing mode. It can play a major role in controlling the core 4. It is not necessary to have all variable timing instructions if operating in a fixed timing mode type.

上述の説明によりコンフィギュレーション・レジスタ22の中の1ビットが固定タイミングモードと可変タイミングモードの間の切り替えとして示されていることが理解されよう。替わりに、コンフィギュレーション・レジスタ22内に複数のビットを備えて、たとえば条件付き命令動作、一様分岐動作、ディスエーブル早期終了などのような各種の命令の固定タイミング動作または可変タイミング動作を個別にイネーブルとディスエーブルするようにしてもよい。   It will be understood from the above description that one bit in the configuration register 22 is shown as switching between a fixed timing mode and a variable timing mode. Instead, the configuration register 22 is provided with a plurality of bits to individually perform fixed or variable timing operations for various instructions, such as conditional instruction operations, uniform branch operations, disable early termination, etc. It may be enabled and disabled.

図2は条件付き命令の略図を示す。この条件付き命令は、いくつかの条件付き命令だけ、または実質的に完全に条件付きであるARM命令セットのような命令セットの一部だけを含む命令セットの一部とすることができる。条件コード26は関連の命令が実行されるかまたは実行されないかという1組のプロセッサ状態条件を符号化する。たとえば、条件コード26は、もしそのシステムで今設定されている条件コードがゼロという結果を示している、けた上げが起きた、オーバフローが起きたなどがあれば、命令24が実行されないということを規定するように構成することができる。このタイプの命令は効率的なプログラム・コーディングを行うのに使うことができる。命令はその条件コードにかかわらず実行するが、その結果がプロセッサの状態に影響するように結果の書き込みをしないという点で、固定/可変ビットは少なくとも部分的に条件付き動作を抑制する。   FIG. 2 shows a schematic diagram of conditional instructions. This conditional instruction may be part of an instruction set that includes only some conditional instructions or only a part of an instruction set such as the ARM instruction set that is substantially fully conditional. Condition code 26 encodes a set of processor state conditions whether the associated instruction is executed or not. For example, the condition code 26 indicates that the instruction 24 will not be executed if a condition code currently set in the system indicates zero, a carry has occurred, an overflow has occurred, etc. It can be configured to prescribe. This type of instruction can be used for efficient program coding. The instruction executes regardless of its condition code, but the fixed / variable bits at least partially suppress conditional operations in that the result is not written so that the result affects the state of the processor.

図3は命令デコーダ20によって実行される処理操作の一部分の概略を示す。図3はこれらの処理操作を論理シーケンスとして示すが、実際にはこれらの処理操作は少なくとも部分的には並列にまたは異なる順番で実行してもよい。   FIG. 3 shows an overview of a portion of the processing operations performed by the instruction decoder 20. Although FIG. 3 illustrates these processing operations as a logical sequence, in practice, these processing operations may be performed at least partially in parallel or in a different order.

ステップ28において、命令デコーダ20は新しい命令が実行されるのを待つ。新しい命令を受けると処理はステップ30に進み、そこで新しい命令に付随する条件コードが読まれる。ステップ32でこれらの条件コードがそのシステムに今ある条件コードと比較される。そのシステムに今あるこれらの条件コードは、これらの条件コードを更新したであろう直前の命令または最新の命令のいずれかにおける前の処理活動の結果である。   In step 28, instruction decoder 20 waits for a new instruction to be executed. When a new instruction is received, the process proceeds to step 30 where the condition code associated with the new instruction is read. In step 32, these condition codes are compared with the condition codes currently in the system. These condition codes that are now in the system are the result of previous processing activity in either the immediately preceding instruction or the most recent instruction that would have updated these condition codes.

ステップ34で今実行中の命令の条件コード26と現在ある条件コードとの照合のためのチェックが行われる。もしも一致しなければ、処理はステップ36に進み、現在の命令の実行がスタートする。図3は一致しなかったときに実行されるシステムを示すが、別の実施例では一致したときに実行されるシステムとすることもできるであろう。   In step 34, a check is performed to check the condition code 26 of the instruction currently being executed and the existing condition code. If not, the process proceeds to step 36 and execution of the current instruction starts. Although FIG. 3 shows a system that executes when there is no match, in another embodiment it could be a system that runs when there is a match.

ステップ36の次に処理はステップ38に進み、そこで命令の早期終了が可能か否かに関してチェックが行われる。この早期終了は例えば、オペランドの一つがゼロまたは1のような特定の値を有するという理由によるか、または特定の部分的な結果が生じた次の処理サイクル時に起きる。もし早期終了が可能であれば、処理はステップ40に進み、そこでプロセッサコア4が今固定タイミングモードで動いているのかそれとも可変タイミングモードで動いているのかというチェックが行われる。もしプロセッサが可変タイミングモードにあれば、処理はステップ42に進み、その命令は結果を適当に戻して早期に終了し、処理はステップ28に戻る。   Following step 36, the process proceeds to step 38, where a check is made as to whether the instruction can be terminated early. This premature termination occurs, for example, because one of the operands has a specific value such as zero or one, or during the next processing cycle where a specific partial result has occurred. If early termination is possible, the process proceeds to step 40 where a check is made as to whether the processor core 4 is now operating in a fixed timing mode or a variable timing mode. If the processor is in variable timing mode, processing proceeds to step 42, the instruction returns the result appropriately and ends prematurely, and processing returns to step 28.

もしステップ40における決定によりシステムは固定タイミングモードにあるということならば、早期終了が可能か否かにかかわらず、処理はステップ44に進む。ステップ44はステップ38で早期終了が可能でないと判断されたときにも進むことができるが、その命令を1サイクルだけ実行する。乗算、除算、加算または減算のようなマルチサイクルの命令の場合、これらは一般に実行するのに数サイクルを要するので、ステップ44の次に処理はステップ46に進み、そこでその命令に関して最多数のサイクルが既に実行されたかまだかに関する判断がなされる。もし最多数のサイクルが実行されたのであれば、結果が生じているであろう。もし早期終了が可能であって、システムが強制的に次の処理サイクルを実行中であったならば、ステップ46は、このタイプの命令の最多数の処理サイクルに達したときに、この強制実行を止めるべきであることを依然として示しているであろう。もし最多数の処理サイクルがまだ実行されてなければ、処理はステップ38に戻る。   If the determination in step 40 indicates that the system is in fixed timing mode, processing proceeds to step 44 regardless of whether early termination is possible. Step 44 can proceed even if it is determined in step 38 that early termination is not possible, but the instruction is executed for one cycle. In the case of multi-cycle instructions such as multiply, divide, add or subtract, these generally require several cycles to execute, so after step 44 processing proceeds to step 46 where there is the largest number of cycles for that instruction. A determination is made as to whether has already been executed. If the largest number of cycles have been executed, the result will have occurred. If early termination is possible and the system was forcibly executing the next processing cycle, step 46 will execute this forced execution when the maximum number of processing cycles for this type of instruction has been reached. Will still show that it should stop. If the maximum number of processing cycles has not yet been executed, processing returns to step 38.

もしステップ34の照合結果が肯定であれば、処理はステップ48に進む。この例においてステップ44の照合で肯定ということは特定の命令の実行を抑制すべきであることを示す。ステップ48はシステムが現在強制実行モードであるか否かを判断する。もし強制実行モードにあれば、処理はステップ50に進み、そこで命令の強制ダミー実行が行われるであろう。ダミー実行が行われると、その結果が命令自体に特定されている行き先ではなく、トラッシュレジスタ(図1のトラッシュレジスタ51参照)に書き込まれる。それはシステムの状態があるプログラム命令によって修正されるのを防止するためである。そのプログラム命令は実質的に変わらない電力消費量を維持しながら抑制されるべきだったもので、実行されるはずのものではない。もしステップ48でシステムが強制実行モードではなく可変タイミングモードにあると判断されれば、処理はステップ50を迂回してステップ28に戻る。このときプログラム命令は通常のやり方で抑制される。   If the collation result in step 34 is positive, the process proceeds to step 48. In this example, affirmative in the collation in step 44 indicates that execution of a specific instruction should be suppressed. Step 48 determines whether the system is currently in forced execution mode. If in forced execution mode, processing proceeds to step 50 where a forced dummy execution of the instruction will be performed. When the dummy execution is performed, the result is written in the trash register (see the trash register 51 in FIG. 1), not the destination specified in the instruction itself. This is to prevent the system status from being modified by certain program instructions. The program instructions should have been suppressed while maintaining substantially unchanged power consumption and should not be executed. If it is determined in step 48 that the system is not in the forced execution mode but in the variable timing mode, the process bypasses step 50 and returns to step 28. At this time, the program instruction is suppressed in a normal manner.

図3は、ダミー実行がすべての条件コードの失敗した(failed)命令に適用されて、命令の早期終了がすべて抑制される一般的なシステムを示していることを理解されよう。実際、これらの技術を条件付き命令と早期終了可能な命令のサブセットに適用することも可能である。前述のマルチコンフィギュレーション制御ビットを使って、早期終了抑制のような機能を選択的に働かせるのに使うことができようが、条件コード不成功(fail)に続くダミー実行のような他のものには適用されないであろう。   It will be appreciated that FIG. 3 illustrates a typical system in which dummy execution is applied to failed instructions for all condition codes so that all early termination of instructions is suppressed. In fact, it is possible to apply these techniques to conditional instructions and a subset of instructions that can be prematurely terminated. The above multi-configuration control bits can be used to selectively activate features such as early termination suppression, but to other things such as dummy execution following a condition code failure (fail). Will not apply.

図4は固定タイミングモードで条件付き分岐命令を実行することの概略を示す。命令A、Bのシーケンスは条件付き分岐命令BEQ(等しいときに分岐、branch upon equal)に到達するまで実行される。この命令は、もし前の処理と結果が同じであることを示すフラグがセットされていれば、特定の分岐が実行されて、もしこのフラグがセットされていなければ、抑制されるという動作をエンコードする。条件コードがパスする、すなわち条件コードが一致すると、分岐が採用されて、処理は命令X,Y等々へ進む。もしも条件コードが不成功であれば、まるごと抑制する替わりにBEQ命令は直後の命令Cへの分岐を実行する。これは、もしもBEQ命令が既に抑制されていて全く実行されなかったならば到達していたであろうのと同じ命令である。しかしながら、固定タイミングモードで、条件コードがパスしたか不成功だったかにかかわらず、BEQは同じ数の処理サイクルの消費を実行したであろう。このことは、安全なデータへのアクセスを得ようとしている人に対して、前に実行したデータ処理操作の結果をぼかすのに役立つ。   FIG. 4 shows an overview of executing a conditional branch instruction in fixed timing mode. The sequence of instructions A and B is executed until a conditional branch instruction BEQ (branch upon equal) is reached. This instruction encodes the behavior that a particular branch is executed if the flag is set to indicate that the result is the same as the previous process, and is suppressed if this flag is not set. To do. If the condition code passes, that is, if the condition codes match, a branch is taken and processing proceeds to instructions X, Y, etc. If the condition code is unsuccessful, the BEQ instruction executes a branch to the next instruction C instead of suppressing the whole code. This is the same instruction that would have been reached if the BEQ instruction was already suppressed and not executed at all. However, in fixed timing mode, the BEQ would have consumed the same number of processing cycles, regardless of whether the condition code passed or failed. This helps to blur the results of previously performed data processing operations for those who are seeking access to secure data.

図5はプログラマブル・プロセッサコアの形式をしたデータ処理装置52の概略を示す。これはプログラム命令Iに応答してデータDを処理する。データ処理装置52はレジスタバンク54、乗算器56、シフタ58、加算器60,算術論理ユニット62,ロードストア・ユニット64,データパイプライン66,命令デコーダ68,およびランダムクロック・ゲーティング回路70を含む。システム・コンフィギュレーション・コプロセッサCP15 72がプロセッサコアに接続されている。システム・コンフィギュレーション・コプロセッサCP15 72はシステム・コンフィギュレーション・レジスタ74を有し、これは複数のフラグ値を保有していて、それぞれがデータ処理システム52に含まれる各種の回路部分の擬似ランダムダミー動作をイネーブルまたはディスエーブルにする役目を果たす。データ処理システム52は一般にもっと多くの回路要素を含むが、これらは明瞭化のため図では省略してあることが理解されよう。   FIG. 5 shows an overview of a data processing device 52 in the form of a programmable processor core. This processes data D in response to program instruction I. The data processor 52 includes a register bank 54, a multiplier 56, a shifter 58, an adder 60, an arithmetic logic unit 62, a load store unit 64, a data pipeline 66, an instruction decoder 68, and a random clock gating circuit 70. . A system configuration coprocessor CP1572 is connected to the processor core. The system configuration coprocessor CP15 72 has a system configuration register 74, which holds a plurality of flag values, each of which is a pseudo-random dummy for various circuit portions included in the data processing system 52. Serves to enable or disable operation. It will be appreciated that the data processing system 52 generally includes more circuit elements, which are omitted from the figure for clarity.

乗算器56にダミー活動イネーブル回路76が付随していて、これは適当なときに乗算器56内でダミー動作をイネーブルにする役目を果たす。あるいは実行中のプログラム命令がその要求を実行したとき、必須の動作をイネーブルにする信号を通過させて乗算器56を動かす役目を果たす。前述のように、同様なダミー動作イネーブル回路78,80,82,84がそれぞれ他の回路部分58,60,62,64に付随している。   Associated with multiplier 56 is a dummy activity enable circuit 76, which serves to enable dummy operations within multiplier 56 when appropriate. Alternatively, when the executing program instruction executes the request, it serves to move the multiplier 56 by passing a signal that enables the required operation. As previously described, similar dummy operation enable circuits 78, 80, 82, 84 are associated with the other circuit portions 58, 60, 62, 64, respectively.

動作時には、実行すべき命令が命令パイプライン66を通って命令デコーダ68に送られ、命令に駆動されるイネーブル信号を発生して、これらの信号がそれぞれの回路部分に加えられる。これらのイネーブル信号はデータ処理システム52を通るデータ通路を選択して、それらの入力を読みとるべき回路部分を動かし、特定の処理を実行して、それぞれの出力信号を発生する。一例として、乗算器の累算演算はレジスタバンク54からデータ値を読みとり、これらを乗算器56と加算器60に加えて、その結果をレジスタバンク54にライトバックすることができよう。したがって、レジスタバンク54、乗算器56および加算器60はすべて必須の動作イネーブル信号に従うことになろう。これらの信号はこれらの回路の動作をイネーブルにしてそれらを選択し、完全なデータ通路を形成した。種々の回路が種々の電力消費特性とタイミング特性を有する。それらのパラメータを観察することによって、どの命令が実行中であるかを外部で観察することができるであろう。したがって、実行中の命令にとって必要とされない他の回路の擬似ランダムダミー動作もイネーブルになる。このようにして、たとえシフタ58が特定の乗算器の累算命令を実行中に使われていないとしても、擬似ランダムイネーブルにされて、その入力に加えられる値を何であれシフトすることによって電力を消費するであろう。回路の状態を望まない状態に変えるこのダミー動作を避けるために、その出力のラッチはイネーブルとされないであろう。そのダミー動作は必須の動作を邪魔するかもしれない、たとえばある回路は出力値を持続するように装うかもしれないのである。ダミー動作は関係する回路に関して正規の動作タイミングと一致する期間にイネーブルになる。   In operation, instructions to be executed are sent through instruction pipeline 66 to instruction decoder 68, generating enable signals driven by the instructions, and these signals being applied to the respective circuit portions. These enable signals select the data path through the data processing system 52, move the circuit portions to read their inputs, perform specific processing, and generate respective output signals. As an example, a multiplier accumulation operation could read data values from register bank 54, add them to multiplier 56 and adder 60, and write the result back to register bank 54. Accordingly, register bank 54, multiplier 56 and adder 60 will all follow the mandatory operation enable signal. These signals enabled the operation of these circuits and selected them, forming a complete data path. Different circuits have different power consumption characteristics and timing characteristics. By observing those parameters, it will be possible to observe externally which instruction is being executed. Accordingly, pseudo-random dummy operations of other circuits that are not required for the instruction being executed are also enabled. In this way, even if the shifter 58 is not used during execution of a particular multiplier's accumulation instruction, it is pseudo-random enabled to save power by shifting whatever value is applied to its input. Will consume. To avoid this dummy operation that changes the state of the circuit to an undesired state, the latch of its output will not be enabled. The dummy operation may interfere with the required operation, for example a circuit may pretend to sustain the output value. The dummy operation is enabled in a period that coincides with the normal operation timing with respect to the related circuit.

ランダムクロック・ゲーティング回路70は種々のそれぞれの回路用に複数の擬似ランダムイネーブル信号を受信し、これらをゲートしてそれぞれの回路に加える。このことは、システム・コンフィギュレーション・コプロセッサ72の中のシステム・コンフィギュレーション・レジスタ74から読み出したコンフィギュレーション・パラメータの制御下で行われる。これらのコンフィギュレーション・フラグにより、ダミー動作はシフタ58、ALU62および乗算器56に対してイネーブルにすべきであって、加算器60またはロードストア・ユニット64に対してはイネーブルにすべきでないことを示す。種々の擬似ランダムダミー・イネーブル信号は、関係するこれらのそれぞれの回路部分と整合することができるように、種々の擬似ランダムダミー特性が加えられることを可能にする。一例として、種々の回路部分の正規のタイミングに付随して別の最低のイネーブル時間があるかもしれない。   Random clock gating circuit 70 receives a plurality of pseudo-random enable signals for various respective circuits, gates them and applies them to the respective circuits. This is done under the control of configuration parameters read from the system configuration register 74 in the system configuration coprocessor 72. These configuration flags indicate that dummy operations should be enabled for shifter 58, ALU 62 and multiplier 56, and not for adder 60 or load store unit 64. Show. Various pseudo-random dummy enable signals allow various pseudo-random dummy characteristics to be added so that they can be matched with their respective circuit portions involved. As an example, there may be another minimum enable time associated with the normal timing of the various circuit portions.

全体的に見て、命令デコーダ68は必須の動作をイネーブルにする回路として働くことが理解されるであろう。これは現在実行中の命令によって特定されたデータ処理操作を実行するのに必要な回路をイネーブルにするものである。この必須の動作に重畳して、他の回路部分内で各種のダミー動作がイネーブルになるであろう。これらはデータ処理システム52の残りの各所に設けられたダミー動作制御回路によって刺激されるものである。ダミー動作は必須の動作に付随する電力消費とタイミング特性をマスクする役を果たす。   Overall, it will be appreciated that the instruction decoder 68 acts as a circuit that enables the required operations. This enables the circuitry necessary to perform the data processing operation specified by the currently executing instruction. Overlapping this essential operation, various dummy operations will be enabled in other circuit portions. These are stimulated by dummy operation control circuits provided in the remaining portions of the data processing system 52. The dummy operation serves to mask the power consumption and timing characteristics associated with the required operation.

図6に必須イネーブル信号enとダミー・イネーブル信号ranの両方の支配を受ける回路部分86の概略を示す。この回路部分86はラッチのシーケンスとして考えることができ、ラッチの間に処理ロジックがデータ値を処理する。本物の必須の動作が必要なとき、回路部分86を通るデータ路を提供するラッチはすべてイネーブルとなり、入力ラッチと出力ラッチの間で必要な処理が実行されるであろう。ダミー動作が指示されているとき、入力ラッチと中間ラッチのみがイネーブルになる。したがって、全回路部分を通るデータ路は提供されず、その回路部分により作られる出力値は変わらない。   FIG. 6 shows an outline of a circuit portion 86 that is controlled by both the essential enable signal en and the dummy enable signal ran. This circuit portion 86 can be thought of as a sequence of latches, during which processing logic processes data values. When genuine required operation is required, all latches that provide a data path through the circuit portion 86 will be enabled and any necessary processing will be performed between the input and output latches. When the dummy operation is instructed, only the input latch and the intermediate latch are enabled. Thus, a data path through all circuit portions is not provided and the output value produced by that circuit portion remains unchanged.

図7は擬似ランダムクロック信号を発生するのに使われるタイプの線形フィードバック・シフトレジスタを示す。これらのクロック信号は図5のランダムクロック・ゲーティング回路72に提供することができる。種々の回路部分に別々の擬似ランダム信号発生器を提供することができる。種々の擬似ランダム発生器に付随する固定クロック周波数は、この回路部分の特性に整合するように、かつ必要に応じてマスキング操作を更にあいまいにするように変更することができる。   FIG. 7 shows a linear feedback shift register of the type used to generate a pseudo-random clock signal. These clock signals can be provided to the random clock gating circuit 72 of FIG. Separate pseudo-random signal generators can be provided for the various circuit portions. The fixed clock frequency associated with the various pseudo-random generators can be changed to match the characteristics of this circuit portion and to further obscure the masking operation as needed.

図8は回路部分に対するイネーブル信号の制御の概略を示す。ステップ88で命令デコーダ68からイネーブル信号enを受信したか否かという判断がなされる。もしそのようなイネーブル信号を受信しておれば、処理はステップ90に進む。命令デコーダ68から受信したイネーブル信号は、デコード中の本物のプログラム命令にしたがって、必須の処理動作が必要であることを示す。したがって、ステップ90は回路部分に対して入力、出力およびクロック信号をイネーブルにする。もしステップ88で命令レジスタからイネーブル信号enをまったく受信していなければ、処理はステップ92に進み、そこでその回路部分のダミー操作が許されるか否かが判断される。もしダミー操作が許されていれば、処理はステップ94に進み、そこでその回路部分に対する入力とクロックがイネーブルにされるが、その回路部分からの出力はイネーブルにされない。それから回路部分はダミー動作を引き受ける。もしもステップ92でシステム・コンフィギュレーション・パラメータにより指示されたようにダミー操作が許されなかったと判断すれば、処理はステップ94を迂回して終わる。   FIG. 8 shows an outline of control of the enable signal for the circuit portion. In step 88, it is determined whether or not the enable signal en is received from the instruction decoder 68. If such an enable signal has been received, processing proceeds to step 90. The enable signal received from the instruction decoder 68 indicates that an essential processing operation is required according to the genuine program instruction being decoded. Thus, step 90 enables input, output and clock signals for the circuit portion. If no enable signal en has been received from the instruction register at step 88, the process proceeds to step 92 where it is determined whether dummy operation of the circuit portion is allowed. If dummy operations are allowed, processing proceeds to step 94 where the input and clock for that circuit portion are enabled but the output from that circuit portion is not enabled. Then the circuit part takes on the dummy operation. If it is determined at step 92 that the dummy operation is not allowed as indicated by the system configuration parameter, the process ends by bypassing step 94.

図8に示した処理はシーケンシャルな流れ図の形をしていることが理解されよう。実際、この制御は異なるシーケンスでも実行することができ、それにはデータ処理システム52に展開された回路要素を使う。操作が順次的に実行されるように示されているが、実際には並列に実行することができる、または制御機能を修正することができる。全体的に見て、個々の回路部分はイネーブルになると、適切なプログラム命令に応答して正規の必須の操作を実行するだろう。そして付随するコンフィギュレーション・パラメータによって許されたとき、ダミー動作を実行するであろう。   It will be appreciated that the process illustrated in FIG. 8 is in the form of a sequential flowchart. In fact, this control can be performed in different sequences, using circuit elements deployed in the data processing system 52. Although the operations are shown to be performed sequentially, in practice they can be performed in parallel or the control functions can be modified. Overall, when individual circuit portions are enabled, they will perform regular and mandatory operations in response to appropriate program instructions. It will then perform a dummy operation when allowed by the accompanying configuration parameters.

図9はレジスタバンク96の概略を示す。このレジスタバンクは英国、ケンブリッジのARM社により設計されたプロセッサにしたがうユーザモード操作のためのARMプロセッサ・プログラマズ・モデルに基づいている。実際、他のプロセッサモード用に追加のレジスタを備えることができるが、これらは明瞭化のために省略してある。データ値を保持するために通常のレジスタR0〜R15が設けられている。レジスタR13、R14およびR15は一般にプログラムカウンタ値、分岐リターンアドレス値およびスタックポインタを記憶する役目をする。これらはセキュリティに無関係のデータ値であるという傾向にある。したがって、データ書き込み時の遷移平衡はR13、R14、R15にとって必要でない。トラッシュレジスタRTがレジスタバンク96内に設けられている。これは条件コードを失敗した条件付き書き込みに付随して使われる。したがって、条件コードを失敗した条件付き書き込み命令は通常どんな書き込みもしないであろう。しかしながら、このシステムを使えば、たとえ条件コードが失敗したとしても、この失敗した条件付き書き込み命令はトラッシュデータレジスタRTにデータ値を書き込む。条件付き書き込み操作の条件コード失敗または条件コードパスに付随して電力消費量またはタイミングに何らかの差を生ずるかもしれないが、このことがその差をマスクする。トラッシュデータレジスタRTは、命令の中のレジスタを特定するオペランドでアドレス可能になるようにして、プログラマズモデルには現れない。   FIG. 9 shows an outline of the register bank 96. This register bank is based on the ARM processor programmers model for user mode operation according to a processor designed by ARM, Cambridge, UK. In fact, additional registers may be provided for other processor modes, but these are omitted for clarity. Ordinary registers R0 to R15 are provided to hold data values. Registers R13, R14 and R15 generally serve to store program counter values, branch return address values and stack pointers. These tend to be data values unrelated to security. Therefore, transition balance at the time of data writing is not necessary for R13, R14, and R15. A trash register RT is provided in the register bank 96. This is used in conjunction with a conditional write that failed the condition code. Thus, a conditional write instruction that fails the condition code will typically not do any writing. However, using this system, even if the condition code fails, the failed conditional write instruction writes a data value to the trash data register RT. Any difference in power consumption or timing may accompany the condition code failure or condition code path of a conditional write operation, which masks the difference. The trash data register RT does not appear in the programmer's model so that it can be addressed with an operand that identifies the register in the instruction.

トラッシュデータレジスタRTと同様に、ハイからローとローからハイへの遷移を平衡させる目的で、追加のレジスタ98,100も設けられる。専用のダミーレジスタ98がトラッシュデータレジスタRTと同様にデータレジスタR0からR12に関して設けられる。共有ダミーレジスタ100が排他的ORの反転値と排他的OR値を記憶するために設けられる。これは遷移平衡技術に従ったデータレジスタへの各書き込みに応答して動作する。レジスタ書き込み制御回路102はデータレジスタへのデータ値の書き込みに応答して、追加のレジスタ98,100に書き込まれる適切なデータ値を発生する働きをする。この対称型書き込み制御は、システム・コンフィギュレーション・コプロセッサ72から生ずる適切なシステム・コンフィギュレーション・制御フラグによって、選択的にイネーブルとディスエーブルにされる。   Similar to the trash data register RT, additional registers 98 and 100 are also provided for the purpose of balancing the transition from high to low and from low to high. A dedicated dummy register 98 is provided for the data registers R0 to R12, similar to the trash data register RT. A shared dummy register 100 is provided for storing an exclusive OR inversion value and an exclusive OR value. It operates in response to each write to the data register according to the transition balance technique. The register write control circuit 102 serves to generate appropriate data values to be written to the additional registers 98, 100 in response to writing data values to the data registers. This symmetric write control is selectively enabled and disabled by appropriate system configuration control flags originating from the system configuration coprocessor 72.

図10はレジスタ書き込み制御回路102の操作の概略を示す流れ図である。ステップ104で、回路はレジスタ書き込み操作が命令されるのを待つ。ステップ106で、このレジスタ書き込みが、対称型書き込み制御システムが適用されるデータレジスタのうちの1個に対するものか、あるいはトラッシュデータレジスタRTのうちの1個に対するものか否かが判断される。もしレジスタ書き込みがこれらのレジスタに対するものでなければ、処理はステップ108に進み、レジスタR13、R14およびR15のうちの1個に対して要求されたデータ値Xの単純書き込みがなされる。   FIG. 10 is a flowchart showing an outline of the operation of the register write control circuit 102. In step 104, the circuit waits for a register write operation to be commanded. In step 106, it is determined whether this register write is for one of the data registers to which the symmetric write control system is applied or for one of the trash data registers RT. If the register write is not for these registers, the process proceeds to step 108, where the requested data value X is simply written to one of the registers R13, R14 and R15.

もし書き込み中のレジスタが対称型レジスタ書き込みに従うのが可能であれば、ステップ110はこの機能が現在イネーブルであるか否かを判断する働きをする。もしもこの機能が現在イネーブルでなければ、処理はステップ108に進む。もしこの機能がイネーブルであれば、処理はステップ112に進む。   If the register being written is capable of following a symmetric register write, step 110 serves to determine whether this function is currently enabled. If this feature is not currently enabled, processing proceeds to step 108. If this function is enabled, processing proceeds to step 112.

ステップ112で、レジスタ制御回路はデータ値内の各ビットの位置を計算する。値はその位置に書き込み中の現在のビットとその位置に先に記憶されたビットとの反転排他的オアである。それからそのビット位置に対して先に記憶されたダミーレジスタ値と排他的オアがとられる(図11参照)。レジスタ制御回路102はまた決定の逆も同様に計算する。そのビットの反転値がデータレジスタへのデータ値として書き込まれる。これらの値は書き込み中のすべてのビットに対して計算される(たとえば、3個のダミー32ビット値)。   At step 112, the register control circuit calculates the position of each bit in the data value. The value is the exclusive exclusive OR of the current bit being written at that location and the bit previously stored at that location. Then, an exclusive OR with the previously stored dummy register value is taken for that bit position (see FIG. 11). Register control circuit 102 also calculates the inverse of the decision as well. The inverted value of the bit is written as the data value to the data register. These values are calculated for all bits being written (eg, three dummy 32-bit values).

ステップ14でステップ108と同様にしてデータ値がデータレジスタに書き込まれる。ステップ116でレジスタ内の各ビット位置に対して決められた3つの追加の値が3つの追加のレジスタに書き込まれる。ステップ114と116は同時に起こる。図11で後述するが、この結果、ハイからローとローからハイへの遷移の数が平衡して、電力が消費される。   In step 14, the data value is written to the data register in the same manner as in step 108. In step 116, the three additional values determined for each bit position in the register are written to the three additional registers. Steps 114 and 116 occur simultaneously. As will be described later with reference to FIG. 11, as a result, the number of transitions from high to low and from low to high is balanced and power is consumed.

図11はデータ書き込み操作の前後における可能なビット値の表を示す。データ値がレジスタRnに書き込まれている。このレジスタは対称型書き込み操作が適用されるレジスタである。時刻tと時刻t+1における値が示されている。これらの値の反転値は単純に決定される。この対称型操作に従う各データレジスタには専用のダミーレジスタ98が供給されていて、ダミーレジスタ98はデータレジスタに現在保持されているデータ値の反転値を記憶する。   FIG. 11 shows a table of possible bit values before and after a data write operation. A data value is written to the register Rn. This register is a register to which a symmetric write operation is applied. Values at time t and time t + 1 are shown. The inverse of these values is simply determined. A dedicated dummy register 98 is supplied to each data register according to this symmetrical operation, and the dummy register 98 stores an inverted value of the data value currently held in the data register.

共有ダミーレジスタ100は図11ではRdとして示されている。共有ダミーレジスタRd内の各ビット位置毎に、データ書き込みが起きたときそのビット位置に書き込むべき新しい値が、図11の下段に示した関数によって決定される。この関数は、データ値とデータ値の反転値に変化が無ければ、共有ダミーレジスタ内の対応するビットとその反転値に変化が起きることを確実に保証するものである。この表はデータ値が変化しないときに起きる共有ダミーレジスタにおける変化と、データ値が変化するときに変わらないダミーレジスタの共有値とを示すものである。したがって、各書き込み毎の遷移固定数が保証されている、すなわちハイからローとローからハイへの遷移数が等しく平衡している。   The shared dummy register 100 is shown as Rd in FIG. For each bit position in the shared dummy register Rd, a new value to be written to the bit position when data writing occurs is determined by the function shown in the lower part of FIG. This function ensures that if the data value and the inverted value of the data value do not change, the corresponding bit in the shared dummy register and the inverted value will change. This table shows the change in the shared dummy register that occurs when the data value does not change and the shared value of the dummy register that does not change when the data value changes. Therefore, a fixed number of transitions is guaranteed for each write, ie, the number of transitions from high to low and from low to high are equally balanced.

図12は、書き込み操作がその条件コードを失敗したときに書き込みを行うダミーデータレジスタRDの動作を示す流れ図である。ステップ118で、制御論理装置は受信すべき命令を待つ。この制御論理装置は命令デコーダ68または他の論理装置でよい。ステップ120は命令がその条件コードを失敗したか否かを判断する。もしも命令がその条件コードを失敗していなければ、その命令はステップ122で正常に実行されて、その命令の中のレジスタオペランドにより特定されたレジスタにその書き込みを行う。もしも命令がその条件コードを失敗していれば、処理はステップ124に進み、そこでダミーレジスタ書き込みがイネーブルになっているか否かの判断が行われる。もしこれらがイネーブルになっていなければ、処理は終わる。もしダミーレジスタ書き込みがイネーブルであれば、処理はステップ126に進む。ステップ126で、たとえ条件コードが失敗していても、条件コードが失敗した命令によって計算されたデータ値の書き込みがトラッシュデータレジスタRTに対してなされる。このことが条件コードのパスか失敗かにかかわらず、電力消費とタイミングを平衡させる。トラッシュデータレジスタRTもまた前述の遷移平衡メカニズムに従うことが理解されよう。   FIG. 12 is a flow diagram illustrating the operation of the dummy data register RD that writes when a write operation fails its condition code. At step 118, the control logic unit waits for an instruction to receive. This control logic unit may be an instruction decoder 68 or other logic unit. Step 120 determines whether the instruction has failed its condition code. If the instruction has not failed its condition code, the instruction is successfully executed at step 122 and writes to the register specified by the register operand in the instruction. If the instruction has failed its condition code, processing proceeds to step 124 where a determination is made as to whether dummy register writing is enabled. If they are not enabled, the process ends. If dummy register write is enabled, the process proceeds to step 126. In step 126, even if the condition code has failed, the data value calculated by the instruction whose condition code has failed is written to the trash data register RT. This balances power consumption and timing regardless of whether the condition code passes or fails. It will be appreciated that the trash data register RT also follows the transition balance mechanism described above.

図13は少なくともいくつかの命令にはマルチプル命令実行メカニズムが備わっているデータ処理システム128を示す。データ処理システム128は少なくともいくつかのJava(登録商標)バイトコード命令のネイティブ実行をサポートするタイプのものである。このタイプのデータ処理システムとネイティブ実行(native execution)は公開されたPCT特許出願番号、WO−A−02/29555、に記載されている。この公開された出願すべてと、特にネイティブ・ハードウェア実行ともっと複雑なJava(登録商標)バイトコードの選択性のソフトウェア・エミュレーションに関する記述を参考文献としてここに組み入れる。   FIG. 13 shows a data processing system 128 in which at least some instructions have multiple instruction execution mechanisms. Data processing system 128 is of a type that supports native execution of at least some Java® bytecode instructions. This type of data processing system and native execution is described in published PCT patent application number WO-A-02 / 29555. All of this published application and, in particular, a description of software emulation of native hardware implementation and more complex Java bytecode selectivity are incorporated herein by reference.

Java(登録商標)のバイトコードデコーダ130は入力信号により選択的にイネーブルとディスエーブルになる。Java(登録商標)のバイトコード・デコーダ130がディスエーブルになると、受信したバイトコードは例外をトリガするだろう。例外はネイティブARMサム命令セットを使ってJava(登録商標)バイトコードを操作するために、ソフトウェア・エミュレーションコードの実行を開始する。このサポートコードは図示のようにエリア132内のメモリに記憶される。Java(登録商標)バイトコードプログラム134もまたメモリ内に記憶される。Java(登録商標)プログラム実行の性質をぼかすことを望むとき、Java(登録商標)バイトコードデコーダ130は擬似ランダム信号に従うことができる。この信号はこの要素を選択的にイネーブルとディスエーブルにして、Java(登録商標)バイトコードに対する命令実行メカニズムがハードウェアとエミュレーションの混合実行メカニズムと純粋なエミュレーションメカニズムとの間を効率的に切り替えることができるようにする。システム・コンフィギュレーション・レジスタ136内のコンフィギュレーション制御値は、Java(登録商標)デコーダ130が存在しているか否かと、このJava(登録商標)デコーダ130のランダムイネーブルとディスエーブルが許されるか否かを特定する。   The Java (registered trademark) bytecode decoder 130 is selectively enabled and disabled by an input signal. If the Java bytecode decoder 130 is disabled, the received bytecode will trigger an exception. The exception initiates execution of software emulation code to manipulate Java bytecode using the native ARM sum instruction set. This support code is stored in the memory in the area 132 as shown. A Java® bytecode program 134 is also stored in the memory. When it is desired to blur the nature of Java program execution, the Java byte code decoder 130 can follow a pseudo-random signal. This signal selectively enables and disables this element so that the instruction execution mechanism for Java bytecode efficiently switches between a mixed hardware and emulation execution mechanism and a pure emulation mechanism. To be able to. The configuration control value in the system configuration register 136 indicates whether or not the Java (registered trademark) decoder 130 exists and whether or not the random enable and disable of the Java (registered trademark) decoder 130 is permitted. Is identified.

図14は受信したJava(登録商標)バイトコードの処理の概略を示す。ステップ138でJava(登録商標)バイトコードが受信される。ステップ140はJava(登録商標)デコーダ130がイネーブルであるか否かを判断する。Java(登録商標)デコーダ130の擬似ランダムイネーブルとディスエーブルにより、ステップ142と146どちらかへの効率的な分岐が可能になる。ステップ142ではバイトコードが常にエミュレートされ、ステップ146ではハードウェアにおいて命令の実行が試行される。このことがバイトコードの実行に付随する電力の特徴をあいまいにし/マスクする。もしステップ146で特定のJava(登録商標)バイトコードがJava(登録商標)デコーダ130によりサポートされていないと決定されれば、このJava(登録商標)バイトコードもステップ142においてソフトウェアでエミュレーションされるであろう。しかしながら、もしJava(登録商標)バイトコードがハードウェアでサポートされていれば、ステップ146においてハードウェアで実行される。
FIG. 14 shows an outline of processing of the received Java (registered trademark) bytecode. In step 138, Java® bytecode is received. Step 140 determines whether the Java decoder 130 is enabled. The pseudo-random enable and disable of the Java decoder 130 enables an efficient branch to either step 142 or 146. In step 142, the bytecode is always emulated, and in step 146, an attempt is made to execute the instruction in hardware. This obscures / masks the power characteristics associated with bytecode execution. If it is determined in step 146 that the particular Java® bytecode is not supported by the Java® decoder 130, this Java® bytecode is also emulated in software in step 142. I will. However, if Java® bytecode is supported in hardware, it is executed in hardware in step 146.

Claims (2)

データ処理装置において、
データ処理操作の実行時に結果データ値を発生するように動作可能な結果データ値発生回路と、前記結果データ値が書き込まれるデータ処理レジスタとを備え、
前記結果データ発生回路により実行される少なくとも1つのデータ処理操作が条件付き書き込みデータ処理操作であり、該条件付き書き込みデータ処理操作のための結果データ値は、非書き込み条件が満足したとき、前記データ処理レジスタに書き込まれず、
さらに、前記非書き込み条件が満足したとき、前記条件付き書き込みデータ処理操作の実行時に結果データ値を書き込むことのできるトラッシュレジスタを有する、データ処理装置。
In a data processing device,
A result data value generation circuit operable to generate a result data value when executing a data processing operation, and a data processing register into which the result data value is written;
At least one data processing operation executed by the result data generation circuit is a conditional write data processing operation, and the result data value for the conditional write data processing operation is the data when the non-write condition is satisfied Not written to the processing register
And a trash register that can write a result data value when the conditional write data processing operation is executed when the non-write condition is satisfied.
データ処理方法において、
データ処理操作の実行時に結果データ値を発生するステップを備え、実行する少なくとも1つのデータ処理操作は条件付き書き込みデータ処理操作であり、
非書き込み条件が満足したときに、結果データ値はデータ処理レジスタに書き込まれず、替わりにトラッシュレジスタに書き込まれる、データ処理方法。
In the data processing method,
Generating a result data value upon execution of the data processing operation, wherein at least one data processing operation to perform is a conditional write data processing operation;
A data processing method in which when a non-write condition is satisfied, the result data value is not written to the data processing register, but instead is written to the trash register
JP2010185224A 2002-12-12 2010-08-20 Processing activity masking in data processing system Pending JP2010282651A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GBGB0229068.2A GB0229068D0 (en) 2002-12-12 2002-12-12 Instruction timing control within a data processing system
GBGB0302650.7A GB0302650D0 (en) 2002-12-12 2003-02-05 Processing activity masking in a data processing system
GBGB0302646.5A GB0302646D0 (en) 2002-12-12 2003-02-05 Processing activity masking in a data processing system
GB0307823A GB2396229B (en) 2002-12-12 2003-04-04 Processing activity masking in a data processing system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005502327A Division JP4619288B2 (en) 2002-12-12 2003-10-06 Processing action masking in data processing system

Publications (1)

Publication Number Publication Date
JP2010282651A true JP2010282651A (en) 2010-12-16

Family

ID=9949613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010185224A Pending JP2010282651A (en) 2002-12-12 2010-08-20 Processing activity masking in data processing system

Country Status (2)

Country Link
JP (1) JP2010282651A (en)
GB (3) GB0229068D0 (en)

Also Published As

Publication number Publication date
GB0229068D0 (en) 2003-01-15
GB0302646D0 (en) 2003-03-12
GB0302650D0 (en) 2003-03-12

Similar Documents

Publication Publication Date Title
JP4619288B2 (en) Processing action masking in data processing system
KR102558104B1 (en) Call path dependent authentication
May et al. Non-deterministic processors
US7178011B2 (en) Predication instruction within a data processing system
WO2011141726A2 (en) Conditional compare instruction
CN113228024A (en) Secure predictor for speculative execution
EP3765957A1 (en) Branch target variant of branch-with-link instruction
KR20200090103A (en) Branch predictor
US20050283592A1 (en) Dynamically controlling execution of operations within a multi-operation instruction
EP3329361B1 (en) Vector operand bitsize control
JP2010282651A (en) Processing activity masking in data processing system
JP7377208B2 (en) Data processing
CN114692142A (en) Strengthening branch hardware for speculative vulnerabilities
GB2515020A (en) Operand generation in at least one processing pipeline
US10324727B2 (en) Memory dependence prediction
EP4080386A1 (en) Method to protect program in integrated circuit
GB2396229A (en) Processor to register writing masking by writing to normal register or to a trash register
WO2024028565A1 (en) No-operation-compatible instruction
WO2022013521A1 (en) Authentication code generation/checking instructions
CN114692140A (en) Hardening storage hardware for speculative vulnerabilities

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100921

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20120201