Memory architecture for block migration in ZNS
The disclosure configures a memory sub-system controller to efficiently perform block migration (e.g., from SLC cache to QLC blocks) in a Zone Namespace (ZNS) device. The controller associates a plurality of zones of the set of memory components with a plurality of internal zone groups (IZGs) each associated with a different write cursor. The controller programs data to a first portion of a set of memory components using the plurality of write cursors, the first portion being associated with a first type of storage, and determines that an individual IZG of the plurality of IZGs satisfies a migration criterion. The controller migrates a portion of the data stored in the first portion of the set of memory components corresponding to the individual IZG to a second portion of the set of memory components, the second portion of the set of memory components being associated with a second type of storage.
1 . A system comprising:
a set of memory components of a memory sub-system; and
at least one processing device operatively coupled to the set of memory components, the at least one processing device being programmed to perform operations comprising:
determining how many write cursors are in a plurality of write cursors;
generating a plurality of internal zone groups (IZGs) based on how many write cursors are in the plurality of write cursors;
associating a plurality of zones of the set of memory components with the plurality of IZGs, each IZG being associated with a different write cursor of the plurality of write cursors;
programming data to a first portion of the set of memory components using the plurality of write cursors, the first portion of the set of memory components being associated with a first type of storage;
determining that an individual IZG of the plurality of IZGs satisfies a migration criterion; and
in response to determining that the individual IZG of the plurality of IZGs satisfies the migration criterion, migrating a portion of the data stored in the first portion of the set of memory components corresponding to the individual IZG to a second portion of the set of memory components, the second portion of the set of memory components being associated with a second type of storage.
2 . The system of claim 1 , wherein the first type of storage comprises a single-level cell (SLC) storage type, and wherein the second type of storage comprises a multi-level cell (MLC) storage type.
3 . The system of claim 1 , wherein the first type of storage comprises a single-level cell (SLC) storage type, and wherein the second type of storage comprises a quad-level cell (QLC) storage type.
4 . The system of claim 1 , wherein the migration criterion comprises a minimum quantity of zones that are ready to be migrated.
5 . The system of claim 4 , the operations further comprising:
storing a plurality of counters each associated with a different IZG, each counter of the plurality of counters representing a quantity of zones in a respective IZG ready for migration from the first type of storage to the second type of storage.
6 . The system of claim 5 , the operations further comprising:
receiving, from a host, a request to program data into a first zone of the plurality of zones;
determining that the first zone is associated with the individual IZG;
identifying an individual write cursor of the plurality of write cursors that is associated with the individual IZG; and
programming the data to the first zone using the individual write cursor in the first portion of the set of memory components.
7 . The system of claim 6 , the operations further comprising:
determining that the first zone has finished being programmed by the host; and
incrementing an individual counter of the plurality of counters that is associated with the individual IZG.
8 . The system of claim 7 , the operations further comprising:
determining that the first zone has finished being programmed by the host in response to determining that a last logical block address (LBA) associated with the first zone has been programmed with data.
9 . The system of claim 5 , the operations further comprising:
comparing a first value of a first counter of the plurality of counters to a second value of a second counter of the plurality of counters;
determining that a first IZG is associated with a greater number of zones ready for migration than a second IZG in response to determining that the first value is greater than the second value; and
migrating data of the zones associated with the first IZG stored in the first portion of the set of memory components to the second portion of the set of memory components in response to determining that the first IZG is associated with the greater number of zones ready for migration than the second IZG.
10 . The system of claim 1 , the operations further comprising:
after migrating the portion of the data corresponding to the individual IZG, migrating a second portion of the data stored in the first portion of the set of memory components, the second portion corresponding to a second IZG to the second portion of the set of memory components.
11 . The system of claim 1 , wherein the first portion of the set of memory components comprises a single-level cell (SLC) cache.
12 . The system of claim 1 , the operations further comprising:
folding data corresponding to the individual IZG.
13 . The system of claim 1 , the operations further comprising:
programming host data to a first portion of the plurality of IZGs; and
preserving a second portion of the plurality of IZGs for writing additional host data while data from the first portion of the plurality of IZGs is being migrated from the first type of storage to the second type of storage.
14 . The system of claim 1 , the operations comprising:
storing a plurality of counters each associated with a different IZG, each counter of the plurality of counters representing a quantity of zones in a respective IZG ready for migration from the first type of storage to the second type of storage.
15 . The system of claim 1 , further comprising:
generating a quantity of IZGs corresponding to double a number of write cursors.
16 . The system of claim 15 , the operations further comprising:
storing an active zone table that maps each of the plurality of zones to a corresponding IZG, the active zone table mapping a first set of zones of the plurality of zones to a first IZG, and the active zone table mapping a second set of zones of the plurality of zones to a second IZG.
17 . The system of claim 16 , the operations further comprising:
receiving a request from a host to program data to an individual zone of the plurality of zones;
determining, based on the active zone table, that the individual zone is included in the first set of zones that is associated with the first IZG; and
selecting an individual write cursor from the plurality of write cursors by computing a modulo operation of a number representing the individual zone and a number representing how many write cursors are in the plurality of write cursors.
18 . The system of claim 17 , the operations further comprising:
programming data to the first portion of the set of memory components using the selected individual write cursor.
19 . A method comprising:
determining how many write cursors are in a plurality of write cursors;
generating a plurality of internal zone groups (IZGs) based on how many write cursors are in the plurality of write cursors;
associating a plurality of zones of a set of memory components with the plurality of IZGs, each IZG being associated with a different write cursor of the plurality of write cursors;
programming data to a first portion of a set of memory components using the plurality of write cursors, the first portion of the set of memory components being associated with a first type of storage;
determining that an individual IZG of the plurality of IZGs satisfies a migration criterion; and
in response to determining that the individual IZG of the plurality of IZGs satisfies the migration criterion, migrating a portion of the data stored in the first portion of the set of memory components corresponding to the individual IZG to a second portion of the set of memory components, the second portion of the set of memory components being associated with a second type of storage.
20 . A non-transitory computer-readable storage medium comprising instructions that, when executed by at least one processing device, cause the at least one processing device to perform operations comprising:
associating a plurality of zones of a set of memory components with a plurality of internal zone groups (IZGs), each IZG being associated with a different write cursor of a plurality of write cursors, a first write cursor of the plurality of write cursors grouping a first collection of zones into a first set of block stripes, and a second write cursor of the plurality of write cursors grouping a second collection of zones into a second set of block stripes;
programming data to a first portion of a set of memory components using the plurality of write cursors, the first portion of the set of memory components being associated with a first type of storage;
determining that an individual IZG of the plurality of IZGs satisfies a migration criterion; and
in response to determining that the individual IZG of the plurality of IZGs satisfies the migration criterion, migrating a portion of the data stored in the first portion of the set of memory components corresponding to the individual IZG to a second portion of the set of memory components, the second portion of the set of memory components being associated with a second type of storage.