Есть ли хорошие, современные, онлайн-руководства для оптимизации кода сборки?

Я работаю над некоторым кодом, который содержит некоторые (сгенерированные компилятором) фрагменты кода сборки, которые мы идентифицировали, - это скобки для бутылочек.

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

Ответы

Ответ 1

http://www.agner.org/optimize/optimizing_assembly.pdf

Я бы сказал, "повеселиться", но это, вероятно, будет действительно подлым: (

Думаю, вас интересует глава 9 "Оптимизация скорости".

Ответ 3

Хотя это может и не понадобиться...

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

  • Играйте с параметрами компилятора некоторое время (-march = native, -mfpmath = sse, -msse3, -marm, -mthumb)
  • Используйте информацию профилирования, когда можете (-fprofile-generate, -fprofile-use)
  • Измените алгоритм, чтобы узнать, что производит "лучший" код ((x>>8)&0xFF или (x&0xFF00)>>8?) Это одна инструкция для PPC, но компилятор может использовать два)
  • Измените свой алгоритм, чтобы он лучше использовал кеш.
  • Используйте векторные расширения, если ваш компилятор их поддерживает. Ваш компилятор может иметь дополнительные целевые встроенные функции (x86, ARM NEON).
  • Используйте лучший компилятор (RVCT для ARM, ICC для x86)

Я был бы удивлен, если бы вы могли получить более 20% ускорения над приличным компилятором C, если только не указаны конкретные инструкции/функции, которые компилятор не использует. И 20% редко стоит писать домой, если это не все, что делает ваше приложение.

Ответ 4

Сайт Agner Fog кажется общим ответом. Другая страница, которую я нашел особенно полезной на протяжении многих лет, была страницей Пола Шея...

http://www.azillionmonkeys.com/qed/tech.shtml

Ответ 5

Я согласен с предыдущими ответами, предлагая руководства по оптимизации Agner Fog. Они действительно замечательные.

Кроме того, Intel и AMD также предоставляют некоторые свободно доступные руководства по оптимизации, например. для вас может быть интересно следующее:

Справочное руководство по оптимизации архитектуры Intel 64 и IA-32

Руководство по оптимизации программного обеспечения для процессоров AMD Family 10h