Многе Виндовс апликације су написане за к86, а ипак могу да раде на Арм ЦПУ-има. Ево како је то могуће.
Виндовс је увек направљен за к86 процесори Интел и АМД, али откако је Виндовс РТ изашао пре деценију за паметне телефоне, оперативни систем је полако постао пријатељскији према Арм ЦПУс. Данас и Виндовс 10 и Виндовс 11 нуде потпуну подршку за Арм ЦПУ, али постоји квака. Иако сам оперативни систем ради сасвим добро на овим ЦПУ-има, већина апликација није покренула верзију компатибилну са Арм. Иако Виндовс може да ради на Арм чиповима, мало програма за стварно коришћење би био проблем.
Међутим, Мицрософт има трик у рукаву: емулатор за покретање к86 апликација на машинама заснованим на Арм-у. То је кључна ствар која је дала замах оперативном систему Виндовс он Арм откако је преводилац изашао 2017. Ево како функционише емулатор и зашто Арм рачунари морају да га користе ако желе да покрећу софтвер направљен за к86 чипове.
Емулација к86 кода за Арм ЦПУ у реалном времену
Идеја да се емулира код направљен за једну врсту процесора тако да се може покренути на другом није ништа ново. Овако функционише емулација игара, која се популарно користи за покретање старих видео игара на новим уређајима са знатно другачијим хардвером. Када покренете к86 апликацију на Арм рачунару, Виндовс узима блокове кода апликације и компајлира га у нешто што може да ради на Арм чипу. Ово се све ради у реалном времену, а Виндовс мора да кешира сав код који је преведен, што значи да не мора поново и изнова да га преводи.
Нажалост, перформансе ће бити лошије на емулираним апликацијама у поређењу са кодом дизајнираним за хардвер. Тешко је рећи колико перформанси губите покретањем емулираног кода на Виндовс-у јер су подаци о тестирању веома оскудни, али за поређење, Апплеов преводилац Росетта 2 (који такође преводи к86 апликације у Арм) губи око 20%. Могуће је смањити тај број, али обично емулација и превод доводе до смањења перформанси без обзира на све.
Зашто к86 апликације не могу да раде на Арму без емулације
Можда се питате зашто софтвер треба да буде написан посебно за к86, Арм и друге врсте ЦПУ-а. Своди се на разлика у архитектури, а у овом случају говоримо о архитектури скупа инструкција (ИСА). Они су најосновнији дизајн процесора и одређују да ли се нешто једноставно као што је множење или нешто сложено као што је АВКС може урадити изворно. Промена ИСА утиче на најосновнији начин на који софтвер комуницира са хардвером, све до основних јединица и нула које ЦПУ чита.
к86 је ИСА за Интел и АМД ЦПУ, који су историјски били једини ЦПУ на којима Виндовс може да ради. У међувремену, Арм се углавном користио за паметне телефоне, а преклапање између софтвера рачунара и софтвера телефона је врло мало. Наравно, већина програма је направљена или за к86 или за Арм, а за Виндовс он Арм ово је био огроман проблем јер превод није изашао 2020, док је Виндовс РТ (прва верзија Виндовс-а која подржава Арм) изашао у 2012.
Прошло је око деценије откако је Виндовс почео да подржава Арм, па где су све изворне апликације? Примарни проблем је што је потребно време и стручност да се препише софтвер за другачији ИСА, посебно ако програмери желе да то ураде добро. Програмери који не воде одговарајућу пажњу да пренесу апликацију са једног ИСА на други могу довести до грешака и грешака. Одличан пример за то је Пхотосхоп за Виндовс на Арм. Покреће се изворно на Виндовс он Арм, још у нашој рецензији Леново Тхинкпад Кс13с, наишли смо на неколико грешака и многа упозорења да ОпенЦЛ и ОпенГЛ нису подржани. Заједно са много мањом базом корисника који користе Арм на Виндовс-у, програмери имају мање подстицаја да брину.
Дакле, када програмери не могу или неће да посвете ресурсе креирању изворног софтвера, алтернатива је емулација. Иако превођење к86 апликација за Виндовс он Арм није савршено, импресивно је да уопште функционише, а понекад је губљење перформанси вредно знати да ће апликација радити како се очекује. Барем док Виндовс он Арм не достигне тачку у којој програмери више не могу да га игноришу, превод и емулација му дају преко потребан подстицај његовом хардверско-софтверском екосистему.