Сегодня у нас экскурсия по заводу! А устроен он так:
- первый цех подготавливает сырье
- второй обрабатывает его до готового вида
- отдел приёмки выпускает в свет только то, что пришло без брака.
Когда всё работает слажено, то и продукция сходит с ленты быстро и качественно.
Но стоит одному цеху притормозить (станок сломался) и конвейер встаёт: пробка с одной стороны, простой с другой.
Выходит, что скорость всего завода определяется самым медленным цехом.
—
Вот и процессор устроен так же.
Упрощенно его работу можно разделить на три последовательных этапа:
- Frontend: достать инструкцию и подготовить её к исполнению (цех №1)
- Backend: выполнить поступившую инструкцию (цех №2)
- Retiring: зафиксировать инструкцию как выполненную, если она не выброшена из-за ошибки предсказания (приемка)
А объём готовой продукции это количество инструкций, завершённых за цикл. Что и есть IPC (instructions per cycle).
—
Проблема IPC в том, что это очень верхнеуровневая метрика-симптом. Она может показать, что скорость просела, но не говорит где именно и почему.
Чтобы ответить на эти вопросы, современные процессоры любезно предоставляют сотни ивентов и столько же метрик (ознакомиться). Разбираться в них безусловно интересно, но оочень долго.
А нам нужно побыстрее понять что к чему, и приступить к исправлению проблем.
Хорошо, что умные ребята уже подумали за нас и предложили методологию
Top-Down Microarchitecture Analysis.
—
Если продолжить аналогию с заводом, TMA не измеряет скорость каждого отдельного станка. Она показывает, в каком цеху завод чаще всего теряет время:
- Frontend Bound: первый цех не успевает подготавливать инструкции.
- Backend Bound: второй цех не успевает выполнять поступающие инструкции.
- Bad Speculation: часть работы уходит в брак, например из-за ошибки предсказания перехода.
- Retiring: инструкции успешно проходят все этапы и фиксируются как выполненные.
Наша естественная цель: максимизировать Retiring и минимизировать остальные категории.
Для этого каждую из них можно разложить глубже и понять, из-за чего именно замедляется процессор!
—
Подробнее:
1. описание методологии от её автора @Ahmad Yasin
2. практическо-теоретический гайд от @dendibakh (можно и начать отсюда)
3. тулинг для анализа TMA
Удачи!
—
p.s. поддержать лайком на linkedin: тут.
Post #90
3.29K
- 👍 25
- ❤ 8