説明

不揮発性記憶装置および不揮発性メモリコントローラ

【課題】全消去検出回路の出力と書き込みマークの有無に基づいて書き込み状態を制御回路によって判定することによって、正確に書き込み途中の電源遮断等の異常を検出することのできる信頼性の高い不揮発性記憶装置及びその書き込み判定方法を提供する。
【解決手段】不揮発性メモリから書き込み単位のデータを読み出す際に、全消去検出部によって読み出しデータが消去済みであるかどうかを判定すると共に、デスクランブル処理部によりデスクランブルされさらに誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域がフラグ書き込み済みであるかどうかを判別し、スクランブルパターン発生部によって生成される前記書き込み済みフラグ領域に対応するスクランブルパターンが、前記所定のビットパターンを消去済みの状態とは異なる状態にスクランブルする。

【発明の詳細な説明】
【技術分野】
【0001】
本願は、フラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置に関する。本願は、不揮発性メモリを制御する不揮発性メモリコントローラに関する。
【背景技術】
【0002】
不揮発性メモリを搭載した不揮発性記憶装置は、メモリカードとして実用化されており、デジタルカメラや携帯電話のメモリカードとして市場を拡大している。メモリカードは、デジタルカメラの高画素化や、携帯電話での動画記録等の用途へ向けて大容量化・高速化の拡がりを見せている。
【0003】
メモリカードに搭載されている主な不揮発性メモリは、フラッシュメモリである。フラッシュメモリは、大容量化に伴い、消去単位である物理ブロックサイズが拡大する傾向にあるが、メモリカードとしてホスト及びホストを操作するユーザ側から見た管理単位は一定である。その結果、メモリカードに搭載されている不揮発性メモリコントローラの制御によりホスト側のデータの管理と、フラッシュメモリ側のデータの管理の調整を行う必要がある。
【0004】
一般的にホストがメモリカードに格納するデータの管理単位は、フラッシュメモリの物理ブロックの容量である256キロバイト〜512キロバイトに比べて小さく、例えば16キロバイトである。従って、不揮発性メモリコントローラは、物理ブロックに対して途中まで書き込まれた状態を管理している。
【0005】
特開2007−241618号公報は、不揮発性メモリコントローラに不揮発性記憶装置の信頼性を向上させるための誤り訂正機能が搭載されている半導体記憶装置を開示している。特開2007−241618号公報が開示している半導体記憶装置は、不揮発性メモリにデータの書き込みを行う際に誤り訂正符号を付加し、不揮発性メモリからのデータの読出し時に、併せて誤り訂正符号を読み出して誤り訂正を行っている。この誤り訂正機能は、不揮発性メモリにデータを書き込んでいる際における不揮発性記憶装置に対する電源遮断を検出する際にも実行する。これにより、特開2007−241618号公報が開示している半導体記憶装置は、データ書き込み中の電源遮断によって、異常なデータが不揮発性メモリに書き込まれるため誤り訂正機能によって誤り訂正が出来ないという異常動作と、書き込みマークを使用して、確率的に電源遮断が発生したという異常動作とを検出することが可能である。
【0006】
特開2008−198299号公報が開示している半導体記憶装置は、不揮発性メモリの信頼性を向上させるために、不揮発性メモリコントローラにスクランブル機能を搭載し、スクランブルしたデータを不揮発性メモリに書き込むことを開示している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2007−241618号公報
【特許文献2】特開2008−198299号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特開2007−241618号公報が開示している書き込みマークによる電源遮断の異常動作の検出は、不揮発性メモリに対して固定データを書き込むことによって実現しているので、特開2007−241618号公報の技術に特開2008−198299号公報での背景として適用されるデータに対するスクランブルの技術をそのまま適用することは適切ではない。特開2007−241618号公報及び特開2008−198299号公報は、共にデータの信頼性を向上させるための技術であるにも係わらず同時に適用することは困難であるという課題があった。
【課題を解決するための手段】
【0009】
本願に開示する不揮発性メモリコントローラは、不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、各部を制御する制御部とを備えている。前記制御部は、前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御する。前記制御部は、前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する。
【0010】
本願に開示する不揮発性記憶装置は、複数の書き込み単位からなる記憶領域を含み、データを記憶すると共に、前記書き込み単位の中にさらに書き込み済みフラグ領域を記憶する領域を有する不揮発性メモリと、不揮発性メモリコントローラとを備え、前記不揮発性メモリコントローラは、不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、各部を制御する制御部とを備えている。前記制御部は、前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御する。前記制御部は、前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する。
【発明の効果】
【0011】
本願によれば、全消去検出回路の出力と書き込みマークの有無に基づいて書き込み状態を制御回路によって判定することによって、正確に書き込み途中の電源遮断等の異常を検出することのできる信頼性の高い不揮発性記憶装置及びその書き込み判定方法を提供することができる。
【図面の簡単な説明】
【0012】
【図1】実施の形態1にかかる不揮発性記憶装置のブロック図
【図2】不揮発性メモリに書き込まれたデータの構造を示す模式図
【図3】書き込み済みフラグのスクランブル処理を表した模式図
【図4】実施の形態1にかかる不揮発性記憶装置のデータ判定処理のフローチャート
【図5】書き込み済みフラグのデスクランブル処理を表した模式図
【図6】消去済みの書き込み済みフラグのデスクランブル処理を表した模式図
【図7】書き込み済みフラグのデスクランブル処理がない場合の模式図
【図8】スクランブルの有無によるフラグ判定を示す図
【図9】実施の形態2にかかる不揮発性記憶装置のデータ判定処理を示すフローチャート
【発明を実施するための形態】
【0013】
(実施の形態1)
〔1.不揮発性記憶装置の構成〕
不揮発性記憶装置の実施の形態1について説明する。
【0014】
図1は、実施の形態1にかかる不揮発性記憶装置のブロック図である。図1に示す不揮発性メモリ101は、不揮発性記憶装置の一例である。不揮発性メモリコントローラ102は、バッファメモリ103、入力セレクタ104、スクランブル処理部105、出力セレクタ106、フラグ出力部107、誤り訂正符号生成部108、デスクランブル処理部109、誤り検出訂正部110、全消去検出部111、スクランブルパターン発生部112、MPU(Micro Processor Unit)113を備えている。
【0015】
不揮発性メモリ101は、データを不揮発で記憶することが可能なフラッシュメモリである。
【0016】
不揮発性メモリコントローラ102は、不揮発性メモリ101を制御することができる。
【0017】
バッファメモリ103は、不揮発性メモリ101に書き込むデータ、および不揮発性メモリ101から読み出したデータを格納する。
【0018】
不揮発性メモリコントローラ102から不揮発性メモリ101へデータを書き込む時には、バッファメモリ103に書き込まれたデータは、入力セレクタ104、スクランブル処理部105、出力セレクタ106を経由して、不揮発性メモリ101に転送される。
【0019】
入力セレクタ104は、バッファメモリ103から読み出されたデータと、フラグ出力部107から出力されたデータのうちいずれか一方を選択して、選択したデータをスクランブル処理部105へ送る。
【0020】
スクランブル処理部105は、入力セレクタ104から送られるデータに対してスクランブル処理を実行する。スクランブル処理部105は、スクランブル処理後のデータを、出力セレクタ106と誤り訂正符号生成部108とに送る。
【0021】
出力セレクタ106は、スクランブル処理部105から送られるデータと誤り訂正符号生成部108から送られるデータのうちいずれか一方を選択して、選択したデータを不揮発性メモリ101へ送る。
【0022】
フラグ出力部107は、フラグ情報を出力する。
【0023】
誤り訂正符号生成部108は、誤り訂正符号を生成する。誤り訂正符号生成部108は、スクランブル処理部105から送られるデータに、誤り訂正符号を付加する。
【0024】
デスクランブル処理部109は、不揮発性メモリ101から送られるスクランブル処理されたデータに対して、デスクランブル処理を実行する。すなわち、デスクランブル処理部109は、スクランブル処理されたデータを、スクランブル処理される前のデータに戻す処理を実行する。
【0025】
誤り訂正検出部110は、不揮発性メモリ101から読み出したデータおよび誤り訂正符号に基づき誤りを検出した時には、バッファメモリ103に書き込まれたデータの中から誤りがあるデータを読み出して、読み出したデータの誤りを訂正し、誤りを訂正したデータをバッファメモリ103に書き戻す。誤り訂正符号生成部108および誤り検出訂正部110で使用する誤り訂正符号は、一例として、BCH符号やRS符号(Reed Solomon)を使用しているが、どのような誤り訂正符号を使用してもよい。ここで使用する誤り訂正符号の特徴は、不揮発性メモリ101から読み出したデータが全消去の状態(全て“1”)の時に、「誤りが1ビットもない」と判断するように符号を決定している。この誤り訂正符号は、不揮発性メモリ101に対するデータの書き込み時における電源遮断による異常の検出性能を高めるために必要である。全消去の状態を「誤りなし」と判定するような符号化を行うことにより、消去状態から書き込まれたビット数が、誤り訂正回路で訂正可能な誤り以下の時には確実に異常を検出することができる。
【0026】
不揮発性メモリコントローラ102から不揮発性メモリ101へデータを書き込むとき、バッファメモリ103に書き込まれたデータは、入力セレクタ104、スクランブル処理部105、出力セレクタ106を経由して、不揮発性メモリ101に転送される。
【0027】
また、不揮発性メモリ101から不揮発性メモリコントローラ102にデータを読み出すとき、不揮発性メモリ101から読み出されたデータは、デスクランブル処理部109を経由してバッファメモリ103に送られる。不揮発性メモリ101から読み出されたデータは、誤り検出訂正部110および全消去検出部111に送られる。
【0028】
スクランブルパターン発生部112は、不揮発性メモリ101にデータを書き込むときおよび不揮発性メモリ101からデータを読み出すときに、スクランブル処理部105およびデスクランブル処理部109にスクランブルパターンを与える。本明細書に記載の「スクランブル処理」とは、スクランブル前のデータをスクランブル前のデータとは異なるデータに変換することを意味すると共に、スクランブル処理後のパターンをデスクランブル処理することでスクランブル前のパターンに戻すことが可能な可逆処理(Reversible Operation)である。簡単なスクランブル処理の例としては、スクランブルされるパターンと、スクランブルパターン発生部112で発生したパターンとの排他的論理和をとる手法がある。具体的には、例えばスクランブル前のデータ“00000000”を、スクランブルパターン“01010011”でスクランブル処理を行うと、スクランブル処理後のデータはスクランブル処理前のデータとは異なる“01010011”となる。スクランブル処理後のデータ“01010011”を、デスクランブルパターン“01010011”でスクランブル処理を行うと、デスクランブル処理後のデータはスクランブル処理前のデータと同じパターンを有する“00000000”となる。なお、これはスクランブル処理の一例であり、可逆処理が可能であれば他の方法を用いても問題ない。
【0029】
MPU113は、不揮発性メモリコントローラ102全体の処理を行う。
【0030】
図2は、不揮発性メモリ101に書き込まれたデータの構造を示す模式図である。
【0031】
不揮発性メモリ101は、複数の物理ブロック201を備えている。物理ブロック201は、不揮発性メモリ101におけるデータの消去単位である。物理ブロック201は、複数の物理ページ202を備えている。物理ページ202は、不揮発性メモリ101におけるデータの書き込み単位である。物理ページ202は、データ領域と管理領域203とを備えている。管理領域203に書き込むデータとしては、誤り訂正符号、管理情報、および書き込み済みフラグなどがある。誤り訂正符号は、データ領域のデータに対応する誤り訂正符号である。管理情報は、不揮発性メモリコントローラ102が不揮発性メモリ101におけるデータの論理的な格納構造を管理するための情報である。書き込み済みフラグは、管理領域203内の書き込み済みフラグ領域204に書き込まれる。
【0032】
フラッシュメモリである不揮発性メモリ101は、一般的に消去後のデータが“1”であり、データ“0”を書き込むことしか出来ない。つまり、データ“0”が書き込まれているの場所にデータ“1”を書き込むためには、一旦データ“0”を消去してデータ“1”に書き換える必要がある。このようなデータの消去処理は、物理ブロック201単位で行われる。
【0033】
〔2.不揮発性メモリへデータを書き込む動作〕
図1および図2を参照して、不揮発性メモリ101へのデータの書き込み動作および不揮発性メモリ101からのデータの読み出し動作を説明する。データ書き込み動作及びデータ読み出し動作の制御は、MPU113が不揮発性メモリコントローラ102を制御することで実現している。
【0034】
不揮発性メモリ101に物理ページ202単位でデータを書き込む際、不揮発性メモリコントローラ102は、最初にデータ領域のデータを不揮発性メモリ101に転送するために、バッファメモリ103に書き込まれたデータの中から、不揮発性メモリに書き込むべきデータを読み出す。バッファメモリ103から読み出されたデータは、入力セレクタ104へ送られる。入力セレクタ104は、バッファメモリ103から読み出されたデータをスクランブル処理部105に送る。
【0035】
スクランブル処理部105は、スクランブルパターン生成部112によって生成されたスクランブルパターンに基づき、入力セレクタ104から送られたデータをスクランブル処理する。スクランブル処理部105は、スクランブル処理後のデータを、出力セレクタ106および誤り訂正符号生成部108に送る。スクランブルパターン発生部112は、スクランブル処理によってデータがばらつくことを目的とするために、個々の物理ページごとに異なるスクランブルパターンを生成する。
【0036】
出力セレクタ106は、スクランブル処理部105から出力されるデータを不揮発性メモリ101に送る。従って、不揮発性メモリ101のデータ領域には、バッファメモリ103から読み出されたデータを、スクランブルパターン発生部112で生成したスクランブルパターンでスクランブル処理したデータが書き込まれる。また、誤り訂正符号生成部108によって生成される誤り訂正符号は、スクランブル処理部105によってスクランブル処理を行われた後のデータであり、かつ不揮発性メモリ101に書き込まれているデータと同じである。
【0037】
次に、不揮発性メモリ101の書き込み済みフラグ領域204の書き込み済みフラグを転送するために、入力セレクタ104は、フラグ出力部107から出力されるデータを選択してスクランブル処理部105に送る。フラグ出力部107は、フラッシュメモリにおける消去済みではない値“0”を出力する。
【0038】
スクランブル処理部105は、スクランブルパターン生成部112によって生成されたスクランブルパターンに基づき、入力セレクタ104から送られるデータをスクランブル処理する。スクランブル処理部105は、スクランブル後のデータを、出力セレクタ106および誤り訂正符号生成部108に送る。スクランブルパターン発生部112は、フラグ出力部107のデータが入力セレクタ104で選択されているとき、特定パターン以外のスクランブルパターンを発生する。「特定パターン」とは、値が全て“1”のスクランブルパターンである。
【0039】
出力セレクタ106は、スクランブル処理部105から送られるデータを選択して、スクランブル処理部105から送られるデータを不揮発性メモリ101に送る。従って、不揮発性メモリ101の書き込み済みフラグ領域204には、フラグ出力部107から出力されたデータをスクランブルパターン発生部112で生成したスクランブルパターンでスクランブル処理したデータが送られる。また、誤り訂正符号生成部108によって生成される誤り訂正符号は、スクランブル処理部105によってスクランブル処理が行われた後のデータである。誤り訂正符号は、不揮発性メモリ101に書き込まれているデータと同じである。
【0040】
不揮発性メモリコントローラ102は、不揮発性メモリ101の管理領域203に書き込み済みフラグ領域204以外の管理情報の書き込みも行う。書き込み済みフラグ領域204以外の管理情報の書き込み動作の説明は、省略する。
【0041】
出力セレクタ106は、管理領域203に誤り訂正符号を転送するために、誤り訂正符号生成部108で演算を行った結果である誤り訂正符号を選択して、誤り訂正符号を不揮発性メモリ101に送る。誤り訂正符号生成部108によって生成された誤り訂正符号は、スクランブル処理部105によってスクランブル処理を行われた後のデータである。誤り訂正符号生成部108によって生成された誤り訂正符号は、不揮発性メモリ101に書き込まれているデータと同じである。
【0042】
図3は、不揮発性メモリ101にデータを書き込む際の、書き込み済みフラグ領域204の状態を示す模式図である。所定のビットパターンBP1は、フラグ出力部107によって出力される書き込み済みフラグのスクランブル前のビットパターンである。図3に示す「スクランブル処理」は、スクランブルパターン発生部112(図1参照)によって発生されたスクランブルパターンによって、スクランブル処理部105(図1参照)が行うスクランブル処理である。ビットパターンBP2〜BPmは、スクランブル処理後のビットパターンである。スクランブルパターン発生部112は、様々なスクランブルパターンを生成する可能性があるため、スクランブル処理後のビットパターンは様々なパターンとなる可能性がある。しかし、スクランブルパターン発生部112は、特定パターン(全て“1”のスクランブルパターン)は生成しないので、スクランブル処理部105は、ビットパターンBP1を全て“1”のビットパターン(ビットパターンBPe)には変換しない。つまり、不揮発性メモリ101の書き込み済みフラグ領域204には、値が全て“1”のビットパターンを有するデータは書き込まれない。すなわち、書き込み済みフラグ領域204に書き込むデータのビットパターンは、消去済みの状態を表す、値が全て“1”のビットパターンとはならないようにしている。
【0043】
また前述したように、スクランブルパターン発生部112は、ページ毎に異なるスクランブルパターンを生成する。従って、不揮発性メモリコントローラ102は、不揮発性メモリ101に対してページ毎に異なるパターンで、かつ消去済みではないパターンを書き込み済みフラグ領域204に書き込む。
【0044】
〔3.不揮発性メモリからデータを読み出す動作〕
不揮発性メモリ101から物理ページ202単位でデータを読み出す際、MPU113は、最初に不揮発性メモリ101のデータ領域に書き込まれたデータを読み出して、デスクランブル処理部109、誤り検出訂正部110、全消去検出部111に転送するよう制御する。デスクランブル処理部109は、スクランブルパターン発生部112で生成したスクランブルパターンに基づき、データ領域から読み出されたデータをデスクランブル処理する。デスクランブル処理部109は、デスクランブル処理したデータをバッファメモリ103に書き込む。デスクランブル処理部109によってバッファメモリ103に書き込まれるデータは、不揮発性メモリ101において発生した可能性があるビットエラーの箇所を除き、不揮発性メモリ101へのデータの書き込みの際にバッファメモリ103から読み出したデータと同じデータとなる。
【0045】
次に、MPU113は、不揮発性メモリ101における書き込み済みフラグ領域204に書き込まれたデータを読み出して、デスクランブル処理部109、誤り検出訂正部110、全消去検出部111に転送するよう制御する。デスクランブル処理部109は、スクランブルパターン発生部112で生成したスクランブルパターンに基づき、書き込み済みフラグ領域204から読み出されたデータをデスクランブル処理する。デスクランブル処理部109は、デスクランブル処理したデータをバッファメモリ103に書き込む。デスクランブル処理によってバッファメモリ103に書き込まれるデータは、不揮発性メモリ101において発生した可能性があるビットエラーの箇所を除き、フラグ出力部107から出力された「ビットパターンが全て“0”のデータ」と同じデータとなる。
【0046】
次に、MPU113は、不揮発性メモリ101における書き込み済みフラグ領域204以外の管理領域203のデータを読み出して、誤り検出訂正部110、全消去検出部111に転送するよう制御する。
【0047】
MPU113は、不揮発性メモリ101からデータを読み出した後、2つの判定処理を行う。1つ目の判定処理は、誤り検出訂正部110の演算結果に基づき、不揮発性メモリ101から読み出したデータに誤りが無いまたは訂正可能な誤りがあったか、訂正不可能な誤りが発生しているかを判定する処理である。2つ目の判定処理は、全消去検出部111における検出結果に基づき、不揮発性メモリ101から読み出したデータのビットパターンが全て“1”であったか否かを判定する処理である。全消去検出部111は、例えば特開2007−241618号公報の図6に開示されている回路で実現できる。
【0048】
図4は、不揮発性メモリ101にデータの書き込みを行う際に発生した可能性がある、電源遮断によるデータの異常を検出するフローチャートである。
【0049】
最初に、MPU113は、不揮発性メモリ101から読み出したデータが書き込み済みであるかどうかを判定する(判定処理401)。具体的には、MPU113は、全消去検出部111の検出結果を参照し、不揮発性メモリ101から読み出したデータのビットパターンが全て“1”であった場合(判定処理401におけるNo判定)、未書き込みデータであると判定する。
【0050】
一方、MPU113は、不揮発性メモリ101から読み出したデータになんらかのデータが書き込み済みであると判定した場合には(判定処理401におけるYES判定)、不揮発性メモリ101から読み出したデータが訂正可能であるかを判定する(判定処理402)。MPU113は、データの誤り訂正が可能な否かの判断に、誤り検出訂正部110の演算結果を使用する。MPU113は、不揮発性メモリ101から読み出したデータが誤り訂正が不可能であると判断した場合(判定処理402におけるNo判断)には、当該データを「異常データ」と判定する。
【0051】
ここで、訂正処理が不可能な誤りが発生する確率は、不揮発性メモリ101に対して正しくデータが書き込まれていれば、不揮発性メモリ101の性能から考えてきわめて低い。むしろ、訂正処理が不可能な誤りが発生しないように誤り訂正回路の訂正能力を決定しているので、MPU113が、「不揮発性メモリ101から読み出したデータに誤り検出訂正部110で訂正できない誤りがある」と判定した場合には、不揮発性メモリ101へのデータ書き込み時における電源遮断等に起因する異常データであることがわかる。また、不揮発性メモリ101から読み出したデータが異常データである場合には、きわめて高い確率で誤り訂正処理が不可となる。
【0052】
例えば、512バイトのデータに対して8ビット訂正可能なBCH符号を付加する場合、必要な誤り訂正符号ビットは104ビットである。異常なデータの例としてランダムなデータに対して誤り訂正が可能となってしまう確率Pは、誤り訂正可能な全てのパターンBPERと、取り得る全てのパターンBPALとに基づき、算出することができる。
【0053】
P=BPER/BPAL
誤り訂正可能な全てのパターンBPERは、512バイトデータの取りうる全てのパターンBP512と、0〜8ビットの誤りの組み合わせの数ERとに基づき算出することができる。
【0054】
BPER=BP512/ER
後半の組み合わせは、ほぼ2×1024である。
【0055】
また、取りうる全てのパターンBPALは、512バイトデータの取りうる全てのパターンBP512と、104ビットの取りうる全てのパターンBP104とに基づき求めることができる。
【0056】
BPAL=BP512/BP104
後半のパターン数は、ほぼ2×1031である。従って、ランダムなパターンが訂正可能となる確率は、1/107となり、極めて低い。逆に言えば、ほぼ100%に近い確率でランダムデータを異常と判定できるといえる。
【0057】
次に、MPU113は、不揮発性メモリ101から読み出したデータが訂正可能であると判定した場合(判定処理402のYES判定)には、誤り検出訂正部110によってバッファメモリ103のデータを訂正するよう制御する(処理403)。この際に、MPU113は、書き込み済みフラグに相当するビットに誤りがあり訂正可能と判定していれば、バッファメモリ103に格納されている当該部の誤りを訂正する。
【0058】
次に、MPU113は、バッファメモリ103の書き込み済みフラグ領域に相当する位置に正しくフラグが読み出されているかを判定する。即ち、MPU113は、フラグが全て“0”であるかを判定する(判定処理404)。
【0059】
図5は、不揮発性メモリ101に対して正しく書き込みが行えたデータを読み出した後の書き込み済みフラグの状態を示す模式図である。図5におけるビットパターンBR2〜BPmは、図3に示すビットパターンBP2〜BPm(変換される可能性のあるビットパターン)を全て挙げている。図1に示すデスクランブル処理部109は、スクランブルパターン発生部112が発生したスクランブルパターンによって、デスクランブル処理を実行する。図5に示すビットパターンBP1は、デスクランブル処理後のビットパターンである。デスクランブル処理部109において正しくデスクランブル処理が行えた場合には、ビットパターンBP2〜BPmは所定のビットパターンBP1に戻る。即ち、MPU113は、デスクランブル処理後のビットパターンが全て“0”であれば(ビットパターンBP1)、図4に示す判定処理404でYesと判定し、「正常データである」と判定する。
【0060】
図6は、消去済みであり未書き込みのデータを読み出した後の書き込み済みフラグの状態を示す模式図である。図6に示すビットパターンBP11は、不揮発性メモリ101における消去済みであり未書き込みの物理ページにある書き込み済みフラグ領域204のビットパターンである。ビットパターンBP12〜BPnは、デスクランブル処理後のビットパターンである。
【0061】
デスクランブル処理部109は、デスクランブルのパターンとして正しくデスクランブル処理が行えた場合には、値が全て“0”のビットパターン(ビットパターンBPf)以外のビットパターンに変換する。例えば、デスクランブル処理部109は、ビットパターンBP12〜BPnのうちいずれかのビットパターンに変換する。即ち、MPU113は、デスクランブル処理後のビットパターンが全て“0”のビットパターンでないので、図4に示す判定処理404においてNoと判定し、「異常データである」と判定する。
【0062】
すなわち、MPU113は、不揮発性メモリ101に対してデータの書き込みを行っている際の電源遮断等によるデータ異常において書き込み済みのビットが1ビット以上かつ誤り訂正処理で訂正可能な範囲であれば、そのことによって全消去検出部111の検出結果に基づき書き込み済みであると判断し、誤り訂正検出部110において誤りを訂正可能と判定し、さらにバッファメモリ103のデータを訂正した後に、全て“0”の所定のパターンでないことから「フラグなし」と判定し、異常データであることがわかる。
【0063】
つまり、不揮発性メモリ101にデータを書き込み中に電源遮断が発生していた事が予測される時には、電源遮断直前までに書き込まれたビット数が誤り検出訂正部110によって誤り訂正可能なビット数であっても、不揮発性メモリ101から読み出したデータを異常データとして取り扱う。
【0064】
同様に、不揮発性メモリ101に対してデータの書き込みを行っている際の電源遮断等によるデータ異常において書き込み済みのビットが誤り訂正処理で訂正出来るビット数を越えている場合には、ランダムなデータパターンと同等とみなせる。したがって、極めて高い確率でデータの誤り訂正が不可となるため(図4に示す判定処理403で「訂正不可」と判定)、異常データであることがわかる。
【0065】
図7は、デスクランブル処理部109でデスクランブル処理を行わなかった場合の、不揮発性メモリ101から読み出した書き込み済みフラグの状態を示す模式図である。図7に示す書き込み済みフラグは、不揮発性メモリ101の読み出しを行うデータに対応するスクランブルパターンが不明な場合を想定しており、その場合にはデスクランブル処理を行わずにバッファメモリ103にデータを転送する。
【0066】
ビットパターンBP21は、消去済みのパターンである。ビットパターンBP22〜BPgは、所定のビットパターンである全て“0”のパターンに、スクランブル処理部105でスクランブル処理を行ったときに取りうるビットパターンである。消去済みのビットパターンBP21は、そのまま全て“1”のビットパターンBP31として読み出される。ビットパターンBP22〜BPgは、全て“1”のビットパターンではないとして読み出される(ビットパターンBP32〜BPh)。MPU113は、図4のフローチャートの判定処理404において全て“1”のパターンのみを「フラグなし」と判定することで、正しく異常データであることを認識できる。
【0067】
図8は、図4に示す判定処理404での判定方法をデスクランブル処理の有無で分類した表である。
【0068】
本実施の形態によれば、不揮発性メモリ101に対する書き込み済みフラグ領域の設定および、書き込み時における書き込み済みフラグ領域のためのスクランブルパターンおよび、読み出し時におけるフラグ判定を行うことで、スクランブル処理を適用した不揮発性メモリに対する、書き込み途中の電源遮断に起因するデータの異常を検出することが可能となる。
【0069】
(実施の形態2)
不揮発性記憶装置及び不揮発性メモリコントローラの実施の形態2について説明する。
【0070】
不揮発性記憶装置及び不揮発性メモリは実施の形態1と同じ構成で実現できる。ただし、実施の形態2にかかる不揮発性メモリコントローラは、全消去検出部111をデータ処理に使用しない。また、スクランブルパターン発生部112が発生するスクランブルパターンは、実施の形態1に示すスクランブルパターンと同じである。スクランブル処理部105やデスクランブル処理部109での処理内容は、実施の形態1に示す処理内容と同じである。
【0071】
実施の形態2における不揮発性メモリコントローラが実施の形態1における不揮発性メモリコントローラと異なるのは、不揮発性メモリ101へデータを書き込み中に電源遮断が発生していた事が予測される時にも、電源遮断直前までに書き込まれたビット数が誤り検出訂正部110によって誤り訂正可能なビット数である場合には、異常データとして取り扱わずに、「未書き込みのデータ」と判断する。
【0072】
この判断は、不揮発性メモリのプロセス微細化によってデータ信頼性が低下して、消去済みで未書き込みのページであっても、ビット誤りが存在する場合に対応するための判断である。
【0073】
実施の形態2における電源遮断の異常を検出するフローチャートは、実施の形態1における異常検出フローチャートとは異なる。
【0074】
図9は、実施の形態2における電源遮断によるデータの異常を検出するフローチャートを示す。
【0075】
最初に、MPU113は、不揮発性メモリ101から読み出したデータが訂正可能かどうかを判定する(判定処理901)。この判定処理は、誤り検出訂正部110の演算結果を使用する。MPU113は、誤り訂正が不可能であると判断した場合には(判定処理901におけるNo判定)、不揮発性メモリ101から読み出したデータを「異常データ」と判定する。不揮発性メモリ101に対して正しくデータが書き込まれていれば、誤り訂正が不可能な誤りが発生する確率は、不揮発性メモリ101の性能から考えてきわめて低い。
【0076】
一方、MPU113は、誤り訂正が可能であると判断した場合には(判定処理901におけるYes判定)、誤り検出訂正部110によってバッファメモリ103のデータを訂正するよう制御する(処理902)。この際、MPU113は、書き込み済みフラグに相当するビットに誤りがあり訂正可能と判定されていれば、バッファメモリ103に格納されている当該部の誤りを訂正するよう制御する。
【0077】
次に、MPU113は、判定903でバッファメモリ103の書き込み済みフラグ領域に相当する位置に正しくフラグが読み出されているか否かを判定する。即ち、MPU113は、フラグが全て“0”であるか否かを判定する。MPU113は、全て“0”であれば(判定処理903におけるYes判定)、正常データであると判定する。
【0078】
不揮発性メモリ101に対してデータの書き込みを行っている際の電源遮断等によるデータ異常において書き込み済みのビットが1ビット以上かつ誤り訂正で訂正可能な範囲であれば、以下の流れで処理する。すなわち、MPU113は、誤り訂正検出部110に基づき訂正可能と判定し(判定処理901)、さらにバッファメモリ103のデータを訂正し(処理902)、全て“0”の所定のパターンでないことから「フラグなし」と判定し(判定処理903)、判定処理904を実行する。
【0079】
MPU113は、誤り検出訂正部110において実行した誤り訂正処理の誤り訂正ビット数と規定値とを比較する(判定処理904)。MPU113は、誤り訂正ビット数が規定数未満であれば、未書き込みと判定する。この判定結果は、このページにデータを上書きしても誤りビット数が誤り訂正可能な範囲でおさまると考えるからである。一方、MPU113は、誤り訂正ビット数が規定値以上であれば、「異常データ」と判定する。この判定結果は、誤りビット数が多いために、このページにデータを上書きしても期待するデータ信頼性が得られないと考えるからである。
【0080】
なお、本実施の形態における誤り訂正符号生成部108は、本発明の誤り訂正符号生成部の一例である。本実施の形態における誤り検出訂正部110は、本発明の誤り検出訂正部の一例である。本実施の形態におけるバッファメモリ103は、本発明のバッファメモリの一例である。本実施の形態におけるスクランブル処理部105は、本発明のスクランブル処理部の一例である。本実施の形態におけるMPU113は、本発明の制御部の一例である。本実施の形態における全消去検出部111は、本発明の全消去検出部の一例である。本実施の形態における不揮発性メモリコントローラ102は、本発明の不揮発性メモリコントローラの一例である。本実施の形態における不揮発性メモリ101及び不揮発性メモリコントローラ102は、本発明の不揮発性記憶装置の一例である。
【産業上の利用可能性】
【0081】
本願の不揮発性記憶装置、不揮発性メモリコントローラは、ホストに対してよりデータの信頼性を向上させることができ、ポータブル機器における記憶媒体に適用することができる。
【符号の説明】
【0082】
101 不揮発性メモリ
102 不揮発性メモリコントローラ
103 バッファメモリ
104 入力セレクタ
105 スクランブル処理部
106 出力セレクタ
107 フラグ出力部
108 誤り訂正符号生成部
109 デスクランブル処理部
110 誤り検出訂正部
111 全消去検出部
112 スクランブルパターン発生部
113 MPU

