是否有支持弱有序内存的Intel / AMD台式机处理器,或者这是具有多个处理器的服务器设置的功能?

===============>>#1 票数:1

许多现代处理器现在使用无序执行来通过隐藏内存延迟来提高性能。 这与多处理器/核心无关,可以通过单独处理单核处理器来完成。 因此,您不应该依赖内存排序。

===============>>#2 票数:1 已采纳

我不确定这是不是你想要的,但是IIRC有一些架构具有弱排序的内存访问,因为它们可以任意排序,你必须插入内存屏障以确保特定的排序。

现代处理器使用所谓的“加载存储队列”来隐藏内存重新排序,使其看起来几乎就像程序顺序一样。 读取通常是重新排序的(但需要小心),写入可以按顺序进行,但是按顺序提交(尽管对同一位置的多次写入是合并的),并且读取和写入只是仔细和推测性地相互重新排序。 后者称为“提升”,其中在写入之前推测性地执行读取(在指令序列中较早出现)并且如果事先证明先前的写入会影响它,则可以取消(如错误预测的分支)。

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

你提到了多核系统。 通常,采用精细的高速缓存一致性协议使得所有存储器访问看起来符合某些交织规则,使得访问按照在没有高速缓存时可能的顺序命中最后一级高速缓存和主存储器。

  ask by Beginner translate from so

未解决问题?本站智能推荐: