Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд

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

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

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

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

В результате гонки наращивания производительности возникает множество проблем:

· перегрев в сверхплотной упаковке, вызванный существенно меньшей площадью теплоотдачи;

· снижение надежности транзисторов из-за уменьшения их размеров и утоньшения изолирующего слоя. Данную проблему можно решить снижением управляющего напряжения, но лишь до определенных пределов;

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

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

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

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

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

Конвейеры

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

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

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

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

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

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

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

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

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

Блок выборки операндов
Блок выполнения команд
Блок декодирования
Блок возврата  
Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru
Блок выборки команд
Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru

Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru

Действие конвейера во времени:

Цикл 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-ую команду из памяти).

1 2 3 4 5 6 7 8 9 Время à Состояние каждой стадии в зависимости от количества пройденных циклов. Показано 9 циклов
Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru

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

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

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

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

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

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

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

Блок декодирования
Блок возврата  
Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru
Блок выборки операндов
Блок выполнения команд
Блок декодирования
Блок возврата  
Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru
С1 С2 С3 С4 С5
Двойной конвейер из пяти стадий с общим отделом вызова команд
    Блок выборки команд
Блок выборки операндов
Блок выполнения команд
Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru Имеются сложные правила определения совместимости пар команд. Pentium содержит особые компиляторы, которые объединяют совместимые команды в пары и могут порождать программы, выполняющиеся быстрее чем в предыдущих версиях процессоров.

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

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

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

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

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

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

С1 С2 С3
С5
Блок возврата  
Суперскалярный процессор с пятью функциональными блоками
С4 Параллелизм и конвейеризация вычислений. Параллелизм на уровне команд - student2.ru 1ю04

Наши рекомендации