Процессор Intel

Автор работы: Пользователь скрыл имя, 23 Октября 2011 в 17:51, лекция

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

Высокопроизводительный 32-х разрядный микропроцессор 80i86 ориентирован на эффективное выполнение программ в среде многозадачных ОС (типа Windows). Микропроцессор имеет 32-разрядные регистры и 32-х разрядные раздельные шины адреса и данных.

Содержимое работы - 1 файл

Архитектура ЭВМ.doc

— 1.20 Мб (Скачать файл)

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

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

    Поскольку  суперскалярность предполагает одновременную работу нескольких АЛУ, то для загрузки этих АЛУ процессор должен иметь в своем составе несколько конвейеров. Например, микропроцессоры Intel фирмы Pentium имеют два конвейера, каждый со своим АЛУ. В таком конвейере в каждом цикле необходимо производить выборку из памяти более чем одной команды. Поэтому память ЭВМ должна допускать одновременное чтение нескольких команд и операндов, что обеспечивается за счет ее многомодульного построения.

   Блоки  исполнения команд кроме АЛУ  могут содержать специализированные  устройства, позволяющие быстро  выполнять такие операции как  “Чтение”, “Запись”, “Переход”. Подобная форма суперскалярного процессора использовалась в микропроцессорах Pentium II и Pentium III фирмы Intel. В общем, применение суперскалярного процессора позволяет повысить производительность ЭВМ в 2–8 раз.

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

    В  таком конвейере блок выборки  (ВК) читает из памяти более  одной команды и передает прочитанные команды через ступени декодирования и вычисление адресов (ВА) в блок выборки операндов (ВО). После выборки операндов команды распределяются по соответствующим исполнительным блокам. Исполнительные блоки реализуют свои наборы команд.  
 

Особенности реализации суперскалярных процессоров

    В суперскалярных процессорах  одновременная работа нескольких  конвейеров становится источником дополнительных неувязок и проблем. К таким проблемам относятся проблемы поступления команд на исполнение и проблемы их завершения. Проблемы с поступлением команд на исполнение возникают тогда, когда нарушается последовательность выдачи команд, заданная программой, т.е. следующая команда может поступить в блок исполнения раньше предшествующей команды. Такая ситуация называется неупорядоченная выдача команд. Аналогичная проблема возникает при завершении команд. Нарушение порядка завершения команд называется неупорядоченное завершение команд.

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

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

   Стратегии выдачи и завершения  команд можно разделить на  следующие категории:

  1. упорядоченная выдача и упорядоченное завершение;
  2. упорядоченная выдача и неупорядоченное завершение;
  3. неупорядоченная выдача и неупорядоченное завершение.

