简介:这是由JEDEC于2022年正式发布的JESD238高带宽存储器DRAM(HBM3)标准PDF文档,主要面向存储芯片设计、系统集成与验证工程师,以及关注新一代高带宽内存技术的硬件开发者。标准详细规定了HBM3的技术规范、试验方法和性能要求,涵盖DRAM架构、接口电气特性、可靠性与互操作性等核心内容,可作为产品研发、测试和认证的权威依据。HBM3是面向高速存储器应用的新一代高带宽内存技术,该标准围绕存储架构、接口协议、芯片堆叠与测试方法等关键维度给出统一规范,旨在保障不同厂商产品的可靠性与互换性。资源为单文件PDF,体积约7.73MB,内文支持文字复制与检索,方便技术归档、关键词定位和日常查阅。已有442人下载学习,属于半导体存储领域较为稀缺的官方标准原件,对于需要精确引用规范参数或正在从事HBM3相关设计的读者,具有很高的实用价值。 上周在硬件交流群里又看到有人分享那个“JESD238 2022 High Bandwidth Memory DRAM (HBM3).pdf”的可复制文字版本。这个文件其实在我收藏夹里躺了很久,直到最近做一块 AI 加速卡的内存子系统和选型,才真正把它从头到尾读了一遍。读完最大的感受是:网上关于 HBM3 的科普文章不少,但能讲到关键点、能对上标准原文的太少。很多内容都停留在“HBM3 带宽很高、AI 芯片都在用”这种层面,至于标准里到底规定了什么、为什么这么规定,几乎没有人讲透。
JESD238 是 JEDEC 在 2022 年发布的高带宽内存第三代标准,全称 High Bandwidth Memory DRAM (HBM3)。它定义了 HBM3 的信号接口、命令时序、模式寄存器、封装形式、TSV 硅通孔堆叠结构、刷新策略等一整套规范。现在高端 GPU、AI 训练芯片、HPC 处理器普遍使用 HBM3,想从根本上理解这些芯片为什么能跑到 TB/s 级的内存带宽,JESD238 是绕不开的。
这篇文章适合三类人:一直做 DDR/LPDDR、但还没接触过 HBM 的芯片设计验证工程师;用 FPGA 或者自研 ASIC 做板卡系统和内存控制的硬件工程师;还有想系统了解内存体系结构的学生。我会先从 DRAM 最底层的灵敏放大电路和激活、预充电、读取、写入、刷新这些基本操作讲起,再往上拆 HBM3 的伪通道、TSV 堆叠和带宽计算,最后分享我怎么在一份几百页的 PDF 里快速定位关键参数、避开常见的误读。读完你至少能搞明白:HBM3 与普通 DDR 到底差在哪里,这份标准文档到底应该怎么读。
1. 为什么要啃标准,而不是只看二手资料
1.1 内存墙背景下,HBM3 到底解决了什么问题
过去十年,处理器的算力增长基本符合预期,但内存带宽的增长明显慢了一个量级。GPU 要喂饱几千个计算单元,DDR 颗粒的位宽和频率都跟不上,于是“内存墙”成了高性能计算最直接的瓶颈。HBM3 的思路很直接:不把频率拼命往上拉,而是把接口位宽从 DDR 的 64 bit 或 128 bit,直接做到每个堆栈 2048 bit,同时把 DRAM die 用 TSV 一层一层堆叠起来,让内存颗粒离计算芯片更近。这个思路让单颗 HBM3 堆栈的理论带宽达到 1.64 TB/s 左右,是普通 DDR5 模组的数倍。JESD238 就是把“堆叠多少层、接口多宽、速率多快、命令怎么发”这些规则固定下来的标准文本,是整个产业链设计、测试、验证的统一语言。
1.2 JESD238 和 HBM2E 的差距,不只是数字翻倍
读 JESD238 之前,最好先对比一下上一代 HBM2E,也就是 JESD235 系列。很多人以为 HBM3 只是频率更高、容量更大,实际看标准原文会发现,体系结构层面就有根本变化。
| 项目 | HBM2E (JESD235) | HBM3 (JESD238) |
|---|---|---|
| 单堆栈最大接口宽度 | 1024 bit | 2048 bit |
| 标准定义数据速率 | 最高约 3.6 Gbps | 最高约 6.4 Gbps |
| 堆叠层数范围 | 4/8/12-Hi | 4/8/12/16-Hi |
| 伪通道数量 | 每通道拆分,总量较少 | 32 个伪通道,更细粒度 |
| 单堆栈理论带宽 | 约 460 GB/s | 约 1.64 TB/s |
| 可靠性机制 | 有片上 ECC 等基础机制 | 强化纠错、刷新管理、温度监控 |
接口宽度翻倍和数据速率提升,带来的是控制器架构的重新设计。HBM3 把单位访问的粒度进一步缩小,意味着内存控制器可以把命令分发到更多独立的小片上并行执行。这说明 HBM3 不只是“加一层楼”,而是把整个 DRAM 的操作模型改得更适合高并发访问。
2. 从 DRAM 底层原理看 HBM3 的“内核”
2.1 灵敏放大电路:DRAM 一切操作的起点
很多人一听 HBM3 就觉得是完全不同的东西,但剥开 TSV 和伪通道再看,核心存储单元仍然是经典的单管单电容结构,也就是 1T1C:一个晶体管负责开关,一个电容负责存电荷。电容带电代表 1,不带电代表 0。读取的时候,字线 Word Line 拉高,晶体管导通,电容里的电荷跑到位线 Bit Line 上,位线上会出现极其微弱的电压变化。这个变化只有几十毫伏级别,普通逻辑电路根本没法直接判断,于是每个 bit 旁边都有一个灵敏放大电路 Sense Amplifier 来干这件事。灵敏放大器本质上是一组交叉耦合的锁存器,靠正反馈把位线上的微小电压差迅速放大到完整的逻辑电平。
这里有个容易被忽略的关键点:DRAM 的读取是破坏性的。电荷从电容里释放出来之后,如果不管,数据就丢了。所以灵敏放大器放大完数据之后,必须再把数据写回电容,这个动作叫 restore,是读取操作内部自动完成的一部分。这也是为什么 DRAM 的读写时序里不可能没有行激活和预充电,因为整个存储阵列的工作方式都是围绕“先让灵敏放大器抓住一行数据,再对这个数据进行列访问”来设计的。HBM3 无论堆多高、接口多宽,底层依然是这一套原理。
2.2 ACT、PRE、READ、WRITE、REFRESH 在 HBM3 里的变化
DRAM 的操作可以浓缩成几个基本动作:激活、预充电、读取、写入、刷新。激活 Activate 就是打开某一行字线,让这一整行数据从存储单元进到灵敏放大器;预充电 Precharge 则是把位线恢复到统一电平,为下一次激活做准备;读取 Read 和写入 Write 是在激活之后,通过列地址去访问灵敏放大器里已经“稳住”的那一行数据;刷新 Refresh 则是定时对每一行做一次“假读取+回写”,防止电容漏电把数据丢掉。
这些术语背起来容易,真正理解的是它们之间的约束关系。行激活之后,你不能直接去激活另一行,必须先把当前行预充电掉,这个时间间隔就是 tRP;行激活到列访问之间需要等待,就是 tRCD;行保持激活的最短时间不能低于 tRAS。HBM3 把通道拆得更细,每个伪通道都可以独立执行激活、预充电、刷新,不同伪通道之间互不阻塞,所以调度器可以在一个堆栈上同时安排大量并行操作。对比传统的整通道刷新,HBM3 支持更细粒度的刷新管理,在高温场景下的性能损失会小很多,这对数据中心里长时间满载运行的 AI 芯片来说非常重要。
2.3 DRAM、NAND、HBM 的本质区别
经常有人把 DRAM、NAND 和 HBM 混在一起聊,其实它们不是同一层级的对比关系。DRAM 和 NAND 是两种存储介质技术,HBM 则是 DRAM 的一种高级封装和接口实现形式。DRAM 易失、速度高、按字节随机访问、需要持续刷新,拿来做内存;NAND 非易失、容量大、按页读写、写之前必须先擦除,拿来做硬盘和存储卡;HBM 在本质上就是 DRAM,只不过用 TSV 堆叠和超宽接口把带宽做得特别大,但它的存储单元还是电容,仍然要刷新,断电照样丢数据。
一个生活化的类比是:DRAM 是办公桌上摊开的文件,随拿随用但桌面有限;NAND 是背后的档案柜,容量大但要翻找很久;HBM 是给重要业务单独铺了一张超长会议桌,把最多文件同时铺开,代价是成本高、搭建复杂。理解了这个区别,就不会在方案选型时犯“用 HBM 当大容量存储”这种方向性错误。
3. HBM3 核心设计拆解:TSV 堆叠与伪通道
3.1 TSV 堆叠层封装:一颗 HBM3 是怎么“摞”起来的
HBM 区别于普通内存颗粒最大的特征是立体堆叠。单个 DRAM die 的容量有限,想要大容量,就把它一层一层叠起来。如果只是叠起来,上下层之间怎么通信?答案是 TSV,也就是硅通孔。TSV 是垂直贯穿芯片衬底的金属通道,相当于给每个 die 打了很多“电梯井”,让数据、电源、地线从底层直通顶层。多层 die 堆叠完成后再封装到基板上,底部通常还会有一层逻辑缓冲 die,负责把顶层传来的信号重新驱动到接口上。
这里要强调一下 2.5D 集成。HBM3 堆栈不是直接焊在主板上,而是和 GPU、ASIC 等计算芯片一起放在一块硅中介层 Silicon Interposer 上,通过微凸块 Micro Bump 和中介层内的细密布线互连。计算芯片发给内存的信号不需要经过传统封装基板的长走线,延迟和功耗都大幅降低。堆叠层数越多,TSV 数量越多,对工艺、散热、翘曲控制的要求也越高。JESD238 里大量篇幅涉及堆叠结构、引脚布局、物理尺寸和测试要求,本质就是要保证不同厂商做出来的 HBM3 堆栈能在一个标准框架下互换互用。
3.2 伪通道架构与 1.64TB/s 带宽的计算方式
读 JESD238 时,伪通道 Pseudo Channel 是我觉得最值得花时间理解的概念。一个 2048 bit 位的 HBM3 堆栈,并不是一个整体,而是被拆成 32 个伪通道,每个伪通道 64 bit 位宽。两个伪通道可以合并成一个完整的通道使用,也可以独立调度。拆细的初衷是提高并行度和减少访问冲突:控制器的多个调度队列可以同时操作不同伪通道,而不用担心同一个 bank 争抢。对 AI 训练这种需要大量并发读写请求的负载,细粒度访问能显著提高实际利用率。
带宽计算其实很简单:总带宽等于接口位宽乘以数据速率。HBM3 单引脚数据速率按 6.4 Gbps 算,2048 bit 接口就是 2048 × 6.4 Gbps,相当于每秒 13.1 Tbit,除以 8 得到约 1.64 TB/s。如果一颗 GPU 旁边挂 4 个 HBM3 堆栈,总带宽就能做到 6.55 TB/s。这就是 HBM3 让加速卡内存带宽跨入 TB/s 时代的核心原因。顺带提醒一下,标准里数据速率、位宽、堆叠层数都有不同档位,芯片手册会写明自己支持的是哪一档,计算时要按实际档位来,不要默认所有 HBM3 都一样。
3.3 DRAM 颗粒规格书参数与 die 参数之间的关系
很多工程师第一次看 HBM 颗粒规格书会产生困惑:规格书里给的是 tRCD、tRP、tRFC 这些时序,还是 Bank 数量、行列地址宽度、Die 容量这些内部结构参数,两者到底是什么关系?实际上,颗粒规格书是 die 的对外表现。die 设计决定了存储阵列的行列数量、灵敏放大器的分布、字线驱动能力、刷新电路的工作方式,这些最终会换算成外部能看到的时序参数。比如 tRCD 的长短,很大程度取决于字线驱动能力和灵敏放大器完成信号放大的速度;tRFC 则和单次刷新时涉及的行数量、bank 数量有关。
JESD238 重点定义的是接口和堆栈统一规范,而具体 die 怎么设计、容量做多大、时序优化到多少,是各家颗粒厂商在标准框架内竞争的地方。读标准文档时,尽量把“标准规定的上限/下限”和“某款具体颗粒的实际值”分开看,前者属于 JEDEC,后者属于厂商数据手册。把这一层想清楚,就不会拿标准里的一个典型值去套所有产品。
4. 实操经验:拿到 JESD238 文档后怎么快速定位参数
4.1 快速浏览文档结构,从目录建立索引
JESD238 是几百页的标准文档,不建议从头到尾线性读。我的习惯是拿到 PDF 后先看目录,标出几个关键分区:Scope 和术语定义、信号描述、封装与引脚布置、命令真值表、状态图、AC/DC 时序参数、模式寄存器、刷新与温度管理、测试和 DFT 相关内容。一份像 JESD238 这样的标准,真正决定你能不能用的,通常就集中在命令真值表和时序参数两张表附近。其余部分在需要时按图索骥即可。
这里还有一个很实际的建议:尽量找文字可复制的电子版,而不是扫描版。标准文档里的参数名、缩写非常多,搜索功能是救命稻草。我查 tRFC 的档位、某个模式寄存器的 bit 定义时,如果 PDF 不能搜索,效率和准确度都会大打折扣。标题里强调“可复制文字”的意义就在这里。
4.2 参数表与时序图,读标准的重头戏
时序参数表往往长得吓人,动辄几十行,但仔细看会发现很多参数有规律。先找时钟周期基准,HBM3 的时序通常以 tCK 为单位;再找每个参数的符号、说明、最小值/最大值、单位。不要试图背参数,而是要会查。比如设计控制器时,行激活到列读取的延迟用 tRCD,预充电后到下一次激活的间隔用 tRP,刷新命令间隔用 tREFI,这些符号在整份标准里会反复出现,参数表只是它们的汇总。
时序图同样重要。状态图 State Diagram 描述了各种命令之间的合法跳转,命令真值表 Command Truth Table 明确了每个命令对应的片选信号、地址信号、时钟沿组合。实际开发中,控制器发出的命令一旦违反状态图里的跳转条件,轻则数据错误,重则颗粒工作异常。所以读参数表之前,我个人建议先把命令真值表和状态图看熟,它们是整个协议的主心骨。
4.3 最容易踩的坑:命令真值表和模式寄存器误读
读 JESD238 常见的坑有三个。第一,伪通道模式下某些地址位会被重新定义,如果你照着 HBM2E 的习惯去理解行列地址位宽,很容易在控制器设计时位序颠倒。第二,模式寄存器的复位默认值不等于推荐值,标准里经常有 Reserved 位,手册上可能建议你写 1,但标准默认是 0,这类细节最容易被忽略。第三,刷新相关的命令粒度不同,有的伪通道支持独立刷新,有的命令是全局广播,如果混淆,会直接影响刷新调度时序。解决方法也很简单:每次设计用到某个模式寄存器之前,打开 PDF,精确查到这个寄存器的位定义,不要凭印象抄。
5. 疑难排查:HBM3 设计测试中的典型问题
5.1 带宽跑不满,先查这三个方向
实测中 HBM3 系统经常出现“理论 1.64 TB/s,实际只有三分之一”的情况。我会优先排查三个方向:第一,刷新调度是否和读写命令冲突,高温度下刷新频率上升,如果控制器不做优先级屯缓存,会吃掉大量带宽;第二,伪通道并发度是否真的打开,有些控制器代码只用了单一伪通道的连续访问,完全没有发挥多通道并行;第三,读写转换方向切换太频繁,导致总线上大量时间处于转向周期,而不是数据传输周期。建议用连续读、连续写、混合读写三类 pattern 分别压测,定位瓶颈到底在控制器调度、总线时序还是颗粒本身的读写恢复时间。
5.2 温度、刷新与 ECC 带来的可靠性陷阱
HBM3 堆叠层数高,中间层 die 的散热比底层差,高温会导致电容漏电加快,所以标准对温度补偿刷新和自适应刷新管理有明确要求。实际测试时不要只在常温下验证,一定要做高温持续运行和温度循环测试。另外 HBM3 内部有片上 ECC,可以纠掉一部分单 bit 错误,这容易给人一种“不需要系统级 ECC”的错觉,但片上 ECC 最多只能屏蔽 DRAM 内部的软错误,链路传输、控制器逻辑、电源噪声引入的错误还得靠系统级 ECC 或 CRC 机制兜底。我的原则是:片上 ECC 当成可靠性增强,系统级保护仍要完整做。
6. 一条可复制的 HBM3 学习路径
6.1 从 DDR 思维到 HBM 思维的三个转变
如果你系统学过 DDR 或者 LPDDR,切换到 HBM3 需要转变三个观念。第一个转变是位宽意识,DDR 每次访问可能只涉及 64 bit 数据线,HBM3 一打开就是 64 bit 伪通道,多个伪通道可以拼成更大的访问宽度,规划地址映射时不能再按传统“rank-bank-row-column”的思路想。第二个转变是时序粒度,HBM3 的许多时序参数按伪通道独立计算,设计控制器时要引入“每伪通道状态机”,而不是“整颗颗粒状态机”。第三个转变是刷新与温度管理,HBM3 需要更主动地根据温度变化调整刷新策略,这已经不是颗粒内部自己就能完成的事,控制器必须协同参与。
6.2 啃 JESD238 的几个实用习惯
最后分享我读 JESD238 的几个习惯,希望能让你少走弯路。第一,第一遍只看 Scope、术语、信号描述、封装图和带宽相关章节,建立一个整体印象,不求甚解。第二,第二遍重点研究命令真值表和状态图,在纸上画出几条典型访问流程:激活一行、连续读、连续写、预充电、刷新,反复对照状态图检查合法性。第三,最后才看参数表,并且只看自己要用的那一档速率配置。遇到 Electron 缩写多的情况,直接搜 PDF 里的术语定义章节,标准文档其实已经帮你把符号都统一好了。还有一个很个人的习惯:我会把 JESD238 和某一款具体 HBM3 颗粒的数据手册放在一起打开,对照着看,标准告诉我协议框架,数据手册告诉我真实器件的行为,两者互补之后,很多抽象的参数就有了实感。这份标准啃下来不轻松,但啃完之后你对高带宽内存体系的感知,会比看一百篇二手文章都扎实。
本文还有配套的精品资源,点击获取