南大Mooc计算机体系基础--高速缓存cache

高速缓存cache

cpu<–>cache<–>内存(主存)<–>外存(辅存)

  1. 计算机存储层次结构:金字塔型
  2. 空间、时间局部性:引入cache
    1. 例子:访问二维数组A[0][0]-A[0][1]。。。空间局部性好
    2. 了解cache才能写出高效程序
  3. 操作过程:
    1. cpu通过地址需要一块主存数据
    2. 判断是否在cache中,hit直接从cache中取,miss加入到cache
      疑问:如何从elf的虚存地址,转换成cpu需要的实际内存地址
  4. cache映射方式:
    1. 直接映射:主存块 映射到mod之后的 cache块,cache需要一个标记来
      确定是哪一个主存块(块群号)。
      块群号+行号+块内号
      特点:容易实现,命中时间很短(按地址找)。无需考虑淘汰问题。命中率低。
    2. 全相联映射:要标记11位块号。
      特点:命中时间长(按内容找),比较器长。成本高,命中率高。
    3. 组相联映射:组间取模,组内任意。
  5. cache替换算法(逻辑演示):
    1. FIFO:先进先出,先进的在上面,淘汰最上面的
    2. LRU:最近最少用,最近使用的提到最上面,淘汰最下面的。实际用计数值方式标记最近用。
  6. cache一致性问题:
    1. 写命中(要写块的在cache中)
      1. write through:直写,立即写入cache和二级cache,二级cache受存储器控制写回主存。
      2. write back:回写,cache中标记一个‘脏’位来判断是否有更改,当cache块被淘汰时一次性写回。同时要锁定对应主存块,不能被io访问。
    2. 写未命中:
      1. 写分配:加到cache后在写
      2. 非写分配:直接在主存中写
        直写:写分配/非写分配
        回写:非写分配
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值