2. Tutto ci嘆 che segue 竪 ESTREMAMENTE
semplificato
06/10/2012Matteo Ceserani
3. I dati in ingresso e i risultati delle
elaborazioni in uscita sono sempre codificati
in binario come stringhe di bit (0/1)
ELABORATORE
Informazione in ingresso
Dati
Informazione in uscita
Risultati
06/10/2012Matteo Ceserani
5. Un calcolatore elettronico 竪 un complesso circuito
per lelaborazione automatica dell informazione.
La CPU (o le CPU) 竪 il cuore del sistema, svolge nei
fatti le operazioni che costituiscono lelaborazione.
La memoria di sistema serve per memorizzare i dati
e i risultati dellelaborazione.
Sempre la memoria di sistema contiene il codice
delle istruzioni da eseguire sui dati (programmi)
Le periferiche di I/O ricevono i dati dallesterno
(Input) e forniscono in uscita i risultati
dellelaborazione (Output).
I diversi elementi sono collegati attraverso un
insieme di linee elettriche che prendono
complessivamente il nome di bus di sistema.
06/10/2012Matteo Ceserani
6. Che tipo di operazioni 竪 in grado di svolgere
una CPU?
Aritmetica intera
Logica delle proposizioni
Aritmetica decimale
Altre operazioni binarie
Rotazioni di bit
Swap
Istruzioni speciali
SIMD
06/10/2012Matteo Ceserani
8. Lesempio sopra riportato si riferisce a un
microprocessore molto semplice
Un microcontrollore
31 istruzioni
Nella figura precedente ci sono quasi tutte
Prendiamo linstruction set reference della
architettura Intel a 32 bit
978 pagine
Circa 340 istruzioni
Alcune davvero sofisticate
06/10/2012Matteo Ceserani
11. Programmare
Si sceglie quindi
un linguaggio di
programmazione
tramite il quale
stendere il codice
del programma
Es. Linguaggio C
06/10/2012Matteo Ceserani
12. Programmare
Si utilizza un
particolare
software per
tradurre il
linguaggio di
programmazione
in linguaggio
macchina
Compilatore
06/10/2012Matteo Ceserani
13. 06/10/2012Matteo Ceserani
Il codice macchina ha
caratteristiche che
dipendono fortemente da
quelle dellhardware su cui
il software dovr essere
eseguito
Non solo: anche i sistemi
operativi sono molto
differenti tra di loro
Il programmatore deve
conoscere lambiente
hardware e software in cui
il suo programma dovr
funzionare
Il codice macchina
ottenuto non 竪 portabile
su altre piattaforme
15. La JVM (Java Virtual Machine) 竪 un particolare
software che simula un hardware virtuale standard,
su cui vengono eseguiti i programmi scritti in Java
Esiste una Java Virtual Machine per ogni piattaforma
hardware (32 bit, 64 bit) e per ogni sistema operativo
(Win, Linux, MacOS, Android etc)
Si realizza cos狸 la portabilit del codice, e il
programmatore si pu嘆 astrarre da hardware e sistemi
operativi
Altro esempio: Microsoft Visual Basic e il .NET
Framework
Limitato al solo ambiente Windows
Realizza la sola portabilit hardware
Le specifiche per嘆 sono aperte: volendo
06/10/2012Matteo Ceserani
16. La RAM 竪 composta da celle di
memoria che possono
contenere ciascuna un certo
numero di bit (in genere 8: un
Byte)
Ogni cella di memoria 竪
individuata dal suo indirizzo,
un numero progressivo che
parte da 0.
Le linee per i dati (D) sono
bidirezionali e permetto la
lettura e la scrittura delle
celle di memoria che
compongono la RAM.
Le linee A (Address) servono
per fornire alla RAM gli
indirizzi delle celle da cui si
vuole leggere o in cui si vuole
scrivere.
Il segnale CS (Chip Select)
abilita il dispositivo.
I segnali RD e WR servono ad
avviare unoperazione di
lettura o di scrittura.
06/10/2012Matteo Ceserani
17. Ciclo di lettura
RD 1
A Indirizzo della cella di memoria da leggere
CS 1
Dopo un certo tempo (ns) il contenuto della cella di
indirizzo A 竪 disponibile sulle linee D
Ciclo di scrittura
WR 1
A Indirizzo della cella di memoria in cui scrivere
D Parola di bit da scrivere nella cella
CS 1
Dopo un certo tempo (ns) la parola di bit posta in
ingresso sulle linee D 竪 memorizzata nella cella di
indirizzo A
06/10/2012Matteo Ceserani
18. Le linee del bus si dividono logicamente in tre
gruppi
Linee che trasportano dati e istruzioni (bidirezionali)
Linee che trasportano indirizzi di celle di memoria e di
periferiche (unidirezionali)
Altre linee di controllo (unidirezionali)
06/10/2012Matteo Ceserani
19. Per permettere linterfacciamento della CPU
con la memoria
le linee D degli integrati di RAM vengono
collegate al bus dei dati
Le linee A degli integrati di RAM vengono
collegate al bus degli indirizzi
Le linee CS, RD e WR vengono collegate a tre
linee in uscita del bus dei controlli
sempre la CPU a gestire le letture e le
scritture in memoria
Eccezione: DMA (Direct Memory Access) ma 竪
unaltra storia
06/10/2012Matteo Ceserani
20. Qual 竪 la dimensione massima della memoria
RAM di un sistema di elaborazione?
20 bit 1 MB
32 bit 4 GB
64 bit 2097152 TB
Perch辿?
M
L 2
L = dimensione della memoria (parole, in genere Byte)
M = dimensione del bus degli indirizzi (numero di linee)
06/10/2012Matteo Ceserani
21. Unit di misura Definizione In byte
1 Byte 8 bit 1
1 KB 1024 Byte 1024
1 MB 1024 KB 1048576
1 GB 1024 MB 1073741824
1 TB 1024 GB 1099511627776
Perch辿 1 Byte 竪 composto da 8 bit?
Perch辿 si procede di 1024 in 1024?
06/10/2012Matteo Ceserani
22. Le periferiche di Input e Output in linea di
massima funzionano come delle celle di
memoria:
Possiedono un indirizzo e le corrispondenti linee
A da collegare al bus degli indirizzi
Possono essere lette (Input) o scritte (Output)
dalla CPU attraverso le loro linee D collegate al
bus dei dati
Possiedono linee di abilitazione (CS) e di lettura
e scrittura (RD, WR)
06/10/2012Matteo Ceserani
25. Una CPU funziona ripetendo continuamente
quello che si chiama CICLO DI MACCHINA
Approssimativamente un ciclo di macchina
corrisponde allesecuzione di unistruzione
da parte della CPU
Il ciclo di macchina si divide in due parti
fondamentali:
Fase di FETCH
Caricamento da parte della CPU del codice
dellistruzione da eseguire
Fase di EXECUTE
Esecuzione da parte della CPU dellistruzione il cui
codice 竪 stato caricato nella fase di fetch
06/10/2012Matteo Ceserani
26. UC: Unit di Controllo
Circuito elettronico molto complesso
Responsabile sia della fase di Fetch che di quella di
Execute
Produce i segnali di comando che determinano
lesecuzione delle istruzioni (fanno parte del bus dei
controlli)
IR: Instruction Register
contiene il codice dellistruzione da eseguire
una cella di memoria
PC: Program Counter
contiene lindirizzo della cella di RAM che contiene il
codice della prossima istruzione da eseguire
una cella di memoria
06/10/2012Matteo Ceserani
27. MAR: Memory Address Register
cella di memoria per linterfacciamento con il
bus degli indirizzi
MDR: Memory Data Register
cella di memoria per linterfacciamento con il
bus dei dati
06/10/2012Matteo Ceserani
28. La fase di Fetch si ripete sempre uguale
Passi della fase di Fetch
MAR PC
Bus degli indirizzi MAR
CS 1
RD 1
MDR Bus dei dati
IR MDR
PC PC + 1
06/10/2012Matteo Ceserani
30. La fase di Execute 竪 diversa per ogni
istruzione che la CPU 竪 in grado di eseguire
In realt pu嘆 essere distinta in due fasi
UC legge il contenuto di IR e lo decodifica,
producendo i corrispondenti segnali di comando
La RAM, le periferiche e le altre parti interne
della CPU si attivano in risposta ai segnali di
comando per eseguire listruzione
Vediamo un esempio, si spera semplice
ADD R0,R1,R2
R0 R1 + R2
06/10/2012Matteo Ceserani
31. Registri di uso generale
Celle di memoria
Possono essere utilizzate per memorizzare qualsiasi
valore
Dati
Risultati
ALU: Unit Aritmetico Logica
Svolge calcoli matematici e logici su numeri interi e
espressioni logiche
Viene affiancata da una FPU (Floating Point Unit) per il
calcolo in virgola mobile
Accumulatore
Cella di memoria speciale
Contiene sempre uno dei due operandi della ALU
In esso viene posto il risultato delle operazioni svolte
dalla ALU
06/10/2012Matteo Ceserani
32. Dopo la decodifica da parte di UC i passi sono
i seguenti
Accumulatore R1
Accumulatore Accumulatore + R2
R0 Accumulatore
Questa fase di Execute non coinvolge in
alcun modo la memoria di sistema
Possiamo nel frattempo svolgere la fase di Fetch
successiva (Pipeline)
Esistono ovviamente istruzioni che hanno bisogno
di accedere alla memoria di sistema per essere
eseguite
06/10/2012Matteo Ceserani
34. Altro esempio
ADD [3F55],R0,R1
Il risultato della somma del contenuto di R0 e R1
viene memorizzato nella cella di memoria di
indirizzo 3F55H = 16213D = 0011111101010101B
I passi sono i seguenti
Accumulatore R0
Accumulatore Accumulatore + R1
WR 1
MAR 3F55H
MDR Accumulatore
CS 1
Somma
Scrittura in memoria
06/10/2012Matteo Ceserani
35. Durante la somma si pu嘆 eseguire il fetch
dellistruzione successiva (il bus 竪 libero)
Durante la scrittura della memoria si pu嘆
utilizzare la ALU per unaltra operazione (il
bus non si pu嘆 utilizzare perch辿 竪 occupato)
Lefficienza della pipeline 竪 uno dei fattori
principali per lincremento delle prestazioni
della CPU
Un altro fattore 竪 il parallelismo
Pi湛 CPU che lavorano in parallelo possono
svolgere pi湛 istruzioni contemporaneamente
06/10/2012Matteo Ceserani
36. Come 竪 fatto un software? Un esempio in
linguaggio C
1. float CalcoloMedia(int N){
2. float Somma;
3. Somma = 0;
4. for(i=0;i<N;i++){
5. scanf(%d,&Numero);
6. Somma = Somma + Numero;
7. }
8. Somma = Somma / N;
9. return Somma;
10. }
06/10/2012Matteo Ceserani
38. Principio di localit spaziale
Se si sta eseguendo listruzione memorizzata
nella cella di memoria di indirizzo X, 竪 probabile
che la prossima istruzione da eseguire sia
memorizzata nella cella di indirizzo X + 1
Principio di localit temporale
Se si sta eseguendo unistruzione, 竪 probabile
che la stessa istruzione venga rieseguita dopo
breve tempo
Perch辿 caricare continuamente dalla
memoria di sistema lo stesso codice, tenendo
occupati i bus?
06/10/2012Matteo Ceserani
39. Per sfruttare i principi di localit spaziale e
temporale si 竪 introdotta nelle CPU la memoria
cache
Si tratta di una memoria molto veloce integrata
nella CPU
I tempi di accesso alla cache sono molto inferiori a
quelli di accesso alla RAM di sistema
Il codice di una istruzione (o un dato) vengono
dapprima cercati dalla CPU nella cache
Se il dato o listruzione vengono trovati (cache hit) la
CPU risparmia un accesso alla memoria esterna
Se il dato o listruzione non vengono trovati (cache
miss) la CPU accede alla memoria esterna, carica il
dato o listruzione e li copia anche nella cache
06/10/2012Matteo Ceserani
40. Statisticamente lutilizzo della cache riduce
drasticamente il numero di accessi alla memoria
di sistema
Per ottimizzare le prestazioni si utilizza una
cache gerarchica (almeno due livelli, ma anche
tre)
L1: livello pi湛 interno. Ogni CPU possiede la sua cache
L1 privata, a volte divisa in cache per i dati e cache
per le istruzioni. Dimensioni dellordine delle decine
di KB.
L2: livello pi湛 esterno. Di solito condivisa tra tutte le
CPU del microprocessore. Dimensioni dellordine di
qualche MB.
L3: in alcuni casi il livello pi湛 esterno 竪 il terzo. In tal
caso la cache L2 non 竪 condivisa, mentre lo 竪 la L3.
06/10/2012Matteo Ceserani
41. I sistemi operativi gestiscono lesecuzione di molti
programmi contemporaneamente (multitasking)
Questa gestione deve essere completamente
trasparente al programmatore
Il programmatore non si deve dover preoccupare del
multitasking: scrive il codice come se il suo programma
possa disporre del processore in maniera esclusiva
Ovviamente solo un programma pu嘆 essere in
esecuzione in un certo istante (almeno su una singola
CPU)
I diversi processi vengono posti in esecuzione a
rotazione, assegnando a ciascuno di essi una piccola
quantit di tempo di processore (quanto di tempo)
Lutente ha la sensazione che i programmi vengano
eseguiti parallelamente tra loro
06/10/2012Matteo Ceserani
42. Stati di un processo
Running Il processo 竪 in esecuzione, sta utilizzando il
processore.
Ready Il processo dispone di tutte le risorse
necessarie allesecuzione ma non dispone del
processore.
Wait Il processo 竪 in attesa della disponibilit di una
certa risorsa (es. operazioni di I/O). In generale il
tempo di attesa pu嘆 essere indefinito.
Init Fase di creazione e inizializzazione di un
processo.
End Termina lesecuzione.
Abort Terminazione anormale del processo. Viene
generato un file di dump (copia della memoria) per
lanalisi dellapplicazione volta a determinare
lerrore.
06/10/2012Matteo Ceserani
44. La gestione dei processi in attesa o pronti
per lesecuzione 竪 compito del sistema
operativo (uno dei pi湛 importanti)
La CPU e il sistema di elaborazione in
generale devono per嘆 supportare il
meccanismo di rotazione dei processi
Oggi il multitasking 竪 uno standard per tutti i
calcolatori
Almeno dal PC in su
Arduino non ha nemmeno un sistema operativo!
06/10/2012Matteo Ceserani
45. Obiettivo: far s狸 che ciascun processo abbia
lillusione di disporre dellintera memoria
indirizzabile dal processore
Questo di solito vuol dire superare il limite
della memoria fisicamente presente sulle
macchine, mantenendo il solo vincolo legato
alla dimensione del bus degli indirizzi
Si noti che questo deve verificarsi per
ciascun processo in esecuzione sulla
macchina
06/10/2012Matteo Ceserani
46. Conservare in memoria centrale solo le porzioni di codice e
dati che presumibilmente saranno necessarie e/o
evolveranno in un prossimo futuro
Occorre farlo in maniera assolutamente trasparente al
programmatore
Duplice divisione della memoria:
Si divide lo spazio di memoria del programma (limitato solo
dalla dimensione del bus indirizzi) in pagine logiche di
dimensione fissa
Si divide lo spazio fisico di memoria (fissato dallhardware) in
pagine fisiche aventi la stessa dimensione di quelle logiche
Meccanismo della paginazione:
mappare le pagine logiche necessarie in un certo istante
allesecuzione di un processo su corrispondenti pagine fisiche
Una MMU (Memory Management Unit) si occupa della
traduzione degli indirizzi logici nei corrispondenti indirizzi
fisici.
06/10/2012Matteo Ceserani
48. Il processo 竪 convinto di poter accedere a tutta
la memoria indirizzabile
Richiede laccesso a una cella appartenente a
una certa pagina logica
Consultando una tabella delle pagine si controlla
se la pagina logica 竪 presente in quel momento
in memoria centrale
Se non 竪 presente la si carica da una memoria di
swap (di solito una parte del disco)
Se necessario si scarica dalla memoria centrale
una pagina logica ritenuta meno utile
06/10/2012Matteo Ceserani