authors: Jason Lowe-Power
last edited: 2023-01-11 16:05:55 +0000

Indexing Policies

Indexing policies determine the locations to which a block is mapped based on its address.

The most important methods of indexing policies are getPossibleEntries() and regenerateAddr():

For further information on Cache Indexing Policies, please refer to the wikipedia articles on Placement Policies and Associativity.

Set Associative

The set associative indexing policy is the standard for table-like structures, and can be further divided into Direct-Mapped (or 1-way set-associative), Set-Associative and Full-Associative (N-way set-associative, where N is the number of table entries).

A set associative cache can be seen as a skewed associative cache whose skewing function maps to the same value for every way.

Skewed Associative

The skewed associative indexing policy has a variable mapping based on a hash function, so a value x can be mapped to different sets, based on the way being used. Gem5 implements skewed caches as described in “Skewed-Associative Caches”, from Seznec et al.

Note that there are only a limited number of implemented hashing functions, so if the number of ways is higher than that number then a sub-optimal automatically generated hash function is used.