В числе прочих занимательных новинок, которые глава 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-системы, особенно ориентированные на решение ИИ-задач, приобретают всё бóльшую популярность. Но к вопросу о том, с чем именно это связано и какие конкретные преимущества обеспечивает владельцам дата-центров переход на процессоры с наборами сокращённых команд именно в наши дни, мы вернёмся в следующий раз.