Конвергенция параллельных архитектур
Параллельные машины были разработаны с несколькими отличными архитектурами. В этом разделе мы обсудим различные параллельные компьютерные архитектуры и природу их конвергенции.
Коммуникационная Архитектура
Параллельная архитектура дополняет традиционные концепции компьютерной архитектуры архитектурой связи. Компьютерная архитектура определяет критические абстракции (такие как граница пользователь-система и граница аппаратно-программного обеспечения) и организационную структуру, тогда как архитектура коммуникации определяет базовые операции связи и синхронизации. Это также касается организационной структуры.
Модель программирования - это верхний уровень. Приложения написаны в программной модели. Модели параллельного программирования включают -
- Общее адресное пространство
- Передача сообщений
- Параллельное программирование данных
Shared addressпрограммирование похоже на использование доски объявлений, где можно общаться с одним или несколькими людьми, размещая информацию в определенном месте, которая является общей для всех остальных людей. Индивидуальная деятельность координируется, отмечая, кто какую задачу выполняет.
Message passing это как телефонный звонок или письмо, когда конкретный получатель получает информацию от определенного отправителя.
Data parallelпрограммирование - это организованная форма сотрудничества. Здесь несколько человек одновременно выполняют действия с отдельными элементами набора данных и обмениваются информацией во всем мире.
Общая память
Мультипроцессоры с общей памятью - один из самых важных классов параллельных машин. Он обеспечивает лучшую пропускную способность при многопрограммных рабочих нагрузках и поддерживает параллельные программы.
В этом случае все компьютерные системы позволяют процессору и набору контроллера ввода-вывода получать доступ к набору модулей памяти посредством некоторого аппаратного взаимодействия. Емкость памяти увеличивается за счет добавления модулей памяти, а емкость ввода-вывода увеличивается за счет добавления устройств к контроллеру ввода-вывода или путем добавления дополнительного контроллера ввода-вывода. Производительность обработки можно увеличить, дождавшись выхода более быстрого процессора или добавив больше процессоров.
Все ресурсы организованы вокруг центральной шины памяти. Через механизм доступа к шине любой процессор может получить доступ к любому физическому адресу в системе. Поскольку все процессоры равноудалены от всех ячеек памяти, время доступа или задержка для всех процессоров одинаковы для каждой ячейки памяти. Это называетсяsymmetric multiprocessor.
Архитектура передачи сообщений
Архитектура передачи сообщений также является важным классом параллельных машин. Он обеспечивает связь между процессорами в виде явных операций ввода-вывода. В этом случае обмен данными осуществляется на уровне ввода-вывода, а не на уровне системы памяти.
В архитектуре передачи сообщений взаимодействие пользователя выполняется с использованием вызовов операционной системы или библиотеки, которые выполняют множество действий нижнего уровня, включая фактическую операцию связи. В результате существует дистанция между моделью программирования и операциями связи на физическом уровне оборудования.
Send и receiveявляется наиболее распространенной операцией связи на уровне пользователя в системе передачи сообщений. Send определяет локальный буфер данных (который должен быть передан) и принимающий удаленный процессор. Прием определяет процесс отправки и локальный буфер данных, в который будут помещены передаваемые данные. В операции отправкиidentifier или tag прикрепляется к сообщению, и операция получения определяет правило сопоставления, например, конкретный тег от определенного процессора или любой тег от любого процессора.
Комбинация отправки и соответствующего приема завершает копирование из памяти в память. Каждый конец указывает свой локальный адрес данных и событие парной синхронизации.
Конвергенция
Развитие аппаратного и программного обеспечения стерло четкую границу между общей памятью и лагерями передачи сообщений. Передача сообщений и общее адресное пространство представляют две разные модели программирования; каждый дает прозрачную парадигму для совместного использования, синхронизации и общения. Тем не менее, основные машинные структуры сошлись в сторону общей организации.
Параллельная обработка данных
Другой важный класс параллельных машин называется по-разному - массивы процессоров, параллельная архитектура данных и машины с одной инструкцией и несколькими данными. Основная особенность модели программирования заключается в том, что операции могут выполняться параллельно с каждым элементом большой регулярной структуры данных (например, массива или матрицы).
Языки параллельного программирования данных обычно применяются путем просмотра локального адресного пространства группы процессов, по одному на процессор, образуя явное глобальное пространство. Поскольку все процессоры взаимодействуют друг с другом и существует глобальное представление всех операций, можно использовать либо общее адресное пространство, либо передачу сообщений.
Основные проблемы проектирования
Только разработка модели программирования не может повысить эффективность компьютера, равно как и разработка аппаратного обеспечения не может сделать этого. Однако развитие компьютерной архитектуры может повлиять на производительность компьютера. Мы можем понять проблему дизайна, сосредоточившись на том, как программы используют машину и какие базовые технологии предоставляются.
В этом разделе мы обсудим абстракцию коммуникации и основные требования модели программирования.
Коммуникационная абстракция
Коммуникационная абстракция - это главный интерфейс между моделью программирования и реализацией системы. Это похоже на набор инструкций, который обеспечивает платформу, чтобы одна и та же программа могла правильно работать во многих реализациях. Операции на этом уровне должны быть простыми.
Коммуникационная абстракция подобна контракту между аппаратным и программным обеспечением, который позволяет друг другу повышать гибкость, не влияя на работу.
Требования к модели программирования
В параллельной программе есть один или несколько потоков, работающих с данными. Модель параллельного программирования определяет, какие данные потоки могутname, который operations могут выполняться с указанными данными, и в каком порядке выполняются операции.
Чтобы убедиться в том, что зависимости между программами применяются, параллельная программа должна координировать деятельность своих потоков.