1
Fondamenti di InformaticaFondamenti di Informatica
E-mail: E-mail: [email protected]@ing.unisi.it
Monica BianchiniMonica BianchiniDipartimento di Ingegneria dell’InformazioneDipartimento di Ingegneria dell’Informazione
ENIAC (1946 ca.)ENIAC (1946 ca.)
ENIAC
Il primo calcolatore elettronico, l’ENIAC Electronical Numerical Integrator and CalculatorElectronical 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 18000 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.
ENIAC
Il primo calcolatore elettronico, l’ENIAC Electronical Numerical Integrator and CalculatorElectronical 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 18000 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.
2
L’algebra di BooleL’algebra di Booleda Analisi Matematica della Logica (1847) al progetto degli elaboratori digitali
Sistemi di numerazioneSistemi di numerazioneda decimale a binario, a esadecimale: l’alfabeto dell’elaboratore
La rappresentazione dei datiLa rappresentazione dei dati e e l’aritmetica degli elaboratoril’aritmetica degli elaboratoridai bit ai numeri, ai testi, alle immagini, alla musica, ai video in digitale
La struttura del calcolatoreLa struttura del calcolatoreda ENIAC al PC, ad HAL2000: cosa c’è “sotto” ?
SommarioSommario
UNIVAC (1951)UNIVAC (1951)
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 (18101864) nel lavoro “Analisi Matematica della Logica”, pubblicato nel 1847. Include un insieme di operazioni su variabili logiche (o variabili booleane), che possono assumere i due soli valori true true e falsefalse, 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à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.
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 (18101864) nel lavoro “Analisi Matematica della Logica”, pubblicato nel 1847. Include un insieme di operazioni su variabili logiche (o variabili booleane), che possono assumere i due soli valori true true e falsefalse, 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à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.
3
L’algebra di BooleL’algebra di Boole
4
Algebra BooleanaAlgebra Booleana
Contempla due costanti 00 e 11 (falsofalso e verovero)Corrispondono a due stati che si escludono a vicendaPossono 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:ANDAND, OROR, NOTNOT sono gli operatori fondamentali
0 1
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.
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.
5
L’operazione di ORL’operazione di OR
Si definisce l’operazione di somma logicasomma logica (OR):il valore della somma logica è il simbolo 1 se il valore di almeno uno degli operandi è il simbolo 1
0
0
0
1
0+0 0+1
0+0 = 00+1 = 11+0 = 11+1 = 1
1
1
1
0
1+0 1+1
6
L’operazione di ANDL’operazione di AND
Si definisce l’operazione di prodotto logicoprodotto logico (AND):il valore del prodotto logico è il simbolo 1 se il valore di tutti gli operandi è il simbolo 1
00 = 001 = 010 = 011 = 1
11
11
01
10
10
01
00
00
7
La negazione NOTLa negazione NOT
Si definisce l’operatore di negazionenegazione (NOT):l’operatore inverte il valore della costante su cui opera
0 = 11 = 0
dalla definizione…
0 = 01 = 1
8
Variabili binarieVariabili binarie
Una variabile binaria indipendente può assumere uno dei due valori 0 e 1
Date n variabili binarie indipendenti la loro somma logica (OR) è
x0
1
x1+ x2+ …+ xn =
1 se almeno una xi vale 1
0 se x1= x2= …= xn = 0
9
AND e NOT con variabili binarieAND e NOT con variabili binarie
x1 x2 … xn =
0 se almeno una xi vale 0
1 se x1= x2= …= xn = 1
x = 0 se x = 1x = 1 se x = 0
L’elemento x’ = NOT(x) viene detto complementocomplemento di x. Il complemento è unico.L’elemento x’ = NOT(x) viene detto complementocomplemento di x. Il complemento è unico.
10
Alcune identitàAlcune identità
x + 1 = 1
x + 0 = x
x + x = x
x 1 = xx 0 = 0 x x = x
x 1 = x
1 1 = 101 = 0
x = 0 x = 1
OK!OK!
0 è l’elemento neutroelemento 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’idempotenzalegge dell’idempotenza.
0 è l’elemento neutroelemento 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’idempotenzalegge dell’idempotenza.
11
Per gli operatori AND e OR valgono le seguenti proprietà:
Per l’operatore NOT si provano le seguenti identità:
Altre proprietàAltre proprietà
commutativacommutativa x1+x2 = x2+x1 x1 x2 = x2 x1
associativaassociativa x1+x2+x3 = x1+(x2+x3) x1 x2 x3 = x1(x2 x3)
distributiva deldistributiva del prodotto rispetto alla sommaprodotto rispetto alla somma x1 x2 + x1 x3 =
x1(x2+x3)
x + x = 1x x = 0
x = x
12
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
Configurazioni delle variabiliConfigurazioni delle variabili
Ad esempio per n=3 si hanno 8 configurazioni
x1x2x3000 001 010 011100 101 110 111
x1x2x3010
13
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àtabella di verità, in cui si elencano tutte le possibili combinazioni di x1, x2, …, xn, con associato il valore di y
Funzioni logicheFunzioni logiche
y = F(x1,x2,…,xn)
x1 x2 y0 0 00 1 11 0 11 1 1
y = x1+x2
14
Una tabella di verità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 F0 0 0 00 0 1 00 1 0 00 1 1 11 0 0 01 0 1 11 1 0 11 1 1 0
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)Forma canonica: somma di prodotti (OR di AND) tutte le funzioni logiche si possono scrivere in questa forma
15
Un esempio: lo XORUn esempio: lo XOR
x1 x2 XOR0 0 00 1 11 0 11 1 0
XOR = x1x2 + x1x2
ESEMPIESEMPI
1) La legge dell’assorbimento legge dell’assorbimento x1+ x1· x2 = x1
2) Le leggi di De Morgan 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.
3) Le relazioni stabilite sono generalmente applicate nelle trasformazioni di funzioni booleane in altre equivalenti, ma di più facile realizzazione circuitale.
ESEMPIESEMPI
1) La legge dell’assorbimento legge dell’assorbimento x1+ x1· x2 = x1
2) Le leggi di De Morgan 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.
3) Le relazioni stabilite sono generalmente applicate nelle trasformazioni di funzioni booleane in altre equivalenti, ma di più facile realizzazione circuitale.
16
Un circuito con due interruttoriUn 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
A B L
0 0 10 1 01 0 01 1 1
L = AB+ABA B
A B0
11
0
A=1 B=0
L
A B
A B0
11
0
A=1 B=1
L
A B
A B0
11
0
A=0 B=1
L
A B
A B0
11
0
A=0 B=0
L
17
Un esercizioUn esercizio
Progettare un circuito per accendere e spegnere una lampada da uno qualsiasi di tre interruttori indipendenti
A B C
1 1 1
0 0 0
A B C
1 1
0
1
0 0
0 00
0 01
Cambia lostato di uninterruttorequalsiasi
L = 0
L = 1
18
Analisi delle combinazioniAnalisi delle combinazioni
Si considera cosa succede a partire dalla configurazione di partenza, cambiando lo stato di un interruttore per volta
A B C
0 00
L = 0
L = 1A B C
0 10
A B C
0 01
L = 1
A B C
1 00
L = 1 L = 0A B C
1 01
A B C
1 11
L = 10 11
A B CL = 0
1 10
A B CL = 0
19
Scrittura della funzione logicaScrittura della funzione logica
A B C L0 0 0 00 0 1 10 1 0 10 1 1 01 0 0 11 0 1 01 1 0 01 1 1 1
L = ABC + ABC + ABC + ABC
20
Come collegare gli interruttoriCome collegare gli interruttori
Si può manipolare l’espressione di L usando la proprietà distributiva dell’AND rispetto all’OR
L = A (BC + BC) + A (BC + BC)
L = ABC + ABC + ABC + ABC
A
A
B
B
C
C
C
CB
B A
A
B
B
C
C
C
CB
B
1 0 0 1 0 1
21
Sistemi di numerazioneSistemi di numerazione
22
Sistemi di numerazioneSistemi di numerazione
Sistemi di numerazione posizionaliposizionali:
La basebase del sistema di numerazioneLe cifrecifre del sistema di numerazione
Il numero è scritto specificando le cifre in ordine ed il suo valore dipende dalla posizione relativaposizione relativa delle cifreEsempioEsempio: Il sistema decimale (Base 10)
Cifre : 0 1 2 3 4 5 6 7 8 9
5641 = 5·103 + 6·102 + 4·101 + 1·100
Posizione: 3 2 1 0
23
Sistemi in base BSistemi in base B
La base definisce il numero di cifre diverse nel sistema di numerazioneLa cifra di minor valore è sempre lo 0; le altre sono, nell’ordine, 1,2,…,B1; se B>10 occorre introdurre B10 simboli in aggiunta alle cifre decimali
N = cnBn+cn-1Bn-1+...+c2B2+c1B1+c0B0
Un numero frazionariofrazionario N’ si rappresenta come (0,c1c2…cn)B
Un numero interointero N si rappresenta con la scrittura (cncn-1…c2c1c0)B
N’ = c1B-1+c2B-2+...+cnB-n
ccnn è la cifra più significativacifra più significativa, cc00 la meno significativameno significativa
24
Numeri interi senza segnoNumeri interi senza segno
Con n cifre in base B si rappresentano tutti i numeri interi positivi da 0 a Bn1 (Bn numeri distinti)
EsempioEsempio: base 10
2 cifre: da 0 a 1021 = 99
000102….9899
EsempioEsempio: base 2
2 cifre: da 0 a 221 = 3
00011011
102 = 100 valori
22 = 4 valori
25
Il sistema binario (B=2)Il sistema binario (B=2)
La base 2 è la più piccola per un sistema di numerazioneLa base 2 è la più piccola per un sistema di numerazione
Cifre: 0 1 bitbit (binary digitbinary digit)
EsempiEsempi:
(101101)2 = 125 + 024 + 123 + 122 + 021 + 120 = 32 + 0 + 8 + 4 + 0 + 1 = (45)10
(0,0101)2 = 02-1 + 12-2 + 02-3 + 12-4 = 0 + 0,25 + 0 + 0,0625 = (0,3125)10
(11,101)2 = 121 + 120 + 12-1 + 02-2 + 12-3 = 2 + 1 + 0,5 + 0 + 0,125 = (3,625)10
FormaFormapolinomipolinomiaa
26
Un bytebyte è un insieme di 8 bit (un numero binario a 8 cifre)
Con un byte si rappresentano i numeri interi fra 0 e 281 = 255
È l’elemento base con cui si rappresentano i dati nei calcolatoriSi utilizzano sempre dimensioni multiple (di potenze del 2) del byte: 2 byte (16 bit), 4 byte (32 bit), 8 byte (64 bit)…
Dal bit al byteDal bit al byte
b7b6b5b4b3b2b1b0
00000000000000010000001000000011…………….1111111011111111
28 = 256 valori distinti
27
Da decimale a binario Da decimale a binario 1 1
Si divide ripetutamente il numero interointero 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
EsempioEsempio: convertire in binario (43)10
43 : 2 = 21 + 121 : 2 = 10 + 110 : 2 = 5 + 0 5 : 2 = 2 + 1 2 : 2 = 1 + 0 1 : 2 = 0 + 1
resti
bit più significativo
(43)10 = (101011)2
28
Si moltiplica ripetutamente il numero frazionariofrazionario 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
Da decimale a binario Da decimale a binario 2 2
EsempioEsempio: convertire in binario (0,21875)10 e (0,45)10 0,45 2 = 0,9
0,90 2 = 1,80,80 2 = 1,60,60 2 = 1,20,20 2 = 0,4 etc.
(0.45)10 (0.01110)2
0,21875 2 = 0 ,43750,4375 2 = 0,8750,875 2 = 1,750,75 2 = 1,50,5 2 = 1,0
(0.21875)10 = (0.00111)2
29
Da binario a decimaleDa binario a decimale
Oltre all’espansione esplicita in potenze del 2 forma polinomiaforma 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
EsempioEsempio: convertire in decimale (101011)2
bit più significativo
(101011)2 = 125 + 024 + 123 + 022 + 121 + 120 = (43)10
1 x 2 = 2 + 0 2 x 2 = 4 + 1 5 x 2 = 10 + 0 10 x 2 = 20 + 1 21 x 2 = 42 + 1 = 43
(101011)2 = (43)10
EsercizioEsercizio
Si verifichino le seguenti corrispondenze:
a) (110010)2=(50)10
b) (1110101)2=(102)10
c) (1111)2=(17)10
d) (11011)2=(27)10
e) (100001)2=(39)10
f) (1110001110)2=(237)10
EsercizioEsercizio
Si verifichino le seguenti corrispondenze:
a) (110010)2=(50)10
b) (1110101)2=(102)10
c) (1111)2=(17)10
d) (11011)2=(27)10
e) (100001)2=(39)10
f) (1110001110)2=(237)10
30
Sistema esadecimaleSistema esadecimale
La base 16 è molto usata in campo informaticoLa base 16 è molto usata in campo informatico
Cifre: 0 1 2 3 4 5 6 7 8 9 A B C D E F
EsempioEsempio:
(3A2F)16 = 3163 + 10162 + 2161 + 15160 = 34096 + 10256 + 216 + 15 = (14895)10
La corrispondenza in decimale delle cifre oltre il 9 è
A = (10)10 D = (13)10
B = (11)10 E = (14)10
C = (12)10 F = (15)10
31
Da binario a esadecimaleDa binario a esadecimale
0000 0 1000 80001 1 1001 90010 2 1010 A0011 3 1011 B0100 4 1100 C0101 5 1101 D0110 6 1110 E0111 7 1111 FF corrisponde a 4 bit a 1
0 corrisponde a 4 bit a 0
32
Dai bit all’hexDai bit all’hex
Un numero binario di 4n bit corrisponde a un numero esadecimale di n cifre
EsempioEsempio: 32 bit corrispondono a 8 cifre esadecimali
1101 1001 0001 1011 0100 0011 0111 1111 D 9 1 B 4 3 7 F
(D91B437F)16
EsempioEsempio: 16 bit corrispondono a 4 cifre esadecimali
0000 0000 1111 1111 0 0 F F
(00FF)16
33
Da esadecimale a binarioDa esadecimale a binario
La conversione da esadecimale a binario si ottiene espandendo ciascuna cifra con i 4 bit corrispondenti
EsempioEsempio: convertire in binario il numero esadecimale 0x0x0c8f
Notazione usata in molti linguaggi di programmazione per rappresentare numeri esadecimali
0 c 8 f 0000 1100 1000 1111
Il numero binario ha 4 x 4 =16 bit
34
Esempi Esempi 1 1
In qualsiasi base, l’essere il sistema di numerazione posizionaleposizionale, impone che combinazioni diverse di cifre uguali rappresentino numeri diversi; ad esempio:
(319)10 (193)10
(152)6 (512)6, infatti... (152)6=162+561+260=36+30+2=(68)10
(512)6=562+161+260=180+6+2=(188)10
Numeri che hanno identica rappresentazione, in basi diverse, hanno valori diversi:
(234)10 (234)8 , infatti...(234)8 = 282 + 381 + 480 = 264 + 38 + 4 = 128+24+4 =
(156)10
OsservazioneOsservazione: più piccola è la base, minore è il valore del numero rappresentato dalla stessa sequenza di cifre
35
Esempi Esempi 2 2
La notazione posizionale si applica anche per il calcolo del valore dei numeri frazionari, infatti...
(0,872)10 = 8101 + 7102 + 2103
= 8/10 + 7/100 + 2/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 2n1, quindi...
per n=1 (con una cifra) si rappresentano 0...211 0,1per n=2: 0...221 0...3per n=3: 0...231 0...7per n=4: 0...241 0...15per n=5: 0...251 0...31per n=6: 0...261 0...63
Effettivamente possiamo verificare che (100100)2=(36)10, infatti...
100100=125+024+023+122+021+020
= 32 + 4 = 36
con 66 cifre necessarie per la codifica del numero in base 2
36
Esempi Esempi 3 3
QuesitoQuesito: Per quale base B risulterà vera l’uguaglianza17 + 41 + 22 = 102 ?
Se i numeri sono rappresentati in base B, sappiamo che:(17)B = 1B1+7B0 = B+7
(41)B = 4B1+1B0 = 4B+1
(22)B = 2B1+2B0 = 2B+2
(102)B = 1B2+0B1+2B0 = B2+2
da cui...B+7+4B+1+2B+2 = 7B+10 = B2+2
Si ottiene un’equazione di 2° grado: B2 7B 8 = 0Risolvendo: = 49+32 = 81
B = (7 )/2 =(79)/2 = 1
(7+9)/2 = 8 È la soluzione!È la soluzione!
Non può essere una base
37
La rappresentazione dei datiLa rappresentazione dei dati e l’aritmetica degli elaboratorie l’aritmetica degli elaboratori
38
Numeri interi positiviNumeri 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
EsempioEsempio: 12 viene rappresentato in un byte come…
00001100
39
Numeri con segnoNumeri con segno
Per rappresentare numeri con segno, occorre utilizzare un bit per definire il segno del numeroSi possono usare 3 tecniche di codifica
Modulo e segno Complemento a 2 Complemento a 1
40
Modulo e segnoModulo e segno
Il bit più significativo rappresenta il segno: 0 per i numeri positivi, 1 per quelli negativiEsiste uno zero positivo (00…0) e uno zero negativo (10…0)Se si utilizzano n bit si rappresentano tutti i numeri compresi fra (2n11) e +2n11
EsempioEsempio: con 4 bit si rappresentano i numeri fra 7 ((231)) e +7 (231)
0000 +00001 +10010 +20011 +30100 +40101 +50110 +60111 +7
1000 01001 11010 21011 31100 41101 51110 61111 7
positivi negativi
41
Complemento a 2Complemento a 2
01010111
10101000
10101001
complemento a 1
+ 1
100000000011111111 01010111 10101000
10101001
28
281N281N
281N+1
2n(N)2 = 10……0(N)2
{n
42
Interi in complemento a 2Interi in complemento a 2
I numeri positivinumeri positivi sono rappresentati in modulo e segnoI numeri negativinumeri negativi hanno un 1 nella posizione più significativa e sono rappresentati in complemento a 2Lo zero è rappresentato come numero positivo (con una sequenza di n zeri)Il campo dei numeri rappresentabili è da 2n1 a +2n11
EsempioEsempio: numeri a 4 cifre0000 +00001 +10010 +20011 +30100 +40101 +50110 +60111 +7
1000 81001 71010 61011 51100 41101 31110 21111 1
Nota: 0111 +7 1000 8
43
Interi a 16 bitInteri a 16 bit
Numeri interi rappresentati su 16 bit in complemento a 2:
Il più grande numero intero positivo è 2151=(32767)10
0111 1111 1111 11110x 7 F F F
Il più piccolo numero intero negativo è 215=(32768)10
1000 0000 0000 00000x 8 0 0 0
0111 1111 1111 1111 + 1 1000 0000 0000 0000
Il numero intero –1 è rappresentato come
1111 1111 1111 11110x F F F F
0000 0000 0000 0000 + 1 0000 0000 0000 0001
44
Addizione binariaAddizione binaria
0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 0 con riporto di 1
EsempioEsempio1 11 101011011+0101101010110101
riporti
181
91+90
45
Sottrazione binaria Sottrazione binaria 1 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 = 010 1 = 1 con prestito di 1 dalla cifra precedente a sinistra EsempioEsempio
0 10 1 1 0 0 1 1 0 11 0 1 0 0 20
25 5
46
Sottrazione binaria – 2Sottrazione binaria – 2
Utilizzando la rappresentazione in complemento a 2, addizione e sottrazione sono trattate come un’unica operazione
N1N2 = N1+(2nN2)2n
complemento a 2 di N2: (N2)
si trascura il bit n +1
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
EsempioEsempio: (010001)2(000101)2 = (17)10(5)10
010001 + 1110111001100 (12)10
{
47
Sono utili perché l’operazione di somma può essere realizzata non curandosi del bit di segnoIn complemento a 1 (più semplice da calcolare)…
Zero ha due rappresentazioni: 00000000 e 11111111 La somma bit a bit funziona “quasi sempre”
In complemento a 2…Zero ha una sola rappresentazioneLa somma bit a bit funziona sempre
Rappresentazioni in Rappresentazioni in complementocomplemento
11001 + (6)
11010 = (5)
1001110011 (12)
00110 + (6)
10101 = (10)
11011 (4)
48
OverflowOverflow
EsempioEsempio: 5 bit [16,+15]
01110 +0101011000
14 +1024
11000 + 10110101110
8 +10188 +14
Punteggio nei vecchi videogame… sorpresa per i campioni!0111 1111 1111 1111 + 1 = 1000 0000 0000 0000 32767 + 1 = 32768
49
Moltiplicazione binariaMoltiplicazione binaria
0 0 = 00 1 = 01 0 = 01 1 = 1
EsempioEsempio 1100111 x 101 1100111 0000000 11001111000000011
110011 x 10000 = 11001100000000 16 = 24
50
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 = BQ + RLa 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
Divisione binariaDivisione binaria
1 1 0 1 1 0 1 0 11 0 1 1 0 1 0 1 1 1
1 0 1 1 0 0
(
^^^
51:16 = 3 con resto 3
110011 10000 = 11 con resto 11
54 = 510 + 4
51
EserciziEsercizi
Esercizio 1Esercizio 1 Assumendo che un elaboratore rappresenti i numeri interi con segno su quattro bit, si calcolino entrambi i membri della seguente identità:
(A(AC)+B = (A+B)C)+B = (A+B)CC,con A=7A=7, B=5B=5, C=7C=7. Si ottiene lo stesso risultato dal calcolo dei due membri? Discutere le motivazioni della risposta.
Esercizio 2Esercizio 2a) Si determini, se esiste, la base b di un sistema di
numerazione tale che
(842)(842)bb = (1202) = (1202)1010
b) Si determini, se esiste, la base b 16 di un sistema di numerazione tale che
(725)(725)bb (626) (626)bb = (224) = (224)1010
52
Numeri in virgola mobileNumeri in virgola mobile
La rappresentazione dei numeri in virgola mobile è in relazione con la notazione scientificanotazione scientifica (es. 1.2102=120)La IEEE ha previsto uno standard per la rappresentazione in virgola mobile singola precisionesingola precisione (32 bit = 4 byte)
doppia precisionedoppia precisione (64 bit = 8 byte) quadrupla precisionequadrupla precisione (128 bit = 16 byte)
Singola precisione031 2223
23 bit8 bit
Mantissa(o Caratteristica)
Segno
Il valore è(1)S 1.M2E127 se E0(1)S 0.M2127 se E=0
Esponente
53
Singola precisioneSingola precisione
0 11111111 11111111111111111111111 2255127 1.111111111111111111111111
0 00000000 00000000000000000000001 2127 0.00000000000000000000001
0.50 1 2 4
223 valori223 valori 223 valori223 valori
54
Metodo per il calcolo dell’addizione1. 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
2. La mantissa del risultato è ottenuta dalla somma delle due mantisse
3. 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
L’aritmetica floatingL’aritmetica floatingpoint: addizionepoint: addizione
caratteristiche sono uguali, e corrispondono alla caratteristica del risultato
55
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 è 1101+ 0100 = 10001; la caratteristica deve essere aumentata di 1 e portata a 111, e la mantissa del risultato traslata a destra di una posizione:
Un esempio di addizione Un esempio di addizione
0 1 001 11 0
1001 0100
Codifica il numero 4 (dato che la caratteristica si rappresenta in eccesso a 4), ma il risultato corretto è 4.375: errore di errore di troncamentotroncamento
1.125
3.25
01 100 01 1
0 0 111 11 0N = (1)s0.M2E4
56
Metodo per il calcolo della moltiplicazione1. Si moltiplicano le due mantisse2. Si addizionano le due caratteristiche3. 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
4. Si tronca la mantissa al numero di bit utilizzati nella rappresentazione; la mantissa del prodotto è il risultato del troncamento
5. Si sottrae l’eccesso alla somma delle caratteristiche, ottenendo la caratteristica del prodotto
L’aritmetica floatingL’aritmetica floatingpoint: point: moltiplicazionemoltiplicazione
57
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:
Un esempio di moltiplicazione Un esempio di moltiplicazione
M=01110101 E=111
0 0 010 11 1Codifica il numero 0.21875, ma il risultato corretto è 0.228515625: errore di troncamentoerrore di troncamento
01 100 01 1 1.125
0.2031250 0 110 11 0N = (1)s0.M2E4
58
L’aritmetica “interna” degli elaboratori differisce notevolmente dall’aritmetica classicaSebbene le stesse operazioni possano essere realizzate secondo modalità diverse su elaboratori diversi, si riscontrano alcune caratteristiche comuni:
Rappresentazione binaria dei numeriRappresentazione binaria dei numeri
Rango finito dei numeri rappresentabiliRango finito dei numeri rappresentabili
Precisione finita dei numeriPrecisione finita dei numeri
Operazioni espresse in termini di operazioni più Operazioni espresse in termini di operazioni più semplicisemplici
L’aritmetica degli elaboratori L’aritmetica degli elaboratori 1 1
59
Rango finito dei numeri rappresentabiliRango finito dei numeri rappresentabili Qualunque sia la codifica utilizzata, esistono sempre il più grande ed il più piccolo numero rappresentabileI limiti inferiore e superiore del rango di rappresentazione dipendono sia dal tipo di codifica, sia dal numero di bit utilizzatiSe il risultato di un’operazione non appartiene al rango dei numeri rappresentabili, si dice che si è verificato un overflow (un underflowunderflow, più precisamente, se il risultato è più piccolo del più piccolo numero rappresentabile)
L’aritmetica degli elaboratori L’aritmetica degli elaboratori 2 2
60
Precisione finita dei numeriPrecisione finita dei numeriLa precisioneprecisione della rappresentazione di un numero frazionario è una misura di quanto essa corrisponda al numero che deve essere rappresentatoNegli elaboratori, i numeri frazionari sono rappresentati in virgola mobile (floating–pointfloating–point), utilizzando un numero finito di bitÈ plausibile che un numero reale non ammetta una rappresentazione finita, quindi dovrà essere codificato in maniera approssimataNegli elaboratori si rappresentano soltanto numeri razionali (fino ad una data precisione)
L’aritmetica degli elaboratori L’aritmetica degli elaboratori 3 3
61
Operazioni espresse in termini di operazioni più Operazioni espresse in termini di operazioni più semplicisemplici
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’addizioneLa moltiplicazione si realizza per mezzo di una successione di addizioni e di shift 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 hardwarehardware); 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 firmwarefirmware)
L’aritmetica degli elaboratori L’aritmetica degli elaboratori 4 4
62
Codifica dei caratteri alfabetici – Codifica dei caratteri alfabetici – 11
Oltre ai numeri, molte applicazioni informatiche elaborano caratteri (simboli)Gli elaboratori elettronici trattano numeriSi codificano i caratteri e i simboli per mezzo di numeriPer poter scambiare dati (testi) in modo corretto, occorre definire uno standard di codifica
A 01000001
3 00110011
$ 00100100
63
Codifica dei caratteri alfabetici – Codifica dei caratteri alfabetici – 22
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 ASCIIcodice ASCII, per American American Standard Code for Information InterchangeStandard Code for Information Interchange
64
Codifica ASCIICodifica ASCII
Definisce una tabella di corrispondenza fra ciascun carattere e un codice a 7 bit7 bit (128 caratteri)I caratteri, in genere, sono rappresentati con 1 byte1 byte (8 bit); i caratteri con il bit più significativo a 1 (quelli con codice dal 128 al 255) rappresentano un’estensione della codificaLa tabella comprende sia caratteri di controllocaratteri di controllo (codici da 0 a 31) che caratteri stampabilicaratteri stampabiliI caratteri alfabetici/numerici hanno codici ordinati secondo l’ordine alfabetico/numerico
A 65B 66…….Y 89Z 90
a 97b 98…….y 121Z 122
0 481 49…….8 569 57
cifre maiuscole minuscole
65
Caratteri di controllo ASCIICaratteri di controllo ASCII
I caratteri di controllo (codice da 0 a 31) hanno funzioni specialiSi ottengono o con tasti specifici o con una sequenza Ctrl+carattereCtrl+carattere
Ctrl Dec Hex Code Nota^@ 0 0 NULL carattere nullo^A 1 1 SOH partenza blocco…… … … …… …………………^G 7 7 BEL beep^H 8 8 BS backspace^I 9 9 HT tabulazione orizzontale^J 10 A LF line feed (cambio linea)^K 11 B VT tabulazione verticale^L 12 C FF form feed (alim. carta)^M 13 D CR carriage return (a capo)…… … … …… ……………………^Z 26 1A EOF fine file^[ 27 1 B ESC escape…… … … …… ………^_ 31 1F US separatore di unità
66
Caratteri ASCII stampabiliCaratteri ASCII stampabili
Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr
32 20 SPACE 48 30 0 64 40 @ 80 50 P 96 60 ` 112 70 p33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q34 22 ” 50 32 2 66 42 B 82 52 R 98 62 b 114 72 r 35 23 # 51 33 3 67 43 C 83 53 S 99 63 c 115 73 s36 24 $ 52 34 4 68 44 D 84 54 T 100 64 d 116 74 t37 25 % 53 35 5 69 45 E 85 55 U 101 65 e 117 75 u38 26 & 54 36 6 70 46 F 86 56 V 102 66 f 118 76 v39 27 ’ 55 37 7 71 47 G 87 57 W 103 67 g 119 77 w40 28 ( 56 38 8 72 48 H 88 58 X 104 68 h 120 78 x 41 29 ) 57 39 9 73 49 I 89 59 Y 105 69 i 121 79 y42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z43 2B + 59 3B ; 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 - 61 3D = 77 4D M 93 5D ] 109 6D m 125 7D }46 2E . 62 3E > 78 4E N 94 5E ^ 110 6E n 126 7E ~47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o 127 7F DEL
NotaNota: 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 estesaTabella ASCII estesa
I codici oltre il 127 non sono compresi nello standard originario
68
Codifica UNICODE – 1Codifica 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 unico codice per ogni carattere di ogni lingua scrittaogni 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 65000 caratteri rappresentabili
69
Codifica UNICODE – 2Codifica UNICODE – 2
La versione 3.0 dello standard fornisce i codici per 4919449194 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-8UTF-8), word (16 bit UTF-16UTF-16) o double word (32 bit UTF-32UTF-32)
Tutte le codifiche presuppongono, al più, l’utilizzo di 32 bit per carattere
70
Codifica delle immagini Codifica delle immagini 1 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 digitalizzazionedigitalizzazione
L’immagine è suddivisa in punti o pixel pixel (per pictpicture ure elelement ement ), 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 Codifica delle immagini 2 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 risoluzionerisoluzione
...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 Codifica delle immagini 3 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
TIFFTIFF Tagged Image File FormatTagged Image File Format
JPEGJPEG
PNGPNG Portable Network GraphicsPortable Network Graphics
Per ridurre lo spazio necessario per memorizzare le immagini si utilizzano tecniche di compressionecompressione (utili anche per la trasmissione su rete Internet)
73
Codifica delle immagini Codifica delle immagini 4 4
Le tecniche di compressione si dividono in...Tecniche losslessTecniche 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 losslyTecniche lossly: provocano perdita di informazione, facendo decadere la qualità dell’immagine
Normalmente ai formati JPEGJPEG e PNGPNG, molto diffusi per lo scambio di immagini su Internet, si applicano metodi di compressione lossly
74
La struttura del calcolatoreLa struttura del calcolatore
75
Il mercato informatico nel 1964Il mercato informatico nel 1964
IBM S/360 Mod 40 IBM S/360 Mod 40 1.6 MHz 32KB1.6 MHz 32KB256KB256KB225.000$225.000$
IBM S/360 Mod 50 IBM S/360 Mod 50 2.0 MHz 128KB2.0 MHz 128KB256KB256KB550.000$550.000$
IBM S/360 Mod 65IBM S/360 Mod 655.0 MHz 256KB5.0 MHz 256KB1MB1MB1.200.000$1.200.000$
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.
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.
76
Struttura del calcolatoreStruttura del calcolatore
Si possono considerare vari livelli di astrazione:Circuiti elettronici (hardware)Architettura e linguaggio macchinaSistema operativo (software di sistema)Linguaggi di programmazioneProgrammi applicativi
Silicon GraphicsSilicon 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 BUSArchitettura a BUS
L’architettura più consolidata per il calcolatore prevede unità funzionali fra loro collegate attraverso un unico canale di comunicazione, il busbusIl bus è fisicamente realizzato mediante un insieme di conduttori elettrici
MemoriaprincipaleCPU I/O I/OI/O
BUSIndirizziDatiControllo
Dispositivi di Input/Output
78
Il BUSIl BUS
MemoriaprincipaleCPU
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 bus indirizziindirizzi, e configura le linee del bus controllobus controllo inviando un comando al dispositivo che contiene il dato (es. READ)Il dato da trasferire è reso disponibile sul bus datibus dati e viene ricopiato nel dispositivo destinatario
READ=1 MEM=1
0008AB38
0008AB38 0008AB38Indirizzo a32 bit (32 fili)
MemoriaprincipaleCPU
READ=1 MEM=1
0008AB38
5F66B102Dato a 32 bit (32 fili)
trasferito dalla memoria principale alla CPU
5F66B1025F66B102
5F66B102
79
La CPULa CPU
La Central Processing UnitCentral 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:
Intel PentiumIntel Pentium
Unità AritmeticoLogica (ALU) Registri Unità di Controllo (CU)
ALU CU
PC
IR
registriContatore di programma
(Program CounterProgram Counter)
Registro Istruzione(Istruction RegisterIstruction Register)BUS
80
L’Unità AritmeticoL’Unità AritmeticoLogicaLogica
Il tipo di operazione selezionata, in un dato istante, dipende dallo stato di alcune linee di controllo provenienti dalla CULe operazioni logiche (es. AND) vengono eseguite bit a bit fra i due operandiPuò esistere una unità specializzata per le operazioni in virgola mobile (FPUFPU)
L’ALU (ArithmeticArithmeticLogic UnitLogic 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)
ALU ResultZero
Overflow
a
b
ALU operation
CarryOut
81
I registriI registri
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 registriIl risultato di un’operazione effettuata dalla ALU può essere memorizzato in un registro
EIP Instruction pointer (PC)
EFLAGS Condition codes
Code segment pointerCS
Stack segment pointer (top of stack)SS
Data segment pointer 0DS
Data segment pointer 1ES
Data segment pointer 2FS
Data segment pointer 3GS
031
GPR 0EAX
GPR 3EBX
GPR 1ECX
GPR 2EDX
GPR 6ESI
GPR 7EDI
GPR 5EBP
GPR 4ESP
Name Use
Registri delPentium
82
Registro puntatore allo stackRegistro 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 (pushpush) ed incrementato ad ogni prelievo (poppop)
Registri e loro funzioni Registri e loro funzioni
Registri accumulatoriRegistri accumulatori: sono integrati alla ALU, che vi può operare direttamente; mantengono risultati temporanei
Registro di statoRegistro di stato: contiene informazioni che globalmente determinano, in ogni istante, lo stato dell’unità centrale
2100
SP2000
2000
83
L’Unità di ControlloL’Unità di Controllo
Esegue le istruzioni prelevandole dalla memoria nella fase di fetchfetchLa prossima istruzione da eseguire è individuata dall’indirizzo presente nel registro contatore di programmaregistro contatore di programma (PC)L’istruzione in esecuzione è memorizzata nel registro istruzioneregistro istruzione (IR)L’istruzione è un codice binario che deve essere decodificatodecodificato dalla CU; specifica il tipo di operazione, gli eventuali operandi, etc.Normalmente le istruzioni sono eseguite in sequenza: dopo il fetch, il PC viene incrementatoPC viene incrementato, per fare riferimento all’istruzione successiva
CU
IR
PC
memoriaBUS
Istruzione 1Istruzione 2Istruzione 3
02AD77F2
02AD77F2
Segnali di controllo(ALU, Registri, etc.)
84
La memoria principale La memoria principale 1 1
L’unità di memorizzazione è il byteCiascun byte nella memoria è individuato da un indirizzoindirizzo che lo distingue da tutti gli altri, costituito da un numero variabile da 0 a 2N1 dove N è la dimensione in bit dell’indirizzo (es. numero di bit sul bus indirizzi)
128 MB = 27 220 byte = = 137438953472 byte
227
00000xxxxxxxxxxxxxxxxxxxxxxxxxxx27 bit indirizzo all’interno
del blocco
00000000
07FFFFFF
32 bit
128 MB
85
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 VLSIVLSI (Very Large Scale Integrated Very Large Scale Integrated CircuitCircuit), cioè mediante circuiti elettronici ad elevato grado di integrazione (più bit codificabili su chip di una data dimensione)
La memoria principale La memoria principale 2 2
86
La memoria principale La memoria principale 3 3
La memoria centrale viene anche chiamata memoria ad accesso casualememoria ad accesso casuale o RAMRAM (Random Random Access MemoryAccess Memory): qualsiasi cella può essere letta/scritta in un tempo (mediamente) costante
Una parte della memoria centrale, la ROMROM (Read Read Only MemoryOnly 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 è volatileLa memoria centrale RAM è volatile
87
Le operazioni che si effettuano sulla memoria sono operazioni di letturalettura e scritturascrittura
Entrambe presuppongono l’utilizzo di un indirizzo che identifica univocamente la cella interessata all’operazione
L’operazione di scrittura è distruttivadistruttiva, 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
Operazioni sulla memoria Operazioni sulla memoria principaleprincipale
88
Il registro indirizziregistro 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 indirizzateEsempioEsempio: un registro a 16 bit indirizza 65536 posizioni di memoriaIl decodificatore di indirizzidecodificatore di indirizzi è un dispositivo in grado di selezionare la cella il cui indirizzo corrisponde a quello contenuto nel registro indirizziIl registro datiregistro dati contiene l’informazione scritta/letta sulla/dalla cella indirizzata; la dimensione del registro è uguale a quella delle celle
Architettura della memoria Architettura della memoria principaleprincipale
BU
SB
US
Registro datiRegistro dati
Memoria centraleMemoria centrale
Registro indirizziRegistro indirizzi
Decodificatore indirizziDecodificatore indirizzi
89
Il linguaggio macchinaIl linguaggio macchina
0000000010100001000000000001100000000000100011100001100000100001100011000110001000000000000000001000110011110010000000000000010010101100111100100000000000000000
PC
90
Il set di istruzioni macchinaIl 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 datiTrasferimento dati: spostano dati (byte, word) tra registri, memoria principale e dispositivi di ingresso/uscita (I/O)
AritmeticoAritmeticologichelogiche: eseguono i calcoli nell’ALU
Salti (condizionati e incondizionati)Salti (condizionati e incondizionati): prendono decisioni e alterano la normale esecuzione sequenziale delle istruzioni
91
AssemblerAssembler
Per facilitare la programmazione è stato definito il linguaggio assemblyassemblyL’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 assemblerassembler
LOAD R1, MEM1 CMP R1, R2 BEQ RISZERO STORE R1, MEM1RISZERO: LOAD R2, MEM2
Assembler
1000100011011010110101010101010001001000100100000000000000000000110000000000000000000000000010001001100011011010110101010101010010001001010110101101001000001100
OPCODE(LOAD)
registro
92
Trasferimento dei datiTrasferimento dei dati
Le istruzioni di trasferimento dati permettono di copiare il valore di un dato fra registri o fra un registro e la memoriaSi fa riferimento ad un assemblyassembly generico
LOAD MEM, REG1LOAD [REG2], REG1
STORE REG1, MEMSTORE REG1, [REG2]
MOVE REG1, REG2
REG1
MEM
REG1
REG2
memoriaregistro
registromemoria
registroregistro
Indirizzamento diretto
Indirizzamento indiretto
93
Operazioni aritmeticoOperazioni aritmeticologichelogiche
Permettono di eseguire operazioni aritmetiche o logiche su due operandi
ADD REG1, REG2
ALUADD
REG1REG2
OR REG1, REG2 0010 1100 1100 0101 1100 1111 0101 00001010 1110 0000 0000 0010 0001 1000 0001
1010 1110 1100 0101 1110 1111 1101 0001
REG1REG2
REG1
94
Istruzioni di saltoIstruzioni di salto
CMP REG1, REG2 BREQ UGUALI LOAD REG1, MEM1UGUALI: STORE REG2, MEM1
Confronta il contenuto dei registri REG1 e REG2
BRanch EQual
95
La memoria secondariaLa memoria secondaria
Il disco fisso è costituito da uno o più piatti ricoperti di materiale magnetico su entrambe le facceCiascuna superficie è associata ad una o più testine di lettura/scrittura che si muovono radialmente per leggere l’informazione memorizzata su tracce concentriche
Dischi magneticiDischi magnetici
Esistono diversi dispositivi di memoria secondaria: dischi magnetici (hard disk e floppy), dischi ottici (CD–R, CD–RW, DVD), nastri magneticiMemoria non volatile ad alta capacità
96
I dischi magneticiI dischi magnetici
L’informazione è disposta sul disco in traccetracce, ovvero in cerchi concentriciLe tracce sono divise in settorisettori Il numero di bit contenuti in una traccia è dell’ordine delle centinaia di migliaia (512/4096 byte a settore)
Platter
Track
Platters
Sectors
Tracks
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 discoAccesso al disco
Il tempo medio di accesso all’informazione memorizzata su disco è dato da
tseek è il tempo di ricercatempo di ricerca, necessario per posizionare la testina sulla traccia che contiene l’informazione; dipende dall’ampiezza dello spostamentotlat è il tempo di latenzatempo di latenza, necessario perché l’informazione ricercata passi sotto la testina; dipende dalla velocità di rotazione dei dischittr è il tempo di trasferimentotempo 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 InputI dispositivi di InputOutputOutput
ComportamentoComportamento: Input (read once), output (write only), memoria (rilettura/riscrittura)
PartnerPartner: uomo o macchina
Velocità del flusso dei datiVelocità del flusso dei dati: quantità di dati nell’unità di tempo trasferiti da o verso la CPU o la memoria centrale
TastieraTastiera input uomo 0.01 KB/sMouse Mouse input uomo 0.02 KB/sRete Rete input/output macchina 1000 KB/sHard DiskHard Disk storage macchina 5000 KB/s
I dispositivi di I/O sono molti variSi possono considerare tre diverse caratteristiche: