首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些体系结构有“弱”内存模型?

哪些体系结构有“弱”内存模型?
EN

Software Engineering用户
提问于 2017-08-19 10:39:27
回答 2查看 364关注 0票数 1

我是一个长期工作的Java程序员,熟悉Java内存模型.我已经开始学习C#了,基于到目前为止我学到的内容,C#内存模型似乎非常类似于JMM。这验证了我先前的理解,即JMM反映了JVM支持的体系结构的特性。语言需求反映了所有受支持的体系结构中最薄弱的保证。

但我注意到的一个不同之处在于,来自Java和C#背景的开发人员谈论架构的方式。当Java程序员谈到在“一些体系结构”上出现错误的不正确同步代码时,C#程序员倾向于更具体。例如,这篇文章将Itanium命名为具有“弱”内存模型:

主流的x86和x64处理器实现了一个强内存模型,其中内存访问实际上是不稳定的。..。Itanium处理器实现了一个较弱的内存模型。

我只研究过x86和x64,我从来不知道是什么体系结构强加了JMM的神秘需求,而当我试图演示违反它们的效果时,这些需求似乎并不重要。现在我知道有一个了。

其他的体系结构有哪些“弱”内存模型?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2017-08-19 11:37:23

几乎所有的RISCs都有弱的记忆排序模型。(“内存排序”是一个更好的术语,因为“内存模型”太宽泛了。)这意味着内存访问之间的顺序应明确要求使用“屏障”AKA“栅栏”指令。对于x86 (任何比特)来说,大多数障碍(但不是所有障碍)都是隐含的。

以防万一,内存排序主题是一个好的开始。另一个良好描述的例子是C++存储器顺序常数

票数 5
EN

Software Engineering用户

发布于 2021-07-11 12:26:57

强内存模型是指每个加载/存储都是一个同步操作的模型;因此,它将对负载进行排序并在其周围存储。

弱内存模型是一个不强的模型;因此有简单的操作--加载/存储和同步加载/存储。

对于普通/加载和存储,唯一需要保留的顺序是数据依赖顺序;通常使用Tomasulo算法在硬件中执行某些操作。

X86是一个强大的内存模型,因为它每个正常负载都是一个获取负载,而每个普通存储都是一个发布存储。由于存储缓冲区的原因,它确实允许旧存储重新排序,并以较新的负载重新排序到不同的地址,因此不提供顺序一致性,而是实现了总存储顺序(TSO)。

具有弱记忆模型的ISA的一些例子是ARM和Itanium。

也有像Sparc v9这样的混合产品提供TSP、PSO (部分存储订单)和RMO (轻松内存订单)。

JMM也是一个弱内存模型,因为它区分了常规加载/存储和同步操作(例如,易失性负载/存储)。

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

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

复制
相关文章

相似问题

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