BUS e altro
• Contenuto della lezione
– Evoluzione dei bus di sistema – Il bus PCI e PCI Express
– Cenni USB
– Bus per dischi rigidi – Supercomputer
– NB: nell’esposizione si usa normalmente la terminologia Intel. In alcuni casi (p.e. PCI) essa è uno standard
industriale; in altri (p.e. QPI) gli standard industriali hanno
altri nomi.
Schema di riferimento
• Abbiamo assunto come schema di riferimento quello di figura
• Corrisponde allo schema dei PC anni 80
– Tuttora in largo uso nei sistemi di controllo
– Superato nei moderni PC/workstation
Struttura PDP-11 (introdotto nel 1970)
• Ha introdotto lo standard del bus unico
MICROCOMPUTER PDP-11
MODULO DI MEMORIA LETTURA/SCRITTURA
MODULO MEMORIA SOLA LETTURA
REAL TIME CLOCK
MODULO INTERFACCIA LINEA SERIALE
( CONSOLE )
MODULI OPZIONALI SUPPORTI MAGNETICI ROTANTI
STAMPANTE AD ALTA VELOCITA'
CONVERTITORE A/D CONVERTITORE D/A INTERFACCIA PARALLELA INTERFACCIA SERIALE INTERFACCIA DMA ACCESSORI
BACKPLANE
POWER SUPPLY
UNIBUS
MODULO
La console era su linea
seriale RS-232
Prima del PDP-11
• Praticamente non esistevano standard organizzativi
CPU
I/O bus bus di I/O
CPU
(HP 2100) MINI MAINFRAME
(IBM 370)
modulo modulo I/O
I/O modulo
I/O modulo I/O
controllore canale di
MEMORIA MEMORIA
Con i microprocessori
• L’avvento dei microprocessori (1975) ha confermato lo standard
a bus unico (stile PDP-11, anche se con differente tecnologia)
Con i microprocessori
• L’avvento dei microprocessori (1975) ha confermato lo standard a bus unico (stile PDP-11, anche se con differente tecnologia)
E’ l’unico a
sopravvivere
memoria I/O
MEMORIA CPU
PC bus scheda madre
Il primo PC IBM (1981)
• E’ sparita la console RS232 del PDP11
• Il Video e la tastiera sono collegati direttamente alla scheda madre. Per il video c’è una RAM apposita
• Memoria di espansione e periferici sono su schede collegate sul bus
• Il bus è (praticamente) quello dell’8088.
• Successivamente è stato
esteso a 16 bit (venne detto
ISA, perché era adottato da
tutti)
Si cambia di nuovo !
• A partire dagli anni ’90 il bus unico si è dimostrato un
“collo di bottiglia”
– Inutile far convivere sullo stesso bus dispositivi veloci come la memoria e dispositivi lenti come una tastiera o un floppy
• Si è passati un sistema di Bus a differenti livelli e differenti velocità. Esempio:
– FSB (Front Side Bus): Bus parallelo implementato dal micro – PCI (Peripheral Component Interconnect): Bus parallelo di
livello intermedio
– ISA (Industry Standard Architecture): Bus di basso livello per connettere i dispositivi convenzionali lenti
– Tra i diversi livelli ci sono i “Bridge”
– Essi formano il “Chip set” che fa da “collante”
Anni 90
Esempio anni ’90
South Bridge North
Bridge
Struttura PC anni 2000
Struttura PC corrente (fine anni 2000)
Si è passati al
single chip di
supporto e soli
bus seriali
PC fine anni 2000
Anni 20103: ultimo Strillo (Nehalem)
Chip Nehalem
Memoria Nehalem
• Il controllore di memoria è nella stessa CPU (la CPU ha 3 canali verso la memoria, su ciascuno dei quali si possono montare 3 DIMM)
• L’esempio corrisponde alla config di destra del trasp precedente
QPI
Memoria Nehalem
• Le migliori prestazioni si hanno se la memoria è bilanciata sui 3 canali.
• I 3 canali servono alla gestione “interleaved”
Ricapitoliamo
• Fino almeno a fine anni ’80, PC e Workstation erano costruiti attorno a un bus unico a cui erano attaccati (+ o -) tutti i
dispositivi
• A partire dagli anni 90 sono state introdotte gerarchie di bus
– Tipico è il bus PCI (introdotto da Intel per collegare periferici ad alte prestazioni)
– E stato introdotto il “bus seriale” USB
• Negli anni 2000 i “bus seriali” hanno cominciato a sostituire i bus paralleli
– Il Nehalem ha 3 bus paralleli (64bit) verso la memoria e 2 bus serial QPI
• Attenzione: La parola “bus seriale” è spropositata, si
dovrebbe parlare di “interconnessione/link seriale”
Crescita prestazioni Bus PC
BUS Parallelo/seriale
• Il parallelismo fa aumentare le prestazioni
• Il bus parallelo è per sua natura “multi drop”: sullo stesso bus si possono attaccare più dispositivi
– Più portare ad alti assorbimenti
– Richiede un metodo per l’accesso al bus (contese)
• Ma allora perché i bus paralleli vengono sostituiti con collegamenti seriali (che per natura sono punto-punto) ???
– Perché quando le frequenze sono molto elevate nascono
fenomeni di Timing skew (oltre a fenomeni EMI)
Timing skew
• Disallineamento temporale nell’arrivo di due o più segnali inviati lungo più linee in parallelo, dovuto alle caratteristiche fisiche del BUS.
• Impone un limite fisico alla larghezza di banda (per poter
garantire una trasmissione di dati stabile e sicura)
Link seriale
• I dati vengono trasmessi un bit alla volta
– Serializzati in trasmissione
– Ricostruzione dal dato in ricezione
• Vantaggi
– Il problema del time skew è eliminato
– Il collegamento è del tipo LVDS ( Low Voltage Differential Signal ) – I collegamento sono punto-punto
• Non ci sono più connessioni multi drop
• Cross talk eliminato
Link seriale
• I dati vengono trasmessi un bit alla volta
– Serializzati in trasmissione
– Ricostruzione dal dato in ricezione
• Vantaggi
– Il problema del time skew è eliminato
– I collegamenti sono LVDS ( Low Voltage Differential Signal ) – I collegamenti sono punto-punto
• Non ci sono più connessioni multi drop
• Cross talk eliminato
Il clock non è in forma
esplicita
Segnali differenziali
• Metodo di trasmissione in cui i segnali sono trasmessi in forma complementare (+ e - ) su una coppia si fili.
• Il valore del segnale è dato dalla differenza tra i due segnali
• Poiché i disturbi influenzano entrambi i segnali la differenza li elide
• E’ n modo molto più sicuro della trasmissione su un solo filo dove il valore del segnale è rispetto a una (sola) tensione di riferimento (la massa)
Esempi di comunicazioni differenziali:
• Digitali: RS-422, RS-485, Ethernet doppino, PCI Express,
USB…..
Come il rumore viene eliminato
Immunità al rumore
La figura precedente non è esatta:
in uscita il segnale è doppio
Immunità al rumore
• Un rumore su un singolo filo (caso peggiore) ha un impatto metà di come avrebbe sul singolo filo in trasmissione non differenziale.
– Ovvero nel caso peggiore l’immunità è raddoppiata – Se il rumore appare su ambedue viene eliminato
– La trasmissione differenziale è tanto più indicata quanto più i segnali
sono a basso livello di tensione
Trasmissione sincrona/asincrona
• Sincrona
– Trasmettitore e ricevitore hanno clock propri alla stessa frequenza
• Può generarsi disallineamento tra i due clock
• Trasmissione di blocchi dati di dimensioni ridotte
• Ogni blocco dati ha una sequenza iniziale di
“sincronizzazione” che serve a mettere in fase il clock del
ricevente
Trasmissione sincrona/asincrona
• Asincrona
– Il sincronismo è su ciascun carattere. Il carattere contiene implicitamente il clock
• Fondamentale è il concetto di
“codifica”, ovvero come un dato viene codificato/decodificato in trasmissione/ricezione
• Normalmente la linea è in stato di riposo
– Quando passa bassa si ha lo start bit
– Seguono i bit del carattere
– Da ultimo lo stop bit
BUS PARALLELI/SERIALI
• Nel seguito, a titolo di esempio faremo
riferimento al bus PCI. (Ne approfittiamo per capire come funziona un bus)
• PCI:
– Introdotto da Intel negli anni ’90 come bus parallelo a 32 bit, f= 33 MHz (pari a 133 MB/s) per collegare periferiche
– Successivamente portato a 64 bit e f = 133 MHz (pari a 1014 MB/s) (PCI-X)
– Nel 2004 è stato introdotto il PCI-Express, evoluzione in
forma seriale del PCI (con cui mantiene la compatibilità SW)
PCI (segnali)
Clock
Transazioni
• Trasferimento di pacchetti di dati la cui lunghezza è determinata dinamicamente in fase di trasferimento
• Tutte le operazioni sincronizzate sul clock
• Una transazione di trasferimento si attua in due fasi:
a) Fase di indirizzamento: il master trasmette indirizzi e tipo di trasferimento (memory read, memory write, i/o read,…), il target indirizzato risponde e dice di essere pronto
b) Fase di trasferimento dati
• Prima della transazione può esserci una fase di arbitraggio per l’allocazione del bus a uno dei master che ne fanno richiesta contemporanea
– L’arbitraggio verrà mostrato più avanti
PCI: Segnali di controllo di interesse
PCI – transazione (burst) di lettura
PCI – transazione (burst) di lettura
PCI – transazione di lettura
Clock 1. La transazione inizia quando l’initiator (master) asserisce il
segnale di FRAME, l’indirizzo su AD[0:31] e il comando (di lettura) su C/BE[0 : 3]#
Clock 2. Il master asserisce IRDY; le linee C/BE[0 : 3]# assumono significato di Byte Enable. Il ciclo viene lasciato passare per dare il tempo di stabilizzarsi alle linee AD (che cambiano proprietario,
dall’initiator al target che le asserisce come linee Dati). Poiché il fronte finale trova TRDY (e DEVSEL) non asserito segue un ciclo di wait
Clock 3. Il dispositivo risponde al master asserendo il segnale di DEVSEL e il segnale TRDY: ha inizio la fase dei dati.
Clock 4. Essendo IRDY e TRDY asseriti, viene trasferito il primo dato.
Clock 5. Il target ha disasserito TRDY (evidentemente non è in grado di
produrre il secondo dato) causando un ciclo di attesa e mantenendo
sulle linee AD il dato precedente
PCI – transazione (burst) di lettura
Clock 1. La transazione inizia quando l’initiator (master)
PCI – transazione (burst) di lettura
Clock 2. Il master asserisce IRDY; le linee C/BE[0:3]# assumono
PCI – transazione (burst) di lettura
Clock 3. Il dispositivo risponde al master asserendo il segnale di
PCI – transazione (burst) di lettura
PCI – transazione (burst) di lettura
Clock 5. Il target ha disasserito TRDY (evidentemente non è in
grado di produrre il secondo dato) causando un ciclo di attesa sulle
PCI – transazione (burst) di lettura
PCI – transazione (burst) di lettura
Clock 8. Il Master legge il dato sul bus. Poiché il Master ha
disasserito FRAME la transazione deve terminare (il Target ha
mantenuto il dato perché sul fronte del clock precedente aveva
campionato IRDY disasserito). il Target disasserisce TRDY e
PCI – transazione di scrittura
PCI
• Le transazioni precedenti sono state concluse dal
Master normalmente. Il master può anche concludere per:
– Time-out – Abort
• Il Target può pure forzare la conclusione per:
– Retry (ovvero: riprova dopo!) – Disconnect (basta!)
– Target abort
(non addentriamoci nei dettagli)
PCI arbitraggio per il possesso del bus
• L’arbitraggio è centralizzato
• E’ nascosto: avviene durante il trasferimento
precedente in modo che nessun ciclo di bus venga
penalizzato
PCI: esempio arbitraggio
• Ipotesi
– A e B sono due Master – B ha maggior priorità
– A fa per primo la richiesta, che gli viene garantita
– B fa la richiesta dopo A. Quando la richiesta di B viene garantita, viene “sgarantita” quella di A che rilascia il bus
• Si ipotizza che B trasferisca un solo dato
– Quando B rilascia il bus (disasserzione della richiesta), A, che ha mantenuto la richiesta, riottiene il bus (ovviamente perché non ci sono altre richieste più prioritarie)
• Seguirà il completamento della transazione interrotta
PCI: esempio arbitraggio
PCI Express
Link point-to-point:
• Composto da un certo numero di corsie
• Corsia (lane): canale RX e canale TX
• La trasmissione sui canali è differenziale
Possibili tipologie di Link:
x1, x2, x4, x8, x12, x16 e x32
Nella versione 1 la velocità di trasmissione è
di 2,5 Gb/s su ciascun canale (ovvero 5
Gb/s per link; ovvero 0,5 GB/s per lane).
Connettori PCI Express e PCI
X16 X1 X16
X4
PCI Express prestazioni
• Versione 1
– Velocità di trasmissione = 2,5 Gb/s su ciascun canale (ovvero 5 Gb/s per lane; ovvero 0,5 GB/s per lane).
– Un link 8x arriva a 4 GB/s (comprende caratteri di controllo ecc..)
• Versione 2
– Velocità di trasmissione = 5 Gb/s su ciascun canale (ovvero 10 Gb/s per lane; ovvero 1 GB/s per lane).
– Un link 16x arriva a 16 GB/s
• Versione 3
– La codifica è diventata 128b/130b (alza di molto il rendimento)
– Velocità di trasmissione = 8 Gb/s su ciascun canale
Codifica 8bit/10bit
• 8 bit in ingresso vengono trasformati in 10 bit di uscita, secondo opportune tabelle di conversione (lookup table) predeterminate e note al ricevitore.
• La trasformazione è studiata in modo da ottenere, per ciascuno dei 256 possibili byte in ingresso:
– Flusso in uscita con un numero sufficiente di transizioni 0/1, in modo da poter recuperare facilmente il clock in ricezione.
– Flusso in uscita con un numero bilanciato di 0 e 1 (bilanciamento della corrente DC).
– Possibilità di aggiungere codici di controllo, grazie al fatto che i possibili codici a 10 bit sono 1024 mentre i codici in ingresso sono solo 256.
– Possibilità di rilevare gli errori di trasmissione grazie al rilevamento della disparità sul segnale trasmesso.
– Svantaggio: nel passaggio da 8 a 10 bit si ha un degrado del 25% delle
Codifica 8/10
La codifica 8/10 deve rispettare le seguenti regole:
• nessun codice a 10 bit in uscita deve avere più di 5 bit consecutivi identici
• nessun codice a 10 bit in uscita deve contenere più di sei 0 o sei 1, distribuiti come segue:
• quattro 0 e sei 1
• quattro 1 e sei 0
• cinque 0 e cinque 1
• I caratteri che non rispettano queste regole vengono considerati errori dal ricevitore
• Le regole precedenti hanno come effetto il bilanciamento della
componente DC
Protocollo a livelli del PCI Express
Compatibilità
col PCI
PCI Express pacchetti dati
Perché si dice che è un bus
USB (1995)
• Universal Serial Bus
• Nel mondo dei PC è’ diventata l’interfaccia standard per qualunque dispositivo esterno
• Più che un bus è un sistema di interconnessione di periferici che ha al centro un host
– Capacità di collegare più dispositivi sulla stessa porta USB – Periferrici e hub
• Collegamento/scollegamento a caldo
• Protocollo di comunicazione a 3 livelli
• Velocità
– USB 1.1 : 1,5 MB/s
– USB 2.0 : 35 MB/s (effettivi)
– USB 3.0 : 400 MB/s (effettivi)
USB
USB Protocollo/livelli flusso
Cavo USB
Seconda parte
DISCHI E
RELATIVI
BUS
Dischi magnetici
• Memorie di massa
• Piatti, settori, tracce, cilindri, testine,….
• Tecnologie raffinatissime
– l’altezza di volo delle testine è 0,5 micron (una particella di fumo è 6 micron)
– migliaia di giri al min senza mai fermarsi
Anatomia HDD
HD per PC - Evoluzione
ST506 : 5 MB 5 1/4 ” 1979 (primo per i PC)
Oggi: 2,5”
portabili: 1TB e più
HDD
• Piatti: da 1 a 4 (anche di più)
• Diametro: da 1 a 5,25 pollici (portatili 2,5”, desktop 3,5”)
• Giri/min: da 3.600 a 7.200 (e più, fino a 15.000)
• Tracce/faccia: da 1.000 a 5.000+ per faccia
• Settori/traccia: da 17 a 200+ (il valore “standard” è 63)
• Dim settore (Byte): 512 (tipica ), 1.024, 2.048, 4.096 (la tendenza è verso 4.096)
• Velocità massima trasferimento (interna): Con SATA 3.0 si arriva a fino a 6 Gb/s , SATA 1.0 arrivava fino a 1.5 Gb/s ,
• La velocità massima di trasferimento esterna può essere
superiore per via della cache interna che fa da buffer
Tempi (più o meno tipici)
• Tseek: da 3 a 12 ms
(è un tempo medio: sfavorevole!! )• Tlat = 0,5 (60/g) (g: giri/min)
g = 3600 Tlat =8,33 ms g = 7200 Tlat = 4,17 ms g = 10000 Tlat = 3,00 ms
• Ttrasf = Dimsett/Vtrasf
Dim = 4096 Vt = 100 MB/s Ttrasf = 0,04 ms
• Tacc= Tseek+Tlat+Ttrasf (+Tcontr+Tq)
• Esempio: Seagate Barracuda 7200.11
– 1 TB; 7200 g/m; Interfaccia SATA; 32 MB cache;
– 512 B/settore; 1.953.525.168 settori; 63 settori/traccia;
– Tacc = 11 ms
– Vt (interna) = 1030 Mb/s; Vt (esterna continua) = 105 MB/s
– Vt (esterna max) = 300 MB/s;
Settori
Dischi attuali
Conviene avere + o – la
stessa densità => divisione per zone
N sett/traccia cresce verso le In passato
N sett/traccia costante
Cilindri
• Indirizzamento CHS (cilindro – testina – settore) – C: individua il cilindro
– H: individua la testina (la superficie)
• (C+H individuano la traccia)
– S: individua il settore entro la traccia Le tracce in
posizione X formano
il cilindro X
Indirizzamento CHS
• Standard CHS versione iniziale:
– Bit di indirizzo 24: 10+8+6
– 1024 * 255 * 63 = 16 M settori c.a. Max – Con settori da 512 B => 8 GB c.a. Max
• Il BIOS del PC XT IMB usava 4 bit per H
– Ne conseguiva una capacità massima di = 0,5 GB c.a.
– Successivamente i bit di indirizzo venne portato a 28 e poi esteso ulteriormente.
• Con i dischi moderni IDE (zoned recording) questo schema non
corrisponde più a quello fisico. Ma CHS viene ancora usato per
compatibilità: il drive converte CHS nell’indirizzo fisico interno
LBA : Logic Block Addressing (dischi IDE)
• Ogni settore ha un indirizzo (un numero) da 0 fino a n-1 (se n è il numero complessivo dei settori)
• Per compatibilità è possibile usare l’indirizzamento CHS, il drive individua il settore corrispondente
• Nelle specifiche si leggono numeri di cilindri e di testine che non corrispondono a quelli fisici. Ad esempio, si può leggere che un disco ha la capacità pari a C=16.383; H= 20; e 63 sett/traccia.
Difficile far stare 20 testine in meno di 2 cm di spessore !!!!
Quei numeri non sono quelli fisici. Di norma le testine non sono
più di 8; il 20 corrisponde a un campo dell’indirizzo come CHS.
La logica del drive converte CHS nell’indirizzo interno
Esempio : Hitachi Travelstar 2,5” SATA
Spessore: 9,5 mm
SSD (Solid-State Drive)
• Usano Memorie Flash
– Ci sono anche SSD RAM (più veloci, ma (ovviamente) volatili)
• Vantaggi
– Silenziosi, meno influenzati da urti
– Più veloci (non ci sono i tempi i seek e di latenza)
• Svantaggi
– Più costosi (almeno per ora….)
• Interfacce
– Seriali: SATA; Serial attached SCSI (usualmente sui
server); USB; Fiber Channel (esclusivamente sui server);
PCI Express
– Parallele: IDE/ATA; SCSI (tendenzialmente rimpiazzate
dalle corrispondenti seriali)
Interfacce/bus Dischi Rigidi
• SCSI
– Prevede un controllore in grado di pilotare più dispositivi (teoricamente si può arrivare oltre 2000), anche diversi – Parallela
– High-end applications
• IDE/ATA
– La prima a integrare la logica del controllore sul disco stesso – Parallela
– Tipica di PC e workstation (1-2 HD)
• SATA
– Seriale (più veloce di ATA)
– Cavi di pochi fili (via il cavo piatto ATA) – Point-to-point seriale
• USB
– Seriale, point-to-point
SCSI (introdotto metà anni 80)
• Parallelo, Multidrop
• Connettore da 50 (o 68) pin
• Parallelismo: 8 o 16 bit (dati)
• Velocità
– SCSI (8 bit): 5 MB/s – Wide SCSI (16 bit): 20 MB/s – Ultra-640 SCSI (16 bit): 640 MB/s
Molte altre
versioni
SCSI
IDE/ATA (introdotto a metà anni 80)
• IDE (Integrated Drive Electronics) /ATA (AT Attachment)
– E’ lo standard definito rispetto al bus del PC AT (il nome dovrebbe essere solo ATA)
– Bus parallelo (16 bit). Multidrop – In svariate versioni
– ATA 1 : l’originale, pensato all’epoca del PC AT (ISA) per i soli dischi rigidi
– ATA 4 (ATAPI) : estende l’interfaccia anche ai CD (detto anche Ultra ATA o ATA/33)
• Velocità: 16 MB/s (introduzione) 133 MB/s (finale)
IDE/ATA
Bus Seriali
• In genere si tratta della trasformazione di bus paralleli in bus seriali:
– SAS (Serial Attached SCSI, deriva dalo SCSI) – SATA (Serial ATA, deriva da ATA)
– A livello di controllore mantengono la compatibilità con i paralleli da cui derivano
• La ragione per passare da bus paralli
(apparentemente più veloci) a bus seriali è già stata
illustrata
SAS
• Serial Attached SCSI
• Evoluzione in forma di bus seriale
• Punto-punto
• Compatibile con il SCSI (al controllore), ma è un protocollo a livelli
• Preferito al SATA sui server
• Il cavo corrisponde a 4 collegamenti SATA (vedi avanti)
• Velocità
– 3 Gb/s : 300 MB/s
– 6 Gb/s : 600 MB/s
SATA (introdotto nel 2003)
• Serial Advanced Technology Attachment
• Bus Seriale, point to point
• Praticamente ha del tutto rimpiazzato ATA
• I comandi al controllore sono rimasti quelli IDE per compatibilità, ma il protocollo è a livelli
• Preferito a SAS su applicazioni non critiche
• Velocità:
– Rev 1 1,5 Gb/s: 150 MB/s – Rev 3 6 Gb/s: 600 MB/s
– SATA Express: 16 Gb/s: 1,6 GB/s (su bus PCIe)
SATA
• Point-to-point
– A tutti gli effetti un collegamento diretto anche se si continua a chiamarlo “bus” (meglio parlare di interfaccia)
• 7 linee: 3 masse e 4 segnali
Nota: le tre masse hanno contatti
leggermente più lunghi per fare in
modo che si tocchino prima
SATA Protocollo a 3 livelli
• Link Layer – comandi primitivi
– Corrisponde al livello fisico, livello di segnale, caratteri
• Packet Layer – scambio di “frame”
• Application/Command Layer –
– È il livello che presenta un’interfaccia compatibile con i comandi ATA
– Un comando ATA (compresi i dati) viene trasformato in una serie di pacchetti che, a loro volta, si trasformano in una serie di caratteri
• Nei bus seriali i protocolli a più livelli sono lo
standard
Parte terza
?
Il primo computer della storia
• ENIAC (Electronic Numerical Integrator And Calculator) – Sviluppato presso l’Università della Pennsylvania
– Finanziato dal Ministero della Difesa USA
– Divenne operativo durante la II guerra mondiale
– Costruito tra il 1943 e il 1946, reso pubblico nel 1946
– Oltre 120 metri cubi di volume, su una superficie di 180 mq, pesava 30 tonnellate. Consumava poco meno di 180kW
– Oltre 18.000 tubi a vuoto (valvole) collegati da 500.000 contatti saldati a mano.
– 20 registri di 10 cifre; ogni registro era lungo oltre mezzo metro.
• I progettisti erano J.P. Eckert e J. Mauchly
Processori Intel
Processori Intel
Primati
Ma come scaldi!
Ma come scaldi!
Core2 starebbe qui (+o-)
Se la crescita fosse stata la
stessa !!