本文已参与「新人创作礼」活动,一起开启掘金创作之路。
cache访问过程
cpu获取数据--》通过给的主存地址,判断cache是否缓存有此数据--》有从cache拿,没有从主存拿 需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处理器操作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下的二级缓存、三级缓存和内存仅用于存储CPU所需数据。
cache与主存之间是字块传送。
每个缓冲块需要一个标记来表示当前存放的事哪一个主存块,该标记的内容相当于主块的编号。
一般一级缓存用来缓存指令,二级、三级缓存等用来存储数据。
主存地址映射
直接映射(一路组相联):一个主存块,只能放到一个缓存块
组相联映射:一个主存块,能放到一个n个缓存块(n<缓存块的总数),下图中一个主存块可以选择放在同一组的2个缓存块之一。
全相联映射:一个主存块,能放到所有缓存块之一中。
帮助理解:
统一缓存和分立缓存
统一缓存:指令和数据都存在一个缓存。 分立缓存:指令和数据分别由指令缓存和数据缓存两个缓存分别存储。一般采用超前控制或流水线控制方式时,一般都采用分立缓存。
缓存块(线\line)替换
cache替换机构包含LRU阵列(链),LRU阵列(链)与缓存存储器区域的块一一对应,同步更新,即LRU中指定的块才会在缓存存储器区域中存在。
路
所谓8路组相连( 8-way set associative)的含义是指,每个组里面有8个行/线/line/块