Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3)...

32
S. Salvatori - Microelettronica – maggio 2019 – (1) Microelettronica Organizzazione hardware del processore ARM prof. Stefano Salvatori A.A. 2018/2019 Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia. Corso introduttivo di progettazione di sistemi embedded

Transcript of Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3)...

Page 1: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (1)

Microelettronica

Organizzazione hardware

del processore ARM

prof. Stefano Salvatori

A.A. 2018/2019

Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia.

Corso introduttivo di progettazione di sistemi embedded

Page 2: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (2)

Sommario

● Pipeline a 3 stadi

● Pipeline a 5 stadi

● Esempi di esecuzione di istruzioni (datapath)

● Note sul progetto ARM– Clock a due fasi e timing– ALU– Barrel shifter– Moltiplicatore– Banco dei registri– Layout– Logica di controllo

● Interfacciamento verso un coprocessore

Page 3: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (3)

Introduzione: le idee di ARM

● L’organizzazione dell’ARM è cambiata poco rispetto al primo progetto degli anni ’90;

● con la tecnologia, da 3 um (ARM1) a 0.3 um (ARM7), sono migliorate le prestazioni mentre gli schemi di base sono rimasti gli stessi;

● Il successivo progresso (ARM9) ha previsto un cambio dell'architettura:● pipeline a 5 stadi ● memoria dati e memoria programma separate (architettura

Harward)● Attualmente ARM ha sviluppato diversi uP “ritagliati” a seconda

dell'applicazione.

Page 4: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (4)

Organizzazione per

pipeline a 3-stadi

(ARM7-TDMI*)

*Thumb, Debugger, Multiplier, ICE

Page 5: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (5)

Organizzazione per pipeline a 3-stadi

● Registri: • 2 uscite• 1 ingresso • 2 linee dedicate per il PC

● Barrel-shifter● ALU● Address register + incrementer● data registers● Decoder istruzioni + logica di controllo

2 operandi per l'ALU

multiply

data out register

instruction

decode

&

control

incrementer

registerbank

address register

barrelshifter

A[31:0]

D[31:0]

data in register

ALU

control

PC

PC

ALU bus

A bus

B bus

register

Page 6: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (6)

Pipeline a 3 stadi

Fetch. L’istruzione è prelevata dalla memoria e posta nella linea di pipeline dell’istruzione.

Decode. L’istruzione occupa il blocco di decodifica (ma non il datapath): l’istruzione è decodificata e sono preparati i segnali di datapath per il prossimo ciclo di clock.

Execute. L’istruzione occupa il datapath: sono letti gli operandi (registri), si ha lo shift, è svolta l’operazione ALU e il risultato è scritto nel banco dei registri.

fetch decode execute

time

1

fetch decode execute

fetch decode execute

2

3

instruction

Page 7: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (7)

In ogni periodo è impegnata una differente sezione hardware;

Per istruzioni di data-processing occorrono tre colpi di clock;

Con la pipeline si ha l’esecuzione di una istruzione per ciclo di clock e periodo di latenza pari a 3.

fetch decode execute

time

1

fetch decode execute

fetch decode execute

2

3instruction

L'hardware è diviso in sezioni.Ciascuna sezione è impegnata in ogni ciclo di clock

throughput

Pipeline a 3 stadi

Page 8: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (8)

Esecuzione di un'istruzione a più cicli● L’esecuzione è meno regolare;

● Nell’esempio: ADD seguita da STR:

fetch ADD decode execute

time

1

fetch STR decode calc. addr.

fetch ADD decode execute

2

3

data xfer

fetch ADD decode execute4

5 fetch ADD decode execute

instruction

datapath

decode

acc. mem

Page 9: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (9)

Program counter

● Il program counter PC (= r15 di uso generale) deve contenere un valore che consenta di caricare le istruzioni successive

● Per la pipeline, in pratica, il PC punta 8 byte (2 istruzioni) oltre l’istruzione corrente (fase di execute)

● Questo è di fondamentale importanza nel caso di salti relativi alla posizione attuale (è comunque il compilatore a calcolare l’offset del salto)

● Per altri usi del PC, letto come r15, il programmatore deve svolgere un'attenta analisi

Page 10: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (10)

Esempi di esecuzione

di istruzioni

per l'ARM7

Page 11: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (11)

Data processing tra due registri

2 operandi provenienti da due registri Il secondo operando è passato per il

barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri

address register

increment

registersRd

Rn

PC

Rm

as ins.

as instruction

mult

data out data in i. pipe

(a) register - register operations

operazione tra 2 registri. Datapath:

