TSO/RMO/PSO和Power/ARM之间的差异

TSO/RMO/PSO和Power/ARM之间的差异,arm,cpu-architecture,sparc,Arm,Cpu Architecture,Sparc,这个问题是关于内存一致性的。如果不清楚,下面有一个例子可能会有所帮助 我看到的一个问题是,当在Power/ARM上执行时,需要一些代码,而在RMO下的Sparc上,这些代码无法执行。请问这可能吗?非常感谢 [我得到的提示是Power/ARM不进行原子存储。这是因为存储可以在不同的时间出现在不同的L1缓存中,而不是因为可以查看部分执行的写入。我认为这个提示可能不正确,因为RMO不保留加载顺序,而这反过来又可以做任何事情一个非原子写入可以做什么?] 为了澄清这个问题,假设我问的是TSO而不是RMO。

这个问题是关于内存一致性的。如果不清楚,下面有一个例子可能会有所帮助

我看到的一个问题是,当在Power/ARM上执行时,需要一些代码,而在RMO下的Sparc上,这些代码无法执行。请问这可能吗?非常感谢

[我得到的提示是Power/ARM不进行原子存储。这是因为存储可以在不同的时间出现在不同的L1缓存中,而不是因为可以查看部分执行的写入。我认为这个提示可能不正确,因为RMO不保留加载顺序,而这反过来又可以做任何事情一个非原子写入可以做什么?]


为了澄清这个问题,假设我问的是TSO而不是RMO。答案可能有四个线程:I)x=1,ii)y=2,iii)r1=[x];r2=[y];iv)r3=[y];r4=[x]。变量x和y被初始化为0。结果r1、r2、r3、r4=1、0、2、0在TSO下是不可能的,因为TSO只会延迟写入(并且不会重新排序任何内容)。对x或y的赋值是首先发生的,并且结果与这两种可能性中的任何一种都不一致。但是,结果可能发生在ARM上,因为不同的CPU可以在不同的时间看到不同的写入。

您想要什么类型的差异?您对什么语言感兴趣,因为“代码”最终是机器代码,没有一个是跨架构的。我想你不是在寻找mips/mhz或mips/watt之类的功能更强大的东西?我是在寻找不同架构在处理内存复杂性方面的差异。回答问题的一种方法是伪代码,因为它只需要读取和写入,并且所有处理器都可以执行这些操作(即使指令不同)。因此,我想要一个代码片段,它可以在Power/ARM上产生可能的结果,而在RMO下则无法。这显然会涉及多个线程。请参阅下一篇评论中的示例。我假设您想要的不仅仅是wikipedias图表上的内容?因为您没有指定,如果我错了,请纠正我,TSO=总存储顺序,RMO=松弛内存或der,PSO=部分存储订单。来自同一维基百科页面。例如,如果我询问TSO而不是RMO,答案将有四个线程:I)x=1,ii)y=2,iii)r1=[x];r2=[y];iv)r3=[y];r4=[x]。x和y初始化为0。结果r1、r2、r3、r4=1、0、2、0将不可能,因为TSO只会延迟写入(并且不会对任何内容进行重新排序),因此对x或y的赋值是首先发生的,并且结果与这两种可能性中的任何一种都不一致。但是,这种情况可能发生在ARM上,因为不同的CPU可以在不同的时间看到不同的写入。