Battery-less devices represent a great opportunity to enable a sustainable Internet of Things: ambient energy harvesting replaces batteries, leading to zero-maintenance systems with a low environmental impact. However, despite potentially supplying unlimited free energy, ambient energy is irregular, unpredictable, and usually insufficient to power battery-less devices continuously. Therefore, battery-less devices experience frequent and unpredictable energy failures that lead to intermittent computation, as devices compute only when sufficient energy is available. The presence of energy failures introduces several connected challenges. Unlike mainstream platforms, battery-less devices consist of highly constrained microcontroller units that run single non-concurrent programs and lack an operating system to manage energy failures. Therefore, when battery-less devices shut down due to energy failures, they lose the computational state and, in the next power cycle, they restart the computation all over again. To ensure battery-less devices progress in their programs, they periodically need to save their program state onto a non-volatile memory location, which is persistent across energy failures, to restore it when the energy returns. Although this ensures program forward progress across energy failures, battery-less devices may experience unexpected behaviors, producing results that differ from those of an equivalent continuous execution. Ensuring program forward progress and avoiding unexpected behaviors introduce energy and computation overhead detrimental to battery-less devices' performance. Therefore, efficient energy management becomes essential to extract the most possible work from harvested energy, as it supplies an unpredictable, limited, and scarce amount of energy. The PhD research described in this thesis tackles these challenges and provides several contributions to the state of the art. We first work on the first multi-year deployment of battery-less devices that monitor the structural conditions of an archeological site. We devise three system design iterations, where we initially deploy battery-powered systems. Due to the high maintenance efforts of frequent battery replacements, we eventually switched to battery-less systems powered with kinetic and thermal energy. Our final design achieves zero-maintenance battery-less operations without compromising end-user requirements, as its sensed data provides comparable insights to battery-powered systems. We then target intermittence anomalies, consisting of unexpected behaviors caused by energy failures. We classify intermittence anomalies and identify new types of anomalies previously overlooked by existing literature, which may happen whenever devices interact with the environment. We devise a set of techniques to analyze their occurrence, and we design ScEpTIC, an open-source tool to test intermittent programs. Building on our work on intermittence anomalies, we devise intermittence awareness, a program design pattern that intentionally allows the occurrence of specific intermittence anomalies to gain new information regarding intermittent executions of programs. We show the potential of intermittence awareness by designing an intermittence-aware technique that reduces the energy overhead required to preserve the computation achieved inside loops. On average, our technique demonstrates a 35.2x lower energy consumption and a 48.4x faster workload completion time. Next, we focus on improving the energy efficiency of mixed-volatile platforms, which feature a directly-addressable non-volatile memory location where developers can manually allocate portions of the program state. We design ALFRED, a virtual memory abstraction and compilation pipeline for mixed-volatile platforms that automatically identifies the most efficient mapping of the program state across volatile and non-volatile memory. Our experiments show that ALFRED reduces programs' energy consumption by up to two orders of magnitude. Finally, we focus on ensuring that battery-less devices always operate in the most efficient settings. We devise a system design to efficiently regulate supply voltage and clock frequency in highly resource-constrained battery-less devices. We then implement two hardware/software co-designs that capture these features. Our designs reduce battery-less devices' energy consumption by up to 170% and workload completion time by up to one order of magnitude.

I dispositivi senza batteria rappresentano una grande opportunità per una nuova Internet of Things sostenibile. Le tecniche di energy harvesting permettono di utilizzare l'energia presente nell'ambiente come unica fonte di alimentazione per i dispositivi dell’Internet of Things, eliminando l’utilizzo di batterie. I dispositivi senza batteria risultanti hanno un basso impatto ambientale e potenzialmente non richiedono alcuna manutenzione. Nonostante l’energia ambientale sia potenzialmente illimitata, essa è irregolare, imprevedibile e di solito non sufficiente per alimentare continuamente i dispositivi senza batteria. Conseguentemente, i dispositivi senza batteria subiscono frequenti ed imprevedibili interruzioni di energia, ed il loro modello di computazione diventa intermittente, dato che possono eseguire i loro programmi solo quando è disponibile energia sufficiente. La presenza di interruzioni di energia introduce nuove sfide connesse tra di loro. A differenza dei dispositivi comuni alimentati con fonti energetiche stabili, i dispositivi senza batteria consistono in microcontrollori ad alto risparmio energetico e con bassa potenza di calcolo, eseguono singoli programmi e non dispongono di un sistema operativo che gestisce le interruzioni di energia. Conseguentemente, quando i dispositivi senza batteria si spengono a causa di un’interruzione di energia, perdono lo stato computazionale e devono poi ricominciare la computazione da capo quando l’energia torna disponibile. Per garantire che i dispositivi senza batteria procedano nei loro programmi e producano risultati utili, devono periodicamente salvare lo stato del loro programma in una memoria non volatile, che non perde il suo contenuto quando il dispositivo si spegne. Ciò permette ai dispositivi senza batteria di ripristinare lo stato salvato quando l’energia torna disponibile. Nonostante questo meccanismo garantisca l'avanzamento del programma in caso di interruzioni di energia, i dispositivi senza batteria potrebbero presentare comportamenti imprevisti, producendo risultati diversi da quelli di un'esecuzione continua equivalente. Le operazioni richieste per garantire l’avanzamento del programma ed evitare comportamenti imprevisti incrementa il consumo energetico e la computazione effettuata dai dispositivi senza batteria, riducendone le loro prestazioni. Dato che queste operazioni sono necessarie per il corretto funzionamento dei dispositivi senza batteria, diventa necessaria una gestione efficiente dell’energia, in modo da poter estrarre il maggior quantitativo di computazione possibile dall'energia presente nell’ambiente. La ricerca di dottorato descritta in questa tesi affronta queste sfide e fornisce diversi contributi allo stato dell'arte. Per prima cosa, abbiamo lavorato alla prima implementazione pluriennale di dispositivi senza batteria che monitorano le condizioni strutturali di un sito archeologico. Abbiamo inizialmente utilizzato dei sensori alimentati unicamente con le batterie. A causa degli sforzi elevati e periodici richiesti per la sostituzione di quest’ultime, abbiamo deciso di passare a sistemi senza batteria alimentati unicamente con energia cinetica e termica. I dispositivi risultanti sono in grado di operare senza batterie, e non richiedono alcuna manutenzione. Nei nostri risultati abbiamo appurato che i dispositivi senza batteria da noi ideati forniscono informazioni comparabili ai sistemi alimentati a batteria, rispettando quindi i requisiti dell'utente finale. Successivamente, ci siamo focalizzati sulle anomalie da intermittenza, che corrispondono a comportamenti imprevisti dei dispositivi senza batterie, causati dalle interruzioni di energia. In questo lavoro, abbiamo classificato le anomalie da intermittenza e abbiamo identificato nuovi tipi di anomalie, precedentemente trascurati dalla letteratura esistente, che possono verificarsi quando i dispositivi senza batteria interagiscono con l’ambiente circostante. Abbiamo quindi ideato una serie di tecniche per verificare la presenza delle anomalie da intermittenza e abbiamo progettato ScEpTIC, uno strumento open source per testare i programmi intermittenti. Partendo del nostro lavoro sulle anomalie da intermittenza, abbiamo ideato un nuovo modello di programmazione per progettare i programmi eseguiti sui dispositivi senza batterie. Tale modello consente intenzionalmente il verificarsi di specifiche anomalie da intermittenza, al fine di ottenere nuove informazioni sull'esecuzione intermittente del programma. Per dimostrare l’efficacia di questo modello, lo abbiamo utilizzato per creare una tecnica che riduce il consumo energetico e il carico computazionale richiesti per preservare il calcolo effettuato all’interno di cicli. In media, la nostra tecnica dimostra un consumo energetico inferiore di 35.2 volte ed riduce il tempo di computazione di 48.4 volte. Successivamente, ci siamo concentrati sul miglioramento dell'efficienza energetica delle piattaforme a volatilità mista, che dispongono di una memoria non volatile direttamente indirizzabile dal microcontrollore, dove è possibile allocare manualmente parti dello stato del programma. Abbiamo quindi progettato ALFRED, che consiste in un’astrazione di programmazione basata sul concetto di memoria virtuale e in una pipeline di compilazione per piattaforme a volatilità mista. ALFRED identifica automaticamente qual è la mappatura più efficiente dello stato del programma tra la memoria volatile e non volatile. I nostri esperimenti mostrano che ALFRED riduce il consumo energetico dei programmi fino a due ordini di grandezza. Infine, ci siamo concentrati sull'assicurare che i dispositivi senza batteria funzionino sempre nelle impostazioni operazionali più efficienti. Abbiamo individuato un insieme di caratteristiche necessarie a regolare in modo efficiente la tensione di alimentazione e la frequenza di clock in dispositivi senza batteria con risorse limitate. Abbiamo poi progettato due sistemi che catturano queste caratteristiche. Nei nostri esperimenti, i nostri sistemi riducono il consumo energetico dei dispositivi senza batteria fino al 170% e il tempo di completamento dei fino a un ordine di grandezza.

Breaking programming abstractions boundaries to increase the efficiency of intermittently-powered computers

Maioli, Andrea
2022/2023

Abstract

Battery-less devices represent a great opportunity to enable a sustainable Internet of Things: ambient energy harvesting replaces batteries, leading to zero-maintenance systems with a low environmental impact. However, despite potentially supplying unlimited free energy, ambient energy is irregular, unpredictable, and usually insufficient to power battery-less devices continuously. Therefore, battery-less devices experience frequent and unpredictable energy failures that lead to intermittent computation, as devices compute only when sufficient energy is available. The presence of energy failures introduces several connected challenges. Unlike mainstream platforms, battery-less devices consist of highly constrained microcontroller units that run single non-concurrent programs and lack an operating system to manage energy failures. Therefore, when battery-less devices shut down due to energy failures, they lose the computational state and, in the next power cycle, they restart the computation all over again. To ensure battery-less devices progress in their programs, they periodically need to save their program state onto a non-volatile memory location, which is persistent across energy failures, to restore it when the energy returns. Although this ensures program forward progress across energy failures, battery-less devices may experience unexpected behaviors, producing results that differ from those of an equivalent continuous execution. Ensuring program forward progress and avoiding unexpected behaviors introduce energy and computation overhead detrimental to battery-less devices' performance. Therefore, efficient energy management becomes essential to extract the most possible work from harvested energy, as it supplies an unpredictable, limited, and scarce amount of energy. The PhD research described in this thesis tackles these challenges and provides several contributions to the state of the art. We first work on the first multi-year deployment of battery-less devices that monitor the structural conditions of an archeological site. We devise three system design iterations, where we initially deploy battery-powered systems. Due to the high maintenance efforts of frequent battery replacements, we eventually switched to battery-less systems powered with kinetic and thermal energy. Our final design achieves zero-maintenance battery-less operations without compromising end-user requirements, as its sensed data provides comparable insights to battery-powered systems. We then target intermittence anomalies, consisting of unexpected behaviors caused by energy failures. We classify intermittence anomalies and identify new types of anomalies previously overlooked by existing literature, which may happen whenever devices interact with the environment. We devise a set of techniques to analyze their occurrence, and we design ScEpTIC, an open-source tool to test intermittent programs. Building on our work on intermittence anomalies, we devise intermittence awareness, a program design pattern that intentionally allows the occurrence of specific intermittence anomalies to gain new information regarding intermittent executions of programs. We show the potential of intermittence awareness by designing an intermittence-aware technique that reduces the energy overhead required to preserve the computation achieved inside loops. On average, our technique demonstrates a 35.2x lower energy consumption and a 48.4x faster workload completion time. Next, we focus on improving the energy efficiency of mixed-volatile platforms, which feature a directly-addressable non-volatile memory location where developers can manually allocate portions of the program state. We design ALFRED, a virtual memory abstraction and compilation pipeline for mixed-volatile platforms that automatically identifies the most efficient mapping of the program state across volatile and non-volatile memory. Our experiments show that ALFRED reduces programs' energy consumption by up to two orders of magnitude. Finally, we focus on ensuring that battery-less devices always operate in the most efficient settings. We devise a system design to efficiently regulate supply voltage and clock frequency in highly resource-constrained battery-less devices. We then implement two hardware/software co-designs that capture these features. Our designs reduce battery-less devices' energy consumption by up to 170% and workload completion time by up to one order of magnitude.
PIRODDI, LUIGI
MIRANDOLA, RAFFAELA
12-lug-2023
I dispositivi senza batteria rappresentano una grande opportunità per una nuova Internet of Things sostenibile. Le tecniche di energy harvesting permettono di utilizzare l'energia presente nell'ambiente come unica fonte di alimentazione per i dispositivi dell’Internet of Things, eliminando l’utilizzo di batterie. I dispositivi senza batteria risultanti hanno un basso impatto ambientale e potenzialmente non richiedono alcuna manutenzione. Nonostante l’energia ambientale sia potenzialmente illimitata, essa è irregolare, imprevedibile e di solito non sufficiente per alimentare continuamente i dispositivi senza batteria. Conseguentemente, i dispositivi senza batteria subiscono frequenti ed imprevedibili interruzioni di energia, ed il loro modello di computazione diventa intermittente, dato che possono eseguire i loro programmi solo quando è disponibile energia sufficiente. La presenza di interruzioni di energia introduce nuove sfide connesse tra di loro. A differenza dei dispositivi comuni alimentati con fonti energetiche stabili, i dispositivi senza batteria consistono in microcontrollori ad alto risparmio energetico e con bassa potenza di calcolo, eseguono singoli programmi e non dispongono di un sistema operativo che gestisce le interruzioni di energia. Conseguentemente, quando i dispositivi senza batteria si spengono a causa di un’interruzione di energia, perdono lo stato computazionale e devono poi ricominciare la computazione da capo quando l’energia torna disponibile. Per garantire che i dispositivi senza batteria procedano nei loro programmi e producano risultati utili, devono periodicamente salvare lo stato del loro programma in una memoria non volatile, che non perde il suo contenuto quando il dispositivo si spegne. Ciò permette ai dispositivi senza batteria di ripristinare lo stato salvato quando l’energia torna disponibile. Nonostante questo meccanismo garantisca l'avanzamento del programma in caso di interruzioni di energia, i dispositivi senza batteria potrebbero presentare comportamenti imprevisti, producendo risultati diversi da quelli di un'esecuzione continua equivalente. Le operazioni richieste per garantire l’avanzamento del programma ed evitare comportamenti imprevisti incrementa il consumo energetico e la computazione effettuata dai dispositivi senza batteria, riducendone le loro prestazioni. Dato che queste operazioni sono necessarie per il corretto funzionamento dei dispositivi senza batteria, diventa necessaria una gestione efficiente dell’energia, in modo da poter estrarre il maggior quantitativo di computazione possibile dall'energia presente nell’ambiente. La ricerca di dottorato descritta in questa tesi affronta queste sfide e fornisce diversi contributi allo stato dell'arte. Per prima cosa, abbiamo lavorato alla prima implementazione pluriennale di dispositivi senza batteria che monitorano le condizioni strutturali di un sito archeologico. Abbiamo inizialmente utilizzato dei sensori alimentati unicamente con le batterie. A causa degli sforzi elevati e periodici richiesti per la sostituzione di quest’ultime, abbiamo deciso di passare a sistemi senza batteria alimentati unicamente con energia cinetica e termica. I dispositivi risultanti sono in grado di operare senza batterie, e non richiedono alcuna manutenzione. Nei nostri risultati abbiamo appurato che i dispositivi senza batteria da noi ideati forniscono informazioni comparabili ai sistemi alimentati a batteria, rispettando quindi i requisiti dell'utente finale. Successivamente, ci siamo focalizzati sulle anomalie da intermittenza, che corrispondono a comportamenti imprevisti dei dispositivi senza batterie, causati dalle interruzioni di energia. In questo lavoro, abbiamo classificato le anomalie da intermittenza e abbiamo identificato nuovi tipi di anomalie, precedentemente trascurati dalla letteratura esistente, che possono verificarsi quando i dispositivi senza batteria interagiscono con l’ambiente circostante. Abbiamo quindi ideato una serie di tecniche per verificare la presenza delle anomalie da intermittenza e abbiamo progettato ScEpTIC, uno strumento open source per testare i programmi intermittenti. Partendo del nostro lavoro sulle anomalie da intermittenza, abbiamo ideato un nuovo modello di programmazione per progettare i programmi eseguiti sui dispositivi senza batterie. Tale modello consente intenzionalmente il verificarsi di specifiche anomalie da intermittenza, al fine di ottenere nuove informazioni sull'esecuzione intermittente del programma. Per dimostrare l’efficacia di questo modello, lo abbiamo utilizzato per creare una tecnica che riduce il consumo energetico e il carico computazionale richiesti per preservare il calcolo effettuato all’interno di cicli. In media, la nostra tecnica dimostra un consumo energetico inferiore di 35.2 volte ed riduce il tempo di computazione di 48.4 volte. Successivamente, ci siamo concentrati sul miglioramento dell'efficienza energetica delle piattaforme a volatilità mista, che dispongono di una memoria non volatile direttamente indirizzabile dal microcontrollore, dove è possibile allocare manualmente parti dello stato del programma. Abbiamo quindi progettato ALFRED, che consiste in un’astrazione di programmazione basata sul concetto di memoria virtuale e in una pipeline di compilazione per piattaforme a volatilità mista. ALFRED identifica automaticamente qual è la mappatura più efficiente dello stato del programma tra la memoria volatile e non volatile. I nostri esperimenti mostrano che ALFRED riduce il consumo energetico dei programmi fino a due ordini di grandezza. Infine, ci siamo concentrati sull'assicurare che i dispositivi senza batteria funzionino sempre nelle impostazioni operazionali più efficienti. Abbiamo individuato un insieme di caratteristiche necessarie a regolare in modo efficiente la tensione di alimentazione e la frequenza di clock in dispositivi senza batteria con risorse limitate. Abbiamo poi progettato due sistemi che catturano queste caratteristiche. Nei nostri esperimenti, i nostri sistemi riducono il consumo energetico dei dispositivi senza batteria fino al 170% e il tempo di completamento dei fino a un ordine di grandezza.
File allegati
File Dimensione Formato  
phd-thesis-maioli.pdf

accessibile in internet per tutti

Descrizione: PhD Thesis
Dimensione 7.08 MB
Formato Adobe PDF
7.08 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/207541