Cache缓存
在计算机系统,Cache使用RAM(随机存取存储)作为存储介质,这种存储介质访问速度比硬盘等其他存储介质要快得多。Cache的目的是减少处理器等高速组件访问低速存储器(例如硬盘)的次数。使用Cache,处理器可以更快地访问数据,从而提高系统性能。
为什么使用Cache
避免CPU空等现象。
Cache工作原理
主存和缓存编址
从主存储器中 按块取出数据 。
Cache块上的标记:标记了主存块与Cache块之间的对应关系(如果一个主存块写入Cache块中,就可以把主存块号写入Cache块的标记中)
为了提高Cache的效率,Cache块的大小应该与主存块大小尽量相等。这样,在访问主存块的同时,Cache块也可以被加载到Cache中,提高访问速度和性能。
命中与不命中
命中:主存和缓存建立了对应关系
命中:主存和缓存没有建立对应关系
Cache命中率
CPU访问的信息在Cache中的比率。
命中率与Cache的容量和块长有关。
Cache块大小一般取4-8个字。块长一般取一个存取周期从主存调出的信息长度。
Cache-主存系统的效率
效率e与命中率有关:$e = {访问Cache的时间 \over 总共的访问时间} * 100\%$
设命中率h,访问Cache时间$t_{c}$,访问主存时间$t_{m}$
则 $e = {t_{c} \over h*t_{c}+(1-h)*t_{m}} * 100\%$
Cache的基本结构
主存Cache地址映射
将主存映射到Cache中,确定主存与Cache之间的对应关系。
主存Cache地址变换
完成主存块到Cache块的查找操作。
替换
如果Cache装满了,使用替换算法(不要求掌握)来确定哪些Cache块需要退出缓存,并写入主存块。
Cache的读写操作
读操作
先判断命中,若命中则直接在缓存中读出数据,若不命中分类讨论:
- 肯定需要访问主存拿出数据并发送给CPU
- 将数据放入Cache,方便后续使用:
- 若Cache满了,则启用替换,将主存读出的数据放入Cache。
- 若Cache未满,则直接将主存读出数据放入Cache。
写操作
- 写直达法:
- 写入Cache的同时也写入主存。
- 时间:写主存的时间。
- 特点:简单,保证Cache与主存数据的一致性。
- 写回法:
- 写Cache时不写入主存,Cache块退出(被替换)时,将数据写回主存。
- 写直达法与写回法优缺点比较:
- 假设有一个累加操作:
- 写直达法:每加一次都会访问主存。性能差。
- 写回法:完全加完后将结果写回主存。性能好。
- 主存Cache数据一致性:
- 一个主存块可能在不同Cache中存在多个副本。
- 无法保证Cache之间的副本数据一致。
- 假设有一个累加操作:
Cache-主存的地址映射
直接映射
-
主存编号与Cache能放的总块数取模 (分区操作),再放入到对应的Cache块中。
- 例如主存块为5号,Cache中最多放4块,则$5\%4=1$,将其放入1号Cache块。
-
主存块标记 t位(区号) --- Cache块地址 c位(块号) --- 字块内地址 b位 (t+c=m位)
全相联映射
- 主存中的每个块都可以映射到缓存中的任意一个单元格。
- 标记快(t+c位)--- 字块内地址(b位)
- 需要和每个标记比较,性能差,但更灵活。
组相联映射
全相联映射和直接映射的折中方案。
- Cache分块,块分组。
- Cache有多少组,主存每个区就有多少块。
- 主存中每个区的第i块,可以放在Cache第i组(直接映射特点)的任意一个块(全相联特点)。
2 条评论
怎么感觉 你啥都学啊
学校的必修课