Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60117.doc
Скачиваний:
7
Добавлен:
01.05.2022
Размер:
961.02 Кб
Скачать

2.9. Классификация многопроцессорных систем

Классификация многопроцессорных систем производят следующим образом.

1. SMP-системы (Symmetrical Multi Processor systems). В подобной системе все процессоры имеют совершенно равноправный доступ к общей оперативной памяти (рис. 2.2). Работать с такими системами программистам удобно, поскольку не возникает никаких специфичных «особенностей», связанных с архитектурой компьютера. Но, к сожалению, создавать подобные системы крайне трудно: 2-4 процессора – практический предел для стоящих разумные деньги SMP-систем.

Рис. 2.2. Структурная схема SMP-системы

2. NUMA-системы (Non-Uniform Memory Access systems). Память становится «неоднородной»: один её блок быстрее, другой – медленнее, т.е. время отклика для них различно (рис. 2.3).

Рис. 2.3. Структурная схема NUMA-системы

В системе при этом образуются своеобразные «островки» со своей быстрой «локальной» оперативной памятью, соединенные относительно медленными линиями связи. Обращения к «своей» памяти происходят быстро, к «чужой» - медленнее, причем чем дальше чужая память расположена, тем медленнее получается доступ к ней. Создавать NUMA-системы значительно проще, чем SMP, а вот программы писать сложнее – без учета неоднородности памяти эффективную программу для NUMA написать невозможно.

3. Последний тип многопроцессорных систем – кластеры. Берут некоторое количество «почти самостоятельных» компьютеров (узлы кластера или «ноды») и объединяют их быстродействующими линиями связи (рис. 2.4).

Рис. 2.4. Структурная схема кластера

Общей памяти здесь может и не быть вообще, но и здесь её несложно реализовать, создав существенно неоднородную NUMA-систему. На практике обычно удобнее работать с кластером в «явном» виде, явно описывая в программе все пересылки данных между его узлами. То есть, если для NUMA еще можно создавать программы, почти не задумываясь над тем, как система работает и откуда берутся необходимые для работы потоков данные, то при работе с кластером требуется очень четко планировать, кто, что и где делает. Это очень неудобно для программистов и вдобавок, накладывает существенные ограничения на применимость кластерных систем. Но зато кластер – это очень дешево.

Intel сегодня предпочитает создавать SMP-системы; AMD, IBM и Sun - те или иные варианты NUMA. Основная «область применения» кластеров – суперкомпьютеры.

2.10. Многоядерные процессоры

Фирма IBM анонсировала создание первых двуядерных процессоров в 1999 году (IBM Power4 для серверов); в 2001 году эти процессоры появились в продаже.

Идея многоядерного процессора выглядит на первый взгляд совершенно тривиальной: просто упаковываем два-три (или более) процессора в один корпус - и компьютер получает возможность исполнять несколько программных потоков одновременно. Конкретные её реализации в недавно вышедших настольных процессорах AMD и Intel заметно различаются. Различаются настолько, что сугубо «количественные» мелочи в конечном итоге переходят в качественные различия между процессорами этих двух компаний.

Проанализируем различия в подходах при создании этих микропроцессоров и оценим предполагаемую производительность.

Рис. 2.5. Схема многопроцессорной системы

с общей памятью

Во-первых, решается «проблема общей памяти» (рис. 2.5). Если сравнивать сегодняшние системы (а это, как минимум, двухканальная DDR400) с системами трехлетней давности (одноканальная SDRAM PC133), то прогресс здесь, конечно, достигнут впечатляющий: пропускная способность оперативной памяти увеличилась более чем в 8-10 раз, в то время как вычислительная мощность центральных процессоров – несколько меньше (в ряде тестов - только в 3-4 раза). Правда, латентность оперативной памяти по меркам процессора остается по-прежнему огромной, но и с этой проблемой научились эффективно бороться, используя кэш-память внушительных размеров и механизмы аппаратной и программной предвыборки из памяти. Однако стоит поставить в систему не одно, а два, четыре, а то и восемь процессорных ядер, как проблема «медленной памяти» всплывает с прежней силой – особенно в архитектуре SMP с контроллером памяти в чипсепте.

На практике это выливается в «проблему масштабируемости» - когда использование нескольких процессоров не приводит к ожидаемому приросту производительности. Подсчитаем: если, например, одиночный процессор 20% своего времени простаивал, ожидая данных из оперативной памяти, то сдвоенный будет простаивать 33% времени, а «четверка» - 50%. В пересчёте на общую производительность, 1P-система работает со скоростью 100%, 2P-система – со скоростью 167% (вместо расчётных 200%), а 4P-система – со скоростью 250% (вместо 400%). Более того: получить даже пятикратный прирост производительности в данном случае невозможно в принципе (рис. 2.6). Этот эффект свойственен исключительно многопроцессорным системам: если в данном примере заменить оперативную память на вдвое более быструю, то производительность однопроцессорной системы возрастет лишь на 11%. Такие показатели получаются в программах, которые много времени проводят в ожидании данных от памяти (не из кэш, а именно из ОЗУ: если у нас программа почти всегда работает с кэш – никаких проблем не возникает). То есть: если на одном процессоре 80% времени вычислений и 20% ожидания данных из памяти, то на двух получаем 40% вычислений и 20% ожидания данных из памяти (в пересчёте к «старым» процентам); выигрыш составляет 100/60 = 167%. И так далее. Если установить вдвое более быструю память – получаем на двухпроцессорной системе 80% вычислений и 10% ожидания данных из памяти; выигрыш – 100/90=111%.

