Оптимизация для процессоров семейства Pentium: 31. Сравнение различных микропроцессоров

Дата публикации 22 авг 2002

Оптимизация для процессоров семейства Pentium: 31. Сравнение различных микропроцессоров — Архив WASM.RU

В следующей таблице изложены некоторые важные различия между процессорами семьи Pentium:

Код (Text):
  1.  
  2.                                 PPlain    PMMX   PPro   PII     PIII
  3.                                
  4.  кэш кода, кб                   8         16     8      16      16
  5.  кэш данных, кб                 8         16     8      16      16
  6.  встроенный кэш 2 уровня, кб    0         0      256    512 *)  512 *)
  7.  инструкции MMX                 нет       да     нет    да      да
  8.  инструкции XMM                 нет       нет    нет    нет     да
  9.  инструкции условной пересылки  нет       нет    да     да      да
  10.  данных
  11.  выполнение не по порядку       нет       нет    да     да      да
  12.  
  13.  предсказывание переходов       плохо     хорошо хорошо хорошо  хорошо
  14.  количестов элементво в буфере  256       256    512    512     512
  15.  предсказывания переходов      
  16.  размер стекового буфера        0         4      16     16      16
  17.  возвращений      
  18.  потери при неправильном        3-4       4-5    10-20  10-20   10-20
  19.  предсказании перехода  
  20.  задержки чтения регистров      0         0      5      5       5
  21.  
  22.  время ожидания FMUL            3         3      5      5       5
  23.  производительность FMUL        1/2       1/2    1/2    1/2     1/2
  24.  
  25.  время ожидания IMUL            9         9      4      4       4
  26.  производительность IMUL        1/9       1/9    1/1    1/1     1/1
  27.  
  28. *) Селерон: 0-128, Xeon: 512 или больше, доступны другие варианты. На
  29. некоторых версиях кэш второго уровня выполняется на половинной скорости.

Комментарии к таблице:

Размер кэша кода важен, если критические части вашей программы занимают достаточно много места.

Размер кэша данных важен для всех программ, которые обрабатывают большое количество данных в критической части.

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

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

Выполнение не по порядку улучшает качество (особенно не оптимизированного кода). Оно включает в себя автоматическую перегруппировку и переименование регистров.

Процессоры с хорошим механизмом предсказания переходов умеют предсказывать простые повторяющиеся последовательности. Чем выше потери при неправильном предсказании переходов, тем важнее их предсказуемость.

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

Задержки чтения регистров делают обработку смешанных типов данных (8, 16, 32 бита) более сложной.

Время ожидания инструкции умножения зависит от цепочки зависимости. Производительность 1/2 значит, что инструкция может конвееризироваться, поэтому новое умножение может начинаться каждый второй такт. Это определяет скорость обработки параллельных данных.

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

Использование инструкций FPU на PPlain и PMMX часто требует большое количество дополнительных инструкций FXCH. Это затормозит выполнение на старых процессорах, но не на процессорах семейства Pentium и продвинутых неинтеловских процессорах.

Использование инструкций MMX на процессорах PMMX, PII и PIII или инструкций условной пересылки данных на PPro, PII и PIII создаст проблемы, если вы хотите, чтобы ваш код был совместим с более ранними процессорами. Решение может состоять в том, чтобы написать несколько версий вашего кода, каждая из которых будет оптимизированна под определенный процессор. Ваша программа должна определять, на каком процессоре она выполняется и выбирать соответствующую версию кода (глава 27.10). © Агнер Фог, пер. Aquila


0 706
archive

archive
New Member

Регистрация:
27 фев 2017
Публикаций:
532