vuoi
o PayPal
tutte le volte che vuoi
Il Core ARM base è espandibile mediante coprocessori (Es. Memory ProtectionUnit (MPU),
ovvero un modulo di protezione della memoria, Memory Management Unit (MMU), FloatingPoint
Unit (FPU), etc)
L’ARM introduce inoltre alcune nuove caratteristiche come ad esempio l’esecuzione condizionale.
3) Cosa intendiamo con esecuzione condizionale?
Con esecuzione condizionale intendiamo che qualsiasi istruzione a runtime può essere
eseguita o meno in base all’esito delle istruzioni precedenti.
Vi sono infatti istruzioni che prevedono, prima che vengano eseguite, un controllo di un
determinato flag nel registro di stato CPSR. A seconda del fatto che tale flag sia asserito o
meno viene deciso se eseguire l’istruzione o se passare oltre.
3bis) Quali sono le istruzioni che vanno a modificare i flag del registro di stato CPSR?
Le istruzioni che modificano i flag del registro di stato CPSR sono:
Istruzioni di confronto
• Qualsiasi istruzioni di elaborazione se termina con S (SET CONDITION)
•
4) Cosa intendiamo con modalità THUMB?
La modalità THUMB permette di compattare le istruzioni da 32 bit, a 16 bit, dimezzando così le
dimensioni del codice e permettendo, grazie all’architettura a 32 bit, di caricare due istruzioni con
una sola lettura. (Advanced)RISC)Machine)
Calcolatori)Elettronici)–)ARM) ) Pagina)2)
!
5) Cosa ha rifiutato tra le caratteristiche del DLX?
È importante osservare che alcune caratteristiche RISC, e quindi anche appartenenti al DLX, sono
state rifiutate. Ad esempio:
Non vi è un’unica modalità di indirizzamento
• !
Non c’è il delayed-branch scelta vincente quando si hanno più pipeline
•
6) Quali sono le caratteristiche del core ARM studiato, l’ARM 7TDMI?
L’ARM 7TDMI è un processore con pipeline a 3 stadi con frequenza massima 100MHz e con
consumi inferiori ai 100mW. ( La stessa famiglia esiste anche con pipeline a 5 stadi. )
6bis) Qual è il significato della sigla ARM 7TDMI?
I caratteri della sigla stanno ad indicare:
!
7 Famiglia ARM 7, architettura v4t
• !
T Supporta set di istruzioni compatto (THUMB)
• !
D Oltre al core base dispone di un modulo per il DEBUG
• !
M Dispone di un moltiplicatore migliore rispetto a quello delle versioni precedenti
• !
I Dispone di un ulteriore modulo per il DEBUG e per i Breakpoint (EmbeddedICE
• macrocell)
!
S Sta per sintetizzabile. L’ARM ti ha dato il codice VHDL
•
7) Quali sono i registri visibili al programmatore in modalità usermode?
I registri visibili dal programmatore in user mode sono: R0 .. R15. In particolare si ha che:
R15 è il program counter PC
• R13 è lo stack-pointer, ovvero il puntatore all’area di stack (se si usa lo stack)
•
Vi è poi il registro CPSR che costituisce il registro di stato.
Osserviamo che a differenza del DLX, R15, ovvero PC, è accessibile al programmatore!
!
Importante Alcuni di questi registri sono duplicati per fornire supporto alle modalità
privilegiate (_exc)
8) Quali sono i registri che vengono duplicati per supportare le modalità privilegiate?
Si ha che ogni modalità privilegiata duplica:
R13 (stack pointer)
• "
R14 dove copia il PC, ovvero R15 – R14 R15
• Il registro di stato CPSR, che diventa SPSR.
•
Osserviamo dunque che ogni modalità di default dispone di un proprio stack non condiviso!
Importante! Per la modalità Fiq vengono duplicati anche i registri da R12 a R8. Infatti Fiq è
l’acronimo di Fast Interrupt e rappresenta un interruzione critica che deve essere gestita
velocemente. Per permettere ciò l’ARM ha pensato di duplicare in questa fase un numero maggiore
di registri in supporto alle operazioni.
(Advanced)RISC)Machine)
Calcolatori)Elettronici)–)ARM) ) Pagina)3)
!
9) Qual è l’utilità delle modalità privilegiate? O meglio perché si rendono necessarie?
Le modalità privilegiate si rendono necessarie al fine di garantire la protezione.
In un sistema protetto, come l’ARM, a livello utente (usermode) non è possibile accedere a
risorse hardware direttamente. Fa eccezione ovviamente la memoria associata al codice/dati.
Questo significa che, per poter accedere alle periferiche, l’ARM vincola il codice in usermode a
farlo attraverso delle chiamate a funzioni messe a disposizione dal sistema operativo (supervisor
calls, invocate con interrupt software SWI).
Es. Un caso tipico è la funzione che scrive un carattere sullo schermo video. Esiste una apposito
interrupt software SWI, gestito da una funzione privilegiata del sistema operativo, a tale scopo.
Questo meccanismo di controllo consente di eseguire operazioni in modalità privilegiata sotto il
pieno controllo del SO (supervisor) l’unico responsabile della corretta gestione delle risorse del
sistema (Es. le periferiche).
L’esecuzione di codice in modalità privilegiata, senza la necessità di eseguire supervisor calls
(SWI), è automaticamente invocato anche da eccezioni generate sia dall’esterno (fiq, iq) che
dall’interno (traps).
Es. Perché la protezione per poter scrivere sulla memoria video?Si pensi a un sistema con n
processi e senza nessun vincolo di accesso (in scrittura) sulla memoria video...
Per poter eseguire queste operazioni privilegiate, quindi, il codice in user mode ha due
alternative:
1. Chiedere ad un codice più privilegiato di eseguire queste operazioni per lui
2. Assumere esso stesso un livello di privilegio maggiore.
In tal caso, il passaggio da user mode a system mode è ovviamente possibile solo attraverso
l’esecuzione di codice più privilegiato.
10) A cosa bisogna fare attenzione quando si esegue in modalità privilegiata?
Nelle modalità privilegiate, i registri non duplicati sono condivisi con la modalità user mode.
Tali registri, dunque, debbono essere opportunamente preservati per garantire sempre un corretto
ripristino dello stato del sistema. Si potrebbe a tal fine utilizzare per esempio lo stack.
I registri duplicati, invece, vengono ripristinati dall’ARM stesso.
11) Come si entra nelle modalità privilegiate?
Le modalità privilegiate sono attivabili mediante degli eventi esterni (interrupt(s) e reset) o
interni (system call e trap). Questi eventi, sia interni che esterni, sono denominati “eccezioni”.
12) Come fa il SO a sapere che privilegi ha il codice in esecuzione?
Guarda il registro di stato.
13) Quando si esegue in modalità privilegiate di cosa bisogna disporre?
Quando si esegue in modalità privilegiata si deve:
Disporre di un proprio stack e di un proprio stack-pointer (memorizzato in
• modalità privilegiata in R13_exc)
Conoscere l’indirizzo di ritorno. In particolare il PC(R15) del chiamante è
• memorizzato in R14_exc
Dopo essere entrato nella modalità privilegiata,dovrò tornare dove ero prima
Disporre di una copia del registro di stato CPSR della modalità
• interrotta/chiamante memorizzandolo in SPRS_exc
(Advanced)RISC)Machine)
Calcolatori)Elettronici)–)ARM) ) Pagina)4)
!
14) Cosa intendiamo con eccezione per quel che riguarda il processore ARM?
Le eccezioni sono eventi generati all’esterno (RESET, interrupt normali e veloci) o dall’interno
della CPU(traps, suopervisor call):
RESET(caso particolare ed evento prioritario)
• Fast Interrupt
• Interrupt
• Traps
•
15) Quali sono le eccezioni gestite dal processore ARM?
Con riferimento alle eccezioni che consentono/obbligano l’esecuzione di operazioni a un livello
privilegiato, il processore ARM gestisce le seguenti eccezioni:
RESET (Mode: SVC)
• Undefinedinstruction (Mode: UND) ovvero ho fatto il FETCH di un istruzione
• sconosciuta
Software Interrupt (Mode: SVC)
• Instructionfetchabort (Mode: Abort)
• Data accessmemoryfault/abort (Mode: Abort)
• IRQ normalinterrupt (Mode: IRQ)
• FIQ fast interrupt (Mode: FIQ)
•
16) Come vengono gestite le eccezioni nell’ARM?
Il RESET, prioritario rispetto alle altre eccezioni, è attivato mediante un pin esterno e forza (al suo
rilascio) l’esecuzione dell’istruzione all’indirizzo 00h.
Le altre eccezioni (interrupt esterni, traps e supervisor calls) provocano invece la seguente
sequenza di operazioni:
1. Si salva l’indirizzo di ritorno e lo stato
R14_exc ←PC (R15)
SPSR_exc ←CPSR
2. Si disabilitano le interruzioni (bit I in CPSR)
3. Se l’interruzione è di tipo fast interrupt si disabilitano le interruzioni fast (bit F in CPSR)
4. La modalità operativa (mode in CSPR) viene modificata in accordo al tipo di eccezione
mode ←exc
5. Il program counter R15 è forzato a un valore compreso tra 00h e 1Ch in base al tipo di
eccezione (exc). Presumibilmente, la tabella tra 00h e 1Ch conterrà istruzioni di salto
16bis) Come vengono gestite più interruzioni IRQ?
Nel caso arrivino più interruzioni, avverrà il salto a 18h, ma sarà compito dell’handler andare a
vedere quali periferiche hanno generato l’interruzione e servire la più prioritaria.
(Advanced)RISC)Machine)
Calcolatori)Elettronici)–)ARM) ) Pagina)5)
!
17) Come funziona la tabella delle eccezioni nel processore ARM?
Ogni tipologia di eccezione provoca un salto a uno dei seguenti indirizzi (0x indica esadecimale):
Osserviamo che gli indirizzi sono consecutivi (multipli di 4 - letture allineate) e dunque questi
sono indirizzi a istruzioni di salto che porteranno al codice vero e proprio della gestione.
17bis) Perché FIQ è stata messa all’ultimo indirizzo 1Ch?
Fiq è stata lasciata per ultima in quanto il suo codice di gestione può essere direttamente a 1Ch al
fine di velocizzare il suo compito. Le Fast interrupt sono infatti interruzioni critiche.
17tris) Per cosa viene utilizzato il campo reserved? !
Reserved è un campo destinato per eventuali sviluppi futuri Estendibilità
18) Una volta che l’handler dell’eccezione ha eseguito il proprio compito di cosa si deve
occupare?
Una volta che l’handler ha terminato il proprio compito deve eseguire una serie di operazioni:
1. Ripristinare dal proprio stack i registri modificati
2. Ripristinare il CPSR dal proprio SPSR_exc
3. Ripristinare il PC all’indirizzo dell’istruzione successiva a quella interrotta
È importante osservare che le operazioni 2 e 3 devono essere svolte contemporaneamente!
18bis) Perché i passi 2 e 3 del ritorno dall’handler devono essere svolti insieme? Come risolve
l’ARM il problema?