Edge Computing
Le più avanzate tecniche di intelligenza artificiale (AI), come il machine learning (ML) e il deep learning (DL), richiedono dei sistemi hardware performanti dotati di elevate capacità di calcolo e dimensioni della memoria, a cui si aggiungono una bassa latenza e un’ampiezza di banda considerevole per gestire la comunicazione con il sistema host. Mentre i sistemi di calcolo centralizzati, come ad esempio i cloud server, non incontrano grosse difficoltà a soddisfare questi requisiti stringenti, la stessa cosa non si può dire per i sistemi embedded.
Anche se le prestazioni degli attuali sistemi embedded hanno raggiunto livelli molto elevati, grazie soprattutto all’introduzione di componenti programmabili ad alta densità di integrazione come FPGA, SoC, GPU e, in alcuni specifici casi, anche veri e propri ASIC, le risorse disponibili su questi sistemi sono comunque limitate, imponendo dei vincoli e dei limiti agli algoritmi implementabili.
La maggior parte degli algoritmi di intelligenza artificiale richiede inoltre un comportamento in tempo reale, con latenze sui tempi di risposta dell’ordine di qualche millisecondo.
Esiste una soluzione tecnica fattibile e percorribile che permetta di coniugare le esigenze degli algoritmi di AI con le capacità e le prestazioni oggi disponibili su un sistema embedded?
La risposta è affermativa: è sufficiente infatti utilizzare la tecnica che prende il nome di “edge computing”.
Cosa si intende per Edge computer?
Edge computer è, per estensione, il sistema embedded hardware/software in grado di supportare questa tecnica. Come di dice il nome stesso (edge in inglese può essere tradotto come margine, o bordo), l’edge computing mira a spostare il più possibile gli algoritmi, intesi come “intelligenza” del sistema, vicino a dove i dati su cui essi si basano sono prodotti.
Si pensi, ad esempio, a un sistema per il riconoscimento delle immagini e/o di tracking degli oggetti. Applicazioni di questo tipo sono oggi largamente utilizzate in ambito industriale, nel settore della sicurezza (sistemi di videosorveglianza) e nel settore automotive come supporto ai sistemi di assistenza alla guida (ADAS) e nei veicoli a guida autonoma.
Il deep learning, utilizzando architetture che hanno oggi raggiunto un grado di maturità e affidabilità molto elevato, è in grado di emulare le capacità di elaborazione del cervello umano attraverso l’utilizzo di reti neurali e architetture ad-hoc come le reti neurali convoluzionali (CNN). I risultati ottenibili sono molto soddisfacenti, basti pensare alla facilità con cui i sistemi ADAS sono in grado di riconoscere segnaletica e cartelli stradali.
Applicazioni e vantaggi
Applicazioni come questa sono oggi possibili grazie all’edge computing, il quale consente l’implementazione delle tecniche di AI direttamente sulla piattaforma embedded, là dove sono presenti i dispositivi (telecamere, radar e sensori di prossimità) da cui partono i dati. I dati sono processati in massima parte, se non esclusivamente, in modo locale, riducendo o eliminando la comunicazione con il sistema centralizzato sul cloud.
I vantaggi che ne derivano sono evidenti: riduzione dei tempi di latenza, minore ampiezza di banda trasmissiva, costi e prestazioni complessive superiori rispetto a una soluzione centralizzata.
La bassa latenza, fondamentale per i sistemi con comportamento real time, è ottenuta rendendo il sistema embedded più autonomo, con maggiore potere decisionale. Di riflesso, si riduce la quantità di dati trasmessi a distanza e quindi l’ampiezza di banda richiesta, un requisito critico nei sistemi embedded.
Single board computer
Una delle soluzioni hardware maggiormente diffuse nel settore embedded è rappresentata dai single board computer, comunemente noti come SBC. A differenza dei sistemi embedded multi-scheda, in massima parte sviluppati con progetti custom o proprietari, un SBC è fondamentalmente una piattaforma di tipo COTS (commercial off-the-shelf) che integra su una singola scheda una moltitudine di funzionalità e interfacce hardware. Per loro natura, i single board computer devono presentare delle specifiche tecniche sufficientemente ampie da soddisfare i requisiti richiesti dalle principali applicazioni in ambito industriale, commerciale e medicale. Gli SBC possono quindi essere considerati come dei sistemi hardware “general purpose”, in grado di adattarsi senza richiedere alcuna modifica hardware a differenti contesti applicativi.
Le principali risorse hardware di cui una scheda SBC deve disporre sono le seguenti:
- CPU (microprocessore, microcontrollore o System On Chip): si tratta dell’unità di elaborazione della scheda, normalmente appartenente a una famiglia di componenti elettronici prodotta su larga scala e di grande diffusione. Esempi comuni di CPU sono le unità di calcolo basate sull’architettura Intel x86/AMD, gli Intel Atom e diverse tipologie di SoC basate su architettura ARM, a core singolo oppure multicore. A livello di prestazioni, la tendenza più comune è quella di scegliere il giusto compromesso tra velocità di elaborazione e assorbimento di potenza, il quale a sua volta determina il calore prodotto, che deve essere contenuta al minimo;
- unità di memoria: un SBC è tipicamente equipaggiato con memorie RAM di tipo DDR3 o superiori, la cui capacità deve essere sufficiente a supportare sia i requisiti dell’applicazione che quelli dell’eventuale sistema operativo (come ad esempio Linux). Sulla scheda deve inoltre essere presente una memoria flash per ospitare il boot loader, l’immagine del sistema operativo (opzionale), il software applicativo ed altre eventuali informazioni di tipo non volatile. La disponibilità di una scheda Micro SD permette di espandere a costo praticamente nullo la disponibilità di memoria flash;
- general purpose I/O (GPIO): sono i segnali digitali e analogici configurabili dall’utente in base alla specifica applicazione. La configurazione di questi pin consente di impostarne la direzione (ingresso oppure uscita), il tipo (analogico, digitale, o ad alta impedenza), l’intensità massima di corrente e il tipo di interfaccia elettrica (pull up, pull down oppure open drain);
- interfacce di comunicazione: appartengono a questa categoria i principali tipi di bus impiegati nel settore embedded, come I2C, SPI e CAN bus, oltre all’interfaccia di rete Ethernet, porte USB 2.0/3.0, interfacce HDMI, PCI Express, SATA, LVDS e altre interfacce dedicate per i display.
Quali sono i vantaggi derivanti dall’utilizzo di un single board computer? I vantaggi sono numerosi e possono essere così sintetizzati:
- hardware pronto per l’uso, non richiede alcuna attività di progettazione, sviluppo hardware o test;
- elevata flessibilità: la stessa piattaforma hardware può adattarsi a diversi tipi di applicazione senza richiedere modifiche hardware;
- economicità;
- gestione dell’alimentazione semplificata: non è richiesta la progettazione di alcun alimentatore;
- buona dissipazione termica: molte schede SBC, anche per impieghi industriali, non richiedono sistemi di raffreddamento addizionali;
- fattore di forma ridotto;
- disponibilità dell’hardware garantita per lunghi periodi di tempo (almeno 5 anni);
- conformità agli standard relativi alla sicurezza elettrica e alla compatibilità elettromagnetica, oltre ad eventuali standard specifici per le applicazioni medicali.
In Figura 1 è visibile una SBC con spessore ridottissimo, sviluppata da Data Modul, azienda leader nella progettazione di display e sistemi embedded. La scheda include un processore NXPi.MX6 ARM Cortex A9, scalabile da 1 a 4 core, memoria RAM da 2 Gb e fino a 64 Gb di memoria eMMC SDD.
PC industriali
I più recenti progressi compiuti dalle tecnologie elettroniche hanno cambiato drasticamente la dimensione e la progettazione dei computer per applicazioni industriali, al punto che un computer embedded presenta oggi delle significative differenze rispetto a un comune PC da scrivania. Ancor più importante è osservare come si sia evoluto il modo con cui le aziende utilizzino questa classe di computer, includendo applicazioni un tempo inimmaginabili.
I PC industriali, noti anche come PC embedded o box PC, sono dei computer altamente specializzati per lavorare direttamente sul campo e fanno in genere parte di un sistema di controllo o automazione di dimensioni maggiori. I PC industriali (in Figura 2 sono visibili alcuni esemplari di DataModul) devono essere in grado di operare ininterrottamente (24×7) garantendo la stessa affidabilità e le stesse prestazioni al variare delle condizioni ambientali, soprattutto di temperatura. Le applicazioni nei settori industriale, telecomunicazioni e automotive possono inoltre comportare l’insorgenza di vibrazioni, urti, umidità e radiazioni elettromagnetiche, tutte condizioni particolarmente critiche per ogni dispositivo elettronico.
Il costo dei PC industriali è tendenzialmente in diminuzione a causa dei continui progressi e delle innovazioni in campo tecnologico, a cui si aggiungono le pressioni esercitate dalla concorrenza e le economie di scala. I PC industriali sono dispositivi compatti e sottili (spesso privi di ventole) caratterizzati da un elevatissimo grado di affidabilità. Solitamente disponibili nella versione “headless” e in quella provvista di tastiera, mouse e monitor, questi computer sono potenti e flessibili, dotati di numerosi segnali e interfacce di I/O e basati su architetture a core singolo o multicore. Le elevate prestazioni raggiunte consentono a questi dispositivi di eseguire efficacemente algoritmi di controllo, analisi, aggregazione dei dati e visualizzazione grafica su un display. Tra le applicazioni emergenti dei PC industriali rientra sicuramente l’IoT (Internet of Things), l’ecosistema in cui sensori, dispositivi di campo e apparecchiature sono interconnessi in rete e possono trasmettere e ricevere dati per una successiva elaborazione, tracciamento e analisi.
Rispetto a un computer per impieghi tradizionali, i PC industriali presentano dei vantaggi significativi, tra cui:
- fattore di forma ridotto: si tratta senza alcun dubbio della caratteristica in cui questo tipo di hardware eccelle in modo particolare. Spesso costruiti attorno a motherboard con fattore di forma ridotto, come Mini-ITX oppure Intel NUC, i PC industriali possono essere installati in luoghi e spazi non accessibili a un PC desktop o tower. Le unità disco allo stato solido (SSD) e le opzioni flessibili di montaggio permettono di utilizzare un PC industriale con virtualmente ogni direzione e orientamento;
- bassa manutenzione: progettati per garantire il funzionamento ininterrotto 24/7, i PC industriali utilizzano componenti elettronici di prima qualità con range di temperature esteso in grado di adattarsi a ogni temperatura estrema. Il circuito stampato, i componenti e il contenitore sono inoltre ingegnerizzati in modo tale da massimizzare l’efficienza termica ed eliminando, ove possibile, la necessità di ventole di raffreddamento. Il prodotto che si ottiene è virtualmente privo di ogni parte meccanica in movimento, minimizzando i tempi e i costi richiesti per la manutenzione;
- raffreddamento efficiente: le ventole di raffreddamento rappresentano una potenziale fonte di guasti o malfunzionamenti, oltre a richiedere delle apposite feritoie nel contenitore del PC industriale per consentire l’ingresso e l’uscita del flusso d’aria. Sebbene alcuni PC industriali utilizzino ancora delle ventole, le più recenti tecniche di raffreddamento passivo hanno permesso di eliminare questi componenti, aumentando lo spazio a disposizione sulla scheda e riducendo il rumore durante l’operatività.
Tutto sui display per applicazioni automotive
Display per applicazioni embedded
Se si vuole dotare un’applicazione embedded di un sistema per la visualizzazione delle informazioni, è essenziale selezionare il modello corretto di display. Questa scelta influenza direttamente l’impressione che l’utente ha del prodotto, essendo uno degli aspetti maggiormente visibili ed evidenti.
Inoltre, in un sistema embedded, il display rappresenta spesso uno dei componenti più costosi e con il maggiore assorbimento di potenza. Nella maggior parte dei casi, la selezione del display più adatto a una specifica applicazione richiede di trovare il giusto compromesso tra costo, prestazioni e assorbimento di corrente.
Nel caso in cui occorra visualizzare soltanto dei numeri, oltre a un insieme ristretto di lettere, si può utilizzare un display a segmenti come quelli utilizzati in molti orologi o timer digitali. Ciascuna cifra è normalmente composta da sette segmenti, che possono singolarmente accesi o spenti; esistono tuttavia display con più di sette segmenti, in grado di visualizzare una gamma più ampia di simboli.
La tecnologia maggiormente utilizzata per la realizzazione di ogni segmento è basata sui led, ma esistono anche display a segmenti LCD.
Lo step successivo è rappresentato dai display alfanumerici, composti da una o più righe, ciascuna in grado di visualizzare caratteri, cifre o anche simboli definiti dall’utente. Ciascun carattere, o cella, è composto da una matrice di pixel con dimensione fissa. Formati tipici per questa classe di display sono: 16×1, 16×2, 24×1, 24×2, 16×4 e altri ancora. La tecnologia maggiormente utilizzata per questi display è l’LCD riflettente.
Anche se più costosi rispetto ai precedenti, i display grafici offrono un’esperienza utente superiore. La possibilità di indirizzare singolarmente ogni pixel consente di visualizzare virtualmente qualunque oggetto: testo, immagini statiche o dinamiche, video. Appartengono a questa classe i display a matrice di led, disponibili sia nella versione a colori che monocromatica. La densità di pixel (DPI) di questi display è piuttosto bassa e la visibilità migliore si ottiene solo a una certa distanza dalla sorgente luminosa.
Prestazioni superiori sono offerte dai display e-ink (anche noti come ePaper), caratterizzati da un assorbimento ridottissimo che li rende particolarmente adatti per applicazioni in cui non è richiesto un aggiornamento frequente del display.
Basati su una tecnologia riflettente, i display e-ink offrono una visibilità eccellente anche in condizioni di elevata luminosità ambientale. Per le applicazioni alimentate a batteria o esposte a intensa luce ambientale sono particolarmente adatti i display MIP (Memory In Pixel), in cui l’immagine viene mantenuta in una memoria statica SRAM realizzata direttamente nel display. Nel caso si visualizzino immagini statiche, l’assorbimento di corrente è virtualmente nullo. In Figura 3 sono visibili degli esempi di display MIP progettati specificatamente per dispositivi elettromedicali e indossabili.
Simili ai display LCD a matrice, gli OLED (Organic LED) offrono un DPI particolarmente elevato. Gli OLED possono essere suddivisi in display a matrice passiva (PMOLED) e display a matrice attiva (AMOLED).
Nei primi, ciascun pixel viene controllato pilotando sia il segnale di riga che quello di colonna e rimane acceso solo quando tali segnali rimangono attivi; ne consegue che il controllo a matrice passiva è utilizzato solo per display con basse risoluzioni.
Negli AMOLED, invece, ciascun pixel può essere singolarmente controllato tramite un transistor dedicato; la complessità costruttiva e il costo sono superiori, ma è possibile ottenere tempi di scansione molto rapidi e risoluzioni maggiori. Parlando di display grafici, non possiamo non citare i display LCD.
Caratterizzati da densità di pixel estremamente elevate, i display LCD possono visualizzare un’ampia gamma di colori con tempi di persistenza dell’immagine molto ridotti. Spesso accompagnati da funzionalità touch, questi display hanno dimensioni comprese tra circa 2” fino a oltre 100”. Come gli OLED, anche i display LCD possono utilizzare una tecnica di controllo a matrice passiva oppure attiva. Gli LCD a matrice attiva sono tipicamente implementati utilizzando la tecnologia TFT (Thin Film Transistor).