一、CPU缓存层级层级名字你听到的术语厨房类比速度大小第0层寄存器 (Register)厨师手上的食材正在切/炒的菜0.3 ns几十个字节第1层L1 缓存 (Cache)厨师面前的砧板/调料架随手拿1 ns几十KB第2层L2 缓存 (Cache)厨房里的操作台面转身能拿到7 ns几百KB第3层L3 缓存 (Cache)厨房里的冰箱冷藏层走两步能拿到20-50 ns几MB到几十MB第4层主存 / 内存 / RAM楼下的菜市场/超市要出门去买100 ns几GB到几十GB第5层硬盘 / SSD / 外存郊区的大仓库/农场要开车去拉毫秒级慢10万倍几百GB到几TBROM是只读存储器1. “内存”、“主存”、“RAM”——它们是同一个东西内存主存RAM随机存取存储器就是上表中第4层那个“楼下的菜市场”它断电后数据会丢失“易失性存储器”容量一般是8GB、16GB、32GB买电脑时说的“内存条”就是这个关键点CPU不能直接处理内存里的数据必须先把数据读取到缓存或寄存器才能计算2.“缓存”、“Cache”、“L1/L2/L3”——它们是CPU自带的“快取”缓存Cache高速缓冲存储器是CPU芯片内部的最小快极速存储它分为三级L1、L2、L3离CPU核心越近越快但也越小。L1每个核心独有最快1ns最小约32kBL2每个核心独有稍慢7ns稍大约256kBL3多个核心共享更慢~ 50ns更大几MB~几十MB关键点缓存不是“内存”它是“内存的加速器”。CPU先问缓存要数据缓存没有才去问内存要。3.“寄存器”——CPU的“终极快手”寄存器在CPU核心内部是最快最小的存储0.3ns几十字节它直接参与运算比如“把A寄存器和B寄存器的数相加结果存到C寄存器”可以理解为缓存是“食材仓库”寄存器是“厨师手里的菜刀/锅铲”——直接在用没有比它更近的了4.“外存”、“硬盘”、“SSD”——永久存东西的地方外存硬盘/SSD就是电脑关掉后数据还在存储“非易失性”速度比内存慢10万倍左右毫秒级vs纳秒级但是容量大512GB、1TB我们说的“C盘、D盘就是这个”区别内存是临时工作台外存是永久仓库。程序启动时操作系统把硬盘上的代码和数据搬到内存里CPU才能执行二、算子慢怎么判断Cache Miss数据不在L1/L2/L3缓存里得去内存拿延迟从1ns暴涨到100ns慢了100倍伪共享两个内核抢同一个缓存行多线程性能不增反降内存带宽瓶颈数据量太大从内存搬进缓存的“路”不够宽CPU算的很快但是数据运不过来干等着