Параллелизм на уровне команд 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Параллелизм на уровне команд



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

Конвейеры

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

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

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

Рассмотрим конвейер из 5 блоков (рис.6.5).

С1- вызывает команду из памяти и помещает её в буфер, где она хранится до тех пор пока не будет нужна; 

С2- декодирует эту команду, определяя её тип и тип операндов, над которыми она будет производить определённые действия; 

С3- определяет местонахождение операндов и вызывает их или из регистров или из памяти;

С4- выполняет команду;

С5- записывает результат обработки в нужный регистр.

Действие конвейера во времени (рис.6.6):

Цикл 1: С1 вызывает 1-ую команду из памяти; 

Цикл 2: С2 декодирует команду 1,С1 вызывает 2-ую команду из памяти;       

Цикл 3: С3 вызывает операнды для команды 1, С2 декодирует команду 2,С1 вызывает 3-ью команду из памяти; 

Цикл 4: С4 выполняет команду 1, С3 вызывает операнды для команды 2, С2 декодирует команду 3,С1 вызывает 4-ую команду из памяти;  

Цикл 5: С5 записывает результат выполнения команды 1 обратно в регистр, другие стадии работают над следующими командами (С4 выполняет команду 2, С3 вызывает операнды для команды 3, С2 декодирует команду 4,С1 вызывает 5-ую команду из памяти).

Для повышения эффективности работы конвейера возможно разбиением каждой ступени конвейера на n «подступеней» при одновременном повышении тактовой частоте внутри конвейера также в n раз, либо включением в состав процессора n конвейеров, работающих с перекрытием.

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

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

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

                                                                                                                            

  6.2. 2 Суперскалярная архитектура.  

Конвейеры в процессорах компании Intel появились, только начиная с 486-ой модели, содержавшей один конвейер. Pentium содержит 2 конвейера из 5 стадий (рис.6.7), причём главный конвейер U-конвейер может выполнять произвольные команды, второй- V-конвейер может выполнять только простые команды и одну команду с плавающей точкой (FXCH).

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

Имеются сложные правила определения совместимости пар команд. Pentium содержит особые компиляторы, которые объединяют совместимые команды в пары и могут порождать программы, выполняющиеся быстрее чем в предыдущих версиях процессоров.                 

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

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

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

Суперскалярные процессоры конца 90-х годов могли исполнять до 4-6 инструкций за один машинный цикл. На практике они выполняют в среднем 1,5 инструкции за такт. «Продвинутые» суперскалярные процессоры (Advanced superscalar) смогут выполнять от 16 до 32 инструкций за такт. Чем это обернется на практике, пока сказать трудно, но и для «суперскалярной» архитектуры существенным ограничением является поток обрабатываемых данных.

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

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

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 132; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.115.120 (0.005 с.)