文章目录

  • Cache超清晰逻辑详解
    • 造成Cache与主存内容不一致的原因主要有两个:
    • cache更新协议中的算法
    • 解决Cache不命中的情况:
    • 在多机系统中解决不一致性:
      • 1.共享cache法
      • 2. 共享数据不放私有cache中
      • 3. 监视法Snooping
      • 4.目录法

Cache超清晰逻辑详解

Cache是在主存和CPU之间设置的一个高速的、容量相对较小的存储器(SRAM)。
题外话扯一下SRAM和DRAM的特点:
SRAM:断电后会消失,
DRAM:刷新,电容,周期性地更新,访问速度较慢,耗电量较大


正常情况下,Cache中的内容应该是主存内容的副本,但有时会出现Cache与主存内容不一致的情况,这就是Cache的一致性问题。

造成Cache与主存内容不一致的原因主要有两个:

  • CPU写Cache,cache中的内容改了,但是没有立即写主存,主存没有变
  • I/O处理机或I/O设备写主存,主存中的内容修改了,cache中的内容没有修改

分别对应下面两幅图


还有别的原因:
在多机系统中,通常各个CPU都拥有自己的私有Cache

cache更新协议中的算法

  • 写回法WB:指处理机把数据写入Cache的同时,也将数据写入主存。
  • 写直达WT:指在CPU执行写操作时,只写入Cache,不写入主存。

写回法:
当Cache没有命中且已满时,将置换出去的、已被修改的块写入主存。在采用这种更新算法的Cache块表中,有一个“脏位”,当一个块中有数据被修改时,脏位被置为1。

When a processor writes a new value into its cache, the new value is also written into the memory module that holds the cache block being changed. Some copies of this block may exist in other caches, these copies must be updated to reflect the change caused by the write operation.

写直达:

When a processor writes a new value into its cache, this value is written into the memory and all other copies in other caches are invalidated. This also done by broadcasting the invalidation request through the system. All caches receives this invalidation request and the cache which contains the updated data flushes its cache line.

WB和WT的优缺点:

  • 可靠性:写直达法优于写回法。因为写直达法始终能够保证Cache是主存的副本,如果Cache中发生错误,还可以从主存中得到纠正。对于写回法,在数据被修改后、写回到主存之前,Cache中存放的并不是主存的副本。

  • 控制的复杂性:写直达法比写回法简单。对于写回法必须为每个块设置一个脏位,并且要对脏位进行管理和判断,为了保证Cache的正确性,通常要采用纠错码。
    对于写直达法,不需要设置脏位,只需要采用简单的奇偶校验就可保证Cache中是主存的副本。

  • 与主存的通信量:写回法少于写直达法。对于写直达法,每次执行写操作都必须写、且只写一个字到主存。对于写回法,大部分的写操作只需要写Cache,不需要写主存。

  • 硬件实现的代价:写回法优于写直达法。对于写直达法,每次写操作都要写主存,为了节省写主存花费的时间,通常会采用一个高速小容量的缓冲存储器,把要写主存的数据和地址先放到这个缓冲存储器中,每次读主存时,也要首先判断所读的数据是否在这个缓冲存储器内。写回法不需要设置缓冲存储器。

解决Cache不命中的情况:

  • 不按写分配法:在写Cache不命中时,只把所要写的字写入主存,不需要将这个字所在的块读入到Cache中,在写直达法中采用。

  • 按写分配法:在写Cache不命中时,除了把所要写的字写入主存外,还要把包括所写字在内的一个块从主存读入Cache,在写回法中采用。

那为什么写直达采用不按写分配的方式呢?


写回法采用按写分配的方式呢?

在多机系统中解决不一致性:

1.共享cache法

2. 共享数据不放私有cache中

为了解决多核以及多处理器的多个缓存之间的数据不一致提出来的,缓存一致性协议分为两种,第一种是基于窥探的协议(snoop-based),第二种是基于目录的协议(directory-based)

3. 监视法Snooping




4.目录法

