Une introduction aux utilisations de la technologie CXL


La technologie Compute Express Link devrait augmenter le rapport prix/performance d’une organisation, mais les responsables de centres de données doivent comprendre quels systèmes peuvent le mieux en tirer parti.

Compute Express Link, ou CXL, permet de prendre en charge de grandes mémoires de manière cohérente entre les processeurs. C’est une bonne alternative à la façon dont les GPU fonctionnent actuellement, où les données se déplacent de la mémoire de l’hôte vers la mémoire du GPU via un canal d’E/S PCIe plus lent. CXL 3.0 permet également d’allouer de la mémoire partagée à différents hôtes d’un système, permettant ainsi à la mémoire de se désagréger, de la même manière que le stockage l’est aujourd’hui.

Jusqu’à présent, les systèmes qui comprenaient plusieurs types de processeurs (tels que les processeurs CPU, GPU et AI) décomposaient la mémoire en différents espaces – un pour le serveur, un pour le GPU et peut-être un pour le processeur AI – et les administrateurs traitaient tout le partage de données entre ces appareils sous la forme d’un transfert d’E/S. Compute Express Link est un moyen de faire en sorte que tous les accès à la mémoire ressemblent à de la mémoire pour tous les processeurs.

Pourquoi CXL est important

Aujourd’hui, toutes les communications entre un GPU ou un périphérique similaire et la mémoire d’un serveur sont effectuées en tant qu’E/S. Les E/S sont un moyen beaucoup plus lent de mettre à jour la mémoire par rapport au canal mémoire. De même, toute la gestion des données entre le CPU du serveur et la mémoire d’un accélérateur a également été traitée comme des E/S, ce qui ralentit son mouvement de données dans les deux sens.

Avant la technologie CXL, l’hôte gérait les mémoires de ces systèmes via PCIe. L’interface physique PCIe est rapide, mais le protocole ne l’est pas, en particulier pour les transferts de données volumineux. CXL permet aux administrateurs d’effectuer des transferts de données beaucoup plus rapidement, mais le protocole CXL est plus limité que celui de PCIe.

Une partie du retard provient également du fait que le logiciel gère PCIe via des commutateurs de contexte pilotés par interruption. Les accès mémoire, en revanche, sont gérés immédiatement par le processeur, sans utiliser de protocole d’E/S piloté par interruption.

CXL permet aux accélérateurs d’accéder à la mémoire d’un serveur en tant que mémoire et permet au serveur d’accéder à la mémoire d’un accélérateur en tant que mémoire. Il n’y a pas d’interruptions ni de changements de contexte.

Cette technologie accélérera certaines tâches. Avant CXL, les administrateurs chargeaient une carte GPU de la même manière qu’ils écrivaient sur un SSD PCIe : via un canal d’E/S PCIe. Il y a beaucoup de surcharge logicielle dans un transfert d’E/S, donc ces transferts sont très lents. En convertissant ces accès en sémantique standard de chargement de mémoire, cette surcharge disparaît et les administrateurs peuvent rapidement copier les données de la mémoire du serveur vers la mémoire du GPU. Les données voyagent également dans l’autre sens, de sorte que les administrateurs peuvent copier le contenu de la mémoire de l’accélérateur AI dans la mémoire du serveur hôte en tant que copie mémoire à mémoire.

La technologie CXL fournit une grande mémoire à faible coût pour les applications gourmandes en mémoire.

Ce n’est pas simple à mettre en œuvre, cependant. Lorsque deux appareils indépendants accèdent à la mémoire de l’autre en tant que mémoire, le processus peut perdre sa cohérence. Par exemple, si un processeur de serveur a mis en cache un certain emplacement mémoire et qu’un accélérateur modifie cet emplacement mémoire, les administrateurs doivent mettre à jour la copie mise en cache dans le processeur du serveur. La technologie CXL utilise des mécanismes intégrés pour garantir que les administrateurs gèrent correctement ces événements.

Comme pour la plupart des modifications architecturales, CXL se concentre sur l’augmentation du débit de calcul et la réduction des coûts. En réduisant les délais de transfert de mémoire à mémoire, CXL optimise l’utilisation du matériel existant en modifiant uniquement le logiciel sous-jacent.

En fait, l’interface physique de PCIe et CXL est la même. Lors de l’initialisation, ces protocoles déterminent si un certain canal sera utilisé comme voie PCIe ou pour CXL.

Qui utilise CXL ?

La plupart des adopteurs précoces potentiels se trouvent dans des centres de données à grande échelle. Les administrateurs peuvent utiliser CXL comme mécanisme pour partager la mémoire mise en commun entre de nombreux serveurs, ce qui le rend plus intéressant pour les grandes installations ; cela pourrait aider à améliorer le débit du centre de données, en plus de réduire les coûts et le nombre de serveurs.

