
Informatica Corso di Laurea in Scienze Naturali e Ambientali
Esercizi 02
Traccia 1. Definire i campi di una istruzione a livello macchina di dimensione 16bit che possano consentire:
- 14 funzioni aritmetiche diverse che lavorano su registri ad uso generale
- una operazione di trasferimento che copia un dato sito in una locazione di memoria all'interno di un registro ad uso generale
- una operazione di trasferimento che copia un dato sito in un registro ad uso generale all'interno di una locazione di memoria
Il numero di registri ad uso generale è otto.
Domanda 1. Prefissata la dimensione a 16bit, quante locazioni di memoria sono accessibili dalle istruzioni?
Domanda 2. Provare ad usare dei codici mnemonici (load, store, addition,...) per rappresentare le istruzioni di trasferimento e i relativi campi dati (un esempio per ogni istruzione) e (almeno) due istruzioni aritmetiche.
Traccia 2. Considerare il seguente codice a livello macchina
-
000: lw $t0,x #Copia il valore contenuto nella locazione all'indirizzo x nel registro ad uso generale $t0
001: lw $t1,y #Copia il valore contenuto nella locazione all'indirizzo y nel registro ad uso generale $t1
002: sub $t2,$t0,$t1 #Sottrae il valore dei registri $t0 e $t1 e pone il risultato in $t2
003: btn #006 #Salta all'indirizzo specificato successivamente se il bit N è accesso
004: li $t3,100 #Mette il valore 100 in $t3
005: li $t3,200 #Mette il valore 200 in $t3
006: .END #Fine del programma
Domanda 1. Che valore ha $t3 se il valore contenuto in x è 5 e quello contenuto in y è 5?
Domanda 2. Che valore ha $t3 se il valore contenuto in x è 8 e quello contenuto in y è 5?
Domanda 3. Che valore ha $t3 se il valore contenuto in x è 7 e quello contenuto in y è 10?
Traccia 3. Suddividere la parola a 16bit di un indirizzo per individuare
- 2 banchi
- 8 blocchi
Domanda. A quante celle di memoria si può accedere per ciascun blocco? E in totale?
Traccia 4.Una Memoria Cache ha 1000 parole. Supponendo che l'elaborazione di una istruzione prelevata dalla memoria cache richieda 0.5 millesimi di secondo mentre il trasferimento di 1000 parole dalla Memoria Centrale alla Memoria Cache richieda 1 secondo; quanto guadagno temporale si ottiene utilizzando la memoria cache rispetto ad un accesso alla memoria centrale che richiede 3.5 millesimi di secondo per elaborare un programma di 3000 parole?
Traccia 5. Supponendo che ogni istruzione abbia tre fasi (Fetch, Decode, Exceute) descrivere l'andamento temporale del programma sottostante in una macchina canalizzata con i valori x=11 e y=5 e con i valori x=4294967295 e y=1.
000: lw $t0,x #Copia il valore contenuto nella locazione all'indirizzo x nel registro ad uso generale $t0
001: lw $t1,y #Copia il valore contenuto nella locazione all'indirizzo y nel registro ad uso generale $t1
002: add $t4,$t0,$t1 #Addiziona il valore dei registri $t0 e $t1 e pone il risultato in $t4
003: btz #005 #Salta alla locazione di memoria 8 se il flag Z è attivo
004: li $t9,0 #Mette il valore 4 in $t2
005: btw #007 #Salta alla locazione di memoria 12 se il flag W è attivo
006: li $t9,1 #Mette il valore 1 in $t9
007: .END #Fine del programma
Domanda. Con quale coppia di valori (x,y) è più veloce il programma? Perchè?