Ключевым понятием многопроцессорных архитектур является узел —
вычислительная система, состоящая из одного или нескольких
процессоров, имеющая оперативную память и систему ввода-вывода. Узел характеризуется тем, что на нем работает единственная копия операционной системы (ОС).
Симметричный многопроцессорный (
SMP — Symmetric multiproccssor) узел содержит два или более одинаковых процессора, используемых равноправно.
Оперативная память физически представляет последовательное адресное пространство, доступ к которому имеют одновременно все процессоры системы по единой коммуникационной среде: либо шинной архитектуры, либо
коммутатором типа crossbar. Поскольку процессоры одновременно работают с данными, хранящимися в единой памяти узла, в SMP-архитектурах обязательно должен быть механизм, поддержки
когерентности данных. Когерентность данных означает, что в любой момент времени для каждого элемента данных во всей памяти узла существует только одно его значение несмотря на то, что одновременно могут существовать несколько копий элемента данных, расположенных в разных видах памяти и обрабатываемых разными процессорами. Механизм когерентности должен следить за тем, чтобы операции с одним и тем же элементом данных выполнялись на разных процессорах последовательно, удаляя, в частности, устаревшие копии. В современных SMP-архитектурах когерентность реализуется аппаратными средствами.
Механизм когерентности является критичным для эффективной параллельной работы узла SMP и должен иметь малое время задержки. До сегодняшнего дня самые крупные SMP-системы содержали максимум 32 процессора на узел, что объяснялось требованием малых задержек когерентных связей, приводящим к архитектуре с одной объединительной платой, а это физически ограничивает возможное число подсоединенных процессоров и плат памяти. Поэтому для дальнейшего увеличения числа процессоров в узле приходится вместо аппаратно реализованной техники когерентности применять более медленную программную реализацию, что очень существенно сказывается на программируемости систем и их производительности.
SMP-узлы очень удобны для разработчиков приложений: операционная система почти автоматически масштабирует приложения, давая им возможность использовать наращиваемые ресурсы. Само приложение не должно меняться при добавлении процессоров и не обязано следить за тем, на каких ЦПУ оно работает. Временная задержка доступа от любого ЦПУ до всех частей памяти и системы ввода-вывода одна и та же. Разработчик оперирует с однородным адресным пространством. Все это приводит к тому, что SMP-архитектуры разных производителей выглядят в основном одинаково: упрощается переносимость программного обеспечения между SMP-системами. Переносимость программ — одно из основных достоинств SMP-платформ.
Типичные SMP-архитектуры в качестве аппаратной реализации механизма поддержки когерентности используют шину слежения (snoopy bus). Каждый процессор имеет свой собственный локальный кэш, где он хранит копию небольшой части основной памяти, доступ к которой наиболее вероятен. Для того чтобы все кэши оставались когерентными, каждый процессор "подглядывает" за шиной, осуществляя поиск тех операций считывания и записи между другими процессорами и основной памятью, которые влияют на содержимое их собственных кэшей. Если процессор "В" запрашивает ту часть памяти, которая обрабатывается процессором "А", то процессор "А" перехватывает этот запрос и помещает свои значения области памяти на шину, где "В" их считывает. Когда процессор "А" записывает измененное значение обратно из своего кэша в память, то все другие процессоры видят, как эта запись проходит по шине и удаляют устаревшие значения из своих кэшей.
Существует несколько вариантов SMP-узла с одной и несколькими системными шинами, однако последний вариант приводит к усложнению архитектуры и повышению ее стоимости. Одним из примеров может служить структура, реализованная компанией NCR, — две шины и общая разделяемая ими память. Когерентность в такой структуре реализуется путем хранения записей о состоянии и местонахождении каждого блока данных из оперативной памяти. Такой тип работы с кэш-памятью называется кэшированием на основе каталога и обладает тем достоинством, что удваивает пропускную способность шины. Недостатками такого подхода являются необходимость более сложных аппаратных средств и дополнительные задержки при пересылке данных между памятью и обеими шинами.
В архитектуре Cray SuperServer 6400 SMP используются четыре шины. Все ЦПУ подсоединяются к каждой из четырех шин и реализуют протокол следящей шины для поддержки когерентности. Каждое ЦПУ отслеживает только те операции, которые влияют на содержимое своего кэша. Этот подход отличается от протоколов кэширования на основе каталога, так как здесь каталога нет. В системе Cray 6400 пропускная способность шины потенциально увеличивается в 4 раза, однако очевидным недостатком является то, что на каждом ЦПУ устанавливается четыре экземпляра аппаратных средств поддержки когерентности.
Новая система Sun Ultra Enterprise 6000 для подсоединения всех ЦПУ, памяти и систем ввода-вывода использует коммутатор, который заменяет традиционную объединительную плату, но по существу выполняет ту же функцию. Соответственно, сохраняются те же недостатки, поскольку весь трафик между памятью, ЦПУ и системой ввода-вывода должен проходить через коммутатор. Система имеет только 16 слотов для плат ЦПУ/память и ввода-вывода. Хотя такой новый коммутатор несколько увеличивает пропускную способность шины, проблема "большой шины" остается: требование малых задержек ограничивает в этих архитектурах число присоединенных ЦПУ, а увеличение скорости в шинах или коммутаторах не соответствует росту производительности ЦПУ.
К основным достоинствам технологии однорангового доступа SMP относится следующие положения.
1. Простота организации вычислительного процесса, т.к. все процессоры обращаются к единой памяти по одному алгоритму.
2. Эффективность организации программного кода задачи, которая обеспечивается системным программным обеспечением, так как в процессе генерации кода нет необходимости учитывать разнообразие размещения данных в оперативной памяти (ОП).
3. Проверенное большим сроком эксплуатации программно-аппаратного решение, реализованное основными производителями вычислительных систем.
Наряду с достоинствами рассматриваемая технология обладает и рядом существенных недостатков.
1. Единый путь доступа к ОП, который становится узким местом при увеличении числа процессоров в системе, в результате увеличение числа процессоров приводит к нелинейному росту производительности системы и в пределе к её снижению по причине конфликтных ситуаций, возникающих на пути доступа к оперативной памяти. Так, архитектура с синхронной шиной доступа позволяла линейно увеличивать производительность системы в пределах до 8 процессоров. Пакетная организация системной шины, уменьшая количество взаимных блокировок, позволяет довести количество процессоров в системе до 16. Технология crossbar, при которой элементы вычислительной системы коммутируются напрямую друг с другом по протоколу точка-точка, позволила довести количество процессоров до 72. Однако, с увеличением количества коммутируемых элементов системы происходит резкий рост сложности crossbar и, как следствие, рост цены устройства.
2. Увеличение количества процессоров усложняет логическую часть вычислительной системы, которая отвечает за работу с кэшем, в частности за когерентность, что также влияет на производительность и цену системы.