13 июня 2018

20 лет неудач Windows на RISC


Компания Microsoft выпустила ОС Windows 10 для ARM процессоров, что является уже восьмой попыткой компании хоть как-то закрепиться на рынке RISC процессоров.

Основные технические отличия архитектуры RISC и CISC процессоров

В общем случае, все современные процессоры общего назначения схемотехнически состоят из одних и тех же базовых элементов: регистров, сумматоров, прямой и ассоциативной памяти, шинных контроллеров и т.п. Этих базовых элементов в принципе достаточно чтобы создать схему для конечного автомата из крупных блоков, который с помощью ограниченного набора команд способен выполнить любую алгоритмически разрешимую задачу. Ограниченный набор команд для управления этими базовыми блоками называется RISC. 

Тем не менее, ввиду того, что задержка базовых элементов существенно больше нуля, существует теоретическая возможность реализовать некоторые типы операций с помощью уникальных комбинационных схем (в обход связки общих регистров и сумматоров), которые будут выполняться быстрее, чем на RISC процессорах. Расширенный набор команд, позволяющий управлять как базовыми блоками, так и уникальными комбинационными схемами называется CISC.

В виду своих филосовских, маркетинговых и технических соображений компания Intel изначально выбрала CISC архитектуру для реализации своего процессора i8086, который положил начало бума IBM PC. Данная архитектура теперь известна нам под именем x86. Позже, усилиями компании AMD, появилось её 64-разрядное расширение AMD64, которое многие называют x64.

Важно отметить, что после эпического фиаско с процессорами Intel Pentium, которые изначально вышли с ошибкой в комбинационной схеме операции деления, компании Intel и AMD фактически отказались от непосредственной классической реализации CISC архитектуры "в металле" (за исключением SIMD инструкций), так как с увеличением сложности системы команд, их стало невозможно качественно проверить на наличие ошибок, а стали использовать внутри процессоров RISC архитектуру, эмулируя внутри чипа CISC команды на базовых элементах. Это позволило сильно упростить схему чипа и выпускать новые процессоры без ошибок. При этом, полностью сохраняется совместимость с любыми x86 приложениями.

В тоже время, развитие технологий изготовления микропроцессоров привело к появлению даже на самых дешёвых RISC чипах значительных объёмов кэша первого уровня, что фактически позволило программно эмулировать CISC команды с помощью RISC команд также, как это делается в "родных" CISC процессорах.

Таким образом, современные RISC и CISC процессоры, изготовленные по одному и тому же технологическому процессу и оптимизированные под одно и тоже энергопотребление, имеют примерно равную производительность и, при желании, могут оптимизировать выполнение своего кода как под RISC, так и под CISC набор команд.

Основные отличия рынков RISC и CISC процессоров

Несмотря на техническое сходство RISC и CISC процессоров, они имеют крайне разное позиционирование на рынке. 

Исторически рынок CISC процессоров практически полностью монополизирован компанией Intel, которая является не только основным производителем x86 процессоров, но и, главное, обладателем лицензии на x86 архитектуру. Единственный раз, когда Intel предоставил лицензию на x86 (лицензия AMD) случился под давлением IBM, в обмен на включение x86 процессора в архитектуру IBM PC. Никаких других конкурентов на рынке x86 себе Intel создавать не хочет. По этой причине никаких новых производителей x86 процессоров, кроме Intel и AMD появиться на рынке не может и в виду финансовой слабости AMD, цена на x86 процессоры де-факто определяется Intel.

Рынок RISC был бесконечно разнообразен с самого начала, однако в виду глобализации и естественного отбора в жёсткой конкурентной борьбе, на нём стала доминировать архитектура ARM. Прочие архитектуры, например MIPS, хотя до сих пор и используются, но не составляют хоть сколь-нибудь заметной доли рынка. Тем не менее, важно понимать, что сама компания ARM Holdings, которая владеет лицензией на архитектуру ARM, и ведёт её активную разработку, самостоятельно не производит собственные процессоры, а только продаёт лицензии на их производство всем желающим. По этой причине, процессоры ARM производят все, кому не лень, в т.ч. Apple, Qualcomm, Samsung и даже, вы возможно удивитесь, AMD и Intel. Если вы хотите стать новым производителем процессоров ARM, то нет ничего проще. Покупаете лицензию на какую-либо версию архитектуры ARM в ARM Holdings, получаете от них всю документацию в электронном виде, потом отправляете её на завод изготовитель, например TSMC. Далее, уже с завода изготовителя через пару месяцев вы получите партию чипов с вашим логотипом на крышке, которую сможете использовать в своих устройствах или свободно продавать на открытом рынке.

