Principali parametri di confronto (metriche)

Progettare o scegliere un sistema embedded significa sempre operare una scelta tra diverse soluzioni possibili (esistenti o da realizzare), che si differenziano per un certo numero di caratteristiche, quantitativamente descritte dai valori di importanti parametri che diventano elementi essenziali di confronto. Per comodità, questi parametri possono essere distinti in due "insiemi" (non indipendenti l´uno dall´altro), costi e caratteristiche di tipo tecnico (prestazioni, consumo, ingombro,...). A questi occorre aggiungere il fattore temporale descritto dal già citato Time-to-Market, che ha acquistato importanza sempre maggiore sui mercati competitivi della nostra epoca. É evidente che dal punto di vista di scegliere prodotti esistenti, o di fissare le "specifiche" di progetto da realizzare, l´ideale sarebbe quello di prestazioni elevate ottenute con costi bassi e in tempi molto stretti. Tuttavia, come sempre accade con i problemi dell´ingegneria, prestazioni elevate sono normalmente il risultato di prodotti (o progetti) più sofisticati e costosi e questi, a loro volta, comportano tempi di sviluppo elevati. Perciò nel mondo "reale" si pone il problema di scegliere il miglior compromesso tra esigenze contrastanti, che dipende dalla specifica applicazione di interesse.

Il campo dei costi, così come quello delle prestazioni è formato da voci diverse e collegate l´una all´altra debbono essere considerate con attenzione.

Costi

Da questo punto di vista è necessario distinguere (almeno) tra il costo "di sviluppo" e quello "unitari". Il primo comprende tutti i costi necessari per sviluppare il progetto fino alla realizzazione di pochi prototipi e, possibilmente, al trasferimento del progetto in produzione (dove viene tipicamente sottoposto ad un ulteriore processo di "ingegnerizzazione"). Questo costo dipende principalmente dalla quantità di lavoro e di competenze utilizzate per lo sviluppo, quindi in ultima analisi dalla quantità (per esempio misurata in anni o mesi uomo) e qualità delle persone coinvolte. In area tecnologica un buon progettista (un giovane ingegnere con discreta esperienza) in Italia ha un costo dell´ordine di 50000 Euro all´anno, comprensivo di stipendio, oneri sociali,... ma anche delle cosiddette "overhead" necessarie perchè possa lavorare (ammortamento di apparecchiature, edifici,... spese vive di telefono, segreterie, servizi generali,...). Naturalmente, il costo di una persona cresce con l´esperienza ed il ruolo ed è diverso da Paese a Paese. Sulla base di questo parametro è abbastanza facile fare una stima di massima del costo di sviluppo a partire da una valutazione realistica della quantità di lavoro necessario. Dal punto di vista del prodotto finale, il costo di sviluppo viene ammortizzato sulle singole repliche del prodotti (pezzi) immessi sul mercato. Perciò, prodotti destinati ad essere venduti in grande numero possono sopportare costi di sviluppo elevati, a differenza di quelli che saranno realizzati in pochi esemplari: in particolare giustificano un intenso sforzo mirato a ridurre il costo "unitario", ovvero quello necessario per produrre una singola replica del prototipo sviluppato, che normalmente è cresce con l´impegno e l´incorporazione di conoscenze. Il costo unitario è il parametro più importante per produzioni di grande volume, mentre ha scarso significato per oggetti che debbono essere realizzati in pochi esemplari. In questo caso, è quasi sempre conveniente risparmiare sui costi di sviluppo, che non possono essere ammortizzati convenientemente, per arrivare rapidamente e in modo economico ad un risultato.

Time-to-Market

