Меньше промахов кеша с TLS?

Будет ли меньше промахов кэша, если я буду использовать локальное хранилище потоков в своей многопоточной программе?

Редактировать: Поскольку каждому потоку предоставляется собственный пул памяти, более вероятно, что последняя доступная память все еще находится в кеше ЦП?


person Community    schedule 05.07.2012    source источник
comment
Этот вопрос совершенно не ясен. Какой кеш? Для чего будет использоваться TLS? И т.п.   -  person Thomas    schedule 05.07.2012
comment
@Thomas Я выполнил поиск промаха кеша en.wikipedia.org/wiki/CPU_cache#Cache_miss ;) и локальное хранилище потоков en.wikipedia.org/wiki/Thread-local_storage для вашего удобства.   -  person    schedule 05.07.2012
comment
А, кеш CPU. Вы этого не говорили :) Теперь это имеет больше смысла.   -  person Thomas    schedule 05.07.2012


Ответы (2)


Меньше промахов кеша чем что?

TLS — это лишь один из многих способов гарантировать, что разные потоки работают с разными данными (очевидный способ — просто поместить данные каждого потока в свой собственный стек).

Вы получите лучшее поведение кэша, если ваши потоки не записывают одни и те же данные (поскольку это сделает недействительной соответствующую строку кэша для всех других ядер), но какой метод вы используете для обеспечения того, чтобы потоки работали с разными данными, не имеет значения в это уважение.

(Однако с TLS связаны и другие накладные расходы. Это не волшебство и не серебряная пуля. В большинстве случаев это неправильное решение)

person jalf    schedule 05.07.2012

Нет, поскольку кэши на самом деле не организованы с точки зрения размера пула потоков, они работают независимо от выбора, о котором вы думаете.

person Arne    schedule 05.07.2012