Parte 3 Reti logiche - Istituto di Scienze e Tecnologie dell`Informazione

Transcript

Parte 3 Reti logiche - Istituto di Scienze e Tecnologie dell`Informazione
Informatica Applicata - Architetture degli elaboratori
© Alessandro Bogliolo
Parte 3
Reti logiche
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
1
Informatica Applicata - Architetture degli elaboratori
© Alessandro Bogliolo
1 Algebra di Boole
[Bucci c1.3, A2-3]
1.1
Insieme di definizione e operazioni
•
•
•
•
•
•
•
1.2
B={0,1}
AND:BxB-->B
OR: BxB-->B
NOT: B-->B
Costanti Booleane
Variabili Booleane
Funzione Booleana y=f(x1,x2,...,xn) e loro rappresentazioni
o Tabelle delle verità
o Espressioni logiche
Proprietà
•
•
•
•
•
•
•
•
•
•
1.3
Idempotenza: x+x=x, xx=x
Proprietà distributiva: x(y+z)=xy+xz, x+(yz)=(x+y)(x+z)
Proprietà associativa: x+y+z=(x+y)+z=x+(y+z), xyz=(xy)z=x(yz)
Proprietà commutativa: x+y=y+x, xy=yx
Elementi neutri: x+0=x, 1x=x
Elementi forzanti : x+1=1, 0x=0
xx’=0, x+x’=1
x’’=x
Assorbimento : x+xy=x, (x+y)x=x
o Dimostrazione: x+xy = (1+y)x=1x=x
o Dimostrazione: (x+y)x=xx+xy=x+xy=x
Teorema di De Morgan: (x+y)’=x’y’, (xy)’=x’+y’
o Dimostrazione per induzione perfetta (enumerazione di tutti i possibili casi):
ƒ x=0, y=0
==>
(0+0)’=0’=1
0’0’=11=1
ƒ x=0, y=1
==>
(0+1)’=1’=0
0’1’=10=0
ƒ x=1, y=0
==>
(1+0)’=1’=0
1’0’=01=0
ƒ x=1, y=1
==>
(1+1)’=1’=0
1’1’=00=0
Forme canoniche
•
•
Esistono infinite espressioni logiche equivalenti, la cui equivalenza puo’ essere dimostrata per
enumerazione o trasformando le une nelle altre mediante l’applicazione delle proprietà enunciate sopra (il
procedimento di trasformazione di una espressione in un’altra equivalente viene anche detto
manipolazione logica). Dimostrare l’equivalenza di espressioni logiche diverse non è banale. Per questo è
utile definire delle forme canoniche che godano della seguente proprietà: due funzioni hanno la stessa
forma canonica se e solo se sono la stessa funzione. Se tutte le funzioni fossero rappresentate in forma
canonica, dimostrarne l’equivalenza sarebbe banale.
Somme di prodotti.
Qualsiasi funzione può essere rappresentata come somma di prodotti.
Letterale: variabile indipendente in forma vera (x) o negata (x’)
Mintermine: termine prodotto in cui compaiono tutte le variabile indipendenti una sola volta (o in forma vera
o in forma negata). Un mintermine rappresenta una funzione logica che vale 1 in corrispondenza di una
sola configurazione d’ingresso e 0 in tutte le altre. La configurazione d’ingresso a cui è associata uscita 1 è
quella in cui assumono valore 1 tutte le variabili che compaiono in forma vera nel mintermine e 0 tutte le
variabili che compaiono in forma negata nel mintermine. Ad esempio: f(abc) = a’bc vale 1 solo quando a=0,
b=1 e c=1.
Si dice che una configurazione d’ingresso verifica una funzione logica se la funzione vale 1 in
corrispondenza di tale configurazione.
Una funzione logica che assume valore 1 in corrispondenza di M configurazioni delle sue variabili
d’ingresso (cioè la cui tabella della verità ha M 1) può essere espressa come somma di M funzioni logiche
ciascuna delle quali assume valore 1 in corrispondenza di una diversa configurazione d’ingresso che
verifica la funzione data. Poichè ciascuna di queste funzioni è un mintermine esprimibile come prodotto
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
2
Informatica Applicata - Architetture degli elaboratori
•
•
© Alessandro Bogliolo
della variabili d’ingresso in forma vera o negata, ogni funzione logica può essere espressa come somma di
prodotti. La rappresentazione è canonica se ogni prodotto è un mintermine.
Prodotti di somme: forma canonica alternativa alle somme di prodotti
Minimizzazione logica
Manipolazione di espressioni logiche finalizzata a ridurne la complessità. La complessità di una
espressione logica può essere espressa in termini di numero totale di letterali.
Es: ab’c+ab’c’+abc usa 9 letterali ed e’ equivalente all’espressione non canonica ab’+abc che ne usa solo
5 ed anche all’espressione ab’+ac che ne usa solo 4 e ad a(b’+c) che ne usa solo 3.
2 Reti combinatorie
[Bucci c1.7, A4-7]
2.1
Porte logiche (gate) e reti logiche
•
•
•
•
•
•
2.2
AND, OR, NOT
NAND, NOR
Completezza funzionale delle famiglie logiche: (AND, OR, NOT), (NAND), (NOR)
Transistore: funzionamento elementare (logico) di transistori N e P
In prima approssimazione un transistore si comporta come un interruttore, interrompe o instaura un
contatto elettrico tra i terminali S (source) e D (drain) in funzione del valore logico di un segnale sul
terminale G (gate). Quando il transistore è acceso S e D sono in contatto e tendono ad assumere lo stesso
valore logico. Quando il transistore è spento S e D non sono in comunicazione e i loro valori logici sono
indipendenti. Se ad uno dei due terminali (ad esempio D) il valore logico è imposto da un generatore
(rappresentato da una contante Booleana), l’accensione dell’interruttore impone lo stesso valore anche
all’altro terminale (S). Transistori NMOS e PMOS hanno comportamento duale, in quanto si accendono
rispettivamente quando G=1 e quando G=0.
Struttura interna di un inverter CMOS
L’inverter CMOS è composto da un transistore PMOS e da un transistore NMOS con i terminali di gate
pilotati dallo stesso segnale d’ingresso. Il PMOS, se acceso, collega l’uscita al valore costante “1”, il
transistore NMOS, se acceso, collega l’uscita al valore costante “0”. La dualità dei due transistori
garantisce che non siano mai contemporaneamente accesi. Quando l’ingresso vale 1 è acceso il
transistore NMOS e l’uscita assume valore 0, quando l’ingresso è 0 è acceso il PMOS e l’uscita assume
valore 1.
Struttura interna di un NAND CMOS a 2 ingressi
Il NAND CMOS ha 4 transistori: due NMOS in serie e due PMOS in parallelo. I due NMOS costituiscono la
rete di pull-down, che accendendosi collega l’uscita al valore costante “0”. Questo avviene quando
entrambi gli ingressi assumono valore 1 (in1 AND in2). I due PMOS costituiscono la rete di pull-up, che
accendendosi collega l’uscita al costante “1”. Questo avviene quando almeno uno dei due transistori è
acceso (in1’ OR in2)’. La dualità delle reti di pull-down e di pull-up garantisce, in base alla legge di De
Morgan, che le due reti non siano mai contemporaneamente accese.
Dalle funzioni logiche alle reti logiche: implementazione
Esiste una corrispondenza biunivoca tra espressioni logiche e reti logiche. Per ogni espressione logica può
essere realizzata una rete logica che la implementi. Ad ogni operazione elementare nell’espressione
corrisponde un operatore (gate) nella rete. L’uscita del gate g1 viene collegata ad uno degli ingressi del
gate g2 se e solo se nell’espressione logica il risultato dell’operazione associata a g1 è un operando
dell’operazione associata a g2.
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
3
Informatica Applicata - Architetture degli elaboratori
•
2.3
© Alessandro Bogliolo
Poichè esistono infinite espressioni logiche equivalenti esistono anche infinite reti logiche funzionalmente
equivalenti. Le manipolazioni Booleane che trasformano una espressione logica in un’altra equivalente
hanno un diretto riscontro nelle reti logiche, modificandone la struttura. Poichè dalla struttura di una rete
dipendono le sue prestazioni (in termini di area, tempo di valutazione, costo di realizzazione, consumo di
potenza), la manipolazione Booleana è utilizzata durante il progetto per ottimizzare tali parametri.
Ad esempio, l’area occupata dipende dal numero di gate utilizzati e dal numero dei loro ingressi (quindi dal
numero di letterali nell’espressione logica), il tempo di valutazione dipende dal massimo numero di
componenti da attraversare dagli ingressi alle uscite della rete (cammino critico), il costo e il consumo di
potenza dipendono in buona approssimazione dall’area.
Procedimento generale per l’implementazione di una funzione logica
o Esprimere la specifica in termini di tabella della verità
o Dalla tabella della verità passare alla forma canonica
o Manipolare la forma canonica per ottimizzare l’espressione logica
o Costruire la rete logica associata all’espressione ottimizzata
Esempi di reti logiche combinatorie
•
•
•
•
•
2.4
Multiplexer
Confronto
o EXOR
Controllo di parità
o Albero di EXOR
Addizione
o Half adder
o Full adder
o Ripple carry adder (vedi sezione 5)
ALU
o Somma in complemento a 2
o Differenza
o Unità aritmetico-logica
Osservazioni
Il procedimento generale descritto al paragrafo 2.2 si applica all’implementazione di funzioni logiche a pochi
ingressi (la cui tabella della verità ha dimensioni ragionevoli). Addizione, moltiplicazione, controllo di parità e, in
generale, le operazioni aritmetico-logiche operano su parole a n bit e possono produrre risultati a n bit. Per
n
utilizzare il procedimento generale occorrerebbero n tabelle della verità a 2 righe ciascuna. Inoltre, il
procedimento dovrebbe essere ripetuto da capo se si volesse cambiare il numero di bit utilizzato per la
rappresentazione di operandi e risultati. In questi casi il procedimento descritto al paragrafo precedente non va
applicato.
La strada da seguire consiste nell’individuare e sfruttare la struttura del problema da risolvere, scomponendolo
in sottoproblemi elementari. Questo procedimento di scomponsizione, detto top-down consente di arrivare ad
uno schema a blocchi che rappresenta una possibile soluzione al problema. I singoli blocchi sono i risolutori
dei sottoproblemi elementari, la cui implementazione può essere individuata ricorrendo al procedimento
generale.
Es: Il procedimento per il calcolo della somma di due operandi a n bit prevede di ripetere in sequenza,
muovendosi da sinistra verso destra, il calcolo di ciascun bit della somma e dell’eventuale riporto. Il
procedimento può essere rappresentato da uno schema a blocchi i cui componenti sono i full adder,
componenti che assumono in ingresso due bit omologhi dei due operandi e il riporto della somma precedente,
e producono il corrispondente bit della somma e il riporto. La funzione svolta da ciascun full adder può essere
specificata con una tabella della verità a 8 righe ed implementata usando il procedimento standard.
Se si deve realizzare un sommatore ad un numero maggiore di bit è sufficiente connettere ulteriori full adder in
cascata, senza rifare il progetto.
3 Reti sequenziali
[Bucci c1.4-5, A8-11]
3.1
Reti asincrone
•
•
Latch SR
Macchine a stati finiti
o Definizione
o Funzione d’uscita o=f(s,i) e funzione di stato futuro s’=g(s,i)
o Rappresentazione: diagramma degli stati
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
4
Informatica Applicata - Architetture degli elaboratori
•
3.2
Classificazione:
o reti combinatorie
o reti sequenziali di Mealy
o reti sequenziali di Moore
© Alessandro Bogliolo
f:I --> O
f:SxI --> O
f:S --> O
g:SxI --> S
g:SxI --> S
Reti sincrone
•
•
•
Le reti sequenziali sincrone sono sensibili a variazioni degli ingressi solo in corrispondenza di eventi di
sincronismo (impulsi o transizioni di un segnale periodico detto clock)
o Flip flop SR
o Flip flop D level sensitive
o Flip flop D master slave edge triggered
Registri
Modello generale di rete sequenziale sincrona
o Il clock non è esplicitamente considerato come segnale d’ingresso, ma solo come segnale di
sincronismo implicito
o Modello a blocchi generale
o Modello a blocchi di Mealy
o Modello a blocchi di Moore
4 Metriche per l’analisi di blocchi funzionali
4.1
Area (A):
•
•
•
4.2
numero di porte logiche (misura inaccurata perche’ non tiene conto del numero di ingressi delle porte
logiche)
numero di NAND a 2 ingressi (poiche’ qualsiasi funzione logica puo’ essere realizzata come rete di soli
NAND a 2 ingressi, il numero di gate di tale implementazione offre una stima dell’area che non risente
dell’incertezza sul numero di ingressi dei gate. Del resto pero’ l’implementazione a soli NAND2 potrebbe
non essere la migliore)
somma del numero di ingressi di tutte le porte logiche (misura significativa perche’ in logica CMOS ad ogni
ingresso di un gate corrispondono 2 transistori, cioe’ due dispositivi elementari che occuperanno area sul
silicio)
Prestazioni:
•
•
Ritardo di propagazione da pin a pin (Tpin,out):
o intervallo di tempo che intercorre tra la transizione di un segnale su un dato pin d’ingresso e la
corrispondente variazione del segnale su un dato pin d’uscita
Tempo di propagazione (Tp):
o intervallo di tempo che intercorre tra l’applicazione di una nuova configurazione agli ingressi di un
blocco e la stabilizzazione dei corrispondenti valori dei segnali d’uscita
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
5
Informatica Applicata - Architetture degli elaboratori
© Alessandro Bogliolo
il ritardo di propagazione e’ il maggiore tra i ritardi di propagazione tra i pin d’ingresso e i pin
d’uscita
Tempo di contaminazione da pin a pin (Tcin,out):
o intervallo di tempo che intercorre tra la transizione di un segnale su un dato pin d’ingresso e il
primo effetto indotto su un dato pin d’uscita
Tempo di contaminazione (Tc):
o intervallo di tempo che intercorre tra l’applicazione di una nuova configurazione agli ingressi di un
blocco e la prima variazione riscontrata sui segnali d’uscita
o il tempo di contaminazione e’ il minore tra i tempi di contaminazione tra i pin d’ingresso e i pin
d’uscita
Throughput (Rate):
o numero di risultati prodotti nell’unita’ di tempo
o
•
•
•
5 Architetture di addizionatori a n bit
Supponiamo di disporre di un full adder (FA) gia’ implementato e caratterizzato in
termini di occupazione d’area, ritardo di propagazione e tempo di contaminazione,
indicati da A(FA), Tp(FA) e Tc(FA). Assumiamo per semplicita’ che il ritardo di
propagazione da qualsiasi ingresso a qualsiasi uscita del full adder sia lo stesso.
L’assunzione non e’ realistica, ma valida per considerazioni del primo ordine.
5.1
Ripple-carry adder a n bit (RCAn)
I FA di un RCA nella peggiore delle ipotesi (in cui il
carry si propaghi attraverso tutti i bit, da quello di
peso 0 a quello di peso n-1) operano in cascata. O
meglio, risentono tutti contemporaneamente della
variazione degli operandi, ma ricevono in cascata il
riporto. Quindi il tempo di contaminazione e’ lo
stesso per tutti, ma il tempo di stabilizzazione
aumenta all’aumentare del peso dei bit.
o A(RCAn) = n A(FA) = O(n)
o Tp(RCAn) = n Tp(FA) = O(n)
o Tc(RCAn) = Tc(FA) = O(1)
o Rate(RCAn) < 1/Tp(RCAn) = O(1/n)
5.2
Ripple-carry adder sincrono a n bit (SincRCAn)
Osservazione: l’arrivo di operandi e carry ad ogni FA si
potrebbe sincronizzare utilizzando dei FF come
mostrato in figura.
o A(SincRCAn) = n A(FA) + 2n(n-1)A(FF) =
2
O(n )
o Tp(SincRCAn) = n Tclk > n Tp(FA) = O(n)
o Tc(SincRCAn) = n Tclk > n Tp(FA) = O(n)
o Rate(SincRCAn) = 1/(nTclk) = O(1/n)
5.3
Pipelined RCAn (PRCAn)
Gli n stadi del SincRCAn vengono coinvolti
nell’elaborazione di una somma uno alla volta. Se
occorre calcolare un numero elevato di somme in
sequenza, ogni stadio puo’ cominciare a lavorare al
calcolo della somma successiva mentre gli stadi
seguenti ancora lavorano al calcolo delle somme
precedenti. Un’organizzazione di questo tipo, simile ad
una catena di montaggio, prende il nome di pipeline.
2
o A(PRCAn) = n A(FA) + 2n(n-1)A(FF) = O(n )
o Tp(PRCAn) = n Tclk > n Tp(FA) = O(n)
o Tc(PRCAn) = n Tclk > n Tp(FA) = O(n)
o Rate(PRCAn) = 1/Tclk = O(1)
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
6
Informatica Applicata - Architetture degli elaboratori
5.4
© Alessandro Bogliolo
Bit Serial adder a n bit (BSAn)
Osservazione: se i FA di un SyncRCA operano in cascata, anzichè utilizzarli in
pipelining per migliorare il throughput, si potrebbero pensare di utilizzarne solo 1
serialmente per migliorare l’occupazione d’area. Lo stesso FA, in cicli di clock
diversi, svolge le somme tra bit di peso omologo e calcola il carry-out che
diventera’ il suo carry-in al ciclo successivo. I bit degli operandi sono forniti
serialmente da due registri a scorrimento (shift registers), cosi’ come i bit della
somma sono prodotti serialmente e memorizzati da uno shift register.
o A(BSAn) = A(FA) + A(FF) = O(1)
o Tp(BSAn) = n Tclk > n Tp(FA) = O(n)
o Tc(BSAn) = Tclk > Tp(FA) = O(1)
o Rate(BSAn) = 1/(nTclk) = O(1/n)
5.5
Carry Lookahead adder a n bit (CLAn)
•
•
•
•
•
Diversamente dalle precedenti implementazioni non utilizza copie dei FA per
realizzare il sommatore, ma implementa direttamente la funzione logica che
restituisce ciascun bit della somma in funzione di tutti i bit precedenti degli
operandi, per superare il limite imposto dalla propagazione del riporto.
Osservazione preliminare:
o ci = ai*bi + (ai+bi)ci-1 = gi + pi * ci-1
o il primo termine genera il carry out (generate gi = ai*bi)
o il secondo termine propaga il carry in (propagate pi = ai+bi)
Tutti i generate e i propagate possono essere calcolati contemporaneamente, indipendentemente l’uno
dall’altro. La dipendenza di ci dai carry dei bit precedenti può essere esplicitata ottenendo un’espressione
che dipende solo dai segnali d’ingresso:
o ci = gi + pi (gi-1+pi-1 (gi-2+pi-2( ... (g0+p0*Cin)...)))
o ci = gi + pigi-1+pipi-1gi-2+ pipi-1pi-2gi-3 + ... + pipi-1pi-2 ...p0Cin
L’implementazione diretta della logica per il calcolo del i-esimo riporto consiste in una somma di i+1 termini
prodotto, di cui il più grande ha i+2 termini. Quindi il primo stadio (che nel seguito indichiamo con FA0) è
decisamente più piccolo dell’ultimo (FAn-1)
Prestazioni considerando il ritardo di propagazione di ogni gate unitario, indipendentemente dal numero dei
suoi segnali d’ingresso
2
o A(CLAn) = n (A(FA0)+A(FAn-1))/2 = O(n )
o Tp(CLAn) = Tp(FA) = O(1)
o Tc(CLAn) = Tc(FA0) = O(1)
o Rate(CLAn) > 1/Tp(CLAn) = O(1)
Prestazioni considerando il ritardo di propagazione di ogni gate proporzionale al numero dei suoi ingressi
2
o A(CLAn) = n (A(FA0)+A(FAn-1))/2 = O(n )
o Tp(CLAn) = Tp(FAn-1) = O(n)
o Tc(CLAn) = Tc(FA0) = O(1)
o Rate(CLAn) > 1/Tp(CLAn) = O(1/n)
6 Sistemi digitali
[Bucci c1.6, c1.8]
6.1
Generalità
•
Rappresentazione RTL (register transfer level)
o interconnessione di blocchi di logica combinatoria e registri
o chiamiamo stadio ogni blocco di logica combinatoria racchiuso tra registri di ingresso e d’uscita
o ad ogni ciclo di clock i dati attraversano un solo stadio di logica combinatoria, propagandosi dai
registri d’ingresso ai registri d’uscita. Questo vincola il periodo del ciclo di clock a rispettare la
relazione
Tclk > Tp(C) + Tp(R) + Tsu(R) + Tnoise
dove Tp(C) è il tempo di propagazione attraverso la logica combinatoria, Tp(R) è il tempo di
propagazione dal fronte del clock all’uscita del registro d’ingresso, Tsu(R) è il tempo di setup del
registro d’uscita, Tnoise è il margine d’incertezza sull’istante di transizione dei segnali di clock
o poiché generalmente in una rete sincrona ci sono numerosi stadi di logica combinatoria, il periodo
di clock è vincolato al più lento:
Tclk > Tp(Cmax) + Tp(R) + Tsu(R) + Tnoise
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
7
Informatica Applicata - Architetture degli elaboratori
•
6.2
© Alessandro Bogliolo
o nel seguito indichiamo come tempo di overhead (Toh) la somma Tp(R)+Tsu(R)+Tnoise
Latenza: numero di cicli di clock necessari a propagare i dati dai registri d’ingresso ai registri d’uscita
o La latenza è pari al numero massimo di stadi tra ingressi e uscite primari
Stili di progetto:
•
•
•
•
•
•
6.3
Rete a un singolo stadio
o Tclk >= Tp(C) + Toh
o Latenza = 1 Tclk
o Throughput = 1 / Tclk
Rete a n stadi bilanciata
il modello di riferimento è la rete a un singolo stadio trattata al punto precedente, immaginando di aver
diviso il blocco di logica combinatoria in n blocchi in cascata, ciascuno con tempo di propagazione pari a
Tp(C)/n, divisi da registri
o Tclk >= Tp(C)/n + Toh
o Latenza = n Tclk
o Throughput = 1 / (n Tclk)
Rete a n stadi bilanciata pipelined
o Tclk >= Tp(C)/n + Toh
o Latenza = n Tclk
o Throughput = 1 / Tclk
Reti a stadi non bilanciate
o Tclk >= maxi{Tp(Ci)} + Toh >= Tp(C)/n + Toh
In generale la latenza di una rete a stadi è superiore poichè il tempo di overhead incide n volte. Il vantaggio
in termini di throughput in caso di pipelining è tanto maggiore quanto maggiore è il numero di stadi, ma è
comunque limitato dalle seguenti non idealità:
o se gli stadi non sono bilanciati, il più lento ha un ritardo di propagazione generalmente molto
maggiore di Tp(C)/n
o il tempo di overhead non viene diviso per n
o la suddivisione della rete in numerosi stadi a volte riduce le possibilità di ottimizzazione, per cui la
somma dei tempi di propagazione degli stadi è superiore al tempo di propagazione attraverso la
logica combinatoria originale
Tp(C1)+Tp(C2)+ ... +Tp(Cn) > Tp(C)
Condivisione di risorse (resource sharing)
se in una rete a stadi due o più stadi svolgono la stessa funzione, l’hardware che la implementa può essere
condiviso. In questo caso il flusso di elaborazione attraversa lo stesso componente più di una volta prima di
raggiungere le uscite primarie. In altre parole, lo stadio di logica condivisa è impegnato nell’elaborazione
dei dati di ingresso per più di un ciclo di clock.
o Esempio: hardware per il calcolo di A+B+C
Implementazione a stadio singolo: due addizionatori senza registri intermedi
Implementazione a 2 stadi: due addizionatori in cascata (A+B)+C con un registro intermedio per
la memorizzazione di (A+B)
Implementazione a 2 stadi pipelined: due addizionatori in pipeline
Implementazione a 2 stadi con addizionatore condiviso: un solo addizionatore utilizzato durante il
primo ciclo per calcolare A+B, durante il secondo ciclo per sommare al risultato C
Data path e control unit
La condivisione di risorse richiede l’introduzione di multiplexer per istradare operandi e risultati. Ad
esempio, l’addizionatore dell’esempio precedente al primo ciclo di clock deve ricevere in ingresso A e B e
depositare il risultato in un registro interno, al ciclo successivo deve ricevere in ingresso il risultato
intermedio e C e depositare il risultato nel registro d’uscita.
La logica di instradamento prende il nome di stearing logic ed è pilotata da segnali di controllo generati da
una macchina a stati finiti che prende il nome di control unit. Nelle rappresentazioni a livello RT in genere si
tende a tener separata la logica di controllo (control unit) dalla logica preposta all’elaborazione dei dati
(data path).
7
BUS
[Bucci c1.6]
7.1
Trasferimento tra registri multipli
•
n registri sorgente e m registri destinazione:
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
8
Informatica Applicata - Architetture degli elaboratori
o
o
•
•
•
•
7.2
© Alessandro Bogliolo
nxm linee dedicate,
una sola linea condivisa a cui sono collegate tutte le uscite dei registri sorgente e tutti gli ingressi
dei registri destinazione (BUS)
Parallelismo: numero di linee che compongono il bus, pari al numero di bit dei registri collegati al bus. Ogni
linea collega i bit omologhi (cioè nella stessa posizione) di tutti i registri. Poichè le singole linee corrono
parallele e trasferiscono bit indipendenti, il funzionamento del bus può essere spiegato facendo riferimento
ad una sola linea (cioè ad un bus a parallelismo 1).
Selezione della sorgente
Se le uscite di n registri diversi sono collegate allo stesso bus, è indispensabile assegnare il controllo del
bus ad un solo registro alla volta. Se così non fosse si creerebbero conflitti logici ogni volta che due registri
volessero imporre al bus valori opposti. In logica CMOS, ai conflitti logici corrisponde un conflitto elettrico
(corto circuito tra alimentazione e massa) che rischia di danneggiare i circuiti.
Pertanto è necessario che ogni registro sorgente disponga di un interruttore che ne connette l’uscita al bus
solo in presenza di un segnale di selezione. In assenza di tale segnale l’uscita viene detta ad alta
impedenza, o tri-state, e non influenza lo stato logico del bus.
Se tutti i registri dispongono di tale segnale di abilitazione, ad ogni ciclo di clock l’insieme dei segnali di
abilitazione deve costituire una parola di n bit di cui solo uno a 1 (quello corrispondente al registro a cui è
affidato il controllo del bus) e tutti gli altri a 0. Parole con queste caratteristiche appartengono ad un codice
detto 1 su n.
Selezione della destinazione
Se il segnale di campionamento venisse mandato a tutti gli m registri con ingressi collegati al bus, tutti
campionerebbero lo stesso dato presente sul bus. Se solo uno dei registri di destinazione deve campionare
il dato occorre utilizzare una logica di selezione che mascheri o abiliti il segnale di campionamento. In
particolare possiamo pensare che ogni registro sia dotato di un segnale di abilitazione a AND con il
segnale di campionamento comune. Quando l’abilitazione è 0, il registro non riceve il segnale di
campionamento e mantiene il dato precedentemente memorizzato indipendentemente dal valore del bus.
Quando l’abilitazione è 1, il segnale di campionamento determina l’acquisizione del segnale presente sul
bus. Anche in questo caso, l’insieme degli m segnali di abilitazione costituisce un codice 1 su m.
Ciclo di bus sincrono
Indirizzamento
•
•
n
Si considerino 2 registri a w bit collegati allo stesso BUS, ciascuno dei quali possa essere utilizzato sia
come destinazione che come sorgente. In pratica ogni registro dispone sia di circuiti di abilitazione
dell’uscita che di circuiti di abilitazione del campionamento. Anzichè utilizzare 2 segnali di abilitazione per
ogni registro, possiamo immaginare di disporre di un solo segnale di selezione per ogni registro e di un
n
segnale (comune a tutti i 2 registri) che indichi se si sta effettuando un trasferimento dal BUS al registro
selezionato (write) o dal registro al BUS (read). Chiamiamo tale segnale r/w’.
n
n
Il codice 1 su 2 utilizzato per selezionare i registri è altamente inefficiente, poichè utilizza 2 bit laddove
ne sarebbero sufficienti n per individuare univocamente un registro, utilizzando ad esempio la codifica
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
9
Informatica Applicata - Architetture degli elaboratori
© Alessandro Bogliolo
n
•
binaria della sua posizione da 0 a 2 -1. Chiamiamo indirizzo (address) di un registro il codice a n bit che ne
rappresenta univocamente la posizione. La conversione da indirizzi a segnali di selezione può essere
effettuata da una rete combinatoria detta decoder.
Un macroblocco contenente un insieme di registri di scrittura e lettura, la logica di selezione e il decoder è
detto memoria.
Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002
10