2020-11-15

考研顽固问题记录——组成原理
cache地址映射与位数问题
考研范围内cache地址映射之中最重要的问题就是对于地址位数跟映射关系的掌握,以下则分为两部分叙述
一 cache地址与主存地址的位数关系
首先要明确的是,对于cache来说实际的存储的数据有两部分,第一部分称谓标记部分,第二部分是数据部分。
其中长度最好确认的就是数据部分,题目之中一定会给出每一块的大小,根据块大小,轻松得出数据部分长度(单位是b,要将B展开成八位)。
第二部分就是标记部分,标记部分就要麻烦一些,首先要明确的是,标记部分是cache之中用来唯一确定与主存对应关系的字段,也就是门牌号(比喻不太恰当,毕竟还存在脏位,有效位等)。第一步先看题目中给出的映射方式,王道辅导书之中给出的映射方式有三种,那么问题来了,究竟什么是映射?而映射了又有什么用?以什么规则映射?
三大映射关系
第一种就是全相联映射,很简单,很粗暴,就是每次访问一个主存块,如果需要调入cache就在cache中从上到下挨个扫描,找到一个空的cache就给他放进去(有效位为0 代表这个cache是没人用的)
优点很明显就是利用率高,理论上可以利用到所有空间,缺点是,速度慢(需要挨个扫描)成本高(使用相联存储器,这个东西可以利用硬件实现比较,访问的时候相当于利用了硬件实现了遍历的过程)
第二种是直接映射。既然全相联映射这么蠢 为什么我们不找一个比较容易访问又比较容易存储的方式呢 ,这种方式就是直接映射,为什么叫直接映射呢,因为硬件可以直接访问所要访问的块,这样又快又好。具体方式如下,类似于数据结构之中的哈希表,通过对于内容的计算,直接找到所要访问的块。比如块号是50cache中有10个块,那么应该用50除以10
取余数,这样就得到了cache块号,那为啥不是取商而是取余数?这就代表着,把主存按照十个一组分成好多组,这题就是五组 然后第五组之中占据第一个位置,编号就是零(换一种思路,如果以后cache便宜了,能跟主存一样大,那么就可以分成n多个十块的cache,那么这个主存块就在第五个cache里面第一个块)
这种方式依然是优点,很快,很好存很好找,缺点是,要是主存地址算出来的cache地址存了怎么办?那就要用到置换算法,把占用的块置换出去,放入新的块。那么问题就是,如果我每次都是第n组的第一个或者第二个怎么办,那么不每次访问都要置换,这样极其愚蠢。于是乎出现了第三种
(手机打字累死了(`Δ´)ゞ)
第三种,组相联映射,对比记忆可以认为是半相联(相对于全相联)。
这个就是集两种方法的优点
直接映射优点:找的快
全相联优点:利用率高
那么组相连就是将cache细分成n多个组,每组两块或者四块(选其中一种,例如两块就是二路组相连映射)。然后组间用直接映射,组内用全相联。
(下一篇讲述,映射之后地址结构,还有怎么找标记)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值