Современные методы повышения производительности процессоров.
Одной из главных особенностей шестого поколения микропроцессоров архитектуры IA32 является динамическое (спекулятивное) исполнение. Под этим термином подразумевается следующая совокупность возможностей:
· Глубокое предсказание ветвлений (с вероятностью >90% можно предсказать 10-15 ближайших переходов).
· Анализ потока данных (на 20-30 шагов вперед просмотреть программу и определить зависимость команд по данным или ресурсам).
· Опережающее исполнение команд. Возможность выполнять команды в порядке, отличном от их следования в программе.
Прогнозирование ветвлений
В реальных программах до 15%-20% всех команд - это команды условных переходов
Поэтому с целью повышения эффективности использования конвейера (и производительности процессора), в современных процессорах используются различные методы статического и динамического прогнозирования ветвлений исполняемой программы.
Статическое прогнозирование ветвлений
Один из подходов прогнозирования ветвлений заключающийся в предположении, что все переходы назад будут выполняться, а все переходы вперед нет. На самом деле так будет не всегда, однако это обеспечивает некоторый процент правильных предсказаний, и повышает производительность процессора.
Если переход спрогнозирован правильно, то продолжается выполнение программы.
Если переход спрогнозирован неправильно, то нужно определить адрес команды для правильного перехода и перейти туда. Затем отменить уже выполненные команды неправильного перехода.
Динамическое прогнозирование ветвлений
Один из подходов прогнозирования ветвлений — хранить (в особом устройстве) специальную таблицу, в которую центральный процессор будет записывать условные переходы, когда они встретятся.
Каждому элементу таблицы соответствует адрес команды условного перехода. В элементе таблицы хранится адрес перехода, который произошел при выполнении команда в последний раз.
Прогноз заключается в выборе того же пути, по которому программа пошла в предыдущий раз при выполнении команды перехода. Если прогноз оказывается неправильным, в соответствующий элемент таблицы записывается правильный адрес перехода