Основные особенности МК. Понятие микроконтроллера. Классификация микропроцессоров. 8-разрядные МК, страница 18

Этап выборки команд разделен на 3 ступени (фазы) и реализуется последовательными блоками конвейера IFU1, IFU2, IFU3 (Instruction Fetch Unit).

IFU1 извлекает из кэш-памяти команд строку объемом 32 байта и сохраняет её в собственном буфере.

IFU2 принимает из буфера IFU1 порции по 16 байт. Основной функцией IFU2 является выделение страниц между командами. При обнаружении команды условного перехода (IFU2 осуществляет частичное декодирование), ее адрес пересылается в BTB.

IFU3 принимает из IFU2 порции по 16 байт и на основе частичного декодирования производит анализ стоимости команд для выделения для них подходящих декодеров с целью эффективной загрузки следующего блока конвейера.

Этап декодирования разделен на 2 ступени (фазы) и реализуется последовательными блоками конвейера ID1 и ID2.

Блок ID1, реализующий первую фазу декодирования, может параллельно обрабатывать 3 машинных команды (по числу декодеров, входящих в состав этого блока). В блоке ID1 каждая машинная команда  преобразуется в последовательность микрокоманд, каждая из которых может состоять из одной, двух, трех или четырех микрокоманд. Микрокоманда имеет длину 118 бит. По Столлингсу, микрокоманда напоминает команду RISC-процессора, однако она значительно длиннее.

После фазы конвейера ID1 единицей обработки в нем уже является не команда, а микрокоманда. В связи с этим многие специалисты утверждают, что в архитектуре процессора Р6 реализовано так называемое RISC-ядро.

Только один из трех декодеров блока ID1 может обрабатывать сложные машинные команды, которые преобразуются в две, три или четыре микрокоманды. Два других декодера могут обрабатывать только простые команды, преобразующиеся в одну единственную микрокоманду. Для того, чтобы команды из буфера IFU2 были переданы на соответствующие декодеры блока ID1, блок IFU3 переставляет команды таким образом, чтобы первая из них была сложная, а вторая и третья – простые. Если все три команды в буфере простые, то никаких перестановок от IFU3 не требуется (декодер сложных команд может с успехом декодировать и простые команды). Если же в буфере содержится более одной сложной команды, они распределяются таким образом, чтобы на второй и третий декодеры попадали только простые команды.

В системе команд процессоров с архитектурой Р6 имеется достаточно большое число команд, для реализации которых требуется более четырех микрокоманд. При декодировании таких команд (естественно, через декодер сложных команд) реализуется обращение к блоку микропрограммной памяти, именуемому MIS (MicrocodeInstructionSequencer – последовательность микрокода) из которого выбираются последовательности микрокоманд, представляющие алгоритм реализации сложных команд. Сформированная блоками ID1 и MIS последовательность микрокоманд передается в блок ID2 (вторая фаза декодирования).

В связи с использованием трех параллельных декодеров команд на фазе ID1 обеспечивается возможность параллельного декодирования трех машинных команд в одном такте. В соответствии с этим (по мнению Д.П.С.) конвейер команд процессоров P6 достаточно часто называют трехпотоковым.

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

Следующим блоком конвейера является блок распределения регистров RAT (RegisterAllocation (Alias) Table), функцией которого является назначение физических регистров логическими. Количество физических регистров равно 40,  они объединяются в регистровый файл с наименованием RRF (RetirementRegisterFile – регистровый файл отката). При реализации этой фазы конвейера в микрокоманде адрес логического регистра заменяется адресом физического, то есть выполняется функция переименования регистров. Трансформированные микрокоманды пересылаются в следующий блок конвейера, называемый ROB (Re-OrderBuffer – блок изменения последовательности). В состав ROB входят 40 регистров, образующих циклический буфер, каждый из которых предназначен для хранения одной микрокоманды.