JP2007104708A - データ処理方法 - Google Patents

データ処理方法 Download PDF

Info

Publication number
JP2007104708A
JP2007104708A JP2006318039A JP2006318039A JP2007104708A JP 2007104708 A JP2007104708 A JP 2007104708A JP 2006318039 A JP2006318039 A JP 2006318039A JP 2006318039 A JP2006318039 A JP 2006318039A JP 2007104708 A JP2007104708 A JP 2007104708A
Authority
JP
Japan
Prior art keywords
data
bit
ecc code
ecc
program
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.)
Pending
Application number
JP2006318039A
Other languages
English (en)
Inventor
Naoki Yada
直樹 矢田
Eiichi Ishikawa
栄一 石川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Renesas Semiconductor Package and Test Solutions Co Ltd
Original Assignee
Renesas Technology Corp
Renesas Northern Japan Semiconductor Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp, Renesas Northern Japan Semiconductor Inc filed Critical Renesas Technology Corp
Priority to JP2006318039A priority Critical patent/JP2007104708A/ja
Publication of JP2007104708A publication Critical patent/JP2007104708A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】ソフトウェアによるECC処理を能率的に行うための技術を提供する。
【解決手段】nビットのデータに対してECCコードをmビットとするとき、mビットの相互に異なる2進数をm+n列に並べた行列テーブルをフラッシュメモリの記憶領域(20Bb)に固定データとして形成し、ECCコード生成プログラムの処理にその行列テーブルを参照させる。ECCコードの生成において、データの論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値をECCコードとし、データにECCコードを付加してm+nビットの符号語を生成する。
【選択図】図3

Description

