Параллельные машины были разработаны с несколькими различными архитектурами. В этом разделе мы обсудим различные параллельные компьютерные архитектуры и характер их конвергенции.
Архитектура связи
Параллельная архитектура расширяет общепринятые понятия компьютерной архитектуры с архитектурой связи. Компьютерная архитектура определяет критические абстракции (например, границы пользовательской системы и границы аппаратного и программного обеспечения) и организационную структуру, тогда как архитектура связи определяет основные операции связи и синхронизации. Также рассматривается организационная структура.
Модель программирования — это верхний слой. Приложения написаны в модели программирования. Модели параллельного программирования включают в себя —
- Общее адресное пространство
- Передача сообщений
- Параллельное программирование данных
Программирование общего адреса аналогично использованию доски объявлений, где можно общаться с одним или несколькими людьми, публикуя информацию в определенном месте, которой делятся все другие люди. Индивидуальная деятельность координируется, отмечая, кто выполняет какую задачу.
Передача сообщений подобна телефонному звонку или письму, когда конкретный получатель получает информацию от конкретного отправителя.
Параллельное программирование данных является организованной формой сотрудничества. Здесь несколько человек одновременно выполняют действия над отдельными элементами набора данных и обмениваются информацией в глобальном масштабе.
Общая память
Мультипроцессоры с общей памятью являются одним из наиболее важных классов параллельных машин. Это обеспечивает лучшую пропускную способность для многопрограммных рабочих нагрузок и поддерживает параллельные программы.
В этом случае все компьютерные системы позволяют процессору и набору контроллера ввода-вывода получать доступ к коллекции модулей памяти посредством некоторого аппаратного соединения. Объем памяти увеличивается за счет добавления модулей памяти, а емкость ввода-вывода увеличивается за счет добавления устройств в контроллер ввода-вывода или добавления дополнительного контроллера ввода-вывода. Производительность можно увеличить, подождав, пока будет доступен более быстрый процессор, или добавив больше процессоров.
Все ресурсы организованы вокруг центральной шины памяти. Через механизм доступа к шине любой процессор может получить доступ к любому физическому адресу в системе. Поскольку все процессоры равноудалены от всех областей памяти, время доступа или задержка всех процессоров в области памяти одинаковы. Это называется симметричным мультипроцессором .
Архитектура передачи сообщений
Архитектура передачи сообщений также является важным классом параллельных машин. Он обеспечивает связь между процессорами в виде явных операций ввода-вывода. В этом случае связь объединяется на уровне ввода / вывода вместо системы памяти.
В архитектуре передачи сообщений взаимодействие с пользователем выполняется с использованием вызовов операционной системы или библиотеки, которые выполняют множество действий более низкого уровня, что включает в себя фактическую операцию связи. В результате существует расстояние между моделью программирования и операциями связи на уровне физического оборудования.
Отправка и получение являются наиболее распространенными операциями связи на уровне пользователя в системе передачи сообщений. Send указывает локальный буфер данных (который должен быть передан) и принимающий удаленный процессор. Прием определяет процесс отправки и локальный буфер данных, в который будут помещены передаваемые данные. В операции отправки к сообщению прикрепляется идентификатор или тег, а в операции приема указывается правило сопоставления, например, определенный тег от конкретного процессора или любой тег от любого процессора.
Комбинация отправки и совпадающего приема завершает копирование из памяти в память. Каждый конец указывает свой локальный адрес данных и событие парной синхронизации.
конвергенция
Разработка аппаратного и программного обеспечения стирает четкую границу между общей памятью и лагерями для передачи сообщений. Передача сообщений и общее адресное пространство представляют две разные модели программирования; каждый дает прозрачную парадигму для обмена, синхронизации и общения. Тем не менее, основные машинные структуры приблизились к общей организации.
Параллельная обработка данных
Другой важный класс параллельных машин называется по-разному — процессорные массивы, параллельная архитектура данных и машины с одной инструкцией и несколькими данными. Основная особенность модели программирования заключается в том, что операции могут выполняться параллельно над каждым элементом большой регулярной структуры данных (например, массива или матрицы).
Языки параллельного программирования для данных обычно применяются путем просмотра локального адресного пространства группы процессов, по одному на процессор, образуя явное глобальное пространство. Поскольку все процессоры взаимодействуют друг с другом и существует глобальное представление обо всех операциях, можно использовать либо общее адресное пространство, либо передачу сообщений.
Основные вопросы дизайна
Разработка только модели программирования не может повысить эффективность компьютера, а разработка аппаратного обеспечения не может этого сделать. Тем не менее, развитие в компьютерной архитектуре может иметь значение в производительности компьютера. Мы можем понять проблему проектирования, сосредоточившись на том, как программы используют машину и какие базовые технологии предоставляются.
В этом разделе мы обсудим коммуникационную абстракцию и основные требования модели программирования.
Коммуникационная абстракция
Коммуникационная абстракция является основным интерфейсом между моделью программирования и реализацией системы. Это похоже на набор инструкций, который предоставляет платформу, так что одна и та же программа может корректно работать во многих реализациях. Операции на этом уровне должны быть простыми.
Абстракция связи похожа на контракт между аппаратным и программным обеспечением, который позволяет друг другу улучшать гибкость, не влияя на работу.
Требования к модели программирования
Параллельная программа имеет один или несколько потоков, работающих с данными. Модель параллельного программирования определяет, какие данные могут называть потоки, какие операции можно выполнять с именованными данными и в каком порядке следуют операции.
Чтобы убедиться, что зависимости между программами принудительно установлены, параллельная программа должна координировать активность своих потоков.