Мультипроцессорные вычислительные системы. Архитектурные решения многопроцессорных систем

5. СИММЕТРИЧНЫЕ МУЛЬТИПРОЦЕССОРНЫЕ СИСТЕМЫ

5.1. Отличительные признаки и преимущества симметричных

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

Для класса симметричных мультипроцессорных (SMP – symmetric multiprocessor ) систем характерны следующие отличительные признаки:

    наличие двух или более одинаковых или близких по характеристикам процессоров;

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

    процессоры имеют доступ к общим средствам ввода–вывода либо через один и тот же канал, либо через раздельные каналы;

    все процессоры способны выполнять одинаковый набор функций (отсюда и определение симметричная система);

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

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

Наиболее существенные преимущества SMP–систем перед однопроцессорными состоят в следующем.

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

Надежность. Поскольку все процессоры в SMP–системе однотипны и могут выполнять одни и те же задачи, в случае отказа одного из них запланированную для него задачу можно передать другому процессору. Следовательно, отказ одного из процессоров не приведет к потере работоспособности всей системы.

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

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

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

Очень привлекательной для пользователей особенностью SMP–систем является ее прозрачность. Операционная система берет на себя все заботы по распределению задач между отдельными процессорами и синхронизации их работы.

5.2. Структурная организация SMP –систем

На рис. 5.1 показана обобщенная блок–схема мультипроцессорной системы.

Рис. 5.1. Обобщенная схема мультипроцессорной системы

В составе системы имеется два процессора или больше, каждый из которых располагает всем комплектом необходимых узлов – устройством управления, АЛУ, регистрами и блоком кэша. Каждый процессор имеет доступ к главной памяти системы и устройствам ввода–вывода через некоторую подсистему взаимодействия. Процессоры могут обмениваться данными и сообщениями через главную память (для этого в ней выделяется отдельная область связи). Кроме того, в системе может поддерживаться и возможность непосредственного обмена сигналами между отдельными процессорами. Часто общая память организована таким образом, что процессоры могут одновременно обращаться к ее разным блокам. В некоторых вариантах систем процессоры располагают блоками локальной памяти и собственными каналами ввода–вывода помимо ресурсов общего пользования.

Варианты структурной организации мультипроцессорных систем можно классифицировать следующим образом:

    системы с общей или разделяемой во времени магистралью;

    системы с многопортовой памятью;

    системы с центральным устройством управления.

5.2.1. Системы с общей магистралью

Использование общей магистрали в режиме разделения времени – это самый простой способ организации совместной работы процессоров в SMP–системе (рис. 5.2). Структура магистрали и интерфейс практически те же, что и в однопроцессорной системе. В составе магистрали предусматриваются линии данных, адреса и управляющих сигналов. Для упрощения работы механизма прямого доступа к памяти со стороны модулей ввода–вывода принимаются следующие меры.

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

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

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

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


Рис. 5.2. Организация SMP системы с общей магистралью

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

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

Гибкость . Систему с магистральной организацией связей довольно просто переконфигурировать, добавив в нее новые процессоры.

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

Основной недостаток системы с общей магистралью – ограниченная производительность. Все операции доступа к главной памяти должны проходить по единственному пути – через общую магистраль и, следовательно, быстродействие системы ограничено длительностью цикла магистрали. Частично с этой проблемой позволяет справиться оснащение каждого процессора собственным блоком кэш–памяти, что снижает количество обращений к главной памяти. Как правило, применяется двухуровневая организация кэша: кэш уровня L1 размещается в БИС процессора (внутренний кэш), а кэш уровня L2 – внешний.

Однако применение кэш–памяти в мультипроцессорной системе порождает проблему согласованности или информационной целостности кэшей отдельных процессоров.

5.2.2. Системы с многопортовой памятью

Использование в SMP–системах многопортовой памяти позволяет организовать прямое обращение каждого процессора и модуля ввода–вывода к общему массиву информации, независимо от всех других (рис. 5.3). При этом каждый модуль памяти должен быть оснащен логической схемой разрешения возможных конфликтов. Для этого чаще всего портам назначаются определенные приоритеты. Как правило, электрический и физический интерфейс каждого порта идентичен и по отношению к устройству, подключенному к этому порту; модуль памяти можно рассматривать как однопортовый. Поэтому в схеме процессора или модуля ввода–вывода практически не нужно проводить никаких изменений для подключения к многопортовой памяти.


Рис. 5.3. Схема многопортовой памяти

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

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

5.2.3. Системы с центральным устройством управления

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

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

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

5.3. SMP –системы на базе больших вычислительных машин

5.3.1. Структура SMP –системы на базе больших

вычислительных машин

В большинстве SMP–систем персонального пользования и рабочих станций для организации взаимодействия между компонентами используется системная магистраль. В комплексах на базе больших компьютеров (мейнфреймов) применяется альтернативный подход. Блок–схема подобного комплекса представлена на рис. 5.4. В семейство входят компьютеры разных классов – от однопроцессорных с единственной платой главной памяти до высокопроизводительных систем с десятком процессоров и четырьмя блоками главной памяти. В конфигурацию также включены дополнительные процессоры, которые выполняют функции модулей ввода–вывода. Основные компоненты вычислительных комплексов на базе больших вычислительных машин следующие.

