JP2022081409A - コントローラ及びその動作方法 - Google Patents

コントローラ及びその動作方法 Download PDF

Info

Publication number
JP2022081409A
JP2022081409A JP2021170309A JP2021170309A JP2022081409A JP 2022081409 A JP2022081409 A JP 2022081409A JP 2021170309 A JP2021170309 A JP 2021170309A JP 2021170309 A JP2021170309 A JP 2021170309A JP 2022081409 A JP2022081409 A JP 2022081409A
Authority
JP
Japan
Prior art keywords
data
stripe
unit data
recovery
error correction
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
JP2021170309A
Other languages
English (en)
Inventor
ス ジン パク
Su Jin Park
ウォン ヒョン イ
Won Hyoung Lee
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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of JP2022081409A publication Critical patent/JP2022081409A/ja
Pending legal-status Critical Current

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
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】本発明は電子装置に関する。【解決手段】メモリシステムは、複数の単位データ及びパリティデータを含む原本データストライプが保存された複数のメモリブロックを含む少なくとも1つの半導体メモリ装置と、上記半導体メモリ装置の動作を制御するコントローラと、を含む。上記コントローラは、上記半導体メモリ装置から受信する上記単位データに対するエラー訂正動作を行い、上記複数の単位データのうち第1単位データに対する第1エラー訂正失敗及び上記第2単位データに対する第2エラー訂正失敗に応答して、上記複数の単位データのうち上記第1及び第2単位データを除いた残りのデータに基づいて復旧用データを生成する。【選択図】図1

Description

