PDF bedienungsanleitungenpdf.de Bedienungsanleitungen und PDF-Dokumentation schneller verstehen

Software-Optimierungsleitfaden für AMD Family 10h Prozessoren

Dieser Leitfaden bietet detaillierte Informationen und Empfehlungen zur Software-Optimierung für AMD Family 10h Prozessoren, einschließlich C/C++-Optimierungen, Cache- und Speicherverwaltung sowie Multiprocessor-Überlegungen.

Inhaltsverzeichnis

Abbildungen aus der Anleitung

Bild zum Vergrößern anklicken

Wichtige Informationen aus der Anleitung

Dieser Leitfaden enthält Optimierungsinformationen und Empfehlungen für AMD Family 10h Prozessoren. Ziel ist es, Softwarecode zu erstellen, der schnell, kompakt und effizient ist. Die Optimierungen sind nach ihrer Bedeutung geordnet.

Blockdiagramm der AMD Family 10h Prozessoren
Blockdiagramm der AMD Family 10h Prozessoren

C und C++ Quellcode-Optimierungen

Compiler können effizienten Code erzeugen, aber sorgfältige Codierung führt zu besserer Leistung. Wichtige Techniken umfassen:

  • Verwendung von Array-Notation anstelle von Zeiger-Notation, um Aliasing zu reduzieren.
  • Vollständiges Entrollen kleiner Schleifen mit fester Iterationszahl.
  • Anordnung von booleschen Operanden für eine schnelle Auswertung.
  • Vermeidung von Store-to-Load-Abhängigkeiten.
  • Sortierung und Auffüllung (Padding) von Strukturen für natürliche Ausrichtung.

64-Bit Optimierungen

In 64-Bit-Modus bietet die Architektur erweiterte Registerressourcen. Verwenden Sie 64-Bit-Register für 64-Bit-Integer-Arithmetik, um die Anzahl der erforderlichen Befehle zu reduzieren. Nutzen Sie 128-Bit-Media-Instruktionen (SSE, SSE2, SSE3, SSE4a) für Gleitkommaoperationen.

Cache- und Speicheroptimierungen

Die AMD Family 10h Prozessoren profitieren von großen L1-Caches und hoher Bandbreite. Wichtige Praktiken:

Load-Store Unit
Load-Store Unit
  • Vermeidung von Memory-Size-Mismatches bei Lade- und Speicheroperationen.
  • Natürliche Ausrichtung von Datenobjekten.
  • Vermeidung von Store-to-Load-Forwarding-Problemen durch konsistente Operanden-Größen.
  • Verwendung von Prefetch-Instruktionen zur Verdeckung von Speicherlatenzen.
  • Vermeidung von L1-Daten-Cache-Bank-Konflikten.

Branch-Optimierungen

Verbessern Sie die Branch-Vorhersage durch:

  • Ausrichtung von Branch-Zielen auf 32-Byte-Grenzen.
  • Begrenzung der Anzahl der Branches in einem 16-Byte-Fenster auf drei.
  • Vermeidung von Branches, die von Zufallsdaten abhängen.
  • Verwendung von CMOVxx-Instruktionen zur Vermeidung von Branches.

Scheduling-Optimierungen

Wählen Sie Instruktionen mit kürzeren Latenzen. Nutzen Sie Loop-Unrolling, um die Instruktionsebene-Parallelität zu erhöhen. Inline-Funktionen sollten verwendet werden, wenn sie weniger als 25 Maschineninstruktionen enthalten.

Integer- und SIMD-Optimierungen

Ersetzen Sie Integer-Division durch Multiplikation mit dem Kehrwert. Verwenden Sie SIMD-Instruktionen für Gleitkommaoperationen, da diese eine höhere theoretische Durchsatzrate bieten. Nutzen Sie XOR-Instruktionen zum Löschen von Registern.

Multiprocessor-Überlegungen

AMD Family 10h Systeme verwenden ccNUMA (cache coherent non-uniform memory access). Optimieren Sie für ccNUMA, indem Sie Daten lokal zum Thread halten. Vermeiden Sie False Data Sharing durch 64-Byte-Ausrichtung.

Optimierung sicherer virtueller Maschinen

Minimieren Sie den Overhead durch World-Switches. Verwenden Sie Nested Paging anstelle von Shadow Paging. Konfigurieren Sie das VMCB.G_PAT-Feld korrekt.

Praktische Hilfe

Typische Probleme

Store-to-load forwarding stalls

Align memory accesses and match sizes of stores and dependent loads.

Branch mispredictions

Align branch targets to 32-byte boundaries and limit branches in 16-byte windows.

Cache thrashing

Avoid sharing code and data in the same 64-byte cache line.

Vor der Verwendung

  • Stellen Sie sicher, dass der Code auf 32-Byte-Grenzen ausgerichtet ist.
  • Verwenden Sie 64-Bit-Register für 64-Bit-Arithmetik.
  • Verwenden Sie Array-Notation anstelle von Zeiger-Notation für Arrays.
  • Nutzen Sie SIMD-Instruktionen für Gleitkommaoperationen.

Abbildungen und Diagramme

  • Abbildung 8: Blockdiagramm der AMD Family 10h Prozessoren.
  • Abbildung 11: Load-Store Unit Diagramm.

Modellkompatibilität

  • Optimierungen gelten für 32-Bit- und 64-Bit-Software, sofern nicht anders angegeben.

Autor der Aufbereitung

Thomas Schneider

Redakteur für technische Anleitungen

Prüft Bedienungsanleitungen mit Fokus auf Struktur, Sicherheitshinweise und schnelle Orientierung für Nutzerinnen und Nutzer.