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

Post on 02-May-2015

215 views 1 download

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

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.

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.

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

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.

7

Comportamento di una CPU

fetch cycle

execution cycle

ci sono richieste di interrupt ?

N

trasferisce il controlloall’interrupt handler

S

8

Architettura di una CPU

ALU

ACDR

IRPCARControl

Unit

Mem

ori

a

CPUSR

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.

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.

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

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.

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.

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

15

Interfaccia con la memoria

Mem

ori

a

CP

UDBUS

ABUS

R/W#

READY

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

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.

18

Ciclo di Lettura

CLOCK

ABUS

DBUS

R/W#

READY

T1 T2 T3 T4

Indirizzo Valido

Lettura

Dati

OK

19

Ciclo di Scrittura

CLOCK

ABUS

DBUS

R/W#

READY

T1 T2 T3 T4

Indirizzo Valido

OK

Dati Validi

Scrittura

20

Ciclo di Wait

CLOCK

ABUS

DBUS

R/W#

READY

T1 T2 T3 Tw

Indirizzo Valido

Lettura

Dati

OK

T4

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.

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

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.

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.

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.

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.

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.

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.

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

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

31

Modi di indirizzamento

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

Possono essere: Immediato Diretto Indiretto.

32

Immediato

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

contenuto del registro AC.

33

Esempio

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

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.

35

Esempio

ADD AC, 05F88

AC <= AC + 25

Memoria

25 05F88

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

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.

38

Esempio

ADD AC, [05F88]

AC <= AC + 74

Memoria

F0200 05F88

74 F0200

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

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

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.

42

Esempio

Indirizzamento indiretto relativo; Indirizzo di base contenuto in AR.

MOV AC, [+25]

Memoria

05F88

63 05FAD

05F88AR

25

AC <= 63

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.

44

Esempio

MOV AC, BP[BI] Memoria

05F88

63 05FAD

05F88BP

25

AC <= 63

00025BI

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

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.

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.

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.

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!

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.

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.

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

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

54

Architettura completa di una CPU

ALU

ACDR

IRPCARControl

Unit

Mem

ori

a

CPUSR

SP