使用线程局部变量可能导致的最大缓存未命中数

Maximum cache misses possible from using Thread Local Variables

提到这个问题已经 asked/answered 问题:(How are the fs/gs registers used in Linux AMD64?), and this doc referenced in an answer to this question (https://akkadia.org/drepper/tls.pdf)

根据文档,FS 寄存器指向 TCB(线程控制块),后者指向最终导致线程本地数据的 DTV(动态线程向量)。 那么假设我们可以招致最多 3 次缓存未命中加载一个线程局部变量是正确的吗? (1 个用于 TCB,1 个用于 DTV,1 个用于数据本身?

根据Godbolt,代码如下:

thread_local int t;

int get_t () {
    return t;
}

生成以下目标代码:

mov     eax, DWORD PTR fs:t@tpoff
ret

所以我进行了一次内存访问。实际上 post 你 link 中有一个答案说的是同样的话。