Warum sind neuere Prozessorgenerationen bei gleicher Taktrate schneller?

38

Warum wäre beispielsweise ein 2,66-GHz-Dual-Core-Core i5 schneller als ein 2,66-GHz-Core-2-Duo, der auch Dual-Core ist?

Liegt das an neueren Befehlen, die Informationen in weniger Taktzyklen verarbeiten können? Welche anderen architektonischen Veränderungen sind damit verbunden?

Diese Frage taucht häufig auf und die Antworten sind in der Regel die gleichen. Dieser Beitrag soll eine endgültige, kanonische Antwort auf diese Frage geben. Fühlen Sie sich frei, die Antworten zu bearbeiten, um zusätzliche Details hinzuzufügen.

agz
quelle
Verwandte: Anweisung pro Zyklus vs erhöhte
Zykluszahl
Wow, beide Durchbrüche und Davids sind großartige Antworten ... Ich weiß nicht, welche ich als richtig auswählen soll: P
agz
Auch besserer Befehlssatz und mehr Register. zB MMX (sehr alt) und x86_64 (Als AMD x86_64 erfand, fügten sie im 64-Bit-Modus einige Verbesserungen hinzu, die die Kompatibilität beeinträchtigten. Sie stellten fest, dass die Vergleichbarkeit ohnehin beeinträchtigt sein würde).
Strg-Alt-Delor
Für wirklich große Verbesserungen der x86-Architektur wird ein neuer Befehlssatz benötigt, aber wenn dies getan würde, wäre es kein x86 mehr. Es wäre ein PowerPC, Mips, Alpha, ... oder ARM.
Strg-Alt-Delor

Antworten:

30

Es liegt normalerweise nicht an neueren Anweisungen. Dies liegt nur daran, dass der Prozessor weniger Befehlszyklen benötigt, um dieselben Befehle auszuführen. Dies kann eine Vielzahl von Gründen haben:

  1. Große Caches bedeuten weniger Zeitverschwendung beim Warten auf Speicher.

  2. Mehr Ausführungseinheiten bedeuten weniger Wartezeit für die Ausführung eines Befehls.

  3. Eine bessere Verzweigungsvorhersage bedeutet weniger Zeitaufwand für die spekulative Ausführung von Befehlen, die eigentlich nie ausgeführt werden müssen.

  4. Verbesserungen an der Ausführungseinheit bedeuten, dass weniger Zeit auf den Abschluss der Anweisungen gewartet werden muss.

  5. Kürzere Pipelines bedeuten, dass sich Pipelines schneller füllen.

Und so weiter.

David Schwartz
quelle
Ich glaube, die Core-Architektur hat eine 14-15-stufige Pipeline ( ref ), und die Nehalem / Sandy Bridge hat ungefähr eine 14-17-stufige Pipeline ( ref ).
Durchbruch
Kürzere Pipelines sind leichter zu füllen und reduzieren die Strafen für das Spülen der Pipelines. Längere Pipelines erlauben im Allgemeinen höhere Taktraten.
David Schwartz
Das meine ich, ich denke, die Pipeline-Tiefe selbst ist gleich geblieben oder hat zugenommen . Auch in den Intel 64- und IA-32-SW-Entwicklerhandbüchern ist die letzte Erwähnung einer Pipelineänderung in Band 3 enthalten. 1, Ch. 2.2.3 / 2.2.4 (die Intel Core / Atom-Mikroarchitekturen).
Durchbruch
2
Der Versuch, die Taktraten zu erhöhen, hat zu längeren Pipelines geführt. Das wurde gegen Ende der NetBurst-Ära lächerlich (bis zu 31 Stufen!). Heutzutage ist es eine heikle technische Entscheidung mit Vor- und Nachteilen in beide Richtungen.
David Schwartz
Verbesserungen bei der Verzweigungsvorhersage, Neuanordnung / Optimierung / Verbesserung der Multiplexereinheit, Miniaturisierung (reduzierte Wärme) und Chip-Design (verbesserte Ein-Chip-Pfade / Schaltkreise usw.), ...
Shaun Wilson
40