Процессор ПР - CISC–микропроцессор, в котором управление обработкой наиболее часто используемых команд реализовано аппаратно, а остальные команды выполняются с помощью микропрограмм. В состав БИС каждого ПР входит кэш уровня L1 объемом 64 Кбайт, в котором хранятся и команды, и данные.

Кэш уровня L 2 объемом 384 Кбайт. Блоки кэша L2 объединены по два в кластеры, причем каждый кластер поддерживает работу с тремя процессорами и обеспечивает доступ ко всему адресному пространству основной памяти.

Адаптер переключения магистрали - BSN (bus switching network adapter ), который организует связь блоков кэша L2 с одним из четырех блоков главной памяти. В состав BSN входит и кэш уровня L3 объемом 2 Мбайт.

Одноплатный блок главной памяти объемом 8 Гбайт. В состав ком-плекса входят четыре таких блока, обеспечивая общий объем главной памяти 32 Гбайт.

В этой структуре есть несколько особенностей, на которых стоит остановиться подробнее:

    переключаемая подсистема взаимосвязей;

    совместно используемый кэш уровня L2;

    кэш уровня L3.


Рис.5.4. Блок–схема SMP–системы на базе больших машин

5.3.2. Переключаемая подсистема взаимосвязей

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

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

Во–вторых, связь между каждым процессором (фактически, между его кэшем уровня L2) и отдельным блоком памяти реализована не в форме магистрали совместного пользования, а, скорее, в форме двухточечного соединения – каждая связь подключает группу из трех процессоров через кэш L2 к модулю BSN. В свою очередь, BSN выполняет функцию переключителя, который объединяет пять каналов связи (четыре с кэшами L2 и один с блоком памяти) – связывает четыре физических канала в одну логическую магистраль передачи данных. Таким образом, сигнал, поступающий по любому из четырех каналов, подключенных к кэшам L2, дублируется по остальным трем каналам, и тем самым обеспечивается информационная целостность кэшей.

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

5.3.3. Совместное использование блоков кэша уровня L 2

В типовой структуре SMP–системы каждый процессор имеет собственные блоки кэша (как правило, двух уровней). В последние годы все больший интерес у разработчиков систем вызывает концепция совместного использования блоков кэша уровня L2. В ранней версии SMP–системы на базе большой машины использовались 12 блоков кэша L2, каждый из которых "находился в распоряжении" одного определенного процессора. В более поздних версиях блоки кэшей L2 используются совместно несколькими процессорами. Это было сделано исходя из следующих соображений.

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

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

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

Разработчики новой версии системы просматривали также и вариант включения в систему единственного кэша большого объема, совместно используемого всеми процессорами. Хотя такая структура системы и сулила еще большее повышение производительности, от нее пришлось отказаться, поскольку в этом варианте требовалась полная переделка всей существующей организации связей. Анализ потоков данных в системе показал, что внедрение совместного использования блоков кэша, связанных с каждым из имеющихся BSN, уже позволит добиться весьма ощутимого повышения производительности системы. При этом, по сравнению с кэшами индивидуального пользования, значительно увеличивается процент попадания при обращении к кэшу и, соответственно, снижается количество обращений к главной памяти.

5.3.4. Кэш уровня L 3

Еще одна особенность SMP–системы на базе большой машины – включение в ее структуру кэша третьего уровня, L3. Кэш L3 входит в состав каждого блока BSN и, следовательно, является буфером между кэшами L2 и одним из блоков главной памяти. Применение этого кэша позволяет уменьшить задержку поступления данных, которые отсутствуют в кэшах L1 и L2. Если эти данные ранее потребовались какому–либо из процессоров, то они присутствуют в кэше L3 и могут быть переданы новому процессору. Время извлечения данных из кэша L3 меньше времени обращения к блоку главной памяти, что и обеспечивает выигрыш в быстродействии.

В табл. 5.1 показаны данные, полученные при исследовании производительности типичной SMP–системы на базе IBM S/390 . Показатель "задержка доступа" характеризует время, необходимое для извлечения данных процессором в случае, если они присутствуют в том или ином структурном элементе подсистемы памяти. При запросе процессором новой информации в 89% случаев она отыскивается в его собственном кэше L1. В остальных 11% случаев приходится обращаться к кэшам следующих уровней или к блоку главной памяти. В 5% случаев необходимая информация отыскивается в кэше L2 и т.д. Только в 3% случаев приходится в конце концов обращаться к блоку главной памяти. Без кэша третьего уровня этот показатель был бы в два раза больше.

Таблица 5.1

Показатели эффективности элементов подсистемы памяти

в SMP–системе на базе IBM S/390

Подсистема памяти

Задержка доступа (циклов работы

процессора)

Процент попаданий

Главная память

5.4. Информационная целостность кэшей и протокол MESI

5.4.1. Способы решения проблемы информационной

целостности

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

