IP Library › Granted Patent US 7,219,210
Granted Patent B2
US 7,219,210 · App. 10/812,773 · Granted May 15, 2007

Memory allocation to multiple computing units

Assignee: International Business Machines Corporation
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,219,210
App. No.
10/812,773
Granted
May 15, 2007
Kind
B2
Abstract

Memory allocation to multiple computing units is disclosed. A static offset for each computing unit is determined, and a portion of memory is allocated for each computing unit, and remapped into a contiguous logical region that is addressable by a pointer plus the static offset. The portion of the memory is dynamically passed out to each computing unit as the computing units need memory. Upon the initial contiguous memory being completely passed out to the computing units, a number of physically non-contiguous sections of memory are mapped into another logically contiguous section of memory. A portion of this logically contiguous section of memory is allocated for each computing unit, and is addressable by a pointer plus the static offset that was previously determined. The portion of the logically contiguous section of memory can be dynamically passed out to each computing unit as the computing units need memory.

Claims (86)

1. A method comprising:

mapping a plurality of physically non-contiguous sections of memory into a logically contiguous section of memory;

for each computing unit of a plurality of computing units, allocating a portion of the logically contiguous section of memory addressable by a pointer plus a static offset corresponding to the computing unit,

wherein the static offset for each computing unit is equal to a static offset initially determined at initial allocation of memory for the plurality of computing units;

dynamically passing out the portion of the logically contiguous section of memory to each computing unit of the plurality of computing units as the computing units need additional memory;

upon the logically contiguous section of memory being completely passed out to the plurality of computing units,

mapping a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each computing unit of the plurality of computing units, allocating a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the computing unit; and,

dynamically passing out the portion of the second logically contiguous section of memory to each computing unit of the plurality of computing units as the computing units need additional memory.

2. The method of claim 1 , wherein the portion of the logically contiguous section of memory allocated for each computing unit includes memory local to the computing unit.

3. The method of claim 1 , further comprising determining the static offset for each computing unit as equal to the static offset initially determined at the initial allocation of the memory for the plurality of computing units.

4. The method of claim 1 , further comprising at the initial allocation of the memory for the plurality of computing units:

determining the static offset for each computing unit of the plurality of computing units; and,

for each computing unit of the plurality of computing units, allocating a portion of memory addressable by a pointer plus the static offset corresponding to the computing unit.

5. The method of claim 4 , further comprising dynamically passing out the portion of the memory to each computing unit of the plurality of computing units as the computing units need additional memory.

6. The method of claim 1 , wherein the computing unit is one of a computing node and a processor.

7. A method comprising:

determining a static offset for each computing unit of a plurality of computing units;

for each computing unit of the plurality of computing units, allocating a portion of predetermined memory addressable by a pointer plus the static offset corresponding to the computing unit;

dynamically passing out the portion of the predetermined memory to each computing unit of the plurality of computing units as the computing units need additional memory;

upon the predetermined memory being completely passed out to the plurality of computing units,

mapping a plurality of physically non-contiguous sections of additional memory into a logically contiguous section of memory;

for each computing unit of the plurality of computing units, allocating a portion of the logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the computing unit, where the portion of the logically contiguous section of memory is local to the computing unit; and,

dynamically passing out the portion of the logically contiguous section of memory to each computing unit of the plurality of computing units as the computing units need additional memory.

8. The method of claim 7 , further comprising, upon the logically contiguous section of memory being completely passed out to the plurality of computing units,

mapping a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each computing unit of the plurality of computing units, allocation a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the computing unit, wherein the portion of the second logically contiguous section of memory is local to the computing unit; and,

dynamically passing out the portion of the second logically contiguous section of memory to each computing unit of the plurality of computing units as the computing units needs additional memory.

9. A system comprising:

a plurality of computing nodes;

memory shared by the plurality of computing nodes; and,

an allocating mechanism to map a plurality of physically non-contiguous sections of memory into a logically contiguous section of memory and to allocate a portion of the logically contiguous section of memory to each computing node,

wherein the portion of the logically contiguous section of memory is addressable by a pointer plus a static offset corresponding to the computing node and equal to a static offset initially determined for allocating a portion of memory to each computing node and

wherein the allocating mechanism is further to

dynamically pass out the portion of the logically contiguous section of memory to each computing node of the plurality of computing units as the computing nodes need additional memory:

upon the logically contiguous section of memory being completely passed out to the plurality of computing nodes,

map a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each computing node of the plurality of computing nodes, allocate a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the computing node; and,

