流负载和非USWC内存

我刚刚读了这篇相当有趣的文章,《复制加速的视频解码帧缓冲区》。 他们在哪里解释了如何使用流负载尽可能快地从USWC内存中进行复制。 我的问题是,为什么这种技术也不能从非USWC内存中加速普通副本? 流式加载将一次性读取整个缓存行,而不是常规加载一次仅加载16个字节的常规加载。我想念什么?从填充缓冲区复制到将写入缓存的“缓存缓冲区”不会有太多开销吗?     
已邀请:
从http://software.intel.com/zh-cn/articles/increasing-memory-throughput-with-intel-streaming-simd-extensions-4-intel-sse4-streaming-load/ \“流加载指令旨在加速从USWC内存类型的数据传输。对于其他类型的内存,例如可缓存(WB)或不可缓存(UC),该指令的行为类似于典型的16字节MOVDQA加载指令。但是,将来处理器可以将流加载指令用于其他类型的内存(例如WB),以暗示预期的高速缓存行应直接从内存流传输到内核,同时最大程度地减少高速缓存污染。” 也就是说,“普通”存储器是WB,因此使用非临时加载/存储与普通加载/存储没有优势。同样,对于普通的可缓存存储器,高速缓存行的第一次加载会将整个高速缓存行拉入L1,这类似于第一次非时间加载将整个缓存行拉入特殊的“非临时缓冲区”。 正如上面的引用所述,未来的处理器可能会使用非时间性加载/存储作为不污染缓存的提示。在某些情况下,哪个主意不错,但对于通用memcpy()实现可能不是正确的选择?     

要回复问题请先登录注册