为了追求PPA(高性能、低功耗和低成本),许多现代计算机系统和多核(处理器)芯片都支持共享硬件内存。在存在共享内存的存储器系统中,每个处理器都可以读写某个共享地址空间。

在支持共享内存之前最重要的是保证内存读写的正确性。这就涉及两个概念:内存一致性(Memory  Consistency)缓存一致性(Cache Coherence)

内存一致性(或者说内存模型、内存一致性模型),保证了不同处理器共享内存操作的一致性。内存一致性模型的复杂性主要来源于多个核心线程的同时load和store操作,并且这些操作还是out of order的。

内存一致性(Memory  Consistency)

内存一致性根据loads 和stores 操作来定义正确的共享内存行为。首先举一个例子说明为什么需要内存一致性模型:某大学在网上发布课程表。假设计算机体系课程最初计划在152教室进行,在上课的前一天授课老师决定把课程调到252教室,并告诉网站管理员更新课程表。几分钟后网站管理员向所有学生发送一条短信,提醒检查新更新的课程表。不难想象存在这样一种场景:线上的课程表未及时得到更新、某些学生去了错误的房间。本质上,这涉及到了不同进程对共享内存请求的顺序问题。

内存一致性模型就是定义对于共享内存的哪些行为是正确或者说是允许的。这相当于给不同的进程建立一套规矩来保证各自请求到的数据都是正确的。

缓存一致性(Cache Coherence)

与内存一致性不同,缓存一致性是作为支持内存一致性模型的一部分。缓存一致性试图使共享内存系统的缓存(cache)数据与内存保持一致。也就是说内存一致性是从多核心的视角来看共享内存的一致性、而缓存一致性是cache和相应内存之间的一致性。

在讨论缓存一致性就需要考虑一个场景,即每个处理器核心或者说进程能够访问到多个数据副本(例如cache),cache中的数据和内存中的数据不一致也会存在功能性问题。

同样是上面的一个例子,某学生在最初查看在线课程时把152教室记录在了笔记本上(cache数据)。随后授课教师(网站管理员)更新线上课程表时,该学生的笔记本数据副本已经是错误的数据了,这就是所谓的缓存一致性问题。

同理,我们在项目中经常遇到的问题就是你和同事基于不同的代码版本从而run出不同的执行结果,原因就是坑爹的你或者你同事在本地修改了代码而没有上库,这就是。

简而言之,使用缓存一致性是为了防止同一个处理器看待内存和cache中数据不一致性、而内存一致性是为了防止不同处理器看待内存中数据的不一致性。

介绍内存一致性(Memory Consistency)和缓存一致性(Cache Coherence)相关推荐

  1. 内存模型是怎么解决缓存一致性的

    转载自  内存模型是怎么解决缓存一致性的 在再有人问你Java内存模型是什么,就把这篇文章发给他这篇文章中,我们介绍过关于Java内存模型的来龙去脉. 我们在文章中提到过,由于CPU和主存的处理速度上 ...

  2. 白话Java基础—内存模型是怎么解决缓存一致性问题的?

    内存模型是怎么解决缓存一致性问题的? 本系列呢,主要将我理解的Java基础内容,以比较白话的方式,解释出来,希望能帮助大家快速的理解一些概念. 文章目录 内存模型是怎么解决缓存一致性问题的? 一.缓存 ...

  3. A Primer on Memory Consistency and Cache Coherence

    前言 现在许多的计算机系统和多核芯片都在硬件层面支持共享内存(shared memory). 在共享内存系统中,每一个处理器核都可以对一个单独的内存地址空间进行读写.对共享内存系统来说,Memory ...

  4. 关于缓存一致性协议、MESI、StoreBuffer、InvalidateQueue、内存屏障、Lock指令和JMM的那点事

    前言 事情是这样的,一位读者看了我的一篇文章,不认同我文章里面的观点,于是有了下面的交流. 可能是我发的那个狗头的表情,让这位读者认为我不尊重他.于是,这位读者一气之下把我删掉了,在删好友之前,还叫我 ...

  5. java基础—java内存模型(JMM)CPU架构、缓存一致性、重排序、JMM的实现、JMM保证可见性、有序性问题的详解

    java基础-JMM(CPU架构.JMM保证可见性.有序性) 文章目录 java基础-JMM(CPU架构.JMM保证可见性.有序性) CPU架构 说一说现在计算机存储器的结构层次 使用CPU缓存,会导 ...

  6. “了解高并发底层原理”,面试官:讲一下MESI(缓存一致性协议)吧

    目录 前言: 1.什么是(Who): 2.为何来(How): 2.1缓存不一致带来的后果 2.2解决方法: 3.是什么(What) 3.1数据在缓存中的四种状态: 3.2MESI的六种消息(请求消息和 ...

  7. 2021-04-04 CPU缓存一致性 MESI协议

    一 CPU以及缓存和高速缓存结构 1.1 CPU结构 我们知道CPU主要功能,一是控制,一是运算.主要包括寄存器.控制单元.运算单元和中断系统,主要架构如下: 控制单元:主要负责分析和解释指令 算数逻 ...

  8. 12 张图看懂 CPU 缓存一致性与 MESI 协议,真的一致吗?

    本文已收录到  GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star.技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群. 前言 大家好 ...

  9. CPU缓存一致性协议

                                                  一.CPU的一些基本组成 在提到CPU缓存这个问题前,先来回顾一下CPU的组成部分,及其作用.早期CPU由运 ...

最新文章

  1. java内部类gc_Java内部类持有外部类的引用详细分析与解决方案
  2. 从网页的控制台登录云服务器ECS中的Ubuntu系统
  3. python3循环遍历嵌套字典替换指定值
  4. __doPostBack简单的使用方法
  5. 机器学习算法优缺点改进总结
  6. mr图像翻转的原因_MRI图像常见问题及对策
  7. Boost 1.34.0 终于5.12发布了
  8. if else if语句格式_Python_if 语句
  9. markdown如何修改为 微软雅黑 字体
  10. screw-plus实现php代码安全
  11. ON DELETE CASCADE和ON UPDATE CASCADE
  12. uniapp手写地图搜索选取功能
  13. Python开发Day07(学生选课)
  14. JDK 8 函数式编程入门
  15. 西门子cnc sinumerik_2020邯郸cnc加工中心编程要多久就是工厂傅
  16. golang 数组随机排序
  17. 闲话复数(2)——欧拉公式
  18. 二叉树的左视图-java
  19. linux 禁用cpu的acpi,Linux中的ACPI和APIC
  20. pycharm(python)的注释

热门文章

  1. Illustrator 教程:了解 Illustrator 中的图层
  2. 使用pdf.js不依赖任何activeX控件
  3. 亚商投资顾问 早餐FM/1013扎实开展数字人民币研发试点工作
  4. 计算机网络技术店面取名,电脑店铺起名
  5. 苹果id密码忘了怎么办_手机密码忘了怎么办?一招帮你轻松搞定
  6. 聚美出空气净化器 陈欧再为自己代言
  7. 最终幻想7php攻略,PS5最终幻想7重制版图文攻略 全流程剧情详细攻略(3)
  8. 天地劫一直说服务器在维护,《天地劫幽城再临》3.11服务器连接失败解决方法 3月11日登录失败如何解决...
  9. 数据库——男或女性别约束
  10. ubuntu使用deepin-wine和wine运行windows系统(安装qq,weixin等解决方案)