dynamically pass out the portion of the second logically contiguous section of memory to each computing node of the plurality of computing units as the computing nodes need additional memory.

10. The system of claim 9 , wherein the portion of the logically contiguous section of memory allocated to each computing node includes memory local to the computing node.

11. The system of claim 9 , wherein each of the plurality of computing nodes comprises a single processor.

12. The system of claim 9 , wherein each of the plurality of computing nodes comprises a plurality of processors.

13. A system comprising:

a plurality of computing nodes;

memory shared by the plurality of computing nodes; and,

means for mapping a plurality of physically non-contiguous sections of memory into a logically contiguous section of memory and for allocating a portion of the logically contiguous section of memory to each computing node,

wherein the portion of the logically contiguous section of memory is addressable by a pointer plus a static offset corresponding to the computing node and equal to a static offset for allocating a portion of memory to each computing node, and

wherein the means is further for

dynamically passing out the portion of the logically contiguous section of memory to each computing node of the plurality of computing units as the computing nodes need additional memory;

upon the logically contiguous section of memory being completely passed out to the plurality of computing nodes,

mapping a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each computing node of the plurality of computing nodes, allocating a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the computing node; and,

dynamically passing out the portion of the second logically contiguous section of memory to each computing node of the plurality of computing units as the computing nodes need additional memory.

14. A computing node comprising:

a plurality of processors;

memory shared by the plurality of processors; and,

an allocating mechanism to map a plurality of physically non-contiguous sections of memory into a logically contiguous section of memory and to allocate a portion of the logically contiguous section of memory to each processor,

wherein the portion of the logically contiguous section of memory is addressable by a pointer plus a static offset corresponding to the processor and equal to a static offset initially determined for allocating a portion of memory to each processor, and

wherein the allocating mechanism is further to

dynamically pass out the portion of the logically contiguous section of memory to each processor of the plurality of computing units as the processors need additional memory:

upon the logically contiguous section of memory being completely passed out to the plurality of processors,

map a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each processor of the plurality of processors, allocate a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the processor; and,

dynamically pass out the portion of the second logically contiguous section of memory to each processor of the plurality of computing units as the processors need additional memory.

15. The computing node of claim 14 , wherein the portion of the logically contiguous section of memory allocated to each processor is local to the processor.

16. A computing node comprising:

a plurality of processors;

memory shared by the plurality of processors; and,

means for mapping a plurality of physically non-contiguous sections of memory into a logically contiguous section of memory and for allocating a portion of the logically contiguous section of memory to each processor,

wherein the portion of the logically contiguous section of memory is addressable by a pointer plus a static offset corresponding to the processor and equal to a static offset for allocating a portion of memory to each processor, and

wherein the means is further for

dynamically passing out the portion of the logically contiguous section of memory to each processor of the plurality of computing units as the processors need additional memory;

upon the logically contiguous section of memory being completely passed out to the plurality of processors,

mapping a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each processor of the plurality of processors, allocating a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the processor; and,

dynamically passing out the portion of the second logically contiguous section of memory to each processor of the plurality of computing units as the processors need additional memory.

17. An article of manufacture comprising:

a computer-readable medium; and,

means in the medium for mapping a plurality of physically non-contiguous sections of memory into a logically contiguous section of memory and for allocating a portion of the logically contiguous section of memory to each computing unit of a plurality of computing units,

wherein the portion of the logically contiguous section of memory is addressable by a pointer plus a static offset corresponding to the computing unit and equal to a static offset initially determined at boot time of the plurality of computing units for allocating a portion of memory to each computing unit, and

wherein the means is further for

dynamically passing out the portion of the logically contiguous section of memory to each computing unit of the plurality of computing units as the computing units need additional memory;

upon the logically contiguous section of memory being completely passed out to the plurality of computing units,

mapping a second plurality of physically non-contiguous sections of memory into a second logically contiguous section of memory;

for each computing unit of the plurality of computing units, allocating a portion of the second logically contiguous section of memory addressable by a pointer plus the static offset corresponding to the computing unit; and,

dynamically passing out the portion of the second logically contiguous section of memory to each computing unit of the plurality of computing units as the computing units need additional memory.

Assignments (3)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044127/0735 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2011
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GOOGLE INC.
Reel/Frame 026664/0866 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2004
From: RUSSELL, PAUL F.; MACKERRAS, PAUL
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 014557/0551 →
Continuity (1)
Related Publication 20050223184A1 · Oct 6, 2005