IP Library Granted Patent US 11,435,920
Granted Patent B2
US 11,435,920 · App. 17/183,703 · Granted Sep 6, 2022

Storage system and method for using read and write buffers in a memory

Inventors: Rotem Sela (Haifa, IL); Einav Zilberstein (Had Hasharon, IL); Karin Inbar (Kfar Saba, IL)
Assignee: Western Digital Technologies, Inc.
G06F3/064G06F3/0604G06F3/0673G06F12/1009G06F2212/657G11C11/5621G11C11/5671
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 11,435,920
App. No.
17/183,703
Granted
Sep 6, 2022
Kind
B2
Abstract

A storage system allocates single-level cell (SLC) blocks in its memory to act as a write buffer and/or a read buffer. When the storage system uses the SLC blocks as a read buffer, the storage system reads data from multi-level cell (MLC) blocks in the memory and stores the data in the read buffer prior to receiving a read command from a host for the data. When the storage system uses the SLC blocks as a write buffer, the storage system retains certain data in the write buffer while other data is flushed from the write buffer to MLC blocks in the memory.

Claims (54)

1. A storage system comprising:

a memory; and

a controller configured to:

receive, from a host, a command for improved read performance for a logical block address range;

in response to receiving the command for improved read performance:

create a read buffer allocated from single-level cell (SLC) blocks in the memory;

copy data stored in multi-level cell (MLC) blocks in the memory associated with the logical block address range into the read buffer; and

create, in a logical-to-physical address data structure, an association between the logical block address range and physical addresses in the read buffer that store the data:

receive a read command from the host for the data;

in response to receiving the read command, send the data stored in the read buffer to the host;

receive, from the host, a command indicating that improved read performance is no longer needed for the logical block address range; and

in response to receiving the command indicating that improved read performance is no longer needed for the logical block address range, remove, from the logical-to-physical address data structure, the association between the logical block address range and physical addresses in the read buffer that store the data.

2. The storage system of claim 1 , wherein the controller is further configured to create the read buffer in response to a number of free blocks in the memory exceeding a threshold.

3. The storage system of claim 1 , wherein the data copied from the MLC blocks is identified by a logical block address received from the host prior to receiving the read command from the host.

4. The storage system of claim 1 , wherein the controller is further configured to copy the data from the MLC blocks after predicting that the host will request the data.

5. The storage system of claim 1 , wherein the controller is further configured to:

delete the data from the MLC blocks after the data has been copied into the read buffer; and

flush the data from the read buffer to the MLC blocks.

6. The storage system of claim 5 , wherein the controller is further configured to flush the data from the read buffer to the MLC blocks in response to a flush command from the host.

7. The storage system of claim 5 , wherein the controller is further configured to flush the data from the read buffer to the MLC blocks in response to a flush policy of the storage system.

8. The storage system of claim 1 , wherein the data is fragmented in the SLC blocks, and wherein the controller is further configured to defragment the data when writing the data to the MLC blocks in response to a flush command.

9. The storage system of claim 1 , further comprising a volatile memory, wherein the controller is further configured to copy, from the memory to the volatile memory, a portion of the logical-to-physical address data structure.

10. The storage system of claim 1 , wherein the controller is further configured to provide an attribute that indicates one or more of following: a maximum size of the read buffer, a fullness of the read buffer, a health of the read buffer, and a health of blocks of the memory not used for the read buffer.

11. The storage system of claim 1 , wherein the memory comprises a three-dimensional memory.

12. A storage system comprising:

a memory comprising single-level cell (SLC) blocks and multi-level cell (MLC) blocks;

means for receiving, from a host, a command for improved read performance for a logical block address range;

means for in response to receiving the command for improved read performance:

creating a read buffer allocated from single-level cell (SIX) blocks in the memory;

copying data stored in multi-level cell (MIX) blocks in the memory associated with the logical block address range into the read buffer; and

creating, in a logical-to-physical address data structure, an association between the logical block address range and physical addresses in the read buffer that store the data;

means for receiving a read command from the host for the data:

means for sending the data stored in the read buffer to the host in response to receiving the read command:

means for receiving, from the host, a command indicating that improved read performance is no longer needed for the logical block address range; and

means for removing, from the logical-to-physical address data structure, the association between the logical block address range and physical addresses in the read buffer that store the data in response to receiving the command indicating that improved read performance is no longer needed for the logical block address range.

13. In a storage system comprising a memory with single-level cell (SLC) blocks and multi-level cell (MLC) blocks, a method comprising:

receiving, from a host, a command for improved read performance for a logical block address range;

in response to receiving the command for improved read performance:

creating a read buffer allocated from single-level cell (SLC) blocks in the memory;

copying data stored in multi-level cell (MLC) blocks in the memory associated with the logical block address range into the read buffer; and

creating, in a logical-to-physical address data structure, an association between the logical block address range and physical addresses in the read buffer that store the data;

receiving a read command from the host for the data;

in response to receiving the read command, sending the data stored in the read buffer to the host;

receiving, from the host, a command indicating that improved read performance is no longer needed for the logical block address range; and

in response to receiving the command indicating that improved read performance is no longer needed for the logical block address range, removing, from the logical-to-physical address data structure, the association between the logical block address range and physical addresses in the read buffer that store the data.

14. The method of claim 13 , further comprising creating the read buffer in response to a number of free blocks in the memory exceeding a threshold.

15. The method of claim 13 , wherein the data copied from the MLC blocks is identified by a logical block address received from the host prior to receiving the read command from the host.

16. The method of claim 13 , further comprising copying the data from the MLC blocks after predicting that the host will request the data.

17. The method of claim 13 , further comprising:

deleting the data from the MLC blocks after the data has been copied into in the read buffer; and

flushing the data from the read buffer to the MLC blocks.

18. The method of claim 17 , further comprising flushing the data from the read buffer to the MLC blocks in response to a flush command from the host.

19. The method of claim 17 , further comprising flushing the data from the read buffer to the MIX blocks in response to a flush policy of the storage system.

20. The method of claim 13 , wherein the data is fragmented in the SLC blocks, and wherein the method further comprises defragmenting the data when writing the data to the MLC blocks in response to a flush command.

Assignments (10)
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 →
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 - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
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 →
RELEASE OF SECURITY INTEREST AT REEL 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2021
From: SELA, ROTEM; ZILBERSTEIN, EINAV; INBAR, KARIN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055391/0242 →
Cited By (1)
US 12,423,257