1. Il Collo di Bottiglia dell'I/O Tradizionale
Nei sistemi senza supporto hardware avanzato, ogni singolo byte o blocco di dati trasferito da una periferica di I/O (come un disco rigido o una scheda di rete) alla memoria RAM richiedeva l'intervento diretto della CPU. La CPU doveva leggere il dato dalla porta della periferica e scriverlo in memoria un blocco alla volta. Questo approccio consumava una quantitĂ enorme di cicli di clock, riducendo drasticamente le prestazioni globali del sistema.
2. Cos'è il Direct Memory Access (DMA)
Il DMA (Accesso Diretto alla Memoria) è una tecnologia hardware che consente a dispositivi periferici di trasferire dati direttamente da e verso la memoria principale (RAM) scavalcando la CPU.
Per gestire questo flusso autonomo, il sistema si avvale di un chip specializzato chiamato DMAC (Direct Memory Access Controller). Una volta che la CPU ha programmato il controller DMA specificando l'indirizzo di origine, l'indirizzo di destinazione e il numero di byte da trasferire, la CPU può dedicarsi ad altre elaborazioni mentre il DMAC gestisce il bus di sistema in autonomia.
3. Fasi di un Trasferimento DMA
- Configurazione: La CPU invia al controller DMA i parametri di trasferimento (indirizzo sorgente, indirizzo di destinazione, dimensione del blocco).
- AttivitĂ di I/O: La CPU si libera dal compito e prosegue con l'esecuzione dei processi.
- Trasferimento Dati: Il controller DMA assume il controllo del bus di sistema e sposta i dati direttamente tra la periferica e la RAM.
- Notifica: Al completamento del trasferimento, il controller DMA invia un segnale di interruzione (IRQ) alla CPU per comunicare la fine dell'operazione.
- Scarico della CPU: Previene lo spreco di cicli di clock preziosi per operazioni ripetitive di copia dati.
- Elevata Larghezza di Banda: Consente trasferimenti massivi ad alte prestazioni (fondamentale per SSD NVMe, schede grafiche e interfacce di rete veloci).
4. Simulatore Interattivo: Confronto I/O CPU vs DMA
Seleziona una modalitĂ di trasferimento per confrontare l'impatto sul carico di lavoro della CPU e sull'efficienza complessiva.