"Оптимизация для PENTIUM процессора" - читать интересную книгу автора


- новая инструкция FCOMI устраняет потребность в медленной FNSTSW AX

- более высокая частота

PentiumPro уступает Pentium в следующем:

- непредсказанные переходы очень медленные (10-15 тактов!)

- низкая производительность 16 битного кода и сегментной модели

- медленно декодируются префиксы (кроме 0FH)

- большие потери при смешивании 8, 16 и 32 битных регистров

- FADD, FSUB, FMUL, FCHS медленнее

- не возможны два чтения или записи в память

- некоторые комбинации инструкций не могут исполняться параллельно, например
push + push, push + условный переход

Таким образом, PentiumPro может быть действительно медленнее Pentium, хорошо
оптимизированный код, с большим количеством непредсказанных переходов и
большим количеством операций с плавающей точкой может действительно работать
с весьма разной скоростью.

Большинство недостатков каждого процессора могут быть обойдены тщательным
оптимизированием и использованием режима адресации FLAT. Но проблема с
непредсказанными условными переходами не может анулироваться, за исключением
случаев, где вы сможете заменить их инструкциями условного перемещения.

Использование преимуществ MMX и PentiumPro процессоров создаст значительные
трудности, если вы захотите, что бы ваш код был совместим с более ранними
микропроцессорами. Решением может быть написание нескольких версий кода,
оптимизированного под каждый из процессоров. Ваша программа должна
автоматически определять тип используемого процессора и выбирать
соответствующую версию кода. Такой сложный способ целесообразно применять
только в критических частях вашей программы.