System and method for partitioning of memory units into non-conflicting sets
First Claim
1. A method for managing memory in a computer comprising, for each of at least one input set of memory addresses, and iteratively for each of the memory addresses in the at least one input set:
- a) loading a current memory address, belonging to the at least one input set, into a processor cache;
b) detecting whether an eviction occurs from the cache as a result of the loading of current memory address into the processor cache;
c) if an eviction is detected;
i) adding the current memory address to a conflict set of memory addresses;
ii) flushing the cache; and
iii) loading the conflict set into the cache;
d) if no eviction is detected, determining whether all of the input set of memory addresses has been loaded into the cache and, if not, loading a next one of the input set of memory addresses into a processor cache;
whereby the input set of memory addresses is determined to be partitioned into a plurality of partitions such that memory addresses that conflict in the cache belong to the same partition, whereas memory addresses belonging to different partitions do not conflict in the cache.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method of operation exploit the limited associativity of a single cache set to force observable cache evictions and discover conflicts. Loads are issued to input memory addresses, one at a time, until a cache eviction is detected. After observing a cache eviction on a load from an address, that address is added to a data structure representing the current conflict set. The cache is then flushed, and loads are issued to all addresses in the current conflict set, so that all known conflicting addresses are accessed first, ensuring that the next cache miss will occur on a different conflicting address. The process is repeated, issuing loads from all input memory addresses, incrementally finding conflicting addresses, one by one. Memory addresses that conflict in the cache belong to the same partition, whereas memory addresses belonging to different partitions do not conflict.
70 Citations
27 Claims
-
1. A method for managing memory in a computer comprising, for each of at least one input set of memory addresses, and iteratively for each of the memory addresses in the at least one input set:
-
a) loading a current memory address, belonging to the at least one input set, into a processor cache; b) detecting whether an eviction occurs from the cache as a result of the loading of current memory address into the processor cache; c) if an eviction is detected; i) adding the current memory address to a conflict set of memory addresses; ii) flushing the cache; and iii) loading the conflict set into the cache; d) if no eviction is detected, determining whether all of the input set of memory addresses has been loaded into the cache and, if not, loading a next one of the input set of memory addresses into a processor cache; whereby the input set of memory addresses is determined to be partitioned into a plurality of partitions such that memory addresses that conflict in the cache belong to the same partition, whereas memory addresses belonging to different partitions do not conflict in the cache. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for managing memory in a computer comprising:
-
a processor; a processor cache; a cache partitioning module being configured, for each of at least one input set of memory addresses, and iteratively for each of the memory addresses in the at least one input set, for; a) loading a current memory address, belonging to the at least one input set, into a processor cache; b) detecting whether an eviction occurs from the cache as a result of the loading of current memory address into the processor cache; c) if an eviction is detected; i) adding the current memory address to a conflict set of memory addresses; ii) flushing the cache; and iii) loading the conflict set into the cache; d) if no eviction is detected, determining whether all of the input set of memory addresses has been loaded into the cache and, if not, loading a next one of the input set of memory addresses into a processor cache; whereby the input set of memory addresses is determined to be partitioned into a plurality of partitions such that memory addresses that conflict in the cache belong to the same partition, whereas memory addresses belonging to different partitions do not conflict in the cache. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A non-transitory computer-readable storage medium storing instructions, the instructions, when executed by a processor, causing the processor:
-
for each of at least one input set of memory addresses, and iteratively for each of the memory addresses in the at least one input set; a) to load a current memory address, belonging to the at least one input set, into a processor cache; b) to detect whether an eviction occurs from the cache as a result of the loading of current memory address into the processor cache; c) if an eviction is detected; i) to add the current memory address to a conflict set of memory addresses; ii) to flush the cache; and iii) to load the conflict set into the cache; and d) if no eviction is detected, to determine whether all of the input set of memory addresses has been loaded into the cache and, if not, to load a next one of the input set of memory addresses into a processor cache; whereby the input set of memory addresses is determined to be partitioned into a plurality of partitions such that memory addresses that conflict in the cache belong to the same partition, whereas memory addresses belonging to different partitions do not conflict in the cache. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
-
21. A computer program product having a non-transitory computer-readable storage medium storing computer-executable code, the code comprising a cache partitioning module configured, for each of at least one input set of memory addresses, and iteratively for each of the memory addresses in the at least one input set:
-
a) to load a current memory address, belonging to the at least one input set, into a processor cache; b) to detect whether an eviction occurs from the cache as a result of the loading of current memory address into the processor cache; c) if an eviction is detected; i) to add the current memory address to a conflict set of memory addresses; ii) to flush the cache; and iii) to load the conflict set into the cache; and d) if no eviction is detected, to determine whether all of the input set of memory addresses has been loaded into the cache and, if not, to load a next one of the input set of memory addresses into a processor cache; whereby the input set of memory addresses is determined to be partitioned into a plurality of partitions such that memory addresses that conflict in the cache belong to the same partition, whereas memory addresses belonging to different partitions do not conflict in the cache. - View Dependent Claims (22, 23, 24, 25, 26, 27)
-
Specification