1 points par GN⁺ 2024-07-28 | 1 commentaires | Partager sur WhatsApp

Le prédicteur de branchement 2-Ahead de Zen 5 : comment une idée vieille de 30 ans permet de nouvelles astuces

  • Introduction

    • L’architecture Zen 5 d’AMD constitue une refonte complète des précédentes architectures Zen
    • L’un des changements les plus importants est la nouvelle unité de prédiction de branchement 2-Ahead
    • Cette idée trouve son origine dans un article publié il y a 30 ans
  • L’importance du prédicteur de branchement

    • Un ordinateur stocke les programmes en mémoire puis les exécute
    • Le processeur se divise entre une partie front-end qui récupère et prépare les instructions, et une partie back-end qui les exécute
    • Les sauts conditionnels représentent un défi majeur pour remplir le pipeline
    • Une mauvaise prédiction oblige à vider le pipeline puis à redémarrer
    • Le processeur doit donc prédire la séquence d’instructions du programme avec la plus grande précision possible
  • L’arrivée du prédicteur de branchement 2-Ahead

    • Il s’agit d’une idée proposée dès le début des années 1990
    • Des méthodes plus efficaces, comme le prédicteur TAGE, ont ensuite été développées
    • Mais pour améliorer les performances monocœur, le prédicteur de branchement 2-Ahead revient sur le devant de la scène
  • Les avantages de l’architecture x86

    • x86 tire un plus grand bénéfice de la prédiction de branchement 2-Ahead que d’autres ISA à instructions de longueur fixe
    • x86 nécessite un traitement plus complexe pour déterminer les frontières entre instructions
    • Zen 5 utilise deux pipelines de fetch de 32 octets et un cluster de décodage 4-wide
  • L’implémentation décrite dans l’article de Seznec

    • L’article de Seznec explique comment mettre en œuvre un prédicteur de branchement 2-Ahead
    • Zen 5 suit les recommandations de cet article
    • Il utilise deux pipelines de fetch de 32 octets et un op cache dual-port 6-wide
    • Il s’appuie sur les BTB L1 et L2 pour améliorer la précision de la prédiction
  • Conclusion

    • Le prédicteur de branchement 2-Ahead de Zen 5 constitue une évolution majeure de l’architecture Zen
    • Ce nouveau prédicteur devrait beaucoup aider le développement des futurs cœurs Zen

Le récapitulatif de GN⁺

  • Le prédicteur de branchement 2-Ahead de Zen 5 modernise une idée vieille de 30 ans
  • Cette technologie améliore les performances en augmentant la précision de prédiction des instructions du processeur
  • Elle est particulièrement utile pour gérer la complexité propre à l’architecture x86
  • Cet article intéressera les personnes qui suivent l’architecture CPU et l’optimisation des performances
  • Parmi les projets comparables, on peut citer l’architecture Golden Cove d’Intel

1 commentaires

 
GN⁺ 2024-07-28
Commentaire Hacker News
  • Excellente explication de la prédiction de branchement
  • Les performances SMT semblent intéressantes : Zen5c offre 192 cœurs ou 384 vCPU. On peut s’attendre à 256 cœurs avec Zen 6c. Il pourrait donc y avoir 512 cœurs et 1024 vCPU dans un serveur 1U bi-socket
    • Les problèmes de mise à l’échelle des applications web de 2014 pourraient être résolus sur un seul serveur, à condition de régler les problèmes de refroidissement
    • 1000 RPS sont possibles avec 1 RPS par vCPU, hors cache hits
    • Même la page d’accueil de HN ne dépasse pas 1000 pages vues par seconde
  • Il est intéressant de voir des articles vieux de plusieurs décennies devenir « à la pointe » grâce aux avancées du matériel
    • Exemple : le Z-buffer, utilisé dans les jeux vidéo 3D
    • Ce n’était pas le sujet principal lors de sa première publication, car les besoins en mémoire étaient trop élevés
    • Quelques décennies plus tard, quand les mégaoctets sont devenus bon marché, tous les moteurs de rendu 3D en temps réel ont commencé à l’utiliser
  • Les prédicteurs spéculatifs sont vulnérables à plusieurs attaques permettant de divulguer des données privées. Beaucoup d’ISA courantes sont vulnérables ; je me demande si des mesures sont prises pour atténuer l’impact de ces attaques
  • En tant que débutant dans ce domaine, je ne vois pas clairement ce qu’est un prédicteur de branchement 2-ahead
  • J’ai l’impression qu’il faudrait davantage de branch hints
    • Cold, warm, warmer, en omettant hot par défaut ? Je me demande si ce serait une mauvaise idée de définir toutes les branches comme cold sauf une
    • Je me demande pourquoi il est difficile d’aller chercher et préparer les deux branches possibles d’un branchement conditionnel, puis de jeter celle qui est incorrecte
  • Il faudrait plus de bande passante mémoire ; les deux canaux mémoire du socket AM5 grand public semblent insuffisants au vu des performances
    • Je suis passé à un M2 Max, et l’amélioration de la bande passante mémoire accélère le travail sur les données. Même en multitâche lourd, le pipeline mémoire étroit d’une configuration Zen sature souvent
  • Sur Zen 5, le cluster de décodage et le pipeline de fetch associé sont répartis statiquement quand deux threads sont actifs
    • Cela semble pouvoir apporter un gros gain aux performances en hyper-threading. Sur Zen1, le HT apportait environ 25 % de mieux. Je me demande si quelqu’un l’a testé sur les modèles récents
  • Je ne comprends toujours pas ce qu’est un prédicteur de branchement 2-ahead