Sei sulla pagina 1di 19

Presentazione della Prova Finale di Laurea Triennale in

Ingegneria Elettronica

Breve descrizione di un
microprocessore ARM e
differenze fra le istruzioni
Thumb e ARM
Lunedi 19 febbraio 2018

Università di Pisa Docente di riferimento Candidato

Scuola di Ingegneria Prof. Roberto Saletti Valter Selami


Sommario
1.Introduzione al microprocessore
2.Il concetto RISC
3.Il funzionamento dell’ARM7TDMI
4.Le istruzioni ARM normali a 32bit
5.Le istruzioni THUMB
6.Conclusioni
Cos’è un microprocessore?
• Microprocessore ARM
E’ un processore che • Acronimo di
incorpora le funzioni del CPU Advanced RISC
(Central Processing Unit)in Machine
un circuito integrato • Il primo prodotto nel
1983
• E’ un processore RISC

Il compito del CPU è di eseguire le istruzioni


contenute nella memoria
Le applicazioni
RISC (Reduced Instrution Set)
Reduced non significa che ha meno istruzioni del CISC ma semplicemente che richiede
meno cicli di clock per istruzione (usualmente uno)

Architettura RISC
• Usa un’architettura Load/Store
• Istruzioni da lunghezza fissa da 32 bit per i nuovi microprocessori (Istruzioni CISC sono variabili)
• 32 registri a scopo generale

Organizzazione RISC
• Hardware per decodificare le istruzioni (CISC usa grande quantita di microcodice ARM
• Permette l’implementazione del pipeline
• Le istruzioni di solito impiegono un ciclo di clock per essere eseguiti

Avantaggi RISC
• Meno piastrina sottile Revoluzione portata da RISC
• Minor tempo di costruzione • Pipelining
• Performance migliore • Maggiore clock per il sistema

Disavantaggi RISC
• Minore densità di codice con i CISC
• Non esegue codice x86
ARM ha ereditato dal Berkeley RISC Ha rifiutato
• Architettura load/store • Registri del indirizzo
• Istruzioni fisse da 32 bit • Branch ritardati
• Format di istruzione a 3 indirizzi • Avere tutte le istruzioni a un
ciclo di clock

ARM ha 16 registri in modo normale


che sono visibili

Ha 6 modi di
funzionamento,i 16 registri
sono visibili nel modo user

Registro CPSR
Arm è impostato di default in
little endian ma può funzionare
anche in big endian

I modi di funzionamento
dell’ARM
I componenti principali sono
• Il banco dei registri che salva lo stato del processore
• Il barrel shifter che fa lo shifting dei registri e degl’operandi
• ALU(Arithmetic Logic Unit) che svolge le operazioni
aritmetiche e logiche richieste dal set di istruzione
• Il registro degl’indirizzi e l’incrementatore che seleziona e
genera indirizzi sequenziali quando serve
• I register di informazione che contengono l’informazione
proveniente da e alla memoria
• Il decoder di istruzione e l’associata logica di controllo

Impiega una pipeline a 3 stadi 3)Esecuzione Viene letto


2)Decode L’istruzione viene
1)Fetch L’istruzione è stato il banco dei registri,viene
decodificato e i segnali del datapath
prelevato dalla memoria e inserito vengono preparati per il prossimo ciclo eseguito l’struzione nell’ALU e
nel pipeline dell’istruzione poi il valore viene scritto nei
registri
L’ARM gestisce le eccezioni nel seguente modo:
• Cambia il modo di operare dipendentemente dall’eccezione che si è creato
• Salva l’indirizzo dell’istruzione che si sarebbe eseguito dopo nel r14 del nuovo modo
• Salva l’indirizzo della vecchia CPSR nel SPSR dell’eccezione
• Disabilità gli IRQ(Interruzione normale ) attivando il bit 7-mo e poi se le interruzioni sono FIQ (Interruzione
veloce) li disabilità attivando il bit 6-to
• Forza il PC ad eseguire il vettore dell’istruzione descritto nella tabella

