Пару месяцев назад я написал пост о Go и кэшах ЦП: https://teivah.medium.com/go-and-cpu-caches-af5d32cc5592
Затем мне захотелось расширить рамки этого поста. Следуя этой идее, у меня была возможность выступить с докладом на GopherCon Turkey 2020. Тема следующая: Механическая симпатия в Go.
Я попытался осветить следующие темы:
- Введение в архитектуру ЦП
- Принципы локальности отсчета: временная и пространственная локальность, предсказуемость, шаг
- Дизайн, ориентированный на данные: введение, срез структур против структуры срезов и т. д.
- Подводные камни из-за плохого использования кешей ЦП: ассоциативность кеша, критический шаг
- Параллелизм: ложный обмен
Вот видео моего выступления:
Начало разговора, к сожалению, было вытеснено. Тем не менее, вы можете найти здесь слайды для отсутствующего вступления: