IP Library Granted Patent US 9,588,698
Granted Patent B1
US 9,588,698 · App. 15/077,282 · Granted Mar 7, 2017

Managing the write performance of an asymmetric memory system

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 9,588,698
App. No.
15/077,282
Granted
Mar 7, 2017
Kind
B1
Abstract

Some implementations include a method of managing a hosted non-volatile random-access memory (NVRAM) based storage subsystem that includes NVRAM devices. The method includes: receiving, at a device driver on the host computing device, write requests each requesting to write a respective unit of data to the NVRAM-based storage subsystem; categorizing the write requests into subgroups of write requests, where write requests within respective subgroups are mutually exclusive; ascertaining a load condition of each of several of the NVRAM devices of the NVRAM-based storage subsystem; identifying a target location on at least one NVRAM device to service a particular subgroup of write requests according to the ascertained load conditions of the NVRAM devices of the NVRAM-based storage subsystem; and servicing the particular subgroup of write requests by writing the corresponding units of data to the identified target location on the at least one NVRAM device of the NVRAM-based storage subsystem.

Claims (45)

1. A method of managing a hosted non-volatile random-access memory (NVRAM) based storage subsystem that includes NVRAM devices, the method comprising:

receiving, at a device driver on the host computing device, write requests each requesting to write a respective unit of data to the NVRAM-based storage subsystem;

categorizing the write requests into subgroups of write requests based on a characteristic of each write request, where write requests within respective subgroups are mutually exclusive;

receiving information encoding a load condition of each of several of the NVRAM devices of the NVRAM-based storage subsystem;

comparing the load condition of each NVRAM device with a pre-determined load threshold;

subsequently based on results from the comparing and categorizing, identifying a target location on at least one NVRAM device of the NVRAM-based storage subsystem to service a particularly categorized subgroup of write requests, the NVRAM-based storage subsystem in communication with an intermediate volatile storage; and

servicing the particularly categorized subgroup of write requests by writing corresponding units of data to the identified target location on the at least one NVRAM device of the NVRAM-based storage subsystem.

2. The method of claim 1 , further comprising:

in response to the load condition being within the load threshold and the subgroup of write requests categorized as latency sensitive, writing the corresponding units of data as asynchronous writes through an intermediate volatile storage on the NVRAM-based storage subsystem to the identified target location on the at least one NVRAM device, wherein the asynchronous writes are carried out by sending the respective units of data to the intermediate volatile storage and without confirming that the respective units of data of the write requests have been completely written to the target locations on the at least one NVRAM device of the NVRAM-based storage subsystem.

3. The method of claim 1 , further comprising:

in response to the load condition being above the load threshold and the subgroup of write requests categorized as throughput sensitive, writing the corresponding units of data as synchronous writes through the intermediate volatile storage on the NVRAM-based storage subsystem to the identified target location on the at least one NVRAM device or bypassing the intermediate volatile storage on the NVRAM-based storage subsystem, wherein the synchronous writes are performed by blocking application processes or threads on the host computing device that have issued the write requests until the respective units of data have been completely written to the at least one NVRAM device of the NVRAM-based storage subsystem.

4. The method of claim 1 , wherein comparing the load condition of a particular NVRAM device of the NVRAM-based storage subsystem comprises determining a number of pending I/O access requests at the particular NVRAM device.

5. The method of claim 1 , wherein comparing the load condition of a particular NVRAM device of the NVRAM-based storage subsystem comprises determining a number of application processes or threads with I/O access backlogs at the particular NVRAM device.

6. The method of claim 1 , wherein comparing the load condition of a particular NVRAM device of the NVRAM-based storage subsystem comprises determining an availability of physical cells on the particular NVRAM device.

7. The method of claim 1 , wherein comparing the load condition of a particular NVRAM device of the NVRAM-based storage subsystem comprises determining a queue occupancy ratio of pending write requests.

8. The method of claim 7 , wherein determining the queue occupancy ratio comprises analyzing a queue of pending write requests at a controller on the particular NVRAM device or analyzing a queue of pending write requests at a device driver on a computing device hosting the NVRAM-based storage system.

9. The method of claim 7 , wherein determining the queue occupancy ratio comprises detecting whether a particular queue of write requests has more than a threshold number of entries.

10. The method of claim 1 , wherein comparing the load condition of a particular NVRAM device of the NVRAM-based storage subsystem comprises ascertaining load conditions of candidate erase blocks on a corresponding NVRAM device, and

wherein identifying a target location on at least one NVRAM device further comprises choosing, based on the ascertained load conditions of candidate erase blocks on the corresponding NVRAM devices, an active erase block that comprises more than one write page to accommodate a respective unit of data of a particular write request.

11. A system comprising a non-volatile random-access memory (NVRAM) based storage subsystem, the NVRAM-based storage subsystem comprising at least one NVRAM device in communication with a host computing device, the NVRAM-based storage subsystem is configured to perform the operations of:

receiving, at a device driver on the host computing device, write requests each requesting to write a respective unit of data to the NVRAM-based storage subsystem;

categorizing the write requests into subgroups of write requests based on a characteristic of each write request, where write requests within respective subgroups are mutually exclusive;

