(57)【要約】【課題】フラッシュメモリのリードディスターブは、読み出しの対象でないデータの破壊を伴うため、効率よい検査方法が求められる。また、検査の前に誤り訂正不可能なデータ破壊が起きる可能性がある。【解決手段】複数の記憶セルと、メモリコントローラと、を備える不揮発性データ記憶装置であって、前記メモリコントローラは、管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、第１管理領域について計数された前記データ読み出し処理の回数が第１閾値を超えた場合、前記第１管理領域内の前記記憶セルに記憶されたデータ及び誤り訂正符号を読み出し、前記読み出された誤り訂正符号を復号し、前記読み出されたデータに含まれる誤りの数が第２閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第１管理領域以外の前記管理領域に書き込む。【選択図】図６
2008287404.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性データ記憶装置であって、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記各記憶セルは、複数の管理領域のうち一つに含まれ、
前記各管理領域は、複数の前記記憶セルを含み、
前記メモリコントローラは、
前記複数の記憶セルに、データ及び前記データに基づいて算出された誤り訂正符号を書き込み、
前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、
前記複数の管理領域の一つである第１管理領域について計数された前記データ読み出し処理の回数が第１閾値を超えた場合、前記第１管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出し、
前記読み出された誤り訂正符号を復号し、
前記読み出されたデータに含まれる誤りの数が第２閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第１管理領域以外の前記管理領域に書き込むことを特徴とする不揮発性データ記憶装置。
【請求項２】
前記メモリコントローラは、
一つ以上の前記管理領域を含む消去ブロックごとに、前記消去ブロック内の記憶セルに対して実行されたデータ消去処理の回数を計数し、
前記第１管理領域を含む前記消去ブロックについて計数された前記データ消去処理の回数が第３閾値を超えた場合、前記第１閾値に代えて、前記第１閾値より小さい第４閾値を使用することを特徴とする請求項１に記載の不揮発性データ記憶装置。
【請求項３】
前記メモリコントローラは、
前記第１管理領域から読み出されたデータに含まれる誤りの数が前記第２閾値を超えたために、前記訂正されたデータを前記第１管理領域以外の前記管理領域に書き込む処理が実行された回数を計数し、
前記訂正されたデータを前記第１管理領域以外の前記管理領域に書き込む処理が実行された回数が第５閾値を超えた場合、前記第１閾値に代えて、前記第１閾値より小さい第６閾値を使用することを特徴とする請求項１に記載の不揮発性データ記憶装置。
【請求項４】
前記第１管理領域について計数された前記データ読み出し処理の回数が第７閾値を超えた場合、前記第１閾値に代えて、前記第１閾値より小さい第８閾値を使用することを特徴とする請求項１に記載の不揮発性データ記憶装置。
【請求項５】
前記複数の記憶セルは、ＮＡＮＤ型フラッシュメモリの記憶セルであり、
前記各管理領域は、直列に接続された複数の前記電界効果トランジスタ、及び、前記直列に接続された複数の電界効果トランジスタの各々が属するページに含まれる複数の前記電界効果トランジスタを含むことを特徴とする請求項１に記載の不揮発性データ記憶装置。
【請求項６】
前記不揮発性データ記憶装置は、前記不揮発性データ記憶装置に対してデータ書き込み要求及びデータ読み出し要求を送信するホスト装置に接続され、
前記メモリコントローラは、前記第１管理領域内の前記記憶セルから読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記誤り訂正符号の復号によって訂正できない誤りが書き込まれた領域のアドレスを示す情報を前記ホスト装置に送信することを特徴とする請求項１に記載の不揮発性データ記憶装置。
【請求項７】
複数の不揮発性データ記憶装置と、前記複数の不揮発性データ記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラと、を備えるストレージシステムであって、
前記ストレージコントローラは、前記複数の不揮発性データ記憶装置のうち少なくとも一つに、前記少なくとも一つを除く一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータを書き込み、
前記各不揮発性データ記憶装置は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記各記憶セルは、複数の管理領域のうち一つに含まれ、
前記各管理領域は、複数の前記記憶セルを含み、
前記メモリコントローラは、
前記ストレージコントローラから書き込みを要求されたデータ、及び、前記データに基づいて算出された誤り訂正符号を、前記複数の記憶セルに書き込み、
前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、
前記複数の管理領域の一つである第１管理領域について計数された前記データ読み出し処理の回数が第１閾値を超えた場合、前記第１管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出し、
前記読み出された誤り訂正符号を復号し、
前記読み出されたデータに含まれる誤りの数が第２閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第１管理領域以外の前記管理領域に書き込み、
前記読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域のアドレスを示す情報を送信し、
前記ストレージコントローラは、
前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域、及び、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを冗長化するデータが書き込まれた領域を対象とするデータ読み出し要求を前記複数の不揮発性データ記憶装置に送信し、
前記読み出し要求に応じて読み出されたデータに基づいて、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを復元し、
前記複数の不揮発性データ記憶装置に、前記復元されたデータ、及び、前記復元されたデータを冗長化するデータを書き込む要求を送信することを特徴とするストレージシステム。
【請求項８】
前記ストレージシステムは、前記複数の不揮発性データ記憶装置及び前記ストレージコントローラに接続される制御装置を備え、
前記メモリコントローラは、前記読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域のアドレスを示す情報を前記制御装置に送信し、
前記制御装置は、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域を対象とする読み出し要求を前記ストレージコントローラに送信し、
前記ストレージコントローラは、前記制御装置から受信した読み出し要求に応じて、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域、及び、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを冗長化するデータが書き込まれた領域を対象とするデータ読み出し要求を、前記複数の不揮発性データ記憶装置に送信することを特徴とする請求項７に記載のストレージシステム。
【請求項９】
前記一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータは、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータと同一のデータ、又は、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータに基づいて算出されたパリティであることを特徴とする請求項７に記載のストレージシステム。
【請求項１０】
ストレージシステムを制御する方法であって、
前記ストレージシステムは、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性データ記憶装置を備え、
前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、
前記各記憶セルは、複数の管理領域のうち一つに含まれ、
前記各管理領域は、複数の前記記憶セルを含み、
前記方法は、
前記メモリコントローラが、データ、及び、前記データに基づいて算出された誤り訂正符号を、前記複数の記憶セルに書き込む手順と、
前記メモリコントローラが、前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数する手順と、
前記メモリコントローラが、前記複数の管理領域の一つである第１管理領域について計数された前記データ読み出し処理の回数が第１閾値を超えた場合、前記第１管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出す手順と、
前記メモリコントローラが、前記読み出された誤り訂正符号を復号する手順と、
前記読み出されたデータに含まれる誤りの数が第２閾値を超えた場合、前記メモリコントローラが、前記誤り訂正符号を復号することによって訂正されたデータを、前記第１管理領域以外の前記管理領域に書き込む手順と、を含むことを特徴とする方法。
【請求項１１】
前記方法は、前記メモリコントローラが、一つ以上の前記管理領域を含む消去ブロックごとに、前記消去ブロック内の記憶セルに対して実行されたデータ消去処理の回数を計数する手順をさらに含み、
前記第１管理領域を含む前記消去ブロックについて計数された前記データ消去処理の回数が第３閾値を超えた場合、前記メモリコントローラが、前記第１閾値に代えて、前記第１閾値より小さい第４閾値を使用することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記方法は、前記メモリコントローラが、前記第１管理領域から読み出されたデータに含まれる誤りの数が前記第２閾値を超えたために、前記訂正されたデータを前記第１管理領域以外の前記管理領域に書き込む処理が実行された回数を計数する手順をさらに含み、
前記訂正されたデータを前記第１管理領域以外の前記管理領域に書き込む処理が実行された回数が第５閾値を超えた場合、前記メモリコントローラが、前記第１閾値に代えて、前記第１閾値より小さい第６閾値を使用することを特徴とする請求項１０に記載の方法。
【請求項１３】
前記第１管理領域について計数された前記データ読み出し処理の回数が第７閾値を超えた場合、前記メモリコントローラが、前記第１閾値に代えて、前記第１閾値より小さい第８閾値を使用することを特徴とする請求項１０に記載の方法。
【請求項１４】
前記複数の記憶セルは、ＮＡＮＤ型フラッシュメモリの記憶セルであり、
前記各管理領域は、直列に接続された複数の前記電界効果トランジスタ、及び、前記直列に接続された複数の電界効果トランジスタの各々が属するページに含まれる複数の前記電界効果トランジスタを含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記不揮発性データ記憶装置は、前記不揮発性データ記憶装置に対してデータ書き込み要求及びデータ読み出し要求を送信するホスト装置に接続され、
前記方法は、前記第１管理領域内の前記記憶セルから読み出されたデータが、前記誤り訂正符号の復号によって訂正できない誤りを含む場合、前記メモリコントローラが、前記誤り訂正符号の復号によって訂正できない誤りが書き込まれた領域のアドレスを示す情報を前記ホスト装置に送信する手順をさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１６】
前記ストレージシステムは、複数の前記不揮発性記憶装置を含み、
前記ホスト装置は、前記複数の不揮発性データ記憶装置に対してデータの書き込み要求及び読み出し要求を送信するストレージコントローラを含み、
前記ストレージコントローラは、前記複数の不揮発性データ記憶装置のうち少なくとも一つに、前記少なくとも一つを除く一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータを書き込み、
前記メモリコントローラが、前記データ、及び、前記データに基づいて算出された誤り訂正符号を、前記複数の記憶セルに書き込む手順は、前記ストレージコントローラから送信された前記データの書き込み要求に応じて実行され、
前記方法は、
前記ストレージコントローラが、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域、及び、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを冗長化するデータが書き込まれた領域を対象とするデータ読み出し要求を前記複数の不揮発性データ記憶装置に送信する手順と、
前記ストレージコントローラが、前記読み出し要求に応じて読み出されたデータに基づいて、前記誤り訂正符号の復号によって訂正できない誤りを含むデータを復元する手順と、
前記ストレージコントローラが、前記複数の不揮発性データ記憶装置に、前記復元されたデータ、及び、前記復元されたデータを冗長化するデータを書き込む要求を送信する手順と、をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記ホスト装置は、前記複数の不揮発性記憶装置及び前記ストレージコントローラに接続される制御装置をさらに含み、
前記方法は、
前記制御装置が、前記誤り訂正符号の復号によって訂正できない誤りが書き込まれた領域のアドレスを示す情報を受信する手順と、
前記制御装置が、前記誤り訂正符号の復号によって訂正できない誤りを含むデータが書き込まれた領域を対象とする読み出し要求を前記ストレージコントローラに送信する手順と、をさらに含み、
前記ストレージコントローラが、前記データ読み出し要求を前記複数の不揮発性データ記憶装置に送信する手順は、前記制御装置から受信した前記読み出し要求に応じて実行されることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記一つ以上の不揮発性データ記憶装置に書き込まれるデータを冗長化するデータは、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータと同一のデータ、又は、前記一つ以上の不揮発性データ記憶装置に書き込まれるデータに基づいて算出されたパリティであることを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、フラッシュメモリを用いた記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリには、リードディスターブと呼ばれる、読み出し動作に起因するデータ破壊が存在する。ＮＡＮＤ型フラッシュメモリでは、図１のように、フローティングゲートを備えるＦＥＴ（電界効果トランジスタ）がメモリセルとして配列される。横方向には数千個から数万個のメモリセルが並び、縦方向には数個から数十個のメモリセルが並んでいる。これらのメモリセルをひとつの固まりとして、複数個の固まりが消去単位等の管理単位を構成している。縦方向に配列されたメモリセルの各列は、ＦＥＴを直列接続することによって構成される。フローティングゲートへの電荷の出し入れは、ソース、ドレイン及びゲート電極に高電圧を加えることによる、フローティングゲートを囲む絶縁酸化膜の絶縁破壊又はトンネル効果を用いて行う。
【０００３】
データの読み出し時には、選択しているＦＥＴ（すなわち、これからデータを読み出そうとするＦＥＴ）のゲート電極に０ｖを、他のＦＥＴのゲート電極にＶｃｃ（電源電圧）を印加する。このとき、選択されていない他のＦＥＴのゲート電極にかかるＶｃｃによって、絶縁酸化膜への電圧ストレスが発生し、その結果ＦＥＴのしきい値電圧が変化する現象がおきる。書き込み電圧や消去電圧に比べると、Ｖｃｃは低い電圧である。しかし、メモリセルの微細化が進むと、半導体内の電界強度は大きくなるため、電圧印加時の絶縁酸化膜への電圧ストレスも大きくなる。
【０００４】
このように、選択されていないメモリセルのＦＥＴのしきい値電圧が変化して行く。このため、このようにしきい値電圧が変化したメモリセルのＦＥＴを選択し、記憶されたデータを読み出すときには、誤ったデータが読み出される場合がある。
【０００５】
このようなデータの誤りを防ぐ技術として、例えば特許文献１が開示されている。特許文献１には、ホストから要求されたデータをリードし、リードしたデータに対して、誤り訂正符号を用いて、誤り検出及び誤り訂正を行い、誤りの程度を判断し、誤り訂正不可能になる前に、該当ページをリフレッシュする技術が開示されている。
【特許文献１】特開２００４−３２６８６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
リードが頻繁に起きるページの近くに、アクセスされない有効データを保持するページが存在すると、そのページの有効データは、ホストからアクセスされる前に、リードディスターブにより、誤り訂正不可能なまでにデータが破壊される場合がある。このような場合、上記特許文献１では、誤り訂正不可能になる前に該当ページをリフレッシュすることができない。
【０００７】
また、誤り訂正符号では、誤り訂正可能なビット数などに限界があり、訂正可能な誤りビット数以上にデータが破壊されると、フラッシュメモリ単体に記憶されている情報に基づいてデータを回復する手段がなくなる。
【課題を解決するための手段】
【０００８】
本願で開示する代表的な発明は、複数の記憶セルと、前記複数の記憶セルに接続され、前記複数の記憶セルに対するデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性データ記憶装置であって、前記各記憶セルは、フローティングゲートを備える電界効果トランジスタであり、前記各記憶セルは、複数の管理領域のうち一つに含まれ、前記各管理領域は、複数の前記記憶セルを含み、前記メモリコントローラは、前記複数の記憶セルに、データ及び前記データに基づいて算出された誤り訂正符号を書き込み、前記管理領域ごとに、前記管理領域内の記憶セルに対して実行されたデータ読み出し処理の回数を計数し、前記複数の管理領域の一つである第１管理領域について計数された前記データ読み出し処理の回数が第１閾値を超えた場合、前記第１管理領域内の前記記憶セルに記憶された前記データ及び前記誤り訂正符号を読み出し、前記読み出された誤り訂正符号を復号し、前記読み出されたデータに含まれる誤りの数が第２閾値を超えた場合、前記誤り訂正符号を復号することによって訂正されたデータを、前記第１管理領域以外の前記管理領域に書き込むことを特徴とする。
【発明の効果】
【０００９】
本発明の一実施形態によれば、リードアクセスのみが頻繁に行われる第１のデータの近傍に、リードもライトも行われない第２のデータが存在している状態で、リードディスターブが発生し、第２のデータが破壊されたとしても、第２のデータの破壊が進行する前に、対象管理単位を検査し、誤り訂正等によってデータが復元される。このため、データの信頼性を確保できる。
【００１０】
本発明の一実施形態によれば、消去単位であるブロック毎に使用できなくなるフラッシュメモリを有効に使用することが可能になる。
【発明を実施するための最良の形態】
【００１１】
最初に、本発明の実施形態の概要を説明する。
【００１２】
上記の課題を解決するために、フラッシュメモリのコントローラ（フラッシュメモリコントローラ）は、リードによるデータ破壊が発生するメモリセルの範囲を、リードディスターブ管理単位（リードディスターブ管理領域）として管理する。フラッシュメモリコントローラは、リードディスターブ管理単位毎に、その管理単位に含まれるメモリセルへのリードアクセス回数を計数する。その回数が所定の回数ｍ以上に達したら、フラッシュメモリコントローラは、所定の回数ｎ毎に、リードディスターブ管理単位内の有効ページを読み出す。誤り検出回路が読み出されたデータの誤りを検出したら、フラッシュメモリコントローラは、誤り訂正回路が訂正したデータを、新しいページに書き込む。
【００１３】
また、リードディスターブは、消去回数が多いブロックほど発生しやすくなるため、所定の回数ｍは、消去単位（すなわちブロック）の消去回数と関連付けて制御される。具体的には、消去回数が大きくなると、ｍが小さくなるように制御される。なお、消去単位であるブロックは、一つ以上のリードディスターブ管理単位を含む。
【００１４】
さらに、消去回数だけでなく、リードディスターブ発生回数に基づいて、ブロックの使用可否判断が実行される。
【００１５】
また、リードディスターブによって、フラッシュメモリコントローラ内での誤り訂正によって復元できない程度の誤りが発生した場合、フラッシュメモリコントローラは、誤り箇所を含む領域のアドレス情報（例えば、論理ブロックアドレス）等の情報をＲＡＩＤコントローラへ送信する。ＲＡＩＤコントローラは、複数のフラッシュドライブを用いたＲＡＩＤ技術を用いてデータを復元し、復元したデータをフラッシュメモリに書き戻す。
【００１６】
このために、フラッシュメモリコントローラから、非同期にＲＡＩＤコントローラに対して、割り込み信号等の情報を伝達する手段が設けられる。
【００１７】
あるいは、フラッシュメモリコントローラによる復元が不可能なデータが検出された場合、そのデータに関する情報を取得した制御装置が、ＲＡＩＤコントローラに対して、該当データの回復を指示してもよい。
【００１８】
以下、本発明の実施形態の詳細を説明する。
【００１９】
最初に、本発明の第１の実施形態を、図１，２，３，７，８，１０，１１，１２Ａ，１２Ｂ，１３Ａ，１３Ｂ及び１４を参照して説明する。
【００２０】
図１は、本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリのメモリセルの説明図である。
【００２１】
図１に示すように、ＮＡＮＤ型フラッシュメモリのメモリセルは、横方向に１６８９６個程度、縦方向に１６個程度並んでいる。横方向の１列ごとに読み出し及び書き込みが実行される場合が多いため、このような各列がページと呼ばれる管理単位として扱われる。縦方向の１列は、フローティングゲートを備えるＦＥＴが、１６個程度直列に接続されたものである。この直列に接続されているＦＥＴの間でリードディスターブが発生するため、１６ページの範囲にリードディスターブの影響が及ぶ。また、データの消去単位であるブロックは、６４ページ程度で構成されている。
【００２２】
後に図２を参照して説明するように、リードディスターブの影響が及ぶ範囲は、リードディスターブ管理領域２０３として管理される。すなわち、各リードディスターブ管理領域２０３は、直列に接続されたＦＥＴ、及び、それらのＦＥＴの各々が属するページに含まれるＦＥＴからなる。
【００２３】
ＮＡＮＤ型フラッシュメモリへのアクセスは、コマンド及びアドレスを与えることによって実行される。アドレスは、列アドレス、行アドレスの順に与えられる。行アドレスは、ブロックアドレス及びページアドレスを含む。具体的には、行アドレスの上位側でブロックが指定され、下位側でページが指定される。
【００２４】
半導体チップ上のメモリセルの配置及び管理単位は、メーカ毎に異なることがある。このため、上記のメモリセルの個数及びリードディスターブの影響範囲は一例である。メモリセルの個数及びリードディスターブの影響範囲等が上記と異なる場合であっても、本発明を適用することができる。
【００２５】
図８は、本発明の第１の実施形態のフラッシュドライブ５０２の構成を示すブロック図である。
【００２６】
フラッシュドライブ５０２は、データ記憶素子としてＮＡＮＤ型フラッシュメモリを採用した不揮発性データ記憶装置である。フラッシュドライブ５０２は、例えば図８に示すように、フラッシュメモリコントローラ５０３、及び、フラッシュメモリコントローラ５０３に接続された複数のフラッシュメモリ５０４を備える。フラッシュメモリコントローラ５０３は、情報伝達手段５０５を介してフラッシュドライブ５０２の外部と情報をやり取りする。また、フラッシュメモリコントローラ５０３は、情報伝達手段６０４等を介してリードディスターブに関する情報を出力する。フラッシュメモリコントローラ５０３とフラッシュメモリ５０４は、フラッシュメモリインタフェース部７０５及び接続線７０８を介して接続される。
【００２７】
図７は、本発明の第１の実施形態のフラッシュメモリコントローラ５０３の構成を示すブロック図である。
【００２８】
フラッシュメモリコントローラ５０３は、例えば図７に示すように、マイクロプロセッサ（ＭＰＵ）７０１、ＲＡＭ７０２、ＲＯＭ７０３、ホストインタフェース部（ＨＯＳＴ  Ｉ／Ｆ）７０４及びフラッシュメモリインタフェース部（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｉ／Ｆ）７０５を備える。マイクロプロセッサ７０１、ＲＡＭ７０２、ＲＯＭ７０３、ホストインタフェース部７０４及びフラッシュメモリインタフェース部７０５は、マイクロプロセッサのバス７０６によって相互に接続される。一方、ホストインタフェース部７０４及びフラッシュメモリインタフェース部７０５は、高速にデータを転送する専用バス７０７によって相互に接続される。
【００２９】
マイクロプロセッサ７０１は、ＲＯＭ７０３に格納されたプログラムを実行する。
【００３０】
ＲＡＭ７０２は、マイクロプロセッサ７０１がワークエリア及びフラッシュメモリ管理情報を格納するランダムアクセスメモリである。
【００３１】
ＲＯＭ７０３は、マイクロプロセッサ７０１によって実行されるプログラムを格納する読み出し専用メモリである。ＲＯＭには、例えば、フラッシュメモリインタフェース部７０５又はホストインタフェース部７０４等を制御管理するプログラムが格納される。
【００３２】
ホストインタフェース部７０４は、外部ホスト（図示省略）と接続され、外部ホストとマイクロプロセッサ７０１との間の通信に使用されるインタフェースである。外部ホストは、フラッシュドライブ５０２に対してデータの書き込み及び読み出し要求を送信する装置である。種々の装置が外部ホストとしてホストインタフェース部７０４に接続され得る。
【００３３】
例えば、外部ホストは、ディジタル画像記録装置又はディジタル音声記録装置であってもよい。その場合、フラッシュドライブ５０２は、例えば、それらの装置に使用されるメモリカードである。
【００３４】
あるいは、フラッシュドライブ５０２がハードディスクドライブ（ＨＤＤ）（図示省略）を置き換えるデータ記憶装置として使用される場合、外部ホストは、ＨＤＤに対するデータ書き込み及び読み出し要求を送信する計算機又はＲＡＩＤコントローラ（後述）であってもよい。その場合、ホストインタフェース部７０４は、例えばＳＣＳＩ又はファイバーチャネル（ＦＣ）等のプロトコルに基づいて外部ホストと通信する。
【００３５】
フラッシュメモリインタフェース部７０５は、フラッシュメモリチップ２０１を駆動する信号を制御し、マイクロプロセッサ７０１からの要求に従ってフラッシュメモリをアクセスする。
【００３６】
以下の説明においてフラッシュメモリコントローラ５０３が実行する処理は、より正確には、ＭＰＵ７０１がＲＡＭ７０２又はＲＯＭ７０３に格納されたプログラムを実行し、ＲＡＭ７０２、ＲＯＭ７０３、ホストインタフェース部７０４及びフラッシュメモリインタフェース部７０５を制御することによって実行される。
【００３７】
図２は、本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリの管理領域の説明図である。
【００３８】
図２のフラッシュメモリチップ２０１は、図８のフラッシュメモリ５０４に相当する。図２に示すように、フラッシュメモリチップ２０１内の記憶領域は、複数のブロック２０２に分割されている。各ブロック２０２は、データの消去単位である。すなわち、フラッシュメモリチップ２０１内に書き込まれたデータは、ブロック２０２ごとに消去される。ブロック２０２内は、複数のリードディスターブ管理領域２０３に分割される。各リードディスターブ管理領域２０３は、複数のページ２０４に分割される。各ページ２０４は、データの読み出し及び書き込みの単位である。すなわち、データの読み出し及び書き込みは、ページ２０４ごとに実行される。
【００３９】
ここで、複数のページ２０４のうちの一つであるページ２０４Ａが繰り返し読み出されると、当該ページ２０４Ａに属するＦＥＴと直列接続されたＦＥＴで構成されるメモリセルを含むリードディスターブ管理領域２０３内の他のページ２０４にリードディスターブが発生し、その結果、データ化け（すなわちリードディスターブ発生ビット）２０５が発生する。
【００４０】
このリードディスターブは、ゲート、ソース及びドレインに印加される電圧によるストレスによって、フローティングゲートを備えるＦＥＴのしきい値電圧が次第に変化することによって引き起こされる。よって、ストレスがかかる回数及び時間によって、しきい値電圧の変化の割合が変わってくる。つまり、消去回数、書き込み回数及び読み出し回数によって、しきい値電圧の変化の割合が変化することになる。
【００４１】
フラッシュメモリにおいては、あるメモリセルにデータを書き込むと、そのデータを消去しない限り、そのメモリセルに新たなデータを書き込むことができない。このため、１ブロック２０２内の全てのページ２０４に対する書き込みが終了した後、そのブロック２０２を消去せずにブロック２０２内のページ２０４に対して書き込み動作が行われることはない。よって、消去回数及び読み出し回数が大きなストレス要因となる。
【００４２】
そこで、図３に示すように、従来から管理されている、ページ単位の管理情報３０１及びブロック単位の管理情報３０２に加えて、リードディスターブ管理領域単位の管理情報３０３を設けて、リードディスターブ管理領域２０３内のページ２０４に対する読み出し回数を管理する。
【００４３】
図３は、本発明の第１の実施形態における管理領域ごとの管理情報の説明図である。
【００４４】
ページ単位の管理情報３０１は、各ページの論理アドレス情報及び誤り訂正情報を含む。誤り訂正情報は、各ページに属するメモリセルが保持する値に基づいて生成された誤り訂正符号（ＥＣＣ）を含む。ブロック単位の管理情報３０２は、各ブロックの消去回数を含む。これらの管理情報は、従来から管理されているものである。
【００４５】
本実施の形態で新たに追加されたリードディスターブ管理領域単位の管理情報３０３は、各リードディスターブ管理領域２０３内のページ２０４に対する読み出し回数を含む。
【００４６】
この読み出し回数が所定のしきい値を超えると、フラッシュメモリコントローラ５０３は、リードディスターブ検査を実行する。リードディスターブ検査とは、フラッシュメモリコントローラ５０３がリードディスターブ管理領域２０３内の全ページ２０４を順次読み出し、ページ２０４又はページ２０４を構成するセクタ（図示省略）ごとに設定される誤り訂正符号を用いて誤り検出を行うことによって、リードディスターブが発生しているか否かを判定する処理である。
【００４７】
リードディスターブ検査は、あるリードディスターブ管理領域２０３単位の各ページ２０４を順次検査する処理であるため、多少の時間を必要とする。よって、リードディスターブ検査中に、ＲＡＩＤコントローラ（後述）等の外部ホストからフラッシュメモリチップ２０１に対するアクセスが来ることがある。このような場合には、外部ホストへのレスポンスを早くする必要があるため、フラッシュメモリコントローラ５０３は、外部ホストからのアクセスを優先して処理する。
【００４８】
このとき、フラッシュメモリコントローラ５０３は、ページ２０４又はセクタ内の誤りビット数及び誤りが検出されたページ数に基づいて、リードディスターブ管理領域２０３内の全ページ２０４をリフレッシュするか否かを判定する。具体的には、例えば、あるリードディスターブ管理領域２０３において、所定のしきい値を超える数の誤りビットを含むページ２０４の数が、別の所定のしきい値を超える場合、そのリードディスターブ管理領域２０３内の全ページ２０４をリフレッシュすると判定されてもよい。ここで言うリフレッシュとは、リードディスターブ管理領域２０３内の全ページ２０４を読み出し、誤りビットが存在する場合にはそれを訂正し、読み出された（又は訂正された）ページ２０４を、消去済みの別のリードディスターブ管理領域２０３へコピーすることである。
【００４９】
フラッシュメモリコントローラ５０３は、リフレッシュを実行した後、リードディスターブ管理領域２０３ごとの管理情報３０３（すなわち読み出し回数）をゼロクリアし、改めてリードディスターブ管理領域２０３内のページ２０４への読み出し回数を管理する。
【００５０】
このリフレッシュ動作と、ＲＡＩＤコントローラ等の外部ホストからのアクセスが競合した場合、フラッシュメモリコントローラ５０３は、リフレッシュ動作を優先して処理する。
【００５１】
リードディスターブの発生しやすさは、読み出し回数だけでなく、消去回数にも依存する。すなわち、これまでに消去された回数が多いブロック２０２内のページほど、少ない読み出し回数でリードディスターブが発生しやすくなる。このため、リードディスターブ検査を実行するか否かを判定するための読み出し回数のしきい値は、消去回数が増えるほど小さくなるように設定されてもよい。
【００５２】
例えば、フラッシュメモリ素子自体に設定された消去可能回数をｎ回とすると、表１のように、消去回数０．５ｎ回未満のブロック２０２内のリードディスターブ管理領域２０３では、１００億回の読み出し毎に、リードディスターブ検査が実行される（表１の読み出し回数ａ参照）。なお、表１には、ｎが１０００００回である場合を例として示す。同様にして、消去回数０．５ｎ回以上０．８ｎ回未満のブロック２０２内のリードディスターブ管理領域２０３では、１億回の読み出し毎に、リードディスターブ検査が実行される。消去回数０．８ｎ回以上０．９ｎ回未満のブロック２０２内のリードディスターブ管理領域２０３では、１００万回の読み出し毎に、リードディスターブ検査が実行される。消去回数０．９ｎ回以上ｎ回以下のブロック２０２内のリードディスターブ管理領域２０３では、１万回の読み出し毎に、リードディスターブ検査が実行される。ｎ回消去されたブロックは、使用禁止とされる。このように、消去回数によって、リードディスターブ検査を実行するためのしきい値を変化させることによって、リードディスターブによる誤りが、誤り訂正能力ビット数以上に増えてしまうことを極力避け、かつ、リードディスターブ検査自体の頻度を極力減らすことができる。
【００５３】
さらに、読み出し回数がしきい値ａ回を超えたリードディスターブ管理領域２０３では、その後、ａ＞ｂであるｂ回の読み出し回数毎に、リードディスターブ検査が実行されてもよい（表１の読み出し回数ｂ参照）。
【００５４】
例えば、消去回数０．５ｎ回（すなわち５００００回）未満のブロック２０２内のリードディスターブ管理領域２０３では、１００億回の読み出しが実行された時点でリードディスターブ検査が実行され（表１の読み出し回数ａ参照）、その後、読み出しが１０億回実行されるごとに、リードディスターブ検査が実行されてもよい（表１の読み出し回数ｂ参照）。一方、消去回数が１０００００回に達したブロック２０２内のリードディスターブ管理領域２０３では、その後１００００回の読み出しが実行された時点でリードディスターブ検査が実行され、その後、読み出しが１０００回実行されるごとに、リードディスターブ検査が実行されてもよい。
【００５５】
このように、消去回数が所定のしきい値（例えば、０．５ｎ回等）を超えた場合に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値は、消去回数がその所定のしきい値より小さい場合に使用される読み出し回数のしきい値より小さくなる。さらに、読み出し回数が所定のしきい値（例えば、１００億回）を超えた後に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値（例えば、１０億回）は、読み出し回数が所定のしきい値（例えば、１００億回）を超える前に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値（例えば、１００億回）より小さくなる。
【００５６】
これらの、消去回数とリードディスターブ検査しきい値の関係を示す情報（表１）は、ＲＯＭ７０３に格納される。
【００５７】
【表１】
2008287404.tif 000003
【００５８】
さらに、リードディスターブを検知した場合、そのリードディスターブ管理領域のリフレッシュ（すなわちコピー）が必要になる。その場合、フラッシュメモリコントローラ５０３は、コピー先として、消去回数が少なく、リードディスターブが発生しにくいリードディスターブ管理領域２０３を優先的に選択する。あるリードディスターブ管理領域２０３においてリードディスターブを検知したことは、その領域においてリードの割合が極端に大きく、ライトがほとんど行われていないことを示す。このため、消去回数平準化のためのリフレッシュとは異なり、リードディスターブが発生した領域のリフレッシュ先として、消去回数が少なく、かつ、リードディスターブを発生させていないリードディスターブ管理領域２０３が優先的に選択される。
【００５９】
これらの、リードディスターブ管理単位（すなわちリードディスターブ管理領域２０３）又は消去単位（すなわちブロック２０２）ごとに管理されるデータは、フラッシュドライブ５０２への電力供給が停止してもデータを保持し続ける不揮発性メモリに格納されてもよい。あるいは、フラッシュドライブ５０２への電力供給が停止しても、それらのデータのうち最低限の情報をフラッシュメモリの専用領域に書き込む時間動作し続けるのに十分な電力をバッテリ等で確保してもよい。
【００６０】
図１０は、本発明の第１の実施形態のフラッシュメモリ内のデータ構造の説明図である。
【００６１】
実際のフラッシュメモリチップ２０１には、例えば図１０に示すように、５１２バイトのデータ領域１００１毎に、１６バイトの制御情報領域１００２が存在する。この制御情報領域１００２に、ページ２０４毎の論理アドレス１００３、ページ単位の情報１００４及び誤り訂正符号（ＥＣＣ）１００５がデータとともに格納される。ページ単位の情報１００４は、ページ２０４が有効であるか無効であるかを示す情報、及び、ブロック２０２内のページ２０４のアドレスを示す情報を含む。誤り訂正符号１００５は、データ領域１００１に格納されたデータに基づいて算出される。フラッシュメモリコントローラ５０３は、誤り訂正符号１００５を復号することによって、データ領域１００１に発生しているビット誤りの数を判定することができる。
【００６２】
さらに、制御情報領域１００２には、リードディスターブ管理領域２０３毎に、リードディスターブ発生回数１００６が格納され、ブロック２０２毎に、消去回数１００７が格納される。リードディスターブ発生回数１００６及び消去回数１００７のように、複数ページ２０４毎に管理される情報は、各ページ２０４のための１６バイトの管理領域の一部を集めた領域に格納されてもよい。
【００６３】
論理アドレス１００３、ページ単位の情報１００４及び誤り訂正符号（ＥＣＣ）１００５は、図３のページ単位の管理情報３０１に相当する。消去回数１００７は、図３の消去回数３０２に相当する。リードディスターブ発生回数１００６は、後に第２の実施形態において説明する図４のリードディスターブ発生回数４０１に相当する。
【００６４】
図１１は、本発明の第１の実施形態のフラッシュメモリ内のデータ構造を示す別の説明図である。
【００６５】
リードディスターブ管理領域２０３毎の読み出し回数及びリードディスターブ発生回数は、原則としてＲＡＭ７０２内に保存される。しかし、一般的なＲＡＭは電源を切断されるとデータを保持できない。このため、フラッシュドライブ５０２の内部又は外部にバッテリ又は大容量のコンデンサ等が設けられてもよい。例えば、図１１に示すようにフラッシュメモリチップ２０１の記憶領域の一部に管理情報領域１１０１を設ける。フラッシュメモリコントローラ５０３は、電源切断を検出した場合、バッテリ等から供給される電力を使用して、管理情報領域１１０１へ、リードディスターブ管理領域２０３毎の読み出し回数１１０３及びブロック２０２毎のリードディスターブ発生回数１１０２を格納する。あるいは、ＲＡＭ７０２自体に不揮発性のＲＡＭを用いてもよい。
【００６６】
上記のような電源切断検出後の処理は、ＭＰＵ７０１の割り込み処理等を用い、早急に実行される。管理情報領域１１０１は、一つのフラッシュメモリチップ２０１に設けられてもよいし、複数のフラッシュメモリチップ２０１へ分散して設けられてもよい。
【００６７】
ＭＰＵが管理する情報は、例えば図１２Ａ及び図１２Ｂに示すように、論理アドレス−物理アドレス変換テーブル１２００及びフラッシュメモリ情報管理テーブル１２１０を含む。これらのテーブルは、ＲＡＭ７０２内に格納される。
【００６８】
図１２Ａは、本発明の第１の実施形態のＭＰＵ７０１が管理する論理アドレス−物理アドレス変換テーブル１２００の説明図である。
【００６９】
論理アドレス−物理アドレス変換テーブル１２００は、フラッシュドライブ５０２の外部ホストから示される論理アドレス１２０１を、そのアドレスに対応するデータが格納されているフラッシュメモリチップ２０１及びそのフラッシュメモリチップ２０１内の位置を示す物理アドレス１２０２へ変換する。
【００７０】
アドレスは、ブロック２０２ごとに管理される。すなわち、論理アドレス１２０１及び物理アドレス１２０２は、ブロック２０２のアドレスである。ブロック２０２内の各ページ２０４のアドレスは、ページ単位の管理情報１２０３として、ページの有効／無効等を示す情報と共に管理されてもよい。
【００７１】
図１２Ｂは、本発明の第１の実施形態のＭＰＵ７０１が管理するフラッシュメモリ情報管理テーブル１２１０の説明図である。
【００７２】
フラッシュメモリ情報管理テーブルには、各フラッシュメモリの管理単位毎に、論理アドレス１２１２、ページ単位の管理情報１２１３、消去回数１２１４、リードディスターブ発生回数１２１５及び読み出し回数１２１６等が、物理アドレス１２１１と対応付けて格納される。
【００７３】
物理アドレス１２１１、論理アドレス１２１２及びページ単位の管理情報１２１３は、それぞれ、図１２Ａの物理アドレス１２０２、論理アドレス１２０１及びページ単位の管理情報１２０３と同様である。すなわち、物理アドレス１２１１及び論理アドレス１２１２は、消去単位であるブロック２０２のアドレスである。
【００７４】
消去回数１２１４は、物理アドレス１２１１によって識別される各ブロック２０２において過去に実行された消去処理の回数である。消去回数１２１４は、図３の消去回数３０２に相当する。消去回数１２１４はゼロクリアされないため、累積される。
【００７５】
リードディスターブ発生回数１２１５は、物理アドレス１２１１によって識別される各ブロック２０２において過去に発生したリードディスターブの発生回数である。リードディスターブ発生回数１２１５はゼロクリアされないため、累積される。なお、第１の実施形態のフラッシュメモリ情報管理テーブル１２１０は、リードディスターブ発生回数１２１５を含まなくてもよい。リードディスターブ発生回数１２１５に基づく処理については、本発明の第２の実施形態において説明する。
【００７６】
一つの物理アドレス１２１１に対応する複数の読み出し回数１２１６は、物理アドレス１２１１によって識別されるブロック２０２に含まれる複数のリードディスターブ管理領域２０３に対して実行された読み出し処理の回数である。読み出し回数１２１６は、図３の読み出し回数３０３に相当する。読み出し回数１２１６は、リフレッシュ処理によってリードディスターブ管理領域２０３の全データがコピーされたとき、ゼロクリアされる。
【００７７】
論理アドレス−物理アドレス変換テーブル１２００及びフラッシュメモリ情報管理テーブル１２１０は、ＲＡＭ７０２に格納されるため、電源を切断されると、格納データが消去される。そのため、電源投入時に、ＭＰＵ７０１は、フラッシュメモリ５０４の制御情報領域１００２及び管理情報領域１１０１を読み出し、論理アドレス−物理アドレス変換テーブル１２００及びフラッシュメモリ情報管理テーブル１２１０を構築し、構築したテーブルをＲＡＭ７０２に格納する。
【００７８】
次に、フラッシュメモリコントローラ５０３が実行する処理のフローを、図１３Ａ、図１３Ｂ及び図１４を参照して説明する。
【００７９】
図１３Ａは、本発明の第１の実施形態のフラッシュメモリコントローラ５０３が、フラッシュドライブ５０２の電源投入時に実行する処理のフローチャートである。
【００８０】
最初に、フラッシュメモリコントローラ５０３は、フラッシュメモリチップの制御情報領域を読み出す（ステップ１３０１）。
【００８１】
次に、フラッシュメモリコントローラ５０３は、各物理フラッシュメモリの消去単位であるブロック２０２が割り当てられている論理アドレス、及び、ブロック２０２内の各ページ２０４の論理アドレスを読み出し、それらのアドレスに基づいて、論理アドレス−物理アドレス変換テーブル１２００、及び、フラッシュメモリ情報管理テーブル１２１０のカラム１２１１から１２１３を構築する（ステップ１３０２）。カラム１２１１から１２１３は、論理アドレス−物理アドレス変換テーブル１２００と同等の情報を含む。ステップ１３０１及びステップ１３０２は、全てのフラッシュメモリの制御情報を読み出すまで繰り返される（ステップ１３０３）。
【００８２】
続いて、フラッシュメモリコントローラ５０３は、一部のフラッシュメモリに割り当てられている管理情報領域１１０１を参照して、リードディスターブ管理単位毎の読み出し回数１１０３及び発生回数１１０２を読み出し（ステップ１３０４）、読み出された値をフラッシュメモリ情報管理テーブル１２１０の読み出し回数１２１６及び発生回数１２１５として追加する（ステップ１３０５）。
【００８３】
次に、フラッシュメモリコントローラ５０３は、前回の最終処理状況を読み出し（ステップ１３０６）、エラーがあるか否かを判定する（ステップ１３０７）。ステップ１３０７においてエラーがあると判定された場合、フラッシュメモリコントローラ５０３は、読み出された前回の最終処理状況をステータスへ反映し（ステップ１３０８）、処理を終了する。一方、ステップ１３０７においてエラーがないと判定された場合、フラッシュメモリコントローラ５０３は、ステップ１３０８を実行せずに処理を終了する。
【００８４】
以上の一連の処理終了後、フラッシュメモリコントローラ５０３は、情報伝達手段５０５を通して外部ホストから来るコマンドを待ち、そのコマンドを処理する動作を繰り返す。
【００８５】
図１３Ｂは、本発明の第１の実施形態のフラッシュメモリコントローラ５０３が、フラッシュドライブ５０２の電源切断時に実行する処理のフローチャートである。
【００８６】
フラッシュドライブ５０２の電源投入後、一度もフラッシュメモリ５０４への書き込みが行われずに、読み出しのみが行われた後、電源が切断される場合も考えられる。この場合、読み出し回数１２１６が更新されている。しかし、フラッシュメモリ情報管理テーブル１２１０は揮発性のメモリ（すなわちＲＡＭ７０２）に格納されているため、フラッシュドライブ５０２の電源が切断されると、更新された読み出し回数１２１６が消えてしまう。このため、フラッシュメモリコントローラ５０３は、フラッシュドライブ５０２の外部からの電力供給の切断を検知したら、その時点で実行中の処理を中断する（ステップ１３１１）。そして、フラッシュメモリコントローラ５０３は、処理中断の状況を保存する（ステップ１３１２）。
【００８７】
次に、フラッシュメモリコントローラ５０３は、読み出し回数１２１６を不揮発性のフラッシュメモリ５０４の管理情報領域１１０１へ書き込む（ステップ１３１３）。外部からの電力供給が切断された後、管理情報領域１１０１への読み出し回数１２１６の書き込みが終了するまでの電力は、フラッシュドライブ５０２が備えるバッテリ（図示省略）又は大容量のコンデンサ（図示省略）等から供給される。
【００８８】
次に、フラッシュメモリコントローラ５０３が実行する書き込み及び読み出し処理について説明する。
【００８９】
フラッシュメモリコントローラ５０３は、外部ホストから書き込みコマンド及び書き込み対象データを受信すると、その対象データに基づいて誤り訂正符号を算出する。そして、フラッシュメモリコントローラ５０３は、対象データ及び誤り訂正符号を、書き込みコマンドによって指定されたアドレスのデータ領域１００１及び制御情報領域１００２（より詳細には、誤り訂正符号１００５）に格納する。これらの処理は、従来技術と同様であるため、詳細な説明を省略する。
【００９０】
図１４は、本発明の第１の実施形態のフラッシュメモリコントローラ５０３が実行する読み出し処理のフローチャートである。
【００９１】
図１４は、リードディスターブ検査によって、各ページ２０４のデータを順次読み出し、訂正可能な誤りを検出したページ２０４のデータに対して、誤り訂正処理を実行し、訂正されたデータを、通常の書き込み処理と同様にフラッシュメモリに書き込む処理を示している。
【００９２】
外部ホストから読み出しコマンド及び対象データの論理アドレスを受け取ると、フラッシュメモリコントローラ５０３は、対象となるデータがどのフラッシュメモリチップ２０１のどのブロック２０２に含まれるかを、フラッシュメモリ情報管理テーブル１２１０の論理アドレス−物理アドレス変換テーブル１２００に基づいて計算する（ステップ１４０１）。
【００９３】
次に、フラッシュメモリコントローラ５０３は、計算された物理アドレスを担当するフラッシュメモリチップ２０１から、対象データ及び対象データに対応するフラッシュメモリ制御情報を読み出す（ステップ１４０２）。ここで、読み出される対象データは、計算された物理アドレスによって特定されるデータ領域１００１に格納されたデータである。また、その対象データに対応するフラッシュメモリ制御情報は、特定されたデータ領域１００１に対応する制御情報領域１００２に格納された情報である。
【００９４】
次に、フラッシュメモリコントローラ５０３は、読み出されたデータに誤りがあるか否かを検査する（ステップ１４０３）。この検査は、例えば、誤り訂正符号１００５を復号することによって実行される。
【００９５】
読み出されたデータに誤りがあり（ステップ１４０４）、かつ、誤り訂正符号１００５の復号によって誤り訂正可能であれば（ステップ１４０５）、フラッシュメモリコントローラ５０３は、誤りを訂正し（ステップ１４０６）、ホストインタフェース部７０４を介して、外部ホストへ訂正された対象データを送信する（ステップ１４０７）。一方、読み出されたデータが、誤り訂正符号１００５の復号によって訂正できない程度の誤りを含む場合（ステップ１４０５）、フラッシュメモリコントローラ５０３は、対象データが不良である旨を、ホストインタフェース部７０４を介して、外部ホストへステータスとして報告する（ステップ１４０８）。以上のステップ１４０１から１４０８までの処理は、従来のフラッシュドライブに適用されている技術と違いがない。
【００９６】
外部ホストから指示された読み出し処理終了後（すなわち、ステップ１４０７又はステップ１４０８の終了後）、フラッシュメモリコントローラ５０３は、処理対象のリードディスターブ管理領域２０３（すなわち読み出し対象データを含むリードディスターブ管理領域２０３）の読み出し回数３０３をインクリメント（すなわち＋１）する（ステップ１４０９）。
【００９７】
読み出し回数３０３がしきい値を超えた場合（ステップ１４１０）、フラッシュメモリコントローラ５０３は、その読み出し回数３０３に対応するリードディスターブ管理領域２０３内のデータ（すなわち、データ領域１００１及び制御情報領域１００２内のデータ）を読み出す（ステップ１４１１）。そして、フラッシュメモリコントローラ５０３は、読み出された誤り訂正符号１００５を復号することによって、誤りがあるか否かを判定する（ステップ１４１２）。
【００９８】
なお、ステップ１４１０において使用されるしきい値は、表１において説明した読み出し回数ａ又は読み出し回数ｂである。
【００９９】
また、ステップ１４１２において、誤りがあるか否かが判定される代わりに、検出された誤りの数（例えば、ビット誤りの数、又は、所定の数以上のビット誤りを含むページ２０４の数）が所定のしきい値を超えたか否かが判定されてもよい。
【０１００】
ステップ１４１２において誤りがあると判定された場合、リードディスターブが発生していると考えられる。この場合、フラッシュメモリコントローラ５０３は、その誤りが誤り訂正符号の復号によって訂正可能か否かを判定する（ステップ１４１３）。誤り訂正可能であれば、フラッシュメモリコントローラ５０３は、誤りを訂正し（ステップ１４１４）、訂正された対象データを、処理対象であるリードディスターブ管理領域２０３以外のリードディスターブ管理領域２０３の消去済みの新しいページ２０４に書き込む（ステップ１４１５）。この処理は従来技術と同様の書き込み方法によって実行されてもよい。
【０１０１】
一方、ステップ１４１３において誤り訂正不可能であった場合、フラッシュメモリコントローラ５０３は、外部ホストへ報告するため、対象データが格納されたページ２０４の論理アドレスを記憶する。そして、フラッシュメモリコントローラ５０３は、対象データが訂正できない誤りを含むことを示す通知を、ホストインタフェース部７０４を介して、外部ホストへ送信する（ステップ１４１６）。この通知は、訂正できない誤りを含む対象データが格納されたページ２０４の論理アドレスを含んでもよい。
【０１０２】
ステップ１４１５又はステップ１４１６が終了すると、フラッシュメモリコントローラ５０３は、対象データが格納された領域のリードディスターブ発生フラグ（図示省略）をセットする（ステップ１４１７）。
【０１０３】
ステップ１４１７が実行されたか、又は、ステップ１４１２において誤りがないと判定された場合、フラッシュメモリコントローラ５０３は、処理対象のリードディスターブ管理領域２０３内の全てのデータについてステップ１４１１から１４１７で説明した処理が実行されたか否かを判定する（ステップ１４１８）。
【０１０４】
全てのデータについてこれらの処理が実行されていない場合、フラッシュメモリコントローラ５０３は、残りのデータについてステップ１４１１以降の処理を実行する。
【０１０５】
全てのデータについてこれらの処理が実行された場合、フラッシュメモリコントローラ５０３は、処理対象のリードディスターブ管理領域２０３について、リードディスターブ発生フラグがセットされているか否かを判定する（ステップ１４１９）。
【０１０６】
ステップ１４１９において、リードディスターブ発生フラグがセットされていると判定された場合、処理対象のリードディスターブ管理領域２０３においてリードディスターブが発生している。このため、フラッシュメモリコントローラ５０３は、リードディスターブ発生フラグをリセットし、リードディスターブ発生回数１２１５をインクリメントし（ステップ１４２０）、処理を終了する。
【０１０７】
一方、ステップ１４１９において、リードディスターブ発生フラグがセットされていないと判定された場合、処理対象のリードディスターブ管理領域２０３においてリードディスターブが発生していない。この場合、フラッシュメモリコントローラ５０３は、ステップ１４２０を実行せずに処理を終了する。
【０１０８】
なお、ステップ１４１６のうち、通知を外部ホストに通信する処理は、ステップ１４１８において、全てのデータについて処理が終了したと判定された後に実行されてもよい。
【０１０９】
なお、ステップ１４１１において、処理対象のリードディスターブ管理領域２０３内のデータを全て読み出し、それらのデータを対象としてステップ１４１２及びステップ１４１３の判定を実行し、ステップ１４１３において誤り訂正可能と判定された場合には、処理対象のリードディスターブ管理領域２０３全体を、新しい領域にコピーしてもよい。
【０１１０】
以上のように、本発明の第１の実施形態によれば、読み出しが実行された回数が所定のしきい値を超えると、リードディスターブ管理領域内の全てのデータが読み出され、誤りが検出される。このため、外部ホストからの読み出し要求を一度も受けていないページ２０４において、リードディスターブによる誤りが発生していた場合であっても、その誤りを検出することができる。リードディスターブ検査が実行されるまでの読み出し回数は、消去回数に依存して決定される。このため、リードディスターブが発生しやすい条件（すなわち、消去回数が多い場合）においても、確実にリードディスターブによる誤りを検出することができる。
【０１１１】
次に、本発明の第２の実施形態を、図４を用いて説明する。
【０１１２】
以下、第２の実施形態が第１の実施形態と相違する点について説明し、第２の実施形態が第１の実施形態と共通する点については説明を省略する。
【０１１３】
図４は、本発明の第２の実施形態における管理領域ごとの管理情報の説明図である。
【０１１４】
ブロック２０２（すなわち消去単位）毎の消去回数３０２は、従来から、フラッシュメモリ制御において管理されている例が多い。第２の実施形態では、消去回数３０２に加えて、ブロック２０２毎のリードディスターブ発生回数４０１が管理される。これは、ブロックに含まれる一つ以上のリードディスターブ管理領域２０３のうちいずれかにおいて、リードディスターブが発生したと判定された場合に、インクリメントされるものである。なお、リードディスターブが発生したか否かは、例えば、図１４のステップ１４１２のように判定されてもよい。
【０１１５】
フローティングゲートを備えるＦＥＴのしきい値、及び、酸化絶縁膜の絶縁強度等の物理的特性は、消去回数３０２のみならず、リードアクセス回数によっても変化する。このため、消去回数がブロック２０２の使用可能／不可能を判断するしきい値に達していなくても、リードアクセスによって、そのブロック２０２を使用不可能と判断する必要が生じる場合がある。
【０１１６】
そのため、第２の実施形態のフラッシュメモリコントローラ５０３は、リードディスターブ発生回数４０１を管理するとともに、リードディスターブ発生回数４０１と消去回数３０２を加味したしきい値を設定し、そのしきい値に基づいて、該当ブロックの使用可否を総合的に判断する。
【０１１７】
例えば、リードディスターブ発生回数４０１のｎ回が消去回数３０２の１回と同等と見なしてもよいし、リードディスターブ発生回数４０１の１回が消去回数３０２のｎ回と同等と見なしてもよい。ここで、ｎは任意の自然数である。
【０１１８】
その結果、リードディスターブ発生回数４０１が所定のしきい値を超えた場合に、リードディスターブ検査を実行するか否かを判定するために使用される読み出し回数のしきい値は、リードディスターブ発生回数４０１がその所定のしきい値より小さい場合に使用される読み出し回数のしきい値より小さくなる（表１参照）。
【０１１９】
以上のように、本発明の第２の実施形態によれば、リードディスターブ検査が実行されるまでの読み出し回数は、過去に発生したリードディスターブの回数に依存して決定される。このため、リードディスターブが発生しやすい条件（すなわち、過去に発生したリードディスターブの回数が多い場合）においても、確実にリードディスターブによる誤りを検出することができる。
【０１２０】
次に、本発明の第３の実施形態を、図５、図９及び図１５を用いて説明する。
【０１２１】
なお、上記の第１の実施形態及び第２の実施形態の説明は、「外部ホスト」を「ＲＡＩＤコントローラ５０１」に置き換えることによって、第３の実施形態に適用することができる。
【０１２２】
本発明が対象としているフラッシュメモリでは、消去回数の保証及びリードディスターブが発生しないことの保証をすることは、不可能である。なぜならば、消去回数を確認するために読み出し動作を繰り返すと、確認のためのアクセス自体でフラッシュメモリを劣化させてしまうためである。リードディスターブに関しても同様である。また、フラッシュメモリチップ２０１内のあるブロック２０２をチェックすれば、それと同一のフラッシュメモリチップ２０１内のその他のブロック２０２もほぼ同程度の性能を備えると推定することはできるが、まったく同じ性能を備えていると保証できるものではない。
【０１２３】
よって、最悪の場合、半導体ウェハ内のばらつき及びフラッシュメモリチップ２０１内のブロック２０２毎のばらつきによって、リードディスターブ検査を行った時点で、すでにフラッシュメモリコントローラ５０３内での誤り訂正が不可能なまでに、データが破壊されている場合がある。
【０１２４】
このようなデータの破壊は、破壊されたデータを含む読み出し単位、又は、読み出し単位より小さく区切った誤り訂正単位毎にデータを読み出し、付加されている誤り訂正符号を用いて誤りの有無を検査しないと判明しない。
【０１２５】
よって、リードディスターブ検査によって初めて、アクセスされていないデータの破壊が検出され、かつ、付加されている誤り訂正符号では訂正できない場合が考えられる。
【０１２６】
このような場合は、フラッシュドライブ５０２の機能だけでデータを回復することは不可能であるため、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）システム等を構築することによって対処する。
【０１２７】
図９は、本発明の第３の実施形態に適用されるＲＡＩＤシステムの構成を示すブロック図である。
【０１２８】
ＲＡＩＤシステムは、多数のハードディスクドライブ（ＨＤＤ）９０４によって冗長化されたディスクアレイ９０５を備えるストレージシステムである。
【０１２９】
ＲＡＩＤシステムは、例えば、図９のように、複数の上位ホストシステム６０１に対して、外部記憶空間を提供する。ＲＡＩＤコントローラ５０１は、多数のＨＤＤ９０４をディスクアレイ９０５として制御管理する。例えば、ＲＡＩＤコントローラ５０１は、４台程度のＨＤＤ９０４でパリティグループを構成し、３セクタ分のデータに対して、１セクタのパリティデータを生成し、合計４セクタ分のデータを４台のＨＤＤ９０４に分散して格納する。その結果、４セクタ中１セクタのデータが破壊されても、残り３セクタ分のデータに基づいて、破壊された１セクタ分のデータを復元することができる。
【０１３０】
あるいは、ＲＡＩＤコントローラ５０１は、２台のＨＤＤ９０４でパリティグループを構成し、それらの２台のＨＤＤ９０４に同一のデータを格納してもよい。その場合、一方のＨＤＤ９０４に格納されたデータが破壊されても、もう一方のＨＤＤ９０４からデータを読み出すことによって、破壊されたデータを復元することができる。
【０１３１】
このように、ＲＡＩＤコントローラ５０１は、上位ホストシステム６０１からデータの書き込みを要求されると、書き込みを要求されたデータ、及び、そのデータを冗長化するデータを、複数のＨＤＤ９０４に分散して格納する。そして、書き込まれたデータが破壊された場合、そのデータを冗長化するデータに基づいて、破壊されたデータを復元することができる。書き込みを要求されたデータを冗長化するデータとは、書き込みを要求されたデータと同一のデータ、又は、書き込みを要求されたデータに基づいて算出されたパリティである。
【０１３２】
ＲＡＩＤコントローラ５０１は、上位ホストシステムＩ／Ｆ部９０１、キャッシュメモリ部９０２及びディスクドライブ制御部９０３を備える。パリティデータの生成及び破壊されたデータの復元は、ディスクドライブ制御部９０３が実行する。
【０１３３】
図９に示すＨＤＤ９０４をフラッシュドライブ５０２に置き換えることによって、図９に示すＲＡＩＤシステムに本発明を適用することができる。
【０１３４】
図５は、本発明の第３の実施形態のフラッシュドライブＲＡＩＤシステムの構成を示すブロック図である。
【０１３５】
図５に示すフラッシュドライブＲＡＩＤシステムは、図９に示すＲＡＩＤシステムのＨＤＤ９０４をフラッシュドライブ５０２で置き換えることによって実現される。
【０１３６】
図５に示すシステムでは、フラッシュメモリコントローラ５０３が、誤り訂正符号の復号によって回復不可能なデータの誤りを検出したこと示す通知を、非同期信号５０６によってＲＡＩＤコントローラ５０１（又はその他の上位のシステム）へ送信する。非同期信号５０６は、例えば割り込み信号である。ＲＡＩＤコントローラ５０１は、フラッシュドライブ５０２からの非同期信号５０６を検出すると、フラッシュドライブ５０２のステータス情報等を、従来の情報伝達手段５０５を用いて収集することによって、破壊が発生したユーザデータのアドレス情報を入手する。そして、ＲＡＩＤコントローラ５０１は、ＲＡＩＤのパリティのような、データを冗長化するデータを用いて、破壊されたデータを復元し、復元されたデータを、そのデータが保持されていたフラッシュドライブ５０２へ上書きする。なお、パリティ等によるデータの復元及びそのデータの書き込みは、ＲＡＩＤコントローラ５０１がその時点で実行している処理の終了を待って実行されてもよい。
【０１３７】
上記の処理は、例えば、図１５のような処理フローで実現する。
【０１３８】
図１５は、本発明の第３の実施形態のＲＡＩＤコントローラ５０１が実行するＲＡＩＤシステム処理のフローチャートである。
【０１３９】
図１５の処理は、フラッシュドライブ５０２からの割り込み信号等、不定期な信号を受信したときに開始される。ここで、フラッシュドライブ５０２からの割り込み信号とは、図１４のステップ１４１６において送信される通知に相当する。この割り込み信号が不定期である理由は、ＲＡＩＤコントローラ５０１からの読み出し処理に伴い、リードディスターブ検査が開始され、フラッシュドライブ５０２内部での誤り訂正処理が不可能な場合に限り、フラッシュドライブ５０２からの割り込みが発生するためである。
【０１４０】
フラッシュドライブ５０２からの割り込み信号等によって、フラッシュドライブ内部での誤り訂正が不可能なリードディスターブを検知した場合、ＲＡＩＤコントローラ５０１は、フラッシュドライブ５０２から、リードディスターブが発生したデータを含むページ２０４の論理アドレスを取得する（ステップ１５０１）。ＲＡＩＤコントローラ５０１は、従来のＩ／Ｆを用いて論理アドレスを取得してもよいし、専用のＩ／Ｆを用いて論理アドレスを取得してもよい。この論理アドレスは、例えば、図１４のステップ１４１６において送信される通知に含まれている。
【０１４１】
リードディスターブが発生したページ２０４の論理アドレスを取得したら、取得した論理アドレスに格納されたデータを含むパリティグループを特定し（ステップ１５０２）、その論理アドレスのデータ以外のパリティグループのデータを、他のフラッシュドライブ５０２から読み出す（ステップ１５０３）。例えば、３Ｄ＋１ＰでＲＡＩＤ５が構成されている場合において、３Ｄの中のＡ，Ｂ，ＣのデータのＡでリードディスターブが発生し、破壊されたと仮定する。この場合、ＲＡＩＤコントローラ５０１は、Ｂ，Ｃ及びＰのデータを読み出し、読み出されたデータの排他的論理和を算出することによって、データＡを復元する（ステップ１５０４）。このように、ＲＡＩＤコントローラ５０１は、読み出したパリティグループのデータに基づいて、取得された論理アドレスのデータを復元し、その論理アドレスのデータを格納していたフラッシュドライブ５０２へ復元されたデータを書き込む（ステップ１５０５）。この書き込み動作のときには、従来技術と同様に、消去済みの物理的に異なるページ２０４にデータが書き込まれるため、リードディスターブが発生したページ２０４に書き戻されることはない。
【０１４２】
フラッシュドライブ５０２へライトアクセスによってデータを上書きした場合、以前のデータを保持しているページ２０４とは異なるページ２０４に書き込まれるため、リードディスターブ発生の条件等（例えば、リードディスターブ発生のしやすさ）が変化する。
【０１４３】
以上のように、本発明の第３の実施形態によれば、フラッシュメモリコントローラ５０３によって復元できない程の誤りが検出された場合でも、ＲＡＩＤの機能によってデータを復元することができる。このため、フラッシュドライブ５０２を用いたストレージシステムの信頼性を向上させることができる。
【０１４４】
次に、本発明の第４の実施形態を、図６を用いて説明する。
【０１４５】
以下、第４の実施形態が第３の実施形態と相違する点について説明し、第４の実施形態が第３の実施形態と共通する点については説明を省略する。
【０１４６】
図６は、本発明の第４の実施形態のフラッシュドライブＲＡＩＤシステムの構成を示すブロック図である。
【０１４７】
従来のＨＤＤ９０４を対象にしていたＲＡＩＤシステムにおけるＲＡＩＤコントローラ５０１は、ＨＤＤ９０４から非同期の割り込み要求を受け付けて、その要求に基づきＨＤＤ９０４を操作することができない。
【０１４８】
そこで、第４の実施形態のフラッシュドライブ５０２は、割り込み出力信号６０３及び情報伝達手段６０４を介してリードディスターブ対策部６０２へ接続される。リードディスターブ対策部６０２は、ＲＡＩＤコントローラ５０１及び各フラッシュドライブ５０２と通信可能に接続された制御装置である。
【０１４９】
フラッシュドライブ５０２から割り込み信号を受けたリードディスターブ対策部６０２は、そのフラッシュドライブ５０２から、破壊されたユーザデータのアドレス情報を、情報伝達手段６０４を介して収集する。そして、リードディスターブ対策部６０２は、破壊されたユーザデータの読み出し及び書き込みを指示するＲＡＩＤコントローラへのコマンド群を生成する。具体的には、リードディスターブ対策部６０２は、情報伝達手段６０４を介して収集したアドレスからユーザデータを読み出すためのコマンド、及び、読み出されたユーザデータを書き込むためのコマンドを生成する。
【０１５０】
そして、リードディスターブ対策部６０２は、生成したコマンドをＲＡＩＤコントローラ５０１へ情報伝達手段６０５を介して送信する。このとき、ＲＡＩＤコントローラ５０１は、リードディスターブ対策部６０２から受信したコマンド群を、複数の上位ホストシステム６０１のうち一つから受信したコマンド群として処理する。
【０１５１】
なお、情報伝達手段６０４は、ＲＡＩＤコントローラ５０１とフラッシュドライブ５０２との間の情報伝達手段５０５と同様のもの（例えば、ファイバーチャネルインタフェース）であってもよい。また、情報伝達手段６０５は、上位ホストシステム６０１とＲＡＩＤコントローラ５０１との間の情報伝達手段と同様のもの（例えば、ファイバーチャネルインタフェース）であってもよい。
【０１５２】
ＲＡＩＤコントローラ５０１は、リードディスターブ対策部６０２から受信した読み出しコマンドに従って破壊されたユーザデータを読み出す。このとき、フラッシュドライブ５０２は、エラー情報を返す。このエラー情報に基づいて、ＲＡＩＤコントローラ５０１は、読み出し対象のユーザデータが利用不可能であると判定し、ＲＡＩＤのパリティに基づいて、読み出し対象のユーザデータを復元する。その後、リードディスターブ対策部６０２から受信した書き込みコマンドに従って、ＲＡＩＤコントローラ５０１は、復元されたユーザデータをフラッシュドライブ５０２に書き込む。
【０１５３】
このとき、従来のＨＤＤ９０４を用いたＲＡＩＤシステムでは、エラーが起きたＨＤＤ９０４を切り離し、スペアＨＤＤ９０４を用いる場合がある。しかし、本実施形態のＲＡＩＤコントローラ５０１は、フラッシュドライブ５０２からのエラーの情報を判断し、ユーザデータが破壊されている場合は、ＲＡＩＤのパリティグループからフラッシュドライブ５０２を切り離さず、復元されたユーザデータを元のフラッシュドライブ５０２に上書きする。
【０１５４】
フラッシュドライブへライトアクセスによってデータを上書きした場合、以前のデータを保持しているページ２０４とは異なるページに書き込まれるため、リードディスターブ発生の条件等が変化する。
【０１５５】
あるいは、フラッシュドライブ５０２から発生する割り込みを受信した割り込み処理部（図示省略）が、誤り訂正不能なデータ部分を修復する特殊コマンドを、上位ホストシステム６０１からの命令として、ＲＡＩＤコントローラ５０１に送信してもよい。
【０１５６】
以上のように、本発明の第４の実施形態によれば、フラッシュメモリコントローラ５０３によって復元できない程の誤りが検出された場合、リードディスターブ対策部６０２がフラッシュドライブ５０２からの割り込み信号を受信し、その信号に基づいて、ＲＡＩＤコントローラ５０１に読み出し及び書き込みコマンドを発行する。このため、従来の（すなわちＨＤＤ９０４のための）ＲＡＩＤコントローラ５０１にフラッシュドライブ５０２を接続し、さらに、）ＲＡＩＤコントローラ５０１及びフラッシュドライブ５０２にリードディスターブ対策部６０２を接続することによって、本発明を実施することができる。すなわち、従来のＲＡＩＤコントローラ５０１を変更することなく、本発明による信頼性の高いストレージシステムを実現することができる。
【０１５７】
以上に説明した本発明の実施形態によれば、フラッシュメモリを、高度な信頼性を必要とするＲＡＩＤシステムに適用することが可能になる。さらに、リードディスターブ耐性が低いフラッシュメモリをＲＡＩＤシステムに適用することも可能になる。その結果、フラッシュメモリの歩留まりを改善できるため、フラッシュメモリのコスト低減が図れる。
【０１５８】
フラッシュメモリを複数個搭載するフラッシュドライブにおけるリードディスターブ対策、及び、ＲＡＩＤシステムにおけるリードディスターブ対策を２重に行うことによって、高い信頼性を確保したストレージシステムを構築することが可能になる。
【図面の簡単な説明】
【０１５９】
【図１】本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリのメモリセルの説明図である。
【図２】本発明の第１の実施形態のＮＡＮＤ型フラッシュメモリの管理領域の説明図である。
【図３】本発明の第１の実施形態における管理領域ごとの管理情報の説明図である。
【図４】本発明の第２の実施形態における管理領域ごとの管理情報の説明図である。
【図５】本発明の第３の実施形態のフラッシュドライブＲＡＩＤシステムの構成を示すブロック図である。
【図６】本発明の第４の実施形態のフラッシュドライブＲＡＩＤシステムの構成を示すブロック図である。
【図７】本発明の第１の実施形態のフラッシュメモリコントローラの構成を示すブロック図である。
【図８】本発明の第１の実施形態のフラッシュドライブの構成を示すブロック図である。
【図９】本発明の第３の実施形態に適用されるＲＡＩＤシステムの構成を示すブロック図である。
【図１０】本発明の第１の実施形態のフラッシュメモリ内のデータ構造の説明図である。
【図１１】本発明の第１の実施形態のフラッシュメモリ内のデータ構造を示す別の説明図である。
【図１２Ａ】本発明の第１の実施形態のＭＰＵが管理する論理アドレス−物理アドレス変換テーブルの説明図である。
【図１２Ｂ】本発明の第１の実施形態のＭＰＵが管理するフラッシュメモリ情報管理テーブルの説明図である。
【図１３Ａ】本発明の第１の実施形態のフラッシュメモリコントローラが、フラッシュドライブの電源投入時に実行する処理のフローチャートである。
【図１３Ｂ】本発明の第１の実施形態のフラッシュメモリコントローラが、フラッシュドライブの電源切断時に実行する処理のフローチャートである。
【図１４】本発明の第１の実施形態のフラッシュメモリコントローラが実行する読み出し処理のフローチャートである。
【図１５】本発明の第３の実施形態のＲＡＩＤコントローラが実行するＲＡＩＤシステム処理のフローチャートである。
【符号の説明】
【０１６０】
２０１  フラッシュメモリチップ
２０２  消去単位（ブロック）
２０３  リードディスターブ管理領域
２０４  書き込み／読み出し単位（ページ）
２０５  リードディスターブ発生ビット
３０１  ページ単位の管理情報
３０２  消去回数
３０３  読み出し回数
４０１  リードディスターブ発生回数
５０１  ＲＡＩＤコントローラ
５０２  フラッシュドライブ
５０３  フラッシュメモリコントローラ
５０４  フラッシュメモリ
６０１  上位ホストシステム
６０２  リードディスターブ対策部
【図１】
2008287404.tif 000004
【図２】
2008287404.tif 000005
【図３】
2008287404.tif 000006
【図４】
2008287404.tif 000007
【図５】
2008287404.tif 000008
【図６】
2008287404.tif 000009
【図７】
2008287404.tif 000010
【図８】
2008287404.tif 000011
【図９】
2008287404.tif 000012
【図１０】
2008287404.tif 000013
【図１１】
2008287404.tif 000014
【図１２Ａ】
2008287404.tif 000015
【図１２Ｂ】
2008287404.tif 000016
【図１３Ａ】
2008287404.tif 000017
【図１３Ｂ】
2008287404.tif 000018
【図１４】
2008287404.tif 000019
【図１５】
2008287404.tif 000020