Data prefetching based on store information in multi-processor caches
First Claim
1. In a multi-processor system comprising a plurality of processors, a shared main storage and a storage control element, each said processors having a local cache memory and a buffer control element, a computer implemented method of data prefetching comprising the steps of:
- establishing a local history table at each of said processors, each said local history table containing for each line in cache memory a record of one of whether said line was cross-interrogate invalidated without refetching said line from said shared main storage and whether said line was stored into by the processor corresponding to each said local history table since a last fetch of said line;
setting an entry in said local history table when one ofa) said line is cross-interrogate invalidated from any processor andb) the buffer control element receivesa data store for said line occurs, corresponding to said record in said local history table, and resetting said entry corresponding to said record in said local history table when said processor fetches said line into its cache memory from said shared main storage; and
examining entries in said local history table for selected lines which have addresses having a predetermined relationship to a particular line to be accessed by the processor corresponding to said local history table, said predetermined relationship indicating an increased likelihood of a respective one of said selected lines being required, and whena) said particular line is not available in said local cache memory andb) said local history table contains at least one entry which is set corresponding to a respective one of at least one selected line having said predetermined relationship to said particular line,fetching said particular line and prefetching only ones of said selected lines having said predetermined relationship to said particular line and also correspond to ones of said entries in said local history table which are set.
0 Assignments
0 Petitions
Accused Products
Abstract
A mechanism using CHLoc (change-local) type information is used for data prefetch (D-prefetch) decision making. This information is stored in history tables H, there being one such table for each central processor (CP) at, for example, the buffer control element (BCE). For each line L, H[L] indicates the information for L in H. Two different types of histories may be kept at H:
(1) Cross-interrogate (XI)-invalidates--At each H[L], there is recorded whether L was XI-invalidated without refetching.
(2) CHLoc --At each H[L], there is also recorded local-change history, i.e., whether L was stored into since the last fetch.
It is also possible to keep a global H at the storage control element (SCE). In this case, the SCE maintains a table I recording, for each line L, information I[L] recording whether L involved XI-invalidates during the last accesses by a CP. Upon a cache miss to L from a processor CPi, the SCE prefetches some of those lines that involved XI-invalidates (indicated by I) into cache Ci, if missing there. The management of table I is simple. When an XI-invalidate on L occurs, e.g., upon a store or an EX fetch, the corresponding entry is set. When L is accessed, e.g., upon D-fetch misses, without XI-invalidate, the entry in I is reset. Another criteria for turning an I entry OFF is when the line is fetched, e.g., on demand or upon prefetch.
-
Citations
17 Claims
-
1. In a multi-processor system comprising a plurality of processors, a shared main storage and a storage control element, each said processors having a local cache memory and a buffer control element, a computer implemented method of data prefetching comprising the steps of:
-
establishing a local history table at each of said processors, each said local history table containing for each line in cache memory a record of one of whether said line was cross-interrogate invalidated without refetching said line from said shared main storage and whether said line was stored into by the processor corresponding to each said local history table since a last fetch of said line; setting an entry in said local history table when one of a) said line is cross-interrogate invalidated from any processor and b) the buffer control element receives a data store for said line occurs, corresponding to said record in said local history table, and resetting said entry corresponding to said record in said local history table when said processor fetches said line into its cache memory from said shared main storage; and examining entries in said local history table for selected lines which have addresses having a predetermined relationship to a particular line to be accessed by the processor corresponding to said local history table, said predetermined relationship indicating an increased likelihood of a respective one of said selected lines being required, and when a) said particular line is not available in said local cache memory and b) said local history table contains at least one entry which is set corresponding to a respective one of at least one selected line having said predetermined relationship to said particular line, fetching said particular line and prefetching only ones of said selected lines having said predetermined relationship to said particular line and also correspond to ones of said entries in said local history table which are set. - View Dependent Claims (2, 3, 4)
-
-
5. In a multi-processor system comprising a plurality of processors, a shared main storage and a storage control element, each of said processors having a local cache memory and a buffer control element, a computer implemented method of data prefetching comprising the steps of:
-
establishing a history table at said storage control element, said history table containing for each line in said cache memories of said processors a record of one of whether said line was cross-interrogate invalidated without refetching said line from said shared main storage and whether said line was stored into since the last fetch of said line by a particular processor; setting an entry in said history table when one of a) said line is cross-interrogate invalidated from any processor and b) the buffer control element of said particular processor receives a data store for said line occurs, corresponding to a record in said history table, and resetting the entry when said particular processor fetches said line into its cache memory from said shared main storage; and
,examining entries in said history table for selected lines which have addresses having a predetermined relationship to a particular line to be accessed by the processor corresponding to said history table, said predetermined relationship indicating an increased likelihood of a respective one of said selected lines being required, and when a) said particular line is not available in said local cache memory of said particular processor and b) said history table contains at least one entry which is set corresponding to a respective one of at least one selected line having said predetermined relationship to said particular line, fetching said particular line and prefetching only ones of said selected lines having said predetermined relationship to said particular line and also correspond to ones of said entries in said history table which are set. - View Dependent Claims (6, 7)
-
-
8. In a multi-processor system comprising a plurality of processors, a shared main storage and a storage control element, each of said processors having a local cache memory and a buffer control element, a computer implemented method of data prefetching comprising the steps of:
-
establishing a history table at said storage control element, said history table containing for each line in said cache memories of said processors a record of one of whether said line was cross-interrogate invalidated without refetching said line from said shared main storage and whether said line was stored into since the last fetch of said line by a particular processor; setting an entry in said history table when one of a) said line is cross-interrogate invalidated from any processor and b) the storage control element of said particular processor receives a data store for said line occurs, corresponding to a record in said history table, and resetting said entry when said particular processor fetches said line into its cache memory from said shared main storage; and
,examining entries in said history table for selected lines which have addresses having a predetermined relationship to a particular line to be accessed by the processor corresponding to said history table, said predetermined relationship indicating an increased likelihood of a respective one of said selected lines being required, and when a) said particular line is not available in said local cache memory of said particular processor and b) said history table contains at least one entry which is set corresponding to a respective one of at least one selected line having said predetermined relationship to said particular line, fetching said particular line and prefetching only ones of said selected lines having said predetermined relationship to said particular line and also correspond to ones of said entries in said history table which are set. - View Dependent Claims (9, 10)
-
-
11. A multi-processor data processing system having a plurality of processors, a shared main storage and a storage control element, each of said processors in said multi-processor data processing system having a local cache memory and a buffer control element, said multi-processor data processing system including
a history table containing an entry for each line of at least one of said local cache memories, means for setting an entry in said history table upon the occurrence of at least one of a cross-interrogate invalidate of the line corresponding to said entry in said at least one of said cache memories and a data store for the line corresponding to said entry in said at least one of said cache memories, means for resetting said entry when a processor associated with said at least one cache memory fetches said line into its cache memory from said shared main storage, means for detecting that a particular line is unavailable to a processor from its cache, and means for fetching said particular line and means for prefetching only selected lines from said shared main storage which correspond to ones of said entries in said history table which are set and also which have a predetermined relationship to said particular line, said predetermined relationship indicating an increased likelihood of said line being required.
Specification