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

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

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

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

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

Parallel programming architecture.docx

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

 

2.2 Основные типы архитектур высокопроизводительных вычислительных систем

SIMD-архитектуры с разделяемой  памятью

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

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

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

SIMD-машины с распределенной  памятью

SIMD-машины с распределенной памятью  называют также матричными процессорами. В системах с такой архитектурой все процессоры в один и тот же момент времени выполняют одну команду. Имеется управляющий процессор, который передает команды процессорам массива. Обычно есть и "фронтальный" (front-end) процессор, которому отводится функция связи с пользователями, а также выполнение тех операций, которые не могут быть выполнены массивом процессоров (например, операции ввода/вывода). Коммуникационная сеть в таких системах имеет топологию двумерной решетки или, по крайней мере, включает ее в качестве составной части подсистем коммуникации. С помощью логических условий некоторые процессоры можно исключать из процесса обработки данных, переводя их в режим ожидания.

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

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

MIMD-машины с разделяемой  памятью

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

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

MIMD-машины с распределенной  памятью

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

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

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

У "толстого дерева" пропускная способность у "корня" выше, чем  у "листьев".

Достаточно часто используются коммуникационные матрицы, однокаскад-ные для систем с небольшим числом процессоров (порядка 64) и многокаскадные для систем с большим числом процессоров.

Процессоры используются любые, обычно это RISC-процессоры и векторные процессоры. Часто применяется также специальный  коммуникационный процессор.

Рисунок 15

 

2.3 Основные элементы архитектуры высокопроизводительных вычислительных систем

Архитектура традиционных последовательных компьютеров основана на идеях Джона  фон Неймана и включает в себя центральный процессор, оперативную  память и устройства ввода/вывода. Последовательность команд применяется к последовательности данных. Скорость работы такого компьютера определяется быстродействием его  центрального процессора и временем доступа к оперативной памяти. Быстродействие центрального процессора может быть увеличено за счет увеличения тактовой частоты, величина которой  зависит от плотности элементов  в интегральной схеме, способа их "упаковки" и быстродействия микросхем  оперативной памяти. И, тем не менее, традиционные однопроцессорные системы  не могут обеспечить достаточное  быстродействие для решения сложных  задач. Для моделирования сложных  систем в физике, экономике, биологии, технике, для обработки больших  объемов информации требуется выполнение значительного объема вычислений.

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

  • конвейерную обработку данных и команд;
  • использование процессоров с сокращенным набором команд (RISC-процессоров). В RISC-процессорах большая часть команд выполняется за 1—2 такта;
  • использование суперскалярных процессоров;
  • векторную обработку данных;
  • использование процессоров со сверхдлинным командным словом;
  • использование многопроцессорных конфигураций.

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

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

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

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

 

2.4 Конвейеры

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

Для эффективной реализации конвейера должны выполняться следующие  условия:

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

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

Теоретически, максимально  достижимое увеличение быстродействия, которое можно получить с помощью  конвейера данных, определяется формулой ,

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

Цикл выполнения команды  состоит из нескольких шагов:

1. Выборка команды.

2. Декодирование команды,  вычисление адреса операнда и  его выборка.

3. Выполнение команды.

4. Обращение к памяти.

5. Запись результата в  память.

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

Рисунок 16

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

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

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

Принято выделять три типа конфликтов:

  • структурные конфликты;
  • конфликты по данным;
  • конфликты по управлению.

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

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