Nell´attuale fase di sviluppo del mercato, è essenziale cogliere le opportunità che si presentano "al momento giusto". Da questo punto di vista, sempre più i prodotti hanno una "finestra" di opportunità limitata nel tempo, la cui dimensione varia da caso a caso. Prima dell´inizio di questa finestra, il mercato non è ancora pronto ad accettarlo ed il prodotto non avrebbe successo. Dopo la fine del periodo utile, la concorrenza è troppo elevata ed il mercato si orienta su altri prodotti: di nuovo il risultato sarebbe disastroso. L´esistenza di questa finestra implica la necessità di oculate operazioni di marketing per definirne i confini e, di conseguenza, anche di un piano per arrivare sul mercato all´interno del periodo giusto. Molto spesso questa operazione implica tempi stretti di sviluppo per arrivare "prima della concorrenza" e cogliere i frutti principali di una buona idea. A parità di lavoro necessario, il modo per ridurre i tempi di sviluppo accorciando il Time-to-Market è quello di aumentare il numero di persone impegnate nel lavoro. A questo proposito, tuttavia, è opportuno tenere presente che il tempo non diminuisce proporzionalmente con il numero delle persone, perchè il coordinamento di un gruppo implica necessariamente anche impegni di coordinamento che crescono con il numero di individui coinvolti. Inoltre, comunque, alcune attività non possono essere eseguite in parallelo perchè intrinsecamente in sequenza l´una con l´altra.

Caratteristiche tecniche

I parametri più importanti a questo riguardo sono: le prestazioni, in pratica la "velocità" del sistema, il consumo di potenza e l´ingombro (od occupazione di area). A questo proposito occorre tenere presente che queste caratteristiche hanno esigenze (quasi sempre) in contrasto, nel senso che il miglioramento di una di esse dà luogo ad un potenziale peggioramento delle altre. Per esempio, ridurre l´ingombro di un sistema significa dissipare potenza in un area inferiore con potenziali effetti negativi sulla temperatura; inoltre la riduzione delle dimensioni rende più critico il ruolo dei componenti parassiti (in particolare le capacità delle linee e tra le linee), il che obbliga ad un progetto più accurato e costoso. Considerazioni analoghe potrebbero essere fatte a partire da ognuno degli altri parametri. In ogni caso il miglioramento di una caratteristica tecnica del progetto rappresenta un problema complessivo (perchè riguarda necessariamente anche tutte le altre) e porta inevitabilmente ad un progetto/ prodotto più costoso: da qui deriva una forte interdipendenza tra costi e caratteristiche tecniche. Per quanto riguarda le principali caratteristiche tecniche, quanto segue rappresenta una sintetica rassegna degli aspetti principali.

Prestazioni

Con questo termine si intende essenzialmente la velocità del sistema che è propriamente misurata dal "throughput", ovvero dalla quantità di operazioni logiche che il sistema è in grado di eseguire per unità di tempo. Questo parametro dipende (molto) dalla tecnologia e dalla architettura del sistema e migliora esponenzialmente con il susseguirsi delle generazioni tecnologiche. Come indicatore, improprio ma significativo, di velocità si usa spesso fare riferimento alla frequenza di clock dei processori (ormai nel campo dei GHz per microprocessori avanzati, ancora di Mhz quando non addirittura di centinaia di KHz nel caso dei micro-controllori più semplici). Diverse applicazioni dei sistemi embedded (per esempio i controlli di processo o quelli in cui è coinvolta la sicurezza delle persone, come ad esempio i mezzi di trasporto) richiedono un funzionamento "in tempo reale", che può essere realizzato soltanto con l´utilizzo di processori avanzati. Nella maggior parte dei casi, tuttavia, questo non è necessario e si possono usare processori assai più lenti ed economici. Nel caso si semplici elettrodomestici, giocattoli, semplici telecomandi,... si possono utilizzare semplici dispositivi a pochi bit (4 o 8) funzionanti a qualche centinaio di KHz, ottenendo sistemi economici senza comprometterne la funzionalità. In generale, per aumentare la velocità è necessario aumentare il consumo di potenza e ridurre le dimensioni del sistema (in pratica delle schede su cui è realizzato) per accorciare i percorsi dei segnali tra un dispositivo integrato ed un altro e diminuire il valore dei parassiti (capacità e resistenze).

Consumo

