US11656792B2ActiveUtilityA1

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

95
Assignee: IBMPriority: Jun 29, 2021Filed: Jun 29, 2021Granted: May 23, 2023
Est. expiryJun 29, 2041(~15 yrs left)· nominal 20-yr term from priority
G06F 2212/1016G06F 3/0656G06F 2212/7201G06F 2212/262G06F 3/061G06F 12/0844G06F 12/0868G06F 3/0604G06F 12/0246G06F 2212/7203G06F 3/0613G06F 3/0679G06F 2212/72G06F 3/0611G06F 2212/313G06F 2212/214G06F 2212/7208G06F 3/0659G06F 2212/286G06F 2212/225
95
PatentIndex Score
4
Cited by
18
References
18
Claims

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

exact text as granted — not AI-modified
What is claimed is: 
     
       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.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.