Bus e interconnessione
In questa pagina 6
Un bus è un insieme di linee condivise che collega due o più dispositivi. Un solo dispositivo per volta può trasmettere, altrimenti i segnali si sovrappongono. Il bus di sistema collega CPU, memoria e moduli di I/O.
Le tre classi di linee
| Linee | Cosa trasportano | Effetto della loro ampiezza |
|---|---|---|
| dati | i dati e le istruzioni trasferiti | con 32 linee si trasferiscono 4 byte per ciclo; con un bus da 8 bit una parola da 32 bit richiede 4 trasferimenti |
| indirizzi | la sorgente o la destinazione del dato (cella di memoria o porta di I/O) | con linee si indirizzano locazioni: 24 linee → 16 M locazioni, 32 linee → 4 G |
| controllo | comandi e temporizzazione | — |
Segnali di controllo tipici: lettura/scrittura memoria, lettura/scrittura I/O, conferma di trasferimento (acknowledge), richiesta e concessione del bus, richiesta e conferma di interrupt, clock, reset.
Uso del bus: chi vuole trasmettere chiede il bus, lo ottiene e invia; per ricevere chiede il bus, invia la richiesta all'altro modulo e attende il dato.
Arbitraggio
Quando più moduli vogliono il bus serve un arbitro:
- centralizzato: un controllore unico (arbitro) concede il bus;
- distribuito: ogni modulo ha la sua logica di accesso e i moduli cooperano.
Bus singolo e bus multipli
Con molti dispositivi su un solo bus aumentano il ritardo di propagazione e la contesa, e il bus diventa il collo di bottiglia. Soluzione: gerarchia di bus.
- bus locale tra CPU e cache;
- bus di sistema tra cache/controllore e memoria principale;
- bus di espansione per l'I/O, collegato tramite un'interfaccia (bridge) che fa da buffer: le periferiche lente non rallentano il traffico CPU–memoria.
Temporizzazione
- Sincrona: un clock comune scandisce gli eventi; ogni operazione dura un numero intero di cicli. Semplice, ma tutti si adeguano al dispositivo più lento.
- Asincrona: un evento segue il precedente tramite segnali di handshake (es. il master alza "lettura", lo slave risponde "dato pronto"). Dispositivi lenti e veloci convivono.
Interconnessioni punto a punto
I sistemi moderni sostituiscono il bus condiviso con collegamenti punto a punto seriali ad alta velocità (es. PCI Express, Intel QPI): niente arbitraggio su un mezzo comune, più trasferimenti in parallelo su collegamenti diversi.
Errori tipici
- Confondere ampiezza del bus dati (quanti bit per trasferimento) e ampiezza del bus indirizzi (quanta memoria si indirizza).
- Calcolare lo spazio di indirizzamento come invece di .
Versione ripasso
Bus: linee condivise, trasmette un dispositivo per volta; il bus di sistema collega CPU, memoria e I/O.
- Dati: 32 linee 4 byte per ciclo (con 8 bit, 4 trasferimenti per una parola da 32 bit).
- Indirizzi: linee locazioni (24 16 M, 32 4 G).
- Controllo: lettura/scrittura memoria e I/O, acknowledge, richiesta e concessione del bus, interrupt, clock, reset.
- Arbitraggio: centralizzato (un arbitro) o distribuito.
- Gerarchia: bus locale CPU-cache, di sistema verso la memoria, di espansione per l'I/O con un bridge che fa da buffer.
- Sincrono: clock comune, tutti si adeguano al più lento. Asincrono: handshake, lenti e veloci convivono.
- Punto a punto (PCI Express, QPI): collegamenti seriali, niente arbitraggio, più trasferimenti in parallelo.
Errori tipici: confondere ampiezza dei dati e degli indirizzi; invece di .