【问题标题】:How to use SSE2 & PREFETCHh instructions at the same time?如何同时使用 SSE2 和 PREFETCHh 指令?
【发布时间】: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 指令,我该怎么办?

【问题讨论】:

    标签: assembly x86


    【解决方案1】:

    是的,措辞可以更清楚。他们的意思是CR4.OSFXSR 位仅控制与 SSE 寄存器一起使用的指令的执行。提到的其他指令不访问 SSE 寄存器,因此它们始终可用(如果实施)。

    下面的引用更清楚一点:

    如果清除此标志,[...] 此外,如果出现以下情况,处理器将生成无效操作码异常 (#UD) 它尝试执行任何 SSE/SSE2/SSE3 指令,使用 PAUSE、PREFETCHh、SFENCE、LFENCE、MFENCE、MOVNTI 的例外, CLFLUSH、CRC32 和 POPCNT。

    【讨论】:

    • 为什么有人要禁用SSE?
    • 是的,你是对的。致Lưu Vĩnh Phúc:也许禁用它以节省功耗,因为相关的硬件逻辑已完全关闭。只是猜测......
    • @LưuVĩnhPhúc:实际上更多的是保存寄存器上下文而不是指令本身。确保使用 SSE 寄存器的程序在不支持 SSE 的操作系统下运行时不会损坏其状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2020-09-18
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多