IP Library › Patent Application 12775640
Patent Application
App. No. 12/775,640

Addressing for Huge Direct-Mapped Object Systems

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 None
App. No.
12/775,640
Abstract

A method, computing system, and computer program product are provided for quickly and space-efficiently mapping an object's address to its home node in a computing system with a very large (possibly multi-petabyte) data set. The addresses of objects comprise three fields: a chunk number, a region sub-index within the chunk, and an offset within the region, with chunks being used to achieve good compromise between small lookup tables and reducing waste of usable virtual address space.

Claims (38)

1 . A method of mapping a memory address to a node in a computing system, comprising:

dividing part of the address space of the computing system into a plurality of regions, the size of each region in bytes being two raised to an integer power not less than 14, the regions being grouped into chunks, each chunk comprising the same number of regions, the number being two raised to an integer power not less than 5;

constructing, by a processor, a plurality of 64-bit pointers to objects, the pointers comprising a plurality of bits indicating the chunk number and a plurality of bits indicating the sub-index of the region in which the corresponding object resides;

computing, by a processor, a chunk number from a pointer based on the bits therein indicating a chunk number; and

looking up, by a processor, a home node for the memory location identified by the pointer using the chunk number.

2 . The method of claim 1 , wherein the pointers can be used for accessing objects in the region cache using normal processor memory access instructions using the pointer as a virtual memory address either directly or after masking away tag bits.

3 . The method of claim 1 , wherein each region is garbage collectible independently of other regions, except for a relatively small set of regions not exceeding 10% of all regions actually in use.

4 . The method of claim 1 , wherein regions are grouped into collection units without requiring regions in a collection unit to be consecutive, and each collection unit being garbage collectable independently of other collection units, except for a relatively small set of regions not exceeding 10% of all regions actually in use.

5 . The method of claim 1 , wherein more than one chunk number maps to the same home node.

6 . The method of claim 1 , wherein the home node refers to more than one but less than 32 nodes that act as a fault-tolerant sub-group, such that data within the fault-tolerant sub-group can be recovered even if one node within the group becomes unavailable.

7 . The method of claim 1 , wherein the chunk number is computed substantially using a formula selected from the group consisting of:

“chunknum=addr>>shiftcount”;

“chunknum=(addr−base)>>shiftcount”;

“chunknum=(addr>>shiftcount)&mask”;

“chunknum=((addr−base)>>shiftcount)&mask”;

“chunknum=((addr&mask2)>>shiftcount”; and

“chunknum=((addr−base)&mask2)>>shiftcount”.

8 . The method of claim 1 , wherein the looking up comprises indexing a chunk table by the chunk number.

9 . The method of claim 1 , further comprising initializing a chunk table, the initializing comprising requesting a full table from another node if the node cannot bring its chunk table up to date based on local information and a delta received from another node.

10 . The method of claim 1 , further comprising, in at least one node in the computing system:

receiving an allocation request for one or more chunk numbers from another node;

allocating the requested chunk numbers;

performing phase 1 commit within a group of nodes managing chunk numbers as a fault-tolerant sub-group;

upon the phase 1 commit failing on at least one node, repeating the allocating and phase 1 commit steps;

upon the phase 1 commit succeeding, recording that it succeeded and performing phase 2 commit within the group of nodes managing chunk numbers; and

sending a delta to a plurality of nodes to update their chunk tables to reflect that the allocated chunk numbers are associated with the other node.

11 . A computing system comprising:

a plurality of nodes, each node comprising at least one processor and a memory, the nodes connected to each other by a network, a plurality of the nodes having a part of their virtual address space divided into a plurality of regions, the size of each region in bytes being two raised to an integer power not less than 14, the regions being grouped into chunks, each chunk comprising the same number of regions, the number being two raised to an integer power not less than 5;

a plurality of 64-bit pointers comprising a plurality of bits indicating a chunk number and a plurality of bits indicating the sub-index of the region in which the corresponding object resides within the corresponding chunk;

an address-to-node mapper configured to compute a chunk number from a pointer based on the bits therein indicating a chunk number and look up a home node for the memory location identified by the pointer from a chunk table using the chunk number.

12 . The computing system of claim 11 , further comprising a chunk allocator connected to the chunk table configured to allocate chunk numbers and update the chunk table on a plurality of nodes to indicate that the allocated chunk numbers are associated with their new home node.

13 . The computing system of claim 11 , further comprising a delta processor connected to the chunk table, configured to update the chunk table based on updates received from other nodes.

14 . The computing system of claim 11 , further comprising a chunk table initializer connected to the chunk table, the initializer configured to initialize the chunk table, in at least one case requesting the chunk table from another node in the computing system.

15 . A computer program product stored on tangible computer-readable medium comprising computer-readable program code means embodied therein operable to cause a computer to:

divide part of the address space of the computing system into a plurality of regions, the size of each region in bytes being two raised to an integer power not less than 14, the regions being grouped into chunks, each chunk comprising the same number of regions, the number being two raised to a power not less than 5;

construct a plurality of 64-bit pointers to objects, the pointers comprising a plurality of bits indicating the chunk number and a plurality of bits indicating the sub-index of the region in which the corresponding object resides within the corresponding chunk;

compute a chunk number from a pointer based on the bits therein indicating a chunk number; and

look up a home node for the memory location identified by the pointer using the chunk number.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2012
From: TATU YLONEN OY
To: CLAUSAL COMPUTING OY
Reel/Frame 028391/0707 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2012
From: YLONEN, TATU J.
To: TATU YLONEN OY
Reel/Frame 028300/0717 →