Обратная запись (write back ). В этом варианте процессор вносит изменения только в содержимое своего кэша. Содержимое строки переписывается в главную память, когда возникает необходимость очистить измененную строку кэша для приема нового блока данных.

Сквозная запись (write through ). Все операции записи в кэш сразу же дублируются в главной памяти, не дожидаясь момента, когда нужно будет заменить содержимое соответствующей строки кэша. В результате можно всегда быть уверенным в том, что в оперативной памяти хранится самая свежая, а значит, в любой момент времени достоверная, информация.

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

системМетодические указания

Университет Кафедра компьютерных измерительных систем и метрологии ________________________________________________ И Н Ф О Р М А Т И К А Архитектура вычислительных систем . Основные подсистемы персонального компьютера...

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

SMP-система строится на основе высокоскоростной системной шины, к слотам которой подключаются функциональные блоки трех типов:

●процессоры (ЦП),

● оперативная память (ОП),

● подсистема ввода/вывода (I/O).

Память является способом передачи сообщений между процессорами. Все вычислительные устройства при обращении к ОП имеют равные права и одну и ту же адресацию для всех ячеек памяти. Последнее обстоятельство позволяет эффективно обмениваться данными с другими вычислительными устройствами. SMP-система работает под управлением единой ОС (либо UNIX-подобной, либо Windows). ОС автоматически распределяет процессы по процессорам, возможна и явная привязка. SMP-архитектура используется в cерверах и рабочих станциях на базе процессоров Intel, AMD, Sun, IBM, HP, и др.

Принципы организации:

SMP-система состоит из нескольких однородных процессоров и массива общей памяти. Каждая операция доступа к памяти интерпретируется как транзакция по шине процессоры-память. Слово "равноправный" означает, что каждый процессор может делать все, что любой другой. Каждый процессор имеет доступ ко всей памяти, может выполнять любую операцию ввода/вывода, прерывать другие процессоры и т.д. В SMP каждый процессор имеет по крайней мере одну собственную кэш-память.

Когерентность кэшей поддерживается аппаратными средствами.

Достоинства:

· Простота и универсальность для программирования. Архитектура SMP не накладывает ограничений на модель программирования, используемую при создании приложения: обычно используется модель параллельных ветвей, когда все процессоры работают абсолютно независимо друг от друга - однако, можно реализовать и модели, использующие межпроцессорный обмен. Использование общей памяти увеличивает скорость такого обмена, пользователь также имеет доступ сразу ко всему объему памяти.

· Легкость в эксплуатации. Как правило, SMP-системы используют систему охлаждения на воздушном кондиционировании, что облегчает их обслуживание.

· Относительно невысокая цена.

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

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

Недостатки:

SMP-cистемы плохо масштабируемы:

1.Системная шина имеет ограниченную пропускную способность и ограниченное число слотов.

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

В реальных системах эффективно можно использовать не более 8-16-32 процессоров.

Применение:

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

Примеры компьютеров с SMP-архитектурой:

HP 9000 (до 32 процессоров), Sun HPC 100000 (до 64 проц.), Compaq AlphaServer (до 32 проц.), Sun SPARC Enterprise T5220
2.8. MPP архитектура. История развития. Основные принципы. Концепция, архитектура и характеристики суперкомпьютера Intel Paragon.

Массово-параллельная архитектура (Massive Parallel Processing) - класс архитектур параллельных вычислительных систем. Особенность архитектуры состоит в том, что память физически разделена. Система строится из отдельных узлов, содержащих процессор, локальный банк ОП, коммуникационные процессоры или сетевые адаптеры, иногда - жесткие диски и/или другие устройства ввода/вывода.

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

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

● Во втором варианте на каждом модуле работает полноценная, чаще всего UNIX-подобная ОС, устанавливаемая отдельно.


Раскройте силу Linux в системах SMP

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

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

История многопроцессорной обработки

Многопроцессорная обработка зародилась в середине 1950-х в ряде компаний, некоторые из которых вы знаете, а некоторые, возможно, уже забыли (IBM, Digital Equipment Corporation, Control Data Corporation). В начале 1960-х Burroughs Corporation представила симметричный мультипроцессор типа MIMD с четырьмя CPU, имеющий до шестнадцати модулей памяти, соединенных координатным соединителем (первая архитектура SMP). Широко известный и удачный CDC 6600 был представлен в 1964 и обеспечивал CPU десятью подпроцессорами (периферийными процессорами). В конце 1960-х Honeywell выпустил другую симметричную мультипроцессорную систему из восьми CPU Multics.

В то время как многопроцессорные системы развивались, технологии также шли вперед, уменьшая размеры процессоров и увеличивая их способности работать на значительно большей тактовой частоте. В 1980-х такие компании, как Cray Research, представили многопроцессорные системы и UNIX®-подобные операционные системы, которые могли их использовать (CX-OS).

В конце 1980-х с популярностью однопроцессорных персональных компьютеров, таких как IBM PC, наблюдался упадок в многопроцессорных системах. Но сейчас, двадцать лет спустя, многопроцессорная обработка вернулась к тем же самым персональным компьютерам в виде симметричной многопроцессорной обработки.

