• Non ci sono risultati.

ALUPCMARMDRIRReg. fileR0..RnTempAddrDataVZABR4selectALUctrlMUXZoutZinVinMDRinRi_inRi_outTemp_inTemp_outIRinZExtoutSignExtoutMDRoutMARinPCinPCoutExtenderCPU BUS

N/A
N/A
Protected

Academic year: 2021

Condividi "ALUPCMARMDRIRReg. fileR0..RnTempAddrDataVZABR4selectALUctrlMUXZoutZinVinMDRinRi_inRi_outTemp_inTemp_outIRinZExtoutSignExtoutMDRoutMARinPCinPCoutExtenderCPU BUS"

Copied!
2
0
0

Testo completo

(1)

Università degli Studi dell’Insubria

Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori

Prof. Marco Tarini

Cognome e nome ____________________________ Matricola __________

Esercizio 1

Sia F una funzione da tre valori booleani a,b,c a un valore boolano, definita dall’espressione

F(a,b,c) = ( ( a NAND b) == ( b XOR c ) ) OR ( c AND a )

Dove il simbolo == rappresenta ovviamente l’ugualianza fra valori booleani

(a) Scrivi un’espressione equivalente ottimizzata come PdS (Prodotto di Somme)

(b) Disegna il corrispondente circuito che calcola F. Puoi usare solo porte a due ingressi.

(c) Ora il nostro committente specifica che i tre bit in ingresso a,b,c non saranno mai tutti 1 né tutti 0. Ripeti i due punti precedenti, ottimizzando il PdS e il circuito sotto quest’ulteriore ipotesi.

(d) Il nuovo circuito: è meno caro (S/N)? E’ più veloce (S/N)? Ha un consumo minore (S/N)?

Argomenta ciascuna risposta con max 1 frase. Ipotizza che tutte le porte abbiano lo stesso tempo di commutazione.

Esercizio 2

(a) Esprimi 2134 in base 2. (b) Esprimi 3.15 in base 2

Un’archiettura usa numeri in virgola mobile con 8 bit di mantissa e 8 di esponente (offset a 128), e numeri interi a 12 bit in comlemento a 2. Per quest’architettura, rispondi alle domande da (c) a (i).

Riporta, in base 10: (c) il valore del minore numero intero esprimibile. (d) e del maggiore; (e) il valore del maggiore float esprimibile; (f) del minore; (g) e il più piccolo numero float strettamente positivo (cioè >0)

(h) costruisci un caso in cui una somma fra due interi costituisce un overflow. Specifica quale numero viene ottenuto

(i) un’operazione di cambio di segno di un intero può causare overflow? Se si, riporta un caso

Esercizio 3

Si ha a disposizione il datapath mostrato a fianco (è uno di quelli visti a lezione). L’ALU dispone delle funzioni:

ADD, SUB, RSHIFT, LSHIFT

Costruire un microprogramma capace per realizzare l’operazione

SUM3 Rd, Ri, Rj, Rk

che ha l’effetto di memorizzare nella locaizone RAM individuada da Rd la somma dei tre registri inidicati da Ri, Rj, Rk.

Minimizzare il numero di micro-operazioni.

Non è necessario riportare la fase di fetch.

ALU PC

MAR MDR

IR

Reg. file R0..Rn

Temp Addr

Data

V

Z

A B

R 4

select

ALUctrl MUX

Zout Zin

Vin MDRin

Ri_in Ri_out Temp_in Temp_out

IRin ZExtout SignExtout

MDRout MARin

PCin PCout

Extender

CPU BUS

(2)

2 Esercizio 4

Un dispositivo possiede un ingresso A a 4 bit e un output B a 8 bit. Inoltre prende un bit di controllo R (Reset) e produce un ulteriore bit F (segnalazione di avvenuto overFlow).

Quando, sul fronte disendente del ciclo di clock, A vale 0, B si azzera; in caso contrario, B viene incrementato del valore attuale di A. Se questo causa overflow, F diviene 1, e lo rimane indefinitivamente (indipendentemente dai successivi valori A) fino a quando, dall’esterno, non viene settato il bit di controllo R, che azzera F.

Il reset dell’overflow avviene asincornicamente (cioè non aspettando il segnale di clock).

Progetta il circuito che realizza questo comportamento. Puoi usare i comuni blocchi funzionali visti a lezione.

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 scopire se nella sequenza compaia un numero di numeri 7 maggiore che non di numeri 17 (gli altri numeri non contano), e saltare alla corrispondente delle due locazioni riportate in fondo – in caso di partià, si proceda in uno qualsiasi dei due modi.

Ottimizza per quanto puoi il tuo codice, minimizzando il numero di istruzioni.

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 3 7 12 1 17 ... 0 .globl main

.text main:

<il tuo codice va qui>

piu_sette:

...

piu_diciassette:

...

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

Riferimenti

Documenti correlati

I problemi da cui ha avuto origine il calcolo differenziale: il problema dell’area, il problema della tangente e della velocit` a, il limite di una successione e la somma di una

Una popolazione di batteri, inizialmente composta da 8 ∗ 10 4 unit` a, cresce giornalmente del 70% per 4 giorni, quindi decresce del 50% giornaliero per 3 giorni.. Qual `e

Aiutati con lo schema seguente:. Numeri romani Numeri romani

[r]

[r]

2 Completa ogni relazione con un numero adatto. 958 600 &gt;

[r]

¨  Se la stringa di formato contiene un white space, la scanf legge zero o più white space, che verranno scartati, fino al primo carattere non white space.