Parte III Logica Digitale, Memorie, Microprocessori e Bus

Parte III
Logica Digitale, Memorie,
Microprocessori e Bus
Calcolatori Elettronici(5 crediti), Prof. S. Salza a.a. 00-01
III.1
Circuiti Digitali
i1
INGRESSI
in
CIRCUITO
DIGITALE
o1
USCITE
om
• Circuiti elettronici i cui ingressi e le
cui uscite assumono solo due livelli
• Al circuito sono associate le funzioni
che calcolano le uscite a partire dagli
ingressi
o1 = f1( i1,….,in )
..
.
om = fm( i1,….,in )
III.2
Semiaddizionatore
(Half Adder)
• Circuito a 2 ingressi e 2 uscite:
somma e riporto (carry)
• Non può essere usato per la somma
di numerali a più bit, dove occorre
sommare anche il riporto della cifra
precedente
III.3
Addizionatore Completo (Full Adder)
III.4
• Circuito a 3 ingressi e 2 uscite
• Riceve il riporto dalla cifra precedente
ALU a 1 bit (bit slice)
• A e B sono bit omologhi degli operandi
• F0 e F1 selezionano la funzione (00: AND),
(01: OR), (10: NOT), (11: SUM)
• ENA ed ENB sono segnali di enable
• INVA permette di negare A
• Default ENA=ENB=1 e INVA=0
III.5
ALU ad n bit
III.6
• Realizzata connettendo n ALU ad 1 bit (bit slices)
• Problema: propagazione dei riporti
• Ciascuno stadio deve attendere il riporto dal precedente
• Tempo di addizione lineare con n
• INC incrementa la somma di 1 (A+1, A+B+1)
Latch e Flip-Flop
a)
b)
• I Latch commutano sui livelli del clock
( a) alto, b) basso)
a)
b)
• I Flip-Flop commutano sui fronti del
clock:
a) Commuta sul fronte di salita
b) Commuta sul fronte di discesa
III.7
Registri
• I Flip-Flop sono gli elementi base di
memorizzazione nel computer
• Molti Flip-Flop possono essere messi su
un unico chip
• Occorrono in genere da 6 a 10 transistor
per ogni Flip-Flop
III.8
Organizzazione della Memoria
III.9
Dispositivi a 3 stati
• In base ad un segnale di controllo C
si comporta:
(b) C=1: come circuito chiuso
(c) C=0: come circuito aperto
• Tempo di commutazione: pochi nsec
• Consente di usare gli stessi piedini sia
per la lettura che per scrittura
• Usato anche per la connessione ai bus
e a qualsiasi linea bidirezionale
III.10
Chip di Memoria
CS
n× m
OE
…….
CHIP DI MEMORIA
log2 n
LINEE
INDIRIZZO
WE
…….
m
LINEE DATI IN/OUT
• Chip da n × m bit complessivi
• m linee dati bidirezionali
• log2 n linee di indirizzo
• Segnali di controllo:
– CS (Chip Select)
– OE (Output Enable)
– WE (Write Enable)
Problema: numero limitato di piedini
del contenitore
III.11
Matrice di selezione
log2n
1/2 log2n
1/2 log2n = log2 √ n
DECODER 1/2 log n → √ n
DECODER 1/2 log n → √ n
• Si risparmia nella complessità della logica di
decodifica
• Un decoder m → 2m richiede 2m porte AND
ES
– 4M parole → 22 linee
– 1 decoder a 22 → 4M porte AND
– 2 decoder a 11 → 2⋅211= 4k porte AND
III.12
Chip di Memoria (Esempi)
III.13
• RAS (Row Address Strobe), CAS (Column Address Strobe)
• Indirizzi di riga e di colonna multiplexati sugli stessi piedini
Schede di Memoria
III.14
• La scheda memorizza parole di n byte
• Si usano n+1 se si vuole il controllo di parità
• Bit di parità gestito dal controller della memoria
SIMM da 16 Mbyte (8 chip da 4M × 4 bit)
IND 2-23
22
R/W
CS0
CS1
CS2
CS3
4M × 4
4M × 4
4
4
....
4M × 4
4
4
8
8
III.15
4 x 8 bit
Organizzazione della memoria
• SIMM (Single Inline Memory Module)
– 72 piedini, 32 bit, 8-16 chip, 32 MByte
– A coppie nel Pentium (bus dati 64 bit)
• DIMM (Double Inline Memory Module)
– 168 piedini, 64 bit, 16 chip, 128 MByte
• Il controller gestisce più SIMM (o DIMM)
• Ogni SIMM informa il controller della sua
dimensione (segnali su certi piedini)
• Il controller determina al momento del boot
il tipo di RAM (e.g. EDO)
• Dall’indirizzo e dalla configurazione il
controller calcola a quale SIMM mandare il
segnale di Chip Select
III.16
Tassonomia delle RAM e ROM
• RAM (Random Access Memory)
• ROM (Read Only Memory)
• SRAM (Static RAM): a Flip-Flop,
molto veloce (~5nsec)
• DRAM (Dynamic RAM): basata su
capacità parassite; richiede refresh, alta
densità, basso costo (~70 nsec)
– FPM: selezione a matrice
– EDO: (Extended Data Output)
lettura in pipeline, più banda
• SDRAM (Synchronous DRAM)
– Sincrona, prestazioni migliori
• PROM (Programmable ROM)
• EPROM (Erasable PROM) raggi UV
• EEPROM: cancellabile elettricamente
• Flash Memory: tipo di EEPROM,
ciclo 100nsec, max 10.000 riscritture
III.17
Tipi di RAM e di ROM e loro impieghi
III.18
Refresh nelle DRAM
• Necessario rinfrescare, cioè riscrivere,
tutta la DRAM con periodo T
• Possibile scrivere in un solo ciclo una
riga o una colonna
• Refresh simultaneo di tutti i chip e
tutte le schede
ES
– T : periodo di refresh
– n : dimensione
(4 ms)
(4MB)
– τ : durata ciclo refresh
(40ns)
– η : overhead
η=(√ n⋅ τ) / T
η=(2048 ⋅ 40 ⋅10-9) / (4 ⋅10-3)≈2%
III.19
Pinout Logico del µP
• Indirizzamento
• Dati
• Controllo
– Controllo del ciclo di bus
– Gestione delle interruzioni
– Arbitraggio del bus
– Gestione del coprocessore
– Segnalazione di stato
– Vari (alimentazione etc.)
III.20
Architettura a più Bus
• Diversi bus, interni ed esterni al chip
• Soddisfano diverse esigenze:
– Velocità di trasferimento
– Numero di linee
– Più trasferimenti paralleli
– Compatibilità all’indietro
• Nei primi PC c’era un unico bus
• Negli attuali PC almeno tre bus esterni
III.21
Comunicazione sul Bus
• La comunicazione sul bus è regolata
da un protocollo di bus
• In ciascun ciclo comunicano due soli
dispositivi il master e lo slave
• Lo stesso dispositivo può avere ruoli
diversi a seconda dei casi
• I dispositivi sono connessi al bus
tramite un bus transceiver
• La connessione al bus avviene tramite
dispositivi a tre stati oppure è di tipo
open collector
III.22
‘Larghezza’ del Bus
• Larghezza = numero di linee
• Linee dati: banda di trasferimento
• Linee indirizzo: dimensione dello
spazio (di memoria) indirizzabile,
2n locazioni con n bit di indirizzo
Problema: al crescere del numero di
linee aumenta il bus skew (differenza
nella velocità di propagazione dei
segnali
Soluzione: multiplexamento di più
segnali sulla stessa linea
III.23
Segnali asseriti e negati
• In alcuni casi ( a seconda delle scelte di
progetto) un segnale provoca l’azione
corrispondente quando la sua tensione
è alta, in altri quando è bassa
• Per evitare confusione si parla di:
– Segnale asserito: quando assume il
valore che provoca l’azione
– Segnale negato: altrimenti
• Si adotta la seguente notazione:
– S: segnale che è asserito alto
– S: segnale che è asserito basso
• Ulteriore notazione (usata da Intel):
– S: segnale che è asserito alto
– S#: segnale che è asserito basso
( adatta al set di caratteri ASCII)
III.24
Bus Sincroni: ciclo di lettura
T=25 nsec
• Tutte le azioni avvengono sui fronti
• Se la memoria mantiene asserito WAIT
il ciclo si prolunga
III.25
Bus Sincrono: Temporizzazione
ES
• Frequenza 40 MHz, periodo 25 nsec
• Tempo a disposizione della memoria fra:
a) la comparsa dell’indirizzo sul Bus
b) la disponibilità dei dati sul Bus
τ1 = 2.5⋅T-TAD-TDS = 62.5-16 = 46.5 nsec
• Tempo a disposizione della memoria fra:
a) l’asserzione di MREQ e RD
b) la disponibilità dei dati sul Bus
τ2 = 2⋅T-TM-TDS = 50-13 = 37 nsec
• Una memoria da 40 nsec ce la fa di sicuro
• Altrimenti mantiene asserito il segnale di
WAIT, per introdurre stati di wait, cioè cicli
di bus addizionali
III.26
Bus Asincrono: ciclo di lettura
• Accoppiamento di dispositivi con
velocità diverse
• Gli eventi avvengono in risposta ad
altri eventi (rapporto di causa ed effetto)
FULL HANDSHAKE
1) MSYN asserito
2) SSYN asserito in risposta a MSYN
3) MSYN negato in risposta a SSYN
4) SSYN negato in risposta a ¬MSYN
III.27
Arbitraggio del Bus
• Permette di decidere quale dispositivo
sarà il prossimo Bus Master risolvendo
eventuali conflitti
• Spesso l’arbitro è nel chip del µP
• Linea di richiesta condivisa
• Il Bus grant è propagato dall’arbitro
poco prima dell’inizio del ciclo
• Viene intercettato dal futuro master
NB Favoriti i dispositivi situati vicino
all’arbitro
III.28
Livelli Multipli di priorità
• Diverse linee di richiesta associate a
diversi livelli di priorità
• In caso di conflitto favorite le catene a
priorità più alta
• All’interno di ciascuna catena vale la
posizione
• In genere se c’è un solo bus con anche
la memoria la CPU ha priorità più bassa
dei dispositivi di I/O (e.g. dischi)
III.29
Arbitraggio Decentralizzato
• Quando un dispositivo vuole il Bus:
1) Se Bus Request è asserito attende
2) Appena Bus Request è libero lo
asserisce (lo possono fare in tanti)
3) Appena Busy è libero nega Out
4) Attende τ (che la linea sia stabile)
5) Aspetta di vedere se riceve In
6) Se e quando riceve In asserisce
Busy e nega Bus Request
• Non necessita di arbitro, è più semplice
e più veloce
III.30
Block Transfers
• Permette di leggere più parole consecutive
• Usato per trasferire blocchi di cache
• Numero di parole specificato durante T1
• Dopo la prima viene trasferita una word
ogni ciclo (invece di una ogni tre cicli)
• Per leggere quattro word occorrono 6 cicli
invece di 12
• Il segnale BLOCK viene asserito per chiedere
un block transfer
III.31
Gestione delle Interruzioni
• Chip controllore di interruzioni Intel
8259A usato dal PC IBM e successori
• Gestisce 8 linee di interrupt
– INT: interruzione inviata alla CPU
– INTA: aknowledge della CPU
– Vettore di Interrupt passato sul Bus
– IR0-IR7: linee di interrupt sul Bus
• Il vettore di interrupt è usato dalla CPU
per saltare alla relativa routine
• Registri all’interno del chip scrivibili
dalla CPU per programmare lo 8259A
III.32
Il Pentium II
• Architettura a 32 bit completamente
compatibile con i predecessori
• Aritmetica Floating-point IEEE 754
• Bus di memoria a 64 bit
• Cache 1o livello 16KB dati +16KB istr.
• Cache 2o livello 512 KB nel package (a
metà della frequenza della CPU)
• SEC (Single Edge Cartridge) a 242 pin
• Dissipa oltre 55W!
III.33
Pentium II: Pinout Logico
III.34
Pentium II: Pinout Logico (2)
• 242 connetori sul SEC:
– 170 segnali
– 27 connessioni di alimentazione
– 35 connessioni di massa
– 10 per ‘uso futuro’
• Indirizzi a 36 bit (64 GB), ma sempre in
blocchi di 8 byte (solo 33 bit di indirizzo)
• 64 linee dati; segnali: D# (richiesta dati),
DRDY# (data ready), DBSY# (data busy)
• Segnali di Snoop per la coerenza di cache
• Gestione delle interruzioni sia come l’8088
che con APIC (Adv. Progr. Interr. Contr.)
• VID: per la scelta della tensione
• Power Management: permette di mettere
la CPU in stato di sleep e deep sleep
• 11 linee di diagnosi secondo lo standard
IEEE 1149.1 JTAG
III.35
Pentium II: Memory Bus
• Bus gestito con pipelining: è possibile
sovrapporre più transazioni
• Fasi di una transazione (usano gruppi di
linee indipendenti):
1) Bus arbitration phase (non mostrata)
2) Request phase
3) Error reporting phase
4) Snoop phase
5) Response phase
6) Data phase
• Non sempre si usano tutte le fasi
III.36
Il Bus ISA del PC/AT
• ISA (Indunstry Standard Architecture)
derivato dal bus del PC/AT
• Compatibile con il bus del PC a 62 linee
• 62+36 linee: 16 dati e 24 indirizzi
• Edge Connectors (molto economici)
• Tutt'oggi presente in tutti i PC per l’uso
di carte legacy
• Estensione EISA di poco successo
• Sincrono a 8.33 MHz: 16.7 MB/sec
III.37
Il Bus PCI: architettura complessiva
III.38
Il Bus PCI: specifiche
• PCI (Peripheral Component Interconnect)
• Introdotto da Intel per applicazioni video
• Video 1024×768×3 Byte a 30 frame/sec
richiede una banda di 67.5 MB/sec
• Standard non propietario, adottato da molti,
(ma Intel vende i chip di gestione….)
• Versione base a 32 bit, 33 MHz: 133 MB/sec
• Estensione a 64 bit e 66 MHz: 528 MB/sec
• Local Bus e Memory Bus separati (più veloci)
• Connessione tramite chip PCI bridge
• Varie opzioni di tensione (5 V e 3.3 V)
• Carte con 120 e 120+64 contatti
• Bridge ISA (include doppio controller IDE)
• Controllori addizionali SCSI e USB
• Bus sincrono, transazioni tra initiator e target
• Linee indirizzo e dati multiplexate
III.39
Il Bus PCI: arbitraggio
• Arbitraggio centralizzato (nel Bridge)
• Ogni PCI device ha due linee dedicate
• Il device fa la richiesta tramite REQ#
• Il grant viene concesso tramite GNT#
• Diversi algoritmi di arbitraggio:
– Round Robin
– Priorità
– Altro
• Transazioni su piu cicli separate da
cicli di idle
III.40
Il Bus PCI: Segnali Obbligatori
III.41
Il Bus PCI: Segnali Opzionali
III.42
Bus PCI: Segnali
• Bus a 120 o 180 linee
• Oltre ai segnali sono distribuiti anche
alimentazioni e masse
• 32(+32) linee AD multiplexate tra dati e
indirizzo con 1(+1) bit di parità PAR
• C/BE# (in cicli diversi) invia comandi e
specifica quanti e quali byte leggere
• FRAME# e IRDY (lettura) usati dal master
• DEVSEL# e TRDY# usati dallo slave
• IDSEL indirizza nel configuration space
di un device invece che in memoria (usato
per gestire il Plug and Play)
• STOP# e PERR# segnalano errori
• RST# induce un reset nella CPU e in tutti
i device sul bus
• SBO e SDONE segnali di cache snooping
III.43
Bus USB (Universal Serial Bus)
• Bus economico concordato da varie
aziende per la gestione di device di I/O
a bassa velocità (~ 1995)
• Obiettivi:
1) Evitare switch, jumpers
2) Installazione di tipo esterno
3) Cavo di connessione unificato
4) Alimentazione fornita dal cavo
5) Fino a 127 dispositivi collegabili
6) Supporto di dispositivi real-time
7) Installazione a PC acceso
8) Reboot non necessario
9) Bus e dispositivi economici
• Tutti gli obiettivi sono di fatto rispettati
III.44
USB: Specifiche Fondamentali
• Banda complessiva 1.5 MB/sec
• Limitata per ragioni di costo
• Root hub di connessione al bus PCI
• Connessione di dispositivi e di altri hub
• Struttura complessiva ad albero con
massima ramificazione di 16
• Connettori ai capi del cavo diversi
• Cavo a 4 fili: +5V, GND, 2 di segnale
• Alla connessione di un dispositivo:
– Interrupt: intervento del SO
– Richiesta di banda
– Assegnazione di indirizzo
• Indirizzo 0 usato per inizializzazione
• Logicamente connessione tra root hub
e ciascun device con bit pipe dedicata
III.45
USB: Struttura dei Frame
• Frame emessi ogni 1.00±0.05 msec
• Idle frame se non c’è comunicazione
• Contenuto del frame:
– SOF: Start of Frame
– IN / OUT: richiesta in lettura/scrittura
– DATA: payload fino a 64 byte più
controllo e codice di errore
– ACK / NACK: acknowledge o errore
• Polling usato invece delle interruzioni
III.46
Chip di I/O: UART, USART e PIO
• UART (Univ. Async. Rec. Transm.)
• USART (… Sync. Async. ……)
• Usati in interfacce parallelo/seriale
• PIO (Parallel Input/Output)
– Configurabile dalla CPU
– 3 Porti indipendenti da 8 bit con latch
– La CPU legge e scrive nei porti
– Possibile gestire anche semplici
protocolli di handshaking CPU-device
– Per gestire device TTY-compatible
III.47
Decodifica Parziale
III.48