Максимально возможное количество кеш-памяти при использовании локальных переменных потока - PullRequest
0 голосов
/ 15 ноября 2018

Ссылаясь на вопрос, этот вопрос уже задавался / отвечался: ( Как регистры fs / gs используются в Linux AMD64? ), и этот документ упоминается в ответе на этот вопрос (https://akkadia.org/drepper/tls.pdf)

Согласно документу регистр FS указывает на TCB (блок управления потоком), который указывает на DTV (динамический вектор потока), который в конечном итоге приводит к локальным данным потока. Правильно ли тогда предполагать, что мы можем вызватьв 3 кеша не загружается локальная переменная потока? (1 для TCB, 1 для DTV и 1 для самих данных?

1 Ответ

0 голосов
/ 15 ноября 2018

Согласно Годболт , следующий код:

thread_local int t;

int get_t () {
    return t;
}

Создает следующий объектный код:

mov     eax, DWORD PTR fs:t@tpoff
ret

Итак, я делаю один доступ к памяти. На самом деле в сообщении, на которое вы ссылаетесь, есть ответ, в котором говорится то же самое.

...