SERIALIZE 指令是否会阻止推测执行?

ven*_*ngy 5 x86 assembly cpu-architecture speculative-execution

最近遇到了SERIALIZE指令。

串行化指令执行。在获取并执行下一条指令之前,SERIALIZE 指令可确保完成先前指令对标志、寄存器和内存的所有修改,从而耗尽对内存的所有缓冲写入。

这是一个示例 masm64 程序,其扩展名为Secret Key. 在访问密钥之前,它会通过调用包围敏感代码,SERIALIZE以期防止任何类型的推测执行。

option casemap:none

includelib kernel32.lib
includelib libcmt.lib

.data
sensitiveData db "My Secret Key", 0

.code
main proc
    SERIALIZE                     
    lea     eax, [sensitiveData]
    SERIALIZE                     
    ret
main endp

end
Run Code Online (Sandbox Code Playgroud)

问题

可以SERIALIZE用来缓解推测执行漏洞,例如Meltdown吗?

更新

刚刚发现这篇文章解释了这个新指令。

Linux 内核准备使用英特尔的新 SERIALIZE 指令

...英特尔 Linux 工程师发送了一系列补丁,以在内核的sync_core() 函数中使用英特尔 SERIALIZE 指令。Linux 的sync_core 函数被调用来停止推测执行和预取修改后的代码。...