Nová varianta Windows 10 pro platformu ARM je druhým pokusem Microsoftu o prosazení jeho operačního systému na procesorech s architekturou ARM. Cílem je, aby na nich běžely i desktopové programy.
I přes rostoucí příjmy Microsoftu z cloudových služeb Azure nebo Office 365 zůstává pro Microsoft klíčovým produktem systém Windows. V různých verzích jsou Windows instalována na více než miliardě počítačů po celém světě, z nichž téměř každý je vybaven procesorem s x86 architekturou. Zkratka x86 znamená typ procesorové architektury a s ní související sadu příkazů, kterou podporují procesory od Intelu a AMD. Architektura x86 byla vyvinuta jako 32bitová, ale již v roce 2003 k ní AMD definovalo rozšíření o 64bitové příkazy. Na většině dnešních počítačů a notebooků přitom běží Windows ve verzích využívajících 64bitovou architekturu.
Tyto verze Windows ale nepodporují software vyvinutý pro zařízení s procesory s ARM architekturou. Právě ARM procesory však pohánějí přes 2,5 miliardy smartphonů a většinu tabletů. A zatímco se počet těchto mobilních zařízení neustále zvyšuje, prodeje x86 počítačů stagnují a tyto stroje relativně ztrácejí na svém významu. Vývojáři by přitom nejraději vytvářeli software, který poběží na všech platformách, ale pokud to není možné, budou se pochopitelně věnovat především nejrozšířenějším zařízením.
Windows na mobilních zařízeních
Už v roce 2012 přeprogramoval Microsoft svoje Windows 8 tak, aby mohla běžet na platformě ARM. Ale verze Windows RT si u uživatelů nevedla vůbec dobře. Třeba i proto, že pod ní nebylo možné spouštět většinu oblíbených desktopových programů, jako třeba Firefox nebo Photoshop. Výrobci hardwaru neměli ze svých zařízení s ARM procesory a Windows RT žádný zisk, takže celý projekt tohoto operačního systému zkrachoval. Teď se ale Microsoft snaží tuto základní myšlenku oživit, ale už s lepším konceptem. Novým cílem vývoje Windows 10 je, aby na platformě ARM běžely i klasické desktopové programy. Windows 10 na platformě ARM by tedy měla stejně vypadat, stejně se spouštět a měla by mít stejné funkce jako v počítači s x86 procesorem. Hned tři výrobci nabízejí již od letošního května počítače typu Always-on s Windows 10 na platformě ARM. Prvním byl Asus a jeho NovaGo. Platforma ARM má přitom v oblasti mobility oproti x86 světu hned dvě velké výhody. ARM procesory pracují už ze svého principu úsporněji, což znamená delší výdrž zařízení na akumulátor, a také je zde efektivně vyřešena integrace modemu pro přenosy dat v mobilních sítích. Proto mají Always-on počítače i slot na SIM kartu.
S emulací k cíli
Jelikož desktopové programy nemohou běžet přímo na platformě ARM, je třeba použít emulátor, který převede jejich x86 kód na příkazy stravitelné ARM procesory. To ale stojí část výkonu počítače. Tuto nepříjemnou okolnost pomáhají oslabit dva faktory. Tím prvním je použití výkonného procesoru Qualcomm Snapdragon 835 v aktuálních Always-on počítačích. Stejný procesor přitom pohání špičkové modely androidových smartphonů. Navíc se Microsoft snaží maximálně snížit podíl emulace, kterou musí Windows provádět.
V podstatě to pak funguje stejně jako při spouštění 32bitového softwaru v 64bitových Windows. Také zde hraje klíčovou roli tzv. abstraktní vrstva. Volání x86 programů adresovaná operačnímu systému jsou předávána x86 systémovým knihovnám. Část těchto x86 příkazů je předávána dále do abstraktní vrstvy WoW (Windows on Windows) a odtud do emulátoru, který je převádí na ARM instrukce. Další x86 příkazy nemusí procházet přes emulátor, protože putují ke knihovnám CHPE DLL. Tyto CHPE (Compiled Hybrid Portable Executables) jsou systémové knihovny naprogramované v ARM kódu, které však rozumí i x86 příkazům a umí je zpracovat. Díky tomu ušetří Windows 10 práci emulátoru a výkon procesoru. Abstrakční vrstva sbírá také výstupy z CHPE a vše odesílá systémovým službám, aby byly provedeny jádrem systému.
Omezená kompatibilita
Výše popsaný proces má ale několik nedostatků. Především v tom, že emulátor umí zpracovat pouze 32bitový kód x86 programů. Emulátor pro 64bitový kód podle Microsoftu jen tak k dispozici nebude. V cestě jeho vývoji totiž stojí problémy s patenty. V případě x86 emulace už společnost Intel nepřímo pohrozila žalobou, protože je držitelem patentů pro příslušný soubor instrukcí. U 64bitového emulátoru by se stejnými nároky mohla vystoupit společnost AMD. Rozdíly mezi 32- a 64bitovým zpracováním pak panují i ve světě ARM procesorů. Windows pro ARM architekturu jsou přitom operační systém s nativní podporou ARM64, který ale umí spouštět jen ARM32 aplikace. To platí pro tzv. UWP (Universal Windows Platform) aplikace, zkompilované prostřednictvím nástroje Microsoft Visual Studio, stejně jako pro původní x86 programy, převedené na aplikace prostřednictvím Desktop-Bridge.
K tomu ale ještě Microsoft na své květnové vývojářské konferenci Build představil preview verzi své sady Software Development Kit, se kterou mohou být aplikace kompilovány přímo pro ARM64. Problémem jsou ale také externí ovladače, které musí být rovněž zkompilovány pro platformu ARM. Pokud si tedy nějaký x86 software nese s sebou vlastní ovladače, například pro připojení virtuálních jednotek, nebude na ARM platformě fungovat. Zda tak Windows 10 na platformě ARM čeká lepší budoucnost než Windows RT, záleží na tom, jak funkční a bezproblémová bude emulace x86 programů. Moudřejší budeme na konci letošního roku, kdy mají přijít na trh nové Always-on počítače se špičkovým procesorem Snapdragon 845. Ten bude ještě o 20 procent výkonnější než současný Snapdragon 835.
***
Omezená kompatibilita
Aktuálně mohou Windows 10 na platformě ARM emulovat pouze 32bitové x86 programy. Na 64bitové mohou být rekompilovány jen programy, které jejich vývojáři převedli na aplikace prostřednictvím Desktop-Bridge.
x86 emulace 64bitová emulace ARM 32bitový kód ARM 64bitový kód
x86 programy * * * *
64bitové programy * * * *
UWP aplikace * * * *
Desktop-Bridge aplikace * * * ***
* Universal Windows Platform
** V budoucnu je bude možné nově zkompilovat pomocí SDK pro ARM64
* ano * ne
Foto popis| Windows 10 na ARM počítačích Microsoft má novou verzi Windows 10 pro platformu ARM, která využívá procesory pohánějící dnes především smartphony a tablety. Mezi první zařízení patří například od konce května dostupný Always-on notebook typu 2-v-1 Asus NovaGo. Výhodou oproti počítačům s procesory Intel nebo AMD je podstatně delší výdrž na akumulátor.
Foto popis| Emulace desktopového softwaru Microsoft upravil Windows 10 tak, aby mohla spouštět i programy, jejichž x86 kód není kompatibilní s platformou ARM. Používá k tomu emulaci, která však stojí část výkonu procesoru. Pro řadu aplikací z obchodu Microsoft Store to ale není nutné, jelikož jsou již pro platformu ARM zkompilovány.
Foto popis| Mnoho desktopových programů, od starého Malování po nejnovější Photoshop CC, je naprogramováno pro x86 architekturu. Aby je bylo možné spouštět na procesorech s architekturou ARM, musí Windows jejich kód nejdříve upravit: 1 Nejprve bude kód programu zpracován běžnými x86 systémovými knihovnami Windows 10. 2 Část kódu bude nahrána do CHPE DLL knihoven, naprogramovaných pro platformu ARM, které ale umí zpracovat x86 příkazy. 3 Zbytek kódu bude zpracován emulátorem, který jej převede z x86 na ARM příkazy. 4 Abstrakční vrstva sbírá převedený kód a předává jej systémovým službám. *CHPE: Compiled Hybrid Portable Executable
Foto popis| Kód bude spuštěn na SoC (System on Chip) platformě, jako je Qualcomm Snapdragon 835, procesor nejčastěji používaný v nejvýkonnějších smartphonech.
Foto popis| Nastavení emulace Způsobuje-li emulace problémy, je možné upravit její nastavení na kartě »Compatibility« 1 a například zde deaktivovat používání CHPE DLL knihoven 2 .
O autorovi| MARKUS MANDAU, RADEK KUBEŠ, autor@chip.cz