IP Library Granted Patent US 7,596,677
Granted Patent B1
US 7,596,677 · App. 11/671,551 · Granted Sep 29, 2009

Paging cache optimization for virtual machine

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 7,596,677
App. No.
11/671,551
Granted
Sep 29, 2009
Kind
B1
Abstract

A system, method and computer program product for virtualizing a processor include a virtualization system running on a computer system and controlling memory paging through hardware support for maintaining real paging structures. A Virtual Machine (VM) is running guest code and has at least one set of guest paging structures that correspond to guest physical pages in guest virtualized linear address space. At least some of the guest paging structures are mapped to the real paging structures. For each guest physical page that is mapped to the real paging structures, paging means for handling a connection structure between the guest physical page and a real physical address of the guest physical page. A cache of connection structures represents cached paths to the real paging structures. Each path is described by guest paging structure descriptors and by tie descriptors. Each path includes a plurality of nodes connected by the tie descriptors. Each guest paging structure descriptor is in a node of at least one path. Each guest paging structure either points to other guest paging structures or to guest physical pages. Each guest paging structure descriptor represents guest paging structure information for mapping guest physical pages to the real paging structures.

Claims (45)

1. A system for virtualizing a processor, comprising:

a virtualization system running on a computer system and controlling memory paging through hardware support for maintaining real paging structures;

a Virtual Machine (VM) running guest code and having at least one set of guest paging structures that correspond to guest physical pages in guest virtualized linear address space,

wherein at least some of the guest paging structures are mapped to the real paging structures;

for each guest physical page that is mapped to the real paging structures, means for handling a connection structure between the guest physical page and a real physical address of the guest physical page;

a cache of connection structures representing cached paths to the real paging structures;

each path being described by guest paging structure descriptors and by tie descriptors; and

each path comprising a plurality of nodes connected by the tie descriptors,

wherein each guest paging structure descriptor is in a node of at least one path,

wherein each guest paging structure either points to other guest paging structures or to guest physical pages, and

wherein each guest paging structure descriptor represents guest paging structure information for mapping guest physical pages to the real paging structures.

2. The system of claim 1 , wherein the guest paging structures and the real paging structures are organized into a hierarchy of layers.

3. The system of claim 2 , further comprising an additional layer that utilizes a CR3 cache for caching of paging translations for different values of CR3.

4. The system of claim 3 , wherein additional layers of the caching structure are added to describe different guest OS code working modes.

5. The system of claim 4 , wherein guest OS code working modes includes paged and non-paged modes.

6. The system of claim 4 , wherein each guest paging structure descriptor maintains links to at least one real paging structure to organize guest physical page mapping to the real paging structures.

7. The system of claim 6 , wherein guest OS paging mode and virtualization system paging mode are different.

8. The system of claim 2 , wherein the layers comprise a zeroth layer with pages, a first layer with page tables, and a second layer with page directories.

9. The system of claim 2 , wherein each layer has its own set of tie descriptors.

10. The system of claim 9 , further comprising a third layer with page directory page tables, and a fourth layer with PML4 tables.

11. The system of claim 2 , wherein the VM uses one of standard, PAE and EM64T addressing modes, and the VMM uses an addressing mode at least as high as the VM addressing mode.

12. The system of claim 2 , further comprising an additional higher layer for caching of multiple sets of paging caches.

13. The system of claim 1 , wherein the tie descriptors include pointers to other tie descriptors of the same layer.

14. The system of claim 1 , wherein the tie descriptors include pointers to paging elements of the next layer below.

15. The system of claim 1 , wherein the tie descriptors include pointers to paging elements of the next layer above.

16. A method for virtualizing a processor, comprising:

initiating a virtualization system running on a computer system and controlling memory paging through hardware support for maintaining real paging structures;

launching a Virtual Machine (VM) running guest code and having at least one set of guest paging structures that correspond to guest physical pages in guest virtualized linear address space,

wherein at least some of the guest paging structures are mapped to the real paging structures;

for each guest physical page that is mapped to the real paging structures, activating means for handling a connection structure between the guest physical page and a real physical address of the guest physical page;

generating a cache of connection structures representing cached paths to the real paging structures, each path being described by guest paging structure descriptors and by tie descriptors, and each path comprising a plurality of nodes connected by the tie descriptors,

