硬件层面缓存一致性

  1. CPU高速缓存
    • 位于cpu与主内存之间一种容量较小但速度很快的存储器,主要是查内存的速度远远大于查缓存的速度,需要增加缓存来存储刚用过的数据或循环使用的一部分数据

      • 内存与缓存执行时间对比图:
        在这里插入图片描述
    • 局部性原理 : cpu访问存储,无论是取数据或是取cpu指令,都趋于聚集在一片连续的区域

      • 时间局部性:如果一个信息项被使用,那么他最近很可能还被使用
      • 空间局部性:如果一个存储器的位置被使用,那么他附近的位置也有可能被使用
  2. 多核cpu缓存架构
    • cpu为了加快速度,减少cpu与内存的交互,一般在cpu上集成了多级缓存架构,常见的为三级缓存结构。
      在这里插入图片描述

      • 一级缓存:单核共享的缓存
      • 二级缓存:单cpu多核之间共享的缓存
      • 三级缓存:多cpu之间共享的缓存
  3. 缓存一致性
    • 缓存一致性的要求
      • 写传播:对任何缓存中的数据的更改都必须传播到对等缓存中的其他副本(该缓存行的副本 cache line 64字节,如果超过这个字节数缓存一致性会失效)。
      • 事务串行化:对单个内存位置的读/写必须被所有处理器以相同的顺序看到。理论上,一致性可以在加载/存储粒度上执行。然而,在实践中,它通常在缓存块的粒度上执行
      • 一致性机制保障
        • 总线窥探机制:当特定的共享数据被修改,必须传递到所有其他具有该数据副本的缓存中,这种更改传播可以防止系统违反缓存一致性
          • 缓存失效:当处理器写入一个共享缓存块时,其他缓存中的所有共享副本都会通过总线窥探失效。
            • 一致性协议:MSI、MESI、MOSI、MOESI和MESIF协议属于该类型。
              • MESI 【修改,独占,共享,失效】
                • cpu1从主存拿到数据,缓存行对该变量的状态设置为E【独占】,cpu2从主存拿到数据,缓存行对该变量的状态都是共享【S】,当该变量数据修改时cpu1对缓存行状态为M【修改】,其他cpu对该变量缓存行状态为I【失效】
          • 缓存更新:当处理器写入一个共享缓存块时,其他缓存的所有共享副本都会通过总线窥探更新。Dragon和firefly协议属于此类别。
        • 基于目录的机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值