Микропроцессорные системы

Автор: Пользователь скрыл имя, 10 Ноября 2011 в 19:05, реферат

Краткое описание

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

Оглавление

1. Общая организация современного микропроцессора 2
2. Кэш инструкций в традиционных процессорах 9
3. Предсказание адреса и направления переходов 10
4. Выборка и декодирование инструкций 14
5. Intel Pentium III, Pentium M и Core Duo 15
6. Intel Pentium 4 19
7. Intel Core (P8) 23
8. AMD Athlon 64 / Opteron (K8) 26
9. IBM PowerPC 970 27
Список литературы 30

Файлы: 1 файл

Реферат по МПС.docx

— 143.54 Кб (Скачать)

    К порту 0 подсоединены функциональное устройство целочисленной арифметики и логики, работающее в удвоенном темпе, а  также устройство, выполняющее операции пересылок и выгрузки в память для арифметики с плавающей точкой. Порт 1 обслуживает целочисленное устройство с удвоенным темпом работы, частично дублирующее аналогичное устройство на порту 0 и выполняющее операции сложения/вычитания и копирования, а также устройство сдвигов и основное устройство плавающей арифметики, выполняющее арифметические операции x87, MMX и SSE. К порту 2 подсоединено устройство загрузки из памяти, а к порту 3 — устройство вычисления адресов для операций выгрузки в память.

    Организация системы внеочередного исполнения инструкций в виде многоуровневой структуры  с раздельными очередями для  разных групп функциональных устройств  позволяет обеспечить работу процессора на повышенной тактовой частоте за счёт того, что на каждом этапе при  работе с очередями и устройствами выполняются только простые действия. Например, для распределения трёх новых МОПов в амортизирующие очереди требуется просто скопировать каждый МОП в конец нужной очереди. Для перемещения МОПов из этих очередей в очереди (буфера) планировщика нужно выбрать соответствующую очередь по типу операции, а в случаях, когда подходят две очереди (Fast0 и Fast1 для сложения/вычитания и копирования) — принять решение, исходя из требования равномерной загрузки очередей. Для выбора инструкции, отсылаемой на исполнение, нужно просмотреть очереди, приписанные к данному порту, и найти в них МОП, готовый к исполнению (т.е. такой МОП, все операнды которого уже вычислены либо ожидаются к нужному моменту) с учётом готовности функциональных устройств. При наличии нескольких готовых МОПов выбирается самый старый. Эти действия проводятся независимо в каждом порту. Порты 0 и 1 работают на удвоенной частоте.

    В связи с повышенной тактовой частотой, особенно с учётом работы двух портов на удвоенной частоте, в процессоре P-4 применён нестандартный подход для  осуществления диспетчеризации (отсылки  МОПа на исполнение).

    Принятие  решения о диспетчеризации в  любом процессоре проводится за некоторое  время до попадания операции в  функциональное устройство. Это связано  в первую очередь с тем, что  операнды МОПа должны быть предварительно считаны из регистров (либо приняты из других функциональных устройств, от результатов работы которых зависит данная операция). Поэтому между моментами диспетчеризации и запуска на исполнение имеется один или несколько промежуточных этапов — обозначим их количество как N1. В свою очередь, продолжительность выполнения операции в функциональном устройстве может составлять один или несколько тактов — обозначим их число как N2. По завершении операции её результат может быть немедленно передан на вход другой операции, зависимой от этой, непосредственно перед началом её исполнения в функциональном устройстве. Непосредственно перед попаданием любой операции в функциональное устройство производится окончательная проверка готовности ожидаемых операндов. В случае их неготовности (например, из-за отсутствия считываемых данных в L1-кэше) операция помечается как недействительная, МОП этой операции не удаляется из очереди планировщика, и результаты её выполнения никуда не передаются.

    Рассмотрим  теперь следующий пример. Предположим, что некая операция поступает  в функциональное устройство (ФУ), и  результат её выполнения является операндом  другой (зависимой) операции. Для наиболее эффективного исполнения потока операций необходимо, чтобы эта зависимая  операция прошла диспетчеризацию через N2 тактов после первой и стартовала в функциональном устройстве тоже через N2 тактов после первой. В этом случае результаты первой операции будут готовы (на выходе из ФУ) как раз к тому моменту, когда вторая операция попадёт на вход в ФУ. Однако в силу того, что первая операция тоже могла зависеть от прихода каких-то других данных, вторая операция должна быть диспетчеризована не ранее, чем будет подтверждена готовность операндов для первой (чтобы гарантировать корректность её результатов, необходимых для исполнения второй операции). Так как между моментами диспетчеризации и проверки готовности (запуска) проходит N1 тактов, для соблюдения данного условия требуется выполнение неравенства N1<=N2. Например, в процессоре AMD K8 для операций ALU/AGU N1=N2=1, а для операций FPU N1=N2=2 (здесь указаны минимальные значения N2).

    В процессоре P-4 время выполнения самых  коротких операций составляет всего 0.5 такта (за счёт работы соответствующих  ФУ на удвоенной частоте). За такое  короткое время невозможно произвести все необходимые подготовительные действия перед запуском операции в ФУ. Поэтому неравенство N1<=N2 не выполняется, и диспетчеризация зависимой операции может быть проведена до подтверждения готовности операндов операции, от которой она зависит. Разумеется, перед попаданием в ФУ любая операция, не получившая операндов, будет помечена как недействительная. Однако подобный «холостой» запуск (с необходимостью повторного исполнения в будущем) будет произведён не только для первой операции, которая не успела своевременно получить свои операнды, но и для второй, которая от неё зависит (так как решение о её запуске уже принято), а также для всех последующих операций в «зависимой цепочке» — при условии, что они поступают в очередь планировщика плотным потоком, без достаточных временных интервалов.

  1. Intel Core (P8)
 

    Общая организация подсистемы внеочередного  исполнения операций и функциональных устройств в новом процессоре P8 напоминает организацию этой подсистемы в процессорах семейства P6/P6+ (P-III, P-M, P-M2) и представляет собой её дальнейшее развитие. Главное отличие от последних представителей старого семейства (P-M и P-M2) состоит в расширении всех трактов обработки МОПов с трёх до четырёх, удлинении очередей и буферов, увеличении числа портов запуска и функциональных устройств и в существенном повышении скорости работы функциональных устройств плавающей арифметики SSE, а также в реализации 64-битного режима EM64T (x86-64) для целочисленной и адресной арифметики.

    На  данный момент пока что нет достаточно полной информации о микроархитектуре процессора P8, поэтому рассмотрим работу подсистемы внеочередного исполнения кратко, делая основной упор на её отличия  от старой архитектуры.

    После выхода из декодера сформированные группы по четыре МОПа помещаются в буфер переупорядочения ROB, длина которого составляет (по некоторым данным) 96 элементов. Новая группа МОПов также копируется в очередь планировщика RS, из которой операции будут запускаться на исполнение. В процессоре P8 используется единая очередь планировщика размером в 32 элемента, общая для всех типов операций. МОПы выбираются на исполнение из этой очереди во внеочередном порядке, по мере готовности аргументов операций (Рис. 6).

    

    Рис.6

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

    К каждому из трёх первых портов подсоединены устройства, выполняющие операции целочисленной  арифметики и логики, а также некоторые  операции MMX и SSE. Самые простые операции могут исполняться в устройствах  на всех трёх портах, а операции сдвига и операции целочисленного сложения MMX и SSE — на двух портах. К указанным  портам подсоединены также специфические  функциональные устройства. На одном  из портов находится устройство для  выполнения операций перехода (включая  объединённые операции сравнения и  условного перехода), а также так  называемое устройство пересылок для  арифметики с плавающей точкой, на другом — устройство сложения с  плавающей точкой, и на третьем  — устройство умножения и деления  с плавающей точкой. Некоторые  менее частые арифметические и логические операции также исполняются в  специализированных функциональных устройствах  на соответствующих портах.

    Увеличение  числа универсальных устройств с двух до трёх (вместе с увеличением количества портов запуска) позволяет значительно повысить производительность процессора на целочисленных и логических операциях. В сочетании с выносом устройства для выполнения переходов на отдельный порт это позволяет выполнять операции SSE в полном темпе, по две упакованные арифметические операции за такт. При отсутствии дополнительного порта и устройств ALU функциональные устройства SSE простаивали бы в моменты запуска вспомогательных операций и операций перехода, и не достигался бы полный темп.

    В новом процессоре активно используется механизм «слияния микроопераций» (micro-ops fusion), когда для инструкций загрузки из памяти с последующим исполнением (Load-Op) порождается единый МОП, содержащий два элементарных действия. Разделение на эти элементарные действия происходит при их запуске на исполнение (диспетчеризации) из очереди планировщика. Аналогичный механизм реализован и для инструкций выгрузки в память, когда порождается единый МОП для операции вычисления адреса и осуществления записи. Данный механизм был введён в процессоре P-M и похож на аналогичный механизм в процессорах AMD K7/K8.

    Самой важной особенностью процессора P8 является реализация арифметики с плавающей  точкой в 128-битных устройствах SSE, работающих в полном темпе. Теперь в каждом такте  может быть выполнена одна упакованная  операция умножения, одна упакованная  операция сложения и одна более простая  упакованная операция. Таким образом, предельный темп выполнения арифметических операций FPU соответствует восьми 32-битным операциям за такт для упакованного режима SSE, четырём 64-битным операциям  за такт для упакованного режима SSE2, и двум операциям за такт для скалярных  режимов SSE (при чередовании умножения  и сложения). Для упакованных режимов  это вдвое превышает быстродействие конкурирующих процессоров архитектуры x86 (P-4 и K8) в пересчёте на такт, а  для скалярных — соответствует  процессору K8.

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

  1. AMD Athlon 64 / Opteron (K8)
 

    После выхода из декодера сформированные группы по три МОПа помещаются в буфер переупорядочения ROB, который может содержать до 24 групп (72 МОПа). Новая группа МОПов также копируется в очереди планировщика, из которых операции будут запускаться на исполнение. В процессоре K8 имеется две очереди (буфера) планировщика: для целочисленных/адресных операций (ALU/AGU), и для операций арифметики с плавающей точкой (FPU). МОПы выбираются на исполнение из этих очередей во внеочередном порядке, по мере готовности аргументов операций (Рис. 7).

    

    Рис.7

    Очередь (буфер) планировщика для целочисленных  и адресных операций состоит из трёх независимых очередей, по одной очереди  на каждую позицию МОПа в группе. Длина каждой очереди — 8 элементов. Элемент очереди может содержать 2 РОПа (редуцированные операции, микрооперации), на которые расщепляется МОП — один арифметический и один адресный. Простая целочисленная операция преобразуется только в арифметический РОП, операция типа Load-Op, Op-Store или Load-Op-Store — в арифметический и адресный РОПы, а операция загрузки (Load) или выгрузки (Store) — только в адресный РОП. Также выделяется элемент очереди для операции с плавающей точкой с загрузкой (Load) или выгрузкой (Store) — для неё тоже заполняется только адресный РОП.

    Каждая  из трёх очередей связана с двумя  отдельными функциональными устройствами, приписанными к этой очереди —  целочисленным (ALU) и адресным (AGU). По мере готовности операндов РОПы отсылаются на исполнение в соответствующее устройство. В каждом такте из каждой очереди может быть отправлен на исполнение один арифметический РОП и один адресный РОП (в общем случае из разных элементов очереди). После обработки адресного РОПа в AGU формируется запрос в устройство загрузки/выгрузки (Load/Store Unit) для последующего совершения операции доступа в память. В каждом такте может выполниться до двух операций 64-битной загрузки из L1-кэша либо одна загрузка и одна выгрузка.

    Таким образом, подсистема внеочередного  исполнения операций и набор функциональных устройств в процессоре AMD K8 организованы существенно несимметричным образом, с разделением на блок целочисленной/адресной арифметики ALU/AGU и блок арифметики с плавающей точкой FPU. Это отличает данный процессор от других, не имеющих такого явного разделения. В сочетании со «статическим» разбиением потока МОПов на группы по 3 элемента и с привязкой очередей и функциональных устройств ALU/AGU к позициям этих элементов, такая организация позволила упростить структуру процессора. В результате выделения обработки операций плавающей арифметики в отдельный блок сократилось число этапов конвейера целочисленной обработки, что критично для операций условного перехода (в случаях неправильного предсказания направления перехода). Обратной стороной такой организации является необходимость обеспечения избыточного количества идентичных универсальных функциональных устройств ALU/AGU, а также разнесения МОПов, ожидающих исполнения, на три короткие независимые очереди, что может привести к несбалансированной загрузке устройств и к снижению темпа исполнения операций.

Информация о работе Микропроцессорные системы