Оптимизация для процессоров семейства Pentium: 31. Сравнение различных микропроцессоров — Архив WASM.RU
В следующей таблице изложены некоторые важные различия между процессорами семьи Pentium:
Код (Text):
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). © Агнер Фог, пер. Aquila
Оптимизация для процессоров семейства Pentium: 31. Сравнение различных микропроцессоров
Дата публикации 22 авг 2002