Home Site Map Sonstige Aufsätze Weblog und Gequassel counter

Prozessorarchitekturevolution bei Intel und der IPC

In diesem Artikel der aus zwei Blogeinträgen entstand will ich auf die grundlegenden Schritte der Prozessorarchitekturentwicklung bei Intel eingehen, und warum diese seit einigen Jahren eine weitestgehend konstante Geschwindigkeit ergibt.

Einleitung

Die Geschwindigkeit eines Rechners kann man angeben als Instruktionen pro Takt Taktfrequenz. Ändert sich die Architektur nicht, das heißt die Instruktionen sind die gleichen, so kann man leicht Rechner vergleichen, wie in meinem Falle Prozessoren der x86 oder x64 Linie. Es klappt nicht mehr so gut, wenn die Architekturen unterschiedlich sind. So soll ein Raspberry Pi mit 700 MHz nach offiziellen Angaben so schnell wie ein 300-MHz-Pentium II sein – meiner Erfahrung nach erreicht er nicht mal das Tempo. Doch schon die Angabe 700 MHz zu 300 MHz zeigt das die interne Architektur des Pentium „mächtiger“ ist als die eines ARM Prozessors. Sonst bräuchte man nicht nur 300 MHz um die gleiche Geschwindigkeit wie ein ARM-Prozessor mit 700 MHz zu erreichen. Dabei ist dieser sogar noch jünger, sollte also leistungsfähiger als die Generation sein, die zu der Zeit des Pentium II (1996-1998) aktuell war.

Aus der Gleichung gibt es zwei Ansatzpunkte die Geschwindigkeit zu erhöhen: höhere Taktfrequenz und mehr Instruktionen pro Takt (IPC: Instructions per Clock). Fangen wir mit dem komplizierteren an, dem IPC.

Die Entwicklung vom 8086 zu Skylake

Als der 8086 erschien, brauchten alle Befehle mehrere Takte, selbst einfache Befehle oder welche, die gar nichts taten wie der Befehl NOP. Im Schnitt brauchte ein Befehl beim 8086 in der Ausführung 7,7 Takte. Er hatte die klassische Architektur der damaligen Zeit implementiert: Befehl aus dem Speicher holen, Befehl dekodieren, Befehl ausgeben und eventuell Ergebnis zurückschreiben. Jede Operation benötigte einen Takt, oft mehrere. Komplexe Befehle wie Multiplikation oder Division brauchten sogar über 100 Takte.

Die nächste Generation, der 80286, hatte eine Pipeline eingebaut. Sie holte bei jedem Takt einen Befehl, nicht nur wenn ein Befehl gerade fertig war. Bei jedem Takt wurde der Befehl in der Pipeline eine Stufe weitere befördert. Das ist eine erste Stufe der Parallelisierung. Es befinden sich immer mehrere Befehle in verschiedenen Stadien der Ausführung in der Pipeline. So brauchte der 80286 für die meisten einfachen Befehle nur noch zwei bis drei Takte. Er war beim gleichen Takt mindestens um den Faktor, 2, oft sogar um den Faktor 3 schneller als sein Vorgänger. Noch brauchten aber alle Befehle mehr als einen Takt, weil die Pipeline nur drei Stufen hat - wenn der Durchschnitt bei 8 Takten pro Befehl liegt, müsste sie acht Stufen umfassen, um einen Befehl pro Takt abzuarbeiten.

Bei den nächsten beiden Generationen wurde die Pipeline immer länger und der 486 erreichte nun tatsächlich, dass 80 % der Befehle in einem Takt ausgeführt wurden. Sie war nun fünf Stufen lang. Mit der Ausführung von einem Befehl pro Takt war die erste Grenze der Architektur erreicht. Unter diesen Wert kann man die Geschwindigkeit mit einer Pipeline nicht mehr drücken, auch wenn es sehr viele Stufen sind (den Rekord hält hier der Pentium 4 bei dem es bis zu 32 Stufen waren).

