Architettura di una CPU Architettura ...corsiadistanza.polito.it/corsi/pdf/9030N/pdf/ese01.pdf ·...
Transcript of Architettura di una CPU Architettura ...corsiadistanza.polito.it/corsi/pdf/9030N/pdf/ese01.pdf ·...
Architettura di una CPU
M. Violante 1.1
Architettura di una CPUArchitetturaArchitettura didi unauna CPUCPU
Massimo VIOLANTEPolitecnico di Torino
Dipartimento di Automatica e Informatica
2Architettura di una CPU
Sommario
• Organizzazione di un processore• Linguaggio macchina• Modi di indirizzamento• Tipi di istruzioni
Architettura di una CPU
M. Violante 1.2
3Architettura di una CPU
Organizzazione di un processore
• Un processore, CPU, esegue una sequenza diistruzioni (programma) prelevate da una memoria
• La memoria è esterna alla CPU• La sequenza di operazioni per eleborare una singola
istruzione prende il nome di instruction cycle.
4Architettura di una CPU
Instruction cycle
• È suddiviso in due cicli:− fetch cycle: la CPU legge dalla memoria
l’istruzione che deve essere eseguita− execution cycle: consiste in:
⋅ riconoscimento dell’istruzione da eseguire⋅ lettura degli operandi dell’istruzione⋅ esecuzione dell’operazione.
Architettura di una CPU
M. Violante 1.3
5Architettura di una CPU
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 (MHz)
• Es:− frequenza di clock = 500 MHz− tCPU = 2 ns (nanosecondi).
6Architettura di una CPU
Interrupt
• È un evento che inerrompe ll normale funzionamento della CPU
• In risposta ad un interrupt, la CPU sospende l’esecuzione del programma corrente ed esegue il programma di gestione dell’interrupt: interrupt handler
• Al termine dell’interrupt handler, la CPU riprende l’esecuzione del programma interrotto
• La presenza di un interrupt viene identificata allafine di ogni instruction cycle.
Architettura di una CPU
M. Violante 1.4
7Architettura di una CPU
Comportamento di una CPU
fetch cycle
execution cycle
ci sono richiestedi interrupt ?
N
trasferisce il controlloall’interrupt handler
S
8Architettura di una CPU
Architettura di una CPU
ALU
ACDR
IRPCAR ControlUnit
Mem
oria
CPUSR
Architettura di una CPU
M. Violante 1.5
9Architettura di una CPU
Architettura di una CPU (cont.)
• Due tipi di connessioni:− data bus: connessioni su cui vengono trasferiti
dati− control bus: connessioni sui cui vengono
trasferiti i comandi.
10Architettura di una CPU
Architettura di una CPU (cont.)
• DR, Data Register: memorizza i dati provenienti:− dalla memoria diretti alla CPU;− dalla CPU 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, Accumulator: memorizza in dati in ingresso edin uscita dall’ALU;
Architettura di una CPU
M. Violante 1.6
11Architettura di una CPU
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. Sullabase dell’op-code, l’unità di controllo 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.
12Architettura di una CPU
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;⋅ flag di controllo.
Architettura di una CPU
M. Violante 1.7
13Architettura di una CPU
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 bytemeno significativo del risultato è un numero pari;
− auxiliary flag: usato per operazioni aritmetiche su numeri espressi in BCD.
14Architettura di una CPU
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 diun’operazione;
− overflow flag: va a 1 se l’operaziono corrente hadato luogo ad overflow.
Architettura di una CPU
M. Violante 1.8
15Architettura di una CPU
Intel 8086: flag di controllo
• Modificano il comportamento delle istruzioni che verranno eseguite;
− direction flag: utilizzata dalle operazioni dimanipolazione delle stringhe;
− interrupt flag: quando è 1 vengono servite leeventuali richieste di interrupt;
− trap flag: se è 1 viene eseguito un interrupt allafine dell’esecuzione di ogni operazione (serve per realizzare i debugger).
16Architettura di una CPU
Interfaccia con la memoria
Mem
oria
CPUDBUS
ABUS
R/W#READY
Architettura di una CPU
M. Violante 1.9
17Architettura di una CPU
Interfaccia con la memoria(cont.)
• 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 laMemoria scrivono il dato che deve essere trasferito:
− da CPU a Memoria: la CPU scrive il DBUS, laMemoria legge il DBUS
− da Memoria e CPU: la Memoria scrive il DBUS, la CPU legge il DBUS
18Architettura di una CPU
Interfaccia con la memoria(cont.)
• 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.
Architettura di una CPU
M. Violante 1.10
19Architettura di una CPU
Ciclo di Lettura
CLOCK
ABUS
DBUS
R/W#
READY
T1 T2 T3 T4
Indirizzo Valido
Lettura
Dati
OK
20Architettura di una CPU
Ciclo di Scrittura
CLOCK
ABUS
DBUS
R/W#
READY
T1 T2 T3 T4
Indirizzo Valido
OK
Dati Validi
Scrittura
Architettura di una CPU
M. Violante 1.11
21Architettura di una CPU
Ciclo di Wait
CLOCK
ABUS
DBUS
R/W#
READY
T1 T2 Tw T3
Indirizzo Valido
Lettura
Dati
OK
T4
22Architettura di una CPU
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.
Architettura di una CPU
M. Violante 1.12
23Architettura di una CPU
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
24Architettura di una CPU
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 + 1La CPU identifical’istruzione da eseguire.
Architettura di una CPU
M. Violante 1.13
25Architettura di una CPU
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 + 1La CPU prelevagli operandi.
26Architettura di una CPU
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 + 1La CPU eseguel’istruzione.
Architettura di una CPU
M. Violante 1.14
27Architettura di una CPU
Linguaggio macchina
• Istruzioni che la CPU è in grado di eseguire;• Può essere visto sotto 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.
28Architettura di una CPU
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, quindi l’indirizzo della prossima istruzione corrisponde all’indirizzo della prima istruzione successiva alla istruzione corrente;
Architettura di una CPU
M. Violante 1.15
29Architettura di una CPU
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.
30Architettura di una CPU
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
Architettura di una CPU
M. Violante 1.16
31Architettura di una CPU
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
32Architettura di una CPU
Operandi
• Le prestazioni e le potenzialità di una CPUdipendono dal numero di operando per istruzione;
• Valutiamo diverse alternative considerando l’operazione:
X= A*B + C*C
Architettura di una CPU
M. Violante 1.17
33Architettura di una CPU
Architettura a 1 operando
LOAD A; AC <= M[A];
MUL B; AC <= AC*M[B];
STORE T; M[T] <= AC;
LOAD C; AC <= M[C];
MUL C; AC <= AC*M[C];
ADD T; AC <= AX+M[T];
STORE X; M[X] <= AC;
34Architettura di una CPU
Architettura a 2 operandi
MOV T, A; M[T] <= M[A];
MUL T, B; M[T] <= M[T]*M[B];
MOV X, C; M[X] <= M[C];
MUL X, C; M[X] <= M[X]*M[C];
ADD X, T; M[X] <= M[X]+M[T];
Architettura di una CPU
M. Violante 1.18
35Architettura di una CPU
Architettura a 3 operandi
MUL T, A, B; M[T] <= M[A]*M[B];
MUL X, C, C; M[X] <= M[C]*M[C];
ADD X, X, T; M[X] <= M[X]+M[T];
36Architettura di una CPU
Confronto
• CPU1:− ogni operando in una locazione diversa− fetch: n+1 letture in memoria ( 1 per op-code, n
per gli operandi);• Numero di accessi in memoria:
− 1 operando: 14 x fetch, 7 x esecuzione = 21− 2 operandi: 15 x fetch, 13 x esecuzione = 28− 3 operandi: 12 x fetch, 9 x esecuzione = 21
Architettura di una CPU
M. Violante 1.19
37Architettura di una CPU
Confronto (cont.)
• CPU2: − op-code e operandi sono letti in un unico
accesso in memoria• Numero di accessi in memoria:
− 1 operando: 7 x fetch, 7 x esecuzione = 14− 2 operandi: 5 x fetch, 13 x esecuzione = 18− 3 operandi: 4 x fetch, 9 x esecuzione = 13
38Architettura di una CPU
Modi di indirizzamento
• Specificano la posizione degli operandi su cui una istruzione deve essere eseguita;
• Possono essere:− immediato;− diretto;− indiretto.
Architettura di una CPU
M. Violante 1.20
39Architettura di una CPU
Immediato
• Il dato è contenuto nell’istruzione stessa;• Per esempio: ADD AC, #99;• L’istruzione somma il numero 99 al contenuto del
registro AC.
40Architettura di una CPU
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
Architettura di una CPU
M. Violante 1.21
41Architettura di una CPU
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.
42Architettura di una CPU
Esempio
ADD AC, 05F88
AC <= AC + 25
Memoria
25 05F88
Architettura di una CPU
M. Violante 1.22
43Architettura di una CPU
Esempio (cont.)
− AR <= PC
− DR <= M[AR]
− IR <= DR
− PC <= PC+1
− decodifica IR
− AR <= PC
− DR <= M[AR] ; legge l’indirizzo
− AR <= DR ; del dato
− DR <= M[AR] ; legge il dato
− AC <= AC + DR
− PC <= PC + 1
44Architettura di una CPU
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.
Architettura di una CPU
M. Violante 1.23
45Architettura di una CPU
Esempio
ADD AC, [05F88]
AC <= AC + 74
Memoria
F0200 05F88
74 F0200
46Architettura di una CPU
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
− DR <= M[AR] ; 3
− AC <= AC + DR
− PC <= PC + 1
Architettura di una CPU
M. Violante 1.24
47Architettura di una CPU
Tipi di indirizzo
• Gli indirizzi possono essere espressi in modo:− assoluto:
⋅ l’istruzione specifica l’indirizzo completo;⋅ viene prodotto un codice macchina lungo;
− relativo:⋅ l’istruzione specificata lo spiazzamento rispetto ad un indirizzo di partenza;
48Architettura di una CPU
Tipi di indirizzo (cont.)
• Lo spiazzamento può essere:− espresso su un byte: +127, -128;− espresso un una word: +32K, -32K;
• Non permette di accedere a qualunque dato inmemoria;
• Produce codice macchina compatto.
Architettura di una CPU
M. Violante 1.25
49Architettura di una CPU
Esempio
• Indirizzamento indiretto relativo;• Indirizzo di base contenuto in AR.
MOV AC, [+25]
Memoria
05F88
63 05FA1
05F88AR
25
AC <= 63
50Architettura di una CPU
Registro base e registro indice
• Si estende il concetto di indirizzo relativo utilizzandodue registri:
− BP, base pointer: contiene l’indirizzo di partenzadi un’area di memoria;
− BI, base index: contiene la posizione rispetto alregistro base in un area di memoria.
Architettura di una CPU
M. Violante 1.26
51Architettura di una CPU
Esempio
MOV AC, BP[BI] Memoria
05F88
63 05FA1
05F88BP
25
AC <= 63
00025BI
52Architettura di una CPU
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
Architettura di una CPU
M. Violante 1.27
53Architettura di una CPU
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.
54Architettura di una CPU
Controllo di flusso condizionato
• Vengono utilizzate per modificare il flusso diesecuzione di un programma in base ad una condizione;
• Esempio:CMP AC, #0x0A
JNZ loop
Esegue AC-0x0A. Se il risultato è zero, lozero-flag in SR viene messo ad 1.
Se lo zero-flag in SR è 0,viene eseguito il salto all’indirizzo loop.
Architettura di una CPU
M. Violante 1.28
55Architettura di una CPU
Chiamata/ritorno da procedura
• Procedura: gruppo di istruzioni che eseguono un compito specifico;
• È memorizzata una solo volta;• Può essere eseguita un numero qualsiasi di volte;• Vantaggi:
− risparmio di spazio in memoria;− modularità del programma;
• Svantaggio: tempo di elaborazione per eseguire leoperazioni di chiamata e ritorno.
56Architettura di una CPU
Esempio
0xA0: CALL sort
0xE0: sort:
0xEF: RET
PC = 0xA0
PC = 0xE0
PC = 0xE1
..
PC = 0xEF
PC = 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!
Architettura di una CPU
M. Violante 1.29
57Architettura di una CPU
Lo stack
• Lo stack è una zona di memoria dove i datti 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.
58Architettura di una CPU
Lo stack (cont.)
• Viene utilizzato:− 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.
Architettura di una CPU
M. Violante 1.30
59Architettura di una CPU
Esempio
0xA0: CALL sort
0xE0: sort:
0xEF: RET
PC <= PC + 1
PUSH PC
PC <= 0xE0
POP PC
STACK
SP = 0
SP = 10xA1
SP = 0
CALL
RET
60Architettura di una CPU
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
Architettura di una CPU
M. Violante 1.31
61Architettura di una CPU
Architettura completa di unaCPU
ALU
ACDR
IRPCAR ControlUnit
Mem
oria
CPUSR
SP