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

Автор: Пользователь скрыл имя, 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 Кб (Скачать)

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

    Длина конвейера непредсказанного перехода не всегда указывается в документации и известна весьма приблизительно. Её довольно трудно замерить, так как современные предсказатели переходов работают достаточно эффективно и не позволяют добиться гарантированной доли неправильных предсказаний в тестах. Можно дать следующие примерные оценки длины конвейера: P-III — 11, P-M — 12, P-4 — 20, P-4E — 30, P8 — 14, K8 — 11, PPC970 — 13. Нужно учесть, что в процессорах P-4 и P-4E длина такта меньше, чем в других процессорах, и потеря на непредсказанный переход, выраженная в «нормализованных» тактах с учётом соотношения 1:1.4, составит соответственно 15 и 22.

  1. Выборка и декодирование  инструкций
 

    Большинство процессоров, рассматриваемых в  данной статье (за исключением RISC-процессора IBM PPC970) обрабатывают и исполняют  инструкции архитектуры x86 (называемой также IA-32) и расширенной архитектуры x86-64 (называемой также AMD64 либо EM64T). Принципиальных различий по структуре машинной инструкции между архитектурами x86 и x86-64 нет, поэтому  по тексту будем везде использовать общее наименование «x86-инструкции». Эти инструкции имеют очень сложный  и нерегулярный формат и могут  состоять из нескольких составных частей: одного или нескольких однобайтных  префиксов, кода операции длиной от 1 до 3 байтов, описателя типа адресации  операндов (ModR/M), указателя регистров базы, индекса и масштаба индексирования (SIB), поля смещения адреса и непосредственного операнда. Длина x86-инструкции может варьироваться от 1 до 15 байтов.

    Для суперскалярной обработки необходимо в каждом такте извлекать из входного потока несколько инструкций переменной длины и отправлять каждую из них в отдельный блок декодирования для преобразования в микрооперации (МОПы). Эта задача представляется очень трудоёмкой, поэтому необходимо применение специальных средств, которые позволили бы её облегчить. В разных процессорах x86 используются различные приёмы и механизмы, обеспечивающие бесперебойную обработку инструкций. Лишь для процессора PPC970 не требуется никаких ухищрений, так как в RISC-архитектуре IBM Power машинные инструкции имеют фиксированную длину (4 байта) и регулярный формат. По типу используемых механизмов рассматриваемые процессоры можно разбить на четыре класса:

  1. PPC970: Не используется никакой механизм, так как инструкции имеют фиксированную длину и формат.
  2. P-III, P8: После выборки из I-кэша производится разметка инструкций (определение их границ и положения кода операции) в устройстве, называемом определителем длины инструкций (Instruction Length Decoder, ILD).
  3. K8: Перед помещением блоков инструкций в I-кэш производится предварительное декодирование (предекодирование) с аналогичной разметкой, информация о разметке записывается в дополнительные биты при каждом байте в I-кэше.
  4. P-4: Перед помещением в кэш производится полное декодирование инструкций, сформированные МОПы записываются в этот кэш (Т-кэш) в виде трасс.

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

  1. Intel Pentium III, Pentium M и Core Duo
 

    После выхода из декодера сформированные группы по три МОПа помещаются в буфер переупорядочения ROB, длина которого составляет 40 элементов (начиная с процессора P-M размер буфера ROB, по некоторым данным, увеличен до 60-80 элементов). Новая группа МОПов также копируется в очередь планировщика RS, из которой операции будут запускаться на исполнение. В процессоре P-III используется единая очередь планировщика размером в 20 элементов (начиная с процессоры P-M — 24 элемента), общая для всех типов операций. МОПы выбираются на исполнение из этой очереди во внеочередном порядке, по мере готовности аргументов операций (Рис. 4).

    

    Рис.4

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

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

    Начиная с процессора P-M, операции умножения  и сложения с плавающей точкой x87 разнесены по разным портам (по аналогии с операциями SSE): умножение осталось на порту 0, а сложение переведено на порт 1. Также добавлены операции SSE2 с аналогичным распределением между портами.

    К портам 2 и 3 подсоединены устройства вычисления адресов для операций загрузки из памяти и выгрузки в память, а  к порту 4 — собственно устройство выгрузки, готовящее данные для отсылки  в память.

    В процессоре P-III при декодировании  инструкций загрузки из памяти с последующим  исполнением (Load-Op) порождаются отдельные МОПы для загрузки и для выполнения. Оба этих МОПа помещаются в буфер переупорядочения ROB и в очередь планировщика RS и обслуживаются по отдельности. Начиная с процессора P-M, в декодере реализован механизм «слияния микроопераций» (micro-ops fusion), когда порождается единый МОП, содержащий два элементарных действия. Разделение на эти элементарные действия, или микрооперации, происходит при их запуске на исполнение (диспетчеризации) из очереди планировщика. Сначала запускается микрооперация загрузки (через порт 2), а затем, в преддверии готовности операнда — функциональная микрооперация (через порт 0 или 1).

    Аналогично  операциям загрузки, для инструкций выгрузки в память в процессоре P-III также порождаются два отдельных  МОПа: для вычисления адреса, и для осуществления записи. Эти МОПы запускаются (диспетчеризуются) по отдельности, соответственно через порты 3 и 4. Начиная с процессора P-M, для инструкций выгрузки порождается единый МОП, который разделяется на микрооперации при запуске на исполнение.

    Механизм  слияния микроопераций позволяет  экономить ресурсы буферов внеочередного  исполнения (ROB и RS), имеющих ограниченный размер, и увеличить эффективную  пропускную способность трактов  процессора. Этот механизм слияния  похож на аналогичный механизм в  процессорах AMD K7/K8, когда любой МОП  может содержать в себе как  операцию загрузки из памяти (выгрузки в память), так и функциональное действие.

    Через каждый из пяти портов может отсылаться на исполнение по одной операции за такт. Таким образом, очередь планировщика представляет собой полностью ассоциативный  буфер с довольно сложной организацией. В каждом такте может производиться  поиск и извлечение до пяти элементов (МОПов) из этого буфера, и одновременно в него может быть помещено три новых МОПа. Для отправки на исполнение в буфере ищутся операции, аргументы которых уже вычислены либо вычисляются и будут готовы к моменту попадания в функциональное устройство. Если для какого-то порта найдено несколько таких готовых операций, среди них выбирается одна по алгоритму «псевдо-FIFO» (First In, First Out). Этот алгоритм отдаёт предпочтение самым старым операциям, однако выполняет поиск не совсем строго и точно, что связано со сложностью реализации алгоритма с точным соблюдением старшинства. В результате может оказаться, что 100-процентная скорость выполнения потока инструкций не достигается даже при оптимальном потактовом планировании машинных инструкций программистом или транслятором из-за того, что не в каждом такте через порты 0 и 1 запускаются две операции.

    Механизм  внеочередного исполнения операций с единой очередью планировщика был  разработан для первого процессора семейства P6 в 1995 году. Другие семейства  процессоров с внеочередным исполнением (AMD K7/K8, Intel P-4, IBM PPC970) используют раздельные очереди планировщиков для различных групп функциональных устройств. В результате удаётся, как правило, избегать необходимости выбора сразу нескольких операций из очереди в одном такте. Как следствие, при оптимальном планировании машинных инструкций для всех этих процессоров удаётся добиться предельной скорости выполнения операций.

    Латентность большинства операций целочисленной  арифметики составляет 1 такт, а их суммарный  темп исполнения — 2 операции за такт, по одной в устройствах, подсоединённых к портам 0 и 1. Некоторые операции (сложения/вычитания и копирования, а также логические) могут выполняться  в устройствах на обоих портах. Также в каждом такте может  быть произведено одно считывание из L1-кэша и одна запись в L1-кэш (64-разрядные).

    Операции  арифметики с плавающей точкой x87 выполняются в соответствующем  устройстве на порту 0 (начиная с  процессора P-M — в раздельных устройствах  на портах 0 и 1). Операции сложения FADD могут  стартовать в каждом такте, а операции умножения FMUL — с интервалом в 2 такта. Чередуя сложение и умножение, можно  получить суммарный темп выполнения, равный одной операции за такт. Латентность  операции сложения составляет 3 такта, умножения — 5 тактов.

    Операции  перестановки регистров x87 в стеке (FXCH) отрабатывают на стадии переименования регистров и поэтому не попадают в очереди планировщика и в  функциональные устройства. Темп обработки  таких операций равен трём за такт.

    Скалярные операции SSE исполняются в полном темпе, упакованные операции — в  половинном. Это связано с тем, что каждая упакованная инструкция SSE преобразуется в два МОПа. С учётом чередования сложения и умножения, суммарный темп выполнения составляет два МОПа за такт, что соответствует четырём 32-битным арифметическим операциям для упакованного режима. Латентность операций сложения и умножения SSE составляют соответственно 3 и 4 такта.

    Операции  сложения в 64-битном режиме SSE2 (начиная  с процессора P-M) также выполняются  в полном темпе с латентностью 3 такта, а операции умножения —  в половинном темпе с латентностью 5 тактов. Таким образом, суммарный  темп выполнения таких операций при  чередовании сложения и умножения  составляет один МОП за такт. Это  в два раза ниже, чем в конкурирующих  процессорах архитектуры x86 (P-4 и K8), и в четыре раза ниже, чем в  процессоре PPC970 и новом процессоре Intel Core (P8). На практике на процессоре P-III удаётся добиться уровня в 0.9-0.95 арифметической операции SSE2 за такт.

    Таким образом, в процессоре P-III имеется  ряд недостатков, ограничивающих его  производительность. Главным из них  является слабость блока плавающей  арифметики при работе в 64-битном и 80-битном режимах (SSE2 и x87). Другим недостатком  являются ограничения в планировщике, которые не позволяют достичь  полной скорости работы функциональных устройств. Некоторые ограничения  микроархитектуры преодолёны в процессорах P-M и P-M2 (Core Duo).

  1. Intel Pentium 4
 

    После считывания из T-кэша группы по три МОПа помещаются в буфер переупорядочения ROB, длина которого составляет 126 элементов. Новая группа МОПов также копируется в очереди планировщика для последующей отправки на исполнение.

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

    

    Рис.5

    Всего таких очередей пять: две очереди  для операций, запускаемых в удвоенном  темпе (Fast0 и Fast1), две очереди для  операций, запускаемых в обычном  темпе (Slow0 и Slow1), и очередь для  операций загрузки и выгрузки. Первые четыре очереди соединены с предварительной (амортизирующей) очередью для обычных  операций, последняя — с предварительной очередью для операций обращения к памяти.

    По  мере готовности операндов МОПы из этих очередей отправляются на исполнение в соответствующие функциональные устройства. Отправка операций происходит через так называемые порты запуска. К порту 0 подсоединены очереди Fast0 и Slow0, к порту 1 — очереди Fast1 и Slow1, к портам 2 и 3 — очередь для операций загрузки и выгрузки. Через порты 0 и 1 могут запускаться на исполнение по две операции в каждом такте (в начале такта — из очереди Slow либо Fast, в середине такта — только из очереди Fast). Таким образом, всего в каждом такте на исполнение может быть отправлено до шести операций. Это вдвое превышает темп поступления операций из T-кэша и темп отставки операций (по три МОПа за такт).

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