IP Library Granted Patent US 9,898,196
Granted Patent B1
US 9,898,196 · App. 15/076,742 · Granted Feb 20, 2018

Small block write operations in non-volatile memory systems

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,898,196
App. No.
15/076,742
Granted
Feb 20, 2018
Kind
B1
Abstract

A first portion of an asymmetric memory is configured as temporary storage for application data units with sizes corresponding to a small memory block that is smaller than the size of a logical write unit associated with the asymmetric memory. A portion of the remaining asymmetric memory is configured as a reconciled storage for application data units with varying sizes. A first application data unit is received for writing to the asymmetric memory. Based on computing the size of the first application data unit as corresponding to the small memory block, the first application data unit is written to the temporary storage. Upon determining that a threshold is reached, a memory write operation is performed for writing the application data units from the temporary storage to the reconciled storage. The application data units written to the reconciled storage are removed from the temporary storage.

Claims (79)

1. A method comprising:

receiving an application data unit for writing to an asymmetric memory;

computing a size of the application data unit;

conditioned on determining that the size of the application data unit is within a first threshold value, writing the application data unit to a first portion of the asymmetric memory that is configured as a temporary storage for application data units with sizes within the first threshold value; and

conditioned on determining that the size of the application data unit is greater than the first threshold value, writing the application data unit to a second portion of the asymmetric memory that is configured as a reconciled storage for application data units with varying sizes.

2. The method of claim 1 , further comprising:

comparing an aggregate size of application data units stored in the temporary storage to a second threshold value that corresponds to transferring the application data units from the temporary storage to the reconciled storage; and

based on determining that the aggregate size of the application data units stored in the temporary storage has reached the second threshold value, transferring at least a portion of the application data units from the temporary storage to the reconciled storage.

3. The method of claim 2 , wherein the second threshold value corresponds to a preselected percentage of storage space in the temporary storage, and wherein comparing the aggregate size of the application data units stored in the temporary storage to the second threshold value comprises:

determining that the aggregate size of application data units stored in the temporary storage equals or exceeds the preselected percentage of storage space in the temporary storage; and

based on the determination, writing at least a portion of the application data units from the temporary storage to the reconciled storage.

4. The method of claim 1 , further comprising:

determining whether all application data units associated with a same write page are present in the temporary storage; and

based on determining that all application data units associated with the same write page are present in the temporary storage, transferring all the application data units associated with the same write page to the reconciled storage.

5. The method of claim 1 , wherein a first number of application data units corresponding to a write page are stored in the temporary storage and a second number of application data units corresponding to the write page are stored in the reconciled storage.

6. The method of claim 1 , further comprising:

writing, to a translation table, entries that include identifiers for application data units stored in the temporary storage or the reconciled storage, the identifiers associating the application data units to respective write pages.

7. The method of claim 6 , further comprising:

replicating the translation table entries in a log data structure that is distinct from the translation table, wherein the log data structure is configured to be reproduce the translation table during a recovery operation.

8. The method of claim 6 , further comprising:

in associated with writing a first application data unit to the temporary storage, writing, in a location in the temporary storage, a corresponding translation table entry that includes an identifier for the first application data unit; and

in associated with writing a second application data unit to the reconciled storage, writing, in a location in the reconciled storage, a corresponding translation table entry that includes an identifier for the second application data unit.

9. The method of claim 1 , further comprising:

determining that a first portion of a memory block stored in the reconciled storage is invalid;

in response to determining that the first portion is invalid, searching, in the temporary storage, for updated application data units corresponding to the first portion;

identifying, in the temporary storage, an application data unit that includes updated data corresponding to the first portion;

accessing the identified application data unit from the temporary storage;

updating the memory block by merging the updated data included in the accessed application data unit with valid portions of the memory block in the reconciled storage; and

writing the updated memory block to the reconciled storage.

10. The method of claim 1 , wherein the temporary storage is distributed across a first number of physical memory devices and the reconciled storage is distributed across a second number of physical memory devices, the method further comprising:

writing an application data unit stored in a first portion of a first physical memory device associated with the temporary storage to one of:

a second portion of the first physical memory device associated with the reconciled storage, or

a portion of a second physical memory device that is distinct from the first physical memory device and associated with the reconciled storage.

11. The method of claim 1 , wherein the temporary storage and the reconciled storage are distributed across a number of physical memory devices, the method further comprising:

reconfiguring a first portion of a physical memory device, which was previously associated with the temporary storage, for association with the reconciled storage.

12. The method of claim 1 , wherein the temporary storage and the reconciled storage are distributed across a number of physical memory devices, the method further comprising:

reconfiguring a first portion of a physical memory device, which was previously associated with the reconciled storage, for association with the temporary storage.

