К сожалению, мистер Гранлунд никогда не раскрывал свои методы выжать максимум из процессора - по крайней мере, я знаю об этом. Его программа GMPLIB может быть вам интересна, хотя бы для изучения его инструкций. Это математическая библиотека с произвольной точностью, которая используется, помимо прочего, для вычисления сотен миллионов десятичных чисел числа пи (gmplib.org). Его резюме в формате PDF о задержках команд на семейство процессоров также очень информативно.

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

Я надеялся реализовать процедуру автоматического выравнивания, которая может обрабатывать код целиком и вставлять выравнивание в соответствии со спецификацией процессора (ширина строки кэша, 32/64 бита и т. Д.) ...

Может кто-нибудь дать несколько советов об этой процедуре? В качестве примера целевым процессором может быть процессор Intel Core i7 64-битная платформа.

Спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос