Appello 10 giugno 1998

Architettura degli elaboratori - Giugno 1998

Compito A

Esercizio 1. Data una variabile booleana X, dimostrare che il suo complemento X'=X é unico.

Suggerimento: dimostrare per assurdo.

Esercizio 2. Progettare l'architettura del modulo di ALU che esegue la seguente istruzione:

SHIFT L/R, R1, N

ed il relativo automa di controllo.

L'istruzione richiede che il contenuto del registro R1 sia slittato a destra (R) o a sinistra (L) di N posizioni (N0). Lo slittamento di un passo a destra o a sinistra comporta l'immissione di uno "zero" rispettivamente, nel bit più significativo o meno significativo (ovvero, lo shift non é ad anello).

L'automa di controllo, il cui corrispondente circuito é collocato nell'Unità di Controllo, deve produrre i segnali di controllo necessari all'attivazione, nella sequenza opportuna, dei vari blocchi dell'ALU che concorrono all'esecuzione dell'istruzione. NON si richiede la sintesi dell'automa nel corrispondente circuito sequenziale.

Per quanto riguarda il modulo dell'ALU, si richiede un diagramma a blocchi corredato di una spiegazione (possibilmente algoritmica) del funzionamento. E' necessario evidenziare l'azione, sui vari blocchi, dei segnali di controllo prodotti dal corrispondente automa di controllo.

Si richiede viceversa lo schema circuitale dettagliato dello shift register right-left, che ovviamente é un elemento essenziale dell'architettura in questione. E' sufficiente dettagliare lo schema di un generico FFi dello shifter.

Suggerimenti:

Si supponga che, all'inizio del ciclo di esecuzione, il registro R1 sia accessibile dall'ALU, il valore N sia memorizzato in un registro N accessibile dall'ALU, e la direzione dello slittamento (L/R) sia disponibile su un segnale L/R, (ad esempio L/R=0 => shift left, L/R=1 => shift right) in ingresso all'Unità di Controllo. Il segnale SHIFT, anch'esso in ingresso all'Unità di Controllo, fa partire il ciclo esecuzione dell'istruzione.

Criteri di valutazione orientativi:

Esercizio 1: 8 punti

Esercizio 2:

descrizione generale del funzionamento: 6 punti

schema a blocchi del modulo ALU di esecuzione: 6 punti

schema circuitale dello shift left-right register: 3 punti

automa di controllo: 7 punti

 

Esercizio 1. La soluzione del primo esercizio é sul libro di Bovet, pag. 48

Soluzione esercizio 2

L'architettura del modulo logico aritmetico per l'esecuzione dell'istruzione SHIFT R1,L/R,N é mostrata in fig. 1 a e b

 

 

In figura 2 é invece mostrato l'automa di controllo, che genera i segnali di controllo necessari al funzionamento dell'architettura in Figura 1. Trattandosi di un automa di Moore, i segnali prodotti in uscita dall'unità di controllo sono quelli evidenziati all'interno di ciascuno stato. Le transizioni fra stati avvengono a fronte di impulsi di clock che regolano la temporizzazione interna del sistema, e di segnali in ingresso all'unità di controllo provenienti o dall'unità logico aritmetica (Z) o dal decodificatore di istruzioni (segnali shift e L/R). Nel seguito, i segnali in ingresso all'unità di controllo (quelli che regolano le transizioni dell'automa) sono indicati in grassetto. I segnali prodotti in uscita dall'automa, in caratteri normali.

 

Durante la fase iniziale di FETCH, l'istruzione viene letta e decodificata. Le informazioni essenziali sono rappresentate dall'identificatore del tipo di operazione (SHIFT) , dal numero di passi di slittamento del registro R1 (contenuto del registro N) e dalla direzione dello slittamento (LEFT o RIGHT, segnale L/R).

Il riconoscimento, da parte dell'Unità di Controllo, dell'istruzione in questione (segnale SHIFT), dà inizio all'esecuzione dell'istruzione (transizione s0s1).

Il numero di slittamenti N, memorizzato su un apposito registro, viene caricato sul registro R0 (segnali op=0 e inR0 nello stato s1). Il modulo R0=0 "legge" il contenuto di R0 e genera un'uscita Z=0 quando il contenuto del registro é zero, causando la terminazione del ciclo di esecuzione(transizione s1s0). Altrimenti (Z=1) il sistema transita nello stato s2. In questo stato, il modulo di decremento, attivato dal segnale Dec, decrementa il contenuto di R0. Lo shift register, una volta caricato con il contenuto del registro R1 (comando inShift) viene fatto slittare di una posizione a destra o a sinistra, a seconda del valore del segnale di ingresso L/R (stati s3 ed s4). In questi stati viene anche aggiornato il valore del registro R0 (op=1, inR0).

Quando R0=0 (Z=0), il sistema transita nello stato s5, in cui viene aggiornato anche il registro R0 (inR0) ed il ciclo termina. Altrimenti, (Z=1) si ritorna nello stato s2.

Notate, in generale, che la modifica di un valore contenuto in un registro ed il suo aggiornamento non possono essere attivati contemporaneamente (ad esempio, Dec ed inR0 sono attivati in stati diversi).

Lo schema di caricamento del generico FF dello shift register é illustrato in Figura 3. Il registro deve consentire tre diverse modalità di caricamento:

1)Caricamento parallelo (dal registro R1). Questo,é attivato dal segnale inShift.

2)Caricamento sequenziale da destra (segnale ShiftR,).In questo caso, ogni Flip Flop (i) "legge" il valore precedentemente memorizzato nel FlipFlop (i-1) , Qi-1. Il FF(0) memorizza uno zero logico.

2)Caricamento sequenziale da sinistra (segnale ShiftL).In questo caso, ogni Flip Flop (i) "legge" il valore precedentemente memorizzato nel FlipFlop (i+1) , Qi+1. Il FF(n) memorizza uno zero logico.

I segnali ShiftR e ShiftL sono derivati direttamente dal segnale L/R.

 

Notate che questa istruzione non prevede un controllo sul valore N, che può eventualmente essere maggiore del numero di FF del registro R1. In tal caso, al termine dell'istruzione, R1 conterrà tutti "zero".

Inoltre, l'istruzione può essere eseguita solo sul registro R1. Istruzioni più versatili possono prevedere, attraverso un bus di connessione, che l'operazione di shift possa essere esguita su più registri.

Esercizi consigliati:

come si modifica la soluzione del problema se:

- nel codice di istruzione é possibile specificare uno fra m registri, R1,R2..Rm

- L'operazione di Shift prevede un anello, ovvero l'ultimo FF dello shift register é collegato con il primo