Sei sulla pagina 1di 16

Politecnico di Milano

Dip. di Elettronica, Informazione e Bioingegneria


prof.ssa Anna Antola prof.ssa Donatella Sciuto
prof. Luca Breveglieri prof.ssa Cristina Silvano

AXO – Architettura dei Calcolatori e Sistemi Operativi


PRIMA PARTE – giovedì 20 febbraio 2020

Cognome________________________ Nome ________________________

Matricola_____________________ Firma____________________________

Istruzioni

Si scriva solo negli spazi previsti nel testo della prova e non si separino i fogli.

Per la minuta si utilizzino le pagine bianche inserite in fondo al fascicolo distribuito con il testo della prova. I
fogli di minuta, se staccati, vanno consegnati intestandoli con nome e cognome.

È vietato portare con sé libri, eserciziari e appunti, nonché cellulari e altri dispositivi mobili di calcolo o co-
municazione. Chiunque fosse trovato in possesso di documentazione relativa al corso – anche se non stret-
tamente attinente alle domande proposte – vedrà annullata la propria prova.

Non è possibile lasciare l’aula conservando il tema della prova in corso.

Tempo a disposizione 1 h : 30 m

Valore indicativo di domande ed esercizi, voti parziali e voto finale:

esercizio 1 (6 punti) _________________________

esercizio 2 (3 punti) _________________________

esercizio 3 (6 punti) _________________________

esercizio 4 (1 punti) _________________________

voto finale: (16 punti) ______________________


esercizio n. 1 – linguaggio macchina
traduzione da C ad assembler

Si deve tradurre in linguaggio macchina simbolico (assemblatore) MIPS il frammento di programma C ripor-
tato sotto. Il modello di memoria è quello standard MIPS e le variabili intere sono da 32 bit. Non si tenti
di accorpare od ottimizzare insieme istruzioni C indipendenti. Si facciano le ipotesi seguenti:
− il registro “frame pointer” fp non è in uso
− le variabili locali sono allocate nei registri, se possibile
− vanno salvati (a cura del chiamante o del chiamato, secondo il caso) solo i registri necessari
Si chiede di svolgere i quattro punti seguenti (usando le varie tabelle predisposte nel seguito):
1. Si descriva il segmento dei dati statici dando gli spiazzamenti delle variabili globali rispetto al registro
global pointer gp, e si traducano in linguaggio macchina le dichiarazioni delle variabili globali.
2. Si descrivano l’area di attivazione della funzione norma e l’allocazione delle variabili locali e dei para-
metri di norma nei registri.
3. Si traduca in linguaggio macchina il codice degli statement riquadrati nel prog. principale main.
4. Si traduca in linguaggio macchina il codice dell’intera funzione norma (vedi tab. 4 strutturata).

/∗ sezione dichiarativa costanti e variabili globali ∗/


#define NUM 4096
int val = 0
int vet [NUM] /∗ 4096 = 2^12 e 16384 = 2^14 ∗/
int ini

int quad (int base) /∗ testata funz foglia quad ∗/


int readint ( ) /∗ testata funz foglia readint ∗/

int norma (int ∗ ptr, int num) { /∗ funzione norma ∗/


int elm, res
if (num < NUM) {
elm = ∗ptr
res = norma (ptr + 1, num + 1) + quad (elm)
} else {
res = 0
} /∗ if ∗/
return res
} /∗ norma ∗/

void main ( ) { /∗ prog. principale ∗/


ini = readint ( )
val = norma (&vet [ini], NUM - ini)
} /∗ main ∗/

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 2 di 16


punto 1 – segmento dati statici (numero di righe non significativo)

spiazzamento
contenuto
rispetto a
simbolico
gp = 0x 1000 8000

indirizzi
alti

INI

VET [4095]

VET [...]

VET [0]

indirizzi
VAL
bassi

punto 1 – codice MIPS della sezione dichiarativa globale (numero di righe non significativo)

.data 0x 1000 0000 // segmento dati statici standard

.equ NUM, 4096 // costante NUM

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 3 di 16


punto 2 – area e registri di NORMA (numero di righe non significativo)

area di attivazione di NORMA

spiazz. rispetto
contenuto simbolico
a stack pointer
indirizzi alti

indirizzi bassi

allocazione dei parametri e delle


variabili locali di NORMA nei registri

parametro / variabile locale registro

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 4 di 16


punto 3 – codice MIPS degli statement riquadrati di MAIN – (numero di righe non significativo)

// ini = readint ( )

// val = norma (&vet [ini], NUM - ini)

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 5 di 16


punto 4 – codice MIPS dell’intera funzione NORMA – (numero di righe non significativo)
NORMA: addiu $sp, $sp, // COMPLETARE - crea area attiv.
// scrivere qui le direttive .equ per gli spiazzamenti in pila

