JP2023044518A - Memory system and method - Google Patents

Memory system and method Download PDF

Info

Publication number
JP2023044518A
JP2023044518A JP2021152579A JP2021152579A JP2023044518A JP 2023044518 A JP2023044518 A JP 2023044518A JP 2021152579 A JP2021152579 A JP 2021152579A JP 2021152579 A JP2021152579 A JP 2021152579A JP 2023044518 A JP2023044518 A JP 2023044518A
Authority
JP
Japan
Prior art keywords
memory
block
memory controller
data
amount
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
JP2021152579A
Other languages
Japanese (ja)
Inventor
博暢 宮本
Hironobu Miyamoto
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 JP2021152579A priority Critical patent/JP2023044518A/en
Priority to US17/689,907 priority patent/US11954364B2/en
Publication of JP2023044518A publication Critical patent/JP2023044518A/en
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
    • 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/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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0625Power saving in storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more 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/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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

To assign a plurality of blocks to match storage area units.SOLUTION: Memory chips operable in parallel each include first storage areas. A memory controller generates first groups, each of which is a group of first storage areas selected from corresponding different memory chips of the plurality of memory chips. The memory controller generates second groups each of which is constituted of a minimum number of first storage areas obtained by excluding one or more first storage areas from corresponding one of the first groups. The minimum number of first storage areas are capable of storing at least a first amount of data from the host. The memory controller executes writing of the data to all the first storage areas constituting one second group.SELECTED DRAWING: Figure 12

Description

本実施形態は、メモリシステムおよび方法に関する。 The present embodiments relate to memory systems and methods.

近年、ZNS(Zoned Namespace) SSD(Solid State Drive)と称される種類のSSDが提唱されている。ZNS SSDは、ホストに対し、1以上の記憶領域単位を提供する。記憶領域単位は、ゾーンとも称される。ホストは、それぞれのゾーンに対し、全ゾーンで共通の規定容量までデータをライトすることができる。 In recent years, a type of SSD called ZNS (Zoned Namespace) SSD (Solid State Drive) has been proposed. A ZNS SSD presents one or more storage units to the host. A storage area unit is also called a zone. The host can write data to each zone up to a specified capacity common to all zones.

ZNS SSDでは、メモリコントローラは、それぞれのゾーンに複数の物理ブロックからなる群を割り当てる(assign)。各ゾーンに割り当てられた複数の物理ブロックからなる群を、スーパーブロックと表記する。メモリコントローラは、1つの記憶領域単位(即ちゾーン)をライト先としてホストから受信したデータを、当該ゾーンに割り当てられたスーパーブロックにライトする。 In ZNS SSDs, the memory controller assigns groups of physical blocks to each zone. A group of physical blocks assigned to each zone is referred to as a superblock. The memory controller writes the data received from the host with one storage area unit (that is, zone) as the write destination to the superblock assigned to the zone.

米国特許出願公開第2020/0133838号明細書U.S. Patent Application Publication No. 2020/0133838 特表2012-519900号公報Japanese Patent Application Publication No. 2012-519900 米国特許第8832507号明細書U.S. Pat. No. 8,832,507

一つの実施形態は、記憶領域単位に適合するように複数のブロックを割り当てることができるメモリシステムおよび方法を得ることを目的とする。 One embodiment aims at obtaining a memory system and method that can allocate multiple blocks to fit a storage area unit.

一つの実施形態によれば、メモリシステムは、ホストに接続可能である。メモリシステムは、並列に動作可能な複数のメモリチップと、メモリコントローラと、を備える。複数のメモリチップのそれぞれは複数の第1記憶領域を備える。メモリコントローラは、複数のメモリチップのうちのそれぞれ異なるメモリチップから選択された第1記憶領域の群である第1群を複数生成する。メモリコントローラは、複数の第1群のそれぞれから1以上の第1記憶領域を取り除くことによって、それぞれはホストからのデータを少なくとも第1量まで格納可能な最小数の第1記憶領域によって構成された複数の第2群を生成する。メモリコントローラは、1つの第2群を構成する全ての第1記憶領域に対してデータのライトを実行する。 According to one embodiment, the memory system is connectable to a host. A memory system includes a plurality of memory chips that can operate in parallel and a memory controller. Each of the plurality of memory chips has a plurality of first storage areas. The memory controller generates a plurality of first groups, which are groups of first storage areas selected from different memory chips of the plurality of memory chips. The memory controller is configured with a minimum number of first storage areas each capable of storing at least a first amount of data from the host by removing one or more first storage areas from each of the plurality of first groups. Generate a plurality of second groups. The memory controller writes data to all the first memory areas that constitute one second group.

実施形態にかかるメモリシステムの構成例を示す図。1 is a diagram showing a configuration example of a memory system according to an embodiment; FIG. 実施形態にかかる各メモリチップの構成の一例を示す模式的な図。4 is a schematic diagram showing an example of the configuration of each memory chip according to the embodiment; FIG. 実施形態にかかる各物理ブロックの構成例を示す図。4 is a diagram showing a configuration example of each physical block according to the embodiment; FIG. 実施形態にかかる候補構成の作成方法を説明するための模式的な図。4A and 4B are schematic diagrams for explaining a method of creating a candidate configuration according to the embodiment; FIG. 実施形態にかかる1つの候補構成を示す模式的な図。1 is a schematic diagram showing one candidate configuration according to an embodiment; FIG. 実施形態にかかるメモリコントローラによって生成されたスーパーブロックの例を示す模式的な図。FIG. 4 is a schematic diagram showing an example of superblocks generated by a memory controller according to an embodiment; 実施形態にかかるメモリコントローラによって生成された別のスーパーブロックの例を示す模式的な図。FIG. 4 is a schematic diagram illustrating another example superblock generated by a memory controller according to an embodiment; 実施形態にかかるメモリコントローラによって生成されたさらに別のスーパーブロックの例を示す模式的な図。FIG. 4 is a schematic diagram illustrating yet another example superblock generated by a memory controller according to an embodiment; 実施形態にかかるブロックユニットにおいて並列にライトされる2つの物理ページを説明するための模式的な図。4 is a schematic diagram for explaining two physical pages written in parallel in the block unit according to the embodiment; FIG. 実施形態にかかるページユニットにライトされるデータを説明するための模式的な図。4A and 4B are schematic diagrams for explaining data written to the page unit according to the embodiment; FIG. メモリシステムの出荷後初めてユーザデータのライトを行う第1タイミングにおけるスーパーブロックに対して並列にライトされ得るページユニットの群を示す模式的な図。FIG. 4 is a schematic diagram showing a group of page units that can be written in parallel to a superblock at a first timing when user data is written for the first time after shipment of the memory system; 第1タイミングの後に何回かライト/イレースサイクルが実行された第2タイミングにおけるスーパーブロックの各スーパーページの状態を説明するための模式的な図。FIG. 4 is a schematic diagram for explaining the state of each superpage of a superblock at a second timing when write/erase cycles are executed several times after the first timing; 第2タイミングの後にさらに何回かライト/イレースサイクルが実行された第3タイミングにおけるスーパーブロックの各スーパーページの状態を説明するための模式的な図。FIG. 11 is a schematic diagram for explaining the state of each super page of the super block at the third timing when write/erase cycles are executed several more times after the second timing; 第3タイミングの後に不足分が補填された第4タイミングにおけるスーパーブロックの各スーパーページの状態を説明するための模式的な図。FIG. 12 is a schematic diagram for explaining the state of each super page of the super block at the fourth timing when the shortfall is compensated after the third timing; 第4タイミングの後に1つのブロックユニットが削除された第5タイミングにおけるスーパーブロックの各スーパーページの状態を説明するための模式的な図。FIG. 11 is a schematic diagram for explaining the state of each super page of super blocks at the fifth timing when one block unit is deleted after the fourth timing; 実施形態にかかるRAMに格納される管理情報の一例を説明するための模式的な図。4 is a schematic diagram for explaining an example of management information stored in a RAM according to the embodiment; FIG. 実施形態にかかるリザーブドブロック管理情報のデータ構造の一例を示す模式的な図。4 is a schematic diagram showing an example of the data structure of reserved block management information according to the embodiment; FIG. スーパーブロックの生成に関する実施形態にかかるメモリシステムの動作の一例を説明するためのフローチャート。4 is a flowchart for explaining an example of the operation of the memory system according to the embodiment regarding generation of superblocks; 実施形態にかかるメモリシステムのスーパーブロックへのライトの動作の一例を説明するためのフローチャート。4 is a flowchart for explaining an example of a write operation to a super block of the memory system according to the embodiment;

以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。 Memory systems and methods according to embodiments are described in detail below with reference to the accompanying drawings. It should be noted that the present invention is not limited by this embodiment.

(実施形態)
図1は、実施形態にかかるメモリシステムの構成例を示す図である。
(embodiment)
FIG. 1 is a diagram illustrating a configuration example of a memory system according to an embodiment;

実施系形態にかかるメモリシステム1は、通信路3を介してホスト2に接続可能である。ホスト2はコンピュータである。コンピュータは、例えば、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、または、携帯通信機器を含む。メモリシステム1は、ホスト2の外部記憶装置として機能する。 A memory system 1 according to the embodiment can be connected to a host 2 via a communication path 3 . Host 2 is a computer. Computers include, for example, personal computers, portable computers, servers, or mobile communication devices. The memory system 1 functions as an external storage device for the host 2 .

メモリシステム1は、ZNS SSDと称される種類のSSDである。ZNS SSDは、NVM Express(TM)によって規定されたZNSコマンドセットに含まれる各コマンドを実行できるSSDである。ZNSコマンドセットは、例えばゾーン生成コマンド(ZONE CREATE COMMAND)を含む。ゾーン生成コマンドは、メモリシステム1に新規のゾーンを設定させるためのコマンドである。ZNS SSDとしてのメモリシステム1は、ホスト2に対し、ゾーン生成コマンドによって指示された1以上のゾーンを提供する。ゾーンは、ホスト2がある単位のデータをライトすることができる論理的な記憶領域である。ホスト2からのデータを格納できる容量は複数のゾーンで共通とされる。1つのゾーン当たりのホスト2からのデータを格納できる容量を、ゾーン容量と表記する。以降、ホスト2からメモリシステム1に転送されるデータを、ユーザデータと表記する。 The memory system 1 is a type of SSD called ZNS SSD. A ZNS SSD is an SSD that can execute each command included in the ZNS command set defined by NVM Express (TM). The ZNS command set includes, for example, ZONE CREATE COMMAND. A zone creation command is a command for causing the memory system 1 to set a new zone. Memory system 1 as a ZNS SSD provides host 2 with one or more zones indicated by zone creation commands. A zone is a logical storage area to which the host 2 can write a certain unit of data. A plurality of zones share a capacity for storing data from the host 2 . The capacity for storing data from the host 2 per zone is referred to as zone capacity. Hereinafter, data transferred from the host 2 to the memory system 1 will be referred to as user data.

ZNS SSDでは、ホスト2は各ゾーンに対して論理アドレスの点でシーケンシャルにユーザデータをライトしなくてはならないという制約が存在する。また、ZNS SSDでは、1つのゾーンに格納された全てのデータは一括にイレースされるという制約を有する。 In ZNS SSDs, there is a constraint that the host 2 must write user data sequentially in terms of logical address for each zone. Also, the ZNS SSD has a limitation that all data stored in one zone is erased at once.

メモリシステム1は、メモリコントローラ10と、NAND型のフラッシュメモリ(NANDメモリ)20と、RAM(Random Access Memory)30とを備える。NANDメモリ20は、ストレージとして用いられる不揮発性のメモリである。なお、ストレージとして用いられる不揮発性のメモリの種類はNAND型のフラッシュメモリだけに限定されない。例えば、NOR型のフラッシュメモリなどがストレージとして採用可能である。 The memory system 1 includes a memory controller 10 , a NAND flash memory (NAND memory) 20 , and a RAM (Random Access Memory) 30 . The NAND memory 20 is nonvolatile memory used as storage. The type of nonvolatile memory used as storage is not limited to NAND flash memory. For example, a NOR flash memory or the like can be used as the storage.

RAM30は、メモリコントローラ10がNANDメモリ20を制御するための各種情報が格納される揮発性のメモリである。RAM30に格納される各種情報の詳細は後述する。また、RAM30は、ホスト2とNANDメモリ20との間のデータ転送のためのバッファとしてメモリコントローラ10によって使用され得る。また、RAM30は、ファームウェアプログラムがロードされるバッファとしても使用され得る。なお、RAM30としては任意の種類のメモリが適用可能である。例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせがRAM30として適用可能である。また、RAM30に替えて、ストレージよりも高速な揮発性または不揮発性のメモリが適用可能である。RAM30は、メモリコントローラ10に内蔵されてもよい。 The RAM 30 is a volatile memory that stores various information for the memory controller 10 to control the NAND memory 20 . Details of various information stored in the RAM 30 will be described later. RAM 30 may also be used by memory controller 10 as a buffer for data transfers between host 2 and NAND memory 20 . RAM 30 may also be used as a buffer into which firmware programs are loaded. Any type of memory can be applied as the RAM 30 . For example, DRAM (Dynamic Random Access Memory), SRAM (Static Random Access Memory), or a combination thereof can be applied as RAM 30 . Also, instead of the RAM 30, a volatile or non-volatile memory that is faster than storage can be applied. The RAM 30 may be built in the memory controller 10 .

メモリコントローラ10は、CPU(Central Processing Unit)11、ホストインタフェース(ホストI/F)12、RAMコントローラ(RAMC)13、NANDコントローラ(NANDC)14、およびECC(Error Correction Checking)回路15を備える。CPU11、ホストI/F12、RAMC13、NANDC14、およびECC回路15は、バスを介して電気的に接続されている。 The memory controller 10 includes a CPU (Central Processing Unit) 11 , a host interface (host I/F) 12 , a RAM controller (RAMC) 13 , a NAND controller (NANDC) 14 and an ECC (Error Correction Checking) circuit 15 . The CPU 11, host I/F 12, RAMC 13, NANDC 14, and ECC circuit 15 are electrically connected via a bus.

メモリコントローラ10は、SoC(System-on-a-Chip)として構成され得る。または、メモリコントローラ10は、複数のチップによって構成され得る。メモリコントローラ10は、RAM30を含む1つのSoCとして構成されてもよい。 The memory controller 10 can be configured as a SoC (System-on-a-Chip). Alternatively, the memory controller 10 can be composed of multiple chips. Memory controller 10 may be configured as a single SoC including RAM 30 .

ホストI/F12は、通信路3を介して転送される信号の制御を実行する。ホストI/F12は、ホスト2からの各種コマンドを受け付ける。ホストI/F12は、例えばホスト2とRAM30との間のデータ転送を実行する。RAMC13は、RAM30を制御する。NANDC14は、NANDメモリ20を制御する。NANDC14は、例えばRAM30とNANDメモリ20との間のデータ転送を実行する。 The host I/F 12 controls signals transferred via the communication path 3 . The host I/F 12 receives various commands from the host 2 . The host I/F 12 executes data transfer between the host 2 and the RAM 30, for example. RAMC13 controls RAM30. NANDC 14 controls NAND memory 20 . NANDC 14 performs data transfer between RAM 30 and NAND memory 20, for example.

CPU11は、メモリコントローラ10全体の制御を実行するプロセッサである。CPU11は、ファームウェアプログラムに基づいて当該制御を実行する。 The CPU 11 is a processor that controls the entire memory controller 10 . The CPU 11 executes the control based on the firmware program.

なお、プロセッサとしてのCPU11が実行する制御の一部または全部は、ハードウェア回路によって実行されてもよい。プロセッサとしてのCPU11が実行する制御の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行されてもよい。 A part or all of the control executed by the CPU 11 as a processor may be executed by a hardware circuit. A part or all of the control executed by the CPU 11 as a processor may be executed by an FPGA (Field-Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).

ECC回路15は、NANDメモリ20にライトされるデータに対して誤り訂正のための符号化を実行し、NANDメモリ20からリードされたデータに対して復号化を行う。即ち、ECC回路15は、データの誤り訂正に関する処理を実行する回路である。 The ECC circuit 15 encodes the data written to the NAND memory 20 for error correction, and decodes the data read from the NAND memory 20 . That is, the ECC circuit 15 is a circuit that executes processing related to data error correction.

ECC回路15が使用する符号化の方式としては、コードレート(code rate)が可変の符号化方式が採用される。コードレートは、符号化前のデータのサイズを符号化後のデータのサイズで除算して得られる数値情報である。コードレートが小さいほど、符号化後のデータに含まれる冗長データの量が多い。そのため、コードレートが小さいほど、誤り訂正の能力が高い。 As an encoding method used by the ECC circuit 15, an encoding method with a variable code rate is adopted. The code rate is numerical information obtained by dividing the size of data before encoding by the size of data after encoding. The smaller the code rate, the larger the amount of redundant data included in the encoded data. Therefore, the smaller the code rate, the higher the error correction capability.

NANDメモリ20に対して実行されたライト/イレースサイクルの回数の増加に応じて、NANDメモリ20に格納されたデータに含まれる誤りビットが生じやすくなる。即ち、格納されたデータの信頼性がライト/イレースサイクルの回数の増加に応じて低下する。データに含まれる誤りビットの数がECC回路15によって訂正可能な数を超えると、そのデータを正しくリードすることが不可能となる。CPU11は、データを正しくリードすることが不可能になる前にコードレートの縮小を行い、これによってデータを正しくリードすることが不可能になることを防止する。 As the number of write/erase cycles performed on NAND memory 20 increases, the data stored in NAND memory 20 is more likely to contain erroneous bits. That is, the reliability of stored data decreases as the number of write/erase cycles increases. If the number of erroneous bits contained in the data exceeds the number that can be corrected by the ECC circuit 15, the data cannot be read correctly. The CPU 11 reduces the code rate before it becomes impossible to read data correctly, thereby preventing it from becoming impossible to read data correctly.

コードレートの縮小のトリガは任意である。例えば、CPU11は、NANDメモリ20に対するライト/イレースサイクルの回数に応じてコードレートの縮小を行ってもよい。または、メモリコントローラ10は、ECC回路15による誤り訂正が失敗した場合に実行されECC回路15よりもさらに誤り訂正能力が高い誤り訂正の機能または回路を備え、CPU11は、この誤り訂正の機能または回路の使用に応じてコードレートの縮小を行ってもよい。 Triggering code rate reduction is optional. For example, the CPU 11 may reduce the code rate according to the number of write/erase cycles for the NAND memory 20 . Alternatively, the memory controller 10 has an error correction function or circuit that is executed when the error correction by the ECC circuit 15 fails and has a higher error correction capability than the ECC circuit 15, and the CPU 11 has this error correction function or circuit. Code rate reduction may be performed depending on the use of .

なお、コードレートの縮小は、記憶領域の所定の単位で実行されることとする。実施形態では、コードレートの縮小の単位は、ブロックユニットBUである。ブロックユニットBUの詳細については後述されるが、簡単に説明すると、NANDメモリ20は、複数のブロックユニットBUを備える。CPU11は、ブロックユニットBU毎にコードレートを記録する。そして、メモリコントローラ10がユーザデータをNANDメモリ20にライトする際には、CPU11は、ECC回路15に、ライト先のブロックユニットBUにかかるコードレートで当該ユーザデータを符号化させる。 It should be noted that code rate reduction is executed in a predetermined unit of storage area. In the embodiment, the unit of code rate reduction is the block unit BU. The details of the block unit BU will be described later, but in brief, the NAND memory 20 comprises a plurality of block units BU. The CPU 11 records the code rate for each block unit BU. Then, when the memory controller 10 writes the user data to the NAND memory 20, the CPU 11 causes the ECC circuit 15 to encode the user data at the code rate applied to the write destination block unit BU.

コードレートに関しては上限値と下限値とが設けられている。例えば、メモリシステム1が出荷後初めて使用される場合には、CPU11は、ECC回路15に、上限値のコードレートで符号化を実行させる。そして、CPU11は、ブロックユニットBU毎に、格納されるデータの信頼性の低下に応じてコードレートを段階的に縮小する。そして、或るブロックユニットBUのコードレートが下限値まで縮小され、かつ下限値のコードレートでも格納されるデータの信頼性が要求を満たさない場合、CPU11は、そのブロックユニットBUの使用を禁止する。使用が禁止されたブロックユニットBUは、不良ブロック(defective block)と称される。 An upper limit value and a lower limit value are provided for the code rate. For example, when the memory system 1 is used for the first time after shipment, the CPU 11 causes the ECC circuit 15 to execute encoding at the upper limit code rate. Then, the CPU 11 reduces the code rate step by step according to the deterioration of the reliability of the stored data for each block unit BU. When the code rate of a certain block unit BU is reduced to the lower limit and the reliability of stored data does not meet the requirements even at the lower limit code rate, the CPU 11 prohibits the use of that block unit BU. . A block unit BU whose use is prohibited is called a defective block.

なお、不良ブロックはコードレートの縮小に応じて発生するとは限らない。故障したと判断されたブロックユニットBUも不良ブロックとして設定される。 It should be noted that bad blocks are not always generated according to code rate reduction. A block unit BU determined to be faulty is also set as a bad block.

NANDメモリ20は、複数のメモリチップ21を含む。図1では、図面の煩雑化を避けるため、メモリチップ21は単にチップ21と表記されている。 The NAND memory 20 includes multiple memory chips 21 . In FIG. 1, the memory chip 21 is simply written as a chip 21 in order to avoid complication of the drawing.

図2は、実施形態にかかる各メモリチップ21の構成の一例を示す模式的な図である。各メモリチップ21は、夫々メモリセルアレイ23を備える。メモリセルアレイ23は、複数のメモリセルが2次元的にまたは3次元的に配列された構成を有する。メモリセルアレイ23は、2つの領域24に分割されている。各領域24は、複数の物理ブロック25を含む。各領域24は、プレーンとも称される。 FIG. 2 is a schematic diagram showing an example of the configuration of each memory chip 21 according to the embodiment. Each memory chip 21 has a memory cell array 23 respectively. Memory cell array 23 has a configuration in which a plurality of memory cells are arranged two-dimensionally or three-dimensionally. A memory cell array 23 is divided into two regions 24 . Each area 24 includes multiple physical blocks 25 . Each region 24 is also called a plane.

メモリチップ21は、領域24毎に独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備える。そのため、メモリチップ21は、2つの領域24に同時にアクセスを実行することが可能である。アクセスの一例は、ライト、リード、およびイレースである。 The memory chip 21 has an independent peripheral circuit (for example, row decoder, column decoder, page buffer, data cache, etc.) for each area 24 . Therefore, the memory chip 21 can access the two areas 24 at the same time. An example of access is write, read, and erase.

各メモリチップ21の2つの領域24の夫々にはプレーン番号が与えられる。即ち、2つの領域24のうちの1つは、プレーン番号0で特定されるプレーンであり、2つの領域24のうちの他は、プレーン番号1で特定されるプレーンである。以降、プレーン#0は、プレーン番号0で特定される領域24を指し、プレーン#1は、プレーン番号1で特定される領域24を指すこととする。 Each of the two areas 24 of each memory chip 21 is given a plane number. That is, one of the two regions 24 is a plane identified by plane number 0, and the other of the two regions 24 is a plane identified by plane number 1. FIG. Hereinafter, plane #0 refers to the area 24 identified by plane number 0, and plane #1 refers to the area 24 identified by plane number 1. FIG.

なお、メモリセルアレイ23が備える領域24の数は「1」であってもよいし、「3」以上であってもよい。 The number of regions 24 included in the memory cell array 23 may be "1" or may be "3" or more.

物理ブロック25は、各領域24におけるイレースの単位である。図3は、各物理ブロック25の構成例を示す図である。各物理ブロック25は、複数の物理ページ26を備える。物理ページ26は、各領域24におけるライトおよびリードの単位である。各物理ページ26にはページ番号が与えられる。図3には、ページ番号0~5が与えられた6つの物理ページ26が、それぞれページ#0~ページ#5として表記されている。 A physical block 25 is an erase unit in each area 24 . FIG. 3 is a diagram showing a configuration example of each physical block 25. As shown in FIG. Each physical block 25 comprises multiple physical pages 26 . A physical page 26 is a unit of write and read in each area 24 . Each physical page 26 is given a page number. In FIG. 3, six physical pages 26 given page numbers 0 to 5 are denoted as page #0 to page #5, respectively.

図1に示されるように、NANDメモリ20を構成する複数のメモリチップ21は、夫々、16個のチャネルch(ch.0~ch.15)の何れかを介してメモリコントローラ10に接続される。ここでは、各チャネルchに8個のメモリチップ21が接続されることとする。 As shown in FIG. 1, a plurality of memory chips 21 constituting the NAND memory 20 are each connected to the memory controller 10 via one of 16 channels ch (ch.0 to ch.15). . Here, it is assumed that eight memory chips 21 are connected to each channel ch.

各メモリチップ21は、16個のチャネルchのうちの何れか1つのみに接続されている。各チャネルchは、ある規格に準拠した、I/O信号線および制御信号線群を含む、配線群によって構成される。I/O信号線は、データ、アドレス、およびコマンドを転送するための信号線である。なお、I/O信号線のビット幅は1ビットに限定されない。制御信号線は、WE(ライトイネーブル)信号を転送する信号線、RE(リードイネーブル)信号を転送する信号線、CLE(コマンドラッチイネーブル)信号を転送する信号線、ALE(アドレスラッチイネーブル)信号を転送する信号線、WP(ライトプロテクト)信号を転送する信号線等の群である。メモリコントローラ10は、各チャネルchを個別に制御することができる。メモリコントローラ10は、複数のチャネルchを同時にかつ個別に制御することによって、それぞれ異なるチャネルchに接続される複数のメモリチップ21を並列に動作させることができる。 Each memory chip 21 is connected to only one of the 16 channels ch. Each channel ch is configured by a wiring group including an I/O signal line and a control signal line group conforming to a certain standard. I/O signal lines are signal lines for transferring data, addresses, and commands. Note that the bit width of the I/O signal line is not limited to 1 bit. The control signal lines are a signal line for transferring a WE (write enable) signal, a signal line for transferring an RE (read enable) signal, a signal line for transferring a CLE (command latch enable) signal, and an ALE (address latch enable) signal. It is a group of signal lines for transferring, signal lines for transferring WP (write protect) signals, and the like. The memory controller 10 can individually control each channel ch. The memory controller 10 can simultaneously and individually control a plurality of channels ch to operate a plurality of memory chips 21 connected to different channels ch in parallel.

