RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2015, том 27, выпуск 4, страницы 39–48 (Mi tisp163)

Обнаружение и оценка количества промахов когерентности на основе вероятностной модели

Е. А. Велесевич

Институт системного программирования РАН

Аннотация: Ложное разделение кэша возникает, когда нити, параллельно выполняющиеся на разных ядрах, поочередно обновляют разные переменные, попадающие в одну строку кэша, что приводит к устареванию информации о текущем состоянии памяти в кэше ядра, используемом первой нитью приложения, и необходимости нити ждать, пока информация в кэше обновится. В статье для оценки количества промахов предлагается использовать инструментацию кода и постобработку ее результатов: по наблюденным промахам кэша в трассе обращений к памяти с временными метками для каждой нити вычисляется вероятность того, что во время обращения, выбранного с некоторой заранее определенной вероятностью, и следующего обращения к этой строке в этой же нити была запись в ту же строку в другой нити. Трассировщик программы реализован как проход в открытом компиляторе GCC, добавляющий специальные инструкции перед каждым обращением к памяти и выполняющийся после всех оптимизирующих проходов, благодаря чему становится возможной оценка эффективности использования кеша в оптимизированных приложениях. Анализатор реализован в виде отдельного приложения, которому подается на вход сгенерированные на тестовом наборе данных трассы обращений к памяти, имевших место в нитях анализируемого приложения. Замедление работы программы при трассировке для проверенных экспериментально тестовых приложений составляет примерно 10 раз, при этом оно зависит от вероятности выборки, которая в свою очередь выбирается в зависимости от характера и времени работы приложения, но практически не зависит от длины кэш-линии.

Ключевые слова: ложное разделение кэша, GCC, инструментация кода.

DOI: 10.15514/ISPRAS-2015-27(4)-3



Реферативные базы данных:


© МИАН, 2024