La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Fondamenti di Informatica

Presentazioni simili


Presentazione sul tema: "Fondamenti di Informatica"— Transcript della presentazione:

1 Fondamenti di Informatica
ENIAC Il primo calcolatore elettronico, l’ENIAC  Electronical Numerical Integrator and Calculator  nacque per esigenze belliche (per il calcolo di tavole balistiche). Venne commissionato dal Dipartimento di Guerra degli Stati Uniti all’Università della Pennsylvania, ed il suo prototipo fu realizzato alla fine della seconda guerra mondiale, nel 1946. L’ENIAC, per la cui costruzione furono usate valvole termoioniche, occupava una stanza lunga più di 30 metri e dissipava una quantità enorme di energia elettrica. L’impiego di componenti elettroniche, tuttavia, lo rendeva capace di eseguire 300 moltiplicazioni al secondo, molte più dei precedenti calcolatori elettromeccanici. Fondamenti di Informatica Monica Bianchini Dipartimento di Ingegneria dell’Informazione ENIAC (1946 ca.)

2 Sommario L’algebra di Boole Sistemi di numerazione
UNIVAC Il primo calcolatore concepito ed impostato come prodotto commerciale, fu realizzato da Eckert e Mauchly (gli stessi costruttori dell’ENIAC) per l’Ufficio Centrale di Statistica degli Stati Uniti. L’algebra di Boole Fu teorizzata dal matematico inglese George Boole (18101864) nel lavoro “Analisi Matematica della Logica”, pubblicato nel Include un insieme di operazioni su variabili logiche (o variabili booleane), che possono assumere i due soli valori true e false, indicati da 1 e 0. Le tecniche sviluppate nell’algebra booleana possono essere applicate all’analisi ed alla progettazione dei circuiti elettronici, poiché essi sono realizzati con dispositivi che possono assumere solo due stati. Su insiemi di costanti e variabili logiche possono essere definite funzioni che hanno esse stesse la caratteristica di assumere due soli valori. La definizione di una funzione booleana può essere effettuata per mezzo di una tabella di verità, che indica il valore della funzione in corrispondenza di ogni possibile configurazione dei valori degli argomenti. Le funzioni booleane possono essere scritte e manipolate anche con metodi algebrici, dato un insieme di funzioni (o operazioni) elementari tramite le quali poter esprimere ogni altra funzione. Sommario L’algebra di Boole da Analisi Matematica della Logica (1847) al progetto degli elaboratori digitali Sistemi di numerazione da decimale a binario, a esadecimale: l’alfabeto dell’elaboratore La rappresentazione dei dati e l’aritmetica degli elaboratori dai bit ai numeri, ai testi, alle immagini, alla musica, ai video in digitale La struttura del calcolatore da ENIAC al PC, ad HAL2000: cosa c’è “sotto” ? UNIVAC (1951)

3 L’algebra di Boole

4 Algebra Booleana Contempla due costanti 0 e 1 (falso e vero)
Le operazioni AND e OR sono operazioni binarie, l’operazione NOT è unaria. Nella valutazione delle espressioni booleane esiste una relazione di precedenza fra gli operatori NOT, AND e OR, nell’ordine in cui sono stati elencati; le parentesi vengono utilizzate nel modo consueto. Algebra Booleana Contempla due costanti 0 e 1 (falso e vero) Corrispondono a due stati che si escludono a vicenda Possono descrivere lo stato di apertura o chiusura di un generico contatto o di un circuito a più contatti Si definiscono delle operazioni fra i valori booleani: AND, OR, NOT sono gli operatori fondamentali 1

5 L’operazione di OR Si definisce l’operazione di somma logica (OR): il valore della somma logica è il simbolo 1 se il valore di almeno uno degli operandi è il simbolo 1 0+0 = = = = 1 1 0+0 0+1 1 1 1 1+0 1+1

6 L’operazione di AND Si definisce l’operazione di prodotto logico (AND): il valore del prodotto logico è il simbolo 1 se il valore di tutti gli operandi è il simbolo 1 00 = 0 01 = 0 10 = 0 11 = 1 1 00 01 1 1 1 10 11

7 La negazione NOT Si definisce l’operatore di negazione (NOT): l’operatore inverte il valore della costante su cui opera 0 = 1 1 = 0 dalla definizione… 0 = 0 1 = 1

8 Variabili binarie Una variabile binaria indipendente può assumere uno dei due valori 0 e 1 Date n variabili binarie indipendenti la loro somma logica (OR) è x 1 x1+ x2+ …+ xn = 1 se almeno una xi vale 1 0 se x1= x2= …= xn = 0

9 AND e NOT con variabili binarie
L’elemento x’ = NOT(x) viene detto complemento di x. Il complemento è unico. AND e NOT con variabili binarie Date n variabili binarie indipendenti il loro prodotto logico (AND) è La negazione di una variabile x è x1 x2 … xn = 0 se almeno una xi vale 0 1 se x1= x2= …= xn = 1 x = 0 se x = 1 x = 1 se x = 0

10 Alcune identità Si verificano le uguaglianze Ad esempio…
0 è l’elemento neutro per l’operazione di OR; 1 è l’elemento neutro per l’AND. Gli elementi neutri sono unici. La legge x + x = x·x = x è detta legge dell’idempotenza. Alcune identità Si verificano le uguaglianze Ad esempio… x + 1 = 1 x + 0 = x x + x = x x  1 = x x  0 = 0 x  x = x x  1 = x x = 0 x = 1 01 = 0 1  1 = 1 OK!

11 Altre proprietà Per gli operatori AND e OR valgono le seguenti proprietà: Per l’operatore NOT si provano le seguenti identità: commutativa x1+x2 = x2+x x1 x2 = x2 x1 associativa x1+x2+x3 = x1+(x2+x3) x1 x2 x3 = x1(x2 x3) distributiva del prodotto rispetto alla somma x1 x2 + x1 x3 = x1(x2+x3) x + x = 1 x  x = 0 x = x

