PC АД PC АД
PC АД

Почта Домой

Умножение производительности

Мультипроцессорные технологии

Одна голова хорошо, а две лучше. Вспомни скучные лабораторные, когда группа разбивалась на бригады. Понятно, что в такой компании обязательно находились люди, которые пользовались мозгами других, а кто-то работал за троих :). Этот пример является примитивной моделью многопроцессорной технологии.

Разные проблемы - разные решения

На самом деле, в многопроцессорности все намного сложнее, хотя и нет ничего хитрого. Важно понять, зачем применять столь сложные технологии, иначе ресурсы машины просто будут простаивать. К примеру, если на лабораторной работе нужно выполнить один эксперимент и простой расчет, для этого хватит мозгов всего одного человека, а мозги остальных в бригаде будут лишними ;). Точно так же и в компьютерной среде: нередко начальники на предприятии не до конца обдумывают пути решения своих задач, а после заказа мультипроцессорной машины просто не могут представить способы ее загрузки на 100%.

Конечно, в институтах ядерной физики и на крупных предприятиях такие технологии себя оправдают в полной мере. Более того, бывает, что одной машины мало, в результате чего в одном помещении устанавливают два, а то и десять серверов.

Кого выбрать

Мультипроцессорными разработками занимаются многие производители. Главными из них является сладкая парочка Intel и AMD. Весьма интересным фактом является то, что конкретная фирма-производитель оптимизирует свои кремниевые камешки под единственную технологию.

AMD и NUMA

Компания AMD пошла в своих разработках наиболее простым и логичным путем. В строении архитектуры подразумевается, что каждому устройству будет выделены отдельные “мозги” (память). Копаться в “мозгах” другого камня считается дурным тоном :). Процессоры делятся на две группы: ведущий (всего один) и ведомые (все остальные). Это сделано для того, чтобы первый проц имел преимущество в ситуации, когда требуется обоюдный обмен данными.

Непонятно? Объясню проще: представь, что в бригаде, состоящей из 4 человек (все еще выполняющих злополучную лабораторную), ведутся расчеты, скажем, по вычислению сопротивления различных материалов. Результаты будут занесены в сводную таблицу, а затем обработаны. Если проецировать технологию NUMA на этот пример, получаем: все люди в бригаде будут вести расчеты на отдельном листе бумаги, не залезая в расчеты других. Задача бригадира - составление полей будущей таблицы. Итак, вычисления завершены, требуется лишь занести данные в протокол. Прямой доступ к чужой памяти закрыт по определению, поэтому процесс идет следующим образом: второй человек в бригаде записывает результаты своих вычислений на отдельный листок, который затем передается прямо в руки бригадиру. Бригадир переписывает результаты в сводную таблицу и радуется жизни. После того, как ведущий человек освободился, с ним работает третий по подобной схеме. И так далее, пока таблица не будет заполнена до конца. Плюсы налицо: практически никаких одновременных обращений к чужому листу бумаги, а также отсутствие длительных простоев.

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

Intel + SMP

После того, как AMD показал себя с лучшей стороны, в дело вмешался самый серьезный его конкурент - Intel. Лозунги гласили: “Наше преимущество - общая память!” Интел - первый производитель, который решился сделать возможным полноценное обращение любого процессора к любой ячейке памяти.

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

Бесспорно, Intel всячески понижает вероятность появления коллизий и простоев. Одно из таких решений - увеличение кэша процессора. Но опять же, усложняется задача программиста. Ему придется разделять данные не только между областями памяти, но и между областями кэша, а это умеет не каждый.

MPP

MPP-технология подразумевает наличие отдельных процессорных узлов, которые связаны между собой в массив. Отсюда и расшифровка: массивно-параллельные системы. Всего таких узлов может быть около 1000, а то и больше.

Главной особенностью MPP является то, что один процессор никак не может проникнуть в память другого, а лишь способен работать со своим локальным модулем. Для нашего примера с бригадой получаем: четыре человека рассажены по отдельным углам, и никто не способен вмешаться в расчеты соседа. Зададимся вопросом: как же передать данные одного человека бригадиру? Для этого существуют определенные методы трансмиссии данных. К примеру, по воздуху :). Чувак сделал самолетик из листа бумаги и запустил его в сторону бригадира. Никаких коллизий, никаких простоев, информация дошла до потребителя. Хотя не факт, что самолетик взлетит, но это уже проблема производителя :).

