(57)【要約】【課題】本発明の目的は、プロセッサからのデータを記憶する記憶装置を診断し、プロセッサからのデータを確実に記憶装置に記憶する書き込み保護装置を提供することである。【解決手段】本発明では、試験データを第１のレジスタに記憶し、プロセッサが第１のレジスタから読み出した試験データを第２のレジスタに書き込み、データ判定手段が第１のレジスタの試験データと第２のレジスタのデータとを比較して一致した時に、プロセッサのデータが第３のレジスタへ書き込み許可される書き込み保護装置を用いる。【選択図】  図１
2008217268.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによるデータ書き込みを制御する書き込み保護装置において、
試験用データを記憶する第１の記憶手段と、
前記第１の記憶手段から前記試験用データの読み出しを行った前記プロセッサが、読み出したデータの書き込みを行う第２の記憶手段と、
前記第１の記憶手段に記憶された試験用データと前記第２の記憶手段に記憶されたデータとが一致するかを判断する判断手段と、
前記判断手段により一致すると判断されたとき前記プロセッサの第３の記憶手段へのデータ書き込みを許可する制御手段と、
を備えたことを特徴とする書き込み保護装置。
【請求項２】
前記プロセッサのデータのうち重要なデータは前記書き込み許可に基づき前記記憶手段３に書き込まれ、重要でないデータは前記書き込み許可なしで書き込まれる第４の記憶手段を備えたことを特徴とする請求項１記載の書き込み保護装置。
【請求項３】
プロセッサによるデータ書き込みを制御する書き込み保護装置において、
試験用データを記憶する第１の記憶手段と、
前記第１の記憶手段から前記試験用データの読み出しを行った前記プロセッサが、読み出したデータの各ビットを反転したデータの書き込みを行う第２の記憶手段と、
前記第１の記憶手段に記憶された試験用データの各ビットを反転したデータと前記第２の記憶手段に記憶されたデータとが一致するかを判断する判断手段と、
前記判断手段により一致すると判断されたとき前記プロセッサの第３の記憶手段へのデータ書き込みを許可する制御手段と、
を備えたことを特徴とする書き込み保護装置。
【請求項４】
前記第１の記憶手段と前記第２の記憶手段が備えた記憶用のアドレスは、それぞれ１つであり、前記第２の記憶手段のアドレス番号は前記第１の記憶手段のアドレス番号の各ビットを反転したアドレス番号であることを特徴とする請求項３記載の書き込み保護装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサからのデータを記憶する装置に関し、特にプロセッサの制御によりデータの書き込みが制御される書き込み保護装置に関する。
【背景技術】
【０００２】
従来、プロセッサ（以下ＣＰＵ）が処理したデータが記憶装置に確実に記憶されるかどうかを事前にチェックする方法として、ＣＰＵが記憶装置の全アドレスに異なった試験データを書き込み、その試験データを順次読み出したデータと、書き込んだデータとを比較することにより、記憶装置が正しく動作するかどうかを診断する方法があった。
【０００３】
この診断方法において、記憶装置の診断に用いる試験データの種類と試験回数を減少させるため、ＣＰＵは、記憶装置の特定アドレスとそれ以外のアドレスに互いに符号が反転したデータを書き込み、書き込んだデータと読み出したデータが一致したときは記憶領域は正常と判断して書き込みを行い、不一致の場合はアドレス指定経路の故障または記憶領域の故障ありと診断し書き込みを中止する方法があった（特許文献１参照）。
【０００４】
また、ＣＰＵから特定の記憶部（鍵データレジスタと呼ばれる）へ固定値（鍵データ）を書込み、別の記憶部に予め記憶された鍵データと前記書き込まれたデータとが一致した直後は、ＣＰＵから記憶装置への書込みが正常であると判断して記憶装置への書き込みを行い、不一致の場合は書き込みを中止してデータの記憶を保護する方法があった（特許文献２参照）。
【特許文献１】特開２００２−３１２２５２号公報
【特許文献２】特開２００３−１５０４４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＣＰＵが処理したデータを誤って記憶した場合、記憶装置において重要な役割を担う電源制御データによる正しい電源制御が行われなくなり、記憶装置が正常に動作しなくなる。
【０００６】
また、記憶装置を制御するＣＰＵが誤動作した場合、記憶装置のリセット制御レジスタ等への異常アクセスが発生し、記憶装置を使用した全体システムの運用に多大な障害を及ぼす可能性がある。
【０００７】
そのため、記憶装置への書込みにおいては保護機能を設け、ＣＰＵ誤動作時の障害発生を最小限に抑える必要がある。
【０００８】
先に説明した従来の解決方法において、書き込みデータと、記憶装置に記憶したデータとの比較による方法は、特定の記憶部へのデータ書込みにより記憶部への書込みが可能となるため、ＣＰＵの誤動作状態によっては、書込み保護解除機能をすり抜け、記憶部への異常アクセスが行われる可能性もあるので保護機能として十分ではなく、その強化が課題とされている。
【０００９】
従って本発明の目的の１つは、プロセッサ（ＣＰＵ）からのデータを記憶する記憶装置の動作を診断し、プロセッサからのデータが確実に記憶装置に記憶される装置を提供することである。
【００１０】
尚、上記目的に限らず後述する発明を実施するための最良の形態に示す各構成により導かれる結果であって、従来の技術によっては得られない効果も本発明の他の目的の１つとして位置付けることが出来る。
【課題を解決するための手段】
【００１１】
（１）本発明では、試験データを第１のレジスタに記憶し、プロセッサが第１のレジスタから読み出した試験データを第２のレジスタに書き込み、データ判断手段が第１のレジスタの試験データと第２のレジスタのデータとを比較して一致した時に、プロセッサのデータが第３のレジスタへ書き込み許可される書き込み保護装置を用いる。
【００１２】
好ましくは、第１のレジスタと第２のレジスタが備えた記憶用のアドレスは、それぞれ１つであることを特徴とする書き込み保護装置を用いる。
【００１３】
好ましくは、データ判断手段は、第１のレジスタと第２のレジスタに直接接続された線路を介して、前記２つのレジスタに記憶されたデータを比較することを特徴とする書き込み保護装置を用いる。
【００１４】
好ましくは、第１のレジスタに記憶された試験データと、前記プロセッサが第１のレジスタの試験データを読み出し第２のレジスタに書き込んだデータとが一致したとき、前記第３のレジスタに書き込まれたデータの読み出しが前記プロセッサに許可されることを特徴とする書き込み保護装置を用いる。
（２）また、前記プロセッサのデータのうち前記プロセッサが重要と判断したデータは書き込み許可に基づきレジスタ３に書き込まれ、重要でないと判断したデータは書き込み許可なしでレジスタ４に書き込まれる書き込み保護装置を用いる。
（３）本発明では、試験データを第１のレジスタに記憶し、プロセッサが第１のレジスタから読み出した試験データの各ビットを反転したデータを第２のレジスタに書き込み、データ判定手段が第１のレジスタの試験データの各ビットを反転したデータと第２のレジスタのデータとを比較して一致した時に、プロセッサのデータが第３のレジスタへ書き込み許可される書き込み保護装置を用いる。
（４）また、第１のレジスタと第２のレジスタが備えた記憶用のアドレスは、それぞれ１つであり、第２のレジスタのアドレス番号は第１のレジスタのアドレス番号の各ビットを反転したアドレス番号であることを特徴とする書き込み保護装置を用いる。
【発明の効果】
【００１５】
本発明により、プロセッサからのデータを確実に記憶装置に書き込める書き込み保護装置を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照することにより本発明の実施の形態について説明する。
（実施例１）
実施例１では、第１のレジスタ（以下レジスタＡ）に記憶された試験データと、レジスタＡの試験データを読み出し書き込まれた第２のレジスタ（以下レジスタＢ）の試験データが一致したときのみ、第３のレジスタ（以下保護レジスタ）へのデータ書き込みが許可される。
【００１７】
実施例１における書き込み保護装置の構成を図１、書き込み制御のフローを図２にそれぞれ示す。
【００１８】
・「書き込み保護装置の構成」
図１において、１０１は書き込み保護装置、１０２はＣＰＵ、１０３は記憶装置、１０４はアドレスデコード部、１０５は論理和部、１０６はデータ判定部、１０７はレジスタＡ、１０８はレジスタＢ、１０９は試験データ生成部、１１０は保護レジスタ、１１１は保護無しレジスタ、１１２、１１３、１１４はバッファ、１１５、１１６、１１７、１１８はゲートをそれぞれ示す。
【００１９】
・「書き込み制御のフロー」
図２において、Ｓ２０１は書き込みを開始するステップ、Ｓ２０２はＣＰＵ１０２が書き込みデータを発生するステップ、Ｓ２０３は書き込みデータが保護データかどうかを判断するステップ、Ｓ２０４は保護無しレジスタ１１１に書き込むステップ、Ｓ２０５はレジスタＡ１０７の試験データを読み出すステップ、Ｓ２０６はレジスタＢ１０８にレジスタＡ１０７からの試験データを書き込むステップ、Ｓ２０７はレジスタＡ１０７に記憶された試験データとレジスタＢ１０８に記憶された試験データとを比較するステップ、Ｓ２０８はＣＰＵ１０２に異常を通知するステップ、Ｓ２０９は保護レジスタ１１０への書き込みを禁止するステップ、Ｓ２１０は保護レジスタ１１０への書き込みを許可するステップをそれぞれ示す。
【００２０】
図２の書き込み制御のフローに基づき、図１の構成図を用いて実施例１における書き込み制御動作を説明する。
【００２１】
以下のステップにおいて記憶装置１０３へのデータの書き込み、および読み出しの制御はＣＰＵ１０２が行う。
【００２２】
ステップＳ２０１で書き込み制御を開始する。
【００２３】
ステップＳ２０２ではＣＰＵ１０２が記憶すべき書き込みデータを発生する。このときＣＰＵ１０２は、書き込み保護装置１０１を含む全体システム（図示せず）に影響する重要データに対しては書き込み先として保護レジスタ１１０のアドレスが指定され、重要度が少ないデータに対しては保護無しレジスタ１１１のアドレスが指定される。
【００２４】
ステップＳ２０３では、アドレスデコード部１０４が書き込み先アドレスをチェックすることにより、書き込みデータが保護すべきデータ（以下保護データ）か、保護しないデータ（以下保護無しデータ）かを判断する。
【００２５】
ステップＳ２０４は、ステップＳ２０３がＮｏで保護無しデータと判断された場合であり、アドレスデコード部１０４がＣＰＵ１０２から指定されたアドレスを保護無しレジスタ１１１に送信し、ＣＰＵ１０２からのデータが書き込まれる。
【００２６】
ステップＳ２０５は、ステップＳ２０３がＹｅｓで保護データと判断された場合であり、ＣＰＵ１０２はレジスタＡ１０７から試験データを読み出す。なお、レジスタＡ１０７は試験データ生成部１０９からランダムな試験データを供給されデータＡとして記憶している。
【００２７】
ステップＳ２０６では、ＣＰＵ１０２はステップＳ２０５により読み出したデータＡをレジスタＢ１０８に書き込み、レジスタＢ１０８にデータＢとして記憶される。
【００２８】
ステップＳ２０７は、レジスタＡ１０７に記憶されたデータＡとレジスタＢ１０８に記憶されたデータＢとを、データ判定部１０６がハード的に比較する。即ち、このデータ比較においてＣＰＵ１０２は書き込みおよび読み出し処理は行わないで、直接データ判定部１０６がデータの比較を行う。
【００２９】
ステップＳ２０８は、ステップＳ２０７がＮｏでデータＡとデータＢが異なる場合であり、書き込みと読み出し処理において誤りが発生したことを示すので、データ判定部１０６はＣＰＵ１０２に異常の発生を通知し、保護レジスタ１１０へのアドレス信号を制御するゲート１１７に書きこみ禁止を通知する。
【００３０】
ステップＳ２０９は、異常の発生の通知を受けたＣＰＵ１０２が保護レジスタ１１０へのデータ書き込みを禁止し、管理者等に警報を発信する。
【００３１】
ステップＳ２１０は、ステップＳ２０７がＹｅｓでデータＡとデータＢが一致した場合であり、書き込みと読み出し処理が正常であることを示すので、データ判定部１０６はＣＰＵ１０２と、保護レジスタ１１０へのアドレス信号を制御するゲート１１７に書き込み許可を伝える。書き込みと読み出しが正常の通知を受けたＣＰＵ１０２は、バス制御信号によりアドレスデコード部１０４に保護レジスタ１１０へのデータ書き込みを指令する。
【００３２】
ステップＳ２１０が終了するとステップＳ２０２に帰り、次のデータの処理を繰り返す。
【００３３】
従って、保護データは逐一上記のステップを踏んで、書き込みが許可された場合のみ保護レジスタ１１０に書き込まれる。
【００３４】
保護無しデータは前記プロセスの全部は通過しないので、保護無しレジスタ１１１に短時間で書き込みが行われる。
【００３５】
・「レジスタへの書き込み動作」
前記の書き込み可否の判断の後、ＣＰＵ１０２から保護レジスタ１１０および、保護無しレジスタ１１１へのデータ書き込み動作について、図１の構成図を用いて説明する。
【００３６】
ＣＰＵ１０２が生成したデータが保護無しデータの場合、ＣＰＵ１０２はアドレスデコード部１０４に書き込み先アドレスとして、保護無しレジスタ１１１内の１つのアドレス番号を指定する。アドレスデコード部１０４は、保護無しレジスタ１１１に前記書き込み先アドレス番号を通知し、ＣＰＵ１０２は記憶すべきデータをバッファ１１２を介して、保護無しレジスタ１１１に送信する。保護無しレジスタ１１１は、指定されたアドレスに前記データを書き込み記憶する。
【００３７】
ＣＰＵ１０２が生成したデータが保護データの場合、ＣＰＵ１０２はアドレスデコード部１０４に書き込み先アドレスとして、保護レジスタ１１０内の１つのアドレスを指定する。アドレスデコード部１０４は、保護レジスタ１１０に前記書き込み先アドレス番号を通知し、ＣＰＵ１０２は記憶すべきデータをバッファ１１２を介して、保護レジスタ１１０に送信する。
【００３８】
データ判定部１０６が書き込み許可信号を出力するとゲート１１７が開かれ、アドレスデコード部１０４からのアドレス指定信号が保護レジスタ１１０に接続され、保護レジスタ１１０へのデータの書き込みが実施される。
【００３９】
従って、ＣＰＵ１０２から保護レジスタ１１０へのデータの書き込みは、図２のＳ２０２から始まりＳ２１０のステップまで通過した場合のみ実行される。
【００４０】
即ち図２のフローによる保護レジスタ１１０への書き込みの許可は、ＣＰＵ１０２、アドレスデコード部１０４、レジスタＡ１０７、レジスタＢ１０８、およびこれらを接続するアドレスバス、データバス、バス制御信号系が正常に動作している場合に行われる。
【００４１】
また、前記フローにおいては保護レジスタ１１０自身を用いないが、記憶装置１０３は１個の微小な半導体チップで形成されており、保護レジスタ１１０のアドレスの１部がレジスタＡ１０７および、レジスタＢ１０８のアドレスとして設定されたと見なすことが出来る。  
【００４２】
従って、レジスタＡ１０７およびレジスタＢ１０８が正常であれば、同一条件で製造された１つのチップ上で同一環境条件（外来雑音や温度等）におかれた保護レジスタ１１０は正常であることが確認できる。
【００４３】
さらに、図２のフローで使用されるレジスタＡ１０７、レジスタＢ１０８のアドレスはそれぞれ１個であり、両方のアドレスに記憶された１組のデータの比較は１回であるので、書き込み処理は短時間で行える。
【００４４】
・「レジスタからの読み出し動作」
各レジスタからのデータの読み出しを、図１の構成図を用いて説明する。
【００４５】
ＣＰＵ１０２からバス制御信号によりデータの読み出し指令と、記憶したレジスタのアドレス番号がアドレスデコード部１０４に出力される。
【００４６】
アドレスデコード部１０４はＣＰＵ１０２から指令されたアドレス番号に対応するゲートに読み出し指令信号を送る。読み出し指令信号を受信したゲートは対応するレジスタのアドレスからデータを読み出す。
【００４７】
例えば、保護レジスタ１１０のデータ読み出しは、ゲート１１６に指令された読み出し指令信号により、指定されたアドレスから読み出される。
【００４８】
読み出されたデータは、論理和部１０５により取り出され、バッファ１１３を介してＣＰＵ１０２に入力する。
【００４９】
１度に読み出されるデータは、保護無しレジスタ１１１、保護レジスタ１１０、レジスタＡ１０７からのどれか１つであるので、各読み出しデータはこれらデータの論理和により論理和部１０５により取り出すことが出来る。
【００５０】
レジスタＢ１０８のデータは、データ判定部がハード的に直接取り出すので、ＣＰＵ１０２による読み出し処理は必要とされない。
【００５１】
これまでの説明では、保護レジスタ１１０からの読み出しに対し、書き込み時におけるような動作のチェックは行われないが、データの読み出しを正しく行うための読み出し制御を行ってもよい。
【００５２】
図３に読み出し制御を行う場合のフローを示す。
【００５３】
図３において、Ｓ３０１は読み出しを開始するステップ、Ｓ３０２はＣＰＵに読み出しデータが発生するステップ、Ｓ３０３は読み出しデータが保護データかどうかを判断するステップ、Ｓ３０４は保護無しレジスタから読み出すステップ、Ｓ３０５はレジスタＡのデータを読み出すステップ、Ｓ３０６はレジスタＢにレジスタＡからのデータを書き込むステップ、Ｓ３０７はレジスタＡに記憶されたデータとレジスタＢに記憶されたデータとを比較するステップ、Ｓ３０８はＣＰＵに異常を通知するステップ、Ｓ３０９は保護レジスタからの読み出しみを禁止するステップ、Ｓ３１０は保護レジスタからの読み出しを許可するステップをそれぞれ示す。
【００５４】
図３の読み出し制御のフローに基づき、図１の構成図を用いて実施例１における読み出し制御動作を説明する。
【００５５】
以下のステップにおいて記憶装置１０３からのデータの書き込み、および読み出しの制御はＣＰＵ１０２が行う。
【００５６】
ステップＳ３０１で読み出し制御を開始する。
【００５７】
ステップＳ３０２ではＣＰＵ１０２に読み出すべきデータが発生する。このとき、書き込み保護装置を含む全体システム（図示せず）に影響する重要データは、保護レジスタ１１０のアドレスが指定され、重要度が少ないデータに対しては保護無しレジスタ１１１のアドレスが指定される。
【００５８】
ステップＳ３０３では、アドレスデコード部１０４が読み出し先アドレス番号をチェックすることにより、読み出しデータが保護データか保護無しデータかを判断する。
【００５９】
ステップＳ３０４は、ステップＳ３０３がＮｏで保護無しデータと判断された場合であり、アドレスデコード部１０４はＣＰＵ１０２から指定された保護無しレジスタ１１１のアドレスを通知し、データが読み出されＣＰＵ１０２に取り込まれる。
【００６０】
ステップＳ３０５は、ステップＳ３０３がＹｅｓで保護データと判断された場合であり、ＣＰＵ１０２はレジスタＡ１０７から試験用データを読み出す。なお、レジスタＡ１０７は試験データ生成部１０９からランダムな試験用データを供給されデータＡとして記憶している。
【００６１】
ステップＳ３０６では、ＣＰＵ１０２はステップＳ２０５により読み出されたデータＡをレジスタＢ１０８に書き込み、データＢとして記憶される。
【００６２】
ステップＳ３０７は、レジスタＡ１０７に記憶されたデータＡとレジスタＢ１０８に記憶されたデータＢとを、データ判定部１０６がハード的に比較する。このデータ比較においてＣＰＵ１０２は書き込みおよび読み出し処理は行わないで、直接データ判定部１０６がデータの比較を行う。
【００６３】
ステップＳ３０８は、ステップＳ３０７がＮｏでデータＡとデータＢが異なる場合であり、書き込みと読み出し処理において誤りが発生したことを示すので、データ判定部１０６はＣＰＵ１０２に異常の発生を通知し、保護レジスタ１１０のアドレス信号を制御するゲート１１６に読み出し禁止を伝える（図１に図示せず）。
【００６４】
ステップＳ３０９は、異常の発生の通知を受けたＣＰＵ１０２が保護レジスタ１１０からのデータ読み出しを禁止し、管理者等に警報を発信する。
【００６５】
ステップＳ３１０は、ステップＳ３０７がＹｅｓでデータＡとデータＢが一致した場合であり、書き込みと読み出し処理が正常であることを示すので、データ判定部１０６はＣＰＵ１０２と、保護レジスタ１１０のアドレス信号を制御するゲート１１６に読み出し許可を伝える。
【００６６】
ステップＳ３１０は、書き込みと読み出しが正常の通知を受けたＣＰＵ１０２が、バス制御信号によりアドレスデコード部１０４に保護レジスタ１１０からのデータ読み出しを指令する。
【００６７】
ステップＳ３１０が終了するとステップＳ３０２に帰り、次のデータの処理を繰り返す。
【００６８】
従って、保護データは逐一上記のステップを踏んで、読み出しが許可された場合のみ保護レジスタ１１０からデータが読み出される。
（実施例２）
実施例２では、第１のレジスタ（レジスタＡ）に記憶された試験データの反転データと、レジスタＡのデータを読み出し反転して書き込まれた第２のレジスタ（レジスタＢ）の試験データが一致したときのみ、保護レジスタへのデータ書き込みが許可される。
【００６９】
実施例２における書き込み保護装置の構成を図４、書き込み制御のフローを図５にそれぞれ示す。
【００７０】
・「書き込み保護装置の構成」
図４において、４０１は書き込み保護装置、４０２はＣＰＵ、４０３は記憶装置、４０４はアドレスデコード部、４０５は論理和部、４０６はデータ判定部、４０７はレジスタＡ、４０８はレジスタＢ、４０９は試験データ生成部、４１０は保護レジスタ、４１１は保護無しレジスタ、４１２、１１３はバッファ、４１４は反転バッファ、４１５、４１６、４１７、４１８はゲートをそれぞれ示す。
【００７１】
実施例の図１と異なるのは、４１４が反転バッファとなっていることである。
【００７２】
・「書き込み制御のフロー」
図５において、Ｓ５０１は書き込みを開始するステップ、Ｓ５０２はＣＰＵ４０２が書き込みデータを発生するステップ、Ｓ５０３は書き込みデータが保護データかどうかを判断するステップ、Ｓ５０４は保護無しレジスタ４１１に書き込むステップ、Ｓ５０５はレジスタＡ４０７の試験データを読み出すステップ、Ｓ５０６はレジスタＢ４０８にレジスタＡ４０７からのデータを反転して書き込むステップ、Ｓ５０７はレジスタＡ４０７に記憶された試験データの反転データとレジスタＢ４０８に記憶された試験データとを比較するステップ、Ｓ５０８はＣＰＵ４０２に異常を通知するステップ、Ｓ５０９は保護レジスタ４１０への書き込みを禁止するステップ、Ｓ５１０は保護レジスタ４１０への書き込みを許可するステップをそれぞれ示す。
【００７３】
図５の書き込み制御のフローに基づき、図４の構成図を用いて実施例２における書き込み制御動作を説明する。
【００７４】
以下のステップにおいて記憶装置４０３へのデータの書き込み、および読み出しの制御はＣＰＵ４０２が行う。
【００７５】
ステップＳ５０１で書き込み制御を開始する。
【００７６】
ステップＳ５０２ではＣＰＵ４０２が記憶すべき書き込みデータを発生する。このときＣＰＵ４０２は、書き込み保護装置を含む全体システム（図示せず）に影響する重要データに対しては書き込み先として保護レジスタ４１０のアドレスを与え、重要度が少ないデータに対しては保護無しレジスタ４１１のアドレスを与える。
【００７７】
ステップＳ５０３では、アドレスデコード部４０４が書き込み先アドレスをチェックすることにより、書き込みデータが保護すべきデータ（以下保護データ）か、保護しないデータ（以下保護無しデータ）かを判断する。
【００７８】
ステップＳ５０４は、ステップＳ５０３がＮｏで保護無しデータと判断された場合であり、アドレスデコード部４０４がＣＰＵ４０２から指定されたアドレスを保護無しレジスタ４１１に送信し、ＣＰＵ４０２からのデータが書き込まれる。
【００７９】
ステップＳ５０５は、ステップＳ５０３がＹｅｓで保護データと判断された場合であり、ＣＰＵ４０２はレジスタＡ４０７から試験データを読み出す。なお、レジスタＡ４０７は試験データ生成部４０９からランダムな試験データを供給されデータＡとして記憶している。
【００８０】
ステップＳ５０６では、ＣＰＵ４０２はステップＳ５０５により読み出されたデータＡを反転してレジスタＢ４０８に書き込み、レジスタＢ４０８にデータＢとして記憶される。
【００８１】
図６に、レジスタＡ４０７に記憶されたデータＡと、レジスタＢ４０８にデータＡが正しく反転されて記憶されたデータＢの例を示す。
【００８２】
図６には、レジスタＡ４０７に記憶されたデータＡ（Ｄ６１）が１６進データでＡＡＡＡの場合を示す。１６進データのＡは、物理的に伝送される２進データではＤ６２に示す１０１０である。
【００８３】
レジスタＢ４０８へは、データＡが反転されて書き込まれデータＢ（Ｄ６３）となる。
【００８４】
Ｄ６２の２進データの１０１０が反転されると０１０１であり、これは１６進データの５となる。
【００８５】
即ち、データＡのデータＡＡＡＡが正しく反転して書き込まれたデータＢは５５５５となる。
【００８６】
ステップＳ５０７は、レジスタＡ４０７に記憶されたデータＡとレジスタＢ４０８に記憶されたデータＢとを、データ判定部４０６がハード的に比較する。即ち、このデータ比較においてＣＰＵ４０２は書き込みおよび読み出し処理は行わないで、直接データ判定部４０６がデータの比較を行う。レジスタＡ４０７に記憶されたデータＡは、反転バッファ４１４によりビットが反転されデータ判定部４０６においてデータＢと比較される。
【００８７】
図７に、レジスタＡ４０７に記憶されたデータＡの読み出しにおいてデータバス上で誤り、レジスタＢ４０８に書き込まれたデータＢの例を示す。
【００８８】
図７には、レジスタＡ４０７に記憶されたデータＡ（Ｄ７１）が１６進データでＡＡＡＡの場合を示す。１６進データのＡは、ハード的には２進データＤ７２に示す２進データの１０１０である。
【００８９】
ＣＰＵ４０２がレジスタＡ４０７からのデータＡの読み出しにおいて、データバスが１６ビット目を０に固定する誤りを起こした場合、図７の２進データD７４となるので１６進データでは２ＡＡＡとなる。
【００９０】
ＣＰＵ４０２がデータＤ７７を正しく反転して、レジスタに正しく書き込んでもデータＢは２進データＤ７６となり、１６進データではＤ５５５となる。
【００９１】
レジスタＡ４０７のデータＡＡＡＡが正しく反転された２進データは５５５５であり、このレジスタＢ４０８の２進データＤ５５５と比較され不一致となる。
【００９２】
ステップＳ５０８は、ステップＳ５０７がＮｏでデータＡとデータＢが異なった場合であり、書き込みと読み出し処理において誤りが発生したことを示すので、データ判定部４０６はＣＰＵ４０２に異常の発生を通知し、保護レジスタ４１０へのアドレス信号を制御するゲート４１７に書きこみ禁止を伝える。
【００９３】
ステップＳ５０９は、異常の発生の通知を受けたＣＰＵ４０２が保護レジスタ４１０へのデータ書き込みを禁止し、管理者等に警報を発信する。
【００９４】
ステップＳ５１０は、ステップＳ５０７がＹｅｓでデータＡとデータＢが一致した場合であり、書き込みと読み出し処理が正常であることを示すので、データ判定部４０６はＣＰＵ４０２と、保護レジスタ４１０へのアドレス信号を制御するゲート４１７に書き込み許可を伝える。
【００９５】
ステップＳ５１０は、書き込みと読み出しが正常の通知を受けたＣＰＵ４０２が、バス制御信号によりアドレスデコード部４０４に保護レジスタ４１０へのデータ書き込みを指令する。
【００９６】
ステップＳ５１０が終了するとステップＳ５０２に帰り、次のデータの処理を繰り返す。
【００９７】
従って、保護データは逐一上記のステップを踏んで、書き込みが許可された場合のみ保護レジスタ４１０に書き込まれる。
【００９８】
実施例２では、レジスタＡ４０７のデータＡとレジスタＢ４０８に書き込まれたデータＢは異なっているが反転したデータであるから、２つのデータの比較はＣＰＵ４０２によるデータ反転処理を介さないで、データＡを反転バッファ４１４によりハード的にビット反転することにより短時間で容易に行うことが出来る。
【００９９】
また、保護無しデータは前記プロセスの全部は通過しないので、保護無しレジスタ４１１に短時間で書き込みが行われる。
【０１００】
・「レジスタへの書き込み動作」
前記の書き込み可否の判断の後、ＣＰＵ４０２から保護レジスタ４１０および、保護無しレジスタ４１１へのデータ書き込み動作について、図４の構成図を用いて説明する。
【０１０１】
ＣＰＵ４０２が生成したデータが保護無しデータの場合、ＣＰＵ４０２はアドレスデコード部４０４に書き込み先アドレスとして、保護無しレジスタ４１１内の１つのアドレスを指定する。アドレスデコード部４０４は、保護無しレジスタ４１１に前記書き込み先アドレスを通知すると共に、記憶すべきデータをバッファ４１２を介して、保護無しレジスタ４１１に送信する。保護無しレジスタ１１１は、指定されたアドレスに前記データを書き込み記憶する。
【０１０２】
ＣＰＵ４０２が生成したデータが保護データの場合、ＣＰＵ４０２はアドレスデコード部４０４に書き込み先アドレスとして、保護レジスタ４１０内の１つのアドレスを指定する。アドレスデコード部４０４は、保護レジスタ４１０に前記書き込み先アドレスを通知し、ＣＰＵ４０２は記憶すべきデータをバッファ４１２を介して、保護レジスタ４１０に送信する。
【０１０３】
データ判定部４０６が書き込み許可信号を出力するとゲート４１７が開かれ、アドレスデコード部４０４からのアドレス指定信号が保護レジスタ４１０に接続され、保護レジスタ４１０へのデータの書き込みが実施される。
【０１０４】
従って、ＣＰＵ４０２から保護レジスタ４１０へのデータの書き込みは、図５のＳ５０２から始まりＳ５１０のステップまで通過した場合のみ実行される。
【０１０５】
従って、図５のフローによる保護レジスタ４１０への書き込みの許可は、ＣＰＵ４０２、アドレスデコード部４０４、レジスタＡ４０７、レジスタＢ４０８、およびこれらを接続するアドレスバス、データバス、バス制御信号系が正常に動作している場合に行われる。
【０１０６】
また、前記フローにおいては保護レジスタ４１０自身を用いないが、記憶装置４０３は１個の微小な半導体チップで形成され、保護レジスタ４１０のアドレスの１部がレジスタＡ４０７および、レジスタＢ４０８のアドレスとして設定されたと見なすことが出来る。      
【０１０７】
従って、レジスタＡ４０７およびレジスタＢ４０８が正常であれば、同一条件で製造された１つのチップ上で同一環境条件（外来雑音や温度等）におかれた保護レジスタ４１０は正常であることが確認できる。
【０１０８】
さらに、図５のフローで使用されるレジスタＡ４０７、レジスタＢ４０８のアドレスはそれぞれ１個であり、両方のアドレスに記憶された１組のデータの比較は１回であるので、書き込み処理は短時間で行える。
【０１０９】
・「レジスタからの読み出し動作」
各レジスタからのデータの読み出しを、図４の構成図を用いて説明する。
【０１１０】
ＣＰＵ４０２からバス制御信号によりデータの読み出し指令と、記憶したレジスタのアドレスがアドレスデコード部４０４に出力される。アドレスデコード部４０４はＣＰＵ４０２から指令されたアドレスに対応するゲートに読み出し指令信号を送る。
【０１１１】
読み出し指令信号を受信したゲートは対応するレジスタのアドレスからデータを読み出す。
【０１１２】
例えば、保護レジスタ４１０のデータ読み出しは、ゲート４１６に指令された読み出し指令信号により、指定されたアドレスから読み出される。
【０１１３】
読み出されたデータは、論理和部４０５により取り出され、バッファ４１３を介してＣＰＵ４０２に入力する。
【０１１４】
１度に読み出されるデータは、保護無しレジスタ４１１、保護レジスタ４１０、レジスタＡ４０７からのどれか１つであるので、各読み出しデータはこれらの論理和により論理和部４０５から取り出すことが出来る。
【０１１５】
レジスタＢ４０８のデータは、データ判定部がハード的に直接取り出すのでＣＰＵ４０２による読み出し処理は必要とされない。
【０１１６】
これまでの説明では、保護レジスタ４１０からの読み出しに対し、書き込み時におけるような動作のチェックは行われないが、データの読み出しを正しく行うための読み出し制御を行ってもよい。
【０１１７】
読み出し制御を行う場合については、実施例１と同様であるから説明は省略する。
【０１１８】
・「アドレス番号を反転したアドレス指定による書き込み制御」
実施例２においては、レジスタＡ４０７へ指定されたアドレス番号を反転したアドレス番号を、レジスタＢ４０８へのアドレス指定に用いてもよい。
【０１１９】
この場合、レジスタＡ４０７およびレジスタＢ４０８へのアドレス指定は、ＣＰＵ４０２が行うので、書き込み保護装置の構成は図４と同じであり、読み出しと書き込み先のアドレス番号が反転しているところが特徴である。
【０１２０】
図８は図４を詳細化したフローであり、図８によりアドレス番号を反転する書き込み制御フローを説明する。
【０１２１】
この場合のフローは基本的には図５と同じであるが、レジスタＡ４０７とレジスタＢ４０８へのアドレス指定に特徴があり、図５のステップＳ５０３の次からを詳細に示す。
【０１２２】
図８において、ステップＳ８０１は書き込み保護装置４０１がＩＤＬＥ（休止）状態に置かれ書き込みが禁止されたステップ、ステップＳ８０２はレジスタＡ４０７が試験データを取り込みデータＡとして保持するステップ、ステップＳ８０３はＣＰＵ４０２がデータＡを読み出すステップ、ステップＳ８０４はＣＰＵ４０２が試験データの書き込み指令を出すステップ、ステップＳ８０５は指令されたアドレス番号がレジスタＢにあるかどうかを判断するステップ、ステップＳ８０６はＣＰＵ４０２がデータを反転しレジスタＢ４０８に書き込みデータＢとして記憶するステップ、ステップＳ８０７はデータＡの反転とデータＢの一致を判断するステップ、ステップＳ８０８はＣＰＵ４０２に異常を通知し、書き込み保護装置４０１をＩＤＬＥ状態にリセットするステップ、ステップＳ８０９は書き込みを許可するステップ、ステップＳ８１０はＣＰＵ４０２が情報データ書き込みを指令するステップ、ステップＳ８１１は書き込み指令されたアドレスが保護レジスタかどうかを判断するステップ、ステップＳ８１２は保護レジスタに書き込むステップ、ステップＳ８１３はＩＤＬＥ（休止）状態にリセットするステップをそれぞれ示す。ステップＳ８１３の次は、図５のステップＳ５０２に帰り、ＣＰＵ４０２の次の書き込みデータ生成に対応する。
【０１２３】
実施例２において書き込みアドレス番号を反転して指定し書き込み制御する動作を、図８の書き込み制御のフローと図４の構成図を用いて説明する。
【０１２４】
以下のステップにおいて記憶装置４０３へのデータの書き込み、および読み出しの制御はＣＰＵ４０２が行う。
【０１２５】
ステップＳ８０１は、図５のステップＳ５０３でＣＰＵ４０２が書き込み指令したデータが保護データの場合の処理からの始まりを示し、書き込み保護装置４０１は書き込み禁止状態で休止しておりＩＤＬＥ状態と称することとする。
【０１２６】
ステップＳ８０２はレジスタＡ４０７が試験データを試験データ生成部４０９から供給され保持するステップで、レジスタＡ４０７に保持されたデータをデータＡとする。ステップＳ８０２〜ステップＳ８０７は書き込み保護装置を検査しているプロセスで、書き込み禁止状態でありＳＴＡＴＥ１と称することとする。
【０１２７】
ステップＳ８０３では、ＣＰＵ４０２はレジスタＡ４０７のアドレス番号を指定して保持されたデータＡを読み出す。
【０１２８】
この場合のアドレスデータの例を図９に示す。図９のD９１（１６進データで５５５５）は予め設定されたレジスタＡ４０７のアドレス番号であり、ＣＰＵ４０２によりアドレスデコード部４０４、データ判定部４０６を介してレジスタＡ４０７に通知され、レジスタＡ４０７のデータＡがＣＰＵ４０２に読み出される。
【０１２９】
ステップＳ８０４では、ＣＰＵ４０２がデータＡを反転したデータＢをレジスタＢ４０８に書き込むため、レジスタＢ４０８のアドレスである図９のＤ９３（１６進データでＡＡＡＡ）を書き込み先アドレスとして指定する。
【０１３０】
例えばこの書き込み先アドレス番号をＣＰＵ４０２からアドレスデコード部４０４に伝送するアドレスバスにおいて、１６ビット目が０に固定される誤りを起こした場合、図９のＤ９５（１６進で２ＡＡＡ）となり、レジスタＢ４０８の正しいアドレス番号（１６進でＡＡＡＡ）とは異なってしまう。
【０１３１】
ステップＳ８０５では、アドレスデコード部４０４がアドレスチェックを行い、ＳＴＡＴＥ１においてＣＰＵ４０２から指令された書き込み先アドレス番号が、レジスタＢ４０８に設定されたアドレス番号（例えば１６進でＡＡＡＡ）と一致するかどうかを判断する。
【０１３２】
ステップＳ８０５がＮｏでレジスタＢ４０８でない場合、レジスタＢ４０８のアドレス（１６進でＡＡＡＡ）にはデータＢが書き込まれないと判断し、スッテップＳ８０８に移行してＣＰＵ４０２に異常を通知し、書き込み保護装置はＩＤＬＥにリセットされる。ＹｅｓでレジスタＢ４０８の場合は、ステップＳ８０６に移る。
【０１３３】
ステップＳ８０６では、ＣＰＵ４０２がデータＡを反転したデータＢを、レジスタＢ４０８に書き込む。
【０１３４】
ステップＳ８０７では、レジスタＡ４０７に記憶されたデータＡのビットを反転バッファ４１４により反転されたデータとレジスタＢ４０８に記憶されたデータＢとを、データ判定部４０６がハード的に比較する。このデータ比較においてＣＰＵ４０２は書き込みおよび読み出し処理は行わないで、直接データ判定部４０６がデータの比較を行う。
【０１３５】
ステップＳ８０７でＮｏの場合、データ判定部４０６は、正しい読み出しと書き込みが行われなかったと判断し、ステップＳ８０８に移行してＣＰＵ４０２に異常を通知し、書き込み保護装置はＩＤＬＥにリセットされる。
【０１３６】
なお、ステップＳ８０７でＮｏの場合、レジスタＡ４０７のデータＡの反転データとレジスタＢ４０８のデータＢが一致しない原因として、データの読み出し、反転処理、書き込みにおけるデータ自身の誤りと、レジスタＡ４０７またはアドレスＢ４０８のアドレス番号の誤りがある。
【０１３７】
書き込み先アドレス番号の誤りは、ステップＳ８０５によりアドレスデコード部４０４まではチェックされるが、アドレスデコード部４０４からデータ判定部４０６、レジスタＢ４０８までの障害は、このステップＳ８０７で検出される。
【０１３８】
ステップＳ８０７でＹｅｓの場合は、試験データが正しく読み出され、正しく書き込みが行われたとして、ステップＳ８０９においてデータ判定部４０６が書き込み許可する。
【０１３９】
この時、書き込み保護装置は書き込み許可状態になりＳＴＡＴＥ２状態と称することとする。
【０１４０】
ステップＳ８１０では、ＣＰＵ４０２がアドレスデコード部４０４に対しデータの書き込みを指令する。
【０１４１】
ステップＳ８１１では、アドレスデコード部４０４が、ＣＰＵ４０２により指令された書き込み先アドレスが保護レジスタ４１０にあるかどうかを判断する。
【０１４２】
図８のこれまでのステップを通過した場合は、保護レジスタ４１０向けのものであり、その他のアドレス番号は書き込み先アドレスを誤った場合と判断する。
【０１４３】
ステップＳ８１１でＮｏの場合で指定アドレスが保護レジスタ４１０に無い場合、ステップＳ８０８に移行してＣＰＵ４０２に異常を通知し、書き込み保護装置はＩＤＬＥにリセットされる。
ステップＳ８１１でＹｅｓの場合で一致した場合で指定アドレスが保護レジスタ４１０にある場合、ステップＳ８１２に移り、ＣＰＵ４０２より送られたデータは、保護レジスタ４１０の指定先アドレスに書き込まれる。
【０１４４】
データの書き込みが終了すると、書き込み保護装置４０１はＩＤＬＥ（書き込み禁止）状態にリセットされ、図５のステップＳ５０２に帰り、次にＣＰＵ４０２が生成する書き込みデータに対応する。
【０１４５】
従って、ＣＰＵ４０２から保護レジスタ４１０へのデータの書き込みは、図８のＳ８０１から始まりＳ８１１ステップでｙｅｓまでのプロセスを通過した場合のみ実行される。
【０１４６】
従って、図８のフローによる保護レジスタ４１０への書き込みの許可は、ＣＰＵ４０２、アドレスデコード部４０４、レジスタＡ４０７、レジスタＢ４０８、およびこれらを接続するアドレスバス、データバス、バス制御信号系が正常に動作している場合に行われる。
【０１４７】
また、レジスタＡ４０７のアドレス番号を反転したアドレス番号がレジスタＢ４０８に対し設定されるので、ＳＴＡＴＥ１におけるＣＰＵ４０２のアドレス指定が簡単であり短時間で行える。
（付記１）
プロセッサによるデータ書き込みを制御する書き込み保護装置において、
試験用データを記憶する第１の記憶手段と、
前記第１の記憶手段から前記試験用データの読み出しを行った前記プロセッサが、読み出したデータの書き込みを行う第２の記憶手段と、
前記第１の記憶手段に記憶された試験用データと前記第２の記憶手段に記憶されたデータとが一致するかを判断する判断手段と、
前記判断手段により一致すると判断されたとき前記プロセッサの第３の記憶手段へのデータ書き込みを許可する制御手段と、
を備えたことを特徴とする書き込み保護装置。
（付記２）
前記第１の記憶手段と前記第２の記憶手段が備えた記憶用のアドレスは、それぞれ１つであることを特徴とする付記１記載の書き込み保護装置。
（付記３）
前記判断手段は、前記第１の記憶手段と前記第２の記憶手段に直接接続された線路を介して、前記２つの記憶手段に記憶された試験用データを比較することを特徴とする付記１記載の書き込み保護装置。
（付記４）
前記第３の記憶手段に書き込まれたプロセッサのデータは、前記第１の記憶手段に記憶された試験用データと、前記プロセッサが前記第１の記憶手段から読み出し前記第２の記憶手段に書き込んだ試験用データとが一致したとき、前記制御手段により読み出しが許可されることを特徴とする付記１記載の書き込み保護装置。
（付記５）
前記プロセッサのデータのうち前記プロセッサが重要と判断したデータは、前記制御手段による書き込み許可に基づき前記記憶手段３に書き込まれ、重要でないと判断したデータは前記制御手段による書き込み許可なしで書き込まれる第４の記憶手段を備えたことを特徴とする付記１記載の書き込み保護装置。
（付記６）
プロセッサによるデータ書き込みを制御する書き込み保護装置において、
試験用データを記憶する第１の記憶手段と、
前記第１の記憶手段から前記試験用データの読み出しを行った前記プロセッサが、読み出したデータの各ビットを反転したデータの書き込みを行う第２の記憶手段と、
前記第１の記憶手段に記憶された試験用データの各ビットを反転したデータと前記第２の記憶手段に記憶されたデータとが一致するかを判断する判断手段と、
前記判断手段により一致すると判断されたとき前記プロセッサの第３の記憶手段へのデータ書き込みを許可する制御手段と、
を備えたことを特徴とする書き込み保護装置。
（付記７）
前記第１の記憶手段と前記第２の記憶手段が備えた記憶用のアドレスは、それぞれ１つであり、前記第２の記憶手段のアドレス番号は前記第１の記憶手段のアドレス番号の各ビットを反転したアドレス番号であることを特徴とする付記６記載の書き込み保護装置。
（付記８）
前記判断手段は、前記第１の記憶手段は極性反転回路を介し、前記第２の記憶手段は直接接続された線路を介して、前記２つの記憶手段に記憶された試験用データを比較することを特徴とする付記６記載の書き込み保護装置。
（付記９）
前記プロセッサのデータのうち前記プロセッサが重要と判断したデータは、前記制御手段による書き込み許可に基づき前記記憶手段３に書き込まれ、重要でないと判断したデータは前記制御手段による書き込み許可なしで書き込まれる第４の記憶手段を備えたことを特徴とする付記６記載の書き込み保護装置。
【図面の簡単な説明】
【０１４８】
【図１】書き込み保護装置の構成（実施例１）を示す図である。
【図２】書き込み制御のフロー（実施例１）を示す図である。
【図３】読み出し制御のフロー（実施例１）を示す図である。
【図４】書き込み保護装置の構成（実施例２）を示す図である。
【図５】書き込み制御のフロー（実施例２）を示す図である。
【図６】１６進データの反転の例（実施例２）を示す図である。
【図７】１６進データを誤った例（実施例２）を示す図である。
【図８】書き込み制御の詳細フロー（実施例２）を示す図である。
【図９】アドレス番号用１６進データの例（実施例２）を示す図である。
【符号の説明】
【０１４９】
１０１  書き込み保護装置
１０２  ＣＰＵ
１０３  記憶装置
１０４  アドレスデコード部
１０５  論理和部
１０６  レジスタＡ
１０８  レジスタＢ
１０９  試験データ生成部
１１０  保護レジスタ
１１１  保護無しレジスタ
１１２  バッファ
１１３  バッファ
１１４  バッファ
１１５  ゲート
１１６  ゲート
１１７  ゲート
１１８  ゲート
４０１  書き込み保護装置
４０２  ＣＰＵ
４０３  記憶装置
４０４  アドレスデコード部
４０５  論理和部
４０６  データ判定部
４０７  レジスタＡ
４０８  レジスタＢ
４０９  試験データ生成部
４１０  保護レジスタ
４１１  保護無しレジスタ
４１２  バッファ
１１３  バッファ
４１４  反転バッファ
４１５  ゲート
４１６  ゲート
４１７  ゲート
４１８  ゲート
【図１】
2008217268.tif 000003
【図２】
2008217268.tif 000004
【図３】
2008217268.tif 000005
【図４】
2008217268.tif 000006
【図５】
2008217268.tif 000007
【図６】
2008217268.tif 000008
【図７】
2008217268.tif 000009
【図８】
2008217268.tif 000010
【図９】
2008217268.tif 000011