Das Moorsche Gesetz gilt noch immer – oder nicht mehr

 330 total views,  4 views today

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.

9 thoughts on “Das Moorsche Gesetz gilt noch immer – oder nicht mehr

  1. Wozu soll eine leistungsfähigere integrierte Grafikeinheit gut sein? Immer wieder mit viel Rummel beworben, aber wer braucht das? Für die Einstiegsklasse (Office-PC) sind die schon existierenden integrierten Grafikeinheiten überdimensioniert. Typisch für diese Anwendungen ist 2D-Grafik, wozu wird da eine 3D-Fähigkeit überhaupt gebraucht? Es wird viel Rummel darum gemacht, daß ja mit der Grafikeinheit auch gerechnet werden kann. Für Office-Anwendungen sind aber schon die vorhandenen Geräte stark überdimensioniert, eine Leistungssteigerung ist in dem Bereich völlig überflüssig.

    Wird wirklich 3D-Grafik gebraucht, kann aber eine integrierte Grafikeinheit niemals die Leistung einer externen Grafikkarte erreichen. Dafür gibt es drei Gründe:

    – ohne eigenen Grafikspeicher müssen sich CPU und GPU den vorhandenen Speicher teilen. Nicht nur von der Menge her, auch von der Zugriffszeit. Damit stehen sie sich ständig gegenseitig im Weg.

    – Wenn CPU und GPU auf zwei Chips verteilt werden, stehen für beide mehr Chipfläche zur Verfügung. Mehr Chipfläche = mehr Funktionseinheiten = mehr Leistung.

    – Bei zwei Chips kann die erzeugte Wärme besser abgeführt werden. Damit sind höhere Taktfrequenzen möglich.

  2. Nun Intels Politik ist schwer zu durchschauen, von den Erweiterungen mit SSE und AVX hat der Office-Anwender oder auch Tablett PC Anwender meist auch nichts. Für mich ist es ein Indiz, dass man an der internen Struktur nicht mehr viel verbessern kann, die ist auch seit dem Pentium II nur evolutionär verbessert worden. Dazu gehören nun auch mehr Kerne bei der 5.ten Generation. Die Zahl der Kerne ist ja über lange Zeit konstant geblieben, weil Alltag ein Prozessor mit 4 Kernen nicht doppelt so schnell wie einer mit zweien ist.

    Es gibt zwei Gründe für eine integrierte Einheit: Diese kann auch Videodekodierung beschleunigen – HD auflösung erreichen die Atoms z.B. nur dank der GPU. Bei den größeren Prozessoren senkt es dann die Systembelastung.

    Das zweite ist das Ein Viertel aller PC eine Grafikkarte haben. Die meisten davon wahrscheinlich Einstiegs- oder Mittelklasse und an diesem Segment will man wohl auch noch noch etwas abknabbern.

    Die Haswell-EP Generaton hat übrigens in einigen Modellen 128 MB integriertes DRAM für die Grafik.

  3. Moin,

    jedes exponentielle Wachstum stößt irgendwann an Grenzen.

    Früher war die erste Ableitung des Moorschen Gesetzes: Alle 18 Monate gibt es die doppelte Leistung und Geschwindigkeit zum selben Preis. Ein einfacher Neukauf von Hardware hat die alte Software schneller gemacht. Diese erste Ableitung gilt heute nicht mehr.

    – Die RAM Latenz hat sich seit 15 Jahren nicht mehr verbessert.
    – Die CPU Single Core Performance hat sich seit 10 Jahren nicht mehr verbessert.
    – Die Steigerung der Festplattenkapazität und Geschwindigkeit flacht seit 5 Jahr ab.

    Egal wo ich schaue, die erste Ableitung ist für den Normalanwender am Ende. Und im wissenschaftlichen Bereich erfordert eine Leistungssteigerung meist ein neu schreiben der Software, z.b. um von SMP auf GPU zu migrieren.

    Was noch steigt sind die Anzahl der Kerne und die Größe des RAMs, was wissenschaftliche SMP Software in den Bereich des Garbage Collector Dilemmas bringt.

    Und noch ein Wort zu Graphikkarten: On Chip Graphikbremsen mögen gut genug sein, um ein Video zu dekodieren, aber bei allem anderen leiden sie an der RAM Latenz und der geringen Busbreite der CPU zum RAM.

    ciao,Michael

  4. Prinzipiell ist der Grafik-RAM bei den Haswell-Prozessoren ein Schritt in die richtige Richtung. Aber warum gerade 128KB? Bei 2D-Grafik reichen selbst für 4K-Videos 16 MB aus, andererseits sind für 3D-Grafik 128KB einfach zu wenig. Das paßt irgendwie nicht richtig zusammen.

  5. Was man bei x86 noch machen könnte, wäre Arbeit in die Kontext- und Taskwechsel zu stecken. Passiert vermutlich auch, aber damit kann man nicht so recht Werbung machen.

    Ansonsten wird es aus Software Sicht interessant, wenn die Rechner demnächst nur noch unwesentlich schneller werden. Dann lohnt es sich wieder Arbeitszeit in effizientere Programme zu stecken.

    Aus BWL Sicht auch, wenn dann PCs endlich mal näher an die Einsatzzeiten von Büromaschienen kommen (>> 10 Jahre).

  6. Ich denke, ein Grund dafür, dass sie die CPU-Performance bei X86 nicht mehr so erhöht, ist auch, dass Intel nicht mehr gefordert wird. Der einzige verbliebene Konkurrent AMD knappst seit Jahren vor sich hin.

    Die Entscheidung, die Graphikkarte mit in die CPU zu integrieren (vorher war sie im Chipsatz) hat zwei Gründe: Zum einen kommt man so etwas schneller an die Daten im Speicher ran, seitdem der Speicher direkt an die CPU angeschlossen ist und nicht mehr via Chipsatz. Der Hauptgrund ist aber das Marketing: Wo sich die Single-Thread-Performance kaum mehr unterscheidet, kann man so bei Intel mit der 3D-Performance dennoch punkten. Und Hand auf’s Herz: Wer spielt nicht zumindest ab und zu doch ein Spiel, das die 3D-Grafik fordert?

    Echte Konkurrenz erlebt Intel derzeit nur bei den Mobilprozessoren für Smartphones und Tablets. Globalfoundries und Samsung verwenden wohl ebenfalls bereits einen 14-Nanometer-Prozess, um Prozessoren für Apples nächste iPhone-Generation herzustellen. AMD würde diesen Prozess sicher auch gerne nutzen – ist aber aufgrund der geringen Stückzahlen für Globalfoundries einfach nicht interessant. Also wird zuerst die Stromsparvariante des 16-nm-Prozess fertig optimiert, und dann die Variante für Desktop-Prozessoren, wo es um höhere Taktraten geht.

  7. k> Ich denke, ein Grund dafür, dass sie die CPU-Performance bei X86 nicht mehr so erhöht, ist auch, dass Intel nicht mehr gefordert wird.

    Nein. Es gibt wirklich ein Limit in der single thread performance. An diesem (technischem) Limit hängen wir seit fast 10 Jahren.
    Das hängt an mehreren Dingen:
    a) Schaltgeschwindigkeit der Gatter. Da kann man ein bischen was machen mit höheren Strömen, daher gibt es bei Desktop Prozessoren die Möglichkeit einen Thread auf Kosten der anderen etwas schneller laufen zu lassen. Eine physikalische CPU ist aber durch die maximal mögliche Wärmeabfuhr von 130 Watt limitiert.
    b) Bereitstellung der Befehle. Prefetching funktioniert, aber nur bis zu einem gewissen Limit.
    c) Bereitstellung der Daten. Cacheing funktioniert, aber Caches sind nur begrenzt groß. Wenn die Daten nicht im Cache sind, hat man schnell einen Faktor von mehr als 100 bei der Zugriffszeit. D-RAM ist die letzten 30 Jahre nicht mal um den Faktor 10 schneller geworden. (Zeit für das Bereitstellen des ersten Datenwortes an die CPU.)
    d) Prozessumschaltung. Beim Umschalten auf einen anderen Prozess muß z.T. gesammte Cache und die TLBs invalidiert und neu geladen werden. Multithread CPUs helfen dabei das Problem erträglich zu halten.

    Es gibt verschiedene Möglichkeiten Programme doch wieder schneller zu machen, aber dazu muß man jedes Programm einzeln optimieren, was viel Arbeitszeit kostet.
    Alternativ könnte ein neues Design helfen, was aber auch viel Zeit und Geld kostet; was sich nicht gelohnt hat solange die verfügbaren Rechner alle zwei Jahre scneller wurden.

Schreibe einen Kommentar zu Michael K Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.