Upload
sydney-fleming
View
23
Download
0
Embed Size (px)
DESCRIPTION
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 /. - PowerPoint PPT Presentation
Citation preview
1
Informatica Generale
Susanna Pelagatti email: [email protected]
Ricevimento: Mercoledì ore 14.30-17.30presso Dipartimento di Informatica, Via Buonarroti, 2stanza 346 DE Tel. 050.2212.772o per posta elettronica
Pagina web del corso: http://www.di.unipi.it/~susanna/IG02/
2
La struttura hardware
3
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 capacedi interpretare i singoli passirichiesti dai programmi (istruzioni elementari)
Sottosistemadi Interfaccia
Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, micr., stampante, schermo, )
4
Struttura di un calcolatore (2)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
5
Struttura di un calcolatore (3)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
.
.
.
01234
indirizzi Sequenza di parole (un array …)
6
Struttura di un calcolatore (4)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
.
.
.
01234
indirizzi Sequenza di parole (un array …)
Valore da trasferire
Dove trasferirlo
Direzione di trasferimento, unitàcoinvolte etc.
7
Struttura di un calcolatore (5)
RAM(memoria centrale)
Processore
bus
Linee dati, indirizzi e controllo
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
Interfacciadi I/O
schermo dischi mouse modem
8
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
9
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)
10
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
11
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
12
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à)
13
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
14
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
15
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
16
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. 0001001111111
mi costruisco la ‘maschera’ 1111111111011
e poi calcolo AND 0001001111011
‘bit a bit’
AND
17
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
18
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
19
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
34
222
Y
X
Indirizzi di dueparole di memoriache rappresentanole variabili intere x e y
17R1
Registro interno del processore (variabile temporanea su cui lavorare)
Legge il valore in Y e lo scrive in R1
memoria
20
Linguaggio macchina e assembler (4)
• Esempio x=y+2 (assembler)LOAD Y, R1
ADD 2, R1
STORE R1, X34
222
Y
X
Indirizzi di dueparole di memoriache rappresentanointeri
34R1
Registro interno del processore (variabile temporanea su cui lavorare)
Aggiunge 2 a R1
memoria
21
Linguaggio macchina e assembler (5)
• Esempio x=y+2 (assembler)LOAD Y, R1
ADD 2, R1
STORE R1, X34
222
Y
X
Indirizzi di dueparole di memoriache rappresentanointeri
36R1
Registro interno del processore (variabile temporanea su cui lavorare)
Scrive il contenuto di R1 nella parola di indirizzo X
memoria
22
Linguaggio macchina e assembler (6)
• Esempio x=y+2 (assembler)LOAD Y, R1
ADD 2, R1
STORE R1, X34
36
Y
X
Situazione finale dellamemoria
36R1
memoria
23
Linguaggio macchina e assembler (7)
• Traduzione binaria (in linguaggio macchina) diLOAD Y, R1
ADD 2, R1
STORE R1, X
• Prima di tutto dobbiamo decidere quale è il vero indirizzo di X e Y
01101
11100
memoria
Y
X
24
Linguaggio macchina e assembler (8)
• Codifica binaria diLOAD 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
25
Linguaggio macchina e assembler (9)
• Vediamo i vari campi del formato :
Codice operativo Modo1 Op1 Modo2 Op2
È la codifica dell’operazione da eseguirees:
ADD 0001LOAD 0110STORE 0111
26
Linguaggio macchina e assembler (9)
• Vediamo i vari campi del formato :
Codice operativo Modo1 Op1 Modo2 Op2
È la codifica primo operando, MODO1dice a cosa si riferisce OP1es:
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!
27
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 Modo1 Op1 Modo2 Op2
2bit 2bit4bit 12bit 12bit
28
Linguaggio macchina e assembler (11)
• Problema …..– es : con 12 bit posso indirizzare ‘solo’ 212 parole di
memoria centrale (RAM) !
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….
Codice operativo Modo1 Op1 Modo2 Op2
2bit 2bit4bit 12bit 12bit
29
Linguaggio macchina e assembler (12)
• Codifica binaria diLOAD 01101, R1
ADD 2, R1
STORE R1, 11100
Codice operativo Modo1 Op1 Modo2 Op2
MODI00 registro01 memoria10 immediatoCODICI OPERATIVIADD 0001LOAD 0110STORE 0111
2bit 2bit4bit 12bit 12bit
0110 01 01101 00 00001 load
0001 10 00010 01 00001 add
0111 00 00001 01 11100 store
30
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
31
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
32
Il processore: struttura base
Processore
Parte controllo
PC
IR
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
Esito
MAR
MDR
Memoria
centrale
Bus dati
Bus indirizzo
Bus controllo
Registro/i coinvolti
33
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)
34
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 logico-
booleano (+,-,and,or …)
35
Un esempio : ADD 2, R1 (fetch 1)
Processore
Parte controllo
40
IC
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
Esito
MAR
MDRBus dati
Bus indirizzo
Bus controllo
Registro/i coinvolti
000..01
40
memoria
Indirizzo della istruzione
codifica
PC
36
Un esempio : ADD 2, R1 (fetch 2)
Processore
Parte controllo
41
IC
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
EsitoMDRBus dati
Bus indirizzo
Registro/i coinvolti
000..0140
memoria
Indirizzo della istruzione
codifica
PC
40
MAR
Leggi!
37
Un esempio : ADD 2, R1 (fetch 3)
Processore
Parte controllo
41
000110000100100001
PSW
R0
R1R2...
R16 Registri generali
ALU
Operazione
Esegui
Esito
Bus dati
Bus indirizzo
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
38
Un esempio : ADD 2, R1 (dec)
Processore
Parte controllo
41
000110000100100001
PSW
R0
R1R2...
R16 Registri generali
ALU
addEsegui
Esito
Bus dati
Bus indirizzo
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
39
Un esempio : ADD 2, R1 (exe 1)
Processore
Parte controllo
41
000110000100100001
PSW
00010
R1R2...
R16 Registri generali
ALU
addEsegui
Esito
Bus dati
Bus indirizzo
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
40
Un esempio : ADD 2, R1 (exe 2)
Processore
Parte controllo
41
000110000100100001
PSW
00010
34R2...
R16 Registri generali
ALU
addEsegui
Esito
Bus dati
Bus indirizzo
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
41
Un esempio : ADD 2, R1 (exe 3)
Processore
Parte controllo
41
000110000100100001
PSW
00010
36R2...
R16 Registri generali
ALUEsito
Bus dati
Bus indirizzo
Registro/i coinvolti
000..0140
memoria
PC
MAR
MDR
IC
42
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ù