Elettronica_Oggi_431 - page 58

58
- ELETTRONICA OGGI 431 - OTTOBRE 2013
DIGITAL
LOW ENERGY
tenere in considerazione nella valutazione del consu-
mo di potenza di una memoria flash è la modalità di
distribuzione degli accessi del processore.
All’interno di ogni blocco di memoria flash vi sono
molteplici pagine, ciascuna delle quali può avere una
dimensione massima di 4 kb.
Per supportare qualsiasi accesso, ciascuna pagina
deve essere alimentata mentre ogni pagina non uti-
lizzata può essere mantenuta in uno stato a basso
consumo.
Nel caso una sezione del codice alla quale si accede
su base regolare si trovi ai confini tra due pagine della
memoria flash piuttosto che essere contenuta in una
sola pagina, l’energia associata alla lettura delle istru-
zioni aumenta.
La riallocazione della memoria effettuata in modo tale
che le sezione del codice e i dati a cui si ha accesso
più di frequente siano contenuti all’interno di pagine
singole può comportare significativi risparmi in ter-
mini di consumi nel corso della durata di una carica
della batteria senza necessità di apportare modifiche
hardware.
Spesso è utile copiare le funzioni di uso più frequente
nella SRAM presente a bordo del chip e leggere le
relative istruzioni da questa memoria piuttosto che
dalla flash, anche se ciò può apparire come un modo
meno efficiente di utilizzo della capacità di memoria.
I benefici che si ottengono in termini di durata della
batteria compensano il “consumo di memoria” legger-
mente superiore.
Ottimizzazione del codice
L’ottimizzazione del codice può anche avere un effet-
to dirompente sul tradizionale concetto di efficienza
del codice. Per molti decenni i progettisti di siste-
mi embedded hanno concentrato la loro attenzione
sull’ottimizzazione del codice in termini di occupa-
zione di memoria, ad eccezione dei casi in cui le pre-
stazioni risultano critiche. L’ottimizzazione energetica
impone un insieme di criteri di valutazione completa-
mente nuovo. Un aspetto da prendere in considerazio-
ne è l’utilizzo della cache on chip che è generalmente
disponibile per le piattaforme a 32 bit.
L’ottimizzazione delle dimensioni del codice consente
l’immagazzinamento della maggior parte dell’eseguibi-
le nella cache, con conseguenti miglioramenti in termi-
ni di velocità e di consumi. Comunque le chiamate di
funzione e le istruzioni di salto (branch) uti-
lizzati per ridurre le dimensioni dell’applica-
zione attraverso il riutilizzo di codice comune
possono dar luogo a conflitti imprevisti tra
le sezioni del codice per la stessa linea della
cache (i blocchi della cache sono chiamati
linee). Ciò può dar luogo al fenomeno di
cache thrashing (ovvero la CPU spende il
proprio tempo ad allocare e disallocare aree
di memoria senza più svolgere lavoro utile),
dispendioso in termini energetici, nonché
all’attivazione di un certo numero di pagine
della flash quando le istruzioni devono esse-
re prelevate dalla memoria principale. Nel
caso di codice eseguito frequentemente nel
corso della vita del prodotto, esso deve esse-
re sufficientemente compatto da poter essere
ospitato nella memoria cache ma senza salti
o funzioni di chiamate.
Si consideri ad esempio un rilevatore di
fumo: anche se viene innescato un allarme
una volta alla settimana (a causa magari dell’ecces-
sivo fumo prodotto dalle attività che vengono svolte
nella cucina), si tratta di 520 eventi (invece degli oltre
315 milioni che si potrebbero verificare nel corso della
vita del prodotto - stimata in dieci anni). Per la quasi
totalità del tempo il codice acquisisce la lettura del
sensore, controlla che non sia stata superata la soglia
prefissata e quindi fa ritornare il core del processore
nello stato di “sleep” finché questo non viene “sveglia-
to” dal timer del sistema. Di tutte le letture del sensore
acquisite dal rilevatore, meno dello 0,0002% darà
luogo all’esecuzione di codice che genera un allarme.
Il rimanente 99,9998% dell’esecuzione del codice sarà
al di fuori del loop di lettura del sensore. Assicurarsi
Fig. 4 – Effetti della variazione di tensione con VBAT = 2,4V
1...,48,49,50,51,52,53,54,55,56,57 59,60,61,62,63,64,65,66,67,68,...104
Powered by FlippingBook