Студопедия

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

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

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






Краткая теория. Цель работы. Изучение особенностей работы типичного микропроцессора.






 

Цель работы. Изучение особенностей работы типичного микропроцессора.

 

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

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

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

Типичным представителем суперскалярных процессоров служит модель Pentium Pro фирмы Intel, структура которой приведена на рис. 5.1. Четырехканальное ядро такого процессора – сложнейшее устройство, содержащее 14 параллельно работающих ступеней, разделенных на три блока.

Входной блок упорядоченной обработки (IOFE), отвечающий за декодирование и обработку команд, состоит из восьми ступеней. Ядро блока исполнения с изменением последовательности (O2C), где происходит выполнение команд, имеет три ступени. Конвейер ввода-вывода команд из последовательности (IOR) также

§ AGU (Address Generation Unit) – блок генерации адреса; § BTB (Branch Target Buffer) – буфер перехода к целям; § BUI (Bus Interface Unit) – блок шинного интерфейса; § DCache (Data Cache) – кэш данных; § EU (Execution Unit) – исполнительный блок; § FEU (Floating Point EU) – блок исполнения операций с плавающей точкой; § ICache (Instruction Cache) – кэш инструкций; § ID (Instruction Decoder) – дешифратор команд; § IEU (Integer EU) – блок исполнения целочисленных операций; § IFU (Instruction Fetch Unit) – блок выборки команд; § IOFE (In-Order Front End) – входной блок упорядоченной обработки; § IOR (In-Orded Retirement) – конвейер ввода-вывода команд из последовательности; § JEU (Jump EU) – блок исполнения переходов; § MEM IF (MEMory InterFace) – интерфейс шины памяти; § MIS (Microcode Instruction Sequencer) – подобие ПЗУ, содержащее набор заранее запрограммированных последовательностей обычных операций; § MIU (Memory Interface Unit) – блок интерфейса памяти; § MOB (Memory Order Buffer) – буфер упорядочивания операций в памяти; § O2C (Out-of-Orded Core) – ядро блока исполнения с изменением последовательности; § RAT (Register Alias Table) – таблица переименования (псевдонимов) регистров; § RRF (Retirement Register File) – регистр возвращения данных; § ROB (ReOrder Buffer) – буфер переупорядочивания; § RS (Reservation Station) – станция - резервуар; § UNIP (Next_IP Unit) – блок назначения индекса поиска. Рис. 5.1. Архитектура микропроцессора Pentium Pro

состоит из трех ступеней. Блоки упорядоченной обработки и обработки с изменением последовательности разделены буфером микрокоманд - станцией-резервуаром (RS).

Выборка кода и трансляция его в микрокоманды происходят на шести первых ступенях конвейера Pentium Pro. Процесс начинается, когда блок выборки команд (IFU) считывает 64 байт кода (две строки) из первичного кэша команд в соответствии с содержимым буфера адреса перехода (BTB). Блок выборки использует текущий указатель, чтобы найти первую команду, а затем считывает 16 байт, начиная с этой ячейки памяти, выравнивает их и передает на три параллельных дешифратора.

Дешифраторы преобразуют команды процессора в микрокоманды. В Р6 имеется три параллельных дешифратора – два из них «простые», а третий «сложный». Простые дешифраторы обрабатывают команды, транслируемые в единственную микрокоманду. Сложный же дешифратор работает с командами, которые содержат от одной до четырех микрокоманд. Если простой дешифратор встречает микрокоманду, которая не поддается трансляции, то он отправляет ее в сложный дешифратор. Дешифраторы способны генерировать в общей сложности шесть микрокоманд за такт, если сложные и простые команды безупречно выровнены. В более типичном случае из всех дешифраторов за один такт выдаются три микрокоманды. Таким образом, реализуется трехпотоковый суперскалярный механизм. Как правило, в среднем трем микрокомандам соответствует чуть меньше трех команд процессора.

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

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

