← Back to Patent Explorer
US5909695A Expired / Lapsed US ⏱️ 0.0 years remaining

Maximal concurrent lookup cache for computing systems having a multi-threaded environment

Assignee: Oracle America Inc
•
Filing: 1996-12-23
•
Granted: 1999-06-01
•
Expires: 2016-12-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A multi-threaded processing system has a cache that is commonly accessible to each thread. The cache has a plurality of entries for storing items, each entry being identified by an entry number. The location in the cache of an item that includes a first key is determined by supplying the first key to a lockless-lookup engine which then provides a lookup output that is alternatively a lookup entry number or an indication that the item is not stored in the cache. The lookup entry number is alternatively a first or second entry number, wherein the first entry number points to a first entry in which the item is stored and the second entry number points to a second entry in which the item is not stored. If the lookup output is the lookup entry number, then it is verified that the lookup entry number is the first entry number. This verification includes acquiring a mutual exclusion lock on the entry designated by the lookup entry number, using the lookup entry number to read a stored key from the cache, and comparing the first key with the stored key. If the two keys match, then the item has been located. Other aspects of the invention address the situations where the two keys do not match, or where the lookup output is the indication that the item is not stored in the cache.

Inventors

  • 👤 Thomas K. Wong
  • 👤 Theron D. Tock

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 16:49
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0806; G06F12/0842

Claims Analysis

