计算机组成原理——主存和cache的地址映像

cache的工作一般是CPU给出一个地址,然后这个地址按照不同映象方式分割地址位,每一次都从这个地址中取出一部分,然后按照对应的判断方式判断该数据是否在cache中,并找到对应的地址

一、直接映像

	将主存分成若干个区,每个区的大小和cache的大小是一样的,然后每个区都分成若干个块,每一次只能将一个区
整体移入cache中,在寻找的时候,先通过地址块号找到映象关系表中的分区号,然后将分区号与对应地址位对比,若
比对成功,则读写cache的对应块的数据,若不成功,则访问主存中的数据,并考虑是否写入cache。
	映象关系表:包含区号和装入值(该块是否有数据),块号由于是固定的,所以cache表中的块号 = 主存地址块号%
cache的块数。
	特点:主存中的每一个块只能对应cache中的唯一一个块
		访问速度较快
		硬件实现简单
		cache利用率不高(块利用率较高)
		块冲突率较高(两个块映射到同一位置)
		一般小型器件使用

映象方式:
在这里插入图片描述

1、装入值可以理解为一个标志位,标志该项是不是为空

关系对应表
在这里插入图片描述

二、全相联映像

	将主存分成若干个块,cache也分成若干个块,在访问时,先读取地址的块号,然后从关系映象表中顺序查找,若
找到相同的块号,则将后面的cache块号取出,访问cache。
	特点:主存中的每一个块都可以随机映射到cache中的每一个块
		cache利用率较高
		速度比较慢
		电路也比较复杂

映射方式:
在这里插入图片描述
关系映射表:
在这里插入图片描述

三、组相联映像

	将主存分成若干个区,每个区又分成若干个组,每个组又分成若干个块,关系影响表中存储两部分内容,一部分
是由主存中区号和块号组成的数据,另外一部分是存储cache中的块号。工作时,先取出表示组号的地址,然后到关
系映象表中对应组区,将区号和块号拼接成一份数据,然后从对应位置开始顺序查找,找到则将cache组号找出,到
cache中读写数据
	特点:主存的每一组只能映射到cache中对应的组,但是组内的块却可以映射到对应组的任意位置。
		cache利用率较直接映象有所提高
		速度较全相联映象有所提高(综合二者优点)
		电路更为复杂
		块冲突率较低
		一般大型器件使用

映射方式:
在这里插入图片描述
映射关系表:
在这里插入图片描述

1、对于三种映象来说:找到了就到cache中存取数据,没找到就要从主存中读取数据,并考虑是否将主存数据写入cache。

四、替换法则:

	当需要向cache中添加主存数据,而cache内存却不够了,这时就要使用替换规则来解决这一问题
	1、随机替换法:将cache中的随机一块替换成主存中的数据
		特点:
			性能比使用情况的替换算法差,命中率低
			不能正确反映出块的局部性
	2、先进先出法(FIFO):将cache中最先进入的数据替换
		特点:
			实现容易,开销小,但不能正确反映程序的局部性
	3、近期最少使用算法(LRU):将最近使用最少的替换
		特点:
			需要记录cache中各个块的使用情况
			LRU替换算法的平均命中率比FIFO要高,并且当分组容量加大时,能提高LRU替换算法的命中率
			硬件实现复杂
1、局部性
2、经验之谈:起初学习的时候,将重心放到了主存和 cache 的关系映象表上面,意图先理清楚映象表,然后通过
这个表回溯到主存和 cache 中,后来撞了许多墙后才发现,映象表是两个对象的关系,这个关系和两个表是相互
关联的,而且是随着两个表的不同而实时发生变化的,在回溯的过程中也会发生许多的问题,所以后来就放弃了
这个思路,重新从主存和cache本身出发,然后理清楚两个表的相互映射关系,那么关系表就自然生成了,新学习
的朋友们可以从主存和cache本身出发,这样也许会掌握的更加快一些,当然如果你记忆力和理解能力超强,就当
我没说
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值