(57)【要約】  本発明の実施形態は、フラッシュメモリデバイスをリフレッシュする方法および装置を提供することにより、フラッシュメモリデバイスに対するリフレッシュ処理の最適化を実現する。当該方法は、ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して第１のデータのビットエラーレートを決定する段階と、ビットエラーレートが予め設定されたしきい値より高い場合、ストレージコントローラが第１のフラッシュメモリブロックの消去サイクルの数にしたがって第１のフラッシュメモリブロックのリフレッシュサイクルを決定する段階と、決定されたリフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階とを備える。本発明の実施形態では、フラッシュメモリデバイスのフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリブロックの実際のビットエラーレートをモニタリングするので、フラッシュメモリブロックの潜在性能が最大限活用される。格納されているデータが正確であることが保証されるだけでなく、リフレッシュサイクルの更新も最大限先送りされる。リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度が遅くなるので、フラッシュメモリデバイスの性能が全体的に改善する。
2019512116.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリデバイスをリフレッシュする方法であって、
ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して前記第１のデータのビットエラーレートを決定する段階と、
前記ビットエラーレートが予め設定されたしきい値より高い場合、前記ストレージコントローラが前記第１のフラッシュメモリブロックの消去サイクルの数にしたがって前記第１のフラッシュメモリブロックのリフレッシュサイクルを決定する段階と、
前記リフレッシュサイクルにしたがって前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階と
を備える方法。
【請求項２】
前記ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して前記第１のデータのビットエラーレートを決定する段階は、
前記ストレージコントローラが前記第１のフラッシュメモリブロックから前記第１のデータを読み出して、エラー訂正符号を利用して前記第１のデータをデコードして第２のデータを取得する段階と、
前記ストレージコントローラが前記第１のデータおよび前記第２のデータにしたがって前記第１のデータの前記ビットエラーレートを決定する段階と
を有する、請求項１に記載の方法。
【請求項３】
前記リフレッシュサイクルにしたがって前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間が前記リフレッシュサイクルに到達する場合に、前記ストレージコントローラが前記第１のフラッシュメモリブロックに対して前記リフレッシュ処理を実行する段階
を有する、請求項１または２に記載の方法。
【請求項４】
前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記ストレージコントローラが前記第１のフラッシュメモリブロックから第３のデータを読み出す段階と、
前記ストレージコントローラがエラー訂正符号を利用して前記第３のデータをデコードして第４のデータを取得する段階と、
前記ストレージコントローラが前記フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択して、前記第４のデータを前記第２のフラッシュメモリブロックに書き込む段階と
を有する、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記ストレージコントローラが前記第１のフラッシュメモリブロックから第３のデータを読み出す段階と、
前記ストレージコントローラがエラー訂正符号を利用して前記第３のデータをデコードして、第４のデータを取得する段階と、
前記ストレージコントローラが、前記第４のデータにしたがって、前記第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに対して電荷を補完する段階と
を有する、請求項１から３のいずれか一項に記載の方法。
【請求項６】
前記方法は、
前記ストレージコントローラが書き込みアクセス要求を受信する段階と、
フラッシュメモリブロックのリフレッシュサイクルにしたがって前記ストレージコントローラが第３のフラッシュメモリブロックを決定して、前記書き込みアクセス要求の書き込み予定データを前記第３のフラッシュメモリブロックに書き込む段階と
をさらに備え、
前記第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである
請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記方法は、
前記ストレージコントローラが書き込みアクセス要求を受信する段階と、
前記書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、前記ストレージコントローラが第４のフラッシュメモリブロックを決定して、前記書き込み予定データを前記第４のフラッシュメモリブロックに書き込む段階と
をさらに備え、
前記第４のフラッシュメモリブロックのリフレッシュサイクルと、前記書き込み予定データの前記予想格納時間との間には、負の相関関係がある
請求項１から５のいずれか一項に記載の方法。
【請求項８】
プロセッサ、メモリおよびバスを備えるストレージコントローラであって、
前記メモリは、実行命令を格納するよう構成されており、前記プロセッサおよび前記メモリは、前記バスを利用して接続されており、前記ストレージコントローラが動作する場合、前記プロセッサが前記メモリに格納されている前記実行命令を実行することにより、前記ストレージコントローラは、請求項１から７のいずれか一項に記載の方法を実行する、
ストレージコントローラ。
【請求項９】
フラッシュメモリデバイスをリフレッシュする装置であって、
第１のフラッシュメモリブロックから第１のデータを読み出して前記第１のデータのビットエラーレートを決定するよう構成されている読出部と、
前記ビットエラーレートが予め設定されたしきい値より高い場合、前記第１のフラッシュメモリブロックの消去サイクルの数にしたがって前記第１のフラッシュメモリブロックのリフレッシュサイクルを決定するよう構成されている決定部と、
前記リフレッシュサイクルにしたがって前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されているリフレッシュ部と
を備える装置。
【請求項１０】
前記読出部は具体的には、
前記第１のフラッシュメモリブロックから前記第１のデータを読み出して、エラー訂正符号を利用して前記第１のデータをデコードして第２のデータを取得するよう構成されており、
前記第１のデータおよび前記第２のデータにしたがって前記第１のデータの前記ビットエラーレートを決定するよう構成されている
請求項９に記載の装置。
【請求項１１】
前記リフレッシュ部が前記リフレッシュサイクルにしたがって前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、
前記リフレッシュ部が、前記第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間が前記リフレッシュサイクルに到達する場合に、前記第１のフラッシュメモリブロックに対して前記リフレッシュ処理を実行するよう構成されていることを含む
請求項９または１０に記載の装置。
【請求項１２】
前記装置はさらに、書込部を備え、
前記リフレッシュ部が前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、
前記リフレッシュ部が、前記第１のフラッシュメモリブロックから第３のデータを読み出すよう前記読出部を制御して、エラー訂正符号を利用して前記第３のデータをデコードして第４のデータを取得するよう前記読出部を制御するよう構成されており、
前記リフレッシュ部が、前記フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択するよう前記書込部を制御して、前記第４のデータを前記第２のフラッシュメモリブロックに書き込むよう前記書込部を制御するよう構成されている
請求項９から１１のいずれか一項に記載の装置。
【請求項１３】
前記装置はさらに書込部を備え、
前記リフレッシュ部が前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、
前記リフレッシュ部が、前記第１のフラッシュメモリブロックから第３のデータを読み出すよう前記読出部を制御して、エラー訂正符号を利用して前記第３のデータをデコードして第４のデータを取得するよう前記読出部を制御するよう構成されており、
前記リフレッシュ部が、前記第４のデータにしたがって前記第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう前記書込部を制御するよう構成されている
請求項９から１１のいずれか一項に記載の装置。
【請求項１４】
前記装置はさらに、受信部および前記書込部を備え、
前記受信部は、書き込みアクセス要求を受信するよう構成されており、
前記書込部は、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックを決定し、前記書き込みアクセス要求の書き込み予定データを前記第３のフラッシュメモリブロックに書き込むよう構成されており、前記第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである
請求項９から１３のいずれか一項に記載の装置。
【請求項１５】
前記装置はさらに、受信部および前記書込部を備え、
前記受信部は、書き込みアクセス要求を受信するよう構成されており、
前記書込部は、前記書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第４のフラッシュメモリブロックを決定し、前記書き込み予定データを前記第４のフラッシュメモリブロックに書き込むように構成されており、前記第４のフラッシュメモリブロックのリフレッシュサイクルと、前記書き込み予定データの前記予想格納時間との間には、負の相関関係がある
請求項９から１３のいずれか一項に記載の装置。
【請求項１６】
フラッシュメモリデバイスであって、前記フラッシュメモリデバイスは、フラッシュメモリアレイと請求項９から１５のいずれか一項に記載のリフレッシュ装置とを備え、前記フラッシュメモリアレイは、データを格納するよう構成されており、前記リフレッシュ装置は、前記フラッシュアレイにおけるフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている、フラッシュメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンピュータの分野に関し、特に、フラッシュメモリデバイスをリフレッシュする方法および装置に関する。
【背景技術】
【０００２】
フラッシュメモリに基づくソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ、ＳＳＤ）は、ランダムアクセス性能が望ましく、密度が低く、消費電力が少ない、といった利点のおかげで、次第に従来の磁気ディスクに取って代わるようになり、重要な格納媒体となっている。近年では、フラッシュメモリ技術は急速に発展し、記録密度は１ビットのフラッシュセルから最近ではマルチビット、例えば、６ビットのフラッシュセルへと発展を遂げ、製造技術は６５ナノメートルから最近では１０ナノメートルへと進化している。
【０００３】
このような発展に伴い、フラッシュメモリの記録密度は急速に増加している。しかし、フラッシュメモリの信頼性は大きく低下し、フラッシュメモリの保持時間は短くなる一方である。保持時間とは、フラッシュメモリに書き込まれたデータの読み出しを確実に実行できる時間の長さである。フラッシュメモリデバイスでは、フラッシュセルの浮遊ゲートに帯電している電荷量を利用してデータを表現する。しかし、時間が経過すると電荷損失が発生する。フラッシュセルにおけるデータの読み出しを確実にできるように保証するべく、データの電荷損失によってデータエラーが発生する前にデータの読み出しを行うとしてよく、読み出したデータをその後、新しいロケーションに保存する。この処理は、リフレッシュと呼ばれる。サイズが小さくなるにつれて、フラッシュメモリブロック間のプロセス変動（Ｐｒｏｃｅｓｓ  Ｖａｒｉａｔｉｏｎ、ＰＶ）という現象が一層目立つようになる。フラッシュメモリデバイスの複数のフラッシュメモリブロックは、プロセス変動に起因して許容度がそれぞれ異なる。この現象は、プログラム／消去サイクル（Ｐ／Ｅサイクル）の最大数および保持時間等の多くの点における差異に反映される。
【０００４】
リフレッシュは保持時間の減少に対する最も直接的な解決手段であるが、同時にリフレッシュによって冗長な処理が発生し、この処理が性能およびフラッシュメモリの寿命に影響を及ぼす。先行技術では、フラッシュメモリのリフレッシュは、効果的且つ柔軟に制御できず、この問題を解決するために新しい技術が必要である。
【発明の概要】
【０００５】
これに鑑み、本発明は、フラッシュメモリデバイスをリフレッシュする方法および装置を開示して、フラッシュメモリブロック間のプロセス変動を考慮に入れて、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリデバイスに対して柔軟にリフレッシュ処理を実現する。
【０００６】
第１の態様によると、本願は、フラッシュメモリデバイスをリフレッシュする方法を提供する。当該方法は、ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して第１のデータのビットエラーレートを決定する段階と、第１のデータのビットエラーレートが予め設定されたしきい値より高い場合、ストレージコントローラが第１のフラッシュメモリブロックの消去サイクルの数にしたがって第１のフラッシュメモリブロックのリフレッシュサイクルを決定する段階と、決定されたリフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階とを備える。
【０００７】
ストレージコントローラは、フラッシュメモリブロック単位の粒度を利用し、且つ、データの実際のビットエラーレートにしたがって、フラッシュメモリブロックのリフレッシュサイクルを更新するか否かを決定するので、フラッシュメモリブロックのリフレッシュサイクルの更新を最大限先送りする一方でデータが正確であることを保証し、リフレッシュ処理によるフラッシュメモリブロックの摩耗の速度を遅くする。
【０００８】
第１の態様に関し、第１の態様の第１の可能な実施例において、ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して第１のデータのビットエラーレートを決定する段階は具体的には、ストレージコントローラが第１のフラッシュメモリブロックから第１のデータを読み出して、エラー訂正符号を利用して第１のデータをデコードして第２のデータを取得する段階と、第１のデータおよび第２のデータにしたがって第１のデータのビットエラーレートを決定する段階とを有する。
【０００９】
具体的には、第２のデータは信頼できるデコードされたデータであるので、ストレージコントローラは、第１のデータおよび第２のデータの異なるデータビットを比較することによって、第１のデータのビットエラーレートを決定する。
【００１０】
第１の態様または第１の態様の前述した可能な実施例のうち任意の１つに関し、第１の態様の第２の可能な実施例において、決定されたリフレッシュサイクルにしたがってストレージコントローラが第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、ストレージコントローラが第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階を有する。
【００１１】
具体的には、ストレージコントローラは、１回のリフレッシュ処理または１回の消去処理が終了した後で、第１のフラッシュメモリブロックにおける有効ページのデータの格納時間を記録するとしてよい。データの格納時間がリフレッシュサイクルに到達した有効ページがある場合、ストレージコントローラは、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行して、データが正確であることを保証する。
【００１２】
任意で、第１のフラッシュメモリブロックにおける全ての有効ページのデータの格納時間をモニタリングする場合、ストレージコントローラに掛かる負荷が大きくなる。ストレージコントローラはさらに、最後の消去処理または最後のリフレッシュ処理から経過した時間がリフレッシュサイクルに到達した後で、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。
【００１３】
第１の態様または第１の態様の前述した可能な実施例のうち任意の１つに関し、第１の態様の第３の可能な実施例において、ストレージコントローラが第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、ストレージコントローラが第１のフラッシュメモリブロックから第３のデータを読み出す段階と、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得する段階と、ストレージコントローラがフラッシュメモリデバイスから第２のフラッシュメモリブロックを選択して、第４のデータを第２のフラッシュメモリブロックに書き込む段階とを有する。
【００１４】
ストレージコントローラは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックを第２のフラッシュメモリブロックとして利用するとしてよいので、フラッシュメモリデバイスのウェアレベリングが実現されて、フラッシュメモリデバイスの寿命が延びる。
【００１５】
第１の態様または第１の態様の前述した可能な実施例のうち任意の１つに関し、第１の態様の第４の可能な実施例において、ストレージコントローラが第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、ストレージコントローラが第１のフラッシュメモリブロックから第３のデータを読み出す段階と、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得する段階と、ストレージコントローラが、第４のデータにしたがって、第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに対して電荷を補完する段階とを有する。
【００１６】
ストレージコントローラは、デコーディングによって取得した第４のデータにしたがって、第１のフラッシュメモリブロックのフラッシュセルから漏出する電荷を補完するので、第１のフラッシュメモリブロックにおけるデータは正確な値に再度到達し、リフレッシュ処理に起因して第１のフラッシュメモリブロックにおいて発生する消去処理が回避され、第１のフラッシュメモリブロックの寿命が延びる。
【００１７】
第１の態様または第１の態様の前述した可能な実施例のうち任意の１つに関し、第１の態様の第５の可能な実施例において、上記の方法は、ストレージコントローラが書き込みアクセス要求を受信する段階と、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックを決定して、書き込みアクセス要求の書き込み予定データを第３のフラッシュメモリブロックに書き込む段階とをさらに備え、第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである。
【００１８】
フラッシュメモリブロックのリフレッシュサイクルは、フラッシュメモリブロックの寿命を表す。このため、書き込みアクセス要求を受信した後で、ストレージコントローラは、リフレッシュサイクルが長いフラッシュメモリブロックにデータを優先的に保存するので、フラッシュメモリデバイスのウェアレベリングが実現され、フラッシュメモリデバイスの寿命が延びる。
【００１９】
第１の態様または第１の態様の前述した可能な実施例のうち任意の１つに関し、第１の態様の第６の可能な実施例において、上記の方法は、ストレージコントローラが書き込みアクセス要求を受信する段階と、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、第４のフラッシュメモリブロックを決定して、書き込み予定データを第４のフラッシュメモリブロックに書き込む段階とをさらに備え、第４のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には、負の相関関係がある。
【００２０】
具体的な実装プロセスにおいて、ストレージコントローラは、データの予想格納時間を推定するとしてよい。例えば、データの予想格納時間は、データの人気度にしたがって区別するとしてよい。ホットデータの予想格納時間は比較的短く、コールドデータの予想格納時間は比較的長い。ホットデータは、リフレッシュサイクルが長いフラッシュメモリブロックに格納されるとしてよく、コールドデータは、リフレッシュサイクルが短いフラッシュメモリブロックに格納されるとしてよい。ホットデータは、更新頻度が比較的高く、フラッシュメモリブロックにおいて消去処理が頻繁に発生する。このため、ホットデータは、リフレッシュサイクルが長いフラッシュメモリブロックに格納することで、フラッシュメモリデバイスのウェアレベリングを実現する。
【００２１】
第２の態様によると、本願は実行命令を含む可読媒体を提供する。ストレージコントローラのプロセッサが実行命令を実行すると、ストレージコントローラは、第１の態様または第１の態様の可能な実施例のうち任意の１つの方法を実行する。
【００２２】
第３の態様によると、本願はストレージコントローラを提供する。当該ストレージコントローラは、プロセッサ、メモリおよびバスを備え、メモリは、実行命令を格納するよう構成されており、プロセッサおよびメモリは、バスを利用して接続されており、ストレージコントローラが動作する場合、プロセッサがメモリに格納されている実行命令を実行することにより、ストレージコントローラは、第１の態様または第１の態様の可能な実施例のうち任意の１つの方法を実行する。
【００２３】
第４の態様によると、本願はフラッシュメモリデバイスをリフレッシュする装置を提供する。当該装置は、第１のフラッシュメモリブロックから第１のデータを読み出して第１のデータのビットエラーレートを決定するよう構成されている読出部と、ビットエラーレートが予め設定されたしきい値より高い場合、第１のフラッシュメモリブロックの消去サイクルの数にしたがって第１のフラッシュメモリブロックのリフレッシュサイクルを決定するよう構成されている決定部と、リフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されているリフレッシュ部とを備える。
【００２４】
第４の態様に関し、第４の態様の第１の可能な実施例において、読出部は具体的には、第１のフラッシュメモリブロックから第１のデータを読み出して、エラー訂正符号を利用して第１のデータをデコードして第２のデータを取得するよう構成されており、第１のデータおよび第２のデータにしたがって第１のデータのビットエラーレートを決定するよう構成されている。
【００２５】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第２の可能な実施例において、リフレッシュ部がリフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。
【００２６】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第３の可能な実施例において、上記の装置はさらに、書込部を備え、リフレッシュ部が第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第１のフラッシュメモリブロックから第３のデータを読み出すよう読出部を制御して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得するよう読出部を制御するよう構成されており、リフレッシュ部が、フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択するよう書込部を制御して、第４のデータを第２のフラッシュメモリブロックに書き込むよう書込部を制御するよう構成されている。
【００２７】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第４の可能な実施例において、上記の装置はさらに、書込部を備え、リフレッシュ部が第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第１のフラッシュメモリブロックから第３のデータを読み出すよう読出部を制御して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得するよう読出部を制御するよう構成されており、リフレッシュ部が、第４のデータにしたがって第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう書込部を制御するよう構成されている。
【００２８】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第５の可能な実施例において、上記の装置はさらに、受信部および書込部を備え、受信部は、書き込みアクセス要求を受信するよう構成されており、書込部は、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックを決定し、書き込みアクセス要求の書き込み予定データを第３のフラッシュメモリブロックに書き込むよう構成されており、第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである。
【００２９】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第６の可能な実施例において、上記の装置はさらに、受信部および書込部を備え、受信部は、書き込みアクセス要求を受信するよう構成されており、書込部は、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第４のフラッシュメモリブロックを決定し、書き込み予定データを第４のフラッシュメモリブロックに書き込むように構成されており、第４のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には、負の相関関係がある。
【００３０】
第４の態様は、第１の態様における方法に対応する装置の実施例である。このため、第１の態様または第１の態様の可能な実施例のうち任意の１つにおける説明は、第４の態様または第４の態様の可能な実施例のうち任意の１つに対応して適用可能である。詳細についてはここでは説明を繰り返さない。
【００３１】
第５の態様によると、本願はフラッシュメモリデバイスを提供する。当該フラッシュメモリデバイスは、フラッシュメモリアレイと、第４の態様または第４の態様の可能な実施例の任意のうち１つに応じたリフレッシュ装置とを備え、フラッシュメモリアレイはデータを格納するよう構成されており、リフレッシュ装置は、フラッシュアレイにおけるフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。
【００３２】
本発明で開示する技術的解決手段によると、フラッシュメモリデバイスのフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロックの実際のビットエラーレートをモニタリングするので、フラッシュメモリブロックの潜在性能が最大限活用される。格納されているデータが正確であることが保証されるだけでなく、リフレッシュサイクルの更新も最大限先送りされる。リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度が遅くなるので、フラッシュメモリデバイスの性能が全体的に改善する。
【図面の簡単な説明】
【００３３】
本発明の実施形態における技術的解決手段の説明をより明確にするべく、実施形態を説明するために必要な添付図面を以下で簡単に説明する。以下の説明における添付図面は本発明の一部の実施形態を示しているに過ぎず、当業者ならば、創造的努力が無くともこれらの添付図面からさらに他の図面に想到し得ることは明らかである。
【００３４】
【図１】本発明の実施形態に係るフラッシュメモリデバイスにアクセスするためのシステムの論理構造を示す概略図である。
【００３５】
【図２】本発明の実施形態に係るフラッシュメモリのフラッシュセルを示す概略構造図である。
【００３６】
【図３】本発明の実施形態に係るストレージコントローラのハードウェア構造を示す概略図である。
【００３７】
【図４】本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法のフローチャートの一例である。
【００３８】
【図５】本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法のフローチャートの一例である。
【００３９】
【図６】本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする装置の論理構造を示す概略図である。
【発明を実施するための形態】
【００４０】
以下では、添付図面を参照しつつ本発明の実施形態を説明する。
【００４１】
本発明の実施形態によると、フラッシュメモリブロック間のプロセス変動を考慮しない場合、フラッシュメモリデバイスにリフレッシュ処理が実行されると全てのフラッシュメモリブロックが同じ頻度でリフレッシュされる。しかし、複数の異なるフラッシュメモリブロック間にはプロセス変動が存在する。フラッシュメモリブロックには、性能が比較的高く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が目立たず、データの保持時間が比較的長いものがある。このため、このフラッシュメモリブロックは、比較的長いリフレッシュサイクルでリフレッシュするとしてもよい。しかし、フラッシュメモリブロックには、性能が比較的低く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が顕著で、データの保持時間が比較的短いものがある。このため、このフラッシュメモリブロックは、比較的短いリフレッシュサイクルでリフレッシュするべきである。
【００４２】
プロセス変動を考慮しない場合、および、リフレッシュ処理はフラッシュメモリデバイスにおいて同じ頻度で実行される。一方では、性能が比較的高いフラッシュメモリブロックの性能は十分に活用されず、リフレッシュ処理の頻度が高くなり過ぎることで、フラッシュメモリブロックの摩耗速度が早くなり得る。他方で、性能が比較的低いデータブロックは必要とするリフレッシュ頻度が相対的に低いので、性能が比較的低いデータブロックではデータエラーが発生し得る。複数の異なるフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロック単位の粒度を利用すると共に異なる頻度でフラッシュメモリデバイスに対してリフレッシュ処理を実行することで、フラッシュメモリデバイスの性能がさらに改善され得る。
【００４３】
図１は、本発明の実施形態に係るフラッシュメモリデバイスにアクセスするシステムの論理構造の概略図１００である。図１に示すように、システム１００は、オペレーティングシステム１０２およびフラッシュメモリデバイス１０８を備える。
【００４４】
オペレーティングシステム１０２は、ルーチンシステムタスク（例えば、メモリ管理、ストレージデバイス制御および電力管理）を制御および管理するために、そして、さまざまなソフトウェアコンポーネントおよびハードウェアコンポーネントの間の通信を円滑化するために利用されるさまざまなソフトウェアコンポーネントおよび／またはドライバを有する。オペレーティングシステム１０２は、Ｄａｒｗｉｎ、ＲＴＸＣ、Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）、ＯＳ  Ｘ、ＭＡＣ  ＯＳもしくはＷｉｎｄｏｗｓ（登録商標）であってもよいし、または、ＶｘＷｏｒｋｓ等の組み込みオペレーティングシステムであってもよい。本発明の本実施形態においてこれに限定されるものではない。
【００４５】
具体的には、オペレーティングシステム１０２は、ファイルシステム１０４およびドライバ１０６を有している。ファイルシステム１０４は、フラッシュメモリデバイス１０８上のファイルを特定するためにオペレーティングシステム１０２が利用する方法およびデータ構造、すなわち、フラッシュメモリデバイス１０８上でファイルを整理するための方法である。ファイルシステム１０４は、ＦＡＴ、ＮＴＦＳ、ｅｘＦＡＴ、ＲＡＷ、Ｅｘｔ２、Ｅｘｔ３、Ｅｘｔ４、Ｂｔｒｆｓ、ＺＦＳ、ＨＦＳ、ＨＦＳ＋、ＲｅｉｓｅｒＦＳ、ＪＦＳ、ＶＭＦＳ、ＸＦＳＵＦＳまたはＶＸＦＳ等、任意の種類のものであってよい。
【００４６】
ユーザのアプリケーションプログラムはオペレーティングシステム１０２で実行される。アプリケーションプログラムは、基盤のハードウェアへのアクセスという形態で、人間と機械との間のやり取りを実現する。ドライバ１０６は、アプリケーションプログラムとハードウェアとの間のやり取りの橋渡し役である。一方では、アプリケーションプログラムは対応する命令をドライバ１０６に送信することでハードウェアを制御する。他方で、ドライバ１０６は、ハードウェアの読み書きステータスおよびハードウェアから取得したデータをアプリケーションプログラムに転送する。これによって、アプリケーションプログラムと基盤のハードウェアとの間のやり取りが実現される。
【００４７】
オペレーティングシステム１０２は、アドバンスドテクノロジーアタッチメント装置（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ、ＡＴＡ）を利用してフラッシュメモリデバイス１０８に接続されている。
【００４８】
フラッシュメモリデバイス１０８は、フラッシュメモリに基づくストレージデバイスであり、例えば、ＳＳＤであってよい。フラッシュメモリデバイス１０８は、キャッシュ１１０、ストレージコントローラ１１２およびフラッシュメモリアレイ１３０を有する。
【００４９】
ストレージコントローラ１１２は、ホストインターフェース１１４、フラッシュトランスレーションレイヤ（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ、ＦＴＬ）１１６およびフラッシュメモリインターフェース１２８を含む。
【００５０】
ホストインターフェース１１４は、ホストと接続するよう、そして、オペレーティングシステム１０２との間のデータ送信を制御するよう構成されている。
【００５１】
フラッシュメモリインターフェース１２８は、フラッシュメモリアレイ１３０と接続するように、そして、フラッシュメモリアレイ１３０との間のデータ送信を制御するように構成されている。
【００５２】
フラッシュトランスレーションレイヤ１１６は、リフレッシュモジュール１１８、ウェアレベリング（Ｗｅａｒ  Ｌｅｖｅｌｉｎｇ、ＷＬ）モジュール１２０、アドレストランスレーションモジュール１２２、エラー検査訂正（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ、ＥＣＣ）モジュール１２４、ガベージコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ、ＧＣ）モジュール１２６を含む。
【００５３】
フラッシュメモリアレイ１３０は、複数のブロックに分割されているとしてよく、各ブロックはさらに複数のページに分割されているとしてよい。データはページ単位で直接書き込まれるとしてよい。しかし、データの消去はブロック単位で行う必要がある。新しいデータは、既存のデータを消去するまで書き込むことができない。しかし、オペレーティングシステム１０２は、ハードディスクドライブ（Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ、ＨＤＤ）の１セクタのサイズにしたがってデータの読み書きを行うのが一般的である。この結果、オペレーティングシステム１０２が現在利用しているファイルシステム１０４を利用してＳＳＤを管理することができず、この問題を解決するためには、ファイルシステム１０４に代えてより高度で複雑なファイルシステムを利用する必要がある。しかし、この場合、オペレーティングシステム１０２の負荷が大きくなってしまう。オペレーティングシステム１０２に対する負荷が増加しないように、フラッシュメモリデバイス１０８は、フラッシュメモリアレイ１３０に対する処理を仮想化して磁気ディスクの独立したセクタに対する処理とするソフトウェアを利用する。これは、フラッシュトランスレーションレイヤ１１６の機能である。
【００５４】
フラッシュトランスレーションレイヤ１１６は、ファイルシステム１０４と物理媒体（フラッシュメモリアレイ１３０）との間に存在する。オペレーティングシステム１０２は、本来のやり方で論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）を操作するだけでよい。フラッシュトランスレーションレイヤ１１６は、論理アドレスから物理ブロックアドレス（Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＰＢＡ）へと変換する動作を全て担当する。
【００５５】
リフレッシュモジュール１１８は、フラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。フラッシュメモリのフラッシュセルにおいては、浮遊ゲートに帯電している電荷量を利用してデータを表現する。しかし、時間が経過すると浮遊ゲートで電荷損失が発生する。この結果、フラッシュセルに格納されているデータが正確なものではなくなる。データを後で正確に読み出せるようにするには、リフレッシュモジュール１１８が、フラッシュセルの浮遊ゲートにおいて電荷損失によってデータエラーが発生する前に、フラッシュメモリブロックをリフレッシュする。
【００５６】
具体的には、本発明の本実施形態において、リフレッシュモジュール１１８のリフレッシュ処理は、フラッシュメモリブロックにあるデータを読み出して新しいロケーションにデータを書き込むことであってよい。または、フラッシュメモリブロックにあるデータを読み出して、読み出したデータにしたがってフラッシュメモリブロックのフラッシュセルを局所的に充電することであってよく、これによってフラッシュセルの浮遊ゲートの電荷量が再度、正確な電荷量に到達する。より具体的には、フラッシュメモリブロックにあるデータを読み出した後、読み出したデータに対してさらにＥＣＣによる検査を実行するとしてよく、ＥＣＣ検査の後に取得する結果を新しいロケーションに書き込むか、または、ＥＣＣ検査の後に取得される結果にしたがってフラッシュセルを局所的に充電する。
【００５７】
フラッシュメモリアレイ１３０の寿命は、プログラム／消去サイクルの数にしたがって計算され、ウェアレベリングモジュール１２０は、フラッシュメモリアレイ１３０のフラッシュメモリブロックがバランスよく利用されるように保証するメカニズムである。このメカニズムが無ければ、フラッシュメモリアレイ１３０の複数のフラッシュメモリブロックは、同時にライフサイクルに到達することはできない。論理アドレス空間におけるユーザのデータは、更新速度が異なる。一部のデータは頻繁に更新する必要があり、一部のデータは長時間にわたって変更する必要がない。このため、ＷＬメカニズムが無ければ、頻繁に更新されるデータが位置しているフラッシュメモリブロックの寿命が先に終了して、比較的低頻度で変更されるデータが位置しているフラッシュメモリブロックは摩耗がはるかに少ない。この状況を回避するべく、フラッシュメモリアレイ１３０の複数のフラッシュメモリブロックの摩耗度を比較的等しく維持するためにはＷＬメカニズムが必要とされる。
【００５８】
具体的には、ウェアレベリングモジュール１２０は、アドレストランスレーションモジュール１２２と協働する。オペレーティングシステム１０２のアプリケーションプログラムが同じ論理アドレスを書き換える度に、または、更新する度に、アドレストランスレーションモジュール１２２は、論理アドレスを別の異なる物理アドレスに動的にマッピングして、マッピング関係を特定の「アドレスマッピングテーブル」に保存する。古くなった物理アドレスは「無効」と記されて、後で消去処理が行われるまで待機する。ウェアレべリングモジュール１２０は、このマッピングプロセスにおいて、各フラッシュメモリチップのプログラム／消去頻度を制御する。このようにすることで、全てのフラッシュメモリブロックを、摩耗が同じ範囲内に収まるように、そして、同時に「老化」するように制御することができる。
【００５９】
エラー検査訂正モジュール１２４は、データの読み出し中に、エラーを検出して訂正するよう構成されている。データが書き込まれると、ストレージコントローラ１１２内のエラー検査訂正モジュール１２４は当該データにしたがってＥＣＣ署名を生成する。ＥＣＣ署名は一般的に、フラッシュメモリページの後方にあるスペアエリア（Ｓｐａｒｅ  Ａｒｅａ、ＳＡ）に格納される。データをフラッシュメモリページから読み出す場合、エラー検査訂正モジュール１２４は、ＥＣＣ署名を読み出して、読み出したデータおよびＥＣＣ署名にしたがって、データにエラーが発生しているか否かを決定する。読み出したデータにエラービットがあると検出される場合、検出されたエラーはＥＣＣアルゴリズムを利用して訂正する必要がある。ＥＣＣアルゴリズムは、ＢＣＨエンコーディング、ＬＤＰＣエンコーディング等であってよい。本発明の本実施形態における解決手段を説明する上では、ＬＤＰＣエンコーディングを利用する。しかし、本発明の本実施形態において、ＥＣＣに利用されるエンコーディングアルゴリズムは限定されるものではない旨を理解されたい。
【００６０】
ガベージコレクションモジュール１２６は具体的には、フラッシュメモリブロック内の「有効」ページのデータを別のフラッシュメモリブロックにコピーして、古い方のフラッシュメモリブロック内のデータを完全に消去するように構成されている。従来のＨＤＤとは異なり、フラッシュメモリアレイ１３０では元のデータに直接上書きすることができない。フラッシュメモリデバイス１０８では、新しいデータの書き込みが可能になる前に古いデータを消去する必要がある。フラッシュメモリアレイ１３０の場合、ガベージコレクションは、既存のデータを別のフラッシュメモリロケーションに移動させて一部の無用なデータを完全に消去するプロセスを意味する。フラッシュメモリアレイ１３０に対してはページ単位でデータを直接書き込むとしてよいが、フラッシュメモリアレイ１３０からデータを消去する場合はブロック単位で行う必要がある。このため、無用なデータを消去するためには、フラッシュメモリアレイ１３０においては最初に、ブロックに含まれている有用なデータを別のブロックのページにコピーする必要がある。このようにすることで、元のブロックに含まれている無用なデータをブロック単位で消去することができるようになる。新しいデータを書き込むことが可能になる前に消去を実行する必要がある。
【００６１】
キャッシュ１１０は、スタート中に論理アドレスから物理アドレスへのマッピングに関する「アドレスマッピングテーブル」等のデータを格納するよう構成されている。ストレージコントローラ１１２は、「アドレスマッピングテーブル」等をフラッシュメモリアレイ１３０に保存する。再スタートした後に毎回、ストレージコントローラ１１２は「アドレスマッピングテーブル」等のデータをフラッシュメモリアレイ１３０からキャッシュ１１０にロードする。本発明の実施形態によれば、ストレージコントローラ１１２は、フラッシュメモリアレイ１３０においてフラッシュメモリブロックのリフレッシュサイクルを保持している。具体的には、ストレージコントローラは、リフレッシュサイクルテーブルを利用して、フラッシュメモリブロックのリフレッシュサイクルを保存しているとしてよい。リフレッシュサイクルテーブルは、フラッシュメモリブロックのリフレッシュサイクルと物理アドレスとの間の対応関係を含む。ストレージコントローラは、フラッシュメモリアレイ１３０にリフレッシュサイクルテーブルを保存するとしてよい。スタートした後に毎回、ストレージコントローラは、リフレッシュサイクルテーブルをフラッシュメモリアレイ１３０からキャッシュ１１０にロードする。
【００６２】
フラッシュメモリアレイ１３０は、シングルレベルセル（Ｓｉｎｇｌｅ−ｌｅｖｅｌ  ｃｅｌｌ、ＳＬＣ）またはマルチレベルセル（Ｍｕｌｔｉ−ｌｅｖｅｌ  ｃｅｌｌ、ＭＬＣ）を利用するとしてよい。各ＳＬＣセルは１ビットの情報を格納し、各ＭＬＣセルは複数ビットのデータを格納するとしてよい。本発明の本実施形態ではこれに限定されるものではない。
【００６３】
図１は、システム１００の構成要素および構成要素間の関係を一例として紹介することのみを目的とすると理解されたい。このため、説明したシステム１００は大幅に簡略化している。本発明の本実施形態ではシステム１００の説明は一般的なものにとどめる。実際に利用する際には、システム１００が備えるコンポーネントは増減するとしてよい。本発明の本実施形態において、システム１００の実施例は決して限定されるものではない。
【００６４】
図２は、本発明の実施形態に係るフラッシュセル２００を示す概略構造図である。図２に示すように、データは電荷の形態でフラッシュメモリのフラッシュセルに格納され、フラッシュセルにおける複数の異なるデータ状態は、浮遊ゲートの電子の電荷量を利用して区別する。格納されている電荷量は、図２の制御ゲートに印加される電圧に応じて決まる。制御ゲートは、フラッシュセルの浮遊ゲートに帯電している電荷量を制御する。浮遊ゲートに格納されている電荷が提供する電圧が特定のしきい値Ｖｔｈを上回っているか否かを決定することによってデータが表現される。
【００６５】
一例としてＳＬＣを利用する。フラッシュメモリに対する書き込み（プログラミング）とは、浮遊ゲートに格納されている電荷が十分になるように、且つ、提供される電圧がしきい値Ｖｔｈを上回るように制御ゲートに電圧を印加することである。この場合を「０」と表現する。フラッシュメモリに対する消去処理は、浮遊ゲートが提供する電圧がしきい値Ｖｔｈを下回るように浮遊ゲートの電荷を放電することである。この場合を「１」と表現する。浮遊ゲートに電荷を持つフラッシュセルについては、浮遊ゲートの誘導作用に起因してソースとドレインとの間に正の空間電荷領域が形成される。この場合、制御ゲートにバイアス電圧が印加されるか否かに関わらず、フラッシュセルとして利用されているトランジスタはオン状態である。浮遊ゲートに電荷が無いフラッシュセルについては、ソースとドレインとの間に正の空間電荷領域を形成すると共にソースとドレインとの間に導電チャネルを形成するために、適切なバイアス電圧を制御ゲートに印加する必要がある。バイアス電圧が制御ゲートに印加されない場合、トランジスタはオフ状態となる。
【００６６】
トランジスタのソースが接地されトランジスタのドレインがビットラインに接続されている場合、バイアス電圧を印加しなくても、フラッシュセルのデータはトランジスタの通電ステータスを検出することで取得することができる。ビットラインのレベルがＬＯＷである場合、トランジスタがオン状態であることを意味し、読み出しデータは「０」である。ビットラインのレベルがＨＩＧＨレベルである場合、トランジスタがオフ状態であることを意味し、読み出しデータは「１」である。
【００６７】
図２はフラッシュセルを説明するための一例として利用されると理解されたい。具体的な実施例では、フラッシュセルの構造は別の形態で実現するとしてもよい。本発明の本実施形態ではこれに限定されるものではない。
【００６８】
図３は、本発明の実施形態に係るストレージコントローラ３００のハードウェア構造の概略図である。図３に示すように、ストレージコントローラ３００は、プロセッサ３０２、メモリ３０４、入出力インターフェース３０６、通信インターフェース３０８およびバス３１０を有する。プロセッサ３０２、メモリ３０４、入出力インターフェース３０６および通信インターフェース３０８は、バス３１０を利用して、互いに通信すると共に互いに接続されている。
【００６９】
プロセッサ３０２は、ストレージコントローラ３００の制御センターであり、本発明の本実施形態で提供する技術的解決手段を実装するための関連プログラムを実行するよう構成されている。プロセッサ３０２は、汎用中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）、マイクロプロセッサ、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＡＳＩＣ）、または、１もしくは複数の集積回路であってよく、本発明の本実施形態で提供する技術的解決手段を実装するための関連プログラムを実行する。
【００７０】
特段の指定がない限り、本発明では、特定の機能を実行するよう構成されているコンポーネント、例えば、プロセッサ３０２またはメモリ３０４は、対応する機能を実行するよう汎用コンポーネントを構成することで実現するとしてもよいし、または、特定の機能を特に実行する専用コンポーネントを利用して実現するとしてもよい。本願ではこれに限定されるものではない。
【００７１】
メモリ３０４は、リードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、静的ストレージデバイス、動的ストレージデバイスまたはランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）であってよい。メモリ３０４は、オペレーティングシステムおよび他のアプリケーションプログラムを格納するとしてよい。本発明の本実施形態で提供する技術的解決手段をソフトウェアまたはファームウェアによって実装する場合、本発明の本実施形態で提供する技術的解決手段を実装するためのプログラムコードは、メモリ３０４に格納されプロセッサ３０２によって実行される。メモリ３０４は、プロセッサ３０２に集積化されているとしてもよいし、もしくは、プロセッサ３０２の内部に集積化されているとしてもよく、または、プロセッサ３０２から独立している１もしくは複数の格納部であってもよい。
【００７２】
プロセッサ３０２が実行する予定のプログラムコードは、プロセッサ３０２に接続されているメモリ３０４またはフラッシュメモリに格納されているとしてよい。任意で、メモリ３０４はＲＡＭであり、フラッシュメモリ内に格納されているプログラムコード（例えば、通信モジュールまたはリフレッシュモジュール）は、プロセッサ３０２によって実行されるべくメモリ３０４にコピーされる。
【００７３】
メモリ３０４はさらに、本発明の本実施形態においてアドレスマッピングテーブル等を格納するよう構成されているとしてよい。より具体的には、システムスタート時に、ストレージコントローラ３００は、プロセッサ３０２が利用するように、フラッシュメモリに格納されているアドレスマッピングテーブル等をメモリ３０４にロードする。
【００７４】
図３に示すように、ストレージコントローラ３００のメモリ３０４はリフレッシュモジュールを含む。プロセッサ３０２は、リフレッシュモジュールのプログラムコードを実行して、フラッシュメモリデバイスに対してリフレッシュ処理を実現する。
【００７５】
任意で、メモリ３０４はさらに、図１のストレージコントローラ１１２内のウェアレべリングモジュール１３０、アドレストランスレーションモジュール１２２、エラー検査訂正モジュール１２４、または、ガベージコレクションモジュール１２６のうち１または複数を有する。
【００７６】
入出力インターフェース３０６は、入力されるデータおよび情報を受信し、処理結果等のデータを出力するよう構成されている。
【００７７】
通信インターフェース３０８は、例えば、これに限定されないが、送受信機等の送受信装置を利用して、ストレージコントローラ３００と別のデバイスまたは通信ネットワークとの間の通信を実現する。
【００７８】
バス３１０は、ストレージコントローラ３００のコンポーネント（例えば、プロセッサ３０２、メモリ３０４、入出力インターフェース３０６および通信インターフェース３０８）間で情報を転送するための経路を含むとしてよい。
【００７９】
留意していただきたいが、図３に図示しているストレージコントローラ３００に関して図示しているのはプロセッサ３０２、メモリ３０４、入出力インターフェース３０６、通信インターフェース３０８およびバス３１０のみであるが、具体的な実装プロセスにおいて、当業者であればストレージコントローラ３００はさらに、通常動作に不可欠なその他のデバイスを含む点を理解されたい。これに加えて、特定の要件によると、当業者におかれては、ストレージコントローラ３００はさらに別の追加機能を実装するためのハードウェアデバイスを含み得ると理解されたい。これに加えて、当業者におかれては、ストレージコントローラ３００はまた、図３に図示したデバイス全てではなく、本発明の本実施形態を実装するために不可欠なデバイスのみを含み得ると理解されたい。
【００８０】
図３に示すハードウェア構造および前述した説明は、本発明の実施形態で提供されるフラッシュメモリデバイスをリフレッシュするためのさまざまな装置およびシステムに適用可能であり、本発明の実施形態で提供されるフラッシュメモリデバイスをリフレッシュするさまざまな方法を実行する上で適切である。
【００８１】
図４は、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリデバイスに対するリフレッシュ処理を実装する、本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法４００を示す。図４に示すように、方法４００は以下のステップを含む。
【００８２】
Ｓ４０２：ストレージコントローラは第１のフラッシュメモリブロックから第１のデータを読み出す。
【００８３】
第１のデータは、第１のフラッシュメモリブロックにおける任意の有効ページのデータであってもよいし、または、第１のフラッシュメモリブロックにおける１または複数の有効ページのデータであってもよいし、または、第１のフラッシュメモリブロックにおける全ての有効ページのデータであってもよい。本発明の本実施形態ではこれに限定されるものではない。本明細書において、有効ページとは有効なデータが格納されているフラッシュメモリページである。
【００８４】
方法４００は、第１のフラッシュメモリブロックに対してストレージコントローラが実行する任意の読み出し処理でトリガされるとしてよい。読み出し処理の形態は、本発明の本実施形態において限定されるものではない。例えば、方法４００は、オペレーティングシステムの読み出し処理によってトリガされるとしてよい。または、方法４００は、ストレージコントローラがフラッシュメモリデバイスに対してガベージコレクションを実行する際に実行される読み出し処理によってトリガされるとしてよい。または、方法４００は、ストレージコントローラがフラッシュメモリデバイスに対してリフレッシュ処理を実行する際に実行される読み出し処理によってトリガされるとしてよい。
【００８５】
Ｓ４０４：ストレージコントローラは、第１のデータのビットエラーレートを取得する。
【００８６】
具体的には、ストレージコントローラは、第１のデータを第１のフラッシュメモリブロックから読み出した後、読み出した第１のデータをＥＣＣを利用してデコードして第２のデータを取得し、第１のデータおよび第２のデータにしたがって第１のデータのビットエラーレートを決定する。
【００８７】
例えば、第１のデータのサイズが１００ビットである場合、ＥＣＣを利用したデコーディングが成功した後、第１のデータと第２のデータとを比較する。第２のデータと第１のデータとの間で異なるビットが１０個ある場合、第２のデータはＥＣＣを利用したデコーディングが成功した後に取得されるデータであるので、第１のデータにおいて１０ビットがエラーになっていることを意味する。このため、第１のデータのビットエラーレートは１０％である。
【００８８】
ＥＣＣは、ＬＤＰＣ、ＢＣＨ等であってよい。ＥＣＣの具体的な種類は、本発明の本実施形態では限定されない。
【００８９】
Ｓ４０６：ストレージコントローラは、第１のデータのビットエラーレートが予め設定されたしきい値ｈより高いか否かを決定する。ビットエラーレートがしきい値ｈより高い場合、ストレージコントローラはステップＳ４１０を実行する。ビットエラーレートがしきい値ｈ以下の場合、ストレージコントローラはステップＳ４０８を実行する。
【００９０】
具体的には、予め設定されたしきい値ｈとはフラッシュメモリブロックのビットエラーレートについて事前に設定したしきい値である。データのビットエラーレートがしきい値ｈより高い場合、フラッシュメモリブロックのデータにエラーが発生している危険性が比較的高いことを意味しており、フラッシュメモリブロックのビットエラーレートがしきい値ｈ以下になるように制御するよう、リフレッシュサイクルを調整すべきである。
【００９１】
Ｓ４０８：ストレージコントローラは、リフレッシュサイクルＴにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する。
【００９２】
第１のデータのビットエラーレートはしきい値ｈ以下であるので、第１のフラッシュメモリブロックの現在のリフレッシュサイクルは依然として利用可能であることを意味しており、データにエラーが発生している危険性は依然として制御可能な範囲内に収まっており、読み出し処理中のＥＣＣを利用したデータのデコーディングが成功し得ると保証され得る。第１のフラッシュメモリブロックに格納されているデータのビットエラーレートがしきい値ｈに到達するまで、リフレッシュサイクルを更新する必要はないので、第１のフラッシュメモリブロックの潜在性能が活用され、第１のフラッシュメモリブロックに対するリフレッシュ処理の頻度が低くなり、リフレッシュ処理による第１のフラッシュメモリブロックの摩耗の速度が遅くなって、第１のフラッシュメモリブロックの寿命が延びる。
【００９３】
ストレージコントローラは、第１のフラッシュメモリブロック内の任意の有効ページのデータの格納時間がリフレッシュサイクルＴに到達すると第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。具体的には、ストレージコントローラは、１回のリフレッシュ処理または１回の消去処理が終了した後で、第１のフラッシュメモリブロック内の有効ページのデータの格納時間を記録するとしてよい。データの格納時間がリフレッシュサイクルＴに到達している有効ページがある場合、ストレージコントローラは、データが正確であることを保証するべく、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する。
【００９４】
第１のフラッシュメモリブロック内の全ての有効ページのデータの格納時間をモニタリングすると、ストレージコントローラに掛かる負荷が大きくなってしまう。別の実施例では、ストレージコントローラは、最後の消去処理または最後のリフレッシュ処理から経過した時間がリフレッシュサイクルＴに到達した後、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。
【００９５】
本発明の本実施形態において、リフレッシュ処理は、ストレージコントローラが第１のフラッシュメモリブロックから第３のデータを読み出して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得し、フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択して、第４のデータを第２のフラッシュメモリブロックに書き込むことであってよい。第３のデータは、第１のフラッシュメモリブロックにおける全ての有効なデータであってもよいし、または、格納時間がリフレッシュサイクルＴに到達しており且つ第１のフラッシュメモリブロックに存在する有効なデータ、すなわち、実際にリフレッシュ処理が必要な有効なデータであってもよい。
【００９６】
ストレージコントローラは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックを、第２のフラッシュメモリブロックとして選択するとしてよい。これによって、フラッシュメモリデバイスのウェアレベリングが実現されて、フラッシュメモリデバイスの寿命が延びる。ストレージコントローラは、別の方式を利用して第２のフラッシュメモリブロックを選択するとしてもよい。ストレージコントローラが第２のフラッシュメモリブロックを選択する方式は、本発明の本実施形態で限定されるものではない。
【００９７】
リフレッシュ処理は、ストレージコントローラが第１のフラッシュメモリブロックから第３のデータを読み出して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得し、第４のデータにしたがって第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を補完することであってもよい。すなわち、ストレージコントローラは、ＥＣＣを利用したデコーディングの後に取得される第４のデータにしたがって、第１のフラッシュメモリブロック内のフラッシュセルから漏出した電荷を補完して、フラッシュセルの浮遊ゲートの電荷量が再度、正確な電荷量に到達するようにする。
【００９８】
Ｓ４１０：ストレージコントローラは、消去サイクルの数にしたがって、第１のフラッシュメモリブロックのリフレッシュサイクルＴを更新する。
【００９９】
ストレージコントローラは、フラッシュメモリデバイスのフラッシュメモリブロックのリフレッシュサイクルを保持している。具体的には、ストレージコントローラは、フラッシュメモリブロックのリフレッシュサイクルをリフレッシュサイクルテーブルで整理しているとしてよい。リフレッシュサイクルテーブルは、フラッシュメモリブロックのリフレッシュサイクルと物理アドレスとの間の対応関係を格納している。ストレージコントローラは、フラッシュメモリデバイスにリフレッシュサイクルテーブルを保存するとしてよく、システムが動作すると、フラッシュメモリデバイスに格納されているリフレッシュサイクルテーブルをストレージコントローラのキャッシュにロードするとしてよい。第１のフラッシュメモリブロックのビットエラーレートが予め設定されたしきい値ｈより高い場合、ストレージコントローラは、第１のフラッシュメモリブロックの物理アドレスにしたがってリフレッシュサイクルテーブルを検索することで、第１のフラッシュメモリブロックのリフレッシュサイクルを発見して、第１のフラッシュメモリブロックのリフレッシュサイクルＴを更新するとしてよい。リフレッシュサイクルテーブルは単に説明のための一例に過ぎないと理解されたい。ストレージコントローラが第１のフラッシュメモリブロックのリフレッシュサイクルを保持する方式は、本発明の本実施形態で限定されるものではない。
【０１００】
第１のデータのビットエラーレートは既に予め設定されたしきい値ｈより高いので、第１のフラッシュメモリブロック内のデータが正確であることはもはや、第１のフラッシュメモリブロックのリフレッシュサイクルを利用していては保証することができなくなったことを意味し、第１のフラッシュメモリブロックのリフレッシュ頻度を高める必要がある。このため、ストレージコントローラは、第１のフラッシュメモリブロックの消去サイクルの数にしたがって第１のフラッシュメモリブロックのリフレッシュサイクルＴを再度決定する。すなわち、第１のフラッシュメモリブロックの消去サイクルの数にしたがって第１のフラッシュメモリブロックのリフレッシュサイクルＴを更新する。
【０１０１】
フラッシュメモリブロックの保持時間に影響を与える要因は主に、フラッシュメモリブロックの消去サイクルの数である。消去サイクルの数が多くなるにつれて、フラッシュメモリブロックの保持時間は次第に短くなる。フラッシュメモリブロックの保持時間によって、フラッシュメモリブロックのリフレッシュサイクルが決まる。フラッシュメモリブロックの保持時間が短くなると、データが正確であることを保証するためにはリフレッシュサイクルを短くする。保持時間が長くなると、リフレッシュサイクルは長くなるとしてよい。
【０１０２】
フラッシュメモリデバイスの消去サイクルの数とリフレッシュサイクルとの間には一般的な対応関係がある。数１で示すように、消去サイクルの数が増えると、リフレッシュサイクルは短くなる。リフレッシュサイクルと消去サイクルの数との間には負の相関関係がある。
【数１】
2019512116.tif 000003
【０１０３】
ＭおよびＮは定数であり、ＲＢＥＲｔｈは、ＥＣＣがサポートする最大ビットエラーレートであり、Ｃはフラッシュメモリブロックの消去サイクルの数である。数１は単に対応関係を説明するための一例に過ぎないと理解されたい。リフレッシュサイクルと消去サイクルの数との間の具体的な対応関係は、フラッシュメモリデバイスの製造プロセスが異なると、異なるとしてよい。
【０１０４】
この対応関係は、試験を利用して、そして、統計にしたがって取得するとしてよい。リフレッシュサイクルは、対応関係および消去サイクルの数にしたがって取得されるとしてよい。フラッシュメモリブロックに格納されているデータが正確であることを保証し、且つ、リフレッシュサイクルの頻繁な更新を回避するべく、対応関係にしたがって取得したリフレッシュサイクルは控えめな値である。すなわち、対応関係にしたがって取得したリフレッシュサイクルは、フラッシュメモリブロックが実際にサポートしているリフレッシュサイクルより短い。このため、対応関係にしたがって決定されたリフレッシュサイクルは、フラッシュメモリブロックのビットエラーレートが予め設定されたしきい値ｈより高くなるまで、所与の期間にわたって、フラッシュメモリブロックによって利用されるとしてよい。この時点において、リフレッシュサイクルは、消去サイクルの数および対応関係にしたがって、再度決定する必要がある。フラッシュメモリブロックが実際にサポートしているリフレッシュサイクルは、フラッシュメモリブロックのビットエラーレートがしきい値ｈ以下になることが保証される最長リフレッシュサイクルである。
【０１０５】
フラッシュメモリデバイスのフラッシュメモリブロック間にはプロセス変動が存在するので、対応関係にしたがって取得した一般的な値と、フラッシュメモリブロックが実際にサポートしているリフレッシュサイクルとの間には差がある。一部のフラッシュメモリブロックは、性能が比較的高く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が目立たず、データの保持時間が比較的長い。リフレッシュサイクルが更新された後、消去処理を数多く実行した後でもフラッシュメモリブロックが実際にサポートしているリフレッシュサイクルが依然として、対応関係にしたがって取得されたリフレッシュサイクルよりも長く、対応関係にしたがって取得したリフレッシュサイクルを比較的長期間にわたって利用することが可能である。リフレッシュ処理の頻度を下げるべく、リフレッシュサイクルの更新の頻度を低くするとしてよい。しかし、一部のフラッシュメモリブロックは、性能が比較的低く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が顕著で、データの保持時間が比較的短い。リフレッシュサイクルが更新された後、数少ない消去処理の後でフラッシュメモリブロックが実際にサポートしているリフレッシュサイクルがすぐに、対応関係にしたがって取得された一般的な値を下回り、対応関係にしたがって取得したリフレッシュサイクルが利用されるのは比較的短期間だけになり得る。データが正確であることを保証するべく、リフレッシュサイクルは高頻度で更新する必要がある。
【０１０６】
本発明の本実施形態において、複数の異なるフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロックに格納しているデータが正確であることが保証される場合、リフレッシュサイクルと消去サイクルの数との間の対応関係にしたがって、且つ、フラッシュメモリブロックに格納されているデータの実際のビットエラーレートを参照しつつ、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリブロックの潜在性能を活用する。
【０１０７】
本発明の本実施形態で開示している技術的解決手段によって、一方では、比較的性能が高いフラッシュメモリブロックのリフレッシュサイクルの更新が先送りされるので、性能が比較的高いフラッシュメモリブロックの、リフレッシュ処理による摩耗の速度が遅くなる。本発明の本実施形態で開示している技術的解決手段によって、他方では、比較的性能が低いフラッシュメモリブロックのリフレッシュサイクルの更新は相対的に高頻度で実行されるので、フラッシュメモリブロックに格納されているデータが正確であることが保証される。本発明の本実施形態で開示している技術的解決手段によると、フラッシュメモリデバイスに格納されているデータが正確であることが保証されるだけでなく、フラッシュメモリデバイスの潜在性能も活用される。リフレッシュ処理によるフラッシュメモリデバイスの摩耗の速度が遅くなるので、フラッシュメモリデバイスの全体的な性能が改善する。
【０１０８】
Ｓ４１２：ストレージコントローラは、更新後のリフレッシュサイクルＴにしたがって、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する。
【０１０９】
具体的な説明についてはステップＳ４０８を参照されたい。詳細についてはここでは説明を繰り返さない。
【０１１０】
任意で、方法４００はさらに、ストレージコントローラが書き込みアクセス要求を受信する段階と、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックを決定する段階であって、第３のフラッシュメモリブロックは、複数の利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである、段階と、書き込みアクセス要求の書き込み予定データを第３のフラッシュメモリブロックにストレージコントローラが書き込む段階とを備える。フラッシュメモリブロックは上書きすることができず、書き込み処理を実行できるようになる前に消去処理を実行する必要がある。現在利用可能なフラッシュメモリブロックとは、消去処理の後で書き込み処理を実行可能なフラッシュメモリブロックのことである。
【０１１１】
１つの書き込みアクセス要求は、複数の命令を利用してストレージコントローラに送信されるとしてよい。例えば、１つの書き込みアクセス要求の間、オペレーティングシステムは最初に、ストレージコントローラに対して、書き込み処理を実行する予定の仮想アドレスを送信するとしてよい。ストレージコントローラは、現在利用可能なフラッシュメモリブロックにしたがって、書き込み処理を実行する予定の物理アドレスを決定し、書き込みを実行する予定の仮想アドレスと書き込みを実行する予定の物理アドレスとの間のマッピング関係を構築する。オペレーティングシステムはこの後、書き込み予定データをストレージコントローラに送信して、ストレージコントローラは、決定した物理アドレスが示すストレージエリアに、書き込み予定データを書き込む。オペレーティングシステムは、１つの命令を利用して、書き込み予定データおよび書き込みを実行する予定の仮想アドレスをストレージコントローラに送信するとしてもよい。書き込みアクセス要求の具体的な実施形態は本発明の本実施形態で限定されるものではないと理解されたい。
【０１１２】
リフレッシュサイクルは本質的に、フラッシュメモリブロックの保持時間によって決まる。このため、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックをストレージコントローラが決定する段階は具体的には、フラッシュメモリブロックの保持時間にしたがって第３のフラッシュメモリブロックをストレージコントローラが決定する段階であってよい。
【０１１３】
フラッシュメモリブロックのリフレッシュサイクル（または保持時間）は、フラッシュメモリブロックの寿命を表す。このため、書き込みアクセス要求を受信した後で、ストレージコントローラは、リフレッシュサイクル（または保持時間）が長いフラッシュメモリブロックにデータを優先的に保存するので、フラッシュメモリデバイスのウェアレベリングが実現され、フラッシュメモリデバイスの寿命が延びる。
【０１１４】
任意で、方法４００はさらに、ストレージコントローラが書き込みアクセス要求を受信する段階と、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、第４のフラッシュメモリブロックを決定する段階であって、第４のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には、負の相関関係がある、段階と、書き込み予定データを第４のフラッシュメモリブロックにストレージコントローラが書き込む段階とを備える。予想格納時間は、書き込み予定データがフラッシュメモリデバイスに格納されている期間である。
【０１１５】
具体的な実装プロセスにおいて、ストレージコントローラは、データの予想格納時間を推定するとしてよい。例えば、データの予想格納時間はデータの人気度にしたがって区別するとしてよい。ホットデータの予想格納時間は比較的短く、コールドデータの予想格納時間は比較的長い。ホットデータは、リフレッシュサイクルが長いフラッシュメモリブロックに格納されるとしてよく、コールドデータは、リフレッシュサイクルが短いフラッシュメモリブロックに格納されるとしてよい。
【０１１６】
フラッシュメモリは上書きすることができず、書き込み処理を実行できるようになる前に消去処理を実行する必要がある。このため、データを更新すると、消去処理が発生し、その結果としてフラッシュメモリブロックが摩耗する。ホットデータは、更新頻度が比較的高く、フラッシュメモリブロックにおいて消去処理が頻繁に発生する。このため、ホットデータはリフレッシュサイクルが長いフラッシュメモリブロックに格納することで、フラッシュメモリデバイスのウェアレベリングを実現する。本発明の本実施形態で開示する技術的解決手段によると、フラッシュメモリデバイスのフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロックの実際のビットエラーレートをモニタリングするので、フラッシュメモリブロックの潜在性能が最大限活用される。格納されているデータが正確であることが保証されるだけでなく、リフレッシュサイクルの更新も最大限先送りされる。リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度が遅くなるので、フラッシュメモリデバイスの性能が全体的に改善する。
【０１１７】
図５は、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリデバイスに対するリフレッシュ処理を実装する、本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法５００を示す。図５に示すように、方法５００は以下のステップを含む。
【０１１８】
Ｓ５０２：ストレージコントローラは、第１のフラッシュメモリブロックのデータの格納時間がリフレッシュサイクルＴより長いか否かを決定する。データの格納時間がリフレッシュサイクルＴより長い場合、ストレージコントローラはステップＳ５０４を実行する。
【０１１９】
ストレージコントローラは、第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルＴに到達した場合にステップＳ５０４を実行するとしてよい。具体的には、ストレージコントローラは、１回のリフレッシュ処理または１回の消去処理が終了した後、第１のフラッシュメモリブロックにおける有効ページのデータの格納時間を記録するとしてよい。データの格納時間がリフレッシュサイクルＴに到達している有効ページがある場合、ストレージコントローラはステップＳ５０４を実行する。
【０１２０】
第１のフラッシュメモリブロックにおける全ての有効ページのデータの格納時間をモニタリングする場合、ストレージコントローラに対する負荷が大きくなり得る。別の実施例では、ストレージコントローラは、最後の消去処理または最後のリフレッシュ処理から経過した時間がリフレッシュサイクルＴに到達した後、ステップＳ５０４を実行するとしてよい。
【０１２１】
Ｓ５０４：ストレージコントローラは、第１のフラッシュメモリブロックからデータを読み出して、デコーディングの後に取得される結果を第２のフラッシュメモリブロックに書き込み、データのビットエラーレートを取得する。
【０１２２】
具体的には、ストレージコントローラは、第３のデータを第１のフラッシュメモリブロックから読み出して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得し、フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択して、第４のデータを第２のフラッシュメモリブロックに書き込み、第３のデータおよび第４のデータにしたがって第３のデータのビットエラーレートを決定する。第３のデータは、第１のフラッシュメモリブロックにおける全ての有効なデータであってよい。
【０１２３】
別の実装例では、ステップＳ５０４は、ストレージコントローラが第１のフラッシュメモリブロックから第３のデータを読み出して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得し、第４のデータにしたがって第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を補完することであってもよい。すなわち、ストレージコントローラは、ＥＣＣを利用したデコーディングの後に取得される第４のデータにしたがって、第１のフラッシュメモリブロック内のフラッシュセルから漏出した電荷を補完して、フラッシュセルの浮遊ゲートの電荷量が再度、正確な電荷量に到達するようにする。この後、第３のデータおよび第４のデータにしたがって第３のデータのビットエラーレートを決定する。
【０１２４】
Ｓ５０６：ストレージコントローラは、データのビットエラーレートが予め設定されたしきい値ｈより高いか否かを決定する。データのビットエラーレートが予め設定されたしきい値ｈより高い場合、ストレージコントローラはステップＳ５０８を実行する。データのビットエラーレートが予め設定されたしきい値ｈ以下の場合、ストレージコントローラは第１のフラッシュメモリブロックのリフレッシュサイクルＴを変更せずに維持する。
【０１２５】
具体的な説明についてはステップＳ４０６を参照されたい。詳細についてはここでは説明を繰り返さない。
【０１２６】
Ｓ５０８：ストレージコントローラは、第１のフラッシュメモリブロックの消去サイクルの数にしたがって、第１のフラッシュメモリブロックのリフレッシュサイクルＴを決定して更新する。
【０１２７】
具体的な説明についてはステップＳ４１０を参照されたい。詳細についてはここでは説明を繰り返さない。
【０１２８】
図５の実施形態は図４に図示した実施形態の具体的な実施例であり、図４の実施形態における特徴の説明は、図５の実施形態に適用可能であり、詳細についてはここでは説明を繰り返さないと理解されたい。
【０１２９】
本発明の本実施形態で開示されている技術的解決手段によると、フラッシュメモリブロック単位の粒度を利用して、リフレッシュ処理を実行する度に、データのビットエラーレートが予め設定されたしきい値ｈより高いか否かを決定する。ビットエラーレートが予め設定されたしきい値ｈより高い場合、フラッシュメモリブロックに格納されているデータが正確であることはもはや、フラッシュメモリブロックのリフレッシュサイクルを利用していては保証することができなくなったことを意味しており、リフレッシュサイクルは再度、消去サイクルの数にしたがって決定される。データのビットエラーレートが予め設定されたしきい値ｈ以下の場合、フラッシュメモリブロックに格納されているデータが正確であることは依然として、現在のリフレッシュサイクルを利用して保証可能であることを意味しており、現在のリフレッシュサイクルは依然として、変更しないまま維持されるとしてよい。このようにして、フラッシュメモリブロックの潜在性能を最大限活用し、フラッシュメモリブロックに対するリフレッシュ処理の頻度を最大限低くして、リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度を遅くする。
【０１３０】
図６は、本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする装置６００の論理構造の概略図である。図６に示すように、装置６００は、読出部６０２、決定部６０４およびリフレッシュ部６０６を備える。
【０１３１】
読出部６０２は、第１のフラッシュメモリブロックから第１のデータを読み出して、第１のデータのビットエラーレートを決定するよう構成されている。
【０１３２】
具体的な実装プロセスにおいて、読出部６０２は、図３に示すプロセッサ３０２およびメモリ３０４を利用して実装するとしてよい。より具体的には、プロセッサ３０２は、メモリ３０４内のリフレッシュモジュールを実行して、第１のフラッシュメモリブロックから第１のデータを読み出して、第１のデータのビットエラーレートを決定するとしてよい。
【０１３３】
読出部６０２は具体的に、第１のフラッシュメモリブロックから第１のデータを読み出して、エラー訂正符号を利用して第１のデータをデコードして、第２のデータを取得するよう構成されており、第１のデータおよび第２のデータにしたがって第１のデータのビットエラーレートを決定するよう構成されている。
【０１３４】
決定部６０４は、ビットエラーレートが予め設定されたしきい値より高い場合、第１のフラッシュメモリブロックの消去サイクルの数にしたがって、第１のフラッシュメモリブロックのリフレッシュサイクルを決定するよう構成されている。
【０１３５】
具体的な実装プロセスにおいて、決定部６０４は、図３に図示されているプロセッサ３０２およびメモリ３０４を利用して実装されるとしてよい。より具体的には、プロセッサ３０２は、メモリ３０４内のリフレッシュモジュールを実行して、第１のフラッシュメモリブロックの消去サイクルの数にしたがって第１のフラッシュメモリブロックのリフレッシュサイクルを決定するとしてよい。第１のフラッシュメモリブロックのリフレッシュサイクルと、第１のフラッシュメモリブロックの消去サイクルの数との間には、負の相関関係がある。
【０１３６】
リフレッシュ部６０６は、リフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。
【０１３７】
具体的な実装プロセスにおいて、リフレッシュ部６０６は、図３に図示されているプロセッサ３０２およびメモリ３０４を利用して実装するとしてよい。より具体的には、プロセッサ３０２は、メモリ３０４内のリフレッシュモジュールを実行して、リフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。
【０１３８】
任意で、リフレッシュ部６０６がリフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するように構成されていることは、リフレッシュ部６０６が、第１のフラッシュメモリブロック内の任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることを含む。
【０１３９】
装置６００はさらに、書込部６０８を備える。
【０１４０】
具体的な実装プロセスにおいて、書込部６０８は、図３に図示されているプロセッサ３０２およびメモリ３０４を利用して実装するとしてよい。より具体的には、プロセッサ３０２は、メモリ３０４内のリフレッシュモジュールを実行して、フラッシュメモリデバイスのフラッシュメモリブロックに対して書き込み処理を実行するとしてよい。
【０１４１】
任意で、リフレッシュ部６０６が第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部６０６が、第１のフラッシュメモリブロックから第３のデータを読み出すよう読出部６０２を制御するよう構成され、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得するよう読出部６０２を制御するよう構成されていること、および、リフレッシュ部６０６が、フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択するよう書込部６０８を制御するよう構成され、第２のフラッシュメモリブロックに第４のデータを書き込むよう書込部６０８を制御するよう構成されていることを含む。
【０１４２】
任意で、リフレッシュ部６０６が第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部６０６が、第１のフラッシュメモリブロックから第３のデータを読み出すよう読出部６０２を制御するよう構成され、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得するよう読出部６０２を制御するよう構成されていること、および、リフレッシュ部６０６が、第４のデータにしたがって第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう書込部６０８を制御するよう構成されていることを含む。
【０１４３】
装置６００はさらに、受信部６１０を備える。受信部６１０は、書き込みアクセス要求を受信するよう構成されている。
【０１４４】
具体的な実装プロセスにおいて、受信部６１０は、図３に図示されているプロセッサ３０２、メモリ３０４および通信インターフェース３０８を利用して実装するとしてよい。より具体的には、プロセッサ３０２は、メモリ３０４内の通信モジュールを実行して、通信インターフェース３０８を利用してオペレーティングシステムからのアクセス要求を受信するとしてよい。
【０１４５】
任意で、書込部６０８はさらに、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックを決定し、書き込みアクセス要求の書き込み予定データを第３のフラッシュメモリブロックに書き込むよう構成されており、第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである。
【０１４６】
任意で、書込部６０８はさらに、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第４のフラッシュメモリブロックを決定して、書き込み予定データを第４のフラッシュメモリブロックに書き込むよう構成されており、第４のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には負の相関関係がある。
【０１４７】
説明を簡単にするべく、本発明の本実施形態における読出部６０２、決定部６０４、リフレッシュ部６０６および書込部６０８の機能は、図３に図示するリフレッシュモジュールにまとめるとしてもよいと理解されたい。プロセッサ３０２は、リフレッシュモジュールのうち複数の異なる部分を実行して複数の異なる機能を実装する。しかし、具体的な実施例では、リフレッシュモジュールは機能にしたがってさらに分割されるとしてもよい。本発明の本実施形態ではこれに限定されるものではない。
【０１４８】
本発明の本実施形態は、ストレージコントローラという装置の実施形態である。図４および図５の実施形態における特徴の説明は、本発明の本実施形態に適用可能である。詳細についてはここでは説明を繰り返さない。
【０１４９】
本願で提供する複数の実施形態においては、開示したシステム、デバイスおよび方法は、他の方式で実現され得るものと理解されたい。例えば、説明した装置の実施形態は、一例に過ぎない。例えば、モジュールの区分は、単に論理的な機能の区分に過ぎず、実際に実装する際には他の区分であってもよい。例えば、複数のモジュールまたはコンポーネントを組み合わせるかもしくは別のシステムに統合するとしてもよいし、または、一部の特徴を無視するかもしくは実行しないとしてもよい。これに加えて、表示または説明した相互結合または直接結合または通信接続は、いくつかのインターフェースを介して実現するとしてもよい。装置間またはモジュール間の間接結合または通信接続は、電子的、機械的またはその他の形態で実現するとしてよい。
【０１５０】
別々の部分として説明している複数のモジュールは、物理的に分離していてもしていなくてもよいし、モジュールとして表示した部分は、物理的なモジュールであってもそうでなくてもよいし、一箇所に配置されているとしてもよいし、または、複数のネットワークモジュールに分散しているとしてもよい。一部または全てのモジュールは、実施形態の解決手段の目的を実現するために実際に必要かどうかに応じて選択されるとしてもよい。
【０１５１】
これに加えて、本発明の実施形態の複数の機能モジュールは、１つの処理モジュールに統合してもよいし、または、それぞれのモジュールは独立して物理的に存在するとしてもよいし、または、２またはそれ以上のモジュールを統合して１つのモジュールとするとしてもよい。統合モジュールは、ハードウェアの形態で実装されるとしてもよいし、または、ソフトウェア機能モジュールに加えてハードウェアの形態で実装されるとしてもよい。
【０１５２】
前述した統合モジュールをソフトウェア機能モジュールの形態で実装する場合、統合ユニットは、コンピュータ可読格納媒体に格納するとしてよい。ソフトウェア機能モジュールは、格納媒体に格納され、本発明の実施形態で説明する方法のステップの一部を実行するようコンピュータデバイス（パーソナルコンピュータ、サーバまたはネットワークデバイスであってよい）に命令するための複数の命令を含む。前述した格納媒体は、プログラムコードを格納することができる任意の媒体、例えば、取り外し可能なハードディスク、リードオンリーメモリ、ランダムアクセスメモリ、磁気ディスクまたは光ディスクを含む。
【０１５３】
最後に、前述した実施形態は単に本発明の技術的解決手段を説明することを意図しており本発明を限定することを意図してはいない点に留意されたい。本発明は前述した実施形態を参照しつつ詳細に説明しているが、当業者であれば、本発明の実施形態の技術的解決手段の範囲から逸脱することなく、前述した実施形態で説明した技術的解決手段をさらに修正してもよく、または、一部の技術的特徴を均等物で置き換えるとしてもよいことを理解されたい。
【図１】
2019512116.tif 000004
【図２】
2019512116.tif 000005
【図３】
2019512116.tif 000006
【図４】
2019512116.tif 000007
【図５】
2019512116.tif 000008
【図６】
2019512116.tif 000009
【手続補正書】
【提出日】平成30年8月28日(2018.8.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フラッシュメモリデバイスをリフレッシュする方法であって、
ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して前記第１のデータのビットエラーレートを決定する段階と、
前記ビットエラーレートが予め設定されたしきい値より高い場合、前記ストレージコントローラが前記第１のフラッシュメモリブロックの消去サイクルの数にしたがって前記第１のフラッシュメモリブロックのリフレッシュサイクルを決定する段階と、
前記リフレッシュサイクルにしたがって前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階と
を備える方法。
【請求項２】
前記ストレージコントローラが第１のデータを第１のフラッシュメモリブロックから読み出して前記第１のデータのビットエラーレートを決定する段階は、
前記ストレージコントローラが前記第１のフラッシュメモリブロックから前記第１のデータを読み出して、エラー訂正符号を利用して前記第１のデータをデコードして第２のデータを取得する段階と、
前記ストレージコントローラが前記第１のデータおよび前記第２のデータにしたがって前記第１のデータの前記ビットエラーレートを決定する段階と
を有する、請求項１に記載の方法。
【請求項３】
前記リフレッシュサイクルにしたがって前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間が前記リフレッシュサイクルに到達する場合に、前記ストレージコントローラが前記第１のフラッシュメモリブロックに対して前記リフレッシュ処理を実行する段階
を有する、請求項１または２に記載の方法。
【請求項４】
前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記ストレージコントローラが前記第１のフラッシュメモリブロックから第３のデータを読み出す段階と、
前記ストレージコントローラがエラー訂正符号を利用して前記第３のデータをデコードして第４のデータを取得する段階と、
前記ストレージコントローラが前記フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択して、前記第４のデータを前記第２のフラッシュメモリブロックに書き込む段階と
を有する、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記ストレージコントローラが前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記ストレージコントローラが前記第１のフラッシュメモリブロックから第３のデータを読み出す段階と、
前記ストレージコントローラがエラー訂正符号を利用して前記第３のデータをデコードして、第４のデータを取得する段階と、
前記ストレージコントローラが、前記第４のデータにしたがって、前記第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに対して電荷を補完する段階と
を有する、請求項１から３のいずれか一項に記載の方法。
【請求項６】
前記方法は、
前記ストレージコントローラが書き込みアクセス要求を受信する段階と、
フラッシュメモリブロックのリフレッシュサイクルにしたがって前記ストレージコントローラが第３のフラッシュメモリブロックを決定して、前記書き込みアクセス要求の書き込み予定データを前記第３のフラッシュメモリブロックに書き込む段階と
をさらに備え、
前記第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである
請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記方法は、
前記ストレージコントローラが書き込みアクセス要求を受信する段階と、
前記書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、前記ストレージコントローラが第４のフラッシュメモリブロックを決定して、前記書き込み予定データを前記第４のフラッシュメモリブロックに書き込む段階と
さらに備え、
前記第４のフラッシュメモリブロックのリフレッシュサイクルと、前記書き込み予定データの前記予想格納時間との間には、負の相関関係がある
請求項１から５のいずれか一項に記載の方法。
【請求項８】
プロセッサ、メモリおよびバスを備えるストレージコントローラであって、
前記メモリは、実行命令を格納し、前記プロセッサおよび前記メモリは、前記バスを利用して接続されており、前記ストレージコントローラが動作する場合、前記プロセッサが前記メモリに格納されている前記実行命令を実行することにより、前記ストレージコントローラは、請求項１から７のいずれか一項に記載の方法を実行する、
ストレージコントローラ。
【請求項９】
フラッシュメモリデバイスをリフレッシュする装置であって、
第１のフラッシュメモリブロックから第１のデータを読み出して前記第１のデータのビットエラーレートを決定する読出部と、
前記ビットエラーレートが予め設定されたしきい値より高い場合、前記第１のフラッシュメモリブロックの消去サイクルの数にしたがって前記第１のフラッシュメモリブロックのリフレッシュサイクルを決定する決定部と、
前記リフレッシュサイクルにしたがって前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するリフレッシュ部と
を備える装置。
【請求項１０】
前記読出部は具体的には、
前記第１のフラッシュメモリブロックから前記第１のデータを読み出して、エラー訂正符号を利用して前記第１のデータをデコードして第２のデータを取得し、
前記第１のデータおよび前記第２のデータにしたがって前記第１のデータの前記ビットエラーレートを決定する
請求項９に記載の装置。
【請求項１１】
前記リフレッシュ部が前記リフレッシュサイクルにしたがって前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行することは、
前記リフレッシュ部が、前記第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間が前記リフレッシュサイクルに到達する場合に、前記第１のフラッシュメモリブロックに対して前記リフレッシュ処理を実行することを含む
請求項９または１０に記載の装置。
【請求項１２】
前記装置はさらに、書込部を備え、
前記リフレッシュ部が前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行することは、
前記リフレッシュ部が、前記第１のフラッシュメモリブロックから第３のデータを読み出すよう前記読出部を制御して、エラー訂正符号を利用して前記第３のデータをデコードして第４のデータを取得するよう前記読出部を制御することと、
前記リフレッシュ部が、前記フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択するよう前記書込部を制御して、前記第４のデータを前記第２のフラッシュメモリブロックに書き込むよう前記書込部を制御することと
を含む、請求項９から１１のいずれか一項に記載の装置。
【請求項１３】
前記装置はさらに書込部を備え、
前記リフレッシュ部が前記第１のフラッシュメモリブロックに対してリフレッシュ処理を実行することは、
前記リフレッシュ部が、前記第１のフラッシュメモリブロックから第３のデータを読み出すよう前記読出部を制御して、エラー訂正符号を利用して前記第３のデータをデコードして第４のデータを取得するよう前記読出部を制御することと、
前記リフレッシュ部が、前記第４のデータにしたがって前記第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう前記書込部を制御することと
を含む、請求項９から１１のいずれか一項に記載の装置。
【請求項１４】
前記装置はさらに、受信部および書込部を備え、
前記受信部は、書き込みアクセス要求を受信し、
前記書込部は、フラッシュメモリブロックのリフレッシュサイクルにしたがって第３のフラッシュメモリブロックを決定し、前記書き込みアクセス要求の書き込み予定データを前記第３のフラッシュメモリブロックに書き込み、前記第３のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである
請求項９から１３のいずれか一項に記載の装置。
【請求項１５】
前記装置はさらに、受信部および書込部を備え、
前記受信部は、書き込みアクセス要求を受信し、
前記書込部は、前記書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第４のフラッシュメモリブロックを決定し、前記書き込み予定データを前記第４のフラッシュメモリブロックに書き込み、前記第４のフラッシュメモリブロックのリフレッシュサイクルと、前記書き込み予定データの前記予想格納時間との間には、負の相関関係がある
請求項９から１３のいずれか一項に記載の装置。
【請求項１６】
フラッシュメモリデバイスであって、前記フラッシュメモリデバイスは、フラッシュメモリアレイと請求項９から１５のいずれか一項に記載の装置とを備え、前記フラッシュメモリアレイは、データを格納し、前記装置は、前記フラッシュメモリアレイにおけるフラッシュメモリブロックに対してリフレッシュ処理を実行する、フラッシュメモリデバイス。
【請求項１７】
請求項１から７のいずれか一項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【請求項１８】
請求項１７に記載のコンピュータプログラムを格納しているコンピュータ可読格納媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第２の可能な実施例において、リフレッシュ部がリフレッシュサイクルにしたがって第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第１のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることを含む。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第３の可能な実施例において、上記の装置はさらに、書込部を備え、リフレッシュ部が第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第１のフラッシュメモリブロックから第３のデータを読み出すよう読出部を制御して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得するよう読出部を制御するよう構成されていることと、リフレッシュ部が、フラッシュメモリデバイスから第２のフラッシュメモリブロックを選択するよう書込部を制御して、第４のデータを第２のフラッシュメモリブロックに書き込むよう書込部を制御するよう構成されていることとを含む。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
第４の態様または第４の態様の前述した可能な実施例のうち任意の１つに関し、第４の態様の第４の可能な実施例において、上記の装置はさらに、書込部を備え、リフレッシュ部が第１のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第１のフラッシュメモリブロックから第３のデータを読み出すよう読出部を制御して、エラー訂正符号を利用して第３のデータをデコードして第４のデータを取得するよう読出部を制御するよう構成されていることと、リフレッシュ部が、第４のデータにしたがって第１のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう書込部を制御するよう構成されていることとを含む。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
第５の態様によると、本願はフラッシュメモリデバイスを提供する。当該フラッシュメモリデバイスは、フラッシュメモリアレイと、第４の態様または第４の態様の可能な実施例の任意のうち１つに応じた装置とを備え、フラッシュメモリアレイはデータを格納するよう構成されており、装置は、フラッシュメモリアレイにおけるフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
プロセス変動を考慮しない場合、リフレッシュ処理はフラッシュメモリデバイスにおいて同じ頻度で実行される。一方では、性能が比較的高いフラッシュメモリブロックの性能は十分に活用されず、リフレッシュ処理の頻度が高くなり過ぎることで、フラッシュメモリブロックの摩耗速度が早くなり得る。他方で、性能が比較的低いデータブロックは必要とするリフレッシュ頻度が相対的に高いので、性能が比較的低いデータブロックではデータエラーが発生し得る。複数の異なるフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロック単位の粒度を利用すると共に異なる頻度でフラッシュメモリデバイスに対してリフレッシュ処理を実行することで、フラッシュメモリデバイスの性能がさらに改善され得る。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
フラッシュメモリアレイ１３０の寿命は、プログラム／消去サイクルの数にしたがって計算され、ウェアレベリングモジュール１２０は、フラッシュメモリアレイ１３０のフラッシュメモリブロックがバランスよく利用されるように保証するメカニズムである。このメカニズムが無ければ、フラッシュメモリアレイ１３０の複数のフラッシュメモリブロックは、同時に寿命を迎えることはできない。論理アドレス空間におけるユーザのデータは、更新速度が異なる。一部のデータは頻繁に更新する必要があり、一部のデータは長時間にわたって変更する必要がない。このため、ＷＬメカニズムが無ければ、頻繁に更新されるデータが位置しているフラッシュメモリブロックの寿命が先に終了して、比較的低頻度で変更されるデータが位置しているフラッシュメモリブロックは摩耗がはるかに少ない。この状況を回避するべく、フラッシュメモリアレイ１３０の複数のフラッシュメモリブロックの摩耗度を比較的等しく維持するためにはＷＬメカニズムが必要とされる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
フラッシュメモリアレイ１３０は、シングルレベルセル（Ｓｉｎｇｌｅ−ｌｅｖｅｌ  ｃｅｌｌ、ＳＬＣ）またはマルチレベルセル（Ｍｕｌｔｉ−ｌｅｖｅｌ  ｃｅｌｌ、ＭＬＣ）を利用するとしてよい。各ＳＬＣは１ビットの情報を格納し、各ＭＬＣは複数ビットのデータを格納するとしてよい。本発明の本実施形態ではこれに限定されるものではない。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
任意で、メモリ３０４はさらに、図１のストレージコントローラ１１２内のウェアレべリングモジュール１２０、アドレストランスレーションモジュール１２２、エラー検査訂正モジュール１２４、または、ガベージコレクションモジュール１２６のうち１または複数を有する。
【国際調査報告】
2019512116.tif 000010
2019512116.tif 000011
2019512116.tif 000012
2019512116.tif 000013