Windows na ARM: jak działa emulacja x86?
Rośnie liczba komputerów z systemem Windows i procesorem Snapdragon. Choć obecnie ich główną reklamowaną cechą jest Copilot, klucz do sukcesu Windowsa na procesorach ARM to nie AI, a kompatybilność z x86. Jak została zapewniona i jak sobie radzi?
19.09.2024 06:30
Zalogowani mogą więcej
Możesz zapisać ten artykuł na później. Znajdziesz go potem na swoim koncie użytkownika
Microsoft wprowadzał Windows na ARM powoli i początkowo bez sukcesów. Uniwersalny format aplikacji i budowanie niezależne od platformy nie wypaliło (UWP nie będzie rozwijane), więc jedyną drogą do zapewnienia działania - i w ogóle obecności - aplikacji na ARM, jest emulacja. Najnowszy Windows dostarcza ją za pomocą technologii Prism.
Biblioteki Windows
Jak tłumaczy dokumentacja firmy, Prism działa poprzez tłumaczenie, metodą kompilacji JIT, zbiorów instrukcji (a więc nie pojedynczych rozkazów) na instrukcje Arm64. Tak zbudowane elementy są przechowywane w pamięci podręcznej i w miarę możliwości uwspólniane między wiele aplikacji x86_64.
Dalsza część artykułu pod materiałem wideo
W ciekawy sposób rozwiązano kwestię bibliotek. Jeżeli ktoś kiedykolwiek zastanawiał się, dlaczego aktualizacje Windows dla ARM są większe od tych na x86: system zbudowano z wykorzystaniem formatu ARM64X PE i kodu ARM64 EC (emulation compatible). Pozwala to mieszać ustroje (ABI), i integrować kod x86 z kodem ARM, w ramach jednego procesu. To sposób zarówno na ułatwienie przejścia programu na inną platformę, jak i na utrzymanie zgodności ze starymi wtyczkami x86 do programów, które przeszły już na ARM (dobrym przykładem jest tu Office).
Aplikacje - są czy nie ma?
Jak Windows na ARM wygląda w praktyce? Obecnie, ilość oprogramowania zbudowanego dla ARM64 jest bardzo duża. Edge, Teams, Visual Studio i OneDrive są natywnymi aplikacjami na tę architekturę. Z aplikacji first-party, głównym wyjątkiem jest Skype, ale jego rozwój od dawna jest drugoplanowy względem Teamsów. Choć Visual Studio może szokować jako przykład aplikacji ARM64, większym zaskoczeniem jest Office.
Pakiet ten jest obarczony tak dużym bagażem zgodności, że wydawał się niemożliwy do przesunięcia. Jednakże, już od lat, jest aplikacją ARM64 EC, zachowującą zgodność z intelowską platformą. Być może miejscami Office jest mocno posklejany kodem x86, niemniej jest "wystarczająco natywny" by działać całkowicie bezproblemowo.
Swoją wersję oprogramowania dla ARM64 udostępnił także Adobe. Photoshop działa natywnie (z pomniejszymi problemami), a firma ogłosiła że wkrótce dołączy także m.in. Illustrator, InDesign i Premiere Pro. Oprogramowanie graficzne może sprawiać pewne problemy na układach Adreno, ze względu na brak gotowości oprogramowania. Na przykład Blender (i jego benchmarki) działają wyłącznie w trybie CPU. Niemniej, wyczyn Adobe robi wrażenie, zwłaszcza w porównaniu z oprogramowaniem Autodesk, które obecnie nie jest przygotowane do pracy z ARM.
Open Source i programiści
Na ARM już od pewnego czasu, mniej lub bardziej oficjalnie, budują się Firefox, LibreOffice, VLC i 7-Zip. Najstabilniejszy z nich wszystkich jest Firefox, dostępny od razu w wariancie ARM wprost z Microsoft Store, ale jest tylko kwestią czasu zanim pozostałe z wyżej wymienionych osiągną dojrzałość. Bezproblemowo działa ich emulacja, jeżeli wybierzemy dla nich wersję x86, choć dla Firefoksa będzie to raczej niezalecane.
Coraz bardziej zadowoleni mogą być programiści. Nie tylko VSCode, ale i pełne Visual Studio są dostępne w wariantach ARM. Działa także WSL oraz… Docker. Obsługa konteneryzacji na ARM64 i wsparcie dla obrazów aarch64 są dostarczane przez Dockera w oficjalnym kanale stabilnym. WSL miewa pomniejsze czkawki, ale nie większe niż na x86. Docker działa stuprocentowo przewidywalnie i w rosnącej liczbie scenariuszy, praca z Windowsami na ARM64 będzie nieodróżnialna od pracy na x86_64.
Oprogramowanie codzienne i gry
Siła Windowsa, biorąca się ze zgodności z tysiącami programów użytkowych o często małej liczbie użytkowników, pozostaje zachowana. Sprawdziliśmy wiele programów z działu pobierania. Te, które sprawiały problemy, to głównie narzędzia do zaawansowanej komunikacji ze sprzętem, antywirusy oraz gry. Do sprzętu należy używać natywnych aplikacji ARM64, emulacja nie jest bowiem z gumy (i zdecydowanie nie są nią objęte sterowniki - więc starszy sprzęt odpada!). Rolę antywirusa najlepiej obecnie na ARM pozostawić Defenderowi. Poza tym, szansa że program nie zadziała jest raczej niska. Emulator Prism wydaje się dawać sobie radę doskonale.
Rzecz, z którą na pewno sobie jednak nie radzi, są gry. Zaawansowane wykorzystanie grafiki oraz ogóle skomplikowanie wynikające z optymalizacji sprawiają, że gry po prostu nie włączą się. Nowsze jawnie odmówią działania ze względu na architekturę. Starsze - na przykład Left 4 Dead - niestety spróbują się uruchomić, doprowadzając do bardzo nieprzyjemnych efektów świetlnych, zawieszeń i problemów z rozdzielczością.
Stan ten raczej nie ulegnie zmianie. To zbyt złożone zagadnienie. Graczom pozostaje poczekać na warianty ARM swoich gier. Architektura ta co prawda jest dziś zdecydowanie bardziej zorientowana na klienta indywidualnego, a nie firmę - ale gracze są obecnie wykluczeni z grona zadowolonych użytkowników Windows on ARM.
Mimo to, emulacji Prism można wystawić mocną piątkę. Spisuje się naprawdę nieźle, co wymagało bez wątpienia wiele pracy. Być może zresztą, kulawa kondycja Windows 11 w innych kwestiach wynika dziś właśnie z tego, że najzdolniejsze kadry pracują nad zapewnieniem bezbolesnej pracy na procesorach ARM. Czy sprawa jest tego warta? Czas pokaże - nawet jeżeli architektura okaże się nie przynieść rewolucji, to na pewno zmotywuje Intela to lepszej pracy. A to jest nam dziś potrzebne.
Kamil J. Dudek, współpracownik redakcji dobreprogramy.pl