![](https://www.developpez.com/images/logos/intel.png)
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.
![](https://01.org/sites/default/files/resize/users/u71223/dsa-intro-1-698x450.png)
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.
![](https://01.org/sites/default/files/resize/users/u71223/dsa-intro-2-500x450.png)
Source et image : Intel
Voir aussi : la spécification