Codifica e operazioni in complemento a due
R: (3 pt) Codifichiamo i due operandi in aritmetica complemento a due a 6 bit ed eseguiamone la somma algebrica:
111111 + 111110 = -------- 1111101
Ora, scartando il bit di overflow, il numero in aritmetica complemento a due a 6 bit corrisponde effettivamente a -3.
Numero più grande in notazione floating point IEEE 754
[INF] Evitando di tenere conto delle codifiche di numeri speciali, quale sarebbe il numero più grande che può essere codificato in notazione floating point IEEE 754 a 32 bit? A quale valore corrisponde?
R: (3 pt) Il numero più grande che può essere codificato in notazione floating point IEEE 754 a 32 bit evidentemente avrà mantissa (23 bit) ed esponente (8 bit) massimi. Quindi, evitando di tenere conto delle codifiche speciali, è uguale a (1 + 2-1 + ... + 2-23) × 2128.
Crescita della capacità di memoria del chip
R: (3 pt) Assumendo che il numero dei transistor all’interno di un chip di memoria quadruplichi ogni tre anni, si dica quanto tempo occorre affinché a parità di superficie del chip la capacità di memoria cresca di 8 volte. Dal dato sulla crescita si evince che, a parità di superficie, il numero dei transistor all’interno di un chip di memoria cresce di un fattore 2 ogni anno e mezzo. Quindi, da 8 = 2 × 2 × 2, la memoria sarà cresciuta di otto volte dopo 1.5 + 1.5 + 1.5 = 4.5 anni, cioè dopo quattro anni e mezzo.
Realizzazione di una porta binaria
Si realizzi una porta binaria adoperando porte binarie NAND e NOR.
R: (3 pt) = + = +
AB = A + B = A + B.
Ricordando che A = A + A, se ne conclude che 4 porte binarie sono sufficienti per realizzare la porta NOR in questione.
Uguaglianza con mappa di Karnaugh
[INF] Si dimostri l’uguaglianza E = AB = A + B adoperando una mappa di Karnaugh.
R: (3 pt) Dalla tabella di verità della porta NAND E = AB si ha immediatamente:
| A | B | E |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Minimizzando sulla mappa in modo convenzionale oppure duale si trova in ogni caso E = A + B.
Transistor necessari per la rete logica
Comunque sia stato risolto l’esercizio 5, quanti transistor occorrono in totale per realizzare la rete logica di porte trovate allo stesso esercizio?
R: (3 pt) Poiché ogni porta binaria NOR necessita di 2 transistor per essere realizzata, 4 × 2 = 8 transistor sono sufficienti per realizzare la rete proposta.
Utilità del flip-flop master-slave
[INF] Si spieghi sinteticamente l’utilità della realizzazione flip-flop master-slave dopo avere disegnato il relativo circuito.
R: (3 pt) Si rimanda alla corrispondente spiegazione presente nei lucidi.
Decodifica binaria a ripetizione tripla
Un trasmettitore di bit adopera un codice binario a ripetizione tripla di ogni bit da trasmettere. Nell’ipotesi in cui i bit da trasmettere formino parole lunghe 4 bit, si spieghi come il ricevitore può essere programmato per decodificare sempre una parola di 4 bit con la minima probabilità di commettere un errore.
R: (3 pt) Poiché ogni bit da trasmettere viene ripetuto tre volte, la decodifica avente probabilità di errore più piccola la si realizza scegliendo il valore che ricorre più frequentemente in ogni tripletta, indipendentemente dalla lunghezza della parola.
Strumenti software dell'IDE Arduino
Quali sono gli strumenti software messi a disposizione dell’utente dall’IDE Arduino per la comunicazione seriale?
R: (3 pt) L’IDE, oltre a fornire un monitor seriale per leggere/scrivere da/verso Arduino via protocollo USB, mette a disposizione dell’utente delle primitive per:
- Instaurare la comunicazione impostando il baud rate [Serial.begin(baud)]
- Terminare la comunicazione e liberare i pin [Serial.end()]
- Sapere se stanno arrivando dei dati sul buffer di lettura [Serial.available()]
- Leggere un byte dalla coda del buffer della seriale [Serial.read()]
- Scrivere valori binari o caratteri attraverso diversi metodi [Serial.write(val), Serial.print(val), Serial.println(val)]
- Attendere che la comunicazione in uscita sia completata prima di eseguire l’istruzione seguente [Serial.flush()]
- Eseguire una callback quando sono ricevuti nuovi dati [Serial.serialEvent()]
Trasmissione su un bus parallelo a 4 linee
Un bus parallelo a 4 linee trasmette bit con continuità a una frequenza f = 128 kHz su ogni linea. Quanti Mbit ha trasmesso dopo t = 20 minuti di funzionamento?
R: (3 pt) 20 minuti corrispondono a un tempo t = 1200 s. Poiché in un secondo ogni linea trasmette 128 × 103 bit, dopo il tempo t il bus ha trasmesso 4 × 1200 × 128 × 103 bit = 614400 × 103 bit = 614.4 Mbit.
Estensione del campo argomento di un'istruzione
Una semplice architettura a 16 bit dispone di una memoria di programma formata da locazioni di 8 bit avente un’estensione di 4 KByte. Quanti bit dev’essere tipicamente esteso il campo argomento di un’istruzione (a 16 bit) di salto incondizionato affinché la memoria di programma disponibile possa essere interamente indirizzata?
R: (3 pt) Disponendo l’architettura di 4 KByte = 212 locazioni di un byte, all’istruzione di salto è richiesto di indirizzare qualunque coppia di locazioni consecutive, cioè qualunque word di 16 bit. Occorre quindi poter specificare 212/2 = 211 indirizzi, quindi occorrono 11 bit. Poiché tuttavia l’indirizzamento deve poter anche essere fatto all’indietro occorre un bit aggiuntivo per il segno, quindi in definitiva il campo argomento della nostra istruzione di salto incondizionato occupa 11 + 1 = 12 bit.
Memoria virtuale paginata
Avendo a disposizione una memoria RAM fisica di 16 MB, in un’architettura a 32 bit fornita di sufficiente memoria di massa si vuole realizzare una memoria virtuale paginata che sfrutta tutto l’intervallo d’indirizzamento. Assumendo che ogni pagina abbia un’estensione di 256 kB, si calcolino le dimensioni della page table i) nel caso in cui ogni pagina possa essere collocata in una qualunque posizione in memoria principale, e ii) nel caso in cui ogni pagina possa essere posizionata solamente in un page frame della memoria principale.
R: Ogni pagina occupa 256 × 210 = 218 byte. La page table dovrà quindi mappare 232/218 = 214 pagine. Quindi, essa sarà costituita da 214 righe. Poiché la RAM ha estensione uguale a 16 MB = 224 byte, ciascuna riga sarà lunga i) 24 bit più il bit di presenza/assenza nel caso in cui ogni pagina possa essere collocata in una qualunque posizione in memoria principale, e ii) 6 bit (da 224/218 = 26) più il bit di presenza/assenza nel caso in cui ogni pagina possa essere posizionata solamente in un page frame della memoria principale. Le dimensioni della page table saranno quindi rispettivamente di (24 + 1) × 214 bit nel caso i), e di (6 + 1) × 214 bit nel caso ii).
Programma in assembly per ARM
[INF] Scrivere un programma in assembly per ARM il quale, potendo avere accesso a un array di interi positivi presente nella memoria di lunghezza parimenti specificata in memoria, calcola e salva in memoria la norma dell’array definita come la differenza tra il massimo e il minimo elemento. Per esempio, se l’array contiene gli elementi 1,23,5,7,12,114,8,7,6 allora la norma è uguale a 114-1. È gradita la presenza di commenti al codice prodotto.
R: (9 pt)
.data
n: .word 9
array: .word 1,23,5,7,12,114,8,7,6
result: .skip 4
.text
main:
ldr r1, =n
ldr r1, [r1] @ array length in r1
cmp r1, #0 @ if null length...
beq exit @ then exit
ldr r0, =array @ array head position in r0
ldr r2, [r0] @ minimum in r2
ldr r3, [r0], #4 @ maximum in r3, point to next
loop_el: @ iterate on elements
subs r1, r1, #1 @ decrease r1; if r1 == 0...
beq norm @ ...then compute norm
ldr r4, [r0], #4 @ load element in r4, point to next
cmp r4, r2 @ if r4 < minimum...
movlt r2, r4 @ ...update minimum
cmp r4, r3 @ if r4 > maximum...
movgt r3, r4 @ ...update maximum
b loop_el @ iterate on next element
norm:
sub r4, r3, r2 @ compute array norm
ldr r1, =result
str r4, [r1] @ save result
exit:
swi 0x11 @ exit
.end
Conversioni e operazioni aritmetiche
Conversione del numero 5-3.45
Si può convertire il numero 5-3.45 nella base 10? Se sì, si dia il risultato nella nuova base calcolandolo fino alla terza cifra decimale.
R: (3 pt) No, in quanto il numero da convertire non ha senso per come è stato denotato.
Operazione in complemento a due a 8 bit
Si esegua l’operazione 150 - 120 in aritmetica complemento a due a 8 bit. Che risultato dà?
R: (3 pt) Ricordando che l’intervallo calcolabile in aritmetica complemento a due a 8 bit va da -128 a 127, è immediato verificare che il risultato dell’operazione 150 - 120 = 30 non è rappresentabile all’interno dello stesso intervallo. Il risultato è dunque in overflow.
Codifica in floating point IEEE 754 a 32 bit
[INF] Convertire il numero decimale -9.5 in codifica floating point IEEE 754 a 32 bit.
R: (3 pt) Riscriviamo innanzitutto il numero in base due: -1001.1. Riportandolo in notazione mantissa ed esponente: -1.0011 × 23. La codifica richiesta avrà dunque bit di segno asserito, campo esponente in notazione eccesso 127 e dunque uguale a 127 + 3 = 130 = 10000010, e infine mantissa uguale a 0011. Sistemando sui 32 bit previsti dallo standard IEEE 754 e convertendo alla base esadecimale: 1|1 0 0 0 0 0 1 0|0 0 1 1 0 0 0 0|0 0 0 0 ... da cui la codifica richiesta: 0xC1180000.
Crescita della capacità del chip di memoria
Assumendo che il numero dei transistor all’interno di un chip di memoria triplichi ogni quattro anni, dica di quanto è aumentata la capacità di memoria a parità di superficie del chip dopo sei anni.
R: (3 pt) Dal dato sulla crescita si evince che, a parità di superficie, il numero dei transistor all’interno di un chip di memoria cresce di un fattore √3 ogni due anni. Quindi, da √3 × √3 = √3 × √3 × √3, la memoria sarà cresciuta di √3 × √3 volte dopo 2 + 2 + 2 anni, cioè dopo sei anni.
Tabella di verità per un chip LED
Un chip LED come quello in figura può assumere 10 configurazioni diverse a seconda della cifra decimale che i diodi luminosi devono visualizzare. Si dia una tabella di verità la quale, codificata in base due una cifra decimale in ingresso, accende correttamente i 7 diodi a seconda della cifra da visualizzare. Si ordinino definitivamente i sette diodi in tabella di verità come si preferisce.
R: (3 pt) Per esempio, scelta una numerazione da 1 a 7 per le uscite E1,...,E7 scorrendo progressivamente i LED dall’alto in basso e da sinistra a destra, gli ingressi I1,...,I4 soddisferanno la seguente tabella di verità:
| Ingresso (I1...I4) | Uscita (E1...E7) |
|---|---|
| 0000 | 1111110 |
| 0001 | 0110000 |
-
Prove svolte di Architettura dei calcolatori
-
Prove svolte Architettura dei calcolatori
-
Prove svolte Architettura dei calcolatori
-
Prove svolte Architettura dei calcolatori