Stile e filosofia degli Mcu

MICROCONTROLLORI –

Nel mondo dei dispositivi a 8 bit alcune brillanti architetture concepite negli anni settanta convivono con schemi di nuovissima concezione. Molti gli sviluppi sul fronte dei processori embedded a 32 bit.

Il mercato offre oggi una enorme varietà di microcontrollori destinati a soddisfare le esigenze di sistemi molto diversi tra loro: apparati consumer, elettrodomestici, automobili, ecc. Le differenze architettoniche tra i vari dispositivi giocano ovviamente un ruolo molto importante ai fini dello sviluppo di una soluzione ottimale, poiché influiscono sulla potenza di calcolo disponibile, sulle dimensioni del codice, sui consumi e sulle difficoltà di programmazione. Oltre alle ovvie differenze esistenti tra macchine a otto, sedici e trentadue bit, vanno considerati anche aspetti quali lo “stile” dell’architettura nel suo complesso (Von Neumann oppure Harvard) e la scelta di una filosofia Cisc oppure Risc (che si riflette, ovviamente, sul numero di istruzioni disponibili e sul numero di cicli di clock necessario per eseguirle). In questo articolo esamineremo brevemente le architetture di alcune delle principali famiglie di microcontrollori oggi presenti sul mercato. Stando alle definizioni comunemente accettate, un microcontrollore è un intero computer realizzato in un unico chip. Comprende quindi una Cpu, memoria non volatile per il programma, memoria volatile per i dati e periferiche di I/O programmabili. Differisce dal microprocessore proprio perché quest’ultimo consiste essenzialmente in una Cpu, non in un intero computer. A rigore, pertanto, l’espressione “architettura del microcontrollore” si riferisce all’insieme dei blocchi presenti sul chip, comprese le periferiche (che del resto sono importantissime dal punto di vista applicativo). In questo articolo, però, ci occuperemo solo delle architetture delle Cpu. Oltre ai microcontrollori in senso stretto, passeremo rapidamente in rassegna anche alcuni microprocessori utilizzati prevalentemente in applicazioni embedded. È opportuno sottolineare che il tema delle architetture dei microcontrollori è sterminato e complesso. Le Cpu presenti sul mercato sono tantissime ed è difficile sintetizzare descrizioni che devono necessariamente fare riferimento a registri, pipeline, istruzioni e altri dettagli. Va aggiunto che questo articolo non si propone assolutamente di citare tutti i microcontrollori presenti in commercio.

Le architetture ispirate a PDP-11

Iniziamo con le architetture ispirate a PDP-11, un famoso minicomputer prodotto da Digital Equipment  dal 1970 fino agli anni novanta. Era amato dai programmatori poiché tutte le istruzioni potevano usare dati di tutti i tipi in qualunque modo di indirizzamento (una caratteristica che, nel gergo del settore, è stata a volte descritta con l’espressione “set di istruzioni ortogonale”). Le principali architetture che vengono fatte risalire a questo nobile capostipite sono la H8 di Renesas (sviluppata da Hitachi) e la MPS430 di Texas Instruments.
La famiglia H8 comprende dispositivi a 8 e 16 bit. Oggi include numerosissime varianti raggruppate anche nelle serie H8S e H8SX. L’architettura di base impiega otto registri a sedici bit e una varietà di modi di indirizzamento. MPS430 di Texas Instruments è una famiglia di microcontrollori a basso consumo con architettura di von Neumann a 16 bit. Il set di istruzioni è ritenuto molto semplice.

Le architetture derivate dai primi processori a 8 bit

Vari microcontrollori a 8 bit tuttora ampiamente utilizzati derivano dai processori che furono progettati agli albori dell’era del personal computer, cioè negli anni settanta e all’inizio degli anni ottanta. Possono essere collocati in questa categoria – sebbene abbiano storie molto diverse fra loro – il chip 8051 di Intel, le famiglie dei microcontrollori Freescale derivate dal Motorola 6800 e il microcontrollore Z8 di Zilog. L’architettura 8051, sviluppata da Intel nel 1980, discende dal processore 8048 di Intel, utilizzato per la gestione della tastiera nel primo personal computer Ibm. Sono oltre una ventina le società che oggi producono dispositivi compatibili con 8051; tra esse Atmel, Infineon, Maxim, NXP, Nuvoton, STMicroelectronics, Silicon Laboratories, Texas Instruments e Cypress. L’architettura 8051 sviluppata da Intel, di tipo Harvard, impiega un bus dati a 8 bit e un bus indirizzi a 16 bit. E’ dotata di un’unità di elaborazione che consente di effettuare operazioni di logica booleana a livello di bit nei registri interni e nella Ram; questa funzione ha avuto particolare successo nelle applicazioni di controllo industriale. Il dispositivo può contare su quattro gruppi separati di registri, che consentono di ridurre la latenza degli interrupt. È inoltre dotato di una Uart che ne facilita l’uso come interfaccia di comunicazione seriale. L’architettura originale Intel eseguiva un ciclo macchina ogni dodici cicli di clock, mentre le implementazioni moderne raggiungono anche un rapporto 1:1 e sono quindi molto più veloci (senza contare gli ovvi aumenti di velocità dovuti alla maggiore frequenza di clock). Dal microprocessore 6800 di Motorola (basato su un’architettura di von Neumann e introdotto nel 1974) derivano almeno cinque famiglie di microcontrollori Freescale: HC08, compatibile a livello di codice con il processore 68HC05 (anch’esso discendente di 6800), RS08 (una versione semplificata di HC08), HC11, HC12 (una versione potenziata di HC11, a 16 bit) e HC16 (anch’essa a 16 bit).
La famiglia dei microcontrollori Z8 di Zilog, nata nel 1979, si basa su un’architettura Harvard modificata. Sebbene sia molto diverso dal processore Z80, mantiene un set di istruzioni e una sintassi molto simili ad esso. Si caratterizza per la disponibilità di 4096 registri veloci on-chip che possono essere usati come accumulatori, puntatori o come normale Ram.

Le architetture a 8 bit non legate a microprocessori

Collochiamo in questa categoria due architetture di età molto diversa, accomunate unicamente dal fatto di non discendere in modo diretto da microprocessori preesistenti: Pic di Microchip e AVR di Atmel. Sviluppato nel 1975 da General Instruments, il microcontrollore Pic di Microchip  impiega un’architettura Harvard con un piccolo numero di istruzioni (da 35 a oltre 80 a seconda dei modelli), la maggior parte delle quali eseguite in quattro cicli di clock. E’ privo di distinzioni tra lo spazio della memoria e lo spazio dei registri e dispone di un unico accumulatore. L’architettura di Pic può essere considerata a 8 bit - poiché questa è la dimensione dei blocchi di dati e degli indirizzi - tuttavia solitamente l’unità indirizzabile nello spazio del programma differisce da quella dello spazio dei dati. Ad esempio nella serie Pic18 la memoria del programma è indirizzata con unità di 8 bit, mentre le istruzioni sono di 16 bit. Una particolarità di Pic è che la latenza degli interrupt è costante, sempre pari a tre cicli di istruzioni (valore teorico). Secondo alcuni osservatori, lo sviluppo di compilatori C per questo dispositivo ha richiesto sforzi particolari. AVR di Atmel, sviluppato nel 1996, è un Risc a 8 bit con architettura Harvard modificata e pipeline a tre stadi. Esegue la maggior parte delle istruzioni in uno o due cicli di clock. L’architettura Harvard modificata comporta che il programma e i dati siano immagazzinati in sistemi di memoria fisicamente separati, ma con la possibilità di leggere dati dalla memoria del programma tramite istruzioni speciali. La famiglia AVR comprende molti membri che si differenziano per il set di istruzioni, il mix di periferiche e il contenitore. Il programma è memorizzato in una memoria Flash integrata nel chip. Il set di istruzioni è più “ortogonale” rispetto alla maggior parte degli altri microcontrollori a 8 bit ed è ottimizzato per eseguire in modo efficiente il codice C compilato.