Закон Амдаля

Джин Амдаль (Gene Amdahl), компьютерный архитектор и сотрудник IBM, разрабатывал в IBM компьютерные архитектуры, создал одноименную фирму, Amdahl Corporation и др. Но известность ему принес его закон, в котором рассчитывается максимально возможное улучшение системы при улучшении ее части. Закон используется, главным образом, для вычисления максимального теоретического улучшения работы системы при использовании нескольких процессоров (смотри Рисунок 1).

Рисунок 1. Закон Амдаля для распараллеливания процессов

Используя уравнение, показанное на Рисунке 1, вы можете вычислить максимальное улучшение производительности системы, использующей N процессоров и фактор F , который указывает, какая часть системы не может быть распараллелена (часть системы, которая последовательна по своей природе). Результат приведен на Рисунке 2.

Рисунок 2. Закон Амдаля для системы, имеющей до десяти CPU

Верхняя линия на Рисунке 2 показывает число процессоров. В идеале это то, что вы хотели бы увидеть после добавления дополнительных процессоров для решения задачи. К сожалению, из-за того что не все в задаче может быть распараллелено и есть непроизводительные издержки в управлении процессорами, ускорение оказывается немного меньше. Внизу (лиловая линия) -- случай задачи, которая на 90% последовательна. Лучшему случаю на этом графике соответствует коричневая линия, которая изображает задачу, которая на 10% последовательна и, соответственно, на 90% -- параллелизуема. Даже в этом случае десять процессоров работают совсем не намного лучше, чем пять.

Многопроцессорная обработка и ПК

Архитектура SMP -- одна из тех, где два или более идентичных процессоров соединены друг с другом посредством разделяемой памяти. У всех них одинаковый доступ к разделяемой памяти (одинаковое время ожидания доступа к пространству памяти). Противоположностью ей является архитектура неоднородного доступа к памяти (NUMA -- Non-Uniform Memory Access). Например, у каждого процессора есть своя собственная память и доступ к разделяемой памяти с разным временем ожидания.

Слабосвязанная многопроцессорная обработка

Ранние SMP системы Linux были слабосвязанными многопроцессорными системами, то есть построенными из нескольких отдельных систем, связанных высокоскоростным соединением (таким как 10G Ethernet, Fibre Channel или Infiniband). Другое название такого типа архитектуры -- кластер (смотрите Рисунок 3), для которого популярным решением остается проект Linux Beowulf. Кластеры Linux Beowulf могут быть построены из доступного оборудования и обычного сетевого соединения, такого как Ethernet.

Рисунок 3. Слабосвязанная многопроцессорная архитектура

Построение систем со слабосвязанной многопроцессорной архитектурой просто (спасибо проектам вроде Beowulf), но имеет свои ограничения. Создание большой многопроцессорной сети может потребовать значительных мощностей и места. Более серьезное препятствие -- материал канала связи. Даже с высокоскоростной сетью, такой как 10G Ethernet, есть предел масштабируемости системы.

Сильносвязанная многопроцессорная обработка

Сильносвязанная многопроцессорная обработка относится к обработке на уровне кристалла (CMP -- chip-level multiprocessing). Представьте слабосвязанную архитектуру, уменьшенную до уровня кристалла. Это и есть идея сильносвязанной многопроцессорной обработки (также называемой многоядерным вычислением). На одной интегральной микросхеме несколько кристаллов, общая память и соединение образуют хорошо интегрированное ядро для многопроцессорной обработки (смотрите Рисунок 4).

Рисунок 4. Сильносвязанная архитектура многопроцессорной обработки

В CMP несколько CPU связаны общей шиной с разделяемой памятью (кэш второго уровня). Каждый процессор также имеет свою собственную быстродействующую память (кэш первого уровня). Сильносвязанная природа CMP позволяет очень короткие физические расстояния между процессорами и памятью и, вследствие этого, минимальное время ожидания доступа к памяти и более высокую производительность. Такой тип архитектуры хорошо работает в многопоточных приложениях, где потоки могут быть распределены между процессорами и выполняться параллельно. Это называется параллелизм на уровне потоков (TPL -- thread-level parallelism).

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

Таблица 1. Выборка устройств CMP
Производитель Устройство Описание
IBM POWER4 SMP, два CPU
IBM POWER5 SMP, два CPU, четыре параллельных потока
AMD AMD X2 SMP, два CPU
Intel® Xeon SMP, два или четыре CPU
Intel Core2 Duo SMP, два CPU
ARM MPCore SMP, до четырех CPUs
IBM Xenon SMP, три Power PC CPU
IBM Cell Processor Асимметричная многопроцессорная обработка (ASMP --Asymmetric multiprocessing), девять CPU

Конфигурация ядра

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

Сначала вы получаете число процессоров из файла cpuinfo в /proc, используя grep . Как видно из Листинга 1, вы используете опцию -- счетчик (-c) строк, начинающихся со слова processor . Приведено также содержимое файла cpuinfo . В качестве примера взята материнская плата Xeon на двух кристаллах.

