EO_481

49 - ELETTRONICA OGGI 481 - OTTOBRE 2019 tipo non è quasi mai efficiente dal punto di vista ener- getico, poiché lo scambio di dati tra il sistema e i suoi ingressi e uscite ha spesso luogo ad una velocità molto inferiore rispetto alla velocità di picco di un processo- re di fascia alta. Durante l’esecuzione delle transazioni I/O, un processore a 32 o 64 bit in grado di funzionare a 1 GHz (o superiore) dovrà attendere molti cicli prima che compaia ogni nuovo byte o word. Un modo per evi- tare l’uso continuo del polling è sfruttare gli interrupt. Ciò consente al processore di continuare con il lavoro principale mentre ogni transazione I/O è in corso. Ma la necessità di inserire e far apparire i valori nello stack di sistema a ogni commutazione del contesto (context switch) comporta molti cicli di sovraccarico (overhead) dopo ogni interrupt. Molti sistemi embedded sono pilotati da interrupt pro- vocati da eventi esterni. Attendono un segnale di attivi- tà esterna prima di eseguire un’elaborazione intensiva sugli input. Di conseguenza è essenziale affrontare in modo efficiente il problema dell’overhead. Questo era vero per i controller delle tastiere alla fine degli anni 70 come lo è oggigiorno. Invece di eseguire il polling (ovvero l’interrogazione ciclica) degli input, si potreb- be attendere che venga stabilito un contatto elettrico. L’impulso risultante verrebbe rilevato da un controllore di interrupt che segnalerebbe al firmware del micro- processore la necessaria di eseguire la scansione delle linee della tastiera per rilevare quale tasto sia stato pre- muto e inviare un messaggio al computer host in merito al carattere rappresentato. Alcuni esempi concreti Per gran parte della sua durata operativa, un tipico si- stema IoT eseguirà pochissima elaborazione; la mag- gior parte delle sue funzioni sono infatti necessarie solo durante brevi periodi di attività di tipo burst (a raffica). Uno smart speaker, ad esempio, deve solo iniziare a provare a riconoscere il linguaggio umano quando un segnale audio abbastanza forte nella giusta gamma di frequenze viene captato dal microfono. Ad esempio, un rivelatore di fumo non deve eseguire misurazioni dell’aria che entra nella stanza a intervalli di microsecondi. La situazione ambiente non cambia abbastanza rapidamente da richiedere un intervento di questo tipo. Il rivelatore potrà utilizzare un campiona- mento a una frequenza di una volta al secondo, o meno, sufficiente per determinare se la qualità dell’aria sia o meno a un livello per cui è necessaria un’analisi più ap- profondita. I calcoli impiegheranno generalmente una frazione di secondo anche sui core che operano a una velocità di pochi MHz. In entrambi i casi, mantenere il core del processore in esecuzione tra le misurazioni in un “idle loop” (quindi in un ciclo inattivo) comporta un inutile spreco di energia. La soluzione è portare il core in una modalità di “sleep”, quindi a basso consumo, quando entra nell’idle loop e riattivarlo quando arriva un interrupt da un clock di sistema o da un contatore o se una periferica event-driven (ovvero pilotata dagli eventi) rileva attività esterne. I vantaggi degli 8 bit Per mantenere prestazioni elevate, i processori di fa- scia alta fanno uso di cache SRAM locali per memoriz- zare istruzioni e dati a cui si accede frequentemente. Se le cache non vengono utilizzate, devono copiare il codice dalla memoria flash relativamente lenta in un di- spositivo SRAM o DRAM per mantenere un buon throu- ghput di istruzioni della cache. Per risparmiare energia durante la modalità sleep, queste memorie perderanno il loro contenuto e dovranno essere aggiornate dopo un segnale di risveglio (wake-up) prima che il proces- sore possa iniziare l’esecuzione, operazione che richie- de energia e contribuisce ad aumentare la latenza. La maggior parte dei processori a 8 bit si adatta me- glio alle caratteristiche prestazionali e alle capacità della memoria non volatile, caricando direttamente le istruzioni dalla Flash. Spesso contengono memorie di dati locali non volatili per memorizzare dati persistenti (ovvero utilizzati con maggior frequenza) tra i cicli di risveglio e quindi raramente devono ricaricare le loro SRAM scratchpad. Il risultato è un core più sensibi- le agli eventi esterni, nonostante il picco inferiore di throughput di calcolo. Fig. 1 – Core Independent Peripherals (CIP) DIGITAL 8 BIT MCU

RkJQdWJsaXNoZXIy MTg0NzE=