Architettura di una CPU
1
Sommario




Organizzazione di un processore
Linguaggio macchina
Modi di indirizzamento
Tipi di istruzioni.
2
Organizzazione



Un processore, CPU, esegue una sequenza di
istruzioni (programma) prelevate da una
memoria
La memoria è esterna alla CPU
La sequenza di operazioni per elaborare una
singola istruzione prende il nome di instruction
cycle.
3
Instruction cycle

È suddiviso in due cicli:



Fetch cycle:


Fetch cycle
Execution cycle
La CPU legge dalla memoria l’istruzione che deve
essere eseguita
Execution cycle:



Riconoscimento dell’istruzione da eseguire
Lettura degli operandi dell’istruzione
Esecuzione dell’operazione.
4
Unità di misura




L’instruction cycle è composto da una sequenza di
micro-operazioni eseguite dalla CPU
La durata di una micro-operazione prende il nome
di cycle time: tCPU
Il valore 1/tCPU è la frequenza di clock della CPU,
misurato in megahertz/Gigahertz (MHz/GHz)
Es:


frequenza di clock = 1GHz
tCPU = 1 ns (nanosecondi).
5
Interrupt


Evento
che
interrompe
funzionamento della CPU
In risposta la CPU:




il
normale
Sospende l’esecuzione del programma corrente
Esegue il programma di gestione dell’interrupt:
interrupt handler al termine del quale
Riprende l’esecuzione del programma interrotto
La presenza di un interrupt viene identificata
alla fine di ogni instruction cycle.
6
Comportamento di una CPU
fetch cycle
execution cycle
N
ci sono richieste
di interrupt ?
S
trasferisce il controllo
all’interrupt handler
7
Architettura di una CPU
SR
Memoria
ALU
AC
DR
AR
CPU
PC
IR
Control
Unit
8
Architettura di una CPU (cont.)

DR, Data Register:
provenienti:





memorizza
i
dati
dalla memoria e diretti alla CPU;
dalla CPU e diretti alla memoria;
AR, Address Register: memorizza gli indirizzi
per gli accessi in memoria;
PC, Program Counter: memorizza l’indirizzo
della prossima istruzione da eseguire
AC, Accumulatore: memorizza i dati in
ingresso ed in uscita dall’ALU.
9
Architettura di una CPU (cont.)




SR, Status Register: memorizza lo stato del
processore;
IR, Instruction Register: memorizza il codice
operativo dell’istruzione da eseguire, opcode, in base al quale, la control unit
capisce quale operazione deve essere
eseguita e ne comanda l’esecuzione;
Control unit: controlla le operazioni della
CPU;
ALU, Arithmetic Logic Unit: esegue le
operazioni aritmetiche e logiche.
10
Registro di stato



Memorizza lo stato del processore;
I suoi bit assumono valore 0 o 1 in base al
risultato delle operazioni svolte dal
processore;
Esempio, Intel 8086:


Processor Status Word (PSW): registro a 16 bit;
9 bit di stato:


flag di stato (6 bit);
flag di controllo (3 bit);
11
Intel 8086: flag di stato

Indicano lo stato dell’8086 in seguito ad una
istruzione:



Carry flag: va a 1 se l’operazione ha prodotto un
riporto od un prestito;
Parity flag: va a 1 se il numero di bit a 1 nel byte
meno significativo del risultato è un numero pari;
Auxiliary flag: usato per operazioni aritmetiche su
numeri espressi in BCD.
12
Intel 8086: flag di stato (cont.)



Zero flag: va a 1 se il risultato dell’operazione è
zero;
Sign flag: coincide con il bit più significativo di
un’operazione;
Overflow flag: va a 1 se l’operazione corrente
ha dato luogo ad overflow.
13
Intel 8086: flag di controllo

Modificano il comportamento delle istruzioni
che verranno eseguite;