本発明は、不揮発性メモリに対する書換え保証回数を改善する技術に関し、例えば電気的に書き換え可能なフラッシュメモリを内蔵するマイクロコンピュータに適用して有効な技術に関する。
フラッシュメモリなどの電気的に書き換え可能な不揮発性メモリ(以下単にフラッシュメモリとも称する)はメモリセルにプログラムされる閾値電圧の相違に応じて情報を記憶する。閾値電圧の相違はフローティングゲートが保有する電子又は正孔の量の違いによって得られる。斯くフラッシュメモリセルの電子又は正孔の保持性能は書換え回数の増加と共に劣化する。したがって、記憶情報の信頼性という観点から、通常、フラッシュメモリの使用には有限の書換え保証回数が考慮される。
例えば100回程度の書換え保証回数に対してそれを上回る書換えを可能にするには、100回の書換え回数毎に、フラッシュメモリの記憶エリアを順次切換え制御して対処することが可能であるが、そのためには、実使用容量に対して数10〜数1000倍にも及ぶ大きな記憶容量が必要になってしまう。
フラッシュメモリの書換え保証回数を改善するには、デバイス的手法として、ゲート酸化膜を厚くして電子又は正孔の保持性能を上げることが可能である。また、回路的な手法としてECC(エラー・チェック・アンド・コレクト)回路を採用することが可能である。特許文献1には、1チップマイクロコンピュータに内蔵のEEPROMにECCを適用した技術が示される。
特開平11−296392号公報
しかしながら、前記ゲート酸化膜を厚くすることによる書換え保証回数の改善には限界が有り、しかも書き込み時間の大幅な増大が予想される。
また、フラッシュメモリにハードウェアでECC機能を付加する場合には、ECCコードの生成回路と、ECCコード付加データに対する誤り判定及び訂正の回路が設けられる。しかしながら、その場合には、ECC用のハードウェアによってチップ面積が増える。その上、必然的に全てのデータに対してECCコードを付加してデータ記憶を行なうことになるので、それに応じてフラッシュメモリ自体の記憶容量も大きくされることになる。特開平11−296392号公報記載の技術はECCコードの生成をCPUのファームROMを用いてソフトウェアで行なうことにより、その分の専用ハードウェアは削減されている。一方、ECCコード付加データに対する誤り判定及び訂正を行なうハードウェア回路は依然設けられている。しかも、全ての記憶データに対してECCコードを付加してデータ記憶が行なわれるようになっている。
特に本発明者は、組込み機器制御用途のマイクロコンピュータ等におけるフラッシュッメモリの利用形態を考慮した。例えば、フラッシュメモリには、比較的書換え回数の少ないデータとして例えば、回路特性調整用のトリミングデータ、参照用のテーブルデータ、プログラムデータが記憶される。さらにその他に、機器の状態に応じたパラメータデータのような頻繁に書き換えることが必要なデータもフラッシュメモリに記憶されることがある。一つのフラッシュメモリにそれらデータを混在させようとするとき、従来の技術では全てのデータに対してECCコードが付加されるため、記憶エリアの利用効率が著しく悪化してしまう。頻繁に書き換えるべきデータ量が少ない場合には特に記憶エリアの利用効率の低下が顕著となるであろう。不揮発性メモリの記憶容量が増大する傾向にあるとき、本発明者は一部の記憶領域だけをECCの対象にするという観点の有用性を見出した。
また、フラッシュメモリのメモリセル特性はプロセスばらつきの影響を受けるので、同じ書換え回数でも読み出しエラーを生じ易いメモリセルと生じ難いメモリセルがある。本発明者は、そのメモリセル特性の個体差に着目して、データビット数に対するECCコードのビット数をフラッシュメモリの特性に応じて決定できるようにすることの有用性を見出した。要するに、一定の書換え保証回数を得るのに、メモリセルのデバイス特性に合ったECC方式を選択できるようにして、データに対するECCコードのオーバヘッドを小さくして記憶領域の利用効率を最大限とすることの有用性を見出した。本発明者の検討によれば、このECC方式の選択という融通性は、ECCコードの生成又は誤り検出及び訂正をハードウェアで行なう場合には容易に実現し難いということが明らかにされた。
本発明の目的は、誤り訂正情報例えばECCコードによる記憶領域の利用の無駄を省いて記憶情報の信頼性を向上させることが可能なデータ処理システムを提供することにある。
本発明の別の目的は、ECCコードによる記憶領域の利用の無駄を省いて記憶情報の書換え保証回数を向上させることが可能なデータ処理システムを提供することにある。
本発明の更に別の目的は、デバイスの特性に合ったECC方式を選択できるようにして、データに対するECCコードのオーバヘッドを小さくして記憶領域の利用効率を最大限とすることが可能なデータ処理システムを提供することにある。
本発明の更に別の目的は、ECCコードが付加されたデータに対する誤り判定及び訂正の処理によるデータリード動作の遅延を最小限にすることが可能なデータ処理システムを提供することにある。
本発明のその他の目的は、ECCコードの生成を効率的に行なうことができるデータ処理方法を提供することにある。
本発明のその他の目的は、ECCコードが付加されたデータの誤り判定を効率的に行なうことができるデータ処理方法を提供することにある。
本発明のその他の目的は、電気的に消去及びプログラム可能な不揮発性メモリのアドレス空間の一部のアドレス領域の書き換え回数をソフトウェア的処理によって向上することが可能なデータ処理システムないしデータ処理方法を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
〔1〕データ処理システムは、書き換え可能な不揮発性メモリ(フラッシュメモリ)と、中央処理装置(CPU)とを有し、前記中央処理装置は、所定の処理(プログラム)を実行し、前記不揮発性メモリのアドレス空間内の指定された一部の記憶領域(20Ba)の書換え保証回数を当該不揮発性メモリのアドレス空間内のその他の記憶領域の書換え保証回数よりも向上させる処理が可能である。前記所定のプログラムの実行による処理は、前記指定された一部の記憶領域に対するライトデータに誤り訂正情報(ECCコード)を生成して付加する処理であり、前記不揮発性メモリの指定された一部の記憶領域からのリードデータに対しECCコードによる誤り判定と誤り訂正を行なう処理である。前記一部の記憶領域の指定は例えばユーザプログラムによって行なわれる。
上記より、不揮発性メモリの指定された一部の記憶領域に格納されたデータに対するアクセスだけを対象として、ECCコードの付加や誤り訂正を行なって書換え保証回数を向上させる。前記指定された一部の記憶領域には書換えの頻繁なパラメータデータが格納され、他の記憶領域には書換え頻度の低いプログラムデータなどが格納される。したがって、当該他の記憶領域に格納されるデータにはECCコードが付加されない。この構成は、記憶領域に拘わらず全てのライトデータに対して区別なくECCコードを付加する構成に比べて、実質的に無用のECCコードによる記憶領域の無駄な利用を省きながら記憶情報の信頼性を向上、若しくは記憶情報の書換え保証回数の向上を実現する。
ライトデータに対するECCコードの付加、並びにECCコードによる誤り判定及び訂正の処理を中央処理装置によるプログラム実行で実現するから、データビット数に対するECCコードのビット数の割合を定義するECC方式はプログラムの記述内容で選択できる。そのため、メモリセルのデバイス特性に合ったECC方式の選択が容易であり、データに対するECCコードのオーバヘッドを小さくできる。その結果記憶領域の利用効率を最大限とすることが可能になる。要するに、ソフトウェアによりエラー訂正効率を容易に変えることができるから、デバイスの能力に合ったエラー訂正方式を容易に選択することができる。観点を変えれば、これはECCコードのビット数から無駄を排除し、記憶エリアの有効利用を保証する。
前記データ処理システムは、1個の半導体チップに前記不揮発性メモリ及び中央処理装置が形成されたシングルチップのマイクロコンピュータとして実現することが可能である。一方、前記データ処理システムは、前記不揮発性メモリ及び中央処理装置が夫々別々の半導体チップに形成されたマルチチップ形態で実現してもよい。
中央処理装置が実行する前記所定のプログラムは、例えば、前記不揮発性メモリの指定された一部の記憶領域への書き込みデータに対してECCコードを生成するECCコード生成プログラムと、前記不揮発性メモリの指定された一部の記憶領域から読み出されたECCコード付加データに対するエラー判定とエラーの訂正を行なうエラー訂正プログラムである。
ECCによる符号化や誤り訂正の公知の手法では例えばハミングコードの検査行列を用い、誤り訂正ではリードデータとハミングコードの行列演算を積和演算などを用いて行なうことができる。ここでは、データをnビットとし、nビットのデータに対するECCコードをmビットとするとき、mビットの相互に異なる2進数をm+n列に並べた行列テーブルを記憶領域に形成し、前記ECCコード生成プログラム及びエラー訂正プログラムの処理にその行列テーブルを参照させる。
例えば、ECCコードの生成では、データの論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値をECCコードとし、データにECCコードを付加してm+nビットの符号語を生成する。エラー判定及びエラー訂正では、前記符号語の論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値が全ビット論理値“0”のときはエラー無と判定して前記符号語のnビットのデータを正規データとし、前記排他的論理和によって得られたmビットの値が1ビットでも論理値“1”のときはエラー有りと判定して、前記行列テーブルの列から、前記排他的論理和によって得られたmビットの2進数に一致する列を検索し、検索された列に対応される位置の符号語のビットを論理値反転して訂正し、訂正された符号語のnビットのデータを正規データとする。このエラー判定では積和演算と除算演算のような処理を要せず、積和演算器及び除算器を備えずともソフトウェアによるECC処理を能率的に行なうことが可能になる。
前記前記ECCコード生成プログラム及びエラー訂正プログラムは前記中央処理装置によってアクセス可能なマスクROMに保持させてよい。それらプログラムの保持に前記不揮発性メモリを利用する場合には、その他の記憶領域に保持させればよい。パラメータに比べてプログラムの書換え頻度は少ないから相対的に書換え保証回数の小さなその他の記憶領域に保持させれば充分である。要するに、劣悪な使用条件を除けば、書換え頻度の低い情報にECCコードを付加する実益は殆ど無いということである。
前記不揮発性メモリのその他の記憶領域に、消去動作が禁止された消去禁止領域(20A)と消去及び書き込みが許容された書換え許容領域(20B)とを割当てるとき、消去禁止領域に前記ECCコード生成プログラム及びエラー訂正プログラムを格納してよい。その場合には、一旦書き込まれたプログラムの書換えは原則不可能であるから、望ましくは、半導体集積回路化されたマイクロコンピュータのようなデータ処理装置の製造メーカが書き込むのがよい。そうであるなら、データとECCコードとのフォーマットは予め固定的に決定された方が望ましく、前記ECCコード生成プログラムは、ECCコードを生成した後、生成したECCコードとそれに対応するデータとを規定のフォーマットに従いECCコード付加データとして前記不揮発性メモリの一部の記憶領域に格納し、エラー訂正プログラムは前記規定のフォーマットに従ってECCコード付加データを認識すればよい。
また、前記ECCコード生成プログラム及びエラー訂正プログラムを前記書換え許容領域に保持させてもよい。この場合は、ユーザによるそれらプログラムの書き込みを想定する。したがって、データとECCコードとのフォーマットについてはユーザが作成したプログラムに依存した任意フォーマットであってもよい。製造メーカーがそれらプログラムを提供しようとする場合にもユーザの使い勝手を考慮すれば、C言語のような高級言語で記載されたソースプログラムで与えるのがよい。データとECCコードとを別々の配列として把握することも可能になる。
ECC処理速度を向上させる一つの手段として、ランダムアクセスメモリ(RAM)のアクセスサイクルが前記不揮発性メモリのアクセスサイクルより速い場合、前記不揮発性メモリから前記ECCコード生成プログラム及びエラー訂正プログラムをRAM転送し、前記中央処理装置には前記RAMに転送された前記ECCコード生成プログラム及びエラー訂正プログラムを実行させればよい。このとき、前記中央処理装置はリセットの指示に応答して前記不揮発性メモリから前記RAMに前記ECCコード生成プログラム及びエラー訂正プログラムを転送するとよい。
ECC処理速度を向上させる第2の手段として、前記中央処理装置によってアクセス可能なRAMを有し、前記中央処理装置はリセットの指示に応答して、前記不揮発性メモリの一部の記憶領域から順次ECCコード付加データを読み出し、読み出したECCコード付加データに対し、前記エラー訂正プログラムの実行により前記エラー判定とエラーの訂正を行い、前記エラー判定とエラーの訂正処理を経たデータを前記RAMに初期的にストアするとよい。その後、CPUはRAMから必要なデータをリードすればよく、リード動作に際してその都度エラー判定を行なうことを要しない。尚、CPUによる上記エラー訂正プログラムの実行する方法としては、上記不揮発性メモリから直接上記エラー訂正プログラムを読み込んで実行する方法又はRAMに転送された上記エラー訂正プログラムを読み込んで実行する方法のいずれかを採用することが可能である。
前記エラー訂正プログラムの実行による前記エラー判定処理において訂正不能なエラーが発生したき、誤動作防止の観点より、前記中央処理装置は、前記エラー訂正プログラムの実行による前記エラー判定処理において訂正不能なエラーの発生を示す情報を外部から認識可能にレジスタ(RER)、或いはメモリのフラグ領域(30)に保持させるとよい。ユーザプログラムを介してその領域を所定インターバル毎に参照すれば、訂正不能なエラー発生を認識でき、例えば、訂正不能なエラーを発生したデータブロックの書換え等を実行して対処することが可能になる。
また、前記中央処理装置は前記エラー訂正プログラムの実行によりエラー訂正可能なデータを検出した場合にも、それを示す情報を外部から認識可能に汎用レジスタやメモリのフラグ領域に保持させてよい。そのような情報は上記と同じくワーニング情報として利用すればよい。これにより、ユーザシステムは、データが壊れかけている、ということを逸早く認識することができ、壊れかけているデータの書換え(再書込み)を促してデータの信頼性を更に向上させることが可能になる。
〔2〕本発明の別の観点によるデータ処理システムは、演算制御装置のアドレス空間に書換え保証回数の低い第1記憶領域(20Bb)と、書換え保証回数の高い第2記憶領域(20Ba)とを有し、前記第1記憶領域は、前記第2記憶領域への書き込みデータに対してECCコードを生成するECCコード生成プログラムと、前記第2記憶領域から読み出されたECCコード付加データに対するエラー判定とエラーの訂正を行なうエラー訂正プログラムとを有し、前記演算制御装置は、前記第2記憶領域にデータを格納するとき、前記ECCコード生成プログラムを実行する。
この観点では、第2記憶領域に対する書き込み動作に対してだけECCコードをソフトウェアで生成するから、上記同様に、実質的に無用のECCコードによる記憶領域の無駄な利用を省きながら記憶情報の信頼性を向上、若しくは記憶情報の書換え保証回数の向上を実現することができる。更に、ライトデータに対するECCコードの付加をプログラム実行で実現するから、やはり、不揮発性メモリのメモリセルのデバイスの特性に合ったECC方式の選択が容易であり、データに対するECCコードのオーバヘッドが小さくでき、記憶領域の利用効率を最大限とすることが可能にある。
前記演算制御装置は、前記第2記憶領域からデータを読み出すとき、前記エラー訂正プログラムを実行する。
前記演算制御装置は、所定の動作モードに応答して前記エラー訂正プログラムを実行して前記第2記憶領域のデータを予めRAMに順次転送可能である。
前記第1記憶領域及び第2記憶領域は例えば電気的に書換え可能なフラッシュメモリである。ECCコード生成プログラム及びエラー訂正プログラムの書換えを考慮すると、書き込み消去プログラムを前記フラッシュメモリに予め格納し、所定の動作モードに応答してこれをRAMに内部転送し、RAM上の書き込み消去プログラムを実行してECCコード生成プログラム及びエラー訂正プログラムの書換えを行なうようにしてよい。或いは、所定の動作モードに応答して外部からRAMに書き込み消去プログラムを転送し、RAM上の書き込み消去プログラムを実行してECCコード生成プログラム及びエラー訂正プログラムの書換えを行なうようにしてよい。
〔3〕ECCコードを用いた符号語を生成するデータ処理方法では、nビットのデータに対してECCコードをmビットとするとき、mビットの相互に異なる2進数をm+n列に並べた行列テーブルを利用し、ECCコードの生成では、データの論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値をECCコードとし、データにECCコードを付加してm+nビットの符号語を生成する。
上記符号語に対するエラー判定を行なうデータ処理方法では、前記符号語の論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値が全ビット論理値“0”のときはエラー無と判定して前記符号語のnビットのデータを正規データとし、前記排他的論理和によって得られたmビットの値が1ビットでも論理値“1”のときはエラー有りと判定して、前記行列テーブルの列から、前記排他的論理和によって得られたmビットの2進数に一致する列を検索し、検索された列に対応される位置の符号語のビットを論理値反転して訂正し、訂正された符号語のnビットのデータを正規データとする。このエラー判定では積和演算ないし除算演算のような処理を要せず、算術論理演算器やシフタなどの演算器及び除算器を有し積和演算器を備えていないCPUを用いてもソフトウェアによるECC処理を能率的に行なうことが可能になる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、一部の記憶領域にだけECCコードの付加や誤り訂正を行なって書換え保証回数を向上させるから、記憶領域に拘わらず全てのライトデータに対して区別なくECCコードを付加する構成に比べて、実質的に無用のECCコードによる記憶領域の無駄を省くことができる。更に、ECC処理をソフトウェアで対処するから不揮発性メモリのデバイス特性に合ったECC訂正能力を容易に選択することができる。このように、データ処理システムにおいてECCコードによる記憶領域の利用の無駄を省いて不揮発性メモリに記憶された情報の信頼性を向上させることができ、また、ECCコードによる記憶領域の利用の無駄を省いて不揮発性メモリにおける記憶情報の書換え保証回数を向上させることができる。更に、デバイスの特性に合ったECC方式を選択でき、データに対するECCコードのオーバヘッドを小さくして記憶領域の利用効率を最大限とすることが可能である。
ECCコードが付加されたデータに対する誤り判定及び訂正の処理によるデータリード動作の遅延を抑えることが可能である。
積和演算などを行うことなくECCコードの生成を効率的に行なうことができ、ECCコードが付加されたデータの誤り判定を効率的に行なうことができる。
《マイクロコンピュータ》
図1には本発明の一例に係るシングルチップのマイクロコンピュータが示される。同図に示されるマイクロコンピュータ1は、特に制限されないが、単結晶シリコンのような1個の半導体基板(半導体チップ)にCMOS集積回路製造技術により形成される。
マイクロコンピュータ1は、演算制御装置としての中央処理装置(CPU)2、RAM3、バスステートコントローラ(BSC)4、電気的に書き換え可能な不揮発性メモリとしてのフラッシュメモリ5、フラッシュコントロールモジュール6、及びその他の内蔵回路を総称するその他モジュール7を有する。その他モジュール7としてマスクROM8、割り込みコントローラ(INTC)9、タイマ(TMR)10、入出力ポート(I/O)11及びシリアルインタフェースコントローラ(SCI)12等を有する。それら回路モジュールはバスIAB,IDB,PAB,PDB,CONTを介してインタフェースされる。
前記バスIAB,IDBは情報伝送速度の比較的速い内部アドレスバス、内部データバスである。前記バスPAB,PDBは情報伝送速度が比較的遅い周辺アドレスバス、周辺データバスである。バスCONTはバスアクセス制御信号やタイミング制御信号等を伝達する制御信号線を総称する。内部バスIDB,IABと周辺バスPDB,PABとの動作速度の相違若しくはアクセス対象に固有のアクセス形態の相違に対して前記BSC4がアクセス動作タイミング等を最適制御すると共に、前記BSC4はアクセスアドレスに応じたチップ選択若しくはモジュール選択制御等も行なう。
前記CPU2は、特に制限されないが、マスクROM8又はRAM3から命令をフェッチし、フェッチした命令を解読して実行する。RAM3はCPU2のワーク領域若しくはデータ又はプログラムの一時記憶領域とされる。前記マスクROM8はプログラム又はデータテーブルなどの記憶領域とされる。割り込みコントローラ10はマイクロコンピュータ1の外部から与えられる割込要求又はマイクロコンピュータ1内部の状態に応じて内蔵回路モジュールから発生される割込要求を受け、割り込み優先度及び割り込みマスク等に従って割込要求の受付を調停する。割込要求が受付けられると、CPU2に割込み信号IRQが与えられ、割り込みベクタによって割り込み要因がCPU2に与えられる。CPU2は割り込みベクタによって指示されるプログラムに処理を分岐する。I/O11は外部アドレスバス及び外部データバスへの接続、SCI12の外部インタフェース、TMR10の外部イベント信号入力等に用いられる。
前記CPU2の具体例は図2に示される。CPU2は、特に制限されないが、シフタSFT及び算術論理演算器ALU等の演算器と、32ビットの汎用レジスタR0〜R31、プログラムカウンタPC、コンディションコードレジスタCCR及びテンポラリレジスタTR等のレジスタ群、そしてリードデータバッファRDB、ライトデータバッファWDB及びアドレスバッファABなどのバッファ回路を実行部に有する。命令制御部は命令レジスタIR、命令デコーダIDEC、命令シーケンスロジックINTLを有する。
前記プログラムカウンタPCは次に実行すべき命令アドレスを保有し、その命令アドレスがアドレスバッファABから内部アドレスバスIABに出力されると、RAM3等の対応アドレスからリードされた命令が内部データバスIDBを介して命令レジスタIRにフェッチされる。命令デコーダIDECは命令レジスタIRの命令を解読して、CPU2内部の制御信号を生成して、前記実行部による演算処理を制御する。命令シーケンスロジックINTLは割込み信号IRQ等に応答して命令実行順序を変更する制御を行なう。
図1においてフラッシュメモリ5は、メモリセルアレイ20、Xデコーダ・ドライバ(XDE・DV)21、センスアンプアレイ(SAA)22、Yスイッチアレイ(YSW)23、Yデコーダ(YDE)24、入出力回路(IFB)25、電源回路(VGN)26、及びタイミングジェネレータ(TGN)27を有する。メモリセルアレイ20はマトリクス配置されたフラッシュッメモリセル(図示せず)を有する。フラッシュメモリセルは、特に制限されないが、半導体基板若しくはウェル領域にソース、ドレインを有し、チャネルの上方に夫々絶縁膜を介してフローティングゲート及びコントロールゲートが形成されたスタック構造を有し、ソースをソース線に、ドレインをビット線に、コントロールゲートをワード線に接続して構成される。
フラッシュメモリセルは閾値電圧がプログラム可能にされ、プログラムされた閾値電圧に応じて情報を保持する。例えば、1個のフラッシュメモリセルが1ビットの情報を保持する場合に、相対的に高い閾値電圧状態を書き込み状態、相対的に低い閾値電圧状態を消去状態と称する。書き込み状態を得る為の書き込み動作は、特に制限されないが、コントロールゲートに10V、ドレインに例えば5V、ソースおよび基板に例えば0Vを印加して、ドレイン・ソース間に電流を流し、これによってホットエレクトロン注入が起こり、フローティングゲートに電子が蓄積され、メモリセルの閾値電圧が高くなる。前記消去状態を得る為の消去動作は、特に制限されないが、コントロールゲートに10V、ソース及び基板に例えば−10Vを印加し、さらにドレインを例えば開放(フローティング)にして、フローティングゲートに蓄積された電子を基板に放出させ、これによってメモリセルの閾値電圧が低くなる。
前記入出力回路25はバスIAB,IDB,PAB,PDB,CONTとの間でアドレス、制御信号及びコマンドを入力すると共にデータの入出力を行なう。入出力回路25に入力されたアドレス信号はXDEC・DV21及びYDE24に入力されて夫々デコードされる。XDEC・DV21はそのデコード結果に従ってワード線を選択する。YDE24はそのデコード結果に従ってYSW23を介してビット線を選択する。ワード線選択及びビット線選択によってフラッシュメモリセルが選択される。読み出し動作では、前記選択されたフラッシュメモリセルの読み出しデータは、SAA22にて検出され、入出力回路25を経てバスPDBまたはIDBに出力される。書き込み動作では、バスPDB又はIDBから入出力回路25に与えられる書き込みデータが入出力回路25内の書き込みラッチ回路にラッチされ、ワード線選択されたメモリセルに対し、ラッチデータに従って書き込み・書き込み阻止が制御される。書き込み処理の前には予めブロック単位でフラッシュメモリセルに対する消去が行なわれる。
前記電源回路26はクランプ回路やチャージポンプ回路などを有し、フラッシュメモリの書き込み・消去・読み出しなどの動作で使用する様々な電圧を供給する。前記タイミングジェネレータ27は、制御バスCONTを介して供給されるストローブ信号及びデータバスPDB,IDBを介して入力されるコマンドに基づいてフラッシュメモリの内部タイミング信号を生成する。
図1において前記フラッシュコントロールモジュール6は、フラッシュメモリ5に対する書き込み及び消去のためのシーケンス制御並びにECC処理に利用される回路ブロックである。このフラッシュコントロールモジュール6は、CPU2によってアクセス可能な夫々32ビットの、書き込み/消去制御レジスタFLMCR、消去ブロック指定レジスタEBR、データレジスタFMPDR0,FMPAR0、及びリザルトレジスタFPFR等の制御レジスタを備え、更に、フラッシュメモリに対する書き込み及び消去のシーケンス動作を制御するシーケンス制御回路29を有する。
前記書き込み/消去制御レジスタFLMCRはフラッシュメモリ5の動作モードを制御するレジスタであり、書き込みの有効/無効を指示するライトイネーブルビットWE、消去動作を指示するイレーズビットE、消去ベリファイ動作を指示するイレーズベリファイビットEV、書き込み動作を指示するプログラムビットP、書き込みベリファイ動作を指示するプログラムベリファイビットPV、フラッシュメモリの書き込み動作中にエラーの発生したことを示す書き込みエラービットPER、消去動作中にエラーの発生したことを示す消去エラービットEER、フラッシュメモリのリード動作時にエラーの発生したことを示すリードエラービットRER等を有する。消去ブロック指定レジスタEBRはフラッシュッメモリセルアレイ20の消去エリアをブロック毎に設定するレジスタであり、ブロック毎にイレーズブロックビットEB0〜EB9を有する。データレジスタFMPDR及びリザルトレジスタFPFR等は後述のECC処理で利用されるレジスタである。尚、レジスタFMPDR及びFPFRは、汎用レジスタ(R0−R31)内のレジスタを利用しても良い。
《一部のエリアに対するソフトウェアECC処理》
次にマイクロコンピュータ1のECC機能について説明する。フラッシュメモリ5のメモリセルアレイ20は、特に制限されないが、図3の(A)に例示されるようにブート領域20Aとユーザ領域20Bに大別される。特に制限されないが、ブート領域20Aはマイクロコンピュータ1のユーザによる自由な書換えが禁止される領域であり、ユーザ領域20Bはユーザによる自由な書換えが許容される領域である。要するに、前記消去ブロック指定レジスタEBRのイレーズブロックビットEB0〜EB9の設定によって消去可能なエリアはユーザ領域20Bに限られる。ブート領域に格納されたプログラムはユーザが所定の動作モードを設定することにより実行可能である。尚、フラッシュメモリに対する書換えシーケンスの具体例についてここでは詳述しないが、書き込みデータにしたがった書き込み動作は先に消去動作が完了されることを条件とするものであり、消去ブロックによる消去が指示されなければ当然書き込みデータに従った書き込み動作も行なわれないようになっている。そのような書き込み・消去制御は前記シーケンス制御回路29が行なう。
マイクロコンピュータ1のECC機能は、図3の(B)に例示されるように、前記ユーザ領域20Bに指定された一部の領域20Baのデータに向けられている。即ち、ECC機能は、CPU2が、所定のプログラムを実行することにより、ユーザ領域20Bの一部の記憶領域(第1領域)20Baの書換え保証回数を当該ユーザ領域20Bのその他の記憶領域(第2領域)20Bbの書換え保証回数よりも向上させる機能である。この所定のプログラム実行によるECC機能は、前記指定された一部の記憶領域20Baに対するライトデータにECCコードを生成して付加する処理(ECCコード生成処理)と、前記指定された一部の記憶領域20Baからのリードデータに対しECCコードによるエラー判定とエラー訂正を行なう処理(ECCエラー判定訂正処理)とによって実現される。前者の処理はCPU2がECC生成プログラム21を実行することにより行なわれ、後者の処理はCPU2がエラー訂正プログラム22を実行することにより行なわれる。
前記領域20Baには頻繁に書き換えられる制御用パラメータなどのデータの記憶に利用される。頻繁に書き換えられる制御用パラメータとは、たとえばマイクロコンピュータ1が自動車のエンジン制御に用いられる場合、エンジン停止時の各ピストンの相対位置、エンジン停止直前までの燃費情報等の情報とされる。頻繁に書換えられるデータにECC処理を施せば、仮に、書換え回数の増加によるフラッシュメモリセルの特性劣化に起因して読み出しデータに誤りを生じても、ECCコードによる誤り訂正能力の範囲で、その誤りを訂正することができる。換言すれば、ECC処理により実質的に書き換え保証回数を改善若しくは向上させることができる。
前記領域20Bbは、図3の(B)では、頻繁に書き換えられることのない情報として、テーブルデータなどの固定データ、前記ECC生成プログラム21、エラー訂正プログラム22及び他のユーザプログラム等の記憶領域として利用される。前記ECC生成プログラム21及びエラー訂正プログラム22は、図3の(C)に例示されるようにブート領域20Aに格納し、或いは図3の(D)に例示されるようにマスクROM8に格納してもよい。
上記より、ユーザ領域20Bの一部の記憶領域20Baに対するアクセスだけを対象として、ECCコードの付加や誤り訂正を行なって書換え保証回数を向上させるから、前記一部の記憶領域20Baには書換えの頻繁なパラメータデータ等を格納すればよい。他の記憶領域20Bbには書換え頻度の低いプログラムデータなどを格納しても、当該他の記憶領域にはECCコードが付加されないから、記憶領域に拘わらず全てのライトデータに対して区別なくECCコードを付加する構成に比べて、実質的に無用のECCコードによる記憶領域の無駄な利用を省きながらフラッシュメモリセルの記憶情報の信頼性向上、換言すれば記憶情報の書換え保証回数の向上を実現することができる。
ライトデータに対するECCコードの付加、並びにECCコードによる誤り判定及び訂正の処理をCPU2によるプログラム実行で実現するから、ユーザデータビット数に対するECCコードのビット数の割合を定義するECC方式はECCコード生成プログラム及びエラー訂正プログラムの記述内容で選択でき、フラッシュメモリのメモリセルのデバイス特性に合ったECC方式の選択が容易である。例えば、図4に例示されるようにユーザデータビット数に対するECCコードのビット数が減るほど訂正能力は低くなるがECCコードによって費やされるメモリセルの割合(オーバヘッド)は少なくなる。したがって、ECC処理のソフトウェアによりエラー訂正効率を容易に変えることができるから、マイクロコンピュータのデバイス能力に合ったエラー訂正方式を容易に選択することができ、これはECCコードのビット数から無駄を排除することを意味し、フラッシュメモリの記憶エリアの有効利用を保証する。要するに、ユーザデータに対するECCコードのオーバヘッドを小さくしてフラッシュメモリの利用効率を最大限とすることが可能になる。
《ECC処理領域の規定》
前記ユーザ領域20Bの一部の記憶領域20BaをECC処理対象とするとき、その記憶領域20Baを規定するのは、例えば記憶領域20Bbに格納されたユーザプログラムである。前記記憶領域20Baにパラメータを格納するとき、例えばユーザプログラムは、パラメータデータのソースアドレスと領域20Baのストア先アドレスを指定し、CPUの処理をECCコード生成プログラムにジャンプさせる。ECCコード生成プログラムが実行されることにより、ソースアドレスのパラメータデータに対してECCコードが生成され、パラメータデータとしてのユーザデータにECCコードを付加したECC付きデータが前記ストア先アドレスに格納される。パラメータデータをリードするときは、ユーザプログラムは領域20Baのソースアドレスと任意のディスティネーションアドレスを指定し、CPUの処理をエラー判定プログラムにジャンプさる。エラー判定プログラムが実行されることにより、ソースアドレスのECC付きデータがリードされ、これに対する誤り判定が行なわれ、必要な訂正が行なわれてパラメータデータとしてのユーザデータがディスティネーションアドレスにセットされる。ECC処理を伴った上記パラメータデータの格納及びパラメータデータのリードにおいて、ユーザプログラムとECCコード生成プログラム及びエラー訂正プログラムとの間で行なわれるべきアクセスアドレス及びリードデータの受け渡しは、CPU2の汎用レジスタ或いはRAM3の領域を介して行なわれる。この詳細は、ソフトウェアECC処理の具体例で説明する。
《ユーザデータとECCコードとの対応》
上記処理において、ユーザデータとECCコードとの対応はユーザプログラム、ECCコード生成プログラム及びエラー訂正プログラムにおいて統一的に把握されていることが望ましい。例えば、図5に例示されるように、ECCコード生成対象とされるユーザデータの配列DA1に対し、ユーザデータと対応するECCコードを一つのレコードとするように一つの配列データDA2としてフォーマット化し、或いは、ユーザデータの配列DA1に対してECCコードを別のデータ配列DA3として規定してよい。後者の場合は当然、ユーザデータの配列DA1とECCコードの配列DA3は先頭アドレスなどによって配列相互の対応付けが必要であることは言うまでもない。
図6にはユーザデータとECCコードとを一つの配列データ中に対応付けて領域20Baに書き込むときの処理手順が例示される。先ず、書き込み対象とされるユーザデータの配列が指定されてECCコード付きデータの書き込み処理が指示されると、ユーザデータの読み込みと展開が行なわれる(S1)。即ち、(B)に例示されるように、ユーザデータの配列DA1がワークメモリに読み込まれ、そこで、読み込まれたユーザデータは規定のデータフォーマットにしたがって、(B)の配列EXTで例示されるように、ユーザデータの隣にECCコード領域を有するレコード形式に拡張される。次いで、(A)に例示されるようにユーザデータに対してECCコードを生成し、これを対応レコードのECCコード領域にストアして、レコード配列DA2が形成される。このレコード配列DA2のデータに対して前記フラッシュメモリの領域20Baへの書き込みが行なわれる(S3〜S7)。書き込み処理は、書き込みパルスの印加(S4)、書き込みデータのベリファイ(S5)、ベリファイ結果に基づく書き込み終了判定(S6)を行ない、所望の書き込み状態に到達していなければ再書き込みデータを演算してステップS4からの処理を繰り返し、規定回数繰り返してもステップS6の終了判定が満足できなければ書き込み異常終了とされ、ステップS6で規定の書き込み状態に到達すれば書き込み正常終了とされる。書き込みパルス印加の前には書き込みエリアに対する消去が終了されているものとする。
図7にはユーザデータとECCコードとを別の配列データとして対応付けて領域20Baに書き込むときの処理手順が例示される。先ず、書き込み対象とされるユーザデータの配列が指定されてECCコード付きデータの書き込み処理が指示されると、ユーザデータの読み込みが行なわれる(S11)。即ち、(B)に例示されるように、ユーザデータの配列DA1がワークメモリに読み込まれる。次いで、(A)に例示されるようにユーザデータに対してECCコードを生成し、これを別のデータ配列DA3としてストアする(S12)。双方のデータ配列DA1,DA3に対して前記フラッシュメモリの領域20Baへの書き込みが行なわれる(S13〜S17)。書き込み処理は前記ステップS4〜S7の処置と同様である。
図8には図6で説明したレコード配列を有するECCコード付きデータをリードするときの処理手順が例示される。先ず、リード対象とされるECCコード付きデータのレコード先頭アドレスが設定され(S21)、これに対応するECCコード付きデータがフラッシュメモリの領域20Baからワークメモリに読み込まれる(S22)。読み込まれたデータに対してエラー判定が行なわれる(S23)。このとき、図6で説明したようにエラー判定の為に読み込まれた配列データは一定のフォーマット、即ち、ユーザデータとECCコードの所定ビット数単位のペアを単一レコードとする配列のフォーマットを有しているから、エラー訂正プログラムは、その規定のフォーマットであることを前提に、各レコードからユーザデータとECCコードを参照して誤りの判定を行なうことができる。訂正可能な誤りに対してはエラー訂正が実行され(S24)、必要な訂正が実行されたリードデータがRAM3などの所定のエリアにストアされる(S25)。
図9には図7で説明したユーザデータとECCコードが別々の配列データとされるECCコード付きデータをリードするときの処理手順が例示される。先ず、リード対象とされるECCコードの配列データの先頭アドレスとユーザデータの先頭アドレスが設定され(S31)、これに対応するECCコードとユーザデータがフラッシュメモリの領域20Baからワークメモリに読み込まれ(S32)、読み込まれたデータに対してエラー判定が行なわれる(S33)。エラー判定において、対応するユーザデータとECCコードを参照する場合にも夫々の配列の構造を指定する情報がユーザプログラムを介して与えられなければならない。要するに、図7で説明したECCコード用配列データDA3の生成に際して、当該配列データDA3の先頭アドレス及び構造はユーザプログラムを介して与えられているから、その配列を利用する場合にも同じようにユーザプログラムから必要なアドレス情報及び配列の構造情報が与えられなければ、それを利用する事はできない。訂正可能な誤りに対してはエラー訂正が実行され(S34)、必要な訂正が実行されたリードデータがRAM3などの所定のエリアにストアされる(S35)。
図3の(B)で説明したように、前記ECCコード生成プログラム及びエラー訂正プログラムを前記書換え許容領域としてのユーザ領域20Bに保持させれば、それらプログラムをユーザが開発して書き込むことができるという自由度を得る。したがって、ユーザデータとECCコードとのフォーマットについてはユーザ作成のプログラムに依存した任意フォーマットにする方がユーザにとって都合がよい場合もある。このとき、マイクロコンピュータ1のメーカーがそれらECCコード生成プログラム及びエラー訂正プログラムを提供しようとする場合にもユーザの使い勝手を考慮すれば、C言語のような高級言語で記載されたソースプログラムで与えるのがよい。そのような任意フォーマットを考慮したとき、ECCコードの付加及びECCコード付きデータを用いたエラー訂正処理方式には、例えば図7及び図9で説明した手順を採用してよい。
一方、図3の(C)で説明したように、消去禁止領域としてのブート領域20Aに前記ECCコード生成プログラム及びエラー訂正プログラムを格納することを想定する。この場合には、ブート領域20Aに一旦書き込まれたプログラムの書換えは原則不可能であるから、望ましくは、それらプログラムはマイクロコンピュータ1のメーカが書き込むのがよい。そうであるなら、ユーザデータとECCコードとのフォーマットに関しても、ユーザに対する自由度の保証という観点は低く、逆にユーザの負担軽減という観点より、固定フォーマットを採用する方が得策であると考えられる。前記ECCコード生成プログラムは、ECCコードを生成した後、生成したECCコードとそれに対応するデータとを規定のフォーマットに従いECCコード付加データとして前記不揮発性メモリの一部の記憶領域に格納し、エラー訂正プログラムは前記規定のフォーマットに従ってECCコード付加データを認識すればよい。そのような固定フォーマットを考慮したとき、ECCコードの付加及びECCコード付きデータを用いたエラー訂正処理方式として、例えば図6及び図8で説明した手順を採用すればよい。前記ECCコード生成プログラム及びエラー訂正プログラムを図3の(D)で説明したマスクROM8に格納する場合も同様に考えてよい。
《オンボードプログラムモード》
オンボードプログラムモードについて説明する。この動作モードは、図3の(B)で説明したように前記ECCコード生成プログラム及びエラー訂正プログラム等をユーザ領域20Bに保持させる時に必要な動作モードの一例である。
先ず、ブートモードによるオンボードプログラムの手順を説明する。パーソナルコンピュータ又はEPROMライタ等のホスト装置に書き込み制御プログラムと、前記ECCコード生成プログラム及びエラー訂正プログラムを用意し、I/O11の所定のポートに接続する。所定の外部端子を規定の状態にしてマイクロコンピュータ1をブートモードに遷移させる。ブートモードに遷移すると、マイクロコンピュータ1はブート領域のブートプログラムを実行し、SCI12による通信を可能とし、ブート領域からRAM3に、フラッシュメモリ5のユーザ領域20Bに対する消去プログラムと、SCI12を介する通信制御プログラムをロードする。ついで、ロードされた消去プログラムが実行されてユーザ領域20Bが全面消去され、前記通信制御プログラムによってホストから書き込み制御プログラムがRAM3にロードされる。その後、書き込み制御プログラムが実行され、ホストが保有する前記ECCコード生成プログラム及びエラー訂正プログラム等がユーザ領域20Bに書き込まれる。
次に、ユーザプログラムモードによるオンボードプログラムの手順を説明する。パーソナルコンピュータのようなホスト装置に書き込み・消去制御プログラムと、前記ECCコード生成プログラム及びエラー訂正プログラムを用意し、また、ユーザ領域20Bにはホスト装置と間の転送制御プログラムを予め格納しておく。先ず、CPU2は割込みに応答し或いはジャン命令を実行することにより前記転送制御プログラムを実行し、ホスト装置から書き込み・消去制御プログラムをRAM3に転送する。次に、RAM3上で書き込み・消去制御プログラムを実行し、ユーザ領域20Bの必要なエリアを消去し、そこに、ホストが保有する前記ECCコード生成プログラム及びエラー訂正プログラムを書き込む。
《ECC処理速度の向上》
図10には前記ECCコード生成プログラム及びエラー訂正プログラムの実行速度を向上させる為の一例が示される。即ち、前記フラッシュメモリ5のブート領域20A(図3の(C))又はユーザ領域20B(図3の(B))から前記ECCコード生成プログラム及びエラー訂正プログラムをRAM3の所定のアドレス領域へ転送し、前記CPU2には前記RAM3に転送された前記ECCコード生成プログラム及びエラー訂正プログラムを実行させればよい。このとき、前記CPU2はリセットの指示に応答して前記フラッシュメモリ5から前記RAM3への転送制御プログラムを実行すればよい。そのような転送制御プログラムは例えばユーザ領域20Bbにおけるユーザプログラムとして、或いはブート領域20Aのプログラムとして所定のアドレス領域に格納しておけばよい。この方法は、RAM3のアクセスサイクルがフラッシュメモリ5のアクセスサイクルより速い場合において、上記ECCコード生成プログラム及びエラー訂正プログラムのCPUによる実行速度を高速にすることができる。
図11にはエラー判定によるオーバヘッドを見掛け上解消するための一例が示される。即ち、前記CPU2はリセットの指示に応答して、所定のリセット処理ユーザプログラムを実行し、前記フラッシュメモリ5の一部の記憶領域20Baから順次ECCコード付加パラメータデータDATA1を読み出し、読み出したECCコード付加パラメータデータDATA1に対し、前記エラー訂正プログラム22の実行により前記エラー判定とエラーの訂正を行い、前記エラー判定とエラー訂正処理を経たパラメータデータDATA2を前記RAM3に初期的にストアする。その後、CPU2は制御用ユーザプログラムにしたがってRAM3から必要なデータをリードすればよく、リード動作に際してその都度エラー判定を行なうことを要しない。
なお、図11の前記エラー訂正プログラム22は、図10で示されるように、フラッシュメモリ5の所定のアドレス領域からRAM3の所定のアドレス領域へ転送された状態を示しているしている。
図12は、エラー判定によるオーバーヘッドを見掛け上解消する為の第2の方法の一例が示される。上記図11は前記エラー訂正プログラム22をRAM3のアドレス空間上でCPU2により実行する場合を示したが、図12はRAM3のリードアクセスサイクルがフラッシュメモリ5のリードアクセスサイクルより速くない(短くない)場合に有効な方法が示される。
フラッシュメモリ5のアクセスサイクルとRAM3のアクセルサイクルとが同一の場合、エラー訂正プログラム22のCPU2による実行速度は、RAM3の記憶領域上からエラー訂正プログラムをCPU2で実行しても、フラッシュメモリの記憶領域上からエラー訂正プログラムをCPU2で実行しても、その実行速度はそれほど変わらないと考えられる。
したがって、図12に示されるように、フラッシュメモリ5の一部の記憶領域上にエラー訂正プログラム22を格納し、そのプログラム22をRAM3へ転送することなくフラッシュメモリ5の上記一部の記憶領域からCPU2で実行し、フラッシュメモリ5に一部の記憶領域20Baに格納されたECCコード付加パラメータDATA11に対してエラー判定及びエラー訂正を行ない、エラー判定及びエラー訂正処理の施されたパラメータデータDATA22をRAM3の所定の記憶領域に格納する。上記エラー訂正プログラムの処理は、上記図11で説明されたように、フラッシュメモリ5の一部の領域20Bbに格納されたリセット処理ユーザープログラムが、リセットに応答するCPU2によって実行される事によって実行される。
《ソフトウェアECC処理の原理的手法》
次にソフトウェアECC処理の原理的な手法を説明する。ECCによる符号化や誤り訂正の公知の手法では例えばハミングコードの検査行列を用い、誤り訂正ではリードデータとハミングコードの行列演算を積和演算などを用いて行なうことができる。マイクロコンピュータ1におけるソフトウェアECC処理では、データをnビットとし、nビットのデータに対するECCコードをmビットとするとき、mビットの相互に異なる2進数をm+n列に並べた行列テーブルを例えば図3の(C)に例示されるフラッシュメモリ5の記憶領域20Bbに固定データとして形成し、前記ECCコード生成プログラム及びエラー訂正プログラムの処理にその行列テーブルを参照させる。
図13には16ビットデータに対する1ビット訂正のための行列テーブル40の一例が示される。同図の行列テーブルは便宜上生成行列41と検査行列42に分けて図示されている。生成行列41における行番号1〜21、列番号1〜16は、1〜16が16ビットデータに関する番号、17〜21が5ビットのECCコードに関する番号であると理解されたい。検査行列42における行番号1〜21は生成行列と同意義、列番号1〜5は5ビットのECCコードに関する番号であると理解されたい。
ECCコード付加データ、即ち符号語の生成は次のように行なう。例えば16ビットのデータをM=m15,m14,…,m1,m0に対して5ビットのECCコード(検査ビット)P=p4,p3,p2,p1,p0を生成して21ビットの符号語を生成する。この符号語を生成するには生成行列41とデータMとの行列演算を行なえばよい。要するに、図14のように生成行列41とデータMを並べ、データMのビットが“1”に対応する生成行列41の行を加算すれば良い。ここで行なう加算は2進数の加算であり、各ビット毎の排他的論理和(Ex−OR)を計算すればよい。この演算手法において、元の16ビットのデータMはそのまま残るから、生成行列41におけるECCコード5ビット相当部分に関して排他的論理和を演算すればよい。例えば、H’8041(b’1000_0000_0100_0001)の16ビットデータに対してECCコードを生成するには、図15に例示されるように、16ビットデータMに対して、前記生成行列41の内、ECCコード5ビット相当部分に関する行列を抜き出した行列41Aを並べ、データの論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を演算してECCコードを生成すればよい。図16にはここで行う排他的論理和演算のための演算手段をECCコード1ビット分の構成を代表として例示する。図16の構成では、2ビットの排他的論理和演算器43の出力をディスティネーションレジスタ(Dreg)45が受け、排他的論理和演算器43の一方の入力にはDreg43の出力が帰還され、他方の入力にはソースレジスタ(Sreg)45の出力が与えられる。前記排他的論理和演算においてDreg43の初期値は“0”であり、Sreg43には順次、データの論理値“1”のビット位置に対応する前記行列テーブルの列の値が行方向のビット毎に入力され、排他的論理和演算器43は双方の入力に対する排他的論理和演算結果をDreg44にラッチし、これをSreg43の次の出力との排他的論理和に用いる。最終的にDreg44に得られた結果が、ECCコードの対応ビットの値になる。
尚、図15、図16の説明より明らかなように、生成行列41は少なくとも図14の列番号17〜21の部分だけあればよい。
図17には図15の場合の排他的論理和演算結果が示される。同図のXe−OR結果が演算されたECCコードである。H’8041の場合には、M=b’1000_0000_0100_0001にP=b’11101を付加したデータC=1000_0000_0100_0001,11101が、21ビットの符号語になる。
フラッシュメモリから読み出された符号語に対するエラー判定は、前記検査行列42と21ビットの符号語との積を計算する。実際に積を計算しようとすれば積和演算による行列演算を行なわなければならない。ここでは、図18に例示されるように、検査行列42に対して符号語Cを並べ、前記符号語の論理値“1”のビット位置に対応する前記検査行列42の列の値を行方向のビット毎に排他的論理和を採る。この排他的論理和演算は図16で説明したのと同じ手法で行えばよい。図18の例はフラッシュメモリ5から読み出された符号語に誤りの無い場合を示しており、上記生成された符号語C=1000_0000_0100_0001,11101と同じ符号語が読み出された状態が示されている。
図19には図18の例において前記排他的論理和による演算結果が示される。図19の結果の欄に示された5ビットの値Rltが全ビット論理値“0”のときはエラー無と判定され、前記符号語Cに含まれる16ビットのデータMが正規データとされる。
図20にはフラッシュメモリ5から読み出した符号語Cerに1ビットの誤りを含む場合が例示される。図20の結果の欄に示された5ビットの値Rltが1ビットでも論理値“1”のときはエラー有りと判定される。誤りのあるビット位置は、前記検査行列42の列から、前記排他的論理和によって得られた5ビットの2進数Rltに一致する列に対応される位置の符号語CerのビットBerである。この誤りビットBerに対し、その論理値を反転してエラー訂正を行えばよい。訂正された符号語に含まれる16ビットのデータMが、訂正後の正規データとされる。
図20の説明より明らかなように訂正可能な1ビットの誤りを生じているとき、エラー判定の演算結果Rltは検査行列42の何れかの列のビットパターンに一致することになる。エラー判定の演算結果Rltにそれ以外のビットパターンが現れたときは2ビット以上の訂正不能な誤りが発生していることになる。図21にはそのような訂正不能を意味する10種類のビットパターンが示される。検査行列42によるこの例では、それら訂正不能を意味する10種類のビットパターンの値は10進数で22以上の値にされるようになっているから、訂正不能の判定も容易である。
以上で説明したソフトウェアECC処理では積和演算を要する行列演算を直接行わないから、CPU2若しくはマイクロコンピュータ1は積和演算器を備えなくとも、ソフトウェアによるECC処理を能率的に行なうことが可能になる。また、行列テーブルを用いるから、その都度生成行列や検査行列を生成しなくてもよい。
図22には訂正不能エラーに対して例外処理を実行可能にする例が示される。前記エラー訂正プログラムの実行による前記エラー判定処理において訂正不能なエラーが発生したき、誤動作防止の観点より、前記CPU2は、前記エラー訂正プログラムの実行による前記エラー判定処理において訂正不能なエラーの発生を示す情報を外部から認識可能にRAM3のフラグ領域FLG30(或いはフラッシュコントロールモジュール6内のレジスタFMLCRのリードエラービットRER)に保持させる。例外処理プログラムのようなユーザプログラムを介してそのフラグ領域FLGを所定インターバル毎に参照させ、訂正不能なエラー発生を認識したとき、訂正不能なエラーを発生したデータブロック或いは全てのデータの書換え、即ち、新たなユーザデータに、ECCコードを生成し、これを付加して、領域20Baの所定エリアに書き込む処理を実行させる。
更にデータ破壊による誤動作防止を更に推し進める場合には、前記CPU2は前記エラー訂正プログラムの実行によりエラー訂正可能なデータを検出した場合にも、それを示す情報を外部から認識可能にRAM3の所定記憶領域又は所定の汎用レジスタに保持させるとよい。そのような情報はワーニング情報として利用すればよく、例えば所定のユーザプログラムを介してその情報エリアを定期的に参照させればよい。これにより、ユーザシステムは、データが壊れかけている、ということを逸早く認識することができ、壊れかけているデータの書換え(再書込み)を促してデータの信頼性を更に向上させることが可能になる。要するに実際にデータエラーを生ずる事態の発生を未然に防止することができる。
《ECCコード生成処理の具体例》
ここでは図17で説明した固定フォーマットのユーザデータを用意してECCコードを生成する処理を具体的に説明する。ECCコードの生成前に例えばユーザプログラムにしたがってユーザデータの読み込みとフォーマット展開が行なわれる。展開されたデータは図23に例示されるように、ユーザデータ16ビットに対して16ビットの拡張ビットを割り当て、合計32ビットが一つのECCデータブロックとして符号語領域になる。前記16ビットの拡張ビットには5ビットのECCコード領域の他に11ビットのワークビット領域が設けられているが、これは、必要なデータブロックをワード境界を単位にアクセスして得られるようにする実用的な観点を考慮したものである。
図24には一つのECCデータブロックの構成が更に詳細に示される。同図において符号化検査ビットとはECCコードを意味する。同図においてECCデータブロックのビット番号に対応して機能名が割当てられる。機能名D00〜D15はユーザデータであり、機能名P00〜P04はECCコードである。
図25には行列テーブルのデータ(生成用データ)例が示される。同図に示される生成用データは前記機能名に対応され、夫々テーブル検索アドレス(検索アドレス)X〜X+14が割当てられている。図25の生成用データは、要するに図18の検査行列42と実質的に等しく、この検査行列42の一部が図15で説明した実質的な生成行列41Aになっている。図25の機能名D00〜D15の生成用データは図18の列番号16〜1のビット列に対応され、図25の機能名P00〜P04の生成用データは図18の列番号21〜17のビット列に対応されている。図25のテーブルを便宜上ECCテーブル(ECCTLB)とも記す。
図26にはECCコード生成プログラムによる処理手順が例示される。ECCコード生成プログラムとそれに先立って実行されるユーザプログラムとの間のデータ及びアドレスの受け渡しにはCPU2の汎用レジスタ及びフラッシュコントロールモジュール6内のレジスタが利用される。即ち、ユーザプログラムは、フラッシュコントロールモジュール6内のレジスタFMPAR0に書き込みデータエリアの先頭アドレスをセットする。要するに、図23に例示されるところのRAM3に展開されたデータの先頭アドレスがセットされる。汎用レジスタR0はユーザ書き込みデータレジスタ、R1は行列テーブル検索アドレスポインタ、R2は行列テーブル検索ストップ値、R3はユーザ書き込みデータ保存アドレスポインタ、R4はユーザ書き込みデータ保存アドレスストップ値、R5はビットマスク用データ、R6は検査ビット生成用変数、R7は論理値“1”のビットがあるかを検出するための変数、R8はビットに対応するテーブル値を格納する変数、として利用される。
図26において、先ず、レジスタFMPDR0の値をレジスタR3にセットしてRAM3上に展開されたユーザデータの先頭アドレスをストアする(S40)。次に、レジスタR3の値にh’80を加算してRAM上に展開されたユーザデータのストップアドレスをレジスタR4にストアする(S41)。そして、レジスタR3の値がレジスタR4の値に到達するまで、以下の処理を行う(S42)。すなわち、レジスタR3の値を利用して先頭16ビットユーザデータをリードしてレジスタR0にロードする(S43)。レジスタR1にはECCTLBの先頭の検索アドレスXをセットし、レジスタR2にはそのストップアドレスX+h’10をセットする(S44)。レジスタR5にビットマスクデータh’0001をセットし、レジスタR6にデフォルトデータh’0000をセットする(S46)。そしてレジスタR1の値がレジスタR2の値に到達するまで次の処理を繰り返す(S47)。要するに、レジスタR7にレジスタR5の値をロードし、レジスタR7とレジスタR0の値に対して論理積をとり、その結果をレジスタR7に返す(S48)。レジスタR7の値が0より大きいかを判定する(S49)。ステップS49の判定結果が0より大きければ、その時のマスクデータR5の論理値“1”のビット位置と等しいビット位置にR0のユーザデータも論理値“1”のビットも持つことになる。その場合にはECCテーブルの生成用データ(Y)をレジスタR8にストアし(S50)、レジスタR6とR8の値に対して前記排他的論理和処理を行って、その値をレジスタスR6に返す。ステップS49においてR7の値が0であれば、レジスタR5の値を1ビット左シフトしてマスクビット位置を次のビット位置とし(S52)、レジスタR1にh’01を加算して、ECCTLBの検索アドレスを次アドレスに進める(S53)。そして再度ステップS48の処理に戻る。ステップS48〜S53の処理はECCTLBの検索アドレスがストップアドレスになるまで繰り返され(S47)、ここまでの処理により、図17で説明したようなECCコードPがレジスタR6に保持される。そして、次にレジスタR3の値を1ワード分だけインクリメントし(S54)、レジスタR3の値が指すアドレス(RAM3上に展開された図23のデータフォーマットの拡張領域)に、レジスタR6が保有するECCコードをストアする(S55)。そして次のユーザデータに対して同様の処理を行う為にレジスタR3のアドレスを1ワード分インクリメントする。上記ステップS43〜S56までの処理をR3<R4になるまで繰り返すことによって、RAM3上に展開された一群のユーザデータに対してECCコードが付加される。この後、ECCコード生成プログラムの実行を終えて、直前のユーザプログラムにリターンする。特に図示はしないが、リターンされたユーザプログラムは、RAM3上に展開されたECCコード付加データを、フラッシュメモリ5の所定の領域20Baに書き込む。
《エラー判定処理の具体例》
図27には図26の手順で生成されたECCコード付加データをリードしたときのエラー判定処理の詳細が示される。エラー判定処理プログラムとそれに先立って実行されるユーザプログラムとの間のデータ及びアドレスの受け渡しにはCPU2の汎用レジスタ及びフラッシュコントロールモジュール6内のレジスタが利用される。即ち、ユーザプログラムは、フラッシュコントロールモジュール6内のレジスタFMPAR0にユーザリードアドレスをセットする。要するに、図3の領域20Ba中のリードアドレスがセットされる。汎用レジスタR0はエラー訂正前のリードアドレス、R1は検査ビット保存変数、R2はエラー検出用レジスタ、R3はユーザリードアドレス、R4はECC計算用中間テーブル、R5はECCTLB検索アドレス、R6はECCTLB検索ストップアドレス、R7はビットマスクデータ、R8は論理値“1”検出用変数、R9はECCTLBデータ保存用変数、として利用される。
図27において、先ず、レジスタFMPAR0のユーザリードアドレスをレジスタR3にセットし(S60)、このレジスタR3のリードアドレスを利用してユーザデータをレジスタR0にストアする(S61)。更にアドレスを1ワード分インクリメントし(S62)、後続のECCコードのデータをレジスタR1にストアし、且つレジスタR1のデータをレジスタR4にコピーする(S63)。前記レジスタR4を左に16ビットシフトを行い、そのシフト結果に対してh’001F0000との論理積を採る。これによってレジスタR4には、その第17ビット目から第21ビットにECCコードが配置され、その他のビットを“0”としたデータを得る(S64)。更に、レジスタR0の値に対してh’00000FFFFとの論理積を採り、その結果をレジスタR0に返し、レジスタR4の値にレジスタレジスタR0の値を加えてその演算結果をレジスタR4に返す(S65)。これにより図示の“1”ビット検索テーブルがレジスタR4に得られる。“1”ビット検索テーブルにおける未使用エリアは論理値“0”になっている。次にレジスタR2を論理値“0”に初期化し(S66)、レジスタR5にECCTLBの検索アドレスXをセットし、レジスタR6に検索ストップアドレスX+h’16をセットする(S67)。レジスタR7にはビットマスクデータh’00000001をセットする(S68)。そしてR5の値がR6の値になるまで以下の処理を繰り返す。即ち、レジスタR8にレジスタR4の値をセットし、R7とR8の論理積をR8に返し、R8が0より大きいかを判定する(S71)。ステップS71の判定結果が0より大きければ、その時のR7のマスクデータの論理値“1”のビット位置と等しいビット位置にR4の符号化データも論理値“1”のビットも持つことになる。その場合にはECCテーブルECCTLBの生成用データ(Y)をレジスタR9にストアし(S72)、レジスタR2とR9の値に対して前記排他的論理和処理を行って、その値をレジスタスR2に返す(S73)。ステップS71においてR8の値が0であれば、レジスタR7の値を1ビット左シフトしてマスクビット位置を次のビット位置とし(S74)、レジスタR5にh’01を加算して、ECCTLBの検索アドレスを次アドレスに進める(S75)。そして再度ステップS70の処理に戻る。ステップS70〜S77の処理はECCTLBの検索アドレスがストップアドレスになるまで繰り返され(S69)、ここまでの処理により、図19及び図20で説明したような判定結果RltがレジスタR2に保持される。そして、レジスタR2の値が全ビット“0”か否かを判定し(S76)、そうでなければエラーが有るので、訂正可能な1ビットエラーに対して対してはサブルーチンとして後述のエラー訂正処理を実行する。そして、レジスタFMPDR0が示す領域に、レジスタR4の下位16ビットの値をストアし(S7)、レジスタFPFRにパス情報をセットする。尚、特に図示はしないがステップS76ではエラーが訂正不能であるか否かも判定し、訂正不能であれば図22で説明した訂正不能エラー発生の通知処理を行って例外処理を待ってもよい。
《エラー訂正処理の具体例》
図28には1ビットの誤りに対するエラー訂正処理の詳細が示される。エラー訂正処理プログラムにおけるCPU2の汎用レジスタ及びフラッシュコントロールモジュール6内のレジスタの利用形態はエラー判定処理の場合と同じである。図27において、先ず、レジスタR5にECCTLBの先頭検索アドレスXをセットし、レジスタR6にECCTLBの検索ストップアドレスをセットする(S80)。レジスタR7にビット反転用マスクデータh’0001をセットする(S81)。そしてR5の値がR6の値になるまで以下の処理を繰り返す。即ち、レジスタR5の検索アドレスに対応する生成用データをECCTLBからレジスタR9にストアする。そして、R9の値が前記レジスタR2の判定結果Rltに一致するかが判別され、一致していれば、その時のR7のビット反転用マスクデータにおける“1”のビット位置に対応するユーザデータのビット位置に誤りがある。前記エラー判定処理のステップS77で説明したようにレジスタR4の下位16ビットを切出して、正規のユーザデータとするから、そのとき、レジスタR7のマスクデータとレジスタR4のデータとを対応ビット毎に排他的論理和を採ることによって、マスクデータのビット“1”に対応するユーザデータのビットだけが論理値反転され、エラー訂正されたユーザデータがレジスタR4に返される(S85)。ステップS84においてR9の値がR2の値に一致しなければ、レジスタR5にh’01を加算して、ECCTLBの検索アドレスを次アドレスに進め(S86)、レジスタR7のマスクデータを1ビットシフトし(S87)、再度ステップS83の処理に戻る。ステップS83〜S87の処理はECCTLBの検索アドレスがストップアドレスになるまで繰り返されて(S82)、当該サブルーチンを終了する。このサブルーチンが終了されたとき、レジスタR4には誤り訂正された正規のユーザデータを含んでいる。
《マルチチップのデータ処理システム》
図29にはマルチチップのデータ処理システムが例示される。同図に示されるデータ処理システムはデータプロセッサ50とフラッシュッメモリ51が夫々別々に半導体集積回路化されてバス52で接続され、その他に、単一又は複数個の半導体集積回路で構成された周辺回路53がバス52に接続される。データプロセッサ50はCPU65、RAM66、ROM67、及びI/O68を有する。フラッシュメモリ51は汎用フラッシュメモリであり、フラッシュメモリセルがマトリクス配置されたメモリセルアレイ70、XDE・DRV71、YDE72、TGN73、VGN74、YSW75、SAA76、書き込み・消去制御回路77を有する。フラッシュッメモリ51の基本的な構成は前記フラッシュメモリ5と同様であるからその詳細な説明は省略するが、書き込み及び消去を制御するロジック回路として書き込み・消去制御回路77を専用に備える。フラッシュメモリ51の動作はCPU65から与えられるコマンド並びにアクセス制御信号によって決定される。CPU65はフラッシュメモリ51の位置部の記憶領域70Eを頻繁に書き換えるパラメータデータのようなデータの記憶領域として用いる。前述と同様にその領域70Eは他の領域よりも書き換え保証回数を向上させる為にECC処理の対象とされる。ROM67は前記領域70Eをアクセスしてデータ処理を行うユーザプログラム67Pを保有する。このユーザプログラム67Pは、前記領域70Eにパラメータデータを書き込むときに実行されるECCコード生成プログラム67P1、前記領域70Eから読み出したECCコード付加データに対するエラー判定及び誤り訂正を行う為のエラー訂正プログラム67P2を有する。前記ECCコード生成プログラム及びエラー訂正プログラムは所定のユーザプログラムから呼び出されて実行される。
上記マルチチップのデータ処理システムにおいても図1のシングルチップのマイクロコンピュータ化されたデータ処理システムと同様に、ECCコードによる記憶領域の利用の無駄を省いて記憶情報の信頼性を向上させることができ、ECCコードによる記憶領域の利用の無駄を省いて記憶情報の書換え保証回数を向上させることが可能であり、デバイスの特性に合ったECC方式を選択してデータに対するECCコードのオーバヘッドを小さくし記憶領域の利用効率を最大限とすることが可能である等の効果を得ることができる。
《多値フラッシュメモリへの考慮》
前記フラッシュメモリ5,51は、1個のフラッシュッメモリセルに2ビット以上の記憶情報を保持させることが可能な多値フラッシュメモリであってもよい。すなわち、1個のフラッシュメモリセルは、情報記憶に際して複数ビットの書き込みデータで指定される4種類以上の閾値電圧の中の一つの閾値電圧に設定され、情報読み出しに際して閾値電圧の状態を対応する複数ビットの記憶情報として出力する、1個のフラッシュメモリセルの記憶情報を複数ビット化したメモリである。ここでは、一つのフラッシュメモリセルに2ビットの情報を書き込むことができ、かつその情報を読み出すことができるフラッシュメモリを一例とする。このようなフラッシュメモリが実現しようとする多値情報記憶技術において、一つのメモリセルの情報記憶状態は、例えば消去状態(“11”)、第1の書き込み状態(“10”)、第2の書き込み状態(“00”)、第3の書き込み状態(“01”)の中から選ばれた一つの状態とされる。全部で4通りの情報記憶状態は、2ビットのデータによって決定される状態とされる。即ち、2ビットのデータを一つのメモリセルで記憶する。この4値のデータと閾値電圧との関係は、図30の閾値電圧分布図に示される通りである。フラッシュメモリセルの記憶データの値と閾値電圧との関係を図30のように規定すると、情報記憶後に、閾値電圧が不所望に変化しても隣の閾値電圧のデータとは相互に1ビットしか相違しないようになる。したがって、データエラーを生じても殆どが1ビットエラーになり、1ビットエラーに対して訂正可能なECC処理によるデータの信頼性を高く維持することが可能になる。換言すれば、多値フラッシュメモリセルの閾値電圧が近いところをデータハミング距離が1になるようにすれば、相対的に少ないビット数のECCコードで高い信頼性を得ることができ、書換え保証回数の向上が容易になる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、フラッシュメモリセルはフローティングゲートとコントロールゲートの縦積み構造に限定されず、MOSトランジスタのゲート電極をフローティングゲート電極とし当該ゲート電極を延在させて形成したMOSゲート容量を介してチャネル領域をコントロールゲートに用いるようなデバイス構造などを採用してもよい。また、不揮発性記憶素子はフラッシュメモリに限定されず、MNOS(メタル・ナイトライド・オキサイド・セミコンダクタ)トランジスタを記憶素子とするEEPROM(エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ)のような不揮発性メモリ、或いは誘電体メモリ等であってもよい。
データ処理システムは、1個の半導体チップに前記不揮発性メモリ及び中央処理装置が形成されたシングルチップのマイクロコンピュータとして実現することが可能であり、その一方において、前述の如く前記データ処理システムは、前記不揮発性メモリ及び中央処理装置が夫々別々の半導体チップに形成されたマルチチップ形態で実現してもよい。そして、データ処理システムは、シングルチップ及びマルチチップのマイクロコンピュータに限定されず、フラッシュメモリを内蔵したグラフィックスコントローラ、DRAMを専用ロジック回路と共に混載したシステムLSI、その他のマルチチップによる電子回路に広く適用する事ができる。
本発明の一例に係るシングルチップのマイクロコンピュータのブロック図である。 CPUの具体例を示すブロック図である。 書換え保証回数を向上させる記憶領域、ECCコード生成プログラム及びエラー訂正プログラムの記憶領域のマッピング例を示す説明図である。 ユーザデータのビット数に対するECCコードのビット数による誤り訂正能力とオーバーヘッドとの関係を例示する説明図である。 ユーザデータとECCコードを一つの配列データ中に対応付けての配列するデータフォーマットと、ユーザデータとECCコードとを別の配列データとして対応付けるデータフォーマットとを例示する説明図である。 ユーザデータとECCコードとを一つの配列データ中に対応付けて書き込むときの処理手順を例示する説明図である。 ユーザデータとECCコードとを別の配列データとして対応付けて書き込むときの処理手順を例示する説明図である。 図6で説明したレコード配列を有するECCコード付きデータをリードするときの処理手順を例示する説明図である。 図7で説明したユーザデータとECCコードが別々の配列データとされるECCコード付きデータをリードするときの処理手順を例示する説明図である。 ECCコード生成プログラム及びエラー訂正プログラムの実行速度を向上させる為の一例を示す説明図である。 エラー判定によるオーバヘッドを見掛け上解消するための一例を示す説明図である。 エラー判定によるオーバヘッドを見掛け上解消するための別の一例を示す説明図である。 16ビットデータに対する1ビット訂正のための行列テーブル40の一例を示す説明図である。 ECCコードを付加した符号語を生成する原理的手法の説明図である。 H’8041の16ビットデータに対し排他的論理和を用いてECCコードを生成する具体例の説明図である。 排他的論理和演算のための演算手段をECCコード1ビット分の構成を代表として例示するブロック図である。 図15の例において排他的論理和を採った具体的な演算結果であるECCコードを例示する説明図である。 エラー判定処理の原理的手法を示す説明図である。 図18の例において前記排他的論理和による誤り無の判定結果が例示される説明図である。 図19に対して1ビット誤りの有る判定結果が得られる場合を例示する説明図である。 2ビット以上の訂正不能な誤りが発生している時の判定結果を列挙する説明図である。 訂正不能エラーに対して例外処理を実行可能にする例を示す説明図である。 ユーザデータとECCコードの符号語に採用される固定フォーマットの一例を示す説明図である。 図23の固定フォーマットの更に詳細を例示する説明図である。 行列テーブルのデータを保有するECCテーブルを例示する説明図である。 ECCコード生成プログラムによる処理手順を例示するフローチャートである。 図26の手順で生成されたECCコード付加データをリードしたときのエラー判定処理の詳細を示すフローチャートである。 1ビットの誤りに対するエラー訂正処理の詳細を示すフローチャートである。 マルチチップのデータ処理システムを例示するブロック図である。 多値フラッシュメモリにおける4値のデータと閾値電圧との関係を例示する説明図である。
符号の説明
1 マイクロコンピュータ
2 CPU
3 RAM
5 フラッシュメモリ
6 フラッシュコントロールモジュール
8 マスクROM
20 メモリセルアレイ
20A ブート領域
20B ユーザ領域
20Ba 相対的に書換え保証回数の高い記憶領域
20Bb 相対的に書換え保証回数の低い記憶領域
21 ECCコード生成プログラム
22 エラー訂正プログラム
DA1 ユーザデータの配列
DA2 固定フォーマットの符号語の配列
DA3 ECCコードのみから成るデータ配列
DATA1 ECCコード付加パラメータデータ
DATA2 エラー判定・訂正済パラメータデータ
RER リードエラービット
30 リードエラーフラグ
40 行列テーブル
41 生成行列
42 検査行列
M データ(ユーザデータ)
41A 生成行列の内ECCに関する部分を抜き出した行列
P ECCコード
C 符号語
Rlt エラー判定の演算結果
Cer 1ビットの誤りを含む符号語
Ber 誤りビット
50 データプロセッサ
51 フラッシュメモリ
65 CPU
66 RAM
67 ROM
70 メモリセルアレイ
70E 相対的に書換え保証回数の高い記憶領域

