JP2009129070A - フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム - Google Patents
フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム Download PDFInfo
- Publication number
- JP2009129070A JP2009129070A JP2007301556A JP2007301556A JP2009129070A JP 2009129070 A JP2009129070 A JP 2009129070A JP 2007301556 A JP2007301556 A JP 2007301556A JP 2007301556 A JP2007301556 A JP 2007301556A JP 2009129070 A JP2009129070 A JP 2009129070A
- Authority
- JP
- Japan
- Prior art keywords
- data
- erase
- erase block
- sectors
- error
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
【課題】フラッシュメモリの寿命を使い切りつつ、信頼性の高い記憶装置を提供する。
【解決手段】複数の記憶セルを備える不揮発性記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記複数の記憶セルは、複数の消去単位である消去ブロックに分割され、前記不揮発性記憶装置は、第1消去ブロックに格納されたデータを読み出し、前記読み出されたデータに含まれる誤りを検出及び訂正し、検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを第2消去ブロックに格納し、前記第1消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、前記第1消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定する。
【選択図】図5
【解決手段】複数の記憶セルを備える不揮発性記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記複数の記憶セルは、複数の消去単位である消去ブロックに分割され、前記不揮発性記憶装置は、第1消去ブロックに格納されたデータを読み出し、前記読み出されたデータに含まれる誤りを検出及び訂正し、検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを第2消去ブロックに格納し、前記第1消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、前記第1消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定する。
【選択図】図5
Description
本願明細書で開示される技術は、フラッシュメモリを用いた不揮発性記憶装置に関する。
フラッシュメモリを用いた記憶装置では、フラッシュメモリの特性上、誤り訂正が必須である。誤りには、一過性の誤りと定常的な誤りとが存在する。一過性の誤りとは、あるデータを読み出したときに検出されるが、次に同じデータを読み出したときには検出されないような誤りである。このような誤りは、ノイズ又はしきい値電圧に近い入力のために、出力を「0」にも「1」にも認識できるような状態において発生する。
定常的な誤りとは、あるデータを読み出したときに検出されると、以後、そのデータを読み出したときに必ず検出されるような、恒久的な誤りである。このような定常的な誤りは、フラッシュメモリの記憶セルを構成する、フローティングゲート構造を備えるトランジスタのしきい値電圧が変化したために発生する。しきい値電圧が変化すると、「0」を記憶させたのに「1」が読み出されたり、「1」を記憶させたのに「0」と読み出されたりする。このような定常的な誤りの原因の代表的なものは、リードディスターブである。
リードディスターブの場合、トランジスタのしきい値が変化する。このため、書き込まれたデータが、読み出し時には異なった値と認識される。このしきい値の変化の方向、及び異なった値の認識のし易さには傾向がある。しかし、いわゆる多値のフラッシュメモリ(すなわち、一つの記憶セルに複数のしきい値電圧を設定することによって、各記憶セルが複数ビットの情報を記憶するフラッシュメモリ)等では、「1」を「0」と誤る場合と「0」を「1」と誤る場合の両方が均等に発生しうる。これは、多値のフラッシュメモリにおいて、複数のしきい値電圧によって区切られた複数の電圧範囲の一つに対応付けられる複数ビットと、それに隣接する電圧範囲に対応付けられる複数ビットとの間のハミング距離が1であるためである。
リードディスターブへの対策として、特許文献1が開示されている。
一般に、フラッシュメモリを用いた記憶媒体である、コンパクトフラッシュ(登録商標)メモリカード、エスディ(SD)メモリカード及びソリッドステイトドライブなどは、モジュール内部にコントローラを備え、そのコントローラがフラッシュメモリチップを制御する。一般に、誤り訂正もこのコントローラが実行する。内部に誤り訂正機能を持つフラッシュメモリチップもある。
このように、フラッシュメモリコントローラ(又はフラッシュメモリチップ)が誤り訂正を実行するため、どの程度のビット数の誤が訂正されたか、外部からはわからないのが一般的である。この場合、誤り訂正が不可能になってはじめてエラーとして認識できる。
従来の不揮発性記憶装置のインタフェースにおけるデータ転送では、リードコマンドを発行すると、リードコマンドに対応したデータが応答として返信される。コマンド実行結果のステータス情報を、データ転送の前に確認できるインタフェースと、データ転送後に確認できるインタフェースとがあるが、いずれの場合のステータス情報も、原則として、コマンドに対する実行結果としてのステータス情報である。つまり、コマンドとステータスが1対1に対応しているため、例えば複数セクタ転送のコマンドに対しても、応答されるステータスは一つである。
特開2004−326867号公報
フラッシュメモリを用いた記憶装置は、リードディスターブのような、誤りを増やす現象を包含している。このため、複数ビットの誤り訂正能力を持っていても、時間が経つと、誤り訂正能力以上に誤りが増え、正確な情報を記憶できなくなるという問題がある。
また、リードディスターブは、消去回数等に影響される。このため、訂正可能な誤りが発生しても、その誤りの程度が誤り訂正能力を超えるまでに進行する可能性は、それぞれの消去単位毎に異なるという問題がある。
フラッシュメモリを用いた不揮発性記憶装置の場合、フラッシュメモリの消去単位毎に消去回数の上限値が定められている。このため、フラッシュメモリは、消去単位毎に、使用中に消去不可能になり、寿命を迎える。よって、不揮発性記憶装置を管理制御する部分は、不揮発性記憶装置の状態を常に監視し、寿命を迎え使用不可能になる前に、データを失わないための処理を実行する必要がある。データを失わないための処理として、例えば、寿命が近づいた消去単位のデータを他の消去単位にコピーする、いわゆるリフレッシュ処理が実行されてもよい。
本願で開示する代表的な発明は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、前記複数の消去ブロックは、第1消去ブロック及び第2消去ブロックを含み、前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、前記不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、前記メモリコントローラは、前記第1消去ブロックに格納されたデータを読み出し、前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正し、検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第2消去ブロックに格納するリフレッシュ処理を実行し、前記第1消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、前記第1消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定することを特徴とする。
本発明の一実施形態によれば、フラッシュメモリ記憶装置において、フラッシュメモリで発生する誤りが、誤り訂正能力以上に増える前に、適切にリフレッシュすることが可能になる。このため、フラッシュメモリの寿命を使い切りつつ、信頼性の高い記憶装置を提供することが可能になる。
本発明の第1の実施形態を、図面を参照しながら説明する。
図1は、本発明の第1の実施形態のNAND型フラッシュメモリのメモリセルの説明図である。
図1に示すように、NAND型フラッシュメモリのメモリセルは、横方向に16896個程度、縦方向に16個程度並んでいる。各メモリセルは、フローティングゲートを備えるFET(電界効果トランジスタ)である。横方向の1列のメモリセルごとに読み出し及び書き込みが実行される場合が多いため、このような各列がページと呼ばれる管理単位として扱われる。縦方向の1列は、フローティングゲートを備えるFETが、16個程度直列に接続されたものである。この直列に接続されているFETの間でリードディスターブが発生するため、16ページの範囲にリードディスターブの影響が及ぶ。
64ページ程度がブロックを構成する。ブロックは、データの消去単位である。言い換えると、一つのブロックは、1回の消去処理によって消去可能な最少のメモリセルからなる。以下、この消去単位であるブロックを、消去単位ブロックとも記載する(例えば、図6に示す消去単位ブロック610A及び610B)。
1ページが16896個のメモリセルからなる場合、1ページは16896ビット(すなわち2112バイト)のデータを保持することができる。この場合、1ページが複数のセクタを含んでもよい。例えば、1ページが、512バイトのセクタを4個含んでもよい。残りのバイトは、各セクタのデータから算出されたECC(誤り訂正符号)及び各セクタの管理情報を含んでもよい。
ここで、セクタとは、データ転送の最小単位である。言い換えると、一つのセクタは、1回の書き込み要求又は読み出し要求によって処理可能な最少のメモリセルからなる。例えば一つのセクタが512バイトからなる場合、512バイトの整数倍のサイズのデータの書き込み及び読み出しのみが許容される。
図1に示すNAND型フラッシュメモリは、従来の一般的なものと同様である。ただし、半導体チップ上のメモリセルの配置及び管理単位は、メーカによって異なる場合がある。このため、上記のメモリセルの個数等は一例である。メモリセルの個数等が上記と異なる場合であっても、本発明を適用することができる。
図2は、本発明の第1の実施形態の不揮発性記憶装置201の構成を示すブロック図である。
本実施形態の不揮発性記憶装置201は、データ記憶素子としてNAND型フラッシュメモリを採用したものである。不揮発性記憶装置201は、例えば図2に示すように、フラッシュメモリコントローラ202、及び、それに接続された複数のフラッシュメモリチップ203を備える。フラッシュメモリコントローラ202は、情報伝達手段205を介して不揮発性記憶装置201の外部と情報をやり取りする。各フラッシュメモリチップ203は、図1に示すNAND型フラッシュメモリセルを含む。フラッシュメモリコントローラ202とフラッシュメモリチップ203とは、フラッシュメモリインタフェース部305(図3参照)及び接続線204を介して接続される。
図3は、本発明の第1の実施形態のフラッシュメモリコントローラ202の構成を示すブロック図である。
フラッシュメモリコントローラ202は、例えば図3に示すように、マイクロプロセッサ(MPU)301、RAM302、ROM303、ホストインタフェース部(HOST I/F)304及びフラッシュメモリインタフェース部(Flash Memory I/F)305を備える。マイクロプロセッサ301、RAM302、ROM303、ホストインタフェース部304及びフラッシュメモリインタフェース部305は、マイクロプロセッサのバス306によって相互に接続される。一方、ホストインタフェース部304及びフラッシュメモリインタフェース部305は、高速にデータを転送する専用バス307によって相互に接続される。
マイクロプロセッサ301は、ROM303に格納されたプログラムを実行する。
RAM302は、マイクロプロセッサ301がワークエリア及びフラッシュメモリ管理情報を格納するランダムアクセスメモリである。
ROM303は、マイクロプロセッサ301によって実行されるプログラムを格納する読み出し専用メモリである。ROMには、例えば、フラッシュメモリインタフェース部305又はホストインタフェース部304等を制御管理するプログラムが格納される。
ホストインタフェース部304は、外部ホスト(図示省略)と接続され、外部ホストとマイクロプロセッサ301との間の通信に使用されるインタフェースである。外部ホストは、不揮発性記憶装置201に対してデータの書き込み及び読み出し要求を送信する装置である。種々の装置が外部ホストとしてホストインタフェース部304に接続され得る。
例えば、外部ホストは、ディジタル画像記録装置又はディジタル音声記録装置であってもよい。その場合、不揮発性記憶装置201は、例えば、それらの装置に使用されるメモリカードである。
あるいは、不揮発性記憶装置201がハードディスクドライブ(HDD)(図示省略)を置き換えるデータ記憶装置(いわゆるソリッドステイトドライブ)として使用される場合、外部ホストは、HDDに対するデータ書き込み及び読み出し要求を送信する計算機又はRAIDコントローラ(後述)であってもよい。その場合、ホストインタフェース部304は、例えばSCSI又はファイバーチャネル(FC)等のプロトコルに基づいて外部ホストと通信する。
フラッシュメモリインタフェース部305は、フラッシュメモリチップ203を駆動する信号を制御し、マイクロプロセッサ301からの要求に従ってフラッシュメモリチップ203をアクセスする。
以下の説明においてフラッシュメモリコントローラ202が実行する処理は、より正確には、MPU301がRAM302又はROM303に格納されたプログラムを実行し、RAM302、ROM303、ホストインタフェース部304及びフラッシュメモリインタフェース部305を制御することによって実行される。
図4は、本発明の第1の実施形態の不揮発性記憶装置201におけるデータ書き込み処理時の誤り訂正符号生成の説明図である。
フラッシュメモリコントローラ202は、書き込みを要求されたデータ(ライトデータ)を、最小転送単位(すなわちセクタ)ごとに処理する。ライトデータ401は、1セクタ分のライトデータである。誤り訂正符号生成部402は、ライトデータ401から誤り訂正符号403を生成し、その誤り訂正符号403をライトデータ401に付加し、ライトデータ401及び誤り訂正符号403をセクタデータ404としてフラッシュメモリチップ203に書き込む。
なお、誤り訂正符号生成部402は、MPU301がRAM302又はROM303に格納されたプログラムを実行することによって実現される処理モジュールである。
図4の例において、消去単位ブロックの管理情報405は、フラッシュメモリチップ203に格納されているが、不揮発な情報として格納される限りどこに格納されてもよい。管理情報405は、少なくとも、各消去単位ブロックにおいて実行された消去処理の回数を示す情報を含む。
図5は、本発明の第1の実施形態の不揮発性記憶装置201におけるデータ読み出し処理時の誤り検出、誤り訂正及びデータリフレッシュ判定の説明図である。
フラッシュメモリコントローラ202は、フラッシュメモリチップ203から、要求されたセクタデータ404を読み出し、そのセクタデータ404を誤り検出部501に入力する。
誤り検出部501は、セクタデータ404の誤りビット数及び誤りビットの位置を特定する。ここで、誤り検出部501は、誤り訂正可能か否かを判定する。誤り訂正可能な場合、誤り検出部501は、この誤りビット数及び誤りビット位置を示す情報を誤り訂正部503へ転送(送信)する(ステップ502)。この情報を受信した誤り訂正部503は、誤り訂正を実行し、読み出しセクタデータ504を生成する。
一方、データリフレッシュ判定部505は、セクタデータ404を含む消去単位ブロックの管理情報405を読み出し(ステップ507)、誤り検出部501から誤りビット数を示す情報を受信し(ステップ506)、これらの情報に基づいて、セクタデータ404をリフレッシュするか否かを判定する。この判定の処理については、後で詳細に説明する(図7参照)。
さらに、誤り検出部501及びデータリフレッシュ判定部505は、誤り訂正ビット数及び該当セクタ(すなわちセクタデータ404が格納されたセクタ)をリフレッシュするか否かを示す情報を、読み出しセクタデータ504のステータス情報510として付加する(ステップ508及びステップ509)。なお、誤り検出部501は、セクタデータ404から訂正不可能な誤りを検出した場合、ステップ508において、セクタデータ404の誤りを訂正できなかったことを示す情報をステータス情報510として付加する。
そして、フラッシュメモリコントローラ202は、読み出しセクタデータ504及びステータス情報510をホストへ転送する。
なお、誤り検出部501、誤り訂正部503及びデータリフレッシュ判定部505は、MPU301がRAM302又はROM303に格納されたプログラムを実行することによって実現される処理モジュールである。
図6は、本発明の第1の実施形態の不揮発性記憶装置201におけるデータリフレッシュ処理の説明図である。
正しいデータ601は、セクタデータ404の誤りを誤り訂正部503が訂正することによって復元されたものである。すなわち、正しいデータ601は、図5の読み出しセクタデータ504に相当する。
誤り訂正符号生成部402は、正しいデータ601から誤り訂正符号602を生成する。
フラッシュメモリコントローラ202は、フラッシュメモリチップ203内の消去単位ブロックのうち、セクタデータ404が格納されていた消去単位ブロック610Aとは別の消去単位ブロック610Bへ、正しいデータ601及び誤り訂正符号602を、セクタデータ603として書き込む。さらに、フラッシュメモリコントローラ202は、セクタデータ404を含む消去単位ブロック610Aの管理情報405に、データリフレッシュを行ったことを示す情報を記録する(ステップ605)。その後、セクタデータ404が格納されたセクタを利用することはできない。
図7は、本発明の第1の実施形態の不揮発性記憶装置201におけるデータリフレッシュの判定処理を示すフローチャートである。
図7に示す処理は、フラッシュメモリチップ203からデータが読み出されたときに、データリフレッシュ判定部505によって実行される(図5参照)。
最初に、フラッシュメモリコントローラ202は、要求されたセクタデータ404を読み出す(ステップ701)。
次に、フラッシュメモリコントローラ202の誤り検出部501は、セクタデータ404の誤りを検出する(ステップ702)。
次に、フラッシュメモリコントローラ202は、ステップ702において検出された誤りビットの数を用いて、誤り頻度を更新する(ステップ703)。
誤り頻度は、例えば、次の式(1)によって算出され、当該ブロックの管理情報405の一部として格納されてもよい。
誤り頻度=(当該ブロックから読み出されたセクタデータから1ビット以上の誤りが検出された回数の積算値)/(当該ブロック内のセクタに対して実行された読み出しアクセスの回数の積算値)・・・(1)
なお、図7の説明において当該ブロックとは、セクタデータ404が格納されている消去単位ブロックを意味する。
なお、図7の説明において当該ブロックとは、セクタデータ404が格納されている消去単位ブロックを意味する。
具体的には、ステップ703においてフラッシュメモリコントローラ202は、誤り頻度を読み出し、読み出しアクセスの回数の積算値に1を加算し、ステップ702で少なくとも1ビットの誤りが検出された場合、誤りビット数の積算値に1を加算することによって誤り頻度を更新してもよい。そして、フラッシュメモリコントローラ202は、更新された誤り頻度を当該ブロックの管理情報405の一部として格納する。
このように、誤りビット数の積算値及びアクセス回数の積算値から誤り頻度を算出するため、一過性の誤りは、誤り頻度の増大にほとんど寄与しない。すなわち、誤り頻度は、主に恒久的な誤りに依存する。
次に、フラッシュメモリコントローラ202は、ステップ702において少なくとも1ビットの誤りが検出されたか否かを判定する(ステップ704)。
ステップ704において誤りが検出されなかったと判定された場合、フラッシュメモリコントローラ202は処理を終了する。
一方、ステップ704において少なくとも1ビットの誤りが検出されたと判定された場合、フラッシュメモリコントローラ202は、検出された誤りビット数を計算する(ステップ705)。
次に、フラッシュメモリコントローラ202は、ステップ703において更新された誤り頻度を読み出し、その誤り頻度に基づいて、ステップ702において読み出された誤りビット数を補正する(ステップ706)。具体的には、フラッシュメモリコントローラ202は、誤り頻度が高いほど、補正後の誤りビット数が大きくなるように補正する。例えば、フラッシュメモリコントローラ202は、誤り頻度に1を加算した値を、ステップ702において読み出された誤りビット数に乗算してもよい。
次に、フラッシュメモリコントローラ202は、当該ブロックの消去回数を読み出し、その消去回数に基づいてしきい値を補正する(ステップ707)。この補正されたしきい値は、後述するステップ708で使用される。当該ブロックの消去回数は、当該ブロックにおいて現在までに実行された消去処理の累積回数であり、当該ブロックの管理情報405の一部として格納されている。
フラッシュメモリコントローラ202は、当該ブロックの消去回数が多いほど、しきい値が小さくなるように、しきい値を補正する。補正の一例を表1に示す。
表1は、一つのセクタにおいて誤り訂正符号を用いて訂正可能な誤りビット数の最大値が6ビットであり、かつ、一つの消去単位ブロックにおいて許容される消去回数の最大値が100,000回である場合の、消去回数としきい値との関係の例を示す。この例では、消去回数が60,000回以下の場合、しきい値として6ビットが設定され、消去回数が90,000回を超える場合、しきい値として3ビットが設定される。
次に、フラッシュメモリコントローラ202は、ステップ706において補正された誤りビット数が、ステップ707において補正されたしきい値を超えるか否かを判定する(ステップ708)。
ステップ708において、補正された誤りビット数が補正されたしきい値を超えると判定された場合、セクタデータ404が格納されたセクタのメモリセルの劣化が進行していると考えられる。すなわち、このセクタを放置しておくと、間もなくセクタデータ404に訂正不可能な誤りが発生する恐れがある。この場合、フラッシュメモリコントローラ202は、セクタデータ404をリフレッシュすると判定して(ステップ709)、処理を終了する。この場合、図6に示すデータリフレッシュ処理が実行される。
一方、ステップ708において、補正された誤りビット数が補正されたしきい値を超えないと判定された場合、フラッシュメモリコントローラ202は、セクタデータ404をリフレッシュすると判定せずに処理を終了する。
なお、図7の処理では、ステップ706において誤りビット数が補正される。しかし、誤りビット数の補正は、誤りビット数と比較されるしきい値の補正と等価である。このため、ステップ706において誤りビット数を補正する代わりに、しきい値が補正されてもよい。具体的には、誤り頻度が高いほど、しきい値が低くなるようにしきい値が補正されてもよい。
例えば、フラッシュメモリコントローラ202は、ステップ702において読み出された誤りビット数に、誤り頻度に1を加算した値を乗算することによって、誤りビット数を補正する。そして、フラッシュメモリコントローラ202は、補正された誤りビット数からステップ702において読み出された誤りビット数を減算することによって、しきい値の補正値を算出する。その補正値をステップ707において表1から取得されたしきい値から減算することによって、しきい値が補正されてもよい。
セクタデータ404から訂正不可能な誤りが検出された場合、もはやそのセクタデータ404を復元してリフレッシュすることはできない。したがって、セクタデータ404に含まれる誤りが訂正可能であるうちにデータリフレッシュを実行する必要がある。このため、できるだけ早くデータリフレッシュを実行することが、データの信頼性を確保するためには望ましいといえる。しかし、データリフレッシュが実行された後、元のセクタは利用できなくなる。したがって、メモリセルの利用効率を高めるためには、訂正不可能な誤りが検出される直前まで、セクタを使用し続けることが望ましい。
本発明の第1の実施形態によれば、検出された誤りビット数が所定のしきい値を超えた場合に、データリフレッシュを実行する必要があると判定される。このとき、既に実行された消去回数が多いほど、しきい値が低く設定される(ステップ707)。既に実行された消去回数が多いほど、メモリセルが劣化していると推定される。メモリセルの劣化の程度が高いほど、低いしきい値を設定する(すなわち誤りビット数に対する感度を上げる)ことによって、データリフレッシュを実行する前に訂正不可能な誤りが発生することが防止される。
メモリセルの劣化は、データの消去以外の要因、例えばリードディスターブによっても発生する。このため、本発明の第1の実施形態によれば、恒久的な誤りビット数が多いほど、しきい値が低く設定される(ステップ706)。恒久的なビット誤りは、データの消去によるメモリセルの劣化だけでなく、リードディスターブによるメモリセルの劣化によっても増加する。このため、本発明の第1の実施形態によれば、例えば、消去がほとんど実行されていないが、頻繁な読み出し処理によるリードディスターブによってメモリセルが劣化した場合であっても、データリフレッシュを実行する前に訂正不可能な誤りが発生することが防止される。
さらに、本発明の第1の実施形態によれば、メモリセルの劣化の程度が低い場合には、高いしきい値が設定される。これによって、早すぎるデータリフレッシュの実行が防止されるため、メモリセルの利用効率を高めることができる。
次に、本発明の第2の実施形態を、図面を参照しながら説明する。
従来の不揮発性記憶装置のインタフェースでは、コマンドを発行するフェーズとデータを転送するフェーズとコマンドの実行結果のステータス情報を読み出すフェーズとが分かれている。データを転送するフェーズにおいて、データ転送の効率を上げるため、複数セクタを一つのコマンドで転送することができる。しかし、実行結果のステータス情報は、コマンドの実行結果であるため、セクタ単位のステータス情報は得られず、一つのコマンドによる転送の全体のステータス情報が得られるだけである。よって、ステータス情報からエラーを検出すると、一つのコマンドによって転送されたデータ全てが無効になってしまうという問題がある。
特にフラッシュメモリを用いた不揮発性記憶装置において、一つのコマンドによって複数セクタのデータが読み出される場合、誤り訂正で訂正完了した有効な正しいセクタと、誤り訂正不可能で無効なセクタとが混在する可能性がある。このとき、複数セクタに対しステータス情報が一つしかないと、読み出された複数のセクタ全体に対して、有効/無効が判断される。このため、一つでも無効セクタがあると、全データが無効と見なされ、転送効率が悪くなるという問題がある。
フラッシュメモリは、リードディスターブに代表される、徐々に誤りビットが増える障害モードがあるため、誤り訂正機能があっても訂正可能なビット数以上に誤りが増えてしまう可能性がある。このため、転送データを有効に用いるためには、コマンドに対するステータス情報だけでは不十分であるという問題がある。
以下に説明する本発明の第2の実施形態は、上記のような問題を解決するものである。
図8は、本発明の第2の実施形態に適用されるRAIDシステムの構成を示すブロック図である。
従来の一般的なRAID(Redundant Arrays of Inexpensive Disks)システムは、多数のハードディスクドライブ(HDD)(図示省略)によって冗長化されたディスクアレイ806を備えるストレージシステムである。本実施形態のRAIDシステムは、HDDを不揮発性記憶装置201(例えば、ソリッドステイトドライブ)によって置き換えることによって構成される。
上位ホストシステム801は、RAIDシステムにデータの書き込み要求及び読み出し要求を発行するホスト計算機である。各上位ホストシステム801は、相互に接続されたCPU(図示省略)、メモリ(図示省略)及びインタフェース(図示省略)を備える。インタフェースは、RAIDシステムに接続される。
RAIDシステムは、例えば、図8のように、複数の上位ホストシステム801に対して、外部記憶空間を提供する。RAIDコントローラ802は、多数の不揮発性記憶装置201をディスクアレイ806として制御管理する、ストレージシステムのコントローラである。例えば、RAIDコントローラ802は、3セクタ分のデータに対して、1セクタのパリティデータを生成し、合計4セクタ分のデータを4個の不揮発性記憶装置201に分散して格納する。このような冗長化は、3D(データ)+1P(パリティ)と呼ばれる。これらの4個の不揮発性記憶装置201からなるグループは、パリティグループと呼ばれる。この場合、RAIDコントローラ802は、4セクタ中1セクタのデータが破壊されても、残り3セクタ分のデータに基づいて、破壊された1セクタ分のデータを復元することができる。
あるいは、RAIDコントローラ802は、2個の不揮発性記憶装置201でパリティグループを構成し、それらの2個の不揮発性記憶装置201に同一のデータを格納してもよい。その場合、RAIDコントローラ802は、一方の不揮発性記憶装置201に格納されたデータが破壊されても、もう一方の不揮発性記憶装置201からデータを読み出すことによって、破壊されたデータを復元することができる。
このように、RAIDコントローラ802は、は、上位ホストシステム801からデータの書き込みを要求されると、書き込みを要求されたデータ、及び、そのデータを冗長化するデータを、複数の不揮発性記憶装置201に分散して格納する。そして、書き込まれたデータが破壊された場合、そのデータを冗長化するデータに基づいて、破壊されたデータを復元することができる。書き込みを要求されたデータを冗長化するデータとは、書き込みを要求されたデータと同一のデータ、又は、書き込みを要求されたデータに基づいて算出されたパリティである。
RAIDコントローラ802は、上位ホストシステムI/F部803、キャッシュメモリ部804及びディスクドライブ制御部805を備える。各上位ホストシステムI/F部803及びディスクドライブ制御部805は、CPU(図示省略)及びメモリ(図示省略)を備え、それらのCPUがメモリに格納されたプログラムを実行することによって、種々の機能が実現される。パリティデータの生成及び破壊されたデータの復元は、ディスクドライブ制御部805が実行する。
RAIDコントローラ802が不揮発性記憶装置201にデータの読み出し要求を発行すると、不揮発性記憶装置201は、要求されたデータだけでなく、読み出しの結果を示す情報を含むステータス情報を応答する。
図9は、本発明の第2の実施形態の不揮発性記憶装置201のデータ入出力の説明図である。
RAIDコントローラ802が1セクタ分のライトデータ401の書き込み要求を発行すると、ライトデータ401がセクタデータ404(図4参照)として不揮発性記憶装置201に格納される。次にRAIDコントローラ802がセクタデータ404の読み出し要求を発行すると、不揮発性記憶装置201は、リードデータ(読み出しセクタデータ)504及びステータス情報510を応答する。これらの書き込み及び読み出しの手順は、第1の実施形態と同様であるため、詳細な説明を省略する(図4及び図5参照)。
図10は、本発明の第2の実施形態のステータス情報510の説明図である。
本実施形態のステータス情報510は、少なくとも、誤りビット数1001、訂正可否1002及びリフレッシュ有無1003を含む。
誤りビット数1001は、ステータス情報510が付加されたリードデータ504において検出された誤りビット数を示す情報である。この情報は、図5のステップ508において付加される。
訂正可否1002は、ステータス情報510が付加されたリードデータ504の誤りを訂正することができたか否かを示す情報である。この情報は、図5のステップ508において付加される。
リフレッシュ有無1003は、ステータス情報510が付加されたリードデータ504に対応するセクタデータ404が格納されているセクタをリフレッシュするか否かを示す情報である。この情報は、図5のステップ509において付加される。
なお、本発明の第1の実施形態のステータス情報510も、図10に記載されたものと同様であってよい。
従来は、一つの読み出しコマンドによって複数セクタの読み出しが要求された場合、要求された複数セクタ全てのデータを転送し終えた後に、ステータス情報が転送された。
図11は、従来の複数セクタからのデータ読み出しの説明図である。
以下の説明は、図8において説明した3D+1Pの場合を示す。図11に示す4個の不揮発性記憶装置201は、一つのパリティグループを構成する。図11に示す複数のリードデータ504は、一つの読み出しコマンドに応じて各不揮発性記憶装置201から読み出され、転送されたものである。
各不揮発性記憶装置201から複数のリードデータ504が転送された後、ステータス情報1101が転送される。従来は、リードデータ504が転送されるタイミング(例えば、SCSIプロトコルにおけるデータフェーズ)と、ステータス情報1101が転送されるタイミング(例えば、SCSIプロトコルにおけるステータスフェーズ)とが明確に分離していた。
この場合、ステータス情報1101は、一つのコマンドに対応する各不揮発性記憶装置201からの転送の状態を示す情報(例えば、転送が成功したか否かを示す情報)を含む。すなわち、一つのコマンドに応じて一つの不揮発性記憶装置201から複数のリードデータ504が転送され、それらのうち一部の転送に成功し、残りの転送に失敗した場合であっても、ステータス情報1101は転送失敗を示す情報を含む。すなわち、RAIDコントローラ802は、ステータス情報1101に基づいて転送に成功したリードデータ504を特定することができないため、転送失敗のステータス情報1101に対応する全てのリードデータ504を復元する必要がある。
図12は、本発明の第2の実施形態における複数セクタからのデータ読み出しの説明図である。
上位ホストシステム801からの複数セクタの読み出し要求に応じて、RAIDコントローラ802は、不揮発性記憶装置201の複数セクタから読み出したデータを転送する。このとき、RAIDコントローラ802は、各セクタに対応する各リードデータ504に、ステータス情報510を付加する。この場合、リードデータ504及びステータス情報510は、データが転送されるタイミング(例えば、SCSIプロトコルにおけるデータフェーズ)において転送される。
RAIDコントローラ802は、各リードデータ504に付加されたステータス情報510の訂正可否1002を参照することによって、各リードデータ504が訂正不可能な誤りを含んでいるか否かを判定することができる。
RAIDコントローラ802は、リードデータ504が訂正不可能な誤りを含まない(すなわち、既に不揮発性記憶装置201によって誤りが訂正されている)場合、そのリードデータ504をそのまま上位ホストシステム801に転送する。一方、RAIDコントローラ802は、リードデータ504が訂正不可能な誤りを含む場合、そのリードデータ504を復元し、復元されたリードデータ504を上位ホストシステム801に転送する(図13参照)。さらに、RAIDコントローラ802は、復元されたリードデータ504を不揮発性記憶装置201に書き込む(図13参照)。
このように、本実施形態では、セクタデータ404に対応するリードデータ504ごとにステータス情報が転送される。このため、データ転送と独立にステータス情報1101が転送される従来の手順と比較して、ステータス情報510の転送効率が高くなる。このため、RAIDコントローラ802は、各セクタの状態をより速く確認できる。
図13は、本発明の第2の実施形態のRAIDコントローラ802によるリードデータ504の復元の説明図である。
図13において、不揮発性記憶装置201A〜201Dの各々は、複数の不揮発性記憶装置201の一つである。不揮発性記憶装置201A〜201Dは、一つのパリティグループを構成する。リードデータ504A〜504Dの各々は、複数のリードデータ504の一つであり、それぞれ、不揮発性記憶装置201A〜201Dから転送されたものである。この例において、リードデータ504Aは、リードデータ504B〜504Dを冗長化するパリティである。ステータス情報510A〜510Dの各々は、複数のステータス情報510の一つであり、それぞれ、不揮発性記憶装置201A〜201Dから転送されたものである。
図13は、不揮発性記憶装置201Bから転送されたリードデータ504Bが訂正不可能な誤りを含む例を示す。この場合、ステータス情報510Bの訂正可否1002は、訂正不可能な誤りが含まれることを示す。
RAIDコントローラ802は、ステータス情報510Bの訂正可否1002を参照してリードデータ504Bが訂正不可能な誤りを含むと判定すると、リードデータ504A、504C及び504Dの各ビットの排他的論理和を算出することによって、リードデータ504Bを復元する(ステップ1301)。
次に、RAIDコントローラ802は、復元されたリードデータ504B、リードデータ504C及び504Dを上位ホストシステム801に転送する(ステップ1302)。
さらに、RAIDコントローラ802は、復元されたリードデータ504Bを元の不揮発性記憶装置201Bに書き込む(ステップ1303)。不揮発性記憶装置201Bは、復元されたリードデータ504Bを、それが読み出された消去単位ブロック以外の消去単位ブロックに書き込む。
図14は、本発明の第2の実施形態のRAIDコントローラ802による不揮発性記憶装置201の代替処理の説明図である。
図13に示す処理において、さらに、いずれかのステータス情報510(図14の例ではステータス情報510C)のリフレッシュ有無1003が、リフレッシュする必要があることを示す値である場合、RAIDコントローラ802の不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201(図14の例では不揮発性記憶装置201C)の代替処理が必要であるか否かを判定する(図15参照)。
具体的には、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201Cの管理情報を参照して、代替処理が必要であるか否かを判定する(ステップ1402)。代替処理が必要であると判定された場合、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201Cに格納されている全データを読み出して、予備の不揮発性記憶装置201Eに格納する(ステップ1403)。
なお、不揮発性記憶装置201Eは、複数の不揮発性記憶装置201の一つである。また、不揮発性記憶装置状態判定部1401は、RAIDコントローラ802内のいずれかのCPU(図示省略)が所定のプログラムを実行することによって実現される処理モジュールである。
図15は、本発明の第2の実施形態の不揮発性記憶装置状態判定部1401によって実行される処理を示すフローチャートである。
最初に、不揮発性記憶装置状態判定部1401は、転送されたリードデータ504A〜504Dに付加されたステータス情報510A〜510Dを参照して(ステップ1501)、それらのうちいずれかのリフレッシュ有無1003が、リフレッシュする必要があることを示す値であるか否かを判定する(ステップ1502)。
いずれのリフレッシュ有無1003も、リフレッシュする必要があることを示す値でない場合、メモリセルの劣化が検出されないため、不揮発性記憶装置状態判定部1401は処理を終了する。
一方、いずれかのリフレッシュ有無1003が、リフレッシュする必要があることを示す値である場合、処理はステップ1503に進む。以下、ステータス情報510Cのリフレッシュ有無1003がリフレッシュする必要があることを示す値である場合を例として説明する。この場合、リードデータ504Cの読み出し元である不揮発性記憶装置201Cのメモリセルの少なくとも一部の劣化が進行している。この場合、不揮発性記憶装置状態判定部1401は、上位ホストシステム801から要求された一連の処理(例えば、データの読み出し処理)が終了したか否かを判定する(ステップ1503)。処理が終了していない場合、ステップ1504以降の手順の実行によって上位ホストシステム801から要求された処理の実行が妨げられないように、それらの処理の終了を待つ。
上位ホストシステム801から要求された一連の処理が終了した場合、不揮発性記憶装置状態判定部1401は、劣化が検出された不揮発性記憶装置201Cの全ての管理情報405を読み出す(ステップ1504)。このステップは、図14のステップ1402に相当する。
次に、不揮発性記憶装置状態判定部1401は、劣化が検出された不揮発性記憶装置201Cの劣化の程度が所定のしきい値を超えるか否かを判定する(ステップ1505〜ステップ1507)。劣化の程度が高いことは、不揮発性記憶装置201Cの余命が少ないことを意味する。このため、劣化の程度が所定のしきい値を超えると判定された場合、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201Cの代替処理を実行する(ステップ1508)。劣化の程度は、どのような方法で判定されてもよいが、本実施形態ではステップ1505〜ステップ1507の手順によって判定される。
具体的には、不揮発性記憶装置状態判定部1401は、読み出した管理情報405に含まれる消去単位ブロックの消去回数を参照して、不揮発性記憶装置201C内の全消去単位ブロックの消去回数の平均値を算出する。そして、不揮発性記憶装置状態判定部1401は、算出された消去回数の平均値が所定のしきい値を超えるか否かを判定する(ステップ1505)。
ステップ1505のしきい値は、各消去単位ブロックにあらかじめ設定されている消去回数の上限値より小さく、かつ、それに比較的近い値であることが望ましい。例えば、消去回数の上限値が10万回である場合、しきい値は9万回であってもよい。
ステップ1505において、算出された消去回数の平均値が所定のしきい値を超えたと判定された場合、不揮発性記憶装置201Cの劣化の程度が所定のしきい値を超えたと判定される。このため、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201Cの代替処理を実行する(ステップ1508)。
一方、ステップ1505において、算出された消去回数の平均値が所定のしきい値を超えないと判定された場合、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201C内の全消去単位ブロックの消去回数の最大値が上限値(例えば10万回)以上であるか否かを判定する(ステップ1506)。
ステップ1506において、消去回数の最大値が上限値より小さいと判定された場合、劣化の程度が所定のしきい値を超えていないと判定される。この場合、不揮発性記憶装置201Cの余命にまだ余裕があると考えられる。このため、不揮発性記憶装置状態判定部1401は、ステップ1508を実行せずに処理を終了する。
一方、ステップ1506において、消去回数の最大値が上限値以上であると判定された場合、不揮発性記憶装置状態判定部1401は、代替領域の残りの数が所定のしきい値以下であるか否かを判定する(ステップ1507)。
代替領域とは、各不揮発性記憶装置201にあらかじめ用意されている予備の消去単位ブロックである。各不揮発性記憶装置201は、劣化等のためにある消去単位ブロックを使用できなくなった場合、その消去単位ブロックの代わりに代替領域を使用する。代替領域の残りとは、用意された全代替領域のうち、まだ使用されていないものを意味する。ステップ1507のしきい値は、例えば、用意された全代替領域の数の10%に相当する数であってもよい。
ステップ1507において、代替領域の残りの数が所定のしきい値より多いと判定された場合、劣化の程度が所定のしきい値を超えていないと判定される。この場合、不揮発性記憶装置201Cの余命にまだ余裕があると考えられる。このため、不揮発性記憶装置状態判定部1401は、ステップ1508を実行せずに処理を終了する。
一方、ステップ1507において、代替領域の残りの数が所定のしきい値以下であると判定された場合、不揮発性記憶装置201Cの劣化の程度が所定のしきい値を超えたと判定される。このため、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201Cの代替処理を実行する(ステップ1508)。
ステップ1508において、不揮発性記憶装置状態判定部1401は、不揮発性記憶装置201Cに格納されている全データを読み出し、読み出したデータを予備の不揮発性記憶装置201(例えば不揮発性記憶装置201E)に格納する。このステップは、図14のステップ1403に相当する。
このように、本発明の第2の実施形態によれば、フラッシュメモリで発生した誤りを訂正することによって正しいデータが復元された場合においても、RAIDコントローラに誤り訂正状況を伝達し、効率よいフラッシュメモリ記憶装置の検査タイミングを得ることが可能になる。さらに、読み出されたセクタの一部が、誤り訂正能力以上の誤りを含む、訂正不可能なセクタであった場合でも、RAIDコントローラがデータを効率よく復元することが可能になる。
以上の本発明の第1及び第2の実施形態によれば、フラッシュメモリを、高度な信頼性を必要とするRAIDシステムに適用することが可能になる。さらに、リードディスターブ耐性が低いフラッシュメモリでも、RAIDシステムへ適用することが可能になる。すなわち、フラッシュメモリの歩留まりを改善できるため、フラッシュメモリのコスト低減を図ることができる。
また、本発明の実施形態によれば、フラッシュメモリを搭載する記憶装置で誤り訂正ビットに応じてセクタデータをリフレッシュすることによって、フラッシュメモリの寿命を使い切りつつ、信頼性を保った記憶装置を提供することができる。
201 不揮発性記憶装置
202 フラッシュメモリコントローラ
203 フラッシュメモリチップ
802 RAIDコントローラ
202 フラッシュメモリコントローラ
203 フラッシュメモリチップ
802 RAIDコントローラ
Claims (14)
- 複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、
前記複数の消去ブロックは、第1消去ブロック及び第2消去ブロックを含み、
前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、
前記不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、
前記メモリコントローラは、
前記第1消去ブロックに格納されたデータを読み出し、
前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正し、
検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第2消去ブロックに格納するリフレッシュ処理を実行し、
前記第1消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、
前記第1消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定することを特徴とする不揮発性記憶装置。 - 前記各消去ブロック内の前記複数の記憶セルは、転送単位である複数のセクタに分割され、
前記メモリコントローラは、
データの読み出し要求を受信すると、前記第1消去ブロック内の一つ以上のセクタからデータを読み出し、
前記各セクタから読み出されたデータに含まれる誤りを検出し、
前記一つ以上のセクタから読み出されたデータのうち、訂正可能な誤りを含むデータを訂正し、
前記一つ以上のセクタから読み出されたデータに含まれる前記訂正可能な誤りビット数を示す情報を含むステータス情報を、前記訂正されたデータに付加し、
前記一つ以上のセクタから読み出されたデータのうち、訂正不可能な誤りを含むデータに、そのデータが訂正不可能な誤りを含むことを示す情報を含む前記ステータス情報を付加し、
前記ステータス情報が付加されたデータを送信することを特徴とする請求項1に記載の不揮発性記憶装置。 - 複数の不揮発性記憶装置と、前記複数の不揮発性記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラと、を備えるストレージシステムであって、
前記各不揮発性記憶装置は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、
前記複数の消去ブロックは、第1消去ブロック及び第2消去ブロックを含み、
前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、
前記各不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、
前記メモリコントローラは、
前記第1消去ブロックに格納されたデータを読み出し、
前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正し、
検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第2消去ブロックに格納するリフレッシュ処理を実行し、
前記第1消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定し、
前記第1消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定することを特徴とするストレージシステム。 - 前記各消去ブロック内の前記複数の記憶セルは、転送単位である複数のセクタに分割され、
前記メモリコントローラは、
データの読み出し要求を受信すると、前記第1消去ブロック内の一つ以上のセクタからデータを読み出し、
前記各セクタから読み出されたデータに含まれる誤りを検出し、
前記一つ以上のセクタから読み出されたデータのうち、訂正可能な誤りを含むデータを訂正し、
前記一つ以上のセクタから読み出されたデータに含まれる前記訂正可能な誤りビット数を示す情報を含むステータス情報を、前記訂正されたデータに付加し、
前記一つ以上のセクタから読み出されたデータのうち、訂正不可能な誤りを含むデータに、そのデータが訂正不可能な誤りを含むことを示す情報を含む前記ステータス情報を付加し、
前記ステータス情報が付加されたデータを送信することを特徴とする請求項3に記載のストレージシステム。 - 前記複数の不揮発性記憶装置は、一つ以上の第1不揮発性記憶装置及び一つ以上の第2不揮発性記憶装置を含み、
前記各第1不揮発性記憶装置内の前記複数のセクタは、第1セクタを含み、
前記各第2不揮発性記憶装置内の前記複数のセクタは、第2セクタを含み、
前記ストレージコントローラは、
一つ以上の前記第1セクタに、データを格納し、
一つ以上の前記第2セクタに、前記第1セクタに格納したデータを冗長化するデータを格納し、
前記第1セクタの一つから読み出されたデータに付加された前記ステータス情報が、そのデータが訂正不可能な誤りを含むことを示す場合、残りの前記第1セクタ及び前記第2セクタから読み出されたデータに基づいて、前記訂正不可能な誤りを含むデータを復元することを特徴とする請求項4に記載のストレージシステム。 - 前記複数の不揮発性記憶装置は、第3不揮発性記憶装置及び第4不揮発性記憶装置を含み、
前記ストレージコントローラは、
前記第3不揮発性記憶装置内の記憶セルが劣化したと判定された場合、前記第3不揮発性記憶装置に格納された全データの複製を前記第4不揮発性記憶装置に格納することを特徴とする請求項4に記載のストレージシステム。 - 前記第3不揮発性記憶装置内の前記複数の消去ブロックは、劣化した前記消去ブロックを代替するために確保された代替消去ブロックを含み、
前記ストレージコントローラは、
前記第3不揮発性記憶装置が保持する前記管理情報を参照することによって、前記第3不揮発性記憶装置内の前記各消去ブロックにおいて実行された消去処理の回数を取得し、
前記消去処理の回数の平均値が所定のしきい値を超えた場合、前記第3不揮発性記憶装置内の記憶セルが劣化したと判定し、
前記消去処理の回数の最大値が、前記各消去ブロックに許容される最大消去回数以上であり、かつ、未使用の前記代替消去ブロックの数が所定のしきい値以下である場合、前記第3不揮発性記憶装置内の記憶セルが劣化したと判定することを特徴とする請求項6に記載のストレージシステム。 - 前記メモリコントローラは、
前記リフレッシュ処理を実行する場合、前記リフレッシュ処理の実行を示す情報を、前記ステータス情報として前記訂正されたデータに付加し、
前記ストレージコントローラは、前記第3不揮発性記憶装置から読み出されたデータに付加された前記ステータス情報が、前記リフレッシュ処理の実行を示す情報を含む場合、前記第3不揮発性記憶装置内の記憶セルの劣化の程度が所定のしきい値を超えたか否かを判定することを特徴とする請求項6に記載のストレージシステム。 - 不揮発性記憶装置を備えるストレージシステムの制御方法であって、
前記不揮発性記憶装置は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記複数の記憶セルは、消去単位である複数の消去ブロックに分割され、
前記複数の消去ブロックは、第1消去ブロック及び第2消去ブロックを含み、
前記各消去ブロック内の前記複数の記憶セルには、誤り訂正符号を含むデータが格納され、
前記不揮発性記憶装置は、前記各消去ブロックにおいて実行された消去処理の回数を示す管理情報を保持し、
前記方法は、
前記第1消去ブロックに格納されたデータを読み出す第1手順と、
前記誤り訂正符号を復号することによって、前記読み出されたデータに含まれる誤りを検出及び訂正する第2手順と、
検出された誤りビット数がしきい値を超える場合、前記訂正されたデータを前記第2消去ブロックに格納するリフレッシュ処理を実行する第3手順と、
前記第1消去ブロックにおいて検出された誤りの頻度が高いほど、小さい値を前記しきい値として設定する第4手順と、
前記第1消去ブロックにおいて実行された消去処理の回数が多いほど、小さい値を前記しきい値として設定する第5手順と、を含むことを特徴とする方法。 - 前記各消去ブロック内の前記複数の記憶セルは、転送単位である複数のセクタに分割され、
前記第1手順は、データの読み出し要求を受信すると、前記第1消去ブロック内の一つ以上のセクタからデータを読み出す手順を含み、
前記第2手順は、
前記各セクタから読み出されたデータに含まれる誤りを検出する手順と、
前記一つ以上のセクタから読み出されたデータのうち、訂正可能な誤りを含むデータを訂正する手順と、を含み、
前記方法は、さらに、
前記一つ以上のセクタから読み出されたデータに含まれる前記訂正可能な誤りビット数を示す情報を含むステータス情報を、前記訂正されたデータに付加する第6手順と、
前記一つ以上のセクタから読み出されたデータのうち、訂正不可能な誤りを含むデータに、そのデータが訂正不可能な誤りを含むことを示す情報を含む前記ステータス情報を付加する第7手順と、
前記ステータス情報が付加されたデータを送信する第8手順と、を含むことを特徴とする請求項9に記載の方法。 - 前記ストレージシステムは、複数の前記不揮発性記憶装置と、前記複数の不揮発性記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラと、を備え、
前記複数の不揮発性記憶装置は、一つ以上の第1不揮発性記憶装置及び一つ以上の第2不揮発性記憶装置を含み、
前記各第1不揮発性記憶装置内の前記複数のセクタは、第1セクタを含み、
前記各第2不揮発性記憶装置内の前記複数のセクタは、第2セクタを含み、
一つ以上の前記第1セクタには、データが格納され、
一つ以上の前記第2セクタには、前記第1セクタに格納されたデータを冗長化するデータが格納され、
前記方法は、さらに、前記第1セクタの一つから読み出されたデータに付加された前記ステータス情報が、そのデータが訂正不可能な誤りを含むことを示す場合、残りの前記第1セクタ及び前記第2セクタから読み出されたデータに基づいて、前記訂正不可能な誤りを含むデータを復元する第9手順を含むことを特徴とする請求項10に記載の方法。 - 前記複数の不揮発性記憶装置は、第3不揮発性記憶装置及び第4不揮発性記憶装置を含み、
前記方法は、さらに、前記第3不揮発性記憶装置内の記憶セルが劣化したと判定された場合、前記第3不揮発性記憶装置に格納された全データの複製を前記第4不揮発性記憶装置に格納する第10手順を含むことを特徴とする請求項10に記載の方法。 - 前記第3不揮発性記憶装置内の前記複数の消去ブロックは、劣化した前記消去ブロックを代替するために確保された代替消去ブロックを含み、
前記第10手順は、
前記第3不揮発性記憶装置が保持する前記管理情報を参照することによって、前記第3不揮発性記憶装置内の前記各消去ブロックにおいて実行された消去処理の回数を取得する手順と、
前記消去処理の回数の平均値が所定のしきい値を超えた場合、前記第3不揮発性記憶装置内の記憶セルが劣化したと判定する手順と、
前記消去処理の回数の最大値が、前記各消去ブロックに許容される最大消去回数以上であり、かつ、未使用の前記代替消去ブロックの数が所定のしきい値以下である場合、前記第3不揮発性記憶装置内の記憶セルが劣化したと判定する手順と、を含むことを特徴とする請求項12に記載の方法。 - 前記方法は、さらに、前記リフレッシュ処理が実行される場合、前記リフレッシュ処理の実行を示す情報を、前記ステータス情報として前記訂正されたデータに付加する第11手順を含み、
前記第10手順は、前記第3不揮発性記憶装置から読み出されたデータに付加された前記ステータス情報が、前記リフレッシュ処理の実行を示す情報を含む場合に実行されることを特徴とする請求項12に記載の方法。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007301556A JP2009129070A (ja) | 2007-11-21 | 2007-11-21 | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム |
| US12/026,738 US8612830B2 (en) | 2007-11-21 | 2008-02-06 | Method of correcting error of flash memory device, and, flash memory device and storage system using the same |
| US14/087,018 US8972823B2 (en) | 2007-11-21 | 2013-11-22 | Error correcting for improving reliability by combination of storage system and flash memory device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007301556A JP2009129070A (ja) | 2007-11-21 | 2007-11-21 | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2009129070A true JP2009129070A (ja) | 2009-06-11 |
Family
ID=40643240
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007301556A Pending JP2009129070A (ja) | 2007-11-21 | 2007-11-21 | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US8612830B2 (ja) |
| JP (1) | JP2009129070A (ja) |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20100109445A (ko) * | 2009-03-30 | 2010-10-08 | 가부시끼가이샤 도시바 | 메모리 컨트롤러 및 반도체 기억 장치 |
| JP2011060217A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | データ蓄積装置及びデータ書込み/読出し方法 |
| JPWO2011013351A1 (ja) * | 2009-07-30 | 2013-01-07 | パナソニック株式会社 | アクセス装置およびメモリコントローラ |
| KR20140008839A (ko) * | 2012-07-12 | 2014-01-22 | 삼성전자주식회사 | 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치 |
| JP2014505941A (ja) * | 2011-04-28 | 2014-03-06 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
| JP5437373B2 (ja) * | 2009-07-22 | 2014-03-12 | 株式会社日立製作所 | 複数のフラッシュパッケージを有するストレージシステム |
| JP2014092832A (ja) * | 2012-11-01 | 2014-05-19 | Toshiba Information Systems (Japan) Corp | フラッシュメモリの劣化検査装置、劣化検査方法及劣化検査用プログラム |
| JP2015032316A (ja) * | 2013-08-06 | 2015-02-16 | 慧榮科技股▲分▼有限公司 | データ記憶装置、および、データメンテナンス方法 |
| JP2016184398A (ja) * | 2015-03-26 | 2016-10-20 | パナソニックIpマネジメント株式会社 | 不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法 |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008287404A (ja) * | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
| JP4882905B2 (ja) * | 2007-08-03 | 2012-02-22 | セイコーエプソン株式会社 | 画像データ処理装置および画像データ処理方法 |
| JP2009129070A (ja) | 2007-11-21 | 2009-06-11 | Hitachi Ltd | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム |
| JP2010015195A (ja) * | 2008-06-30 | 2010-01-21 | Toshiba Corp | 記憶制御装置及び記憶制御方法 |
| KR20100102925A (ko) * | 2009-03-12 | 2010-09-27 | 삼성전자주식회사 | 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템 |
| US9082057B2 (en) * | 2009-08-19 | 2015-07-14 | Intelleflex Corporation | RF device with tamper detection |
| KR101626084B1 (ko) * | 2009-11-25 | 2016-06-01 | 삼성전자주식회사 | 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법 |
| JP2012178194A (ja) * | 2011-02-25 | 2012-09-13 | Renesas Electronics Corp | 不揮発性半導体記憶装置 |
| US8756474B2 (en) * | 2011-03-21 | 2014-06-17 | Denso International America, Inc. | Method for initiating a refresh operation in a solid-state nonvolatile memory device |
| US9086983B2 (en) | 2011-05-31 | 2015-07-21 | Micron Technology, Inc. | Apparatus and methods for providing data integrity |
| JP5813450B2 (ja) * | 2011-10-17 | 2015-11-17 | 日立オートモティブシステムズ株式会社 | 電子制御装置 |
| US10229002B2 (en) * | 2013-01-04 | 2019-03-12 | International Business Machines Corporation | Process to migrate named objects to a dispersed or distributed storage network (DSN) |
| KR102050896B1 (ko) * | 2013-02-19 | 2019-12-02 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
| KR102143517B1 (ko) * | 2013-02-26 | 2020-08-12 | 삼성전자 주식회사 | 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법 |
| US9329797B2 (en) * | 2013-12-30 | 2016-05-03 | Sandisk Technologies Inc. | Method and system for adjusting block erase or program parameters based on a predicted erase life |
| US9423970B2 (en) | 2013-12-30 | 2016-08-23 | Sandisk Technologies Llc | Method and system for predicting block failure in a non-volatile memory |
| KR102144748B1 (ko) * | 2014-03-19 | 2020-08-18 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
| US20160055055A1 (en) * | 2014-08-25 | 2016-02-25 | Kabushiki Kaisha Toshiba | Memory system and error correction decoding method |
| US9563373B2 (en) * | 2014-10-21 | 2017-02-07 | International Business Machines Corporation | Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management |
| WO2016064395A1 (en) * | 2014-10-23 | 2016-04-28 | Hewlett Packard Enterprise Development Lp | Determining a chip select from physical rank information |
| WO2016067846A1 (ja) * | 2014-10-31 | 2016-05-06 | ソニー株式会社 | メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法 |
| US9563504B2 (en) | 2014-12-05 | 2017-02-07 | Sandisk Technologies Llc | Partial block erase for data refreshing and open-block programming |
| US9772901B2 (en) * | 2015-05-08 | 2017-09-26 | Nxp Usa, Inc. | Memory reliability using error-correcting code |
| US10665305B2 (en) * | 2015-09-09 | 2020-05-26 | Toshiba Memory Corporation | Host device connectable to memory device performing patrol read and memory device performing patrol read |
| US10452468B2 (en) * | 2016-12-30 | 2019-10-22 | Western Digital Technologies, Inc. | Method and system for managing non-volatile memory |
| KR20200084200A (ko) * | 2019-01-02 | 2020-07-10 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
| US11086705B2 (en) | 2019-03-18 | 2021-08-10 | International Business Machines Corporation | Managing the reliability of pages in non-volatile random access memory |
| US10915399B2 (en) * | 2019-06-13 | 2021-02-09 | Cnex Labs, Inc. | Storage system with error recovery mechanism and method of operation thereof |
| CN110570892A (zh) * | 2019-07-31 | 2019-12-13 | 联芸科技(杭州)有限公司 | 控制存储器刷新的方法、装置以及控制器 |
| KR102741233B1 (ko) | 2019-10-11 | 2024-12-12 | 삼성전자주식회사 | 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법 |
| KR102880561B1 (ko) * | 2020-01-07 | 2025-11-05 | 에스케이하이닉스 주식회사 | 이전에 발생한 에러 분석을 통해 에러대응동작을 선택하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템 |
| US11601137B2 (en) * | 2020-06-18 | 2023-03-07 | Intel Corporation | ECC memory chip encoder and decoder |
| KR102918294B1 (ko) * | 2020-08-28 | 2026-01-28 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
| CN112230855B (zh) * | 2020-10-20 | 2024-11-12 | 英韧科技股份有限公司 | 固态硬盘及其读写方法 |
| JP2023007160A (ja) * | 2021-07-01 | 2023-01-18 | 富士通株式会社 | 情報処理装置,制御方法および制御プログラム |
| JP2023079292A (ja) * | 2021-11-29 | 2023-06-08 | ラピステクノロジー株式会社 | 半導体記憶装置、データ書込方法及び半導体記憶装置の製造方法 |
| CN119806435B (zh) * | 2025-03-13 | 2025-06-10 | 浙江大华技术股份有限公司 | 数据的存储方法、装置、存储介质及电子装置 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4256198B2 (ja) * | 2003-04-22 | 2009-04-22 | 株式会社東芝 | データ記憶システム |
| US7158416B2 (en) * | 2005-03-15 | 2007-01-02 | Infineon Technologies Flash Gmbh & Co. Kg | Method for operating a flash memory device |
| US7447944B2 (en) * | 2005-04-29 | 2008-11-04 | Freescale Semiconductor, Inc. | Predictive methods and apparatus for non-volatile memory |
| WO2007010829A1 (ja) * | 2005-07-15 | 2007-01-25 | Matsushita Electric Industrial Co., Ltd. | 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 |
| US7810017B2 (en) * | 2006-03-20 | 2010-10-05 | Micron Technology, Inc. | Variable sector-count ECC |
| US7778077B2 (en) * | 2006-05-15 | 2010-08-17 | Sandisk Corporation | Non-volatile memory system with end of life calculation |
| US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
| US8122323B2 (en) * | 2007-03-08 | 2012-02-21 | Intel Corporation | Method, apparatus, and system for dynamic ECC code rate adjustment |
| US7882301B2 (en) * | 2007-05-09 | 2011-02-01 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
| US7743203B2 (en) * | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
| JP2009129070A (ja) | 2007-11-21 | 2009-06-11 | Hitachi Ltd | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム |
| US8429492B2 (en) * | 2007-11-30 | 2013-04-23 | Marvell World Trade Ltd. | Error correcting code predication system and method |
-
2007
- 2007-11-21 JP JP2007301556A patent/JP2009129070A/ja active Pending
-
2008
- 2008-02-06 US US12/026,738 patent/US8612830B2/en not_active Expired - Fee Related
-
2013
- 2013-11-22 US US14/087,018 patent/US8972823B2/en not_active Expired - Fee Related
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20100109445A (ko) * | 2009-03-30 | 2010-10-08 | 가부시끼가이샤 도시바 | 메모리 컨트롤러 및 반도체 기억 장치 |
| JP5437373B2 (ja) * | 2009-07-22 | 2014-03-12 | 株式会社日立製作所 | 複数のフラッシュパッケージを有するストレージシステム |
| JPWO2011013351A1 (ja) * | 2009-07-30 | 2013-01-07 | パナソニック株式会社 | アクセス装置およびメモリコントローラ |
| JP2011060217A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | データ蓄積装置及びデータ書込み/読出し方法 |
| JP2014505941A (ja) * | 2011-04-28 | 2014-03-06 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
| KR20140008839A (ko) * | 2012-07-12 | 2014-01-22 | 삼성전자주식회사 | 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치 |
| KR101977772B1 (ko) * | 2012-07-12 | 2019-05-13 | 삼성전자주식회사 | 데이터 처리 장치 및 이를 포함하는 보안 메모리 장치 |
| JP2014092832A (ja) * | 2012-11-01 | 2014-05-19 | Toshiba Information Systems (Japan) Corp | フラッシュメモリの劣化検査装置、劣化検査方法及劣化検査用プログラム |
| JP2015032316A (ja) * | 2013-08-06 | 2015-02-16 | 慧榮科技股▲分▼有限公司 | データ記憶装置、および、データメンテナンス方法 |
| US9368226B2 (en) | 2013-08-06 | 2016-06-14 | Silicon Motion, Inc. | Data storage device and method for restricting access thereof |
| JP2016184398A (ja) * | 2015-03-26 | 2016-10-20 | パナソニックIpマネジメント株式会社 | 不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US8972823B2 (en) | 2015-03-03 |
| US8612830B2 (en) | 2013-12-17 |
| US20140082457A1 (en) | 2014-03-20 |
| US20090132875A1 (en) | 2009-05-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2009129070A (ja) | フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム | |
| US11984167B2 (en) | Memory system performing read operation with read voltage | |
| US7984325B2 (en) | Storage control device, data recovery device, and storage system | |
| US8281220B2 (en) | Apparatus for detecting and recovering from data destruction caused in an unaccessed memory cell by read, and method therefor | |
| EP2372549B1 (en) | Emerging bad block detection | |
| US9268657B1 (en) | Varying data redundancy in storage systems | |
| KR102571747B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| KR20190022987A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| KR20180025357A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| JP2010517168A (ja) | Nandメモリのためのプログラミング管理データ | |
| KR20170037159A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| KR102863282B1 (ko) | 리드 동작을 수행하는 메모리 시스템 및 메모리 시스템의 동작방법 | |
| US11157210B2 (en) | Memory system performing dummy program operation during normal program operation | |
| CN112530499B (zh) | 一种数据读取方法及计算机可读存储设备 | |
| US10229742B2 (en) | Flash memory device | |
| TWI473103B (zh) | 快閃記憶體儲存裝置及其不良儲存區域的判定方法 | |
| JP2018163707A (ja) | 半導体記憶装置及びそのリード制御方法 | |
| US20070294588A1 (en) | Performing a diagnostic on a block of memory associated with a correctable read error | |
| US12530131B2 (en) | Memory device, memory system, and method of operating the same | |
| US12153826B2 (en) | Memory system and operating method thereof | |
| CN114637630B (zh) | 异常断电恢复方法、存储器控制器及存储器存储装置 |