加速器高速缓存相干互连标准,或CCIX(读作“见6”),是建立在PCI Express (PCIe)之上,为高速硬件加速器提供芯片对芯片互连。它的目标是机器学习和fpga等应用。该标准与PCIe交换机一起工作,并与PCI Express协议一起提供高带宽、低延迟的互连。
CCIX刚刚发布,所以硬件是未来的趋势。这也意味着处理器需要支持它来利用加速器甚至内存。稍后会有更多关于记忆的内容。
最初,PCIe被设计成一个替代PCI总线的外围互连设备,PCI总线取代了ISA总线。PCIe是一种多车道点对点互联,可以从一个车道扩展到多个车道。顶端通常是x16,这些连接通常用于支持gpu。PCIe被用来使用面向内存的加载/存储函数语义在外设和主机之间移动数据,但是在主机和外设内存区域之间没有缓存一致性的概念。
1.CCIX通过PCI Express将缓存一致的共享内存引入系统。
另一方面,CCIX带来了主机处理器和加速器/外设之间共享内存和缓存一致性的思想(图1).这种支持需要一种不同的协议,类似于在提供一致缓存的内存环境的多处理器系统中使用的协议。
那么为什么不使用这些连接来连接加速器呢?
大多数(可能是全部)多处理器缓存互连都是专有的,并且针对所涉及的处理器进行了调优。可以附加额外的设备,但支持将专门针对特定的供应商。PCIe是这些系统上的一种通用互连方式,其基于交换机的扩展非常适合支持多个CCIX加速器。CCIX体系结构建立在此基础上(图2).
2.CCIX协议使用PCI Express数据链路和物理层与传统的PCI Express协议并行运行。
CCIX加速器同时支持CCIX事务层和PCIe事务层。后者用于加速器的发现和配置,而CCIX端处理内存事务。这允许使用标准的PCIe支持来协商PCIe连接的速度和宽度。也可以通过PCIe侧配置加速器。
CCIX支持一系列连接拓扑(图3),但底层的PCIe树结构仍然存在。在更复杂的系统中,CCIX支持提供跨加速器连接的缓存一致内存支持。
3.CCIX支持许多不同的拓扑,尽管仍然有底层的PCIe树结构。
那么CCIX加速器是一种什么样的设备呢?fpga就是适合这个插槽的一种设备。记忆是另一个。在所有情况下,加速器都有一些与整个系统共享的内存。这意味着有一个寻址方案,所有设备和主机都可以访问所有内存。这是缓存的NUMA架构,因此在操作开始和结束之间会有延迟。虽然保持低延迟很重要,但一致性是最重要的。
该系统实质上实现了异构系统架构(HSA)在AMD的加速处理单元(APU)中发现,它将cpu和gpu结合成一个公共的内存架构。不同之处在于,CCIX构建在开放标准PCIe上。有许多HSA实现,但它们都是专有的。HSA提供了像CCIX这样的公共内存访问环境。
CCIX最终可能会对系统的设计产生重大影响,包括如何将内存连接到系统。主板上内存的一个挑战是,它受到内存通道和插槽的限制。板外存储通常位于控制器之后,例如基于pcie的NVMe设备或面向磁盘的SAS或SATA设备。CCIX将允许通过PCIe(可放置在PCIe卡上)或通过PCIe线缆扩展到另一块板来增加字节寻址、缓存一致的存储器。可以增加的内存数量会受到PCIe交换机和布线系统的限制,而不是主板的大小。
CCIX可能会对未来的GPU架构和机器学习产生重大影响。这种连接将允许供应商提供与CCIX兼容的设备,任何支持CCIX的主机都可以使用这些设备。从包含主机和一个或多个CCIX设备的板到已经使用PCIe的扩展系统,配置将有所不同。实际上,只有主机和CCIX设备需要了解CCIX协议,因为它对系统中的任何布线或PCIe交换机都是透明的。
CCIX有许多采用者。从长远来看,这还有待观察,但FPGA实现已经存在。