IP Library › Granted Patent US 11,500,570
Granted Patent B2
US 11,500,570 · App. 17/352,464 · Granted Nov 15, 2022

Efficient relocation of data utilizing different programming modes

Inventors: Andrew R. Bernat (Mountain View, CA); Peter E. Kirkpatrick (Los Altos, CA); Gordon James Coleman (Los Altos, CA); Wei Tang (Sunnyvale, CA); John Roper (Mountain View, CA)
Assignee: Pure Storage, Inc.
G06F3/0647G06F3/0604G06F3/064G06F3/0634G06F3/0673G06F12/06G06F2212/1044
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,500,570
App. No.
17/352,464
Granted
Nov 15, 2022
Kind
B2
Abstract

A command to relocate data is transmitted by a storage controller. The command includes first address information associated with a first set of blocks storing the data at one or more storage devices using a first programming mode and second address information associated with a second set of blocks at the one or more storage devices to store the relocated data using a second programming mode. The command causes the relocation of the data from the first set of blocks to the second set of blocks while bypassing sending the data to the storage controller. An acknowledgement is received that the relocated data has been stored at the second number of blocks.

Claims (31)

1. A storage system comprising:

a plurality of storage devices; and

a storage controller operatively coupled to the plurality of storage devices, the storage controller comprising a processing device, the processing device to:

transmit a command to relocate data, the command comprising first address information associated with a first set of blocks storing the data at the plurality of storage devices using a first programming mode and second address information associated with a second set of blocks at the plurality of storage devices to store the relocated data using a second programming mode, wherein the command causes the relocation of the data from the first set of blocks to the second set of blocks while bypassing sending the data to the storage controller; and

receive, from one or more of the plurality of storage devices, an acknowledgement that the relocated data has been stored at the second set of blocks.

2. The storage system of claim 1 , wherein the first set of blocks and the second set of blocks are located at a same storage device of the plurality of storage devices.

3. The storage system of claim 1 , wherein the first set of blocks and the second set of blocks are located at different storage devices of the plurality of storage devices.

4. The storage system of claim 3 , wherein at least two of the different storage devices have different erase block sizes.

5. The storage system of claim 1 , wherein the processing device is further to:

update a mapping data structure to deallocate the data stored at the first set of blocks and associate the relocated data with the second set of blocks.

6. The storage system of claim 1 , wherein the first programming mode corresponds to single-level cell (SLC) mode and the second programming mode corresponds to quad-level cell (QLC) mode.

7. The storage system of claim 1 , wherein the storage controller is external to the plurality of storage devices.

8. A method, comprising:

transmitting, by a processing device of a storage controller operatively coupled to a plurality of storage devices, a command to relocate data, the command comprising first address information associated with a first set of blocks storing the data at the plurality of storage devices using a first programming mode and second address information associated with a second set of blocks at the plurality of storage devices to store the relocated data using a second programming mode, wherein the command causes the relocation of the data from the first set of blocks to the second set of blocks while bypassing sending the data to the storage controller; and

receiving, from one or more of the plurality of storage devices, an acknowledgement that the relocated data has been stored at the second set of blocks.

9. The method of claim 8 , wherein the first set of blocks and the second set of blocks are located at a same storage device of the plurality of storage devices.

10. The method of claim 8 , wherein the first set of blocks and the second set of blocks are located at different storage devices of the plurality of storage devices.

11. The method of claim 10 , wherein at least two of the different storage devices have different erase block sizes.

12. The method of claim 8 , further comprising:

updating a mapping data structure to deallocate the data stored at the first set of blocks and associate the relocated data with the second set of blocks.

13. The method of claim 8 , wherein the first programming mode corresponds to single-level cell (SLC) mode and the second programming mode corresponds to quad-level cell (QLC) mode.

14. The method of claim 8 , wherein the storage controller is external to the plurality of storage devices.

15. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device of a storage controller to:

transmit, by the processing device, a command to relocate data, the command comprising first address information associated with a first set of blocks storing the data at a plurality of storage devices using a first programming mode and second address information associated with a second set of blocks at the plurality of storage devices to store the relocated data using a second programming mode, wherein the command causes the relocation of the data from the first set of blocks to the second set of blocks while bypassing sending the data to the storage controller; and

receive, from one or more of the plurality of storage devices, an acknowledgement that the relocated data has been stored at the second set of blocks.

16. The non-transitory computer readable storage medium of claim 15 , wherein the first set of blocks and the second set of blocks are located at a same storage device of the plurality of storage devices.

17. The non-transitory computer readable storage medium of claim 15 , wherein the first set of blocks and the second set of blocks are located at different storage devices of the plurality of storage devices.

18. The non-transitory computer readable storage medium of claim 17 , wherein at least two of the different storage devices have different erase block sizes.

19. The non-transitory computer readable storage medium of claim 15 , wherein the processing device is further to:

update a mapping data structure to deallocate the data stored at the first set of blocks and associate the relocated data with the second set of blocks.

20. The non-transitory computer readable storage medium of claim 15 , wherein the first programming mode corresponds to single-level cell (SLC) mode and the second programming mode corresponds to quad-level cell (QLC) mode.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2021
From: BERNAT, ANDREW R.; KIRKPATRICK, PETER E.; COLEMAN, GORDON JAMES; TANG, WEI; ROPER, JOHN
To: PURE STORAGE, INC.
Reel/Frame 056597/0915 →
Continuity (4)
Continuation In Part 16389675 · Apr 19, 2019
Provisional Application 62729597 · Sep 11, 2018
Provisional Application 62727792 · Sep 6, 2018
Related Publication 20210318827A1 · Oct 14, 2021