throbber
(12) United States Patent
`Burton et al.
`
`US006738865B1
`(io) Patent No.:
`US 6,738,865 B1
`(45) Date of Patent:
`May 18,2004
`
`(54) METHOD, SYSTEM, AND PROGRAM FOR
`DEMOTING DATA FROM CACHE BASED
`ON LEAST RECENTLY ACCESSED AND
`LEAST FREQUENTLY ACCESSED DATA
`
`(75)
`
`Inventors: David Alan Burton, Vail, AZ (US);
`Erez Webman, Petach-Tikva (IL)
`
`(73) Assignee: International Business Machines
`Corporation, Armonk, NY (US)
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 372 days.
`
`(21) Appl. No.: 09/591,916
`Jun. 9, 2000
`(22) Filed:
`Int. Cl.7 .................................................. G06F 12/00
`(51)
`(52) U.S. Cl........................... 711/133; 711/145; 711/159;
`711/207
`(58) Field of Search .................................. 711/133, 134,
`711/136, 118, 145, 159, 207, 160, 202,
`135
`
`(56)
`
`EP
`
`References Cited
`U.S. PATENT DOCUMENTS
`5,150,472 A
`9/1992 Blank et al....................... 711/137
`7/1995 Parikh ............................. 711/160
`5,432,917 A
`1/1996 Day, III et al................... 711/133
`5,481,691 A
`10/1997 Vishlitzky et al............... 711/113
`5,682,500 A
`5,751,993 A
`5/1998 Ofek et al......................... 711/136
`5,761,717 A
`6/1998 Vishlitzky et al............... 711/136
`5,778,442 A *
`7/1998 Ezzat et al........................ 711/159
`5,924,116 A
`7/1999 Aggarwal et al................ 711/122
`6,012,126 A *
`1/2000 Aggarwal et al................ 709/203
`6,266,742 B1 *
`7/2001 Challenger et al.............. 711/133
`4/2002 Girkar et al...................... 711/133
`6,378,043 B1 *
`6,470,419 B2
`* 10/2002 Take et al............. 711/113
`6,487,638 B2
`* 11/2002 Dawkins et al...... 711/133
`FOREIGN PATENT DOCUMENTS
`604015 A3
`11/1993
`
`5
`
`EP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`JP
`
`604015 A 2
`60-214060
`63-199344
`04-051342
`04-077844
`04-314150
`05-040698
`06-083713
`06-089221
`7-506923
`08-044625
`08-069418
`10-269028
`11-065862
`2000035934 A *
`2000-047942
`*
`2000-148515
`2003044510 A *
`
`11/1993
`* 10/1985
`12/1988
`2/1992
`3/1992
`11/1992
`2/1993
`3/1994
`3/1994
`7/1995
`2/1996
`3/1996
`10/1998
`3/1999
`2/2000
`2/2000
`5/2000
`2/2003
`
`.... ....... G06F/12/08
`
`.... ....... G06F/12/00
`
`.... ....... G06F/12/08
`.... ....... G06F/12/00
`
`OTHER PUBLICATIONS
`
`Application No. 2001-170848, “Notification of Reasons for
`Refusal”, Apr. 2003.*
`Great Britain Search Report, date of search Feb. 14, 2002.
`
`* cited by examiner
`
`Primary Examiner—Pierre Michel Bataille
`(74) Attorney, Agent, or Firm—David W. Victor; Konrad
`Raynes & Victor LLP
`(57)
`
`ABSTRACT
`
`Disclosed is a method, system, and program for caching
`data. Data from a device, such as a volatile memory device
`or non-volatile storage device, is maintained in entries in a
`cache. For each entry in cache, a variable indicates both a
`time when the cache entry was last accessed and a frequency
`of accesses to the cache entry.
`
`The variable is used in determining which entry to denote
`from cache to make room for subsequent entries.
`
`21 Claims, 3 Drawing Sheets
`
`EMC
`EXHIBIT 1005
`
`

