(57)【要約】【課題】フラッシュメモリの寿命を使い切りつつ、信頼性の高い記憶装置を提供する。【解決手段】複数の記憶セルを備える不揮発性記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記複数の記憶セルは、複数の消去単位である消去ブロックに分割され、前記不揮発性記憶装置は、第１消去ブロックに格納されたデータを読み出し、前記読み出されたデータに含まれる誤りを検出及び訂正し、検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを第２消去ブロックに格納し、前記第１消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、前記第１消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定する。【選択図】図５
2009129070.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、
前記複数の消去ブロックは、第１消去ブロック及び第２消去ブロックを含み、
前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、
前記不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、
前記メモリコントローラは、
前記第１消去ブロックに格納されたデータを読み出し、
前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正し、
検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第２消去ブロックに格納するリフレッシュ処理を実行し、
前記第１消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、
前記第１消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定することを特徴とする不揮発性記憶装置。
【請求項２】
前記各消去ブロック内の前記複数の記憶セルは、転送単位である複数のセクタに分割され、
前記メモリコントローラは、
データの読み出し要求を受信すると、前記第１消去ブロック内の一つ以上のセクタからデータを読み出し、
前記各セクタから読み出されたデータに含まれる誤りを検出し、
前記一つ以上のセクタから読み出されたデータのうち、訂正可能な誤りを含むデータを訂正し、
前記一つ以上のセクタから読み出されたデータに含まれる前記訂正可能な誤りビット数を示す情報を含むステータス情報を、前記訂正されたデータに付加し、
前記一つ以上のセクタから読み出されたデータのうち、訂正不可能な誤りを含むデータに、そのデータが訂正不可能な誤りを含むことを示す情報を含む前記ステータス情報を付加し、
前記ステータス情報が付加されたデータを送信することを特徴とする請求項１に記載の不揮発性記憶装置。
【請求項３】
複数の不揮発性記憶装置と、前記複数の不揮発性記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラと、を備えるストレージシステムであって、
前記各不揮発性記憶装置は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、
前記複数の消去ブロックは、第１消去ブロック及び第２消去ブロックを含み、
前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、
前記各不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、
前記メモリコントローラは、
前記第１消去ブロックに格納されたデータを読み出し、
前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正し、
検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第２消去ブロックに格納するリフレッシュ処理を実行し、
前記第１消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、
前記第１消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定することを特徴とするストレージシステム。
【請求項４】
前記各消去ブロック内の前記複数の記憶セルは、転送単位である複数のセクタに分割され、
前記メモリコントローラは、
データの読み出し要求を受信すると、前記第１消去ブロック内の一つ以上のセクタからデータを読み出し、
前記各セクタから読み出されたデータに含まれる誤りを検出し、
前記一つ以上のセクタから読み出されたデータのうち、訂正可能な誤りを含むデータを訂正し、
前記一つ以上のセクタから読み出されたデータに含まれる前記訂正可能な誤りビット数を示す情報を含むステータス情報を、前記訂正されたデータに付加し、
前記一つ以上のセクタから読み出されたデータのうち、訂正不可能な誤りを含むデータに、そのデータが訂正不可能な誤りを含むことを示す情報を含む前記ステータス情報を付加し、
前記ステータス情報が付加されたデータを送信することを特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記複数の不揮発性記憶装置は、一つ以上の第１不揮発性記憶装置及び一つ以上の第２不揮発性記憶装置を含み、
前記各第１不揮発性記憶装置内の前記複数のセクタは、第１セクタを含み、
前記各第２不揮発性記憶装置内の前記複数のセクタは、第２セクタを含み、
前記ストレージコントローラは、
一つ以上の前記第１セクタに、データを格納し、
一つ以上の前記第２セクタに、前記第１セクタに格納したデータを冗長化するデータを格納し、
前記第１セクタの一つから読み出されたデータに付加された前記ステータス情報が、そのデータが訂正不可能な誤りを含むことを示す場合、残りの前記第１セクタ及び前記第２セクタから読み出されたデータに基づいて、前記訂正不可能な誤りを含むデータを復元することを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記複数の不揮発性記憶装置は、第３不揮発性記憶装置及び第４不揮発性記憶装置を含み、
前記ストレージコントローラは、
前記第３不揮発性記憶装置内の記憶セルが劣化したと判定された場合、前記第３不揮発性記憶装置に格納された全データの複製を前記第４不揮発性記憶装置に格納することを特徴とする請求項４に記載のストレージシステム。
【請求項７】
前記第３不揮発性記憶装置内の前記複数の消去ブロックは、劣化した前記消去ブロックを代替するために確保された代替消去ブロックを含み、
前記ストレージコントローラは、
前記第３不揮発性記憶装置が保持する前記管理情報を参照することによって、前記第３不揮発性記憶装置内の前記各消去ブロックにおいて実行された消去処理の回数を取得し、
前記消去処理の回数の平均値が所定のしきい値を超えた場合、前記第３不揮発性記憶装置内の記憶セルが劣化したと判定し、
前記消去処理の回数の最大値が、前記各消去ブロックに許容される最大消去回数以上であり、かつ、未使用の前記代替消去ブロックの数が所定のしきい値以下である場合、前記第３不揮発性記憶装置内の記憶セルが劣化したと判定することを特徴とする請求項６に記載のストレージシステム。
【請求項８】
前記メモリコントローラは、
前記リフレッシュ処理を実行する場合、前記リフレッシュ処理の実行を示す情報を、前記ステータス情報として前記訂正されたデータに付加し、
前記ストレージコントローラは、前記第３不揮発性記憶装置から読み出されたデータに付加された前記ステータス情報が、前記リフレッシュ処理の実行を示す情報を含む場合、前記第３不揮発性記憶装置内の記憶セルの劣化の程度が所定のしきい値を超えたか否かを判定することを特徴とする請求項６に記載のストレージシステム。
【請求項９】
不揮発性記憶装置を備えるストレージシステムの制御方法であって、
前記不揮発性記憶装置は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、
前記複数の消去ブロックは、第１消去ブロック及び第２消去ブロックを含み、
前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、
前記不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、
前記方法は、
前記第１消去ブロックに格納されたデータを読み出す第１手順と、
前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正する第２手順と、
検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第２消去ブロックに格納するリフレッシュ処理を実行する第３手順と、
前記第１消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定する第４手順と、
前記第１消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定する第５手順と、を含むことを特徴とする方法。
【請求項１０】
前記各消去ブロック内の前記複数の記憶セルは、転送単位である複数のセクタに分割され、
前記第１手順は、データの読み出し要求を受信すると、前記第１消去ブロック内の一つ以上のセクタからデータを読み出す手順を含み、
前記第２手順は、
前記各セクタから読み出されたデータに含まれる誤りを検出する手順と、
前記一つ以上のセクタから読み出されたデータのうち、訂正可能な誤りを含むデータを訂正する手順と、を含み、
前記方法は、さらに、
前記一つ以上のセクタから読み出されたデータに含まれる前記訂正可能な誤りビット数を示す情報を含むステータス情報を、前記訂正されたデータに付加する第６手順と、
前記一つ以上のセクタから読み出されたデータのうち、訂正不可能な誤りを含むデータに、そのデータが訂正不可能な誤りを含むことを示す情報を含む前記ステータス情報を付加する第７手順と、
前記ステータス情報が付加されたデータを送信する第８手順と、を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ストレージシステムは、複数の前記不揮発性記憶装置と、前記複数の不揮発性記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラと、を備え、
前記複数の不揮発性記憶装置は、一つ以上の第１不揮発性記憶装置及び一つ以上の第２不揮発性記憶装置を含み、
前記各第１不揮発性記憶装置内の前記複数のセクタは、第１セクタを含み、
前記各第２不揮発性記憶装置内の前記複数のセクタは、第２セクタを含み、
一つ以上の前記第１セクタには、データが格納され、
一つ以上の前記第２セクタには、前記第１セクタに格納されたデータを冗長化するデータが格納され、
前記方法は、さらに、前記第１セクタの一つから読み出されたデータに付加された前記ステータス情報が、そのデータが訂正不可能な誤りを含むことを示す場合、残りの前記第１セクタ及び前記第２セクタから読み出されたデータに基づいて、前記訂正不可能な誤りを含むデータを復元する第９手順を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数の不揮発性記憶装置は、第３不揮発性記憶装置及び第４不揮発性記憶装置を含み、
前記方法は、さらに、前記第３不揮発性記憶装置内の記憶セルが劣化したと判定された場合、前記第３不揮発性記憶装置に格納された全データの複製を前記第４不揮発性記憶装置に格納する第１０手順を含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記第３不揮発性記憶装置内の前記複数の消去ブロックは、劣化した前記消去ブロックを代替するために確保された代替消去ブロックを含み、
前記第１０手順は、
前記第３不揮発性記憶装置が保持する前記管理情報を参照することによって、前記第３不揮発性記憶装置内の前記各消去ブロックにおいて実行された消去処理の回数を取得する手順と、
前記消去処理の回数の平均値が所定のしきい値を超えた場合、前記第３不揮発性記憶装置内の記憶セルが劣化したと判定する手順と、
前記消去処理の回数の最大値が、前記各消去ブロックに許容される最大消去回数以上であり、かつ、未使用の前記代替消去ブロックの数が所定のしきい値以下である場合、前記第３不揮発性記憶装置内の記憶セルが劣化したと判定する手順と、を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記方法は、さらに、前記リフレッシュ処理が実行される場合、前記リフレッシュ処理の実行を示す情報を、前記ステータス情報として前記訂正されたデータに付加する第１１手順を含み、
前記第１０手順は、前記第３不揮発性記憶装置から読み出されたデータに付加された前記ステータス情報が、前記リフレッシュ処理の実行を示す情報を含む場合に実行されることを特徴とする請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、フラッシュメモリを用いた不揮発性記憶装置に関する。
【背景技術】
【０００２】
フラッシュメモリを用いた記憶装置では、フラッシュメモリの特性上、誤り訂正が必須である。誤りには、一過性の誤りと定常的な誤りとが存在する。一過性の誤りとは、あるデータを読み出したときに検出されるが、次に同じデータを読み出したときには検出されないような誤りである。このような誤りは、ノイズ又はしきい値電圧に近い入力のために、出力を「０」にも「１」にも認識できるような状態において発生する。
【０００３】
定常的な誤りとは、あるデータを読み出したときに検出されると、以後、そのデータを読み出したときに必ず検出されるような、恒久的な誤りである。このような定常的な誤りは、フラッシュメモリの記憶セルを構成する、フローティングゲート構造を備えるトランジスタのしきい値電圧が変化したために発生する。しきい値電圧が変化すると、「０」を記憶させたのに「１」が読み出されたり、「１」を記憶させたのに「０」と読み出されたりする。このような定常的な誤りの原因の代表的なものは、リードディスターブである。
【０００４】
リードディスターブの場合、トランジスタのしきい値が変化する。このため、書き込まれたデータが、読み出し時には異なった値と認識される。このしきい値の変化の方向、及び異なった値の認識のし易さには傾向がある。しかし、いわゆる多値のフラッシュメモリ（すなわち、一つの記憶セルに複数のしきい値電圧を設定することによって、各記憶セルが複数ビットの情報を記憶するフラッシュメモリ）等では、「１」を「０」と誤る場合と「０」を「１」と誤る場合の両方が均等に発生しうる。これは、多値のフラッシュメモリにおいて、複数のしきい値電圧によって区切られた複数の電圧範囲の一つに対応付けられる複数ビットと、それに隣接する電圧範囲に対応付けられる複数ビットとの間のハミング距離が１であるためである。
【０００５】
リードディスターブへの対策として、特許文献１が開示されている。
【０００６】
一般に、フラッシュメモリを用いた記憶媒体である、コンパクトフラッシュ（登録商標）メモリカード、エスディ（ＳＤ）メモリカード及びソリッドステイトドライブなどは、モジュール内部にコントローラを備え、そのコントローラがフラッシュメモリチップを制御する。一般に、誤り訂正もこのコントローラが実行する。内部に誤り訂正機能を持つフラッシュメモリチップもある。
【０００７】
このように、フラッシュメモリコントローラ（又はフラッシュメモリチップ）が誤り訂正を実行するため、どの程度のビット数の誤が訂正されたか、外部からはわからないのが一般的である。この場合、誤り訂正が不可能になってはじめてエラーとして認識できる。
【０００８】
従来の不揮発性記憶装置のインタフェースにおけるデータ転送では、リードコマンドを発行すると、リードコマンドに対応したデータが応答として返信される。コマンド実行結果のステータス情報を、データ転送の前に確認できるインタフェースと、データ転送後に確認できるインタフェースとがあるが、いずれの場合のステータス情報も、原則として、コマンドに対する実行結果としてのステータス情報である。つまり、コマンドとステータスが１対１に対応しているため、例えば複数セクタ転送のコマンドに対しても、応答されるステータスは一つである。
【特許文献１】特開２００４−３２６８６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
フラッシュメモリを用いた記憶装置は、リードディスターブのような、誤りを増やす現象を包含している。このため、複数ビットの誤り訂正能力を持っていても、時間が経つと、誤り訂正能力以上に誤りが増え、正確な情報を記憶できなくなるという問題がある。
【００１０】
また、リードディスターブは、消去回数等に影響される。このため、訂正可能な誤りが発生しても、その誤りの程度が誤り訂正能力を超えるまでに進行する可能性は、それぞれの消去単位毎に異なるという問題がある。
【００１１】
フラッシュメモリを用いた不揮発性記憶装置の場合、フラッシュメモリの消去単位毎に消去回数の上限値が定められている。このため、フラッシュメモリは、消去単位毎に、使用中に消去不可能になり、寿命を迎える。よって、不揮発性記憶装置を管理制御する部分は、不揮発性記憶装置の状態を常に監視し、寿命を迎え使用不可能になる前に、データを失わないための処理を実行する必要がある。データを失わないための処理として、例えば、寿命が近づいた消去単位のデータを他の消去単位にコピーする、いわゆるリフレッシュ処理が実行されてもよい。
【課題を解決するための手段】
【００１２】
本願で開示する代表的な発明は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、前記複数の消去ブロックは、第１消去ブロック及び第２消去ブロックを含み、前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、前記不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、前記メモリコントローラは、前記第１消去ブロックに格納されたデータを読み出し、前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正し、検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第２消去ブロックに格納するリフレッシュ処理を実行し、前記第１消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、前記第１消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定することを特徴とする。
【発明の効果】
【００１３】
本発明の一実施形態によれば、フラッシュメモリ記憶装置において、フラッシュメモリで発生する誤りが、誤り訂正能力以上に増える前に、適切にリフレッシュすることが可能になる。このため、フラッシュメモリの寿命を使い切りつつ、信頼性の高い記憶装置を提供することが可能になる。
【発明を実施するための最良の形態】
【００１４】
本発明の第１の実施形態を、図面を参照しながら説明する。
【００１５】
図１は、本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリのメモリセルの説明図である。
【００１６】
図１に示すように、ＮＡＮＤ型フラッシュメモリのメモリセルは、横方向に１６８９６個程度、縦方向に１６個程度並んでいる。各メモリセルは、フローティングゲートを備えるＦＥＴ（電界効果トランジスタ）である。横方向の１列のメモリセルごとに読み出し及び書き込みが実行される場合が多いため、このような各列がページと呼ばれる管理単位として扱われる。縦方向の１列は、フローティングゲートを備えるＦＥＴが、１６個程度直列に接続されたものである。この直列に接続されているＦＥＴの間でリードディスターブが発生するため、１６ページの範囲にリードディスターブの影響が及ぶ。
【００１７】
６４ページ程度がブロックを構成する。ブロックは、データの消去単位である。言い換えると、一つのブロックは、１回の消去処理によって消去可能な最少のメモリセルからなる。以下、この消去単位であるブロックを、消去単位ブロックとも記載する（例えば、図６に示す消去単位ブロック６１０Ａ及び６１０Ｂ）。
【００１８】
１ページが１６８９６個のメモリセルからなる場合、１ページは１６８９６ビット（すなわち２１１２バイト）のデータを保持することができる。この場合、１ページが複数のセクタを含んでもよい。例えば、１ページが、５１２バイトのセクタを４個含んでもよい。残りのバイトは、各セクタのデータから算出されたＥＣＣ（誤り訂正符号）及び各セクタの管理情報を含んでもよい。
【００１９】
ここで、セクタとは、データ転送の最小単位である。言い換えると、一つのセクタは、１回の書き込み要求又は読み出し要求によって処理可能な最少のメモリセルからなる。例えば一つのセクタが５１２バイトからなる場合、５１２バイトの整数倍のサイズのデータの書き込み及び読み出しのみが許容される。
【００２０】
図１に示すＮＡＮＤ型フラッシュメモリは、従来の一般的なものと同様である。ただし、半導体チップ上のメモリセルの配置及び管理単位は、メーカによって異なる場合がある。このため、上記のメモリセルの個数等は一例である。メモリセルの個数等が上記と異なる場合であっても、本発明を適用することができる。
【００２１】
図２は、本発明の第１の実施形態の不揮発性記憶装置２０１の構成を示すブロック図である。
【００２２】
本実施形態の不揮発性記憶装置２０１は、データ記憶素子としてＮＡＮＤ型フラッシュメモリを採用したものである。不揮発性記憶装置２０１は、例えば図２に示すように、フラッシュメモリコントローラ２０２、及び、それに接続された複数のフラッシュメモリチップ２０３を備える。フラッシュメモリコントローラ２０２は、情報伝達手段２０５を介して不揮発性記憶装置２０１の外部と情報をやり取りする。各フラッシュメモリチップ２０３は、図１に示すＮＡＮＤ型フラッシュメモリセルを含む。フラッシュメモリコントローラ２０２とフラッシュメモリチップ２０３とは、フラッシュメモリインタフェース部３０５（図３参照）及び接続線２０４を介して接続される。
【００２３】
図３は、本発明の第１の実施形態のフラッシュメモリコントローラ２０２の構成を示すブロック図である。
【００２４】
フラッシュメモリコントローラ２０２は、例えば図３に示すように、マイクロプロセッサ（ＭＰＵ）３０１、ＲＡＭ３０２、ＲＯＭ３０３、ホストインタフェース部（ＨＯＳＴ  Ｉ／Ｆ）３０４及びフラッシュメモリインタフェース部（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｉ／Ｆ）３０５を備える。マイクロプロセッサ３０１、ＲＡＭ３０２、ＲＯＭ３０３、ホストインタフェース部３０４及びフラッシュメモリインタフェース部３０５は、マイクロプロセッサのバス３０６によって相互に接続される。一方、ホストインタフェース部３０４及びフラッシュメモリインタフェース部３０５は、高速にデータを転送する専用バス３０７によって相互に接続される。
【００２５】
マイクロプロセッサ３０１は、ＲＯＭ３０３に格納されたプログラムを実行する。
【００２６】
ＲＡＭ３０２は、マイクロプロセッサ３０１がワークエリア及びフラッシュメモリ管理情報を格納するランダムアクセスメモリである。
【００２７】
ＲＯＭ３０３は、マイクロプロセッサ３０１によって実行されるプログラムを格納する読み出し専用メモリである。ＲＯＭには、例えば、フラッシュメモリインタフェース部３０５又はホストインタフェース部３０４等を制御管理するプログラムが格納される。
【００２８】
ホストインタフェース部３０４は、外部ホスト（図示省略）と接続され、外部ホストとマイクロプロセッサ３０１との間の通信に使用されるインタフェースである。外部ホストは、不揮発性記憶装置２０１に対してデータの書き込み及び読み出し要求を送信する装置である。種々の装置が外部ホストとしてホストインタフェース部３０４に接続され得る。
【００２９】
例えば、外部ホストは、ディジタル画像記録装置又はディジタル音声記録装置であってもよい。その場合、不揮発性記憶装置２０１は、例えば、それらの装置に使用されるメモリカードである。
【００３０】
あるいは、不揮発性記憶装置２０１がハードディスクドライブ（ＨＤＤ）（図示省略）を置き換えるデータ記憶装置（いわゆるソリッドステイトドライブ）として使用される場合、外部ホストは、ＨＤＤに対するデータ書き込み及び読み出し要求を送信する計算機又はＲＡＩＤコントローラ（後述）であってもよい。その場合、ホストインタフェース部３０４は、例えばＳＣＳＩ又はファイバーチャネル（ＦＣ）等のプロトコルに基づいて外部ホストと通信する。
【００３１】
フラッシュメモリインタフェース部３０５は、フラッシュメモリチップ２０３を駆動する信号を制御し、マイクロプロセッサ３０１からの要求に従ってフラッシュメモリチップ２０３をアクセスする。
【００３２】
以下の説明においてフラッシュメモリコントローラ２０２が実行する処理は、より正確には、ＭＰＵ３０１がＲＡＭ３０２又はＲＯＭ３０３に格納されたプログラムを実行し、ＲＡＭ３０２、ＲＯＭ３０３、ホストインタフェース部３０４及びフラッシュメモリインタフェース部３０５を制御することによって実行される。
【００３３】
図４は、本発明の第１の実施形態の不揮発性記憶装置２０１におけるデータ書き込み処理時の誤り訂正符号生成の説明図である。
【００３４】
フラッシュメモリコントローラ２０２は、書き込みを要求されたデータ（ライトデータ）を、最小転送単位（すなわちセクタ）ごとに処理する。ライトデータ４０１は、１セクタ分のライトデータである。誤り訂正符号生成部４０２は、ライトデータ４０１から誤り訂正符号４０３を生成し、その誤り訂正符号４０３をライトデータ４０１に付加し、ライトデータ４０１及び誤り訂正符号４０３をセクタデータ４０４としてフラッシュメモリチップ２０３に書き込む。
【００３５】
なお、誤り訂正符号生成部４０２は、ＭＰＵ３０１がＲＡＭ３０２又はＲＯＭ３０３に格納されたプログラムを実行することによって実現される処理モジュールである。
【００３６】
図４の例において、消去単位ブロックの管理情報４０５は、フラッシュメモリチップ２０３に格納されているが、不揮発な情報として格納される限りどこに格納されてもよい。管理情報４０５は、少なくとも、各消去単位ブロックにおいて実行された消去処理の回数を示す情報を含む。
【００３７】
図５は、本発明の第１の実施形態の不揮発性記憶装置２０１におけるデータ読み出し処理時の誤り検出、誤り訂正及びデータリフレッシュ判定の説明図である。
【００３８】
フラッシュメモリコントローラ２０２は、フラッシュメモリチップ２０３から、要求されたセクタデータ４０４を読み出し、そのセクタデータ４０４を誤り検出部５０１に入力する。
【００３９】
誤り検出部５０１は、セクタデータ４０４の誤りビット数及び誤りビットの位置を特定する。ここで、誤り検出部５０１は、誤り訂正可能か否かを判定する。誤り訂正可能な場合、誤り検出部５０１は、この誤りビット数及び誤りビット位置を示す情報を誤り訂正部５０３へ転送（送信）する（ステップ５０２）。この情報を受信した誤り訂正部５０３は、誤り訂正を実行し、読み出しセクタデータ５０４を生成する。
【００４０】
一方、データリフレッシュ判定部５０５は、セクタデータ４０４を含む消去単位ブロックの管理情報４０５を読み出し（ステップ５０７）、誤り検出部５０１から誤りビット数を示す情報を受信し（ステップ５０６）、これらの情報に基づいて、セクタデータ４０４をリフレッシュするか否かを判定する。この判定の処理については、後で詳細に説明する（図７参照）。
【００４１】
さらに、誤り検出部５０１及びデータリフレッシュ判定部５０５は、誤り訂正ビット数及び該当セクタ（すなわちセクタデータ４０４が格納されたセクタ）をリフレッシュするか否かを示す情報を、読み出しセクタデータ５０４のステータス情報５１０として付加する（ステップ５０８及びステップ５０９）。なお、誤り検出部５０１は、セクタデータ４０４から訂正不可能な誤りを検出した場合、ステップ５０８において、セクタデータ４０４の誤りを訂正できなかったことを示す情報をステータス情報５１０として付加する。
【００４２】
そして、フラッシュメモリコントローラ２０２は、読み出しセクタデータ５０４及びステータス情報５１０をホストへ転送する。
【００４３】
なお、誤り検出部５０１、誤り訂正部５０３及びデータリフレッシュ判定部５０５は、ＭＰＵ３０１がＲＡＭ３０２又はＲＯＭ３０３に格納されたプログラムを実行することによって実現される処理モジュールである。
【００４４】
図６は、本発明の第１の実施形態の不揮発性記憶装置２０１におけるデータリフレッシュ処理の説明図である。
【００４５】
正しいデータ６０１は、セクタデータ４０４の誤りを誤り訂正部５０３が訂正することによって復元されたものである。すなわち、正しいデータ６０１は、図５の読み出しセクタデータ５０４に相当する。
【００４６】
誤り訂正符号生成部４０２は、正しいデータ６０１から誤り訂正符号６０２を生成する。
【００４７】
フラッシュメモリコントローラ２０２は、フラッシュメモリチップ２０３内の消去単位ブロックのうち、セクタデータ４０４が格納されていた消去単位ブロック６１０Ａとは別の消去単位ブロック６１０Ｂへ、正しいデータ６０１及び誤り訂正符号６０２を、セクタデータ６０３として書き込む。さらに、フラッシュメモリコントローラ２０２は、セクタデータ４０４を含む消去単位ブロック６１０Ａの管理情報４０５に、データリフレッシュを行ったことを示す情報を記録する（ステップ６０５）。その後、セクタデータ４０４が格納されたセクタを利用することはできない。
【００４８】
図７は、本発明の第１の実施形態の不揮発性記憶装置２０１におけるデータリフレッシュの判定処理を示すフローチャートである。
【００４９】
図７に示す処理は、フラッシュメモリチップ２０３からデータが読み出されたときに、データリフレッシュ判定部５０５によって実行される（図５参照）。
【００５０】
最初に、フラッシュメモリコントローラ２０２は、要求されたセクタデータ４０４を読み出す（ステップ７０１）。
【００５１】
次に、フラッシュメモリコントローラ２０２の誤り検出部５０１は、セクタデータ４０４の誤りを検出する（ステップ７０２）。
【００５２】
次に、フラッシュメモリコントローラ２０２は、ステップ７０２において検出された誤りビットの数を用いて、誤り頻度を更新する（ステップ７０３）。
【００５３】
誤り頻度は、例えば、次の式（１）によって算出され、当該ブロックの管理情報４０５の一部として格納されてもよい。
【００５４】
誤り頻度＝（当該ブロックから読み出されたセクタデータから１ビット以上の誤りが検出された回数の積算値）／（当該ブロック内のセクタに対して実行された読み出しアクセスの回数の積算値）・・・（１）
なお、図７の説明において当該ブロックとは、セクタデータ４０４が格納されている消去単位ブロックを意味する。
【００５５】
具体的には、ステップ７０３においてフラッシュメモリコントローラ２０２は、誤り頻度を読み出し、読み出しアクセスの回数の積算値に１を加算し、ステップ７０２で少なくとも１ビットの誤りが検出された場合、誤りビット数の積算値に１を加算することによって誤り頻度を更新してもよい。そして、フラッシュメモリコントローラ２０２は、更新された誤り頻度を当該ブロックの管理情報４０５の一部として格納する。
【００５６】
このように、誤りビット数の積算値及びアクセス回数の積算値から誤り頻度を算出するため、一過性の誤りは、誤り頻度の増大にほとんど寄与しない。すなわち、誤り頻度は、主に恒久的な誤りに依存する。
【００５７】
次に、フラッシュメモリコントローラ２０２は、ステップ７０２において少なくとも１ビットの誤りが検出されたか否かを判定する（ステップ７０４）。
【００５８】
ステップ７０４において誤りが検出されなかったと判定された場合、フラッシュメモリコントローラ２０２は処理を終了する。
【００５９】
一方、ステップ７０４において少なくとも１ビットの誤りが検出されたと判定された場合、フラッシュメモリコントローラ２０２は、検出された誤りビット数を計算する（ステップ７０５）。
【００６０】
次に、フラッシュメモリコントローラ２０２は、ステップ７０３において更新された誤り頻度を読み出し、その誤り頻度に基づいて、ステップ７０２において読み出された誤りビット数を補正する（ステップ７０６）。具体的には、フラッシュメモリコントローラ２０２は、誤り頻度が高いほど、補正後の誤りビット数が大きくなるように補正する。例えば、フラッシュメモリコントローラ２０２は、誤り頻度に１を加算した値を、ステップ７０２において読み出された誤りビット数に乗算してもよい。
【００６１】
次に、フラッシュメモリコントローラ２０２は、当該ブロックの消去回数を読み出し、その消去回数に基づいてしきい値を補正する（ステップ７０７）。この補正されたしきい値は、後述するステップ７０８で使用される。当該ブロックの消去回数は、当該ブロックにおいて現在までに実行された消去処理の累積回数であり、当該ブロックの管理情報４０５の一部として格納されている。
【００６２】
フラッシュメモリコントローラ２０２は、当該ブロックの消去回数が多いほど、しきい値が小さくなるように、しきい値を補正する。補正の一例を表１に示す。
【００６３】
【表１】
2009129070.tif 000003
【００６４】
表１は、一つのセクタにおいて誤り訂正符号を用いて訂正可能な誤りビット数の最大値が６ビットであり、かつ、一つの消去単位ブロックにおいて許容される消去回数の最大値が１００，０００回である場合の、消去回数としきい値との関係の例を示す。この例では、消去回数が６０，０００回以下の場合、しきい値として６ビットが設定され、消去回数が９０，０００回を超える場合、しきい値として３ビットが設定される。
【００６５】
次に、フラッシュメモリコントローラ２０２は、ステップ７０６において補正された誤りビット数が、ステップ７０７において補正されたしきい値を超えるか否かを判定する（ステップ７０８）。
【００６６】
ステップ７０８において、補正された誤りビット数が補正されたしきい値を超えると判定された場合、セクタデータ４０４が格納されたセクタのメモリセルの劣化が進行していると考えられる。すなわち、このセクタを放置しておくと、間もなくセクタデータ４０４に訂正不可能な誤りが発生する恐れがある。この場合、フラッシュメモリコントローラ２０２は、セクタデータ４０４をリフレッシュすると判定して（ステップ７０９）、処理を終了する。この場合、図６に示すデータリフレッシュ処理が実行される。
【００６７】
一方、ステップ７０８において、補正された誤りビット数が補正されたしきい値を超えないと判定された場合、フラッシュメモリコントローラ２０２は、セクタデータ４０４をリフレッシュすると判定せずに処理を終了する。
【００６８】
なお、図７の処理では、ステップ７０６において誤りビット数が補正される。しかし、誤りビット数の補正は、誤りビット数と比較されるしきい値の補正と等価である。このため、ステップ７０６において誤りビット数を補正する代わりに、しきい値が補正されてもよい。具体的には、誤り頻度が高いほど、しきい値が低くなるようにしきい値が補正されてもよい。
【００６９】
例えば、フラッシュメモリコントローラ２０２は、ステップ７０２において読み出された誤りビット数に、誤り頻度に１を加算した値を乗算することによって、誤りビット数を補正する。そして、フラッシュメモリコントローラ２０２は、補正された誤りビット数からステップ７０２において読み出された誤りビット数を減算することによって、しきい値の補正値を算出する。その補正値をステップ７０７において表１から取得されたしきい値から減算することによって、しきい値が補正されてもよい。
【００７０】
セクタデータ４０４から訂正不可能な誤りが検出された場合、もはやそのセクタデータ４０４を復元してリフレッシュすることはできない。したがって、セクタデータ４０４に含まれる誤りが訂正可能であるうちにデータリフレッシュを実行する必要がある。このため、できるだけ早くデータリフレッシュを実行することが、データの信頼性を確保するためには望ましいといえる。しかし、データリフレッシュが実行された後、元のセクタは利用できなくなる。したがって、メモリセルの利用効率を高めるためには、訂正不可能な誤りが検出される直前まで、セクタを使用し続けることが望ましい。
【００７１】
本発明の第１の実施形態によれば、検出された誤りビット数が所定のしきい値を超えた場合に、データリフレッシュを実行する必要があると判定される。このとき、既に実行された消去回数が多いほど、しきい値が低く設定される（ステップ７０７）。既に実行された消去回数が多いほど、メモリセルが劣化していると推定される。メモリセルの劣化の程度が高いほど、低いしきい値を設定する（すなわち誤りビット数に対する感度を上げる）ことによって、データリフレッシュを実行する前に訂正不可能な誤りが発生することが防止される。
【００７２】
メモリセルの劣化は、データの消去以外の要因、例えばリードディスターブによっても発生する。このため、本発明の第１の実施形態によれば、恒久的な誤りビット数が多いほど、しきい値が低く設定される（ステップ７０６）。恒久的なビット誤りは、データの消去によるメモリセルの劣化だけでなく、リードディスターブによるメモリセルの劣化によっても増加する。このため、本発明の第１の実施形態によれば、例えば、消去がほとんど実行されていないが、頻繁な読み出し処理によるリードディスターブによってメモリセルが劣化した場合であっても、データリフレッシュを実行する前に訂正不可能な誤りが発生することが防止される。
【００７３】
さらに、本発明の第１の実施形態によれば、メモリセルの劣化の程度が低い場合には、高いしきい値が設定される。これによって、早すぎるデータリフレッシュの実行が防止されるため、メモリセルの利用効率を高めることができる。
【００７４】
次に、本発明の第２の実施形態を、図面を参照しながら説明する。
【００７５】
従来の不揮発性記憶装置のインタフェースでは、コマンドを発行するフェーズとデータを転送するフェーズとコマンドの実行結果のステータス情報を読み出すフェーズとが分かれている。データを転送するフェーズにおいて、データ転送の効率を上げるため、複数セクタを一つのコマンドで転送することができる。しかし、実行結果のステータス情報は、コマンドの実行結果であるため、セクタ単位のステータス情報は得られず、一つのコマンドによる転送の全体のステータス情報が得られるだけである。よって、ステータス情報からエラーを検出すると、一つのコマンドによって転送されたデータ全てが無効になってしまうという問題がある。
【００７６】
特にフラッシュメモリを用いた不揮発性記憶装置において、一つのコマンドによって複数セクタのデータが読み出される場合、誤り訂正で訂正完了した有効な正しいセクタと、誤り訂正不可能で無効なセクタとが混在する可能性がある。このとき、複数セクタに対しステータス情報が一つしかないと、読み出された複数のセクタ全体に対して、有効／無効が判断される。このため、一つでも無効セクタがあると、全データが無効と見なされ、転送効率が悪くなるという問題がある。
【００７７】
フラッシュメモリは、リードディスターブに代表される、徐々に誤りビットが増える障害モードがあるため、誤り訂正機能があっても訂正可能なビット数以上に誤りが増えてしまう可能性がある。このため、転送データを有効に用いるためには、コマンドに対するステータス情報だけでは不十分であるという問題がある。
【００７８】
以下に説明する本発明の第２の実施形態は、上記のような問題を解決するものである。
【００７９】
図８は、本発明の第２の実施形態に適用されるＲＡＩＤシステムの構成を示すブロック図である。
【００８０】
従来の一般的なＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）システムは、多数のハードディスクドライブ（ＨＤＤ）（図示省略）によって冗長化されたディスクアレイ８０６を備えるストレージシステムである。本実施形態のＲＡＩＤシステムは、ＨＤＤを不揮発性記憶装置２０１（例えば、ソリッドステイトドライブ）によって置き換えることによって構成される。
【００８１】
上位ホストシステム８０１は、ＲＡＩＤシステムにデータの書き込み要求及び読み出し要求を発行するホスト計算機である。各上位ホストシステム８０１は、相互に接続されたＣＰＵ（図示省略）、メモリ（図示省略）及びインタフェース（図示省略）を備える。インタフェースは、ＲＡＩＤシステムに接続される。
【００８２】
ＲＡＩＤシステムは、例えば、図８のように、複数の上位ホストシステム８０１に対して、外部記憶空間を提供する。ＲＡＩＤコントローラ８０２は、多数の不揮発性記憶装置２０１をディスクアレイ８０６として制御管理する、ストレージシステムのコントローラである。例えば、ＲＡＩＤコントローラ８０２は、３セクタ分のデータに対して、１セクタのパリティデータを生成し、合計４セクタ分のデータを４個の不揮発性記憶装置２０１に分散して格納する。このような冗長化は、３Ｄ（データ）＋１Ｐ（パリティ）と呼ばれる。これらの４個の不揮発性記憶装置２０１からなるグループは、パリティグループと呼ばれる。この場合、ＲＡＩＤコントローラ８０２は、４セクタ中１セクタのデータが破壊されても、残り３セクタ分のデータに基づいて、破壊された１セクタ分のデータを復元することができる。
【００８３】
あるいは、ＲＡＩＤコントローラ８０２は、２個の不揮発性記憶装置２０１でパリティグループを構成し、それらの２個の不揮発性記憶装置２０１に同一のデータを格納してもよい。その場合、ＲＡＩＤコントローラ８０２は、一方の不揮発性記憶装置２０１に格納されたデータが破壊されても、もう一方の不揮発性記憶装置２０１からデータを読み出すことによって、破壊されたデータを復元することができる。
【００８４】
このように、ＲＡＩＤコントローラ８０２は、は、上位ホストシステム８０１からデータの書き込みを要求されると、書き込みを要求されたデータ、及び、そのデータを冗長化するデータを、複数の不揮発性記憶装置２０１に分散して格納する。そして、書き込まれたデータが破壊された場合、そのデータを冗長化するデータに基づいて、破壊されたデータを復元することができる。書き込みを要求されたデータを冗長化するデータとは、書き込みを要求されたデータと同一のデータ、又は、書き込みを要求されたデータに基づいて算出されたパリティである。
【００８５】
ＲＡＩＤコントローラ８０２は、上位ホストシステムＩ／Ｆ部８０３、キャッシュメモリ部８０４及びディスクドライブ制御部８０５を備える。各上位ホストシステムＩ／Ｆ部８０３及びディスクドライブ制御部８０５は、ＣＰＵ（図示省略）及びメモリ（図示省略）を備え、それらのＣＰＵがメモリに格納されたプログラムを実行することによって、種々の機能が実現される。パリティデータの生成及び破壊されたデータの復元は、ディスクドライブ制御部８０５が実行する。
【００８６】
ＲＡＩＤコントローラ８０２が不揮発性記憶装置２０１にデータの読み出し要求を発行すると、不揮発性記憶装置２０１は、要求されたデータだけでなく、読み出しの結果を示す情報を含むステータス情報を応答する。
【００８７】
図９は、本発明の第２の実施形態の不揮発性記憶装置２０１のデータ入出力の説明図である。
【００８８】
ＲＡＩＤコントローラ８０２が１セクタ分のライトデータ４０１の書き込み要求を発行すると、ライトデータ４０１がセクタデータ４０４（図４参照）として不揮発性記憶装置２０１に格納される。次にＲＡＩＤコントローラ８０２がセクタデータ４０４の読み出し要求を発行すると、不揮発性記憶装置２０１は、リードデータ（読み出しセクタデータ）５０４及びステータス情報５１０を応答する。これらの書き込み及び読み出しの手順は、第１の実施形態と同様であるため、詳細な説明を省略する（図４及び図５参照）。
【００８９】
図１０は、本発明の第２の実施形態のステータス情報５１０の説明図である。
【００９０】
本実施形態のステータス情報５１０は、少なくとも、誤りビット数１００１、訂正可否１００２及びリフレッシュ有無１００３を含む。
【００９１】
誤りビット数１００１は、ステータス情報５１０が付加されたリードデータ５０４において検出された誤りビット数を示す情報である。この情報は、図５のステップ５０８において付加される。
【００９２】
訂正可否１００２は、ステータス情報５１０が付加されたリードデータ５０４の誤りを訂正することができたか否かを示す情報である。この情報は、図５のステップ５０８において付加される。
【００９３】
リフレッシュ有無１００３は、ステータス情報５１０が付加されたリードデータ５０４に対応するセクタデータ４０４が格納されているセクタをリフレッシュするか否かを示す情報である。この情報は、図５のステップ５０９において付加される。
【００９４】
なお、本発明の第１の実施形態のステータス情報５１０も、図１０に記載されたものと同様であってよい。
【００９５】
従来は、一つの読み出しコマンドによって複数セクタの読み出しが要求された場合、要求された複数セクタ全てのデータを転送し終えた後に、ステータス情報が転送された。
【００９６】
図１１は、従来の複数セクタからのデータ読み出しの説明図である。
【００９７】
以下の説明は、図８において説明した３Ｄ＋１Ｐの場合を示す。図１１に示す４個の不揮発性記憶装置２０１は、一つのパリティグループを構成する。図１１に示す複数のリードデータ５０４は、一つの読み出しコマンドに応じて各不揮発性記憶装置２０１から読み出され、転送されたものである。
【００９８】
各不揮発性記憶装置２０１から複数のリードデータ５０４が転送された後、ステータス情報１１０１が転送される。従来は、リードデータ５０４が転送されるタイミング（例えば、ＳＣＳＩプロトコルにおけるデータフェーズ）と、ステータス情報１１０１が転送されるタイミング（例えば、ＳＣＳＩプロトコルにおけるステータスフェーズ）とが明確に分離していた。
【００９９】
この場合、ステータス情報１１０１は、一つのコマンドに対応する各不揮発性記憶装置２０１からの転送の状態を示す情報（例えば、転送が成功したか否かを示す情報）を含む。すなわち、一つのコマンドに応じて一つの不揮発性記憶装置２０１から複数のリードデータ５０４が転送され、それらのうち一部の転送に成功し、残りの転送に失敗した場合であっても、ステータス情報１１０１は転送失敗を示す情報を含む。すなわち、ＲＡＩＤコントローラ８０２は、ステータス情報１１０１に基づいて転送に成功したリードデータ５０４を特定することができないため、転送失敗のステータス情報１１０１に対応する全てのリードデータ５０４を復元する必要がある。
【０１００】
図１２は、本発明の第２の実施形態における複数セクタからのデータ読み出しの説明図である。
【０１０１】
上位ホストシステム８０１からの複数セクタの読み出し要求に応じて、ＲＡＩＤコントローラ８０２は、不揮発性記憶装置２０１の複数セクタから読み出したデータを転送する。このとき、ＲＡＩＤコントローラ８０２は、各セクタに対応する各リードデータ５０４に、ステータス情報５１０を付加する。この場合、リードデータ５０４及びステータス情報５１０は、データが転送されるタイミング（例えば、ＳＣＳＩプロトコルにおけるデータフェーズ）において転送される。
【０１０２】
ＲＡＩＤコントローラ８０２は、各リードデータ５０４に付加されたステータス情報５１０の訂正可否１００２を参照することによって、各リードデータ５０４が訂正不可能な誤りを含んでいるか否かを判定することができる。
【０１０３】
ＲＡＩＤコントローラ８０２は、リードデータ５０４が訂正不可能な誤りを含まない（すなわち、既に不揮発性記憶装置２０１によって誤りが訂正されている）場合、そのリードデータ５０４をそのまま上位ホストシステム８０１に転送する。一方、ＲＡＩＤコントローラ８０２は、リードデータ５０４が訂正不可能な誤りを含む場合、そのリードデータ５０４を復元し、復元されたリードデータ５０４を上位ホストシステム８０１に転送する（図１３参照）。さらに、ＲＡＩＤコントローラ８０２は、復元されたリードデータ５０４を不揮発性記憶装置２０１に書き込む（図１３参照）。
【０１０４】
このように、本実施形態では、セクタデータ４０４に対応するリードデータ５０４ごとにステータス情報が転送される。このため、データ転送と独立にステータス情報１１０１が転送される従来の手順と比較して、ステータス情報５１０の転送効率が高くなる。このため、ＲＡＩＤコントローラ８０２は、各セクタの状態をより速く確認できる。
【０１０５】
図１３は、本発明の第２の実施形態のＲＡＩＤコントローラ８０２によるリードデータ５０４の復元の説明図である。
【０１０６】
図１３において、不揮発性記憶装置２０１Ａ〜２０１Ｄの各々は、複数の不揮発性記憶装置２０１の一つである。不揮発性記憶装置２０１Ａ〜２０１Ｄは、一つのパリティグループを構成する。リードデータ５０４Ａ〜５０４Ｄの各々は、複数のリードデータ５０４の一つであり、それぞれ、不揮発性記憶装置２０１Ａ〜２０１Ｄから転送されたものである。この例において、リードデータ５０４Ａは、リードデータ５０４Ｂ〜５０４Ｄを冗長化するパリティである。ステータス情報５１０Ａ〜５１０Ｄの各々は、複数のステータス情報５１０の一つであり、それぞれ、不揮発性記憶装置２０１Ａ〜２０１Ｄから転送されたものである。
【０１０７】
図１３は、不揮発性記憶装置２０１Ｂから転送されたリードデータ５０４Ｂが訂正不可能な誤りを含む例を示す。この場合、ステータス情報５１０Ｂの訂正可否１００２は、訂正不可能な誤りが含まれることを示す。
【０１０８】
ＲＡＩＤコントローラ８０２は、ステータス情報５１０Ｂの訂正可否１００２を参照してリードデータ５０４Ｂが訂正不可能な誤りを含むと判定すると、リードデータ５０４Ａ、５０４Ｃ及び５０４Ｄの各ビットの排他的論理和を算出することによって、リードデータ５０４Ｂを復元する（ステップ１３０１）。
【０１０９】
次に、ＲＡＩＤコントローラ８０２は、復元されたリードデータ５０４Ｂ、リードデータ５０４Ｃ及び５０４Ｄを上位ホストシステム８０１に転送する（ステップ１３０２）。
【０１１０】
さらに、ＲＡＩＤコントローラ８０２は、復元されたリードデータ５０４Ｂを元の不揮発性記憶装置２０１Ｂに書き込む（ステップ１３０３）。不揮発性記憶装置２０１Ｂは、復元されたリードデータ５０４Ｂを、それが読み出された消去単位ブロック以外の消去単位ブロックに書き込む。
【０１１１】
図１４は、本発明の第２の実施形態のＲＡＩＤコントローラ８０２による不揮発性記憶装置２０１の代替処理の説明図である。
【０１１２】
図１３に示す処理において、さらに、いずれかのステータス情報５１０（図１４の例ではステータス情報５１０Ｃ）のリフレッシュ有無１００３が、リフレッシュする必要があることを示す値である場合、ＲＡＩＤコントローラ８０２の不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１（図１４の例では不揮発性記憶装置２０１Ｃ）の代替処理が必要であるか否かを判定する（図１５参照）。
【０１１３】
具体的には、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃの管理情報を参照して、代替処理が必要であるか否かを判定する（ステップ１４０２）。代替処理が必要であると判定された場合、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃに格納されている全データを読み出して、予備の不揮発性記憶装置２０１Ｅに格納する（ステップ１４０３）。
【０１１４】
なお、不揮発性記憶装置２０１Ｅは、複数の不揮発性記憶装置２０１の一つである。また、不揮発性記憶装置状態判定部１４０１は、ＲＡＩＤコントローラ８０２内のいずれかのＣＰＵ（図示省略）が所定のプログラムを実行することによって実現される処理モジュールである。
【０１１５】
図１５は、本発明の第２の実施形態の不揮発性記憶装置状態判定部１４０１によって実行される処理を示すフローチャートである。
【０１１６】
最初に、不揮発性記憶装置状態判定部１４０１は、転送されたリードデータ５０４Ａ〜５０４Ｄに付加されたステータス情報５１０Ａ〜５１０Ｄを参照して（ステップ１５０１）、それらのうちいずれかのリフレッシュ有無１００３が、リフレッシュする必要があることを示す値であるか否かを判定する（ステップ１５０２）。
【０１１７】
いずれのリフレッシュ有無１００３も、リフレッシュする必要があることを示す値でない場合、メモリセルの劣化が検出されないため、不揮発性記憶装置状態判定部１４０１は処理を終了する。
【０１１８】
一方、いずれかのリフレッシュ有無１００３が、リフレッシュする必要があることを示す値である場合、処理はステップ１５０３に進む。以下、ステータス情報５１０Ｃのリフレッシュ有無１００３がリフレッシュする必要があることを示す値である場合を例として説明する。この場合、リードデータ５０４Ｃの読み出し元である不揮発性記憶装置２０１Ｃのメモリセルの少なくとも一部の劣化が進行している。この場合、不揮発性記憶装置状態判定部１４０１は、上位ホストシステム８０１から要求された一連の処理（例えば、データの読み出し処理）が終了したか否かを判定する（ステップ１５０３）。処理が終了していない場合、ステップ１５０４以降の手順の実行によって上位ホストシステム８０１から要求された処理の実行が妨げられないように、それらの処理の終了を待つ。
【０１１９】
上位ホストシステム８０１から要求された一連の処理が終了した場合、不揮発性記憶装置状態判定部１４０１は、劣化が検出された不揮発性記憶装置２０１Ｃの全ての管理情報４０５を読み出す（ステップ１５０４）。このステップは、図１４のステップ１４０２に相当する。
【０１２０】
次に、不揮発性記憶装置状態判定部１４０１は、劣化が検出された不揮発性記憶装置２０１Ｃの劣化の程度が所定のしきい値を超えるか否かを判定する（ステップ１５０５〜ステップ１５０７）。劣化の程度が高いことは、不揮発性記憶装置２０１Ｃの余命が少ないことを意味する。このため、劣化の程度が所定のしきい値を超えると判定された場合、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃの代替処理を実行する（ステップ１５０８）。劣化の程度は、どのような方法で判定されてもよいが、本実施形態ではステップ１５０５〜ステップ１５０７の手順によって判定される。
【０１２１】
具体的には、不揮発性記憶装置状態判定部１４０１は、読み出した管理情報４０５に含まれる消去単位ブロックの消去回数を参照して、不揮発性記憶装置２０１Ｃ内の全消去単位ブロックの消去回数の平均値を算出する。そして、不揮発性記憶装置状態判定部１４０１は、算出された消去回数の平均値が所定のしきい値を超えるか否かを判定する（ステップ１５０５）。
【０１２２】
ステップ１５０５のしきい値は、各消去単位ブロックにあらかじめ設定されている消去回数の上限値より小さく、かつ、それに比較的近い値であることが望ましい。例えば、消去回数の上限値が１０万回である場合、しきい値は９万回であってもよい。
【０１２３】
ステップ１５０５において、算出された消去回数の平均値が所定のしきい値を超えたと判定された場合、不揮発性記憶装置２０１Ｃの劣化の程度が所定のしきい値を超えたと判定される。このため、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃの代替処理を実行する（ステップ１５０８）。
【０１２４】
一方、ステップ１５０５において、算出された消去回数の平均値が所定のしきい値を超えないと判定された場合、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃ内の全消去単位ブロックの消去回数の最大値が上限値（例えば１０万回）以上であるか否かを判定する（ステップ１５０６）。
【０１２５】
ステップ１５０６において、消去回数の最大値が上限値より小さいと判定された場合、劣化の程度が所定のしきい値を超えていないと判定される。この場合、不揮発性記憶装置２０１Ｃの余命にまだ余裕があると考えられる。このため、不揮発性記憶装置状態判定部１４０１は、ステップ１５０８を実行せずに処理を終了する。
【０１２６】
一方、ステップ１５０６において、消去回数の最大値が上限値以上であると判定された場合、不揮発性記憶装置状態判定部１４０１は、代替領域の残りの数が所定のしきい値以下であるか否かを判定する（ステップ１５０７）。
【０１２７】
代替領域とは、各不揮発性記憶装置２０１にあらかじめ用意されている予備の消去単位ブロックである。各不揮発性記憶装置２０１は、劣化等のためにある消去単位ブロックを使用できなくなった場合、その消去単位ブロックの代わりに代替領域を使用する。代替領域の残りとは、用意された全代替領域のうち、まだ使用されていないものを意味する。ステップ１５０７のしきい値は、例えば、用意された全代替領域の数の１０％に相当する数であってもよい。
【０１２８】
ステップ１５０７において、代替領域の残りの数が所定のしきい値より多いと判定された場合、劣化の程度が所定のしきい値を超えていないと判定される。この場合、不揮発性記憶装置２０１Ｃの余命にまだ余裕があると考えられる。このため、不揮発性記憶装置状態判定部１４０１は、ステップ１５０８を実行せずに処理を終了する。
【０１２９】
一方、ステップ１５０７において、代替領域の残りの数が所定のしきい値以下であると判定された場合、不揮発性記憶装置２０１Ｃの劣化の程度が所定のしきい値を超えたと判定される。このため、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃの代替処理を実行する（ステップ１５０８）。
【０１３０】
ステップ１５０８において、不揮発性記憶装置状態判定部１４０１は、不揮発性記憶装置２０１Ｃに格納されている全データを読み出し、読み出したデータを予備の不揮発性記憶装置２０１（例えば不揮発性記憶装置２０１Ｅ）に格納する。このステップは、図１４のステップ１４０３に相当する。
【０１３１】
このように、本発明の第２の実施形態によれば、フラッシュメモリで発生した誤りを訂正することによって正しいデータが復元された場合においても、ＲＡＩＤコントローラに誤り訂正状況を伝達し、効率よいフラッシュメモリ記憶装置の検査タイミングを得ることが可能になる。さらに、読み出されたセクタの一部が、誤り訂正能力以上の誤りを含む、訂正不可能なセクタであった場合でも、ＲＡＩＤコントローラがデータを効率よく復元することが可能になる。
【０１３２】
以上の本発明の第１及び第２の実施形態によれば、フラッシュメモリを、高度な信頼性を必要とするＲＡＩＤシステムに適用することが可能になる。さらに、リードディスターブ耐性が低いフラッシュメモリでも、ＲＡＩＤシステムへ適用することが可能になる。すなわち、フラッシュメモリの歩留まりを改善できるため、フラッシュメモリのコスト低減を図ることができる。
【０１３３】
また、本発明の実施形態によれば、フラッシュメモリを搭載する記憶装置で誤り訂正ビットに応じてセクタデータをリフレッシュすることによって、フラッシュメモリの寿命を使い切りつつ、信頼性を保った記憶装置を提供することができる。
【図面の簡単な説明】
【０１３４】
【図１】本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリのメモリセルの説明図である。
【図２】本発明の第１の実施形態の不揮発性記憶装置の構成を示すブロック図である。
【図３】本発明の第１の実施形態のフラッシュメモリコントローラの構成を示すブロック図である。
【図４】本発明の第１の実施形態の不揮発性記憶装置におけるデータ書き込み処理時の誤り訂正符号生成の説明図である。
【図５】本発明の第１の実施形態の不揮発性記憶装置におけるデータ読み出し処理時の誤り検出、誤り訂正及びデータリフレッシュ判定の説明図である。
【図６】本発明の第１の実施形態の不揮発性記憶装置におけるデータリフレッシュ処理の説明図である。
【図７】本発明の第１の実施形態の不揮発性記憶装置におけるデータリフレッシュの判定処理を示すフローチャートである。
【図８】本発明の第２の実施形態に適用されるＲＡＩＤシステムの構成を示すブロック図である。
【図９】本発明の第２の実施形態の不揮発性記憶装置のデータ入出力の説明図である。
【図１０】本発明の第２の実施形態のステータス情報の説明図である。
【図１１】従来の複数セクタからのデータ読み出しの説明図である。
【図１２】本発明の第２の実施形態における複数セクタからのデータ読み出しの説明図である。
【図１３】本発明の第２の実施形態のＲＡＩＤコントローラによるリードデータの復元の説明図である。
【図１４】本発明の第２の実施形態のＲＡＩＤコントローラによるデータリフレッシュ処理の説明図である。
【図１５】本発明の第２の実施形態の不揮発性記憶装置状態判定部によって実行される処理を示すフローチャートである。
【符号の説明】
【０１３５】
２０１  不揮発性記憶装置
２０２  フラッシュメモリコントローラ
２０３  フラッシュメモリチップ
８０２  ＲＡＩＤコントローラ
【図１】
2009129070.tif 000004
【図２】
2009129070.tif 000005
【図３】
2009129070.tif 000006
【図７】
2009129070.tif 000007
【図８】
2009129070.tif 000008
【図１３】
2009129070.tif 000009
【図１４】
2009129070.tif 000010
【図１５】
2009129070.tif 000011
【図４】
2009129070.tif 000012
【図５】
2009129070.tif 000013
【図６】
2009129070.tif 000014
【図９】
2009129070.tif 000015
【図１０】
2009129070.tif 000016
【図１１】
2009129070.tif 000017
【図１２】
2009129070.tif 000018