designing predictable and robust systems

48
Designing Predictable and Robust Systems Tom Henzinger UC Berkeley and EPFL

Upload: gay-calhoun

Post on 30-Dec-2015

29 views

Category:

Documents


0 download

DESCRIPTION

Designing Predictable and Robust Systems. Tom Henzinger UC Berkeley and EPFL. Complexity Management in System Design. Bridge Aircraft Software etc. System. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Designing                                 Predictable and Robust Systems

Designing Predictable and Robust Systems

Tom Henzinger UC Berkeley and EPFL

Page 2: Designing                                 Predictable and Robust Systems

System

Build & test

Bridge Aircraft Software etc.

Complexity Management in System Design

Page 3: Designing                                 Predictable and Robust Systems

System

Model

Calculate

Build & test

Abstract Predict

Applied Mathematics

Bridge Aircraft Software etc.

Complexity Management in System Design

Page 4: Designing                                 Predictable and Robust Systems

Engineering

Differential Equations Linear Algebra Probability Theory

Computer Science

Logic Discrete Structures Automata Theory

Mathematical Modeling: A Tale of Two Cultures

Page 5: Designing                                 Predictable and Robust Systems

Uptime: 125 years

Page 6: Designing                                 Predictable and Robust Systems
Page 7: Designing                                 Predictable and Robust Systems

Uptime: 125 years

Why can’t we do Software?

Page 8: Designing                                 Predictable and Robust Systems

Engineering

Theories of estimation. Theories of robustness.

Computer Science

Theories of correctness.

Why can’t we do Software?

R B

Page 9: Designing                                 Predictable and Robust Systems

Engineering

Theories of estimation. Theories of robustness.

Goal: build reliable systems.

Computer Science

Theories of correctness.

Temptation: programs are mathematical objects; hence we want to prove them correct.

Why can’t we do Software?

Page 10: Designing                                 Predictable and Robust Systems

B

Engineering Computer Science

The CHESS Premise: The pendulum has swung too far

R

Page 11: Designing                                 Predictable and Robust Systems

B

Engineering Computer Science

Embedded Systems are a perfect playground to readjust the pendulum.

RPhysicality Computation

The CHESS Premise: The pendulum has swung too far

Page 12: Designing                                 Predictable and Robust Systems

EmbeddedSystem

Execution constraints

CPU speed power failure rates

Reaction constraints

deadlines throughput jitter

Computation

algorithms protocols reuse

Page 13: Designing                                 Predictable and Robust Systems

EmbeddedSystem

Execution constraints

CPU speed power failure rates

Reaction constraints

deadlines throughput jitter

Computation

algorithms protocols reuse

Embedded System Design is generalized hardware design (e.g. System C).

Page 14: Designing                                 Predictable and Robust Systems

EmbeddedSystem

Execution constraints

CPU speed power failure rates

Reaction constraints

deadlines throughput jitter

Computation

algorithms protocols reuse

Embedded System Design is generalized control design (e.g. Matlab Simulink).

Page 15: Designing                                 Predictable and Robust Systems

EmbeddedSystem

Execution constraints

CPU speed power failure rates

Reaction constraints

deadlines throughput jitter

Computation

algorithms protocols reuse

Embedded System Design is generalized software design (e.g. RT Java).

Page 16: Designing                                 Predictable and Robust Systems

EmbeddedSystem

Execution constraints

CPU speed power failure rates

Reaction constraints

deadlines throughput jitter

Computation

algorithms protocols reuse

CHESS

Page 17: Designing                                 Predictable and Robust Systems

We need a new formal foundation for embedded systems, which systematically and even-handedly re-marries

computation and physicality.

The CHESS Challenge

Page 18: Designing                                 Predictable and Robust Systems

CHESS Results: Integration of the Two Cultures

Engineering

Component model: transfer function Composition: parallel Connection: data flow

Computer Science

Component model: subroutine Composition: sequential Connection: control flow

[Hybrid Systems; Ptolemy; Metropolis; Metamodels]

Page 19: Designing                                 Predictable and Robust Systems

Equational Models

Strengths:

Concurrency Quantitative constraints (time, power, QoS)

Tool support:

Best-effort design Optimization

Abstract-Machine Models

Dynamic change Complexity theory

Worst-case analysis Constraint satisfaction

CHESS Results: Integration of the Two Cultures

Engineers must understand both complexities and trade-offs [EECS 20].

Page 20: Designing                                 Predictable and Robust Systems

We need a new formal foundation for computational systems, which systematically and even-handedly re-marries

performance and robustness.

The Cyber-Physical Challenge

What is being computed? At what cost?

How does the performance change under disturbances? (wrong assumptions; change of environment; change of resources; failures; attacks)

Page 21: Designing                                 Predictable and Robust Systems

We need a new formal foundation for computational systems, which systematically and even-handedly re-marries

performance and robustness.

The Cyber-Physical Challenge

Subchallenge 1: build predictable software

Subchallenge 2: build robust software

Page 22: Designing                                 Predictable and Robust Systems

Subchallenge 1: Build Predictable Software

Page 23: Designing                                 Predictable and Robust Systems

Subchallenge 1: Build Predictable Software

Predictable = Deterministic

A system is deterministic if for every input behavior, the output behavior is unique.

Page 24: Designing                                 Predictable and Robust Systems

Subchallenge 1: Build Predictable Software

Predictable = Deterministic

