计算机原理中的三种映射方式

直接映像(一Cache对多主存)

在这里插入图片描述
直接映射就是一个Cache页面对应多个主存页面。
直接映射函数为: i = j % 2c,其中i是Cache页号;j是主存页号。

  • 例如:主存的页面0 % 2c = 0 ,只能映射到Cache的页面0
  • 例如:主存的页面(2c+ 1)% 2c =1,只能映射到Cache的页面1

在Cache中给每个页面设一个t位长的标记(t = m -c),主存某一页调入了Cache后,就将主存页号的高t位放入Cache相应的那个页的标记中。


在这里插入图片描述

直接映射方式主存-Cache的读出过程:
1. 寻找Cache页号 :CPU访问时,首先根据访存地址中的c位(页号),直接查出该主存对应的Cache的页号。
2. 检查:找到Cache的页号后,检查它的标记和主存的高t位是否一致。
3.- 一致:一致则命中,再根据页内地址(b位),从Cache中读数据。
   - 不一致:不一致则未命中(失靶),CPU直接从主存中读出。

直接映射的优点时实现简单,缺点是不够灵活。因为主存中有2t个页面只能对应唯一的Cache页面,若在这2t个页面中有两个或以上的页面要调入Cache,必然会发生冲突。举个例子1,2c+1,2c+1+1…2c+n都对应着Cache中的页面一,若同时调用其中的任意两个或多个则会发生冲突。

全相联映像(一主存对多Cache)

全相联映射就是一个主存页面对应多个Cache页面,即主存中任一页可装入Cache内任一页的位置
在这里插入图片描述


为了加快“主存-Cache”地址变换速度,一般采用存放于相联存储器中的目录表来实现地址映射。在这里插入图片描述

1.寻找Cache页号 :给出贮存地址后,让主存页号与目录表中各项的页号做相联比较。
2. - 有相同的则讲对应的Cache页号取出,与页内地址拼接就形成了Cache地址。
     - 没有相同的则表示主存页没有装入Cache,失靶,去主存读。

全相联映射的优点是块冲突概率最低,只有当Cache全部装满后,才有可能出现块冲突。但由于目前的计算机系统中Cache容量一般都较大,而要构成大容量的相联目录表很困难,查表速度也难提高,目前的计算机系统中几乎没有单纯的采用全相联映射法的。

组相联映像(组Cache与区主存的映射)

将Cache空间划分成2q组,每组2s页(称为2s路相联),将主存空间分成2m区,每个区2q页,主存中的某区允许映射到固定组内的任意项。某区的第0页可以调入Cache0组的中的任意一页,第1页可以调入Cache1组的中的任意一页。

现在设q=7,则Cache中有0 - 127,共128组,s = 1,每组2页(称为2路相联),每页32个字节,Cache容量为8KB。主存地址32位,m = 20,最大可分为220个区,每区128(2q)页,每页32个字节。在这里插入图片描述

1. 选组:根据CPU给出地址的中间7位区Cache中选择某一组。
2. 寻找Cache页号:分别读出组中页的标记,逐一比较去寻找页号。
3. - 若有一致者,则命中,再根据字地址从Cache中读出内容。
    -若无一致者,则失靶,则根据CPU地址去主存中读。

组相联模式在各组间用直接映射方式,组内各页则是全相联映射模式。这样它的Cache页冲突概率比直接 映射方式低的多,而组内各页全相联映射模式使得地址相连表较小,易于实现,而且查找速度也快。

s的选取决定了页冲突的概率和地址映射的复杂性。

  • 2s= Cache页数 时,组相联映射模式就成为了全相联映射模式。
  • 2s= 1 时,组相联映射模式就成为了直接映射模式。

所以选取适合的s值是非常重要的。

  • 12
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值