`
`U.S. Patent
`U.S. Patent
`
`May 18,2004
`May 18, 2004
`
`Sheet 1 of 3
`Sheet 1 of3
`
`US 6,738,865 B1
`US 6,738,865 B1
`
`5
`
`I/O Request
` Storage
`
`FIG. 1
`FIG. 1
`
`

`
`U.S. Patent
`
`May 18,2004
`
`Sheet 2 of 3
`
`US 6,738,865 B1
`
`Initialize cache, set time
`counter to 1.
`
`100
`
`116
`______________________ /
`Add entry to top of LRU
`linked list for new cache
`entry, set LRU rank to zero.
`
`118
`
`_________
`Service I/O request
`from cache.
`
`

`
`U.S. Patent
`
`May 18,2004
`
`Sheet 3 of 3
`
`US 6,738,865 B1
`
`Cache utilization reaches
`threshold; begin process to
`demote entries from cache.
`
`150
`
`Of last 1024 entries on LRU
`list, determine 32 having the
`lowest LRU rank.
`
`Demote the determined 32
`entries from cache.
`FIG. 3
`
`152
`
`154
`
`

`
`4
`
`US 6,738,865 B1
`
`1
`METHOD, SYSTEM, AND PROGRAM FOR
`DEMOTING DATA FROM CACHE BASED
`ON LEAST RECENTLY ACCESSED AND
`LEAST FREQUENTLY ACCESSED DATA
`
`BACKGROUND OF THE INVENTION
`1. Field of the Invention
`The present invention relates to a method, system, and
`program for managing data in cache and selecting cache
`entries for demotion to make room for subsequently
`accessed data.
`2. Description of the Related Art
`In a memory cache, pages or tracks of data are copied
`from a storage device, such as a hard disk drive or other
`non-volatile storage device typically comprised of a mag-
`netic medium, and placed into a volatile, electronic memory
`area referred to as cache. When tracks or data are accessed
`from the storage device they are loaded into cache and
`returned to the application requesting the data. Because the
`accessed data remains in cache, a subsequent request for the
`data can be returned from cache, which is substantially faster
`than retrieving the data from the storage device. Returning
`data from cache, referred to as a cache hit, improves
`performance and system throughput because a cache
`memory by definition provides faster access to data. A cache
`may also be used to provide faster access to a main volatile
`memory, such as a random access memory (RAM). For
`instance, many processors include an “on-board” cache that
`caches data from RAM for the processor to use and subse-
`quently access from the faster cache memory. In both cases,
`disk caching and memory caching, the cache provides a high
`speed memory from which data may be returned faster than
`the storage device or main memory where the data is
`maintained.
`After the cache utilization reaches a certain upper limit,
`the cache manager will demote data from cache to make
`room for subsequently accessed tracks. Areas of cache
`marked as demoted may then be overwritten by new data,
`thus making room for data more recently accessed from
`storage. In the prior art, a least recently used (LRU) algo-
`rithm is used as follows. When a track is added to a cache,
`a pointer to the track in cache is placed at a top of the LRU
`linked list. If a track already in cache is again accessed, then
`the pointer to that track in cache is placed at the top of the
`LRU list. When the cache manager determines that data
`must be demoted or removed from cache to make room for
`subsequent data accesses, the cache manager will demote
`tracks whose pointers are at the bottom of the list, repre-
`senting those tracks that were accessed the longest time ago
`relative to other tracks in cache.
`This prior art LRU approach works sufficiently well with
`sequentially accessed data, that is data that is accessed
`contiguously. However, such LRU algorithms are not opti-
`mal for randomly accessed data, that is tracks of storage
`accessed out of sequence. In such case, a demoted track in
`cache, even though it is the least recently accessed, may
`have been accessed more frequently than other tracks and is,
`thus, more likely to be subsequently accessed than those
`tracks in cache less frequently accessed. Thus, the LRU
`approach does not consider the frequency of access to cache
`entries when selecting entries for demotion.
`Thus, there is a need in the art to improve cache hits, i.e.,
`the read requests returned from cache to increase perfor-
`mance and data throughput.
`SUMMARY OF THE PREFERRED
`EMBODIMENTS
`To overcome the limitations in the prior art described
`above, preferred embodiments disclose a method, system,
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`and program for caching data. Data from a device, such as
`a volatile memory device or non-volatile storage device, is
`maintained in entries in a cache. For each entry in cache, a
`variable indicates both a time when the cache entry was last
`accessed and a frequency of accesses to the cache entry.
`In further embodiments, a determination is made when a
`number of entries in cache has reached a threshold. In
`response to reaching the threshold, a determination is made
`of a plurality of cache entries having a relatively low value
`for the variable with respect to the value of the variable for
`other cache entries. A relatively low variable value indicates
`that the cache entry is one of a least recently accessed entry
`and/or least frequently accessed entry. Those determined
`cache entries having the relatively low value for the variable
`are demoted from cache.
`In still further embodiments, the variable for a cache entry
`is increased whenever the cache entry is accessed.
`Preferred embodiments provide an algorithm and data
`structures for maintaining for each cache entry a ranking or
`variable indicating a time when the entry was last accessed
`and the number of accesses relative to other cache entries.
`This variable is used in determining which entries to demote
`from cache to make room for subsequently accessed data.
`Preferred embodiments would tend to demote among the
`entries that were least recently accessed those entries that are
`less frequently accessed. This methodology improves the
`cache hit ratio because an entry that is more frequently
`accessed relative to another entry is more likely to be
`accessed again in the future. Thus, the preferred methodol-
`ogy would select for demotion those entries less likely to be
`accessed in the future with respect to other entries. This is an
`improvement over prior art techniques that do not take into
`account the frequency of access when demoting cache
`entries.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`Referring now to the drawings in which like reference
`numbers represent corresponding parts throughout:
`FIG. 1 illustrates a cache architecture in accordance with
`preferred embodiments of the present invention; and
`FIGS. 2 and 3 illustrate cache management logic in
`accordance with preferred embodiments of the present
`invention.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`In the following description, reference is made to the
`accompanying drawings which form a part hereof and which
`illustrate several embodiments of the present invention. It is
`understood that other embodiments may be utilized and
`structural and operational changes may be made without
`departing from the scope of the present invention.
`FIG. 1 illustrates a cache architecture in which preferred
`embodiments are implemented. A cache 2 includes cache
`entries 4a, b, c, d into which tracks or pages of data from the
`storage 6 may be placed. When a track or page of data is
`staged into a cache entry 4a, b, c, d, a new entry 8a is added
`to the top of the LRU linked list 10. For each cache entry 4a,
`b, c, d, the LRU linked list 10 includes one entry 8a, b, c, d.
`Each entry 8a, b, c, d in the LRU linked list 10 includes a
`LRU rank value 12a, b, c, d and pointer 14a, b, c, d to one
`cache entry 4a, b, c, d, which may comprise a page if the
`storage is a memory device or a track if the storage 6 is a
`disk drive or other non-volatile magnetic storage medium.
`Further, when an input/output request 5 is serviced from
`
`

`
`5
`
`US 6,738,865 B1
`
`3
`cache, i.e., a cache hit, then the entry 8a, b, c, d in the LRU
`linked list 6 including the pointer to the accessed cache entry
`4a, b, c, d is moved to the top of the LRU linked list 8.
`Although the cache 2 is only shown as having a few cache
`entries 4a, b, c, d and corresponding entries 8a, b, c, d in the
`LRU linked list 10, in practice there are likely thousands of
`cache entries and entries in the LRU linked list 10. Abus 16
`provides a data path between the cache 2 and storage 6. The
`cache 2 further maintains a time counter 18 that is used in
`calculating the LRU rank 12a, b, c, d.
`The LRU rank 12a, b, c, d provides a value for each entry
`4a, b, c, d in cache 2 that indicates both how frequently the
`entry is accessed and the time of last access. The purpose of
`this weighting is to allow the process demoting entries 4a,
`b, c, d from cache 2 to take into account the frequency with
`which an entry was accessed and remove those less fre-
`quently accessed entries. Demoting relatively less frequently
`accessed entries increases the likelihood of a cache hit
`because data that has a history of being accessed more
`frequently is more likely to be accessed in the future over
`less frequently accessed entries.
`FIG. 2 illustrates logic implemented in a cache controller
`or control logic (not shown), referred to herein as the cache
`2, to manage the entries in cache 2. Control begins at block
`100 with the initiation of cache management activities by
`initializing the cache 2 and setting the timer counter to one.
`At block 102, the cache 2 receives an I/O request 5 for a
`track in storage 6, or in cases where the cache is caching data
`from a memory device, a page from memory. Still further,
`the cache 2 could receive a request for a page of data. If the
`requested track is in cache 2 as a cache entry 4a, b, c, d (at
`block 104), then the cache 2 services (at block 106) the I/O
`request 5 directly from cache 2. For a read request, the cache
`2 would return the requested data to the entity requesting the
`data; for a write request the cache 2 would update the write
`data to the track location in cache. The cache 2 would then
`move (at block 108) the entry 8a, b, c, d in the LRU linked
`list 10 corresponding to the cache entry 4a, b, c, d subject to
`the I/O request 5 to the top of the LRU linked list 10. The
`cache then adds (at block 110) the modulo of the time
`counter 18 divided by 512 to the LRU rank 12a, b, c, d of
`the LRU entry 8a, b, c, d moved to the top of the LRU linked
`list 10. In alternative embodiments, the time counter 18 may
`be divided by other values. The time counter 18 is then
`incremented by one (at block 112).
`If the requested track is not in cache, then the cache 2
`stages (at block 114) the requested track from storage to a
`cache entry 4a, b, c, d and adds (at block 116) the LRU entry
`8a, b, c, d for the new cache entry 4a, b, c, d to the top of
`LRU list 10. The LRU rank for the added cache entry is then
`set to zero. The I/O request 5 is then serviced (at block 118)
`from cache 2. Control then transfers to block 110 to set the
`LRU rank 12a, b, c, d for the new entry.
`The above LRU rank is weighted for previous accesses.
`Because the time counter 18 is incremented for every I/O
`access, the value added to the LRU rank for subsequently
`accessed cache entries increases substantially in a short
`period of time. Thus, LRU entries recently accessed or
`added to cache will have a substantially higher LRU rank
`than the LRU rank of entries that have not been accessed
`recently, even those entries accessed numerous times.
`However, to the extent entries have not been accessed for the
`same amount of time, the entry that was accessed more
`frequently will have a higher LRU rank because its LRU
`rank will be weighted with previous accesses. Thus, to the
`extent entries were last accessed at about the same time,
`which in terms of cache operations is within fractions of a
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`second of each other, the more frequently accessed entry will
`have a greater weighting. As discussed, a cache entry more
`frequently accessed in the past is likelier to be accessed in
`the future over less frequently accessed entries that were last
`accessed at about the same time.
`FIG. 3 illustrates logic implemented in the cache 2 to
`demote entries in cache. At block 150 the cache 2 utilization,
`1. e., number of cached entries, reaches an upper threshold. In
`response, the cache determines (at block 152) from the last
`1024 entries in the LRU linked list 8, thirty-two entries that
`have the lowest LRU rank 12a, b, c, d. The cache 2 then
`demotes (at block 152) those determined thirty-two entries
`from cache 2. Once a track is demoted, if it is dirty data, i.e.,
`updates to locations in storage 6, then the data will be
`destaged to storage 6. Once dirty data is destaged or if the
`data is not an update to the track in storage 6, then the cache
`entry 4a, b, c, d is marked as available to receive new tracks
`staged in from the storage 6.
`As discussed, those entries having the lowest LRU rank
`marked for demotion are both the least recently accessed and
`among those entries least recently accessed recently, are less
`frequently accessed. Thus, the algorithm of FIGS. 2 and 3
`ensures that more frequently accessed cache entries 4a, b, c,
`d remain in cache longer. Because a more frequently
`accessed entry is more likely to be subsequently accessed
`over less frequently accessed entries last accessed at about
`the same time, the preferred embodiment cache demotion
`scheme will improve the cache hit ratio as those entries more
`frequently accessed are less likely to be demoted from cache
`2. In fact, in performance tests, it has been found that the
`throughput and performance of systems employing the
`cache management scheme of the preferred embodiments
`has improved 5-10% over systems that employ the prior art
`LRU demotion method.
`
`Conclusion
`The following describes some alternative embodiments
`for accomplishing the present invention.
`The preferred embodiments may be implemented as a
`method, apparatus or program using standard programming
`and/or engineering techniques to produce software,
`firmware, hardware, or any combination thereof. The pro-
`grams defining the functions of the preferred embodiment
`can be delivered to a computer via a variety of information
`bearing media, which include, but are not limited to,
`computer-readable devices, programmable logic, memory
`devices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs,
`etc.) carriers, or media, such as a magnetic storage media,
`“floppy disk,” CD-ROM, a file server providing access to
`the programs via a network transmission line, wireless
`transmission media, signals propagating through space,
`radio waves, infrared signals, etc. Of course, those skilled in
`the art will recognize that many modifications may be made
`to this configuration without departing from the scope of the
`present invention. Such signal-bearing media, when carry-
`ing computer-readable instructions that direct the functions
`of the present invention, represent alternative embodiments
`of the present invention.
`As discussed, the cache management scheme of the
`preferred embodiments may be employed in a disk cache
`that provides high speed storage of data accessed from a
`storage device, such as a hard disk drive, tape, optical disk
`or any other magnetic storage medium or in a memory cache
`that caches data from a slower memory device, such as the
`main memory.
`The preferred embodiment cache may comprise a set
`associative cache, direct mapped cache, fully associative
`
`

`
`US 6,738,865 B1
`
`5
`cache or any and other cache designs known in the art. Still
`further, the cache may comprise a battery backed up cache,
`also referred to as a non-volatile storage unit.
`The preferred logic of FIGS. 2 and 3 describes specific
`operations occurring in a particular order. In alternative
`embodiments, certain of the logic operations may be per-
`formed in a different order, modified or removed and still
`implement preferred embodiments of the present invention.
`Morever, steps may be added to the above described logic
`and still conform to the preferred embodiments. Further,
`operations described herein may occur sequentially or cer-
`tain operations may be processed in parallel.
`Preferred embodiments described a specific technique for
`weighting a variable with the frequency a track or page of
`data in cache has been accessed. In alternative embodiments,
`different algorithms may be used to factor in both the time
`of the most recent access and the frequency of accesses to an
`entry in cache.
`In preferred embodiments, a LRU linked list was main-
`tained for cache entries. In alternative embodiments, differ-
`ent queue structures, other than LRU linked lists, may be
`used in managing the data in cache.
`In summary, preferred embodiments disclose a method,
`system, and program for caching data. Data from a device,
`such as a volatile memory device or non-volatile storage
`device, is maintained in entries in a cache. For each entry in
`cache, a variable indicates both a time when the cache entry
`was last accessed and a frequency of accesses to the cache
`entry.
`The foregoing description of the preferred embodiments
`of the invention has been presented for the purposes of
`illustration and description. It is not intended to be exhaus-
`tive or to limit the invention to the precise form disclosed.
`Many modifications and variations are possible in light of
`the above teaching. It is intended that the scope of the
`invention be limited not by this detailed description, but
`rather by the claims appended hereto. The above
`specification, examples and data provide a complete descrip-
`tion of the manufacture and use of the composition of the
`invention. Since many embodiments of the invention can be
`made without departing from the spirit and scope of the
`invention, the invention resides in the claims hereinafter
`appended.
`What is claimed is:
`1. A system for caching data, comprising:
`means for maintaining data from a device in entries in a
`cache;
`means for maintaining, for each entry in cache, a variable
`indicating both a time when the cache entry was last
`accessed and a frequency of accesses to the cache entry,
`wherein the entries are ranked in one ranked list
`associated with the entries and the corresponding
`variables,
`means for maintaining a single time counter, wherein the
`time counter is for all entries in the cache, and wherein
`the time counter is used in calculating a least recently
`used rank;
`means for receiving an access to one cache entry;
`means for increasing the variable for the accessed cache
`entry by adding the time counter to the variable for the
`accessed cache entry in response to the access to the
`cache entry; and
`means for incrementing the time counter whenever one
`cache entry is accessed.
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`
`6
`2. The system of claim 1, further comprising:
`means for determining that a number of entries in cache
`has reached a threshold;
`means for determining a plurality of cache entries having
`a relatively low value for the variable with respect to
`the value of the variable for other cache entries in
`response to the number of cache entries reaching the
`threshold, wherein a relatively low variable value indi-
`cates that the cache entry is at least one of a least
`recently accessed entry and least frequently accessed
`entry; and
`means for demoting from cache those determined cache
`entries having the relatively low value for the variable.
`3. The system of claim 1, further comprising:
`means for performing an operation on the time counter
`resulting in a value, wherein the means for increasing
`the variable adds the value to the variable for the
`accessed cache entry.
`4. The system of claim 3, wherein the operation per-
`formed on the time counter comprises dividing the time
`counter by a constant, wherein the resulting value comprises
`the modulo of the time counter divided by the constant.
`5. The system of claim 1, further comprising:
`means for maintaining an entry in a least recently used
`(LRU) linked list for each cache entry, wherein a
`recently accessed cache entry is placed at a top of the
`LRU linked list and least recently used cache entries
`are demoted from a bottom of the LRU linked list.
`6. The system of claim 5, further comprising:
`means for determining that a number of entries in cache
`has reached a threshold;
`means for determining a plurality of cache entries at the
`bottom of the LRU linked list that have a relatively low
`value for the variable with respect to the value of the
`variable for other cache entries, wherein a relatively
`low variable value for the cache entries at the bottom of
`the LRU linked list indicates that the cache entry has
`been at least one of a least recently accessed entry and
`least frequently accessed entry; and
`means for demoting from cache those determined cache
`entries having the relatively low value for the variable.
`7. The system of claim 1, wherein the device comprises a
`volatile memory device or a non-volatile storage device.
`8. A method for caching data, comprising:
`maintaining data from a device in entries in a cache;
`for each entry in cache, maintaining a variable indicating
`both a time when the cache entry was last accessed and
`a frequency of accesses to the cache entry, wherein the
`entries are ranked in one ranked list associated with the
`entries and the corresponding variables;
`maintaining a single time counter, wherein the time
`counter is for all entries in the cache, and wherein the
`time counter is used in calculating a least recently used
`rank;
`receiving an access to one cache entry;
`in response to the access to the cache entry, increasing the
`variable for the accessed cache entry by adding the time
`counter to the variable for the accessed cache entry; and
`incrementing the time counter whenever one cache entry
`is accessed.
`9. The method of claim 8, further comprising:
`determining that a number of entries in cache has reached
`a threshold;
`in response to the number of cache entries reaching the
`threshold, determining a plurality of cache entries hav-
`
`

