相关疑难解决方法(0)

每个程序员应该了解的内存?

我想知道Ulrich Drepper 从2007年开始对每个程序员应该知道的内容有多少仍然有效.另外,我找不到比1.0更新的版本或勘误表.

optimization x86 memory-management cpu-architecture micro-optimization

145
推荐指数
3
解决办法
2万
查看次数

软件预取手动指令的情况是合理的

我在x86和x86-64上已经了解到这一点,英特尔gcc提供了特殊的预取指令:

#include <xmmintrin.h>
enum _mm_hint
{
_MM_HINT_T0 = 3,
_MM_HINT_T1 = 2,
_MM_HINT_T2 = 1,
_MM_HINT_NTA = 0
};
void _mm_prefetch(void *p, enum _mm_hint h);
Run Code Online (Sandbox Code Playgroud)

程序可以_mm_prefetch在程序中的任何指针上使用内在函数.并且与_mm_prefetch 内在函数一起使用的不同提示是实现定义的.一般来说,每个提示都有其自身的含义.

_MM_HINT_T0将 数据提取到包含高速缓存的所有高速缓存级别以及用于独占高速缓存的最低级别高速缓存

_MM_HINT_T1提示将数据拉入L2而不是L1d.如果有一个L3缓存,_MM_HINT_T2 提示可以为它做类似的事情

_MM_HINT_NTA,允许告诉处理器专门处理预取的缓存行

那么当有人使用这条指令时,有人会描述一些例

以及如何正确选择提示?

c++ gcc prefetch cpu-cache

3
推荐指数
1
解决办法
727
查看次数