2008-09-17 2 views
3

Новые процессоры ARM включают инструкции PLD и PLI.Инструкции по предварительной выборке на ARM

Я пишу плотные внутренние петли (на C++), которые имеют не последовательный паттерн доступа к памяти, а шаблон, который, естественно, мой код полностью понимает. Я ожидал бы существенного ускорения, если бы я мог предварительно выбрать следующее место при обработке текущего местоположения памяти, и я ожидал бы, что это будет достаточно быстро, чтобы испытать, чтобы стоить эксперимент!

Я использую новые дорогие компиляторы из ARM, и, похоже, он не включает инструкции PLD нигде, не говоря уже о том, что в этом конкретном цикле я волнуюсь.

Как включить явные инструкции предварительной выборки в свой код на C++?

+0

Если пример конкретного цикла, который вы оптимизируете, включен в вопрос, участники могут помочь найти оптимизацию, отличную от инструкций PLD, и могут привести конкретные примеры. – 2008-09-17 12:34:11

ответ

5

Должны быть некоторые особенности, связанные с компилятором. Нет стандартного способа сделать это для C/C++. Ознакомьтесь со справочным руководством компилятора. Для компилятора RealView см. this или this.

0

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

0

С риском прояснить очевидность: вы проверили целевую архитектуру компилятора? Например (юмор меня), если по умолчанию компилятор нацелен на ARM7, вы должны никогда не, чтобы посмотреть инструкцию PLD.

0

Это не вне царства возможности, что и другие оптимизации, как software pipelining и loop unrolling может достичь того же эффекта, как ваш упреждающая выборка идеи (пряча латентность нагрузок путем перекрытия его полезного вычисления), но без дополнительного кэша инструкций давление, вызванное дополнительными инструкциями. Я даже зашел так далеко, чтобы сказать, что это чаще всего происходит, для плотных внутренних петель, которые, как правило, имеют мало инструкций и небольшой поток управления. Вместо этого ваш компилятор делает эти типы традиционных оптимизаций. Если это так, возможно, стоит взглянуть на диаграмму трубопровода, чтобы разработать более подробную модель затрат на работу вашего процессора и более количественно оценить, поможет ли предварительная выборка.

Смежные вопросы