Wie wirken sich Herstellungsprozess und Compilerqualität auf die CPU-Leistung aus?

Wie wirken sich Herstellungsprozess und Compilerqualität auf die CPU-Leistung aus?

Ich habe meine Vorlesungen nachgelesen und auf einer der Folien waren die Faktoren aufgelistet, die die CPU-Leistung beeinflussen. Ich verstehe nicht, wie das funktioniert.HerstellungsprozessUndCompilerqualitätAuswirkungen auf die CPU-Leistung

Antwort1

Die Compilerqualität ist einfacher ...

Gute Compiler wissen, wie sie Code effizient in CPU-Anweisungen übersetzen.

Stellen Sie sich vor, Sie haben eine Software, die eine einfache mathematische Gleichung berechnet, beispielsweise 1+1. Eine intelligent kompilierte Anwendung weist die CPU an, die Zahlen zu addieren, das Ergebnis zu speichern und die Arbeit ist erledigt. Dies kann wie folgt dargestellt werden:

  • Speicher 0 als 1 setzen
  • setze Speicher 1 als 1
  • Speicher 0 zu 1 hinzufügen
  • im Speicherbank 0 speichern ..einfach!

Schlechte Compiler (und ich habe einige gesehen!) machen dasselbe, geben aber jede Menge zusätzliche Anweisungen aus, um dasselbe zu tun, was die Leistung verringert und die Anwendung verlangsamt. Dasselbe Beispiel:

  • Speicher 0 setzen
  • Speicher 1 einstellen
  • Speicher 0 auf 0 setzen
  • Speicher 1 auf 0 setzen
  • Speicher 0 auf 1 setzen
  • Speicher 1 auf 1 setzen
  • Werte aus dem Speicher abrufen 0 und 1
  • addiere sie
  • Ergebnis im Speicher 0 speichern

Bedenken Sie, dass eine komplexe Anwendung wie ein Videoeditor, eine Grafikanwendung, ein Spiel oder sogar ein Textverarbeitungsprogramm Hunderttausende (wenn nicht sogar Zehnmillionen) Operationen allein zum Starten ausführen muss! Das ist die Leistung eines guten Compilers!

Der Herstellungsprozess ist eine Erweiterung davon, da bei der Herstellung mehrere Anwendungen durch gemeinsame Funktionen „zusammengeklebt“ werden. Wenn dies gut gemacht wird, ist weniger Rechenleistung erforderlich, um dasselbe Endergebnis zu erzielen.

Antwort2

Die Qualität (Optimierungsfähigkeit) des Compilers bestimmt, wie gut der Maschinencode die Hardwareressourcen abbildet. Compileroptimierungen können den Arbeitsaufwand reduzieren (z. B. kann das Aufrollen einer Schleife die Anzahl der Verzweigungen reduzieren, Registerzuweisung kann die Anzahl der Speicherzugriffe reduzieren, Inlining kann Aufruf-Overhead beseitigen und Code entfernen, der vom jeweiligen Aufrufer nicht verwendet wird), die Arbeit planen, um Wartezeiten zu vermeiden (z. B. früheres Planen von Ladevorgängen, damit abhängige Anweisungen nicht warten müssen), spezialisierte Anweisungen nutzen, die die Arbeit effizienter erledigen (z. B. kann die Vektorisierung SIMD-Anweisungen verwenden), Speicherzugriffe organisieren, um das Cache-Verhalten auszunutzen (z. B. ein Array von Strukturen in eine Struktur von Arrays umwandeln, wenn innere Schleifen nur wenige Mitglieder der Struktur berühren).

(Einige Compileroptimierungen gelten für die gesamte oder die meiste Hardware; andere sind spezifischer für bestimmte Hardwareimplementierungen. Auch wenn die Hardwareunterstützung für die Out-of-Order-Ausführung die Ausführung von weniger gut geplantem Code verbessert, kann eine gute Befehlsplanung dennoch einen messbaren, wenn auch kleinen Vorteil bieten.)

Der Herstellungsprozess bestimmt den Energieverbrauch, die Schaltgeschwindigkeit und die von Transistoren genutzte Fläche (und ähnliche Eigenschaften anderer Komponenten). Offensichtlich ermöglichen Transistoren, die schneller schalten, eine höhere Leistung. Durch die Reduzierung der Fläche pro Transistor können mehr Transistoren in einem wirtschaftlich herstellbaren Chip verwendet werden (was sich in mehr Leistung niederschlagen kann) und kann die Kommunikationszeit zwischen Komponenten verkürzen (z. B. wird die Latenz des Cache-Zugriffs durch die Entfernung und nicht nur durch die Schaltgeschwindigkeit der Transistoren beschränkt). Der Energieverbrauch schränkt die Leistung ein (bis zu einem gewissen Grad müssen mehr „Pins“ [Lötkugeln] verwendet werden, um diesen Strom zu liefern, je mehr Strom geliefert werden muss, wodurch die Anzahl der potenziell für die Kommunikation vom Chip zum Speicher, zu E/A oder zu anderen Prozessoren verfügbaren Pins reduziert wird; auch die Ableitung der Abwärme stellt eine wirtschaftliche Grenze dar). Geringere Schaltenergie bedeutet, dass innerhalb eines bestimmten Strombudgets mehr Arbeit erledigt werden kann; geringerer Leerlaufstrom („Leckstrom“) bedeutet, dass mehr Transistoren mit Strom versorgt und arbeitsbereit gehalten werden können (dies ist vielleicht besonders wichtig für SRAM, das immer mit Strom versorgt werden muss, um seinen Zustand beizubehalten).

verwandte Informationen