Intel Core i9-7900X et Core i7-7740X en test : déjà-vus ?

Publié le 29/06/2017 par
Imprimer

Sortie de ring : place au mesh !

La réorganisation des caches est intimement liée à une autre réorganisation massive dans Skylake-X : l'interconnexion des coeurs entre eux. Avant de parler de la nouvelle organisation, regardons l'ancienne :


Ce slide d'Intel n'indique pas le bon nombre de coeurs, le schéma est cependant correct

Sur ces schémas, on peut voir côte à côte les différentes organisations des dies (LCC, MCC, et HCC). Broadwell-E, comme nous vous le rappelions un peu plus tôt, utilisait le LLC pour des puces incluant jusque 10 coeurs. Dans ces configurations, chaque coeur disposait de son propre "slice" de cache L3 (LLC), et tous les coeurs étaient reliés les uns aux autres par un double ring bus très rapide. Dans les cas des dies MCC/HCC, deux rings bus étaient utilisés, interconnectés l'un à l'autre.

L'avantage principal d'un ring bus est qu'il dispose d'une très large bande passante, chaque coeur ayant son propre "arrêt de bus" pour envoyer et recevoir des données. Il en va de même pour les contrôleurs mémoires (en orange), les liens PCI Express (en bleu) et les liens vers d'autres éventuels processeurs (via les liens QPI, en jaune).

Un type d'architecture bien rôdé, très utilisé aussi bien dans les CPU que les GPU et qui, dans le cas de l'implémentation d'Intel, donnait de très bons résultats jusqu'ici.

Place au... mesh interconnect

Pour Skylake-X, Intel adopte un nouveau type d'interconnexion dont on retient avant tout le nom : mesh. Quelque chose que l'on traduira comme un maillage. Intel est assez peu disert sur le fonctionnement exact mais nous a fourni ce schéma :

L'idée est d'organiser le die en une série de blocs. On y retrouve sur cet exemple fictif des blocs coeurs + cache L3 qui nous rappellent quelque peu les blocs actuels, mais aussi des blocs pour les contrôleurs mémoires, d'interconnexions ou d'IO (comme le PCIe).

Chaque bloc dispose cette fois ci d'un switch intégré (en vert) qui relie le bloc sur des « axes de circulation », en rouge, qui sont horizontaux ou verticaux. Une grille qui ressemble quelque peu à une organisation de circulation dans une ville américaine organisée en blocks.

Il serait trompeur de voir chaque axe en rouge comme un ring bus indépendant, car en pratique les choses deviennent beaucoup plus complexes. Les données doivent désormais transiter dans deux sens (horizontalement et verticalement), ce qui demande une logique au niveau du switch qui doit lire la source et la destination des paquets pour voir dans quel sens il doit les rerouter (horizontalement ou verticalement). Un mécanisme beaucoup plus complexe qui, c'est tout à l'honneur d'Intel, semble avoir un impact assez léger côté latence (une première approximation rapide nous fait estimer grossièrement à 1/2ns chaque saut), même si cela ajoute une touche de variabilité.


Si l'on reprend notre illustration du die, on voit bien le parallèle avec le schéma ci-dessus, on tournera dans sa tête d'un quart de tour vers la droite le die pour retrouver un alignement très proche du schéma

En matière de bande passante cependant, les chiffres théoriques rapportés nous montrent que ce n'est peut-être pas aussi performant qu'un ring bus traditionnel. Et là, difficile en quelques heures de vous donner une analyse plus fine, d'autant qu'Intel est jusqu'ici silencieux sur les détails d'implémentations. Comment fonctionne par exemple l'algorithme des switchs ? Les données se déplacent elle toujours verticalement avant d'entamer une éventuelle transition horizontale comme sur Knights Landing ? Quel type de mécanisme anti congestion est mis en oeuvre ? Y a t-il une priorité sur les échanges entre coeurs vis à vis d'échanges contrôleur mémoire core ou inversement ? Quid des données en provenance du PCI Express ? Avoir plus de "routes" peut sembler une bonne solution pour améliorer la densité d'informations qui transitent, mais de la même manière qu'en urbanisme, ce sont les intersections et leurs congestions qui deviennent le facteur limitant quand on multiplie les routes.

Sans plus de détails sur l'implémentation on ne peut que supposer, mais il est possible qu'un test théorique, fait pour stresser massivement la bande passante soit l'un des pires cas possible pour le mesh, cas qui ne se reproduirait pas forcément en utilisation normale. Nous tenterons de voir si un impact se dessine dans nos tests pratiques.

Qui plus est, la question de l'emplacement d'un core devient importante. Les cores dans les coins sont moins bien interconnectés que les autres (ils ont moins de "voisins"), tandis que les switchs centraux seront probablement les plus congestionnés.

Certains d'entre vous se demanderont probablement "pourquoi" ? Intel sur ce point est très vague, un simple billet de blog  très marketing nous explique que cela permet d'améliorer la "scalabilité". De notre côté nous voyons plusieurs facteurs.

D'abord le premier est qu'Intel travaille depuis des années sur des solutions de ce type. En fouillant dans nos archives, il y a de fortes chances que l'on retrouve des simulations d'Intel lors d'IDF lointains montrant leurs travaux théoriques autour de la question. Intel effectue énormément de recherche sur ce type d'interconnexions, remontant au moins à la genèse de son projet Larrabee. Son petit fils spirituel, Knights Landing, utilise d'ailleurs un type d'interconnexion identique pour ses 76 coeurs.

D'un point de vue théorique, les meshs permettent d'améliorer les interconnexions (on est relié à quatre voisins, contre deux dans un ring bus), et donc de réduire la latence moyenne théorique en réduisant la distance entre les cores. D'un point de vue théorique, cela semble vrai même si en pratique nous notons une latence plus élevée pour le L3 et les accès mémoires. Cette dernière est peut être liée à des détails d'implémentations particuliers, et ne remettent pas forcément en cause le concept de mesh en général.

Reste que si l'on peut penser que la solution a été amplement réfléchie, fortement simulée, et savamment étudiée, on peut se demander légitiment si elle était nécessaire, ou optimale, pour un die ne comptant que 10 coeurs ? Les modélisations statistiques ont elles prises en compte tous les types de charges, qui mêlent intercommunication entre les coeurs, bande passante PCI Express et contrôleurs mémoires ? Seul Intel le sait bien évidemment, on tentera de voir en pratique si ces changements de topologies massifs, et théoriquement bienvenus, ont un impact sur les performances pratiques.

Notez enfin que nous avons posés de très nombreuses questions à Intel sur ce mesh dont nous attendons encore les réponses. La question de la fréquence de cette interconnexion, la latence d'un "saut", l'algorithme, la largeur des liens, la bande passante, tous ces détails d'implémentations sont particulièrement importants pour évaluer la solution. Nous complèterons cet article si Intel nous donne plus de détails, bien évidemment !

Vos réactions

Top articles