在存储子系统中,只有 “Cacheable(可缓存)” 属性的请求会经过 L1D Cache 的缓存逻辑,具体可根据内存属性的细分类型进一步划分,以下是常见的可缓存属性及对应行为:
核心前提
只有标记为Cacheable的请求,才会触发 L1D Cache 的标签检查、命中判断、缓存读写等核心流程;非Cacheable请求会直接绕过缓存逻辑(仅转发)。
常见的 Cacheable 属性请求类型
以下属性的请求都会经过 L1D Cache 的缓存处理:
1. Write-Back + Write-Allocate(写回 + 写分配)
- 是 L1D Cache 最常用的属性组合;
- 行为:
- 写请求未命中时,会加载目标缓存行到 L1D(写分配);
- 写请求命中时,仅修改 L1D 缓存行(不立即写回下一级存储,写回策略);
- 缓存行被替换时,脏数据会写回下一级存储。
2. Write-Through + Write-Allocate(写透 + 写分配)
- 行为:
- 写请求未命中时,加载目标缓存行到 L1D(写分配);
- 写请求命中时,同时修改 L1D 缓存行 并立即写回下一级存储(写透策略);
- 缓存行替换时,无需写回(因为已实时同步)。
3. Write-Back + Write-No-Allocate(写回 + 写不分配)
- 行为:
- 写请求未命中时,不加载缓存行到 L1D(写不分配),直接写向下一级存储;
- 写请求命中时,仅修改 L1D 缓存行(写回策略);
- 适用于 “流式写” 场景(如大文件写入,避免缓存行频繁替换)。
4. Read-Allocate(读分配)
- 所有 Cacheable 的读请求默认触发读分配:
- 读请求未命中时,加载目标缓存行到 L1D;
- 读请求命中时,直接从 L1D 返回数据。
5. Shared/Unique(共享 / 唯一)属性的 Cacheable 请求
- 在 ACE/CHI 等一致性协议中,Cacheable 请求还会携带共享属性:
Shared:缓存行可被多个主设备共享(读操作);Unique:缓存行仅当前主设备独占(可修改);
- 这些请求都会经过 L1D Cache,并触发对应的一致性监听逻辑。
总结
只有 **Cacheable属性 ** 的请求会经过 L1D Cache 的缓存逻辑,具体包括:
- 写回 / 写透、写分配 / 写不分配等组合的写请求;
- 读分配的读请求;
- 带共享 / 唯一属性的一致性请求。
非 Cacheable 的请求(如设备寄存器访问)会直接绕过 L1D Cache 的缓存流程。
1550

被折叠的 条评论
为什么被折叠?



