Anteprima
Vedrai una selezione di 1 pagina su 5
Direct memory access Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

DMA (Direct Memory Access)

Il DMA (Direct Memory Access) permette trasferimenti di dati in memoria in maniera rapida. Tale dispositivo è particolarmente utile quando il processore si trova a lavorare con periferiche talmente veloci le cui interruzioni potrebbero essere degradanti per le prestazioni del sistema.

Il processore per operare un trasferimento in memoria deve necessariamente eseguire un'istruzione, il DMA invece fornisce la soluzione hardware al problema poiché in grado di divenire "master" di bus e quindi di gestire "cicli di bus" di lettura e scrittura.

Illustrazione 1: schema del DMA

Collegamento col processore:

  • D0-D7: bus dati di ingresso/uscita
  • CS: chip select
  • A0-A3: bit per la selezione dei registri interni
  • IOR, IOW: lettura/scrittura sulle interfacce periferiche
  • MEMR, MEMW: lettura/scrittura in memoria
  • Reset: reset del dispositivo
  • CLK: clock
  • HRQ: hold request, per richiedere il bus al processore
  • HLDA: hold ack, ricevuta conferma del
Ciao! Ecco il testo formattato con i tag HTML:

possesso del bus!EOP: trasmette al processore un'interruzione di fine trasferimento del blocco

Collegamento con le periferiche:

  • DREQ0: linea di richiesta da parte di una periferica sul canale 0
  • DREQ1: linea di richiesta da parte di una periferica sul canale 1
  • DACK1: conferma alla periferica sul canale 0
  • DACK2: conferma alla periferica sul canale 1

Programmazione del dispositivo:

  • BADDR0, BADDR1: hanno parallelismo 16 bit e servono a memorizzare gli indirizzi iniziali del trasferimento. Sono accessibili solo in scrittura.
  • CADDR0, CADDR1: hanno parallelismo 16 bit e contengono l'indirizzo della locazione di memoria interessata al trasferimento (locazione corrente). Nel caso di trasferimento da memoria a memoria CADDR0 contiene l'indirizzo sorgente e CADDR1 l'indirizzo destinazione. Sono accessibili in lettura e scrittura.
  • BCOUNT0, BCOUNT1: hanno parallelismo 16 bit e memorizzano il valore base del conteggio (numero di byte da trasferire). Sono accessibili solo in fase di scrittura.
  • CCOUNT0,

CCOUNT1: hanno parallelismo 16 bit e sono i registri di conteggio correnti, che memorizzano il numero di byte da trasferire. Sono accessibili in lettura e scrittura. Nel caso di trasferimento da memoria a memoria il conteggio viene effettuato da CCOUNT1.

MODE0, MODE1: sono i registri che contengono le informazioni relative al modo di funzionamento dei rispettivi canali. Sono a sola scrittura e la selezione tra i due avviene sul valore del bit meno significativo del dato: se 0, il dato viene scritto in MODE0 altrimenti in MODE1.

RF0, RF1: flag dove indirizzare le richieste di tipo software al DMA. Questi flag sono accessibili solo in scrittura, anche in questo caso la selezione del canale avviene sul bit meno significativo del dato: 0 per il canale 0 ed 1 per il canale 1. Il valore che deve assumere il flag deve essere posto sul bit numero 3 del dato.

Esempio:

[1]00[0] significa che pone RF0 a 1

[1]00[1] significa che pone RF1 a 1

MF0, MF1: flag per mascherare le richieste dei rispettivi canali

accessibili in scrittura (se il maskflag di quel canale è posto ad 1 il canale è selezionato). Anche in questo caso la selezione del canale avviene sul bit meno significativo del dato: 0 per il canale 0 ed 1 per il canale 1, il valore del flag va posto sul bit 2 del dato.

TEMP: registro temporaneo (8 bit) per il trasferimento memoria-memoria accessibile in sola lettura.

CNTRL: suddiviso in 2 parti in cui i 4 bit meno significativi rappresentano i bit di stato del componente, mentre quelli più significativi i bit di controllo. Accessibile sia in lettura che in scrittura.

COMANDI:

  • RESET: riporta il componente nello stato iniziale, azzerando tutti i registri; per resettare basta accedere in scrittura all'indirizzo relativo $D;
  • Clear Mask Flag (CMF): cancella tutti i flag MF, si attiva scrivendo all'indirizzo relativo $E;
  • Write All Mask Flag (WAMF): permette di fissare contemporaneamente tutti i flag MF; la scrittura deve avvenire all'indirizzo...

relativo $F ed il valore di MF0 deve essere posto nel bit0 del dato, mentre il valore di MF1 nel bit 1.

Illustrazione 2: registri e indirizzi relativi

Illustrazione 3: bit dei registri MODE

Dettagli
Publisher
A.A. 2012-2013
5 pagine
SSD Scienze matematiche e informatiche MAT/02 Algebra

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cecilialll di informazioni apprese con la frequenza delle lezioni di Algebra e Geometria e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Pastore Stefano.