Реклама:

Как показано на рис. 8.18, в категорию MIMD входят два вида процессоров с параллельной архитектурой: мультипроцессоры и мультикомпьютеры. В предыдущем разделе мы рассматривали мультипроцессоры. Мы выяснили, что мультипроцессоры могут иметь общую память, доступ к которой выполняется обычными командами LOAD и STORE. Для реализации такой памяти может использоваться множество схем, включая шины слежения, сети с перекрестной и многоступенчатой коммутацией, различные схемы на основе каталога. Во всех случаях программы, написанные для мультипроцессора, могут получать доступ к любому месту в памяти, не имея никакой информации о внутренней топологии или схеме реализации. Именно благодаря такой иллюзии мультипроцессоры весьма популярны у пользователей и программистов.

Однако мультипроцессорам свойственны и некоторые недостатки, и это автоматически означает усиление роли мультикомпьютеров. В первую очередь, мультипроцессоры плохо масштабируются. Мы уже знаем, сколько разнообразных устройств потребовалось инженерам компании Sun ввести в систему Е25К, чтобы поддерживать работу 72 процессоров. Что касается мультикомпьютеров, то далее мы рассмотрим систему из 65 536 процессоров. Пройдут годы, прежде чем кто-нибудь сумеет построить коммерческий мультипроцессор с 65 536 узлами, да и к тому времени в ходу уже будут мультикомпьютеры с миллионами процессоров.

Далее, на производительности мультипроцессора может серьезно сказываться конкуренция за доступ к памяти. Если 100 процессоров постоянно пытаются считывать и записывать одни и те же переменные, конкуренция за ресурсы модулей памяти, шин и каталогов может сильно ударить по производительности.

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

Каждый узел в мультикомпьютере состоит из одного или нескольких процессоров, ОЗУ (общего для процессоров только данного узла), дисковода и (или) других устройств ввода-вывода, а также коммуникационного процессора. Коммуникационные процессоры связаны между собой высокоскоростной коммуникационной сетью (см. далее подраздел "Коммуникационные сети"). Используется множество различных топологий, схем коммутации и алгоритмов выбора маршрута, однако у всех мультикомпьютеров есть общая черта: когда программа выполняет примитив send, коммуникационный процессор извещается об этом и передает блок данных в целевую машину (возможно, после предварительного запроса и получения разрешения). Обобщенная схема мультикомпьютера показана на рис. 8.30.

Мультикомпьютеры8

Рис. 8.30. Схема мультикомпьютера

СОМА-мультипроцессоры || Оглавление || Коммуникационные сети