存储模型的Coherence和Consistency的区别

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

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

 

存储的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 hazardR-WhazardW-R hazardW-Whazard。过强的Consistency约束会使优化程度极大降低,因此很多平台会选择放弃其中的一种或几种。目前,为了最大程度地优化程序,一些平台放弃了所有的内存Consistency约束,而将保证多线程程序正确性的工作转移给程序员。这里引入了一个假设,就是程序员应该知道,并且也只有程序员知道为了保证程序的正确性,哪些内存访问操作不能被乱序。所以我们才会在这么多项目(如linux kernel)中看到这么多memory barrier语句。

《关于内存一致性和缓存一致性的简明知识指南》是一本关于计算机内存一致性和缓存一致性的PDF文件。该文件提供了对这两个概念的基本介绍和详细解释。 计算机系统通常包含多个处理器和多级缓存,这些处理器同时访问共享的内存。内存一致性和缓存一致性是确保多个处理器对共享内存的访问保持正确顺序性的关键问题。 内存一致性是指在多处理器系统中,对共享内存的读写操作必须按照一定的顺序进行,以确保不会出现不一致的结果。这涉及到处理器之间的交互和数据的同步。 缓存一致性是指处理器的缓存与主存之间的数据一致性。当处理器对内存的写操作时,这些写操作可能首先被缓存,然后再写入主存。其他处理器可能会从缓存中读取数据,因此需要保证缓存中的数据与主存中的数据保持一致。 《关于内存一致性和缓存一致性的简明知识指南》详细解释了各种内存一致性模型和缓存一致性协议,并介绍了如何在设计和实现多处理器系统时考虑这些问题。它还提供了一些示例,帮助读者更好地理解内存一致性和缓存一致性的概念。 该知识指南还讨论了一些解决内存一致性和缓存一致性问题的技术,如屏障指令、缓存一致性协议和一致性模型的优缺点等。读者可以通过阅读这本PDF文件深入了解内存一致性和缓存一致性相关的概念和技术,从而更好地理解和优化多处理器系统的性能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值