Università degli Studi dell’Insubria
Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori
Prof. Marco Tarini
Cognome e nome ____________________________ Matricola __________
Esercizio 1
Si desidera un circuito combinatorio che realizza la funzione da b,c,d a Z rispondente alla tabella delle verità qui a fianco.
(a) Realizza il circuito, ottimizzato utilizzando le mappe di Karnaugh, e sintetizzando l’espressione come prodotto di somme.
(b) Ripeti l’esercizio, questa volta come somma di prodotti.
(c) I due circuiti che hai disegnato sono equivalenti? Giustifica la risposta.
Esercizio 2
Un’archiettura usa numeri in virgola mobile con 8 bit di mantissa e 5 di esponente (offset a 16), con troncamento. Riporta per intero le rappresentazioni dei numeri la cui espressione in base 10 è: (a) -1000 (b) 1/100 (se sono nel range rappresentabile).
Esercizio 3
Si ha a disposizione il datapath mostrato a fianco (è uno di quelli visto a lezione). L’ALU dispone delle funzioni:
Add: R = A+B PassA: R = A PassB: R = A Sub: R = A – B Shl: R = shift left(A) Not: R = not A
Scrivi un microprogramma che realizza l’operazione mips
SW
Rs Imm(Rt) avente opcode = 43, e che
come si ricorderà ha l’effetto di memorizzare nella casella di memoria RAM indicata da Rt incrementata dell’offset (nel campo immediate) il valore attuale del registro Rs. Non è richiesta la fase di fetch: il microprogramma parte dalla microistruzione numero 4, dopo la fase di fetch.
Il micorprogramma deve consistere in una tabella che riporti, come input: la microistruzione, il codice dell’istruzione corrente, e gli esiti; e, come output: i comandi da madare al datapath e il passo successivo.
b c d Z 0 0 0 X 0 0 1 X 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0
2 Esercizio 4
Un dispositivo possiede un solo input A e due uscite B e C.
Il suo funzionamento desiderato è espresso dalla macchina a stati finiti riportata qui accanto (in ogni stato, è riporato l’output prodotto). Lo stato deve essere aggioranto ad ogni ciclo di clock.
Progetta il circuito che realizza questo comportamento, usando se necessario i comuni blocchi funzionali visti a lezione. E’ solo richiesto il corretto funzionamento a regime, trascurando lo stato iniziale.
Esercizio 5
Completa il programma Assembly MIPS qui sotto.
Nella sezione dati, come si vede, viene memorizzato un array “numeretti”, terminato da 0, che contiene una sequenza di numeri (di lunghezza non nota). Il programma deve calcolare il valore del massimo numero nella sequenza, e della somma di tutti i numeri della sequenza, e memorizzare questi due valori delle locazioni indicati da “max” e “somma” rispettivamente.
Per agevolare la scrittura, qui a destra si fornisce una tabella con la sintassi di alcune possibili istruzioni MIPS.
Scrivi solo il codice da sostituire alla parte indicata
.
data
numeretti:
.word 4 -4 +2 1 … 0 max:
.word 0 somma:
.word 0 .globl main .text
main:
<il tuo codice va qui>
fine:
# exit program li $v0 10
syscall
la reg , etichetta load address (copia l’indirizzo nel registro)
li reg , valore load immediate (copia il valore nel registro)
lw reg , offset(reg) load word
(l’offset è opzionale) sw reg , offset(reg) store word
(l’offset è opzionale) add reg , reg , reg add (somma) addi reg,reg,valore add immediate sub reg , reg , reg subtract (differenza)
j etichetta jump
jr reg jump register
jal etichetta jump and link
bnez reg , etichetta branch on not equal to zero
beqz reg , etichetta branch on equal to zero
bgtz reg , etichetta branch on greater than zero
bgez reg , etichetta branch on greater than or equal to zero