receiving information encoding a load condition of each of several of the NVRAM devices of the NVRAM-based storage subsystem;

comparing the load condition of each NVRAM device with a pre-determined load threshold;

subsequently based on results from the comparing and categorizing, identifying a target location on at least one NVRAM device of the NVRAM-based storage subsystem to service a particularly categorized subgroup of write requests, the NVRAM-based storage subsystem in communication with an intermediate volatile storage; and

servicing the particularly categorized subgroup of write requests by writing corresponding units of data to the identified target location on the at least one NVRAM device of the NVRAM-based storage subsystem.

12. The system of claim 11 , wherein the operations further comprise:

in response to the load condition being within the load threshold and the subgroup of write requests categorized as latency sensitive, writing the corresponding units of data as asynchronous writes through an intermediate volatile storage on the NVRAM-based storage subsystem to the identified target location on the at least one NVRAM device, wherein the asynchronous writes are carried out by sending the respective units of data to the intermediate volatile storage and without confirming that the respective units of data of the write requests have been completely written to the target locations on the at least one NVRAM device of the NVRAM-based storage subsystem.

13. The system of claim 11 , wherein the operations further comprise:

in response to the load condition being above the load threshold and the subgroup of write requests categorized as throughput sensitive, writing the corresponding units of data as synchronous writes through the intermediate volatile storage on the NVRAM-based storage subsystem to the identified target location on the at least one NVRAM device or bypassing the intermediate volatile storage on the NVRAM-based storage subsystem, wherein the synchronous writes are performed by blocking application processes or threads on the host computing device that have issued the write requests until the respective units of data have been completely written to the at least one NVRAM device of the NVRAM-based storage subsystem.

14. The system of claim 11 , comparing the load condition of each NVRAM device with a pre-determined load threshold comprises determining a number of pending I/O access requests at the particular NVRAM device.

15. The system of claim 11 , wherein comparing the load condition of each NVRAM device with a pre-determined load threshold comprises determining a number of application processes or threads with I/O access backlogs at the particular NVRAM device.

16. The system of claim 11 , wherein comparing the load condition of each NVRAM device with a pre-determined load threshold comprises determining an availability of physical cells on the particular NVRAM device.

17. The system of claim 11 , wherein comparing the load condition of a particular NVRAM device of the NVRAM-based storage subsystem comprises determining a queue occupancy ratio of pending write requests.

18. The system of claim 17 , wherein determining the queue occupancy ratio comprises analyzing a queue of pending write requests at a controller on the particular NVRAM device or analyzing a queue of pending write requests at a device driver on a computing device hosting the NVRAM-based storage system.

19. The system of claim 17 , wherein determining the queue occupancy ratio comprises detecting whether a particular queue of write requests has more than a threshold number of entries.

20. The system of claim 11 , wherein comparing the load condition of each NVRAM device with a pre-determined load threshold comprises ascertaining load conditions of candidate erase blocks on a corresponding NVRAM device, and

wherein identifying a target location on at least one NVRAM device further comprises choosing, based on the ascertained load conditions of candidate erase blocks on the corresponding NVRAM devices, an active erase block that comprises more than one write page to accommodate a respective unit of data of a particular write request.

21. A non-transitory machine readable medium, comprising software instructions, which software instructions when executed causes a non-volatile random-access memory (NVRAM) based storage subsystem, which NVRAM based storage subsystem comprising at least one NVRAM device in communication with a host computing device, to perform the operations of:

receiving, at a device driver on the host computing device, write requests each requesting to write a respective unit of data to the NVRAM-based storage subsystem;

categorizing the write requests into subgroups of write requests based on a characteristic of each write request, where write requests within respective subgroups are mutually exclusive;

receiving information encoding a load condition of each of several of the NVRAM devices of the NVRAM-based storage subsystem;

comparing the load condition of each NVRAM device with a pre-determined load threshold;

subsequently based on results from the comparing and categorizing, identifying a target location on at least one NVRAM device of the NVRAM-based storage subsystem to service a particularly categorized subgroup of write requests, the NVRAM-based storage subsystem in communication with an intermediate volatile storage; and

servicing the particularly categorized subgroup of write requests by writing corresponding units of data to the identified target location on the at least one NVRAM device of the NVRAM-based storage subsystem.

Assignments (10)
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 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2020
From: VIRIDENT SYSTEMS, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053180/0472 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SERIAL NUMBER 13/827,871 PREVIOUSLY RECORDED ON REEL 042463 FRAME 0876. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded May 24, 2017
From: VIRIDENT SYSTEMS, INC.
To: VIRIDENT SYSTEMS, LLC
Reel/Frame 042657/0640 →
CHANGE OF NAME Recorded May 15, 2017
From: VIRIDENT SYSTEMS, INC.
To: VIRIDENT SYSTEMS, LLC
Reel/Frame 042463/0876 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2016
From: KARAMCHETI, VIJAY; SINGHAI, ASHISH; MONDAL, SHIBABRATA; KUMAR, AJITH
To: VIRIDENT SYSTEMS INC.
Reel/Frame 038386/0678 →