Технологию MPP нельзя соотнести с отдельным производителем, так как ее реализовывали как Intel, так и AMD. Тем не менее, серверы с такой многопроцессорностью стоят бешеных денег, так как транспортировка данных по сети является довольно сложной задачей.

Параллельно-векторные системы

Еще одной технологией является PVP, которая подразумевает следующее: ряд процессоров (1-6) работают с общей памятью, а все блоки связаны через коммутатор. Получим формулу для технологии: PVP=SMP+MPP.

Представь, что результаты всех сводных таблиц должны быть записаны в один общий отчет (для всех бригад). Получаем: бригада работает по принципу SMP (читай выше), а бригадиры передают таблицы по воздухуу - самолетиками :). В итоге главный бригадир будет располагать всеми данными от бригад. Если учесть, что все люди работали по принципу SMP, то получаем векторно-параллельную архитектуру, или PVP. Ярким примером компьютера с технологией PVP является Cray SV1.

Кластерные установки

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

Первый кластер был собран в 1998 году. Он состоял из 68 процессоров фирмы Intel и занял 114 место среди мировых многопроцессорных установок. Это очень хороший результат, так как цена такой машины была в сотни раз ниже мультипроцессорных станций. Изобретателем такой системы стал Michael Warren. Он назвал свое детище именем Avalon. После создания этой супермашины кластеры обрели большую популярность и стали использоваться в крупных компаниях как вариант дешевого заменителя мультипроцессорности.

К построению кластеров существует два требования, которых необходимо придерживаться:

1. Узлы кластера. Для производительной работы лучше использовать интеловские камни либо двухпроцессорные SMP-станции. При конфигурации узлов можно отказаться от жестких дисков, они лишь будут загружать работу. Количество таких узлов необходимо выбирать, исходя из финансовых средств, а также оборудования.

2. Сеть. Важно понимать, что данные между станциями будут передаваться через сеть. Поэтому необходимо установить качественное оборудование, заточенное под 100Mb/s Fast Ethernet. Десяти мегабитов тоже хватит, но иногда могут возникнуть серьезные проблемы в пропускной способности. Также нужно уделить должное внимание сетевым устройствам. Брать только проверенные адаптеры: 3COM, D-link и т.п. Если ты поставишь на кластерные машины китайские сетевухи за 5 баксов, ничего хорошего из этого не выйдет :).

Если говорить об осях, которые заточены под кластеры, идеальной операционкой для управления системой является Linux. Ни для кого не секрет, что для кластерного управления существует отдельный софт и, как правило, пингвина всегда применяют в качестве рулевой оси.

Зачем это нужно

А теперь самый интересный вопрос: где применить мультипроцессорность. Некоторые думают, что такой мощный компьютер пригодится в качестве домашнего ПК. Мол, реально поиграть и поработать без тормозов. Спешу тебя разочаровать: прироста производительности в домашних условиях ты не получишь. Например, единственная игра Quake III Arena, которая идет под двумя камнями, дает прирост всего на 7-10%. Это связано с тем, что когда юзер проявляет активность (жмет на клавиши и жмакает мышкой), система вызывает прерывание, что полностью останавливает все процессоры. После этого процы возвращаются к предшествующей обработке данных, на это тоже уходит время. В итоге и получаем цифру 7% и неоправданную трату денежных средств.

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

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

Технология NUMA

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

Примерами многопроцессорных установок могут служить HP 9000, NUMA-Q, Sun HPC 10000 и т.д. Масштабируемость ограничивается лишь адресным пространством. На данный момент максимальное число процессоров для такой технологии - 256.

Общая память или SMP

SMP подразумевает общий доступ к любому участку памяти в любое время. С этим связан ряд осложнений, например, наличие коллизий. Когда очередность процессоров в обращении к памяти строго оговорена, никаких проблем не возникает. При одновременном обращении к памяти имеем коллизию. Во время сложных расчетов таких коллизий будет много. Что делает процессор, когда не может передать данные в память? Правильно, ничего :). Он ожидает нужного момента, тактично простаивая. В итоге имеем целых два недостатка: простои и коллизии.

