JP2022143243A - メモリシステムおよびその制御方法 - Google Patents

メモリシステムおよびその制御方法 Download PDF

Info

Publication number
JP2022143243A
JP2022143243A JP2021043664A JP2021043664A JP2022143243A JP 2022143243 A JP2022143243 A JP 2022143243A JP 2021043664 A JP2021043664 A JP 2021043664A JP 2021043664 A JP2021043664 A JP 2021043664A JP 2022143243 A JP2022143243 A JP 2022143243A
Authority
JP
Japan
Prior art keywords
data
parity
memory
writing
read
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
JP2021043664A
Other languages
English (en)
Inventor
充史 岡本
Mitsufumi Okamoto
哲也 安田
Tetsuya Yasuda
亜季則 長岡
Akinori Nagaoka
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 JP2021043664A priority Critical patent/JP2022143243A/ja
Priority to US17/348,412 priority patent/US11645003B2/en
Publication of JP2022143243A publication Critical patent/JP2022143243A/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/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
    • 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
    • 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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/061Improving I/O performance
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】パリティの生成に使用されるメモリのサイズを削減する。【解決手段】本実施形態に係るメモリシステムは、不揮発性メモリとコントローラとを備える。コントローラは、不揮発性メモリを制御する。コントローラは、不揮発性メモリへデータをライトし、ライトが完了した後、ライトしたデータを不揮発性メモリからリードし、リードしたデータに対応するパリティを生成し、生成したパリティをパリティ保存用のメモリにライトする。【選択図】 図1

Description

