1 - UNISA
Transcript
1 - UNISA
Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 26 settembre 2016 Architettura degli Elaboratori L’ Architettura (informatica) è l’insieme dei criteri in base ai quali è progettato e realizzato un sistema informatico. L’ Elaboratore (o calcolatore, o computer) è una macchina in grado di eseguire autonomamente sequenze di operazioni logiche-aritmetiche sui dati in ingresso (input) e restituire i risultati di tali operazioni in uscita (output) Modello di calcolo Achitettura Harward La memoria è suddivisa in: Memoria dati e Memoria istruzioni Studieremo il processore MIPS • Un processore vero (vedi Appendice E) • Sarà il nostro esempio di riferimento per studiare i principi di progettazione di un processore Architettura Harward Modificata (Pipeline) Studieremo UN processore particolare, ma per astrarre concetti fondamentali della architettura degli elaboratori Wikipedia dice…. • L'architettura MIPS (acronimo dell’inglese Microprocessor without Interlocked Pipeline Stages) è un’architettura informatica per microprocessori RISC sviluppata dalla MIPS Computer Systems Inc. (oggi MIPS Technologies Inc.). • Nel 1981 il professore John L. Hennessy della Stanford University avviò un gruppo di ricerca sulle architetture RISC. Le ricerche del team di sviluppo portarono allo sviluppo della prima generazione di processori MIPS. • Il MIPS è utilizzato nel campo dei computer SGI, e ha trovato grossa diffusione nell'ambito dei sistemi embedded, dei devices di Windows CE e nei router di Cisco. • Le console Nintendo64, Sony PlayStation, SonyPlayStation2 e Sony PlayStation Portable utilizzano processori MIPS. • Il disegno dell'architettura e del set di istruzioni è semplice e lineare e viene spesso utilizzato come caso di studio nei corsi universitari indirizzati allo studio delle architetture dei processori. L'architettura dei processori MIPS ha influenzato le architetture di molti altri processori RISC tra i quali si segnala la famiglia DEC Alpha. Un altro MIPS…… MIPS Nel videogioco Super Mario 64, il coniglio si chiama Mips, con riferimento al processore MIPS del Nintendo 64! Specie: Coniglio Debutto in: Super Mario 64 (1997) Ultima apparizione: Mario Party 3 (cammeo) (2001) MIPS è un coniglio apparso nei sotterranei del castello della Principessa Peach in Super Mario 64. Quando Mario gli si avvicina, MIPS scappa e se il giocatore riesce ad acchiapparlo gli dona una Superstella. Dopo aver raccolto una cinquantina di Superstelle, MIPS ricompare nei sotterranei e dona al giocatore un'altra Superstella. In Super Mario 64 DS, al post di MIPS compaiono diversi conigli che donano al giocatore delle chiavi necessarie per sbloccare nuovi minigiochi. Insieme a Mario, MIPS è il primo personaggio ad essere stato creato all'interno del gioco. Inizialmente MIPS venne utilizzato per testare le capacità del Nintendo 64, ma alla fine è stato inserito all'interno del gioco per volere degli sviluppatori. In Mario Party 3, MIPS fa un cammeo nel tabellone Woody Woods. Il nostro obiettivo finale Una versione semplificata del processore MIPS. Lo schema contiene l’unità di controllo, il modulo aritmetico (ALU), la memoria Contenuti del corso Il corso si propone di introdurre l’architettura dei calcolatori ed i principi che sono alla base della loro progettazione. Verranno presentate struttura e funzionalità dell’architettura di un calcolatore moderno. Principali argomenti trattati durante il corso: 1) rappresentazione dell'informazione: - rappresentazione degli interi e algoritmi di conversione per interi (dec-bin, bin-dec)) - rappresentazione e aritmetica in complemento a due - rappresentazione in virgola mobile codifica ASCII 2) logica digitale: - algebra booleana - reti combinatorie e ALU - elementi di memorizzazione: flip-flop, register file e moduli combinatori 3) linguaggio assembler di una macchina RISC 4) implementazione della unità di elaborazione 5) misura delle prestazioni, miglioramento delle prestazioni mediante pipeline e gerarchie di memoria Il linguaggio dei computer Linguaggio dei computer I computer «parlano» in binario: Spento, acceso (dei circuiti elettrici) ON, OFF 1, 0 bit = binary digit Rappresentazione in binario Cosa possiamo rappresentare in binario? Numeri (interi, col segno, con la virgola) Parole (codificando le lettere) Istruzioni Programma «Informazione» Idea fondamentale su cui sono costruiti i calcolatori: programmi e dati rappresentati da numeri Rappresentazione in binario Quali/ quanti interi posso rappresentare con una sequenza di n bit? n=1 0 1 n=2 n=3 0 0 1 1 0 00 = 0 0 01 = 1 0 10 = 2 0 11 = 3 1 00 = 4 1 01 = 5 1 10 = 6 1 11 = 7 0=0 1=1 0=2 1=3 n=4 0 000 = 0 0 001 = 1 0 010 = 2 0 011 0 100 . 0 101 . 0 110 . 0 111 . 1 000 . 1 001 . . 1 010 1 011 1 100 1 101 = 13 1 110 = 14 1 111 = 15 Rappresentazione con n bit Con n bit è possibile rappresentare tutti i 2n interi compresi fra 0 e 2n-1 Perché? Prova Se con k bit posso rappresentare p sequenze distinte, con k+1 bit posso rappresentare 2p sequenze distinte 1 bit 2 bit 3 bit 2 sequenze distinte 4 sequenze distinte 8 sequenze distinte 4 bit 16 sequenze distinte . . . k bit . . . 2k sequenze distinte Si formalizza con una prova per induzione. Rappresentazione in binario n=1 0 1 n=2 n=3 0 0 1 1 0 00 = 0 0 01 = 1 0 10 = 2 0 11 = 3 1 00 = 4 1 01 = 5 1 10 = 6 1 11 = 7 0=0 1=1 0=2 1=3 Ma perché 101 in binario rappresenta 5 e 1101 = 13? n=4 0 000 = 0 0 001 = 1 0 010 = 2 0 011 0 100 . 0 101 . 0 110 . 0 111 . 1 000 . 1 001 . . 1 010 1 011 1 100 1 101 = 13 1 110 = 14 1 111 = 15 Notazione decimale … o notazione araba: 7 5 2 = 7 102 + 5 101 + 2 100 Ogni cifra ha un peso diverso secondo la posizione che occupa: 7 centinaia 5 decine 2 unità E’ una notazione posizionale Notazione binaria 1 0 1 = 1 22 + 0 21 + 1 20 = 5 1 1 0 1 = 1 23 +1 22 + 0 21 + 1 20 = 13 Ogni cifra ha un peso diverso secondo la posizione che occupa E’ una notazione posizionale Ambiguità Per distinguere le due rappresentazioni: (101)2 = (5) 10 (1101)2 = (13) 10 (1011)2 = (11) 10 Da binario a decimale N = (10110101)2 N = 1 27 + 0 26 + 1 25 + 1 24 + 0 23 + 1 22 + 0 21 + 1 20 N 2 7 25 2 4 2 2 2 0 128 32 16 4 1 181 Da decimale in binario N = (181)10 Cerco la più grande potenza di 2 contenuta in 181: 181 = 128 + 53 = 27 + 53 53 = 32 + 21 = 25 + 21 21 = 16 + 5 = 24 + 5 5 = 4+1 = 22+1 1 = 20 181 = 27+ 25+24 +22 + 20 20=1 21=2 22=4 23=8 24=16 25=32 26=64 27=128 28=256 181 = (10110101) 2 Nota: esiste un unico modo di esprimere un intero come somma di potenze distinte di 2 Vedremo altri «algoritmi» per i passaggi da decimale in binario e viceversa Notazione posizionale (in base b generica) La notazione posizionale è definita solo per 2 e 10? Potremmo definirla per 8? (1 0 1) 10 = 1 102 + 0 101 + 1 100 (1 0 1) 2 = 1 22 + 0 21 + 1 20 = (5) 10 (1 0 1) 8 = 1 82 + 0 81 + 1 80 = ( 65 ) 10 (1 1 0 1) 10 = 1 103 + 1 102 + 0 101 + 1 100 (1 1 0 1) 2 = 1 23 +1 22 + 0 21 + 1 20 = (13) 10 (1 1 0 1) 8 = 1 83 +1 82 + 0 81 + 1 80 = ( 577 ) 10 Notazione binaria per numeri naturali In base 2. I simboli ammessi sono 0,1. Una sequenza / stringa di 0 e 1, di lunghezza n an-1 an-2 …a1 a0 con ai {0, 1} per i = 0, 1, …, n-1 rappresenta l’intero N: N = (an-1 an-2 … a1 a0 )2 = = an-1 2n-1 + an-2 2n-2 + … + a1 21 + a0 20 In notazione compatta: n 1 i N ai 2 i 0 Notazione posizionale (in base b generica) In base b. I simboli ammessi sono 0,1, … , b-1. Una sequenza / stringa di 0, 1, … , b-1, di lunghezza n an-1 an-2 …a1 a0 con ai {0, 1, … , b-1} per i = 0, 1, …, n-1 rappresenta l’intero N: N = (an-1 an-2 … a1 a0 )b = = an-1 bn-1 + an-2 bn-2 + … + a1 b1 + a0 b0 n 1 In notazione compatta: i N ai b i 0 Esempi (234)10 2 102 3 10 4 23410 (234)8 2 82 3 8 4 15610 (234)16 2 162 3 16 4 56410 (101)10 1 102 0 10 1 10110 (101)8 1 82 0 8 1 6510 (101)2 1 22 0 2 1 510 Esercizio • Da cosa sono caratterizzati i numeri pari in binario? (11010)2 è pari? • Dimostrare nel modo più formale, preciso e convincente la vostra affermazione. Algoritmi di conversione binario decimale • Da binario a decimale: moltiplico ogni cifra per l’opportuna potenza di 2 e poi sommo • Da decimale a binario: esprimo il numero come somma di potenze di 2, partendo dalla più grande potenza di 2 minore del numero Esistono altri «algoritmi» per convertire un numero dalla rappresentazione binaria alla decimale e viceversa. Bisogna conoscere più metodi di soluzione! Per scegliere il più adatto, veloce, …. Mai accontentarsi! Algoritmi di conversione Problema della conversione da binario a decimale Dati: n bit an-1, an-2, … , a1, a0 Risultato: l’intero N tale che N = (an-1 an-2…a1a0)2 Algoritmo = procedimento di calcolo che risolve il problema con una sequenza finita di passi elementari Problema della conversione da decimale a binario Dati: un intero N Risultato: n bit an-1, an-2 , … , a1, a0 tali che N = (an-1 an-2…a1a0)2 Verso un algoritmo di conversione da b=10 b = 10 N = (3752) 10 n=4 (3 7 5 2) 10 = 3 103 + 7 102 + 5 101 + 2 100 oppure lo possiamo ottenere così, leggendo la stringa da sinistra verso destra (immaginate di non sapere quante cifre saranno): 3 3 10 + 7 = 37 37 10 + 5 = 375 375 10 + 2 = 3752 S3 = S2 = S1 = S0 = 3 37 375 3752 = N 3752 3 7 52 3752 3752 Idea: 3 7 5 2 = 3 103 + 7 102 + 5 10 + 2 = = (3 102 + 7 10 + 5 ) 10 + 2 = = ( (3 10 + 7) 10 + 5 ) 10 + 2 = = ( ( (3) 10 + 7) 10 + 5 ) 10 + 2 Verso un algoritmo di conversione da b=2 b=2 N = (1101) 2 n=4 (1 1 0 1) 2 = 1 23 + 1 22 + 0 21 + 1 20 oppure lo possiamo ottenere così: Idea: 1 12+1=3 32+0=6 6 2 + 1 = 13 S3 = S2 = S1 = S0 = 1 3 6 13 = N 1101 1101 1101 1101 1 1 0 1 = 1 23 + 1 22 + 0 2 + 1 = = (1 22 + 1 2+ 0 ) 2 + 1 = = ( (1 2 + 1) 2 + 0 ) 2 + 1 = = ( ( (1) 2 + 1) 2 + 0 ) 2 + 1 Verso un algoritmo di conversione da b=2 N = (an-1 an-2…a1a0)2 N = an-12n-1+ an-22n-2+ …+ a12+ a0 = (an-12n-2+ an-22n-3+ …+ a22 + a1) 2 + a0 S0 = S1 2 + a0 = ( (an-12n-3+ an-12n-4+ …+ a2) 2 + a1) 2 + a0 S1 = S2 2 + a1 ….. ….. = ((… (an-12+ an-2) 2 + … + a2) 2 + a1)2 + a0 = ((… ( (an-1) 2+ an-2) 2 + … + a2) 2 + a1)2 + a0 S2 = S3 2 + a2 ….. Sn-2 = Sn-1 2 + an-2 Sn-1 = an-1 Algoritmo di conversione: binario in decimale MSD=cifra più significativa N = (an-1 an-2…a1a0)2 LSD=cifra meno significativa N = ((… ( ( an-1) 2+ an-2) 2 + … + a2) 2 + a1)2 + a0 N= S0 = S1 2 + a0 S1 = S2 2 + a1 S2 = S3 2 + a2 ….. Sn-2 = Sn-1 2 + an-2 Sn-1 = an-1 Dal basso verso l’alto: da an-1 a a0 ; da MSD a LSD Sn-1 = an-1 Sn-2 = an-2 + 2Sn-1 Sn-3 = an-3 + 2Sn-2 ….. Si = ai + 2Si+1 ….. S0 = a0+2S1 S0 =N Sn-1 = an-1 Sn-2 = an-2+2Sn-1 Sn-3 = an-3+2Sn-2 ….. Si = ai+2Si+1 ….. S0 =N Esempio 1 N = (a7 a6 a5 a4 a3 a2 a1a0)2 (1 0 1 1 0 1 0 1)2 S7 = a7 = 1 S6 = a6+2S7 = 0 + 2 = 2 S5 = a5+2S6 = 1 + 4 = 5 S4 = a4+2S5 = 1 + 10 = 11 S3 = a3+2S4 = 0 + 22 = 22 S2 = a2+2S3 = 1 + 44 = 45 S1 = a1+2S2 = 0 + 90 = 90 S0 = a0+2S1 = 1 + 180 = 181 n=8 Esempio 2 (11101001)2 n=8 S7 = a7 = 1 S6 = a6+2S7 = 1 + 2 = 3 S5 = a5+2S6 = 1 + 6 = 7 S4 = a4+2S5 = 0 + 14 = 14 S3 = a3+2S4 = 1 + 28 = 29 S2 = a2+2S3 = 0 + 58 = 58 S1 = a1+2S2 = 0 + 116 = 116 S0 = a0+2S1 = 1 + 232 = 233 Esempio 3 (11111111)2 n=8 S7 = a7 = 1 S6 = a6+2S7 = 1 + 2 = 3 S5 = a5+2S6 = 1 + 6 = 7 S4 = a4+2S5 = 1 + 14 = 15 S3 = a3+2S4 = 1 + 30 = 31 S2 = a2+2S3 = 1 + 62 = 63 S1 = a1+2S2 = 1 + 126 = 127 S0 = a0+2S1 = 1 + 254 = 255 Algoritmo di conversione: decimale in binario N = (an-1 an-2…a1a0 )2 Dato: N. Risultato: an-1 , an-2 , …, a1 , a0 con ai = 0 o 1 Procedura inversa: dall’alto verso il basso da a0 ad an-1; da LSD a MSD a0 ed S1 sono rispettivamente il resto e il N= S0 = S1 2 +a0 quoziente della divisione di N= S0 per 2. S1 = S2 2 + a1 S2 = S3 2 + a2 …… Si = Si+1 2 + ai …… Sn-2 = Sn-1 2 + an-2 Sn-1 = an-1 …. ai ed Si+1 sono rispettivamente il resto e il quoziente della divisione di Si per 2. …. Fino ad ottenere un Si =0. Algoritmo delle divisioni successive Esempio 1 (decimale in binario) N=152 S0 = N = a0+2 S1 S1 = a1 + 2 S2 S2 = a2 + 2 S3 ….. Si = ai + 2 Si+1 ….. Sn-1 = an-1 N = (an-1 an-2…a1a0)2 S0 = a0+2S1 = 0 + 276 = 152 S1 = a1+2S2 = 0 + 2 38 = 76 S2 = a2+2S3 = 0 + 2 19 = 38 S3 = a3+2S4 = 1 + 2 9 = 19 S4 = a4+2S5 = 1 + 2 4 = 9 S5 = a5+2S6 = 0 + 2 2 = 4 152 : 2 = 76 con resto 0 S6 = a6+2S7 = 0 + 2 1 = 2 2 : 2 = 1 con resto 0 S7 = a7+2S8 = 1 + 2 0 =1 1 : 2 = 0 con resto 1 N = (10011000)2 76 : 2 = 38 con resto 0 38 : 2 = 19 con resto 0 19 : 2 = 9 con resto 1 9 : 2 = 4 con resto 1 4 : 2 = 2 con resto 0 STOP Riepilogo • Rappresentazione binaria con n bit • Algoritmi di conversione bin->dec e dec->bin [P] parr. 1.1, 1.2, 1.3.1