US11640354B2ActiveUtilityA1
Logical-to-physical mapping of data groups with data locality
Est. expiryDec 20, 2039(~13.4 yrs left)· nominal 20-yr term from priority
G06F 12/0246G06F 2212/7201G06F 12/0873G06F 3/061G06F 3/064G06F 3/0679G06F 9/355G06F 12/0882
69
PatentIndex Score
0
Cited by
14
References
20
Claims
Abstract
A system includes integrated circuit (IC) dies having memory cells and a processing device, which is to perform operations including generating a number of zone map entries for zones of a logical block address (LBA) space that are sequentially mapped to physical address space of the plurality of IC dies, wherein each zone map entry corresponds to a respective data group that has been sequentially written to one or more IC dies; and generating a die identifier and a block identifier for each data block of multiple data blocks of the respective data group, wherein each data block corresponds to a media block of the plurality of IC dies.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A system comprising:
a plurality of integrated circuit (IC) dies having memory cells; and
a processing device coupled to the plurality of IC dies, the processing device to perform operations comprising:
generating a number of zone map entries for zones of a logical block address (LBA) space that are sequentially mapped to physical address space of the plurality of IC dies, wherein each zone map entry corresponds to a respective data group that has been sequentially written to one or more IC dies of the plurality of IC dies;
generating a die identifier and a block identifier for each data block of multiple data blocks of the respective data group, wherein each data block corresponds to a media block of the plurality of IC dies; and
writing multiple data groups, which are sequentially mapped across the zones, sequentially across the plurality of IC dies, wherein at least some of the multiple data groups correspond to at least some of the number of zone map entries for the zones.
2. The system of claim 1 , wherein the data group is at least two to four times a size of the media block and each data block of the multiple data blocks comprises at least 100 megabytes of data having locality.
3. The system of claim 1 , wherein writing the multiple data groups comprises writing, in parallel, a first data block of the multiple data blocks to a first IC die, a second data block of the multiple data blocks to a second IC die, and a third data block of the multiple data blocks to a third IC die of the one or more IC dies.
4. The system of claim 1 , wherein writing the data group comprises writing each multiplane page worth of the data group as one of:
three first pass, single-level cell (SLC) programming on three different IC dies of the plurality of IC dies;
one first pass, SLC programming on a first IC die and a second pass triple-level cell (TLC) programming on a second IC die of the plurality of IC dies; or
a first pass SLC programming on a first IC die and a second pass multi-level (MLC) programming on a second IC die of the plurality of IC dies.
5. The system of claim 1 , wherein the operations further comprise:
storing, within a zone map data structure, the number of zone map entries; and
storing, within a block set data structure indexed by a block set identifier of each zone map entry, the die identifier, and the block identifier for each data block of the multiple data blocks, wherein each zone map entry comprises a zone starting LBA identifier, the block set identifier, and a zone cursor value that is an LBA offset within a zone, and wherein a block set entry in the block set data structure further comprises a page map offset value, for each data block of the multiple data blocks, that points to a page map entry indexed within a page map data structure.
6. The system of claim 5 , wherein to write a data group of the multiple data groups to the one or more IC die for a zone, the processing device is further to perform operations comprising:
extracting, from a write command, the zone starting LBA identifier at which to begin writing the data received from a host system and a sector count value to indicate a number of bytes of the data group;
determining a zone identifier based on the zone starting LBA identifier and a zone size value;
determining a zone offset value based on the zone cursor value and a multiplane page size;
looking up a zone map entry within the zone map data structure using the zone identifier;
extracting the block set identifier from the zone map entry;
determining the die identifier and the block identifier for each data block of the multiple data blocks via access to the block set entry to which points the block set identifier; and
incrementing the zone cursor value by the number of bytes.
7. The system of claim 6 , wherein the processing device is further to perform operations comprising:
determining the page map offset value for each data block of the multiple data blocks based on the zone offset value and a block size value;
determining a page identifier using the page map offset value to access the page map entry, the page identifier to identify a page within each respective IC die and block, corresponding to the die identifier and block identifier, respectively, at which to begin writing respective ones of the multiple data blocks; and
incrementing each page map offset value depending on the number of bytes written to respective ones of the one or more IC dies.
8. The system of claim 5 , wherein to read the data group from the one or more IC dies for a zone, the processing device is further to perform operations comprising:
extracting, from a read command, an LBA and a sector count value to indicate a number of bytes of the data group;
determining a zone identifier based on the LBA and a zone size value;
determining a zone offset value based on the LBA, the zone size value, and a multiplane page size;
looking up a zone map entry within the zone map data structure using the zone identifier;
extracting the block set identifier from the zone map entry; and
determining the die identifier and the block identifier of a data block of the multiple data blocks via access to the block set entry, of the block set data structure, to which points the block set identifier.
9. The system of claim 8 , wherein the processing device is further to perform operations comprising:
determining the page map offset value for the data block based on the zone offset value and a block size value;
determining a page identifier using the page map offset value to access the page map entry, the page identifier to identify a page within the IC die and block corresponding to the die identifier and block identifier, respectively; and
reading the data stored at the data block identified by the die identifier, the block identifier, starting at the page, and sized according to the sector count value.
10. A method comprising:
generating, by a processing device, a number of zone map entries for zones of an LBA space that are sequentially mapped to physical address space of a plurality of integrated circuit (IC) dies, wherein a zone map entry of the zone map entries corresponds to a respective data group that has been sequentially written to one or more IC dies of the plurality of IC dies;
generating, by the processing device, a die identifier and a block identifier for each data block of multiple data blocks of the respective data group, wherein each data block corresponds to a media block of the plurality of IC dies; and
writing multiple data groups, which are sequentially mapped across the zones, sequentially across the plurality of IC dies, wherein at least some of the multiple data groups correspond to at least some of the number of zone map entries for the zones.
11. The method of claim 10 , wherein the data group is at least two to four times a size of the media block comprising data having locality.
12. The method of claim 10 , further comprising:
extracting, from a write command received from a host system, a zone starting logical block address (LBA) identifier at which to begin writing a data group of the multiple data groups; and
writing the multiple data blocks of the data group to sequentially mapped physical address locations, of the one or more IC dies, corresponding to at least the zone starting LBA identifier, and to each die identifier and block identifier, wherein writing the multiple data blocks comprises writing each multiplane page worth of data of the data group as one of:
three first pass, single-level cell (SLC) programming on three different IC dies of the plurality of IC dies;
one first pass, SLC programming on a first IC die and a second pass triple-level cell (TLC) programming on a second IC die of the plurality of IC dies; or
a first pass SLC programming on a first IC die and a second pass multi-level (MLC) programming on a second IC die of the plurality of IC dies.
13. The method of claim 10 , further comprising:
storing, within a zone map data structure, the number of zone map entries; and
storing, within a block set data structure indexed by a block set identifier of each zone map entry, the die identifier, and the block identifier for each data block of the multiple data, wherein the zone map entry comprises a zone starting LBA identifier, the block set identifier, and a zone cursor value that is an LBA offset within a zone, and wherein writing a data group of the multiple data groups to the one or more IC dies for a zone further comprises:
extracting, from a write command, a sector count value that indicates a number of bytes of the data group;
determining a zone identifier by dividing the zone starting LBA identifier by a zone size value;
determining a zone offset value by dividing the zone cursor value by a multiplane page size;
looking up a zone map entry within the zone map data structure using the zone identifier;
extracting the block set identifier from the zone map entry;
determining the die identifier and the block identifier for each data block of the multiple data blocks via access to a block set entry, of the block set data structure, to which points the block set identifier; and
incrementing the zone cursor value by the number of bytes.
14. The method of claim 13 , wherein the block set entry in the block set data structure further comprises a page map offset value, for each data block of the multiple data blocks, that points to a page map entry indexed within a page map data structure, the method further comprising:
determining the page map offset value for each data block of the multiple data blocks comprising the zone offset value modulo a block size value;
determining a page identifier using the page map offset value to access the page map entry, the page identifier to identify a page within each respective IC die and block, corresponding to the die identifier and block identifier, respectively, at which to begin writing respective ones of the multiple data blocks; and
incrementing each page map offset value depending on the number of bytes written to respective ones of the one or more IC dies.
15. The method of claim 10 , further comprising:
storing, within a zone map data structure, the number of zone map entries; and
storing, within a block set data structure indexed by a block set identifier of each zone map entry, the die identifier, and the block identifier for each data block of the multiple data blocks, wherein each zone map entry comprises the block set identifier and a zone cursor value that is an LBA offset within a zone, and wherein to read a data group of the multiple data groups from the plurality of IC dies for a zone, the method further comprising:
extracting, from a read command, an LBA and a sector count value to indicate a number of bytes of the data group;
determining a zone identifier by dividing the LBA by a zone size value;
determine a zone offset value comprising the LBA modulo the zone size value and dividing a result thereof by a multiplane page size;
looking up a zone map entry within the zone map data structure using the zone identifier;
extracting the block set identifier from the zone map entry; and
determining the die identifier and the block identifier of a data block of the multiple data blocks via access to a block set entry, of the block set data structure, to which points the block set identifier.
16. The method of claim 15 , wherein the block set entry in the block set data structure further comprises a page map offset value, for each data block of the multiple data blocks, that points to a page map entry indexed within a page map data structure, the method further comprising:
determining the page map offset value for the data block comprising the zone offset value modulo the block size;
determining a page identifier using the page map offset value to access the page map entry, the page identifier to identify a page within the IC die and block corresponding to the die identifier and block identifier, respectively; and
reading the data stored at the data block identified by the die identifier, the block identifier, starting at the page, and sized according to the sector count value.
17. A non-transitory machine-readable storage medium storing instructions which, when executed in a memory sub-system having a plurality of integrated circuit (IC) dies, causes the memory sub-system to perform operations comprising:
generating a number of zone map entries for zones of an LBA space that are sequentially mapped to physical address space of a plurality of integrated circuit (IC) dies, wherein a zone map entry of the zone map entries corresponds to a respective data group that has been sequentially written to one or more IC dies of the plurality of IC dies;
generating a die identifier and a block identifier for each data block of multiple data blocks of each respective data group, wherein each data block corresponds to a media block of the plurality of IC dies; and
writing multiple data groups, which are sequentially mapped across the zones, sequentially across the plurality of IC dies, wherein at least some of the multiple data groups correspond to at least some of the number of zone map entries for the zones.
18. The non-transitory machine-readable storage medium of claim 17 , wherein writing the multiple data groups comprises writing the multiple data blocks of each respective data group of the multiple data groups until sequentially filling up a first IC die followed by sequentially filling up a second IC die of the plurality of IC dies.
19. The non-transitory machine-readable storage medium of claim 17 , wherein the operations further comprise:
storing, within a zone map data structure, the number of zone map entries; and
storing, within a block set data structure indexed by a block set identifier of each zone map entry, the die identifier, and the block identifier for each data block of the multiple data blocks, wherein the zone map entry comprises a zone starting LBA identifier, the block set identifier, and a zone cursor value that is an LBA offset within a zone, and wherein writing a data group of the multiple data groups to the plurality of IC dies for a zone further comprises operations comprising:
extracting, from a write command received from a host system, a zone starting LBA identifier at which to begin writing the data group received from a host system and a sector count value to indicate a number of bytes of the data group;
determining a zone identifier based on the zone starting LBA identifier and a zone size value;
determining a zone offset value based on the zone cursor value and a multiplane page size;
looking up a zone map entry within the zone map data structure using the zone identifier;
extracting the block set identifier from the zone map entry;
determining the die identifier and the block identifier for each data block of the multiple data blocks via access to a block set entry, of the block set data structure, to which points the block set identifier; and
incrementing the zone cursor value by the number of bytes.
20. The non-transitory machine-readable storage medium of claim 19 , wherein the block set entry in the block set data structure further comprises a page map offset value, for each data block of the multiple data blocks, that points to a page map entry indexed within a page map data structure, and wherein the operations further comprising:
determining the page map offset value for each data block of the multiple data blocks based on the zone offset value and the block size;
determining a page identifier using the page map offset value to access the page map entry, the page identifier to identify a page within each respective IC die and block, corresponding to the die identifier and block identifier, respectively, at which to begin writing respective ones of the multiple data blocks; and
incrementing each page map offset value depending on the number of bytes written to respective ones of the one or more IC dies.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.