Il bus di sistema — il collegamento fondamentale
CPU, memoria centrale e periferiche non lavorano in isolamento. Per comunicare tra loro utilizzano un insieme di linee elettriche disposto sulla scheda madre: il bus di sistema. Senza di esso, nessuna informazione potrebbe muoversi tra i componenti del computer.
Il bus non è un unico cavo, ma un sistema strutturato in tre sottosistemi distinti che operano in modo coordinato a ogni ciclo di clock.
I tre bus — struttura e implicazioni
Bus dati — larghezza e banda
La larghezza del bus dati — il numero di linee elettriche parallele — determina quanti bit vengono trasferiti in una singola operazione. È uno dei parametri chiave per la banda del sistema.
Bus indirizzi — spazio di indirizzamento
Il numero di linee del bus indirizzi determina quante locazioni di memoria la CPU può raggiungere direttamente. Con n linee si possono indirizzare 2ⁿ locazioni.
| Larghezza bus | Locazioni indirizzabili | Memoria massima (byte) | Esempio |
|---|---|---|---|
16 bit | 2¹⁶ = 65.536 | 64 KB | Intel 8086 (reale) |
20 bit | 2²⁰ = 1.048.576 | 1 MB | 8086 con segmentazione |
32 bit | 2³² ≈ 4,3 miliardi | 4 GB | x86 protetto anni ’90 |
64 bit | 2⁶⁴ ≈ 1,8 × 10¹⁹ | 16 EB (exabyte) | Standard attuale x86-64 |
Bus di controllo — i segnali principali
Il bus di controllo trasmette segnali che coordinano ogni operazione. Ogni segnale ha una funzione precisa nella sequenza di comunicazione tra CPU e memoria.
| Segnale | Nome esteso | Direzione | Funzione |
|---|---|---|---|
RD | Read | CPU → Memoria | Indica alla memoria di mettere il dato sul bus dati |
WR | Write | CPU → Memoria | Indica alla memoria di prelevare il dato dal bus dati e salvarlo |
MREQ | Memory Request | CPU → Memoria | Abilita il chip di memoria — distingue un accesso alla RAM da uno alle periferiche |
IORQ | I/O Request | CPU → Periferiche | Abilita un dispositivo di I/O invece della memoria |
WAIT | Wait | Memoria → CPU | Indica alla CPU di attendere — la memoria non è ancora pronta |
INT | Interrupt | Periferiche → CPU | Segnala alla CPU che una periferica richiede attenzione |
Il ciclo macchina — lettura e scrittura
Ogni volta che la CPU accede alla memoria — per leggere un’istruzione o un dato, o per scrivere un risultato — si svolge un ciclo macchina: una sequenza precisa di operazioni sincronizzate dal clock di sistema, che coinvolge tutti e tre i bus in modo coordinato.
Ciclo di lettura — READ
La CPU vuole leggere il contenuto della locazione di memoria all’indirizzo X.
X sul bus indirizzi. Tutte le memorie e le periferiche ricevono l’indirizzo e verificano se le riguarda.MREQ abilita il chip di memoria RAM. RD segnala che si tratta di una lettura. WR rimane inattivo.WAIT per congelare la CPU.MDR). Il ciclo termina.Ciclo di scrittura — WRITE
La CPU vuole scrivere il valore D nella locazione di memoria X.
X sul bus indirizzi — identica al ciclo di lettura.D sul bus dati. Attenzione: qui è la CPU a controllare il bus dati — nessun altro dispositivo deve farlo contemporaneamente.MREQ abilita il chip di memoria. WR segnala che si tratta di una scrittura. RD rimane inattivo — la memoria non deve mettere nulla sul bus dati.X. La CPU rilascia il bus. Il ciclo termina.Confronto tra i due cicli
| Fase | READ (Lettura) | WRITE (Scrittura) |
|---|---|---|
| Bus indirizzi | CPU → Memoria (indirizzo X) | CPU → Memoria (indirizzo X) |
| Bus dati | Memoria → CPU (dato letto) | CPU → Memoria (dato da scrivere) |
| Segnale RD | Attivo | Inattivo |
| Segnale WR | Inattivo | Attivo |
| Segnale MREQ | Attivo | Attivo |
| Chi controlla bus dati | La memoria | La CPU |
Calcolo del tempo di trasferimento
Il tempo totale per completare un ciclo di lettura dipende da tre componenti sequenziali che si sommano. Conoscere questa formula è fondamentale per valutare le prestazioni del sottosistema memoria.
Esempio pratico — lettura di 64 bit
Fattori che influenzano le prestazioni del bus
| Fattore | Effetto sulle prestazioni | Come migliorarlo |
|---|---|---|
| Larghezza bus dati | Più bit trasferiti per ciclo → meno trasferimenti | Aumentare da 32 a 64 bit |
| Frequenza di clock | Clock più veloce → t₁ e t₃ più brevi | Bus DDR5 ad alta frequenza |
| Tempo accesso memoria | t₂ domina spesso il ciclo totale | Cache L1/L2 — evitare accessi in RAM |
| Bus sincrono vs asincrono | Sincrono: più prevedibile. Asincrono: più flessibile | I bus moderni usano protocolli ibridi |
| Larghezza bus indirizzi | Limita la memoria indirizzabile | 64 bit → praticamente illimitato |
Realizzazioni fisiche del bus
I bus non sono tutti uguali — nella pratica esistono diverse realizzazioni fisiche ottimizzate per funzioni e velocità diverse.
Riepilogo
- Il bus di sistema è il sistema di collegamento tra CPU, memoria e periferiche — disposto sulla scheda madre, suddiviso in tre sottosistemi
- Il bus dati è bidirezionale — la sua larghezza (32/64 bit) determina quanti bit si trasferiscono per ciclo
- Il bus indirizzi è monodirezionale (CPU → memoria) — n linee consentono 2ⁿ locazioni indirizzabili
- Il bus di controllo coordina le operazioni con segnali come
RD,WR,MREQ,WAITeINT - Nel ciclo di lettura: la CPU invia l’indirizzo → attiva MREQ e RD → la memoria pone il dato sul bus → la CPU legge
- Nel ciclo di scrittura: la CPU invia indirizzo e dato → attiva MREQ e WR → la memoria scrive il dato nella cella
- Il tempo totale di un ciclo di lettura è t_totale = t₁ + t₂ + t₃ — indirizzo + accesso memoria + trasferimento dato
- Raddoppiare la larghezza del bus dati dimezza il numero di trasferimenti necessari, riducendo direttamente la latenza
- La cache è la principale soluzione per ridurre t₂ — evitando accessi alla RAM lenta con hit rate elevato