Priorità delle eccezioni


Ci sono 3 tipi principali di istruzioni
1)Istruzioni di elaborazione di dati
• Tutti gli operandi sono registri di lunghezza da 32 bit oppure costanti
• Il risultato(se c’è uno è lungo 32 bit ed è messo in un register
• Tutti i registri sono specificati nell’istruzione:Per questo tipo di istruzione l’ARM usa il formato da 3
indirizzi
Rientrano in questo gruppo
• Operazioni aritmetiche
• Operazioni bit-wise
• Movimenti di registri
• Operazioni di comparazione
• Operazioni di shifting

ADD r3,r5,r6;
Esempio
2)Istruzioni di data transfer

• Transfer di data dai registri alla memoria Transfer di dati dai


• Multipli load and store registri alla memoria
• Sostituzione del valore in un registro con un
valore in memoria

LDR r1,UARTADD
STRB r1,[r1,]
3)Istruzioni di branch
• Branch a un istruzione qualunque
• Branch condizionali
• Esecuzione condizionale di un subroutine
• Branch and link register

Branch and Branch


With Link
MOV r0,#10 ;inserisci 10
LOOP …..
SUBS r0,#1 ;decrementa
BNE LOOP ;ritorna al loop 10
volte
L’istruzione Breakpoint aiuta a fare il debugging
Sintassi BKPT
Istruzioni thumb

Sono un subset delle istruzioni ARM

• Sono lunghi 16 bit


• Hanno accesso totale ai registri Lo(r0-r8)
• r13 viene usato come stack pointer
• r14 come il link register
• r15 viene usato come stack pointer
• Hanno accesso limitato ai registri Hi

La maggiorità delle istruzioni thumb vengono eseguite incondizionalmente


Hanno un format a due indirizzi
Le eccezioni thumb vengono eseguiti allo stesso modo
Thumb usa più istruzioni che il set normale
Per il branch con link,usa due istruzioni visto
che l’offset sarebbe impossibile da fare con
soli 16 bit

Thumb data processing

• Nel set thumb le operazioni di ALU e quelli di shift


vengono separati
• Le istruzioni data processing che operano con i registri
LO modificano la CPSR
• Le istruzioni data processing che operano sui registri HI non modificano la CPSR tranne la CMP
che cambia solo i bit di condizione

Istruzioni data transfer di thumb


Hanno la stessa sintassi,quelloche
cambia ovviamente è la grandezza del
offset nel caso dell’istruzioni thumb

Le istruzioni di trasferimento di registri multipli di data


Visto che il codice adesso è più stretto dobbiamo
usare un’istruzione per uscire e uno per entrare

Invece l’istruzione breakpoint


non subisce nessun cambiamento

BKPT
• Le istruzioni thumb usano normalmente 40% in più istruzioni che le istruzioni ARM normali
• Anche se le istruzioni thumb prendono la meta dello spazio in memoria,per eseguire un programma
con istruzioni thumb serve un numero maggiore di istruzioni.Questo fa si che non si abbia un
guadagno del 50% dello spazio in memoria.
• In una memoria a 32 bit le istruzioni ARM vengono elaborate 40% più velocemente che quelle
Thumb,invece in quella a 16 but,le istruzioni Thumb sono 45% più veloci
• Le istruzioni Thumb usano 30% in meno di potenza che le istruzioni ARM normali

Li’ dove le prestazioni e la velocità è importante,è un


avantaggio usare le istruzioni thumb,invece quando il
costo e la consummazione è importante sarebbe più
opportuno usare le istruzioni
Breve descrizione di un microprocessore ARM
e differenze fra le istruzioni Thumb e ARM

Grazie dell’attenzione

Docente di riferimento Candidato

Università di Pisa Prof. Roberto Saletti Valter Selami


Scuola di Ingegneria