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

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

Info

Publication number
JP2020149123A
JP2020149123A JP2019043956A JP2019043956A JP2020149123A JP 2020149123 A JP2020149123 A JP 2020149123A JP 2019043956 A JP2019043956 A JP 2019043956A JP 2019043956 A JP2019043956 A JP 2019043956A JP 2020149123 A JP2020149123 A JP 2020149123A
Authority
JP
Japan
Prior art keywords
read
memory
volatile memory
command
data
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
JP2019043956A
Other languages
English (en)
Inventor
健彦 天木
Takehiko Amagi
健彦 天木
小島 慶久
Yoshihisa Kojima
慶久 小島
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 JP2019043956A priority Critical patent/JP2020149123A/ja
Priority to US16/751,262 priority patent/US11526301B2/en
Publication of JP2020149123A publication Critical patent/JP2020149123A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】一つの実施形態は、不揮発性メモリのリード動作の信頼性を適切に確保できるメモリシステム、及びメモリシステムの制御方法を提供することを目的とする。【解決手段】一つの実施形態によれば、不揮発性メモリとコントローラとを有するメモリシステムが提供される。コントローラは、複数のリード方式から1つのリード方式を選択する。複数のリード方式は、不揮発性メモリのリード動作に要する時間が互いに異なるリード方式である。コントローラは、選択された1つのリード方式に従った第1のリードコマンドを不揮発性メモリに発行する。【選択図】図4

Description

