首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存一致性和缓存一致性有什么区别?

内存一致性和缓存一致性有什么区别?
EN

Software Engineering用户
提问于 2021-02-06 12:52:36
回答 2查看 419关注 0票数 0

https://en.wikipedia.org/wiki/Memory_一致性说:

内存一致性是一个影响计算机系统设计的问题,其中两个或多个处理器或核心共享一个共同的内存区域。单处理器系统中的13.(按照今天的说法,只有一个核),只有一个处理元素完成所有的工作,因此只有一个处理元素可以从给定的内存位置读写。因此,当一个值被更改时,相应内存位置的所有后续读取操作都将看到更新的值,即使它是缓存的。相反,在多处理器(或多核)系统中,有两个或多个处理元素同时工作,因此它们有可能同时访问相同的内存位置。如果他们没有改变这个位置上的数据,他们就可以无限期地共享数据,并按自己的意愿缓存数据。但一旦其中一个更新了位置,其他人可能会处理一个过时的副本,例如,驻留在他们的本地缓存中。因此,需要一些方案将共享值的更改通知所有处理元素;这种方案称为存储器一致性协议,如果采用这种协议,则系统被称为具有一致性存储器。

https://en.wikipedia.org/wiki/Cache_一致性

在计算机体系结构中,缓存一致性是共享资源数据的一致性,最终存储在多个本地缓存中。当系统中的客户端维护公共内存资源的缓存时,可能会出现不一致数据的问题,特别是在多处理系统中CPU的情况。在右边的插图中,考虑两个客户端都有来自上一次读取的特定内存块的缓存副本。假设底部的客户端更新/更改了该内存块,则顶部的客户端可以保留无效的内存缓存,而不需要任何更改通知。缓存一致性旨在通过在多个缓存中维护数据值的一致视图来管理此类冲突。

内存一致性和缓存一致性有什么区别?他们看起来一模一样。

谢谢。

EN

回答 2

Software Engineering用户

发布于 2021-02-06 17:13:21

当您使用缓存时,数据通常不会立即写入内存。考虑两个核心A和B具有缓存X和Y以及内存M。

如果A写入数据,它将更新高速缓存X,但不会立即更新内存M。如果B试图读取此数据,旧版本可能在缓存Y中(B获取错误的数据),或者Y可能将数据从M传输到Y(B再次获取错误的数据)。

解决这个问题的最有效的方法是将数据从X移动到Y,避免从内存写入和读取数据。这将是“缓存一致性”。

由于这一切都是非常低效率的,处理器不会自动地做到这一点。大多数编程语言都说,如果您读取由另一个线程修改的数据,这是您自己的问题,除非您使用特殊的预防措施。

票数 2
EN

Software Engineering用户

发布于 2021-07-11 14:38:38

缓存一致性定义了在单个地址上加载/存储的一些顺序。

内存一致性定义了多个地址上的一些排序加载/存储。

当查看wiki时,内存一致性似乎与缓存一致性相同。

有关更多信息,请参见(您可以免费下载这本书) https://www.morganclaypool.com/doi/10.2200/S00962ED2V01Y201910CAC049

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/421940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档