Architettura del calcolatore per la classe 3Di

Architettura di un calcolatore e
ciclo macchina
Appunti per la classe 3 Dinf
Il Sistema di Elaborazione
Computer
Hardware
Software
2
Hardware
Struttura fisica del calcolatore formata dai
circuiti elettronici (chip) e tutto ciò che li fa
funzionare.
3
Software
• Componente del calcolatore costituita dai:
– Programmi di base per la gestione del
sistema
– Programmi applicativi per l’uso del sistema
4
HARDWARE:RAPPRESENTAZIO
NE SCHEMATICA
CPU
INPUT
OUTPUT
Istruzioni
Dati
MEMORIA
5
Collegamento
Bus di sistema
Unità di
Elaborazione
(CPU)
Memoria
Centrale
Interfaccia
Periferica P1
Esecuzione istruzioni Memoria di lavoro
Interfaccia
Periferica P2
Memoria di massa,
6
stampante, terminale…
• Il processore estrae le istruzioni dalla memoria e
le esegue
– Le istruzioni possono comportare operazioni di
manipolazione dei dati
– Oppure operazioni di trasferimento dei dati
• I trasferimenti di dati attraverso elementi
funzionali diversi avvengono attraverso il bus di
sistema
• Le fasi di elaborazione si susseguono in modo
sincrono rispetto ad un orologio di sistema
• Durante ogni intervallo di tempo l’unità di
controllo (parte del processore) stabilisce la
funzione da svolgere
• L’intera macchina opera in maniera sequenziale
7
CPU
Preleva istruzione
I/O Memoria
Esegue
Memorizza risultato
BUS
8
COMPONENTI DELLA 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
9
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
10
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
– Sono una parte fondamentale del processore
11
Registri
• Per esempio: Program Counter
– L’indirizzo della “prossima” istruzione da
eseguire è memorizzato nel registro Program
Counter
• Per esempio: i Registri Generali
– I registri che possono essere utilizzati come
memorie temporanee per svolgere le
operazioni matematiche
12
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
13
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
14
Unità di controllo
• Svolge la sua attività in modo ciclico
– Preleva dalla memoria principale la
“prossima” istruzione da eseguire
– Preleva gli operandi specificati nell’istruzione
– Decodifica ed esegue l’istruzione
– Ricomincia
15
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
16
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
17
Unità aritmetico logica
• L’Unità aritmetico logica 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 della macchina
18
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
• La frequenza del clock indica il numero di
operazioni elementari che vengono eseguite
nell’unità di tempo
19
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
20
Memoria principale (RAM)
• Perchè si chiama RAM (Random Access
Memory)?
– Si può accedere direttamente alle varie celle, una
volta noto il loro indirizzo
– Il tempo necessario per accedere ad una cella è lo
stesso, indipendentemente dalla posizione della cella
nella sequenza
– Il termine “random” (casuale) indica proprio il fatto che
non vi sono differenze nell’accesso alle varie celle
della memoria
21
Memoria principale (RAM)
• Alcune proprietà della memoria principale
– Veloce: per leggere/scrivere una cella ci
vuole un tempo di accesso dell’ordine di
poche decine di nanosecondi (millesimi di
milionesimi di secondo = 10-9 sec.)
– Volatile: è fatta di componenti elettronici,
togliendo l’alimentazione si perde tutto
– (Relativamente) costosa
22
Memoria principale (RAM)
• Tutte le celle hanno la
stessa dimensione: 8, 16,
32, o 64 bit
• Le operazioni che si
eseguono sulla memoria
sono operazioni di lettura e
scrittura
• Una cella può contenere un
dato o un’istruzione
Indirizzi
0
1
2
3
4
5
N
Contenuto
345
13.200.985
3.890
LOAD 3568 R1
LOAD 56 R1
ADD R1 R2
23
Memoria principale (RAM)
• Ogni calcolatore usa un numero di bit costante
per rappresentare gli indirizzi
• Maggiore è il numero di bit usati, maggiore sarà
il numero di celle indirizzabili: spazio di
indirizzamento
– Se si usano 16 bit per codificare gli indirizzi, si
potranno indirizzare fino a 65.536 celle (circa 64 KB di
memoria, nell’ipotesi di celle di memoria di 1 byte)
– Con 32 bit si potranno indirizzare fino a
4.294.967.296 celle (circa 4 GB di memoria)
24
Memoria principale (RAM)
• All’aumentare delle dimensioni della
memoria principale aumenta il numero di
programmi che possono essere
“contemporaneamente” attivi
• La RAM, fino ad un certo limite, è
espandibile (slot di espansione)
25
La memoria centrale
• Il numero di bit che costituiscono l’indirizzo di un word
all’interno della memoria è caratteristico del
microprocessore e identifica lo spazio di indirizzamento
del microprocessore
– Avendo a disposizione k bit è possibile indirizzare 2k byte
• Si ricorda che:
–
–
–
–
210 byte = 1Kilo Byte
220 byte = 1Mega Byte
230 byte = 1 Giga Byte
240 byte = 1Tera Byte
26
Bus
• Permette la
comunicazione tra i vari
componenti
dell’elaboratore
CPU
RAM
Interfaccia
dati
indirizzi
controllo
27
Il bus di sistema
• Il bus di sistema collega tra loro i vari elementi
del calcolatore
• In ogni istante il bus è dedicato a collegare due
unità, una trasmette ed una riceve
– Il processore seleziona la connessione da attivare e
indica l’operazione da svolgere (bus mastering)
• Il bus è suddiviso in tre insiemi di linee:
– Bus dati
– Bus indirizzi
– Linee di controllo: trasportano informazioni relative
alla modalità di trasferimento e alla temporizzazione
28
Sequenza di lettura
Passo 3
PC
INTR
0
Passo 1
Passo 4
2
SR
A
ALU
B
123
123
CIR
Ck
42
DR
42
CU
123
AR
1023
READ
OK
29
Sequenza di scrittura
Passo 2
PC
INTR
0
Passo 1
Passo 5
3
SR
A
ALU
B
123
123
CIR
Ck
70
DR
CU
70
42
Passo 4
123
AR
1023
WRITE
OK
30
Le istruzioni macchina
• Un programma scritto in linguaggio macchina è formato
da una sequenza di istruzioni appartenenti al set di
istruzioni del particolare processore
• Ogni istruzione è formata da:
– Un codice operativo
– Zero o più operandi
• Tanto il codice operativo quanto gli operandi sono
rappresentati nella memoria del calcolatore sotto forma
di numeri binari
• Data la difficoltà per l’uomo di interpretare numeri binari
si usa l’assembler al posto del linguaggio macchina
codice operativo operando(i)
31
Le istruzioni macchina
• Il set di istruzioni di un qualsiasi linguaggio
macchina può essere diviso in quattro
classi principali di istruzioni:
– Istruzioni per il trasferimento dati tra memoria
e registri del processore e viceversa
– Operazioni aritmetiche e logiche sui dati
– Istruzioni per il controllo del flusso di
programma
– Istruzioni per la gestione dell’I/ O
32
Forma binaria del programm
0100000000010000
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010011
1000000000000000
0010000000010100
0101000000010100
1101000000000000
Leggi un valore dall’input e mettilo nella cella 16 (a)
Leggi un valore dall’input e mettilo nella cella 17 (b)
Leggi un valore dall’input e mettilo nella cella 18 (c)
Leggi un valore dall’input e mettilo nella cella 19 (d)
Carica il contenuto della cella 16 (a) nel registro A
Carica il contenuto della cella 17 (b) nel registro B
Somma i registri A e B
Scarica il contenuto di A nella cella 20 (z) (ris.parziale)
Carica il contenito della cella 18 (c) nel registro A
Carica il contenito della cella 19 (d) nel registro B
Somma i registri A e B
Carica il contenuto della cella 20 (z) (ris. parziale) in B
Moltiplica i registri A e B
Scarica il contenuto di A nella cella 20 (z) (ris. totale)
Scrivi il contenuto della cella 20 (z) (ris. totale) in output
Halt
33
Programma in memoria
centrale
Cella 0 0100000000010000
Spazio riservato per a
Spazio riservato per b
Spazio riservato per c
Spazio riservato per d
Spazio riservato per z
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010011
1000000000000000
0010000000010100
0101000000010100
1101000000000000
34
Fase di fetch 1
istruzione
Passo 1
Memoria centrale (MM)
0 0100000000010000
a
Passo 2
PC 0000000001
0000000000
Passo 4
AR 0000000000
1023
DR 0100000000010000
Passo 3
CIR 0100000000010000
35
Fase di interpretazione 1a
istruzione
CIR 0100000000010000
Codice operativo 0100 = leggi da input
36
Fase di esecuzione 1a
istruzione
Memoria centrale (MM)
Indirizzo operando
00000010000 = cella 16
CIR 0100000000010000
0
Passo 3
16 0001000000011111
Passo 1
AR 0000010000
1023
DR 0001000000011111
Passo 2
Valore di a letto dall’input (es. 4127)
PDR 0001000000011111
37
CPU-Instruction Decoder and Control

