dan*_*jar 2 c++ memory-management cpu-cache
我读到了C++中的缓存优化和现代CPU用来预测接下来需要什么数据的机制,将其复制到缓存中.但对于程序员来说,有没有直接的C++方法可以确定将哪些数据复制到CPU缓存中?
这取决于您使用的处理器和编译器.
假设您使用的是Intel x86/x64或兼容(例如AMD)处理器,则处理器会提供许多预取指令,大多数编译器都会包含内在函数来调用它们.使用VC++,您可以使用_m_prefetch或_m_prefetchw.用你的gcc __builtin_prefetch.
同样,ARM上的VC++ __prefetch为同一目的提供了一个内在的(不,我真的不知道他们为什么不能使用与x86相同的名称;签名和效果看起来相同).
大多数其他相当现代的高端处理器可能提供类似的指令,我猜大多数编译器都提供内在函数来使它们可用,但就像这些一样,内在函数的名称也会有所不同.就此而言,即使函数是编译器固有的,大多数都要求你包含一些标题才能使用它们 - 标题的名称也会有所不同.