Beim Pentium gab es daher einen Bruch mit der Architektur. Er hatte zwei arithmetisch-logische Einheiten (ALU), mit denen Ganzzahlberechnungen, aber auch Bitverknüpfungen oder Vergleiche durchgeführt wurden. Die Pipeline konnte nun beide Einheiten versorgen, das heißt, Befehle die diese Einheiten konnten nun parallel ablaufen. Das Problem: Code wird linear ausgeführt, so schreiben ihn Menschen aber auch Compiler. Ein Schritt nach einem anderen kann unabhängig vom Ersten sein, muss aber nicht, kann z.B. ein Rechenergebnis verwenden, das erst errechnet werden muss. Mit diesem Feature „Out of Order execution“ kann die Geschwindigkeit stark steigern, die CPU werden aber auch sehr komplex. Es muss genau Buch geführt werden, welcher Befehl von welchem unabhängig ist, welche Einheit gerade frei ist und wann ein Ergebnis zur Verfügung steht. Dazu kam ein zweites Feature, die spekulative Ausführung: Das parallele Ausführen macht keinen Sinn, wenn bei einem Sprung (und den gibt es in Programmen häufig) man Befehle ausführt, die gar nicht mehr gültig sind. Eine Sprungvorhersage ermittelt daher, wohin wahrscheinlich beim nächsten Sprung gesprungen wird. Diese Sprungvorhersage oder spekulative Ausführung ist die zweite Architekturänderung, die nötig ist. Die beiden Sicherheitslücken, die es bis in die Nachrichten schafften Meltdown und Spectre basieren darauf, dass man die Out-of-Order und Sprungvorhersage Einheiten so trainierte, dass man auf Speicherbereiche zugreifen konnte, die nicht zum eigenen Prozess gehörten, indem diese schon vorsorglich in die Caches geladen wurden. Trotz des Sicherheitsmankos ist das Feature mächtig. Bei Intel beherrschen nur die Atoms kein Out-Of-Order Scheduling. Vergleicht man die Geschwindigkeit eines Atoms mit dem einfachsten „normalen“ Prozessor von Intel, früher ein Celeron, heute steht der Begriff nicht mehr für eine Architektur, so zeigt sich das ein Atom bei gleichem Takt enorm viel langsamer ist.

Im Prinzip hat sich seitdem nicht mehr viel geändert. Beim Pentium war das Feature der parallelen Ausführung noch rudimentär, beim Pentium Pro voll ausgebaut. Auf dessen Architektur basiert noch die heutige Skylake Architektur. Zwischendurch versuchte Intel einen Wechsel – die mit dem Pentium 4 eingebaute Netburst Architektur basiert auf nicht so vielen Einheiten, dafür schnellerer Ausführung, doch diese erwies sich als eine Sackgasse. Skylake hat heute 22 Funktionseinheiten, die von 7 Ports gefüttert werden. Diese große Zahl ergibt sich daraus, dass zwar durch eine Pipeline ein Befehl pro Takt ausgeführt wird, die Ausführungszeit aber immer noch mehrere Takte beträgt. Solange ist eine Einheit belegt und daher braucht man mehrere. Die Portzahl ist daher aussagekräftiger. 7 Ports bedeuten: maximal 7 Befehle können gleichzeitig aktiv sein. In der Praxis sind es 3 bis 4.

Erst mit der letzten Pentium-4-Generation führte Intel mehrere Prozessorkerne ein. Der Unterschied zu parallelen Funktionseinheiten ist, dass der gesamte Prozessor mehrfach vorkommt. Er ist auch dem Betriebssystem bekannt, das so verschiedene Prozesse an verschiedene Kerne verteilen kann. Das können Anwendungsprogramme, aber auch Systemtreiber sein. Die Kernzahl ist seitdem nur langsam gestiegen. Intel versprach mit jeder Generation die Kernzahl zu verdoppeln, das hat sich nicht bewahrheitet, denn dann müssten Skylake Prozessoren mindestens 32 Kerne haben. Tatsächlich hat das Einsteigersegment zwei Kerne, die etwas besseren Prozessoren vier und nur im Spitzensegment (der Desktop-Prozessoren) gibt es mehr, wobei auch hier erst durch die Ryzen von AMD Bewegung kam. Bei der Serverlinie, den Xeons, gibt es aber tatsächlich Prozessoren mit bis zu 36 Kernen. Der einfache Grund: Server, die viele Benutzer haben oder hochparallele Programme ausführen, nutzen so viele Kerne auch aus, Programme für Desktop-Rechner, die meist interaktiv sind dagegen nicht. Ein Zwischenschritt zwischen echten Kernen und den für das Programm unsichtbaren mehrfach vorhandenen Funktionseinheiten ist das Hyperthreading oder als allgemeiner Begriff, Simultaneous Multithreading. Dabei werden dem Betriebssystem mehr Kerne gemeldet, als es gibt. Die Befehle werden dann in die laufende Abarbeitung eingefügt, wobei man da es getrennte Threads sind, dies einfacher ist als das Umsortieren von Befehlen eines Threads. Allerdings kann man mit SMT, da es eben nicht zwei vollständige Kerne sind niemals so viel Leistung erreichen wie mit zwei eigenen Kernen.

