gpt4 book ai didi

x86 - x86中 "non temporal"内存访问的含义是什么

转载 作者:行者123 更新时间:2023-12-02 08:36:52 28 4
gpt4 key购买 nike

这是一个有点低级的问题。在 x86 汇编中,有两条 SSE 指令:

MOVDQA <i><em>xmmi, m128</em></i>

MOVNTDQA <i><em>xmmi, m128</em></i>

IA-32 软件开发人员手册称 MOVNTDQA 中的 NT 代表 Non-Temporal,其他方面与 MOVDQA 相同。

我的问题是,非时间性是什么意思?

最佳答案

非临时 SSE 指令(MOVNTI、MOVNTQ 等)不遵循正常的缓存一致性规则。因此,非临时存储后面必须跟有 SFENCE 指令,以便其他处理器能够及时看到其结果。

当生成数据并且没有(立即)再次使用数据时,内存存储操作首先读取完整的缓存行,然后修改缓存的数据,这一事实对性能不利。此操作将可能再次需要的数据从缓存中推出,以支持不会很快使用的数据。对于大型数据结构尤其如此,例如矩阵,先填充然后再使用。在填充矩阵的最后一个元素之前,巨大的大小会驱逐第一个元素,从而使写入的缓存无效。

对于这种情况和类似情况,处理器提供对非临时写入操作的支持。在这种情况下,非临时意味着数据不会很快被重用,因此没有理由缓存它。这些非临时写操作不会读取缓存行然后对其进行修改;相反,新内容会直接写入内存。

来源:http://lwn.net/Articles/255364/

关于x86 - x86中 "non temporal"内存访问的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com