методы оптимизации производительности, связанные с кэшем? - PullRequest
4 голосов
/ 14 февраля 2011

есть много слухов о проблемах производительности, связанных с кешем.У меня есть несколько вопросов о них:

  1. Вероятно, наиболее популярными проблемами являются локальность кэша и ложное совместное использование кэша .Любые другие?
  2. какой-нибудь хороший обзор?
  3. есть ли проверенные методы для борьбы с ними?
  4. Каковы общие характеристики приложений, где они являются реальными проблемами?вычислительные поля (математика / обработка изображений и т. д.)высокопараллельные приложения?

1 Ответ

4 голосов
/ 14 февраля 2011

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

Определить шаблоны доступа к данным довольно сложно, но вы можете относительно легко определить шаблоны доступа к коду.Учитывая граф вызовов, наборы блоков, которые составляют тела функций, и некоторые оценки частот перехода между блоками, вы можете назначить кодовые блоки кешу таким образом, чтобы максимально увеличить вероятность того, что следующий блок вам понадобитсянаходиться в какой-то другой строке кэша, которая не конфликтует с текущей.Одна интересная идея состояла в том, что вам нужно было только назначить блоки кода, которые были «горячими» (высокая вероятность выполнения);не имеет большого значения, куда вы положили холодные.IIRC, это означает, что вы можете отсортировать блоки по частоте вероятного выполнения, а затем назначить их в этом порядке.

Вам просто нужен глобальный анализ: -} Первое место, где я читал об этом, на самом деле был оптимизированреализованный как часть компоновщика, который является одним из способов получить всю программу в целом.

Я не помню ни одного хорошего обзора или набора собранных приемов.Тем не менее, конференции PLDI, как правило, публикуют исследовательские работы по этой теме.

...