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

Real-time I/O pattern recognition to enhance performance and endurance of a storage device

Inventors: Dharani Kotte (Fremont, CA); Akshay Mathur (Los Gatos, CA); Chayan Biswas (Newark, CA); Baskaran Kannan (Round Rock, TX); Sumant K. Patro (Fremont, CA)
Assignee: SanDisk Technologies LLC
G06F3/0611G06F3/0616G06F3/0635G06F3/0653G06F3/0659G06F3/0673G06F3/0679G06F12/08
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,840
App. No.
14/323,896
Granted
May 19, 2020
Kind
B2
Abstract

Systems, methods and/or devices are used to enable real-time I/O pattern recognition to enhance performance and endurance of a storage device. In one aspect, the method includes (1) at a storage device, receiving from a host a plurality of input/output (I/O) requests, the I/O requests specifying operations to be performed in a plurality of regions in a logical address space of the 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) maintaining a history of I/O request patterns in the region for a predetermined time period, and (b) using the history of I/O request patterns in the region to adjust subsequent I/O processing in the region.

Claims (52)

1. A data processing method, comprising:

at a storage device:

receiving from a host a plurality of input/output (I/O) requests, the I/O requests specifying operations 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:

maintaining, and storing in a region data structure in the storage device, a history of I/O request patterns in the region in the logical address space of the host for a predetermined time period, the maintained history of I/O request patterns in the region including a plurality of count values for the region, each count value corresponding to a different I/O request pattern, wherein the plurality of count values are determined by tracking at least two of the following types of I/O requests in the region: sequential write requests, unaligned write requests, write requests to write data of a size less than a predefined small-size threshold, and write requests to write data of a size greater than a predefined large-size threshold; and

using the history of I/O request patterns in the region in the logical address space of the host to adjust subsequent I/O processing in the region.

2. The method of claim 1 , wherein the plurality of I/O requests includes read requests from one or more regions of the plurality of regions in the logical address space of the host and write requests to one or more regions of the plurality of regions in the logical address space of the host.

3. The method of claim 2 , wherein the plurality of regions in the logical address space of the host are fixed-size, predefined regions in the logical address space of the host.

4. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host further includes tracking a total number of sequential read requests from the region, wherein the sequential read requests are read requests for sequential logical addresses from the region in the logical address space of the host.

5. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a total number of sequential write requests to the region, wherein the sequential write requests are write requests to sequential logical addresses of the region in the logical address space of the host.

6. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a total number of unaligned write requests to the region, wherein unaligned write requests are write requests not aligned with predefined page boundaries.

7. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a total number of write requests to write data of size less than a predefined small-size threshold.

8. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a total number of write requests to write data of size greater than a predefined large-size threshold.

9. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking whether the region is accessed at least once by the plurality of I/O requests.

10. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a lowest logical block address (LBA) accessed in the region.

11. The method of claim 10 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a highest logical block address (LBA) accessed in the region.

12. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes recording a time stamp corresponding to when the history of I/O request patterns is reset.

13. The method of claim 3 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking whether a total number of sequential I/O requests to the region has exceeded a sequential request threshold.

14. The method of claim 3 , wherein each region in the logical address space of the host includes a plurality of sub-regions in the logical address space of the host, and maintaining the history of I/O request patterns in the region includes:

for each sub-region of the plurality of sub-regions in the logical address space of the host:

tracking a total number of times the sub-region is accessed.

15. The method of claim 3 , wherein the predetermined time period is configurable.

16. The method of claim 3 , further comprising:

for each region in the logical address space of the host of the plurality of regions in the logical address space of the host, subsequent to maintaining the history of I/O request patterns in the region for the predetermined time period, maintaining a second history of I/O request patterns in the region for a next instance of the predetermined time.

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

18. 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.

19. The method of claim 18 , 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.

20. 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, from a host a plurality of input/output (I/O) requests, the I/O requests specifying operations 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:

maintaining, and storing in a region data structure in the storage device, a history of I/O request patterns in the region in the logical address space of the host for a predetermined time period, the maintained history of I/O request patterns in the region including a plurality of count values for the region, each count value corresponding to a different I/O request pattern, wherein the plurality of count values are determined by tracking at least two of the following types of I/O requests in the region: sequential write requests, unaligned write requests, write requests to write data of a size less than a predefined small-size threshold, and write requests to write data of a size greater than a predefined large-size threshold; and

using the history of I/O request patterns in the region in the logical address space of the host to adjust subsequent I/O processing in the region.

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

for each region in the logical address space of the host of the plurality of regions in the logical address space of the host, subsequent to maintaining the history of I/O request patterns in the region for the predetermined time period, maintain a second history of I/O request patterns in the region for a next instance of the predetermined time period.

22. The storage device of claim 20 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host further includes tracking a total number of sequential read requests from the region, wherein the sequential read requests are read requests for sequential logical addresses from the region in the logical address space of the host.

23. The storage device of claim 20 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a total number of sequential write requests to the region, wherein the sequential write requests are write requests to sequential logical addresses of the region in the logical address space of the host.

24. The storage device of claim 20 , wherein maintaining the history of I/O request patterns in the region in the logical address space of the host includes tracking a total number of unaligned write requests to the region, wherein unaligned write requests are write requests not aligned with predefined page boundaries.

25. 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, from a host a plurality of input/output (I/O) requests, the I/O requests specifying operations 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:

maintaining, and storing in a region data structure in the storage device, a history of I/O request patterns in the region in the logical address space of the host for a predetermined time period, the maintained history of I/O request patterns in the region including a plurality of count values for the region, each count value corresponding to a different I/O request pattern, wherein the plurality of count values are determined by tracking at least two of the following types of I/O requests in the region: sequential write requests, unaligned write requests, write requests to write data of a size less than a predefined small-size threshold, and write requests to write data of a size greater than a predefined large-size threshold; and

using the history of I/O request patterns in the region in the logical address space of the host to adjust subsequent I/O processing in the region.

26. 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 the storage device, from a host a plurality of input/output (I/O) requests, the I/O requests specifying operations 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:

maintaining, and storing in a region data structure in the storage device, a history of I/O request patterns in the region in the logical address space of the host for a predetermined time period, the maintained history of I/O request patterns in the region including a plurality of count values for the region, each count value corresponding to a different I/O request pattern, wherein the plurality of count values are determined by tracking at least two of the following types of I/O requests in the region: sequential write requests, unaligned write requests, write requests to write data of a size less than a predefined small-size threshold, and write requests to write data of a size greater than a predefined large-size threshold; and

using the history of I/O request patterns in the region in the logical address space of the host to adjust subsequent I/O processing in the region.

Assignments (6)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
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: KOTTE, DHARANI; MATHUR, AKSHAY; BISWAS, CHAYAN; KANNAN, BASKARAN; PATRO, SUMANT K.
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 033416/0246 →
Continuity (2)
Provisional Application 62005405 · May 30, 2014
Related Publication 20150347028A1 · Dec 3, 2015
Cited By (1)
US 12,675,238