Процессор Intel

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

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

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

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

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

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

   Вторая схема ориентирована на то, что команды программы извлекаются из кэш-памяти команд. Каждая ячейка кэш-памяти имеет дополнительный разряд, который используется только для команд УП. В этот разряд записывается единица, если при последнем исполнении команды завершилась переходом. Если при предыдущим исполнении перехода не было, то в дополнительный разряд записывается ноль. Все последующие предсказания делаются на основе состояния этого разряда: при единичном значении разряда делается предсказание о переходе, при нулевом – об отсутствии перехода. При записи команды УП в кэш дополнительный разряд устанавливается в единицу, т.е. при первом исполнении всегда предсказывается переход. После выполнения команды состояние разряда корректируется: если переход имел место, в него записывается единица, в противном случае – ноль. Точность предсказания лежит в диапазоне 76% - 99%. Недостаток схемы – дополнительные затраты времени на обновление состояния доп. разряда в кэш-памяти команд.

    В третьей схеме РНТ состоит из одноразрядных элементов и носит название таблицы истории переходов – ВНТ, от Branch History Table.

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

По k младшим разрядам СК идентифицируется элемент ВНТ, по состоянию которого делается предсказание, совпадающее с исходом предыдущего выполнения команды.

   Такая  схема предсказания была реализована  в микропроцессорах Alpha 21064 и AMD K5. Средняя точность предсказания в однобитовых бимодальных схемах не превышает 78%.

    Точность предсказания перехода существенно повышается с увеличением разрядности ВНТ. Обычно используются двухразрядные элементы ВНТ, реализующие алгоритм Смита, в основе которого лежит двухразрядный счетчик, работающий в режиме насыщения. Каждый такой счетчик отображает историю переходов одной команды УП и адресуется k младшими разрядами СК. Для обозначения таблицы истории переходов используются три буквы DHT от англ. Decode History Table.

Предсказание  перехода зависит от значения старшего разряда двухбитового счетчика, как показано ниже:

  Таким образом, при нулевом значении старшего разряда счетчика предсказывается отсутствие перехода, а при единичном – предсказывается переход.

В DHT поиск производится только для команд УП, т.е. после того, как выяснится принадлежность команды к командам УП, что становится известным на этапе декодирования. При работе с обычной ВНТ обращение к таблице производится для всех команд, вне зависимости от принадлежности команд к командам УП. Реализуется DHT на основе адресного ЗУ с произвольным доступом.  

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

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

      Схема Смита позволяет ускорить  поиск нужного счетчика и устраняет эффект наложения, но связана со значительными аппаратными затратами, т.к. использует дорогую ассоциативную кэш-память. Средняя точность предсказания на основе схемы Смита примерно равна 92,6%. Схема Смита широко используется для предсказания переходом. На ее основе построены схемы переходов в процессорах Alpha 21164, Power PC 620, Ultra SPAPC и других. Обычно в одноуровневых схемах предсказания таблицы DHT или BHT совмещены с буфером адреса перехода ВТВ, что позволяет сэкономить на вычислении исполнительных адресов точек перехода.

Перед выборкой очередной команды ее адрес, который находится в СК, сравнивается с адресами команд в ВТВ, т.е. с тегами строк. Для команд, найденных в ВНТ, исполнительный адрес точки перехода не вычисляется, выбирается из ВНТ. При кэш-промахе в ВНТ заносится новая строка, если команда УП завершилась переходом. При замещении строк используется алгоритм LRU 

Двухуровневые схемы предсказания переходов

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

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

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

  В такой  схеме выбор счетчика для предсказания зависит от двух источников: от адреса команды УП, для которой делается предсказание и от шаблона, который отражает историю переходов.  
 

Гибридные схемы предсказания переходов

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

    Гибридная схема предсказания переходов, предложенная Макфарлингом, содержит два элементарных предиктора, отличающихся по своим характеристикам и работающих независимо друг от друга. Эти предикторы имеют разные размеры таблиц предыстории и разное время “разогрева”. 

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

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

Обновление таблиц истории в каждом из предикторов производится обычным образом.

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

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

Суперконвейерные  процессоры

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

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

 
 

    Таким  образом, девять команд на суперконвейере выполняются за десять тактов, тогда как на стандартном конвейере за 14 тактов (рис.1). Рост производительности на суперконвейере достигается за счет того, что в течении одного такта выполняется две команды.

     Критерием  для причисления процессора к  суперконвейерному служит число ступеней в конвейере команд. К суперконвейерным относятся процессоры, в которых ступеней больше шести. Первым серийным суперконвейерным процессором считается MIPS R4000, в котором конвейер команд включал восемь ступеней. Количество ступеней в микропроцессорах Pentium фирмы Intel равно десяти для Pentium III и 20-ти Pentium IV.

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

Суперскалярные процессоры

    Скалярными называются вычисления, операндами в которых выступают одиночные слова. Если в обработке данных участвуют многокомпонентные операнды типа векторов или матриц, компоненты которых обрабатываются одновременно, то говорят о векторных или матричных процессорах.

    Суперскалярным называется процессор, который одновременно выполняет более одной скалярной команды. Это достигается за счет включения в состав процессора нескольких самостоятельных функциональных блоков (АЛУ), каждый из которых отвечает за свой класс операций и может присутствовать в процессоре в нескольких экземплярах. Например, микропроцессор Pentium III содержит по два блока целочисленной арифметики и арифметики с плавающей точкой, а Pentium IV – по три таких блока. Структура типичного суперскалярного процессора имеет следующий вид:

  

      Процессор включает в себя шесть блоков: выборки команд, декодирования команд, диспетчеризации команд, распределения команд по функциональным блокам (АЛУ), блок исполнения команд и блок обновления состояния.

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

     Блок декодирования дешифрирует код операции, извлеченной из кэш-памяти команд. В некоторых суперскалярных процессорах, например в микропроцессорах фирмы Intel, блоки выборки и декодирования команд совмещены.

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

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