CCIX 标准简介

本贴最后更新于 590 天前,其中的信息可能已经东海扬尘
* [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 标准将是革命性的进步,它拓展了开放、异构架构和缓存一致性共享内存模型的优势,来满足未来数据中心不断演进的需求。

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 361 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 100 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 45 关注
  • Kafka

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

    36 引用 • 35 回帖 • 2 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 479 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 208 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 2 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 352 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 3 关注
  • Linux

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

    940 引用 • 943 回帖 • 1 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 26 关注
  • ZooKeeper

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

    59 引用 • 29 回帖 • 7 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 654 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 62 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    130 引用 • 793 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 3 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 154 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 325 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 545 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    90 引用 • 899 回帖 • 2 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    406 引用 • 1246 回帖 • 579 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 617 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    6 引用 • 38 回帖