Структура процессоров Р6
Процессоры архитектуры Р6 состоят из четырех основных подсистем (рис. 5.1):
• упорядоченной предварительной обработки;
• исполнения с изменением последовательности;
• упорядоченного завершения;
• памяти.
Подсистема упорядоченной предварительной обработки выбирает и преобразует команды х86 в последовательность более простых микроопераций, а также вычисляет возможные адреса переходов (технология предсказания переходов).
Подсистема исполнения с изменением последовательности обеспечивает исполнение МО (из которых состоит сложная команда х86) в оптимальном порядке и организует взаимодействие исполнительных устройств.
Подсистема упорядоченного завершения формирует выдачу результатов исполнения команд в порядке, предусмотренном программой.
Подсистема памяти обеспечивает взаимодействие процессора с оперативной памятью.
Подсистема упорядоченной предварительной обработки
К устройствам этой подсистемы относятся следующие узлы.
Дешифратор команд. Это устройство преобразует команды х86, т.е. сложные команды, реализованные во всех предыдущих процессорах Intel, в последовательность более простых RISC-микроопераций, исполняемых процессором.
Рис. 5.1. Функциональная схема процессоров Р6:
I – подсистема упорядоченной предварительной обработки; II – подсистема исполнения с изменением последовательности; III – подсистема упорядоченного завершения; IV – подсистема памяти
Оно включает два дешифратора простых команд, которые могут быть выполнены за одну МО, и один дешифратор сложных команд, для реализации которых нужно несколько (до четырех) МО.
Вычислитель адреса следующей команды. В ранних процессорах Intel адрес следующей команды вычислялся с помощью регистра – ПС. Напомним, что он правильно указывает адрес следующей команды лишь при естественном (без условных и безусловных переходов) ходе программы. Если в программе появляются условные переходы, то адрес следующей команды вычисляется и загружается в регистр ПС. Эта процедура, как правило, требует времени, между тем операционное устройство процессора простаивает. В процессорах архитектуры Р6 роль ПС играет специальный узел – вычислитель адреса следующей команды. Он анализирует прерывания и заранее вычисляет адрес команды, которая должна быть обработана следующей, на основании информации, хранящейся в таблицах переходов.
Буфер предсказания переходов. Это устройство хранит в таблице адреса предыдущих переходов. Проиллюстрируем принцип предсказания переходов. В любой более или менее сложной программе всегда имеются циклы, переход к началу которых осуществляется через команды условного перехода. Пусть, например, ветвь программы выполняется циклически до тех пор, пока значение некоторого счетчика изменяется от 1 до 99. При достижении счетчиком значения 100 происходит выход из цикла и переход к дальнейшему исполнению программы по указанному в команде адресу. Это значит, что после первого выполнения этой ветви в 97 случаях из оставшихся 98 переход будет выполнен к одному и тому же адресу программы. Таким образом, можно с большой долей вероятности предсказать адрес следующей команды.
Для предсказания используются как динамический, так и статический методы. Первый, по существу, означает, что в таблицах переходов адрес следующей команды уже имеется (а это означает, что эти команды, скорее всего, имеются в кэш-памяти и их считывать из ОЗУ уже не нужно). Если этих команд нет (они могли быть замещены в кэш-памяти другим набором команд), то подсистема упорядоченной предварительной обработки начинает выбор из памяти с последующим декодированием предсказанных команд. Причем эти действия выполняются процессором параллельно с исполнением ранее выбранных и декодированных команд. Если "предсказания" окажутся неверными, то весь этот кусок программы процессором просто аннулируется.
Статический метод соответствует случаю, когда адрес следующей команды приходится вычислять традиционным способом, как это было в первых процессорах Intel. Он используется в том случае, если динамическое предсказание невозможно (в таблице переходов необходимая информация отсутствует).
Блок выборки команд. Устройство осуществляет выборку команд из памяти по адресам, подготовленным вычислителем адреса следующей команды.
Планировщик последовательностей микроопераций. Устройство хранит последовательности МО, используемых при декодировании сложных команд х86. При необходимости дешифратор сложных команд обращается к планировщику и получает нужную последовательность МО.
В дальнейшем развитии структуры Р6 в подсистему упорядоченной предварительной обработки для дополнительного сокращения времени на считывание команд из ОЗУ был введен блок предвыборки команд. Он осуществлял предварительную выборку на основании таблицы переходов.