Organizzazione e funzionamento del BUS

// obiettivi di apprendimento
Comprendere la funzione e la struttura del bus di sistema in un computer
Distinguere i tre tipi di bus (dati, indirizzi, controllo) e il loro ruolo nella comunicazione tra CPU, memoria e periferiche
Analizzare il ciclo macchina di lettura e scrittura comprendendo la sequenza dei segnali sui bus
Calcolare il tempo di trasferimento durante un ciclo di lettura dalla memoria
📄
Slides
Organizzazione e funzionamento del BUS
📚
Risorse
Esercizi sul bus di sistema
Vedi →

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.

// analogia
Il bus è l’autostrada interna del computer. Come un’autostrada ha corsie separate per direzioni diverse, il bus ha linee separate per dati, indirizzi e segnali di controllo — ciascuna con funzione e direzione propria.

Il bus non è un unico cavo, ma un sistema strutturato in tre sottosistemi distinti che operano in modo coordinato a ogni ciclo di clock.

BUS DATI
Trasporta informazioni
Bidirezionale — i dati fluiscono in entrambe le direzioni tra CPU, memoria e periferiche
BUS INDIRIZZI
Seleziona la destinazione
Monodirezionale — solo la CPU invia indirizzi, la memoria non risponde su questo bus
BUS CONTROLLO
Coordina le operazioni
Segnali di sincronizzazione — ogni singola linea è unidirezionale, il bus nel suo insieme può essere misto

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.

8 bit
1 byte per operazione
Bus storici — Z80, 6502
32 bit
4 byte per operazione
PC anni ’90–2000
64 bit
8 byte per operazione
Standard attuale

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 busLocazioni indirizzabiliMemoria massima (byte)Esempio
16 bit2¹⁶ = 65.53664 KBIntel 8086 (reale)
20 bit2²⁰ = 1.048.5761 MB8086 con segmentazione
32 bit2³² ≈ 4,3 miliardi4 GBx86 protetto anni ’90
64 bit2⁶⁴ ≈ 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.

SegnaleNome estesoDirezioneFunzione
RDReadCPU → MemoriaIndica alla memoria di mettere il dato sul bus dati
WRWriteCPU → MemoriaIndica alla memoria di prelevare il dato dal bus dati e salvarlo
MREQMemory RequestCPU → MemoriaAbilita il chip di memoria — distingue un accesso alla RAM da uno alle periferiche
IORQI/O RequestCPU → PerifericheAbilita un dispositivo di I/O invece della memoria
WAITWaitMemoria → CPUIndica alla CPU di attendere — la memoria non è ancora pronta
INTInterruptPeriferiche → CPUSegnala alla CPU che una periferica richiede attenzione
// conflitti sul bus
In qualsiasi momento solo un dispositivo può controllare il bus dati. Se due componenti tentassero di scrivere contemporaneamente, i segnali si sovrapporrebbero causando un cortocircuito logico. Il bus di controllo ha il compito preciso di prevenire questi conflitti attraverso la gestione del bus (bus arbitration).

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.

01
Bus indirizzi ← X
La CPU pone l’indirizzo X sul bus indirizzi. Tutte le memorie e le periferiche ricevono l’indirizzo e verificano se le riguarda.
02
MREQ attivo · RD attivo · WR inattivo
MREQ abilita il chip di memoria RAM. RD segnala che si tratta di una lettura. WR rimane inattivo.
03
Memoria accede alla locazione X
La memoria impiega il suo tempo di accesso (t₂) per recuperare il dato dalla cella indirizzata. Se non è ancora pronta, può attivare il segnale WAIT per congelare la CPU.
04
Bus dati ← dato da Mem[X]
La memoria colloca il dato sul bus dati. La CPU lo legge e lo carica nel registro di destinazione (es. MDR). Il ciclo termina.

Ciclo di scrittura — WRITE

La CPU vuole scrivere il valore D nella locazione di memoria X.

