Chronique : Windows 8 sur ARM, retour vers le futur...

L'arrivée annoncée d'une déclinaison de Windows 8 sur plates-formes ARM par Steve Ballmer marque le retour de Windows, le vrai pas son édition CE, sur des architectures non Intel après plus de 10 ans d'absence. Plus de dix années durant lesquelles son alliance objective avec Intel aura beaucoup profité à Microsoft avant de commencer à lui nuire dangereusement face à l'émergence d'offres ARM originales de concurrents comme Google ou Apple.

Steve Ballmer, le patron de Microsoft a profité hier du CES de Las Vegas pour annoncer l’arrivée en 2012 d’une version de Windows 8 pour ARM en parallèle de la version attendue sur puces x86. L’annonce rappellera sans doute de nombreux souvenirs à ceux qui, comme moi, ont vu Microsoft se débattre, tout au long des années 1990, pour proposer de multiples versions de Windows NT sur des architectures non x86 comme Alpha (DEC), MIPS (Silicon Graphics) ou PowerPC (IBM), puis plus récemment Itanium.

La courte épopée de Windows NT sur les plate-formes RISC

Les premières moutures non x86 de Windows sont apparues en 1993 avec Windows NT 3.1, initialement sur Alpha et MIPS avant que Microsoft n’étende son support au PowerPC avec Windows 3.51. Ce dernier portage, spécifique aux machines PowerPC utilisant l’architecture PReP (PowerPC Reference Platform), devait permettre à IBM d’offrir le support de Windows sur ses nouvelles machines PowerPC, les PC Power Series 800. A l’époque journaliste pour SVM, j’ai assisté au lancement en grande pompe le 19 juin 1995, à New-York, de ces machines. Aux côtés de Windows NT 3.51, IBM montrait également d’autres OS aujourd’hui défunts dont OS/2 et Taligent OS, le système d’exploitation objet développé conjointement par Big Blue avec Apple et HP dans le cadre du projet Pink.

 thinkpad850
Un Thinkpad à base de Power PC,
le PowerSystem Series 800. A peine
né, il disparaitra du catalogue IBM.

Finalement, le feu d’artifice multiplates-formes de Windows sera de courte durée. L’une des premières décisions de Lou Gerstner sera en effet de tirer un trait sur l’aventure d’IBM dans les PC à base de puces PowerPC. Apple, de son côté, n’adoptera jamais PReP (et son successeur CHRP, Common Hardware Reference Platform). Steve Jobs à son retour en 1997 décidera même de tuer cette plate-forme en parallèle de sa décision de mettre fin à l’aventure des clones Mac (Motorola et Umax disposait de prototypes CHRP).  Exit donc Windows sur PowerPC.

Il faudra un peu plus de temps pour que Microsoft mette un terme à l’aventure Windows sur Alpha. Microsoft et DEC livreront ainsi l’ensemble des services Pack de Windows 3.5 pour Alpha et Microsoft ira même jusqu’à livrer une version RC1 de Windows 2000 pour Alpha, avant de mettre un terme au développement suite à l’acquisition de DEC par Compaq. La version finale de Windows 2000 ne verra donc jamais le jour sur Alpha. Au final, les versions non x86 de Windows n’auront vécu que cinq ans.

Il y a bien sûr une exception : à ce jour, une version non x86 de Windows (au sens descendant du noyau NT) survit encore. Il s’agit de la déclinaison serveur de Windows Server 2008 R2 pour Itanium. Mais cette survie se fait en mode respiration assistée puisque Microsoft a clairement affirmé en avril dernier que cette version n'aura pas de successeur. Car cela fait déjà longtemps que Microsoft a mis un terme à l’agonie des versions dites « workstation » sur  IA-64 (même si Windows Server 2008 R2 et Windows 7 partagent le même noyau, Windows 7 n’est pas sorti sur Itanium).

Windows 8 sur ARM : chemin de Damas…

L’annonce de Steve Ballmer de la disponibilité à venir d’une version de Windows 8 sur architecture processeur ARM est donc une vraie nouveauté pour le géant de Redmond, tant parce qu’elle rouvre Windows à des architectures tierces que parce qu’elle remet en cause l’alliance historique avec Intel. Même si Microsoft s’est empressé de réaffirmer son attachement aux architectures x86, le discours de Steve Ballmer ne doit tromper personne : en annonçant l’arrivée de Windows 8 sur ARM, Microsoft est bien décidé à livrer son OS en volume. Et comme le porte-monnaie des utilisateurs n’est pas extensible, tout système ARM livré avec Windows 8 sera un système x86 vendu de moins. Pire pour Intel, l’arrivée de Windows 8 sur ARM est une menace directe aux tentatives du géant d’imposer son architecture processeur sur les terminaux nomades.

Tout à son obsession du x86, Intel a sabordé sa ligne de processeurs ARM (vendue à Marvell) au profit du développement de l’Atom. Or on le voit bien, les puces Atom ne peuvent aujourd’hui absolument pas rivaliser en autonomie ou en performance avec les puces ARM sur les nouveaux formats de terminaux nomades comme les tablettes ou les netbooks. Si d’ici à 2012, cette situation reste en l’état, la disponibilité de Windows 8 sur ARM pourrait définitivement signer l’arrêt de mort des machines Atom.

