DMA - PowerPoint PPT Presentation

1 / 58
About This Presentation
Title:

DMA

Description:

Des registres de statuts permettent au processeur de d terminer si des donn es peuvent ... read address. int np_dma_write_address; // write address. int ... – PowerPoint PPT presentation

Number of Views:189
Avg rating:3.0/5.0
Slides: 59
Provided by: Beuc
Category:
Tags: dma | adress

less

Transcript and Presenter's Notes

Title: DMA


1
DMA
  • Direct Memory Access
  • Accès Direct en Mémoire
  • rene.beuchat_at_epfl.ch
  • rene.beuchat_at_eig.unige.ch

2
Plan
  • Problème
  • Architecture d'un Système informatique minimum
  • Scrutation / Interruption
  • DMA
  • Types de transferts
  • Mémoire dual-port
  • Contrôleur DMA

3
Problème
  • Dans un système informatique, l'accès au
    périphériques (interfaces programmables) peut
    être réalisé par le processeur à travers des
    instructions de transferts
  • Des registres de statuts permettent au processeur
    de déterminer si des données peuvent être
    transférées et l'état des transferts (erreurs)

4
Problème (2)
  • Par scrutation de registres de status, le
    processeur synchronise les transferts
  • Wait (status_transfert OK )
  • Effectue le transfert
  • Ou
  • If (status_transfert OK )
  • Effectue le transfert
  • EndIf

5
Scrutation
6
Scrutation
  • Avec la scrutation le système est synchrone, le
    programme contrôle exactement lorsqu'il peut
    accéder à une ressource
  • Inconvénient, le programme doit souvent tester
    les statuts pour rien, et suffisamment souvent
    pour ne pas rater de données

7
Interruption
  • Pour que le processeur ne perde pas de temps à
    scruter inutilement des interfaces, les
    interruptions matérielles permettent de ne
    monopoliser le processeur que lorsqu'un service
    est à effectuer
  • La synchronisation avec le consommateur/producteur
    d'information est à traiter par logiciel
    (message, sémaphore, FIFO, etc)

8
Interruption
9
Interruption
  • Les interruptions mettent en uvre du matériel
    spécialisé et dépendent du processeur utilisé
    (vecteur, type d'accès à la routine de
    traitement, etc)
  • De nombreuses instructions sont souvent
    nécessaires pour le traitement de l'interruption
    (sauvetage de contexte, test de la requête,
    transfert I/O-mémoire, interrupt handler, ) ?
    bande passante limitée

10
DMA
  • Pour des systèmes où le taux de transfert entre
    les I/O et la mémoire est élevé, la scrutation ou
    les interruptions sont inutilisables
  • Un système plus performant est nécessaire ? DMA
  • Le transfert est effectué par une unité
    spécialisée le contrôleur DMA

11
DMA
12
DMA
  • Le contrôleur DMA effectue les transferts à la
    place du processeur
  • Il doit donc avoir le contrôle des bus
  • d'adresses
  • de données
  • de contrôle de transferts
  • Avant d'effectuer le transfert un arbitrage doit
    avoir lieu
  • Un seul maître peut accéder une unité esclave à
    un instant donné

13
Contrôleur DMA un interface programmable
14
Contrôleur DMA un interface programmable (2)
  • Le contrôleur DMA est un interface programmable
    qu'il faut programmer par le processeur avant
    qu'il ne soit opérationnel
  • Exemple de transfert double cycle I/O ? mémoire

15
DMA transfert I/O ? mémoire
Requête de transfert
16
DMA transfert I/O ? mémoire
Demande du bus au processeur
17
DMA transfert I/O ? mémoire
Transfert IP ? Ctrl DMA
18
DMA transfert I/O ? mémoire
Transfert Ctrl DMA ? Mémoire
19
DMA transfert I/O ? mémoire
Interruption de fin de transfert(s)
20
DMA fin de transfert(s)
  • Lorsqu'un paquet de données a été transféré, le
    processeur est averti par interruption ou il peut
    utiliser la scrutation d'un registre de statuts
  • Pour que le DMA soit utile, il faut qu'une
    certaine quantité de données soit transférées

