gem5 文档
开发
构建
使用 KVM
Sphinx 文档
Doxygen 文档
gem5 API
全系统模拟 (Full System)
内存系统
Ruby 内存系统
检查点 (Checkpoints)
定向测试器 (Directed Testers)
调试 (Debugging)
架构支持
功耗与热模型
编译工作负载
统计包 (Stats)
统计 API
Develop 分支
v19.0.0.0
v20.0.0.0
v20.0.0.2
v20.0.0.3
v20.1.0.0
v20.1.0.1
v20.1.0.5
v21.0.0.0
v21.0.1.0
v21.1.0.0
v21.1.0.1
v21.1.0.2
v21.2.0.0
v21.2.1.0
v21.2.1.1
v22.0.0.0
v22.0.0.1
v22.1.0.0
v23.0.0.0
v23.0.0.1
v24.1.0.1
gem5 标准库 (Stdlib)
gem5 资源 (Resources)
Ruby 概述
缓存一致性协议
Garnet 2.0
HeteroGarnet
MOESI CMP 目录
Garnet 合成流量
SLICC 语言
MI 示例
Garnet 独立运行
互连网络
MOESI Hammer
MOESI CMP Token
MESI 两级缓存
CHI 协议
替换策略
CPU 模型
GPU 模型
M5ops 指令
authors: Jason Lowe-Power
last edited: 2026-01-30 06:21:33 +0000
last edited: 2026-01-30 06:21:33 +0000
索引策略
索引策略根据块的地址确定块映射到的位置。
索引策略最重要的方法是 getPossibleEntries() 和 regenerateAddr():
- getPossibleEntries() 确定给定地址可以映射到的条目列表。
- regenerateAddr() 使用存储在条目中的地址信息来确定其完整的原始地址。
有关缓存索引策略的更多信息,请参阅关于 放置策略 和 关联性 的维基百科文章。
Set Associative
组相联索引策略是类表结构的标准,可以进一步分为直接映射(或 1 路组相联)、组相联和全相联(N 路组相联,其中 N 是表条目的数量)。
组相联缓存可以看作是一种倾斜相联缓存,其倾斜函数映射到每一路的相同值。
Skewed Associative
倾斜相联索引策略具有基于哈希函数的可变映射,因此值 x 可以根据所使用的路映射到不同的组。Gem5 实现了 Seznec 等人在 “Skewed-Associative Caches” 中描述的倾斜缓存。
请注意,已实现的哈希函数数量有限,因此如果路数高于该数量,则使用次优的自动生成哈希函数。
