【高清视频】CXL 2.0 内存扩展卡在Linux下面的使用和测试演示+闲聊
我们在国庆前做过一个高清视频《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 -h、numactl、lspci、mlc 等工具进行分析)
内存总容量:32GB(本地16GB + CXL扩展16GB)
二、系统初始化与内存检测流程
BMC 初始化
系统上电后进入 BMC 初始化阶段,耗时约 30 秒并自动重启一次。
Memory Test 阶段
使用 BIOS 内置内存测试工具进行 pattern 读写验证。
测试显示系统成功识别 32GB 总内存,其中:
本地 DIMM:16GB
CXL 模块:16GB(三星 DDR5)
Pattern 测试采用 "moving inversions" 算法,验证 1/0 交替写入与读出正确性。
测试现象与稳定性说明
测试中若发生错误或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 模块级实验验证。
七、后续优化方向
升级双DIMM配置 → 验证通道并发与带宽线性增长关系;
引入双CPU平台 → 测试跨节点访问性能与NUMA负载均衡;
采用性能计数器分析(perf + cxl-tool) → 定量比较 CXL 内存访问比例;
结合Micron CXL内存模组(E3.S) → 对比佰维CXL卡的延迟、功耗与协议兼容性;
研究 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。
2025-10-09 15:10:51