Il PC è incrementato e l'istruzione successiva caricata in i.pipe

Page 12: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (12)

Data processing tra un reg. e un immediato

2 operandi: contenuto di un registro e un immediato (1 byte)

Il secondo operando è passato per il barrel-shifter

I due giungono alla ALU Il risultato giunge al banco di registri

operazione tra registro e immediatoDatapath:

address register

increment

registersRd

Rn

PC

as ins.

as instruction

mult

data out data in i. pipe

[7:0]

(b) register - immediate operations

Il PC è incrementato e l'istruzione successiva caricata in i.pipe

Page 13: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (13)

Store (data transfer): 1° ciclo

Una istruzione di load/store calcola l’indirizzo di memoria nello stesso modo con cui una istruzione di data-processing tratta gli operandi;

datapath:

address register

increment

registersRn

PC

lsl #0

= A / A + B / A - B

mult

data out data in i. pipe

[11:0]

(a) 1st cycle - compute address

Primo ciclo(calcola l'indirizzo)

base offset

calcolo di PC(fine 1° ciclo)

A | A+B | A-B

Page 14: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (14)

datapath:

address register

increment

registersRn

Rd

shifter

= A + B / A - B

mult

PC

byte? data in i. pipe

(b) 2nd cycle - store data & auto-index

secondo ciclo(scrive in mem.)

auto-indexinguscirà PC(fine 2° ciclo)

Se riguarda 1 byte:Il valore è replicato 4 volte

Nel caso di LOAD in un 3° ciclo si ha il trasferimento da data in nel registro

Store (data transfer): 2° ciclo

Page 15: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (15)

In una istruzione di salto, nel 1° ciclo si calcola l'indirizzo a cui saltare

L'offset (immediato a 24 bit) subisce uno shift di 2 bit →allineamento con word ...… sommato al contenuto di PC

datapath:

address register

increment

registersPC

lsl #2

= A + B

mult

data out data in i. pipe

[23:0]

(a) 1st cycle - compute branch target

Primo ciclo(calcola indirizzo)

Salti (branch, B)

Page 16: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (16)

Nota:il ritorno è in realtà a un indirizzo PC-4 (PC “guarda” sempre due istruzioni avanti) nel 3° ciclo (→ pipeline refill) viene aggiustato il valore

datapath:

address register

increment

registersR14

PC

shifter

= A

mult

data out data in i. pipe

(b) 2nd cycle - save return address

secondo ciclo(salva ind. di ritorno)

Salti (branch with link, BL)

Nel caso di “branch with link”, per ritornare all'istruzione successiva a quella di branch:PC è copiato in r14

Page 17: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (17)

Organizzazione

nel caso di

pipeline a 5-stadi

Page 18: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (18)

Aumentare il numero di slot

● La soluzione a 3-stadi è molto efficace ed è stata adottata fino all’ARM7;

● Per sistemi con migliori prestazioni dobbiamo ricercare soluzioni più efficienti:

clk

istrprogr f

CPINT

n° medio di cicli di clock per istruzione

Per diminuire il tempo complessivo di esecuzione di un programma:

• aumentare fCLK

• diminuire CPInumero maggiore di stadi per la pipeline

Page 19: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (19)

Organizzazione per pipeline a 5 stadi

Aumentare fCLK

• semplificare la logica di ogni stadio della pipeline

aumentare il numero di stadi della pipeline

Diminuire CPI• le istruzioni devono essere riconfigurate in modo

che diminuisca il numero di slot che esse occupano nella pipeline

• ridurre gli stalli dovuti ad istruzioni che siano interdipendenti

Page 20: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (20)

“Il collo di bottiglia”

● Il modello di Von Neumann limita la possibilità di ridurre CPI a causa degli accessi alla memoria, sia di programma che di dei dati;

● Il sistema di memoria dovrebbe consentire di acquisire maggiori informazioni/ciclo (>32 bit) oppure:

● separare la memoria di programmada quella dei dati

Page 21: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (21)

Pipeline a 5 stadi (ARM9TDMI)

● Nei processori ARM con pipeline a 5-stadi:

• fetch: l’istr. è prelevata e depositata nella pipeline;

• decode: l’istr. è decodificata e gli operandi prelevati dai registri;

• execute: shift dell’operando e risultato dell’ALU. Se l’istr. è un load/store, con l’ALU si calcola l’indirizzo di memoria;

• buffer/data: eventuale accesso alla memoria, altrimenti il risultato dell’ALU è posto in un buffer per mantenere lo stesso flusso della pipeline per tutte le istruzioni;

• write back: il risultato è caricato in un registro (incluso il load da memoria).

instructionfetch

regwriteshift/ALU

r. read

decode

data memoryaccess

buffer/data WriteFetch Decode Execute

mem

Page 22: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (22)

ARM9TDMI

Registri: 3 porte di lettura e 2 di scrittura (*)

Memorie separate:• I-cache: per istruzioni

• D-cache: per i dati Incr. per LDM e STM Data-forwarding:

• i risultati sono passati tra gli stadi appena sono disponibili

(*) Normalmente nei RISC: 2 per lettura e 1 per scrittura.

Page 23: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (23)

Data forwarding

Nella pipeline a 5 stadi il ciclo di esecuzione è praticamente spezzato in 3 slot;

Se un'istruzione ha bisogno del dato prodotto dall'istruzione precedente si ha dipendenza;

Lo stallo si avrebbe se il dato fosse richiesto prima che il risultato venga trasferito nel registro di destinazione

Nell'ARM9TDMI sono inseriti percorsi per i dati che presentano il risultato appena disponibile: data forwarding

Page 24: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (24)

Stallo inevitabile (read-after-write)

Nella seguente sequenza:

LDR r3, [..]

ADD r1, r2, r3

il dato in r3 è disponibile dalla prima istruzione solo nel penultimo ciclo buffer/data

mentre la seconda la richiede nel ciclo di esecuzione

instructionfetch

regwriteshift/ALU

r. read

decode

data memoryaccess

Memory WriteFetch Decode Execute

Il compilatore deve evitare di porre in sequenza questo tipo di istruzioni

Page 25: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (25)

Compatibilità

● Per ARM con pipeline a 3 stadi il PC punta 8 byte (2 istruzioni) oltre l’istruzione corrente;

● Con la pipeline a 5 stadi gli operandi sono letti un ciclo prima rispetto a quella a tre stadi: PC+4 anziché PC+8;

● Per avere compatibilità gli ARM con pipeline a 5 stadi emulano quelli a 3 stadi

● L'incrementer di PC bypassa il registro di pipeline tra fetch e decode → PC+4 per l'istruzione attuale = PC+8 per l'istruzione successiva.

Page 26: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (26)

Alcune soluzioni

nell'architettura ARM

Page 27: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (27)

Segnale di clock

Sono utilizzati latch in luogo di flip-flop

→ sensibili ai livelli e non ai fronti del clock È necessario un clock a due fasi

1 clock cycle

phase 1

phase 2

Φ1

Φ2

dato

Φ1 Φ2Le due fasi sono derivate da un unico segnale di clock in ingresso (PLL)

Datapath ← RTLControl ← FSM

Page 28: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (28)

Ciclo datapath

I bus sono dinamici (precaricati: anche se manca il clock lo stato è mantenuto)

read bus valid

shift out valid

ALU out

shift time

ALU time

registerwrite time

registerreadtime

ALU operandslatched

phase 1

phase 2

prechargeinvalidatesbuses

Ciclo = lett.reg + shift + ALU + scritt.reg + sep.fasi

Page 29: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (29)

Adder nel primo prototipo ARM

Ripple-carry adder (32 stadi)

AB

Cin

sum

Cout

AOI

OAIARM1:

Page 30: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (30)

Adder in ARM2

4-bit Carry look ahead (8 stadi)

A[3:0]

B[3:0]

Cin[0]

sum[3:0]

Cout[3]

4-bitadderlogic

P

G

ARM2

AOI

OAI

Page 31: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (31)

Funzioni della ALU per l 'ARM2

fs5 fs4 fs3 fs2 fs1 fs0 ALU output

0 0 0 1 0 0 A and B

0 0 1 0 0 0 A and not B

0 0 1 0 0 1 A xor B

0 1 1 0 0 1 A plus not B plus carry

0 1 0 1 1 0 A plus B plus carry

1 1 0 1 1 0 not A plus B plus carry

0 0 0 0 0 0 A

0 0 0 0 0 1 A or B

0 0 0 1 0 1 B

0 0 1 0 1 0 not B

0 0 1 1 0 0 zero

Page 32: Microelettronica - Altervista...S. Salvatori - Microelettronica – maggio 2019 – (3) Introduzione: le idee di ARM L’organizzazione dell’ARM è cambiata poco rispetto al primo

S. Salvatori - Microelettronica – maggio 2019 – (32)

ALU per ARM2

Logica per il risultato (1 bit)

ALUbus

432105

NBbus

NAbus

carrylogic

fs:

G

P