Claims (2)

  1. nビットのデータに対してECCコードをmビットとするとき、mビットの相互に異なる2進数をm+n列に並べた行列テーブルを用いるデータ処理方法であって、ECCコードの生成では、データの論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値をECCコードとし、データにECCコードを付加してm+nビットの符号語を生成することを特徴とするデータ処理方法。
  2. 前記符号語の論理値“1”のビット位置に対応する前記行列テーブルの列の値を行方向のビット毎に排他的論理和を採り、これによって得られたmビットの値が全ビット論理値“0”のときはエラー無と判定して前記符号語のnビットのデータを正規データとし、前記排他的論理和によって得られたmビットの値が1ビットでも論理値“1”のときはエラー有りと判定して、前記行列テーブルの列から、前記排他的論理和によって得られたmビットの2進数に一致する列を検索し、検索された列に対応される位置の符号語のビットを論理値反転して訂正し、訂正された符号語のnビットのデータを正規データとする、ことを特徴とする請求項2記載のデータ処理方法。
JP2006318039A 2006-11-27 2006-11-27 データ処理方法 Pending JP2007104708A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006318039A JP2007104708A (ja) 2006-11-27 2006-11-27 データ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006318039A JP2007104708A (ja) 2006-11-27 2006-11-27 データ処理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000275983A Division JP2002091831A (ja) 2000-09-12 2000-09-12 データ処理システム及びデータ処理方法

