JP2008146253A - 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 - Google Patents
記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 Download PDFInfo
- Publication number
- JP2008146253A JP2008146253A JP2006331097A JP2006331097A JP2008146253A JP 2008146253 A JP2008146253 A JP 2008146253A JP 2006331097 A JP2006331097 A JP 2006331097A JP 2006331097 A JP2006331097 A JP 2006331097A JP 2008146253 A JP2008146253 A JP 2008146253A
- Authority
- JP
- Japan
- Prior art keywords
- block
- page
- flash memory
- pages
- recovery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】無駄な回復処理を回避し得る適切な判定が可能で、効率の良い回復処理を実現することが可能で、装置の寿命を向上させることができる記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法を提供する。
【解決手段】制御部32は、フラッシュメモリ35,36の書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、待機状態に入った際、または回復処理用の所定コマンドを受けた際に、回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する。
【選択図】図4
【解決手段】制御部32は、フラッシュメモリ35,36の書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、待機状態に入った際、または回復処理用の所定コマンドを受けた際に、回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する。
【選択図】図4
Description
本発明は、不揮発性メモリを含む記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法に関するものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やMNOS構造等を用いたトランジスタ1つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、NAND型フラッシュメモリが挙げられる。
その代表例として、NAND型フラッシュメモリが挙げられる。
図1は、NAND型フラッシュメモリの内部構成例を示す図である。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
各メモリセルN0〜N15は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量にしたがってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線BL1〜BLnからのメモリユニット1(−1〜−n)への電流貫通の有無を、センスアンプ等を含むアクセス回路4で検出してデータ判定を行う。
このようなNAND型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百マイクロ(μ)秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数m秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
すなわち、たとえば同一ワード線WL0に接続され、ページ単位を成すメモリセル群5を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック6を全て一括で消去することにより、プログラムの転送速度を向上させている。
具体的には、たとえば非特許文献1には1GbのNAND型フラッシュメモリが掲載されており、ページサイズを2kバイト、消去ブロックサイズを128kBとしている。すなわち、一つのメモリアレイ内で128kバイトのメモリセル群を並列消去し、そこにメモリセルを2kバイト毎に並列でプログラムしていくことによって、10MB/sのプログラム転送速度を実現している。
なお、同じNAND型フラッシュメモリにおいても、微細化や多値化の進展により、メモリの内部構成にはさまざまなバリエーションが存在する。
しかしメモリとしてみれば、そのアクセスはページと呼ばれる一括書き込み/読み出しの単位と、ブロックもしくは消去ブロックと呼ばれる一括消去単位を用いて実行され、ブロックが複数のページを含む構成であることは変わらない。
しかしメモリとしてみれば、そのアクセスはページと呼ばれる一括書き込み/読み出しの単位と、ブロックもしくは消去ブロックと呼ばれる一括消去単位を用いて実行され、ブロックが複数のページを含む構成であることは変わらない。
または、メモリデバイスが複数のフラッシュメモリチップを有し、それら複数チップを同時に動作させて並列書き込みを実施することもある。その場合、各々のチップにおけるページの集合体がメモリデバイスにおける実ページを構成し、それがこのメモリデバイスの一括書き込みの単位となる。このとき、各々のチップにおいて対応する消去ブロックの集合体もメモリデバイスの実消去ブロックを構成し、それらがメモリデバイスにおける一括消去単位となる。したがって、このようなメモリデバイスにおいても、一括消去単位である実消去ブロックは、互いに独立した書き込み単位たる実ページを複数含んで構成される。
なお、通常NAND型フラッシュの各ページは、たとえば2kバイトのユーザーデータ格納領域に対して64バイトの予備領域を有している。この予備領域には、NAND型フラッシュを使用するシステム側で、パリティビット等の各種管理データを格納することが可能である。この予備領域への書き込みは、通常ユーザーデータ領域への書き込みと一括で行なう必要があり、両者は常にセットとして扱われる。
また、近年微細化に伴う内部構造と書き込みメカニズムの変化から、ブロック内の各ページの書き込み順序にも制約がつくようになった。則各ページの書き込みは下位アドレスから上位アドレスへの順方向に制限されており、逆方向の書き込みは禁止されている。たとえば一旦どこかのページに書き込みを実施したら、同一ブロック内のそれより下位のアドレスが未書き込みの状態でも、そこにデータを書き込むことはできない。
ISSCC2002予稿集のp106、セッション6.4 特開平8−328762号公報
ISSCC2002予稿集のp106、セッション6.4
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかし、これによりその書き込み効率は著しく悪化する。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかし、これによりその書き込み効率は著しく悪化する。
たとえば消去ブロック内の1ページのみを書き換える際の手順を図2に示す。現在最も頻繁に使用されているのは、消去ブロック単位でアドレス変換を実施するやり方である。
この場合、アドレス変換テーブル27の論理ブロックアドレス(Logical Block Address =LBA)をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス(Phisical Block Address =PBA)を取得することができる。
この場合、アドレス変換テーブル27の論理ブロックアドレス(Logical Block Address =LBA)をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス(Phisical Block Address =PBA)を取得することができる。
たとえば、ホストまたはアプリケーションが“0x55”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“0x6B”に変換され、フラッシュメモリ20の消去ブロック21にアクセスが実施される。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
1.予め予備の消去済みブロック25を用意しておく。その物理アドレスは“0xAA”とする。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス”0x6B”が取得され、ブロック21内のページ22にアクセスがなされたとする。この時フラッシュメモリの書き換え対象ブロック21から、別途設けられたページバッファ24を介して、予備ブロック25にデータを順次コピーしていく。
3.更新対象となるページ22のコピー時には、ページバッファ24上で所望の箇所を更新してコピーを行ない、コピー先ページ26にそれが反映される。
4.有効なページデータのコピーが全て完了したら、アドレス変換テーブル27上で、ブロック21と予備ブロック25のアドレスを張り替える。
5.最後に元ブロック21の消去を実施する。
1.予め予備の消去済みブロック25を用意しておく。その物理アドレスは“0xAA”とする。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス”0x6B”が取得され、ブロック21内のページ22にアクセスがなされたとする。この時フラッシュメモリの書き換え対象ブロック21から、別途設けられたページバッファ24を介して、予備ブロック25にデータを順次コピーしていく。
3.更新対象となるページ22のコピー時には、ページバッファ24上で所望の箇所を更新してコピーを行ない、コピー先ページ26にそれが反映される。
4.有効なページデータのコピーが全て完了したら、アドレス変換テーブル27上で、ブロック21と予備ブロック25のアドレスを張り替える。
5.最後に元ブロック21の消去を実施する。
このような手順によって、以降論理ブロックアドレス“0x55”に対しては、物理ブロックアドレス“0xAA”に対応する消去ブロック、すなわち予備ブロック25がアクセスされるようになり、全体との整合性が保たれる。
しかしこの場合、1ページを更新するために、ブロック21のデータ全体を予備ブロック27に退避させる作業が必要であり、そのためにブロック21内の全データのページバッファ24への読み出しと、予備ブロック25への書き込みが必要になる。したがって現実の転送性能は著しく低いものになってしまう。
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
また、消去ブロック内の書き込み順序にも制限がついた場合、問題はさらに深刻となる。一般のファイルシステムにおいては、セクタ間の書き込み順序に保証はなされない。
したがって、消去ブロック途中から書き込みがなされることがしばしばあるが、その場合、ブロック内におけるそれより下位のアドレス領域が空いていても、そこにデータは書き込めなくなる。したがって、後でそれらの領域に書き込み要求が出ると、書き換えと同様の処理が必要となり、前述のデータ退避や消去、書き込みを繰り返さざるを得なくなってしまう。このような問題は単に転送性能を悪化させるのみならず、フラッシュメモリの消去回数を増加させ、その寿命まで低下させてしまう。
したがって、消去ブロック途中から書き込みがなされることがしばしばあるが、その場合、ブロック内におけるそれより下位のアドレス領域が空いていても、そこにデータは書き込めなくなる。したがって、後でそれらの領域に書き込み要求が出ると、書き換えと同様の処理が必要となり、前述のデータ退避や消去、書き込みを繰り返さざるを得なくなってしまう。このような問題は単に転送性能を悪化させるのみならず、フラッシュメモリの消去回数を増加させ、その寿命まで低下させてしまう。
一方このような問題を解決すべく、追記型の記憶システムが提案されている。このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
より具体的には、ページ単位で論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
たとえば、特許文献1には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。図3に一例を示す。
アドレス変換テーブル28からは、論理ページアドレス(Logical Page Address =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Address =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック21内の対応するページ領域22へアクセスが実施される。
アドレス変換テーブル28からは、論理ページアドレス(Logical Page Address =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Address =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス“0x5502”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス“0x6B05”を取得する。これによりブロック21内の対応するページ領域22へアクセスが実施される。
一方、同ページに更新を行なう際には、フラッシュメモリ内で直接かきこめる適当な空きページ領域が検索される。たとえば物理ブロックアドレス“0xAA”に相当する消去済み空きブロック25の先頭ページ領域29が適切な書き込み先として選択された場合、ページ領域22のデータのみがページバッファ24を介して更新され、ページ領域29に書き込まれる。この際論理ページアドレス“0x5502”はページ領域29の物理アドレス“0xAA00”にリマッピングされる。ページ領域22上の旧データは、当面そのまま残して無効扱いとしておく。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
しかし、このような追記型記憶システムでは、無効化した元データ領域が無駄になる。したがって、そのような領域は消去して、再度書き込みが可能となるよう回復処理を行いたい。
しかしその場合、消去ブロックが複数のページ領域を含むと、無効化されたページ領域と同じ消去ブロック内に有効データを含むページ領域が存在するケースが多発する。このようなブロックを回復させるには、消去前に有効ページのみを、他のブロックに退避させる必要がある。
しかしその場合、消去ブロックが複数のページ領域を含むと、無効化されたページ領域と同じ消去ブロック内に有効データを含むページ領域が存在するケースが多発する。このようなブロックを回復させるには、消去前に有効ページのみを、他のブロックに退避させる必要がある。
上述のような回復処理は、ホストからのデータアクセスに応じて実施されるのが普通であった。たとえばホストが書き込み対象としたブロックに十分な空き領域が無い場合、そのブロックに対して回復処理が実施される。あるいはデータアクセスでページが無効化された際、そのページを含むブロックが検査され、その状態に応じて、そのブロックに回復処理が実施される等である。
しかし、そのような対処では、データアクセスに余分な作業が付帯し、アクセスパフォーマンスが劣化してしまう。したがってこのような回復作業は、記憶装置の待機時、またはシステムのアイドル時に、ユーザーに意識されることなく実施されるのが望ましい。
また、このような回復作業は、待機時やアイドル時にやみくもに実行すれば良いというものではなく、
1.どのブロックを回復対象として選択するか?
2.いつ回復作業を実施するか?
を適切に判定する必要がある。
1.どのブロックを回復対象として選択するか?
2.いつ回復作業を実施するか?
を適切に判定する必要がある。
たとえば回復対象たるブロックに有効データを含むページが多ければ、その分退避すべきページが増える上、無効状態から消去済み状態へ回復するページ数は減少する。したがって作業の効率は非常に悪くなる。
本発明は、無駄な回復処理を回避し得る適切な判定が可能で、効率の良い回復処理を実現することが可能で、装置の寿命を向上させることができる記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法を提供することにある。
本発明の第1の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、上記フラッシュメモリのアクセスの制御を行う制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する。
好適には、第2メモリを有し、各消去ブロックごとの無効化されたページ数をカウントしたカウンタテーブルが設けられており、少なくともその一部が上記第2メモリ内に格納されており、上記制御部は、上記回復作業の対象ブロックを、上記カウンタテーブルを参照することで選定する。
好適には、上記カウンタテーブルは分割されてフラッシュメモリ内に保存されており、上記制御部は、上記選択の際にその一部を上記第2メモリ内に読み出して参照する。
好適には、上記カウンタテーブルは複数の小カウンタテーブルに分割されており、当該小カウンタテーブルごとの、カウンタ値の分布状態を示すテーブルが上記第2メモリ内に格納されており、上記制御部は、上記テーブルを参照することで適当な小カウンタテーブルを選択し、上記小カウンタテーブルを参照することで回復作業の対象ブロックを選択する。
好適には、上記制御部は、上記回復すべきブロックの選択においては、上記カウンタテーブルから無効ページ数が既定値に達したブロックを検索し、回復対象として選択する。
本発明の第2の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、上記フラッシュメモリのアクセスの制御を行う制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記回復作業を実施するか否かを自律的に判定し、その結果に応じて回復作業を実行する。
好適には、第2メモリを有し、無効化された総ページ数を示す第一のカウンタ及び未使用ブロック総数を示す第二のカウンタが上記第2メモリ内に設けられており、上記制御部は、回復作業の実行判定時には少なくとも上記第一および第二のカウンタを参照し、その結果に応じて回復作業を実行する。
好適には、上記制御部は、上記判定を、Ndp≧α・Nup+βの判定式を用いて実施し、これが真であれば回復作業を実行する。ただし、Ndpは無効化された総ページ数、Nupは未使用ページ総数あるいは未使用ブロック総数、α、βは判定係数を示す。
本発明の第3の観点の記憶装置は、主記憶媒体としてフラッシュメモリと、上記フラッシュメモリのアクセスの制御を行う制御部と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、待機状態に入った際、または回復処理用の所定コマンドを受けた際には、上記回復作業を実施するか否かを自律的に判定し、さらに回復対象となるブロックを自律的に選定し、その結果に応じて回復作業を実行する。
好適には、待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記制御部は、無効ページ数が既定値以上に達したブロックを検索し、そのようなブロックがあれば回復処理を実行し、当該記憶装置の状態を検査して、さらに回復処理を実施するか否かを判定し、上記判定の結果回復処理を実施する場合は、複数のブロックにおける無効ページ数を検査し、無効ページ数が大きなブロックを優先的に選択して、回復処理を実施する。
本発明の第4の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、上記フラッシュメモリのアクセスの制御を行う制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、システムがアイドル状態に入った際、上記回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する。
本発明の第5の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、上記フラッシュメモリのアクセスの制御を行う制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記該フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、システムがアイドル状態に入った際、上記回復作業を実施するか否かを自律的に判定し、その結果に応じて回復作業を実行する。
本発明の第6の観点のコンピュータシステムは、主記憶媒体としてフラッシュメモリと、上記フラッシュメモリのアクセスの制御を行う制御部と、上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記制御部は、上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、システムがアイドル状態に入った際、上記回復作業を実施するか否かを自律的に判定し、さらに回復対象となるブロックを自律的に選定し、その結果に応じて回復作業を実行する。
本発明の第7の観点は、主記憶媒体としてフラッシュメモリを有する記憶装置のデータ処理方法であって、上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する。
本発明によれば、待機時に自動的に、或いはホストからの回復処理の実行コマンドに応じて、無効ページの回復処理を実行する。さらにその際、記憶装置自体が内部状態を検査して、回復作業の対象となるブロックを自律的に選定する機能を持っている。無効ページの多いブロックを迅速に検索し、そのようなブロックに優先的に回復処理を施す。
本発明によれば、フラッシュメモリにおける無効ページの回復作業を最適な時期に最適なブロックに対して施すことができ、フラッシュメモリの使用効率を極限まで向上させることが出来る。これによってアクセスパフォーマンスを向上させ、装置の寿命を向上させ、さらに電力消費を削減できる。
以下、本発明の実施形態を図面に関連付けて説明する。
図4は、本発明の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステムCOMSYSは、記憶装置30、およびホストシステム(処理装置)50を主構成要素として有している。
記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38を有する。
制御回路32は、第2メモリとしてのRAM40を含み、RAM40にはワーキングエリア41が設けられ、アドレス変換テーブル42、検索テーブル43、カウンタテーブル44、ライトポインタ45、無効ページ総数のカウンタ46、未使用ページカウンタ47が構築されている。
ホストシステム50は、CPU、RAM、ROM、システムバス等を含んで構成されている。
記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38を有する。
制御回路32は、第2メモリとしてのRAM40を含み、RAM40にはワーキングエリア41が設けられ、アドレス変換テーブル42、検索テーブル43、カウンタテーブル44、ライトポインタ45、無効ページ総数のカウンタ46、未使用ページカウンタ47が構築されている。
ホストシステム50は、CPU、RAM、ROM、システムバス等を含んで構成されている。
記憶装置30の内部においては、32ビットのメモリバス38に、16ビットの入出力を持つ2チップの8GbNAND型フラッシュメモリ(フラッシュメモリチップという場合もある)35,36が並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。すなわち、メモリバス38は16ビットバスを2チャンネル備えた構成となっている。各々のフラッシュメモリは書き込みや読み出しのアクセスをたとえば4kBのページ単位で行う。したがって、実ページサイズとしては8kBが一括アクセスされることになる。
ページバッファ34はアクセスされたページ領域のデータを一時記憶する。フラッシュメモリ35,36とページバッファ34との間のデータの送受は、制御回路37で制御されている。
さらに、制御回路37は、必要に応じて転送データにECC符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ35,36は,ページバッファ34を介して記憶装置の内部バス33との間でデータを入出力する。
すなわち、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38の回路群は実質的に一つのフラッシュメモリデバイス(フラッシュメモリモジュールという場合もある)39を構成し、記憶装置30の内部バス33に接続されているとみなすことができる。その総容量は16Gb(2GB)であり、実ページサイズは8kBである。すなわち装置内には256k個のページデータが格納される。
ページバッファ34はアクセスされたページ領域のデータを一時記憶する。フラッシュメモリ35,36とページバッファ34との間のデータの送受は、制御回路37で制御されている。
さらに、制御回路37は、必要に応じて転送データにECC符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ35,36は,ページバッファ34を介して記憶装置の内部バス33との間でデータを入出力する。
すなわち、ページバッファ34、NAND型フラッシュメモリ35,36、制御回路37、およびメモリバス38の回路群は実質的に一つのフラッシュメモリデバイス(フラッシュメモリモジュールという場合もある)39を構成し、記憶装置30の内部バス33に接続されているとみなすことができる。その総容量は16Gb(2GB)であり、実ページサイズは8kBである。すなわち装置内には256k個のページデータが格納される。
さらに、内部バス33にはインターフェース回路31、および制御回路32が接続されている。
インターフェース回路31は、ATAやPCIエクスプレス等の規格にしたがってホストシステム50との間で、データやコマンドの送受を行う。
制御回路32は、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル42、正常な空きブロックを検索する検索テーブル43、各ブロックの無効ページ数を管理するカウンタテーブル44、ライトポインタ45、無効ページ総数のカウンタ46、未使用ページカウンタ47等が構築されている。
インターフェース回路31は、ATAやPCIエクスプレス等の規格にしたがってホストシステム50との間で、データやコマンドの送受を行う。
制御回路32は、記憶装置の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理する。
制御回路32に内蔵されたRAM40には、プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル42、正常な空きブロックを検索する検索テーブル43、各ブロックの無効ページ数を管理するカウンタテーブル44、ライトポインタ45、無効ページ総数のカウンタ46、未使用ページカウンタ47等が構築されている。
本コンピュータシステムCOMSYSにおいては、ホストシステム50は内蔵するCPUによって制御され、アプリケーションやオペレーティングシステム(OS)の要求に応じて、記憶装置30を介して、フラッシュメモリデバイス39にユーザーデータを保存する。
制御回路32はその間のデータ授受に介在し、アドレス変換テーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
制御回路32はその間のデータ授受に介在し、アドレス変換テーブル42等を用いてアドレス変換を伴うアクセス管理を実施する。
記憶装置30は、ハードディスクと同様に512バイト(Byte)のセクタをアクセス単位とする。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位24ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
記憶装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが“0x05502C”であった場合、上位24ビットの“0x05502”はページアドレスであり、最大1Mページを管理できる。一方、下位4ビットの“0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。
本記憶装置はページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
以下、このような記憶装置30の内部動作を説明する。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
本実施形態ではページ単位の仮想アドレス管理が採用されている。
図5は、アドレス変換テーブル42、検索テーブル43、およびカウンタテーブル44の構成例を示す図である。また、図6は、そのようなテーブルを使用したデータアクセスのフローを示す図である。記憶装置30の内部におけるフラッシュメモリデバイス39への具体的アクセスは、図6のフロー図にしたがって、以下のような手順で実行される。
<データの読み出し動作>
ステップST1:
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x005502C”のセクタドレスが入力されると、制御回路32は論理ページアドレス部(LPA)“0x005502”をインデックスにアドレス変換テーブル42を参照し、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x0060B0”を取得する。
ステップST1:
ホストシステム50からユーザーデータのアクセスコマンドとともに“0x005502C”のセクタドレスが入力されると、制御回路32は論理ページアドレス部(LPA)“0x005502”をインデックスにアドレス変換テーブル42を参照し、アクセス対象たるユーザーデータの物理ページアドレスPPA“0x0060B0”を取得する。
ステップST2:
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス“0xC”に相当する部分がページバッファ34から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ“0x005502C”のセクタを更新するとする。
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス“0xC”に相当する部分がページバッファ34から選択的にホストに出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。同じ“0x005502C”のセクタを更新するとする。
<データの更新(書き込み)動作>
ステップST1,ST2:
読み出し時と同様に、フラッシュメモリデバイス39より読み出した所望のデータをページバッファ34に格納する。
ステップST1,ST2:
読み出し時と同様に、フラッシュメモリデバイス39より読み出した所望のデータをページバッファ34に格納する。
ステップST3:
ページバッファ上で所望のセクタ箇所を更新する。
ページバッファ上で所望のセクタ箇所を更新する。
ステップST4:
更新したユーザーデータのフラッシュメモリデバイス39への書き込み先として、RAM40内に常駐した検索テーブル43およびライトポインタ45から、適当なページ領域の物理ページアドレスPPAが選択される。
更新したユーザーデータのフラッシュメモリデバイス39への書き込み先として、RAM40内に常駐した検索テーブル43およびライトポインタ45から、適当なページ領域の物理ページアドレスPPAが選択される。
ここでは簡単のため、物理ページアドレスは、上位16ビットの物理ブロックアドレス部(Phisical Block Abbress :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(28)より構成される。
検索テーブル43には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。さらに欠陥ブロックの場合、“Defect Flag”が“1”となっている。
検索テーブル43には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、“Used Flag”でマークされている。さらに欠陥ブロックの場合、“Defect Flag”が“1”となっている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスはライトポインタ45に示されており、それがインクリメントされていくことで、書き込み先のページが下位アドレスから順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの“Used Flag”と“Defect Flag”がスキャンされ、次の未使用かつ良品のブロックが検出されて、その先頭ページが選択される。
ライトポインタ45の値は現在“0x00AA01”であり、制御回路32はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス“0x00AA02”を選択する。
ステップST5:
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリデバイス39に一括書き込みされる。
書き込みが完了すると、アドレス変換テーブル42が更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。
上記物理ページアドレスをもって、フラッシュメモリデバイス39がアクセスされ、ページバッファ34内のユーザーデータがフラッシュメモリデバイス39に一括書き込みされる。
書き込みが完了すると、アドレス変換テーブル42が更新され、論理ページアドレスLPA“0x005502”に対応する物理ページアドレスPPAは“0x00AA02”に更新される。これに伴って旧物理ページアドレス“0x0060B0”に相当するページ領域は無効となる。
ステップST6:
回復判定用の各種パラメータが更新される。すなわち、上記無効ページ発生に対応して、カウンタテーブル44の、物理ブロックアドレス“0x0060”に対応するカウンタ値を“0x10”から“0x11”にインクリメントする。さらに無効ページ総数のカウンタ46を“0x0002A5”から“0x0002A6”にインクリメントする。また、上記ページ書き込みに対応して、未使用ページカウンタ47の値を一つデクリメントする。
回復判定用の各種パラメータが更新される。すなわち、上記無効ページ発生に対応して、カウンタテーブル44の、物理ブロックアドレス“0x0060”に対応するカウンタ値を“0x10”から“0x11”にインクリメントする。さらに無効ページ総数のカウンタ46を“0x0002A5”から“0x0002A6”にインクリメントする。また、上記ページ書き込みに対応して、未使用ページカウンタ47の値を一つデクリメントする。
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス“0x0060B0”に相当するページ領域はアドレス変換テーブル42の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“0x0060”に残された他の有効データは退避させる必要がある。
しかし、それらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック“0x0060”に残された他の有効データは退避させる必要がある。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから、他のブロックの空き領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
図7(A)〜(C)には消去ブロック51,52内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を、概念的に図解している。
ステップST11:
上述の如く追記による書き換えが進行し、消去ブロック51、52には、一度データが書き込まれた後、更新によって無効化されたページ領域群56、58が、有効なページ領域群55、57、59と共存しているとする。
ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、53、54は現在ライトポインタ45によって選択されて、追記用の空き領域として使用している消去ブロックを示し、ページ領域60まで書き込みがなされている。
上述の如く追記による書き換えが進行し、消去ブロック51、52には、一度データが書き込まれた後、更新によって無効化されたページ領域群56、58が、有効なページ領域群55、57、59と共存しているとする。
ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、53、54は現在ライトポインタ45によって選択されて、追記用の空き領域として使用している消去ブロックを示し、ページ領域60まで書き込みがなされている。
ステップST12:
有効なページ領域群55、57、59のデータを消去ブロック53、54内の空きページ領域群61、62、63に下詰めにして順番にコピーしていく。
一方、無効なページ領域群56、58はコピーしない。各ページの有効/無効の判定は、たとえばデータ書き込み時に冗長部に論理ページアドレスを記載しておき、それと物理ページアドレスとの対応が、アドレス変換テーブル42と一致するか否かをチェックすることで実施する。
有効ページの場合、対象ページ内のデータ全体をページバッファ34に読み込み、消去ブロック53、54に書き込むとともに、アドレス変換テーブル42を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。
この操作は、すなわち有効ページ領域群55、57、59を追記方式で書き換える作業に等しい。これにより有効ページ領域群55、57、59は全て無効化される。
またこの作業に伴って、回復判定用の各種パラメータも更新される。すなわち各ページの処理ごとに、カウンタテーブル44の該当ブロックのカウンタ値と無効ページカウンタ46がインクリメントされ、未使用ページカウンタ47がデクリメントされる。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック51、52内の全てのページは無効化され、有効ページ領域のデータは消去ブロック53、54に実質的に退避させられる。
有効なページ領域群55、57、59のデータを消去ブロック53、54内の空きページ領域群61、62、63に下詰めにして順番にコピーしていく。
一方、無効なページ領域群56、58はコピーしない。各ページの有効/無効の判定は、たとえばデータ書き込み時に冗長部に論理ページアドレスを記載しておき、それと物理ページアドレスとの対応が、アドレス変換テーブル42と一致するか否かをチェックすることで実施する。
有効ページの場合、対象ページ内のデータ全体をページバッファ34に読み込み、消去ブロック53、54に書き込むとともに、アドレス変換テーブル42を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。
この操作は、すなわち有効ページ領域群55、57、59を追記方式で書き換える作業に等しい。これにより有効ページ領域群55、57、59は全て無効化される。
またこの作業に伴って、回復判定用の各種パラメータも更新される。すなわち各ページの処理ごとに、カウンタテーブル44の該当ブロックのカウンタ値と無効ページカウンタ46がインクリメントされ、未使用ページカウンタ47がデクリメントされる。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック51、52内の全てのページは無効化され、有効ページ領域のデータは消去ブロック53、54に実質的に退避させられる。
ステップST13:
消去ブロック51、52を消去する。これに伴って検索テーブル43における該当ブロックの“Used Flag”はゼロにリセットされる。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。
回復判定用の各種パラメータもそれに併せて更新される。すなわちカウンタテーブル44の該当ブロックのカウンタ値はゼロにリセットされ、無効ページカウンタ46も1ブロック分のページ数だけデクリメントされる。未使用ページカウンタ47は1ブロック分のページ数だけインクリメントされる。
これをもって無効領域56、58は実効的に回復される。
消去ブロック51、52を消去する。これに伴って検索テーブル43における該当ブロックの“Used Flag”はゼロにリセットされる。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。
回復判定用の各種パラメータもそれに併せて更新される。すなわちカウンタテーブル44の該当ブロックのカウンタ値はゼロにリセットされ、無効ページカウンタ46も1ブロック分のページ数だけデクリメントされる。未使用ページカウンタ47は1ブロック分のページ数だけインクリメントされる。
これをもって無効領域56、58は実効的に回復される。
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上のための各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
ところで、上記回復処理は、記憶装置の待機時やシステムのアイドル時に実施することで、ユーザーからその存在を隠蔽できる。この場合たとえば、待機状態に入ると自動的に回復処理を実施する機能を記憶装置30に設けたり、またはシステムがアイドル状態になるとホストシステム50が回復処理用のコマンドを送信し、それに応じて記憶装置30が回復処理を実行する。
この際、本当に回復処理を実行すべきか否かを判定し、かつ回復処理の対象ブロックを選定する機能が、システム中のどこかに必要となる。たとえばフラッシュメモリ内に多くの未使用領域が残っており、僅かな無効ページしか存在しない状態で無理に回復処理を実行しても、殆ど効果は得られない。むしろ無駄な書き込みや消去が発生してしまい、電力消費が増える上、フラッシュメモリの寿命を縮めてしまう。
一方、いつまでも回復作業をせぬまま放置すると、ユーザーから書き込みコマンドを受けた際に未使用領域が不足してしまい、まずは回復作業から実行しなければならなくなる。これは大きなアクセスレイテンシとなって、システムのパフォーマンスを劣化させてしまう。
この際、本当に回復処理を実行すべきか否かを判定し、かつ回復処理の対象ブロックを選定する機能が、システム中のどこかに必要となる。たとえばフラッシュメモリ内に多くの未使用領域が残っており、僅かな無効ページしか存在しない状態で無理に回復処理を実行しても、殆ど効果は得られない。むしろ無駄な書き込みや消去が発生してしまい、電力消費が増える上、フラッシュメモリの寿命を縮めてしまう。
一方、いつまでも回復作業をせぬまま放置すると、ユーザーから書き込みコマンドを受けた際に未使用領域が不足してしまい、まずは回復作業から実行しなければならなくなる。これは大きなアクセスレイテンシとなって、システムのパフォーマンスを劣化させてしまう。
ここでは上記回復処理と、それを実行するか否かの判定、及び回復対象ブロックの選択をひとまとまりの作業グループとみなして回復シーケンスと呼ぶ。回復シーケンスは記憶装置30に実装されており、ホストシステム50からの回復処理実行コマンドに応じて、あるいは記憶装置が待機状態に入った際に自動的に実行される。
上記一連の作業を回復シーケンスとして図8に示す。たとえば記憶装置30は、待機状態に入った際、まず回復処理が必要か否かを判定する。それはたとえば装置内の無効ページ総数や空きページ総数等をチェックすることで実施され、回復処理が必要と判定された場合、以下の回復シーケンスを実行する。
ステップST21:
まず、カウンタテーブル44をスキャンして、即時回復が可能なブロックを検索する。たとえばカウンタ値が”0xFF”のブロックは全てのページが無効化されており、有効ページを退避すること無しに、消去のみで回復できる。すなわち既に最も効率よく回復処理を実行できる状態になっており、回復処理を遅らせてもこれ以上ブロック内の無効ページは増えない。このようなブロックは即時回復処理を実施した方が良い。
なお、即時消去の基準はたとえば”0xF0”以上とする等、一定値以上として幅を持たせても良い。このようなブロックも僅かな退避処理で消去することができ、効率良く回復処理が実施できる。検索して即時回復が可能なブロックがなければ、次の判定作業に進む。
まず、カウンタテーブル44をスキャンして、即時回復が可能なブロックを検索する。たとえばカウンタ値が”0xFF”のブロックは全てのページが無効化されており、有効ページを退避すること無しに、消去のみで回復できる。すなわち既に最も効率よく回復処理を実行できる状態になっており、回復処理を遅らせてもこれ以上ブロック内の無効ページは増えない。このようなブロックは即時回復処理を実施した方が良い。
なお、即時消去の基準はたとえば”0xF0”以上とする等、一定値以上として幅を持たせても良い。このようなブロックも僅かな退避処理で消去することができ、効率良く回復処理が実施できる。検索して即時回復が可能なブロックがなければ、次の判定作業に進む。
ステップST22:
ステップST21で即時回復可能なブロックが検出されたら、そのブロックを回復対象として、図7のような回復処理を実施する。なお、全てのページが無効化されたブロックに対しては、無効化判定と退避処理を最初から省略し、最初から消去のみを実施して、各種テーブルや判定パラメータを更新しても良い。
ステップST21で即時回復可能なブロックが検出されたら、そのブロックを回復対象として、図7のような回復処理を実施する。なお、全てのページが無効化されたブロックに対しては、無効化判定と退避処理を最初から省略し、最初から消去のみを実施して、各種テーブルや判定パラメータを更新しても良い。
ステップST23:
即時回復可能なブロックが検出されなくなったら、その先さらに回復処理を実施するか否かの判定を行う。なおここに残った使用済みブロックは、回復を遅らせることで無効ページが増えていき、より効率良く回復処理を実施できるようになるかも知れない。したがって、記憶装置の状態を検査して、ここで回復処理を実施するのが妥当か否かを見極める必要がある。
具体的には、記憶装置における回復処理の実施効果は、装置内の無効ページ数が多いほど高くなる。すなわち無効ページ総数のカウンタ46の値が大きいほど、回復処理の妥当性が増す。また同様に、記憶装置における回復処理の緊急性は、未使用領域が少ない程高くなる。すなわち未使用ページ総数のカウンタ47の値が小さいほど、回復処理の妥当性が増す。したがって無効ページカウンタ46、未使用ページ総数のカウンタ47あるいはその双方を参照して、適当なアルゴリズムを持って回復処理の妥当性を判定するのが望ましい。
即時回復可能なブロックが検出されなくなったら、その先さらに回復処理を実施するか否かの判定を行う。なおここに残った使用済みブロックは、回復を遅らせることで無効ページが増えていき、より効率良く回復処理を実施できるようになるかも知れない。したがって、記憶装置の状態を検査して、ここで回復処理を実施するのが妥当か否かを見極める必要がある。
具体的には、記憶装置における回復処理の実施効果は、装置内の無効ページ数が多いほど高くなる。すなわち無効ページ総数のカウンタ46の値が大きいほど、回復処理の妥当性が増す。また同様に、記憶装置における回復処理の緊急性は、未使用領域が少ない程高くなる。すなわち未使用ページ総数のカウンタ47の値が小さいほど、回復処理の妥当性が増す。したがって無効ページカウンタ46、未使用ページ総数のカウンタ47あるいはその双方を参照して、適当なアルゴリズムを持って回復処理の妥当性を判定するのが望ましい。
ステップST24:
回復処理の実施が妥当と判定された場合は、なるべく効率的に回復処理を実施できるブロックを検索する。カウンタテーブル44を検査することで、たとえば最も無効化ページ数の多いブロックを抽出し、それを回復対象として選択する。
回復処理の実施が妥当と判定された場合は、なるべく効率的に回復処理を実施できるブロックを検索する。カウンタテーブル44を検査することで、たとえば最も無効化ページ数の多いブロックを抽出し、それを回復対象として選択する。
ステップST25:
ステップST24で選択されたブロックを回復対象として、図7のような回復処理を実施する。
ステップST24で選択されたブロックを回復対象として、図7のような回復処理を実施する。
ところで、ステップST23における判定のアルゴリズムとしては、たとえば以下のようなものが挙げられる。
無効ページ総数が多くても、未使用ページ総数が多ければ、ユーザーが書き込む余裕は十分残っており、回復処理の緊急性は低い。逆に未使用ページ総数が少ない場合も、無効ページが殆どなければ、それは記憶装置の殆どの領域が有効データで埋め尽くされた状態を示しており、回復処理を無理に実施しても効果が得られない。したがって判定には双方の相関関係を使用する。この場合判定には最も単純な一次の相関式を用いるのが適当であろう。すなわち以下の判定式が真であれば回復処理の実施が妥当と判定される。
無効ページ総数が多くても、未使用ページ総数が多ければ、ユーザーが書き込む余裕は十分残っており、回復処理の緊急性は低い。逆に未使用ページ総数が少ない場合も、無効ページが殆どなければ、それは記憶装置の殆どの領域が有効データで埋め尽くされた状態を示しており、回復処理を無理に実施しても効果が得られない。したがって判定には双方の相関関係を使用する。この場合判定には最も単純な一次の相関式を用いるのが適当であろう。すなわち以下の判定式が真であれば回復処理の実施が妥当と判定される。
Ndp≧α・Nup+β
ここで、
Ndp:無効化された総ページ数、すなわちカウンタ(48)の値、
Nup:未使用ページ総数、すなわちカウンタ(49)の値、
α、β:判定係数、
をそれぞれ示す。
ここで、
Ndp:無効化された総ページ数、すなわちカウンタ(48)の値、
Nup:未使用ページ総数、すなわちカウンタ(49)の値、
α、β:判定係数、
をそれぞれ示す。
たとえばα=1、β=0とすれば、無効化されたページ総数が未使用ページ総数以上になると、回復処理を実行する。判定係数は実験的に最適な値を導出しても良く、記憶装置の使用目的にしたがって調整しても良い。
また、使用中にケースに応じて判定係数を変えても良い。たとえば上のケースで一度回復処理が妥当と判定され、回復処理が実行されれば、αが1から0.5に変わる。この場合は、無効化されたページ総数が未使用ページの半分未満になるまで回復処理が進行することになる。
また、カウンタ47は未使用ページ総数ではなく、それと略リニアな相関を持つ未使用ブロック総数をカウントしても良い。これは検索テーブル43の”Used Flag”が”0”となっているブロックの総数である。この場合、係数α、βをそれに合わせて変更すれば良い。
また、使用中にケースに応じて判定係数を変えても良い。たとえば上のケースで一度回復処理が妥当と判定され、回復処理が実行されれば、αが1から0.5に変わる。この場合は、無効化されたページ総数が未使用ページの半分未満になるまで回復処理が進行することになる。
また、カウンタ47は未使用ページ総数ではなく、それと略リニアな相関を持つ未使用ブロック総数をカウントしても良い。これは検索テーブル43の”Used Flag”が”0”となっているブロックの総数である。この場合、係数α、βをそれに合わせて変更すれば良い。
また、ステップST24の選択アルゴリズムでは、必ずしも全ブロック中から無効化ページ数が最多のブロックを正確に抽出する必要はない。基本的には複数ブロックから無効化ページ数が多いブロックを優先的に抽出する工程を含めば、不作為に選択するより効率の良い回復が可能である。
たとえば限られたブロックアドレスの範囲内のみを検索したり、無効化ページ数について“0xE0〜0xFF”“0xC0〜0xDF”“0xA0〜0xBF”・・・とラフなカテゴリ分けを行い、同じカテゴリに属するブロックは同等に扱って、カテゴリレベルで順位付けを行っても良い。
たとえば限られたブロックアドレスの範囲内のみを検索したり、無効化ページ数について“0xE0〜0xFF”“0xC0〜0xDF”“0xA0〜0xBF”・・・とラフなカテゴリ分けを行い、同じカテゴリに属するブロックは同等に扱って、カテゴリレベルで順位付けを行っても良い。
ところで、ストレージの容量が巨大化すると、カウンタテーブル44のサイズも大きくなる。カウンタテーブル44は2バイトのフィールドを持つので、たとえばブロック数が64kあれば、サイズは128kバイトに達する。この時、
・テーブルを格納すべきRAM容量が大きくなる。
・検索対象が増えるので、カウンタ値の大きなブロックの検索に時間がかかる。
という二つの問題が発生する。
・テーブルを格納すべきRAM容量が大きくなる。
・検索対象が増えるので、カウンタ値の大きなブロックの検索に時間がかかる。
という二つの問題が発生する。
図9ではRAM容量の問題に対処して、カウンタテーブルをフラッシュメモリ内に保存する、第2の実施形態を示す。記憶装置のハードウエア構成は図4と同様であるが、フラッシュメモリ35、36は周辺回路とともに一体化した一つのフラッシュメモリデバイス39として扱われ、64k個の消去ブロックを有し、その物理アドレスPBAは“0x0000”〜“0xFFFF”となっている。各ブロックは256ページで構成されており、各ページの実サイズは8kBである。すなわちフラッシュメモリデバイス39あるいは記憶装置30の容量は約128GBと巨大化している。
カウンタテーブルは64分割されてフラッシュメモリデバイス39に保存されており、各小テーブルは1kブロックの領域をカバーしている。保存には一つのブロックが動的に確保され、ブロック内の各ページに1個ずつの小テーブルが格納される。余った空きページは書き換え用に使用される。
各小テーブルのフラッシュメモリデバイス39内の格納場所は、RAMに常駐した二次テーブル70に記載されている。ここではPBA“0x0521”にカウンタテーブル保存用のブロックが確保されており、各テーブルごとに格納先のページオフセット(ブロック内のページ位置)が記載されている。二次テーブル70の容量は66バイトである。
各小テーブルのフラッシュメモリデバイス39内の格納場所は、RAMに常駐した二次テーブル70に記載されている。ここではPBA“0x0521”にカウンタテーブル保存用のブロックが確保されており、各テーブルごとに格納先のページオフセット(ブロック内のページ位置)が記載されている。二次テーブル70の容量は66バイトである。
たとえばPBA“0x1060”のブロックにおける無効化ページ数を取得する場合は、以下の手順で行なう。
ステップST31:
二次テーブル70からPBA“0x1060”を含む小テーブルの格納場所を取得する。これは#4の小テーブルが該当し、そのアドレスPPAは“0x052101”である。
二次テーブル70からPBA“0x1060”を含む小テーブルの格納場所を取得する。これは#4の小テーブルが該当し、そのアドレスPPAは“0x052101”である。
ステップST32:
上記アドレスでフラッシュメモリデバイス39をアクセスし、小テーブル71を読み出してRAM内に格納する。
上記アドレスでフラッシュメモリデバイス39をアクセスし、小テーブル71を読み出してRAM内に格納する。
ステップST33:
小テーブル71からPBA“0x1060”のカウンタ値“0x10”を取得する。
なおその後小テーブル71が書き換えられた場合、それは再度フラッシュメモリデバイス39に書き戻す必要がある。この時はカウンタテーブル用に確保したPBA“0x0521”のブロック内に空きページを探し、そこに書き込んで二次テーブル70の対応ページオフセット値を更新する。
小テーブル71からPBA“0x1060”のカウンタ値“0x10”を取得する。
なおその後小テーブル71が書き換えられた場合、それは再度フラッシュメモリデバイス39に書き戻す必要がある。この時はカウンタテーブル用に確保したPBA“0x0521”のブロック内に空きページを探し、そこに書き込んで二次テーブル70の対応ページオフセット値を更新する。
なお、このようにカウンタテーブルをフラッシュメモリデバイス39に格納すると、そのアクセス速度はRAMよりはるかに遅いので、カウンタ値の大きなブロックの検索はさらに困難となる。この対処例を図10に示す。
図10において、分布テーブル72は上記実施形態で分割した小テーブルごとの、所属ブロックのカウンタ値の分布状態を示している。
各ブロックの無効化ページ数のカウンタ値は、値の大小に応じて8つのカテゴリに分類されている。カテゴリごとにカウンタ値が該当するブロックの数が示されており、たとえば#1の小テーブルにおいてはカウンタ値が”0xFF”のブロックが4つ存在する。各フィールドは2バイト(最大1kブロックをカバー)なので、このテーブルの総容量は1024バイトと小さく、RAMに常駐させることができる。なお、このフィールドの値はブロックの有無のみを示すフラグでも良い。その場合RAMの占有領域は僅か64バイトである。
各ブロックの無効化ページ数のカウンタ値は、値の大小に応じて8つのカテゴリに分類されている。カテゴリごとにカウンタ値が該当するブロックの数が示されており、たとえば#1の小テーブルにおいてはカウンタ値が”0xFF”のブロックが4つ存在する。各フィールドは2バイト(最大1kブロックをカバー)なので、このテーブルの総容量は1024バイトと小さく、RAMに常駐させることができる。なお、このフィールドの値はブロックの有無のみを示すフラグでも良い。その場合RAMの占有領域は僅か64バイトである。
たとえば全てのページが無効化され、カウンタ値が“0xFF”となったブロックを検索する場合、以下の手順で行なう。
ステップST41:
まず、分布テーブル72において、小テーブルの先頭#0からカウンタ値が“0xFF”のカテゴリをスキャンし、値が”1”以上の小テーブルを検索する。ここでは#1の小テーブルが該当した。すなわち#1の小テーブル内には、カウンタ値“0xFF”のブロックが4個存在することが確認された。
まず、分布テーブル72において、小テーブルの先頭#0からカウンタ値が“0xFF”のカテゴリをスキャンし、値が”1”以上の小テーブルを検索する。ここでは#1の小テーブルが該当した。すなわち#1の小テーブル内には、カウンタ値“0xFF”のブロックが4個存在することが確認された。
ステップST42:
図9の二次テーブル70から#1の小テーブルの格納場所を取得し、フラッシュメモリデバイス39をアクセスして該当テーブル73をRAM内に格納する。
図9の二次テーブル70から#1の小テーブルの格納場所を取得し、フラッシュメモリデバイス39をアクセスして該当テーブル73をRAM内に格納する。
ステップST43:
小テーブル73のカウンタ値を先頭からスキャンして“0xFF”のブロックを検索する。これによってPBA“0x0520”のブロックが該当ブロックとして抽出された。
小テーブル73のカウンタ値を先頭からスキャンして“0xFF”のブロックを検索する。これによってPBA“0x0520”のブロックが該当ブロックとして抽出された。
このようにして、たとえば図8の回復シーケンスのステップST21において、カウンタ値“0xFF”の即時回復可能ブロックが検索される。上のようにして抽出されたブロックにはステップST22の処理で消去が施される。ステップST24でカウンタ値の最も大きなカテゴリのブロックを検索する場合も、手順は同様である。検索を2段階で実施することで、迅速かつ的確に所望のブロックを抽出できる。
ところでここまでは、独立した記憶装置の内部に、アドレス変換等各種制御を実装する場合について説明してきた。しかしアドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施することも可能である。このような形態は、特にフラッシュメモリが内部に組み込まれた、安価なコンピュータシステムに適している。そのようなコンピュータシステムの例を図11に示す。
図11は、アドレス変換テーブルの管理と関連処理を、ホスト側の制御で実施するコンピュータシステムの構成例を示す図である。
この場合、ホストシステム80bは、CPU81bとシステムメモリ82bを含む。
CPU81bは32ビットのシステムバス83bを介してシステムメモリであるRAM82bと接続されている。さらに、システムバス83bにはブリッジ回路84bが接続されており、ブリッジ回路84bに繋がる32ビットのデータバス38bには、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ35b,36bが並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ34bは、ブリッジ回路84bに内蔵されている。
CPU81bは32ビットのシステムバス83bを介してシステムメモリであるRAM82bと接続されている。さらに、システムバス83bにはブリッジ回路84bが接続されており、ブリッジ回路84bに繋がる32ビットのデータバス38bには、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ35b,36bが並列接続されている。2つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ34bは、ブリッジ回路84bに内蔵されている。
ブリッジ回路84bは、CPU81bから各種コマンドを受け取り、フラッシュメモリ35b、36bとCPU81bまたはシステムメモリ82bとの間のデータのやり取りを、ページバッファ34bを用いて媒介する。また必要に応じて転送データにECC符号化によるエラー補正を施す。
ブリッジ回路84bが受け取るコマンドは、たとえばフラッシュメモリ35b、36bの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
ブリッジ回路84bが受け取るコマンドは、たとえばフラッシュメモリ35b、36bの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ82b内には上記フラッシュ記憶システムを制御するためのドライバ86bが常駐している。このドライバ86bは、OSやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル42bを参照してアクセス時のページアドレスを変換する。
また、データ更新時には検索テーブル43bとライトポインタ45bを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路84bに送信する。
また、データ更新時には検索テーブル43bとライトポインタ45bを参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリへの書き込み命令をブリッジ回路84bに送信する。
すなわちこのようなケースでは、CPU81bとシステムメモリ82bよりなるホストシステム85b自体が図3における制御回路32の役割を代替し、アドレス変換テーブルの管理と無効ページ領域の回復処理を実施する。すなわちドライバ86bは各種テーブルやポインタを使用し、OSやアプリケーションから論理アドレスを受け、物理アドレスPPAを生成してブリッジ回路84bにコマンドを送信することで、フラッシュメモリ35b、36bの各種アクセスを実施する。
なお、これらアドレス変換テーブル42b、検索テーブル43b、およびライトポインタ45bには、たとえば図5に示したテーブル42、43、よびポインタ45と同様のものが使用される。
このようなシステムにおいても本発明の概念は同様に適用することが可能である。すなわちホストシステム80bには、さらにRAM82b内に、各ブロックの無効ページ数を管理するカウンタテーブル44bが構築されている。さらに無効ページ総数のカウンタ(48b)や未使用ページ総数のカウンタ(49b)が構築されている。
ここでシステムがアイドル状態になると、ドライバ86bは自律的にカウンタテーブル44bから無効化ページ数の多いブロックを検索し、取得したブロックを対象として回復処理を実行する。すなわちブロック内の有効ページを他ブロックの未使用ページにコピーし、しかる後に対象ブロックを消去して未使用状態にする。カウンタテーブル44bには、たとえば図5のテーブル44と同様の構成が使用できる。
より具体的には、カウンタテーブル44bからカウンタ値たる無効化ページ数が既定値以上のブロックを検索し、該当ブロックに対して回復処理を実行する。
あるいはカウンタテーブル上で複数のブロックについてカウンタ値を比較し、値の大きいものを優先して回復処理を実行する。
あるいはカウンタテーブル上で複数のブロックについてカウンタ値を比較し、値の大きいものを優先して回復処理を実行する。
また、システムがアイドル状態になると、ドライバ86bは自律的に無効ページ総数のカウンタ46bと未使用ページ総数のカウンタ47bを参照し、上記回復処理を実行するか否かの判定を行う。それはたとえば以下の判定式を用い、それが真であれば回復処理が実行される。
Ndp≧α・Nup+β
ここで、
Ndp:無効化された総ページ数、すなわちカウンタ(48b)の値、
Nup:未使用ページ総数、すなわちカウンタ(49b)の値、
α、β:判定係数、
をそれぞれ示す。
ここで、
Ndp:無効化された総ページ数、すなわちカウンタ(48b)の値、
Nup:未使用ページ総数、すなわちカウンタ(49b)の値、
α、β:判定係数、
をそれぞれ示す。
また、これらの判定と回復処理は回復シーケンスとして統合することができる。回復シーケンスは、前述の実施形態と同様に、図8の手順に沿って実行すれば良い。すなわち本実施例のコンピュータシステムは、システムのアイドル時に以下の手順で回復シーケンスを実行する。
ステップST21:
まず、カウンタテーブル44bから、無効ページ数が既定値を越えたブロックを検索する。
まず、カウンタテーブル44bから、無効ページ数が既定値を越えたブロックを検索する。
ステップST22:
上記検索で該当ブロックがあれば、それに回復処理を施す。
上記検索で該当ブロックがあれば、それに回復処理を施す。
ステップST23:
さらに回復処理を実施するか否かを、無効ページ総数のカウンタ46bあるいは未使用ページ総数のカウンタ47bを参照して判定する。
さらに回復処理を実施するか否かを、無効ページ総数のカウンタ46bあるいは未使用ページ総数のカウンタ47bを参照して判定する。
ステップST24:
回復処理を実施する場合は、カウンタテーブル44b上で複数のブロックについてカウンタ値を比較し、その対象ブロックを選定する。
回復処理を実施する場合は、カウンタテーブル44b上で複数のブロックについてカウンタ値を比較し、その対象ブロックを選定する。
ステップST25:
上記選定ブロックに対して回復処理を実施する。
上記選定ブロックに対して回復処理を実施する。
30・・・記憶装置、31・・・インターフェース回路、32・・・制御回路、33・・・内部バス、34・・・ページバッファ、35,36・・・NAND型フラッシュメモリ、37・・・制御回路、38・・・メモリバス、39・・・フラッシュメモリデバイス(フラッシュメモリモジュール)、40・・・RAM、41・・・ワーキングエリア、42,42b・・・アドレス変換テーブル、43,43b・・・、検索テーブル、44,44b・・・無効カウンタテーブル、45,45b・・・消去カウンタテーブル、46,46b・・・ライトポインタ、50,80b・・・ホストシステム。
Claims (18)
- 主記憶媒体としてフラッシュメモリと、
上記フラッシュメモリのアクセスの制御を行う制御部と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する
記憶装置。 - 第2メモリを有し、
各消去ブロックごとの無効化されたページ数をカウントしたカウンタテーブルが設けられており、少なくともその一部が上記第2メモリ内に格納されており、
上記制御部は、
上記回復作業の対象ブロックを、上記カウンタテーブルを参照することで選定する
請求項1記載の記憶装置。 - 上記カウンタテーブルは分割されてフラッシュメモリ内に保存されており、
上記制御部は、
上記選択の際にその一部を上記第2メモリ内に読み出して参照する
請求項2記載の記憶装置。 - 上記カウンタテーブルは複数の小カウンタテーブルに分割されており、当該小カウンタテーブルごとの、カウンタ値の分布状態を示すテーブルが上記第2メモリ内に格納されており、
上記制御部は、
上記テーブルを参照することで適当な小カウンタテーブルを選択し、上記小カウンタテーブルを参照することで回復作業の対象ブロックを選択する
請求項2記載の記憶装置。 - 上記制御部は、
上記回復すべきブロックの選択においては、上記カウンタテーブルから無効ページ数が既定値に達したブロックを検索し、回復対象として選択する
請求項2記載の記憶装置。 - 主記憶媒体としてフラッシュメモリと、
上記フラッシュメモリのアクセスの制御を行う制御部と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記回復作業を実施するか否かを自律的に判定し、その結果に応じて回復作業を実行する
記憶装置。 - 第2メモリを有し、
無効化された総ページ数を示す第一のカウンタ及び未使用ブロック総数を示す第二のカウンタが上記第2メモリ内に設けられており、
上記制御部は、
回復作業の実行判定時には少なくとも上記第一および第二のカウンタを参照し、その結果に応じて回復作業を実行する
請求項6記載の記憶装置。 - 上記制御部は、
上記判定を、
Ndp≧α・Nup+β
の判定式を用いて実施し、これが真であれば回復作業を実行する
請求項6記載の記憶装置。
Ndp:無効化された総ページ数
Nup:未使用ページ総数あるいは未使用ブロック総数
α、β:判定係数 - 主記憶媒体としてフラッシュメモリと、
上記フラッシュメモリのアクセスの制御を行う制御部と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
待機状態に入った際、または回復処理用の所定コマンドを受けた際には、上記回復作業を実施するか否かを自律的に判定し、さらに回復対象となるブロックを自律的に選定し、その結果に応じて回復作業を実行する
記憶装置。 - 待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記制御部は、
無効ページ数が既定値以上に達したブロックを検索し、そのようなブロックがあれば回復処理を実行し、
当該記憶装置の状態を検査して、さらに回復処理を実施するか否かを判定し、
上記判定の結果回復処理を実施する場合は、複数のブロックにおける無効ページ数を検査し、無効ページ数が大きなブロックを優先的に選択して、回復処理を実施する
請求項9記載の記憶装置。 - 主記憶媒体としてフラッシュメモリと、
上記フラッシュメモリのアクセスの制御を行う制御部と、
上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
システムがアイドル状態に入った際、上記回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する
コンピュータシステム。 - 第2メモリを有し、
各消去ブロックごとの無効化されたページ数をカウントしたカウンタテーブルが設けられており、少なくともその一部が上記第2メモリ内に格納されており、
上記制御部は、上記回復作業の対象ブロックを、上記カウンタテーブルを参照することで選定する
請求項11記載のコンピュータシステム。 - 上記制御部は、
上記回復すべきブロックの選択においては、上記カウンタテーブルから無効ページ数が既定値に達したブロックを検索し、回復対象として選択する
請求項12記載のコンピュータシステム。 - 主記憶媒体としてフラッシュメモリと、
上記フラッシュメモリのアクセスの制御を行う制御部と、
上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記制御部は、
上記該フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
システムがアイドル状態に入った際、上記回復作業を実施するか否かを自律的に判定し、その結果に応じて回復作業を実行する
コンピュータシステム。 - 無効化された総ページ数を示す第一のカウンタおよび未使用ブロック総数を示す第二のカウンタがRAM内に設けられており、
上記制御部は、
回復作業の実行判定時には少なくとも上記第一および第二のカウンタを参照し、その結果に応じて回復作業を実行する
請求項14記載のコンピュータシステム。 - 主記憶媒体としてフラッシュメモリと、
上記フラッシュメモリのアクセスの制御を行う制御部と、
上記フラッシュメモリのデータにアクセス可能な処理装置と、を有し、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記制御部は、
上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
システムがアイドル状態に入った際、上記回復作業を実施するか否かを自律的に判定し、さらに回復対象となるブロックを自律的に選定し、その結果に応じて回復作業を実行する
コンピュータシステム。 - 上記制御部は、システムがアイドル状態に入った際、
無効ページ数が既定値以上に達したブロックを検索し、そのようなブロックがあれば回復処理を実行し。
当該記憶装置の状態を検査して、さらに回復処理を実施するか否かを判定し、
上記判定の結果回復処理を実施する場合は、複数のブロックにおける無効ページ数を検査し、無効ページ数が大きなブロックを優先的に選択して、回復処理を実施する、
動作を自立的に実行する
請求項16記載のコンピュータシステム。 - 主記憶媒体としてフラッシュメモリを有する記憶装置のデータ処理方法であって、
上記フラッシュメモリは各々独立した消去領域であるブロックを複数有し、各ブロックは各々独立した書き込み/読み出し領域であるページを複数含み、
上記フラッシュメモリの書き換えは、更新後データを未使用ページに追記し、更新前データを含むページを無効化することで実施し、
無効化されたページを含む消去ブロックから有効なページのデータを他のブロックにコピーし、しかる後に元ブロックを消去して、無効ページを未使用ページに回復させ、
待機状態に入った際、または回復処理用の所定コマンドを受けた際に、上記回復作業の対象となるブロックを自律的に選定し、該当ブロックに回復作業を実行する
記憶装置のデータ処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006331097A JP2008146253A (ja) | 2006-12-07 | 2006-12-07 | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006331097A JP2008146253A (ja) | 2006-12-07 | 2006-12-07 | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008146253A true JP2008146253A (ja) | 2008-06-26 |
Family
ID=39606381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006331097A Pending JP2008146253A (ja) | 2006-12-07 | 2006-12-07 | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008146253A (ja) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009104430A (ja) * | 2007-10-24 | 2009-05-14 | Oki Electric Ind Co Ltd | フラッシュディスク装置 |
WO2010000205A1 (en) * | 2008-07-02 | 2010-01-07 | Silicon Motion, Inc. | Flash memory apparatus and method for securing a flash memory from data damage |
JP2011065736A (ja) * | 2009-09-18 | 2011-03-31 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2011159044A (ja) * | 2010-01-29 | 2011-08-18 | Toshiba Corp | 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法 |
JP2011159069A (ja) * | 2010-01-29 | 2011-08-18 | Toshiba Corp | 半導体記憶装置及びその制御方法 |
US8074012B2 (en) | 2008-07-02 | 2011-12-06 | Silicon Motion, Inc. | Flash memory apparatus and method for securing a flash memory from data damage |
JP2011248873A (ja) * | 2010-05-25 | 2011-12-08 | Samsung Electronics Co Ltd | 半導体メモリ装置のブロック併合方法 |
US8185687B2 (en) | 2010-01-29 | 2012-05-22 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling semiconductor storage device |
TWI386803B (zh) * | 2008-07-02 | 2013-02-21 | Silicon Motion Inc | 快閃記憶卡及快閃記憶體預防資料毀損的方法 |
KR101392174B1 (ko) | 2011-11-09 | 2014-05-09 | 한양대학교 산학협력단 | 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법 |
EP2816482A1 (en) | 2013-06-17 | 2014-12-24 | Fujitsu Limited | Information processing apparatus, control circuit, and control method |
JP2014241185A (ja) * | 2007-03-07 | 2014-12-25 | コンバーサント・インテレクチュアル・プロパティ・マネジメント・インコーポレイテッドConversant Intellectual Property Management Inc. | フラッシュメモリ向け部分ブロック消去アーキテクチャ |
JP5679383B2 (ja) * | 2011-06-09 | 2015-03-04 | Necディスプレイソリューションズ株式会社 | 電子機器、電源操作ログ記録方法およびプログラム |
JP2019008814A (ja) * | 2018-08-31 | 2019-01-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
CN110211621A (zh) * | 2014-04-30 | 2019-09-06 | 质子世界国际公司 | 闪存中的双向计数器 |
CN110457231A (zh) * | 2008-11-06 | 2019-11-15 | 慧荣科技(深圳)有限公司 | 用来管理一记忆装置的方法以及其相关的记忆装置 |
CN110928807A (zh) * | 2018-09-20 | 2020-03-27 | 爱思开海力士有限公司 | 用于检查存储器系统中的有效数据的设备和方法 |
US11119661B2 (en) | 2011-08-19 | 2021-09-14 | Toshiba Memory Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
-
2006
- 2006-12-07 JP JP2006331097A patent/JP2008146253A/ja active Pending
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014241185A (ja) * | 2007-03-07 | 2014-12-25 | コンバーサント・インテレクチュアル・プロパティ・マネジメント・インコーポレイテッドConversant Intellectual Property Management Inc. | フラッシュメモリ向け部分ブロック消去アーキテクチャ |
JP2009104430A (ja) * | 2007-10-24 | 2009-05-14 | Oki Electric Ind Co Ltd | フラッシュディスク装置 |
WO2010000205A1 (en) * | 2008-07-02 | 2010-01-07 | Silicon Motion, Inc. | Flash memory apparatus and method for securing a flash memory from data damage |
US8074012B2 (en) | 2008-07-02 | 2011-12-06 | Silicon Motion, Inc. | Flash memory apparatus and method for securing a flash memory from data damage |
TWI386803B (zh) * | 2008-07-02 | 2013-02-21 | Silicon Motion Inc | 快閃記憶卡及快閃記憶體預防資料毀損的方法 |
CN110457231A (zh) * | 2008-11-06 | 2019-11-15 | 慧荣科技(深圳)有限公司 | 用来管理一记忆装置的方法以及其相关的记忆装置 |
CN110457231B (zh) * | 2008-11-06 | 2023-10-24 | 慧荣科技(深圳)有限公司 | 用来管理一记忆装置的方法以及其相关的记忆装置 |
US8279670B2 (en) | 2009-09-18 | 2012-10-02 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor storage device |
JP2011065736A (ja) * | 2009-09-18 | 2011-03-31 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2011159044A (ja) * | 2010-01-29 | 2011-08-18 | Toshiba Corp | 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法 |
US8275935B2 (en) | 2010-01-29 | 2012-09-25 | Kabushiki Kaisha Toshiba | Semiconductor storage device and control method thereof |
US8185687B2 (en) | 2010-01-29 | 2012-05-22 | Kabushiki Kaisha Toshiba | Semiconductor storage device and method of controlling semiconductor storage device |
US8171254B2 (en) | 2010-01-29 | 2012-05-01 | Kabushiki Kaisha Toshiba | Memory controller and memory control method |
US8140741B2 (en) | 2010-01-29 | 2012-03-20 | Kabushiki Kaisha Toshiba | Semiconductor storage device and control method thereof |
JP2011159069A (ja) * | 2010-01-29 | 2011-08-18 | Toshiba Corp | 半導体記憶装置及びその制御方法 |
JP2011248873A (ja) * | 2010-05-25 | 2011-12-08 | Samsung Electronics Co Ltd | 半導体メモリ装置のブロック併合方法 |
JP5679383B2 (ja) * | 2011-06-09 | 2015-03-04 | Necディスプレイソリューションズ株式会社 | 電子機器、電源操作ログ記録方法およびプログラム |
US11119661B2 (en) | 2011-08-19 | 2021-09-14 | Toshiba Memory Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
US11726661B2 (en) | 2011-08-19 | 2023-08-15 | Kioxia Corporation | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
KR101392174B1 (ko) | 2011-11-09 | 2014-05-09 | 한양대학교 산학협력단 | 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법 |
EP2816482A1 (en) | 2013-06-17 | 2014-12-24 | Fujitsu Limited | Information processing apparatus, control circuit, and control method |
CN110211621A (zh) * | 2014-04-30 | 2019-09-06 | 质子世界国际公司 | 闪存中的双向计数器 |
CN110211621B (zh) * | 2014-04-30 | 2023-06-06 | 质子世界国际公司 | 闪存中的双向计数器 |
JP2019008814A (ja) * | 2018-08-31 | 2019-01-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
CN110928807A (zh) * | 2018-09-20 | 2020-03-27 | 爱思开海力士有限公司 | 用于检查存储器系统中的有效数据的设备和方法 |
CN110928807B (zh) * | 2018-09-20 | 2023-04-07 | 爱思开海力士有限公司 | 用于检查存储器系统中的有效数据的设备和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008146253A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
CN109783009B (zh) | 存储器系统及其操作方法 | |
US8745310B2 (en) | Storage apparatus, computer system, and method for managing storage apparatus | |
US9075740B2 (en) | Memory system | |
US9507711B1 (en) | Hierarchical FTL mapping optimized for workload | |
JP4910360B2 (ja) | 記憶装置、コンピュータシステム、およびデータ書き込み方法 | |
US8285954B2 (en) | Memory system managing a plurality of logs | |
KR101979392B1 (ko) | 불휘발성 메모리 장치 및 그것의 프로그램 방법 | |
US7890550B2 (en) | Flash memory system and garbage collection method thereof | |
JP5130646B2 (ja) | 記憶装置 | |
JP5162846B2 (ja) | 記憶装置、コンピュータシステム、および記憶システム | |
JP2008146254A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
JP2008146255A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
JP5585919B2 (ja) | 電源遮断管理 | |
US10740013B2 (en) | Non-volatile data-storage device with spare block pools using a block clearing method | |
KR20170035155A (ko) | 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 | |
US11386005B2 (en) | Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache | |
JPWO2007119267A1 (ja) | フラッシュメモリ用のメモリコントローラ | |
KR20100094241A (ko) | 예비 블록을 포함하지 않는 불휘발성 메모리 장치 | |
KR20150020385A (ko) | 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 | |
JP2007164318A (ja) | 記憶装置 | |
KR20170026831A (ko) | 불휘발성 메모리 장치, 그것을 포함하는 데이터 저장 장치 그리고 데이터 저장 장치의 동작 방법. | |
KR20170028670A (ko) | 데이터 저장 장치 그리고 그것의 동작 방법 | |
CN112130749B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN110568918A (zh) | 停电时减少功耗的数据存储方法及数据存储设备 |