21
Transfert simple cycle
  • Pour une plus grande efficacité de transfert,
    l'accès intermédiaire par le contrôleur n'est pas
    forcément nécessaire
  • Un accès direct I/O ? mémoire est possible

22
DMA, simple cycle
23
Simple cycle
  • Problème de taille des bus de données ? mémoire
  • Les données mises en mémoire doivent pouvoir être
    accédées ensuite par le processeur à des adresses
    contiguës. Si l'interface programmable source est
    de largeur de bus lt que la largeur de la mémoire,
    des passeurs d'alignement de la donnée doivent
    être rajoutés.

24
Simple cycle
25
Transfert mémoire-mémoire (1)
  • L'unité DMA peut être utilisée pour transférer
    des données de mémoire à mémoire plus
    efficacement qu'un processeur. Dans ce cas un
    passage par un registre interne a généralement
    lieu.

26
Transfert mémoire-mémoire (1)
27
Transfert mémoire-mémoire (2)
28
Programmation
  • Le contrôleur DMA est un interface programmable.
    Il doit par conséquence être initialisé avant son
    utilisation.
  • Plusieurs méthodes sont possibles en fonction du
    circuit utilisé
  • Par accès à des registres internes
  • Par des descripteurs en mémoire chargés
    automatiquement (par DMA) par le contrôleur

29
Programmation (2)
  • Un ensemble de descripteurs minimaux sont
    disponibles sur pratiquement tous les contrôleurs
    DMA
  • Adresse source
  • Adresse destination
  • Longueur à transférer/transférée
  • Mode de fonctionnement
  • Statuts
  • Contrôle des interruptions

30
Registres de base
31
Registres de base
  • Souvent un pointeur se trouve dans le contrôleur
    sur un descripteur en mémoire
  • Ce descripteur contient les divers paramètres
    décrivant le transfert et les adresses des
    buffers source/destination
  • Si le pointeur spécifie une adresse mémoire,
    cette adresse sera incrémentée à chaque accès
  • Si le pointeur spécifie une adresse d'interface
    programmable (I/O), l'adresse ne sera pas
    modifiée

32
Registres de base
33
Registres de base
  • Un seul descripteur de buffer est limitatif, si
    de nouvelles données sont à recevoir et que le
    buffer précédent n'est pas encore libéré, des
    données seront perdues. Un tableau de
    descripteurs est alors généralement proposé

34
Descripteurs en mémoire
35
Descripteurs en mémoire
  • Avec un tableau de descripteurs, il est possible
    de ne pas être à cours de buffers de réception
    pour autant que le débit de réception des données
    ne dépasse pas la capacité de traitement des
    données reçues.
  • Une gestion des buffers est à réaliser pour
    maintenir l'ordre du tampon des descripteurs

36
Descripteurs en mémoire
  • Une liste chaînée de descripteurs permet une
    plus grande souplesse dans la gestion des
    descripteurs, leur remise en jeu peut être
    quelconque

37
Descripteurs en mémoire
38
Mémoire à double accès
  • Pour effectuer les transferts en parallèle avec
    l'utilisation d'un processeur, des bus séparés
    peuvent être utilisés
  • La mémoire est vue alors comme une mémoire à
    double (triple, n-) accès
  • Les bus multiplexés peuvent être réalisés avec
    des mémoires conventionnelles et des
    buffers/arbitre externes ou en circuits
    spécialisés

39
Mémoire à double accès
40
Mémoire à double accès
41
Mémoire à double accès
  • Le modèle mémoire à double accès est similaire à
    un système multiprocesseur à mémoire partagée
    commune
  • Ce modèle correspond aux bus fonds de panier
    multi-maîtres

42
Conclusion
  • Les unités DMA permettent de décharger le
    processeur dans des tâches de transferts de
    données par paquets
  • Le transfert est "câblé" et non plus exécuté par
    des instructions d'un processeur ? débits accrus
  • Assemblage de données possibles
  • Filtres de données possibles