Листинг 1. Использование файловой системы proc для получения информации о CPU
mtj@camus:~$ grep -c ^processor /proc/cpuinfo 8 mtj@camus:~$ cat /proc/cpuinfo processor: 0 vendor_id: GenuineIntel cpu family: 15 model: 6 model name: Intel(R) Xeon(TM) CPU 3.73GHz stepping: 4 cpu MHz: 3724.219 cache size: 2048 KB physical id: 0 siblings: 4 core id: 0 cpu cores: 2 fdiv_bug: no hlt_bug: no f00f_bug: no coma_bug: no fpu: yes fpu_exception: yes cpuid level: 6 wp: yes flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm pni monitor ds_cpl est cid xtpr bogomips: 7389.18 ... processor: 7 vendor_id: GenuineIntel cpu family: 15 model: 6 model name: Intel(R) Xeon(TM) CPU 3.73GHz stepping: 4 cpu MHz: 3724.219 cache size: 2048 KB physical id: 1 siblings: 4 core id: 3 cpu cores: 2 fdiv_bug: no hlt_bug: no f00f_bug: no coma_bug: no fpu: yes fpu_exception: yes cpuid level: 6 wp: yes flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm pni monitor ds_cpl est cid xtpr bogomips: 7438.33 mtj@camus:~$

SMP и ядро Linux

Когда только появился Linux 2.0, поддержка SMP состояла из основной системы блокировки, которая упорядочивала доступ в системе. Позднее небольшой прогресс в поддержке SMP был, но только с ядром 2.6 наконец проявилась вся сила SMP.

Ядро 2.6 представило новый 0(1) планировщик, который включал лучшую поддержку для систем SMP. Ключевой была возможность балансировать нагрузку на все доступные CPU, по мере сил избегая переключения процессов между процессорами для более эффективного использования кэша. Что касается производительности кэша, вспомните из Рисунка 4, что когда задача взаимодействует с одним CPU, перемещение ее на другой требует вовлечения кэша. Это увеличивает время ожидания доступа к памяти задачи, пока ее данные находятся в кэше нового CPU.

Ядро 2.6 сохраняет пару runqueue для каждого процессора (истекший и активный runqueue). Каждый runqueue поддерживает 140 приоритетов, из которых 100 используется для задач в реальном времени, а остальные 40 для пользовательских задач. Задачам даются отрезки времени для выполнения, а когда они используют свое время, они перемещаются из активного runqueue в истекший. Таким образом осуществляется равноправный доступ к CPU для всех задач (блокировка только отдельных CPU).

С очередью задач на каждом CPU работа может быть сбалансирована, давая взвешенную нагрузку всех CPU в системе. Каждые 200 миллисекунд планировщик выполняет балансировку загрузки, чтобы перераспределить задания и сохранить баланс в комплексе процессоров. Больше информации о планировщике Linux 2.6 ищите в разделе .

Потоки пользовательского пространства: развивая силу SMP

В ядре Linux была проделана большая работа для развития SMP, но операционной системы, самой по себе, недостаточно. Вспомните, что сила SMP заключается в TLP. Отдельные монолитные (одно-поточные) программы не могут использовать SMP, но SMP может использоваться в программах, которые состоят из многих потоков, которые могут быть распределены между ядрами. Пока один поток ожидает выполнения операции I/O, другой может делать полезную работу. Таким образом, потоки работают, перекрывая время ожидания друг друга.

Потоки стандарта Portable Operating System Interface (POSIX) (интерфейс переносимой операционной системы) являются прекрасным способом построить поточные приложения, которые могут использовать SMP. Потоки стандарта POSIX обеспечивают механизм работы с потоками, а также общую память. Когда программа активизируется, создается некоторое количество потоков, каждый из которых поддерживает свой собственный стек (локальные переменные и состояние), но разделяет пространство данных родителя. Все созданные потоки разделяют это же самое пространство данных, но именно здесь кроется проблема.

Чтобы поддерживать многопоточный доступ к разделяемой памяти, требуются механизмы координирования. POSIX предоставляет функцию взаимного исключения для создания критических секций , которые устанавливают исключительный доступ к объекту (участку памяти) только для одного потока. Если этого не сделать, может повредиться память из-за несинхронизованных манипуляций, производимых несколькими потоками. Листинг 2 иллюстрирует создание критической секции с помощью взаимного исключения POSIX.

Листинг 2. Использование pthread_mutex_lock и unlock для создания критических секций
pthread_mutex_t crit_section_mutex = PTHREAD_MUTEX_INITIALIZER; ... pthread_mutex_lock(&crit_section_mutex); /* Внутри критической секции. Доступ к памяти здесь безопасен * для памяти, защищенной crit_section_mutex. */ pthread_mutex_unlock(&crit_section_mutex);

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

Защита переменной ядра для SMP

Когда несколько ядер в процессоре работает параллельно для ядра ОС, желательно избегать совместного использования данных, которые специфичны для данного ядра процессора. По этой причине ядро 2.6 представило концепцию переменных для каждого ядра, которые связаны с отдельными CPU. Это позволяет объявлять переменные для CPU, которые наиболее часто используются именно этим CPU, что минимизирует требования блокировок и улучшает выполнение.

