Università degli Studi dell’Insubria
Dipartimento di Scienze Teoriche e Applicate Architettura degli Elaboratori
Prof. Marco Tarini
Cognome e nome Matricola
Esercizio 1 (5 pts)
Dato il circuito qui accanto:
a. Determinarne il tempo di commutazione, se ogni porta AND e OR impiega 3 ns, e ogni porta NOT 1 ns.
b. Scrivere la tabella delle verità della funzione associata.
c. Scrivere un’espressione equivalente in prima forma canonica., ottimizzata utilizzando le mappe di Karnaugh.
Esercizio 2 (5 pts)
Mostare la rappresentazione del numero –146.4 in virgola mobile, con 12 bit di mantissa e 5 bit di esponente (offset a 16), con troncamento (quindi arrotondando per difetto). Determina quale valore viene effettivamente rappresentato (usando il procedimento inverso).
Esercizio 3 (2 pts)
Disegnare un circuito che implementa una funzione OR (a due ingressi) usando solo porte NOR.
Esercizio 4 (6 pts) Si supponga di avere a
disposizione il datapath mostrato a fianco (è uno di quelli visti a lezione). L’ALU dispone delle seguenti funzioni dei suoi due ingressi A e B:
Add: R = A+B Sub: R = A – B PassA: R = A PassB: R = B
IsZero: esiti = isZeroA Not: R = not A
Si scriva un microprogramma che realizza l’operazione: JALI imm (“Jump and link to immediate”) avente opcode = 22. L’effetto di tale operazine è quello di memorizzare il Program Counter corrente nel registro 31, e di saltare all’istruzione indicata dal campo immediate. Il microprogramma deve includere la fase di fetch.
Esercizio 5 (4 pts)
Realizzare un circuito sequenziale per controllare un dispositivo provvisto di lampadina LED.
L’uscita U del circuito determina se la lampadina è accesa. Il dispositivo ha due stati: disattivato e lampeggiante. Quando è disattivato, la lampadina rimane spenta. Quando è lampeggiante, la lampadina alterna fra accesa e spenta una volta ogni ciclo di clock.
Il dispositivo è provvisto di un solo tasto, collegato direttamente all’unico input del circuito (oltre al clock). Questo segnale alterna fra i due stati del dispositivo.
Si possono usare tutte le comuni porte (AND, OR, XOR, NOT…) e i blocchi funzionali sequenziali (latch, flip flop sincronizzati, etc) o combinatori.
Esercizio 6 (3 pts)
Si disegni il circuito di un bistabile SR. Si ricorda che tale latch prende in input un segnale S (set) e uno R (reset), e restituisce in uscita un valore corrente Q e il suo negato \Q. Quando S vale 1, il valore di Q viene messo a 1. Quando il R vale 1, il valore di Q assume 0. Quando entrembi valgono 0, il valore di Q rimane inalterato.
Esercizio 7 (6 pts)
Si completi il programma Assembly MIPS qui sotto.
Ipotizzare che nella sezione dati sia stato memorizzato un array che contiene un sequenza di un certo numero di valori interi strettamente positivi (maggiori di 0), memorizzati in altrettanti words.
L’array è terminato dal valore speciale 0.
Al termine del programma, il registro s0 deve contenere il maggiore di questi valori, oppure 0 se non è memorizzato alcun valore nell’array.
Indizio: bastano meno di una dozzina fra istruzioni ed etichette.
Per agevolare la stesura del codice, si fornisce qua a fianco una tabella con le sintassi di alcune possibili istruzioni.
Scrivere solo il codice da sostituire alla parte indicata in rosso.
.
data dati:
.word <qui verranno messi i dati>
.globl main .text
main:
<il tuo codice viene copiato qui>
over:
# 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)
move regA , regB copia il registro B nel registro A
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
bgez reg , etichetta branch on greater or equal than zero bgtz reg , etichetta branch on greater than
zero
bnez reg , etichetta branch on not equal zero
beqz reg , etichetta branch on equal zero