首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多层原子性与缓存一致性的关系

多层原子性与缓存一致性的关系
EN

Stack Overflow用户
提问于 2022-08-20 11:43:12
回答 1查看 125关注 0票数 1

你能解释一下多层原子性和缓存一致性之间的区别吗?它们之间有什么关系?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-20 12:12:23

一致性:

  • 所有的货物和商店都有到一个地点的总订单。
  • “读”按此顺序显示最近的写入。
  • 此顺序与(保留的)程序顺序一致。

因此,一致性只是针对单个位置的加载/存储,而不是针对不同的地址;这是一致性的任务。

如果您需要多个地址的总顺序,则需要多拷贝原子性。因此CPU对不同CPU向不同地址发出的存储顺序不能有异议。

这方面的典型例子是IRIW试金石测试。

代码语言:javascript
复制
int a=0
int b=0

thread1:
   a=1

thread2
   b=1

thread3:
   r1=a
   [LoadLoad]
   r2=b

thread4:
   r3=b
   [LoadLoad]
   r4=a

可能是r1=1,r2=0,r3=1,r4=0。那么不同的CPU能看到不同订单的商店吗?由于这些是加载和存储到不同的地址,所以这里不存在一致性问题。

在多拷贝原子系统中,上述情况是不可能发生的.

大多数现代CPU都是多拷贝原子字节(x86,ARMv8).对缓存行的修改是可线性化的,因为所有其他CPU都可以看到缓存线从开始写入缓存(等待RFO确认)到完成对缓存的写入之间的时刻(线性化点)。因为线性化是可组合的,所以整个缓存是可线性的。由于它是可线性的,所以总是存在一定的总阶数,这正是多拷贝原子性所需要的。

这并不意味着硬件内存模型总是有一个总的顺序,即使它构建在一个连贯的缓存之上。例如,由于存储到负载转发或与核心子集共享存储缓冲区,您可能会丢失总订单。

关于这个主题的一个伟大的,你可以免费下载。

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

https://stackoverflow.com/questions/73426425

复制
相关文章

相似问题

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