映射内存和SSE

Luc*_*uca 5 assembly sse intel memory-mapping

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

从主题"使用SSE3编程,SSSE3,SSE4和AESNI"

不得使用流加载来引用映射到具有副作用的I/O设备的存储器地址,或者对这些设备的读取具有破坏性.这是因为MOVNTDQA本质上是推测性的.

有人可以澄清这个问题吗?

我问,因为我正在考虑将一些SSE程序集应用于OpenGL 映射缓冲区对象,但我担心这个破坏性的单词.这个主题是否适用于映射内存?其实我不知道glMapBuffer调用的背后是什么.

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

use*_*368 5

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

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