计算机存储体系
计算机存储体系是一个金字塔结构它按照速度、容量、成本进行分级目的是用最低的成本实现最快的平均访问速度。1. 核心逻辑局部性原理计算机程序通常遵循局部性原理时间局部性刚被访问的数据很可能再次被访问。空间局部性访问某个数据时其附近的数据也很可能被访问。基于这个原理系统将最热的数据放在最快但最贵的存储中将冷数据放在最慢但最便宜的存储中。2. 存储金字塔从快到慢下图清晰地展示了计算机存储体系的层级结构3. 各层级详细对比层级典型容量访问速度成本物理位置用途寄存器~1KB0.3 ns极高CPU内部存放当前指令和操作数L1缓存32-512 KB0.5-1 ns极高CPU内部存放最热指令和数据L2缓存256K-4 MB3-10 ns高CPU内部/外部存放次热数据L3缓存8-64 MB10-20 ns中高CPU外部共享缓存减少内存访问主内存8-256 GB50-100 ns中等内存条运行程序和临时数据SSD256 GB-4 TB50-150 μs低硬盘位持久化存储系统盘HDD1-20 TB1-10 ms极低硬盘位大容量冷数据存储网络/磁带无限10-100 ms极低远程/离线备份、归档4. 关键概念解析缓存Cache定义位于CPU和主内存之间的高速缓冲存储器L1/L2/L3。作用解决CPU和内存之间的速度鸿沟。CPU速度极快而内存相对较慢缓存通过预测和预取数据让CPU“感觉”内存很快。命中率如果CPU要的数据在缓存中称为命中否则需要去内存取称为未命中。现代CPU的缓存命中率通常在90%以上。内存RAM特性易失性断电数据丢失。作用存放当前正在运行的程序和数据。它是CPU的“工作台”。外存硬盘特性非易失性断电数据不丢失。作用长期保存数据。当内存不够用时操作系统会将不常用的内存数据“交换”到硬盘虚拟内存机制。5. 性能优化启示写代码时要考虑缓存友好性尽量让数据连续访问空间局部性避免在内存中“跳来跳去”这样可以提高缓存命中率大幅提升程序速度。数据库设计数据库的Buffer Pool缓冲池就是内存中的一块区域它模拟了计算机的存储体系将热数据放在内存中冷数据放在磁盘上。