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 anklickenWichtige 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.

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:

- 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
Align memory accesses and match sizes of stores and dependent loads.
Align branch targets to 32-byte boundaries and limit branches in 16-byte windows.
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.