Kommen wir zum zweiten Kriterium: der Taktfrequenz. Die stieg lange Zeit dauernd an. Anfangs erst langsam. Der 8086 erschien mit 8 MHz, auch der 286, der 386 mit 16 MHz, der 486 mit 20 MHz. Ab dem Pentium gab es eine Phase, in der die Taktfrequenz pro Generation rapide anstieg: 66 MHz beim Pentium, 233 MHz beim Pentium II, 450 MHz beim Pentium III, 1.200 MHz beim Pentium 4. Von 1978 bis 1994 stieg in 16 Jahren die Taktfrequenz um den Faktor 8. Von 1994 bis 2003 in neun Jahren um den Faktor 45. Der Pentium 4 erreichte eine Spitzentaktfrequenz von 3,83 GHz, doch das war nicht mehr weiter steigerbar. Die erste Generation der iCore Architektur ging wieder auf 3,33 GHz Spitzentakt herunter. Heute werden wieder 4 GHz erreicht und überschritten aber um nicht mehr viel.

Das heißt, wir haben zwei Dead-Ends: Die Spitzentaktfrequenz ist seit über 10 Jahren kaum gestiegen, die interne Architektur ist seit derselben Zeit nahezu unverändert, wenn man sie auf den Pentium Pro zurückführt, sogar seit über 20 Jahren. Natürlich gab es immer wieder Verbesserungen in der Zeit dazwischen, aber eben doch evolutionäre Änderungen. Damit komme ich zum Ausgangspunkt zurück – lohnt es sich heute einen 4 bis 6 Jahre alten PC auszuwechseln, nur weil der Prozessor zu lahm ist. Nach Intels Angaben wurde die Geschwindigkeit wie folgt gesteigert:


Technik

ST-IPC-Gewinn

ST-IPC vs. Dothan

Dothan

Pentium M (Refresh), 2C ohne HT/TM, 90nm (2004)

-

100%

Merom

Core 2 Duo, 2C ohne HT/TM, 65nm (2007)

+15%

115%

Penryn

Core 2 Duo (Refresh), 2C ohne HT/TM, 45nm (2008)

+2%

117,5%

Nehalem

Core 9xx, 4C +HT +TM, 45nm (2008)

+12%

131,5%

Sandy Bridge

Core 2xxx, 4C +HT +TM, 32nm (2011)

+10%

144,5%

Ivy Bridge

Core 3xxx, 4C +HT +TM, 22nm (2012)

+5%

152%

Haswell

Core 4xxx, 4C +HT +TM, 22nm (2013)

+10,5%

167,5%

Broadwell

Core 5xxx, 4C +HT +TM, 14nm (2015)

+5,5%

177%

Skylake ist da noch nicht dabei, soll aber bei maximal 10 % liegen. Immerhin, in 13 Jahren sind es summierte 177 %. Doch es gibt noch einen anderen Faktor. Seit die Parallelisierung einzog, ist es so, dass der Geschwindigkeitsgewinn nicht linear abhängig ist, sondern stark vom Programm abhängig. Beim Pentium war es so, dass er den damals noch weit verbreiteten 16-Bit-Code in DOS kaum beschleunigte. Bei so vielen Generationen wie in der oberen Tabelle kommen dann noch Befehle hinzu, die ein neueres Programm nutzen kann. Vor allem bei Fließkommabefehlen hat Intel in den letzten Jahren viel gemacht. Die Angaben von Intel kann man also als optimistisch ansehen.

Eine andere Webseite kam auf folgende Werte beim Auswerten der Geschwindigkeit gängiger Programme:

Technik

Intel Angabe

Dothan


-

Merom


+15%

Penryn


+2%

Nehalem


+12%

Sandy Bridge


+10%

Ivy Bridge

+ 5,8 %

+5%

Haswell

+ 11,2 %

+10,5%

Broadwell

+ 3,3 %

+5,5%

Skylake

+ 2,4 %

+ 10 %

