Le Français Kalray lance un CPU qui booste réseau, stockage et IA
Le processeur MPPA3 Coolidge permet de construire des cartes contrôleurs qui délivrent 6 millions d’IOPS et des accélérateurs qui analysent 5 600 images par seconde.
La France a son propre fournisseur de processeurs. L’entreprise s’appelle Kalray, elle a été fondée en 2012 par d’anciens du CEA et elle lance ces jours-ci la première version commerciale de sa puce, le MPPA3, alias Coolidge. Fonctionnant à 1,2 GHz et composé de 80 cœurs, le Coolidge a vocation à concurrencer soit les puces de Mellanox et Broadcom sur les cartes NIC réseau/stockage, soit celles d’accélération sur des cartes dédiées, par exemple à l’analyse de flux vidéo.
« Nous grimpons à 6 millions d’IOPS par carte NIC double processeur, là où nos concurrents n’atteignent généralement que 2 millions d’IOPS ou, dans les meilleurs cas, 4 millions d’IOPS. Et en matière d’accélération, un test GoogleNet a démontré qu’une carte dotée de deux MPPA3 Coolidge pouvait traiter 5 600 images par seconde, là où une carte à base de GPU au prix équivalent ne savait en traiter que 2 500 », revendique Olivier Lauvray, en charge de la division datacenter chez Kalray.
Le nom MPPA3 signifie Massive Parallel Processor Array de 3e génération. La première était un prototype, la seconde avait été livrée à plusieurs fabricants d’équipements pour qu’ils l’évaluent, la troisième arrive aujourd’hui pour intégrer différentes solutions commerciales. On trouve déjà le processeur sur des cartes d’accélération mathématique dans les serveurs de supercalcul qu’assemble l’intégrateur 2CRSi. NXP s’en sert pour proposer une plateforme de perception intelligente intégrée aux véhicules autonomes.
Coolidge apparaît aussi sur des cartes Ethernet de deux fois 100 Gbit/s qui, non seulement, supportent le NVMe-over-RoCE et NVMe-over-TCP, mais peuvent aussi prendre en charge – sur le modèle « target » – des fonctions de stockage comme la déduplication. Le fabricant de serveurs en marque blanche Wistron utilise déjà trois cartes avec un Coolidge dans sa baie de disques JBOF Lymma, qui contient 24 disques NVMe, pour offrir 9 millions d’IOPS. Une prochaine version, avec trois cartes contenant deux Coolidge, devrait atteindre 18 millions d’IOPS. L’intérêt des NIC (Network Interface Card) à base de Coolidge, surtout, est d’offrir un maximum de bande passante Ethernet à la machine en utilisant un minimum de slots PCIe, ce qui en libère d’autant plus pour connecter un plus grand nombre de disques NVMe.
Enfin, les processeurs MPPA, d’une manière générale, font partie du projet EPI qui vise à développer des processeurs de supercalcul européens. En l’occurrence, ils se destinent plus exactement à épauler les puces ARM « Rhea » que l’entreprise SiPearl doit lancer d’ici à 2021.
80 cœurs par processeur de 35 watts
Le processeur Coolidge MPPA3 se compose de 5 clusters de 16 cœurs 64 bits gravés en 16 nm ; il est actuellement fabriqué dans les usines de TSMC. Chaque cœur dispose d’un cache d’instruction et de données et 16 Ko chacun. Une unité vectorielle vient compléter les unités entières et à virgule flottante ; l’ensemble peut traiter des algorithmes comme l’Erasure Coding avec une bande passante de 50 Gbit/s. Le jeu d’instructions est propriétaire, mais Kalray indique fournir tous les outils nécessaires pour recompiler facilement du code écrit pour x86 ou ARM.
Au sein d’un cluster, 16 cœurs utiles sont disposés autour d’une mémoire cache L2 commune de 4 Mo. Un 17e cœur est gravé pour prévenir tout risque de défaillance sur les autres. Un circuit se charge de mettre en réseau les cœurs avec ceux des quatre autres clusters, via une bande passante de 600 Gbit/s.
Au niveau du processeur lui-même, les 5 clusters sont entourés de deux contrôleurs DDR4 pour accéder à deux bancs de RAM indépendants, ce qui garantit par exemple que les cœurs dédiés à une application ne soient en aucun cas impactés par ceux qui en exécutent une autre. On y trouve également 16 canaux PCIe Gen4, deux contrôleurs Ethernet 100 Gbit/s, un contrôleur pour des bus GPIO, SPI, I2C, UART, CAN, PWM, USB 2.0 et même un firmware pour sécuriser le démarrage depuis une mémoire Flash gérée par le contrôleur interne SSI. À 1,2 GHz, le Coolidge délivre des puissances de 384 GFLOPS en double précision, 1,15 TFLOPS en simple précision, 4 TFLOPS en 16 bits et 25 TOPS pour les calculs entiers sur 8 bits. La consommation énergétique varie de 20 à 35 watts.
Les processeurs Coolidge peuvent être enchaînés pour fonctionner de concert. Dans ce cas, ils communiquent via des canaux PCIe Gen 4 avec une bande passante de 150 Gbit/s. Précisons que sur les cartes Konic que Kalray propose lui-même, le modèle à un processeur comme celui à deux processeurs (totalisant 75 watts) communiquent toujours physiquement avec le serveur hôte via 16 canaux PCIe Gen4. Les 16 canaux de chaque processeur sont utilisés soit pour communiquer à tour de rôle avec le serveur, soit dès que nécessaire entre les processeurs.
Au-delà du réseau et du stockage, accélérer et fiabiliser les applications
Les cartes Konic se veulent multi-usages. La Konic200-LP monoprocesseur – format mi-hauteur, mi-longueur – dispose de deux connecteurs 100 GbE au format QSFP-DD et supporte de 4 à 32 Go de RAM DDR4 pour exécuter du code, majoritairement lié au stockage ou au réseau, mais aussi au traitement au fil de l’eau des données transférées : cela va de l’empaquetage des données en TCP, à leur chiffrement, voire à leur analyse avec des algorithmes d’intelligence artificielle. Kalray avance qu’il revient moins cher d’accélérer certaines fonctions ainsi, plutôt qu’en passant par des cartes FPGA ou GPU additionnelles.
La Konic200-HP à double processeur – format hauteur pleine, mi-longueur – n’offre également que deux ports 100 GbE. La puissance des 80 cœurs supplémentaires, servie cette fois par un maximum de 64 Go, est destinée à exécuter des applications qui n’ont potentiellement plus rien à avoir avec le réseau ou le stockage.
Olivier LauvrayKalray
« Nous parlons d’architecture composable. Nous proposons des cartes où chacun des 80 ou 160 cœurs peut être utilisé pour exécuter une application différente, y compris son propre environnement Linux », avance Olivier Lauvray.
« L’avantage de le faire depuis nos cartes, plutôt que depuis les processeurs x86 ou ARM des serveurs, est que les contrôleurs réseau internes, qui répartissent la charge entre nos cœurs, offrent un fonctionnement déterministe. Ici, chaque processus peut fonctionner sur un cœur en particulier, avec un nombre de cycles donnés. Ceci permet de garantir la fiabilité des exécutions et rend la latence prédictive », argumente-t-il.
Selon lui, ces caractéristiques devraient intéresser les constructeurs d’équipements embarqués. Notamment dans l’avionique, où il est primordial de savoir en combien de cycles fonctionne chaque processus. Le processeur disposant d’un module qui monitore son fonctionnement, l’application hôte découvre en temps réel qu’une tâche ne consomme plus le nombre de cycles prévu. Il devient dès lors possible de basculer immédiatement sur une procédure de sécurité, qui contourne toute défaillance ou qui contrecarre toute tentative de piratage.