Автор работы: Пользователь скрыл имя, 25 Марта 2012 в 17:19, курсовая работа
Идея параллельной обработки данных не нова. Можно считать, что она возникла еще на заре человеческой цивилизации, когда оказалось, что племя может успешно бороться за выживание, если каждый его член выполняет свою часть общей работы.
В ближайшее время под эффективным использованием аппаратных средств компьютера будут пониматься применение параллельных алгоритмов. Это связано с замедлением темпов роста тактовой частоты микропроцессоров и быстрым распространением многоядерных микропроцессоров.
2.2 Основные типы архитектур высокопроизводительных вычислительных систем
SIMD-архитектуры с
SIMD-архитектуры с
Современные векторные процессоры используют векторные регистры, а не прямое обращение к памяти. Разница в быстродействии небольшая, но векторные регистры обеспечивают большую гибкость программирования. Если отношение числа арифметических операций к числу операций обращения к памяти мало, потери производительности будут большими, вследствие относительно низкой скорости обмена с памятью. Бороться с потерями такого рода можно, наращивая пропускную способность каналов доступа к памяти, но это сравнительно дорогой способ, поэтому обычно используются другие, компромиссные способы.
Устройство векторных узлов
может варьироваться в широких
пределах. Каждый узел обычно содержит
несколько векторных
SIMD-машины с распределенной памятью
SIMD-машины с распределенной
Одной из проблем, связанных с работой систем с распределенной памятью, является обработка ситуаций, когда данные, необходимые для продолжения работы определенного процессора, находятся в локальной памяти другого процессора. Выборка необходимых операндов и их пересылка по сети требует значительного времени, поэтому SIMD-машины с распределенной памятью часто специализированы для решения вполне определенных задач -в этом случае можно добиться наиболее полного использования присущего задаче параллелизма. Имеются специализированные системы для расчетов методом Монте-Карло (таких, где не требуется большой обмен данными между процессорами), обработки изображений и сигналов и т. д.
Управляющий процессор в рассматриваемых
системах должен не только формировать
поток команд и направлять его
процессорам массива, но и решать,
какие операции следует "поручить"
фронтальному процессору и связанными
с ним периферийными
MIMD-машины с разделяемой памятью
Основной проблемой в
Тип соединения важен и для синхронизации
выполнения задач на разных процессорах.
Большинство векторных
MIMD-машины с распределенной памятью
Это наиболее быстро растущий класс высокопроизводительных компьютеров. Программирование для таких систем сложнее, чем для MIMD-машин с разделяемой памятью. В матричных процессорах основной структурой данных являются массивы, которые хорошо отображаются на структуру машины. В этом случае распределение данных является "прозрачным" для программиста и в значительной степени автоматизировано системным программным обеспечением. В системах с распределенной памятью, напротив, программист сам должен позаботиться о распределении данных между процессорами и обмене данными между ними. Решение проблемы декомпозиции данных и задачи, разработка эффективного параллельного алгоритма часто оказываются непростым делом.
Значительным преимуществом
В MIMD-машинах с распределенной памятью часто используется топология "гиперкуб". Теоретически, в сетях с топологией гиперкуба можно имитировать другие топологии, такие как "дерево", "кольцо", "решетка" и др. Другой эффективной топологией соединения является "толстое дерево". Простое дерево имеет тот. существенный недостаток, что вблизи его "корня", где пропускная способность относительно невелика, увеличивается концентрация циркулирующих сообщений. В топологии "толстое дерево" используется дублирование связей с высокими уровнями дерева. Пример такой структуры приведен на рис. 15.
У "толстого дерева" пропускная способность у "корня" выше, чем у "листьев".
Достаточно часто используются коммуникационные матрицы, однокаскад-ные для систем с небольшим числом процессоров (порядка 64) и многокаскадные для систем с большим числом процессоров.
Процессоры используются любые, обычно
это RISC-процессоры и векторные процессоры.
Часто применяется также
Рисунок 15
2.3 Основные элементы архитектуры высокопроизводительных вычислительных систем
Архитектура традиционных последовательных
компьютеров основана на идеях Джона
фон Неймана и включает в себя
центральный процессор, оперативную
память и устройства ввода/вывода. Последовательность
команд применяется к
Другие методы повышения быстродействия основаны на расширениях традиционной фон-неймановской архитектуры, включающих:
В этом разделе мы кратко рассмотрим реализацию этих расширений, а также методы и типы межпроцессорных коммуникаций, особенности организации оперативной памяти для высокопроизводительных вычислительных систем.
Наиболее перспективным
классом высокопроизводительных систем
являются многопроцессорные системы.
В организации
Важнейшей характеристикой
многопроцессорной
2.4 Конвейеры
Идея конвейера состоит в том, чтобы сложную операцию разбить на несколько более простых, таких, которые могут выполняться одновременно. Операция суммирования, например, включает вычитание порядков, выравнивание порядков, сложение мантисс и нормализацию. Каждая из подопераций может выполняться на отдельном блоке аппаратуры. При движении объектов по конвейеру одновременно на разных его участках (сегментах) выполняются различные подоперации, что дает увеличение производительности за счет использования параллелизма на уровне команд. При достижении объектом конца конвейера он окажется полностью обработанным. Конвейеры применяются как при обработке команд (конвейеры команд), так и в арифметических операциях (конвейеры данных). Поскольку использование конвейерной обработки усложняет конструкцию процессора, эффективным конвейер данных может быть при выполнении векторных операций. Операция над одним элементом данных в конвейере будет выполняться дольше, чем в обычном АЛУ.
Для эффективной реализации конвейера должны выполняться следующие условия:
Количество сегментов называют глубиной конвейера. Важным условием нормальной работы конвейера является отсутствие конфликтов, приводящих к простоям конвейера. Для этого объекты, поступающие в конвейер, должны быть независимыми. Если, например, операндом является результат предыдущей операции, возникают периоды работы конвейера ("конвейерные пузыри"), когда он пуст. "Пузырь" проходит по конвейеру, занимая место, но не выполняя при этом никакой полезной работы.
Теоретически, максимально достижимое увеличение быстродействия, которое можно получить с помощью конвейера данных, определяется формулой ,
где п — количество операндов, загружаемых в конвейер, d — глубина конвейера.
Цикл выполнения команды состоит из нескольких шагов:
1. Выборка команды.
2. Декодирование команды, вычисление адреса операнда и его выборка.
3. Выполнение команды.
4. Обращение к памяти.
5. Запись результата в память.
Эти шаги могут выполняться
на устройствах, организованных в конвейер
(рис. 16), тогда обработка следующей
команды может начинаться, пока идет
обработка предыдущей команды. Для
выполнения каждого этапа команды
отводится один такт и в каждом
новом такте начинается выполнение
новой команды. Для хранения промежуточных
результатов каждого этапа
Рисунок 16
Для того чтобы задействовать все сегментов конвейера, требуется такт. После этого достигается максимальная производительность.
Казалось бы, увеличение
числа сегментов будет
Простой конвейера команд вызывается ситуацией, когда очередную команду из потока команд нельзя загрузить в конвейер сразу, а по какой-либо причине приходится ожидать несколько тактов. Если очередная команда в соответствующем ей такте не может быть выполнена, говорят о конфликте. В этом случае команда ожидает своей очереди, а пропускная способность конвейера падает. Ожидать своей очереди приходится и всем последующим командам. Команды, уже загруженные в конвейер, продолжают выполняться.
Принято выделять три типа конфликтов:
Причиной структурных конфликтов является одновременный запрос на использование одного ресурса несколькими командами. Избежать частого повторения структурных конфликтов можно, дублируя некоторые ресурсы, используя разделение кэш-памяти для данных и команд и т. д. Однако это усложняет конструкцию процессора и значительно повышает его стоимость.