(57)【要約】【課題】既にデータが書き込まれたメモリ領域に誤ってデータを書き込むことを防止するデータ処理装置、メモリ制御回路、メモリ制御方法を提供する。【解決手段】データ処理装置（１０）は、メモリ（１６）と、付加ビット生成部（３１）と、書き込み状態判定部（３２）とを具備する。付加ビット生成部（３１）は、メモリ（１６）の指定されたアドレスに書き込む書き込み期待値に基づいて、書き込み期待値に付加する付加ビットを生成する。この付加ビットと書き込み期待値とは、書き込みデータとしてメモリ（１６）に供給されてアドレスのメモリセルに格納される。書き込み状態判定部（３２）は、指定されたアドレスのメモリセルが保持する格納データを読み出して、書き込み状態を判定する。このメモリ（１６）は、不揮発性メモリであるフラッシュメモリであることが好ましい。【選択図】図３
2010079686.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリの指定されたアドレスに書き込む書き込み期待値に基づいて、前記書き込み期待値に付加する付加ビットを生成する付加ビット生成部と、前記付加ビットと前記書き込み期待値とは書き込みデータとして前記メモリに供給されて前記アドレスのメモリセルに格納され、
前記アドレスの前記メモリセルが保持する格納データを読み出して、書き込み状態を判定する書き込み状態判定部と
を具備する
データ処理装置。
【請求項２】
全ての前記メモリセルは、初期設定時に消去状態を示す第１値に設定され、前記第１値または前記第１値を反転した書き込み状態を示す第２値を保持し、
前記書き込み状態判定部は、前記格納データに含まれるいずれかのビットが前記第２値を示すとき、書き込み済みと判定する
請求項１に記載のデータ処理装置。
【請求項３】
前記書き込み状態判定部は、前記書き込みデータを前記アドレスの前記メモリセルに格納する前に前記書き込み状態を判定し、書き込み済みのとき前記書き込みデータの格納を中止する
請求項２に記載のデータ処理装置。
【請求項４】
前記付加ビット生成部は、前記書き込み期待値の全てのビットの値が前記第１値である場合に、前記第２値を含む前記付加ビットを生成する
請求項２または請求項３に記載のデータ処理装置。
【請求項５】
前記付加ビット生成部は、全ての前記書き込み期待値に対応して前記第２値を含む前記付加ビットを生成する
請求項２または請求項３に記載のデータ処理装置。
【請求項６】
前記付加ビット生成部は、前記書き込み期待値に対する誤り検出符号を示す値を含む前記付加ビットを生成する
請求項２または請求項３に記載のデータ処理装置。
【請求項７】
前記付加ビット生成部は、誤り訂正符号を含む前記書き込み期待値の全てのビットの値が前記第１値である場合に、前記第２値を含む前記付加ビットを生成する
請求項２または請求項３に記載のデータ処理装置。
【請求項８】
前記メモリは、前記書き込み期待値のビット幅に前記付加ビットのビット幅を加えたビット幅を備えるフラッシュメモリである
請求項１から請求項７のいずれかに記載のデータ処理装置。
【請求項９】
メモリの指定されたアドレスに書き込む書き込み期待値に基づいて、前記書き込み期待値に付加する付加ビットを生成する付加ビット生成部と、前記付加ビットと前記書き込み期待値とは書き込みデータとして前記メモリに供給されて前記アドレスのメモリセルに格納され、
前記アドレスの前記メモリセルが保持する格納データを読み出して、書き込み状態を判定する書き込み状態判定部と
を具備する
メモリ制御回路。
【請求項１０】
全ての前記メモリセルは、初期設定時に消去状態を示す第１値に設定され、前記第１値または前記第１値を反転した書き込み状態を示す第２値を保持し、
前記書き込み状態判定部は、前記格納データが前記第２値のビットを含むとき、書き込み済みと判定する
請求項９に記載のメモリ制御回路。
【請求項１１】
前記書き込み状態判定部は、前記書き込みデータを前記アドレスの前記メモリセルに格納する前に前記書き込み状態を判定し、書き込み済みのとき前記書き込みデータの格納を中止する
請求項１０に記載のメモリ制御回路。
【請求項１２】
前記付加ビット生成部は、前記書き込み期待値の全てのビットの値が前記第１値である場合に、前記第２値を含む前記付加ビットを生成する
請求項１０または請求項１１に記載のメモリ制御回路。
【請求項１３】
前記付加ビット生成部は、全ての前記書き込み期待値に対応して前記第２値を含む前記付加ビットを生成する
請求項１０または請求項１１に記載のメモリ制御回路。
【請求項１４】
前記付加ビット生成部は、前記書き込み期待値に対する誤り検出符号を示す値を含む前記付加ビットを生成する
請求項１０または請求項１１に記載のメモリ制御回路。
【請求項１５】
前記付加ビット生成部は、誤り訂正符号を含む前記書き込み期待値の全てのビットの値が前記第１値である場合に、前記第２値を含む前記付加ビットを生成する
請求項１０または請求項１１に記載のメモリ制御回路。
【請求項１６】
メモリに含まれる全てのメモリセルに消去状態を示す第１値を初期設定するステップと、
前記メモリの指定されたアドレスに書き込む書き込み期待値に基づいて、前記書き込み期待値に付加する付加ビットを生成するステップと、
前記書き込み期待値と前記付加ビットとを前記メモリに供給して前記アドレスのメモリセルに格納するステップと、
前記格納するステップに先立ち前記アドレスの前記メモリセルが保持する格納データを読み出して書き込み状態を判定するステップと
を具備する
メモリ制御方法。
【請求項１７】
前記判定するステップは、前記格納データに含まれるいずれかのビットが前記第１値を反転した書き込み状態を示す第２値を示すとき、書き込み済みと判定するステップを備える
請求項１６に記載のメモリ制御方法。
【請求項１８】
前記判定するステップにおいて、書き込み済みと判定された場合、前記格納するステップは、前記アドレスのメモリセルに格納することなく前記書き込み期待値と前記付加ビットとを前記メモリに供給するステップを含む
請求項１７に記載のメモリ制御方法。
【請求項１９】
前記生成するステップは、前記書き込み期待値の全てのビットの値が前記第１値である場合に、前記第２値を含む前記付加ビットを生成するステップを含む
請求項１７または請求項１８に記載のメモリ制御方法。
【請求項２０】
前記生成するステップは、全ての前記書き込み期待値に対応して前記第２値を含む前記付加ビットを生成するステップを含む
請求項１７または請求項１８に記載のメモリ制御方法。
【請求項２１】
前記生成するステップは、前記書き込み期待値に対する誤り検出符号を示す値を含む前記付加ビットを生成するステップを含む
請求項１７または請求項１８に記載のメモリ制御方法。
【請求項２２】
前記付加ビット生成部は、誤り訂正符号を含む前記書き込み期待値の全てのビットの値が前記第１値である場合に、前記第２値を含む前記付加ビットを生成するステップを含む
請求項１７または請求項１８に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理装置に内蔵されるメモリのメモリ制御回路およびメモリ制御方法に関する。
【背景技術】
【０００２】
近年、フラッシュメモリ等の不揮発性メモリを搭載するデータ処理装置が多くなってきている。フラッシュメモリは、装置に実装した後にプログラム書き換えが可能である。そのため、フラッシュメモリを搭載した装置は、仕様変更や不具合発生時のソフトウェア変更等に柔軟に対応することができる。また、同じハードウェアを使ったソフトウェア変更による機種展開が容易になる。
【０００３】
また、１チップにマイクロコンピュータとフラッシュメモリとを搭載した集積回路の場合、ユーザプログラムによる内蔵フラッシュメモリの書き換えが可能であるため、内蔵フラッシュメモリをあたかもＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ａｎｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）のように使用するＥＥＰＲＯＭエミュレーションを実現することができる。この機能を活用することにより、外部にＥＥＰＲＯＭを接続すること無く、データの保持、書き換えができるため、装置のコストダウンと省スペース化、機能向上を図ることができる。
【０００４】
このように、メモリを備え、ソフトウェアにより動作するデータ処理装置は、ハードウェア故障やプログラムミス等により意図しないアドレスのメモリセルにデータを書き込んでしまうことがある。そのメモリセルに既にデータが書き込まれていた場合、メモリに保持する内容が書き換わるため、システムに重大な影響を与えることになる。
【０００５】
誤書き込みを防止する方法は、例えば、特開２００４−０６２９７８号公報、特開２００４−０３９１２７号公報等に開示される。これらの方法では、ブロック単位に書き込み禁止等を示すフラグが、フラッシュメモリ内の専用のセクタに設定される。設定されたフラグに基づいて、書き換えが発生しないようにハードウェアによるプロテクトをかけるのが一般的である。したがって、データの書き込み先のアドレスが、書き込み禁止になっているブロックに含まれると、書き込みコマンドがキャンセルされる。この方法では、意図しない書き込み先が書き込みを許可されたブロックに含まれていれば、書き込みが行われる。例えば、書き込みアドレスを歩進しながら順にデータを書き込む場合に、何らかの要因でメモリの書き込みアドレスが歩進されない状況になると、書き込みを終了したメモリセルに次のデータを上書きしてしまうことになる。
【０００６】
また、ＷＯ０１／０６１５０３号公報には、実行不可能なデータの変更を行おうとした場合に起こる書き込みエラーの発生を防ぐ方法が開示されている。しかし、この方法では、書き込み対象データと書き込みアドレスの元のデータとの組み合わせによって、書き込める場合と書き込めない場合があり、意図しないアドレスのメモリセルに対するデータの書き込みを防止することはできない。
【０００７】
【特許文献１】特開２００４−０６２９７８号公報
【特許文献２】特開２００４−０３９１２７号公報
【特許文献３】ＷＯ０１／０６１５０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、既にデータが書き込まれたメモリ領域に誤ってデータを書き込むことを防止するデータ処理装置、メモリ制御回路、メモリ制御方法を提供する。
【課題を解決するための手段】
【０００９】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１０】
本発明の観点では、データ処理装置（１０）は、メモリ（１６）と、付加ビット生成部（３１）と、書き込み状態判定部（３２）とを具備する。付加ビット生成部（３１）は、メモリ（１６）の指定されたアドレスに書き込む書き込み期待値に基づいて、書き込み期待値に付加する付加ビットを生成する。この付加ビットと書き込み期待値とは、書き込みデータとしてメモリ（１６）に供給されてアドレスのメモリセルに格納される。書き込み状態判定部（３２）は、指定されたアドレスのメモリセルが保持する格納データを読み出して、書き込み状態を判定する。このメモリ（１６）は、不揮発性メモリであるフラッシュメモリであることが好ましい。
【００１１】
本発明の他の観点では、メモリ制御回路（１４）は、付加ビット生成部（３１）と、書き込み状態判定部（３２）とを具備する。付加ビット生成部（３１）は、
メモリの指定されたアドレスに書き込む書き込み期待値に基づいて、書き込み期待値に付加する付加ビットを生成する。生成された付加ビットと書き込み期待値とは、書き込みデータとしてメモリ（１６）に供給されてアドレスのメモリセルに格納される。書き込み状態判定部（３２）は、指定されたアドレスのメモリセルが保持する格納データを読み出して、書き込み状態を判定する。
【００１２】
また、本発明の他の観点では、メモリ制御方法は、初期設定するステップと、生成するステップと、格納するステップと、判定するステップとを具備する。初期設定するステップでは、メモリ（１６）に含まれる全てのメモリセルは、消去状態を示す第１値に初期設定される。生成するステップでは、メモリ（１６）の指定されたアドレスに書き込む書き込み期待値に基づいて、書き込み期待値に付加される付加ビットが生成される。格納するステップでは、書き込み期待値と付加ビットとがメモリ（１６）に供給されて指定されるアドレスのメモリセルに格納される。判定するステップでは、格納するステップに先立ち、指定されるアドレスのメモリセルが保持する格納データが読み出されて書き込み状態が判定される。
【発明の効果】
【００１３】
本発明によれば、既にデータが書き込まれたメモリ領域に誤ってデータを書き込むことを防止するデータ処理装置、メモリ制御回路、メモリ制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の実施の形態に係るデータ処理装置の構成を示すブロック図である。データ処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、入出力部（Ｉ／Ｏ）１２、フラッシュ制御部１４、フラッシュメモリ１６、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１７を備える。ＣＰＵ１１は、フラッシュメモリ１６に格納されるプログラムコードを実行する。また、ＣＰＵ１１は、フラッシュ制御部１４を起動してフラッシュメモリ１６にデータを書き込む。入出力部１２は、外部からデータを取り込み、処理されたデータを外部へ出力する。フラッシュ制御部１４は、フラッシュメモリ１６へのデータの書き込み及び読み出しを制御する。ＲＡＭ１７は、一時データ等を格納するワーク領域として使用される。
【００１５】
ＣＰＵ１１、入出力部１２、フラッシュ制御部１４、ＲＡＭ１７は、バスを介してデータを授受する。なお、ＣＰＵ１１は、例えば３２ビット単位でフラッシュメモリ１６への書き込みデータを指定する。フラッシュメモリ１６は、そのデータ幅より広い例えば３３ビットのビット幅を有する。即ち、フラッシュ制御部１４は、例えば３３ビットのビット幅を書き込み単位としてフラッシュメモリ１６にデータを書き込み、そのビット幅でフラッシュメモリ１６からデータを読み出す。また、フラッシュメモリ１６には、頻繁に書き換わるようなデータは格納されない。即ち、フラッシュメモリ１６は、プログラムコードのような上書きされないデータを格納する。
【００１６】
ここでは、誤書き込みを防止するメモリとして不揮発性メモリであるフラッシュメモリ１６を例示するが、ＥＥＰＲＯＭやその他のメモリであってもよい。また、フラッシュメモリには、消去状態において、メモリセルの出力電圧が高いものと低いものとがある。ここでは、データが消去されると、出力電圧が高くなるフラッシュメモリの場合を例示する。したがって、このフラッシュメモリ１６は、消去状態のメモリセルは“１”、書き込み状態のメモリセルは“０”を示すものとして説明する。即ち、“１”を示す消去状態のメモリセルに“０”を示すデータが書き込まれて書き込み状態“０”のメモリセルに変わる。書き込み状態“０”のメモリセルに“１”を示すデータを書き込もうとしても状態は変わらない。メモリセルを消去状態“１”にするには、消去動作によりブロック単位に全てのビットを消去状態にする必要がある。
【００１７】
フラッシュ制御部１４は、図２に示されるように、アドレスポインタ２１、書き込みデータバッファ２２、書き込み結果モニタレジスタ２３、書き込み制御部２５を備える。ここでは、フラッシュ制御部１４の書き込み動作を説明するため、読み出し動作及び消去動作に関連する部分の図示及び説明は省略される。
【００１８】
アドレスポインタ２１は、ＣＰＵ１１から指示されるフラッシュメモリ１６の書き込みアドレスを保持し、フラッシュメモリ１６に供給する。書き込みデータバッファ２２は、ＣＰＵ１１から指示されるフラッシュメモリ１６に書き込む書き込み期待値を保持し、書き込み制御部２５に供給する。書き込み結果モニタレジスタ２３は、書き込み制御部２５から出力されるベリファイ判定結果と、書き込み判定結果とをＣＰＵ１１からモニタできるように保持する。書き込み制御部２５は、書き込みデータバッファ２２から供給される書き込み期待値に基づいて、付加ビットを付与した書き込みデータをフラッシュメモリ１６に供給する。また、書き込み制御部２５は、フラッシュメモリ１６からベリファイデータを取り込み、アドレスポインタ２１で示されるアドレスにデータが書き込めたか否かを示すベリファイ判定結果及びそのアドレスが書き込み済みであるか否かを示す書き込み判定結果を書き込み結果モニタレジスタ２３に供給する。アドレスポインタ２１、書き込みデータバッファ２２、書き込み結果モニタレジスタ２３、書き込み制御部２５の動作は、フラッシュ制御部１４の図示されないシーケンサによって制御される。
【００１９】
書き込み制御部２５は、図３に示されるように、付加ビット生成部３１、書き込み状態判定部３２、データコンパレータ３５を備える。書き込みデータバッファ２２から供給される書き込み期待値は、ビット０からビットｎ−１までのｎビットのデータである。書き込み期待値は、書き込みデータのビット０からビットｎ−１としてフラッシュメモリ１６に供給されるとともに、データコンパレータ３５及び付加ビット生成部３１に供給される。付加ビット生成部３１は、書き込み期待値に基づいて、書き込みデータのビットｎを生成し、フラッシュメモリ１６及びデータコンパレータ３５に供給する。したがって、フラッシュメモリ１６には、ｎ＋１ビットの書き込みデータが供給される。
【００２０】
フラッシュメモリ１６は、ｎ＋１ビットのデータを一度に書き込むことができるビット幅を有する。フラッシュメモリ１６にデータを書き込む場合、書き込み後にフラッシュメモリ１６から読み出し、書き込み期待値と一致しているかを判定する。この動作をベリファイと呼ぶ。フラッシュメモリ１６から読み出されたデータであるベリファイデータは、ビット０からビットｎまでのｎ＋１ビットのデータである。
【００２１】
ｎ＋１ビットのベリファイデータは、データコンパレータ３５に入力され、書き込み期待値と比較される。ベリファイデータと書き込み期待値とが一致していれば、書き込み動作は完了する。不一致であれば、再度書き込みを所定の回数まで繰り返すことがフラッシュメモリでは一般的である。ここでは、説明を簡単にするため、再書き込みは行わず、不一致であれば、書き込み失敗としてエラー処理を行うことにする。
【００２２】
本発明では、データの書き込み前にこのベリファイ動作を利用して、書き込みアドレスで示されるメモリセルが書き込み状態であるか判定する。即ち、データ書き込みの指示があると、書き込み制御部２５は、まず書き込み前のベリファイを行って、フラッシュメモリ１６から書き込みアドレスで示されるメモリセルから格納されているデータを読み出す。書き込み状態判定部３２は、読み出されたベリファイデータに書き込み状態“０”になっているビットを検出すると、書き込み済みを示す書き込み判定結果を出力し、全てのビットが消去状態“１”であれば、書き込み可能（未書き込み）を示す書き込み判定結果を出力する。
【００２３】
書き込み判定結果が書き込み済みを示す場合、書き込み済みのメモリセルに新たなデータを上書きする指示が出されたということである。書き込み期待値の全てのビットが“１”である場合、付加ビットがないと、消去状態と同じデータであり、区別がつかない。本発明では、書き込み期待値の全てのビットが“１”で消去状態と同じであっても、付加ビットを書き込み状態することにより、区別することができる。即ち、読み出したデータの書き込み期待値に対応するビットが全て消去状態であっても、付加ビットが書き込み状態であれば、そのアドレスには全てのビットが“１”であるデータが格納されていることを示す。付加ビットも含めて全てのビットが消去状態のときにそのアドレスは消去状態であることを示す。
【００２４】
付加ビット生成部３１は、図４に示されるように、ＮＡＮＤ回路４１であってもよい。ＮＡＮＤ回路４１は、書き込み期待値の全てのビットが“１”の場合に付加ビットｎとして“０”を出力する。書き込み期待値のいずれかのビットが“０”の場合、ＮＡＮＤ回路４１は、付加ビットｎとして“１”を出力する。したがって、どのような書き込み期待値の場合にも、書き込みデータｎ＋１ビットのうちの少なくとも１ビットが書き込み状態を示す“０”となる。
【００２５】
書き込み状態判定部３２は、図４に示されるように、ＮＡＮＤ回路４２であってもよい。フラッシュメモリ１６から読み出されたベリファイデータのｎ＋１ビットのうちの少なくとも１ビットが書き込み状態の“０”を示すと、ＮＡＮＤ回路４２は、書き込み済みを示す“１”を書き込み判定結果として出力する。ベリファイデータの全てのビットが消去状態“１”である場合、ＮＡＮＤ回路４２は、未書き込みを示す“０”を書き込み判定結果として出力する。
【００２６】
また、付加ビット生成部３１は、図５Ａに示されるように、書き込み前のベリファイであるか否かを示す書き込みフラグに基づいて出力値を変えるようにした付加ビット生成部３１１であってもよい。付加ビット生成部３１１は、図５Ｂに示されるように、ＮＡＮＤ回路４４によって実現可能である。書き込みフラグは、“１”の場合にデータの書き込み動作または書き込み後のベリファイ動作を示し、“０”の場合に書き込み前のベリファイ動作を示す。書き込みフラグが“１”であれば、書き込み期待値の全てのビットが“１”の場合にＮＡＮＤ回路４４は、“０”を出力し、書き込み状態を示すように書き込みデータの付加ビットｎをフラッシュメモリ１６に供給する。また、書き込み後のベリファイ時には、ＮＡＮＤ回路４４の出力は、データコンパレータ２５に供給されて書き込み状態であるか否かの判定に使われる。書き込みフラグが“０”であれば、ＮＡＮＤ回路４４は、書き込み期待値の如何に関わらず“１”をデータコンパレータ２５に出力する。したがって、ＮＡＮＤ回路４４の出力は、ベリファイデータの付加ビットｎが消去状態であるか否かの判定に使われる。
【００２７】
このように、書き込み前のベリファイと、書き込み時或いは書き込み後のベリファイとで付加ビット生成部３１１の出力を変えることにより、データコンパレータ３５は、書き込み状態判定部３２を兼用することができる。即ち、書き込み前のベリファイ時に、書き込みバッファ２２に全てのビットが消去状態を示すデータが設定される。データコンパレータ３５は、書き込み状態判定部３２として、設定されたアドレスのメモリセルが既に書き込み期待値を設定された（データを格納している）メモリセルであるか否かを判定する。書き込み後のベリファイでは、書き込みデータバッファ２２には書き込み期待値が格納される。データコンパレータ３５は、書き込み期待値および付加ビットがメモリセルに書き込むことができたか否かを判定する。データコンパレータ３５が書き込み状態判定部３２の代わりに動作することにより、書き込み状態判定部３２を別に設ける必要がなくなる。
【００２８】
また、図６に示されるように、付加ビットを利用して書き込み期待値に冗長性を持たせ、より信頼性を高めることもできる。ここでは、書き込み期待値に複数ビットの誤り訂正符号を付与して書き込みデータを生成する。書き込み期待値の全てのビットが“１”であっても、複数の付加ビットのいくつかのビットが“０”であれば、上述のように、該当アドレスに全てのビットが“１”であるデータを格納しているのか、消去状態であってデータを書き込みされていないのかを判定することができる。誤り訂正符号の場合、フラッシュメモリ１６からの読み出しの際に、誤り検出及び訂正処理を行うが、ここでは説明を省略する。また、複数の付加ビットではなく、パリティビットを１ビット付与してもよい。その場合、偶数パリティであれば、書き込み期待値の全てのビットが“１”であっても、パリティビットが“０”となって書き込み状態を判定することができる。なお、書き込み期待値は、一般に２ｎビットのビット幅を有し、８ビット、１６ビットあるいは３２ビットのビット幅であることが多い。
【００２９】
次に、図７を参照して、フラッシュ制御部１４の動作を説明する。
【００３０】
フラッシュメモリ１６にデータを書き込む場合、まず、そのデータの書き込み先、即ち書き込み対象アドレスがアドレスポインタ２１に設定される（ステップＳ１０）。アドレスポインタ２１は、書き込みアドレスをフラッシュメモリ１６に供給する。
【００３１】
書き込み前のベリファイを行うための所定の値が書き込みデータバッファ２２に設定される（ステップＳ１２）。図４、図６に示されるように、書き込み状態の判定のためにデータコンパレータ３５が使われない場合、設定される値は限定されない。図５Ａに示されるように、データコンパレータ３５が書き込み状態を判定する場合、書き込みデータバッファ２２に設定される値は、フラッシュメモリ１６の消去状態を示す値でなければならない。ここでは、消去状態のとき、メモリセルは“１”を示すため、付加ビットを含めて全てのビットが“１”であるデータが設定される。
【００３２】
次に、書き込み前のベリファイを行うため、フラッシュメモリ１６からベリファイデータが書き込み状態判定部３２、データコンパレータ３５に読み出される（ステップＳ１４）。書き込み状態判定部３２は、ベリファイデータの全てのビットが“１”であるか否かによって書き込み状態を判定する。
【００３３】
ベリファイデータのいずれかのビットが“０”である場合、書き込み判定部３２は、そのアドレスには既に書き込み済みで、何らかの値を保持していると判定し（ステップＳ１６−ＹＥＳ）、書き込み判定結果として“書き込み済み”を出力する（ステップＳ２０）。書き込み制御部２５が出力する書き込み判定結果は、書き込み結果モニタレジスタ２３を介してＣＰＵ１１に通知される。書き込み済み領域にデータを書き込む動作が指示されたということは、ハードウェアの故障或いはソフトウェアのバグが疑われるため、ＣＰＵ１１は例外処理を行うことが好ましい。
【００３４】
ベリファイデータの全てのビットが“１”であれば、書き込み判定部３２は、そのアドレスにはデータが未書き込みであると判定し、書き込み判定結果として“書き込み可”を出力する（ステップＳ１６−ＮＯ）。
【００３５】
指定のアドレスのメモリセルが書き込み可であることが確認できると、書き込みデータバッファ２２に書き込み期待値が設定される（ステップＳ２２）。付加ビット生成部３１は、書き込み期待値に基づいて付加ビットデータを生成し、書き込みデータがフラッシュメモリ１６へ供給される。書き込み期待値の全てのビットが“１”の場合、付加ビットデータが“０”を示すビットを含む。その後、アドレスポインタ２１によって指定されるメモリセルに書き込みデータが書き込まれる（ステップＳ２４）。
【００３６】
書き込みが終了すると、フラッシュメモリ１６からデータを読み出し、書き込みデータがきちんと書き込まれたか確認する書き込み後のベリファイが行われる（ステップＳ２６）。データコンパレータ３５は、書き込み期待値及び付加ビットとベリファイデータとを比較し、ベリファイ判定結果を出力する。書き込み期待値及び付加ビットとベリファイデータとの一致が確認されると（ステップＳ３０−ＹＥＳ）、書き込み制御部２５は、書き込み動作を終了する。書き込み期待値及び付加ビットとベリファイデータとが一致しない場合（ステップＳ３０−ＮＯ）、書き込み制御部２５は、ベリファイ判定結果として書き込み失敗を出力し、書き込み動作を終了する。なお、フラッシュメモリへのデータ書き込みは、数度のリトライが行われることが多いが、ここでは省略する。
【００３７】
上述では、書き込み期待値に基づいて付加ビットデータの値を決定したが、付加ビットを単に書き込みを示すビットとしてもよい。即ち、書き込み期待値に関わらず付加ビットを“０”として書き込み動作を行ってもよい。但し、付加ビットに対応するメモリセルは、データ書き込みよって毎回書き込み状態になることに注意する必要がある。また、誤り訂正符号等の冗長ビットを含むデータを書き込み期待値として、書き込み済みを示す付加ビットを付与するように構成されてもよい。誤り訂正符号等の方式に左右されずに書き込み済みを検出することができる。
【００３８】
上述の書き込み制御は、ソフトウェアにより実現してもよい。また、本発明は、フラッシュメモリ等の不揮発性メモリに適用することが好ましいが、不揮発性メモリに限定されることはない。データの上書きを禁止するＲＡＭに適用することも可能である。その場合、メモリを初期設定するために、上書きを禁止する機能を一時停止する機構を備えることが好ましい。
【００３９】
このように、本発明によれば、メモリに書き込まれているデータが如何なる値であっても書き込み済みか否かを判定することができ、書き込み済みのデータに他のデータが上書きされることを防止することができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の形態に係るデータ処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係るフラッシュ制御部の構成を説明するブロック図である。
【図３】本発明の実施の形態に係る書き込み制御部の構成を示す図である。
【図４】本発明の実施の形態に係る書き込み制御部の構成例を説明する図である。
【図５Ａ】本発明の実施の形態に係る書き込み制御部の構成例を説明する図である。
【図５Ｂ】本発明の実施の形態に係る付加ビット生成部の構成例を説明する図である。
【図６】本発明の実施の形態に係る書き込み制御部の構成例を説明する図である。
【図７】本発明の実施の形態に係るフラッシュ制御部の動作を説明する図である。
【符号の説明】
【００４１】
１０  データ処理装置
１１  ＣＰＵ
１２  入出力部
１４  フラッシュ制御部
１６  フラッシュメモリ
１７  ＲＡＭ
２１  アドレスポインタ
２２  書き込みデータバッファ
２３  書き込み結果モニタレジスタ
２５  書き込み制御部
３１  付加ビット生成部
３２  書き込み状態判定部
３５  データコンパレータ
４１、４２、４４  ＮＡＮＤ回路
３１１  付加ビット生成部
３１２  ＥＣＣ生成部
【図１】
2010079686.tif 000003
【図２】
2010079686.tif 000004
【図３】
2010079686.tif 000005
【図４】
2010079686.tif 000006
【図５Ａ】
2010079686.tif 000007
【図５Ｂ】
2010079686.tif 000008
【図６】
2010079686.tif 000009
【図７】
2010079686.tif 000010