Micro a 8 bit o ARM?

Visti i livelli raggiunti dalla tecnologia, le architetture ARM stanno soppiantando l’uso dei microcontrollori a 8 bit. Ecco i motivi.

Oggi le nostre vite sono intrise di microcontrollori. Li troviamo nelle automobili, nei cellulari, nei giocattoli, negli elettrodomestici che usiamo quotidianamente. Dalla loro prima introduzione, 30 anni fa, l’uso dei microcontroller è aumentato fino ai miliardi di unità all’anno confermando la presenza in quasi tutti i dispositivi elettronici e, tra le varie architetture, gli 8 bit sono quelli più utilizzati.

Ma che cosa rende i micro a 8 bit così utili ad una così vasta gamma di applicazioni? Due sono le considerazioni importanti:

  • Basso costo. Le applicazioni che richiedono i micro a 8 bit, quasi per definizione, richiedono un basso costo di sistema.
  • Determinismo, Performance di interruzione in tempo In molte applicazioni i microcontrollori devono assistere le interruzioni in un ben determinato periodo temporale e uno dei benefici di un’architettura semplice come quella a 8 bit, sta proprio nel soddisfare a pieno questi vincoli temporali. L’assenza di gerarchie di memoria, come ad esempio la cache di primo e secondo livello, fa sì che non si aggiungano ritardi nell’esecuzione dell’interruzione.

Tuttavia, le limitazioni dei microcontrollori a 8 bit costituiscono spesso le sfide di sviluppo e di progettazione:

  • Limitazioni nelle prestazioni. Per ragioni di costo, i microcontrollori a 8 bit continuano ad essere impiegati nelle applicazioni come sottosistemi atti a svolgere funzioni specifiche. L’alternativa sarebbe la migrazione verso architetture più complesse e comunque non compatibili con il software attualmente sviluppato per gli 8 bit
  • Limitazioni dello spazio di indirizzaLo spazio per l’indirizzamento è limitato rispetto ai 4 GB disponibili nelle architetture a 32 bit. In molte architetture a 8 bit tale spazio è limitato a soli 64 Kb.
  • Predominanza del linguaggio assemLe applicazioni sono comunemente programmate in linguaggio assembler che in alcuni casi è l’unico linguaggio in grado di soddisfare i requisiti di prestazione e gestire le limitazione dello spazio di indirizzamento.

Cambiare microcontrollore spesso significa riprogettare l’intero sistema.

  • Strumenti di sviluppo limitati. La frammentazione del mercato dei micro a 8 bit rende difficoltoso l’utilizzo di uno standard e questo limita il proliferare di strumenti di sviluppo hardware e Quando negli anni ‘70 sono stati introdotti microcontrollori a 8 bit (come gli 8051), un circuito integrato tipico era in grado di contenere 10.000 transistori.

Oggi, con le nuove tecnologie, in un circuito integrato vi possono stare oltre un milione di transistori per cui le architetture implementate negli anni ’70 spesso non hanno senso se implementate sui moderni circuiti integrati. Con il Cortex-M3, ARM ha permesso una transizione dai vincoli delle architetture a 8 bit verso architetture più moderne, efficienti, ottimizzate e a costi talmente contenuti da essere impiegate in tutte le applicazione dominate dagli 8 bit.

ARM CORTEX-M3

Il processore ARM Cortex-M3 fornisce una piattaforma ad alto rendimento e a basso costo che soddisfa le esigenze di minimi requisiti di memoria, minimo ingombro e basso consumo, e garantisce al contempo eccezionali prestazioni di calcolo ed una veloce risposta alle interruzioni.

PICCOLO CORE AD ALTRE PRESTAZIONI

L’unità di elaborazione dell’ARM CortexM3 è il più piccolo core a 32 bit progettato da ARM, con appena 33.000 gate. Questo design riduce gli ingombri in termini di area su silicio, consentendo l’uso di package molti compatti e l’impiego di processi di fabbricazione a basso costo, quali 0.35m e 0.25m. Anche con core così piccolo, sono garantiti alti livelli in termini di prestazioni dell’ordine di 1.2 MIPS per MHz, un rendimento comparabile, se non addirittura superiore, ad altre CPU a 32 bit.

SET DI ISTRUZIONI THUMB-2

Il set di istruzioni Thumb è una tecnologia innovativa di ARM per ridurre le dimensioni del codice. La tecnologia Thumb aggiunge le istruzioni a 16 bit all’architettura a 32 bit RISC. L’uso di queste istruzioni a 16 bit riduce sostanzialmente le dimensioni del codice una volta compilato. L’insieme delle istruzioni Thumb-2 è binario-compatibile con le implementazioni Thumb esistenti ma prevede l’esecuzione di più istruzioni in un singlo ciclo di clock ottenendo così prestazioni tipiche dei DSP ed impensabili sui microcontrollori tradizionali a 8bit. Queste istruzioni, unite a quelle a 32 bit di ARM, costituiscono un set di istruzioni che può essere gestito efficientemente anche dai linguaggi ad alto livello, un beneficio importante nell’uso di una architettura a 32 bit. L’ARM Cortex-M3 esegue solo istruzioni Thumb-2 ed il conseguente risparmo di spazio in termini di dimensioni del codice, rende più semplice l’uso di sistemi operativi.

SUPPORTO DI DATI NON ALLINEATI

