The ability to power small embedded devices with just the energy harvested from the environment, extends their scenarios of adoption. Though, the instability of these power sources, often times results in drops of power supply. To mitigate this issue, we can use capacitors as energy buffers. Once the capacitor voltage reaches a given activation threshold, the microcontroller powers on and the computation starts. If the energy intake is lower than the outtake, the capacitor voltage drops, potentially to a point where it is below the minimum device’s operating voltage. If that happens a power failure occurs: the computation stops and the device powers off, charging until the activation threshold is reached again. This causes loosing processor’s state, hence the progress in computation is lost and it must be restarted from scratch at the next activation. We call this behavior intermittent computing. Unlike mainstream platforms where software can benefit from OS support, on our constrained devices we execute code on bare hardware and power failures are not managed. It is evident that we need a mechanism to save the state on non-volatile supports, when we are close to a power failure, so that the computation can resume from where it was when the device switched off, ensuring code completion. Different approaches are described in the literature when it comes to saving state. Each of them proposes a different take on how to structure, instrument and execute code. Though, all of them consider the maximization of energy efficiency as the ultimate goal that guides their decisions. This allows to operate in situations of scarce energy intake. We proved with experiments that being too conservative produces rigid solutions that do not adapt well to the opposite situation of sudden bursts of high energy provisioning. In this document we propose an important shift in perspective. We suggest a different paradigm: to focus back on throughput requirements instead of energy efficiency. We propose to consider energy efficiency not as a goal, but as a mean to satisfy throughput requirements, that we argue should be the ultimate goal. In light of this conceptual leap, we propose a framework to support intermittent computing, composed by a new programming abstraction and a dynamic scheduler. Our scheduler, for the first time, manages at runtime both workload and activation voltage threshold, to pursue our new goal: the satisfaction of throughput.

La possibilità di alimentare dispositivi di piccole dimensioni solamente con l’energia raccolta dall’ambiente, ne estende il campo d’azione. L’instabilità di queste sorgenti rende frequenti i cali di alimentazione e può essere mitigata utilizzando condensatori come buffer energetici. Il microcontrollore si attiva quando il voltaggio del condensatore raggiunge una determinata soglia. Se durante la computazione il bilancio energetico è negativo, il voltaggio del condensatore cala, potenzialmente raggiungendo un valore incompatibile con l’operatività del dispositivo alimentato. Se ciò accade si verifica una power failure: la computazione si interrompe e il dispositivo si spegne, caricandosi fino al nuovo raggiungimento della soglia di attivazione. Lo spegnimento improvviso causa la perdita dello stato del processore che al riavvio dovrà eseguire da capo tutte le istruzioni. Chiamiamo questo comportamento computazione intermittente. In questi dispositivi il codice viene eseguito accedendo direttamente all’hardware e le power failure non sono gestite, a differenza delle piattaforme di calcolo comuni in cui il software beneficia del supporto del sistema operativo. Emerge la necessità di implementare meccanismi di salvataggio dello stato su supporti non volatili, in prossimità di una power failure, per poter riprendere la computazione interrotta, garantendo il completamento del lavoro. In letteratura sono descritti svariati approcci al problema del salvataggio dello stato che offrono molteplici strade per strutturare ed eseguire il codice destinato a queste piattaforme. Esiste però un comune denominatore a tutte queste proposte: il fatto di considerare la massimizzazione dell’efficienza energetica l’obiettivo primario che guida le scelte prese. Questo approccio permette di operare in condizioni di scarsità energetica, ma abbiamo sperimentato che produce soluzioni rigide che non si adattano a scenari opposti di improvvisi picchi di alimentazione. In questo documento proponiamo un importante cambio di prospettiva. Suggeriamo un diverso paradigma in cui si riporta al centro dell’attenzione il soddisfacimento dei requisiti non funzionali, e in particolare del throughput minimo di esecuzione. Proponiamo di rendere l’efficienza energetica, non più un obiettivo, ma uno strumento per raggiungere la performance desiderata. Alla luce di questo cambiamento, proponiamo un framework per dispositivi a computazione intermittente, composto da una nuova astrazione di programmazione e, per la prima volta, da uno scheduler dinamico che gestisce a runtime il carico di computazione e le soglie operative di voltaggio, per perseguire quello che consideriamo il nuovo obiettivo principale: il soddisfacimento dei throughput richiesti.

From energy to throughput in intermittent computing

BERTANI, FRANCESCO
2018/2019

Abstract

