L'accès direct à la mémoire (en anglais DMA pour Direct Memory Access) est un procédé informatique où des données circulant de, ou vers, un périphérique (port de communication, disque dur, etc.) sont transférées directement par un contrôleur adapté vers la mémoire principale de la machine, sans intervention du microprocesseur si ce n'est pour lancer et conclure le transfert[1]. La conclusion du transfert ou la disponibilité du périphérique peuvent être signalés par interruption.
On l'oppose ainsi à des techniques de polling où le microprocesseur doit attendre chaque donnée.
Description
Le DMA est nécessaire pour conserver la fluidité d'utilisation d'un système multitâche lors de l'accès à des périphériques rapides tels que les disques durs, sachant que pour ce type de périphériques, il est impossible de transférer chaque donnée par une interruption. Une alternative est que le périphérique ait une mémoire tampon partagée avec le système, dont le remplissage est signalé par une interruption. Cet arrangement, utilisé sur certains contrôleurs de réseau, induit cependant un surcoût en raison de cette mémoire rapide supplémentaire.
Les modes de DMA
Mode | Débit maximum Nombre de pages | |
---|---|---|
N° | Nom | Mo/s |
0 | transfert simple (interleaving mode) | 4,16 |
1 | transfert de blocs (burst mode) | 13,3 |
2 | transfert en cascade | 16,6 |
3 | Ultra DMA 33 | 33,3 |
4 | Ultra DMA 66 | 66,7 |
5 | Ultra DMA 100 | 100,0 |
6 | Ultra DMA 133 | 133,3 |
DMA et mémoire virtuelle
On parle de 'Maître du bus ADM' (DMA busmaster)[Qui ?] quand le périphérique qui fonctionne en mode DMA peut adresser lui-même les données sur le bus système, et de 'scatter-gather' quand un même transfert peut porter sur une succession de plusieurs zones mémoires. Cette dernière fonctionnalité est pratique pour les systèmes à mémoire virtuelle, car un tampon situé à des adresses contiguës en mémoire virtuelle est en général formé de plusieurs blocs de mémoire vive.
Résolution des conflits
Pendant le fonctionnement du DMA, celui-ci entre parfois en conflit avec le processeur, les mémoires ne pouvant effectuer par définition qu'un accès par cycle[4]. Le DMA, ne pouvant pas forcément attendre aussi longtemps que le processeur (qui ne risque pas, lui, de perdre de l'information au vol), il a la priorité d'accès, technique qui se nomme le vol de cycle.
Notes et références
- DMA : Définition, sur le site dicofr.com, consulté le 11 mai 2015
- (fr) « DMA », sur Riff News (consulté le )
- admin_t, « DMA », sur Tech Lib (consulté le )
- C'est la définition même du cycle mémoire
Voir aussi
Lien externe
- « Accès direct à la mémoire (DMA) coalescence », sur Intel, (consulté le )
- La Rédaction TechTarget, « Direct Memory Access (DMA) », sur LeMagIT, (consulté le )
- « DMA : Direct Memory Access », (consulté le )
- « DMA (direct Memory Access - accès direct à la mémoire) », sur Materiel-informatique.be, (consulté le )
- Merlina[le lien externe a été retiré], « Qu’est-ce que l’accès direct à la mémoire ? », sur commentouvrir.com, (consulté le )
- « Qu'est-ce que Direct Memory Access », sur Connaissances informatiques (consulté le )
- admin_t, « DMA », sur Tech Lib (consulté le )
- Minouprof, « La DMA », (consulté le )
- « DMA - Direct Access Memory », sur Dico du net (consulté le )
- « Activation du mode DMA », sur avs4you (consulté le )