A system is deterministic if for every input behavior, the output behavior is unique.

-internal (invisible) behavior need not be unique

-behavior includes all nonfunctional aspects of interest: for real-time systems, behavior includes time stamps

Page 25: Designing                                 Predictable and Robust Systems

Nondeterminism

Central to complexity theory: P v. NP

Central to abstraction:

-high-level programming languages: e.g. memory management

-algorithm design: as long as there exists an 0·i<n such that a[i]>a[i+1], swap a[i] and a[i+1]

-don’t cares: if input=0, then output=?

Central to concurrency: a||b = ab + ba

Page 26: Designing                                 Predictable and Robust Systems

Nondeterminism

Central to complexity theory: P v. NP

Central to abstraction:

-high-level programming languages: e.g. memory management

-algorithm design: as long as there exists an 0·i<n such that a[i]>a[i+1], swap a[i] and a[i+1]

-don’t cares: if input=0, then output=?

Central to concurrency: a||b = ab + ba

invisible

invisible

invisible

deterministic

Page 27: Designing                                 Predictable and Robust Systems

Nondeterminism

Central to complexity theory: P v. NP

Central to abstraction:

-high-level programming languages: e.g. memory management

-algorithm design: as long as there exists an 0·i<n such that a[i]>a[i+1], swap a[i] and a[i+1]

-don’t cares: if input=0, then output=?

Central to concurrency: a||b = ab + ba

invisible

invisible

invisible

deterministic

visible

a: x := x+1 b: x := 2x

Page 28: Designing                                 Predictable and Robust Systems

Nondeterminism

Central to complexity theory: P v. NP

Central to abstraction:

-high-level programming languages: e.g. memory management

-algorithm design: as long as there exists an 0·i<n such that a[i]>a[i+1], swap a[i] and a[i+1]

-don’t cares: if input=0, then output=?

Central to concurrency: a||b = ab + ba

Alternatives to threads:

actor models; transactional memory

invisible

invisible

invisible

deterministic

visible

less nondeterministic

Page 29: Designing                                 Predictable and Robust Systems

Can we build a real-time programming language that treats time in the way in which high-level languages treat memory?

-programmer specifies the time of outputs

-programmer assumes the platform offers sufficient performance

-compiler generates a suitable schedule or throws an exception

Page 30: Designing                                 Predictable and Robust Systems

The LET (Logical Execution Time) Programming Model

Software Task

read sensor input at time t

write actuator output at time t+d, for specified d

Page 31: Designing                                 Predictable and Robust Systems

time t time t+d

real execution on CPU buffer output

The LET (Logical Execution Time) Programming Model

Page 32: Designing                                 Predictable and Robust Systems

50% CPU speedup

Portability

Page 33: Designing                                 Predictable and Robust Systems

Task 2

Task 1

Composability

Page 34: Designing                                 Predictable and Robust Systems

Timing predictability: minimal jitter Function predictability: no race conditions

Determinism

Page 35: Designing                                 Predictable and Robust Systems

make output available as soon as ready

Contrast LET with Standard Practice

Page 36: Designing                                 Predictable and Robust Systems

data race

Contrast LET with Standard Practice

Page 37: Designing                                 Predictable and Robust Systems

But what about performance?

The Giotto project at UC Berkeley.

Page 38: Designing                                 Predictable and Robust Systems

Can we build a programming language that treats reliability in the way in which high-level languages treat memory?

-programmer specifies the mean-time to failure for outputs

-programmer assumes the platform offers sufficient reliability

-compiler generates a task replication mapping or rejects the program

[HTL project: Chatterjee et al.]

Page 39: Designing                                 Predictable and Robust Systems

Subchallenge 2: Build Robust Software

Page 40: Designing                                 Predictable and Robust Systems

Subchallenge 2: Build Robust Software

Robust = Continuous

A system is continuous if for all real-valued quantities, small input changes cause small output changes.

Page 41: Designing                                 Predictable and Robust Systems

Subchallenge 2: Build Robust Software

Robust = Continuous

A system is continuous if for all real-valued quantities, small input changes cause small output changes.

-8 >0. 9 >0. input-change · ) output-change ·

-can apply only to real-valued quantities: sensor readings and actuator settings; input and output time stamps

Page 42: Designing                                 Predictable and Robust Systems

A Program

kbfilter.c 12,000 lines of code

Page 43: Designing                                 Predictable and Robust Systems

A Program

kbfilter.c 12,000 lines of code

Page 44: Designing                                 Predictable and Robust Systems

A Program

kbfilter.c 12,000 lines of code

r

Page 45: Designing                                 Predictable and Robust Systems

An Error Trace

In general, programs are not continuous.

Page 46: Designing                                 Predictable and Robust Systems

More continuous:

read sensor value x at time t;compute “continuous” function y = f(x);write output value y at time t+d;

Less continuous:

read sensor value x; if x · c then ... else ...

Page 47: Designing                                 Predictable and Robust Systems

More continuous:

read sensor value x at time t;compute “continuous” function y = f(x);write output value y at time t+d;

Less continuous:

read sensor value x; if x · c then ... else ...

We need system preference metrics in addition to boolean correctness criteria.

[A Discounted Theory of Systems: de Alfaro et al.]

Page 48: Designing                                 Predictable and Robust Systems

Summary

1. We need high-level programming models for building deterministic systems from nondeterministic parts.

2. We need system preference metrics for building continuous systems from noncontinuous parts.