01
Bus indirizzi ← X
La CPU pone l’indirizzo X sul bus indirizzi — identica al ciclo di lettura.
02
Bus dati ← D
La CPU pone il dato D sul bus dati. Attenzione: qui è la CPU a controllare il bus dati — nessun altro dispositivo deve farlo contemporaneamente.
03
MREQ attivo · WR attivo · RD inattivo
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.
04
Memoria[X] ← D
La memoria campiona il dato dal bus dati e lo scrive nella cella X. La CPU rilascia il bus. Il ciclo termina.

Confronto tra i due cicli

FaseREAD (Lettura)WRITE (Scrittura)
Bus indirizziCPU → Memoria (indirizzo X)CPU → Memoria (indirizzo X)
Bus datiMemoria → CPU (dato letto)CPU → Memoria (dato da scrivere)
Segnale RDAttivoInattivo
Segnale WRInattivoAttivo
Segnale MREQAttivoAttivo
Chi controlla bus datiLa memoriaLa 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.

t₁
INDIRIZZO SUL BUS
Tempo per trasferire l’indirizzo dalla CPU al bus indirizzi — dipende dalla frequenza di clock
t₂
ACCESSO MEMORIA
Tempo interno della memoria per leggere la cella — dipende dalla tecnologia (SRAM vs DRAM vs Flash)
t₃
DATO SUL BUS
Tempo per trasferire il dato dal bus dati alla CPU — dipende dalla larghezza del bus e dalla frequenza
// formula
ttotale = t₁ + t₂ + t₃

Esempio pratico — lettura di 64 bit

// dati del sistema
Clock di sistema: 25 ns per ciclo (40 MHz)
Trasmissione sul bus: 2 cicli = 50 ns
Bus dati e indirizzi: 32 bit
Tempo di ciclo memoria: 100 ns
// situazione: leggere 64 bit con bus a 32 bit
Per leggere 64 bit con un bus dati da 32 bit sono necessari 2 trasferimenti separati — ogni trasferimento legge 32 bit (4 byte) alla volta.
t₁ — trasferimento indirizzo sul bus
2 cicli × 25 ns = 50 ns
t₂ — accesso interno della memoria
tempo di ciclo memoria = 100 ns
t₃ — trasferimento dato sul bus dati × 2
2 trasferimenti × 50 ns = 100 ns
t_totale
50 ns + 100 ns + 100 ns = 250 ns
// lezione dall’esempio
Se il bus fosse stato 64 bit, il terzo trasferimento sarebbe stato sufficiente in un solo ciclo: t₃ = 50 ns → t_totale = 200 ns. Raddoppiare la larghezza del bus dimezza i cicli di trasferimento e riduce direttamente la latenza complessiva. Questo spiega il passaggio da bus a 32 bit a bus a 64 bit nell’evoluzione dei processori.

Fattori che influenzano le prestazioni del bus

FattoreEffetto sulle prestazioniCome migliorarlo
Larghezza bus datiPiù bit trasferiti per ciclo → meno trasferimentiAumentare da 32 a 64 bit
Frequenza di clockClock più veloce → t₁ e t₃ più breviBus DDR5 ad alta frequenza
Tempo accesso memoriat₂ domina spesso il ciclo totaleCache L1/L2 — evitare accessi in RAM
Bus sincrono vs asincronoSincrono: più prevedibile. Asincrono: più flessibileI bus moderni usano protocolli ibridi
Larghezza bus indirizziLimita la memoria indirizzabile64 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.

PCIe
Bus seriale ad alta velocità per GPU, SSD NVMe, schede di rete. Organizzato in “lane” indipendenti — ×1, ×4, ×8, ×16.
PCIe 5.0 ×16: ~128 GB/s
DDR5 / LPDDR5
Bus memoria tra CPU e RAM. Ottimizzato per latenza minima e banda massima. Separato fisicamente dal bus di sistema.
DDR5 dual-channel: ~100 GB/s
USB / I²C / SPI
Bus seriali per periferiche e sensori. Velocità ridotta ma semplicità di cablaggio e compatibilità universale.
USB 4: ~40 Gb/s · I²C: ~3,4 Mb/s

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, WAIT e INT
  • 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

Lascia un commento