Il processore La memoria I dispositivi periferici Il sistema di interruzione
1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di...
-
Upload
naldo-fiori -
Category
Documents
-
view
215 -
download
1
Transcript of 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di...
1
Architettura di una CPU
2
Sommario
Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.
3
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.
4
Instruction cycle
È suddiviso in due cicli: Fetch cycle Execution cycle
Fetch 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.
5
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).
6
Interrupt
Evento che interrompe il normale funzionamento della CPU
In risposta la CPU: 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.
7
Comportamento di una CPU
fetch cycle
execution cycle
ci sono richieste di interrupt ?
N
trasferisce il controlloall’interrupt handler
S
8
Architettura di una CPU
ALU
ACDR
IRPCARControl
Unit
Mem
ori
a
CPUSR
9
Architettura di una CPU (cont.)
DR, Data Register: memorizza i dati provenienti: 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.
10
Architettura di una CPU (cont.)
SR, Status Register: memorizza lo stato del processore;
IR, Instruction Register: memorizza il codice operativo dell’istruzione da eseguire, op-code, 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.
11
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);
12
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.
13
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.
14
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).
15
Interfaccia con la memoria
Mem
ori
a
CP
UDBUS
ABUS
R/W#
READY
16
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
17
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.
18
Ciclo di Lettura
CLOCK
ABUS
DBUS
R/W#
READY
T1 T2 T3 T4
Indirizzo Valido
Lettura
Dati
OK
19
Ciclo di Scrittura
CLOCK
ABUS
DBUS
R/W#
READY
T1 T2 T3 T4
Indirizzo Valido
OK
Dati Validi
Scrittura
20
Ciclo di Wait
CLOCK
ABUS
DBUS
R/W#
READY
T1 T2 T3 Tw
Indirizzo Valido
Lettura
Dati
OK
T4
21
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.
22
Micro-operazioni
fetch cycle: AR <= PC DR <= M[AR] IR <= DR PC <= PC+1
execution cycle: decodifica IR AR <= PC DR <= M[AR] AR <= DR DR <= M[AR] AC <= AC + DR PC <= PC + 1
23
Micro-operazioni (cont.)
fetch cycle: AR <= PC DR <= M[AR] IR <= DR PC <= PC+1
execution cycle: decodifica IR AR <= PC DR <= M[AR] AR <= DR DR <= M[AR] AC <= AC + DR PC <= PC + 1
La CPU identifical’istruzione da eseguire.
24
Micro-operazioni (cont.)
fetch cycle: AR <= PC DR <= M[AR] IR <= DR PC <= PC+1
execution cycle: decodifica IR AR <= PC DR <= M[AR] AR <= DR DR <= M[AR] AC <= AC + DR PC <= PC + 1
La CPU prelevagli operandi.
25
Micro-operazioni (cont.)
fetch cycle: AR <= PC DR <= M[AR] IR <= DR PC <= PC+1
execution cycle: decodifica IR AR <= PC DR <= M[AR] AR <= DR DR <= M[AR] AC <= AC + DR PC <= PC + 1
La CPU eseguel’istruzione.
26
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.
27
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.
28
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.
29
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
30
Istruzioni macchina (cont.)
Ogni CPU ha un suo formato per il codice macchina:
Esempio: codice operativo: ADD operando 1: A operando 2: B.
op-code Operando 1 Operando 2
31
Modi di indirizzamento
Specificano la posizione degli operandi su cui una istruzione deve essere eseguita
Possono essere: Immediato Diretto Indiretto.
32
Immediato
Il dato è contenuto nell’istruzione stessa; Per esempio: ADD AC, #99; L’istruzione somma il numero 99 al
contenuto del registro AC.
33
Esempio
AR <= PCDR <= M[AR]IR <= DRPC <= PC+1decodifica IRAR <= PCDR <= M[AR] ; legge l’immediatoAC <= AC + DRPC <= PC + 1
34
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.
35
Esempio
ADD AC, 05F88
AC <= AC + 25
Memoria
25 05F88
36
Esempio (cont.)
AR <= PCDR <= M[AR]IR <= DRPC <= PC+1decodifica IRAR <= PCDR <= M[AR] ; legge l’indirizzoAR <= DR ; del datoDR <= M[AR] ; legge il datoAC <= AC + DRPC <= PC + 1
37
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.
38
Esempio
ADD AC, [05F88]
AC <= AC + 74
Memoria
F0200 05F88
74 F0200
39
Esempio (cont.)
AR <= PCDR <= M[AR]IR <= DRPC <= PC+1decodifica IRAR <= PCDR <= M[AR] ; 1AR <= DRDR <= M[AR] ; 2
AR <= DR
DR <= M[AR] ; 3
AC <= AC + DR
PC <= PC + 1
40
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
41
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.
42
Esempio
Indirizzamento indiretto relativo; Indirizzo di base contenuto in AR.
MOV AC, [+25]
Memoria
05F88
63 05FAD
05F88AR
25
AC <= 63
43
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.
44
Esempio
MOV AC, BP[BI] Memoria
05F88
63 05FAD
05F88BP
25
AC <= 63
00025BI
45
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
46
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.
47
Controllo di flusso condizionato
Vengono utilizzate per modificare il flusso di esecuzione di un programma in base ad una condizione;
Esempio:CMP AC, #0x0A
JNZ loop
Esegue AC-0x0A. Se il risultato è zero, lo zero-flag in SR viene messo ad 1.
Se lo zero-flag in SR è 0, viene eseguito il salto all’indirizzo loop.
48
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.
49
Esempio
0xA0: CALL sort
0xE0: sort:
0xEF: RET
PC = 0xA0PC = 0xE0PC = 0xE1..PC = 0xEFPC = 0xA1
CALL
RET
L’indirizzo della procedura viene messo nel PC.
L’indirizzo della prossima istruzione da eseguire viene messo nel PC.
È necessario memorizzarel’indirizzo di ritorno!
50
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.
51
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.
52
Esempio
0xA0: CALL sort
0xE0: sort:
0xEF: RET
PC <= PC + 1PUSH PCPC <= 0xE0
POP PC
STACK
SP = 0
SP = 10xA1
SP = 0
CALL
RET
53
Vantaggi dello stack
Permette chiamate di procedure annidate.
0xA0: call sort
0xB0: sort:0xB1: call intcmp
STACK
SP = 0
SP = 10xA1
SP = 2
CALL
CALL
0xA1
0xB2
54
Architettura completa di una CPU
ALU
ACDR
IRPCARControl
Unit
Mem
ori
a
CPUSR
SP