【高清视频】CXL 2.0 内存扩展卡在Linux下面的使用和测试演示+闲聊
2025-10-09 15:10:51
我们在国庆前做过一个高清视频《CXL 2.0 over Fibre演示和答疑 - 将内存拉到服务器10米之外》,主题是讲了一下如何将CXL 2.0扩展内存从主机里面拉伸到机箱外10米,感兴趣的朋友可以看看。当时演示的时候是采用的Micron公司的CXL 2.0内存扩展模组(E3.S)接口。我们今天的视频采用了Biwin公司提供的一块CXL 2.0扩展插卡,重点讲了讲在Linux下面如何测试找到的CXL扩展内存。CXL内存扩展目前业内主要就是E3.S和PCIe插卡两种形态,可以参考之前我们写的文章《CXL Type 3内存扩展卡市场现状、产品形态、主机连接和扩展柜实物讲解和演示、CXL协议解码GUI简介》,以及我们写的很多其它文章,在Saniffer公众号下面查询关键词“CXL”即可搜寻到。

我们花费了4个小时处理本期视频并处理添加了中文字幕供大家参考。如果想看高清视频建议要在电脑上打开上面的视频链接进行观看!欢迎分享到朋友圈或者与朋友讨论!

下面是根据上述演示视频整理出的文字总结,按照逻辑顺序、技术层次与实验分析思路撰写,适合工程师、研究员或硬件评估人员快速阅读参考。

Biwin CXL 2.0 内存扩展模块演示总结报告

一、实验环境与硬件配置

主板与平台

  • 采用 技嘉(GIGABYTE)服务器主板,支持 PCIe 5.0 x16 插槽。

  • 主板上安装一张 佰维(Biwin,基于Montage控制器)CXL 2.0 内存扩展卡

  • 该卡支持插入两条 DDR5 内存条,本次仅插入一条 16GB 三星 DDR5 RDIMM。

  • 主机搭载 Intel Xeon 第6代至强处理器,12 核 24 线程,单 CPU 架构。

