Architettura di una CPU Architettura ...corsiadistanza.polito.it/corsi/pdf/9030N/pdf/ese01.pdf ·...

31
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

Transcript of Architettura di una CPU Architettura ...corsiadistanza.polito.it/corsi/pdf/9030N/pdf/ese01.pdf ·...

Page 1: 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

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

Page 2: 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

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.

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

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.

Page 4: 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

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

Page 5: 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

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;

Page 6: 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

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.

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

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.

Page 8: 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

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

Page 9: 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

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.

Page 10: 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

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

Page 11: 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

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.

Page 12: 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

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.

Page 13: 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

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.

Page 14: 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

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;

Page 15: 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

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

Page 16: 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

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

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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.

Page 20: 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

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

Page 21: 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

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

Page 22: 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

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.

Page 23: 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

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

Page 24: 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

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.

Page 25: 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

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.

Page 26: 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

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

Page 27: 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

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.

Page 28: 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

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!

Page 29: 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

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.

Page 30: 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

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

Page 31: 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

Architettura di una CPU

M. Violante 1.31

61Architettura di una CPU

Architettura completa di unaCPU

ALU

ACDR

IRPCAR ControlUnit

Mem

oria

CPUSR

SP