В виду жёсткой конкуренции десятка производителей RISC процессоров с фактически идентичной архитектурой, ценовая борьба в этом секторе идёт за каждый цент, поэтому в среднем вы заплатите на 100 долларов США меньше за ARM процессор, чем за x86 процессор той же производительности и потребляемой мощности в самом низком ценовом сегменте.

Краткая история попыток Microsoft сделать ОС для RISC процессоров

В виду давно сложившегося ценового преимущества RISC решений относительно CISC решений, компания Microsoft уже 20 лет предпринимает попытки создать  работающую ОС Windows на процессорах RISC архитектуры.

Первая попытка - Windows NT MIPS

RISC процессоры на базе архитектуры MIPS вышли в 1985 году и позиционировались, как универсальная альтернатива CISC решениям во всех возможных применениях. По этой причине в 1998 году Microsoft решил подстраховаться и изначально запланировал выпуск новой ОС Windows NT, как для x86, так и для MIPS процессоров. Именно желание абстрагировать основной код Windows NT от особенностей архитектуры процессора привело к появлению уровня абстракции оборудования HAL для ядра ОС Windows NT. Однако, в виду того, что консорциум производителей MIPS распался и общая архитектура уступила решениям от IBM, поддержка Windows NT для MIPS оказалась номинальной и прекратилась.

Вторая попытка - Windows NT Alpha

RISC процессоры компании DEC на архитектуре Alpha были лидерами в своём секторе рынка в конце 1990-х годов. Более того, они фактически занимали значительный сектор рынка тяжёлых корпоративных решений и были полностью вотчиной Unix и Linux систем. Для того, чтобы занять этот сектор рынка и вытеснить оттуда конкурентов, Microsoft предпринял попытку выпустить версию своей корпоративной ОС Windows NT также и для RISC процессоров DEC Alpha. В результате ОС Windows NT Aplha вышла и поддерживалась обновлениями несколько лет, но исчезла с рынка после того, как Compaq (который купил DEC) официально прекратил проект по развитию процессоров DEC Alpha.

Третья попытка - Windows NT for PowerPC

После громадного успеха архитектуру IBM PC, компания IBM также разработала архитектуру PReP для PowerPC, которая превзошла по популярности MIPS решения и пользовалась достаточным спросом в США наравне с IBM PC. Microsoft решил сохранить за собой статус универсального поставщика ОС для IBM совместимых компьютеров и сделал ОС Windows NT для PowerPC. Однако, данная версия ОС плохо поддерживалась со стороны Microsoft и была успешно забыта всеми ещё в начале 2000-х годов.

Четвёртая попытка - Windows 2000/XP/2003/2008 for Itanium

После отмены проекта DEC Aplha и PA-RISC в пользу общего проекта универсального  RISC процессора Itanium, компания Microsoft выпускала все версии своих ОС, начиная с Windows 2000 и вплоть до Windows Server 2008 R2, как для x86, так и для Itanium. Несмотря на грандиозную поддержку со стороны Microsoft и HP, данные версии ОС не имели широкого распространения по причине отсутствия большого количества ПО для архитектуры Itanium.

Пятая попытка - Windows CE

Появление первых смартфонов вдохновило Microsoft на разработку первой мобильной версии ОС Windows для RISC процессоров ARM. Однако, ввиду полной несовместимости Windows CE ни с какими другими приложениями, кроме своих встроенных, а также в виду ужасно плохого интерфейса самой ОС Windows CE, она не снискала особой популярности и была моментально вытеснена с рынка при появлении iOS и Android.