本発明は電子装置に関し、より詳細にはコントローラ及びその動作方法に関するものである。
半導体メモリ装置は、ストリングが半導体基板に水平に配列された2次元構造で形成されるか、ストリングが半導体基板に垂直に積層された3次元構造で形成されることができる。3次元半導体メモリ装置は2次元メモリ装置の集積度の限界を解消するために考案された半導体メモリ装置であって、半導体基板上に垂直方向に積層された複数のメモリセルを含んでもよい。
コントローラは半導体メモリ装置の動作を制御することができる。
本発明の実施例はデータ復旧の効率を向上させることができるコントローラ及びその動作方法を提供する。
本発明の一実施例に係るメモリシステムは、複数の単位データ及びパリティデータを含む原本データストライプが保存された複数のメモリブロックを含む少なくとも1つの半導体メモリ装置と、上記半導体メモリ装置の動作を制御するコントローラと、を含む。上記コントローラは、上記半導体メモリ装置から受信する上記単位データに対するエラー訂正動作を行い、上記複数の単位データのうち第1単位データに対する第1エラー訂正失敗及び上記第2単位データに対する第2エラー訂正失敗に応答して、上記複数の単位データのうち上記第1及び第2単位データを除いた残りのデータに基づいて復旧用データを生成する。
一実施例において、上記パリティデータは上記複数の単位データを排他的論理和(exclusive OR;XOR)演算して生成されたデータであってもよい。上記コントローラは、上記原本データストライプに含まれた複数の単位データのうち上記第1及び第2単位データを除いた残りのデータ及び上記パリティデータをXOR演算して上記復旧用データを生成することができる。
一実施例において、上記コントローラは、上記原本データストライプに含まれた上記第1及び第2単位データの何れか1つを上記復旧用データに置き換え、上記第1及び第2単位データのうち残り1つをゼロデータに置き換えて復旧用ストライプを生成することができる。上記ゼロデータは0のビットだけを含むデータであってもよい。
一実施例において、上記コントローラは上記復旧用ストライプを保存するように上記半導体メモリ装置を制御することができる。
一実施例において、上記コントローラは、上記復旧用データを第1位置にプログラムし、上記ゼロデータを第2位置にプログラムするように上記半導体メモリ装置を制御し、上記第1及び第2単位データにマッピングされた物理位置の何れか1つを上記第1位置に再マッピングし、上記物理位置の残り1つを上記第2位置に再マッピングすることができる。上記第1位置及び上記第2位置は上記原本データストライプが保存された上記複数のメモリブロックとは異なるメモリブロックに含まれることができる。
一実施例において、上記コントローラは、上記復旧用ストライプに含まれた第3単位データに対する第3エラー訂正失敗に応答して、上記復旧用ストライプに基づいて上記第3単位データを復旧することができる。
一実施例において、上記コントローラは、上記復旧用ストライプに含まれた複数の単位データのうち上記第3単位データを除いた残りの単位データ及び上記パリティデータをXOR演算して上記第3単位データを復旧することができる。
一実施例において、上記コントローラは、上記第1エラー訂正失敗に応答して、上記原本データストライプ及び上記第1単位データに関する情報をエラー訂正失敗参照テーブルに登録し、上記第2エラー訂正失敗に応答して、上記第2単位データに関する情報を上記エラー訂正失敗参照テーブルに追加することができる。
本発明の他の実施例に係り、複数の単位データ及びパリティデータを含む原本データストライプが保存された複数のメモリブロックを含む少なくとも1つの半導体メモリ装置を制御するコントローラの動作方法が開示される。上記コントローラの動作方法は、上記原本データストライプ内の第1及び第2単位データのエラー訂正失敗を検出する段階と、上記原本データストライプ内の複数の単位データのうち上記第1及び第2単位データを除いた残りの単位データ及び上記パリティデータに基づいて復旧用データを生成する段階と、を含む。
一実施例において、上記原本データストライプ内の第1及び第2単位データのエラー訂正失敗を検出する段階は、上記原本データストライプ内の上記第1データに対する第1エラー訂正失敗を検出する段階と、上記原本データストライプの第1エラー訂正失敗情報をエラー訂正参照テーブルにアップデートする段階と、上記原本データストライプ内の上記第2データに対する第2エラー訂正失敗を検出する段階と、上記原本データストライプの第2エラー訂正失敗情報を上記エラー訂正参照テーブルにアップデートする段階と、を含むことができる。
一実施例において、上記原本データストライプ内の複数の単位データのうち上記第1及び第2単位データを除いた残りの単位データ及び上記パリティデータに基づいて復旧用データを生成する段階は、上記残りの単位データ及び上記パリティデータを排他的論理和演算して上記復旧用データを生成する段階を含むことができる。
一実施例において、上記コントローラの動作方法は、上記第1及び第2単位データを上記復旧用データ及びゼロデータに置き換えて復旧用ストライプを生成する段階をさらに含むことができる。上記ゼロデータは0のビットだけを含むデータであってもよい。
一実施例において、上記復旧用ストライプを生成する段階は、上記復旧用データを上記少なくとも1つの半導体メモリ装置内の第1位置にプログラムし、上記ゼロデータを上記少なくとも1つの半導体メモリ装置内の第2位置にプログラムするように上記半導体メモリ装置を制御する段階と、上記第1及び第2単位データにマッピングされた物理位置の何れか1つを上記第1位置に再マッピングし、上記物理位置の残り1つを上記第2位置に再マッピングする段階と、を含むことができる。
一実施例において、上記第1位置及び上記第2位置は、上記原本データストライプが保存された上記複数のメモリブロックとは異なるメモリブロックに含まれることができる。
一実施例において、上記コントローラの動作方法は、上記復旧用ストライプ内の第3単位データに対する第3エラー訂正失敗を検出する段階と、上記復旧用ストライプに含まれた複数の単位データのうち第3単位データを除いた残りの単位データ及び上記パリティデータに基づいて上記第3単位データを復旧する段階と、をさらに含むことができる。
一実施例において、上記第3単位データを復旧する段階は、上記復旧用ストライプに含まれた複数の単位データのうち第3単位データを除いた残りの単位データ及び上記パリティデータをXOR演算する段階を含むことができる。
本技術はデータ復旧の効率を向上させることができるコントローラ及びその動作方法を提供することができる。
本発明の一実施例に係るコントローラを含むメモリシステムを示すブロック図である。 図1の半導体メモリ装置を示すブロック図である。 図2のメモリセルアレイの一実施例を示す図である。 図3のメモリブロックBLK1~BLKzの何れか1つのメモリブロックBLKaを示す回路図である。 図3のメモリブロックBLK1~BLKzの何れか1つのメモリブロックBLKbの他の実施例を示す回路図である。 図2のメモリセルアレイ110に含まれた複数のメモリブロックBLK1~BLKzの何れか1つのメモリブロックBLKcの実施例を示す回路図である。 本発明の一実施例に係るコントローラ200を説明するためのブロック図である。 本発明の一実施例に応じてコントローラ200が処理するデータの構造を説明するための図である。 本発明の一実施例に応じてコントローラ200が処理するデータの構造を説明するための図である。 本発明の一実施例に応じて複数のメモリブロックに保存されるデータを説明するための図である。 1つのデータストライプに含まれた複数のデータのうち2以上のデータに訂正不可能なエラーが発生する状況を示す図である。 1つのデータストライプに含まれた複数のデータのうち2以上のデータに訂正不可能なエラーが発生する状況を示す図である。 1つのデータストライプに含まれた複数のデータのうち2以上のデータに訂正不可能なエラーが発生する状況を示す図である。 1つのデータストライプに含まれた複数のデータのうち2以上のデータに訂正不可能なエラーが発生する状況を示す図である。 本発明の一実施例に係るエラー訂正失敗参照テーブルを示す図である。 本発明の一実施例に係るエラー訂正失敗参照テーブルを示す図である。 本発明の一実施例に係るエラー訂正失敗参照テーブルを示す図である。 本発明の一実施例に係るエラー訂正失敗参照テーブルを示す図である。 本発明の一実施例に応じて生成される復旧用データを説明するための図である。 本発明の一実施例に応じて生成される復旧用データを説明するための図である。 本発明の一実施例に応じて生成されるゼロデータを説明するための図である。 本発明の一実施例に応じて、復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する方法を説明するための図である。 図14により生成された復旧用ストライプに含まれたデータの何れか1つのデータに訂正不可能なエラーが発生した場合、これを復旧する方法を説明するための図である。 図14により生成された復旧用ストライプに含まれたデータの何れか1つのデータに訂正不可能なエラーが発生した場合、これを復旧する方法を説明するための図である。 本発明の他の実施例に応じて、復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する方法を説明するための図である。 本発明の他の実施例に応じて複数のメモリブロックに保存されるデータを説明するための図である。 図17に示した実施例において、復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する方法を説明するための図である。 本発明の一実施例に係るコントローラの動作方法を示すフローチャートである。 図19の段階S110の例示的な実施例を示すフローチャートである。 図19の段階S120の例示的な実施例を示すフローチャートである。 図19の段階S130の例示的な実施例を示すフローチャートである。 図1に示したコントローラの一例を示すブロック図である。 図1のメモリシステムの応用例を示すブロック図である。 図24を参照して説明したメモリシステムを含むコンピューティングシステムを示すブロック図である。
本明細書または出願に開示されている本発明の概念に係る実施例に対する特定の構造的ないし機能的な説明は本発明の概念に係る実施例を説明する目的で例示されたに過ぎず、本発明の概念に係る実施例は様々な形態で実施することができ、本明細書または出願に説明された実施例に限定されると解釈すべきではない。
図1は本発明の一実施例に係るコントローラを含むメモリシステムを示すブロック図である。
図1を参照すると、メモリシステム1000は半導体メモリ装置100及びコントローラ200を含む。また、メモリシステム1000はホスト300と通信する。コントローラ200は半導体メモリ装置100の諸動作を制御する。また、コントローラ200はホスト300から受信したコマンドに基づいて半導体メモリ装置100の動作を制御する。
図2は図1の半導体メモリ装置を示すブロック図である。
図2を参照すると、半導体メモリ装置100はメモリセルアレイ110、アドレスデコーダ120、読み出し及び書き込み回路130、制御ロジック140、及び電圧生成部150を含む。
メモリセルアレイ110は複数のメモリブロックBLK1~BLKzを含む。複数のメモリブロックBLK1~BLKzはワード線WLを介してアドレスデコーダ120に接続される。複数のメモリブロックBLK1~BLKzはビット線BL1~BLmを介して読み出し及び書き込み回路130に接続される。複数のメモリブロックBLK1~BLKzのそれぞれは複数のメモリセルを含む。実施例としては、複数のメモリセルは不揮発性メモリセルであり、垂直チャネル構造を有する不揮発性メモリセルで構成されてもよい。上記メモリセルアレイ110は2次元構造のメモリセルアレイで構成されてもよい。実施例に応じて、上記メモリセルアレイ110は3次元構造のメモリセルアレイで構成されてもよい。一方、メモリセルアレイに含まれる複数のメモリセルのそれぞれは少なくとも1ビットのデータを保存することができる。一実施例では、メモリセルアレイ110に含まれる複数のメモリセルのそれぞれは1ビットのデータを保存するシングルレベルセル(single-level cell;SLC)であってもよい。他の実施例では、メモリセルアレイ110に含まれる複数のメモリセルのそれぞれは2ビットのデータを保存するマルチレベルセル(multi-level cell;MLC)であってもよい。さらに他の実施例では、メモリセルアレイ110に含まれる複数のメモリセルのそれぞれは3ビットのデータを保存するトリプルレベルセル(triple-level cell;TLC)であってもよい。さらに他の実施例では、メモリセルアレイ110に含まれる複数のメモリセルのそれぞれは4ビットのデータを保存するクアッドレベルセル(quad-level cell;QLC)であってもよい。実施例に応じて、メモリセルアレイ110は5ビット以上のデータをそれぞれ保存する複数のメモリセルを含んでもよい。
アドレスデコーダ120、読み出し及び書き込み回路130、制御ロジック140及び電圧生成部150はメモリセルアレイ110を駆動する周辺回路として動作する。アドレスデコーダ120はワード線WLを介してメモリセルアレイ110に接続される。アドレスデコーダ120は制御ロジック140の制御に応答して動作するように構成される。アドレスデコーダ120は半導体メモリ装置100の内部の入出力バッファ(不図示)を介してアドレスを受信する。
アドレスデコーダ120は受信したアドレスのうちブロックアドレスをデコードするように構成される。アドレスデコーダ120はデコードされたブロックアドレスに応じて少なくとも1つのメモリブロックを選択する。また、アドレスデコーダ120は、読み出し動作の読み出し電圧印加動作時に選択されたメモリブロックのうち選択されたワード線に電圧生成部150で発生した読み出し電圧Vreadを印加し、残りの非選択のワード線にはパス電圧Vpassを印加する。また、プログラム検証動作時には選択されたメモリブロックのうち選択されたワード線に電圧生成部150で発生した検証電圧を印加し、残りの非選択のワード線にはパス電圧Vpassを印加する。
アドレスデコーダ120は受信したアドレスのうち列アドレスをデコードするように構成される。アドレスデコーダ120はデコードされた列アドレスを読み出し及び書き込み回路130に伝送する。
半導体メモリ装置100の読み出し動作及びプログラム動作はページ単位で行われる。読み出し動作及びプログラム動作の要求時に受信するアドレスはブロックアドレス、行アドレス及び列アドレスを含んでいる。アドレスデコーダ120はブロックアドレス及び行アドレスに応じて1つのメモリブロック及び1つのワード線を選択する。列アドレスはアドレスデコーダ120によってデコードされて読み出し及び書き込み回路130に提供される。
アドレスデコーダ120はブロックデコーダ、行デコーダ、列デコーダ、及びアドレスバッファなどを含んでもよい。
読み出し及び書き込み回路130は複数のページバッファPB1~PBmを含む。読み出し及び書き込み回路130は、メモリセルアレイ110の読み出し動作時には「読み出し回路(read circuit)」として動作し、書き込み動作時には「書き込み回路(write circuit)」として動作することができる。複数のページバッファPB1~PBmはビット線BL1~BLmを介してメモリセルアレイ110に接続される。複数のページバッファPB1~PBmは、読み出し動作及びプログラム検証動作時にメモリセルのしきい値電圧をセンシングするために、メモリセルと接続されたビット線にセンシング電流を継続的に供給しながら対応するメモリセルのプログラム状態に応じて流れる電流量が変化するセンシングノードを介して検知してセンシングデータとしてラッチする。読み出し及び書き込み回路130は制御ロジック140から出力されるページバッファ制御信号に応答して動作する。
読み出し及び書き込み回路130は、読み出し動作時にメモリセルのデータをセンシングして読み出しデータを一時的に保存した後、半導体メモリ装置100の入出力バッファ(不図示)にデータDATAを出力する。例示的な実施例として、読み出し及び書き込み回路130はページバッファ(またはページレジスタ)の他に列選択回路などを含んでもよい。
制御ロジック140はアドレスデコーダ120、読み出し及び書き込み回路130、及び電圧生成部150に接続される。制御ロジック140は半導体メモリ装置100の入出力バッファ(不図示)を介して命令語CMD及び制御信号CTRLを受信する。制御ロジック140は制御信号CTRLに応答して半導体メモリ装置100の諸動作を制御するように構成される。また、制御ロジック140は、複数のページバッファPB1~PBmのセンシングノードプリチャージの電位レベルを調節するための制御信号を出力する。制御ロジック140はメモリセルアレイ110の読み出し動作(read operation)を行うように読み出し及び書き込み回路130を制御することができる。
電圧生成部150は、制御ロジック140から出力される制御信号に応答して、読み出し動作時にリード電圧(Vread)及びパス電圧Vpassを生成する。電圧生成部150は様々な電圧レベルを有する複数の電圧を生成するために、内部の電源電圧を受信する複数のポンピングキャパシタを含み、制御ロジック140の制御に応答して複数のポンピングキャパシタを選択的に活性化することで複数の電圧を生成する。上述したように、電圧生成部150はチャージポンプ(charge pump)を含んでもよく、上記チャージポンプは上述した複数のポンピングキャパシタを含んでもよい。電圧生成部150に含まれるチャージポンプの具体的な構成は、必要に応じて多様に設計されてもよい。
アドレスデコーダ120、読み出し及び書き込み回路130、及び電圧生成部150は、メモリセルアレイ110に対する読み出し動作、書き込み動作及び消去動作を行う「周辺回路」として機能することができる。周辺回路は、制御ロジック140の制御に基づいてメモリセルアレイ110に対する読み出し動作、書き込み動作及び消去動作を行う。
図3は図2のメモリセルアレイの一実施例を示す図である。
図3を参照すると、メモリセルアレイ110は複数のメモリブロックBLK1~BLKzを含む。各メモリブロックは3次元構造を有することができる。各メモリブロックは基板上に積層された複数のメモリセルを含む。このような複数のメモリセルは+X方向、+Y方向、及び+Z方向に沿って配列される。各メモリブロックの構造は、図4及び図5を参照してより詳細に説明する。
図4は図3のメモリブロックBLK1~BLKzの何れか1つのメモリブロックBLKaを示す回路図である。
図4を参照すると、メモリブロックBLKaは複数のセルストリングCS11~CS1m、CS21~CS2mを含む。実施例として、複数のセルストリングCS11~CS1m、CS21~CS2mのそれぞれは「U」字状に形成されてもよい。メモリブロックBLKa内において、行方向(即ち、+X方向)にm個のセルストリングが配列される。図4には、列方向(即ち、+Y方向)に2つのセルストリングが配列されることが示されている。しかし、これは説明の便宜のためのものであり、列方向に3つ以上のセルストリングが配列されてもよいことは理解できるだろう。
複数のセルストリングCS11~CS1m、CS21~CS2mのそれぞれは、少なくとも1つのソース選択トランジスタSST、第1~第nメモリセルMC1~MCn、パイプトランジスタPT、及び少なくとも1つのドレイン選択トランジスタDSTを含む。
選択トランジスタSST、DST及びメモリセルMC1~MCnのそれぞれは類似する構造を有することができる。実施例として、選択トランジスタSST、DST及びメモリセルMC1~MCnのそれぞれはチャネル層、トンネリング絶縁膜、電荷貯蔵膜及びブロッキング絶縁膜を含んでもよい。実施例として、チャネル層を提供するためのピラー(pillar)が各セルストリング(each cell string)に提供されてもよい。実施例として、チャネル層、トンネリング絶縁膜、電荷貯蔵膜及びブロッキング絶縁膜のうち少なくとも1つを提供するためのピラーは各セルストリングに提供されてもよい。
各セルストリングのソース選択トランジスタSSTは、共通ソース線CSLとメモリセルMC1~MCpとの間に接続される。
実施例として、同じ行に配列されたセルストリングのソース選択トランジスタは行方向に伸びるソース選択線に接続され、異なる行に配列されたセルストリングのソース選択トランジスタは異なるソース選択線に接続される。図4において、第1行のセルストリングCS11~CS1mのソース選択トランジスタは第1ソース選択線SSL1に接続されている。第2行のセルストリングCS21~CS2mのソース選択トランジスタは第2ソース選択線SSL2に接続されている。
他の実施例として、セルストリングCS11~CS1m、CS21~CS2mのソース選択トランジスタは1つのソース選択線に共通して接続されてもよい。
各セルストリングの第1~第nメモリセルMC1~MCnは、ソース選択トランジスタSSTとドレイン選択トランジスタDSTとの間に接続される。
第1~第nメモリセルMC1~MCnは、第1~第pメモリセルMC1~MCpと第p+1~第nメモリセルMCp+1~MCnに区分されてもよい。第1~第pメモリセルMC1~MCpは+Z方向とは逆方向に順に配列され、ソース選択トランジスタSSTとパイプトランジスタPTとの間で直列接続される。第p+1~第nメモリセルMCp+1~MCnは+Z方向に順に配列され、パイプトランジスタPTとドレイン選択トランジスタDSTとの間で直列接続される。第1~第pメモリセルMC1~MCpと第p+1~第nメモリセルMCp+1~MCnはパイプトランジスタPTを介して接続される。各セルストリングの第1~第nメモリセルMC1~MCnのゲートはそれぞれ第1~第nワード線WL1~WLnに接続される。
各セルストリングのパイプトランジスタPTのゲートはパイプ線PLに接続される。
各セルストリングのドレイン選択トランジスタDSTは該当ビット線とメモリセルMCp+1~MCnとの間に接続される。行方向に配列されるセルストリングのドレイン選択トランジスタは行方向に伸びるドレイン選択線に接続される。第1行のセルストリングCS11~CS1mのドレイン選択トランジスタは第1ドレイン選択線DSL1に接続される。第2行のセルストリングCS21~CS2mのドレイン選択トランジスタは第2ドレイン選択線DSL2に接続される。
列方向に配列されるセルストリングは列方向に伸びるビット線に接続される。図4において、第1列のセルストリングCS11、CS21は第1ビット線BL1に接続されている。第m列のセルストリングCS1m、CS2mは第mビット線BLmに接続されている。
行方向に配列されるセルストリング内で同じワード線に接続されるメモリセルは1つのページを構成する。例えば、第1行のセルストリングCS11~CS1mのうち第1ワード線WL1と接続されるメモリセルは1つのページを構成する。第2行のセルストリングCS21~CS2mのうち第1ワード線WL1と接続されるメモリセルは他の1つのページを構成する。ドレイン選択線DSL1、DSL2の何れか1つが選択されることにより、1つの行方向に配列されるセルストリングが選択される。ワード線WL1~WLnの何れか1つが選択されることにより、選択されたセルストリングのうち1つのページが選択される。
他の実施例として、第1~第mビット線BL1~BLmの代わりにイーブンビット線及びオードビット線が提供されてもよい。そして、行方向に配列されるセルストリングCS11~CS1mまたはCS21~CS2mのうち偶数番目のセルストリングはイーブンビット線にそれぞれ接続され、行方向に配列されるセルストリングCS11~CS1mまたはCS21~CS2mのうち奇数番目のセルストリングはオードビット線にそれぞれ接続されてもよい。
実施例として、第1~第nメモリセルMC1~MCnのうち少なくとも1つ以上はダミーメモリセルとして用いられてもよい。例えば、少なくとも1つ以上のダミーメモリセルは、ソース選択トランジスタSSTとメモリセルMC1~MCpとの間の電界(electric field)を減少させるために提供される。または、少なくとも1つ以上のダミーメモリセルは、ドレイン選択トランジスタDSTとメモリセルMCp+1~MCnとの間の電界を減少させるために提供される。より多いダミーメモリセルが提供されるほど、メモリブロックBLKaに対する動作の信頼性は向上するが、メモリブロックBLKaのサイズが増加する。より少ないダミーメモリセルが提供されるほど、メモリブロックBLKaのサイズは減少するが、メモリブロックBLKaに対する動作の信頼性が低下する可能性がある。
少なくとも1つ以上のダミーメモリセルを効率的に制御するために、ダミーメモリセルのそれぞれは求められるしきい値電圧を有することができる。メモリブロックBLKaに対する消去動作の前または後に、ダミーメモリセルの全部または一部に対するプログラム動作が行われてもよい。プログラム動作が行われてから消去動作が行われる場合、ダミーメモリセルのしきい値電圧はそれぞれのダミーメモリセルに接続されたダミーワード線に印加される電圧を制御することで、ダミーメモリセルは求められるしきい値電圧を有することができる。
図5は図3のメモリブロックBLK1~BLKzの何れか1つのメモリブロックBLKbの他の実施例を示す回路図である。
図5を参照すると、メモリブロックBLKbは複数のセルストリングCS11’~CS1m’、CS21’~CS2m’を含む。複数のセルストリングCS11’~CS1m’、CS21’~CS2m’のそれぞれは+Z方向に沿って伸びる。複数のセルストリングCS11’~CS1m’、CS21’~CS2m’のそれぞれは、メモリブロックBLKbの下部の基板(不図示)上に積層された少なくとも1つのソース選択トランジスタSST、第1~第nメモリセルMC1~MCn、及び少なくとも1つのドレイン選択トランジスタDSTを含む。
各セルストリングのソース選択トランジスタSSTは共通ソース線CSLとメモリセルMC1~MCnとの間に接続される。同じ行に配列されたセルストリングのソース選択トランジスタは同じソース選択線に接続される。第1行に配列されたセルストリングCS11’~CS1m’のソース選択トランジスタは第1ソース選択線SSL1に接続される。第2行に配列されたセルストリングCS21’~CS2m’のソース選択トランジスタは第2ソース選択線SSL2に接続される。他の実施例として、セルストリングCS11’~CS1m’、CS21’~CS2m’のソース選択トランジスタは1つのソース選択線に共通して接続されてもよい。
各セルストリングの第1~第nメモリセルMC1~MCnはソース選択トランジスタSSTとドレイン選択トランジスタDSTとの間に直列接続される。第1~第nメモリセルMC1~MCnのゲートはそれぞれ第1~第nワード線WL1~WLnに接続される。
各セルストリングのドレイン選択トランジスタDSTは該当ビット線とメモリセルMC1~MCnとの間に接続される。行方向に配列されるセルストリングのドレイン選択トランジスタは行方向に伸びるドレイン選択線に接続される。第1行のセルストリングCS11’~CS1m’のドレイン選択トランジスタは第1ドレイン選択線DSL1に接続される。第2行のセルストリングCS21’~CS2m’のドレイン選択トランジスタは第2ドレイン選択線DSL2に接続される。
最終的に、各セルストリングにパイプトランジスタPTが除外されたことを除けば、図5のメモリブロックBLKbは図4のメモリブロックBLKaと類似する等価回路を有する。
他の実施例として、第1~第mビット線BL1~BLmの代わりにイーブンビット線及びオードビット線が提供されてもよい。そして、行方向に配列されるセルストリングCS11’~CS1m’またはCS21’~CS2m’のうち偶数番目のセルストリングはイーブンビット線にそれぞれ接続され、行方向に配列されるセルストリングCS11’~CS1m’またはCS21’~CS2m’のうち奇数番目のセルストリングはオードビット線にそれぞれ接続されてもよい。
実施例として、第1~第nメモリセルMC1~MCnのうち少なくとも1つ以上はダミーメモリセルとして用いられてもよい。例えば、少なくとも1つ以上のダミーメモリセルはソース選択トランジスタSSTとメモリセルMC1~MCnとの間の電界を減少させるために提供される。または、少なくとも1つ以上のダミーメモリセルはドレイン選択トランジスタDSTとメモリセルMC1~MCnとの間の電界を減少させるために提供される。より多いダミーメモリセルが提供されるほど、メモリブロックBLKbに対する動作の信頼性は向上するが、メモリブロックBLKbのサイズが増加する。より少ないダミーメモリセルが提供されるほど、メモリブロックBLKbのサイズは減少するが、メモリブロックBLKbに対する動作の信頼性が低下する可能性がある。
少なくとも1つ以上のダミーメモリセルを効率的に制御するために、ダミーメモリセルのそれぞれは求められるしきい値電圧を有することができる。メモリブロックBLKbに対する消去動作の前または後に、ダミーメモリセルの全部または一部に対するプログラム動作が行われてもよい。プログラム動作が行われてから消去動作が行われる場合、ダミーメモリセルのしきい値電圧はそれぞれのダミーメモリセルに接続されたダミーワード線に印加される電圧を制御することで、ダミーメモリセルは求められるしきい値電圧を有することができる。
図6は図2のメモリセルアレイ110に含まれた複数のメモリブロックBLK1~BLKzの何れか1つのメモリブロックBLKcの実施例を示す回路図である。
図6を参照すると、メモリブロックBLKcは複数のセルストリングCS1~CSmを含む。複数のセルストリングCS1~CSmは複数のビット線BL1~BLmにそれぞれ接続されてもよい。複数のセルストリングCS1~CSmのそれぞれは、少なくとも1つ以上のソース選択トランジスタSSTと、第1~第nメモリセルMC1~MCnと、少なくとも1つ以上のドレイン選択トランジスタDSTと、を含む。
選択トランジスタSST、DST及びメモリセルMC1~MCnのそれぞれは類似する構造を有することができる。実施例として、選択トランジスタSST、DST及びメモリセルMC1~MCnのそれぞれはチャネル層、トンネリング絶縁膜、電荷貯蔵膜及びブロッキング絶縁膜を含んでもよい。実施例として、チャネル層を提供するためのピラー(pillar)が各セルストリング(each cell string)に提供されてもよい。実施例として、チャネル層、トンネリング絶縁膜、電荷貯蔵膜及びブロッキング絶縁膜のうち少なくとも1つを提供するためのピラーが各セルストリングに提供されてもよい。
各セルストリングのソース選択トランジスタSSTは、共通ソース線CSLとメモリセルMC1~MCnとの間に接続される。
各セルストリングの第1~第nメモリセルMC1~MCnは、ソース選択トランジスタSSTとドレイン選択トランジスタDSTとの間に接続される。
各セルストリングのドレイン選択トランジスタDSTは、該当ビット線とメモリセルMC1~MCnとの間に接続される。
同じワード線に接続されるメモリセルは1つのページを構成する。ドレイン選択線DSLが選択されることにより、セルストリングCS1~CSmが選択される。ワード線WL1~WLnの何れか1つが選択されることにより、選択されたセルストリングの何れか1つのページが選択される。
他の実施例として、第1~第mビット線BL1~BLmの代わりにイーブンビット線及びオードビット線が提供されてもよい。セルストリングCS1~CSmのうち偶数番目のセルストリングはイーブンビット線にそれぞれ接続され、奇数番目のセルストリングはオードビット線にそれぞれ接続されてもよい。
図7は本発明の一実施例に係るコントローラ200を説明するためのブロック図である。
図7を参照すると、本発明の一実施例に係るコントローラ200は、データ保存部205、データ復旧制御部215、メモリインターフェース240、及びエラー訂正ブロック250を含む。
データ保存部205は揮発性メモリで構成されてもよく、例えば、静的ランダムアクセスメモリ(Static Random Access Memory;SRAM)または動的ランダムアクセスメモリ(Dynamic Random Access Memory;DRAM)で構成されてもよい。データ保存部205はコントローラ200の動作に必要な諸データを保存することができる。また、データ保存部205は、半導体メモリ装置100とホストHostとの間のキャッシュメモリ、及び半導体メモリ装置100とホストHostとの間のバッファメモリのうち少なくとも1つとして用いられてもよい。
データ復旧制御部215は半導体メモリ装置100に保存されたデータの復旧動作を制御することができる。そのため、データ復旧制御部215はメモリインターフェース240に復旧制御信号RCSを伝達することができる。また、データ復旧制御部215はメモリインターフェース240に書き込みデータWDを伝達することができる。
メモリインターフェース240はコントローラ200と半導体メモリ装置100との間のインターフェース動作を行うことができる。例えば、メモリインターフェース240は、半導体メモリ装置100に各種コマンドCMD及び書き込みデータWDを伝達することができる。また、メモリインターフェース240は半導体メモリ装置100からリードデータRDを受信することができる。メモリインターフェース240は受信したリードデータRDをエラー訂正ブロック250に伝達することができる。
エラー訂正ブロック250は、メモリインターフェース240を介して半導体メモリ装置100から受信したリードデータに対するエラー訂正動作を行うことができる。受信したリードデータに対するエラー訂正が成功すれば、エラー訂正ブロック250はエラーが訂正されたデータECDをデータ復旧制御部215に伝達することができる。また、受信したリードデータに対するエラー訂正が失敗すれば、エラー訂正ブロック250は訂正不可能なエラー信号UESをデータ復旧制御部215に伝達することができる。本明細書において、データに対する訂正不可能なエラーの発生は、該当データに対するエラー訂正が失敗したことを意味する。
本発明の一実施例に係るコントローラ200のデータ復旧制御部215は、1つのデータストライプ内の2以上のデータにおいて訂正不可能なエラーが発生する場合、復旧用データDRCを生成することができる。生成された復旧用データDRCはデータ保存部205に一時的に保存されてもよい。また、復旧用データDRCは、データ復旧制御部215によって書き込みデータWDとしてメモリインターフェース240に伝達されることができる。メモリインターフェース240は、データ復旧制御部215からの復旧制御信号RCSに基づいて書き込みデータWD及び書き込み動作のためのコマンドCMDを半導体メモリ装置100に伝達することができる。半導体メモリ装置100は、受信したコマンドCMDに応答して書き込みデータWDをプログラムすることができる。即ち、データ保存部205の復旧用データDRCが半導体メモリ装置100にプログラムされることができる。
また、半導体メモリ装置100にプログラムされた復旧用データDRCは、上記2以上の訂正不可能なエラーが発生したストライプ内に追加の訂正不可能なエラーが発生した場合、これを復旧するために用いられる。復旧用データDRCの生成方法及びこれにより追加の訂正不可能なエラーを復旧する方法については、図8a~図22を参照して説明する。
図8a及び図8bは本発明の一実施例に応じてコントローラ200が処理するデータの構造を説明するための図である。図8aを参照すると、複数のデータストライプDS1~DSkを含むデータDATAが示されている。
本発明の一実施例によると、データDATAは、メモリシステム1000とホスト300の間で「データストライプ(Data Stripe)」単位で伝送されることができる。ホスト300またはメモリシステム1000の使用者はデータストライプのサイズを選択することができる。
図8bを参照すると、データストライプの構造が示されている。図8bにおいて、第1データストライプDS1は複数のデータD[1][1]、D[1][2]、・・・、D[1][p]、P[1]を含んでもよい。第1データストライプDS1に含まれる複数のデータD[1][1]、D[1][2]、・・・、D[1][p]、P[1]のそれぞれはページ単位のデータであってもよい。同様に、第2データストライプDS2は複数のデータD[2][1]、D[2][2]、・・・、D[2][p]、P[2]を含んでもよい。第2データストライプDS2に含まれる複数のデータD[2][1]、D[2][2]、・・・、D[2][p]、P[2]のそれぞれはページ単位のデータであってもよい。
第1データストライプDS1に含まれる複数のデータD[1][1]、D[1][2]、・・・、D[1][p]、P[1]のうちデータD[1][1]、D[1][2]、・・・、D[1][p]は、ホスト300から受信したユーザーデータを含んでもよい。一方、第1データストライプDS1に含まれる複数のデータD[1][1]、D[1][2]、・・・、D[1][p]、P[1]のうちデータP[1]は、パリティデータであってもよい。パリティデータP[1]は、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、・・・、D[1][p]の何れか1つに訂正不可能なエラーが発生した場合、これを復旧するためのデータであってもよい。例示的な実施例において、パリティデータP[1]は、データD[1][1]、D[1][2]、・・・、D[1][p]をビット単位で排他的論理和演算して生成されるデータであってもよい。
一方、第1データストライプDS1に含まれる複数のデータD[1][1]、D[1][2]、・・・、D[1][p]、P[1]のそれぞれは、複数のデータチャンクを含んでもよい。例えば、図8bに示すように、データD[1][3]は第1~第qデータチャンクDC1~DCqを含んでもよい。他のデータD[1][1]、D[1][2]、D[1][4]、D[1][5]、・・・、D[1][p]、P[1]もq個のデータチャンクをそれぞれ含んでもよい。データチャンクは、エラー訂正ブロック250が行うエラー訂正動作の単位となるデータサイズであってもよい。
図8bには、第1データストライプがp+1個のデータD[1][1]、D[1][2]、・・・、D[1][p]、P[1]を含み、各データはq個のデータチャンクを含むことが示されている。上記p及びqは必要に応じて多様に選択されてもよい。一方、1つのデータストライプを構成する複数のデータは、複数のメモリブロックに分散されて保存されてもよい。
図9は、本発明の一実施例に応じて複数のメモリブロックに保存されるデータを説明するための図である。
図9を参照すると、1つのデータストライプを構成するデータが8つのメモリブロックBLK1~BLK8に分散されて保存される実施例が示されている。即ち、図9の実施例では、図8を参照して説明したp値は7となる。
データD[1][1]、D[1][2]、・・・、D[1][7]、P[1]は第1データストライプDS1を構成し、データD[2][1]、D[2][2]、・・・、D[2][7]、P[2]は第2データストライプDS2を構成する。また、データD[3][1]、D[3][2]、・・・、D[3][7]、P[3]は第3データストライプDS3を構成し、データD[4][1]、D[4][2]、・・・、D[4][7]、P[4]は第4データストライプDS4を構成する。
一実施例において、図9に図示する第1~第8メモリブロックBLK1~BLK8は1つの半導体メモリ装置に含まれてもよい。しかし、本発明はこれに限定されず、第1~第8メモリブロックBLK1~BLK8は少なくとも2つ以上の半導体メモリ装置に含まれてもよい。例示的な実施例として、第1~第8メモリブロックBLK1~BLK8のそれぞれは8つの異なる半導体メモリ装置に含まれてもよい。この場合、複数の半導体メモリ装置は少なくとも1つのチャネルを介してコントローラと接続されてもよい。
上述したように、パリティデータP[1]は、データD[1][1]、D[1][2]、・・・、D[1][p]をビット単位で排他的論理和演算して生成されるデータであってもよい。従って、パリティデータP[1]とデータD[1][1]、D[1][2]、・・・、D[1][p]の関係は次の数学式1のように表すことができる。
[式1]
Figure 2022081409000002
図10a~図10dは1つのデータストライプに含まれた複数のデータのうち2以上のデータに訂正不可能なエラーが発生する状況を示す図である。図10a~図10dでは、説明の便宜上、第1データストライプDS1だけを模式的に示した。
図10aを参照すると、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、・・・、D[1][7]、P[1]のうちデータD[1][2]に訂正不可能なエラーUEが発生した状況が示されている。この場合、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、・・・、D[1][7]、P[1]のうち訂正不可能なエラーUEが発生したデータD[1][2]を除いた残りのデータD[1][1]、D[1][3]、D[1][4]、D[1][5]、D[1][6]、D[1][7]、P[1]をXOR演算して、訂正不可能なエラーUEが発生したデータD[1][2]を復旧することができる。即ち、次の数学式2の関係により、データD[1][2]を復旧することができる。
[式2]
Figure 2022081409000003
本発明の一実施例に係るコントローラ200は、訂正不可能なエラーUEが発生したデータに関する情報をアップデートすることができる。このため、コントローラ200のデータ復旧制御部215は、図11a~図11dを参照して後述するエラー訂正失敗参照テーブルを管理することができる。これにより、後にも図10bに示すように第1データストライプDS1のデータD[1][2]に訂正不可能なエラーが発生したことが分かる。
図10cを参照すると、データD[1][2]に訂正不可能なエラーUE、即ち、第1エラーが発生した後、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、・・・、D[1][7]、P[1]のうちデータD[1][4]に訂正不可能なエラーUE、即ち、第2エラーが発生した状況が示されている。これにより、コントローラ200は、二番目の訂正不可能なエラーUEが発生したデータに関する情報をアップデートすることができる。このため、コントローラ200のデータ復旧制御部215はエラー訂正失敗参照テーブルをアップデートすることができる。これにより、後にも図10dに示すように第1データストライプDS1のデータD[1][2]及びデータD[1][4]に訂正不可能なエラーが発生したことが分かる。
1つのデータストライプ内に2つの訂正不可能なエラーUEが発生した場合、第2エラーが発生したデータは復旧することができない。
本発明の一実施例に係るコントローラ200の動作方法によると、1つのデータストライプに2つの訂正不可能なエラーUEが発生した場合、該当データストライプ内のエラーが発生していない他のデータに基づいて復旧用データ及びゼロデータを生成する。その後、該当データストライプ内に追加の訂正不可能なエラーUE、即ち、第3エラーが発生すると、復旧用データ及びゼロデータに基づいて第3エラーが発生したデータを復旧する。これにより、メモリシステム1000のデータ復旧効率を向上させることができる。
図11a~図11dは本発明の一実施例に係るエラー訂正失敗参照テーブルを示す図である。以下では、図10a~図10dを合わせて参照してエラー訂正失敗参照テーブル及びこれをアップデートする方法について説明する。
図10aを参照して説明したように、第1データストライプDS1内のデータD[1][2]に第1エラーが発生した場合、データ復旧制御部215はエラー訂正失敗参照テーブルに第1データストライプDS1を登録する。図11aに示すように、エラー訂正失敗参照テーブルは2つのフィールドを含んでもよい。最初のフィールドはデータストライプを区分するためのストライプIDで、2番目のフィールドは該当データストライプ内の訂正不可能なエラーが発生したデータを示すページである。図11aを参照すると、訂正不可能なエラーが発生した第1データストライプDS1がエラー訂正失敗参照テーブルに登録されていることが分かる。また、図11aを参照すると、第1データストライプDS1内のデータD[1][2]に第1エラーが発生したことが分かる。
第1データストライプDS1内のデータD[1][2]に第1エラーが発生した後、第3データストライプDS3のデータDS[3][5]に訂正不可能なエラーが発生した場合を考慮すると、図11bに示すように、エラー訂正失敗参照テーブルに第3データストライプDS3が登録される。一方、第3データストライプDS3内のエラーが発生したデータDS[3][5]に関する情報もエラー訂正失敗参照テーブルに含まれる。
同様に、第3データストライプDS3内のデータD[3][5]にエラーが発生した後、第7データストライプDS7のデータDS[7][3]に訂正不可能なエラーが発生した場合を考慮すると、図11cに示すように、エラー訂正失敗参照テーブルに第7データストライプDS7が登録される。一方、第7データストライプDS7内のエラーが発生したデータDS[7][3]に関する情報もエラー訂正失敗参照テーブルに含まれる。
その後、図10cに示すように、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、・・・、D[1][7]、P[1]のうちデータD[1][4]に訂正不可能なエラーUE、即ち、第2エラーが発生した場合、これをエラー訂正失敗参照テーブルにアップデートする。図11dに示すように、既に登録されている第1データストライプDS1に、データD[1][4]で第2エラーが発生したことが分かるように、エラー訂正失敗参照テーブルがアップデートされてもよい。
図11a~図11dに示すようなエラー訂正失敗参照テーブルは、データ復旧制御部215によって生成されてもよい。一方、エラー訂正失敗参照テーブルはデータ保存部205に保存されてもよい。
本発明の一実施例に係るコントローラ及びその動作方法によると、1つのデータストライプに2つの訂正不可能なエラーが発生する場合、復旧用データを生成する。上記復旧用データは、該当データストライプの他のデータに今後第3エラーが発生する場合、第3エラーが発生したデータを復旧するためのデータである。以下では、図10a~図11dを参照して説明したように、第1データストライプDS1のデータD[1][2]で第1エラーが発生し、データD[1][4]で第2エラーが発生した場合に復旧用データを生成する方法について説明する。
図12a及び図12bは、本発明の一実施例に応じて生成された復旧用データを説明するための図である。
図12aを参照すると、第1データストライプDS1のデータD[1][2]で第1エラーが発生し、データD[1][4]で第2エラーが発生した場合、復旧用データDRCは第1データストライプDS1からデータD[1][2]及びデータD[1][4]を除いた残りのデータをXOR演算して生成することができる。そのため、第1データストライプDS1のデータD[1][1]、D[1][3]、D[1][5]、D[1][6]、D[1][7]、P[1]は半導体メモリ装置100によってリードされる必要がある。リードされたデータD[1][1]、D[1][3]、D[1][5]、D[1][6]、D[1][7]、P[1]はコントローラ200のエラー訂正ブロック250に伝達される。エラー訂正ブロック250は、受信したデータD[1][1]、D[1][3]、D[1][5]、D[1][6]、D[1][7]、P[1]のそれぞれに対するエラー訂正動作を行い、エラーが訂正された該当データをデータ復旧制御部215に伝達する。
データ復旧制御部215は、次の数学式3のような方式で復旧用データDRCを生成することができる。
[式3]
Figure 2022081409000004
一方、数学式1において、pが7である場合、次の数学式4の関係が成立する。
[式4]
Figure 2022081409000005
XOR演算は結合法則及び交換法則を満たすため、上記数学式3及び数学式4を組み合わせると、次の数学式5のような結果を導き出すことができる。
[式5]
Figure 2022081409000006
即ち、復旧用データDRCは、第1及び第2エラーが発生していない訂正可能な他のデータD[1][1]、D[1][3]、D[1][5]、D[1][6]、D[1][7]、P[1]のXOR演算によって生成することができるが、復旧用データDRCは、第1及び第2エラーが発生したデータD[1][2]、D[1][4]をXOR演算した結果と同じである。即ち、数学式3と数学式5は数学的に同値関係が成立する。これを利用し、第1データストライプ内の第1及び第2エラーが発生していない残りのデータD[1][1]、D[1][3]、D[1][5]、D[1][6]、D[1][7]、P[1]に追加で第3エラーが発生する場合、復旧用データDRC及びゼロデータを利用して第3エラーが発生したデータを復旧することができる。ゼロデータに対しては図13を参照して説明する。
図13は本発明の一実施例に応じて生成されるゼロデータを説明するための図である。
図13に示すように、ゼロデータDZRはすべてのビットが0のデータであってもよい。一方、ゼロデータDZRのサイズはデータストライプに含まれた各データのサイズと同じであってもよい。例えば、ゼロデータDZRのサイズはページサイズと同じであってもよい。
図14は、本発明の一実施例に応じて、復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する方法を説明するための図である。
本発明の一実施例に係るコントローラ及びその動作方法によると、1つのデータストライプ内に2つの訂正不可能なエラーが発生する場合、図12a及び図12bを参照して説明した復旧用データDRC及び図13を参照して説明したゼロデータDZRを生成する。一方、本発明の一実施例に係るコントローラ及びその動作方法によると、第1及び第2エラーが発生したデータを生成された復旧用データDRC及びゼロデータDZRに置き換えることで復旧用ストライプを生成する。
図14に示すように、第1データストライプDS1のデータD[1][2]及びデータD[1][4]に訂正不可能なエラーが発生した場合、これらを復旧用データDRC及びゼロデータDZRに置き換える。
より具体的には、第2メモリブロックBLK2にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][2]の代わりに復旧用データDRCをフリーブロックである第iメモリブロックBLKiにプログラムする。一方、第2メモリブロックBLK2にプログラムされている他のデータD[2][2]、D[3][2]、D[4][2]、・・・を第iメモリブロックBLKiにコピーする。
一方、第4メモリブロックBLK4にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][4]の代わりにゼロデータDZRをフリーブロックである第jメモリブロックBLKjにプログラムする。一方、第4メモリブロックBLK4にプログラムされている他のデータD[2][4]、D[3][4]、D[4][4]、・・・を第jメモリブロックBLKjにコピーする。
その後、第2メモリブロックBLK2の物理アドレスマッピングを第iメモリブロックBLKiに再マッピングし、第4メモリブロックBLK4の物理アドレスマッピングを第jメモリブロックBLKjに再マッピングする。
再マッピングした後、第2メモリブロックBLK2及び第4メモリブロックBLK4はフリーブロックとしてリリースすることができる。
その結果、原本データストライプである第1データストライプDS1のデータD[1][2]及びデータD[1][4]を復旧用データDRC及びゼロデータDZRに置き換えて復旧用ストライプを生成することができる。復旧用ストライプはデータD[1][1]、DRC、D[1][3]、DZR、D[1][5]、D[1][6]、D[1][7]、P[1]を含む。以下では、復旧用ストライプを用いて、更なる訂正不可能なエラーが発生した際にこれを復旧する方法について説明する。
図15a及び図15bは、図14により生成された復旧用ストライプRS1に含まれたデータの何れか1つのデータに訂正不可能なエラーが発生した場合、これを復旧する方法を説明するための図である。図15aを参照すると、復旧用ストライプRS1内のデータD[1][6]に訂正不可能なエラーが発生した状況が示されている。この場合、図15bに示すような方法でデータD[1][6]を復旧することができる。より具体的には、上述した数学式4をデータD[1][6]に関してまとめると、次の数学式6のような結果が得られる。
[式6]
Figure 2022081409000007
上述した数学式5に介して説明したように、復旧用データDRCは、前に第1及び第2エラーが発生したデータD[1][2]、D[1][4]をXOR演算したのと同じデータである。従って、数学式6においてデータD[1][2]、D[1][4]を復旧用データDRCに置き換えると、次の数学式7のような結果が得られる。
[式7]
Figure 2022081409000008
ビット「0」はXOR演算の単位元であるため、数学式7の右辺をゼロデータDZRとXOR演算しても等号関係は保持される。これにより、以下の数学式8のような関係が得られる。
[式8]
Figure 2022081409000009
上記数学式8を模式的に示すと、図15bと同じであることが分かる。これは、復旧用ストライプ内のあるデータ、例えば、データD[1][6]に訂正不可能なエラーが発生した場合、復旧用ストライプ内のデータのうち訂正不可能なエラーが発生したデータD[1][6]を除いた残りのデータをXOR演算して、データD[1][6]を復旧することができることを意味する。
即ち、本発明の一実施例に係るコントローラ及びその動作方法によると、1つのデータストライプ内の複数のデータのうち2つのデータに対して訂正不可能なエラーが発生する場合、エラーが発生していない残りのデータを利用して復旧用データを生成する。一方、データストライプ内のエラーが発生していない残りのデータと復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する。その後、復旧用ストライプ内の何れか1つのデータに更なる訂正不可能なエラーが発生すると、復旧用ストライプ内のデータを利用して更なるエラーが発生したデータを復旧することができる。従って、メモリシステム1000のデータ復旧効率が向上する。
図16は、本発明の他の実施例に応じて、復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する方法を説明するための図である。
図16を参照すると、第1データストライプDS1のデータD[1][2]及びデータD[1][4]に訂正不可能なエラーが発生した場合、これらをそれぞれ復旧用データDRC及びゼロデータDZRに置き換える。
より具体的には、第2メモリブロックBLK2にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][2]の代わりにゼロデータDZRをフリーブロックである第iメモリブロックBLKiにプログラムする。一方、第2メモリブロックBLK2にプログラムされている他のデータD[2][2]、D[3][2]、D[4][2]、・・・を第iメモリブロックBLKiにコピーする。
一方、第4メモリブロックBLK4にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][4]の代わりに復旧用データDRCをフリーブロックである第jメモリブロックBLKjにプログラムする。一方、第4メモリブロックBLK4にプログラムされている他のデータD[2][4]、D[3][4]、D[4][4]、・・・を第jメモリブロックBLKjにコピーする。
その後、第2メモリブロックBLK2の物理アドレスマッピングを第iメモリブロックBLKiに再マッピングし、第4メモリブロックBLK4の物理アドレスマッピングを第jメモリブロックBLKjに再マッピングする。再マッピングした後、第2メモリブロックBLK2及び第4メモリブロックBLK4はフリーブロックとしてリリースすることができる。
図14に図示する実施例によると、第2メモリブロックBLK2にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][2]の代わりに復旧用データDRCを第iメモリブロックBLKiにプログラムし、第4メモリブロックBLK4にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][4]の代わりにゼロデータDZRを第jメモリブロックBLKjにプログラムする方法が示されている。しかし、本発明はこれに限定されない。復旧用データDRCとゼロデータDZRの演算順序を変えても演算結果に変わりはない。従って、図16に示すように復旧用データDRCとゼロデータDZRの順序を変えてプログラムすることもできる。
図17は、本発明の他の実施例に応じて複数のメモリブロックに保存されるデータを説明するための図である。
図14~図16を参照した説明によると、1つのメモリブロックは1つのデータストライプを構成する複数のデータのうち1つだけを保存することが示されている。しかし、本発明はこれに限定されず、図17に示すように、1つのメモリブロックが1つのデータストライプを構成する複数のデータのうち2つのデータをそれぞれ保存することもできる。この場合、1つのデータストライプを保存するためには4つのメモリブロックが必要となることがある。
図18は、図17に示す実施例において、復旧用データ及びゼロデータに基づいて復旧用ストライプを生成する方法を説明するための図である。本発明の実施例に係るデータ復旧方法は、データストライプ内の一部のデータに対するプログラム失敗が発生した場合にも応用可能である。以下では、第1データストライプに含まれたデータの一部のデータに訂正不可能なエラーが発生し、一部のデータはプログラム失敗が発生した場合を例に挙げて説明する。
第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、D[1][3]、D[1][4]、D[1][5]、D[1][6]、D[1][7]、P[1]のうち4つのデータD[1][1]、D[1][2]、D[1][3]、D[1][4]に対して正常にプログラムが終了した場合を考慮する。その後、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、D[1][3]、D[1][4]、D[1][5]、D[1][6]、D[1][7]、P[1]の残り4つのデータD[1][5]、D[1][6]、D、[1][7]、P[1]のうちデータD[1][7]に対するプログラム失敗が発生し、また、データD[1][2]に対しては訂正不可能なエラーが発生した場合を考慮する。
この場合は、1つのデータストライプ内に2つの訂正不可能なエラーが発生した場合と同じ方法で復旧用ストライプを生成することができる。即ち、第1データストライプDS1に含まれたデータD[1][1]、D[1][2]、D[1][3]、D[1][4]、D[1][5]、D[1][6]、D[1][7]、P[1]のうちプログラム失敗または訂正不可能なエラーが発生していないデータD[1][1]、D[1][3]、D[1][4]、D[1][5]、D[1][6]、P[1]に対するXOR演算を行い、復旧用データDRCを生成する。また、すべてのビットが0のゼロデータDZRを生成する。
その後、第2メモリブロックBLK2にプログラムされているデータのうち訂正不可能なエラーが発生したデータD[1][2]の代わりにゼロデータDZRをフリーブロックである第xメモリブロックBLKxにプログラムする。一方、第2メモリブロックBLK2にプログラムされている他のデータD[1][6]を第xメモリブロックBLKxにコピーする。
一方、第3メモリブロックBLK3にプログラム失敗したデータ(D[1][7])の代わりに復旧用データDRCをフリーブロックである第yメモリブロックBLKyにプログラムする。一方、第3メモリブロックBLK3にプログラムされている他のデータD[1][3]を第yメモリブロックBLKyにコピーする。
その後、第2メモリブロックBLK2の物理アドレスマッピングを第xメモリブロックBLKxに再マッピングし、第3メモリブロックBLK3の物理アドレスマッピングを第yメモリブロックBLKyに再マッピングする。再マッピングした後、第2メモリブロックBLK2及び第3メモリブロックBLK3はフリーブロックとしてリリースすることができる。
図19は本発明の一実施例に係るコントローラの動作方法を示すフローチャートである。
図19を参照すると、本発明の一実施例に係るコントローラの動作方法は、データストライプ内の第1及び第2データのエラー訂正失敗を検出する段階S110と、データストライプ内の第1及び第2データを除いた残りのデータに基づいて、復旧用データDRCを生成する段階S120と、第1及び第2データを復旧用データDRC及びゼロデータDZRに置き換えて、復旧用ストライプを生成する段階S130と、復旧用ストライプ内の第3データのエラー訂正失敗を検出する段階S140と、復旧用ストライプ内の第3データを除いた残りのデータに基づいて、第3データを復旧する段階S150と、を含む。
段階S110では、図10a~図10dを参照して説明したように、データストライプ内に訂正不可能なエラーが2つ発生したことを検知することができる。このため、図11a~図11dを参照して説明したエラー訂正失敗参照テーブルを利用することができる。段階S110のより詳細な実施例については図20を参照して説明する。
段階S120では、図12aを参照して説明したように、復旧用データDRCを生成することができる。段階S120のより詳細な実施例については図21を参照して説明する。また、段階S130では、図14を参照して説明したように、第1及び第2エラーが発生したデータを復旧用データDRC及びゼロデータDZRに置き換えて復旧用ストライプを生成することができる。段階S130のより詳細な実施例については図22を参照して説明する。
段階S140では、図15aを参照して説明したように、復旧用ストライプ内に更なる訂正不可能なエラーが発生したことを検知することができる。その後、段階S150では、図15bを参照して説明したように、復旧用ストライプRS1のデータのうち更なるエラーが発生した第3データを除いた残りのデータをXOR演算して第3データを復旧することができる。
図20は、図19の段階S110の例示的な実施例を示すフローチャートである。
図20を参照すると、図19に示すデータストライプ内の第1及び第2データのエラー訂正失敗を検出する段階S110は、上記データストライプ内の第1データのエラー訂正失敗を検出する段階S111と、上記第1データのエラー訂正失敗に応答して、上記データストライプの第1エラー訂正失敗情報をアップデートする段階S113と、上記データストライプ内の第2データのエラー訂正失敗を検出する段階S115と、上記第2データのエラー訂正失敗に応答して、上記データストライプの第2エラー訂正失敗情報をアップデートする段階S117と、を含む。
段階S111は、図10aを通じて説明したように、第1データストライプDS1内の複数のデータの何れか1つに対する訂正不可能なエラーを検出する動作に対応する。
段階S113は、図10b及び図11aを参照して説明したように、第1データストライプDS1をエラー訂正失敗参照テーブルに登録し、訂正不可能なエラーが発生したデータD[1][2]に関する情報をエラー訂正失敗参照テーブルに追加する動作に対応する。
段階S115は、図10cを通じて説明したように、第1データストライプDS1内の複数のデータのうち2番目の訂正不可能なエラーを検出する動作に対応する。
段階S117は、図10d及び図11dを参照して説明したように、2番目の訂正不可能なエラーが発生したデータD[1][4]に関する情報をエラー訂正失敗参照テーブルに追加する動作に対応する。
図21は図19の段階S120の例示的な実施例を示すフローチャートである。
図21を参照すると、図19に示すデータストライプ内の第1及び第2データを除いた残りのデータに基づいて、復旧用データDRCを生成する段階S120は、データストライプ内の第1及び第2データを除いた残りのデータをXOR演算して復旧用データDRCを生成する段階S121を含んでもよい。段階S121では、図12aを通じて説明したように復旧用データDRCを生成することができる。
図22は図19の段階S130の例示的な実施例を示すフローチャートである。
図22を参照すると、図19に示す第1及び第2データを復旧用データDRC及びゼロデータDZRに置き換えて復旧用ストライプを生成する段階S130は、復旧用データ及びゼロデータを第1位置及び第2位置にそれぞれプログラムする段階S131と、第1及び第2データの物理位置を第1位置及び第2位置に再マッピングする段階S133と、を含む。
段階S131では、図14を参照して説明したように、復旧用データDRC及びゼロデータDZRがフリーブロックである第iメモリブロックBLKi及び第jメモリブロックBLKjにそれぞれプログラムされることができる。即ち、第1位置は第iメモリブロックBLKiに含まれ、第2位置は第jメモリブロックBLKjに含まれることができる。
段階S133では、図14を参照して説明したように、第2メモリブロックBLK2の物理アドレスマッピングを第iメモリブロックBLKiに再マッピングし、第4メモリブロックBLK4の物理アドレスマッピングを第jメモリブロックBLKjに再マッピングすることができる。
図23は図1に示したコントローラの一例を示すブロック図である。
図23を参照すると、コントローラ200は、半導体メモリ装置100及びホストHOSTと接続される。半導体メモリ装置100は、図2を参照して説明した半導体メモリ装置であってもよい。コントローラ200は、図1または図7のコントローラ200に対応する。以下、重複する説明は省略する。
コントローラ200は、ホストHOSTからの要請に応答して半導体メモリ装置100にアクセスするように構成される。例えば、コントローラ200は半導体メモリ装置100の読み出し、書き込み、消去、及びバックグラウンド(background)動作を制御するように構成される。コントローラ200は半導体メモリ装置100とホストHOSTとの間でインターフェースを提供するように構成される。コントローラ200は半導体メモリ装置100を制御するためのファームウェア(firmware)を駆動するように構成される。
コントローラ200は、ラム(Random Access Memory)210、プロセッシングユニット(processing unit)220、ホストインターフェースhost interface)230、メモリインターフェース(memory interface)240、及びエラー訂正ブロック250を含む。ラム210は、プロセッシングユニット220の動作メモリ、半導体メモリ装置100とホストHOSTとの間のキャッシュメモリ、及び半導体メモリ装置100とホストHOSTとの間のバッファメモリのうち少なくとも1つとして利用される。図23のラム210は、図7のデータ保存部205と実質的に同じ構成要素であってもよい。
プロセッシングユニット220はコントローラ200の諸動作を制御する。図7のデータ復旧制御部215は、図23のプロセッシングユニット220により実行されるファームウェアとして構成されてもよい。
ホストインターフェース230は、ホストHOSTとコントローラ200との間のデータ交換を行うためのプロトコルを含む。例示的な実施例として、コントローラ200は、USB(Universal Serial Bus)プロトコル、MMC(multimedia card)プロトコル、PCI(peripheral component interconnection)プロトコル、PCI-E(PCI-express)プロトコル、ATA(Advanced Technology Attachment)プロトコル、Serial-ATAプロトコル、Parallel-ATAプロトコル、SCSI(small computer system interface)プロトコル、ESDI(enhanced small disk interface)プロトコル、及びIDE(Integrated Drive Electronics)プロトコル、プライベート(private)プロトコルなどの様々なインターフェースプロトコルのうち少なくとも1つを介してホストHOSTと通信するように構成される。
メモリインターフェース240は半導体メモリ装置100とインターフェースする。例えば、メモリインターフェースはNAND型インターフェースまたはNOR型インターフェースを含む。図23のメモリインターフェース240は、図7のメモリインターフェース240と実質的に同じ構成要素であってもよい。
エラー訂正ブロック250は、エラー訂正コード(ECC、Error Correcting Code)を利用して半導体メモリ装置100から受信したデータのエラーを検出し、訂正するように構成される。プロセッシングユニット220は、エラー訂正ブロック250のエラー検出結果に応じて読み出し電圧を調節し、再読み出しを行うように半導体メモリ装置100を制御する。例示的な実施例として、エラー訂正ブロックはコントローラ200の構成要素として提供されてもよい。図23のエラー訂正ブロック250は、図7のエラー訂正ブロック250と実質的に同じ構成要素であってもよい。
コントローラ200及び半導体メモリ装置100は1つの半導体装置に集積されてもよい。例示的な実施例として、コントローラ200及び半導体メモリ装置100は、1つの半導体装置に集積されてメモリカードを構成してもよい。例えば、コントローラ200及び半導体メモリ装置100は、1つの半導体装置に集積されてPCカード(PCMCIA、personal computer memory card international association)、コンパクトフラッシュ(登録商標)カード(CF)、スマートメディアカード(SM、SMC)、メモリスティック、マルチメディアカード(MMC、RS-MMC、MMCmicro)、SDカード(SD、miniSD、microSD、SDHC)、ユニバーサルフラッシュ記憶装置(UFS)などのメモリカードを構成する。
コントローラ200及び半導体メモリ装置100は1つの半導体装置に集積されて半導体ドライブ(SSD、Solid State Drive)を構成してもよい。半導体ドライブSSDは半導体メモリにデータを保存するように構成されるメモリシステム1000を含む。コントローラ200及び半導体メモリ装置100を含むメモリシステム1000が半導体ドライブSSDとして用いられる場合、メモリシステム1000に接続されたホストHOSTの動作速度は画期的に改善される。
他の例として、コントローラ200及び半導体メモリ装置100を含むメモリシステム1000は、コンピュータ、UMPC(Ultra Mobile PC)、ワークステーション、ネットブック(net-book)、PDA(Personal Digital Assistants)、ポータブル(portable)コンピュータ、ウェブタブレット(web tablet)、無線電話機(wireless phone)、モバイルフォン(mobile phone)、スマートフォン(smart phone)、e-ブック(e-book)、PMP(portable multimedia player)、携帯用ゲーム機、ナビゲーション(navigation)装置、ブラックボックス(black box)、デジタルカメラ(digital camera)、3次元受像機(3-dimensional television)、デジタルボイスレコーダー(digital audio recorder)、デジタルボイスプレーヤー(digital audio player)、デジタル映像レコーダー(digital picture recorder)、デジタル映像プレーヤー(digital picture player)、デジタルビデオレコーダー(digital video recorder)、デジタルビデオプレーヤー(digital video player)、情報を無線環境で送受信できる装置、ホームネットワークを構成する様々な電子装置のうち1つ、コンピュータネットワークを構成する様々な電子装置のうち1つ、テレマティクスネットワークを構成する様々な電子装置のうち1つ、RFID装置、またはコンピューティングシステムを構成する様々な構成要素のうち1つなどの電子装置の様々な構成要素のうち1つとして提供される。
例示的な実施例として、半導体メモリ装置100及びこれを含むメモリシステムは様々な形態のパッケージで実装されてもよい。例えば、半導体メモリ装置100またはメモリシステムは、PoP(Package on Package)、Ball grid arrays(BGAs)、Chip scale packages(CSPs)、Plastic Leaded Chip Carrier(PLCC)、Plastic Dual In Line Package(PDIP)、Die in Waffle Pack、Die in Wafer Form、Chip On Board(COB)、Ceramic Dual In Line Package(CERDIP)、Plastic Metric Quad Flat Pack(MQFP)、Thin Quad Flatpack(TQFP)、Small Outline Integrated Circuit(SOIC)、Shrink Small Outline Package(SSOP)、Thin Small Outline Package(TSOP)、System In Package(SIP)、Multi-Chip Package(MCP)、Wafer-level Fabricated Package(WFP)、Wafer-Level Processed Stack Package(WSP)などの方法でパッケージ化されて実装されてもよい。
図24は図1のメモリシステムの応用例を示すブロック図である。
図24を参照すると、メモリシステム2000は半導体メモリ装置2100及びコントローラ2200を含む。半導体メモリ装置2100は複数の半導体メモリチップを含む。複数の半導体メモリチップは複数のグループに分割される。
図24には、複数のグループがそれぞれ第1~第kチャネルCH1~CHkを介してコントローラ2200と通信することが示されている。各半導体メモリチップは、図2を参照して説明した半導体メモリ装置100と同様に構成され、動作する。
各グループは1つの共通チャネルを介してコントローラ2200と通信するように構成される。コントローラ2200は、図23を参照して説明したコントローラ200と同様に構成され、複数のチャネルCH1~CHkを介して半導体メモリ装置2100の複数のメモリチップを制御するように構成される。
図25は、図24を参照して説明したメモリシステムを含むコンピューティングシステムを示すブロック図である。
コンピューティングシステム3000は、中央処理装置3100、ラム(RAM、Random Access Memory)3200、使用者インターフェース3300、電源3400、システムバス3500、及びメモリシステム2000を含む。
メモリシステム2000は、システムバス3500を介して中央処理装置3100、ラム3200、使用者インターフェース3300、及び電源3400に電気的に接続される。使用者インターフェース3300を介して提供されるか、または中央処理装置3100によって処理されたデータはメモリシステム2000に保存される。
図25には、半導体メモリ装置2100はコントローラ2200を介してシステムバス3500に接続されていることが示されている。しかし、半導体メモリ装置2100はシステムバス3500に直接接続されるように構成されてもよい。このとき、コントローラ2200の機能は中央処理装置3100及びラム3200によって行われる。
図25には、図24を参照して説明したメモリシステム2000が提供されることが示されている。しかし、メモリシステム2000は、図23を参照して説明したコントローラ200及び半導体メモリ装置100を含むメモリシステム1000に置き換えられてもよい。
本明細書と図面に開示された本発明の実施例は、本発明の技術内容を容易に説明し、本発明の理解を助けるために特定の例を提示したに過ぎず、本発明の範囲を限定するものではない。ここに開示する実施例の他にも本発明の技術的思想に基づく他の変形例が実施できることは本発明が属する技術分野で通常の知識を有する者には明かである。
100 半導体メモリ装置
200 コントローラ
300 ホスト
1000 メモリシステム