12 Configurazioni delle variabili
Date n variabili binarie indipendenti x1, x2,…, xn, queste possono assumere 2n configurazioni distinte Una configurazione specifica è individuata univocamente da un AND di tutte le variabili, dove quelle corrispondenti ai valori 0 compaiono negate Ad esempio per n=3 si hanno 8 configurazioni x1x2x3 x1x2x3 010

13 Funzioni logiche Una variabile y è una funzione delle n variabili indipendenti x1, x2,…, xn, se esiste un criterio che fa corrispondere in modo univoco ad ognuna delle 2n configurazioni delle x un valore di y Una rappresentazione esplicita di una funzione è la tabella di verità, in cui si elencano tutte le possibili combinazioni di x1, x2, …, xn, con associato il valore di y y = F(x1,x2,…,xn) x1 x y y = x1+x2

14 Una tabella di verità Date 3 variabili booleane (A,B,C) si scrive la funzione F che vale 1 quando solo due di esse hanno valore 1 A B C F Si può scrivere la funzione come somma logica delle configurazioni corrispondenti agli 1 F(A,B,C) = ABC + ABC + ABC Forma canonica: somma di prodotti (OR di AND)  tutte le funzioni logiche si possono scrivere in questa forma

15 ESEMPI La legge dell’assorbimento x1+ x1· x2 = x1 Le leggi di De Morgan (x1+ x2)' = x1’· x2’ ( x1 · x2)’ = x1’+ x2’ ( ’ un modo alternativo per indicare la negazione). Dalle leggi di De Morgan si evince che la scelta delle funzioni OR, AND e NOT, come funzioni primitive, è ridondante. L’operazione logica AND può essere espressa in funzione delle operazioni OR e NOT; in modo analogo, l’operazione OR può essere espressa tramite AND e NOT. Le relazioni stabilite sono generalmente applicate nelle trasformazioni di funzioni booleane in altre equivalenti, ma di più facile realizzazione circuitale. Un esempio: lo XOR La funzione XOR verifica la disuguaglianza di due variabili L’espressione come somma di prodotti è quindi... x1 x2 XOR XOR = x1x2 + x1x2

16 Un circuito con due interruttori
I due interruttori corrispondono a due variabili (A,B) a valori booleani  le variabili assumono i due valori 0 e 1 che corrispondono alle due posizioni dell’interruttore L L A B A B A 1 1 1 1 B A B A=0 B=0 A=0 B=1 L L A B A B 1 1 A B A 1 1 B L = AB+AB A=1 B=0 A=1 B=1

17 Un esercizio Progettare un circuito per accendere e spegnere una lampada da uno qualsiasi di tre interruttori indipendenti A B C 1 Cambia lo stato di un interruttore qualsiasi L = 0 L = 1

18 Analisi delle combinazioni
Si considera cosa succede a partire dalla configurazione di partenza, cambiando lo stato di un interruttore per volta L = 1 L = 0 A B C A B C 1 1 1 L = 0 L = 1 A B C 1 L = 1 L = 0 A B C A B C A B C 1 1 1 1 1 L = 1 L = 0 A B C A B C 1 1 1

19 Scrittura della funzione logica
Dalle otto combinazioni si ottiene la tabella di verità della funzione logica Si può scrivere la funzione L come somma logica di prodotti logici A B C L L = ABC + ABC + ABC + ABC

20 Come collegare gli interruttori
Si può manipolare l’espressione di L usando la proprietà distributiva dell’AND rispetto all’OR L = ABC + ABC + ABC + ABC L = A (BC + BC) + A (BC + BC) C C B B B B A C A C A B C A B C B C B C 1 0 0 1 0 1

21 Sistemi di numerazione

22 Sistemi di numerazione
Sistemi di numerazione posizionali: La base del sistema di numerazione Le cifre del sistema di numerazione Il numero è scritto specificando le cifre in ordine ed il suo valore dipende dalla posizione relativa delle cifre Esempio: Il sistema decimale (Base 10) Cifre : 5641 = 5· · · ·100 Posizione:

23 Sistemi in base B La base definisce il numero di cifre diverse nel sistema di numerazione La cifra di minor valore è sempre lo 0; le altre sono, nell’ordine, 1,2,…,B1; se B>10 occorre introdurre B10 simboli in aggiunta alle cifre decimali Un numero intero N si rappresenta con la scrittura (cncn-1…c2c1c0)B N = cnBn+cn-1Bn c2B2+c1B1+c0B0 cn è la cifra più significativa, c0 la meno significativa Un numero frazionario N’ si rappresenta come (0,c1c2…cn)B N’ = c1B-1+c2B cnB-n

24 Numeri interi senza segno
Con n cifre in base B si rappresentano tutti i numeri interi positivi da 0 a Bn1 (Bn numeri distinti) Esempio: base 10 00 01 02 …. 98 99 102 = 100 valori 2 cifre: da 0 a 1021 = 99 Esempio: base 2 00 01 10 11 2 cifre: da 0 a 221 = 3 22 = 4 valori

25 Il sistema binario (B=2)
La base 2 è la più piccola per un sistema di numerazione Cifre: 0 1  bit (binary digit) Forma polinomia Esempi: (101101)2 = 125 + 024 + 123 + 122 + 021 + 120 = = (45)10 (0,0101)2 = 0   2-4 = , ,0625 = (0,3125)10 (11,101)2 = 121 + 120 + 1   = , ,125 = (3,625)10

26 Dal bit al byte Un byte è un insieme di 8 bit (un numero binario a 8 cifre) Con un byte si rappresentano i numeri interi fra 0 e 281 = 255 È l’elemento base con cui si rappresentano i dati nei calcolatori Si utilizzano sempre dimensioni multiple (di potenze del 2) del byte: 2 byte (16 bit), 4 byte (32 bit), 8 byte (64 bit)… b7b6b5b4b3b2b1b0 ……………. 28 = 256 valori distinti

27 Da decimale a binario  1 Esempio: convertire in binario (43)10
Si divide ripetutamente il numero intero decimale per 2 fino ad ottenere un quoziente nullo; le cifre del numero binario sono i resti delle divisioni; la cifra più significativa è l’ultimo resto Esempio: convertire in binario (43)10 resti 43 : 2 = : 2 = 10 : 2 = 5 : 2 = : 2 = 1 : 2 = bit più significativo (43)10 = (101011)2

