IP Library Granted Patent US 12670093
Granted Patent B1
US 12670093 · App. 19/006,862 · Granted Jun 30, 2026

Systems, methods, and media for processing sub-indirection-unit data in solid-state drives

Inventors: Vinit Vyas (Folsom, CA); Rucha Rasane (Folsom, CA)
Assignee: SK hynix NAND Product Solutions Corp.
G06F12/0246G06F3/0611G06F3/064G06F3/0679
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12670093
App. No.
19/006,862
Granted
Jun 30, 2026
Kind
B1
Abstract

Mechanisms, including systems, methods, and media, for processing sub-indirection unit sized data in a solid-state drive (SSD) are provided, the methods including: identifying, in a first portion of storage of the SSD, a plurality of indirection units each containing sub-indirection-unit-sized data and padding; combining the plurality of indirection units into a page-size data structure using a hardware processor; copying contents of the page-sized data structure to a second portion of storage of the SSD; and updating a data structure relating logical address of data to physical locations of data so that an entry corresponding to the sub-indirection-unit-sized data of one of the plurality of indirection units changes from having a physical address in the first portion of storage to having a physical address in the second portion of storage.

Claims (62)

1 . A system for processing sub-indirection unit sized data in a solid-state drive (SSD), comprising:

memory; and

at least one hardware processor coupled to the memory and collectively configured to at least:

receive, from a host, a read request to read sub-indirection-unit-sized data;

in response to receiving the read request from the host, provide the sub-indirection-unit-sized data from a first portion of the storage of the SSD to the host;

after providing the sub-indirection-unit-sized data to the host:

pad the sub-indirection-unit-sized data in the first portion of the storage of the SSD;

identify, in the first portion of storage of the SSD, a plurality of indirection units each containing a corresponding set of sub-indirection-unit-sized data and padding, wherein the sub-indirection-unit-sized data is stored in the one of the plurality of indirection units;

combine the plurality of indirection units into a page-size data structure;

copy contents of the page-sized data structure to a second portion of storage of the SSD; and

update a data structure relating logical address of data to physical locations of data so that an entry corresponding to the corresponding set of sub-indirection-unit-sized data of one of the plurality of indirection units changes from having a physical address in the first portion of storage to having a physical address in the second portion of storage.

2 . The system of claim 1 , wherein the at least one hardware processor is also configured to:

receive a write request having sub-indirection-unit-sized data;

determine that the sub-indirection-unit-sized data in the write request has a size that is less than a size of an indirection unit; and

in response to determining that the sub-indirection-unit-sized data in the write request has a size that is less than the size of an indirection unit:

store the sub-indirection-unit-sized data in the first portion of the storage; and

create an entry in the data structure relating a logical address of the sub-indirection-unit-sized data in the write request to the physical address in the first portion of storage.

3 . The system of claim 2 , where storing the sub-indirection-unit-sized data in the first portion of the storage comprises copying the sub-indirection-unit-sized data from a cache of the SSD to the first portion of storage.

4 . The system of claim 3 , wherein the at least one hardware processor is also configured to pad the sub-indirection-unit-sized data after copying the sub-indirection-unit-sized data from the cache of the SSD to the first portion of storage.

5 . The system of claim 1 , wherein the first portion of the storage is random access memory.

6 . The system of claim 1 , wherein the first portion of the storage has a lower storage density than the second portion of the storage.

7 . The system of claim 1 , wherein the first portion of the storage has a faster write speed than the second portion of the storage.

8 . A method for processing sub-indirection unit sized data in a solid-state drive (SSD), comprising:

receiving, from a host, a read request to read sub-indirection-unit-sized data;

in response to receiving the read request from the host, providing the sub-indirection-unit-sized data from a first portion of the storage of the SSD to the host; and

after providing the sub-indirection-unit-sized data to the host:

pad the sub-indirection-unit-sized data in the first portion of the storage of the SSD;

identifying, in the first portion of storage of the SSD, a plurality of indirection units each containing a corresponding set of sub-indirection-unit-sized data and padding, wherein the sub-indirection-unit-sized data is stored in the one of the plurality of indirection units;

