solving the system challenges of intermittent energy ...€¦ · 06/06/2018  · nv for( i = 1)...

53
Solving the System Challenges of Intermittent Energy-harvesting Devices Brandon Lucia | Assistant Professor, CMU ECE ABSTRACT Research Group - https:// intermittent.systems with PhD Students: Alexei Colin, Kiwan Maeng, Emily Ruppel, Vignesh Balaji Graham Gobieski, Milijana Surbatovich MS Students: Preeti Murthy, Amanda Marano, Neil Ryan, Devon White, Chris Meredith BS Students: Graham Harvey, Mark McElwaine, Hannah Tomio Industry Collaborators: Zac Manchester (Harvard/KickSat) Alanson Sample (Disney Research Pittsburgh)

Upload: others

Post on 12-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Solving the System Challenges ofIntermittent Energy-harvesting DevicesBrandon Lucia | Assistant Professor, CMU ECEABSTRACT Research Group - https://intermittent.systemswith PhD Students: Alexei Colin, Kiwan Maeng, Emily Ruppel, Vignesh Balaji

Graham Gobieski, Milijana SurbatovichMS Students: Preeti Murthy, Amanda Marano, Neil Ryan, Devon White, Chris MeredithBS Students: Graham Harvey, Mark McElwaine, Hannah TomioIndustry Collaborators: Zac Manchester (Harvard/KickSat)

Alanson Sample (Disney Research Pittsburgh)

Page 2: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 2

Wearables, sensors, “Internet of Things”, tiny satellites, medical

implants, environmental monitoring, security, computational art,

interactive clothing, smart furniture, smart carpets, smart toilet paper

Emerging Devices Everywhere

Page 3: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 4

Tethered to a power source

Page 4: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 6

computer (microcontroller)

energy buffer (capacitor)

energy receiver

energy source

Energy harvesting untethers devices

empty space

Page 5: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 7

Page 6: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing

computer (microcontroller)

energy buffer (capacitor)

energy receiver

8

energy source

empty space

…but energy is intermittentsoftware becomes inherently unreliable.

—and as a result—

Page 7: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 9

Designing for IntermittenceSystem Support for Reliable Intermittence

The Intermittent Execution ModelReasoning About Intermittently-powered Devices

Intermittent Computing PlatformsHardware, Programming Models, System Software

Page 8: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 10

RF Available!

Running on intermittent energy

Available

Energy

Time

Charging, dead.

Page 9: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 11

Running on intermittent energy

Available

Energy

Time

“Life Line”

Operating!

Page 10: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 12

Running on intermittent energy

Available

Energy

Time

“Death Line”Not charging, dead.

Page 11: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 13

Running on intermittent energy

RF Available!

Available

Energy

Time

Charging, dead.

Page 12: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 14

Running on intermittent energy

RF Available!

Available

Energy

Time

“Life Line”

Operating!

Page 13: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 15

Available

Energy

Time

“Death Line”

Computer

shuts down

Computer

reboots

“Life Line”

Intermittent Operation on Harvested Energy

Page 14: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 16

Available

Energy

Time

Compute ComputeRebootReboot

Page 15: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 17

Time

Compute Reboot Compute

The Intermittent Execution Model[PLDI ’15]

Page 16: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 18

Time

The Intermittent Execution Model

Goal: Run programs that take longer than one green box

[PLDI ’15]

Page 17: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 19

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

/*Store a letter ‘a’ in buf[sz]

and increase sz by one*/

/*Store 10 letters ‘a’ in the buffer*/

Page 18: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 20

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

for( i = 1 )

append()sz++

buf[sz] = ‘a’

for( i = 2 )

append()sz++

buf[sz] = ‘a’

REBOOT

Page 19: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 21

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

for( i = 1 )

append()

for( i = 1 )

append()sz++

buf[sz] = ‘a’

for( i = 2 )

append()sz++

buf[sz] = ‘a’

REBOOT

REBOOT

Page 20: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 22

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

for( i = 1 )

append()

for( i = 2 )

append()

for( i = 3 )

append()