Bei zwei Genrationen wurden die Intel-Angaben erreicht, nicht jedoch bei den letzten beiden. Das wundert nicht, den intern hat sich bei Haswell wenig getan. Die wichtigsten Änderungen betreffen die AVX-Einheit, die bei nicht-wissenschaftlichen Anwendungen jedoch keine Rolle spielt. Dazu und das ist eher von Bedeutung wurde die OnBoard-Grafik leistungsfähiger. Bei Ivy-Bridge wurde sie als erste integrierte Grafikeinheit eingeführt. Damals hatte die kleinste Version 6 Shader und einen Basistakt von 350 MHz, die größte 12 Shadereinheiten bei 750 MHz. Bei Skylake hat die kleinste Version 12 Shadereinheiten bei 1 GHz Takt und die größte Version 72 Shadereinheiten bei 1,3 GHz. Das heißt, die Grafikeinheiten haben sowohl, was den Takt wie auch die Zahl der Einheiten angeht, deutlicher zugelegt als die CPU. Inzwischen reicht sie aus für nicht so anspruchsvolle aktuelle Spiele in Full-HD Auflösung, während die ersten Versionen nur einige Jahre alte Spiele flüssig darstellen können. Von einer dezidierten Grafikkarte sind sie noch weit entfernt. Ich denke, dass dieser Trend anhalten wird.

IPC

In diesem zweiten Teil dreht sich alles um ein Kriterium: den IPC, die Abkürzung von Instructions per Cycle (Anweisungen pro Maschinenzyklus). Da geht schon das erste Erklären los. Was ist ein Maschinenzyklus? Jeder Prozessor hat einen Taktgeber. Bei jedem Taktschlag tut er etwas. Ein Maschinenzyklus besteht aus mehreren Takten. Der einfachste Zyklus aus drei Teilen: Daten aus dem Speicher holen, Befehl aus den Daten herausholen, Befehl ausführen. Die Definition eines Zyklus war früher wichtig, weil er die Geschwindigkeitsanforderungen an das Speichersystem definiert. Im obigen Basiszyklus von drei Takten wird nur im ersten Takt auf den Speicher zugegriffen, dann reicht für diesen eine Zugriffszeit, die nur einem Drittel der Geschwindigkeit des Mikroprozessors entspricht. Die meisten Prozessoren in der unteren Übersicht haben einen IPC-Wert größer 1, das heißt, die obige Definition des Taktzyklus ist nicht anwendbar, weil der Prozessor durch interne Parallelisierung (Pipeline, Parallelverarbeitung) mehrere Befehle pro Takt ausführt.

Der Dhrystone ist ein Benchmark. Jeder Benchmark dient dazu, die Geschwindigkeit eines Computers zu messen. Dazu einige Bemerkungen über Faktoren, die beim Beurteilen eines Benchmarks wichtig sind. Zuerst einmal ist wichtig, welche Bedingungen beim Lauf des Benchmarks erfüllt sind. Selbst beim selben Binärcode kann es verschiedene Resultate auf unterschiedlichen Computern geben. Das hängt vom Betriebssystem ab. Das Programm benötigt Funktionen des Betriebssystems, um auf Dateien oder Geräte zuzugreifen, wie den Monitor. Beim Dhrystone Benchmark gibt es kaum Benutzung von Betriebssystemfunktionen. Trotzdem differieren die Ergebnisse eines Benchmarks unter Windows, MacOs und Linux leicht. Der Grund ist das heutige Betriebssysteme Multitasking-Betriebssysteme sind. Selbst wenn der Benchmark das einzige Programm ist, das läuft, dann gibt es noch etliche andere Prozesse, die im Hintergrund laufen und ebenfalls Ressourcen benötigen. Dazu kommt je nach Auslegung des Benchmark auch, wie groß und schnell der Speicher ist. Wenn ein Benchmark viel auf den Speicher zugreift, so kann dies wesentlich für die Gesamtgeschwindigkeit sein. Das ist bei diesem Benchmark aber nicht der Fall.

