映射内存和SSE

5
我在英特尔开发者手册中找到了这段话:
从章节“使用SSE3、SSSE3、SSE4和AESNI编程” 流式加载不能用于引用映射到具有副作用的I/O设备的内存地址,或者当对这些设备进行读取时是破坏性的。这是因为MOVNTDQA是具有推测性质的。
有人可以解释一下这个问题吗?
我问这个问题是因为我正在考虑将一些SSE汇编应用于OpenGL mapped buffer objects,但我担心那个“破坏性”词。这个主题适用于映射内存吗?实际上,我不知道glMapBuffer调用背后的内容。
我不认为我的显卡会被摧毁(:),但这个词肯定听起来不好。
1个回答

5

在这里,“破坏性”指的是只能执行一次读取操作的情况,例如当设备提供了一种从其队列中读取下一个项目的内存映射方式时。在这种情况下,第二次从该位置读取会得到第二个结果。这很糟糕,因为MOVNTDQA是具有推测性质的,因此即使由于预测错误的分支而最终跳过指令,也可能会执行获取操作。第一次获取的数据将被永久性地破坏,但实际上不会对硬件造成任何实际伤害。

由于您只想访问不同设备上的普通RAM,而不是MMIO寄存器,所以无需担心。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接