本実施形態は、メモリシステム、及びメモリシステムの制御方法に関する。
NAND型フラッシュメモリなどの不揮発性メモリを有するメモリシステムでは、不揮発性メモリにおけるメモリセルへのデータの書き込み処理/消去処理は、チャネル領域及びコントロールゲート間に高電圧を印加することにより、電荷蓄積膜に電子を注入/放出させる。メモリセルへのデータの書き込み処理/消去処理を多数回行うと、電荷蓄積膜周りの絶縁膜が劣化し得る。このとき、不揮発性メモリのリード動作の信頼性を適切に確保することが望まれる。
米国特許出願公開第2012/0166913号明細書 米国特許出願公開第2012/0182813号明細書 特開2010−539631号公報
一つの実施形態は、不揮発性メモリのリード動作の信頼性を適切に確保できるメモリシステム、及びメモリシステムの制御方法を提供することを目的とする。
一つの実施形態によれば、不揮発性メモリとコントローラとを有するメモリシステムが提供される。コントローラは、複数のリード方式から1つのリード方式を選択する。複数のリード方式は、不揮発性メモリのリード動作に要する時間が互いに異なるリード方式である。コントローラは、選択された1つのリード方式に従った第1のリードコマンドを不揮発性メモリに発行する。
図1は、実施形態に係るメモリシステムの構成を示す図である。 図2は、実施形態における不揮発性メモリのデータの管理単位を示す図である。 図3は、実施形態における物理ブロックの構成を示す回路図である。 図4は、実施形態に係るメモリシステムの概略動作を示すフローチャートである。 図5は、実施形態における複数のリード方式の特性を示す図である。 図6は、実施形態に係るメモリシステムの詳細動作(検査リード処理の実装例)を示すフローチャートである。 図7は、実施形態に係るメモリシステムの詳細動作(検査リード処理の実装例)を示すデータフロー図である。 図8は、実施形態における疲弊情報のデータ構造を示す図である。 図9は、実施形態に係るメモリシステムの詳細動作(リード方式の選択の実装例)を示すフローチャートである。 図10は、実施形態に係るメモリシステムの詳細動作(リード方式の選択の実装例)を示すデータフロー図である。 図11は、実施形態の変形例に係るメモリシステムの詳細動作(検査リード処理の他の実装例)を示すフローチャートである。 図12は、実施形態の変形例に係るメモリシステムの詳細動作(検査リード処理の他の実装例)を示すデータフロー図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
実施形態にかかるメモリシステムは、NAND型フラッシュメモリなどの不揮発性メモリを有する。不揮発性メモリは、複数のメモリセルを有する。このメモリシステムでは、不揮発性メモリにおけるメモリセルへのデータの書き込み処理/消去処理は、チャネル領域及びコントロールゲート間に高電圧を印加することにより、電荷蓄積膜に電子を注入/放出させる。メモリセルへのデータの書き込み処理/消去処理を多数回行うと、電荷蓄積膜周りの絶縁膜が劣化し得る。このとき、不揮発性メモリのリード動作の信頼性を適切に確保することが望まれる。
リード動作の方式には、リード動作に要する時間が互いに異なる複数のリード方式がある。複数のリード方式では、そのパフォーマンスと信頼性との間にトレードオフの関係がある。例えば、複数のリード方式では、リード動作に要するリード時間tReadが長いリード方式ほど、ビットエラーレートBERが低くなる傾向にある。このため、現在の疲弊状態に応じて要求される信頼性に対して、過度に信頼性の高いリード方式を選択すると、不必要なパフォーマンスの低下(例えば、リード時間tReadの長時間化)をもたらし、パフォーマンスの観点からリード性能が低下する可能性がある。また、パフォーマンスを過度に高める(例えば、リード時間tReadの短いリード方式を選択する)と、現在の疲弊状態に応じて要求される信頼性より信頼性の低いリード方式を選択することになり、リード動作の信頼性が低下し、信頼性の観点からリード性能が低下する可能性がある。
このとき、不揮発性メモリにおける複数の管理単位のそれぞれについて、書き込み/消去の累積回数に応じて各メモリセルの疲弊状態を大雑把に推測して、複数のリード方式を使い分けることが考えられる。この場合、推測結果が実際の各メモリセルの疲弊状態と乖離している場合、適切なリード方式を選択することが困難になり、リード動作の信頼性を適切に確保することが困難になる可能性がある。
そこで、本実施形態では、メモリシステムにおいて、コントローラが、検査のためのリードコマンドを不揮発性メモリに実行させ、その結果に応じてリード方式を選択し、本来のリード処理のためのリードコマンドをその選択されたリード方式で不揮発性メモリに発行することで、リード動作の信頼性を適切に確保することを目指す。
具体的には、コントローラは、本来のリード処理を行う前に、検査のためのリードコマンドとして、疲弊状態を検査するための検査リードコマンドを不揮発性メモリに発行する。検査リードコマンドは、不揮発性メモリにおける本来のリード処理が行われる可能性のある領域に対して行われる。
このとき、不揮発性メモリにおける各メモリセルは、主として、書き込み回数に関連したストレスと書き込み後の経過時間に関連したストレスとにより、その疲弊状態が変化し得る。ブロックごとに検査の条件を揃えるために、コントローラは、書き込みが完了した所定の単位(例えば、ワードライン単位、ブロック単位)へのライト動作が完了してから所定時間以内(例えば、数十分以内〜数時間以内など)に、検査リードコマンドを発行する。
これにより、実質的に、書き込み後の経過時間に関連したストレスを排除して、書き込み回数に関連したストレスによる検査を行うことができ、不揮発性メモリにおけるデータの消去単位である物理ブロック(ブロック)ごとに効果的に検査を行うことができる。すなわち、ブロックごとに、検査の条件を揃えることができ、検査リードコマンドによる代表のメモリセルの検査結果を他のメモリセルに使い回すことができるため、検査リードコマンドの発生頻度を抑えつつ効果的に検査を行うことができる。
また、書き込み回数に応じたストレスの受け方がブロックごとにばらついている場合に、検査リードコマンドを発行してそのリードデータの信頼性を示す特性(例えば、リトライ率、不良ビット数など)を見ることで、信頼性を示す特性を推測する場合に比べて、より正確にメモリセルの疲弊状態を把握できる。これにより、メモリセルの実際の疲弊状態に応じたより適切なリード方式を選択することができ、パフォーマンス向上と信頼性向上とを容易に両立でき、パフォーマンス及び信頼性の両方の観点から総合的にリード性能を向上できる。すなわち、リード動作の信頼性を適切に確保できる。
なお、書き込み回数に関連したストレスは、例えば、PD(Program Disturb)を含む。
PDとは、ライト処理時に発生するストレスを示す情報であり、例えば、該当の物理アドレスで指定されるページを含むブロックに対するデータの書き込みが完了しているか否かを示す情報を含む。ブロックに対する書込みが途中である場合、当該ブロックの例えば最終書込みページ付近からのデータの読出しの信頼性が低下する場合がある。なお、PDには、リード対象のページを含むブロック全体の書込み状態に代えて、リード対象のワードラインに隣接する1つ以上のワードラインの書込み状態が用いられてもよい。
また、書き込み後の経過時間に関連したストレスは、例えば、DR(Data Retention)、RD(Read Disturb)、TempX(Temperature Crossover)を含む。
DRとは、データ保持特性を示す情報であり、例えば、該当の物理アドレスに対してデータの書込みを実行してからデータを保持している経過時間を含む。なお、経過時間は、実時間であってもよいし、温度やメモリセルの疲弊度を考慮して実時間を変換することで得られた値であってもよい。たとえば、放置状態における温度が高いほうが正味の経過時間(放置によるストレス量を考慮して実時間から変換された経過時間)は長く、また、メモリセルの疲弊度が大きいほうが正味の経過時間は長い(すなわち、放置によるストレス量が大きい)。
RDとは、リード処理時に発生するストレスを示す情報であり、例えば、該当の物理アドレスで指定されるページを含むブロックに対して該当データを書き込んだ後に実行された読出し回数を含む。
TempXとは、温度ストレスを示す情報であり、例えば、読出し対象のデータを書き込んだ際の温度と後述の温度センサ25で検出された現在又は最新の温度との差(温度交差)を示す情報を含む。
メモリシステム1は、図1に示すように構成され得る。図1は、メモリシステム1の構成を示す図である。
メモリシステム1は、不揮発性メモリ20、メモリコントローラ10、及びバッファメモリ19を有する。メモリシステム1は、ホスト装置30と接続可能であり、図1ではホスト装置30と接続された状態が示されている。ホスト装置30は、例えば、パーソナルコンピュータ、サーバ装置、携帯端末などの電子機器、デジタルスチルカメラ等であってよい。
メモリシステム1は、いわゆるSSD(Solid State Drive)や、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等、不揮発性メモリ20を備える種々のメモリシステムであってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)等のNANDメモリ以外の記憶媒体を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリコントローラ10は、例えばSoC(System−on−a−Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
メモリコントローラ10は、メモリバス18によって不揮発性メモリ20に接続され、ホストバス31によってホスト装置30に接続される。メモリコントローラ10は、ホスト装置30からのホストライトコマンドに従って不揮発性メモリ20へのライト処理を制御する。また、ホスト装置30からのホストリードコマンドに従って不揮発性メモリ20からのリード処理を制御する。ホストバス31の準拠する規格としては、たとえば、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCIe(登録商標)(Peripheral Component Interconnect express)(NVM express(登録商標)を含む)など、任意の規格が採用可能である。
メモリバス18は、メモリコントローラ10と不揮発性メモリ20とを結ぶメモリインタフェースに従った信号の送受信を行う。メモリインタフェースがいわゆるNANDインタフェースである場合、この信号の具体例には、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn、入出力信号I/O等が含まれ得る。
信号CEnは、不揮発性メモリ20をイネーブルにするための信号である。信号CLEは、不揮発性メモリ20への入力信号I/Oがコマンドであることを不揮発性メモリ20に通知する信号である。信号ALEは、不揮発性メモリ20への入力信号I/Oがアドレスであることを不揮発性メモリ20に通知する信号である。信号WEnは入力信号I/Oを不揮発性メモリ20に取り込ませるための信号である。信号REnは、不揮発性メモリ20から出力信号I/Oを読み出すための信号である。レディ・ビジー信号RBnは、不揮発性メモリ20がレディ状態(メモリコントローラ10からのコマンドを受信できる状態)であるか、それともビジー状態(メモリコントローラ10からのコマンドを受信できない状態)であるかを示す信号である。入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、不揮発性メモリ20とメモリコントローラ10との間で送受信されるデータの実体であり、コマンド、アドレス、ライトデータ(書込み対象のデータ)、リードデータ(読み出されたデータ)等である。
また、不揮発性メモリ20からメモリコントローラ10へは、不揮発性メモリ20の温度を検出する温度センサ25で検出された温度を示す信号TEMPも入力される。この温度センサ25は、図1に示すように、不揮発性メモリ20内に設けられてもよいし、不揮発性メモリ20の外部に設けられた独立した部品であってもよい。また、温度センサ25から出力された信号TEMPが伝播する信号線は、メモリバス18に含まれていてもよいし、メモリバス18とは別の独立した信号線であってもよい。
メモリコントローラ10は、ホストインタフェース(ホストI/F)15、制御部11、バッファインタフェース(バッファI/F)12、RAM(Random Access Memory)14、メモリインタフェース(メモリI/F)16、及びECC部13を有する。ホストI/F15、制御部11、バッファI/F12、RAM14、メモリI/F16、及びECC部13は、内部バス17によって互いに接続されている。
ホストI/F15は、ホストバス31を介してホスト装置30と接続され、ホスト装置30から受信したコマンド及びデータを、それぞれ制御部11及びRAM14に転送する。また、ホストI/F15は、制御部11からの要求に応答して、RAM14内のデータをホスト装置30へ転送する。
制御部11は、例えばCPU(Central Processing Unit)などで構成され、メモリコントローラ10各部の動作を統括的に制御する。例えば、制御部11は、ホスト装置30からホストライトコマンドを受信した際には、それに応答して、メモリI/F16に対してライトコマンドを発行する。リードの際も同様に、ホスト装置30からホストリードコマンドを受信した際には、それに応答して、メモリI/F16に対してリードコマンドを発行する。一方、消去(イレース)の場合には、例えば制御部11がガベージコレクション(コンパクションとも呼ばれる)などの処理の一環として、メモリI/F16に対してイレースコマンドを発行する。また、制御部11は、ガベージコレクションの他にも、ウェアレベリング、リフレッシュ、パトロールリード等、不揮発性メモリ20を管理するための様々な処理の実行を制御する。
制御部11は、ホスト30からのホストコマンドをホストI/F15経由で受け付けた場合に、そのホストコマンドに応じた制御を行う。例えば、制御部11は、ホスト30からのホストライトコマンドに応じて、不揮発性メモリ20へのデータのライト処理をメモリI/F16へ指示する。また、制御部11は、ホスト30からのホストリードコマンドに応じて、不揮発性メモリ20からのデータのリード処理をメモリI/F16へ指示する。
また、制御部11は、ホスト30からホストライトコマンドを受信した場合、バッファメモリ19内のデータバッファに蓄積されるユーザデータに対して、不揮発性メモリ20上の格納領域を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応は、アドレス変換情報LUTで管理される。アドレス変換情報LUTは、ルックアップテーブル(Look Up Table)とも呼ばれ得る。このアドレス変換情報LUTは、例えば不揮発性メモリ20内に格納されており、必要に応じて読み出されてRAM14及び/又はバッファメモリ19等にキャッシュされる。また、アドレス変換情報LUTは、ホスト装置30からのコマンドによる不揮発性メモリ20へのアクセス(例えば、ホストライト)が行われる度に更新され得る。
また、制御部11は、ホスト30からホストリードコマンドを受信した場合、ホストリードコマンドにより指定された論理アドレスを上述のアドレス変換情報LUTを用いて物理アドレスに変換し、該物理アドレスからの読出しをメモリI/F16へ指示する。
メモリI/F16は、メモリバス18を介して不揮発性メモリ20と接続され、不揮発性メモリ20との通信を制御する。メモリI/F16は、制御部11から受信したコマンドに基づき、信号ALE、信号CLE、信号WEn、及び信号REnを不揮発性メモリ20へ出力する。また、ライト処理時には、制御部11で発行されたライトコマンド、及びバッファメモリ19内のデータバッファ内のライトデータを、入出力信号I/Oとして不揮発性メモリ20へ転送する。メモリI/F16は、リード処理時には、制御部11で発行されたリードコマンドを、入出力信号I/Oとして不揮発性メモリ20へ転送する。また、メモリI/F16は、不揮発性メモリ20から読み出されたデータを入出力信号I/Oとして受信し、これをバッファメモリ19内のデータバッファへ転送する。
バッファメモリ19は、ライトデータまたはリードデータを一時的に保持するメモリ領域として機能する。バッファメモリ19は、RAM14に比べてメモリ容量が大きい。バッファメモリ19は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等で構成され得る。
バッファI/F12は、メモリコントローラ10からバッファメモリ19へのアクセスを制御するコントローラであり、例えばDDR(Double Data Rate)でのバッファメモリ19へのアクセスを可能とするコントローラである。
RAM14は、アドレス変換情報LUTや、メモリシステム1の起動時等に不揮発性メモリ20の特定の領域から読み出されて展開される各種管理テーブルなどのマスタテーブル(すなわち、スナップショット)や、各種管理テーブルの変更差分であるログ情報などを記憶するワーキングメモリとして使用することができるメモリである。また、RAM14は、ホスト30と不揮発性メモリ20との間でデータ転送をする際のキャッシュメモリとしても用いられることが可能である。RAM14は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等で構成され得る。
ECC部13は、リードデータにおける誤り検出及び誤り訂正のために、データの符号化および復号を行う。具体的には、ECC部13は、不揮発性メモリ20に書き込まれるデータ(ライトデータ)を符号化する。また、ECC部13は、不揮発性メモリ20から読み出されたデータ(リードデータ)を復号する。ECC部13は、復号によって、リードデータにおける誤り検出及び誤り訂正を実行する。ECC部13は、誤り訂正に失敗した場合には、誤り訂正の失敗を制御部11に通知する。ECC部13による符号化および復号のアルゴリズムには、RS(リード・ソロモン)符号やBCH(Bose−Chaudhuri−Hocquenghem)符号や低密度パリティ検査(LDPC)符号等を用いた任意のアルゴリズムを適用することが可能である。
例えば、ライト処理時において、ECC部13は、制御部11による制御のもと、ライトコマンドで不揮発性メモリ20にライトすべきユーザデータを受け、ユーザデータに基づいてパリティを生成し、パリティをユーザデータに付してライトデータとする。不揮発性メモリ20には、パリティを含むライトデータが、符号化データとして書き込まれる。
リード処理時において、ECC部13は、制御部11による制御のもと、リードコマンドで不揮発性メモリ20からリードされたリードデータを受け、リードデータからパリティを抽出し、パリティに基づきシンドロームを生成し、ユーザデータ内のエラービットの有無を判断する。ECC部13は、ユーザデータにエラービットが含まれる場合、エラービットの位置を特定する。ECC部13において訂正可能なエラービットの数は、例えばパリティのビット数等によって決まる。訂正可能なエラービットの数以下のエラービットがユーザデータに含まれる場合、ECC部13は、そのエラービットを訂正し、訂正成功の旨を制御部11へ通知する。訂正可能なエラービットの数を超える数のエラービットがユーザデータに含まれる場合には、ECC部13は、誤り訂正ができない(uncorrectable)として、訂正失敗の旨を制御部11へ通知する。
不揮発性メモリ20は、コマンド処理部21、駆動部22、メモリセルアレイ23、カラムモジュール24、及び、温度センサ25を有する。コマンド処理部21は、シーケンサ211、コマンドレジスタ(CMDレジスタ)212、アドレスレジスタ(ADDレジスタ)213を含む。駆動部22は、ドライバ回路221及びロウデコーダ(R/D)222を含む。
メモリセルアレイ23は、複数のメモリセル(複数のメモリセルトランジスタMT)を有する。各メモリセルは、ロウ及びカラムに対応付けられている。メモリセルアレイ23は、メモリコントローラ10から与えられたデータを記憶する。
ロウデコーダ222は、アクセス対象のブロックを選択し、更に選択したブロックにおけるロウ方向を選択する。
ドライバ回路221は、選択されたブロックに対して、ロウデコーダ222を介して電圧を供給する。
カラムモジュール24は、たとえばセンスアンプと複数のラッチ回路よりなるデータラッチとを含んで構成される。このカラムモジュール24は、ライト動作においては、メモリコントローラ10から受信したライトデータDATをメモリセルアレイ23に転送する。また、カラムモジュール24は、リード動作においては、メモリセルアレイ23から読み出されたデータをセンスし、必要な演算を行う。そして、カラムモジュール24は、得られたデータDATをメモリコントローラ10に出力する。
アドレスレジスタ213は、メモリコントローラ10から受信したアドレスADDを保持する。コマンドレジスタ212は、メモリコントローラ10から受信したコマンドCMDを保持する。
シーケンサ211は、コマンドレジスタ212に保持されたコマンドCMDに基づき、不揮発性メモリ20全体の動作を制御する。
温度センサ25は、常時、定期的又は必要に応じて、メモリセルアレイ23周辺の温度を検出し、検出された温度を示す信号TEMPをメモリコントローラ10へ出力する。
次に、不揮発性メモリ20におけるデータの管理単位について図2を用いて説明する。図2は、不揮発性メモリ20におけるデータの管理単位を示す図である。
不揮発性メモリ20(図1参照)は、複数のメモリチップで構成され得る。各メモリチップはメモリセルアレイを有する。メモリセルアレイ23(図1参照)は、各メモリチップのメモリセルアレイの集合体として構成され得る。各メモリチップのメモリセルアレイでは、一括してデータの書き込みおよび読み出しのアクセスが可能な単位が物理ページである。複数の物理ページから構成され、独立してデータの消去が可能な最小のアクセス単位が物理ブロックである。また、図2に示す例では、8つのチャネルch0〜ch7にメモリチップが接続されている場合が例示されている。コントローラ2は、各チャネルch0〜ch7を互いに並列して制御することが可能である。さらにコントローラ2は、各チャネルch0〜ch7について、例えば1チャネルあたり2並列のバンクインタリーブにより、複数の並列動作を行うことが可能である。これにより、並列にほぼ一括して書き込み/読み出しが可能な16個の物理ページでデータ記録領域となる1論理ページを構成でき、並列にほぼ一括して消去可能な16個の物理ブロックで1論理ブロックを構成することができる。ガベージコレクション(コンパクション)は、この1論理ブロックの単位で行われ得る。
また、1物理ページよりも小さい単位のデータ管理単位であるクラスタで、制御部11により、不揮発性メモリ20内でのデータが管理されるものとする。クラスタサイズは、ホスト装置30からの最小アクセス単位であるセクタのサイズ以上であり、クラスタサイズの自然数倍が物理ページサイズとなるように定められる。例えば、1物理ページは4クラスタで構成され、1論理ページは64クラスタで構成され得る。
なお、不揮発性メモリ20へアクセスするための論理アドレス及び物理アドレス間の変換に用いられるアドレス変換情報LUTでは、論理アドレスと物理アドレスとが対応付けされている。論理アドレスは、例えば、LBA(Logical Block Address)とすることができる。物理アドレスは、論理ブロックの識別情報(例えば、論理ブロック番号)とクラスタの識別情報(例えば、論理ページ番号+論理クラスタ番号)との組み合わせとすることができる。論理クラスタ番号は、論理ページ内におけるクラスタの位置を示す(図2参照)。
各メモリチップのメモリセルアレイにおける各物理ブロックは、例えば、図3に示すように構成される。図3は、物理ブロックBLKの構成を示す図である。
各物理ブロックBLKは、複数のストリングユニットSU0〜SU3を有する。複数のストリングユニットSU0〜SU3は、複数の選択ゲートラインSGDL0〜SGDL3に対応しているとともに選択ゲートラインSGSLを共有している。各ストリングユニットSU0〜SU3は、物理ブロックBLKにおける駆動単位として機能する。各ストリングユニットSU0〜SU3は、複数の選択ゲートラインSGDL0〜SGDL3のうちその対応する選択ゲートラインと選択ゲートラインSGSLとで駆動され得る。また、各ストリングユニットSU0〜SU3は、複数のメモリストリングMSTを含む。
各メモリストリングMSTは、例えば64個のメモリセルトランジスタMT(MT0〜MT63)および選択トランジスタSDT,SSTを含んでいる。メモリセルトランジスタMTは、コントロールゲートと電荷蓄積膜とを有し、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0〜MT63)は、選択トランジスタSDTのソースと選択トランジスタSSTのドレインとの間に直列接続されている。なお、メモリストリングMST内のメモリセルトランジスタMTの個数は64個に限定されない。
ワードラインWL0〜WL63(各ワードラインを区別しない場合には、WLで示すことにする)は、物理ブロックBLK内の各ストリングユニットSU内の各メモリストリングMST間で、メモリセルトランジスタMTのコントロールゲートを共通に接続している。つまり、物理ブロックBLK内の各ストリングユニットSU内において同一行にあるメモリセルトランジスタMTのコントロールゲートは、同一のワードラインWLに接続される。すなわち、物理ブロックBLKのストリングユニットSUは複数のワードラインWLに対応した複数のメモリセルグループMCGを含み、各メモリセルグループMCGは同一のワードラインWLに接続される(p+1)個のメモリセルトランジスタMTを含む。各メモリセルトランジスタMTに1ビットの値を保持可能に構成される場合(シングルレベルセル(SLC)モードで動作する場合)には、同一のワードラインWLに接続される(p+1)個のメモリセルトランジスタMT(すなわち、メモリグループMCG)は1つの物理ページとして取り扱われ、この物理ページごとにデータのライト動作及びデータのリード動作が行われる。
各メモリセルトランジスタMTに複数ビットの値を保持可能に構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットの値を記憶可能な場合、ワードラインWL当たりの記憶容量はn個の物理ページ分のサイズに等しくなる。すなわち、各メモリセルグループMCGは、n個の物理ページとして取り扱われる。例えば、各メモリセルトランジスタMTが2ビットの値の記憶を行うマルチレベルセル(MLC)モードでは、各ワードラインWLに2個の物理ページ分のデータが保持される。あるいは、各メモリセルトランジスタMTが3ビットの値の記憶を行うトリプルレベルセル(TLC)モードでは、各ワードラインWLに3個の物理ページ分のデータが保持される。
次に、メモリシステム1の概略動作について図4を用いて説明する。図4は、メモリシステム1の概略動作を示すフローチャートである。
メモリシステム1において、メモリコントローラ10は、検査リードコマンドを実行すべきことを示す実行条件が満たされると、検査リード処理を行う(ST1)。実行条件の詳細については、後述する。検査リード処理では、メモリシステム1は、所定の領域に対して、所定のリード方式に従った検査リードコマンドを不揮発性メモリ20に発行する。
所定の領域は、物理ブロックにおける全クラスタにデータを書き上げた場合における物理ブロック全面の領域であってもよいし、所定のワードラインWLにデータを書き上げた場合におけるその書き上げ済のワードラインWLに近接したワードラインWLの領域であってもよい。データは、ホストライトコマンドに応じて書かれたものであっても、ガベージコレクション(コンパクション)に応じて書かれたものであってもよい。所定のリード方式は、前回の検査リードコマンドの実行結果に応じて選択されたリード方式(例えば、図5に示すFastRead、NormalRead、DLAread(Dynamic Look Ahead READ)のいずれか)であってもよい。
メモリコントローラ10は、検査リードコマンドの応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行い、リードデータの誤り訂正に関する情報を取得する。誤り訂正は、ECC(Error Check and Correction)訂正とも呼ばれる。
リードデータの誤り訂正に関する情報は、リードデータの誤り訂正で検出されたビットエラー率と不揮発性メモリ20におけるリード動作のリトライ率との少なくとも一方を含む。ビットエラー率とは、1ビットあたりのエラー発生確率であり、ECC部13で検出されたユーザデータのエラービット数を全ビット数で割って求められ得る。ビットエラー率は、BER(Bit Error Rate)とも呼ばれる。エラービット数は、FBC(Fail Bit Count)とも呼ばれる。リトライ率は、ECC部13での訂正失敗(uncorrectable)に応じたリトライリードの発生確率であり、リトライリードの発生回数を初段リード処理の実行回数で割って求められ得る。
メモリコントローラ10は、検査リードコマンドのリードデータの誤り訂正に関する情報に応じて、初段リード処理に適用すべきリード方式として、複数のリード方式から1つのリード方式を選択する(ST2)。複数のリード方式は、不揮発性メモリ20のリード動作に要するリード時間tReadが互いに異なる複数のリード方式を含み、例えば、図5に示す複数のリード方式を含む。図5は、複数のリード方式の特性を示す図である。
初段リード処理に適用する候補となる複数のリード方式は、例えば、FastRead、NormalRead、DLAreadを含む。
NormalReadは、リード時にワードラインに印加するリード電圧(リードレベルともいう)の値を所定の基準値とする通常のリード動作である。
FastReadは、NormalReadよりもリードレベルの印加時間等を短くすることでリード時間を短縮したリード動作である。
DLAreadは、リード対象のメモリセルから読み出した値とワードラインの配列方向に位置する隣接メモリセル又は隣接ワードラインに位置する隣接メモリセルから読み出した値とに基づいて、リードレベルを選択又は補正するリード動作である。
メモリセルへのデータの書き込み処理/消去処理の回数(P/Eサイクル数)が同一である場合において、FastRead、NormalRead、DLAreadでは、それぞれ、リード時間tReadをT1,T2,T3とすると、次の数式1の関係が成り立つ。リード時間tReadは、短いほど、パフォーマンスの観点で望ましい。
T1<T2<T3・・・数式1
数式1に示されるように、パフォーマンスの観点からは、FastRead、NormalRead、DLAreadの順に優先して、リード方式を選択すべきだと考えられる。
一方、メモリセルへのデータの書き込み処理/消去処理の回数が同一である場合において、FastRead、NormalRead、DLAreadでは、それぞれ、誤り訂正で検出される平均的なBERをER1,ER2,ER3とすると、次の数式2の関係が成り立つ。BERは、小さいほど、信頼性の観点で望ましい。
ER1>ER2>ER3・・・数式2
また、メモリセルへのデータの書き込み処理/消去処理の回数が同一である場合において、FastRead、NormalRead、DLAreadでは、それぞれ、リード動作で発生する平均的なリトライ率をRR1,RR2,RR3とすると、次の数式3の関係が成り立つ。リトライ率は、小さいほど、信頼性の観点で望ましい。
RR1>RR2>RR3・・・数式3
数式2又は数式3に示されるように、信頼性の観点からは、DLAread、NormalRead、FastReadの順に優先して、リード方式を選択すべきだと考えられる。
なお、BERとリトライ率とを比較すると、BERが、誤り訂正で訂正失敗及び訂正成功となった両方のビットエラーに対応する情報であるのに対して、リトライ率は、誤り訂正で訂正失敗となった方のビットエラーに対応する情報である点で異なる。そのため、BERの方が信頼性を示す情報として精度が高いがより計算時間がかかるため、精度を重視する場合にBERを用い、計算時間短縮を重視する場合にリトライ率を用いるという使い分けが可能である。
パフォーマンスの低下を抑制しながら要求される信頼性を満たすことを考えた場合、信頼性を示す情報に対して閾値を設けて現在の信頼性のレベルを判定することが考えられる。例えば、BERについて、次の数式4に示す関係にある複数の閾値ERth1,ERth2を設けてもよい。
ERth1<ERth2・・・数式4
また、リトライ率について、次の数式5に示す関係にある複数の閾値RRth1,RRth2を設けてもよい。
RRth1<RRth2・・・数式5
例えば、初段リードに適用するリード方式として、メモリシステム1は、BER(ビットエラー率)がERth1未満であれば、FastReadを選択し、BERがERth1以上ERth2未満であればNormalReadを選択し、BERがERth2以上であれば、DLAreadを選択する。
あるいは、例えば、初段リードに適用するリード方式として、メモリシステム1は、リトライ率がRRth1未満であれば、FastReadを選択し、リトライ率がRRth1以上RRth2未満であればNormalReadを選択し、リトライ率がRRth2以上であれば、DLAreadを選択する。
なお、数式4及び数式5に示す各閾値の値は、メモリシステム1に要求される仕様に応じて、予め実験的に決定され、設定され得る。
図4に戻って、メモリコントローラ10は、初段リード処理を行う(ST3)。すなわち、メモリコントローラ10は、ST2で選択された1つのリード方式に従ったリードコマンドを不揮発性メモリ20に発行する。例えば、メモリコントローラ10は、ホスト装置30からのホストリードコマンドに応じて、ST2で選択された1つのリード方式に従ったリードコマンドを不揮発性メモリ20に発行する。
メモリコントローラ10は、ST3で発行したリードコマンドの応答として、リードデータを不揮発性メモリ20から受けると、リードデータについて誤り訂正を行う(ST4)。メモリコントローラ10は、誤り訂正に成功した場合(ST5でYes)、処理を終了する。
メモリコントローラ10は、誤り訂正に失敗した場合(ST5でNo)、リトライリード処理を行う(ST6)。すなわち、メモリコントローラ10は、リード方式をより信頼性の高い方式に変更して、変更後のリード方式に従ったリードコマンドを不揮発性メモリ20に発行する。リトライリード処理に適用すべきリード方式は、初段リード処理に適用したリード方式より信頼性の高い任意の方式が適用可能であり、例えば、図5に示すVthTrackingを含む。
VthTrackingは、リードレベルを所定の刻み幅でシフトしながらシングルレベルリードを複数回実行することで、該当ページに含まれる複数のメモリセルにプログラムされた閾値電圧の分布のヒストグラム(閾値電圧分布)を生成し、生成した閾値電圧分布に基づいて補正したリードレベルを用いて読出しを実行するリード動作である。VthTrackingは、トラッキングリードとも呼ばれる。なお、VthTrackingには、メモリコントローラ10からの制御に従って実行されるリード方式と、メモリコントローラ10からの制御に依らずに不揮発性メモリ20内で実行されるリード方式とが存在するが、本実施形態では何れのリード方式であってもよい。
メモリセルへのデータの書き込み処理/消去処理の回数が同一である場合において、FastRead、NormalRead、DLAread、VthTrackingでは、それぞれ、リード時間tReadをT1,T2,T3,T4とすると、次の数式6の関係が成り立つ。
T1<T2<T3<<T4・・・数式6
数式6に示されるように、VthTrackingは、大幅なパフォーマンスの低下が発生し得ることから、初段リード処理には適さないリード方式であると考えられる。
なお、メモリセルへのデータの書き込み処理/消去処理の回数が同一である場合において、FastRead、NormalRead、DLAread、VthTrackingは、それぞれ、誤り訂正で検出される平均的なBERをER1,ER2,ER3,ER4とすると、次の数式7の関係が成り立つ。
ER1>ER2>ER3>ER4・・・数式7
また、メモリセルへのデータの書き込み処理/消去処理の回数が同一である場合において、FastRead、NormalRead、DLAread、VthTrackingは、それぞれ、リード動作で発生する平均的なリトライ率をRR1,RR2,RR3,RR4とすると、次の数式8の関係が成り立つ。
RR1>RR2>RR3>RR4・・・数式8
図4に戻って、メモリコントローラ10は、ST6で発行したリードコマンドの応答として、リードデータを不揮発性メモリ20から受けると、リードデータについて誤り訂正を行う(ST7)。メモリコントローラ10は、誤り訂正に成功した場合(ST8でYes)、処理を終了する。
メモリコントローラ10は、誤り訂正に失敗した場合(ST8でNo)、リトライリード処理の実行回数が所定回数に達するまで(ST9でNo)、リード方式をより信頼性の高い方式に変更しながら、ST6〜ST8を繰り返す。所定回数は、メモリシステム1に要求される仕様に応じて、予め実験的に決定され、設定され得る。メモリコントローラ10は、リトライリード処理の実行回数が所定回数に達すると(ST9でYes)、ホストリードコマンドに対する応答としてリードエラーをホスト装置30に返すリードエラー処理(ST10)を行い、処理を終了する。
次に、検査リード処理(ST1)の具体的な実装例について図6及び図7を用いて説明する。図6は、メモリシステム1の詳細動作(検査リード処理の実装例)を示すフローチャートである。図7は、メモリシステムの詳細動作(検査リード処理の実装例)を示すデータフロー図である。図6及び図7では、Program処理から、検査リード処理を経て、疲弊情報の蓄積とアドレス変換情報LUTの更新までの処理について例示している。
図6に示すように、メモリシステム1において、メモリコントローラ10は、Program処理を開始する(ST11)。
例えば、図7に示すように、メモリコントローラ10は、機能的な構成として、Program処理部10a、Programコマンド処理部10b、検査リード処理部10c、Readコマンド処理部10d、LUT管理部10e、ホストリード処理部10f、疲弊情報解析部10g、内部リード管理部10hを有する。なお、メモリコントローラ10は、前述のように、例えばSoC(System−on−a−Chip)を含むコントローラパッケージとして実装され得る。図7に示す機能的な構成は、コントローラパッケージにおいてハードウェア的に(例えば、回路として)実装されていてもよい。あるいは、図7に示す各機能は、コントローラパッケージにおいてソフトウェア的に(例えば、バッファメモリ26等に一括して又は処理の進行に応じて順次に展開されるファームウェアを、制御部11が実行することによって)実現されていてもよい。あるいは、図7に示す各機能は、コントローラパッケージにおいて、一部の機能がハードウェアによって実現され、残りの機能がソフトウェア的に実現されていてもよい。また、RAM14には、疲弊情報が保存されるための領域として、疲弊情報保存領域14aが予め確保され得る。
Program処理部10aは、Program要求をProgramコマンド処理部10bへ供給する(SQ1)。Programコマンド処理部10bは、Program要求に応じて、Programコマンド(ライトコマンド)を不揮発性メモリ20へ発行する(SQ2)。なお、Programコマンド処理部10bは、ECC encoderを含み、ユーザデータにパリティが付加されて符号化されたライトデータを含むProgramコマンドを不揮発性メモリ20へ発行し得る。
これに応じて、不揮発性メモリ20は、ライトコマンドで指定された領域へのライト動作を行う。不揮発性メモリ20は、所定のワードラインへのデータの書き上げが完了すると(図6に示すST12)、所定のワードラインのライト完了通知をProgramコマンド処理部10bへ返す(図7に示すSQ3)。これに応じて、Programコマンド処理部10bは、Program応答をProgram処理部10aへ返す(SQ4)。Program処理部10aは、Program応答に応じて、所定のワードラインへのデータの書き上げが完了したと認識する。
所定のワードラインへのデータの書き上げが完了すると、図6に示すように、メモリコントローラ10は、対象ラードラインについてアドレス変換情報LUTを更新する(ST13)。
例えば、図7に示すProgram処理部10aは、LUT更新要求をLUT管理部10eへ供給する(SQ5)。LUT管理部10eは、RAM14及び/又はバッファメモリ19に格納されたアドレス変換情報LUTにアクセスし、ライト完了通知(SQ3)で書き上げ完了を通知されたワードラインの情報をアドレス変換情報LUTに追加することなどによりアドレス変換情報LUTを更新する。LUT管理部10eは、更新後のアドレス変換情報LUTをRAM14及び/又はバッファメモリ19に書き戻す(SQ6)。
図6に戻って、メモリコントローラ10は、検査リードコマンドを実行すべきことを示す実行条件が満たされるか否かを判断する(ST14)。実行条件としては、例えば、次のA)〜C)のいずれか又はそれらの組み合わせを用いることができる。
A)書き上げが完了したWLに対して、即座に検査リードを要求する。
B)書き上げが完了したタイミングからタイマで所定時間を計って、所定時間に達してから検査リードを要求する。所定時間は、メモリセルの閾値電圧の単位時間あたりの変化量が所定の閾値以上ある時間で、例えば数秒〜数分である。
C)書き上げが完了したWLから+n本(nは任意の正の整数)のWLを書き進めてから検査リードを要求する。
メモリコントローラ10は、実行条件が満たされるまで(ST14でNo)、待機し、実行条件が満たされると(ST14でYes)、検査リード処理を行う(ST1a)。
検査リード処理(ST1a)では、メモリコントローラ10は、ST12で書き上げが完了したワードラインを対象ワードラインとして、対象ワードラインの指定を含む検査リードコマンドを不揮発性メモリ20に発行する(ST15)。
なお、メモリコントローラ10は、ST14でYesと判断されるタイミングまでに、ホスト装置30からホストリードコマンドを受けた場合、ホストリードコマンドに応じたホストリード処理を開始し(ST17)、メモリセルの疲弊状態を検査するためのリード指示とホストリードコマンドに応じたリード指示とを兼ねたコマンドとして、検査リードコマンドを不揮発性メモリ20に発行し得る。
メモリコントローラ10は、検査リードコマンドの応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行い、リードデータの誤り訂正に関する情報を取得する。すなわち、メモリコントローラ10は、リードデータの誤り訂正に関する情報として、リードクラスタ数とリトライ発生クラスタ数またはFBC情報を取得し、取得されたこれらの情報に基づいて、疲弊情報14a1を生成又は更新してRAM14上の疲弊情報保存領域14aに保存する(ST15)。
例えば、図7に示すProgram処理部10aは、検査リードコマンドを実行すべきことを示す実行条件が満たされたと判断すると、検査リード要求を検査リード処理部10cへ供給する(SQ7)。検査リード処理部10cは、検査リード要求に応じて、Read要求をReadコマンド処理部10dへ供給する(SQ8)。Readコマンド処理部10dは、Read要求に応じて、Readコマンド(リードコマンド)を不揮発性メモリ20へ発行する(SQ9)。
これに応じて、不揮発性メモリ20は、リードコマンドで指定された領域からのリード動作を行う。不揮発性メモリ20は、リード動作が完了すると、リードデータをReadコマンド処理部10dへ返す(SQ10)。
Readコマンド処理部10dは、ECC decoderを含み、検査リードコマンドの応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行い、ECC訂正結果またはFBC情報を検査リード処理部10cへ供給する(SQ11)。検査リード処理部10cは、リード量・リトライ回数・FBC情報に応じた疲弊情報14a1を生成してRAM14上の疲弊情報保持領域14aへ保存する(SQ12)。
疲弊情報14a1は、例えば、図8に示すようなデータ構造を有する。図8は、疲弊情報14a1のデータ構造を示す図である。疲弊情報14a1では、リードクラスタ数、リトライ発生クラスタ数が、各チップの各物理ブロックについて記録され得る。なお、疲弊情報14a1のデータ構造は、図8に示す例に限定されず、例えば、リードクラスタ数及びリトライ発生クラスタ数に加えて、又は、リードクラスタ数及びリトライ発生クラスタ数に代えて、リードビット数及びエラービット数が記録されていてもよい。
なお、メモリコントローラ10は、図6に示すアドレス変換情報LUTの更新(ST13)を、検査リード処理(ST1a)が完了した後に行ってもよい。
例えば、図7に点線の矢印で示すように、検査リード処理部10cは、疲弊情報14a1の保存を行った後、LUT更新要求をLUT管理部10eへ供給してもよい。
次に、リード方式選択(ST2)の具体的な実装例について図9及び図10を用いて説明する。図9は、メモリシステム1の詳細動作(リード方式の選択の実装例)を示すフローチャートである。図10は、メモリシステムの詳細動作(リード方式の選択の実装例)を示すデータフロー図である。図9及び図10では、ホストリード処理の開始以降の処理について例示している。
図9に示すように、メモリコントローラ10は、ホスト装置30からホストリードコマンドを受けると、ホストリードコマンドに応じてホストリード処理を開始し(ST21)、アドレス変換情報LUTを解決し、ホストリードの物理アドレスを特定する(ST22)。
例えば、図10に示すホストリード処理部10fは、ホスト装置30からホストリードコマンドを受けると(SQ21)、ホストリードコマンドに応じて、LUT解決要求をLUT管理部10eへ供給する(SQ22)。LUT管理部10eは、RAM14及び/又はバッファメモリ19に格納されたアドレス変換情報LUTにアクセスし、アドレス変換情報LUTを参照して、ホストリードコマンドに含まれた論理アドレスに対応する物理アドレスを特定する。LUT管理部10eは、特定された物理アドレスの情報を物理アドレス応答としてホストリード処理部10fへ返す(SQ23)。
図9に戻って、メモリコントローラ10は、RAM14上の疲弊情報格納領域14aからホストリード対象部分の疲弊情報を取得し(ST23)、疲弊情報に基づいてリトライ率を求める(ST24)。
例えば、図10に示すホストリード処理部10fは、LUT管理部10eから物理アドレスを受けたことに応じて、疲弊情報要求を疲弊情報解析部10gへ供給する(SQ24)。疲弊情報解析部10gは、疲弊情報要求に応じて、疲弊情報要求をRAM14へ供給し(SQ25)、RAM14上の疲弊情報保持領域14aに格納された疲弊情報14a1(図8参照)を疲弊情報応答として受ける(SQ26)。疲弊情報解析部10gは、疲弊情報14a1に基づいて、SQ23の物理アドレスに対応する検査リードクラスタ数14a11及びリトライ率14a2(図8参照)を疲弊情報解析結果として求める。疲弊情報解析部10gは、リトライ発生クラスタ数14a12を検査リードクラスタ数14a11で割ってリトライ率14a2を求めてもよい。疲弊情報解析部10gは、疲弊情報解析結果をホストリード処理部10fへ返す(SQ27)。
図9に戻って、メモリコントローラ10は、ST24で求められた検査リードクラスタ数14a11及びリトライ率14a2に応じて、複数のリード方式から1つのリード方式を選択し(ST2a)、初段リード処理を行い(ST3a)、その応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行う(ST30)。
リード方式の選択(ST2a)では、メモリコントローラ10は、検査リードクラスタ数14a11が所定数以上であるか否かを判断し(ST25)、検査リードクラスタ数14a11が所定数以上であれば(ST25でYes)、リトライ率が複数の閾値RRth1,RRth2に対してどのレベルにあるかを判断する(ST26)。所定数は、メモリシステム1に要求される仕様に応じて、実験的に決定され、設定され得る。
なお、ST25で検査リードクラスタ数を判断することで、精度の粗い検査結果を元に切り替えを行うことを防ぐことができ、リトライ率の精度を保証した切り替えを行うことができる。
メモリコントローラ10は、検査リードクラスタ数14a11が所定数未満である(ST25でNo)か、又は、リトライ率が閾値RRth1未満であれば(ST26で「リトライ率<RRth1」)、リード方式としてFastReadを選択し、処理をST27へ進める。
メモリコントローラ10は、リトライ率が閾値RRth1以上且つ閾値RRth2未満であれば(ST26で「RRth1≦リトライ率<RRth2」)、リード方式としてNormalReadを選択し、処理をST28へ進める。
メモリコントローラ10は、リトライ率が閾値RRth2以上であれば(ST26で「RRth2≦リトライ率」)、リード方式としてDLAReadを選択し、処理をST29へ進める。
初段リード処理(ST3a)では、メモリコントローラ10は、リード方式の選択(ST2a)でFastReadが選択された場合、FastReadの方式に従ってリードコマンドを不揮発性メモリ20へ発行する(ST27)。メモリコントローラ10は、リード方式の選択(ST2a)でNormalReadが選択された場合、NormalReadの方式に従ってリードコマンドを不揮発性メモリ20へ発行する(ST28)。メモリコントローラ10は、リード方式の選択(ST2a)でDLAReadが選択された場合、DLAReadの方式に従ってリードコマンドを不揮発性メモリ20へ発行する(ST29)。
例えば、図10に示すホストリード処理部10fは、疲弊情報解析結果に応じたリード方式を(例えば、図9のST2aの処理により)選択し、選択されたリード方式に従ったリード要求をReadコマンド処理部10dへ供給する(SQ28)。ホストリード処理部10fは、FastReadを選択した場合、FastReadに従ったリード要求をReadコマンド処理部10dへ供給する。ホストリード処理部10fは、NormalReadを選択した場合、NormalReadに従ったリード要求をReadコマンド処理部10dへ供給する。ホストリード処理部10fは、DLAReadを選択した場合、DLAReadに従ったリード要求をReadコマンド処理部10dへ供給する。
Readコマンド処理部10dは、リード要求に応じてリードコマンドを不揮発性メモリ20へ発行する(SQ29)。Readコマンド処理部10dは、FastReadに従ったリード要求に応じて、FastReadに従ったリードコマンドを不揮発性メモリ20へ発行する。Readコマンド処理部10dは、NormalReadに従ったリード要求に応じて、NormalReadに従ったリードコマンドを不揮発性メモリ20へ発行する。Readコマンド処理部10dは、DLAReadに従ったリード要求に応じて、DLAReadに従ったリードコマンドを不揮発性メモリ20へ発行する。
これに応じて、不揮発性メモリ20は、リードコマンドで指定された領域からのリード動作をリードコマンドで指定されたリード方式で行う。不揮発性メモリ20は、リード動作が完了すると、リードデータをReadコマンド処理部10dへ返す(SQ30)。
Readコマンド処理部10dは、ECC decoderを含み、検査リードコマンドの応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行う(SQ31)。
図9に戻って、メモリコントローラ10は、誤り訂正に成功した場合(ST31でYes)、処理を終了する。
メモリコントローラ10は、誤り訂正に失敗した場合(ST31でNo)、リトライリード処理を実施し(ST32)、処理を終了する。なお、ST32では、図4に示すST6〜ST10に相当する処理が行われてもよい。
以上のように、実施形態では、メモリシステム1において、メモリコントローラ10が、検査のためのリードコマンドを不揮発性メモリ20に実行させ、その結果に応じてリード方式を選択し、本来のリード処理のためのリードコマンドをその選択されたリード方式で不揮発性メモリ20に発行する。これにより、パフォーマンスの低下を抑制しつつ要求される信頼性を確保できるようなリード方式を選択し、その選択されたリード方式でリードコマンドを発行できる。この結果、信頼性を示す特性を推測する場合に比べて、メモリセルの実際の疲弊状態に応じたより適切なリード方式を選択することができ、パフォーマンス向上と信頼性向上とを容易に両立でき、パフォーマンス及び信頼性の両方の観点から総合的にリード性能を向上できる。すなわち、リード動作の信頼性を適切に確保できる。
なお、検査リード処理(ST1)の対象範囲と検査リード結果の使いまわし範囲との組み合わせは、疲弊状態が近似的に揃っていると見なせる範囲に依存して、任意に設定され得る。例えば、検査リード処理(ST1)の対象範囲が1つのワードラインである場合に、その検査リード結果の使いまわし範囲は、複数の論理ブロックでもよいし、単一の論理ブロックでもよいし、複数の物理ブロックでもよいし、単一の物理ブロックでもよいし、複数のワードラインなどでもよい。検査リード処理の対象範囲に対する使いまわし範囲の規模が小さいほど精度が上がるが、必要メモリ量が増えるので、検査リード処理の対象範囲と検査リード結果の使いまわし範囲との組み合わせは、要求される精度とリソースとして確保可能なメモリ量とを考慮して決定され得る。
あるいは、検査リード処理(ST1)の対象範囲は、論理ブロック又は物理ブロック中の特定のワードライン(例えば、特にBERが高いワードライン、特にBERが低いワードライン、論理ブロック又は物理ブロックの代表ワードライン)を優先的に選択しても良い。これにより、検査リードの回数・必要メモリ量を節約することができる。
あるいは、検査リード処理(ST1)の対象範囲は、書き込み先ブロック・または書き上がり後所定時間以内の論理ブロック又は物理ブロックに限定してもよい。これにより、検査の対象をPD状態に限定することができる。すなわち、書き込み処理/消去処理の回数に関連した疲弊に着目しているので、時間経過などで検査し直す必要がない。
あるいは、検査リード処理(ST1)の対象範囲は、任意のブロックでもよい。この場合、DR/RD/温度ストレスを受けたブロックも対象となるので、再検査が必要になるが、DRなどのストレスもケアできるというメリットがある。
検査リードコマンドの発行タイミングは、所定の領域に書き込んでから所定の比較的短い時間(例えば、数十分以内〜数時間以内)としてもよい。これにより、PD状態に限定して検査を行うことができる。すなわち、書き込み処理/消去処理の回数に関連した疲弊に着目しているので、時間経過などで検査し直す必要がない。
あるいは、検査リードコマンドの発行タイミングは、所定期間ごとであってもよいし、不揮発性メモリ20がアイドル状態である期間中であってもよい。この場合、再検査が必要になるが、DRなどのストレスもケアできるというメリットがある。
リード方式選択(ST2)のアルゴリズムとして、DR/RD/温度/書き込み回数をさらに考慮して判断してもよい。これにより、リードデータの信頼性に関する情報(リトライ率、ビットエラー率)単独で判断するより精度を上げることができる。
あるいは、リード方式選択(ST2)のアルゴリズムとして、疲弊情報としてエラービット数(FBC)を使用する場合、ECC強度に応じて切り替え基準を変化させてもよい。この場合、ECC強度に応じた適切な切り替えができる。
あるいは、リード方式選択(ST2)のアルゴリズムとして、論理ブロック又は物理ブロックの端部に相当するワードラインや各メモリセルグループMCG(図3参照)に保持される複数の物理ページのうちの一部の物理ページなどの特定箇所の結果に重みを付けてもよい。これにより、過剰な切り替えが起こることを防ぐことができる。
あるいは、リード方式選択(ST2)のアルゴリズムとして、メモリシステム1全体で切り替えず、ch/chip/Block/WL/pageで細かく切り替えてもよい。これにより、メモリセルアレイ23内のばらつきに対応できる。
あるいは、リード方式選択(ST2)のアルゴリズムとして、切り替えは、一方通行(例えば、図5に示すFastRead→NormalRead→DLAreadの順)ではなく、エラービット数(FBC)が回復した際には、リード方式を戻す(例えば、リード方式を、NormalRead→FastReadと戻したり、DLAread→NormalReadと戻したりする)動きをしてもよい。これにより、DR/RD/温度ストレスを受けた状態で検査リードをした場合、Refreshでリトライ率が回復することに対応できる。また、PDに限定して検査しても、ECC強度が強化されてリトライ率が回復することに対応できる。
あるいは、リード方式選択(ST2)のアルゴリズムとして、複数単位(例えば、複数の論理ブロック又は複数の物理ブロック)のリトライ率を統計処理して切り替え判断してもよい。例えば、複数単位についてリトライ率を平均化した値を用いてもよい。又は、ワーストNブロックのリトライ率を平均化した値を用いてもよい。又は、リトライ率が正規分布に従うと仮定して、複数単位のリトライ率から母集団の正規分布を推定し、そのμ+3σの値を用いてもよい。μは推定した正規分布の平均、σは標準偏差であり、μ+3σはリトライ率の約99.7%が該値以下になる値である。これにより、メモリセルアレイ23内のばらつきに対応できる。
あるいは、検査リード処理(ST1)の具体的な実装例として、検査リードコマンドは、メモリセルの疲弊状態を検査するためのリード指示と内部処理に応じたリード指示とを兼ねたコマンドとして発行されてもよい。この内部処理は、ライト処理中のベリファイ動作で検出されなかった不良を検出する検査と、メモリセルのデータ保持状態の検査とを含んでもよい。
ライト処理中のベリファイ動作で検出されなかった不良を検出する検査は、例えば、ReadVerifyを含む。ReadVerifyは、ワードライン故障などの救済手法の1つである。例えば、プログラム完了通知を受けた場合であってもリードエラーが起こるケースがあるため、メモリコントローラ10は、ReadVerifyのリードコマンドを不揮発性メモリ20に発行し、リードエラーの有無を確認する。 Program直後にReadを行い、ある程度以上のエラーが発生していた場合、例えば、VthTracking及びBCHエラー訂正を行い、訂正に失敗した場合はProgramFailとして扱う。ReadVerifyで行うReadは通常のユーザデータリードと同じで、誤り訂正も行う。
なお、検査リードコマンドが、メモリセルの疲弊状態を検査するためのリード指示とライト処理中のベリファイ動作で検出されなかった不良を検出する検査とを兼ねたコマンドとして発行される場合、検査リードコマンドの発行タイミングは、所定の領域に書き込んでから所定の比較的短い時間(例えば、数十分以内〜数時間以内)としてもよい。これにより、PD状態に限定して検査を行うことができる。すなわち、書き込み処理/消去処理の回数に関連した疲弊に着目しているので、時間経過などで検査し直す必要がない。
メモリセルのデータ保持状態の検査は、例えば、パトロールリードを含む。パトロールリードは、リフレッシュ処理のためのパトロール処理に用いられる。パトロール処理では、各メモリセルに蓄積されたビット誤りの程度を評価する(たとえば、パトロールリードして誤り訂正を試みる)ことで、リフレッシュ対象ブロックの選択を行う。リフレッシュ処理では、選択されたリフレッシュ対象ブロックに含まれるデータを読み出し、誤り訂正を施した上で、ほかのブロック(あるいはリフレッシュ対象ブロック)に書き直す。これにより、メモリセルアレイ23に格納されたデータの信頼性を向上できる。
検査リード処理(ST1)は、図11及び図12に示すように実装されてもよい。図11は、実施形態の変形例に係るメモリシステムの詳細動作(検査リード処理の他の実装例)を示すフローチャートである。図12は、実施形態の変形例に係るメモリシステムの詳細動作(検査リード処理の他の実装例)を示すデータフロー図である。図11及び図12では、内部処理(内部リード処理)が検査リード処理を兼ねて行われる場合について例示している。
図11に示すように、メモリシステム1において、メモリコントローラ10は、内部処理を行うべきと判断すると、内部処理を開始し(ST41)、検査リード処理を行う(ST1b)。
検査リード処理(ST1b)では、メモリコントローラ10は、内部処理に応じたリード動作が行われるべき領域を対象領域として、対象領域の指定を含む検査リードコマンドを不揮発性メモリ20に発行する(ST42)。すなわち、メモリコントローラ10は、メモリセルの疲弊状態を検査するためのリード指示と内部処理に応じたリード指示とを兼ねたコマンドとして、検査リードコマンドを不揮発性メモリ20に発行し得る。
メモリコントローラ10は、検査リードコマンドの応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行い、リードデータの誤り訂正に関する情報を取得する。
すなわち、メモリコントローラ10は、誤り訂正後のリードデータ及びリードデータの誤り訂正に関する情報を内部リード結果として取得し、内部リード結果に応じた所定の内部処理を行う(ST43)。例えば、内部処理がReadVerifyである場合、メモリコントローラ10は、リードエラーになるか(すなわち、リードデータの誤り訂正でビットエラーが検出されるか)を確認する。内部処理がパトロールリードであれば、メモリコントローラ10は、各メモリセルに蓄積されたビット誤りの程度を評価する(たとえば、パトロールリードして誤り訂正を試みる)ことで、リフレッシュ対象ブロックの選択を行う。
また、メモリコントローラ10は、リードデータの誤り訂正に関する情報として、リードクラスタ数とリトライ発生クラスタ数またはFBC情報を取得し、取得されたこれらの情報に基づいて、疲弊情報14a1を生成又は更新してRAM14上の疲弊情報保存領域14aに保存する(ST44)。
例えば、図12に示す内部リード管理部10hは、内部リード要求をReadコマンド処理部10dへ供給する(SQ41)。Readコマンド処理部10dは、内部リード要求に応じて、Readコマンド(リードコマンド)を不揮発性メモリ20へ発行する(SQ42)。
これに応じて、不揮発性メモリ20は、リードコマンドで指定された領域からのリード動作を行う。不揮発性メモリ20は、リード動作が完了すると、リードデータをReadコマンド処理部10dへ返す(SQ43)。
Readコマンド処理部10dは、検査リードコマンドの応答としてリードデータを不揮発性メモリ20から受けると、リードデータに対して誤り訂正を行い、リードデータ及びECC訂正結果またはFBC情報を内部リード結果として内部リード管理部10hへ返す(SQ44)。
また、Readコマンド処理部10dは、ECC訂正結果またはFBC情報を検査リード処理部10cへ供給する(SQ45)。検査リード処理部10cは、リード量・リトライ回数・FBC情報に応じた疲弊情報14a1を生成してRAM14上の疲弊情報保持領域14aへ保存する(SQ46)。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、10 メモリコントローラ、20 不揮発性メモリ。

