IP Library Granted Patent US 8,464,009
Granted Patent B2
US 8,464,009 · App. 12/133,070 · Granted Jun 11, 2013

Method for memory interleave support with a ceiling mask

Inventors: Ramaswamy Sivaramakrishnan (San Jose, CA); Connie Cheung (Sunnyvale, CA); William Bryg (Saratoga, 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,464,009
App. No.
12/133,070
Granted
Jun 11, 2013
Kind
B2
Abstract

A distributed shared memory multiprocessor system that supports both fine- and coarse- grained interleaving of the shared memory address space. A ceiling mask sets a boundary between the fine-grain interleaved and coarse-grain interleaved memory regions of the distributed shared memory. A method for satisfying a memory access request in a distributed shared memory subsystem of a multiprocessor system having both fine- and coarse-grain interleaved memory segments. Certain low or high order address bits, depending on whether the memory segment is fine- or coarse-grain interleaved, respectively, are used to determine if the memory address is local to a processor node. A method for setting the ceiling mask of a distributed shared memory multiprocessor system to optimize performance of a first application run on a single node and performance of a second application run on a plurality of nodes.

Claims (46)

1. A method for accessing a distributed shared memory in a multiprocessor system, the method comprising:

obtaining a first memory requirement for a first application to be run on a single node of a plurality of nodes of the multiprocessor system;

setting a coarse-grain interleave block size based, at least in part, on the first memory requirement;

in a distributed shared memory, allocating a first shared memory space with a fine- grain interleave block size and a second shared memory space with the coarse-grain interleave block size, wherein the fine-grain interleave memory block size is equal to a level two cache line size multiplied by a number of level two cache banks;

receiving a memory access request, the memory access request including a physical memory address;

comparing the physical memory address to a memory address stored in a ceiling mask register; and

accessing the first shared memory space in the event that the physical memory address is less than the memory address stored in the ceiling mask register and accessing the second shared memory space in the event that the physical memory address is greater than or equal to the memory address stored in the ceiling mask register,

obtaining a second memory requirement for a second application to be run on the plurality of nodes; and

setting the coarse-grain interleave block size based, at least in part, on the second memory requirement;

wherein the operation of obtaining the first memory requirement comprises setting the first memory requirement to a largest of a plurality of memory requirements associated with applications to be run on the single node; and

wherein the operation of obtaining the second memory requirement comprises setting the second memory requirement to a largest of a second plurality of memory requirements associated with applications to be run on the plurality of nodes.

2. The method of claim 1 , further comprising:

in the event that the physical memory address is less than the memory address stored in the ceiling mask register, using one or more low order physical memory address bits of the physical memory address to identify a memory agent node of a plurality of nodes of the distributed shared memory multiprocessor system.

3. The method of claim 1 , further comprising:

in the event that the physical memory address is greater than or equal to the memory address stored in the ceiling mask register, using one or more high order memory address bits to identify a memory agent node of a plurality of nodes of the distributed shared memory multiprocessor system.

4. The method of claim 1 , wherein the ceiling mask register comprises a certain number of most significant memory address bits.

5. A method for programming a ceiling mask register in a distributed shared memory multiprocessor system, the method comprising:

obtaining a first memory requirement for a first application to be run on a single node of a plurality of nodes of the multiprocessor system;

setting a coarse-grain interleave block size based, at least in part, on the first memory requirement;

allocating a first portion of a distributed shared memory as a fine-grain interleaved shared memory space with a first block size equal to a fine-grain interleave block size and a second portion of the distributed shared memory as a coarse-grain interleaved shared memory space with a block size equal to the coarse-grain interleave block size, wherein the fine-grain interleave memory block size is equal to a level two cache line size multiplied by a number of level two cache banks;

establishing a ceiling mask register at a value equal to the coarse-grain interleave block size times a quantity of the plurality of nodes, such that memory addresses less than the ceiling mask access the first portion of the distributed shared memory and memory addresses greater than or equal to the ceiling mask access the second portion of the distributed shared memory;

obtaining a second memory requirement for a second application to be run on the plurality of nodes; and

setting the coarse-grain interleave block size based, at least in part, on the second memory requirement;

wherein the operation of obtaining the first memory requirement comprises setting the first memory requirement to a largest of a plurality of memory requirements associated with applications to be run on the single node; and

wherein the operation of obtaining the second memory requirement comprises setting the second memory requirement to a largest of a second plurality of memory requirements associated with applications to be run on the plurality of nodes.

6. The method of claim 5 , wherein the first memory requirement is rounded up to the nearest one gigabyte.

7. A distributed shared memory multiprocessor system, comprising:

a plurality of nodes, each node comprising:

a processor;

a memory configured as a local memory of the node and further configured to have a plurality of physical memory address ranges, each address range comprising a unique physical address range of a distributed shared memory system;

a ceiling mask register; and

wherein the distributed shared memory system comprises:

a first memory space distributed across the plurality of nodes with a fine-grain interleave block size, wherein the fine-grain interleave memory block size is equal to a level two cache line size multiplied by a number of level two cache banks; and

a second memory space distributed across the plurality of nodes with a coarse-grain interleave block size, the course-grain interleave block size based, at least in part, on a first memory requirement for a first application to be run on a single node of the plurality of nodes, wherein the first memory requirement is a largest of a plurality of memory requirements associated with applications to be run on the single node;

wherein the ceiling mask register is configured to indicate a boundary separating the first memory space and the second memory space, such that memory addresses less than the ceiling mask access the first memory space and memory addresses greater than or equal to the ceiling mask access the second memory space; and

wherein the processor is configured to obtain a second memory requirement for a second application to be run on the plurality of nodes and set the coarse-grain interleave block size based, at least in part, on the second memory requirement, wherein the second memory requirement is a largest of a second plurality of memory requirements associated with applications to be run on the plurality of nodes.

8. The distributed shared memory multiprocessor system of claim 7 , wherein the processor is a chip multiprocessor comprising:

a plurality of processor cores, each processor core having a level one cache;

a cross bar switch in electrical communication with each one of the plurality of processor cores; and

a shared level two cache configured to receive a memory access request from the crossbar switch.

9. The method of claim 8 , wherein the level two cache is further configured to compare the access request address with the boundary.

10. The distributed shared memory multiprocessor system of claim 7 , wherein the ceiling mask register is programmed with a distributed shared memory address below which the distributed shared memory is fine-grain interleaved.

11. The distributed shared memory multiprocessor system of claim 7 , wherein the fine-grain interleave block size is 512 bytes.

12. The distributed shared memory multiprocessor system of claim 7 , wherein the coarse-grain interleave block size is one gigabyte.

13. The distributed shared memory multiprocessor system of claim 7 , wherein a size of the first memory space is equal to the coarse-grain interleave block size times a number of nodes in the plurality of nodes.

14. The distributed shared memory multiprocessor system of claim 7 , wherein the ceiling mask register comprises a plurality of high order memory address bits.

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/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2008
From: SIVARAMAKRISHNAN, RAMASWAMY; CHEUNG, CONNIE; BRYG, WILLIAM
To: SUN MICROSYSTEMS, INC.
Reel/Frame 021045/0484 →
Continuity (1)
Related Publication 20090307434A1 · Dec 10, 2009