Microsoft i Qualcomm chcą emulacji x86_64 na Arm. "Wydajność procesora to sprawa drugorzędna"
Microsoft i Qualcomm przygotowują się do wdrożenia emulacji modelu programowego x86_64 na Windowsie 10 w wersji Arm, donosi Neowin. To radykalna zmiana koncepcji, gdyż jeszcze w 2016 roku dyrektor ds. zarządzania produktem Qualcomm, Miguel Nunes, deklarował, że nie ma na taki ruch najmniejszych szans. Co skłoniło firmy do zmiany poglądów?
18.11.2019 05:00
Czego by nie mówili marketingowcy, Arm to model programowy (ISA) o charakterystyce RISC-owej. I nie jest to RISC udawany, jak w przypadku dzisiejszych procesorów x86, które rozbijają we front-endzie złożone rozkazy na szereg prostszych, aby przyśpieszyć ich wykonanie przez zrównoleglenie operacji. Lista rejestrów i obsługiwanych instrukcji w przypadku Arm jest widocznie ograniczona, podobnie jak budowa trybów adresowania. Na dodatek procesory te działają wyłącznie w modelu load/store, czyli wymagają oddzielenia operacji na pamięci od reszty.
Konstrukcyjna asceza pozwala ograniczyć liczbę tranzystorów, a co za tym idzie zużycie energii. Stąd układy Arm idealnie sprawdzają się w smartfonach czy tabletach, gdzie czas pracy na baterii jest ważniejszy niż czysta moc obliczeniowa. Ale już wykonanie w takich warunkach 64-bitowego kodu x86, złożonego w swej naturze i często angażującego I/O, to droga przez mękę.
Bez oprogramowania ani rusz
Tymczasem Microsoft i Qualcomm od pewnego czasu kombinują z laptopami na Arm. Nie bez kozery powstał Windows 10 dla tego właśnie modelu programowego czy potężny jak na realia mobilne czip Snapdragon 8cx. Zresztą, spójrzcie tylko na takiego Surface'a Pro X, aka obrazowy przykład implementacji obydwu powyższych. Jest tylko jeden stary jak świat problem. Otóż użytkownikowi nie wystarczy zapewnić samego systemu i urządzenia, choćby na papierze zrywały wszystkim czapki. Potrzeba także oprogramowania, które w przypadku komputerów przez lata było tworzone z myślą o modelu programowym x86 i żadne Oracle czy tam inne Adobe nie będzie teraz siedzieć nad portami.
Dlatego Windows 10 dla platform Arm ma wbudowany emulator. Niemniej ten wspiera tylko kod x86_32 przez podsystem WOW64. Od momentu pojawienia się projektu konsekwentnie deklarowano, że 32-bitowy kod x86 to maksimum możliwości. Ale tym razem Miguel Nunes z Qualcomm powiedział coś innego. – Podejście do pisania aplikacji wyewoluowało – zauważa Nunes w wywiadzie dla Neowin. – Programiści coraz chętniej korzystają z akceleracji GPU, a my emulować musimy wyłącznie procesor centralny – kontynuuje.
Jak sądzi przedstawiciel, obecnie niewiele aplikacji ograniczanych jest mocą obliczeniową procesora. Większość ciężaru obliczeniowego spada na kartę graficzną i pamięci masowe. – Wszystko prócz zadań typowo procesorowych możemy obsługiwać natywnie – ucina temat, obiecując na dokładkę, że prace nad emulacją x86_64 na Arm nabierają tempa.
Czeka nas ekspansja Arm na PC?
Bez żartów. Żaden RISC-owy model programowy na dłuższą metę nie spisze się w scenariuszu, w którym wymagana jest duża elastyczność, a jednocześnie wysoka wydajność. Koronnym argumentem podpierającym ten pogląd jest to, że nawet twórcy RISC-V powoli wycofują się wybranych założeń architektury RISC, pracując nad kolejnymi implementacjami. Doskonały przykład to przejście na zmienną długość instrukcji. Wypisz, wymaluj x86.
Inna sprawa, że kiedy już układy Arm będą w stanie uruchomić wszystkie aplikacje napisane z myślą o Windowsie 10, wreszcie staną się sensowną alternatywą dla wszystkich tych, którzy dzisiaj kupują niedrogie laptopy z niskoprądowymi intelami. Odpowiedniki z procesorami marki Qualcomm powinny chodzić dłużej na zasilaniu akumulatorowym. Będą też lżejsze i smuklejsze, co dla wielu w dzisiejszych czasach stanowi podstawowe kryterium przy zakupie komputera.