草榴社区

完整的Die-to-Die IP解决方案:用例和要求

草榴社区 资深产物营销经理 Manuel Mota

介绍

下一代服务器、AI 加速器和网络片上系统 (SoC) 设计需要越来越强的能力,以满足更快的数据处理和先进人工智能/机器学习工作负载的需求。大规模 SoC 和模块化优势正在推动行业向多晶粒 SoC 的模式转变,它可提供以下一些众所周知的优势:

  • 支持超越光罩尺寸的 SoC
  • 提高大型 SoC 的产量
  • 使流程技术与功能需求保持一致
  • 实现模块化,以使用相同的“构建模块”支持不同的用例和产物配置

然而,多晶粒 SoC 给设计师带来了需要克服的新挑战,包括:

  • 由于晶粒和封装之间的紧密相互作用,导致设计复杂
  • 从 SoC 组装到制造的不同阶段的可测试性支持
  • 由于晶粒彼此非常邻近(或重迭)而需要进行复杂的热管理

IP 和设计工具的发展帮助设计人员定义和实施其 SoC 架构。在之前的文章中,我们讨论了重要的“晶粒到晶粒”主题,如主要应用和关注事项、SerDes/并行 PHY 架构的特性以及多晶粒 SoC 的生产测试。我们还讨论了设计流程和先进的 3DIC 设计。

本文讨论的范围超出了晶粒到晶粒 PHY 接口特性和优势,描述了与 SoC 结构的晶粒到晶粒链路、实现需求、链路问题管理和晶粒到晶粒协议栈结构,所有这些对于理解如何在单一封装中实现更加模块化、更灵活、更好良率的多晶粒 SoC 而言都至关重要。

用例和实现要求

对于多晶粒 SoC 设计人员来说,关注以下晶粒到晶粒接口如何对系统性能做出贡献的标准是值得的:

  • 链路延迟
  • 跨链路的数据一致性
  • 可接受的误码率 (BER) 及其控制机制
  • 带宽和分支
  • 晶粒到晶粒接口协议

以下是几个晶粒到晶粒使用案例:

针对高性能计算 (HPC) 的多晶粒 SoC 的一个常见用例是在同一封装中组装多个同质晶粒,每个晶粒包含一组类似的处理单元,可以是通用 CPU 或 针对 AI 工作负载的专用处理器,以及本地内存和缓存。采用多晶粒方法的原因可能是配置和模块化的灵活性(例如:扩展计算性能),或者是因为单片晶粒太大,无法高效制造(例如:分离 SoC)。

同质晶粒的多晶粒 SoC 封装图示

图 1:采用同质晶粒组装的多晶粒 SoC 图示

在由同质晶粒组装的多晶粒 SoC 中(如图 1 所示),一个互连网格连接每个晶粒中的所有 CPU 集群和共享内存组。晶粒到晶粒链路连接两个晶粒中的网状互连,如同它们是同一互连的一部分。

在高性能的同质计算用例中,无论是服务器还是 AI 处理,具有紧密耦合缓存层次结构的 CPU 或 TPU 集群都分布在多个晶粒上(如图 2 所示)。

CPU 和 TPU 集群分布在多个晶粒上的同质计算用例

图 2:CPU 和 TPU 集群分布在多个晶粒上的同质计算用例

这些实现通过统一的内存架构得到增强,这意味着任何 CPU 都可以以类似的访问时间来访问另一个 CPU 集群中的内存,因此软件代码可以不知道工作负载是如何在不同的处理集群之间分配的。对于这些情况,至关重要的是,一个晶粒中的 CPU 能够以最小的延迟访问另一个晶粒中的内存,同时支持缓存一致性。

通常,两个晶粒之间的链路需要缓存一致性,利用 CXL 或 CCIX 流量的优势来降低链路延迟。

如果每个方向的链路延迟在 15 到 20 纳秒的范围内,维持一个统一的内存架构域通常是有可能的。

当链路两端共享缓存内存时,高性能异构计算架构也可能需要一致性。

在 IO 访问这样的应用中,为了灵活性和效率,数字处理存在于 IO 功能之外的一个单独的模块中(IO示例可以是电子SerDes、光学、无线电、传感器或其他),通常没有一致性要求,对链接延迟更宽容。在这些情况下,IO 流量通常通过标准协议路由,如 AXI 接口。

类似情况如 GPU 和连接到 CPU 集群的一些异构计算类的加速器这样的并行架构,可能只需要 IO 一致性(如果加速器晶粒没有缓存),或者根本不需要一致性,如图 3 所示。

具有并行异构架构的多晶粒 SoC

