Principi di architetture dei calcolatori: l’architettura...

29
Principi di architetture dei calcolatori: Principi di architetture dei calcolatori: l’architettura ARM. l’architettura ARM. Mariagiovanna Sami Mariagiovanna Sami

Transcript of Principi di architetture dei calcolatori: l’architettura...

Principi di architetture dei calcolatori: Principi di architetture dei calcolatori: l’architettura ARM.l’architettura ARM.

Mariagiovanna SamiMariagiovanna Sami

Che cosa è ARMChe cosa è ARMChe cosa è ARMChe cosa è ARM

In realtà, non un solo microprocessore, ma un’intera , p ,famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad alte prestazioniOggi, probabilmente l’architettura più diffusa per sistemi embedded (dai cellulari all’I-Pad a un grandissimo numero di applicazioni di ogni genere! Il

d l f ll l78% dei telefoni cellulari usa processori ARM…)ARM come azienda non produce silicio – “vende”

àproprietà intellettuale (l’insieme delle istruzioni, la microarchitettura delle CPU, fino al progetto l tt i l t )

-- 22 --

elettronico completo...)18/03/201318/03/2013

Che cosa è ARMChe cosa è ARMChe cosa è ARMChe cosa è ARM

Di norma, i processori ARM compaiono come Di norma, i processori ARM compaiono come “componenti” (detti core) di circuiti integrati più complessi; tipicamente, su un chip oltre alla (alle) p ; p , p ( )CPU compaiono memorie, controllori di periferiche, dispositivi dedicati a specifici compiti quali elaborazione di segnale etc.Si farà riferimento qui principalmente alla CPU ARM9: si tratta di un’architettura semplice, studiata per basso consumo di potenza e fortemente

d l d d d ù d modulare, di grandissimo successo (ad oggi, più di cinque miliardi di questo dispositivo sono stati inseriti in ari sistemi!)

-- 33 --

inseriti in vari sistemi!). 18/03/201318/03/2013

Che cosa è ARMChe cosa è ARMChe cosa è ARMChe cosa è ARM

Il concetto ARM: Il concetto ARM: Sviluppato all’inizio degli anni ’80 per realizzare

l t b t (l’ i d un personal computer a basso costo (l’azienda –inglese - si chiamava Acorn Computers e fra gli

i i ti ’ Oli tti)azionisti c’era Olivetti);Realizzato a partire dalla proposta del MIPS (architettura RISC di tipo pipelined);Prima versione (v1): 1985, pipeline a tre stadi.( ) , p p1990: da una joint venture con Apple nasce la ditta ARM, per realizzare il primo PDA (Newton).

-- 44 --

ditta ARM, per realizzare il primo PDA (Newton).18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Essenzialmente: Essenzialmente: Architettura di tipo “load-store”: le istruzioni h l b d ti l t ti di che elaborano dati operano solo su contenuti di

registri interni alla CPU, le istruzioni che possono accedere alla memoria sono solo lett re (l d accedere alla memoria sono solo letture (load, da memoria a un registro interno della CPU) e scritture ( t da un registro alla memoria);scritture (store, da un registro alla memoria);Le istruzioni aritmetico-logiche specificano i registri di due operandi e del risultato (architettura a tre operandi)

-- 55 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

La pipeline “originale” (ARM 7):La pipeline originale (ARM 7):Pipeline su tre stadi:

Lettura (F) – legge un’istruzione dalla memoriaDecodifica (D) – decodifica l’istruzione e genera i segnali di t ll idi controllo necessariEsecuzione (E):

Gli di l tti i i t i “ t ”– Gli operandi vengono letti nei registri “sorgente”– Eventualmente uno degli operandi viene fatto “scorrere”– L’ALU genera il risultatoL ALU genera il risultato– Il risultato viene scritto nel registro destinazione

-- 66 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Nel primo schema, esiste un’unica unità di memoria ( i d tt l h V (si adotta lo schema Von Neumann invece di quello Harvard).La disponibilità di un’unica porta di memoria provoca uno stallo a ogni istruzione uno stallo a ogni istruzione load o store, dato che non si può leggere la prossima istruzione mentre prossima istruzione mentre si legge/scrive un dato.

-- 77 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Problema: alcune istruzioni richiedono più di treProblema: alcune istruzioni richiedono più di trecicli – si perde in regolarità:

LOAD e STORE richiedono 2 cicli per l’esecuzione (uno per il calcolo dell’indirizzo e uno per l’accesso alla memoria)memoria)Nel caso di salti condizionati, si deve svuotare la pipeline e riprendere l’esecuzione del programma dall’indirizzo e riprendere l esecuzione del programma dall indirizzo destinazione corretto;Si veda il comportamento della pipeline:Si veda il comportamento della pipeline:

-- 88 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

-- 99 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Con la CPU ARM 9 (presentata nel 1995) si è passati Con la CPU ARM 9 (presentata nel 1995) si è passati a una pipeline a 5 stadi (dotata di Cache Istruzioni e Cache Dati separate in modo da evitare i problemi Cache Dati separate, in modo da evitare i problemi visti con la pipeline a tre stadi)Gli stadi sono:Gli stadi sono:

– LetturaDecodifica– Decodifica

– EsecuzioneBuffer/data– Buffer/data

– Write-back (scrittura nel registro destinazione)

-- 1010 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

1. Lettura: legge un’istruzione;2. Decodifica l’istruzione e legge dai registri gli operandi

(fino a 3, dato che si introduce l’istruzione MAC –“ lti l d A l t ” h l’ i “multiply and Accumulate” – che esegue l’operazione X=A+B∗C);

3 Esecuzione: se richiesto fa scorrere un operando; l’ALU 3. Esecuzione: se richiesto fa scorrere un operando; l’ALU genera il risultato (o l’indirizzo nel caso di Load o Store)Store)

4. Buffer/data: si accede alla memoria. Solo Load e Storecompiono operazioni utili in questo stadio; p p q ;

5. Write-back: il risultato (incluso il valore letto dalla memoria) viene scritto nel registro destinazione.

-- 1111 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Lo schema Lo schema dell’architettura indica i cinque stadi corrispondenti alle

.

corrispondenti alle cinque fasi;La pipeline è molto meglio bilanciata e va a frequenza più alta; si sono inseriti i ;percorsi di data forwarding per superare i conflitti superare i conflitti da dipendenze RAW

-- 1212 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Esistono anche soluzioni con pipeline a sei e otto Esistono anche soluzioni con pipeline a sei e otto stadi per fornire prestazioni più elevate su applicazioni di fascia alta (oltre a soluzioni più applicazioni di fascia alta (oltre a soluzioni più avanzate con più pipeline operanti in parallelo);L’architettura vista è quella “base”: si possono L architettura vista è quella base : si possono aggiungere funzionalità ulteriori (ad esempio, l’aritmetica in virgola mobile) che vengono associate g ) gal data path base ricorrendo al concetto dei “coprocessori” che consentono fra l’altro di estendere l’insieme iniziale delle istruzioni di macchina.

-- 1313 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Il modo di esecuzione principale è il modo utente Il modo di esecuzione principale è il modo utente (user mode): il sistema operativo garantisce protezione e isolamento dell’applicazione eseguendo p pp gquest’ultima in modo utente;Tutti gli altri modi di esecuzione sono privilegiati e g p gusati solo nell’esecuzione del software di sistema (è importante ricordare che si tratta di un’architettura per sistemi embedded, quindi per sistemi che spesso devono reagire a eventi esterni così da gestirli). In

ti lparticolare:

-- 1414 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Modi privilegiati:Modi privilegiati:Fast interrupt processing mode: la CPU vi si porta quando riceve un segnale di interruzione dalla sorgente che il

.

g gprogettista ha designato come “sorgente di interruzione veloce”N l i t t i d l CPU i i t Normal interrupt processing mode: la CPU vi si porta quando riceve un segnale da qualsiasi altra sorgente di interruzione;te u o e;Software interrupt processing mode: la CPU vi si porta quando incontra un’istruzione di “interruzione software”

è(in sostanza una system call – questo è il modo normale per invocare i servizi del sistema operativo su ARM);

-- 1515 --18/03/201318/03/2013

ARM: architetturaARM: architettura--basebaseARM: architetturaARM: architettura--basebase

