学习笔记--cache映像

在计算机的主存(内存)和CPU之间,还有cache,常用数据先从内存复制到cache,以提高性能。

这样就有一个如何复制的问题,也就是数据从内存复制到cache后,存放在哪里的问题。二者有一个地址对应关系。

有3种对应模式:

1、直接相联
2、全相联
3、组相联

不管哪种对应模式,为了适应将数据复制到cache,内存区大小 == cache大小;内存的页(也称为块)大小,也会和cache的页(块)大小保持一致。即

内存区大小 == cache大小
内存页(块)大小 == cache页(块)大小

一定要牢牢记住这一点。这是cache每块编址的基础。

内存页与cache页的对应关系,通过一个标记对照表来记录和查找。

1、直接相联

内存根据cache的尺寸,先分区,然后每个区分页。每个区跟cache一样大;每个页跟cache的页一样大。

内存页号==cache页号。主存分区,每个区尺寸==cache的尺寸;然后每个区分页(块),内存页号==cache页号。直接相联冲突机会最大。

cache标记位记录内存区号。页号不必记录,因为内存页号==cache页号。

标记 = 内存区号

在这里插入图片描述

2、全相联

内存不分区,只分页,每个页跟cache的页一样大。

内存块可以复制到cache任一块。冲突机会最小。
cache标记记录内存页号。

标记 = 内存页号

在这里插入图片描述
上图主存页(即块)与cache之间的黑线,代表比较。

3、组相联

内存根据cache的尺寸,先分区,然后每个区分页。每个区跟cache一样大;每个页跟cache的页一样大。

内存和cache各自分组,组之间直接相联,组号保持一致;而组内的块则全相联,自由搭配。冲突机会折中。

教程里说,组相联情况下,内存组内的页数 == cache组数,好像没道理,是不是说错了?应该是 内存组内的页数 = cache组内页数吧。

cache标记记录内存区号 + 块号。内存组号不必记录,因为内存组号 == cache组号。

标记 = 内存区号 + 内存页号

在这里插入图片描述

4、习题一

在这里插入图片描述

答:
1)
所谓Cache的地址变换表,就是Cache的标记表。已知组相联方式下,cache标记 = 内存区号 + 块(页)号
Cache大小 = 2 * 4 * 512 = 2 ^12,2的12次方
则有:
内存区数量 = (2^20) / (2 ^12) = 2 ^ 8
内存每组块数 == Cache每组块数 = 4 = 2^2
所以Cache每行标记为 8 + 2 = 10bit(组相联,标记 = 主存区号 + 主存页号)
由于Cache共有2 * 4 = 8块,因此标记表容量为 8 * 10bit

2)组相联的特点是组间直接相联,不需要比较;但组内块全相联,需要一一比较,因为每组有4块,所以每次都要比较4次,参与比较的存储单元有 4 个。所谓存储单元,就是Cache的一块。


2020.11.06
存储器容量,是指地址变换表的大小

5、习题二

在这里插入图片描述
解:
1)cache共有32块(页),那么地址变换表(标记对照表)就应该有32条记录,即包含32个存储单元

2)组相联标记 = 区号 + 页号
分为这么多个区:4096 / 32 = 212 / 25 = 27
每个区4块,就是4页: 4 = 22
所以每个存储单元(即标记)存放 7 + 2 = 9 位二进制数

3)区号直接索引,每次参与相联比较 4 个存储单元


2020.11.06
这个存储单元是比较含糊的,主要是要搞清楚它是存储一条比较记录还是一个位?从题干中可看到,是一条记录。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值