Как работи x86 преводът на Windows on Arm?

click fraud protection

Много приложения за Windows са написани за x86 и въпреки това могат да работят на процесори Arm. Ето как е възможно.

Windows винаги е бил създаден за x86 процесори от Intel и AMD, но откакто Windows RT излезе преди десетилетие за смартфони, операционната система бавно става по-приятелска към Включете процесори. Днес и Windows 10, и Windows 11 предлагат пълна поддръжка за процесори Arm, но има една уловка. Въпреки че самата операционна система работи добре на тези процесори, повечето приложения не са стартирали версия, съвместима с Arm. Въпреки че Windows може да работи на чипове Arm, наличието на малко програми за действително използване би било проблем.

Microsoft обаче има трик в ръкава си: емулатор за стартиране на x86 приложения на базирани на Arm машини. Това е ключовото нещо, което даде инерция на Windows on Arm, откакто преводачът излезе през 2017 г. Ето как работи емулаторът и защо компютрите Arm трябва да го използват, ако искат да изпълняват софтуер, създаден за x86 чипове.

Емулиране на x86 код за процесори Arm в реално време

Идеята за емулиране на код, създаден за един вид процесор, така че да може да се изпълнява на друг, не е нищо ново. Ето как работи емулацията на играта, която се използва широко за стартиране на стари видеоигри на нови устройства със значително различен хардуер. Когато стартирате x86 приложение на Arm PC, Windows взема блокове от кода на приложението и го компилира в нещо, което може да работи на Arm чип. Всичко това се прави в реално време и Windows трябва да кешира целия код, който е превел, което означава, че не се налага да превежда отново и отново.

За съжаление, производителността ще бъде по-лоша при емулирани приложения в сравнение с кода, предназначен за хардуера. Трудно е да се каже колко производителност губите, като изпълнявате емулиран код на Windows, тъй като данните от тестването са много оскъдни, но за сравнение, Преводачът Rosetta 2 на Apple (което също превежда x86 приложения в Arm) губи около 20%. Възможно е да намалите този брой, но обикновено емулацията и преводът водят до намаляване на производителността, независимо от всичко.

Защо x86 приложенията не могат да работят на Arm без емулация

Може би се чудите защо софтуерът трябва да бъде написан специално за x86, Arm и други видове процесори. Свежда се до разлика в архитектуратаи в този случай говорим за архитектурата на набора от инструкции (ISA). Те са най-фундаменталният дизайн на процесор и определят дали нещо просто като умножение или нещо сложно като AVX може да се направи естествено. Промяната на ISA засяга най-фундаменталния начин, по който софтуерът взаимодейства с хардуера, до основните единици и нули, които процесорът чете.

x86 е ISA на процесорите на Intel и AMD, които исторически са били единствените процесори, на които Windows дори може да работи. Междувременно Arm се използва предимно за смартфони и припокриването между компютърния софтуер и софтуера за телефона е много малко. Естествено, повечето програми са създадени за x86 или Arm, а за Windows on Arm това беше огромен проблем, т.к. преводът не излезе през 2020 г., докато Windows RT (първата версия на Windows, поддържаща Arm) излезе през 2012.

Измина около десетилетие, откакто Windows започна да поддържа Arm, така че къде са всички собствени приложения? Основният проблем е, че отнема време и опит, за да се пренапише софтуер за различен ISA, особено ако разработчиците искат да го направят добре. Разработчиците, които не полагат необходимите грижи за пренасяне на приложение от една ISA към друга, могат да доведат до проблеми и грешки. Чудесен пример за това е Photoshop за Windows on Arm. Работи първоначално на Windows on Arm, още в нашия преглед на Lenovo Thinkpad X13s, срещнахме няколко грешки и много предупреждения, че OpenCL и OpenGL не се поддържат. В съчетание с много по-малка потребителска база, използваща Arm на Windows, има по-малко стимул за разработчиците да се грижат.

Така че, когато разработчиците не могат или не искат да отделят ресурсите за създаване на естествен софтуер, алтернативата е емулация. Въпреки че преводът на x86 приложения за Windows on Arm не е перфектен, впечатляващо е, че изобщо работи и понякога загубата на производителност си струва да знаете, че приложението ще работи според очакванията. Поне докато Windows on Arm достигне точката, в която разработчиците вече не могат да го игнорират, преводът и емулацията му дават така необходимия тласък на неговата хардуерно-софтуерна екосистема.