`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Потоки Ниагары

Статья опубликована в №47 (566) от 12 декабря

0 
 

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

Потоки Ниагары
Кристалл процессора UltraSPARC T1 площадью 350 мм², изготовляемый по 90-нанометровому технологическому процессу, уникален даже не своими размерами, а тем, что исходные тексты этого CPU доступны всем желающим. Это настоящий Open Source процессор

Когда в 2002 г. корпорация Sun приобрела маленький стартап Afara Websystems, особого ажиотажа в прессе это событие не вызвало. В новостных лентах того времени скупо, несмотря на некий элемент детектива (информация об окончательном решении о приобретении стала публичным достоянием во время конференции, посвященной будущему процессоров архитектуры SPARC), упоминается полученный Sun доступ к интеллектуальной собственности Afara, «ориентированной на акселерацию таких специфических задач, как управление трафиком и прочими сетевыми функциями». А между тем компания Afara была далеко не заурядным «компьютерным» стартапом. В перечне ее основателей – люди более чем известные, можно сказать – знаменитые. Лес Кон (Les Kohn) – один из ведущих архитекторов культовых микропроцессоров. Некогда он был ведущим архитектором знаменитого процессорного семейства «Меч-рыба» (Swordfish) National Semiconductor NS32000 – первого 32-битового микропроцессорного семейства на рынке. Затем архитектором не менее знаменитой 64-битовой RISC-машины Intel – i860. И наконец, Кон является автором первой 64-битовой архитектуры Sun – UltraSPARC I. Коллега Кона по Afara – Кунле Олукотун (Kunle Olukotun), профессор Стэнфордского университета, заслуженно считается одним из самых ярких системных архитекторов новой волны. Его разработка Hydra – четырехъядерный однокристальный микропроцессор, использующий в качестве вычислителей несколько сокращенные версии CPU MIPS R10000, – появилась в 1998 г. Олокотуну и его коллегам по Стэнфорду принадлежат и теоретические исследования новой архитектуры, и результаты ее моделирования, и разработка специфических иерархических подсистем памяти, и многое другое. В Afara Кон и Олокотун совершенствовали идеи Hydra, доводя их до пригодной к изготовлению модели специфического многоядерного микропроцессора, использующего в качестве вычислителей CPU SPARC-архитектуры. Собственно говоря, в специфичности идей Afara и заключается принципиальная новизна того, что стало основой процессорного семейства Sun под названием Niagara, серверы на первых представителях которого уже доступны украинским потребителям.

Niagara

Потоки Ниагары

Следует сразу предупредить читателя: так как в англоязычных оригиналах соответствующей тематики используются одновременно термины thread, strand и даже некоторые витиеватые их синонимы, причем все это многообразие в разных контекстах (на разных уровнях рассмотрения деталей – программном и аппаратном) означает вещи весьма различные, условимся называть «жилой» то, что в документации Sun чаще называют strand. Для более распространенного thread будем впредь использовать привычное «поток».

Ознакомление с новой архитектурой всегда следует начинать с фундаментальных понятий. Для Niagara ими являются две разновидности параллелизма – в каком-то смысле ортогональные, в каком-то смысле – разноуровневые. Параллелизм на уровне инструкций (Instruction-Level Parallelism, ILP) – это числовая оценка количества допускающих одновременное исполнение операций некоторой программы. Например, для программы, описываемой псевдокодом:

ADD A,B ; a = a+b
MUL C,D ; с = c•d
DIV A,C ; a = a/c

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

Параллелизм на уровне потоков (Thread-Level Parallelism, TLP) – понятие более высокоуровневое. Здесь, естественно, речь идет о количестве одновременно исполняемых потоков. И если ILP, в принципе, – свойство всех программ, и, в общем случае, невозможно использовать его конкретное значение в качестве технического требования проектного процесса, то TLP, напротив, обычно является именно техническим требованием и реализуется с помощью соответствующих механизмов операционной системы и программных интерфейсов. В этом принципиальном различии и заключается упомянутая ранее «в каком-то смысле ортогональность». Ну а не менее странная разноуровневость (опять же, в каком-то смысле), очевидно, означает, что каждый поток программы, например с TLP, равным трем, сам должен характеризоваться каким-то уровнем ILP в силу того, что ILP – качество всех программ и потоков в том числе.

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

Потоки Ниагары

Если вы думаете, что речь идет о вещах абстрактных и потому бесполезных, то глубоко заблуждаетесь. Больший единицы ILP – это то «топливо», которое двигает микроархитектуры процессоров. Именно для «утилизации» параллелизма на уровне команд создаются и совершенствуются конвейеры, используются суперскалярные вычислители, механизмы предсказания ветвлений, прогностическое исполнение и исполнение с изменением последовательности команд. Результат такой «утилизации» – естественно, прирост производительности. Но ничто не дается просто так, и платой за микроархитектурные усовершенствования становятся увеличение схемотехнической сложности и сопровождающий его рост энергопотребления. Причем это очень недешевая плата, способная превратить заманчивый проект в бессмыслицу. Но самым неприятным остается такой очевидный факт – архитектуры с высокой «утилизацией» ILP совершенно не обязательно оптимальны для исполнения классов программ, характеризующихся высоким TLP. Собственно, это соображение и есть фундаментальная основа цепочки идей, овеществления которой получили название Niagara. Перефразировав его, мы получим фактически проектную задачу – ту самую, над которой работал Кунле Олукотун: раз сложные приемы «утилизации» ILP не дают гарантированного выигрыша в производительности при исполнении характеризующихся высоким TLP программ, надо создать новую архитектуру. Общепринятое сегодня нерыночное название этой архитектуры – CMT (Chip Level Multithreading), поддержка многопотоковости на уровне кристалла. В ней, за счет отказа от борьбы за «выжимание» максимального прироста производительности из неравного единице ILP, на одном кристалле создаются несколько относительно несложных CPU и сопутствующие цепи, позволяющие эффективно исполнять многопотоковые программы. Так, в первенце семейства Niagara – процессоре UltraSPARC T1, на одном кристалле «утрамбованы» восемь 64-битовых CPU, каждый из которых реализует архитектуру UltraSPARC V9 и содержит аппаратные средства ускорения переключения между четырьмя контекстами (или, если вам так больше нравится, – жилами). Если вам доводилось проходить «боевое крещение» или вы просто увлекаться знаменитым компьютером ZX Spectrum, прием, используемый для аппаратной поддержки быстрого переключения контекстов, вам должен быть знаком. Именно в культовом (пережившем, к слову, упомянутые в начале статьи и NS32000, и i860) восьмибитовом процессоре Z-80 подобный прием и применялся – два полноценных одинаковых набора регистров, переключаемых специальной командой. В вычислительном ядре T1 таких наборов четыре. Учитывая регистровую насыщенность архитектуры SPARC, всего в одном ядре получается 640 64-битовых регистров. Эти четыре набора называются целочисленным регистровым файлом (Integer Register File) и реализованы многопортовой (допускающей одновременное выполнение операций записи и чтения регистров) сверхскоростной оперативной памятью с избыточностью для коррекции ошибок.

Каждый CPU оснащен собственными массивами кэш-памяти данных и инструкций (Гарвардская архитектура), а все восемь CPU соединены с четырехбанковой кэш-памятью второго уровня с помощью пакетной сети перекрестных соединений (crossbar) с высокой полосой пропускания (132 GBps). На кристалле UltraSPARC T1 реализованы также четыре полноценных контроллера динамической оперативной памяти с суммарной пиковой пропускной способностью 25 GBps.

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

Потоки Ниагары

Итак, мы с достаточной степенью детализации ознакомились с «сердцем» нового класса серверов Sun. Совместимость UltraSPARC T1 на уровне команд со спецификациями архитектуры UltraSPARC V9 означает, что процессор способен выполнять обычные в мире SPARC бинарные программы. Это исключительно важно – по сути, эта совершенно новая аппаратная платформа не требует новых средств разработки, в первую очередь компиляторов. Регистровая избыточность и быстрое переключение контекстов означают, что хотя каждый вычислитель процессора T1 за один такт и может исполнять только одну команду, принадлежащую одному «жгуту», но если эта команда требует многих тактов ожидания для ее завершения (например, обращение к внешней памяти или выполнение «тяжелых» целочисленных команд или команд вычислений с плавающей точкой), вычислитель может исключительно быстро переключиться на контекст следующего «жгута». Получается, что вычислители T1 как бы стремятся к максимальному заполнению «полосы пропускания CPU» – если представить процессор неким абстрактным каналом, в который «вливаются» потоки машинных инструкций и из которого «вытекают» результаты их исполнения, то метафора «полоса пропускания» в дополнительных пояснениях не нуждается. К слову, в Sun используют именно эту метафору в маркетинговом названии «Throughput Computing» (так что далеко не всегда эти названия просто красивы).

T2000

Сервер Sun Fire T2000 в документации классифицируется как «высокопроизводительный начального уровня». При внешнем ознакомлении с ним первое, что замечаешь, – стандартно высокое для всех высококлассных серверов качество исполнения конструктива формата 2U. Разработчики не оставили без внимания ни одной «мелочи», способной в какой-то мере снизить надежность изделия (об одной из них мы уже упомянули во время краткого знакомства с процессором UltraSPARC T1 – имеется в виду нечасто встречающийся прием использования избыточных кодов, допускающих коррекцию ошибок, в регистровой сверхоперативной памяти CPU). Так, в системе охлаждения, включающей воздушный нагнетатель и три вентилятора (один из которых, по сути, является избыточным «запасом»), предусмотрена горячая замена любого из них, также на лету можно заменять и резервированные (дублированные) блоки питания, и дисковые накопители с интерфейсом SAS (Serial Attached SCSI). Возможность горячей замены критичных узлов поддержана развитой системой мониторинга, работоспособность которой независима от правильного (нормального) функционирования сервера. Для решения такой задачи в T2000 используется системный контроллер ALOM-CMT (Advanced Lights Out Management) – специальный встроенный компьютер, работающий под управлением собственной ОС реального времени и оснащенный своей долговременной памятью для хранения ПО, а также интерфейсами с аппаратной подсистемой сервера и для взаимодействия с пользователем (последовательный порт для непосредственного подключения алфавитно-цифрового терминала и Ethernet-порт – для удаленного доступа). ALOM позволяет с помощью собственного командного языка не только удаленно «добираться» до вышедшей из строя машины, определять и, по возможности, устранять причину сбоев «низкоинтеллектуальных» аппаратных средств (например, вентиляторов), но и за счет взаимодействия с подсистемой прогнозирования и классифицирования отказов OC Solaris (запускаемый при загрузке демон fmd) проводить анализ сбоев ключевых узлов системы – CPU, ОЗУ, шин. В удаленной работе с ALOM особенно удобна легкость переключения с одного терминала между двумя компьютерами – собственно сервером и ALOM-контроллером.

Потоки Ниагары

Сугубо «вычислительно-серверные» подсистемы Sun Fire T2000 более чем достаточны для его класса – восьмиядерный процессор, каждое вычислительное ядро которого поддерживает быстрое (за один такт) переключение между четырьмя контекстами (потоками), четырехканальный контроллер и физическая подсистема памяти, позволяющая установить до 32 GB ОЗУ с улучшенной коррекцией ошибок (допускающей в ряде случаев исправление сбойных четырех битов), пять слотов расширения (3 – PCI Express и 2 – PCI-X), четыре порта USB, четыре контроллера Gigabit Ethernet, возможность подключения до четырех SAS HDD (конструктив предусматривает использование 2,5-дюймовых накопителей, штатными являются 73-гигабайтные диски), привод DVD-R/CD-RW.

Поставляется Sun Fire T2000 с предустановленной ОС Solaris 10, но в последнее время любители Linux получили возможность инсталлировать адаптированную к конфигурации сервера ОС Ubuntu.

В принципе, подобного уровня детализации с базовыми аппаратно-программными средствами T2000 вполне достаточно для первого знакомства, стоит лишь упомянуть о том, что машина Sun удалась – она не создает никаких сложностей при ее освоении. Пожалуй, единственное, что не помешало бы в ней «доделать», – оснастить ALOM возможностью выдачи документации в электронном виде, например с помощью tftp (в конце концов, в аналогичных серверах Sun, использующих x86–64 CPU, ALOM поддерживает Web-интерфейс, так что задача достаточно тривиальна).

Потоки Ниагары

А вот что действительно заслуживает особого внимания, так это подбор и конфигурирование программного обеспечения для данного сервера. CMT-архитектура – очевидно, не панацея. И если при конфигурировании системы не учитывать особенностей ее процессора и соответствия этим особенностям ПО, можно не добиться желаемых результатов. Например, однопоточная программа будет исполняться всего одним ядром UltraSPARC T1, и, естественно, в этом случае показатели производительности окажутся низкими – существенно более низкими, чем при исполнении той же программы на мощном, ориентированном на максимальную «утилизацию» ILP, процессоре. Эта особенность, по сути, является критерием отбора, например, Web-серверов, пригодных к эффективной работе на T2000. Так, довольно быстрые программы Web-серверов, основанные на мультиплексирующей (select) модели (в перечне тех, что на слуху, – Zeus, thttpd), для T2000 совершенно бесперспективны. Зато, например, и штатный в поставке T2000 Java-сервер, и сторонние разработки многопоточной архитектуры (Roxen, Pi3Web) дают возможность раскрыть потенциал машины на 100%. Знаменитый Apache, несмотря на специфику реализации (в нем используются не потоки, а пул процессов), также прекрасно себя ведет на T2000 – благодаря возможностям и CPU, и ОС («тяжелые» процессы эквивалентны потокам). В силу особенностей архитектуры UltraSPARC T1 (один разделяемый между восемью ядрами FPU) не будут блистать быстродействием и вычисления с плавающей точкой. Впрочем, в реализациях сетевых сервисов или, например, СУБД, таких вычислений очень мало, а для быстрого вычисления по «прожорливым» криптоалгоритмам UltraSPARC T1 располагает аппаратным ускорителем.

И в заключение – еще об одной важной особенности T2000. Некоторые специалисты даже считают ее главной. В этой машине ключевой энергопотребляющий компонент любого современного сервера – процессор UltraSPARC T1 – характеризуется весьма умеренным «аппетитом», что выводит T2000 в лидеры по интегральному показателю производительность/потребляемая мощность. Соответственно, T2000 очень хорошо подходит для построения мощных серверных пулов с большим числом серверов, позволяя не только экономить на электроэнергии, но и легче решать проблемы энергоснабжения и охлаждения.

Зоны и потоки

Один из очень привлекательных способов полноценного использования возможностей серверов Sun Fire T2000 для исполнения программ с невысоким уровнем TLP дает удачное сочетание аппаратных средств и операционной системы Solaris 10. Речь идет о так называемых зонах (zones) – реализованных в Solaris 10 на основе концепции «малозатратной виртуализации» изолированных иерархий процессов (во многом аналогичных и являющихся логическим продолжением и развитием jail в ОС FreeBSD). Естественно, изначально зоны создавались вовсе не для повышения производительности многопроцессорных машин, а как мощный механизм безопасности. Но с появлением UltraSPARC T1 стало возможным... увеличить скорость выполнения и «малопоточных» задач. Идея оказалась простой, уже неоднократно проверена и доказала свою эффективность – при запуске нескольких копий программы (например, СУБД), каждой копии – в своей зоне, Solaris 10 «раздаст» процессы отдельным ядрам CPU. В результате, скажем, шесть копий программы будут работать независимо и каждая как бы на полноценном аппаратно-программном сервере, со своим собственным процессором, ориентированным на поддержку многопоточных программ.

0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT