Читать книгу Made at Intel: Сделано в Intel - - Страница 11
Architecture and religion – 3
ОглавлениеГлавная вера
И все же важнейшей религией компании является сама x86 Instruction Set Architecture[10]. Intel изначально свято придерживался принципа backward compatibility[11] – программы, написанные для предыдущих поколений процессора, работают на следующих без изменений (ну, разве что требуют эмулятора операционки). Без этого нельзя построить никакой экосистемы, ибо ее формирование – процесс, занимающий многие годы. И именно благодаря последовательности Intel x86 ISA стала для компьютерного мира чем-то вроде христианства. Аналогию можно продолжить, сравнив разделение христианства на католическую и православную ветви – Intel и AMD (или наоборот). Но мы этого делать не будем. Однако принцип backward compatibility требует, чтобы любое изменение ISA оставалось в ней навсегда. И, наверно, нам следовало относиться к архитектуре более бережно. Когда я был маленьким, а деревья большими, один умный человек (Ronak Singhal) говорил мне, что тут, дескать, не о чем печалиться. С каждым shrink (переходом на более совершенный процесс изготовления чипов) площадь, необходимая для поддержки legacy[12] инструкций, «сжимается» в два раза. Но вот когда Intel серьезно «застрял» на 10-нм техпроцессе, мои опасения вернулись с удвоенной силой.
Отчасти, впрочем, наши промахи можно объяснить тем, что x86 – «закрытый клуб», в отличие от ARM и тем более RISC–V. Ну, например, собирается ARM «выкатить» новую версию ISA. Он будет согласовывать ее со всеми основными вендорами – Apple, Samsung, Qualcomm и т. д. Поэтому у него куда меньше шансов совершить какую-нибудь глупость. Intel, конечно, тоже советуется с основными партнерами – Microsoft, Google, Amazon. Но основные решения все же принимаются внутри. Мне это почему-то представлялось так. На унылом севере, вдали от людского жилья, стоит темная башня. Лишь на последнем этаже ее горит свет. И там наверху собрались адепты тайного ордена… В случае с «Интел» «орден» имеет вполне конкретное название – ISA CPT. Именно там принимаются самые важные архитектурные решения. На этот митинг вхожи лишь ведущие технические лидеры компании – Fellows, Senior Principal Engineers. Мне трудно всерьез назвать себя одним из адептов (так, скорее, младшим послушником). Но я всегда был юношей любопытным, и время от времени мне удавалось туда пролезть – (восьмым) содокладчиком в какой-нибудь презентации или просто «вольным слушателем». Чаще все же приходилось довольствоваться информацией из вторых-третьих рук. И сегодня я немного расскажу вам о разного рода «ересях», которые зарождались и погибали внутри «Интел».
Гибель «Титаника»
Хотя Itanium нарекли «Титаником» сразу же после анонса архитектуры 4 октября 1999-го, он не был поначалу и вполовину так плох, как его реноме. Архитектура VLIW/EPIC смотрелась необычно по сравнению с CISC и манила новыми возможностями. Мою фантазию будоражили предикатное исполнение, вращающиеся регистры и explicit software pipelining[13]. К тому же IA-64 была in-order[14] архитектурой – можно было точно предсказать, сколько будет обрабатываться один элемент достаточно длинного цикла при условии прогретых кэшей. Для кого как, а для меня эта «иллюзия контроля» почему-то всегда была важна. Тогда я еще плохо представлял себе важность software ecosystem[15] для успеха платформы. Да, понимал, что работа предстоит огромная, но шансы представлялись вполне себе неплохими.
Но все же Itanium, как и «Титаник», видимо, был проклят с самого начала. Дело в том, что против него играли как религия (not invented here[16]!), так и политика. А в средневековом государстве это необоримая сила. «Крестным отцом» Itanium был Mike Fister, тогдашний глава серверного подразделения Intel. И в начале 2000-х между ним и Полом Отеллини развернулась борьба за то, кто станет следующим CEO Intel после Kрейга Баррета. Борьбу эту Captain Itanic[17] проиграл и ушел в CEO в Cadence (который, безусловно, уважаемая компания, но все же не Intel). Также ко дну пошло его детище. А спасать было некому – Отеллини Itanium не жаловал. Уж не знаю, вследствие «разборок» начала 2000-х или по каким-то другим причинам… К тому же обнаружилась масса других проблем.
• Индустрия как-то сразу не поверила в Itanium. Портирование софта шло без особого энтузиазма. А Intel не решился на большую ставку – Itanium enabling strategy[18] всегда оставляла у меня ощущение какой-то недосказанности…
• Возможно, расчет был на x86 compatibility block[19], но именно он стал больным местом Itanium – энергии потреблял больше, чем весь остальной процессор, и грелся, как сволочь. Бинарный транслятор также не выглядел панацеей: преобразование из CISC в VLIW является одним из самых сложных (хотя на «Эльбрусе» как-то работает).
• Насколько увлекательным являлось написание микрокернелов для Itanium на ассемблере – настолько кошмарным было портирование приложений. Компилятор является основным камнем преткновения для архитектуры VLIW/EPIC. Одно из немногих исключений, которое я знаю, – опять же «Эльбрус». Но для того чтобы довести его компилятор до ума, потребовалось порядка 20 лет. «Интел» столько ждать не захотел…
• Ну и последнее – Itanium всегда выпускался с отставанием на шаг по техпроцессу от x86. И в этом трудно не усмотреть наличие «доброй» политической воли.
IA-64 влачила жалкое существование до начала 20-х. И лишь в феврале 2019-го Linus Torvalds сказал: «It’s dead, Jim[20]». Но можно было спокойно сделать это и на 10 лет раньше. И все же у меня осталось от Itanium ощущение «неспетой песни». Да, я не люблю VLIW (я тоже религиозен) и мне кажется, что рано или поздно мы бы все равно «уперлись» в его ограничения. Но все же стоило пытаться по-честному пройти этот путь…
X-Files
Архитектура StrongArm (а впоследствии XScale) – еще одно наследие, полученное Intel от DEC. Было тогда в компании подразделение Intel Communication Group[21]. Ваяло контроллеры для IO и сетевых устройств. И там неприхотливый и экономичный ARM пришелся весьма ко двору. Но именно в этот момент наступила эпоха handheld-девайсов (наладонников, как их тогда называли) – предтечи современных смартфонов. Intel попробовал – и оно как-то сразу полетело. BlackBerry, Dell, Compaq, Toshiba, Palm, Amazon Kindle – вот далеко не полный список компаний, начавших производство продуктов на базе XScale. Воодушевившись, в 2004-м Intel выпустил SIMD-расширение ISA под названием Wireless MMX. И в отделе IPP (в котором я пребывал с 2002-го по 2005-й) закипела работа по оптимизации библиотек.
И вдруг… как гром среди ясного неба в 2006-м грянула новость – Intel продает XScale бизнес Marvell за жалкие 600 миллионов долларов. Бросьте в меня камень, но я по чисто бизнесовым причинам считаю это одной из самых больших ошибок компании. Недостатки этого решения более чем очевидны.
• Мы в очередной раз «прокинули» своих клиентов (впрочем, не в первый и не в последний).
• Вместе с XScale ушла команда, наработавшая уникальную экспертизу в области мобильных устройств. И потом ее ой как не хватило…
• XScale был «входным билетиком» в мобильную экосистему. А кому как не Intel понимать ее значение. И беспечно выбросив его, мы сами захлопнули дверь перед собственным носом.
• Именно в тот момент, недооценив потенциал рынка смартфонов и планшетов, Intel обрек на неудачу свои дальнейшие (дорогостоящие) попытки стать там существенным игроком. (Способности Intel предсказывать индустриальные тренды я еще коснусь в одной из следующих глав.)
Объяснение у меня только одно, чисто религиозного характера. XScale был ARM-ом. Not made at Intel. Уже зрел в недрах компании Atom – low-power[22] процессор с «православным» набором команд. И Intel принял решение избавиться от «чужеродного» продукта (мне до сих пор представляется правильной стратегией на тот момент – тащить одновременно две линейки). Я сейчас выскажу очень спорную мысль – ни одна другая компания так бы не поступила. Но Intel, безусловно, уникален в своей вере.
Поначалу Atom достиг определенного успеха в сегменте нетбуков и неттопов. Тут надо понимать, что Intel все еще играл на своем поле – батарейки у этих устройств мощнее, чем у телефона, а стандартной операционкой является Windows co всем набором классического x86 софта. А вот дальнейшее «наступление» в область смартфонов и планшетов успеха не имело. Экосистема уже полностью сложилась вокруг ARM, и даже трюк Houdini – бинарный транслятор ARM > x86 – не спас положения.
Но главная беда даже не в этом. Дело в том, что мобильные процессоры – это с необходимостью System on Chip[23] (SoC). По сути, не так важно, какое ядро тащит операционную систему: ARM или Atom – Android неплохо оптимизирован под оба. Важно то, что большинство стандартных функций – поддержка wireless[24], медиа-кодеки, шифрование/дешифрование – выполняются на отдельных IP-блоках. Мне довелось попасть на «разбор полетов» (вроде бы он тоже был на ISA CPT) по поводу этих функций. И там все говорили одно и то же – здесь конкуренты сделали на доллар дешевле, здесь на полватта эффективнее и т. п. Что совершенно неудивительно – пока мы решали вопрос религиозной чистоты, потом восстанавливали легкомысленно потерянную экспертизу, потом заново выстраивали экосистему, наши конкуренты занимались оптимизацией. Так что, как и в случае с Xeon Phi, к неудачам Intel в мобильном сегменте ISA как таковая не имеет особого отношения. Просто мы упустили время, которое потом не смогли наверстать…
Индульгенция
Мне не сосчитать различных ISA, которые нашли свой конец в Intel, не выдержав противостояния с х86. Впрочем, есть одно исключение – встроенной интеловской графике всегда позволялось иметь instructions set[25], отличный от ортодоксального. Как будто она получила некую «папскую грамоту» которая хранила ее в самые темные времена костров инквизиции. Что можно объяснить бизнесовыми причинами, но все равно немного удивительно. Но тем не менее интеловская графика продолжает жить с начала 2000-х как независимая программируемая структура. Так, глядишь, и саму x86 переживет.
Варфоломеевская ночь
Ну и, конечно, мой рассказ об истории архитектуры был бы неполным, если не упомянуть о драматических столкновениях различных религиозных течений. Вообще, история развивалась циклически – вначале «еретические» архитектуры плодились (хотя бы в виде экспериментальных проектов), и потом «консерваторы» собирались с силами и брали «кровавый реванш». Я расскажу об одном случае 2013 года, когда «ортодоксы» Per Hammarlund и Bryant «Большой Полосатый Мух» Bigbee в один день «похоронили» проекты «вольнодумцев» VIP Бориса Бабаяна и Moonrun Дейва Дитцела (ex-Transmeta). Я тогда сумел просочиться на ISA CPT в день postmortem[26]. Арташесович отстрелялся минут за десять. Во-первых, он был расстроен. Во-вторых, длинные речи на английском ему не очень даются. Зато Дитцел выдал настоящее шоу. Там было все – картинки, жесты, эмоции и очень много стоящих мыслей. Наконец спустя полтора часа Дейв открыл свой последний слайд «New Architectural Ideas at Intel[27]». Слайд был пустой. В гробовой тишине заседание закончилось. Занятно, однако, что из четырех упомянутых мной Intel Fellow[28] дольше всех продержался в конторе именно Бабаян (aж до декабря 2021-го). Дитцел отвалил практически сразу после описанных событий и создал свою фирму Esperanto Technologies. Hammarlund ушел в Apple в начале 2015-го. Bigbee продержался немногим дольше…
Но мне особенно врезалось в память, как примерно спустя год после Варфоломеевской ночи на ISA CPT кто-то вдруг задал риторический вопрос:
– А помните тех, которых мы сожгли на костре в прошлый раз? Возможно, они были не так уж и неправы…
10
Архитектура набора команд (англ.).
11
Обратная совместимость (англ.).
12
Наследуемых (англ.).
13
Явная конвейерная обработка программного обеспечения (англ.).
14
По порядку (англ.).
15
Экосистема программного обеспечения (англ.).
16
Не изобретено здесь (англ.).
17
Капитан Итаник – «позывной» Майка Фистера (англ.).
18
Стратегия внедрения Итаниума (англ.).
19
Блок совместимости (англ.).
20
Это мертво, Джим (англ.).
21
Коммуникационная группа (англ.).
22
Маломощный (англ.).
23
Система на чипе (англ.).
24
Беспроводной (англ.).
25
Набор инструкций (англ.).
26
После смерти (лат.). Обычно так наывался «разбор полетов» по итогам проекта.
27
Новые архитектурные идеи в Intel (англ.).
28
Высшая техническая должность в Интел.