第二讲:片上存储系统详解

大家好,欢迎来到第二讲。

上一讲我们聊了AI芯片的整体架构,今天咱们深入一个非常核心的部件——片上存储系统。说白了,就是芯片内部怎么存数据、怎么搬数据。我做了这么多年芯片,可以负责任地告诉你:存储系统的设计,往往决定了AI芯片的成败。

一、SRAM与DRAM:一对欢喜冤家

先说说两种最基本的存储单元:SRAM和DRAM。很多同学觉得它们都是内存,差不多。其实差远了。

1. SRAM(静态随机存取存储器)

SRAM,静态的。为什么叫静态?因为它只要不断电,数据就能一直保持,不需要刷新。它的基本单元是6个晶体管组成的触发器。

优点:

  • 速度快,访问延迟通常在1-2ns
  • 不需要刷新,控制简单
  • 接口简单,容易集成

缺点:

  • 面积大——6个晶体管才能存1bit
  • 成本高,每比特价格是DRAM的10倍以上
  • 功耗相对较高

我个人的经验:在AI芯片中,SRAM主要用来做片上缓存。比如我们做的一个7nm芯片,L1 cache用了512KB的SRAM,光这一块就占了芯片面积的15%。没办法,为了速度,得舍得下本。

2. DRAM(动态随机存取存储器)

DRAM,动态的。它用一个晶体管加一个电容来存1bit。电容会漏电,所以需要定期刷新,这就是「动态」的由来。

优点:

  • 密度高,同样面积能存的数据是SRAM的4-8倍
  • 成本低,适合做大容量存储

缺点:

  • 速度慢,访问延迟50-100ns
  • 需要刷新,增加了控制复杂度
  • 接口复杂,需要专门的控制器
特性 SRAM DRAM
存储单元 6T触发器 1T1C
访问速度 1-2ns 50-100ns
密度 低 高
是否需要刷新 否 是
典型应用 Cache、寄存器 主存、显存

避坑指南:我曾经在一个项目中,为了省成本,把本该用SRAM的地方换成了DRAM。结果呢?数据搬移的延迟直接翻了三倍,整个算子的性能惨不忍睹。后来老老实实换回SRAM,问题才解决。所以,该用SRAM的地方,千万别省。

二、片上存储器的组织方式

好了,知道了SRAM和DRAM的区别,咱们来看看在AI芯片里,这些存储器是怎么组织的。

典型的AI芯片存储层次是这样的:

寄存器文件 (RF) → L1 Cache → L2 Cache → 片上SRAM → HBM/DRAM

越往左,速度越快,容量越小。越往右,速度越慢,容量越大。

1. 寄存器文件(Register File)

这是离计算单元最近的存储。每个PE(处理单元)都有自己的寄存器文件。容量很小,通常几十到几百字节。但速度极快,一个时钟周期就能读写。

2. L1 Cache

每个PE簇共享一个L1 Cache。容量一般在几十KB到几百KB。我见过一个设计,每个PE簇配了128KB的L1 Cache,用来存权重和中间结果。

3. L2 Cache

多个PE簇共享L2 Cache。容量在几MB到几十MB。它是连接计算单元和片外存储的桥梁。

4. 片上SRAM

这是芯片内部最大的SRAM块,容量可达几十MB。用来存整个模型或大块数据。我参与的一个芯片,片上SRAM做到了48MB,跑BERT模型完全不用访存。

关键点:组织方式的核心思想是「局部性原理」——把最常用的数据放在最快的存储器里。你想想看,如果每次计算都要去片外DRAM拿数据,那延迟得多大?

三、多级缓存的一致性协议

多级缓存带来了一个头疼的问题:一致性。什么意思呢?就是不同级别的缓存里,同一份数据可能不一样了。

举个例子:PE0从L1 Cache读了数据A,改了它。但L2 Cache里还是旧的数据A。这时候PE1从L2 Cache读数据A,读到的就是错的。

怎么解决?靠一致性协议。

1. MESI协议

最经典的协议。每个缓存行有四种状态:

  • M(Modified):数据被修改了,和其他缓存不一致
  • E(Exclusive):只有本缓存有这份数据
  • S(Shared):多个缓存共享这份数据
  • I(Invalid):数据无效

协议通过「嗅探」机制来维护一致性。每个缓存控制器监听总线上的读写请求,根据请求更新自己的状态。

2. 目录协议

MESI协议在核数多的时候效率不高。目录协议用了一个中心化的目录来记录每个缓存行的状态。谁有这份数据、什么状态,目录里一查就知道。

我做过一个16核的AI芯片,用的就是目录协议。虽然目录本身占了一些存储,但一致性维护的效率高了很多。

注意:一致性协议不是万能的。我曾经遇到一个bug,因为缓存行的大小设置不合理,导致频繁的伪共享(False Sharing)——两个核明明在操作不同的数据,但因为它们落在同一个缓存行里,导致不断互相失效。性能直接腰斩。

四、知识体系总览

下面这张图,是我用SVG画的,帮你把这一讲的核心逻辑串起来:

片上存储系统知识体系 存储类型 组织方式 一致性协议 SRAM 6T单元、速度快、面积大 用于Cache、寄存器文件 典型延迟:1-2ns DRAM 1T1C单元、密度高、需刷新 用于主存、HBM 典型延迟:50-100ns 存储层次 RF → L1 → L2 → 片上SRAM 局部性原理 容量与速度的权衡 关键设计 缓存行大小 关联度(路数) 替换策略(LRU等) MESI协议 Modified/Exclusive Shared/Invalid 嗅探机制 目录协议 中心化目录 适合多核场景 避免伪共享 核心思想:用最快的存储器存最常用的数据 SRAM做缓存、DRAM做大容量、一致性协议保正确

嗯,这张图基本把这一讲的内容都涵盖了。你仔细看看,SRAM和DRAM的区别、存储层次的组织、一致性协议,都在里面了。

我的建议:刚开始学的时候,别急着把所有细节都记住。先理解这张图的结构,把大框架搭起来。细节可以在实际项目中慢慢补。我当年也是这么过来的。

好了,这一讲就到这里。记住:存储系统的设计,是AI芯片性能的基石。下一讲我们会聊算子融合,到时候你会发现,存储系统的设计直接决定了算子融合的效果。

想要更多资料,联系可可