Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 说明是什么';wbnoinvd';?_Assembly_X86_Intel_Cpu Cache_Intel Tme - Fatal编程技术网

Assembly 说明是什么';wbnoinvd';?

Assembly 说明是什么';wbnoinvd';?,assembly,x86,intel,cpu-cache,intel-tme,Assembly,X86,Intel,Cpu Cache,Intel Tme,所以,我找到了说明书 wbnoinv 在 所以我很好奇,我是否可以在没有操作系统权限的情况下使用它(仅仅是一个用户陆地应用程序),它会进行哪种写回,它是否真的会影响所有内部缓存,或者如果不会,哪些缓存会受到影响,以及它“写回”的数据类型 因此,我自己做了一项研究,没有发现任何有用的东西,只是一些请求说,指令是在2018年1月左右用PCONFIG在Linux内核中添加的,因此它不是真正最新的,也没有回答我的问题。该指令尚未在英特尔SDM中(不在我的副本中,但可能不会更新)但它在ISA扩展手册中。这

所以,我找到了说明书

wbnoinv

所以我很好奇,我是否可以在没有操作系统权限的情况下使用它(仅仅是一个用户陆地应用程序),它会进行哪种写回,它是否真的会影响所有内部缓存,或者如果不会,哪些缓存会受到影响,以及它“写回”的数据类型


因此,我自己做了一项研究,没有发现任何有用的东西,只是一些请求说,指令是在2018年1月左右用PCONFIG在Linux内核中添加的,因此它不是真正最新的,也没有回答我的问题。

该指令尚未在英特尔SDM中(不在我的副本中,但可能不会更新)但它在ISA扩展手册中。这是特权。描述的第一行是:“WBNOINVD指令将处理器内部缓存中所有修改的缓存线写回主内存,但不会使内部缓存失效(刷新)。”等等!你的问题实际上比看起来要深刻得多!英特尔不会记录哪些缓存受
wbnoinvd
影响。人们会期望所有这些都是,但有一个关于不同实现的注释警告。不幸的是,测试这一点可能很困难(不可能?),但仍然很困难。如果你等得久一点,像我这样不懒惰的人可能会给出一个真正的答案;)我希望此指令类似于
WBINVD
指令,但不会使缓存失效。该指令写回所有内部缓存,然后指示外部缓存也写回修改的数据(但不等待此操作完成)。不同的实现说明适用于未来的处理器。我正在努力为
wbnoinvd
找到一个合理的用例。用于内存数据库和由非易失性RAM支持的文件系统的“ACID属性”;以及用于管理多密钥存储器加密的密钥(例如,在使用不同密钥进行别名之前,将页面从读/写更改为只读);这似乎是极端的过度杀戮(相对于粒度更细/目标更明确的
clflushopt
系列)。电源管理工具(离线CPU、挂起/hybernate)不是性能关键,而且
wbnoinvd
(而不是
wbinvd
)不太可能提高性能,任何人都不会在意。@MargaretBloom它会回写同一一致性域(即NUMA节点)中所有数据缓存中的行。我不确定的一件事是外部DRAM缓存(在内存模式下配置Optance DC时)是否也会被写回。不清楚术语“外部缓存”是指过时的外部SRAM缓存还是指新的外部DRAM缓存。关于兼容性说明,本说明也存在于手册所有版本的
WBINV
说明中,一直追溯到486。我不清楚这是什么意思。