第二讲:片上存储系统详解
大家好,欢迎来到第二讲。
上一讲我们聊了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和DRAM的区别、存储层次的组织、一致性协议,都在里面了。
我的建议:刚开始学的时候,别急着把所有细节都记住。先理解这张图的结构,把大框架搭起来。细节可以在实际项目中慢慢补。我当年也是这么过来的。
好了,这一讲就到这里。记住:存储系统的设计,是AI芯片性能的基石。下一讲我们会聊算子融合,到时候你会发现,存储系统的设计直接决定了算子融合的效果。
想要更多资料,联系可可