Интел пошел по принципу "большой кэш - меньше коллизий". Но действенен ли этот лозунг? Распределение участков кэша ложится на плечи программиста. Если программист не халтурил, вероятность возникновения коллизии составляет 8% (в случае халтуры до 60%). Следует учитывать и непредвиденные ситуации: возникновение прерываний, при которых все процессоры останавливаются. Часть данных в кэше могут не относиться к выполняемой задаче, что сказывается на времени. К тому же, с ростом числа процессоров, вероятность коллизий возрастает по экспоненте. Поэтому технология SMP далека от идеала и использует не более 16 процессоров.

Но, тем не менее, SMP прижилась в компьютерном мире. Предприятия с готовностью закупают мультипроцессорные серверы и радуются жизни, ведь цель всегда оправдывает средства :).

Сложности MPP

Когда я говорю о MPP, то имею в виду ряд параллельных компьютеров с распределенной памятью. Первой их особенностью является достаточно низкая цена, но разработка параллельных задач - весьма дорогой процесс.

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

В MPP существуют две различные модели для выполнения задач:

1. SIMD (single instruction stream - multiple data streams) - представляет собой модель, при которой каждый процессор выполняет общую задачу, но со своими данными. Эту модель применяют в зависимости от постановки задачи. Естественно, что заставить каждый проц выполнять сторонние расчеты невозможно.

2. MIMD (multiple instructions streams - multiple data streams) - позволяет решать разные задачи разными процессорами. Недостаток этой модели - сложное программирование для машин с MIMD.

В качестве альтернативы может использоваться еще одна парадигма: SPMD (single program - multiple data). В этой модели во всех узлах выполняется одна и та же программа, но вот пути решения задач различны. По сути, эта парадигма является некоторым объединением SIMD и MIMD.

Чтобы передать данные от процессора к процессору, применяют специальные коммутаторы либо сетевые адаптеры. При этом используется так называемая линейка процессоров: каждый камень связывается не только с конечными, но и с соседними процами, что намного упрощает передачу данных между ними. Для передачи информации могут применяться и сложные системы: транскомпьютеры с четырьмя распараллеленными каналами, двумерные решетки, бинарные деревья и т.д. Коммутаторы, кстати, применяют довольно редко из-за сложности организации, хотя это позволяет связать определенный процессор с любым другим напрямую.

Примером MPP-систем могут служить следующие серверы: IBM RS/6000 SP2, Intel PARAGON/ASCI Red, CRAY T3E и т.п.

Макинтош не отстает!

Как это ни парадоксально, маки также затачиваются под мультипроцессорные архитектуры. MacOS умеет работать с несколькими камнями, а в качестве технологии используется SMP. К сведению, компания Motorola совсем недавно выпустила процессор следующего поколения - PowerPC G5, с официально объявленной частотой 1,6 ГГц. В лабораториях Apple эти чипы уже работают на частотах 2,4 ГГц.

Метакомпьютеры

Существует еще один вид распределенной системы. Это компьютеры, которые обмениваются информацией по сети. По сути, это обычная система распределенных вычислений. Применяется она в крупных локальных сетях или в интернете. Ты, наверное, посещал сайты, где предлагалось скачать специальный клиент для расшифровки активности зеленых человечков :). На самом деле, таких вычислений может быть очень много: от расшифровки 128-битного ключа до исследования белковых соединений.

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

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

Одним из основных ресурсов, влияющих на производительность вычислительных систем, является алгоритм доступа к разделяемой оперативной памяти.

В SMP оперативная память представляет (физически) последовательное адресное пространство, доступ к которому имеют одновременно все процессоры системы по единой коммуникационной среде.

Основные достоинства технологии однорангового доступа SMP: простота организации вычислительного процесса, эффективность организации программного кода задачи и проверенное временем программно-аппаратное решение.

Технология NUMA - альтернатива одноранговому доступу для SMP систем, и в настоящее время начинает приобретать все большую популярность среди производителей традиционных SMP компьютеров.

Недостатки NUMA архитектуры: молодость реализаций NUMA архитектуры, необходимость иметь специализированное системное программное обеспечение и неэффективное исполнение кодов прикладных программ, оттранслированных для SMP систем.

Основа кластера - несколько отказоустойчивых серверов (node), от 2 до N в зависимости от конфигурации кластера и его задач.

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

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



Malder © 2004
Используются технологии uCoz