Der Entwurf eines Prozessors für hohe Leistung ist weit mehr als nur die Erhöhung der Taktrate. Es gibt zahlreiche andere Möglichkeiten, die Leistung zu steigern, die durch Moores Gesetz ermöglicht werden und maßgeblich zum Design moderner Prozessoren beitragen.

Die Taktraten können nicht unbegrenzt steigen.

  • Auf den ersten Blick scheint es, als würde ein Prozessor einfach einen Befehlsstrom nach dem anderen ausführen und die Leistung durch höhere Taktraten steigern. Eine Erhöhung der Taktrate allein reicht jedoch nicht aus. Der Stromverbrauch und die Wärmeleistung steigen mit steigenden Taktraten.

  • Bei sehr hohen Taktraten ist eine deutliche Erhöhung der CPU-Kernspannung erforderlich. Da die TDP mit dem Quadrat des V- Kerns zunimmt , erreichen wir schließlich einen Punkt, an dem ein übermäßiger Stromverbrauch, eine übermäßige Wärmeabgabe und ein übermäßiger Kühlbedarf einen weiteren Anstieg der Taktrate verhindern. Diese Grenze wurde 2004 in den Tagen des Pentium 4 Prescott erreicht . Während die jüngsten Verbesserungen der Energieeffizienz geholfen haben, sind signifikante Erhöhungen der Taktrate nicht mehr möglich. Siehe: Warum haben CPU-Hersteller aufgehört, die Taktraten ihrer Prozessoren zu erhöhen?

Grafik der Lager-Taktraten in hochmodernen PC-Enthusiasten über die Jahre.
Grafik der Lager-Taktraten in hochmodernen PC-Enthusiasten über die Jahre. Bildquelle

  • Gemäß dem Moore'schen Gesetz wurde eine Reihe von Techniken implementiert, die die Leistung steigern , da sich die Anzahl der Transistoren auf einer integrierten Schaltung alle 18 bis 24 Monate verdoppelt, was hauptsächlich auf die Schrumpfung zurückzuführen ist. Diese Techniken wurden im Laufe der Jahre verfeinert und perfektioniert, sodass über einen bestimmten Zeitraum mehr Anweisungen ausgeführt werden können. Diese Techniken werden unten diskutiert.

Scheinbar sequentielle Befehlsströme können oft parallelisiert werden.

  • Obwohl ein Programm einfach aus einer Reihe von Anweisungen bestehen kann, die nacheinander ausgeführt werden sollen, können diese Anweisungen oder Teile davon sehr oft gleichzeitig ausgeführt werden. Dies wird als Parallelität auf Befehlsebene (ILP) bezeichnet . Die Nutzung von ILP ist für die Erzielung einer hohen Leistung von entscheidender Bedeutung, und moderne Prozessoren verwenden dazu zahlreiche Techniken.

Das Pipelining zerlegt Anweisungen in kleinere Teile, die parallel ausgeführt werden können.

  • Jeder Befehl kann in eine Folge von Schritten unterteilt werden, von denen jeder von einem separaten Teil des Prozessors ausgeführt wird. Durch das Instruction Pipelining können mehrere Befehle nacheinander ausgeführt werden, ohne dass gewartet werden muss, bis jeder Befehl vollständig abgeschlossen ist. Pipelining ermöglicht höhere Taktraten: Indem ein Schritt jedes Befehls in jedem Taktzyklus abgeschlossen ist, würde für jeden Zyklus weniger Zeit benötigt, als wenn ganze Befehle einzeln ausgeführt werden müssten.

  • Die klassische RISC-Pipeline enthält fünf Stufen: Befehlsabruf, Befehlsdecodierung, Befehlsausführung, Speicherzugriff und Rückschreiben. Moderne Prozessoren unterteilen die Ausführung in viele weitere Schritte, wodurch eine tiefere Pipeline mit mehr Stufen erzeugt wird (und die erreichbaren Taktraten erhöht werden, wenn jede Stufe kleiner ist und weniger Zeit in Anspruch nimmt). Dieses Modell sollte jedoch ein grundlegendes Verständnis der Funktionsweise von Pipelining vermitteln.

Diagramm einer fünfstufigen Anweisungspipeline
Bildquelle