Claims (12)

  1. 不揮発性メモリと、
    前記不揮発性メモリのリード動作に要する時間が互いに異なる複数のリード方式から1つのリード方式を選択し、選択された1つのリード方式に従った第1のリードコマンドを前記不揮発性メモリに発行するコントローラと、
    を備えたメモリシステム。
  2. 前記コントローラは、第2のリードコマンドを前記不揮発性メモリに発行し、前記第2のリードコマンドで前記不揮発性メモリから読み出されたデータの誤り訂正に関する情報に応じて、前記複数のリード方式から1つのリード方式を選択する
    請求項1に記載のメモリシステム。
  3. 前記コントローラは、前記不揮発性メモリにおける所定の領域へのライト動作が完了してから所定時間以内に、前記所定の領域の指定を含む前記第2のリードコマンドを前記不揮発性メモリに発行する
    請求項2に記載のメモリシステム。
  4. 前記コントローラは、所定の周期ごとに、又は前記不揮発性メモリがアイドル状態である期間に、前記第2のリードコマンドを前記不揮発性メモリに発行する
    請求項2に記載のメモリシステム。
  5. 前記コントローラは、前記不揮発性メモリにおける所定の領域へのライト動作が完了してから、前記ライト動作に伴うアドレス変換情報の更新を行う前に、前記第2のリードコマンドを前記不揮発性メモリに発行する
    請求項2に記載のメモリシステム。
  6. 前記複数のリード方式は、
    前記不揮発性メモリのリード動作に第1の時間を要する第1のリード方式と、
    前記不揮発性メモリのリード動作に前記第1の時間より長い第2の時間を要する第2のリード方式と、
    を含み、
    前記コントローラは、前記読み出されたデータの誤り訂正に関する情報が第1の閾値より高い信頼性を示している場合、前記複数のリード方式から前記第1のリード方式を選択し、前記読み出されたデータの誤り訂正に関する情報が前記第1の閾値より低い信頼性を示している場合、前記複数のリード方式から前記第2のリード方式を選択する
    請求項2に記載のメモリシステム。
  7. 前記複数のリード方式は、前記不揮発性メモリのリード動作に前記第2の時間より長い第3の時間を要する第3のリード方式をさらに含み、
    前記コントローラは、前記読み出されたデータの誤り訂正に関する情報が前記第1の閾値と前記第1の閾値より低い第2の閾値との間の信頼性を示している場合、前記複数のリード方式から前記第2のリード方式を選択し、前記読み出されたデータの誤り訂正に関する情報が前記第2の閾値より低い信頼性を示している場合、前記複数のリード方式から前記第3のリード方式を選択する
    請求項6に記載のメモリシステム。
  8. 前記誤り訂正に関する情報は、前記読み出されたデータの誤り訂正で検出されたビットエラー率と前記不揮発性メモリにおけるリード動作のリトライ率との少なくとも一方を含む
    請求項2から7のいずれか1項に記載のメモリシステム。
  9. 前記コントローラは、ホストに接続可能であり、前記第2のリードコマンドを、メモリセルの疲弊状態を検査するためのリード指示と前記ホストから受けたホストリードコマンドに応じたリード指示とを兼ねたコマンドとして、前記不揮発性メモリに発行する
    請求項2から8のいずれか1項に記載のメモリシステム。
  10. 前記コントローラは、前記第2のリードコマンドを、メモリセルの疲弊状態を検査するためのリード指示と内部処理に応じたリード指示とを兼ねたコマンドとして、前記不揮発性メモリに発行する
    請求項2から8のいずれか1項に記載のメモリシステム。
  11. 前記内部処理は、
    ライト処理中のベリファイ動作で検出されなかった不良を検出する検査と、
    メモリセルのデータ保持状態の検査と、
    を含む
    請求項10に記載のメモリシステム。
  12. 不揮発性メモリのリード動作に要する時間が互いに異なる複数のリード方式から1つのリード方式を選択することと、
    前記選択された1つのリード方式に従った第1のリードコマンドを前記不揮発性メモリに発行することと、
    を含むメモリシステムの制御方法。