combining the plurality of indirection units into a page-size data structure using a hardware processor;

copying contents of the page-sized data structure to a second portion of storage of the SSD; and

updating a data structure relating logical address of data to physical locations of data so that an entry corresponding to the corresponding set of sub-indirection-unit-sized data of one of the plurality of indirection units changes from having a physical address in the first portion of storage to having a physical address in the second portion of storage.

9 . The method of claim 8 , further comprising:

receiving a write request having sub-indirection-unit-sized data;

determining that the sub-indirection-unit-sized data in the write request has a size that is less than a size of an indirection unit; and

in response to determining that the sub-indirection-unit-sized data in the write request has a size that is less than the size of an indirection unit:

storing the sub-indirection-unit-sized data in the first portion of the storage; and

creating an entry in the data structure relating a logical address of the sub-indirection-unit-sized data in the write request to the physical address in the first portion of storage.

10 . The method of claim 9 , where storing the sub-indirection-unit-sized data in the first portion of the storage comprises copying the sub-indirection-unit-sized data from a cache of the SSD to the first portion of storage.

11 . The method of claim 10 , further comprising padding the sub-indirection-unit-sized data after copying the sub-indirection-unit-sized data from the cache of the SSD to the first portion of storage.

12 . The method of claim 8 , wherein the first portion of the storage is random access memory.

13 . The method of claim 8 , wherein the first portion of the storage has a lower storage density than the second portion of the storage.

14 . The method of claim 8 , wherein the first portion of the storage has a faster write speed than the second portion of the storage.

15 . A non-transitory computer-readable medium containing computer executable instructions that, when executed by a processor, cause the processor to perform a method for processing sub-indirection unit sized data in a solid-state drive (SSD), the method comprising:

receiving, from a host, a read request to read sub-indirection-unit-sized data;

in response to receiving the read request from the host, providing the sub-indirection-unit-sized data from a first portion of the storage of the SSD to the host; and

after providing the sub-indirection-unit-sized data to the host:

pad the sub-indirection-unit-sized data in the first portion of the storage of the SSD;

identifying, in the first portion of storage of the SSD, a plurality of indirection units each containing a corresponding set of sub-indirection-unit-sized data and padding, wherein the sub-indirection-unit-sized data is stored in the one of the plurality of indirection units;

combining the plurality of indirection units into a page-size data structure;

copying contents of the page-sized data structure to a second portion of storage of the SSD; and

updating a data structure relating logical address of data to physical locations of data so that an entry corresponding to the corresponding set of sub-indirection-unit-sized data of one of the plurality of indirection units changes from having a physical address in the first portion of storage to having a physical address in the second portion of storage.

16 . The non-transitory computer-readable medium of claim 15 , wherein the method further comprises:

receiving a write request having sub-indirection-unit-sized data;

determining that the sub-indirection-unit-sized data in the write request has a size that is less than a size of an indirection unit; and

in response to determining that the sub-indirection-unit-sized data in the write request has a size that is less than the size of an indirection unit:

storing the sub-indirection-unit-sized data in the first portion of the storage; and

creating an entry in the data structure relating a logical address of the sub-indirection-unit-sized data in the write request to the physical address in the first portion of storage.

17 . The non-transitory computer-readable medium of claim 16 , where storing the sub-indirection-unit-sized data in the first portion of the storage comprises copying the sub-indirection-unit-sized data from a cache of the SSD to the first portion of storage.

18 . The non-transitory computer-readable medium of claim 17 , wherein the method further comprises padding the sub-indirection-unit-sized data after copying the sub-indirection-unit-sized data from the cache of the SSD to the first portion of storage.

19 . The non-transitory computer-readable medium of claim 15 , wherein the first portion of the storage is random access memory.

20 . The non-transitory computer-readable medium of claim 15 , wherein the first portion of the storage has a lower storage density than the second portion of the storage.

21 . The non-transitory computer-readable medium of claim 15 , wherein the first portion of the storage has a faster write speed than the second portion of the storage.