architettura degli elaboratori 2012/2013 - dit.unitn.itpalopoli/courses/arch/arches1.pdf ·...

Post on 18-Feb-2019

224 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Architettura degli elaboratori 2012/2013Rappresentazione ed aritmetica binaria di base

Michele �Jazzinghen� Bianchi1

1Dipartimento di Ingegneria e Scienze dell'Informazione

Universtià degli Studi di Trento

21 Febbraio 2013

1 of 27

Introduzione

� Contatti: michele.bianchi@unitn.it

� Sito web con i materiali: http://disi.unitn.it/~bianchi

� Ricevimento: scrivetemi una mail, così ci mettiamo d'accordo.

� Domande o parti poco chiare: Ovviamente sono qui per questo, quindichiedete pure, altrimenti mandatemi le domande via mail, alle qualirisponderò all'inizio della lezione successiva

2 of 27

IntroduzioneExtra

� Sulla mia pagina è presente una Quick Start Guide per quanto riguarda laseconda parte del corso. Vi potrebbe essere utile leggerla subito, così se cisono casini metto a posto

� Aggiungerò dei link a delle risorse online utili per il corso, dateciun'occhiata ogni tanto. So che vi sentite dire questa cosa spesso, ma ameservono hit per prendere soldi nel mio caso vi potrebbe essere utile, vistoche non ci sono ancora tutti i contenuti.

3 of 27

Storia

� Sistemi unari (dita, tacche, ideogrammi)

� Sistemi di numerazione additivi (Romani, Egizi)

� Sistemi letterali (e.g. Sixty nine, Soixante dix-neuf, Settantanove)

� Notazioni posizionali (Babilonesi [base60], Hindu-Arabic [base10])

4 of 27

Basi informatiche

� Base-2 (Binario): rappresentazione grezza delle linee logiche

� Base-8 (Ottale): rappresentazione di 3 bit (deprecato)

� Base-16 (Esadecimale): rappresentazione 4 bit (e.g. Colori per CSS)

5 of 27

De�nizioni di base

� Bit [0,1]: stato di una linea logica

� Byte [0,255]: 8 bit assieme (e.g. 1 carattere ASCII)

� Word [0,2bits − 1]: numero variabile di byte a seconda del sistema (e.g.�oat da 4byte)

6 of 27

� Integer (8, 16, 32, 64 bit)� Unsigned: Da 0 a 2bit − 1� Signed: Da −2bit−1 a 2bit−1 − 1

� Float� Single: 1.175494351e−38 a 3.402823466e38

� Double: 2.2250738585072014e−308 a 1.7976931348623158e308

� Quad (There is no kill like overkill): 3.362e−4932 a 1.20e4932

N.B.

Per iniziare lavoreremo con i numeri naturali (interi positivi) a 8 bit. Ovveroda 0 a 255, come se stessimo giocando a Final Fantasy VII.

7 of 27

Strutture complesse

� Testo: Sequenza di byte o, nel caso di sistemi moderni, di word da 8 a 32bit (UTF-8)

� Immagini: Bitmap a profondità variabile (1, 8, 16, 24, 32 bit)� 1 bit: Bianco e Nero� 8 bit: 256 colori (NES! MSX2! :D Glorious Retrogaming)� 16 bit: 65536 colori (SNES, Windows 95)� 24 bit: 16 milioni di colori (Circa tutto adesso)� 32 bit: 16 milioni di colori + Alpha Channel

� Audio: Dati stereo codi�cati tramite Pulse Code Modulation (PCM)1

1Dannato PCM!8 of 27

Conversione base-10 a base-2Valore di un numero base-10

Un numero in base-10 è formato da unità, decine, centinaia, migl... blah blah.In pratica è la somma di multipli di potenze di 10, partendo da 100 = 1Quindi, se prendiamo un numero tipo il 8550016410 avremo:

9 of 27

Conversione base-10 a base-2Valore di un numero base-2

Alla stessa maniera un numero base-2 è formato da unità, due, quattro, ottoed avanti così per potenze di 2.La conversione, quindi, da base-2 a base-10 è molto semplice, basta sommarele potenze di 2 rappresentate dagli 1 e avremo così il numero in base-10.

10 of 27

Conversione base-10 a base-2

Ci sono due metodi per farlo:

� Divisione e Modulo: Continuare a dividere per due e mantenere il resto

� Sottrazione: Testare se il numero è contenuto in un multiplo di due, se sìve lo segnate da parte e poi lo sottraete dal numero e continuate così

11 of 27

Conversione base-10 a base-2Divisione e modulo

� Più facilmente implementabile

Data: n: Numero base-10 da convertireResult: s: Numero convertito in base-2s = stringa vuota;while n>0 do

s = (n mod 2) + s;n = n div 2;

end

9710 =??

n s

9748 124 0112 0016 00013 000011 1000010 1100001

9710 = 11000012

12 of 27

Conversione base-10 a base-2Divisione e modulo

� Più facilmente implementabile

Data: n: Numero base-10 da convertireResult: s: Numero convertito in base-2s = stringa vuota;while n>0 do

s = (n mod 2) + s;n = n div 2;

end

9710 =??

n s

9748 124 0112 0016 00013 000011 1000010 1100001

9710 = 11000012

12 of 27

Conversione base-10 a base-2Divisione e modulo

� Più facilmente implementabile

Data: n: Numero base-10 da convertireResult: s: Numero convertito in base-2s = stringa vuota;while n>0 do

s = (n mod 2) + s;n = n div 2;

end

9710 =??

n s

9748 124 0112 0016 00013 000011 1000010 1100001

9710 = 11000012

12 of 27

Conversione base-10 a base-2Sottrazione

� Terribile se usato con numeri grandi

Data: n: Numero base-10 da convertireResult: s: Numero convertito in base-2s = stringa vuota;i = massima potenza di due contenuta in n;repeat

if i ≤ n then

s = s + �1�;n = n - i;

else

s = s + �0�;end

i = i div 2;

until i=0 ;

11710 =??

n i s

117 6453 32 121 16 115 8 1115 4 11101 2 111011 1 1110100 0 1110101

11710 = 11101012

13 of 27

Conversione base-10 a base-2Sottrazione

� Terribile se usato con numeri grandi

Data: n: Numero base-10 da convertireResult: s: Numero convertito in base-2s = stringa vuota;i = massima potenza di due contenuta in n;repeat

if i ≤ n then

s = s + �1�;n = n - i;

else

s = s + �0�;end

i = i div 2;

until i=0 ;

11710 =??

n i s

117 6453 32 121 16 115 8 1115 4 11101 2 111011 1 1110100 0 1110101

11710 = 11101012

13 of 27

Conversione base-10 a base-2Sottrazione

� Terribile se usato con numeri grandi

Data: n: Numero base-10 da convertireResult: s: Numero convertito in base-2s = stringa vuota;i = massima potenza di due contenuta in n;repeat

if i ≤ n then

s = s + �1�;n = n - i;

else

s = s + �0�;end

i = i div 2;

until i=0 ;

11710 =??

n i s

117 6453 32 121 16 115 8 1115 4 11101 2 111011 1 1110100 0 1110101

11710 = 11101012

13 of 27

Somma di naturaliUn'introduzione, prima

A B Carry C Carry

0 0 0 0 01 0 0 1 00 1 0 1 01 1 0 0 10 0 1 1 01 0 1 0 10 1 1 0 11 1 1 1 1

A + B + Carry = C + Carry

14 of 27

Somma di naturaliEsempio

11710 + 9710 = 11101012 + 11000012 = ?

1 1 1 0 1 0 1 +1 1 0 0 0 0 1 =

1 1 0 1 0 1 1 0

110101102 = 21410

15 of 27

Somma di naturaliEsempio

11710 + 9710 = 11101012 + 11000012 = ?

1 1 1 0 1 0 1 +1 1 0 0 0 0 1 =

1 1 0 1 0 1 1 0

110101102 = 21410

15 of 27

Somma di naturaliEsempio

11710 + 9710 = 11101012 + 11000012 = ?

1 1 1 0 1 0 1 +1 1 0 0 0 0 1 =

1 1 0 1 0 1 1 0

110101102 = 21410

15 of 27

Sottrazione di naturaliOperazione di base e �Il prestito�

Come nella somma si va da destra a sinistra seguendo delle regole banali:

A 0 1 1 0

B 0 0 1 1

A-B 0 1 0 1

Nell'ultimo caso bisogna scorrere a sinistra �nchè non si trova un 1,invertendo il valore di tutte le cifre incontrate, 1 compreso.

10..0→ 01..1

16 of 27

Sottrazione di naturaliEsempio

21410 − 11710 = 110101102 − 11101012 = ?

1 1 0 1 0 1 1 0 -1 1 1 0 1 0 1 =

1 1 0 0 0 0 1

11000012 = 9710

17 of 27

Sottrazione di naturaliEsempio

21410 − 11710 = 110101102 − 11101012 = ?

1 1 0 1 0 1 1 0 -1 1 1 0 1 0 1 =

1 1 0 0 0 0 1

11000012 = 9710

17 of 27

Sottrazione di naturaliEsempio

21410 − 11710 = 110101102 − 11101012 = ?

1 1 0 1 0 1 1 0 -1 1 1 0 1 0 1 =

1 1 0 0 0 0 1

11000012 = 9710

17 of 27

Moltiplicazione di naturaliMoltiplicazione (e divisione) per potenze di due

Ok, se dobbiamo moltiplicare un numero base-10 per 10 dobbiamo...

Aggiungere uno 0 a destra.

18 of 27

Moltiplicazione di naturaliMoltiplicazione (e divisione) per potenze di due

Ok, se dobbiamo moltiplicare un numero base-10 per 10 dobbiamo...

Aggiungere uno 0 a destra.

18 of 27

Moltiplicazione di naturaliMoltiplicazione (e divisione) per potenze di due, cont.

Nel caso dei numeri base-2, aggiungere uno 0 a destra signi�ca moltiplicare ilnumero per 2, mentre eliminando la prima cifra a desra signi�ca dividere per 2.

Questa operazione è chiamata shifting, utilizzata spesso dai compilatori perottimizzare la moltiplicazione.