13. The method of claim 1 , wherein the first threshold value corresponds to an upper limit on the size of an application data unit that can be stored in the temporary storage.

14. An apparatus comprising:

one or more processors; and

a storage medium storing instructions that, when executed by the one or more processors, are configured to cause the one or more processors to perform operations comprising:

receiving an application data unit for writing to an asymmetric memory;

computing a size of the application data unit;

conditioned on determining that the size of the application data unit is within a first threshold value, writing the application data unit to a first portion of the asymmetric memory that is configured as a temporary storage for application data units with sizes within the first threshold value; and

conditioned on determining that the size of the application data unit is greater than the first threshold value, writing the application data unit to a second portion of the asymmetric memory that is configured as a reconciled storage for application data units with varying sizes.

15. The apparatus of claim 14 , wherein the operations further comprise:

comparing an aggregate size of application data units stored in the temporary storage to a second threshold value that corresponds to transferring the application data units from the temporary storage to the reconciled storage; and

based on determining that the aggregate size of the application data units stored in the temporary storage has reached the second threshold value, transferring at least a portion of the application data units from the temporary storage to the reconciled storage.

16. The apparatus of claim 15 , wherein the second threshold value corresponds to a preselected percentage of storage space in the temporary storage, and wherein comparing the aggregate size of the application data units stored in the temporary storage to the second threshold value comprises:

determining that the aggregate size of application data units stored in the temporary storage equals or exceeds the preselected percentage of storage space in the temporary storage; and

based on the determination, writing at least a portion of the application data units from the temporary storage to the reconciled storage.

17. The apparatus of claim 14 , wherein the operations further comprise:

determining whether all application data units associated with a same write page are present in the temporary storage; and

based on determining that all application data units associated with the same write page are present in the temporary storage, transferring all the application data units associated with the same write page to the reconciled storage.

18. The apparatus of claim 14 , wherein a first number of application data units corresponding to a write page are stored in the temporary storage and a second number of application data units corresponding to the write page are stored in the reconciled storage.

19. The apparatus of claim 14 , wherein the operations further comprise:

writing, to a translation table, entries that include identifiers for application data units stored in the temporary storage or the reconciled storage, the identifiers associating the application data units to respective write pages.

20. The apparatus of claim 19 , wherein the operations further comprise:

replicating the translation table entries in a log data structure that is distinct from the translation table, wherein the log data structure is configured to be reproduce the translation table during a recovery operation.

21. The apparatus of claim 19 , wherein the operations further comprise:

in associated with writing a first application data unit to the temporary storage, writing, in a location in the temporary storage, a corresponding translation table entry that includes an identifier for the first application data unit; and

in associated with writing a second application data unit to the reconciled storage, writing, in a location in the reconciled storage, a corresponding translation table entry that includes an identifier for the second application data unit.

22. The apparatus of claim 14 , wherein the operations further comprise:

determining that a first portion of a memory block stored in the reconciled storage is invalid;

in response to determining that the first portion is invalid, searching, in the temporary storage, for updated application data units corresponding to the first portion;

identifying, in the temporary storage, an application data unit that includes updated data corresponding to the first portion;

accessing the identified application data unit from the temporary storage;

updating the memory block by merging the updated data included in the accessed application data unit with valid portions of the memory block in the reconciled storage; and

writing the updated memory block to the reconciled storage.

23. The apparatus of claim 14 , wherein the temporary storage and the reconciled storage are distributed across a number of physical memory devices.

24. The apparatus of claim 23 , wherein a first portion of a first physical memory device is associated with the temporary storage and a second portion of the first physical memory device is associated with the reconciled storage, and wherein the operations comprise:

writing an application data unit stored in the first portion of the first physical memory device associated with the temporary storage to one of:

the second portion of the first physical memory device associated with the reconciled storage, or

a portion of a second physical memory device that is distinct from the first physical memory device and associated with the reconciled storage.

25. The apparatus of claim 23 , wherein the operations further comprise:

reconfiguring a first portion of a physical memory device, which was previously associated with the temporary storage, for association with the reconciled storage.

26. The apparatus of claim 23 , wherein the operations further comprise:

reconfiguring a first portion of a physical memory device, which was previously associated with the reconciled storage, for association with the temporary storage.

27. The apparatus of claim 14 , wherein the first threshold value corresponds to an upper limit on the size of an application data unit that can be stored in the temporary storage.

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 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 Mar 22, 2016
From: KARAMCHETI, VIJAY; SINGHAI, ASHISH; MONDAL, SHIBABRATA; GOWDA, SWAMY
To: VIRIDENT SYSTEMS INC.
Reel/Frame 038062/0203 →