HBM和DDR哪个延迟高?
HBM比DDR的带宽高,大家没有异议。
但是HBM是不是比DDR的延迟低?
比DDR内存快得多?
那可不一定!
有人做过实验,我们就盘点一下高性能计算里的内存那点事。
阿贡国家实验室的超级计算机Aurora恰好配用了两种内存,他们对这两种内存做了一个测试。
通过一系列的测试,告诉我们 HBM 和 DDR 在 Aurora 上各自适合干什么,以及怎么调整配置才能达到最优性能。
超级计算机Aurora的英特尔至强 Max CPU,集成了两种内存:一种是老伙计 DDR5,另一种是新秀 HBM(高带宽内存)。
这两种内存各有各的脾气,性能、延迟、容量都不一样,要怎么用才能把这台超级电脑的性能榨干。
咱们先从硬件架构说起。Aurora 的计算节点,也就是所谓的“计算刀片”,核心是两颗英特尔至强 Max 9470C CPU,这玩意儿代号叫“Sapphire Rapids”(SPR)。
每颗 CPU 都挂着 HBM 和 DDR5 两种内存。
HBM (High Bandwidth Memory):?顾名思义,高带宽内存。它就像个短跑健将,带宽特别高,但容量小,延迟也相对高一点。每个 CPU 插槽有 4 块 HBM,总共 128GB 的 CPU HBM 内存,理论峰值带宽能达到 1.43 TB/s。
DDR5:?这就是我们的老朋友了,DDR5 内存。它是个长跑选手,容量大、延迟低,但是带宽不如 HBM 那么爆炸。每个 CPU 插槽有 8 个 DDR5 内存通道,总容量达到了 1024 GB,峰值带宽 0.28 TB/s。
所以说,这两种内存就像是 CPU 的左右护法,一个擅长速度,一个擅长耐力。
如何根据应用特点,合理地分配工作给它们,就是这篇论文要解决的核心问题。
英特尔至强 Max CPU 提供了两种内存模式和两种集群模式,它们可以两两组合,形成四种不同的配置,就像是给 CPU 穿上了四套不同的“作战服”。
1. 内存模式 (Memory Modes):
Flat Mode (平面模式):?在这个模式下,HBM 和 DDR 被操作系统看作是两个独立的内存空间(也就是两个不同的 NUMA 节点)。你想用 HBM,就得明确告诉系统,把数据放进 HBM 里。这种模式下,如果你的应用内存占用能塞进 HBM 的容量里,那就能把 HBM 的高带宽优势发挥到极致。
Cache Mode (缓存模式):?这个模式就简单粗暴多了。HBM 直接当成了 DDR 的缓存。操作系统和应用只看到 DDR 这一种内存,HBM 在后台默默地给 DDR 提供高速缓存。这种模式对应用来说是透明的,不需要做任何改动,特别适合那些内存占用超过 HBM 容量的应用。
2. 集群模式 (Clustering Modes):
Quad Mode (四方模式):?在这个模式下,整个 CPU 插槽被看作是一个单独的 NUMA 节点。所有核心都能共享访问所有的 HBM 和 DDR 内存。这就像一个大家庭,大家资源共享,没有隔阂。它适合那些不具备 NUMA 感知能力的应用,比如用 OpenMP 跑的应用。
SNC4 Mode (四象限模式):?这个模式下,一个 CPU 插槽被分成四个独立的“象限”,每个象限都有自己的核心和对应的内存。这就像把一个大家庭分成了四个小家庭,每个小家庭有自己的资源。这么做的好处是,可以提高内存的局部性,降低延迟,提高带宽。它特别适合那些 NUMA 感知型应用,比如用 MPI 跑的应用。
把这四种模式排列组合一下,就有了
Flat/Quad、Flat/SNC4、Cache/Quad、Cache/SNC4?这四种配置。
实验怎么做?
为了搞清楚这四种配置到底有啥区别,作者们在 Aurora 超算上做了两类实验:
1:微基准测试 (Microbenchmarks):?这类测试主要关注系统层面的性能指标,比如:
内存带宽和延迟:
用 STREAM 和 Intel Memory Latency Checker 这两个工具,直接测试 HBM 和 DDR 在不同模式下的带宽和延迟表现
CPU-GPU PCIe 带宽:
测试 CPU 和 GPU 之间的数据传输速度。因为 PCIe 传输也依赖 CPU 内存的读写,所以内存的性能直接影响了 PCIe 的带宽。
MPI 通信带宽:
用 OSU Benchmarks 测试不同配置下的 MPI 通信速度,看看内存和集群模式对节点间通信有没有影响。
2:HPC 应用测试:?光看系统指标没啥用,还得看真实的应用表现。作者们选了三个有代表性的 HPC 应用来测试:
HACC (宇宙学模拟):?这是一个典型的“带宽密集型”应用,对内存带宽要求很高。
QMCPACK (量子蒙特卡罗模拟):?这个应用对内存延迟很敏感,需要频繁、小规模的内存访问。
BFS (广度优先搜索):?这个应用对内存容量要求很高,因为它的数据(图)可能非常大,超过 HBM 的容量。
实验结果,老哥给你捋一捋
内存带宽:
HBM vs. DDR:?HBM 的带宽远高于 DDR。在 SNC4-Flat 模式下,HBM 跑出了最高的 STREAM 带宽。
SNC4 vs. Quad:?SNC4 模式下的带宽总是比 Quad 模式高,而且延迟也更低。这说明把 CPU 分成小象限,确实能提高内存局部性。
但是,在延迟方面,就不一样了。
带HBM的至强Max CPU(代号“Sapphire Rapids”,SPR),跟DDR5内存一起测试,
看看不同内存配置和模式下,HPC应用到底跑得怎么样
DDR(DDR5)的空载延迟(idle latency)确实比HBM低 。
Quad模式下DDR是112.9ns,SNC4模式下DDR是96.3ns,
而HBM则分别是134.9ns和121.1ns 。
但是!
这“低延迟”有个前提——“低内存访问负载” 。
一旦负载上来,DDR的延迟就蹭蹭往上涨,效率直线下降 。
这说明DDR更适合那种“小而频繁”的内存访问,
而HBM则更适合“大块头、持续性”的数据传输 。
所以,如果是大带宽数据的延迟,HBM能降低。
如果是,小而频繁访问,比如一个load或者store,HBM甚至能升高。
所以,在内存访问负载较低时,DDR 的延迟表现更好,更适合处理小而频繁的内存请求。
但当负载增加后,DDR 的延迟迅速飙升,而 HBM 凭借高带宽优势,能保持更低的延迟,更适合处理大量数据传输。
没有“一招鲜,吃遍天”的配置。?内存系统和配置的选择,完全取决于你的应用特性。
如果你的应用是“带宽密集型”,比如 HACC,那就选 HBM,而且最好是?SNC4-Flat?模式,因为它的带宽最高。
如果你的应用瓶颈在 CPU-GPU PCIe 带宽上,那就优先选择?Quad?集群模式,并把内存分配给 HBM。
如果你的应用对内存延迟特别敏感,需要频繁进行小数据量的内存访问,比如混合模式下的 QMCPACK,DDR 凭借其低延迟优势,反而表现更好。
Aurora这台价值数亿美金的“怪兽”用实战告诉我们:顶级硬件只是基础,“量体裁衣”的配置才是性能封神的关键!?HBM不是神,DDR也没过时,用对了场景都是利器。
下次搞超算优化,记得先摸清你应用的“内存胃口”,再下“模式猛药”!觉得老哥讲得不错?点赞转发走起!下期想看啥硬核分析,评论区见!
引用资料
《Performance Analysis of HPC applications on the Aurora Supercomputer: Exploring the Impact of HBM-Enabled Intel Xeon Max CPU》
我是歪睿老哥,一个喜欢写作的架构师,著有《芯术:算力驱动架构变革》一书,讲述算力芯片在个人计算,光影计算,人工智能,云计算,移动计算等不同算力场景下,CPU, GPU, NPU, TPU等芯片架构等相爱相杀的发展历程和技术架构。
2235