重温计算机组成原理:高速缓冲存储器与内存的映射方式

目录

1、直接映射

2、全相联映射

3、组相联映射


 

 

       指令系统运行过程中,CPU访存时间过慢导致CPU的等待,为了提升核心利用率,在主存和CPU之间增加高速缓冲存储器(Cache),也就是把经常使用的常数、常量、指令放在Cache中,来减少CPU访存时间,缩短指令的执行时间,从而提高计算机的性能。一般Cache采用高速的SRAM制作,其价格比主存贵, 但因其容量远小于主存,可以解决速度和成本之间的矛盾。

由主存地址映射到Cache 地址称为地址映射。地址映射方式很多,有直接映射(固定的映射关系)、全相联映射(灵活性大的映射关系)、组相联映射(上述两种映射的折中)。Cache为8K,主存为1M,块大小为512字,目标内存地址0240CH。

1、直接映射

 

直接映射,顾名思义就是按照Cache直接映射到主存,但是Cache对不上主存,怎么办?按照以下对应关系给匹配上。

Cachei块=主存j块 % Cache块数n,所以主存地址=标记+Cache行号+块内地址。

如Cache为8K,主存为1M,块大小为512字,Cache行号需要16行(8K=2^13字=2^4行*512字/行),对应主存地址(Line Number)需要4位。

1M=2^20字=2^11*512字/行=2^7块群*2^4块/块群*512字/行,对应主存地址(Tag)需要7位,剩余块内地址(Line Offset)需要9(20=7+4+9)。

 

内存地址0240C化为2进制为 0000 0010 0100 0000 1100

Tag(7)

Line Number(4)

Line Offset(9)

0000001

0010

000001100

也就是说,0240C在Cache的第2行,主存的第18块(在第1块群的第2行)

 

我们来分析下直接映射的优缺点。

优点:实现简单,一个简单的求余公式就能知道对应关系。

缺点:如果CPU或外部设备访存的地址都是在"同余"里,Cache的命中率就不高了。如上面例子,主存第0块,16块,32块(Cache共16块)是在同余里,对应Cache都是第0块,那么CPU访存的时候,第0块的内容命中率相对低,而且需要不停得替换这一块的内容。

 

2、全相联映射

 

由于直接相联的同余缺陷,全相联就是为了解决灵活分配Cache地址,也就是说一个主存块可以装进Cache的任意一行。

那么主存地址需要标记+块内地址两个字段就可以完成匹配了。

如Cache为8K,主存为1M,块大小为512字,1M=2^20字=2^11*512字/行,对应主存地址(Tag)需要11位,剩余块内地址(Line Offset)需要9(20=11+9)。

内存地址0240C化为2进制为 0000 0010 0100 0000 1100

Tag(11)

Line Offset(9)

00000010010

000001100

我们来分析下全相联映射的优缺点。

优点:每个Cache都可以映射任何一块主存,非常灵活。

缺点:每次访存的时候要知道是否在Cache中,都需要遍历整个Cache,时间开销大,实现较复杂。

 

 

3、组相联映射

 

由于直接映射与全相联映射的优缺点刚好相反,就有了第三种结合前两者的组相联映射。

组相联的主要思想是,把Cache所有行分为2^q个相同大小的组,每组有2^s行,也就是说组间按照直接映射的方式,组内按照全映射的方式。

那么主存地址就需要标识+Cache组号+块内地址组成了,Cache组号= 主存块号%Cache组数。

如Cache为8K,主存为1M,块大小为512字,若s=1(2路组相联),那么

Cache需要16组(8K=2^13字=2^3组*2^1行*512字/行),对应主存地址(Line Number)需要3位。

1M=2^20字=2^11*512字/行=2^8组群*2^3/组群*512字/行,对应主存地址(Tag)需要8位,剩余块内地址(Line Offset)需要9(20=8+3+9)。

 

内存地址0240C化为2进制为 0000 0010 0100 0000 1100

Tag(8)

Line Number(3)

Line Offset(9)

00000010

010

000001100

也就是说,0240C在Cache的第2组,主存的第18块(在第2组群)

 

组相联映射结合了直接相联和全相联的优点,当q=0(只有一个组)的时候,那就是全相联。

当s=0(只有每组只有一行)的时候,那就是直接相联。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值