В станции-резервуаре может храниться до двадцати микроопераций (mop). Она напрямую соединяется со всеми одиннадцатью исполнительными блоками Р6. При этом имеется возможность посылать максимум пять микрокоманд за такт. Однако, при работе с типичными командными последовательностями, как отмечалось выше, более вероятен непрерывный поток пересылок с интенсивностью в три микрокоманды за такт.

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

«Неупорядоченные» результаты вычисляются и сохраняются во временных буферах, размещенных на кристалле. Затем они записываются в архитектурные регистры и системную память в порядке, оговоренном программой. На этом этапе начинают играть важную роль ступени удаления (RESTs – REtirement STages) конвейера, рассматриваемые далее.

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

Команды, исполняемые не в той последовательности, которая предписана программой, следует в конечном итоге расположить в правильном порядке – иначе процессор не всегда сможет получить верные результаты. ROB сохраняет статус исполнения и результаты каждой микрокоманды. Микрокоманда выводится, и результаты заносятся в архитектурные регистры и память только после того, как станет известно, что предыдущие микрокоманды завершились. Последовательный процесс упорядочения очень важен для восстановления порядка микрокоманд после исполнения с изменением последовательности. Он обеспечивает соответствующее обновление архитектурных регистров и ячеек памяти после завершения исполнения. При этом пока ROB следит за программной последовательностью микрокоманд RS сохраняет их в буфере и определяет момент, когда конкретная микрокоманды будет готова к пересылке в соответствующее устройство исполнения. Микрокоманды же готовы к пересылке, если определены все их операнды.

Для устранения конфликтов по управлению в Р6 реализована сложная схема предсказания переходов, что сводит к минимуму влияние изменений последовательностей выполнения команд. Как известно, существует две разновидности переходов: безусловные (всегда передается управление по новому указанному адресу) и условные (меняется или не меняется ход выполнения программы в зависимости от результата сравнения или какого-либо условия). Если условный переход не выполняется, программа просто продолжает реализацию следующей по порядку команды.

В типичной программе до 10% операций могут быть безусловными переходами, и еще 10–20 % представлять собой условные переходы. Безусловные переходы проблем не вызывают. Команды же условных переходов предоставляют гораздо большие трудности, потому что процессор не может «знать», будет выполнен переход или нет до тех пор, пока команда не пройдет исполнительную ступень конвейера. Однако ожидание этого события означает отказ от возможности выборки и обработки многих команд. Процессору нужен алгоритм, который позволит ему «угадать», будет выполняться переход или нет. Если предсказание окажется верным, то исполнение продолжится с малой задержкой, либо вовсе без нее. Если же предположение ошибочно, то частично выполненные команды придется удалить из конвейера, а новые выбрать из области памяти с правильным адресом, декодировать и выполнить их. Это повлечет за собой существенное снижение производительности, особенно ощутимое в процессорах, которые, как Р6, имеют многочисленные глубокие конвейеры. Если Р6 ошибается в предсказании перехода, он может потерять от четырех до пятнадцати тактов.

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

Р6 применяет статические методы для предсказания поведения тех команд перехода, которые выполняются впервые. При этом реализация или отсутствие перехода считаются равновероятными. Результат предсказания записывается в буфер адреса перехода. Далее с использованием этого буфера процессор применяет методы прогнозирования, учитывающие значения битов предыстории. Предсказание ветвлений осуществляется очень точно: правильные результаты достигают 93%. Кроме того, в Р6 использован двухуровневый адаптивный исторический алгоритм, который не только регистрирует предысторию и предсказывает конкретные переходы, но может также предугадывать поведение групп команд переходов. Если какой-либо из переходов был предсказан неправильно, то процессор должен иметь возможность корректно отменить все выполненные команды, следующие за точкой ветвления. Для этого ROB процессора просто отбрасывает исполненные по предположению команды, прежде чем они были удалены. Р6 допускает несколько уровней предположения, предсказывая и отслеживая более одного целевого потока команд.

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






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