• 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

Compito del 20-12-2017 Prof. Marco Tarini

Nome e cognome Matricola

Esercizio 1

Si desidera un circuito combinatorio a quattro ingressi A,B,C,D, e una uscita Z, che realizza questo comportamento: Z vale 1 se il numero binario a due cifre AB è maggiore di CD, 0 se AB è minore di CD. Al circuito non verranno mai forniti in ingresso valori di AB uguali a quelli di CD.

Realizzare il circuito, ottimizzando attraverso una mappa di Karnaugh, e sintetizzando l’espressione come somma di prodotti.

Esercizio 2

Un’architettura utilizza un formato in virgola mobile minimale, di soli 10 bit, di cui 4 di esponente (memorizzato in eccesso ad 8). L’ordine seguito è quello standard (l’esponente precede la mantissa), e si omette il primo uno della mantissa.

Specificare le rappresentazioni in questo formato dei seguenti numeri (arrotondando al rappresentabile più vicino):

(a) 0.15 (b) 200 (c) 1 (d) 0

(e) Calcolare quale numero è rappresentato da:

Esercizio 3

a) Scrivi la tabella di verità dell’espressione: (a XOR b) AND a .

b) Scrivi un’espressione equivalente che usi solo gli operatori AND, NOT, e OR.

Esercizio 4

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

Add: R = A+B PassB: R = B Sub: R = A – B And: R = A and B Si scriva un microprogramma che realizza una nuova operazione

RelJumpAndLink Rs Rd (salto relativo con link in RAM) avente opcode = 50, che ha l’effetto di memorizzare l’indirizzo della prossima istruzione all’indirizzo di memoria RAM indicato da Rs, e poi di incrementare l’indirizzo della prossima istruzione del valore di Rd (effettuando così il salto).

Non è richiesta la fase di fetch: il microprogramma parte dal passo 3, dopo la fase di fetch. Questa fase, come quella vista a lezione, incrementa già di 4 l’indirizzo dell’istruzione corrente.

Si ottimizzi il microprogramma, che deve essere fornito come tabella con input (l’opcode corrente, il passo, ed eventualmente gli esiti) ed output (i comandi, ed il passo successivo).

1 1 1 0 0 1 0 1 0 0

ALU PC

MAR MDR

IR

Reg. file R0..Rn

Temp Addr

Data

V

Z

A B

R 4

select

ALUctrl MUX

Zin Zout Vin MDRin

Ri_in Ri_out Temp_in Temp_out

IRin ZExtout SignExtout

MDRout MARin

PCin PCout

Extender

CPU BUS

(2)

2 Esercizio 5

Si completi il programma Assembly MIPS qui sotto, specificando cosa scrivere al posto dei due spazi indicati dalle dizioni “domanda 5A qui” e “domanda 5B qui”. Scrivere nel foglio protocollo solo il codice da sostituire in queste due parti.

Nella sezione dati, come si vede, viene memorizzato un array, alla locazione “orig” (origine), che contiene una sequenza numeri, strettamente positivi (>0) o strettamente negativi (<0), in un word ciascuno. Questo array è terminato dal valore 0.

Il programma deve riempire un secondo array, memorizzato alla locazione “dest” (destinazione), che contenga tutti gli elementi strettamente positivi del primo array, nello stesso ordine. I valori negativi devono essere semplicemente omessi. Anche questo secondo array deve essere terminato dal valore 0.

a) completare la definizione dei dati, riservando in memoria uno spazio sufficiente a memorizzare l’array di destinazione, ipotizzando che l’array di origine non contenga mai più di 20 elementi.

b) scrivere il codice che riempie l’array dest. Indizio: una soluzione ottimale richiede solo una decina fra istruzioni ed etichette.

Per agevolare la stesura del codice, sotto a destra si fornisce una tabella con la sintassi di alcune possibili istruzioni.

.

data orig:

.word 12 -13 15 … 0 dest:

<domanda 5A qui>

.text main:

<domanda 5B 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) move reg , reg move (copia un

registro in un altro) add reg , reg , reg add (somma fra

registri) 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

zero

beqz reg , etichetta branch on equal zero bltz reg , etichetta branch on less than

zero

beqz reg , etichetta branch on equal zero

Riferimenti

Documenti correlati

¨  L’espressione a[i] restituisce il valore della variabile con indice i, quindi il tipo di questa espressione è il tipo base dell'array. Accesso agli elementi di

codice strumento prezzo FLT flauto 2500 VLN violino 8000. $inv_art

I: il valore di ciascun elemento dell’array di numeri interi Pi: il numero degli elementi da inserire non può essere maggiore della cardinalità dell’array.. U:

I: il valore di ciascun elemento dell’array di numeri interi Pi: il numero degli elementi da inserire non può essere maggiore della cardinalità dell’array.. U:

I: il valore di ciascun elemento dello array bidimensionale Pi: il numero degli elementi da inserire non può essere maggiore della cardinalità dell’array. U: l’array

Prima di chiamare la free sull'array chiamarla su ogni

– Soluzione: si passa alla funzione un ulteriore parametro di tipo array, che viene “riempito” con il risultato.. E i parametri di

● Se gli estremi degli scaglioni e/o le percentuali cambiano, devo cambiare solo l'array e non il programma che fa la ricerca!.. Algoritmi su