Publications (1)

Publication Number Publication Date
JP2007104708A true JP2007104708A (ja) 2007-04-19

Family

ID=38031103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006318039A Pending JP2007104708A (ja) 2006-11-27 2006-11-27 データ処理方法

Country Status (1)

Country Link
JP (1) JP2007104708A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092574A (ja) * 2008-10-12 2010-04-22 Kyoto Software Research Inc フラッシュファイルシステムの誤り訂正機能
JP2010262640A (ja) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
WO2015102035A1 (en) * 2013-12-30 2015-07-09 International Business Machines Corporation Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
US10489243B2 (en) 2017-03-13 2019-11-26 Toshiba Memory Corporation Memory controller and memory system
JP7354253B2 (ja) 2018-12-11 2023-10-02 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092574A (ja) * 2008-10-12 2010-04-22 Kyoto Software Research Inc フラッシュファイルシステムの誤り訂正機能
JP2010262640A (ja) * 2009-04-30 2010-11-18 Internatl Business Mach Corp <Ibm> 不揮発性メモリの適応型エンデュランス・コーディング方法及びシステム
WO2015102035A1 (en) * 2013-12-30 2015-07-09 International Business Machines Corporation Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
US9430375B2 (en) 2013-12-30 2016-08-30 International Business Machines Corporation Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
JP2017504920A (ja) * 2013-12-30 2017-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
US10489243B2 (en) 2017-03-13 2019-11-26 Toshiba Memory Corporation Memory controller and memory system
JP7354253B2 (ja) 2018-12-11 2023-10-02 日本テキサス・インスツルメンツ合同会社 インラインecc保護のための方法及びシステム

Similar Documents

Publication Publication Date Title
US6941505B2 (en) Data processing system and data processing method
KR101572830B1 (ko) 비휘발성 메모리 장치의 프로그램 방법, 비휘발성 메모리 장치 및 비휘발성 메모리 시스템
KR100837282B1 (ko) 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템,그것의 프로그램 방법 및 읽기 방법
US9262266B2 (en) Nonvolatile memory devices with age-based variability of read operations and methods of operating same
US9971647B2 (en) Apparatus and method for programming ECC-enabled NAND flash memory
US8503236B2 (en) Nonvolatile memory device, methods of programming the nonvolatile memory device and memory system including the nonvolatile memory device
KR101736792B1 (ko) 플래시 메모리 및 그것의 셀프 인터리빙 방법
US8189393B2 (en) Nonvolatile memory device with incremental step pulse programming
CN101847443B (zh) 非易失性存储器器件和相关的编程方法
KR101636248B1 (ko) 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
JP6258399B2 (ja) 半導体装置
KR20110022414A (ko) 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템, 및 그것의 프로그램 방법
KR20100096457A (ko) 메모리 시스템 및 그것의 데이터 처리 방법
TW201810285A (zh) 半導體記憶裝置及記憶體系統
US10283203B2 (en) Semiconductor memory device and method of operating the same
TW201707006A (zh) 包括多個記憶體區域的記憶體系統和操作該記憶體系統的方法
JP2002091831A (ja) データ処理システム及びデータ処理方法
JP2010500699A (ja) メモリデバイス内のセクタごとに許容できるビットエラー
KR20140121159A (ko) 멀티 레벨 셀 메모리 시스템
JP2007104708A (ja) データ処理方法
JP7018089B2 (ja) 半導体記憶装置および読出し方法
CN111290876B (zh) 存储器系统及其操作方法
JP2023120450A (ja) 半導体記憶装置および誤り検出訂正方法
JP4582078B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090609

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091110