FPGA 专家 41:CXL 与存算融合——把引擎搬到数据旁边
本文是
fpga/专家层第 44 篇。PCIe/DMA 基础见 专家 07/08,卸载方法论见 专家 31,主机驱动见 专家 29。
一、瓶颈从算力转向搬运

旧模型:设备 ──DMA 拷贝全部数据──► 主机内存 ──► CPU 算(大部分字节读完即弃)
新模型:引擎贴近数据(存储盒/内存侧/CXL 设备)→ 先过滤/压缩/聚合 → 只传有用字节二、CXL:PCIe 物理层 + 三个语义层

| 协议 | 语义 | 用途 |
|---|---|---|
| CXL.io | ≈ PCIe | 枚举、DMA、中断 |
| CXL.cache | 设备一致缓存主机内存 | 加速器免软件一致性管理 |
| CXL.mem | 主机 load/store 访问设备内存 | 内存扩展/池化 |
2.0 交换/池化;3.0 多级交换、P2P。FPGA 侧通常用认证过的硬控制器,自研重点是其后的介质控制与加速引擎,并守住 snoop 延迟预算。
三、三类"存算"要分清

- 近存储:SmartSSD/存储盒里 FPGA 压缩/加密/SQL 过滤——已量产;
- 近内存:HBM/CXL 内存设备旁引擎,大带宽扫描与 AI 算子;
- 存内计算:存储介质内阵列计算——学术/专用 ASIC,FPGA 用于原型验证。
四、与网络/DPU 的汇合
SmartNIC/DPU 汇聚 NVMe-oF、RDMA、CXL,FPGA 负责跨主机内存池的搬运、序列化与卸载,P2P 让存储→网卡/加速器不经 CPU 内存。
五、划算判据