Intel verra sans doute la décision de Microsoft comme une trahison, mais ce dernier n’avait sans doute guère le choix. Ses deux principaux concurrents, Apple et Google, ont en effet opté pour une double stratégie x86 et ARM pour leurs systèmes d’exploitation afin d’offrir la meilleure solution possible sur chaque format de terminal. Dans le cas d’Apple, Steve Jobs a pu s’appuyer sur le savoir-faire historique des ingénieurs de NeXT (au premier rang desquels figure aujourd’hui Bertrand Serlet, le patron du développement des OS d’Apple) en matière d’OS multiplates-formes. Directe descendante d’OpenStep (que Next a notamment porté depuis ses origines 680x0, sur x86, Sparc, PA-Risc et PowerPC), l’API Cocoa de Mac OS X  est éminemment portable. C'est cette caractéristique qui a permis à Apple de porter en un temps record des pans entiers de Mac OS X sur ARM pour la conception de iOS. Quant à Android, il s’appuie nativement sur le noyau Linux et sur la machine virtuelle Dalvik dérivée de Java, dans les deux cas, donc, des technologies portables.

…ou chemin de croix ?

Pour Microsoft, le chemin risque d’être plus douloureux car l'éditeur a beaucoup a expier avant de pouvoir rendre son OS facilement portable d’une plate-forme à une autre. Redmond s’y emploie depuis plusieurs années, avec notamment un travail douloureux de nettoyage du noyau Windows dans le cadre du projet « MinWin ». L’objectif est de produire un noyau modulaire minimaliste sur lequel viendront se greffer les autres composants de l’OS comme l’interface graphique (Shell Windows) ou le runtime .Net.

Ce travail a commencé avec Windows 7, mais ce dernier n’est toujours pas débarrassé des multiples dépendances cycliques entre le noyau, Internet Explorer et le Shell. Du fait d'incohérences dans le développement de Windows, la couche n de l'OS peut appeler des fonctions de la couche n-1 qui elle-même appelle des fonctions de la couche n+1. MinWin vise à redéfinir une architecture OS saine où le noyau est autosuffisant et où les couches qui se situent au dessus de lui sont redécoupées de façon cohérente. Voir à ce propos une interview très instructive de Mark Russinovich (aux environs de 22mn 20s), l'un des architectes de Windows sur Channel 9, le site développeur de Microsoft.

Mais ce seul nettoyage du noyau ne sera pas suffisant. Il faudra aussi porter toute l’infrastructure de pilotes de périphériques sur ARM et supporter les multiples incarnation de l'architecture ARM de Nvidia, Samsung, Motorola, Qualcomm, Texas Instruments, etc...(même si au passage, Microsoft devrait pouvoir se débarrasser de nombre de scories du passé). D’un autre côté, le fait de disposer d’un noyau enfin propre ouvrira de nouvelles perspectives. Dans Windows 8, par exemple, le nouveau noyau devrait être capable de fonctionner sans Shell et pourra ainsi, entre autre, accueillir un hyperviseur natif ce qui devrait aussi permettre d’innover en matière de sécurité, de segmentation des applications ou de compatibilité. Sur ARM, on peut par exemple imaginer qu’un hyperviseur avec émulation x86 puisse assurer la compatibilité avec certaines applications Windows existantes, à l’instar de ce qu’Apple avait réalisé avec sa couche Rosetta lors de la migration du PowerPC vers x86.

Reste que 18 mois de développement ne seront sans doute pas de trop à Microsoft et à son écosystème de développeurs pour préparer l’avènement de Windows 8 pour ARM. Tout d’abord parce qu’il va falloir mettre en place la chaîne d’outils de développement et de runtime pour porter les applications existantes vers ARM (ce qui passera pour certaines par une recompilation et pour d’autres par une refonte de larges portions de code), mais aussi parce qu’il faudra régler des points critiques en matière de packaging et de distribution d’applications. Microsoft proposera-t-il ainsi son propre format Fat Binary (permettant dans un package unique d’embarquer les deux binaires x86 et ARM) ou les développeurs devront-ils packager séparément leurs applications… Un autre point intéressant sera de savoir si le portage se limite à la version pour postes de travail ou si Microsoft entend aussi étendre ses travaux aux versions serveurs, ARM travaillant avec ses partenaires à une version 64 bit de son architecture qui pourrait intéresser le monde des serveurs. Autant de questions dont les réponses devraient commencer à filtrer dans les mois à venir.  En attendant, la consigne en interne après l’annonce de Steve Ballmer au CES est de conserver le silence. L'occasion sans doute de méditer et de se demander si la conversion de Redmond aux puces ARM n'intervient peut-être pas trop tard...

A lire aussi sur LeMagIT :

Windows et ARM, une alliance qui va plus loin que la mobilité

Microsoft préparerait une version de Windows pour ARM

AMD et Intel : 35 ans de concurrence exacerbée

Processeurs : adoubée par l'iPad, ARM se sent pousser des ailes pour bousculer le x86

Microsoft prend une nouvelle licence ARM... mais pour quoi faire ?

Pour approfondir sur ARM