В самых модных гаджетах обычно можно встретить A7, систему на чипе (System-on-Chip, SoC) архитектуры ARMv8, что вполне можно считать первым широкомасштабным пришествием 64-разрядных микропроцессоров, но далеко не последним. К этому выводу несложно прийти, проанализировав решения, представленные на прошедшей в конце октября 2013 года конференции ARM TechCon. Это сугубо технологическое мероприятие, собравшее ограниченный круг компаний, которые производят процессоры по лицензии от ARM или используют эти процессоры в своих изделиях. Много лет тематика конференции была ограничена использованием этих процессоров во встроенных системах, образующих основную область применения изделий от ARM, но недавно ареал распространения начал расширяться серверами, что напрямую связано с грядущим появлением 64-разрядных процессоров «50-й серии». Заметный выброс на рынок таких серверов намечен на 2014 год — ему предшествовали отдельные серверные начинания, в которых применялись усовершенствованные 32-разрядные процессоры Cortex А15. Несколько компаний уже выпустили такие серверы, но они не стали массовыми — их стоит рассматривать как «пробу пера».
Возвращение RISC
Нынешний подъем интереса к процессорам ARM любопытен тем, что у нас на глазах повторяется недавняя история — полная аналогия с вытеснением RISC, доминировавших с середины 90-х и до 2001 года, когда лопнул мыльный пузырь Интернета. Тогда в серверном сегменте безраздельно господствовали Unix-серверы на RISC-процессорах от Sun Microsystems, DEC, IBM, HP и SGI — на них опирались не только первые интернет-провайдеры, но и многие корпоративные системы на базе высокопроизводительных серверов. В те же годы возникли первые попытки использования серверов на процессорах CISC с архитектурой х86 и работающих под управлением Windows, однако всерьез процессоры х86 тогда не воспринимались, да и операционная система Windows до появления версии NT доверия у серьезных пользователей не вызывала. Но законы рынка неумолимы — огромные объемы выпуска ПК, а следовательно, и снижение цены на процессоры привели к смене декораций. И в итоге — задуманная совсем для иных целей, но отлаженная линейка процессоров x86-архитектуры вытеснила звезд RISC первой величины не только с серверного рынка, но даже из высокопроизводительных вычислений (High Performance Computing, HPC). Долгожителями стали Power и SPARC, но оказались нишевыми.
Сегодня складывается совсем иная ситуация — во втором десятилетии нынешнего века самыми массовыми стали микропроцессоры для мобильных и встроенных устройств, выпускаемые миллиардными тиражами, а новая реальность рано или поздно приведет к тому, что на этот раз потесниться на серверном рынке и, вероятно, в HPC придется x86.
Кремниевая компиляция, из прошлого в будущее
Идеи кремниевой компиляции были предложены еще в 70-е годы, но под влиянием успехов универсальных микропроцессоров о них забыли. Сегодня есть вероятность, что они снова окажутся востребованными, особенно в приложениях для суперкомпьютеров. Леонид Черняк |
Как ни странно, но продолжателем дела RISC оказались не гранды прошлого, а до недавнего времени «широко известная в узких кругах» английская компания ARM (Advanced RISC Machines), созданная в середине 90-х (и до сих пор остающаяся небольшой — всего 2 тыс. сотрудников) как совместное начинание трех компаний: британской Acorn Computers, выпускавшей RiscPC — самобытный персональный компьютер с английским акцентом, Apple Computer и VLSI. Именно последняя, давно уже не существующая компания, дала старт всем современным методам автоматизированного проектирования микросхем. К созданию VLSI приложили руку основоположники систем автоматизированного проектирования Карвер Мил и Лин Конвей.
С момента своего образования ARM обладала серьезнейшей экспертизой в проектировании процессоров, но не стоит забывать и о еще двух важнейших составляющих нынешнего успеха компании. Вторая составляющая — ориентация на встроенные системы и на процессоры с малым энергопотреблением. Надо отметить, что встроенные системы всегда были самым большим процессорным рынком. Еще совсем недавно наибольший тираж был у процессора Z80 компании Zilog, близкого родственника Intel 8080, а вовсе не х86. Третья составляющая — бизнес-схема компании, которая изначально была не производящей, а проектирующей микросхемы (fabless), причем, в отличие от других, тоже не имеющих собственного производства (Sun/Oracle), она не передает свои проекты производителям и не продает процессоры под своим брендом. Компания ARM лицензирует свои изделия другим производящим компаниям, каковых насчитывается огромное количество. Сейчас у нее на счету тысячи лицензий, а за 16 лет существования суммарный выпуск процессоров с архитектурой ARM превысил 40 млрд, причем их большая часть была произведена за последние годы. Сегодня больше половины всех мобильных устройств в мире построены на процессорах с архитектурой ARM. Нет ничего удивительного в том, что рано или поздно процессоры должны потеснить нынешнего монополиста.
Архитектура и набор инструкций
Процессоры ARM доказали свое преимущество во встроенных системах, мобильных телефонах, планшетах, но их использование для более серьезных приложений главным образом было ограничено возможностями 32-разрядной адресации. В качестве промежуточного решения в процессорах Cortex-A15, при сохранении общей 32-разрядной архитектуры, для адресации к памяти до 1 Тбайт было предложено расширение 40-bit Large Physical Address Extensions. Подобное когда-то практиковалось в 16-разрядных мини-ЭВМ.
Архитектура AArch64 стала восьмой по счету версией архитектуры ARM, отсюда и второе ее название — ARMv8. Эта версия является принципиально новым решением с новым набором инструкций A64. Работа над ARMv8 заняла более пяти лет, а результатом стал не имеющий ничего общего с прежним полноценный набор инструкций AArch64 (актуальная версия ARMv8-A ), и со временем, когда не нужно будет поддерживать унаследованные приложения, можно будет отказаться от нынешнего набора AArch32. Архитектура ARMv8-A реализована в процессорах Cortex-A53 и Cortex-A57, а некоторые новые продукты для этой платформы уже не поддерживают AArch32 (например, OC, разрабатываемые по проекту Fedora) — специально для встроенных систем будет создана сокращенная 32-разрядная версия ARMv8-R.
В ARMv8 по сравнению с ARMv7 более полно отражается идеология архитектуры RISC, созданной не для встроенных систем, а для решения классических задач счета и обработки данных. В ARMv7 и в ее предшественниках изначально были заложены свойства, уходящие корнями в требования со стороны встроенных систем и диктующие необходимость специальным образом использовать регистры, чтобы успевать в реальном времени обрабатывать прерывания. Эти особенности не находят свое отражение в AArch64, поэтому в ARMv8 были совмещены обе системы команд. Набор инструкций AArch64 адаптирован к работе в одном из двух режимов в зависимости от операционной системы. Если установлен Linux или другие распространенные клоны UNIX, то выбирается режим LP64, где целые числа имеют длину 32 бита и длинные целые — 64 бита, а если Windows, то режим LLP64, где целые и длинные целые имеют длину 32 бита, а очень длинные целые (long long integers) — 64 бита.
На уровне проектирования процессор Cortex-A57 был известен под именем Atlas, а Cortex-A53 — под именем Apollo, оба имеют общую систему команд, почти неразличимы для приложений, но Cortex-A57 быстрее и потребляет больше энергии. Наличие такой пары (см. рисунок) позволяет устройству иметь два набора процессоров и в нужный момент переключаться на тот, который точнее соответствует текущей нагрузке. Условно Cortex-A57 можно представить как Cortex-A15 с 64-разрядной поддержкой, но и на 32-разрядных кодах он на 20–30% быстрее последнего, а 64-разрядные коды расширяют функциональность. Аналогичным образом о Cortex-A53 можно сказать, что это расширенная версия Cortex-A7.
Процессоры ARM 50-й серии |
Производители
Грядущие изменения в серверном сегменте стимулировали соревнование среди не слишком известных в нем компаний, имеющих опыт работы с ARM. Лидирует в гонке компания AMC (Applied Micro Circuits), существующая с 1979 года и специализирующаяся на процессорах для встроенных систем на базе архитектуры PowerPC 400, системах на кристалле с технологией КМОП и сетях на уровне кристалла. В 2011 году AMC реализовала ARMv8-A в своей платформе X-Gene Platform, а в ноябре 2012 года продемонстрировала возможности X-Gene Platform средствами эмулятора, собранного на массиве FPGA. Вариант X-Gene на кристалле был показан в июне 2013 года и представляет собой восьмиядерный сервер на чипе (Server-on-a-Chip, SoC), ядра в котором объединены по технологии CCNoC (Cache-Coherent Network on Chip for Chip).
Входящая в платформу X-Gene Platform плата X-Compute содержит один процессор X-Gene, 128 Гбайт памяти, три порта Gigabit Ethernet и один порт 10-Gigabit Ethernet. Плата ориентирована на вычисления. Другая плата, названная X-Memory, оснащена двумя чипами X-Gene, а ее 16 ядер могут быть объединены в одну машину по архитектуре NUMA или SMP. Этот сервер имеет вдвое большую память и удвоенное число портов по сравнению с X-Compute. Проблема хранения данных решается средствами платы X-Storage, на которой устанавливаются диски SATA и SSD. Полное решение — X-C1— включает X-Gene Platform и платформу для разработки X-C1 Server Development. Всеми этими комплектующими раньше других воспользовалась Dell для сборки своих прототипов серверов, работающих под управлением Fedora. Компания HP также намеревается использовать X-Gene Platform в проекте Moonshot.
Многоядерные процессоры и грядущая параллельная революция
Пути развития массовых компьютеров и суперкомпьютеров снова сближаются — грядет параллельная революция. Леонид Черняк |
Компании Calxeda всего пять лет, и в момент образования она называлась Smooth-Stone, что в переводе с английского означает «камень-голыш» (таким камнем, согласно легенде, Давид убил Голиафа), но потом по юридическим причинам использовали библейское название камня. Основание Calxeda явным образом было стимулировано работами Ананда Агарвала из Массачусетского технологического института, руководившего созданием 64-ядерного процессора Tilera. В отличие от Tilera, где использовались ядра с архитектурой MIPS, основатели Calxeda сделали ставку на ARM, полагая, что под эту архитектуру написано больше ПО. В 2011 году им удалось собрать сервер с 480 ядрами, где было установлено 120 четырехъядерных ARM Cortex A9. До анонса ARMv8 руководство компании уверенно заявляло, что у серверов на 32-разрядных процессорах самостоятельное будущее и они не намереваются конкурировать ни с Intel, ни с AMD, однако недавно был анонсирован проект изделия Sarita, совместимого по разъему с последними поколениями серверов на чипе.
Fabless-компания Cavium специализируется на системах на чипе, использующих две доступные архитектуры: ARM и MIPS. Она поставляет процессоры, платы и системы на чипе для сетевого оборудования (коммутаторы, маршрутизаторы), а также для специализированных компьютеров и систем хранения. В рамках проекта Thunder компания планирует создавать мультиядерные системы на базе ARMv8, которые станут дополнением к выпускаемым ныне системам Octeon Nitrox. Предполагается создать целое семейство процессоров, и в преддверии этого события на конференции ARM TechCon компания Cavium продемонстрировала набор для разработки ПО на основе ОС Ubuntu, а ее дочерняя компания MontaVista готовит версию Linux, отличающуюся повышенной надежностью, — Carrier Grade Linux для операторов связи, заинтересованных в ARMv8.
Как бы ни были интересны решения первопроходцев, судьбу процессоров ARMv8 вершат не они, а AMD и Samsung.
SMP не догма
Задача оптимального использования вычислительной мощности многопроцессорных систем стояла всегда, но критерии для ее решения в разное время отличались. В прошлом главным требованием была производительность, а сейчас на первое место, особенно в мобильных системах, выходит энергопотребление. В этих условиях схема с симметричной мультипроцессорностью (Symmetric Multiprocessing, SMP) нуждается в усовершенствовании.
Когда сегодня говорят о SMP, то мало кто вспоминает, что ей предшествовала асимметричная мультипроцессорность (Asymmetric Multiprocessing, AMP), суть которой в том, что не все процессоры, в отличие от SMP, используются одинаково: например, один процессор может поддерживать ОС, другой — расчеты, третий — ввод-вывод и т. д. Гетерогенные системы, состоящие из CPU, GPU или APU (Advanced Processing Unit), тоже можно назвать асимметричными, но это достаточно тривиальные решения.
Появление в 60-е годы первых двухпроцессорных систем стимулировалось тем, что построить новый, вдвое более мощный процессор было значительно дороже, чем использовать два готовых, такими были Burroughs B5000, DECsystem-1055, BM System/360 model 65MP. Но существовавшие на тот момент операционные системы поддерживали работу только одного процессора, и асимметричное распределение нагрузки стало реакцией на это ограничение. Первой массовой AMP-системой оказалась спарка PDP-11/74 из двух процессоров PDP-11/70 — один работал под управлением ОС RSX-11M, а второй выполнял операции ввода-вывода. Аналогично был устроен и VAX-11/782, а следующие многопроцесорные модели VAX, начиная с 8300 и 8800, уже были построены как SMP. Примерно в то же время в IBM была создана операционная система OS/360 M65MP, открывшая путь многопроцессорным мэйнфреймам, а с появлением Unix использование SMP стало нормой.
Когда ограничением является не мощность, а потребляемая энергия, то возникает необходимость в более эффективном использовании ресурсов; так, в автомобильных двигателях с числом цилиндров шесть и более есть возможность работы на четырех цилиндрах. Нечто подобное делают компании Qualcomm и Nvidia с использованием ядер ARM. В Qualcomm разработан собственный подход, получивший название «асинхронная симметричная мультипроцессорность» (Asynchronous Symmetric Multiprocessing, aSMP). Главное достоинство aSMP — в возможности использовать весь частотный диапазон, в котором может работать каждое отдельно взятое ядро. В случае ядер ARM Cortex-A15, собранных в системе Qualcomm S40 Snapdragon, нижний предел составляет 1,5 ГГц, а верхний — 2,5 ГГц. Точнее это решение стоило бы назвать асинхронной регулировкой частоты — чем выше частота, тем выше мощность и потребление, но максимальная мощность не всегда нужна, поэтому решение от Qualcomm позволяет выбирать для каждого ядра частоту, минимально приемлемую. Отсюда, кстати, понятно, почему даже простые гаджеты стоит строить на мультиядерных процессорах.
Nvidia назвала свою альтернативу SMP, реализованную в Tegra 3, «переменной SMP» (Variable SMP), хотя речь идет о возврате к AMP в современном исполнении. В объявленном четырехпроцессорном Tegra 3 на самом деле есть пятый управляющий процессор, отключающий «лишние» ядра, как цилиндры в моторе автомобиля, в тех случаях, когда их мощность избыточна. Если работает мультимедийное приложение, то требуются все четыре, а для работы с текстами достаточно одного. Все ядра построены по общей архитектуре Cortex A9, но технология пятого отличается меньшим потреблением. Вместе они объединены так, что управляющее ядро всегда прозрачно для операционной системы, то есть для его использования не надо модифицировать код приложений — оно работает полностью автоматически. Физическая особенность Tegra 3 в том, что при работе одного ядра (single core mode) частота равна 1,4 ГГц, а если задействованы два и более, то — 1,3 ГГц, пятое ядро работает на частоте всего 0,5 ГГц, причем весьма экономично, и не вызывает заметного дополнительного потребления.
Аналогичные по смыслу работы ведут TI, Apple, Marvel, Broadcom, Samsung и другие производители процессоров с ядрами ARM.
***
Профессор МТИ Ананд Агарвал, создатель процессора Tilera, в свое время заметил: «Процессор — это транзистор современности». Сегодня, пожалуй, следовало бы уточнить — не процессор, а ядро. Сейчас из простых и экономичных ядер можно собирать разнообразные системы и серверы на чипе — эволюция перехода от одноклеточных организмов к многоклеточным имеет отношение и к семейству RISC-процессоров компании ARM, у которой появились неплохие шансы расширить свое присутствие не серверном рынке.