
Встроенные микропроцессорные системы / ВстроенныеСистемы / mps15
.docЛекция 15
7. Мультипроцессорные системы
Мультипроцессорные системы являются системами параллельной обработки данных. В таких системах процессоры выполняют разные части одной задачи. Было предложено и реализовано две разработки: мультипроцессоры и мультикомпьютеры.
7.1. Мультипроцессоры
В первой разработке все процессоры разделяют общую физическую память, как показано на рис.7.1, где ЛП – локальная память для хранения программ и локальных данных, ОП – общая память, А – арбитр магистрали, М – параллельная магистраль, ЗД – линии запроса доступа к магистрали, ПД – линии подтверждение доступа к магистрали.
Все процессы, работающие вместе на мультипроцессоре, могут разделять одно виртуальное адресное пространство, отображенное на ОП. Любой процесс может считывать слово из ОП или записывать слово в ОП, получив от арбитра сигнал разрешения доступа к магистрали. Два процесса могут обмениваться информацией, если один из них будет просто записывать данные в определенную область памяти (почтовый ящик), а другой будет считывать эти данные.
Рассмотрим программу, которая изучает битовое представление фотографии и составляет список всех ее объектов. Данные размещаются в ОП. Каждый из n ЦПУ выполняет процесс, которому приписана для анализа одна из n областей ОП. Если процесс обнаруживает, что один из его объектов переходит через границу области ОП, этот процесс просто переходит вслед за объектом в следующую область, считывая данные из этой области. Таким образом, некоторые объекты обрабатываются несколькими процессами, поэтому в конце потребуется некоторая координация, чтобы определить истинное
количество объектов.
Мультипроцессоры с небольшим числом процессоров (<=64) сконструировать довольно легко, а вот создание больших мультипроцессоров представляет некоторые трудности.
К мультипроцессорам можно отнести многоядерные (двух ядерные) ЦПУ, в которых на одном кристалле расположено больше одного процессора. Каждый такой процессор взаимодействует со своей кэш-памятью программ и данных первого уровня, а сам ЦПУ имеет интерфейс с основной памятью, общей для всех ядер.
7.2. Мультикомпьютеры
Во втором типе параллельной архитектуры каждый процессор имеет свою собственную память, доступную только этому процессору. Такая разработка называется мультикомпьютером или системой с распределенной памятью. На рис.7.2 представлена структура мультикомпьютера.
Поскольку ЦПУ в мультикомпьютере не могут взаимодействовать друг с другом просто путем чтения из общей памяти и записи в общую память, здесь необходим другой механизм взаимодействия. Они посылают друг другу сообщения, используя сеть межсоединений.
При отсутствии памяти совместного использования в аппаратном обеспечении, предполагается определенная структура программного обеспечения. В мультикомпьютере невозможно иметь одно виртуальное адресное пространство, из которого все процессы могут считывать информацию и в которое все процессы могут записывать информацию с помощь команд сохранения и загрузки.
ЦПУi необходимо определять какой процессор содержит необходимые данные и посылать этому процессору сообщения с запросом копии данных. Затем ЦПУi блокируется до получения ответа. Когда ЦПУj получает сообщение, программное обеспечение должно проанализировать его и отправить назад необходимые данные. Когда ЦПУi получает ответное сообщение, программное обеспечение разблокируется и продолжает работу.
Программное обеспечение мультикомпьютера имеет более сложную структуру, чем программное обеспечение мультипроцессора.
Мультипроцессоры сложно строить, но легко программировать, а мультикомпьютеры легко строить, но трудно программировать. Это привело к созданию гибридных систем.
Один из подходов основан на использовании аппаратного обеспечения мультикомпьютера и операционной системы, которая моделирует разделенную память, обеспечивая единое виртуальное адресное пространство, разбитое на страницы. При таком подходе, который называется DSM (Distributed Shared Memory - распределенная совместно используемая память), каждая страница расположена в одном из блоков памяти. Каждая машина содержит свою собственную виртуальную память и собственные таблицы страниц. Если процессор выполняет команду загрузки или сохранения над страницей, которой у него нет, происходит прерывание операционной системы. Затем операционная система находит нужную страницу и требует, чтобы процессор, который обладает нужной страницей, преобразовал ее в исходную форму и послал по сети межсоединений.
Другой подход – реализовать общую разделенную память на уровне программного обеспечения. При таком подходе абстракцию разделенной памяти создает язык программирования, и эта абстракция реализуется компилятором. Например, модель Linda основана на абстракции разделенного пространства кортежей (записи данных, содержащих набор полей). Процессы любой машины могут взять кортеж из общего пространства или отправить в общее пространство. Поскольку доступ к этому пространству полностью контролируется программным обеспечением, никакого специального аппаратного обеспечения или специальной операционной системы не требуется.
Следующий пример памяти совместного использования, реализованной в программном обеспечении, - модель общих объектов в системе Orca. В модели Orca. Процессы разделяют объекты , а не кортежи, и могут выполнять над ними те или иные процедуры. Если процедура изменяет внутреннее объекта, операционная система должна проследить, чтобы все копии этого объекта на всех машинах одновременно были изменены. И опять, поскольку объекты – это чисто программные понятия, их можно реализовать с помощью программного обеспечения без вмешательства операционной системы или аппаратного обеспечения.