43
Conclusion
  • La fin d'un transfert peut être traité par
    scrutation ou interruption par le processeur.
  • Le transfert DMA est réalisé pour le transfert
    des données.
  • Actuellement beaucoup d'interfaces programmables
    contiennent directement un contrôleur DMA intégré
    (réseaux, SCSI, disque, )

44
DMA sur FPGA
  • Des corps DMA en HDL (VHDL/Verilog) sont
    réalisables ou disponibles pour FPGA
  • Corps synthétisables à intégrer sur logique
    programmable
  • Exemple DMA pour bus Avalon

45
DMA pour Avalon
  • Architecture de lunité DMA
  • Bus de lecture
  • FIFO intermédiaire
  • Bus décriture
  • Unité de contrôle programmable

46
Registres de contrôle
  • Vu par le processeur comme interface programmable
  • Zone de 8 registres de 32 bits

47
Registre de statuts
  • Informations sur létat du contrôleur
  • Une écriture met à 0 les bits len, weop, reop,
    et done

48
Statuts
  • done est activé en fin de transfert
  • Une interruption peut être effectuée si elle est
    autorisée
  • Les bits len, weop, et reop permettent de
    connaître la cause de fin de transfert.
  • Lorsque done est désactivé par une écriture sur
    ce registre, la requête dinterruption est
    désactivée

49
Registres de contrôle
  • Readaddress, writeaddress, length déterminent les
    adresses de source , destination et la longueur
    du transfert
  • length est défini en nombre doctets
  • La largeur des registres est déterminé à la
    génération du module

50
Registre de contrôle
  • Le registre de contrôle spécifie les modes de
    fonctionnement et autorisations diverses

51
Contrôle
  • Rcon et wcon spécifient si ladresse de lecture,
    resp. décriture est fixe (1) ou à incrémenter
    (0)
  • Selon la taille du transfert et _con indiqué les
    adresses sincrémentent de 0, 1, 2 ou 4

52
Structure logicielle du DMA
  • typedef volatile struct
  • int np_dma_status // status register
  • int np_dma_read_address // read address
  • int np_dma_write_address // write address
  • int np_dma_length // length in bytes
  • int np_dma_reserved1 // reserved
  • int np_dma_reserved2 // reserved
  • int np_dma_control // control register
  • int np_dma_reserved3 // reserved
  • np_dma

53
Procédures de transferts
54
Procédure de base
  • static void dma_shared (
  • np_dma dma, // adresse contrôleur DMA
  • int bytes_per_transfer, // nb
    octets/transfert (1,2,4)
  • void source_address, // adresse source
  • void destination_address, // adresse
    destination
  • int transfer_count, // longueur transfert
  • int mode // mode (rcon, wcon)
  • )
  • int control_bits 0
  • // 1. Halt anything that's going on
  • dma-gtnp_dma_control 0

55
suite
  • // 2. Set up everything except the go-bar
  • dma-gtnp_dma_status 0
  • dma-gtnp_dma_read_address (int)source_address
  • dma-gtnp_dma_write_address (int)destination_add
    ress
  • dma-gtnp_dma_length transfer_count
    bytes_per_transfer

56
  • // 3. construct the control word...
  • control_bits
  • mode // wcon, rcon bits
  • (bytes_per_transfer 7) // low three
    bits of control reg
  • ((bytes_per_transfer 8) ?
    np_dma_control_doubleword_mask 0)
  • ((bytes_per_transfer 16) ?
    np_dma_control_quadword_mask 0)
  • np_dma_control_le_en_mask // enable
    length (else runs forever)
  • np_dma_control_go_mask // and... go!
  • dma-gtnp_dma_control control_bits

57
Suite et fin
  • // 4. Wait til it's all done !! Polling !!
  • while((dma-gtnp_dma_status np_dma_status_busy_m
    ask) ! 0)
  • return

58
  • Question ?
Write a Comment
User Comments (0)
About PowerShow.com