Presentazione di PowerPoint - Home page istituzione trasparente

HARDWARE
1.4a: (Processore)
Bibliografia
 Curtin, Foley, Sen, Morin “Informatica di base”,
Mc Graw Hill
 Sciuto, Buonanno, Mari, “ Introduzione ai sistemi
informatici“, Mc Graw Hill
23 nov 2011
 Questi lucidi
2
Architettura di von Neuman
CPU
Dispositivi di I/O
Unità di
controllo
Unità
aritmetico
logica (ALU)
Terminale
Stampante
Registri
CPU
Memoria
centrale
Unità
disco
Bus
L’unità centrale di elaborazione
(CPU)
 La CPU, o unità centrale di elaborazione o
Processore, è un circuito integrato (Chip), costituito
da una piccola piastra di silicio
 Sulla superficie della CPU sono presenti milioni di
piccoli interruttori elettronici miniaturizzati, di tipo
acceso/spento, i transistor, e altri componenti
elettronici
 Il primo processore a larga diffusione, l’Intel 4004 (1971),
conteneva circa 2.300 transistor
23 nov 2011



4
Il primo processore montato sul
primo PC di larga diffusione, i8088
conteneva circa 29.000 transistor
Il Core 2 (2006) ne contiene oltre
291.000.000
Un Quad-core circa 2.4 miliardi.
L’unità centrale di elaborazione
(CPU)


La CPU è il “cervello” del calcolatore e il suo
compito è quello di eseguire i programmi, residenti
nella memoria, leggendo ed eseguendo le loro
istruzioni.
L’elaborazione avviene in accordo a sequenze di
istruzioni (istruzioni macchina), scritte in un
linguaggio di programmazione speciale, chiamato
linguaggio macchina.
23 nov 2011
Struttura
istruzione
5
codice operativo
dest
src1
src2
Linguaggio
assemblatore
add
R01
R02
Linguaggio
macchina
000000 00000 100000
00001
00010 00011
R03
L’esecutore
 Un calcolatore basato sull’architettura di Von
Neumann esegue un programma sulla base
dei seguenti principi:
dati e istruzioni sono memorizzati in una
memoria unica che permette sia la scrittura
che la lettura;
i contenuti della memoria sono indirizzati in
base
alla
loro
posizione,
indipendentemente dal tipo di dato o
istruzione contenuto;
le istruzioni vengono eseguite in modo
sequenziale.
Ciclo Fetch–Decode–Execute
Fetch (Lettura)
Decode
Execute
Esecuzione di Programmi
RAM
N
M
CPU
Esecuzione di Programmi: fetch
RAM
N
leggi
prossima
istruzione
CPU
10110110
…
11001001
M
“somma 2 al
valore della
cella M”
Esecuzione di Programmi: decodifica
RAM
CPU
10110110
N
…
11001001
leggi dati
M
11001001
Esecuzione di Programmi: esecuzione
RAM
N
CPU
10110110
…
esegui
calcoli
11001001
M
11001001
11001011
+2=
Esecuzione di Programmi: scrittura
RAM
CPU
10110110
N
…
11001001
M
scrivi
risultato
11001001
11001011
Esecuzione di Programmi: iterazione
RAM
N
leggi
prossima
istruzione
CPU
11000111
…
10101101
M
Struttura e componenti della CPU
 Unità di controllo (Control Unit).
 ALU (Unità Aritmetico-Logica)
 Clock
 Registri
Unità di
controllo
Memoria
Centrale o
Periferiche
Clock
BUS
Registro
Registro
Registro
ALU
Data Path (o percorso dei dati)
E’ la parte che si occupa dell’effettiva elaborazione
dei dati.
 Comprende dispositivi diversi
una o più unità aritmetico-logiche, dette ALU
(Arithmetic Logic Unit): legge i dati contenuti
all'interno dei registri generali, esegue le
operazioni e memorizza il risultato in uno dei
registri generali
alcune unità di memorizzazione temporanea, i
registri, memoria ad alta velocità usata per
risultati temporanei e informazioni di controllo.
Data Path
Registri
R00 R01 R02 R03
X
X
+
Y
Y
… … … …
Registri
ingresso ALU
X
add
esito
Registro
uscita ALU
A
L
U
X
+
Y
Y
Il valore massimo memorizzabile in un registro è
determinato dalle dimensioni del registro
Registri di memoria della CPU
 I registri della CPU sono un tipo di memoria ad alta
velocità (2, 4, 8 byte) che viene utilizzata per
memorizzare temporaneamente istruzioni e dati più
frequentemente acceduti.
 Ospitano le informazioni necessarie per eseguire
l’istruzione corrente
 In numero molto limitato (10, 20, 64) si dividono in
registri speciali e generali
PSW
Bus indirizzi
Data path
Unità di
controllo
Bus dati
CPU
Bus controllo
Unità di controllo
IR
PC
Memoria
I Registri speciali
 Il Program Counter (PC) contiene l’indirizzo in
memoria centrale della prossima istruzione da
eseguire.
 All’inizio dell’esecuzione di un programma viene
caricato con l’indirizzo della prima istruzione di quel
programma.
 Ad ogni istruzione eseguita il PC viene modificato
per contenere l’indirizzo della istruzione successiva.
I Registri speciali
L’Instruction Register (IR) contiene l’istruzione
correntemente in esecuzione
 la CPU legge l’istruzione contenuta nell’instruction
register e la esegue
IL Registro di stato (PSW) descrive lo stato corrente
della esecuzione
 segnala eventuali errori (ad es.: overflow)
Unità di controllo
 Sovrintende
alla
corretta
esecuzione
dei
programmi e coordina il lavoro degli altri
componenti hardware e le attività dell’intero
computer
 L’unità di controllo del processore esegue una
istruzione svolgendo le seguenti tre operazioni di
base
 Fetch (lettura)
 Decode (decodifica)
 Execute (esecuzione)
 Un programma è eseguito reiterando il ciclo fetchdecode-execute (ciclo macchina) per eseguire
ordinatamente le sue istruzioni
Ciclo Fetch – Decode - Execute
1. Prendi l’istruzione corrente dalla memoria (quella
individuata dal contenuto del PC) e mettila nell’IR
(Instruction
Register),
contemporaneamente
incrementa il Program Counter (PC) in modo che
contenga l’indirizzo dell’istruzione successiva (fetch)
2. Determina il tipo di istruzione da eseguire (decode)
3. Se l’istruzione usa dei dati presenti in memoria,
determinane la posizione;
4. Carica la parola, se necessario, in un registro della
CPU;
5. Esegui l’istruzione (execute)
6. Torna al punto 1 e inizia a eseguire l’istruzione
successiva.
Struttura della CPU
I Registri speciali
 Registro Indirizzi Memoria (MAR) contiene
l’indirizzo della cella da cui leggere o in cui
scrivere un dato
 Registro dati Memoria (MDR) contiene il dato
letto dalla memoria o da scrivere in memoria
Tipologie di istruzioni
 Architettura di riferimento: load/store
le operazioni aritmetico-logiche possono
essere eseguite solo su dati che siano già stati
caricati nei registri;
le operazioni di caricamento dei dati dalla
memoria nei registri (load) e di archiviazione
dei risultati dai registri nella memoria (store)
debbono essere previste esplicitamente.
 Un processore in architettura load/store dovrà
quindi essere in grado di eseguire le seguenti
categorie di istruzioni:
Istruzioni
aritmetico-logiche
(Elaborazione
dati)
Controllo del flusso delle istruzioni
Trasferimento di informazione
Tre tipologie di istruzioni
 Istruzioni aritmetico-logiche (Elaborazione dati)
 Somma, Sottrazione, Divisione, …
 And, Or, Xor, …
 Maggiore, Minore, Uguale, Minore o uguale, …
 Controllo del flusso delle istruzioni
 Sequenza
 Selezione semplice, a due vie, a n vie, …
 Ciclo a condizione iniziale, ciclo a condizione finale,
…
 Trasferimento di informazione
 Trasferimento dati e istruzioni tra CPU e memoria
 Trasferimento dati e istruzioni tra CPU e dispositivi di
ingresso/uscita (attraverso le relative interfacce)
Esempi di istruzioni
Istruzione
Significato
Categoria
R01,R02,R03
R01 ← R02 + R03
aritmetico-logica
addi R01,R02,421
R01 ← R02 + 421
aritmetico-logica
lw
R01,R02,421
R01 ← M[R02 + 421]
trasferimento
sw
R01,R02,421
M[R02 + 421] ← R01
trasferimento
beq
R01,R02,–421
se (R01 == R02)
vai a PC–421
j
84210
vai a 84210
add
salto (condizionato)
salto (non
condizionato)
Istruzioni aritmetico-logiche
 Un’istruzione
aritmetico-logica,
ad
add RZ,RX,RY, viene eseguita in quattro passi:
esempio
1. l’istruzione viene prelevata dalla memoria e scritta
nell’IR mentre il PC viene incrementato (si tratta della
fase di fetch già descritta in precedenza);
2. viene letto il contenuto dei due registri RX e RY (in
pratica l’unità di controllo attiva i collegamenti tra i
registri RX e RY, individuati dal contenuto dell’IR, e i
registri di ingresso all’ALU e provvede a effettuare il
trasferimento dei dati);
3. la ALU opera sui dati letti dal banco dei registri,
eseguendo l’operazione indicata dal codice compreso
nell’istruzione (l’unità di controllo attiva il collegamento
di un pezzo dell’IR con l’ingresso di controllo dell’ALU);
4. il risultato calcolato dall’ALU viene scritto nel registro RZ
(anche il registro destinazione viene individuato a
partire dal contenuto dell’IR).
Istruzioni di trasferimento
 Un’istruzione di trasferimento, ad esempio
lw RY,RX,base, viene eseguita in cinque passi:
1. l’istruzione viene prelevata dalla memoria e
scritta nell’IR mentre il PC viene incrementato;
2. viene letto il contenuto del registro RX;
3. la ALU opera sui dati letti dal banco dei registri
e sulla base scritta nell’IR;
4. il risultato calcolato dall’ALU viene utilizzato
come indirizzo per la memoria dati;
5. il dato proveniente dalla memoria viene scritto
nel registro RY.
Istruzioni di controllo
 Un’istruzione
di
trasferimento,
ad
esempio
beq RX,RY,salto, viene eseguita in quattro passi:
1. l’istruzione viene prelevata dalla memoria e scritta
nell’IR mentre il PC viene incrementato;
2. viene letto il contenuto dei due registri RX e RY;
3. la ALU opera sui dati letti dal banco dei registri,
eseguendo l’operazione indicata dal codice
compreso nell’istruzione (nel caso dell’esempio si
tratta di una sottrazione, per verificare poi se il risultato
è uguale o diverso da zero); contemporaneamente il
contenuto del PC viene sommato al valore del salto
per calcolare l’eventuale destinazione del salto;
4. l’esito dell’operazione viene utilizzato per decidere
quale valore debba essere memorizzato nel PC.
Clock
 La CPU ha un orologio interno, detto clock, che emette con
regolarità un determinato numero di impulsi ogni secondo, come
una specie di metronomo che scandisce le operazioni all’interno
di tutti i circuiti elettronici del calcolatore e li sincronizza.
 La velocità del clock
 indica il numero di “impulsi” (cicli) che il clock emette in un
secondo.
 La velocità del clock è quel numero che viene normalmente
associato ad ogni processore (es.: processore da 2 Giga)
 La velocità del clock si misura in Hertz.
 1 hertz (Hz) = 1 ciclo al secondo
 1 megahertz (MHz) = 1 milione di cicli al secondo
 1 gigahertz (GHz) = 1 miliardo di cicli al secondo
Istruzioni del Processore
 Inoltre, un’istruzione del processore è generalmente
composta da più operazioni elementari che accedono
in momenti successivi alle risorse del computer
 Quasi mai la singola istruzione del processore è eseguita in
un solo ciclo di clock. Ad esempio, per effettuare la
somma di due numeri
 Bisogna leggere il primo addendo
 Bisogna leggere il secondo addendo
 Bisogna eseguire la somma
23 nov 2011
 Bisogna memorizzare la somma
32
 E potrebbe darsi che alcune di queste mini-operazioni
richiedano più cicli di clock per essere completate.
 Ogni “parte” di un’istruzione viene eseguita in
corrispondenza ad un impulso di clock
Dimensione della parola
 E’ il numero di bit che un processore tratta
simultaneamente.
 Corrisponde a quanti bit possono essere trasferiti
simultaneamente tra processore e memoria.
 Corrisponde alla dimensione della singola cella di
memoria RAM
23 nov 2011
 Corrisponde alla dimensione dei registri della CPU.
33
 Inizialmente la dimensione della parola era di 8 bit,
cioè di 1 byte. Da allora si è cominciato a misurare
la dimensione della memoria in byte.
 Attualmente la dimensione di parola varia da 32 a
64 bits, in base al tipo di processore e di architettura
hardware.
Istruzioni del processore
 Le istruzioni del processore sono il suo
VOCABOLARIO: quanto più esso è povero
 tante più parole saranno necessarie per descrivere
un concetto,
23 nov 2011
 ma tanto più esse saranno “corte” e quindi veloci da
eseguire, in quanto richiedono pochi impulsi di clock
per essere completate.
34
 La potenza di elaborazione di un processore è
data dal numero di istruzioni eseguite in un
secondo (MIPS – milioni di istruzioni al secondo,
MFLOPS – milioni di istruzioni in virgola mobile al
secondo)
Coprocessori
 Nei moderni computer la CPU è “coadiuvata”
da altri processori “specializzati” nel
trattamento di particolari tipologie di dati (ad
esempio immagini sul monitor o suoni).
23 nov 2011
Un
Coprocessore
è
un
processore “dedicato” che,
sotto il controllo della CPU e del
Sistema
Operativo
svolge
elaborazioni specialistiche che
richiederebbero alla CPU un
notevole dispendio di tempo
• Processore sulla scheda
video
• Processore sulla scheda
audio
35
Multiprocessori
 E’ possibile, inoltre, dotare un computer di più processori
che “collaborano” all’esecuzione di un programma.
 Ad esempio possono essere disposti più processori come in
una catena di montaggio (pipeline)
23 nov 2011
 Oppure più processori possono lavorare
contemporaneamente su parti diverse di uno stesso dato
(nelle previsioni del tempo, ad esempio, ogni processore
può dedicarsi ad una specifica zona geografica)
36
Microprocessori incorporati
 I microprocessori si trovano anche in
 Automobili
 Telefoni
 Termostati
 Schede telefoniche
23 nov 2011
 Carte di credito
37
Compatibilità
 Cosa accade ai programmi quando si cambia il
processore del computer (perché, magari, si sostituisce il
computer)?
 La compatibilità è garantita, di norma, verso l’alto
 Un programma che gira su un processore di un produttore
funziona sui modelli più recenti prodotti dalla stessa azienda
23 nov 2011
 Il viceversa non è sempre vero
 Non è garantita la compatibilità tra processori di aziende
diverse, a meno che essa non sia esplicitamente
dichiarata. Ad esempio
 c’è un ottimo livello di compatibilità tra processori AMD e Intel
38
CISC e RISC
 CISC = Complex Instruction Set Chip (300-400)
 RISC = Reduced Instruction Set Chip (100-200)
 Un processore CISC rispetto ad un processore RISC presenta molte
più istruzioni che vengono eseguite tramite più operazioni
elementari
 che richiedono più cicli di clock per essere completate
23 nov 2011
 E che quindi sono più lente delle corrispondenti operazioni
RISC
39
 D’altro canto, le istruzioni di un processore CISC che non sono
presenti in un processore RISC vengono da questo simulate
tramite più istruzioni
 ciò comporta tempi maggiori nei processori RISC, in media,
ma solo per tali istruzioni da simulare, rispetto alle
corrispondenti operazioni CISC
CISC e RISC
 I processori RISC sono mediamente più veloci
dei CISC su quasi tutte le applicazioni.
23 nov 2011
 I processori RISC non sono adatti per
elaborazioni “complesse”, ad esempio quelle
sui dati multimediali
40
 Attualmente la differenza tra CISC e RISC si sta
riducendo
Benchmark
 Batterie di test usate per confrontare le velocità dei
computer.
 Non sono mai valori assoluti. Ma sono rapportati ad
un insieme di programmi (che compongono tali
batterie).
 Un computer può risultare più veloce di un altro
relativamente ad un programma ma meno veloce
relativamente ad un altro.
23 nov 2011
 Due grandi tipologie di programmi:
 CPU-consuming (usano molto la CPU). E tra queste:
 Integer-computing (calcoli su numeri interi o su pochi numeri)
 Floating-point computing (lavorano su numeri reali e molto grossi)
 I/O-consuming (usano molto le periferiche di I/O).
41
I Registri speciali
 Registro Indirizzi Memoria (MAR) contiene
l’indirizzo della cella da cui leggere o in cui
scrivere un dato
 Registro dati Memoria (MDR) contiene il dato
letto dalla memoria o da scrivere in memoria