Pipelining kann jedoch Gefahren mit sich bringen, die behoben werden müssen, um eine korrekte Programmausführung zu gewährleisten.

  • Da verschiedene Teile jeder Anweisung gleichzeitig ausgeführt werden, können Konflikte auftreten, die die korrekte Ausführung beeinträchtigen. Diese werden Gefahren genannt . Es gibt drei Arten von Gefahren: Daten, Struktur und Kontrolle.

  • Datenrisiken treten auf, wenn Anweisungen dieselben Daten zur selben Zeit oder in der falschen Reihenfolge lesen und ändern, was möglicherweise zu falschen Ergebnissen führt. Strukturelle Gefahren treten auf, wenn mehrere Anweisungen gleichzeitig einen bestimmten Teil des Prozessors verwenden müssen. Steuerungsrisiken treten auf, wenn eine bedingte Verzweigungsanweisung auftritt.

  • Diese Gefahren können auf verschiedene Arten behoben werden. Die einfachste Lösung besteht darin, die Pipeline einfach anzuhalten und die Ausführung einer oder mehrerer Anweisungen vorübergehend anzuhalten, um korrekte Ergebnisse sicherzustellen. Dies wird nach Möglichkeit vermieden, da es die Leistung verringert. Bei Datenrisiken werden Techniken wie die Operandenweiterleitung verwendet, um Verzögerungen zu reduzieren. Kontrollrisiken werden durch eine Verzweigungsvorhersage behandelt , die eine besondere Behandlung erfordert und im nächsten Abschnitt behandelt wird.

Die Verzweigungsvorhersage wird verwendet, um Steuerungsrisiken zu beheben, die die gesamte Pipeline stören können.

  • Besonders schwerwiegend sind Kontrollrisiken, die auftreten, wenn eine bedingte Verzweigung auftritt . Verzweigungen führen die Möglichkeit ein, dass die Ausführung an einer anderen Stelle im Programm fortgesetzt wird und nicht nur beim nächsten Befehl im Befehlsstrom, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist.

  • Da der nächste auszuführende Befehl erst bestimmt werden kann, nachdem die Verzweigungsbedingung ausgewertet wurde, können in Abwesenheit nach einer Verzweigung keine Befehle in die Pipeline eingefügt werden. Die Pipeline wird daher geleert ( gespült ), was fast so viele Taktzyklen verschwenden kann, wie sich Stufen in der Pipeline befinden. Verzweigungen treten in Programmen häufig auf, daher können Kontrollrisiken die Prozessorleistung erheblich beeinträchtigen.

  • Die Verzweigungsvorhersage behebt dieses Problem, indem sie errät, ob eine Verzweigung vorgenommen wird. Der einfachste Weg, dies zu tun, ist einfach anzunehmen, dass Zweige immer oder nie genommen werden. Moderne Prozessoren verwenden jedoch viel ausgefeiltere Techniken für eine höhere Vorhersagegenauigkeit. Im Wesentlichen verfolgt der Prozessor frühere Verzweigungen und verwendet diese Informationen auf verschiedene Arten, um den nächsten auszuführenden Befehl vorherzusagen. Die Pipeline kann dann mit Anweisungen vom richtigen Ort basierend auf der Vorhersage gespeist werden.

  • Wenn die Vorhersage falsch ist, müssen natürlich alle Anweisungen, die nach dem Löschen der Verzweigung in die Pipeline eingegeben wurden, gelöscht werden, wodurch die Pipeline geleert wird. Infolgedessen wird die Genauigkeit des Verzweigungsprädiktors immer kritischer, je länger Pipelines werden. Spezifische Techniken zur Verzweigungsvorhersage gehen über den Rahmen dieser Antwort hinaus.