Der wichtigste Faktor ist heute der Compiler. Dhrystone wurde in C geschrieben, der populärsten Programmiersprache. Für sie gibt es zahlreiche Compiler. Ein Compiler analysiert den Quelltext und übersetzt ihn in Maschinensprache. Die Algorithmen sind dazu unterschiedlich. Bei Intels Prozessoren erzeugen meist auch Intels Compiler den schnellsten Code. Sie kennen den internen Ablauf und die genauen Ausführungszeiten der Befehle, die heute nicht mehr absolut angegeben werden können, sondern oft von anderen Befehlen abhängen. Zudem gibt es je nach Prozessor noch Spezialbefehle. Schon der 8086 hatte „Stringbefehle“, die das sequenzielle Abarbeiten einer Bytekette beschleunigten. Die aktuellen Prozessoren haben Spezialbefehle, die das Verschlüsseln und Entschlüsseln nach AES beschleunigen und Rechenbefehle, die mehrere Zahlen auf einmal verarbeiten. Daher muss für einen Vergleich auch immer derselbe Compiler eingesetzt werden.

Die Bedeutung des Compilers geht noch weiter. Heutige Compiler optimieren den Quellcode. Das heißt, sie können eine ineffiziente Programmzeile durch eine effiziente ersetzen. Das kann sehr weit gehen. So ist in so alten Benchmarks der Code oft trivial. In einer Schleife wird z. B. immer dieselbe Berechnung durchgeführt, deren Ergebnis aber nie verwendet. Der Compiler erkennt das und die Schleife durch eine einzelne Anweisung ersetzen, in der nur der letzte Durchlauf durchgeführt wird. Bei den heutigen Prozessoren kann es sein, das wenn in einer Schleife deren Anweisungen unabhängig sind, sie durch den Compiler in mehrere Teilschleifen aufgespaltet wird und diese auf die Kerne verteilt werden. Der Codeteil läuft so viel schneller.

Das Problem der optimierenden Compiler gab es schon in den Achtzigern, als der Dhrystone Benchmark entstand. Auf den Dhrystone 1 folgte der Dhrystone 2, der Code enthielt, den man nicht so gut optimieren konnte. Seitdem ist der Code aber gleich geblieben. Heutige Compiler haben daher kein Problem den Code aus den Achtzigern zu optimieren.

Die Bedeutung für die Praxis

Wenn sie Software kaufen, dann können sie sich sicher sein, dass diese ohne viele Optimierungen erstellt wurde. Der Grund ist einfach: Sowohl Intel wie AMD haben zahlreiche Prozessoren im Angebot. Bei Intel reicht das von einfachen Atoms in den Celerons mit einem „J“ in der Bezeichnung, für einen Verkaufspreis von 20 bis 30 Euro bis zu Xeon Serverprozessoren mit Verkaufspreisen von mehreren Tausend Euro. Sie unterscheiden sich in Zahl der Prozessorkerne, Taktfrequenz aber auch interner Architektur. Die Atoms haben z.B. nicht die seit dem Pentium Pro eingeführte Out-of-Order-Architektur. Je teurer ein Prozessor ist, desto mehr Spezialfähigkeiten hat er. 2018, während ich diesen Beitrag schreibe, gibt es z.B. bei den Fließkommaeinheiten, die Generationen AVX2, AVX3 und AVX512. Ein Programm, das AVX512 nutzt, würde nur auf den teuersten Prozessoren von Intel laufen, aber allen anderen mit einem Fehler abbrechen. Noch problematischer: AMD kopiert nicht die Prozessoren von Intel, sondern entwickelt eigene. Der Kernbefehlssatz ist identisch, doch AMD hat eigene Befehle, die es bei Intel nicht gibt und umgekehrt.

Daher wird ein Programm so kompiliert, dass es auf möglichst vielen Prozessoren läuft ohne spezielle Optimierungen. Wer Programme für eine bestimmte Architektur erstellt, das ist z.B. bei Firmen der Fall, wo viele Computer desselben Typs vorhanden sind oder für Supercomputer, kann man diese Optimierungen anwenden. Aufgrund dessen sollte man beim Dhrystone Benchmark die „Nicht-Optimierte“ Version als Referenz für die Geschwindigkeit nehmen.

Der Dhrystone Benchmark

Der Dhrystone Benchmark ist sehr alt, er stammt von 1984. Das ist ein Nachteil, aber auch ein Vorteil. Ein Nachteil, weil er nur grundlegende Fähigkeiten der CPU prüft, zudem ein synthetischer Benchmark, nicht ein konkretes Problem, das ausgeführt wird oder gar die Geschwindigkeit eines Anwendungsprogramms. Das wäre aber nicht möglich. Würde man z. B. die Geschwindigkeit eines Editors im Jahre 1984 messen, so wäre er 2017 gar nicht mehr ausführbar, da das Betriebssystem, z.B. MS-DOS heute nicht mehr nativ ausgeführt werden kann.