Определение переменных отдельного ядра производится при помощи макроса DEFINE_PER_CPU , которому вы передаете тип и имя переменной. Поскольку макрос поступает как l-value, здесь же вы можете инициализировать ее. В следующем примере (из./arch/i386/kernel/smpboot.c) определяется переменная, представляющая состояние для каждого CPU в системе.

/* State of each CPU. */ DEFINE_PER_CPU(int, cpu_state) = { 0 };

Макрос создает массив переменных, одну на каждый экземпляр CPU. Для получения переменной отдельного CPU используется макрос per_cpu вместе с функцией smp_processor_id , возвращающей текущий идентификатор CPU, для которого в данный момент выполняется программа.

per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;

Ядро предоставляет другие функции для блокировки каждого CPU и динамического выделения переменных. Эти функции можно найти в./include/linux/percpu.h.

Заключение

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

Системы SMP вы найдете не только на серверах, но и на десктопах, особенно с внедрением виртуализации. Как многие передовые технологии, Linux предоставляет поддержку для SMP. Ядро выполняет свою часть по оптимизации загрузки доступных CPU (от потоков до виртуализованных операционных систем). Все, что остается, это убедиться, что приложение может быть в достаточной мере разделено на потоки, чтобы использовать силу SMP.

15.02.1995 В. Пятенок

Однопроцессорная архитектура Модифицированная однопроцессорная архитектура SMP-архитектура Архитектура SMP-маршрутизатора, предложенная Wellfleet Обзор архитектуры Детали обработки пакетов Резюме Литература Маршрутизаторы в своем развитии использовали три различных архитектуры: однопроцессорную, модифицированную однопроцессорную и симметричную многопроцессорную. Все три разрабатывались с учетом требований поддержки высококритичных применений.

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

Однопроцессорная архитектура

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

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

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

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

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

Модифицированная однопроцессорная архитектура

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