Direction flag: utilizzata dalle operazioni di
manipolazione delle stringhe;
Interrupt flag: quando è 1 vengono servite le
eventuali richieste di interrupt;
Trap flag: se è 1 viene eseguito un interrupt
alla fine dell’esecuzione di ogni operazione
(serve per realizzare i debugger).
14
Interfaccia con la memoria
DBUS
R/W#
READY
CPU
Memoria
ABUS
15
Address e Data Bus


ABUS, Address Bus: insieme di linee sulle cui la
CPU scrive l’indirizzo della cella di Memoria a cui
vuole accedere (in lettura o in scrittura)
DBUS, Data Bus: insieme di linee su cui la CPU
o la Memoria scrivono il dato che deve essere
trasferito:


da CPU a Memoria: la CPU scrive il DBUS, la
Memoria legge il DBUS
da Memoria e CPU: la Memoria scrive il DBUS, la
CPU legge il DBUS
16
Control Bus

R/W#, Read/Write (attivo basso):



R/W# = 1: la CPU legge un dato dalla Memoria,
trasferimento da Memoria a CPU
R/W# = 0: la CPU scrive un dato nella Memoria,
trasferimento da CPU a Memoria
READY:


READY = 1: la Memoria ha completato l’operazione,
la CPU può continuare il suo lavoro
READY = 0: la Memoria non ha ancora completato
l’operazione, la CPU deve attendere.
17
Ciclo di Lettura
T1
T2
T3
T4
CLOCK
ABUS
DBUS
R/W#
READY
Indirizzo Valido
Dati
Lettura
OK
18
Ciclo di Scrittura
T1
T2
T3
T4
CLOCK
ABUS
Indirizzo Valido
DBUS
Dati Validi
R/W#
READY
Scrittura
OK
19
Ciclo di Wait
T1
T2
T3
Tw
T4
CLOCK
ABUS
Indirizzo Valido
Dati
DBUS
R/W#
READY
Lettura
OK
20
Esempio di funzionamento

Ogni istruzione è composta da 2 byte:


1 byte contenente l’op-code
1 byte contenente il dato su cui operare

Istruzione:

ADD AC, adx
Somma il contenuto dell’accumulatore con
il dato memorizzato in Memoria all’indirizzo
adx.
21
Micro-operazioni

fetch cycle:




AR
DR
IR
PC
<=
<=
<=
<=
PC
M[AR]
DR
PC+1

execution cycle:







decodifica IR
AR <= PC
DR <= M[AR]
AR <= DR
DR <= M[AR]
AC <= AC + DR
PC <= PC + 1
22
Micro-operazioni (cont.)

fetch cycle:




AR
DR
IR
PC
<=
<=
<=
<=

execution cycle:
PC
 decodifica IR
M[AR]
 AR <= PC
DR
 DR <= M[AR]
PC+1
 AR <= DR
La CPU identifica
 DR <= M[AR]
l’istruzione da eseguire.
 AC <= AC + DR
 PC <= PC + 1
23
Micro-operazioni (cont.)

fetch cycle:




AR
DR
IR
PC
<=
<=
<=
<=
PC
M[AR]
DR
PC+1
La CPU preleva
gli operandi.

execution cycle:







decodifica IR
AR <= PC
DR <= M[AR]
AR <= DR
DR <= M[AR]
AC <= AC + DR
PC <= PC + 1
24
Micro-operazioni (cont.)

fetch cycle:




AR
DR
IR
PC
<=
<=
<=
<=

PC
M[AR]
DR
PC+1
execution cycle:






La CPU esegue
l’istruzione.

decodifica IR
AR <= PC
DR <= M[AR]
AR <= DR
DR <= M[AR]
AC <= AC + DR
PC <= PC + 1
25
Linguaggio macchina


Istruzioni che la CPU è in grado di eseguire;
Due forme equivalenti:




Codice macchina: 10100101
Codice mnemonico: MOV A, B
L’insieme dei codici mnemonici di tutte le
istruzioni prende il nome di linguaggio
assembler;
L’assemblatore è un programma che
traduce
il
codice
mnemonico
nel
corrispondente codice macchina.
26
Istruzioni macchina

