一、高速缓存 Cache
1、冯诺依曼结构 的 性能瓶颈
冯诺依曼结构 的 性能瓶颈 : CPU 寄存器 的 存储速度 与 主存 ( 内存 ) 的 速度 不匹配 , 二者速度相差太大 , 严重影响计算机的性能 ;
- 随着 CPU 发展 , CPU 的运算速度越来越快 ;
- 内存 的 读取速度很慢 , 严重浪费了 CPU 的计算性能 ;
2、高速缓存 Cache 解决性能瓶颈
高速缓存 Cache 主要解决 上述问题 , 主存 中的数据 先读取到 高速缓存 Cache 中 , 然后在从 Cache 中读取到 CPU 寄存器 中 ;
高速缓存 Cache 的 数据访问速度 高于 主存 ( 内存 ) , 低于 CPU 寄存器 ;
高速缓存 Cache 的 存在 对于 程序员 来说是透明的 , 其内部的 地址 , 映射关系 , 由硬件直接完成 ;
3、程序局部性原理 - 时间局部性、空间局部性
高速缓存 Cache 改善 改善性能 , 依据是 " 程序局部性原理 " ;
" 程序局部性原理 " 分为 : 时间局部性 和 空间局部性 两种原理 ;
- 时间局部性 : 程序 中 某条指令 一旦执行 , 可能在不久之后还要再次执行该指令 ;
- 只要该指令还在 高速缓存 Cache 中 , 就可以避免大量读取内存的操作 ;
- 导致 时间局部性 的 最主要的原因就是 程序中的 大量的循环操作 ;
- 该特性 能够有效减少 因频繁访问主存 而引起的性能损失 ;
- 空间局部性 : 程序 中 某个存储单元 一旦被访问 , 可能在不久之后 附近的存储单元也要被访问 ;
- 程序访问的 内存空间 数据 的地址 , 可能集中在一定的范围内 ;
- 该特性 提高了数据加载的效率 , 减少了主存访问的延迟 ;
工作集理论 : 程序运行时 , 会频繁访问的 页面集合 , 被称为 " 工作集 " ;
4、高速缓存 Cache 的评价标准 - 访问命中率 和 访问失效率
CPU 访问数据时 , 可以从 高速缓存 Cache 中获取 , 也可以从 内存 中获取 ;
- 从 高速缓存 Cache 获取 的概率 称为 访问命中率 Hit Rate ;
- 访问命中率 Hit Rate 越高 , 表示 高速缓存 Cache 有效地减少了对主存的访问次数 , 提高了整体的访问速度和性能 ;
- 访问命中率 Hit Rate 越低 , 表明 高速缓存 Cache 未能有效地减少主存访问次数 , 系统性能可能会受到影响 ;
- 从 内存 获取 的概率 称为 访问失效率 Miss Rate ;
- 访问命中率 Hit Rate 失效率 Miss Rate = 1 ;
高速缓存 Cache 系统 可以通过 改进替换策略、增大缓存容量、优化缓存块大小等方式 进行优化 , 提升 访问命中率 Hit Rate , 降低 访问失效率 Miss Rate ;
5、数据访问平均周期
数据访问平均周期计算 :
- 假设 访问命中率 Hit Rate 的概率为 h ;
- 高速缓存 Cache 的 访问周期是 t1 ;
- 主存 的 访问周期是 t2 ;
- 则 使用 Cache 和 主存 的平均访问周期为 t3 ;
有如下公式 :
是 Cache 访问周期
乘以 Cache 的访问概率 h ;
是 主存访问周期
乘以 主存访问概率
;