Периферийные процессоры - это, как правило, разрядно-модульные (bit-slace) или универсальные микропроцессоры, фильтрующие и маршрутизирующие пакеты, предназначающиеся сетевому интерфейсу того же модуля, с которого они и поступили в маршрутизатор. (К сожалению, во многих доступных в настоящий момент реализациях этого можно добиться в отношении пакетов только некоторых типов, таких как кадры Ethernet, но не IEEE 802.3.

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

Включение в архитектуру периферийных процессоров не повышает уровень готовности маршрутизатора в целом.

SMP-архитектура

Симметрично-многопроцессорная архитектура лишена недостатков, свойственных вышеупомянутым архитектурам. В этом случае вычислительные мощности полностью распределены между всеми сетевыми интерфейсными модулями.

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

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

Все пакеты обрабатываются локальными процессорами. Внешние (то есть предназначенные другим модулям) пакеты передаются по каналу связи между процессорами только однажды. Это ведет к существенному снижению трафика внутри маршрутизатора.

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

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

В оставшейся части мы подробнее рассмотрим технические детали архитектуры SMP-маршрутизатора, разработанной компанией Wellfleet .

Архитектура SMP-маршрутизатора, предложенная Wellfleet

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

1. Необходимость в масштабируемой производительности, высоком уровне готовности, гибкости конфигурирования диктует использование SMP-архитектуры.

2. Уровень требований многопротокольной маршрутизации к вычислительной мощности (особенно при использовании современных протоколов маршрутизации наподобие TCP/IP OSPF) может быть обеспечен только современными мощными 32-разрядными микропроцессорами. При этом, поскольку маршрутизация предполагает параллельное обслуживание большого числа сходных запросов, необходимо быстрое переключение между различными процессами, для чего требуется исключительно низкая задержка при переключении контекста, а также интегрированная кэш-память.

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

4. Чтобы обеспечить максимальную скорость передачи между сетями и обрабатывающими модулями маршрутизатора, требуются высокоскоростные сетевые интерфейсные контроллеры и контролллеры межпроцессорного взаимодействия с интегрированными возможностями прямого доступа к памяти (DMA - Direct Memory Access).

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

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

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

Обзор архитектуры

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

Модули связи обеспечивают физические сетевые интерфейсы, допускающие соединения с локальными и глобальными сетями практически любых типов. Каждый модуль связи напрямую присоединен к предназначенному именно ему процессорному модулю посредством интеллектуального интерфейса связи (ILI - Intelligent Link Interface). Пакеты, получаемые модулем связи, передаются в подключенный к нему процессорный модуль через собственное, прямое соединение. Процессор определяет, какому сетевому интерфейсу предназначаются эти пакеты, и либо перенаправляет их на другой сетевой интерфейс того же модуля связи, либо, по высокоскоростному межпроцессорному соединению, в другой процессорный модуль, который передаст этот пакет присоединенному к нему модулю связи.

Остановимся детальнее на структуре каждого из компонентов.

Процессорный модуль включает в себя:

Собственно центральный процессор;

Локальную память, в которой хранятся протоколы и таблицы маршрутизации, таблицы адресов и другая информация, локальным образом используемая ЦПУ;

Глобальную память, играющую роль буфера для "транзитных" пакетов данных, поступающих от модуля связи в присоединенный к нему процессорный модуль или от других процессорных модулей (глобальной она называется потому, что видима и доступна для всех процессорных модулей);

ОМА-процессор, обеспечивающий возможность прямого доступа к памяти при передаче пакетов между буферами глобальной памяти, размещенными в различных процессорных модулях;

Интерфейс связи, предоставляющий соединение с соответствующим модулем связи;

Внутренние каналы данных шириной 32 разряда, соединяющие все вышеперечисленные ресурсы и призванные обеспечить максимально возможную пропускную способность и минимальное время задержек; предусмотрены множественные каналы, что обеспечивает одновременное выполнение операций разными вычислительными устройствами (например, ЦПУ и DMA-процессором) и гарантирует отсутствие узких мест, замедляющих перенаправление и обработку пакетов.

Различные модели маршрутизаторов Wellfleet используют процессорные модули АСЕ (Advanced Communication Engine), основанные на процессорах Motorola 68020 или 68030, либо модули Fast Routing Engine (FRE), основанные на МС68040.

В состав модуля связи входят:

Коннекторы, обеспечивающие интерфейс со специфическими сетями (например, синхронный, Ethernet, Token Ring FDDI);

Контроллеры связи, передающие пакеты между физическим сетевым интерфейсом и глобальной памятью, используя DMA-канал; контроллеры связи также предназначены для конкретного типа сетевого интерфейса и способны передавать пакеты со скоростью, совпадающей со скоростью проволоки;

Фильтры (дополнительная возможность для модулей связей для FDDI и Ethernet), выполняющие предварительную фильтрацию входящих пакетов, сохраняя вычислительные ресурсы для содержательной обработки файлов.

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

В старших же моделях применяется разработанный самой компанией Wellfleet интерфейс Parallel Packet Express (РРХ) с полосой пропускания 1 Гбит/сек, использующий четыре независимых, обладающих избыточностью 256 Мбит/сек канала данных с динамическим распределением загрузки. Это обеспечивает высокую общую производительность и позволяет добиться того, что в архитектуре нет единой точки сбоя. Каждый процессорный модуль присоединен ко всем четырем каналам и имеет возможность выбрать любой из них. Конкретный канал выбирается случайно, для каждого пакета, что должно обеспечить равномерное распределение трафика между всеми доступными каналами. Если один из каналов данных PPX становится недоступным, загрузка автоматически распределяется между оставшимися.

Детали обработки пакетов

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

Поступив в глобальную память, пакеты извлекаются центральным процессором для маршрутизации. ЦПУ определяет выходной сетевой интерфейс, должным образом модифицирует пакет и возвращает его в глобальную память. Затем выполняется одно из двух действий:

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

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

Решения относительно маршрутизации принимаются ЦПУ независимо от друтих процессорных модулей. Каждый процессорный модуль поддерживает в своей локальной памяти независимую базу данных маршрутизации и адресов, обновляемую в тех случаях, когда модуль получает информацию об изменениях в таблицах маршрутизации или в адресах (в этом случае изменения рассылаются и во все остальные процессорные модули).

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

Резюме

Сам по себе факт проникновения компьютерных технологий, разработанных для одной области применений, в другие, смежные, не нов. Однако каждый конкретный пример привлекает внимание специалистов. В рассмотренной в данной статье архитектуре маршрутизаторов, кроме идеи симметричной многопроцессорности, призванной обеспечить масштабируемую производительность и высокий уровень готовности, использованы также механизм дублированных каналов данных между процессорами (с теми же целями), а также идея репликации (или тиражирования) данных, применение которой более характерно для индустрии распределенных СУБД .

Литература

Symmetric Multiprocessor Architecture. Wellfleet Communications, 10/1993.

Г.Г. Барон, Г.М. Ладыженский. "Технология тиражирования данных в распределенных системах" , "Открытые системы", Весна 1994.

*) Компания Wellfleet осенью прошлого года объединилась с другим лидером сетевых технологий, SunOptics Communications. Объединение привело к созданию нового сетевого гиганта - компании Bay Networks (прим. ред.)



UMA – Uniform Memory Access

5. SMP-архитектура используется в cерверах и РС на базе процессоров Intel, AMD, Sun, IBM, HP

(+) : простота, «отработанность» базовых принципов

(-) : весь обмен м/д процессором и памятью осущ. по 1 шине – узкое горлышко арх-ры – ограничение производительности, масштабируемости.

Пример:

MPP – архитектура: Massive parallel processing

Система с массовым параллелизмом. В основе лежал транспьютер – мощный универсальный процессор, особенностью которого было наличие 4 линков (коммуникационные каналы связи). Каждый линк состоит из двух частей, служащих для передачи информации в противоположных направлениях, и используется для соединения транспьютеров между собой и подключения внешних устройств. Архитектура: множество узлов, каждые узел – ОП+ЦП

Классическая МРР-архитектура: каждый узел соединен с 4 узлами по каналу «точка-точка».

Пример: Intel Peragon