Claims (17)

  1. 複数の単位データ及びパリティデータを含む原本データストライプが保存された複数のメモリブロックを含む少なくとも1つの半導体メモリ装置と、
    前記半導体メモリ装置の動作を制御するコントローラと、を含むメモリシステムであって、
    前記コントローラは、
    前記半導体メモリ装置から受信する1つ以上の単位データに対するエラー訂正動作を行い、
    前記複数の単位データのうち第1単位データに対する第1エラー訂正失敗及び前記第2単位データに対する第2エラー訂正失敗に応答して、前記複数の単位データのうち前記第1及び第2単位データを除いた残りのデータに基づいて復旧用データを生成することを特徴とするメモリシステム。
  2. 前記パリティデータは前記複数の単位データを排他的論理和(exclusive OR;XOR)演算して生成されたデータであり、
    前記コントローラは、前記原本データストライプに含まれた複数の単位データのうち前記第1及び第2単位データを除いた残りのデータ及び前記パリティデータをXOR演算して前記復旧用データを生成することを特徴とする請求項1に記載のメモリシステム。
  3. 前記コントローラは、
    前記原本データストライプに含まれた前記第1及び第2単位データの何れか1つを前記復旧用データに置き換え、前記第1及び第2単位データのうち残り1つをゼロデータに置き換えて復旧用ストライプを生成し、
    前記ゼロデータは0のビットだけを含むデータであることを特徴とする請求項2に記載のメモリシステム。
  4. 前記コントローラは、前記復旧用ストライプを保存するように前記半導体メモリ装置を制御することを特徴とする請求項3に記載のメモリシステム。
  5. 前記コントローラは、
    前記復旧用データを第1位置にプログラムし、前記ゼロデータを第2位置にプログラムするように前記半導体メモリ装置を制御し、
    前記第1及び第2単位データにマッピングされた物理位置の何れか1つを前記第1位置に再マッピングし、前記物理位置の残り1つを前記第2位置に再マッピングし、
    前記第1位置及び前記第2位置は前記原本データストライプが保存された前記複数のメモリブロックとは異なるメモリブロックに含まれることを特徴とする請求項4に記載のメモリシステム。
  6. 前記コントローラは、前記復旧用ストライプに含まれた第3単位データに対する第3エラー訂正失敗に応答して、前記復旧用ストライプに基づいて前記第3単位データを復旧することを特徴とする請求項5に記載のメモリシステム。
  7. 前記コントローラは、前記復旧用ストライプに含まれた複数の単位データのうち前記第3単位データを除いた残りの単位データ及び前記パリティデータをXOR演算して前記第3単位データを復旧することを特徴とする請求項6に記載のメモリシステム。
  8. 前記コントローラは、
    前記第1エラー訂正失敗に応答して、前記原本データストライプ及び前記第1単位データに関する情報をエラー訂正失敗参照テーブルに登録し、
    前記第2エラー訂正失敗に応答して、前記第2単位データに関する情報を前記エラー訂正失敗参照テーブルに追加することを特徴とする請求項1に記載のメモリシステム。
  9. 複数の単位データ及びパリティデータを含む原本データストライプが保存された複数のメモリブロックを含む少なくとも1つの半導体メモリ装置を制御するコントローラの動作方法であって、
    前記原本データストライプ内の第1及び第2単位データのエラー訂正失敗を検出する段階と、
    前記原本データストライプ内の複数の単位データのうち前記第1及び第2単位データを除いた残りの単位データ及び前記パリティデータに基づいて復旧用データを生成する段階と、を含むことを特徴とするコントローラの動作方法。
  10. 前記原本データストライプ内の第1及び第2単位データのエラー訂正失敗を検出する段階は、
    前記原本データストライプ内の前記第1データに対する第1エラー訂正失敗を検出する段階と、
    前記原本データストライプの第1エラー訂正失敗情報をエラー訂正参照テーブルにアップデートする段階と、
    前記原本データストライプ内の前記第2データに対する第2エラー訂正失敗を検出する段階と、
    前記原本データストライプの第2エラー訂正失敗情報を前記エラー訂正参照テーブルにアップデートする段階と、を含むことを特徴とする請求項9に記載のコントローラの動作方法。
  11. 前記原本データストライプ内の複数の単位データのうち前記第1及び第2単位データを除いた残りの単位データ及び前記パリティデータに基づいて復旧用データを生成する段階は、
    前記残りの単位データ及び前記パリティデータを排他的論理和演算して前記復旧用データを生成する段階を含むことを特徴とする請求項9に記載のコントローラの動作方法。
  12. 前記第1及び第2単位データの何れか1つを前記復旧用データに置き換え、前記第1及び第2単位データのうち残り1つをゼロデータに置き換えて復旧用ストライプを生成する段階をさらに含み、
    前記ゼロデータは0のビットだけを含むデータであることを特徴とする請求項11に記載のコントローラの動作方法。
  13. 前記復旧用ストライプを生成する段階は、
    前記復旧用データを前記少なくとも1つの半導体メモリ装置内の第1位置にプログラムし、前記ゼロデータを前記少なくとも1つの半導体メモリ装置内の第2位置にプログラムするように前記半導体メモリ装置を制御する段階と、
    前記第1及び第2単位データにマッピングされた物理位置の何れか1つを前記第1位置に再マッピングし、前記物理位置の残り1つを前記第2位置に再マッピングする段階と、を含むことを特徴とする請求項12に記載のコントローラの動作方法。
  14. 前記第1位置及び前記第2位置は、前記原本データストライプが保存された前記複数のメモリブロックとは異なるメモリブロックに含まれることを特徴とする請求項13に記載のコントローラの動作方法。
  15. 前記復旧用ストライプ内の第3単位データに対する第3エラー訂正失敗を検出する段階と、
    前記復旧用ストライプに含まれた複数の単位データのうち第3単位データを除いた残りの単位データ及び前記パリティデータに基づいて前記第3単位データを復旧する段階と、をさらに含むことを特徴とする請求項14に記載のコントローラの動作方法。
  16. 前記第3単位データを復旧する段階は、
    前記復旧用ストライプに含まれた複数の単位データのうち第3単位データを除いた残りの単位データ及び前記パリティデータをXOR演算する段階を含むことを特徴とする請求項15に記載のコントローラの動作方法。
  17. メモリシステムであって、
    複数のメモリブロックを含むメモリ装置と、
    コントローラと、を含み、
    前記コントローラは、
    複数の単位データ及び前記単位データと関連するパリティデータを含むデータストライプを前記複数のメモリブロックのそれぞれに書き込み、
    前記複数のメモリブロックから受信した前記複数の単位データに対するエラー訂正動作を行い、
    前記複数の単位データのうち第1単位データに対するエラー訂正失敗が検知されると、前記複数の単位データのうち前記第1単位データを除いた残りのデータを利用して復旧用データを生成し、
    前記複数の単位データのうち第2単位データに対するエラー訂正失敗が検知されると、オールゼロ(all zero)データを生成し、
    前記複数のメモリブロックのうち前記第1及び第2単位データが保存された第1及び第2メモリブロックをそれぞれ選択し、
    前記第1及び第2メモリブロックのデータを第1及び第2フリーブロックにそれぞれ書き込むように構成され、
    前記第1メモリブロックのデータは前記第1単位データの代わりに前記復旧用データを含み、前記第2メモリブロックのデータは前記第2単位データの代わりに前記オールゼロデータを含むことを特徴とするメモリシステム。
