Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Микроархитектура процессоров P6






Элементы процессора разбиваются на 5 функциональных групп (рис. 5.11):

подсистема памяти (системная шина, кэш двух уровней, блок интерфейса, блок переупорядочения обращений к памяти);

блок выборки/декодирования (блок предвыборки инструкций, буфер целевых адресов переходов, декодер инструкций, секвенсор микрокодов, таблица переименования регистров);

пул инструкций (переупорядочивающий буфер);

диспетчер/исполнитель (станция резервирования, два целочисленных блока, блок с плавающей точкой, два блока генерации адреса, два блока SIMD с плавающей точкой);

блок завершения с файлом архитектурных регистров.


Шины P6 ориентированы на транзакции, т.е. каждый запрос к памяти обрабатывается отдельными операциями запроса и ответа. Пока интерфейсный блок ожидает ответа на выданный запрос, он может выдать еще несколько запросов. Таким образом, возникает опасность блокировок запросов.

Первичный кэш автоматически перенаправляет свои промахи вторичному кэшу. Если и во вторичном кэше происходит промах, запрос перенаправляется к основной памяти.

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

Блок выборки/декодирования считывает поток инструкций из кэша и декодирует их в цепочки простейших микроопераций (m‑ ops). Микрооперации – примитивные инструкции (два операнда-источника и один операнд назначения).

Блок предварительной выборки проводит выборку кодов линейной (неветвящейся) программы блоками по 16 байтов.

Буфер целевых адресов переходов (BTB – Branch Target Buffer) хранит историю переходов (целевой адрес и 4 бита предыстории, показывающие, были ли переходы за последние четыре прохода инструкции). Если предсказывается переход, его адрес посылается на устройство предвыборки до выполнения инструкции ветвления. Если происходит неверное предсказание, конвейер простаивает.

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

В дополнение к буферу предсказания ветвления работает буфер стековых возвратов (RSB – Return Stack Buffer), позволяющий корректно предсказывать адрес возврата из процедур, вызываемых из различных точек.

Декодирование осуществляется тремя декодерами (двумя – для простых инструкций (команды формата «регистр-регистр», команды загрузки регистра) и одним – для сложных). Полученный поток микроопераций направляется в пул инструкций.

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

В завершение процесса декодирования распределитель в блоке поддержки таблиц псевдонимов добавляет к микрооперации биты статуса и флагов для «беспорядоченного» (out-of-order) исполнения микроопераций и посылает результаты в пул инструкций.

Пул инструкций (instruction pool, reorder buffer – RoB) – переупорядочивающий буфер, представляющий собой ассоциативную память, организованную в виде 40 регистров микроопераций. Микрооперации могут выбираться для выполнения из буфера в произвольном порядке, определяемом готовностью их операндов и доступностью используемых ресурсов. Выполненные микрооперации, но еще не передавшие свои результаты в файл регистров завершения, также находятся в этом буфере.

Диспетчер/исполнитель планирует и исполняет микрооперации согласно зависимости данных и доступности ресурсов. Он также временно хранит результаты спекулятивно выполненных инструкций. Планирование и диспетчеризация осуществляется станцией резервирования. Она сканирует буфер и направляет готовые для исполнения микрооперации на доступные исполнительные устройства.

Микрооперации выполняются шестью параллельно работающими исполнительными блоками процессора (два целочисленных блока, два блока с плавающей точкой, блок интерфейса памяти, способный параллельно выполнять операции чтения и записи, и предсказание ветвления).

Результаты выполнения микроопераций возвращаются в буфер RoB и хранятся вместе с микрооперацией до ее удаления из буфера.

Блок завершения (retirement unit) выгружает результаты спекулятивного исполнения микроопераций в файл регистров завершения и/или память и удаляет микрооперации из буфера RoB. Результаты завершенных микроинструкций выгружаются в порядке исходного программного кода (во внимание принимаются прерывания, исключения, точки останова и ошибочно предсказанные переходы).

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

Конвейер процессора Pentium Pro содержит три части:

– препроцессор (упорядоченный, in-order issue front-end);

– ядро с неупорядоченным исполнением (out-of-order core);

– упорядочивающее выходное устройство (in-order retirement unit).

Конвейеризация включает следующие ступени (рис. 5.12):

– BTB0, BTB1 – буфер переходов;

– IFU0, IFU1, IFU2 (Instruction Fetch Unit) – блоки выборки инструкций (IFU выбирает инструкции 16‑ байтными пакетами, выровненными по границам параграфов, на ступени IFU2 инструкции предварительно декодируются и укладываются в два буфера по 16 байт, но уже без привязки к границам параграфов);

 
 

ID0, ID1 (Instruction Decoder) – декодер инструкций, который параллельно может декодировать до 3‑ х макроинструкций, выдавая до 6 микроопераций (1+1+4); при декодировании инструкций ветвления посылается сообщение в BTB0;

– RAT (Register Allocation) – блок переименования инструкций и выделения ресурсов;

– ROB Rd (Re-order Buffer Read) – переупорядочивающий буфер (может выполнять два чтения регистров за такт);

– RS (Reservation Station) – станция резервации (конец упорядоченного препроцессора);

– Port0-Port4 – порты вычислительного ядра с неупорядоченным исполнением, на которых группируются исполнительные устройства:

q Port0 – целочисленное АЛУ (арифметика, сдвиги, LEA) и FPU (FADD, FMUL, FDIV),

q Port1 – целочисленное АЛУ,

q Port2 – блок загрузки данных,

q Port3 – блок адреса записи,

q Port4 – блок данных записи;

– ROB Wb (Re-order Buffer Write back) – переупорядочивающий буфер записи;

– RRF (Register Retirement File) – файл регистров (может за один такт принимать до трех завершенных микроопераций).

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.