Accès direct à la mémoire Principe du DMA Exemples mercredi 28 mars 2001
2 Accès direct à la mémoire L accès direct à la mémoire (Direct Memory Access DMA) est une technique matérielle facilitant les opérations d entrée-sortie, c est-à-dire les échanges de données entre le microcontrôleur, ou le microprocesseur, et le monde extérieur
3 Opérations d entrée-sortie Circuits périphériques adressés dans l espace mémoire (Memory Mapped) dans un espace d entrée-sortie (I/O Mapped) Utilisations de cycles de lecture ou d écriture sur le bus du microcontrôleur opérations programmées (Programmed I/O) Intervention du CPU requise pour chaque opération
4 Principe du DMA Des données vont pouvoir être échangées entre la mémoire centrale et les circuits périphériques sans intervention du CPU Un sous-système indépendant du CPU va transférer les données du circuit périphérique vers la mémoire (entrée) ou de la mémoire vers le circuit périphérique (sortie)
5 Fonctionnement du DMA Le sous-système de DMA va être configuré et démarré par le CPU Les données vont être échangées via des cycles de lecture ou d écriture en mémoire initiés par le sous-système de DMA Lorsque les opérations seront terminées le sous-système de DMA va interrompre le CPU
6 Sous-système de DMA Le sous-système de DMA comporte un registre d adresse qui va contenir l adresse où les données doivent être placées ou lues en mémoire ce registre pourra être incrémenté ou décrémenté à chaque transfert un compteur qui compte le nombre de données échangées un registre où les données vont transiter entre la mémoire et le circuit périphérique ce registre n est pas toujours présent
7 Mécanismes des échanges Mémoire DMA Compteur Adresse Donnée Circuit d'interface Donnée
8 Transfert à une adresse Les données ne transitent pas par le sous-système de DMA Lecture Écriture
9 Transfert à deux adresses Les données transitent par le sous-système de DMA Une lecture en mémoire est réalisée par le sous-système de DMA suivie d une écriture
10 Mode d accès à la mémoire Le sous-système de DMA doit accéder à la mémoire comme le CPU Pour faire ces accès il prend le contrôle du bus utilisation des mécanismes d arbitration du bus signaux BR, BG, BGACK du 68000 Le sous-système de DMA «vole» des cycles du bus au CPU incidence sur la performance du CPU
11 Types de transferts Deux types de transferts possibles pour accéder à la mémoire cycle par cycle (Cycle Steal) groupés (Burst) Les transferts peuvent impliquer une ou deux adresses
12 Mode cycle par cycle Cycle Steal ou par vol de cycle prolongement du cycle sur certaines architectures Une donnée est échangée à la fois À la demande du circuit d'interface mécanisme asynchrone Utilisé pour des transferts distribués dans le temps
13 Mode groupé Burst ou mode continu Les données sont échangées par bloc Une portion de la bande passante du bus d'accès à la mémoire est utilisée pour les transferts DMA paramètre du sous-système de DMA Utilisé pour des accès à haute vitesse débits voisins du débit maximum du bus Incidence potentielle importante sur la performance du CPU
14 Exemple : 68340 Microcontrôleur avec sous-système de DMA intégré
15 Sous-système de DMA 2 sous-systèmes de DMA Interfaces esclave et maître avec le bus
16 Signaux d'interface DREQx Requête de DMA utilisé par le circuit périphérique pour demander un transfert de donnée transition active en mode cycle par cycle; niveau actif en mode groupé DACKx Acquiescement réponse du sous-système de DMA pour activer le transfert DONEx Accès terminé indique le dernier transfert d'une opération de DMA
17 Exemple d'interconnexion Avec un port série asynchrone interne du 68340 Utilisation du mode à deux adresses avec les registres de données du port série
18 Exemple de cycle Lecture en mode «Burst» une adresse
19 Écriture par «vol de cycle»
20 Modèle de programmation
21 Registres de contrôle Type de requête Bande passante utilisée par le DMA
22 Description des champs INTx Contrôle des interruptions ECO - External Control Option Single-Address Mode - direction du transfert (lecture ou écriture) Dual-Address Mode - détermine dans quelle phase le DMA intervient (lecture ou écriture) SAPI - contrôle de l incrément du pointeur source DAPI - contrôle de l incrément du pointeur destination
23 Description des champs SSIZE - taille des données sources long mot, mot ou octet DSIZE - taille des données destination S/D - mode à une ou deux adresses STR - démarrage et arrêt du DMA permet le démarrage si requête externe
24 Registre d état du DMA IRQ = fin des transferts DONE = fin sans erreur BES = erreur bus à la source BED = erreur bus à la destination CONF = erreur de configuration BRKP = point d arrêt rencontré
25 Interruption et DMA Interruptions transferts asynchrones pas d attente active du CPU mais implication du CPU à chaque transfert de donnée DMA pas d intervention du CPU pendant les transferts interruption du CPU à la fin des transferts blocs de données