Файл: МУЛЬТИПРОЦЕССОРЫ (Общая характеристика процессоров).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 18.05.2023

Просмотров: 196

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2. Особенности мультипроцессоров

2.1. Понятие и сущность мультипроцессора

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

Так, под мультипроцессором принято понимать компьютер, в котором общая физическая память используется всеми процессорами совместно ( рис. 1, а) [8]. Все процессы, работающие в мультипроцессоре совместно, могут иметь единое виртуальное адресное пространство, отображенное на общую память. Любой процесс с помощью команд LOAD и STORE может считать слово из памяти или записать слово в память. Больше ничего не требуется. Два процесса имеют возможность легко обмениваться информацией – для этого один из них просто записывает данные в общую память, а другой их считывает.

Рисунок 1. Мультипроцессор из 16 процессоров, имеющих общую память (а); изображение, разделенное на 16 секций, каждую из которых анализирует отдельный процессор (б)

Благодаря возможности взаимодействия двух и более процессов мультипроцессоры весьма популярны. Данная модель понятна программистам и позволяет решать широкий круг задач. Для примера рассмотрим программу, которая анализирует битовое отображение и составляет список всех его объектов. Одна копия изображения хранится в памяти, как показано на рис. 1, б. Каждый из 16 процессоров запускает один процесс, призванный анализировать одну из 16 секций. Если процесс обнаруживает, что один из его объектов переходит через границу секции, этот процесс просто переходит вслед за объектом в следующую секцию, считывая слова этой секции. В нашем примере некоторые объекты обрабатываются несколькими процессами, поэтому в конце потребуется некоторая координация, чтобы определить количество домов, деревьев и самолетов.


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

Мультипроцессор, как и все компьютеры, должен содержать устройства ввода–вывода (диски, сетевые адаптеры и т. п.). В одних мультипроцессорных системах только определенные процессоры получают доступ к устройствам ввода–вывода и, следовательно, обладают специальными средствами ввода–вывода. В других мультипроцессорных системах каждый процессор может получить доступ к любому устройству ввода–вывода. Если все процессоры имеют равный доступ ко всем модулям памяти и всем устройствам ввода–вывода, и между процессорами возможна полная взаимозаменяемость, такой мультипроцессор называется симметричным (Symmetrie Multiprocessor, SMP).

Во втором варианте параллельной архитектуры каждый процессор имеет собственную память, доступную только этому процессору. Такая схема называется мультикомпьютером, или системой с распределенной памятью (рис. 2, а) [14]. Ключевое отличие мультикомпьютера от мультипроцессора состоит в том, что каждый процессор в мультикомпьютере имеет собственную локальную память, к которой этот процессор может обращаться, выполняя команды LOAD и STORE, но никакой другой процессор с помощью этих команд не может получить доступ к локальной памяти данного процессора. Таким образом, мультипроцессоры имеют одно физическое адресное пространство, разделяемое всеми процессорами, а мультикомпьютеры содержат отдельные физические адресные пространства для каждого процессора.

Поскольку процессоры в мультикомпьютере не могут взаимодействовать друг с другом простыми обращениями к общей памяти, процессоры обмениваются сообщениями через связывающую их коммуникационную сеть. В качестве примеров мультикомпьютеров можно назвать IBM BlueGene/L, Red Storm и кластер Google.

При отсутствии общей памяти, реализованной аппаратно, предполагается определенная программная структура. В мультикомпьютере невозможно иметь единое для всех процессоров виртуальное адресное пространство, позволяющее считывать и записывать информацию командами LOAD и STORE. Например, если процессор в верхнем левом углу рис. 1, б (присвоим этому процессору номер 0) обнаружит, что часть его объекта попадает в другую секцию, относящуюся к следующему процессору (пусть это будет процессор 1), он может просто продолжать считывать информацию из памяти, чтобы получить изображение хвоста самолета. Однако если то же самое обнаружит процессор 0 на рис. 2, б, он не сможет просто считать информацию из памяти процессора 1. В данном случае алгоритм получения данных должен быть другим [14].


Рисунок 2. Мультикомпьютер из 16 процессоров, каждый из которых имеет собственную память (а); битовая карта изображения с рис. 8.15, разделенная между 16 модулями памяти (б)

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

В мультикомпьютере для взаимодействия между процессорами часто используются примитивы send и receive. Поэтому программное обеспечение мультикомпьютера имеет более сложную структуру, чем программное обеспечение мультипроцессора. При этом основной проблемой становится правильное распределение данных и разумное их размещение. Это еще одно отличие мультикомпьютера от мультипроцессора, где размещение данных не влияет на правильность решения задачи, хотя может повлиять на производительность. Короче говоря, мультикомпьютер программировать гораздо сложнее, чем мультипроцессор [15].