JP2019043956A 2019-03-11 2019-03-11 メモリシステム、及びメモリシステムの制御方法 Pending JP2020149123A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019043956A JP2020149123A (ja) 2019-03-11 2019-03-11 メモリシステム、及びメモリシステムの制御方法
US16/751,262 US11526301B2 (en) 2019-03-11 2020-01-24 Memory system and non-volatile memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019043956A JP2020149123A (ja) 2019-03-11 2019-03-11 メモリシステム、及びメモリシステムの制御方法

Publications (1)

Publication Number Publication Date
JP2020149123A true JP2020149123A (ja) 2020-09-17

Family

ID=72422969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019043956A Pending JP2020149123A (ja) 2019-03-11 2019-03-11 メモリシステム、及びメモリシステムの制御方法

Country Status (2)

Country Link
US (1) US11526301B2 (ja)
JP (1) JP2020149123A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102652001B1 (ko) * 2019-05-22 2024-03-27 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
KR20220092021A (ko) * 2020-12-24 2022-07-01 삼성전자주식회사 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US11520657B1 (en) * 2021-08-18 2022-12-06 Micron Technology, Inc. Defect detection in memory based on active monitoring of read operations
US20240069788A1 (en) * 2022-08-31 2024-02-29 Micron Technology, Inc. Filtering metrics associated with memory
CN116524992B (zh) * 2023-06-29 2023-09-15 上海飞斯信息科技有限公司 大容量高速固态存储器容量管理系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7652929B2 (en) 2007-09-17 2010-01-26 Sandisk Corporation Non-volatile memory and method for biasing adjacent word line for verify during programming
US8400858B2 (en) * 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
ATE539403T1 (de) * 2008-06-24 2012-01-15 Sandisk Il Ltd Verfahren und vorrichtung zur fehlerkorrektur nach der löschanzahl eines festkörperspeichers
US8595593B2 (en) * 2008-12-24 2013-11-26 Hynix Semiconductor Inc. Nonvolatile memory device having a copy back operation and method of operating the same
US8782495B2 (en) 2010-12-23 2014-07-15 Sandisk Il Ltd Non-volatile memory and methods with asymmetric soft read points around hard read points
JP2012150857A (ja) 2011-01-17 2012-08-09 Toshiba Corp 電源回路
KR20130034522A (ko) * 2011-09-28 2013-04-05 삼성전자주식회사 비휘발성 메모리 장치의 데이터 리드 방법, 및 이를 수행하는 장치
US9454420B1 (en) * 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
KR102089532B1 (ko) * 2013-02-06 2020-03-16 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 시스템의 동작 방법
US9477546B2 (en) * 2013-06-21 2016-10-25 Marvell World Trade Ltd. Methods and apparatus for optimizing lifespan of a storage device
KR20160005264A (ko) * 2014-07-04 2016-01-14 삼성전자주식회사 저장 장치 및 그것의 읽기 방법들
KR102190241B1 (ko) * 2014-07-31 2020-12-14 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US9798475B2 (en) * 2015-03-11 2017-10-24 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
AU2016393275B2 (en) * 2016-02-19 2019-10-10 Huawei Technologies Co., Ltd. Method and apparatus for accessing flash memory device
US10055159B2 (en) * 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
US10553301B2 (en) * 2017-06-03 2020-02-04 Sandisk Technologies Llc Dynamic read table block filter
KR20190022987A (ko) * 2017-08-25 2019-03-07 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2019168853A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム、その制御方法及びプログラム