JP2021170309A 2020-11-19 2021-10-18 コントローラ及びその動作方法 Pending JP2022081409A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0156048 2020-11-19
KR1020200156048A KR20220068831A (ko) 2020-11-19 2020-11-19 컨트롤러 및 그 동작 방법

Publications (1)

Publication Number Publication Date
JP2022081409A true JP2022081409A (ja) 2022-05-31

Family

ID=81587743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021170309A Pending JP2022081409A (ja) 2020-11-19 2021-10-18 コントローラ及びその動作方法

Country Status (4)

Country Link
US (1) US11531586B2 (ja)
JP (1) JP2022081409A (ja)
KR (1) KR20220068831A (ja)
CN (1) CN114550803A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681706B2 (en) * 2021-07-13 2023-06-20 SK Hynix Inc. System and method for accelerated data search of database storage system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7286572B2 (en) * 2003-01-10 2007-10-23 Sierra Monolithics, Inc. Highly integrated, high-speed, low-power serdes and systems
US20090300282A1 (en) * 2008-05-30 2009-12-03 Promise Technology, Inc. Redundant array of independent disks write recovery system
JP5242264B2 (ja) * 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
KR101062755B1 (ko) * 2009-07-29 2011-09-06 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 메모리 시스템 및 그 제어 방법
US9298549B2 (en) * 2013-12-11 2016-03-29 International Business Machines Corporation Read buffer architecture supporting integrated XOR-reconstructed and read-retry for non-volatile random access memory (NVRAM) systems
KR20150084244A (ko) * 2014-01-13 2015-07-22 삼성전자주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
US9563509B2 (en) * 2014-07-15 2017-02-07 Nimble Storage, Inc. Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
KR102023121B1 (ko) 2014-10-31 2019-11-04 에스케이하이닉스 주식회사 에러를 보정하는 메모리 장치 및 그의 에러 보정 방법
KR102385138B1 (ko) 2015-10-08 2022-04-12 삼성전자주식회사 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치
KR20170075065A (ko) * 2015-12-22 2017-07-03 에스케이하이닉스 주식회사 메모리 시스템 동작 방법
US10802910B2 (en) * 2018-09-17 2020-10-13 Intel Corporation System for identifying and correcting data errors

