IP Library › Granted Patent US 9,058,281
Granted Patent B2
US 9,058,281 · App. 13/486,761 · Granted Jun 16, 2015

Allocating memory usage based on quality metrics

Inventors: Ryan James Goss (Prior Lake, MN); David Scott Seekins (Shakopee, MN); Mark Allen Gaertner (Vadnais Heights, MN)
Assignee: SEAGATE TECHNOLOGY LLC
G06F12/0871G06F2212/222G06F2212/502G06F2212/217
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,058,281
App. No.
13/486,761
Granted
Jun 16, 2015
Kind
B2
Abstract

A tiered memory system includes a memory controller for a primary memory and a secondary memory, where the secondary memory is used as a cache for the primary memory. The memory controller is configured to cause redundant data that is stored in the primary memory of the memory system to be stored in first memory locations of the secondary memory. The controller causes data that is not stored in the primary memory to be stored in second memory locations of the secondary memory. The second memory locations have at least one of lower bit error rate and higher access speed than the first memory locations.

Claims (41)

1. A memory system, comprising:

a memory controller configured to

cause redundant data that is stored in other locations of a memory system to be stored in first memory locations of a non-volatile secondary memory that serves as a cache for a non-volatile primary memory, the primary memory comprising a hard disk drive (HDD) and the secondary memory comprising a solid state memory;

cause non-redundant data that is not stored in other locations of the memory system to be stored in second memory locations of the secondary memory, the second memory locations having at least one of lower bit error rate and higher access speed than the first memory locations; and

dynamically determine sizes for the first and second memory locations in response to an amount of time that the HDD is spinning and commands to read from and write to the HDD are being serviced for a particular workload.

2. The memory system of claim 1 , wherein the memory controller is configured to determine quality metrics of the secondary memory, the quality metrics including at least one of bit error rate and access speed, and to identify at least one of the first and second memory locations in response to the quality metrics.

3. The memory system of claim 1 , wherein:

the first memory locations comprise a read cache and the redundant data comprises read data stored in the read cache after being read from the primary memory; and

the second memory locations comprise a write cache and the non-redundant data comprises write data stored in the write cache prior to being written to the primary memory.

4. The memory system of claim 1 , wherein the controller is configured to redesignate a portion of the second memory locations as first memory locations in response to non-redundant data stored in the portions being identified as frequently accessed data.

5. The memory system of claim 1 , wherein:

the primary memory comprises a hard disk drive; and

the secondary memory comprises a solid state memory.

6. The memory system of claim 1 , wherein:

the secondary memory comprises a multilevel solid state memory;

the first memory locations comprise most significant bit (MSB) pages of the multilevel solid state memory; and

the second memory locations comprise least significant bit (LSB) pages of the multilevel solid state memory.

7. The memory system of claim 6 , wherein the memory controller is configured to interleave programming the MSB pages and the LSB pages of a memory block.

8. The memory system of claim 6 , wherein the memory controller is configured to program all the LSB pages of a memory block before programming the MSB pages of the memory block.

9. The memory system of claim 1 , wherein the controller is configured to dynamically determine sizes for the first and second memory locations in response to amounts of redundant data and non-redundant data that needs to be stored in the secondary memory.

10. The memory system of claim 9 , wherein the controller is configured to determine sizes for the first and second memory locations in response to an amount of time that the primary memory is not accessed for a particular workload.

11. A memory system, comprising:

a memory controller configured to:

cause redundant data that is stored in other locations of a memory system to be stored in first memory locations of a non-volatile secondary memory that serves as a cache for a non-volatile primary memory;

cause non-redundant data that is not stored in other locations of the memory system to be stored in second memory locations of the secondary memory, the second memory locations having at least one of lower bit error rate and higher access speed than the first memory locations; and

change a number of bits stored in each memory cell of the secondary memory in response to an amount of redundant data that needs to be stored in the first memory location.

12. A method, comprising:

causing redundant data that is stored in a primary memory of a memory device to be stored in first memory locations of a secondary memory of the memory device, the primary memory comprising a hard disk drive (HDD) and the secondary memory comprising a solid state memory;

causing non-redundant data that is not stored in the primary memory of the memory device to be stored in second memory locations of the secondary memory of the memory device, wherein the second memory locations have at least one of a lower bit error rate and higher access speed than the first memory locations; and

dynamically determining sizes for the first and second memory locations in response to an amount of time that the HDD is spinning and commands to read from and write to the HDD are being serviced for a particular workload.

13. The method of claim 12 , wherein:

the first memory locations are a read cache of the memory device; and

the second memory locations are a write cache of the memory device.

14. The method of claim 13 , further comprising:

determining quality metrics of the secondary memory, the quality metrics including at least bit error rate; and

adjusting a size of at least one of the read cache and the write cache in response to the quality metrics.

15. The method of claim 12 , wherein the first memory locations are used as a read cache and the second memory locations are used as a write cache and further comprising redesignating a portion of the write cache as the read cache in response to non-redundant data stored in the portions of the write cache being identified as frequently accessed read data.

16. The method of claim 12 , wherein storing the redundant data and storing the non-redundant data comprises storing the non-redundant data in the second memory locations of a memory block before storing the redundant data in the first memory locations of the memory block.

17. The method of claim 12 , wherein storing the redundant data and storing the non-redundant data comprises interleaving the storing of the non-redundant data in the second memory locations of a memory block with the storing of the redundant data in the first memory locations of the memory block.

18. The method of claim 12 , further comprising determining optimal sizes for the first memory locations and the second memory locations based on an amount of time that the primary memory device is not accessed for a particular workload.

19. The method of claim 12 , further comprising changing a number of bits stored in memory cells of the secondary memory in response to an amount of the redundant data that needs to be stored in the first memory locations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2012
From: GOSS, RYAN JAMES; SEEKINS, DAVID SCOTT; GAERTNER, MARK ALLEN
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 028305/0758 →
Continuity (1)
Related Publication 20130326116A1 · Dec 5, 2013