Memory 桌面处理器是否支持弱有序内存?

Memory 桌面处理器是否支持弱有序内存?,memory,processor,Memory,Processor,是否有任何Intel/AMD桌面处理器支持弱有序内存,或者这是多处理器服务器设置的一项功能?许多现代处理器现在通过隐藏内存延迟来使用无序执行来提高性能。这与多个处理器/核心无关,可以通过单个核心处理器单独工作来实现。出于这个原因,您不应该依赖内存顺序。我不确定这是否是您所追求的,但是IIRC有一些体系结构具有弱顺序的内存访问,因为它们可以任意排序,您必须插入内存屏障以确保特定的顺序 现代处理器使用所谓的“加载存储队列”,隐藏内存重新排序,使其看起来几乎像是按程序顺序进行的。读取通常是重新排序的(

是否有任何Intel/AMD桌面处理器支持弱有序内存,或者这是多处理器服务器设置的一项功能?

许多现代处理器现在通过隐藏内存延迟来使用无序执行来提高性能。这与多个处理器/核心无关,可以通过单个核心处理器单独工作来实现。出于这个原因,您不应该依赖内存顺序。

我不确定这是否是您所追求的,但是IIRC有一些体系结构具有弱顺序的内存访问,因为它们可以任意排序,您必须插入内存屏障以确保特定的顺序

现代处理器使用所谓的“加载存储队列”,隐藏内存重新排序,使其看起来几乎像是按程序顺序进行的。读取通常是重新排序的(但要小心),写入可以不按顺序进行,但要按顺序提交(尽管对同一位置的多次写入是合并的),并且读取和写入只能小心地、推测地相互重新排序。后者被称为“提升”,在这种情况下,读操作是在写操作(出现在指令序列的前面)之前进行的,如果之前的写操作会影响读操作,则可能会取消读操作(如预测失误的分支)

此外,如果内存被标记为未缓存,那么CPU通常会推断这意味着它是I/O空间,并且不执行访问重新排序。x86和SPARC是这样的。但是,PowerPC仍然会将读取重新排序到I/O内存空间,我们必须使用EIO(确保按顺序执行I/O)指令来强制执行特定的排序。IIRC,我们还必须在PA-RISC和Alpha上使用记忆屏障。此外,x86上存在内存障碍,但我不熟悉它们的用法(可能是为了确保对缓存内存空间的访问顺序)


你提到多核系统。一般来说,采用精心设计的缓存一致性协议,使所有内存访问看起来都符合某些交错规则,这样,访问将以在没有缓存的情况下可能的顺序命中最后一级缓存和主内存

钛的记忆模型很弱。编程的婊子+实际上没有更快==冰山。