IP Library › Granted Patent US 7,512,747
Granted Patent B2
US 7,512,747 · App. 11/404,966 · Granted Mar 31, 2009

Method and apparatus for efficiently supporting multiple one-time table access operations in a hierarchical memory setting

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,512,747
App. No.
11/404,966
Granted
Mar 31, 2009
Kind
B2
Abstract

An embodiment of the present invention provides a computer system including a first memory and a second memory, where the first memory is substantially faster than the second memory. A method includes steps of: inspecting a request queue for block requests from a plurality of concurrent calling processes, the request queue including a plurality of block requests not yet processed by any of the plurality of concurrent calling processes; retrieving one of the plurality of block requests, wherein each block is accessed at most once by each calling process; determining whether the retrieved block request can be fulfilled from the first memory; and returning the retrieved block to the calling process whose state indicates that the block is needed if the retrieved block request can be fulfilled from the first memory.

Claims (45)

1. In a computer system comprising a first memory and a second memory, wherein the first memory is substantially faster than the second memory, a method comprising:

inspecting a request queue for block requests from a plurality of concurrent calling processes, the request queue comprising a plurality of block requests not yet processed by any of the plurality of concurrent calling processes, wherein each block request calls for a block of data and wherein each block is accessed at most one time by the concurrent calling processes;

retrieving one of the plurality of block requests;

determining whether the retrieved block request can be fulfilled with a block from the first memory; and

if it is determined that the retrieved block request can be fulfilled with the block from the first memory:

retrieving the block from the first memory; and

returning the retrieved block to the calling process whose state indicates that the block is needed if the retrieved block request can be fulfilled from the first memory.

2. The method of claim 1 wherein the method is iteratively performed until all block requests are processed.

3. The method of claim 2 , wherein, if the retrieved block request cannot be fulfilled from the first memory, the method further comprises steps of:

determining which block to swap from the second memory to the first memory;

selecting the block to swap from the second memory;

loading the selected block into the first memory; and

returning the loaded block to the calling process whose state indicates that the loaded block is needed.

4. The method of claim 3 further comprising a step of discarding after the selecting step, wherein the discarding step comprises:

determining whether there is enough space in the first memory to the load the block from the second memory; and

discarding a block from the first memory if there is not enough space in the first memory.

5. The method of claim 2 further comprising a step of forwarding the block requests to a swap queue of a separate swap process if the block requests cannot be fulfilled from the first memory.

6. The method of claim 5 wherein if the block cannot be returned to the separate swap process, the method comprises a step of routing an oldest block request in the request queue to the swap queue for routing to the separate swap process.

7. The method of claim 5 wherein the separate swap process continuously inspects the swap queue to determine which block to bring into the first memory.

8. A computer system comprising:

a storage system comprising a plurality of storage layers comprising a slow storage layer and a fast storage layer;

an interface that receives block requests from scan processes;

a request queue for serializing the block requests; and

a request handler processor that:

inspects the request queue for block requests from the scan processes, the request queue comprising a plurality of block requests not yet processed by any of the scan processes, wherein each block request calls for a block of data and wherein each block of data is accessed at most one time by the scan processes;

retrieving one of the plurality of block requests;

determining whether the retrieved block request can be fulfilled with a block of data from the fast storage layer; and

if it is determined that the retrieved block request can be fulfilled with the block of data from the fast storage layer:

retrieving the block of data from the fast storage layer; and

returning the retrieved block to the scan process whose state indicates that the block is needed if the retrieved block request can be fulfilled from the fast storage layer; and

if it is determined that the block of data called for in the retrieved block request is not available in the fast storage layer:

the request handler processor further:

determines which block of data to swap from the slow storage layer into the fast storage layer;

selects the block to swap from the slow storage layer;

determines whether there is enough space in the fast storage layer to load the selected block from the slow storage layer;

discards a block from the fast storage layer if there is not enough space in the fast storage layer;

loads the selected block into the fast storage layer; and

returns the loaded block to the calling process whose state indicates that the loaded block is needed.

9. A computer-readable medium comprising code that, when executed, causes a computer to perform a method comprising steps of:

inspecting a request queue for block requests from a plurality of concurrent calling processes, the request queue comprising a plurality of block requests not yet processed by any of the plurality of concurrent calling processes, wherein each block request calls for a block of data and wherein each block of data is accessed at most one time by the concurrent calling processes;

retrieving one of the plurality of block requests;

determining whether the retrieved block request can be fulfilled with a block of data from a first memory in a storage system comprising the first memory and a second memory, wherein the first memory is substantially faster than the second memory;

if it is determined that the retrieved block request can be fulfilled with the block of data from the first memory;

retrieving the block of data from the first memory; and

returning the retrieved block to the calling process whose state indicates that the block is needed if the retrieved block request can be fulfilled from the first memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2006
From: BHATTACHARJEE, BISHWARANJAN; LANG, CHRISTIAN ALEXANDER; MALKEMUS, TIMOTHY RAY
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 017614/0619 →
Continuity (1)
Related Publication 20070245079A1 · Oct 18, 2007