映射内存和SSE

时间:2011-11-04 23:58:39

标签: assembly intel sse memory-mapping

我在英特尔开发人员手册中找到了这一段:

  

从主题“用SSE3,SSSE3,SSE4和AESNI编程”

     

不得使用流加载来引用该内存地址   映射到具有副作用的I / O设备或读取这些副作用时   设备是破坏性的。这是因为MOVNTDQA是推测性的   性质。

任何人都可以澄清这个问题吗?

我问,因为我正在考虑将一些SSE程序集应用于OpenGL mapped buffer objects,但我担心破坏性这个词。这个主题是否适用于映射内存?实际上我不知道glMapBuffer调用的背后是什么。

我不认为我的显卡会被破坏(:),但肯定这个词听起来不太好。

1 个答案:

答案 0 :(得分:5)

这里的破坏性是指只能执行一次的读取,例如当设备提供内存映射方式以从其队列中读取下一个项目时。在这种情况下,第二次从那个位置读取会得到第二个结果。这是不好的,因为MOVNTDQA是推测性的,因此即使由于错误预测的分支最终跳过指令,也可以执行获取。第一次获取的数据将被无可挽回地破坏,但对硬件没有实际损害。

由于您只是尝试访问其他设备上的普通RAM,而不是MMIO寄存器,因此您无需担心。