这章cache是重点,必须会cache和主存的三种映射。
推荐题目:【考研】计组习题:存储器_某计算机主存按字节编址,由4个-CSDN博客
目录
[1. 块冲突](#1. 块冲突)
[3. 大题【一定要注意按字编址还是按字节编址】](#3. 大题【一定要注意按字编址还是按字节编址】)
一、根据存储容量计算地址数和数据位数
存储单元个数决定地址线个数(2^N个单元,对应N个地址线),字长决定数据线个数。
由于 cache 存放的是主存活跃块的副本,所以不能认为总容量为两个层次容量的简单相加。
二、SRAM和DRAM
- SRAM主要用于构成cache
- DRAM主要用于构成主存,必须定期刷新。采用地址复用技术,地址线是原来的一半。
- SRAM和DRAM的主要区别在于基本存储元不同。
- 刷新方式:集中式刷新(存在死区时间)和分散式刷新。
例题:
8位对应8根数据线,4M对应22根地址线,但这是DRAM,采用地址复用技术,地址线减半,11根地址线。8+11=19
分散刷新例题:(我们作业题只考了这个分散刷新,没考集中式刷新)
三、存储器容量的扩展
分为位扩展,字扩展和字位扩展。
- 位扩展:数据线增加。
- 字扩展:地址线增加。
- 字位扩展:先位扩展再字扩展
四、cache命中率计算
五、多模块交叉存储器
六、主存与Cache地址映射【必须会!!!】
这个最好找个视频课详细看一下课程。直接映射方式、全相联映射方式、组相联映射方式。三个都要会。注意组相联的组是按cache的容量计算的。
题目中有按字编址、按字节编址等字眼。他们的意思解释:
存储容量的计算是存储单元数 * 存储字长(每单元比特数)。
它说按照字节编址,那就是每个单元都是一个字节,8位,数据线有8个。
如果按照字编址,那就是每个单元都是1个字。这个字的大小取决于计算机的位数。如果计算机是32位,那么1个字是32位。
1. 块冲突
2.计算装入的组号,行号等
先计算出2593在主存中的块数:2593/32=81.....1,因为从零开始编号,所以他在81号。 由于cache与主存的映射是通过"模m"交叉编址,即对cache行数求余的余数相同的行放在cache中的同一行。所以81%64=17;
3. 大题【一定要注意按字编址还是按字节编址】
七、虚地址与主存地址转换
页面大小4KB,按字节编址,2^12*1B,低12位为页内地址。005120H,其中120H是页内地址。高位页号005在表中对应2B,则主存地址为2B120H
【这个图没有记录截的哪篇博客,如果有人知道请提醒我,我标注上。】
八、页表容量大小计算
页表总容量=页表项大小*页表项个数。 页表项个数即页个数等于虚存容量/页面大小。
页表项个数=页个数=页表长度。
注意页表容量的计算和页表长度计算的区别。
例题:
九、TLB
TLB是页表子集,TLB命中,页表一定命中。
十、LRU最近最久未使用算法
主存地址:主存标记+组号+块内地址。 组号占1位(4/2=2个组,1位可表示),块内地址占1位(因为按字编址,块大小为1个字。)
这两个组所表示的块内地址都有2个。
这些主存地址首先计算他们的组,然后按照LRU策略争夺组内那两个位置。