Total Claims: 21
Claim 1
Independent Claim 220 words
In a multi-threaded processing system having a cache that is commonly accessible to each thread, wherein the cache has a plurality of entries for storing items, each entry being identified by an entry number and having a reference counter which indicates whether the entry is currently busy and a time stamp which records the last time the entry is accessed, a method of selecting an entry for storage of a new item, the method comprising the steps of: a) logically dividing the plurality of entries into sets of entries of equal size; b) selecting in a round robin fashion one of the sets of entries, wherein one of the entries in the set will be used to store the new item; c) arranging the entries in the selected set from step b into an ordered list according to the time each entry in the set was last accessed, wherein entries that are busy are ignored; d) if the list from step c is empty, repeating steps b-d; e) if the list from step c is not empty, then for each entry in the list, starting with the first entry in the list, verifying that the entry is available for storage of the new item; and f) repeating steps b-f if no entry is found available for storage in step e.
Claim 2
Dependent Claim 220 words
In a multi-threaded processing system having a cache that is commonly accessible to each thread, wherein the cache has a plurality of entries for storing items, each entry being identified by an entry number and having a reference counter which indicates whether the entry is currently busy and a time stamp which records the last time the entry is accessed, a method of selecting an entry for storage of a new item, the method comprising the steps of: a) logically dividing the plurality of entries into sets of entries of equal size; b) selecting in a round robin fashion one of the sets of entries, wherein one of the entries in the set will be used to store the new item; c) arranging the entries in the selected set from step b into an ordered list according to the time each entry in the set was last accessed, wherein entries that are busy are ignored; d) if the list from step c is empty, repeating steps b-d; e) if the list from step c is not empty, then for each entry in the list, starting with the first entry in the list, verifying that the entry is available for storage of the new item; and f) repeating steps b-f if no entry is found available for storage in step e.
Claim 3
Dependent Claim 134 words
The method of claim 1, wherein each set of entries is uniquely assigned a number, starting with 1, the numbers of the sets being consecutive, the last set being assigned a set number that is the same as the number of sets in the cache, and wherein the selecting step comprises: selecting, in a round robin fashion, one of the sets of entries wherein of the entries in the set will be used to store the new item, the set being selected having a set number that is 1 greater than the set number of the set that was previously selected, or set number 1 if the previously selected set is the set that has the greatest set number, and if no such set exists, then selecting the set with a set number 1.
Claim 4
Dependent Claim 22 words
The method of claim 1, wherein an entry is busy if the reference counter has a value that is greater than zero.
Claim 5
Dependent Claim 94 words
The method of claim 1, wherein the verification to determine whether an entry is available for storage of a new item comprises the steps of: a) acquiring a mutual exclusion lock which grants exclusive access only to the entry that is being verified; b) indicating that the entry is not available if another thread is currently holding a mutual exclusion lock on the entry; and c) indicating that the entry is available if the reference counter has a value equal to zero, or if the entry has not been used to store any item.
Claim 6
Dependent Claim 29 words
The method of claim 4, further comprising the step of invoking a call back function to flush present contents of the new cache entry to a main storage location.
Claim 7
Dependent Claim 23 words
The method of claim 4, wherein a time stamp of zero indicates that the entry has not been used to store any item.
Claim 8
Dependent Claim 245 words
In a multi-threaded processing system having a cache that is commonly accessible to each thread, wherein the cache has a plurality of entries for storing items, each entry being identified by an entry number and having a reference counter which indicates whether the entry is currently busy and a time stamp which records the last time the entry is accessed, an apparatus for selecting an entry for storage of a new item, the apparatus comprising: a) means for logically dividing the plurality of entries into sets of entries of equal size; b) means for selecting in a round robin fashion one of the sets of entries, wherein one of the entries in the set will be used to store the new item; c) means for arranging the entries in the selected set into an ordered list according to the time each entry in the set was last accessed, wherein entries that are busy are ignored; d) means for determining if the selected set is empty, the means for determining causing said means for arranging to proceed to a next set if the selected set is empty; and e) means for verifying, for each entry in the list starting with the first entry, that the entry is available for storage of the new item if the means for determining determines that the selected set is not empty, the means for verifying causing said means for arranging to proceed to a next set if the verification fails.
Claim 9
Dependent Claim 245 words
In a multi-threaded processing system having a cache that is commonly accessible to each thread, wherein the cache has a plurality of entries for storing items, each entry being identified by an entry number and having a reference counter which indicates whether the entry is currently busy and a time stamp which records the last time the entry is accessed, an apparatus for selecting an entry for storage of a new item, the apparatus comprising: a) means for logically dividing the plurality of entries into sets of entries of equal size; b) means for selecting in a round robin fashion one of the sets of entries, wherein one of the entries in the set will be used to store the new item; c) means for arranging the entries in the selected set into an ordered list according to the time each entry in the set was last accessed, wherein entries that are busy are ignored; d) means for determining if the selected set is empty, the means for determining causing said means for arranging to proceed to a next set if the selected set is empty; and e) means for verifying, for each entry in the list starting with the first entry, that the entry is available for storage of the new item if the means for determining determines that the selected set is not empty, the means for verifying causing said means for arranging to proceed to a next set if the verification fails.
Claim 10
Dependent Claim 134 words
The apparatus of claim 7, wherein each set of entries is uniquely assigned a number, starting with 1, the numbers of the sets being consecutive, the last set being assigned a set number that is the same as the number of sets in the cache, and wherein the means for selecting selects, in a round robin fashion, one of the sets of entries wherein of the entries in the set will be used to store the new item, the set being selected having a set number that is 1 greater than the set number of the set that was previously selected, or set number 1 if the previously selected set is the set that has the greatest set number, and if no such set exists, then selecting the set with a set number 1.
Claim 11
Dependent Claim 22 words
The apparatus of claim 7, wherein an entry is busy if the reference counter has a value that is greater than zero.
Claim 12
Dependent Claim 84 words
The apparatus of claim 7, wherein the means for verifying comprises: a) means for acquiring a mutual exclusion lock which grants exclusive access only to the entry that is being verified; b) means for indicating that the entry is not available if another thread is currently holding a mutual exclusion lock on the entry; and for indicating that the entry is available if the reference counter has a value equal to zero, or if the entry has not been used to store any item.
Claim 13
Dependent Claim 29 words
The apparatus of claim 10, further comprising a means for invoking a call back function to flush present contents of the new cache entry to a main storage location.
Claim 14
Dependent Claim 23 words
The apparatus of claim 10, wherein a time stamp of zero indicates that the entry has not been used to store any item.
Claim 15
Dependent Claim 314 words
An article of manufacture for use in a multi-threaded processing system having a cache that is commonly accessible to each thread, wherein the cache has a plurality of entries for storing items, each entry being identified by an entry number and having a reference counter which indicates whether the entry is currently busy and a time stamp which records the last time the entry is accessed, the article of manufacture comprising: a computer usable medium having computer readable program code configured to select an entry for storage of a new item, the computer readable program code in the article of manufacture comprising: a) computer readable program code configured to effect logical division of the plurality of entries into sets of entries of equal size; b) computer readable program code configured to effect selection, in a round robin fashion, of one of the sets of entries, wherein one of the entries in the set will be used to store the new item; c) computer readable program code configured to effect the arrangement of the entries in the selected set into an ordered list according to the time each entry in the set was last accessed, wherein entries that are busy are ignored; d) computer readable program code configured to determine if the selected set is empty, and to cause said program code configured to effect the arrangement of the entries to proceed to a next set if the selected set is empty; and e) computer readable program code configured to verify, for each entry in the list starting with the first entry, that the entry is available for storage of the new item if the code configured to determine if the selected set is empty determines that the selected set is not empty, and causing the code configured to effect the arrangement of the entries to proceed to a next set if the verification fails.
Claim 16
Dependent Claim 314 words
An article of manufacture for use in a multi-threaded processing system having a cache that is commonly accessible to each thread, wherein the cache has a plurality of entries for storing items, each entry being identified by an entry number and having a reference counter which indicates whether the entry is currently busy and a time stamp which records the last time the entry is accessed, the article of manufacture comprising: a computer usable medium having computer readable program code configured to select an entry for storage of a new item, the computer readable program code in the article of manufacture comprising: a) computer readable program code configured to effect logical division of the plurality of entries into sets of entries of equal size; b) computer readable program code configured to effect selection, in a round robin fashion, of one of the sets of entries, wherein one of the entries in the set will be used to store the new item; c) computer readable program code configured to effect the arrangement of the entries in the selected set into an ordered list according to the time each entry in the set was last accessed, wherein entries that are busy are ignored; d) computer readable program code configured to determine if the selected set is empty, and to cause said program code configured to effect the arrangement of the entries to proceed to a next set if the selected set is empty; and e) computer readable program code configured to verify, for each entry in the list starting with the first entry, that the entry is available for storage of the new item if the code configured to determine if the selected set is empty determines that the selected set is not empty, and causing the code configured to effect the arrangement of the entries to proceed to a next set if the verification fails.
Claim 17
Dependent Claim 140 words
The article of manufacture of claim 13, wherein each set of entries is uniquely assigned a number, starting with 1, the numbers of the sets being consecutive, the last set being assigned a set number that is the same as the number of sets in the cache, and wherein the computer readable program code configured for selecting selects, in a round robin fashion, one of the sets of entries wherein of the entries in the set will be used to store the new item, the set being selected having a set number that is 1 greater than the set number of the set that was previously selected, or set number 1 if the previously selected set is the set that has the greatest set number, and if no such set exists, then selecting the set with a set number 1.
Claim 18
Dependent Claim 24 words
The article of manufacture of claim 13, wherein an entry is busy if the reference counter has a value that is greater than zero.
Claim 19
Dependent Claim 95 words
The article of manufacture of claim 13, wherein the code configured to verify comprises: a) computer readable program code configured to acquire a mutual exclusion lock which grants exclusive access only to the entry that is being verified; b) computer readable program code configured to indicate that the entry is not available if another thread is currently holding a mutual exclusion lock on the entry; and to indicate that the entry is available if the reference counter has a value equal to zero, or if the entry has not been used to store any item.
Claim 20
Dependent Claim 31 words
The article of manufacture of claim 16, further comprising a means for invoking a call back function to flush present contents of the new cache entry to a main storage location.
Claim 21
Dependent Claim 25 words
The article of manufacture of claim 16, wherein a time stamp of zero indicates that the entry has not been used to store any item.

References Cited (Backward Citations)

US4736293A Cited
US4926323A Cited
US4977998A Cited
US5546555A Cited
US5325504A Cited
US5353425A Cited
EP0737917A2 Cited
EP0800134A2 Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-05-31 2002-11-30 2003-06-01 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-05-31 2006-11-30 2007-06-01 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-05-31 2010-11-30 2011-06-01 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag