存储模型的Coherence和Consistency的区别 您所在的位置:网站首页 coherence英文解释 存储模型的Coherence和Consistency的区别

存储模型的Coherence和Consistency的区别

2023-12-01 04:50| 来源: 网络整理| 查看: 265

原文地址:http://blog.csdn.net/ariesjzj/article/details/6769754

Coherence和Consistency这两个词意义相近,很多时候我们将这两个词混用。中文中,这两个词往往都被译成“一致性”。但在存储模型的上下文中,这两个词有着完全不同的含义。

 

存储的Coherence模型主要考虑对于同一内存位置的写操作对于所有的处理器的可见性。理想情况下,我们希望写内存的结果可以立即被所有处理器看到,也就是说写操作后其它处理器的读操作所读到的值都是新值。但事实上,由于层次存储模型的存在,这样的假设由于太强不可能实现。因此,现实中往往放宽即时性而强调有序性,这被称为Coherence。会影响到Coherence的因素主要包括存储的分层结构。在存储的分层结构中,Cache被用来作为内存数据的快速缓存。在直写(write-through)模式下,当处理器写入内存时,同时也会更新本地Cache,这将成为破坏存储Coherence的隐患。假设下面的场景:处理器1发出写内存申请,这时仅更新本地Cache,物理内存并末即时更新。之后处理器2发出写内存申请,同时更新本地Cache,同样物理内存也并末立即改变。之后处理器1将新值正式写入内存,然后处理器2也将新值正式写入内存。假设整个过程两个处理器更新的为同一内存区域。在这个过程中,处理器2先看到了它自己要更新的值(因为本地Cache即时更新),后看到处理器1更新的值(处理器1写操作正式写入内存时),最后又看到处理器2更新的值(处理器2写操作正式写入内存时)。这样就违反了存储的Coherence模型。

 

存储的Consistency模型的范围则广得多。和Coherence相比,其主要差别有:1.Consistency不仅针对同一内存区域的访问;2.Consistency中的内存访问包括读和写两种。当然,最理想的情况就是所有指令的执行顺序和程序里写的一模一样,这样当然不会违反内存的Consistency,但事实上这也是不可能的。因为考虑到并行优化,几乎所有平台都会改变指令顺序来提高程序运行速度,这不可避免地会违反Consistency原则。前面提到存储的Consistency模型中的内存访问分两种,即读和写。经组合,易得违反Consistency原则的情况也可能有四种:R-R hazard,R-Whazard,W-R hazard和W-Whazard。过强的Consistency约束会使优化程度极大降低,因此很多平台会选择放弃其中的一种或几种。目前,为了最大程度地优化程序,一些平台放弃了所有的内存Consistency约束,而将保证多线程程序正确性的工作转移给程序员。这里引入了一个假设,就是程序员应该知道,并且也只有程序员知道为了保证程序的正确性,哪些内存访问操作不能被乱序。所以我们才会在这么多项目(如linux kernel)中看到这么多memory barrier语句。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有