IP Library Granted Patent US 8,938,583
Granted Patent B1
US 8,938,583 · App. 13/298,272 · Granted Jan 20, 2015

System and method for concurrently executing data access requests

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 8,938,583
App. No.
13/298,272
Granted
Jan 20, 2015
Kind
B1
Abstract

Embodiments of the invention are directed to systems and methods for optimizing data access request handling in a non-volatile memory (NVM) device. In one embodiment, the device may include a number of storage elements that can be concurrently programmed, and the device may include a controller that determines whether data access requests may be staged and processed together so that the concurrency of the storage device may be optimized. In one embodiment, staged requests are selectively combined together so that their combined data size is greater than or equal to a data size that can be programmed in a single set of concurrent operations to the storage elements.

Claims (59)

1. A non-volatile memory storage device, comprising:

a non-volatile memory array; and

a controller configured to:

maintain a logical-to-physical address mapping table, each entry in the mapping table referencing data having a first size;

receive a first write command from a host system, the first write command including write data;

divide the write data into one or more data units corresponding to the first size;

if it is determined that the one or more data units can be grouped into a data block of a second size different from the first size:

group a first subset of the one or more data units into the data block of the second size, the second size corresponding to a maximum number of data units that can be simultaneously programmed in a single program operation in the non-volatile memory array; program the first subset of data units in the non-volatile memory array; and

delay programming, for a duration that does not exceed a duration threshold, a second subset of the one or more data units that are not grouped with the first subset of data units for possible grouping with one or more data units from a second write command received subsequent to the first write command, wherein the write data comprises the first and second subsets of the one or more data units, and wherein the controller is further configured to increase the duration threshold based at least in part on a likelihood that at least one data unit of the second subset will be grouped with the one or more data units of the second write command; and

if it is determined that the one or more data units cannot be grouped into the data block of the second size at least in part because there are no pending data units for possible grouping with the one or more data units:

program the one or more data units in the non-volatile memory array,

wherein a size of the one or more data units is smaller than the second size.

2. The non-volatile memory storage device of claim 1 further comprising a volatile memory, wherein the controller is further configured to:

store in the volatile memory at least one data unit of the second subset of data units for possible grouping with one or more data units from the second write command.

3. The non-volatile memory storage device of claim 1 , wherein the controller is further configured to program, after elapse of a period of time that equals to or exceeds the duration threshold, at least one data unit from the second subset of a size smaller than the second size without grouping the at least one data unit with one or more data units from the second write command.

4. The non-volatile memory storage device of claim 1 , wherein the controller is further configured to group at least one data unit from the second subset with at least one data unit associated with the second write command for programming in the non-volatile memory array simultaneously using a single program operation.

5. The non-volatile memory storage device of claim 1 , wherein the controller is further configured to:

receive a read command,

determine whether a logical address referenced by the read command overlaps any logical address corresponding to at least one data unit from the second subset, and

if there is an overlap, perform at least one of: delay execution of the read command until the at least one data unit from the second subset has been written to the non-volatile memory array and return the at least one data unit to satisfy the read command.

6. The non-volatile memory storage device of claim 1 , wherein the controller is further configured to:

if the number of data units from the first command is less than the maximum number, combine the data units with data units from at least one other command so that the combined number of data units reaches the maximum number.

7. The non-volatile memory storage device of claim 1 , wherein the controller is further configured to:

receive a read command,

determine whether a logical address referenced by the read command overlaps any logical address corresponding to at least one data unit from the second subset, and

if there is an overlap, return the at least one data unit to satisfy the read command.

8. The non-volatile memory storage device of claim 1 , wherein the non-volatile memory array comprises a plurality of access points configured for simultaneous communications, each access point providing access to one or more storage elements, each storage element being of an element size.

9. The non-volatile memory storage device of claim 8 , wherein the maximum number is the number of access points that can be accessed simultaneously multiplied by (1) the number of storage elements accessible per access point and (2) the element size and divided by (3) the first size.

10. The non-volatile memory storage device of claim 8 , wherein each element comprises a page.

11. The non-volatile memory storage device of claim 10 , wherein each access point comprises a plane on a die.

12. A method of managing submission of write requests to a non-volatile memory array in a non-volatile memory storage device, the method comprising:

maintaining a logical-to-physical address mapping table, each entry in the mapping table referencing data having a first size;

receiving a first write command from a host system, the first write command including write data;

dividing the write data into one or more data units corresponding to the first size;

if it is determined that the one or more data units can be grouped into a data block of a second size different from the first size:

grouping a first subset of the one or more data units into the data block of the second size, the second size corresponding to a maximum number of data units that can be simultaneously programmed in a single program operation in the non-volatile memory array;

programming the first subset of data units in the non-volatile memory array;

delaying programming, for a duration of time that does not exceed a duration threshold, a second subset of the one or more data units that are not grouped with the first subset of data units for possible grouping with one or more data units from a second write command received subsequent to the first write command, wherein the write data comprises the first and second subsets of the one or more data units; and

increasing the duration threshold based at least in part on a likelihood that at least one data unit of the second subset will be grouped with the one or more data units of the second write command; and

if it is determined that the one or more data units cannot be grouped into the data block of the second size at least in part because there are no pending data units for possible grouping with the one or more data units:

programming the one or more data units in the non-volatile memory array,

wherein a size of the one or more data units is smaller than the second size.

13. The method of claim 12 , further comprising storing at least one data unit of the second subset of data units for possible grouping with one or more data units from the second write command.

14. The method of claim 12 , further comprising:

receiving a read command,

determining whether a logical address referenced by the read command overlaps any logical address corresponding to the stored at least one data unit, and

if there is an overlap, performing at least one of: delaying execution of the read command until at least one data unit from the second subset has been written to the non-volatile memory array and returning the at least one data unit to satisfy the read command.

15. The method of claim 12 , further comprising:

if the number of data units from the first command is less than the maximum number, combine the data units with data units from at least one other command so that the combined number of data units reaches the maximum number.

16. The method of claim 12 , further comprising programming, after elapse of a period of time that equals to or exceeds the duration threshold, at least one data unit from the second subset of a size smaller than the second size without grouping the at least one data unit with one or more data units from the second write command.

17. The method of claim 12 , further comprising grouping at least one data unit from the second subset of the one or more data units with at least one data unit associated with the second write command for programming in the non-volatile memory array simultaneously using a single program operation.

18. The method of claim 12 , further comprising:

receiving a read command,

determining whether a logical address referenced by the read command overlaps any logical address corresponding to at least one data unit from the second subset, and

if there is an overlap, returning the at least one data unit to satisfy the read command.

19. The method of claim 12 , wherein the non-volatile memory array comprises a plurality of access points configured for simultaneous communications, each access point providing access to one or more storage elements, each storage element being of an element size.

20. The method of claim 19 , wherein the maximum number is the number of access points that can be accessed simultaneously multiplied by (1) the number of storage elements accessible per access point and (2) the element size and divided by (3) the first size.

21. The method of claim 19 , wherein each element comprises a page.

22. The method of claim 21 , wherein each access point comprises a plane on a die.

Assignments (13)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2011
From: SURYABUDI, DOMINIC S.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 027240/0144 →