Самоучитель по 3dsmax 7

         

Приемы оптимизации для процессоров Intel Pentium


ОПТИМИЗАЦИЯ
6.1. Приемы оптимизации для процессоров Intel Pentium

Все, что здесь написано, является выборкой наиболее важных на мой взгляд фактов из документации от Agner Fog. Если вы серьезно интересуетесь оптимизацией для Intel Pentium (plain, MMX, PPro, P2), найдите и прочтите эту документацию (я нашел на http://www.agner.org/assem, относительно старая версия есть на ftp://ftp.cdrom.com/pub/sac/text/pentopt.zip).

6.1.1. Спаривание целочисленных команд

По-моему, основной прием ускорения. Дело в том, что у процессоров Pentium есть два конвейера обработки команд, U-pipe и V-pipe. В результате некоторые пары команд могут исполняться одновременно, а это практически удваивает скорость.

Эти команды могут быть исполнены и в U-pipe, и в V-pipe, и при этом могут быть спарены (с какой-либо другой командой):

mov reg/mem,reg/mem/imm
push reg/imm
pop reg
lea, nop, inc, dec, add, sub, cmp, and, or, xor
некоторые формы test

Эти команды могут быть исполнены только в U-pipe, но при этом все-таки могут быть спарены:

adc, sbb
shr, sar, shl, sal на заданное число
ror, rol, rcr, rcl на единичку

Эти команды могут быть исполнены в любом конвейере, но могут быть спарены только в V-pipe:

near call (близкий вызов)
short/near jump (короткий/близкий переход)
short/near conditional jump (короткий/близкий переход по условию)

Все остальные целочисленные команды могут быть исполнены только в U-pipe и не могут быть спарены вообще.

Две последовательно идущих команды будут спарены в случае выполнения всех нижеследующих условий.



Содержание раздела