sz++

buf[sz] = ‘a’

sz++

buf[sz] = ‘a’

sz++

buf[sz] = ‘a’

for( i = 1 )

append()

for( i = 1 )

append()sz++

buf[sz] = ‘a’

for( i = 2 )

append()sz++

buf[sz] = ‘a’

REBOOT

REBOOT

REBOOT

Page 21: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 23

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

main()append()

for( i = …)

call append()

<loop>

end of main()

Control-flow Graph

buf[sz] = ‘a’

sz++

We can model intermittence as a control-flow problem

Page 22: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 24

main()append()

for( i = …)

call append()

<loop>

end of main()

Control-flow Graph

Failure Induces

Implicit Control-flow

Intermittent Execution

Challenge:

Implicit control-flow

“back in time” on reboot.

buf[sz] = ‘a’

sz++

Back in time!

Page 23: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 25

Mixture of Volatile & Non-volatile State

volatile memory (e.g.,

DRAM, SRAM registers)

non-volatile memory

(e.g., Flash, FRAM)

Access latencies growing

similar w/ new technology

Page 24: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 26

Time

Reboots clear volatile state and

preserve non-volatile state

Persists!

Volatile

State

Non-volatile

State

Clear! Clear! Clear! Clear!

Page 25: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 27

main()append()

for( i = …)

call append()

<loop>

end of main()

Control-flow Graph

Checkpoint introduce more

compleximplicit control-flow

Intermittent Execution

Challenge:

Implicit control-flow

“back in time” on reboot.

buf[sz] = ‘a’

sz++

Checkpoint Volatile State

Page 26: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 28

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

for( i = 1 )

append()

for( i = 2 )

append()

for( i = 3 )

append()

sz++

buf[sz] = ‘a’

sz++

buf[sz] = ‘a’

sz++

buf[sz] = ‘a’

for( i = 1 )

append()

for( i = 1 )

append()sz++

buf[sz] = ‘a’

for( i = 2 )

append()sz++

buf[sz] = ‘a’

REBOOT

REBOOT

REBOOT

The way we think about software doeswork with the intermittent execution model

The Big Idea

Page 27: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 29

void main(void){

for( i = 1 .. 10)

append()

}

void append(){

sz++

buf[sz] = ‘a’

}

for( i = 1 )

append()

for( i = 2 )

append()

for( i = 3 )

append()

sz++

buf[sz] = ‘a’

sz++

buf[sz] = ‘a’

sz++

buf[sz] = ‘a’

for( i = 1 )

append()

for( i = 1 )

append()sz++

buf[sz] = ‘a’

for( i = 2 )

append()sz++

buf[sz] = ‘a’

REBOOT

REBOOT

REBOOT

Software that is correct with continuous power

can be incorrect due to intermittent execution

especially when we combine non-volatileand volatile memory!

Challenge: Intermittence Bugs

+

Page 28: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 30

Page 29: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 31

main()append()

for( i = …)

call append()

<loop>

end of main()

buf[sz] = ‘a’

sz++

Intermittence Bug: Out-of-thin-air Values

sz

buf

-1

ckpt

[MSPC ’14; PLDI ‘15]

Page 30: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 32

main()append()

for( i = …)

call append()

<loop>

end of main()

buf[sz] = ‘a’

sz++

for( i = 1)

sz

buf

0

call append()sz++buf[sz] = ‘a’

‘a’

Intermittence Bug: Out-of-thin-air Values[MSPC ’14; PLDI ‘15]

Page 31: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 33

main()append()

for( i = …)

call append()

<loop>

end of main()

buf[sz] = ‘a’

sz++

sz

buf

1

‘a’

Error: ’a’ is appended to buf

twice on the i = 1 iteration

for( i = 1)

call append()sz++buf[sz] = ‘a’

for( i = 1)

call append()sz++buf[sz] = ‘a’

‘a’

Intermittence Bug: Out-of-thin-air Values[MSPC ’14; PLDI ‘15]

Page 32: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 34

for( i = 1)

call append()sz++buf[sz] = ‘a’

for( i = 1)

call append()sz++buf[sz] = ‘a’

Stuck in an implicit

loop for i = 1

for( i = 1)

call append()sz++buf[sz] = ‘a’

for( i = 1)

call append()sz++buf[sz] = ‘a’

for( i = 1)

call append()sz++buf[sz] = ‘a’

call append()

buf[sz] = ‘a’

sz++

for( i = 1)

Intermittence Bug: Out-of-thin-air Values[MSPC ’14; PLDI ‘15]

Page 33: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 35

sz

buf

11

‘a’‘a’ ‘a’‘a’‘a’‘a’ ‘a’‘a’ ‘a’‘a’ ‘a’‘a’

Stuck in an implicit

loop for i = 1

call append()

buf[sz] = ‘a’

sz++

for( i = 1)

Memory contents depend on the availability of

harvestable energy and capacitor size!

sz & buf contain corrupt values.

“Out of thin air” value not permitted by any

continuous execution!

Intermittence Bug: Out-of-thin-air Values[MSPC ’14; PLDI ‘15]

Page 34: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 37

main()hicost()

for( i = …)

call hicost()

<loop>

end of main()

bar()

foo()

NV

for( i = 1)

call hicost()

call foo()

call bar()

Energy cost atomic span exceeds energy capacity

Intermittence Bug: Livelock & Non-termination

Affected code need not even

modify NV storage!

[Colin, et al. CASES ’15, ASPLOS ‘16]

Code that is correct with continuous power

reboots indefinitely on intermittent power.

If energy cost exceeds

full capacitor charge:

never completes 1 iteration

for( i = 1)

call hicost()call foo()

call bar()

Page 35: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 38

main()

checkpoint

Sense_pressure()

end of main()

Checkpoint between I/O operations that should

execute together leaves I/O inconsistent

Intermittence Bug: I/O Atomicity

Inconsistent data read at different moments in time

No atomicity control w/ automatic checkpoints

Sense_temp()

checkpoint

Sense_pressure()restore

Sense_temp()

A very long time …

[Colin OOPSLA ’16, Maeng OOPSLA ‘17, Hester et al SenSys ‘17]

Page 36: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 39

Intermittent software is

unreliable.

Need easy programming

and reliable execution

Page 37: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 40

Reliable Intermittent ExecutionTask-based Programming Models

Page 38: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 41

DinoArbitrary Task-based Intermittent Programming [PLDI’15]

ChainTask-based Intermittence w/ Static Data Duplication [OOPSLA’16]

AlpacaTask-based Intermittence w/ Dynamic Privatization [OOPSLA’17]

Page 39: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 42

Task-atomic Execution in DINO

Task Boundary

Task Boundary

Task Boundary

Task

Task Task

Task

Tasks have atomic all-or-

nothing semantics

Task boundaries selectively

checkpoint volatile and

non-volatile state

No implicit control-flow!

[PLDI ’15]

Page 40: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 43

for( i = 1)

call append()buf[sz] = ‘a’

sz++

task_boundary

for( i = 2)

task_boundary

call append()

sz++

task_boundary

-1sz

buf

0sz

-1sz

buf

‘a’

0sz

buf

buf[sz] = ‘a’‘a’buf Implicit Loop!

Checkpoint

Correctly UpdatedOnly Once!

DINO Eliminates OoTA Values

Checkpoint captures

buf and sz

Restore buf and sz!

[PLDI ’15]

Implicit flow targetmade explicit

Page 41: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 47

task_boundary

i = rand(…)

NV_Array[i]++;

task_boundary

NV_Array[1000000] = {0};

NV_Array[1000000] = {…};

int NV_Array[1000000];

task_boundary

i = rand(1000000);

NV_Array[i]++;

task_boundary

NV-data flow!

What data to include in checkpoint?

All NV data that may be accessed before a reboot, plus volatile.

NV-data flow!

…1,000,000

Compiler cannot know i in advance! Must version all of NV_Array.

Page 42: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 48

