Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВС13 / ЛабРаб / Диплом.doc
Скачиваний:
36
Добавлен:
17.03.2015
Размер:
1.48 Mб
Скачать

1.2 Модели и схемы параллелизма

1.2.1 Простейшая модель параллельного программирования (pram)

“В качестве простейшей модели, отражающей базовые концепции параллельного программирования, рассмотрим модель PRAM (Parallel Random Access Machine - па­раллельная машина с произвольным доступом). PRAM - это упрощенная теоретиче­ская модель с п процессорами, которые используют общую глобальную память. Про­стая модель PRAM изображена на рис. 1.3.

Все процессоры имеют доступ для чтения и запи­си к общей глобальной памяти. В PRAM-среде возмо­жен одновременный доступ. Предположим, что все процессоры могут параллельно выполнять различ­ные арифметические и логические операции. Кроме того, каждый из теоретических процессоров (см. рис. 1.3) может обращаться к общей памяти в од­ну непрерываемую единицу времени. PRAM-модель об­ладает как параллельными, так и исключающими ал­горитмами считывания данных. Параллельные алго­ритмы считывания данных позволяют одновременно обращаться к одной и той же области памяти без ис­кажения (порчи) данных. Исключающие алгоритмы считывания данных использу­ются в случае, когда необходима гарантия того, что никакие два процесса никогда не будут считывать данные из одной и той же области памяти одновременно. PRAM-модель также обладает параллельными и исключающими алгоритмами записи дан­ных. Параллельные алгоритмы позволяют нескольким процессам одновременно записывать данные в одну и ту же область памяти, в то время как исключающие ал­горитмы гарантируют, что никакие два процесса не будут записывать данные в одну и ту же область памяти одновременно. Четыре основных алгоритма считывания и записи данных перечислены в табл. 1.1.

Рис. 1.3. Простая модель PRAM

Таблица 1. Четыре базовых алгоритма считывания и записи данных

Типы алгоритмов

Описание

EREW

Исключающее считывание/исключающая запись

CREW

Параллельное считывание/исключающая запись

ERCW

Исключающее считывание/параллельная запись

CRCW

Параллельное считывание/параллельная запись

Необходимо отметить, что хотя PRAM- это упрощенная теоре­тическая модель, она успешно используется для разработки практических программ, и эти программы могут соперничать по производительности с программами, которые были разработаны с использованием более сложных моделей параллелизма.” [15]

1.2.2 Простейшая классификация схем параллелизма

“PRAM - это способ построения простой модели, которая позволяет предста­вить, как компьютеры можно условно разбить на процессоры и память и как эти процессоры получают доступ к памяти. Упрощенная классификации схем функцио­нирования параллельных компьютеров была предложена М. Флинном (M.J. Flynn). Согласно этой классификации различались две схемы: SIMD (Single-Instruction, Multiple-Data - архитектура с одним потоком команд и многими потоками данных) и MIMD (Multiple-Instruction, Multiple-Data – архитектура со множеством потоков команд и множеством потоков данных). Несколько позже эти схемы были расши­рены до SPMD (Single-Program, Multiple-Data- одна программа, несколько потоков данных) и MPMD (Multiple-Programs, Multiple-Data-множество программ, множест­во потоков данных) соответственно.

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

Схема MPMD (MIMD) по­зволяет работать нескольким процессорам, причем все они выполняют различные программы или инструкции и пользуются собственными данными. Таким образом, в одной схеме все процессоры выполняют одну и ту же программу или инструкцию, а в другой все процессоры выполняют различные программы или инструкции. Ко­нечно же, возможны гибриды этих моделей, в которых процессоры могут быть раз­делены на группы, из которых одни образуют SPMD-модель, а другие - MPMD-модель.

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

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

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

Принципы параллельного про­граммирования нетрудно описать, используя моде­ли PRAM, SPMD (SIMD) и MPMD (MIMD). И в самом деле, эти схемы и модели ус­пешно используются для реализации практических мелко- и среднемасштабных приложений и вполне могут вас устраивать до тех пор, пока вы не подготовитесь к параллельному программированию более высокой степени организации.”[15]