В числе прочих занимательных новинок, которые глава Nvidia Дженсен Хуанг (Jensen Huang) демонстрировал на октябрьской конференции GTC 2025, особое внимание привлёк центральный процессор под кодовым именем Vera — 88 физических ядер Olympus архитектуры ARM, способных реализовывать по паре вычислительных потоков каждое. Причём энергопотребление такого ЦП заявлено на уровне около 50 Вт, что по меркам x86-чипов с сопоставимым числом ядер смехотворно мало. Ещё в 2014 г. Nvidia принималась за разработку центральных процессоров в рамках инициативы Project Denver — итогом которого стало, кстати, появление серверных чипов Tegra, — но именно у ядер Olympus, уверены многие энтузиасты, есть шанс сделаться основой для построения давно ожидаемых рынком ПК-ориентированных центральных процессоров под чёрно-зелёным логотипом. Так или иначе, для серверов (и прежде всего — нацеленных на тренировку и исполнение генеративных моделей искусственного интеллекта) как раз архитектура ARM, относящаяся к семейству RISC, представляется в настоящее время наиболее перспективной. Пусть ЦП на её основе уступают по производительности x86-чипам (тем более, что ИИ-задачи всё равно решает ГП либо тензорный ускоритель), зато они весьма энергоэффективны и свободны от целого ряда ограничений, присущих CISC-платформе, на которой традиционно царят Intel и AMD.
Чуть ранее, в сентябре, тот же Дженсен Хуанг явно проиллюстрировал этот тезис, указав, что ИИ-серверы с графическими адаптерами Nvidia, подключаемыми через NVLink, и процессорами семейства x86 масштабируются до конфигурации максимум NVL8 — т. е. до восьми плат под управлением одного ЦП. Причём не потому, что Intel Xeon плохи сами по себе, а из-за принципиальных ограничений шины PCIe, ключевого сопрягающего элемента x86-ориентированной платформы. В то же время на базе ЦП с ядрами ARM, включая и перспективные Vera, можно организовывать конфигурации вплоть до NVL72. Одна только эта возможность, уверен глава компании, отрывает для ИИ-серверов на базе архитектуры ARM огромный рынок, в мировом масштабе оцениваемый примерно в 30 млрд долл. США. Возникает, правда, обоснованный вопрос: раз ARM — настолько удачная процессорная архитектура, развивавшаяся десятилетиями, почему только сегодня наконец-то заходит речь — даже не о потенциальном вытеснении ею x86, но всего лишь о выводе применения этой архитектуры на более или менее заметный в масштабах мирового компьютерного рынка уровень?
Принципиальная блочная схема процессора архитектуры Advanced RISC Machine; сокращённо — ARM (источник: GeeksForGreeks)
Физическая процессорная архитектура — то, как именно организованы элементарные транзисторы в логические контуры, — не имеет смысла в отрыве от набора программных команд, которые на этих контурах будут исполняться: та и другой разрабатываются совместно. В конце 1980-х — начале 1990-х на бурно развивавшемся в ту пору мировом ИТ-рынке активно соперничали два направления развития процессорных архитектур и соответствовавших им принципов организации наборов команд (instruction set architecture, ISA): CISC и RISC. Фактически, говоря об «архитектуре процессора», указывают именно на соответствующий его аппаратной основе ISA — поскольку от поколения к поколению конкретная реализация логических контуров на кремниевом кристалле меняется порой заметнее, чем исполняемый процессорами одного и того же семейства набор инструкций.
Так вот; в середине 1980-х помимо развивавшегося Intel с 1970-х годов направления x86 (как раз в 1985-м этот ISA был усовершенствован до 32-разрядного — это ознаменовал вывод на рынок процессора 80386) с набором сложных команд, complex instruction set computing (CISC), покупателям была доступна целая плеяда компьютеров, построенных на ЦП с набором сокращённых команд (reduced instruction set computing, RISC) — в вариациях Sun Sparc, IBM/Apple/Motorola PowerPC, различных MIPS и т. д. «Полной» в этой терминологии команда называется потому, что позволяет умещать в считанное число инструкций переменной длины (а в пределе — в одну-единственную) вычислительную операцию едва ли не любой сложности, — пусть даже за счёт увеличения времени исполнения такой инструкции до нескольких процессорных тактов. Физическую же возможность выполнять сложные вычисления за крайне ограниченное число шагов обеспечивает соответствующая организация логических вычислительных блоков в процессоре, ориентированных на исполнений сразу серий операций, а не одной элементарной инструкции за раз.
Ничего необычного; всего лишь CISC-процессоры Intel 80286, изготовленные в 1982 г. на предприятиях AMD (слева) и Siemens (источник: CPUMuseum)
В классическом курсе Computer Science Стэнфордского университета приводится следующий показательный пример: пусть CISC- и RISC-процессорам предложено решить одну и ту же задачу — перемножить два числа из некой таблицы (кстати, задача эта существенно осовременится, если матрицы будут разными, — превратится в элементарную операцию матричного умножения, особенно актуальную сегодня в приложении к генеративным нейросетям). У CISC-процессора на этот случай предусмотрена, ясное дело, сложная инструкция (complex instruction) под условным наименованием MULT: компилятору достаточно указать её в виде
MULT 2:3, 5:2
и процессор сам, опираясь на заданные его ISA и воплощённые в его же собственном микрокоде правила, обратится к той области оперативной памяти, где хранятся значения, записанные в ячейках исходной матрицы на пересечении второго столбца с третьей строкой и пятого столбца со второй строкой. А далее — запишет эти значения в отдельные ячейки регистровой памяти (расположенные в непосредственной близости от его логических контуров), затем перемножит полученные операнды, поместит результат в другую ячейку регистровой памяти, а затем переправит его в оперативную, чтобы тот оказался доступным для других команд. Работающий на CISC-платформе компилятор, как нетрудно видеть, быстро и эффективно переводит в процессорный микрокод (язык ассемблера) команды высокоуровневого языка программирования: сложные инструкции уже очень близки к таким командам. Ещё один большой плюс рассмотренного подхода — умеренное расходование оперативной памяти в ходе исполнения программы: инструкций для решения поставленной задачи требуется сравнительно мало, поскольку каждая из них реализует комплексную последовательность предварительно запрограммированных (на уровне ISA) действий.
Время, затраченное на исполнение некой программы (обратная к нему величина, кстати, соответствует производительности вычислительной системы), вычисляют как произведение общего числа инструкций в этой программе, среднего количества процессорных циклов, затрачиваемых на исполнение каждой инструкции, и длительности единичного цикла. CISC-подход подразумевает заметное снижение величины третьего сомножителя за счёт некоторого увеличения второго, RISC же — наоборот (источник: Wikimedia Commons)
А как поведёт себя при решении той же задачи процессор с набором сокращённых команд — RISC? Он примется выполнять те же самые действия, что в случае CISC заданы инструкцией MULT, но поэтапно: одна элементарная — занимающая по продолжительности строго один процессорный такт — команда за другой. Сначала такой ЦП обратится к оперативной памяти дважды, чтобы переместить оттуда в регистровую необходимые операнды (инструкция LOAD), затем перемножит полученные числа (PROD), после чего вернёт в ОЗУ готовое произведение из процессорного регистра (STORE):
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
Такая программа на языке ассемблера выходит длиннее, да и места в памяти занимает больше. Сам процесс компиляции её из кода, написанного на высокоуровневом языке программирования, также окажется более длительным и ресурсоёмким. Но и достоинства RISC-подхода не менее очевидны: каждая из сокращённых команд исполняется ровно за один такт. А поскольку они поистине элементарны, на уровне полупроводниковой логики для их аппаратной реализации требуются существенно более простые (а потому и более дешёвые в производстве, и лучше масштабируемые при миниатюризации техпроцессов) транзисторные контуры. Конвейеризация (pipelining) для RISC-архитектуры также становится делом нетрудным — опять-таки, по причине строго равного времени исполнения каждой из элементарных инструкций. Ещё одно соображение в пользу ориентации на сокращённые команды: CISC-процессор, исполнив сложную инструкцию, обязан по её завершении очистить задействованные регистры, чтобы не допустить контаминации последующей операции данными предыдущей. В случае же RISC контаминация исключена: даже если некая область регистровой памяти хранит загруженные на одном из прошлых тактов биты, очередная команда LOAD явным образом перезапишет их актуальной именно на данном этапе информацией. А это значит, что если один операнд используется последовательно несколько раз (опять вспоминаем о матричном умножении), нет необходимости тратить процессорные такты на многократную его загрузку из ОЗУ, — достаточно снова и снова обращаться к однажды занятому им регистру.
С середины 1950-х и вплоть до 2023 г. цены за 1 Тбайт компьютерной памяти снижались почти линейно (в логарифмическом масштабе, разумеется) — правда, потом разразился ИИ-бум, и теперь всё настолько сложно, что завершённое в 2024 г. исследование самые свежие на тот момент данные не учло (источник: OurWorldInData)
Строго говоря, ранние компьютеры практически все без исключения полагались именно на полные инструкции — прежде всего по причине чрезвычайной дороговизны любых разновидностей памяти на заре вычислительной эры. Любой сэкономленный на размещении команд в ОЗУ байт означал возможность оперировать чуть бóльшим количеством данных за раз, что в итоге повышало производительность системы в целом — даже с учётом более продолжительного времени на исполнение процессором каждой сложной инструкции. Легендарные машины IBM System/360, PDP-11, VAX и многие другие фактически представляли собой CISC-платформы, однако сам этот термин возник только в конце 1970-х — когда началась разработка архитектуры RISC, и все ISA, не ставившие во главу угла упрощение элементарных команд до пригодного для исполнения за один цикл уровня, стали относить к разряду CISC.
Интересно, кстати, что сам подход RISC берёт начало из вполне конкретной, практической задачи: в 1974 г. в IBM был создан прототип телефонного коммутатора (для медных аналоговых линий, разумеется, — откуда тогда было взяться другим?), который был способен налаживать каналы связи между 300 парами абонентов в секунду; немыслимая для тех времён величина. Однако вот беда: тогдашние компьютеры — по крайней мере того уровня, которые могли себе позволить массово устанавливать на своих узлах провайдеры телефонной связи, — не были готовы обеспечивать достаточно высокое для управления столь стремительным контроллером быстродействие. Устройство это, как признавали представители самой компании, уже намеревались отложить в долгий ящик — в надежде, что со временем эволюция вычислительных систем естественным образом породит более скоростные компьютеры. Однако работавшая над коммутатором команда Джона Коука (John Cocke) закусила, что называется, удила, — и выдвинула идею радикально повысить производительность систем (тех, что под рукой; на доступной на тот момент элементной базе) как раз за счёт использования ограниченного набора кратких, не требующих долгого времени для исполнения, инструкций. Понятно, что круг решаемых телефонным коммутатором задач крайне узок, — сложные команды для управляющего им вычислителя просто не нужны. Громадная заслуга Коука и его команды — в том, что они не стали зацикливаться на разработке специализированного контроллера для одного-единственного приложения, а сформулировали базовый принцип, который лёг затем в основу RISC как программно-аппаратной архитектуры: «Незачем усложнять вычислитель, если такое усложнение себя не окупает» (don’t add complexity unless it pays for itself).
Слайд из одной из ранних презентаций группы Коука, наглядно представляющий суть RISC-архитектуры (источник: IBM)
В 1980-м Коук с коллегами представили прототип перового универсального (в смысле, не ограниченного задачами одной только телефонной коммутации) RISC-компьютера, незамысловато поименованного по номеру здания, в котором работала их группа, — IBM 801. За ним последовали другие построенные на тех же принципах — строго один такт на инструкцию, конвейеризация вычислений, большее количество процессорных регистров для сокращения задержек при обмене данными с ОЗУ — системы сторонних разработчиков: Stanford MIPS, Berkeley RISC 1 и 2 и т. д. Ближе к началу 1990-х архитектуры процессоров с набором сокращённых инструкций начали воплощаться «в металле» (в кремнии, точнее) одна за другой: достаточно упомянуть Sun SPARC (сокращение от Scalable Processor Architecture) и PowerPC — совместный проект Apple, IBM и Motorola. Но когда сформировался и принялся наполняться рынок персональных компьютеров, CISC-архитектура — на которую вопреки очевидности сделала ставку Intel — довольно быстро стала не просто преобладать, а тотально доминировать (сложную историю с метаниями Apple из стана CISC в лагерь RISC и обратно оставим пока без внимания). И объясняется этот феномен довольно просто: экономическим эффектом сильнейшей положительной обратной связи.
На первых порах архитектура центрального процессора жёстко определяла, какое именно ПО будет исполняться на оснащённом этом ЦП компьютере: виртуализация появилась значительно позже, когда вычислительное «железо» сделалось кратно мощнее. И вот тут роль экономических соображений крайне велика: чем популярнее становится некая программно-аппаратная экосистема, тем выше объёмы её сбыта — и тем ниже себестоимость каждого такого компьютера. Исходные фиксированные затраты — на разработку ISA, на проектирование ЦП под неё, на аренду (если нет своего производства) чипмейкерских площадей для выпуска микросхем — для каждой из соперничающих экосистем примерно равны. А дальше всё зависит от объёмов сбыта: чем больше продано процессоров, тем крупнее число в знаменателе дроби, что определяет себестоимость каждого ЦП (в числителе её — те самые фиксированные расходы плюс переменная величина, фактические затраты на изготовление единичной микросхемы, пренебрежимо малая по сравнению с фиксированной частью). Но и разработчики ПО тоже стремятся реализовать как можно больше копий своих продуктов, и потому предпочитают создавать их под наиболее популярные платформы. Вот и выходит, что на открытом рынке — где исходно нет монопольного доминирования некой проприетарной, не лицензируемой сторонним вендорам ISA — рост спроса на «железо» определённой архитектуры усиливает динамику продаж подходящего для неё ПО, и наоборот. Формируется положительная обратная связь — благодаря которой за сравнительно короткое время одна из соперничающих экосистем естественным образом становится доминантной.
Метания Apple Mac (в девичестве — Macintosh) между двумя принципиально различными ISA никак, по сути, не ухудшали качества жизни конечных пользователей этих компьютеров, поскольку ПО для проприетарной экосистемы под знаком надкушенного яблока всегда своевременно и исправно мигрировало на очередную процессорную архитектуру в полном объёме (источник: Apple)
Американская компания, ныне известная как создатель самой популярной в мире архитектуры центральных процессоров, x86, вообще-то была задумана в 1968 г. как предприятие для проектирования и изготовления компьютерной памяти, — и почти два десятка лет именно этим усердно и занималась. Свой первый центральный процессор, 4-разрядную модель 4004, Intel создала в 1971-м, можно сказать, случайно, — по заказу японского производителя калькуляторов Busicom. И хотя эта микросхема с шестнадцатью ножками исполняла весьма ограниченный набор всего из 46 команд, формально она вполне соответствовала принципам архитектуры CISC — поскольку такие команды представляли собой сложные инструкции, комбинирующие обращение к оперативной памяти и собственно вычисления. Верность избранной однажды архитектуре компания сохранила, выпустив несколько лет спустя 8-разрядные чипы 8008 и 8080. Последний, кстати, лёг в основу одного из первых персональных компьютеров под названием Altair 8800, который в 1974 г. вывела на рынок американская же компания Micro Instrumentation and Telemetry Systems (MITS). Модель эта знаменательна в истории ИТ-рынка тем, что именно для исполнения на ней в компании Micro-Soft (до начала 1980-х её название записывали именно так, через дефис), образованной Биллом Гейтсом (Bill Gates) и Полом Алленом (Paul Allen) в 1975 г., был разработан интерпретатор Altair BASIC. Впрочем, до середины 1980-х Intel продолжала считать изготовление оперативной памяти своим основным бизнесом, и только массированное вторжение в этот сегмент рынка японских изготовителей DRAM (в ходе которого доля Intel в мировых её поставках снизилась за десятилетие, с 1974-го по 1984-й, от уровня 82,9% до 1,3%) заставило американского чипмейкера взяться за развитие процессорного направления всерьёз.
Intel сразу же пошла, по сути, ва-банк, в 1985 г. сделав ставку на совершенно неизведанную на тот момент карту, — на 32-разрядный центральный процессор 80386. Притом именно этот чипмейкер поставлял тогда свою вполне успешную 16-разрядную модель 80286 не кому-нибудь, а самой IBM для использования в её компьютерах под индексом 5170, более известных как PC/AT, что дебютировали в 1984-м, а также множеству других компаний, что осваивали оказавшуюся крайне привлекательной «IBM PC-совместимую» архитектуру. По словам Пэта Гелсингера (Patrick Gelsinger), в ту пору одного из ведущих инженеров Intel, а ныне её не такого уж давнего бывшего главы, переход к 32-разрядному ЦП именно для персональных компьютеров был сопряжён с серьёзным риском, рывком в неведомое: тогда такие процессоры проектировали и выпускали для мэйнфреймов и «мини-компьютеров» вроде DEC VAX-11/780. Впрочем, с коммерческой точки зрения риск был вполне оправдан, поскольку бесспорный лидер сегмента ПК на тот момент, всё та же IBM, активно продвигала собственную 16-разрядную операционную систему, — OS/2. Ещё бы немного — и нарождавшаяся открытая платформа, на которой персональные компьютеры мог выпускать из стандартизованных компонентов и под независимо разрабатываемую ОС решительно кто угодно, ушла бы в небытие: глобальный компьютерный рынок стал бы в этом случае принципиально иным. «IBM владела архитектурой OS/2 от начала до конца. Это были их приложения, их операционная система и их аппаратная часть — вспоминал Гелсингер, — потому только они при переходе к следующему поколению могли предложить комплексное решение — но безо всякой гарантии совместимости с предыдущим поколением». Вырваться из проприетарных тенёт ИТ-тяжеловеса Intel очень помогла инициатива Compaq Computer Corp., которая почти сразу, как только новый 32-разрядный чип стал доступен, вывела на рынок персональный компьютер на процессоре 80386 — и тем самым первой всерьёз поколебала позиции IBM. Ну а потом уже подключились вендоры масштабом поскромнее, зато числом куда поболее, — и рынок ПК начал формироваться именно в том виде, который нам сегодня привычен.
Здесь снова уместно вспомнить о значимости положительной обратной связи, которая возникает, стоит только широкому рынку обратить внимание на взаимоусиливающую совместимость определённой открытой архитектуры и ориентированного на неё широко востребованного ПО. IBM, вообще говоря, сама открыла ящик Пандоры в начале 1980-х, не просто выбрав процессор сторонней разработки для своего персонального компьютера, но настояв (поскольку производственные мощности Intel были куда скромнее амбициозных планов заведомо превосходившей её по всем финансово-экономическим параметрам IBM) на лицензировании изготовления процессоров 80286 сторонним компаниям для обеспечения альтернативного канала поставок, second source, — включая таких независимых чипмейкеров, как AMD, Harris, Siemens и Fujitsu. Для 80282 (который вскоре стали называть просто Intel 286) создали несколько операционных систем, включая разработанную Microsoft (да-да!) версию UNIX под названием XENIX, но наиболее популярной стала DOS (Disk Operating System) за авторством всё той же редмондской компании. Создана эта DOS была опять-таки по контракту с IBM специально под начало широкого выпуска IBM PC в начале 1980-х и основывалась на более ранней операционке CP/M (что расшифровывалось сперва как Control Program/Monitor, а затем как Control Program for Microcomputers), которую для разработал Гэри Килдалл (Gary Kildall) в Digital Research, Inc. ещё для 8-разрядных процессоров 8080. Microsoft приобрела права на клон CP/M под названием 86-DOS — и на его основе создала первую версию MS-DOS (которая, кстати, как раз по причине прямого происхождения от ориентированной на 8-разрядные процессоры системы не раскрывала целиком потенциала Intel 286 — его готовности к работе в многозадачном режиме, в частности, — в отличие от заброшенной за отсутствием стороннего финансирования XENIX).
Итак, во второй половине 1980-х на широком рынке ПК (который, впрочем, практически ограничивался тогда США, Западной Европой, Японией и рядом других стран) сложилась уникальная ситуация, что способствовала стремительному взлёту популярности IBM-совместимых компьютеров — и тем самым архитектуры CISC, на которой основывались их центральные процессоры. Во-первых, процессоры эти выпускали несколько чипмейкеров разом, конкурируя между собой, но придерживаясь одних и тех же спецификаций. Открытый же характер платформы позволял свободно комбинировать любой из таких ЦП с модулями памяти, контроллерами ввода-вывода, кассетными накопителями и иными компонентами для сборки готовых ПК — без привязки к самой IBM или иным крупным вендорам. Во-вторых, фирменный микрокод IBM для системной микросхемы BIOS оказалось на удивление просто воспроизвести, не нарушая закона об охране интеллектуальной собственности — действуя через «чистую комнату» (clean room design). Одна группа программных инженеров изучала оригинальный микрокод — официально ли опубликованный, добытый ли методом обратного инжиниринга, — плюс доступную техническую документацию для него, и формировала в итоге техническое задание: буквально какие команды в какие регистры при каких условиях микросхема BIOS должна в итоге отправлять. Другая же группа, полностью лишённая связи с первой, садилась в пресловутую «чистую комнату» и совершенно самостоятельно — на основе предложенного ей первой группой техзадания — писала свою версию микрокода; с легальной точки зрения при такой организации труда решительно безупречную.
Отдельные экземпляры как оригинальных, так и совместимых IBM PC AT вполне работоспособны до сих пор (источник: Reddit)
Дело не такое уж простое — Compaq потратила на получение этим способом оригинального, но полностью совместимого с IBM’овским BIOS 1 млн долл. в 1982 г. (примерно 3,3 млн в сегодняшних долларах), — но оно того стоило: компьютерная архитектура, которую мы сегодня называем x86, сделалась в полном смысле слова открытой. BIOS, ЦП, память, контроллеры ввода-вывода, а со временем и всё более широкий набор ПО под достаточно бюджетную и удобную в работе ОС, права на которую опять-таки не принадлежали IBM, — всё это было доступно сразу от нескольких конкурирующих поставщиков по не самым заоблачным ценам. Растущий же рынок потенциальных покупателей ПК — и частных, и в гораздо большей степени корпоративных — заставлял разработчиков и аппаратной, и программной компонент x86-платформы ещё усерднее совершенствовать свои продукты, что опять-таки укрепляло положительную обратную связь — и выводило этот вариант CISC-архитектуры на всё более и более недоступную для RISC орбиту.
Другое дело, что сегодня маятник явно начал движение в обратную сторону — и теперь уже RISC-системы, особенно ориентированные на решение ИИ-задач, приобретают всё бóльшую популярность. Но к вопросу о том, с чем именно это связано и какие конкретные преимущества обеспечивает владельцам дата-центров переход на процессоры с наборами сокращённых команд именно в наши дни, мы вернёмся в следующий раз.