Browse Prior Art Database

Method for Prefetching Cache Lines Based on the Presence of Uninitialized Lines Disclosure Number: IPCOM000027339D
Original Publication Date: 2004-Apr-07
Included in the Prior Art Database: 2004-Apr-07
Document File: 2 page(s) / 43K

Publishing Venue



A method is disclosed for prefetching cache lines into consecutive sets (in a set-associative cache), based on the presence of uninitialized lines in said sets.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

Page 1 of 2

Method for Prefetching Cache Lines Based on the Presence of Uninitialized Lines

Disclosed is a method for prefetching cache lines in a set-associative cache based on the presence of uninitialized lines in one or more consecutive sets. As computer system caches become larger (particularly for lower level, that is closer to main memory, caches, such as L3 caches for example), the time required to fill a cache with potentially useful data becomes increasingly larger. If the cache could be filled with useful data more quickly, a steady-state high hit ratio could be more quickly achieved, reducing the effect of the start-up transient. One approach might be to dump cache contents to a non-volatile memory before shutdown, and use this to initialize the cache at start-up. Another approach might be to design the computer system so that the cache itself was non-volatile. These approaches have serious drawbacks: (1) extra complexity and expense; and (2) it is often desirable to start with empty caches at start-up, since the shutdown may have been the result of software and/or hardware errors, and avoiding these again can best be accomplished with a "clean" system state. It is therefore desirable to more quickly fill the cache with potentially useful data, while at the same time avoiding significant extra complexity or expense, and furthermore in such a fashion that the system starts with a "clean" state.

In a k-way set associative cache, each of the k lines in a set has a state, typically including an invalid state, which is the initial state of a line (at start-up) since the line does not contain valid data, and also the state when the line is invalidated for other reasons, for example if it is "stale", that is, has been updated elsewhere, or in order to enforce inclusion in inclusive cache hierarchy designs, and so on. Here however it will be assumed that there is an unitialized state for a cache line (the state of all cache lines at...