История изменений
Исправление
mv,
(текущая версия)
:
А почему именно man TLB, можно поинтересоваться? То есть, понятно что будет проседание по производительности из-за pointer chasing'а, но в чем специфика TLB, а не кеш-миссов в целом?
1. Размер TLB существенно меньше, чем строк в кэше. Случайный доступ в массив размером 64мб вытирал TLB у Nehalem полностью
2. Для восполнения промаха в кэше нужен один доступ в память (плюс вытеснение одной строки из кэша), для TLB - 3 или 4 для обхода таблицы страниц, в зависимости от процессора и режима его работы, с вытеснением такого же количества строк из кэша
3. У кэша есть префетчер и спекулятивный доступ, обычно успешно подтягивающий данные до того, как они будут нужны, у TLB этого нет
4. Транслятор адресов может параллельно делать всего две трансляции для чтения и одну для записи. И это нужно делать для каждой кэш-строчки.
5. Большие страницы для sparse-массива - это огромный перерасход памяти, а на микроархитектурах до Haswell ещё и тормоза из-за отдельного и крохотного TLB для больших страниц (на SnB было 32).
Исходная версия
mv,
:
А почему именно man TLB, можно поинтересоваться? То есть, понятно что будет проседание по производительности из-за pointer chasing'а, но в чем специфика TLB, а не кеш-миссов в целом?
1. Размер TLB существенно меньше, чем строк в кэше. Случайный доступ в массив размером 64мб вытирал TLB у Nehalem полностью
2. Для восполнения промаха в кэше нужен один доступ в память (плюс вытеснение одной строки из кэша), для TLB - 3 или 4 для обходма таблицы страниц, в зависимости от процессора и режима его работы, с вытеснением такого же количества строк из кэша
3. У кэша есть префетчер и спекулятивный доступ, обычно успешно подтягивающий данные до того, как они будут нужны, у TLB этого нет
4. Транслятор адресов может параллельно делать всего две трансляции для чтения и одну для записи. И это нужно делать для каждой кэш-строчки.
5. Большие страницы для sparse-массива - это огромный перерасход памяти, а на микроархитектурах до Haswell ещё и тормоза из-за отдельного и крохотного TLB для больших страниц (на SnB было 32).