Warum sind neuere Prozessorgenerationen bei gleichem Takt schneller?

6710
agz

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

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

Diese Frage wird oft gestellt und die Antworten sind normalerweise gleich. Dieser Beitrag soll eine endgültige, kanonische Antwort auf diese Frage geben. Fühlen Sie sich frei, die Antworten zu bearbeiten, um weitere Details hinzuzufügen.

34
Verwandte: [Anweisung pro Zyklus vs. erhöhte Zykluszahl] (http://superuser.com/questions/363856/instruction-per-cycle-vs-erhöhte-Zykluszahl) Ƭᴇcʜιᴇ007 vor 11 Jahren 0
Wow, sowohl Durchbrüche als auch Davids sind großartige Antworten ... Ich weiß nicht, was ich als richtig auswählen muss: P agz vor 11 Jahren 0
Auch besserer Befehlssatz und mehr Register. B. MMX (jetzt sehr alt) und x86_64 (als AMD x86_64 erfand, fügten sie im 64-Bit-Modus einige Verbesserungen der Kompatibilität hinzu. Sie erkannten, dass die Vergleichbarkeit ohnehin kaputt gehen würde). ctrl-alt-delor vor 8 Jahren 0
Für wirklich große Verbesserungen der x86-Architektur ist ein neuer Befehlssatz erforderlich. Wenn dies jedoch getan wurde, wäre es kein x86 mehr. Es wäre ein PowerPC, Mips, Alpha,… oder ARM. ctrl-alt-delor vor 8 Jahren 0

4 Antworten auf die Frage

38
bwDraco

Die Entwicklung eines Prozessors für hohe Leistung ist weit mehr als nur eine Erhöhung der Taktrate. Es gibt zahlreiche andere Möglichkeiten, die Leistung zu steigern, die durch das Moore-Gesetz und das Design moderner Prozessoren ermöglicht wird.

Die Taktraten können nicht unbegrenzt ansteigen.

  • Auf den ersten Blick scheint es, als würde ein Prozessor einfach einen Befehlsstrom nacheinander ausführen, wobei Leistungssteigerungen durch höhere Taktraten erreicht werden. Die Erhöhung der Taktrate allein reicht jedoch nicht aus. Stromverbrauch und Heizleistung steigen mit steigenden Taktraten.

  • Bei sehr hohen Taktraten wird 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, Wärmeleistung und Kühlanforderungen einen weiteren Anstieg der Taktrate verhindern. Diese Grenze wurde 2004 in den Tagen des Pentium 4 Prescott erreicht . Zwar haben die jüngsten Verbesserungen der Energieeffizienz geholfen, doch sind signifikante Taktanstiege nicht mehr realisierbar. Siehe: Warum haben CPU-Hersteller die Taktraten ihrer Prozessoren nicht weiter erhöht?

Graph of stock clock speeds in cutting-edge enthusiast PCs over the years.
Diagramm der Standardtaktgeschwindigkeiten in innovativen PC-Enthusiasten über die Jahre. Bildquelle

  • Durch das Moore'sche Gesetz wurde eine Beobachtung aufgestellt, die besagt, dass sich die Anzahl der Transistoren in einer integrierten Schaltung alle 18 bis 24 Monate verdoppelt, hauptsächlich infolge von Chipschrumpfungen . Verschiedene Techniken, die die Leistung erhöhen, wurden implementiert. Diese Techniken wurden im Laufe der Jahre verfeinert und perfektioniert, sodass mehr Anweisungen über einen bestimmten Zeitraum ausgeführt werden können. Diese Techniken werden im Folgenden beschrieben.

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, 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 unerlässlich, und moderne Prozessoren verwenden dazu zahlreiche Techniken.

Beim Pipelining werden Anweisungen in kleinere Teile zerlegt, 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 Befehlspipelining können mehrere Anweisungen nacheinander durch diese Schritte geführt werden, ohne darauf warten zu müssen, dass alle Anweisungen vollständig abgeschlossen sind. Das Pipelining ermöglicht höhere Taktraten: Da jeder Befehl in jedem Taktzyklus einen Schritt abgeschlossen hat, wäre für jeden Zyklus weniger Zeit erforderlich, als wenn ganze Befehle einzeln ausgeführt werden müssten.

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

Diagram of a five-stage instruction pipeline
Bildquelle

Beim Pipelining können jedoch Gefahren entstehen, die zur korrekten Programmausführung behoben werden müssen.

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

  • Datengefahren treten auf, wenn Anweisungen dieselben Daten gleichzeitig oder in falscher 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. Kontrollgefahren treten auf, wenn eine bedingte Verzweigungsanweisung auftritt.

  • Diese Gefahren können auf verschiedene Weise behoben werden. Die einfachste Lösung besteht darin, die Pipeline einfach anzuhalten und die Ausführung von Anweisungen oder Anweisungen in der Pipeline vorübergehend anzuhalten, um korrekte Ergebnisse sicherzustellen. Dies wird wann immer möglich vermieden, da dies die Leistung verringert. Bei Datengefahren werden Techniken wie das Weiterleiten von Operanden verwendet, um Wartezeiten zu reduzieren. Steuerrisiken werden durch behandelt Verzweigungsvorhersage, die eine besondere Behandlung erfordert und wird im nächsten Abschnitt behandelt.

Die Verzweigungsvorhersage wird verwendet, um Steuerungsgefahren zu beheben, die die gesamte Pipeline unterbrechen können.

  • Besonders gefährlich sind Kontrollgefahren, die auftreten, wenn ein bedingter Zweig angetroffen wird. Verzweigungen bieten die Möglichkeit, dass die Ausführung an anderer Stelle im Programm fortgesetzt wird, und nicht nur die nächste Anweisung im Befehlsstrom, je nachdem, ob eine bestimmte Bedingung wahr oder falsch ist.

  • Da die nächste auszuführende Anweisung erst nach Auswertung der Verzweigungsbedingung ermittelt werden kann, ist es nicht möglich, nach einer Verzweigung in der Abwesenheit Anweisungen in die Pipeline einzufügen. Die Pipeline wird daher entleert ( gespült ), wodurch nahezu so viele Taktzyklen verschwendet werden können, wie Stufen in der Pipeline vorhanden sind. Verzweigungen treten häufig in Programmen auf, so dass Kontrollrisiken die Prozessorleistung stark beeinträchtigen können.

  • Die Verzweigungsvorhersage behebt dieses Problem, indem er rät, ob eine Verzweigung verwendet 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 die vorherigen Verzweigungen und verwendet diese Informationen auf verschiedene Arten, um den nächsten auszuführenden Befehl vorherzusagen. Die Pipeline kann dann basierend auf der Vorhersage mit Anweisungen vom richtigen Ort gespeist werden.

  • Wenn die Vorhersage falsch ist, müssen natürlich alle Anweisungen, die nach dem Zweig durch die Pipeline gegeben wurden, fallen gelassen werden, wodurch die Pipeline geleert wird. Infolgedessen wird die Genauigkeit des Verzweigungsvorhersagegeräts immer kritischer, je länger die Pipelines werden. Bestimmte Verzweigungsvorhersagetechniken liegen nicht im Rahmen dieser Antwort.

Caches werden verwendet, um Speicherzugriffe zu beschleunigen.

  • Moderne Prozessoren können Anweisungen ausführen und Daten weitaus schneller verarbeiten, als im Hauptspeicher abgerufen 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, sind auf dem Prozessor kleine Hochgeschwindigkeitsspeicherbereiche, sogenannte Caches, enthalten.

  • Aufgrund des begrenzten verfügbaren Platzes auf dem Prozessorchip haben Caches eine sehr geringe Größe. Um diese begrenzte Kapazität optimal zu nutzen, speichern Caches nur die Daten, auf die zuletzt oder auf die am häufigsten zugegriffen wurde ( zeitliche Lokalität ). Da Speicherzugriffe dazu neigen, in bestimmten Bereichen ( räumliche Lokalität ) gebündelt zu werden, werden Datenblöcke in der Nähe dessen, auf den kürzlich zugegriffen wurde, ebenfalls im Cache gespeichert. Siehe: Referenzort

  • Caches sind auch in mehreren Ebenen unterschiedlicher Größe organisiert, um die Leistung zu optimieren, da größere Caches tendenziell langsamer sind als kleinere Caches. Beispielsweise kann ein Prozessor einen Level 1 (L1) -Cache haben, der nur 32 KB groß ist, während sein Level 3 (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 die Ersetzung von Daten in einem vollständigen Cache verwaltet, beeinflusst die durch einen Cache erzielten Leistungsgewinne erheblich.

Die Ausführung außerhalb der Reihenfolge reduziert Stillstände aufgrund von Gefahren, da unabhängige Anweisungen zuerst ausgeführt werden können.

  • Nicht jeder Befehl in einem Befehlsstrom ist voneinander abhängig. Zum Beispiel muss obwohl a + b = cvorher ausgeführt werden c + d = e, a + b = cund d + e = fsind unabhängig und können gleichzeitig ausgeführt werden.

  • Die Ausführung außerhalb der Reihenfolge nutzt diese Tatsache, um die Ausführung anderer unabhängiger Anweisungen zu ermöglichen, während eine Anweisung angehalten wird. Anstatt Anweisungen im Lockstep nacheinander ausführen zu müssen, wird Planungshardware hinzugefügt, um unabhängige Anweisungen in beliebiger Reihenfolge ausführen zu 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 verknüpfen Anweisungen, die auf Daten aus einer früheren Anweisung warten, keine späteren Anweisungen, die unabhängig sind.

Diagram of out-of-order execution
Bildquelle

  • Für die Ausführung außerhalb der Reihenfolge sind mehrere neue und erweiterte Datenstrukturen erforderlich. Die zuvor erwähnte Befehlswarteschlange, die Reservierungsstation, wird verwendet, um Anweisungen zu halten, bis die zur Ausführung erforderlichen Daten verfügbar sind. Der Nachbestellungspuffer (ROB) dient zum Nachverfolgen des Status der gerade ausgeführten Anweisungen in der Reihenfolge, in der sie empfangen wurden, sodass die Anweisungen in der richtigen Reihenfolge ausgeführt werden. Eine Registerdatei, die über die Anzahl von Registern hinausgeht, die von der Architektur selbst bereitgestellt werden, wird zum Umbenennen von Registern benötigt, wodurch verhindert wird, dass ansonsten unabhängige Befehle aufgrund der Notwendigkeit, den von der Architektur bereitgestellten begrenzten Satz von Registern gemeinsam zu nutzen, abhängig werden.

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 allein erlauben nicht, dass mehr als ein Befehl pro Taktzyklus ausgeführt wird. Es ist jedoch oft möglich, einzelne Befehle innerhalb eines Befehlsstroms parallel auszuführen, beispielsweise wenn sie nicht voneinander abhängig sind (wie im Abschnitt zur Ausführung außerhalb der Reihenfolge beschrieben).

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

  • In einem Superscalar-Prozessor werden Anweisungen wie in einem Out-of-Order-Design geplant, aber es gibt jetzt mehrere Ausgabeports, so dass verschiedene Anweisungen gleichzeitig ausgegeben und ausgeführt werden können. Eine erweiterte Befehlsdecodierschaltung ermöglicht dem Prozessor, in jedem Taktzyklus mehrere Befehle gleichzeitig zu lesen und die Beziehungen zwischen ihnen zu bestimmen. Ein moderner Hochleistungsprozessor kann je nach Befehl bis zu acht Anweisungen pro Taktzyklus planen. Auf diese Weise können Prozessoren mehrere Anweisungen pro Taktzyklus ausführen. Siehe: Haswell- Ausführungs-Engine auf AnandTech

Diagram of Haswell execution engine
Bildquelle

  • Superskalare Architekturen sind jedoch sehr schwer zu entwerfen und zu optimieren. Das Prü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 in jedem Befehlsstrom nur eine begrenzte Anzahl von Anweisungen, die gleichzeitig ausgeführt werden können, so dass die Bemühungen, ILP stärker zu nutzen, an sinkenden Ergebnissen leiden.

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

  • Mit steigenden Transistorbudgets wird es möglich, fortschrittlichere Anweisungen zu implementieren, mit denen komplexe Vorgänge in einem Bruchteil der Zeit ausgeführt werden können, die sie sonst benötigen würden. Beispiele umfassen Vektorbefehlssätze wie SSE und AVX, die gleichzeitig Berechnungen an mehreren Datenstücken durchführen, und den AES-Befehlssatz, der die Datenverschlüsselung und -entschlüsselung beschleunigt.

  • Um diese komplexen Vorgänge auszuführen, verwenden moderne Prozessoren Mikrooperationen (µops) . Komplexe Anweisungen werden in Sequenzen von μops decodiert, die in einem dedizierten Puffer gespeichert werden und für die Ausführung einzeln geplant werden (soweit dies durch Datenabhängigkeiten möglich ist). Dies gibt dem Prozessor mehr Raum für die Nutzung von ILP. Zur weiteren Verbesserung der Leistung kann ein spezieller μop-Cache verwendet werden, um kürzlich decodierte μops zu speichern, so dass die μops für kürzlich ausgeführte Befehle 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 mit der Zeit?

  • Die Pipelines sind im Laufe der Jahre länger geworden, wodurch die für die Fertigstellung der einzelnen Phasen benötigte Zeit verkürzt wurde und höhere Taktraten ermöglicht werden. Längere Pipelines erhöhen jedoch unter anderem die Strafe für eine falsche Verzweigungsvorhersage, sodass eine Pipeline nicht zu lang sein kann. Beim Versuch, sehr hohe Taktraten zu erreichen, verwendete der Pentium 4-Prozessor sehr lange Pipelines mit bis zu 31 Stufen in Prescott . Um die Leistungsdefizite zu reduzieren, versucht der Prozessor, die Anweisungen auch dann auszuführen, wenn sie versagen könnten, und versucht es so lange, bis sie erfolgreich sind . Dies führte zu einem sehr hohen Stromverbrauch und reduzierte die durch Hyper-Threading erzielte Leistung . Neuere Prozessoren verwenden so lange keine Pipelines mehr, zumal die Skalierung der Taktrate eine Wand erreicht hat;Haswell verwendet eine Pipeline, die zwischen 14 und 19 Stufen variiert, und Architekturen mit geringerem Stromverbrauch verwenden kürzere Pipelines (Intel Atom Silvermont verfügt über 12 bis 14 Stufen).

  • Die Genauigkeit der Verzweigungsvoraussage wurde mit fortschrittlicheren Architekturen verbessert, wodurch die Häufigkeit von Pipeline-Flushes aufgrund von Fehlvorhersage reduziert wurde und mehr Anweisungen gleichzeitig ausgeführt werden konnten. Angesichts der Länge von Pipelines in heutigen Prozessoren ist dies für die Aufrechterhaltung einer hohen Leistung von entscheidender Bedeutung.

  • Mit steigenden Transistorbudgets können größere und effektivere Caches in den Prozessor eingebettet werden, wodurch das Blockieren aufgrund des Speicherzugriffs reduziert wird. Speicherzugriffe können auf modernen Systemen mehr als 200 Zyklen erfordern, daher muss der Zugriff auf den Hauptspeicher so weit wie möglich reduziert werden.

  • Neuere Prozessoren können ILP besser nutzen, indem sie eine erweiterte, superskalare Ausführungslogik und "breitere" Designs verwenden, die die gleichzeitige Dekodierung und Ausführung von mehr Anweisungen ermöglichen. Die Haswell- Architektur kann vier Befehle decodieren und pro Taktzyklus 8 Mikrooperationen ausführen. Durch das Erhöhen der Transistorbudgets können mehr Funktionseinheiten wie Ganzzahl-ALUs in den Prozessorkern aufgenommen werden. Schlüsseldatenstrukturen, die in einer Out-of-Order- und Superskalar-Ausführung verwendet werden, wie Reservierungsstation, Neuordnungspuffer und Registerdatei, werden in neueren Designs erweitert, sodass der Prozessor ein breiteres Fenster mit Anweisungen durchsuchen kann, um sein ILP auszunutzen. Dies ist eine wichtige Triebfeder für Leistungssteigerungen bei heutigen Prozessoren.

  • In neueren Prozessoren sind komplexere Anweisungen enthalten, 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 Anweisungen.

  • Zusätzlich zu dem Vorstehenden verringert eine größere Integration von Teilen, die zuvor außerhalb der CPU waren, wie Northbridge, Speichercontroller und PCIe-Spuren, die E / A- und Speicherlatenz. Dies erhöht den Durchsatz, indem Verzögerungen beim Zugriff auf Daten von anderen Geräten reduziert werden.

Dies könnte zu einem guten Blogbeitrag führen. Mokubai vor 9 Jahren 6
Verbesserungen der Energieeffizienz sind angesichts der Energiewand ebenfalls ein Faktor. Paul A. Clayton vor 9 Jahren 0
Es geht nicht mehr darum, wie schnell die Uhr ist, sondern wie viele Anweisungen pro Taktzyklus verarbeitet werden können. Verfügt ein Prozessor über die Bandbreite, um 4x so viele Daten vom Speicher zum Cache zu verarbeiten, ist dieser Prozessor selbst bei langsamerer Taktung um das Vierfache schneller. Aus diesem Grund hat AMD so große Probleme, die Leistung von Intel Produkten zu erreichen Ramhound vor 9 Jahren 0
29
David Schwartz

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

  1. Große Caches bedeuten weniger Wartezeit auf Speicher.

  2. Mehr Ausführungseinheiten bedeuten weniger Zeit, um auf den Befehl zu warten.

  3. Bessere Verzweigungsvorhersagen bedeuten weniger Zeit für spekulativ ausgeführte Anweisungen, die niemals ausgeführt werden müssen.

  4. Verbesserungen an der Ausführungseinheit bedeuten weniger Wartezeit für den Abschluss der Anweisungen.

  5. Kürzere Pipelines bedeuten, dass Pipelines schneller gefüllt werden.

Und so weiter.

Ich glaube, die Core-Architektur hat eine 14-15-stufige Pipeline ([ref] (http://www.bit-tech.net/hardware/cpus/2006/07/14/intel_core_2_duo_processors/2)) und das Nehalem / Sandy Bridge verfügt über eine 14-17-Stufen-Pipeline ([ref] (http://www.anandtech.com/show/5057/the-bulldozer-aftermath-delving-even-deeper/2)). Breakthrough vor 11 Jahren 0
Kürzere Pipelines sind leichter voll zu halten und verringern die Strafen von Pipeline-Spülungen. Längere Pipelines erlauben im Allgemeinen höhere Taktraten. David Schwartz vor 11 Jahren 0
Ich meine, die Pipeline-Tiefe selbst ist gleich geblieben oder hat * zugenommen *. Auch in den [Intel 64- und IA-32 SW Dev-Handbüchern] (http://www.intel.com/products/processor/manuals/index.htm) wird die letzte Änderung eines Pipeline-Wechsels in Vol. 1, ch. 2.2.3 / 2.2.4 (die Intel Core / Atom-Mikroarchitekturen). Breakthrough vor 11 Jahren 0
Die Anstrengung, 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 dies eine heikle technische Entscheidung mit Vor- und Nachteilen. David Schwartz vor 11 Jahren 2
Verbesserungen der Verzweigungsvorhersage, Verbesserungen bei der Neuordnung von Anweisungen / Optimierung / Mux-Einheit, Miniaturisierung (reduzierte Wärmeentwicklung) und Die-Design (verbesserte Ein-Chip-Pfade / -Schaltungen usw.), ... Shaun Wilson vor 7 Jahren 0
18
Breakthrough

Die absolute endgültige Referenz sind die Software-Entwicklerhandbücher für Intel 64 und IA-32 . Sie beschreiben detailliert die Änderungen zwischen den Architekturen und sind eine großartige Ressource, um die x86-Architektur zu verstehen.

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


Einige allgemeine Unterschiede, die ich in diesem Kapitel sehe, beziehen sich auf die Mikroarchitekturen von Core zu Nehalem / Sandy Bridge:

  • verbesserte Zweigvorhersagen, schnellere Wiederherstellung von Fehlvorhersagen
  • HyperThreading-Technologie
  • integrierter Speichercontroller, neue Cache-Recherche
  • schnellere Behandlung von Gleitkomma-Ausnahmen (nur Sandy Bridge)
  • LEA-Bandbreitenverbesserung (nur Sandy Bridge)
  • AVX-Befehlserweiterungen (nur Sandy Bridge)

Die vollständige Liste finden Sie im oben angegebenen Link (Band 1, Kap. 2.2).

0
Ale..chenski

Alles, was zuvor gesagt wurde, ist wahr, aber bis zu einem gewissen Grad. Meine Antwort ist kurz: Neue Prozessoren der neuen Generation sind "schneller", hauptsächlich weil sie größere und besser organisierte Caches haben . Dies ist der Hauptfaktor für die Computerleistung. Weitere quantitative Überlegungen finden Sie unter " Linux-Magazin: Was die Leistung in HPC fördert ".

In den meisten Anwendungen (wie bei SPEC Collection) ist der begrenzende Faktor der Speicher. Wenn eine echte Dauerberechnung ausgeführt wird, werden alle Caches mit Daten geladen, aber bei jedem Cache-Fehler wird die CPU-Ausführungspipe angehalten und abgewartet. Das Problem ist, dass die Parallelität auf Befehlsebene trotz der hohen Komplexität der CPU-Pipeline oder besserer Anweisungen immer noch recht begrenzt ist (mit Ausnahme einiger hochoptimierter Prefetch-Fälle). Sobald eine kritische Abhängigkeit gefunden ist, endet die 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, nichts zu tun. Dieses ganze Konzept gilt auch für Multicores.

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