C++:异步写入内存

C++: Asynchronous writing memory

本文关键字:内存 异步 C++      更新时间:2023-10-16

我对C++编程没有什么疑问。我想知道是否有可能以异步方式(顺序代码)在内存中写入?但让我明确我的问题。我正在寻找一种算法的改进,我的代码的瓶颈似乎是在内存中编写。我想写在内存中,然后继续计算。有可能用一个处理器做到这一点吗?就像使用ALU同时使用写入块一样?我知道,我不会在下一次计算中使用结果。它写在矢量结果中。

感谢您花时间回复,无论是阅读还是阅读。

是和否。编译器将优化内存写入,以便处理器可以在写入内存块时执行操作。这是延迟隐藏的一种形式。这是"是"的答案。

"不"的部分是,不幸的是,从代码的角度来看,我们不能用一个线程来实现这一点。

输入/输出是很多程序的瓶颈,所以这只是你必须优化和处理的事情。

这不是C++或其他什么的问题,它只是CPU支持的问题:如果底层硬件无法支持,C++就无法为您提供这样的功能。

x86指令没有这样的功能,但AFAIK较新的PPC版本有。如果你想走硬件路线,你应该首先检查你目前使用的硬件:不同的x86 CPU的内存延迟有很大不同。

您可以优化内存写入。

  1. 压缩您写入的数据以节省内存带宽
  2. 在本地写入一个连续的内存块,以更有效地使用处理器的写入缓冲区
  3. 从一个线程编写以防止错误共享
  4. 也许__builtin_prefetch可以帮上忙,但我不确定