Решение, принятое в P6 - Микропроцессоры семейства Intel

Решение сформулированной в предыдущем разделе проблемы памяти, принятое в P6, заключается в обращении к пулу команд, извлечении из него команд, следующих за командой, требующей обращения к памяти, и выполнения до момента завершения команды-тормоза максимума полезной работы. В приведенном в предыдущем разделе примере процессор не может выполнить команду 2 до завершения команды 1, так как команда 2 зависит от результатов команды 1. В то же время процессор может выполнить команды 3 и 4, не зависящие от результата выполнения команды 1. Мы будем называть такое выполнение команд опережающим выполнением. Результаты опережающего выполнения команд 3 и 4 не могут быть сразу записаны в регистры, поскольку мы должны изменять состояние вычислительной системы только в соответствии с правильным порядком выполнения программы.

Эти результаты хранятся в пуле команд и извлекаются оттуда позднее. Таким образом, процессор выполняет команды в соответствии с их готовностью к выполнению, вне зависимости от их первоначального порядка в программе, то есть с точки зрения реального порядка выполнения команд P6 является машиной, управляемой потоком данных. В то же время изменение состояния вычислительной системы, например запись в регистры, производится в строгом соответствии с истинным порядком команд в программе.

Чтение из памяти данных, необходимых для команды 1, может занимать достаточно много тактов. Тем временем P6 продолжает опережающее выполнение команд, следующих за командой 1, и успевает обработать, как правило, 20-30 команд. Среди этих 20-30 команд будет в среднем пять команд перехода, которые устройство выборки/декодирования должно правильно предсказать для того, чтобы работа устройства диспетчирования / выполнения не оказалась бесполезной. Небольшое количество регистров в архитектуре процессоров "Intel" приводит к интенсивному использованию каждого из них и, как следствие, к возникновению множества мнимых зависимостей между командами, использующими один и тот же регистр. Поэтому, чтобы исключить задержку в выполнении команд из-за мнимых зависимостей, устройство диспетчирования / выполнения работает с дублями регистров, находящимися в пуле команд (одному регистру может соответствовать несколько дублей) . Реальный набор регистров контролируется устройством отката, и результаты выполнения команд отражаются на состоянии вычислительной системы только после того, как выполненная команда удаляется из пула команд в соответствии с истинным порядком команд в программе.

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

Далее мы будем понимать под "упорядоченным" устройство, которое работает в соответствии с исходным порядком команд в программе, а под "беспорядочным" - устройство, которое не обращает внимания на исходный порядок команд в программе.

Устройство выборки / декодирования является "упорядоченным" устройством, которое воспринимает на входе поток команд из программы пользователя и декодирует их, превращая в последовательность микрокоманд, соответствующих потоку данных в программе пользователя.

Устройство диспетчирования / выполнения является "беспорядочным" устройством, которое воспринимает поток данных и планирует выполнение микрокоманд с учетом зависимостей по данным и доступности ресурсов, а также временно сохраняет результаты опережающего выполнения в пуле команд.

Устройство отката "упорядоченное" устройство, которое знает, как и когда завершить выполнение команды, то есть перевести временные результаты опережающего выполнения в постоянное состояние вычислительной системы.

Интерфейс шины является "частично упорядоченным" устройством, отвечающим за связь трех вышеупомянутых устройств с внешним миром. Интерфейс шины взаимодействует непосредственно с кэшем 2-го уровня и поддерживает до 4 параллельных обращений к кэшу.

Интерфейс шины также управляет обменом данными с основной памятью, который происходит с использованием протокола MESI [1].

Похожие статьи




Решение, принятое в P6 - Микропроцессоры семейства Intel

Предыдущая | Следующая