Modi privilegiati (cont ):Modi privilegiati (cont.):Undefined instruction mode: la CPU vi si porta quando tenta di eseguire un’istruzione che non è quando tenta di eseguire un istruzione che non è supportata né dall’architettura base né da uno dei coprocessori ad essa collegati (può essere usato per p g (p p“emulare” via software un coprocessore che non si è realizzato);System mode usato per eseguire compiti privilegiati del sistema operativo;Abort mode usato in risposta a violazioni dei diritti di accesso alla memoria.

-- 1616 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

Una soluzione fortemente modulare per estendere Una soluzione fortemente modulare per estendere l’architettura base, ma… come si gestiscono i coprocessori?coprocessori?È stato definito un “protocollo” di interazione fra CPU e coprocessori accompagnato da istruzioni di CPU e coprocessori, accompagnato da istruzioni di trasferimento dati fra ARM e coprocessori (anche questi devono utilizzare un’architettura load-store). q )

-- 1717 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

Interfaccia processore coprocessore:Interfaccia processore-coprocessore:

-- 1818 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

Segnali di controllo dell’interfaccia: gCPi: dalla CPU ARM a tutti i coprocessori: la CPU ARM identifica un’istruzione relativa a un coprocessore e desidera eseguirla;CP d i i ll CPU Atti t d ’ ’ CPa: dai coprocessori alla CPU. Attivata quando non c’e’ un coprocessore capace di eseguire l’istruzione; CPb: attivata quando il coprocessore è “impegnato” (busy) e non q p p g ( y)può cominciare immediatamente a eseguire l’istruzione.

Sia la CPU che i coprocessori generano in modo autonomo i segnali.Quando la CPU incontra un’istruzione dedicata a un coprocessore, sono possibili i seguenti casi:

-- 1919 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

ARM decide di non eseguire l’istruzione (es. una ècondizione non è soddisfatta): CPi non viene attivato, e

l’istruzione verrà scartataARM decide di eseguire l’istruzione (valore attivo per CPi) ARM decide di eseguire l istruzione (valore attivo per CPi) ma il coprocessore non c’è (CPa attivo): ARM reagisce con un’eccezione di “istruzione non definita”;ARM decide di eseguire l’istruzione (valore attivo per CPi) ma il coprocessore pur presente (CPa inattivo) è busy (CPb attivo): ARM resta in attesa finchè CPb non viene (CPb attivo): ARM resta in attesa finchè CPb non viene disattivato, mettendo in stallo il flusso di istruzioni;ARM decide di eseguire l’istruzione (valore attivo per CPi) g ( p )e il coprocessore l’accetta (Cpa e CPb inattivi), i due dispositivi si impegnano a completare l’istruzione.

-- 2020 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

Sono previsti tre tipi di istruzioni proprie dei coprocessori:Sono previsti tre tipi di istruzioni proprie dei coprocessori:1. Istruzioni di elaborazione dati: sono “interne” al

coprocessore. Quando la CPU legge una di queste istruzioni, esegue un semplice protocollo di handshake per verificare che uno dei coprocessori presenti la accetti (altrimenti solleva un’interruzione);accetti (altrimenti solleva un interruzione);

2. Istruzioni load/store che trasferiscono dati fra registri del coprocessore e memoria. La CPU dà inizio a tali istruzioni calcolando un indirizzo di memoria e mandandolo sul bus degli indirizzi; tocca poi al coprocessore completare il trasferimento;coprocessore completare il trasferimento;

3. Istruzioni di trasferimento fra la pipeline interna della CPU e i registri del coprocessore.

-- 2121 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

Un tipico coprocessore contiene:Un tipico coprocessore contiene:Una pipeline istruzioni

Logica di decodifica delle istruzionigLogica per gestire il protocollo di “handshake” con la CPUUn banco di registri privato;Logica di elaborazione speciale, con un proprio data path

Un coprocessore è collegato allo stesso bus dati della CPU ARM e “segue” la pipeline nel processore ARM:CPU ARM e “segue” la pipeline nel processore ARM:

Un coprocessore può decodificare le istruzioni nel flusso di programma ed eseguire quelle per cui è progettato.p g g q p p g

-- 2222 --18/03/201318/03/2013