Рис. 2.6. Зависимость прироста производительности системы от числа процессоров

В идеале любая многопроцессорная система должна быть хорошо сбалансирована – слишком быстрая память обходится слишком дорого; слишком медленная – сводит эффект от установки нескольких процессоров к минимуму. То есть если для однопроцессорной системы вполне достаточно двухканальной оперативной памяти DDR (а практика показывает, что это, скорее всего, так), то в «двушку» желательно установить четырехканальный, а в «квад» - восьмиканальный контроллер памяти DDR. Но на практике даже четырехканальный контроллер пока обходится слишком дорого. Правда, четыре канала в следующем поколении чипсетов Intel мы всё-таки увидим (причем контроллеры памяти в них вынесены за пределы Northbridge в виде отдельных микросхем); а в 2008 г. на рынке должна появиться серверная оперативная память FB-DIMM с последовательным интерфейсом доступа к памяти, которая позволит создавать шести- и восьмиканальные контроллеры памяти.

Но это всё - в SMP, а вот в NUMA (типа AMD), где двухканальный контроллер памяти интегрирован в каждый процессор, суммарная производительность подсистемы памяти как раз и возрастает пропорционально количеству процессоров. Правда, у NUMA, как уже было сказано, свои проблемы - неоднородность скорости работы различных участков памяти. В случае новых AMD Opteron можно подсчитать, что в среднем пропускная способность памяти в пересчёте на один процессор составляет для 2P-систем порядка 81% (100% в лучшем, 62% в худшем), для 4P – где-то между 62% и 53% (31% в худшем случае). Для 8P-систем всё гораздо неприятнее – без учета особенностей NUMA там не получится «выжать» из подсистемы памяти и 30% её пропускной способности (большинство обращений будут к чужой памяти, причем в среднем каждый линк HT будут занимать по три процессора одновременно). Принцип этих оценок заключается в том, чтобы посчитать устоявшиеся потоки данных, полагая, что они равномерно распределяются по кратчайшим путям между процессорами. Считается, сколько каждому CPU достанется процентов от общей пропускной способности линков HT; считаются доли запросов в «свою» память и запросов, проходящих через линки HT. Например, для двухпроцессорной системы линк HT процессору ни с кем делить не требуется, 50% запросов идет в оперативную память, 50% - по линку HT. Всего (6,4 * 0,5 + 4,0 * 0,5) = 5,2 Гбайт/c, т.е. 5,2/6,4 = 81%.

Впрочем, если сравнивать с аналогичными цифрами для SMP (50, 25 и 12% соответственно), то нельзя не признать, что даже неоптимизированные программы должны работать с памятью на Opteron в несколько раз быстрее, чем на «традиционных» SMP. А если еще вспомнить, что кросс-бар и контроллер памяти AMD K8 работают с поразительно низкой латентностью, то эффективности работы Opteron с оперативной памятью можно только позавидовать.

Решение «проблемы общей памяти» - далеко не единственное преимущество подхода AMD. Обычные SMP страдают еще и от «проблемы общей шины»: мало сделать быстрый контроллер памяти – нужно еще и обеспечить достаточно быструю передачу полученных из памяти данных к процессору. Хотя новейший чипсет Intel 955X Express поддерживает двухканальную оперативную память DDR2 667 МГц с пиковой пропускной способностью 10,7 Гбайт/с, 800-мегагерцовая процессорная шина не позволяет «прокачивать» более 6,4 Гбайт/с. И это еще не всё: чем больше процессоров мы помещаем на системную шину, тем сложнее обеспечить безошибочную передачу по ней данных (возрастает электрическая нагрузка, усложняется разводка). В итоге, если один процессор свободно работает с шиной 800 и даже 1066 МГц, то два процессора уже вынуждены ограничиться шиной не выше 800 МГц, а четыре – работают только с шиной 667 МГц и ниже. Таковы проблемы SMP; мегабайты и даже десятки мегабайт кэш-памяти третьего уровня для них не роскошь, а жестокая необходимость.

Intel, правда, нашла достаточно успешный способ отчасти обойти эту проблему, используя в новейших многопроцессорных системах сразу две независимых процессорных шины. Но в неоднородной AMD SUMA-архитектуре этой проблемы вообще нет. И хотя два ядра в двуядерниках AMD разделяют общую шину SRI, работает эта шина все же, как и кросс-бар, на полной частоте процессора, как и вообще все его внутренние шины, то есть ничем не отличается, скажем, от шины, соединяющий между собой его кэш-память различных уровней. В итоге эта «общая» шина у AMD получается настолько быстродействующая, что ядра друг другу практически не мешают – их ограничивает только пропускная способность оперативной памяти и ведущих во «внешний мир» линков HyperTransport.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]