Ogni istruzione specifica:





l’operazione da svolgere;
gli operandi coinvolti;
La posizione della prossima istruzione è
(salvo nelle istruzioni di salto) implicita;
Il programma è eseguito in sequenza
L’indirizzo della prossima istruzione è pari
all’indirizzo
della
prima
istruzione
successiva alla istruzione corrente.
27
Istruzioni macchina (cont.)


Il Program Counter (PC) memorizza
l’indirizzo della prossima istruzione da
eseguire;
Il PC può essere:


incrementato automaticamente, durante le
normali operazioni;
inizializzato ad un particolare valore dalle
istruzioni di salto.
28
Esempio

ADD AC, 1024











AR <= PC
DR <= M[AR]
IR <= DR
PC <= PC+1
decodifica IR
AR <= PC
DR <= M[AR]
AR <= DR
DR <= M[AR]
AC <= AC + DR
PC <= PC + 1

JUMP 256








AR <= PC
DR <= M[AR]
IR <= DR
PC <= PC+1
decodifica IR
AR <= PC
DR <= M[AR]
PC <= DR
29
Istruzioni macchina (cont.)

Ogni CPU ha un suo formato per il codice
macchina:
op-code

Operando 1 Operando 2
Esempio:



codice operativo: ADD
operando 1: A
operando 2: B.
30
Modi di indirizzamento


Specificano la posizione degli operandi su
cui una istruzione deve essere eseguita
Possono essere:



Immediato
Diretto
Indiretto.
31
Immediato



Il dato è contenuto nell’istruzione stessa;
Per esempio: ADD AC, #99;
L’istruzione somma il numero 99 al contenuto
del registro AC.
32
Esempio
AR <= PC
DR <= M[AR]
IR <= DR
PC <= PC+1
decodifica IR
AR <= PC
DR <= M[AR]; legge l’immediato
AC <= AC + DR
PC <= PC + 1
33
Diretto



L’istruzione specifica l’indirizzo del dato su
cui si deve eseguire l’operazione;
Per esempio: ADD AC, X;
Il simbolo X può essere:


l’indirizzo della cella di Memoria che contiene il
dato;
il registro che contiene il dato.
34
Esempio
ADD AC, 05F88
Memoria
25
05F88
AC <= AC + 25
35
Esempio (cont.)
AR <= PC
DR <= M[AR]
IR <= DR
PC <= PC+1
decodifica IR
AR <= PC
DR <= M[AR]
AR <= DR
DR <= M[AR]
AC <= AC + DR
PC <= PC + 1
; legge l’indirizzo
; del dato
; legge il dato
36
Indiretto



L’istruzione
contiene
l’indirizzo
della
locazione di memoria in cui è contenuto
l’indirizzo del dato su cui l’istruzione deve
operare;
Per esempio: ADD AC, [X]
Il simbolo X può essere:


l’indirizzo della cella di memoria che contiene
l’indirizzo del dato;
il registro che contiene l’indirizzo del dato.
37
Esempio
ADD AC, [05F88]
Memoria
F0200
05F88
74
F0200
AC <= AC + 74
38
Esempio (cont.)
AR <= PC
DR <= M[AR]
IR <= DR
PC <= PC+1
decodifica IR
AR <= PC
DR <= M[AR] ; 1
AR <= DR
DR <= M[AR] ; 2
AR
DR
AC
PC
<=
<=
<=
<=
DR
M[AR] ; 3
AC + DR
PC + 1
39
Tipi di indirizzo

Assoluto:



L’istruzione specifica l’indirizzo completo
Viene prodotto un codice macchina lungo
Relativo:

L’istruzione specifica lo spiazzamento rispetto
ad un indirizzo di partenza
40
Tipi di indirizzo (cont.)

Lo spiazzamento può essere:



espresso su un byte: +127, -128
Non permette di accedere a qualunque
dato in memoria
Produce codice macchina compatto.
41
Esempio


