Э. Таненбаум - Архитектура компьютера (1127755), страница 163
Текст из файла (страница 163)
Поскольку доступ к этому пространству полностью контролируется программно (системой реального времени Е1пг(а), никакой специальной аппаратной поддержки или особой операционной системы не требуется. Мультипроцессоры 639 Машина 1 Машина 2 Машина 1 Машина 2 Машина 1 Машина 2 Общая память Общая память Общая память Рис. 8.17. Уровни, на которых можно реализовать общую память: аппаратная реализация (а); операционная система (б); программная реализация (в) Другой пример общей памяти, реализованной пользовательской системой реального времени, — модель общих объектов данных в системе Огса. В модели Огса процессы совместно используют не кортежи, как в Е(пса, а базовые объекты, вызывая для них те или иные методы. Если метод изменяет внутреннее состояние объекта, система реального времени должна проследить, чтобы одновременно были изменены все копии этого объекта на всех машинах.
И опять, поскольку объекты — чисто программная концепция, их можно реализовать с помо1цью системы реального времени без вмешательства операционной системы или аппаратного обеспечения. К моделям Е(пс(а и Отса мы еше вернемся в этой главе. Классификация параллельных компьютерных систем Многое можно сказать о программном обеспечении для параллельных компьютерных систем, однако сейчас мы должны вернуться к основной теме данной главы — архитектуре таких систем. За многие годы было предложено и построено множество видов параллельных компьютерных систем, поэтому хотелось бы их как-либо классифицировать. Это с разными результатами пытались лелать многие исследователи (68, 207], но, к сожалению, хорошей классификации до сих пор нет.
Чаще всего используют классификация Флинна (68), но даже она является достаточно грубой (табл. 8.3). 640 Глава В. Параллельные компьютерные архитектуры Таблица 8.3. Классификация параллельных компьютерных систем по Флинну Потоки команд Потоки данных Категория Примеры Классическая машина фон-Неймана В!БО Векторный суперкомпьютер, матричный процессор Много В!МО Много Много М!30 Не существует Мультипроцессор, мультикомпьютер Много М!МО В основе классификации лежат понятия потоков команд и потоков данных.
Поток команд соответствует счетчику команд. Система с п процессорами имеет л счетчиков команд и, следовательно,п потоков команд. Поток данных состоит из набора операндов. Потоки команд и данных в какой-то степени независимы, поэтому существует 4 комбинации таких потоков (см. табл. 8.3). 515Р (81п81е 1пяггпсг1оп ясгеащ 81п81е Рата яггеаш — один поток команд с одним потоком данных) — это классическая последовательная компьютерная архитектура фон Неймана. Компьютер фон Неймана имеет один поток команд и один поток данных и в каждый момент времени может выполнять только одно действие. У машины, относящихся к категории 81МР (81п81е 1пяггпсггоп-яггеащ Мп111р1е Раса-яггеаш — один поток команд с несколькими потоками данных), имеется один блок управления, выдающий по одной команде, но при этом есть несколько АЛУ, которые могут обрабатывать несколько наборов данных одновременно. Прототип 51МР-машин— процессор 1ШАС 1Ч (см.
рис. 2.6). Хотя 31МР-машины не относятся к числу широко распространенных, в некоторых обычных компьютерах для обработки мультимедийных данных используются 51МР-команды. ЯКЕ-команды в процессорах Репйшп относятся к категории 81МР-команд. В любом случае существует одна область, где идеи, почерпнутые из «мира 51МР», выходят на первый план, — это потоковые процессоры. Потоковые процессоры специально разработаны для обработки мультимедийных данных и в будущем они могут играть важную роль (107] М18Р (Мп!11р1е 1пяггпс«1оп-ясгеащ 81п81е Раса-ясгеаш — несколько потоков команд с одним потоком данных) — довольно странная категория. Здесь несколько команд оперируют одним набором данных. Трудно сказать, существуют ли такие машины, хотя некоторые относят к категории М15Р машины с конвейерами.
Последняя категория — М1МР (Мп)11р1е 1пяггпсйоп-яггеаш Мп1бр1е Расаяггеащ — несколько потоков команд с несколькими потоками данных). Здесь несколько независимых процессоров работают как часть большой системы. В эту категорию попадают большинство параллельных процессоров. И мультипроцессоры, и мультикомпьютеры — это М1МР-машины. Мы расширили классификацию Флинна (рис. 8.18). 81МР-машины у нас распались на две подгруппы.
В первую подгруппу попадают многочисленные суперкомпьютеры и другие машины, которые оперируют векторами, выполняя одну и ту же операцию над каждым элементом вектора. Во вторую подгруппу попадают машины типа 1ШАС 1Ч, в которых главный блок управления посылает команды нескольким независимым АЛУ. Мультипроцессоры 641 Обмен сообщениями Общая память Рис. 84 8. Классификация компьютеров параллельного действия В нашей классификации категория М1МР распалась на мультипроцессоры (машины с общей памятью) и мультикомпьютеры (машины с обменом сообщениями).
Существует три типа мультипроцессоров. Они отличаются друг от друга механизмом доступа к общей памяти и называются УМА (1)ш1огш Мепюгу Ассезз — однородный доступ к памяти), Х1)МА (ХопПп1(огш Мепюгу Ассезз— неоднородный доступ к памяти) и СОМА (СасЬе Оп1у Мепюгу Ассеэз — доступ только к кэш-памяти). Такое разбиение на подкатегории имеет смысл, поскольку в больших мультипроцессорах память обычно делится на несколько модулей. В БМА-машинах каждый процессор имеет одно и то же время доступа к любому модулю памяти.
Иными словами, каждое слово может быть считано из памяти с той же скоростью, что и любое другое слово. Если это технически невозможно, самые быстрые обращения замедляются, чтобы соответствовать самым медленным, поэтому программист не заметит никакой разницы. Это и значит «однородный» доступ. Такая однородность делает производительность предсказуемой, а этот фактор очень важен для создания эффективных программ. АСМА-машина, напротив, не обладает свойством однородности. Обычно у каждого процессора есть один из модулей памяти, который располагается к нему ближе, чем другие, поэтому доступ к этому модулю памяти происходит гораздо быстрее, чем к другим. В этом случае с точки зрения производительности очень важно, где окажутся программа и данные. Доступ к СОМА-машинам тоже оказывается неоднородным, но по другой причине. Подробнее каждый из вариантов мы рассмотрим позднее, когда будем изучать соответствующие подкатегории.
642 Глава 8. Параллельные компьютерные архитектуры Во вторую основную категорию М1М1)-машин попадают мультикомпьютеры, которые в отличие от мультипроцессоров не имеют общей памяти на архитектурном уровне. Другими словами, операционная система процессора, входящего в состав мультикомпьютера, не сможет получить доступ к памяти другого процессора, просто выполнив команду СОАО. Процессору придется отправить сообщение и ждать ответа. Именно способность операционной системы считать слово из удаленного модуля памяти с помощью команды СОАО отличает мульти- процессоры от мультикомпьютеров. Как мы уже отмечали, хотя даже в мульти- компьютере пользовательские программы могут обращаться к другим модулям памяти с помощью команд СОАО и 5ТОкЕ, эта способность не подкреплена аппаратно, иллюзию создает операционная система.
Разница незначительна, но очень важна. Так как мультикомпьютеры не имеют непосредственного доступа к удаленным модулям памяти, их иногда относят к категории й(ОКМА (ЫО Кепюсе Мепюгу Асеева — отсутствие удаленного доступа к памяти). Мультикомпьютеры тоже можно разделить на две дополнительные категории. К категории МРР (Мазгйуе!у Рага1!е! Ргосеззог — процессор с массовым параллелизмом) относятся дорогостоящие суперкомпьютеры, которые состоят из большого количества процессоров, связанных высокоскоростной внутренней коммуникационной сетью. В качестве хорошо известного коммерческого примера можно назвать суперкомпьютер ЯР/3 компании 1ВМ.
Вторая категория мультикомпьютеров включает обычные персональные компьютеры или рабочие станции (иногда смонтированные в стойки), которые связываются в соответствии с той или иной коммерческой коммуникационной технологией. С точки зрения логики принципиальной разницы здесь нет, но мощный суперкомпьютер стоимостью в миллионы долларов безусловно используется иначе, чем собранная конечными пользователями компьютерная сеть, которая обходится во много раз дешевле любой МРР-машины.
Эти «доморощенные» системы иногда называют сетями рабочих станций (Месвог)с 01 1Чог1сзсасюпз, МОЮ), кластерами рабочих станций (С1пзсег 01%'огкзсасс!опз, СОЖ), или просто кластерами (с!пзсег). Семантика памяти Хотя во всех мультипроцессорах процессорам предоставляется образ общего единого адресного пространства, часто наряду с ним имеется множество модулей памяти, в каждом из которых хранится какой-то фрагмент физической памяти. Процессоры и модули памяти соединяются сложной коммуникационной сетью (мы поговорим об этом в подразделе «Коммуникационные сети» раздела «Мультикомпьютеры»).
Несколько процессоров могут попытаться считать слово из памяти в то же время, когда другие процессоры будут пытаться его записать; сообщения могут доставляться не в том порядке, в котором они были отправлены. Добавим к этим проблемам существование многочисленных копий некоторых фрагментов памяти (например, в кэш-памяти), и в результате мы придем к хаосу, если не принять серьезные контрмеры. В этом подразделе мы выясним, что в действительности представляет собой общая память и как при таких обстоятельствах можно разумно использовать модули памяти.
Мупьтипроцессоры 643 Семантику памяти можно рассматривать как контракт между программным и аппаратным обеспечением памяти 14]. Если программное обеспечение соглашается следовать определенным правилам, то память соглашается выдавать определенные результаты. Основная проблема здесь — сами правила, которые называются моделями состоятельности. Было предложено и разработано множество таких правил. Чтобы представить себе суть проблемы, предположим, что процессор 0 записывает значение 1 в какое-то слово памяти, а немного позже процессор 1 записывает значение 2 в то же самое слово.