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

Все статьи

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

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


                                PPlain    PMMX   PPro   PII     PIII
                                
 кэш кода, кб                   8         16     8      16      16
 кэш данных, кб                 8         16     8      16      16
 встроенный кэш 2 уровня, кб    0         0      256    512 *)  512 *)
 инструкции MMX                 нет       да     нет    да      да 
 инструкции XMM                 нет       нет    нет    нет     да 
 инструкции условной пересылки  нет       нет    да     да      да 
 данных
 выполнение не по порядку       нет       нет    да     да      да 

 предсказывание переходов       плохо     хорошо хорошо хорошо  хорошо
 количестов элементво в буфере  256       256    512    512     512
 предсказывания переходов      
 размер стекового буфера        0         4      16     16      16
 возвращений       
 потери при неправильном        3-4       4-5    10-20  10-20   10-20 
 предсказании перехода  
 задержки чтения регистров      0         0      5      5       5
 
 время ожидания FMUL            3         3      5      5       5
 производительность FMUL        1/2       1/2    1/2    1/2     1/2

 время ожидания IMUL            9         9      4      4       4
 производительность IMUL        1/9       1/9    1/1    1/1     1/1

*) Селерон: 0-128, Xeon: 512 или больше, доступны другие варианты. На 
некоторых версиях кэш второго уровня выполняется на половинной скорости.

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

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

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

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

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

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

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

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

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

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

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

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

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

2002-2013 (c) wasm.ru