The BCI provides customers, from Olter 12 years, its know-how (knowledge) on any computer problems that may occur in the company. Having as a strong point of the constant training on new technologies and business needs, we can be a useful reference point to disentangle in the ever more rapidly changing information technology.
Programmazione efficiente dei dispositivi ARM PDF Print E-mail
There are no translations available.

Il tema dell’efficienza delle applicazioni software è sempre stato presente nel settore informatico, sebbene negli anni abbia assunto sfumature differenti. Se in origine, infatti, l’efficienza era principalmente intesa come salvaguardia delle allora limitate risorse hardware (RAM disponibile, velocità di elaborazione da parte dei processori, ecc.), oggigiorno l’efficienza è principalmente intesa come efficienza energetica, essenzialmente a causa dell’enorme diffusione dei dispositivi portatili a batteria.

Sviluppare un sistema completo, ossia l’unione di dispositivo e applicazioni, che sia efficiente dal punto di vista energetico è un compito che richiede il lavoro congiunto di esperti hardware e software. Questi ultimi, in particolare, hanno ancora due fronti distinti sui quali lavorare, che presentano problematiche comuni, ma anche un elevato livello di specificità: il sistema operativo (ormai di prassi nei sistemi portatili, in particolare nel caso di architetture ARM) e l’applicazione finale.

Quando si deve sviluppare un’applicazione embedded, che gestisca in modo efficiente il consumo energetico occorre tenere conto di numerosi accorgimenti, che hanno un impatto sulla potenza consumata. Una dettagliata descrizione di tali accorgimenti, insieme alla proposta di un approccio sistematico alla programmazione efficiente dei dispositivi con architettura ARM, è stata recentemente pubblicata su EETimes da Chris Shore, Training Manager di ARM.

L’articolo presenta nel dettaglio numerosi punti sui quali lavorare, ma la filosofia alla base è essenzialmente la stessa: eseguire ogni operazione nel modo più veloce possibile e nel modo più consono all’architettura sottostante. La velocità di esecuzione, in particolare, consente di portare il dispositivo nel suo stato di riposo (a basso consumo) il prima possibile, mentre sviluppare un’applicazione avendo in mente l’architettura del dispositivo consente di utilizzare al meglio eventuali ottimizzazioni già presenti a livello hardware.

Sebbene questa idea possa sembrare ovvia a una prima lettura, il suo impatto sulle best practices di programmazione è notevole, tanto che sovente la prima scelta non è quella più efficiente dal punto di vista energetico. Solo per citare un esempio, si pensi all’utilizzo della memoria, operazione costosa sia in termini di tempo che di energia, e alle ottimizzazioni eseguite dal compilatore: non sempre l’ottimizzazione che privilegia la velocità di esecuzione, e quindi un codice generalmente più lungo, produce una soluzione migliore (sempre dal punto di vista energetico) di quella che preferisce la compattezza del codice, e quindi un codice che risparmia accessi in memoria.

Analogo discorso può essere fatto per la scelta dei tipi di dati, che dovrebbero essere vicini, il più possibile, alla dimensione dei registri con i quali lavora il dispositivo, e dell’organizzazione delle strutture dati. Lo sviluppo di applicazioni efficienti dal punto di vista energetico rappresenta quindi il giusto punto di incontro di elementi differenti: la corretta configurazione degli strumenti di sviluppo e del dispositivo utilizzato, un oculato utilizzo della memoria del dispositivo (con preferenza all’utilizzo della cache), una codifica che generi un insieme di istruzioni breve e rapido da eseguire. E con l’avvento di sistemi multicore, i gradi di libertà aumentano ancora.

 
Bossoni Consulenza Informatica di Omar Bososni - Quinzano d'Oglio (BS) Via Gramsci, 11 - P.IVA 01935580983
Bossoni Consulenza Informatica Template by Ahadesign Powered by BCI!
Banner