La DMA

 Introduction

La DMA est le dernier chapitre de ce domaine abordé par l’auteur. Le prochaine article parlera de la DMA appliquée au DSPIC.

La notion DMA

DMA est l’acronyme anglais de Direct Memory Access ce qui veut dire un accès direct à la mémoire. Il s’agit d’un transfert direct et bidirectionnel de données via un contrôleur adapté entre un périphérique et la mémoire principale de la machine. Ce procédé ne fait pas intervenir le processeur que pour initier et conclure le transfert à travers des interruptions.

Ainsi le transfert DMA offre un moyen plus rapide pour l’échange de blocs de données, entre la mémoire et le périphérique en question ou entre deux blocs de mémoire, que la méthode classique. En effet, cette dernière fait intervenir le processeur dans le transfert de chaque octet ; c’est-à-dire par la lecture, l’écriture, la vérification de la fin de l’échange et l’incrémentation d’adresses en plus du traitement des données transférées.

En ce qui concerne la technique DMA, un autre périphérique spécialisé se charge du transfert, à savoir le contrôleur DMA ou le DMAC, et le processeur n’a qu’à s’occuper du traitement de données. Le processeur donne au DMAC les informations concernant l’échange, c’est à dire l’adresse de début du bloc en mémoire, la taille du bloc et le sens de l’échange et autorise l’échange.

Il y a également une introduction de la notion de priorité vu que la mémoire n’autorise qu’un seul accès par cycle. En fait, n’ayant pas le pouvoir d’attendre aussi longtemps que le processeur, le DMAC est plus prioritaire en accédant à la mémoire que le processeur. Cette technique s’appelle le vol de cycle.

 La DMA dans  les ordinateurs
Le DMA est un canal utilisé pour les transferts de données à haute vitesse. Il est souvent désigné sous le nom de
canal d’accès direct à la mémoire. Il va être utilisé avec les composants nécessitant de gros transfert de données à la plus haute vitesse possible. Un port série n’utilisera pas de port DMA , mais une carte réseau en mobilisera souvent un. Les premiers PC ( XT ) ne disposaient que de 4 canaux DMA, mais depuis les PC AT, ce nombre a été porté à 8.
Ce nombre a été obtenu grâce à l’ajout d’un second composant, greffé sur le premier. Ainsi, un canal a été détourné de façon à assurer la liaison entre ces deux chips. On utilise à cet effet le canal n°0 que l’on met en liaison avec le n°4. Ce dernier devient alors indisponible.
 Fonctionnement
Le but principal du DMA est de prendre en charge les gros transferts de données libérant ainsi le processeur. Il offre un canal détourné ( représenté en noir ci−dessous ). Le processeur ainsi libéré des tâhes de transfert peut se consacrer à d’autres tâches.
Il convient de noter que les périphériques PCI n’utilisent pas le DMA.
Alors que dans un transfert DMA standard, le contrôleur DMA dirige le transfert, il arrive que le périphérique décide de tout piloter. On parle alors de Bus Mastering. En effet, les périphériques modernes disposent de circuit DMA nettement plus véloces que le bon vieux contrôleur intégré à votre carte mère. Cela permet, entre autres, des nouveaux modes tels que l’Ultra ATA
.
 Paramètrage
Il est important, lors des assignations de canaux DMA, de ne pas affecter deux fois un même canal. En effet, seul un composant pourrait le gérer correctement. Le tableau ci−contre vous indique les DMA affectés par défaut dans les PC de type AT.

 

La DMA est une technique utilisée pour transférer de gros volumes de données entre les interfaces E/S et la mémoire.

Exemple : les contrôleurs de disque dur , carte graphique , cartes réseau et cartes son.

La Dma peut aussi être utilisée :

  • Pour le transfert de données entre circuits en mode multi-processeurs
  • Pour la copie « mémoire à mémoire » ou le déplacement de données

Souvenez vous qu’un simple programme d’E/S et de gestion d’interruption requière l’intervention du processeur pour transférer les données, et que plusieurs données transférées doivent passées via le processeur.

Le CPU lit l’interface E/S( ou la mémoire) et écrit vers la mémoire ou l’interface.

Dans la technique DMA , un module appelé contrôleur DMA (DMAC) est utilisé comme un processeur en générant des adresses et en initialisant des cycles lecture/écriture de mémoire.

Le processeur configure le DMAC et lui délègue les E/S et peut ainsi continuer son travail.

Toutes les fonctions E/S sont réalisées par le DMAC qui prend alors le contrôle du bus et les données ne passent plus via le processeur.

 

Types de contrôleurs DMA

  • Flow –Through( explicite)

La donnée transférée entre la mémoire et l’interface E/S passe via le DMAC. Le DMAC lit en premier la donnée dans un registre puis l’écrit vers le destinataire

  • Fly-by(Implicite)

La donnée ne passe pas via DMAC . Suite à l’accès du contrôleur DMA au bus, le contrôleur place l’adresse source ou destination ainsi que d’autres signaux de contrôle( R/W,VMA etc…). Il active la mémoire et l’interface E/S en même temps.

Il initialise ainsi simultanément un cycle de lecture/écriture. La donnée est lue à partir de l’adresse source, et écrite vers la destination en un seul cycle d’horloge.

Cette technique implique que la source ou la destination ne nécessite pas d’adresse, cependant il peut probable que les deux aient la même.

Toutefois, le DMAC fly-by ne peut transférer des données que entre un port d’E/S et une adresse mémoire et non entre 2 ports E/S et deux adresses mémoire.

  • Vol de cycle (stealing)

Ce mode entrelace l’exécution d’instruction par le processeur et transfère la donnée par le DMAC. Le bolc de données est transféré plus lentement que dans un mode de transfert de bloc.

  • Mode transparent (hidden)

Le DMAC qui surveille le CPU et le bus n’est utilisé par le DMAC que lorsque le processeur n’est pas utilisé.

Lorsque le DMAC reconnaît que le processeur est en train d’exécuter une instruction lui permettant d’être libre pendant suffisamment de cycles d’horloge, il entreprend un transfert durant ce temps.

Le processeur ne ralenti pas.

Le transfert d’un bloc de données peut être plus long que dans un autre mode. Le désavantage est que le matériel doit déterminer quand le processeur n’est pas utilisé par le système.

Les modes vol de cycle et de bloc sont deux modes de transfert communs en DMA

 

 

Les étapes de transfert en technique DMA

Le nouveau bus maître est maintenant le DMAC. C’est la responsabilité du DMAC de permettre la génération de tous les signaux d’adresse mémoire identiques au CPU.

 

  1. Fly-by

Le DMAC envoie à l’interface E/S des signaux ACK

L’interface lit la donnée et la transfère sur le bus

  1. Flow-through

Le DMAC envoie à l’interface E/S des signaux ACK

Le DMAC lit la donnée de l’interface E/S et l’écrit vers la mémoire ou lit la donnée de la mémoire , envoie un ACK à l’E/S et écrit la donnée à l’interface E/S.

Une fois le transfert terminé, le module DMAC peut envoyer une demande d’interruption au processeur pour l’informer que son travail est terminé.

Le processeur peut lire les registres internes de DMAC et récupérer l’information.

Certaines interruptions ne sont pas prises en compte lors de la demande de bus et du transfert de données.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Laisser un commentaire