IP Library Granted Patent US 8,375,195
Granted Patent B2
US 8,375,195 · App. 12/398,724 · Granted Feb 12, 2013

Accessing memory locations for paged memory objects in an object-addressed memory system

Inventors: Gregory M. Wright (Mountain View, CA); Christopher A. Vick (San Jose, CA); Mario I. Wolczko (San Carlos, CA)
Assignee: Oracle America, Inc.
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,375,195
App. No.
12/398,724
Granted
Feb 12, 2013
Kind
B2
Abstract

One embodiment of the present invention provides a system that accesses memory locations in an object-addressed memory system. During a memory access in the object-addressed memory system, the system receives an object identifier and an address. The system then uses the object identifier to identify a paged memory object associated with the memory access. Next, the system uses the address and a page table associated with the paged memory object to identify a memory page associated with the memory access. After determining the memory page, the system uses the address to access a memory location in the memory page.

Claims (69)

1. A method for accessing memory locations in an object-addressed memory system, comprising:

receiving an object identifier and an address during a memory access in the object-addressed memory system;

using the object identifier to identify a paged memory object associated with the memory access by inverting a kind bit in the object identifier and using the object identifier with the inverted kind bit to access a corresponding small memory object to determine a page table root for the paged memory object associated with the memory access;

using the address and a page table associated with the paged memory object to identify a memory page associated with the memory access; and

using the address to access a memory location in the memory page.

2. The method of claim 1 , wherein one or more fields in the object identifier can be used to specify one or more of the following:

that the object identifier identifies a paged memory object;

that the object identifier identifies an unpaged memory object;

a privilege level associated with the object identified by the object identifier; or a set of permissions associated with the object identified by the object identifier.

3. The method of claim 2 , wherein the method further comprises:

using the object identifier and the paged memory object to define an address space in the object-addressed memory system; and

wherein the address identifies a specific memory location in the address space that will be accessed during the memory access.

4. The method of claim 3 , wherein the method further comprises accessing one or more address spaces in a uniform manner using object identifiers and their associated paged memory objects.

5. The method of claim 4 , wherein the method further comprises:

using object identifiers and paged memory objects to access one or more guest address spaces in a virtual machine; and

wherein using object identifiers and paged memory objects facilitates accessing different address spaces without at least one of allocating and modifying control registers.

6. The method of claim 5 , wherein the method further involves passing references to guest address spaces using object identifiers and paged memory objects.

7. The method of claim 5 , wherein the method further comprises:

receiving object code for a program, wherein the object code is associated with a first hardware implementation;

while translating the object code to execute on a second hardware implementation, identifying the memory access in the object code; and

emitting one or more instructions for the memory access that access the paged memory object in the object-addressed memory system.

8. The method of claim 7 , wherein the object-addressed memory system facilitates accessing memory locations for both paged and unpaged memory objects;

wherein accessing a specific unpaged memory object involves:

determining from a field in the object identifier that the object identifier identifies an unpaged memory object type;

using an object table to determine a specific physical memory address associated with the specific unpaged memory object; and

using the address as an offset to access a memory location relative to the specific physical memory address.

9. The method of claim 7 , wherein translating the object code further comprises:

emitting a first set of instructions in the object code to perform memory accesses using a privileged object identifier; and

emitting a second set of instructions in the object code to perform memory accesses using a second unprivileged object identifier;

wherein a first paged memory object associated with the privileged object identifier and a second paged memory object associated with the second unprivileged object identifier may both refer to a common memory page, but with different privilege levels; and

wherein a uniform addressing mechanism for guest address spaces facilitates cross-privilege and cross-domain inlining for the virtual machine.

10. The method of claim 1 , wherein identifying a memory page associated with the memory access further involves:

accessing a translation lookaside buffer to determine a physical memory page for the memory access; and

wherein the translation lookaside buffer uses data in the object identifier and the memory address to determine the page table entry associated with the object identifier and/or the physical memory page for the memory access.

11. The method of claim 1 ,

wherein an unpaged memory object is limited in size; and

wherein using a paged memory object facilitates object-based addressing for objects larger than the limited size of unpaged memory objects.

12. The method of claim 1 , wherein the page table root for a paged memory object is stored in a corresponding small memory object that has a same object identifier as the paged memory object, but an inverted kind bit.

13. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for accessing memory locations in an object-addressed memory system, the method comprising:

receiving an object identifier and an address during a memory access in the object-addressed memory system;

using the object identifier to identify a paged memory object associated with the memory access by inverting a kind bit in the object identifier and using the object identifier with the inverted kind bit to access a corresponding small memory object to determine a page table root for the paged memory object associated with the memory access;

using the address and a page table associated with the paged memory object to identify a memory page associated with the memory access; and

using the address to access a memory location in the memory page.

14. The computer-readable storage medium of claim 13 , wherein one or more fields in the object identifier can be used to specify one or more of the following:

that the object identifier identifies a paged memory object;

that the object identifier identifies an unpaged memory object;

a privilege level associated with the object identified by the object identifier; or a set of permissions associated with the object identified by the object identifier.

15. The computer-readable storage medium of claim 14 , wherein the method further comprises:

using the object identifier and the paged memory object to define an address space in the object-addressed memory system; and

wherein the address identifies a specific memory location in the address space that will be accessed during the memory access.

16. The computer-readable storage medium of claim 15 , wherein the method further comprises accessing one or more address spaces in a uniform manner using object identifiers and their associated paged memory objects.

17. The computer-readable storage medium of claim 16 , wherein the method further comprises:

using object identifiers and paged memory objects to access one or more guest address spaces in a virtual machine; and

wherein using object identifiers and paged memory objects facilitates accessing different address spaces without at least one of allocating and modifying control registers.

18. The computer-readable storage medium of claim 17 , wherein the method further comprises:

receiving object code for a program, wherein the object code is associated with a first hardware implementation;

while translating the object code to execute on a second hardware implementation, identifying the memory access in the object code; and

emitting one or more instructions for the memory access that access the paged memory object in the object-addressed memory system.

19. The computer-readable storage medium of claim 18 , wherein translating the object code further comprises:

emitting a first set of instructions in the object code to perform memory accesses using a privileged object identifier; and

emitting a second set of instructions in the object code to perform memory accesses using a second unprivileged object identifier;

wherein a first paged memory object associated with the privileged object identifier and a second paged memory object associated with the second unprivileged object identifier may both refer to a common memory page, but with different privilege levels; and

wherein a uniform addressing mechanism for guest address spaces facilitates cross-privilege and cross-domain inlining for the virtual machine.

20. A computing device that includes a processor that facilitates accessing memory locations in an object-addressed memory system, wherein the processor comprises:

a receiving mechanism configured to receive an object identifier and an address during a memory access in the object-addressed memory system;

an identifying mechanism configured to:

use the object identifier to identify a paged memory object associated with the memory access by inverting a kind bit in the object identifier and using the object identifier with the inverted kind bit to access a corresponding small memory object to determine a page table root for the paged memory object associated with the memory access;

use the address and a page table associated with the paged memory object to identify a memory page associated with the memory access; and

an accessing mechanism configured to use the address to access a memory location in the memory page.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2009
From: WRIGHT, GREGORY M.; VICK, CHRISTOPHER A.; WOLCZKO, MARIO I.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 022497/0962 →
Continuity (1)
Related Publication 20100228936A1 · Sep 9, 2010