Les premiers signes sont apparus dans des contributions au noyau Linux, avant d'être explicités. Intel travaille actuellement sur DSA, data streaming accelerator, la prochaine génération de sa technologie QuickData. L'objectif est d'échanger très rapidement des données entre le processeur et un accélérateur (stockage, réseau, mémoire, traitement de données) : cette technologie pourra s'occuper de l'échange de données et de certaines transformations (comme un calcul d'une somme de contrôle CRC), sans nécessiter de cycle sur un cœur de calcul. La virtualisation est prise en compte dès le départ, à travers IOV. On pourrait la voir arriver dès la génération Sapphire Rapids de processeurs Xeon, c'est-à-dire dès 2021.

Contrairement à une technologie comme DMA (direct memory access), dont QuickData est une variante, DSA permet de transformer les données et non de seulement les transformer. QuickData fait partie d'IOAT (I/O acceleration technologies), une ombrelle qui rassemble QuickData et d'autres mécanismes de communication. Cependant, IOAT n'a pas vraiment fait ses preuves et n'est plus géré sur les systèmes d'exploitation modernes (Windows 8, Linux 3 dès 2013).

Le module DSA dispose d'une série de files, où les requêtes sont stockées. Ce module est aussi constitué d'une série de moteurs d'exécution, chargés de traiter ces requêtes (potentiellement en parallèle, donc). Des moteurs d'exécution peuvent être groupés, selon les besoins : de fait, les files peuvent être réservées à un seul client ou bien partagées entre plusieurs. D'un point de vue technique, l'instruction MOVDIR64B permet de transmettre la description des tâches à effectuer (sans dépasser la longueur des files, fixée au niveau matériel, sans quoi certaines tâches devraient être abandonnées) ; ENQCMD (mode utilisateur) et ENQCMDS (mode noyau/superviseur) permettent de poster une demande dans une file donnée.


Comme tout système complexe, DSA a aussi besoin de la collaboration du noyau (Linux ou Windows, a priori). Celle-ci se passe à travers le pilote IDXD (Intel data accelerator driver), qui peut exposer les files configurées aux applications utilisateur. Elles sont décrites par des VDCM (virtual device composition module), de telle sorte qu'une application virtualisée puisse également bénéficier de la technologie.


Source et image : Intel

Voir aussi : la spécification