利用的原理:程序访问的局部性原理
(时间访问局部性和空间访问局部性)
解释:时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。
空间局部性是指一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问。
cpu访问的数据和指令,在一定时间内,只是对主存局部地址区域进行访问。
我们先说说时间局部性。在内存中往往是在主存中连续存放的。这些指令数据,可能需要多次调用,例如一些子程序,循环程序和一些常数。cpu将最近一段时间要频繁使用的数据和程序从主存送到cache中,这样cpu就可以在一定时间内只访问cache.
我们再说说空间局部性。上面说道,cpu访问数据和指令在主存内是连续存放的,所以cpu在访问某个存储单元后,马上就会访问他相邻的其他存储单元
直接映射
把主存的每一块映射到一个固定的cache行(槽)
映射关系为
cache行号=主存块号mod cache行数
假设cache有16行
例如:4=100 mod 16
说明主存第100块映射到cache第四行
cache原理与映射 - 草稿说下这个主存标记的作用,假设cache有16行,则每个块群有16块。主存第1块映射到cache的地址为1mod16=1,映射到第一行。但是第17块映射到cache地址,17mod16=1,同样也为第一行。第一个块属于第一块群,第17块属于第2块群,主存标记就可以指出我到底是1块群,还是2块群,还是其他块群。
CPU通过判断内存中访问单元的高七位的主存标记和cache槽里面的标记相等否,相等且有效位为1表示命中了,否则就是不命中。
cache最高的一位为有效位,0表示空,被替换后为1
全相连映射
cache原理与映射 - 草稿不按地址访问,按内容访问。命中率很高,无需cache索引,因为要同时比较cache项的标志。每一行都要比较器,代价很大,速度慢。
组相联映射
cache组号=主存块号mod cache组数
网友评论