JP7023103B2 - メモリシステム及び制御方法 - Google Patents

メモリシステム及び制御方法 Download PDF

Info

Publication number
JP7023103B2
JP7023103B2 JP2017246674A JP2017246674A JP7023103B2 JP 7023103 B2 JP7023103 B2 JP 7023103B2 JP 2017246674 A JP2017246674 A JP 2017246674A JP 2017246674 A JP2017246674 A JP 2017246674A JP 7023103 B2 JP7023103 B2 JP 7023103B2
Authority
JP
Japan
Prior art keywords
data
information
memory
memory area
write
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.)
Active
Application number
JP2017246674A
Other languages
English (en)
Other versions
JP2019114031A (ja
Inventor
博行 根本
千穂子 繁田
和也 橘内
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.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2017246674A priority Critical patent/JP7023103B2/ja
Priority to US16/124,981 priority patent/US10783034B2/en
Publication of JP2019114031A publication Critical patent/JP2019114031A/ja
Application granted granted Critical
Publication of JP7023103B2 publication Critical patent/JP7023103B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/143Detection of memory cassette insertion or removal; Continuity checks of supply or ground lines; Detection of supply variations, interruptions or levels ; Switching between alternative supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Retry When Errors Occur (AREA)

Description

本実施形態は、メモリシステム及び制御方法に関する。
SSD(Solid State Drive)などのメモリシステムにおいては、書き込み要求に応じたデータが、そのデータに関する誤り訂正符号とともに不揮発性メモリに記憶され、その後、読み出し要求に応じて、データと誤り訂正符号が不揮発性メモリから読み出され、誤り訂正符号を用いた誤り訂正復号処理により復元される。このとき、データを適正に復元することが望まれる。
米国特許出願公開第2017/0070241号明細書
一つの実施形態は、データを適正に復元できるメモリシステム及び制御方法を提供することを目的とする。
一つの実施形態によれば、不揮発性メモリとコントローラとを有するメモリシステムが提供される。不揮発性メモリは、第1のメモリ領域と第2のメモリ領域とを有する。第1のメモリ領域は、複数のチップを含む。コントローラは、第1のメモリ領域の複数のチップに跨って書き込まれるべきライトデータのうち第1データを第1のメモリ領域の一部に書き込みライトデータのうち第2データを第1のメモリ領域に書き込む前に電源断が検出されたことに応じて、第1の情報と第2データとを第2のメモリ領域へ書き込む。第1の情報は、第2データが記憶されていた記憶位置に関する情報である。コントローラは、電源復帰が検出されたことに応じて、第1のメモリ領域の一部から第1データを読み出し、第2のメモリ領域から第1の情報を読み出す。コントローラは、読み出した第1の情報に基づいて、第2の情報を生成する。第2の情報は、第2データへアクセスするための参照位置に関する情報である。コントローラは、第2のメモリ領域から第2データを読み出して、読み出した第2データを生成した第2の情報に基づいて記憶する。コントローラは、読み出した第1データと記憶した第2データとを第1のメモリ領域の他の一部に書き込む。
図1は、実施形態に係るメモリシステムの構成を示す図である。 図2は、実施形態における論理ブロックの構成を示す図である。 図3は、実施形態における論理ページの構成を示す図である。 図4は、実施形態における物理ブロックの構成を示す図である。 図5は、実施形態に係るメモリシステムの電源断時の動作を示すフローチャートである。 図6は、実施形態における破棄ホストライト情報のデータ構造を示す図である。 図7は、実施形態に係るメモリシステムの電源復帰時の動作を示すフローチャートである。 図8は、実施形態における書き込み状況情報(書き込み状況マップ)を示す図である。 図9は、実施形態におけるアドレス変換情報(論物変換テーブル)を示す図である。 図10は、実施形態におけるシンボルリード情報(シンボルリードテーブル)を示す図である。 図11は、実施形態の変形例におけるブロック管理情報(論理ブロック管理テーブル)を示す図である。 図12は、実施形態の変形例における欠陥つぶし処理を示す図である。 図13は、実施形態の変形例における欠陥つぶし処理が行われる場合のシンボルリード情報(シンボルリードテーブル)を示す図である。 図14は、実施形態の他の変形例における穴埋めリード処理を示す図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
SSD(Solid State Drive)などのメモリシステムにおいては、書き込み要求に応じたデータが、そのデータに関する誤り訂正符号とともに不揮発性メモリに記憶され、その後、読み出し要求に応じて、データと誤り訂正符号が不揮発性メモリから読み出され、誤り訂正符号を用いた誤り訂正復号処理により復元される。例えば、メモリシステム1は、図1に示すように構成される。図1は、メモリシステム1の構成を示す図である。
メモリシステム1は、通信媒体を介してホスト2の外部に接続され、ホスト2に対する外部記憶媒体として機能する。ホスト2は、例えば、パーソナルコンピュータ又はCPUコアを含む。メモリシステム1は、例えば、SSD(Solid State Drive)を含む。
メモリシステム1は、コントローラ5、電源回路6、及び不揮発性メモリ7を有する。コントローラ5は、フロントエンド回路(FE)10及びバックエンド回路(BE)20を有する。FE10は、ホストインターフェース(ホストI/F)11を有する。BE20は、中央処理演算部(CPU)21、揮発性メモリ22、誤り訂正(ECC)回路23、及びメモリインターフェース(メモリI/F)24を有する。電源回路6は、外部電源4に接続され、バックアップ電池40を有する。メモリI/F24と不揮発性メモリ7とは、複数のチャネル(例えば、図1の場合、16個のチャネルCH0~CH15)を介して接続されている。
メモリシステム1では、不揮発性メモリ7を用いてデータを不揮発に記憶する。不揮発性メモリ7は、NAND型フラッシュメモリ、3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、相変化型メモリ(Phase Change Memory:PCM)、磁気抵抗メモリ(Magnetoresistive Random Access Memory:MRAM)などを含む。図1では、不揮発性メモリ7がNAND型フラッシュメモリである場合について例示している。
不揮発性メモリ7は、複数の論理ブロックを有する。複数の論理ブロックのうち一部の論理ブロックが緊急退避領域30に割り当てられ、残りの(大部分の)論理ブロックがストレージ領域31に割り当てられる。各論理ブロックは、複数の論理ページを含む。ストレージ領域31は、ホスト2から書き込み要求されたデータやメモリシステム1内の管理データが記憶される領域であり、緊急退避領域30は、電源回路6に対する電源断が発生したときに退避すべきデータが緊急的に退避される領域である。
例えば、論理ブロックBL0は、図2に示すように、複数の論理ページPG-0~PG-(N+3)(各論理ページを特に区別しない場合は、PGで示すことにする)を含む。図2は、論理ブロックBL0の構成を示す図である。Nは、任意の1以上の整数を表す。各論理ページPGは、バンクインターリーブが可能な複数のバンクを含む。図2では、チャネルCH0~CH15ごとに2個のバンクBK0,BK1についてバンクインターリーブが可能なことを2つの矢印で示している。各矢印の先端は、バンクインターリーブによる処理の進行度合いを示している。各バンクは、複数のメモリチップを含む。各メモリチップ内は、並列にアクセスが可能な複数のプレーンを含み得る。
例えば、論理ページPG-(N+2)は、図3に示すように、2個のバンクBK0,BK1を含む。図3は、論理ページPG-(N+2)の構成を例示する図であり、他の論理ページPG-0~PG-(N+1),PG-(N+3)の構成も論理ページPG-(N+2)の構成と同様である。
複数のバンクBK0,BK1は、バンクインターリーブによる並列動作が可能に構成されている。バンクBK0は、メモリチップCP0,CP2,CP4,CP6,CP8,CP10,CP12,CP14,CP16,CP18,CP20,CP22,CP24,CP26,CP28,CP30(以下、CP0~CP30とする)を含む。バンクBK0内の各メモリチップCP0~CP30へは、複数のチャネルCH0~CH15を介してメモリI/F24から並列にアクセスが可能である。バンクBK1は、メモリチップCP1,CP3,CP5,CP7,CP9,CP11,CP13,CP15,CP17,CP19,CP21,CP23,CP25,CP27,CP29,CP31(以下、CP1~CP31とする)を含む。バンクBK1内の各メモリチップCP1~CP31へは、複数のチャネルCH0~CH15を介してメモリI/F24から並列にアクセスが可能である。各メモリチップCP0~CP31は、各メモリチップCP0~CP31内で並列動作可能である複数のプレーンPlane0,Plane1を含み得る。各メモリチップCP0~CP31は、複数のメモリセルアレイを含み、このうち幾つかのメモリセルアレイが、1又は複数の物理ブロックを構成する。
各メモリチップCP0~CP31のメモリセルアレイにおける各物理ブロックは、例えば、図4に示すように構成される。図4は、物理ブロックの構成を示す図である。
各物理ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(p≧0)。(p+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0~BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、及びフローティングゲート上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルトランジスタMTは、しきい値電圧の違いに応じてデータを記憶する。すなわち、メモリセルトランジスタMTは、フローティングゲートに、データに応じた量の電荷を保持する。
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている(q≧0)。そして、最も選択トランジスタST1側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0~WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
ワード線WL0~WLq(各ワード線を区別しない場合には、WLで示すことにする)は、物理ブロック内の各NANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、物理ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。すなわち、物理ブロックは複数のワード線WLに対応した複数のメモリセルグループMGを含み、各メモリセルグループMGは同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTを含む。各メモリセルトランジスタMTに1ビットの値を保持可能に構成される場合(シングルレベルセル(SLC)モードで動作する場合)には、同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMT(すなわち、メモリグループMG)は1つの物理ページとして取り扱われ、この物理ページごとにデータのプログラム及びデータのリードが行われる。
各メモリセルトランジスタMTに複数ビットの値を保持可能に構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットの値を記憶可能な場合、ワード線WL当たりの記憶容量はn個の物理ページ分のサイズに等しくなる。すなわち、各メモリグループMGは、n個の物理ページとして取り扱われる。例えば、各メモリセルトランジスタMTが2ビットの値の記憶を行うマルチレベルセル(MLC)モードでは、各ワード線WLに2個の物理ページ分のデータが保持される。あるいは、各メモリセルトランジスタMTが3ビットの値の記憶を行うトリプルレベルセル(TLC)モードでは、各ワード線WLに3個の物理ページ分のデータが保持される。
図1に戻って、不揮発性メモリ7内の緊急退避領域30は、電源回路6に対する突然の電源断があった場合に、バックアップ電池40の電力を用いて、揮発性メモリ22(少なくともライトバッファ22a)内のデータが書き込まれるための領域である。緊急退避領域30は、高速な書き込み動作が要求されるため、SLCモードで動作するように構成され得る。ストレージ領域31は、データが記憶されるための領域である。ストレージ領域31は、データの記憶容量を確保することが要求されるため、MLCモード又はTLCモードで動作するように構成され得る。
コントローラ5は、例えば、LSI(Large-Scale Integrated circuit)などの半導体チップ(SoC:System on a Chip)で構成されている。コントローラ5は、ホスト2と不揮発性メモリ7との間のデータ転送などを制御する。
コントローラ5において、FE10のホストI/F11は、書き込み要求および書き込み要求データをホスト2から受信すると、書き込み要求およびデータをBE20に転送する。BE20において、CPU21は、ライトコントローラ21a、ブロック管理部21b、ガベージコレクション(GC)マネージャ21cを有する。
ライトコントローラ21aは、データに対してECC回路23を用いて誤り訂正符号処理を行わせ、データに対応したデータ部分と誤り訂正符号とを含むシンボルを生成して揮発性メモリ22に一時的に記憶させる。
このとき、ECC回路23は、例えば、第1のECC符号(L1の誤り訂正符号処理による符号、又はL1符号)、第2のECC符号(L2の誤り訂正符号処理による符号、又はL2符号)、第3のECC符号(L3の誤り訂正符号処理による符号、又はL3符号)、第4のECC符号(L4の誤り訂正符号処理による符号、又はL4符号)の4段階の誤り訂正符号処理を行うことができる。L1符号、L2符号、L3符号、L4符号の順に、符号化処理の分散度合いが高くなる。L1符号及びL2符号の符号化対象のデータは、1つのメモリチップ内のデータであるのに対して、L3符号及びL4符号の符号化対象のデータは、複数のメモリチップに跨ったデータである。
ライトコントローラ21aは、揮発性メモリ22に一時記憶させたシンボルをメモリI/F24経由で不揮発性メモリ7に書き込む。
揮発性メモリ22は、不揮発性メモリ7よりも高速アクセスが可能な揮発性の半導体メモリであり、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)が用いられる。図1では、揮発性メモリ22がDRAMである場合が例示されている。
揮発性メモリ22は、ライトバッファ22a及びガベージコレクション(GC)バッファ22bを有する。ライトバッファ22aは、ホスト2から書き込み要求があったライトデータが一時記憶される領域である。GCバッファ22bは、メモリシステム1内でGCを実行する際に、GC対象となるデータが一時的に記憶されるバッファである。
GCマネージャ21cは、GCバッファ22bを用いながらGCに伴う各部の動作を制御する。GCは、論理ブロック内の不使用の論理ページを整理する処理である。GCが実行されることによって、離散化した使用中の論理ページが1つの論理ブロックにまとめられてフリーブロックが確保される。
例えばGCマネージャ21cによるGCに伴う制御のもとで、メモリI/F24は、不揮発性メモリ7からシンボル(=データ部分+誤り訂正符号)を読み出し、ECC回路23は、読み出されたシンボルのデータ部分に対して誤り訂正符号を用いた誤り訂正復号処理を行い元のデータを復元する。
このとき、ECC回路23は、例えば、L1の誤り訂正復号処理を行い、L1エラーが発生したらL2の誤り訂正復号処理を行い、L2エラーが発生したらL3の誤り訂正復号処理を行い、L3エラーが発生したらL4の誤り訂正復号処理を行う。このように、ECC回路23は、誤り訂正復号処理に成功するまで、L1→L2→L3→L4の順に、段階的に規模を大きくしながら、誤り訂正復号処理を行うことができる。
ブロック管理部21bは、不揮発性メモリ7内の各論理ブロックを管理する。ブロック管理部21bは、例えば、複数の論理ブロックのうち一部の論理ブロックを緊急退避領域30に割り当て、残りの(大部分の)論理ブロックをストレージ領域31に割り当てる。また、ブロック管理部21bは、データ書込み可能な論理ブロックであるフリーブロックの数や論理ブロック内の有効データ率などを管理している。ブロック管理部21bは、フリーブロックの数が不足するとGCをGCマネージャ21cに実行させることによって、フリーブロックの数を増やす。
メモリI/F24は、不揮発性メモリ7の動作を制御する。メモリI/F24は、ホスト2からの書き込み要求に応じてライトコマンドを発行し、ライトコマンド及びデータを不揮発性メモリ7へ提供(出力)する。不揮発性メモリ7は、ライトコマンドに従ってデータをメモリセルに書き込む。また、メモリI/F24は、ホスト2からの読み出し要求に応じてリードコマンドを発行し、リードコマンドを不揮発性メモリ7へ提供(出力)する。不揮発性メモリ7は、リードコマンドに従ってデータをメモリセルから読み出しメモリI/F24へ供給する。
揮発性メモリ22は、アドレス変換情報22c及びブロック管理情報22dを記憶する。ホストI/F11で受信されるホスト2からの書き込み要求には、書き込み先を指定する論理アドレス(LBA)が含まれている。また、ホストI/F11で受信されるホスト2からの読み出し要求には、読み出し先を指定する論理アドレス(LBA)が含まれている。
例えば、メモリシステム1では、コントローラ5による内部的なデータ管理がクラスタ単位で行われ、ホスト2からのデータの更新がセクタ単位で行われる。図3に示されるような論理ページPGは、複数のクラスタをひとまとめにした単位であるとし、クラスタは、複数のセクタをひとまとめにした単位であるとする。セクタは、ホスト2からのデータの最小アクセス単位である。セクタは、例えば、512Bのサイズを有し、クラスタは、例えば、4KBのサイズを有する。ホスト2は、セクタ単位のLBA(Logical Block Addressing)によってアクセスするデータを指定できる。
図1に戻って、アドレス変換情報22cは、ホスト2から指定された論理アドレスと不揮発性メモリ7内での物理アドレスとの間のアドレス変換を行う際に用いられる情報である。アドレス変換情報22cは、例えば、テーブル形式で(論物変換テーブルとして)構成され得る。アドレス変換情報22cでは、論理アドレスと物理アドレスとが対応付けされている。ライトコントローラ21aは、揮発性メモリ22に一時記憶させたシンボルをメモリI/F24経由で不揮発性メモリ7に書き込む際に、シンボルに対応した論理アドレスを不揮発性メモリ7内の物理アドレスに対応付けてアドレス変換情報22cを更新することができる。
ブロック管理情報22dは、不揮発性メモリ7内の各論理ブロックを管理する際に用いられる情報であり、ブロック管理部21bにより必要に応じて更新され得る。ブロック管理情報22dは、例えば、テーブル形式で(論理ブロック管理テーブルとして)構成され得る。ブロック管理情報22dは、欠陥と看做されたメモリセルを含むメモリチップ(欠陥メモリチップ)を含む論理ブロック(バッドブロック)に関する情報を含むことができる。すなわち、ブロック管理部21bは、ECC回路23から誤り訂正復号処理の結果を受け、誤り訂正復号処理で(L1→L2→L3→L4と誤り訂正の規模を大きくしていっても)エラー訂正できなかったメモリチップを欠陥メモリチップとし、欠陥メモリチップを含む論理ブロックをブロック管理情報22dに登録する。これにより、ブロック管理情報22dが更新され得る。欠陥は、メモリチップ内における物理ブロック、物理ページ毎に管理されてもよい。
電源回路6は、外部電源4から送られてくる電力をコントローラ5および不揮発性メモリ7に供給する。また、電源回路6は、外部電源4から送られてくる電力をバックアップ電池40に供給してバックアップ電池40を充電する。バックアップ電池40は、例えば、電気二重層キャパシタ、電解コンデンサ、セラミックコンデンサ、2次電池などである。
バックアップ電池40は、外部電源4から送られてくる電力を蓄えておく。バックアップ電池40は外部電源4から送られてくる電力が突然停止した際(突然の電源断があった場合)に、貯めておいた電力をコントローラ5および不揮発性メモリ7に供給する。突然の電源断があった場合とは、例えば、外部電源4から電源回路6へ送られてくる電力が、ユーザの意図しないタイミングで遮断される場合などである。
電源回路6は、外部電源4から電源回路6へ送られてくる電力を監視し、その電力が所定の閾値レベル以上であれば、正常に電力が供給されていると判断して、外部電源4からの電力を各部へ供給できる。電源回路6は、外部電源4からの電力が所定の閾値レベル未満になると、電源断が発生したと判断し、バックアップ電池40による駆動に切り替え、バックアップ電池40からの電力を各部へ供給できる。
メモリシステム1は、書き込み要求に応じたデータの保護機能であるパワーロスプロテクション(PLP)機能を有している。PLP機能は、突然の電源断があった場合であっても、ホスト2に書き込み完了レスポンスを行なったデータの永続性を保証する機能である。換言すると、PLP機能は、突然の電源断があった場合であっても、ホスト2から見て一旦書き込んだはずのデータが消失しないよう、データを記憶しておく機能である。
次に、ホスト2のマルチストリーム機能に対応したメモリシステム1の機能(マルチライト処理機能)について説明する。
メモリシステム1では、ホスト2のマルチストリーム機能に対応したライト動作をサポートするために、ストリーム本数分の論理ページを同時に開く必要が生じ得る。例えば、図2に示すように、チャネル数×バンク数=16×2=32によりストリーム本数(32本)分の並列動作(マルチライト動作処理)が可能である。マルチライト動作処理では、複数のチャネルCH0~CH15を介して論理ページPG内の複数の領域に並行して書き込みを行うことを複数の論理ページPG-0~PG-(N+3)に対して順次に(ページ番号順に)行う。
これにより、同時に書き込み途中となり得る論理ページPGの数が多数(例えば、最大で32個)に増加し得る。図2では、書き込み途中の論理ページPGが論理ページPG-N,PG-(N+1),PG-(N+2)の3つである場合が例示されている。書き込み途中の先頭ページ(=「一番書き込みが進んでいる論理ページ」=「書き込み途中の論理ページPGのうちページ番号が最大の論理ページ」)PG-(N+2)では、図3に斜線のハッチングで示すように、例えば、メモリチップCP1,CP7,CP15,CP29,CP31が書き込み途中である。
図3に示すように、論理ページPG-(N+2)では、一点鎖線で囲ったデータ群DG1がL3の誤り訂正符号に対応したデータ群(L3誤り訂正グループとも呼ぶ)である。データ群DG1は、各メモリチップCP0~CP31の各プレーンPlane0,Plane1における先頭のクラスタデータを含む。データ群DG1における各クラスタには、L3番号(データ群DG1に属する各クラスタデータを互いに識別する番号)として0~63がそれぞれ割り振られている。L3の誤り訂正符号処理では、L3番号0~61のクラスタのデータに対する第3のECC符号(L3符号)が生成され得る。L3の誤り訂正符号処理において、揮発性メモリ22には、L3番号0~61のクラスタデータとしてシンボルのデータ部分が記憶され、L3番号62,63のクラスタデータとしてL3符号が記憶される。L3符号は、L3番号0~61のクラスタデータのストレージ領域31への書き込み途中の段階において、書き込み済みデータと現在の書き込み対象のデータと未書き込みのデータ(ダーティデータ)とに対して逐次的に更新されて生成されるが、データ群(L3誤り訂正グループ)DG1内の全クラスタデータの書き込みが終了するまで揮発性メモリ22に保持される。L3符号は、データ群(L3誤り訂正グループ)DG1内の全データのストレージ領域31への書き込み完了後に、ストレージ領域31に書き込まれる。
突発的な電源断が発生した時、書き込み途中の論理ページPGをストレージ領域31に書ききろうとすると、書ききるべき論理ページPGの数が多数に増加し得るので、バックアップ電池40の電力を用いて書き込み途中の論理ページPGを書ききることが困難になり得る。
メモリシステム1に搭載すべきバックアップ電池40の容量(例えば、キャパシタの数)を増やして対応すると、部品コストが増加し得るためにメモリシステム1の製造コストが増大する可能性があるとともに、バックアップ電池(例えば、キャパシタ)40の充電のための起動時間が増加し得るためにメモリシステム1のパフォーマンスが低下する可能性がある。
それに対して、バックアップ電池40の容量増加を抑制するため、突発的な電源断が発生した時に、書き込み途中の論理ページPGをストレージ領域31へ書ききっていない状態で誤り訂正符号を生成して緊急退避領域30に退避させ、電源復帰後に、書き込み済みのデータをストレージ領域31から読み出すとともに誤り訂正符号を緊急退避領域30から読み出し、書き込み途中の論理ページPGにおける不足分をダミーの値(例えば、ビット値“0”)で埋めてシンボルを生成することが考えられる。この場合、動作中に書き込み途中であった論理ページPGのデータの誤り訂正復号処理を行った際にL1/L2エラーが発生するとL3/L4の誤り訂正復号を行うことになるが、L3/L4の誤り訂正復号で用いられるシンボルが誤り訂正符号処理時と異なる。すなわち、誤り訂正符号処理時には、書き込み途中の論理ページPGにおける書き込み済みデータと未書き込みデータとの両方を用いて誤り訂正符号を生成しているのに対し、誤り訂正復号処理時には、書き込み途中の論理ページPGにおける書き込み済みデータとダミーの値とに対して誤り訂正符号を用いた誤り訂正復号処理を行うことになる。これにより、L3/L4の誤り訂正復号処理で適正にデータを復元できない可能性がある。
そこで、本実施形態にかかるメモリシステム1は、電源断時に未書き込みデータとその退避位置に関連した情報とを緊急退避領域30に退避し、電源復帰時にそれらを読み出し、誤り訂正符号生成に用いた論理ページPGのシンボルを未書き込みの部分も含めて再生して誤り訂正復号処理を行う。これにより、本実施形態にかかるメモリシステム1によれば、バックアップ電池40の容量増加の抑制とL3/L4の誤り訂正処理の精度向上との両立を図ることができる。
具体的には、電源断発生時に関して、メモリシステム1は、図5に示すような動作を行う。図5は、メモリシステム1の電源断時の動作を示すフローチャートである。
メモリシステム1は、電源断の発生を検出するまで(S1でNo)通常の動作を行い、電源断の発生を検出すると(S1でYes)、ホスト2からの書き込み要求の受付を停止する(S2)。メモリシステム1は、不揮発性メモリ7のストレージ領域31への書き込みを停止する(S3)。すなわち、メモリシステム1は、メモリI/F24によるストレージ領域31へのライトコマンドを破棄させ、メモリI/F24自体も停止させる。メモリシステム1は、未書き込みデータ(ホストから要求された書き込みデータであって揮発性メモリ22におけるライトバッファ22aに保持されたデータ)と、未書き込みであるログのクラスタデータ及びL3符号のクラスタデータとを緊急退避領域30に退避させ不揮発化する(S4)。ログは、不揮発性メモリ7内の管理情報のあるエントリに変更を加えた際におけるそのエントリの更新情報(差分)であり、例えば、アドレス変換情報22cの更新差分である。
メモリシステム1は、書き込み途中の先頭ページ番号(=「一番書き込みが進んでいる論理ページの番号」)を特定し、先頭ページ情報22fを生成し揮発性メモリ22に保持させる(S5)。図2に示す場合、メモリシステム1は、先頭ページ番号としてPG-(N+2)を特定し、先頭ページ番号PG-(N+2)を示す先頭ページ情報22fを生成する。
メモリシステム1は、メモリI/F24において破棄されたライトコマンドを抽出し、破棄ホストライト情報22eを生成し揮発性メモリ22に保持させる(S6)。このとき、メモリシステム1は、各論理ページPGの各メモリチップについて破棄されたライトコマンドを抽出し、図2の場合、書き込み途中の論理ページPG-N~PG-(N+2)における書き込み途中のメモリチップごとに破棄ホストライト情報22eを生成する。
破棄ホストライト情報22eは、例えば、図6に示すようなデータ構造を有する。図6は、破棄ホストライト情報22eのデータ構造を示す図である。
破棄されたライトコマンドがホスト2からのデータの書き込みを指示するコマンドである場合、図6(a)に示すように、破棄ホストライト情報22eは、データの記憶位置(例えば、論理ブロック番号BL0/論理ページ番号PG-(N+1)/チャネル番号CH3/バンク番号BK1)と情報の種別(Data)と揮発性メモリ22上のアドレス(例えば、VADD-35)とを含む。
破棄されたライトコマンドが空の書き込み又は無効な書き込みを指示するコマンドである場合、図6(b)に示すように、破棄ホストライト情報22eは、データの記憶位置(例えば、論理ブロック番号BL0/論理ページ番号PG-(N+3)/チャネル番号CH0/バンク番号BK0)と情報の種別(Null)とを含む。
例えば、ライトコマンドのコマンドシーケンスがライト命令(Cmd80h-Adr-DataIn-Cmd10h)、アクセス処理(tProg)、ステータスリード命令(Cmd70-StatusOut)を含む場合、ライトコマンドが空の書き込みであるとは、ライト命令におけるデータ指定部分「DataIn」で指定されたデータが空である(指定がない)ことを指す。ライトコマンドが無効な書き込みであるとは、ライト命令におけるアドレス指定部分「Adr」で指定された書き込み先がストレージ領域31における欠陥メモリチップを含む論理ブロック(バッドブロック)でありコマンド実行した際にライトエラーになることを指す。
破棄されたライトコマンドがログの書き込みを指示するコマンドである場合、図6(c)に示すように、破棄ホストライト情報22eは、データの記憶位置(例えば、論理ブロック番号BL0/論理ページ番号PG-(N+3)/チャネル番号CH7/バンク番号BK1)と情報の種別(Log)と揮発性メモリ22上のアドレス(例えば、VADD-46)とを含む。
破棄されたライトコマンドがL3符号の書き込みを指示するコマンドである場合、図6(d)に示すように、破棄ホストライト情報22eは、データの記憶位置(例えば、論理ブロック番号BL0/論理ページ番号PG-(N+2)/チャネル番号CH14/バンク番号BK1)と情報の種別(L3)と揮発性メモリ22上のアドレス(例えば、VADD-62)とを含む。
なお、破棄ホストライト情報22eは、論理ブロック単位でもよいし、全てが一体となったテーブル形式でもよいし、データ種類毎に纏められてもよい。
図5に戻り、メモリシステム1は、ライトバッファ22aに保持された未書き込みデータ(WBダーティ)、S5で生成された先頭ページ情報22f、S6で生成された破棄ホストライト情報22e、及びその他の復元用管理データを緊急退避領域30に退避させ不揮発化する(S7)。WBダーティ(未書き込みデータ)とは、ホスト2からの書き込み要求で指定された書き込み要求データであり、ライトバッファ22aに一時的に記憶されているデータである。
また、電源復帰時に関して、メモリシステム1は、図7に示すような動作を行う。図7は、メモリシステム1の電源復帰時の動作を示すフローチャートである。
メモリシステム1は、電源復帰を検出するまで(S11でNo)待機し、電源復帰を検出すると(S11でYes)、図5のS4,S7で不揮発性メモリ7の緊急退避領域30に退避されたログ、L3符号、WBダーティ(未書き込みデータ)、先頭ページ情報22f、破棄ホストライト情報22eを揮発性メモリ22にロードする(S12)。このとき、ログ、L3符号、WBダーティ(データ)は、破棄ホストライト情報22eで示される揮発性メモリ22上のアドレス位置(図6参照)にロードされる。
メモリシステム1は、ロードされた先頭ページ情報22f及び破棄ホストライト情報22eに基づいて、論理ブロックの書き込み状況を示す書き込み状況情報22gを生成して揮発性メモリ22に記憶する(S13)。破棄ホストライト情報22eは、書き込み途中の論理ページPG-N~PG-(N+2)における書き込み途中のメモリチップごとに生成されている。これにより、メモリシステム1は、書き込み途中の論理ページPGを含む論理ブロックについて書き込み途中の論理ページPGを含む論理ブロックの書き込み状況を示す書き込み状況情報22gを生成できる。
メモリシステム1は、書き込み状況情報22gを、例えば図8に示すようなマップ形式で(書き込み状況マップとして)生成できる。図8は、論理ブロックBL0の書き込み状況情報(書き込み状況マップ)22gを示す図である。
図8では、論理ブロックBL0を構成する複数のメモリチップのインデックスとして、スロットという用語を用いる。スロットは、この実施形態では、チャネル番号とバンク番号との組み合わせに対応する。すなわち、スロットSL0は、チャネルCH0及びバンクBK0に対応し、スロットSL1は、チャネルCH1及びバンクBK0に対応し、…、スロットSL31は、チャネルCH15及びバンクBK1に対応する。同一チャネルのバンク0,1は同一のメモリチップであってもよい。
書き込み状況情報22gでは、各論理ページPGの各メモリチップについて、「書き込み済み」か「破棄」のいずれかが区別可能に示されている。「破棄」が示された箇所には、図6(a)~図6(d)に示すような破棄ホストライト情報22eが関連付けられ得る。例えば、書き込み状況情報22gは、「破棄」が示された箇所を指定すると、その対応する破棄ホストライト情報22eが参照可能に構成される。
図8に示した書き込み状況情報22gを参照すると、論理ページPG-0~PG-(N-1)のそれぞれでは、全スロットSL0~SL31でストレージ領域31への書き込みが完了しているが、論理ページPG-N~PG-(N+2)が書き込み途中であることが分かる。論理ページPG-N~PG-(N+2)のそれぞれには、ライトコマンドが破棄されたスロットが存在する。論理ページPG-Nでは、スロットSL16,SL30,SL31に対応するメモリチップでライトコマンドが破棄されている。論理ページPG-(N+1)では、スロットSL16,SL19,SL30,SL31に対応するメモリチップでライトコマンドが破棄されている。論理ページPG-(N+2)では、スロットSL16,SL19,SL23,SL30,SL31に対応するメモリチップでライトコマンドが破棄されている。
図8に示した書き込み状況情報22gを参照すると、斜線のハッチングで示された領域は、未使用(未書き込み)のメモリチップであり、不揮発性メモリ7がNAND型フラッシュメモリである場合、上書きできない可能性がある。論理ページにおける各メモリチップのデータをストレージ領域31における連続したアドレス領域に記憶させるために、データの引っ越し処理(書き込み途中の論理ページのデータを新たな論理ブロック(フリーブロック)に書き込む処理)が利用可能である。図8では、論理ページPG-(N+3)は、全スロットSL0~SL31に対するライトコマンドに応じた不揮発性メモリ7への書き込み動作が破棄されており、実質的に書き込みが行われていない論理ページであると言える。このため、書き込み状況情報22gを参照することで、論理ページPG-N~PG-(N+2)が引っ越し対象ページ範囲(データの引っ越し処理が必要な範囲)であると把握できる。
図7に戻って、メモリシステム1は、書き込み途中の論理ページPG-N~PG-(N+2)の書き込み済みデータをストレージ領域31から読み出して揮発性メモリ22に保持させる(S14)。
メモリシステム1は、揮発性メモリ22に保持させたデータに対してL1/L2の誤り訂正復号処理を行い、L1/L2エラーが発生しなければ(S15でNo)、誤り訂正復号処理で復元されたデータを不揮発性メモリ7に記憶する(S20)。
一方、メモリシステム1は、揮発性メモリ22に保持させたデータに対してL1/L2の誤り訂正復号処理を行い、L1/L2エラーが発生したら(S15でYes)、破棄ホストライト情報22eに基づいてシンボルリード情報22hを生成して揮発性メモリ22に記憶する(S16)。
例えば、図8に示す書き込み状況情報22gにおいて「破棄」が示された箇所を指定すると、その対応する破棄ホストライト情報22eが参照され、データタイプが「Data」、「Log」又は「L3」である場合、揮発性メモリ22上の参照位置(アドレス)が取得され得る(図6(a)、図6(c)、図6(d)参照)。
これにより、メモリシステム1は、図3に示す論理ページPG-(N+2)について、図10に示すようなシンボルリード情報22hを生成できる。シンボルリード情報22hは、例えば図10に示すようなテーブル形式で(シンボルリードテーブルとして)生成することができる。図10は、シンボルリード情報(シンボルリードテーブル)22hを示す図である。シンボルリード情報22hでは、L3番号22h1と位置情報22h2とが複数のL3番号について対応付けられている。例えば、L3番号「0」は「書き込み済み」である(図8参照)ので、ストレージ領域31上の参照位置(物理アドレスNVADD-0)が記録されている。L3番号「35」はライトコマンドが「破棄」されたログクラスタ(図8参照)であるので、揮発性メモリ22上の参照位置(アドレスVADD-35)が記録されている(図6(c)参照)。L3番号「39」は空の情報(Null)が「書き込み済み」であるクラスタであるので、無効であることを示す値(ALL FF:全ビットが1であるビットパターン)が記録されている(図6(b)参照)。L3番号「62」はライトコマンドが「破棄」されたL3クラスタ(図8参照)であるので、揮発性メモリ22上の参照位置(アドレスVADD-62)が記録されている(図6(d)参照)。同様に、L3番号「63」はライトコマンドが「破棄」されたL3クラスタ(図8参照)であるので、揮発性メモリ22上の参照位置(アドレスVADD-63)が記録されている。すなわち、シンボルリード情報22hを参照することで、誤り訂正符号に対応したデータ群(L3誤り訂正グループ)における各クラスタの参照位置を特定できる。
図7に戻って、メモリシステム1は、L3の誤り訂正符号とS16で生成したシンボルリード情報22hとに基づいて誤り訂正復号処理を行う。すなわち、メモリシステム1は、書き込み済みデータをシンボルリード情報22hに示されたストレージ領域31上の参照位置(アドレス)から読み出し、未書き込みデータをシンボルリード情報22hに示された揮発性メモリ22上の参照位置(アドレス)から読み出し(S17)、GCバッファ22b上でL3訂正用のデータ群(L3誤り訂正グループ)のシンボルとして再構成する。メモリシステム1は、再構成されたシンボルにおけるデータ部分(図10の場合、L3番号「0」~「61」の部分)に対してL3符号(図10の場合、L3番号「62」「63」の部分)を用いた誤り訂正復号処理を行う(S18)。
メモリシステム1は、L3エラーが発生しなければ(S19でNo)、誤り訂正復号処理で復元されたデータを不揮発性メモリ7に記憶する(S20)。
一方、L3エラーが発生すると(S19でYes)、メモリシステム1は、L3エラーが発生した旨をホスト2に通知して処理を終了する。
以上のように、実施形態にかかるメモリシステム1は、電源断時に未書き込みデータとその退避位置に関連した破棄ホストライト情報22eとを緊急退避領域30に退避し、電源復帰時にそれらを読み出し、誤り訂正符号生成に用いた論理ページPGのシンボルをストレージ領域31へ未書き込みの部分も含めて再生して複数メモリチップ間に跨った誤り訂正復号処理(例えば、L3の誤り訂正復号処理)を行う。これにより、電源断時において、複数メモリチップ間に跨った誤り訂正に必要な情報をバックアップ電池40で供給可能な電力の範囲内で緊急退避領域30に退避できるとともに、電源復帰後において、複数メモリチップ間に跨った誤り訂正復号処理で用いるシンボルを電源断直前の複数メモリチップ間に跨った誤り訂正符号処理時に用いられたシンボルと略一致させることができる。この結果、バックアップ電池40の容量増加を抑制しながら複数メモリチップ間に跨った誤り訂正処理の精度を向上できデータを適正に復元できる。したがって、メモリシステム1の製造コストの増加を抑制できるとともに、メモリシステム1のデータの信頼性を向上できる。
なお、本実施形態の考え方は、メモリシステム1がホスト2のマルチストリーム機能をサポートする機能(マルチライト処理機能)を有する場合に限定されず、メモリシステム1がマルチライト処理機能を有しない又は使用しない場合であっても電源断時に書き込み途中の論理ページPGを書ききらないでパワーロスプロテクション(PLP)を行う動作に適用可能である。
あるいは、シンボルリード情報22hを用いてL3の誤り訂正復号処理を行うこと(図7のS15~S18)は、電源投入時だけでなく通常時(例えば、ホスト2からのリード要求に応じたリード動作時など)に行われてもよい。
あるいは、実施形態では、書き込み途中の論理ページPGが、欠陥メモリチップを含まない場合について例示しているが、L3符号のクラスタデータ、ログのクラスタデータ(ページ内に必要な、訂正情報と管理情報)に割り当てられた物理アドレス位置が欠陥メモリチップに対応する場合、欠陥つぶし処理を行ってもよい。欠陥つぶし処理とは、欠陥メモリチップに対応する位置としてブロック管理部21bにより登録された記憶位置がライトコントローラ21aによりアクセスされないようにする(使用不可にする)処理である。欠損メモリチップは、先天的に存在するが未使用であるために顕在化していない場合と後天的に劣化により発生する場合とがある。いずれの場合でも、欠陥つぶし処理では、L3符号に対応したデータ群(L3誤り訂正グループ)内のL3のクラスタデータやログのクラスタデータを書き込み予定の記憶位置に欠陥があることが判明したことに応じて、コントローラ5(CPU21)が、この記憶位置に代えて、L3誤り訂正グループであるデータ群内(例えば、図3に示すデータ群DG1内における)他のクラスタデータの記憶位置(例えば、同じ訂正グループ内の1つ前のクラスタ)に割り当てることができる。ライトコントーラ21aは、この割り当てに従ってライトコマンドを発行するようにメモリI/F24を制御できる。なお、コントローラ5(CPU21)は、この処理で割り当て先に割り当てられていたクラスタデータの記憶位置を新たに別の論理ページに含めるように記憶位置の変更を行うことができる。
例えば、メモリシステム1は、図11に示すようなブロック管理情報22dを参照し、論理ブロックBL0の論理ページPG-(N+2)におけるスロットSL29,SL31に欠陥メモリチップが含まれることを把握したとする。図11は、ブロック管理情報(論理ブロック管理テーブル)22dを示す図である。このとき、メモリシステム1は、図12に示すように、論理ページPG-(N+2)において、メモリチップCP29のPlane1の先頭クラスタ(あるL3誤り訂正グループ内のL3番号「62」のクラスタ)とメモリチップCP31のPlane1の先頭クラスタ(同グループ内のL3番号「63」のクラスタ)とが使用不可であると把握する。図12は、欠陥つぶし処理を示す図である。メモリシステム1は、L3番号「62」、「63」のクラスタに書き込み予定だったL3符号の書き込み先をL3番号「60」、「61」のクラスタに変更するとともにL3番号「62」、「63」のクラスタを不使用とすることをブロック管理情報22dに登録する。このとき、L3番号「60」、「61」のクラスタに書き込み予定だったクラスタデータは追い出して別の論理ページPGのクラスタデータとして割り当てることができる。
この場合、メモリシステム1は、図7に示すS16において、書き込み状況情報22gに加えてブロック管理情報22dを参照し、図13に示すようなシンボルリード情報22hを作成できる。例えば、図10に示すシンボルリード情報22hと比較すると、L3のクラスタデータに対する揮発性メモリ22上の参照位置(アドレスVADD-62、アドレスVADD-63)に対応するL3番号が「62」、「63」から「60」、「61」に変更されている。また、L3番号「62」、「63」は無効な欠陥メモリチップの記憶位置(Null)として、無効であることを示す値(ALL FF:全ビットが1であるビットパターン)が記録されている(図6(b)参照)。これにより、メモリシステム1は、図7に示すS17において、欠陥メモリチップに含まれる記憶位置を避けながらL3符号に対応したデータ群におけるデータ部分に対して適正に誤り訂正復号処理を行うことができる。なお、図13の場合、L3訂正グループ内のクラスタ数は減るが、コントローラ5(CPU21)は、例えば、L3番号「60」、「61」のクラスタに書き込み予定だったクラスタデータを追い出して別の論理ページPGのクラスタデータとして割り当てることができる。
あるいは、ライトバッファ22aは、穴埋めリード処理を考慮して構成されていてもよい。例えば、不揮発性メモリ7でのデータの管理単位であるクラスタは、ホスト2からの書き込み要求で指定されるデータの管理単位であるセクタより大きい。このため、不揮発性メモリ7にデータを書き込む際に、書き込み要求に応じた書き込み対象のセクタデータと同一クラスタアドレスのセクタデータ(他のセクタデータ)が不揮発性メモリ7中に存在する場合、メモリシステム1は、書き込み対象のセクタデータにマージしたクラスタ単位のデータ(クラスタデータ)を生成するために、他のセクタデータを不揮発性メモリ7から読み出す穴埋めリード処理を行う。この穴埋めリード処理の途中で又は実行前に突然の電源断が発生すると、メモリシステム1は、他のセクタデータに関する穴埋めリード処理を完了できず、他のセクタデータの替わりに揮発性メモリ(DRAM)22上に存在する未保証データ(例えば、“0”と“1”とが混在したデータ)がマージされたクラスタデータを用いてL3の誤り訂正符号処理を行ってL3符号を生成する。そしてメモリシステム1は、書き込み対象のセクタデータと未保証データを含むクラスタデータと、このクラスタデータに基づいて生成されたL3符号とを、不揮発性メモリ7(緊急退避領域30)に退避する。そして、電源が復帰すると、退避したクラスタデータ(書き込み対象のセクタデータ+未保証データ)とL3の訂正符号とが緊急退避領域30から揮発性メモリ22(ライトバッファ22a)に復元され、復元されたクラスタデータに対する穴埋めリード処理が実施される。これにより未保証データが値の保証されたデータ(正しい他のセクタデータ)に置換される。穴埋めされたクラスタデータがL1の誤り訂正復号処理で訂正できなかった場合、復元されたL3の訂正符号を使って誤り訂正復号処理が行われるが、符号化時と復号化時とでクラスタデータの内容が異なるので訂正に失敗する(訂正できない)。そのため、L3の誤り訂正復号処理時もL3の訂正符号が生成されたときの未保証データが必要になる。しかし、復元されたクラスタデータの穴埋めリード処理を行うと、クラスタデータのうち書き込み対象のセクタデータ以外のセクタデータを正しい他のセクタデータで埋めてL3の誤り訂正復号処理を行ってしまう。すなわち、穴埋めリードにより未保証データが値の補償されたデータで上書きされて消えてしまう。
そのため、メモリシステム1は、L3の誤り訂正復号処理に必要な未保証データが上書きされずにL3の誤り訂正復号処理時までに揮発性メモリ22上に確実に残存するように、ライトバッファ22a内に、テンポラリバッファ領域22a1及びメインバッファ領域22a2を有する。テンポラリバッファ領域22a1は、メインバッファ領域22a2に記憶すべきデータが一時的に保持される領域であり、例えば、L3の誤り訂正復号処理における演算に必要なデータが保持される。メインバッファ領域22a2は、不揮発性メモリ7に記憶すべきデータが一時的に保持される領域であり、例えば、L3の誤り訂正復号処理が行われたデータの一部が保持される。
例えば、メモリシステム1は、図7のS12において、図14に実線の矢印で示すように、所定の論理ページPGにおける未書き込みデータ(WBダーティ)を緊急退避領域30からテンポラリバッファ領域22a1へ読み出す。メモリシステム1は、図7のS14において、図14に実線の矢印で示すように、所定の論理ページPGにおける書き込み済みデータをストレージ領域31からテンポラリバッファ領域22a1へ読み出す。これにより、書き込み済みデータと未書き込みデータ(WBダーティ)とを含む所定の論理ページPGのデータがテンポラリバッファ領域22a1上で再構成されL3の誤り訂正復号処理が適正に行われ得る。
メモリシステム1は、図7のS16~S18を行いL3エラーが発生しなかった場合(S19でNo)、図14に破線の矢印で示すように、所定の論理ページPGにおける少なくとも有効部分(図14に斜線で示す部分)のデータを選択的にテンポラリバッファ領域22a1からメインバッファ領域22a2へ転送(コピー又は移動)する。
メインバッファ領域22a2へ転送された各クラスタデータのサイズは、不揮発性メモリ7への書き込み単位のデータサイズ(例えば、4KB)に比べて小さいことがある。そのため、メモリシステム1は、図7のS20において、穴埋めリード処理を行う。例えば、メモリシステム1は、図14に一点鎖線の矢印で示すように、不足分に相当するサイズの他のデータ(同一クラスタアドレスの他のセクタデータ)をストレージ領域31からメインバッファ領域22a2へ読み出して、テンポラリバッファ領域22a1から転送されたデータに充当する。これにより、不揮発性メモリ7への書き込み単位のデータサイズの各クラスタデータが構成され得るので、メモリシステム1は、図14に二点鎖線の矢印で示すように、穴埋めリード処理で構成された例えば1論理ページ分のデータをストレージ領域31における他の論理ブロックにおける1つの論理ページに相当する領域に記憶する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、5 コントローラ、7 不揮発性メモリ。

Claims (20)

  1. 複数のチップを含む第1のメモリ領域と第2のメモリ領域とを有する不揮発性メモリと、
    前記第1のメモリ領域の前記複数のチップに跨って書き込まれるべきライトデータのうち第1データを前記第1のメモリ領域の一部に書き込み前記ライトデータのうち第2データを前記第1のメモリ領域に書き込む前に電源断が検出されたことに応じて、前記第2データが記憶されていた記憶位置に関する第1の情報と前記第2データとを前記第2のメモリ領域へ書き込み、電源復帰が検出されたことに応じて、前記第1のメモリ領域の一部から前記第1データを読み出し、前記第2のメモリ領域から前記第1の情報を読み出し、前記読み出した第1の情報に基づいて前記第2データへアクセスするための参照位置に関する第2の情報を生成し、前記第2のメモリ領域から前記第2データを読み出して前記読み出した第2データを前記生成した第2の情報に基づいて記憶し、前記読み出した第1データと前記記憶した第2データとを前記第1のメモリ領域の他の一部に書き込むコントローラと、
    を備えたメモリシステム。
  2. 前記コントローラは、前記電源断が検出されたことに応じて、前記ライトデータに基づいて生成される誤り訂正符号を前記第2のメモリ領域へ書き込み、前記電源復帰が検出されたことに応じて、前記誤り訂正符号を前記第2のメモリ領域から読み出し、前記読み出した第1データ又は前記記憶した第2データの一部の誤りが訂正できない場合、前記読み出した誤り訂正符号に基づいて誤り訂正復号処理を行う
    請求項1に記載のメモリシステム。
  3. 前記第1の情報は、前記誤り訂正符号に対応したデータ群における前記第2データの前記第1のメモリ領域におけるデータ位置と前記第2データが記憶されるべき位置に関連したアドレスとを含む
    請求項2に記載のメモリシステム。
  4. ライトバッファを有する揮発性メモリをさらに備え、
    前記第2データが記憶されるべき位置に関連したアドレスは、前記第のメモリ領域における前記データ位置に対応した前記ライトバッファ内のアドレスを含む
    請求項3に記載のメモリシステム。
  5. 前記第2の情報は、前記誤り訂正符号に対応した識別情報とアドレス情報とが前記データ群に含まれる複数のデータについて対応付けられており、
    前記第1データの前記アドレス情報は、前記第1のメモリ領域内のアドレスを含み、
    前記第2データの前記アドレス情報は、前記ライトバッファ内のアドレスを含む
    請求項4に記載のメモリシステム。
  6. 前記ライトバッファは、第1のバッファ領域と前記第1のバッファ領域に記憶されるべき情報を一時的に保持する第2のバッファ領域とを含み、
    前記第2データに対する前記アドレス情報は、前記第2のバッファ領域内のアドレスを含み、
    前記コントローラは、前記第2の情報に基づいて、前記第1データ及び前記第2データを前記第2のバッファ領域に読み出して誤り訂正復号処理を行い、誤り訂正復号処理後のデータを前記第1のバッファ領域に記憶し他のデータを充当してデータサイズを調整し、調整後のデータを他の第1のメモリ領域に書き込む
    請求項5に記載のメモリシステム。
  7. 前記不揮発性メモリは、複数の前記第1のメモリ領域を有し、
    前記コントローラは、複数のチャネルを介して前記第1のメモリ領域内の複数の領域に並行して書き込みを行うことを前記複数の第1のメモリ領域に対して順次に行うマルチライト処理を行う場合、前記第1の情報に応じて前記第1のメモリ領域における書き込み状況を示す第3の情報を生成し、前記第1の情報と前記第3の情報とに応じて前記第2の情報を生成する
    請求項1から6のいずれか1項に記載のメモリシステム。
  8. 前記第3の情報は、前記第1のメモリ領域におけるデータ位置とデータの書き込み状況とが複数のデータ位置について対応付けられている
    請求項7に記載のメモリシステム。
  9. 前記書き込み状況は、前記第1のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
    請求項8に記載のメモリシステム。
  10. 前記書き込み状況は、チャネルを識別する情報と前記第1のメモリ領域を他の第1のメモリ領域から識別する情報と前記第1のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
    請求項9に記載のメモリシステム。
  11. 複数のチップを含む第1のメモリ領域と第2のメモリ領域とを有する不揮発性メモリを有するメモリシステムの制御方法であって、
    前記第1のメモリ領域の前記複数のチップに跨って書き込まれるべきライトデータのうち第1データを前記第1のメモリ領域の一部に書き込み前記ライトデータのうち第2データを前記第1のメモリ領域に書き込む前に電源断が検出されたことに応じて、前記第2データが記憶されていた記憶位置に関する第1の情報と前記第2データとを前記第2のメモリ領域へ書き込むことと、
    電源復帰が検出されたことに応じて、前記第1のメモリ領域の一部から前記第1データを読み出し、前記第2のメモリ領域から前記第1の情報を読み出すことと、
    前記読み出した第1の情報に基づいて前記第2データへアクセスするための参照位置に関する第2の情報を生成することと、
    前記第2のメモリ領域から前記第2データを読み出して前記読み出した第2データを前記生成した第2の情報に基づいて記憶することと、
    前記読み出した第1データと前記記憶した第2データとを前記第1のメモリ領域の他の一部に書き込むことと、
    を備えた制御方法。
  12. 前記電源断が検出されたことに応じて、前記ライトデータに基づいて生成される誤り訂正符号を前記第2のメモリ領域へ書き込むことと、
    前記電源復帰が検出されたことに応じて、前記誤り訂正符号を前記第2のメモリ領域から読み出すことと、
    前記読み出した第1データ又は前記記憶した第2データの一部の誤りが訂正できない場合、前記読み出した誤り訂正符号に基づいて誤り訂正復号処理を行うことと、
    をさらに備えた
    請求項11に記載の制御方法。
  13. 前記第1の情報は、前記誤り訂正符号に対応したデータ群における前記第2データの前記第1のメモリ領域におけるデータ位置と前記第2データが記憶されるべき位置に関連したアドレスとを含む
    請求項12に記載の制御方法。
  14. 前記メモリシステムは、ライトバッファを有する揮発性メモリをさらに有し、
    前記第2データが記憶されるべき位置に関連したアドレスは、前記第のメモリ領域におけるデータ位置に対応した前記ライトバッファ内のアドレスを含む
    請求項13に記載の制御方法。
  15. 前記第2の情報は、前記誤り訂正符号に対応した識別情報とアドレス情報とが前記データ群に含まれる複数のデータについて対応付けられており、
    前記第1データの前記アドレス情報は、前記第1のメモリ領域内のアドレスを含み、
    前記第2データの前記アドレス情報は、前記ライトバッファ内のアドレスを含む
    請求項14に記載の制御方法。
  16. 前記ライトバッファは、第1のバッファ領域と前記第1のバッファ領域に記憶されるべき情報を一時的に保持する第2のバッファ領域とを含み、
    前記第2データに対する前記アドレス情報は、前記第2のバッファ領域内のアドレスを含み、
    前記誤り訂正復号処理を行うことは、
    前記第2の情報に基づいて、前記第1データ及び前記第2データを前記第2のバッファ領域に読み出して誤り訂正復号処理を行うことを含み、
    前記制御方法は、
    誤り訂正復号処理後のデータを前記第1のバッファ領域に記憶し他のデータを充当してデータサイズを調整し、調整後のデータを他の第1のメモリ領域に書き込むことをさらに備えた
    請求項15に記載の制御方法。
  17. 前記不揮発性メモリは、複数の前記第1のメモリ領域を有し、
    前記第2の情報を生成することは、
    複数のチャネルを介して前記第1のメモリ領域内の複数の領域に並行して書き込みが行われることが前記複数の第1のメモリ領域に対して順次に行われるマルチライト処理が行われる場合、前記第1の情報に応じて前記第1のメモリ領域における書き込み状況を示す第3の情報を生成することと、
    前記第1の情報と前記第3の情報とに応じて前記第2の情報を生成することと、
    を含む
    請求項11から16のいずれか1項に記載の制御方法。
  18. 前記第3の情報は、前記第1のメモリ領域におけるデータ位置とデータの書き込み状況とが複数のデータ位置について対応付けられている
    請求項17に記載の制御方法。
  19. 前記書き込み状況は、前記第1のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
    請求項18に記載の制御方法。
  20. 前記書き込み状況は、チャネルを識別する情報と前記第1のメモリ領域を他の第1のメモリ領域から識別する情報と前記第1のメモリ領域内のデータを書き込むべき位置を示す情報とデータの書き込みの有無を示す情報とが対応付けられている
    請求項19に記載の制御方法。
JP2017246674A 2017-12-22 2017-12-22 メモリシステム及び制御方法 Active JP7023103B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017246674A JP7023103B2 (ja) 2017-12-22 2017-12-22 メモリシステム及び制御方法
US16/124,981 US10783034B2 (en) 2017-12-22 2018-09-07 Memory system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017246674A JP7023103B2 (ja) 2017-12-22 2017-12-22 メモリシステム及び制御方法

Publications (2)

Publication Number Publication Date
JP2019114031A JP2019114031A (ja) 2019-07-11
JP7023103B2 true JP7023103B2 (ja) 2022-02-21

Family

ID=66951181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017246674A Active JP7023103B2 (ja) 2017-12-22 2017-12-22 メモリシステム及び制御方法

Country Status (2)

Country Link
US (1) US10783034B2 (ja)
JP (1) JP7023103B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220053374A (ko) * 2020-10-22 2022-04-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20220104486A (ko) * 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 메모리 시스템, 그것의 동작 방법 및 컴퓨팅 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012123499A (ja) 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
JP2012128906A (ja) 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
US20170070241A1 (en) 2015-09-08 2017-03-09 Kabushiki Kaisha Toshiba Memory system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007058617A1 (en) 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
JP2008204581A (ja) * 2007-02-22 2008-09-04 Elpida Memory Inc 不揮発性ram
EP2476039B1 (en) * 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
JP2012137994A (ja) 2010-12-27 2012-07-19 Toshiba Corp メモリシステムおよびその制御方法
JP2013061799A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 記憶装置、記憶装置の制御方法およびコントローラ
US20140082406A1 (en) * 2012-09-18 2014-03-20 Sandisk Technologies Inc. Data protection through power loss prediction
US20150074451A1 (en) 2013-09-11 2015-03-12 Kabushiki Kaisha Toshiba Memory system
TWI502345B (zh) * 2014-05-12 2015-10-01 Via Tech Inc 快閃記憶體控制晶片以及資料儲存裝置以及快閃記憶體控制方法
US9811275B2 (en) * 2015-02-27 2017-11-07 Toshiba Memory Corporation Memory system and data control method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012123499A (ja) 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
JP2012128906A (ja) 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
US20170070241A1 (en) 2015-09-08 2017-03-09 Kabushiki Kaisha Toshiba Memory system

Also Published As

Publication number Publication date
JP2019114031A (ja) 2019-07-11
US10783034B2 (en) 2020-09-22
US20190196905A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
CN111133420B (zh) 来自外部阵列副本的raid阵列重建辅助
KR101363766B1 (ko) 논리 유닛 동작
US9671962B2 (en) Storage control system with data management mechanism of parity and method of operation thereof
US10762967B2 (en) Recovering from failure in programming a nonvolatile memory
US11037627B2 (en) Cell block allocation for hybrid dual write
US10740228B2 (en) Locality grouping during garbage collection of a storage device
KR20130041341A (ko) 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
US11676679B2 (en) Two-layer code with low parity cost for memory sub-systems
US8214698B2 (en) Solid state storage system with improved data merging efficiency and control method thereof
US11630725B2 (en) Management of parity data in a memory sub-system
US11782841B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US11436153B2 (en) Moving change log tables to align to zones
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
JP7023103B2 (ja) メモリシステム及び制御方法
US11605439B2 (en) Remapping bad blocks in a memory sub-system
JP2012521032A (ja) Ssdコントローラおよびssdコントローラの動作方法
JP2022096478A (ja) メモリシステム及び制御方法
CN114730247A (zh) 具有数据的最小写入大小的存储设备
US11640336B2 (en) Fast cache with intelligent copyback
US11698856B2 (en) Maintaining sequentiality for media management of a memory sub-system
US11714577B2 (en) Snap read optimization for media management for a memory sub-system
US20230282294A1 (en) Storage System and Method for Improving Read Latency During Mixed Read/Write Operations
US20230186995A1 (en) Performing data integrity checks to identify defective wordlines
CN115437558A (zh) 存储器系统中的对角页映射

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220208

R151 Written notification of patent or utility model registration

Ref document number: 7023103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151