Temporal affinity analysis using reuse signatures
First Claim
Patent Images
1. A method for analyzing reuse patterns of accesses of data by a program naming on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
- (a) running the program on the computing device;
(b) monitoring the accesses of the data by the program during step (a); and
(c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises;
determining a last access time of each of the data;
organizing a search tree from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and
compressing the search tree in accordance with a bounded relative error.
2 Assignments
0 Petitions
Accused Products
Abstract
Reuse distance is the number of data which are accessed between accesses of a datum. The computation of reuse distance uses a search tree and is carried out through approximate analysis, pattern recognition, or distance-based sampling. The reuse distance can be used to detect reference affinity, that is, to detect which data are accessed together.
26 Citations
56 Claims
-
1. A method for analyzing reuse patterns of accesses of data by a program naming on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); and (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search tree from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error. - View Dependent Claims (2)
-
-
3. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); and (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search wee having a capacity B, where B is a bounded absolute error.
-
-
4. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search tree having a capacity B, where B is a bounded absolute error; and (d) determining a reuse pattern from the reuse distances determined in step (c), wherein step (d) comprises forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances, and wherein step (d) further comprises forming a reference histogram of the reuse distances by percentile ranges of the reuse distances. - View Dependent Claims (5, 6, 7)
-
-
8. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search tree having a capacity B, where B is a bounded absolute error; (d) determining a reuse pattern from the reuse distances determined in step (c), wherein step (d) comprises forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances; and (e) from the reuse distance histogram, forming an affinity group of at least two data which are always accessed within a distance k of one another, wherein k is a predetermined quantity. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search tree having a capacity B, where B is a bounded absolute error; (d) comparing reuse signatures of the data to determine whether two or more of the data have reuse signatures which differ by less than a predetermined percentage; and (e) for any two or more of the data whose reuse signatures differ by less than said predetermined percentage, identifying a reference affinity among said two or more data.
-
-
15. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); and (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein the processor performs step (c) by; determining a last access time of each of the data; organizing a search free from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error. - View Dependent Claims (16)
-
-
17. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); and (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein the processor performs step (c) by; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search free having a capacity B, where B is a bounded absolute error.
-
-
18. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search free having a capacity B, where B is a bounded absolute error; and (d) determining a reuse pattern from the reuse distances determined in step (c), wherein the processor performs step (d) by forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances, and wherein the processor further performs step (d) by forming a reference histogram of the reuse distances by percentile ranges of the reuse distances. - View Dependent Claims (19, 20, 21)
-
-
22. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search tree having a capacity B, where B is a bounded absolute error; (d) determining a reuse pattern from the reuse distances determined in step (c), wherein the processor performs step (d) by forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances, and (e) from the reuse distance histogram, forming an affinity group of at least two data which are always accessed within a distance k of one another, wherein k is a predetermined quantity. - View Dependent Claims (23, 24, 25, 26, 27)
-
-
28. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; maintaining a trace storing the last access times of the last C accesses of the data, where C is a cut-off distance; and maintaining a search tree storing access times other than the last C accesses, each node in the search tree having a capacity B, where B is a bounded absolute error; (d) comparing reuse signatures of the data to determine whether two or more of the data have reuse signatures which differ by less than a predetermined percentage; and (e) for any two or more of the data whose reuse signatures differ by less than said predetermined percentage, identifying a reference affinity among said two or more data.
-
-
29. A method for analyzing affinities among a plurality of events, the method comprising:
-
(a) monitoring occurrences of the events; (b) determining a reoccurrence distance for each event, the reoccurrence distance being a number of distinct ones of the plurality of events which occur between two occurrences of said each event, wherein step (b) comprises; determining a last occurrence of each of the events; maintaining a trace storing the last occurrences of the last C events, where C is a cut-off distance; and maintaining a search tree storing occurrences other than the last C occurrences, each node in the search tree having a capacity B, where B is a bounded absolute error; and (c) determining, from the reoccurrence distance determined in step (b), an affinity among at least two of the events, the affinity being a tendency of said at least two of the events to occur together. - View Dependent Claims (30, 31)
-
-
32. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search free from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error; and (d) determining a reuse pattern from the reuse distances determined in step (c), wherein step (d) comprises forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances, and wherein step (d) further comprises forming a reference histogram of the reuse distances by percentile ranges of the reuse distances. - View Dependent Claims (33, 34, 35)
-
-
36. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search free from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error; (d) determining a reuse pattern from the reuse distances determining in step (c), wherein step (d) comprises forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances; and (e) from the reuse distance histogram, forming an affinity group of at least two data which are always accessed within a distance k of one another, wherein k is a predetermined quantity. - View Dependent Claims (37, 38, 39, 40, 41)
-
-
42. A method for analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device having a memory in which the data are stored and from which the data are accessed, the method comprising:
-
(a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search tree from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error; (d) comparing reuse signatures of the data to determine whether two or more of the data have reuse signatures which differ by less than a predetermined percentage; and (e) for any two or more of the data whose reuse signatures differ by less than said predetermined percentage, identifying a reference affinity among said two or more data.
-
-
43. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search tree from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error; and (d) determining a reuse pattern from the reuse distances determined in step (c), wherein the processor performs step (d) by forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances, and wherein the processor further performs step (d) by forming a reference histogram of the reuse distances by percentile ranges of the reuse distances. - View Dependent Claims (44, 45, 46)
-
-
47. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search tree from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search free in accordance with a bounded relative error; (d) determining a reuse pattern from the reuse distances determined in step (c), wherein the processor performs step (d) by forming a reuse distance histogram of the reuse distances by absolute ranges of the reuse distances, and (e) from the reuse distance histogram, forming an affinity group of at least two data which are always accessed within a distance k of one another, wherein k is a predetermined quantity. - View Dependent Claims (48, 49, 50, 51, 52)
-
-
53. A computing device capable of analyzing reuse patterns of accesses of data by a program running on a computing device, the computing device comprising:
-
a memory in which the data are stored and from which the data are accessed; and a processor, in communication with the memory, for; (a) running the program on the computing device; (b) monitoring the accesses of the data by the program during step (a); (c) determining a reuse distance for each datum from among the data accessed by the program during step (a), the reuse distance being a number of distinct data which are accessed between two accesses of the datum, wherein step (c) comprises; determining a last access time of each of the data; organizing a search tree from the last accesses, wherein the search tree comprises a node for each of the data, the node comprising the last access time and a weight of a sub-tree of the node; and compressing the search tree in accordance with a bounded relative error; (d) comparing reuse signatures of the data to determine whether two or more of the data have reuse signatures which differ by less than a predetermined percentage; and (e) for any two or more of the data whose reuse signatures differ by less than said predetermined percentage, identifying a reference affinity among said two or more data.
-
-
54. A method for analyzing affinities among a plurality of events, the method comprising:
-
(a) monitoring occurrences of the events; (b) determining a reoccurrence distance for each event, the reoccurrence distance being a number of distinct ones of the plurality of events which occur between two occurrences of said each event, wherein step (b) comprises; determining a last occurrence of each of the events; organizing a search free from the last occurrences, wherein the search tree comprises a node for each of the events, the node comprising the last occurrence and a weight of a sub-tree of the node; and compressing the search free in accordance with a bounded relative error; and (c) determining, from the reoccurrence distance determined in step (b), an affinity among at least two of the events, the affinity being a tendency of said at least two of the events to occur together. - View Dependent Claims (55, 56)
-
Specification