答案_mm_prefetch() 局部性提示是什么?详细说明提示的含义。
\n我的问题是:我想要哪一个?
\n我正在研究一个被重复调用数十亿次的函数,其中一些int参数。我做的第一件事是使用该参数(其低 32 位)作为 4GB 缓存的键来查找一些缓存值。根据调用该函数的算法,我知道该密钥通常会从一次调用到下一次调用加倍(左移 1 位),所以我这样做:
int foo(int key) {\n uint8_t value = cache[key];\n _mm_prefetch((const char *)&cache[key * 2], _MM_HINT_T2);\n // ...\nRun Code Online (Sandbox Code Playgroud)\n目标是拥有这个value在下次调用该函数时将其放入处理器缓存中。
我正在寻找对我对两点的理解的确认:
\n_mm_prefetch不会延迟紧随其后的指令的处理。该函数使用 128 128 位值(总共 2 KB)的查找表。有没有办法 \xe2\x80\x9cforce\xe2\x80\x9d 它被缓存?该查找表的索引按顺序递增;我也应该预取它们吗?我可能应该使用另一个提示来指向另一个级别的缓存?这里最好的策略是什么?
\n