gem5 documentation
Development
Building
Using KVM
Sphinx Documentation
Doxygen
gem5 APIs
Full System
Checkpoints
Directed Testers
Debugging
Architecture Support
Power and Thermal Model
Compiling Workloads
Stats Package
Stats API
Develop Branch
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 standard library
Standard Library Overview
Hello World Tutorial
X86 Full-System Tutorial
Developing Your Own Components Tutorial
How To Create Your Own Board Using The gem5 Standard Library
How to use local resources and data sources in gem5
gem5 Resources
Creating Disk Images
Devices
m5term
Building Linux ARM Kernel
Building Android Marshmallow
Guest binaries
Memory System
Memory System
gem5 Memory System
Replacement Policies
Indexing Policies
Classic memory system coherence
Classic caches
Ruby Memory System
Ruby
Cache Coherence Protocols
Garnet 2.0
HeteroGarnet
MOESI CMP directory
Garnet Synthetic Traffic
SLICC
MI example
Garnet standalone
Interconnection network
MOESI hammer
MOESI CMP token
MESI two level
CHI
Replacement Policies
CPU Models
GPU Models
M5ops
authors: Jason Lowe-Power
MOESI CMP token
协议概述
- 该协议还建模了 2 级缓存层次结构。
- 它通过显式交换和计数 token 来维护一致性权限。
- 在开始时为每个缓存块分配固定数量的 token,token 数量保持不变。
- 要写入块,处理器必须拥有该块的所有 token。读取至少需要一个 token。
- 该协议还具有持久消息支持以避免饥饿。
相关文件
- src/mem/protocols
- MOESI_CMP_token-L1cache.sm: L1 缓存控制器规范
- MOESI_CMP_token-L2cache.sm: L2 缓存控制器规范
- MOESI_CMP_token-dir.sm: 目录控制器规范
- MOESI_CMP_token-dma.sm: DMA 控制器规范
- MOESI_CMP_token-msg.sm: 消息类型规范
- MOESI_CMP_token.slicc: 容器文件
控制器描述
L1 缓存
| 状态 | 不变式 |
|---|---|
| MM | 缓存块由该节点独占持有,并且可能已被修改(类似于传统的 “M” 状态)。 |
| MM_W | 缓存块由该节点独占持有,并且可能已被修改(类似于传统的 “M” 状态)。在此状态下不允许替换和 DMA 访问。块在超时后自动转换到 MM 状态。 |
| O | 缓存块由该节点拥有。它尚未被该节点修改。没有其他节点以独占模式持有此块,但可能存在共享者。 |
| M | 缓存块以独占模式持有,但尚未写入(类似于传统的 “E” 状态)。没有其他节点持有此块的副本。在此状态下不允许存储。 |
| M_W | 缓存块以独占模式持有,但尚未写入(类似于传统的 “E” 状态)。没有其他节点持有此块的副本。仅允许加载和存储。在存储时静默升级到 MM_W 状态。在此状态下不允许替换和 DMA 访问。块在超时后自动转换到 M 状态。 |
| S | 缓存块由 1 个或多个节点在共享状态下持有。在此状态下不允许存储。 |
| I | 缓存块无效。 |
L2 缓存
| 状态 | 不变式 |
|---|---|
| NP | 缓存块由该节点独占持有,并且可能已被本地修改(类似于传统的 “M” 状态)。 |
| O | 缓存块由该节点拥有。它尚未被该节点修改。没有其他节点以独占模式持有此块,但可能存在共享者。 |
| M | 缓存块以独占模式持有,但尚未写入(类似于传统的 “E” 状态)。没有其他节点持有此块的副本。在此状态下不允许存储。 |
| S | 缓存行保存数据的最新、正确副本。系统中的其他处理器也可能在共享状态下保存数据的副本。在此状态下可以读取缓存行,但不能写入。 |
| I | 缓存行无效,不保存数据的有效副本。 |
目录控制器
| 状态 | 不变式 |
|---|---|
| O | 所有者。 |
| NO | 非所有者。 |
| L | 已锁定。 |
