IP Library Granted Patent US 8,171,229
Granted Patent B2
US 8,171,229 · App. 12/897,679 · Granted May 1, 2012

Wait-free parallel data cache

Assignee: Sap AG
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,171,229
App. No.
12/897,679
Granted
May 1, 2012
Kind
B2
Abstract

A system and method for managing a data cache in a central processing unit (CPU) of a database system. A method executed by a system includes the processing steps of adding an ID of a page p into a page holder queue of the data cache, executing a memory barrier store-load operation on the CPU, and looking-up page p in the data cache based on the ID of the page p in the page holder queue. The method further includes the steps of, if page p is found, accessing the page p from the data cache, and adding the ID of the page p into a least-recently-used queue.

Claims (33)

1. A method for managing free space in a data cache in a central processing unit (CPU) of a database system, in which unused pages are represented in a local free bucket queue, the method comprising:

defining a local free bucket queue;

determining whether a size of the free bucket queue is one of more than an overflow threshold and less than an underflow threshold, the overflow threshold being set for the free bucket queue during freeing of pages, the underflow threshold being set for the free bucket queue during allocating of pages;

determining whether a global free list queue is locked by a locking process; and

if the size of the free bucket queue is more than the overflow threshold and if the global free list queue is locked by the locking process, flushing some of the unused pages from the free bucket queue into the global free list queue, the flushing characterizing the freeing of pages, and

if the size of the free bucket queue is less than the underflow threshold and if the global free list is locked by the locking process, obtaining, by the free bucket queue, unused pages from the global free list, the obtaining characterizing the allocating of pages.

2. A method in accordance with claim 1 , further comprising:

if the global free list is not locked by the locking process and if the global free list is less than full and when the determined size of the free bucket queue is more than the overflow threshold, putting a free page to the free bucket queue.

3. A method in accordance with claim 1 , further comprising:

if the global free list is not locked by the locking process and if the free bucket queue is full and when the determined size of the free bucket size is more than the overflow threshold, yielding the central processing unit (CPU) for parallel processes and retrying locking the global free list.

4. A method in accordance with claim 1 , further comprising:

if the global free list is not locked by the locking process and if the global free list is not empty and when the determined size of the free bucket queue is less than the underflow threshold, getting a free page from the free bucket queue.

5. A method in accordance with claim 1 , further comprising:

if the global free list is not locked by the locking process and if the free bucket queue is empty and when the determined size of the free bucket size is less than the underflow threshold, yielding the central processing unit (CPU) for parallel processes and retrying locking the global free list.

6. A method in accordance with claim 1 , wherein the unused pages include least recently used pages.

7. A method for managing free space in a data cache in a central processing unit (CPU) of a database system, in which unused pages are represented in a local free bucket queue, the method comprising:

defining a local free bucket queue;

determining whether a size of the free bucket queue is more than an overflow threshold set for the free bucket queue during freeing of pages;

determining whether a global free list queue is locked by a locking process; and

if the size of the free bucket queue is more than the overflow threshold and if the global free list queue is locked by the locking process, flushing some of the unused pages from the free bucket queue into the global free list queue, the flushing characterizing the freeing of pages.

8. A method in accordance with claim 7 , further comprising:

if the global free list is not locked by the locking process and if the global free list is less than full and when the determined size of the free bucket queue is more than the overflow threshold, putting a free page to the free bucket queue.

9. A method in accordance with claim 7 , further comprising:

if the global free list is not locked by the locking process and if the free bucket queue is full and when the determined size of the free bucket size is more than the overflow threshold, yielding the central processing unit (CPU) for parallel processes and retrying locking the global free list.

10. A method for managing free space in a data cache in a central processing unit (CPU) of a database system, in which unused pages are represented in a local free bucket queue, the method comprising:

defining a local free bucket queue;

determining whether a size of the free bucket queue is less than an underflow threshold set for the free bucket queue during allocating of pages;

determining whether a global free list queue is locked by a locking process; and

if the size of the free bucket queue is less than the underflow threshold and if the global free list is locked by the locking process, obtaining, by the free bucket queue, unused pages from the global free list, the obtaining characterizing the allocating of pages.

11. A method in accordance with claim 10 , further comprising:

if the global free list is not locked by the locking process and if the global free list is not empty and when the determined size of the free bucket queue is less than the underflow threshold, getting a free page from the free bucket queue.

12. A method in accordance with claim 10 , further comprising:

if the global free list is not locked by the locking process and if the free bucket queue is empty and when the determined size of the free bucket size is less than the underflow threshold, yielding the central processing unit (CPU) for parallel processes and retrying locking the global free list.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0334 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2011
From: SCHRETER, IVAN
To: SAP AG
Reel/Frame 025598/0230 →
Continuity (2)
Division 11784831 · Apr 9, 2007
Related Publication 20110022805A1 · Jan 27, 2011