À mesure que le nombre de composants partageant des données au sein des puces d’intelligence artificielle augmente, la gestion de ces données n’est plus une responsabilité exclusivement logicielle. Lorsqu’une unité d’accélération de données écrit dans la mémoire puis qu’une unité centrale de traitement la lit, ou lorsque les composants échangent des informations de contrôle partagées, les logiciels doivent savoir quelle copie des données est la plus récente. L’article explique que transférer une plus grande partie de cette tâche au matériel, au moyen de la cohérence de la mémoire, peut réduire la complexité des logiciels, les erreurs de coordination et la difficulté de développement des systèmes.
L’article est publié sous la forme d’un billet sponsorisé dans Semiconductor Engineering et a été rédigé par Ashley Stevens, directeur de la gestion des produits et du marketing chez Arteris, chargé des réseaux d’interconnexion cohérents et des communications entre matrices. Il propose donc une explication technique utile, mais présente également les capacités des produits d’Arteris, ce qu’il convient de prendre en compte lors de l’évaluation de cette thèse.
Des copies séparées à la mémoire partagée
Dans les systèmes plus anciens, il était possible de maintenir une séparation relativement nette entre le processeur et l’accélérateur. Le processeur communiquait avec l’accélérateur via PCIe, copiait les données dans la mémoire de l’accélérateur, envoyait un message, puis attendait les résultats. Ce modèle était pratique lorsque les unités fonctionnaient de manière plus indépendante, mais il devient plus complexe avec l’augmentation du volume de données partagées et du nombre d’étapes de traitement.
Le problème apparaît plus clairement dans les systèmes d’intelligence artificielle en périphérie, où le système peut intégrer un processeur généraliste et un accélérateur d’IA au sein d’un même SoC, ou les relier dans une conception reposant sur des puces à plusieurs matrices. Dans ce cas, les données passent par plusieurs étapes avant que le résultat n’atteigne l’application, tandis que les informations de coordination et de contrôle doivent être disponibles dans la bonne version pour les composants concernés.
La cohérence de la mémoire est une technologie au niveau de la puce qui maintient une vue unifiée des données partagées, qu’elles se trouvent dans la mémoire principale ou dans la mémoire cache. Au lieu que les logiciels suivent les modifications et vérifient la mise à jour des copies, le système d’interconnexion cohérent et le système mémoire prennent en charge une partie de cette tâche.
Qu’est-ce qui change concrètement ?
Le résultat fondamental n’est pas de supprimer toutes les opérations de copie ni de rendre toutes les communications identiques, mais de réduire la quantité de logique logicielle nécessaire pour coordonner le fonctionnement d’unités hétérogènes. Lorsque le matériel gère l’état des données partagées, les logiciels peuvent se concentrer davantage sur la logique applicative et la planification du travail, plutôt que de vérifier si chaque composant lit une copie ancienne ou mise à jour.
Cette évolution peut rendre les logiciels plus simples et plus faciles à développer, et peut également réduire les erreurs difficiles à détecter en fonctionnement. L’article établit un lien entre cette approche et la rapidité ainsi que la fiabilité du développement logiciel, mais ne fournit pas de chiffres permettant de mesurer l’ampleur de l’amélioration des performances ou du temps de développement. Les bénéfices quantitatifs ne peuvent donc pas être considérés comme établis sur la seule base du texte.
La cohérence là où elle est nécessaire
L’article ne considère pas que l’application de la cohérence à chaque transfert de données soit la meilleure conception. Les flux à large bande passante n’ont pas toujours besoin de la cohérence de la mémoire, tandis que les informations qui coordonnent le fonctionnement du système entre les unités de traitement nécessitent ce mécanisme. C’est pourquoi la plupart des puces d’intelligence artificielle utilisent, selon l’argument présenté, un mélange de réseaux d’interconnexion cohérents et non cohérents.
Les réseaux cohérents sont utilisés lorsque plusieurs unités de traitement partagent les mêmes données ou le même état, tandis que les réseaux non cohérents peuvent transporter les données qui n’ont pas besoin d’une vue partagée. Cette répartition donne aux concepteurs la possibilité d’optimiser les autres communications en fonction des exigences de bande passante, de latence et de consommation énergétique, au lieu d’imposer le coût de la cohérence à chaque chemin.
L’importance de la conception à plusieurs matrices
L’idée s’étend aux systèmes à plusieurs matrices, dans lesquels la puce de plus grande taille est divisée en plusieurs matrices qui échangent des informations. L’article affirme que maintenir la cohérence entre ces matrices peut contribuer à faire évoluer les systèmes hétérogènes sans transférer entièrement aux logiciels la responsabilité de coordonner les données partagées.
Arteris mentionne trois composants de son portefeuille dans ce contexte : FlexNoC pour les communications non cohérentes, FlexGen pour l’automatisation de la conception de réseaux NoC hautes performances dans les puces avancées et les systèmes à plusieurs matrices, et Ncore pour fournir un tissu d’interconnexion cohérent. Ces références expliquent la place de la technologie dans les produits de l’entreprise, mais ne constituent ni l’annonce d’un nouveau lancement ni une comparaison indépendante des solutions du marché.
Pourquoi cette actualité est-elle importante ?
La principale valeur architecturale de cette proposition est que l’augmentation du nombre de transistors consacrés à la simplification des logiciels n’est plus nécessairement considérée comme un gaspillage. À mesure que les systèmes d’intelligence artificielle adoptent des conceptions combinant processeurs généralistes, accélérateurs et puces à plusieurs matrices, la répartition des responsabilités entre matériel et logiciels devient une décision qui influe sur l’évolutivité et la facilité de développement.
La question pratique reste toutefois de savoir quelle quantité de matériel supplémentaire mérite d’être consacrée à la cohérence, et où il convient de s’arrêter afin d’éviter des coûts inutiles en matière de surface, d’énergie, de conception et de vérification. L’article propose le principe consistant à distinguer les données partagées des données non partagées, mais ne définit pas de critères quantitatifs pour prendre cette décision et ne présente ni résultats de test ni cas d’utilisation documenté comparant une approche cohérente à une autre reposant davantage sur une gestion logicielle.