本実施形態は、メモリシステムおよびその制御方法に関する。
不揮発性メモリを備えるシステムが知られている。メモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードする。不揮発性メモリからリードされたデータにエラーが発生することがある。このため、発生したエラーの検出およびエラーの訂正に、パリティが使用される場合がある。パリティは、不揮発性メモリにデータをライトする際に生成される。パリティの生成に関する計算のために、不揮発性メモリとは異なるメモリが使用されることがある。
米国特許出願公開第2015/194984号明細書 米国特許出願公開第2016/34227号明細書 米国特許出願公開第2017/24276号明細書
本実施形態は、パリティの生成に使用されるメモリのサイズを削減可能なメモリシステムおよびその制御方法を提供する。
本実施形態によれば、メモリシステムは、不揮発性メモリとコントローラとを備える。コントローラは、不揮発性メモリを制御する。コントローラは、不揮発性メモリへデータをライトし、ライトが完了した後、ライトしたデータを不揮発性メモリからリードし、リードしたデータに対応するパリティを生成し、生成したパリティをパリティ保存用のメモリにライトする。
第1の実施形態に係るメモリシステムの構成の一例を示すブロック図。 第1の実施形態に係るメモリの構成の一例を示す図。 ブロックの一部の構成の例を示す図。 第1の実施形態に係るメモリにおけるブロックとプレーンとの関係の例を示す図。 第1の実施形態に係るフレームの構成の例を示す図。 第1の実施形態に係る論理ブロックおよびパリティ記憶部の例を示す図。 第1の実施形態に係るフレームのライト処理およびパリティ生成処理の例を示すフローチャート。 第2の実施形態に係るガベージコレクションの処理の例を示す図。
以下、図面を参照しながら各実施の形態について説明する。なお、以下の説明において、略または実質的に同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合に行う。また、本実施形態で説明する数値、および、構成要素の個数は例であり、適宜変更可能である。
(第1の実施形態)
図1は、第1の実施形態に係るメモリシステム1の構成の例を示すブロック図である。
メモリシステム1は、例えばSSD(Solid State Drive)である。メモリシステム1は、UFS(Universal Flash Storage)デバイス、USB(Universal Serial Bus)メモリ、メモリカード、ハードディスクドライブとSSDとを含むハイブリッド型ストレージシステムなどのような、様々な種類のストレージデバイスのいずれかでもよい。メモリシステム1は、ホストデバイス(例えば、外部の情報処理装置)2と通信可能である。
メモリシステム1は、不揮発性記憶装置3とコントローラ4とを備える。
不揮発性記憶装置3は、不揮発性のメモリNM00~NM33を含む。以下においてメモリNM00~NM33を区別しない場合、不揮発性のメモリNM00~NM33のそれぞれは、単にメモリNMとも称する。
メモリNM00~NM33のそれぞれは、2次元構造または3次元構造の記憶部を有する不揮発性半導体メモリでもよい。メモリNM00~NM33のそれぞれは、メモリチップでもよい。
具体的には、メモリNM00~NM33は、例えば、NAND型フラッシュメモリとしてもよい。メモリNM00~NM33は、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory:磁気抵抗メモリ)、PRAM(Phasechange Random Access Memory:相変化メモリ)、ReRAM(Resistive Random Access Memory:抵抗変化型メモリ)、FeRAM(Ferroelectric Random Access Memory)などのうちのいずれかでもよい。
メモリNM00~NM33は、バンクBk0、バンクBk1、バンクBk2、バンクBk3でグループ化されている。以下においてバンクBk0~Bk3を区別しない場合には、単にバンクBkと称す。
バンクBk0は、メモリNM00、NM10,NM20,NM30に対応する。バンクBk1は、メモリNM01、NM11,NM21,NM31に対応する。バンクBk2は、メモリNM02、NM12,NM22,NM32に対応する。バンクBk3は、メモリNM03、NM13,NM23,NM33に対応する。
さらに、メモリNM00~NM33は、チャネルCh0、チャネルCh1、チャネルCh2、チャネルCh3でグループ化されている。
メモリNM00~NM03のそれぞれは、バスBu0に接続されている。メモリNM00~NM03は、チャネルCh0に対応する。
メモリNM10~NM13のそれぞれは、バスBu1に接続されている。メモリNM10~NM13は、チャネルCh1に対応する。
メモリNM20~NM23のそれぞれは、バスBu2に接続されている。メモリNM20~NM23は、チャネルCh2に対応する。
メモリNM30~NM33のそれぞれは、バスBu3に接続されている。メモリNM30~NM33は、チャネルCh3に対応する。
メモリNM00~NM33のそれぞれは、プレーンPL0およびプレーンPL1を含む。コントローラ4は、あるメモリNMに含まれるプレーンPL0およびプレーンPL1に対して並列にデータをライトまたはリード可能である。以下においてプレーンPL0,PL1を区別しない場合には、単にプレーンPLと称す。
コントローラ4は、ホストデバイス2から受信したコマンドにしたがってメモリNM00~NM33に対する制御を実行する。また、コントローラ4は、ホストデバイス2からのコマンドを受信しなくても、バックグラウンド処理として、メモリNM00~NM33に対する制御を実行する。より具体的には、コントローラ4は、不揮発性記憶装置3へのデータのライトを制御し、不揮発性記憶装置3からのデータのリードを制御する。
コントローラ4は、例えば、不揮発性記憶装置3に備えられるメモリNM00~NM33に対するガベージコレクションのための制御を実行する。ガベージコレクションとは、例えば、メモリNM00~NM33におけるガベージコレクション元ブロック内に断片的に配置(または記憶)されているデータを、ガベージコレクション先ブロックにまとめて再配置(または書き換え)し、ガベージコレクション元ブロック内のデータを無効化する処理である。なお、ガベージコレクションは、コンパクションと表記されてもよい。
第1の実施形態において、コントローラ4は、データのライト処理において、不揮発性記憶装置3に対してデータをライトし、ライトが完了した後、ライトしたデータを不揮発性記憶装置3からリードし、リードしたデータに対応するパリティを生成し、生成したパリティを不揮発な状態で、例えば不揮発性記憶装置3などのようなパリティ保存用のメモリにライトする。
コントローラ4は、データのリード処理において、不揮発性記憶装置3からリードしたデータに対して、リードしたデータに対応するパリティを用いてエラー検出およびエラー訂正を実行する。このリード処理において、コントローラ4は、リードしたデータに対応するパリティを不揮発性記憶装置3からリードしてもよい。
コントローラ4は、ホストインタフェース部5と、メモリインタフェース部MI0~MI3と、メモリ部6と、プロセッサ7と、エラー訂正部8とを備える。ホストインタフェース部5、メモリインタフェース部MI0~MI3、メモリ部6、プロセッサ7、およびエラー訂正部8は、バス11を介して、互いに、データ、情報、信号、コマンド、リクエスト、メッセージ、指示、応答を送信または受信可能である。
ホストインタフェース部5は、所定の規格に準拠する回路である。ホストインタフェース部5は、ホストデバイス2からのデータ、情報、信号、コマンド、リクエスト、メッセージ、指示、応答などを受信する。また、ホストインタフェース部5は、データ、情報、信号、コマンド、リクエスト、メッセージ、指示、応答などを、ホストデバイス2へ送信する。
所定の規格は、例えば、NVMe(登録商標)(Non-Volatile Memory Express)規格、PCIe(登録商標)(Peripheral Component Interconnect Exprress)規格、SATA(Serial Advanced Technology Attachment)規格、または、SAS(Serial Attached Small Computer System Interface)規格などでもよい。
メモリインタフェース部MI0~MI3は、チャネルCh0~チャネルCh3のそれぞれに対応する。メモリインタフェース部MI0~MI3は、メモリNM00~NM03に対するデータ、情報、信号、コマンド、リクエスト、メッセージ、指示、応答などを送受信する回路である。メモリインタフェース部MI0によるメモリNM00~NM03に対するライトまたはリードと、メモリインタフェース部MI1によるメモリNM10~NM13に対するライトまたはリードと、メモリインタフェース部MI2によるメモリNM20~NM23に対するライトまたはリードと、メモリインタフェース部MI3によるメモリNM30~NM33に対するライトまたはリードとは、互いに並列に実行可能である。言い換えれば、コントローラ4は、チャネルCh0~チャネルCh3のうちの複数のチャネルに対して並列にライトまたはリードを実行可能である。以下においては、簡略化のために、メモリインタフェース部MI0~MI3を省略して説明する場合がある。チャネルの数、および、メモリインタフェース部の数は、3ではなく、1、2、または、4以上であってもよい。
メモリ部6は、例えばファームウェアFW、アドレス変換テーブルATを記憶する。また、メモリ部6は、パリティを生成するために例えば作業用として使用されるパリティ記憶部10を含む。メモリ部6は、例えば、SRAM(Static Random Access Memory)としてもよい。また、メモリ部6は、例えばDRAM(Dynamic random Access Memory)とSRAMとの組み合わせでもよい。メモリ部6は、コントローラ4の内部でなく外部に配置されてもよい。
また、メモリ部6は、生成されたパリティを不揮発な状態で記憶してもよい。
ファームウェアFWは、プロセッサ7によって実行されるソフトウェアの一例である。ファームウェアFWは、例えば、コードとデータとを含む。ファームウェアFWは、プロセッサ7によって実行されることにより、ホストインタフェース部5、メモリインタフェース部MI0~MI3、メモリ部6、エラー訂正部8を制御する。
第1の実施形態において、ファームウェアFWは、例えば、プロセッサ7に、機能71~75を実現させる。
機能71は、不揮発性記憶装置3に所定量(第1の量)の第1のデータがライトされたことを検出する。あるいは、機能71は、不揮発性記憶装置3の所定の位置まで第1のデータがライトされたことを検出してもよい。ここで、データの量とは、例えば、データのサイズを意味するものとしてもよい。また、データの量とは、所定のサイズを有するデータの個数を意味するものとしてもよい。
機能72は、不揮発性記憶装置3に所定量の第1のデータがライトされた場合に、パリティ記憶部10として使用可能なメモリサイズを検出し、検出したメモリサイズに基づいて、ライトが完了した第1のデータに含まれておりパリティ生成対象としてリードするデータを決定(または選択)する。ここで、パリティ生成対象は、パリティを生成する際に使用されるデータである。あるいは、機能72は、不揮発性記憶装置3の所定の位置まで第1のデータがライトされた場合に、ライトが完了した第1のデータに含まれておりパリティ生成対象としてリードするデータを決定してもよい。
機能73は、パリティ生成対象として決定されたデータを、不揮発性記憶装置3からリードする。
機能74は、エラー訂正部8およびパリティ記憶部10を用いて、リードしたデータに対応するパリティを生成する。
機能75は、生成したパリティを、例えばメモリ部6、不揮発性記憶装置3、または図示しない他の不揮発性メモリなどのようなパリティ保存用のメモリに、不揮発な状態でライトする。
アドレス変換テーブルATは、メモリNM00~NM33に記憶されているデータの論理アドレスと、そのデータが記憶されている位置を特定する物理アドレスとを関連付けている。アドレス変換テーブルATは、ルックアップテーブルと言い換えてもよい。論理アドレスは、例えばLBA(Logical Block Addressing)でもよい。物理アドレスは、例えばPBA(Physical Block Addressing)でもよい。
エラー訂正部8は、例えば、ECC(Error Correcting Code)などを用いたエラー検出処理およびエラー訂正処理を実行する回路である。より具体的に説明すると、エラー訂正部8は、プロセッサ7によって実行される制御にしたがって、パリティ記憶部10を使用しつつデータに対応するパリティを生成する。また、エラー訂正部8は、プロセッサ7によって実行される制御にしたがって、メモリNM00~NM33からリードしたデータと、当該データに対応するパリティとに基づいて、リードしたデータのエラーを検出および訂正する。なお、エラー訂正部8は、例えば、プロセッサ7内に備えられてもよい。また、エラー訂正部8は、メモリインタフェース部MI0~MI3それぞれに備えられてもよい。
プロセッサ7は、ファームウェアFWにしたがって各種の制御を実行する。
プロセッサ7は、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)などの各種の処理デバイスのいずれかである。
プロセッサ7は、例えば、メモリシステム1の起動時に、メモリNM00~NM33のうちの少なくとも1つからメモリインタフェース部MI0~MI3のうちの少なくとも1つ経由で、ファームウェアFWおよびアドレス変換テーブルATをリードする。そして、プロセッサ7は、ファームウェアFWおよびアドレス変換テーブルATをメモリ部6に記憶させる。
プロセッサ7は、例えば、メモリシステム1が停止する前に、メモリ部6に記憶されているアドレス変換テーブルATを、メモリインタフェース部MI0~MI3のうちの少なくとも1つ経由でメモリNM00~NM33のうちの少なくとも1つへライトする。
第1の実施形態において、プロセッサ7は、メモリインタフェース部MI0~MI3のうちの少なくとも1つ経由で、メモリNM00~NM33のうちの少なくとも1つに対するガベージコレクションを実行する。
例えば、プロセッサ7は、データのライト処理時に、ファームウェアFWにしたがって上記の機能71~75を実現する。具体的には、プロセッサ7は、データのライト処理時に、不揮発性記憶装置3に対してデータをライトする。また、プロセッサ7は、ライトしたデータを不揮発性記憶装置3からリードする。さらに、プロセッサ7は、パリティ記憶部10およびエラー訂正部8を用いて、リードしたデータに対応するパリティを生成する。そして、プロセッサ7は、生成したパリティを、メモリ部6、不揮発性記憶装置3、または図示しない他の不揮発性メモリにライトする。
例えば、プロセッサ7は、データのリード処理時に、不揮発性記憶装置3からデータをリードする。また、プロセッサ7は、メモリ部6、不揮発性記憶装置3、または図示しない他の不揮発性メモリから、リードしたデータに対応するパリティをリードする。そして、プロセッサ7は、リードしたパリティおよびエラー訂正部8を用いて、リードしたデータにエラーが含まれるか否かを判断し、リードしたデータにエラーが含まれる場合に、エラーを訂正する。
次に、図2ないし図5を用いて、第1の実施形態に係るメモリNM00の構成の詳細を説明する。なお、メモリNM01~NM33も、メモリNM00と同様の構成を持つものとする。
図2は、第1の実施形態に係るメモリNM00の構成の一例を示す図である。
メモリNM00は、メモリセルアレイを備えている。メモリセルアレイは、複数の不揮発性メモリセルトランジスタを備える。複数の不揮発性メモリセルトランジスタのそれぞれは、ワード線及びビット線に関連付けられている。メモリNM00は、複数の不揮発性メモリセルトランジスタの集合を含む複数のブロックB0~Bnを備えている。
メモリNM00のブロックB0~Bnのそれぞれは、複数のストリングユニットSU0~SUkを備える。複数のストリングユニットSU0~SUkのそれぞれは、複数のNANDストリング(以下、ストリングという)Strを備える。各ストリングStrでは、複数のメモリセルトランジスタが直列接続されている。
以下においてブロックB0~Bnを区別しない場合には、ブロックBと称す。ストリングユニットSU0~SUmを区別しない場合には、ストリングユニットSUと称す。メモリNM00内のブロック数n+1、及び、1ブロックB内のストリングユニット数k+1は任意である。
図3は、ブロックBの一部の構成の例を示す図である。この図3では、ブロックBに備えられる複数のストリングユニットSU0~SUkのうちの4つのストリングユニットSU0~SU3の一部を図示している。
図3に示すようなブロックBの一部と同様の構成は、紙面の奥行方向に複数設けられている。上記のように、ブロックBは、例えばk+1個のストリングユニットSU0~SUkを含む。ストリングユニットSU0~SUkのそれぞれは、図3の紙面の奥行方向に複数のストリングStrおよびビット線BLを含む。より具体的には、図3は、ストリングユニットSU0に含まれている複数のストリングのうちのあるビット線BLと接続されている1つのストリングStrと、ストリングユニットSU1に含まれている複数のストリングのうちのビット線BLと接続されている1つのストリングStrと、ストリングユニットSU2に含まれている複数のストリングのうちのビット線BLと接続されている1つのストリングStrと、ストリングユニットSU3に含まれている複数のストリングのうちのビット線BLと接続されている1つのストリングStrとを、示している。
ストリングStrのそれぞれは、例えば48個のメモリセルトランジスタMT0~MT47と、選択トランジスタST1,ST2とを含む。メモリセルトランジスタMT0~MT47のそれぞれは、制御ゲートと電荷蓄積層とを含む積層ゲートを備え、データを不揮発に記憶する。なお、メモリセルトランジスタMT0~MT47の個数は48個に限られず、8個、16個、32個、64個、128個等でもよく、その数は限定されない。以下においてメモリセルトランジスタMT0~MT47を区別しない場合には、単にメモリセルトランジスタMTと称す。
複数のメモリセルトランジスタMTは、選択トランジスタST1,ST2それぞれの電流経路の一端の間に、直列接続されるように配置される。
ストリングユニットSU0~SU3のそれぞれに含まれているストリングStrの選択トランジスタST1のそれぞれのゲートは、選択ゲート線SGD0~SGD3のそれぞれに接続される。ストリングユニットSU0~SU3のそれぞれに含まれているストリングStrの選択トランジスタST2のそれぞれのゲートは、選択ゲート線SGS0~SGS3のそれぞれに接続される。これに対して同一のブロックB内にあるメモリセルトランジスタMT0~MT47のそれぞれの制御ゲートは、ワード線WL0~WL47のそれぞれに共通接続される。なお、以下において、選択ゲート線SGD0~SGD3を区別しない場合、選択ゲート線SGD0~SGD3のそれぞれは、単に選択ゲート線SGDとも称する。選択ゲート線SGS0~SGS3を区別しない場合、選択ゲート線SGS0~SGS3のそれぞれは、単に選択ゲート線SGSとも称する。ワード線WL0~WL47を区別しない場合には、単にワード線WLと称す。
ワード線WL0~WL47は同一ブロックB内の複数のストリングユニットSU0~SU3間で共通に接続されているのに対し、選択ゲート線SGD,SGSは、同一ブロックB内であってもストリングユニットSU0~SU3毎に独立している。しかし、選択ゲート線SGS0~SGS3は、ストリングユニットSU0~SU3間で共通に接続されてもよい。
図3において、メモリセルアレイ内に配置された複数のストリングStrのそれぞれに配置されている選択トランジスタST1の電流経路の他端は、ブロックBに備えられている複数のビット線のうちのいずれかのビット線BLに共通接続される。また、複数のストリングStrのそれぞれに配置されている選択トランジスタST2の電流経路の他端は、ソース線SLに共通に接続されている。
同一のブロックB内にあるメモリセルトランジスタMTのデータは、一括して消去される。これに対してデータのリードおよびライトは、いずれかのブロックBのいずれかのストリングユニットSUにおける、いずれかのワード線WLに共通に接続された複数のメモリセルトランジスタMTに対して、一括して行われる。このように一括してリードおよびライトされる単位を「ページ」と呼ぶ。
図4は、第1の実施形態に係るメモリNM00におけるブロックB0~BnとプレーンPL0,PL1との関係の例を示す図である。
メモリNM00は、複数の(一例として2つの)プレーンPL0,PL1を含む。プレーンPL0は、ブロックB0,B2,…,Bn-1、ページレジスタPR0を含む。プレーンPL1は、ブロックB1,B3,…,Bn、ページレジスタPR1を含む。図5では、ブロックB2を代表して説明するが、ブロックB0,B1,B3~Bnも、ブロックB2と同様である。
ブロックB2は、複数のページを含む。ブロックB2は、複数のワード線WL0~WLmと、複数のワード線WL0~WLmのそれぞれに接続される複数のメモリセルトランジスタMTとを備える。
第1の実施形態において、1つのメモリセルトランジスタMTは、3ビットの情報を保存可能なTLC(Triple Level Cell)であるとする。なお、メモリセルトランジスタMTは、例えば、1ビットの情報を保存可能なSLC(Single Level Cell)、2ビットの情報を保存可能なMLC(Multi Level Cell)、4ビットの情報を保存可能なQLC(Quad Level Cell)、5ビット以上の情報を保存可能としてもよい。
以下、データのライト処理およびリード処理の際に一括して選択されるメモリセルトランジスタMTの群を「メモリセルグループ」と表記する。
1つのストリングユニットSUにおいて、ワード線WL0に接続されている複数のメモリセルトランジスタMTがメモリセルグループMCG0に対応する。同様に、1つのストリングユニットSUにおいて、ワード線WL1~WLmのそれぞれに接続されている複数のメモリセルトランジスタMTが、それぞれメモリセルグループMCG1~MCGmに対応する。TLCが記憶する3ビットデータは、下位から順に下位ビット(lowerビット)、中位ビット(middleビット)、上位ビット(upperビット)である。
メモリセルグループMCG0において、下位ビットの集合は下位ページ(lowerページ)であり、中位ビットの集合は中位ページ(middleページ)であり、上位ビットの集合は上位ページ(upperページ)である。メモリグループMCG1~MCGmのそれぞれも、メモリセルグループMCG0と同様に、下位ページ、中位ページ、および、上位ページを含む。
以下で、第1の実施形態に係るパリティの生成の動作を説明する。
図5は、第1の実施形態に係るフレームA~Xの構成の例を示す図である。
第1の実施形態において、フレームとは、例えば、1つのパリティを生成するためのデータを含む単位とする。以下の説明において、フレームは、パリティを生成するデータの単位であるとともに、そのデータそのものとしても説明する。
フレームAは、複数のサブフレームA-1~A-8に分けられる。エラー訂正部8は、フレームAに対してパリティPAを生成する。
フレームB~Xのそれぞれも、フレームAと同様に、それぞれ8個のサブフレームB-1~B-8,…,X-1~X-8に分けられる。エラー訂正部8は、フレームB~Xのそれぞれに対して、パリティPB~PXのそれぞれを生成する。
以下においてパリティPA~PXを区別しない場合には、パリティP#と称す。
サブフレームA-1~A-8,…,X-1~X-8それぞれのサイズは同じであるとする。パリティPA~PXそれぞれのサイズは、サブフレームA-1~A-8,…,X-1~X-8それぞれのサイズと同じであるとする。なお、1つのフレームを構成するサブフレームの数は、適宜変更可能である。
図6は、第1の実施形態に係る論理ブロックLBおよびパリティ記憶部10の例を示す図である。
図6では、ワード線WLが4本以上であり、バンクBkの数が4であり、1本のワード線WLに4個のストリングStrが対応付けられている場合を例示している。また、論理ブロックLBのメモリセルトランジスタMTの種類は、TLCである場合を例示している。しかしながら、第1の実施形態において、ワード線WLの本数、バンクBkの数、ワード線WLに対応付けられるストリングStrの数、プレーンPLの数、メモリセルトランジスタMTの種類は、メモリNM00~NM33の特性などに応じて適宜変更可能である。論理ブロックLBに含まれる複数のブロックBは、プレーンPL0またはプレーンPL1に属する。図6は、ワード線WL0~WLmのうち、ワード線WL0~WL3に対応する部分を図示しており、ワード線WL4~WLmに対応する部分を省略している。
図6は、ワード線WL0~WL3に対して、フレームA~Xがライトされる状態を例示している。
図6においては、ワード線WL0~WL3のそれぞれに対して、縦方向に4個のストリングStr0~Str3が対応付けられている。さらに、ストリングStr0~Str3のそれぞれに対して、縦方向に3つのページ(下位ページ/中位ページ/上位ページ)が対応付けられている。このように、1本のワード線WLは、4個のストリングStr0~Str3に対応する。1個のストリングStrは3つのページに対応する。
また、図6においては、横方向に4個のバンクBk0~Bk3が配置されている。
このようなワード線WL、ストリングStr、ページ、バンクBkの構成を持つ論理ブロックLBにおいては、1本のワード線WLに対して、互いに異なる12個のフレームそれぞれに属する4個のサブフレーム(すなわち、48個のサブフレーム)がライトされる。
プロセッサ7は、メモリNM00~NM33の特性にしたがって、並列にパリティの生成を行うフレームの割り当てを決定する。図6の場合、プロセッサ7は、2本のワード線に対して24個のフレームA~Xを割り当てることを決定し、24個のフレームA~Xに対して並列にパリティの生成を実行する。メモリNM00~NM33の特性は、例えば、メモリNM00~NM33に記憶したデータをリードした際のエラーモード、または、メモリNM00~NM33内の記憶位置に応じた物理的な特性などでもよい。
プロセッサ7は、論理ブロックLBに対して、ワード線WL0~WLmの番号の小さい方から大きい方へ順に、例えば2本のワード線WLにわたってフレームA~Xを割り当ててライトする。
具体的には、プロセッサ7は、ワード線WL0のストリングStr0およびバンクBk0~Bk3に対して、サブフレームA-1~A―4,B-1~B-4,C-1~C-4をライトする。次に、プロセッサ7は、ワード線WL0のストリングStr1およびバンクBk0~Bk3に対して、サブフレームD-1~D―4,E-1~E-4,F-1~F-4をライトする。次に、プロセッサ7は、ワード線WL0のストリングStr2およびバンクBk0~Bk3に対して、サブフレームG-1~G―4,H-1~H-4,I-1~I-4をライトする。次に、プロセッサ7は、ワード線WL0のストリングStr3およびバンクBk0~Bk3に対して、サブフレームJ-1~J―4,K-1~K-4,L-1~L-4をライトする。
次に、プロセッサ7は、ワード線WL1のストリングStr0およびバンクBk0~Bk3に対して、サブフレームM-1~M―4,N-1~N-4,O-1~O-4をライトする。次に、プロセッサ7は、ワード線WL1のストリングStr1およびバンクBk0~Bk3に対して、サブフレームP-1~P―4,Q-1~Q-4,R-1~R-4をライトする。次に、プロセッサ7は、ワード線WL1のストリングStr2およびバンクBk0~Bk3に対して、サブフレームS-1~S―4,T-1~T-4,U-1~U-4をライトする。次に、プロセッサ7は、ワード線WL1のストリングStr3およびバンクBk0~Bk3に対して、サブフレームV-1~V―4,W-1~W-4,X-1~X-4をライトする。
以下、上記のワード線WL0,WL1と同様の手順で、プロセッサ7は、ワード線WL2の各ストリングStr0~Str3およびバンクBk0~Bk3に対して、サブフレームA-5~A-8,…,L5-L8をライトし、次に、ワード線WL3の各ストリングStr0~Str3およびバンクBk0~Bk3に対して、サブフレームM-5~M-8,…,X-5~X-8をライトする。
言い換えれば、第1の実施形態においては、複数のワード線WLに対して、直列にライトが実行される。また、1つのワード線WLにおける複数のストリングStrに対して、直列にライトが実行される。
パリティを計算する際にリードするフレームの並列数とリードするフレームの場所を決定する(選択する)ことを、フレームを組む、と表現してもよい。
プロセッサ7は、例えばワード線WL2,WL3のバンクBk3まで、すなわち、図6の位置LCまでのライトが完了すると、フレームA~Xそれぞれに対するパリティPA~PXを生成可能となる。
プロセッサ7は、ブロックLBに対するライトの状態がパリティ生成条件を満たすか否かを判断する。パリティ生成条件は、例えば、ブロックLBに対して所定量(例えばフレームA~Xのデータサイズ以上)のライトが完了すること、ブロックLBの所定の位置LCまでのライトが完了すること、ブロックLBの位置LCより後にライトされる所定の位置までのライトが完了すること、または、ブロックLBの終端(例えば、ワード線WLmのバンクBk3)までのライトが完了すること、としてもよい。
プロセッサ7は、ブロックLBに対するライトの状態がパリティ生成条件を満たす場合に、メモリ部6の状態などに基づいて、パリティ記憶部10として使用可能なメモリサイズを検出する。そして、プロセッサ7は、検出したメモリサイズに基づいて、ブロックLBにライト済みでありパリティを生成するためにリードするフレームを決定する。図6は、フレームAがパリティを生成する対象として決定された場合を例示している。しかしながら、他のフレームB~Xがパリティを生成する対象として決定されてもよい。フレームA~Xのうちの少なくとも2つがパリティを生成する対象として決定されてもよい。
プロセッサ7は、パリティ生成対象として決定されたフレームAをブロックLBからリードする。プロセッサ7は、エラー訂正部8およびパリティ記憶部10を用いて、リードしたフレームAに対するパリティPAを生成し、生成したパリティPAを不揮発な状態でライトする。生成したパリティPAは、例えば、メモリ部6、不揮発性記憶装置3、または、他の不揮発性メモリにライトされればよい。
図7は、第1の実施形態に係るフレームのライト処理およびパリティ生成処理の例を示すフローチャートである。
S701において、プロセッサ7は、論理ブロックLBに対するフレームのライトを実行する。
S702において、プロセッサ7は、論理ブロックLBに対して所定量(第1の量)のフレームがライトされたか否かを判断する。
論理ブロックLBに対して所定量のフレームがライトされていない場合(S702のNo)、処理はS701へ移動する。
論理ブロックLBに対して所定量のフレームがライトされた場合(S702のYes)、S703において、プロセッサ7は、メモリ部6の状態(例えばパリティP#の生成のために使用可能なメモリサイズ)などに基づいて、論理ブロックLBにライト済みである所定量のフレームに含まれており、パリティP#を生成するためにリードする第2の量のフレームを決定する。ここで、第2の量は、上記の所定量(第1の量)より少ないものとする。
S704において、プロセッサ7は、所定量のフレームのライトが完了した後、論理ブロックLBに対して、決定した第2の量のフレームのリードを実行する。
S705において、プロセッサ7は、エラー訂正部8およびパリティ記憶部10を使用して、リードした第2の量のフレームに対応するパリティP#を生成する。
S706において、プロセッサ7は、生成したパリティP#を、不揮発な状態で、例えば、メモリ部6、不揮発性記憶装置3、または、他の不揮発性メモリにライトする。
S707において、プロセッサ7は、パリティ生成待ちのフレームがあるか否かを判断する。
パリティ生成待ちのフレームがある場合(S707のYes)、処理は、S703へ移動する。S703において、プロセッサ7は、メモリ部6の状態などに基づいて、論理ブロックLBにライト済みである所定量のフレームに含まれており、新たなパリティを生成するためにリードする第3の量のフレームを決定する。その後、先に説明したS704以降と同様の処理が繰り返される。
パリティ生成待ちのフレームがない場合(S707のNo)、S708において、プロセッサ7は、フレームのライトを終了するか否かを判断する。
ライトを終了しない場合(S708のNo)、処理は、S701へ移動する。
ライトを終了する場合(S708のYes)、処理は、終了する。
以下で、パリティを生成するためにリードされるフレームの並列数を決定する処理について説明する。
例えば、メモリシステム1は、フレームA~Xが論理ブロックLBにライトされた後、並列数1でフレームAをリードし、リードしたフレームAのパリティPAを生成する場合を考える。
この場合、パリティPAを生成するために必要になるメモリのサイズは、1フレーム分のパリティサイズでよい。
プロセッサ7は、まず、1フレーム分のパリティサイズのパリティ記憶部10を確保し、1個のフレームAに含まれる複数のサブフレームA-1~A-8をリードする。プロセッサ7は、確保したパリティ記憶部10を使用して、フレームAに対応するパリティPAを生成し、生成したパリティPAを不揮発化する。
プロセッサ7は、次に、1個のフレームBに含まれる複数のサブフレームB-1~B-8をリードする。プロセッサ7は、1フレーム分のパリティサイズのパリティ記憶部10を使用して、フレームBに対応するパリティPBを生成し、生成したパリティPBを不揮発化する。
以下、同様に、プロセッサ7は、フレームCからフレームXまで、同様の処理を1フレームずつ順次実行する。すなわち、プロセッサ7は、1フレーム分のパリティサイズのパリティ記憶部10を使用して、1フレームずつパリティPCからパリティPXまでを順次生成し、1フレームずつパリティPCからパリティPXまでを順次不揮発化する。
プロセッサ7は、フレームA~XのリードおよびパリティPA~PXの生成をしている間においても、フレームXより後のフレームのライト処理を進める。言い換えれば、プロセッサ7は、フレームA~Xの後にライトされるフレームのライト処理と、フレームA~Xに対応するパリティPA~PXを生成するための処理とを、パイプライン処理により実行する。
プロセッサ7は、パリティ記憶部10としてパリティP#の生成に使用することができるメモリサイズに基づいて、並列数を決定する。
例えば、プロセッサ7は、パリティP#の生成に使用することができるメモリサイズが大きい場合、並列数を多くすることができる。
例えば、プロセッサ7は、パリティP#の生成に使用することができるメモリサイズが小さい場合、並列数を少なくすることができる。
プロセッサ7は、パリティP#の生成に使用することができるメモリサイズと、並列数とを関連付けたテーブルに応じて、並列数を決定してもよい。あるいは、プロセッサ7は、パリティP#の生成に使用することができるメモリサイズから並列数を算出する計算式を用いて、並列数を決定してもよい。
第1の実施形態のように、フレームのリードおよびパリティP#の生成を行う並列数を決定および変更することにより、パリティP#の生成に使用されるパリティ記憶部10のメモリサイズを決定および変更することができる。
以上説明した第1の実施形態に係るメモリシステム1と、比較例のメモリシステムとを、図6を用いて対比することにより、第1の実施形態に係るメモリシステム1の効果を説明する。
比較例のメモリシステムは、複数のフレームA~Xを論理ブロックLBにライトしながら、比較例のパリティ記憶部を用いて、複数のフレームA~Xに対応する複数のパリティPA~PXを生成する。
そして、比較例のメモリシステムは、ブロックLBに対するライトが位置LCまで完了すると、複数のフレームA~Xごとの複数のパリティPA~PXを不揮発化する。
比較例のメモリシステムは、第1の実施形態に係るメモリシステム1と同様に、ワード線WL0のストリングStr0に対してフレームをライトし、次に、ワード線WL0のストリングStr1に対してフレームをライトし、以下同様の処理を繰り返す。比較例のメモリシステムは、ライトと同時にパリティ生成のための処理を実行する。比較例のメモリシステムにおいて、並列にパリティ生成を実行するフレームの数は例えば24であるとする。この場合、比較例のメモリシステムでは、複数のパリティPA~PX分のメモリサイズを有するパリティ記憶部を確保する必要がある。このため、比較例のパリティ記憶部は、(1フレームあたりのパリティサイズ)×24のメモリサイズを有する必要がある。パリティP#のサイズをqキビバイトとし、並列にライトされるフレームの数をr個とすると、パリティPA~PXを生成するために使用される比較例のパリティ記憶部は、q×rキビバイトのメモリサイズを有する必要がある。例えば、q=32、r=24である場合、比較例のパリティ記憶部として768キビバイトのメモリサイズが確保される。比較例のパリティ記憶部として使用可能なメモリサイズは、メモリ部6の使用量の影響を受ける。比較例のパリティ記憶部のメモリサイズは、比較例のメモリシステムのコストおよび消費電力に影響するため、なるべく小さいことが好ましい。
以上説明したように、比較例のメモリシステムは、論理ブロックLBに対するフレームのライトと並列に、比較例のパリティ記憶部を用いて、パリティの生成を行う。比較例のメモリシステムは、並列にライトしたフレームに対応するパリティが完成したか否かを判断し、パリティが完成した場合、比較例のパリティ記憶部にライトされているパリティのそれぞれを不揮発化する。
このような比較例のメモリシステムでは、並列にライトされるフレームの数が増えるほど、パリティの生成に使用される比較例のパリティ記憶部のメモリサイズも増加する。
これに対して、第1の実施形態に係るメモリシステム1においては、論理ブロックLBにまとまった量(第1の量)のフレームA~Xがライトされた後に、パリティが生成される。メモリシステム1は、フレームA~Xがライトされた後、パリティの生成に使用可能なメモリサイズに対応する並列数で、パリティ生成対象となる並列数(第2の量)のフレームを論理ブロックLBからリードする。そして、メモリシステム1は、リードした第2の量のフレームに対応するメモリサイズのパリティ記憶部10を使用してパリティを生成し、生成したパリティを、不揮発な状態でメモリ部6、不揮発性記憶装置3、他の不揮発性メモリにライトする。
このような第1の実施形態に係るメモリシステム1においては、パリティ生成時に論理ブロックLBからリードするパリティ生成対象フレームの並列数を下げることにより、比較例のメモリシステムよりもパリティ生成で使用されるメモリのサイズを削減することができる。したがって、第1の実施形態に係るメモリシステム1においては、比較例のメモリシステムよりもコストおよび消費電力を削減することができる。
第1の実施形態においては、フレームをライトしながらパリティを生成するのではなく、所定量、または、所定の位置のライトが完了した後に、パリティを生成する少なくとも1つのフレームを決定し、決定した少なくとも1つのフレームを論理ブロックLBからリードし、少なくとも1つのフレームに対応するパリティを生成する。したがって、第1の実施形態においては、パリティを生成するのに適した条件の下で、パリティ生成を開始することができる。また、第1の実施形態においては、並列に生成されるパリティの数をフレームのライト処理の並列数よりも少なくすることで、パリティの生成に使用されるメモリサイズを少なく設定することができる。例えば、1フレームごとにパリティを生成する場合、パリティを生成するために使用されるメモリのサイズは、1つのパリティサイズでよい。
第1の実施形態においては、フレームA~Xの後にライトされるフレームのライト処理と、フレームA~Xに対応するパリティPA~PXの生成とを、パイプライン処理により実行する。これにより、プロセッサ7の性能低下を抑制することができる。
第1の実施形態においては、パリティ生成待ちのフレームがなくなるまで、パリティ生成を繰り返すことができる。
メモリNM00~NM33の特性が変化すると、論理ブロックLBにライトされるフレームの構成も変化し得る。第1の実施形態においては、フレームの構成が変化しても、パリティの生成に使用可能なメモリサイズに応じてパリティを生成するフレームの並列数を決定し、決定された並列数にしたがって柔軟にパリティを生成することができる。
(第2の実施形態)
第2の実施形態においては、上記第1の実施形態に係るパリティの生成を、ガベージコレクションの処理において使用する場合を説明する。
図8は、第2の実施形態に係るガベージコレクションの処理の例を示す図である。
プロセッサ7は、ガベージコレクションの処理を実行することにより、メモリNM00~NM33におけるガベージコレクション元ブロックSB1~SBp内に断片的に配置されているデータを、ガベージコレクション先ブロックDBにまとめて再配置し、ガベージコレクション元ブロックSB1~SBp内のデータを無効化する。図8において、pは2以上である。ガベージコレクション先ブロックDBの数は、ガベージコレクション元ブロックSB1~SBpの数よりも少なくなる。
プロセッサ7は、ガベージコレクション先ブロックDBへの再配置におけるデータのライトの際に、上記第1の実施形態で説明したパリティ生成処理を実行する。
具体的には、プロセッサ7は、ガベージコレクションの処理において、ガベージコレクション元ブロックSB1~SBpからデータをリードし、ガベージコレクション元ブロックSB1~SBpからリードしたデータをガベージコレクション先ブロックDBへライトする。プロセッサ7は、ガベージコレクション先ブロックDBへのライトが完了した後、ライトしたデータをガベージコレクション先ブロックDBからリードする。プロセッサ7は、ガベージコレクション先ブロックDBからリードしたデータに対応するパリティを生成し、生成したパリティを不揮発化する。
図8に示すように、ガベージコレクション先ブロックDBへのデータのライト中に、例えばメモリシステム1の電源が切断されるなどのような障害が発生し、パリティが生成されなかったとする。
このような場合、プロセッサ7は、データのライトが途中まで進行したガベージコレクション先ブロックDBに記憶されたデータを無効化する。プロセッサ7は、ガベージコレクション元ブロックSB1~SBpから別のガベージコレクション先ブロックADBへデータを移動し、ガベージコレクション元ブロックSB1~SBpに記憶されたデータを無効化し、パリティを生成する。あるいは、プロセッサ7は、データのライトが途中まで進行したガベージコレクション先ブロックDBに記憶されたデータを消去する。プロセッサ7は、再び、ガベージコレクション元ブロックSB1~SBpから当該ガベージコレクション先ブロックDBへデータの移動を開始し、ガベージコレクション元ブロックSB1~SBpに記憶されたデータを無効化し、パリティを生成する。
以上説明した第2の実施形態においては、ガベージコレクションの処理の際に、パリティを生成するために使用されるパリティ記憶部10のメモリサイズを削減することができる。
第2の実施形態においては、ガベージコレクション元ブロックSBをバックアップのように使用する。これにより、ガベージコレクション中に障害が生じた場合に、ガベージコレクションを再開することができ、メモリシステム1の信頼性を高くすることができる。
第2の実施形態においては、第1の実施形態に係るパリティの生成を、ガベージコレクションにおいて使用する場合を説明している。しかしながら、上記第1の実施形態に係るパリティの生成は、例えば、リフレッシュまたはウェアレベリングなどのようなメモリシステム1で実行される他のバックグラウンド処理時に、実行されてもよい。
第2の実施形態において、プロセッサ7は、例えば、ガベージコレクション、リフレッシュ、または、ウェアレベリングなどのようなバックグラウンド処理ではないライト処理時に、上記比較例のメモリシステムで行うようなパリティ生成を実行してもよい。バックグラウンド処理ではないライト処理は、例えば、ホストデバイス2からのライトコマンドにしたがってデータをライトする処理などを含む。
具体的には、プロセッサ7は、バックグラウンド処理ではないライト処理時に、不揮発性記憶装置3へライト対象データをライトし、ライト対象データのライトが完了する前から、ライト対象データに対応するパリティの生成(または計算)を開始し、生成したライト対象データに対応するパリティをパリティ保存用のメモリにライトしてもよい。この場合、ライト処理の種類に応じて、適切なパリティ生成を実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、2…ホストデバイス、3…不揮発性記憶装置、4…コントローラ、5…ホストインタフェース部、6…メモリ部、7…プロセッサ、71~75…機能、8…エラー訂正部、10,13…パリティ記憶部、NM00~NM33…メモリ、AT…アドレス変換テーブル、FW…ファームウェア、A~X…フレーム、A-1~X-8…サブフレーム、PA~PX…パリティ、SB1,SB2…ガベージコレクション元ブロック、DB…ガベージコレクション先ブロック、ADB…別のガベージコレクション先ブロック

Claims (10)

  1. 不揮発性メモリと、
    前記不揮発性メモリを制御するコントローラと、
    を具備し、
    前記コントローラは、
    前記不揮発性メモリへデータをライトし、
    前記ライトが完了した後、前記ライトしたデータを前記不揮発性メモリからリードし、
    前記リードしたデータに対応するパリティを生成し、
    前記生成したパリティをパリティ保存用のメモリにライトする、
    メモリシステム。
  2. 前記コントローラは、
    前記不揮発性メモリに対する所定量の第1のデータのライトが完了した後、前記第1のデータに含まれており前記ライトが完了したデータを前記不揮発性メモリからリードし、前記リードしたデータに対応するパリティを生成する、
    請求項1のメモリシステム。
  3. 前記コントローラは、
    前記不揮発性メモリの所定位置までの第1のデータのライトが完了した後、前記第1のデータに含まれており前記ライトが完了したデータを前記不揮発性メモリからリードし、前記リードしたデータに対応するパリティを生成する、
    請求項1のメモリシステム。
  4. 前記コントローラは、前記不揮発性メモリへ第1の量のデータをライトし、
    前記第1の量のデータに含まれておりパリティ生成対象であり前記第1の量より少ない第2の量のデータを決定し、
    前記ライトが完了した後、前記第2の量のデータを前記不揮発性メモリからリードし、
    前記リードした第2の量のデータに対応するパリティを生成する、
    請求項1ないし請求項3のうちのいずれか1項のメモリシステム。
  5. 前記コントローラは、前記パリティの生成のために使用可能なメモリサイズに基づいて、前記第2の量のデータを決定する、
    請求項4のメモリシステム。
  6. 前記コントローラは、前記第2の量のデータに対応する前記パリティを前記パリティ保存用のメモリにライトした後、前記第1の量のデータのうちの前記第2の量のデータとは異なるデータを新たなパリティ生成対象として決定する、
    請求項4または請求項5のメモリシステム。
  7. 前記コントローラは、前記不揮発性メモリに前記データの後にライトされるデータのライト処理と、前記データに対応する前記パリティを生成するための処理とを、パイプライン処理により実行する、
    請求項1ないし請求項6のうちのいずれか1項のメモリシステム(1)。
  8. 前記コントローラは、ガベージコレクションの処理において、
    前記不揮発性メモリのガベージコレクション元ブロックから前記データをリードし、
    前記ガベージコレクション元ブロックからリードした前記データを前記不揮発性メモリのガベージコレクション先ブロックへライトし、
    前記ガベージコレクション先ブロックへの前記ライトが完了した後、前記ライトしたデータを前記ガベージコレクション先ブロックからリードし、
    前記ガベージコレクション先ブロックからリードした前記データに対応する前記パリティを生成し、
    前記生成したパリティを前記パリティ保存用のメモリにライトする、
    請求項1ないし請求項7のいずれか1項のメモリシステム。
  9. 前記コントローラは、ガベージコレクションではないライト処理時に、前記不揮発性メモリへライト対象データをライトし、前記ライト対象データの前記ライトが完了する前から、前記ライト対象データに対応するパリティの生成を開始し、前記生成した前記ライト対象データに対応する前記パリティを前記パリティ保存用のメモリにライトする、
    請求項8のメモリシステム。
  10. 不揮発性メモリを含むメモリシステムの制御方法であって、
    前記不揮発性メモリへデータをライトすることと、
    前記ライトが完了した後、前記ライトしたデータを前記不揮発性メモリからリードすることと、
    前記リードしたデータに対応するパリティを生成することと、
    前記生成したパリティをパリティ保存用のメモリにライトすることと、
    を具備する制御方法。
JP2021043664A 2021-03-17 2021-03-17 メモリシステムおよびその制御方法 Pending JP2022143243A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021043664A JP2022143243A (ja) 2021-03-17 2021-03-17 メモリシステムおよびその制御方法
US17/348,412 US11645003B2 (en) 2021-03-17 2021-06-15 Memory system generating parity data based on written data and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021043664A JP2022143243A (ja) 2021-03-17 2021-03-17 メモリシステムおよびその制御方法

Publications (1)

Publication Number Publication Date
JP2022143243A true JP2022143243A (ja) 2022-10-03

Family

ID=83284688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021043664A Pending JP2022143243A (ja) 2021-03-17 2021-03-17 メモリシステムおよびその制御方法

Country Status (2)

Country Link
US (1) US11645003B2 (ja)
JP (1) JP2022143243A (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
JP6212396B2 (ja) 2014-01-08 2017-10-11 ルネサスエレクトロニクス株式会社 データ処理装置
JP2017027388A (ja) 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
JP6928247B2 (ja) * 2017-09-11 2021-09-01 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム
KR20190073132A (ko) * 2017-12-18 2019-06-26 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11494306B2 (en) * 2019-09-20 2022-11-08 Micron Technology, Inc. Managing data dependencies in a transfer pipeline of a hybrid dimm

Also Published As

Publication number Publication date
US20220300189A1 (en) 2022-09-22
US11645003B2 (en) 2023-05-09

Similar Documents

Publication Publication Date Title
US11301373B2 (en) Reconstruction of address mapping in a host of a storage system
US8677058B2 (en) Memory system selecting write mode of data block and data write method thereof
US9817717B2 (en) Stripe reconstituting method performed in storage system, method of performing garbage collection by using the stripe reconstituting method, and storage system performing the stripe reconstituting method
KR102570367B1 (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
US20160179422A1 (en) Method of performing garbage collection and raid storage system adopting the same
US20150347291A1 (en) Flash memory based storage system and operating method
US20130080689A1 (en) Data storage device and related data management method
US20200218451A1 (en) Storage device having dual access procedures
KR20120055725A (ko) 스트라이프 기반 메모리 작동
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN110928805B (zh) 存储器系统及其操作方法
US10353626B2 (en) Buffer memory management method and write method using the same
US9858003B2 (en) Storage system that reliably stores lower page data
CN113703662B (zh) 存储器系统、存储器控制器及其操作方法
US10754771B2 (en) Storage device and storage control method
CN111796962A (zh) 存储装置以及存储装置的操作方法
US11586379B2 (en) Memory system and method of operating the same
US11928361B2 (en) Memory system and control method
JP2022143243A (ja) メモリシステムおよびその制御方法
KR20220068535A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US11669266B2 (en) Memory system and operating method of memory system
US20240004566A1 (en) Memory system for managing namespace using write pointer and write count, memory controller, and method for operating memory system
KR20240008590A (ko) 저장 장치 및 그 동작 방법
KR20240058593A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220163661A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240903