存储器层次结构

  • CPU使用一种“内存映射”的技术来向I/O设备发射命令,地址空间中有一块地址是为与I/O设备通信保留的
  • 局部性原理:时间局部性,空间局部性,一个良好的计算机程序具有良好的局部性
  • 程序的空间局部性很有趣,“抖动“描述的就是高速缓存反复加载和驱逐相同的高速缓存块的组
  • 高速缓存为什么用中间的位来做组索引而不是用最高位?因为如果用最高位做组索引,一些连续的内存块就会映射到相同的高速缓存块,这样对高速缓存的使用效率就会很低
  • 高速缓存有关写的问题:直写法,写回法。
  1. 直写法:更新了高速缓存中的一个字以后立即写回低一层中
  2. 写回法:只有当替换算法替换出去时候才写回
  • 编写高速缓存友好的代码
  1. 将你的注意力集中在内循环上,大部分计算和内存访问都发生在这里
  2. 对局部变量的反复引用是好的(时间局部性)
  3. 步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存为连续的块(空间局部性)
  4. 总结:存储器的性能是一座时间和空间局部性的山。聪明的程序员会试图构造他们的程序使得程序运行在山峰而不是低谷。目标就是利用时间局部性,使得频繁的使用的字从L1高速缓存中取出,利用空间局部性,使得尽可能多的字从L1中取出
posted @ 2023-03-01 15:51  stu--wy  阅读(45)  评论(0)    收藏  举报