1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di...

54
1 Architettura di una CPU

Transcript of 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di...

Page 1: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

1

Architettura di una CPU

Page 2: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

2

Sommario

Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

Page 3: 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.

Page 4: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 5: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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).

Page 6: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 7: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

7

Comportamento di una CPU

fetch cycle

execution cycle

ci sono richieste di interrupt ?

N

trasferisce il controlloall’interrupt handler

S

Page 8: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

8

Architettura di una CPU

ALU

ACDR

IRPCARControl

Unit

Mem

ori

a

CPUSR

Page 9: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 10: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 11: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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);

Page 12: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 13: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 14: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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).

Page 15: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

15

Interfaccia con la memoria

Mem

ori

a

CP

UDBUS

ABUS

R/W#

READY

Page 16: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 17: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 18: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

18

Ciclo di Lettura

CLOCK

ABUS

DBUS

R/W#

READY

T1 T2 T3 T4

Indirizzo Valido

Lettura

Dati

OK

Page 19: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

19

Ciclo di Scrittura

CLOCK

ABUS

DBUS

R/W#

READY

T1 T2 T3 T4

Indirizzo Valido

OK

Dati Validi

Scrittura

Page 20: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

20

Ciclo di Wait

CLOCK

ABUS

DBUS

R/W#

READY

T1 T2 T3 Tw

Indirizzo Valido

Lettura

Dati

OK

T4

Page 21: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 22: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 23: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 24: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 25: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 26: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 27: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 28: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 29: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 30: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 31: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

31

Modi di indirizzamento

Specificano la posizione degli operandi su cui una istruzione deve essere eseguita

Possono essere: Immediato Diretto Indiretto.

Page 32: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

32

Immediato

Il dato è contenuto nell’istruzione stessa; Per esempio: ADD AC, #99; L’istruzione somma il numero 99 al

contenuto del registro AC.

Page 33: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

33

Esempio

AR <= PCDR <= M[AR]IR <= DRPC <= PC+1decodifica IRAR <= PCDR <= M[AR] ; legge l’immediatoAC <= AC + DRPC <= PC + 1

Page 34: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 35: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

35

Esempio

ADD AC, 05F88

AC <= AC + 25

Memoria

25 05F88

Page 36: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 37: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 38: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

38

Esempio

ADD AC, [05F88]

AC <= AC + 74

Memoria

F0200 05F88

74 F0200

Page 39: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 40: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 41: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 42: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

42

Esempio

Indirizzamento indiretto relativo; Indirizzo di base contenuto in AR.

MOV AC, [+25]

Memoria

05F88

63 05FAD

05F88AR

25

AC <= 63

Page 43: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 44: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

44

Esempio

MOV AC, BP[BI] Memoria

05F88

63 05FAD

05F88BP

25

AC <= 63

00025BI

Page 45: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 46: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 47: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 48: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 49: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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!

Page 50: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 51: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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.

Page 52: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 53: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

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

Page 54: 1 Architettura di una CPU. 2 Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni.

54

Architettura completa di una CPU

ALU

ACDR

IRPCARControl

Unit

Mem

ori

a

CPUSR

SP