Molte unità di elaborazione a 32 bits richiedono che i dati siano allineati su dimensioni standard (bit, byte, word,…). Ciò implica che le parole a 32 bit devono necessariamente trovarsi ad indirizzi multipli di quattro. Analogamente, i dati a 16 bit devono trovarsi ad indirizzi multipli di due. In pratica questo allineamento implica una frammentazione della memoria con molti spazi inutilizzati soprattutto nel caso di dati non allineati (figura 1).

Figura 1: struttura dati con dati allineati.

Figura 1: struttura dati con dati allineati.

L’ARM Cortex-M3 rimuove quella limitazione supportando la memorizzazione di dati non allineati, permettendo così di utilizzare tutta la memoria disponibile (figura 2).

Figura 2: struttura dati con dati non allineati

Figura 2: struttura dati con dati non allineati

BIT-BANDING

L’ARM Cortex-M3 ha uno spazio di memoria di 4 GB, così, in teoria, potrebbe sostenere un sistema con un gigabyte di RAM. In pratica nessun microcontrollore utilizza completamente lo spazio di indirizzamento, quindi come utilizzare al meglio il bus indirizzi a 32 bit? La risposta di ARM a questo quesito è il bit-banding. Il bit-banding usa indirizzi che sono alias di indirizzi di periferiche o di celle SRAM consentendo la manipolazione di un singolo bit di una word mediante un riferimento ad un byte ad un indirizzo alias. Ad esempio, una scrittura all’indirizzo 0x02000000 modifica la parola a 32 bit in SRAM a quell’indirizzo, ma la scrittura a 0x02800000 modifica soltanto il bit 0 all’indirizzo 0x02000000 (figura 3).

Figura 3: Bit-banding

Figura 3: Bit-banding

Questo funzionamento facilita notevolmente le manipolazioni di bit: anziché leggere l’intera word, fare l’AND per modificare il singolo bit, quindi riscrivere la word modificata all’indirizzo originale, il bit-banding consente di fare questa operazione con una singola istruzione. Quella singola istruzione ha inoltre un altro beneficio: è una operazione atomica, eseguita come singola operazione per cui si evita il problema che eventuali interruzioni vadano a modificare la stessa word oggetto dell’operazione, cosa che invece può accadere utilizzando il metodo tradizionale.

GESTIONE DETERMINISTICA DELLE INTERRUZIONI

Molte applicazioni attualmente dominate dai mirco a 8 e 16 bit, come ad esempio il controllo motore, richiedono un comportamento molto deterministico. L’ARM Cortex-M3 è dotato di particolari ottimizzazioni nella gestione delle interruzioni volte a ridurre la latenza delle interruzioni stesse e garantirne il servizio in un tempo ben definito. Queste caratteristiche comprendono:

  • Gestione hardware dell’interrupt. L’hardware della CPU salva automaticamente i valori dei registri nello stack.
  • Supporto alla preemption. Una interruzione di priorità più alta rispetto a quella attualmente gestita, può essere immediatamente soddisfatta senza attendere la fine della routine di servizio dell’interruzione corrente.
  • Tail-chaining. Prima di uscire da una routine di servizio di una interruzione, il Cortex-M3 controlla eventuali interruzioni ancora pendenti per evitare eventuali operazioni di POP e PUSH ridondanti (figura 4 e 5). Questo garantisce che tra due routine di interruzione successive, non trascorrano più di sei cicli di clock.
  • Late arrival Preemption. Il micro può commutare verso una routine di interruzione a più elevata priorità durante l’esecuzione di una routine a priorità più bassa.
Figura 4: tail-chaining

Figura 4: tail-chaining

SISTEMI DI SVILUPPO

La disponibilità di sistemi di sviluppo è considerata dai progettisti di fondamentale importanza, come conferma anche una recente indagine effettuata dalla Embedded Systems Programming. Hanno chiesto ai progettisti che cosa fosse importante per loro nella scelta di un microprocessore. Prestazioni e prezzo sono risultate al secondo e terzo posto, mentre al primo posto si collocano proprio gli strumenti di sviluppo (figura 5).

Figura 5: i risultati della ricerca dell’Embedded Systems Programming

Figura 5: i risultati della ricerca dell’Embedded Systems Programming

Le aziende possono fare investimenti significativi negli strumenti di sviluppo e non solo per l’acquisto dei sistemi, ma anche per l’accrescimento delle conoscenze e nella esperienza nell’uso di questi strumenti. Oltre ai tools che ARM assicura direttamente, sono disponibili numerosi tools di terze parti. Questa ampia offerta di strumenti di sviluppo e supporto per i microcontrollori ARM ha contribuito significativamente alla diffusione di questi dispositivi che, a differenza dei microcontrollori a 8 bit, consentono una migrazione verso architetture più complesse e di prestazioni più performanti senza necessariamente dover riprogettare l’intera applicazione. Le considerazioni sui tools vanno comunque ben al di là dei tools di debug. La maggior parte delle applicazioni sviluppate per microcontrollori a 8 bits sono scritte in assembler, che, come già accennato, è una scelta quasi obbligatoria per soddisfare il compromesso prestazioni/spazio. L’ARM Cortex-M3 è stato ottimizzato in modo da poter utilizzare direttamente compilatori C/C++ con benefici evidenti in termini di tempo di sviluppo, ricerca degli errori e portabilità del codice. L’uso molto diffuso dei core ARM ha creato una vasta associazione di utenti/sviluppatori che, grazie ai compilatori open source, hanno potuto rendere disponibili le proprie librerie e i porting dei sistemi operativi real-time all’intera comunità.

Scrivi un commento