Memory Modeling and Analysis

Кэш-память процессора - это память с очень быстрым доступом, предназначенная для хранения часто использующихся данных. Размер кэш-память в современных процессорах не превышает нескольких мегабайт, поэтому её эффективное использование очень сильно влияет на скорость работы программ. Оценить эффективность использования кэша можно несколькими способами, один из подходов - эмуляция работы кэша. Проект Memory Modeling and Analysis (MMA) направлен на разработку подобного эмулятора для оценки эффективности использования кэш-памяти как для последовательных, так и параллельных программ.

Цели

1. Обнаружение false-sharing (вплоть до исходников и переменных).

2. Обнаружение неэффективного использования кеш-памяти (вплоть до исходников и переменных).

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

3. Учебный эффект (демонстрация состояния подсистемы памяти).

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

Задачи

1. Поддержка сбора статистики с многопоточных приложений.

2. Реализация эмулятора многоядерных/многопроцессорных систем и расширение функционала эмулятора.

3. Отображение информации на уровне исходников.

Необходимо разобраться как получать и использовать отладочную информацию по данным, которые возвращает PIN.

4. Расширенная визуализация.

Визуализация состояния кеш-памяти по результатам моделирования с возможностью проигрывания статистики по времени вперёд и назад. Отображение данных на уровне исходников.

5. Поддержка эмуляции в реальном времени (отложено).

Собирать статистику в файл - это не очень удачное решение как по времени работы, так и по удобству использования. Гораздо удобнее было бы собираемую статистику эмулировать сразу (подобный подход не лишён недостатков). Для этого нужно проработать механизм передачи данных из dll-функции, которую вызывает PIN, в эмулятор.

6. Разработка примеров и оценка эффективности использования подсистемы памяти на них.

Более подробнаю информацию о задачах 4 и 6 можно скачать ниже.

Текущие участники

  1. Юданов Вячеслав Владимирович
  2. Вихирев Алексей Юрьевич
  3. Кокошников Алексей Сергеевич
  4. Алявдин Александр Владимирович

Минипроект 2013-2014

Результаты

В рамках минипроекта решалось две задачи:

  1. Расширенние возможностей визуализации.
  2. Разработка примеров и оценка эффективности использования подсистемы памяти на них.

Основные результаты представлены в презентации.

Участники

  1. Левин Вадим Александрович
  2. Кокошников Алексей Сергеевич
  3. Алявдин Александр Владимирович

Минипроект 2012-2013

Результаты

Разработана инфраструктура инструмента MMA из трёх компонент: сбор статистики по работе с памятью (PIN), эмулятор подсистемы памяти и визуализатор кеш-памяти. Презентацию с результатами минипроекта можно скачать ниже.

Результат моделирования кеш-памяти на задаче блочного матричного умножения (эксклюзивная архитектура кеш-памяти).

Результат моделирования кеш-памяти на задаче блочного матричного умножения (инклюзивная архитектура кеш-памяти).

Участники

  1. Вихирев Алексей Юрьевич
  2. Минеев Александр Владимирович
  3. Чебоксаринов Андрей Сергеевич
  4. Юданов Вячеслав Владимирович