The ability to power small embedded devices with just the energy harvested from the environment, extends their scenarios of adoption. Though, the instability of these power sources, often times results in drops of power supply. To mitigate this issue, we can use capacitors as energy buffers. Once the capacitor voltage reaches a given activation threshold, the microcontroller powers on and the computation starts. If the energy intake is lower than the outtake, the capacitor voltage drops, potentially to a point where it is below the minimum device’s operating voltage. If that happens a power failure occurs: the computation stops and the device powers off, charging until the activation threshold is reached again. This causes loosing processor’s state, hence the progress in computation is lost and it must be restarted from scratch at the next activation. We call this behavior intermittent computing. Unlike mainstream platforms where software can benefit from OS support, on our constrained devices we execute code on bare hardware and power failures are not managed. It is evident that we need a mechanism to save the state on non-volatile supports, when we are close to a power failure, so that the computation can resume from where it was when the device switched off, ensuring code completion. Different approaches are described in the literature when it comes to saving state. Each of them proposes a different take on how to structure, instrument and execute code. Though, all of them consider the maximization of energy efficiency as the ultimate goal that guides their decisions. This allows to operate in situations of scarce energy intake. We proved with experiments that being too conservative produces rigid solutions that do not adapt well to the opposite situation of sudden bursts of high energy provisioning. In this document we propose an important shift in perspective. We suggest a different paradigm: to focus back on throughput requirements instead of energy efficiency. We propose to consider energy efficiency not as a goal, but as a mean to satisfy throughput requirements, that we argue should be the ultimate goal. In light of this conceptual leap, we propose a framework to support intermittent computing, composed by a new programming abstraction and a dynamic scheduler. Our scheduler, for the first time, manages at runtime both workload and activation voltage threshold, to pursue our new goal: the satisfaction of throughput.
ING - Scuola di Ingegneria Industriale e dell'Informazione
29-apr-2020
2018/2019
La possibilità di alimentare dispositivi di piccole dimensioni solamente con l’energia raccolta dall’ambiente, ne estende il campo d’azione. L’instabilità di queste sorgenti rende frequenti i cali di alimentazione e può essere mitigata utilizzando condensatori come buffer energetici. Il microcontrollore si attiva quando il voltaggio del condensatore raggiunge una determinata soglia. Se durante la computazione il bilancio energetico è negativo, il voltaggio del condensatore cala, potenzialmente raggiungendo un valore incompatibile con l’operatività del dispositivo alimentato. Se ciò accade si verifica una power failure: la computazione si interrompe e il dispositivo si spegne, caricandosi fino al nuovo raggiungimento della soglia di attivazione. Lo spegnimento improvviso causa la perdita dello stato del processore che al riavvio dovrà eseguire da capo tutte le istruzioni. Chiamiamo questo comportamento computazione intermittente. In questi dispositivi il codice viene eseguito accedendo direttamente all’hardware e le power failure non sono gestite, a differenza delle piattaforme di calcolo comuni in cui il software beneficia del supporto del sistema operativo. Emerge la necessità di implementare meccanismi di salvataggio dello stato su supporti non volatili, in prossimità di una power failure, per poter riprendere la computazione interrotta, garantendo il completamento del lavoro. In letteratura sono descritti svariati approcci al problema del salvataggio dello stato che offrono molteplici strade per strutturare ed eseguire il codice destinato a queste piattaforme. Esiste però un comune denominatore a tutte queste proposte: il fatto di considerare la massimizzazione dell’efficienza energetica l’obiettivo primario che guida le scelte prese. Questo approccio permette di operare in condizioni di scarsità energetica, ma abbiamo sperimentato che produce soluzioni rigide che non si adattano a scenari opposti di improvvisi picchi di alimentazione. In questo documento proponiamo un importante cambio di prospettiva. Suggeriamo un diverso paradigma in cui si riporta al centro dell’attenzione il soddisfacimento dei requisiti non funzionali, e in particolare del throughput minimo di esecuzione. Proponiamo di rendere l’efficienza energetica, non più un obiettivo, ma uno strumento per raggiungere la performance desiderata. Alla luce di questo cambiamento, proponiamo un framework per dispositivi a computazione intermittente, composto da una nuova astrazione di programmazione e, per la prima volta, da uno scheduler dinamico che gestisce a runtime il carico di computazione e le soglie operative di voltaggio, per perseguire quello che consideriamo il nuovo obiettivo principale: il soddisfacimento dei throughput richiesti.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2020_04_Bertani.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 11.71 MB
Formato Adobe PDF
11.71 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/165350