Esempio di Microprogramma associato all'istruzione di Somma del
contenuto dell'accumulatore con il contenuto del MDR.

Questa operazione può essere scomposta in sette passi elementari:
1. Trasferimento del contenuto dell'accumulatore sul bus dati interno
alla CPU.
2. Trasferimento del contenuto del bus dati nella ALU.
3. Trasferimento del contenuto del MDR sul bus dati interno alla CPU.
4. Trasferimento del contenuto del bus dati nella ALU.
5. Attivazione della logica di somma.
6. Trasferimento del contenuto della ALU (risultato della somma) sul
bus dati.
7. Trasferimento del contenuto della data bus nell'accumulatore (che
conterrà il risultato della somma).
38
CPU - Fasi di Fetch e Execute

In qualunque processore l'esecuzione di una generica
istruzione avviene in due fasi differenti:
 la fase di ricerca (FETCH): consiste nel prelievo dalla
memoria centrale dell'istruzione
 la fase di esecuzione (EXECUTE), caratterizzata dalla
decodifica
dell'istruzione
e
dall'attivazione
del
microprogramma ad essa associato.
39
CPU - Fasi di Fetch e Execute

Esempio: Supponiamo che l'istruzione sia di somma fra il
contenuto dell'accumulatore e il contenuto di una cella di
memoria il cui indirizzo sia dato direttamente dalla parte
operando dall'istruzione stessa.

