Источник: статья CGO 2018 — Легкое обнаружение конфликтов кэша

Артефакт: CCProf

Я неавтор, этот пост является просто кратким обзором статьи.

Для читателей, которые когда-либо проходили курс: Организация компьютера или Архитектура компьютера.

Введение

В современных компьютерных архитектурах иерархии памяти часто разрабатываются для обеспечения экономической эффективности. Среди всех типов памяти кэш-память является одним из важнейших ключей к высокой производительности. Нерегулярные промахи кэша обычно вызывают значительное снижение производительности.

Симуляторы кеша предназначены для поиска причин плохого использования кеша. Тем не менее, симуляторы приводят к очень высоким издержкам производительности. Иногда это может быть невыносимо для пользователей.

Поэтому в некоторых исследованиях изучалось, как использовать модуль мониторинга производительности (PMU) в процессорах, чтобы снизить нагрузку и получить такие же результаты, как и в симуляторах кэша. Это исследование (CCProf) также является одним из них. Кроме того, CCProf кажется очень полезным для техники тайлинга.

Задний план

Существует три типа промахов кеша — холодные промахи, промахи емкости и конфликтные промахи, и это исследование посвящено промахам конфликтов.

Одним из способов разрешения конфликтов с промахами является использование методов заполнения, поскольку одна из причин промахов заключается в том, что повторно используемые данные могут отображаться в один и тот же блок кэша в современных ассоциативных кэшах VIPT.

Заполнение для изменения адреса данных может эффективно избежать таких условий. Такой метод может быть полезен для операций с большим трафиком памяти, например, плитка (оптимизация вложенных циклов).

Ключевые идеи

Расстояние повторного конфликта (RCD)

RCD — это степень страдания от промахов кэш-памяти. Источником промахов может быть цикл или просто расположение памяти в структуре класса.

Рисунок 4 и 5 иллюстрируют концепцию.

Выборка

CCProf использует результаты выборки из точной выборки на основе событий (PEBS), чтобы аппроксимировать результаты симулятора. PEBS может предоставить точный адрес памяти, который приводит к промахам кеша. Таким образом, если частота дискретизации PMU (perf) достаточно высока, мы можем получить приемлемые результаты.

Выполнение

Онлайн-профилирование

CCProf использует libmonitor для получения результатов от PMU.

Автономный анализ

CCProf извлекает граф потока управления (CFG) целевого приложения из машинного кода и использует интервальный анализ для выявления циклов. Автономный анализатор анализирует собранные образцы для вычисления приблизительного
RCD.

Благодаря онлайн-профилированию и автономному анализу это исследование может выявить петли как виновников.

Оценка

CCProf только советует пользователям, какие циклы или структуры следует оптимизировать. Оптимизацию по-прежнему необходимо выполнять вручную. Однако снижение накладных расходов по сравнению с симулятором является значительным.

Вывод

Этот инструмент может быть полезен в эпоху глубокого обучения, но жаль, что артефакт, использующий libmonitor, не поддерживает arm или другие архитектуры. Он поддерживает только x86–64.

Эта идея может быть только перенесена на архитектуры, которые поддерживают сообщение адресов памяти о промахах кеша.

Поддерживает ли aarch64 такие события PMU?