Trotzdem gibt der Dhrystone Benchmark die Geschwindigkeit eines Computers relativ gut wieder, weil die meisten Befehle eben die gebräuchlichsten sind und die gab es schon 1984. Bei diesem Benchmark liegt der Hauptaugenmerk auf Zeichenkettenoperationen, wie sie bei Textverarbeitung benötigt werden. Damit kann man Prozessoren über einen Zeitraum von 30 Jahren vergleichen. Die Ausgabe ist für heutige Verhältnisse etwas kryptisch, es sind VAX-MIPS. Vereinfacht gesagt gibt der Benchmark an, wie schnell der Prozessor verglichen mit einer VAX 11/780 ist. Die VAX 11/780 ist einer der bekanntesten und meistverkauftesten Minicomputer und er erschien schon 1977. 1984 erreichten die schnellsten Mikroprozessoren wie der 80286 oder 68000 die Geschwindigkeit einer VAX, wie der Dhrystone Benchmark belegte. Das war natürlich für das Ego äußert förderlich, kostete doch ein solcher High-Power-PC eine vierstellige Summe, während eine VAX 11/780 so groß wie eine Kommode war und im fünfstelligen Bereich lag. Allerdings hat Digital Equipment, Hersteller der VAX, wenig später auch eine VAX in PC-Größe auf den Markt gebracht.

Die Angabe „VAX-MIPS“ gibt an, dass der Programmautor annahm, dass eine VAX 1 Million Befehle pro Sekunde ausführt (MIPS: Million Instructions per Second). In der Realität führte die VAX aber nur 0,5 MIPS pro Sekunde durch. So decken sich auch die offiziellen MIPS-Angaben des Intel 80386 (9,6 MIPD bei 40 MHz) mit dem Messergebnis des Dhrystone Benchmarks (4,32 ~ 0,5 * 9,6).