Les gestionnaires de centres de données utiliseront également CXL dans d’autres applications, en particulier dans les sous-systèmes qui ont leur propre mémoire, tels que les cartes GPU et les accélérateurs d’IA. Attendez-vous à voir CXL se généraliser à long terme dans les systèmes à plusieurs processeurs.

CXL n’était-il pas une chose Optane?

Beaucoup de gens ont classé CXL comme un endroit où mettre les modules DIMM Optane. La décision d’Intel de réduire Optane n’affecte pas l’utilisation de CXL.

Une partie importante du support de CXL se trouve dans la communauté hyperscale. Les centres de données hyperscale s’intéressent à la technologie CXL pour sa prise en charge des pools partagés de DRAM. Pour la plupart de ces entreprises, la DRAM est une grande préoccupation. Par exemple, considérez une batterie de serveurs avec 20 000 serveurs qui sont tous configurés de la même manière avec une certaine quantité de DRAM. S’il y a trop peu de DRAM pour certaines applications, ces applications fonctionneront lentement. Les pages sont échangées sur et hors du stockage plus fréquemment que souhaité.

Alors, pourquoi ne pas faire en sorte que tous les serveurs utilisent un large complément de DRAM ? Cela coûte plus cher, mais il y a aussi d’autres problèmes. La DRAM est un gros consommateur d’énergie, il y a donc une motivation à réduire sa taille. Une grande partie de cette énergie devient de la chaleur dissipée, de sorte que les coûts de refroidissement augmentent avec plus de DRAM. Il est recommandé d’équiper chaque serveur de la taille DRAM pratique minimale.

Certains administrateurs pourraient être tentés de dédier certains serveurs à des applications à grande mémoire. Cela va à l’encontre du concept de virtualisation et de composabilité, où les tâches peuvent être librement attribuées à n’importe quel serveur en supposant que tous les serveurs du centre de données sont équivalents. De plus, tout serveur doté d’une grande quantité de mémoire DRAM laisse une grande partie de cette mémoire inactive lorsqu’il effectue des tâches de mémoire plus petite.

D’autres parties du système allouent dynamiquement des ressources partagées, telles que le stockage et même les serveurs dans le cas de la virtualisation. Pourquoi ne peut-on pas faire la même chose avec la mémoire ? C’est la principale motivation des centres de données hyperscale à adopter des pools de mémoire partagée. Les applications qui nécessitent de grandes mémoires peuvent emprunter une partie de la mémoire du pool et l’abandonner lorsque la tâche est terminée.

De cette façon, les serveurs individuels peuvent contenir relativement peu de DRAM interne, appelée près de la mémoireet emprunter ce dont ils ont besoin à la piscine de l’autre côté du canal CXL, ou lointain souvenir.

Comment CXL améliore les performances

Presque tous les programmes fonctionnent mieux lorsque les administrateurs ajoutent de la mémoire, mais il y a un point de rendement décroissant pour toutes les applications. La technologie CXL aide en permettant au système de déterminer dynamiquement quels programmes devraient bénéficier d’une amélioration des performances et lesquels ne le devraient pas.

Dans un exemple, l’application A subit une forte augmentation chaque fois que sa taille de mémoire est doublée, tandis que l’application B voit une augmentation plus modeste et que l’application C n’est que légèrement affectée par la taille de la mémoire. Tout système qui exécute des instances de l’application A doit allouer autant de mémoire partagée à cette application que possible et doit allouer tout ce qui reste à l’application B.

S’il n’y a pas d’instances de l’application A, l’application B devrait obtenir la majeure partie du pool de mémoire, les restes allant à l’application C. Toutes les applications bénéficieront alors de ces performances améliorées.

Mais cet exemple est trop simple. Si un bloc de mémoire se libère et que les gestionnaires de centre de données peuvent utiliser ce bloc pour accélérer une instance de l’application B de 12 %, mais cela n’accélérera une instance de l’application A que de 11 % simplement parce que l’application A a déjà été beaucoup allouée de mémoire, l’algorithme d’allocation dynamique devrait favoriser l’application B.

Un superviseur relativement averti doit gérer ce processus. Ce logiciel sera développé au fil du temps.

En fin de compte, cependant, tout dépend de la façon dont un grand système peut fournir plus de mémoire aux applications les plus gourmandes en mémoire en cas de besoin, tout en réduisant simultanément la population de DRAM du centre de données, avec son coût élevé, sa consommation d’énergie et ses exigences de refroidissement.

La technologie CXL fournit une grande mémoire à faible coût pour les applications gourmandes en mémoire. Il permet également aux accélérateurs et aux serveurs d’écrire dans la mémoire de l’autre, tout en maintenant la cohérence. C’est beaucoup pour quelque chose qui est un nouveau protocole fonctionnant sur du matériel PCIe existant.

Laisser un commentaire