Also Published As

Publication number Publication date
US20200293228A1 (en) 2020-09-17
US11526301B2 (en) 2022-12-13

Similar Documents

Publication Publication Date Title
US11984167B2 (en) Memory system performing read operation with read voltage
JP2020149123A (ja) メモリシステム、及びメモリシステムの制御方法
US8271515B2 (en) System and method for providing copyback data integrity in a non-volatile memory system
CN111752487B (zh) 一种数据恢复方法、装置及固态硬盘
US8972776B2 (en) Partial R-block recycling
KR102252379B1 (ko) 메모리 시스템 및 이의 독출 방법
US20200005874A1 (en) Recovering from failure in programming a nonvolatile memory
JP2019168853A (ja) メモリシステム、その制御方法及びプログラム
CN112035060B (zh) 一种存储介质的错误检测方法、系统及存储系统
US11138070B2 (en) Memory system and method performed thereby
US11340982B1 (en) Memory block defect detection and management
KR20220049027A (ko) 가비지 수집을 위한 메모리 컴포넌트에 대한 에러 제어 동작 수행
US20240036753A1 (en) Wordline leakage test management
US11657891B2 (en) Error recovery operations
US11550657B1 (en) Efficient programming schemes in a nonvolatile memory
US11250909B2 (en) Nonvolatile memory and memory system
US11119853B2 (en) Predicted error correction apparatus, operation method thereof and memory system using the same
JP7291640B2 (ja) 半導体記憶装置及び半導体記憶装置のリフレッシュ方法
US11977778B2 (en) Workload-based scan optimization
US20240069765A1 (en) Two-tier defect scan management