Page 48 - 《软件学报》2025年第9期
P. 48
韩金池 等: Spike-FlexiCAS: 支持缓存架构灵活配置的 RISC-V 处理器模拟器 3959
核-0 核-1
L1I-0 L1D-0 L1I-1 L1D-1
Inner Inner Inner Inner
Cache Policy Cache Policy Cache Policy Cache Policy
Outer Outer Outer Outer
Inner Inner Inner Inner
L2-0 L2-1
Cache Policy Cache Policy
Outer Outer
一致性总线
LLC-S0 Inner LLC-S1 Inner
Cache Policy Cache Policy
Outer Outer
内存总线
Inner
内存
图 2 包含两个处理器核和三级缓存的系统
表 3 上下级缓存通信端口间传递的消息类型
消息类型 方向 缓存与缓存 缓存 (LLC) 与内存
获取 内侧端口向外侧端口 上级缓存请求读一个缓存块或权限升级 LLC 请求从内存读取数据
探测 外侧端口向内侧端口 下级缓存请求上级驱逐或写回一个缓存块 未使用
写回 内侧端口向外侧端口 上级缓存写回一个缓存块 LLC 向内存写回一个缓存块
授予 外侧端口向内侧端口 下级缓存回复上级缓存的获取请求 LLC 获得之前请求读的数据
冲刷 内侧端口向外侧端口 请求冲刷一个缓存块 未使用
完成 内侧端口向外侧端口 上级缓存标识请求事务的结束 未使用
表 4 一级缓存与处理器通信的消息类型
消息类型 携带参数 是否必要 功能
读 地址 是 请求读一个地址的数据
写 地址, 写数据 否 请求写一个地址
冲刷 地址 是 请求冲刷一个地址
写回 地址 否 请求写回一个地址
冲刷缓存 无 是 请求冲刷整个缓存
2.1.2 具体实现
上下级缓存的包含关系和缓存的存储结构决定着通信事务处理的流程. FlexiCAS 内侧端口的 UML 框架图如
图 3 所示. 内侧基类端口作为抽象基类, 定义了通信协议中的接口函数. 包含性内侧端口继承自内侧基类端口, 它
实现了不参与一致性的缓存需要的通信接口, 还定义了通信事务处理需要的通用接口并基于包含性的缓存关系进
行了实现. 排他性内侧端口和非包含非排他性内侧端口都继承自包含性内侧端口, 它们分别基于排他性包含关系