Indirizzamento indiretto relativo;
Indirizzo di base contenuto in AR.
MOV AC, [+25]
Memoria
AR 05F88
05F88
25
63
05FAD
AC <= 63
42
Registro base e registro indice

Si estende il concetto di indirizzo relativo
utilizzando due registri:


BP, base pointer: contiene l’indirizzo di
partenza di un’area di memoria
BI, base index: contiene la posizione rispetto al
registro base in un area di memoria.
43
Esempio
MOV AC, BP[BI]
AC <= 63
Memoria
BP 05F88
05F88
25
BI 00025
63
05FAD
44
Tipi di istruzioni

Data transfer: trasferiscono dati:





Dalla memoria alla CPU: MOV AC, [0x25]
Dalla CPU alla memoria: MOV 0x33, AC
Tra registri della CPU: MOV DR, AC
Aritmetiche: ADD AC, 0x9B
Logiche: eseguono operazioni logiche:


XOR AC, AC
CMP AC, 0x0
45
Tipi di istruzioni (cont.)

Controllo di flusso: modificano la sequenza
delle istruzioni:




In modo assoluto: JMP 0xF0
In base ad una condizione: JNZ 0x1A
Chiamata/ritorno da procedura: CALL
sort/RET
Input/Output: istruzioni per il trasferimento
di dati:


Dalla CPU ad un dispositivo di output: OUT
0xAA
Da un dispositivo di input alla CPU: IN 0xAB.
46
Controllo di flusso condizionato


Vengono utilizzate per modificare il flusso di
esecuzione di un programma in base ad una
condizione;
Esempio:
Esegue AC-0x0A. Se il
CMP AC, #0x0A
risultato è zero, lo zeroflag in SR viene messo
JNZ loop
ad 1.
Se lo zero-flag in SR è 0,
viene eseguito il salto
all’indirizzo loop.
47
Chiamata/ritorno da procedura




Procedura: gruppo di istruzioni che
eseguono un compito specifico
È memorizzata una sola volta
Può essere eseguita un numero qualsiasi di
volte
Vantaggi:



Risparmio di spazio in memoria;
Modularità del programma;
Svantaggio: tempo di elaborazione per
eseguire le operazioni di chiamata e ritorno.
48
Esempio
L’indirizzo della
procedura viene
messo nel PC.
0xE0: sort:
0xA0: CALL sort
0xEF:
L’indirizzo della prossima
istruzione
da
eseguire
viene messo nel PC.
RET
PC
PC
PC
..
PC
PC
= 0xA0
= 0xE0
= 0xE1
= 0xEF
= 0xA1
CALL
RET
È necessario memorizzare
l’indirizzo di ritorno!
49
Lo stack





Lo stack è una zona di memoria dove i dati
vengono scritti/letti secondo una strategia
Last-In-First-Out (LIFO);
Operazione di scrittura sullo stack: push;
Operazione di lettura dallo stack: pop;
La locazione di memoria contenente l’ultimo
dato inserito (corrispondente al primo che
verrà letto) è detto cima dello stack;
La cima dello stack è memorizzata in uno
speciale registro: Stack Pointer, SP.
50
Uso dello stack

Dal meccanismo di chiamata a procedura
per:




Memorizzazione dell’indirizzo di ritorno
Salvataggio dei registri
Passaggio di parametri alla procedura
Per il salvataggio di variabili temporanee.
51
Esempio
STACK
PC <= PC + 1
PUSH PC
PC <= 0xE0
SP = 0
CALL
0xE0: sort:
0xA0: CALL sort
SP = 1
0xA1
0xEF:
RET
RET
POP PC
SP = 0
52
Vantaggi dello stack

Permette chiamate di procedure annidate.
STACK
SP = 0
0xA0: call sort
CALL
SP = 1
0xA1
0xB0: sort:
0xB1: call intcmp
CALL
0xB2
0xA1
SP = 2
53
Architettura completa di una CPU
SR
Memoria
ALU
AC
DR
AR
CPU
PC
IR
Control
Unit
SP
54
Scarica

Architettura processore