IP Library Granted Patent US 11,656,792
Granted Patent B2
US 11,656,792 · App. 17/361,662 · Granted May 23, 2023

Mirroring data in write caches of a controller of a non-volatile memory

Inventors: Roman Alexander Pletka (Uster, CH); Timothy J. Fisher (Cypress, TX); Adalberto Guillermo Yanes (Sugar Land, TX); Nikolaos Papandreou (Thalwil, CH); Radu Ioan Stoica (Zurich, CH); Charalampos Pozidis (Rueschlikon, CH); Nikolas Ioannou (Zurich, CH)
Assignee: International Business Machines Corporation
G06F3/0656G06F3/061G06F3/0604G06F3/0611G06F3/0613G06F3/0659G06F3/0679G06F12/0246G06F12/0844G06F12/0868G06F2212/72G06F2212/7201G06F2212/7203
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,656,792
App. No.
17/361,662
Granted
May 23, 2023
Kind
B2
Abstract

A data storage system provides persistent storage in bulk non-volatile memory. A controller of the data storage system receives a host write command and buffers associated host write data in both a first write cache in non-volatile memory and a mirrored second write cache in volatile memory. The controller destages the host write data to the bulk non-volatile memory from the second write cache but not the first write cache. The controller services relocation write commands requesting data relocation within the bulk non-volatile memory by reference to the second write cache. Servicing the relocation write commands includes buffering relocation write data in the second write cache but not the first write cache and destaging the relocation write data to the bulk non-volatile memory from the second write cache.

Claims (51)

1. A method in a data storage system providing storage in bulk non-volatile memory, the method comprising:

a controller of the data storage system receiving a host write command and buffering associated host write data in both a first write cache in non-volatile memory and a mirrored second write cache in volatile memory;

the controller destaging the host write data to the bulk non-volatile memory from the second write cache but not the first write cache;

the controller servicing relocation write commands requesting data relocation within the bulk non-volatile memory by reference to the second write cache, the servicing including buffering relocation write data associated with relocation write commands in the second write cache but not the first write cache and destaging the relocation write data to the bulk non-volatile memory from the second write cache;

the controller recording, in an entry of a logical-to-physical translation data structure, a first location of host write data in the first write cache and a second location of host write data in the second write cache; and

the controller, based on destaging of the host write data to the bulk non-volatile memory, updating the entry to indicate a different third location in the bulk non-volatile memory.

2. The method of claim 1 , further comprising:

prior to completion of the destaging of the host write data to the bulk non-volatile memory, the controller sending to a host an acknowledgement of the host write command based on the host write data being buffered in the first write cache.

3. The method of claim 1 , wherein:

the bulk non-volatile memory includes flash memory; and

the method includes the controller generating at least some of the relocation write commands during garbage collection in the flash memory.

4. The method of claim 1 , further comprising:

the controller freeing, in the first write cache, the host write data of the host write command based on completion of destaging of the host write data to the bulk non-volatile memory.

5. The method of claim 1 , wherein the bulk non-volatile memory includes the first write cache.

6. The method of claim 1 , further comprising:

the controller maintaining, in each of the first write cache and the second write cache, a plurality of buffers each corresponding to a respective one of a plurality of different heats.

7. A data storage system comprising:

a controller of a bulk non-volatile memory, wherein the controller is configured to perform:

receiving a host write command and buffering associated host write data in both a first write cache in non-volatile memory and a mirrored second write cache in volatile memory;

destaging the host write data to the bulk non-volatile memory from the second write cache but not the first write cache;

servicing relocation write commands requesting data relocation within the bulk non-volatile memory by reference to the second write cache, the servicing including buffering relocation write data associated with relocation write commands in the second write cache but not the first write cache and destaging the relocation write data to the bulk non-volatile memory from the second write cache;

recording, in an entry of a logical-to-physical translation data structure, a first location of host write data in the first write cache and a second location of host write data in the second write cache; and

based on destaging of the host write data to the bulk non-volatile memory, updating the entry to indicate a different third location in the bulk non-volatile memory.

8. The data storage system of claim 7 , wherein the controller is further configured to perform:

prior to completion of the destaging of the host write data to the bulk non-volatile memory, sending to a host an acknowledgement of the host write command based on the host write data being buffered in the first write cache.

9. The data storage system of claim 7 , wherein:

the bulk non-volatile memory includes flash memory; and

the controller is further configured to perform generating at least some of the relocation write commands during garbage collection in the flash memory.

10. The data storage system of claim 7 , wherein the controller is further configured to perform:

freeing, in the first write cache, the host write data of the host write command based on completion of destaging of the host write data to the bulk non-volatile memory.

11. The data storage system of claim 7 , further comprising the bulk non-volatile memory, wherein the bulk non-volatile memory includes the first write cache.

12. The data storage system of claim 7 , wherein the controller is further configured to perform:

maintaining, in each of the first write cache and the second write cache, a plurality of buffers each corresponding to a respective one of a plurality of different heats.

13. A program product, comprising:

a storage device; and

program code stored in the storage device and executable by a controller of a bulk non-volatile memory to cause the controller to perform:

receiving a host write command and buffering associated host write data in both a first write cache in non-volatile memory and a mirrored second write cache in volatile memory;

destaging the host write data to the bulk non-volatile memory from the second write cache but not the first write cache;

servicing relocation write commands requesting data relocation within the bulk non-volatile memory by reference to the second write cache, the servicing including buffering relocation write data associated with relocation write commands in the second write cache but not the first write cache and destaging the relocation write data to the bulk non-volatile memory from the second write cache;

recording, in an entry of a logical-to-physical translation data structure, a first location of host write data in the first write cache and a second location of host write data in the second write cache; and

based on destaging of the host write data to the bulk non-volatile memory, updating the entry to indicate a different third location in the bulk non-volatile memory.

14. The program product of claim 13 , wherein the program code causes the controller to perform:

prior to completion of the destaging of the host write data to the bulk non-volatile memory, sending to a host an acknowledgement of the host write command based on the host write data being buffered in the first write cache.

15. The program product of claim 13 , wherein:

the bulk non-volatile memory includes flash memory; and

the program code causes the controller to perform generating at least some of the relocation write commands during garbage collection in the flash memory.

16. The program product of claim 13 , wherein the program code causes the controller to perform:

freeing, in the first write cache, the host write data of the host write command based on completion of destaging of the host write data to the bulk non-volatile memory.

17. The program product of claim 13 , wherein the bulk non-volatile memory includes the first write cache.

18. The program product of claim 13 , wherein the program code causes the controller to perform:

maintaining, in each of the first write cache and in the second write cache, a plurality of buffers each corresponding to a respective one of a plurality of different heats.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2021
From: PLETKA, ROMAN ALEXANDER; FISHER, TIMOTHY J.; YANES, ADALBERTO GUILLERMO; PAPANDREOU, NIKOLAOS; STOICA, RADU IOAN; POZIDIS, CHARALAMPOS; IOANNOU, NIKOLAS
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 056702/0775 →
Continuity (1)
Related Publication 20220413762A1 · Dec 29, 2022
Cited By (2)
US 12,517,830 US 12,625,815