数据"读出来大部分无用"且搬运占主导时收益最大;小工作集/计算密集反受协议延迟拖累;池化还要计入共享竞争、QoS、故障域与软件栈成熟度。
六、CXL 协议深入:三层语义、事务流与 FPGA 实现形态
CXL 的价值来自在 PCIe 物理层之上提供三种语义,理解这三层(.io/.cache/.mem)和它们各自要解决的问题,才能判断 FPGA 在 CXL 生态里能扮演什么角色、实现难度在哪。
CXL.io:本质是 PCIe 事务语义(枚举、配置、DMA、中断),承担设备发现、配置寄存器、控制面,软件栈与 PCIe 设备高度相似——一个 CXL 设备首先是一个 PCIe 功能,CXL.io 让它能被现有操作系统枚举和管理。CXL.cache:允许设备缓存主机内存里的数据,协议维护缓存一致性(设备发起缓存请求、主机侧的一致性桥响应数据与状态、设备回写脏行),设备获得低延迟、一致的主机内存访问能力,适合加速器需要频繁与 CPU 共享细粒度数据结构的场景。CXL.mem:允许主机把设备提供的内存当作系统内存访问,设备端实现内存控制器(挂 DDR5 或新型持久内存),主机的 load/store 经协议直达设备内存,延迟由事务往返决定。三者复用同一物理链路(PCIe 5/6 的电气和 SerDes),但链路层增加了 CXL 自己的事务、流控和严格的低延迟设计(如固定 credit、68 字节 flit 格式)。
一次典型事务的成本结构(以加速器经 CXL.cache 读主机内存为例):设备发出请求 → 链路层打 flit → 主机一致性桥/Home 代理查目录、必要时让某个核心回写脏行 → 数据经链路返回。相对“设备 DMA 读主机内存”,CXL 的目标是让这种访问在硬件一致性、字节/缓存行粒度、低延迟上更接近本地内存,软件不用手动做缓存同步(见 专家 29 讲的一致性痛点)。但它不是免费的:跨芯片往返延迟仍在百纳秒量级,带宽受 PCIe 代际限制,协议复杂度(一致性状态机、目录交互)远高于裸 PCIe DMA。因此 CXL 不消灭 roofline(见 专家 31),它改变的是“数据在谁那儿、按什么粒度共享、谁负责一致性”。
FPGA 实现 CXL 的三种形态:①作为 CXL.mem 内存设备(type-3)——FPGA 挂 DDR/HBM 充当内存扩展或池化内存控制器,这是当前 FPGA 最现实的切入点:协议栈可用厂商 IP/IP 库实现,FPGA 负责内存控制器、地址交织、容量与可靠性(ECC)逻辑;难点在协议合规认证、低延迟时序和大规模内存的 RAS(错误报告、热插拔)。②作为 CXL.cache/mem 加速器——加速器直接一致访问主机内存并提供自有内存,适合数据库加速、智能网卡、计算存储等“共享指针、细粒度同步”场景;难点在一致性协议状态机与数据通路耦合、性能模型(命中率、往返延迟敏感)。③作为 CXL 交换/池化控制器的一部分——配合 CXL switch 做多主机内存池化,FPGA 实现 fabric manager 代理、地址转换、QoS 与隔离。要清醒看到:完整 CXL 协议栈的合规性(一致性、错误恢复、与各厂商 CPU 根复合体的互操作)门槛很高,自研从物理层做起不现实,实际项目几乎必然基于厂商经过互操作测试的硬 IP/控制器,FPGA 团队的价值在其上的内存/加速/池化逻辑和系统软件。
软件可见性也需要关注:CXL.mem 内存如何呈现(系统内存、NUMA 节点、交织策略)、内存映射与启动(BIOS/CXL fabric manager 参与枚举与地址分配)、性能模型(远程内存延迟差被调度器和应用感知,类似 NUMA 编程)、以及与现有驱动/虚拟化的关系。CXL 不是插上就自动变快的开关,它是一个需要软硬件协同定义内存拓扑、一致性域和 QoS 的系统级特性。
七、存算三类的系统架构:近内存、内存内计算与可组合池化
“存算一体/存算融合”被用来指代差别很大的三类技术,混为一谈会导致错误的架构决策。三类各自的瓶颈假设、实现位置和软件含义完全不同。
近内存计算(near-memory processing / near-data):计算单元移动到更靠近内存芯片的位置(堆叠在 HBM 逻辑层、放在 DIMM 旁的加速器、CXL 型设备里 FPGA 紧邻 DDR),数据仍以传统方式存取,只是搬运距离和共享路径改变。收益是带宽密度提高、能耗下降(少搬最远的一段),但编程模型仍是明确的“主机—设备—内存”,数据一致性和调度仍需软件/协议管理。FPGA 是近内存计算最自然的载体之一(CXL 内存设备旁挂加速逻辑、HBM 旁的可重构数据通路),工程风险可控。
内存内计算(in-memory/compute-in-memory,CIM/PIM):利用存储单元本身的物理特性做计算,如在 SRAM 位线做模拟点积、ReRAM/闪存阵列的乘加、数字存算宏单元。目标是彻底消除权重/数据搬出,但代价显著:模拟实现受工艺偏差和温度影响,需要 ADC/DAC,量化精度和信噪比受限;数字存算宏更确定但需要工艺/宏单元配合,FPGA 的固定结构无法提供这类位级阵列,因此 FPGA 只能在系统层面与存算芯片协同(做控制、接口、后处理),而不能“在 FPGA 里做存算宏”。选型讨论中要明确:这是 ASIC/定制工艺的赛道。
内存池化/可组合分解(composable/disaggregated memory):内存放在独立机箱,经 CXL(当前)或未来 CXL over fabric / 网络供多个主机按需分配,本质是资源组织方式的变革而非计算位置的变化。解决的是数据中心“每台服务器内存按峰值配置导致利用率低、扩容要停机”的问题。FPGA 在这里的角色是池化控制器、fabric manager 代理、协议转换与 QoS/隔离。关键的系统问题不是带宽,而是:延迟(池化内存是“远程 NUMA”,要让调度器感知)、故障域(内存抽屉失效影响多个主机,需要冗余/快速故障隔离)、安全隔离(多租户内存必须有硬件级地址隔离)、以及内存语义在网络上的扩展(报文丢失/重排序与内存访问语义的冲突,需要专门的可靠传输和有界延迟设计)。
架构决策的统一判据仍然是量化瓶颈:先测应用的 working set 与内存层级行为(cache miss 率、带宽饱和、延迟敏感度),再看三类技术各自打中哪个瓶颈——带宽墙(HBM/近内存)、能效墙(存算宏/ASIC)、利用率与弹性(池化)。用 FPGA 做方案时,落在它物理能力内的是“近内存 + 池化控制”,不要被营销词带到模拟存算的赛道;而对任何一类,都要建立含真实延迟(含协议往返)的 roofline,而不是用介质峰值带宽做承诺。
八、分解式系统的可靠性、安全与运维模型
把内存、加速器从服务器主板上“分解”到独立机箱和共享 fabric 上,带来弹性的同时也彻底改变了系统的故障模型、安全边界和运维方式。这些“非功能需求”决定了分解式架构能否进生产,而它们恰恰最难、最晚被讨论。
故障域扩大与有界恢复:板载内存坏了只影响一台服务器;池化内存抽屉或 CXL switch 故障可能影响数十台主机和上面的所有业务。系统必须回答:故障检测时间(链路告警、心跳、ECC 可纠正/不可纠正错误上报)、影响面如何收敛(按分区/主机组隔离,单设备故障不拖垮整个 fabric)、恢复语义(内存内容丢失类故障对使用它的主机意味着什么——这是分解内存与分解盘的本质区别:盘故障已有成熟副本/纠删码体系,易失内存故障要求应用或超管层有检查点/副本机制)。CXL 协议的热插拔、链路级重试、AER 错误上报要在 FPGA 侧完整实现并与 fabric manager 协同,不能只做正常路径。设计上要为“内存访问的目的地暂时不可达”给出明确语义——是冻结、超时上送,还是降级到本地内存,这些必须在架构期与系统软件团队定义。
安全与多租户隔离:分解式内存意味着一个物理机箱持有多个租户的数据。需要:硬件级地址隔离(每个主机/虚拟机只能访问被分配的物理页区间,FPGA 侧的地址转换/保护表是信任根之一,类似 IOMMU 的角色)、链路机密性与完整性(数据在机箱间走线,需要加密和防篡改,代价是延迟和资源)、配置面鉴权(谁能分配/回收内存、谁能更新 fabric 配置)、防侧信道(共享内存控制器的带宽争用可形成时序侧信道,QoS 隔离不仅为性能也为安全)。这些与云 FPGA 的隔离命题相通(见 专家 30),结论也一致:隔离必须由硬件和协议强制,不能靠租户自觉。
QoS 与性能隔离:多主机共享内存控制器和 CXL 链路,一个主机的带宽洪水不能饿死邻居。需要在 FPGA 控制器里实现加权带宽分配、突发吸收、请求优先级和延迟上限(读延迟敏感 vs 写吞吐敏感要分开队列),并把计数器(每租户带宽、队列深度、重试率)暴露给编排系统。资源分配要能动态调整(内存的逻辑 hot-plug、带宽配额热更新)且对主机透明。
运维模型:fabric manager 成为新的关键控制面——负责拓扑发现、内存分区分配、固件/比特流升级(见 20 比特流烧录与四方版本一致 manifest/门禁 的版本治理)、健康监控、故障迁移。它本身要高可用(主备、持久化分配状态)。可观测性要覆盖到“每台主机看到的内存延迟直方图、每条 CXL 链路误码、每个抽屉温度功耗”,否则性能问题无法定位。升级要支持滚动进行(一个抽屉一个抽屉地维护,业务在线迁移其上的内存分区)。FPGA 团队在这里交付的不只是数据通路,而是一套带遥测、隔离、可升级的分布式内存控制器。
成熟度判断上,分解式系统仍在快速演进:标准(CXL 各版本能力、多主机/交换语义)、生态(CPU 支持、OS 支持、fabric manager 软件栈)和互操作性都在变动。FPGA 的独特价值是可以比 ASIC 更快跟上标准迭代、做概念验证和小规模定制部署,但在大规模承诺前必须评估协议栈 IP 的成熟度和互操作认证状态。
九、与网络/DPU 的汇合:统一的数据中心卸载架构