Supponiamo cioè che la cella di memoria contenente
l'istruzione da eseguire sia strutturata come segue:
codice istruzione
indirizzo RAM del secondo operando
40
CPU - Fasi di Fetch e Execute

Fase di ricerca (FETCH):
1. Il contenuto del Program Counter (PC) è relativo
all’indirizzo di memoria che contiene l’istruzione.
2. Il contenuto del Program Counter è inviato al MAR
(Memory Address Register) per operare il prelevamento
dell'istruzione all'indirizzo di memoria contenuto nel MAR.
3. Il dato prelevato dalla memoria è riposto nel MDR (Memory
Data Register).
4. Il contenuto del MDR, ossia l’istruzione, è messa nel
Instruction Register per essere decodificata.
5. Il Program Counter viene incrementato per puntare
all'istruzione successiva. 41
CPU - Fasi di Fetch e Execute

Ha inizio a questo punto la fase di esecuzione (EXECUTE):
1. viene compreso che il secondo operando risiede in memoria
2. la parte dell’istruzione relativa all’indirizzo del secondo operando
viene trasferita nel MAR
3. L'effettivo operando, prelevato dalla memoria è posto nel MDR.
4. L’operando viene presentato ad un ingresso della ALU.
5. All'altro ingresso
dell'accumulatore.
dell’ALU
viene
presentato
il
contenuto
6. L'ALU, predisposta dall'Instruction Register ad eseguire la somma,
pone il suo risultato nell'accumulatore.

