【发布时间】:2014-08-04 06:12:31
【问题描述】:
我的焦虑是执行以C 语言编写的程序。很明显,内存访问时间是处理器消耗的大量总时间。我想要的只是将部分数据移动到缓存内存以提高性能。
经过一些搜索,我发现了一个使用 Gnu C Compiler(gcc) 的方法,即这个函数:
_builtin_prefetch()。
这个函数在实际调用阶段之前从内存中拉取任意变量,但是如何有效地使用这个函数呢?
实际上我不觉得GNU manual 本身有帮助。任何使用此功能或什至其他编译器解决方案的有效示例都将受到赞赏。
【问题讨论】:
-
为什么必须手动处理缓存内存?我们在谈论什么样的应用程序?我认为这更像是一个设计问题。聪明的代码很难弥补糟糕的设计。
-
通常这样的问题可以在代码的其他地方修复。如果您求助于缓存,您可能采取了错误的方法。
-
@FilipeGonçalves 在高性能计算方面,我们面临许多类似的麻烦,不是因为设计问题,而是因为问题性质和对加速的需求。