Caches werden verwendet, um Speicherzugriffe zu beschleunigen.

  • Moderne Prozessoren können Befehle und Daten viel schneller ausführen, als im Hauptspeicher darauf zugegriffen werden kann. Wenn der Prozessor auf den RAM zugreifen muss, kann die Ausführung für längere Zeit unterbrochen werden, bis die Daten verfügbar sind. Um diesen Effekt abzuschwächen, enthält der Prozessor kleine Hochgeschwindigkeitsspeicherbereiche, die als Caches bezeichnet werden.

  • Aufgrund des begrenzten verfügbaren Platzes auf dem Prozessorchip sind die Caches sehr begrenzt. Um diese begrenzte Kapazität optimal zu nutzen, speichern Caches nur die Daten, auf die zuletzt oder häufig zugegriffen wurde ( zeitliche Lokalität ). Da Speicherzugriffe in der Regel in bestimmten Bereichen ( räumliche Lokalität ) zusammengefasst werden, werden auch Datenblöcke in der Nähe des zuletzt zugegriffenen im Cache gespeichert. Siehe: Bezugsort

  • Caches sind auch in mehreren Ebenen unterschiedlicher Größe organisiert, um die Leistung zu optimieren, da größere Caches in der Regel langsamer als kleinere Caches sind. Beispielsweise kann ein Prozessor einen Level-1-Cache (L1-Cache) haben, der nur 32 KB groß ist, während sein Level-3-Cache (L3-Cache) mehrere Megabyte groß sein kann. Die Größe des Caches sowie die Assoziativität des Caches, die sich darauf auswirkt, wie der Prozessor das Ersetzen von Daten in einem vollständigen Cache verwaltet, wirken sich erheblich auf die Leistungsverbesserungen aus, die durch einen Cache erzielt werden.

Die Ausführung bei Nichtbeachtung der Reihenfolge verringert die Anzahl der Verzögerungen aufgrund von Gefahren, indem unabhängige Anweisungen zuerst ausgeführt werden.

  • Nicht jeder Befehl in einem Befehlsstrom hängt voneinander ab. Zum Beispiel, obwohl a + b = cmuss ausgeführt werden c + d = e, a + b = cund d + e = fsind unabhängig und können zur gleichen Zeit ausgeführt werden.

  • Out-of-Order-Ausführung nutzt diese Tatsache, um die Ausführung anderer unabhängiger Befehle zu ermöglichen, während ein Befehl angehalten ist. Anstatt Anweisungen im Gleichschritt nacheinander ausführen zu müssen, wird Planungshardware hinzugefügt, damit unabhängige Anweisungen in beliebiger Reihenfolge ausgeführt werden können. Anweisungen werden versandt zu einer Befehlswarteschlange und erteilt an den entsprechenden Teil des Prozessorswenn die erforderlichen Daten verfügbar wird. Auf diese Weise binden Befehle, die nicht mehr auf Daten von einem früheren Befehl warten, keine späteren Befehle, die unabhängig sind.

Diagramm der nicht ordnungsgemäßen Ausführung
Bildquelle

  • Für die Ausführung außerhalb der Reihenfolge sind mehrere neue und erweiterte Datenstrukturen erforderlich. Die oben erwähnte Anweisungswarteschlange, die Reservierungsstation , wird verwendet, um Anweisungen zu halten, bis die zur Ausführung erforderlichen Daten verfügbar werden. Der Nachbestellungspuffer (Re-Order Buffer, ROB) wird verwendet, um den Status laufender Anweisungen in der Reihenfolge zu verfolgen, in der sie empfangen wurden, damit die Anweisungen in der richtigen Reihenfolge ausgeführt werden. Eine Registerdatei , die von der Architektur über die Anzahl der Register vorgesehen erstreckt sich für benötigt werden Registerumbenennungs- , die aufgrund der Notwendigkeit abhängig zu verhindern ansonsten unabhängige Befehle helfen , immer die begrenzte Anzahl von Registern in der Architektur zur Verfügung gestellt zu teilen.