Gli sviluppi recenti nel mondo degli 8 bit

Contrariamente a quanto si potrebbe credere, il mercato dei microcontrollori a 8 bit continua a crescere e pertanto le attività di ricerca e sviluppo in questo campo non si sono arrestate. Tra le nuove architetture presentate recentemente ricordiamo Tlcs870-C1 di Toshiba e STM8 di STMicroelectronics.
Tlcs870-C1 di Toshiba, presentato nel 2007, impiega una nuova architettura di tipo Harvard che esegue le istruzioni in un singolo ciclo di clock, con uno spazio indirizzi fino a 128 kbyte. E’ compatibile a livello binario con i precedenti microcontrollori a 8 bit di Toshiba. La nuova architettura STM8 di STMicroelectrinics, presentata all’inizio del 2008, sfrutta un’architettura Harvard con pipeline a tre stadi e interfaccia di memoria a 32 bit. I registri degli indici e lo stack pointer a 16 bit migliorano la manipolazione delle tabelle, mentre lo spazio di indirizzi lineare di 16 Mbyte semplifica le operazioni di paging oltre i 64 Kbyte. Inoltre i miglioramenti apportati alle operazioni dello stack pointer, l’aggiunta di modi di indirizzamento supplementari e l’adozione di nuove istruzioni consentono di supportare in modo ottimale la programmazione in C e quindi ottenere un codice molto denso. Il core opera a una media di 1,6 cicli per istruzione, con prestazioni massime di 20 Mips a 24 MHz.

Le architetture a 16 bit

Meno numerose le architetture a 16 bit, in un mercato che sembra essere polarizzato verso gli 8 e i 32 bit. Nell’ambito di questa fascia intermedia ricordiamo M16C di Renesas, MaxQ di Maxim e C166 di Infineon. M16C di Renesas è un Cisc originariamente sviluppato da Mitsubishi, realizzato anche in versioni a 8 bit (R8C) e a 32 bit (M32C). MaxQ di Maxim è un Risc con architettura Harvard di tipo register-based e transport-triggered. Tutte le istruzioni (che hanno lunghezza fissa di 16 bit) sono codificate come semplici operazioni di trasferimento tra registri, il che consente di eseguire un’istruzione in un solo ciclo di clock. Non impiega alcuna pipeline. Molto vasta, ovviamente, l’offerta Infineon, presente nel settore dei 16 bit con la famiglia C166 e le altre ad essa legate.

Le architetture a 32 bit

Il panorama dei microcontrollori a 32 bit è estremamente variegato. Qui ci limiteremo a fornire cenni su alcune delle architetture presenti sul mercato. AVR32 di Atmel, presentato nel 2006, è un core Risc dotato anche di istruzioni SIMD e DSP, destinato a competere contro il processore Arm. Il set di istruzioni è diverso da quello dell’AVR a 8 bit. ColdFire di Freescale è un vasta famiglia di microcontrollori a 32 bit che mantiene una parziale compatibilità con il processore Motorola 68000. Le principali differenze rispetto al set di istruzioni di 68000 sono la mancanza del supporto per il formato dei dati binary-coded decimal (BCD) e una generale semplificazione. La famiglia ColdFire comprende oggi dispositivi appartenenti a cinque generazioni successive, sensibilmente diverse tra loro. Sviluppata nei primi anni novanta da Hitachi, la famiglia SuperH di Renesas si basa su un’architettura Risc a 32 bit ma comprende anche modelli a 64 bit. Attualmente la serie comprende numerose versioni, alcune delle quali superscalari (due istruzioni in un solo ciclo) con pipeline a cinque stati, altre dotate di funzioni Dsp. I microcontrollori Texas Instruments della famiglia C2000 impiegano un’architettura a 32 bit nella quale le periferiche operano con una base dei tempi indipendente, sincronizzabile secondo necessità. La famiglia comprende versioni in virgola fissa e in virgola mobile. V850 di Nec è basato su un’architettura Risc di tipo Harvard. Alcuni modelli della famiglia impiegano una pipeline a cinque stadi, altri a sette stadi con la possibilità di eseguire due istruzioni contemporaneamente. La gamma comprende versioni dotate di istruzioni compatibili con il linguaggio C e di istruzioni “in stile Cisc” per la manipolazione dei bit.
Anche Toshiba dispone di una propria architettura a 32 bit; in questo caso si tratta di uno schema di tipo Cisc.
TriCore è una famiglia di dispositivi di Infineon che riunisce in un unico dispositivo tre diversi core: un microcontrollore a 32 bit, un Dsp e un sistema load-store a set di istruzioni ridotto.

