IP Library › Granted Patent US 9,507,719
Granted Patent B2
US 9,507,719 · App. 13/971,770 · Granted Nov 29, 2016

Garbage collection in hybrid memory system

Inventor: Sumanth Jannyavula Venkata (Shakopee, MN)
Assignee: SEAGATE TECHNOLOGY LLC
G06F12/0866G06F12/0246G06F2212/217G06F2212/7205
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,507,719
App. No.
13/971,770
Granted
Nov 29, 2016
Kind
B2
Abstract

A hybrid memory system includes a primary memory and a secondary memory. A garbage collection operation is performed on the hybrid memory system. A read operation comprising reading data from a first cluster of a plurality of clusters is performed. Responsive to a determination that the read operation failed, the first cluster is unmapped without writing the data to a second cluster and the first cluster continues to be used for subsequent data storage. Responsive to a determination that the read operation did not fail, data is written to the second cluster.

Claims (60)

1. A method of performing garbage collection in a hybrid memory system that includes a primary memory and a secondary memory, the method comprising:

performing a read operation comprising reading data from a first cluster of a plurality of clusters;

responsive to a determination that the read operation failed:

unmapping the first cluster without writing the data to a second cluster;

determining a programming time for the first cluster;

if the programming time is greater than a first threshold, continuing to use the first cluster for subsequent data storage;

if the programming time is less than or equal to the first threshold, increment a counter;

determining if the counter is greater than a second threshold; and

if the programming time is less than or equal to the second threshold, defecting

the first cluster; and

responsive to a determination that the read operation did not fail, writing the data to the second cluster.

2. The method of claim 1 , wherein upon completion of a successful write of the data to the second cluster, unmapping the first cluster.

3. The method of claim 1 , wherein upon failure to write to the second cluster, unmapping the first cluster.

4. The method of claim 1 , further comprising grouping one or more clusters of the plurality of clusters into one or more garbage collection units (GCUs).

5. The method of claim 4 , wherein the first cluster is located in a first GCU and the second cluster located in a second GCU different from the first GCU.

6. The method of claim 4 , further comprising erasing the GCU.

7. The method of claim 6 , further comprising:

receiving incoming memory access requests from a host processor;

routing the incoming memory access requests to a set of incoming queues;

transforming each incoming memory access request into one or more outgoing memory access requests;

routing the outgoing memory access requests from the incoming queues into a set of outgoing queues.

8. The method of claim 7 , wherein the outgoing queues include one or more of:

a set of ready lists, each ready queue of the set of ready lists configured to queue memory access requests that are ready for execution.

9. The method of claim 8 , wherein the set of ready lists comprise a user ready list and a system ready list.

10. The method of claim 9 further comprising:

adding erased GCUs to the system ready list if the length of the system ready list is below a predetermined threshold; and

adding erased GCUs to the user ready list if the length of the system ready list is above a predetermined threshold.

11. The method of claim 4 , further comprising determining a staleness count for the one or more GCUs.

12. The method of claim 11 , wherein determining a staleness of the one or more GCUs comprises determining the number of clusters in the one or more GCUs that contain invalid data.

13. A device, comprising:

a hybrid controller configured to manage data transfers between a host processor and a secondary memory, the secondary memory configured to serve as a cache for a primary memory, the controller configured to:

perform a read operation comprising reading data from a first cluster of a of a plurality of clusters of the secondary memory;

responsive to a determination that the read operation failed:

unmap the first cluster without writing the data to a second cluster;

determine a programming time for the first cluster;

if the programming time is greater than a first threshold, continue to use the first cluster for subsequent data storage;

if the programming time is less than or equal to the first threshold, increment a counter;

determine if the counter is greater than a second threshold; and

if the programming time is less than or equal to the second threshold,

defect the first cluster; and

responsive to a determination that the read operation did not fail write the data to the second cluster.

14. The device of claim 13 , wherein upon completion of a successful write of the data to the second cluster, the controller is further configured to unmap the first cluster.

15. The device of claim 13 , wherein upon failure to write to the second cluster, the controller is further configured to unmap the first cluster.

16. The device of claim 13 , wherein the controller is further configured to group one or more clusters of the plurality of clusters into one or more garbage collection units (GCUs).

17. The device of claim 16 , wherein the first cluster is located in a first GCU and the second cluster located in a second GCU different from the first GCU.

18. A controller system for a hybrid memory system, the controller comprising:

a hybrid controller configured data transfers between the host processor and a flash memory, the flash memory configured to serve as a cache for a magnetic disk, the hybrid controller configured to:

perform a read operation comprising reading data from a first cluster of a plurality of clusters;

responsive to a determination that the read operation failed:

unmap the first cluster without writing the data to a second cluster;

determine a programming time for the first cluster;

if the programming time is greater than a first threshold, continue to use the first cluster for subsequent data storage; and

if the programming time is less than or equal to the first threshold, increment a counter;

determine if the counter is greater than a second threshold; and

if it is determined that the counter is greater than the second threshold, defect the first cluster; and

responsive to a determination that the read operation did not fail, write the data to the second cluster.

19. The controller system of claim 18 , wherein the controller is further configured to

unmap the first cluster upon completion of a successful write of the data to the second cluster; and

unmap the first cluster upon failure to write to the second cluster.

20. The controller system of claim 18 , wherein the controller is further configured to group one or more clusters of the plurality of clusters into one or more garbage collection units (GCUs) and wherein the first cluster is located in a first GCU and the second cluster located in a second GCU different from the first GCU.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2013
From: VENKATA, SUMANTH JANNYAVULA
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 031047/0979 →
Continuity (1)
Related Publication 20150058525A1 · Feb 26, 2015