Nun kommt ja Windows 8.1. Das Vorgängermodell Windows 8 hat ja viel Kritik bekommen, vor allem wegen der Ausrichtung auf die Bedienung mit Gesten und der Bruch mit alten Windows Traditionen. Nun muss man aber eines bedenken: Warum sollte Microsoft viel Arbeit in ein Windows 8 stecken? Die meisten Einnahmen kommen bei Windows nicht durch die Verkäufe im Einzelhandel, sondern durch Lizenzeinnahmen, weil es auf jedem neuen PC vorinstalliert ist. Die fließen egal ob Windows 7 oder 8 installiert ist. Viel lukrativer ist da der boomende Markt von Tabletts und Smartphones. Zum einen ist man da nicht vertreten sondern Apple und Android. Zum anderen kauft man sich die Geräte zusätzlich zum PC und nutzt sie nur 24 Monate lang bis es den nächsten Vertrag gibt. Apple hat seine Käufer sogar zu jährlichen Neukäufen bewegt.
Also da gibt es erheblich mehr zu verdienen. Was Windows 8 aber ist, dabei weitgehend untergegangen: es ist die erste Version die auch auf einem ARM läuft. Vorher gab es für Handys und andere kleinere Geräte spezielle Versionen wie Windows Mobile und Windows Phone. Nun gibt es eine einzige für alle Geräte vom Handy bis zum PC. Damit ist erstmals die Schicksalsallianz „Wintel“ geknackt. Windows ist nicht mehr auf Gedeih und Verderb an x86 Prozessoren gebunden. Mit Delphi kann man inzwischen auch Apps für iOS und Anrdoidgeräte entwickeln, durch Neucompilieren laufen sie aber auch unter Windows. Damit hat man so etwas wie Cross-Plattform Programmierung. Neu ist das nicht. Java hat das ja schon mal versprochen, aber so richtig durchgesetzt hat es sich nicht.
Darin liegt auch eine Chance jenseits der Mobilgeräte. Nämlich dass sich die PC-Architektur auch von der x86 Linie lösen könnte. Eigentlich wunderlich das es so lange dauert, denn Windows Programmierung heißt ja schon lange nichts anderes als API Funktionen aufzurufen. Solange diese gleich bleiben müsste Windows auf jeder Architektur laufen, natürlich mit einigen Hardwarelimitationen. So wird man bei kleinen Bildschirmen wohl nicht sehr glücklich sein und auf einem 8 Bit ATNega dürfte es wahrscheinlich mangels Speicher auch nicht laufen. Aber neben der Möglichkeit das einmal ARM Chips denn x86 Prozessor ersetzen könnten (erste Notebooks damit sind ja schon auf dem Markt) gibt es auch die Möglichkeit einen neuen Prozessor zu konstruieren. Intel selbst ist ja mit dem Langleben seines Prozessor so recht zufrieden und hat mindestens zwei Versuche unternommen andere Architekturen als Ersatz zu platzieren (860 und Itaniumprozessor). Dabei hat der Nutzer nicht sehr viel von den Verbesserungen am Prozessor in den letzten Jahren. Wer heute ein Windowsprogramm decompiliert wird feststellen, dass es oft den kleinsten gemeinsamen Nenner enthält – 386, 486 oder Pentium Code. Von den Erweiterungen die es seitdem gab wie MMX, SSE, SSE2,SSE3 … AVX merkt man wenig, denn wird man das einsetzen läuft es auf Prozessoren nicht die die Erweiterung nicht haben und vor allem sind alle Erweiterungen beschränkt auf Fließkommabefehle. wer aber nun nicht gerade wissenschaftliche Berechnungen hat, bei dem wird die CPU vor allem Ganzzahloperationen durchführen.
Die Loslösung von der Prozessorarchitektur wäre auch für Intel die Gelegenheit einen neuen Prozessor aufzulegen, einen sauberen, effizienteren RISC-Prozessor ohne Altlasten und wenn ich einen Tipp (aus 25 Jahren x86 Geschichte) geben darf: legt ihn gleich für die Zukunft aus. Wie macht man das? Indem man Features vorsieht die man noch gar nicht umsetzen kann, aber für die Zukunft reserviert. Das könnten im Befehlssatz komplexe Instruktionen sein, die wenn sie im Code aufkommen, erst mal bei der ersten Generation den Aufruf eines Unterprogramms bedeuten dass man aus einem Festwertspeicher laden kann. Das ist so wie früher die 8087 Operationen auf dem 8086 „emuliert“ wurden. Die nächste Generation kann sie dann nativ im Microcode und ist so erheblich schneller. Man könnte, da Programme immer noch Probleme mit mehrfachen Theads haben und diese auch Synchronisierungsaufwand bedeuten, mehrere Kerne als einen Prozessor nach außen darstellen, anders als das derzeitige „Mappen“ auf Funktionseinheiten aber transparent. z.B. 65536 Register in 16 Register Blöcken vorsehen. Beim ersten Exemplar gäbe es vielleicht nur 16 Register und der Rest würde über den Arbeitsspeicher gemappt. Die zweite Generation hat dann zwei Kerne mit je 16 Register und so kann man leicht 4096 Kerne (in der 12 Generation) integrieren, Es muss nur festgelegt sein, dass jeweils die unteren 4 Bits der Registernummer zu einem Kern gehören und verschiedene Register dann bedeuten dass man mehrere Kerne gleichzeitig mit Arbeit versorgen kann.
Der wesentliche Vorteil beider Systeme ist, dass man die Software für spätere Versionen nicht neu übersetzen muss. Sie wird automatisch schneller. Ein anderer Ausweg aus dem Dilemma ist was Microsoft mit .NET anstrebt, aber bisher noch nicht eingelöst hat. Der Code wird in einen Zwischencode übersetzt und von der virtuellen Maschine dann in Maschinencode. Diese virtuelle Maschine soll den Maschinencode erzeugen der am besten für einen Prozessor am besten ist. Doch Tests bei ähnlichen Prozessoren einmal mit und einmal ohne AVX zeigten, dass dem nicht so ist. Intel wäre wohl besser beraten ihren C-Compiler in einer Spezialversion zu verschenken, der neben der EXE noch eine zweite Datei erzeugt, die einen verschlüsselten Quelltext enthält. Dazu würde Intel noch den C-Compiler ausliefern. Wenn das Programm beim ersten Mal startet wird neben der EXE die im Vordergrund läuft der Code dann erneut übersetzt – nun aber mit allen Optimierungen für den gerade im PC steckenden Prozessor. Das wichtigste an diesem Konzept wäre wohl, dass es eine sichere Verschlüsselung gibt. Doch mit den heute möglichen verschlüsselungsverfahren ist das kein Problem.
Was in jedem Fall geht, wie der Wechsel auf ARM beweisen hat – man muss nicht 25 Jahre an einer Architektur festhalten, sondern kann sich von ihr trennen, Apple hat das ja auch zweimal vorgemacht mit dem Wechsel von MC68k auf Power PC und dann auf Intel x86. Dann wurden eben für alte Programme Emulationsschichten mitgeliefert und neue waren so übersetzt das sie auf alten und neuen Prozessoren liefen. Das ist alles möglich, man muss nur wollen.
Was hätte es für den Benutzer für Vorteile: ein fundamental neues Design hat die Möglichkeit einige besser zu machen. Mit derselben Transistorzahl eine höhere Rechenleistung erreichen (RISC anstatt CISC) oder stromsparender zu sein (das ist der wesentliche Vorteil des ARM, weshalb er auch die Mobilgeräte dominiert). Davon profitiert auch der Endanwender, genauso davon, das potenziell ein Programm sowohl auf einem Tablet wie auch einem Notebook laufen. Doch da dürfte Microsoft mit so kreativen Konzepten wie gemieteten Anwendungen (Office 2013) einen Riegel vorschieben, sonst könnte man ja nur einmal abkassieren…