Informatica Generale
Susanna Pelagatti
email: [email protected]
Ricevimento:
Mercoledì ore 14.30-17.30
presso
Dipartimento di Informatica, Via Buonarroti, 2
stanza 346 DE Tel. 050.2212.772
o per posta elettronica
Pagina web del corso:
http://www.di.unipi.it/~susanna/IG02/
1
La struttura hardware
2
Ritorniamo alla …. struttura generale
di un calcolatore
• Il calcolatore di Von Neumann
Memoria
(RAM,dischi, etc)
Mantiene
Dati e Programmi
Processore
(CPU)
E’ un esecutore capace
di interpretare i singoli passi
richiesti dai programmi
(istruzioni elementari)
Sottosistema
di Interfaccia
Permette di comunicare
dati e programmi alla
macchina e di ottenere i
risultati (tastiera, micr.,
stampante, schermo, )
3
Struttura di un calcolatore (2)
RAM
(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
schermo
dischi
mouse
modem
4
Struttura di un calcolatore (3)
Sequenza di parole (un array …)
indirizzi
0
1
2
3
4
RAM
(memoria centrale)
Processore
.
.
.
bus
Linee dati, indirizzi e controllo
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
schermo
dischi
mouse
modem
5
Struttura di un calcolatore (4)
Sequenza di parole (un array …)
indirizzi
0
1
2
3
4
Valore da trasferire
RAM
(memoria centrale)
Processore
Dove trasferirlo
.
.
.
Direzione di
trasferimento, unità
coinvolte etc.
bus
Linee dati, indirizzi e controllo
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
schermo
dischi
mouse
modem
6
Struttura di un calcolatore (5)
RAM
(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
schermo
dischi
mouse
modem
7
Operazioni elementari eseguibili
da un processore
• Dati numerici (binari) :
– operazioni matematiche : +,-,divisione e moltiplicazione
per potenze di due
– confronti con 0
– operazioni logiche o booleane: AND, OR, XOR, NOT
• Dati numerici e non
– letture/scritture nella memoria, letture e scritture nei
registri di controllo dei dispositivi
– uguaglianza e disuguaglianza di due rappresentazioni
8
Operazioni elementari eseguibili
da un processore (2)
• Operazioni di ‘controllo di flusso’ :
– salti condizionati (corrispondono alla
combinazione di istruzioni di controllo se ( …)
vai al passo X )
– salti incondizionati (corrispondono alla
istruzioni di controllo vai al passo X )
– chiamate di un sottoprogramma (CALL)
– terminazione del programma (RETURN)
9
Operazioni elementari eseguibili
da un processore (3)
• Abbiamo elencato le funzionalità tipiche, i
loro nomi ed il funzionamento specifico
variano da macchina a macchina
• Esistono sul mercato processori
‘compatibili’ cioè in grado di eseguire lo
stesso insieme di istruzioni (facilita la
portabilità dei programmi in linguaggio
macchina)
– es : Intel Pentium, IBM-Cyrix, AMD
10
Operazioni booleane
• Sono operazioni che lavorano su variabili che
assumono valori di verità o boolani (vero, falso) :
– es : se fuori piove e mi sposto a piedi allora apro
l’ombrello
– La due sotto-condizioni (fuori piove, mi sposto a piedi)
avranno un valore vero/falso che dipende dalla situzione
in cui mi trovo
– l’operatore booleano ‘e’ permette di combinare fra loro
due valori booleani
– il risultato dell’operazione ‘e’ è il valore vero se entrambi
gli operando sono veri e falso altrimenti
11
Operazioni booleane (2)
• Con le operazioni booleane è possibile
complicare arbitrariamente le condizioni delle
strutture se…allora…altrimenti e finchè...ripeti
• Anche i valori booleani si possono rappresentare
in codifica binaria: generalmente
– 1 rappresenta VERO
– 0 rappresenta FALSO
• La definizione di ciascuna operazione booleana
si può dare sotto forma di tabellina (la tabella di
verità)
12
Operazioni booleane (3)
Le operazioni boolane più comuni sono :
• Operazione di and () :
– A and B : combina i valori di A e B in modo che il
risultato sia vero solo se sono veri sia A che B
• Operazione di or () :
– A or B : combina i valori di A e B in modo che il
risultato sia vero solo almeno uno fra A e B è vero
• Operazione di not () :
– not A : restituisce falso se A e vero e viceversa
13
Tabelle di verità delle operazioni
and, or e not
A
B
A and B A or B
Not A
0
0
0
0
1
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
14
Operazioni logiche/booleane : perché
sono importanti
• Sono facili da realizzare utilizzando circuiti
elementari
• È possibile dimostrare che tutte le funzioni
interessanti possono essere calcolate
utilizzando una opportuna combinazione delle
funzioni logiche
• Esiste un procedimento automatico per trovare
questa combinazione, che viene utilizzato per
realizzare le funzioni disponibili nell’hw
15
Operazioni logiche : perché sono
importanti (2)
• Quando si scrivono programmi che ‘parlano’
con l’hw spesso dobbiamo manipolare
sequenze binarie direttamente
• Usando le funzioni logiche è sempre possibile
costruire la manipolazione che ci interessa
– es: mettere a 0 il terzo bit di una rappresentazione
consideriamo la rappr.
mi costruisco la ‘maschera’
e poi calcolo AND
‘bit a bit’
0001001111111
1111111111011
0001001111011
AND
16
Linguaggio macchina e
assembler
• Linguaggio macchina :
linguaggio comprensibile direttamente dal
processore della macchina (binario)
• Assembler :
versione simbolica del linguaggio macchina in
cui i nomi delle operazioni e degli operandi
sono indicati con codici simbolici
17
Linguaggio macchina e
assembler (2)
• Per ‘parlare direttamente con la macchina’
si usa l’assembler
• Assemblatori :
programmi che traducono il codice simbolico in
sequenze di 0 e 1
• Nei prossimi lucidi vediamo un esempio di
un tipico programma assembler e i passi
necessari per la sua traduzione in binario
18
Linguaggio macchina e
assembler (3)
• Esempio: come si realizza in assembler
l’operazione x=y+2 :
LOAD Y, R1
ADD
2, R1
STORE R1, X
R1
Legge il valore in Y
e lo scrive in R1
17
Registro interno del
processore (variabile
temporanea su cui lavorare)
memoria
Y
34
X
222
Indirizzi di due
parole di memoria
che rappresentano
le variabili intere x e y
19
Linguaggio macchina e
assembler (4)
• Esempio x=y+2 (assembler)
LOAD Y, R1
ADD
2, R1
STORE R1, X
R1
memoria
Aggiunge 2 a R1
34
Registro interno del
processore (variabile
temporanea su cui lavorare)
Y
34
X
222
Indirizzi di due
parole di memoria
che rappresentano
interi
20
Linguaggio macchina e
assembler (5)
• Esempio x=y+2 (assembler)
LOAD Y, R1
ADD
2, R1
STORE R1, X
R1
memoria
Scrive il contenuto
di R1 nella parola
di indirizzo X
36
Registro interno del
processore (variabile
temporanea su cui lavorare)
Y
34
X
222
Indirizzi di due
parole di memoria
che rappresentano
interi
21
Linguaggio macchina e
assembler (6)
• Esempio x=y+2 (assembler)
LOAD Y, R1
ADD
2, R1
STORE R1, X
R1
36
memoria
Y
34
X
36
Situazione finale della
memoria
22
Linguaggio macchina e
assembler (7)
• Traduzione binaria (in
linguaggio macchina) di
memoria
LOAD Y, R1
ADD
2, R1
STORE R1, X
• Prima di tutto dobbiamo
decidere quale è il vero
indirizzo di X e Y
Y
01101
11100
X
23
Linguaggio macchina e
assembler (8)
• Codifica binaria di
LOAD 01101, R1
ADD
2, R1
STORE R1, 11100
• Ogni operazione si codifica secondo un
formato stabilito da chi costruisce l’hw
– un formato semplificato è
Codice operativo
Modo 1
Op1
Modo 2
Op2
24
Linguaggio macchina e
assembler (9)
• Vediamo i vari campi del formato :
Codice operativo
Modo1
Op1
Modo2
Op2
È la codifica dell’operazione da eseguire
es:
ADD
LOAD
STORE
0001
0110
0111
25
Linguaggio macchina e
assembler (9)
• Vediamo i vari campi del formato :
Codice operativo
Modo1
Op1
Modo2
Op2
È la codifica primo operando, MODO1
dice a cosa si riferisce OP1
es:
se MODO1 = 00 l’operando è nel registro
interno del processore
(e OP1 è il numero del registro)
se MODO1 = 01 l’operando è in memoria
(e OP1 è l’indirizzo)
se MODO1 = 10 l’operando è immediato, cioè
OP1 è direttamente il valore
dell’operando
Lo stesso vale per il secondo operando!
26
Linguaggio macchina e
assembler (10)
• Tipicamente la codifica di una istruzione ‘
lunga come una parola o multipli della
parola per poterla leggere dalla memoria
in modo più efficiente :
– es : con parole di 4 byte (32 bit)
Codice operativo
4bit
Modo1
2bit
Op1
Modo2
Op2
12bit
2bit
12bit
27
Linguaggio macchina e
assembler (11)
• Problema …..
– es : con 12 bit posso indirizzare ‘solo’ 212
parole di memoria centrale (RAM) !
Codice operativo
4bit
Modo1
2bit
Op1
Modo2
Op2
12bit
2bit
12bit
Cioè posso avere al massimo una RAM di 4K
parole … se ne ho di più (oggi si arriva
tranquillamente a 512K e siamo sempre in
aumento …) devo inventarmi codifiche
diverse….
28
Linguaggio macchina e
assembler (12)
MODI
00 registro
01 memoria
10 immediato
CODICI OPERATIVI
ADD
0001
LOAD
0110
STORE 0111
• Codifica binaria di
LOAD 01101, R1
ADD
2, R1
STORE R1, 11100
Codice operativo
4bit
Modo1
2bit
Op1
Modo2
Op2
12bit
2bit
12bit
0110
01
01101
00
00001
load
0001
10
00010
01
00001
add
0111
00
00001
01
11100
store
29
Il processore
• Come è strutturato il processore per riuscire
ad eseguire i programmi in linguaggio
macchina che abbiamo appena visto ….
• Dati e programmi sono codificati in binario
e risiedono in Memoria Centrale (RAM) ad
opportuni indirizzi
30
Il processore (2)
• Esegue il seguente ciclo ininterrottamente :
1. (fetch) legge una nuova istruzione da eseguire
dalla memoria centrale
2. (decode) risale alla operazione richiesta
decodificando la rappresentazione binaria
3. (execute) porta a termine l’operazione richiesta
31
Il processore: struttura base
M
e
m
o
r
i
a
c
e
n
t
r
a
l
e
PC
Bus controllo
Bus
indirizzo
Bus dati
M
A
R
Operazione
PSW
Esegui
IR
Parte controllo
Registro/i coinvolti
M
D
R
R0
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
32
Il processore struttura base (2)
• PC (program counter)
indica l’indirizzo di memoria della prossima
istruzione da eseguire
• IR (Instruction register)
contiene copia della codifica dell’istruzione da
eseguire
• MAR, MDR (Memory Address Register,
Memory Data Register)
contengono l’indirizzo della cella di memoria
che vogliamo leggere/scrivere (MAR) ed i dati
da/per la memoria (MDR)
33
Il processore struttura base (3)
• PSW (program status word)
contiene informazioni, opportunamente
codificate, sull’esito di operazioni aritmetico
logiche o sull’esito di operazioni di confronto e
informazioni sul funzionamento della macchina
(le vedremo qundo parleremo dei sistemi
operativi)
• ALU (Arithmetic-Logic Unit)
effettua operazioni di tipo aritmetico e logicobooleano (+,-,and,or …)
34
Un esempio : ADD 2, R1 (fetch 1)
Indirizzo della istruzione
memoria
Bus
controllo
000..01
40
Bus
indirizzo
Bus dati
40
M
A
R
PSW
Esegui
IC
Parte controllo
Registro/i coinvolti
M
D
R
R0
R1
R2
...
R16
codifica
PC
Operazione
ALU
Registri
generali
Esito
Processore
35
Un esempio : ADD 2, R1 (fetch 2)
Indirizzo della istruzione
memoria
Leggi!
41
40 000..01
PC
Operazione
PSW
Esegui
IC
Parte controllo
40
Bus
indirizzo
Bus dati
MAR
M
D
R
Registro/i coinvolti
R0
R1
R2
...
R16
codifica
ALU
Registri
generali
Esito
Processore
36
Un esempio : ADD 2, R1 (fetch 3)
memoria
41
40 000..01
PC
Operazione
PSW
Esegui
IC
Parte controllo
000110000100100001
Bus
indirizzo
MAR
Bus dati
MDR
Registro/i coinvolti
R0
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
37
Un esempio : ADD 2, R1 (dec)
memoria
41
40 000..01
PC
add
PSW
Esegui
IC
Parte controllo
000110000100100001
Bus
indirizzo
MAR
Bus dati
MDR
Registro/i coinvolti
R0
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
38
Un esempio : ADD 2, R1 (exe 1)
memoria
41
40 000..01
PC
add
PSW
Esegui
IC
Parte controllo
000110000100100001
Bus
indirizzo
MAR
Bus dati
MDR
Registro/i coinvolti
00010
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
39
Un esempio : ADD 2, R1 (exe 2)
memoria
41
40 000..01
PC
add
PSW
Esegui
IC
Parte controllo
000110000100100001
Bus
indirizzo
MAR
Bus dati
MDR
Registro/i coinvolti
00010
34
R2
...
R16
ALU
Registri
generali
Esito
Processore
40
Un esempio : ADD 2, R1 (exe 3)
memoria
41
40 000..01
PC
PSW
IC
Parte controllo
000110000100100001
Bus
indirizzo
MAR
Bus dati
MDR
Registro/i coinvolti
00010
36
R2
...
R16
ALU
Registri
generali
Esito
Processore
41
Il processore : il clock ed i GHz
• I vari sotto-passi che compongono
l’esecuzione di una istruzione seguono
algoritmi cablati nei circuiti della macchina
• L’esecuzione è sincrona,
– cioè esiste un segnale di ‘inizio della
sottooperazione’ (detto tick, in quanto generato
da un clock) riconosciuto da tutti i componenti
• La frequenza con cui viene inviato il tick è
misurata in ‘numero di tick al secondo’ (Hz)
– nei computer attuali 1Ghz (giga hertz), ovvero
uno al nanosecondo, o più
42
Scarica

Lucidi