IP Library Granted Patent US 10,656,842
Granted Patent B2
US 10,656,842 · App. 14/323,921 · Granted May 19, 2020

Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device

Inventors: Akshay Mathur (Los Gatos, CA); Dharani Kotte (Fremont, CA); Chayan Biswas (Newark, CA); Baskaran Kannan (Round Rock, TX); Sumant K. Patro (Fremont, CA)
Assignee: SANDISK TECHNOLOGIES LLC
G06F3/0616G06F3/061G06F3/064G06F3/0652G06F3/0659G06F3/0679G06F3/0688G06F12/0246G06F2003/0697G06F2212/1036G06F2212/7205
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 10,656,842
App. No.
14/323,921
Granted
May 19, 2020
Kind
B2
Abstract

Systems, methods and/or devices are used to enable using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device. In one aspect, the method includes (1) receiving a plurality of input/output (I/O) requests to be performed in a plurality of regions in a logical address space of a host, and (2) performing one or more operations for each region of the plurality of regions in the logical address space of the host, including (a) determining whether the region has a history of I/O requests to access data of size less than a predefined small-size threshold during a predetermined time period, (b) determining whether the region has a history of sequential write requests during the predetermined time period, and (c) if both determinations are true, coalescing subsequent write requests to the region.

Claims (69)

1. A method, comprising:

receiving, at a storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host; and

performing one or more operations for each region of the plurality of regions in the logical address space of the host, including:

determining whether the region has a history of I/O requests to access data, in the region in the logical address space of the host, of size less than a predefined small-size threshold during a predetermined time period;

determining whether the region has a history of sequential write requests to the region in the logical address space of the host during the predetermined time period; and

in accordance with a determination that the region has a history of I/O requests to access data of size less than a predefined small-size threshold during the predetermined time period and that the region has a history of sequential write requests during the predetermined time period, coalescing subsequent write requests to the region.

2. The method of claim 1 , wherein coalescing subsequent write requests to the region includes:

performing a read ahead operation, to read data from a storage medium of the storage device;

storing read data obtained by the read ahead operation to a cache;

writing one or more subsequent write requests to the cache; and

writing contents of the cache to the storage medium in a merged operation.

3. The method of claim 1 , wherein, with respect to a region of the plurality of regions, determining whether the region has a history of I/O requests to access data of size less than a predefined small-size threshold includes:

tracking a total number of write requests to write data of size less than the predefined small-size threshold; and

determining whether the total number of write requests to write data of size less than the predefined small-size threshold is greater than a first threshold.

4. The method of claim 1 , wherein, with respect to a region of the plurality of regions, determining whether the region has a history of I/O requests to access data of size less than a predefined small-size threshold includes:

tracking a total number of write requests to write data of size less than the predefined small-size threshold;

tracking a total number of write requests to write data of size greater than a predefined large-size threshold; and

determining whether the total number of write requests to write data of size less than the predefined small-size threshold is greater than a first threshold and whether the total number of write requests to write data of size greater than a predefined large-size threshold is less than a second threshold.

5. The method of claim 1 , wherein, with respect to a region of the plurality of regions, determining whether the region has a history of sequential write requests during the predetermined time period includes tracking whether a total number of sequential I/O requests to the region has exceeded a sequential request threshold.

6. The method of claim 1 , wherein, with respect to a region of the plurality of regions, determining whether the region has a history of sequential write requests during the predetermined time period includes tracking whether a total number of sequential I/O requests to the region has exceeded a sequential request threshold and tracking whether a total number of sequential write requests to the region has exceeded a sequential write threshold.

7. The method of claim 5 , further comprising, for each region of the plurality of regions in the logical address space, setting a flag to denote the determination of whether the total number of sequential I/O requests to the region has exceeded the sequential request threshold.

8. The method of claim 1 , further comprising, for each region of the plurality of regions in the logical address space, setting a flag to denote the determination of whether the region has a history of sequential write requests during the predetermined time period.

9. The method of claim 1 , further comprising, for each region of the plurality of regions in the logical address space, storing information in a data structure to maintain a history of I/O request patterns in the region for the predetermined time period.

10. The method of claim 1 , wherein the predefined small-size threshold is configurable.

11. The method of claim 1 , wherein the predetermined time period is configurable.

12. The method of claim 1 , wherein the storage device comprises one or more flash memory devices.

