JP2007334413A - 記憶装置 - Google Patents
記憶装置 Download PDFInfo
- Publication number
- JP2007334413A JP2007334413A JP2006162274A JP2006162274A JP2007334413A JP 2007334413 A JP2007334413 A JP 2007334413A JP 2006162274 A JP2006162274 A JP 2006162274A JP 2006162274 A JP2006162274 A JP 2006162274A JP 2007334413 A JP2007334413 A JP 2007334413A
- Authority
- JP
- Japan
- Prior art keywords
- block
- address
- spare
- blocks
- page
- 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
【課題】メモリデバイスの不良ブロックをスペアブロックに置換するための情報に要するメモリサイズを縮小することが可能な記憶装置を提供する。
【解決手段】記憶装置30は、主記憶媒体としてのメモリデバイス35と、制御回路32と、RAM38と、を有し、メモリデバイス35は複数のデータブロックで形成され、このデータブロックの一部に欠陥ブロックを含み、制御回路32は、RAM38内に記憶された置換情報を用いて、メモリデバイス35の欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、置換情報はN個(N>=2)のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するM個(M<N)までの欠陥ブロックに正常ブロックが割り当てられている。
【選択図】図7
【解決手段】記憶装置30は、主記憶媒体としてのメモリデバイス35と、制御回路32と、RAM38と、を有し、メモリデバイス35は複数のデータブロックで形成され、このデータブロックの一部に欠陥ブロックを含み、制御回路32は、RAM38内に記憶された置換情報を用いて、メモリデバイス35の欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、置換情報はN個(N>=2)のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するM個(M<N)までの欠陥ブロックに正常ブロックが割り当てられている。
【選択図】図7
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のプログラム転送速度を実現している。
ところで、通常のファイルストレージでは、最小の書き換え単位は512Bのセクタであり、この単位でランダムなアクセスがなされる。その場合、たとえば1つのページ領域の一部のみを書き換える要求が発生する。
しかし、上述のようなフラッシュメモリでそのようなアクセスを行うと、結局実消去ブロック領域全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。したがって、それらは消去済の予備ブロックにコピーされる。この際、更新後データも予備ブロックの側に書き込まれ、元ブロックは仮想アドレス管理に従って予備ブロックに置換される。
図2および図3は、そのような仮想アドレス管理に従ったデータ更新の一例を示す図である。図2はフラッシュメモリ20の記憶領域を示し、図3はアドレステーブル27を示している。
アドレステーブル27は、論理ブロックアドレス(Logical Block Address =LBA)をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス(Phisical Block Address =PBA)を取得することができる。
たとえば、ホストまたはアプリケーションが“0x55”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより“0x6B”に変換され、フラッシュメモリ20の消去ブロック21にアクセスが実施される。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
1.予め予備の消去済みブロック25を用意しておく。その物理アドレスは“0xAA”とする。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス“0x6B”が取得され、消去ブロック21内のページ22にアクセスがなされたとする。このとき、フラッシュメモリ20の書き換え対象ブロック21から、別途設けられたページバッファ24を介して、予備ブロック25にデータを順次コピーしていく。
3.更新対象となるページ22のコピー時には、ページバッファ24上で所望の箇所を更新してコピーを行い、コピー先ページ26にそれが反映される。
4.有効なページデータのコピーが全て完了したら、アドレステーブル27上で、ブロック21と予備ブロック25のアドレスを張り替える。
5.最後に元ブロック21の消去を実施する。
2.論理ブロックアドレス“0x55”が指定され、対応する物理ブロックアドレス“0x6B”が取得され、消去ブロック21内のページ22にアクセスがなされたとする。このとき、フラッシュメモリ20の書き換え対象ブロック21から、別途設けられたページバッファ24を介して、予備ブロック25にデータを順次コピーしていく。
3.更新対象となるページ22のコピー時には、ページバッファ24上で所望の箇所を更新してコピーを行い、コピー先ページ26にそれが反映される。
4.有効なページデータのコピーが全て完了したら、アドレステーブル27上で、ブロック21と予備ブロック25のアドレスを張り替える。
5.最後に元ブロック21の消去を実施する。
このような手順によって、以降論理ブロックアドレス“0x55”に対しては、物理ブロックアドレス“0xAA”に対応する消去ブロック、すなわち予備ブロック25がアクセスされるようになり、全体との整合性が保たれる。
このような仮想アドレスは、ストレージが組み込まれたコンピュータシステムではホストCPU自体が管理する。あるいは専用の制御回路が設けられている場合も多く、特に外付けストレージでは、ストレージ内に制御回路とテーブル保存用のRAMが内蔵されている。
このような仮想アドレスは、ストレージが組み込まれたコンピュータシステムではホストCPU自体が管理する。あるいは専用の制御回路が設けられている場合も多く、特に外付けストレージでは、ストレージ内に制御回路とテーブル保存用のRAMが内蔵されている。
また、近年フラッシュメモリはさらに多値化や微細化による大容量化が進んでおり、欠陥メモリセルへの対処が重要な課題となっている。
フラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、通常欠陥セルを含む消去ブロックは欠陥ブロックとしてブロック単位で使用を禁止する必要がある。また、製品出荷後、書き換えを繰り返すことで新たに発生する欠陥もある。これら初期欠陥および後発欠陥へのアクセスは、やはり上述の仮想アドレスを使用することで回避される。
フラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、通常欠陥セルを含む消去ブロックは欠陥ブロックとしてブロック単位で使用を禁止する必要がある。また、製品出荷後、書き換えを繰り返すことで新たに発生する欠陥もある。これら初期欠陥および後発欠陥へのアクセスは、やはり上述の仮想アドレスを使用することで回避される。
すなわち、図3のアドレステーブル27において、物理ブロックアドレス(PBA)フィールドから欠陥ブロックの物理アドレスを削除し、替わりに予備ブロックの物理アドレスを充てておく。これによって、ユーザーがどの論理アドレスをアクセスしても、欠陥ブロックがアクセスされることは無い。
このように、消去ブロックの論理アドレスごとに物理アドレスをアサインし、欠陥ブロックを正常ブロックで置換する手法が、近年フラッシュメモリを用いたストレージにおける欠陥管理の主流となっている。
ISSCC2002予稿集のp106、セッション6.4
ISSCC2002予稿集のp106、セッション6.4
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
その場合、転送速度の向上と蓄積容量の増加が同時に要求されるが、前者は複数のフラッシュメモリデバイスを並列にアクセスすることで実現される。
その場合、転送速度の向上と蓄積容量の増加が同時に要求されるが、前者は複数のフラッシュメモリデバイスを並列にアクセスすることで実現される。
たとえば、4個のフラッシュメモリデバイスを並列に同時動作させて、4ギガバイト(GByte)のストレージを構成したとする。各消去ブロックの容量を128キロバイト(kByte)とすると、各フラッシュメモリデバイスは8k個のブロックを有し、4個のデバイスで合計4GByteの容量が実現される。
これを前述の手法に従って管理すれば、たとえば図4に示すようなアドレス変換テーブルを使用することになる。
すなわち、ここでは4個のフラッシュメモリデバイス各々に対してテーブルが用意され、8k個の各ブロックについて論理ブロックアドレス(LBA)と物理ブロックアドレス(PBA)の対応が設定されている。これによって各々のフラッシュメモリデバイスが独立に欠陥ブロックを代替できる。
すなわち、ここでは4個のフラッシュメモリデバイス各々に対してテーブルが用意され、8k個の各ブロックについて論理ブロックアドレス(LBA)と物理ブロックアドレス(PBA)の対応が設定されている。これによって各々のフラッシュメモリデバイスが独立に欠陥ブロックを代替できる。
物理ブロックアドレスの範囲は”0x0000”から”0x1FFF”である。このうち256ブロックが予備用や欠陥ブロックとして確保され、論理ブロックアドレスの範囲は”0x0000”から”0x1EFF”までとなっている。
たとえば、図4中の論理ブロックアドレス”0x0055”に対応する各デバイス(Device0〜3)の物理ブロックアドレスは、各々”0x06F0”,”0x0071”,”0x00A0”,”0904”である。
たとえば、図4中の論理ブロックアドレス”0x0055”に対応する各デバイス(Device0〜3)の物理ブロックアドレスは、各々”0x06F0”,”0x0071”,”0x00A0”,”0904”である。
上記テーブルは各PBAフィールドに2バイトを要し、4個のデバイスが8k個ずつのPBAフィールドを持つ。したがって、テーブルの総容量は以下のように大きくなる。
[2バイトx8kブロックx4デバイス =64kバイト]
したがって、システムにはこのテーブルを保管するため、大容量のRAMが必要である。
[2バイトx8kブロックx4デバイス =64kバイト]
したがって、システムにはこのテーブルを保管するため、大容量のRAMが必要である。
図5および図6は、これに対する対策の例を示す図である。
ここではアドレスを2段階で管理し、予備ブロックに関する変換は第一ステップで4デバイスを一括にして実施し、欠陥ブロックに関する変換は第二ステップで4デバイス独立に実施する。
ここではアドレスを2段階で管理し、予備ブロックに関する変換は第一ステップで4デバイスを一括にして実施し、欠陥ブロックに関する変換は第二ステップで4デバイス独立に実施する。
入力された論理ブロックアドレス(LBA)に対し、4デバイス共通の仮物理ブロックアドレス(PBA_)が第一ステップで図5のテーブルを用いて決定される。
さらに第二ステップでは、第一ステップの出力である仮物理ブロックアドレス(PBA_)に対し、欠陥のあるブロックのみが、図6のテーブルを用いてスペアブロックに置換される。
論理ブロックアドレスの領域”0x0000”〜”0x1EFF”に対し、仮物理ブロックアドレスは128の予備ブロックを加え、”0x0000”〜”0x1F7F”の領域を持つ。さらに各フラッシュデバイスにおいては、PBA”0x1F80”〜”0x1FFF”の128ブロックがスペア領域として確保されている。各ブロックのスペアフィールドには、置換先ブロックのポインタとして、上記領域の先頭からのオフセット値(0x00〜0x7F)が記載されている。0xFF”はスペア範囲外の値であり、欠陥が無いことを示す。
たとえば、図中の論理ブロックアドレス”0x0055”に対応する各デバイスの共通物理ブロックアドレス(PBA_)は”0x06F0”であるが、デバイス1には欠陥が存在する。したがって、デバイス1のみはスペア領域のオフセット”0x10”に相当するブロック、すなわち”0x1F80”+”0x0010”=”0x1F90”にアクセス先が置換される。
さらに第二ステップでは、第一ステップの出力である仮物理ブロックアドレス(PBA_)に対し、欠陥のあるブロックのみが、図6のテーブルを用いてスペアブロックに置換される。
論理ブロックアドレスの領域”0x0000”〜”0x1EFF”に対し、仮物理ブロックアドレスは128の予備ブロックを加え、”0x0000”〜”0x1F7F”の領域を持つ。さらに各フラッシュデバイスにおいては、PBA”0x1F80”〜”0x1FFF”の128ブロックがスペア領域として確保されている。各ブロックのスペアフィールドには、置換先ブロックのポインタとして、上記領域の先頭からのオフセット値(0x00〜0x7F)が記載されている。0xFF”はスペア範囲外の値であり、欠陥が無いことを示す。
たとえば、図中の論理ブロックアドレス”0x0055”に対応する各デバイスの共通物理ブロックアドレス(PBA_)は”0x06F0”であるが、デバイス1には欠陥が存在する。したがって、デバイス1のみはスペア領域のオフセット”0x10”に相当するブロック、すなわち”0x1F80”+”0x0010”=”0x1F90”にアクセス先が置換される。
このようなテーブルの容量はF4Aが、
2バイトx8k=16kバイト、
F4Bはフィールドあたり1バイトで良いので、
1バイトx8kブロックx4デバイス =32kバイト、
すなわち合計48kバイトで良い。
以上、この例では欠陥ブロックの置換に関しては、スペア領域を予め規定して、そのテーブル容量を低減した。
2バイトx8k=16kバイト、
F4Bはフィールドあたり1バイトで良いので、
1バイトx8kブロックx4デバイス =32kバイト、
すなわち合計48kバイトで良い。
以上、この例では欠陥ブロックの置換に関しては、スペア領域を予め規定して、そのテーブル容量を低減した。
しかしこのような工夫をしても、サイズ減少量は25%である、劇的なRAM容量の削減はできない。
したがって、たとえばストレージの容量がさらに増大し、たとえば現在のHDD並の64GBになった場合、論理アドレスを上記8kブロックごとに区切ってテーブルを生成しても、テーブルには、
48kBx(64GB/4GB)=768kB、
の容量が必要になる。
したがって、テーブル格納用のRAMが巨大化し、コストアップとなってしまう。
したがって、たとえばストレージの容量がさらに増大し、たとえば現在のHDD並の64GBになった場合、論理アドレスを上記8kブロックごとに区切ってテーブルを生成しても、テーブルには、
48kBx(64GB/4GB)=768kB、
の容量が必要になる。
したがって、テーブル格納用のRAMが巨大化し、コストアップとなってしまう。
本発明の目的は、メモリデバイスの不良ブロックをスペアブロックに置換するための情報に要するメモリサイズを縮小することが可能な記憶装置を提供することにある。
本発明の記憶装置は、主記憶媒体としてのメモリデバイスと、制御回路と、RAMと、を有し、上記メモリデバイスは複数のデータブロックで形成され、当該データブロックの一部に欠陥ブロックを含み、上記制御回路は、上記RAM内に記憶された置換情報を用いて、上記メモリデバイスの欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、上記置換情報はN個(N>=2)のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するM個(M<N)までの欠陥ブロックに正常ブロックが割り当てられている。
好適には、上記メモリデバイスは不揮発性メモリを含み、上記置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記RAM内に読み出されて使用される。
好適には、上記ブロックグループ内にM個を越える欠陥ブロックが存在する場合、上記制御回路は第二の置換情報を用いて第一の置換情報を補完し、第一の置換情報で正常ブロックを割り当てられていない欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替える。
好適には、上記第二の置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記RAM内に読み出されて使用される。
好適には、第一の置換情報が上記RAM内に読み出され、アクセスの振り替えに情報が不足していれば、さらに第二の情報が上記RAM内に読み出され、参照される。
好適には、同一のグループに属する各々のデータブロックは、メモリデバイス上の互いに近接しない物理領域に、分散配置されている。
好適には、同一のグループに属する各々のデータブロックは、物理アドレス上互いに近接していない。
以上のように、本発明では個々のブロックごとに置換先ブロックの情報を割り当てるのではなく、複数のブロックをグループ化し、そのグループごとに、グループ内の総ブロック数より小さい限定数のスペア情報を設置する。この数を十分小さくすることで、スペアテーブルの総容量を劇的に低減することが可能になる。
なお、本発明においては、特定の欠陥発生の位置パターンに対しては、置換救済が出来ないことがある。即ち従来のようなブロック毎の置換情報の設置は、用意されたスペアブロック数が十分多ければ、欠陥の発生パターンに関わらずあらゆる不良ブロックを置換できた。
一方、本発明では、たとえば特定のブロックグループに欠陥ブロックが集中的に発生すれば、置換情報の不足から置換しきれない欠陥ブロックが生ずる可能性がある。逆に言えば、このような可能性を敢えて許容することによって、スペアテーブルを劇的に小型化するのが、本発明のポイントでもある。
この点については、置換不能の発生頻度が十分小さくなるように統計的な見積を行い、それに基づいて置換情報量を調整すれば良い。あるいは第二の置換情報を用意することでも解決が可能である。後者の場合、第二の置換情報が必要となる頻度が十分小さければ、第二の置換情報は第一の置換情報に対してアクセス速度、あるいは置換効率において劣ったものを使用しても構わない。
なお、本発明においては、特定の欠陥発生の位置パターンに対しては、置換救済が出来ないことがある。即ち従来のようなブロック毎の置換情報の設置は、用意されたスペアブロック数が十分多ければ、欠陥の発生パターンに関わらずあらゆる不良ブロックを置換できた。
一方、本発明では、たとえば特定のブロックグループに欠陥ブロックが集中的に発生すれば、置換情報の不足から置換しきれない欠陥ブロックが生ずる可能性がある。逆に言えば、このような可能性を敢えて許容することによって、スペアテーブルを劇的に小型化するのが、本発明のポイントでもある。
この点については、置換不能の発生頻度が十分小さくなるように統計的な見積を行い、それに基づいて置換情報量を調整すれば良い。あるいは第二の置換情報を用意することでも解決が可能である。後者の場合、第二の置換情報が必要となる頻度が十分小さければ、第二の置換情報は第一の置換情報に対してアクセス速度、あるいは置換効率において劣ったものを使用しても構わない。
本発明によれば、フラッシュメモリの欠陥管理が小規模なRAM搭載で実現でき、大容量フラッシュストレージに低コストで高い信頼性を与えることが可能である。
以下、本発明の実施形態を図面に関連付けて説明する。
図7は、本発明の第1の実施形態に係る記憶装置を採用したコンピュータシステムの構成例を示す図である。
本コンピュータシステムCOMSYSは、ファイル記憶装置30、およびホストシステム(処理装置)40を主構成要素として有している。
ファイル記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35(M0〜M3)、制御回路36、およびメモリバス37を有する。
制御回路32は、RAM38が内蔵されている。
ファイル記憶装置30は、インターフェース回路(I/F)31、制御回路32、内部バス33、ページバッファ34、NAND型フラッシュメモリ35(M0〜M3)、制御回路36、およびメモリバス37を有する。
制御回路32は、RAM38が内蔵されている。
ファイル記憶装置30の内部においては、32ビットのメモリバス37に、8ビットの入出力を持つ4チップの8GbNAND型フラッシュメモリ35(M0〜M3)が並列接続されている。4つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。
すなわちメモリバス37は8ビットバスを4チャンネル備えた構成となっている。
各々のフラッシュメモリM0〜M3は書き込みや読み出しのアクセスをたとえば2kBのページ単位で行う。
したがって実ページサイズとしては8kBが一括アクセスされることになる。
ページバッファ34はアクセスされたページ領域のデータを一時記憶するページバッファである。
フラッシュメモリ35(M0〜M3)とページバッファ34との間のデータの送受は、制御回路36で制御されている。
さらに、転送制御回路36は、必要に応じて転送データにECC符号化によるエラー補正を施す。各フラッシュメモリM0〜M3はページバッファ34を介して記憶装置30の内部バス33との間でデータを入出力する。
各フラッシュメモリM0〜M3は64ページごとに消去ブロックを構成しており、各々8kブロックを有している。
したがって、その容量は、
2kBx64x8k =1GByte、
となっており、4個あわせて4GByteのストレージを構成している。
すなわちメモリバス37は8ビットバスを4チャンネル備えた構成となっている。
各々のフラッシュメモリM0〜M3は書き込みや読み出しのアクセスをたとえば2kBのページ単位で行う。
したがって実ページサイズとしては8kBが一括アクセスされることになる。
ページバッファ34はアクセスされたページ領域のデータを一時記憶するページバッファである。
フラッシュメモリ35(M0〜M3)とページバッファ34との間のデータの送受は、制御回路36で制御されている。
さらに、転送制御回路36は、必要に応じて転送データにECC符号化によるエラー補正を施す。各フラッシュメモリM0〜M3はページバッファ34を介して記憶装置30の内部バス33との間でデータを入出力する。
各フラッシュメモリM0〜M3は64ページごとに消去ブロックを構成しており、各々8kブロックを有している。
したがって、その容量は、
2kBx64x8k =1GByte、
となっており、4個あわせて4GByteのストレージを構成している。
さらに内部バス33にはインターフェース回路31、および制御回路32が接続されている。
インターフェース回路31はATAやPCIエクスプレス等の規格に従ってホストシステム40との間で、データやコマンドの送受を行う。
制御回路32は記憶装置30の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理し、さらにフラッシュメモリM0〜M3の所望のブロック、および所望のページとページバッファ34との間のデータの送受を転送制御回路36に指示する。
ここに内蔵されたRAM38には、プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらに予備ブロックを管理するアドレス変換テーブル42、および欠陥ブロックを管理するスペアテーブル43が構築されている。
これらのテーブルは、たとえばフラッシュメモリM0の特定箇所に保存されており、電源投入時にRAM38内に読み出される。
インターフェース回路31はATAやPCIエクスプレス等の規格に従ってホストシステム40との間で、データやコマンドの送受を行う。
制御回路32は記憶装置30の内部においてページバッファ34とインターフェース回路31の間のデータの送受を管理し、さらにフラッシュメモリM0〜M3の所望のブロック、および所望のページとページバッファ34との間のデータの送受を転送制御回路36に指示する。
ここに内蔵されたRAM38には、プログラムを実行するためのコードエリアやワーキングエリア41が設けられており、さらに予備ブロックを管理するアドレス変換テーブル42、および欠陥ブロックを管理するスペアテーブル43が構築されている。
これらのテーブルは、たとえばフラッシュメモリM0の特定箇所に保存されており、電源投入時にRAM38内に読み出される。
本コンピュータシステムCOMSYSにおいては、ホストシステム40は内蔵するCPUによって制御され、アプリケーションやOSの要求に応じて、ファイル記憶装置30を介して、フラッシュメモリデバイスにユーザーデータを保存する。
制御回路32はその間のデータ授受に介在し、アドレス変換テーブル42およびスペアテーブル43を用いてアクセス管理を実施する。
本実施形態においては、ファイル記憶装置30はハードディスクと同様に512Byteのセクタをアクセス単位とする。簡単のため、アドレスはブロック、ページ、セクタの階層で、次のように割り振られるとする。
たとえばホストから入力された論理アドレスが”0x0055_02_C”であった場合、上位の”0x0055”は論理ブロックアドレスであり、8kブロックが管理される。中位の”0x02”はブロック内のページアドレスで最大64ページとなる。下位の”0xC”はページ領域内のセクタドレスであり、実質的なページサイズは2kx4チップ=8kBなので、1ページ中には16のセクタが含まれる。
本記憶装置30は、フラッシュメモリM0〜M3より、各々ページ単位で一斉にページバッファ34にデータを読み出し、さらにページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
たとえばホストから入力された論理アドレスが”0x0055_02_C”であった場合、上位の”0x0055”は論理ブロックアドレスであり、8kブロックが管理される。中位の”0x02”はブロック内のページアドレスで最大64ページとなる。下位の”0xC”はページ領域内のセクタドレスであり、実質的なページサイズは2kx4チップ=8kBなので、1ページ中には16のセクタが含まれる。
本記憶装置30は、フラッシュメモリM0〜M3より、各々ページ単位で一斉にページバッファ34にデータを読み出し、さらにページバッファ34内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
以下このような記憶装置30のテーブル構成および内部動作を、以下に説明する。
本実施形態では、ブロック単位の仮想アドレス管理が採用されている。
図8は、RAM38に構築されるアドレス変換テーブル42の構成例を示し、図9は、RAM38に構築されるスペアテーブル43の構成例を示す図である。図4の例と同様、ここでもアドレスを2段階で管理し、予備ブロックに関する変換は第一ステップで4デバイスを一括にして実施し、欠陥ブロックに関する変換は第二ステップで4デバイス独立に実施している。
本実施形態では、ブロック単位の仮想アドレス管理が採用されている。
図8は、RAM38に構築されるアドレス変換テーブル42の構成例を示し、図9は、RAM38に構築されるスペアテーブル43の構成例を示す図である。図4の例と同様、ここでもアドレスを2段階で管理し、予備ブロックに関する変換は第一ステップで4デバイスを一括にして実施し、欠陥ブロックに関する変換は第二ステップで4デバイス独立に実施している。
入力された論理ブロックアドレス(LBA)に対し、4デバイス共通の仮物理ブロックアドレス(PBA_)が第一ステップで図8のアドレス変換テーブル42を用いて決定される。さらに第二ステップでは、欠陥のあるブロックのみが、図9のスペアテーブル43を用いてスペアブロックに置換される。
なお、論理ブロックアドレスの領域”0x0000”〜”0x1EFF”に対し、仮物理ブロックアドレスは128の予備ブロックを加え、”0x0000”〜”0x1F7F”の領域を持つ。
さらに各フラッシュデバイスにおいては、PBA”0x1F80”〜”0x1FFF”の128ブロックがスペア領域として確保されている。
さらに各フラッシュデバイスにおいては、PBA”0x1F80”〜”0x1FFF”の128ブロックがスペア領域として確保されている。
ここで、図9のスペアテーブルにおいては、通常のように各々のデバイスの各仮物理ブロックアドレス(PBA_)に対してスペア情報が記載されている訳では無い。
ここでは4デバイスにおける16の仮物理ブロックアドレス(PBA_)領域ごとにグループが形成されており、各グループには使用されたスペアのカウンタ(Spare Count)と、2ブロック分の置換情報が記載されているのみである。
ここでは4デバイスにおける16の仮物理ブロックアドレス(PBA_)領域ごとにグループが形成されており、各グループには使用されたスペアのカウンタ(Spare Count)と、2ブロック分の置換情報が記載されているのみである。
各置換情報は、グループ先頭PBA_からの欠陥ブロックのオフセット位置(Block Offset)、欠陥ブロックの所属するデバイス情報(Device)、および置換先スペアブロックのスペア先頭からのオフセット位置(Spare Offset)からなる。これらをセットとして一つの欠陥ブロックを置換でき、各ブロックグループごとに2セットの情報が用意されている。各情報セットのサイズは2バイトでよく、2セットで4バイトを使用する。さらに各グループごとに2ビットのカウンタが設置されている。
したがって、本スペアテーブルの合計サイズは、
(4+2/8)Byte x 8k/16=2.125kByte、
と、通常の例の48k〜64kByteからは劇的に小型化している。
(4+2/8)Byte x 8k/16=2.125kByte、
と、通常の例の48k〜64kByteからは劇的に小型化している。
たとえば図中の論理ブロックアドレス”0x0055”に対応する各デバイスの共通物理ブロックアドレス(PBA_)は”0x06F0”であるが、これに対応するブロックグループ50内の相対アドレス、すなわちブロックオフセット”0x0”のデバイス”0x1”(図7のM1に相当)に欠陥が存在し、それはM1におけるスペア領域の先頭から”0x10”の箇所にあるスペアブロックに置換されていることがわかる。
したがって、フラッシュメモリM1のみはスペア領域のオフセット”0x10”に相当するブロック、すなわち”0x1F80”+”0x0010”=”0x1F90”にアクセス先が置換され、残りのM0,M2,M3は”0x06F0”のブロックにアクセスされる。このようにして選択されたフラッシュメモリ上のアドレスイメージを図10に示す。
したがって、フラッシュメモリM1のみはスペア領域のオフセット”0x10”に相当するブロック、すなわち”0x1F80”+”0x0010”=”0x1F90”にアクセス先が置換され、残りのM0,M2,M3は”0x06F0”のブロックにアクセスされる。このようにして選択されたフラッシュメモリ上のアドレスイメージを図10に示す。
図11は、そのようなテーブルを使用したデータアクセスのフローを示す図である。
ファイル記憶装置30の内部におけるフラッシュメモリM0〜M3への具体的アクセスは、図11のフロー図に従って、以下のような手順で実行される。
ファイル記憶装置30の内部におけるフラッシュメモリM0〜M3への具体的アクセスは、図11のフロー図に従って、以下のような手順で実行される。
ステップST1:
ホスト40からユーザーデータのアクセスコマンドとともに”0x0055_02_C”のセクタドレスが入力されると、制御回路32は論理ブロックアドレス部(LBA)”0x0055”をインデックスにアドレス変換テーブル42(図8)を参照し、アクセス対象たるユーザーデータの仮物理ブロックアドレス(PBA_)”0x06F0”を取得する。
ホスト40からユーザーデータのアクセスコマンドとともに”0x0055_02_C”のセクタドレスが入力されると、制御回路32は論理ブロックアドレス部(LBA)”0x0055”をインデックスにアドレス変換テーブル42(図8)を参照し、アクセス対象たるユーザーデータの仮物理ブロックアドレス(PBA_)”0x06F0”を取得する。
ステップST2:
さらに制御回路32は、上記仮物理ブロックアドレスよりスペアテーブル43(図9)を参照し、対応するブロックグループ50のスペアデータをスキャンする。
スペアデータは先頭からスペアカウンタ数分のみチェックすれば良い。これにより、上述の如くM1上の欠陥の存在と置換先を認識する。これによって、フラッシュメモリM1のアクセス先物理ブロックアドレスは”0x1F90”に、残りのM0,M2,M3は”0x06F0”に設定される。
なお、ブロック内のアクセスページはいずれも”0x02”である。
さらに制御回路32は、上記仮物理ブロックアドレスよりスペアテーブル43(図9)を参照し、対応するブロックグループ50のスペアデータをスキャンする。
スペアデータは先頭からスペアカウンタ数分のみチェックすれば良い。これにより、上述の如くM1上の欠陥の存在と置換先を認識する。これによって、フラッシュメモリM1のアクセス先物理ブロックアドレスは”0x1F90”に、残りのM0,M2,M3は”0x06F0”に設定される。
なお、ブロック内のアクセスページはいずれも”0x02”である。
ステップST3:
上記物理アドレスをもって、フラッシュメモリM0〜M3がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。
上記物理アドレスをもって、フラッシュメモリM0〜M3がアクセスされ、ページバッファ34内にユーザーデータが格納されたページグループが読み出される。
ステップST4:
その後、セクタドレス”0xC”に相当する部分がページバッファ34から選択的にホスト40に出力され、読み出し動作が完了する。
さらに、データの更新は以下のように実施する。同じ”0x0055_02_C”のセクタを更新するとする。このページには既にデータが書き込まれているので、この場合図2に前述したようなブロックごとのデータコピーが必要である。手順は以下のように行なう。
その後、セクタドレス”0xC”に相当する部分がページバッファ34から選択的にホスト40に出力され、読み出し動作が完了する。
さらに、データの更新は以下のように実施する。同じ”0x0055_02_C”のセクタを更新するとする。このページには既にデータが書き込まれているので、この場合図2に前述したようなブロックごとのデータコピーが必要である。手順は以下のように行なう。
まず、コピー元となるブロックの、各フラッシュメモリ上でのアドレスを、読み出しの際と同様に上記ステップST1,ST2の手順で取得する。
ステップST5:
書き込み先の予備ブロックとして、アドレス変換テーブル42(図8)のPBA_フィールドに登録されていない、未使用の仮物理ブロックアドレス(PBA_)が検索される。
これらの予備ブロックの仮物理ブロックアドレスは、図に記載されていない予備ブロックのリストに登録されており、先入先出しで順次選択されていく。ここでは、たとえば”0x1F7E”が選択されたとする。
書き込み先の予備ブロックとして、アドレス変換テーブル42(図8)のPBA_フィールドに登録されていない、未使用の仮物理ブロックアドレス(PBA_)が検索される。
これらの予備ブロックの仮物理ブロックアドレスは、図に記載されていない予備ブロックのリストに登録されており、先入先出しで順次選択されていく。ここでは、たとえば”0x1F7E”が選択されたとする。
ステップST6:
さらに制御回路32は、上記仮物理ブロックアドレスよりスペアテーブル43(図9)を参照し、対応するブロックグループ51のスペアデータをスキャンする。この例では仮物理ブロックアドレス(PBA_)”0x1F7E”の場所には欠陥ブロックは存在しない。したがって、書き込み先はフラッシュメモリ(M0)〜(M3)の”0x1F7E”のブロックに設定される。
さらに制御回路32は、上記仮物理ブロックアドレスよりスペアテーブル43(図9)を参照し、対応するブロックグループ51のスペアデータをスキャンする。この例では仮物理ブロックアドレス(PBA_)”0x1F7E”の場所には欠陥ブロックは存在しない。したがって、書き込み先はフラッシュメモリ(M0)〜(M3)の”0x1F7E”のブロックに設定される。
ステップST7:
上記コピー元/コピー先・物理ブロックアドレスをもって、フラッシュメモリM0〜M3がアクセスされ、ページバッファ34を介してブロック内の各ページデータが先頭からコピーされる。
この過程で”0x02”のページがページバッファ34に読み込まれた際、そのセクタドレス”0xC”に相当する部分が所望のデータに書き換えられ、しかる後にフラッシュメモリ上に書き込まれる。
上記コピー元/コピー先・物理ブロックアドレスをもって、フラッシュメモリM0〜M3がアクセスされ、ページバッファ34を介してブロック内の各ページデータが先頭からコピーされる。
この過程で”0x02”のページがページバッファ34に読み込まれた際、そのセクタドレス”0xC”に相当する部分が所望のデータに書き換えられ、しかる後にフラッシュメモリ上に書き込まれる。
ステップST8:
コピーが完了すると、アドレス変換テーブル(図8)が更新され、論理ブロックアドレス(LBA)”0x0055”に対応する仮物理ブロックアドレス(PBA_)は”0x1F7E”に更新される。
これに伴って、元の仮物理ブロックアドレス”0x060F0”に相当するブロックは無効となり、消去されて予備ブロックのリストに登録される。
コピーが完了すると、アドレス変換テーブル(図8)が更新され、論理ブロックアドレス(LBA)”0x0055”に対応する仮物理ブロックアドレス(PBA_)は”0x1F7E”に更新される。
これに伴って、元の仮物理ブロックアドレス”0x060F0”に相当するブロックは無効となり、消去されて予備ブロックのリストに登録される。
ところで、図9において、たとえば0x06F0〜0x06FFのグループ50に属する64ブロック中、2ブロックを越えて発生する欠陥ブロックには置換情報を設定できない。
このような救済失敗欠陥の発生率は、ブロックグループに設置されるスペア情報のセット数が少ないほど増加し、多いほど減少する。
このような救済失敗欠陥の発生率は、ブロックグループに設置されるスペア情報のセット数が少ないほど増加し、多いほど減少する。
今までの手法では、このような救済失敗欠陥の存在は一切許容しなかった。
これに対して、本実施形態ではこれを許容することで、スペアテーブルのサイズを大幅に圧縮する。そしてこれらの救済失敗欠陥は、適切に管理すれば、実使用上全く問題無いレベルに抑えることが可能である。
これに対して、本実施形態ではこれを許容することで、スペアテーブルのサイズを大幅に圧縮する。そしてこれらの救済失敗欠陥は、適切に管理すれば、実使用上全く問題無いレベルに抑えることが可能である。
たとえば、市販のNAND型フラッシュメモリにおいて各ブロックが欠陥となる確率は、0.8%程度である。
スペア情報のセットの構成と、本例のストレージ(総ブロック数=8kx4=32k)における救済失敗欠陥数(平均値)の関係は、二項分布を仮定して図12のように見積ることができる。
また乱数実験を行えば、ストレージごとのばらつきも見積もることができる。
スペア情報のセットの構成と、本例のストレージ(総ブロック数=8kx4=32k)における救済失敗欠陥数(平均値)の関係は、二項分布を仮定して図12のように見積ることができる。
また乱数実験を行えば、ストレージごとのばらつきも見積もることができる。
図12に明らかなように、グループ内のスペア数とブロック数の比が同じであればテーブルサイズもほぼ同等となるが、グループを巨大化した方が救済効率は向上する。
ただし、スキャンするスペア数が増え、スペア情報に要するビット数も僅かずつ増加するので、ストレージ容量やフラッシュメモリの構成、欠陥確率等も考慮して、最適なものを選択すればよい。
ただし、スキャンするスペア数が増え、スペア情報に要するビット数も僅かずつ増加するので、ストレージ容量やフラッシュメモリの構成、欠陥確率等も考慮して、最適なものを選択すればよい。
上述のように、欠陥の発生パターンがランダムであれば、本手法を用いた際の救済失敗欠陥数は統計的に予測でき、様々な対策をもってこれを管理し、製品の信頼性を保証することが可能である。
対策例のひとつは、救済失敗の発生頻度を市場不良が許される範囲まで十分小さく抑えるスペア構成を採用することである。
あるいは一定レベル以下に抑えた上で、出荷段階で欠陥検査を行なってスクリーニングしても良い。
たとえば、32個の仮物理ブロックアドレス(PBA_)、すなわち128ブロックに対して8ブロック分のスペア情報を設ければ、99.9%の製品はカバーできる。スペアテーブルのサイズは4kB程度で良い。
あるいは一定レベル以下に抑えた上で、出荷段階で欠陥検査を行なってスクリーニングしても良い。
たとえば、32個の仮物理ブロックアドレス(PBA_)、すなわち128ブロックに対して8ブロック分のスペア情報を設ければ、99.9%の製品はカバーできる。スペアテーブルのサイズは4kB程度で良い。
あるいは、より適切な対策は、救済失敗欠陥を救済するための第二の置換手段を用意することである。救済失敗欠陥の発生頻度は非常に小さくできるので、第二の置換手段は効率や速度において劣るものであっても構わない。
たとえば、図8および図9のように、中間に仮物理ブロックアドレス(PBA_)を設定している場合には、救済失敗したブロックを含むPBA_は使用禁止にする。
すなわち、図8のアドレス変換テーブルにおいて、そのようなPBA_は論理ブロックアドレス(LBA)に対応させず、書き込み先としてテーブルに加えない。
すなわち、図8のアドレス変換テーブルにおいて、そのようなPBA_は論理ブロックアドレス(LBA)に対応させず、書き込み先としてテーブルに加えない。
このようなケースでは、図8の変換テーブルが欠陥の置換情報としても機能して、図9のスペアテーブル43を補完することになる。このとき1ブロックの救済失敗が発生すると、4ブロックで構成されるPBA_が丸ごと使用禁止となる。すなわち救済効率は悪化するが、救済失敗の発生頻度が十分低ければ問題にならない。
あるいは予備のスペアテーブルをもう1セット用意して、フラッシュメモリの特定箇所に保存しておく。最初のスペアテーブルでは記載しきれなくなった(すなわち救済に失敗した)欠陥ブロックの置換情報は、予備のスペアテーブルに記載する。両者は必要に応じてRAM38内に読み出され、使用される。
図13および図14はテーブル構成の第2例を示す図である。図13はアドレス変換テーブルの構成例を示し、図14はスペアテーブルの構成例を示す図である。図13のアドレス変換テーブルは図8のアドレス変換テーブルと同様である。
これに対して、図14のスペアテーブル43Aについては、メインのスペアテーブル43とサブのスペアテーブル44の2セットが用意されている。
これに対して、図14のスペアテーブル43Aについては、メインのスペアテーブル43とサブのスペアテーブル44の2セットが用意されている。
たとえば、図中の論理ブロックアドレス”0x0055”に対応する各デバイスの共通物理ブロックアドレス(PBA_)は”0x06FA”だが、対応するブロックグループ52のメインスペアテーブル43を見ると、スペアカウンタは”011B”(”3”)である。
すなわち、救済失敗が発生し、予備のスペアテーブルが使用されていることがわかる。したがって、まずメインのスペアテーブル43のスペア情報をスキャンし、引き続き予備のスペアテーブル44のスペア情報をスキャンする。
ここでは後者の情報から、ブロックオフセット”0xA”のデバイス”0x0”(図7のM0に相当)に欠陥が存在し、それはM0におけるスペア領域の先頭から”0x35”の箇所にあるスペアブロックに置換されていることがわかる。
すなわち、救済失敗が発生し、予備のスペアテーブルが使用されていることがわかる。したがって、まずメインのスペアテーブル43のスペア情報をスキャンし、引き続き予備のスペアテーブル44のスペア情報をスキャンする。
ここでは後者の情報から、ブロックオフセット”0xA”のデバイス”0x0”(図7のM0に相当)に欠陥が存在し、それはM0におけるスペア領域の先頭から”0x35”の箇所にあるスペアブロックに置換されていることがわかる。
したがって、フラッシュメモリM0のみはスペア領域のオフセット”0x35”に相当するブロック、すなわち”0x1F80”+”0x0035”=”0x1FB5”にアクセス先が置換され、残りのM0,M2,M3は”0x06FA”のブロックにアクセスされる。
ストレージの電源投入時にはメインのスペアテーブル43がフラッシュメモリ35から読み出され、RAM38内に保存される。
しかしそれで救済失敗が発生し、予備のスペアテーブルをチェックする必要が生じたら、メインのスペアテーブル43を一旦RAM38から開放し、替わりに予備のスペアテーブル44をRAM38に呼び出して、そこから置換情報を取得する。
次に、別の箇所がアクセスされれば、再びメインのスペアテーブル43をRAM38内に読み戻し、そこから置換情報の検索を開始する。
この場合、メインのスペアテーブル43で救済失敗が発生すると、そのブロックグループにおける欠陥チェック作業はテーブル入れ替えを必要とし、アクセス時間が遅くなる。しかしその発生頻度は非常に低いので、トータルで見れば速度性能は殆ど変わらない。
しかしそれで救済失敗が発生し、予備のスペアテーブルをチェックする必要が生じたら、メインのスペアテーブル43を一旦RAM38から開放し、替わりに予備のスペアテーブル44をRAM38に呼び出して、そこから置換情報を取得する。
次に、別の箇所がアクセスされれば、再びメインのスペアテーブル43をRAM38内に読み戻し、そこから置換情報の検索を開始する。
この場合、メインのスペアテーブル43で救済失敗が発生すると、そのブロックグループにおける欠陥チェック作業はテーブル入れ替えを必要とし、アクセス時間が遅くなる。しかしその発生頻度は非常に低いので、トータルで見れば速度性能は殆ど変わらない。
このような予備テーブルは二重あるいは三重に設けることも可能である。また、RAM38に複数エントリを持つキャッシュメモリを構築し、スペアテーブルを複数に分割して、適時必要なスペアテーブルの必要な箇所を読み込んでも良い。
たとえば、RAM38に2エントリがあれば、一つのエントリにはメインのスペアテーブルの半分が、一つのエントリには予備のスペアテーブルの半分が登録される等の形態を持たせることも可能である。
あるいは予備テーブルでも救済しきれない場合にはPBA_を使用禁止にする等、前述の手法と組み合わせても良い。
たとえば、RAM38に2エントリがあれば、一つのエントリにはメインのスペアテーブルの半分が、一つのエントリには予備のスペアテーブルの半分が登録される等の形態を持たせることも可能である。
あるいは予備テーブルでも救済しきれない場合にはPBA_を使用禁止にする等、前述の手法と組み合わせても良い。
また、図8、図9や図13、図14のテーブルセットに加え、必要に応じて図15のような欠陥テーブルを用意しても良い。
これは各仮想物理アドレスPBA_ごとに欠陥の有無を記載したものである。たとえば図13におけるアドレス変換テーブルでアクセスすべき各仮想物理アドレスPBA_が確定した後、まず図15の欠陥テーブルをチェックする。
ここに欠陥フラグ(Defect Flag)が立っていなければ、スペアは使用されていないことを示しており、それ以降スペアテーブルをスキャンする必要は無い。前述の例では欠陥を含まない各仮想物理アドレスPBA_についても、それが属するブロックグループ内に欠陥があれば、スペア情報をスキャンする必要があった。このような欠陥テーブルは各仮想物理アドレスPBA_ごとに1ビットを使用するだけなので、8kアドレスでも1kByteのRAM領域しか使用しない。
これは各仮想物理アドレスPBA_ごとに欠陥の有無を記載したものである。たとえば図13におけるアドレス変換テーブルでアクセスすべき各仮想物理アドレスPBA_が確定した後、まず図15の欠陥テーブルをチェックする。
ここに欠陥フラグ(Defect Flag)が立っていなければ、スペアは使用されていないことを示しており、それ以降スペアテーブルをスキャンする必要は無い。前述の例では欠陥を含まない各仮想物理アドレスPBA_についても、それが属するブロックグループ内に欠陥があれば、スペア情報をスキャンする必要があった。このような欠陥テーブルは各仮想物理アドレスPBA_ごとに1ビットを使用するだけなので、8kアドレスでも1kByteのRAM領域しか使用しない。
以上、現在最も一般的なブロック単位でのアドレス変換を例に、欠陥ブロックの置換手法を説明してきた。
この場合、アドレス変換は全てブロック単位でなされ、ブロック内のページの相対位置については、ホストから入力された論理アドレスからフラッシュメモリへアクセスされる物理アドレスまで、常に同一に保たれる。書き換えの際のアドレス入れ替え動作は図2に前述した。
この場合、アドレス変換は全てブロック単位でなされ、ブロック内のページの相対位置については、ホストから入力された論理アドレスからフラッシュメモリへアクセスされる物理アドレスまで、常に同一に保たれる。書き換えの際のアドレス入れ替え動作は図2に前述した。
一方、特開平8−328762号公報には、フラッシュメモリの一括書き込み単位であるページごとのアドレス変換を用いた、追記型記憶システムにおける管理方法の詳細が記載されている。図16および図17は、そのようなアドレス変換の概念を説明するための図である。なお、理解を容易にするために図2と同等の構成要素については同一の符号を付している。
アドレステーブル28からは、論理ページアドレス(Logical Page Address =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Address =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス”0x55_02”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ上の物理ページアドレス”0x6B_05”を取得する。これによりブロック21内の対応するページ領域22へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ内で直接書き込める適当な空きページ領域が検索される。
たとえば物理ブロックアドレス”0xAA”に相当する消去済み空きブロック25の先頭ページ領域29が適切な書き込み先として選択された場合、ページ領域22のデータのみがページバッファ24を介して更新され、ページ領域29に書き込まれる。
この際、論理ページアドレス”0x55_02”はページ領域29の物理アドレス”0xAA_00”にリマッピングされる。ページ領域22上の旧データは、当面そのまま残して無効扱いとしておく。
たとえば物理ブロックアドレス”0xAA”に相当する消去済み空きブロック25の先頭ページ領域29が適切な書き込み先として選択された場合、ページ領域22のデータのみがページバッファ24を介して更新され、ページ領域29に書き込まれる。
この際、論理ページアドレス”0x55_02”はページ領域29の物理アドレス”0xAA_00”にリマッピングされる。ページ領域22上の旧データは、当面そのまま残して無効扱いとしておく。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。
したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
本実施形態はこのようなアドレス変換を使用する場合にも、適用が可能である。すなわち、書き換えに伴うアドレス変換はページ単位で実施するが、欠陥ブロックに対するスペアとの置き換えは、ブロック単位で本発明のアルゴリズムを使用して実施する。この際のアクセスは、まずページ単位のアドレス変換結果である仮物理ページアドレスを取得し、さらにそのブロック部に相当するビットに対してスペアとの置換を施す。
装置構成はこれまでの実施形態に用いた図7と同様だが、アドレス変換テーブル42の構成がブロック単位ではなく、ページ単位でのアドレス変換となる。
装置構成はこれまでの実施形態に用いた図7と同様だが、アドレス変換テーブル42の構成がブロック単位ではなく、ページ単位でのアドレス変換となる。
図18および図19は、アドレス変換テーブルとスペアテーブルの他の構成例を示す図である。
図18のアドレス変換テーブルにはページ単位でのアドレス変換が記載されている。たとえばホストが入力したセクタドレスに対応する論理ページアドレス(Logical Page Address:LPA)が”0x0055_02”であった場合、上記変換テーブルから得られる仮物理ページアドレス(Physical Page Address:PPA_)は”0x06F0_1A”である。このうち”0x06F0”はブロックアドレスを示し、”1A”はブロック内でのページのオフセット位置をアドレスとして示している。
図18のアドレス変換テーブルにはページ単位でのアドレス変換が記載されている。たとえばホストが入力したセクタドレスに対応する論理ページアドレス(Logical Page Address:LPA)が”0x0055_02”であった場合、上記変換テーブルから得られる仮物理ページアドレス(Physical Page Address:PPA_)は”0x06F0_1A”である。このうち”0x06F0”はブロックアドレスを示し、”1A”はブロック内でのページのオフセット位置をアドレスとして示している。
ここで上記ブロックアドレス”0x06F0”に対応するブロックグループ53内の相対アドレス、すなわちブロックオフセット”0x0”のデバイス”0x1”(図7のM1に相当)に欠陥が存在し、それはフラッシュメモリM1におけるスペア領域の先頭から”0x10”の箇所にあるスペアブロックに置換されていることがわかる。
したがって、フラッシュメモリM1のみはスペア領域のオフセット”0x10”に相当するブロック、すなわち”0x1F80”+”0x0010”=”0x1F90”にアクセス先が置換され、残りのM0,M2,M3は”0x06F0”のブロックにアクセスされる。上記ブロックアドレスにページオフセット値”1A”を加えたページアドレスが、各フラッシュメモリに実際にアクセスされる物理ページアドレスとなる。
したがって、フラッシュメモリM1のみはスペア領域のオフセット”0x10”に相当するブロック、すなわち”0x1F80”+”0x0010”=”0x1F90”にアクセス先が置換され、残りのM0,M2,M3は”0x06F0”のブロックにアクセスされる。上記ブロックアドレスにページオフセット値”1A”を加えたページアドレスが、各フラッシュメモリに実際にアクセスされる物理ページアドレスとなる。
このように、図18のアドレス変換テーブル42Bにおいてページ単位のアドレス変換が実施された場合でも、フラッシュメモリ35へアクセスする際のページオフセット値が変換後のオフセット値に変わるだけであり、ブロックアドレス部分は第一の実施例と全く同様の手順で処理できる。
ところで、ここまでは、独立した記憶装置の内部に欠陥管理機構を設ける場合について説明してきた。しかしこのようなアドレス変換テーブルやスペアテーブルの管理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムの例を図20に示す。
図20のコンピュータシステム70は、ページバッファ34b、制御回路36b、フラッシュメモリ35b(M0〜M3)、データバス37b、処理装置としてのCPU71b、システムメモリ(RAM)72b、システムバス73b、およびブリッジ回路74bを有している。
CPU71bは32ビットのシステムバス73bを介してシステムメモリであるRAM72bと接続されている。さらに、システムバス73bにはブリッジ回路74bが接続されており、ブリッジ回路74bに繋がる32ビットのデータバス37bには、16ビットの入出力を持つ4チップのNAND型フラッシュメモリ35b(M0〜M3)が並列接続されている。4つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ34bはアクセスされたページ領域を一時記憶するバッファであり、ブリッジ回路74bに内蔵されている。
ページバッファ34bはアクセスされたページ領域を一時記憶するバッファであり、ブリッジ回路74bに内蔵されている。
ブリッジ回路74bはCPU71bから各種コマンドを受け取り、フラッシュメモリ35bとCPU71bまたはシステムメモリ72bとの間のデータのやり取りを、ページバッファ34bを用いて媒介する。また、ブリッジ回路74bは必要に応じて転送データにECC符号化によるエラー補正を施す。
ブリッジ回路74bが受け取るコマンドは、たとえばフラッシュメモリ35bの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
ブリッジ回路74bが受け取るコマンドは、たとえばフラッシュメモリ35bの所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ72b内には上記フラッシュ記憶システムを制御するためのドライバ75bが常駐している。このドライバは、OSやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル42bを参照してアクセス時のブロックアドレス或いはページアドレスを変換する。さらにスペアテーブル43bを参照して欠陥ブロックや置換先ブロックを判定し、実際のフラッシュメモリにアクセスする物理ブロックアドレスを決定する。それをもってフラッシュメモリへのアクセス命令をブリッジ回路74bに送信する。
このようなケースではCPU71bとシステムメモリ72bよりなるホストシステム76b自体が図7における制御回路32の役割を代替し、アドレス変換テーブルやスペアテーブルの管理を実施する。
すなわちドライバ75bはアドレス変換テーブル42bやスペアテーブル43bに、たとえば図8および図9に示したテーブル、と同じものを使用し、OSやアプリケーションから論理アドレスを受け、物理ブロックアドレス(PBA)あるいは物理ページアドレスを生成してブリッジ回路74bにコマンドを送信する。これによってフラッシュメモリ35bの各種アクセスが実施される。この際のスペアテーブルの取り扱い手順は、第1の実施形態に記載されたものと全く同様である。
すなわちドライバ75bはアドレス変換テーブル42bやスペアテーブル43bに、たとえば図8および図9に示したテーブル、と同じものを使用し、OSやアプリケーションから論理アドレスを受け、物理ブロックアドレス(PBA)あるいは物理ページアドレスを生成してブリッジ回路74bにコマンドを送信する。これによってフラッシュメモリ35bの各種アクセスが実施される。この際のスペアテーブルの取り扱い手順は、第1の実施形態に記載されたものと全く同様である。
すなわち本発明は独立した記憶装置のみならず、ホストに記憶装置が組み込まれた制御システムにおいても同様に適用できる。
ところで本発明は、欠陥がランダムに発生する場合には、容易に救済失敗の発生度合いを予測できる。したがって、それに応じてスペア構成やスペア手順を設定でき、信頼性を確保することが可能である。
しかし、半導体の欠陥にはしばしば物理レイアウト上の局所性が存在することがある。たとえばダストが複数の隣接ブロックにまたがれば、それらは同時に欠陥となりやすい。このように物理レイアウト上、互いに隣接したブロック間においては、双方にまたがった欠陥が発生しやすく、それらを同一のブロックグループとして置換情報を設定すると、局所性による予想外に大きな救済失敗が生じることとなる。
このような問題に対しては、物理レイアウト上、互いに隣接していないブロック群によってブロックグループを構成するのが効果的である。これは具体的にはグループの構成を決定するアドレスビットの選定を適切に行なうことで実施できる。
たとえば図9のスペアテーブル43では仮物理ブロックアドレス(PBA_)の下位ビットをもってブロックグループを構成しているが、通常の半導体デバイスにおいて物理アドレスが隣接しているブロック同士は物理的なレイアウトにおいても互いが隣接している場合が多い。
たとえば図9のスペアテーブル43では仮物理ブロックアドレス(PBA_)の下位ビットをもってブロックグループを構成しているが、通常の半導体デバイスにおいて物理アドレスが隣接しているブロック同士は物理的なレイアウトにおいても互いが隣接している場合が多い。
このようなケースでは、より上位のビットを用いてブロックグループを構成する。スペアテーブルの例を図21に示す。
ここでは図9のスペアテーブル43では下位4ビット(下位から第1〜第4のビット)を持って16個のPBA_に相当するブロックグループを構成したが、図21では下位から第9〜第12のビットを持って16個のPBA_に相当するブロックグループを構成している。これによって物理アドレス上、互いに隣接しない飛び飛びのブロックの集合によってブロックグループが構成される。
ここでは図9のスペアテーブル43では下位4ビット(下位から第1〜第4のビット)を持って16個のPBA_に相当するブロックグループを構成したが、図21では下位から第9〜第12のビットを持って16個のPBA_に相当するブロックグループを構成している。これによって物理アドレス上、互いに隣接しない飛び飛びのブロックの集合によってブロックグループが構成される。
図22は物理アドレス上のブロックグループの構成イメージを示す図である。
たとえば図21におけるブロックグループ54の物理アドレス上の配置は、図22における黒塗りブロックの集合体57で示される。各構成ブロックは物理アドレス上互いに離れた位置にあり、したがって物理レイアウト上でも通常離れている。これによってチップ上に局在した欠陥が生じても、それらは複数のブロックグループに分散され、同じブロックグループに集中することが無い。
たとえば図21におけるブロックグループ54の物理アドレス上の配置は、図22における黒塗りブロックの集合体57で示される。各構成ブロックは物理アドレス上互いに離れた位置にあり、したがって物理レイアウト上でも通常離れている。これによってチップ上に局在した欠陥が生じても、それらは複数のブロックグループに分散され、同じブロックグループに集中することが無い。
なお、このようなケースでは、スペアブロックも同様に分散させた方が、アドレス上の整合を取りやすい。
すなわち、図21のスペアテーブルにおける最後尾のブロックグループ55の先に、ブロックグループ56のように同様のグループを形成して行けば、物理アドレスが全て網羅されるが、このブロックグループ56の部分をスペアブロックに割り当てる。すなわち図22の物理アドレスイメージでは斜線にハッチングされたブロックの集合体58がスペアブロックとして割り当てられる。これは下位4ビット中”0x8〜0xF”の連続領域よりなる8ブロックの塊が総計16個あり、合計128個のスペアブロックに相当する。
すなわち、図21のスペアテーブルにおける最後尾のブロックグループ55の先に、ブロックグループ56のように同様のグループを形成して行けば、物理アドレスが全て網羅されるが、このブロックグループ56の部分をスペアブロックに割り当てる。すなわち図22の物理アドレスイメージでは斜線にハッチングされたブロックの集合体58がスペアブロックとして割り当てられる。これは下位4ビット中”0x8〜0xF”の連続領域よりなる8ブロックの塊が総計16個あり、合計128個のスペアブロックに相当する。
またこのとき、使用すべきスペアブロックを選択するスペアオフセット(Spare Offest)の情報は、スペアブロック群の先頭”0x10F8”に対して、下位から第9〜第12のビットに対するオフセット値と、下位から第1〜第4のビットに対するオフセット値の組み合わせで与えられる。
たとえば図21の最後尾グループ55におけるスペア情報のスペアオフセットは”0xA_6”と記載されているが、スペアブロック群の先頭”0x10F8”の下位から第9〜第12のビット”0x0”には”0xA”を加え、下位から第1〜第4のビット”0x8”には”0x6”を加える。したがって、選択すべきスペアブロックの物理アドレスは”0x1AFE”となる。
たとえば図21の最後尾グループ55におけるスペア情報のスペアオフセットは”0xA_6”と記載されているが、スペアブロック群の先頭”0x10F8”の下位から第9〜第12のビット”0x0”には”0xA”を加え、下位から第1〜第4のビット”0x8”には”0x6”を加える。したがって、選択すべきスペアブロックの物理アドレスは”0x1AFE”となる。
なお、本発明の最適な実施形態として記憶メディアがフラッシュメモリの場合について述べたが、欠陥を含む記憶メディア一般に対しても、領域を複数のデータブロックに区分けし、そのブロック単位で欠陥の置き換えを実施するのであれば、同様の置換手順を適用することが可能である。
COMSYS・・・コンピュータシステム、30・・・ファイル記憶装置、31・・・インターフェース回路(I/F)、32・・・制御回路、33・・・内部バス、34・・・ページバッファ、35(M0〜M3)・・・NAND型フラッシュメモリ、36・・・制御回路、37・・・メモリバス、38・・・RAM、40・・・ホストシステム、42,42A,42B・・・アドレス変換テーブル、43,43A,43B・・・スペアテーブル、70・・・コンピュータシステム、34b・・・ページバッファ、35b(M0〜M3)・・・フラッシュメモリ、36b・・・制御回路、37b・・・データバス、71b・・・CPU、72b・・・システムメモリ(RAM)、73b・・・システムバス、74b・・・ブリッジ回路。
Claims (7)
- 主記憶媒体としてのメモリデバイスと、
制御回路と、
RAMと、を有し、
上記メモリデバイスは複数のデータブロックで形成され、当該データブロックの一部に欠陥ブロックを含み、
上記制御回路は、上記RAM内に記憶された置換情報を用いて、上記メモリデバイスの欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替え、
上記置換情報はN個(N>=2)のデータブロックよりなる複数ブロックグループの各々に対して、グループ内に存在するM個(M<N)までの欠陥ブロックに正常ブロックが割り当てられている
記憶装置。 - 上記メモリデバイスは不揮発性メモリを含み、
上記置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記RAM内に読み出されて使用される
請求項1記載の記憶装置。 - 上記ブロックグループ内にM個を越える欠陥ブロックが存在する場合、上記制御回路は第二の置換情報を用いて第一の置換情報を補完し、第一の置換情報で正常ブロックを割り当てられていない欠陥ブロックへのアクセスを、正常ブロックへのアクセスに振り替える
請求項1記載の記憶装置。 - 上記第二の置換情報は上記メモリデバイス内に記憶されており、必要に応じてその一部または全部が上記RAM内に読み出されて使用される
請求項2記載の記憶装置。 - 第一の置換情報が上記RAM内に読み出され、アクセスの振り替えに情報が不足していれば、さらに第二の情報が上記RAM内に読み出され、参照される
請求項4記載の記憶装置。 - 同一のグループに属する各々のデータブロックは、メモリデバイス上の互いに近接しない物理領域に、分散配置されている
請求項1記載の記憶装置。 - 同一のグループに属する各々のデータブロックは、物理アドレス上互いに近接していない
請求項1記載の記憶装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006162274A JP2007334413A (ja) | 2006-06-12 | 2006-06-12 | 記憶装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006162274A JP2007334413A (ja) | 2006-06-12 | 2006-06-12 | 記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007334413A true JP2007334413A (ja) | 2007-12-27 |
Family
ID=38933867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006162274A Pending JP2007334413A (ja) | 2006-06-12 | 2006-06-12 | 記憶装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007334413A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009110304A1 (en) * | 2008-03-01 | 2009-09-11 | Kabushiki Kaisha Toshiba | Memory system |
WO2009110302A1 (en) * | 2008-03-01 | 2009-09-11 | Kabushiki Kaisha Toshiba | Memory system |
JP2010086106A (ja) * | 2008-09-30 | 2010-04-15 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2010146495A (ja) * | 2008-12-22 | 2010-07-01 | Mega Chips Corp | メモリシステムおよびコンピュータシステム |
JP2012203508A (ja) * | 2011-03-24 | 2012-10-22 | Toshiba Corp | メモリシステムおよびプログラム |
KR101277382B1 (ko) * | 2010-02-26 | 2013-06-20 | 가부시끼가이샤 도시바 | 메모리 시스템 |
JP2014135097A (ja) * | 2008-03-11 | 2014-07-24 | Agere Systems Inc | クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置 |
-
2006
- 2006-06-12 JP JP2006162274A patent/JP2007334413A/ja active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447914B2 (en) | 2008-03-01 | 2013-05-21 | Kabushiki Kaisha Toshiba | Memory system managing the number of times of erasing |
WO2009110302A1 (en) * | 2008-03-01 | 2009-09-11 | Kabushiki Kaisha Toshiba | Memory system |
JP2009211225A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP2009211232A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
WO2009110304A1 (en) * | 2008-03-01 | 2009-09-11 | Kabushiki Kaisha Toshiba | Memory system |
US8661191B2 (en) | 2008-03-01 | 2014-02-25 | Kabushiki Kaisha Toshiba | Memory system |
KR101075923B1 (ko) | 2008-03-01 | 2011-10-26 | 가부시끼가이샤 도시바 | 메모리 시스템 |
CN101681315B (zh) * | 2008-03-01 | 2012-05-23 | 株式会社东芝 | 存储器系统 |
US8209471B2 (en) | 2008-03-01 | 2012-06-26 | Kabushiki Kaisha Toshiba | Memory system |
TWI406129B (zh) * | 2008-03-01 | 2013-08-21 | Toshiba Kk | 記憶體系統 |
JP2014135097A (ja) * | 2008-03-11 | 2014-07-24 | Agere Systems Inc | クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置 |
JP2010086106A (ja) * | 2008-09-30 | 2010-04-15 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP4720891B2 (ja) * | 2008-09-30 | 2011-07-13 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US8683168B2 (en) | 2008-12-22 | 2014-03-25 | Megachips Corporation | Memory card including a computing device for obtaining a physical address corresponding to a logical address and computer system including the memory card |
JP2010146495A (ja) * | 2008-12-22 | 2010-07-01 | Mega Chips Corp | メモリシステムおよびコンピュータシステム |
KR101277382B1 (ko) * | 2010-02-26 | 2013-06-20 | 가부시끼가이샤 도시바 | 메모리 시스템 |
JP2012203508A (ja) * | 2011-03-24 | 2012-10-22 | Toshiba Corp | メモリシステムおよびプログラム |
US8812774B2 (en) | 2011-03-24 | 2014-08-19 | Kabushiki Kaisha Toshiba | Memory system and computer program product |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11768610B2 (en) | Storage system having a host that manages physical data locations of a storage device | |
US11507500B2 (en) | Storage system having a host directly manage physical data locations of storage device | |
US10936252B2 (en) | Storage system capable of invalidating data stored in a storage device thereof | |
JP4910360B2 (ja) | 記憶装置、コンピュータシステム、およびデータ書き込み方法 | |
US9448919B1 (en) | Data storage device accessing garbage collected memory segments | |
US8312203B2 (en) | Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses | |
US8225047B2 (en) | Memory system with pre-fetch operation | |
JP5317689B2 (ja) | メモリシステム | |
JP5612514B2 (ja) | 不揮発性メモリコントローラ及び不揮発性記憶装置 | |
KR100946286B1 (ko) | 플래시 파일 시스템에서 가상-물리 주소 변환 방법 및 시스템 | |
JP2008146253A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
WO2014074449A2 (en) | Wear leveling in flash memory devices with trim commands | |
JP2010267273A (ja) | 半導体記憶装置 | |
JP2007018499A (ja) | 記憶装置 | |
JP2008146254A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
KR101403922B1 (ko) | 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법 | |
JP2009211228A (ja) | メモリシステム | |
TWI597730B (zh) | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 | |
US20170262177A1 (en) | Storage device having dual access procedures | |
JP2007334413A (ja) | 記憶装置 | |
CN112130749B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
JP2008181203A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US20210117315A1 (en) | Memory controller and flash memory system |