28 Da decimale a binario  2 Si moltiplica ripetutamente il numero frazionario decimale per 2, fino ad ottenere una parte decimale nulla o, dato che la condizione potrebbe non verificarsi mai, per un numero prefissato di volte; le cifre del numero binario sono le parti intere dei prodotti successivi; la cifra più significativa è il risultato della prima moltiplicazione Esempio: convertire in binario (0,21875)10 e (0,45)10 0,45  2 = 0,9 0,90  2 = 1,8 0,80  2 = 1,6 0,60  2 = 1,2 0,20  2 = 0,4 etc. (0.45)10  ( )2 0,21875  2 = 0 ,4375 0,  2 = 0,875 0,  2 = 1,75 0,  2 = 1,5 0,  2 = 1,0 ( )10 = ( )2

29 Da binario a decimale Esempio: convertire in decimale (101011)2
Esercizio Si verifichino le seguenti corrispondenze: (110010)2=(50)10 ( )2=(102)10 (1111)2=(17)10 (11011)2=(27)10 (100001)2=(39)10 ( )2=(237)10 Da binario a decimale Oltre all’espansione esplicita in potenze del 2  forma polinomia… …si può operare nel modo seguente: si raddoppia il bit più significativo e si aggiunge al secondo bit; si raddoppia la somma e si aggiunge al terzo bit… si continua fino al bit meno significativo (101011)2 = 125 + 024 + 123 + 022 + 121 + 120 = (43)10 Esempio: convertire in decimale (101011)2 bit più significativo 1 x 2 = x 2 = 5 x 2 = 10 x 2 = x 2 = = 43 (101011)2 = (43)10

30 Sistema esadecimale La base 16 è molto usata in campo informatico
Cifre: A B C D E F La corrispondenza in decimale delle cifre oltre il 9 è A = (10) D = (13)10 B = (11) E = (14)10 C = (12) F = (15)10 Esempio: (3A2F)16 = 3   160 =    = (14895)10

31 Da binario a esadecimale
Una cifra esadecimale corrisponde a 4 bit Si possono rappresentare numeri binari lunghi con poche cifre (1/4) La conversione da binario ad esadecimale è immediata, raggruppando le cifre binarie in gruppi di 4 (da destra) e sostituendole con le cifre esadecimali secondo la tabella precedente 0 corrisponde a 4 bit a 0 A B C D E F F corrisponde a 4 bit a 1

32 Dai bit all’hex Un numero binario di 4n bit corrisponde a un numero esadecimale di n cifre Esempio: 32 bit corrispondono a 8 cifre esadecimali D B F (D91B437F)16 Esempio: 16 bit corrispondono a 4 cifre esadecimali F F (00FF)16

33 Da esadecimale a binario
La conversione da esadecimale a binario si ottiene espandendo ciascuna cifra con i 4 bit corrispondenti Esempio: convertire in binario il numero esadecimale 0x0c8f Notazione usata in molti linguaggi di programmazione per rappresentare numeri esadecimali c f Il numero binario ha 4 x 4 =16 bit

34 Esempi  1 In qualsiasi base, l’essere il sistema di numerazione posizionale, impone che combinazioni diverse di cifre uguali rappresentino numeri diversi; ad esempio: (319)10  (193)10 (152)6  (512)6, infatti... (152)6=162+561+260= =(68)10 (512)6=562+161+260= =(188)10 Numeri che hanno identica rappresentazione, in basi diverse, hanno valori diversi: (234)10  (234)8 , infatti... (234)8 = 282 + 381 + 480 = 264 + 38 + 4 = = (156)10 Osservazione: più piccola è la base, minore è il valore del numero rappresentato dalla stessa sequenza di cifre

35 Esempi  2 La notazione posizionale si applica anche per il calcolo del valore dei numeri frazionari, infatti... (0,872)10 = 8101 + 7102 + 2103 = 8/10 + 7/ /1000 = 0,8 + 0,07 + 0,002 Quante cifre occorreranno per rappresentare il numero decimale 36 in base 2? Sappiamo che con n cifre si rappresentano i numeri da 0 a 2n1, quindi... per n=1 (con una cifra) si rappresentano 1  0,1 per n=2: 1  0...3 per n=3: 1  0...7 per n=4: 1  per n=5: 1  per n=6: 1  Effettivamente possiamo verificare che (100100)2=(36)10, infatti... 100100=125+024+023+122+021+020 = = 36 con 6 cifre necessarie per la codifica del numero in base 2

36 Esempi  3 Quesito: Per quale base B risulterà vera l’uguaglianza
= 102 ? Se i numeri sono rappresentati in base B, sappiamo che: (17)B = 1B1+7B0 = B+7 (41)B = 4B1+1B0 = 4B+1 (22)B = 2B1+2B0 = 2B+2 (102)B = 1B2+0B1+2B0 = B2+2 da cui... B+7+4B+1+2B+2 = 7B+10 = B2+2  Si ottiene un’equazione di 2° grado: B2  7B  8 = 0 Risolvendo:  = = 81 B = (7   )/2 = (7+9)/2 = 8 È la soluzione! (79)/2 = 1 Non può essere una base

37 La rappresentazione dei dati e l’aritmetica degli elaboratori

38 Numeri interi positivi
I numeri interi positivi sono rappresentati all’interno dell’elaboratore utilizzando un multiplo del byte (generalmente 2/4 byte) Se l’intero si rappresenta con un numero di cifre minore, vengono aggiunti zeri nelle cifre più significative Esempio: 12 viene rappresentato in un byte come…

39 Numeri con segno Per rappresentare numeri con segno, occorre utilizzare un bit per definire il segno del numero Si possono usare 3 tecniche di codifica Modulo e segno Complemento a 2 Complemento a 1

