Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама
Печать календарей - https://pressroll.ru/pechat-kalendarey/.

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Оптимизация для pentium процессора - соображения о других микропроцессорах

23. СООБРАЖЕНИЯ О ДРУГИХ МИКРОПРОЦЕССОРАХ
=========================================
Большинство оптимизаций, описанных в этом документе может иметь очень
маленькую, а может и вообще отрицательную, эффективность на других, не-Intel
микропроцессорах, но о некоторых проблемах лучше быть осведомленным.

Использование полного регистра, после записи в его часть вызовет серьезные
задержки на 80486 и небольшие задержки на PentiumPro. Например:
MOV AL,[EBX] / MOV ECX,EAX
На PentiumPro может быть анулированно обнулением полного регистра перед
записью:
XOR EAX,EAX / MOV AL,[EBX] / MOV ECX,EAX
или используя MOVZX EAX,BYTE PTR [EBX]

При планировании кода с плавающей точкой на Pentium, обычно используется
много инструкций FXCH. Это замедлит исполнение кода на ранних микропроцессорах,
но не на PentiuPro, поздних Intel и не-Intel процессорах.

Как упомянуто во введении, Intel заявил о создании новых версий процессора
Pentium с набором MMX инструкций, предназначеных для векторных операций. Эти
инструкции будут очень полезны для параллельных расчетов большого числа
целочисленных операций.

Чип PentiumPro во многих отношениях быстрее, чем Pentium, но с другой стороны
кое в чем медленнее. Знание сильных и слабых стороны PentiumPro позволит вам
делать ваш код максимально быстрым для обоих процессоров.

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

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

PentiumPro лучше, чем Pentium в следующих случаях:

- порядок выполнения

- один промах кеша не задерживает последующие инструкции

- разбиение сложных инструкций на меньшие микро-операции

- автоматическое анулирование регистра, для анулирования не необходимых
  задержек

- лучший механизм предсказания переходов, чем на Pentium без MMX

- многие неспариваемые или слабо оптимизированные на Pentium инструкции
  выполняются лучше на PentiumPro, т.н. целочисленное умножение, MOVZX,
  CQD, битовое сканирование, битовый тест, сдвиги CL и загрузка чисел с
  плавающей точкой

- числа с плавающей точкой и целые числа операции могут обрабатываться
  одновременно

- чтение и запись в память не занимает ALU

- инструкции косвенно обращающиеся к памяти не вызывают остановку AGI

- новые инструкции перемещения данных могут использоваться вместо инструкций
  условных переходов

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

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

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

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

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

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

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

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

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

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

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

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

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

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог