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

Post on 25-Jul-2020

12 views 0 download

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