Кластерная архитектура

Реализация объединения машин, представляющегося единым целым для ОС, системного ПО, прикладных программами пользователей.

Типы кластеров

  1. Системы высокой надежности/готовности (High Availability Systems, HA).
  2. Системы для высокопроизводительных вычислений (High Performance, HP, Compute clusters).
  3. Многопоточные системы.
  4. Load-balancing clusters. (распределение вычислительной нагрузки)

Пример: архитектура кластера theHIVE

5. NUMA архитектура Non Uniform Memory Access – неоднородный доступ к памяти

Каждый процессор имеет доступ к своей и к чужой памяти (для доступа в чужую память используется коммутационная сеть или даже проц чужого узла). Доступ к памяти чужого узла может поддерживаться аппаратно: спец. контроллеры.



- : дорого, плохая масштабируемость.

Сейчас: NUMA осущ доступ к чужой памяти программно.

Вычислительная система NUMA состоит из набора узлов (содержит один или несколько процессоров, на нем работает единственная копия ОС), которые соединены между собой коммутатором либо быстродействующей сетью.

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

ОП физически распределена, но логически общедоступна.

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

Примеры конкретных реализаций: cc-NUMA, СОМА, NUMA-Q

Пример: HP Integrity SuperDome

Упрощенные блок-схемы SMP (а) и MPP (б)

  1. Пять основных архитектур высокопроизводительных ВС, их краткая характеристика, примеры. Сравнение кластерной архитектуры и NUMA.

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

  1. SMP архитектура. Принципы организации. Достоинства, недостатки. Масштабируемость в «узком» и «широком» смысле. Область применения, примеры ВС на SMP.

SMP архитектура (symmetric multiprocessing) - cимметричная многопроцессорная архитектура. Главной особенностью систем с архитектурой SMP является наличие общей физической памяти, разделяемой всеми процессорами.

1. SMP-система строится на основе высокоскоростной системной шины, к слотам которой подключаются функциональные блоки трех типов: процессоры (ЦП), оперативная память (ОП), подсистема ввода/вывода (I/O).

2. Память является способом передачи сообщений между процессорами.

3. Все вычислительные устройства при обращении к ОП имеют равные права и одну и ту же адресацию для всех ячеек памяти.



4. Последнее обстоятельство позволяет очень эффективно обмениваться данными с другими вычислительными устройствами.

5. SMP используется в cерверах и рабочих станциях на базе процессоров Intel, AMD, Sun, IBM, HP.

6. SMP-система работает под управлением единой ОС (либо UNIX-подобной, либо Windows). ОС автоматически (в процессе работы) распределяет процессы по процессорам, но иногда возможна и явная привязка.

Принципы организации:

SMP система состоит из нескольких однородных процессоров и массива общей памяти.

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

Каждая операция доступа к памяти интерпретируется как транзакция по шине процессоры-память.

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

Когерентность кэшей поддерживается аппаратными средствами.

Все остальное - в одном экземпляре: одна память, одна подсистема ввода/вывода, одна операционная система.

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

Масштабируемость:

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

В «широком» смысле: линейный рост показателя производительности при увеличении аппаратных средств.

Достоинства:

Простота и универсальность для программирования. Архитектура SMP не накладывает ограничений на модель программирования, используемую при создании приложения: обычно используется модель параллельных ветвей, когда все процессоры работают абсолютно независимо друг от друга - однако, можно реализовать и модели, использующие межпроцессорный обмен. Использование общей памяти увеличивает скорость такого обмена, пользователь также имеет доступ сразу ко всему объему памяти.

Легкость в эксплуатации. Как правило, SMP-системы используют систему охлаждения, основанную на воздушном кондиционировании, что облегчает их техническое обслуживание.

Относительно невысокая цена.

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

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

Недостатки:

SMP-cистемы плохо масштабируемы:

1. Системная шина имеет ограниченную (хоть и высокую) пропускную способность и ограниченное число слотов, так называемое «узкое горлышко».

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

Все это препятствует увеличению производительности при увеличении числа процессоров и числа подключаемых пользователей. В реальных системах эффективно можно использовать не более 8-16-32 процессоров.

Область применения: для работы с банковскими приложениями

Пример: Архитектура Sun Fire T2000. Архитектура UltraSPARC T1.

  1. SMP архитектура. Совершенствование и модификация SMP архитектуры. SMP в современных многоядерных процессорах. Когерентность КЭШа.

SMP архитектура (symmetric multiprocessing) - cимметричная многопроцессорная архитектура. Главной особенностью систем с архитектурой SMP является наличие общей физической памяти, разделяемой всеми процессорами.

Совершенствование и модификация SMP:

Пример: Архитектура QBB серверных систем серии GS DEC

С целью увеличения производительности шины произведена попытка убрать шину, но оставить общий доступ к памяти --> переход и замена общей шины локальным коммутатором (или системой коммутаторов): каждый процессор в каждый момент времени скоммутирован с 4 банками памяти.

Каждый проц работает с каким-то банком памяти,

Переключается на другой банк памяти

Начинает работу с другим банком памяти.