JP3848965B2 - Instruction timing control in data processor - Google Patents
Instruction timing control in data processor Download PDFInfo
- Publication number
- JP3848965B2 JP3848965B2 JP2005502328A JP2005502328A JP3848965B2 JP 3848965 B2 JP3848965 B2 JP 3848965B2 JP 2005502328 A JP2005502328 A JP 2005502328A JP 2005502328 A JP2005502328 A JP 2005502328A JP 3848965 B2 JP3848965 B2 JP 3848965B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- conditional
- data
- timing mode
- processor
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Retry When Errors Occur (AREA)
- Complex Calculations (AREA)
Description
本発明はデータ処理装置の分野に関するものである。より特定すると、本発明は少なくとも複数のプログラム命令が終了するまでに可変の処理サイクル数を必要とするデータ処理装置に関するものである。 The present invention relates to the field of data processing devices. More specifically, the present invention relates to a data processing apparatus that requires a variable number of processing cycles until at least a plurality of program instructions are completed.
終了するまでに可変の処理サイクル数を必要とする命令を有するプロセッサ・コア(例えば、英国キャンブリッジのARM社の設計によるもの)が提供されている。このようなプログラム命令の一例は条件付命令である。これは、先行命令を実行した結果或る条件が満足される場合(例えば、先行命令により結果がゼロ、オーバーフロー、桁上げなどになった場合)にだけ実行されるよう符号化される。プロセッサの性能を高めるため、早期終了方式を備えるプロセッサも提供されている。これは、処理サイクルを続けても結果が変わらないとプロセッサが判定した場合は、マルチサイクル演算を早期に終了するものである。例えばマルチサイクル加算演算において、両方のオペランドの高次のビットが全てゼロであれば、桁上げがないと判定された場合はその後のプロセッサ・サイクルで高次のビットを計算する必要がない。終了するまでに可変の処理サイクル数をかけるプログラム命令は他にも例が多い。 Processor cores are provided that have instructions that require a variable number of processing cycles to complete (eg, designed by ARM, Inc., Cambridge, UK). An example of such a program instruction is a conditional instruction. This is encoded to be executed only if certain conditions are satisfied as a result of executing the preceding instruction (eg, if the result is zero, overflow, carry, etc. due to the preceding instruction). In order to improve the performance of the processor, a processor having an early termination method is also provided. In this case, when the processor determines that the result does not change even if the processing cycle is continued, the multicycle operation is terminated early. For example, in a multi-cycle addition operation, if the high order bits of both operands are all zero, it is not necessary to calculate the high order bits in subsequent processor cycles if it is determined that there is no carry. There are many other examples of program instructions that take a variable number of processing cycles to complete.
例えば高度の機密保護で動作して、処理中のデータに許可なくアクセスすることが出来ないようにするプロセッサを提供することがますます重要になっている。例えば、金融取引を扱うスマートカードに用いられるプロセッサ・コアは、パスワードやデータなどを証明するために高度に秘密の暗号鍵を用いることが多い。装置の機密保護と完全性とを保持するには、このような暗号鍵は秘密にしなければならない。このような装置の機密保護を攻撃する1つの周知の方法は、所定の動作を終了するまでに要する処理サイクル数を数えて、処置中のデータに関する情報を識別しようと試みることである。要した処理サイクル数と処理中のデータとの間に相関がある場合は、処理中のデータに関する情報を知ることができる。 For example, it is becoming increasingly important to provide a processor that operates with a high degree of security and prevents unauthorized access to the data being processed. For example, processor cores used in smart cards that handle financial transactions often use highly secret encryption keys to prove passwords and data. Such cryptographic keys must be kept secret in order to preserve the security and integrity of the device. One well-known method of attacking the security of such devices is to attempt to identify information about the data being treated by counting the number of processing cycles required to complete a given operation. If there is a correlation between the number of processing cycles required and the data being processed, it is possible to know information about the data being processed.
サイクルを数えることにより装置の機密保護に加えられる攻撃を防ぐための周知の方法は、コンピュータ・プログラム・コードの書き方に注意して、コンピュータ・プログラムのフローに無関係に固定のサイクル数で終了させることである。実際には、これを行うのは困難である。なぜなら、高いレベルの知識と熟練がプログラマに要求されるためと、全ての場合に処理サイクル数を等しくするという所望の目的が達成されたことを確認/テストすることが困難なためである。また、プログラマが普通に用いる生産性向上ツール(コンパイラなど)はこのような機密のコードを生成するのに適していない。なぜなら、通るプログラム経路に従って、このようなツールが作るコードは処理サイクル数が大幅に変わるのが普通だからである。 A well-known method to prevent attacks that are added to the security of the device by counting cycles is to be careful of how to write computer program code and terminate with a fixed number of cycles regardless of the flow of the computer program. It is. In practice, this is difficult to do. This is because a high level of knowledge and skill is required of the programmer and it is difficult to confirm / test that the desired purpose of equalizing the number of processing cycles has been achieved in all cases. Also, productivity improvement tools (such as compilers) commonly used by programmers are not suitable for generating such confidential code. This is because the code generated by such tools usually changes significantly in the number of processing cycles according to the program path that passes.
1つの観点から、本発明が提供するデータ処理装置は、
終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクルをそれぞれ必要とする個別の処理動作を実行するプロセッサを備え、
前記プロセッサは可変タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、また、
前記プロセッサは固定タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される。
From one viewpoint, the data processing apparatus provided by the present invention is:
Depending on a number of different program instructions including at least one variable timing instruction that requires a minimum number of cycles and a maximum number of cycles to complete, each of many processing cycles to complete It has a processor that performs the required individual processing operations,
The processor operates in a variable timing mode, and the at least one variable timing instruction is allowed to take a variable number of processing cycles to complete, and
The processor operates in a fixed timing mode and the at least one variable timing instruction is forced to multiply the maximum number of cycles before completing.
本発明の認識では、処理動作を速くしまた電力消費を減らすためにプロセッサ内で用いられる可変タイミング命令は、要した処理サイクル数と処理中のデータとの関係を完全に隠すことが望ましい安全な装置という文脈では明らかに不利である。同時に、機密のデータを処理していないときは、速度を上げたり電力消費を減らしたりする可変タイミング命令に付随する大きな利点は望ましいものである。本発明は上記の問題を認めると共に、可変タイミング・モードと固定タイミング・モードとで動作する装置を提供することにより、可能な環境で現在の装置に付随する利点を保持する。可変タイミング・モードでは、可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、固定タイミング・モードでは、可変タイミング命令は終了するまでに必ず固定のサイクル数をかけるよう強制される。このように、機密のデータを処理するときは装置を固定タイミング・モードに置いて、処理動作を終了するまでにかける処理サイクル数を容易に隠すが、機密のデータを処理しないときは装置を可変タイミング・モードで動作させて、可変タイミングの機構に付随する速度の利点と電力消費削減の利点とを活用する。固定タイミング・モードを用いると各命令のタイミングは処理中のデータとは無関係なので、プログラム・フローの経路に無関係に、プログラマは終了するまでに固定の処理サイクル数をかけるプログラム・コードを書くのが容易になる。またこれにより、固定タイミング・コードを生成するコンパイラを作るのが容易になる。 In recognition of the present invention, variable timing instructions used within a processor to speed up processing operations and reduce power consumption are safe to completely hide the relationship between the number of processing cycles required and the data being processed. Clearly disadvantageous in the context of devices. At the same time, when not processing sensitive data, the great advantages associated with variable timing instructions that increase speed and reduce power consumption are desirable. The present invention recognizes the above problems and retains the advantages associated with current devices in possible environments by providing a device that operates in a variable timing mode and a fixed timing mode. In variable timing mode, variable timing instructions are allowed to take a variable number of processing cycles before completion, and in fixed timing mode, variable timing instructions are always forced to take a fixed number of cycles before completion. The In this way, when processing sensitive data, place the device in fixed timing mode and easily hide the number of processing cycles it takes to complete the processing operation, but change the device when not processing sensitive data Operate in timing mode to take advantage of the speed benefits and power consumption savings associated with variable timing mechanisms. Using the fixed timing mode, the timing of each instruction is independent of the data being processed, so programmers write program code that takes a fixed number of processing cycles to complete, regardless of the program flow path. It becomes easy. This also makes it easier to create a compiler that generates fixed timing code.
前に述べたように、本発明の方法は可変タイミングをとることのできる広範囲のプログラム命令に適用可能であるが、特に適しているのは、装置が固定タイミング・モードにあって全ての条件コードに関係なく条件付命令は固定の処理サイクル数をかけることを強制される場合か、可変タイミング・モードにあって条件コードが或るパラメータと一致する場合は命令の実行が抑制される場合かに従って、1つ以上の条件付き命令が実行される実施の形態である。 As previously mentioned, the method of the present invention is applicable to a wide range of program instructions that can take variable timing, but is particularly suitable for all condition codes when the device is in a fixed timing mode. Regardless of whether conditional instructions are forced to take a fixed number of processing cycles, or if they are in variable timing mode and the condition code matches a certain parameter, execution of the instruction is suppressed 1 is an embodiment in which one or more conditional instructions are executed.
可変タイミング・モードでは抑制すべき条件付き命令を固定タイミング・モードで実行する場合は、本発明の好ましい実施の形態では、後のデータ処理に影響を与えるような変更を条件付き命令が行うことは全て禁止される。例えば、後の処理に影響するようなプロセッサ内の状態の更新や変更を条件付き命令が行うことは全て禁止される。 When a conditional instruction that should be suppressed in variable timing mode is executed in fixed timing mode, the preferred embodiment of the present invention does not allow the conditional instruction to make changes that affect subsequent data processing. All are prohibited. For example, it is forbidden for a conditional instruction to update or change a state in the processor that affects subsequent processing.
本発明の技術が適しているプログラム命令の種類は条件付き分岐命令である。なぜなら、この技術を用いなければ、分岐が抑制されるかどうかに従ってこの種の命令はプログラム・タイミングに強い影響を与えることがあるからである。固定タイミング・モードで動作するとき、条件付き分岐命令は条件コードが満足されない場合でも分岐することを強制されるが、この場合は条件付き分岐命令に指定された分岐先に関係なくプログラム・フロー内の次の命令に分岐され、条件付き分岐命令が全く抑制された場合と同じように次の命令が実行される。 A type of program instruction to which the technology of the present invention is suitable is a conditional branch instruction. This is because if this technique is not used, this type of instruction can have a strong impact on program timing depending on whether branching is suppressed. When operating in fixed timing mode, conditional branch instructions are forced to branch even if the condition code is not satisfied, but in this case, in the program flow regardless of the branch destination specified in the conditional branch instruction The next instruction is executed in the same manner as when the conditional branch instruction is completely suppressed.
条件付き命令が条件付きデータ操作命令の場合は、本発明の好ましい実施の形態では、固定タイミング・モードにあるときは、条件コードを失敗したときは条件付きデータ操作命令は実行されるが、通常これは抑制されて、命令は実行されるが条件付きデータ操作命令の通常の結果の宛先に結果を書き込むことは禁止される。 If the conditional instruction is a conditional data manipulation instruction, in the preferred embodiment of the present invention, when in a fixed timing mode, the conditional data manipulation instruction is executed if the condition code fails, but usually This is suppressed and the instruction is executed, but writing the result to the normal result destination of the conditional data manipulation instruction is prohibited.
条件付きデータ操作命令から結果が書き込まれるかどうかに従って生じるプロセッサの消費電力の変動を観察してこれに基づいて機密保護に対する攻撃が行われることから守るために、好ましい実施の形態では、条件コードを失敗したときに、結果を通常の結果の宛先に書き込むのではなく1つ以上のダミー宛先に書き込む。これにより、条件コードを失敗したかどうかに関係なく実質的に同じ電力消費が保たれ、条件付きデータ操作命令は必ず実行され、ダミーの宛先ではあるにしても結果は必ず書き込まれる。 In a preferred embodiment, the condition code is used to observe processor power consumption fluctuations that occur according to whether results are written from conditional data manipulation instructions and to protect against security attacks based on this. When unsuccessful, the result is written to one or more dummy destinations rather than to the normal result destination. Thus, substantially the same power consumption is maintained regardless of whether the condition code fails, the conditional data manipulation instruction is always executed, and the result is always written even though it is a dummy destination.
可変タイミング実行が可能な命令の別の型は、1つ以上の処理中のデータ値に従って早期終了が可能な命令である。好ましい実施の形態は固定タイミング・モードで動作して、このような早期終了可変タイミング・モードを与えるために装置内に設けられた機構がそれが可能であることを示しているときでも、早期終了を全て抑制する。例えば、乗算の一方のオペランドがゼロであれば他方のオペランドが何であっても結果はゼロなので、結果をゼロとして命令を早期に終了させることができる。しかし固定タイミング・モードでは、命令は処理サイクル数を全てかけてゼロの結果を返すよう強制される。 Another type of instruction capable of variable timing execution is an instruction that can be prematurely terminated according to one or more data values being processed. The preferred embodiment operates in a fixed timing mode and early termination even when the mechanism provided in the device to provide such early termination variable timing mode indicates that it is possible. Suppress all. For example, if one operand of a multiplication is zero, the result is zero no matter what the other operand is, so the result can be zero and the instruction can be terminated early. However, in fixed timing mode, the instruction is forced to return a zero result over all processing cycles.
早期終了が可能な好ましい型の命令の例として、マルチサイクル乗算命令、マルチサイクル除算命令、マルチサイクル加算命令、マルチサイクル減算命令がある。
或るハードウエア信号などによって装置を固定タイミング・モードにすることは可能であるが、本発明の好ましい実施の形態では、プログラマブル・モード制御用パラメータ(例えば、1ビットまたは複数のビット)によって可変タイミング・モードか固定タイミング・モードかを採用するようプロセッサを構成してよい。
Examples of preferred types of instructions that can be terminated early include multi-cycle multiply instructions, multi-cycle divide instructions, multi-cycle add instructions, and multi-cycle subtract instructions.
Although it is possible to put the device into a fixed timing mode by some hardware signal or the like, in a preferred embodiment of the present invention, variable timing is provided by programmable mode control parameters (eg, one bit or multiple bits). The processor may be configured to adopt either mode or fixed timing mode.
このようにして、機密のデータを処理中でなくかつ低い電力消費で高い性能が必要なときは可変タイミング・モードにし、機密のデータを処理中であって処理中のデータが処理サイクル数に依存することを隠す必要性の方が速度や電力消費などの考慮より優先するときは固定タイミング・モードにするというように、ソフトウエア制御の下で装置を切替えることができる。
プログラマブル・モード制御用パラメータを設定する好ましい方法は、装置制御用コプロセッサなどのシステム構成レジスタ内にこれを保存することである。
In this way, when sensitive data is not being processed and high performance is required with low power consumption, variable timing mode is used, and sensitive data is being processed and the data being processed depends on the number of processing cycles. The device can be switched under software control, such as a fixed timing mode when the need to hide what takes precedence over considerations such as speed and power consumption.
The preferred method of setting the programmable mode control parameters is to store it in a system configuration register such as a device control coprocessor.
別の形態から見ると、本発明は終了するまでに最小のサイクル数と最大のサイクルの数との間を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクル数をそれぞれ必要とする個別の処理動作を実行するプロセッサを用いてデータを処理する方法を提供し、前記方法は、
前記プロセッサを可変タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、
前記プロセッサを固定タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
ステップを含む。
Viewed from another aspect, the present invention terminates in response to a plurality of different program instructions including at least one variable timing instruction that requires between a minimum number of cycles and a maximum number of cycles to complete. Providing a method of processing data using a processor that performs individual processing operations each of which requires a large number of processing cycles,
The processor is allowed to operate in a variable timing mode and the at least one variable timing instruction is allowed to take a variable number of processing cycles before completing;
Operating the processor in a fixed timing mode, and the at least one variable timing instruction is forced to take the maximum number of cycles to complete;
Includes steps.
図1は、プロセッサ・コア4と、コプロセッサ6と、メモリ8とを含むデータ処理装置2を示す。
動作を説明すると、プロセッサ・コア4はメモリ8から命令とデータとを取り出す。命令は命令パイプライン10に取り出され、例えば、取出し、復号、実行、メモリ、次の処理サイクルでの書き込みなど順次のパイプライン段を占める。パイプライン付きプロセッサ自体は、部分的に重ねることにより多数のプログラム命令を実質的に実行してプロセッサの性能を向上させる方法として周知である。
FIG. 1 shows a
In operation, the processor core 4 fetches instructions and data from the memory 8. Instructions are fetched into the
プロセッサ・コア4がメモリ8から読み取ったデータ値はレジスタ・バンク12に送られ、ここから乗算器14、シフタ16、加算器18の1つ以上を用いてプログラム命令制御の下に操作される。AND、OR、ゼロまでのカウントなどの論理演算を実行する回路などの他のデータ操作回路も設けられる。
Data values read from the memory 8 by the processor core 4 are sent to the
図1はプロセッサ・コア4内の命令復号器20も示す。これは命令パイプライン10内のプログラム命令に応じて実行制御信号を生成して、レジスタ・バンク12、乗算器14、シフタ16、加算器18などの種々の処理要素に与えて、実行される処理動作を制御する。例えば、復号器20が生成する制御信号は該当するオペランドをレジスタ・バンク12から読み取り、乗算器14、シフタ16、加算器18の該当する要素に与えて実行して結果を生成し、これをレジスタ・バンク12に戻して書き込む。
FIG. 1 also shows an
コプロセッサ6は多数の構成レジスタ22を含むシステム構成コプロセッサである。構成レジスタ22はプログラム制御の下に書き込まれて構成制御用パラメータを設定する。このような構成制御用パラメータは処理装置2の構成の多くの形態(例えばエンディアネス(endianess)など)を指定する。このような構成制御用レジスタ22の1つの中に、プロセッサ・コアの動作を固定タイミング・モードで行うか可変タイミング・モードで行うかを指定する1つのビットが含まれる。図ではこのビットは命令復号器20の入力として与えられるように示しているが、認識されるように、このビットはその行動を制御する必要に応じてプロセッサ・コア4内の種々の他の点に与えてもよい。この固定/可変ビットに従って、プロセッサ・コア4は固定タイミング・モードまたは可変タイミング・モードで動作する。
固定タイミング・モードでは、可変タイミング・モードで可変タイミング(すなわち、終了するまでに可変の処理サイクル数をかける)を有する少なくとも1つのプログラム命令は、可変ではなく固定タイミングを有するように強制される(例えば、全体として抑制されたかまたは最大の処理サイクル数より早く終了したかに関わらず、終了するまでに最大の可能な処理サイクル数をかける)。命令復号器20は、プログラム命令を復号してプロセッサ・コア4の他の要素の活動を命令する主役なので、命令復号器20はプロセッサ・コア4の動作を固定タイミング・モードか可変タイミング・モードかに制御するのに主導的な役割を果たす。全ての可変タイミング命令が固定タイミング・モード型の動作を行う必要はない。
In fixed timing mode, at least one program instruction that has variable timing in variable timing mode (ie, a variable number of processing cycles to complete) is forced to have fixed timing rather than variable ( For example, multiply the maximum possible number of processing cycles by the end, regardless of whether it was suppressed as a whole or ended earlier than the maximum number of processing cycles). Since the
認識されるように、上の説明では構成制御用レジスタ22内の1つのビットでタイミング・モードを固定か可変かに切替えるものとして示した。他の方法として、構成制御用レジスタ22内の複数のビットを用いて、異なる型の命令(条件付き命令行動、均一分岐行動、早期終了の禁止など)の固定または可変のタイミング行動を別々に可能にしまた使用禁止にしてよい。
As will be appreciated, the above description has shown that one bit in the configuration control register 22 switches the timing mode between fixed and variable. Alternatively, using multiple bits in the
図2は条件付き命令24の概要を示す。この条件付き命令は、複数の条件付き命令だけを含む命令集合の一部でもよいし、実質的に完全に条件付きである命令集合(ARM命令集合など)の一部でもよい。条件コード26は、関連する命令を実行するかしないかという一組のプロセッサ状態条件を符号化する。例えば条件コード26は、装置内に現在設定されている条件コードがゼロの結果や、桁上げの発生や、オーバーフローの発生などを示す場合は命令24を実行しないと指定することができる。この型の命令を用いて効率的なプログラム符号化を行うことができる。固定/可変ビットは条件付き行動を少なくとも部分的に抑制する。すなわち、その条件コードに関係なく命令は実行するが、プロセッサ状態に影響を与えるようなその結果の書き込み方はしない。
FIG. 2 shows an overview of the
図3は命令復号器20が実行する処理動作の一部の概要を示す流れ図である。理解されるように、図3はこのような処理動作を論理シーケンスとして示すが、実際にはこのような処理動作は少なくとも部分的に並列にまたは異なる順序で実行してよい。
FIG. 3 is a flowchart showing an outline of a part of the processing operation executed by the
ステップ28で、命令復号器20は実行する新しい命令を待つ。新しい命令を受けると、処理はステップ30に進み、新しい命令に関連する条件コードを読み取る。ステップ32で、これらの条件コードと装置内の既存の条件コードとを比較する。装置内のこれらの既存の条件コードは、前の処理活動(直前の命令かまたはこれらの条件コードを更新した最新の命令で行った)の結果である。
In
ステップ34で、実行される現在の命令の条件コード26と既存の条件コードとが一致するかどうかチェックする。一致しない場合は、処理はステップ36に進み、現在の命令の実行を開始する。認識されるように、図3は一致しない場合に実行する装置を示すが、別の実施の形態では一致する場合に実行する装置でもよい。
In
ステップ36の後、処理はステップ38に進んで、命令の早期終了が可能かどうかチェックする。この早期終了は、例えば、オペランドの1つが特定の値(0や1など)を有するためか、または次の処理サイクルで特定の部分的結果が作られたためである。早期終了が可能な場合は処理はステップ40に進み、プロセッサ・コア4が現在動作中のタイミング・モードが固定か可変かをチェックする。プロセッサが可変タイミング・モードにある場合は処理はステップ42に進み、関係する命令を早期終了し、結果を適当に返して、処理はステップ28に戻る。 After step 36, the process proceeds to step 38 to check if the instruction can be terminated early. This early termination is, for example, because one of the operands has a specific value (such as 0 or 1) or because a specific partial result was created in the next processing cycle. If early termination is possible, the process proceeds to step 40 to check whether the timing mode in which the processor core 4 is currently operating is fixed or variable. If the processor is in variable timing mode, the process proceeds to step 42, the relevant instruction is terminated early, the result is returned appropriately, and the process returns to step 28.
ステップ40で装置が固定タイミング・モードにあると判定された場合は、早期終了が可能であるかどうかに関係なく処理はステップ44に進む。ステップ38で早期終了が可能でないと判定されたときにもステップ44に進むが、関係する命令をここで1処理サイクルの間実行する。乗算や除算や加算や減算などのマルチサイクル処理命令の場合は実行するのに一般に数サイクルを要するので、ステップ44の後で処理はステップ46に進み、その命令に関連する最大のサイクル数を実行したかどうか判定する。最大のサイクル数を実行した場合は結果が生成されている。早期終了が可能ではあるが更に続いて複数の処理サイクル間実行するよう装置が強制された場合も、その型の命令の最大の可能な処理サイクル数に到達したときはこの強制実行を終了してよいことをステップ46は示す。最大の処理サイクル数をまだ実行していない場合は、処理はステップ38に戻る。
If it is determined in
ステップ34でのテストで一致した場合は、処理はステップ48に進む。この例では、ステップ34で一致したと検出されたことは、特定の命令の実行を抑制すべきことを示す。ステップ48で、装置が現在強制実行モードにあるかどうか判定する。強制実行モードにある場合は処理はステップ50に進み、命令の強制ダミー実行を行う。ダミー実行を行ったときは、命令自体の中に指定されている宛先ではなくトラッシュ・レジスタ(図1のトラッシュ・レジスタ51を参照)に結果を書き込んで、抑制すべきであったので実行してはならなかったプログラム命令によって装置の状態が変更されるのを防ぐと共に、電力消費を実質的に不変に保つ。ステップ48で装置が強制実行モードではなく可変タイミング・モードにあると判定された場合は、処理はステップ50をバイパスしてステップ28に戻り、プログラム命令は通常の方法で抑制される。
If the test results in
認識されるように、図3は条件コードを失敗した全ての命令と命令の全ての早期終了を抑制したものにダミー実行が適用される一般的な装置を示す。実際には、このような方法は条件付き命令と早期終了が可能な命令の部分集合にも適用することができる。上に述べた複数の構成制御用ビットを用いて、早期終了抑制などの機能は選択的に実行するが、条件コードの失敗の後のダミー実行などの他の機能は実行しないようにすることもできる。 As will be appreciated, FIG. 3 shows a typical device in which dummy execution is applied to all instructions that failed the condition code and to all early termination of the instructions. In practice, such a method can also be applied to a subset of conditional instructions and instructions capable of early termination. Using multiple configuration control bits as described above, functions such as early termination suppression are selectively executed, but other functions such as dummy execution after failure of the condition code may not be executed. it can.
図4は、固定タイミング・モードにおける条件付き分岐命令の実行の概要を示す。命令のシーケンスABを、条件付き分岐命令BEQ(等しいとき分岐)に到達するまで実行する。命令BEQは、前の処理と結果が等しいことを示すフラグがセットされている場合は指定された分岐を実行し、このフラグがセットされていない場合は抑制するという行動を符号化する。条件コードが合格のとき(すなわち、条件コードが一致するとき)は分岐を行って、処理は命令X、Yなどに進む。条件コード失敗のときは、全体を抑制するのではなく、BEQ命令はすぐ次の命令Cに分岐する。これは、BEQ命令が抑制されて全く実行されなかった場合に到達する命令と同じである。しかし固定タイミング・モードでは、条件コードが合格か失敗かに関係なくBEQは同じ処理サイクル数になる。これにより、秘密データにアクセスしようとする人に対して前に実行したデータ処理動作の結果を隠すことができる。 FIG. 4 shows an overview of the execution of conditional branch instructions in fixed timing mode. The sequence of instructions AB is executed until the conditional branch instruction BEQ (branch when equal) is reached. The instruction BEQ encodes the action of executing the specified branch if the flag indicating that the result is equal to the previous process is set, and suppressing if the flag is not set. If the condition code is acceptable (ie, the condition code matches), a branch is taken and the process proceeds to instructions X, Y, etc. When the condition code is unsuccessful, the entire BEQ instruction branches to the next instruction C instead of suppressing the whole. This is the same instruction that arrives when the BEQ instruction is suppressed and not executed at all. However, in the fixed timing mode, the BEQ has the same number of processing cycles regardless of whether the condition code passes or fails. Thereby, it is possible to hide the result of the data processing operation executed previously for the person who tries to access the secret data.
図5は、プログラム命令Iに応答してデータDを操作するプログラマブル・プロセッサ・コアの形のデータ処理装置52の略図を示す。データ処理装置52は、レジスタ・バンク54、乗算器56、シフタ58、加算器60、算術論理ユニット62、ロード・ストア・ユニット64、データ・パイプライン66、命令復号器68、ランダム・クロック・ゲート用回路70を含む。システム構成コプロセッサCP15 72はプロセッサ・コアに結合する。システム構成コプロセッサ72は、データ処理装置52の種々の回路部の擬似ランダム・ダミー活動をそれぞれ可能にしまたは使用禁止にする多数のフラグ値を保持するシステム構成レジスタ74を含む。認識されるように、データ処理装置52は一般に更に多くの回路要素を含むが、簡単のために図5では省略した。
FIG. 5 shows a schematic diagram of a
乗算器56に付随するのはダミー活動可能回路76である。これは必要に応じて乗算器56内でのダミー活動を可能にし、または実行中のプログラム命令が必要とするときは、必要な活動可能信号を通して乗算器56を活動的にする。同様なダミー活動可能回路78,80,82,84が前に述べた他の各回路部58,60,62,64に付随する。
Associated with
動作を説明すると、実行する命令は命令パイプライン66に、更に命令復号器68に送られて命令駆動可能信号を生成し、各回路部に与えられる。このような可能信号は、データ処理装置52を通るデータ経路を選択し、関係する回路部を活動的にしてその入力を読み取り、指定された処理を実行し、その関連する出力信号を生成する。例えば、乗算・累算演算はレジスタ・バンク54からデータ値を読み取り、これを乗算器56と加算器60とに与え、その結果をレジスタ・バンク54に返して書き込む。このように、レジスタ・バンク54と乗算器56と加算器60とは全てその動作を可能にしまたそれを選択する必要な活動可能信号を受けて、完全なデータ経路を形成する。
In operation, an instruction to be executed is sent to the
異なる回路部は異なる電力消費特性とタイミング特性とを有するので、外部の観察者はこのようなパラメータを観察することによりどの命令を実行中かを知ることができる。これに対抗して、実行中の命令に必要ない他の回路部の擬似ランダム・ダミー活動も可能にする。例えば、実行中の特定の乗算・累算命令でシフタ58が用いられていなくても、擬似ランダム的に可能にして、その入力に与えられる全ての値をシフトして電力を消費する。このダミー活動が必要な動作(例えば、或る回路部が出力値を持続する)を妨げるような望ましくない方法で回路状態を変えることを防ぐため、その出力ラッチは可能にしない。ダミー活動が可能になるのは、関係する回路部の通常の動作タイミングと一致する期間である。
Since different circuit units have different power consumption characteristics and timing characteristics, an external observer can know which command is being executed by observing such parameters. In contrast, it allows for pseudo-random dummy activity of other circuit parts that are not required for the instruction being executed. For example, even if the
ランダム・クロック・ゲート用回路70は異なる各回路部向けの複数の擬似ランダム可能信号を受けてこれをゲートし、システム構成コプロセッサ72内のシステム構成レジスタ74から読み取られた構成パラメータの制御の下に各回路部に与える。このような構成フラグは、例えば、シフタ58、ALU62、乗算器56についてはダミー活動を可能にするが、加算器60とロード・ストア・ユニット64については可能にしないことを示す。異なる擬似ランダム可能信号により、関係するこれらの各回路部と一致させて異なる擬似ランダム特性を与えることができる。例えば、異なる回路部の通常のタイミングに関連して異なる最小可能時間があってよい。
Random
全体レベルにおいて、命令復号器68は現在実行中の命令が指定するデータ処理動作を実行するのに必要な回路部を可能にする必要な活動可能回路として機能することが分かる。この必要な活動に重ねて、データ処理装置52の他の種々の場所に設けられているダミー活動制御回路により、他の回路部内の種々のダミー活動が可能になり/刺激される。ダミー活動は、必要な活動に付随する電力消費およびタイミング特性を隠すのに役立つ。
At the overall level, it can be seen that the
図6は、必要な可能信号enとダミー可能信号rndとを受ける回路部86を示す略図である。この回路部86は、その間で処理論理がデータ値を操作するラッチのシーケンスと考えることができる。真に要求された活動が必要なとき、回路部86を通るデータ経路を与える全てのラッチが可能になり、要求された処理は入力ラッチと出力ラッチとの間で実行される。ダミー活動が命令されると、入力ラッチと中間ラッチだけが可能になる。この場合は、全回路部を通ってデータ経路が形成されないので、回路部が生成した出力値は変わらない。
FIG. 6 is a schematic diagram showing a
図7は、擬似ランダム・クロック信号を生成するのに用いてよい型の線形フィードバック・シフト・レジスタを示す。このようなクロック信号は図5のランダム・クロック日付回路(random clock dating circuit)72に与えられる。異なる回路部には別個の擬似ランダム信号発生器を設けてよい。異なる擬似ランダム発生器に関連する固定クロック周波数を変えて関連する回路部の特性を一致させ、更に必要に応じて隠蔽動作を隠してよい。 FIG. 7 shows a type of linear feedback shift register that may be used to generate a pseudo-random clock signal. Such a clock signal is provided to a random clock date circuit 72 of FIG. Different circuit portions may be provided with separate pseudo-random signal generators. The fixed clock frequency associated with different pseudo-random generators may be changed to match the characteristics of the associated circuit portions, and the concealment operation may be hidden if necessary.
図8は、回路部の可能信号の制御の概要を示す。ステップ88で、命令復号器68から可能信号enを受けたかどうか判定する。このような可能信号を受けた場合は、処理はステップ90に進む。命令復号器68からの可能信号は、復号された真のプログラム命令に従って、要求された処理演算を行うことが必要であることを示す。したがってステップ90では、関係する回路部への入力と出力とクロック信号とを可能にする。ステップ88で命令復号器から可能信号enを受けない場合は、処理はステップ92に進んで、その回路部のダミー演算が許されるかどうか判定する。ダミー演算が許される場合は、処理はステップ94に進み、回路部への入力とクロックとは可能になるが、回路部からの出力は可能にならない。次に回路部はダミー活動を行う。ステップ92での判定の結果、システム構成パラメータの指示によりダミー演算が許されない場合は、ステップ94をバイパスして処理は終了する。
FIG. 8 shows an outline of control of the possible signals of the circuit unit. In
認識されるように、図8に示すプロセスは順次流れ図の形である。実際には、この制御は異なる順序で行われて、データ処理装置52全体に広がる回路要素を用いてよい。順次に実行されるように示されている動作も実際は並列に実行されてよくまたは制御機能は修正されてよい。全体レベルでは、個別の回路部は、該当するプログラム命令に応じて通常要求される動作を行うことが可能になり、また関連する構成パラメータにより許される場合はダミー活動を行うことが可能になる。
As will be appreciated, the process shown in FIG. 8 is in the form of a sequential flow diagram. In practice, this control may be performed in a different order and use circuit elements that span the entire
図9はレジスタ・バンク96の略図を示す。このレジスタ・バンクは、英国キャンブリッジのARM社が設計したプロセッサに従う、ユーザ・モード動作用のARMプロセッサ・プログラマのモデルに基づくものである。実際には、他のプロセッサ・モードについて更にレジスタを用いることがあるが、簡単のために省略した。通常のデータ・レジスタR0からR15はデータ値を保持するのに用いる。レジスタR13,R14,R15は、一般に機密保護に関係ないデータ値であるプログラム・カウンタ値、分岐復帰アドレス値、スタック・ポインタを記憶する。したがって、R13,R14,R15についてはデータ書込みの際の移行バランスは必要ない。トラッシュ・レジスタRTは、その条件コードを失敗した条件付き書込みに関連して用いるためにレジスタ・バンク96内に設けられる。その条件コードを失敗した条件付き書込み命令は、通常は書込みは行わない。しかしこの装置では、このような失敗した条件付き書込み命令は、条件コードを失敗したにもかかわらずやはりトラッシュ・データ・レジスタRTにデータ値を書き込む。これにより、条件付き書込み動作の条件コード失敗または条件コード合格に付随するはずの電力消費やタイミングの違いを全て隠す。トラッシュ・データ・レジスタRTは、命令内のレジスタ指定オペランドでアドレス指定できるような方法ではプログラマのモデルに現れない。
FIG. 9 shows a schematic diagram of
トラッシュ・データ・レジスタRTだけでなく、高から低へと低から高への移行のバランスをとるために別のレジスタ98,100も設けられる。専用のダミー・レジスタ98は、トラッシュ・データ・レジスタRTだけでなくデータ・レジスタR0からR12に関して設けられる。共用ダミー・レジスタ100は、移行バランシング技術に従ってデータ・レジスタへの書込みのたびに応答して排他的OR値と排他的OR値の逆とを記憶するために設けられる。レジスタ書込み制御回路102は、データ・レジスタへのデータ値の書込みに応じて別のレジスタ98、100に書き込む該当するデータ値を生成する。この対称的書込み制御は、システム構成コプロセッサ72からの該当するシステム構成制御フラグ信号により選択的に可能または使用禁止になる。
In addition to the trash data register RT,
図10はレジスタ書込み制御回路102の動作の概要を示す流れ図である。ステップ104で、回路はレジスタ書込み動作の命令を待つ。ステップ106で、このレジスタ書込み先が、対称的書込み制御装置が適用されるデータ・レジスタの1つかトラッシュ・データ・レジスタRTかを判定する。レジスタ書込み先がこれらのレジスタでない場合は処理はステップ108に進み、要求されたデータ値XがレジスタR13,R14,R15の1つに単に書き込まれる。
FIG. 10 is a flowchart showing an outline of the operation of the register
書込みが行われるレジスタが対称的レジスタ書込みに従う可能性がある場合は、ステップ110で現在この機能が可能かどうか判定する。現在この機能が可能でない場合は、処理はステップ108に進む。この機能が可能な場合は、処理はステップ112に進む。
If the register to be written may follow a symmetric register write,
ステップ112で、レジスタ制御回路はデータ値内のビット位置毎に、その位置に書き込まれた現在のビットとその位置に前に記憶されたビットとの逆排他的ORの値を計算し、次にこれと、そのビット位置に前に記憶されたダミー・レジスタ値との排他的ORをとる(図11を参照)。またレジスタ制御回路102は、この決定の逆と、データ値としてデータ・レジスタに書き込まれたビットの逆も計算する。これらの値を、書き込まれる全てのビットについて計算する(例えば、3ダミー32ビット値)。
At
ステップ114で、ステップ108と同様にしてデータ値をデータ・レジスタに書き込む。ステップ116で、関係するレジスタ内のビット位置毎に決定された別の3つの値を別の3レジスタに書き込む。ステップ114と116とは同時に行う。図11に関して説明するように、これにより高から低へと低から高への遷移の数と消費電力のバランスが得られる。
At
図11はデータ書込み動作の前と後の可能なビット値の表を示す。データ値はレジスタRnに書き込まれる。これは対称的書込み動作機能が適用されるレジスタである。時刻tと時刻t+1での値が示されている。これらの値の逆は簡単に決定される。この対称的動作に従う各データ・レジスタに対して、現在データ・レジスタ内に保持されているデータ値の逆を記憶する専用のダミーレジスタ98が設けられる。 FIG. 11 shows a table of possible bit values before and after the data write operation. The data value is written to the register Rn. This is a register to which the symmetrical write operation function is applied. Values at time t and time t + 1 are shown. The inverse of these values is easily determined. For each data register that follows this symmetrical operation, a dedicated dummy register 98 is provided that stores the inverse of the data value currently held in the data register.
共用ダミー・レジスタ100は図11にはレジスタRdで示されている。共用ダミー・レジスタRd内のビット位置毎に、データ書込みが起こったときにそのビット位置に書き込まれる新しい値が、図11の下部に示す関数で決定される。この関数により、データ値とデータ値の逆とに変化が起こらないときは、共用ダミー・レジスタ内の対応するビットとその逆とに、確かに変化が起こる。この表は、データ値が変化しないときに起こる共用ダミー・レジスタ値の変化と、データ値が変化したときに変化しないダミー・レジスタ値内の共用値を示す。このように、書込み毎に保証された固定の遷移数がある、すなわち、高から低へと低から高へのバランスされた等しい遷移数がある。
The shared
図13は、書込み動作がその条件コードを失敗したときに書き込みを行うダミー・データ・レジスタRDの動作を示す流れ図である。ステップ118で、制御論理は命令を受けるのを待つ。この制御論理は命令復号器68または他の論理でよい。ステップ120で、命令がその条件コードを失敗したかどうか判定する。命令コードがその条件コードを失敗しない場合は、通常はステップ122に進んで、その命令内のレジスタ・オペランドが指定するレジスタに書込みを行う。命令がその条件コードを失敗した場合は処理はステップ124に進み、ダミー・データ・レジスタ書込みが可能かどうか判定する。これが可能でない場合は処理は終了する。ダミー・データ・レジスタ書込みが可能な場合は処理はステップ126に進み、条件コードを失敗したにもかかわらず、条件コード失敗命令が計算したデータ値がトラッシュ・データ・レジスタRTに書き込まれる。これにより、条件コード合格か条件コード失敗かに関係なく、電力消費とタイミングとがバランスする。認識されるように、トラッシュ・データ・レジスタRTも前に説明した遷移バランシング機構に従う。
FIG. 13 is a flowchart illustrating the operation of the dummy data register RD that writes when the write operation fails its condition code. At
図13は、少なくとも複数の命令について多重命令実行機構を備えるデータ処理装置128を示す。データ処理装置128は、少なくとも複数のジャバ(登録商標)(Java(登録商標))バイトコード命令の本来の実行(native execution)を支援するものである。この型のデータ処理装置と固有の実行はPCT特許出願第WO−A−02/29555号に述べられている。この出願全体と、本来のハードウエア実行と、特に一層複雑なジャバ・バイトコードの選択的ソフトウエア・エミュレーションに関する開示をここに援用する。 FIG. 13 shows a data processing device 128 comprising a multiple instruction execution mechanism for at least a plurality of instructions. The data processing device 128 supports at least native execution of a plurality of Java (registered trademark) bytecode instructions. This type of data processing apparatus and specific implementation is described in PCT Patent Application No. WO-A-02 / 29555. The entire disclosure of this application, the original hardware implementation, and the disclosure relating to selective software emulation of particularly more complex Java bytecodes is incorporated herein by reference.
ジャバ・バイトコード復号器130は入力信号により選択的に可能と使用禁止になってよい。ジャバ・バイトコード復号器130が使用禁止の場合は、受けたジャバ・バイトコードは、例外的に固有のARMサム(Thumb)命令集合を用いてジャバ・バイトコードを処理するためのソフトウエア・エミュレーション・コードの実行を開始する。この支援コードは図に示す領域132内のメモリ内に記憶される。ジャバ・バイトコード・プログラム134もメモリ内に記憶される。ジャバ・プログラムの実行の性質を隠したい場合は、ジャバ・バイトコード復号器130に擬似ランダム信号を与えてこの要素を選択的に可能および使用禁止にして、ジャバ・バイトコードの命令実行機構を、混合ハードウエアおよびエミュレーション機構と純粋エミュレーション機構との間で実質的に切り替えてよい。システム構成レジスタ136内の構成制御値はジャバ復号器130が存在するかどうか、またこのジャバ復号器130をランダムに可能および使用禁止にすることが許されるかどうかを指定する。
The
図14は、受けたジャバ・バイトコードの処理の概要を示す。ステップ138でジャバ・バイトコードを受ける。ステップ140で、ジャバ復号器130が可能かどうか判定する。ジャバ復号器130を擬似ランダムに可能および使用禁止にすることにより、バイトコードを必ずエミュレートするステップ142かまたはハードウエアで命令を実行するステップ146に実質的に分岐する。これにより、ジャバ・バイトコード実行に付随する電力シグネチャが隠される/マスクされる。ステップ146で、関係する特定のジャバ・バイトコードがジャバ復号器130で支援されないと判定されると、ステップ142でこのジャバ・バイトコードもソフトウエアでエミュレートされる。しかしジャバ・バイトコードがハードウエアで支援される場合は、ステップ146でハードウエアで実行される。
FIG. 14 shows an outline of processing of the received Java bytecode. In
本発明の実施の形態について単なる例であるが添付の図面を参照して説明する。
Claims (24)
終了するまでに最小のサイクル数と最大のサイクル数との間のサイクル数を必要とする少なくとも1つの可変タイミング命令を含む複数の異なるプログラム命令に応じて、終了するまでに多くの処理サイクルをそれぞれ必要とする個別の処理動作を実行するプロセッサを備え、
前記プロセッサは可変タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、また、
前記プロセッサは固定タイミング・モードで動作して、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
データ処理装置。 A data processing device,
Depending on multiple different program instructions including at least one variable timing instruction that requires a minimum number of cycles between the minimum and maximum number of cycles to complete, each of many processing cycles to complete It has a processor that performs the required individual processing operations,
The processor operates in a variable timing mode, and the at least one variable timing instruction is allowed to take a variable number of processing cycles to complete, and
The processor operates in a fixed timing mode, and the at least one variable timing instruction is forced to multiply the maximum number of cycles before completing;
Data processing device.
多重サイクル乗算命令と、
多重サイクル除算命令と、
多重サイクル加算命令と、
多重サイクル減算命令と
の1つである、請求項8記載のデータ処理装置。 The instructions that can be terminated early are:
A multi-cycle multiply instruction;
A multi-cycle division instruction;
A multi-cycle addition instruction;
9. The data processing apparatus according to claim 8, wherein the data processing apparatus is one of a multi-cycle subtraction instruction.
前記プロセッサを可変タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに可変の処理サイクル数をかけることが許され、
前記プロセッサを固定タイミング・モードで動作させて、前記少なくとも1つの可変タイミング命令は終了するまでに前記最大のサイクル数をかけることを強制される、
ステップを含むデータを処理する方法。 Depending on a number of different program instructions including at least one variable timing instruction that requires a minimum number of cycles and a maximum number of cycles to complete, a large number of processing cycles to complete A method of processing data using a processor that performs each required individual processing operation,
The processor is allowed to operate in a variable timing mode and the at least one variable timing instruction is allowed to take a variable number of processing cycles before completing;
Operating the processor in a fixed timing mode, and the at least one variable timing instruction is forced to take the maximum number of cycles to complete;
A method of processing data including steps.
多重サイクル乗算命令と、
多重サイクル除算命令と、
多重サイクル加算命令と、
多重サイクル減算命令と
の1つである、請求項20記載のデータを処理する方法。 The instructions that can be terminated early are:
A multi-cycle multiply instruction;
A multi-cycle division instruction;
A multi-cycle addition instruction;
21. A method of processing data according to claim 20, wherein the data is one of a multi-cycle subtract instruction.
Applications Claiming Priority (5)
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 |
PCT/GB2003/004304 WO2004053685A1 (en) | 2002-12-12 | 2003-10-06 | Instruction timing control within a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006510127A JP2006510127A (en) | 2006-03-23 |
JP3848965B2 true JP3848965B2 (en) | 2006-11-22 |
Family
ID=32512449
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005502326A Expired - Fee Related JP4511461B2 (en) | 2002-12-12 | 2003-10-06 | Processing action masking in data processing system |
JP2005502329A Pending JP2006510998A (en) | 2002-12-12 | 2003-10-06 | Masking processing activity in a data processing system |
JP2005502327A Expired - Lifetime JP4619288B2 (en) | 2002-12-12 | 2003-10-06 | Processing action masking in data processing system |
JP2005502328A Expired - Lifetime JP3848965B2 (en) | 2002-12-12 | 2003-10-06 | Instruction timing control in data processor |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005502326A Expired - Fee Related JP4511461B2 (en) | 2002-12-12 | 2003-10-06 | Processing action masking in data processing system |
JP2005502329A Pending JP2006510998A (en) | 2002-12-12 | 2003-10-06 | Masking processing activity in a data processing system |
JP2005502327A Expired - Lifetime JP4619288B2 (en) | 2002-12-12 | 2003-10-06 | Processing action masking in data processing system |
Country Status (4)
Country | Link |
---|---|
US (4) | US7426629B2 (en) |
JP (4) | JP4511461B2 (en) |
GB (3) | GB2406943B (en) |
WO (4) | WO2004053685A1 (en) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426629B2 (en) * | 2002-12-12 | 2008-09-16 | Arm Limited | Processing activity masking in a data processing system |
US8065532B2 (en) * | 2004-06-08 | 2011-11-22 | Hrl Laboratories, Llc | Cryptographic architecture with random instruction masking to thwart differential power analysis |
US20070081484A1 (en) * | 2004-07-29 | 2007-04-12 | Wang Michael M | Methods and apparatus for transmitting a frame structure in a wireless communication system |
US9246728B2 (en) | 2004-07-29 | 2016-01-26 | Qualcomm Incorporated | System and method for frequency diversity |
US20080317142A1 (en) * | 2005-07-29 | 2008-12-25 | Qualcomm Incorporated | System and method for frequency diversity |
SG155171A1 (en) * | 2004-07-29 | 2009-09-30 | Qualcomm Inc | System and method for interleaving |
US8391410B2 (en) * | 2004-07-29 | 2013-03-05 | Qualcomm Incorporated | Methods and apparatus for configuring a pilot symbol in a wireless communication system |
FR2875657B1 (en) * | 2004-09-22 | 2006-12-15 | Trusted Logic Sa | METHOD OF SECURING CRYPTOGRAPHIC TREATMENTS THROUGH LURES. |
US7725694B2 (en) * | 2004-12-21 | 2010-05-25 | Denso Corporation | Processor, microcomputer and method for controlling program of microcomputer |
JP4889235B2 (en) * | 2005-04-27 | 2012-03-07 | 株式会社デンソー | Program control processor |
JP4702004B2 (en) * | 2004-12-21 | 2011-06-15 | 株式会社デンソー | Microcomputer |
US8312297B2 (en) * | 2005-04-21 | 2012-11-13 | Panasonic Corporation | Program illegiblizing device and method |
US7769983B2 (en) * | 2005-05-18 | 2010-08-03 | Qualcomm Incorporated | Caching instructions for a multiple-state processor |
US9391751B2 (en) * | 2005-07-29 | 2016-07-12 | Qualcomm Incorporated | System and method for frequency diversity |
US9042212B2 (en) | 2005-07-29 | 2015-05-26 | Qualcomm Incorporated | Method and apparatus for communicating network identifiers in a communication system |
WO2007023448A2 (en) * | 2005-08-24 | 2007-03-01 | Nxp B.V. | Processor hardware and software |
US8074059B2 (en) * | 2005-09-02 | 2011-12-06 | Binl ATE, LLC | System and method for performing deterministic processing |
JP4783104B2 (en) * | 2005-09-29 | 2011-09-28 | 株式会社東芝 | Encryption / decryption device |
EP1783648A1 (en) * | 2005-10-10 | 2007-05-09 | Nagracard S.A. | Secure microprocessor with instructions verification |
JP4882625B2 (en) * | 2005-12-26 | 2012-02-22 | 株式会社デンソー | Microcomputer |
US20070288740A1 (en) * | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for secure boot across a plurality of processors |
US20070288738A1 (en) * | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for selecting a random processor to boot on a multiprocessor system |
US20070288761A1 (en) * | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors |
US7774616B2 (en) * | 2006-06-09 | 2010-08-10 | International Business Machines Corporation | Masking a boot sequence by providing a dummy processor |
US20070288739A1 (en) * | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for masking a boot sequence by running different code on each processor |
US7594104B2 (en) * | 2006-06-09 | 2009-09-22 | International Business Machines Corporation | System and method for masking a hardware boot sequence |
JP4680876B2 (en) * | 2006-12-11 | 2011-05-11 | ルネサスエレクトロニクス株式会社 | Information processing apparatus and instruction fetch control method |
US7711927B2 (en) * | 2007-03-14 | 2010-05-04 | Qualcomm Incorporated | System, method and software to preload instructions from an instruction set other than one currently executing |
JP5146156B2 (en) * | 2008-06-30 | 2013-02-20 | 富士通株式会社 | Arithmetic processing unit |
WO2010116474A1 (en) | 2009-03-30 | 2010-10-14 | 富士通株式会社 | Optical transmission system and optical transmission method |
EP2367102B1 (en) * | 2010-02-11 | 2013-04-10 | Nxp B.V. | Computer processor and method with increased security properties |
GB2480296A (en) | 2010-05-12 | 2011-11-16 | Nds Ltd | Processor with differential power analysis attack protection |
US8525545B1 (en) | 2011-08-26 | 2013-09-03 | Lockheed Martin Corporation | Power isolation during sensitive operations |
US8624624B1 (en) | 2011-08-26 | 2014-01-07 | Lockheed Martin Corporation | Power isolation during sensitive operations |
US8694862B2 (en) | 2012-04-20 | 2014-04-08 | Arm Limited | Data processing apparatus using implicit data storage data storage and method of implicit data storage |
JP5926655B2 (en) * | 2012-08-30 | 2016-05-25 | ルネサスエレクトロニクス株式会社 | Central processing unit and arithmetic unit |
US20150161401A1 (en) * | 2013-12-10 | 2015-06-11 | Samsung Electronics Co., Ltd. | Processor having a variable pipeline, and system-on-chip |
US9569616B2 (en) * | 2013-12-12 | 2017-02-14 | Cryptography Research, Inc. | Gate-level masking |
US9454370B2 (en) | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
US9558032B2 (en) | 2014-03-14 | 2017-01-31 | International Business Machines Corporation | Conditional instruction end operation |
US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
US9305167B2 (en) * | 2014-05-21 | 2016-04-05 | Bitdefender IPR Management Ltd. | Hardware-enabled prevention of code reuse attacks |
US10049211B1 (en) * | 2014-07-16 | 2018-08-14 | Bitdefender IPR Management Ltd. | Hardware-accelerated prevention of code reuse attacks |
KR102335203B1 (en) * | 2015-08-10 | 2021-12-07 | 삼성전자주식회사 | Electronic device against side channel attack |
US10210350B2 (en) * | 2015-08-10 | 2019-02-19 | Samsung Electronics Co., Ltd. | Electronic device against side channel attacks |
US10200192B2 (en) | 2017-04-19 | 2019-02-05 | Seagate Technology Llc | Secure execution environment clock frequency hopping |
US10459477B2 (en) | 2017-04-19 | 2019-10-29 | Seagate Technology Llc | Computing system with power variation attack countermeasures |
US10270586B2 (en) | 2017-04-25 | 2019-04-23 | Seagate Technology Llc | Random time generated interrupts in a cryptographic hardware pipeline circuit |
US10771236B2 (en) | 2017-05-03 | 2020-09-08 | Seagate Technology Llc | Defending against a side-channel information attack in a data storage device |
US10511433B2 (en) | 2017-05-03 | 2019-12-17 | Seagate Technology Llc | Timing attack protection in a cryptographic processing system |
FR3071121B1 (en) * | 2017-09-14 | 2020-09-18 | Commissariat Energie Atomique | PROCESS FOR EXECUTION OF A BINARY CODE OF A FUNCTION SECURE BY A MICROPROCESSOR |
US11308239B2 (en) | 2018-03-30 | 2022-04-19 | Seagate Technology Llc | Jitter attack protection circuit |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4064558A (en) * | 1976-10-22 | 1977-12-20 | General Electric Company | Method and apparatus for randomizing memory site usage |
US4168396A (en) * | 1977-10-31 | 1979-09-18 | Best Robert M | Microprocessor for executing enciphered programs |
US4593353A (en) * | 1981-10-26 | 1986-06-03 | Telecommunications Associates, Inc. | Software protection method and apparatus |
JPS59739A (en) | 1982-06-28 | 1984-01-05 | Fujitsu Ltd | Time assurance system in microprogram processor |
JPS595354A (en) | 1982-06-30 | 1984-01-12 | Fujitsu Ltd | Data processing device |
JP2562838B2 (en) * | 1989-02-10 | 1996-12-11 | 富士通株式会社 | Processor and store buffer control method |
US5574912A (en) * | 1990-05-04 | 1996-11-12 | Digital Equipment Corporation | Lattice scheduler method for reducing the impact of covert-channel countermeasures |
GB2282245B (en) * | 1993-09-23 | 1998-04-15 | Advanced Risc Mach Ltd | Execution of data processing instructions |
US5404402A (en) * | 1993-12-21 | 1995-04-04 | Gi Corporation | Clock frequency modulation for secure microprocessors |
IL110181A (en) * | 1994-06-30 | 1998-02-08 | Softchip Israel Ltd | Microprocessor device and peripherals |
US5675645A (en) * | 1995-04-18 | 1997-10-07 | Ricoh Company, Ltd. | Method and apparatus for securing executable programs against copying |
FR2745924B1 (en) * | 1996-03-07 | 1998-12-11 | Bull Cp8 | IMPROVED INTEGRATED CIRCUIT AND METHOD FOR USING SUCH AN INTEGRATED CIRCUIT |
JP3683031B2 (en) * | 1996-04-17 | 2005-08-17 | 株式会社リコー | Program protector |
US5802360A (en) * | 1996-05-01 | 1998-09-01 | Lucent Technologies Inc. | Digital microprocessor device having dnamically selectable instruction execution intervals |
US6192475B1 (en) * | 1997-03-31 | 2001-02-20 | David R. Wallace | System and method for cloaking software |
FR2765361B1 (en) * | 1997-06-26 | 2001-09-21 | Bull Cp8 | UNPREDICTABLE MICROPROCESSOR OR MICROCALCULATOR |
JP3816961B2 (en) * | 1997-10-02 | 2006-08-30 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Data processing apparatus for processing virtual machine instructions |
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
DE69938045T2 (en) * | 1998-06-03 | 2009-01-15 | Cryptography Research Inc., San Francisco | Use of unpredictable information to minimize the leak of chip cards and other cryptosystems |
EP1088295B1 (en) * | 1998-06-03 | 2007-08-15 | Cryptography Research Inc. | Balanced cryptographic computational method and apparatus for leak minimization in smartcards and other cryptosystems |
CA2243761C (en) * | 1998-07-21 | 2009-10-06 | Certicom Corp. | Timing attack resistant cryptographic system |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
FR2787900B1 (en) * | 1998-12-28 | 2001-02-09 | Bull Cp8 | INTELLIGENT INTEGRATED CIRCUIT |
US6804782B1 (en) * | 1999-06-11 | 2004-10-12 | General Instrument Corporation | Countermeasure to power attack and timing attack on cryptographic operations |
US6609201B1 (en) * | 1999-08-18 | 2003-08-19 | Sun Microsystems, Inc. | Secure program execution using instruction buffer interdependencies |
FR2802733B1 (en) * | 1999-12-21 | 2002-02-08 | St Microelectronics Sa | SECURE MASTER-SLAVE LOCK |
JP4168305B2 (en) * | 2000-01-12 | 2008-10-22 | 株式会社ルネサステクノロジ | IC card and microcomputer |
JP2001266103A (en) * | 2000-01-12 | 2001-09-28 | Hitachi Ltd | IC card and microcomputer |
CA2298990A1 (en) * | 2000-02-18 | 2001-08-18 | Cloakware Corporation | Method and system for resistance to power analysis |
AU2001245511A1 (en) * | 2000-03-10 | 2001-09-24 | Arc International Plc | Method and apparatus for enhancing the performance of a pipelined data processor |
DE50014462D1 (en) * | 2000-05-22 | 2007-08-16 | Infineon Technologies Ag | Security data processing unit and associated method |
US6625737B1 (en) * | 2000-09-20 | 2003-09-23 | Mips Technologies Inc. | System for prediction and control of power consumption in digital system |
GB2367653B (en) * | 2000-10-05 | 2004-10-20 | Advanced Risc Mach Ltd | Restarting translated instructions |
DE10101956A1 (en) * | 2001-01-17 | 2002-07-25 | Infineon Technologies Ag | Method for increasing the security of a CPU by prevention of differential power analysis by insertion of a random placeholder code in a CPU pipeline decode stage that does not, however, affect the CPU state |
US7426629B2 (en) * | 2002-12-12 | 2008-09-16 | Arm Limited | Processing activity masking in a data processing system |
-
2003
- 2003-10-06 US US10/527,960 patent/US7426629B2/en not_active Expired - Lifetime
- 2003-10-06 GB GB0502061A patent/GB2406943B/en not_active Expired - Fee Related
- 2003-10-06 WO PCT/GB2003/004304 patent/WO2004053685A1/en active Application Filing
- 2003-10-06 JP JP2005502326A patent/JP4511461B2/en not_active Expired - Fee Related
- 2003-10-06 WO PCT/GB2003/004313 patent/WO2004053684A2/en active Application Filing
- 2003-10-06 JP JP2005502329A patent/JP2006510998A/en active Pending
- 2003-10-06 WO PCT/GB2003/004256 patent/WO2004053683A2/en active Application Filing
- 2003-10-06 JP JP2005502327A patent/JP4619288B2/en not_active Expired - Lifetime
- 2003-10-06 WO PCT/GB2003/004261 patent/WO2004053662A2/en active Application Filing
- 2003-10-06 US US10/527,575 patent/US7313677B2/en not_active Expired - Lifetime
- 2003-10-06 US US10/512,093 patent/US7134003B2/en not_active Expired - Lifetime
- 2003-10-06 JP JP2005502328A patent/JP3848965B2/en not_active Expired - Lifetime
- 2003-10-06 US US10/527,812 patent/US20060117167A1/en not_active Abandoned
- 2003-10-06 GB GB0423310A patent/GB2403572B/en not_active Expired - Lifetime
- 2003-10-06 GB GB0501017A patent/GB2406684B/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB2406943A (en) | 2005-04-13 |
US7134003B2 (en) | 2006-11-07 |
GB2406684B (en) | 2005-08-24 |
WO2004053683A2 (en) | 2004-06-24 |
WO2004053662A3 (en) | 2004-08-12 |
JP2006510126A (en) | 2006-03-23 |
WO2004053684A2 (en) | 2004-06-24 |
US7313677B2 (en) | 2007-12-25 |
GB2403572A (en) | 2005-01-05 |
GB2406684A (en) | 2005-04-06 |
GB2403572B (en) | 2005-11-09 |
US20060036833A1 (en) | 2006-02-16 |
WO2004053683A3 (en) | 2004-08-05 |
JP4619288B2 (en) | 2011-01-26 |
US7426629B2 (en) | 2008-09-16 |
GB2406943B (en) | 2005-10-05 |
JP2006510998A (en) | 2006-03-30 |
GB0502061D0 (en) | 2005-03-09 |
WO2004053684A3 (en) | 2004-08-12 |
US20050289331A1 (en) | 2005-12-29 |
US20060155962A1 (en) | 2006-07-13 |
JP4511461B2 (en) | 2010-07-28 |
GB0501017D0 (en) | 2005-02-23 |
WO2004053662A2 (en) | 2004-06-24 |
JP2006522375A (en) | 2006-09-28 |
WO2004053685A1 (en) | 2004-06-24 |
GB0423310D0 (en) | 2004-11-24 |
JP2006510127A (en) | 2006-03-23 |
US20060117167A1 (en) | 2006-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3848965B2 (en) | Instruction timing control in data processor | |
KR102558104B1 (en) | Call path dependent authentication | |
US9582650B2 (en) | Security of program executables and microprocessors based on compiler-architecture interaction | |
US7178011B2 (en) | Predication instruction within a data processing system | |
JP7105699B2 (en) | Program loop control | |
CN113228024A (en) | Secure predictor for speculative execution | |
US11307856B2 (en) | Branch target variant of branch-with-link instruction | |
Winderix et al. | Architectural Mimicry: Innovative Instructions to Efficiently Address Control-Flow Leakage in Data-Oblivious Programs | |
KR102379886B1 (en) | Vector instruction processing | |
US20230259605A1 (en) | Authentication code generation/checking instructions | |
JP2010282651A (en) | Processing activity masking in data processing system | |
GB2396229A (en) | Processor to register writing masking by writing to normal register or to a trash register | |
WO2024028565A1 (en) | No-operation-compatible instruction | |
KR20230158569A (en) | How to protect programs in integrated circuits | |
JP2001195252A (en) | Processor for improving branching efficiency by using invalidation by mask technique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060817 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060828 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3848965 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090901 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130901 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |