So, an dem heutigen Artikel habe ich fast zwei Tage gearbeitet, vor allem daran die ganzen Daten zusammenzubekommen. Entsprechend lang ist er geworden. Ich hoffe ihr weist das zu würdigen.
Die ct‘ hat wie immer vor Weihnachten ihre Empfehlungen für den „optimalen“ PC (sortiert nach Anwendungen) gegeben. Wie immer gibt es einen Grundlagen Artikel, was man in jeder Preisklasse von Prozessor, Speicher, Festplatte und Grafikkarte erwarten kann. Mich hat zweierlei gestört: das erste war das im Text zwar darauf eingegangen wird, dass sich heute Einstiegsprozessoren und High-end Core i7 in der Singlethreadperformance kaum unterschieden, das sieht man an den Ergebnissen aber kaum. Die Tabellen führen nur Benchmarks von auf mehrere Threads optimierten, fließkommaintensiven Benchmarks. Die in einem früheren Artikel beim Vergleich genutzten Benchmarks wie PC-Marks, die die reale Performance von Anwendungsprogrammen als Basis nahmen, fielen weg,
Das zweite war dass man die AMD Prozessoren aber auch einige Intel Prozessoren im Low-End als veraltet darstellt. Nun zumindest bei AMD gilt dies im Hinblick auf den Stromverbrauch, weil AMD noch im 28 nm Prozess produziert. Intel hat inzwischen den 14 nm Prozess voll im Griff, das erlaubt es, wenn man gleich viele Transistoren für eine gewisse Funktion braucht, diese auf einem Viertel der Fläche unterzubringen und so den Stromverbrauch deutlich zu senken. Hinsichtlich der für Integeranwendungen wichtigen Leistung hat sich seit Einführung der Core Mikroarchitektur, das ist nun auch schon 7 Jahre her, nicht viel getan, hier gab es nur evolutionäre Veränderungen. Intel hat seit 15 Jahren vor allem an Schraube Fließkommaperformance gedreht, die bei typischen Desktopanwendungen wie Textverarbeitung, Surfen, Mail aber auch Videodekodierung kaum genutzt wird.
Bevor ich einen Leserbrief an die ct‘ schreibe dachte ich mir, veröffentliche das im Blog, da haben mehr Leute was davon und ich kann weiter ausholen. Zuerst einmal: warum erwarten wie das PCs schneller werden? Grundlage ist schlussendlich das „Moorsche Gesetz“. Gordon Moore prognostizierte 1965 das sich die Anzahl der Elemente auf einer bestimmte Chipgröße alle 12 Monate verdoppelte, später korrigierte er auf 24 Monate, als Ende der Sechziger das Wachstum abflachte das auf 24 Monate.
Nun ist für den Anwender letztendlich egal, wie viele Transistoren auf ein Die passen. Das hat die Folge, das man den Speicher erweitern kann und er pro Bit immer billiger wird. Solange aber der Rechner nicht schneller wird nützt dem Anwender das nichts (oder was würde ein C-64 mit 8 GByte RAM anfangen können?) Solange die CPU nicht schneller wird, wohl wenig. Aber mehr Transistoren erlauben eine ausgeklügelte Architektur: mächtigere Befehle, Verarbeitung von mehr Daten gleichzeitig, stufenweise Verarbeitung verschiedener Befehle in unterschiedlichen Stadien in mehreren Teilen des Prozesors. Dadurch steigt letztendlich die Geschwindigkeit.
Moores Gesetz gilt noch immer, auch wenn die Kurve nun etwas abflacht. Was jedoch nicht mehr gilt, ist dass die Geschwindigkeit automatisch ansteigt. Intel wie AMD scheinen einen Endpunkt in der x86 Architektur erreicht zu haben. Die Performance pro Kern steigt seit einigen Jahren nur noch langsam an. Mehr parallel arbeitende Einheiten machen wenig Sinn, wenn sie nicht vollständig ausgelastet werden. Hyperthreading oder SMRT wie Intel es nun nennt zeigt das ja deutlich Hyperthreading simuliert für das Betriebssystem mehr Kerne als es tatsächlich gibt. Mehr Geschwindigkeit erreicht man dadurch, dass die „virtuellen“ Kerne, die von dem Code in einem Thread ungenutzten Funktionseinheiten ausnutzen. Wären diese ausgelastet, so wäre der Gewinn gleich Null. Das Hyperthreading immer effektiver ist (beim Pentium 4 waren es 10-15%, bei Nehalem schon 20% und bei Haswell sind es 30%) liegt daran dass es immer mehr Einheiten für Ganzzahlanweisungen gibt, aber der Code die Parallelität nicht her gab.
Da ich seit Juli an einer Serie über die x86-Architektur arbeite (primär zur eigenen Fortbildung, aber ich hoffe, es nützt auch anderen) habe ich auch Benchmarkergebnisse gesammelt. Es gibt eigentlich nur zwei Benchmarks, die sowohl auf dem 8086 wie auch einem Core 5XXX arbeiten: Dhyrstone und Whetstone. Sie sind sehr alt, mit den entsprechenden Nachteilen, aber Dhrystone korreliert sehr gut mit der Singlethreadperforance auch moderner Anwendungen und Wheatstone sehr gut mit der Fließkommaperformance ohne AVX Unterstützung. Ich habe sie auch gewählt, weil sie beim BOINC Netzwerk Grundlage für die Credits sind die ein Benutzer bekommt. Da ich selbst BONIC installiert habe, kann ich auch leicht den geschätzten Aufwand in GFLOPS durch die verbrauchte Prozessorzeit teilen und komme auf in etwa die gleichen Wert wie bei Whetstone. Die BOINC Ergebnisse publizieren aber viele um anzugeben. Das erlaubt zumindest bei neuen Prozessor eine einfachere Recherche.
So habe ich folgende Tabelle erstellt. Dazu noch einige Bemerkungen:
- Fließkommaunterstützung in Hardware gab es erst seit dem 80486 im Prozessor
- Ab dem Pentium 4 führte Intel sehr viele Prozessoren basierend auf einer Architektur ein. Ich habe dabei immer den leistungsfähigsten Vertreter der Core i7 Serie genommen. Von der Westmere Architektur fand ich keine Werte und bei Haswell habe ich meinen eigenen Prozessor (einen der schnellsten Core i5) genommen.
- Da Intel inzwischen sehr viele Prozessoren mit abgeschalteten Features hat habe ich mich auf die 4-Kernprozessoren ohne Hyperthreading als Mitteklasse bei den neueren Architekturen festgelegt.
- Alle Prozessoren ab dem Pentium haben mehr als eine Ausführungseinheit für Fließkomma und Integer, anders als Kerne sind diese für Programme aber nicht sichtbar, vielmehr sortiert der Prozessor die Befehle um um die Einheiten auszulasten. Der Vergleich ist recht schwierig, da es hier Architekturunterschiede gibt z.B. beim Pentium 4 doppelt schnelle Ganzzahleinheiten und bei den modernen Einheiten, welche die nur bestimmte Befehle ausführen. Die Zahlen beziehen sich auf vollwertige Einheiten.
- Der Dhrystone und Whetstone Benchmark sind keine Einheiten um echte MIPS und echte MFLOPS zu messen. Beim Dhrystone bezieht sich der Wert auf VAX-MIPS, wobei 1 Dhrystone MIPS 0,5 echten MIPS einer VAX entspricht. Bei 64 Bit Betriebssystemen sind die MIPS Werte z.B. kleiner als bei 32 Bit, weil es keine höheren Dhrystonewerte gibt, aber durch mehr Ladebefehle der Benchmark langsamer wird. Umgekehrt haben 8086 und 80286 als 16 Bit Prozessoren eine sehr schlechte Dhrystone Performance. Ebenso liefert der Whetstone Benchmark MWIPS und keine MFLOPS. Je nach Architektur sind 2 bis 5 MWIPS ein MFLOP. Bei den Intel Prozessoren ab dem Pentium in der Regel 4 MWIPS 1 MFLOP. Erst ab dem 808386 kann der Prozessor Fließkommazahlen in der Hardware berechnen, was die Steigerung um den Faktor 70 erklärt.
- Alle Benchmarks nutzen keine auf den Prozessortyp speziell optimierten Compiler und kein SSE / AVX. Allgemeine Optimierungen (Registervariablen, Anordnung der Daten) wurden genutzt.,
- Alle Werte sind für einen Kern. Die Benchmarks sind so alt, dass sie alle Single-Threaded sind.
Kerne | Ausführungseinheiten Fließkomma |
Ausführungseinheiten Integer |
Takt [MHz] | Transistoren | Dhrystones | Dhrystones /MHz |
Dhrystones /MHz/Einheit |
Whetstones | Whetstones /MHz/Einheit |
Transistoren/ Dhrystones |
|
---|---|---|---|---|---|---|---|---|---|---|---|
‚8086 | 1 | 1 | 1 | 4,77 | 29.000 | 0,5 | 0,10 | 0,10 | 0,0104 | 0,00 | 58000 |
‚80286 | 1 | 1 | 1 | 10 | 134.000 | 1,889 | 0,19 | 0,19 | 0,0852 | 0,01 | 70937 |
‚80386 | 1 | 1 | 1 | 40 | 275.000 | 17,5 | 0,44 | 0,44 | 5,68 | 0,14 | 15714 |
‚80486 | 1 | 1 | 1 | 66 | 1.200.000 | 45,6 | 0,69 | 0,69 | 15,2 | 0,23 | 26316 |
Pentium | 1 | 1 | 2 | 200 | 3.200.000 | 352 | 1,76 | 0,88 | 132 | 0,66 | 9091 |
Pentium Pro | 1 | 1 | 2 | 200 | 5.500.000 | 373 | 1,87 | 0,93 | 161 | 0,81 | 14745 |
Pentium II | 1 | 2 | 2 | 300 | 7.500.000 | 544 | 1,81 | 0,91 | 245 | 0,41 | 13787 |
Pentium III | 1 | 2 | 2 | 1000 | 29.400.000 | 1858 | 1,86 | 0,93 | 816 | 0,41 | 15823 |
Pentium 4 | 1 | 1 | 4 | 3066 | 125.000.000 | 2430 | 0,79 | 0,20 | 1858 | 0,61 | 51440 |
Pentium D | 2 | 1 | 4 | 3000 | 230.000.000 | 3678 | 1,23 | 0,31 | 1119 | 0,37 | 31267 |
Core 2 Duo E6850 (Merom) | 2 | 3 | 3 | 3000 | 291.000.000 | 8144 | 2,71 | 0,90 | 3142 | 0,35 | 17866 |
Core 2 Duo E8600 (Penryn) | 4 | 3 | 3 | 3950 | 825.000.000 | 9101 | 2,30 | 0,77 | 3625 | 0,31 | 22662 |
Core I7 950 (Nehalem) | 4 | 3 | 3 | 3333 | 731.000.000 | 6443 | 1,93 | 0,64 | 2913 | 0,29 | 28364 |
Core I7 2600 (Sandy Bridge) | 4 | 3 | 3 | 3400 | 995.000.000 | 11797 | 3,47 | 1,16 | 3428 | 0,34 | 21086 |
Core I7 3770K (vy Bridge) | 4 | 3 | 3 | 3500 | 1.400.000.000 | 14196 | 4,06 | 1,35 | 3719 | 0,35 | 24655 |
Core I5 4690 (Haswell) | 4 | 3 | 4 | 3800 | 1.400.000.000 | 16700 | 4,39 | 1,10 | 4700 | 0,41 | 20958 |
Core i7-5820K (Haswell EP) | 6 | 3 | 4 | 4400 | 2.600.000.000 | 19000 | 4,32 | 1,08 | 4320 | 0,33 | 22807 |
Das interessante sind die Spalten nach den Messwerten. Dhrystones/MHZ ist ein Wert für die Effizient einer Architektur. Er steht für die Singlethreadperformance. Man sieht dass dieser seit der Einführung der Core Mikroarchitektur (und das ist auch schon 7 Jahre her) nur von 2,71 auf 4,32 anstieg. Das steht im Einklang mit Benchmarkergebnissen die ohne spezielle Optimierungen bei Ganzzahlanwendungen, wie sie die meiste heutige Software ist, pro Generation eine Steigerung von meist 15% feststellt.
Noch konstanter ist der Wert Dhrystones pro Einheit, also pro ALU, Dieser ist bei dem Wert des Pentium mit einer Ausnahme um 1 schwankend mit kleinen Ausschlägen nach oben und unten. Die Ausnahme ist der Pentium 4, dessen Netburst Architektur im Markt scheiterte. Das diese nicht so optimal war, sieht man auch an der Performance Transistoren pro Dhrystone (letzte Spalte). Auch hier fallen die beiden Prozessoren mit dieser Architektur durch hohe Werte auf. Bei letzterem Wert wurde die Kernzahl berücksichtigt, allerdings kein Hyperthreading. Dieser Wert ist allerdings mit Vorsicht zu genießen, da im Laufe der Zeit immer mehr in den Prozessor gewandert ist. Heute ist die komplette Grafik dort enthalten, Speicherkontroller, Anbindung der Slots, Cachecontroller, Caches (schon bei Nehalem 60% der Fläche) und Memory Management Unit. Das alles fehle noch bei den ersten Generationen. Alleine die Grafik macht bei Ivy Bridge und Haswell rund 400 Millionen Transistor Funktionen oder ein drittel der Komplexität aus. Hyperthreading wurde ebenfalls nicht berücksichtigt und sollte bei den I7-Prozessoren den Wert um 20 bis 30% senken. Trotzdem fällt der Pentium durch seine Effizienz auf. Folgerichtig nutzte Intel dieses Design für den Xeon Phi – der zeigt, was wir auch heute mit den 2,6 Milliarden Transistoren haben könnten: 50 anstatt 6 Prozessoren pro Chip.
Was ist nun die Konsequenz? Nimmt man den Anstieg der T5ansistorzahlen so gilt das Moor’sche Gesetz nach wie vor. Etwas anders sieht es bei der Performance aus, die beim Anwender ankommt. Die ist seit der Einführung der Core Mikroarchitektur nur langsam gestiegen. Nimmt man den E6850 Prozessor vom Herbst 2007 und vergleicht ihn mit dem leistungsfähigsten Core i3 (ebenfalls zwei Kerne) I3-4370 von 2014, so bekommt man um 94% mehr Leistung pro Singlethread (Integer). Bei Fließkomma sind es sogar nur 42%. Dieser Wiederspruch ergibt sich daraus, das Intel seit dem Pentium 4 sich auf SIMD Erweiterungen konzentrierte, die liefern heute die achtfache Performance bei einfachgenauen Zahlen wie die klassischen x86 Befehle – aber eben nur wenn sie genutzt werden. Früher war der Gewinn im selben Zeitraum höher. Wer einen 1984 gekauften 80286 1991 (nach sieben Jahren) durch einen 80486 ersetzte bekam 12 x mehr Leistung, wich er 1998 einem Pentium II, war der Anstieg erneut der Faktor 12. Ein 2006 gekaufter Pentium D war immerhin noch siebenmal schneller – da flachte es schon ab.
Intel versuchte zuerst die Problematik durch mehr Kerne zu kompensieren, doch weil Software diese meist nur selten nutzte, hat man im Desktopsegment seit einigen Jahren die Kernzahl auf 4 beschränkt (bei Servern wo die Kerne ausgelastet sind gibt es mittlerweile bis zu 18 Kerne pro CPU), Stattdessen führte man Turbo Boost ein um wenigstens die Taktfrequenz eines oder zwei Kernen zu steigern, wenn schon die Kerne nicht alle genutzt wurden und Haswell bekam wieder mehr Funktionseinheiten, mit Haswell EP steigt nun die Kernzahl erneut an, zumindest im obersten Segment (i7).
Meiner Ansicht nach wäre es Zeit für eine neue Architektur, Doch die scheint nicht zur Diskussion zu stehen. Vielmehr tippe ich darauf das Intel mehr Beschleunigungsfunktionen integrieren wird, z.B. eine noch leistungsfähigere Grafikeinheit. Die hat seit ihrer Einführung in der Westmere Generation deutlich an Geschwindigkeit zugelegt. Früher war sie langsamer als selbst die langsamsten Graphikkarten, nun erreicht sie immerhin das 50 Euro Niveau des Grabbeltischs.