40 Modulo e segno Il bit più significativo rappresenta il segno: 0 per i numeri positivi, 1 per quelli negativi Esiste uno zero positivo (00…0) e uno zero negativo (10…0) Se si utilizzano n bit si rappresentano tutti i numeri compresi fra (2n11) e +2n11 Esempio: con 4 bit si rappresentano i numeri fra 7 ((231)) e +7 (231) 1000 0 1001 1 1010 2 1011 3 1100 4 1101 5 1110 6 1111 7 positivi negativi

41 Complemento a 2 Il complemento a 2 di un numero binario (N)2 a n cifre è il numero Tale numero si ottiene… Effettuando il complemento a 1 del numero di partenza (negazione di ogni cifra): si trasforma ogni 0 in 1 e ogni 1 in 0 Aggiungendo 1 al numero ottenuto Oppure: a partire da destra, lasciando invariate tutte le cifre fino al primo 1 compreso, quindi invertendo il valore delle rimanenti 2n(N)2 = 10……0(N)2 { n 28 281 N 281N 281N+1 complemento a 1 + 1

42 Interi in complemento a 2
I numeri positivi sono rappresentati in modulo e segno I numeri negativi hanno un 1 nella posizione più significativa e sono rappresentati in complemento a 2 Lo zero è rappresentato come numero positivo (con una sequenza di n zeri) Il campo dei numeri rappresentabili è da 2n1 a +2n11 Esempio: numeri a 4 cifre 1000 8 1001 7 1010 6 1011 5 1100 4 1101 3 1110 2 1111 1 Nota: 8

43 Interi a 16 bit Numeri interi rappresentati su 16 bit in complemento a 2: Il più grande numero intero positivo è 2151=(32767)10 0x F F F Il più piccolo numero intero negativo è 215=(32768)10 0x 1 Il numero intero –1 è rappresentato come 0x F F F F 1

44 Addizione binaria Le regole per l’addizione di due bit sono
L’ultima regola è… (1)2+(1)2 = (10)2 … (1+1=2)10 !! 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 con riporto di 1 Esempio riporti 181 91+ 90

45 Sottrazione binaria  1 Le regole per la sottrazione di due bit sono
La sottrazione può divenire complicata: quando si ha una richiesta sulla cifra precedente a sinistra, che è uno 0, l’operazione si propaga a sinistra fino alla prima cifra ad 1 del sottraendo 0  0 = 0 1  0 = 1 1  1 = 0 10  1 = 1 con prestito di 1 dalla cifra precedente a sinistra Esempio 0 10 1 0 1 20 25  5

46 { Sottrazione binaria – 2
Utilizzando la rappresentazione in complemento a 2, addizione e sottrazione sono trattate come un’unica operazione si trascura il bit n +1 N1N2 = N1+(2nN2)2n { complemento a 2 di N2: (N2) Si calcola il complemento a 2 di N2 Si somma N1 con il complemento a 2 di N2 Si trascura il bit più significativo del risultato Esempio: (010001)2(000101)2 = (17)10(5)10 (12)10

47 Rappresentazioni in complemento
Sono utili perché l’operazione di somma può essere realizzata non curandosi del bit di segno In complemento a 1 (più semplice da calcolare)… Zero ha due rappresentazioni: e La somma bit a bit funziona “quasi sempre” In complemento a 2… Zero ha una sola rappresentazione La somma bit a bit funziona sempre (6) 11010 = (5) (12) (6) 10101 = (10) (4)

48 Overflow L’overflow si ha quando il risultato di un’operazione non è rappresentabile correttamente con n bit Per evitare l’overflow occorre aumentare il numero di bit utilizzati per rappresentare gli operandi C’è overflow se c’è riporto al di fuori del bit di segno e non sul bit di segno, o se c’è riporto sul bit di segno, ma non al di fuori Esempio: 5 bit  [16,+15] 01010 11000 14 + 10 24 10110 101110 8 + 10 18 8 +14 Punteggio nei vecchi videogame… sorpresa per i campioni! = = 32768

49 Moltiplicazione binaria
Le regole per la moltiplicazione di due bit sono Moltiplicare per 2n corrisponde ad aggiungere n zeri in coda al moltiplicando 0  0 = 0 0  1 = 0 1  0 = 0 1  1 = 1 Esempio x 101 x =  16 = 24

50 Divisione binaria La divisione binaria di A per B viene calcolata in modo analogo alla divisione decimale, così da ottenere un quoziente Q ed un resto R, tali che A = BQ + R La divisione binaria si compone di una serie di sottrazioni Dividere per 2n equivale a scorrere il numero a destra di n posizioni; le cifre scartate costituiscono il resto ( ^ ^ ^ 1 1 1 1 0 1 1 0 0 54 = 510 + 4  = 11 con resto 11 51:16 = 3 con resto 3

51 Esercizi Esercizio 1 Esercizio 2
Assumendo che un elaboratore rappresenti i numeri interi con segno su quattro bit, si calcolino entrambi i membri della seguente identità: (AC)+B = (A+B)C, con A=7, B=5, C=7. Si ottiene lo stesso risultato dal calcolo dei due membri? Discutere le motivazioni della risposta. Esercizio 2 Si determini, se esiste, la base b di un sistema di numerazione tale che (842)b = (1202)10 Si determini, se esiste, la base b  16 di un sistema di numerazione tale che (725)b  (626)b = (224)10

52 Numeri in virgola mobile
La rappresentazione dei numeri in virgola mobile è in relazione con la notazione scientifica (es. 1.2102=120) La IEEE ha previsto uno standard per la rappresentazione in virgola mobile singola precisione (32 bit = 4 byte) doppia precisione (64 bit = 8 byte) quadrupla precisione (128 bit = 16 byte) Singola precisione 31 23 22 8 bit 23 bit Segno Esponente Mantissa (o Caratteristica) Il valore è (1)S 1.M2E127 se E0 (1)S 0.M2 se E=0

53 Singola precisione Il numero più grande rappresentabile è 2128(2223)21296.811038 Il più piccolo numero positivo è 2127223=215071046 In totale si rappresentano 232 numeri distinti, metà positivi, metà negativi Circa metà dei numeri sono compresi fra 1 e 1 (E127<0) 2255 2 1 2 4 223 valori 0.5

54 L’aritmetica floatingpoint: addizione
Metodo per il calcolo dell’addizione Se le caratteristiche dei numeri sono diverse, si considera il numero con caratteristica minore e… 1.1 Si trasla la mantissa di un posto a destra 1.2 Si incrementa la caratteristica di 1, fino a quando le due La mantissa del risultato è ottenuta dalla somma delle due mantisse Se l’addizione comporta un riporto oltre la cifra più significativa, si trasla la mantissa del risultato a destra di un posto, il riporto nel bit più significativo, e si incrementa la caratteristica di 1 caratteristiche sono uguali, e corrispondono alla caratteristica del risultato

55 Un esempio di addizione
Supponiamo che per la rappresentazione floating–point vengano utilizzati otto bit, di cui uno per il segno, tre per la caratteristica e quattro per la mantissa La caratteristica del secondo operando è più piccola di una unità, quindi la mantissa deve scorrere di una posizione a destra La caratteristica del risultato è 110 e la mantissa è = 10001; la caratteristica deve essere aumentata di 1 e portata a 111, e la mantissa del risultato traslata a destra di una posizione: 1 3.25 N = (1)s0.M2E4 1 1.125 1001  0100 Codifica il numero 4 (dato che la caratteristica si rappresenta in eccesso a 4), ma il risultato corretto è 4.375: errore di troncamento 1

56 L’aritmetica floatingpoint: moltiplicazione
Metodo per il calcolo della moltiplicazione Si moltiplicano le due mantisse Si addizionano le due caratteristiche Si trasla a sinistra il prodotto delle due mantisse fino ad ottenere un 1 come cifra più significativa; si diminuisce la caratteristica di 1 per ogni traslazione eseguita Si tronca la mantissa al numero di bit utilizzati nella rappresentazione; la mantissa del prodotto è il risultato del troncamento Si sottrae l’eccesso alla somma delle caratteristiche, ottenendo la caratteristica del prodotto

57 Un esempio di moltiplicazione
Supponiamo che per la rappresentazione floating–point vengano utilizzati otto bit, di cui uno per il segno, tre per la caratteristica e quattro per la mantissa Moltiplicando le mantisse e sommando le caratteristiche si ottiene: La mantissa del risultato deve essere traslata di un posto a sinistra, e la somma delle caratteristiche deve essere decrementata di 1; infine la mantissa deve essere troncata alle 4 cifre significative e l’eccesso (100) sottratto alla caratteristica: 1 N = (1)s0.M2E4 1 1.125 M= E=111 Codifica il numero , ma il risultato corretto è : errore di troncamento 1

58 L’aritmetica degli elaboratori  1
L’aritmetica “interna” degli elaboratori differisce notevolmente dall’aritmetica classica Sebbene le stesse operazioni possano essere realizzate secondo modalità diverse su elaboratori diversi, si riscontrano alcune caratteristiche comuni: Rappresentazione binaria dei numeri Rango finito dei numeri rappresentabili Precisione finita dei numeri Operazioni espresse in termini di operazioni più semplici

59 L’aritmetica degli elaboratori  2
Rango finito dei numeri rappresentabili Qualunque sia la codifica utilizzata, esistono sempre il più grande ed il più piccolo numero rappresentabile I limiti inferiore e superiore del rango di rappresentazione dipendono sia dal tipo di codifica, sia dal numero di bit utilizzati Se il risultato di un’operazione non appartiene al rango dei numeri rappresentabili, si dice che si è verificato un overflow (un underflow, più precisamente, se il risultato è più piccolo del più piccolo numero rappresentabile)

60 L’aritmetica degli elaboratori  3
Precisione finita dei numeri La precisione della rappresentazione di un numero frazionario è una misura di quanto essa corrisponda al numero che deve essere rappresentato Negli elaboratori, i numeri frazionari sono rappresentati in virgola mobile (floating–point), utilizzando un numero finito di bit È plausibile che un numero reale non ammetta una rappresentazione finita, quindi dovrà essere codificato in maniera approssimata Negli elaboratori si rappresentano soltanto numeri razionali (fino ad una data precisione)

61 L’aritmetica degli elaboratori  4
Operazioni espresse in termini di operazioni più semplici La maggior parte degli elaboratori non possiede circuiti in grado di eseguire direttamente tutte le operazioni: La sottrazione si realizza per mezzo di una complementazione e di un’addizione La moltiplicazione si realizza per mezzo di una successione di addizioni e di shift (traslazioni) La divisione si realizza per mezzo di una successione di shift e sottrazioni Le operazioni più semplici sono eseguite direttamente da appositi circuiti (in hardware); le operazioni più complesse sono realizzate mediante l’esecuzione di successioni di operazioni più semplici, sotto il controllo di programmi appositamente realizzati, e generalmente memorizzati permanentemente (in firmware)

62 Codifica dei caratteri alfabetici – 1
Oltre ai numeri, molte applicazioni informatiche elaborano caratteri (simboli) Gli elaboratori elettronici trattano numeri Si codificano i caratteri e i simboli per mezzo di numeri Per poter scambiare dati (testi) in modo corretto, occorre definire uno standard di codifica A 3 $

63 Codifica dei caratteri alfabetici – 2
Quando si scambiano dati, deve essere noto il tipo di codifica utilizzato In genere un sistema informatico deve supportare più standard di codifica La codifica deve prevedere le lettere dell’alfabeto, le cifre numeriche, i simboli, la punteggiatura, i caratteri speciali per certe lingue (æ, ã, ë, è,…) Il più diffuso è il codice ASCII, per American Standard Code for Information Interchange

64 Codifica ASCII Definisce una tabella di corrispondenza fra ciascun carattere e un codice a 7 bit (128 caratteri) I caratteri, in genere, sono rappresentati con 1 byte (8 bit); i caratteri con il bit più significativo a 1 (quelli con codice dal 128 al 255) rappresentano un’estensione della codifica La tabella comprende sia caratteri di controllo (codici da 0 a 31) che caratteri stampabili I caratteri alfabetici/numerici hanno codici ordinati secondo l’ordine alfabetico/numerico A 65 B 66 ……. Y 89 Z 90 a 97 b 98 ……. y 121 Z 122 0 48 1 49 ……. 8 56 9 57 cifre maiuscole minuscole

65 Caratteri di controllo ASCII
I caratteri di controllo (codice da 0 a 31) hanno funzioni speciali Si ottengono o con tasti specifici o con una sequenza Ctrl+carattere Ctrl Dec Hex Code Nota NULL carattere nullo ^A SOH partenza blocco …… … … …… ………………… ^G BEL beep ^H BS backspace ^I HT tabulazione orizzontale ^J A LF line feed (cambio linea) ^K B VT tabulazione verticale ^L C FF form feed (alim. carta) ^M D CR carriage return (a capo) …… … … …… …………………… ^Z A EOF fine file ^[ B ESC escape …… … … …… ……… ^_ F US separatore di unità

66 Caratteri ASCII stampabili
Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr 32 20 SPACE P ` p 33 21 ! A Q a q 34 22 ” B R b r 35 23 # C S c s 36 24 $ D T d t 37 25 % E U e u 38 26 & F V f v 39 27 ’ G W g w 40 28 ( H X h x 41 29 ) I Y i y 42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z 43 2B B ; 75 4B K 91 5B [ 107 6B k 123 7B { 44 2C , 60 3C < 76 4C L 92 5C \ 108 6C l 124 7C | 45 2D D = 77 4D M 93 5D ] 109 6D m 125 7D } 46 2E E > 78 4E N 94 5E ^ 110 6E n 126 7E ~ 47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o F DEL Nota: il valore numerico di una cifra può essere calcolato come differenza del suo codice ASCII rispetto al codice ASCII della cifra 0 (es. ‘5’‘0’ = 53 48 = 5)

67 Tabella ASCII estesa I codici oltre il 127 non sono compresi nello standard originario

68 Codifica UNICODE – 1 È lo standard emergente per la codifica dei caratteri nei testi; è basato sulle caratteristiche del codice ASCII, ma supera la limitazione di poter rappresentare in modo coerente solo l’alfabeto latino Fornisce un unico codice per ogni carattere di ogni lingua scritta, indipendentemente dalla piattaforma, dal linguaggio o dal programma Lo standard iniziale prevedeva di codificare i caratteri con 16 bit, per un totale di oltre caratteri rappresentabili

69 Codifica UNICODE – 2 La versione 3.0 dello standard fornisce i codici per caratteri, derivati dagli alfabeti usati nel mondo, dagli insiemi di ideogrammi, dalle collezioni di simboli L’ultima versione dello standard definisce tre tipi diversi di codifica che permettono agli stessi dati di essere trasmessi in byte (8 bit  UTF-8), word (16 bit  UTF-16) o double word (32 bit  UTF-32) Tutte le codifiche presuppongono, al più, l’utilizzo di 32 bit per carattere

70 Codifica delle immagini  1
Le immagini vengono anch’esse codificate come una sequenza di bit: il processo di “traduzione” da un’immagine ad una sequenza binaria prende il nome di digitalizzazione L’immagine è suddivisa in punti o pixel (per picture element ), e ciascun punto viene codificato con un numero, che corrisponde ad un colore o ad un particolare tono di grigio Si utilizzano un numero di colori o di sfumature che sia una potenza del 2, in modo da codificare l’informazione legata a ciascun pixel con un opportuno numero di bit

71 Codifica delle immagini  2
Le immagini vengono memorizzate come lunghe sequenze di bit: per interpretarle è necessario conoscere... ...le dimensioni dell’immagine (base ed altezza in numero di pixel), detta anche risoluzione ...il numero di colori (o toni di grigio) disponibili per ogni pixel Se un immagine viene codificata ad una data risoluzione, potrà comunque essere presentata su un dispositivo a più bassa risoluzione, a patto di “ignorare” alcuni dei bit che descrivono i pixel

72 Codifica delle immagini  3
Come è avvenuto per i caratteri, anche per le immagini sono stati definiti standard di codifica, che assicurano la compatibilità fra sistemi diversi, per quanto concerne la trasmissione e la visualizzazione delle immagini TIFF  Tagged Image File Format JPEG PNG  Portable Network Graphics Per ridurre lo spazio necessario per memorizzare le immagini si utilizzano tecniche di compressione (utili anche per la trasmissione su rete Internet)

73 Codifica delle immagini  4
Le tecniche di compressione si dividono in... Tecniche lossless: non provocano perdita di informazione, sono adatte a codificare immagini in cui sono presenti ampie aree monocromatiche  si codificano in maniera compatta insiemi di pixel aventi le stesse caratteristiche Tecniche lossly: provocano perdita di informazione, facendo decadere la qualità dell’immagine Normalmente ai formati JPEG e PNG, molto diffusi per lo scambio di immagini su Internet, si applicano metodi di compressione lossly

74 La struttura del calcolatore

75 Il mercato informatico nel 1964
Nel 1964, IBM lanciò sul mercato la serie /360, coniando per l’occasione la definizione di generazione: “The third generation begins” era infatti il titolo dell’articolo in cui veniva presentata la serie IBM/360, per la quale venivano impiegati per la prima volta i circuiti integrati. La base dei circuiti integrati è un cristallo di silicio, ampio qualche millimetro quadrato. Su questa base possono trovarsi migliaia di componenti logiche elementari, stampate direttamente sul circuito o inserite e saldate nei punti di connessione: si raggiungono tempi dell’ordine dei nanosecondi per le operazioni elementari. Il mercato informatico nel 1964 IBM S/360 Mod MHz 32KB256KB $ IBM S/360 Mod MHz 128KB256KB $ IBM S/360 Mod 65 5.0 MHz 256KB1MB $

76 Struttura del calcolatore
Si possono considerare vari livelli di astrazione: Circuiti elettronici (hardware) Architettura e linguaggio macchina Sistema operativo (software di sistema) Linguaggi di programmazione Programmi applicativi Silicon Graphics Il calcolatore è basato su circuiti elettronici digitali, ovvero modellabili con l’algebra booleana; i circuiti elettronici implementano le funzioni logiche AND, OR, NOT, permettono di memorizzare il valore di variabili booleane, etc.

77 Architettura a BUS L’architettura più consolidata per il calcolatore prevede unità funzionali fra loro collegate attraverso un unico canale di comunicazione, il bus Il bus è fisicamente realizzato mediante un insieme di conduttori elettrici Memoria principale CPU I/O BUS Indirizzi Dati Controllo Dispositivi di Input/Output

78 trasferito dalla memoria principale alla CPU
Il BUS Il bus è utilizzato per trasferire dati fra le unità funzionali L’unità che inizia il trasferimento (in genere la CPU) fornisce l’indirizzo, che individua univocamente il dato, sulle linee del bus indirizzi, e configura le linee del bus controllo inviando un comando al dispositivo che contiene il dato (es. READ) Il dato da trasferire è reso disponibile sul bus dati e viene ricopiato nel dispositivo destinatario CPU Memoria principale CPU Memoria principale Indirizzo a 32 bit (32 fili) 0008AB38 0008AB38 5F66B102 5F66B102 0008AB38 0008AB38 5F66B102 READ=1 MEM=1 READ=1 MEM=1 5F66B102 Dato a 32 bit (32 fili) trasferito dalla memoria principale alla CPU

79 La CPU La Central Processing Unit è l’unità che controlla il funzionamento del calcolatore (esegue le istruzioni del programma e ne regola il flusso, esegue i calcoli) È costituita da tre elementi fondamentali: Unità AritmeticoLogica (ALU) Registri Unità di Controllo (CU) Intel Pentium ALU CU PC IR registri Contatore di programma (Program Counter) Registro Istruzione (Istruction Register) BUS

80 L’Unità AritmeticoLogica
s u l t Z r o O v f w a b p i n C y L’ALU (ArithmeticLogic Unit) è un circuito in grado di eseguire operazioni aritmetiche e logiche su 2 operandi, rappresentati su n bit (es. 32 bit); oltre al risultato dell’operazione può produrre informazioni ulteriori su linee specifiche (il risultato è zero, si è verificato un overflow, il risultato è negativo) Il tipo di operazione selezionata, in un dato istante, dipende dallo stato di alcune linee di controllo provenienti dalla CU Le operazioni logiche (es. AND) vengono eseguite bit a bit fra i due operandi Può esistere una unità specializzata per le operazioni in virgola mobile (FPU)

81 I registri E I P n s t r u c i o p e ( C ) F L A G S d g m a k f D 1 2 3 R X B 6 7 5 4 N U Registri del Pentium I registri sono dispositivi di memorizzazione che consentono un accesso molto veloce ai dati che contengono; hanno dimensioni prefissate (es. 32 bit) Alcuni registri hanno funzioni specifiche (es. contatore di programma) In alcune CPU le operazioni della ALU si possono effettuare solo fra dati presenti in due registri Il risultato di un’operazione effettuata dalla ALU può essere memorizzato in un registro

82 Registri e loro funzioni
Registri accumulatori: sono integrati alla ALU, che vi può operare direttamente; mantengono risultati temporanei Registro di stato: contiene informazioni che globalmente determinano, in ogni istante, lo stato dell’unità centrale Registro puntatore allo stack (Stack Pointer): lo stack è un insieme di celle di memoria che può essere acceduto in modalità LIFO (Last In First Out); la posizione in cui si trova l’elemento inserito per ultimo è la testa dello stack, che viene puntata dal registro SP; lo stack è organizzato in modo da crescere verso indirizzi decrescenti: SP viene decrementato ad ogni nuova immissione (push) ed incrementato ad ogni prelievo (pop) 2100 SP 2000

83 L’Unità di Controllo BUS memoria PC CU IR
Istruzione 1 Istruzione 2 Istruzione 3 02AD77F2 Segnali di controllo (ALU, Registri, etc.) Esegue le istruzioni prelevandole dalla memoria nella fase di fetch La prossima istruzione da eseguire è individuata dall’indirizzo presente nel registro contatore di programma (PC) L’istruzione in esecuzione è memorizzata nel registro istruzione (IR) L’istruzione è un codice binario che deve essere decodificato dalla CU; specifica il tipo di operazione, gli eventuali operandi, etc. Normalmente le istruzioni sono eseguite in sequenza: dopo il fetch, il PC viene incrementato, per fare riferimento all’istruzione successiva

84 La memoria principale  1
L’unità di memorizzazione è il byte Ciascun byte nella memoria è individuato da un indirizzo che lo distingue da tutti gli altri, costituito da un numero variabile da 0 a 2N1 dove N è la dimensione in bit dell’indirizzo (es. numero di bit sul bus indirizzi) 07FFFFFF 32 bit 128 MB 227 128 MB = byte = = byte 00000xxxxxxxxxxxxxxxxxxxxxxxxxxx 27 bit  indirizzo all’interno del blocco

85 La memoria principale  2
Fino agli anni `70, le celle erano costituite da nuclei di ferrite attraversati da fili elettrici, che potevano magnetizzarli in un senso o nell’altro, con opportune intensità di corrente, realizzando le cifre 0 e 1 Attualmente le memorie sono realizzate con tecnologia VLSI (Very Large Scale Integrated Circuit), cioè mediante circuiti elettronici ad elevato grado di integrazione (più bit codificabili su chip di una data dimensione)

86 La memoria principale  3
La memoria centrale viene anche chiamata memoria ad accesso casuale o RAM (Random Access Memory): qualsiasi cella può essere letta/scritta in un tempo (mediamente) costante Una parte della memoria centrale, la ROM (Read Only Memory), viene scritta in modo permanente in fase costruttiva: le celle della ROM possono essere successivamente lette (ed in generale contengono informazioni fondamentali, specialmente per l’inizializzazione dell’elaboratore), ma mai riscritte La memoria centrale RAM è volatile

87 Operazioni sulla memoria principale
Le operazioni che si effettuano sulla memoria sono operazioni di lettura e scrittura Entrambe presuppongono l’utilizzo di un indirizzo che identifica univocamente la cella interessata all’operazione L’operazione di scrittura è distruttiva, cioè cancella l’informazione precedentemente contenuta nella cella L’operazione di lettura preserva il contenuto della cella indirizzata: all’esterno della memoria centrale viene trasferita copia dell’informazione

88 Architettura della memoria principale
Il registro indirizzi contiene l’indirizzo della cella che deve essere acceduta; la sua dimensione deve essere tale da permettere che tutte le celle di memoria possano essere indirizzate Esempio: un registro a 16 bit indirizza posizioni di memoria Il decodificatore di indirizzi è un dispositivo in grado di selezionare la cella il cui indirizzo corrisponde a quello contenuto nel registro indirizzi Il registro dati contiene l’informazione scritta/letta sulla/dalla cella indirizzata; la dimensione del registro è uguale a quella delle celle BUS Registro dati Memoria centrale Registro indirizzi Decodificatore indirizzi

89 Il linguaggio macchina
Quando il programma è in esecuzione, è memorizzato nella memoria principale; esso è rappresentato da una serie di numeri binari che codificano le istruzioni eseguibili dall’unità centrale Il programma non è quindi distinguibile dai dati osservando il contenuto della memoria; le istruzioni sono individuate dai valori assunti dal registro PC durante l’esecuzione del programma Ogni codice binario codifica il tipo di istruzione (OPCODE) ed eventuali parametri (es. registri, indirizzi in memoria) I primi calcolatori si programmavano direttamente in linguaggio macchina! PC

90 Il set di istruzioni macchina
L’insieme delle istruzioni eseguibili, e la relativa codifica, sono generalmente diverse per modelli diversi di processore (es. Intel Pentium, Power PC, Alpha) Le istruzioni possono essere codificate con un numero variabile di bit (es. Pentium) o con un numero fisso (es. MIPS  32 bit) Le categorie di istruzioni normalmente disponibili sono: Trasferimento dati: spostano dati (byte, word) tra registri, memoria principale e dispositivi di ingresso/uscita (I/O) Aritmeticologiche: eseguono i calcoli nell’ALU Salti (condizionati e incondizionati): prendono decisioni e alterano la normale esecuzione sequenziale delle istruzioni

91 Assembler Per facilitare la programmazione è stato definito il linguaggio assembly L’assembly impiega una notazione simbolica che è in stretta relazione con i codici in linguaggio macchina; il programma scritto in assembly è convertito automaticamente in linguaggio macchina per mezzo del programma traduttore assembler registro LOAD R1, MEM CMP R1, R BEQ RISZERO STORE R1, MEM1 RISZERO: LOAD R2, MEM2 Assembler OPCODE (LOAD)

92 Trasferimento dei dati
Le istruzioni di trasferimento dati permettono di copiare il valore di un dato fra registri o fra un registro e la memoria Si fa riferimento ad un assembly generico MEM memoria registro LOAD MEM, REG1 LOAD [REG2], REG1 REG1 Indirizzamento diretto registro memoria STORE REG1, MEM STORE REG1, [REG2] REG1 registro MOVE REG1, REG2 REG2 Indirizzamento indiretto

93 Operazioni aritmeticologiche
Permettono di eseguire operazioni aritmetiche o logiche su due operandi ADD REG1, REG2 ALU ADD REG1 REG2 OR REG1, REG2

94 Istruzioni di salto Modificano il flusso di esecuzione del programma; il salto è condizionato se viene effettuato solo quando si verifica una certa condizione L’istruzione CMP confronta i due argomenti, assegnando valori particolari a bit di condizione che si trovano in un registro speciale della CPU (zero, segno) L’istruzione di salto condizionato può essere basata su diverse condizioni: BRNE (branch not equal), BRLE (branch less equal), etc. L’istruzione di salto incondizionato, BRANCH, effettua sempre il salto Confronta il contenuto dei registri REG1 e REG2 BRanch EQual CMP REG1, REG2 BREQ UGUALI LOAD REG1, MEM1 UGUALI: STORE REG2, MEM1

95 La memoria secondaria Esistono diversi dispositivi di memoria secondaria: dischi magnetici (hard disk e floppy), dischi ottici (CD–R, CD–RW, DVD), nastri magnetici Memoria non volatile ad alta capacità Il disco fisso è costituito da uno o più piatti ricoperti di materiale magnetico su entrambe le facce Ciascuna superficie è associata ad una o più testine di lettura/scrittura che si muovono radialmente per leggere l’informazione memorizzata su tracce concentriche Dischi magnetici

96 I dischi magnetici L’informazione è disposta sul disco in tracce, ovvero in cerchi concentrici Le tracce sono divise in settori Il numero di bit contenuti in una traccia è dell’ordine delle centinaia di migliaia (512/4096 byte a settore) Per leggere o scrivere sul disco, la testina si deve posizionare sulla traccia che contiene il dato, ed attendere che il dato passi sotto di essa

97 Accesso al disco Il tempo medio di accesso all’informazione memorizzata su disco è dato da tseek è il tempo di ricerca, necessario per posizionare la testina sulla traccia che contiene l’informazione; dipende dall’ampiezza dello spostamento tlat è il tempo di latenza, necessario perché l’informazione ricercata passi sotto la testina; dipende dalla velocità di rotazione dei dischi ttr è il tempo di trasferimento ; dipende dalla velocità di rotazione, dalla densità di registrazione e dalla quantità di informazione da trasferire T = tseek + tlat + ttr

98 I dispositivi di InputOutput
I dispositivi di I/O sono molti vari Si possono considerare tre diverse caratteristiche: Comportamento: Input (read once), output (write only), memoria (rilettura/riscrittura) Partner: uomo o macchina Velocità del flusso dei dati: quantità di dati nell’unità di tempo trasferiti da o verso la CPU o la memoria centrale Tastiera input uomo KB/s Mouse input uomo KB/s Rete input/output macchina KB/s Hard Disk storage macchina KB/s


Scaricare ppt "Fondamenti di Informatica"

Presentazioni simili


Annunci Google