JP2023044518A - Memory system and method - Google Patents
Memory system and method Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 13
- 238000012937 correction Methods 0.000 claims description 16
- 239000007787 solid Substances 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 32
- 230000000052 comparative effect Effects 0.000 description 10
- 230000002950 deficient Effects 0.000 description 10
- 230000007423 decrease Effects 0.000 description 5
- 230000006866 deterioration Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
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.
一つの実施形態は、記憶領域単位に適合するように複数のブロックを割り当てることができるメモリシステムおよび方法を得ることを目的とする。 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.
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。 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
メモリシステム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
ZNS SSDでは、ホスト2は各ゾーンに対して論理アドレスの点でシーケンシャルにユーザデータをライトしなくてはならないという制約が存在する。また、ZNS SSDでは、1つのゾーンに格納された全てのデータは一括にイレースされるという制約を有する。
In ZNS SSDs, there is a constraint that the
メモリシステム1は、メモリコントローラ10と、NAND型のフラッシュメモリ(NANDメモリ)20と、RAM(Random Access Memory)30とを備える。NANDメモリ20は、ストレージとして用いられる不揮発性のメモリである。なお、ストレージとして用いられる不揮発性のメモリの種類はNAND型のフラッシュメモリだけに限定されない。例えば、NOR型のフラッシュメモリなどがストレージとして採用可能である。
The
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
メモリコントローラ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
メモリコントローラ10は、SoC(System-on-a-Chip)として構成され得る。または、メモリコントローラ10は、複数のチップによって構成され得る。メモリコントローラ10は、RAM30を含む1つのSoCとして構成されてもよい。
The
ホストI/F12は、通信路3を介して転送される信号の制御を実行する。ホストI/F12は、ホスト2からの各種コマンドを受け付ける。ホストI/F12は、例えばホスト2とRAM30との間のデータ転送を実行する。RAMC13は、RAM30を制御する。NANDC14は、NANDメモリ20を制御する。NANDC14は、例えばRAM30とNANDメモリ20との間のデータ転送を実行する。
The host I/
CPU11は、メモリコントローラ10全体の制御を実行するプロセッサである。CPU11は、ファームウェアプログラムに基づいて当該制御を実行する。
The
なお、プロセッサとしてのCPU11が実行する制御の一部または全部は、ハードウェア回路によって実行されてもよい。プロセッサとしてのCPU11が実行する制御の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行されてもよい。
A part or all of the control executed by the
ECC回路15は、NANDメモリ20にライトされるデータに対して誤り訂正のための符号化を実行し、NANDメモリ20からリードされたデータに対して復号化を行う。即ち、ECC回路15は、データの誤り訂正に関する処理を実行する回路である。
The
ECC回路15が使用する符号化の方式としては、コードレート(code rate)が可変の符号化方式が採用される。コードレートは、符号化前のデータのサイズを符号化後のデータのサイズで除算して得られる数値情報である。コードレートが小さいほど、符号化後のデータに含まれる冗長データの量が多い。そのため、コードレートが小さいほど、誤り訂正の能力が高い。
As an encoding method used by the
NANDメモリ20に対して実行されたライト/イレースサイクルの回数の増加に応じて、NANDメモリ20に格納されたデータに含まれる誤りビットが生じやすくなる。即ち、格納されたデータの信頼性がライト/イレースサイクルの回数の増加に応じて低下する。データに含まれる誤りビットの数がECC回路15によって訂正可能な数を超えると、そのデータを正しくリードすることが不可能となる。CPU11は、データを正しくリードすることが不可能になる前にコードレートの縮小を行い、これによってデータを正しくリードすることが不可能になることを防止する。
As the number of write/erase cycles performed on
コードレートの縮小のトリガは任意である。例えば、CPU11は、NANDメモリ20に対するライト/イレースサイクルの回数に応じてコードレートの縮小を行ってもよい。または、メモリコントローラ10は、ECC回路15による誤り訂正が失敗した場合に実行されECC回路15よりもさらに誤り訂正能力が高い誤り訂正の機能または回路を備え、CPU11は、この誤り訂正の機能または回路の使用に応じてコードレートの縮小を行ってもよい。
Triggering code rate reduction is optional. For example, the
なお、コードレートの縮小は、記憶領域の所定の単位で実行されることとする。実施形態では、コードレートの縮小の単位は、ブロックユニット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
コードレートに関しては上限値と下限値とが設けられている。例えば、メモリシステム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
なお、不良ブロックはコードレートの縮小に応じて発生するとは限らない。故障したと判断されたブロックユニット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
図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
メモリチップ21は、領域24毎に独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備える。そのため、メモリチップ21は、2つの領域24に同時にアクセスを実行することが可能である。アクセスの一例は、ライト、リード、およびイレースである。
The
各メモリチップ21の2つの領域24の夫々にはプレーン番号が与えられる。即ち、2つの領域24のうちの1つは、プレーン番号0で特定されるプレーンであり、2つの領域24のうちの他は、プレーン番号1で特定されるプレーンである。以降、プレーン#0は、プレーン番号0で特定される領域24を指し、プレーン#1は、プレーン番号1で特定される領域24を指すこととする。
Each of the two
なお、メモリセルアレイ23が備える領域24の数は「1」であってもよいし、「3」以上であってもよい。
The number of
物理ブロック25は、各領域24におけるイレースの単位である。図3は、各物理ブロック25の構成例を示す図である。各物理ブロック25は、複数の物理ページ26を備える。物理ページ26は、各領域24におけるライトおよびリードの単位である。各物理ページ26にはページ番号が与えられる。図3には、ページ番号0~5が与えられた6つの物理ページ26が、それぞれページ#0~ページ#5として表記されている。
A
図1に示されるように、NANDメモリ20を構成する複数のメモリチップ21は、夫々、16個のチャネルch(ch.0~ch.15)の何れかを介してメモリコントローラ10に接続される。ここでは、各チャネルchに8個のメモリチップ21が接続されることとする。
As shown in FIG. 1, a plurality of
各メモリチップ21は、16個のチャネルchのうちの何れか1つのみに接続されている。各チャネルchは、ある規格に準拠した、I/O信号線および制御信号線群を含む、配線群によって構成される。I/O信号線は、データ、アドレス、およびコマンドを転送するための信号線である。なお、I/O信号線のビット幅は1ビットに限定されない。制御信号線は、WE(ライトイネーブル)信号を転送する信号線、RE(リードイネーブル)信号を転送する信号線、CLE(コマンドラッチイネーブル)信号を転送する信号線、ALE(アドレスラッチイネーブル)信号を転送する信号線、WP(ライトプロテクト)信号を転送する信号線等の群である。メモリコントローラ10は、各チャネルchを個別に制御することができる。メモリコントローラ10は、複数のチャネルchを同時にかつ個別に制御することによって、それぞれ異なるチャネルchに接続される複数のメモリチップ21を並列に動作させることができる。
Each
また、NANDメモリ20に対して、複数のバンク22が定義される。各バンク22は、それぞれが異なるチャネルchに接続された16個のメモリチップ21によって構成される。1つのチャネルchに接続された8個のメモリチップ21は、それぞれ異なるバンク22に属する。よって、NANDメモリ20は、複数のバンク22として、8個のバンク22を備える。各バンク22にはユニークなバンク番号(バンク#0~バンク#7)が与えられる。
Also,
メモリコントローラ10は、複数のバンク22を用いてバンクインターリーブを実行する。バンクインターリーブは、並列動作の1つである。バンクインターリーブでは、1つのバンク22に属する複数(例えば16個)のメモリチップ21がデータにアクセスしている最中に、メモリコントローラ10は、別のバンク22に属する複数(例えば16個)のメモリチップ21にアクセス指示を発行する。これによって、NANDメモリ20とメモリコントローラ10との間のデータ転送に要するトータルの時間が短縮される。なお、アクセス指示は、ライト指示、リード指示、およびイレース指示を含む。
このように、メモリコントローラ10は、16個のチャネルchを同時に動作させ、かつ、8個のバンク22を用いたバンクインターリーブを実行することにより、合計128個のメモリチップ21を並列動作させることができる。
Thus, the
さらに、メモリコントローラ10は、各メモリチップ21に対しては、2つの領域(即ちプレーン)24に同時にアクセスすることが可能である。そのため、メモリコントローラ10は、合計256個の領域24に含まれる物理ブロック25に並列にデータのライトを実行することができる。これらの並列にライトすることが可能な物理ブロック25の群を構成するそれぞれの物理ブロック25を、並列ライト要素、と表記する場合がある。
Furthermore, the
メモリコントローラ10は、各ゾーンに複数の物理ブロック25からなる群を割り当てる。1つのゾーンに割り当てられた複数の物理ブロック25からなる群を、スーパーブロックと表記する。スーパーブロックの割り当て方法を以下に説明する。
スーパーブロックは、並列ライト要素の群によって構成される。メモリコントローラ10は、まず、並列ライト要素の群によって、スーパーブロックの構成の候補を生成する。スーパーブロックの構成の候補を、候補構成と表記する。
A superblock is composed of a group of parallel write elements. The
なお、図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
図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
図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,
なお、実施形態では、一例として、メモリコントローラ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
即ち、メモリコントローラ10は、ブロックユニットBUの単位で32個のブロックユニットBUを選択し、選択した32個のブロックユニットBUによって構成される64個の物理ブロック25の群を候補構成に設定する。
That is, the
図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
なお、1つのメモリチップ21は、複数のブロックユニットBUを備える。つまり、メモリコントローラ10は、メモリチップ21当たりに複数のブロックユニットBUを生成する。生成されるブロックユニットBUの数はメモリチップ21毎に異なり得る。例えば或るメモリチップ21の1つの領域24が備える複数の物理ブロック25に不良ブロックが含まれる場合、メモリコントローラ10は、不良ブロックを除外した残りの物理ブロック25を用いてブロックユニットBUを生成する。
Note that one
ここでは説明を簡単にするために、1つの領域24がN個の物理ブロック25を備え、各メモリチップ21当たりM個のブロックユニットBUが生成されることとする。なお、Nは2以上の整数である。Mは2以上N以下の整数である。
To simplify the explanation, it is assumed that one
例えば、メモリコントローラ10は、バンク#Kおよびバンク#K+1のいずれかに属する合計32個のメモリチップ21のそれぞれから、M個のブロックユニットBUのうちの1つを選択する。そして、メモリコントローラ10は、選択された32個のブロックユニットBUの群を1つの候補構成101に設定する。
For example, the
続いて、メモリコントローラ10は、バンク#Kおよびバンク#K+1のいずれかに属する合計32個のメモリチップ21のそれぞれから、M個のブロックユニットBUのうちのまだ選択されていない1以上のブロックユニットBUから1つを新たに選択する。そして、メモリコントローラ10は、新たに選択された32個のブロックユニットBUの群を別の候補構成101に設定する。
Subsequently, the
このように、メモリコントローラ10は、バンク#Kおよびバンク#K+1のいずれかに属する合計32個のメモリチップ21から複数の候補構成101を設定する。つまり、メモリコントローラ10は、図5に示された候補構成101を複数設定する。
Thus, the
なお、ブロックユニットBUは、第1記憶領域の一例である。また、候補構成101は、並列動作が可能な複数のメモリチップ21のうちのそれぞれ異なるメモリチップ21から選択された第1記憶領域の群である第1群の一例である。
Note that the block unit BU is an example of a first storage area. The
メモリコントローラ10は、必ずしも複数の物理ブロック25をブロックユニットBUとして管理しなくてもよい。メモリコントローラ10は、物理ブロック25毎に種々の管理を実行してもよい。種々の管理は、コードレートの管理、不良ブロックの管理、候補構成101およびスーパーブロック(詳細は後述される)の最小の構成要素としての管理、などを含む。つまり、物理ブロック25が第1記憶領域であってもよい。
The
メモリコントローラ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
スーパーブロックには、ユーザデータだけでなく誤り訂正符号などの冗長データが格納される。よって、ゾーン容量の分のユーザデータの格納には、ゾーン容量を超える容量の記憶領域が必要である。メモリコントローラ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
なお、メモリコントローラ10は、複数の候補構成101のそれぞれから1以上のブロックユニットBUを削除する際には、削除されるブロックユニットBUの数が16個のチャネルでできるだけ均一になるようにする。
When deleting one or more block units BU from each of the plurality of
図6A~図6Cのそれぞれは、実施形態にかかるメモリコントローラ10によって生成されたスーパーブロックの例を示す模式的な図である。
Each of FIGS. 6A-6C is a schematic diagram showing an example of a superblock generated by the
例えば、メモリコントローラ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,
また、メモリコントローラ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
また、メモリコントローラ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
このように、メモリコントローラ10は、削除されるブロックユニットBUのチャネルchを候補構成101毎に異ならせる(例えばシフト)させることで、削除されるブロックユニットBUの数が16個のチャネルchでできるだけ均一になるようにする。なお、削除されるブロックユニットBUのチャネルch毎の数は、16個のチャネルchで均一でなくてもよい。
In this way, the
なお、スーパーブロック102は、第2群の一例である。
Note that the
メモリコントローラ10は、各スーパーブロック102にデータをライトする場合、ライト先のスーパーブロック102を構成する複数のブロックユニットBUに対し、並列にデータをライトする。また、メモリコントローラ10は、各ブロックユニットBUを構成する2つの物理ブロック25に対して並列にデータをライトするよう、各メモリチップ21を制御する。
When writing data to each
図7は、実施形態にかかるブロックユニットBUにおいて並列にライトされる2つの物理ページ26を説明するための模式的な図である。メモリチップ21は、1つのブロックユニットBUを構成するそれぞれ異なる物理ブロック25に含まれる2つの物理ページ26に同時にデータをライトする。1つのブロックユニットBUに含まれ、同時にデータがライトされる2つの物理ページ26からなる群を、ページユニットPUと表記する。
FIG. 7 is a schematic diagram for explaining two
図7に示される例では、それぞれ異なる物理ブロック25から選択された同一のページ番号が与えられた2つの物理ページ26によって、1つのページユニットPUが構成される。
In the example shown in FIG. 7, two
例えば、ページ#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
なお、1つのページユニットPUを構成する複数の物理ページ26のページ番号は同一でなくてもよい。異なるページ番号が与えられた複数の物理ページ26によって1つのページユニットPUが構成されてもよい。
Note that the page numbers of the plurality of
図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
より詳細には、メモリコントローラ10は、NANDメモリ20でデータが格納される位置を、物理アドレスを用いて管理する。前述されたように、ホスト2からメモリシステム1にユーザデータが転送される際、論理アドレスがユーザデータと対応して転送される。メモリコントローラ10は、ユーザデータをNANDメモリ20にライトする際、NANDメモリ20におけるユーザデータのライト先の位置を示す物理アドレス値を、当該ユーザデータと対応して受信した論理アドレス値と対応づけて記憶する。クラスタ27は、物理アドレス値によって特定され得る最小の単位のデータである。メモリコントローラ10は、メモリチップ21からデータをリードする場合、当該メモリチップ21に対し、クラスタ27の単位の物理アドレス値で、リード対象のデータが格納された位置を指示することができる。
More specifically, the
図8に示される例では、1つの物理ページ26当たり4つのクラスタ27が格納される。よって、1つのページユニットPUは、8つのクラスタ27が格納される。
In the example shown in FIG. 8, one
なお、1つのページユニットPUは、8つのクラスタ27のほかに、最大値のコードレートの符号化によって生成された誤り訂正符号が格納され得る不図示の領域を有する。つまり、コードレートが最大値である場合、1つのページユニットPUには、8つのクラスタ27の分のユーザデータと、最大値のコードレートの符号化によって生成され8つのクラスタ27の分のユーザデータの誤りを訂正するための誤り訂正符号と、が格納され得る。
In addition to the eight
図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
前述されたように、スーパーブロック102は、ゾーン容量の分のユーザデータの格納に必要な最小数のブロックユニットBUによって構成される。しかしながら、各スーパーブロック102のユーザデータが格納可能な容量が、ブロックユニットBUの単位で調整されるため、1つのスーパーブロック102に格納可能なユーザデータの量が、ゾーン容量を僅かに越える場合がある。メモリコントローラ10は、ゾーン容量の分のユーザデータのライトが終わった後、データがライトされていない余分な領域がそのスーパーブロック102に存在する場合、この余分な領域に対してパディング、つまり無意味なデータのライトを実行する。これによって、スーパーブロック102を構成する全てのブロックユニットBUに空きの領域がなくなるまでデータがライトされる。
As described above, the
図9Aに示される例では、スーパーブロック102aが備える各スーパーページは、28個のページユニットPUで構成され、1つのページユニットPUは8つのクラスタ27の分のユーザデータを格納可能である。よって、各スーパーページは、224個のクラスタ27の分のユーザデータを格納可能な容量を有する。
In the example shown in FIG. 9A, each superpage provided in the
これに対し、ゾーン容量をスーパーブロック102aが備えるスーパーページの数で除算して得られる量、つまりゾーン容量を1つのスーパーページ当たりの容量に換算して得られる量は、218個のクラスタ27の分の容量に相当することとする。
On the other hand, the amount obtained by dividing the zone capacity by the number of superpages included in the
この場合、スーパーブロック102aは、1つのスーパーページ当たり6つのクラスタ27の分の余分な領域を有する。
In this case,
前述されたように、メモリコントローラ10は、ゾーン容量の分のユーザデータのライトが終わった後の状態で、データがライトされていない余分な領域がそのスーパーブロック102に存在する場合、当該余分な領域に無意味なデータをライトするパディングを実行する。例えば図9Aに示される例では、メモリコントローラ10は、1つのスーパーページ当たりに6つのクラスタ27aに無意味なデータをライトする。
As described above, if the
なお、無意味なデータがライトされる領域は、必ずしも各スーパーページに均一に設けられなくてもよい。メモリコントローラ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.
ゾーン容量は、第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
以降、余分な領域は、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
図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
図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
図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
図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
スーパーブロック102に格納可能なユーザデータの量がゾーン容量を下回った場合、メモリコントローラ10は、不足分、即ちゾーン容量からスーパーブロック102に格納可能なユーザデータの量を減算して得られる容量の分の記憶領域を、候補構成101から削除されたブロックユニットBUで補填する。
If the amount of user data that can be stored in the
つまり、メモリコントローラ10は、複数の候補構成101から削除された全てのブロックユニットBUを取っておく(reserve)。そして、或るスーパーブロック102においてコードレートの縮小または不良ブロックの発生によって容量の不足分が生じると、メモリコントローラ10は、取っておいたブロックユニットBUのうちの1以上のブロックユニットBUを、容量の不足分が生じたスーパーブロック102に追加する。
That is, the
図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
なお、図9Dに示されるスーパーブロック102aは、1つのスーパーページ当たりに、7つのクラスタ27の分の量に相当する余分な領域を含む。実施形態では、ブロックユニットBUの追加によって余分な領域が生じる場合、メモリコントローラ10は、スーパーブロック102から1以上のブロックユニットBUを削除することによって、余分な領域の容量を可能な限り減少させることが可能に構成される。
Note that the
図9Eは、第4タイミングの後に1つのブロックユニットBUが削除された第5タイミングにおけるスーパーブロック102aの各スーパーページの状態を説明するための模式的な図である。
FIG. 9E is a schematic diagram for explaining the state of each superpage of the
図9Eに示される例では、図9Dに示された状態のスーパーブロック102aから、バンク#K+1のチャネルch.0に接続されたメモリチップ21から選択されたブロックユニットBUが削除される。
In the example shown in FIG. 9E, from
図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から余分な領域が無くなる。
なお、メモリコントローラ10は、スーパーブロック102aから削除されたバンク#K+1のチャネルch.0に接続されたメモリチップ21に含まれるブロックユニットBUを、再び何れかのスーパーブロック102に追加されるまで取っておく。
Note that the
図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
このように、メモリコントローラ10は、それぞれのスーパーブロック102をゾーン容量が得られる最小数のブロックユニットBUで構成する。そして、メモリコントローラ10は、コードレートの縮小または不良ブロックの発生によって或るスーパーブロック102に容量の不足分が生じると、予め取っておいたブロックユニットBUをそのスーパーブロック102に追加する。これによって、各スーパーブロック102の余分な領域をできるだけ少なくすることができる。
In this way, the
なお、図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
また、図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
ここで、実施形態と比較される技術について説明する。実施形態と比較される技術を、比較例と表記する。比較例によれば、メモリコントローラは、一律のサイズの複数のスーパーブロックを生成する。そして、メモリシステムの動作が開始して以降は、メモリコントローラは、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
CPU11は、上記された動作を実現するための各種管理情報を例えばRAM30に格納する。図10は、実施形態にかかるRAM30に格納される管理情報の一例を説明するための模式的な図である。本図に示されるように、RAM30には、スーパーブロック管理情報201、リザーブドブロック管理情報202、不良ブロック管理情報203、およびゾーン割り当て情報204が格納される。
The
スーパーブロック管理情報201は、スーパーブロック102毎にスーパーブロック102を構成する複数のブロックユニットBUの識別情報が記録された情報である。CPU11は、或るスーパーブロック102を設定した場合、当該スーパーブロック102の識別情報と、当該スーパーブロック102を構成する複数のブロックユニットBUの識別情報と、を対応づけて記録する。また、CPU11は、或るスーパーブロック102からブロックユニットBUを削除したり、或るスーパーブロック102にブロックユニットBUを追加したりした場合、ブロックユニットBUの削除または追加に応じてスーパーブロック管理情報201を更新する。
The
ゾーン割り当て情報204は、ゾーンの識別情報と当該ゾーンに割り当てられたスーパーブロック102の識別情報とを対応付ける情報である。
The
不良ブロック管理情報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
リザーブドブロック管理情報202は、スーパーブロック102への追加が可能なブロックユニットBUの識別情報が記録された情報である。
The reserved
図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
第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
第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
第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
なお、コードレートに関して、上限値から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
メモリコントローラ10は、リザーブドブロック管理情報202によって管理されたブロックユニットBUをスーパーブロック102に追加することができる。図9A~図9Eを用いて説明された例では、メモリコントローラ10は、第1BUリストによって管理されているコードレートが上限値に設定されたブロックユニットBUがスーパーブロック102に追加された。メモリコントローラ10は、第2BUリストによって管理されているコードレートが上限値から1段階だけ縮小されたブロックユニットBUをスーパーユニット102に追加することが可能である。また、メモリコントローラ10は、第3BUリストによって管理されているコードレートが上限値から2段階だけ縮小されたブロックユニットBUをスーパーユニット102に追加することが可能である。
The
続いて、実施形態にかかるメモリシステム1の動作を説明する。
Next, operation of the
図12は、スーパーブロック102の生成に関する実施形態にかかるメモリシステム1の動作の一例を説明するためのフローチャートである。
FIG. 12 is a flowchart for explaining an example of the operation of the
まず、メモリコントローラ10は、複数の候補構成101を生成する(S101)。メモリコントローラ10は、並列動作が可能な複数のメモリチップ21のそれぞれから1つのブロックユニットBUを選択し、それぞれは異なるメモリチップ21から選択されたブロックユニットBUの群を1つの候補構成101に設定する。
First, the
例えば、メモリコントローラ10は、図4および図5を用いて説明したように、バンク#0からバンク#7のうちの1以上のバンクを選択する。そして、メモリコントローラ10は、選択された1以上のバンクから複数の並列ライト要素を選択する。そして、メモリコントローラ10は、選択された複数の並列ライト要素からなる群を1つの候補構成101に設定する。
For example,
S101に続いて、メモリコントローラ10は、各候補構成101から1以上のブロックユニットBUを削除し、削除後の各候補構成101をスーパーブロック102として設定する(S102)。S102では、メモリコントローラ10は、各スーパーブロック102に関する情報をスーパーブロック管理情報201に追加する。
Following S101, the
メモリコントローラ10は、S102において削除されたブロックユニットBUをリザーブドブロック管理情報202に登録する(S103)。
The
メモリシステム1がホスト2からゾーン生成コマンドを受信すると(S104)、メモリコントローラ10は、新たなゾーンを定義し、定義したゾーンに何れかのスーパーブロック102を割り当てる(S105)。S105では、メモリコントローラ10は、新たに定義したゾーンに関する情報をゾーン割り当て情報204に記録する。
When the
そして、スーパーブロック102の設定に関する一連の動作が完了する。
A series of operations relating to the setting of the
図13は、実施形態にかかるメモリシステム1のスーパーブロック102へのライトの動作の一例を説明するためのフローチャートである。ここでは、実施形態にかかるメモリシステム1が、ホスト2から或るゾーンへのライトを要求された事によって開始する一連の動作を説明する。
FIG. 13 is a flowchart for explaining an example of a write operation to the
まず、メモリコントローラ10は、ゾーン割り当て情報204を参照することによって、ライト先のゾーンに割り当てられたスーパーブロック102を特定する(S201)。特定されたスーパーブロック102を、対象のスーパーブロック102と表記する。
First, the
続いて、メモリコントローラ10は、不良ブロックの発生の判定を行う(S202)。
Subsequently, the
S202では、メモリコントローラ10は、対象のスーパーブロック102を構成する各ブロックユニットBUについて、使用の継続が可能か否かを判定する。コードレートが下限値に設定され、かつ格納されるデータの信頼性が基準を満たさないブロックユニットBUが存在する場合、メモリコントローラ10は、そのブロックユニットBUは不良ブロックになったと判定する。また、故障したブロックユニットBUが存在する場合、メモリコントローラ10は、そのブロックユニットBUは不良ブロックになったと判定する。
In S202, the
対象のスーパーブロック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
続いて、メモリコントローラ10は、コードレートの縮小の判定を行う(S203)。
Subsequently, the
S204では、メモリコントローラ10は、対象のスーパーブロック102を構成するそれぞれのブロックユニットBUについてコードレートの縮小を行うか否かを判定する。コードレートの縮小を行うと判定されたブロックユニットBUが存在する場合、メモリコントローラ10は、そのブロックユニットBUについてコードレートの縮小を実行する。
In S204, the
続いて、メモリコントローラ10は、対象のスーパーブロック102に格納可能なユーザデータの量がゾーン容量未満であるか否かを判定する(S204)。対象のスーパーブロック102に格納可能なユーザデータの量がゾーン容量未満である場合(S204:Yes)、メモリコントローラ10は、容量の不足分、即ちゾーン容量から対象のスーパーブロック102に格納可能なユーザデータの量を減算して得られる容量は補填可能であるか否かを判定する(S205)。メモリコントローラ10は、リザーブドブロック管理情報202を参照することによって、容量の不足分の補填に利用できるブロックユニットBUが存在するか否かに基づいて容量の不足分が補填可能であるか否かを判定する。
Subsequently, the
容量の不足分が補填可能でない場合(S205:No)、メモリコントローラ10は、対象のスーパーブロック102を解体する(S206)。
If the capacity shortage cannot be compensated for (S205: No), the
S206では、メモリコントローラ10は、対象のスーパーブロック102を構成する全てのブロックユニットBUをリザーブドブロック管理情報202に登録する。また、メモリコントローラ10は、対象のスーパーブロック102に関する情報をスーパーブロック管理情報201から削除する。
In S<b>206 , the
S206に続いて、メモリコントローラ10は、別のスーパーブロック102をライト先のゾーンに割り当てる(S207)。S207によって、ライト先のゾーンに割り当てられていたスーパーブロック102、即ち対象のスーパーブロック102が、新しいスーパーブロック102に切り替わる。
Following S206, the
S207の後、制御がS202に移行して、メモリコントローラ10は、対象のスーパーブロック102となった新しいスーパーブロック102について、不良ブロックの発生の判定を行う。
After S207, the control shifts to S202, and the
容量の不足分は補填可能である場合(S205:Yes)、メモリコントローラ10は、容量の不足分をリザーブドブロック管理情報202に登録された1以上のブロックユニットBUを用いて補填する(S208)。
If the capacity shortage can be compensated for (S205: Yes), the
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
S208の後、または対象のスーパーブロック102に格納可能なユーザデータの量がゾーン容量以上である場合(S204:No)、メモリコントローラ10は、対象のスーパーブロック102に対してデータのイレースを実行する(S209)。
After S208, or if the amount of user data that can be stored in the
S209では、メモリコントローラ10は、対象のスーパーブロック102を構成する全てのブロックユニットBUに対して一括にデータのイレースを実行する。これによって、対象のスーパーブロック102はデータのライトが可能な状態になる。
In S209, the
S209の後、メモリコントローラ10は、対象のスーパーブロック102へのデータのライトを実行する(S210)。
After S209, the
S210では、ホスト2は、ライト先のゾーンに割り当てられたスーパーブロック102に対し、ゾーン容量の分のユーザデータのライトを行う。メモリコントローラ10は、ホスト2から受信するゾーン容量の分のユーザデータを誤り訂正符号などの冗長データとともに対象のスーパーブロック102にライトする。
In S210, the
メモリコントローラ10は、ゾーン容量の分のユーザデータを冗長データとともに対象のスーパーブロック102にライトすると、対象のスーパーブロック102に余分な領域が存在するか否かを判定する(S211)。対象のスーパーブロック102に余分な領域が存在する場合(S211:Yes)、メモリコントローラ10は、当該余分な領域に無意味なデータをライトするパディングを実行する(S212)。そしてスーパーブロック102へのライトの動作が完了する。
When the
対象のスーパーブロック102に余分な領域が存在しない場合(S211:No)、メモリコントローラ10はS213の処理をスキップし、スーパーブロック102へのライトの動作が完了する。
If there is no extra area in the target superblock 102 (S211: No), the
このように、実施形態によれば、メモリコントローラ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
よって、比較例に比べてパディングに起因する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
また、実施形態によれば、メモリコントローラ10は、1つのスーパーブロック102のユーザデータを格納可能な容量が、コードレートの縮小によってゾーン容量よりも少なくなった場合、複数の候補構成101から削除された複数のブロックユニットBUのうちの少なくとも1つを当該スーパーブロック102に追加する。
Further, according to the embodiment, the
よって、各スーパーブロック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
また、実施形態によれば、メモリコントローラ10は、1つのスーパーブロック102のユーザデータを格納可能な容量が不良ブロックの発生によってゾーン容量よりも少なくなった場合、複数の候補構成101から削除された複数のブロックユニットBUのうちの少なくとも1つを当該スーパーブロック102に追加する。
Further, according to the embodiment, when the capacity of one
よって、不良ブロックが発生した場合であっても各スーパーブロック102のユーザデータの格納可能な容量をゾーン容量以上に維持することが可能である。
Therefore, even if a bad block occurs, it is possible to maintain the user data storage capacity of each
また、実施形態によれば、1つのスーパーブロック102へのブロックユニットBUの追加によって当該スーパーブロック102のユーザデータを格納可能な容量がゾーン容量よりも多くなる場合、当該スーパーブロック102からコードレートの縮小が実行されたブロックユニットBUを削除することによって、当該スーパーブロック102の余分な容量を低減する。
Further, according to the embodiment, when the capacity of one
よって、メモリシステム1の動作中において、パディングに起因するWAFの悪化を常時、抑制することが可能である。
Therefore, during the operation of the
なお、以上の説明では、メモリシステム1はZNS SSDと称される種類のSSDであることとした。実施形態にかかる技術は、ZNS SSD以外にも適用可能である。例えば、ストリーム仕様のSSDに対しても実施形態にかかる技術が適用可能である。
In the above description, the
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 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
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群のうちの第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.
前記メモリコントローラは、
第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から請求項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.
前記メモリコントローラは、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記憶領域によって構成された複数の第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.
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)
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)
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 |
-
2021
- 2021-09-17 JP JP2021152579A patent/JP2023044518A/en active Pending
-
2022
- 2022-03-08 US US17/689,907 patent/US11954364B2/en active Active
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 |