Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> Assembler -> Оптимизация для 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 процессоров создаст значительные
трудности, если вы захотите, что бы ваш код был совместим с более ранними
микропроцессорами. Решением может быть написание нескольких версий кода,
оптимизированного под каждый из процессоров. Ваша программа должна
автоматически определять тип используемого процессора и выбирать
соответствующую версию кода. Такой сложный способ целесообразно применять
только в критических частях вашей программы.


 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.