1
GLI AMBIENTI
DELL’ INFORMATICA:
HARDWARE
M.Hmeljak
Fondamenti di Informatica - Ambiente HW hardware
2
Architettura “classica” di un calcolatore:
la Macchina di Von Neumann
Unità
Logico
Aritmetica
Unità
di
Controllo
CPU
Istruzioni
Dati
Programmi
e
Dati
Unità
di
Ingresso
MEMORIA
PRINCIPALE
MEMORIA
SECONDARIA
Unità
di
Uscita
Risultati
della
Elaborazione
Fondamenti di Informatica - Ambiente HW hardware
3
i componenti elettronici (milioni di transistor e porte
logiche) magnetici e meccanici di un calcolatore
elettronico sono raggruppabili in 4 “macro-elementi”:
Unità centrale di calcolo o in breve U.C.
(inglese: CPU - Central Processing Unit)
Memoria centrale MC e memorie periferiche:
MC = memoria principale (cache, RAM, ROM)
Mem.periferiche=memoria secondaria (dischi HD, e altro)
Periferiche di I/O (Input/Output)
Dispositivi per la lettura dati (mondo->calcolatore, es: tastiera)
e per la scrittura dati (calcolatore->mondo, es: schermo )
Bus di comunicazione
(di dati e comandi tra due dispositivi,
Bus Dati, Bus Indirizzi, Bus di Controllo
Fondamenti di Informatica - Ambiente hardware
4
Struttura di un calcolatore, approssimata:
Unita’
Centrale
Schermo
Memoria
(Dispositivo
Centrale
(ram e rom) di uscita)
Disco HD
(memoria
periferica)
Dischetto
(memoria
periferica)
vie (“bus”) di
trasmissione
segnali e dati
Tastiera
(dispositivo
di ingresso)
la parte “fisica” = insieme dei componenti = “hardware”
Fondamenti di Informatica - Ambiente hardware
5
l’ U.C. esegue le istruzioni,
al ritmo di N istruz/secondo,
con N dell'ordine di 100
..1000 milioni (2004); tutta
l'elaborazione avviene in UC
Unita’
Centrale
Schermo
(dispositivo
di uscita)
la MC contiene i programmi
“attivi” (istruzioni e dati) in
un dato momento (l'UC puo'
eseguire solo istruzioni che
stanno in MC !)
memoria rom = memoria in
sola lettura, indelebile;
Memoria
memoria ram = memoria
Centrale
volatile,
si
cancella
se
manca
(ram e rom)
l'alimentazione
Disco HD
(memoria
periferica)
Tastiera
(dispositivo
di ingresso)
altre
memorie
periferiche
Fondamenti di Informatica - Ambiente hardware
6
sullo schermo sono visualizzati le informazioni (stato)
del sistema e i risultati dei programmi, in genere tutte
le informazioni di interesse e/o richieste dall'utente
il calcolatore
legge da tastiera i
Schermo
comandi e i dati
Memoria
Unita’
(Dispositivo inseriti da chi lo
Centrale
Centrale
(ram e rom) di uscita) usa
Disco CD /
DVD / ..
Disco HD
(memoria
periferica)
Dischetto
(memoria
periferica)
Tastiera
(dispositivo
di ingresso)
Fondamenti di Informatica - Ambiente hardware
Unita’
Centrale
7
Schermo
Memoria
Tastiera
(Dispositivo (dispositivo
Centrale
di ingresso)
(ram e rom) di uscita)
Disco HD
(memoria
periferica)
Dischetto
(memoria
periferica)
sul HD hard disk sono memorizzati
programmi e dati in modo
persistente, disponibili anche dopo
alcuni anni (con o senza
alimentazione) capacita' 1G..200G
i dischetti: piu’
piccoli, estraibili,
meno affidabili,
capacita' 1.4 M byte
Fondamenti di Informatica - Ambiente hardware
memoria
centrale
(ram,rom)
Tastiera
(dispositivo
di ingresso)
Disco HD
(memoria
periferica)
Dischetto
(memoria
periferica)
Ingresso/
Uscita
parallela
Modem
I/U rete
Schermo
(Dispositivo
di uscita)
Ingresso/
Uscita
seriale
Ethernet
I/U rete
8
bus trasmissione
segnali e dati
I/U segnale
video
Ethernet
I/U
audio
...
Fondamenti di Informatica - Ambiente hardware
memoria
centrale
(ram,rom)
Disco HD
(memoria
periferica)
Tastiera
(dispositivo
di ingresso)
Disco HD
9
Schermo
(Dispositivo
di uscita)
Ingresso/
Uscita
seriale
I/U segnale
video
sul bus di trasmissione dati tra le varie unita' devono viaggiare anche i
segnali di attivazione e di selezione: la comunicazione tra due componenti
(trasmissione dati) avviene seguendo delle regole di un protocollo di
trasmissione: richiedere l'uso del bus, selezionare l'altro componente (ogni
componente ha un indirizzo), trasmettere, verificare l'esito, rilasciare il
bus ...
unita' centrale o processore o CPU
UNITA' CENTRALE
MEMORIA CENTRALE
10
HW: unita' centrale, memoria centrale e istruzioni macchina
11
la parte centrale del calcolatore sono i 2 componenti base,
la memoria centrale, MC, dove e' memorizzato il
programma da eseguire (cioe' l'insieme delle istruzioni
macchina da eseguire e i dati elaborati dal programma)
l'unita'centrale, UC, dispositivo elettronico progettato
per interpretare ed eseguire un insieme di istruzioni
detto "linguaggio macchina", LM, per contrasto ai vari
linguaggi di programmazione, LP,(come il C++)
ogni UC "capisce" solo il suo LM, e non altro: in
particolare, non puo' eseguire programmi scritti in altri
LM oppure in altri LP
HW: unita' centrale, memoria centrale e istruzioni macchina
12
nessuna UC puo'eseguire un programma scritto in C++ (o
in altro linguaggio di progr.) - per il semplice motivo
che l' UC capisce solo il suo LM linguaggio macchina :
un modello di un'UC in genere NON e'in grado di eseguire
le istruzioni di un altro modello: un Pentium non puo'
eseguire le istruzioni di un PPC e viceversa...
OGNI programma scritto in un linguaggio di
programmazione (ad esempio C++) diverso dal LM
DEVE essere tradotto in LM per poter essere eseguito;
i linguaggi di programmazione LP sono definiti in modo che
il procedimento di traduzione di un programma da un LP
in un LM puo' essere descritto con un programma e poi
svolto dal calcolatore stesso!
HW: unita' centrale
13
l'unita' centrale o processore
interpreta ed esegue le istruzioni macchina
di tutti i programmi in esecuzione;
il repertorio delle "istruzioni macchina" e'
limitato, circa un centinaio di istruzioni
il numero di istruzioni macchina di un unita' va da
circa 50 (macchine RISC o reduced instruction set)
a circa 200 (CISC o complex instruction set)
Fondamenti di Informatica - Ambiente hardware - l' UC
14
Unità Centrale di elaborazione o CPU (Central Processing Unit):
è il nucleo del calcolatore
dove sono eseguite le istruzioni dei programmi
e che controlla tutte le attività del computer
La CPU è oggi (*) realizzata con un singolo circuito integrato (chip) (tranne
su macchine molto grandi) ed è costituita internamente da diversi elementi:
un insieme di registri di lavoro e di altri tipi,
unità logico-aritmetiche ALU (Arithmetic and Logic Unit)
FPU (Floating Point Unit) per i calcoli matematici in virgola mobile
CU (Control Unit, Unità di Governo), gestisce l'esecuz.delle istruzioni
(*) il primo processore integrato in un unico circuito inizio anni 70
Unita' Centrale: registri, unita'funzionali, governo
15
registri dell'unita' centrale:
sono dispositivi di memoria di uno o pochi byte molto veloci:
copiare un dato in un registro (scrivere in un registro, o
"caricare" dati nel registro)
o trasmettere un dato da un registro ad un altro
(o al bus di sistema) (leggere un dato da un registro)
sono
operazioni (istruzioni macchina) molto veloci:
dell'ordine del nano secondo o frazione
0 1 1 0 1 1 1 1
Unita' Centrale: registri, unita'funzionali, governo
16
unita' funzionali sono dispositivi elettronici per
eseguire una particolare funzione, ad es. le operazioni
aritmetiche e logiche su uno o due dati (presenti in
registri dell'UC), [ALU = arithmetic and logic unit]
esempio:
prodotto logico tra due dati
ad esempio 8 bit ciascuno, dato A 0 0 1 1 0 0 1 1
dato B 0 0 0 0 1 1 1 1
risultato, dato C 0 0 0 0 0 0 1 1
somma di due numeri interi con segno
e altre (operazioni logiche ed aritmetiche,
( in particolare in genere due unita' aritmetiche, una
per dati interi ALU e una per dati floating FPU)
Unita' Centrale: registri, unita'funzionali, governo
17
l'unita' di governo (inglese "control unit") interpreta ed
esegue le istruzioni macchina (da essa escono tutti i
segnali di controllo necessari per l'esecuzione istruzioni)
per eseguire un'istruzione macchina essa DEVE essere
presente nel registro istruzioni - in genere le istruzioni
hanno un formato fisso (uno o due o pochi formati)
dalla memoria centrale
registro istruzioni
segnali di controllo
unita' di
governo
(control
unit)
Unita' Centrale: registri, unita'funzionali, governo
18
l'unita' di governo interpreta ed esegue le istruzioni
macchina ogni istruzione deve essere decodificata e poi
eseguita; il procedimento di decodifica e di esecuzione
e' scandito da un ritmo dato da un orologio interno
dalla
memoria
centrale
segnali da altri registri
segnale di orologio
registro istruzioni
segnali di controllo
unita' di
governo
(control
unit)
vie dati e vie segnali
19
un conduttore puo' portare un segnale di controllo
- un bit - (ad esempio un segnale di "apri una porta
logica e fa passare un dato da un registro all'altro")
graficamente:
un fascio di conduttori puo' portare in parallelo un
insieme di dati - di bit - da un circuito all'altro, ad
esempio
- 32 bit per un indirizzo - 64 bit per un dato graficamente:
oppure:
un insieme di conduttori che trasmette sia segnali di
controllo che segnali di dati e' detto un bus
Struttura interna di un' unita' centrale
20
BUS DATI (da e per la memoria e altri dispositivi)
Registro
accumulatore
Instruction Reg.
Altri
Registri
di
lavoro
(in totale
da uno
a 64 …)
ALU
QuickTime™ and a
decompressor
are needed to see this picture.
Interprete
istruzione
Logica di
controllo
ALT RI REGISTRI SPECIA
LI/ DI STATO/
AU SILIA RI
[ +MEMO RIA
CACHE ]
CU
Segnali di Controllo
BUS IND IRIZZ I (verso la memoria e altri dispositivi)
Fondamenti di Informatica - Ambiente hardware - l' UC
21
Unità Centrale di elaborazione o CPU (Central Processing Unit):
è il nucleo del calcolatore che controlla tutte le attività del computer.
La CPU è oggi realizzata con un singolo circuito integrato (chip) (tranne su
macchine molto grandi) ed è costituita internamente da diversi elementi:
un insieme di registri di lavoro e di altri tipi,
(ogni registro e' una piccola memoria veloce per contenere dati,
istruzioni e informazioni sullo stato dell'esecuzione dei programmi)
unità logico-aritmetiche ALU (Arithmetic and Logic Unit)
per i calcoli su numeri interi e le operazioni logiche ...
FPU (Floating Point Unit) per i calcoli matematici in virgola mobile
operazioni standard: +, -, *, /, and, or, xor, shift, ecc
CU (Control Unit, Unità di Controllo), che gestisce (attiva e controlla)
l'esecuzione delle istruzioni.
Al giorno d'oggi il termine microprocessore è sinonimo di CPU,
la maggior parte delle unita’ centrali o processori
sono realizzate in un unico circuito integrato (con milioni di componenti)
Ambiente hardware - l' UC : bus dati / bus indirizzi
22
I microprocessori si possono classificare sulla base del num. di
bit utilizzati in parallelo per i dati (calcoli/elaborazioni), ossia
parola (word) usata dalla CPU (8, 16, 32, 64 bit del BUS DATI),
sulla base del numero di locazioni (celle) di memoria primaria
indirizzabili (num. locazioni = 2N, dove N è il numero di linee
parallele del BUS INDIRIZZI; oggi usualmente N = 32 bit,
che permette di indirizzare 4 miliardi (giga) celle di memoria).
infine tra i vari dispositivi collegati tra loro dal bus viaggiano
dei segnali di comando, di controllo, di sicronizzazione ecc:
BUS CONTROLLO ;
i tre componenti assieme sono il bus di sistema
Ambiente hardware - l' UC: ciclo istruzione
23
L' unita' centarle esegue le istruzioni del programma
(solo istruzioni macchina!!) per essere eseguite le istruzioni devono essere
disponibili velocemente all'unita' centrale per tale motivo le istruzioni stanno in memoria centrale
(nota: sia le istruzioni, sia i dati di queste)
ogni istruzione macchina e' eseguita in un
"ciclo istruzione", che e':
1) prendi l'istruzione dalla memoria centrale (fetch)
2) decodifica l'istruzione (decode)
3) esegui l'istruzione con gli operandi previsti (execute)
4) prepara a prendere la prossima istruzione
per fare questo, l'U.C. ha molti registri
Ambiente hardware - l' UC - i registri PC, IR, Rk
24
registri dell' Unita' Centrale (schema semplificato)
sono piccole memorie molto veloci (meno di nano
secondi per registrare/leggere un dato); durante
l'esecuzione di un'istruzione i dati sono spesso spostati
(scritti, letti, copiati) tra i registri dell' UC (vi sono dei
bus interni per tale fine)
PC (Program Counter) - dice dove sta l'istruzione da
eseguire in memoria centrale
IR (Instruction register) - contiene il codice
dell'istruzione in corso
Registri di lavoro (ad es. 32 registri da 32 bit
ciascuno), numerati (ad es.: R0, R1, .. R31)
Ambiente hardware - l' UC - registri SR, RI,
25
Altri registri dell'unita' centrale,
(oltre ai citati PC, IR, Registri di lavoro)
SR registri di stato
(dove sono memorizzate informazioni sull'esecuzione,
ad es. il segno del risultato dell'ultima operazione
aritmetica, una particolare situazione di errore ecc)
RI registro per il controllo di interruzioni
(segnali di richiesta di attenzione da dispositivi di I/U)
Registri con indirizzi particolari, ...)
e altri
unita' centrale UC o Central Processing Unit CPU: l'unita'governo
DATA
ADDRESS
Program Counter
Instruction Register
ALU
General Register 0
General Register 1
General Register 2
General Register 3
Status Register
UNITA' DI
GOVERNO
(CONTROL
UNIT)
OROLOGIO
26
Ambiente Hardware - la CPU: l' unita' di governo
27
nota
la parte meno visibile ma piu' importante e' l'unita' di governo
(control unit) che e' un insieme di circuiti logici dove avviene la
decodifica e dove viene realizzata l'esecuzione delle istruzioni :
l'unita' di governo controlla tutti i passaggi dati e/o indirizzi
all'interno dell'unita' centrale (registri - ALU - bus esterno) via
uno o piu' bus interni; la sequenza di micro-azioni da eseguire
per eseguire un'istruzione macchina avviene in tempi molto
brevi scanditi da un "orologio" .
L'unita' di governo interpreta ed esegue le istruzioni, ogni
istruzione e' eseguita mediante una sequenza di microistruzioni, che sono a loro volta realizzate da un micro
programma (UC microprogrammate) oppure con circuiti logici
ad hoc (UC cablate)
Ambiente Hardware - l' UC: ciclo istruzione
28
1) prendi l'istruzione dalla memoria centrale, che sta
nella cella di indirizzo PC (program counter dato dal
registro PC) e metti l'istruzione nel RI registro
istruzione, schematicamente: MC[PC] -> IR
2) decodifica l'istruzione: ovvero "interpreta"
l'istruzione, e vedi cosa si deve fare
3) esegui l'istruzione ... ad es. : somma due valori
contenuti in dei registri di lavoro dell'UC e metti il
risultato in un altro registro di lavoro (* pagina dopo)
4) prepara per la prossima istruzione: cambia il valore
del registro PC in modo che esso ora dica dove sta la
prossima istruzione; se ad es. ogni istruzione e' lunga 4
byte, allora ad ogni passo si incrementa il PC di 4.
Ambiente Hardware - l' UC: ciclo istruzione
29
3) esegui l'istruzione ... ad es. :
ADD R4,R9,R10
somma due valori contenuti nei registri di lavoro
dell'UC R4 e R9 e metti il risultato in un altro registro
di lavoro R10
l'esecuzione di un' istruzione implica sempre una
sequenza (prefissata) di azioni "semplici" da fare:
l'istruzione di sopra implica ad esempio: fa passare il
dato dal R4 all'unita ALU, fa passare il dato da R9
all'ALU, attiva l'ALU con somma, preleva il risultato
dall'ALU e copialo in R10...
ciascuna di queste operazioni implica varie operazioni
elementari a livello di "porte logiche" o circuiti
elettronici che realizzano queste operazioni ...
30
Fondamenti di Informatica - Ambiente hardware
MC - memoria
centrale:
istruzioni e dati
sono prelevati
dalla MC, i
risultati vanno
in MC - c'e'
una continua
interazione tra
UC e MC !
vedremo in
seguito di piu'
sulla MC
memoria
centrale
unita'
centrale
RL0
RLk
istruzione
PC
bus
interno
(dati,
segnali)
RS
IR
PC
bus (dati,indir.,controllo)
altri dispositivi
Fondamenti di Informatica - Ambiente hardware
memoria
centrale
unita'
centrale
RL0
RLk
istruzione
PC
bus
interno
(dati,
segnali)
RS
IR
PC
bus (dati,indir.,controllo)
altri dispositivi
31
ciclo istruzione
inizia con la fase di
recupero o fetch:
l'UC chiede alla
MC di leggere il
contenuto della
cella di memoria di
indirizzo PC
(program counter)
-> questo e' l'
istruzione da
eseguire ! essa va
messa nel registro
IR
Fondamenti di Informatica - Ambiente hardware
memoria
centrale
unita'
centrale
RL0
RLk
istruzione
PC
bus
interno
(dati,
segnali)
RS
IR
PC
bus (dati,indir.,controllo)
altri dispositivi
32
l'istruzione che si
trova nel registro
IR viene
decodificata
dall'unita' di
governo, e quindi
eseguita
Fondamenti di Informatica - Ambiente hardware
memoria
centrale
unita'
centrale
RL0
RLk
istruzione 1
PC
istruzione 2
istruzione 3
bus
interno
(dati,
segnali)
RS
IR
PC
bus (dati,indir.,controllo)
altri dispositivi
33
finite le fasi di
recupero+decodifica
+esecuzione si passa
alla prossima
istruzione: cambia il
PC in modo che
corrisponda all'
indirizzo della pros
sima istruzione : e
fine ciclo istruzione
e inizio del prossimo
ciclo istruzione (con
un nuovo PC, e con i
registri dell'UC
cambiati)
memoria centrale
la memoria centrale "sa"
eseguire due comandi:
scrivi un dato X in
memoria all'indirizzo I,
cioe' copia un insieme di
bit X (da 8 a 64) dal bus
dati (X fornito dall' UC)
in una cella di indirizzo I
leggi un dato X dalla
memoria dall'indirizzo I
cioe' copia un insieme di
bit X da una cella di
memoria di indirizzo I sul
bus dati :
34
controllo memoria
bus dati
X
bus indirizzi
I
I
X
celle di
memoria
...
Fondamenti di Informatica - Ambiente hardware
memoria
centrale
unita'
centrale
RL0
RLk
bus
interno
(dati,
segnali)
RS
IR
PC
bus (dati,indir.,controllo)
altri dispositivi
35
Ciclo istruzione
36
un programma in linguaggio macchina istruzioni (qui solo
quattro istruzioni, codici 3,4,7,9) e dati (qui tre dati)
indirizzo
di memoria
097
098
099
101
102
103
104
105
contenuto
della cella
000022
000033
000000
3 097 R1
3 098 R2
7 R1,R2,R3
4 099 R3
9 00
commento
dato 22
dato 33
risultato
istruzione 3 preleva (load) in R1
istr. 3 preleva da MC in R2
istr. 7 somma R1 e R2, ris in R3
istr. 4 memorizza da R3 in MC
istr 9 stop (oggi non esiste piu')
Il "programma" esegue una somma di due numeri, prelevati
dalla MC agli indirizzi 97 e 98, e poi memorizza il risultato in
MC all'indirizzo 99, dove alla fine troveremo il valore 55.
un frammento programma in linguaggio macchina/assembl. 37
indirizz
di mem
097
098
099
101
102
103
104
105
contenuto
della cella
000022
000033
000000
3 097 R1
3 098 R2
7 R1,R2,R3
4 099 R3
9
istruzione ; commento
assembler
x dec 22
; dato 22, indirizzo MC x=97
y dec 33 ; dato 33, indirizzo MC y=98
z bss 1
; cella per il risultato indir.z
L R1,x
; 3=preleva (load) in R1
L R2,y
; 3=preleva da MC in R2
A R1,R2,R3; 7=somma R1+R2 ->R3
St R3,z
; 4=memorizza R3 in MC
Stop
; 9=stop (non esiste piu')
Il "programma" esegue una somma di due numeri, prelevati
dalla MC agli indirizzi 97 e 98, e poi memorizza il risultato in
MC all'indirizzo 99, dove alla fine troveremo il valore 55.
Nota che le istruz.macchina 3 e 4 hanno due operandi, la 7 ha tre
operandi (addendi e risultato), la 9 non ha alcun operando.
Ciclo istruzione
097
098
099
101
102
103
104
105
000022
000033
000000
3 097 R1
3 098 R2
7 R1,R2,R3
4 099 R3
9 00
38
dato 22
dato 33
risultato
istr. 3 preleva (load) in R1
istr. 3 preleva da MC[98] in R2
istr. 7 somma R1 e R2, ris in R3
istr. 4 scrivi da R3 in MC[99]
istr 9 stop (oggi non esiste piu')
vediamo piu' in dettaglio l'esecuzione:
*) fase fetch o prelievo istruzione: all'inizio il registro PC
contiene l'indirizzo della prima istr. da eseguire (qui PC=101); il
valore del PC viene trasmesso alla MC (bus indirizzi) assieme al
comando leggi, la MC legge dalla cella di memoria di indirizzo
101 il suo contenuto e lo passa attraverso il bus dati all'UC, che
lo scrive (lo memorizza) nel registro IR
Ciclo istruzione
097
098
099
101
102
103
104
105
000022
000033
000000
3 097 R1
3 098 R2
7 R1,R2,R3
4 099 R3
9 00
39
dato 22
dato 33
risultato
istr. 3 preleva (load) in R1
istr. 3 preleva da MC[98] in R2
istr. 7 somma R1 e R2, ris in R3
istr. 4 scrivi da R3 in MC[99]
istr 9 stop (oggi non esiste piu')
[ continua esecuzione ]:
*) terminato il prelievo l'istruzione sta in IR; inizia ora la
**) fase di esecuzione dell'istruzione: l'istruzione deve essere
decodificata (in base al codice che sta in una parte fissa
dell'istruzione) e quindi eseguita (e qui l'esecuzione dipende
dalla particolare istruzione: l'istruzione 0 = NO-Operation
(istruzione vuota) non fa nulla, l'istruz. FD R1,R2,R3 floating
divide puo' richiedere molti cicli base della macchina
Ciclo istruzione
097
098
099
101
102
103
104
105
000022
000033
000000
3 097 R1
3 098 R2
7 R1,R2,R3
4 099 R3
9 00
40
dato 22
dato 33
risultato
istr. 3 preleva (load) in R1
istr. 3 preleva da MC[98] in R2
istr. 7 somma R1 e R2, ris in R3
istr. 4 scrivi da R3 in MC[99]
istr 9 stop (oggi non esiste piu')
ciclo istruzione:
*) fetch: metti in IR l'istruzione che sta in M.C. all'indir.PC
**) l'istruzione e' decodificata nell'U.di Governo e poi eseguita
***) il PC viene messo all'indirizzo della prossima istruzione:
se l'istruz.corrente e'lunga 1,2,k celle, allora si incrementa il PC
di 1,2,k unita';
097
098
099
101
102
103
104
105
000022
000033
000000
3 097 R1
3 098 R2
7 R1,R2,R3
4 099 R3
9 00
Ciclo istruzione
dato 22
dato 33
risultato
istr. 3 preleva (load) in R1
istr. 3 preleva da MC[98] in R2
istr. 7 somma R1 e R2, ris in R3
istr. 4 scrivi da R3 in MC[99]
istr 9 stop (*) oggi non esiste piu'
41
il ciclo istruzione :
recupera istruzione, decodifica, esegue, aggiorna il PC (all'indirizzo della
prossima istruzione)
Questo ciclo e' ripetuto per ogni istruzione eseguita dalla
macchina, nel nostro caso, per cinque istruzioni:
PC<-101, {3 097 R1}-> IR, esegui quindi l'istruzione 3, ...
(*) NOTA: nelle UC correnti NON esiste l'istruzione di arresto (stop),
l'UC esegue continuamente delle istruzioni
dal momento di accensione fino a che si spegne
formato istruzione
42
Ogni istruzione e' composta da una o piu' informazioni:
* operazione da fare o codice istruzione:
da 4 bit (al massimo 16 istruzioni) a
8 bit (al massimo 256 istruzioni)
qui assumo 8 bit per il codice istruzione;
* operandi (da zero a piu');
ad es. l'istruzione all'indirizzo 101:
3 097 R1 ;"preleva (load) in R1 da mem.di indirizzo 091)"
(con due operandi) potrebbe avere il formato:
8 bit
16 bit
istruz 3 indirizzo memoria 091
in totale 29 bit ...
5 bit
indirizzo registro 01
formato istruzione
43
abbiamo visto che l'istruzione
"preleva (load) in R1 da mem.di indirizzo 091)" :
3 097 R1 potrebbe avere il formato (in totale 29 bit)
8 bit
16 bit
istruz indirizzo memoria
5 bit
indirizzo registro
MA se ho la memoria centrale con 4G di celle di
memoria? allora devo avere la possibilita' di
indirizzare 4G indirizzi, e quindi devo avere 32 bit per
un indirizzo di memoria centrale - formato istruzione:
8 bit 32 bit
5 bit
istruz indirizzo memoria indirizzo registro
in totale 45 bit ...
formato istruzione
44
formati di altre istruzioni:
somma due valori dati nei registri Rk e Rl e metti il
risultato nel registro Rm
-tre operandi "brevi" da 5 bit - 15 bit per operandi
salta all'indirizzo z (metti il valore z nel registro PC)
-un operando "lungo" = indirizzo di memoria (32 bit)
non fare nulla e passa alla prossima istruzione
-zero operandi (zero bit per operandi)
gruppi di istruzioni: istruzioni di aritmetica e logiche
45
non affrontiamo la codifica delle istruzioni macchina ...
ricordiamo solo alcuni gruppi principali di istruzioni
macchina, presenti in tutte le UC correnti:
1) istruzioni aritmetico/logiche
(+,-,*,/, and,or,xor,complem, scorrimento,...),
con operandi nei registri oppure in memoria centrale
(oggi le UC tendono a avere istruzioni aritm./logiche
con operandi SOLO nei registri, e NON in memoria
centrale, perche' questo rallenta l'UC: l'accesso alla
MC e' sempre molto piu' lento dell'accesso ai registri
(ordine di grandezza: MC: circa 1/2..1/50 di micro
secondo, Registro: 10-100 volte di meno)
famiglie di istruzioni macchina - istruzioni logiche
nota: le istruzioni logiche fanno eseguire alla ALU
(unita' aritmetico-logica) le operazioni booleane
bit per bit; es:
se il registro R1 = 0 1 0 0 1 1 0 0
se il registro R2 = 1 1 1 1 0 1 0 0
------------------allora R1 and R2 = 0 1 0 0 0 1 0 0
e
R1 or R2 = 1 1 1 1 1 1 0 0
e
R1 xor R2 - 1 0 1 1 1 0 0 0
46
formato istruzione
47
1) istruzioni aritmetico/logiche
2) istruzioni di spostamento (move) dati:
Registro -> Registro, (esecuzione veloce)
memoria centrale -> registro (move o load),
registro -> memoria centrale (move o store) ...
le istruzioni Load e Store (o Move da/a MC)
richiedono un'accesso alla MC, che e' piu' lenta;
per rendere l'accesso alla MC piu' veloce si usa una
memoria intermedia di transito, detta cache memory,
dove stanno i dati (blocchi di MC) in uso corrente;
la cache puo' essere un dispositivo separato
o / e incorporata nell'UC;
gruppi di istruzioni
48
gruppi di istruzioni: 1) aritmetico/logiche
2) spostamento dati
3) controllo sequenza (flusso) di esecuzione:
salto (dalla istruzione corrente si salta ad altra
istruzione, di cui si specifica l'indirizzo di memoria)
4) salto condizionato (test) - salta se si verifica
qualcosa, ad es. se il valore in un registro e' zero...
oppure se il risultato dell'ultima operazione aritmetica e' negativo, oppure se c'era un overflow ...
gruppi di istruzioni
49
gruppi di istruzioni:
1) aritmetico/logiche
2) spostamento dati
3) salto non condizionato
4) salto condizionato
5) istruzioni di conteggio, di ciclo, di ripetizione ...
sono la realizzazione a livello di linguaggio macchina di
cicli di istruzioni da ripetere n volte, quindi con uso di
contatore (registro), test, salto condizionato ecc...
ciclo istruzioni macchina
097
098
099
101
102
103
104
105
106
107
000011
000001
000000
3 097 R1
3 098 R2
7 R2,R2,R2
8 R1,-1
10 R1,103
4 099 R2
9 00
50
; dato 11
; dato 1
; risultato
; metti 11 in R1
; metti 1 in R2
; somma R2 e R2, ris in R2
; decrementa R1 di uno
; salta in 103 se R1 >= 0
; metti R3 in MC[99]
; istr 9 stop (non esiste piu')
e' un ciclo di istruzioni che viene eseguito 11 volte,
ad ogni passo viene raddoppiato il valore in R2 (1+1=2,
poi 2+2=4, poi 4+4=8, ecc)
gruppi di istruzioni
gruppi di istruzioni:
1) aritmetico/logiche
2) spostamento dati
3) salto non condizionato
4) salto condizionato
5) istruzioni di conteggio, di ciclo, di ripetizione ...
6) istruzioni di salto a sottoprogramma
consentono l'uso di gruppi di istruzioni
di uso frequente, con salto e ritorno
all' istruzione seguente il salto
51
52
gruppi di istruzioni
1) aritmetico/logiche
2) spostamento dati
3) salto non condizionato
4) salto condizionato
5) istruzioni di conteggio, di ciclo, di ripetizione ...
6) istruzioni di salto a sottoprogramma
7) istruzioni di gestione di interruzioni, cambio stato
istruzioni privilegiate (riservate a programmi eseguiti
in "stato privilegiato"), come controllo dei dispositivi di
ingresso e uscita ...
nota: ogni UC ha almeno un particolare registro dove sono
raccolte le informazioni sullo stato dell'unita' centrale ,
sull'ultimo risultato aritmetico, e altro e' lo STATUS REGISTER
gruppi di istruzioni
53
1) aritmetico/logiche
2) spostamento dati
3) salto non condizionato
4) salto condizionato
5) istruzioni di conteggio, di ciclo, di ripetizione ...
6) istruzioni di salto a sottoprogramma
7) istruzioni di gestione di interruzioni, operazioni di
ingresso/uscita, di cambio dello stato
l'UC puo' essere in uno di due stati diversi:
* stato utente (in cui sono vietate alcune istruzioni
"pericolose") se si sta eseguendo un programma di un
utente normale
* stato supervisore (in cui l' UC puo'eseguire tutte le
istruzioni) se e' in esecuzione un programma del
sistema operativo
microcodice
54
l'unita' di governo (che interpreta ed esegue le istruzioni
macchina) puo' a sua volta essere realizzata come una micro
unita' centrale; in tal caso un'istruzione macchina corrisponde
a un micro-programma dell'unita' di governo:
firmware nella UC = microcodice con cui vengono gestite le
funzioni hardware da parte della UC, come ad es. l’esecuzione
delle istruzioni macchina:
la gestione dell' accesso alla memoria,
il prelevamento delle istruzioni (fetch) e
la decodifica delle istruzioni da eseguire.
I microprogrammi sono generalmente cablati (fissati)
all'interno dei chip, e gestiscono le problematiche più vicine
all'hardware;
i microprogrammi sono parte essenziale dell’unita' di governo
che gestisce l'unita' centrale.
memoria centrale
55
MEMORIA CENTRALE
ambiente hardware : memoria centrale
56
MC memoria centrale
o memoria principale (primary memory):
la memoria è il dispositivo che rende “programmabile” il
calcolatore stesso:
la memoria immagazzina e rende disponibili / modificabili
sia i programmi (le sequenze di istruzioni da eseguire) sia le
informazioni (i dati) relativi ad ogni elaborazione con tempi
di accesso molto piccoli (meno di 10E-7 =100 miliardesimi di
secondo= 100 nanosecondi) ma maggiori dei tempi dell'UC.
E' formata da cellette (locazioni di memoria), ognuna con un
indirizzo univoco (arriva dalla CPU mediante il BUS
INDIRIZZI) e ognuna contenente le informazioni (dati e/o
istruzioni) codificate in binario, con numero bit fisso (8..64)
Fondamenti di Informatica - Ambiente hardware
57
La memoria MC "sa" fare due cose:
memorizzare un dato - in risposta al comando:
" scrivi in memoria nella cella di indirizzo xxx
il dato zzz"
zzz -> MC[ xxx ]
"leggi dalla memoria il dato zzz che si trova nella
cella di indirizzo xxx"
MC[ xxx ] -> zzz
per farlo, si deve avere un collegamento con:
bus indirizzi (unidirezionale, in ingresso alla memoria)
bus dati (bidirezionale, scrivo in MC, leggo da MC)
bus di controllo (leggi/scrivi, lavora/non lavora..)
-->> bus indirizzi fissa quante celle ho al max in MC
-->> bus dati fissa il formato di ogni cella (unico!)
Memoria Centrale
00000001
00000002
00000003
00000004
00000005
00000006
00000007
...
0FFFFF8
0FFFFF9
0FFFFFA
0FFFFFB
0FFFFFC
0FFFFFD
0FFFFFE
0FFFFFF
07
10
FF
00
58
bus di controllo
bus indirizzi
bus dati
operazioni sulla MC:
scrivi un dato in memoria = store
leggi un dato dalla memoria = fetch
memoria centrale
alcune caratteristiche della memoria centrale :
tempo di accesso - costante o variabile?
durata della memorizzazione - limitata?
organizzazione - insieme di celle di memoria ...
tecnologia - elettronica / magnetica ...
controllo / correzione di errore
...
59
memoria centrale 60
la memoria centrale e' in gran parte memoria RAM:
(random access memory) =
memoria in scrittura e in lettura,
detta RAM perche' il tempo di accesso alle singole
celle e' costante con qualunque sequenza di accesso,
anche casuale; contiene i programmi in esecuzione
e in parte e' memoria ROM, (read only memory)
dove vengono preregistrati alcuni programmi
(di primo avvio, quelli piu' usati dal sistema ecc)
in maniera indelebile (nota: la rom e’ anche ram,
ma una ram di solito non e’ rom, si puo' solo leggere)
nota: la memoria RAM e' "volatile", nel senso che se
manca l'alimentazione elettrica si perdono tutti i dati
ivi memorizzati (e quindi si perde il lavoro corrente :-(
Livelli di memoria
61
Nei calcolatori la memoria M (per le istruzioni e i dati) è
strutturata in livelli a seconda del tempo di accesso e della
relativa “vicinanza” all’ unita’ centrale UC:
• registri dell’UC (circa 1 nano secondo)
• cache memory (memoria molto veloce 10-30 nanosec., spesso
integrata nell’ UC) bufferizza istruzioni e dati cioe'
e' un tampone [transito] tra CPU e Mem
• memoria principale (ad accesso diretto, RAM e ROM, veloce
40-80 nanosec., organizzata in “banchi”, chip ad altissima
integrazione) - comunica con l'UC attraverso il bus di sistema
•memoria di massa (tecnologie molteplici magnetiche, ottiche,
ecc.; tempi di accesso di qualche millisecondo, alta capacità di
memorizzazione – dell’ordine di centinaia di giga byte)
livelli di memoria
62
se scendo di livello (mi allontano dall'UC),
la capacita' di memoria aumenta
il costo per bit diminuisce
il sistema operativo che gestisce tutte le risorse
(componenti HW e SW) del calcolatore ha tra i suoi
compiti principali quello di far apparire al
programmatore la memoria in modo uniforme con
capacita' "quasi" uguale alla memoria di massa e
con prestazioni (velocita'di accesso) "quasi" uguali alla
memoria centrale
circuiti di selezione di una cella di memoria
circuiti di selezione di una
cella di memoria:
un esempio di memoria
composta da 64 celle (64=2^6,
in binario posso contare da 0
a 63 usando 6 bit, per cui
servono 6 linee di indirizzo):
sara' attivata la cella all’
indirizzo 010101 (in binario,
ovvero: 010 101 = 2a riga, 5a
colonna) e verra' scritto o
letto il dato di tale cella
(in figura, la cella più scura)
R
o
w
R
o
w
S
e
l
e
c
t
a
d
d
r
e
s
s
R/W
data
Address
bit
0
1
0
1
0
1
C
O
N
T
R
O
L
Read/write Circuitry
Column Select
Column address
63
memoria centrale
64
memoria centrale (RAM) tecnologia a semiconduttori,
e' volatile (perde le info se si spegne) circuiti integrati
di tipo SIMM (Single Inline Memory Module con il bus
dati a 32 bit) o DIMM (Dual Inline Mem Module con il
bus dati a 64 bit),
l'integrato (la schedina) si inserisce su uno zoccolo (socket)
presente sulla "scheda madre" , supporto dove sono messi i
componenti "centrali" collegati dal bus di sistema
DRAM: Dynamic RAM ogni bit e' rappresentato dallo
stato di un transistor, necessitano di un ripristino dello
stato (refresh) a ciclo molto stretto (circa 1 ms);
SRAM (Static RAM – piu' transistor per bit, non
occorre il refresh)
memoria centrale
65
esistono infine memorie "riscrivibili", con tempi di
lettura e di scrittura diversi (scrittura piu' lenta), dove
l'informazione rimane anche in assenza di corrente:
es.: memorie EPROM (Erasable Programmable ROM)
es.: le memorie periferiche "flash" usate per trasporto
informazioni
es.: un controller di impianti o di macchinari (una
lavatrice) dove un piccolo calcolatore (un integrato che
comprende sia l'unita' centrale sia le memorie ROM,
RAM e EPROM) gestisce dei segnali (sia in ingresso sia
in uscita) - in questi casi la memoria NON deve essere
volatile.
dischi
66
MEMORIE DI MASSA
O
DISCHI
Memorie di massa
67
dischi magnetici : da 30 anni i principali dispositivi di
memorizzazione permanente nei calcolatori.
floppy disk (dal 1975 circa)
hard disk (dal 1965 circa)
sono organizzati in:
tracce (tracks) circolari in cui viene registrata
l’informazione letta/scritta da apposite testine (head) di
lettura/scrittura; si parla di cilindri (cylinder) sugli hard
disk, individuati dal numero di “piatti” sovrapposti con cui è
realizzato il disco (2 lati utilizzabili per piatto). ... ogni
traccia e' divisa in :
settori (sector) che suddividono le tracce in modo che
l’informazione sia organizzata “a blocchi” (512, 1024 byte,...)
Fondamenti di Informatica - Dischi
68
Il disco ha le informazioni organizzate in blocchi di byte
singolarmente indirizzabili (leggibili/scrivibili)
dette settori:
un settore = parte di una traccia = parte di una
superficie = parte di una pila di dischi concentrici...)
questa organizzazione deve essere preregistrata (il disco
deve essere "formattato"),
ogni traccia ha un indirizzo,
ogni settore nella traccia ha un indirizzo:
il settore e' la minima unita' singolarmente indirizzabile
e singolarmente scrivibile / leggibile;
conviene (per vari motivi) considerare piu' settori come
un unico elemento singolarmente indirizzabile (leggibile
e scrivibile) detto blocco o cluster di settori
Fondamenti di Informatica - Dischi
69
La dimensione di un disco si calcola pertanto così:
dim = nun_head * num_trac * num_sect * dim_sect
Esempio (floppy disk 1985):
1.44 Mb = 2 heads * 80 tracks * 18 sect * 512 bytes
Esempio (hard disk 1995):
540 Mb = 32 heads * 532 cyl *63 sect * 512 bytes
(dati di 4 anni fa ;-)
"oggi" (2002) sono in commercio dischi da 160Gb e +
dischi
70
esercizio:
reperire su rete le prestazioni di un disco fisso corrente
capacita' (in numero byte totali per un'unita'disco)
tempo di accesso (per iniziare un'operazione di I/U: minimo,
medio, massimo)
velocita' di rotazione (giri/minuto)
densita' di registrazione (bit/pollice)
numero testine (di un'unita')
costo
costo / byte
probabilita' di errore (num.errori/num.byte trasmessi)
cache (memoria tampone per aumentare le prestazioni)
interfaccia (SCSI,IDE,...)
Dischi
71
sul (sui) disco/i fisso sono registrati i dati e i programmi
degli utenti (uno o piu') della macchina:
(storicamente erano registrati su nastro magnetico)
un record = una registrazione di un singolo dato utente
un file = un insieme di record o dati correlati tra loro
file = archivio dati, programma, immagine, canzone ...
nota che un file puo' contenere zero o piu' record;
il numero dei file su disco varia, ma in genere e' molto
alto (un prodotto medio di software si compone oggi di
migliaia di pezzi):
abbiamo bisogno di un sistema di gestione dei dischi
(file system, fa parte del sistema operativo, e' SW)
Dischi
72
il numero dei file su disco e' molto alto:
abbiamo bisogno di un sistema di gestione dei dischi
file system,
il file system fa parte del sistema operativo, (e' SW)
mantiene su ogni disco le informazioni necessarie per
gestire tutto lo spazio di memoria su disco:
* spazio libero su disco,
* spazio occupato dagli archivi presenti su disco(file),
* zone con errori (ogni dato registrato su disco e'
sempre corredato di un controllo di errore)
e per gestire tutta la struttura gerarchica dei file (livelli
organizzati a "cartelle" di "cartelle" di ... ), a partire
dall'indice iniziale o radice del sistema fino ad ogni
singolo file utente / sistema ...
Fondamenti di Informatica: le Periferiche I/O
Periferiche I/O
Le unità di Ingresso/Uscita (Input/Output) sono
utilizzate per mettere in comunicazione il calcolatore
con il mondo esterno (quindi anche con l’utente)
• tastiera
• display
• mouse
• porte seriali e parallele
• connessioni audio / video
• connessioni di rete (di vario tipo)
• sensori (segnali di ingresso)
• attuatori (segnali di uscita)
73
Fondamenti di Informatica - Periferiche I/O
un dispositivo periferico in genere:
* esegue una ricodifica dei dati
(da rappresentazione esterna
a rappresentazione interna e viceversa)
* inpacca / dispacca i dati
* trasmette dati
* controlla i dati trasmessi
* mantiene l'informazione sul proprio stato
(pronto, err, spento..)
ed e' in genere composto da una parte elettronica
e una parte elettromeccanica ...
74
ambiente HW - schermo
75
schermo=dispositivo principale di uscita informazioni;
lo schermo e' (quasi sempre) formato da un reticolo di
elementi immagine (pixel = picture element), dove
appaioni le informazioni destinate all'utente; le
informazioni sono in forma di testo e in forma grafica;
le informazioni in forma grafica sono di vario tipo,
due categorie principali:
disegni vettoriali (risultato di una sequenza di comandi
di visualizzazione o di tracciamento di elementi grafici
elementari (punto, linea, poligono),
disegni a raster (matrice di num_righe x num_colonne)
ogni elemento e' un pixel, con associato il suo colore
schermo
76
precisione dello schermo:
dai primi schermi alfanumerici (anni 60-70) con
schermo di 24 righe per 80 colonne di caratteri, tipico
per un terminale di un sistema Unix, o di un PC, fu
mantenuto con il DOS fino a meta' anni 90;
"breve storia" (vedi internet) schermi grafici
(Apple II, 1977, (600$ nel 77=6000$ oggi) circa 300x190,
(4 AppleII erano "il" lab.didattico di calcolatori 1983)
CGA (1981, 320x200,4 colori,Color Graphics Adapter)
VGA (1987, 640x480, 8 bit/pixel, Video Graphics Adap)
XGA(1990, 800x600, 24 bit/pixel,Extended Graphics A)
SVGA (1990, 1600x1200, 24 bit/pix,Super VGA)
AGP (1997, 2048x1536, 32bit/pix,AcceleratedGr.Port)
(vedi su rete, beginners computer history ... )
scermo
77
tecnologia:
primi schermi grafici erano vettoriali, la "penna"
luminosa tracciava direttamente una linea (un punto)
sullo schermo (1960..70, vedi Tektronix), era
l'equivalente elettronico dei plotter meccanici;
poi schede grafiche: memoria bit-map corrispondente
all'immagine schermo, riempita dal programma e usata
per visualizzare il reticolo di pixel sullo schermo (il ZX81
di Sinclair (costo 500.000 lire, tastiera di plastica, da connettere
al TV di casa, la stessa UC, un Z80, era usata meta' tempo per
l'esecuzione programmi e meta' per fornire l'immagine dal
bitmap al circuito RF per il TV)
display LCD ... (Liquid Crystal Display)
display a plasma ... (usato per la HighDefTV) ...
hardware - prestazioni
78
Prestazioni calcolatore (indicative) al 85/97/00/02/04 :
istruzioni al secondo: 10/50/800/1800/3000 milioni
(NB: istruzioni/sec - diverso dal ritmo base dell' UC, o clock di
sistema (piu' veloce), diverso dalle prestazioni del bus di sistema
(piu'lento) e dai tempi della MC
caratteri (byte) memoria centrale 4/32/128/500/1000
milioni (Mega) byte
caratteri di spazio su disco fisso 0,010/1/20/100/..
miliardi (Giga) byte
schermo (pixel): 640x480/ 1000x800 / 1600 x 1200, con
24/32 bit di informazione/colore per pixel ...
costo HW (un PC) 800 - 5000 € ....
hardware - riassumendo l'architettura del calcolatore
79
architettura del calcolatore:
l'Unita' Centrale,
la Memoria Centrale (RAM e ROM)
collegamento tra le unita' o bus di sistema
connettori per altre unita' (dischi ecc)
il tutto sta su un supporto fisico detto "scheda madre"
o motherboard,
hardware: cheda madre
80
"Scheda Madre o Mother Board"
e' un supporto fisico
dove sono fissati i componenti principali
ovvero unita' centrale
memoria centrale
connettori per gli altri componenti
ma anche alcuni componenti completi,
il tutto collegato con un "bus" di sistema,
ovvero con un insieme di conduttori per i segnali di
controllo e dati scambiati dai vari componenti...
ad una velocita' in genere abbastanza inferiore al ritmo
base dell'unita' centrale (1/4 e meno)
hardware - riassumendo le caratteristiche
Riassumendo:
Le caratteristiche importanti che differenziano i
calcolatori oggi sono:
• velocità di esecuzione delle istruzioni
• affidabilità e resistenza agli errori hardware
• costo complessivo in rapporto alle prestazioni
• organizzazione della memoria
(centrale e periferica)
• numero e varieta' di connettori ad altri dispositivi
e altre carateristiche come peso, tipo scatola, batterie, colore, marca, provenienza,
... ;-)
81
hardware - architetture - macchine Von Neumann
82
Architetture di calcolatori
l’architettura della maggior parte dei calcolatori
si basa ancora oggi sul modello di Von Neumann:
unita' centrale con registri PC (indirizzi istruzioni),
IR (instruction register), registri di lavoro/di stato,
programma da eseguire che sta in memoria centrale,
istruzioni e dati nella stessa memoria,
.. questa idea (di un gruppo di persone, tra cui Von
Neumann che firmo' un documento conoscitivo del
progetto ...) e' alla base di tutti i calcolatori dal 1948 in
poi, e differenzia il calcolatore di oggi dai tentativi
precedenti (l'idea risale al 1830 circa, di C.Babbage)
hardware - architetture - macchine Von Neumann
83
l’architettura dei calcolatori basata sul modello di Von
Neumann "resiste" a tutt'oggi fin dagli anni 1950 si era compreso che un modo per
accelerare i tempi di un'elaborazione era quello di
eseguire contemporaneamente (in parallelo nel tempo)
quante piu' operazioni possibile;
gia' agli inizi del 1960 alcuni dispositivi di I/U
potevano lavorare in parallelo all' UC (I/O channel)
il passo successivo era di eseguire gruppi di istruzioni
in parallelo, ovvero di avere piu'UC attive in parallelo
non esiste un prototipo comune per i calcolatori
paralleli ==>
hardware - architetture - macchine NON Von Neumann
84
Architetture di calcolatori
l’architettura dei calcolatori non si basa più sul solo
modello di Von Neumann, ma anche su piattaforme
più complesse (Non Von-Neumann, calcolatori
paralleli e distribuiti).
La classificazione proposta da Flynn (anni 70) si basa
sul concetto di flussi di informazioni, ossia su come le
informazioni “viaggiano” all’interno dei calcolatori e
sul ruolo distinto tra:
•flusso dei dati (data stream)
•flusso delle istruzioni (instruction stream)
hardware - architetture - macchine NON Von Neumann
85
L’elaborazione in un calcolatore si distingue in:
• seriale nel tempo (un' istruzione lavora su un dato, in ogni
istante viene eseguita 1 istruzione, le istruzioni sono eseguite in
sequenza nel tempo, una dopo l'altra, in serie (*), sono
macchine alla Von Neumann,
SISD = Single Instruction (stream) Single Data (stream)
• parallela nel tempo (*) : piu’ istruzioni e/o piu’ dati elaborati
contemporaneamente, macchine non Von Neumann,
SIMD = Single Instruction Multiple Data
MISD = Multiple Instruction Single Data
MIMD = Multiple Instruction Multiple Data
(*) in realta' c'e' sempre un parallelismo: un byte (8 bit) almeno, sono
(all'interno) sempre trattati in parallelo; solo nella porta seriale i bit
viaggiano uno alla volta...) oggi sono elaborati in parallelo 32 o 64 bit...
hardware - architetture - macchine NON Von Neumann
Architetture Non-Von Neumann
ELABORAZIONE
Seriale
SISD
SIMD
Macchina
di Von
Neumann
Array
processors,
Connection
Machine
Parallela
MISD
Pipeline
(struttura attuali
microprocessori)
MIMD
Architetture
multi-processors
e
multi-computer
86
parallelismo delle macchine Von Neumann
87
nei calcolatori correnti c'e' in genere una (o due) unita'
centrale che riesce a fare un gran numero di attivita'
contemporaneamente:
* vi sono 2 o piu' unita' aritmetiche separate, ciascuna
in grado di eseguire delle operazioni
indipendentemente,
* c'e' una "pipeline" o catena di montaggio dove le
istruzioni sono prelevate ed eseguite piu' di una alla
volta (mentre un'istruzione A e' gia' nella fase di
terminazione di esecuzione, l'istruzione B (che segue la
A) inizia l'esecuzione, l'istruzione C (che segue la B) e'
in fase di recupero, ...)
parallelismo
* le operazioni di I/U sono eseguite in parallelo
all'attivita' dell' UC
(canali di I/U "autonomi", sono dei calcolatori
specializzati alla trasmissione dati da dispositivo
periferico (disco) a memoria centrale e viceversa,
presenti dagli anni 60 nei mainframe)
il tutto al fine di velocizzare
> il tempo di esecuzione medio delle istruzioni (per
l'UC)
> e dell'elaborazione nel suo complesso (per il
calcolatore)
88
misura delle prestazioni
89
si noti che esistono varie
tecniche di misura delle prestazioni di un calcolatore
“benchmark"
ma sono spesso poco affidabili, perche' in genere
eseguite su insiemi di istruzioni e/o dati scelti in modo
da favorire il modello sotto misura ...
(vedere su rete...)
parallelismi
nota: gia' dagli anni sessanta si inizia a rendere
l'esecuzione dei programmi piu' veloce
sia facendo eseguire delle attivita' in parallelo
(tipicamente l'esecuzione delle istruzioni da parte
dell'unita' centrale e l'esecuzione di ingresso / uscita
dati da parte di dispositivi periferici;
sia con strutture con piu' unita' centrali indipendenti
che eseguono ciascuna delle istruzioni ... -> macchine
parallele, esecuzione parallela di programmi
ma l'evoluzione della tecnologia per una singola CPU
(modello Von Neumann) ha sempre raggiunto le
prestazioni di queste "super" macchine in genere
costosissime ...
90
elaborazione parallela
91
un'esempio di elaborazione parallela:
un procedimento di calcolo complesso viene scomposto
in parti eseguibili contemporaneamente, che sono poi
assegnate a molti calcolatori collegati in rete (internet);
un esempio dei problemi dell'elaborazione parallela:
vi sono alcune attivita' scomponibili in parti che
possono essere eseguite contemporaneamente,
esempio: costruzione di una casa prefabbricata (vi sono
perfino gare di velocita')
ma vi sono anche attivita' difficilmente scomponibili in
parti eseguibili contemporaneamente, es: scavo di un
fosso di diametro di un metro, profondo 20 metri ...
elaborazione parallela
92
per l'elaborazione sequenziale esistono modelli
"classici" da molto tempo, tuttora validi:
* formalismo: la macchina di Turing
* macchina reale: il modello di von Neumann;
per l'elaborazione parallela non esiste un unico
modello formale che possa essere usato per tutti i casi,
ne' esiste una macchina parallela reale che possa essere
usata convenientemente per tutti i problemi
parallelizzabili;
hardware
93
fine presentazione
della parte relativa all'ambiente
HARDWARE
Scarica

DambHW1 - UniNa STiDuE