缓存:
- 解决 CPU与 I/O设备的 速度速度差异
- 减少CPU中断频率
- 使CPU和I/O设备可以更好的并发执行
主存:
- 主要解决容量问题
磁盘读取方法:
- 先来先服务算法
- 最短寻道时间算法
- 扫描算法(电梯算法)
- 循环扫描算法
高速缓存:
- 一个字有32位,一个字块有B个字,主存共M个字块
- B * M = 主存总字数
- B * M * 32 = 主存总容量(bits)
- 字的地址:前m位,后b位
- 2^m = M,2^b = B
例题:
主存用户空间容量4G,字块大小4M,字长32位,
对于字地址中的块地址m和块内地址b的位数至少多少
4G = 4096M
字块数:4096 / 4 = 1024
块内地址m:2^m = 1024 m = 10
块内字数: 4M / 32bit = 1048576
块内地址b: 2^b = 1048576 b = 20
m >= 10 b >= 20
- 一个字有32位,一个字块有B个字,缓存共C个字块
- 2^c = C 2^b = B
访问主存次数:Nm、访问cache次数Nc
- 命中率:h = Nc / Nc + Nm
访问效率:e、访问主存时间:tm、访问缓存时间:tc
- 访问cache->主存系统平均时间:ta = h * tc + (1 - h)* tm
- 访问效率:e = tc / ta = tc / h * tc + (1 - h)* tm
例题:
cpu运行,共访问cache命中2000次,访问主存50次,
已知cache存取时间位50ns,主存存取时间200ns,
求:cache->主存系统的命中率、访问效率和平均访问次数
命中率:h = 2000 / (2000 + 20)
≈ 0.97
平均时间:ta = 0.97 * 50 + (1 - 0.97) * 200
= 54.5
访问效率:e = 50 / 0.97 * 50 + (1 - 0.97) * 200
= 50 / 54.5
≈ 0.917
高速缓存替换策略的四种方法:
1、随机算法
2、先进先出算法(FIFO)
- 替换最先进入
原: 1,2,3,4
// 1被替换,剩余2,3,4,5
替换: (1),2,3,4,5
3、最不经常使用算法(LFU)
访问 | 1 | 2 | 3 |
---|---|---|---|
频率 | 2 | 1 | 4 |
- 替换频率最低的2
4、最近最少使用算法(LRU)
按照三位存储
1、1
2、2 1
3、3 2 1
// 1被替换
4、5 3 2 [1]
// 2被替换
5、6 5 3 [2]
6、6 5 3
// 3被替换
7、9 6 5 [3]