vuoi
o PayPal
tutte le volte che vuoi
Q D
Q’
Q D
Q’
Clock
9. Un codice a ripetizione tripla del carattere codifica le cifre decimali 0,1,. . . ,9 in corrispondenti triplette
di cifre identiche. Il decodificatore restituisce la cifra c se le tre cifre costituenti la tripletta sono tutte
uguali a c, altrimenti segnalando un errore di trasmissione e scartando la tripletta. Si dica in quanti
casi una trasmissione errata viene riconosciuta come tale rispetto alla totalità delle codifiche che possono
essere ricevute.
R: (3 pt) Su 1000 possibili triplette ricevute, una è quella corretta. Nove triplette contengono tre cifre
identiche errate ma non vengono scartate, mentre tutte le altre vengono scartate. Quindi, in 990 casi su
999 una trasmissione errata viene riconosciuta come tale.
10. Un elementare sistema di I/O programmato prevede che ogni 100 ms la CPU impegni 3 ms del proprio
tempo nel polling di un’unica periferica. Se la periferica non deve essere servita questo tempo viene
sprecato, viceversa in caso di servizio i 3 ms vengono impiegati utilmente e la CPU lavora globalmente
con un’efficienza del 100%. In queste ipotesi si calcoli quante volte la periferica dovrebbe mediamente
richiedere un servizio affinchè la CPU lavori con un’efficienza del 99%.
R: (3 pt) Posto x il numero medio di volte in cui la periferica richiede di essere servita, se la periferica
−
non richiede mai il servizio (x = 0) l’efficienza è del 100 3 = 97%. Al contrario, se richiede sempre un
servizio (x = 1) l’efficienza sale al 100%. Il numero medio di volte si ottiene dunque imponendo che
· − · ⇒ − ⇒ ⇒
97 (1 x) + 100 x = 99 97 97x + 100x = 99 3x = 2 x = 2/3, cioè due volte su tre.
11. Se la periferica del sistema di I/O presentato in precedenza inoltra mediamente 12 richieste di servizio
al secondo, il polling può funzionare? Si motivi sinteticamente la risposta.
R: (3 pt) No, poichè il sistema in questione non può servire la periferica mediamente più di 10 volte al
secondo.
12. I campi in figura appartengono a un’istru-
zione macchina per ARM che prevede la
possibilità di salvare il contenuto di un re-
gistro nell’indirizzo di memoria specifi-
Rd
cato dal contenuto del registro corretto
Rn
da un valore di offset presente nell’omoni-
mo campo. Quanti kB può valere al massi-
mo lo stesso offset in base alle informazioni
presenti in figura?
R: (3 pt) Essendo il campo offset di 12 bit, in assenza di ulteriori informazioni sul funzionamento
12 10
·
dell’indirizzamento in ARM il valore massimo in byte che può essere ivi specificato è 2 = 4096 = 4 2
byte, cioè 4 kB.
13. Quali locazioni di una memoria principale di 64 kB può contenere la linea 1023 di una cache a 32 byte
composta da 1024 entry? · · · ·
R: Le locazioni dalla 32 1023 = 32736 alla 32 1023 + 31 = 32767 e dalla 32 1024 + 32 1023 = 65504
· ·
alla 32 1024 + 32 1023 + 31 = 65535.
14. [INF] Scrivere un programma in assembly per ARM il quale, caricati nei registri e rispettivamente
r2 r3
≤ − − −
due numeri m e n tali che 0 < n m, calcola il valore m!/(m n)! = m(m 1) . . . (m n + 1) attraverso
−
una procedura ricorsiva che esegue le n 1 moltiplicazioni e deposita il risultato nel registro r1.
R: (9 pt)
.text
main: mov r2, #5 ; read m
mov r3, #3 ; read n
subs r3, r3, #1 ; will multiply n-1 times
blne fattoriale ; if n!=0 then call
mov r1, r2 ; copy result in r1
swi 0x11 ; exit program
fattoriale:
stmfd sp!, {r4, lr} ; save registers
mov r4, r2 ; m in r4
sub r2, r2, #1 ; m <- m-1
subs r3, r3, #1 ; decrement r3
blne fattoriale ; if r3!=0 call again
mul r2, r4, r2 ; otherwise multiply
ldmfd sp!, {r4, lr} ; restore registers
mov pc, lr ; restore PC
.end DMIF — Dipartimento di Scienze
Università degli Studi di Udine Matematiche, Informatiche e Fisiche
Esame B di Architetture degli Elaboratori
Soluzione
A.A. 2017-18 — II appello — 20 febbraio 2018
N.B.: il punteggio associato ad ogni domanda è solo una misura della difficoltà, e peso, di ogni domanda.
Per calcolare il voto complessivo bisogna normalizzare a 30 (circa).
dalla base 10 alla base 9.
1. Convertire il valore 5.1
R: (3 pt)
5 | 9 .111.. | 9
------- ----------
0 | 5 0 | 1 −1 −1
0
· ·
e quindi 5.1 = 5.1 . Infatti, 9 = 1/9 = 0.1, da cui 5.1 = 5 9 + 1 9 .
9
2. Sono date le seguenti codifiche in complemento a 2 a 8 bit: n = n = Si calcoli
10110111, 11001100.
1 2
−
la differenza n n e, se possibile, si esprima il risultato nella stessa codifica.
2 1 −n
R: (3 pt) Complementando n per cambiarne il segno: = eseguiamo successivamente la
01001001,
1 1
somma
11001100 +
01001001 =
---------
100010101
che, coinvolgendo un valore positivo e uno negativo, dà falso overflow ed è quindi codificata come
scartando appunto il nono bit.
00010101,
3. [INF] Fornire il risultato dell’esercizio precedente in codifica floating point IEEE 754 a 32 bit.
R: (3 pt) Il risultato trovato sopra può essere subito messo nella forma La codifica richiesta
1.0101E4.
avrà dunque bit di segno nullo, esponente uguale a 127 + 4 = 131 = e infine mantissa uguale
10000011
2
a Sistemando sui 32 bit previsti dallo standard IEEE 754 e convertendo alla base esadecimale:
0101.
0|1 0 0 0 0 0 1 1|0 1 0 1 0 0 0 0 ...
4 | 1 | A | 8 | 0 ...
da cui la codifica richiesta: 0x41A80000.
4. Si esprima il numero di bit presenti in una memoria a 64 GB come potenza di 2.
30 30 3 6 30 39
· · · ·
R: (3 pt) Ricordando che 1 GB = 2 byte: 8 64 2 = 2 2 2 = 2 bit.
5. Adoperando le regole di equivalenza booleana, calcolare quanto vale E nell’espressione seguente:
A + B + C A + C
E =
R: (3 pt) Sfruttando le regole di De Morgan si ha E = (ABC)(AC) = ABCAC = AABC = 0BC = 0
6. [INF] Verificare il risultato ottenuto sopra con una mappa di Karnaugh.
R: (3 pt) La tabella di verità porge una mappa che presenta solo simboli 0:
BC 00 01 11 10
A
0 0 0 0 0
1 0 0 0 0