Architettura di una CPU M. Violante 1.1 Architettura di una CPU Architettura Architettura di di una una CPU CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica 2 Architettura di una CPU Sommario • Organizzazione di un processore • Linguaggio macchina • Modi di indirizzamento • Tipi di istruzioni
31
Embed
Architettura di una CPU Architettura ...corsiadistanza.polito.it/corsi/pdf/9030N/pdf/ese01.pdf · Architettura di una CPU M. Violante 1.3 Architettura di una CPU 5 Unità di misura
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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)
• È 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:
• 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;