Cache超清晰逻辑详解----不一致性(待更)相关推荐

  1. Cache超清晰逻辑详解(cache的三种映射)

    在说之前要向大家安利一个网站,http://www.ecs.umass.edu/ece/koren/architecture/Cache/tutorial.html,这是马萨诸塞大学安姆斯特分校的体系 ...

  2. 增程式发动机仿真控制逻辑详解(一)

    本文转载在我的微信公众号:古德曼汽车工业. 希望关注本专栏的朋友,也能一并关注微信公众号. 原文地址:增程式发动机仿真控制逻辑详解(一) 1.前言 本订阅号的一个特色就是,你们都猜不到[思想]下一次更 ...

  3. .net System.Web.Caching.Cache缓存类使用详解(转载)

    转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...

  4. poi导出excel清晰 步骤详解

    [align=center][size=large][color=red][b]poi导出excel清晰 步骤详解[/b][/color][/size][/align] [color=darkblue ...

  5. 力扣13 罗马数字转整数逻辑详解

    力扣 13 .罗马数字转整数逻辑详解 题目详情 逻辑分析 代码实现 题目详情 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...

  6. bom event周期_MRP运行五大步骤逻辑详解(含动态安全库存、安全时间、批量计算方法、BOM表扩展方法的详细说明)...

    MRP运行五大步骤逻辑详解(含动态安全库存.安全时间.批量计算方法.BOM表扩展方法的详细说明) 作者:袁云飞(AlbertYuan)- 微信号yuanalbert 以下内容均为原创,希望对初学者有一 ...

  7. mysql防止超发_PHP+redis实现的限制抢购防止商品超发功能详解

    本文实例讲述了PHP+redis实现的限制抢购防止商品超发功能.分享给大家供大家参考,具体如下: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用.redis中key的原子自 ...

  8. SLIC超像素分割详解

    SLIC超像素分割详解(一) 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理.颜色.亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块.它利用像素之间 ...

  9. 软件测试面试受挫?——我整理了一份超全面试题详解

    假如你明天就要去面试了,每家公司的业务不一样,对测试的要求也不一样,下面根据我工作这几年的面试经验,加上之前收集的资料,整理出来了一套超全的面试题详解(附赠答案),字节跳动.阿里.百度.腾讯.快手.美 ...

最新文章

  1. t-top 命令详解
  2. ADF Jar包循环引用会出问题
  3. 利用Traefik+Docker构建可弹性扩展的微服务或服务集群
  4. ubuntu 14.04
  5. 可用于在 Microsoft.NET Framework 4.0 中的 ASP.NET 浏览器定义文件的修补程序
  6. 【玩转cocos2d-x之八】精灵类CCSprite
  7. Mongodb固定集合
  8. c语言一元二次方程 ii(分支嵌套),C程序设计——求一元二次方程算法
  9. ubuntu 13.04 mysql_Ubuntu13.04 下MySQL5.6安装过程
  10. c# 中关键字_C#中的“使用”关键字
  11. 数据分析 绩效_如何在绩效改善中使用数据分析
  12. [react] constructor和getInitialState有不同?
  13. LeetCode Longest Common Prefix
  14. 为什么使用接口编程{转载}
  15. 只有360浏览器能打开别的都打不开
  16. 记一个bug:ImportError: cannot import name ‘comb‘
  17. Order by 多条件排序
  18. 我讲了一个故事,珍爱红娘来电话靠谱吗?这个男生太渣了!
  19. 【计算机网络】第九章:无线网络
  20. 【unity】Google 登录和Google支付接入unity

热门文章

  1. 脚本运行显示服务器超时,java执行shell脚本超时
  2. java网页快照_java网页快照-网页转存为图片
  3. QPainter 的状态保存与恢复
  4. mysql 存储过程cursor_MySQL 的存储过程写法和Cursor的使用
  5. ios7中让程序使用统一的status bar风格
  6. php 使用webservice_PHP中如何调用webservice的实例参考
  7. 判断session失效,并跳转到登录页面
  8. 《当90后遇上创业》导读
  9. ios模拟器的路径-打开沙盒路径
  10. Windows性能分析器概述(三)