91吃瓜网

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

Synopsys 资深产物营销经理 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。设计师必须理解如何实施此类用例,如何定义和验证晶粒到晶粒协议栈中的每一层,以实现更优化和更可靠的晶粒到晶粒链路,以及如何确定目标晶粒到晶粒特性以降低延迟并保证互操作性。

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