IP Library Granted Patent US 8,180,981
Granted Patent B2
US 8,180,981 · App. 12/466,643 · Granted May 15, 2012

Cache coherent support for flash in a memory hierarchy

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,180,981
App. No.
12/466,643
Filed
May 15, 2009
Granted
May 15, 2012
Kind
B2
Examiner
PHAM, LY D
Art Unit
2827
USPC
711/159
Abstract

System and method for using flash memory in a memory hierarchy. A computer system includes a processor coupled to a memory hierarchy via a memory controller. The memory hierarchy includes a cache memory, a first memory region of random access memory coupled to the memory controller via a first buffer, and an auxiliary memory region of flash memory coupled to the memory controller via a flash controller. The first buffer and the flash controller are coupled to the memory controller via a single interface. The memory controller receives a request to access a particular page in the first memory region. The processor detects a page fault corresponding to the request and in response, invalidates cache lines in the cache memory that correspond to the particular page, flushes the invalid cache lines, and swaps a page from the auxiliary memory region to the first memory region.

Claims (78)

1. A computer system, comprising:

a processor coupled to a memory hierarchy via a memory controller;

wherein the memory hierarchy includes a first memory region comprising random access memory and an auxiliary memory region comprising flash memory;

wherein the memory controller is coupled to the auxiliary memory region via a flash controller;

wherein in response to detecting a page fault, the processor is configured to swap a page from the auxiliary memory region to the first memory region:

wherein a command sequencer within the processor executes a sequence of micro commands stored in the first memory region to move said data between the auxiliary memory region and the first memory region.

2. The computer system of claim 1 , wherein the first memory region, the auxiliary memory region, and the flash controller comprise a dual-in-line module.

3. The computer system of claim 1 , wherein the processor includes at least two processors that share the first memory region and the auxiliary memory region.

4. A computer system, comprising:

a processor coupled to a memory hierarchy via a memory controller and at least one cache memory;

wherein the memory hierarchy includes a first memory region comprising random access memory and an auxiliary memory region comprising flash memory;

wherein the memory controller is coupled to the auxiliary memory region via a flash controller;

wherein in response to detecting a page fault, the processor is configured to swap a page from the auxiliary memory region to the first memory region;

wherein the processor further comprises a coherence engine configured to:

detect a page fault corresponding to a request, and

in response to detecting the page fault, invalidate one or more cache lines in the at least one cache memory that correspond to the particular page; and

flush the one or more cache lines.

5. The computer system of claim 4 , wherein prior to said move, the coherence engine is configured to flush the one or more cache lines.

6. A computer system, comprising:

a processor coupled to a memory hierarchy via a memory controller and at least one cache memory;

wherein the memory hierarchy includes a first memory region comprising random access memory and an auxiliary memory region comprising flash memory;

wherein the memory controller is coupled to the auxiliary memory region via a flash controller;

wherein in response to detecting a page fault, the processor is configured to swap a page from the auxiliary memory region to the first memory region;

wherein the first memory region and the auxiliary memory region are interconnected through a cache buffer;

wherein to move data from the first memory region to the auxiliary memory region, the processor is configured to:

read data from the first memory region to the cache buffer; and

write data from the cache buffer to the auxiliary memory region; and

wherein to move data from the auxiliary memory region to the first memory region, the processor is configured to:

read data from the auxiliary memory region to the cache buffer; and

write data from the cache buffer to the first memory region.

7. A method, comprising:

receiving a request from a processor to access a particular page in a first memory region of a memory hierarchy, the first memory region comprising random access memory;

detecting a page fault corresponding to the request, and

in response to detecting the page fault, swapping a page to the first memory region from an auxiliary memory region of the memory hierarchy, the auxiliary region comprising flash memory;

wherein swapping a page further comprises a command sequencer within the processor moving data between the auxiliary memory region and the first memory region, wherein moving data between the auxiliary memory region and the first memory region comprises executing a sequence of micro commands that are stored in the first memory region.

8. The method of claim 7 , wherein the first memory region, the auxiliary memory region, and the flash controller comprise a dual-in-line module.

9. The method of claim 7 , further comprising sharing the first memory region and the auxiliary memory region with at least two processors.

10. A method, comprising:

receiving a request from a processor to access a particular page in a first memory region of a memory hierarchy, the first memory region comprising random access memory;

detecting a page fault corresponding to the request, and

in response to detecting the page fault, swapping a page to the first memory region from an auxiliary memory region of the memory hierarchy, the auxiliary region comprising flash memory;

wherein the processor includes at least one cache memory and the method in response to detecting the page fault, includes invalidating one or more cache lines in the at least one cache memory that correspond to the particular page; and flushing the one or more cache lines.

11. The method of claim 10 , wherein the one or more cache lines are flushed prior to moving data between the auxiliary memory region and the first memory region.

12. A method, comprising:

receiving a request from a processor to access a particular page in a first memory region of a memory hierarchy, the first memory region comprising random access memory;

detecting a page fault corresponding to the request, and

in response to detecting the page fault, swapping a page to the first memory region from an auxiliary memory region of the memory hierarchy, the auxiliary region comprising flash memory;

wherein the first memory region and the auxiliary memory region are interconnected through a cache buffer;

wherein moving data from the first memory region to the auxiliary memory region further comprises:

reading data from the first memory region to the cache buffer; and

writing data from the cache buffer to the auxiliary memory region; and

wherein moving data from the auxiliary memory region to the first memory region further comprises:

reading data from the auxiliary memory region to the cache buffer; and

writing data from the cache buffer to the first memory region.

13. A computer-readable storage medium containing instructions that, when executed, enable a memory controller to:

receive a request from a processor to access a particular page in a first memory region of a memory hierarchy, the first memory region comprising random access memory;

detect a page fault corresponding to the request;

in response to detecting the page fault, swap a page to the first memory region from an auxiliary memory region of the memory hierarchy, the auxiliary region comprising flash memory; and

cause a command sequencer within the processor to execute a sequence of micro commands stored in the first memory region to swap the page.

14. A computer-readable storage medium containing instructions that, when executed, enable a memory controller to:

receive a request from a processor to access a particular page in a first memory region of a memory hierarchy, the first memory region comprising random access memory;

detect a page fault corresponding to the request; and

in response to detecting the page fault, swap a page to the first memory region from an auxiliary memory region of the memory hierarchy, the auxiliary region comprising flash memory;

wherein the processor includes at least one cache memory and the instructions are further executable by a coherence engine within the processor to:

detect a page fault corresponding to the request;

in response to detecting the page fault, invalidate one or more cache lines in the at least one cache memory that correspond to the particular page; and

flush the one or more cache lines.

15. A computer-readable storage medium containing instructions that, when executed, enable a memory controller to:

receive a request from a processor to access a particular page in a first memory region of a memory hierarchy, the first memory region comprising random access memory;

detect a page fault corresponding to the request; and

in response to detecting the page fault, swap a page to the first memory region from an auxiliary memory region of the memory hierarchy, the auxiliary region comprising flash memory;

wherein the first memory region and the auxiliary memory region are interconnected through a cache buffer;

wherein moving data from the first memory region to the auxiliary memory region further comprises:

reading data from the first memory region to the cache buffer; and

writing data from the cache buffer to the auxiliary memory region; and

wherein moving data from the auxiliary memory region to the first memory region further comprises:

reading data from the auxiliary memory region to the cache buffer; and

writing data from the cache buffer to the first memory region.

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/0171 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2009
From: KAPIL, SANJIV; HETHERINGTON, RICKY C.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 022690/0347 →
Continuity (1)
Related Publication 20100293420A1 · Nov 18, 2010