13. The method of claim 1 , wherein the storage device comprises one or more three-dimensional (3D) memory devices and circuitry associated with operation of memory elements in the one or more 3D memory devices.

14. The method of claim 13 , wherein the circuitry and one or more memory elements in a respective 3D memory device, of the one or more 3D memory devices, are on the same substrate.

15. A storage device, comprising:

one or more processors; and

memory storing one or more programs, which when executed by the one or more processors cause the storage device to:

receive, at the storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host; and

perform one or more operations for each region of the plurality of regions in the logical address space of the host, including:

determining whether the region has a history of I/O requests to access data, in the region in the logical address space of the host, of size less than a predefined small-size threshold during a predetermined time period;

determine whether the region has a history of sequential write requests to the region in the logical address space of the host during the predetermined time period; and

coalescing, in accordance with a determination that the region has a history of I/O requests to access data of size less than a predefined small-size threshold during the predetermined time period and that the region has a history of sequential write requests during the predetermined time period, subsequent write requests to the region.

16. The storage device of claim 15 , wherein coalescing subsequent write requests to the region includes:

performing a read ahead operation, to read data from a storage medium of the storage device;

storing read data obtained by the read ahead operation to a cache;

writing one or more subsequent write requests to the cache; and

writing contents of the cache to the storage medium in a merged operation.

17. The storage device of claim 15 , wherein the one or more programs, which when executed by the one or more processors, further cause the storage device to:

for each region of the plurality of regions in the logical address space, set a flag to denote the determination of whether the region has a history of sequential write requests during the predetermined time period.

18. The storage device of claim 15 , wherein the one or more programs, which when executed by the one or more processors, further cause the storage device to:

for each region of the plurality of regions in the logical address space, store information in a data structure to maintain a history of I/O request patterns in the region for the predetermined time period.

19. A storage system, comprising:

a storage medium;

one or more processors; and

memory storing one or more programs, which when executed by the one or more processors cause the storage system to:

receive, at a storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host; and

perform one or more operations for each region of the plurality of regions in the logical address space of the host, including:

determining whether the region has a history of I/O requests to access data, in the region in the logical address space of the host, of size less than a predefined small-size threshold during a predetermined time period;

determine whether the region has a history of sequential write requests to the region in the logical address space of the host during the predetermined time period; and

coalescing, in accordance with a determination that the region has a history of I/O requests to access data of size less than a predefined small-size threshold during the predetermined time period and that the region has a history of sequential write requests during the predetermined time period, subsequent write requests to the region.

20. A non-transitory computer readable storage medium, storing one or more programs configured for execution by one or more processors of a storage device, the one or more programs including instructions for:

receiving, at a storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host; and

performing one or more operations for each region of the plurality of regions in the logical address space of the host, including:

determining whether the region has a history of I/O requests to access data, in the region in the logical address space of the host, of size less than a predefined small-size threshold during a predetermined time period;

determining whether the region has a history of sequential write requests to the region in the logical address space of the host during the predetermined time period; and

in accordance with a determination that the region has a history of I/O requests to access data of size less than a predefined small-size threshold during the predetermined time period and that the region has a history of sequential write requests during the predetermined time period, coalescing subsequent write requests to the region.

21. The non-transitory computer readable storage medium of claim 20 , wherein coalescing subsequent write requests to the region includes:

performing a read ahead operation, to read data from a storage medium of the storage device;

storing read data obtained by the read ahead operation to a cache;

writing one or more subsequent write requests to the cache; and

writing contents of the cache to the storage medium in a merged operation.

22. The non-transitory computer readable storage medium of claim 20 , wherein the one or more programs further include instructions for:

for each region of the plurality of regions in the logical address space, setting a flag to denote the determination of whether the region has a history of sequential write requests during the predetermined time period.

23. The non-transitory computer readable storage medium of claim 20 , wherein the one or more programs further include instructions for:

for each region of the plurality of regions in the logical address space, storing information in a data structure to maintain a history of I/O request patterns in the region for the predetermined time period.

Assignments (6)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2014
From: MATHUR, AKSHAY; KOTTE, DHARANI; BISWAS, CHAYAN; KANNAN, BASKARAN; PATRO, SUMANT K.
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 033416/0188 →
Continuity (2)
Provisional Application 62005435 · May 30, 2014
Related Publication 20150347040A1 · Dec 3, 2015