`
`US 6,738,865 B1
`
`7
`ing a relatively low value for the variable with respect
`to the value of the variable for other cache entries,
`wherein a relatively low variable value indicates that
`the cache entry is at least one of a least recently
`accessed entry and least frequently accessed entry; and
`demoting from cache those determined cache entries
`having the relatively low value for the variable.
`10. The method of claim 8, further comprising:
`performing an operation on the time counter resulting in
`a value, wherein increasing the variable comprises
`adding the value to the variable for the accessed cache
`entry.
`11. The method of claim 10, wherein the operation
`performed on the time counter comprises dividing the time
`counter by a constant, wherein the resulting value comprises
`the modulo of the time counter divided by the constant.
`12. The method of claim 8, further comprising:
`for each cache entry, maintaining an entry in a least
`recently used (LRU) linked list, wherein a recently
`accessed cache entry is placed at a top of the LRU
`linked list and least recently used cache entries are
`demoted from a bottom of the LRU linked list.
`13. The method of claim 12, further comprising:
`determining that a number of entries in cache has reached
`a threshold;
`determining a plurality of cache entries at the bottom of
`the LRU linked list that have a relatively low value for
`the variable with respect to the value of the variable for
`other cache entries, wherein a relatively low variable
`value for the cache entries at the bottom of the LRU
`linked list indicates that the cache entry has been at
`least one of a least recently accessed entry and least
`frequently accessed entry; and
`demoting from cache those determined cache entries
`having the relatively low value for the variable.
`14. The method of claim 8, wherein the device comprises
`a volatile memory device or a non-volatile storage device.
`15. An information bearing medium for managing data in
`cache, wherein the information bearing medium includes
`logic for causing a cache control unit to perform:
`maintaining data from a device in entries in a cache;
`for each entry in cache, maintaining a variable indicating
`both a time when the cache entry was last accessed and
`a frequency of accesses to the cache entry, wherein the
`entries are ranked in one ranked list associated with the
`entries and the corresponding variables;
`maintaining a single time counter, wherein the time
`counter is for all entries in the cache, and wherein the
`time counter is used in calculating a least recently used
`rank;
`receiving an access to one cache entry;
`in response to the access to the cache entry, increasing the
`variable for the accessed cache entry by adding the time
`counter to the variable for the accessed cache entry; and
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`7
`
`8
`incrementing the time counter whenever one cache entry
`is accessed.
`16. The information bearing medium of claim 15, further
`causing the cache control unit to perform:
`determining that a number of entries in cache has reached
`a threshold;
`in response to the number of cache entries reaching the
`threshold, determining a plurality of cache entries hav-
`ing a relatively low value for the variable with respect
`to the value of the variable for other cache entries,
`wherein a relatively low variable value indicates that
`the cache entry is at least one of a least recently
`accessed entry and least frequently accessed entry; and
`demoting from cache those determined cache entries
`having the relatively low value for the variable.
`17. The information bearing medium of claim 15, further
`causing the cache control unit to perform:
`performing an operation on the time counter resulting in
`a value, wherein increasing the variable comprises
`adding the value to the variable for the accessed cache
`entry.
`18. The information bearing medium of claim 17, wherein
`the operation performed on the time counter comprises
`dividing the time counter by a constant, wherein the result-
`ing value comprises the modulo of the time counter divided
`by the constant.
`19. The information bearing medium of claim 15, further
`causing the cache control unit to perform:
`for each cache entry, maintaining an entry in a least
`recently used (LRU) linked list, wherein a recently
`accessed cache entry is placed at a top of the LRU
`linked list and least recently used cache entries are
`demoted from a bottom of the LRU linked list.
`20. The information bearing medium of claim 19, further
`causing the cache control unit to perform:
`determining that a number of entries in cache has reached
`a threshold;
`determining a plurality of cache entries at the bottom of
`the LRU linked list that have a relatively low value for
`the variable with respect to the value of the variable for
`other cache entries, wherein a relatively low variable
`value for the cache entries at the bottom of the LRU
`linked list indicates that the cache entry has been at
`least one of a least recently accessed entry and least
`frequently accessed entry; and
`demoting from cache those determined cache entries
`having the relatively low value for the variable.
`21. The information bearing medium of claim 15, wherein
`the device comprises a volatile memory device or a non-
`volatile storage device.

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket