Dhrystone-MIPS und Transistorcount
Auch heute wieder ein Computerthema auf das ich beim Schreiben gekommen bin, demnach hat nach meinen Recherchen ein Rechner in der Penryn Architektur (Core 2) Geschwindigkeit von bis zu 18.000 MIPS, also Millionen Instruktionen pro Sekunde. Das sind pro Kern (wahrscheinlich auf ein 4-Kernsystem bezogen) bei 3,2 GHz Takt 1,4 Instruktionen pro Sekunde, und auch in der ct‘ hat man bei einer neuen Architektur namens VISC 5,24 DMIPS/Takt, allerdings wahrscheinlich auf zwei Kerne bezogen.
Nun was sind MIPS – es ist die Abkürzung von Millionen Instruktionen pro Sekunde. Das scheint ein einfaches Kriterium zu sein, ist es aber nicht. Zum einen ist es schwer Instruktionen zu zählen. Natürlich kann man ein Benchmark erstellen, denn Assemblerquelltext ansehen und dann vor allem bei Schleifen die Instruktionen zählen, mit den Durchläufen multiplizieren. Doch jenseits künstlicher kleiner Inhalte, bei konkreten größeren Problemen wird das schwer.
Das zweite ist das man ja damit auch Prozessoren und Rechner vergleichen will, und dann wird es schwer weil die Instruktionen verschiedener CPU unterschiedlich mächtig sind. Das sieht man schon bei der x86 Architektur: Eine Instruktion ist eine einfache Register-Register Bewegung von 32 Bit Daten wie „MOV EAX,EBX“ aber auch die kombinierte Addition und Multiplikation von acht Einfach genauen Fließkommazahlen (vfmaddps %ymm0, %ymm1, %ymm2, %ymm3).
Erst recht wird es problematisch Prozessoren mit unterschiedlichen Architekturen zu vergleichen: im Extremfall braucht ein 8 Bit Prozessor für eine 64 Bit Addition acht Instruktionen, ein 64 Bit Prozessor aber nur eine. Aus diesem Grunde sind die MIPS Angaben die man liest daher meist keine „echten“ MIPS also Millionen Anweisungen in der konkreten Architektur, sondern Dhrystone MIPS. Das ist ein Benchmark ursprünglich in ADA, heute in C. Als 1 MIPS wurde die Geschwindigkeit einer VAX 11/780 definiert, die 1757 Dhrystone erreichte. Durch diesen Wert musste man die Dhrystone Ergebnisse teilen um die DMIPS (Dhrystone Millionen Instruktionen pro Sekunde) anzugeben. Diese Festlegung erfolgte nicht weil die VAX 11/780 eine Million Instruktionen pro Sekunde ausführen konnte – das war als typischer CISC Rechner bei einem Takt von 5 MHz gar nicht möglich, sondern weil sie in Problemstellungen ungefähr so schnell wie eine IBM 370/158-8 war, die man als eine Maschine Ansah die 1 MIPS pro Sekunde ausführte. (Real waren es etwa 0,5 MIPS bei der VAX 11/780)
Ein Prozessor der nicht so mächtig war, erreichte daher weniger DMIPS bei einem Takt als ein leistungsfähiger Prozessor. 8 Bit Prozessoren erreichten beim gleichen Takt wie VAX weniger als 0,1 DMIPS. Mit echten MIPS hat das nichts zu tun, man kann nur sagen, dass mein Haswell Prozessor bei 3,8 GHZ mit etwas über 16.000 DMIPS 16.000-mal schneller in diesem Benchmark als eine VAX 11/780 ist.
Eine Cray 1A erreicht im aktuellen Dhrystone Benchmark 2.1 im optimierten Falle 13888 Dhrystone, die VAX 11/780 1662. Er ist also nach diesem Benchmark nur rund achtmal schneller, aber neunzigmal teurer – ein schlechter Deal oder? Nein, denn das zeigt das Problem jedes Benchmarks. Dhrystone misst nur die Ganzzahlperformance und Fließkommaleistung. Die war bei den Cray aber schlecht. Eine Cray 1A erreichte maximal (als Peak) 40 (echte) MIPS, aber 160 MFLOPS. Bei Fließkommarechnungen war sie wegen ihrer darauf ausgelegten Architektur 400-mal schneller als eine VAX.
Das leitet mich zum zweiten Kriterium über wie man Rechner vergleichen kann: dem Transistorcount. Er ist allerdings genauso wenig verlässlich wie der Dhrystone Benchmark. Wenn man davon ausgeht, dass man für die Erledigung einer Aufgabe, z.B. dem Aufbau eines 64 Bit Rechenwerkes eine bestimmte Anzahl von Gattern braucht, kann man davon ausgehen, dass Rechner mit ähnlich vielen Transistoren etwa gleich schnell sein sollten. Das Kriterium ist aber ebenfalls dehnbar. Zum einen kann man mit einer effizienten Architektur Transistoren einsparen. So brauchen RISC Rechner meist weniger Schaltelemente als CISD Rechner. Des weiteren kann man mit Caches sehr viele Transistoren verbrauchen, ohne dass die Rechenleistung dadurch proportional zum Verbau in der Logik ansteigt. Bei der ICore Architektur steckten von 291 Millionen Transistoren nur 19 Millionen in den Rechenwerken.
Aber immerhin: eine CDC 6600 aus dem Jahre 1965 hatte 400.000 Transistoren und leistete 3-5 MIPS (echte MIPS). Ein Intel 80386 aus dem Jahr 1985 hatte mit 375.000 Transistoren in etwa gleich viel und erreichte auch um die 4-6 MIPS (diesmal aber DMIPS). Doch bei Fließkommarechnungen war sie zehnmal schneller, da sie diese nativ durchführte, während der 386 dazu einen Coprozessor brauchte.
Wie viele Transistoren eine Cray 1 hat ist nicht bekannt, aber man kann es abschätzen. Ich habe mal die Angabe 1 Million Transistoren gefunden, auch 200.000 Chips, das passt nicht zusammen. Rund 73.000 der Chips waren Speicherbausteine. Bleiben 130.000 Chips für die Logik. Bei 4-5 Gattern pro Chip, eine schon damals niedrige Integrationsdichte kommt man auf etwas mehr als 1 Million Transistoren. Für ein einfaches Gatter braucht man zwei Transistoren, es können aber auch deutlich mehr sein. Doch mindestens 1,3 Millionen Transistoren sind es auch in diesem Fall. Damit wäre eine Cray 1A vergleichbar mit einem 486 DX mit 1,2 Millionen Transistoren. Bei Integer Anweisungen stimmt das auch: 13.8888 DMIPS vs 15.000 DMIPS bei 33 MHz. Doch bei Fließkommaanweisungen braucht man einen 100 MHz DX/4 mit 50 DMIPS um 12,1 MFLOPS zu erreichen. Das schafft eine Cray 1A schon bei Skalraoperationen. Bei Vektoroperationen zieht sie mit 98 MFLOPS beim Whetstone Benchmark davon.
Aber wir haben einen Trost: Während auf einem 486 mit 100 MHz noch Windows 95B problemlos ausführen kann, wäre eine Cray 1 mit 14 DMIPS sowohl zu langsam. wie auch der Arbeitsspeicher von 8 Megabyte zu klein (falls es eine Windows 95 Version für die Cray gäbe). Ernüchternd nicht? Also mit der Cray 1 konnte man das Wetter vorhersagen, Supernovaexplosionen simulieren, aber es reicht nicht für ein nicht gerade anspruchsvolles grafisches Betriebssystem.
Für Windows 8 werden als Systemanforderungen ein 1 GHz Prozessor und 1 (32 Bit) bzw. 2 GByte RAM (64 Bit genannt). Geht man von 2 DMIPS pro Takt aus, sind das 2000 DMIPS. Eine Cray 3 hätte vier Prozessoren gebraucht um diese Leistung zu erreichen. Eine 4-Prozessor Cray 3 hatte auch zwischen 2 und 8 GByte RAM. Das passt also. Kurzum: 2014 hat ein Betriebssystem als Minimalanforderung an die Hardware die Leistung des schnellsten Rechners von 1995 (und man kann davon ausgehen dass bei einer Cray 3 das Betriebssystem noch etwas Leistung zum Rechnen übrig lies…).