目录
一、集合关联(Set Associative)
二、倾斜关联(Skewed Associative)
索引策略确定基于地址将一个块映射到哪个位置。
索引策略的最重要方法是getPossibleEntries()和regenerateAddr():
- getPossibleEntries()用于确定给定地址可以映射到的条目列表。它根据地址信息,计算并返回所有可能的条目。
- regenerateAddr()使用存储在条目中的地址信息确定其完整的原始地址。可以将条目中的地址信息还原为其最初的地址形式。
有关缓存索引策略的更多信息,请参阅维基百科上有关放置策略和关联性的文章。
一、集合关联(Set Associative)
集合关联的索引策略是表格结构缓存中的常用方法,它可以进一步分为直接映射(也称1路集合关联)、集合关联和全关联(N路集合关联,其中N是表格条目的数量)。
在集合关联缓存中,缓存被分成若干个集合,每个集合包含多个路(也称为组或槽)。直接映射缓存是最简单的形式,每个地址只能映射到一个特定的集合中的一个路。
集合关联缓存增加了灵活性,允许一个地址映射到一个集合中的多个路。例如,一个2路集合关联缓存可以将一个地址映射到集合中的两个不同路中的任意一个。
全关联缓存是集合关联的极端形式,每个地址可以映射到任意一个路,不受集合的限制。这意味着每个地址都可以在整个缓存中进行搜索,提供了最大的灵活性和缓存命中率。
倾斜关联是一种特殊形式的集合关联缓存。它通过使用一个倾斜函数,将每个地址映射到所有路中的相同位置。这个倾斜函数可以是一个简单的函数,例如取模运算,使得每个地址都被映射到相同位置的不同路中。
二、倾斜关联(Skewed Associative)
倾斜关联是一种特殊的索引策略,它基于哈希函数进行可变映射。这意味着对于给定的值x和所使用的路,可以将x映射到不同的集合。具体的映射方式是通过哈希函数计算得出的。
Gem5实现了Seznec等人在《Skewed-Associative Caches》中描述的倾斜缓存。
需要注意的是,实际可用的哈希函数数量是有限的。如果路的数量超过了可用的哈希函数数量,那么就会使用一个次优的自动生成的哈希函数。这意味着在这种情况下,可能会使用不太理想的哈希函数来进行地址映射。
这个教程比较简单,本来不准备写的,但是强迫症还是不想断了节奏,所以还是简单写写吧。