title: Bus mastering
text: # Bus mastering
  
  Il bus mastering è una funzionalità supportata da alcune architetture bus che permette ad un controller collegato al bus di comunicare direttamente con altri dispositivi sul bus senza passare attraverso il processore centrale. La maggior parte delle moderne architetture bus supportano il bus mastering, ottenendo in questo modo notevoli miglioramenti prestazionali.
  
  Il bus master è il dispositivo che gestisce gli indirizzi sul bus ed i segnali di controllo dello stesso bus. In un computer dotato di semplice architettura soltanto il processore centrale (CPU) può svolgere le funzioni di bus master. Questo significa che tutte le comunicazioni fra i dispositivi di input e quelli di output deve transitare attraverso la CPU. In scheda madre con architetture del bus più sofisticate possono essere presenti altri dispositivi, oppure più processori a turno, in grado di prendere il controllo del bus. Ad esempio, una scheda di rete può accedere direttamente al controller di un disco fisso mentre la CPU esegue altri compiti che non richiedono l'accesso al bus, come, ad esempio, caricare dalla sua cache il codice da eseguire.
  
  Il DMA (Direct Memory Access), è una semplice forma di bus mastering, in cui il dispositivo di I/O è abilitato dalla CPU ad accedere direttamente in lettura e scrittura ad uno o più blocchi di memoria, e poi a segnalare alla CPU quando ha completato l'operazione. Per poter realizzare un bus mastering completo (ovvero un first-party DMA oppure bus mastering DMA) è necessario che il dispositivo di I/O sia in grado di eseguire complesse sequenze di operazioni senza l'intervento della CPU. Questo di solito significa che tale dispositivo di I/O deve essere dotato di un microprocessore a bordo. Qualsiasi dispositivo può instradare dati sul bus, quando la CPU legge dal dispositivo, ma solo il bus master può impostare gli indirizzi del bus e controllarne i relativi segnali di controllo.
  
  