Le architetture Risc a 32 e 64 bit

Nel campo dei processori embedded a 32 bit spiccano tre architetture accomunate da una storia abbastanza simile: Arm, Mips e PowerPC (oggi Power Architecture). In tutti i tre casi si tratta di dispositivi Risc che verso la fine degli anni ottanta e gli inizi degli anni novanta furono proposti per la realizzazione di personal computer e workstation come alternativa ai processori dominanti (Intel in particolare, ma in quell’epoca anche Motorola). In realtà questi chip non riuscirono a modificare gli assetti del mercato Pc e trovarono la loro strada nelle applicazioni embedded, dove sono tuttora apprezzatissimi.
Le architetture Arm derivano da un lavoro che ebbe inizio nel 1983 presso Acorn Computers. Le peculiarità principali di questo processore comprendono un’estrema semplicità dovuta principalmente alla mancanza del microcodice, l’impiego di opcode di lunghezza fissa e la capacità di eseguire la maggior parte delle istruzioni in un solo ciclo di clock. Grazie a particolari accorgimenti, i programmi Arm sono generalmente più densi dei programmi equivalenti scritti per altri Risc; inoltre il processore esegue un minor numero di accessi alla memoria e quindi può utilizzare una frequenza di clock inferiore, il che contribuisce a ridurre i consumi. I primi processori della famiglia, ad esempio gli Arm7, impiegavano una pipeline a tre stadi; in modelli più recenti, come Arm9, la pipeline è invece a cinque stadi. Tra le società che producono dispositivi basati sulle varie versioni di Arm sono comprese Texas Instruments, Nxp, Toshiba e ST Microelectronics.
Mips è un’architettura Risc a 32 o 64 bit nata nel 1985, basata sull’idea di accelerare il funzionamento della pipeline rendendo uniformi i tempi di esecuzione di tutte le istruzioni (per eliminare la necessità di attesa da parte di alcuni moduli). Questo obiettivo fu ottenuto al prezzo di eliminare istruzioni importanti come moltiplicazione e divisione. Tra le società che realizzano processori embedded o microcontrollori basati sull’architettura Mips sono comprese Microchip e Toshiba.
L’espressione Power Architecture indica oggi i processori PowerPC e le altre due architetture ad essi imparentate, cioè il processore Power di Ibm e il processore Cell. Nata nel 1991 per iniziativa dell’alleanza Apple-Motorola-Ibm, l’architettura PowerPC è un Risc a 32 bit superscalare, realizzato anche in versione a 64 bit. Parlando di processori embedded è opportuno sottolineare che Intel offre una vasta gamma di dispositivi per questo tipo di applicazioni, derivati perlopiù dai propri processori per personal computer. Tra i più recenti ricordiamo EP80579, basato su Pentium M.

Processori soft per Fpga

Solo un cenno, infine, anche alle architetture proprietarie sviluppate dai principali produttori di Fpga e destinate ad essere implementate in forma soft tramite la programmazione del tessuto logico. Le applicazioni prevalenti, ovviamente, sono di tipo embedded. I processori in questione sono MicroBlaze di Xilinx, Nios II di Altera e LatticeMico32 di Lattice. In tutti i casi si tratta di architetture Risc.

Pubblica i tuoi commenti