【发布时间】:2014-01-29 15:01:28
【问题描述】:
在英特尔 IA-32 架构手册第 3A 卷第 2 章中,CR4.OSFXSR 解释如下:
设置后,使处理器能够执行 SSE/SSE2/SSE3/SSSE3/SSE4 指令, 除了 PAUSE,PREFETCHh, SFENCE, LFENCE, MFENCE,, MOVNTI, CLFLUSH、CRC32 和 POPCNT。
问题是,如果我想同时使用 SSE2 和 PREFETCHh 指令,我该怎么办?
【问题讨论】:
在英特尔 IA-32 架构手册第 3A 卷第 2 章中,CR4.OSFXSR 解释如下:
设置后,使处理器能够执行 SSE/SSE2/SSE3/SSSE3/SSE4 指令, 除了 PAUSE,PREFETCHh, SFENCE, LFENCE, MFENCE,, MOVNTI, CLFLUSH、CRC32 和 POPCNT。
问题是,如果我想同时使用 SSE2 和 PREFETCHh 指令,我该怎么办?
【问题讨论】:
是的,措辞可以更清楚。他们的意思是CR4.OSFXSR 位仅控制与 SSE 寄存器一起使用的指令的执行。提到的其他指令不访问 SSE 寄存器,因此它们始终可用(如果实施)。
下面的引用更清楚一点:
如果清除此标志,[...] 此外,如果出现以下情况,处理器将生成无效操作码异常 (#UD) 它尝试执行任何 SSE/SSE2/SSE3 指令,使用 PAUSE、PREFETCHh、SFENCE、LFENCE、MFENCE、MOVNTI 的例外, CLFLUSH、CRC32 和 POPCNT。
【讨论】: