際際滷

際際滷Share a Scribd company logo
Una breve introduzione
06/10/2012Matteo Ceserani
 Tutto ci嘆 che segue 竪 ESTREMAMENTE
semplificato
06/10/2012Matteo Ceserani
 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
06/10/2012Matteo Ceserani
 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
 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
06/10/2012Matteo Ceserani
 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
06/10/2012Matteo Ceserani
 Programmare
 Innanzitutto
occorre
progettare il
funzionamento
del
programma
dal punto di
vista logico
 Es. diagrammi
di flusso
06/10/2012Matteo Ceserani
 Programmare
 Si sceglie quindi
un linguaggio di
programmazione
tramite il quale
stendere il codice
del programma
 Es. Linguaggio C
06/10/2012Matteo Ceserani
 Programmare
 Si utilizza un
particolare
software per
tradurre il
linguaggio di
programmazione
in linguaggio
macchina
 Compilatore
06/10/2012Matteo Ceserani
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
 Una situazione alternativa: Java
06/10/2012Matteo Ceserani
 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
 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
 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
 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
 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
 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
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
 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
06/10/2012Matteo Ceserani
06/10/2012Matteo Ceserani
 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
 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
 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
 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
06/10/2012Matteo Ceserani
 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
 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
 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
06/10/2012Matteo Ceserani
 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
 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
 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
 Ordine di esecuzione
3.
4. 5. 6.
4. 5. 6.
4. 5. 6.
4. 5. 6.
4. 5. 6.
4. 5. 6.
4. 5. 6.
4. 5. 6.
4. 5. 6.
8.
9.
N = 9
06/10/2012Matteo Ceserani
 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
 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
 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
 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
 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
Ready Running
End
Abort
WaitInit
Manca una
risorsa
06/10/2012Matteo Ceserani
 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
 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
 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
B
D E
A
C
F
G
A
B
C
D
E
G
H
F
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
MEMORIA
LOGICA
MEMORIA
FISICA
0
1
2
3
4
5
6
7
v
v
v
v
i
i
i
i
3
6
10
11
TABELLA
DELLE
PAGINE MEMORIA DI
SWAP
Pagina
fisica
Bit di
validit
H
06/10/2012Matteo Ceserani
 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

More Related Content

Architetture dei calcolatori elettronici

  • 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
  • 10. Programmare Innanzitutto occorre progettare il funzionamento del programma dal punto di vista logico Es. diagrammi di flusso 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
  • 14. Una situazione alternativa: Java 06/10/2012Matteo Ceserani
  • 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
  • 37. Ordine di esecuzione 3. 4. 5. 6. 4. 5. 6. 4. 5. 6. 4. 5. 6. 4. 5. 6. 4. 5. 6. 4. 5. 6. 4. 5. 6. 4. 5. 6. 8. 9. N = 9 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