Also Published As

Publication number Publication date
CN114550803A (zh) 2022-05-27
US20220156145A1 (en) 2022-05-19
US11531586B2 (en) 2022-12-20
KR20220068831A (ko) 2022-05-26

Similar Documents

Publication Publication Date Title
US10635585B2 (en) On-chip copy with data folding in three-dimensional non-volatile memory array
KR102643658B1 (ko) 반도체 메모리 장치 및 그것의 동작 방법
CN110111832B (zh) 半导体存储器装置及其操作方法
KR102375751B1 (ko) 반도체 메모리 장치 및 그 동작 방법
CN109949839B (zh) 存储器控制器及存储器控制器的操作方法
KR102479483B1 (ko) 메모리 시스템 및 이의 동작 방법
KR20190094968A (ko) 메모리 컨트롤러 및 그 동작 방법
CN109979513B (zh) 半导体存储器装置及其操作方法
US20180129559A1 (en) Semiconductor memory device, controller, and operating methods thereof
US20200081775A1 (en) Controller and method of operating the same
JP2022081409A (ja) コントローラ及びその動作方法
KR20190134096A (ko) 반도체 메모리 장치 및 그 동작 방법
US10755798B2 (en) Recovering data from a faulty memory block in a memory system
JP2023001880A (ja) コントローラ及びコントローラの動作方法
US11269556B2 (en) Semiconductor memory device and memory controller having randomizer
US10937511B2 (en) Semiconductor memory device, memory system including controller, and method of operating controller
US11061615B2 (en) Memory system, memory controller and operating method thereof
KR20220113146A (ko) 호스트 및 이에 연결되는 메모리 시스템의 동작 방법
CN112346651A (zh) 用于半导体存储器器件的控制器及其操作方法
US20240184657A1 (en) Storage device for setting operation parameters for random access memory upon power-on and operation
US11321016B2 (en) Method of writing data in memory device, method of reading data from memory device and method of operating memory device including the same
US20240094952A1 (en) System and storage device for executing read command using read recovery level and methods of operation
US20240118998A1 (en) Decoding device for determining whether to decode data unit, and operating method thereof
KR20220075936A (ko) 메모리 시스템 및 그 동작 방법
JP2022142721A (ja) 半導体メモリ装置を制御するコントローラ及びその動作方法