1 Punkte von GN⁺ 2024-07-28 | 1 Kommentare | Auf WhatsApp teilen

Zen 5s 2-Ahead Branch Predictor Unit: Wie eine 30 Jahre alte Idee neue Tricks ermöglicht

  • Einführung

    • AMDs Zen-5-Architektur ist eine vollständige Neugestaltung der bisherigen Zen-Architektur
    • Eine der wichtigsten Änderungen ist die neue 2-Ahead Branch Predictor Unit
    • Die Idee stammt aus einer 30 Jahre alten wissenschaftlichen Arbeit
  • Die Bedeutung des Branch Predictors

    • Computer speichern Programme im Speicher und führen sie aus
    • Prozessoren sind in ein Frontend und ein Backend unterteilt, die Befehle holen und ausführen
    • Bedingte Sprünge sind eine große Herausforderung beim Füllen der Pipeline
    • Fehlvorhersagen zwingen dazu, die Pipeline zu leeren und neu zu starten
    • Daher müssen Prozessoren die Befehlssequenz eines Programms so präzise wie möglich vorhersagen
  • Das Aufkommen des 2-Ahead Branch Predictors

    • Die Idee wurde bereits Anfang der 1990er Jahre vorgeschlagen
    • Effizientere Methoden wie der TAGE predictor wurden entwickelt
    • Um die Single-Core-Leistung zu steigern, rückt der 2-Ahead Branch Predictor jedoch wieder in den Fokus
  • Vorteile der x86-Architektur

    • x86 profitiert bei der 2-Ahead Branch Prediction stärker als andere ISAs mit Befehlen fester Länge
    • Bei x86 ist eine komplexere Verarbeitung nötig, um Befehlsgrenzen zu bestimmen
    • Zen 5 verwendet zwei 32-Byte-Fetch-Pipelines und einen 4-fach breiten Decode-Cluster
  • Implementierung nach der Seznec-Arbeit

    • Die Seznec-Arbeit beschreibt, wie sich ein 2-Ahead Branch Predictor implementieren lässt
    • Zen 5 folgt den Empfehlungen dieser Arbeit
    • Es kommen zwei 32-Byte-Fetch-Pipelines und ein 6-fach breiter Dual-Port-Op-Cache zum Einsatz
    • L1 BTB und L2 BTB werden verwendet, um die Vorhersagegenauigkeit zu erhöhen
  • Fazit

    • Zen 5s 2-Ahead Branch Predictor ist eine wichtige Veränderung in der Zen-Architektur
    • Dieser neue Predictor wird die künftige Entwicklung von Zen-Kernen stark unterstützen

Zusammenfassung von GN⁺

  • Zen 5s 2-Ahead Branch Predictor ist eine moderne Neuinterpretation einer 30 Jahre alten Idee
  • Die Technik verbessert die Leistung, indem sie die Genauigkeit der Befehlsvorhersage erhöht
  • Sie ist besonders nützlich, um die Komplexität der x86-Architektur zu bewältigen
  • Der Artikel ist lohnend für alle, die sich für CPU-Architektur und Performance-Optimierung interessieren
  • Ein anderes Projekt mit ähnlichen Funktionen ist Intels Golden-Cove-Architektur

1 Kommentare

 
GN⁺ 2024-07-28
Hacker-News-Kommentare
  • Es gibt eine großartige Erklärung zur Branch Prediction
  • Die SMT-Leistung dürfte interessant sein; Zen5c bietet 192 Kerne oder 384 vCPUs. Bei Zen 6c könnte man 256 Kerne erwarten. In einem Dual-Socket-1U-Server wären damit möglicherweise 512 Kerne und 1024 vCPUs möglich
    • Die Web-App-Skalierungsprobleme von 2014 könnte man mit einem einzelnen Server lösen, sofern man nur die Kühlung in den Griff bekommt
    • Mit 1 RPS pro vCPU sind 1000 RPS möglich, Cache-Hits ausgenommen
    • Selbst die HN-Startseite überschreitet nicht 1000 Page Views pro Sekunde
  • Es ist interessant, wenn jahrzehntealte Paper durch Fortschritte in der Hardware plötzlich zum "Stand der Technik" werden
    • Beispiel: Z-Buffer, eingesetzt in 3D-Videospielen
    • Als es ursprünglich veröffentlicht wurde, war es nicht das Hauptthema, weil der Speicherbedarf zu hoch war
    • Einige Jahrzehnte später wurden Megabytes billig, und alle Echtzeit-3D-Renderer nutzten es
  • Spekulative Predictor sind anfällig für mehrere Angriffe, bei denen persönliche Daten offengelegt werden. Viele gängige ISAs sind verwundbar; ich frage mich, ob Maßnahmen ergriffen werden, um die Auswirkungen solcher Angriffe zu mindern
  • Als Einsteiger auf diesem Gebiet ist mir nicht klar, was ein 2-Ahead-Branch-Predictor ist
  • Es scheint, als bräuchte man mehr Branch Hints
    • Cold, warm, warmer, standardmäßig hot weglassen? Ich frage mich, ob es eine schlechte Idee wäre, alle Branches als cold zu markieren und nur einen auszunehmen
    • Wenn es einen bedingten Branch gibt, warum ist es dann schwierig, beide möglichen Pfade zu holen und vorzubereiten und den falschen anschließend zu verwerfen?
  • Mehr Speicherbandbreite wäre nötig; die zwei Speicherkanäle des Consumer-AM5-Sockels sind im Verhältnis zur Leistung zu wenig
    • Ich bin zu einem M2 Max gewechselt, und die verbesserte Speicherbandbreite beschleunigt Datenarbeit. Selbst bei schwerem Multitasking verstopft die schmale Memory-Pipeline des Zen-Setups häufig
  • Bei Zen 5 werden der Decode-Cluster und die dazugehörige Fetch-Pipeline statisch aufgeteilt, wenn zwei Threads aktiv sind
    • Das scheint der Hyper-Threading-Leistung einen großen Schub zu geben. Bei Zen1 brachte HT etwa 25 % mehr Leistung. Ich frage mich, ob das jemand bei neueren Modellen getestet hat
  • Ich verstehe immer noch nicht, was ein 2-Ahead-Branch-Predictor ist