Menu Fermer

DMA : Direct Memory Access

DMA pour Direct Memory Access est un mode de communication entre les périphériques d’un ordinateur.
Il transfère le bloc de données entre la mémoire et les périphériques du système, sans la participation du processeur. L’unité qui contrôle l’activité d’accès direct à la mémoire est appelée contrôleur DMA.

Dans ce tutoriel, je vous donne une définition du DMA.
Vous trouverez aussi les explications sur le fonctionnement ainsi que les types de DMA.

DMA : Direct Memory Access

Qu’est-ce que DMA

DMA signifie accès direct à la mémoire.
C’est une méthode qui permet à un périphérique d’entrée/sortie (E/S) d’envoyer ou de recevoir des données directement vers ou depuis la mémoire principale, en contournant le CPU pour accélérer les opérations de mémoire.

Un canal DMA permet à un dispositif de transférer des données sans exposer l’unité centrale à une surcharge de travail. Sans les canaux DMA, l’unité centrale (CPU) copie chaque donnée à l’aide d’un bus périphérique à partir du périphérique d’E/S. L’utilisation d’un bus périphérique occupe l’unité centrale pendant le processus de lecture/écriture et ne permet pas d’effectuer d’autres tâches tant que l’opération n’est pas terminée.

Qu'est-ce Direct Memory Access (DMA)

Le processus est géré par une puce appelée contrôleur DMA (DMAC).
Les contrôleurs DMA sont présents sur les disques et les dispositifs de mise en réseau. Ils peuvent donc transférer des données de et vers la mémoire/IO. Ils ne nécessitent qu’une configuration et peuvent ensuite effectuer tous les transferts de données de manière autonome, tandis que le processeur peut effectuer d’autres tâches importantes à ce moment-là.

Cela permet donc une utilisation plus efficace des interruptions, augmente le débit des données et réduit potentiellement les coûts du matériel en éliminant le besoin de tampons FIFO spécifiques aux périphériques.

De nombreux systèmes matériels adoptent l’accès direct à la mémoire, tels que les contrôleurs de disques, les cartes graphiques, les cartes réseau et les cartes son. Le DMA est également utilisé pour le transfert de données sur la puce dans les processeurs multicœurs. Par rapport aux ordinateurs dépourvus de canaux d’accès direct à la mémoire, les ordinateurs dotés de canaux DMA peuvent transférer des données entre des périphériques avec une surcharge du processeur beaucoup moins importante.

DMA : comment ça marche

La communication DMA est gérée par le contrôle DMA.
Le contrôleur DMA est une unité matérielle qui permet aux périphériques d’E/S d’accéder directement à la mémoire sans la participation du processeur.
Il se place entre le CPU, l’unité de périphériques et le bus système.

Fonctionnement DMA (Direct Memory Access)

Chaque transfert DMA fonctionne avec un cycle dont voici les étapes :

  • Lorsqu’un périphérique d’E/S souhaite transférer des données vers ou depuis la mémoire, il envoie une requête DMA (DRQ) au contrôleur DMA. Le contrôleur DMA accepte cette DRQ et demande à l’unité centrale d’attendre quelques cycles d’horloge en lui envoyant la demande Hold (HLD)
  • L’UC reçoit la demande de maintien (HLD) du contrôleur DMA, abandonne le bus et envoie l’accusé de réception de maintien (HLDA) au contrôleur DMA
  • Après avoir reçu l’accusé de réception de maintien (HLDA), le contrôleur DMA informe le périphérique d’E/S (DACK) que le transfert de données peut être effectué et le contrôleur DMA prend en charge le bus système et transfère les données vers ou depuis la mémoire
  • Lorsque le transfert de données est terminé, le DMA déclenche une interruption pour informer le processeur que la tâche de transfert de données est terminée et que le processeur peut reprendre le contrôle du bus et commencer le traitement là où il l’a laissé

Chaque fois qu’un processeur est invité à lire ou à écrire un bloc de données, c’est-à-dire à transférer un bloc de données, il demande au contrôleur DMA d’envoyer les informations suivantes.

Chaque cycle DMA entraîne généralement au moins deux cycles de bus : soit une lecture périphérique suivie d’une écriture mémoire, soit une lecture mémoire suivie d’une écriture périphérique, en fonction des adresses de base de transfert. Le contrôleur DMA lui-même n’effectue aucun traitement sur ces données. Il se contente de transférer les octets selon les instructions de ses registres de configuration.

Les modes DMA

Burst mode

En burst mode (mode rafale), le DMA bénéficie d’un accès complet au bus jusqu’à ce que le transfert de données soit effectué. Pendant toute cette période, aucun autre périphérique, y compris le CPU, ne peut accéder au bus de données. Ce mode facilite le transfert à grande vitesse des données de la mémoire vers un périphérique.
Le bus système n’est libéré qu’une fois le transfert de données terminé.

Cycle Stealing Mode

En mode cycle stealing, pendant le transfert de données entre le canal DMA et le périphérique d’E/S, le bus système est libéré pendant quelques cycles d’horloge afin que l’unité centrale puisse effectuer d’autres tâches. Lorsque le transfert de données est terminé, l’unité centrale reçoit une demande d’interruption du contrôleur DMA.

Il est similaire au mode de transfert en rafale, mais au lieu de transférer les données en une seule fois, elles sont transférées un octet à la fois.

Avec cette méthode, le taux de transfert est plus lent, mais il évite à l’unité centrale de rester inactive pendant une longue période.

Mode transparent

En mode transparent, le DMAC peut prendre en charge le bus système uniquement lorsque le processeur n’en a pas besoin.

Il ne transfère des données que lorsque l’unité centrale effectue des opérations qui n’utilisent pas les bus système.
Le principal avantage de ce mode est que l’unité centrale n’arrête jamais l’exécution de son programme.
Les principaux inconvénients de ce mode sont les suivants Le matériel nécessaire pour déterminer quand l’unité centrale n’utilise pas les bus système peut être assez complexe et relativement coûteux.
Le temps de transfert d’un bloc de données est plus long que pour les deux modes précédents.

Les avantages et inconvénients du DMA

Avantages :

  • Le transfert des données sans l’intervention du processeur accélère la lecture et l’écriture
  • Le DMA réduit le cycle d’horloge nécessaire pour lire ou écrire un bloc de données
  • La mise en œuvre de l’accès direct à la mémoire réduit également les frais généraux du processeur
  • Un autre avantage peut être la réduction de la consommation d’énergie

Inconvénients :

Comme il s’agit d’une unité matérielle, la mise en œuvre d’un contrôleur DMA dans le système est coûteuse.
Un problème de cohérence de la mémoire cache peut survenir lors de l’utilisation du contrôleur DMA.

Quels sont les modes de DMA

Il existe différents modes de DMA selon le débit et le nombre de pages mémoires utilisées.

ModeDébit maximum Nombre de pages
NomMo/s
0transfert simple (interleaving mode)4,16
1transfert de blocs (burst mode)13,3
2transfert en cascade16,6
3Ultra DMA 3333,3
4Ultra DMA 6666,7
5Ultra DMA 100100,0
6Ultra DMA 133133,3
Les modes de DMA

Source : https://fr.wikipedia.org/wiki/Acc%C3%A8s_direct_%C3%A0_la_m%C3%A9moire