CCIX 标准简介

本贴最后更新于 597 天前,其中的信息可能已经东海扬尘
* [https://zhuanlan.zhihu.com/p/375519357 - 知乎专栏](https://zhuanlan.zhihu.com/p/375519357)
* 随着众核时代的到来,系统架构由SoC演进到Chiplet。Chiplet的实现分为物理层、接口层、通信层和协议层,具体在正文中有描述,这里着重介绍一下协议层中的CCIX标准。 随着机器学习和大数据应用的高速发展,仅以中央…
* 2023-01-06 09:16:12

随着众核时代的到来,系统架构由 SoC 演进到 Chiplet。Chiplet 的实现分为物理层、接口层、通信层和协议层,具体在正文中有描述,这里着重介绍一下协议层中的 CCIX 标准。

随着机器学习和大数据应用的高速发展,仅以中央处理器为中心的服务器架构无法满足这些应用的性能需求,因此需要高效的异构计算架构,如图形处理单元(GPU)、可编程逻辑阵列(FPGA)、智能网卡(NIC)和很多其它领域特定的可编程器件等。对目前很多计算任务,加速器能够比单独的处理器速度更快、功耗更低的完成所需功能。但是,不受管控的异构会带来软件复杂性。当前主要采用 PCIe 作为处理器和片外加速器间传输数据的协议,但面对基于不同指令集(ISA)的处理器或应用特定的加速器如何提升带宽、降低时延、增加易用性,成为下一代互联的首要诉求。

为解决下一代互联问题,由处理器、加速器和其它外设厂商促成了 CCIX 联盟的成立,希望通过变革加速器的内存和数据移动的方式制定出新的互联标准,来保证片间无缝传输,实现片外加速器互联。

适用于加速器的缓存一致性互联标准(CCIX,Cache Coherent Interconnect for Accelerators,也读成“see 6”)采用两种机制来提高性能、降低延时。第一种是采用缓存一致性,自动保持处理器和加速器的缓存一致,提升易用性、降低延时;第二种是提高 CCIX 链接的原始带宽,最高链接速率升至 25GT/s(千兆传输/秒)。CCIX 规范也规定了多个 CCIX 端口如何聚合,以提供超过单个接口的性能,匹配加速器和内存扩展带宽。

在多核系统中,针对缓存一致性问题已经有了很多技术手段(如 ARM 的 CCI 中采用的监听过滤器等),CCIX 将其基本原理扩展到加速器,应用数据就可以在处理器缓存和加速器缓存间自主传递,不需要软件驱动参与。除了缓存,CCIX 还支持将 PCIe 设备自带的内存扩展为系统内存。CCIX 的数据共享模型是基于虚拟地址(VA)寻址的共享内存。

处理器和加速器的缓存和/或内存可通过 CCIX 协议自动更新和同步,因此只需要传递数据指针而不需进行数据搬移。从而减小数据延时,提升应用性能。同时减轻软件负担,使其聚焦于应用处理而不是底层数据传输。

  1. CCIX 架构

    CCIX 基于 PCIe 架构扩展而来,采用分层架构,如图 9 所示,主要包含协议规范和传输规范。其中,协议规范包含 CCIX 协议层和 CCIX 链接层,规定了缓存一致性协议、报文发送、流控和传输部分的协议。传输规范包含 CCIX 和 PCIe 事务层、CCIX PCIe 数据链路层和 CCIX 物理层,负责器件间的物理连接,包括速率和带宽协商、传输包错误检测和重试和初始包编码协议。

图 9 CCIX 分层架构

** CCIX 协议层**

负责一致性协议,包括内存的读、写等,也提供片上一致性协议(如 Arm 的 CHI)的简单映射。通过其定义的缓存状态使硬件能够确定当前内存的状态,如数据是否唯一且未被修改(和内存一致),或共享且被修改(和内存不一致)等。

** CCIX 链接层**

负责 CCIX 协议层定义的代理(agent)之间消息的传输格式。目前构建在 PCIe 之上,采用分层架构,未来可映射到不同的传输层。此外,还负责端口聚合,使得多个端口能够聚合在一起提升带宽。

** CCIX 和 PCIe 事务层**

分别负责处理来自 CCIX 和 PCIe 的包。

PCIe 协议支持部署虚拟通道,使得不同数据流通过一个 PCIe 链路。将 CCIX 和 PCIe 传输流各分到一个虚拟通道,使得 CCIX 和 PCIe 传输可以共享相同的链路。

CCIX 能够传输标准的 PCIe 包或经过优化的 CCIX 包。经过优化的 CCIX 包删减了 PCIe 包里的几个不必要的字段。传输标准的 PCIe 包时可以采用现有的 PCIe 交换器。传输经过优化的 CCIX 包,能降低 PCIe 的额外开销,使得一致性传输的包更小、更高效。

** PCIe 数据链路层**

执行数据链路层的所有正常功能,包括 CRC 错误校验、包确认和超时检查和信用初始化及交换。

** CCIX/PCIe 物理层**

基于 PCIe 物理层进行扩展,速率可达到 25GT/S(千兆传输/秒)。该模式称为 ESM(扩展速率模式),会在两个具备 ESM 模式的器件连接时自动识别,比 PCIe4.0 的速率(16GT/S)提升 56%。

  1. CCIX 组件

    CCIX 协议定义了 CCIX 组成模块的内存访问协议。所有 CCIX 器件至少有一个具备 CCIX 链接的端口。一个 CCIX 端口关联一组物理管脚,用于和另一个 CCIX 端口连接,在两个或多个不同芯片间交互信息。包含的组件如图 10 所示,有请求代理(RA)、主代理(HA)、从代理(SA)和错误代理(Error Agent),协议中为每种代理都定义了唯一的代理 ID 值。

图 10 CCIX 架构组件

** 请求代理(RA)**

请求代理可以对系统内的不同地址进行读、写操作,也可以对已经访问过的数据进行缓存。每个请求代理的发起源可以是一个或多个处理单元。请求代理为加速器或 CCIX 使能的 IO 主设备提供了一致性系统内存接口,使得加速器的缓存具备一致性,此过程对软件透明。

** 主代理(HA)**

主代理负责管理指定的一段地址的数据一致性。当一个缓存行的状态需要改变时,主代理通过向相关的请求代理发出侦听操作来保持一致性。

** 从代理(SA)**

CCIX 支持将外设所附内存扩展为系统内存。当主代理在一个芯片上,而与其有关的内存在另一个芯片上时需要进行内存扩展,扩展内存所需的架构组件为从代理。从代理不会被请求代理直接访问,而是需要通过一个主代理进行中转。

** 错误代理(EA)**

一个错误代理接收并处理 CCIX 组件发出的协议错误信息。

  1. CCIX 特点

    得益于 CCIX 的分层架构,能够支持多种灵活的拓扑结构。最常见的拓扑结构是直接连接的共享虚拟内存。其它拓扑结构,如星型、交叉或网格拓扑,也很容易被构建和支持;

    由于具备缓存一致性,支持主设备和加速器间的数据共享和内存扩展,可以无需驱动实现数据搬移,降低了延时和软件开销。同时这种共享数据结构,可以减少对不同加速器的单独控制和管理,实现统一任务调度,简化软件程序,提高协同运行效率。

小结

CCIX 联盟是一个开放的工业标准组织,制定独立于任何处理器架构的、非私有的 CCIX 标准。CCIX 标准为内存扩展器件和加速器提供高性能、低延时、芯片与芯片间的互联。特别为应对未来数据中心、云计算、大数据及其它需要异构计算应用的巨大挑战而设计。CCIX 标准将是革命性的进步,它拓展了开放、异构架构和缓存一致性共享内存模型的优势,来满足未来数据中心不断演进的需求。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 384 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    153 引用 • 3783 回帖 • 1 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖 • 1 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    47 引用 • 25 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 629 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    943 引用 • 943 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 510 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 344 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 71 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 4 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 211 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 762 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    340 引用 • 708 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 680 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 474 关注
  • 音乐

    你听到信仰的声音了么?

    60 引用 • 511 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1348 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 5 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