JP2008287404A - 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 - Google Patents
読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 Download PDFInfo
- Publication number
- JP2008287404A JP2008287404A JP2007130379A JP2007130379A JP2008287404A JP 2008287404 A JP2008287404 A JP 2008287404A JP 2007130379 A JP2007130379 A JP 2007130379A JP 2007130379 A JP2007130379 A JP 2007130379A JP 2008287404 A JP2008287404 A JP 2008287404A
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage
- read
- error correction
- correction code
- 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
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06—COMPUTING; CALCULATING OR 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Abstract
【課題】フラッシュメモリのリードディスターブは、読み出しの対象でないデータの破壊を伴うため、効率よい検査方法が求められる。また、検査の前に誤り訂正不可能なデータ破壊が起きる可能性がある。
【解決手段】複数の記憶セルと、メモリコントローラと、を備える不揮発性データ記憶装置であって、前記メモリコントローラは、管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、第1管理領域について計数された前記データ読み出し処理の回数が第1閾値を超えた場合、前記第1管理領域内の前記記憶セルに記憶されたデータ及び誤り訂正符号を読み出し、前記読み出された誤り訂正符号を復号し、前記読み出されたデータに含まれる誤りの数が第2閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第1管理領域以外の前記管理領域に書き込む。
【選択図】図6
【解決手段】複数の記憶セルと、メモリコントローラと、を備える不揮発性データ記憶装置であって、前記メモリコントローラは、管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、第1管理領域について計数された前記データ読み出し処理の回数が第1閾値を超えた場合、前記第1管理領域内の前記記憶セルに記憶されたデータ及び誤り訂正符号を読み出し、前記読み出された誤り訂正符号を復号し、前記読み出されたデータに含まれる誤りの数が第2閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第1管理領域以外の前記管理領域に書き込む。
【選択図】図6
Description
本願明細書で開示される技術は、フラッシュメモリを用いた記憶装置に関する。
NAND型フラッシュメモリには、リードディスターブと呼ばれる、読み出し動作に起因するデータ破壊が存在する。NAND型フラッシュメモリでは、図1のように、フローティングゲートを備えるFET(電界効果トランジスタ)がメモリセルとして配列される。横方向には数千個から数万個のメモリセルが並び、縦方向には数個から数十個のメモリセルが並んでいる。これらのメモリセルをひとつの固まりとして、複数個の固まりが消去単位等の管理単位を構成している。縦方向に配列されたメモリセルの各列は、FETを直列接続することによって構成される。フローティングゲートへの電荷の出し入れは、ソース、ドレイン及びゲート電極に高電圧を加えることによる、フローティングゲートを囲む絶縁酸化膜の絶縁破壊又はトンネル効果を用いて行う。
データの読み出し時には、選択しているFET(すなわち、これからデータを読み出そうとするFET)のゲート電極に0vを、他のFETのゲート電極にVcc(電源電圧)を印加する。このとき、選択されていない他のFETのゲート電極にかかるVccによって、絶縁酸化膜への電圧ストレスが発生し、その結果FETのしきい値電圧が変化する現象がおきる。書き込み電圧や消去電圧に比べると、Vccは低い電圧である。しかし、メモリセルの微細化が進むと、半導体内の電界強度は大きくなるため、電圧印加時の絶縁酸化膜への電圧ストレスも大きくなる。
このように、選択されていないメモリセルのFETのしきい値電圧が変化して行く。このため、このようにしきい値電圧が変化したメモリセルのFETを選択し、記憶されたデータを読み出すときには、誤ったデータが読み出される場合がある。
このようなデータの誤りを防ぐ技術として、例えば特許文献1が開示されている。特許文献1には、ホストから要求されたデータをリードし、リードしたデータに対して、誤り訂正符号を用いて、誤り検出及び誤り訂正を行い、誤りの程度を判断し、誤り訂正不可能になる前に、該当ページをリフレッシュする技術が開示されている。
特開2004−326867号公報
リードが頻繁に起きるページの近くに、アクセスされない有効データを保持するページが存在すると、そのページの有効データは、ホストからアクセスされる前に、リードディスターブにより、誤り訂正不可能なまでにデータが破壊される場合がある。このような場合、上記特許文献1では、誤り訂正不可能になる前に該当ページをリフレッシュすることができない。
また、誤り訂正符号では、誤り訂正可能なビット数などに限界があり、訂正可能な誤りビット数以上にデータが破壊されると、フラッシュメモリ単体に記憶されている情報に基づいてデータを回復する手段がなくなる。
本願で開示する代表的な発明は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性データ記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記各記憶セルは、複数の管理領域のうち一つに含まれ、前記各管理領域は、複数の前記記憶セルを含み、前記メモリコントローラは、前記複数の記憶セルに、データ及び前記データに基づいて算出された誤り訂正符号を書き込み、前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、前記複数の管理領域の一つである第1管理領域について計数された前記データ読み出し処理の回数が第1閾値を超えた場合、前記第1管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出し、前記読み出された誤り訂正符号を復号し、前記読み出されたデータに含まれる誤りの数が第2閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第1管理領域以外の前記管理領域に書き込むことを特徴とする。
本発明の一実施形態によれば、リードアクセスのみが頻繁に行われる第1のデータの近傍に、リードもライトも行われない第2のデータが存在している状態で、リードディスターブが発生し、第2のデータが破壊されたとしても、第2のデータの破壊が進行する前に、対象管理単位を検査し、誤り訂正等によってデータが復元される。このため、データの信頼性を確保できる。
本発明の一実施形態によれば、消去単位であるブロック毎に使用できなくなるフラッシュメモリを有効に使用することが可能になる。
最初に、本発明の実施形態の概要を説明する。
上記の課題を解決するために、フラッシュメモリのコントローラ(フラッシュメモリコントローラ)は、リードによるデータ破壊が発生するメモリセルの範囲を、リードディスターブ管理単位(リードディスターブ管理領域)として管理する。フラッシュメモリコントローラは、リードディスターブ管理単位毎に、その管理単位に含まれるメモリセルへのリードアクセス回数を計数する。その回数が所定の回数m以上に達したら、フラッシュメモリコントローラは、所定の回数n毎に、リードディスターブ管理単位内の有効ページを読み出す。誤り検出回路が読み出されたデータの誤りを検出したら、フラッシュメモリコントローラは、誤り訂正回路が訂正したデータを、新しいページに書き込む。
また、リードディスターブは、消去回数が多いブロックほど発生しやすくなるため、所定の回数mは、消去単位(すなわちブロック)の消去回数と関連付けて制御される。具体的には、消去回数が大きくなると、mが小さくなるように制御される。なお、消去単位であるブロックは、一つ以上のリードディスターブ管理単位を含む。
さらに、消去回数だけでなく、リードディスターブ発生回数に基づいて、ブロックの使用可否判断が実行される。
また、リードディスターブによって、フラッシュメモリコントローラ内での誤り訂正によって復元できない程度の誤りが発生した場合、フラッシュメモリコントローラは、誤り箇所を含む領域のアドレス情報(例えば、論理ブロックアドレス)等の情報をRAIDコントローラへ送信する。RAIDコントローラは、複数のフラッシュドライブを用いたRAID技術を用いてデータを復元し、復元したデータをフラッシュメモリに書き戻す。
このために、フラッシュメモリコントローラから、非同期にRAIDコントローラに対して、割り込み信号等の情報を伝達する手段が設けられる。
あるいは、フラッシュメモリコントローラによる復元が不可能なデータが検出された場合、そのデータに関する情報を取得した制御装置が、RAIDコントローラに対して、該当データの回復を指示してもよい。
以下、本発明の実施形態の詳細を説明する。
最初に、本発明の第1の実施形態を、図1,2,3,7,8,10,11,12A,12B,13A,13B及び14を参照して説明する。
図1は、本発明の第1の実施形態のNAND型フラッシュメモリのメモリセルの説明図である。
図1に示すように、NAND型フラッシュメモリのメモリセルは、横方向に16896個程度、縦方向に16個程度並んでいる。横方向の1列ごとに読み出し及び書き込みが実行される場合が多いため、このような各列がページと呼ばれる管理単位として扱われる。縦方向の1列は、フローティングゲートを備えるFETが、16個程度直列に接続されたものである。この直列に接続されているFETの間でリードディスターブが発生するため、16ページの範囲にリードディスターブの影響が及ぶ。また、データの消去単位であるブロックは、64ページ程度で構成されている。
後に図2を参照して説明するように、リードディスターブの影響が及ぶ範囲は、リードディスターブ管理領域203として管理される。すなわち、各リードディスターブ管理領域203は、直列に接続されたFET、及び、それらのFETの各々が属するページに含まれるFETからなる。
NAND型フラッシュメモリへのアクセスは、コマンド及びアドレスを与えることによって実行される。アドレスは、列アドレス、行アドレスの順に与えられる。行アドレスは、ブロックアドレス及びページアドレスを含む。具体的には、行アドレスの上位側でブロックが指定され、下位側でページが指定される。
半導体チップ上のメモリセルの配置及び管理単位は、メーカ毎に異なることがある。このため、上記のメモリセルの個数及びリードディスターブの影響範囲は一例である。メモリセルの個数及びリードディスターブの影響範囲等が上記と異なる場合であっても、本発明を適用することができる。
図8は、本発明の第1の実施形態のフラッシュドライブ502の構成を示すブロック図である。
フラッシュドライブ502は、データ記憶素子としてNAND型フラッシュメモリを採用した不揮発性データ記憶装置である。フラッシュドライブ502は、例えば図8に示すように、フラッシュメモリコントローラ503、及び、フラッシュメモリコントローラ503に接続された複数のフラッシュメモリ504を備える。フラッシュメモリコントローラ503は、情報伝達手段505を介してフラッシュドライブ502の外部と情報をやり取りする。また、フラッシュメモリコントローラ503は、情報伝達手段604等を介してリードディスターブに関する情報を出力する。フラッシュメモリコントローラ503とフラッシュメモリ504は、フラッシュメモリインタフェース部705及び接続線708を介して接続される。
図7は、本発明の第1の実施形態のフラッシュメモリコントローラ503の構成を示すブロック図である。
フラッシュメモリコントローラ503は、例えば図7に示すように、マイクロプロセッサ(MPU)701、RAM702、ROM703、ホストインタフェース部(HOST I/F)704及びフラッシュメモリインタフェース部(Flash Memory I/F)705を備える。マイクロプロセッサ701、RAM702、ROM703、ホストインタフェース部704及びフラッシュメモリインタフェース部705は、マイクロプロセッサのバス706によって相互に接続される。一方、ホストインタフェース部704及びフラッシュメモリインタフェース部705は、高速にデータを転送する専用バス707によって相互に接続される。
マイクロプロセッサ701は、ROM703に格納されたプログラムを実行する。
RAM702は、マイクロプロセッサ701がワークエリア及びフラッシュメモリ管理情報を格納するランダムアクセスメモリである。
ROM703は、マイクロプロセッサ701によって実行されるプログラムを格納する読み出し専用メモリである。ROMには、例えば、フラッシュメモリインタフェース部705又はホストインタフェース部704等を制御管理するプログラムが格納される。
ホストインタフェース部704は、外部ホスト(図示省略)と接続され、外部ホストとマイクロプロセッサ701との間の通信に使用されるインタフェースである。外部ホストは、フラッシュドライブ502に対してデータの書き込み及び読み出し要求を送信する装置である。種々の装置が外部ホストとしてホストインタフェース部704に接続され得る。
例えば、外部ホストは、ディジタル画像記録装置又はディジタル音声記録装置であってもよい。その場合、フラッシュドライブ502は、例えば、それらの装置に使用されるメモリカードである。
あるいは、フラッシュドライブ502がハードディスクドライブ(HDD)(図示省略)を置き換えるデータ記憶装置として使用される場合、外部ホストは、HDDに対するデータ書き込み及び読み出し要求を送信する計算機又はRAIDコントローラ(後述)であってもよい。その場合、ホストインタフェース部704は、例えばSCSI又はファイバーチャネル(FC)等のプロトコルに基づいて外部ホストと通信する。
フラッシュメモリインタフェース部705は、フラッシュメモリチップ201を駆動する信号を制御し、マイクロプロセッサ701からの要求に従ってフラッシュメモリをアクセスする。
以下の説明においてフラッシュメモリコントローラ503が実行する処理は、より正確には、MPU701がRAM702又はROM703に格納されたプログラムを実行し、RAM702、ROM703、ホストインタフェース部704及びフラッシュメモリインタフェース部705を制御することによって実行される。
図2は、本発明の第1の実施形態のNAND型フラッシュメモリの管理領域の説明図である。
図2のフラッシュメモリチップ201は、図8のフラッシュメモリ504に相当する。図2に示すように、フラッシュメモリチップ201内の記憶領域は、複数のブロック202に分割されている。各ブロック202は、データの消去単位である。すなわち、フラッシュメモリチップ201内に書き込まれたデータは、ブロック202ごとに消去される。ブロック202内は、複数のリードディスターブ管理領域203に分割される。各リードディスターブ管理領域203は、複数のページ204に分割される。各ページ204は、データの読み出し及び書き込みの単位である。すなわち、データの読み出し及び書き込みは、ページ204ごとに実行される。
ここで、複数のページ204のうちの一つであるページ204Aが繰り返し読み出されると、当該ページ204Aに属するFETと直列接続されたFETで構成されるメモリセルを含むリードディスターブ管理領域203内の他のページ204にリードディスターブが発生し、その結果、データ化け(すなわちリードディスターブ発生ビット)205が発生する。
このリードディスターブは、ゲート、ソース及びドレインに印加される電圧によるストレスによって、フローティングゲートを備えるFETのしきい値電圧が次第に変化することによって引き起こされる。よって、ストレスがかかる回数及び時間によって、しきい値電圧の変化の割合が変わってくる。つまり、消去回数、書き込み回数及び読み出し回数によって、しきい値電圧の変化の割合が変化することになる。
フラッシュメモリにおいては、あるメモリセルにデータを書き込むと、そのデータを消去しない限り、そのメモリセルに新たなデータを書き込むことができない。このため、1ブロック202内の全てのページ204に対する書き込みが終了した後、そのブロック202を消去せずにブロック202内のページ204に対して書き込み動作が行われることはない。よって、消去回数及び読み出し回数が大きなストレス要因となる。
そこで、図3に示すように、従来から管理されている、ページ単位の管理情報301及びブロック単位の管理情報302に加えて、リードディスターブ管理領域単位の管理情報303を設けて、リードディスターブ管理領域203内のページ204に対する読み出し回数を管理する。
図3は、本発明の第1の実施形態における管理領域ごとの管理情報の説明図である。
ページ単位の管理情報301は、各ページの論理アドレス情報及び誤り訂正情報を含む。誤り訂正情報は、各ページに属するメモリセルが保持する値に基づいて生成された誤り訂正符号(ECC)を含む。ブロック単位の管理情報302は、各ブロックの消去回数を含む。これらの管理情報は、従来から管理されているものである。
本実施の形態で新たに追加されたリードディスターブ管理領域単位の管理情報303は、各リードディスターブ管理領域203内のページ204に対する読み出し回数を含む。
この読み出し回数が所定のしきい値を超えると、フラッシュメモリコントローラ503は、リードディスターブ検査を実行する。リードディスターブ検査とは、フラッシュメモリコントローラ503がリードディスターブ管理領域203内の全ページ204を順次読み出し、ページ204又はページ204を構成するセクタ(図示省略)ごとに設定される誤り訂正符号を用いて誤り検出を行うことによって、リードディスターブが発生しているか否かを判定する処理である。
リードディスターブ検査は、あるリードディスターブ管理領域203単位の各ページ204を順次検査する処理であるため、多少の時間を必要とする。よって、リードディスターブ検査中に、RAIDコントローラ(後述)等の外部ホストからフラッシュメモリチップ201に対するアクセスが来ることがある。このような場合には、外部ホストへのレスポンスを早くする必要があるため、フラッシュメモリコントローラ503は、外部ホストからのアクセスを優先して処理する。
このとき、フラッシュメモリコントローラ503は、ページ204又はセクタ内の誤りビット数及び誤りが検出されたページ数に基づいて、リードディスターブ管理領域203内の全ページ204をリフレッシュするか否かを判定する。具体的には、例えば、あるリードディスターブ管理領域203において、所定のしきい値を超える数の誤りビットを含むページ204の数が、別の所定のしきい値を超える場合、そのリードディスターブ管理領域203内の全ページ204をリフレッシュすると判定されてもよい。ここで言うリフレッシュとは、リードディスターブ管理領域203内の全ページ204を読み出し、誤りビットが存在する場合にはそれを訂正し、読み出された(又は訂正された)ページ204を、消去済みの別のリードディスターブ管理領域203へコピーすることである。
フラッシュメモリコントローラ503は、リフレッシュを実行した後、リードディスターブ管理領域203ごとの管理情報303(すなわち読み出し回数)をゼロクリアし、改めてリードディスターブ管理領域203内のページ204への読み出し回数を管理する。
このリフレッシュ動作と、RAIDコントローラ等の外部ホストからのアクセスが競合した場合、フラッシュメモリコントローラ503は、リフレッシュ動作を優先して処理する。
リードディスターブの発生しやすさは、読み出し回数だけでなく、消去回数にも依存する。すなわち、これまでに消去された回数が多いブロック202内のページほど、少ない読み出し回数でリードディスターブが発生しやすくなる。このため、リードディスターブ検査を実行するか否かを判定するための読み出し回数のしきい値は、消去回数が増えるほど小さくなるように設定されてもよい。
例えば、フラッシュメモリ素子自体に設定された消去可能回数をn回とすると、表1のように、消去回数0.5n回未満のブロック202内のリードディスターブ管理領域203では、100億回の読み出し毎に、リードディスターブ検査が実行される(表1の読み出し回数a参照)。なお、表1には、nが100000回である場合を例として示す。同様にして、消去回数0.5n回以上0.8n回未満のブロック202内のリードディスターブ管理領域203では、1億回の読み出し毎に、リードディスターブ検査が実行される。消去回数0.8n回以上0.9n回未満のブロック202内のリードディスターブ管理領域203では、100万回の読み出し毎に、リードディスターブ検査が実行される。消去回数0.9n回以上n回以下のブロック202内のリードディスターブ管理領域203では、1万回の読み出し毎に、リードディスターブ検査が実行される。n回消去されたブロックは、使用禁止とされる。このように、消去回数によって、リードディスターブ検査を実行するためのしきい値を変化させることによって、リードディスターブによる誤りが、誤り訂正能力ビット数以上に増えてしまうことを極力避け、かつ、リードディスターブ検査自体の頻度を極力減らすことができる。
さらに、読み出し回数がしきい値a回を超えたリードディスターブ管理領域203では、その後、a>bであるb回の読み出し回数毎に、リードディスターブ検査が実行されてもよい(表1の読み出し回数b参照)。
例えば、消去回数0.5n回(すなわち50000回)未満のブロック202内のリードディスターブ管理領域203では、100億回の読み出しが実行された時点でリードディスターブ検査が実行され(表1の読み出し回数a参照)、その後、読み出しが10億回実行されるごとに、リードディスターブ検査が実行されてもよい(表1の読み出し回数b参照)。一方、消去回数が100000回に達したブロック202内のリードディスターブ管理領域203では、その後10000回の読み出しが実行された時点でリードディスターブ検査が実行され、その後、読み出しが1000回実行されるごとに、リードディスターブ検査が実行されてもよい。
このように、消去回数が所定のしきい値(例えば、0.5n回等)を超えた場合に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値は、消去回数がその所定のしきい値より小さい場合に使用される読み出し回数のしきい値より小さくなる。さらに、読み出し回数が所定のしきい値(例えば、100億回)を超えた後に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値(例えば、10億回)は、読み出し回数が所定のしきい値(例えば、100億回)を超える前に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値(例えば、100億回)より小さくなる。
これらの、消去回数とリードディスターブ検査しきい値の関係を示す情報(表1)は、ROM703に格納される。
さらに、リードディスターブを検知した場合、そのリードディスターブ管理領域のリフレッシュ(すなわちコピー)が必要になる。その場合、フラッシュメモリコントローラ503は、コピー先として、消去回数が少なく、リードディスターブが発生しにくいリードディスターブ管理領域203を優先的に選択する。あるリードディスターブ管理領域203においてリードディスターブを検知したことは、その領域においてリードの割合が極端に大きく、ライトがほとんど行われていないことを示す。このため、消去回数平準化のためのリフレッシュとは異なり、リードディスターブが発生した領域のリフレッシュ先として、消去回数が少なく、かつ、リードディスターブを発生させていないリードディスターブ管理領域203が優先的に選択される。
これらの、リードディスターブ管理単位(すなわちリードディスターブ管理領域203)又は消去単位(すなわちブロック202)ごとに管理されるデータは、フラッシュドライブ502への電力供給が停止してもデータを保持し続ける不揮発性メモリに格納されてもよい。あるいは、フラッシュドライブ502への電力供給が停止しても、それらのデータのうち最低限の情報をフラッシュメモリの専用領域に書き込む時間動作し続けるのに十分な電力をバッテリ等で確保してもよい。
図10は、本発明の第1の実施形態のフラッシュメモリ内のデータ構造の説明図である。
実際のフラッシュメモリチップ201には、例えば図10に示すように、512バイトのデータ領域1001毎に、16バイトの制御情報領域1002が存在する。この制御情報領域1002に、ページ204毎の論理アドレス1003、ページ単位の情報1004及び誤り訂正符号(ECC)1005がデータとともに格納される。ページ単位の情報1004は、ページ204が有効であるか無効であるかを示す情報、及び、ブロック202内のページ204のアドレスを示す情報を含む。誤り訂正符号1005は、データ領域1001に格納されたデータに基づいて算出される。フラッシュメモリコントローラ503は、誤り訂正符号1005を復号することによって、データ領域1001に発生しているビット誤りの数を判定することができる。
さらに、制御情報領域1002には、リードディスターブ管理領域203毎に、リードディスターブ発生回数1006が格納され、ブロック202毎に、消去回数1007が格納される。リードディスターブ発生回数1006及び消去回数1007のように、複数ページ204毎に管理される情報は、各ページ204のための16バイトの管理領域の一部を集めた領域に格納されてもよい。
論理アドレス1003、ページ単位の情報1004及び誤り訂正符号(ECC)1005は、図3のページ単位の管理情報301に相当する。消去回数1007は、図3の消去回数302に相当する。リードディスターブ発生回数1006は、後に第2の実施形態において説明する図4のリードディスターブ発生回数401に相当する。
図11は、本発明の第1の実施形態のフラッシュメモリ内のデータ構造を示す別の説明図である。
リードディスターブ管理領域203毎の読み出し回数及びリードディスターブ発生回数は、原則としてRAM702内に保存される。しかし、一般的なRAMは電源を切断されるとデータを保持できない。このため、フラッシュドライブ502の内部又は外部にバッテリ又は大容量のコンデンサ等が設けられてもよい。例えば、図11に示すようにフラッシュメモリチップ201の記憶領域の一部に管理情報領域1101を設ける。フラッシュメモリコントローラ503は、電源切断を検出した場合、バッテリ等から供給される電力を使用して、管理情報領域1101へ、リードディスターブ管理領域203毎の読み出し回数1103及びブロック202毎のリードディスターブ発生回数1102を格納する。あるいは、RAM702自体に不揮発性のRAMを用いてもよい。
上記のような電源切断検出後の処理は、MPU701の割り込み処理等を用い、早急に実行される。管理情報領域1101は、一つのフラッシュメモリチップ201に設けられてもよいし、複数のフラッシュメモリチップ201へ分散して設けられてもよい。
MPUが管理する情報は、例えば図12A及び図12Bに示すように、論理アドレス−物理アドレス変換テーブル1200及びフラッシュメモリ情報管理テーブル1210を含む。これらのテーブルは、RAM702内に格納される。
図12Aは、本発明の第1の実施形態のMPU701が管理する論理アドレス−物理アドレス変換テーブル1200の説明図である。
論理アドレス−物理アドレス変換テーブル1200は、フラッシュドライブ502の外部ホストから示される論理アドレス1201を、そのアドレスに対応するデータが格納されているフラッシュメモリチップ201及びそのフラッシュメモリチップ201内の位置を示す物理アドレス1202へ変換する。
アドレスは、ブロック202ごとに管理される。すなわち、論理アドレス1201及び物理アドレス1202は、ブロック202のアドレスである。ブロック202内の各ページ204のアドレスは、ページ単位の管理情報1203として、ページの有効/無効等を示す情報と共に管理されてもよい。
図12Bは、本発明の第1の実施形態のMPU701が管理するフラッシュメモリ情報管理テーブル1210の説明図である。
フラッシュメモリ情報管理テーブルには、各フラッシュメモリの管理単位毎に、論理アドレス1212、ページ単位の管理情報1213、消去回数1214、リードディスターブ発生回数1215及び読み出し回数1216等が、物理アドレス1211と対応付けて格納される。
物理アドレス1211、論理アドレス1212及びページ単位の管理情報1213は、それぞれ、図12Aの物理アドレス1202、論理アドレス1201及びページ単位の管理情報1203と同様である。すなわち、物理アドレス1211及び論理アドレス1212は、消去単位であるブロック202のアドレスである。
消去回数1214は、物理アドレス1211によって識別される各ブロック202において過去に実行された消去処理の回数である。消去回数1214は、図3の消去回数302に相当する。消去回数1214はゼロクリアされないため、累積される。
リードディスターブ発生回数1215は、物理アドレス1211によって識別される各ブロック202において過去に発生したリードディスターブの発生回数である。リードディスターブ発生回数1215はゼロクリアされないため、累積される。なお、第1の実施形態のフラッシュメモリ情報管理テーブル1210は、リードディスターブ発生回数1215を含まなくてもよい。リードディスターブ発生回数1215に基づく処理については、本発明の第2の実施形態において説明する。
一つの物理アドレス1211に対応する複数の読み出し回数1216は、物理アドレス1211によって識別されるブロック202に含まれる複数のリードディスターブ管理領域203に対して実行された読み出し処理の回数である。読み出し回数1216は、図3の読み出し回数303に相当する。読み出し回数1216は、リフレッシュ処理によってリードディスターブ管理領域203の全データがコピーされたとき、ゼロクリアされる。
論理アドレス−物理アドレス変換テーブル1200及びフラッシュメモリ情報管理テーブル1210は、RAM702に格納されるため、電源を切断されると、格納データが消去される。そのため、電源投入時に、MPU701は、フラッシュメモリ504の制御情報領域1002及び管理情報領域1101を読み出し、論理アドレス−物理アドレス変換テーブル1200及びフラッシュメモリ情報管理テーブル1210を構築し、構築したテーブルをRAM702に格納する。
次に、フラッシュメモリコントローラ503が実行する処理のフローを、図13A、図13B及び図14を参照して説明する。
図13Aは、本発明の第1の実施形態のフラッシュメモリコントローラ503が、フラッシュドライブ502の電源投入時に実行する処理のフローチャートである。
最初に、フラッシュメモリコントローラ503は、フラッシュメモリチップの制御情報領域を読み出す(ステップ1301)。
次に、フラッシュメモリコントローラ503は、各物理フラッシュメモリの消去単位であるブロック202が割り当てられている論理アドレス、及び、ブロック202内の各ページ204の論理アドレスを読み出し、それらのアドレスに基づいて、論理アドレス−物理アドレス変換テーブル1200、及び、フラッシュメモリ情報管理テーブル1210のカラム1211から1213を構築する(ステップ1302)。カラム1211から1213は、論理アドレス−物理アドレス変換テーブル1200と同等の情報を含む。ステップ1301及びステップ1302は、全てのフラッシュメモリの制御情報を読み出すまで繰り返される(ステップ1303)。
続いて、フラッシュメモリコントローラ503は、一部のフラッシュメモリに割り当てられている管理情報領域1101を参照して、リードディスターブ管理単位毎の読み出し回数1103及び発生回数1102を読み出し(ステップ1304)、読み出された値をフラッシュメモリ情報管理テーブル1210の読み出し回数1216及び発生回数1215として追加する(ステップ1305)。
次に、フラッシュメモリコントローラ503は、前回の最終処理状況を読み出し(ステップ1306)、エラーがあるか否かを判定する(ステップ1307)。ステップ1307においてエラーがあると判定された場合、フラッシュメモリコントローラ503は、読み出された前回の最終処理状況をステータスへ反映し(ステップ1308)、処理を終了する。一方、ステップ1307においてエラーがないと判定された場合、フラッシュメモリコントローラ503は、ステップ1308を実行せずに処理を終了する。
以上の一連の処理終了後、フラッシュメモリコントローラ503は、情報伝達手段505を通して外部ホストから来るコマンドを待ち、そのコマンドを処理する動作を繰り返す。
図13Bは、本発明の第1の実施形態のフラッシュメモリコントローラ503が、フラッシュドライブ502の電源切断時に実行する処理のフローチャートである。
フラッシュドライブ502の電源投入後、一度もフラッシュメモリ504への書き込みが行われずに、読み出しのみが行われた後、電源が切断される場合も考えられる。この場合、読み出し回数1216が更新されている。しかし、フラッシュメモリ情報管理テーブル1210は揮発性のメモリ(すなわちRAM702)に格納されているため、フラッシュドライブ502の電源が切断されると、更新された読み出し回数1216が消えてしまう。このため、フラッシュメモリコントローラ503は、フラッシュドライブ502の外部からの電力供給の切断を検知したら、その時点で実行中の処理を中断する(ステップ1311)。そして、フラッシュメモリコントローラ503は、処理中断の状況を保存する(ステップ1312)。
次に、フラッシュメモリコントローラ503は、読み出し回数1216を不揮発性のフラッシュメモリ504の管理情報領域1101へ書き込む(ステップ1313)。外部からの電力供給が切断された後、管理情報領域1101への読み出し回数1216の書き込みが終了するまでの電力は、フラッシュドライブ502が備えるバッテリ(図示省略)又は大容量のコンデンサ(図示省略)等から供給される。
次に、フラッシュメモリコントローラ503が実行する書き込み及び読み出し処理について説明する。
フラッシュメモリコントローラ503は、外部ホストから書き込みコマンド及び書き込み対象データを受信すると、その対象データに基づいて誤り訂正符号を算出する。そして、フラッシュメモリコントローラ503は、対象データ及び誤り訂正符号を、書き込みコマンドによって指定されたアドレスのデータ領域1001及び制御情報領域1002(より詳細には、誤り訂正符号1005)に格納する。これらの処理は、従来技術と同様であるため、詳細な説明を省略する。
図14は、本発明の第1の実施形態のフラッシュメモリコントローラ503が実行する読み出し処理のフローチャートである。
図14は、リードディスターブ検査によって、各ページ204のデータを順次読み出し、訂正可能な誤りを検出したページ204のデータに対して、誤り訂正処理を実行し、訂正されたデータを、通常の書き込み処理と同様にフラッシュメモリに書き込む処理を示している。
外部ホストから読み出しコマンド及び対象データの論理アドレスを受け取ると、フラッシュメモリコントローラ503は、対象となるデータがどのフラッシュメモリチップ201のどのブロック202に含まれるかを、フラッシュメモリ情報管理テーブル1210の論理アドレス−物理アドレス変換テーブル1200に基づいて計算する(ステップ1401)。
次に、フラッシュメモリコントローラ503は、計算された物理アドレスを担当するフラッシュメモリチップ201から、対象データ及び対象データに対応するフラッシュメモリ制御情報を読み出す(ステップ1402)。ここで、読み出される対象データは、計算された物理アドレスによって特定されるデータ領域1001に格納されたデータである。また、その対象データに対応するフラッシュメモリ制御情報は、特定されたデータ領域1001に対応する制御情報領域1002に格納された情報である。
次に、フラッシュメモリコントローラ503は、読み出されたデータに誤りがあるか否かを検査する(ステップ1403)。この検査は、例えば、誤り訂正符号1005を復号することによって実行される。
読み出されたデータに誤りがあり(ステップ1404)、かつ、誤り訂正符号1005の復号によって誤り訂正可能であれば(ステップ1405)、フラッシュメモリコントローラ503は、誤りを訂正し(ステップ1406)、ホストインタフェース部704を介して、外部ホストへ訂正された対象データを送信する(ステップ1407)。一方、読み出されたデータが、誤り訂正符号1005の復号によって訂正できない程度の誤りを含む場合(ステップ1405)、フラッシュメモリコントローラ503は、対象データが不良である旨を、ホストインタフェース部704を介して、外部ホストへステータスとして報告する(ステップ1408)。以上のステップ1401から1408までの処理は、従来のフラッシュドライブに適用されている技術と違いがない。
外部ホストから指示された読み出し処理終了後(すなわち、ステップ1407又はステップ1408の終了後)、フラッシュメモリコントローラ503は、処理対象のリードディスターブ管理領域203(すなわち読み出し対象データを含むリードディスターブ管理領域203)の読み出し回数303をインクリメント(すなわち+1)する(ステップ1409)。
読み出し回数303がしきい値を超えた場合(ステップ1410)、フラッシュメモリコントローラ503は、その読み出し回数303に対応するリードディスターブ管理領域203内のデータ(すなわち、データ領域1001及び制御情報領域1002内のデータ)を読み出す(ステップ1411)。そして、フラッシュメモリコントローラ503は、読み出された誤り訂正符号1005を復号することによって、誤りがあるか否かを判定する(ステップ1412)。
なお、ステップ1410において使用されるしきい値は、表1において説明した読み出し回数a又は読み出し回数bである。
また、ステップ1412において、誤りがあるか否かが判定される代わりに、検出された誤りの数(例えば、ビット誤りの数、又は、所定の数以上のビット誤りを含むページ204の数)が所定のしきい値を超えたか否かが判定されてもよい。
ステップ1412において誤りがあると判定された場合、リードディスターブが発生していると考えられる。この場合、フラッシュメモリコントローラ503は、その誤りが誤り訂正符号の復号によって訂正可能か否かを判定する(ステップ1413)。誤り訂正可能であれば、フラッシュメモリコントローラ503は、誤りを訂正し(ステップ1414)、訂正された対象データを、処理対象であるリードディスターブ管理領域203以外のリードディスターブ管理領域203の消去済みの新しいページ204に書き込む(ステップ1415)。この処理は従来技術と同様の書き込み方法によって実行されてもよい。
一方、ステップ1413において誤り訂正不可能であった場合、フラッシュメモリコントローラ503は、外部ホストへ報告するため、対象データが格納されたページ204の論理アドレスを記憶する。そして、フラッシュメモリコントローラ503は、対象データが訂正できない誤りを含むことを示す通知を、ホストインタフェース部704を介して、外部ホストへ送信する(ステップ1416)。この通知は、訂正できない誤りを含む対象データが格納されたページ204の論理アドレスを含んでもよい。
ステップ1415又はステップ1416が終了すると、フラッシュメモリコントローラ503は、対象データが格納された領域のリードディスターブ発生フラグ(図示省略)をセットする(ステップ1417)。
ステップ1417が実行されたか、又は、ステップ1412において誤りがないと判定された場合、フラッシュメモリコントローラ503は、処理対象のリードディスターブ管理領域203内の全てのデータについてステップ1411から1417で説明した処理が実行されたか否かを判定する(ステップ1418)。
全てのデータについてこれらの処理が実行されていない場合、フラッシュメモリコントローラ503は、残りのデータについてステップ1411以降の処理を実行する。
全てのデータについてこれらの処理が実行された場合、フラッシュメモリコントローラ503は、処理対象のリードディスターブ管理領域203について、リードディスターブ発生フラグがセットされているか否かを判定する(ステップ1419)。
ステップ1419において、リードディスターブ発生フラグがセットされていると判定された場合、処理対象のリードディスターブ管理領域203においてリードディスターブが発生している。このため、フラッシュメモリコントローラ503は、リードディスターブ発生フラグをリセットし、リードディスターブ発生回数1215をインクリメントし(ステップ1420)、処理を終了する。
一方、ステップ1419において、リードディスターブ発生フラグがセットされていないと判定された場合、処理対象のリードディスターブ管理領域203においてリードディスターブが発生していない。この場合、フラッシュメモリコントローラ503は、ステップ1420を実行せずに処理を終了する。
なお、ステップ1416のうち、通知を外部ホストに通信する処理は、ステップ1418において、全てのデータについて処理が終了したと判定された後に実行されてもよい。
なお、ステップ1411において、処理対象のリードディスターブ管理領域203内のデータを全て読み出し、それらのデータを対象としてステップ1412及びステップ1413の判定を実行し、ステップ1413において誤り訂正可能と判定された場合には、処理対象のリードディスターブ管理領域203全体を、新しい領域にコピーしてもよい。
以上のように、本発明の第1の実施形態によれば、読み出しが実行された回数が所定のしきい値を超えると、リードディスターブ管理領域内の全てのデータが読み出され、誤りが検出される。このため、外部ホストからの読み出し要求を一度も受けていないページ204において、リードディスターブによる誤りが発生していた場合であっても、その誤りを検出することができる。リードディスターブ検査が実行されるまでの読み出し回数は、消去回数に依存して決定される。このため、リードディスターブが発生しやすい条件(すなわち、消去回数が多い場合)においても、確実にリードディスターブによる誤りを検出することができる。
次に、本発明の第2の実施形態を、図4を用いて説明する。
以下、第2の実施形態が第1の実施形態と相違する点について説明し、第2の実施形態が第1の実施形態と共通する点については説明を省略する。
図4は、本発明の第2の実施形態における管理領域ごとの管理情報の説明図である。
ブロック202(すなわち消去単位)毎の消去回数302は、従来から、フラッシュメモリ制御において管理されている例が多い。第2の実施形態では、消去回数302に加えて、ブロック202毎のリードディスターブ発生回数401が管理される。これは、ブロックに含まれる一つ以上のリードディスターブ管理領域203のうちいずれかにおいて、リードディスターブが発生したと判定された場合に、インクリメントされるものである。なお、リードディスターブが発生したか否かは、例えば、図14のステップ1412のように判定されてもよい。
フローティングゲートを備えるFETのしきい値、及び、酸化絶縁膜の絶縁強度等の物理的特性は、消去回数302のみならず、リードアクセス回数によっても変化する。このため、消去回数がブロック202の使用可能/不可能を判断するしきい値に達していなくても、リードアクセスによって、そのブロック202を使用不可能と判断する必要が生じる場合がある。
そのため、第2の実施形態のフラッシュメモリコントローラ503は、リードディスターブ発生回数401を管理するとともに、リードディスターブ発生回数401と消去回数302を加味したしきい値を設定し、そのしきい値に基づいて、該当ブロックの使用可否を総合的に判断する。
例えば、リードディスターブ発生回数401のn回が消去回数302の1回と同等と見なしてもよいし、リードディスターブ発生回数401の1回が消去回数302のn回と同等と見なしてもよい。ここで、nは任意の自然数である。
その結果、リードディスターブ発生回数401が所定のしきい値を超えた場合に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値は、リードディスターブ発生回数401がその所定のしきい値より小さい場合に使用される読み出し回数のしきい値より小さくなる(表1参照)。
以上のように、本発明の第2の実施形態によれば、リードディスターブ検査が実行されるまでの読み出し回数は、過去に発生したリードディスターブの回数に依存して決定される。このため、リードディスターブが発生しやすい条件(すなわち、過去に発生したリードディスターブの回数が多い場合)においても、確実にリードディスターブによる誤りを検出することができる。
次に、本発明の第3の実施形態を、図5、図9及び図15を用いて説明する。
なお、上記の第1の実施形態及び第2の実施形態の説明は、「外部ホスト」を「RAIDコントローラ501」に置き換えることによって、第3の実施形態に適用することができる。
本発明が対象としているフラッシュメモリでは、消去回数の保証及びリードディスターブが発生しないことの保証をすることは、不可能である。なぜならば、消去回数を確認するために読み出し動作を繰り返すと、確認のためのアクセス自体でフラッシュメモリを劣化させてしまうためである。リードディスターブに関しても同様である。また、フラッシュメモリチップ201内のあるブロック202をチェックすれば、それと同一のフラッシュメモリチップ201内のその他のブロック202もほぼ同程度の性能を備えると推定することはできるが、まったく同じ性能を備えていると保証できるものではない。
よって、最悪の場合、半導体ウェハ内のばらつき及びフラッシュメモリチップ201内のブロック202毎のばらつきによって、リードディスターブ検査を行った時点で、すでにフラッシュメモリコントローラ503内での誤り訂正が不可能なまでに、データが破壊されている場合がある。
このようなデータの破壊は、破壊されたデータを含む読み出し単位、又は、読み出し単位より小さく区切った誤り訂正単位毎にデータを読み出し、付加されている誤り訂正符号を用いて誤りの有無を検査しないと判明しない。
よって、リードディスターブ検査によって初めて、アクセスされていないデータの破壊が検出され、かつ、付加されている誤り訂正符号では訂正できない場合が考えられる。
このような場合は、フラッシュドライブ502の機能だけでデータを回復することは不可能であるため、RAID(Redundant Arrays of Inexpensive Disks)システム等を構築することによって対処する。
図9は、本発明の第3の実施形態に適用されるRAIDシステムの構成を示すブロック図である。
RAIDシステムは、多数のハードディスクドライブ(HDD)904によって冗長化されたディスクアレイ905を備えるストレージシステムである。
RAIDシステムは、例えば、図9のように、複数の上位ホストシステム601に対して、外部記憶空間を提供する。RAIDコントローラ501は、多数のHDD904をディスクアレイ905として制御管理する。例えば、RAIDコントローラ501は、4台程度のHDD904でパリティグループを構成し、3セクタ分のデータに対して、1セクタのパリティデータを生成し、合計4セクタ分のデータを4台のHDD904に分散して格納する。その結果、4セクタ中1セクタのデータが破壊されても、残り3セクタ分のデータに基づいて、破壊された1セクタ分のデータを復元することができる。
あるいは、RAIDコントローラ501は、2台のHDD904でパリティグループを構成し、それらの2台のHDD904に同一のデータを格納してもよい。その場合、一方のHDD904に格納されたデータが破壊されても、もう一方のHDD904からデータを読み出すことによって、破壊されたデータを復元することができる。
このように、RAIDコントローラ501は、上位ホストシステム601からデータの書き込みを要求されると、書き込みを要求されたデータ、及び、そのデータを冗長化するデータを、複数のHDD904に分散して格納する。そして、書き込まれたデータが破壊された場合、そのデータを冗長化するデータに基づいて、破壊されたデータを復元することができる。書き込みを要求されたデータを冗長化するデータとは、書き込みを要求されたデータと同一のデータ、又は、書き込みを要求されたデータに基づいて算出されたパリティである。
RAIDコントローラ501は、上位ホストシステムI/F部901、キャッシュメモリ部902及びディスクドライブ制御部903を備える。パリティデータの生成及び破壊されたデータの復元は、ディスクドライブ制御部903が実行する。
図9に示すHDD904をフラッシュドライブ502に置き換えることによって、図9に示すRAIDシステムに本発明を適用することができる。
図5は、本発明の第3の実施形態のフラッシュドライブRAIDシステムの構成を示すブロック図である。
図5に示すフラッシュドライブRAIDシステムは、図9に示すRAIDシステムのHDD904をフラッシュドライブ502で置き換えることによって実現される。
図5に示すシステムでは、フラッシュメモリコントローラ503が、誤り訂正符号の復号によって回復不可能なデータの誤りを検出したこと示す通知を、非同期信号506によってRAIDコントローラ501(又はその他の上位のシステム)へ送信する。非同期信号506は、例えば割り込み信号である。RAIDコントローラ501は、フラッシュドライブ502からの非同期信号506を検出すると、フラッシュドライブ502のステータス情報等を、従来の情報伝達手段505を用いて収集することによって、破壊が発生したユーザデータのアドレス情報を入手する。そして、RAIDコントローラ501は、RAIDのパリティのような、データを冗長化するデータを用いて、破壊されたデータを復元し、復元されたデータを、そのデータが保持されていたフラッシュドライブ502へ上書きする。なお、パリティ等によるデータの復元及びそのデータの書き込みは、RAIDコントローラ501がその時点で実行している処理の終了を待って実行されてもよい。
上記の処理は、例えば、図15のような処理フローで実現する。
図15は、本発明の第3の実施形態のRAIDコントローラ501が実行するRAIDシステム処理のフローチャートである。
図15の処理は、フラッシュドライブ502からの割り込み信号等、不定期な信号を受信したときに開始される。ここで、フラッシュドライブ502からの割り込み信号とは、図14のステップ1416において送信される通知に相当する。この割り込み信号が不定期である理由は、RAIDコントローラ501からの読み出し処理に伴い、リードディスターブ検査が開始され、フラッシュドライブ502内部での誤り訂正処理が不可能な場合に限り、フラッシュドライブ502からの割り込みが発生するためである。
フラッシュドライブ502からの割り込み信号等によって、フラッシュドライブ内部での誤り訂正が不可能なリードディスターブを検知した場合、RAIDコントローラ501は、フラッシュドライブ502から、リードディスターブが発生したデータを含むページ204の論理アドレスを取得する(ステップ1501)。RAIDコントローラ501は、従来のI/Fを用いて論理アドレスを取得してもよいし、専用のI/Fを用いて論理アドレスを取得してもよい。この論理アドレスは、例えば、図14のステップ1416において送信される通知に含まれている。
リードディスターブが発生したページ204の論理アドレスを取得したら、取得した論理アドレスに格納されたデータを含むパリティグループを特定し(ステップ1502)、その論理アドレスのデータ以外のパリティグループのデータを、他のフラッシュドライブ502から読み出す(ステップ1503)。例えば、3D+1PでRAID5が構成されている場合において、3Dの中のA,B,CのデータのAでリードディスターブが発生し、破壊されたと仮定する。この場合、RAIDコントローラ501は、B,C及びPのデータを読み出し、読み出されたデータの排他的論理和を算出することによって、データAを復元する(ステップ1504)。このように、RAIDコントローラ501は、読み出したパリティグループのデータに基づいて、取得された論理アドレスのデータを復元し、その論理アドレスのデータを格納していたフラッシュドライブ502へ復元されたデータを書き込む(ステップ1505)。この書き込み動作のときには、従来技術と同様に、消去済みの物理的に異なるページ204にデータが書き込まれるため、リードディスターブが発生したページ204に書き戻されることはない。
フラッシュドライブ502へライトアクセスによってデータを上書きした場合、以前のデータを保持しているページ204とは異なるページ204に書き込まれるため、リードディスターブ発生の条件等(例えば、リードディスターブ発生のしやすさ)が変化する。
以上のように、本発明の第3の実施形態によれば、フラッシュメモリコントローラ503によって復元できない程の誤りが検出された場合でも、RAIDの機能によってデータを復元することができる。このため、フラッシュドライブ502を用いたストレージシステムの信頼性を向上させることができる。
次に、本発明の第4の実施形態を、図6を用いて説明する。
以下、第4の実施形態が第3の実施形態と相違する点について説明し、第4の実施形態が第3の実施形態と共通する点については説明を省略する。
図6は、本発明の第4の実施形態のフラッシュドライブRAIDシステムの構成を示すブロック図である。
従来のHDD904を対象にしていたRAIDシステムにおけるRAIDコントローラ501は、HDD904から非同期の割り込み要求を受け付けて、その要求に基づきHDD904を操作することができない。
そこで、第4の実施形態のフラッシュドライブ502は、割り込み出力信号603及び情報伝達手段604を介してリードディスターブ対策部602へ接続される。リードディスターブ対策部602は、RAIDコントローラ501及び各フラッシュドライブ502と通信可能に接続された制御装置である。
フラッシュドライブ502から割り込み信号を受けたリードディスターブ対策部602は、そのフラッシュドライブ502から、破壊されたユーザデータのアドレス情報を、情報伝達手段604を介して収集する。そして、リードディスターブ対策部602は、破壊されたユーザデータの読み出し及び書き込みを指示するRAIDコントローラへのコマンド群を生成する。具体的には、リードディスターブ対策部602は、情報伝達手段604を介して収集したアドレスからユーザデータを読み出すためのコマンド、及び、読み出されたユーザデータを書き込むためのコマンドを生成する。
そして、リードディスターブ対策部602は、生成したコマンドをRAIDコントローラ501へ情報伝達手段605を介して送信する。このとき、RAIDコントローラ501は、リードディスターブ対策部602から受信したコマンド群を、複数の上位ホストシステム601のうち一つから受信したコマンド群として処理する。
なお、情報伝達手段604は、RAIDコントローラ501とフラッシュドライブ502との間の情報伝達手段505と同様のもの(例えば、ファイバーチャネルインタフェース)であってもよい。また、情報伝達手段605は、上位ホストシステム601とRAIDコントローラ501との間の情報伝達手段と同様のもの(例えば、ファイバーチャネルインタフェース)であってもよい。
RAIDコントローラ501は、リードディスターブ対策部602から受信した読み出しコマンドに従って破壊されたユーザデータを読み出す。このとき、フラッシュドライブ502は、エラー情報を返す。このエラー情報に基づいて、RAIDコントローラ501は、読み出し対象のユーザデータが利用不可能であると判定し、RAIDのパリティに基づいて、読み出し対象のユーザデータを復元する。その後、リードディスターブ対策部602から受信した書き込みコマンドに従って、RAIDコントローラ501は、復元されたユーザデータをフラッシュドライブ502に書き込む。
このとき、従来のHDD904を用いたRAIDシステムでは、エラーが起きたHDD904を切り離し、スペアHDD904を用いる場合がある。しかし、本実施形態のRAIDコントローラ501は、フラッシュドライブ502からのエラーの情報を判断し、ユーザデータが破壊されている場合は、RAIDのパリティグループからフラッシュドライブ502を切り離さず、復元されたユーザデータを元のフラッシュドライブ502に上書きする。
フラッシュドライブへライトアクセスによってデータを上書きした場合、以前のデータを保持しているページ204とは異なるページに書き込まれるため、リードディスターブ発生の条件等が変化する。
あるいは、フラッシュドライブ502から発生する割り込みを受信した割り込み処理部(図示省略)が、誤り訂正不能なデータ部分を修復する特殊コマンドを、上位ホストシステム601からの命令として、RAIDコントローラ501に送信してもよい。
以上のように、本発明の第4の実施形態によれば、フラッシュメモリコントローラ503によって復元できない程の誤りが検出された場合、リードディスターブ対策部602がフラッシュドライブ502からの割り込み信号を受信し、その信号に基づいて、RAIDコントローラ501に読み出し及び書き込みコマンドを発行する。このため、従来の(すなわちHDD904のための)RAIDコントローラ501にフラッシュドライブ502を接続し、さらに、)RAIDコントローラ501及びフラッシュドライブ502にリードディスターブ対策部602を接続することによって、本発明を実施することができる。すなわち、従来のRAIDコントローラ501を変更することなく、本発明による信頼性の高いストレージシステムを実現することができる。
以上に説明した本発明の実施形態によれば、フラッシュメモリを、高度な信頼性を必要とするRAIDシステムに適用することが可能になる。さらに、リードディスターブ耐性が低いフラッシュメモリをRAIDシステムに適用することも可能になる。その結果、フラッシュメモリの歩留まりを改善できるため、フラッシュメモリのコスト低減が図れる。
フラッシュメモリを複数個搭載するフラッシュドライブにおけるリードディスターブ対策、及び、RAIDシステムにおけるリードディスターブ対策を2重に行うことによって、高い信頼性を確保したストレージシステムを構築することが可能になる。
201 フラッシュメモリチップ
202 消去単位(ブロック)
203 リードディスターブ管理領域
204 書き込み/読み出し単位(ページ)
205 リードディスターブ発生ビット
301 ページ単位の管理情報
302 消去回数
303 読み出し回数
401 リードディスターブ発生回数
501 RAIDコントローラ
502 フラッシュドライブ
503 フラッシュメモリコントローラ
504 フラッシュメモリ
601 上位ホストシステム
602 リードディスターブ対策部
202 消去単位(ブロック)
203 リードディスターブ管理領域
204 書き込み/読み出し単位(ページ)
205 リードディスターブ発生ビット
301 ページ単位の管理情報
302 消去回数
303 読み出し回数
401 リードディスターブ発生回数
501 RAIDコントローラ
502 フラッシュドライブ
503 フラッシュメモリコントローラ
504 フラッシュメモリ
601 上位ホストシステム
602 リードディスターブ対策部
Claims (18)
- 複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性データ記憶装置であって、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記各記憶セルは、複数の管理領域のうち一つに含まれ、
前記各管理領域は、複数の前記記憶セルを含み、
前記メモリコントローラは、
前記複数の記憶セルに、データ及び前記データに基づいて算出された誤り訂正符号を書き込み、
前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、
前記複数の管理領域の一つである第1管理領域について計数された前記データ読み出し処理の回数が第1閾値を超えた場合、前記第1管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出し、
前記読み出された誤り訂正符号を復号し、
前記読み出されたデータに含まれる誤りの数が第2閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第1管理領域以外の前記管理領域に書き込むことを特徴とする不揮発性データ記憶装置。 - 前記メモリコントローラは、
一つ以上の前記管理領域を含む消去ブロックごとに、前記消去ブロック内の記憶セルに対して実行されたデータ消去処理の回数を計数し、
前記第1管理領域を含む前記消去ブロックについて計数された前記データ消去処理の回数が第3閾値を超えた場合、前記第1閾値に代えて、前記第1閾値より小さい第4閾値を使用することを特徴とする請求項1に記載の不揮発性データ記憶装置。 - 前記メモリコントローラは、
前記第1管理領域から読み出されたデータに含まれる誤りの数が前記第2閾値を超えたために、前記訂正されたデータを前記第1管理領域以外の前記管理領域に書き込む処理が実行された回数を計数し、
前記訂正されたデータを前記第1管理領域以外の前記管理領域に書き込む処理が実行された回数が第5閾値を超えた場合、前記第1閾値に代えて、前記第1閾値より小さい第6閾値を使用することを特徴とする請求項1に記載の不揮発性データ記憶装置。 - 前記第1管理領域について計数された前記データ読み出し処理の回数が第7閾値を超えた場合、前記第1閾値に代えて、前記第1閾値より小さい第8閾値を使用することを特徴とする請求項1に記載の不揮発性データ記憶装置。
- 前記複数の記憶セルは、NAND型フラッシュメモリの記憶セルであり、
前記各管理領域は、直列に接続された複数の前記電界効果トランジスタ、及び、前記直列に接続された複数の電界効果トランジスタの各々が属するページに含まれる複数の前記電界効果トランジスタを含むことを特徴とする請求項1に記載の不揮発性データ記憶装置。 - 前記不揮発性データ記憶装置は、前記不揮発性データ記憶装置に対してデータ書き込み要求及びデータ読み出し要求を送信するホスト装置に接続され、
前記メモリコントローラは、前記第1管理領域内の前記記憶セルから読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記誤り訂正符号の復号によって訂正できない誤りが書き込まれた領域のアドレスを示す情報を前記ホスト装置に送信することを特徴とする請求項1に記載の不揮発性データ記憶装置。 - 複数の不揮発性データ記憶装置と、前記複数の不揮発性データ記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラと、を備えるストレージシステムであって、
前記ストレージコントローラは、前記複数の不揮発性データ記憶装置のうち少なくとも一つに、前記少なくとも一つを除く一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータを書き込み、
前記各不揮発性データ記憶装置は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記各記憶セルは、複数の管理領域のうち一つに含まれ、
前記各管理領域は、複数の前記記憶セルを含み、
前記メモリコントローラは、
前記ストレージコントローラから書き込みを要求されたデータ、及び、前記データに基づいて算出された誤り訂正符号を、前記複数の記憶セルに書き込み、
前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、
前記複数の管理領域の一つである第1管理領域について計数された前記データ読み出し処理の回数が第1閾値を超えた場合、前記第1管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出し、
前記読み出された誤り訂正符号を復号し、
前記読み出されたデータに含まれる誤りの数が第2閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第1管理領域以外の前記管理領域に書き込み、
前記読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域のアドレスを示す情報を送信し、
前記ストレージコントローラは、
前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域、及び、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを冗長化するデータが書き込まれた領域を対象とするデータ読み出し要求を前記複数の不揮発性データ記憶装置に送信し、
前記読み出し要求に応じて読み出されたデータに基づいて、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを復元し、
前記複数の不揮発性データ記憶装置に、前記復元されたデータ、及び、前記復元されたデータを冗長化するデータを書き込む要求を送信することを特徴とするストレージシステム。 - 前記ストレージシステムは、前記複数の不揮発性データ記憶装置及び前記ストレージコントローラに接続される制御装置を備え、
前記メモリコントローラは、前記読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域のアドレスを示す情報を前記制御装置に送信し、
前記制御装置は、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域を対象とする読み出し要求を前記ストレージコントローラに送信し、
前記ストレージコントローラは、前記制御装置から受信した読み出し要求に応じて、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域、及び、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを冗長化するデータが書き込まれた領域を対象とするデータ読み出し要求を、前記複数の不揮発性データ記憶装置に送信することを特徴とする請求項7に記載のストレージシステム。 - 前記一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータは、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータと同一のデータ、又は、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータに基づいて算出されたパリティであることを特徴とする請求項7に記載のストレージシステム。
- ストレージシステムを制御する方法であって、
前記ストレージシステムは、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性データ記憶装置を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記各記憶セルは、複数の管理領域のうち一つに含まれ、
前記各管理領域は、複数の前記記憶セルを含み、
前記方法は、
前記メモリコントローラが、データ、及び、前記データに基づいて算出された誤り訂正符号を、前記複数の記憶セルに書き込む手順と、
前記メモリコントローラが、前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数する手順と、
前記メモリコントローラが、前記複数の管理領域の一つである第1管理領域について計数された前記データ読み出し処理の回数が第1閾値を超えた場合、前記第1管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出す手順と、
前記メモリコントローラが、前記読み出された誤り訂正符号を復号する手順と、
前記読み出されたデータに含まれる誤りの数が第2閾値を超えた場合、前記メモリコントローラが、前記誤り訂正符号を復号することによって訂正されたデータを、前記第1管理領域以外の前記管理領域に書き込む手順と、を含むことを特徴とする方法。 - 前記方法は、前記メモリコントローラが、一つ以上の前記管理領域を含む消去ブロックごとに、前記消去ブロック内の記憶セルに対して実行されたデータ消去処理の回数を計数する手順をさらに含み、
前記第1管理領域を含む前記消去ブロックについて計数された前記データ消去処理の回数が第3閾値を超えた場合、前記メモリコントローラが、前記第1閾値に代えて、前記第1閾値より小さい第4閾値を使用することを特徴とする請求項10に記載の方法。 - 前記方法は、前記メモリコントローラが、前記第1管理領域から読み出されたデータに含まれる誤りの数が前記第2閾値を超えたために、前記訂正されたデータを前記第1管理領域以外の前記管理領域に書き込む処理が実行された回数を計数する手順をさらに含み、
前記訂正されたデータを前記第1管理領域以外の前記管理領域に書き込む処理が実行された回数が第5閾値を超えた場合、前記メモリコントローラが、前記第1閾値に代えて、前記第1閾値より小さい第6閾値を使用することを特徴とする請求項10に記載の方法。 - 前記第1管理領域について計数された前記データ読み出し処理の回数が第7閾値を超えた場合、前記メモリコントローラが、前記第1閾値に代えて、前記第1閾値より小さい第8閾値を使用することを特徴とする請求項10に記載の方法。
- 前記複数の記憶セルは、NAND型フラッシュメモリの記憶セルであり、
前記各管理領域は、直列に接続された複数の前記電界効果トランジスタ、及び、前記直列に接続された複数の電界効果トランジスタの各々が属するページに含まれる複数の前記電界効果トランジスタを含むことを特徴とする請求項10に記載の方法。 - 前記不揮発性データ記憶装置は、前記不揮発性データ記憶装置に対してデータ書き込み要求及びデータ読み出し要求を送信するホスト装置に接続され、
前記方法は、前記第1管理領域内の前記記憶セルから読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記メモリコントローラが、前記誤り訂正符号の復号によって訂正できない誤りが書き込まれた領域のアドレスを示す情報を前記ホスト装置に送信する手順をさらに含むことを特徴とする請求項10に記載の方法。 - 前記ストレージシステムは、複数の前記不揮発性記憶装置を含み、
前記ホスト装置は、前記複数の不揮発性データ記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラを含み、
前記ストレージコントローラは、前記複数の不揮発性データ記憶装置のうち少なくとも一つに、前記少なくとも一つを除く一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータを書き込み、
前記メモリコントローラが、前記データ、及び、前記データに基づいて算出された誤り訂正符号を、前記複数の記憶セルに書き込む手順は、前記ストレージコントローラから送信された前記データの書き込み要求に応じて実行され、
前記方法は、
前記ストレージコントローラが、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域、及び、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを冗長化するデータが書き込まれた領域を対象とするデータ読み出し要求を前記複数の不揮発性データ記憶装置に送信する手順と、
前記ストレージコントローラが、前記読み出し要求に応じて読み出されたデータに基づいて、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを復元する手順と、
前記ストレージコントローラが、前記複数の不揮発性データ記憶装置に、前記復元されたデータ、及び、前記復元されたデータを冗長化するデータを書き込む要求を送信する手順と、をさらに含むことを特徴とする請求項15に記載の方法。 - 前記ホスト装置は、前記複数の不揮発性記憶装置及び前記ストレージコントローラに接続される制御装置をさらに含み、
前記方法は、
前記制御装置が、前記誤り訂正符号の復号によって訂正できない誤りが書き込まれた領域のアドレスを示す情報を受信する手順と、
前記制御装置が、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域を対象とする読み出し要求を前記ストレージコントローラに送信する手順と、をさらに含み、
前記ストレージコントローラが、前記データ読み出し要求を前記複数の不揮発性データ記憶装置に送信する手順は、前記制御装置から受信した前記読み出し要求に応じて実行されることを特徴とする請求項16に記載の方法。 - 前記一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータは、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータと同一のデータ、又は、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータに基づいて算出されたパリティであることを特徴とする請求項16に記載の方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007130379A JP2008287404A (ja) | 2007-05-16 | 2007-05-16 | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
US11/968,724 US8281220B2 (en) | 2007-05-16 | 2008-01-03 | Apparatus for detecting and recovering from data destruction caused in an unaccessed memory cell by read, and method therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007130379A JP2008287404A (ja) | 2007-05-16 | 2007-05-16 | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008287404A true JP2008287404A (ja) | 2008-11-27 |
Family
ID=40028751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007130379A Pending JP2008287404A (ja) | 2007-05-16 | 2007-05-16 | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8281220B2 (ja) |
JP (1) | JP2008287404A (ja) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010052983A1 (ja) | 2008-11-10 | 2010-05-14 | 旭硝子株式会社 | 研磨用組成物および半導体集積回路装置の製造方法 |
JP2010152472A (ja) * | 2008-12-24 | 2010-07-08 | Mega Chips Corp | メモリシステムおよびコンピュータシステム |
JP2010198219A (ja) * | 2009-02-24 | 2010-09-09 | Toshiba Corp | メモリコントローラおよび半導体記憶装置 |
JP2011060217A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | データ蓄積装置及びデータ書込み/読出し方法 |
JP2011165063A (ja) * | 2010-02-12 | 2011-08-25 | Toshiba Corp | 半導体記憶装置 |
JP2011180831A (ja) * | 2010-03-01 | 2011-09-15 | Toshiba Corp | 半導体記憶装置 |
JP2012252557A (ja) * | 2011-06-03 | 2012-12-20 | Mega Chips Corp | メモリコントローラ |
WO2013145024A1 (en) | 2012-03-30 | 2013-10-03 | Hitachi, Ltd. | Storage system with flash memory, and storage control method |
JP2013542541A (ja) * | 2010-11-08 | 2013-11-21 | グリーンライアント リミテッド ライアビリティ カンパニー | データのブロックを不揮発性メモリデバイスに冗長方式で格納するためのメモリコントローラ及びメモリシステム |
JP2014505941A (ja) * | 2011-04-28 | 2014-03-06 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
US9032264B2 (en) | 2013-03-21 | 2015-05-12 | Kabushiki Kaisha Toshiba | Test method for nonvolatile memory |
JP2015118572A (ja) * | 2013-12-18 | 2015-06-25 | 富士通株式会社 | ストレージ制御装置、制御方法、および制御プログラム |
KR20160132814A (ko) * | 2014-03-17 | 2016-11-21 | 샌디스크 테크놀로지스 엘엘씨 | 메모리의 구획들 내에서의 판독 액세스들의 카운팅을 통한 비휘발성 메모리들 상에서의 판독 교란들의 검출 |
US9852023B2 (en) | 2015-02-26 | 2017-12-26 | Semiconductor Energy Laboratory Co., Ltd. | Memory system and information processing system |
WO2018163258A1 (ja) * | 2017-03-06 | 2018-09-13 | 株式会社日立製作所 | フラッシュメモリモジュール、ストレージシステム、及びフラッシュメモリの制御方法 |
US10831395B2 (en) | 2018-03-23 | 2020-11-10 | Toshiba Memory Corporation | Memory system, control method, and control device |
Families Citing this family (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8027194B2 (en) * | 1988-06-13 | 2011-09-27 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
KR101413736B1 (ko) | 2007-09-13 | 2014-07-02 | 삼성전자주식회사 | 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법 |
TWI375959B (en) * | 2007-11-06 | 2012-11-01 | Nat Univ Tsing Hua | Method for repairing memory and system thereof |
TWI352354B (en) * | 2007-12-31 | 2011-11-11 | Phison Electronics Corp | Method for preventing read-disturb happened in non |
JP2009244962A (ja) * | 2008-03-28 | 2009-10-22 | Toshiba Corp | メモリシステム |
US8190810B2 (en) * | 2008-04-18 | 2012-05-29 | Silicon Motion, Inc. | Non-volatile memory apparatus and method for accessing a non-volatile memory apparatus |
TWI364661B (en) * | 2008-09-25 | 2012-05-21 | Silicon Motion Inc | Access methods for a flash memory and memory devices |
US8370603B2 (en) * | 2008-12-23 | 2013-02-05 | Apple Inc. | Architecture for address mapping of managed non-volatile memory |
US8694718B2 (en) | 2008-12-30 | 2014-04-08 | Micron Technology, Inc. | Wear leveling for erasable memories |
US8438455B2 (en) * | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
US20100262773A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Data striping in a flash memory data storage device |
US8433845B2 (en) | 2009-04-08 | 2013-04-30 | Google Inc. | Data storage device which serializes memory device ready/busy signals |
US8327224B2 (en) | 2009-04-16 | 2012-12-04 | Micron Technology, Inc. | Data recovery in a solid state storage system |
US8321647B2 (en) | 2009-05-06 | 2012-11-27 | Apple Inc. | Multipage preparation commands for non-volatile memory systems |
US8438453B2 (en) * | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US8806144B2 (en) | 2009-05-12 | 2014-08-12 | Stec, Inc. | Flash storage device with read cache |
US8495332B2 (en) * | 2009-07-24 | 2013-07-23 | Apple Inc. | Controller for optimizing throughput of read operations |
US8176360B2 (en) | 2009-08-11 | 2012-05-08 | Texas Memory Systems, Inc. | Method and apparatus for addressing actual or predicted failures in a FLASH-based storage system |
US8189379B2 (en) | 2009-08-12 | 2012-05-29 | Texas Memory Systems, Inc. | Reduction of read disturb errors in NAND FLASH memory |
US7818525B1 (en) | 2009-08-12 | 2010-10-19 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US8489907B2 (en) | 2009-09-16 | 2013-07-16 | Apple Inc. | Method of selective power cycling of components in a memory device independently by reducing power to a memory array or memory controller |
US8838877B2 (en) * | 2009-09-16 | 2014-09-16 | Apple Inc. | File system derived metadata for management of non-volatile memory |
KR101662273B1 (ko) * | 2009-11-27 | 2016-10-05 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 마모도 관리 방법 |
US8230255B2 (en) * | 2009-12-15 | 2012-07-24 | International Business Machines Corporation | Blocking write acces to memory modules of a solid state drive |
TWI497293B (zh) * | 2009-12-17 | 2015-08-21 | Ibm | 固態儲存裝置內之資料管理 |
WO2011143292A1 (en) * | 2010-05-11 | 2011-11-17 | Ohio University | Biomarkers for detecting erythropoietin use in human subjects |
TWI490869B (zh) * | 2010-08-13 | 2015-07-01 | Mstar Semiconductor Inc | 應用於快閃記憶體的方法與相關的控制器 |
KR101800445B1 (ko) * | 2011-05-09 | 2017-12-21 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
US9086983B2 (en) * | 2011-05-31 | 2015-07-21 | Micron Technology, Inc. | Apparatus and methods for providing data integrity |
US9424128B2 (en) | 2011-08-12 | 2016-08-23 | Futurewei Technologies, Inc. | Method and apparatus for flexible RAID in SSD |
US9081663B2 (en) * | 2011-11-18 | 2015-07-14 | Stec, Inc. | Optimized garbage collection algorithm to improve solid state drive reliability |
US8645770B2 (en) * | 2012-01-18 | 2014-02-04 | Apple Inc. | Systems and methods for proactively refreshing nonvolatile memory |
US9337865B2 (en) | 2012-05-04 | 2016-05-10 | Seagate Technology Llc | Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders |
US9235346B2 (en) | 2012-05-04 | 2016-01-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Dynamic map pre-fetching for improved sequential reads of a solid-state media |
US9240245B1 (en) * | 2012-09-11 | 2016-01-19 | Sk Hynix Memory Solutions Inc. | Memory efficient triggers of read disturb checks in solid state storage |
US8839074B2 (en) | 2012-09-13 | 2014-09-16 | Sandisk Technologies Inc. | On chip data recovery for non-volatile storage |
US8930778B2 (en) | 2012-11-15 | 2015-01-06 | Seagate Technology Llc | Read disturb effect determination |
US9171620B2 (en) | 2012-11-29 | 2015-10-27 | Sandisk Technologies Inc. | Weighted read scrub for nonvolatile memory |
US11416340B1 (en) * | 2013-01-04 | 2022-08-16 | Pure Storage, Inc. | Storage system with multiple storage types in a vast storage network |
US10241866B2 (en) * | 2013-01-04 | 2019-03-26 | International Business Machines Corporation | Allocating rebuilding queue entries in a dispersed storage network |
US10204009B2 (en) * | 2013-01-04 | 2019-02-12 | International Business Machines Corporation | Prioritized rebuilds using dispersed indices |
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) |
US10642992B2 (en) * | 2013-01-04 | 2020-05-05 | Pure Storage, Inc. | Password augmented all-or-nothin transform |
US10013203B2 (en) * | 2013-01-04 | 2018-07-03 | International Business Machines Corporation | Achieving storage compliance in a dispersed storage network |
US9098205B2 (en) | 2013-01-30 | 2015-08-04 | Sandisk Technologies Inc. | Data randomization in 3-D memory |
US9349476B2 (en) * | 2013-02-21 | 2016-05-24 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for early detection of potential flash failures using an adaptive system level algorithm based on flash program verify |
US9575829B2 (en) | 2013-03-13 | 2017-02-21 | Sandisk Technologies Llc | Probability-based remedial action for read disturb effects |
KR102164630B1 (ko) | 2013-06-28 | 2020-10-12 | 삼성전자주식회사 | 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법 |
US9747993B2 (en) | 2013-08-13 | 2017-08-29 | Empire Technology Development Llc | Memory systems |
CN110175088B (zh) * | 2013-08-23 | 2022-11-11 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104425019B (zh) * | 2013-08-23 | 2018-07-06 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
KR102070667B1 (ko) | 2013-08-26 | 2020-01-29 | 삼성전자주식회사 | 비휘발성 메모리 장치의 구동 방법 |
US20150121156A1 (en) | 2013-10-28 | 2015-04-30 | Sandisk Technologies Inc. | Block Structure Profiling in Three Dimensional Memory |
GB201322075D0 (en) | 2013-12-13 | 2014-01-29 | Ibm | Device for selecting a level for at least one read voltage |
US9305663B2 (en) * | 2013-12-20 | 2016-04-05 | Netapp, Inc. | Techniques for assessing pass/fail status of non-volatile memory |
KR102069274B1 (ko) * | 2014-02-05 | 2020-01-22 | 삼성전자주식회사 | 메모리 제어 방법 |
US9570198B2 (en) * | 2014-05-16 | 2017-02-14 | SK Hynix Inc. | Read disturb detection |
KR20150140496A (ko) * | 2014-06-05 | 2015-12-16 | 삼성전자주식회사 | 실시간 데이터 복구를 위한 리드 리클레임 방법 및 그에 따른 메모리 시스템 |
US8918577B1 (en) | 2014-06-13 | 2014-12-23 | Sandisk Technologies Inc. | Three dimensional nonvolatile memory with variable block capacity |
US9251909B1 (en) | 2014-09-29 | 2016-02-02 | International Business Machines Corporation | Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory |
US9678827B2 (en) * | 2014-10-07 | 2017-06-13 | SK Hynix Inc. | Access counts for performing data inspection operations in data storage device |
KR102177421B1 (ko) * | 2014-10-15 | 2020-11-11 | 삼성전자주식회사 | 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 |
US10365859B2 (en) | 2014-10-21 | 2019-07-30 | International Business Machines Corporation | Storage array management employing a merged background management process |
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 |
US10339048B2 (en) | 2014-12-23 | 2019-07-02 | International Business Machines Corporation | Endurance enhancement scheme using memory re-evaluation |
US9990279B2 (en) | 2014-12-23 | 2018-06-05 | International Business Machines Corporation | Page-level health equalization |
JP2016212512A (ja) * | 2015-04-30 | 2016-12-15 | 富士通株式会社 | ストレージシステム、制御装置および制御プログラム |
JP6901831B2 (ja) | 2015-05-26 | 2021-07-14 | 株式会社半導体エネルギー研究所 | メモリシステム、及び情報処理システム |
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 |
US10108470B2 (en) | 2015-12-28 | 2018-10-23 | Sandisk Technologies Llc | Parity storage management |
KR20170086840A (ko) * | 2016-01-19 | 2017-07-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI599880B (zh) * | 2016-03-22 | 2017-09-21 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
US10303623B2 (en) * | 2016-04-08 | 2019-05-28 | Cryptography Research, Inc. | Non-volatile memory for secure storage of authentication data |
US10055159B2 (en) * | 2016-06-20 | 2018-08-21 | Samsung Electronics Co., Ltd. | Morphic storage device |
KR20180001711A (ko) | 2016-06-27 | 2018-01-05 | 삼성전자주식회사 | 저장 장치 |
US20170371559A1 (en) * | 2016-06-28 | 2017-12-28 | Sandisk Technologies Llc | Systems and Methods for Optimizing Media Read Times |
US10482983B2 (en) * | 2016-12-22 | 2019-11-19 | Seagate Technology Llc | Read disturb detection based on dynamic bit error rate estimation |
US10664402B2 (en) | 2017-01-27 | 2020-05-26 | Hewlett-Packard Development Company, L.P. | Read operation redirect |
KR20180106494A (ko) * | 2017-03-20 | 2018-10-01 | 에스케이하이닉스 주식회사 | 반도체장치 |
JP6797727B2 (ja) * | 2017-03-21 | 2020-12-09 | キオクシア株式会社 | 半導体記憶装置 |
KR20190001417A (ko) * | 2017-06-27 | 2019-01-04 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그 동작 방법 |
CN108182126B (zh) * | 2018-01-02 | 2020-11-20 | 联想(北京)有限公司 | 一种硬盘处理方法及电子设备 |
KR20200143912A (ko) * | 2019-06-17 | 2020-12-28 | 삼성전자주식회사 | 멀티-스트리밍을 지원하는 스토리지 장치 및 비휘발성 메모리 장치의 동작 제어 방법 |
CN111445931B (zh) * | 2020-03-11 | 2022-01-11 | 慧镕电子系统工程股份有限公司 | 一种固态硬盘的数据恢复方法及装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5909449A (en) * | 1997-09-08 | 1999-06-01 | Invox Technology | Multibit-per-cell non-volatile memory with error detection and correction |
US6973613B2 (en) * | 2002-06-28 | 2005-12-06 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure |
JP4256198B2 (ja) | 2003-04-22 | 2009-04-22 | 株式会社東芝 | データ記憶システム |
US7559004B1 (en) * | 2003-10-01 | 2009-07-07 | Sandisk Corporation | Dynamic redundant area configuration in a non-volatile memory system |
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 |
CN101243417B (zh) * | 2005-07-15 | 2011-05-04 | 松下电器产业株式会社 | 非易失性存储装置、存储控制器以及不良区域检测方法 |
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 |
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-05-16 JP JP2007130379A patent/JP2008287404A/ja active Pending
-
2008
- 2008-01-03 US US11/968,724 patent/US8281220B2/en active Active
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010052983A1 (ja) | 2008-11-10 | 2010-05-14 | 旭硝子株式会社 | 研磨用組成物および半導体集積回路装置の製造方法 |
JP2010152472A (ja) * | 2008-12-24 | 2010-07-08 | Mega Chips Corp | メモリシステムおよびコンピュータシステム |
JP2010198219A (ja) * | 2009-02-24 | 2010-09-09 | Toshiba Corp | メモリコントローラおよび半導体記憶装置 |
JP2011060217A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | データ蓄積装置及びデータ書込み/読出し方法 |
JP2011165063A (ja) * | 2010-02-12 | 2011-08-25 | Toshiba Corp | 半導体記憶装置 |
US8448034B2 (en) | 2010-02-12 | 2013-05-21 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US9165685B2 (en) | 2010-02-12 | 2015-10-20 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US9136020B2 (en) | 2010-02-12 | 2015-09-15 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US8788900B2 (en) | 2010-02-12 | 2014-07-22 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
JP2011180831A (ja) * | 2010-03-01 | 2011-09-15 | Toshiba Corp | 半導体記憶装置 |
JP2013542541A (ja) * | 2010-11-08 | 2013-11-21 | グリーンライアント リミテッド ライアビリティ カンパニー | データのブロックを不揮発性メモリデバイスに冗長方式で格納するためのメモリコントローラ及びメモリシステム |
US9129699B2 (en) | 2011-04-28 | 2015-09-08 | Hitachi, Ltd. | Semiconductor storage apparatus and method including executing refresh in a flash memory based on a reliability period using degree of deterioration and read frequency |
JP2014505941A (ja) * | 2011-04-28 | 2014-03-06 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
JP2012252557A (ja) * | 2011-06-03 | 2012-12-20 | Mega Chips Corp | メモリコントローラ |
US8725936B2 (en) | 2012-03-30 | 2014-05-13 | Hitachi, Ltd. | Storage system with flash memory, and storage control method |
WO2013145024A1 (en) | 2012-03-30 | 2013-10-03 | Hitachi, Ltd. | Storage system with flash memory, and storage control method |
US9032264B2 (en) | 2013-03-21 | 2015-05-12 | Kabushiki Kaisha Toshiba | Test method for nonvolatile memory |
JP2015118572A (ja) * | 2013-12-18 | 2015-06-25 | 富士通株式会社 | ストレージ制御装置、制御方法、および制御プログラム |
KR20160132814A (ko) * | 2014-03-17 | 2016-11-21 | 샌디스크 테크놀로지스 엘엘씨 | 메모리의 구획들 내에서의 판독 액세스들의 카운팅을 통한 비휘발성 메모리들 상에서의 판독 교란들의 검출 |
KR102042889B1 (ko) | 2014-03-17 | 2019-11-08 | 샌디스크 테크놀로지스 엘엘씨 | 메모리의 구획들 내에서의 판독 액세스들의 카운팅을 통한 비휘발성 메모리들 상에서의 판독 교란들의 검출 |
US9852023B2 (en) | 2015-02-26 | 2017-12-26 | Semiconductor Energy Laboratory Co., Ltd. | Memory system and information processing system |
WO2018163258A1 (ja) * | 2017-03-06 | 2018-09-13 | 株式会社日立製作所 | フラッシュメモリモジュール、ストレージシステム、及びフラッシュメモリの制御方法 |
US10803972B2 (en) | 2017-03-06 | 2020-10-13 | Hitachi, Ltd. | Flash memory module, storage system, and method of controlling flash memory |
US10831395B2 (en) | 2018-03-23 | 2020-11-10 | Toshiba Memory Corporation | Memory system, control method, and control device |
Also Published As
Publication number | Publication date |
---|---|
US20080288814A1 (en) | 2008-11-20 |
US8281220B2 (en) | 2012-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008287404A (ja) | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 | |
US10936394B2 (en) | Information processing device, external storage device, host device, relay device, control program, and control method of information processing device | |
US8972823B2 (en) | Error correcting for improving reliability by combination of storage system and flash memory device | |
US7984325B2 (en) | Storage control device, data recovery device, and storage system | |
JP4059472B2 (ja) | メモリカード及びメモリコントローラ | |
US10228990B2 (en) | Variable-term error metrics adjustment | |
US20090193058A1 (en) | System and method for providing copyback data integrity in a non-volatile memory system | |
KR20180008219A (ko) | Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법 | |
WO2018163258A1 (ja) | フラッシュメモリモジュール、ストレージシステム、及びフラッシュメモリの制御方法 | |
JP4775969B2 (ja) | 不揮発性記憶装置 | |
US20230359399A1 (en) | Ufs device for transmitting status information through afc frame and operating method thereof | |
JP2010079856A (ja) | 記憶装置およびメモリ制御方法 | |
US20240070062A1 (en) | Nonvolatile memory, memory system, and control method of nonvolatile memory | |
CN113936721A (zh) | 存储器系统、存储器装置和操作存储器装置的方法 | |
US11614886B2 (en) | Memory system and operating method thereof | |
US11443826B2 (en) | Storage area retirement in a storage device | |
JP2011018371A (ja) | メモリ記憶装置 | |
US11119853B2 (en) | Predicted error correction apparatus, operation method thereof and memory system using the same | |
US11348642B2 (en) | Memory system and control method thereof | |
US20230039982A1 (en) | Memory system and operating method of memory system | |
KR20230143048A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20220010789A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
KR20220081610A (ko) | 컨트롤러 및 상기 컨트롤러를 포함하는 메모리 시스템 | |
JP2013218565A (ja) | 記憶装置 |