Die Tabelle habe ich einer anderen Webseite übernommen. Ich habe mich auf einen Prozessor pro Generation beschränkt. Die Tabelle enthält zahlreiche Prozessoren, darunter auch verschiedene Taktfrequenzen eines Prozessors oder von verschiedenen Herstellern (früher wurden x86 Prozessoren auch von IBM, Cyrus und anderen Firmen gefertigt. Innerhalb einer Generation steigt die Geschwindigkeit aber meist linear mit der Taktfrequenz an.

Bei Intel hatten die Prozessoren zuerst Nummern (8086, 80286, 80386, 80486), dann Pentium (Pentium, Pentium Pro, Pentium II, Pentium III und Pentium 4). Das letzte Schema ist das der Core. Benennung. Nach einer Übergangszeit gibt es heute eine vierstellige Nummer. Die erste Ziffer gibt die Generation an. Aktuell im Januar 2018 ist die Ziffer „8“. Gefertigt wercen aber auch noch die Vorgängergeneration mit den Ziffern 6 und 7. Die letzten drei Ziffern dahinter geben die Typennummer an, hier gilt: je höher desto leistungsfähiger. Um das Ganze noch zu verkomplizieren, gibt es mehrere Serien. Celeron und Pentium stellen die Einstiegsklasse da, in der Icore Serie werden die Prozessoren in den Serien i3, i5 und i7 leistungsfähiger und ganz oben die Xeon Serie für Server.

Oberflächlich betrachtet gibt es einen enormen Geschwindigkeitsunterschied zwischen dem ersten Prozessor in der Liste, dem 80386 und dem Letzten, einem Prozessor der Haswell-Generation (er erschien 2014). Dieser Unterschied relativiert sich, wenn man die VAX-MIPS durch die Taktfrequenz teilt. Das Ergebnis habe ich in diesem ersten Schaubild zusammengefasst. Er gibt pro Prozessor die Angabe VAX-MIPS/MHz wieder. In Diagramm 1 für die nicht optimiere Version, in Diagramm 2 für die optimierte Version.

Es ist der „nicht-optimierte“ Wert, stellvertretend für normale Programme um den Faktor 4 gestiegen, der optimierte Wert etwa den Faktor 8. In beiden Diagrammen fällt der Pentium 4 auf. Seine Architektur war auf hohe Taktgeschwindigkeit optimiert, dafür nahm man eine langsamere Verarbeitung der Befehle in Kauf. Er hatte weniger Parallelität als sein Vorgänger, der Pentium III. Der Takt konnte auch rasch von 1,2 auf 3 GHz gesteigert werden, dann jedoch nur noch langsam. Der Pentium 4 erwies sich als technologische Sackgasse. Die heutigen Prozessoren der Core-Generation basieren auf dem Pentium M, der deswegen auch mit aufgeführt ist. Seine Architektur basiert aber letztendlich auf dem Pentium Pro. Betrachtet man das Diagramm und die Tabelle, so fällt auf, das bei nicht-optimierten Programmen seit dem Pentium Pro von 1995 also mehr als 20 Jahren ist der IPC-Wert von 0,46 auf maximal 0,542 gestiegen. Bei den optimierten Dhrystone sieht es besser aus, das liegt daran, dass seit der Core Generation es mehrere Kerne pro Prozessor gibt und der Compiler so den Code auf mehrere Kerne verteilen kann.

Betrachtet man nun die absolute Performance, so zeigt sich in Diagramm 3, dass der Anstieg lange langsam war. Die Taktfrequenzen stiegen anfangs langsam an. Der 8086 erschien 1978 mit maximal 8 MHz, in 15 Jahren konnte man ihn bis 1993 beim 80486 auf 50 MHz, also um den Faktor 6 steigern. Dann stieg der Takt einige Jahre lang rasant an, um im Jahr 2003 3.000 MHz zu erreichen – in zehn Jahren der Faktor 50. Damit war eine physikalische Grenze erreicht, da bei jedem Takt Transistoren Strom abgeben, steigt die Verlustleistung bei steigendem Takt rapide an. Diese Leckströme führten auch zum Ende der Pentium 4 Architektur die 7 bis 9 GHz erreichen sollte. Seitdem sind die Taktraten nur wenig angestiegen, was sich dann auch im Plateau in den letzten Jahren niederschlägt.

Dhrystone VAX-MIPS

In der Summe ist es heute so, dass ein aktueller PC der Skylake/Kabylake-Generation (2018 aktuell) zwar schneller aber nicht mehr signifikant schneller als einer der Ivy-/Sandybridge Generation von 2012/13 ist. Da seit 2017 AMD mit der Zen-Architektur wieder attraktive CPU‘s fertigt, setzt heute Intel eher auf mehr Kerne um sich besser zu positionieren, bisher aber nur im Spitzensegment.

Prozessor MHz Kerne Dry1 Opt VAX-MIPS Dry1 NoOpt VAX-MIPS Dry 2 Opt VAX-MIPS Dry 2 NoOpT VAX-MIPS Dry1 MIPS/MHZ opt Dry1 MIPS/MHZ Noopt Dry2 MIPS/MHZ opt Dry2 MIPS/MHZ Noopt Jahr
80386 40 1 17,5 4,32 13,7 4,53 ,438 ,108 ,343 ,113 1991
80486 50 1 26,6 7,89 22,4 7,89 ,532 ,158 ,448 ,158 1993
Pentium 100 1 169 31,8 122 32,2 1,690 ,318 1,220 ,322 1996
Pentium Pro 200 1 373 92,4 312 91,9 1,865 ,462 1,560 ,460 1997
Pentium II 300 1 544 132 477 136 1,813 ,440 1,590 ,453 1998
Pentium III 600 1 1105 263 929 270 1,842 ,438 1,548 ,450 2000
Pentium 4 1700 1 2262 239 1843 243 1,331 ,141 1,084 ,143 2002
Pentium 4 3866 1 5787 511 4222 480 1,497 ,132 1,092 ,124 2003
Pentium M 1862 1 4082 954 3933 945 2,192 ,512 2,112 ,508 2003
Core 2 Duo 2400 2 7145 1198 6445 1121 2,977 ,499 2,685 ,467 2006
Core I7 930 3066 4 9826 1662 8464 1661 3,205 ,542 2,761 ,542 2010
Core I7 3930 3800 6 13871 1960 11197 1972 3,650 ,516 2,947 ,519 2012
Core i7 4820K 3900 6 14136 1958 11867 1981 3,625 ,502 3,043 ,508 2014


Sitemap Kontakt Neues Impressum / Datenschutz Hier werben / Your advertisment here Buchshop Bücher vom Autor Top 99