我可能应该阅读英特尔手册,但它真的很长,我有点迷失它
我想知道如何确保我的写作在主ram中。
或者是否有一些写入指令完全绕过缓存?
答案 0 :(得分:1)
您可以使用流媒体(非临时)商店。它们意味着避免污染缓存(以获得更好的性能),但这也意味着它只会直接将数据写入内存,因此可以用于可靠性。
在汇编中使用MOVNT *指令,或检查编译器是否为其提供内在函数。
MS编译器应该支持_mm_stream_ps / si / ..:
http://msdn.microsoft.com/en-us/library/bb531466%28v=vs.90%29.aspx
GCC可能会以不同方式调用它(至少是新的SSE风格),请尝试__builtin_ia32_movntq / ps / ..
http://gcc.gnu.org/onlinedocs/gcc/X86-Built_002din-Functions.html
请注意,数据持久性是一个很大的主题,如果这是您的目标可能还不够,您还应该确保您拥有防护同步点,以确保这些存储已完成,然后才能保证数据是安全的。