Superskalare Architekturen ermöglichen die gleichzeitige Ausführung mehrerer Befehle innerhalb eines Befehlsstroms.

  • Die oben diskutierten Techniken erhöhen nur die Leistung der Anweisungspipeline. Diese Techniken alleine erlauben es nicht, mehr als einen Befehl pro Taktzyklus zu vervollständigen. Es ist jedoch häufig möglich, einzelne Anweisungen innerhalb eines Anweisungsstroms parallel auszuführen, z. B. wenn sie nicht voneinander abhängig sind (wie im Abschnitt über die Ausführung von Anweisungen außerhalb der Reihenfolge oben erläutert).

  • Superskalare Architekturen nutzen diese Parallelität auf Befehlsebene, indem sie das gleichzeitige Senden von Befehlen an mehrere Funktionseinheiten ermöglichen. Der Prozessor kann mehrere Funktionseinheiten eines bestimmten Typs (wie z. B. Ganzzahl-ALUs) und / oder verschiedene Typen von Funktionseinheiten (wie z. B. Gleitkomma- und Ganzzahl-Einheiten) aufweisen, an die Befehle gleichzeitig gesendet werden können.

  • In einem Superscalar-Prozessor werden Befehle wie bei einem Entwurf außerhalb der Reihenfolge geplant, es gibt jedoch jetzt mehrere Ausgabeports , über die verschiedene Befehle gleichzeitig ausgegeben und ausgeführt werden können. Die erweiterte Befehlsdecodierschaltung ermöglicht es dem Prozessor, mehrere Befehle gleichzeitig in jedem Taktzyklus zu lesen und die Beziehungen zwischen ihnen zu bestimmen. Ein moderner Hochleistungsprozessor kann abhängig von den jeweiligen Befehlen bis zu acht Befehle pro Taktzyklus einplanen. Auf diese Weise können Prozessoren mehrere Anweisungen pro Taktzyklus ausführen. Siehe: Haswell Execution Engine auf AnandTech

Diagramm der Haswell-Ausführungsmaschine
Bildquelle

  • Superskalare Architekturen sind jedoch sehr schwierig zu entwerfen und zu optimieren. Das Überprüfen auf Abhängigkeiten zwischen Befehlen erfordert eine sehr komplexe Logik, deren Größe mit zunehmender Anzahl gleichzeitiger Befehle exponentiell skaliert werden kann. Abhängig von der Anwendung gibt es nur eine begrenzte Anzahl von Befehlen in jedem Befehlsstrom, die gleichzeitig ausgeführt werden können, sodass die Bemühungen, ILP besser auszunutzen, unter sinkenden Renditen leiden.

Es werden erweiterte Anweisungen hinzugefügt, die komplexe Vorgänge in kürzerer Zeit ausführen.

  • Mit zunehmenden Transistorbudgets können erweiterte Anweisungen implementiert werden, mit denen komplexe Vorgänge in einem Bruchteil der Zeit ausgeführt werden können, die sie sonst in Anspruch nehmen würden. Beispiele hierfür sind Vektor-Befehlssätze wie SSE und AVX , die Berechnungen für mehrere Daten gleichzeitig ausführen, und der AES-Befehlssatz, der die Datenverschlüsselung und -entschlüsselung beschleunigt.

  • Moderne Prozessoren verwenden zur Durchführung dieser komplexen Operationen Mikrooperationen (μops) . Komplexe Anweisungen werden in Sequenzen von μops decodiert, die in einem dedizierten Puffer gespeichert und für die Ausführung einzeln geplant werden (soweit dies durch Datenabhängigkeiten zulässig ist). Dies gibt dem Prozessor mehr Raum, um ILP auszunutzen. Um die Leistung weiter zu verbessern, kann ein spezieller μop-Cache verwendet werden, um kürzlich decodierte μops zu speichern, so dass die μops für kürzlich ausgeführte Anweisungen schnell nachgeschlagen werden können.

  • Das Hinzufügen dieser Anweisungen erhöht jedoch nicht automatisch die Leistung. Neue Anweisungen können die Leistung nur steigern, wenn eine Anwendung für deren Verwendung geschrieben wurde. Die Annahme dieser Anweisungen wird durch die Tatsache behindert, dass Anwendungen, die sie verwenden, auf älteren Prozessoren, die sie nicht unterstützen, nicht funktionieren.


