IP Library Granted Patent US 9,436,614
Granted Patent B2
US 9,436,614 · App. 13/875,702 · Granted Sep 6, 2016

Application-directed memory de-duplication

Inventors: Michael H. Dawson (Ottawa, CA); Arun K. Iyengar (Yorktown Heights, NY); Graeme Johnson (Ottawa, CA)
Assignee: GLOBALFOUNDRIES INC.
G06F12/10G06F9/45558G06F12/08G06F2009/45583G06F2212/1016G06F2212/1044G06F2212/152
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,436,614
App. No.
13/875,702
Granted
Sep 6, 2016
Kind
B2
Abstract

In a computing system including an application executing on top of a virtualization control layer, wherein the virtualization control layer maps portions of a virtual memory to portions of a physical memory, a method for managing memory including: identifying, by the application, a range of virtual memory whose probability of being replicated in the virtual memory exceeds a given threshold; obtaining, by the application, at least one memory address corresponding to the range of virtual memory; and passing, from the application to the virtualization control layer, an identifier for the range of virtual memory and the memory address corresponding to the range of virtual memory, wherein the identifier is useable by the virtualization control layer to identify similar ranges within the virtual memory.

Claims (31)

1. In a computing system comprised of an application executing on top of a virtualization control layer, wherein the virtualization control layer maps portions of a virtual memory to portions of a physical memory, a method for managing memory comprising the steps of:

identifying, by the application, a range of the virtual memory whose probability of being replicated in the virtual memory exceeds a given threshold;

obtaining, by the application, at least one memory address corresponding to the range of virtual memory;

passing, from the application to the virtualization control layer, an identifier for the range of virtual memory and the memory address corresponding to the range of virtual memory, wherein the identifier is useable by the virtualization control layer to identify similar ranges within the virtual memory; and

providing an application programming interface configured to allow the identifier and the range of virtual memory to be passed down from the application to a guest operating system, and from the guest operating system to the virtualization control layer at runtime;

wherein the application executes on the guest operating system, and the guest operating system executes on the virtualization control layer; and

wherein the method further comprises the step of using at the virtualization control layer, based at least in part upon the identifier, delta encoding to reduce redundant information in the physical memory.

2. The method of claim 1 , wherein the application also obtains a size corresponding to the range of virtual memory and passes the size to the virtualization control layer along with the identifier and the memory address corresponding to the range of virtual memory.

3. The method of claim 2 , further comprising the step of searching, by the virtualization control layer, in a first mapping structure for a match with the identifier passed by the application.

4. The method of claim 3 , further comprising the step of creating, at the virtualization control layer, a new entry in the first mapping structure when no match is found for the identifier passed by the application.

5. The method of claim 4 , further comprising the step of validating, at the virtualization control layer, that the range of virtual memory has the same content as a matched entry in the first mapping structure.

6. The method of claim 5 , further comprising the step of configuring a second mapping structure such that the same portion of the physical memory is used to back the portion of the virtual memory corresponding to the range as is used to back portions of the virtual memory corresponding to the matched entry in the first mapping structure.

7. The method of claim 1 , wherein the range of virtual memory represents at least one virtual memory page.

8. The method of claim 1 , wherein the range of virtual memory is used to store at least one file read into memory.

9. The method of claim 1 , wherein the range of virtual memory is used to store at least one read only program artifact.

10. The method of claim 1 , wherein the virtualization control layer comprises a hypervisor.

11. The method of claim 1 , wherein the virtualization control layer comprises an operating system.

12. The method of claim 1 , wherein the identifier is useable by the virtualization control layer to limit comparison of memory pages to each other to particular memory pages.

13. The method of claim 1 , wherein the identifier is useable by the virtualization control layer to determine that the similar ranges within the virtual memory are likely to occur.

14. The method of claim 1 , further comprising the step of using at the virtualization control layer, based at least in part upon the identifier and the memory address corresponding to the range of virtual memory, delta encoding to reduce redundant information in the physical memory.

15. The method of claim 1 , wherein the delta encoding operates using an offset that represents a difference from a base memory page.

16. The method of claim 15 , wherein redundant information is reduced by de-duplicating a plurality of base memory pages.

17. The method of claim 1 , wherein the identifier passed by the application is selected by the application such that the identifier is the same as an identifier from another process in the guest operating system.

18. The method of claim 1 , further comprising the step of changing a page size of a portion of the physical memory that backs the identified range of virtual memory.

19. The method of claim 18 , wherein the page size of the portion of the physical memory that backs the identified range of virtual memory is reduced.

20. In a computing system comprised of an application executing on top of a virtualization control layer, wherein the virtualization control layer maps portions of a virtual memory to portions of a physical memory, a method for managing memory comprising the steps of:

receiving, at the virtualization control layer from the application, an identifier for a range of virtual memory whose probability of being replicated in the virtual memory exceeds a given threshold and at least one memory address corresponding to the range of virtual memory;

using, by the virtualization control layer, the identifier to identify similar ranges within the virtual memory; and

providing an application programming interface configured to allow the identifier and the range of virtual memory to be passed down from the application to a guest operating system, and from the guest operating system to the virtualization control layer at runtime;

wherein the application executes on the guest operating system, and the guest operating system executes on the virtualization control layer; and

wherein the method further comprises the step of using at the virtualization control layer, based at least in part upon the identifier, delta encoding to reduce redundant information in the physical memory.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: GLOBALFOUNDRIES INC.
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 054633/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2015
From: GLOBALFOUNDRIES U.S. 2 LLC; GLOBALFOUNDRIES U.S. INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 036779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GLOBALFOUNDRIES U.S. 2 LLC
Reel/Frame 036550/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2013
From: DAWSON, MICHAEL H.; IYENGAR, ARUN K.; JOHNSON, GRAEME
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 030338/0020 →
Continuity (1)
Related Publication 20140331016A1 · Nov 6, 2014