三维集成与芯粒

内存墙(memory wall)

想象一位厨艺高超的大厨,一分钟能切好、做好一百道菜,可食材进厨房的唯一通道,是一个服务员来回走到走廊尽头的储藏室去拿。很快,大厨这一班里大部分时间都在干站着,等下一篮蔬菜送来。这就是内存墙:几十年来,处理器做算术的速度,远比内存把数据送过来供它运算的速度涨得快。算力变便宜了,搬数据却没有。所以对许多真实的工作负载来说,真正的瓶颈不是算,而是喂给它去算。

这道鸿沟,可以一路追溯到你在阶梯更低处遇到过的一个极限。2006 年前后 Dennard 缩放走到尽头、时钟频率不再上涨,芯片厂商的回应是堆更多核心、更宽的向量与张量单元,于是一颗现代 GPU 或 TPU 每个周期都可能索取惊人数量的数据。主存(DRAM)也在进步,但主要进步在容量上,而不是字节在那颗独立内存芯片与处理器之间、沿着狭窄的连线和连接器流动的速度。每一次出片下片都要花时间,还要耗掉大量能量,往往远超过运算本身的能耗。结果就是一颗昂贵的加速器多半处于「挨饿」状态,它的算术单元都在等操作数。

对付这堵墙有两大类思路,而且两者都是在做几何文章,而不是把晶体管造得更快。第一类是把内存在物理上挪得更近、把通路修得宽得多:高带宽内存(HBM)是一摞 DRAM 裸片用硅通孔(TSV)连起来,再停放在硅中介层(interposer)上、紧挨着处理器,用成千上万条又短又并排的连线,取代那几根纤细的板上走线。第二类是把计算挪到数据身边,也就是近存计算与存内计算,让简单的运算发生在内存内部或旁边,于是字节几乎不必长途奔波。两者都没有让某一颗晶体管变快,但都缩短了数据必须移动的距离。

off-package DRAM (a few wide-ish DDR channels):

  [CPU/GPU] === bus ===========>  [ DRAM chip ]   far, narrow-ish, power-hungry

HBM stack on a silicon interposer (data travels ~mm, on 1000s of wires):

        +--------+   <- DRAM die
        +--------+   <- DRAM die  } TSV-stacked
        +--------+   <- DRAM die
        | logic  |
  [ GPU ]====||====  thousands of short, parallel links
  ---------- interposer ----------

板外 DRAM 逼着数据挤过几条又长又窄的通道;HBM 则用 TSV 把 DRAM 堆叠起来、放到处理器旁边的中介层上,用成千上万条又短又并排的连线换掉那几根纤细的走线,把管道拓宽。

内存墙本质上是数据搬运的带宽与能耗问题,而不是容量问题——正因如此,真正在对付它的是封装与集成,而不是更精细的光刻。

又称
bandwidth wallmemory bottleneck带宽墙頻寬牆内存瓶颈記憶體瓶頸