Нередко возникает вопрос: зачем вообще создавать мультикомпьютеры, если мультипроцессоры гораздо проще программировать? Ответ прост: создать большой мультикомпьютер проще и дешевле, чем мультипроцессор с таким же количеством процессоров. Реализация общей памяти, совместно используемой несколькими сотнями процессоров, – это весьма сложная задача, а разработать мультикомпьютер, содержащий 10000 процессоров и более, довольно легко.

Таким образом, формируется дилемма: мультипроцессоры сложно разрабатывать, но легко программировать, а мультикомпьютеры легко строить, но трудно программировать. В результате постоянно предпринимаются попытки создания гибридных систем. Эти попытки привели к осознанию того факта, что совместную память можно реализовывать по–разному, причем каждый вариант будет иметь достоинства и недостатки. Практически все исследования в области параллельных компьютерных архитектур направлены на создание гибридных форм, которые сочетают в себе достоинства обеих систем. Здесь важно добиться масштабируемости, то есть разработать такую систему, которая будет продолжать исправно работать при добавлении все новых и новых процессоров [2].


Один из подходов основан на том, что современные компьютерные системы не монолитны, а имеют многоуровневую структуру. Это дает возможность реализовать общую память на любом из нескольких уровней, как показано на рис. 3. На рис. 3 мы видим общую память, реализованную аппаратно, как в «настоящем» мультипроцессоре. В данной разработке имеется одна копия операционной системы с одним набором таблиц, в частности таблицей распределения памяти. Если процессу требуется больше памяти, он прерывает работу операционной системы, которая после этого начинает искать в таблице свободную страницу и отображает эту страницу на адресное пространство вызывающего процесса. Что касается операционной системы, имеется единая память, и операционная система следит, какая страница какому процессу принадлежит. Существует множество способов аппаратной реализации общей памяти.

Второй подход – использовать аппаратное обеспечение мультикомпыотера и операционную систему, которая будет моделировать общую память, предоставляя единое виртуальное адресное пространство, разбитое на страницы. При таком подходе получается распределенная общая память ( DSM), в которой каждая страница расположена в одном из модулей памяти (см. рис. 8.16, я), а каждая машина содержит собственную виртуальную память и собственные таблицы страниц [12]. Если процессор выполняет команду LOAD или STORE, обращаясь к странице, которой у него нет, происходит системное исключение. После этого операционная система находит нужную страницу и обращается к соответствующему процессору, чтобы тот выгрузил страницу из памяти и послал ее через внутреннюю коммуникационную сеть, по которой процессоры обмениваются сообщениями. Когда страница попадает процессу–получателю, она отображается на память, и выполнение прерванной команды возобновляется. По существу, операционная система просто получает недостающие страницы не с диска, а из памяти. При этом у пользователя создается впечатление, что машина имеет единую общую память.

Третий подход – реализовать общую память программно пользовательской системой реального времени. При таком подходе абстракцию общей памяти создает язык программирования, и эта абстракция реализуется компилятором (то есть модель общей памяти может зависеть от используемого языка программирования). Например, модель Linda основана на абстракции общего пространства кортежей (записей данных, содержащих наборы полей). Процессы любой машины могут взять кортеж из общего пространства или отправить его в общее пространство. Поскольку доступ к этому пространству полностью контролируется программно (системой реального времени Linda), никакой специальной аппаратной поддержки или особой операционной системы не требуется.


Рисунок 3. Уровни, на которых можно реализовать общую память: аппаратная реализация (а); операционная система (б); программная реализация (в)

Другой пример общей памяти, реализованной пользовательской системой реального времени, – модель общих объектов данных в системе Огса. В модели Огса процессы совместно используют не кортежи, как в Linda, а базовые объекты, вызывая для них те или иные методы. Если метод изменяет внутреннее состояние объекта, система реального времени должна проследить, чтобы одновременно были изменены все копии этого объекта на всех машинах. И опять, поскольку объекты – чисто программная концепция, их можно реализовать с помощью системы реального времени без вмешательства операционной системы или аппаратного обеспечения [12].

2.2. Мультипроцессорные системы

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

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

Системы, работающие по мультипроцессорному принципу, чаще всего классифицируются по признакам, выделенным Флинном. Подобная классификация делит мультипроцессорные системы на SIMD и MIMD.

При этом также можно выделить четыре основных типа архитектуры систем параллельной обработки:

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