Task size (# memory updates)

Checkpointing Overhead

Task Size Limitation

Page 43: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 49

Chain: Static data multi-versioning

out in in

Task

Channels statically multiversion data

separating inputs from outputs

[Colin, et al OOPSLA ’16]

Tasks exchange data via abstract

channels of non-volatile memory

out

Task

Task

Task

Programmer explicitly defines tasks

and task-flow graph in code

Key limitation: Programmer must

learn new programming model

Page 44: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 50

Task

Compiler adds code to automatically

commit copied state back to main memory

[Maeng, et al OOPSLA ’17]

Task

Task

Task

Compiler automatically privatizes data

creating a copy safe to use in a task.

Alpaca: Tasks with Dynamic Privatization

Privatize

Commit

Alpaca tasks are restartable

without a checkpoint of volatile state

Page 45: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 55

Prototype Implementations

DINO, Chain, Alpaca

Programming

Model

Task-aware

Compiler

Task Data-flow Analysis

Link to Task Runtime

Channels, Versioning,

Privatization

Task, Channel Definitions

Runtime Library

DINO: Checkpoint & Recovery

Chain: Task Management

Alpaca: Privatization/Commit

Page 46: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 56

Energy-harvesting

Platform Prototypes

WISP5 Energy-harvesting Device

RF Power Setup

ApplicationsActivity Recognition

(accelerometer+ML)

Cold-chain Equipment Monitor

Multi-granular Sensor Log

Key Result:Applications suffer errors & failures

without our system support for tasks

MIDI Natural User Interface

Custom PCBs

Page 47: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 57

0

2

4

6

8

10

12

14

16

18

CEM AR RSA CF BF BC

No

rma

lize

d R

un

Tim

e (

Lo

we

r is

Bett

er)

Alpaca Chain DINO

Alpaca outperforms DINO and Chain

Page 48: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 61

[Lucia, et al PLDI ’15]

Use Alpaca, Chain and DINO for your research!

http://intermittent.systems | http://github.com/CMUAbstract

https://cmuabstract.github.io/alpaca-

landing-page/

Page 49: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing

62

Intermittent Computing PlatformsHardware, Programming Models, System Software

Page 50: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 63

Key Insight: Co-design PL, OS, Arch, and power system for intermittent operation

Intermittence-safe HW/SW Systems [ASPLOS 2018]

EDBSat Chip-scale

satellite• 3cmx3cmx4mm, solar power

• Magnetometer + gyro sensors

• Low-power radio (to earth)

• Custom “burst” power system

• Integrated HW/SW diagnostics

• Programmed in intermittence-

safe Chain programming lang.

• Launch partner: KickSat/NASA

• 5cmx5cm, solar/RF power

• 10 sensor array

• Bluetooth Low-energy Radio

• Software-switchable variable-

capacity “burst” power system

• Integrated HW/SW diagnostics

• Supports Alpaca & Chain

intermittent programming langs.

Capybara multi-

sensor platform

Page 51: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 79

Page 52: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Brandon Lucia - Carnegie Mellon University - Challenges of Intermittent Computing 81

Designing for IntermittenceSystem Support for Reliable Intermittence

The Intermittent Execution ModelReasoning About Intermittently-powered Devices

Intermittent Computing PlatformsHardware, Programming Models, System Software

Page 53: Solving the System Challenges of Intermittent Energy ...€¦ · 06/06/2018  · NV for( i = 1) call hicost() call foo() call bar() Energy cost atomic span exceeds energy capacity

Solving the System Challenges ofIntermittent Energy-harvesting DevicesBrandon Lucia | Assistant Professor, CMU ECEABSTRACT Research Group - https://intermittent.systemswith PhD Students: Alexei Colin, Kiwan Maeng, Emily Ruppel, Vignesh Balaji

Graham Gobieski, Milijana SurbatovichMS Students: Preeti Murthy, Amanda Marano, Neil Ryan, Devon White, Chris MeredithBS Students: Graham Harvey, Mark McElwaine, Hannah TomioIndustry Collaborators: Zac Manchester (Harvard/KickSat)

Alanson Sample (Disney Research Pittsburgh)