JP2013196674A - メモリシステムおよび多重化方法 - Google Patents

メモリシステムおよび多重化方法 Download PDF

Info

Publication number
JP2013196674A
JP2013196674A JP2012066736A JP2012066736A JP2013196674A JP 2013196674 A JP2013196674 A JP 2013196674A JP 2012066736 A JP2012066736 A JP 2012066736A JP 2012066736 A JP2012066736 A JP 2012066736A JP 2013196674 A JP2013196674 A JP 2013196674A
Authority
JP
Japan
Prior art keywords
block
management table
data
address management
memory
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
Application number
JP2012066736A
Other languages
English (en)
Inventor
Naoki Matsunaga
直記 松永
Atsushi Iizuka
篤史 飯塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012066736A priority Critical patent/JP2013196674A/ja
Priority to US13/768,344 priority patent/US20130254463A1/en
Publication of JP2013196674A publication Critical patent/JP2013196674A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】信頼性を向上させること。
【解決手段】本発明の一つの実施形態によれば、メモリシステムは、不揮発性の第1メモリと、揮発性の第2メモリと、退避部とを備えている。前記第1メモリは、不良ブロックと良ブロックとを具備し、第1の良ブロックにホスト装置からのユーザデータを記憶する。前記第2メモリは、前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第1の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する。前記退避部は、所定のタイミングで前記アドレス管理テーブルを前記第2メモリから読み出して、前記読み出したアドレス管理テーブルを前記第1の良ブロックとは異なる第2の良ブロックに退避するとともに、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込む。
【選択図】図4

Description

