UpMem accélère de 20 à 30 fois les calculs sur serveur en glissant des processeurs… dans les mémoires

UpMem

La start-up grenobloise UpMem pourrait devenir dans les prochaines années une véritable pépite industrielle tant le concept qu'elle a développé est aujourd’hui sans doute unique au monde. Son approche consiste à intégrer, au sein de mémoires vives DRam traditionnelles, des processeurs spécifiques, conçus pour réaliser des calculs simples sur de grandes bases de données. L'objectif est d'accélérer fortement des calculs complexes dont une partie peut être massivement parallélisée via les DPU (DRam Processor Units) de la jeune société. ...

« Dans le monde des serveurs, on arrive aujourd'hui à des architectures qui sont mal dimensionnées, explique d'emblée Gilles Hamou, cofondateur et président d’UpMem, start-up née officiellement en janvier 2015. Car si la taille des mémoires elles-mêmes atteint désormais un téraoctet, les bus de données entre processeurs et mémoires ont des bandes passantes insuffisantes, et la loi de Moore ne s’applique plus aux processeurs mis en œuvre dans ces serveurs informatiques. » Alors que, dans le même temps, les besoins en puissance de calcul ne cessent de croître dans de très nombreux domaines d’application : sciences du vivant, Internet des objets, algorithmes de traitement de données, etc.

Gilles Hamou, cofondateur et président d’UpMem

C'est pour adresser cette problématique qu'UpMem a mis au point une approche originale basée sur des unités de calcul 32 bits Risc peu complexes (sans capacité de calcul en virgule flottante par exemple), de petite taille, qui s’insèrent dans le procédé de fabrication des mémoires DRam (quelle que soit leur technologie de fabrication) . « Le processus de production des DRam est relativement simple et s’appuie sur un empilement de 3 à 4 couches de métal seulement, contre 12 voire plus pour un circuit logique, explique Gilles Hamou. Grâce à notre savoir-faire, qui est protégé par plusieurs brevets, nous avons conçu une architecture de processeur adaptée aux technologies de mémoires existantes, et qui ne modifie pas l’écosystème qui gravite actuellement autour de ces mémoires. » En d’autres termes, un processeur dit DPU (DRam Processor Unit) peut s’insérer dans un environnement matériel existant sans avoir à le modifier.

Des miniprocesseurs indépendants

Concrètement, ces DPU, qui font gonfler de 20 à 25% la taille physique d’une mémoire DRam traditionnelle, permettent par exemple de glisser jusqu’à 256 processeurs sur une mémoire de 16 Go (soit une unité de calcul tous les 64 Mo de mémoire). Chacun de ces miniprocesseurs exécute de manière indépendante son propre programme, sans recours à un système d’exploitation. De plus, pour minimiser au maximum les temps de latence, ces unités de calcul sont conçues nativement pour supporter le multithreading (et ce jusqu’à 24 threads en simultané).

Dans l’architecture proposée par UpMem, le processeur principal, un x86 par exemple, demeure toutefois le chef d’orchestre de l’application. C’est lui qui gère les opérations de lecture/écriture vers la mémoire et contrôle l’activité des coprocesseurs embarqués dans les DRam. Une simulation réalisée avec l’Inria, dans le cadre de la gestion d’algorithmes pour la génétique, a montré que le facteur d’accélération procuré par cette approche s’élevait à 30 par rapport à un serveur non équipé de DPU (voir ici le compte rendu complet de cette étude).

De leur côté, les DPU, dotés de 24 registres de 32 bits par thread, embarquent, outre de la mémoire, des instructions de base associées à des conditions de branchement  et à une série d'opérations artihmétiques et logiques. D'un point de vue programmation, le processeur principal peut envoyer des données et des commandes vers les DPU et récupérer les résultats produits par ces mémoires DPU, mais ces dernières peuvent aussi héberger un "petit" programme (une "tasklet" dans le jargon d'UpMem) qui traite les données au plus près des mémoires avant des les renvoyer au processeur principal. Dans ce type d'architecture, les DPU, en nombre plus ou moins élevé, peuvent exécuter en parallèle des tâches différentes, sans communiquer avec les DPU voisines associées chacune à leur bloc mémoire. Le travail de programmation consiste donc ici à écrire une application pour le processeur principal et diverses "tasklets" selon les besoins, le processeur principal assurant la synchronisation des transferts de données.

1,1 million d'euros déjà levés

La jeune pousse qui s'est appuyé sur les travaux du CEA-Leti et sur les travaux de Fabrice Devaux (à l'origine il y a quelques années de la société Trango, fournisseur d'une technologie de processeur virtuel et rachetée en 2008 par VMware) compte d’ores et déjà huit collaborateurs. Elle a levé 1,1 million d'euros pour le développement de la technologie et la mise en oeuvre d'une preuve de concept POC (Proof of Concept), et elle compte parmi ses actionnaires minoritaires la société Advans Group, spécialiste de la sous-traitance en projets complexes, qui a participé au capital d'amorçage. 

UpMem compte travailer en tant que société fabless et prévoit un premier prototype de puce opérationnelle pour la fin 2017. Avec comme premier marché visé les principaux fabricants de serveurs dans le monde.