_mm512_storenrngo_pd和_mm512_storenr_pd有什么区别?_mm512_storenr_pd和_mm512_storenrngo_pd
_mm512_storenr_pd(无效*公吨,__m512d V):
商店压缩双精度(64位)从V 浮点元素存储器地址公吨用非读取暗示到处理器。
我不清楚,什么没有读取提示的意思。这是否意味着它是非缓存一致写入。这是否意味着重用更昂贵或者不一致?
_mm512_storenrngo_pd(无效*公吨,__m512d V):
商店压缩双精度(64位)从V 浮点元素存储器地址公吨用无读提示,并使用微弱有序 内存一致性模型(使用此函数执行的存储不是全局排序的 ,并且来自同一个线程的后续存储可能是在它们之前观察到的 )。
与storenr_pd
基本相同,但由于它使用弱一致性模型,这意味着进程可以在任何其他处理器之前查看自己的写操作。但是另一个处理器的访问是非连贯的还是更昂贵的?从Intel® Xeon Phi™ Coprocessor Vector Microarchitecture
'vmovnrngoaps'停止重新排序以后的存储到“buffer_ready”标志后'sfence'是否不够?还是KNC不同?在“正常”的CPU上,['vmovntps [payload],ymm0' /'sfence' /'mov [flag],1'就足够了](https://stackoverflow.com/a/44866652/224132)。 (你确定'CPUID'甚至足够了吗?在存储器退役后,数据仍然可以存储在存储缓冲区中,并且CPUID序列化无序管道也不会刷新存储队列和NT存储缓冲区(例如Line-Fill Buffers),是吗?) –
'vmovnrngoaps'听起来与AVX/AVX512'vmovntps' /'_mm512_stream_ps'完全相同。哦,KNC没有SFENCE或MFENCE吗?您的最后一个报价包括*我们的编译器生成围栏(锁定指令)*。我从未读过关于KNC的很多内容。 Agner Fog的微型指南甚至没有关于它的章节。 –
我认为KNC不支持它们。按照英特尔®至强融核协处理器系统软件开发指南第4.2.18.1节的规定:“由于其更严格的内存排序模型,英特尔®至强融核协处理器不支持SFENCE,LFENCE和MFENCE指令,这些指令提供了更多有效的方式来控制其他英特尔处理器上的内存排序。“ – veritas