また、NANDメモリ20に対して、複数のバンク22が定義される。各バンク22は、それぞれが異なるチャネルchに接続された16個のメモリチップ21によって構成される。1つのチャネルchに接続された8個のメモリチップ21は、それぞれ異なるバンク22に属する。よって、NANDメモリ20は、複数のバンク22として、8個のバンク22を備える。各バンク22にはユニークなバンク番号(バンク#0~バンク#7)が与えられる。 Also, multiple banks 22 are defined for the NAND memory 20 . Each bank 22 is composed of 16 memory chips 21 each connected to a different channel ch. Eight memory chips 21 connected to one channel ch belong to different banks 22 respectively. Therefore, the NAND memory 20 has eight banks 22 as the plurality of banks 22 . Each bank 22 is given a unique bank number (bank #0 to bank #7).

メモリコントローラ10は、複数のバンク22を用いてバンクインターリーブを実行する。バンクインターリーブは、並列動作の1つである。バンクインターリーブでは、1つのバンク22に属する複数(例えば16個)のメモリチップ21がデータにアクセスしている最中に、メモリコントローラ10は、別のバンク22に属する複数(例えば16個)のメモリチップ21にアクセス指示を発行する。これによって、NANDメモリ20とメモリコントローラ10との間のデータ転送に要するトータルの時間が短縮される。なお、アクセス指示は、ライト指示、リード指示、およびイレース指示を含む。 Memory controller 10 uses multiple banks 22 to perform bank interleaving. Bank interleaving is one of the parallel operations. In bank interleaving, while a plurality of (eg, 16) memory chips 21 belonging to one bank 22 are accessing data, the memory controller 10 controls a plurality of (eg, 16) memory chips belonging to another bank 22 to access data. An access instruction is issued to the chip 21 . This shortens the total time required for data transfer between the NAND memory 20 and the memory controller 10 . The access instructions include write instructions, read instructions, and erase instructions.

このように、メモリコントローラ10は、16個のチャネルchを同時に動作させ、かつ、8個のバンク22を用いたバンクインターリーブを実行することにより、合計128個のメモリチップ21を並列動作させることができる。 Thus, the memory controller 10 simultaneously operates 16 channels ch and performs bank interleaving using 8 banks 22, thereby allowing a total of 128 memory chips 21 to operate in parallel. can.

さらに、メモリコントローラ10は、各メモリチップ21に対しては、2つの領域(即ちプレーン)24に同時にアクセスすることが可能である。そのため、メモリコントローラ10は、合計256個の領域24に含まれる物理ブロック25に並列にデータのライトを実行することができる。これらの並列にライトすることが可能な物理ブロック25の群を構成するそれぞれの物理ブロック25を、並列ライト要素、と表記する場合がある。 Furthermore, the memory controller 10 can simultaneously access two regions (ie, planes) 24 for each memory chip 21 . Therefore, the memory controller 10 can write data in parallel to the physical blocks 25 included in a total of 256 areas 24 . Each physical block 25 that constitutes a group of physical blocks 25 that can be written in parallel may be referred to as a parallel write element.

メモリコントローラ10は、各ゾーンに複数の物理ブロック25からなる群を割り当てる。1つのゾーンに割り当てられた複数の物理ブロック25からなる群を、スーパーブロックと表記する。スーパーブロックの割り当て方法を以下に説明する。 Memory controller 10 allocates a group of physical blocks 25 to each zone. A group of physical blocks 25 assigned to one zone is referred to as a superblock. The method of allocating superblocks is described below.

スーパーブロックは、並列ライト要素の群によって構成される。メモリコントローラ10は、まず、並列ライト要素の群によって、スーパーブロックの構成の候補を生成する。スーパーブロックの構成の候補を、候補構成と表記する。 A superblock is composed of a group of parallel write elements. The memory controller 10 first generates super-block configuration candidates from groups of parallel write elements. A candidate configuration of the superblock is denoted as a candidate configuration.

なお、図1に示された例では、NANDメモリ20は16個のチャネルchによってコントローラ10に接続され、NANDメモリ20に対して8個のバンク22が定義されている。NANDメモリ20とコントローラ10とを接続するチャネルchの数は16個に限定されない。また、NANDメモリ20に対して定義されるバンク22の数は8個に限定されない。 In the example shown in FIG. 1, the NAND memory 20 is connected to the controller 10 by 16 channels ch, and 8 banks 22 are defined for the NAND memory 20 . The number of channels ch connecting the NAND memory 20 and the controller 10 is not limited to sixteen. Also, the number of banks 22 defined for the NAND memory 20 is not limited to eight.

図4は、実施形態にかかる候補構成の生成方法を説明するための模式的な図である。メモリコントローラ10は、複数のバンク22(バンク#0~バンク#7)のうちの1以上のバンク22を選択する。そして、メモリコントローラ10は、選択された1以上のバンク22から複数の並列ライト要素を選択する。 FIG. 4 is a schematic diagram for explaining a method of generating a candidate configuration according to the embodiment; The memory controller 10 selects one or more banks 22 from a plurality of banks 22 (bank #0 to bank #7). The memory controller 10 then selects multiple parallel write elements from the selected one or more banks 22 .

図4に示される例では、メモリコントローラ10は、バンク#Kおよびバンク#K+1を選択する。ここで、Kは0以上6以下の整数である。なお、複数のバンク22が選択される場合、この例のように、複数のバンク22のバンク番号は必ずしも連続していなくてもよい。メモリコントローラ10は、選択された2つのバンク、即ちバンク#Kまたはバンク#K+1、に属する合計32個から64個の並列ライト要素を選択する。つまり、メモリコントローラ10は、接続されたチャネルchのチャネル番号、属するバンク22のバンク番号、および含まれる領域24のプレーン番号の少なくとも1つが互いに異なる64個の物理ブロック25を選択する。図4に示される斜線ハッチングが施された各物理ブロック25は、並列ライト要素として選択された物理ブロック25の例である。メモリコントローラ10は、選択された64個の物理ブロック25からなる群を候補構成と見なす。 In the example shown in FIG. 4, memory controller 10 selects bank #K and bank #K+1. Here, K is an integer of 0 or more and 6 or less. Note that when a plurality of banks 22 are selected, the bank numbers of the plurality of banks 22 do not necessarily have to be consecutive as in this example. Memory controller 10 selects a total of 32 to 64 parallel write elements belonging to the two selected banks, bank #K or bank #K+1. That is, the memory controller 10 selects 64 physical blocks 25 that differ from each other in at least one of the channel number of the connected channel ch, the bank number of the bank 22 to which it belongs, and the plane number of the region 24 included. Each physical block 25 hatched in FIG. 4 is an example of the physical block 25 selected as a parallel write element. Memory controller 10 considers the selected group of 64 physical blocks 25 as candidate configurations.

なお、実施形態では、一例として、メモリコントローラ10は、同一のメモリチップ21に含まれ、それぞれ異なる領域24に含まれる複数の物理ブロック25を1つのユニットとして管理する。このユニットを、ブロックユニットBUと表記する。実施形態では、1つのメモリチップ21には2つの領域24が含まれることとしている。よって、1つのメモリチップ21において、プレーン#0に含まれる1つの物理ブロック25と、プレーン#1に含まれる1つの物理ブロック25と、の対が1つのブロックユニットBUとして管理される。 In the embodiment, as an example, the memory controller 10 manages a plurality of physical blocks 25 included in the same memory chip 21 and included in different areas 24 as one unit. This unit is written as a block unit BU. In the embodiment, one memory chip 21 includes two areas 24 . Therefore, in one memory chip 21, a pair of one physical block 25 included in plane #0 and one physical block 25 included in plane #1 is managed as one block unit BU.

即ち、メモリコントローラ10は、ブロックユニットBUの単位で32個のブロックユニットBUを選択し、選択した32個のブロックユニットBUによって構成される64個の物理ブロック25の群を候補構成に設定する。 That is, the memory controller 10 selects 32 block units BU in units of block units BU, and sets a group of 64 physical blocks 25 constituted by the selected 32 block units BU as a candidate configuration.

図5は、実施形態にかかる1つの候補構成を示す模式的な図である。本図に示されるように、メモリコントローラ10は、合計32個のブロックユニットBUの群を1つの候補構成101として設定する。 FIG. 5 is a schematic diagram illustrating one candidate configuration according to an embodiment; As shown in this figure, the memory controller 10 sets a group of total 32 block units BU as one candidate configuration 101 .

なお、1つのメモリチップ21は、複数のブロックユニットBUを備える。つまり、メモリコントローラ10は、メモリチップ21当たりに複数のブロックユニットBUを生成する。生成されるブロックユニットBUの数はメモリチップ21毎に異なり得る。例えば或るメモリチップ21の1つの領域24が備える複数の物理ブロック25に不良ブロックが含まれる場合、メモリコントローラ10は、不良ブロックを除外した残りの物理ブロック25を用いてブロックユニットBUを生成する。 Note that one memory chip 21 includes a plurality of block units BU. That is, the memory controller 10 generates a plurality of block units BU for each memory chip 21. FIG. The number of generated block units BU may differ for each memory chip 21 . For example, when a plurality of physical blocks 25 included in one area 24 of a certain memory chip 21 includes a defective block, the memory controller 10 generates a block unit BU using the physical blocks 25 remaining after excluding the defective block. .

ここでは説明を簡単にするために、1つの領域24がN個の物理ブロック25を備え、各メモリチップ21当たりM個のブロックユニットBUが生成されることとする。なお、Nは2以上の整数である。Mは2以上N以下の整数である。 To simplify the explanation, it is assumed that one area 24 has N physical blocks 25 and M block units BU are generated for each memory chip 21 . Note that N is an integer of 2 or more. M is an integer of 2 or more and N or less.

例えば、メモリコントローラ10は、バンク#Kおよびバンク#K+1のいずれかに属する合計32個のメモリチップ21のそれぞれから、M個のブロックユニットBUのうちの1つを選択する。そして、メモリコントローラ10は、選択された32個のブロックユニットBUの群を1つの候補構成101に設定する。 For example, the memory controller 10 selects one of M block units BU from each of a total of 32 memory chips 21 belonging to either bank #K or bank #K+1. The memory controller 10 then sets the selected group of 32 block units BU as one candidate configuration 101 .

続いて、メモリコントローラ10は、バンク#Kおよびバンク#K+1のいずれかに属する合計32個のメモリチップ21のそれぞれから、M個のブロックユニットBUのうちのまだ選択されていない1以上のブロックユニットBUから1つを新たに選択する。そして、メモリコントローラ10は、新たに選択された32個のブロックユニットBUの群を別の候補構成101に設定する。 Subsequently, the memory controller 10 selects one or more unselected block units out of the M block units BU from each of a total of 32 memory chips 21 belonging to either bank #K or bank #K+1. Select a new one from BU. The memory controller 10 then sets the newly selected group of 32 block units BU to another candidate configuration 101 .

このように、メモリコントローラ10は、バンク#Kおよびバンク#K+1のいずれかに属する合計32個のメモリチップ21から複数の候補構成101を設定する。つまり、メモリコントローラ10は、図5に示された候補構成101を複数設定する。 Thus, the memory controller 10 sets a plurality of candidate configurations 101 from a total of 32 memory chips 21 belonging to either bank #K or bank #K+1. That is, the memory controller 10 sets multiple candidate configurations 101 shown in FIG.

なお、ブロックユニットBUは、第1記憶領域の一例である。また、候補構成101は、並列動作が可能な複数のメモリチップ21のうちのそれぞれ異なるメモリチップ21から選択された第1記憶領域の群である第1群の一例である。 Note that the block unit BU is an example of a first storage area. The candidate configuration 101 is an example of a first group, which is a group of first storage areas selected from different memory chips 21 among the plurality of memory chips 21 capable of parallel operation.

メモリコントローラ10は、必ずしも複数の物理ブロック25をブロックユニットBUとして管理しなくてもよい。メモリコントローラ10は、物理ブロック25毎に種々の管理を実行してもよい。種々の管理は、コードレートの管理、不良ブロックの管理、候補構成101およびスーパーブロック(詳細は後述される)の最小の構成要素としての管理、などを含む。つまり、物理ブロック25が第1記憶領域であってもよい。 The memory controller 10 does not necessarily have to manage a plurality of physical blocks 25 as block units BU. Memory controller 10 may perform various management for each physical block 25 . Various management includes code rate management, bad block management, management of candidate structures 101 and superblocks (described in detail below) as minimal components, and the like. That is, the physical block 25 may be the first storage area.

メモリコントローラ10は、複数の候補構成101を生成した後、各候補構成101から1以上のブロックユニットBUを削除し、削除後の各候補構成101をスーパーブロックとして設定する。なお、候補構成101からブロックユニットBUを削除(remove)するとは、候補構成101からブロックユニットBUを取り除く(exclude)ことである。候補構成101から取り除かれたブロックユニットBUは、スーパーブロックの構成要素の候補から除外(eliminate)される。1つの候補構成101から削除されるブロックユニットBUの数は、1つの候補構成101に含まれるブロックユニットBUの数からゾーン容量の分のユーザデータの格納に必要なブロックユニットBUの最小数を減算して得られる数である。よって、1つのスーパーブロックは、ゾーン容量の分のユーザデータの格納に必要な最小数のブロックユニットBUによって構成される。換言すると、1つのスーパーブロックは、ホスト2からのデータを少なくともゾーン容量まで格納可能な最小数のブロックユニットBUによって構成される。 After generating a plurality of candidate configurations 101, the memory controller 10 deletes one or more block units BU from each candidate configuration 101, and sets each candidate configuration 101 after deletion as a superblock. Note that removing the block unit BU from the candidate configuration 101 means excluding the block unit BU from the candidate configuration 101 . The block units BU removed from the candidate structure 101 are eliminated from the candidate superblock constituents. The number of block units BU to be deleted from one candidate configuration 101 is obtained by subtracting the minimum number of block units BU required to store user data for the zone capacity from the number of block units BU included in one candidate configuration 101. is the number obtained by Therefore, one super block is composed of the minimum number of block units BU required to store user data for the zone capacity. In other words, one super block consists of the minimum number of block units BU capable of storing data from the host 2 up to at least the zone capacity.

スーパーブロックには、ユーザデータだけでなく誤り訂正符号などの冗長データが格納される。よって、ゾーン容量の分のユーザデータの格納には、ゾーン容量を超える容量の記憶領域が必要である。メモリコントローラ10は、ゾーン容量に冗長データの格納に必要な容量を加算した合計の容量が得るためのブロックユニットBUの最小数を計算する。そして、メモリコントローラ10は、計算によって得られたブロックユニットBUの最小数を1つの候補構成101に含まれるブロックユニットBUの数から減算することによって、削除すべきブロックユニットBUの数を得る。 The superblock stores not only user data but also redundant data such as error correction codes. Therefore, a storage area with a capacity exceeding the zone capacity is required to store user data corresponding to the zone capacity. The memory controller 10 calculates the minimum number of block units BU for obtaining the total capacity of the zone capacity plus the capacity required for storing redundant data. Then, the memory controller 10 obtains the number of block units BU to be deleted by subtracting the calculated minimum number of block units BU from the number of block units BU included in one candidate configuration 101 .

なお、メモリコントローラ10は、複数の候補構成101のそれぞれから1以上のブロックユニットBUを削除する際には、削除されるブロックユニットBUの数が16個のチャネルでできるだけ均一になるようにする。 When deleting one or more block units BU from each of the plurality of candidate configurations 101, the memory controller 10 makes the number of deleted block units BU as uniform as possible among the 16 channels.

図6A~図6Cのそれぞれは、実施形態にかかるメモリコントローラ10によって生成されたスーパーブロックの例を示す模式的な図である。 Each of FIGS. 6A-6C is a schematic diagram showing an example of a superblock generated by the memory controller 10 according to the embodiment.

例えば、メモリコントローラ10は、或る候補構成101から、バンク#Kに属する16個のメモリチップ21のうちのチャネルch.7に接続されたメモリチップ21から選択されたブロックユニットBUおよびチャネルch.12に接続されたメモリチップ21から選択されたブロックユニットBUを削除し、バンク#K+1に属する16個のメモリチップ21のうちのチャネルch.6に接続されたメモリチップ21から選択されたブロックユニットBUおよびチャネルch.10に接続されたメモリチップ21から選択されたブロックユニットBUを削除する。メモリコントローラ10は、残った28個のブロックユニットBUの群をスーパーブロック102として設定する(図6Aのスーパーブロック102a参照)。 For example, memory controller 10 selects channel ch. 7 and block unit BU selected from memory chip 21 connected to channel ch. 12 of the memory chips 21 connected to channel ch. 6 and the block unit BU selected from the memory chip 21 connected to channel ch. The block unit BU selected from the memory chip 21 connected to 10 is deleted. The memory controller 10 sets the remaining group of 28 block units BU as a superblock 102 (see superblock 102a in FIG. 6A).

また、メモリコントローラ10は、別の候補構成101から、バンク#Kに属する16個のメモリチップ21のうちのチャネルch.8に接続されたメモリチップ21から選択されたブロックユニットBUおよびチャネルch.13に接続されたメモリチップ21から選択されたブロックユニットBUを削除し、バンク#K+1に属する16個のメモリチップ21のうちのチャネルch.7に接続されたメモリチップ21から選択されたブロックユニットBUおよびチャネルch.11に接続されたメモリチップ21から選択されたブロックユニットBUを削除する。メモリコントローラ10は、残った28個のブロックユニットBUの群をスーパーブロック102として設定する(図6Bのスーパーブロック102b参照)。 Also, the memory controller 10 selects from another candidate configuration 101 channel ch. 8 and block unit BU selected from memory chip 21 connected to channel ch. 13 of the memory chips 21 connected to channel ch. 7 and block unit BU selected from memory chip 21 connected to channel ch. The block unit BU selected from the memory chip 21 connected to 11 is deleted. The memory controller 10 sets the remaining group of 28 block units BU as a superblock 102 (see superblock 102b in FIG. 6B).

また、メモリコントローラ10は、さらに別の候補構成101から、バンク#Kに属する16個のメモリチップ21のうちのチャネルch.9に接続されたメモリチップ21から選択されたブロックユニットBUおよびチャネルch.14に接続されたメモリチップ21から選択されたブロックユニットBUを削除し、バンク#K+1に属する16個のメモリチップ21のうちのチャネルch.8に接続されたメモリチップ21から選択されたブロックユニットBUおよびチャネルch.12に接続されたメモリチップ21から選択されたブロックユニットBUを削除する。メモリコントローラ10は、残った28個のブロックユニットBUの群をスーパーブロック102として設定する(図6Cのスーパーブロック102c参照)。 In addition, the memory controller 10 selects from still another candidate configuration 101 channel ch. 9 and block unit BU selected from memory chip 21 connected to channel ch. 14 of the memory chips 21 connected to channel ch. 8 and block unit BU selected from memory chip 21 connected to channel ch. The block unit BU selected from the memory chip 21 connected to 12 is deleted. The memory controller 10 sets the remaining group of 28 block units BU as a superblock 102 (see superblock 102c in FIG. 6C).

このように、メモリコントローラ10は、削除されるブロックユニットBUのチャネルchを候補構成101毎に異ならせる(例えばシフト)させることで、削除されるブロックユニットBUの数が16個のチャネルchでできるだけ均一になるようにする。なお、削除されるブロックユニットBUのチャネルch毎の数は、16個のチャネルchで均一でなくてもよい。 In this way, the memory controller 10 changes (for example, shifts) the channel ch of the block unit BU to be deleted for each candidate configuration 101, thereby reducing the number of block units BU to be deleted as much as possible with 16 channels ch. make it uniform. Note that the number of block units BU to be deleted for each channel ch may not be uniform among the 16 channels ch.

なお、スーパーブロック102は、第2群の一例である。 Note that the superblock 102 is an example of the second group.

メモリコントローラ10は、各スーパーブロック102にデータをライトする場合、ライト先のスーパーブロック102を構成する複数のブロックユニットBUに対し、並列にデータをライトする。また、メモリコントローラ10は、各ブロックユニットBUを構成する2つの物理ブロック25に対して並列にデータをライトするよう、各メモリチップ21を制御する。 When writing data to each superblock 102, the memory controller 10 writes data in parallel to a plurality of block units BU that constitute the superblock 102 of the write destination. Also, the memory controller 10 controls each memory chip 21 to write data in parallel to two physical blocks 25 forming each block unit BU.

図7は、実施形態にかかるブロックユニットBUにおいて並列にライトされる2つの物理ページ26を説明するための模式的な図である。メモリチップ21は、1つのブロックユニットBUを構成するそれぞれ異なる物理ブロック25に含まれる2つの物理ページ26に同時にデータをライトする。1つのブロックユニットBUに含まれ、同時にデータがライトされる2つの物理ページ26からなる群を、ページユニットPUと表記する。 FIG. 7 is a schematic diagram for explaining two physical pages 26 written in parallel in the block unit BU according to the embodiment. The memory chip 21 simultaneously writes data to two physical pages 26 included in different physical blocks 25 forming one block unit BU. A group of two physical pages 26 included in one block unit BU and to which data is written at the same time is referred to as a page unit PU.

図7に示される例では、それぞれ異なる物理ブロック25から選択された同一のページ番号が与えられた2つの物理ページ26によって、1つのページユニットPUが構成される。 In the example shown in FIG. 7, two physical pages 26 selected from different physical blocks 25 and given the same page number form one page unit PU.

例えば、ページ#iというページ番号が与えられた2つの物理ページ26によって1つのページユニットPUが構成される。ページ#i+1というページ番号が与えられた2つの物理ページ26によって別のページユニットPUが構成される。ページ#i+2というページ番号が与えられた2つの物理ページ26によって他の1つのページユニットPUが構成される。図7には、一例として、ページ#iというページ番号が与えられた2つの物理ページ26によって構成されたページユニットPUが図示されている。 For example, one page unit PU is composed of two physical pages 26 given a page number of page #i. Another page unit PU is composed of two physical pages 26 given a page number of page #i+1. Another page unit PU is composed of two physical pages 26 given a page number of page #i+2. FIG. 7 shows, as an example, a page unit PU composed of two physical pages 26 given a page number of page #i.

なお、1つのページユニットPUを構成する複数の物理ページ26のページ番号は同一でなくてもよい。異なるページ番号が与えられた複数の物理ページ26によって1つのページユニットPUが構成されてもよい。 Note that the page numbers of the plurality of physical pages 26 forming one page unit PU may not be the same. One page unit PU may be composed of a plurality of physical pages 26 given different page numbers.

図8は、実施形態にかかるページユニットPUにライトされるデータを説明するための模式的な図である。メモリコントローラ10は、NANDメモリ20に格納されているデータを、クラスタ27の単位で管理する。クラスタ27のサイズは、物理ページ26のサイズよりも小さい。全てのクラスタ27のサイズは共通である。 FIG. 8 is a schematic diagram for explaining data written to the page unit PU according to the embodiment. The memory controller 10 manages data stored in the NAND memory 20 in units of clusters 27 . The size of cluster 27 is smaller than the size of physical page 26 . All clusters 27 have a common size.

より詳細には、メモリコントローラ10は、NANDメモリ20でデータが格納される位置を、物理アドレスを用いて管理する。前述されたように、ホスト2からメモリシステム1にユーザデータが転送される際、論理アドレスがユーザデータと対応して転送される。メモリコントローラ10は、ユーザデータをNANDメモリ20にライトする際、NANDメモリ20におけるユーザデータのライト先の位置を示す物理アドレス値を、当該ユーザデータと対応して受信した論理アドレス値と対応づけて記憶する。クラスタ27は、物理アドレス値によって特定され得る最小の単位のデータである。メモリコントローラ10は、メモリチップ21からデータをリードする場合、当該メモリチップ21に対し、クラスタ27の単位の物理アドレス値で、リード対象のデータが格納された位置を指示することができる。 More specifically, the memory controller 10 uses physical addresses to manage locations where data is stored in the NAND memory 20 . As described above, when user data is transferred from the host 2 to the memory system 1, a logical address is transferred corresponding to the user data. When writing user data to the NAND memory 20, the memory controller 10 associates a physical address value indicating a write destination position of the user data in the NAND memory 20 with a logical address value received corresponding to the user data. Remember. A cluster 27 is the smallest unit of data that can be specified by a physical address value. When reading data from the memory chip 21 , the memory controller 10 can indicate to the memory chip 21 the location where the data to be read is stored with a physical address value in units of clusters 27 .

図8に示される例では、1つの物理ページ26当たり4つのクラスタ27が格納される。よって、1つのページユニットPUは、8つのクラスタ27が格納される。 In the example shown in FIG. 8, one physical page 26 stores four clusters 27 . Therefore, eight clusters 27 are stored in one page unit PU.

なお、1つのページユニットPUは、8つのクラスタ27のほかに、最大値のコードレートの符号化によって生成された誤り訂正符号が格納され得る不図示の領域を有する。つまり、コードレートが最大値である場合、1つのページユニットPUには、8つのクラスタ27の分のユーザデータと、最大値のコードレートの符号化によって生成され8つのクラスタ27の分のユーザデータの誤りを訂正するための誤り訂正符号と、が格納され得る。 In addition to the eight clusters 27, one page unit PU has an area (not shown) in which an error correction code generated by encoding at the maximum code rate can be stored. That is, when the code rate is the maximum value, one page unit PU contains user data for eight clusters 27 and user data for eight clusters 27 generated by encoding the code rate of the maximum value. and an error correction code for correcting errors in .

図9Aは、メモリシステム1の出荷後初めて使用されてから間もない第1タイミングにおいてスーパーブロック102aに対して並列にライトされ得るページユニットPUの群を示す模式的な図である。本図に示される例によれば、スーパーブロック102aには、28個のページユニットPUに対してデータが並列にライトされ得る。このように、1つのスーパーブロック102に対して並列にライトされ得るページユニットPUの群を、スーパーページ、と表記する。メモリコントローラ10は、並列のライトを、スーパーページ毎に実行する。 FIG. 9A is a schematic diagram showing a group of page units PU that can be written in parallel to the superblock 102a at the first timing shortly after the memory system 1 is first used after shipment. According to the example shown in this figure, data can be written in parallel to 28 page units PU in the superblock 102a. A group of page units PU that can be written in parallel to one superblock 102 in this way is referred to as a superpage. Memory controller 10 performs parallel writes on a superpage-by-superpage basis.

前述されたように、スーパーブロック102は、ゾーン容量の分のユーザデータの格納に必要な最小数のブロックユニットBUによって構成される。しかしながら、各スーパーブロック102のユーザデータが格納可能な容量が、ブロックユニットBUの単位で調整されるため、1つのスーパーブロック102に格納可能なユーザデータの量が、ゾーン容量を僅かに越える場合がある。メモリコントローラ10は、ゾーン容量の分のユーザデータのライトが終わった後、データがライトされていない余分な領域がそのスーパーブロック102に存在する場合、この余分な領域に対してパディング、つまり無意味なデータのライトを実行する。これによって、スーパーブロック102を構成する全てのブロックユニットBUに空きの領域がなくなるまでデータがライトされる。 As described above, the superblock 102 is composed of the minimum number of block units BU required to store user data for the zone capacity. However, since the capacity of each superblock 102 that can store user data is adjusted in units of block units BU, the amount of user data that can be stored in one superblock 102 may slightly exceed the zone capacity. be. If there is an extra area in the super block 102 where no data has been written after the user data has been written for the zone capacity, the memory controller 10 pads the extra area, that is, it is meaningless. data write. As a result, data is written until all block units BU constituting the super block 102 have no free space.

図9Aに示される例では、スーパーブロック102aが備える各スーパーページは、28個のページユニットPUで構成され、1つのページユニットPUは8つのクラスタ27の分のユーザデータを格納可能である。よって、各スーパーページは、224個のクラスタ27の分のユーザデータを格納可能な容量を有する。 In the example shown in FIG. 9A, each superpage provided in the superblock 102a is composed of 28 page units PU, and one page unit PU can store user data for eight clusters 27. In the example shown in FIG. Therefore, each super page has a capacity capable of storing user data for 224 clusters 27 .

これに対し、ゾーン容量をスーパーブロック102aが備えるスーパーページの数で除算して得られる量、つまりゾーン容量を1つのスーパーページ当たりの容量に換算して得られる量は、218個のクラスタ27の分の容量に相当することとする。 On the other hand, the amount obtained by dividing the zone capacity by the number of superpages included in the superblock 102a, that is, the amount obtained by converting the zone capacity into the capacity per superpage, is 218 clusters 27. It is assumed that it corresponds to the capacity of one minute.

この場合、スーパーブロック102aは、1つのスーパーページ当たり6つのクラスタ27の分の余分な領域を有する。 In this case, superblock 102a has extra space for six clusters 27 per superpage.

前述されたように、メモリコントローラ10は、ゾーン容量の分のユーザデータのライトが終わった後の状態で、データがライトされていない余分な領域がそのスーパーブロック102に存在する場合、当該余分な領域に無意味なデータをライトするパディングを実行する。例えば図9Aに示される例では、メモリコントローラ10は、1つのスーパーページ当たりに6つのクラスタ27aに無意味なデータをライトする。 As described above, if the super block 102 has an extra area to which no data has been written after the user data has been written for the zone capacity, the memory controller 10 Perform padding that writes meaningless data to the region. For example, in the example shown in FIG. 9A, memory controller 10 writes meaningless data to six clusters 27a per superpage.

なお、無意味なデータがライトされる領域は、必ずしも各スーパーページに均一に設けられなくてもよい。メモリコントローラ10は、任意のスーパーページに無意味なデータがライトされる領域を集めてもよい。 It should be noted that the area in which meaningless data is written does not necessarily have to be provided uniformly in each super page. Memory controller 10 may collect areas where meaningless data is written to any superpage.

ゾーン容量は、第1量の一例である。1つのスーパーブロックにユーザデータを格納可能な容量は、第2量の一例である。 Zone capacity is an example of a first quantity. A capacity that can store user data in one superblock is an example of the second amount.

なお、パディングの実行の契機は、1つのスーパーブロック102にゾーン容量の分のユーザデータのライトが終わったことだけに限定されない。メモリコントローラ10は、1つのゾーンへのユーザデータのライトが完了したと判断される場合、たとえそのゾーンにライトされたユーザデータの量がゾーン容量に達していなくても、パディングを実行してもよい。 Note that the trigger for executing padding is not limited to the completion of writing of user data for the zone capacity to one super block 102 . When it is determined that the writing of user data to one zone has been completed, the memory controller 10 performs padding even if the amount of user data written to that zone does not reach the zone capacity. good.

以降、余分な領域は、1つのスーパーブロック102のユーザデータを格納可能な領域からゾーン容量の分のユーザデータがライトされる領域を差し引いた領域を意味することとする。 Hereinafter, the extra area means the area obtained by subtracting the area in which the user data for the zone capacity is written from the area in which the user data of one super block 102 can be stored.

図9Bは、第1タイミングの後に何回かライト/イレースサイクルが実行された第2タイミングにおけるスーパーブロック102aの各スーパーページの状態を説明するための模式的な図である。第1タイミングの後にスーパーブロック102aに対して何回かライト/イレースサイクルが実行されたことで、いくつかのブロックユニットBUにおいてデータの信頼性が低下する。すると、メモリコントローラ10は、データの信頼性が低下したブロックユニットBUについてコードレートの縮小を行う。 FIG. 9B is a schematic diagram for explaining the state of each superpage of superblock 102a at the second timing when several write/erase cycles are executed after the first timing. After the first timing, several write/erase cycles have been performed on the superblock 102a, resulting in reduced data reliability in some block units BU. Then, the memory controller 10 reduces the code rate of the block unit BU whose data reliability has deteriorated.

図9Bに示される例では、バンク#K+1に属する14個のブロックユニットBUのうちの、チャネルch.0に接続されたメモリチップ21から選択されたブロックユニットBU、チャネルch.1に接続されたメモリチップ21から選択されたブロックユニットBU、チャネルch.2に接続されたメモリチップ21から選択されたブロックユニットBU、チャネルch.3に接続されたメモリチップ21から選択されたブロックユニットBU、チャネルch.4に接続されたメモリチップ21から選択されたブロックユニットBU、およびチャネルch.8に接続されたメモリチップ21から選択されたブロックユニットBUのそれぞれについて、コードレートが1段階分、縮小されている。これによって、1つのスーパーページ当たり、6つのクラスタ27の分だけ、ユーザデータの格納が可能な容量が減少する。例えば図示される6つのクラスタ27bは、コードレートの縮小によってユーザデータの格納が出来なくなったクラスタ27を表している。6つのクラスタ27bには、例えば、コードレートが1段階分縮小されたユーザデータの誤りを訂正するための誤り訂正符号が格納され得る。 In the example shown in FIG. 9B, among 14 block units BU belonging to bank #K+1, channel ch. 0, the block unit BU selected from the memory chip 21 connected to channel ch. 1, block unit BU selected from memory chip 21 connected to channel ch. 2, block unit BU selected from memory chip 21 connected to channel ch. block unit BU selected from memory chip 21 connected to channel ch. 4 and block unit BU selected from memory chip 21 connected to channel ch. For each block unit BU selected from the memory chip 21 connected to 8, the code rate is reduced by one step. This reduces the capacity for storing user data by 6 clusters 27 per superpage. For example, six clusters 27b shown in the drawing represent clusters 27 in which user data cannot be stored due to code rate reduction. The six clusters 27b can store, for example, error correction codes for correcting errors in user data whose code rate has been reduced by one step.

図9Bに示される例では、ユーザデータの格納が可能な容量が、1つのスーパーページ当たりに6つのクラスタ27bの分だけ減少している。これによって、1つのスーパーページ当たりにユーザデータの格納が可能な容量が、ゾーン容量を1つのスーパーページ当たりの容量に換算して得られる量と等しくなっている。つまり、第2タイミングにおいては、スーパーブロック102aは余分な領域を有さない。このような場合、ゾーン容量の分のユーザデータのライトとは別のパディングは不要である。 In the example shown in FIG. 9B, the capacity for storing user data is reduced by 6 clusters 27b per superpage. As a result, the capacity for storing user data per superpage is equal to the capacity obtained by converting the zone capacity into the capacity per superpage. That is, at the second timing, superblock 102a has no extra area. In such a case, no padding apart from writing user data for the zone capacity is required.

図9Cは、第2タイミングの後にさらに何回かライト/イレースサイクルが実行された第3タイミングにおけるスーパーブロック102aの各スーパーページの状態を説明するための模式的な図である。 FIG. 9C is a schematic diagram for explaining the state of each superpage of superblock 102a at a third timing in which write/erase cycles are executed several more times after the second timing.

図9Cに示される例では、第2タイミングからさらに、チャネルch.13に接続されたメモリチップ21から選択されたブロックユニットBUにおいてコードレートが1段階分、縮小されている。これによって、スーパーブロック102aに格納可能なユーザデータの量が、ゾーン容量から1つのスーパーページ当たり1つのクラスタ27の分だけ不足する。例えば図示される1つのクラスタ27cは、コードレートの縮小によってユーザデータの格納が出来なくなったクラスタ27を表している。 In the example shown in FIG. 9C, channel ch. In the block unit BU selected from the memory chip 21 connected to 13, the code rate is reduced by one step. This leaves the amount of user data that can be stored in superblock 102a short of the zone capacity by one cluster 27 per superpage. For example, one cluster 27c shown in the drawing represents a cluster 27 in which user data cannot be stored due to code rate reduction.

スーパーブロック102に格納可能なユーザデータの量がゾーン容量を下回った場合、メモリコントローラ10は、不足分、即ちゾーン容量からスーパーブロック102に格納可能なユーザデータの量を減算して得られる容量の分の記憶領域を、候補構成101から削除されたブロックユニットBUで補填する。 If the amount of user data that can be stored in the superblock 102 falls below the zone capacity, the memory controller 10 replaces the deficit, that is, the capacity obtained by subtracting the amount of user data that can be stored in the superblock 102 from the zone capacity. , are supplemented with the block units BU deleted from the candidate configuration 101 .

つまり、メモリコントローラ10は、複数の候補構成101から削除された全てのブロックユニットBUを取っておく(reserve)。そして、或るスーパーブロック102においてコードレートの縮小または不良ブロックの発生によって容量の不足分が生じると、メモリコントローラ10は、取っておいたブロックユニットBUのうちの1以上のブロックユニットBUを、容量の不足分が生じたスーパーブロック102に追加する。 That is, the memory controller 10 reserves all block units BU deleted from the multiple candidate configurations 101 . Then, if a super block 102 suffers from a shortage of capacity due to code rate reduction or the occurrence of defective blocks, the memory controller 10 reserves one or more block units BU out of the reserved block units BU and restores the capacity. is added to the superblock 102 where the shortfall of is generated.

図9Dは、第3タイミングの後に不足分が補填された第4タイミングにおけるスーパーブロック102aの各スーパーページの状態を説明するための模式的な図である。 FIG. 9D is a schematic diagram for explaining the state of each superpage of superblock 102a at the fourth timing when the shortfall is compensated after the third timing.

図9Dに示される例では、バンク#K+1のチャネルch.10に接続されたメモリチップ21から選択された1つのブロックユニットBUがスーパーブロック102aに追加される。これによって、スーパーブロック102aが備える各スーパーページは、8つのクラスタ27の分のユーザデータを格納可能なページユニットPUaが追加される。即ち、各スーパーページは、追加された8つのクラスタ27により、不足した1つのクラスタ27の分が補填される。その結果、容量の不足が解消される。 In the example shown in FIG. 9D, channel ch. One block unit BU selected from the memory chips 21 connected to 10 is added to the super block 102a. As a result, a page unit PUa capable of storing eight clusters 27 of user data is added to each superpage included in the superblock 102a. In other words, each super page is compensated for one missing cluster 27 by eight clusters 27 added. As a result, the lack of capacity is eliminated.

なお、図9Dに示されるスーパーブロック102aは、1つのスーパーページ当たりに、7つのクラスタ27の分の量に相当する余分な領域を含む。実施形態では、ブロックユニットBUの追加によって余分な領域が生じる場合、メモリコントローラ10は、スーパーブロック102から1以上のブロックユニットBUを削除することによって、余分な領域の容量を可能な限り減少させることが可能に構成される。 Note that the superblock 102a shown in FIG. 9D includes an amount of extra space equivalent to seven clusters 27 per superpage. In the embodiment, if the addition of the block unit BU results in extra space, the memory controller 10 removes one or more block units BU from the superblock 102 to reduce the capacity of the extra space as much as possible. is configured to allow

図9Eは、第4タイミングの後に1つのブロックユニットBUが削除された第5タイミングにおけるスーパーブロック102aの各スーパーページの状態を説明するための模式的な図である。 FIG. 9E is a schematic diagram for explaining the state of each superpage of the superblock 102a at the fifth timing when one block unit BU is deleted after the fourth timing.

図9Eに示される例では、図9Dに示された状態のスーパーブロック102aから、バンク#K+1のチャネルch.0に接続されたメモリチップ21から選択されたブロックユニットBUが削除される。 In the example shown in FIG. 9E, from superblock 102a in the state shown in FIG. 9D, channel ch. The block unit BU selected from the memory chip 21 connected to 0 is deleted.

図9Dに示されたスーパーブロック102aは、1つのスーパーページ当たりに7つのクラスタ27の分の量に相当する余分な領域を含む。そして、図9Dに示されたスーパーブロック102aを構成するブロックユニットBUのうちの、バンク#K+1のチャネルch.0に接続されたメモリチップ21に含まれるブロックユニットBUは、1つのページユニットPU当たりに7つのクラスタ27の分のユーザデータを格納可能な容量を有する。そして、1つのスーパーページ当たりに7つのクラスタ27の分の量に相当する余分な領域を含むスーパーブロック102aから、1つのページユニットPU当たりに7つのクラスタ27の分のユーザデータを格納可能な容量を有するブロックユニットBUが削除される。これにより、1つのスーパーページ当たりにユーザデータの格納か可能な容量が、ゾーン容量を1つのスーパーページ当たりの容量に換算して得られる量と等しくなる。つまり、スーパーブロック102aから余分な領域が無くなる。 Superblock 102a shown in FIG. 9D contains an amount of extra space equivalent to seven clusters 27 per superpage. Channel ch. The block unit BU included in the memory chip 21 connected to 0 has a capacity capable of storing user data for seven clusters 27 per page unit PU. Then, from the super block 102a including an extra area corresponding to the amount of seven clusters 27 per super page, one page unit PU can store user data for seven clusters 27. is deleted. As a result, the capacity for storing user data per superpage becomes equal to the capacity obtained by converting the zone capacity into the capacity per superpage. In other words, superblock 102a has no extra area.

なお、メモリコントローラ10は、スーパーブロック102aから削除されたバンク#K+1のチャネルch.0に接続されたメモリチップ21に含まれるブロックユニットBUを、再び何れかのスーパーブロック102に追加されるまで取っておく。 Note that the memory controller 10 operates on the channel ch. The block unit BU included in the memory chip 21 connected to 0 is reserved until it is added to some super block 102 again.

図9A~図9Eを用いて説明された例では、スーパーブロック102におけるユーザデータが格納可能な容量の減少は、コードレートの縮小によって引き起こされた。スーパーブロック102におけるユーザデータが格納可能な容量の減少は、そのスーパーブロック102に含まれるブロックユニットBUが不良ブロックに設定されることによっても引き起こされうる。ブロックユニットBUが不良ブロックに設定されたことによってスーパーブロック102に容量の不足分が生じた場合、メモリコントローラ10は、コードレートの縮小によってスーパーブロック102に容量の不足分が生じた場合と同様に、予め取っておいたブロックユニットBUから不足分を補填する。 In the example illustrated with FIGS. 9A-9E, the reduction in the capacity of superblock 102 to store user data was caused by code rate reduction. A reduction in the capacity of the superblock 102 that can store user data can also be caused by the block unit BU included in the superblock 102 being set as a bad block. When the block unit BU is set as a bad block and the super block 102 has a capacity shortage, the memory controller 10 performs the same operation as when the super block 102 has a capacity shortage due to code rate reduction. , make up for the shortage from the block unit BU previously reserved.

このように、メモリコントローラ10は、それぞれのスーパーブロック102をゾーン容量が得られる最小数のブロックユニットBUで構成する。そして、メモリコントローラ10は、コードレートの縮小または不良ブロックの発生によって或るスーパーブロック102に容量の不足分が生じると、予め取っておいたブロックユニットBUをそのスーパーブロック102に追加する。これによって、各スーパーブロック102の余分な領域をできるだけ少なくすることができる。 In this way, the memory controller 10 configures each superblock 102 with the minimum number of block units BU that can obtain the zone capacity. Then, the memory controller 10 adds block units BU reserved in advance to the super block 102 when a certain super block 102 has insufficient capacity due to code rate reduction or occurrence of defective blocks. This allows the extra space in each superblock 102 to be minimized.

なお、図9A~図9Eを用いて説明した例では、スーパーブロック102に1つのブロックユニットBUが追加されたり、スーパーブロック102から1つのブロックユニットBUが削除されたりした。スーパーブロック102に一度に追加されるブロックユニットBUの数は2以上であってもよい。スーパーブロック102から一度に削除されるブロックユニットBUの数は2以上であってもよい。例えば、メモリコントローラ10は、スーパーブロック102に3つのブロックユニットBUを追加し、当該スーパーブロック102から2つのブロックユニットBUを削除することによって、不足分の解消と余分な容量の最小化を実現してもよい。 Note that in the example described with reference to FIGS. 9A to 9E, one block unit BU was added to the superblock 102 or one block unit BU was deleted from the superblock 102. FIG. The number of block units BU added to the superblock 102 at one time may be two or more. The number of block units BU deleted from the superblock 102 at one time may be two or more. For example, the memory controller 10 adds three block units BU to the super block 102 and removes two block units BU from the super block 102 to eliminate the shortage and minimize the excess capacity. may

また、図9A~図9Eを用いて説明した例では、スーパーブロック102に1つのブロックユニットBUが追加された後に当該スーパーブロック102から別の1つのブロックユニットBUが削除された。ブロックユニットBUの追加とブロックユニットBUの削除の実行の順序はこれに限定されない。 Also, in the example described using FIGS. 9A to 9E, after one block unit BU was added to the superblock 102, another one block unit BU was deleted from the superblock 102. FIG. The execution order of addition of block units BU and deletion of block units BU is not limited to this.

ここで、実施形態と比較される技術について説明する。実施形態と比較される技術を、比較例と表記する。比較例によれば、メモリコントローラは、一律のサイズの複数のスーパーブロックを生成する。そして、メモリシステムの動作が開始して以降は、メモリコントローラは、1つのスーパーブロックに物理ブロックを追加することも1つのスーパーブロックから物理ブロックを削除することしない。したがって、メモリコントローラは、或るスーパーブロックにおいてコードレートを縮小したり不良ブロックが発生したりしても少なくともゾーン容量の分のユーザデータが格納可能にするために、各スーパーブロックを生成する際には各スーパーブロックに予め多くの余分な領域を持たせる。 Here, a technique to be compared with the embodiment will be described. A technique compared with the embodiment is referred to as a comparative example. According to a comparative example, the memory controller generates multiple superblocks of uniform size. Then, after the memory system starts operating, the memory controller neither adds physical blocks to nor deletes physical blocks from one superblock. Therefore, when generating each superblock, the memory controller can store at least the zone capacity of user data even if the code rate is reduced or a bad block occurs in a certain superblock. causes each superblock to have a lot of extra space upfront.

前述されたように、1つのスーパーブロックにゾーン容量の分のユーザデータのライトが完了した状態で当該スーパーブロックに余分な領域が存在する場合、パディングが行われる。比較例では、各スーパーブロックに多くの余分な容量が設けられているため、パディングによってライトされる無意味なデータの量が非常に多い。よって、比較例によれば、ライトアンプリフィケーションファクター(以降、WAF)が悪く、メモリシステムが信頼性をもって動作する期間が減少する。また、NANDメモリのハードウェアリソース(例えばNANDメモリとメモリコントローラとの間を接続するチャネルの帯域)が無意味なデータのライトによって占有されるため、ユーザデータのライトの速度が低下する。つまり、比較例によれば、メモリシステムの性能が低下する。 As described above, padding is performed when there is an extra area in one superblock when user data for the zone capacity has been written to the superblock. In the comparative example, there is a lot of extra capacity in each superblock, so the amount of meaningless data written by padding is very high. Therefore, according to the comparative example, the write amplification factor (hereinafter referred to as WAF) is poor, and the period during which the memory system operates reliably decreases. In addition, hardware resources of the NAND memory (for example, the bandwidth of the channel connecting the NAND memory and the memory controller) are occupied by meaningless data writes, which slows down the speed of writing user data. That is, according to the comparative example, the performance of the memory system deteriorates.

これに対し、実施形態によれば、各スーパーブロック102に含まれる余分な領域をできるだけ削減することができる。よって、パディングに起因するWAFの悪化が抑制される。その結果、比較例に比べ、メモリシステム1が信頼性をもって動作する期間を長くでき、かつ、ユーザデータのライトの速度の低下が抑制される。つまり、実施形態のメモリコントローラ10は、比較例に比べて性能が高くなるようにスーパーブロックを生成することができる。 In contrast, according to the embodiment, the extra area included in each superblock 102 can be reduced as much as possible. Therefore, deterioration of WAF caused by padding is suppressed. As a result, compared to the comparative example, the period during which the memory system 1 operates with reliability can be lengthened, and a decrease in the write speed of user data can be suppressed. In other words, the memory controller 10 of the embodiment can generate super blocks with higher performance than the comparative example.

CPU11は、上記された動作を実現するための各種管理情報を例えばRAM30に格納する。図10は、実施形態にかかるRAM30に格納される管理情報の一例を説明するための模式的な図である。本図に示されるように、RAM30には、スーパーブロック管理情報201、リザーブドブロック管理情報202、不良ブロック管理情報203、およびゾーン割り当て情報204が格納される。 The CPU 11 stores, for example, the RAM 30 various kinds of management information for realizing the operations described above. FIG. 10 is a schematic diagram for explaining an example of management information stored in the RAM 30 according to the embodiment. As shown in the figure, the RAM 30 stores super block management information 201, reserved block management information 202, bad block management information 203, and zone allocation information 204. FIG.

スーパーブロック管理情報201は、スーパーブロック102毎にスーパーブロック102を構成する複数のブロックユニットBUの識別情報が記録された情報である。CPU11は、或るスーパーブロック102を設定した場合、当該スーパーブロック102の識別情報と、当該スーパーブロック102を構成する複数のブロックユニットBUの識別情報と、を対応づけて記録する。また、CPU11は、或るスーパーブロック102からブロックユニットBUを削除したり、或るスーパーブロック102にブロックユニットBUを追加したりした場合、ブロックユニットBUの削除または追加に応じてスーパーブロック管理情報201を更新する。 The superblock management information 201 is information in which identification information of a plurality of block units BU constituting the superblock 102 is recorded for each superblock 102 . When a certain super block 102 is set, the CPU 11 records identification information of the super block 102 and identification information of a plurality of block units BU forming the super block 102 in association with each other. Further, when the CPU 11 deletes a block unit BU from a certain super block 102 or adds a block unit BU to a certain super block 102, the super block management information 201 to update.

ゾーン割り当て情報204は、ゾーンの識別情報と当該ゾーンに割り当てられたスーパーブロック102の識別情報とを対応付ける情報である。 The zone allocation information 204 is information that associates the identification information of a zone with the identification information of the superblock 102 allocated to the zone.

不良ブロック管理情報203は、使用が禁止されたブロックユニットBUの識別情報のリストである。例えば、或るブロックユニットBUのコードレートが下限値まで縮小され、かつ下限値のコードレートでもデータの信頼性が確保できない場合、CPU11は、このブロックユニットBUの識別情報を不良ブロック管理情報203に登録する。これによって、当該ブロックユニットBUは不良ブロックとして設定される。CPU11は、不良ブロック管理情報203に登録されたブロックユニットBUは、それ以降は使用しない。 The bad block management information 203 is a list of identification information of block units BU whose use is prohibited. For example, if the code rate of a certain block unit BU is reduced to the lower limit value and data reliability cannot be ensured even at the lower limit code rate, the CPU 11 stores the identification information of this block unit BU in the bad block management information 203. register. As a result, the block unit BU is set as a bad block. The CPU 11 does not use the block unit BU registered in the bad block management information 203 thereafter.

リザーブドブロック管理情報202は、スーパーブロック102への追加が可能なブロックユニットBUの識別情報が記録された情報である。 The reserved block management information 202 is information in which identification information of block units BU that can be added to the super block 102 is recorded.

図11は、実施形態にかかるリザーブドブロック管理情報202のデータ構造の一例を示す模式的な図である。本図に示されるように、リザーブドブロック管理情報202は、チャネルとバンクとの対毎に(換言するとメモリチップ21毎に)3つのサブリストを含む。3つのサブリストは、第1BUリスト、第2BUリスト、および第3BUリストである。 FIG. 11 is a schematic diagram showing an example of the data structure of the reserved block management information 202 according to the embodiment. As shown in this figure, the reserved block management information 202 includes three sublists for each pair of channel and bank (in other words, for each memory chip 21). The three sub-lists are the first BU list, the second BU list, and the third BU list.

第1BUリストは、コードレートが上限値に設定されたブロックユニットBUの識別情報のリストである。第1BUリストに登録されたブロックユニットBUには、ページユニットPU当たりに8つのクラスタ27の分のユーザデータが格納可能である。 The first BU list is a list of identification information of block units BU whose code rate is set to the upper limit. The block units BU registered in the first BU list can store user data for eight clusters 27 per page unit PU.

第2BUリストは、コードレートが上限値から1段階だけ縮小されたブロックユニットBUの識別情報のリストである。第2BUリストに登録されたブロックユニットBUには、ページユニットPU当たりに7つのクラスタ27の分のユーザデータが格納可能である。 The second BU list is a list of identification information of block units BU whose code rate is reduced by one step from the upper limit. The block units BU registered in the second BU list can store user data for seven clusters 27 per page unit PU.

第3BUリストは、コードレートが上限値から2段階だけ縮小されたブロックユニットBUの識別情報のリストである。第3BUリストに登録されたブロックユニットBUには、ページユニットPU当たりに6つのクラスタ27の分のユーザデータが格納可能である。 The third BU list is a list of identification information of block units BU whose code rate is reduced by two stages from the upper limit. The block units BU registered in the third BU list can store user data for six clusters 27 per page unit PU.

なお、コードレートに関して、上限値から2段階だけ縮小された値が下限値であることとする。コードレートの下限値はこれに限定されない。 Regarding the code rate, the lower limit is assumed to be a value that is reduced by two steps from the upper limit. The code rate lower limit is not limited to this.

このように、スーパーブロック102に追加可能なブロックユニットBUは、チャネル、バンク、および設定されたコードレートのそれぞれによって分類されて管理されている。 In this way, the block units BU that can be added to the super block 102 are classified and managed according to channels, banks, and set code rates.

メモリコントローラ10は、リザーブドブロック管理情報202によって管理されたブロックユニットBUをスーパーブロック102に追加することができる。図9A~図9Eを用いて説明された例では、メモリコントローラ10は、第1BUリストによって管理されているコードレートが上限値に設定されたブロックユニットBUがスーパーブロック102に追加された。メモリコントローラ10は、第2BUリストによって管理されているコードレートが上限値から1段階だけ縮小されたブロックユニットBUをスーパーユニット102に追加することが可能である。また、メモリコントローラ10は、第3BUリストによって管理されているコードレートが上限値から2段階だけ縮小されたブロックユニットBUをスーパーユニット102に追加することが可能である。 The memory controller 10 can add block units BU managed by the reserved block management information 202 to the super block 102 . In the example described with reference to FIGS. 9A to 9E, the memory controller 10 added to the super block 102 a block unit BU with a code rate managed by the first BU list set to the upper limit. The memory controller 10 can add to the super unit 102 a block unit BU in which the code rate managed by the second BU list is reduced by one step from the upper limit. Also, the memory controller 10 can add to the super unit 102 a block unit BU in which the code rate managed by the third BU list is reduced by two stages from the upper limit.

続いて、実施形態にかかるメモリシステム1の動作を説明する。 Next, operation of the memory system 1 according to the embodiment will be described.

図12は、スーパーブロック102の生成に関する実施形態にかかるメモリシステム1の動作の一例を説明するためのフローチャートである。 FIG. 12 is a flowchart for explaining an example of the operation of the memory system 1 according to the embodiment regarding generation of the superblock 102. As shown in FIG.

まず、メモリコントローラ10は、複数の候補構成101を生成する(S101)。メモリコントローラ10は、並列動作が可能な複数のメモリチップ21のそれぞれから1つのブロックユニットBUを選択し、それぞれは異なるメモリチップ21から選択されたブロックユニットBUの群を1つの候補構成101に設定する。 First, the memory controller 10 generates a plurality of candidate configurations 101 (S101). The memory controller 10 selects one block unit BU from each of a plurality of memory chips 21 capable of parallel operation, and sets a group of block units BU selected from different memory chips 21 as one candidate configuration 101. do.

例えば、メモリコントローラ10は、図4および図5を用いて説明したように、バンク#0からバンク#7のうちの1以上のバンクを選択する。そして、メモリコントローラ10は、選択された1以上のバンクから複数の並列ライト要素を選択する。そして、メモリコントローラ10は、選択された複数の並列ライト要素からなる群を1つの候補構成101に設定する。 For example, memory controller 10 selects one or more banks from bank #0 to bank #7, as described with reference to FIGS. Memory controller 10 then selects a plurality of parallel write elements from the selected one or more banks. The memory controller 10 then sets the selected group of parallel write elements as one candidate configuration 101 .

S101に続いて、メモリコントローラ10は、各候補構成101から1以上のブロックユニットBUを削除し、削除後の各候補構成101をスーパーブロック102として設定する(S102)。S102では、メモリコントローラ10は、各スーパーブロック102に関する情報をスーパーブロック管理情報201に追加する。 Following S101, the memory controller 10 deletes one or more block units BU from each candidate configuration 101, and sets each candidate configuration 101 after deletion as a super block 102 (S102). At S<b>102 , the memory controller 10 adds information about each superblock 102 to the superblock management information 201 .

メモリコントローラ10は、S102において削除されたブロックユニットBUをリザーブドブロック管理情報202に登録する(S103)。 The memory controller 10 registers the block unit BU deleted in S102 in the reserved block management information 202 (S103).

メモリシステム1がホスト2からゾーン生成コマンドを受信すると(S104)、メモリコントローラ10は、新たなゾーンを定義し、定義したゾーンに何れかのスーパーブロック102を割り当てる(S105)。S105では、メモリコントローラ10は、新たに定義したゾーンに関する情報をゾーン割り当て情報204に記録する。 When the memory system 1 receives a zone creation command from the host 2 (S104), the memory controller 10 defines a new zone and allocates any superblock 102 to the defined zone (S105). In S<b>105 , the memory controller 10 records information about the newly defined zone in the zone allocation information 204 .

そして、スーパーブロック102の設定に関する一連の動作が完了する。 A series of operations relating to the setting of the superblock 102 is then completed.

図13は、実施形態にかかるメモリシステム1のスーパーブロック102へのライトの動作の一例を説明するためのフローチャートである。ここでは、実施形態にかかるメモリシステム1が、ホスト2から或るゾーンへのライトを要求された事によって開始する一連の動作を説明する。 FIG. 13 is a flowchart for explaining an example of a write operation to the superblock 102 of the memory system 1 according to the embodiment. Here, a series of operations started by the memory system 1 according to the embodiment when the host 2 requests to write to a certain zone will be described.

まず、メモリコントローラ10は、ゾーン割り当て情報204を参照することによって、ライト先のゾーンに割り当てられたスーパーブロック102を特定する(S201)。特定されたスーパーブロック102を、対象のスーパーブロック102と表記する。 First, the memory controller 10 identifies the super block 102 allocated to the write destination zone by referring to the zone allocation information 204 (S201). The identified superblock 102 is denoted as the target superblock 102 .

続いて、メモリコントローラ10は、不良ブロックの発生の判定を行う(S202)。 Subsequently, the memory controller 10 determines whether a bad block has occurred (S202).

S202では、メモリコントローラ10は、対象のスーパーブロック102を構成する各ブロックユニットBUについて、使用の継続が可能か否かを判定する。コードレートが下限値に設定され、かつ格納されるデータの信頼性が基準を満たさないブロックユニットBUが存在する場合、メモリコントローラ10は、そのブロックユニットBUは不良ブロックになったと判定する。また、故障したブロックユニットBUが存在する場合、メモリコントローラ10は、そのブロックユニットBUは不良ブロックになったと判定する。 In S202, the memory controller 10 determines whether or not each block unit BU constituting the target super block 102 can continue to be used. If there is a block unit BU whose code rate is set to the lower limit and the reliability of stored data does not satisfy the standard, the memory controller 10 determines that the block unit BU has become a defective block. Also, if there is a failed block unit BU, the memory controller 10 determines that the block unit BU has become a defective block.

対象のスーパーブロック102を構成する何れかのブロックユニットBUが不良ブロックとなった場合、メモリコントローラ10は、そのブロックユニットBUを対象のスーパーブロック102から削除して不良ブロック管理情報203に登録する。対象のスーパーブロック102を構成する何れのブロックユニットBUも不良ブロックになっていない場合、メモリコントローラ10は、対象のスーパーブロック102の構成を変更しない。 If any of the block units BU forming the target super block 102 becomes a defective block, the memory controller 10 deletes the block unit BU from the target super block 102 and registers it in the defective block management information 203 . If none of the block units BU forming the target super block 102 are defective blocks, the memory controller 10 does not change the configuration of the target super block 102 .

続いて、メモリコントローラ10は、コードレートの縮小の判定を行う(S203)。 Subsequently, the memory controller 10 determines reduction of the code rate (S203).

S204では、メモリコントローラ10は、対象のスーパーブロック102を構成するそれぞれのブロックユニットBUについてコードレートの縮小を行うか否かを判定する。コードレートの縮小を行うと判定されたブロックユニットBUが存在する場合、メモリコントローラ10は、そのブロックユニットBUについてコードレートの縮小を実行する。 In S204, the memory controller 10 determines whether or not to reduce the code rate for each block unit BU that constitutes the super block 102 of interest. If there is a block unit BU for which code rate reduction is to be performed, the memory controller 10 executes code rate reduction for that block unit BU.

続いて、メモリコントローラ10は、対象のスーパーブロック102に格納可能なユーザデータの量がゾーン容量未満であるか否かを判定する(S204)。対象のスーパーブロック102に格納可能なユーザデータの量がゾーン容量未満である場合(S204:Yes)、メモリコントローラ10は、容量の不足分、即ちゾーン容量から対象のスーパーブロック102に格納可能なユーザデータの量を減算して得られる容量は補填可能であるか否かを判定する(S205)。メモリコントローラ10は、リザーブドブロック管理情報202を参照することによって、容量の不足分の補填に利用できるブロックユニットBUが存在するか否かに基づいて容量の不足分が補填可能であるか否かを判定する。 Subsequently, the memory controller 10 determines whether or not the amount of user data that can be stored in the target superblock 102 is less than the zone capacity (S204). If the amount of user data that can be stored in the target super block 102 is less than the zone capacity (S204: Yes), the memory controller 10 determines the amount of user data that can be stored in the target super block 102 from the lack of capacity, that is, the zone capacity. It is determined whether or not the capacity obtained by subtracting the amount of data can be compensated (S205). By referring to the reserved block management information 202, the memory controller 10 determines whether the capacity shortage can be compensated based on whether there is a block unit BU that can be used to compensate for the capacity shortage. judge.

容量の不足分が補填可能でない場合(S205:No)、メモリコントローラ10は、対象のスーパーブロック102を解体する(S206)。 If the capacity shortage cannot be compensated for (S205: No), the memory controller 10 dismantles the target super block 102 (S206).

S206では、メモリコントローラ10は、対象のスーパーブロック102を構成する全てのブロックユニットBUをリザーブドブロック管理情報202に登録する。また、メモリコントローラ10は、対象のスーパーブロック102に関する情報をスーパーブロック管理情報201から削除する。 In S<b>206 , the memory controller 10 registers all block units BU forming the target super block 102 in the reserved block management information 202 . Also, the memory controller 10 deletes the information about the target superblock 102 from the superblock management information 201 .

S206に続いて、メモリコントローラ10は、別のスーパーブロック102をライト先のゾーンに割り当てる(S207)。S207によって、ライト先のゾーンに割り当てられていたスーパーブロック102、即ち対象のスーパーブロック102が、新しいスーパーブロック102に切り替わる。 Following S206, the memory controller 10 allocates another super block 102 to the write destination zone (S207). Through S207, the superblock 102 assigned to the write destination zone, that is, the target superblock 102 is switched to the new superblock 102. FIG.

S207の後、制御がS202に移行して、メモリコントローラ10は、対象のスーパーブロック102となった新しいスーパーブロック102について、不良ブロックの発生の判定を行う。 After S207, the control shifts to S202, and the memory controller 10 determines whether or not the new superblock 102 that has become the target superblock 102 has a bad block.

容量の不足分は補填可能である場合(S205:Yes)、メモリコントローラ10は、容量の不足分をリザーブドブロック管理情報202に登録された1以上のブロックユニットBUを用いて補填する(S208)。 If the capacity shortage can be compensated for (S205: Yes), the memory controller 10 compensates for the capacity shortage using one or more block units BU registered in the reserved block management information 202 (S208). .

S208では、メモリコントローラ10は、余分な領域の容量ができるだけ少なくなるように、対象のスーパーブロック102に1以上のブロックユニットBUを追加したり、対象のスーパーブロック102から1以上のブロックユニットBUを削除したりすることができる。メモリコントローラ10は、第1BUリスト、第2BUリスト、および第3BUリストから、追加するブロックユニットBUを選択することができる。メモリコントローラ10は、対象のスーパーブロック102にブロックユニットBUを追加したり、対象のスーパーブロック102からブロックユニットBUを削除したりした場合、スーパーブロック管理情報201を更新する。メモリコントローラ10は、対象のスーパーブロック102からブロックユニットBUを削除した場合、当該ブロックユニットBUをリザーブドブロック管理情報202に登録する。 In S208, the memory controller 10 adds one or more block units BU to the target superblock 102 or removes one or more block units BU from the target superblock 102 so that the capacity of the extra area is minimized. can be deleted. The memory controller 10 can select block units BU to be added from the first BU list, the second BU list, and the third BU list. The memory controller 10 updates the super block management information 201 when adding a block unit BU to the target super block 102 or deleting a block unit BU from the target super block 102 . When the block unit BU is deleted from the target superblock 102 , the memory controller 10 registers the block unit BU in the reserved block management information 202 .

S208の後、または対象のスーパーブロック102に格納可能なユーザデータの量がゾーン容量以上である場合(S204:No)、メモリコントローラ10は、対象のスーパーブロック102に対してデータのイレースを実行する(S209)。 After S208, or if the amount of user data that can be stored in the target superblock 102 is greater than or equal to the zone capacity (S204: No), the memory controller 10 erases the data in the target superblock 102. (S209).

S209では、メモリコントローラ10は、対象のスーパーブロック102を構成する全てのブロックユニットBUに対して一括にデータのイレースを実行する。これによって、対象のスーパーブロック102はデータのライトが可能な状態になる。 In S209, the memory controller 10 collectively erases data for all block units BU that constitute the super block 102 of interest. As a result, the target superblock 102 becomes ready for data writing.

S209の後、メモリコントローラ10は、対象のスーパーブロック102へのデータのライトを実行する(S210)。 After S209, the memory controller 10 writes data to the target superblock 102 (S210).

S210では、ホスト2は、ライト先のゾーンに割り当てられたスーパーブロック102に対し、ゾーン容量の分のユーザデータのライトを行う。メモリコントローラ10は、ホスト2から受信するゾーン容量の分のユーザデータを誤り訂正符号などの冗長データとともに対象のスーパーブロック102にライトする。 In S210, the host 2 writes user data corresponding to the zone capacity to the super block 102 assigned to the write destination zone. The memory controller 10 writes user data corresponding to the zone capacity received from the host 2 to the target super block 102 together with redundant data such as an error correction code.

メモリコントローラ10は、ゾーン容量の分のユーザデータを冗長データとともに対象のスーパーブロック102にライトすると、対象のスーパーブロック102に余分な領域が存在するか否かを判定する(S211)。対象のスーパーブロック102に余分な領域が存在する場合(S211:Yes)、メモリコントローラ10は、当該余分な領域に無意味なデータをライトするパディングを実行する(S212)。そしてスーパーブロック102へのライトの動作が完了する。 When the memory controller 10 writes the zone capacity of user data together with redundant data to the target super block 102, it determines whether or not there is an extra area in the target super block 102 (S211). If there is an extra area in the target superblock 102 (S211: Yes), the memory controller 10 performs padding to write meaningless data in the extra area (S212). The write operation to superblock 102 is then completed.

対象のスーパーブロック102に余分な領域が存在しない場合(S211:No)、メモリコントローラ10はS213の処理をスキップし、スーパーブロック102へのライトの動作が完了する。 If there is no extra area in the target superblock 102 (S211: No), the memory controller 10 skips the processing of S213 and the write operation to the superblock 102 is completed.

このように、実施形態によれば、メモリコントローラ10は、並列動作が可能な複数のメモリチップ21のそれぞれ異なるメモリチップ21から選択されたブロックユニットBUの群である候補構成101を複数生成する。そして、メモリコントローラ10は、複数の候補構成101のそれぞれから1以上のブロックユニットBUを削除することによって、最小数のブロックユニットBUによって構成され、それぞれはユーザデータを少なくともゾーン容量まで格納可能な複数のスーパーブロック102を生成する。メモリコントローラ10は、データのライトを、1つのスーパーブロック102を構成する全てのブロックユニットBUに空きの領域がなくなるまで実行する。また、メモリコントローラ10は、データのイレースを、1つのスーパーブロック102を構成する全てのブロックユニットBUに対して一括に実行する。 Thus, according to the embodiment, the memory controller 10 generates a plurality of candidate configurations 101 that are groups of block units BU selected from different memory chips 21 of the plurality of memory chips 21 capable of parallel operation. By deleting one or more block units BU from each of the plurality of candidate configurations 101, the memory controller 10 is configured with a minimum number of block units BU, each of which can store user data up to at least the zone capacity. generates a superblock 102 of The memory controller 10 writes data until all block units BU forming one super block 102 have no free space. In addition, the memory controller 10 erases data collectively for all block units BU forming one super block 102 .

よって、比較例に比べてパディングに起因するWAFの悪化が抑制される。その結果、比較例に比べ、メモリシステム1が信頼性をもって動作する期間を長くでき、かつ、ユーザデータのライトの速度の低下が抑制される。つまり、実施形態のメモリコントローラ10は、比較例に比べて性能が高くなるようにスーパーブロック102を生成することができる。 Therefore, deterioration of WAF due to padding is suppressed as compared with the comparative example. As a result, compared to the comparative example, the period during which the memory system 1 operates with reliability can be lengthened, and a decrease in the write speed of user data can be suppressed. That is, the memory controller 10 of the embodiment can generate the super block 102 with higher performance than the comparative example.

また、実施形態によれば、メモリコントローラ10は、1つのスーパーブロック102のユーザデータを格納可能な容量が、コードレートの縮小によってゾーン容量よりも少なくなった場合、複数の候補構成101から削除された複数のブロックユニットBUのうちの少なくとも1つを当該スーパーブロック102に追加する。 Further, according to the embodiment, the memory controller 10 is deleted from the plurality of candidate configurations 101 when the user data storage capacity of one super block 102 becomes smaller than the zone capacity due to code rate reduction. At least one of the plurality of block units BU is added to the super block 102 .

よって、各スーパーブロック102のユーザデータの格納可能な容量をゾーン容量以上に維持しつつ、NANDメモリ20に格納されたデータの信頼性が低下に応じて誤り訂正能力を強化することが可能である。 Therefore, it is possible to enhance the error correction capability in accordance with the decrease in the reliability of the data stored in the NAND memory 20 while maintaining the user data storable capacity of each super block 102 equal to or greater than the zone capacity. .

また、実施形態によれば、メモリコントローラ10は、1つのスーパーブロック102のユーザデータを格納可能な容量が不良ブロックの発生によってゾーン容量よりも少なくなった場合、複数の候補構成101から削除された複数のブロックユニットBUのうちの少なくとも1つを当該スーパーブロック102に追加する。 Further, according to the embodiment, when the capacity of one super block 102 that can store user data becomes smaller than the zone capacity due to the occurrence of bad blocks, the memory controller 10 removes the super block from the plurality of candidate configurations 101 . At least one of the plurality of block units BU is added to the superblock 102 .

よって、不良ブロックが発生した場合であっても各スーパーブロック102のユーザデータの格納可能な容量をゾーン容量以上に維持することが可能である。 Therefore, even if a bad block occurs, it is possible to maintain the user data storage capacity of each super block 102 equal to or greater than the zone capacity.

また、実施形態によれば、1つのスーパーブロック102へのブロックユニットBUの追加によって当該スーパーブロック102のユーザデータを格納可能な容量がゾーン容量よりも多くなる場合、当該スーパーブロック102からコードレートの縮小が実行されたブロックユニットBUを削除することによって、当該スーパーブロック102の余分な容量を低減する。 Further, according to the embodiment, when the capacity of one super block 102 that can store user data becomes larger than the zone capacity due to the addition of the block unit BU to one super block 102, the super block 102 increases the code rate. The extra capacity of the superblock 102 is reduced by deleting the block unit BU on which the reduction has been performed.

よって、メモリシステム1の動作中において、パディングに起因するWAFの悪化を常時、抑制することが可能である。 Therefore, during the operation of the memory system 1, it is possible to constantly suppress deterioration of the WAF caused by padding.

なお、以上の説明では、メモリシステム1はZNS SSDと称される種類のSSDであることとした。実施形態にかかる技術は、ZNS SSD以外にも適用可能である。例えば、ストリーム仕様のSSDに対しても実施形態にかかる技術が適用可能である。 In the above description, the memory system 1 is assumed to be a type of SSD called ZNS SSD. The technology according to the embodiment can be applied to other than ZNS SSD. For example, the technology according to the embodiment can also be applied to a stream-specification SSD.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 While several embodiments of the invention have been described, these embodiments have been presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and modifications can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the scope of the invention described in the claims and equivalents thereof.

1 メモリシステム、2 ホスト、3 通信路、10 メモリコントローラ、11 CPU、12 ホストI/F、13 RAMコントローラ、14 NANDコントローラ
15 ECC回路、20 NANDメモリ、21 メモリチップ、22 バンク、23 メモリセルアレイ、24 領域、25 物理ブロック、26 物理ページ、27,27a,27b クラスタ、101 候補構成、102,102a,102b,102c スーパーブロック、201 スーパーブロック管理情報、202 リザーブドブロック管理情報、203 不良ブロック管理情報、204 ゾーン割り当て情報、BU ブロックユニット。
1 memory system, 2 host, 3 communication path, 10 memory controller, 11 CPU, 12 host I/F, 13 RAM controller, 14 NAND controller 15 ECC circuit, 20 NAND memory, 21 memory chip, 22 bank, 23 memory cell array, 24 area, 25 physical block, 26 physical page, 27, 27a, 27b cluster, 101 candidate configuration, 102, 102a, 102b, 102c super block, 201 super block management information, 202 reserved block management information, 203 bad block management information , 204 Zone allocation information, BU block unit.

Claims (8)

ホストに接続可能なメモリシステムであって、
それぞれは複数の第1記憶領域を備え、並列に動作可能な複数のメモリチップと、
前記複数のメモリチップのうちのそれぞれ異なるメモリチップから選択された前記第1記憶領域の群である第1群を複数生成し、
生成した前記複数の第1群のそれぞれから1以上の前記第1記憶領域を取り除くことによって、それぞれは前記ホストからのデータを少なくとも第1量まで格納可能な最小数の第1記憶領域によって構成された複数の第2群を生成し、
1つの第2群を構成する全ての第1記憶領域に対して前記データのライトを実行する、
メモリコントローラと、
を備えるメモリシステム。
A memory system connectable to a host,
a plurality of memory chips each having a plurality of first storage areas and capable of operating in parallel;
generating a plurality of first groups, which are groups of the first storage areas selected from different memory chips among the plurality of memory chips;
removing one or more of the first storage areas from each of the plurality of generated first groups, each configured with a minimum number of first storage areas capable of storing at least a first amount of data from the host; Generate a plurality of second groups with
executing the data write to all the first storage areas that constitute one second group;
a memory controller;
memory system.
それぞれの前記第2群にライトされるデータに対してコードレートが可変の符号化方式によって符号化し、それぞれの第2群からリードされたデータに対して復号化することによって誤り訂正を実行する回路をさらに備え、
前記メモリコントローラは、
前記複数の第2群のうちの第1の第2群にライトされるデータのコードレートを縮小し、
前記コードレートの縮小によって前記ホストからのデータを格納可能な前記第1の第2群の容量である第2量が前記第1量よりも少なくなった場合、それぞれは前記複数の第1群の何れかから取り除かれた第1記憶領域である複数の第2記憶領域のうちの少なくとも1つを前記第1の第2群に追加する、
請求項1に記載のメモリシステム。
A circuit that performs error correction by encoding data written to each of the second groups by an encoding method with a variable code rate and decoding data read from each of the second groups. further comprising
The memory controller
reducing the code rate of data written to a first second group of the plurality of second groups;
When the second amount, which is the capacity of the first second group capable of storing data from the host, becomes smaller than the first amount due to the reduction of the code rate, each of the plurality of first groups adding at least one of a plurality of second storage areas, which is the first storage area removed from any of them, to the first second group;
2. The memory system of claim 1.
前記メモリコントローラは、
前記複数の第2群のうちの第1の第2群に含まれる1以上の第1記憶領域を使用不可に設定し、
前記1以上の第1記憶領域が使用不可に設定されたことによって前記ホストからのデータを格納可能な前記第1の第2群の容量である第2量が前記第1量よりも少なくなった場合、それぞれは前記複数の第1群の何れかから削除された第1記憶領域である複数の第2記憶領域のうちの少なくとも1つを前記第2群に追加する、
請求項1に記載のメモリシステム。
The memory controller
setting one or more first storage areas included in a first second group out of the plurality of second groups to be unusable;
A second amount, which is the capacity of the first second group capable of storing data from the host, has become smaller than the first amount due to the one or more first storage areas being disabled. adding at least one of a plurality of second storage areas, each of which is a first storage area deleted from any of the plurality of first groups, to the second group;
2. The memory system of claim 1.
前記メモリコントローラは、
第1記憶領域毎に個別に前記コードレートの縮小を実行し、
前記少なくとも1つの第2記憶領域の追加によって前記第2量が前記第1量よりも多くなる場合、前記第1の第2群を構成する全ての第1記憶領域のうちの前記コードレートの縮小が実行された第3記憶領域を前記第2群から削除することによって、前記第2量から前記第1量を減算して得られる第3量を低減する、
請求項2に記載のメモリシステム。
The memory controller
performing the code rate reduction individually for each first storage area;
reducing the code rate of all the first storage areas constituting the first second group if the addition of the at least one second storage area causes the second amount to be greater than the first amount; reducing the third amount obtained by subtracting the first amount from the second amount by removing from the second group the third storage area in which
3. The memory system of claim 2.
それぞれの第2群にライトされるデータに対してコードレートが可変の符号化方式によって符号化し、それぞれの第2群からリードされたデータに対して復号化することによって誤り訂正を実行する回路をさらに備え、
前記メモリコントローラは、
第1記憶領域毎に個別に前記コードレートの縮小を実行し、
前記少なくとも1つの第2記憶領域の追加によって前記第2量が前記第1量よりも多くなる場合、前記第1の第2群を構成する全ての第1記憶領域のうちの前記コードレートの縮小が実行された第3記憶領域を前記第2群から削除することによって、前記第2量から前記第1量を減算して得られる第3量を低減する、
請求項3に記載のメモリシステム。
A circuit for executing error correction by encoding data written to each second group by an encoding system with a variable code rate and decoding data read from each second group. further prepared,
The memory controller
performing the code rate reduction individually for each first storage area;
reducing the code rate of all the first storage areas constituting the first second group if the addition of the at least one second storage area causes the second amount to be greater than the first amount; reducing the third amount obtained by subtracting the first amount from the second amount by removing from the second group the third storage area in which
4. The memory system of claim 3.
前記メモリコントローラは、1つの第2群に対して前記第1量のデータをライトした後、データのライトが可能な余分な領域が当該第2群に残っている場合、当該余分な領域をパディングする、
請求項1から請求項5の何れか一項に記載のメモリシステム。
After writing the first amount of data to one second group, if a surplus area in which data can be written remains in the second group, the memory controller pads the surplus area. do,
6. The memory system according to any one of claims 1-5.
前記メモリシステムは、ZNS(Zoned Namespace) SSD(Solid State Drive)であり、
前記メモリコントローラは、1つのゾーンに前記複数の第2群のうちの1つを割り当て、
前記第1量は、前記ホストが前記1つのゾーンにライト可能なデータの合計量である、
請求項1から請求項6の何れか一項に記載のメモリシステム。
The memory system is a ZNS (Zoned Namespace) SSD (Solid State Drive),
the memory controller assigning one of the plurality of second groups to one zone;
the first amount is the total amount of data that the host can write to the one zone;
7. The memory system according to any one of claims 1-6.
それぞれは複数の第1記憶領域を備え、並列に動作可能な複数のメモリチップを備えるメモリシステムを制御する方法であって、
前記複数のメモリチップのうちのそれぞれ異なるメモリチップから選択された前記第1記憶領域の群である第1群を複数生成することと、
生成した前記複数の第1群のそれぞれから1以上の前記第1記憶領域を取り除くことによって、それぞれはホストからのデータを少なくとも第1量まで格納可能な最小数の第1記憶領域によって構成された複数の第2群を生成することと、
1つの第2群を構成する全ての第1記憶領域に対して前記データのライトを実行することと、
を備える方法。
A method of controlling a memory system comprising a plurality of memory chips each comprising a plurality of first storage areas and operable in parallel, comprising:
generating a plurality of first groups, which are groups of the first storage areas selected from different memory chips among the plurality of memory chips;
removing one or more of the first storage areas from each of the plurality of generated first groups, each configured with a minimum number of first storage areas capable of storing up to at least a first amount of data from a host; generating a plurality of second groups;
executing the data write to all the first storage areas that constitute one second group;
How to prepare.
JP2021152579A 2021-09-17 2021-09-17 Memory system and method Pending JP2023044518A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021152579A JP2023044518A (en) 2021-09-17 2021-09-17 Memory system and method
US17/689,907 US11954364B2 (en) 2021-09-17 2022-03-08 Memory system and method of writing data to storage areas constituting group

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021152579A JP2023044518A (en) 2021-09-17 2021-09-17 Memory system and method

Publications (1)

Publication Number Publication Date
JP2023044518A true JP2023044518A (en) 2023-03-30

Family

ID=85573444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021152579A Pending JP2023044518A (en) 2021-09-17 2021-09-17 Memory system and method

Country Status (2)

Country Link
US (1) US11954364B2 (en)
JP (1) JP2023044518A (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880604B2 (en) * 2022-05-12 2024-01-23 Western Digital Technologies, Inc. Read fused groups with uniform resource allocation
US11922036B2 (en) 2022-05-12 2024-03-05 Western Digital Technologies, Inc. Host data stream assignment with space-leveling across storage block containers
US11941273B2 (en) 2022-05-12 2024-03-26 Western Digital Technologies, Inc. Variable capacity Zone Namespace (ZNS) flash storage data path

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8095765B2 (en) 2009-03-04 2012-01-10 Micron Technology, Inc. Memory block management
US8832507B2 (en) 2010-08-23 2014-09-09 Apple Inc. Systems and methods for generating dynamic super blocks
KR102592803B1 (en) 2018-10-31 2023-10-24 에스케이하이닉스 주식회사 Data storage device and operating method thereof
US11023152B2 (en) * 2019-07-12 2021-06-01 Arm Limited Methods and apparatus for storing data in memory in data processing systems
US11726679B2 (en) * 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces
KR20210071314A (en) * 2019-12-06 2021-06-16 에스케이하이닉스 주식회사 Memory system, memory controller, and operating method thereof

Also Published As

Publication number Publication date
US11954364B2 (en) 2024-04-09
US20230089022A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
US8924636B2 (en) Management information generating method, logical block constructing method, and semiconductor memory device
US8463986B2 (en) Memory system and method of controlling memory system
KR100441587B1 (en) Semiconductor memory device having block alignment function
US9298534B2 (en) Memory system and constructing method of logical block
JP2023044518A (en) Memory system and method
JP5364807B2 (en) MEMORY CONTROLLER AND NONVOLATILE MEMORY DEVICE
US20100088461A1 (en) Solid state storage system using global wear leveling and method of controlling the solid state storage system
US10795768B2 (en) Memory reallocation during raid rebuild
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
JP4702387B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
US20230091792A1 (en) Memory system and method of controlling nonvolatile memory
US8533549B2 (en) Memory system and computer system
US10783034B2 (en) Memory system and control method
JP7407230B2 (en) ecc parity bias for key value data storage devices
US10430288B2 (en) Data backup method, data recovery method and storage controller
JP4840415B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
TW202401234A (en) Memory system and control method
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
JP4636046B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP3934659B1 (en) Memory controller and flash memory system
JP2015118664A (en) Semiconductor memory device and control method thereof
JP6260395B2 (en) Memory controller, memory system, and memory control method
US11410741B2 (en) Memory controller and flash memory system
JP2024033081A (en) Memory system and control method
JP2013200722A (en) Logical block construction method for semiconductor storage device