IP Library Granted Patent US 8,156,302
Granted Patent B2
US 8,156,302 · App. 12/899,709 · Granted Apr 10, 2012

Integrating data from symmetric and asymmetric memory

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 8,156,302
App. No.
12/899,709
Granted
Apr 10, 2012
Kind
B2
Abstract

Data stored within symmetric and asymmetric memory components of main memory is integrated by identifying a first data as having access characteristics suitable for storing in an asymmetric memory component. The first data is included among a collection of data to be written to the asymmetric memory component. An amount of data is identified within the collection of data to be written to the asymmetric memory component. The amount of data is compared within the collection of data to a volume threshold to determine whether a block write to the asymmetric memory component is justified by the amount of data. If justified, the collection of data is loaded to the asymmetric memory component.

Claims (80)

1. A method of managing a memory system that has multiple parts including at least a first part of the memory system and a second part of the memory system, the first part of the memory system being different from the second part of the memory system in that the first part of the memory system has different access characteristics than the second part of the memory system or the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system, the method comprising:

identifying first data stored in the first part of the memory system as having access characteristics suitable for storing in the second part of the memory system;

including the first data among a collection of data to be written to the second part of the memory system;

determining whether writing the collection of data to the second part of the memory system is justified; and

based on a determination that writing the collection of data to the second part of the memory system is justified:

identifying memory utilization characteristics of multiple regions included in the second part of the memory system;

analyzing the identified memory utilization characteristics;

based on the analysis of the identified memory utilization characteristics, selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system; and

loading the collection of data to the selected region of the second part of the memory system.

2. The method of claim 1 , wherein determining whether writing the collection of data to the second part of the memory system is justified comprises:

identifying an amount of data within the collection of data to be written to the second part of the memory system;

comparing the amount of data within the collection of data to a volume threshold;

determining whether the amount of data within the collection of data meets the volume threshold based on the comparison; and

determining whether writing the collection of data to the second part of the memory system is justified based on the determination of whether the amount of data within the collection of data meets the volume threshold.

3. The method of claim 1 , wherein determining whether writing the collection of data to the second part of the memory system is justified comprises:

determining an amount of time since data having access characteristics suitable for storing in the second part of the memory system was loaded to the second part of the memory system;

comparing the amount of time to a time-based threshold;

determining whether the amount of time meets the time-based threshold based on the comparison; and

determining whether writing the collection of data to the second part of the memory system is justified based on the determination of whether the amount of time meets the time-based threshold.

4. The method of claim 1 wherein selecting, from among the multiple regions included in the second part of the memory system, the region in the second part of the memory system comprises:

determining which of the multiple regions minimizes an amount of data that is disrupted during a write command based on the analysis of the identified memory utilization characteristics; and

based on the determination of which of the multiple regions minimizes the amount of data that is disrupted during the write command, selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system that minimizes the amount of data that is disrupted during the write command.

5. The method of claim 4 :

wherein identifying memory utilization characteristics of multiple regions included in the second part of the memory system comprises identifying a present amount of memory utilization for each of multiple regions included in the second part of the memory system;

wherein analyzing the identified memory utilization characteristics comprises analyzing the present amount of memory utilization for each of multiple regions included in the second part of the memory system; and

wherein determining which of the multiple regions minimizes the amount of data that is disrupted during the write command based on the analysis of the identified memory utilization characteristics comprises determining which of the multiple regions has a lowest amount of memory utilization based on the analysis of the present amount of memory utilization for each of the multiple regions included in the second part of the memory system.

6. The method of claim 5 wherein determining which of the multiple regions has a lowest amount of memory utilization comprises determining which of the multiple regions has a lowest amount of memory population density.

7. The method of claim 1 further comprising identifying an amount of storage collectively occupied by the collection of data;

wherein identifying memory utilization characteristics of multiple regions included in the second part of the memory system comprises identifying a distribution of data within each of at least one of the multiple regions included in the second part of the memory system;

wherein analyzing the identified memory utilization characteristics comprises analyzing the identified amount of storage collectively occupied by the collection of data with respect to the identified distribution of data; and

wherein selecting the region in the second part of the memory system comprises:

determining whether the identified amount of storage collectively occupied by the collection of data fits within the identified distribution of data; and

selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system based on the determination of whether the identified amount of storage collectively occupied by the collection of data fits within the identified distribution of data.

8. The method of claim 7 :

wherein identifying the distribution of data within at least one of the multiple regions included in the second part of the memory system comprises identifying, within at least one of the multiple regions included in the second part of the memory system, a sequential range of presently unused physical addresses in the second part of the memory system that are surrounded by presently used physical addresses in the second part of the memory system; and

wherein determining whether the identified amount of storage collectively occupied by the collection of data fits within the identified distribution of data comprises:

determining a size of the sequential range of presently unused physical addresses within the at least one of the multiple regions included in the second part of the memory system; and

based on the determination of the size of the sequential range of presently unused physical addresses, determining whether the identified amount of storage collectively occupied by the collection of data fits within the sequential range of presently unused physical addresses; and

