Finora ho capito, i processori Intel utilizzano istruzioni CPU specializzate (IN / OUT) per comunicare con le periferiche.
Uh, questo potrebbe essere vero negli anni '70 e '80, ma in realtà non sarebbe nemmeno molto utile per una periferica I²C e incredibilmente invadente per la programmazione della CPU.
Quindi, invece, ci sono alcune periferiche collegate a un bus molto, molto più veloce (ad esempio PCIe) che fa parlare l'I²C, dopo aver ricevuto i comandi per farlo dalla CPU; che la comunicazione di solito avviene tramite la scrittura di dati in una specifica posizione di memoria, invece di utilizzare speciali istruzioni IO.
Inoltre, credo che un Intel non abbia un controller I2C su chip.
Oh, non credo sia vero; dovrebbero esserci più controller, ma sono specifici per lo scopo, ad esempio, per leggere le EEPROM sui moduli RAM.
Quindi, abbiamo bisogno di un controller I2C, non è vero?
sì.
In tal caso, il processore tratta il controller come una periferica
sì
e utilizzare le istruzioni della CPU IN / OUT per parlargli?
No, queste istruzioni, come detto, vengono utilizzate per un piccolo insieme di tipi di dispositivi in circolazione da alcuni decenni (si pensi: tastiere PS / 2, configurazione dello spazio degli indirizzi PCI, reale -time clock, floppy, porta stampante parallela, ...) solo con cui una CPU deve parlare direttamente, principalmente per motivi di avvio e legacy.
Fondamentalmente, non appena hai impostato lo spazio degli indirizzi PCI, la maggior parte delle comunicazioni periferiche sono solo normali accessi alla memoria.
Spesso, persino, il programma prepara i comandi per il controller I²C in una regione di memoria, quindi dice a un controller DMA di trasferire quella memoria al controller. Quindi, la tua CPU non parla nemmeno direttamente con il controller: dice a un controller DMA di dire a un controller PCIe, di trasferire byte da una memoria a un dispositivo.
Il controller è montato sulla scheda madre?Quale bus collega la CPU e il controller?
Dipende; può essere integrato nello stesso pacchetto IC o essere sulla scheda madre.
Se integrato direttamente nel Southbridge (che nei chipset della CPU Intel è chiamato ICH), l'interfaccia sarebbe la Direct Media Interface;potrebbe anche trovarsi in un dispositivo PCIe collegato al Southbridge o in un dispositivo USB collegato a un controller USB, che di nuovo può essere parte del southbridge o parte di un controller USB collegato PCIe.