(57)【特許請求の範囲】
【請求項１】
第一のｍ（ｍは正の整数）ビットレジスタと第二のｍビットレジスタとによりｍビット演算をおこなう情報処理装置において、
コピーコントローラと、
演算器と、
検査装置とを有し、
前記コピーコントローラは、前記第一のｎビットレジスタおよび前記第二のｎビットレジスタのｎ（ｎは正の整数、ｍ＞ｎ）ビットの値を、各々のレジスタの残りのｍ−ｎビットの所定の領域にコピーし、
前記演算器は、前記第一のｍビットレジスタの値と前記第二のｍビットレジスタの値とを演算して、出力し、
前記検査装置は、前記演算器の出力により誤演算が発生したか否かを判定することを特徴とする情報処理装置。
【請求項２】
ｍが偶数であって、ｎ＝ ｍ／２であることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記演算器は、加算器であり、
前記検査装置は、減算器と比較器とからなり、
前記コピーコントローラは、前記第一のｍビットレジスタおよび前記第二のｍビットレジスタのｎビットの値を、各々のレジスタの残りのｎビットの領域にそれぞれｎビットの同一の値をコピーし、
前記加算器により前記第一のｍビットレジスタと前記第二のｍビットレジスタの値とを加算して、出力し、
前記加算器の加算結果において、桁あふれが生じたときには、前記加算器の出力のｍビット値のうち上位ｎビットの値から１を減じて、出力し、
前記比較器により前記減算器の出力と前記加算器の出力の下位ｎビットの値を比較することにより誤演算を検出することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記演算器は、乗算器であり、
前記検査装置は、加算器と比較器とからなり、
さらに、符号反転装置を備え、
前記符号反転装置は、前記第一のｍビットレジスタの値のうちｎビットの値を残りのｎビットの領域に符号反転してコピーし、
前記コピーコントローラは、前記第二のｍビットレジスタの値のうちｎビットの値を残りのｎビットの領域にコピーし、
前記乗算器により前記第一のｍビットレジスタと前記第二のｍビットレジスタとを乗算し、２ｍビットの値を出力し、
前記加算器により前記乗算器の出力の２ｍビットの値の上位ｍビットの値と下位ｍビットの値を加算して出力し、
前記比較器により前記加算器の出力と前記第二のｍビットレジスタの値を比較することにより誤演算を検出することを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記演算器は、乗算器であり、
前記検査装置は、加算器と比較器とからなり、
さらに、符号反転装置を備え、
前記符号反転装置は、前記第一のｍビットレジスタの値のうちｎビットの値を残りのｎビットの領域に符号反転してコピーし、
前記コピーコントローラは、前記第二のｍビットレジスタの値のうちｎビットの値を残りのｎビットの領域にコピーし、
前記乗算器により前記第一のｍビットレジスタと前記第二のｍビットレジスタとを乗算し、２ｍビットの値を出力し、
前記加算器により前記乗算器の出力の２ｍビットの値の上位ｍビットの値と下位ｍビットの値とを加算して出力し、
前記比較器により前記加算器の出力の上位ｍビットの値と下位ｍビットの値とを比較することにより誤演算を検出することを特徴とする請求項２記載の情報処理装置。
【請求項６】
レジスタアクセスコントローラを備え、
前記レジスタアクセスコントローラは、ｍビットレジスタを演算する第一のモードと第二のモードとを切り替え、
前記第一のモードでは、ｍビットうち所定のｎビットをユーザ命令の演算対象とし、
前記第二のモードでは、ｍビットうち所定のｎビットをユーザ命令の演算対象とはしないことを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記誤演算が発生したと判定されたときには、リセット動作をおこなうことを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記コピーコントローラの消費電力を一定とすることを特徴とする請求項１記載の情報処理装置。
【請求項９】
コピー元となるレジスタのビットを保持する記憶素子がコピー先のレジスタのビットを保持する記憶素子と垂直方向に重なるように配置することを特徴とする請求項１記載の情報処理装置。
【請求項１０】
２ｎビットのレジスタを二つのｎビットのレジスタとして使用可能な情報処理装置の誤演算検出方法において、
第一の２ｎビットレジスタの下位を第一のｎビットレジスタ、上位を第二のｎビットレジスタとし、
第二の２ｎビットレジスタの下位を第三のｎビットレジスタ、上位を第四のｎビットレジスタとして、
（１）第一のｎビットレジスタの値を第二のｎビットレジスタにコピーするステップ、
（２）第三のｎビットレジスタの値を第四のｎビットレジスタにコピーするステップ、
（３）前記第一の２ｎビットレジスタと、前記第二の２ｎビットレジスタを入力とする演算をおこない、結果を第三の２ｎビットレジスタおよび状態レジスタに格納するステップ、
（４）前記第三の２ｎビットレジスタの上位ｎビットの値、下位ｎビットの値と、前記状態レジスタとにより演算の正当性の検査をおこなうステップ
からなることを特徴とする情報処理装置の誤演算検出方法。
【請求項１１】
前記第三の２ｎビットレジスタの下位を第五のｎビットレジスタ、上位を第六のｎビットレジスタとし、
前記（３）のステップは、前記第一の２ｎビットレジスタと、前記第二の２ｎビットレジスタを加算し、結果を第三の２ｎビットレジスタおよび状態レジスタに格納するステップであって、
前記（４）のステップは、前記第六のｎビットレジスタから前記状態レジスタの値を減算し、第五のｎビットレジスタの値と比較するステップであることを特徴とする請求項１０記載の情報処理装置の誤演算検出方法。
【請求項１２】
２ｎビットのレジスタを二つのｎビットのレジスタとして使用可能であり、４ｎビットのレジスタを二つの２ｎビットのレジスタとして使用可能である情報処理装置の誤演算検出方法において、
第一の２ｎビットレジスタの下位を第一のｎビットレジスタ、上位を第二のｎビットレジスタとし、
第二の２ｎビットレジスタの下位を第三のｎビットレジスタ、上位を第四のｎビットレジスタとし、
第一の４ｎビットレジスタの下位を第三の２ｎビットレジスタ、上位を第四の２ｎビットレジスタとして、
（１）第一のｎビットレジスタの値を符号反転して第二のｎビットレジスタにコピーするステップ、
（２）第三のｎビットレジスタの値を第四のｎビットレジスタにコピーするステップ、
（３）前記第一の２ｎビットレジスタの値と、前記第二の２ｎビットレジスタの値を乗算し、結果を第一の４ｎビットレジスタに格納するステップ、
（４）前記第三の２ｎビットレジスタの値と、第四の２ｎビットレジスタの値を加算し、出力するステップ
（５）前記（４）のステップの加算結果と、前記第二の２ｎビットレジスタの値を比較するステップ
からなることを特徴とする情報処理装置の誤演算検出方法。
【請求項１３】
２ｎビットのレジスタを二つのｎビットのレジスタとして使用可能であり、４ｎビットのレジスタを二つの２ｎビットのレジスタとして使用可能である情報処理装置の誤演算検出方法において、
第一の２ｎビットレジスタの下位を第一のｎビットレジスタ、上位を第二のｎビットレジスタとし、
第二の２ｎビットレジスタの下位を第三のｎビットレジスタ、上位を第四のｎビットレジスタとし、
第一の４ｎビットレジスタの下位を第三の２ｎビットレジスタ、上位を第四の２ｎビットレジスタとして、
（１）第一のｎビットレジスタの値を符号反転して第二のｎビットレジスタにコピーするステップ、
（２）第三のｎビットレジスタの値を第四のｎビットレジスタにコピーするステップ、
（３）前記第一の２ｎビットレジスタの値と、前記第二の２ｎビットレジスタの値を乗算し、結果を第一の４ｎビットレジスタに格納するステップ、
（４）前記第三の２ｎビットレジスタの値と、第四の２ｎビットレジスタの値を加算し、出力するステップ
（５）前記（４）のステップの加算結果の上位２ｎビットの値と、下位２ｎビットの値を比較するステップ
からなることを特徴とする情報処理装置の誤演算検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および、その誤演算検出方法に係り、特に、個人認証、課金処理をおこなうため耐タンパ性を有し、高いセキュリティを要するスマートカードやＧＳＭモバイルホンなどで用いられるＩＣチップなどに用いて好適な情報処理装置、および、その誤演算検出方法に関する。
【背景技術】
【０００２】
マイコンは、外部から入力するクロック信号と電力によって動作する。クロック信号や電力が期待通りに供給されていれば、演算が正しくおこなわれるように設計されている。しかし、クロック信号や電力が不安定である場合、必ずしも期待された演算を完了できるとは限らない。また、そのような不安定な状態を故意に作り出して誤演算を発生させ、以下の非特許文献１に示されるような手法で暗号を解読しようとする攻撃方法が知られている。そのため、暗号処理をおこなうモジュールにおいては、特に、誤演算が発生しないか、発生しても検出することができるように構成することが望ましいといえる。【０００３】
【特許文献１】特開２００１−３０６３４６号公報
【非特許文献１】"On the Importance of Checking Cryptographic Protocols for Faults," Proc. of EUROCRYPT'97, Lecture Notes in Computer Science, Advances in Cryptology, pp.37-51, 1997.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
以下、一般的なマイコンのプロセッサの構成と誤演算の関係について説明する。【０００５】
マイコンが搭載するプロセッサは、複数のレジスタと、レジスタ間の演算をおこなうための算術および論理演算ユニット（Arithmetic Logical Unit、以下「ＡＬＵ」と記述する）を備えている。レジスタは、ソフトウェアから、８ビット、１６ビット、３２ビットといった単位でアクセスすることのできる一時記憶装置であり、一般的には、R0，R1，…，R31 のように命名され区別されている。ＡＬＵは、指定されたレジスタ間の演算をおこない、指定されたレジスタに演算結果を出力する。どのような演算をおこなうかは、機械語によって指示される。機械語は、実装面積の効率化を目的として、冗長性をほとんど持たないように定義されていることが多い。そのため、人間が直接理解することは困難である。そこで、演算は、アセンブラなどの人間が理解できる言語で記述され、コンパイラによってプロセッサが解釈することのできる機械語へと翻訳される。例えば、「add R0, R1」は、アセンブラによって記述した演算の例である。この記述は、レジスタR0とR1の値を加算し、その結果をR1に保存することを意味している。プロセッサが内部でおこなう演算の手順をより詳細に記述すると、以下のようになる。
step 1. R0を読み出し、加算器の入力１として設定する。
step 2. R1を読み出し、加算器の入力２として設定する。
step 3. 加算器を動作させ、入力１と入力２の加算結果を得る。
step 4. 加算結果を、R1に書き込む。
【０００６】
よって、本記述による加算命令を実行した後、レジスタR1は以前の値を破棄し、新しい結果を保持することになる。なお、入力値となる2つのレジスタに加えて、出力先の別のレジスタ名を指示することで、入力値を破棄しないように構成する場合もある。【０００７】
ここで、誤演算が発生する場合のメカニズムは以下のように考えられる。レジスタR0, R1に記憶されている値をそれぞれr0, r1と記述する。たとえば、上記step 1においてR0の読み出し処理が誤れば、値r0ではなく、誤りを含む値r0′が読み出される。この場合、step 3で加算器が処理する値は、本来意図したr0とr1ではなく、r0′とr1である。よって、step 4でR1に書き込まれる値は、r0+r1ではなくr0′+r1となる。step 2においてR1の読み出し処理が誤った場合も同様の結果となる。また、R0、R1の読み出し処理が正しくおこなわれたとしても、step 3での加算処理が誤れば、step 4でR1に書き込まれる値は、本来期待された値とは異なるものになる。さらには、step 4でR1への書き込み処理が誤れば、R1が保持する値はやはり、本来期待された値とは異なるものになる。【０００８】
誤演算の有無を検査する基本的な方法として、複数回同一の演算を繰り返し、その結果が一致しているかどうかを検査する方法が挙げられる。これら複数回の演算は、ひとつのプロセッサを複数回動作させる方法でおこなう場合や、複数のプロセッサを用いて並列におこなう場合が考えられる。ただし、ひとつのプロセッサによって２回以上の繰り返し演算をおこなう方法では処理時間が少なくとも２倍に増加し、複数のプロセッサを用いる方法では、回路が複雑化し実装面積が少なくとも２倍に増加する。そのため、スマートカードのような、パーソナルコンピューターなどと比較して、計算能力が必ずしも高くなく、実装可能面積が制限される小型のデバイスには適用が困難である。【０００９】
この課題を解決するための従来の方法として、上記特許文献１が挙げられる。【００１０】
以下、図２を用いて特許文献１に係る演算処理装置の処理の概要について説明する。
図２は、特許文献１に係る演算処理装置の構成を示すブロック図である。【００１１】
この演算処理装置では、まず、従来ある２ｎビットの演算器３０を、２つのｎビット演算器３１と３２に分離して独立に使用することができるように構成している。誤演算を検出したい場合は、選択信号１５０と１５１によって、２ｎビットレジスタのうち、下位ｎビット１０および１２のコピーを作成した後に、前記の２つのｎビット演算器３１と３２でそれぞれ演算する。結果を格納するレジスタ１４と１５の内容が一致することを比較器４１で確認することで、誤演算の有無を検査し、その結果を出力線４００を通じて外部に通知する。しかし、本方式では、レジスタから演算器に転送するまでの間で、下位ｎビットのコピーを作成するまでの期間において攻撃を受ければ、二つのｎビット演算器に入力される値がいずれも誤ることになるため、誤演算を検出することができない。また、演算器の処理速度の高速化のために、必ずしも２ｎビットの演算器を二つのｎビット演算器に分割して使用するための回路を追加できない場合には、対応することができなかった。【００１２】
本発明は、上記問題点を解決するためになされたもので、その目的は、演算元の値が格納されているレジスタから演算器に転送するまでの間に発生するエラー検出を可能にして、従来技術よりも耐タンパ性を向上させ、演算処理速度の高速化をおこなうことのできる情報処理装置、および、その誤演算検出方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の情報処理装置の基本的な演算処理を以下に示されるようになる。【００１４】
セキュリティを確保することが必要な場合のみに、誤演算検出のために以下の処理をおこない、セキュリティが不要な場合には、通常の演算処理をおこなう。
（１）  ユーザーが使用可能なレジスタサイズを制限し、レジスタの使用をできなくした部分のデータのコピーを作成する。
（２）  元のレジスタサイズで演算をおこなう。
（３）  コピー元の部分の演算結果と、コピー先の演算結果を比較する。
（４）  比較結果の検査をおこない、演算の誤りを検出する。【００１５】
また、以上を実行するための、プロセッサに特別なモードないしは特別な命令を備える。【００１６】
プロセッサは、誤演算検出モード（または、誤演算検出可能演算命令）を備え、このモードで動作するときには、内部レジスタのサイズを制限し、レジスタの残りを同時に利用して演算を多重化し、演算結果を比較することによって誤演算を検出する。誤演算検出モードと通常モードは、特別のビットを用意して、誤演算検出モード動作指定ビットとして設定する（または、誤演算検出可能演算命令を発行する）ことで、ユーザーが任意のタイミングで切り替えることができる。【００１７】
誤演算検出モードは、例えば、スマートカードなどで、本人の認証処理や課金処理のロジックを走らせるときなど、特に、セキュリティを要するときに使用すればよい。
【発明の効果】
【００１８】
本発明によれば、演算元の値が格納されているレジスタから演算器に転送するまでの間に発生するエラー検出を可能にして、従来技術よりも耐タンパ性を向上させ、演算処理速度の高速化をおこなうことのできる情報処理装置、および、その誤演算検出方法を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明に係る各実施形態を、図１、図３ないし図１４を用いて説明する。【００２０】
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１、図３ないし図７を用いて説明する。【００２１】
先ず、図１を用いて本発明に係る第一の実施形態の情報処理装置の一般的な構成を説明する。
図１は、本発明に係る第一の実施形態の情報処理装置の一般的な構成図である。【００２２】
本実施形態の情報処理装置は、第一のｎビットレジスタ１０と、第二のｎビットレジスタ１１と、第三のｎビットレジスタ１２と、第四のｎビットレジスタ１３と、第五のｎビットレジスタ１４と、第六のｎビットレジスタ１５と、２ｎビットの演算器３０と、状態レジスタ１６と、第一のコピーコントローラ２０と、第二のコピーコントローラ２１と、検査装置４０と、検査結果出力線４００を備えている。これらは、図１に示すように、第一のデータ線１０２、第二のデータ線１０３、第三のデータ線１０４、第四のデータ線１０５、第五のデータ線１０６、第六のデータ線１０７で接続されている。【００２３】
第一のｎビットレジスタ１０と第二のｎビットレジスタ１１は、二つを合わせて第一の２ｎビットレジスタとみなして取り扱うことが可能であるように構成されており、同様に、第三のｎビットレジスタ１２と第四のｎビットレジスタ１３は、第二の２ｎビットレジスタとみなして取り扱うことが可能であるように構成されており、第五のｎビットレジスタ１４と第六のｎビットレジスタ１５は、第三の２ｎビットレジスタとみなして取り扱うことが可能であるように構成される。【００２４】
第一のコピーコントローラ２０は、第二のｎビットレジスタ１１の内容を第一のｎビットレジスタ１０にコピーすることができ、第二のコピーコントローラ２１は、第四のｎビットレジスタ１３の内容を第三のｎビットレジスタ１２にコピーすることができる。演算器３０は、第一の２ｎビットレジスタと第二の２ｎビットレジスタを入力として受け取り、所定の演算を行った後に、第三の２ｎビットレジスタと状態レジスタ１６の内容を更新する。検査装置４０は、第三の２ｎビットレジスタと状態レジスタ１６を入力とし、演算器３０の処理の正しさを検証し、検査結果を出力信号線４００に出力する。【００２５】
本情報処理装置は、通常動作モードと誤演算検出モードに二種類のモードを備えており、これらを適宜切り替えて動作する。【００２６】
通常動作モードは、本来の動作モードであり演算器で２ｎビットの演算をおこない結果を出力するモードである。誤演算検出モードは、セキュリティを高め、誤演算を検出するためのモードであり、演算器ではｎビットの演算をおこない結果を出力するモードである。【００２７】
通常動作モード時における本実施形態の情報処理装置の動作は、以下のようになる。【００２８】
第一のｎビットレジスタ１０と第二のｎビットレジスタ１１は、第一の２ｎビットレジスタとして取り扱われ、第三のｎビットレジスタ１２と第四のｎビットレジスタ１３は、第二の２ｎビットレジスタとして取り扱われる。これら二つの２ｎビットレジスタは、２ｎビットの演算器３０において処理され、演算結果は第五のｎビットレジスタ１４と第六のｎビットレジスタ１５からなる第三の２ｎビットレジスタに格納される。【００２９】
また、演算値の繰り上がり等の状態は、状態レジスタ１６に格納される。本動作は、２ｎビットの演算器と２ｎビットのレジスタを備える一般の情報処理装置と全く同様のものと理解される。このとき、本実施形態の情報処理装置は、第一のコピーコントローラ２０と第二のコピーコントローラ２１と検査装置４０の動作を停止させることで消費電力を低減させたり、これらの回路を使用している場合と使用していない場合での消費電力等の動作特性に変化がないように常に動作させ続けたりすることができるように構成することもできる。【００３０】
誤演算検出モードにおける本実施形態の情報処理装置の動作は、以下のようになる。【００３１】
第一のコピーコントローラ２０によって、第二のｎビットレジスタ１１の内容を第一のｎビットレジスタ１０にコピーし、第二のコピーコントローラ２１によって、第四のｎビットレジスタ１３の内容を第三のｎビットレジスタ１２にコピーする。その際、第一のｎビットのレジスタ１０や第三のｎビットレジスタ１２に格納されていた値は、上書きされる。第一のｎビットレジスタ１０と第二のｎビットレジスタ１１は、第一の２ｎビットレジスタ、第三のｎビットレジスタ１２と第四のｎビットレジスタ１３は第二の２ｎビットレジスタとみなされ、２ｎビットの演算器３０で処理され、２ｎビットの処理結果は、第三の２ｎビットレジスタとみなされている第五のｎビットレジスタ１４と第六のｎビットレジスタ１５に格納される。同時に、状態レジスタ１６も更新される。【００３２】
次に、第三の２ｎビットレジスタ１２と状態レジスタ１６の値は、検査装置４０に入力される。検査装置４０では、入力された値を補正した後に比較することで、演算器３０での処理が正常におこなわれたか否かを判定し、その結果を出力信号線４００を通じて外部に伝達する。【００３３】
この誤演算検出モードにおいては、第二のｎビットレジスタ１１と第四のｎビットレジスタが書き込まれるあとで以下の各フェーズでのエラーを検出することができる。
（１）コピーコントローラ２０により、第二のｎビットレジスタ１１の値を第一のｎビットレジスタ１０にコピーするとき、あるいは、コピーコントローラ２１により、第四のｎビットレジスタ１３の値を第一のｎビットレジスタ１２にコピーするとき。
（２）第一のデータ線１０２、第二のデータ線１０３によるデータ転送時。
（３）演算器３０に第一のデータ線１０２、第二のデータ線１０３からのデータが書き込まれる時。
（４）演算器３０での演算時。
（５）演算器３０の状態レジスタへの状態転送時、書き込み時。
（６）演算器３０から第三の２ｎビットレジスタへのデータ線１０４による転送時。
（７）データ線１０４からのデータが第三の２ｎビットレジスタに書き込まれるとき。
（８）データ線１０５、１０６による検査装置への転送時。【００３４】
次に、図３ないし図７を用いて本発明の第一の実施形態に係る情報処理装置の詳細な構成について説明する。
図３は、一般的な３２ビットCPUのレジスタ構成を示す図である。
図４は、本発明の情報処理装置の誤演算検出モードでのＣＰＵのレジスタ使用制限を示す図である。【００３５】
ER0からER6は汎用レジスタであり、通常は、Ex (１６ｂｉｔ), RxH, RxL (各８ｂｉｔ)として、あるいは、Rx (１６ｂｉｔ)やERx (３２ｂｉｔ)として、ユーザーが自由に使用することができる。本発明の情報処理装置では、CPUの動作モードとして、新たに誤演算検出モードを設定し、このモードでは、図４に示すように、ユーザーが少なくとも一部のExレジスタを使用できないように制限する。さらに、同レジスタを利用してRxレジスタを用いた演算を並列多重化し、演算器の結果出力時に結果を検査することで、誤演算を検出する。【００３６】
図５および図６は、コピーコントローラ、レジスタ、演算器、検査装置の接続関係について示した図である。
図５に示される情報処理装置は、第一のデータバス１１０と第二のデータバス１１１をそなえ、これらのデータバスに、各レジスタや演算器が接続されている。第一のｎビットレジスタ１０と第二のｎビットレジスタ１１は、第一の２ｎビットレジスタとしても読み出すことが可能であり、読み出された第一の２ｎビットレジスタの値は、第一のデータバス１１０および、第一のデータ線１０２ないしは第二のデータ線１０３を通じて演算器３０に入力される。演算器が加法、乗法などの二つの入力から一つの結果を得る演算をおこなう場合であれば、第三のｎビットレジスタ１２と第四のｎビットレジスタ１３が用いられる。【００３７】
第二の２ｎビットレジスタの値が、第一のデータバス１１０に読み出され、さらに第一のデータ線１０２ないしは第二のデータ線１０３を通じて演算器３０に入力される。演算結果は、第三のデータ線１０４を通じて第二のデータバス１１１に送られ、第五のｎビットレジスタ１４および第六のｎビットレジスタ１５からなる第三の２ｎビットレジスタに格納される。また、演算の状態を格納する状態レジスタ１６の値は、演算に際して読み出され、演算の結果に応じて書き換えられることになる。【００３８】
次に、演算結果を格納している第三の２ｎビットレジスタは、二つのｎビットレジスタとして、それぞれ第四のデータ線１０５と第五のデータ線１０６を通じて、検査装置４０に送られる。同時に、状態レジスタ１６の内容も第六のデータ線１０７を通じて、検査装置４０に送られる。検査装置４０では、これらの入力値を用いて、演算器３０による処理が正しくおこなわれたか否かを検査し、その結果を出力信号線４００を通じて外部に伝達する。ここでは、第四のデータ線１０５と第五のデータ線１０６の二つのデータ線を用いて、第五のｎビットレジスタと第六のｎビットレジスタをそれぞれ独立に読み出す例を示したが、これら二つのレジスタの値は、必ずしも分離して読み出す必要は無く、２ｎビットレジスタとして読み出し、検査装置４０に送ることも可能である。【００３９】
一方、図６に示される情報処理装置の構成は、図５に示された例とは、コピーコントローラの接続場所が異なる。なお、図６では、図５に示された情報処理装置との相違部分であるコピーコントローラ部を特に示している。この情報処理装置の構成では、第一のコピーコントローラ２０は、第一のｎビットレジスタ１０、もしくは、第二のｎビットレジスタ１１、または、その両方にデータを書き込む際に、まずデータを受け取り、第二のｎビットレジスタ１１に第一のｎビットレジスタ１０と同じ値を書き込む必要がある場合には、データ線２００と２０１に同じ値を出力する。【００４０】
第二のデータバス１１１を通じて、値が書き込まれるのは、他のレジスタないしはメモリからのデータ転送の場合や、演算器による演算の結果を格納する場合であり、この構成では、コピーコントローラ２０が同時に第一のｎビットレジスタ１０と第二のｎビットレジスタ１１に値を書き込むため、通常状態から誤演算検査状態への切替を図５の構成の情報処理装置よりも速やかにおこなうことができる。【００４１】
また、図７に示した構成のように、コピーコントローラ２０、２１や検査装置４０の動作を制御するためのコントローラ６０を備えるようにしてもよい。
図７は、コピーコントローラ２０、２１や検査装置４０の動作を制御するためのコントローラ６０を備えた情報処理装置のブロック図である。【００４２】
図７に示した構成の情報処理装置は、コントローラ６０への入力信号線６００からの指示を受け、コピーコントローラ２０、２１や検査装置４０の起動および停止をコントロールする。このように、検査機能の起動と停止の切り替えが可能であるように構成することによって、誤演算検出が必要である場合には、使用可能なレジスタのサイズが制限されるものの、誤演算検出が不要である場合には、通常のレジスタサイズを用いることができる情報処理装置を、レジスタの配置面積を増加させること無く構成することができる。【００４３】
本実施形態の情報処理装置は、誤演算検出モードでは、コントローラ６０がｎビットレジスタ１１や１３へのユーザーアクセスを制限することにより、ユーザーからは、物理的には２ｎビット存在するレジスタのうちｎビットしか存在しないかのように見えるように制御する。そのために、ユーザーが誤ってレジスタを書き換えることによって演算誤りとして検出されることがなく、より信頼性の高い情報処理装置を提供することができる。【００４４】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図８および図９を用いて説明する。【００４５】
第一の実施形態では、一般的な演算器を有する構成の情報処理装置として記述したが、本実施形態では、具体的に演算器が加算器として説明し、加算の具体例を示したものである。
図８は、本発明の第二の実施形態に係る情報処理装置の構成図である。
図９は、加算における誤演算を検出する場合の数値の具体例を示した図である。【００４６】
図８に示される情報処理装置は、加算器の誤演算を検出する機構を備えている。本実施形態の情報処理装置は、第一のコピーコントローラ２０によって第二のｎビットレジスタ１１の値を第一のｎビットレジスタ１０にコピーし、第二のコピーコントローラ２１によって第四のｎビットレジスタ１３の値を第三のｎビットレジスタ１２にコピーする。そして、第一のｎビットレジスタ１０と第二のｎビットレジスタ１１を合わせて第一の２ｎビットレジスタとし、第三のｎビットレジスタ１２と第四のｎビットレジスタ１３を合わせて第二の２ｎビットレジスタとし、２ｎビットの加算器３５を用いて第一の２ｎビットレジスタと第二の２ｎビットレジスタの加算をおこない、結果を第三の２ｎビットレジスタに格納する。また、第三の２ｎビットレジスタは、第五のｎビットレジスタ１４と第六のｎビットレジスタ１５として取り扱うことも可能である。さらに、演算の状態を状態レジスタ１６に格納する。検査装置４０には、第五のｎビットレジスタ１４と状態レジスタ１６を入力とする減算器４５と、前記の減算器の出力と第六のｎビットレジスタ１５の値を比較するための比較器４６を持ち、比較結果を出力信号線４００を通じて伝達する。【００４７】
ここで、加算器で用いる値は、第二、第四、第六のｎビットレジスタ側を２ｎビット値の下位の値とし、第一、第三、第五のｎビットレジスタ側を２ｎビット値の上位の値として、実施形態を示している。例えば、n=16の場合を考えれば、加算結果にオーバーフローが発生する場合、0xF000 F000 + 0x1000 1000 = c 0x0001 0000（0xは、１６進数、cは、キャリー）となるので、結果値を保持するレジスタを単純に比較する方法ではエラーの検出をおこなうことができない。オーバーフローが発生した場合には、上位から１を減じてから比較する処理が必要となる。演算中にオーバーフローが発生した場合、一般にオーバーフローが発生したことを表すキャリーフラグが状態レジスタに設定される。よって、状態レジスタからキャリーフラグの値を読み出して、加算結果である２ｎビットのうち上位ｎビットの値から減じた結果と、下位ｎビットの値の一致検査をおこなえば、誤演算が発生したか否かの判定をおこなうことができる。【００４８】
図９に示される具体例は、第一の２ｎビットレジスタの値が0xc362 c362、第二の２ｎビットレジスタの値が0xa18c a18cのときの加算を示したものてある。加算の結果は、0xc362 c362  + 0xa18c a18c= c 0x64ed 64ecとなり、キャリーが発生する。したがって、上位ビットの値から１を引き、互いに等しくなるか否かを検証すればよい。等しくないときには、どこかで誤演算がおこっていることになる。【００４９】
〔実施形態３〕
以下、本発明に係る第三の実施形態を、図１０ないし図１２を用いて説明する。【００５０】
第二の実施形態では、具体的に演算器が加算器として説明し、加算の具体例を示したが、本実施形態では、演算器が乗算器であり、乗算の具体例を示したものである。
図１０および図１１は、本発明の第三の実施形態に係る情報処理装置の構成図である。
図１２は、乗算における誤演算を検出する場合の数値の具体例を示した図である。【００５１】
図１０に示される情報処理装置は、乗算器の誤演算を検出する機構を備えるものである。本実施形態の情報処理装置は、第一のコピーコントローラ２０に第一の符号反転装置２２を備え、第二のｎビットレジスタ１１の値を符号反転させた値を第一のｎビットレジスタ１０に格納する。第二のコピーコントローラ２１は、第四のｎビットレジスタ１３の値を第三のｎビットレジスタ１２にコピーする。第一のｎビットレジスタと第二のｎビットレジスタは合わせて第一の２ｎビットレジスタとみなすことができ、第三のｎビットレジスタと第四のｎビットレジスタはあわせて第二の２ｎビットレジスタとみなすことができる。【００５２】
そして、乗算器３６によって、二つの２ｎビット入力に対して４ｎビット出力を与える乗算をおこない、結果を第三の２ｎビットレジスタ１７と第四の２ｎビットレジスタ１８に格納する。検査装置４０では、第三の２ｎビットレジスタ１７の値と第四の２ｎビットレジスタ１８を加算器４７によって加算し、第二の２ｎビットレジスタの値と一致検査をおこない、結果を出力信号線４００を通じて伝達する。【００５３】
一般的な３２ビットＣＰＵは、二つの１６ビットの値を入力値とし、３２ビットの結果を出力する乗算命令を備えている。よって、上記のように処理すれぱ、誤演算検査機構を備える８ビット×８ビットの演算をおこなうことができる。この計算の正しさは、次のように確認される。k, mを各８ビット値とし、k×mを計算する場合を考える。このとき、a, b, c, dを各８ビットとし、a|b×c|dを計算することができる乗算器を用いる。ここで、a|bとは、上位８ビットがaであり下位８ビットがbである１６ビット値を意味する。ａ = -k, b = k, c = d = mとして、乗算a|b×c|dを行うと、３２ビットの結果の上位１６ビットには-a×c下位１６ビットにはa×cが入る。しかし、一般的な計算機には、符号専用のレジスタが必ずしも存在しないことに注意する必要がある。この場合、-kを表現するために、ｋと加算することによって下位８ビットがゼロとなり、キャリーが発生するような値である2^8-kを用いる（いわゆる二の補数表現）。ここで^はべき乗を衰す記号であり、2^8とは２の８乗を表す。その結果、-k + kを計算する際に、キャリーが発生することになる。キャリーの効果は、
((2^8 - k) × 2^8 + k) × (m × 2^8 + m)
=m(2^24 + 2^16) - mk(2^16 - 1〉
=(m × 2^8 + m - mk) × 2^16 + mk
より、上位１６ビットにm|mが加算される結果として現れる。よって、本実施例の情報処理装置では、上位１６ビットと下位１６ビットの乗算をおこない、m|mに相当する１６ビット値c|dに一致することを確認することで、誤演算を検出する。
なお、上記の式は、検査装置に、減算器を備え、乗算結果の上位２ｎビットから第二の２ｎビットレジスタの値を減じ、その結果と乗算結果の下位２ｎビットの値の和がゼロとなることを確認する方法でも、誤演算を検査することができることを意味しており、図１１に示されるように情報処理装置を構成してもよい。【００５４】
図１２に示される具体例は、第二の８ビットレジスタの値が0x7f、第四のレジスタの値が、0x56の場合である。第二の８ビットレジスタの値を第一の８ビットレジスタに符号反転させて格納し、0x81となる。第四の８ビットレジスタの値を第三の８ビットレジスタにコピーして、0x56となる。これらの値をかけると、上位１６ビットには、0x81 × 0x56 ＋ 0x56(2^8 + 1)の値として、0x2bacが入り、下位１６ビットには、0x7f × 0x56の値として、0x2aaaが入る。したがって、これらをたして、0x56(2^8 + 1)が残ることになれば、誤演算はなく正常に動作していることになる。【００５５】
〔実施形態４〕
以下、本発明に係る第四の実施形態を、図１３および図１４を用いて説明する。
図１３は、フリップフロップの物理構造を表す図である。
図１４は、フリップフロップの集積回路での実装配置例を示している。【００５６】
例えば、本発明の情報処理装置のレジスタのビット情報を記憶するために、図１３に示されるような物理構造を有するフリップフロップを用いる場合を想定する。ここで、２ｎビットレジスタの値を保持するために２ｎ個のフリップフロップを用い、２ｎ個のうちｎビットを残るｎビットで覆うような形で配置する。２ｎビットレジスタを構成する二つのｎビットレジスタを、図１４に示されるように物理的に垂直方向に重なるように配置することによって、一方向からの光等の入射によってレジスタの値が影響を受けるような場合でも、一方が他方を保護する形となり、入射成分が変化するため、同一の値に変化するような動作を防止することができ、より高い誤動作耐性を持たせることができるようになる。
【図面の簡単な説明】
【００５７】
【図１】本発明に係る第一の実施形態の情報処理装置の一般的な構成図である。
【図２】特許文献１に係る演算処理装置の構成を示すブロック図である。
【図３】一般的な３２ビットCPUのレジスタ構成を示す図である。
【図４】本発明の情報処理装置の誤演算検出モードでのＣＰＵのレジスタ使用制限を示す図である。
【図５】コピーコントローラ、レジスタ、演算器、検査装置の接続関係について示した図である（その一）。
【図６】コピーコントローラ、レジスタ、演算器、検査装置の接続関係について示した図である（その二）。
【図７】コピーコントローラ２０、２１や検査装置４０の動作を制御するためのコントローラ６０を備えた情報処理装置のブロック図である。
【図８】本発明の第二の実施形態に係る情報処理装置の構成図である。
【図９】加算における誤演算を検出する場合の数値の具体例を示した図である。
【図１０】本発明の第三の実施形態に係る情報処理装置の構成図である（その一）。
【図１１】本発明の第三の実施形態に係る情報処理装置の構成図である（その二）。
【図１２】乗算における誤演算を検出する場合の数値の具体例を示した図である。
【図１３】フリップフロップの物理構造を表す図である。
【図１４】フリップフロップの集積回路での実装配置例を示している。
【符号の説明】
【００５８】
１０、１１、１２、１３、１４、１５…ｎビットレジスタ
１６…状態レジスタ
１７、１８…２ｎビットレジスタ
２０、２１…コピーコントローラ
２２、４７…符号反転装置
３０…２ｎビット演算器
３１、３２…ｎビット演算器
４０…検査装置
４１、４６…比較器
６０…誤演算検査機構制御装置
【図１】
0004382128.tif 000002
【図２】
0004382128.tif 000003
【図３】
0004382128.tif 000004
【図４】
0004382128.tif 000005
【図５】
0004382128.tif 000006
【図６】
0004382128.tif 000007
【図７】
0004382128.tif 000008
【図８】
0004382128.tif 000009
【図９】
0004382128.tif 000010
【図１０】
0004382128.tif 000011
【図１１】
0004382128.tif 000012
【図１２】
0004382128.tif 000013
【図１３】
0004382128.tif 000014
【図１４】
0004382128.tif 000015