cache三种地址映像

为了把信息存放到Cache中,必须应用某种函数把主存地址映像到Cache,称作地址映像,即把存放在主存中的信息按照某种规则装入Cache。

cache与主存之间的地址映像方式有三种

1. 直接映像

每个主存块只能存放固定位置

在Cache中的位置 = 主存块号 % Cache总块数

优点:实现简单。对于任意一个地址,只需对比一个“标记”,速度最快

缺点:在其他地方有空闲Cache块,但8号主存块不能使用。

直接映射的地址结构:

标记位cache行号块内地址

2. 全相联映像

主存块可存放在Cache中的任意位置

优点:Cache存储空间利用充分,命中率高。

缺点:成本高,查找“标记”最慢,有可能需要对比所有行的标记。

全相联映射的地址结构:

主存块号块内地址

例题:假设某个计算机的主存地址空间大小为256MB,按字节编址,其数据Cache有8个Cache行,行长为64B。

256MB = 2^28B,所以主存地址共有28位。

其中,Cache行长为64B = 2^6B,

所以块内地址占6位 主存块号地址占据28-6 = 22位。

 

3. 组相联映像

组间直接映像,组内全相联映像,是直接映像和全相联映像的折中方案。

组间直接映像,组内全相联映像。

所属分组= 主存块号 % 分组数       r路组相联映像:r个Cache行为一组

标记位cache组号块内地址

例题:假设某个计算机的主存地址空间大小为256MB,采用2路组相联,按字节编址,其数据Cache有8个Cache块,块长为64B。

256MB = 2^28B,所以主存地址共有28位。

其中,Cache行长为64B = 2^6B,又因为是2路组相联一共有8个cache块所以一共有4组4=2^2所以组号为2位

所以块内地址占6位,组号为2位,主存块号地址占据28-6-2= 20位。