КАТАЛОГ
Разборы устройства.
Полные руководства, примеры и эксперименты.
Как процессор выполняет программу
Разберём маленькую программу, построим её зависимости и отличим время одной инструкции от потока результатов.
Кэш, память и локальность
Посчитаем обращения к учебным кэш-линиям и разберём, что действительно сравнивает обход массива с разным шагом.
Условные переходы и предсказание
Одинаковые значения в разном порядке помогают поставить опыт, но сами по себе не доказывают ошибку предсказателя.
Ядра, потоки и предел ускорения
Рассчитаем предел для задачи фиксированного размера и разберём два разных источника потерь: общий замок и ложное разделение кэш-линии.
Как измерять производительность
Соберём проверяемый тест обхода массива: одинаковые данные, разные маршруты, контрольная сумма и серия повторов.
Частота, мощность и нагрев
Разделим частоту и скорость задачи, прочитаем доступную политику Linux и сравним короткую и длительную нагрузку без разгона.
ISA и микроархитектура
Проследим простое сложение в RISC-V, отделим аппаратный контракт от ABI и проверим, что меняют параметры компиляции.