【特許請求の範囲】
【請求項1】
不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、
前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、
前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、
前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、
各部を制御する制御部とを備え、
前記制御部は、
前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御し、
前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する、不揮発性メモリコントローラ。
【請求項2】
前記誤り訂正符号生成部および前記誤り検出訂正部は、前記不揮発性メモリから読み出した前記書き込み単位が未書き込みのデータである場合に、誤りがないと判定するように符号化を行う、請求項1に記載の不揮発性メモリコントローラ。
【請求項3】
前記不揮発性メモリから読み出される、前記書き込み単位のデータが全て消去されているデータかどうかを検出する全消去検出部とを、さらに備えた、請求項2に記載の不揮発性メモリコントローラ。
【請求項4】
前記不揮発性メモリから前記書き込み単位のデータを読み出したとき、前記書き込み済みフラグ領域が所定のビットパターンでない場合に、前記誤り検出訂正部にによって誤り訂正を行ったビット数が所定のビット数未満の時に正常で、所定のビット数以上の時に異常と判断する、請求項2に記載の不揮発性メモリコントローラ。
【請求項5】
複数の書き込み単位からなる記憶領域を含み、データを記憶すると共に、前記書き込み単位の中にさらに書き込み済みフラグ領域を記憶する領域を有する不揮発性メモリと、
不揮発性メモリコントローラとを備え、
前記不揮発性メモリコントローラは、
不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、
前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、
前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、
前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、
各部を制御する制御部とを備え、
前記制御部は、
前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御し、
前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する、不揮発性記憶装置。
【請求項6】
前記誤り訂正符号生成部および前記誤り検出訂正部は、前記不揮発性メモリから読み出した前記書き込み単位が未書き込みのデータである場合に、誤りがないと判定するように符号化を行う、請求項5に記載の不揮発性記憶装置。
【請求項7】
前記不揮発性メモリから読み出される、前記書き込み単位のデータが全て消去されているデータかどうかを検出する全消去検出部とを、さらに備えた、請求項6に記載の不揮発性記憶装置。
【請求項8】
前記不揮発性メモリから前記書き込み単位のデータを読み出したとき、前記書き込み済みフラグ領域が所定のビットパターンでない場合に、前記誤り検出訂正部にによって誤り訂正を行ったビット数が所定のビット数未満の時に正常で、所定のビット数以上の時に異常と判断する、請求項6に記載の不揮発性記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−277584(P2010−277584A)
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願番号】特願2010−103995(P2010−103995)
【出願日】平成22年4月28日(2010.4.28)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】