I Bus di Sistema Corso di Laurea Magistrale in Ingegneria Informatica Calcolatori Elettronici II A.A. 2015/2016 I Bus di Sistema
Bus Un Bus è un particolare tipo di rete di interconnessione che consente di condividere un mezzo trasmissivo tra più unità e consente a queste ultime di realizzare un trasferimento di dati Nei comuni calcolatori un bus è costituito da un serie di linee in rame incise su una scheda: Un Bus che collega due (o più) unità, se è stampato sulla stessa scheda, è un INTERNAL BUS. Normalmente gli INTERNAL BUS sono di tipo proprietario Un Bus che collega due (o più) unità, se è stampato su schede diverse è un EXTERNAL BUS. Se un EXTERNAL BUS è l’unico BUS di un sistema allora viene chiamato SYSTEM BUS
Evoluzione dei Bus I primi bus erano soluzioni spesso proprietarie compatibili solo col il processore per il quale erano state concepite Sono state dunque introdotte delle soluzioni standard (es il bus ISA) Aumentando il riuso dei componenti Separando le soluzioni software e hardware
Evoluzione dei Bus Per incrementare l’efficienza dei bus si è agito sia tecnologicamente sia architetturalmente: Nel primo caso riducendo la lunghezza del mezzo fisico Nel secondo caso strutturando l’architettura I Bus Strutturati Vengono usati bus diversi: più veloci per collegare CPU e memoria (cache compresa) meno veloci per le periferiche di I/O I punti di collegamento tra bus diversi vengono chiamati Bridge
Bridge I Bridge consentono di adattare Bus tecnologicamente diversi tra loro adattando la velocità Gestendo la diversa temporizzazione I principali compiti di un Bridge sono: Accettare le richieste da un bus sorgente ad uno destinazione Generazione dei segnali di selezione dei dispositivi del bus destinazione Pilotare il bus sorgente per avviare la lettura di un dati Pilotare il bus destianzione per avviare la scrittura di un dato Gestire la sincronizzazione
Caratteristiche logico-funzionali Struttura Strutturalmente un bus è un insieme di linee suddivise in Indirizzi, Dati e Controllo CPU Memoria I/O Control Bus Address Bus Data Bus
Caratteristiche di un BUS Dimensioni: Rispetto ad un bus indirizzi: con m>1 linee si possono ottenere 2m indirizzi numerati da 0 a 2m-1 Rispetto al bus dati: con n linee si possono trasferire parole da n bit Temporizzazione: Bus Asincrono Bus Sincrono Comunicazione Parallela (PCI, IDE) : ogni bit ha una sua linea di trasmissione meno veloce con bus di maggiori dimensioni) Seriale (USB, SATA): i bit sono trasmessi in sequenza sulle stesse linee Sono più veloci, poiché devono continuamente trasmettere stream di bit Meno ingombranti, e dunque maggiormente diffusi
Caratteristiche di un BUS Allocazione del bus: Meccanismo di arbitraggio del bus Centralizzato Decentralizzato Parametri caratteristici: Td – tempo di trasmissione, ovvero il tempo necessario al trasferimento di un dato elementare Tc – tempo di ciclo, tempo necessario al trasferimento di una sequenza di k dati elementari. Il Tc = k · Td + Δ. Il Δ è il tempo necessario al protocollo di sincronizzazione Banda trasmissiva – numero di informazioni che è possibile inviare sul bus nell’unità di tempo. E’ l’inverso del tempo di trasmissione Latenza – è il tempo che intercorre tra la trasmissione di un dato sul bus e la sua ricezione
Ruoli dei dispositivi All’interno di un bus è possibile distinguere due tipologie di dispositivi: I dispositivi attivi detti Master, sono in grado di avviare dei trasferimenti sul bus - I Dispositivi passivi, detti Slave, sono in attesa aspettando richieste di trasferimento Il ruolo di un dispositivo può cambiare nel tempo In dispositivo può essere sia master che slave Non è detto che un bus abbia un solo master in ogni ciclo Bisogna definire le politiche di gestione o protocolli tra master e slave
Protocolli di comunicazione Per poter gestire l’interazione tra due (o più) unità è necessario definire un insieme di regole. Tali regole rappresentano la definizione di un protocollo Dal punto di vista della temporizzazione un protocollo può essere SINCRONO: è previsto un segnale di clock che permette di gestire la temporizzazione dei trasferimenti sul bus ASINCRONO: La temporizzazione nei trasferimenti è gestita dal protocollo attraverso uno scambio di messaggi
Lo slave recepisce l’indirizzo Protocollo Sincrono La temporizzazione è gestita da un clock Lettura di un dato t1 t2 Il master di bus pone l’indirizzo sul bus e asserisce il segnale di R/W Sul fronte di discesa lo slave recepisce che è richiesta una lettura e l’indirizzo posto sul bus Lo slave pone il dato sul bus Sul successivo fronte di discesa il master legge il dato Clock Address bus R/W Data bus Lo slave recepisce l’indirizzo Il dato è letto
Protocollo Asincrono La temporizzazione è gestita stesso dal protocollo tramite scambio di messagggi E’ necessario definire un protocollo di handshaking L’handshaking si basa su 4 segnali (0-attivi) AS* - Address Strobe, asserito dal master per indicare che l’indirizzo è stabile DS* - Data Strobe, asserito dal master per segnalare che è pronto a leggere il dato DA* - Data Ack, asserito dallo slave per segnalare un ack R/W* - Per segnalare una lettura o scrittura
Protocollo Sincrono Lettura di un dato Il master di bus pone l’indirizzo sul Quando l’indirizzo è stabile asserisce AS* Il master asserisce R/W* e DS* Il DS* fa si che lo slave decodifichi l’indirizzo sul bus, ponga il dato sul bus e asserisca DA* per segnalarne la presenza Il master legge e alza nuovamente DS* per segnalare la lettura Lo slave termina il ciclo alzando DA* Il master ha letto Address bus AS* R/W* DS* Data bus DA* Il master segnala la richiesta di trasferimento Lo slave segnala la presenza del dato
Arbitraggio del bus Su un Bus è possibile che, durante lo stesso ciclo, vi sia più di un master Tali Bus sono chiamati MultiMaster Bisogna quindi gestire le contese attraverso un arbitraggio L’arbitraggio del Bus può essere Centralizzato Decentralizzato
Arbitraggio Centralizzato Vi è un arbitro di bus (o controllore) che decide come assegnare le risorse Tutte le richieste e le linee di ack confluiscono nell’arbitro che decide anche le priorità MASTER MASTER Req Grant Req Grant Arbitro
Daisy chain centralizzato (1/2) Tutti i potenziali master di bus condividono due linee con l’arbitro Busy e Req Un master che vuole usare il bus asserisce sulla linea di richiesta (Req=1) L’arbitro, se il bus è libero (Busy=0) asserisce il grant in ingresso al primo master Se il primo master non ha richiesto il bus lo propaga nella catena
Daisy chain centralizzato (2/2) Lo schema di priorità è fisso Arbitraggio molto semplice (richiede sono 3 linee) Non efficiente se le prime periferiche richiedono spesso il bus Non tollerante ai fault (se la linea di grant si interrompe, non è possibile usare il bus!)
Polling centralizzato (1/2) Simile al daisy chain ma il grant è sostituito da Poll_Req Un master che vuole usare il bus deve asserire la linea richiesta (Req=1) Ogni dispositivo è identificato da un indirizzo Il master ha un contatore modulo n, che consente di generare l’indirizzo del dispositivo che può usare il bus L’indirizzo del dispositivo è posto sul bus di Poll_Req
Polling centralizzato (2/2) Non vi è uno schema di priorità fisso (non sono collegati in catena) Maggiormente tollerante ai guasti rispetto al daisy chain Il controllore ha una logica più complessa
Handshake centralizzato Più flessibile dei precedenti Ogni dispositivo ha un Bus_Req e un Busy L’arbitro decide in base al suo algoritmo interno come gestire le priorità Anche in questo caso, quando il dispositivo ha il grant asserisce busy Aumenta la complessità dell’arbitro!
Daisy chain decentralizzato Non vi è alcun arbitro di bus (dunque i dispositivi hanno una logica più complessa!) I segnali BPRN e BPRO servono a gestire la priorità Caso nominale: Il dispositivo che vuole acquisire il bus deve sempre controllare la linea di Busy e l’ingresso BPRiN Se Busy=0 e BPRN non è asserito, allora può acquisire il bus e asserire BPRoUT per inibire i dispositivi meno prioritari
Daisy chain decentralizzato Caso richiesta da dispositivo a priorità maggiore: Il dispositivo a priorità maggiore (es il primo) trova la linea Busy=1. Essendo a priorità maggiore nega BPRoUT in modo che il dispositivo che utilizza attualmente il bus trovi negato il suo BPRiN Al successivo ciclo il dispositivo meno prioritario campiona l’ingresso negato e rilascia il bus Essendo la catena negata, il dispositivo prioritario può pilotare il bus Alla fine di ogni ciclo il master rilascia il bus (per consentire ai dispositivi meno prioritari di acquisirlo!)
Riferimenti G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto – Architettura dei calcolatori Cap 6