Рассмотрим  перечисленные стратегии на примере  суперскалярного процессора с двумя конвейерами, который способен одновременно выбирать и декодировать две команды. Пусть также в состав процессора входят три отдельных функциональных блока (ФБ) и два устройства записи результата. Пусть процессор выполняет участок программы из шести команд, которые обозначим числами с 11 по 16, а на обработку этих команд существуют следующие ограничения:

    - 11-ая команда требует для своего выполнения двух циклов процессора;

    - 13-ая и 14-ая команды конфликтуют между собой за право обладания одним и тем же ФБ3;

    - 15-ая команда зависит от результата, который определяет 14-ая команда;

    - 15-ая  и 16-ая команды конфликтуют  за право обладания одним и  тем же      ФБ2.    

    Упорядоченная выдача и упорядоченное  завершение

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

        В первом такте процессора производится одновременная выборка и декодирование двух команд 11 и 12, а во втором такте эти команды передаются на исполнение в блоки ФБ1 и ФБ2 соответственно. Во втором такте также производится выборка и декодирование следующих двух команд 13 и 14.  

        Поскольку  13 и 14 команды не могут поступить на исполнение, пока не будут завершены предшествующие им команды, а команда 11 требует двух тактов, то эти команды поступают на исполнение в ФБ3 соответственно в 4-ом и 5-ом тактах. Аналогично, команды 15 и 16 поступают на исполнение в ФБ2 соответственно в 6-ом и 7-ом тактах.

        В  рассматриваемом примере время  выполнения шести команд составляет  восемь тактов.

    Упорядоченная выдача и неупорядоченное  завершение

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

      В приведенной  временной диаграмме время выполнения  шести команд сократилось на один такт до семи циклов процессора. Здесь команда 13 поступила на исполнение в ФБ3 в третьем такте, поскольку она не зависит от результатов выполнения 11-ой команды. 15-ая команда не может поступить на исполнение раньше завершения 14 команды, поскольку зависит от результатов вычислений 14-ой команды. В результате завершение команд оказалось неупорядоченным, и 12-ая команда записала свой результат раньше предшествующей ей 11-ой команды.

    Неупорядоченная выдача и неупорядоченное  завершение

        Неупорядоченная выдача разрешает процессору нарушать предписанный программой порядок выдачи на исполнение. Это достигается за счет введения в процессор буферной памяти, которая называется окном команд. Каждая декодированная команда сначала помещается в окно команд. Процессор может продолжить выборку и декодирование новых команд вплоть до полного заполнения буфера. Выборка команд из буфера на исполнение определяется не последовательностью их поступления, а степенью готовности. Поэтому любая команда, для которой известны все операнды, немедленно выдается из буфера на исполнение, если требуемый функциональный блок (ФБ) свободен. Естественно, зависимые друг от друга команды могут выполняться только в порядке, предписанным программой. Например, в рассматриваемой диаграмме 15-ая команда может выполняться после 14-ой, а 16-ая может выполняться раньше 15-ой, т.к. от нее не зависит. Более раннее исполнение 16-ой команды приводит к уменьшению времени исполнения 6-ти команд еще на один такт, до 6-ти циклов процессора, что наглядно видно из приведенной временной диаграммы:

       

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

    Аппаратная  поддержка суперскалярных операций

         Для эффективной реализации стратегии с неупорядоченной выдачей и неупорядоченным завершением команд необходимо:

  1. устранить зависимость команд по данным (зависимости типа ЧПЗ и ЗПЗ);
  2. сохранить такой порядок выполнения команд, при котором общий итог вычислений совпал бы с результатом, полученном при строгом соблюдении программной последовательности. Эта проблема решается за счет переупорядочивания команд.

      Устранить  зависимость команд по данным  это значит исключить использование в качестве операнда устаревшего значения регистра и не допустить, чтобы очередная команда программы занесла свой результат в регистр раньше, чем это сделала предшествующая команда. Для устранения зависимости по данным используется прием, который называется переименование регистров.  
     

    Переименование  регистров

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

         Переименование регистров с использованием  АРФ происходит следующим образом:

       Пусть  выполняется команда, предусматривающая  запись результата в регистр Ri . Тогда для временного хранения результата выделяется свободный физический регистр Rj , входящий в состав АРФ. Во всех последующих командах, в которых упоминается операнд, находящийся в регистре R, имя регистра Ri заменяется на имя Rj. Для того, чтобы процессор знал, где находится тот или иной операнд, используется таблица подстановки, в которой номера логических регистров динамически отображаются на номера физических регистров. Таким образом, при записи очередного результата в физический регистр Rj , имя логического регистра Ri , которое используется в команде, запоминается в таблице подстановки, где находится и имя физического регистра. Каждый регистр в АРФ имеет дополнительный разряд “Значение достоверно” (ЗD). Единичное значение ЗD свидетельствует о том, что в регистре содержится правильное значение операнда, которое может использоваться в последующих вычислениях.

          В некоторых ЭВМ вместо дополнительных  разрядов, входящих в АРФ,

    Используется  дополнительная память, которая называется буфер переименования (БУП). БУП представляет собой ассоциативную память объемом в N слов. Каждая ячейка БУП идентифицируется своим порядковым номером от 0 до N-1.

Информация о работе Процессор Intel