Wie verbessern diese Techniken die Prozessorleistung im Laufe der Zeit?

  • Die Pipelines sind im Laufe der Jahre länger geworden, wodurch sich der Zeitaufwand für die einzelnen Phasen verringert und höhere Taktraten ermöglicht werden. Längere Pipelines erhöhen jedoch unter anderem den Nachteil einer falschen Verzweigungsvorhersage, sodass eine Pipeline nicht zu lang sein kann. Bei dem Versuch, sehr hohe Taktraten zu erreichen, verwendete der Pentium 4-Prozessor sehr lange Pipelines mit bis zu 31 Stufen in Prescott . Um Leistungsdefizite zu verringern, würde der Prozessor versuchen, Anweisungen auch dann auszuführen, wenn sie fehlschlagen könnten, und dies so lange versuchen, bis sie erfolgreich waren . Dies führte zu einem sehr hohen Stromverbrauch und verringerte die durch das Hyper-Threading erzielte Leistung . Neuere Prozessoren verwenden so lange keine Pipelines mehr, zumal die Taktraten-Skalierung eine Wand erreicht hat.Haswell verwendet eine Pipeline mit einer Länge zwischen 14 und 19 Stufen. Architekturen mit geringerer Leistung verwenden kürzere Pipelines (Intel Atom Silvermont hat 12 bis 14 Stufen).

  • Die Genauigkeit der Verzweigungsvorhersage wurde mit fortschrittlicheren Architekturen verbessert, wodurch die Häufigkeit von Pipeline-Löschvorgängen, die durch Fehlvorhersagen verursacht werden, verringert wurde und mehr Befehle gleichzeitig ausgeführt werden können. Angesichts der Länge der Pipelines in heutigen Prozessoren ist dies entscheidend für die Aufrechterhaltung einer hohen Leistung.

  • Mit zunehmendem Transistorbudget können größere und effektivere Caches in den Prozessor eingebettet werden, wodurch Verzögerungen aufgrund des Speicherzugriffs verringert werden. Speicherzugriffe können auf modernen Systemen mehr als 200 Zyklen erfordern. Daher ist es wichtig, den Zugriff auf den Hauptspeicher so gering wie möglich zu halten.

  • Neuere Prozessoren können ILP durch eine erweiterte superskalare Ausführungslogik und "breitere" Designs besser nutzen, mit denen mehr Befehle gleichzeitig dekodiert und ausgeführt werden können. Die Haswell- Architektur kann vier Befehle dekodieren und 8 Mikrooperationen pro Taktzyklus auslösen. Durch das Erhöhen des Transistorbudgets können mehr Funktionseinheiten wie Ganzzahl-ALUs im Prozessorkern enthalten sein. Wichtige Datenstrukturen, die bei der Ausführung von In-Order- und Superscalar-Befehlen verwendet werden, z. B. die Reservierungsstation, der Umordnungspuffer und die Registerdatei, wurden in neueren Designs erweitert, sodass der Prozessor ein breiteres Fenster mit Befehlen durchsuchen kann, um deren ILP zu nutzen. Dies ist eine wichtige Triebfeder für die Leistungssteigerung heutiger Prozessoren.

  • Neuere Prozessoren enthalten komplexere Anweisungen, und immer mehr Anwendungen verwenden diese Anweisungen, um die Leistung zu verbessern. Fortschritte in der Compilertechnologie, einschließlich Verbesserungen bei der Befehlsauswahl und der automatischen Vektorisierung , ermöglichen eine effektivere Verwendung dieser Befehle.

  • Darüber hinaus wird durch eine stärkere Integration von Teilen, die sich zuvor außerhalb der CPU befanden, wie Northbridge, Speichercontroller und PCIe-Lanes, die E / A- und Speicherlatenz verringert. Dies erhöht den Durchsatz, indem Stalls reduziert werden, die durch Verzögerungen beim Zugriff auf Daten von anderen Geräten verursacht werden.

bwDraco
quelle
6
Dies könnte einen guten Blogeintrag ergeben.
Mokubai
Verbesserungen in der Energieeffizienz sind auch ein Faktor in Anbetracht der Energiewand.
Paul A. Clayton
Es geht nicht mehr darum, wie schnell die Uhr ist, sondern darum, wie viele Befehle pro Taktzyklus verarbeitet werden können. Wenn ein Prozessor über die Bandbreite verfügt, um 4x so viele Daten vom Speicher zum Cache zu verarbeiten, ist dieser Prozessor effektiv 4x schneller, selbst wenn er einen langsameren Takt hat. Aus diesem Grund hat AMD große Probleme, die Leistung der Intel-Produkte zu erreichen
Ramhound,
18