19 of 27

Moltiplicazione di naturaliMoltiplicazione tra due Naturali

Moltiplicare due numeri base-2 naturali altro non è che l'applicazione dishifting multipli e poi della somma sui risultati degli shifting.

Alla �ne non è di�erente dalla moltiplicazione in base-10, solo che è piùsemplice perché o bisogna sommare uno dei due moltiplicatori shiftati o nulla.

20 of 27

Moltiplicazione di naturaliEsempio

1310x1710 = 11012x100012 = ?

1 1 0 1 x1 0 0 0 1 =

1 1 0 1 +- +

- +- +

1 1 0 1

1 1 0 1 1 1 0 1

110111012 = 22110

21 of 27

Moltiplicazione di naturaliEsempio

1310x1710 = 11012x100012 = ?

1 1 0 1 x1 0 0 0 1 =

1 1 0 1 +- +

- +- +

1 1 0 1

1 1 0 1 1 1 0 1

110111012 = 22110

21 of 27

Moltiplicazione di naturaliEsempio

1310x1710 = 11012x100012 = ?

1 1 0 1 x1 0 0 0 1 =

1 1 0 1 +- +

- +- +

1 1 0 1

1 1 0 1 1 1 0 1

110111012 = 22110

21 of 27

Error CheckingOver�ow/Under�ow

Fino ad ora abbiamo sempre fatto calcoli pensando diavere cifre in�nite a nostra disposizone....Purtroppo, la realtà ci impone dei limiti di spazio,dettati dall'architettura di basso livello del calcolatore.A causa di questo si possono rischiare errori dasemplicemente stupidi a catastro�ci.

Tipo quello che è successo all'Ariane 5 501, missileGeostationary Transfer Orbit (GTO), progettato dallaAstrium per l'ESA. A causa di un errore di conversionee di mancato controllo degli Over�ow la casa diproduzione ha bruciato 370M$ in circa 40 secondi.

22 of 27

Error CheckingOver�ow/Under�ow

Fino ad ora abbiamo sempre fatto calcoli pensando diavere cifre in�nite a nostra disposizone....Purtroppo, la realtà ci impone dei limiti di spazio,dettati dall'architettura di basso livello del calcolatore.A causa di questo si possono rischiare errori dasemplicemente stupidi a catastro�ci.

Tipo quello che è successo all'Ariane 5 501, missileGeostationary Transfer Orbit (GTO), progettato dallaAstrium per l'ESA. A causa di un errore di conversionee di mancato controllo degli Over�ow la casa diproduzione ha bruciato 370M$ in circa 40 secondi.

22 of 27

Error CheckingOver�ow/Under�ow cont.

Possiamo immaginare i numeri in base-2 con una quantità limitata di cifrecome se fossero posti intorno ad una ruota:

23 of 27

Error CheckingOver�ow/Under�ow cont.

Nel caso precedente il numero è formato al massimo da 3 cifre binarie, quindi,se noi provassimo a calcolare 1112 + 12 il risultato dovrebbe essere 10002, soloche non abbiamo abbastanza cifre per contenere tutte le informazioni.Il risultato sarà quindi 0002. In pratica, 710 + 110 = 010.

Fortunatamente le ALU contengono delle �ag che indicano se è avvenuto unover�ow (o un under�ow) durante un'operazione aritmetica.

24 of 27

Error CheckingOver�ow/Under�ow cont.

Nel caso precedente il numero è formato al massimo da 3 cifre binarie, quindi,se noi provassimo a calcolare 1112 + 12 il risultato dovrebbe essere 10002, soloche non abbiamo abbastanza cifre per contenere tutte le informazioni.Il risultato sarà quindi 0002. In pratica, 710 + 110 = 010.

Fortunatamente le ALU contengono delle �ag che indicano se è avvenuto unover�ow (o un under�ow) durante un'operazione aritmetica.

24 of 27

Aggiungere il segno agli interi

Il supporto per i numeri negativi è stato aggiunto in vari modi2:

� Segno-e-Modulo: Un bit fa da segno, gli altri sono il valore del numero

� Complemento ad 1: Per avere il numero negativo invertiamo tutti i bit.

� Complemento a 2: Facciamo il complemento ad 1 e poi sommiamo 1.

2I quali dimezzano il numero massimo rappresentabile25 of 27

Aggiungere il segno agli interiRappresentazione in Segno-e-Modulo

� Più vicino (Anzi, esattamente IL) al metodo usato per la rappresentazionedei negativi nei �oat

� Permette l'esistenza di due 0: +0 e −0� Richiede una logica più complessa per venir implementato.

26 of 27

Aggiungere il segno agli interiComplemento a 2

Il complemento ad 1 è migliore del Segno-e-Modulo per gli interi, ma haancora dei problemi, tipo il doppio 0 oppure il fatto che è macchinoso a causadell'o�set di −1 dei numeri negativi.Per questo è stato inventato il complemento a 2:

� Solo uno 0

� Trasparente per somma, sottrazione e moltiplicazione

� Per questo molto più facilmente implementabile a livello hardware

27 of 27

top related