CXL 模块规格

  • 接口:PCIe 5.0 x16(实际链路为 Gen5 x8

  • 桥接芯片:澜起科技(Montage)CXL 2.0 控制芯片

  • 最大支持容量:双通道(2×DIMM 插槽)

  • 当前配置:单条 16GB CXL 内存扩展模块

系统软件环境

  • 操作系统:Linux(使用 free -hnumactllspcimlc 等工具进行分析)

  • 内存总容量:32GB(本地16GB + CXL扩展16GB)


二、系统初始化与内存检测流程

  1. BMC 初始化

    • 系统上电后进入 BMC 初始化阶段,耗时约 30 秒并自动重启一次。

  2. Memory Test 阶段

    • 使用 BIOS 内置内存测试工具进行 pattern 读写验证。

    • 测试显示系统成功识别 32GB 总内存,其中:

      本地 DIMM:16GB

      CXL 模块:16GB(三星 DDR5)

    • Pattern 测试采用 "moving inversions" 算法,验证 1/0 交替写入与读出正确性。

  3. 测试现象与稳定性说明

    • 测试中若发生错误或ECC异常,系统可能自动重启。

    • 在正常情况下,pattern 测试可无限循环运行。


三、Linux 系统识别与内存拓扑验证

1. 系统内存总览(free -h

  • Total Memory: 32GB

  • 已用内存: 约2GB(操作系统占用)

  • CXL 内存: 16GB(NUMA Node 1)

  • 本地内存: 16GB(NUMA Node 0)

2. NUMA 拓扑结构(numactl --hardware

  • Node 0 (Local Memory): 16GB,距离值(distance)= 10

  • Node 1 (CXL Memory): 16GB,距离值(distance)= 14

    • 表明 CXL 内存访问路径较远,存在额外延迟

  • 单 CPU 系统,因此 Node 1 无独立 CPU,仅作为远端内存节点存在

3. PCIe 拓扑验证(lspci -vvv

  • 显示 CXL Montage 设备 运行于 PCIe Gen5 x8 模式

  • 金手指支持 x16,但主板实际协商带宽为 x8。

  • 如果模块物理接口为 E3.S,则需要通过 SerialCables 转接板 转为主板插槽。


四、性能测试与结果分析

1. 内存延迟(Latency)

测试对象 平均延迟 对比差值
本地 DDR5 内存 115 ns 基准
CXL 内存模块 260 ns +145 ns(约增加 126%)

分析

  • 延迟差主要来自:

    • PCIe 总线传输(单程约 100 ns)

    • CXL 控制器解析与协议层延迟

  • 实测显示 PCIe 传输延迟占比不高,主要瓶颈在 CXL 控制器路径


2. 内存带宽(Bandwidth)

测试对象 平均带宽
本地 DDR5 内存 33 GB/s
CXL 扩展内存 24 GB/s

分析

  • CXL 内存带宽约为本地内存的 73%。

  • 随 Inject Delay(人工延迟)增加,带宽逐步下降至 20GB/s → 18GB/s → 14GB/s → 11GB/s。

  • 延迟增加导致访问密度降低,带宽自然下降。


3. 延迟与带宽动态关系

  • 当模拟延迟(Injected Delay)从 0 纳秒增加至 1 微秒时:

    • 平均带宽从 33 GB/s 降至约 20 GB/s;

    • 平均延迟从 700 纳秒上升至 1~1.3 微秒。

  • 延迟超过 2 微秒后,带宽明显降至个位数(<10GB/s)。

  • 说明在高负载连续访问下,CXL 通道会显著受限于时延积累。


五、访问路径与系统调度逻辑

  • 系统自动通过 NUMA 调度,将部分内存访问映射到 CXL 设备上。

  • 若通过 numactl --membind=1 强制绑定至 CXL 节点,可确保所有测试流量均落在扩展模块上。

  • 内存管理层(kernel memory management)根据地址空间自动选择访问目标:

    • Node 0: 本地内存(低延迟,优先级高)

    • Node 1: 远端 CXL 内存(高延迟,按需使用)


六、实验结论与技术启示

1. 成功验证

  • 系统完整识别 CXL 2.0 扩展内存模块;

  • NUMA 拓扑正常映射;

  • 可通过 MLC 工具精确测得延迟与带宽;

  • 实测性能符合 CXL 2.0 内存扩展预期指标。

2. 性能总结

  • 延迟提升约 150ns

  • 带宽下降约 27%

  • 在混合访问与系统自动映射情况下,性能表现稳定且无错误重启。

3. 技术意义

  • 实证展示 CXL 2.0 内存扩展在单CPU服务器环境下的工作原理

  • 为后续研究 CXL memory pooling / tiered memory 提供参考;

  • 验证了 Montage 控制器与 DDR5 DIMM 的兼容性;

  • 说明 PCIe 5.0 x8 链路足以满足 16GB 模块级实验验证。


七、后续优化方向

  1. 升级双DIMM配置 → 验证通道并发与带宽线性增长关系;

  2. 引入双CPU平台 → 测试跨节点访问性能与NUMA负载均衡;

  3. 采用性能计数器分析(perf + cxl-tool) → 定量比较 CXL 内存访问比例;

  4. 结合Micron CXL内存模组(E3.S) → 对比佰维CXL卡的延迟、功耗与协议兼容性;

  5. 研究 CXL 3.0/3.1 规范下的内存交换机制,评估系统级延迟改善潜力。


总结 本次实验系统地展示了 CXL 2.0 内存扩展模块在 PCIe Gen5 平台下的实际运行效果,从硬件识别、NUMA映射、带宽延迟到性能对比,形成了完整的闭环验证流程,证明 CXL 2.0 Memory Expander 已可在通用服务器平台上稳定运行,并具备工业级性能参考价值。

更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。
白皮书下载链接 (或者点击下面的二维码直接下载):

https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y

图片

如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。

图片