CHI协议包类型

1. 请求包 (Request Packets)

这是事务的发起者,携带地址和控制信息。

A. 一致性请求 (Coherent Requests)

这些请求影响缓存一致性状态。

|----------------------|------|------------|----------------|
| ReadShared​ | RdSh | 读共享,可能返回数据 | CPU 读,希望获得共享副本 |
| ReadUnique​ | RdUn | 读唯一,获取独占权限 | 写入前,需要独占所有权 |
| ReadNoSnp​ | RdNs | 读但不触发侦听 | 无缓存设备读取 |
| ReadOnce​ | RdOn | 读一次,不缓存 | DMA 读取,不缓存 |
| CleanShared​ | ClSh | 清理共享副本 | 写回共享行,不保留副本 |
| CleanInvalid​ | ClIn | 清理并无效化 | 写回并放弃所有权 |
| MakeInvalid​ | MkIn | 使无效 | 强制其他缓存无效化该行 |
| WriteBackFull​ | WrBf | 完整写回 | 写回脏数据到内存 |
| WriteEvictFull​ | WrEf | 写回并驱逐 | 写回后从缓存移除 |
| WriteNoSnpPtl​ | WrNP | 部分写,不侦听 | 无缓存设备部分写 |
| WriteNoSnpFull​ | WrNF | 完整写,不侦听 | 无缓存设备完整写 |
| WriteUniquePtl​ | WrUP | 部分写,获取唯一 | 有缓存设备部分写 |
| WriteUniqueFull​ | WrUF | 完整写,获取唯一 | 有缓存设备完整写 |
| WriteLineUnique​ | WrLU | 写行,获取唯一 | 缓存行大小的写操作 |

B. 非一致性请求 (Non-coherent Requests)

这些请求不会影响缓存一致性。

|---------------------|------|---------|
| ReadNoSnp​ | RdNs | 非一致性读 |
| WriteNoSnpPtl​ | WrNP | 非一致性部分写 |
| WriteNoSnpFull​ | WrNF | 非一致性完整写 |
| PCrdReturn​ | PCrd | 协议信用返回 |


2. 数据包 (Data Packets)

携带实际的数据负载,可以伴随请求或响应。

|---------------------|------|---------|-----------|
| SnpRespData​ | SnpD | RN → HN | 响应侦听请求的数据 |
| CompData​ | CmpD | HN → RN | 完成请求的数据 |
| CopyBackWrData​ | CpWr | RN → HN | 写回数据 |
| NCBWrData​ | NCWr | RN → HN | 非一致性写数据 |
| WriteData​ | WrD | RN → HN | 写数据 |

关键点 :数据包是独立的,与请求/响应包分离,允许更灵活的流控。


3. 响应包 (Response Packets)

表示事务状态,不携带数据。

A. 完成响应 (Completion Responses)

表示事务最终完成。

|-------------------|------|---------|----------|
| Comp​ | Cmp | HN → RN | 事务完成,无数据 |
| CompData​ | CmpD | HN → RN | 事务完成,带数据 |
| CompDBIDResp​ | CmpR | HN → RN | 完成+数据库响应 |
| RetryAck​ | RtyA | HN → RN | 重试确认 |
| PCrdGrant​ | PCrd | HN → RN | 协议信用授予 |

B. 分离响应 (Snoop Responses)

对侦听请求的立即响应。

|---------------------|------|---------|-----------|
| SnpResp​ | SnpR | RN → HN | 侦听响应 |
| SnpRespData​ | SnpD | RN → HN | 侦听响应+数据 |
| SnpRespDataPtl​ | SnpP | RN → HN | 侦听响应+部分数据 |

C. 数据库响应 (DBID Responses)

用于流控和信用管理。

|-------------------|------|-----------|
| DBIDResp​ | DBID | 数据缓冲区释放 |
| CompDBIDResp​ | CmpR | 完成+DBID响应 |


4. 侦听请求包 (Snoop Request Packets)

由 Home Node 发出,查询或修改远程缓存状态。

|------------------------|------|---------|---------|
| SnpOnce​ | SnpO | 获取数据副本 | 读共享请求 |
| SnpOnceFwd​ | SnpF | 获取数据并转发 | 优化数据传递 |
| SnpClean​ | SnpC | 清理数据 | 写回前清理 |
| SnpCleanFwd​ | SnCF | 清理并转发 | 带转发的清理 |
| SnpNotSharedDirty​ | SnpN | 检查非共享脏 | 优化操作 |
| SnpSharedFwd​ | SnSF | 共享转发 | 共享数据转发 |
| SnpUniqueFwd​ | SnUF | 唯一转发 | 唯一数据转发 |
| SnpMakeInvalid​ | SnpI | 使无效 | 写入前的无效化 |


5. 特殊/控制包

|------------------|-------------|
| Observe​ | 观察请求,不影响一致性 |
| PrefetchTgt​ | 预取目标 |
| Evict​ | 驱逐通知 |
| CleanUnique​ | 清理唯一副本 |
| StashOnce​ | 暂存数据到特定缓存 |

相关推荐
比姚明高一截18 天前
ARM CHI 全品类事务 终极汇总总表
chi
比姚明高一截18 天前
CHI Read 事务全流程解析
chi
比姚明高一截19 天前
CHI Write 事务全流程解析
chi
比姚明高一截1 个月前
第一部分:CHI协议基础与架构概览
chi
比姚明高一截1 个月前
第二部分:CHI协议核心机制详解
chi
元直数字电路验证3 个月前
CHI 协议导论与宏观架构
chi·ace·abma
比姚明高一截4 个月前
ARM CMN-700 架构设计与实现指南
chi·arm cmn-700
mustfeng6 个月前
CHI协议学习记录
chi
CodingCos3 年前
【ARM AMBA5 CHI 入门 12 -- CHI 总线学习 】
chi·home node·rn·hn·sn·ci-700·chi sam