ARM: i coprocessoriARM: i coprocessoriARM: i coprocessoriARM: i coprocessori

Le istruzioni per un coprocessore passano lungo la Le istruzioni per un coprocessore passano lungo la pipeline della CPU ARM “al passo” con la pipeline del coprocessore. Un’istruzione per il coprocessore viene p p peseguita se ha raggiunto lo stadio EXE della pipeline della CPU.Il coprocessore deve essere dotato di un “inseguitore di pipeline” che lo mantenga al passo con la CPU.

-- 2323 --18/03/201318/03/2013

ARM: la gestione dei saltiARM: la gestione dei saltiARM: la gestione dei saltiARM: la gestione dei salti

Un ulteriore aspetto caratteristico di ARM: le soluzioni Un ulteriore aspetto caratteristico di ARM: le soluzioni per la gestione dei salti condizionati;È possibile la soluzione “standard” già vista per una È possibile la soluzione standard già vista per una normale architettura pipelined, ma…… è disponibile la soluzione mediante “esecuzione pcondizionale”: di che si tratta?

-- 2424 --18/03/201318/03/2013

ARM: la gestione dei saltiARM: la gestione dei saltiARM: la gestione dei saltiARM: la gestione dei salti

Il concetto di esecuzione condizionale:Il concetto di esecuzione condizionale:Un’istruzione ALU può posizionare un bit di “codice di condizione” nel condition register del microprocessore; g p ;L’esecuzione di ogni istruzione è condizionale. Ogni istruzione contiene un campo che indica quali sono le

di i i i b i d it ( condizioni in base a cui deve essere eseguita (se non vengono specificate, l’istruzione viene sempre eseguita). Se la condizione non è soddisfatta l’istruzione viene Se la condizione non è soddisfatta, l istruzione viene semplicemente convertita in una nop.

-- 2525 --18/03/201318/03/2013

ARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionalea. Posizionamento del codice di condizione: es.: sia dato il

t t tt i C (i t i di i l h seguente costrutto in C (istruzione condizionale che verifica se il risultato dell’operazione specificata è uguale a 0 – condizione vera – oppure no)uguale a 0 condizione vera oppure no)

if (a+b)

b Codice generato per verificare la condizione supponendo b. Codice generato per verificare la condizione, supponendo che il registro r0 contenga a e r1 contenga b:

add r0 r0 r1add r0, r0, r1cmp r0, #0

Codice ottimizzato usando l’istruzione adds che c. Codice ottimizzato usando l istruzione adds che posiziona il bit di “codice di condizione”:

adds r0 r0 r1-- 2626 --

adds r0, r0, r118/03/201318/03/2013

ARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionale

Esempio di esecuzione condizionale:Esempio di esecuzione condizionale:int foo (int a)

{{if (a>10)

return 0;return 0;else

return 1;return 1;

}

-- 2727 --18/03/201318/03/2013

ARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionale

Traduzione ricorrendo a istruzioni di salto condizionato:Traduzione ricorrendo a istruzioni di salto condizionato:cmp r0, #10ble L1ble L1mov r0, #0b L2b L2

L1:mov r0 #1mov r0, #1

L2:

Il g t di di è l ti t l g ti d Il segmento di codice è relativamente lungo e contiene due istruzioni di controllo, che porteranno quindi a perdita di prestazioni.

-- 2828 --

di prestazioni.

18/03/201318/03/2013

ARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionaleARM: esecuzione condizionale

In alternativa, si veda la traduzione usando istruzioni eseguite in modo condizionale: innanzitutto si esegue il confronto che posiziona il bit di condizione, poi si inseriscono due istuzioni di spostamento condizionate da inseriscono due istuzioni di spostamento condizionate da tale bit e solo una delle quali in realtà giunge a completamento:completamento:

cmp r0, #10movgt r0, #0o gt 0, #0movle r0, #1

Attenzione: l’esecuzione condizionale non migliora Attenzione: l esecuzione condizionale non migliora sempre le prestazioni – le istruzioni di ambedue i rami vengono sempre tutte lette e avviate attraverso la

-- 2929 --

pipeline, quindi influenzano il tempo di esecuzione!18/03/201318/03/2013