// salvataggi di registri - NON VANNO RIPORTATI


IF: // if (num < NUM)

THEN: // elm = ∗ptr

// res = norma (ptr + 1, num + 1) + quad (elm)

ELSE: // res = 0

ENDIF: // return res – SCRIVERE solo preparazione del valore uscita

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 6 di 16


spazio libero per continuazione o brutta copia

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 7 di 16


esercizio n. 2 – logica digitale e memoria cache
prima parte – logica sequenziale

Sia dato il circuito sequenziale composto da due bistabili master-slave di tipo D (D1, Q1 e D2, Q2, dove D
è l’ingresso del bistabile e Q è lo stato / uscita del bistabile), con un ingresso I e un’uscita U, descritto
dalle seguenti equazioni:

D1  =  Q2  xor  I 
D2  =  Q1 
U    =  Q1  xor  Q2 
Si chiede di completare il diagramma temporale riportato qui sotto. Si noti che:
• si devono trascurare completamente i ritardi di propagazione delle porte logiche XOR e i ritardi di
commutazione dei bistabili
• i bistabili sono il tipo master-slave la cui struttura è stata trattata a lezione, con uscita che commuta
sul fronte di discesa del clock

diagramma temporale da completare

                                                         

I  0                                                       

                                                         

D1                                                         

                                                         

Q1  0                                                       

                                                         

D2                                                         

  1                                                       

Q2                                                         

                                                         

U                                                         

                                                         

CLK                                                         

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 8 di 16


seconda parte – memoria cache

Si consideri un sistema di memoria (memoria + cache) con le seguenti caratteristiche:


• memoria di lavoro di 4 K Byte, indirizzata a livello di singolo byte
• cache set associativa a 2 vie di 512 Byte
• ogni blocco della cache contiene 128 Byte, quindi la cache contiene 4 blocchi, denotati dalle lette-
re A, B, C e D
• i blocchi A e B appartengono all’insieme 0
• i blocchi C e D appartengono all’insieme 1
• la politica di sostituzione adottata nella cache è LRU (Least Recently Used)
Si chiede di completare la Tabella seguente considerando la sequenza di richieste alla memoria riportata nel-
la colonna Indirizzo richiesto.
Il significato delle diverse colonne della tabella è il seguente:
• Nella colonna “esito” riportare H (hit) se il blocco richiesto si trova nella cache, M (miss) se invece il
blocco deve essere caricato dalla memoria.
• Nelle colonne “dati” deve essere riportato il numero del blocco della memoria che si trova nel
corrispondente blocco della cache. Si noti che questi valori devono essere espressi come numeri de-
cimali (base dieci), mentre le etichette sono scritte in binario. Per questo motivo l’indirizzo 000 0001
0010 individua un byte compreso nel blocco 00000due = 0dieci (che quindi ha come etichetta il valore
binario 0000).
• Nella colonna “azione” deve essere indicato il blocco cui si accede (in caso di successo, H) o il
blocco in cui vengono caricati i dati della memoria (in caso di fallimento, M).

blocco A blocco B blocco C blocco D


etichetta

etichetta

etichetta

etichetta
passo

esito

valido

valido

valido

valido
dati

dati

dati

dati
indirizzo azione
richiesto

0 1 0000 0 0 1110 28 1 0001 3 0 0110 13 situazione iniziale

1 0110 1110 0010

2 0001 1110 0101

3 1110 0011 1001

4 1000 0000 0010

5 0100 1111 1110

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 9 di 16


esercizio n. 3 – microarchitettura del processore pipeline
prima parte – pipeline e gestione di conflitti e stalli
Si consideri la sequenza di istruzioni sotto riportata e si risponda alle seguenti domande
1. or $t1, $t1, $t2
2. lw $t1, ($t1)
3. sw $t3, 4($t1)
4. add $t2, $t1, $t3
5. sub $t1, $t3, $t2
6. beq $t1, $t2, FINE

    ciclo di clock 

    1  2  3  4  5  6  7  8  9  10  11  12  13 

1. or  IF  ID  EX  MEM  WB                 

2. lw    IF  ID  EX  MEM  WB               


istruzione 

3. sw      IF  ID  EX  MEM  WB             

4. add        IF  ID  EX  MEM  WB           

5. sub          IF  ID  EX  MEM  WB         

  6. beq            IF  ID  EX  MEM  WB       

punto 1
a. Definire tutte le dipendenze di dato completando la tabella 1 della pagina successiva (colonne “punto
1a”) indicando quali generano un conflitto, e per ognuna di queste quanti stalli sarebbero necessari per ri-
solvere tale conflitto (stalli teorici), considerando la pipeline senza cammini di propagazione.
b. Disegnare in diagramma A il diagramma temporale della pipeline senza propagazione di dato, con gli stalli
effettivamente risultanti, e riportare il loro numero in tabella 1 (colonne “punto 1b”).

