Тенденция к ARMированию многоядерных интегрированных сетевых процессов
Из статьи энциклопедии: "Армирование - способ увеличения несущей способности конструкции материалом, имеющим повышенные прочностные свойства относительно основного материала изделия". По напрашивающейся по созвучию некой аналогии: ARMирование - способ увеличения обрабатывающей способности интеллектуальных систем на кристалле процессором с архитектурой ARM, имеющим повышенные технические характеристики относительно основных конкурирующих аналогов. Такое ARMирование становится очевидным трендом современной микроэлектроники, в полной мере затронувшим интегрированные сетевые процессоры.
Почему именно ARM
Несколько лет назад в "ЭК" была опубликована статья, посвященная сравнению 32-разрядных процессорных ядер с популярными RISC-архитектурами системы команд ISA (InstructionSetArchitecture) ARM и MIPS[1]. В ней представители новейших на тот момент семейств обеих ISA - Cortex-A и proAptive - показали практически одинаковые результаты по всем пунктам. Что, впрочем, было вполне предсказуемо. И в полной мере переносимо на последующие, в том числе 64-разрядные, семейства обеих ISA. Чего иначе можно было ожидать в условиях жесткой конкуренции ARM и MIPS на мировом рынке?
Но эта же одинаковость результатов побуждает вернуться к старому вопросу, поставленному ранее гораздо шире: имеет ли вообще смысл говорить о преимуществах одной ISA и процессорной архитектуры над другой?
Когда в середине 70-х годов прошлого века в Министерстве приборостроения, средств автоматизации и систем управления СССР решался вопрос об архитектуре новой системы малых электронно-вычислительных машин (СМ ЭВМ), между двумя ведущими отечественными коллективами разработчиков министерства - московским Институтом электронных управляющих машин (ИнЭУМ) и северодонецким НПО "Импульс" [1] - разгорелась нешуточная дискуссия о выборе базовой ISA. Москвичи продвигали архитектуру PDP-11 фирмы DigitalEquipmentCorporation (DEC), которая к тому времени уже была у них реализована в малой ЭВМ М-400. Северодончане настаивали на архитектуре компьютеров компании Hewlett-Packard, также ранее освоенной "Импульсом" в ЭВМ М-6000/М-7000. Споры велись и в кругу разработчиков на рабочих совещаниях, и "стенка на стенку" в кабинетах высокого начальства, но в основном инженерами и, соответственно, на техническом "поле". Были они весьма жаркими, но закончились вничью, а точнее ничем. Доказать безусловные технические преимущества той или иной ISA так и не удалось. В итоге "расцвели все цветы", и из четырех первых моделей ряда СМ ЭВМ две, СМ-1 и СМ-2, были сделаны в Северодонецке à laHewlett-Packard, а две другие, СМ-3 и СМ-4, скопированы в ИнЭУМе с разных моделей PDP-11. Все они нашли своих потребителей и успешно выпускались многие годы. Если же компьютеры СМ-3 и СМ-4 оказались востребованы в более широком диапазоне применений и потому лучше известны, то причины этого не в преимуществах архитектуры PDP-11 [2], а в качестве и богатстве программного обеспечения (ПО) компании DEC, без всяких изменений исполняемого на СМ-3 и СМ-4 вследствие полной совместимости этих моделей с "оригиналами" на уровне двоичного кода.
В 80-е годы прошлого века только очень ленивый или очень далекий от компьютерной техники не ругал компании Intel за "убожество" ISA x86, а IBM за то, что свою первую массовую "персоналку" она выпустила с процессором именно этой слабенькой архитектуры, а не фирменной Power или, например, той же наиболее популярной в то время PDP-11. И что в итоге? О PDP-11 мир уже забыл, Power умирает на наших глазах, а ISAIntel x86 живет и процветает, хотя для этого процветания в нее пришлось внести более дюжины (!) расширений, большинство из которых выглядят явными заплатками. И стоит ли после этого вообще задаваться вопросом о преимуществах одной ISA над другой?
Возвращаясь к противостоянию ARMvsMIPS, тоже можно предположить, что очевидное лидерство ISAARM в мире по числу воплощений и количеству работающих систем на кристалле (СнК) со встроенными процессорными ARM-ядрами обусловлено не какими-то очевидными техническими преимуществами именно этой архитектуры, в том числе над MIPS. Скорее всего, дело исключительно в маркетинге и, насколько можно об этом судить со стороны, принципиально разной политике лицензирования. Где-то на этом "поле" ARM полностью переиграла MIPS и продолжает успешно теснить конкурента в самых разнообразных применениях от смартфонов и Интернета вещей IoT (InternetofThings) до серверов и суперкомпьютеров.
За последнюю пятилетку целая серия публикаций в "ЭК" [2, 3, 4] отслеживала историю "предательства" компанией Freescale Semiconductor фирменной архитектуры PowerPC и постепенного, но неуклонного перехода на ISA ARM в выпускаемых ею интегрированных сетевых процессорах (ИСП) на всех уровнях производительности. Но Freescale и ее преемница NXP - отнюдь не исключение. По тому же пути идут и другие известные конкурирующие на рынке ИСП микроэлектронные фирмы. В частности, процесс всеобщего ARMирования захватил компании Cavium и MellanoxTechnologies.
Cavium тоже меняет MIPS на ARM
ИСП компании Cavium также находили свое место на страницах "ЭК" [5]. Да и как можно было обойти вниманием СнК с едва ли не рекордным для своего времени количеством интегрированных процессорных ядер? Но это были ядра с ISAMIPS, на которые долгое время делала ставку Cavium. С MIPS-ядрами, сначала 32-х, а затем и 64-разрядными, выпускались несколько поколений ИСП: Octeon, OcteonPlus, Octeon II, Octeon III. Самая мощная модель ИСП последнего поколения с ядрами MIPS64 - Octeon IIICN7890 - включала максимально 48 ядер, ее структура показана на рисунке 1.
Давняя приверженность Cavium к ISA MIPS базировалась на весьма устойчивом географическом фундаменте. Штаб-квартира Cavium в Сан-Хосе, одном из микроэлектронных центров калифорнийской Кремниевой долины, находится буквально в десятке километров от бывшей штаб-квартиры компании MIPS в соседнем городишке Саннивейл. Но видимо после поглощения MIPS фирмой Imagination Technologiesс последующим перемещением штаб-квартиры объединенной компании в английский Хартфордшир география перестала быть связующим фактором, и Cavium новейшим поколением ИСП тоже переметнулась в лагерь ARM.
Недавно объявленное семейство ИСП Octeon TX строится на основе процессорных ядер Thunder X - оригинального фирменного воплощения компанией Cavium ISA ARMv8 (ARM64). На сегодняшний день старшая модель этого ARM-семейства CN8370 вдвое уступает старшей модели MIPS-семейства CN7890 по числу процессорных ядер, в остальном сохраняя очевидную преемственность с предшественником, что наглядно иллюстрирует рисунок 2.
Однако Cavium в 2016 году объявила уже следующее поколение процессоров ThunderX2, в которых количество ARM-ядер, изготавливаемых по технологии FinFET 14 нм, будет доведено до 54. И это, надо полагать, отнюдь не предел.
Ядро процессора ThunderX - интеллектуальной основы семейства ИСП Octeon TX - представляет собой оригинальную реализацию архитектуры ARMv8. Как и классические процессорные ядра последних поколений от ARM, они включают основной 64-разрядный RISC-процессор с раздельными кэшами первого уровня, диспетчер памяти MMU (MemoryManagementUnit), блок плавающей запятой FPU (FloatingPointUnit), сопроцессор параллельной обработки SIMD (SingleInstruction / MultipleData) и аппаратные средства поддержки виртуализации. В дополнение к этим "стандартным" блокам Cavium ввела в каждое ARM-ядро по аналогии с ее прошлыми MIPS-ядрами дополнительную криптографическую аппаратуру.
Также в отличие от "классики" в ThunderX процессорные ядра не группируются в кластеры. Когерентный кэш второго уровня объемом 8 M байт в ThunderX является общим для всех ядер и доступен им на равных основаниях через быстродействующую коммутационную структуру (crossbar), поддерживающую когерентности кэшей. С возможными заторами при одновременном обращении множество ядер к общему кэшу L2 Cavium видимо пытается бороться увеличением объемов кэшей L1: объем кэша данных составляет 32 К байт, а кэша инструкций - целых 78 К байт.
Контроллеры внешней памяти DDR3/DDR4 с гипердоступом, один или два, могут иметь разрядность шины 32 или 64 в зависимости от модели ИСП. Во всех случаях поддерживается контрольный код ECC (ErrorCorrectionCode). Предполагается, что в будущих процессорах ThunderX2 количество таких контроллеров памяти может вырасти до четырех. В системе памяти СнК также предусмотрены контроллеры flash-памяти (NOR/NAND) и карт eMMC.
Из средств общесистемной поддержки можно отметить такие общепринятые, как начальный загрузчик и управление питанием. Кроме того, Cavium сохранила и свои фирменные добавки из прошлых поколений ИСП: средства аутентификации (Authentik) и безопасности (Sec Vault).
Набор сетевых компонентов включает до 12 контроллеров Ethernet со скоростями передачи данных 1, 10 и 40 Гбит/с. К традиционным для линейки Octeon пакетному и крипто-сопроцессорам в качестве модного новшества добавлен виртуальный контроллер сетевых интерфейсов vNIC (virtualNetworkInterfaceController).
В комплект контроллеров интерфейсов ввода-вывода входят:
до четырех PCIe v3;
до шести SATA 3.0;
до двух USB 3.0 со встроенными трансиверами;
стандартные UART и I2C.
Последовательные высокоскоростные интерфейсы Ethernet, PCIe и SATA обслуживаются общим преобразователем SerDes (Serializer/Deserializer)
Характеристики выпускаемых моделей семейства ИСП Octeon TX представлены в таблице 1. Там же для сравнения показан перспективный процессор ThunderX2.
Производительность ИСП Octeon TX зависит от модели, в частности количества интегрированных процессорных ядер. В максимальных конфигурациях она может достигать 240 CoreMark, что обеспечивает возможность обработки до 80 млн. пакетов/с.
Потребление мощности ИСП тоже зависит от модели, но даже в старших моделях не превышает 15 Вт.
Типичные предполагаемые применения ИСП семейства Octeon TX:
процессоры плоскости данных (dataplane) для интеллектуальной коммутации;
процессоры плоскости управления (controlplane) в разных применениях;
частные виртуальные сети VPN (VirtualPrivateNetwork),
брандмауэры (firewalls) и устройства сетевой безопасности UTM (UnifiedThreatsManagement);
интегрированные маршрутизаторы;
контроллеры сетевых дисков и принтеров;
базовые станции беспроводных сетей;
автоматические системы управления в промышленности.
Предлагаемые Cavium средства разработки программного обеспечения (ПО) для ИСП Octeon TX:
коммерческий Linux;
полный тулчейн GNU;
средства профайлинга и анализа производительности;
Си-библиотеки, оптимизированные с точки зрения безопасности;
комплект разработки плоскости данных DPDK (DataPlaneDevelopmentKit);
встроенная операционная система OpenWrt для шлюзов и маршрутизаторов;
поддержка кросс-платформы с открытым кодом OpenDataPlane.
Mellanox собирает всех под знамена ARM
Компания Mellanox вышла на рынок ИСП относительно недавно, но имеет немалый опыт разработки ИСП благодаря покупке в 2016 году специализировавшейся в этой области израильской компании EZchip Semiconductor, которая в свою очередь двумя годами ранее поглотила своего конкурента, корпорацию Tilera. Такая "матрешка" Tilera-в-EZchip-в-Mellanox во многом определила направление развития ИСП Mellanox'а.
И EZchip, и Tilera в прошлом создавали свои ИСП на базе специализированных процессоров оригинальных архитектур с параллелизмом разных типов, которые также в свое время удостаивались внимания "ЭК" [6, 7]. EZchip делала ставку на конвейерные структуры с так называемыми оптимизированными под задачу процессорами TOP (TaskOptimizedProcessors). Четырехступенчатый конвейер допускал произвольное количество одинаковых процессоров на каждой ступени, специализированных для выполнения конкретных функций: разбора заголовков, табличного поиска, принятия решений или модификации пакетов и заголовков. Существенно, что вследствие оптимизирующей специализации процессоры каждой ступени имели собственную оригинальную ISA и, следовательно, каждую прикладную программу приходилось писать на четырех разных специальных фирменных ассемблерах, пользуясь исключительно фирменными специальными средствами разработки.
Примерная структура TOP-конвейера EZchip показана на рисунке 3.
Tilera, наоборот, продвигала матричные структуры из ядер-"плиток" (tiles), расположенных в узлах фирменной коммутационной сети iMesh в виде ортогональной матрицы, призванной обеспечить коммуникации между плитками и когерентность в них кэшей. Максимальная конфигурация такой структуры из 72 плиток показана на рисунке 4.
Из рисунка видно, что помимо собственно процессорной матрицы СнК могли включать другие уместные в ИСП компоненты:
контроллеры внешней памяти;
интерфейсы Ethernet на скорости 1 и 10 Гбит/с с пакетными сопроцессорами MPIPE (MulticoreProgrammableIntelligentPacketEngine);
интерфейсы PCIe с ускорителями транзакций TRIO (TRansactionall/O);
К сожалению, мощные многопоточные 64-разрядные процессорные ядра плиток тоже имели оригинальную ISA, что, как и в случае конвейера EZchip, существенно затрудняло прикладное программирование и резко ограничивало круг разработчиков прикладного ПО.
Поглощение компаний EZchip и Tilera с их абсолютно разными, едва ли не противоположными, подходами к созданию многоядерных ИСП объективно поставило Mellanox перед необходимостью "впрячь в одну телегу коня и трепетную лань", да так, чтобы эта телега понеслась если и не впереди паровоза, то хотя бы не отставая от основных конкурентов. В первую очередь надо было что-то делать с разношерстными ISA процессоров и оригинальными средствами разработки ПО. Универсальным решением, одним махом разрубавшим все гордиевы узлы, и тут оказалось ARMирование. Mellanox отказалась от TOP-конвейера и ISAпроцессорных "плиток" Tilera в пользу универсальных ядер ARM. Единственное, от чего не удалось отказаться Mellanox'у, это от матричной сети типа iMesh, приобретшей теперь новое фирменное название ConnectX. В результате такого матричного ARMирования получился любопытный кентавр - ИСП BlueField, структура которого проиллюстрирована рисунком 5.
Процессор ИСП BlueField включает 16 ядер ARM Cortex-A72, сгруппированных в восемь двуядерных кластеров с индивидуальными кэшами L2 в каждом, причем кластеры организованы в матрицу 4×2. Каждый кластер имеет выход в свой узел сети ConnectX, которая тем самым обеспечивает связь кластеров между собой и с другими компонентами СнК, а также подобно сети iMesh отвечает за когерентность кэшей. Вероятно размерность матрицы ConnectX и, соответственно, число процессорных кластеров могут в дальнейшем расти. Может быть, возможно увеличение количества ядер в кластерах.
В качестве сопроцессоров к сети ConnectX подключаются некий криптопроцессор для шифрования с открытым ключом (можно предположить, что это тот же самый ускоритель MiCA из "плиточных" ИСП Tilera или его дальнейшее развитие) и генератор случайных чисел.
Две одинаковые подсистемы внешней памяти включают по кэшу L3 и по контроллеру памяти DDR4.
Из системной поддержки пока обозначен только "джентльменский набор": безопасный загрузчик и тривиальный JTAG.
Зато сетевую специализацию ИСП BlueField придает целая отдельная подсистема ConnectX-5, в которую входят:
сетевые интерфейсы Ethernet;
фирменные для Mellanox интерфейсы InfiniBand;
транспорт удаленного прямого доступа RDMA (Remote Direct Memory Access);
распределитель потоков;
пакетный и прикладной процессоры.
Общесистемный ввод-вывод включает интерфейсы PCIe со встроенным коммутатором, USB, SPI и I2C, а также контроллер карт eMMC.
Mellanox предполагает использовать ИСП BlieField в:
системах NVMe (Non-Volatile Memory Express);
устройствах с виртуализацией сетевых функций NFV (Network Functions Virtualization);
системах безопасности;
других встроенных применениях.
Для разработки прикладного ПО Mellanox предлагает пользоваться "обширной экосистемой ARM" и открытым ПО - очевидное преимущество ARMирования.
Вместо заключения
Какие-либо далеко идущие выводы из названных примеров делать, по-видимому, рано. Очевидно лишь одно: разработчики ИСП все решительнее стараются уходить от специализированных процессорных архитектур и их программирования на низкоуровневых ассемблерах доморощенными неудобными средствами разработки. И все большее предпочтение отдают универсальным ISA, в первую очередь ISA ARM, именно благодаря, выражаясь словами Mellanox, "обширной экосистеме ARM". А меньшую по сравнению со специализированными эффективность универсальных процессоров стараются компенсировать числом ядер процессора. Современные технологии уже позволяют интегрировать в СнК десятки 64-разрядных ядер ARM, а завтра, можно ожидать, они будут исчисляться сотнями.
Тем не менее, по-прежнему актуальным остается вопрос эффективного использования растущего количества ядер. Cavium традиционно отдает пользователю практически "голое железо", по существу огромный богатый опциями "конструктор", из которого последний должен каким-то образом на свой страх и риск слепить работоспособное и достаточно эффективное устройство. Предлагаемые при этом ПО и средства разработки (коммерческий Linux, тулчейн GNU, DPDK, OpenWrt и пр.) на самом деле вовсе не рассчитаны на работу с десятками ядер и кластеров и вовсе не гарантируют в реальности достижения прогнозируемой производительности или хотя бы приближения к ней. Еще хуже ситуация с ИСП Mellanox. Сеть iMesh у Tilera предполагала некую программную конфигурацию, которую должно было осуществлять и учитывать в работе прикладное ПО. Непонятно, избавилась ли от этого порока сеть ConnectX, но и в лучшем случае все равно перед создателями ПО для ИСП BlueField встанут те же проблемы, что стоят и перед программистами ИСП Octeon TX.
Окончательный вердикт ARMированию от Cavium и Mellanox, как обычно, вынесут пользователи и время. А пока в завершение в качестве небольшого курьеза еще один пример ARMирования, на сей раз по-российски.
Еще не успев толком выпустить на рынок свой первый коммуникационный микроконтроллер Baikal-T1, созданный на лицензионном ядре MIPS Warrior P5600, отечественная компания "Байкал электроникс" объявила о выпуске новой СнК Baikal-M "на базе архитектуры ARMv8". Двуядерный MIPS-Baikal предназначался для коммуникационной инфраструктуры, офисных рабочих мест и промышленной автоматизации. Новый ARM-Baikal, про который, правда, еще толком ничего не известно, должен выйти на ранг применений уровня рабочих станций, но в целом предлагается для тех же прикладных областей, что и его более ранний собрат. Значит ли это, что подобно Cavium "Байкал электроникс" тоже изменяет ISA MIPS в пользу ISA ARM? Будем надеяться, что время даст ответ и на этот вопрос в том смысле, что хотя бы один из двух "Байкалов" будет в будущем успешно, то есть крупносерийно, выпускаться. И даже может быть тоже столкнется с проблемой эффективного использования многоядерности, когда и если число ядер в нем будет исчисляться не скромными единицами, а хотя бы десятками.
Владимир Егоров, к.т.н., в.н.с., Институт проблем информатики РАН
Литература
1. В. Егоров. Обзор и сравнение процессорных ядер ARM Cortex и MIPS Aptive. Электронные компоненты, № 6, 2013. С. 64-69.
2. В. Егоров. Интегрированные сетевые процессоры Freescale с ARM-ядрами. Электронные компоненты, № 4, 2013. С. 85-89.
3. В. Егоров. Интегрированные сетевые процессоры NXP с ARM-ядрами поднимаются на следующий ярус. Электронные компоненты, № 7, 2015. С. 84-88.
4. В. Егоров. Интегрированные сетевые процессоры Freescale с ARM-ядрами покоряют верхний ярус. Электронные компоненты, № _, 201_. С. _-_.
5. В. Егоров. Интегрированные сетевые процессоры Cavium. Электронные компоненты, № 4, 2011. С. 77-81.
6. В. Егоров. Сетевые процессоры EZchip. Электронные компоненты, № 7, 2011. С. 22-27.
7. В. Егоров. Многоядерные сетевые процессоры от Tilera. Электронные компоненты, № 6, 2014. С. 72-76.
Примечание 1. НПО "Импульс" до сих пор существует несмотря на все пертурбации украинской "незалежности" и фактический статус Северодонецка как прифронтового города, хотя и с резко сократившимися объемами выпуска средств для АСУ ТП. А вот на месте киевского НПО "Электронмаш", крупносерийно выпускавшего в частности комплексы СМ-4, ныне... красуется гипермаркет "Ашан".
Примечание 2. О преимуществах и недостатках архитектур можно спорить до бесконечности, но архитектуре PDP-11 бесспорны по крайней мере новизна (например, общее адресное пространство памяти и ввода-вывода) и оригинальность (единый унифицированный интерфейс UNIBUS), позволившим ей навсегда остаться яркой страницей в истории вычислительной техники.