强制L1缓存上的一些数据

对这个简单的问题抱歉。 仍在努力解决这里的一些记忆概念。 问题是:假设我有一个我想重复访问的预先计算的数组A. 有没有办法告诉C程序让这个数组尽可能接近CPU缓存以便最快地访问? 谢谢。

在大多数架构上,没有办法强制数组到L1 / L2缓存; 通常不需要它,如果经常访问它,则不太可能从缓存中逐出。

在某些体系结构上有一组指令允许您给处理器一个提示,很快就需要内存位置,以便它可以提前开始将其加载到L1 / L2缓存 – 这称为预取,请参阅_mm_prefetch指令示例( http://msdn.microsoft.com/en-us/library/84szxsww(v=vs.80).aspx )。 如果你正在访问一个小arrays,那么这不太可能是必需的。

一般的建议是 – 首先使您的数据结构高效缓存(将相关数据放在一起,打包数据等),如果探查器告诉您仍然花时间在缓存未命中并且无法改进,请尝试稍后进行预取进一步的数据布局。