Une plongée profonde dans l’architecture de l’épave de Rome d’AMD – Bien choisir son serveur d impression
Dans toute conception de puce, le diable – et l'ange – sont toujours dans les détails. AMD a été victime des choix architecturaux qu’il avait faits avec les processeurs Opteron dans le passé, où les hypothèses sur la manière dont le code pourrait exploiter le matériel ne se sont pas déroulées comme prévu. La société semblait vouloir ne pas répéter les erreurs avec les processeurs vénérables Opteron, qui avaient d’abord une excellente conception, avec la deuxième génération de puces de serveur Epyc.
Le temps – et les clients – le diront, mais ce kicker dérivé implémenté dans une conception à plusieurs puces bien améliorée avec des processus de gravure plus avancés pour les cœurs semble atteindre le marché des serveurs avec exactement ce qu'il veut quand il en a le plus besoin. Et cela augure bien pour l'avenir des puces Epyc en tant qu'alternative aux puces Xeon actuelles et futures d'Intel.
Nous avions hâte d'entrer dans les détails architecturaux des nouvelles puces de serveur Epyc de «Rome», que nous avons abordées lors du lancement la semaine dernière avec les flux, les vitesses, les créneaux horaires, les watts et les prix de base. Passons maintenant aux détails architecturaux des processeurs de Rome avec Mike Clark, l’architecte en chef des cœurs zen et membre du personnel d’AMD. À bien des égards, Rome, avec sa conception de modules multipuces à cœur et process mixte Zen 2, est le processeur que AMD doit souhaiter pouvoir avoir mis sur le terrain il y a deux ans. Tout est meilleur, et tout commence avec la gravure des noyaux et de leurs caches L1 et L2 associés dans les processus de 7 nanomètres du partenaire fab Taiwan Semiconductor Manufacturing Corp.
"C'est bien d'être à l'avant-garde de la technologie des processus", a déclaré Clark avec un rire ironique, ajoutant qu'Intel et AMD se feraient un bond dans les années à venir pour que cette victoire ne soit pas permanente, même si elle est indéniable et stratégique à l'heure actuelle. . «Ce processus à 7 nanomètres entraîne des améliorations significatives. Fait intéressant, cela nous donne deux fois la densité du transistor, mais la fréquence a demandé beaucoup de travail avec TSMC et les utilisateurs d’outils. Généralement, lorsque vous utilisez une nouvelle technologie, la fréquence diminue, vous perdez Vmax et il faut un certain temps pour rétablir cette fréquence. Mais nous avons pu travailler avec eux pour créer une très bonne histoire de fréquence de 7 nanomètres et conserver le même pouvoir. Et, bien sûr, si vous regardez les transistors dans l'autre sens, vous pouvez obtenir la moitié de la puissance au même niveau de performance. ”
Les instructions par horloge, ou IPC, constituent également une grande partie de l'architecture de Rome. En passant des noyaux «Excavator» utilisés dans les derniers Opterons d'il y a plusieurs années aux noyaux Zen 1 utilisés dans les puces Epyc «Naples», AMD a pu augmenter de 50% l'IPC sur une base d'horloge constante, ce qui est un énorme saut . Et semblable à ce que promet Arm avec ses créations «Ares» Neoverse. Arm prévoit en réalité une augmentation de 60% de l'IPC, mais pour être juste, ni les Excavator Opterons ni le Cortex-A72 n'étaient très puissants en IPC, du moins pas comparés à un noyau Xeon d'Intel. Maintenant, AMD et Arm rattrapent leur retard et avec les cœurs Zen 2 utilisés à Rome, AMD ajoute 15% de plus d'IPC, horloge pour horloge. Les améliorations apportées au CIP générationnel d’Intel se situent entre 5 et 10%, soit environ la moitié de ce taux en moyenne.
Clark a déclaré que lorsque l'IPC augmentait, les architectes de puces payaient souvent cela avec une consommation d'énergie supérieure, mais qu'avec la conception du noyau Zen 2, l'objectif était de le maintenir neutre par rapport au Zen 1 de Naples. En fin de compte, les ingénieurs de Rome ont resserré les vis et ont été en mesure de réduire la consommation électrique du noyau de 10%, au-delà de ce qui avait été obtenu grâce au retrait en retrait de 14 nanomètres avec Naples aux 7 nanomètres utilisés pour le Zen 2. complexes de base à Rome. Cela a été accompli en doublant le cache op dans le noyau, ce qui a permis d’économiser de l’énergie et d’accroître les performances.
En fait, AMD a en réalité rétréci le cache d'instructions L1 sur chaque cœur Zen 2, passant de 64 Ko à 32 Ko, et a restitué cette zone de transistor aux unités de prédiction de fonctionnement et de branche, et en a également utilisé une partie pour ajouter une troisième unité de génération d'adresses. . L'associativité des caches de données et d'instructions L1 (les deux (32 Ko) a été doublée à huit voies, et AMD a doublé la largeur du chemin de données en virgule flottante, puis a doublé la bande passante du cache L1 pour la suivre. (Clark a déclaré qu'un cache associatif L1 associant huit sources de 64 Ko allait consommer beaucoup trop d'énergie, et avec 64 cœurs, cela poserait un gros problème.) Le cache L3 a été doublé à 16 Mo par chiplet. un pop, et avec deux fois plus de chiplets sur le paquet qui est quatre fois la capacité de cache L3, à 256 Mo, que ce qui était dans le processeur de Naples. Il ne s’agit pas précisément de doubler le tout, mais de tenter d’améliorer l’équilibre entre le nombre de noyaux et le nombre de chiplets. Cela inclut la prédiction de branche, la récupération d'instructions et les unités de décodage d'instruction, comme vous pouvez le voir ici:
«Nous aimons les fonctionnalités qui améliorent la puissance et les performances», a expliqué Clark. «Il est important d’être sur la bonne voie plus souvent car la pire utilisation du pouvoir consiste à exécuter des instructions que vous allez simplement jeter à la poubelle. Nous ne perdons pas de travail après avoir compris de manière dynamique que nous avions tort de le faire. Cela consomme certainement plus de puissance au début, mais cela rapporte des dividendes au bout. "
Cela nous amène aux unités d’instruction entière et virgule flottante dans les cœurs Zen 2.
Sur le front des nombres entiers, le nombre d'unités logiques arithmétiques (ALU) reste le même à quatre, mais le nombre d'unités de génération d'adresses (AGU) dans le noyau Zen 2 est augmenté de un à trois. Les planificateurs pour les ALU et les AGU ont été améliorés et la taille des tampons de réenregistrement et de réenregistrement a également été augmentée. Et l'équité des algorithmes contrôlant le multithreading simultané (SMT) en ce qui concerne les ALU et les AGU a également été modifiée pour traiter les déséquilibres dans la conception du Zen 1.
Bien entendu, Intel a intégré il y a quatre ans une unité vectorielle AVX-512 très élégante d'une largeur de 512 bits dans les processeurs Xeon Phi «Knights Landing». Elle en a apporté une variante. Certains diraient une variante moins élégante, car il est plus difficile de nourri grâce à la manière dont il a été mis en œuvre – aux processeurs «Skylake» Xeon SP et qui a été présenté pratiquement inchangé avec les puces Xeon SP «Cascade Lake» actuelles, à l'exception de la possibilité de lui tordre des instructions de demi-précision pour machine apprendre les charges de travail d'inférence.
Clark a déclaré qu'AMD envisageait de créer éventuellement des vecteurs 512 bits dans les futures puces Epyc, mais n'était pas convaincu à ce stade que le simple ajout de vecteurs plus larges était la meilleure façon d'utiliser le budget des transistors. Clark a tout d’abord ajouté qu’il existe encore de nombreuses routines à virgule flottante qui ne sont pas parallélisables à 512 bits – et parfois même pas à 256 bits ou 128 bits d’ailleurs – c’est donc une question de passage à 512 bits. sur les moteurs vectoriels de la ligne Epyc est logique. AMD sera probablement un suiveur rapide et fera quelque chose qui ressemble aux instructions d’inférence d’apprentissage automatique DLBoost, nous en sommes conscients. Peut-être que cette capacité est déjà dans l'architecture, en attente d'être activée à une date ultérieure lorsque la pile de logiciels est prête pour cela.
Avec le noyau Zen 1, qui comportait une paire de vecteurs de 128 bits, il fallait deux opérations pour exécuter une instruction AVX-256, mais Zen 2 peut exécuter cette instruction AVX-256 en une seule horloge; cela prend évidemment beaucoup moins de puissance. Une multiplication en double précision prend quatre cycles sur le Zen 1 et seulement trois cycles sur le Zen 2, ce qui améliore le débit et l'efficacité énergétique des unités à virgule flottante. (Les chiffres de la CIB mentionnés ci-dessus concernent des instructions entières et non des virgules flottantes.)
En ce qui concerne les caches qui alimentent les cœurs Zen 2, toutes les structures supportant les caches sont plus grandes et fournissent plus de débit, ce qui augmente le rendement IPC:
Voici à quoi ressemble le complexe du processeur Zen 2 et la hiérarchie du cache:
Cette augmentation du cache L2 dans chaque cœur et des caches L3 sur les cœurs est essentielle pour permettre à ce potentiel IPC dans le cœur Zen 2 de se réaliser, car, comme le dit si bien Clark: "Le meilleur moyen de réduire le temps d'attente en mémoire est de ne pas y aller en premier lieu. "
Ajoutez le tout et vous ajoutez huit unités de traitement, ainsi que le concentrateur d’entrées / sorties et la mémoire, soit un total de neuf puces, pour créer un Epyc de Rome haut de gamme. Les SKU de la corbeille inférieure ont moins de chiplets de noyau sur l'emballage et parfois moins de noyaux activés sur chaque puce présente, et cela donne toute la largeur des puces Rome Epyc 7002, comme nous l'avons détaillé la semaine dernière.
Il s'agit d'un démantèlement des MCM de Naples et de Rome, dont l'architecture est évidemment très différente:
La variante Infinity Fabric de PCI-Express de deuxième génération, utilisée pour relier les chiplets des prises Naples et Rome, présente des modifications importantes. Les chiplets de Naples peuvent lire 16 octets et écrire 16 octets sur une seule horloge sur le tissu Infinity Fabric – FCLK dans l’imprimé est un raccourci pour l’horloge Fabric – tandis que les jetons Infinity Fabric dans les puces de Rome peuvent effectuer une lecture sur 32 octets et 16 octet écrit par horloge textile.
Alors que les puces Rome se connectent aux mêmes prises que celles de Naples, la manière dont les éléments sont assemblés à l'intérieur de cette prise est très différente. Les contrôleurs de mémoire sont déplacés des puces complexes du processeur vers le concentrateur central gravé selon un processus de 14 nanomètres où il fonctionne mieux que 7 nanomètres, car les E / S et la mémoire doivent repousser les signaux de l’emballage et dans la carte mère. où les périphériques DRAM et PCI-Express se connectent. Il y a un total de huit contrôleurs de mémoire DDR4 sur cette puce de concentrateur, le même nombre au total que ceux du complexe de Naples; les deux prennent en charge un module DIMM par canal et disposent de deux canaux par contrôleur, mais la mémoire de Rome fonctionne légèrement plus rapidement (3,2 GHz contre 2,67 GHz). Par conséquent, avec tous les logements de mémoire remplis, la bande passante de mémoire maximale par socket est maximale de 410 Go / s. C'est 45% de plus que le processeur Cascade Lake Xeon SP, qui dispose de six contrôleurs de mémoire pour une bande passante totale de 282 Go / s fonctionnant à 2,93 GHz et de 21% supérieur aux 340 Go / s générés par Naples avec une capacité de 2,67 GHz. DRACHME. (Ce sont des évaluations pour les serveurs à deux sockets.)
Le véritable grand changement avec les Epycs de Rome, et qui aura des effets bénéfiques sur les performances pour de nombreuses charges de travail différentes, est la manière dont les domaines NUMA sont créés dans les puces et les moins de sauts NUMA – distances dans le graphique ci-dessous – cela est nécessaire pour passer d'une partie du complexe de processeurs à une autre. Regarde:
Il s’agit en fait d’un serveur NUMA, ce concentrateur central étant un jeu de puces permettant de relier les puces (sockets de cette analogie) dans un système de mémoire partagée utilisant des techniques d’accès non uniforme à la mémoire pour sceller ensemble les caches et les mémoires principales.
Avec les puces de Naples, il y avait trois distances différentes d’une mort à l’autre, c’est là que la mémoire était suspendue. Il y avait un saut dans deux matrices adjacentes, et parfois deux sauts dans la matrice en diagonale et trois dans la deuxième prise dans une configuration à deux prises. Maintenant, il y a deux domaines NUMA et seulement deux distances différentes. C'est un saut d'un pince à travers le concentrateur central jusqu'à la mémoire attachée à un processeur, puis un autre saut à travers l'Infinity Fabric vers un deuxième concentrateur central et la mémoire qui en est suspendue. Et pour simplifier les choses, il n’ya que deux domaines NUMA – un pour chaque complexe de Rome. Cela devrait permettre à Windows Server et à Linux de mieux fonctionner sur les systèmes à socket unique et à double socket, et Clark a déclaré que Windows Server rencontrait un peu plus de problèmes sur Naples que Linux avec la manière dont NUMA avait été mis en œuvre. Le résultat de ces modifications apportées à l'architecture NUMA avec Rome est que les performances devraient être meilleures et plus uniformes, et sur un plus large éventail de charges de travail à démarrer.
Cette puce de contrôleur de mémoire d'E / S et de contrôleur de mémoire implémente également les voies PCI-Express 4.0 utilisées pour connecter des périphériques au système et, dans le cas de serveurs à deux sockets, pour relier deux complexes de calcul de Rome l'un à l'autre.
Comme pour les puces Naples, chaque puce Rome dispose de 128 voies PCI-Express pouvant être configurées de différentes manières, comme illustré ci-dessous:
Comme à Naples, la moitié des voies PCI totales sont utilisées pour mettre en œuvre les liaisons NUMA entre deux sockets. Par conséquent, Rome ne dispose que de 128 voies PCI-Express pour les périphériques. Ceux de Rome ont deux fois plus de bande passante et peuvent en réalité gérer des adaptateurs de 100 Gb / s et 200 Gb / s, ce que PCI-Express 3.0 a du mal à faire avec le premier et ne peut pas le faire avec un dernier emplacement x8. Les voies peuvent être utilisées seules, sont souvent groupées par paire (x2) pour les périphériques de stockage, laissant éventuellement la place à peut-être 56 disques NVM-Express plus une carte d’interface réseau haut débit dans un système de Rome.
Techniquement, la puce de Naples avait une seule voie x1 distincte de tout cela pour le contrôle Infinity Fabric. Cette voie x1 est également disponible pour les autres trafics maintenant qu’il existe un hub central. Cela signifie donc qu’un serveur Rome à simple socket dispose techniquement de 129 voies PCI-Express 4.0 et d’un serveur Rome à deux sockets à 130 voies. Les processeurs Intel Xeon ne réduisent que jusqu'à 4 voies; ils ne peuvent pas faire x2 ou x1 voies, selon Clark. Nous n'avions pas entendu cela auparavant.
Enfin, les noyaux Zen 2 possèdent des extensions architecturales, décrites ici et qui ne sont pas rétrocédées aux noyaux Zen 1 des puces de Naples:
Nous verrons ensuite comment AMD compare les Epycs de Rome à ses rivaux Xeon et à la réponse initiale, puis à long terme, d’Intel aux puces de Rome.
Commentaires
Laisser un commentaire