gpt4 book ai didi

c++ - Cortex-A8 强制内存缓存

转载 作者:太空狗 更新时间:2023-10-29 21:26:50 25 4
gpt4 key购买 nike

有必要使用函数实时处理大量数字(~1 Mb),例如void processData(char* data).

在目标平台上运行了以下测试:

int j = 10;
while(j--)
processData(dataPtr);

每次都使用相同的数据。结果如下:

  1. 第一次运行大约需要 22.5 毫秒
  2. 第二次运行,其他运行需要 ~12.5 毫秒

在我看来,这可能是因为在第二次运行时数据已经在处理器缓存中,因此它运行得更快。

问题:在实际情况下,数据每次都会不同。

有什么方法可以将数据“预加载”到缓存中吗?

最佳答案

预取是可能的(使用 gcc,使用 __builtin_prefetch),但应该小心使用,否则它可能会降低性能而不是提高性能。

在这样做之前,应该检查函数中的内存访问模式并尽可能优化。
基本上,我们希望内存访问尽可能少,并且它们应该尽可能串行。

有预取操作,但不建议对整个数据集进行预取操作。
更好的设计是,在循环的每次迭代中,为下一次迭代预取数据(如果循环运行速度非常快,则可能是下一次迭代)。

关于c++ - Cortex-A8 强制内存缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com