Accès direct à la mémoire (dma)

Définition - Que signifie l'accès direct à la mémoire (DMA)?

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 des données directement vers ou depuis la mémoire principale, en contournant le processeur pour accélérer les opérations de mémoire.

Le processus est géré par une puce connue sous le nom de contrôleur DMA (DMAC).

Definir Tech explique l'accès direct à la mémoire (DMA)

Une partie définie de la mémoire est utilisée pour envoyer des données directement d'un périphérique à la carte mère sans impliquer le microprocesseur, de sorte que le processus n'interfère pas avec le fonctionnement global de l'ordinateur.

Dans les ordinateurs plus anciens, quatre canaux DMA étaient numérotés 0, 1, 2 et 3. Lorsque le bus d'extension d'architecture standard (ISA) 16 bits a été introduit, les canaux 5, 6 et 7 ont été ajoutés.

ISA était une norme de bus informatique pour les ordinateurs compatibles IBM, permettant à un périphérique d'initier des transactions (maîtrise du bus) à une vitesse plus rapide. Le contrôleur ISA DMA dispose de 8 canaux DMA, chacun associé à une adresse 16 bits et à des registres de comptage.

ISA a depuis été remplacé par des cartes d'extension de port graphique accéléré (AGP) et d'interconnexion de composants périphériques (PCI), qui sont beaucoup plus rapides. Chaque DMA transfère environ 2 Mo de données par seconde.

Les outils de ressources système d'un ordinateur sont utilisés pour la communication entre le matériel et le logiciel. Les quatre types de ressources système sont:

  • Adresses d'E / S.

  • Adresses mémoire.

  • Numéros de demande d'interruption (IRQ).

  • Canaux d'accès direct à la mémoire (DMA).

Les canaux DMA sont utilisés pour communiquer des données entre le périphérique et la mémoire système. Les quatre ressources système reposent sur certaines lignes d'un bus. Certaines lignes du bus sont utilisées pour les IRQ, certaines pour les adresses (les adresses d'E / S et l'adresse mémoire) et d'autres pour les canaux DMA.

Un canal DMA permet à un appareil de transférer des données sans exposer le processeur à une surcharge de travail. Sans les canaux DMA, la CPU copie chaque élément de données à 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 la CPU pendant le processus de lecture / écriture et ne permet pas d'effectuer d'autres travaux tant que l'opération n'est pas terminée.

Avec DMA, la CPU peut traiter d'autres tâches pendant le transfert de données. Le transfert de données est d'abord lancé par la CPU. Le bloc de données peut être transféré vers et depuis la mémoire par le DMAC de trois manières.

En mode rafale, le bus système n'est libéré qu'une fois le transfert de données terminé. En mode de vol de cycle, pendant le transfert de données entre le canal DMA et le périphérique d'E / S, le bus système est abandonné pendant quelques cycles d'horloge afin que l'UC puisse effectuer d'autres tâches. Lorsque le transfert de données est terminé, la CPU reçoit une demande d'interruption du contrôleur DMA. En mode transparent, le DMAC ne peut prendre en charge le bus système que s'il n'est pas requis par le processeur.

Cependant, l'utilisation d'un contrôleur DMA peut entraîner des problèmes de cohérence du cache. Les données stockées dans la RAM accédée par le contrôleur DMA peuvent ne pas être mises à jour avec les données de cache correctes si le CPU utilise la mémoire externe.

Les solutions incluent le vidage des lignes de cache avant de commencer les transferts DMA sortants ou l'exécution d'une invalidation de cache sur les transferts DMA entrants lorsque des écritures externes sont signalées au contrôleur de cache.