我刚刚开始使用非临时存储指令将某些类型的数据存储到内存(可能是 DRAM 或 NVM)。我查看了 Intel Intrinsics Guide 以了解此类存储函数,并找到了 _mm_stream_si32、_mm_stream_si18、_mm_stream_si256 等函数。似乎这些函数只能应用于某些类型的整数。我的问题是,如果我自定义某种类型的结构并且它的大小可能是 1KB、2KB ......我如何执行非临时(流式)存储来将这种类型的结构存储到我的内存中(或反之亦然,从内存中加载)。目前,我只能想出一种方法,将我的结构转换为一大块整数,并为每个转换的整数一个接一个地应用非时间/流式存储/加载。我认为这种方法效率低下,有没有更有效的编码方式来实现我的目标?
另外,如果我想存储大量这样的自定义结构,是否需要sfence
在每个非临时存储之后发出一个?我对此不确定,想知道是否可以删除指令或在执行所有非临时存储后sfence
仅发出一条指令?sfence
非常感谢您的帮助。