wherein selecting, from among the multiple regions included in the second part of the memory system, the region in the second part of the memory system based on the determination of whether the identified amount of storage collectively occupied by the collection of data fits within the identified distribution of data comprises selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system based on the determination of whether the identified amount of storage collectively occupied by the collection of data fits within the sequential range of presently unused physical addresses.

9. The method of claim 7 :

wherein identifying the distribution of data within each of at least one of the multiple regions included in the second part of the memory system comprises:

identifying, within a first of the multiple regions included in the second part of the memory system, a first sequential range of presently unused physical addresses; and

identifying, within a second of the multiple regions included in the second part of the memory system, a second sequential range of presently unused physical addresses;

wherein determining whether the identified amount of storage collectively occupied by the collection of data fits within the identified distribution of data comprises:

determining a first size of the first sequential range of presently unused physical addresses;

determining a second size of the second sequential range of presently unused physical addresses, the second size being different than the first size;

determining that the first size is greater than or equal to the identified amount of storage collectively occupied by the collection of data;

determining that the second size is greater than or equal to the identified amount of storage collectively occupied by the collection of data; and

determining whether the identified amount of storage collectively occupied by the collection of data is closer in size to the first size or the second size; and

wherein selecting the region in the second part of the memory system comprises selecting a region in the second part of the memory system based on the determination of whether the identified amount of storage collectively occupied by the collection of data is closer in size to the first size or the second size.

10. The method of claim 1 further comprising:

based on a determination that writing the collection of data to the second part of the memory system is justified, determining application characteristics that reflect behaviors of at least one presently-active application,

wherein analyzing the identified memory utilization characteristics further comprises analyzing the determined application characteristics, and

wherein selecting, from among the multiple regions included in the second part of the memory system, the region in the second part of the memory system comprises selecting, from among the multiple regions included in the second part of the memory system, the region in the second part of the memory system based on the analysis of the identified memory utilization characteristics and the determined application characteristics.

11. The method of claim 10 wherein selecting, from among the multiple regions included in the second part of the memory system, the region in the second part of the memory system based on the analysis of the identified memory utilization characteristics and the determined application characteristics comprises:

determining which of the multiple regions has an impact on application performance resulting from a write command that is less than a threshold of impact on application performance; and

based on the determination of which of the multiple regions has an impact on application performance resulting from the write command that is less than the threshold of impact on application performance, selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system that has an impact on application performance resulting from the write command that is less than the threshold of impact on application performance.

12. The method of claim 10 wherein selecting, from among the multiple regions included in the second part of the memory system, the region in the second part of the memory system based on the analysis of the identified memory utilization characteristics and the determined application characteristics comprises:

determining which of the multiple regions has the least impact on application performance resulting from a write command; and

based on the determination of which of the multiple regions has the least impact on application performance resulting from the write command, selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system.

13. The method of claim 12 wherein determining which of the multiple regions has the least the impact on application performance resulting from the write command comprises:

determining that the application characteristics indicate that an application is building a large data structure that requires a relatively high level of memory utilization; and

identifying a region in the second part of the memory system for which the impact on application performance resulting from potential disruption of read operations during the write command is less than the impact on application performance resulting from operating at less than a desired level of memory utilization caused by selecting another of the multiple regions that would have a lower impact on application performance resulting from potential disruption of read operations during the write command.

14. The method of claim 1 , wherein the first part of the memory system is a symmetric memory component and the second part of the memory system is an asymmetric memory component.

15. The method of claim 1 , wherein the first part of the memory system is a volatile memory component and the second part of the memory system is a non-volatile memory component.

16. The method of claim 1 , wherein the first part of the memory system is a dynamic random access memory component and the second part of the memory system is a flash memory component.

17. The method of claim 1 , wherein the first part of the memory system has first absolute read and write speeds that are faster than second absolute read and write speeds of the second part of the memory system and a first difference between write speed and read speed of the first part of the memory system is less than a second difference between write speed and read speed of the second part of the memory system.

18. The method of claim 1 , wherein the first part of the memory system has different access characteristics than the second part of the memory system.

19. The method of claim 1 , wherein the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system.

20. A system comprising:

a memory system that has multiple parts including at least a first part of the memory system that is different from a second part of the memory system in that the first part of the memory system has different access characteristics than the second part of the memory system or the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system; and

a controller configured to perform operations comprising:

identifying first data stored in the first part of the memory system as having access characteristics suitable for storing in the second part of the memory system;

including the first data among a collection of data to be written to the second part of the memory system;

determining whether writing the collection of data to the second part of the memory system is justified; and

based on a determination that writing the collection of data to the second part of the memory system is justified:

identifying memory utilization characteristics of multiple regions included in the second part of the memory system;

analyzing the identified memory utilization characteristics;

based on the analysis of the identified memory utilization characteristics, selecting, from among the multiple regions included in the second part of the memory system, a region in the second part of the memory system; and

loading the collection of data to the selected region of the second part of the memory system.

Assignments (6)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2020
From: VIRIDENT SYSTEMS, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053180/0472 →
CHANGE OF NAME Recorded May 12, 2017
From: VIRIDENT SYSTEMS, INC.
To: VIRIDENT SYSTEMS, LLC
Reel/Frame 042457/0078 →