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