(57)【要約】【課題】  レジスタ１４に対して何らの保護手段も与えなければ、熱暴走時にレジスタ１４に対して誤設定がなされる可能性がある。一方、保護手段としてレジスタ書き込み前に保護用レジスタへの書き込みを要求すると、ソフトウェア設計者が保護用レジスタを書きこんだままにすることも考えられる為、保護用レジスタの効果に疑問が生じた。【解決手段】  ＣＰＵ装置内の設定レジスタ１４毎に誤設定防止用の解除コード記録部１２と解除コード書込部１３を用意する。解除コード記録部１２の各ビットの反転（ＮＯＴ）と解除コード書込部１３の各ビットの排他的論理和を取り、全てが一致する場合にのみ設定レジスタ１４への書き込みを可能にする。また、解除コードを変化させることで解除コード書き込み部に一度書いて放置するという操作を防ぐこともできる。【選択図】  図１
2005122540.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、設定レジスタを含むＣＰＵ装置であって、
更に解除コードを記憶する解除コード記憶部と前記解除コード記憶部とビット長が等しい解除コード書込部を含み、
前記解除コード記憶部の出力の反転値と前記解除コード書込部の出力の値が一致する場合に限り、前記ＣＰＵによる前記設定レジスタの書き込みが可能となることを特徴とするＣＰＵ装置。
【請求項２】
ＣＰＵと、設定レジスタを含むＣＰＵ装置であって、
更に解除コードを記憶する解除コード記憶部と前記解除コード記憶部とビット長が等しい解除コード書込部を含み、
前記解除コード記憶部の出力の値と前記解除コード書込部の出力の反転値が一致する場合に限り、前記ＣＰＵによる前記設定レジスタの書き込みが可能となることを特徴とするＣＰＵ装置。
【請求項３】
請求項１もしくは２記載のＣＰＵ装置であって、
前記解除コード記憶部は更にタイマを含み、
前記解除コード記憶部への書きこみによって前記タイマがカウントを始めることを特徴とするＣＰＵ装置。
【請求項４】
請求項３記載のＣＰＵ装置であって、
前記タイマは動作後一定時間経過後に前記解除コード記憶部へリセット信号を出力することを特徴とするＣＰＵ装置。
【請求項５】
請求項４記載のＣＰＵ装置であって、
前記一定時間がＣＰＵによって設定されることを特徴とするＣＰＵ装置。
【請求項６】
請求項４記載のＣＰＵ装置であって、
前記一定時間が固定されていることを特徴とするＣＰＵ装置。
【請求項７】
請求項３記載のＣＰＵ装置であって、
前期解除コード記憶部の出力として、前記タイマの値を出力することを特徴とするＣＰＵ装置。
【請求項８】
請求項１もしくは２記載のＣＰＵ装置であって、
更にタイマを含み、
前記解除コード記憶部がシフトレジスタから構成されることを特徴とするＣＰＵ装置。
【請求項９】
請求項８記載のＣＰＵ装置であって、
前記シフトレジスタが前記タイマの出力によってシフトすることを特徴とするＣＰＵ装置
【請求項１０】
請求項９記載のＣＰＵ装置であって、
前期解除コード記憶部への読み出しを行うと、前記シフトレジスタのシフトが停止されることを特徴とするＣＰＵ装置。
【請求項１１】
請求項１０記載のＣＰＵ装置であって、
前記シフトレジスタの値をＣＰＵが設定可能とすることを特徴とするＣＰＵ装置。
【請求項１２】
ＣＰＵと、複数の設定レジスタ及び１つのタイマを含むＣＰＵ装置であって、
更に前記設定レジスタ毎に解除コード書込部とシフトレジスタからなる解除コード記憶部を含み、
前記解除コード記憶部の出力の反転値と対応する前記解除コード書込部の出力の値が一致する場合に限り、前記ＣＰＵによる対応する前記設定レジスタへの書き込みが可能となることを特徴とするＣＰＵ装置。
【請求項１３】
ＣＰＵと、複数の設定レジスタ及び１つのタイマを含むＣＰＵ装置であって、
更に前記設定レジスタ毎に解除コード書込部とシフトレジスタからなる解除コード記憶部を含み、
前記解除コード記憶部の出力値と対応する前記解除コード書込部の出力の反転値が一致する場合に限り、前記ＣＰＵによる対応する前記設定レジスタへの書き込みが可能となることを特徴とするＣＰＵ装置。
【請求項１４】
請求項１２もしくは１３記載のＣＰＵ装置であって、
前記解除コード記憶部の出力として、前記シフトレジスタの出力を用いることを特徴とするＣＰＵ装置。
【請求項１５】
請求項１２乃至は１４のうちいずれか１に記載のＣＰＵ装置であって、
前記解除コード記憶部は前記ＣＰＵからデータを読み出されると一定時間シフトレジスタのシフトを停止することを特徴とするＣＰＵ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタ領域を内部に含むＣＰＵ装置において、暴走時におけるＣＰＵの不揮発性メモリに対する不測の書き換えを防止する手段に関する。
【背景技術】
【０００２】
近年、パソコンや携帯電話機以外にも家庭用電化製品にＣＰＵが用いられることが一般的になり、却って、ＣＰＵを用いないものを探すほうが困難な状況にある。
【０００３】
高性能なＣＰＵは処理速度を向上するため高周波数で動作するが、高周波数で動作し続けると自身若しくは周辺のチップの発熱によりＣＰＵの周辺が高温になり、ＣＰＵが熱暴走する可能性がある。また、想定外の割込み発生によっても同様のプログラム暴走が生じる可能性がある。
【０００４】
ここで、暴走時にＣＰＵが不揮発性メモリにアクセスし、その値を勝手に書きかえると重要データが破壊消去される可能性があり、最悪の場合、電源の再投入等によっても再起動ができなくなる場合もある。かかる自体を回避する為に、システムとして重要な不揮発性メモリ領域にライトプロテクトを設定する技術が知られている。
【０００５】
例えば、特開平０９−１９８８８５号公報ではフラッシュＲＯＭへのデータの書きこみに先んじて特定のアドレスに所定値を書きこみ、一定時間経過しＣＰＵに割込みが掛かった後に再度所定値を書きこむことではじめてフラッシュＲＯＭに対してデータ内容を書きかえることが可能になる旨を開示している。
【０００６】
また、特開平０５−１９７６２７号公報では特定のレジスタに所定の値を書きこんだ時に初めてＥＥＰＲＯＭへの書きこみが可能になる旨が開示されている。
【０００７】
【特許文献１】特開平０９−１９８８８５号公報
【特許文献２】特開平０５−１９７６２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特開平０９−１９８８８５号公報記載の発明では、最初に特定のアドレスに所定値を書きこみ、一定時間経過するまで待たねばならず、プログラムの高速な実行と並立させることが困難であった。
【０００９】
また、特開平０５−１９７６２７号公報記載の発明では、特定のレジスタに所定の値を書きこんでおけばＥＥＰＲＯＭへの書きこみが可能となる為、勢い該レジスタを所定の値のままプログラムを動作させることも考えられ、せっかくのライトプロテクトが意味をなさない使用状態になる。
【００１０】
本発明の目的は、上記問題を解決し、既存のソフトウェアの改造及び高速化の障害を最小限に留めてＣＰＵ装置にライトプロテクト方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係わるＣＰＵ装置は、ＣＰＵと設定レジスタを含むだけでなく、更に解除コードを記憶する解除コード記憶部と前記解除コード記憶部とビット長が等しい解除コード書込部を含み、前記解除コード記憶部の出力の反転値と前記解除コード書込部の出力の値が一致する場合に限り、前記ＣＰＵによる前記設定レジスタの書き込みが可能となる
また前記解除コード記憶部の出力の値と前記解除コード書込部の出力の反転値が一致する場合に限り、前記ＣＰＵによる前記設定レジスタの書き込みが可能となる様にしても良い。
【００１２】
本発明に係わるＣＰＵ装置の別の形態としては、解除コード記憶部にタイマを含み、解除コード記憶部への書きこみによってタイマがカウントを始めること、及びタイマカウント後に解除コード記憶部へリセット信号を出力することで解除コード記憶部の値の固定化を防ぐことも可能である。また前記一定時間は固定としても、ＣＰＵによって設定することを可能としても良い。
【００１３】
本発明に係わるＣＰＵ装置の別の形態としては、前期解除コード記憶部の出力として、前記タイマの値を出力することで解除コードを動的にしても良い。また、前記解除コード記憶部がシフトレジスタから構成されることで、一定周期で解除コードが変化することで解除コードを動的にすることも可能である。更に、シフトレジスタがタイマの出力をトリガとしてシフトすることが可能である。また、書き込み直前にビットシフトが行われることを避ける為、前期解除コード記憶部への読み出しを行うと、前記シフトレジスタのシフトが停止することも有効であろう。加えてシフトレジスタの初期値をＣＰＵが設定可能とすることも可能である。
【００１４】
本発明に係わるＣＰＵ装置は、ＣＰＵと複数の設定レジスタを含むだけでなく、更に前記設定レジスタの数に応じて解除コード書込部とシフトレジスタからなる解除コード記憶部を含み、
前記解除コード記憶部の出力の反転値と対応する前記解除コード書込部の出力の値が一致する場合に限り、前記ＣＰＵによる対応する前記設定レジスタへの書き込みが可能となることでタイマの数を削減することも可能である。この際、前記解除コード記憶部の出力値と対応する前記解除コード書込部の出力の反転値が一致する場合に限り、前記ＣＰＵによる対応する前記設定レジスタへの書き込みが可能としても良い。更に、前記解除コード記憶部は前記ＣＰＵからデータを読み出されると一定時間シフトレジスタのシフトを停止することでＣＰＵの操作の遅延に対応させても良い。
【発明の効果】
【００１５】
本発明を適用することによって、高い誤り誤設定防止率を得ることが可能となる。その結果ＣＰＵが暴走した時に誤って重要なデータを破壊・消去してしまう可能性を大幅に削減することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下において装置名称をＣＰＵ装置とし、ＣＰＵを使って動作するように記載しているが、ＤＳＰ（デジタルシグナルプロセッサ）等のＣＰＵ相当品を用いて実施しても良い旨先んじて述べる。
【実施例１】
【００１７】
図1は本発明の第1の実施の形態に係わるＣＰＵ装置の１つの不揮発性メモリからなるレジスタに対するライトプロテクト構成の基本構成を表すブロック図である。
【００１８】
このＣＰＵ装置は、ＣＰＵ１１、解除コード記憶部１２、解除コード書込部１３、レジスタ（設定レジスタ）１４、バス１５及び対比部１、インバータ２から構成されており、ＣＰＵ１１から解除コード記憶部１２、解除コード書込部１３、レジスタ１４の間はバス１５で接続されている。
【００１９】
対比部１は対応する解除コード記憶部１２の出力の反転値と解除コード書込部１３の出力の対比を取る箇所である。上述の通り、解除コード記憶部１２と解除コード書込部１３は複数のビットから構成されているが全てのビットで値が一致すればレジスタ１４へ書き込みを認める出力信号を出力する。
【００２０】
インバータ２は解除コード記憶部１２の出力の反転値を取る箇所である。図上では模式的に１つの反転記号が記されているが、実際は解除コード記憶部１２の出力全てが反転される。
【００２１】
ＣＰＵ１１はＣＰＵ装置全体を制御する中央処理装置のことである。レジスタ１４に対する書き換え処理もＣＰＵ１１が主体となってなされる。
【００２２】
解除コード記憶部（解除コード記憶レジスタ）１２は、本発明のアルゴリズムにより生成される解除コード群を管理するブロックであり、複数のビットで構成される。一方、解除コード書込部（解除コード書込レジスタ）１３は、レジスタ１４へのデータの書き込みに際して事前に書き込みが必要なブロックである。なお、解除コード記憶部１２と解除コード書込部１３の構成ビット数はいくつでも構わないが、相互同数でなければならない。例えば、解除コード記憶部１２が１６ビットで構成されている場合には解除コード書込部１３も１６ビットで構成される。
【００２３】
レジスタ１４は処理を実行するために、一時的にデータを格納しておく記憶領域のことである。本発明にあっては、ＣＰＵ装置の設定状態であってソフトウェアによる設定で管理されるものを言い、ハードウェアの状態、例えばフロッピーディスクが挿入されているか否か、によって決定されるレジスタや単なる演算レジスタにまで本発明を適用するかは任意である。
【００２４】
解除コード記憶部１２の出力値はインバータ２によって反転され、解除コード書込部１３の対応するビットの出力とで対比部１において排他的論理和が取られる。解除コード記憶部１２の反転出力と解除コード書込部１３の対応する出力の排他的論理和の結果、全てのビットが一致すれば、レジスタ１４への書き込みが可能となる。
【００２５】
解除コード記憶部１２の反転出力と解除コード書込部１３の対応する各ビット全てが一致すれば、レジスタ１４への書きこみを可能とすることで誤設定防止を図る。具体的には、ＣＰＵ１１に対して出力されるライトイネーブル信号をアクティブにしないようにマスクをする、バスのアドレス信号の一部をマスクすることでＣＰＵ１１からレジスタ１４へのアクセスを受け付けなくするなどが考えられるがいかなる方法を用いるかは設定事項である。
【００２６】
なお、図１では解除コード記憶部１２の出力をインバータ２で反転させて解除コード書込部１３の対応するビットの出力との排他的論理和を取っているが、現実の構成を想定すると解除コード記憶部１２にフリップフロップを用いることになると想定される。そしてフリップフロップは反転出力を有している為、現実の回路ではインバータ２を入れる必要はないであろう。
【００２７】
また、現実のＣＰＵ装置の動作には複数のレジスタが必要であるが、その際には、必要な数だけ解除コード記憶部１２、解除コード書込部１３、レジスタ１４を用意すれば良い。
【００２８】
次に、図２のＣＰＵ１１の動作を表すフローチャートを参考に本発明の第1の実施の形態の処理内容を説明する。
【００２９】
まず、ＣＰＵ１１は解除コードを規定し、解除コード記憶部１２に解除コードを書きこむ（Ｓ２０１）。この書き込みはＣＰＵ装置の起動直後が一般的であるが必ずしもこれには拘らない。なお、解除コードの反転をＣ言語で表記すると以下のようになる。
Ｔｅｍｐ=〜Ｔｅｍｐ；
これにより解除コードの反転したものが排他的論理和の候補となる。この解除コード記憶部１２への解除コードの設定はＣＰＵ装置の起動直後に行われることが一般的と思われるが、必ずしもこれに拘るものではない。また起動後一定時間が経過する毎に解除コードを書きかえるような設定にしても良い。
【００３０】
ＣＰＵ１１がレジスタ１４に対しての書き込みの必要が生じたら（Ｓ２０２：Ｙｅｓ）、ＣＰＵ１１はＳ２０１で書きこんだ解除コードをビット毎に反転させた値を解除コード書込部１３に対して書きこむ（Ｓ２０３）。
【００３１】
これにより、ＣＰＵ１１はレジスタ１４への書き込みが可能となる。その後、ＣＰＵ１１はレジスタ１４への書き込みを行い（Ｓ２０４）、レジスタの設定を変更する。
【００３２】
レジスタの設定を変更すると、ＣＰＵからのアクセスを禁止する必要がある。したがって、ＣＰＵ１１は解除コード書込部をリセットする、若しくは、Ｓ２０３で書き込んだ値と相違する任意の値を書き込みレジスタへのアクセスをできなくさせる（Ｓ２０５）。これにより、熱暴走が起きた時にレジスタへの不測の値の書きこみを防止することが可能になる。
【００３３】
以上により、レジスタ１４への書き込み前に解除コード記憶部１２と解除コード書込部１３の値を対応させなければレジスタ１４への書き込みができないとすることで、熱暴走時にレジスタ１４の値が不測の変更を加えられることを防止することが可能となる。
【００３４】
なお、ＣＰＵ装置には複数のレジスタが存在することがほとんどであるが、これら複数のレジスタ毎に解除コード記憶部１２及び解除コード書込部１３を用意しても構わないし、全てのレジスタに共用で用いても良い。また、ビットを反転する対象を解除コード記憶部１２の出力ではなく解除コード書込部１３の出力としても、同様の効果が得られる。
【実施例２】
【００３５】
実施例1においては、Ｓ２０５の処理を行わないと、一度解除コード記憶部１２及び解除コード書込部１３に対応する値を書きこむとレジスタ１４に対する書き込みが継続的に可能となり、結果、当初目的とした熱暴走時にレジスタ１４への意図しない書き込みを防ぐことができないと言う問題が生じる。かかる処理の記載忘れはソフトウェアの開発時にはあってはならないことではあるが、意外に発生するものである。本発明の第２の実施の形態は、上記の新たに生じた問題を解決する為のものである。
【００３６】
図３は本発明の第２の実施の形態に係わるＣＰＵ装置の不揮発性メモリに対するライトプロテクト構成の基本構成を表すブロック図である。一見して分かるとおり、解除コード記憶部１２中にタイマ１６を内包し、レジスタ１４から信号線が引かれているだけであり、他のブロックの動作は図１と変わらない。よって、タイマ１６の説明のみ行う。
【００３７】
タイマ１６は最後に解除コード記憶部１２への書き込みが行われると同時にカウントアップが開始される。そして一定時間が経過したことが確認されると、解除コード記憶部１２に記憶された解除コードをリセットする。これにより、解除コード記憶部１２及び解除コード書込部１３との対応が崩れることになり、レジスタ１４への不測の書き込みが防止されることとなる。
【００３８】
図４は、所定時間中にレジスタ１４に書き込みが行われない際の解除コード記憶部１２中の処理のフローチャートである。
【００３９】
電源投入後ＣＰＵ１１から解除コードの書きこみが行われると（Ｓ４０１）、タイマ１６はリセットされた後、カウントアップを開始する（Ｓ４０２）。書きこみ後一定時間が経過することをタイマ１６で検知すると（Ｓ４０３：Ｙｅｓ）、書きこまれた解除コードがリセットされる（Ｓ４０４）、タイマ１６のカウントアップも停止される（Ｓ４０５）。
【００４０】
なお、解除コードのリセットとは必ずしも各ビットがオール０やオール１にセットされることを意味しない。任意の初期値であっても良いのは実施例１のＳ２０５と同様である。また上記説明では解除コード記憶部１２をリセットの対象にしているが、解除コード書込部１３をリセットすることで実現しても良い。
【実施例３】
【００４１】
実施例２においては、一定期間解除コード記憶部１２に対して解除コードの書き込みが無い場合には解除コード記憶部に書き込まれた解除コードをリセットすることで解除コード記憶部１２と解除コード書込部１３の対応を崩し、改めて解除コード記憶部１２に解除コードを書き込ませることで、本発明の目的である熱暴走時の不測のレジスタ１４の書き換えを防ぐことを実現する。
【００４２】
しかし、かかる解除コードのリセットによる誤設定防止方法では、解除コードのリセット状況が不明である為、ＣＰＵ１１の動作に条件分岐を設ける必要があり、ソフトウェア設計上煩雑な面が否めない。そこでこの煩雑さを解消する為、以下で本発明の第３の実施の形態を説明する。
【００４３】
図５は本実施例の基本構成を表すブロック図である。解除コード記憶部１２の替わりにタイマ１６及びタイマ１８を内包する解除コード生成部１７が用いられる以外は図３と同様である。従って、解除コード生成部１７及び動作上の差異の説明のみを行う。
【００４４】
解除コード生成部１７は複数のカウントビットからなるタイマ１６及びタイマ１８を内包する。本実施例ではタイマ１８はＣＰＵ装置の起動後カウントアップを開始して一定の期間経過すると再度全カウントビットを０に戻してカウントアップすることを想定しているが、カウントビット１から減算していくカウントダウン方式を用いてもよい。すなわち、タイマ１８の値（但し、ビット数の関係で全てのタイマ１８のビットを用いるとは限らない）を、そのまま解除コードとして使用することが本発明の第３の実施の形態の要諦である。
【００４５】
タイマ１８のカウントビットの全て若しくは任意のビットがバス１５を介してＣＰＵ１１に接続されている。そしてＣＰＵ１１からタイマ１８のカウントビットを解除コードとして読み出すことが可能になる。しかし、解除コードの読み出しを行うとレジスタ１４への書き込みが行われるまでタイマ１８のカウントアップは中断される必要がある。何故ならＣＰＵ１１の読み出し後もタイマ１８が動作すると、解除コード書込部１３への書き込みを行っても解除コード書込部１３と解除コード生成部１７の出力の対応が取れなくなり、結果としてレジスタ１４への書き込みができなくなるのを防ぐ為である。
【００４６】
また、ＣＰＵ１１が解除コードたるタイマ１８の出力値を読み出したあと、解除コード書込部１３への解除コードの書き込み及びレジスタ１４への値の書き込みに十分な時間後もタイマ１８のカウントアップが再開されないと、熱暴走防止の目的を果たさなくなる。そこで、実施例２で用いたタイマ１６を不必要にカウントアップを停止させることを防止することに用いる。すなわち、タイマ１８のカウントアップ中止時にはタイマ１６を動作させ、タイマ１６が一定時間動作する間にレジスタ１４が書き換えられない場合にはタイマ１８の動作を再開させることで、熱暴走時のレジスタ書き換えのリスクを低減させることを目的としている。
【００４７】
図６は本発明の第３の実施の形態に基づくＣＰＵ１１がレジスタ１４の書き換えを行う際のフローチャートである。また図７は本発明の第３の実施の形態に基づく解除コード生成部１７の動作を表すフローチャートである。
【００４８】
ＣＰＵ１１がレジスタ１４に対して書きこみを行う際には、まず、解除コード生成部１７から解除コードの読み出しを行う（Ｓ６０１）。ＣＰＵ１１は読み出した解除コードをビット毎に反転させ、解除コード書込部１３に書きこむ（Ｓ６０２）。反転させた解除コードを解除コード書込部１３に書きこむとレジスタ１４への書きこみが可能となるので、その後レジスタに書きこみを行う（Ｓ６０３）。
【００４９】
図７はＣＰＵ１１の書きこみ動作に対して解除コード生成部１７等がどのような処理を行うかを表すフローチャートである。
【００５０】
ＣＰＵ１１による解除コードの読み出し要求がなされると（Ｓ７０１）、タイマ１８のカウントアップを停止し解除コードを確定する（Ｓ７０２）。そして確定した解除コードをＣＰＵ１１に対してバス１５を介して送信する（Ｓ７０３）。
【００５１】
解除コード送信後、タイマ１６が動作を開始し、解除コードの送信後どの程度の時間が経過したかをカウントする。タイマ１６が所定時間動作したなら（Ｓ７０５：Ｙｅｓ）、タイマ１６の動作を停止し（Ｓ７０７）、その後タイマ１８の動作を再開する（Ｓ７０８）。この際、Ｓ７０２で停止したカウンタの値から継続してカウントアップしても良いし、一旦カウンタのリセットをして再度カウントアップを最初からやりなおしても良い。
【００５２】
タイマが動作して所定時間経過する前に（Ｓ７０５：Ｎｏ）、レジスタ１４の書き込みがなされた場合（Ｓ７０６：Ｙｅｓ）、タイマ１６が所定時間動作した場合同様、タイマ１６の動作を停止し（Ｓ７０７）、タイマ１８の動作を再開する（Ｓ７０８）。
【００５３】
このような処理を行うことで、ＣＰＵ１１の動作を「分岐」無く行えるようプログラムを定義することができ、プログラム設計上効率を上げることが可能になる。ＣＰＵ１１はタイマ１８のカウントアップの開始をいずれかで行う必要がある。一般的には他の初期化動作と同様にＣＰＵ装置の起動直後に行うことが考えられるが必ずしもこれに拘泥するものではない。
【実施例４】
【００５４】
実施例３記載の発明の採用によりＣＰＵ１１の動作プログラムの効率化が可能になる。
【００５５】
しかし、タイマ１８をそのまま解除コードとして用いると、各レジスタにタイマ１６及びタイマ１８が必要になり回路構成が増大することが考えられる。何故なら、一つのレジスタに対して読みこみを行う予定で解除コードを読み出す毎に全てのレジスタのタイマ１８を止めていたのでは本発明の目的たる誤設定の防止の効力を希薄化する為である。従って、タイマ１６を各レジスタ毎に共用することはできない。
【００５６】
この回路構成の増大と言う問題を解消する為に、各レジスタに対し共通のタイマを用いることで解除コード生成部１７の回路構成を最小にしようとしたものが本発明の第４の実施の形態である。以下本発明の第４の実施の形態を説明する。
【００５７】
図８は本発明の第４の実施の形態を採用したＣＰＵ装置の基本構成を表すブロック図である。図５と相違し、タイマ１８の替わりにシフトレジスタ１９及びマスク２１を構成に含めている。またタイマ２０の動作も実施例３と相違する。よって、この相違点についてのみ説明する。
【００５８】
解除コード生成部１７ｂは複数のビットからなるシフトレジスタ１９を内包する。そしてこのシフトレジスタ１９の値を解除コードとして使用する。
【００５９】
一般的なシフトレジスタの定義は記憶しているデータの桁を左右いずれかにシフトさせることができるレジスタのことであり、これ自体は公知のものである。シフトレジスタにはシフトの結果桁があふれると値を捨てるものと最下位の桁にその値をシフトさせることで循環性を有するものがあるが、本実施例で使用されるシフトレジスタ１９には後者を用いる。前者を使用するとシフトさせ続けると最終的には全てのビットが０となるため解除コードを変化する効果が無くなる為である。なお、本発明に係わるシフトレジスタ１９の値はバスを介してＣＰＵ１１から直接データを書き込むことが可能である点は実施例３のタイマ１８と同様である。
【００６０】
本実施例におけるタイマ２０はシフトレジスタ１９がビットシフトを行う際のタイミングパルスを生成する為に用いる。事前に設定した周期毎にタイマ２０がタイミングパルスを発生させ、ビットシフトを起こさせる。また、タイマ２０から出力されるタイミングパルスをマスク２１がマスクすることでシフトレジスタ１９の動作を簡単に停止・再開することができる。
【００６１】
このように、タイマ２０は解除コードの修正（＝シフトレジスタ１９の動作）を行うタイミングパルスを生成するだけであり、またタイミングパルスの制御も容易である為、複数のレジスタの誤設定防止を図る際にも回路構成が小さくて済む。
【００６２】
なお、シフトレジスタ１９の初期値はＣＰＵ装置の起動時の初期化処理でＣＰＵ１１によって設定することが可能であるが特に拘るものではない。
【００６３】
図９は本実施例における解除コード生成部１７ｂのブロック図である。図８に掲載したシフトレジスタ１９及びタイマ２０とがどのように接続されているかを示している。
【００６４】
タイマ２０が生成したタイミングパルスはマスク２１を経由してシフトレジスタ１９に出力される。通常時にはマスク２１はタイミングパルスをそのままシフトレジスタ１９にスルーされ、この入力に併せてシフトレジスタ１９がシフトされる。
【００６５】
しかし、ＣＰＵ１１がシフトレジスタ１９から解除コードが読み出すと、その値を固定しないと、ＣＰＵ１１が解除コード書込部１３へ書き込みを行った際に対応が取れなくなる点は実施例３と同様である。そこで、シフトレジスタ１９の値を解除コードとしてＣＰＵ１１に送信するに際して、ＣＰＵ１１に対して読み出しタイミングを出力する前にタイマ２０からのタイミングパルスをマスク２１によりマスクする。これにより、シフトレジスタ１９のシフトが行われなくなり、解除コードが固定される。解除コードが読み出され、ＣＰＵ１１が解除コード書込部１３に該解除コードをビット反転した値を書き込むと、レジスタ１４へのアクセスが可能になるのは前述の通りだからである。なお、この際のタイミングはアウトプットイネーブル信号の前縁などが考えられるがこれに拘るものではない。
【００６６】
そしてＣＰＵ１１がレジスタ１４に対してデータを書きこむと、マスク２１がタイマ２０からのタイミングパルスをマスクする理由は無くなる。そこでレジスタ１４への書き込みタイミングをＣＰＵ１１が出力する際に、マスク２１によるタイミングパルスのマスクを解除する。なお、可能な限りレジスタ１４が出力する信号をトリガとしてマスク２１によるマスクの解除を行うことが望ましい。何故なら一般的なデバイスはライトイネーブル信号をアクティブにしてデータの書き込みが可能なことを表し、ライトイネーブル信号をディアクティブにしてデータの書き込みが終了したことを表す為である（以下ライトイネーブル信号のディアクティブによってマスク２１のマスク解除がなされるものとして説明する）。
【００６７】
また、マスク２１によるタイミングパルスのマスクの解除条件として、タイマ２０から送信されるタイミングパルスをカウントし、マスク２１が一定期間の経過後にマスク解除を行えるようにしても良い。掛かる場合にはレジスタ１４からのライトイネーブル信号の入力は不要である。
【００６８】
以上のようにして、出力されるタイミングパルスのマスクをなすことで、複数のレジスタ群に対しても１つのタイマ２０を用意するだけでレジスタの保護が可能なことがわかる。
【００６９】
図１０は以下本発明の第４の実施の形態を採用した際の解除コード生成部１７ｂの動作を示すフローチャートである。なおＣＰＵ１１の動作は図６と同様なので省略する。
【００７０】
解除コードの読み出し要求を受けると（Ｓ１００１）、マスク２１によりクロック２０からのタイミングパルスをマスクしシフトレジスタのシフト動作を封じた後（Ｓ１００２）、解除コードをＣＰＵ１１に送信する（Ｓ１００３）。
【００７１】
ＣＰＵ１１が解除コード書込部１３及びレジスタ１４への書き込みを実行するとレジスタ１４の書き込みが終了するまでマスク２１によるマスクを維持しなければならない。そしてレジスタ１４のライトイネーブル信号がディアクティブになったこと（Ｓ１００４）をトリガとしてマスク２１によるタイマ２０からのタイミングパルスをスルーでシフトレジスタ１９に入力することでレジスタの書き換え処理が終了する（Ｓ１００５）。
【００７２】
なお、シフトレジスタ１９の替わりに実施例３で用いたタイマ１８を用いることも出きるが回路構成上シフトレジスタのほうが有利である。
【００７３】
ちなみにシフトレジスタ１９の値は、ＣＰＵ装置の初期化の際にＣＰＵ１１から設定されることが望ましいが、どの時点でシフトレジスタ１９の値を設定するかは設計事項である。また、シフトしても値の変わらない全てのビットが１若しくは０を取ることは好ましくは無いがこれを禁ずるものではない。
【００７４】
以上のように、タイマの使用を最小限に留めることでコンパクトな回路実装を可能にすることができる。
【産業上の利用可能性】
【００７５】
本発明はＣＰＵで動作し、環境設定を要する全ての機器、たとえばコンピュータや携帯電話などが考えられる。
【図面の簡単な説明】
【００７６】
【図１】本発明の第１の実施例に基づくＣＰＵ装置の基本構成を表すブロック図である。
【図２】本発明の第１の実施例に基づくＣＰＵ装置のＣＰＵの動作を表すフローチャートである。
【図３】本発明の第２の実施例に基づくＣＰＵ装置の基本構成を表すブロック図である。
【図４】本発明の第２の実施例に基づくＣＰＵ装置の解除コード記憶部中の処理を表すフローチャートである。
【図５】本発明の第３の実施例に基づくＣＰＵ装置の基本構成を表すブロック図である。
【図６】本発明の第３の実施例に基づくＣＰＵ装置に関するレジスタ書きこみ時のＣＰＵの処理を表すフローチャートである。
【図７】本発明の第３の実施の形態に基づくにＣＰＵ装置に関するレジスタ書きこみ時の解除コード生成部の動作を表すフローチャートである。
【図８】本発明の第４の実施の形態に基づくＣＰＵ装置の基本構成を表すブロック図である。
【図９】本実施例の第４の実施の形態に基づく解除コード生成部のブロック図である。
【図１０】本実施例の第４の実施の形態に基づくＣＰＵ装置に関するレジスタ書きこみ時の解除コード生成部の動作を示すフローチャートである。
【符号の説明】
【００７７】
１１              ＣＰＵ
１２              解除コード記憶部
１３              解除コード書込部
１４              レジスタ
１５              バス
１６              タイマ
１７、１７ｂ      解除コード生成部
１８              タイマ
１９              シフトレジスタ
２０              タイマ
【図１】
2005122540.tif 000003
【図２】
2005122540.tif 000004
【図３】
2005122540.tif 000005
【図４】
2005122540.tif 000006
【図５】
2005122540.tif 000007
【図６】
2005122540.tif 000008
【図７】
2005122540.tif 000009
【図８】
2005122540.tif 000010
【図９】
2005122540.tif 000011
【図１０】
2005122540.tif 000012