超融合的另一条主线是网络侧的融合:SmartNIC/DPU 把虚拟化网络、存储、安全卸载到网卡,CXL 把内存和加速器从主板上解放出来,两者在“以数据为中心的服务器架构”里汇合。FPGA 在这场汇合中的位置,取决于它能否同时提供网络面、CXL/PCIe 面和本地存储/内存控制能力。
融合的数据通路形态:一个典型的下一代卸载节点里,FPGA/DPU 同时挂着——以太网口(跑 vSwitch、加密/压缩、遥测,见 专家 32)、PCIe/CXL(接主机和加速器、提供池化内存)、本地 NVMe(存储卸载)、DDR/HBM(本地缓冲和近内存处理)。数据理想路径是在设备内部一次落地、多步处理:网络来的存储写包在 FPGA 内解密、校验后直接 DMA 到盘或 CXL 内存,主机只参与控制;读路径聚合、压缩、加密后线速发走。架构原则仍是反复出现的那条:控制面(主机/软核)做慢决策,数据面(固定流水线)做快搬运,中间用描述符和门铃解耦(见 专家 29、专家 31)。
统一内存视图是融合的关键难题。网络、存储、加速器各有 DMA 引擎,过去各自映射地址;融合架构要求它们共享一套地址翻译和保护(IOMMU/SMMU 语义或设备内 TLB),让“从网络收到的包直接写进某个虚拟机的 CXL 内存页”在硬件上一次完成且隔离正确。这也把第 8 节的多租户隔离要求延伸到网络面:每个虚拟功能/队列有自己的权限和配额,任何 DMA 不能越界。FPGA 实现上这是大量片上查表(地址翻译、流表、密钥)和确定性流水线的组合,正是它的强项;难点反而是规模与软件生态——流表和连接跟踪的容量可能超过片上存储,需要设计分层缓存并仔细评估 miss 的延迟尾巴。
与纯软件/固定 ASIC DPU 的竞争判断:CPU 软件方案灵活但线速加密/压缩时功耗和核数成本高;ASIC DPU 性能功耗好但功能集冻结、跟进协议慢;FPGA(或 FPGA 内嵌的 SoC)适合协议快速演进、客户定制卸载、中等批量、需要线速确定性延迟的位置。时间窗口的判断很重要:协议标准(CXL、UEC、各种网络隧道)稳定后功能会向 ASIC 固化,FPGA 价值上移到“差异化和快速迭代”,下移到“小批量和长尾定制”。立项时应回答:这个卸载功能三年后是否仍在变?客户是否愿意为可定制付费?如果答案是否,ASIC/商用 DPU 才是正解。
系统软件接口决定融合设备能否被用起来:要呈现为标准的网络接口、块设备、内存设备和加速器,而不是一堆私有 ioctl(与 专家 29 的主张一致);管理面(编排、遥测、升级、多租户)要接入云平台既有的运维体系。FPGA 团队的工程范围因此从“写 RTL”扩展到“RTL + 设备驱动 + 编排插件 + 固件升级体系”,组织上要按这个范围配能力。
十、划算判据、典型坑与架构检查清单
什么场景划算(综合前文给出可操作判据):①应用的瓶颈经实测在“数据搬运/共享”而非算力(roofline 的带宽区,见 专家 31),如数据库分析、向量检索、存储压缩加密、流处理;②working set 超过单机内存、且负载在时间/空间上不均(池化才有利用率收益);③需要 CPU 与加速器细粒度共享数据、软件一致性维护成本高(CXL.cache 命中);④协议仍在演进、批量中等、团队具备 RTL+系统软件+协议合规的复合能力。
什么场景不划算:①纯算力密集且 GPU 生态更成熟(继续用 GPU);②延迟敏感到无法接受任何跨芯片/跨机箱往返(留在板载 HBM);③只是把数据搬到更远的地方但没有减少搬运次数(池化制造的远程 NUMA 拖慢应用);④团队无力承担协议合规、RAS 和多租户安全的长尾成本;⑤指望 FPGA 实现存算宏等工艺级特性。算账时应包含:介质成本、fabric/控制器成本、软件改造成本、故障域扩大带来的冗余成本,而不只对比每 GB 单价。
典型坑:用峰值带宽做方案、忽略协议往返延迟和一致性目录交互;把分解内存当分解盘设计(忘了内存故障语义和恢复时间);安全隔离靠软件、地址保护表不完整;QoS 缺失导致邻居噪声和侧信道;fabric manager 单点;升级路径未规划(CXL/网络标准迭代导致硬件作废);只做正常路径,热插拔/AER/重试/超时全无;遥测不足,线上延迟问题无法归因。
架构检查清单:①有端到端 roofline,含 CXL/网络真实往返延迟,瓶颈与收益定量;②明确采用 CXL 的哪类语义、哪类设备形态,协议 IP 有互操作认证路线;③存算类别分清(近内存/存算宏/池化),FPGA 能力边界诚实;④地址翻译、权限、配额在硬件数据通路强制,多租户隔离有威胁模型评审;⑤RAS 覆盖检测—隔离—恢复全链,内存类故障的应用语义有定义;⑥QoS 提供带宽/延迟保证和每租户计数器;⑦fabric manager 高可用、分配状态持久化、滚动升级方案;⑧数据通路“一次落地多处理”,控制面/数据面分离;⑨设备呈现为标准 OS 对象,私有接口最小化;⑩遥测含延迟直方图、误码、温度功耗、队列水位,可纳入云运维;⑪技术演进路线(标准变化时哪些是可升级的软逻辑、哪些是硬依赖)明确。十一类问题在架构评审时逐项过账,超融合项目才能把“趋势正确”变成“这一代产品划算”。
十一、技术演进与 FPGA 的时间窗口:CXL、UEC 与可重构卸载
超融合架构建立在快速演进的标准之上,工程决策必须把“技术会怎么变、FPGA 在变化中处于什么位置”纳入判断,而不是只对当前协议做静态优化。CXL 的演进主线是:从主机与设备的点对点缓存/内存语义,走向多主机交换(fabric)、内存池化、安全与管理增强;以太网方向则有 UEC(Ultra Ethernet Consortium)针对 AI/数据中心的大规模、低抖动、可扩展传输。每一代标准变化都改变数据通路假设(flit 格式、语义、交换拓扑),这恰恰是 FPGA“可重配”价值的来源,也是其风险所在——追新过快会撞上不成熟 IP 和互操作空白。
判断 FPGA 时间窗口的框架:一个功能从研究走向大规模部署,通常经历“协议未定、形态多变 → 标准收敛、批量上升 → 成熟固化”三段。第一段 FPGA 价值最高(快速跟标准、做原型和早期部署),但 IP 需要大量自研、互操作风险大;第二段 FPGA 适合差异化和中等批量(客户定制、融合多协议),也是商用控制器 IP 开始成熟的阶段;第三段 ASIC 在成本功耗上胜出,FPGA 退守长尾和兼容。把产品路线图画在这个时间轴上:早期版本承担“跟标准、建生态、验证软件栈”的角色,并提前定义什么条件下转向 ASIC 或商用器件,避免在功能固化后仍承担 FPGA 的单位成本。
架构上为演进而设计:把易变的协议层(flit/事务格式、协商状态机)隔离在可替换模块内,稳定的部分(DDR/HBM 控制器、片上网络、DMA、遥测框架)长期复用;版本协商和多代兼容做成硬件状态机的显式能力,而不是出一版新协议就推翻重做;跟踪标准草案时,用 HLS/参数化逻辑快速试验、成熟后再 RTL 固化(实现路线选择见 专家 34 的方法论)。软件栈(fabric manager、驱动、编排)比硬件生命周期更长,接口抽象要先行,硬件才能独立迭代。
十二、典型系统案例与架构推演
用三个典型场景把前述原则串起来,展示“瓶颈—架构—FPGA 角色—风险”的推演方法。
案例一:CXL 内存扩展柜。诉求是单机内存容量弹性。瓶颈在容量与槽位,不在算力;FPGA 作为 type-3 设备挂大容量 DDR,CXL.mem 呈现为远程内存。架构关键:协议栈用成熟 IP,FPGA 聚焦内存交织、ECC/RAS、热插拔和 fabric manager 代理;风险是延迟(远程 NUMA 效应要在应用侧显式调度)、故障域(内存抽屉失效影响多主机,需应用检查点或超管冗余)和成本(对比普通内存条仍贵,卖点是弹性与利用率)。roofline 结论是:只适合容量敏感、带宽/延迟可容忍的负载(分析型数据库、缓存层),不适合频繁随机访问的热数据集。
案例二:融合智能网卡(存储+网络+内存)。诉求是在一个加速节点上线速解密/压缩、vSwitch、存储读写、并与加速器共享内存。架构上数据面为固定流水线(见 专家 32),控制面在嵌入式核/主机,CXL.cache 仅用于细粒度共享结构,大流量仍走 DMA;统一地址翻译与保护表是信任根。风险是功能集膨胀导致时序/资源紧张和验证爆炸,对策是功能模块化、按产品配置裁剪,并把非线速功能(协商、异常、遥测聚合)全部放软件慢路径。FPGA 的赢点在客户定制卸载和协议演进期,标准化程度高后应让位 DPU ASIC。
案例三:AI 集群的分解式内存/缓存层。诉求是给多 GPU/多节点提供大容量共享 KV/参数池。瓶颈是参数搬运与尾延迟;架构用 FPGA 做 CXL/网络双归属的内存控制器:本地高带宽内存做热缓存,CXL 对主机呈现内存语义,网络侧做批量预取和失效协议。关键设计是把随机访问重排成批量流水线、在 FPGA 内做压缩和一致性简化(弱一致由上层框架管理),并为多租户做强隔离与 QoS。风险:一致性语义理解错误导致静默数据错误(最危险)、UEC/池化标准未定带来返工、以及与 GPU 直连存储方案的竞争。对策是从明确的上层框架契约出发定义硬件语义,先在 FPGA 上验证协议和收益,再决定固化。
三个案例的共同方法是:先证明瓶颈确实在搬运/共享、端到端 roofline 有正收益,再选择 FPGA 承担“演进快、需定制、规模中等”的那层,并把可靠性、安全、软件栈成本计入总账。超融合没有免费的架构红利,只有在具体负载上算得过来的工程交换。
十三、给采用方的最终建议。面对 CXL/超融合这类快速演进技术,工程上最稳妥的姿态是“小规模验证、指标驱动、保留退路”。先用一个明确痛点(内存容量墙、特定数据库负载、存储网络融合)做窄场景 PoC,端到端实测延迟、带宽、CPU 占用和 TCO,而不是基于路线图做架构承诺;PoC 期间同时评估生态成熟度(CPU/OS/驱动/交换芯片/IP 的互操作清单)和团队补齐协议、RAS、系统软件能力的成本。硬件上预留退路:接口分区尽量让 CXL 部分可旁路(同卡也能作为标准 PCIe 加速器使用),这样标准或市场变化时资产不会作废。采购上避免单一早期供应商锁定,协议栈 IP 与上层自有逻辑解耦。组织上把“标准跟踪”常态化——指定人跟踪 CXL/UEC 版本演进,每季度复盘技术时间窗口是否移动。只有当真实负载的收益、生态的成熟度、团队的工程能力三者同时跨过门槛,分解式架构才应从 PoC 走向生产;在此之前,传统的板载内存加成熟 PCIe 加速通常仍是风险调整后的最优解。超融合是一场关于数据中心形态的长期迁移,赢家不是最早采用的人,而是在正确的时间把正确的层换成新架构的人。
总结
CXL 在 PCIe 物理层上补齐了硬件一致性(.cache)和内存语义(.mem),让内存池化和近数据加速成立;FPGA 的现实位置是硬控制器之后做近存储/近内存的过滤与算子,成败仍取决于"省下的字节搬运是否真的大于协议与一致性代价"。