特許第6705604号(P6705604)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特許6705604フラッシュメモリデバイスをリフレッシュする方法および装置
<>
  • 特許6705604-フラッシュメモリデバイスをリフレッシュする方法および装置 図000003
  • 特許6705604-フラッシュメモリデバイスをリフレッシュする方法および装置 図000004
  • 特許6705604-フラッシュメモリデバイスをリフレッシュする方法および装置 図000005
  • 特許6705604-フラッシュメモリデバイスをリフレッシュする方法および装置 図000006
  • 特許6705604-フラッシュメモリデバイスをリフレッシュする方法および装置 図000007
  • 特許6705604-フラッシュメモリデバイスをリフレッシュする方法および装置 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6705604
(24)【登録日】2020年5月18日
(45)【発行日】2020年6月3日
(54)【発明の名称】フラッシュメモリデバイスをリフレッシュする方法および装置
(51)【国際特許分類】
   G06F 12/00 20060101AFI20200525BHJP
   G11C 16/34 20060101ALI20200525BHJP
【FI】
   G06F12/00 564A
   G06F12/00 597U
   G11C16/34 120
【請求項の数】16
【全頁数】28
(21)【出願番号】特願2018-538693(P2018-538693)
(86)(22)【出願日】2016年3月9日
(65)【公表番号】特表2019-512116(P2019-512116A)
(43)【公表日】2019年5月9日
(86)【国際出願番号】CN2016075958
(87)【国際公開番号】WO2017152392
(87)【国際公開日】20170914
【審査請求日】2018年8月28日
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】シー、リアン
(72)【発明者】
【氏名】ディ、イェジア
(72)【発明者】
【氏名】シャー、シン ミン
(72)【発明者】
【氏名】ワン、ユアンガン
(72)【発明者】
【氏名】シャン、ドンファン
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2008−299621(JP,A)
【文献】 特開2012−133642(JP,A)
【文献】 特開2008−071490(JP,A)
【文献】 特開2015−198377(JP,A)
【文献】 特開2008−112445(JP,A)
【文献】 米国特許出願公開第2012/0163097(US,A1)
【文献】 米国特許出願公開第2008/0301525(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 16/34
(57)【特許請求の範囲】
【請求項1】
フラッシュメモリデバイスをリフレッシュする方法であって、
ストレージコントローラが第1のデータを第1のフラッシュメモリブロックから読み出して前記第1のデータのビットエラーレートを決定する段階と、
前記ビットエラーレートが予め設定されたしきい値より高い場合、前記ストレージコントローラが前記第1のフラッシュメモリブロックの消去サイクルの数にしたがって前記第1のフラッシュメモリブロックのリフレッシュサイクルを決定する段階と、
前記リフレッシュサイクルにしたがって前記ストレージコントローラが前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階と
を備え
前記リフレッシュサイクルにしたがって前記ストレージコントローラが前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記第1のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間が前記リフレッシュサイクルに到達する場合に、前記ストレージコントローラが前記第1のフラッシュメモリブロックに対して前記リフレッシュ処理を実行する段階
を有する、方法。
【請求項2】
前記ストレージコントローラが第1のデータを第1のフラッシュメモリブロックから読み出して前記第1のデータのビットエラーレートを決定する段階は、
前記ストレージコントローラが前記第1のフラッシュメモリブロックから前記第1のデータを読み出して、エラー訂正符号を利用して前記第1のデータをデコードして第2のデータを取得する段階と、
前記ストレージコントローラが前記第1のデータおよび前記第2のデータにしたがって前記第1のデータの前記ビットエラーレートを決定する段階と
を有する、請求項1に記載の方法。
【請求項3】
前記ストレージコントローラが前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記ストレージコントローラが前記第1のフラッシュメモリブロックから第3のデータを読み出す段階と、
前記ストレージコントローラがエラー訂正符号を利用して前記第3のデータをデコードして第4のデータを取得する段階と、
前記ストレージコントローラが前記フラッシュメモリデバイスから第2のフラッシュメモリブロックを選択して、前記第4のデータを前記第2のフラッシュメモリブロックに書き込む段階と
を有する、請求項1または2に記載の方法。
【請求項4】
前記ストレージコントローラが前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、
前記ストレージコントローラが前記第1のフラッシュメモリブロックから第3のデータを読み出す段階と、
前記ストレージコントローラがエラー訂正符号を利用して前記第3のデータをデコードして、第4のデータを取得する段階と、
前記ストレージコントローラが、前記第4のデータにしたがって、前記第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに対して電荷を補完する段階と
を有する、請求項1または2に記載の方法。
【請求項5】
前記方法は、
前記ストレージコントローラが書き込みアクセス要求を受信する段階と、
フラッシュメモリブロックのリフレッシュサイクルにしたがって前記ストレージコントローラが第3のフラッシュメモリブロックを決定して、前記書き込みアクセス要求の書き込み予定データを前記第3のフラッシュメモリブロックに書き込む段階と
をさらに備え、
前記第3のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである
請求項1からのいずれか一項に記載の方法。
【請求項6】
前記方法は、
前記ストレージコントローラが書き込みアクセス要求を受信する段階と、
前記書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、前記ストレージコントローラが第4のフラッシュメモリブロックを決定して、前記書き込み予定データを前記第4のフラッシュメモリブロックに書き込む段階と
さらに備え、
前記第4のフラッシュメモリブロックのリフレッシュサイクルと、前記書き込み予定データの前記予想格納時間との間には、負の相関関係がある
請求項1からのいずれか一項に記載の方法。
【請求項7】
プロセッサ、メモリおよびバスを備えるストレージコントローラであって、
前記メモリは、実行命令を格納し、前記プロセッサおよび前記メモリは、前記バスを利用して接続されており、前記ストレージコントローラが動作する場合、前記プロセッサが前記メモリに格納されている前記実行命令を実行することにより、前記ストレージコントローラは、請求項1からのいずれか一項に記載の方法を実行する、
ストレージコントローラ。
【請求項8】
フラッシュメモリデバイスをリフレッシュする装置であって、
第1のフラッシュメモリブロックから第1のデータを読み出して前記第1のデータのビットエラーレートを決定する読出部と、
前記ビットエラーレートが予め設定されたしきい値より高い場合、前記第1のフラッシュメモリブロックの消去サイクルの数にしたがって前記第1のフラッシュメモリブロックのリフレッシュサイクルを決定する決定部と、
前記リフレッシュサイクルにしたがって前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するリフレッシュ部と
を備え
前記リフレッシュ部が前記リフレッシュサイクルにしたがって前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行することは、
前記リフレッシュ部が、前記第1のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間が前記リフレッシュサイクルに到達する場合に、前記第1のフラッシュメモリブロックに対して前記リフレッシュ処理を実行することを含む、装置。
【請求項9】
前記読出部は具体的には、
前記第1のフラッシュメモリブロックから前記第1のデータを読み出して、エラー訂正符号を利用して前記第1のデータをデコードして第2のデータを取得し、
前記第1のデータおよび前記第2のデータにしたがって前記第1のデータの前記ビットエラーレートを決定する
請求項に記載の装置。
【請求項10】
前記装置はさらに、書込部を備え、
前記リフレッシュ部が前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行することは、
前記リフレッシュ部が、前記第1のフラッシュメモリブロックから第3のデータを読み出すよう前記読出部を制御して、エラー訂正符号を利用して前記第3のデータをデコードして第4のデータを取得するよう前記読出部を制御することと、
前記リフレッシュ部が、前記フラッシュメモリデバイスから第2のフラッシュメモリブロックを選択するよう前記書込部を制御して、前記第4のデータを前記第2のフラッシュメモリブロックに書き込むよう前記書込部を制御することと
を含む、請求項8または9に記載の装置。
【請求項11】
前記装置はさらに書込部を備え、
前記リフレッシュ部が前記第1のフラッシュメモリブロックに対してリフレッシュ処理を実行することは、
前記リフレッシュ部が、前記第1のフラッシュメモリブロックから第3のデータを読み出すよう前記読出部を制御して、エラー訂正符号を利用して前記第3のデータをデコードして第4のデータを取得するよう前記読出部を制御することと、
前記リフレッシュ部が、前記第4のデータにしたがって前記第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう前記書込部を制御することと
を含む、請求項8または9に記載の装置。
【請求項12】
前記装置はさらに、受信部および書込部を備え、
前記受信部は、書き込みアクセス要求を受信し、
前記書込部は、フラッシュメモリブロックのリフレッシュサイクルにしたがって第3のフラッシュメモリブロックを決定し、前記書き込みアクセス要求の書き込み予定データを前記第3のフラッシュメモリブロックに書き込み、前記第3のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである
請求項から11のいずれか一項に記載の装置。
【請求項13】
前記装置はさらに、受信部および書込部を備え、
前記受信部は、書き込みアクセス要求を受信し、
前記書込部は、前記書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第4のフラッシュメモリブロックを決定し、前記書き込み予定データを前記第4のフラッシュメモリブロックに書き込み、前記第4のフラッシュメモリブロックのリフレッシュサイクルと、前記書き込み予定データの前記予想格納時間との間には、負の相関関係がある
請求項から11のいずれか一項に記載の装置。
【請求項14】
フラッシュメモリデバイスであって、前記フラッシュメモリデバイスは、フラッシュメモリアレイと請求項から13のいずれか一項に記載の装置とを備え、前記フラッシュメモリアレイは、データを格納し、前記装置は、前記フラッシュメモリアレイにおけるフラッシュメモリブロックに対してリフレッシュ処理を実行する、フラッシュメモリデバイス。
【請求項15】
請求項1からのいずれか一項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【請求項16】
請求項15に記載のコンピュータプログラムを格納しているコンピュータ可読格納媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コンピュータの分野に関し、特に、フラッシュメモリデバイスをリフレッシュする方法および装置に関する。
【背景技術】
【0002】
フラッシュメモリに基づくソリッドステートドライブ(Solid State Drive、SSD)は、ランダムアクセス性能が望ましく、密度が低く、消費電力が少ない、といった利点のおかげで、次第に従来の磁気ディスクに取って代わるようになり、重要な格納媒体となっている。近年では、フラッシュメモリ技術は急速に発展し、記録密度は1ビットのフラッシュセルから最近ではマルチビット、例えば、6ビットのフラッシュセルへと発展を遂げ、製造技術は65ナノメートルから最近では10ナノメートルへと進化している。
【0003】
このような発展に伴い、フラッシュメモリの記録密度は急速に増加している。しかし、フラッシュメモリの信頼性は大きく低下し、フラッシュメモリの保持時間は短くなる一方である。保持時間とは、フラッシュメモリに書き込まれたデータの読み出しを確実に実行できる時間の長さである。フラッシュメモリデバイスでは、フラッシュセルの浮遊ゲートに帯電している電荷量を利用してデータを表現する。しかし、時間が経過すると電荷損失が発生する。フラッシュセルにおけるデータの読み出しを確実にできるように保証するべく、データの電荷損失によってデータエラーが発生する前にデータの読み出しを行うとしてよく、読み出したデータをその後、新しいロケーションに保存する。この処理は、リフレッシュと呼ばれる。サイズが小さくなるにつれて、フラッシュメモリブロック間のプロセス変動(Process Variation、PV)という現象が一層目立つようになる。フラッシュメモリデバイスの複数のフラッシュメモリブロックは、プロセス変動に起因して許容度がそれぞれ異なる。この現象は、プログラム/消去サイクル(P/Eサイクル)の最大数および保持時間等の多くの点における差異に反映される。
【0004】
リフレッシュは保持時間の減少に対する最も直接的な解決手段であるが、同時にリフレッシュによって冗長な処理が発生し、この処理が性能およびフラッシュメモリの寿命に影響を及ぼす。先行技術では、フラッシュメモリのリフレッシュは、効果的且つ柔軟に制御できず、この問題を解決するために新しい技術が必要である。
【発明の概要】
【0005】
これに鑑み、本発明は、フラッシュメモリデバイスをリフレッシュする方法および装置を開示して、フラッシュメモリブロック間のプロセス変動を考慮に入れて、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリデバイスに対して柔軟にリフレッシュ処理を実現する。
【0006】
第1の態様によると、本願は、フラッシュメモリデバイスをリフレッシュする方法を提供する。当該方法は、ストレージコントローラが第1のデータを第1のフラッシュメモリブロックから読み出して第1のデータのビットエラーレートを決定する段階と、第1のデータのビットエラーレートが予め設定されたしきい値より高い場合、ストレージコントローラが第1のフラッシュメモリブロックの消去サイクルの数にしたがって第1のフラッシュメモリブロックのリフレッシュサイクルを決定する段階と、決定されたリフレッシュサイクルにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階とを備える。
【0007】
ストレージコントローラは、フラッシュメモリブロック単位の粒度を利用し、且つ、データの実際のビットエラーレートにしたがって、フラッシュメモリブロックのリフレッシュサイクルを更新するか否かを決定するので、フラッシュメモリブロックのリフレッシュサイクルの更新を最大限先送りする一方でデータが正確であることを保証し、リフレッシュ処理によるフラッシュメモリブロックの摩耗の速度を遅くする。
【0008】
第1の態様に関し、第1の態様の第1の可能な実施例において、ストレージコントローラが第1のデータを第1のフラッシュメモリブロックから読み出して第1のデータのビットエラーレートを決定する段階は具体的には、ストレージコントローラが第1のフラッシュメモリブロックから第1のデータを読み出して、エラー訂正符号を利用して第1のデータをデコードして第2のデータを取得する段階と、第1のデータおよび第2のデータにしたがって第1のデータのビットエラーレートを決定する段階とを有する。
【0009】
具体的には、第2のデータは信頼できるデコードされたデータであるので、ストレージコントローラは、第1のデータおよび第2のデータの異なるデータビットを比較することによって、第1のデータのビットエラーレートを決定する。
【0010】
第1の態様または第1の態様の前述した可能な実施例のうち任意の1つに関し、第1の態様の第2の可能な実施例において、決定されたリフレッシュサイクルにしたがってストレージコントローラが第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、第1のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、ストレージコントローラが第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階を有する。
【0011】
具体的には、ストレージコントローラは、1回のリフレッシュ処理または1回の消去処理が終了した後で、第1のフラッシュメモリブロックにおける有効ページのデータの格納時間を記録するとしてよい。データの格納時間がリフレッシュサイクルに到達した有効ページがある場合、ストレージコントローラは、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行して、データが正確であることを保証する。
【0012】
任意で、第1のフラッシュメモリブロックにおける全ての有効ページのデータの格納時間をモニタリングする場合、ストレージコントローラに掛かる負荷が大きくなる。ストレージコントローラはさらに、最後の消去処理または最後のリフレッシュ処理から経過した時間がリフレッシュサイクルに到達した後で、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。
【0013】
第1の態様または第1の態様の前述した可能な実施例のうち任意の1つに関し、第1の態様の第3の可能な実施例において、ストレージコントローラが第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、ストレージコントローラが第1のフラッシュメモリブロックから第3のデータを読み出す段階と、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得する段階と、ストレージコントローラがフラッシュメモリデバイスから第2のフラッシュメモリブロックを選択して、第4のデータを第2のフラッシュメモリブロックに書き込む段階とを有する。
【0014】
ストレージコントローラは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックを第2のフラッシュメモリブロックとして利用するとしてよいので、フラッシュメモリデバイスのウェアレベリングが実現されて、フラッシュメモリデバイスの寿命が延びる。
【0015】
第1の態様または第1の態様の前述した可能な実施例のうち任意の1つに関し、第1の態様の第4の可能な実施例において、ストレージコントローラが第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する段階は、ストレージコントローラが第1のフラッシュメモリブロックから第3のデータを読み出す段階と、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得する段階と、ストレージコントローラが、第4のデータにしたがって、第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに対して電荷を補完する段階とを有する。
【0016】
ストレージコントローラは、デコーディングによって取得した第4のデータにしたがって、第1のフラッシュメモリブロックのフラッシュセルから漏出する電荷を補完するので、第1のフラッシュメモリブロックにおけるデータは正確な値に再度到達し、リフレッシュ処理に起因して第1のフラッシュメモリブロックにおいて発生する消去処理が回避され、第1のフラッシュメモリブロックの寿命が延びる。
【0017】
第1の態様または第1の態様の前述した可能な実施例のうち任意の1つに関し、第1の態様の第5の可能な実施例において、上記の方法は、ストレージコントローラが書き込みアクセス要求を受信する段階と、フラッシュメモリブロックのリフレッシュサイクルにしたがって第3のフラッシュメモリブロックを決定して、書き込みアクセス要求の書き込み予定データを第3のフラッシュメモリブロックに書き込む段階とをさらに備え、第3のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである。
【0018】
フラッシュメモリブロックのリフレッシュサイクルは、フラッシュメモリブロックの寿命を表す。このため、書き込みアクセス要求を受信した後で、ストレージコントローラは、リフレッシュサイクルが長いフラッシュメモリブロックにデータを優先的に保存するので、フラッシュメモリデバイスのウェアレベリングが実現され、フラッシュメモリデバイスの寿命が延びる。
【0019】
第1の態様または第1の態様の前述した可能な実施例のうち任意の1つに関し、第1の態様の第6の可能な実施例において、上記の方法は、ストレージコントローラが書き込みアクセス要求を受信する段階と、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、第4のフラッシュメモリブロックを決定して、書き込み予定データを第4のフラッシュメモリブロックに書き込む段階とをさらに備え、第4のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には、負の相関関係がある。
【0020】
具体的な実装プロセスにおいて、ストレージコントローラは、データの予想格納時間を推定するとしてよい。例えば、データの予想格納時間は、データの人気度にしたがって区別するとしてよい。ホットデータの予想格納時間は比較的短く、コールドデータの予想格納時間は比較的長い。ホットデータは、リフレッシュサイクルが長いフラッシュメモリブロックに格納されるとしてよく、コールドデータは、リフレッシュサイクルが短いフラッシュメモリブロックに格納されるとしてよい。ホットデータは、更新頻度が比較的高く、フラッシュメモリブロックにおいて消去処理が頻繁に発生する。このため、ホットデータは、リフレッシュサイクルが長いフラッシュメモリブロックに格納することで、フラッシュメモリデバイスのウェアレベリングを実現する。
【0021】
第2の態様によると、本願は実行命令を含む可読媒体を提供する。ストレージコントローラのプロセッサが実行命令を実行すると、ストレージコントローラは、第1の態様または第1の態様の可能な実施例のうち任意の1つの方法を実行する。
【0022】
第3の態様によると、本願はストレージコントローラを提供する。当該ストレージコントローラは、プロセッサ、メモリおよびバスを備え、メモリは、実行命令を格納するよう構成されており、プロセッサおよびメモリは、バスを利用して接続されており、ストレージコントローラが動作する場合、プロセッサがメモリに格納されている実行命令を実行することにより、ストレージコントローラは、第1の態様または第1の態様の可能な実施例のうち任意の1つの方法を実行する。
【0023】
第4の態様によると、本願はフラッシュメモリデバイスをリフレッシュする装置を提供する。当該装置は、第1のフラッシュメモリブロックから第1のデータを読み出して第1のデータのビットエラーレートを決定するよう構成されている読出部と、ビットエラーレートが予め設定されたしきい値より高い場合、第1のフラッシュメモリブロックの消去サイクルの数にしたがって第1のフラッシュメモリブロックのリフレッシュサイクルを決定するよう構成されている決定部と、リフレッシュサイクルにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されているリフレッシュ部とを備える。
【0024】
第4の態様に関し、第4の態様の第1の可能な実施例において、読出部は具体的には、第1のフラッシュメモリブロックから第1のデータを読み出して、エラー訂正符号を利用して第1のデータをデコードして第2のデータを取得するよう構成されており、第1のデータおよび第2のデータにしたがって第1のデータのビットエラーレートを決定するよう構成されている。
【0025】
第4の態様または第4の態様の前述した可能な実施例のうち任意の1つに関し、第4の態様の第2の可能な実施例において、リフレッシュ部がリフレッシュサイクルにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第1のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることを含む
【0026】
第4の態様または第4の態様の前述した可能な実施例のうち任意の1つに関し、第4の態様の第3の可能な実施例において、上記の装置はさらに、書込部を備え、リフレッシュ部が第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第1のフラッシュメモリブロックから第3のデータを読み出すよう読出部を制御して、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得するよう読出部を制御するよう構成されていることと、リフレッシュ部が、フラッシュメモリデバイスから第2のフラッシュメモリブロックを選択するよう書込部を制御して、第4のデータを第2のフラッシュメモリブロックに書き込むよう書込部を制御するよう構成されていることとを含む
【0027】
第4の態様または第4の態様の前述した可能な実施例のうち任意の1つに関し、第4の態様の第4の可能な実施例において、上記の装置はさらに、書込部を備え、リフレッシュ部が第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部が、第1のフラッシュメモリブロックから第3のデータを読み出すよう読出部を制御して、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得するよう読出部を制御するよう構成されていることと、リフレッシュ部が、第4のデータにしたがって第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう書込部を制御するよう構成されていることとを含む
【0028】
第4の態様または第4の態様の前述した可能な実施例のうち任意の1つに関し、第4の態様の第5の可能な実施例において、上記の装置はさらに、受信部および書込部を備え、受信部は、書き込みアクセス要求を受信するよう構成されており、書込部は、フラッシュメモリブロックのリフレッシュサイクルにしたがって第3のフラッシュメモリブロックを決定し、書き込みアクセス要求の書き込み予定データを第3のフラッシュメモリブロックに書き込むよう構成されており、第3のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである。
【0029】
第4の態様または第4の態様の前述した可能な実施例のうち任意の1つに関し、第4の態様の第6の可能な実施例において、上記の装置はさらに、受信部および書込部を備え、受信部は、書き込みアクセス要求を受信するよう構成されており、書込部は、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第4のフラッシュメモリブロックを決定し、書き込み予定データを第4のフラッシュメモリブロックに書き込むように構成されており、第4のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には、負の相関関係がある。
【0030】
第4の態様は、第1の態様における方法に対応する装置の実施例である。このため、第1の態様または第1の態様の可能な実施例のうち任意の1つにおける説明は、第4の態様または第4の態様の可能な実施例のうち任意の1つに対応して適用可能である。詳細についてはここでは説明を繰り返さない。
【0031】
第5の態様によると、本願はフラッシュメモリデバイスを提供する。当該フラッシュメモリデバイスは、フラッシュメモリアレイと、第4の態様または第4の態様の可能な実施例の任意のうち1つに応じた装置とを備え、フラッシュメモリアレイはデータを格納するよう構成されており、装置は、フラッシュメモリアレイにおけるフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。
【0032】
本発明で開示する技術的解決手段によると、フラッシュメモリデバイスのフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロックの実際のビットエラーレートをモニタリングするので、フラッシュメモリブロックの潜在性能が最大限活用される。格納されているデータが正確であることが保証されるだけでなく、リフレッシュサイクルの更新も最大限先送りされる。リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度が遅くなるので、フラッシュメモリデバイスの性能が全体的に改善する。
【図面の簡単な説明】
【0033】
本発明の実施形態における技術的解決手段の説明をより明確にするべく、実施形態を説明するために必要な添付図面を以下で簡単に説明する。以下の説明における添付図面は本発明の一部の実施形態を示しているに過ぎず、当業者ならば、創造的努力が無くともこれらの添付図面からさらに他の図面に想到し得ることは明らかである。
【0034】
図1】本発明の実施形態に係るフラッシュメモリデバイスにアクセスするためのシステムの論理構造を示す概略図である。
【0035】
図2】本発明の実施形態に係るフラッシュメモリのフラッシュセルを示す概略構造図である。
【0036】
図3】本発明の実施形態に係るストレージコントローラのハードウェア構造を示す概略図である。
【0037】
図4】本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法のフローチャートの一例である。
【0038】
図5】本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法のフローチャートの一例である。
【0039】
図6】本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする装置の論理構造を示す概略図である。
【発明を実施するための形態】
【0040】
以下では、添付図面を参照しつつ本発明の実施形態を説明する。
【0041】
本発明の実施形態によると、フラッシュメモリブロック間のプロセス変動を考慮しない場合、フラッシュメモリデバイスにリフレッシュ処理が実行されると全てのフラッシュメモリブロックが同じ頻度でリフレッシュされる。しかし、複数の異なるフラッシュメモリブロック間にはプロセス変動が存在する。フラッシュメモリブロックには、性能が比較的高く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が目立たず、データの保持時間が比較的長いものがある。このため、このフラッシュメモリブロックは、比較的長いリフレッシュサイクルでリフレッシュするとしてもよい。しかし、フラッシュメモリブロックには、性能が比較的低く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が顕著で、データの保持時間が比較的短いものがある。このため、このフラッシュメモリブロックは、比較的短いリフレッシュサイクルでリフレッシュするべきである。
【0042】
プロセス変動を考慮しない場合、リフレッシュ処理はフラッシュメモリデバイスにおいて同じ頻度で実行される。一方では、性能が比較的高いフラッシュメモリブロックの性能は十分に活用されず、リフレッシュ処理の頻度が高くなり過ぎることで、フラッシュメモリブロックの摩耗速度が早くなり得る。他方で、性能が比較的低いデータブロックは必要とするリフレッシュ頻度が相対的に高いので、性能が比較的低いデータブロックではデータエラーが発生し得る。複数の異なるフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロック単位の粒度を利用すると共に異なる頻度でフラッシュメモリデバイスに対してリフレッシュ処理を実行することで、フラッシュメモリデバイスの性能がさらに改善され得る。
【0043】
図1は、本発明の実施形態に係るフラッシュメモリデバイスにアクセスするシステムの論理構造の概略図100である。図1に示すように、システム100は、オペレーティングシステム102およびフラッシュメモリデバイス108を備える。
【0044】
オペレーティングシステム102は、ルーチンシステムタスク(例えば、メモリ管理、ストレージデバイス制御および電力管理)を制御および管理するために、そして、さまざまなソフトウェアコンポーネントおよびハードウェアコンポーネントの間の通信を円滑化するために利用されるさまざまなソフトウェアコンポーネントおよび/またはドライバを有する。オペレーティングシステム102は、Darwin、RTXC、Linux(登録商標)、Unix(登録商標)、OS X、MAC OSもしくはWindows(登録商標)であってもよいし、または、VxWorks等の組み込みオペレーティングシステムであってもよい。本発明の本実施形態においてこれに限定されるものではない。
【0045】
具体的には、オペレーティングシステム102は、ファイルシステム104およびドライバ106を有している。ファイルシステム104は、フラッシュメモリデバイス108上のファイルを特定するためにオペレーティングシステム102が利用する方法およびデータ構造、すなわち、フラッシュメモリデバイス108上でファイルを整理するための方法である。ファイルシステム104は、FAT、NTFS、exFAT、RAW、Ext2、Ext3、Ext4、Btrfs、ZFS、HFS、HFS+、ReiserFS、JFS、VMFS、XFSUFSまたはVXFS等、任意の種類のものであってよい。
【0046】
ユーザのアプリケーションプログラムはオペレーティングシステム102で実行される。アプリケーションプログラムは、基盤のハードウェアへのアクセスという形態で、人間と機械との間のやり取りを実現する。ドライバ106は、アプリケーションプログラムとハードウェアとの間のやり取りの橋渡し役である。一方では、アプリケーションプログラムは対応する命令をドライバ106に送信することでハードウェアを制御する。他方で、ドライバ106は、ハードウェアの読み書きステータスおよびハードウェアから取得したデータをアプリケーションプログラムに転送する。これによって、アプリケーションプログラムと基盤のハードウェアとの間のやり取りが実現される。
【0047】
オペレーティングシステム102は、アドバンスドテクノロジーアタッチメント装置(Advanced Technology Attachment、ATA)を利用してフラッシュメモリデバイス108に接続されている。
【0048】
フラッシュメモリデバイス108は、フラッシュメモリに基づくストレージデバイスであり、例えば、SSDであってよい。フラッシュメモリデバイス108は、キャッシュ110、ストレージコントローラ112およびフラッシュメモリアレイ130を有する。
【0049】
ストレージコントローラ112は、ホストインターフェース114、フラッシュトランスレーションレイヤ(Flash Translation Layer、FTL)116およびフラッシュメモリインターフェース128を含む。
【0050】
ホストインターフェース114は、ホストと接続するよう、そして、オペレーティングシステム102との間のデータ送信を制御するよう構成されている。
【0051】
フラッシュメモリインターフェース128は、フラッシュメモリアレイ130と接続するように、そして、フラッシュメモリアレイ130との間のデータ送信を制御するように構成されている。
【0052】
フラッシュトランスレーションレイヤ116は、リフレッシュモジュール118、ウェアレベリング(Wear Leveling、WL)モジュール120、アドレストランスレーションモジュール122、エラー検査訂正(Error Checking and Correction、ECC)モジュール124、ガベージコレクション(Garbage Collection、GC)モジュール126を含む。
【0053】
フラッシュメモリアレイ130は、複数のブロックに分割されているとしてよく、各ブロックはさらに複数のページに分割されているとしてよい。データはページ単位で直接書き込まれるとしてよい。しかし、データの消去はブロック単位で行う必要がある。新しいデータは、既存のデータを消去するまで書き込むことができない。しかし、オペレーティングシステム102は、ハードディスクドライブ(Hard Disk Drive、HDD)の1セクタのサイズにしたがってデータの読み書きを行うのが一般的である。この結果、オペレーティングシステム102が現在利用しているファイルシステム104を利用してSSDを管理することができず、この問題を解決するためには、ファイルシステム104に代えてより高度で複雑なファイルシステムを利用する必要がある。しかし、この場合、オペレーティングシステム102の負荷が大きくなってしまう。オペレーティングシステム102に対する負荷が増加しないように、フラッシュメモリデバイス108は、フラッシュメモリアレイ130に対する処理を仮想化して磁気ディスクの独立したセクタに対する処理とするソフトウェアを利用する。これは、フラッシュトランスレーションレイヤ116の機能である。
【0054】
フラッシュトランスレーションレイヤ116は、ファイルシステム104と物理媒体(フラッシュメモリアレイ130)との間に存在する。オペレーティングシステム102は、本来のやり方で論理ブロックアドレス(Logical Block Address、LBA)を操作するだけでよい。フラッシュトランスレーションレイヤ116は、論理アドレスから物理ブロックアドレス(Physical Block Address、PBA)へと変換する動作を全て担当する。
【0055】
リフレッシュモジュール118は、フラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。フラッシュメモリのフラッシュセルにおいては、浮遊ゲートに帯電している電荷量を利用してデータを表現する。しかし、時間が経過すると浮遊ゲートで電荷損失が発生する。この結果、フラッシュセルに格納されているデータが正確なものではなくなる。データを後で正確に読み出せるようにするには、リフレッシュモジュール118が、フラッシュセルの浮遊ゲートにおいて電荷損失によってデータエラーが発生する前に、フラッシュメモリブロックをリフレッシュする。
【0056】
具体的には、本発明の本実施形態において、リフレッシュモジュール118のリフレッシュ処理は、フラッシュメモリブロックにあるデータを読み出して新しいロケーションにデータを書き込むことであってよい。または、フラッシュメモリブロックにあるデータを読み出して、読み出したデータにしたがってフラッシュメモリブロックのフラッシュセルを局所的に充電することであってよく、これによってフラッシュセルの浮遊ゲートの電荷量が再度、正確な電荷量に到達する。より具体的には、フラッシュメモリブロックにあるデータを読み出した後、読み出したデータに対してさらにECCによる検査を実行するとしてよく、ECC検査の後に取得する結果を新しいロケーションに書き込むか、または、ECC検査の後に取得される結果にしたがってフラッシュセルを局所的に充電する。
【0057】
フラッシュメモリアレイ130の寿命は、プログラム/消去サイクルの数にしたがって計算され、ウェアレベリングモジュール120は、フラッシュメモリアレイ130のフラッシュメモリブロックがバランスよく利用されるように保証するメカニズムである。このメカニズムが無ければ、フラッシュメモリアレイ130の複数のフラッシュメモリブロックは、同時に寿命を迎えることはできない。論理アドレス空間におけるユーザのデータは、更新速度が異なる。一部のデータは頻繁に更新する必要があり、一部のデータは長時間にわたって変更する必要がない。このため、WLメカニズムが無ければ、頻繁に更新されるデータが位置しているフラッシュメモリブロックの寿命が先に終了して、比較的低頻度で変更されるデータが位置しているフラッシュメモリブロックは摩耗がはるかに少ない。この状況を回避するべく、フラッシュメモリアレイ130の複数のフラッシュメモリブロックの摩耗度を比較的等しく維持するためにはWLメカニズムが必要とされる。
【0058】
具体的には、ウェアレベリングモジュール120は、アドレストランスレーションモジュール122と協働する。オペレーティングシステム102のアプリケーションプログラムが同じ論理アドレスを書き換える度に、または、更新する度に、アドレストランスレーションモジュール122は、論理アドレスを別の異なる物理アドレスに動的にマッピングして、マッピング関係を特定の「アドレスマッピングテーブル」に保存する。古くなった物理アドレスは「無効」と記されて、後で消去処理が行われるまで待機する。ウェアレべリングモジュール120は、このマッピングプロセスにおいて、各フラッシュメモリチップのプログラム/消去頻度を制御する。このようにすることで、全てのフラッシュメモリブロックを、摩耗が同じ範囲内に収まるように、そして、同時に「老化」するように制御することができる。
【0059】
エラー検査訂正モジュール124は、データの読み出し中に、エラーを検出して訂正するよう構成されている。データが書き込まれると、ストレージコントローラ112内のエラー検査訂正モジュール124は当該データにしたがってECC署名を生成する。ECC署名は一般的に、フラッシュメモリページの後方にあるスペアエリア(Spare Area、SA)に格納される。データをフラッシュメモリページから読み出す場合、エラー検査訂正モジュール124は、ECC署名を読み出して、読み出したデータおよびECC署名にしたがって、データにエラーが発生しているか否かを決定する。読み出したデータにエラービットがあると検出される場合、検出されたエラーはECCアルゴリズムを利用して訂正する必要がある。ECCアルゴリズムは、BCHエンコーディング、LDPCエンコーディング等であってよい。本発明の本実施形態における解決手段を説明する上では、LDPCエンコーディングを利用する。しかし、本発明の本実施形態において、ECCに利用されるエンコーディングアルゴリズムは限定されるものではない旨を理解されたい。
【0060】
ガベージコレクションモジュール126は具体的には、フラッシュメモリブロック内の「有効」ページのデータを別のフラッシュメモリブロックにコピーして、古い方のフラッシュメモリブロック内のデータを完全に消去するように構成されている。従来のHDDとは異なり、フラッシュメモリアレイ130では元のデータに直接上書きすることができない。フラッシュメモリデバイス108では、新しいデータの書き込みが可能になる前に古いデータを消去する必要がある。フラッシュメモリアレイ130の場合、ガベージコレクションは、既存のデータを別のフラッシュメモリロケーションに移動させて一部の無用なデータを完全に消去するプロセスを意味する。フラッシュメモリアレイ130に対してはページ単位でデータを直接書き込むとしてよいが、フラッシュメモリアレイ130からデータを消去する場合はブロック単位で行う必要がある。このため、無用なデータを消去するためには、フラッシュメモリアレイ130においては最初に、ブロックに含まれている有用なデータを別のブロックのページにコピーする必要がある。このようにすることで、元のブロックに含まれている無用なデータをブロック単位で消去することができるようになる。新しいデータを書き込むことが可能になる前に消去を実行する必要がある。
【0061】
キャッシュ110は、スタート中に論理アドレスから物理アドレスへのマッピングに関する「アドレスマッピングテーブル」等のデータを格納するよう構成されている。ストレージコントローラ112は、「アドレスマッピングテーブル」等をフラッシュメモリアレイ130に保存する。再スタートした後に毎回、ストレージコントローラ112は「アドレスマッピングテーブル」等のデータをフラッシュメモリアレイ130からキャッシュ110にロードする。本発明の実施形態によれば、ストレージコントローラ112は、フラッシュメモリアレイ130においてフラッシュメモリブロックのリフレッシュサイクルを保持している。具体的には、ストレージコントローラは、リフレッシュサイクルテーブルを利用して、フラッシュメモリブロックのリフレッシュサイクルを保存しているとしてよい。リフレッシュサイクルテーブルは、フラッシュメモリブロックのリフレッシュサイクルと物理アドレスとの間の対応関係を含む。ストレージコントローラは、フラッシュメモリアレイ130にリフレッシュサイクルテーブルを保存するとしてよい。スタートした後に毎回、ストレージコントローラは、リフレッシュサイクルテーブルをフラッシュメモリアレイ130からキャッシュ110にロードする。
【0062】
フラッシュメモリアレイ130は、シングルレベルセル(Single−level cell、SLC)またはマルチレベルセル(Multi−level cell、MLC)を利用するとしてよい。各SLCは1ビットの情報を格納し、各MLCは複数ビットのデータを格納するとしてよい。本発明の本実施形態ではこれに限定されるものではない。
【0063】
図1は、システム100の構成要素および構成要素間の関係を一例として紹介することのみを目的とすると理解されたい。このため、説明したシステム100は大幅に簡略化している。本発明の本実施形態ではシステム100の説明は一般的なものにとどめる。実際に利用する際には、システム100が備えるコンポーネントは増減するとしてよい。本発明の本実施形態において、システム100の実施例は決して限定されるものではない。
【0064】
図2は、本発明の実施形態に係るフラッシュセル200を示す概略構造図である。図2に示すように、データは電荷の形態でフラッシュメモリのフラッシュセルに格納され、フラッシュセルにおける複数の異なるデータ状態は、浮遊ゲートの電子の電荷量を利用して区別する。格納されている電荷量は、図2の制御ゲートに印加される電圧に応じて決まる。制御ゲートは、フラッシュセルの浮遊ゲートに帯電している電荷量を制御する。浮遊ゲートに格納されている電荷が提供する電圧が特定のしきい値Vthを上回っているか否かを決定することによってデータが表現される。
【0065】
一例としてSLCを利用する。フラッシュメモリに対する書き込み(プログラミング)とは、浮遊ゲートに格納されている電荷が十分になるように、且つ、提供される電圧がしきい値Vthを上回るように制御ゲートに電圧を印加することである。この場合を「0」と表現する。フラッシュメモリに対する消去処理は、浮遊ゲートが提供する電圧がしきい値Vthを下回るように浮遊ゲートの電荷を放電することである。この場合を「1」と表現する。浮遊ゲートに電荷を持つフラッシュセルについては、浮遊ゲートの誘導作用に起因してソースとドレインとの間に正の空間電荷領域が形成される。この場合、制御ゲートにバイアス電圧が印加されるか否かに関わらず、フラッシュセルとして利用されているトランジスタはオン状態である。浮遊ゲートに電荷が無いフラッシュセルについては、ソースとドレインとの間に正の空間電荷領域を形成すると共にソースとドレインとの間に導電チャネルを形成するために、適切なバイアス電圧を制御ゲートに印加する必要がある。バイアス電圧が制御ゲートに印加されない場合、トランジスタはオフ状態となる。
【0066】
トランジスタのソースが接地されトランジスタのドレインがビットラインに接続されている場合、バイアス電圧を印加しなくても、フラッシュセルのデータはトランジスタの通電ステータスを検出することで取得することができる。ビットラインのレベルがLOWである場合、トランジスタがオン状態であることを意味し、読み出しデータは「0」である。ビットラインのレベルがHIGHレベルである場合、トランジスタがオフ状態であることを意味し、読み出しデータは「1」である。
【0067】
図2はフラッシュセルを説明するための一例として利用されると理解されたい。具体的な実施例では、フラッシュセルの構造は別の形態で実現するとしてもよい。本発明の本実施形態ではこれに限定されるものではない。
【0068】
図3は、本発明の実施形態に係るストレージコントローラ300のハードウェア構造の概略図である。図3に示すように、ストレージコントローラ300は、プロセッサ302、メモリ304、入出力インターフェース306、通信インターフェース308およびバス310を有する。プロセッサ302、メモリ304、入出力インターフェース306および通信インターフェース308は、バス310を利用して、互いに通信すると共に互いに接続されている。
【0069】
プロセッサ302は、ストレージコントローラ300の制御センターであり、本発明の本実施形態で提供する技術的解決手段を実装するための関連プログラムを実行するよう構成されている。プロセッサ302は、汎用中央演算処理装置(Central Processing Unit、CPU)、マイクロプロセッサ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、または、1もしくは複数の集積回路であってよく、本発明の本実施形態で提供する技術的解決手段を実装するための関連プログラムを実行する。
【0070】
特段の指定がない限り、本発明では、特定の機能を実行するよう構成されているコンポーネント、例えば、プロセッサ302またはメモリ304は、対応する機能を実行するよう汎用コンポーネントを構成することで実現するとしてもよいし、または、特定の機能を特に実行する専用コンポーネントを利用して実現するとしてもよい。本願ではこれに限定されるものではない。
【0071】
メモリ304は、リードオンリーメモリ(Read Only Memory、ROM)、静的ストレージデバイス、動的ストレージデバイスまたはランダムアクセスメモリ(Random Access Memory、RAM)であってよい。メモリ304は、オペレーティングシステムおよび他のアプリケーションプログラムを格納するとしてよい。本発明の本実施形態で提供する技術的解決手段をソフトウェアまたはファームウェアによって実装する場合、本発明の本実施形態で提供する技術的解決手段を実装するためのプログラムコードは、メモリ304に格納されプロセッサ302によって実行される。メモリ304は、プロセッサ302に集積化されているとしてもよいし、もしくは、プロセッサ302の内部に集積化されているとしてもよく、または、プロセッサ302から独立している1もしくは複数の格納部であってもよい。
【0072】
プロセッサ302が実行する予定のプログラムコードは、プロセッサ302に接続されているメモリ304またはフラッシュメモリに格納されているとしてよい。任意で、メモリ304はRAMであり、フラッシュメモリ内に格納されているプログラムコード(例えば、通信モジュールまたはリフレッシュモジュール)は、プロセッサ302によって実行されるべくメモリ304にコピーされる。
【0073】
メモリ304はさらに、本発明の本実施形態においてアドレスマッピングテーブル等を格納するよう構成されているとしてよい。より具体的には、システムスタート時に、ストレージコントローラ300は、プロセッサ302が利用するように、フラッシュメモリに格納されているアドレスマッピングテーブル等をメモリ304にロードする。
【0074】
図3に示すように、ストレージコントローラ300のメモリ304はリフレッシュモジュールを含む。プロセッサ302は、リフレッシュモジュールのプログラムコードを実行して、フラッシュメモリデバイスに対してリフレッシュ処理を実現する。
【0075】
任意で、メモリ304はさらに、図1のストレージコントローラ112内のウェアレべリングモジュール120、アドレストランスレーションモジュール122、エラー検査訂正モジュール124、または、ガベージコレクションモジュール126のうち1または複数を有する。
【0076】
入出力インターフェース306は、入力されるデータおよび情報を受信し、処理結果等のデータを出力するよう構成されている。
【0077】
通信インターフェース308は、例えば、これに限定されないが、送受信機等の送受信装置を利用して、ストレージコントローラ300と別のデバイスまたは通信ネットワークとの間の通信を実現する。
【0078】
バス310は、ストレージコントローラ300のコンポーネント(例えば、プロセッサ302、メモリ304、入出力インターフェース306および通信インターフェース308)間で情報を転送するための経路を含むとしてよい。
【0079】
留意していただきたいが、図3に図示しているストレージコントローラ300に関して図示しているのはプロセッサ302、メモリ304、入出力インターフェース306、通信インターフェース308およびバス310のみであるが、具体的な実装プロセスにおいて、当業者であればストレージコントローラ300はさらに、通常動作に不可欠なその他のデバイスを含む点を理解されたい。これに加えて、特定の要件によると、当業者におかれては、ストレージコントローラ300はさらに別の追加機能を実装するためのハードウェアデバイスを含み得ると理解されたい。これに加えて、当業者におかれては、ストレージコントローラ300はまた、図3に図示したデバイス全てではなく、本発明の本実施形態を実装するために不可欠なデバイスのみを含み得ると理解されたい。
【0080】
図3に示すハードウェア構造および前述した説明は、本発明の実施形態で提供されるフラッシュメモリデバイスをリフレッシュするためのさまざまな装置およびシステムに適用可能であり、本発明の実施形態で提供されるフラッシュメモリデバイスをリフレッシュするさまざまな方法を実行する上で適切である。
【0081】
図4は、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリデバイスに対するリフレッシュ処理を実装する、本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法400を示す。図4に示すように、方法400は以下のステップを含む。
【0082】
S402:ストレージコントローラは第1のフラッシュメモリブロックから第1のデータを読み出す。
【0083】
第1のデータは、第1のフラッシュメモリブロックにおける任意の有効ページのデータであってもよいし、または、第1のフラッシュメモリブロックにおける1または複数の有効ページのデータであってもよいし、または、第1のフラッシュメモリブロックにおける全ての有効ページのデータであってもよい。本発明の本実施形態ではこれに限定されるものではない。本明細書において、有効ページとは有効なデータが格納されているフラッシュメモリページである。
【0084】
方法400は、第1のフラッシュメモリブロックに対してストレージコントローラが実行する任意の読み出し処理でトリガされるとしてよい。読み出し処理の形態は、本発明の本実施形態において限定されるものではない。例えば、方法400は、オペレーティングシステムの読み出し処理によってトリガされるとしてよい。または、方法400は、ストレージコントローラがフラッシュメモリデバイスに対してガベージコレクションを実行する際に実行される読み出し処理によってトリガされるとしてよい。または、方法400は、ストレージコントローラがフラッシュメモリデバイスに対してリフレッシュ処理を実行する際に実行される読み出し処理によってトリガされるとしてよい。
【0085】
S404:ストレージコントローラは、第1のデータのビットエラーレートを取得する。
【0086】
具体的には、ストレージコントローラは、第1のデータを第1のフラッシュメモリブロックから読み出した後、読み出した第1のデータをECCを利用してデコードして第2のデータを取得し、第1のデータおよび第2のデータにしたがって第1のデータのビットエラーレートを決定する。
【0087】
例えば、第1のデータのサイズが100ビットである場合、ECCを利用したデコーディングが成功した後、第1のデータと第2のデータとを比較する。第2のデータと第1のデータとの間で異なるビットが10個ある場合、第2のデータはECCを利用したデコーディングが成功した後に取得されるデータであるので、第1のデータにおいて10ビットがエラーになっていることを意味する。このため、第1のデータのビットエラーレートは10%である。
【0088】
ECCは、LDPC、BCH等であってよい。ECCの具体的な種類は、本発明の本実施形態では限定されない。
【0089】
S406:ストレージコントローラは、第1のデータのビットエラーレートが予め設定されたしきい値hより高いか否かを決定する。ビットエラーレートがしきい値hより高い場合、ストレージコントローラはステップS410を実行する。ビットエラーレートがしきい値h以下の場合、ストレージコントローラはステップS408を実行する。
【0090】
具体的には、予め設定されたしきい値hとはフラッシュメモリブロックのビットエラーレートについて事前に設定したしきい値である。データのビットエラーレートがしきい値hより高い場合、フラッシュメモリブロックのデータにエラーが発生している危険性が比較的高いことを意味しており、フラッシュメモリブロックのビットエラーレートがしきい値h以下になるように制御するよう、リフレッシュサイクルを調整すべきである。
【0091】
S408:ストレージコントローラは、リフレッシュサイクルTにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する。
【0092】
第1のデータのビットエラーレートはしきい値h以下であるので、第1のフラッシュメモリブロックの現在のリフレッシュサイクルは依然として利用可能であることを意味しており、データにエラーが発生している危険性は依然として制御可能な範囲内に収まっており、読み出し処理中のECCを利用したデータのデコーディングが成功し得ると保証され得る。第1のフラッシュメモリブロックに格納されているデータのビットエラーレートがしきい値hに到達するまで、リフレッシュサイクルを更新する必要はないので、第1のフラッシュメモリブロックの潜在性能が活用され、第1のフラッシュメモリブロックに対するリフレッシュ処理の頻度が低くなり、リフレッシュ処理による第1のフラッシュメモリブロックの摩耗の速度が遅くなって、第1のフラッシュメモリブロックの寿命が延びる。
【0093】
ストレージコントローラは、第1のフラッシュメモリブロック内の任意の有効ページのデータの格納時間がリフレッシュサイクルTに到達すると第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。具体的には、ストレージコントローラは、1回のリフレッシュ処理または1回の消去処理が終了した後で、第1のフラッシュメモリブロック内の有効ページのデータの格納時間を記録するとしてよい。データの格納時間がリフレッシュサイクルTに到達している有効ページがある場合、ストレージコントローラは、データが正確であることを保証するべく、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する。
【0094】
第1のフラッシュメモリブロック内の全ての有効ページのデータの格納時間をモニタリングすると、ストレージコントローラに掛かる負荷が大きくなってしまう。別の実施例では、ストレージコントローラは、最後の消去処理または最後のリフレッシュ処理から経過した時間がリフレッシュサイクルTに到達した後、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。
【0095】
本発明の本実施形態において、リフレッシュ処理は、ストレージコントローラが第1のフラッシュメモリブロックから第3のデータを読み出して、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得し、フラッシュメモリデバイスから第2のフラッシュメモリブロックを選択して、第4のデータを第2のフラッシュメモリブロックに書き込むことであってよい。第3のデータは、第1のフラッシュメモリブロックにおける全ての有効なデータであってもよいし、または、格納時間がリフレッシュサイクルTに到達しており且つ第1のフラッシュメモリブロックに存在する有効なデータ、すなわち、実際にリフレッシュ処理が必要な有効なデータであってもよい。
【0096】
ストレージコントローラは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックを、第2のフラッシュメモリブロックとして選択するとしてよい。これによって、フラッシュメモリデバイスのウェアレベリングが実現されて、フラッシュメモリデバイスの寿命が延びる。ストレージコントローラは、別の方式を利用して第2のフラッシュメモリブロックを選択するとしてもよい。ストレージコントローラが第2のフラッシュメモリブロックを選択する方式は、本発明の本実施形態で限定されるものではない。
【0097】
リフレッシュ処理は、ストレージコントローラが第1のフラッシュメモリブロックから第3のデータを読み出して、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得し、第4のデータにしたがって第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を補完することであってもよい。すなわち、ストレージコントローラは、ECCを利用したデコーディングの後に取得される第4のデータにしたがって、第1のフラッシュメモリブロック内のフラッシュセルから漏出した電荷を補完して、フラッシュセルの浮遊ゲートの電荷量が再度、正確な電荷量に到達するようにする。
【0098】
S410:ストレージコントローラは、消去サイクルの数にしたがって、第1のフラッシュメモリブロックのリフレッシュサイクルTを更新する。
【0099】
ストレージコントローラは、フラッシュメモリデバイスのフラッシュメモリブロックのリフレッシュサイクルを保持している。具体的には、ストレージコントローラは、フラッシュメモリブロックのリフレッシュサイクルをリフレッシュサイクルテーブルで整理しているとしてよい。リフレッシュサイクルテーブルは、フラッシュメモリブロックのリフレッシュサイクルと物理アドレスとの間の対応関係を格納している。ストレージコントローラは、フラッシュメモリデバイスにリフレッシュサイクルテーブルを保存するとしてよく、システムが動作すると、フラッシュメモリデバイスに格納されているリフレッシュサイクルテーブルをストレージコントローラのキャッシュにロードするとしてよい。第1のフラッシュメモリブロックのビットエラーレートが予め設定されたしきい値hより高い場合、ストレージコントローラは、第1のフラッシュメモリブロックの物理アドレスにしたがってリフレッシュサイクルテーブルを検索することで、第1のフラッシュメモリブロックのリフレッシュサイクルを発見して、第1のフラッシュメモリブロックのリフレッシュサイクルTを更新するとしてよい。リフレッシュサイクルテーブルは単に説明のための一例に過ぎないと理解されたい。ストレージコントローラが第1のフラッシュメモリブロックのリフレッシュサイクルを保持する方式は、本発明の本実施形態で限定されるものではない。
【0100】
第1のデータのビットエラーレートは既に予め設定されたしきい値hより高いので、第1のフラッシュメモリブロック内のデータが正確であることはもはや、第1のフラッシュメモリブロックのリフレッシュサイクルを利用していては保証することができなくなったことを意味し、第1のフラッシュメモリブロックのリフレッシュ頻度を高める必要がある。このため、ストレージコントローラは、第1のフラッシュメモリブロックの消去サイクルの数にしたがって第1のフラッシュメモリブロックのリフレッシュサイクルTを再度決定する。すなわち、第1のフラッシュメモリブロックの消去サイクルの数にしたがって第1のフラッシュメモリブロックのリフレッシュサイクルTを更新する。
【0101】
フラッシュメモリブロックの保持時間に影響を与える要因は主に、フラッシュメモリブロックの消去サイクルの数である。消去サイクルの数が多くなるにつれて、フラッシュメモリブロックの保持時間は次第に短くなる。フラッシュメモリブロックの保持時間によって、フラッシュメモリブロックのリフレッシュサイクルが決まる。フラッシュメモリブロックの保持時間が短くなると、データが正確であることを保証するためにはリフレッシュサイクルを短くする。保持時間が長くなると、リフレッシュサイクルは長くなるとしてよい。
【0102】
フラッシュメモリデバイスの消去サイクルの数とリフレッシュサイクルとの間には一般的な対応関係がある。数1で示すように、消去サイクルの数が増えると、リフレッシュサイクルは短くなる。リフレッシュサイクルと消去サイクルの数との間には負の相関関係がある。
【数1】
【0103】
MおよびNは定数であり、RBERthは、ECCがサポートする最大ビットエラーレートであり、Cはフラッシュメモリブロックの消去サイクルの数である。数1は単に対応関係を説明するための一例に過ぎないと理解されたい。リフレッシュサイクルと消去サイクルの数との間の具体的な対応関係は、フラッシュメモリデバイスの製造プロセスが異なると、異なるとしてよい。
【0104】
この対応関係は、試験を利用して、そして、統計にしたがって取得するとしてよい。リフレッシュサイクルは、対応関係および消去サイクルの数にしたがって取得されるとしてよい。フラッシュメモリブロックに格納されているデータが正確であることを保証し、且つ、リフレッシュサイクルの頻繁な更新を回避するべく、対応関係にしたがって取得したリフレッシュサイクルは控えめな値である。すなわち、対応関係にしたがって取得したリフレッシュサイクルは、フラッシュメモリブロックが実際にサポートしているリフレッシュサイクルより短い。このため、対応関係にしたがって決定されたリフレッシュサイクルは、フラッシュメモリブロックのビットエラーレートが予め設定されたしきい値hより高くなるまで、所与の期間にわたって、フラッシュメモリブロックによって利用されるとしてよい。この時点において、リフレッシュサイクルは、消去サイクルの数および対応関係にしたがって、再度決定する必要がある。フラッシュメモリブロックが実際にサポートしているリフレッシュサイクルは、フラッシュメモリブロックのビットエラーレートがしきい値h以下になることが保証される最長リフレッシュサイクルである。
【0105】
フラッシュメモリデバイスのフラッシュメモリブロック間にはプロセス変動が存在するので、対応関係にしたがって取得した一般的な値と、フラッシュメモリブロックが実際にサポートしているリフレッシュサイクルとの間には差がある。一部のフラッシュメモリブロックは、性能が比較的高く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が目立たず、データの保持時間が比較的長い。リフレッシュサイクルが更新された後、消去処理を数多く実行した後でもフラッシュメモリブロックが実際にサポートしているリフレッシュサイクルが依然として、対応関係にしたがって取得されたリフレッシュサイクルよりも長く、対応関係にしたがって取得したリフレッシュサイクルを比較的長期間にわたって利用することが可能である。リフレッシュ処理の頻度を下げるべく、リフレッシュサイクルの更新の頻度を低くするとしてよい。しかし、一部のフラッシュメモリブロックは、性能が比較的低く、フラッシュメモリブロック内のフラッシュセルの電荷漏出が顕著で、データの保持時間が比較的短い。リフレッシュサイクルが更新された後、数少ない消去処理の後でフラッシュメモリブロックが実際にサポートしているリフレッシュサイクルがすぐに、対応関係にしたがって取得された一般的な値を下回り、対応関係にしたがって取得したリフレッシュサイクルが利用されるのは比較的短期間だけになり得る。データが正確であることを保証するべく、リフレッシュサイクルは高頻度で更新する必要がある。
【0106】
本発明の本実施形態において、複数の異なるフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロックに格納しているデータが正確であることが保証される場合、リフレッシュサイクルと消去サイクルの数との間の対応関係にしたがって、且つ、フラッシュメモリブロックに格納されているデータの実際のビットエラーレートを参照しつつ、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリブロックの潜在性能を活用する。
【0107】
本発明の本実施形態で開示している技術的解決手段によって、一方では、比較的性能が高いフラッシュメモリブロックのリフレッシュサイクルの更新が先送りされるので、性能が比較的高いフラッシュメモリブロックの、リフレッシュ処理による摩耗の速度が遅くなる。本発明の本実施形態で開示している技術的解決手段によって、他方では、比較的性能が低いフラッシュメモリブロックのリフレッシュサイクルの更新は相対的に高頻度で実行されるので、フラッシュメモリブロックに格納されているデータが正確であることが保証される。本発明の本実施形態で開示している技術的解決手段によると、フラッシュメモリデバイスに格納されているデータが正確であることが保証されるだけでなく、フラッシュメモリデバイスの潜在性能も活用される。リフレッシュ処理によるフラッシュメモリデバイスの摩耗の速度が遅くなるので、フラッシュメモリデバイスの全体的な性能が改善する。
【0108】
S412:ストレージコントローラは、更新後のリフレッシュサイクルTにしたがって、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行する。
【0109】
具体的な説明についてはステップS408を参照されたい。詳細についてはここでは説明を繰り返さない。
【0110】
任意で、方法400はさらに、ストレージコントローラが書き込みアクセス要求を受信する段階と、フラッシュメモリブロックのリフレッシュサイクルにしたがって第3のフラッシュメモリブロックを決定する段階であって、第3のフラッシュメモリブロックは、複数の利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである、段階と、書き込みアクセス要求の書き込み予定データを第3のフラッシュメモリブロックにストレージコントローラが書き込む段階とを備える。フラッシュメモリブロックは上書きすることができず、書き込み処理を実行できるようになる前に消去処理を実行する必要がある。現在利用可能なフラッシュメモリブロックとは、消去処理の後で書き込み処理を実行可能なフラッシュメモリブロックのことである。
【0111】
1つの書き込みアクセス要求は、複数の命令を利用してストレージコントローラに送信されるとしてよい。例えば、1つの書き込みアクセス要求の間、オペレーティングシステムは最初に、ストレージコントローラに対して、書き込み処理を実行する予定の仮想アドレスを送信するとしてよい。ストレージコントローラは、現在利用可能なフラッシュメモリブロックにしたがって、書き込み処理を実行する予定の物理アドレスを決定し、書き込みを実行する予定の仮想アドレスと書き込みを実行する予定の物理アドレスとの間のマッピング関係を構築する。オペレーティングシステムはこの後、書き込み予定データをストレージコントローラに送信して、ストレージコントローラは、決定した物理アドレスが示すストレージエリアに、書き込み予定データを書き込む。オペレーティングシステムは、1つの命令を利用して、書き込み予定データおよび書き込みを実行する予定の仮想アドレスをストレージコントローラに送信するとしてもよい。書き込みアクセス要求の具体的な実施形態は本発明の本実施形態で限定されるものではないと理解されたい。
【0112】
リフレッシュサイクルは本質的に、フラッシュメモリブロックの保持時間によって決まる。このため、フラッシュメモリブロックのリフレッシュサイクルにしたがって第3のフラッシュメモリブロックをストレージコントローラが決定する段階は具体的には、フラッシュメモリブロックの保持時間にしたがって第3のフラッシュメモリブロックをストレージコントローラが決定する段階であってよい。
【0113】
フラッシュメモリブロックのリフレッシュサイクル(または保持時間)は、フラッシュメモリブロックの寿命を表す。このため、書き込みアクセス要求を受信した後で、ストレージコントローラは、リフレッシュサイクル(または保持時間)が長いフラッシュメモリブロックにデータを優先的に保存するので、フラッシュメモリデバイスのウェアレベリングが実現され、フラッシュメモリデバイスの寿命が延びる。
【0114】
任意で、方法400はさらに、ストレージコントローラが書き込みアクセス要求を受信する段階と、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって、第4のフラッシュメモリブロックを決定する段階であって、第4のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には、負の相関関係がある、段階と、書き込み予定データを第4のフラッシュメモリブロックにストレージコントローラが書き込む段階とを備える。予想格納時間は、書き込み予定データがフラッシュメモリデバイスに格納されている期間である。
【0115】
具体的な実装プロセスにおいて、ストレージコントローラは、データの予想格納時間を推定するとしてよい。例えば、データの予想格納時間はデータの人気度にしたがって区別するとしてよい。ホットデータの予想格納時間は比較的短く、コールドデータの予想格納時間は比較的長い。ホットデータは、リフレッシュサイクルが長いフラッシュメモリブロックに格納されるとしてよく、コールドデータは、リフレッシュサイクルが短いフラッシュメモリブロックに格納されるとしてよい。
【0116】
フラッシュメモリは上書きすることができず、書き込み処理を実行できるようになる前に消去処理を実行する必要がある。このため、データを更新すると、消去処理が発生し、その結果としてフラッシュメモリブロックが摩耗する。ホットデータは、更新頻度が比較的高く、フラッシュメモリブロックにおいて消去処理が頻繁に発生する。このため、ホットデータはリフレッシュサイクルが長いフラッシュメモリブロックに格納することで、フラッシュメモリデバイスのウェアレベリングを実現する。本発明の本実施形態で開示する技術的解決手段によると、フラッシュメモリデバイスのフラッシュメモリブロック間のプロセス変動を考慮して、フラッシュメモリブロックの実際のビットエラーレートをモニタリングするので、フラッシュメモリブロックの潜在性能が最大限活用される。格納されているデータが正確であることが保証されるだけでなく、リフレッシュサイクルの更新も最大限先送りされる。リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度が遅くなるので、フラッシュメモリデバイスの性能が全体的に改善する。
【0117】
図5は、フラッシュメモリブロック単位の粒度を利用してフラッシュメモリデバイスに対するリフレッシュ処理を実装する、本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする方法500を示す。図5に示すように、方法500は以下のステップを含む。
【0118】
S502:ストレージコントローラは、第1のフラッシュメモリブロックのデータの格納時間がリフレッシュサイクルTより長いか否かを決定する。データの格納時間がリフレッシュサイクルTより長い場合、ストレージコントローラはステップS504を実行する。
【0119】
ストレージコントローラは、第1のフラッシュメモリブロックにおける任意の有効ページのデータの格納時間がリフレッシュサイクルTに到達した場合にステップS504を実行するとしてよい。具体的には、ストレージコントローラは、1回のリフレッシュ処理または1回の消去処理が終了した後、第1のフラッシュメモリブロックにおける有効ページのデータの格納時間を記録するとしてよい。データの格納時間がリフレッシュサイクルTに到達している有効ページがある場合、ストレージコントローラはステップS504を実行する。
【0120】
第1のフラッシュメモリブロックにおける全ての有効ページのデータの格納時間をモニタリングする場合、ストレージコントローラに対する負荷が大きくなり得る。別の実施例では、ストレージコントローラは、最後の消去処理または最後のリフレッシュ処理から経過した時間がリフレッシュサイクルTに到達した後、ステップS504を実行するとしてよい。
【0121】
S504:ストレージコントローラは、第1のフラッシュメモリブロックからデータを読み出して、デコーディングの後に取得される結果を第2のフラッシュメモリブロックに書き込み、データのビットエラーレートを取得する。
【0122】
具体的には、ストレージコントローラは、第3のデータを第1のフラッシュメモリブロックから読み出して、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得し、フラッシュメモリデバイスから第2のフラッシュメモリブロックを選択して、第4のデータを第2のフラッシュメモリブロックに書き込み、第3のデータおよび第4のデータにしたがって第3のデータのビットエラーレートを決定する。第3のデータは、第1のフラッシュメモリブロックにおける全ての有効なデータであってよい。
【0123】
別の実装例では、ステップS504は、ストレージコントローラが第1のフラッシュメモリブロックから第3のデータを読み出して、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得し、第4のデータにしたがって第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を補完することであってもよい。すなわち、ストレージコントローラは、ECCを利用したデコーディングの後に取得される第4のデータにしたがって、第1のフラッシュメモリブロック内のフラッシュセルから漏出した電荷を補完して、フラッシュセルの浮遊ゲートの電荷量が再度、正確な電荷量に到達するようにする。この後、第3のデータおよび第4のデータにしたがって第3のデータのビットエラーレートを決定する。
【0124】
S506:ストレージコントローラは、データのビットエラーレートが予め設定されたしきい値hより高いか否かを決定する。データのビットエラーレートが予め設定されたしきい値hより高い場合、ストレージコントローラはステップS508を実行する。データのビットエラーレートが予め設定されたしきい値h以下の場合、ストレージコントローラは第1のフラッシュメモリブロックのリフレッシュサイクルTを変更せずに維持する。
【0125】
具体的な説明についてはステップS406を参照されたい。詳細についてはここでは説明を繰り返さない。
【0126】
S508:ストレージコントローラは、第1のフラッシュメモリブロックの消去サイクルの数にしたがって、第1のフラッシュメモリブロックのリフレッシュサイクルTを決定して更新する。
【0127】
具体的な説明についてはステップS410を参照されたい。詳細についてはここでは説明を繰り返さない。
【0128】
図5の実施形態は図4に図示した実施形態の具体的な実施例であり、図4の実施形態における特徴の説明は、図5の実施形態に適用可能であり、詳細についてはここでは説明を繰り返さないと理解されたい。
【0129】
本発明の本実施形態で開示されている技術的解決手段によると、フラッシュメモリブロック単位の粒度を利用して、リフレッシュ処理を実行する度に、データのビットエラーレートが予め設定されたしきい値hより高いか否かを決定する。ビットエラーレートが予め設定されたしきい値hより高い場合、フラッシュメモリブロックに格納されているデータが正確であることはもはや、フラッシュメモリブロックのリフレッシュサイクルを利用していては保証することができなくなったことを意味しており、リフレッシュサイクルは再度、消去サイクルの数にしたがって決定される。データのビットエラーレートが予め設定されたしきい値h以下の場合、フラッシュメモリブロックに格納されているデータが正確であることは依然として、現在のリフレッシュサイクルを利用して保証可能であることを意味しており、現在のリフレッシュサイクルは依然として、変更しないまま維持されるとしてよい。このようにして、フラッシュメモリブロックの潜在性能を最大限活用し、フラッシュメモリブロックに対するリフレッシュ処理の頻度を最大限低くして、リフレッシュ処理に起因するフラッシュメモリブロックの摩耗の速度を遅くする。
【0130】
図6は、本発明の実施形態に係るフラッシュメモリデバイスをリフレッシュする装置600の論理構造の概略図である。図6に示すように、装置600は、読出部602、決定部604およびリフレッシュ部606を備える。
【0131】
読出部602は、第1のフラッシュメモリブロックから第1のデータを読み出して、第1のデータのビットエラーレートを決定するよう構成されている。
【0132】
具体的な実装プロセスにおいて、読出部602は、図3に示すプロセッサ302およびメモリ304を利用して実装するとしてよい。より具体的には、プロセッサ302は、メモリ304内のリフレッシュモジュールを実行して、第1のフラッシュメモリブロックから第1のデータを読み出して、第1のデータのビットエラーレートを決定するとしてよい。
【0133】
読出部602は具体的に、第1のフラッシュメモリブロックから第1のデータを読み出して、エラー訂正符号を利用して第1のデータをデコードして、第2のデータを取得するよう構成されており、第1のデータおよび第2のデータにしたがって第1のデータのビットエラーレートを決定するよう構成されている。
【0134】
決定部604は、ビットエラーレートが予め設定されたしきい値より高い場合、第1のフラッシュメモリブロックの消去サイクルの数にしたがって、第1のフラッシュメモリブロックのリフレッシュサイクルを決定するよう構成されている。
【0135】
具体的な実装プロセスにおいて、決定部604は、図3に図示されているプロセッサ302およびメモリ304を利用して実装されるとしてよい。より具体的には、プロセッサ302は、メモリ304内のリフレッシュモジュールを実行して、第1のフラッシュメモリブロックの消去サイクルの数にしたがって第1のフラッシュメモリブロックのリフレッシュサイクルを決定するとしてよい。第1のフラッシュメモリブロックのリフレッシュサイクルと、第1のフラッシュメモリブロックの消去サイクルの数との間には、負の相関関係がある。
【0136】
リフレッシュ部606は、リフレッシュサイクルにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されている。
【0137】
具体的な実装プロセスにおいて、リフレッシュ部606は、図3に図示されているプロセッサ302およびメモリ304を利用して実装するとしてよい。より具体的には、プロセッサ302は、メモリ304内のリフレッシュモジュールを実行して、リフレッシュサイクルにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するとしてよい。
【0138】
任意で、リフレッシュ部606がリフレッシュサイクルにしたがって第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するように構成されていることは、リフレッシュ部606が、第1のフラッシュメモリブロック内の任意の有効ページのデータの格納時間がリフレッシュサイクルに到達する場合に、第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることを含む。
【0139】
装置600はさらに、書込部608を備える。
【0140】
具体的な実装プロセスにおいて、書込部608は、図3に図示されているプロセッサ302およびメモリ304を利用して実装するとしてよい。より具体的には、プロセッサ302は、メモリ304内のリフレッシュモジュールを実行して、フラッシュメモリデバイスのフラッシュメモリブロックに対して書き込み処理を実行するとしてよい。
【0141】
任意で、リフレッシュ部606が第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部606が、第1のフラッシュメモリブロックから第3のデータを読み出すよう読出部602を制御するよう構成され、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得するよう読出部602を制御するよう構成されていること、および、リフレッシュ部606が、フラッシュメモリデバイスから第2のフラッシュメモリブロックを選択するよう書込部608を制御するよう構成され、第2のフラッシュメモリブロックに第4のデータを書き込むよう書込部608を制御するよう構成されていることを含む。
【0142】
任意で、リフレッシュ部606が第1のフラッシュメモリブロックに対してリフレッシュ処理を実行するよう構成されていることは、リフレッシュ部606が、第1のフラッシュメモリブロックから第3のデータを読み出すよう読出部602を制御するよう構成され、エラー訂正符号を利用して第3のデータをデコードして第4のデータを取得するよう読出部602を制御するよう構成されていること、および、リフレッシュ部606が、第4のデータにしたがって第1のフラッシュメモリブロックのフラッシュセルの浮遊ゲートに電荷を追加するよう書込部608を制御するよう構成されていることを含む。
【0143】
装置600はさらに、受信部610を備える。受信部610は、書き込みアクセス要求を受信するよう構成されている。
【0144】
具体的な実装プロセスにおいて、受信部610は、図3に図示されているプロセッサ302、メモリ304および通信インターフェース308を利用して実装するとしてよい。より具体的には、プロセッサ302は、メモリ304内の通信モジュールを実行して、通信インターフェース308を利用してオペレーティングシステムからのアクセス要求を受信するとしてよい。
【0145】
任意で、書込部608はさらに、フラッシュメモリブロックのリフレッシュサイクルにしたがって第3のフラッシュメモリブロックを決定し、書き込みアクセス要求の書き込み予定データを第3のフラッシュメモリブロックに書き込むよう構成されており、第3のフラッシュメモリブロックは、利用可能なフラッシュメモリブロックのうちリフレッシュサイクルが最も長いフラッシュメモリブロックである。
【0146】
任意で、書込部608はさらに、書き込みアクセス要求の書き込み予定データの予想格納時間にしたがって第4のフラッシュメモリブロックを決定して、書き込み予定データを第4のフラッシュメモリブロックに書き込むよう構成されており、第4のフラッシュメモリブロックのリフレッシュサイクルと、書き込み予定データの予想格納時間との間には負の相関関係がある。
【0147】
説明を簡単にするべく、本発明の本実施形態における読出部602、決定部604、リフレッシュ部606および書込部608の機能は、図3に図示するリフレッシュモジュールにまとめるとしてもよいと理解されたい。プロセッサ302は、リフレッシュモジュールのうち複数の異なる部分を実行して複数の異なる機能を実装する。しかし、具体的な実施例では、リフレッシュモジュールは機能にしたがってさらに分割されるとしてもよい。本発明の本実施形態ではこれに限定されるものではない。
【0148】
本発明の本実施形態は、ストレージコントローラという装置の実施形態である。図4および図5の実施形態における特徴の説明は、本発明の本実施形態に適用可能である。詳細についてはここでは説明を繰り返さない。
【0149】
本願で提供する複数の実施形態においては、開示したシステム、デバイスおよび方法は、他の方式で実現され得るものと理解されたい。例えば、説明した装置の実施形態は、一例に過ぎない。例えば、モジュールの区分は、単に論理的な機能の区分に過ぎず、実際に実装する際には他の区分であってもよい。例えば、複数のモジュールまたはコンポーネントを組み合わせるかもしくは別のシステムに統合するとしてもよいし、または、一部の特徴を無視するかもしくは実行しないとしてもよい。これに加えて、表示または説明した相互結合または直接結合または通信接続は、いくつかのインターフェースを介して実現するとしてもよい。装置間またはモジュール間の間接結合または通信接続は、電子的、機械的またはその他の形態で実現するとしてよい。
【0150】
別々の部分として説明している複数のモジュールは、物理的に分離していてもしていなくてもよいし、モジュールとして表示した部分は、物理的なモジュールであってもそうでなくてもよいし、一箇所に配置されているとしてもよいし、または、複数のネットワークモジュールに分散しているとしてもよい。一部または全てのモジュールは、実施形態の解決手段の目的を実現するために実際に必要かどうかに応じて選択されるとしてもよい。
【0151】
これに加えて、本発明の実施形態の複数の機能モジュールは、1つの処理モジュールに統合してもよいし、または、それぞれのモジュールは独立して物理的に存在するとしてもよいし、または、2またはそれ以上のモジュールを統合して1つのモジュールとするとしてもよい。統合モジュールは、ハードウェアの形態で実装されるとしてもよいし、または、ソフトウェア機能モジュールに加えてハードウェアの形態で実装されるとしてもよい。
【0152】
前述した統合モジュールをソフトウェア機能モジュールの形態で実装する場合、統合ユニットは、コンピュータ可読格納媒体に格納するとしてよい。ソフトウェア機能モジュールは、格納媒体に格納され、本発明の実施形態で説明する方法のステップの一部を実行するようコンピュータデバイス(パーソナルコンピュータ、サーバまたはネットワークデバイスであってよい)に命令するための複数の命令を含む。前述した格納媒体は、プログラムコードを格納することができる任意の媒体、例えば、取り外し可能なハードディスク、リードオンリーメモリ、ランダムアクセスメモリ、磁気ディスクまたは光ディスクを含む。
【0153】
最後に、前述した実施形態は単に本発明の技術的解決手段を説明することを意図しており本発明を限定することを意図してはいない点に留意されたい。本発明は前述した実施形態を参照しつつ詳細に説明しているが、当業者であれば、本発明の実施形態の技術的解決手段の範囲から逸脱することなく、前述した実施形態で説明した技術的解決手段をさらに修正してもよく、または、一部の技術的特徴を均等物で置き換えるとしてもよいことを理解されたい。
図1
図2
図3
図4
図5
図6