Computer, controller e dispositivi sono concetti ampi e sfocati. Questo spiega perché hai così tante spiegazioni diverse.
Che cos'è un controller hardware?
Un controller può significare cose diverse. Ad esempio:
- può essere un chip dedicato (o un chipset più complesso) sulla scheda madre, specializzato nel controllo della comunicazione che passa su una porta di interfaccia. Esempi tipici sono un controller host USB o controller integrati , o su macchine precedenti un controller UART o un controller tastiera . Questi controller sono collegati a un bus o a un connettore esterno.
- può essere una scheda più complessa collegata a uno slot PCI, ad esempio una scheda di rete o un controller del disco RAID . Alcune persone vedono cose così complesse come un dispositivo a sé stante (a causa della sua complessità), mentre alcuni lo vedono semplicemente come un altro controller collegato al bus interno.
- può essere un microcontrollore (ovvero una sorta di CPU semplificata) che può essere integrato in un dispositivo per eseguire alcuni elaborare le attività e organizzare la comunicazione con ciò che è dall'altra parte del cavo. La maggior parte delle persone che spiegano i controllori dal punto di vista del computer non fanno altro che tralasciare questa spiegazione, perché si tratta di dispositivi interni irrilevanti. Tuttavia un dispositivo ha bisogno del proprio cervello: anche per cose semplici come una vecchia tastiera per PC, come può il controller sulla scheda madre conoscere lo stato dei 102 tasti, quando ci sono solo da 5 a 6 pin / fili che lo collegano alla tastiera remota ? Bene, c'è anche un semplice controller all'interno della tastiera .
Quindi, come regola generale, se hai alcuni cavi tra un computer e un dispositivo, puoi scommettere che c'è almeno un controller su ciascun lato del cavo.
Il controller è nel computer?
Dipende dai limiti impostati per il computer:
- intendi il core o il tuo computer (cioè CPU, memoria e orologio)? In questo caso la risposta sarà no.
- intendi la scheda madre? In questo caso, come hai visto la risposta potrebbe essere sì o no, a seconda del tipo di controller che stai pensando.
- intendi la scatola, cioè i confini fisici con il mondo esterno? Allora sì: ogni volta che un connettore sulla scatola, c'è anche un controller nella scatola.
Ma il fatto che un controller sia sul lato del computer, non esclude che ci sia un controller (nascosto) sul lato del dispositivo.
Ora al DMA!
In alcuni casi un controller può essere collegato direttamente al bus (vedere il nostro esempio precedente di un controller RAID) o il controller si trova sulla scheda madre e connesso al bus.
Per eseguire I / O tramite il bus, il processore dovrebbe indirizzare il dispositivo, byte per byte o parola per parola e copiarlo nella memoria. Questo è molto inefficiente, perché questa semplice operazione di copia manterrebbe la CPU occupata.
Quindi hai il DMA: il processore istruisce un controller DMA per eseguire il lavoro, e il controller DMA indirizza il dispositivo e copia i byte ottenuti in memoria, lasciando la CPU libera di svolgere compiti più interessanti.