简介
CCIX是一种能够将两个或两个以上器件通过缓存一致性的方式来共享数据的芯片间互联技术。CCIX旨在简化异构系统的架构设计,同时基于不同指令集(ISA)的处理器或应用特定的加速器提升系统的带宽、降低时延。为此,多家公司联合成立了一家新的行业标准机构—CCIX联盟,以推动CCIX技术的应用。如今,CCIX联盟逐渐发展壮大。
对于芯片互联网络,有两个指标是至关重要的:带宽和延时。CCIX 采用两种机制来提高性能、降低延时。第一种机制是采用缓存一致性,自动保持处理器和加速器的缓存一致,提升易用性、降低延时。第二种机制是提高CCIX 链路的原始带宽。最高的连接速率升至25GT/s (千兆传输/秒)。同时,CCIX 规范也规定了多个CCIX 端口可以通过端口聚合(PortAggregation)技术,提供超过单个接口的性能,匹配加速器和内存扩展带宽。
CCIX 架构采用的是基于PCIe基本架构扩展的分层架构。CCIX 协议规范包含CCIX 协议层和CCIX链路层。这些层规定缓存一致性协议、报文发送、流量控制和CCIX 传输部分的协议。CCIX 传输规范包含CCIX 和PCIe事务层,PCIe 数据链路层,和CCIX 物理层。这些层负责器件间的物理连接,包括速率和带宽协商,传输包错误检测和重试,和初始包编码协议。
- CCIX 协议层(CCIX Protocol Layer),负责一致性协议,包括内存的读/写。这一层提供了片上(On Chip)一致性协议(例如AMBA CHI)的简单映射。这一层定义的缓存状态使得硬件能够确定内存的状态。比如硬件可以确定数据是否唯一且未被修改(和内存一致),或是共享且被修改的(和内存不一致)。
- CCIX 链路层(CCIX Link Layer),负责CCIX 协议层定义的代理(Agent)之间消息的传输格式。目前CCIX 链路层是构建在PCIe 之上,但是基于分层架构,CCIX 将来可以映射到不同的传输层。此外,这一层负责端口聚合(Port Aggregation),使得多个端口能够聚合在一起提升带宽。
- CCIX 和PCIe 事务层(CCIX and PCIe Transaction Layer),负责处理它们各自的数据包。PCIe 协议支持部署虚拟通道,使得不同数据流可以通过一个PCIe 链路。将CCIX 和PCIe 传输流各分到一个虚拟通道,CCIX和PCIe 传输可以共享相同的链路。CCIX 能够传输标准的PCIe 包,或经过优化的CCIX 包(删减了PCIe 包里的几个不必要的字段)。传输标准的PCIe 包时,可以采用现有的PCIe 交换器。传输经过优化的CCIX 包,能降低PCIe的额外开销,使得一致性传输的包更小、更高效。
- PCIe数据链路层,执行数据链路层的所有正常功能。这些功能包括CRC错误校验、包确认和超时检查,和信用初始化及交换。
- CCIX/PCIe物理层的基础是PCIe 物理层。CCIX 扩展了物理层来支持25GT/S(千兆传输/秒)。这个较快的速率称为扩展速率模式(Extended Speed Mode,ESM)。
简单分析完CCIX分层结构,再来看CCIX的拓朴结构。CCIX 能够支持多种灵活的拓扑结构,如下图。
所有的CCIX器件至少有一个CCIX端口。一个CCIX端口可以关联一组物理管脚,用于和另一个CCIX 端口连接,在两个或多个不同芯片间交互信息。
CCIX定义的代理类型包括:请求代理(RA)、主代理(HA)、从代理(SA)和错误代理(EA)。这些代理,和系统里的端口及链接统称CCIX 组件。一个代理在协议中用一个代理ID 来标识。
- 请求代理(Request Agent):一个请求代理对系统内的不同地址进行读、写操作。请求代理可以对它已经访问的地址的数据进行缓存。每个CCIX 请求代理可以有一个或多个处理单元(Processing Element)作为内部请求的发起者,请求由一个CCIX 架构的请求代理执行。根本上说CCIX 请求代理提供了加速器或CCIX 使能的IO 主设备向一致性系统内存的接口。
- 主代理(Home Agent):主代理负责管理指定的一段地址的数据一致性。当一个缓存行的状态需要改变时,主代理通过向所需的请求代理发出监听操作来保持一致性。
- 从代理(Slave Agent):CCIX 支持扩展系统内存,来包含外设所附的内存。这种情形出现在主代理在一个芯片上,而这个主代理关联的一些或全部物理内存在另一个芯片上时。这种架构组件(扩展内存)称为从代理。从代理不会被请求代理直接访问。请求代理总是访问一个主代理,然后主代理再访问从代理。
- 错误代理(Error Agent):一个错误代理接收并处理协议错误信息。协议错误信息由CCIX 组件发出。
CCIX 的一个关键优势,是它能支持主设备和加速器间通过采用无驱动的数据移动方式共享数据。而传统的PCIe 加速器需要驱动对加速器写入和读出数据,这增加了延时和计算开销。采用无驱动的数据移动方式,CCIX 还可以将系统内存扩展至主设备的内存之外。基于CCIX,每个支持CCIX 的设备的行为与现有NUMA操作系统中的节点类似。这种基于内存的方法利用了现有的操作系统功能。在这种模式下,用来共享的所有数据结构都放在处理器和加速器都可访问的共享内存里。这种数据共享模型可以消除加速器特定的控制与管理驱动,允许加速器资源由一个中心调度器安排的长时间运行的任务来调用。这个调度器可以是操作系统调度程序的一部分,或者是和操作系统调度程序协同。
以上是对CCIX规范的简单介绍,后面我们开始逐步分析CCIX规范。
原文链接:老秦谈芯
作者:老秦谈芯
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。