vuoi
o PayPal
tutte le volte che vuoi
La corrispondente operazione tra numeri decimali si riconosce subito dal fatto che n codifica il valore
2
−1.
28, e il risultato della somma è la codifica del valore Dunque, n non può che corrispondere al valore
1
−29. −29 −1.
L’operazione corrispondente tra numeri decimali quindi è: + 28 =
−15 −18
3. [INF] Convertire il numero 2 + 2 in codifica floating point IEEE 754 a 32 bit.
−15 −3 −
R: (3 pt) Il numero in questione sopra può essere subito riscritto come 2 (1 + 2 ) = 1.001 E 15.
2
−
La codifica richiesta avrà dunque bit di segno nullo, esponente uguale a 127 15 = 112 = e
01110000 2
infine mantissa uguale a Sistemando sui 32 bit previsti dallo standard IEEE 754 e convertendo alla
001.
base esadecimale:
0|0 1 1 1 0 0 0 0|0 0 1 0 0 0 0 0 ...
3 | 8 | 1 | 0 | 0 ...
da cui la codifica richiesta: 0x38100000.
4. La legge di Moore afferma che il numero di transistor nell’unità di memoria quadruplica ogni tre anni.
Quanto tempo è passato tra la produzione di due chip se la densità di transistor tra quello meno recente
e quello più recente è aumentata di un fattore 32?
R: (3 pt) Se la densità tra il chip meno recente e quello più recente è aumentata di un fattore 32 = 4·4·2,
considerato che la legge di Moore afferma equivalentemente che il numero di transistor nell’unità di
memoria raddoppia ogni anno e mezzo allora il fattore in questione è verificato allorquando sono trascorsi
3 + 3 + 1.5 = 7.5 anni. A BC D. Successivamente si dica quanti transistor sono necessari
5. Si semplifichi l’espressione booleana
per realizzare il circuito booleano rappresentato dall’espressione prima della semplificazione e quanti sono
necessari per rappresentare con un circuito booleano l’espressione ottenuta dopo la semplificazione.
R: (3 pt) Adoperando la regola di De Morgan si ha A BC D = A + BC + D = A + BC + D, in
cui entrambe le espressioni hanno bisogno di 7 transistor per essere realizzate da un circuito booleano:
quella prima della semplificazione abbisogna di 2 porte NOT, una NAND binaria e una NAND ternaria;
quella dopo la semplificazione abbisogna di una porta AND binaria e una porta OR ternaria.
6. [INF] Si verifichi la semplificazione prodotta all’esercizio 5 mediante una mappa di Karnaugh.
R: (3 pt)
AD 00 01 11 10
BC
00 0 1 1 1
01 0 1 1 1
11 1 1 1 1
10 0 1 1 1 ×
che ammette due coperture di “uni” di dimensione 4 2, da cui i termini A e D, e una copertura di
×
dimensione 1 4 da cui il termine BC.
7. Realizzare l’espressione all’esercizio 5 ottenuta dopo la semplificazione adoperando una porta AND e
un multiplexer a tre ingressi di controllo, disegnando il circuito corrispondente senza mostrare come è
costruito nei particolari il relativo multiplexer.
R: (3 pt)
5V 111
000
0V A B C D
8. [INF] Disegnare il circuito sequenziale che, ricevendo in ingresso un segnale A rappresentativo di una
sequenza binaria contenente valori 0 e 1, riconosce ogni istanza della sottosequenza (in cui
01001001
il simbolo più recente ricevuto è quello a sinistra nella stessa sottosequenza) nel momento in cui essa
è presente nella sequenza in ingresso. Il circuito restituisce in uscita un segnale E che vale 0 se la
sottosequenza in quel momento non è stata riconosciuta oppure 1 se viceversa è stata riconosciuta.
evitare se possibile di passare attraverso la progettazione di una macchina a stati finiti,
Suggerimento:
adoperando invece un metodo che conduce direttamente al circuito.
R: (3 pt) Il circuito può essere immediatamente disegnato adoperando un buffer di flip-flop che realizza
una coda di bit: E
A D Q D Q D Q D Q D Q D Q D Q
> Q’ > Q’ > Q’ > Q’ > Q’ > Q’ > Q’
Ck
9. Un codice binario per il controllo degli errori codifica ogni bit con la sua ripetizione quadrupla. Quindi,
per esempio, la sequenza di tre bit viene codificata come all’atto di essere trasmessa.
101 111100001111
Il ricevitore è programmato per correggere l’errore ogni volta che nella codifica ricevuta esiste infor-
mazione sufficiente per prendere una decisione sulla decodifica. Quante sono le codifiche possibili che
possono essere ricevute ogni volta che un bit viene inviato? Qual è la regola di correzione che ha senso
programmare? In quante codifiche l’errore può essere correttamente rimosso? In quante codifiche l’errore
è viceversa rimosso producendo tuttavia una ricezione scorretta?
4
R: (3 pt) Per ogni bit trasmesso possono essere ricevute 2 = 16 codifiche diverse. Se il ricevitore ragio-
nevolmente decide di decodificare ogni quadrupla ricevuta con il valore che ricorre più frequentemente,
allora esistono 4 codifiche in cui l’errore viene rimosso correttamente (quelle in cui un bit è stato corrotto
durante la trasmissione) e 4 codifiche che sono corrette in modo errato (quelle in cui tre bit sono stati
corrotti durante la trasmissione).
10. Si vuole sostituire un bus parallelo a 4 linee, ciascuna con una banda passante di 200 Mb/s, con un
bus seriale che raggruppa in un unico pacchetto i 4 bit che prima erano inviati ciascuno separatamente
sulla rispettiva linea. Lo stesso pacchetto ha bisogno di un preambolo di 4 bit, necessari a garantire la
sincronizzazione nel canale seriale. Quale dev’essere il periodo di clock del bus seriale?
R: (3 pt) Se ogni linea nel bus parallelo ha una banda passante di 200 Mb/s, quel bus ha una banda
passante complessiva di 4·200 = 800 Mb/s. Il bus seriale aggiunge 4 bit a ogni pacchetto di 4 bit, e quindi
deve possedere una banda passante complessiva di 1600 Mb/s per mantenere il flusso d’informazioni. Il
ricevitore deve quindi leggere i bit sincronizzandosi con essi a una frequenza di clock f = 1600 MHz
−9
9
· ·
= 1.6 10 Hz. Conseguentemente, il periodo di clock risulterà uguale a T = 1/f = 1/1.6 10 =
−9
·
0.625 10 s, cioè 0.625 ns.
11. Con riferimento all’esercizio precedente, si dica quale tra i tre preamboli proposti qui di seguito converrà
scegliere all’atto di sostituire il bus parallelo con quello seriale: o infine Perché?
1100, 1010 1111?
R: (3 pt) Il ruolo del preambolo è quello di garantire la sincronizzazione. Dunque, conviene sceglierlo
in modo che assicuri la massima variabilità dei valori assunti dai suoi bit. La sequenza quindi è la
1010
più efficace allo scopo. Seguono nell’ordine la sequenza e infine la quale è sostanzialmente
1100 1111,
inutile ai fini della sincronizzazione.
12. Quanti bit occorre almeno dedicare al campo argomento di un’istruzione macchina di logical shift left
(lsl) appartenente a un’architettura di 32 bit? Si spieghi perché.
R: (3 pt) Dovendo l’operazione di arithmetic shift right ragionevolmente traslare il contenuto di un
registro almeno fino a 32 posizioni verso destra, occorre un campo di almeno 5 bit all’interno del quale
specificare l’entità della traslazione.
13. In un sistema di memoria virtuale segmentata, la memoria fisica di 4 MB è occupata da segmenti
tutti uguali a 128 kB i quali sfortunatamente sono collocati nel modo più inefficiente all’interno della
memoria fisica. Quanti segmenti sono presenti in memoria principale? Mostrare i calcoli che conducono
al risultato. 17
R: Poiché 128 kB corrispondono a 2 byte, la collocazione meno efficiente corrisponde ad avere spazi
17 −
liberi in memoria principale di 2 1 byte tra segmenti successivi. Il conteggio dei segmenti a questo
17 17 −
punto può essere fatto pensando di avere riempito la memoria con segmenti equivalenti di 2 + 2 1
20 22
·
byte. Poichè la memoria fisica ha un’estensione di 4 2 = 2 byte, il loro numero è uguale a
20 22 18
·
4 2 2 2
4 ≈
= = 2 16.0001 = 16.
17 17 18 18
− − −
2 + 2 1 2 1 2 1
14. [INF] Scrivere un programma in assembly per ARM a 32 bit il quale, avendo accesso a un array di
interi presente nella memoria di lunghezza parimenti specificata in memoria, lo sostituisce con un
n
nuovo array di elementi ciascuno dei quali è uguale al complemento a uno del corrispondente ele-
n
mento presente nell’array di partenza. Per esempio, se prima dell’esecuzione del programma l’array
conteneva gli interi dopo l’esecuzione lo stesso array conterrà gli elementi
0x00000E0F,0x0000FFF1,
É gradita la presenza di commenti al codice prodotto.
0xFFFFF1F0,0xFFFF000E.
R: (9 pt)
.data
n: .word 2
array: .word 0x00000E0F, 0x0000FFF1
.text
main: ldr r0, =array @ array head position in r0
ldr r1, =n
ldr r1, [r1] @ array length in r1
loop: @ iterate on elements
subs r1, r1, #1 @ if r1<0 ...
blt exit @ ...then exit
ldr r2, [r0] @ load element into r2
mvn r2, r2 @ negate (i.e. cmpl’t to one) element
str r2, [r0], #4 @ store element in r2, point to next
b loop @ iterate on next element
exit: swi 0x11 @ exit
.end DMIF — Dipartimento di Scienze
Università degli Studi di Udine Matematiche, Informatiche e Fisiche
Esame A di Architetture degli Elaboratori
Soluzione
A.A. 2022-23 — II appello — 14 febbraio 2023
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 32 (circa).
1. Convertire il numero 111111111.1 alla base 32. Si specifichino solo i simboli necessari a rappresentare
2
il risultato nella nuova base, senza viceversa definire l’intero alfabeto delle cifre in base 32.
R: (3 pt) Trattandosi di basi che sono una potenza di due, è sufficiente raggruppare gruppi di 5 cifre
binarie per riscrivere il numero nella base 32:
11111 . 11111 .
= F Z.Z
1111 32
| |
} {z } {z }
|{z
F Z Z
32 32 32
Si noti che la lettera Z è stata scelta arbitrariamente per definire la cifra più grande nella base 32. Altre
definizioni non occorrono per la specifica soluzione.
2. Si scriva la codifica in complemento a 2 a 8 bit del numero n più piccolo che, sommato algebricamente
2
a n = espresso nella medesima codifica, manda l’aritmetica del calcolatore in overflow.
11111111
1
R: (3 pt) Il numero n deve avere lo stesso segno di n e far produrre un risultato di segno opposto:
2 1
11111111 +
10000000 =
--------------
01111111 −1 − −129
Infatti, riportando l’operazione alla base 10: n + n = 128 = che, appunto, non è rappre-
1 2
sentabile in complemento a due a 8 bit. Poichè ogni altro numero n negativo non avrebbe mandato
2
l’aritmetica del calcolatore in in overflow, esso è anche il più piccolo.
3. [INF] Si dica quali tra i seguenti numeri in base 10 ammettono una rappresentazione fini