本発明の実施形態は、メモリシステムおよび多重化方法に関する。
コンピュータシステムに用いられるメモリシステムとして、NAND型のメモリセルを備えるメモリチップを搭載したSSD(Solid State Drive)が注目されている。SSDは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
特開2008−198192号公報
本発明の一つの実施形態は、信頼性を向上させたメモリシステム、およびメモリシステムの信頼性を向上させるための、アドレス管理テーブルの多重化方法を提供することを目的とする。
本発明の一つの実施形態によれば、メモリシステムは、不揮発性の第1メモリと、揮発性の第2メモリと、更新部と、退避部とを備えている。前記第1メモリは、不良ブロックと良ブロックとを具備し、第1の良ブロックにホスト装置からのユーザデータを記憶する。前記第2メモリは、前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第1の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する。前記更新部は、前記第2メモリが記憶するアドレス管理テーブルを更新管理する。前記退避部は、所定のタイミングで前記アドレス管理テーブルを前記第2メモリから読み出して、前記読み出したアドレス管理テーブルを前記第1の良ブロックとは異なる第2の良ブロックに退避するとともに、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込む。
図1は、第1の実施形態のSSDの構成例を示す図である。 図2は、1個のブロックの構成例を示す回路図である。 図3は、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式でのしきい値分布の例を示している。 図4は、NANDメモリのメモリ構成を説明する図である。 図5は、第1の実施形態のSSDの機能構成を説明する図である。 図6は、第1の実施形態のSSDの電源オン時の動作を説明するフローチャートである。 図7は、第1の実施形態のSSDの電源オフ時の動作を説明するフローチャートである。 図8は、第1の実施形態の管理テーブル多重化処理を説明するフローチャートである。 図9は、第2の実施形態の管理テーブル多重化処理を説明するフローチャートである。 図10は、管理テーブル格納領域の構成例を説明する図である。 図11は、第2の実施形態のバックアップテーブル格納領域の構成例を説明する図である。 図12は、第3の実施形態の管理テーブル多重化処理を説明するフローチャートである。 図13は、第3の実施形態のバックアップテーブル格納領域の構成例を説明する図である。 図14は、第4の実施形態のバックアップテーブル格納領域の構成例を説明する図である。 図15は、第4の実施形態の管理テーブル多重化処理を説明するフローチャートである。 図16は、第4の実施形態のSSDの電源オン時の動作を説明するフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび多重化方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のSSDの構成例を示す図である。図示するように、SSD100は、パーソナルコンピュータなどのホスト装置200と所定の通信インタフェースで接続され、ホスト装置200の外部記憶装置として機能する。SSD100がホスト装置200から受信する読み出し要求や書き込み要求は、LBA(Logical Block Addressing)で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、通信インタフェースはSATA規格に限らず、SAS(Serial Attached SCSI)、PCIe(PCI Express)など様々な通信インタフェース規格を採用することが可能である。
SSD100は、NANDメモリ(第1メモリ)1と、CPU2と、ホストインタフェース(ホストI/F)3と、DRAM(第2メモリ)4と、NANDコントローラ(NANDC)5と、ECC(Error Checking and Correcting)回路6と、を備えている。CPU2、ホストI/F3、DRAM4、NANDC5、およびECC回路6は、互いにバスで接続されている。また、NANDメモリ1は、NANDC5に接続されている。
CPU2は、ファームウェア(後述するファームウェアプログラム111またはファームウェアプログラム112)に基づいて、SSD100全体の制御を実行する。
DRAM4は、CPU2がSSD100を制御するためのワークエリアとして機能する揮発性メモリである。特に、DRAM4は、LBAとNANDメモリ1の物理アドレスとの対応関係を記録したアドレス管理テーブル121(後述する)が展開(格納)される。DRAM4に展開されたアドレス管理テーブル121は、LBAとNANDメモリ1の物理アドレスとの対応関係が更新される毎にCPU2によって更新される。
ホストI/F3は、ホスト装置200との間の通信インタフェースの制御およびホスト装置200とDRAM4との間のデータ転送を実行する。
NANDC5は、NANDメモリ1とDRAM4との間のデータ転送を実行する。また、NANDC5は、NANDメモリ1に対するアクセス時に発生するエラーを訂正するECC回路51を備えている。ECC回路51は、第2の訂正符号のエンコードを行い、また、第1の誤り訂正符号のエンコードおよびデコードを行う。
ECC回路6は、第2の誤り訂正符号のデコードを行う。第1の誤り訂正符号、第2の誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、第2の誤り訂正符号の訂正能力は、第1の誤り訂正符号の訂正能力よりも高いとする。
ECC回路51が第1の誤り訂正符号のデコードでも訂正不可能なエラーを検出した場合には、ECC回路51はCPU2にその旨を通知する。通知をうけたCPU2は、ECC回路6を起動して、第2の誤り訂正符号に基づくエラー訂正を実行する。
NANDメモリ1は、種々のデータを保持する記憶領域を備えている。NANDメモリ1の記憶領域は、メモリセルアレイによって構成される。このメモリセルアレイは、消去の単位となるブロックを複数備えて構成される。
図2は、NANDメモリ1の記憶領域を構成するメモリセルアレイに含まれる1個のブロックの構成例を示す回路図である。図示するように、各ブロックは、X方向に沿って順に配列された(m+1)個のNANDストリングを備えている(mは、0以上の整数)。(m+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(metal oxide semiconductor field effect transistor)から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じてしきい値電圧が変化し、このしきい値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
各NANDストリングにおいて、(n+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
ワード線WL0〜WLqは、ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(m+1)個のメモリセルトランジスタMTは1ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
なお、NANDメモリ1の記憶領域を構成するメモリセルアレイは、1つのメモリセルに2ビット以上を記憶する多値メモリ(MLC: Multi Level Cell)であってもよいし、1つのメモリセルに1ビットを記憶する二値メモリ(SLC: Single Level Cell)であってもよい。
図3は、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式でのしきい値分布の例を示している。4値データ記憶方式では、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか一つをメモリセルトランジスタMTに保持可能である。この、4値データ“xy”は、メモリセルトランジスタMTのしきい値電圧の順に、例えば、データ“11”、“01”、“00”、“10”が割り当てられる。データ“11”は、メモリセルトランジスタMTのしきい値電圧が負の消去状態である。
下位ページ書き込み動作においては、データ“11”(消去状態)のメモリセルトランジスタMTに対して選択的に、下位ビットデータ“y”の書き込みによって、データ“10”が書き込まれる。上位ページ書き込み前のデータ“10”のしきい値分布は、上位ページ書き込み後のデータ“01”とデータ“00”のしきい値分布の中間程度に位置しており、上位ページ書き込み後のしきい値分布よりブロードであってもよい。
上位ページ書き込み動作においては、データ“11”のメモリセルと、データ“10”のメモリセルに対して、それぞれ選択的に上位ビットデータ“x”の書き込みが行われて、データ“01”およびデータ“00”が書き込まれる。
図4は、NANDメモリ1のメモリ構成を説明する図である。図示するように、NANDメモリ1は、ユーザデータ格納領域10と、ファームウェアプログラム格納領域11と、管理テーブル格納領域12と、バックアップテーブル格納領域13と、バッドブロックプール14と、フリーブロックプール15とを備えている。
ユーザデータ格納領域10は、ホスト装置200から書き込み要求されたデータ(ユーザデータ)が格納される領域である。ユーザデータ格納領域10は、LBA空間上の所定の範囲が割り当てられている。なお、ファームウェアプログラム格納領域11、管理テーブル格納領域12、バックアップテーブル格納領域13、バッドブロックプール14、およびフリーブロックプール15は、LBAが割り当てられない。
ファームウェアプログラム格納領域11は、ファームウェアプログラム111とそのバックアップデータであるファームウェアプログラム112とが格納される。CPU2は、起動時にファームウェアプログラム111を読み出して使用する。ファームウェアプログラム111に訂正不可能なエラーが存在する場合には、CPU2は、ファームウェアプログラム112を読み出して使用する。
管理テーブル格納領域12は、アドレス管理テーブル121を記憶する領域である。
NANDメモリ1への書き込み方式として、例えば以下に述べる方式が採用される。まず、書き込みの前に、ブロック内の無効データを消去する必要がある。すなわち、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、上述のように、ホスト装置200から要求される書き込み番地は、ホスト装置200で用いられる論理アドレスであるLBAで指定される。一方、NANDメモリ1へのデータの書き込み番地は、NANDメモリ1の物理的な記憶位置(物理アドレス)に基づいて、ページの昇順に書き込みが行なわれる。即ち、物理アドレスは論理アドレスとは無関係に決定される。決定された論理アドレスと物理アドレスとの対応関係は、DRAM4にロードされたアドレス管理テーブル121に記録される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストから要求されると、CPU2は、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、CPU2は、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。DRAM4上のアドレス管理テーブル121は、所定のタイミング(ここでは電源オフ時とする)にフリーブロックに書き込まれ不揮発化される。
フリーブロックプール15は、有効データを含まないブロックであるフリーブロックの集合である。フリーブロックプール15に登録されているフリーブロックは、LBAが割り振られていないフリーブロック(第2の良ブロック)である。また、バッドブロックプール14は、CPU2によって使用不可の判定がなされたブロックであるバッドブロック(不良ブロック)の集合である。
CPU2は、例えば、読み出しエラー、消去エラー、またはプログラムエラーなどが発生したときにこれらのエラーが発生したブロックをバッドブロックとしてバッドブロックプール14に登録する。なお、ユーザデータ格納領域10を構成するブロック(第1の良ブロック)がバッドブロックとなって当該バッドブロックがバッドブロックプール14に追加されたとき、バッドブロックプール14に追加されたブロック数と同数のフリーブロックがフリーブロックプール15から取り出されてユーザデータ格納領域10に追加される。これにより、ユーザデータ格納領域10は、ユーザデータ格納領域10を構成するブロックのいくつかがバッドブロックとなっても常に同じサイズを維持することができる。即ち、ホスト装置200に対して、常に同一の容量のユーザデータ格納領域10を提供することができる。フリーブロックプール15に登録されているフリーブロックが枯渇したとき、ホスト装置200に対して常に同一の容量のユーザデータ格納領域10を提供することができなくなるので、SSD100は使用不可となる。
なお、DRAM4上のアドレス管理テーブル121が不揮発化されるとき、フリーブロックプール15に登録されているフリーブロックに当該アドレス管理テーブル121が格納され、そのフリーブロックは管理テーブル格納領域12となる。アドレス管理テーブル121が新規にフリーブロックに書き込まれたとき、それまで管理テーブル格納領域12としてアドレス管理テーブル121を保持していたブロックは、保持しているアドレス管理テーブル121が無効化され、フリーブロックプール15に戻される。なお、フリーブロックプール15に登録されているフリーブロックは、ウェアレベリングやガベージコレクションにより、ユーザデータ格納領域10に追加されたりユーザデータ格納領域10から削除されてフリーブロックプール15に追加されたりしてもよい。
バックアップテーブル格納領域13は、バッドブロックにより構成され、アドレス管理テーブル121のバックアップデータであるバックアップテーブル131が格納される。
例えば、データリテンションが進行したことによって読み出しエラーが発生したり、プログラムディスターブの影響を受けて読み出しエラーが発生したりしたことでバッドブロックとされたブロックは、実際にはメモリセルアレイの健全性は損なわれていないため、内部に保持するデータを消去されることで再利用されることが可能である。本発明の第1の実施形態のSSD100は、バッドブロックのうちの再利用可能なブロックに管理データを多重化して記憶するようにしているので、管理データの破損によりSSD100が起動しなくなるなどの障害の発生を防止することができる。また、上述のように、フリーブロックプール15に登録されているフリーブロックは、ユーザデータ格納領域10を構成するブロックがバッドブロックとなったときに消費され、フリーブロックプール15のフリーブロックが枯渇したとき、SSD100はそれ以上の使用が不可能となる。本発明の第1の実施形態によれば、バッドブロックとされたブロックに管理テーブルをバックアップするので、バックアップ用に新規にフリーブロックを用意する場合に比べて将来的にユーザデータ格納領域10として使用可能なブロック数を増やすことができるので、SSD100が使用不可となるまでの時間を延ばすことができる。
図5は、CPU2がファームウェアプログラム111またはファームウェアプログラム112を実行することによって実現する第1の実施形態のSSD100の機能構成を説明する図である。図示するように、CPU2は、アドレス管理部21および退避・展開部22を備えている。
アドレス管理部21は、ホスト装置200からの書き込み要求されたデータがユーザデータ格納領域10に書き込まれる毎にDRAM4上でのアドレス管理テーブル121の更新を実行する。また、アドレス管理部21は、ウェアレベリングやガベージコレクションを行って、ウェアレベリングやガベージコレクションを行う毎にDRAM4上のアドレス管理テーブル121を更新するようにしてもよい。即ち、アドレス管理部21は、アドレス管理テーブル121をDRAM4上で更新管理する。
退避・展開部22は、管理テーブル格納領域12に格納されたアドレス管理テーブル121をDRAM4へ展開したり、DRAM4が記憶するアドレス管理テーブル121をNANDメモリ1に退避したりする。退避・展開部22は、DRAM4上のアドレス管理テーブル121を退避する毎に、バックアップテーブル131を更新する。
図6は、SSD100の電源オン時の動作を説明するフローチャートである。SSD100が電源オンされた時には、退避・展開部22は、アドレス管理テーブル121をNANDメモリ1(正確には管理テーブル格納領域12)から読み出して、読み出したアドレス管理テーブル121をDRAM4に展開する(ステップS1)。ここで、アドレス管理テーブル121がNANDメモリ1から読み出された際に、ECC回路51、またはECC回路51およびECC回路6により、エラーの検出と訂正とが行われる。退避・展開部22は、ECC回路6を用いても訂正不可能なエラーがあるか否かを判定する(ステップS2)。アドレス管理テーブル121にECC回路6を用いても訂正不可能なエラーがあった場合には(ステップS2、Yes)、退避・展開部22は、バックアップテーブル格納領域13に格納されているバックアップテーブル131を読み出して、読み出したバックアップテーブル131をアドレス管理テーブル121としてDRAM4に格納する(ステップS3)。ECC回路6を用いても訂正不可能なエラーがなかった場合には(ステップS2、No)、ステップS3の処理はスキップされる。そして、退避・展開部22は、SSD100の起動時の処理を終了する。なお、SSD100の起動時の処理が終了した後、アドレス管理部21は、ユーザデータにかかるLBAと物理アドレスとの対応関係が変化する毎に、当該対応関係の変化分をDRAM4上のアドレス管理テーブル121に反映せしめる。LBAと物理アドレスとの対応関係の変化は、ホスト装置200から新規にユーザデータの書き込みが発生したり、ガベージコレクションやウェアレベリングが実行されたりした際に起こる。
図7は、SSD100の電源オフ時の動作を説明するフローチャートである。SSD100が電源オフされた時には、退避・展開部22は、フリーブロックプール15からフリーブロックを1つ取得する(ステップS11)。そして、退避・展開部22は、DRAM4上のアドレス管理テーブル121を、ステップS11の処理により取得したフリーブロックに書き込む(ステップS12)。この処理により、アドレス管理テーブル121が書き込まれたブロックは、管理テーブル格納領域12となり、以前の管理テーブル格納領域12を構成するフロックは、保持するデータが無効化されてフリーブロックプール15に追加される。続いて、退避・展開部22は、アドレス管理テーブル121を多重化する管理テーブル多重化処理を実行し(ステップS13)、電源オフ時のSSD100の動作が終了となる。
図8は、第1の実施形態の管理テーブル多重化処理を説明するフローチャートである。退避・展開部22は、バッドブロックプール14からバッドブロックを1つ取得する(ステップS21)。そして、退避・展開部22は、DRAM4上のアドレス管理テーブル121をステップS21の処理により取得したバッドブロックに書き込む(ステップS22)。そして、退避・展開部22は、ステップS22の処理によりバッドブロックに書き込まれたアドレス管理テーブル121を例えばDRAM4に読み出して検証することで、当該バッドブロックに書き込まれたアドレス管理テーブル121を検証する(ステップS23)。退避・展開部22は、ECC回路6が第2の訂正符号を用いてアドレス管理テーブル121の読み出し時に訂正不可能なエラーがあったか否かを監視することで、バッドブロックに書き込まれたアドレス管理テーブル121を検証することができる。即ち、退避・展開部22は、バッドブロックに書き込まれたアドレス管理テーブル121にECC回路6が第2の訂正符号を用いて訂正不可能なエラーが発生している場合には、当該アドレス管理テーブル121は不合格であると判定し、バッドブロックに書き込まれたアドレス管理テーブル121にECC回路6が第2の訂正符号を用いて訂正不可能なエラーが発生していない場合には、当該アドレス管理テーブル121は合格であると判定することができる。ステップS22の処理によりバッドブロックに書き込まれたアドレス管理テーブル121の検証結果が不合格である場合には(ステップS24、No)、退避・展開部22は、ステップS21の処理を再び実行する。ステップS22の処理によりバッドブロックに書き込まれたアドレス管理テーブル121の検証結果が合格である場合には(ステップS24、Yes)、退避・展開部22は、管理テーブル多重化処理を終了する。なお、バッドブロックに書き込まれ、検証結果が合格であったアドレス管理テーブル121はバックアップテーブル131として当該バッドブロックに保持されることとなり、当該バッドブロックはバックアップテーブル格納領域13となる。
なお、以上の説明においては、簡単のために、アドレス管理テーブル121は、1ブロック内に収まるものとして説明したが、アドレス管理テーブル121のサイズは1ブロックのサイズを越えてもよい。その場合には、退避・展開部22は、バックアップテーブル131を複数のバッドブロックに分割して格納するようにしてもよい。
また、アドレス管理テーブル121をバックアップ対象としたが、バッドブロックリストやフリーブロックリストなど、DRAM4に展開されて使用される管理データをバックアップ対象とするようにしてもよい。
このように、第1の実施形態によれば、SSD100は、所定のタイミングでアドレス管理テーブル121をDRAM4から読み出して、前記読み出したアドレス管理テーブル121をフリーブロックに退避するとともに、当該退避対象のアドレス管理テーブル121の複製データであるバックアップテーブル131をバッドブロックに書き込む、ように構成したので、アドレス管理テーブル121が破損した場合であってもバッドブロックに書き込まれたバックアップテーブル131をアドレス管理テーブル121として使用することができるので、SSD100の信頼性が向上する。また、SSD100は、バックアップテーブル131の書き込み先としてフリーブロックではなくバッドブロックを使用するので、SSD100が使用不可となるまでの時間を延ばすことができる。
また、SSD100は、バックアップテーブル131をバッドブロックに書き込んだ後、当該バッドブロックに書き込まれたバックアップテーブル131を検証し、検証結果が不合格である場合、別のバッドブロックにバックアップテーブル131を格納する、ように構成したので、訂正不可能なエラーのないバックアップテーブル131を用意することができるので、SSD100の信頼性が向上する。
(第2の実施形態)
ブロック内の特定のワードラインが故障したとき、その他のワードラインが使用可能であっても、当該ブロックはバッドブロックとされる。第2の実施形態によれば、特定のワードラインのみが故障したバッドブロックのうちの故障していないワードラインにバックアップデータを格納することができる。
第2の実施形態のSSDの構成は、第1の実施形態と同様であるので、第2の実施形態のSSDの構成要素については、第1の実施形態と同様の名称および符号を用い、重複する説明を省略する。
第2の実施形態のSSD100の動作は、管理データ多重化処理のみ第1の実施形態と異なっている。
図9は、第2の実施形態の管理テーブル多重化処理を説明するフローチャートである。まず、退避・展開部22は、バッドブロックプール14からバッドブロックを1つ取得する(ステップS31)。そして、退避・展開部22は、ステップS33〜ステップS39のループ処理で使用するループインデックスiを1で初期化して(ステップS32)、ステップS31の処理により取得したバッドブロックに空きページが存在するか否かを判定する(ステップS33)。なお、ステップS33の処理における空きページとは、後述のステップS35の処理による書き込みが一度も試みられていないページをいう。バッドブロックに空きページが存在しない場合(ステップS33、No)、退避・展開部22は、バッドブロックプール14から別のバッドブロックを取得し(ステップS34)、ステップS33の判定処理を再び実行する。バッドブロックに空きページがある場合(ステップS33、Yes)、退避・展開部22は、DRAM4上のアドレス管理テーブル121を構成するデータのうちのiページ目をバッドブロックの空きページに書き込む(ステップS35)。ステップS35では、退避・展開部22は、前回書き込みが行われたページから物理アドレスが後続するページにiページ目のデータを書き込む。続いて、退避・展開部22は、ステップS35の処理によりバッドブロックに書き込まれたiページ目のデータをDRAM4に読み出して検証する(ステップS36)。なお、ステップS36の処理における検証方法は、ステップ23の処理における検証方法と同じであってよい。
続いて、退避・展開部22は、ステップS36の処理による検証結果が合格であるか否かを判定する(ステップS37)。ステップS35の処理によりバッドブロックに書き込まれたiページ目のデータの検証結果が不合格である場合には(ステップS37、No)、退避・展開部22は、ステップS34の処理を実行する。これにより、退避・展開部22は、iページ目のデータの検証結果が不合格である場合には、当該iページ目のデータの書き込み先のバッドブロックを別のバッドブロックに変更することになる。
ステップS35の処理によりバッドブロックに書き込まれたiページ目のデータの検証結果が合格である場合には(ステップS37、Yes)、退避・展開部22は、DRAM4上のアドレス管理テーブル121を構成する全てのデータのバッドブロックへの書き込みが完了したか否かを判定する(ステップS38)。バッドブロックへの書き込みが行われていないデータが存在する場合には(ステップS38、No)、退避・展開部22は、ループインデックスiを1だけインクリメントし(ステップS39)、ステップS33の処理を実行する。これにより、退避・展開部22は、iページ目のデータの検証結果が合格である場合には、i+1ページ目のデータ、言い換えるとiページ目のデータに後続するデータを、iページ目のデータと同一のバッドブロックの後続のワードライン(即ち物理アドレスが後続するページ)に書き込む。
バッドブロックへの書き込みが行われていないデータが存在しない場合には(ステップS38、Yes)、退避・展開部22は、第2の実施形態の管理テーブル多重化処理を終了する。
図10は、管理テーブル格納領域12の構成例を説明する図であり、図11は、第2の実施形態のバックアップテーブル格納領域13の構成例を説明する図である。図10に示すようにアドレス管理テーブル121が1つのブロック120により保持されるサイズを有する場合には、図11に示すように、バックアップテーブル131は、第2の実施形態の管理テーブル多重化処理により、複数(ここでは2つ)のバックアップテーブル131a、131bに分割され、分割されたバックアップテーブル131a、131bは、夫々、バッドブロック130a、130bに夫々格納される。なお、バッドブロック130a、130bに描画されている斜線部分は、故障している箇所を示す。即ち、第2の実施形態によれば、バックアップテーブル131は、バッドブロック130aの故障している箇所の直前まで書き込まれてバックアップテーブル131aが生成され、残りの部分であるバックアップテーブル131bがバッドブロック130bの故障していない箇所に書き込まれる。
なお、ここでは、退避・展開部22は、バックアップテーブル131を構成するデータをページサイズ(ワードラインのサイズ)毎にバッドブロックに書き込んで、書き込んだページサイズのデータを検証する、として説明したが、退避・展開部22によりバッドブロックへ書き込まれ、検証されるデータの単位サイズは、ブロックサイズよりも小さければページサイズに等しくなくても構わない。例えば、退避・展開部22によりバッドブロックに書き込まれ、検証されるデータの単位サイズは、ページサイズの自然数倍であってもよい。
このように、第2の実施形態によれば、SSD100は、バックアップテーブル131をブロックサイズよりも小さい単位サイズの構成データ毎にバッドブロックに書き込む。そして、SSD100は、構成データをバッドブロックに書き込んだ後に当該バッドブロックに書き込まれた構成データを検証する。検証結果が合格である場合、SSD100は、当該構成データに後続する構成データを同一のバッドブロックの後続する物理アドレスに格納する。構成データの検証結果が不合格である場合、SSD100は、当該検証結果が不合格の構成データを別のバッドブロックに書き込む。これにより、SSD100は、部分的に故障しているバッドブロックの故障していない部分をバックアップテーブル131の格納先として活用することができるようになる。即ち、バッドブロックを効率的に使用することができるようになる。
(第3の実施形態)
第3の実施形態によれば、バッドブロックを構成するワードラインのうちの全てを検証して、検証結果が合格となったワードラインにバックアップテーブルを格納することができる。
第3の実施形態のSSDの構成は、第1の実施形態と同様であるので、第3の実施形態のSSDの構成要素については、第1の実施形態と同様の名称および符号を用い、重複する説明を省略する。
第3の実施形態のSSD100の動作は、管理データ多重化処理のみ第1の実施形態と異なっている。
図12は、第3の実施形態の管理テーブル多重化処理を説明するフローチャートである。まず、退避・展開部22は、バッドブロックプール14からバッドブロックを1つ取得する(ステップS41)。そして、退避・展開部22は、ステップS43〜ステップS49のループ処理で使用するループインデックスiを1で初期化して(ステップS42)、ステップS41の処理により取得したバッドブロックに空きページが存在するか否かを判定する(ステップS43)。なお、ステップS43の処理における空きページとは、後述のステップS45の処理による書き込みが一度も試みられていないページをいう。バッドブロックに空きページが存在しない場合(ステップS43、No)、退避・展開部22は、バッドブロックプール14から別のバッドブロックを取得し(ステップS44)、ステップS43の判定処理を再び実行する。バッドブロックに空きページがある場合(ステップS43、Yes)、退避・展開部22は、DRAM4上のアドレス管理テーブル121を構成するデータのうちのiページ目をバッドブロックの空きページに書き込む(ステップS45)。そして、退避・展開部22は、ステップS45の処理によりバッドブロックに書き込まれたiページ目のデータをDRAM4に読み出して検証する(ステップS46)。なお、ステップS46の処理における検証方法は、ステップ23の処理における検証方法と同じであってよい。
続いて、退避・展開部22は、ステップS46の処理による検証結果が合格であるか否かを判定する(ステップS47)。ステップS45の処理によりバッドブロックに書き込まれたiページ目のデータの検証結果が不合格である場合には(ステップS47、No)、退避・展開部22は、ステップS43の処理を実行する。ステップS43〜ステップS47、Noのループ処理が繰り返されることにより、バッドブロックのうちの使用可能なワードラインにアドレス管理テーブル121を構成するデータが書き込まれてゆく。即ち、退避・展開部22は、iページ目のデータの検証結果が不合格である場合、当該iページ目のデータの書き込み先を同一のバッドブロックの後続する物理アドレスに変更する。
ステップS45の処理によりバッドブロックに書き込まれたiページ目のデータの検証結果が合格である場合には(ステップS47、Yes)、退避・展開部22は、DRAM4上のアドレス管理テーブル121を構成する全てのデータのバッドブロックへの書き込みが完了したか否かを判定する(ステップS48)。バッドブロックへの書き込みが行われていないデータが存在する場合には(ステップS48、No)、退避・展開部22は、ループインデックスiを1だけインクリメントし(ステップS49)、ステップS43の処理を実行する。バッドブロックへの書き込みが行われていないデータが存在しない場合には(ステップS48、Yes)、退避・展開部22は、第3の実施形態の管理テーブル多重化処理を終了する。
図13は、第3の実施形態のバックアップテーブル格納領域13の構成例を説明する図である。図示するように、バッドブロック130a、130bの使用可能な領域に分割されてバックアップテーブル131c〜131fが保持されている。特に、第3の実施形態によれば、バックアップテーブル131d、131fのように、バッドブロックの先頭から故障部分を隔てて存在する使用可能な領域が存在する場合でも、これらの領域にバックアップテーブルを保持することができる。
このように、第3の実施形態によれば、SSD100は、アドレス管理テーブル121を構成する単位サイズの構成データをバッドブロックに書き込んだ後に当該バッドブロックに書き込まれた構成データを検証する。検証結果が合格である場合、SSD100は、当該構成データに後続する構成データを同一のバッドブロックの後続する物理アドレスに格納する。構成データの検証結果が不合格である場合、SSD100は、当該検証結果が不合格の構成データの書き込み先を同一のバッドブロックの後続する物理アドレスに変更する。これにより、SSD100は、部分的に故障しているバッドブロックの故障していない部分を第2の実施形態よりもさらに効率的にバックアップテーブル131の格納先として活用することができるようになる。
(第4の実施形態)
第4の実施形態のSSDの構成は、第1の実施形態と同様であるので、第4の実施形態のSSDの構成要素については、第1の実施形態と同様の名称および符号を用い、重複する説明を省略する。
図14は、第4の実施形態のバックアップテーブル格納領域13の構成例を説明する図である。本図において、バックアップテーブル131gおよびバックアップテーブル131hは、同一のアドレス管理テーブル121から生成された複製データである。即ち、バックアップテーブル131が多重化される。そして、本図に示すように、バックアップテーブル131g、131hは、ワードラインが使用可能であるか故障しているかに関係なくバッドブロック130a、131bに夫々書き込まれており、管理テーブル格納領域12に格納されているアドレス管理テーブル121が破損してバックアップテーブル131が必要となったとき、バックアップテーブル131g、131hのうちの使用可能な部分に書き込まれた部分データをDRAM4にロードする。
第4の実施形態のSSD100の動作は、管理データ多重化処理と、電源オン時の動作とが第1の実施形態と異なっている。
図15は、第4の実施形態の管理テーブル多重化処理を説明するフローチャートである。まず、退避・展開部22は、ステップS52〜ステップS55のループ処理で使用するループインデックスiを1で初期化して(ステップS51)、バッドブロックプール14からバッドブロックを1つ取得する(ステップS52)。そして、退避・展開部22は、DRAM4上のアドレス管理テーブル121を構成するデータを、所定のサイズ毎に誤り検出符号を付して、ステップS52の処理により取得したバッドブロックに書き込む(ステップS53)。ステップS53にてアドレス管理テーブル121を構成するデータに付与される誤り検出符号は、どのような符号であってもよい。この誤り検出符号は、例えば、チェックサム、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号、ハッシュデータ等であってよい。そして、退避・展開部22は、ループインデックスiが予め設定された自然数であるNに等しいか否かを判定する(ステップS54)。自然数Nは、バックアップテーブル131を何重に多重化するかを記述した値であって、例えばバックアップテーブル131が3重化される場合にはN=3が設定される。ループインデックスiがNと等しくない場合(ステップS54、No)、退避・展開部22は、ループインデックスNを1だけインクリメントして(ステップS55)、ステップS52の処理を実行する。ループインデックスiがNと等しい場合(ステップS55、Yes)、退避・展開部22は、第4の実施形態の管理テーブル多重化処理を終了する。
これにより、バックアップテーブル131は、N重に多重化されて保持される。
図16は、第4の実施形態のSSD100の電源オン時の動作を説明するフローチャートである。SSD100が電源オンされた時には、退避・展開部22は、アドレス管理テーブル121をNANDメモリ1から読み出して、読み出したアドレス管理テーブル121をDRAM4に展開する(ステップS61)。ここで、アドレス管理テーブル121がNANDメモリ1から読み出された際に、ECC回路51、またはECC回路51およびECC回路6により、エラーの検出と訂正とが行われる。退避・展開部22は、ECC回路6を用いても訂正不可能なエラーがあるか否かを判定する(ステップS62)。ECC回路6を用いても訂正不可能なエラーがあった場合には(ステップS62、Yes)、退避・展開部22は、ステップS64〜ステップS67のループ処理で使用するループインデックスiを1で初期化して(ステップS63)、バックアップテーブル格納領域13を構成するi番目のバッドブロックに格納されているバックアップテーブル131の、ステップS62にて訂正不可能なエラーが含まれていた箇所に該当する部分を読み出して、当該部分を検証する(ステップS64)。なおここで読み出されて検証される部分は、ステップS53にて誤り検出符号が付与された単位の部分データであって、検証は、当該部分データに付与されている誤り検出符号が用いられる。
続いて、退避・展開部22は、部分データの検証結果が合格であるか否かを判定する(ステップS65)。部分データの検証結果が不合格であった場合(ステップS65、No)、退避・展開部22は、ループインデックスiがステップS54で用いた値と同じ自然数Nと等しいか否かを判定する(ステップS66)。ループインデックスiがNと等しくない場合(ステップS66、No)、退避・展開部22は、ループインデックスiを1だけインクリメントして(ステップS67)、ステップS64の処理を実行する。ループインデックスiがNと等しい場合(ステップS66、Yes)、起動エラーとなる。
部分データの検証結果が合格であった場合(ステップS65、Yes)、退避・展開部22は、DRAM4上のアドレス管理テーブル121のエラー部分を当該部分データで置き換えて(ステップS68)、電源オン時の動作を終了する。また、アドレス管理テーブル121に訂正不可のエラーがなかった場合(ステップS62、No)、退避・展開部22は、電源オン時の動作を終了する。
このように、第4の実施形態によれば、SSD100は、バックアップテーブル131を複数用意し、アドレス管理テーブル121が破損した場合、バックアップテーブル131毎にバックアップテーブル131が含む前記破損した部分に対応する部分データを検証し、検証結果が合格である場合、前記破損した部分に替えて前記検証結果が合格である部分データをDRAM4に書き込む、ようにしたので、バックアップテーブル131を用意する際に第1〜第3の実施形態では必要としたバックアップテーブル131を検証する動作が必要なくなくので、電源オフ時の処理コストを低減することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 NANDメモリ、2 CPU、3 ホストI/F、4 DRAM、5 NANDC、6 ECC回路、10 ユーザデータ格納領域、11 ファームウェアプログラム格納領域、12 管理テーブル格納領域、13 バックアップテーブル格納領域、14 バッドブロックプール、15 フリーブロックプール、21 アドレス管理部、22 退避・展開部、51 ECC回路、100 SSD、111、112 ファームウェアプログラム、120 ブロック、121 アドレス管理テーブル、130a、130b バッドブロック、131、131a〜131h バックアップテーブル、200 ホスト装置。

Claims (9)

  1. 不良ブロックと良ブロックとを具備し、第1の良ブロックにホスト装置からのユーザデータを記憶する不揮発性の第1メモリと、
    前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第1の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する揮発性の第2メモリと、
    前記第2メモリが記憶するアドレス管理テーブルを更新管理する更新部と、
    所定のタイミングで前記アドレス管理テーブルを前記第2メモリから読み出して、前記読み出したアドレス管理テーブルを前記第1の良ブロックとは異なる第2の良ブロックに退避するとともに、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込む、退避部と、
    を備ることを特徴とするメモリシステム。
  2. 前記退避部は、前記複製データを前記不良ブロックに書き込んだ後、当該不良ブロックに書き込まれた複製データを検証し、検証結果が不合格である場合、前記不良ブロックに書き込む前の複製データの書き込み先の不良ブロックを変更する、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記退避部は、前記複製データを前記良ブロックのサイズよりも小さい単位サイズの構成データ毎に前記不良ブロックに書き込んで、第1の構成データを前記不良ブロックに書き込んだ後に当該不良ブロックに書き込まれた第1の構成データを検証し、検証結果が合格である場合、前記第1の構成データに後続する第2の構成データを同一の不良ブロックの後続する物理アドレスに格納し、前記検証結果が不合格である場合、当該第1の構成データの書き込み先の不良ブロックを変更する、
    ことを特徴とする請求項1に記載のメモリシステム。
  4. 前記退避部は、前記複製データを前記良ブロックのサイズよりも小さい単位サイズの構成データ毎に前記不良ブロックに書き込んで、第1の構成データを前記不良ブロックに書き込んだ後に当該不良ブロックに書き込まれた第1の構成データを検証し、検証結果が合格である場合、前記第1の構成データに後続する第2の構成データを同一の不良ブロックの後続する物理アドレスに格納し、前記検証結果が不合格である場合、当該第1の構成データの書き込み先を同一の不良ブロックの後続する物理アドレスに変更する、
    ことを特徴とする請求項1に記載のメモリシステム。
  5. 電源オン時に前記第2の良ブロックに退避されたアドレス管理テーブルを読み出して、当該読み出されたアドレス管理テーブルを前記第2メモリに書き込み、当該第2の良ブロックに退避されたアドレス管理テーブルが破損した場合、前記不良ブロックに書き込まれた複製データを読み出して、当該読み出された複製データを前記第2メモリに書き込む、展開部をさらに備える、
    ことを特徴とする請求項1乃至請求項4の何れか一項に記載のメモリシステム。
  6. 前記退避部は、前記複製データを複数、前記不良ブロックに書き込み、
    電源オン時に前記第2の良ブロックに退避されたアドレス管理テーブルを読み出して、当該読み出されたアドレス管理テーブルを前記第2メモリに書き込み、当該第2の良ブロックに退避されたアドレス管理テーブルが破損した場合、前記不良ブロックに書き込まれた複数の複製データ毎に前記複製データが含む前記破損した部分に対応する部分データを検証し、検証結果が合格である場合、前記破損した部分に替えて前記検証結果が合格である部分データを前記第2メモリに書き込む、展開部をさらに備える、
    ことを特徴とする請求項1に記載のメモリシステム。
  7. 前記所定のタイミングは、電源オフ時である、ことを特徴とする請求項1に記載のメモリシステム。
  8. 不良ブロックと良ブロックとを具備し、第1の良ブロックにホスト装置からのユーザデータを記憶する不揮発性の第1メモリと、前記ホスト装置が前記ユーザデータの書き込み先の指定に用いる論理アドレスと前記第1の良ブロックの物理アドレスとの間の対応付けを記述したアドレス管理テーブルを記憶する揮発性の第2メモリと、を備えるメモリシステムの前記アドレス管理テーブルの多重化方法であって、
    前記第2メモリが記憶するアドレス管理テーブルを更新管理する更新ステップと、
    所定のタイミングで前記アドレス管理テーブルを前記第2メモリから読み出して、前記読み出したアドレス管理テーブルを前記第1の良ブロックとは異なる第2の良ブロックに退避する退避ステップと、
    前記アドレス管理テーブルを前記第2の良ブロックに退避する際に、当該退避対象のアドレス管理テーブルの複製データを前記不良ブロックに書き込むバックアップステップと、
    を備ることを特徴とする多重化方法。
  9. 電源オン時に前記第2の良ブロックに退避されたアドレス管理テーブルを読み出して、当該読み出されたアドレス管理テーブルを前記第2メモリに書き込み、前記第2の良ブロックに退避されたアドレス管理テーブルが破損した場合、前記不良ブロックに書き込まれた複製データを読み出して、当該読み出された複製データを前記第2メモリに書き込む、展開ステップ、
    をさらに備えることを特徴とする多重化方法。
JP2012066736A 2012-03-23 2012-03-23 メモリシステムおよび多重化方法 Pending JP2013196674A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012066736A JP2013196674A (ja) 2012-03-23 2012-03-23 メモリシステムおよび多重化方法
US13/768,344 US20130254463A1 (en) 2012-03-23 2013-02-15 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012066736A JP2013196674A (ja) 2012-03-23 2012-03-23 メモリシステムおよび多重化方法

Publications (1)

Publication Number Publication Date
JP2013196674A true JP2013196674A (ja) 2013-09-30

Family

ID=49395460

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012066736A Pending JP2013196674A (ja) 2012-03-23 2012-03-23 メモリシステムおよび多重化方法

Country Status (1)

Country Link
JP (1) JP2013196674A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816827A (zh) * 2021-01-27 2022-07-29 慧荣科技股份有限公司 开机启动信息重建系统及内存装置启动信息重建方法
CN115641887A (zh) * 2022-09-30 2023-01-24 深圳大普微电子科技有限公司 闪存管理方法及闪存设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114816827A (zh) * 2021-01-27 2022-07-29 慧荣科技股份有限公司 开机启动信息重建系统及内存装置启动信息重建方法
CN115641887A (zh) * 2022-09-30 2023-01-24 深圳大普微电子科技有限公司 闪存管理方法及闪存设备

Similar Documents

Publication Publication Date Title
US11862263B2 (en) Storage device and method of operating the same
US20130254463A1 (en) Memory system
JP4675984B2 (ja) メモリシステム
CN106537355B (zh) 针对基于块的架构利用epwr进行部分坏块检测和再使用
KR101730510B1 (ko) 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출
US10915394B1 (en) Schemes for protecting data in NVM device using small storage footprint
JP5142685B2 (ja) メモリシステム
US10762967B2 (en) Recovering from failure in programming a nonvolatile memory
JP2012203957A (ja) メモリシステム
KR20120055725A (ko) 스트라이프 기반 메모리 작동
US9798475B2 (en) Memory system and method of controlling nonvolatile memory
JP2020155163A (ja) メモリシステム及び不揮発性メモリ
US20160077913A1 (en) Method of controlling nonvolatile memory
CN113936721A (zh) 存储器系统、存储器装置和操作存储器装置的方法
US11809748B2 (en) Control method of flash memory controller and associated flash memory controller and electronic device
US12050533B2 (en) Memory system and operating method of memory system
JP2010128697A (ja) メモリシステム
US11467903B2 (en) Memory system and operating method thereof
JP2013196674A (ja) メモリシステムおよび多重化方法
JP2013196673A (ja) メモリシステム
US11119853B2 (en) Predicted error correction apparatus, operation method thereof and memory system using the same
US20220254435A1 (en) Semiconductor storage device and error processing method for defective memory cell in the device
US20260112439A1 (en) Storage controller for detecting failure of nonvolatile memory device, storage device including the storage controller, and electronic system including the storage device
US20240329865A1 (en) Data Storage Device and Method for Releasing a Source Block Having an Uncorrectable Error
CN102411987B (zh) 存储器件及其自交织方法