Lange Zeit war es so, dass wenn man etwas über den PC in Zwanzig Jahren wissen wollte, man nur die Architektur der aktuellen Superrechner ansehen musste. Das passte auch in der Vergangenheit relativ gut. Hier einige Beispiele. Als PC-Gegenstück habe ich die x86-Architektur genommen. Es kann sein dass das eine oder andere Feature woanders zuerst erschien, aber die Architektur steckt eben in den aktuellen PCs:
- Pipelines: Als Weg die Befehlsverarbeitung zu beschleunigen, indem man die einzelnen Stufen parallelisiert. Dies wurde schon 1961 in der IBM 7030 Stretch eingeführt. 1982, also ziemlich genau 20 Jahre später, führte der 80286 eine Pipeline ein.
- Caches: Als Zwischenspeicher um die Auswirkungen der den langsamen Speicher zu umgehen. Eingeführt 1969 in einigen Modellen der IBM 360 Reihe. Die erste kommerzielle Implementation war in der IBM 360/85. In der x86 Reihe finden wir die Unterstützung des externen Caches 1985 bei der 386-CPU. Diese konnte noch ohne Cache auskommen. In den Prozessor integriert war der Cache 1989 in die 486-CPU. Auch hier: 20 Jahre zwischen IBM360 und 486.
- Befehlsbuffer: Älter als Caches sind Instruktionsbuffer. Sie bestehen im einfachsten Falle aus der Möglichkeit nur einige Worte im voraus zu lesen (Read Ahead). Das beherrschte schon die IBM 7030 Stretch. Die gleichen rudimentären Fähigkeiten hatte der 8086 mit seiner Instruction-Queue. Vollwertige Buffer, die jeweils rund um die aktuelle Position abpuffern und auch Sprünge vorwärts/rückwärts erlauben, führte die CDC 6600 1965 ein. In der x86 Reihe findet man ein Gegenstück dafür relativ spät 1989 beim 80486 mit seinem 32 Byte großen Instruction Buffer.
- Multiskalar: Mehrere Recheneinheiten, die man parallel mit Daten versorgen kann, hatte ebenfalls zum ersten Mal die CDC 6600 im Jahre 1965. im PC Bereich zog das Feature sehr viel später ein, vielleicht weil der typische PC damals noch unter DOs lief und da ist nur ein Prozess aktiv. Erst der Pentium war 1993 multisklar
- Fließkommarecheneinheiten: Supercomputer wurden für naturwissenschaftliche Anwendungen genutzt, da war wichtig dass man mit beliebigen Zahlen (auch sehr großen oder kleinen) rechnen konnte. Die CDC 6600 hatte erstmals dezidierte Fließkommarechenoperationen im Unterschied zu den vorher üblichen Berechnungen mit Ganzzahlen (die reichen auch für Kommabeträge z.B. bei den Finanzen, man muss nur für die Ausgabe das Komma immer um ein paar Stellen verschieben). Bei der x86 Architektur gab es das als Coprozessor 8087 erstmals 1983. Er war lange Zeit viel teurer als der Prozessor selbst. In den Prozessor zog es 1989 ein.
- Vektoroperationen: Erstmals mit der Cray 1 1976 eingeführt. Sie erlauben das Berechnen vieler werte ohne Zeitverzug. Im PC Bereich gab es die ersten Ansätze mit MMX beim Pentium 1995, doch beschränkt auf nur 8 oder 16 Bit Integereinheiten. Vergleichbar mit der Cray von 1976 war SSE2 des Pentium 4 im Jahre 2001. Allerdings arbeiten beide Architekturen unterschiedlich. Die Cray hatten Vektorregister die jeweils 64 Zahlen aufnahmen, die hintereinander durch die Rechenwerke geschleust wurden. AVX als die neueste Erweiterung bei der x86 Architektur hat 256 Bit breite Register die auch 4 Fließkommazahlen aufnehmen können und bei denen eine Operation auf alle 4 Zahlen angewandt wird. Vektoroperationen machen nur bei bestimmten Anwendungen Sinn. Vielleicht hinkt daher hier der PC-Bereich etwas hinterher.
Nicht nur in der Architektur, sondern auch in der Geschwindigkeit sind 20 Jahre ein guter Vergleichsmaßstab. So schnele wie eine CDC 600 war ungefähr ein 80836 – zwischen beiden liegen 20 Jahre. Die Pentium CPU erreichte 1995 die Performance der Cray 1. Seitdem ist es durch den langsameren Anstieg in den Achtzigern und Neunzigern bei den Supercomputern sogar besser geworden. Die letzte Cray erreichte 16 GFLOPS, das war im Jahre 1993, ein iCore 5 mit 4 Kernen und 3 GHz Takt erreicht bei Vektoroperationen 48 GFLOPS, wenn es um eine besonders sichtige Operation „Fused Add/Multiply“ geht, sogar 96 GFLOPS.
So gesehen müssen wir uns nur Supercomputer von heute anschauen, um zu wissen was uns in wenigen Jahrzehnten bevorsteht. Die bestehen heute aus Zehntausenden normaler Prozessoren mit Hundertausenden von Kernen, inzwischen auch durch Grafikkartenbeschleunigern ergänzt. Ich muss sagen, das ich an der Vision für die Zukunft in 20 Jahren bisher meine Zweifel hatte. Sicher wir haben die Gamer, die geben heute schon 100 bis 1000 Euro für eine Grafikkarte aus, deren leistungsfähige mehrere Tausend einzelne Recheneinheiten haben. Es gibt also schon heute eine Parallele zu den Supercomputern mit vielen Kernen. Was die Gamer aber gerne vergessen: Nur in 20% aller PC steckt eine Grafikkarte und ich würde wetten die Zahl der PC’s bei denen es eine High-End Grafikkarte ist beträgt nur wenige Prozent. Deiser Prozentsatz ist seit über einem Jahrzehnt konstant. Es erschien mir unverständlich warum dieser seit Jahren konstante Anteil nun plötzlich so wachsen sollte. Zudem sieht man es an der Prozessorentwicklung. Als Intel 2005 die Mehrkernprozessoren einführte, kündigte die Firma an, dass es nun alle zwei Jahre doppelt so viele Kerne geben würde. Seit 2005 gab es 5 Zweijahreszyklen so sollte man 2^5 x 2 Kerne = 64 Kerne heute haben. Stattdessen beträgt im Desktopsegment die Maximalzahl nur 6 Kerne. Lange zeit waren es nur 2 bis 4.
Doch für 2017 Jahre sind 12 oder 20 Kerne angekündigt und zwar für die Desktop (icore) Serie – Server haben heute schon bis zu 36 Kerne pro Chip. Dahinter steckt Intels Einsicht, dass sie die Core Mikroarchitektur kaum noch steigern können. Sie wurde 2006 eingeführt. Seitdem wurde sie nur marginal verbessert. Man bekam mehr Leistung vor allem indem man durch die Stromsparmechanismen wieder den Takt hochtreiben konnte. Doch Broadwell oder Skylake erreichen nicht die hohen Takte von Haswell, stattdessen gibt es bei Broadwell erst mal 6 Kerne in der iCore Serie und bei Skylake sind noch mehr angekündigt. Man betreibt seit einigen Jahren auch viel mehr Aufwand um die integrierte Grafikeinheiten aufzurüsten, die haben tatsächlich in jeder Genration doppelt so viele Recheneinheiten bekommen.
Es gibt natürlich einen Grund für die Dominanz von 2-4 Kernen. In der aktuellen ct‘ mit einem Prozessorratgeber lese ich (mal) wieder (zum wiederholten Male) von den faulen Programmierern die es nicht fertig bringen alle Kerne auszulasten. Ja so kann man schrieben wenn man als Journalist selbst nicht programmiert. Das Problem sitzt aber vor dem Monitor, nicht in der CPU. Ein Prozessor wartet bei einem PC, aber auch Tablett oder Smartphone die meiste Zeit auf die Aktion mit dem Anwender. Die ist nicht vorhersehbar, und meist nicht parallelisierbar. Wer einen Text eintippt der wird nur einen Prozessor beschäftigen. der muss dann die Buchstaben als Grafik ausgeben. Sicher es gibt etwas nebenher zu tun, wie Rechtschreibung prüfen oder die Seiten formatieren, doch das beschäftigt auch heute kaum einen Prozessor. Lediglich der Duden Korrektor kann viel Zeit beanspruchen, vor allem wenn man wie ich Bücher schreibt und er beim Laden alles durchkorrigiert. Doch gerade der ist so geschrieben dass er nur einen Thread benutzt (ein Negativbeispiel). Wenn man surft kann man eine Seite weitestgehend nur linear kodieren, das liegt an der Struktur von HTML, das keine festen Layouts kennt sondern sich an Bildschrimgröße und Skalierung anpasst. Aus demselben Grund ist JavaScript nur für einen Thread ausgerichtet, es macht wenig Sinn verschiedene dinge gleichzeitig zu ändern, wenn das Layout von Anfang an nicht feststeht sondern erst wenn alle Elemente bearbeitet sind, erstellt werden kann. Natürlich kann ein Browser im Hintergrund Seiten laden und aufbereiten, doch das ist mehr eine Notlösung, denn der Anwender wird nur einem von vielen Links folgen.
Übrig für Mehrkerncpus bleiben eine Handvoll von Vorzeigeanwendungen, die schon vom Design her multitaskingfähig sind wie Grafik (jeder Bildpunkt kann einzeln bearbeitet werden) Video (ein Bild wird in viele kleine 8×8 Pxielblöcke zerteilt die alle gleich verarbeitet werden) oder Spiele (jedes Objekt kann einzeln gerendert und eingefärbt werden).
Seit einigen Monaten habe ich diese Haltung „Es gibt keinen Grund noch mehr Kerne pro CPU einzubauen“ geändert. Der Grund ist, das es in 20 Jahren meiner Ansicht wohl nur noch wenige Pcs geben wird, wie sie heute da sind. Nein ich meine nicht, dass sie dann von Tabletts oder Smartphones ersetzt sind. Sie sind nur Geräte mit anderer Eingabe Methode, aber haben das technisch genauso das gleiche wie ein PC macht. Nein ich denke in der Zukunft wird viel mehr Power in den Geräten stecken, die heute gerade auf den Markt kommen. Das sind die Virtual Reality Brillen. Die funktionieren heute noch als Krückenlösung mit Smartphones als Display. Im Prinzip kann man damit das heute umsetzen, was wir vor 20 Jahren in Star Trek als „Holodeck“ gesehen haben – man kann sich in einer virtuellen Realität bewegen. Zusammen mit einem Handschuh, der auch Feedback gibt, wenn man was anfasst kann das sehr real sein. Das kann man für Spiele nutzen, aber auch um einen Spaziergang durch das antike Rom zu machen oder Pairs zu besuchen ohne hinzufliegen. Virtual reality ist nicht neu. Es gibt es schon seit Jahrzehnten. Doch man brauchte entweder umgebaute Räume wo die Bilder an die wand projiziert werden oder wenn es Brillen gab, so waren sie niedrigauflösend und grob. Mit mehr Computerpowert kann man dies wirklich lebensecht gestalten. Und es ist eine Aufgabe, die hervorragend parallelisierbar ist.
Das zweite ist die Erprobung von Fahrzeugen im Straßenverkehr. Da gibt es jetzt die ersten Projekte. Die Aufgabe ist ja nicht trivial. Man muss in Echtzeit die Bilder von Kameras, aber auch anderer Sensoren analysieren, Straßengrenzen, Abstände, Menschen und andere Objekte feststellen und das Fahrverhalten anpassen. Der Computer hat es hier schwerer, als der Mensch. Denn wir nehmen nie die ganze Szene wahr. Wir konzentrieren und auf einen kleinen Punkt in der Mitte des Blickfeldes. der kann wechseln, wenn wir in der Peripherie Veränderungen wahrnehmen oder durch Geräusche unserer Aufmerksamkeit abgelenkt wird, aber wir nehmen den größten Teil des Gesichtsfeldes nicht aktiv wahr. Jeder kennt das: Fußgänger nimmt man erst wahr wenn sie auf die Straße gehen, auch wenn man sie schon vorher sieht, wenn ihr Kopf über die parkenden Autos ragt. Hier könnte ein computerbasiertes System deutlich sicherer sein. Auch diese Aufgabe braucht viel Rechenpower.
In solchen Geräten könnten in Zukunft die meisten der leistungsstarken Prozessoren stecken. PC’s würde es auch in der Zukunft geben, vielleicht nicht mehr als Desktop sondern angeschlossen an eine solche Brille. Aber die stärksten Prozessorkerne mit vielen Untereinheiten werden nicht mehr im klassischen PC stecken.