diagramma A 
  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18 

1. or                                     

2. lw                                     

3. sw                                     

4. add                                     

5. sub                                     

6. beq                                     

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 10 di 16


punto 2
Si faccia l’ipotesi che la pipeline non sia ottimizzata per la gestione dei conflitti di controllo e che sia dotata dei
percorsi di propagazione EX/EX, MEM/EX e MEM/MEM.
a. Disegnare in diagramma B il diagramma temporale della pipeline indicando i percorsi di propagazione
che possono essere attivati per risolvere i conflitti e gli eventuali stalli da inserire affinché la propagazio-
ne sia efficace.
b. Indicare in tabella 1 (colonne “punto 2b”), i percorsi di propagazione attivati e gli stalli associati, e il
ciclo di clock in cui sono attivi i percorsi di propagazione.

diagramma B 
  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18 

1. or                                     

2. lw                                     

3. sw                                     

4. add                                     

5. sub                                     

6. beq                                     

tabella 1 
punto 1a    punto 1b    punto 2b 
    ciclo di clock
N°  N° istruzione  registro  conflitto N° stalli N° stalli  stalli + percorso 
in cui è attivo
istruzione  da cui dipende  coinvolto  (si/no)  teorici  effettivi  di propagazione  
il percorso 
   
         
   
         

             

             

             

             

             

             

             

             

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 11 di 16


punto 3
Si ipotizzi ora di voler risolvere i conflitti individuati al punto 1a tramite la tecnica di compilazione del codice
che prevede l’inserimento di istruzioni di nop.

3a) Si scriva nella tabella sottostante (su due colonne per questioni di spazio e con numero di righe non si-
gnificativo) la sequenza di istruzioni risultante dopo l’inserimento delle nop.

1. 11.

2. 12.

3. 13.

4. 14.

5. 15.

6. 16.

7. 17.

8. 18.

9. 19.

10. 20.

3b) Si calcolino i cicli di clock necessari all’esecuzione della sequenza completa.

Cicli di clock =

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 12 di 16


seconda parte – pipeline e segnali di controllo

Si consideri ora il diagramma temporale diagramma B (vedi prima parte, punto 2) e in particolare il ciclo
di clock 6 così come risulta nella pipeline non ottimizzata e con i percorsi di propagazione attivati (vedi an-
che prima parte, punto 2b, tabella 1) a cui corrisponde lo stato degli stadi della pipeline mostrato qui sot-
to.

IF ID EX MEM WB
sub add sw sw_stall lw

Completare le seguenti tabelle tenendo conto che il contenuto iniziale di alcuni registri e parole di memoria è
quello dato in TABELLA CONTENUTI:

segnali relativi al RF (subito prima del fronte di DISCESA interno al ciclo di clock 6)
RF.RegLettura1 RF.DatoLetto1 RF.RegScrittura

RF.RegLettura2 RF.DatoLetto2 RF.DatodaScrivere

subito prima del fronte di SALITA conclusivo del ciclo di clock 6


segnali all’ingresso dei registri di interstadio

registro EX / MEM registro MEM / WB segnali a unità funzionali

.WB.MemtoReg .WB.MemtoReg MemWrite

.WB.RegWrite .WB.RegWrite MemRead

.M.MemWrite

.M.MemRead

TABELLA CONTENUTI

registro contenuto iniziale


$t1 0x 1001 0000
$t2 0x 0001 0115
$t3 0x 1000 FFF5
memoria contenuto iniziale
0x 1000 AAA4 0x 1001 1112
0x 1001 0115 0x 0044 0000

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 13 di 16


esercizio n. 4 – domande su argomenti vari
rappresentazione di strutture dati in assembler

Si consideri la dichiarazione, in linguaggio C, di un array 2D (ossia una matrice) di elementi interi:

#define N 8
int row
int matrix [N, N]

Si supponga che in linguaggio C la matrice sia rappresentata in memoria per righe: gli elementi di
una riga sono memorizzati consecutivamente e righe consecutive si susseguono in memoria.
Si chiede di tradurre in linguaggio assembler MIPS (con direttive se opportuno) l’istruzione C se-
guente, che usa la matrice (l’inizializzazione della variabile globale row non è rilevante):

matrix [row, 6] = 7
completando la tabella seguente, compresa la direttiva .space della matrice:

ROW: .space 4

MATRIX: .space

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 14 di 16


spazio libero per continuazione o brutta copia

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 15 di 16


spazio libero per continuazione o brutta copia

AXO – prova 1 di giovedì 20 febbraio 2020 pagina 16 di 16

Potrebbero piacerti anche