Informatica
Lezione 5
Scienze e tecniche psicologiche dello sviluppo e
dell'educazione (laurea triennale)
Anno accademico: 2007-2008
Architettura dei computer
• Un computer deve:
– elaborare l’informazione
• usando il processore (Central Processing Unit CPU)
– memorizzare l’informazione
• usando la memoria principale (RAM)
• usando la memoria secondaria
– fare l’input/output dell’informazione
• usando i dispositivi di input/output
I programmi e i dati
• Programmi:
– Questa lezione: i programmi dal punto di visto dell’hardware
– I programmi: sequenze di istruzioni per l’elaborazione delle
informazione
• Definiscono quale debba essere il comportamento del
processore
• I computer eseguono deterministicamente istruzioni
• Dati:
– Distinzione tra dato e informazione:
• Dato: sequenza di bit, può essere interpretato in più modi
diversi
• Informazione: dato + significato del dato
I programmi e i dati
• I programmi e i dati risiedono nella memoria secondaria
Processore
Stampante
Memoria
principale
Memoria
secondaria
I programmi e i dati
• I programmi e i dati risiedono nella memoria secondaria
• Per essere eseguiti (i programmi) e usati (i dati) vengono copiati
nella memoria principale
Processore
Stampante
Memoria
principale
Memoria
secondaria
I programmi e i dati
• I programmi e i dati risiedono nella memoria secondaria
• Per essere eseguiti (i programmi) e usati (i dati) vengono copiati
nella memoria principale
• Il processore è in grado di eseguire le istruzioni di cui sono
composti i programmi
Processore
Stampante
Memoria
principale
Memoria
secondaria
Istruzioni macchina
• Per ogni tipo di processore è associato un
insieme di istruzioni, chiamate istruzioni
macchina
– Ognuna delle quali corrisponde ad un’operazione
elementare
– Le operazione più complesse possono essere
realizzate mediante sequenze di operazioni
elementari
• Combinando in modo diverso sequenze anche molto
lunghe di istruzioni si possono far svolgere al computer
molti compiti diversi
Istruzioni macchina
•
Tre tipi di istruzioni macchina:
– Istruzioni aritmetico-logiche:
• Per esempio, la somma di due numeri, il confronto tra due
numeri per stabilire se essi sono uguali
• Bisogna indicare dove si trovano i dati su cui operare
– Istruzioni di trasferimento dati:
• Indicano quali dati trasferire e in quale direzione
• Per esempio, dalla memoria al CPU o vice versa, dall’esterno
all’interno (input) o vice versa (output)
• Anche bisogna indicare dove si trovano i dati su cui operare
– Istruzioni di controllo:
• Permettono modificare il flusso di esecuzione delle istruzione
(per esempio, sulla base di eventi esterni o risultati intermedi
ottenuti dalle istruzioni precedenti)
Istruzioni macchina
• Tre tipi di istruzioni macchina:
– Istruzioni aritmetico-logiche:
•
•
•
•
add: addizione
sub: sottrazione
and/or/not: congiunzione/disjunzione/negazione logica
…
A B A and B
A B
A or B
A
not A
0 0
0
0 0
0
0
1
0 1
0
0 1
1
1
0
1 0
0
1 0
1
1 1
1
1 1
1
Istruzioni macchina
• Tre tipi di istruzioni macchina:
–…
– Istruzioni di trasferimento dati:
• load: leggere dalla memoria principale
• store: scrivere alla memoria principale
• …
– Istruzioni di controllo:
• if_eq: se una condizione è vero, proseguire in un certo
modo, altrimenti proseguire in un altro modo
• goto: saltare a un’istruzione
• …
Istruzioni macchina
• Le istruzioni possono avere formati diversi - per
esempio:
Codice istruzione
oppure
cosa fare
Codice istruzione
oppure
cosa fare
Codice istruzione
Argomento 1
Argomento 2
su cosa operare
Argomento 1
Argomento 2
su cosa operare
Argomento 1
Argomento 3
Istruzioni macchina
• Per esempio:
Codice istruzione
Argomento 1
Argomento 2
Argomento 3
• ADD R1 R2 R3
– Recuperare i valori memorizzati nei registri R2 e
R3 e inserire il risultato della somma dei valori nel
registro R1
– Si nota che i valori nei registri possono cambiare
da un’esecuzione all’altra (riferimenti indiretti)
(Che cosa un registro? Vedremo…)
Istruzioni macchina
• Per esempio:
Codice istruzione
Argomento 1 Argomento 2
• LOAD 3568 R2
– Operazione di lettura dalla memoria: richiede la
lettura del valore contenuto nella cella con
indirizzo 3568 e il suo caricamento nel registro R2
(Che cosa un registro? Vedremo…)
Istruzioni macchina
• Per esempio:
Codice istruzione
Argomento 1 Argomento 2
• ADD R1 R2
– Operazione aritmetica di somma: prevede la
somma del contenuto dei registri R1 e R2 e il
caricamento del risultato nel registro R1
(Perché R1 non R2? Non c’è una ragione: la decisione è arbitraria)
Linguaggio macchina
• Il linguaggio in cui si scrivono le istruzione macchina
istruzioni prende il nome di linguaggio macchina
– Una sequenza di tali istruzioni prende il nome di
programma in linguaggio macchina
• Il ruolo del processore:
– Eseguire programmi in linguaggio macchina
• Ogni tipo di processore è in grado di eseguire un
numero (molto) limitato di istruzioni macchina
– Normalmente circa una centinaia
I programmi e i processori
• Istruzioni visti dal computer:
– Il formato dell’oggetto binario (sequenze di bit che
corrisponde alla codifica delle istruzioni di un
programma) è l’unico che il computer può
interpretare
10001111 10101010 00000011 11001100
10101011 11111110 11001111 00000110
00000100 00000111 11000101 10111001
11111101 01011111 11001111 00101011
ADD R1 R2 R3
I programmi e i processori
•
Istruzioni visti dai programmatori:
– I programmatori dei computer non
scrivono i programmi direttamente
usando le istruzioni macchina
– I programmatori scrivono i programmi
in linguaggi di un alto livello di
astrazione: i linguaggi di
programmazione a alto livello
• Per esempio, Java o C
– Un singolo commando di un linguaggio di
programmazione può corrispondere a più istruzione
macchina
I programmi e i processori
• Tre forme principali di codifica dei programmi:
– Linguaggio binario: i programmi sono codificati in
formato binario
– Linguaggio assembler: rappresenta le istruzioni
macchina usando lettere e numeri (per esempio,
ADD R1 R2 R3)
– Linguaggi di programmazione di alto livello (per
esempio, Java o C):
• Livello di astrazione più alto rispetto a linguaggio
assembler o linguaggio binario, usato dai programmatori
dei computer
I programmi e i processori
Linguaggio di programmazione
totale = num1 + num2;
compila
Linguaggio assembler
…
ADD R1 R2 R3
…
assembla
Linguaggio binario
00101000 10100000
00001111 10101010
00101000 10100000
I programmi e i processori
Linguaggio di
programmazione:
esempio di un
programma
(codice scritto in
Java)
I programmi e i processori
• Famiglie di processori: Intel, Motorola, Sun, …
• Processori della stessa famiglia normalmente possono eseguire
gli stessi programmi scritti in linguaggio macchina (ma non
sempre)
• Processi di famiglie diverse normalmente non possono eseguire
gli stessi programmi scritti in linguaggio macchina
– Le istruzioni che “capiscono” sono diverse
• Attenzione! Stiamo considerando il livello delle istruzioni
macchina (non il livello dei linguaggi di programmazione, come
Java o C)
– La stessa programma scritto in un linguaggio di programmazione di
alto livello può essere eseguito su processi di famiglie diverse (è un
vantaggio del uso dei linguaggi di programmazione a alto livello)
Componenti del processore (CPU)
• La CPU non è un unico componente ma è costituita
da componenti diversi che svolgono compiti diversi
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
Componenti del processore (CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
Unità di controllo
• L’unità di controllo è la parte più
importante del processore
– Esegue le istruzioni dei programmi
– Coordina le attività del processore
– Controlla il flusso delle istruzioni tra il
processore e la memoria
Unità di controllo
• Svolge la sua attività in modo ciclico
(implementa il ciclo macchina)
• Fetch istruzione (preleva dalla memoria principale la
“prossima” istruzione da eseguire)
• Decodifica istruzione
• Fetch dati (preleva gli operandi specificati
nell’istruzione)
• Esecuzione istruzione
• Restituzione risultato
Unità di controllo
• L’esecuzione comporta l’invio di
comandi opportuni all’unità relativa
– Calcoli  Unità aritmetico logica
– Lettura/scrittura dati  memoria
– Acquisizione/stampa  dispositivi di I/O
Componenti del processore (CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
Bus
• Bus interno: permette la comunicazione tra i
componenti del processore
• Bus esterno: permette la comunicazione tra il
processore e gli altri componenti dell’elaboratore
CPU
RAM
Interfaccia
dati
indirizzi
controllo
Bus
RAM
CPU
Bus Interno
REGISTRI
Unità di
controllo
…
Unità
aritmetico
logica
…
1000 LOAD 4809 R2
1001 LOAD 3568 R1
1002 ADD R1 R2
1003 STORE R1 3568
1004 GOTO 1001
…
3568 25
…
4809 30
…
Interfaccia
Componenti del processore (CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
Registri
• I registri sono delle unità di memoria
estremamente veloci
• Sono usate per mantenere le
informazioni di necessità immediata per
il processore
• Le dimensioni dei registri variano da 16,
32, 64 bit
Registri
• Per esempio: Program Counter
– L’indirizzo della “prossima” istruzione da eseguire è
memorizzato nel registro Program Counter
• Normalmente le istruzioni di un programma sono memorizzati
in sequenza nella memoria principale
• Il Program Counter deve essere aumentato (di 1) ogni ciclo (in
modo tale che corrisponde all’indirizzo della prossima
istruzione da eseguire)
• Eccezione: istruzione di controllo (per esempio, “salti” da
un’istruzione a un’altra usando goto)
• Per esempio: i Registri Generali
– I registri che possono essere utilizzati come memorie
temporanee per svolgere le operazioni matematiche
Componenti del processore (CPU)
Bus Interno
REGISTRI
Program Counter
Registro di Stato
Unità di
controllo
Registro Istruzioni
…
Unità
aritmetico
logica
Registri Generali 8 o 16
Registro Indirizzi Memoria
Registro Dati Memoria
Registro di Controllo
Unità aritmetico logica
• L’Unità aritmetico logica (ALU) si occupa di
eseguire le operazioni di tipo aritmetico/logico
– Somme, sottrazioni, …, confronti, …
• Preleva gli operandi delle operazioni dai
Registri Generali
• Deposita il risultato delle operazioni nei
Registri Generali
• Insieme all’unità di controllo collabora al
completamento di un ciclo macchina
Clock
• Abbiamo visto che il processore svolga la sua
attività in modo ciclico
– Ad ogni ciclo corrisponde l’esecuzione di
un’operazione elementare (un’istruzione
macchina)
• Il clock fornisce una cadenza temporale per
l’esecuzione delle operazioni elementari
Clock
• Consideriamo una ipotesi semplificata: ogni battito di clock
corrisponde esattamente l’esecuzione di una sola istruzione
macchina
– Per esempio: il clock che ha circa 66 milione battiti per secondo 
il computer può eseguire circa 66 milione operazioni per secondo
• In realtà, questa ipotesi non è sempre vero
– L’esecuzione di una istruzione può richiedere più battiti di clock
– Oppure nello stesso ciclo di clock si possono eseguire (parti) di
istruzioni diverse
– Dipende dal tipo di processore - per esempio:
• Il processore Intel 80286 richiede 20 battiti del clock per calcolare la
moltiplicazione di due numeri
• Il processore Intel 80486 può calcolare la moltiplicazione di due numeri
usando solo un battito del clock
Clock
• La frequenza del clock si misura in:
– MHz (1 MHz corrisponde circa a un milione di istruzioni
elementari/battiti al secondo)
– GHz (1 GHz corrisponde circa a un miliardo di istruzioni
elementari/battiti al secondo)
• Per esempio: se acquistate un calcolatore e vi dicono
che ha un processore a 3 GHz
– Vuol dire che il processore è in grado di eseguire (circa) 3
miliardi di istruzioni al secondo
• Esempi:
– Pentium 4 – 3,0 – 3,8 GHz
– Athlon 64 FX-SOI – 2,2 – 2,8 GHz
– Pentium 4M (Centrino) – 1,6 – 2,4 GHz
Scarica

lez5