wherein each guest paging structure descriptor is in a node of at least one path,

wherein each guest paging structure either points to other guest paging structures or to guest physical pages, and

wherein each guest paging structure descriptor represents guest paging structure information for mapping guest physical pages to the real paging structures.

17. The method of claim 16 , further comprising, when a physical page that is reflected in the guest paging structures is removed from mapping paths, using the tie descriptors to update the VMM paging structures.

18. The method of claim 16 , further comprising, when a physical page that is reflected in the guest paging structures is added to paging structures, using the tie descriptors to update the VMM paging structures.

19. A computer useable storage medium having computer program logic stored thereon for executing on a processor for virtualizing a processor, the computer program logic comprising:

computer program code means for initiating a virtualization system running on a computer system and controlling memory paging through hardware support for maintaining real paging structures;

computer program code means for launching a Virtual Machine (VM) running guest code and having at least one set of guest paging structures that correspond to guest physical pages in guest virtualized linear address space,

wherein at least some of the guest paging structures are mapped to the real paging structures;

for each guest physical page that is mapped to the real paging structures, computer program code means for activating and handling a connection structure between the guest physical page and a real physical address of the guest physical page;

computer program code means for generating a cache of connection structures representing cached paths to the real paging structures, each path being described by guest paging structure descriptors and by tie descriptors, and each path comprising a plurality of nodes connected by the tie descriptors,

wherein each guest paging structure descriptor is in a node of at least one path,

wherein each guest paging structure either points to other guest paging structures or to guest physical pages, and

wherein each guest paging structure descriptor represents guest paging structure information for mapping guest physical pages to the real paging structures.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Jul 18, 2019
From: UBS AG, STAMFORD BRANCH, AS ADMINISTRATIVE AND COLLATERAL AGENT
To: COREL CORPORATION; CLEARSLIDE, INC.; PARALLELS INTERNATIONAL GMBH
Reel/Frame 049787/0073 →
RELEASE OF SECURITY INTEREST RECORDED AT : REEL 047973 FRAME 0797 Recorded Jul 17, 2019
From: UBS AG, STAMFORD BRANCH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 049773/0590 →
SECURITY INTEREST Recorded Dec 21, 2018
From: PARALLELS INTERNATIONAL GMBH
To: UBS AG, STAMFORD BRANCH
Reel/Frame 047973/0797 →
MERGER Recorded Mar 6, 2018
From: PARALLELS IP HOLDINGS GMBH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 045122/0592 →
RELEASE OF SECURITY INTEREST Recorded Dec 14, 2015
From: SILICON VALLEY BANK
To: PARALLELS HOLDINGS LTD. (F/K/A SWSOFT HOLDINGS LTD.)
Reel/Frame 037289/0685 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2012
From: PARALLELS HOLDINGS, LTD.
To: PARALLELS IP HOLDINGS GMBH
Reel/Frame 027595/0187 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2011
From: PARALLELS SOFTWARE INTERNATIONAL, INC.
To: PARALLELS HOLDINGS, LTD.
Reel/Frame 027467/0328 →
SECURITY AGREEMENT Recorded Jun 23, 2011
From: PARALLELS HOLDINGS LTD. (F/K/A SWSOFT HOLDINGS LTD.)
To: SILICON VALLEY BANK
Reel/Frame 026480/0957 →
SECURITY AGREEMENT Recorded Apr 3, 2010
From: PARALLELS HOLDINGS, LTD.
To: SILICON VALLEY BANK
Reel/Frame 024170/0853 →
CORRECTIVE ASSIGNMENT TO CORRECT APPLICATION NUMBER 11/651,551, PREVIOUSLY RECORDED ON REEL 020154 FRAME 0915. Recorded Aug 13, 2009
From: PARALLELS SOFTWARE INTERNATIONAL, INC.
To: SILICON VALLEY BANK
Reel/Frame 023083/0846 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2007
From: KORYAKIN, ALEXEY B.; ERSHOV, MIKHAIL A.; DOBROVOLSKIY, NIKOLAY N.; OMELYANCHUK, ANDREY A.; TORMASOV, ALEXANDER G.; BELOUSSOV, SERGUEI M.
To: PARALLELS SOFTWARE INTERNATIONAL, INC.
Reel/Frame 018856/0810 →