Die absolute Referenz sind die Software-Entwicklerhandbücher für Intel 64- und IA-32-Architekturen . Sie beschreiben die Änderungen zwischen den Architekturen im Detail und sind eine hervorragende Ressource, um die x86-Architektur zu verstehen.

Ich würde empfehlen, dass Sie die kombinierten Bände 1 bis 3C herunterladen (erster Download-Link auf dieser Seite). Band 1 Kapitel 2.2 enthält die gewünschten Informationen.


Einige allgemeine Unterschiede, die in diesem Kapitel aufgeführt sind und vom Kern zur Mikroarchitektur von Nehalem / Sandy Bridge führen, sind:

  • Verbesserte Verzweigungsvorhersage, schnellere Wiederherstellung nach Fehlvorhersagen
  • HyperThreading-Technologie
  • integrierter Speichercontroller, neue Cache-Hirearchy
  • schnellere Gleitkomma-Ausnahmebehandlung (nur Sandy Bridge)
  • LEA-Bandbreitenverbesserung (nur Sandy Bridge)
  • AVX-Befehlserweiterungen (nur Sandy Bridge)

Die vollständige Liste finden Sie unter dem oben angegebenen Link (Vol. 1, Kap. 2.2).

Durchbruch
quelle
0

Alles, was früher gesagt wurde, ist wahr, aber bis zu einem gewissen Grad. Meine Antwort ist kurz: Prozessoren der neuesten Generation sind in erster Linie "schneller", weil sie größere und besser organisierte Caches haben . Dies ist der Hauptfaktor für die Computerleistung. Weitere quantitative Überlegungen finden Sie im " Linux-Magazin: Was steigert die Leistung in HPC ".

Kurz gesagt, für die meisten gängigen Anwendungen (wie bei der SPEC-Sammlung) ist der begrenzende Faktor der Speicher. Wenn eine echte dauerhafte Berechnung ausgeführt wird, werden alle Caches mit Daten geladen, aber jeder Cache-Fehler führt dazu, dass die CPU-Ausführungspipe blockiert und wartet. Das Problem ist, dass die Parallelität auf Befehlsebene, egal wie komplex die CPU-Pipeline ist oder wie besser die Befehle sind, immer noch ziemlich begrenzt ist (mit Ausnahme einiger besonders optimierter, vorab abgerufener Fälle). Sobald eine kritische Abhängigkeit gefunden wurde, endet jede Parallelität in fünf bis zehn CPU-Takten, während Hunderte von CPU-Takten erforderlich sind, um eine Caheline zu entfernen und eine neue aus dem Hauptspeicher zu laden. Der Prozessor wartet also darauf, nichts zu tun. Dieses ganze Konzept gilt auch für Multicores.

Wenn Sie also einen "schnelleren" PC wünschen, kaufen Sie ihn mit einer CPU, die den größten Cache bietet, den Sie sich leisten können.

Ale..chenski
quelle
-1

Weil sie verbessern, wie viel Anweisungen pro Zyklus (Takt) die CPU durch Einbeziehen höherer Ausführungseinheiten (Recheneinheiten) ausführen kann, verbessern sie aus diesem Grund den IPC, verringern außerdem Cache-, RAM-, Dekodierungs-, Abruf-Latenzzeiten und verbessern sich Operationen außerhalb der Reihenfolge und Verzweigungsvorhersage, nach denen mehr Cache hinzugefügt wird, während die Latenz geringer ist. Cache mit höherer Bandbreite. Hin und wieder neue Anweisungen hinzufügen. Reduzieren Sie die gewünschten Zyklen pro Anweisung (CPI)

Taktraten sind nur ein Teil der Leistung einer CPU, eine wesentliche Komponente, aber unglücklicherweise stießen die Methodenknoten in den letzten zehn Jahren an eine Wand, und trotz der guten Wasserkühlung kann nichts über fünf,0–5,2 GHz hinausgehen , ohne auf Trockeneis oder flüssigen Stickstoff zurückzugreifen.

mandar shewale
quelle