阅读一些关于低延迟计算的精彩演讲。他们参考了 IBM 的 XL C/C++ 编译器数据缓存操作__dcbt(Data Cache Block Touch),用于他们的单元编译器。该操作将一块内存加载到 L1 缓存中。
Visual Studio(或 G++ 或 Intel)是否具有适用于 Intel 处理器的类似功能?如果是这样并且解决方案是特定于平台的(即仅限 Windows 或 *nix),请这样说。
是的,Visual Studio 支持所有 SSE 和 MMX 内部操作。此处简要描述了缓存控制操作:http ://www.tommesani.com/SSECacheabilityControl.html 并在英特尔的指令集参考中进行了详细说明。
Microsoft在 MSDN 中记录了它们用于缓存控制的内在函数。尽管它们看起来像函数,但编译器实际上将它们归结为适当的硬件指令。一定要查看他们的 SSE1 和 SSE2 缓存控制指令,它们在不同的类别下列出(参见页面左侧的扩展树)。
x86 等价于dcbt
. _mm_prefetch
没有直接的等价物dcbz
,但最接近的类似物是_mm_stream_si128
.
我相信 GCC 使用相同的内在名称(因为它们取自英特尔编译器)。