Il consumo di potenza è un parametro di grande importanza, sia per sistemi di tipo fisso che mobile. Per i primi il problema principale è quello della difficoltà di dissipare di potenza in aree (o volumi) ridotti, che comporta aumenti di temperatura con la necessità di sistemi di raffreddamento più efficienti (quindi costi aggiuntivi a livello di sistema). Per i secondi, a questi aspetti si aggiungono quelli dovuti alla durata della batteria. A livello di sistema, vale la pena di osservare come spesso il maggior consumo sia dovuto alle periferiche (in particolare ai monitor). Sempre più importante è poi il contributo dovuto alle periferiche di comunicazione (sia wired che wireless) specie nel caso in cui si vogliano ottenere grandi velocità. Per quanto riguarda la parte più specificatamente elettronica, il consumo di potenza si può ridurre in vari modi. Innanzi tutto utilizzando componenti più avanzati (e costosi), che riducono il numero di integrati da utilizzare e svolgono un maggior numero di comunicazioni all´interno di chip (anzichè sulla piastra), con grandi vantaggi in ordine a prestazioni e consumo. Inoltre, generalmente i dispositivi avanzati consentono l´utilizzo di strategie di funzionamento mirate alla riduzione del consumo di potenza (per esempio con lo spegnimento di parti temporaneamente non utilizzate). Il consumo di potenza può essere diminuito anche riducendo le tensioni di alimentazione (quando possibile e tenendo presente che questo in genere comporta un degrado delle prestazioni), e/ o la frequenza di clock (anche questo con effetto negativo sulle prestazioni). Infine, è importante osservare come a parità di hardware e di funzionalità, il consumo di un sistema dipenda molto dal software e dai protocolli di comunicazione, anche se questo aspetto del problema è tutto sommato ancora studiato in modo incompleto ed inadeguato. In generale sarebbe opportuno tenere presente il budget di consumo per ogni istruzione da eseguire in modo da sviluppare il software mirando a minimizzare le necessità energetiche del sistema.

Ingombro

Anche l´area (o il volume) è spesso un parametro molto importante per un sistema embedded, specie quando deve essere "nascosto" all´interno di un prodotto di piccolo volume. D´altra parte, è già stato fatto notare come le piccole dimensioni siano indispensabili per raggiungere prestazioni elevate, anche se in generale esse comportano maggiori problemi dal punto di vista della dissipazione del calore. La riduzione delle dimensioni si può ottenere con un progetto (e una produzione) più accurata oltre che con l´utilizzo di tecnologie più avanzate per la fabbricazione delle schede. Da questo punto di vista, in particolare, si ottengono notevoli miglioramento passando dalla tecnologia di semplici schede con connessioni su un solo lato e dispositivi montati in fori passanti e con saldatura a quelle con connessioni su entrambi i lati e dispositivi a montaggio superficiale (Surface Mounting Devices – SMD). Queste soluzioni rappresentano di fatto lo stato dell´arte nel campo della realizzazione di sistemi embedded. Tuttavia, per applicazioni altamente professionali e ad alto costo esistono anche altre soluzioni sia per quanto riguarda le schede (o più in generale i substrati) che per il montaggio dei dispositivi su di esse. Dal punto di vista dei substrati, meritano menzione le schede a più strati, che prevedono connessioni su molti livelli sovrapposti ed isolati l´uno dall´altro, e i cosiddetti moduli multi chip (Multi-Chip-Modules), nella forma più avanzata realizzati su substrati di silicio mediate fotolitografia di stampo microelettronico, che mirano a ridurre al massimo le distanze e le interconnessioni tra i diversi chip del sistema al fine di massimizzare le prestazioni. Dal punto di vista del montaggio di dispositivi merita menzione la tecnica "a chip rovesciato" (flip-chip), in cui i contatti sono realizzati sia su chip che su substrato mediante protuberanze di materiale conduttivo da sovrapporre e saldare a pressione che, in quanto non necessariamente collocati alla periferia del chip, consentono notevoli risparmi in occupazione d´area. La scelta delle schede (o del substrato) è di fondamentale importanza per il costo e le prestazioni del sistema.