一文理解cache和主存的映射方式

时间:2024-04-04 16:06:16

Cache

Cache是高速缓冲存储器,一般由SRAM组成,速度比主存块,但是价格高,容量小。因此,如果能把主存中的内容传递到cache中执行,便可以解决CPU与主存速度不匹配的问题。

为什么要映射

CPU访问cache时,根据主存地址来访问,但是不知道cache的地址,因此要根据主存的地址映射到cache的地址,才能访问cache。

直接映射

一文理解cache和主存的映射方式
cache有多行,主存多多块,主存的每一块可以装入cache的每一行。每一块里又有多个字节。公式如下:
j=i mod 2c (其中,j是要访问的cache的行号,i是主存的块号,c是行数)
以下便是cache的行的结构(省略了一些其他位)

有效位 标记位 数据
直接映射过程如下:

将主存地址按照下面结构划分

标记 Cache行号 块内地址

首先根据访存地址的行号,直接找到主存块在cache中对应的行,然后比较那一行的标记位和访存地址的标记字段是否相同,还有这一行的cache的有效位是否为1,如果两者都成立,则根据块内地址找到cache这一行里对应的字节即可,则命中。

直接映射优缺点

直接映射速度快,效率高,但是,命中率低,因为拿第0行举例,主存的第0块,2c块,2c+1…都可以存,且只能存在这一行,因此冲突率高,其他行空着也用不了。

(直接映射无需讨论替换算法,写时位置发生冲突直接替换)

全相联映射

全相联映射把主存地址划分如下:

标记 块内地址

即不需要根据行号来寻找对应的cache的行,主存的这一块可以存在任意一行,这行有了就其他行,充分利用了cache的空间。
cpu访存时,就根据标记字段,与cache里的标记位进行逐一比较,遇到相同的以及有效位为1的,则命中。
优点:命中率高,空间利用率高,冲突概率低
缺点:有效位的比较速度较慢,实现成本高
一文理解cache和主存的映射方式

组相联映射

组相联映射结合了以上两个的优点。
将cache的几行看成一组,然后利用直接映射的原理找到主存的块在cache里对应的,然后再在组内比较每一行的标志位于主存地址的标志字段还有看有效位。
一文理解cache和主存的映射方式

相关文章