Шестая попытка - Windows Phone

После выхода в свет Android и iOS и полного забвения Windows CE, компания Microsoft решила разработать абсолютно новую ОС для мобильных устройств на RISC процессорах ARM. Выпущённая ОС Windows Phone принесла с собой плиточный интерфейс (использован далее в Windows 8) и в принципе уже была похоже на что-то работающее, но в виду полного отсутствия поддержки Windows приложений, а также полное игнорирование со стороны разработчиков прикладного ПО, которые пытались занять своё место на бурно развивающихся рынках для Android и iOS, была практически всеми проигнорирована и ушла с рынка после продажи Microsoft компании Nokia, от лица которой и продвигались большинство смартфонов на этой ОС. 

Седьмая попытка - Windows RT

После полной потери рынка смартфонов, Microsoft решил выпустить специальную версию ОС для планшетов на RISC процессорах ARM, где, впервые в мире Windows, подразумевалось предоставить сторонним разработчикам возможность устанавливать свои приложения на планшет из магазина приложений, как это стало уже общепринятым на Android и iOS. Проблема в том, что спрос на планшеты с Windows RT был столь мал, что даже разработчики Windows приложений проигнорировали возможность перекомпиляции готовых приложений для x86 на архитектуру ARM и ОС Windows RT тихо умерла, так и не найдя желающих покупать такие устройства.

Восьмая попытка - Windows 10 S для ARM

После утраты доли рынка ноутбуков в пользу Chrome OS, особенно в образовании, Microsoft опять захотел портировать на RISC процессоры свою десктопную ОС Windows. Это крайне необходимо компании Microsoft, поскольку добавление лишних $100 к себестоимости на ровном месте из-за использования процессоров x86 никак не дают конкурировать с дешёвыми устройствами на Chrome OS, которые используют ARM процессоры.

Видимо разобрав свои ошибки семи предыдущих неуспешных попыток создать ОС для RISC процессоров, компания Microsoft пришла к выводу, что надеяться на то, что сторонние разработчики приложат хоть какие-нибудь усилия для поддержки новой ОС не стоит. Более того, с учётом всей предыдущей истории, не стоит серьёзно надеяться на то, что новая ОС Windows просуществует на ARM сколь-нибудь долго, поэтому вложения в разработку должны быть минимальны.

Исходя из вышеперечисленного, Microsoft решил просто "позаимствовать" технологию выполнения Windows приложений на ARM процессорах, корая уже не первый год используется на Chrome OS для запуска Windows приложений, а именно побитовая эмуляция x86 кода.

В новой Windows 10 S для ARM первые устройства на которой появились под брендом Always Connected PC только недавно (см. рис. выше) само ядро ОС Windows 10 откомпилировано для архитектуры ARM64, а приложения x86 вы можете запускать только из магазина приложений Windows Store. Самостоятельная установка х86/x64 приложений не предусмотрена, равно как и техническая возможность запуска x64 приложений.

Более того, непонятно из каких соображений, но разработчики Microsoft поленились реализовать эмуляцию на ARM полного набора SIMD инструкций x86, поэтому на ОС Windows 10 S для ARM даже многие x86 приложения невозможно запустить (SIMD инструкции в основном используют игры с богатой графикой и ИИ, а также графические и видео редакторы).

Также необходимо помнить, что Windows 10 S это усечённая версия, которая не позволяет устанавливать свои программы помимо Windows Store, поэтому, например, для установки на такой компьютер браузера Google Chrome придётся доплатить ещё порядка $150 за обновление версии ОС до полной Windows 10. После обновления ОС вы уже сможете устанавливать x86 приложения, но только не слишком старые (не поддерживается старые версии DirectX) и не слишком новые (не поддерживаются инструкции x64 и SIMD).

При этом, цена на новые модели Windows ноутбуков на ARM процессорах пока сильно выше даже похожих Windows x86 моделей. Ожидается, что она упадёт до уровня цен на Chromebook с ARM процессорами в каком-то обозримом будущем (например, в следующем году).
Отправить комментарий