图 3:具有并行异构架构的多晶粒 SoC

管理链路错误

任何数据传输都存在错误。晶粒到晶粒链路,由于短距离和相对干净的通道特性,相比必须通过不同材料和连接器的较长通道而言,产生的错误要更少。

为了避免因链路错误导致数据损坏,进而对系统运行造成灾难性影响,晶粒到晶粒链路必须实现允许错误检测和纠正的功能。根据系统要求和原始 PHY BER,有两个主要选项可用于检测和纠正传输错误,这些选项可单独使用或结合使用:

  • 与错误检测功能结合的重试机制能够纠正所有检测到的传输错误。一个错误检测码,如奇偶校验或循环冗余检查 (CRC) 码被添加到发送的数据,以便接收端可以验证接收的数据,在检测到错误时,请求重新发送数据。
  • 前向纠错 (FEC) 是与数据一起传输的更复杂的代码,能够检测和纠正错误位。根据 FEC 算法的复杂度,检测和纠正的错误数量可能更高。只是,FEC 编码和解码的延迟增加了复杂性。

FEC 可以纠正一定数量的错误,而不需要重新传输,但将产生额外的延迟。通常,FEC 用于将 BER 恢复到特定的低概率水平(“可靠链路”),任何未纠正的错误都会触发重传。

根据系统需求和晶粒到晶粒链路配置,不需要 FEC 的原始误码率限制可能会有所不同。有时认为足够的最小限制是 1e-15 BER,对应于在 40 Gbps 下运行的 1 条通道链路每 7 小时重传请求一次。对于具有 10 个通道的复杂系统,重新传输概率与通道的数量成比例地增加,因此将 BER 降低到较低水平的轻量级 FEC 仍然是需要的,这样可以将重传请求之间的间隔保持在合理的高水平上。

晶粒到晶粒协议栈

与其他芯片到芯片链路一样,晶粒到晶粒链路的协议栈可以分割成与开放系统互连 (OSI) 模型栈定义一致的不同协议层,如图 4 所示。PHY 层由物理介质无关 (PMA) 和物理介质相关 (PMD) 组成。PHY 层处理与通道的电气接口。逻辑 PHY 层位于 PHY 层的上方,将 PHY 层的信令特性与链路层隔离,辅助数据流构建和恢复。

链路层管理链路,处理错误检测和纠正机制,保证一个端到端无错误的链路。链路层还处理流控,调节发送方和接收方之间的数据通信量。传输层从应用层接收读写请求,从链路层创建和接收请求包。

晶粒到晶粒协议栈

图 4:晶粒到晶粒协议栈

当他们在一起定义和验证时,每一层都会得到优化,即使每一层都有预定义的接口。例如,期望的 FEC 特性取决于预期的 PHY 的误码率

晶粒到晶粒连接的特性

晶粒到晶粒链路的特性使其不同于传统的芯片到芯片链路。例如,在封装多晶粒 SoC 时,链路的两端是已知且固定的。因此,晶粒到晶粒链路特性可以提前确定,通过软件或寄存器在开机时进行设置,避免链路发现和协商步骤的复杂性。

另外,期望晶粒到晶粒链路是一个连接两个晶粒的互连结构的简单“隧道”,而没有特定的已定义协议。为减少延迟并保证互操作性,理想的做法是将链接紧密优化,以便与晶粒上互连结构进行操作。例如,Arm Neoverse 平台定义了支持缓存一致性的专用接口,可用于低延迟的晶粒到晶粒解决方案。或者,更通用的应用接口(例如 AXI)可用于附接到任何片上互连结构。

总结

随着 soc 的尺寸越来越大,功能越来越复杂,设计人员正在探索其他选项来优化产量和延迟。发展趋势是在单一封装内集成多晶粒 SoC,实现更好的模块化、灵活性和产量。由于这个原因,实现晶粒到晶粒的接口在不同案例中变得至关重要,例如 SoC 计算能力的扩展、SoC 的分割、聚合多个不同的功能和分解 IOs。设计师必须理解如何实施此类用例,如何定义和验证晶粒到晶粒协议栈中的每一层,以实现更优化和更可靠的晶粒到晶粒链路,以及如何确定目标晶粒到晶粒特性以降低延迟并保证互操作性。

草榴社区 设计和开发了 DesignWare 晶粒到晶粒 IP 解决方案产物组合,来专门满足每个用例的需求。DesignWare? 晶粒到晶粒 IP 产物组合包括可用于 FinFET 工艺的 SerDes 和基于并行的 PHY 以及用于 112G USR/XSR 链路的控制器。