Нефть и песок О стали Компрессор - подбор и ошибки Из истории стандартизации резьб Соперник ксерокса - гектограф Новые технологии производства стали Экспорт проволоки из России Прогрессивная технологическая оснастка Цитадель сварки с полувековой историей Упрочнение пружин Способы обогрева Назначение, структура, характеристики анализаторов Промышленные пылесосы Штампованные гайки из пружинной стали Консервация САУ Стандарты и качество Технология производства Водород Выбор материала для крепежных деталей Токарный резец в миниатюре Производство проволоки Адгезия резины к металлокорду Электролитическое фосфатирование проволоки Восстановление корпусных деталей двигателей Новая бескислотная технология производства проката Синие кристаллы Автоклав Нормирование шумов связи Газосварочный аппарат для тугоплавких припоев
Главная страница / Архитектура отрасли

Многоядерные процессоры в серверных системах

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

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

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

Архитектура ccNUMA – Cache Coherent Non-Uniform Memory Access. В основе этой системы лежат кводы (qbb) – модули, обычно содержащие четыре процессора и некоторое количество памяти. Они объединяются в единую систему специальными сверхвысокоскоростными интеллектуальными коммутаторами. При этом каждому процессору доступна вся память системы, но не с одинаковой скоростью. Если нужные данные находятся на том же qbb, что и процессор, доступ к ней не отличается от обычных 1 – 4-процессорных серверов. Но если требуемая ячейка находится на другом qbb, то процессор обращается к коммутатору, и тот уже решает все технические вопросы, включая когерентность памяти, разрешение конфликтов и т. п. Тонкости взаимодействия программной и аппаратной части в такой архитектуре можно показать на следующем примере.

Предположим, что некоторое приложение (поток) «А» выполнялось на процессоре 1. По истечении выделенного ОС времени это приложение освободило процессор 1 и стало в очередь за свободным ресурсом. Через определенный промежуток освободился процессор 9. И тут возникает вопрос – соглашаться ли на это предложение? Ведь данные могут находиться в памяти того qbb, на котором приложение начинало работать, и будет наблюдаться некоторая задержка при обращении к ним с другого qbb. За Non Uniform доступ к памяти приходится платить такими сложностями. Но и это еще не все проблемы архитектуры ccNUMA. Мы забыли о буковках «cc» перед NUMA, которые на практике означают следующее. В процессе работы приложения «А» на процессоре 1 часть его данных могла остаться в кэше процессора 1 даже после того, как на этом же процессоре было обработано другое приложение. Таким образом, если процессор 9 обратится к ОЗУ, то в ячейке могут быть устаревшие данные. Для решения этой задачи и используется аппаратный механизм синхронизации, или когерентности кэшей процессоров. Впрочем, удовольствие это не бесплатное, и лучше не злоупотреблять «прыжками» приложения по процессорам. Масштабируемость подобных систем составляет 80 – 90% для целого ряда прикладных задач сегодняшнего бизнеса.

Главная страница / Архитектура отрасли