- PVSM.RU - https://www.pvsm.ru -
Сегодня я заканчиваю первую главу (пока еще не написанной :)) книжки Made at Intel. Начало и продолжение – здесь [1] и здесь [2].
И все же важнейшей религией компании является сама x86 Instruction Set Architecture. Intel изначально свято придерживался принципа backward compatibility [3] - программы написанные для предыдущих поколений процессора работают на следующих без изменений (ну разве что требуют эмулятора операционки). Без этого нельзя построить никакой экосистемы [4], ибо ее формирование процесс занимающий многие годы. И именно благодаря последовательности Intel x86 ISA стала для компьютерного мира чем то вроде христианства. Аналогию можно продолжить сравнив разделение христианства на католическую и православную ветви – Intel и AMD (или наоборот). Но мы этого делать не будем. :) Однако принцип backward compatibility требует, чтобы любое изменение ISA оставалось в ней “навсегда”. И, наверно, нам следовало относиться к архитектуре более бережно [5]. Когда я был маленьким, а деревья большими один умный человек (Ronak Singhal [6] :)) говорил мне, что тут, дескать не о чем печалиться. С каждым shrink (переходом на более совершенный процесс изготовления чипов) площадь необходимая для поддержки legacy инструкций “сжимается” в два раза. Но вот когда Intel серьезно “застрял” на 10нм техпроцессе, мои опасения вернулись с удвоенной силой.
Отчасти, впрочем, наши промахи можно обьяснить тем, что x86 – “закрытый клуб” в отличие от ARM [7] и тем более RISC-V [8]. Ну, например, собирается ARM “выкатить” новую версию ISA. Он будет согласовывать ее со всем основными вендорами – Apple, Samsung, Qualcomm и тд. Поэтому у него куда меньше шансов совершить какую-нибудь глупость. Intel, конечно, тоже советуется с основными партнерами –Microsoft, Google, Amazon. Но основные решения все же принимаются внутри. Мне это почему-то представлялось так. На унылом Севере, вдали от людского жилья стоит темная башня. Лишь на последнем этаже ее горит свет. И там наверху собрались адепты тайного ордена... :) В случае с Интел “орден” имеет вполне конкретное название – ISA CPT. Именно там принимаются самые важные архитектурные решения. На этот митинг вхожи лишь ведущие технические лидеры компании компании – Fellows, Senior Principal Engineers. Мне трудно всерьез назвать себя одним из адептов (так, скорее, младшим послушником :)). Но я всегда был юношей любопытным и время от времени мне удавалось туда пролезть – (восьмым) со-докладчиком в какой нибудь презентации или просто “вольным" слушателем. Чаще все же приходилось довольствоваться информацией из вторых-третьих рук. И сегодня я немного расскажу вам о разного рода “ересях” которые зарождались и погибали внутри Интел..
Хотя Itanium [9] нарекли Титаником сразу же после анонса архитектуры 4 октября 1999го, он не был поначалу и вполовину так плох, как его реноме. Архитектура VLIW [10]/EPIC [11] смотрелась необычно по сравнению с CISC и манила новыми возможностями. Мою фантазию будоражили предикатное исполнение, вращающиеся регистры и explicit software pipelining. К тому же IA-64 была in-order архитектурой – можно было точно предсказать сколько будет обрабатываться один элемент достаточно длинного цикла при условии прогретых кэшей. Для кого как, а для меня эта “иллюзия контроля” почему-то всегда была важна. Тогда я еще плохо представлял себе важность software ecosystem для успеха платформы. Да, понимал, что работа предстоит огромная, но шансы представлялись вполне себе неплохими.
Но все же Itanium, как и Титаник, видимо, был проклят с самого начала. Дело в том, что против него играли как религия (not invented here!) так и политка. А в средневековом государстве – это необоримая сила. “Крестным отцом” Itanium был Mike Fister [12] тогдашний глава серверного подразделения Intel. И в начале 2000х между ним и Полом Отеллини [13] развернулась борьба за то, кто станет следующим CEO Intel после Kрейга Баррета [14]. Борьбу эту Captain Itanic проиграл и ушел в CEO в Cadence (который, безусловно уважаемая компания, но все же не Intel). Также ко дну пошло его детище. А спасать было некому - Отеллини Itanium не жаловал. Уж не знаю вследствие “разборок” начала 2000х или по каким то другим причинам... К тому же обнаружилась масса других проблем.
Индустрия как то сразу не поверила в Itanium. Портирование софта шло без особого энтузиазма. А Intel не решился на большую ставку – Itanium enabling strategy всегда оставляла у меня ощущение какой то недосказанности...
Возможно расчет был на x86 compatibility block, но именно он стал больным местом Itanium – энергии потреблял больше чем весь остальной процессор и грелся как сволочь. Бинарный транслятор также не выглядел панацеей: пробразование из CISCа во VLIW является одним из самых сложных (хотя на Эльбрусе [15] как то работает)...
Насколько увлекательным являлось написание микрокернелов для Itanium на ассемблере – настолько кошмарным было портирование приложений. Компилятор является основным камнем преткновения для архитектуры VLIW/EPIC. Одно из немногих исключений, которое я знаю – опять же Эльбрус. Но для того чтобы довести его компилятор до ума потребовалось порядка 20 лет. Интел столько ждать не захотел...
Ну и последнее – Itanium всегда выпускался с отставанием на шаг по техпроцессу от x86. И в этом трудно не усмотреть наличие “доброй” политической воли.
IA-64 влачила жалкое существование до начала 20х. И лишь в феврале прошлого года Linus Torvalds [16] сказал “It's dead, Jim." Но можно было спокойно сделать это и на 10 лет раньше. И все же у меня осталось от Itanium ощущение “неспетой песни”. Да, я не люблю VLIW (я тоже религиозен :)) и мне кажется, что рано или поздно мы бы все равно “уперлись” в его ограничения. Но все же стоило пытаться по-честному пройти этот путь ...
Архитектура а StrongArm [17] (а впоследствии XScale [18]) еще одно наследие, полученное Intel от DEC [19]. Было тогда в компании подразделение Intel Communication Group. Ваяло контроллеры для IO и сетевых устройств. И там неприхотливый и экономичный ARM пришелся весьма ко двору. Но именно в этот момент наступила эпоха handheld девайсов (наладонники, как их тогда называли) – предтеча современных смартфонов. Intel попробовал – и оно как-то сразу полетело. BlackBerry, Dell, Compaq, Toshiba, Palm, Amazon Kindle – вот далеко не полный список компаний, начавших производство продуктов на базе XScale. Воодушевившись, в 2004м Intel выпустил SIMD расширение ISA под названием Wireless MMX. И в отделе IPP [20] (в котором я пребывал с 2002го по 2005й) закипела работа по оптимизации библиотек.
И вдруг... как гром среди ясного неба в 2006м грянула новость – Intel продает XScale бизнес Marvellу [21] за жалких 600 миллионов долларов. Бросьте в меня камень – но я по чисто бизнесовым причинам, считаю это одной из самых больших ошибок компании. Недостатки этого решения более чем очевидны.
Мы в очередной раз “прокинули” своих кастомеров (впрочем, не первый и не последний)
Вместе с XScale ушла команда, наработавшая уникальную экспертизу в области мобильных устройств. И потом ее ой как не хватило...
XScale был “входным билетиком” в мобильную экосистему. А кому как не Intel понимать ее значение. И беспечно выбросив его – мы сами захлопнули дверь перед собственным носом.
Именно в тот момент, недооценив потенциал рынка смартфонов и планшетов Intel обрек на неудачу свои дальнейшие (дорогостоящие) попытки стать там существенным игроком. (Способности Intel предсказывать индустриальные тренды я еще коснусь в одной из следующих глав :)).
Объяснение у меня только одно, чисто религиозного характера. XScale был ARMом. Not made at Intel. Уже зрел в недрах компании Atom [22] low-power процессор с “православным” набором команд. И Intel принял решение избавиться от “чужеродного” продукта.(Мне до сих пор представляется правильной стратегией на тот момент - тащить одновременно две линейки). Я сейчас выскажу очень спорную мысль – ни одна другая компания так бы не поступила. Но Intel, безусловно уникален в своей вере.
Поначалу Atom достиг определенного успеха в сегменте нетбуков и неттопов. Тут надо понимать, что Intel все еще играл на своем поле – батарейки у этих устройств мощнее чем у телефона, а стандартной операционкой является windows co всем набором классического x86 софта. А вот дальнейшее “наступление” в область смартфонов и планшетов успеха не имело. Экосистема уже полностью сложилась вокруг ARM и даже трюк Houdini [23] – бинарный транслятор ARM->x86 не спас положения.
Но главная беда даже не в этом. Дело в том что мобильные процессоры – это с необходимостью System on Chip [24] (SoC). По сути не так важно, какое ядро тащит операционную систему ARM или Atom – Android неплохо оптимизирован под оба. Важно то, что большинство стандартных функций – поддержка wireless, медиа кодеки, шифрование/дешифрование выполняются на отдельных IP-блоках. Мне довелось попасть на “разбор полетов” (вроде бы он тоже был на ISA CPT) по поводу этих функций. И там все говорили одно и то же – здесь конкуренты сделали на доллар дешевле, здесь на пол-ватта эффективнее и тп. Что совершенно неудивительно – пока мы решали вопрос религиозной чистоты, потом восстанавливали легкомысленно потерянную экспертизу, потом заново простраивали экосистему наши конкуренты занимались оптимизацией. Так что, как и в случае с Xeon Phi к неудачам Intel в мобильном сегменте ISA как таковая не имеет особого отношения. Просто мы упустили время, которое потом не смогли наверстать...
Мне не сосчитать различных ISA которые нашли свой конец в Intel, не выдержав противостояния с X86. Впрочем есть одно исключение – встроенной интеловой графике всегда позволялось иметь instructions set, отличный от ортодоксального [25]. Как будто она получила некую “папскую грамоту” которая хранила ее в самые темные времена костров инквизиции. Что можно обьяснить бизнесовыми причинами, но все равно немного удивительно. Но тем не менее интеловая графика продолжает жить с начала 2000х как независимая программируемая структура. Так, глядишь, и саму x86 переживет. :)
Варфоломеева ночь [26].
Ну и конечно мой рассказ об истории архитектуры был бы неполным, если не упомянуть о драматических столкновениях различных религиозных течений. Вообще история развивалась циклически – вначале “еретические” архитектуры плодились (хотя бы в виде экспериментальных проектов) и потом “консерваторы” собирались с силами и брали “кровавый реванш”. Я расскажу об одном случае 2013го года, когда “ортодоксы” Per Hammarlund [27] и Bryant “Большой Полосатый Мух” Bigbee [28] в один день “похоронили” проекты “вольнодумцев” VIP Бориса Бабаяна [29] и Moonrun Дейва Дитцела [30] (ex-Transmeta). Я тогда сумел просочиться на ISA CPT в день postmortemа. Арташесович отстрелялся минут за 10. Во-первых, он был расстроен. Во-вторых, длинные речи на английском ему не очень даются. Зато Дитцел выдал настоящее шоу. Там было все – картинки, жесты, эмоции и очень много стоящих мыслей. Наконец, спустя полтора часа Дейв открыл свой последний слайд “New Architectural Ideas at Intel”. Cлайд был пустой. В гробовой тишине заседание закончилось. Занятно, однако, что из 4х упомянутых мной Intel Fellow дольше всех продержался в конторе именно Бабаян (aж до декабря 21го). Дитцел отвалил практически сразу после описанных событий и создал свою фирму Esperanto Technologies. Hammarlund ушел в Apple в начале 2015го. Bigbee продержался немногим дольше...
Но мне особенно врезалось в память, как примерно спустя год после Варфоломеевой ночи на ISA CPT кто-то вдруг задал риторический вопрос.
-А помните тех, которых мы сожгли на костре в прошлый раз? Возможно они были не так уж и неправы...
P.S. Не уверен, что у меня часто получится выдавать подобные многостраничные фолианты. Для баечек попроще и покороче, которые, надеюсь, тоже войдут в книгу, у меня есть телеграм-канал “Китайский русский”. [31]
Автор: Валерий Черепенников
Источник [32]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/x86/374841
Ссылки в тексте:
[1] здесь: https://habr.com/ru/post/663070/
[2] здесь: https://habr.com/ru/post/664116/
[3] backward compatibility: https://en.wikipedia.org/wiki/Backward_compatibility#:~:text=Backward%20compatibility%20(sometimes%20known%20as,especially%20in%20telecommunications%20and%20computing.
[4] экосистемы: https://habr.com/ru/company/huawei/blog/532532/
[5] более бережно: https://habr.com/ru/company/huawei/blog/503194/
[6] Ronak Singhal: https://www.anandtech.com/show/2594
[7] ARM: https://ru.wikipedia.org/wiki/ARM_(%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0)
[8] RISC-V: https://en.wikipedia.org/wiki/RISC-V
[9] Itanium: https://en.wikipedia.org/wiki/Itanium
[10] VLIW: https://en.wikipedia.org/wiki/Very_long_instruction_word
[11] EPIC: https://en.wikipedia.org/wiki/Explicitly_parallel_instruction_computing
[12] Mike Fister: https://www.theregister.com/2004/05/12/fister_leaves_intel/
[13] Полом Отеллини: https://en.wikipedia.org/wiki/Paul_Otellini
[14] Kрейга Баррета: https://en.wikipedia.org/wiki/Craig_Barrett_(chief_executive)
[15] Эльбрусе: https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81-8%D0%A1
[16] Linus Torvalds: https://en.wikipedia.org/wiki/Linus_Torvalds
[17] StrongArm: https://en.wikipedia.org/wiki/StrongARM
[18] XScale: https://en.wikipedia.org/wiki/XScale
[19] DEC: https://ru.wikipedia.org/wiki/Digital_Equipment_Corporation
[20] IPP: https://www.intel.com/content/www/us/en/developer/tools/oneapi/ipp.html#gs.z32tjl
[21] Marvellу: https://en.wikipedia.org/wiki/Marvell_Technology,_Inc.
[22] Atom: https://en.wikipedia.org/wiki/Intel_Atom
[23] Houdini: https://github.com/woachk/houdini
[24] System on Chip: https://en.wikipedia.org/wiki/System_on_a_chip#:~:text=A%20system%20on%20a%20chip,computer%20or%20other%20electronic%20system.
[25] instructions set, отличный от ортодоксального: https://www.intel.com/content/www/us/en/developer/articles/technical/introduction-to-gen-assembly.html
[26] Варфоломеева ночь: https://ru.wikipedia.org/wiki/%D0%92%D0%B0%D1%80%D1%84%D0%BE%D0%BB%D0%BE%D0%BC%D0%B5%D0%B5%D0%B2%D1%81%D0%BA%D0%B0%D1%8F_%D0%BD%D0%BE%D1%87%D1%8C
[27] Per Hammarlund: https://www.fool.com/investing/general/2015/03/16/apple-inc-poaches-one-of-intel-corporations-top-en.aspx
[28] Bryant “Большой Полосатый Мух” Bigbee: http://www.walkersresearch.com/Profilepages/Show_Executive_Title/Executiveprofile/B/Bryant_E_Bigbee_100000192.html
[29] Бориса Бабаяна: https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B1%D0%B0%D1%8F%D0%BD,_%D0%91%D0%BE%D1%80%D0%B8%D1%81_%D0%90%D1%80%D1%82%D0%B0%D1%88%D0%B5%D1%81%D0%BE%D0%B2%D0%B8%D1%87
[30] Дейва Дитцела: https://en.wikipedia.org/wiki/Transmeta
[31] “Китайский русский”.: https://t.me/russiachinese
[32] Источник: https://habr.com/ru/post/664682/?utm_source=habrahabr&utm_medium=rss&utm_campaign=664682
Нажмите здесь для печати.