Cenni alle reti logiche
Luigi Palopoli Cosa sono le reti logiche?
•  Fino ad ora abbiamo visto §  Rappresentazione dell’informazione §  Assembler •  L’obbie:vo di questo corso è mostrare come si proge>o una computer •  Quindi abbiamo adesso bisogno di fare una piccola digressione su come si proge>ano I circuiA logici •  Avremo un corso specifico su questo….. Valori logici
•  I computer moderni sono realizzaA tramite circuiA ele>ronici •  Tra>andosi di elemenA digitali avremo due livelli fondamentali §  Alto, Asserito (1): associato alla tensione di alimentazione Vdd §  Basso, negato (0): associato alla massa (tensione = 0) •  Altri livelli di tensione sono non significaAvi e assunA solo in fase transitoria Reti logiche
•  Le porte logiche sono dei circuiA che trasformano alcuni valori logici in ingresso in altri valori logici in uscita •  Le porte logiche sono di due Api §  Combinatorie ü Relazione funzionale tra ingresso e uscita ü Non hanno memoria ü L’uscita dipende solo dal valore dell’ingresso §  Sequenziali ü L’uscita dipende dalla storia degli ingressi passaA e non solo dal valore a>uale ü Hanno memoria (de>a anche stato della rete) Tabella di verità
•  Una possibile maniera di specificare una rete logica combinatoria è tramite una tabella di verità che elenca I valori delle uscite in corrispondenza dei vari ingressi INPUT OUTPUT A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 Algebra di boole
•  Una maniera più compa>a è di specificare le funzioni logiche combinatorie tramite espressioni algebriche definite con l’algebra di boole •  Esistono tre operatori di base §  AND ü viene rappresentato tramite il simbolo di prodo>o. Esempio A•B. ü Produce 1 se entrambi gli operandi sono uno e zero negli altri casi §  OR ü rappresentato tramite il simbolo della somma (+). Esempio A+B ü Produce zero se e solo se entrambi gli operandi sono 0 §  Not ü Rappresentato da una barra. Esempio: Ā ü Ha l’effe>o di inverAre il valore logico Algebra di Boole
•  Ci sono una serie di regole che ci perme>ono di manipolare facilmente le espressioni logiche §  IdenAtà: A+0=A, A•1=A §  Regola zero e uno: A + 1 = 1, A•0=0 §  Regola dell’inversa A + Ā=1, A•Ā=0 §  Regola commutaAva: A+B=B+A, A•B=B•A §  Regola AssociaAva: A+(B+C)=(A+B)+C, A•(B•C)=(A•B)•C §  Regola distribuAva: A•(B+C)=(A•B)+(A•C), A+B•C=(A
+B)(A+C) Algebra di Boole
•  In più esistono dure regole molto importanA, de>e di De Morgan A·B =A+B
A+B =A·B
•  Queste leggi ci dicono che se abbiamo una nand, o una nor tu: gli altri operatori logici si possono ricavare Algebra di Boole Esempio
•  Torniamo alla nostra tabella INPUT OUTPUT A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 •  Possiamo vedere facilmente D
=A+B+C
F
=A·B·C
Algebra di Boole - Esempio
•  Torniamo alla nostra tabella INPUT OUTPUT A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 E vale 1: §  Se A=1, B=1, C=0 oppure §  Se A=1, C=1 B = 0 oppure §  Se B=1, C=1, A= 0 E = (A · B · C) + (A · C · B) + (B · C · A)
•  O usando De Morgan E = (A + B + C) · (A + C + B) · (B + C + A)
Porte logiche
•  In realtà esistono dei circuiA ele>ronici (porte logiche) che mi implementano gli operatori booleani fondamentali AND OR NOT Porte logiche
•  Le porte si possono combinare tra di loro (con il not che può essere semplificato tramite un cerchio) A+B
Alcuni circuiti
•  Decoder Alcuni circuiti
•  MulAplexor •  Deviatore che sulla base di un input di controllo, determina quale degli input passa. Alcuni circuiti
•  MulAplexor a N vie •••• •••• Decoder Forme canonica SP
•  Abbiamo visto che Arare fuori un’espressione logica da una tabella di verità è semplice •  Basta prendere ciascuna riga uguale a 1 e scrivere un termine di prodo>o logico de>ato dalla configurazione degli ingressi •  A quel punto si può fare la somma di tu: I prodo: individuaA Altro esempio
•  Consideriamo come ulteriore esempio: A 0 0 0 0 1 1 1 1 INPUT B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 OUTPUT D 0 1 1 0 1 0 0 1 D = (A · B · C) + (A · B · C) + (A · B · C) + (A · B · C)
PLA
•  La stru>ura che abbiamo visto si compone di due stadi: la prima è una barriera di AND (cde: anche mintermini) e una barriera di OR •  La dimensione totale del PLA è data dalla somma di Piano AND (numero di mintermini e loro complessità) e del piano OR (Numero di uscite) •  Cara>erisAche importanA: §  Ci sono porte logiche solo per le configurazione che prudcono 1 §  Se un mintermine è condiviso tra varei uscita, basta una sola entry Esempio
•  Ritorniamo all’esempio INPUT OUTPUT A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 Esempio
•  Implementazione tramite porte logiche D =A+B+C
F
=A·B·C
E = (A · B · C) + (A · C · B) + (B · C · A)
Esempio
•  Una diversa rappresentazione (usando i punA nei piani and e or) D = A + B + C
F
=A·B·C
E = (A · B · C) + (A · C · B) + (B · C · A)
Costo
•  Le funzioni logiche possono essere implementate in maniera diversa (più o meno efficiente) •  Per COSTO di una rete logica si intende normalmente la somma del numero di porte e del numero di ingressi della rete (indipendentemente dal fa>o che siano posiAvi o negaA) •  E’ possibile trovare delle implementazioni di una rete che hanno cosA diversi Minimizzazione
di funzioni logiche
•  La minimizzazione di alcune espressioni logiche
è banale, in altri casi è necessario applicare le
regole algebriche in modo “furbo”
•  Es.
f (x1 , x2 , x3 ) = x1 x2 x3 + x1 x2 x3 + x1 x2 x3 + x1 x2 x3
= x1 x2 (x3 + x3 ) + x1 x2 (x3 + x3)
= x1 x2 + x1 x2
= (x1 + x1 )x2
= x2
Minimizzazione
•  Esistono metodi di minimizzazione sistemaAci basaA sull’applicazione iteraAva di queste regole •  Altri metodi sono basaA su rappresentazioni grafiche (mappe di Karnaugh), ma si applicano solo a casi più semplici •  Questo argomento si chiama “sintesi logica” e per gli interessaA è coperto nel corso di reA logiche Array di elementi logici
•  Molto spesso si costruiscono array di elemenA che operano su daA complessi •  Ad esempio come realizzare un mulAplexer che opera su un bus a 32 bit uAlizzando elemenA a un bit •  BUS: insieme di file (ad esempio 32) che viene visto come un singolo segnale logico Multiplexor a 32 bit
ALU
•  ALU: la algebraic logic unit è una componente che è in grado di effe>uare varie operazioi logiche e aritmeAche (secondo la selezione che viene fa>a). •  Esempio ALU a un bit che effe>ua (a comando) AND o OR Sommatore a un bit
•  Fino a ora c’e’ la parte logica ma non quella aritmeAca •  Come fare una sommatore a un bit (full adder)? •  Teniamo presente che oltre agli operandi abbiamo in input il riporto (carry in), e produciamo in output un altro riporto (carry out) Sommatore a un bit
•  Il sommatore a un bit è una rete logica combinatoria per la quale possiamo scrivere la tabella di verità Sommatore a un bit
•  Per il carry out l’espressione come SP è: CarryOut = (a · b · CarryIn) + (a · b · CarryIn) + (a · b · CarryIn) + (a · b · CarryIn
= (a · b · CarryIn) + (a · b · CarryIn) + a · b
= (b · CarryIn) + (a · CarryIn) + a · b
•  L’ulAmo passaggio si giusAfica perchè a · b · CarryIn 6= b · CarryIn $ a = 1, b = 1
Ma in quel caso a•b=1 porta comunque a 1 l’espressione Sommatore a un bit
•  Circuito per carryout •  Per la sum l’espressione come SP è: sum = (a · b · CarryIn) + (b · a · CarryIn) + (a · b · CarryIn) + (a · b · CarryIn)
ALU a 1 bit
•  Possiamo ora combinare le tre operazioni Una ALU a 32 bit
•  I blocchi che abbiamo visto si possono combinare per o>enere una ALU a 32 bit Sottrattore
•  Cosa succede se se:amo il carry in a 1? •  Molto semplicemente possiamo sommare: a + b + 1 Se neghiamo b possiamo o>enere un comporamento da so>razione (complemento a due): a + b + 1 = a + (b + 1) = a + ( b) = a
b
Circuito complessivo
•  Circuito risultante •  Per so>rare basta selezionare la somma, se>are Binvert e CarryIn a 1 NOR
•  Abbiamo visto che nell’assembly del MIPS c’e’ anche l’operazione di nor…. •  La possiamo facilmente implementare con le leggi di De Morgan (a + b) = a · b
Questo vuol dire che abbiamo bisogno anche della possibilità di uAlizzare come operando a inverAto ALU a 1 bit
•  Selezionando And, Ainvert, Binvert o>eniamo nor Confronti e overflow
•  L’operazione slt si può effe>ure con la seguente considerazione a<b$a b<0
•  Quindi slt deve effe>uare la so>razione ma resAtuire come risultato il bit di segno (il più significaAvo) del risultato della so>razione al bit meno significaAvo e lasciare 0 nelle altre posizioni •  Anche il bit di overflow si genera considerando il carry sul modulo più signifiicaAvo o i segni di operandi e risultato Schema complessivo
SLT: Si fa una so>razione e il bit più signiifvaAvo viene trasferito su quello meno signiifcaAvo del risultato mentre gli altri devono essere 0 Schema delle singole celle
Cella relaAva a bit meno significaAvo mi deve propagare less (che viene se>ato a zero ecce>o che per il primo) per operazione slt. Cella relaAva a bit a bit meno significaAvo che deve generare il nit di segno in caso di operazione di slt. Reti con reazione
e memoria
•  Le funzioni logiche e le relative reti di
implementazione visto fino ad ora sono note
come
“reti combinatorie”
•  Le reti combinatorie non hanno una nozione
“esplicita” del tempo e non hanno memoria del
passato: in ogni istante di tempo l’uscita
dipende solamente dagli ingressi nell’istante
considerato
•  In molte applicazioni è necessario introdurre
memoria nel sistema ...
•  In realtà si dà sempre per scontato che un
elaboratore sia in grado di memorizzare
informazioni
Reti con reazione
e memoria
•  La memoria in una rete logica si ottiene con
una “reazione” cioè alimentando l’uscita di
alcune porte sugli ingressi di porte del
medesimo stadio in modo da formare un
anello in cui gli ingressi dipendono dalle
uscite (e viceversa)
•  La reazione complica in modo significativo
l’analisi e la sintesi di una rete logica
•  La memoria deriva dal fatto che gli ingressi
“ricordano” il passato della rete attraverso il
valore delle uscite passate
Elemento
base di
memoria
(latch)
realizzazione con
due porte NOR
e schema di
“temporizzazione”
della tavola di
verità
Analogia Fisica
Equilibrio 1!
1
1
0.9
0.9
0.8
0.8
0.7
0.7
V1Vin
V2V2
0.6
0.6
0.5
0.5
0.4
0.4
Metastabile!
0.3
0.3
0.2
0.2
0.1
0.1
Equilibrio 0!
0
0 0
0
0.1
0.2
0.3
0.4
0.1
0.2
0.3
0.4
0.5
0.5
Vin
0.6
0.6
0.7
0.7
0.8
0.8
0.9
0.9
1
1
Vin
Metastabile
.
Stabile left
Stablie destra
Elemento Bistabile!
q
Memorizzare
un bit
R-S Latch!
R!
Q+!
!q Q–!
Q+!
Q–!
S!
q = 0 or 1!
Reset!
R
S
1
0
Set!
1
0
0
1
Q+
Q–
R
S
0
1
Memorizzare!
0
1
1
0
Q+
Q–
R
S
0
0
!q
q
q
!q
Q+
Q–
Stati indecidibili e
temporizzazione
•  Dato che i segnali non si propagano in tempo nullo, l’effetto
del cambio di un ingresso di propaga in tempo finito sulle
uscite
•  Se le uscite sono reazionate questo può creare problemi di
indecidibilità dello stato di una rete con memoria
•  Gli elementi di memoria sono quindi sempre temporizzati,
cioè sono governati da un segnale speciale chiamato
“clock”
•  Un elemento base di memoria temporizzato viene
normalmente indicato come “gated latch”
Abilitazione
•  Il clock viene inserito come
“ingresso di abilitazione”
attraverso porte AND: se ck è a
zero la rete reazionata ha gli
ingressi forzati a zero e non può
cambiare stato
•  Quando ck è a uno la gli
ingressi della rete reazionata
sono gli ingressi R ed S del
circuito
•  Circuiti di questo tipo hanno
rappresentazione grafiche
“standard”
Elementi di memoria
“reali” celle D e flip-flop
•  Le reti viste prima sono note come latch S-R
(Set-Reset)
•  Hanno il difetto di avere uno stato indecidibile
(cioè l’uscita non può essere nota con certezza)
quanto entrambi gli ingressi sono a uno
•  In molti casi questo è inaccettabile
•  Si può rimediare??
§  latch-D (data)
§  flip-flop
Latch tipo “D”
•  Gli ingressi al circuito
base sono ottenuti da
una unica variabile
•  Non vi può essere
ambiguità
•  Il circuito è abilitato
durante tutta la fase
positiva del clock
Flip-flop
master-slave
Master D Clock D Q Slave Q m D Clk Q Q Clk Q (a) Circuit
Clock D Q m Q = Q s (b) Timing diagram
D Q Q (c) Graphical symbol
Q s Q Q •  Configurazioni più
complesse (come
questa) consentono
ad esempio di
ottenere che l’uscita
del circuito commuti
esattamente al
termine dell’impulso
di clock
Structure!
Registri
i7!
D!
C!
Q+!
o7!
i6!
D!
C!
Q+!
o6!
i5!
D!
C!
Q+!
o5!
i4!
D!
C!
Q+!
o4!
i3!
D!
C!
Q+!
o3!
i2!
D!
C!
Q+!
o2!
i1!
D!
C!
Q+!
o1!
i0!
D!
C!
Q+!
o0!
I!
O!
Clock!
Clock!
§  Impiegati per registrare delle word di dati
§  Collezione di latch edge-triggered
§  Caricano gli input sul fronte in salita del clock
Operazioni su registri
State = x"
Input = y"
Output = x"
x"
State = y"
_
Rising"
clock"
_
y" Output = y"
§  Memorizzano bit
§  La maggior parte delle volte operano come una
barriera tra input e output
§  Sul fronte in salita del clock memorizzano l’input
Vantaggi dell’edge
triggered
•  Una metodologia edge triggered perme>e di aggiornare lo stato a parAre dal quello presente senza creare delle situazioni di corse •  Questo porta alle macchine a staA in cui: §  Lo stato successivo dipende da quello presente e dall’input §  L’output dipende dallo stato presente e dall’input (macchina di mealy), o solo dall stato presente (macchina di moore) Esempio di macchina a
stati
Comb. Logic!
0"
A"
L"
U"
0"MUX"
In!
Out!
1"
Load!
§  Circuito
accumulatore
§  A ogni ciclo
carica l’input
e lo accumula
Clock!
Clock!
Load!
In!
Out!
x0"
x1"
x0"
x0+x1"
x2"
x0+x1+x2"
x3"
x4"
x3"
x3+x4"
x5"
x3+x4+x5"
Register file
•  I registri possono essere organizzaA in un array (memoria) con la possibilità di scrivere o leggere su alcuni di essi Register file -- lettura
•  Possiamo leggere due registri. Per sceglire quali usiamo un mux Register file -- scrittura
•  Possiamo scrivere in un registro. Per sceglier quale usiamo un decoder