Микроархитектура микропроцессора Intel Pentium Pro (P6)

МП P6 перед выполнением программного кода преобразует команды x86 серии во внутренние микрокоманды. Это позволяет устранять многие ограничения, свойственные набору команд 86 серии. Такие как нерегулярность кодированных команд, операции целочисленных пересылок типа регистр-память и переменная длина непосредственных операндов.

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

Механизм исполнения с изменением последовательности отделен от начальных ступеней конвейера. Это повышает эффективность суперскалярных операций, вызывая меньшее число блокировок конвейера и накладывает меньшее ограничение при обработки по сравнению с МП Pentium (P5).

Выборка кода и трансляция его в микрокоманды происходит на первых 6 ступенях конвейера. Процесс начинается, когда блок выборки команд считывает 64 байта кода из первичного КЭШ-команд в соответствии с содержимым буфера адреса-перехода (BTB) .

Блок выборки команд использует текущий указатель команды, чтобы найти первую команду серии x86, а затем считывает 16 байт, начиная с этой ячейки памяти, выравнивает их и передает на 3 параллельных дешифратора (рис 2).

В МП P6 имеется два простых дешифратора и третий сложный.

Простые дешифраторы обрабатывают команды х86 серии, транслируемые в единственную команду. Сложный дешифратор работает с командами, которым соответствует от 1 до 4 микрокоманд.

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

После отображения регистров микрокоманды пересылаются в буфер восстановления последовательности, а так же становятся в очередь в специальном буфере команд (станция-резервуар), который расположен между ступенями дешифрования и исполнения.

Микроархитектура микропроцессора Intel Pentium Pro (P6) - student2.ru

Рис 2. Структура микропроцессора Р6

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

Станция-резервуар обслуживает все исполнительные блоки, храня до 20 микроопераций. Она может посылать максимально 5 микрокоманд за такт при работе с типичными командами последовательности x86, но более вероятен непрерывный поток пересылок в 3 команды за такт. Станция-резервуар работает согласовано с буфером восстановления последовательности и это позволяет выполнять программу с измененной последовательностью команд. Микропроцессор освобожден от необходимости исполнять каждую команду в той последовательности, которая предписана программой, при этом он может рассматривать ожидание в очереди микрокоманды и определять, какая лучше подходит для выполнения в данный момент времени. Принятое решение основывается на таких факторах, как доступность операндов, занятость нужных исполнительных блоков и устранение взаимозависимостей.

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

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

P6 применяет статические методы для предсказания поведения тех команд переходов, предыстория которых не была проанализирована с помощью динамических методов.

Как и в P5, так и в P6 используется буфер адреса-перехода, но предсказание ветвления в P6 достигает 90%, а в P5 – 80%. В P6 используется двух уровневый адаптивный исторический алгоритм, который не только регистрирует предысторию и предсказывает конкретные переходы, но может так же предугадывать поведение групп команд переходов.

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

В Р6 реализован 14-ступенчатый конвейер, разделенный на три блока (рис 3). Блоки упорядоченной обработки и обработки с изменением последовательности разделены буфером микрокоманд (станцией-резервуаром). Разделение позволяет трем блокам функционировать до определенной степени независимо, повышает эффективность их одновременной работы.

Микроархитектура микропроцессора Intel Pentium Pro (P6) - student2.ru

Рис.3. Архитектура конвейера Р6

На ступенях I1-I3 выполняется определение указателя на следующую команду, обращение к КЭШ-памяти команд, создается буфер команд емкостью 16 байт, команды микропроцессора выравниваются перед посылкой в дешифраторы. На ступенях I4-I6 команды х86 декодируются и преобразуются в микрокоманды. На ступени I7 регистры переименовываются с помощью таблицы псевдонимов регистров. На ступени I8 микрокоманды выдаются и записываются в станцию-резервуар, статус команд записывается в буфер восстановления последовательности. На ступенях О1,О2 микрокоманды направляются из станции-резервуара в исполнительные блоки. На ступени О3 микрокоманды выполняются за один и более тактов. На ступенях R1-R3 результаты становятся доступными для пересылки в буфер восстановления последовательности, проверяются взаимозависимости, составляется очередь на удаление микрокоманд, обновляется содержимое реальных регистров и памяти.

Наши рекомендации