AXI(Advanced eXtensible Interface) 和 CHI(Coherent Hub Interface) 协议的接口和特性区别的对比表:
| 特性/接口 | AXI 协议 | CHI 协议 |
|---|---|---|
| 协议类型 | 内存映射接口,专注于数据传输和外设通信 | 缓存一致性接口,专为高性能多核系统设计 |
| 缓存一致性 | 不支持缓存一致性,需要外部机制支持 | 原生支持缓存一致性,适合复杂的多核系统 |
| 数据传输模式 | 支持突发传输(burst),长度可变 | 解耦的请求-响应模型,支持灵活的数据流控制 |
| 地址空间 | 32位或64位的物理地址空间 | 通常为64位地址空间,支持更大的地址范围 |
| 数据通道 | 独立的读/写通道,数据和地址分离 | 使用消息传递模型,包含多个虚拟通道 |
| 读/写事务 | 独立的读写通道,支持同时处理 | 统一的消息模型,请求与响应事务可以解耦 |
| 事务顺序 | 固定的顺序控制 | 灵活的顺序控制,支持无序的请求与响应 |
| 流控制 | 提供有限的流控制机制 | 提供复杂的流控制,支持QoS和多种服务等级 |
| 应用场景 | 嵌入式系统、移动设备、低功耗设备 | 高性能服务器、多核处理器、数据中心 |
| 事务类型 | 简单的读写、锁定和非锁定事务 | 复杂的事务类型,支持缓存一致性、撤销、无效化等操作 |
| 事务确认机制 | 提供基本的写响应和错误处理 | 提供强大的请求、响应、确认机制,支持错误恢复 |
| 消息传递 | 无消息传递,基于地址的数据访问 | 基于消息传递的模型,所有操作通过消息实现 |
| 可扩展性 | 扩展性有限,适合单片SoC | 高度可扩展,适合多核、多片系统 |
| QoS 支持 | 支持基本的优先级控制 | 提供全面的QoS管理,支持不同数据流的优先级和带宽控制 |
| 适配复杂拓扑 | 适合简单的片上总线结构 | 支持复杂的网络拓扑,如环形、网状结构等 |
| 数据完整性 | 依赖外部机制维护一致性和完整性 | 原生支持数据完整性保障,适合高可靠性系统 |
| 通道数 | 5个独立通道:读地址、读数据、写地址、写数据、写响应 | 使用多个虚拟通道(请求、响应、数据、撤销等) |
| 常见实现 | 移动处理器、嵌入式处理器、物联网设备 | 多核服务器、数据中心、高性能计算设备 |
总结:
- AXI 协议 更适合用于内存映射的、相对简单的单片系统,侧重于低延迟和高效的数据传输。
- CHI 协议 设计用于大规模、多核或多片的高性能计算系统,支持复杂的缓存一致性和灵活的数据控制。
以下是 AXI(Advanced eXtensible Interface) 和 CHI(Coherent Hub Interface) 协议的通用接口信号对比表:
| 信号名称 | AXI 协议信号 | CHI 协议信号 |
|---|---|---|
| 地址通道 | ARADDR(读地址) | REQFLIT (请求片段) 请求中包含地址 |
| AWADDR(写地址) | ||
| 地址有效信号 | ARVALID(读地址有效) | 无明确的地址信号,地址信息在请求消息中传递 |
| AWVALID(写地址有效) | ||
| 地址握手信号 | ARREADY(读地址就绪) | 无明确的握手信号 |
| AWREADY(写地址就绪) | ||
| 数据通道 | RDATA(读数据) | DATFLIT (数据片段) 包含实际传输的数据 |
| WDATA(写数据) | ||
| 数据有效信号 | RVALID(读数据有效) | 无明确的有效信号,数据包含在消息传递中 |
| WVALID(写数据有效) | ||
| 数据握手信号 | RREADY(读数据就绪) | 无明确的握手信号 |
| WREADY(写数据就绪) | ||
| 响应通道 | BRESP(写响应) | RSPFLIT (响应片段) 对请求的确认或响应 |
| RRESP(读响应) | ||
| 响应有效信号 | BVALID(写响应有效) | 无明确的有效信号,响应信息在消息中传递 |
| RVALID(读响应有效) | ||
| 响应握手信号 | BREADY(写响应就绪) | 无明确的握手信号 |
| 写响应 | WID(写事务ID) | RSPID(响应ID) 用于关联请求和响应 |
| BID(写响应ID) | ||
| 事务 ID | ARID(读事务ID) | REQID(请求ID) 请求和响应通过ID关联 |
| AWID(写事务ID) | ||
| 事务大小控制 | ARSIZE(读传输大小) | 无明确的传输大小控制信号 |
| AWSIZE(写传输大小) | ||
| 突发传输控制 | ARBURST(读突发类型) | REQBURST(请求突发类型) 支持多种突发类型 |
| AWBURST(写突发类型) | ||
| 突发长度控制 | ARLEN(读突发长度) | REQLEN(请求长度) 支持可变突发长度 |
| AWLEN(写突发长度) | ||
| 锁定控制 | ARLOCK(读锁定) | REQLOCK(请求锁定) 用于原子操作 |
| AWLOCK(写锁定) | ||
| 保护控制 | ARPROT(读保护类型) | 无直接的保护类型信号 |
| AWPROT(写保护类型) | ||
| 质量控制(QoS) | ARQOS(读QoS) | REQQOS(请求QoS) 支持数据流的优先级和带宽控制 |
| AWQOS(写QoS) | ||
| 缓存控制 | ARCACHE(读缓存类型) | REQCACHE(请求缓存类型) 用于缓存一致性管理 |
| AWCACHE(写缓存类型) | ||
| 用户定义信号 | ARUSER(读用户信号) | REQUSER(请求用户信号) 可自定义的附加信号 |
| AWUSER(写用户信号) | ||
| 系统信号 | ACLK(时钟) | HCLK(时钟) |
| ARESETn(复位) | HRESETn(复位) |
主要区别:
- AXI 协议 使用独立的地址、数据和响应通道,信号较为明确,主要用于数据传输而不涉及缓存一致性管理。
- CHI 协议 则是基于消息的系统,很多操作通过消息封装进行传递,因此没有传统的地址、数据、响应信号。CHI 适用于高性能多核系统的缓存一致性操作。