Архитектура параллельных вычислений

Автор работы: Пользователь скрыл имя, 25 Марта 2012 в 17:19, курсовая работа

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

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

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

Parallel programming architecture.docx

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

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

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

 

 

 

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

Показателем эффективности  работы конвейера является среднее  количество тактов на выполнение команды (CPI — Cycles Per Instruction). Чем меньше эта  величина, тем выше производительность процессора. Идеальной величиной  является 1, однако значение CPI может  быть и меньше единицы, если в одном  такте параллельно выполняются  несколько команд. Параллельное выполнение команд реализовано в суперскалярных процессорах и процессорах со сверхдлинным командным словом.

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

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

  • Конфликты по доступу к ресурсам. Возникают, если несколько команд одновременно обращаются к одному ресурсу. Это может быть регистр, оперативная память или что-нибудь еще. Эта ситуация аналогична структурным конфликтам. Снизить отрицательный эффект подобных ситуаций можно дублированием устройств.
  • Зависимость по управлению. У зависимости по управлению есть два аспекта. Первый — это проблемы, связанные с обработкой ветвлений. Второй связан с использованием команд переменной длины. В этом случае выборку следующей команды нельзя сделать, пока не завершено декодирование предыдущей команды. Таким образом, суперскалярная архитектура более всего подходит для RISC-процессоров с их фиксированным форматом и длиной команд.
  • Конфликты по данным. Причиной конфликтов по данным являются зависимости по данным между командами, когда очередная операция не может быть выполнена, если ей требуется результат предыдущей операции. Такая зависимость является свойством программы и не может быть исключена компилятором или с помощью каких-то аппаратных решений. Избежать простоев можно, загрузив узлы выполнением других команд, пока формируется результат предыдущей операции.

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

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

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

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

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

Почти все современные  микропроцессоры, включая Pentium, PowerPC, Alpha и SPARC — суперскалярные. Примером компьютера с суперскалярным процессором является IBM RISC/6000. При тактовой частоте 62,5 МГц  быстродействие системы на вычислительных тестах достигало 104 Мфлоп/с. (Мфлоп/с - "мегафлоп в секунду" единица  измерения быстродействия процессора, составляющая один миллион операций с плавающей точкой в секунду). Суперскалярный процессор не требует  специальных векторизующих компиляторов, хотя компилятор должен в этом случае учитывать особенности архитектуры.

 

2.6 Процессоры с сокращенным набором команд (RISC)

В основе RISC-архитектуры (RISC — Reduced Instruction Set Computer) процессора лежит  идея увеличения скорости его работы за счет упрощения набора команд. Противоположную  тенденцию представляют CISC-архитектуры, процессоры со сложным набором команд (CISC — Complete Instruction Set Computer). Основоположником архитектуры CISC является компания IBM, а  в настоящее время лидером  в данной области является Intel (процессоры Pentium). Идеи RISC-архитектуры использовались еще в компьютерах CDC6600 (разработчики — Крей, Торнтон и др.). Оба варианта относятся к противоположным  границам семантического разрыва — увеличивающегося разрыва между программированием на языках высокого уровня и программированием на уровне машинных команд. В рамках CISC-подхода набор команд включает команды, близкие к операторам языка высокого уровня. В рамках RISC-подхода набор команд упрощается и оптимизируется под реальные потребности пользовательских программ.

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

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

Несмотря на упомянутые преимущества RISC-архитектуры, нет простого и однозначного ответа на вопрос о том, что лучше  — RISC или CISC. Так, например, для RISC-архитектуры  характерны повышенные требования к  оперативной памяти. Примером CISC-процессора является процессор Pentium (количество команд более 200, длина команды 1—11 разрядов, имеется 8 регистров общего назначения), а в качестве примера RISC-процессора можно привести SunSPARC (количество команд около 50, длина команды 4 разряда, имеется 520 регистров общего назначения).

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

 

2.7 Процессоры со сверхдлинным командным словом

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

Альтернативой суперскалярным процессорам являются процессоры со сверхдлинным командным словом (VLIW - Very Large Instruction Word). Работа VLIW-процессора основана на выявлении параллелизма команд во время трансляции. Транслятор анализирует программу, определяя, какие операции могут выполняться  параллельно. Такие операции "упаковываются" в одну большую команду (рис. 17). После  того, как "большая" команда выбрана  из памяти, составляющие ее обычные команды выполняются параллельно. В этом случае решается проблема окна выполнения, поскольку транслятор анализирует всю программу в целом в поисках параллельных операций.

Рисунок 17

Схема VLIW-процессора приведена  на рис. 18.

В VLIW-процессорах количество функциональных узлов можно увеличивать, не усложняя остальную аппаратную часть, что приходится делать в RISC-процессорах.

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

Рисунок 18

Эффективность использования  данной архитектуры зависит от качества трансляторов.

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

 

2.8 Векторная обработка данных

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

Векторные команды:

  • загружают операнд из оперативной памяти в векторный регистр;
  • записывают операнд из регистра в память;
  • выполняют арифметические и логические операции над векторами;
  • выполняют другие операции над векторами и скалярами.

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

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

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

  • из памяти в память — в этом случае операнды извлекаются из оперативной памяти, загружаются в АЛУ и результат возвращается в оперативную память;
  • из регистра в регистр — операнды сначала загружаются в векторные регистры, затем операнд передается в АЛУ и результат возвращается в один из векторных регистров.

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

Информация о работе Архитектура параллельных вычислений