Почему именно ARM
Несколько лет назад в «ЭК» была опубликована статья, посвященная сравнению 32-разрядных процессорных ядер с популярными RISC-архитектурами системы команд ISA (InstructionSetArchitecture) ARMи MIPS[1]. В ней представители новейших на тот момент семейств обеих ISA — Cortex-A и proAptive — показали практически одинаковые результаты по всем пунктам. Что, впрочем, было вполне предсказуемо. И в полной мере переносимо на последующие, в том числе 64-разрядные, семейства обеих ISA. Чего иначе можно было ожидать в условиях жесткой конкуренции ARMи MIPSна мировом рынке?
Но эта же одинаковость результатов побуждает вернуться к старому вопросу, поставленному ранее гораздо шире: имеет ли вообще смысл говорить о преимуществах одной ISA и процессорной архитектуры над другой?
В 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] отслеживала историю «предательства» компанией FreescaleSemiconductorфирменной архитектуры 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.
Рис. 1. Структура ИСП Octeon CN7890 компании Cavium
Давняя приверженность Cavium к ISA MIPS базировалась на весьма устойчивом географическом фундаменте. Штаб-квартира Caviumв Сан-Хосе, одном из микроэлектронных центров калифорнийской Кремниевой долины, находится буквально в десятке километров от бывшей штаб-квартиры компании MIPS в соседнем городишке Саннивейл. Но видимо после поглощения MIPS фирмой ImaginationTechnologiesс последующим перемещением штаб-квартиры объединенной компании в английский Хартфордшир география перестала быть связующим фактором, и Cavium новейшим поколением ИСП тоже переметнулась в лагерь ARM.
Недавно объявленное семейство ИСП Octeon TXстроится на основе процессорных ядер ThunderX — оригинального фирменного воплощения компанией CaviumISA ARMv8 (ARM64). На сегодняшний день старшая модель этого ARM-семейства CN8370 вдвое уступает старшей модели MIPS-семейства CN7890 по числу процессорных ядер, в остальном сохраняя очевидную преемственность с предшественником, что наглядно иллюстрирует рисунок 2.
Рис. 2. Структура ИСП Octeon CN8370 компании Cavium
Однако 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 K байт, а кэша инструкций — целых 78 K байт.
Контроллеры внешней памяти 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
Производительность ИСП 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.
Рис. 3. Пример TOP-конвейера EZchip
Tilera, наоборот, продвигала матричные структуры из ядер-«плиток» (tiles), расположенных в узлах фирменной коммутационной сети iMesh в виде ортогональной матрицы, призванной обеспечить коммуникации между плитками и когерентность в них кэшей. Максимальная конфигурация такой структуры из 72 плиток показана на рисунке 4.
Рис. 4. Пример структуры ИСП с матрицей iMesh от Tilera
Из рисунка видно, что помимо собственно процессорной матрицы СнК могли включать другие уместные в ИСП компоненты:
· контроллеры внешней памяти;
· интерфейсы Ethernet на скорости 1 и 10 Гбит/с с пакетными сопроцессорами MPIPE (MulticoreProgrammableIntelligentPacketEngine);
· интерфейсы PCIeс ускорителями транзакций TRIO (TRansactionalI/O);
· криптографическиеускорители MiCA (Multicore iMesh Coprocessing Accelerator);
· традиционные интерфейсы ввода-вывода USB, SPI, I2C, UART.
К сожалению, мощные многопоточные 64-разрядные процессорные ядра плиток тоже имели оригинальную ISA, что, как и в случае конвейера EZchip, существенно затрудняло прикладное программирование и резко ограничивало круг разработчиков прикладного ПО.
Поглощение компаний EZchip и Tilera с их абсолютно разными, едва ли не противоположными, подходами к созданию многоядерных ИСП объективно поставило Mellanox перед необходимостью «впрячь в одну телегу коня и трепетную лань», да так, чтобы эта телега понеслась если и не впереди паровоза, то хотя бы не отставая от основных конкурентов. В первую очередь надо было что-то делать с разношерстными ISA процессоров и оригинальными средствами разработки ПО. Универсальным решением, одним махом разрубавшим все гордиевы узлы, и тут оказалось ARMирование. Mellanox отказалась от TOP-конвейера и ISAпроцессорных «плиток» Tileraв пользу универсальных ядер ARM. Единственное, от чего не удалось отказаться Mellanox’у, это от матричной сети типа iMesh, приобретшей теперь новое фирменное название ConnectX. В результате такого матричного ARMирования получился любопытный кентавр — ИСП BlueField, структура которого проиллюстрирована рисунком 5.
Рис. 5. Структура ИСП BlueField от Mellanox
Процессор ИСП 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), позволившим ей навсегда остаться яркой страницей в истории вычислительной техники.