La fase di esecuzione è terminata ed il processore prosegue con la
fase di ricerca dell'istruzione successiva.
42
Esecuzione delle istruzioni
• Ciclo Fetch–Decode–Execute
(leggi–decodifica–esegui)
1. Prendi l’istruzione corrente dalla memoria e mettila nel
registro istruzioni (IR).
2. Incrementa il program counter (PC) in modo che
contenga l’indirizzo dell’istruzione successiva.
3. Determina il tipo dell’istruzione corrente (decodifica).
4. Se l’istruzione usa una parola in memoria, determina dove
si trova.
5. Carica la parola, se necessario, in un registro della CPU.
6. Esegui l’istruzione.
7. Torna al punto 1 e inizia a eseguire l’istruzione successiva.
43
Ciclo Fetch–Decode–Execute
Fetch
Decode
Execute
44
Fetch dell’istruzione
0000
PO
CU
R0
R1
R2
R3
SR
0001
RAM
PC
IR
ALU
…..
0001
0001
ADD R3 R0 R1
0002
…
…
0005
…
0009
…
…
…
Address Bus
Data Bus
Control Bus
PC (Program Counter): indirizzo IR (Instruction Register):
di memoria della cella contenente
l’istruzione da eseguire
istruzione da eseguire dopo il fetch
45
Fetch dell’istruzione : IR ← M [PC]
RAM
CU
R0
R1
R2
R3
SR
0001
0000
PO
PC
IR
ALU
…..
0001
read!
0001
ADD R3 R0 R1
0002
…
…
0005
…
0009
…
…
…
Address Bus
Data Bus
Control Bus
PC (Program Counter): indirizzo IR (Instruction Register):
di memoria della cella contenente
l’istruzione da eseguire
istruzione da eseguire dopo il fetch
46
Fetch dell’istruzione
0001
R0
R1
R2
R3
SR
0002
ADD R3 R0 R1
0000
PO
CU
PC
IR
RAM
ALU
0002
0002
…
…..
…
0009
…
…
…
Address Bus
ADD R3 R0 R1
La CU incrementa automaticamente
il PC (PC ← PC +1)
…
0005
0001
read
ADD R3 R0 R1
Data Bus
Control Bus
IR (Instruction Register):
contiene l’istruzione da eseguire
dopo il fetch
47
Decodifica dell’istruzione
PO
CU
R0
R1
R2
R3
SR
0002
ADD R3 R0 R1
•
PC
IR
ALU
…..
L’istruzione dell’esempio non richiede altri accessi in memoria
• La CU decodifica l’istruzione attraverso il codice operativo e
trasmette alla PO gli ordini per eseguire
l’operazione(microordini).
• In assenza di interrupt o di salti sarà prelevato il contenuto 48
Esecuzione dell’istruzione
PO
CU
SR
0003
ADD R3 R0 R1
3
4
R0
R1
R2
R3
PC
IR
7
…..
ALU
• La PO esegue l’operazione.
• Le informazioni sullo stato dell’elaborazione
sono memorizzate in SR (Status Register):
flag Z (zero), V (overflow), N (negative), CY
(carry).
49
Un esempio : ADD 2, R1 (fetch 1)
Indirizzo della istruzione
memoria
Bus
controllo
000..01
40
Bus
indirizzo
Bus dati
40
M
A
R
M
D
R
IC
PC
PSW
Esegui
Parte controllo
Registro/i coinvolti
R0
R1
R2
...
R16
codifica
Operazione
ALU
Registri
generali
Esito
Processore
50
Un esempio : ADD 2, R1 (fetch 2)
Indirizzo della istruzione
memoria
Leggi!
41
40 000..01
IC
40
Bus
indirizzo
Bus dati
PC
PSW
Esegui
Parte controllo
Registro/i coinvolti
MAR
M
D
R
R0
R1
R2
...
R16
codifica
Operazione
ALU
Registri
generali
Esito
Processore
51
Un esempio : ADD 2, R1 (fetch 3)
memoria
41
40 000..01
Operazione
PC
PSW
Esegui
000110000100100001
IC
Parte controllo
Bus
indirizzo
Registro/i coinvolti
MAR
Bus dati
MDR
R0
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
52
Un esempio : ADD 2, R1 (dec)
memoria
41
40 000..01
PC
add
PSW
Esegui
000110000100100001
IC
Parte controllo
Bus
indirizzo
Registro/i coinvolti
MAR
Bus dati
MDR
R0
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
53
Un esempio : ADD 2, R1 (exe 1)
memoria
41
40 000..01
PC
add
PSW
Esegui
000110000100100001
IC
Parte controllo
Bus
indirizzo
Registro/i coinvolti
MAR
Bus dati
MDR
00010
R1
R2
...
R16
ALU
Registri
generali
Esito
Processore
54
Un esempio : ADD 2, R1 (exe 2)
memoria
41
40 000..01
PC
add
PSW
Esegui
000110000100100001
IC
Parte controllo
Bus
indirizzo
Registro/i coinvolti
MAR
Bus dati
MDR
00010
34
R2
...
R16
ALU
Registri
generali
Esito
Processore
55
Un esempio : ADD 2, R1 (exe 3)
memoria
41
40 000..01
PC
PSW
000110000100100001
IC
Parte controllo
Bus
indirizzo
Registro/i coinvolti
MAR
Bus dati
MDR
00010
36
R2
...
R16
ALU
Registri
generali
Esito
Processore
56