Que signifie l’Accès Direct à la Mémoire ?
L’accès direct à la mémoire (DMA) est une méthode qui permet à un périphérique d’entrée/sortie (E/S) d’envoyer ou de recevoir directement des données vers ou depuis la mémoire principale, en contournant le CPU pour accélérer les opérations de mémoire.
Le processus est géré par une puce appelée contrôleur DMA (DMAC).
Points clés
- L’accès direct à la mémoire permet à un périphérique d’interagir directement avec la mémoire vive d’un ordinateur hôte.
- Le DMA utilise un composant matériel dédié, appelé contrôleur DMA, pour gérer le processus de transfert de données.
- Avant que le DMA ne devienne une fonctionnalité standard, l’unité centrale de l’ordinateur hôte devait gérer chaque étape d’un transfert de données.
- La surcharge créée par les interruptions de l’unité centrale et le changement de contexte pendant les transferts de données rendait difficile l’exécution d’autres tâches par l’unité centrale.
- Le DMA a été développé pour que l’unité centrale de traitement de l’hôte puisse effectuer d’autres tâches pendant que les données sont transférées en arrière-plan.
Comment fonctionne l’Accès Direct à la Mémoire ?
Lorsqu’un périphérique doit transférer des données vers ou depuis la mémoire de son ordinateur hôte, son pilote de périphérique demande un canal DMA au système d’exploitation (OS) de l’hôte.
Une fois le canal DMA attribué, le système d’exploitation et le pilote du périphérique configurent le transfert en fournissant au contrôleur DMA des informations de base telles que l’emplacement de la mémoire, la taille des données et le fait que le transfert s’effectue vers ou depuis la mémoire.
À ce stade, le contrôleur DMA prend le contrôle du processus de transfert et l’unité centrale devient libre d’effectuer d’autres tâches.
Une fois le transfert de données terminé, le contrôleur DMA déclenche une alerte pour informer l’unité centrale et son système d’exploitation que le transfert est terminé.
Le système d’exploitation libère alors le canal DMA et le rend disponible pour une utilisation future par d’autres périphériques.
Types de DMA
Au fil des ans, différents types de DMA ont évolué afin d’optimiser le transfert de données dans diverses situations et en fonction des capacités du matériel.
Modes d’Accès Direct à la Mémoire
Les modes DMA sont des variations ou des réglages au sein d’un type de DMA qui précisent la manière dont le transfert est effectué.
Principes de l’Accès Direct à la Mémoire
Deux principes généraux ont guidé le développement et l’utilisation de l’accès direct à la mémoire.
- Minimiser l’implication de l’unité centrale en permettant au contrôleur DMA de devenir temporairement le référent.
- Inclure des mécanismes qui garantissent que les transferts DMA utilisent efficacement la mémoire et les ressources du système.
Bien que la plupart des systèmes d’exploitation activent le DMA par défaut, il ne s’agit pas d’un principe universel dans la conception du DMA lui-même.
D’une manière générale, cependant, la plupart des utilisateurs d’ordinateurs ont profité des avantages du DMA sans même le savoir.
DMA et RDMA
DMA signifie accès direct à la mémoire et RDMA signifie accès direct à la mémoire à distance. Les deux termes se ressemblent car ils impliquent tous deux un accès direct à la mémoire, mais le DMA est une fonctionnalité standard, alors que le RDMA est encore en évolution.
Concrètement, RDMA a étendu le concept de DMA aux transferts de données entre différents ordinateurs sur un réseau local (LAN) ou un réseau étendu (WAN) qui peut (ou non) inclure des centres de données tiers dans le nuage.
Le DMA utilise un contrôleur dédié pour décharger les interactions continues avec le processeur hôte. RDMA utilise des cartes d’interface réseau (NIC) spéciales pour contourner les CPU des deux systèmes concernés et permettre des transferts de données rapides et à faible latence.
Feature | DMA | RDMA |
---|---|---|
Scope | Minimiser l’intervention de l’unité centrale lors du transfert de données entre un périphérique et son hôte. | Minimiser l’intervention de l’unité centrale lors du transfert de données entre deux ordinateurs différents sur un réseau. |
Transfert de données | Entre un périphérique et la mémoire de son hôte. | Entre les mémoires de différents ordinateurs. |
Implication du CPU | L’Unité Centrale de l’hôte est libérée pour effectuer d’autres tâches pendant la transmission des données. | Les Unités Centrales des ordinateurs émetteurs et récepteurs sont libérées pour effectuer d’autres tâches pendant la transmission des données. |
Implication OS | Le système d’exploitation initie les transferts DMA, mais le transfert de données proprement dit est géré par le DMAC. | Le système d’exploitation initie les transferts DMA, mais le transfert de données proprement dit est géré par des cartes d’interface réseau spéciales. |
Exigences en matière de réseau | Ne nécessite pas de connexion au réseau. | Nécessite une connectivité réseau soutenue par une infrastructure réseau à haut débit. |
Complexité | Relativement simple à mettre en œuvre avec du matériel courant. | Plus complexe ; nécessite des cartes réseau et des commutateurs spéciaux compatibles RDMA. |
Maturité | Caractéristique standard de l’informatique personnelle. | Utilisé pour le calcul à haute performance (HPC) et les centres de données en cloud, mais les protocoles et le matériel évoluent encore. |
Avantages et inconvénients de la DMA
La DMA a ses avantages et ses inconvénients, mais en général, les avantages de la DMA l’emportent sur ses inconvénients.
- Facilite les transferts de données plus rapides en éliminant l’implication de l’unité centrale après l’initialisation
- Permet à l’unité centrale de se concentrer sur d’autres tâches pendant que les données sont transférées en arrière-plan.
- Permet des transferts de données importants sans ralentir les opérations
- Les transferts DMA contournent la mémoire cache du processeur et peuvent entraîner des incohérences entre les données de la mémoire cache et celles de la mémoire principale
- La DMA peut potentiellement être exploitée par des acteurs menaçants pour obtenir un accès non autorisé à la mémoire du système. Le VPN peut ajouter une couche de sécurité supplémentaire et rendre plus difficile l’exploitation à distance des vulnérabilités du DMA par un attaquant.
Les définitions de l’accès direct à la mémoire comme celle-ci ne sauraient trop insister sur l’importance de minimiser les interruptions de l’unité centrale en transférant le contrôle des transferts de données au contrôleur DMA. Chaque interruption introduit une surcharge et peut dégrader les performances du système en obligeant l’Unité Centrale à interrompre sa tâche en cours, à sauvegarder son état, à traiter l’interruption, puis à reprendre sa tâche précédente. En permettant à un contrôleur DMA de transférer directement des données, on élimine le besoin d’interactions continues avec le CPU, ce qui améliore non seulement les vitesses de transfert, mais aussi les performances du système en permettant au CPU d’effectuer d’autres tâches.Conclusion
FAQ
Qu’est-ce que l’accès direct à la mémoire en termes simples ?
Comment fonctionne un DMA ?
À quoi sert une carte DMA ?
Quels sont les modes de transfert en DMA ?
Quand dois-je utiliser le DMA ?
Quelle est la différence entre DMA et DVMA ?
Références
- Module contrôleur DMA (extrait de chapitre du SLAU208) (TI)
- Read Write Processor Bus Cycles (Eventhelix)
- Memory Lane – Direct Memory Access Attacks | Eclypsium | Eclypsium (Eclypsium)