(57)【要約】【課題】全消去検出回路の出力と書き込みマークの有無に基づいて書き込み状態を制御回路によって判定することによって、正確に書き込み途中の電源遮断等の異常を検出することのできる信頼性の高い不揮発性記憶装置及びその書き込み判定方法を提供する。【解決手段】不揮発性メモリから書き込み単位のデータを読み出す際に、全消去検出部によって読み出しデータが消去済みであるかどうかを判定すると共に、デスクランブル処理部によりデスクランブルされさらに誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域がフラグ書き込み済みであるかどうかを判別し、スクランブルパターン発生部によって生成される前記書き込み済みフラグ領域に対応するスクランブルパターンが、前記所定のビットパターンを消去済みの状態とは異なる状態にスクランブルする。【選択図】図１
2010277584.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、
前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、
前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、
前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、
各部を制御する制御部とを備え、
前記制御部は、
前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御し、
前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する、不揮発性メモリコントローラ。
【請求項２】
前記誤り訂正符号生成部および前記誤り検出訂正部は、前記不揮発性メモリから読み出した前記書き込み単位が未書き込みのデータである場合に、誤りがないと判定するように符号化を行う、請求項１に記載の不揮発性メモリコントローラ。
【請求項３】
前記不揮発性メモリから読み出される、前記書き込み単位のデータが全て消去されているデータかどうかを検出する全消去検出部とを、さらに備えた、請求項２に記載の不揮発性メモリコントローラ。
【請求項４】
前記不揮発性メモリから前記書き込み単位のデータを読み出したとき、前記書き込み済みフラグ領域が所定のビットパターンでない場合に、前記誤り検出訂正部にによって誤り訂正を行ったビット数が所定のビット数未満の時に正常で、所定のビット数以上の時に異常と判断する、請求項２に記載の不揮発性メモリコントローラ。
【請求項５】
複数の書き込み単位からなる記憶領域を含み、データを記憶すると共に、前記書き込み単位の中にさらに書き込み済みフラグ領域を記憶する領域を有する不揮発性メモリと、
不揮発性メモリコントローラとを備え、
前記不揮発性メモリコントローラは、
不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、
前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、
前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、
前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、
各部を制御する制御部とを備え、
前記制御部は、
前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御し、
前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する、不揮発性記憶装置。
【請求項６】
前記誤り訂正符号生成部および前記誤り検出訂正部は、前記不揮発性メモリから読み出した前記書き込み単位が未書き込みのデータである場合に、誤りがないと判定するように符号化を行う、請求項５に記載の不揮発性記憶装置。
【請求項７】
前記不揮発性メモリから読み出される、前記書き込み単位のデータが全て消去されているデータかどうかを検出する全消去検出部とを、さらに備えた、請求項６に記載の不揮発性記憶装置。
【請求項８】
前記不揮発性メモリから前記書き込み単位のデータを読み出したとき、前記書き込み済みフラグ領域が所定のビットパターンでない場合に、前記誤り検出訂正部にによって誤り訂正を行ったビット数が所定のビット数未満の時に正常で、所定のビット数以上の時に異常と判断する、請求項６に記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、フラッシュメモリ等の不揮発性メモリを用いた不揮発性記憶装置に関する。本願は、不揮発性メモリを制御する不揮発性メモリコントローラに関する。
【背景技術】
【０００２】
不揮発性メモリを搭載した不揮発性記憶装置は、メモリカードとして実用化されており、デジタルカメラや携帯電話のメモリカードとして市場を拡大している。メモリカードは、デジタルカメラの高画素化や、携帯電話での動画記録等の用途へ向けて大容量化・高速化の拡がりを見せている。
【０００３】
メモリカードに搭載されている主な不揮発性メモリは、フラッシュメモリである。フラッシュメモリは、大容量化に伴い、消去単位である物理ブロックサイズが拡大する傾向にあるが、メモリカードとしてホスト及びホストを操作するユーザ側から見た管理単位は一定である。その結果、メモリカードに搭載されている不揮発性メモリコントローラの制御によりホスト側のデータの管理と、フラッシュメモリ側のデータの管理の調整を行う必要がある。
【０００４】
一般的にホストがメモリカードに格納するデータの管理単位は、フラッシュメモリの物理ブロックの容量である２５６キロバイト〜５１２キロバイトに比べて小さく、例えば１６キロバイトである。従って、不揮発性メモリコントローラは、物理ブロックに対して途中まで書き込まれた状態を管理している。
【０００５】
特開２００７−２４１６１８号公報は、不揮発性メモリコントローラに不揮発性記憶装置の信頼性を向上させるための誤り訂正機能が搭載されている半導体記憶装置を開示している。特開２００７−２４１６１８号公報が開示している半導体記憶装置は、不揮発性メモリにデータの書き込みを行う際に誤り訂正符号を付加し、不揮発性メモリからのデータの読出し時に、併せて誤り訂正符号を読み出して誤り訂正を行っている。この誤り訂正機能は、不揮発性メモリにデータを書き込んでいる際における不揮発性記憶装置に対する電源遮断を検出する際にも実行する。これにより、特開２００７−２４１６１８号公報が開示している半導体記憶装置は、データ書き込み中の電源遮断によって、異常なデータが不揮発性メモリに書き込まれるため誤り訂正機能によって誤り訂正が出来ないという異常動作と、書き込みマークを使用して、確率的に電源遮断が発生したという異常動作とを検出することが可能である。
【０００６】
特開２００８−１９８２９９号公報が開示している半導体記憶装置は、不揮発性メモリの信頼性を向上させるために、不揮発性メモリコントローラにスクランブル機能を搭載し、スクランブルしたデータを不揮発性メモリに書き込むことを開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２４１６１８号公報
【特許文献２】特開２００８−１９８２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特開２００７−２４１６１８号公報が開示している書き込みマークによる電源遮断の異常動作の検出は、不揮発性メモリに対して固定データを書き込むことによって実現しているので、特開２００７−２４１６１８号公報の技術に特開２００８−１９８２９９号公報での背景として適用されるデータに対するスクランブルの技術をそのまま適用することは適切ではない。特開２００７−２４１６１８号公報及び特開２００８−１９８２９９号公報は、共にデータの信頼性を向上させるための技術であるにも係わらず同時に適用することは困難であるという課題があった。
【課題を解決するための手段】
【０００９】
本願に開示する不揮発性メモリコントローラは、不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、各部を制御する制御部とを備えている。前記制御部は、前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御する。前記制御部は、前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する。
【００１０】
本願に開示する不揮発性記憶装置は、複数の書き込み単位からなる記憶領域を含み、データを記憶すると共に、前記書き込み単位の中にさらに書き込み済みフラグ領域を記憶する領域を有する不揮発性メモリと、不揮発性メモリコントローラとを備え、前記不揮発性メモリコントローラは、不揮発性メモリにデータを書き込む際に誤り訂正符号を生成する誤り訂正符号生成部と、前記不揮発性メモリからデータを読み出す際に誤り訂正符号を含むデータから誤りの検出および誤り訂正を行う誤り検出訂正部と、前記不揮発性メモリに書き込みするデータ、および前記不揮発性メモリから読み出すデータを一時的に保持する揮発性のバッファメモリと、前記不揮発性メモリと前記バッファメモリ間で、書き込みデータを転送する際に、スクランブルパターン発生部によって生成されたスクランブルパターンによって、書き込みデータに対してスクランブル処理を行うスクランブル処理部と、各部を制御する制御部とを備えている。前記制御部は、前記不揮発性メモリの書き込み単位にデータを書き込む際に、スクランブル処理後の書き込みデータと、前記書き込み単位毎に異なるビットパターンとなる書き込み済みフラグと、前記スクランブル処理後の書き込みデータと前記書き込み済みフラグとから前記誤り訂正符号生成部で生成した誤り訂正符号とを、書き込むよう制御する。前記制御部は、前記不揮発性メモリから前記書き込み単位のデータを読み出す際に、前記誤り検出訂正部によって誤り訂正を行った後のデータの書き込み済みフラグ領域が前記所定のビットパターンであるかどうかを判別することでデータが正常か異常かを判断する。
【発明の効果】
【００１１】
本願によれば、全消去検出回路の出力と書き込みマークの有無に基づいて書き込み状態を制御回路によって判定することによって、正確に書き込み途中の電源遮断等の異常を検出することのできる信頼性の高い不揮発性記憶装置及びその書き込み判定方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１にかかる不揮発性記憶装置のブロック図
【図２】不揮発性メモリに書き込まれたデータの構造を示す模式図
【図３】書き込み済みフラグのスクランブル処理を表した模式図
【図４】実施の形態１にかかる不揮発性記憶装置のデータ判定処理のフローチャート
【図５】書き込み済みフラグのデスクランブル処理を表した模式図
【図６】消去済みの書き込み済みフラグのデスクランブル処理を表した模式図
【図７】書き込み済みフラグのデスクランブル処理がない場合の模式図
【図８】スクランブルの有無によるフラグ判定を示す図
【図９】実施の形態２にかかる不揮発性記憶装置のデータ判定処理を示すフローチャート
【発明を実施するための形態】
【００１３】
（実施の形態１）
〔１．不揮発性記憶装置の構成〕
不揮発性記憶装置の実施の形態１について説明する。
【００１４】
図１は、実施の形態１にかかる不揮発性記憶装置のブロック図である。図１に示す不揮発性メモリ１０１は、不揮発性記憶装置の一例である。不揮発性メモリコントローラ１０２は、バッファメモリ１０３、入力セレクタ１０４、スクランブル処理部１０５、出力セレクタ１０６、フラグ出力部１０７、誤り訂正符号生成部１０８、デスクランブル処理部１０９、誤り検出訂正部１１０、全消去検出部１１１、スクランブルパターン発生部１１２、ＭＰＵ（Micro Processor Unit）１１３を備えている。
【００１５】
不揮発性メモリ１０１は、データを不揮発で記憶することが可能なフラッシュメモリである。
【００１６】
不揮発性メモリコントローラ１０２は、不揮発性メモリ１０１を制御することができる。
【００１７】
バッファメモリ１０３は、不揮発性メモリ１０１に書き込むデータ、および不揮発性メモリ１０１から読み出したデータを格納する。
【００１８】
不揮発性メモリコントローラ１０２から不揮発性メモリ１０１へデータを書き込む時には、バッファメモリ１０３に書き込まれたデータは、入力セレクタ１０４、スクランブル処理部１０５、出力セレクタ１０６を経由して、不揮発性メモリ１０１に転送される。
【００１９】
入力セレクタ１０４は、バッファメモリ１０３から読み出されたデータと、フラグ出力部１０７から出力されたデータのうちいずれか一方を選択して、選択したデータをスクランブル処理部１０５へ送る。
【００２０】
スクランブル処理部１０５は、入力セレクタ１０４から送られるデータに対してスクランブル処理を実行する。スクランブル処理部１０５は、スクランブル処理後のデータを、出力セレクタ１０６と誤り訂正符号生成部１０８とに送る。
【００２１】
出力セレクタ１０６は、スクランブル処理部１０５から送られるデータと誤り訂正符号生成部１０８から送られるデータのうちいずれか一方を選択して、選択したデータを不揮発性メモリ１０１へ送る。
【００２２】
フラグ出力部１０７は、フラグ情報を出力する。
【００２３】
誤り訂正符号生成部１０８は、誤り訂正符号を生成する。誤り訂正符号生成部１０８は、スクランブル処理部１０５から送られるデータに、誤り訂正符号を付加する。
【００２４】
デスクランブル処理部１０９は、不揮発性メモリ１０１から送られるスクランブル処理されたデータに対して、デスクランブル処理を実行する。すなわち、デスクランブル処理部１０９は、スクランブル処理されたデータを、スクランブル処理される前のデータに戻す処理を実行する。
【００２５】
誤り訂正検出部１１０は、不揮発性メモリ１０１から読み出したデータおよび誤り訂正符号に基づき誤りを検出した時には、バッファメモリ１０３に書き込まれたデータの中から誤りがあるデータを読み出して、読み出したデータの誤りを訂正し、誤りを訂正したデータをバッファメモリ１０３に書き戻す。誤り訂正符号生成部１０８および誤り検出訂正部１１０で使用する誤り訂正符号は、一例として、ＢＣＨ符号やＲＳ符号（Reed Solomon）を使用しているが、どのような誤り訂正符号を使用してもよい。ここで使用する誤り訂正符号の特徴は、不揮発性メモリ１０１から読み出したデータが全消去の状態（全て“１”）の時に、「誤りが１ビットもない」と判断するように符号を決定している。この誤り訂正符号は、不揮発性メモリ１０１に対するデータの書き込み時における電源遮断による異常の検出性能を高めるために必要である。全消去の状態を「誤りなし」と判定するような符号化を行うことにより、消去状態から書き込まれたビット数が、誤り訂正回路で訂正可能な誤り以下の時には確実に異常を検出することができる。
【００２６】
不揮発性メモリコントローラ１０２から不揮発性メモリ１０１へデータを書き込むとき、バッファメモリ１０３に書き込まれたデータは、入力セレクタ１０４、スクランブル処理部１０５、出力セレクタ１０６を経由して、不揮発性メモリ１０１に転送される。
【００２７】
また、不揮発性メモリ１０１から不揮発性メモリコントローラ１０２にデータを読み出すとき、不揮発性メモリ１０１から読み出されたデータは、デスクランブル処理部１０９を経由してバッファメモリ１０３に送られる。不揮発性メモリ１０１から読み出されたデータは、誤り検出訂正部１１０および全消去検出部１１１に送られる。
【００２８】
スクランブルパターン発生部１１２は、不揮発性メモリ１０１にデータを書き込むときおよび不揮発性メモリ１０１からデータを読み出すときに、スクランブル処理部１０５およびデスクランブル処理部１０９にスクランブルパターンを与える。本明細書に記載の「スクランブル処理」とは、スクランブル前のデータをスクランブル前のデータとは異なるデータに変換することを意味すると共に、スクランブル処理後のパターンをデスクランブル処理することでスクランブル前のパターンに戻すことが可能な可逆処理（Reversible Operation）である。簡単なスクランブル処理の例としては、スクランブルされるパターンと、スクランブルパターン発生部１１２で発生したパターンとの排他的論理和をとる手法がある。具体的には、例えばスクランブル前のデータ“００００００００”を、スクランブルパターン“０１０１００１１”でスクランブル処理を行うと、スクランブル処理後のデータはスクランブル処理前のデータとは異なる“０１０１００１１”となる。スクランブル処理後のデータ“０１０１００１１”を、デスクランブルパターン“０１０１００１１”でスクランブル処理を行うと、デスクランブル処理後のデータはスクランブル処理前のデータと同じパターンを有する“００００００００”となる。なお、これはスクランブル処理の一例であり、可逆処理が可能であれば他の方法を用いても問題ない。
【００２９】
ＭＰＵ１１３は、不揮発性メモリコントローラ１０２全体の処理を行う。
【００３０】
図２は、不揮発性メモリ１０１に書き込まれたデータの構造を示す模式図である。
【００３１】
不揮発性メモリ１０１は、複数の物理ブロック２０１を備えている。物理ブロック２０１は、不揮発性メモリ１０１におけるデータの消去単位である。物理ブロック２０１は、複数の物理ページ２０２を備えている。物理ページ２０２は、不揮発性メモリ１０１におけるデータの書き込み単位である。物理ページ２０２は、データ領域と管理領域２０３とを備えている。管理領域２０３に書き込むデータとしては、誤り訂正符号、管理情報、および書き込み済みフラグなどがある。誤り訂正符号は、データ領域のデータに対応する誤り訂正符号である。管理情報は、不揮発性メモリコントローラ１０２が不揮発性メモリ１０１におけるデータの論理的な格納構造を管理するための情報である。書き込み済みフラグは、管理領域２０３内の書き込み済みフラグ領域２０４に書き込まれる。
【００３２】
フラッシュメモリである不揮発性メモリ１０１は、一般的に消去後のデータが“１”であり、データ“０”を書き込むことしか出来ない。つまり、データ“０”が書き込まれているの場所にデータ“１”を書き込むためには、一旦データ“０”を消去してデータ“１”に書き換える必要がある。このようなデータの消去処理は、物理ブロック２０１単位で行われる。
【００３３】
〔２．不揮発性メモリへデータを書き込む動作〕
図１および図２を参照して、不揮発性メモリ１０１へのデータの書き込み動作および不揮発性メモリ１０１からのデータの読み出し動作を説明する。データ書き込み動作及びデータ読み出し動作の制御は、ＭＰＵ１１３が不揮発性メモリコントローラ１０２を制御することで実現している。
【００３４】
不揮発性メモリ１０１に物理ページ２０２単位でデータを書き込む際、不揮発性メモリコントローラ１０２は、最初にデータ領域のデータを不揮発性メモリ１０１に転送するために、バッファメモリ１０３に書き込まれたデータの中から、不揮発性メモリに書き込むべきデータを読み出す。バッファメモリ１０３から読み出されたデータは、入力セレクタ１０４へ送られる。入力セレクタ１０４は、バッファメモリ１０３から読み出されたデータをスクランブル処理部１０５に送る。
【００３５】
スクランブル処理部１０５は、スクランブルパターン生成部１１２によって生成されたスクランブルパターンに基づき、入力セレクタ１０４から送られたデータをスクランブル処理する。スクランブル処理部１０５は、スクランブル処理後のデータを、出力セレクタ１０６および誤り訂正符号生成部１０８に送る。スクランブルパターン発生部１１２は、スクランブル処理によってデータがばらつくことを目的とするために、個々の物理ページごとに異なるスクランブルパターンを生成する。
【００３６】
出力セレクタ１０６は、スクランブル処理部１０５から出力されるデータを不揮発性メモリ１０１に送る。従って、不揮発性メモリ１０１のデータ領域には、バッファメモリ１０３から読み出されたデータを、スクランブルパターン発生部１１２で生成したスクランブルパターンでスクランブル処理したデータが書き込まれる。また、誤り訂正符号生成部１０８によって生成される誤り訂正符号は、スクランブル処理部１０５によってスクランブル処理を行われた後のデータであり、かつ不揮発性メモリ１０１に書き込まれているデータと同じである。
【００３７】
次に、不揮発性メモリ１０１の書き込み済みフラグ領域２０４の書き込み済みフラグを転送するために、入力セレクタ１０４は、フラグ出力部１０７から出力されるデータを選択してスクランブル処理部１０５に送る。フラグ出力部１０７は、フラッシュメモリにおける消去済みではない値“０”を出力する。
【００３８】
スクランブル処理部１０５は、スクランブルパターン生成部１１２によって生成されたスクランブルパターンに基づき、入力セレクタ１０４から送られるデータをスクランブル処理する。スクランブル処理部１０５は、スクランブル後のデータを、出力セレクタ１０６および誤り訂正符号生成部１０８に送る。スクランブルパターン発生部１１２は、フラグ出力部１０７のデータが入力セレクタ１０４で選択されているとき、特定パターン以外のスクランブルパターンを発生する。「特定パターン」とは、値が全て“１”のスクランブルパターンである。
【００３９】
出力セレクタ１０６は、スクランブル処理部１０５から送られるデータを選択して、スクランブル処理部１０５から送られるデータを不揮発性メモリ１０１に送る。従って、不揮発性メモリ１０１の書き込み済みフラグ領域２０４には、フラグ出力部１０７から出力されたデータをスクランブルパターン発生部１１２で生成したスクランブルパターンでスクランブル処理したデータが送られる。また、誤り訂正符号生成部１０８によって生成される誤り訂正符号は、スクランブル処理部１０５によってスクランブル処理が行われた後のデータである。誤り訂正符号は、不揮発性メモリ１０１に書き込まれているデータと同じである。
【００４０】
不揮発性メモリコントローラ１０２は、不揮発性メモリ１０１の管理領域２０３に書き込み済みフラグ領域２０４以外の管理情報の書き込みも行う。書き込み済みフラグ領域２０４以外の管理情報の書き込み動作の説明は、省略する。
【００４１】
出力セレクタ１０６は、管理領域２０３に誤り訂正符号を転送するために、誤り訂正符号生成部１０８で演算を行った結果である誤り訂正符号を選択して、誤り訂正符号を不揮発性メモリ１０１に送る。誤り訂正符号生成部１０８によって生成された誤り訂正符号は、スクランブル処理部１０５によってスクランブル処理を行われた後のデータである。誤り訂正符号生成部１０８によって生成された誤り訂正符号は、不揮発性メモリ１０１に書き込まれているデータと同じである。
【００４２】
図３は、不揮発性メモリ１０１にデータを書き込む際の、書き込み済みフラグ領域２０４の状態を示す模式図である。所定のビットパターンＢＰ１は、フラグ出力部１０７によって出力される書き込み済みフラグのスクランブル前のビットパターンである。図３に示す「スクランブル処理」は、スクランブルパターン発生部１１２（図１参照）によって発生されたスクランブルパターンによって、スクランブル処理部１０５（図１参照）が行うスクランブル処理である。ビットパターンＢＰ２〜ＢＰｍは、スクランブル処理後のビットパターンである。スクランブルパターン発生部１１２は、様々なスクランブルパターンを生成する可能性があるため、スクランブル処理後のビットパターンは様々なパターンとなる可能性がある。しかし、スクランブルパターン発生部１１２は、特定パターン（全て“１”のスクランブルパターン）は生成しないので、スクランブル処理部１０５は、ビットパターンＢＰ１を全て“１”のビットパターン（ビットパターンＢＰｅ）には変換しない。つまり、不揮発性メモリ１０１の書き込み済みフラグ領域２０４には、値が全て“１”のビットパターンを有するデータは書き込まれない。すなわち、書き込み済みフラグ領域２０４に書き込むデータのビットパターンは、消去済みの状態を表す、値が全て“１”のビットパターンとはならないようにしている。
【００４３】
また前述したように、スクランブルパターン発生部１１２は、ページ毎に異なるスクランブルパターンを生成する。従って、不揮発性メモリコントローラ１０２は、不揮発性メモリ１０１に対してページ毎に異なるパターンで、かつ消去済みではないパターンを書き込み済みフラグ領域２０４に書き込む。
【００４４】
〔３．不揮発性メモリからデータを読み出す動作〕
不揮発性メモリ１０１から物理ページ２０２単位でデータを読み出す際、ＭＰＵ１１３は、最初に不揮発性メモリ１０１のデータ領域に書き込まれたデータを読み出して、デスクランブル処理部１０９、誤り検出訂正部１１０、全消去検出部１１１に転送するよう制御する。デスクランブル処理部１０９は、スクランブルパターン発生部１１２で生成したスクランブルパターンに基づき、データ領域から読み出されたデータをデスクランブル処理する。デスクランブル処理部１０９は、デスクランブル処理したデータをバッファメモリ１０３に書き込む。デスクランブル処理部１０９によってバッファメモリ１０３に書き込まれるデータは、不揮発性メモリ１０１において発生した可能性があるビットエラーの箇所を除き、不揮発性メモリ１０１へのデータの書き込みの際にバッファメモリ１０３から読み出したデータと同じデータとなる。
【００４５】
次に、ＭＰＵ１１３は、不揮発性メモリ１０１における書き込み済みフラグ領域２０４に書き込まれたデータを読み出して、デスクランブル処理部１０９、誤り検出訂正部１１０、全消去検出部１１１に転送するよう制御する。デスクランブル処理部１０９は、スクランブルパターン発生部１１２で生成したスクランブルパターンに基づき、書き込み済みフラグ領域２０４から読み出されたデータをデスクランブル処理する。デスクランブル処理部１０９は、デスクランブル処理したデータをバッファメモリ１０３に書き込む。デスクランブル処理によってバッファメモリ１０３に書き込まれるデータは、不揮発性メモリ１０１において発生した可能性があるビットエラーの箇所を除き、フラグ出力部１０７から出力された「ビットパターンが全て“０”のデータ」と同じデータとなる。
【００４６】
次に、ＭＰＵ１１３は、不揮発性メモリ１０１における書き込み済みフラグ領域２０４以外の管理領域２０３のデータを読み出して、誤り検出訂正部１１０、全消去検出部１１１に転送するよう制御する。
【００４７】
ＭＰＵ１１３は、不揮発性メモリ１０１からデータを読み出した後、２つの判定処理を行う。１つ目の判定処理は、誤り検出訂正部１１０の演算結果に基づき、不揮発性メモリ１０１から読み出したデータに誤りが無いまたは訂正可能な誤りがあったか、訂正不可能な誤りが発生しているかを判定する処理である。２つ目の判定処理は、全消去検出部１１１における検出結果に基づき、不揮発性メモリ１０１から読み出したデータのビットパターンが全て“１”であったか否かを判定する処理である。全消去検出部１１１は、例えば特開２００７−２４１６１８号公報の図６に開示されている回路で実現できる。
【００４８】
図４は、不揮発性メモリ１０１にデータの書き込みを行う際に発生した可能性がある、電源遮断によるデータの異常を検出するフローチャートである。
【００４９】
最初に、ＭＰＵ１１３は、不揮発性メモリ１０１から読み出したデータが書き込み済みであるかどうかを判定する（判定処理４０１）。具体的には、ＭＰＵ１１３は、全消去検出部１１１の検出結果を参照し、不揮発性メモリ１０１から読み出したデータのビットパターンが全て“１”であった場合（判定処理４０１におけるＮｏ判定）、未書き込みデータであると判定する。
【００５０】
一方、ＭＰＵ１１３は、不揮発性メモリ１０１から読み出したデータになんらかのデータが書き込み済みであると判定した場合には（判定処理４０１におけるＹＥＳ判定）、不揮発性メモリ１０１から読み出したデータが訂正可能であるかを判定する（判定処理４０２）。ＭＰＵ１１３は、データの誤り訂正が可能な否かの判断に、誤り検出訂正部１１０の演算結果を使用する。ＭＰＵ１１３は、不揮発性メモリ１０１から読み出したデータが誤り訂正が不可能であると判断した場合（判定処理４０２におけるＮｏ判断）には、当該データを「異常データ」と判定する。
【００５１】
ここで、訂正処理が不可能な誤りが発生する確率は、不揮発性メモリ１０１に対して正しくデータが書き込まれていれば、不揮発性メモリ１０１の性能から考えてきわめて低い。むしろ、訂正処理が不可能な誤りが発生しないように誤り訂正回路の訂正能力を決定しているので、ＭＰＵ１１３が、「不揮発性メモリ１０１から読み出したデータに誤り検出訂正部１１０で訂正できない誤りがある」と判定した場合には、不揮発性メモリ１０１へのデータ書き込み時における電源遮断等に起因する異常データであることがわかる。また、不揮発性メモリ１０１から読み出したデータが異常データである場合には、きわめて高い確率で誤り訂正処理が不可となる。
【００５２】
例えば、５１２バイトのデータに対して８ビット訂正可能なＢＣＨ符号を付加する場合、必要な誤り訂正符号ビットは１０４ビットである。異常なデータの例としてランダムなデータに対して誤り訂正が可能となってしまう確率Ｐは、誤り訂正可能な全てのパターンＢＰERと、取り得る全てのパターンＢＰALとに基づき、算出することができる。
【００５３】
Ｐ＝ＢＰER／ＢＰAL
誤り訂正可能な全てのパターンＢＰERは、５１２バイトデータの取りうる全てのパターンＢＰ512と、０〜８ビットの誤りの組み合わせの数ＥＲとに基づき算出することができる。
【００５４】
ＢＰER＝ＢＰ512／ＥＲ
後半の組み合わせは、ほぼ２×１０24である。
【００５５】
また、取りうる全てのパターンＢＰALは、５１２バイトデータの取りうる全てのパターンＢＰ512と、１０４ビットの取りうる全てのパターンＢＰ104とに基づき求めることができる。
【００５６】
ＢＰAL＝ＢＰ512／ＢＰ104
後半のパターン数は、ほぼ２×１０31である。従って、ランダムなパターンが訂正可能となる確率は、１／１０7となり、極めて低い。逆に言えば、ほぼ１００％に近い確率でランダムデータを異常と判定できるといえる。
【００５７】
次に、ＭＰＵ１１３は、不揮発性メモリ１０１から読み出したデータが訂正可能であると判定した場合（判定処理４０２のＹＥＳ判定）には、誤り検出訂正部１１０によってバッファメモリ１０３のデータを訂正するよう制御する（処理４０３）。この際に、ＭＰＵ１１３は、書き込み済みフラグに相当するビットに誤りがあり訂正可能と判定していれば、バッファメモリ１０３に格納されている当該部の誤りを訂正する。
【００５８】
次に、ＭＰＵ１１３は、バッファメモリ１０３の書き込み済みフラグ領域に相当する位置に正しくフラグが読み出されているかを判定する。即ち、ＭＰＵ１１３は、フラグが全て“０”であるかを判定する（判定処理４０４）。
【００５９】
図５は、不揮発性メモリ１０１に対して正しく書き込みが行えたデータを読み出した後の書き込み済みフラグの状態を示す模式図である。図５におけるビットパターンＢＲ２〜ＢＰｍは、図３に示すビットパターンＢＰ２〜ＢＰｍ（変換される可能性のあるビットパターン）を全て挙げている。図１に示すデスクランブル処理部１０９は、スクランブルパターン発生部１１２が発生したスクランブルパターンによって、デスクランブル処理を実行する。図５に示すビットパターンＢＰ１は、デスクランブル処理後のビットパターンである。デスクランブル処理部１０９において正しくデスクランブル処理が行えた場合には、ビットパターンＢＰ２〜ＢＰｍは所定のビットパターンＢＰ１に戻る。即ち、ＭＰＵ１１３は、デスクランブル処理後のビットパターンが全て“０”であれば（ビットパターンＢＰ１）、図４に示す判定処理４０４でＹｅｓと判定し、「正常データである」と判定する。
【００６０】
図６は、消去済みであり未書き込みのデータを読み出した後の書き込み済みフラグの状態を示す模式図である。図６に示すビットパターンＢＰ１１は、不揮発性メモリ１０１における消去済みであり未書き込みの物理ページにある書き込み済みフラグ領域２０４のビットパターンである。ビットパターンＢＰ１２〜ＢＰｎは、デスクランブル処理後のビットパターンである。
【００６１】
デスクランブル処理部１０９は、デスクランブルのパターンとして正しくデスクランブル処理が行えた場合には、値が全て“０”のビットパターン（ビットパターンＢＰｆ）以外のビットパターンに変換する。例えば、デスクランブル処理部１０９は、ビットパターンＢＰ１２〜ＢＰｎのうちいずれかのビットパターンに変換する。即ち、ＭＰＵ１１３は、デスクランブル処理後のビットパターンが全て“０”のビットパターンでないので、図４に示す判定処理４０４においてＮｏと判定し、「異常データである」と判定する。
【００６２】
すなわち、ＭＰＵ１１３は、不揮発性メモリ１０１に対してデータの書き込みを行っている際の電源遮断等によるデータ異常において書き込み済みのビットが１ビット以上かつ誤り訂正処理で訂正可能な範囲であれば、そのことによって全消去検出部１１１の検出結果に基づき書き込み済みであると判断し、誤り訂正検出部１１０において誤りを訂正可能と判定し、さらにバッファメモリ１０３のデータを訂正した後に、全て“０”の所定のパターンでないことから「フラグなし」と判定し、異常データであることがわかる。
【００６３】
つまり、不揮発性メモリ１０１にデータを書き込み中に電源遮断が発生していた事が予測される時には、電源遮断直前までに書き込まれたビット数が誤り検出訂正部１１０によって誤り訂正可能なビット数であっても、不揮発性メモリ１０１から読み出したデータを異常データとして取り扱う。
【００６４】
同様に、不揮発性メモリ１０１に対してデータの書き込みを行っている際の電源遮断等によるデータ異常において書き込み済みのビットが誤り訂正処理で訂正出来るビット数を越えている場合には、ランダムなデータパターンと同等とみなせる。したがって、極めて高い確率でデータの誤り訂正が不可となるため（図４に示す判定処理４０３で「訂正不可」と判定）、異常データであることがわかる。
【００６５】
図７は、デスクランブル処理部１０９でデスクランブル処理を行わなかった場合の、不揮発性メモリ１０１から読み出した書き込み済みフラグの状態を示す模式図である。図７に示す書き込み済みフラグは、不揮発性メモリ１０１の読み出しを行うデータに対応するスクランブルパターンが不明な場合を想定しており、その場合にはデスクランブル処理を行わずにバッファメモリ１０３にデータを転送する。
【００６６】
ビットパターンＢＰ２１は、消去済みのパターンである。ビットパターンＢＰ２２〜ＢＰｇは、所定のビットパターンである全て“０”のパターンに、スクランブル処理部１０５でスクランブル処理を行ったときに取りうるビットパターンである。消去済みのビットパターンＢＰ２１は、そのまま全て“１”のビットパターンＢＰ３１として読み出される。ビットパターンＢＰ２２〜ＢＰｇは、全て“１”のビットパターンではないとして読み出される（ビットパターンＢＰ３２〜ＢＰｈ）。ＭＰＵ１１３は、図４のフローチャートの判定処理４０４において全て“１”のパターンのみを「フラグなし」と判定することで、正しく異常データであることを認識できる。
【００６７】
図８は、図４に示す判定処理４０４での判定方法をデスクランブル処理の有無で分類した表である。
【００６８】
本実施の形態によれば、不揮発性メモリ１０１に対する書き込み済みフラグ領域の設定および、書き込み時における書き込み済みフラグ領域のためのスクランブルパターンおよび、読み出し時におけるフラグ判定を行うことで、スクランブル処理を適用した不揮発性メモリに対する、書き込み途中の電源遮断に起因するデータの異常を検出することが可能となる。
【００６９】
（実施の形態２）
不揮発性記憶装置及び不揮発性メモリコントローラの実施の形態２について説明する。
【００７０】
不揮発性記憶装置及び不揮発性メモリは実施の形態１と同じ構成で実現できる。ただし、実施の形態２にかかる不揮発性メモリコントローラは、全消去検出部１１１をデータ処理に使用しない。また、スクランブルパターン発生部１１２が発生するスクランブルパターンは、実施の形態１に示すスクランブルパターンと同じである。スクランブル処理部１０５やデスクランブル処理部１０９での処理内容は、実施の形態１に示す処理内容と同じである。
【００７１】
実施の形態２における不揮発性メモリコントローラが実施の形態１における不揮発性メモリコントローラと異なるのは、不揮発性メモリ１０１へデータを書き込み中に電源遮断が発生していた事が予測される時にも、電源遮断直前までに書き込まれたビット数が誤り検出訂正部１１０によって誤り訂正可能なビット数である場合には、異常データとして取り扱わずに、「未書き込みのデータ」と判断する。
【００７２】
この判断は、不揮発性メモリのプロセス微細化によってデータ信頼性が低下して、消去済みで未書き込みのページであっても、ビット誤りが存在する場合に対応するための判断である。
【００７３】
実施の形態２における電源遮断の異常を検出するフローチャートは、実施の形態１における異常検出フローチャートとは異なる。
【００７４】
図９は、実施の形態２における電源遮断によるデータの異常を検出するフローチャートを示す。
【００７５】
最初に、ＭＰＵ１１３は、不揮発性メモリ１０１から読み出したデータが訂正可能かどうかを判定する（判定処理９０１）。この判定処理は、誤り検出訂正部１１０の演算結果を使用する。ＭＰＵ１１３は、誤り訂正が不可能であると判断した場合には（判定処理９０１におけるＮｏ判定）、不揮発性メモリ１０１から読み出したデータを「異常データ」と判定する。不揮発性メモリ１０１に対して正しくデータが書き込まれていれば、誤り訂正が不可能な誤りが発生する確率は、不揮発性メモリ１０１の性能から考えてきわめて低い。
【００７６】
一方、ＭＰＵ１１３は、誤り訂正が可能であると判断した場合には（判定処理９０１におけるＹｅｓ判定）、誤り検出訂正部１１０によってバッファメモリ１０３のデータを訂正するよう制御する（処理９０２）。この際、ＭＰＵ１１３は、書き込み済みフラグに相当するビットに誤りがあり訂正可能と判定されていれば、バッファメモリ１０３に格納されている当該部の誤りを訂正するよう制御する。
【００７７】
次に、ＭＰＵ１１３は、判定９０３でバッファメモリ１０３の書き込み済みフラグ領域に相当する位置に正しくフラグが読み出されているか否かを判定する。即ち、ＭＰＵ１１３は、フラグが全て“０”であるか否かを判定する。ＭＰＵ１１３は、全て“０”であれば（判定処理９０３におけるＹｅｓ判定）、正常データであると判定する。
【００７８】
不揮発性メモリ１０１に対してデータの書き込みを行っている際の電源遮断等によるデータ異常において書き込み済みのビットが１ビット以上かつ誤り訂正で訂正可能な範囲であれば、以下の流れで処理する。すなわち、ＭＰＵ１１３は、誤り訂正検出部１１０に基づき訂正可能と判定し（判定処理９０１）、さらにバッファメモリ１０３のデータを訂正し（処理９０２）、全て“０”の所定のパターンでないことから「フラグなし」と判定し（判定処理９０３）、判定処理９０４を実行する。
【００７９】
ＭＰＵ１１３は、誤り検出訂正部１１０において実行した誤り訂正処理の誤り訂正ビット数と規定値とを比較する（判定処理９０４）。ＭＰＵ１１３は、誤り訂正ビット数が規定数未満であれば、未書き込みと判定する。この判定結果は、このページにデータを上書きしても誤りビット数が誤り訂正可能な範囲でおさまると考えるからである。一方、ＭＰＵ１１３は、誤り訂正ビット数が規定値以上であれば、「異常データ」と判定する。この判定結果は、誤りビット数が多いために、このページにデータを上書きしても期待するデータ信頼性が得られないと考えるからである。
【００８０】
なお、本実施の形態における誤り訂正符号生成部１０８は、本発明の誤り訂正符号生成部の一例である。本実施の形態における誤り検出訂正部１１０は、本発明の誤り検出訂正部の一例である。本実施の形態におけるバッファメモリ１０３は、本発明のバッファメモリの一例である。本実施の形態におけるスクランブル処理部１０５は、本発明のスクランブル処理部の一例である。本実施の形態におけるＭＰＵ１１３は、本発明の制御部の一例である。本実施の形態における全消去検出部１１１は、本発明の全消去検出部の一例である。本実施の形態における不揮発性メモリコントローラ１０２は、本発明の不揮発性メモリコントローラの一例である。本実施の形態における不揮発性メモリ１０１及び不揮発性メモリコントローラ１０２は、本発明の不揮発性記憶装置の一例である。
【産業上の利用可能性】
【００８１】
本願の不揮発性記憶装置、不揮発性メモリコントローラは、ホストに対してよりデータの信頼性を向上させることができ、ポータブル機器における記憶媒体に適用することができる。
【符号の説明】
【００８２】
１０１  不揮発性メモリ
１０２  不揮発性メモリコントローラ
１０３  バッファメモリ
１０４  入力セレクタ
１０５  スクランブル処理部
１０６  出力セレクタ
１０７  フラグ出力部
１０８  誤り訂正符号生成部
１０９  デスクランブル処理部
１１０  誤り検出訂正部
１１１  全消去検出部
１１２  スクランブルパターン発生部
１１３  ＭＰＵ
【図１】
2010277584.tif 000003
【図２】
2010277584.tif 000004
【図３】
2010277584.tif 000005
【図４】
2010277584.tif 000006
【図５】
2010277584.tif 000007
【図６】
2010277584.tif 000008
【図７】
2010277584.tif 000009
【図８】
2010277584.tif 000010
【図９】
2010277584.tif 000011