modeling the os/hardware interface with sockeye · modeling the os/hardware interface with sockeye....

42
26.01.2018 ENTROPY 2018 1 | | David Cock Systems Group, D-INFK, ETH Zürich David Cock, ETH Zürich [email protected] Modeling the OS/Hardware Interface with Sockeye

Upload: truongxuyen

Post on 30-Aug-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

26.01.2018ENTROPY 2018 1| |David CockSystems Group, D-INFK, ETH Zürich

David Cock, ETH Zü[email protected]

Modeling the OS/Hardware Interface with Sockeye

26.01.2018ENTROPY 2018 2| |David CockSystems Group, D-INFK, ETH Zürich

Specifying HW for Systems and Verification

Headerfiles

Platorm model

Prologfacts

Proofs

FPGAcircuit

Programsketch of

device

Program synthesis

Theorem prover

Correct compiler

Runtimeassertions

Statich/w

config

Codefor

dynamic config

checking software

+

+

orFormal spec. of platform

Hardware discovery

Sockeyecompiler

26.01.2018ENTROPY 2018 3| |David CockSystems Group, D-INFK, ETH Zürich

Overview

Specification gap between ISA and HDL

Hardware is weird.

OS coding & verification have similar needs: What does the hardware do?

How do I control it?

What do I do when it changes?

Work in progress

26.01.2018ENTROPY 2018 4| |David CockSystems Group, D-INFK, ETH Zürich

Barrelfish

Memory addressing

Interrupt routing and

delivery

Intra-machine control plane

Tasteful hardware

design

Distributed capability-

based protection

Provable isolation

properties

DanielSchwyn

RetoAchermann

LukasHumbel

RoniHaecki

SimonGerber

DavidCock

26.01.2018ENTROPY 2018 5| |David CockSystems Group, D-INFK, ETH Zürich

Computer Systems, A Programmer's Perspectie, Bryant & O'Halàlàaron, 2011

26.01.2018ENTROPY 2018 6| |David CockSystems Group, D-INFK, ETH Zürich

Abstractons make incorrect assumptons

System sofware ierifcaton requires a sound system hardware modelà

Hardware can be automatcalàlày confgured, given a good enough model.

Why do we need a formalà modelà for memory accesses and interrupts?

26.01.2018ENTROPY 2018 7| |David CockSystems Group, D-INFK, ETH Zürich

0 4G2G 3G1GPhysical Addresses

How I Picture a Computer

Virtual Addresses

0 4G

ARM A9 0ARM A9 0

DRAM

Virtual Addresses

0 4G

ARM A9 1ARM A9 1

MMUMMU MMUMMU

Ti OMAP 4460 SoC

SDMA

26.01.2018ENTROPY 2018 8| |David CockSystems Group, D-INFK, ETH Zürich

How the Computer Actually Looks

RAM RAM

ROM

SRAM

L4 PER

L4 CFG

L4 WKUP

L3 Interconnect

L4 ABE

GPT5

EHCI

SDMA

KB

GPIO

A9 A9 DSP M3M3GFX

Your mobile phone… 5-10 years ago!

26.01.2018ENTROPY 2018 9| |David CockSystems Group, D-INFK, ETH Zürich 9

System Interconnect

RAM

ThunderX ARMv8 Core

MMU

Xeon Phi Core

MMU

SMPT

IOMMU

GDDR

PCI Bar

PCI Root Complex

Xeon Phi Interconnect

Up to 4 Sockets

Up to 8 co-processors60+ cores

48 cores

Multple NUMA nodes & PCI root complexesConfgurable NUMA mappingsCo-processors & near data processing

26.01.2018ENTROPY 2018 10| |David CockSystems Group, D-INFK, ETH Zürich

What Do We Need in a Model?

1. Faithfulness● Don’t hide gory details → abstract later.

2. Usability● Recover a model that fits in a human brain.

3. Retargetability● New hardware, easily.

4. Surprises!● Don’t hardcode verification conditions.

26.01.2018ENTROPY 2018 11| |David CockSystems Group, D-INFK, ETH Zürich

What Models Exist?

ISA Models ARM/HOL, ...

Weak Memory Models TSO, ARM, Power, …

...

Device Trees No defined semantics

Impose tree structure

Single address space

...

Formal Engineering

26.01.2018ENTROPY 2018 12| |David CockSystems Group, D-INFK, ETH Zürich

What About Device Trees?

/*

* XXX: Use a flat representation of the OMAP4 interconnect.

* The real OMAP interconnect network is quite complex.

* Since it will not bring real advantage to represent that in DT for

* the moment, just use a fake OCP bus entry to represent the whole bus

* hierarchy.

*/

ocp {

compatible = "ti,omap4-l3-noc", "simple-bus";

#address-cells = <1>;

#size-cells = <1>;

ranges;

From arch/arm/boot/dts/omap4.dtsi (Linux 4.14):

26.01.2018ENTROPY 2018 13| |David CockSystems Group, D-INFK, ETH Zürich

There is no Physical Address Space

M3

GPT5

38000000

GPT5

A9

GPT5 Priv GPT5 L3

40138000 49038000

DSP

01D38000 49038000

GPT5 Priv GPT5 L3

L3 Interconnect

L4

M3DSPA9

I

26.01.2018ENTROPY 2018 14| |David CockSystems Group, D-INFK, ETH Zürich

What About Device Trees?

From arch/arm/boot/dts/omap4.dtsi (Linux 4.14):

timer5: timer@40138000 {

compatible = "ti,omap4430-timer";

reg = <0x40138000 0x80>,

<0x49038000 0x80>;

interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;

ti,hwmods = "timer5";

ti,timer-dsp;

};

26.01.2018ENTROPY 2018 15| |David CockSystems Group, D-INFK, ETH Zürich

Application: Barrelfish and the SKB

seL4-related research OS

Modern HW (esp. multicore)

Automatic configuration DSLs

Info-/Exo-kernel influence

26.01.2018ENTROPY 2018 16| |David CockSystems Group, D-INFK, ETH Zürich

Application: Barrelfish and the SKB

System Knowledge Base Hardware information

Runtime state

Rich semantic model Represent the hardware

Reason about it

Separate policy from

implementation, and from

representation

CLP solver (Prolog +

constraints)

CLP solver (Prolog +

constraints)

Hardwaredata and

specifcation

Runtimesystem

information

26.01.2018ENTROPY 2018 17| |David CockSystems Group, D-INFK, ETH Zürich

What goes in?

Hardware resource discovery E.g. PCI enumeration, ACPI, CPUID…

Online hardware profiling Inter-core all-pairs latency, cache measurements…

Operating system state Locks, process placement, etc.

“Things we just know” SoC specs, assertions from data sheets, etc.

CLP solver (Prolog +

constraints)

CLP solver (Prolog +

constraints)

26.01.2018ENTROPY 2018 18| |David CockSystems Group, D-INFK, ETH Zürich

Current SKB applications

General name server / service registry Coordination service / lock manager Device management

Driver startup / hotplug PCIe bridge configuration

A surprisingly hard CSAT problem! Intra-machine routing

Efficient multicast tree construction Cache-aware thread placement

Used by e.g. databases for query planning

And now: Teach the SKB about architecture!

CLP solver (Prolog +

constraints)

CLP solver (Prolog +

constraints)

26.01.2018ENTROPY 2018 19| |David CockSystems Group, D-INFK, ETH Zürich

Decoding Nets

26.01.2018ENTROPY 2018 20| |David CockSystems Group, D-INFK, ETH Zürich

How the Computer Actually Looks

RAM RAM

ROM

SRAM

L4 PER

L4 CFG

L4 WKUP

L3 Interconnect

L4 ABE

GPT5

EHCI

SDMA

KB

GPIO

A9 A9 DSP M3M3GFX

Your mobile phone… 5-10 years ago!

26.01.2018ENTROPY 2018 21| |David CockSystems Group, D-INFK, ETH Zürich

Decoding Nets

map

acceptaccept

acceptaccept

Node

Node

L3

DRAM

VA9:0

PA9:0

8000000bffffff

8000000bffffff

40010004001fff

00000004000000

26.01.2018ENTROPY 2018 22| |David CockSystems Group, D-INFK, ETH Zürich

Loops

● We can hit the L3 interconnect twice!● Haven‘t (yet) constructed a loop, but we‘re trying.

26.01.2018ENTROPY 2018 23| |David CockSystems Group, D-INFK, ETH Zürich 23

System Interconnect

RAM

ThunderX ARMv8 Core

MMU

Xeon Phi Core

MMU

SMPT

IOMMU

GDDR

PCI Bar

PCI Root Complex

Xeon Phi Interconnect

Up to 4 Sockets

Up to 8 co-processors60+ cores

48 cores

This Monster probably has loops!

26.01.2018ENTROPY 2018 24| |David CockSystems Group, D-INFK, ETH Zürich

The model is a decoding net, a directed graph

Address spaces are nodesAddress spaces, translaton units, devices, interrupt controllers, interconnects, …

Modelàlàing memory accesses and interrupts as a decoding net

map

acceptaccept

acceptaccept

Node

Node

26.01.2018ENTROPY 2018 25| |David CockSystems Group, D-INFK, ETH Zürich

Headerfiles

Platorm model

Prologfacts

Proofs

FPGAcircuit

Programsketch of

device

Program synthesis

Theorem prover

Correct compiler

Runtimeassertions

Statich/w

config

Codefor

dynamic config

checking software

+

+

orFormal spec. of platform

Hardware discovery

Sockeyecompiler

26.01.2018ENTROPY 2018 26| |David CockSystems Group, D-INFK, ETH Zürich

The OMAP4460 Decoding Net

26.01.2018ENTROPY 2018 27| |David CockSystems Group, D-INFK, ETH Zürich

Applications

26.01.2018ENTROPY 2018 28| |David CockSystems Group, D-INFK, ETH Zürich

Using the modelà

Static Configuration: We now generate the kernel page tables directly from the formal

spec.

Dynamic Discovery and Reconfiguration: The SKB can be populated at runtime – extend the model as

hardware is discovered.

26.01.2018ENTROPY 2018 29| |David CockSystems Group, D-INFK, ETH Zürich

Headerfiles

Platorm model

Prologfacts

Proofs

FPGAcircuit

Programsketch of

device

Program synthesis

Theorem prover

Correct compiler

Runtimeassertions

Statich/w

config

Codefor

dynamic config

checking software

+

+

orFormal spec. of platform

Hardware discovery

Sockeyecompiler

26.01.2018ENTROPY 2018 30| |David CockSystems Group, D-INFK, ETH Zürich

Sockeye Compilàer

Sockeye Compiler

Prolog Prolog

omap44xx.socomap44xx.soc

net('SRAM',node(memory,[block(16'0,16'3fffffff)],[],'@none')).net('BOOT_ROM',node(memory,[block(16'0,16'bfff)],[],'@none')).net('L3_OCM_RAM',node(memory,[block(16'0,16'dfff)],[],'@none')).net('SDRAM',node(memory,[block(16'0,16'3fffffff)],[],'@none')).

26.01.2018ENTROPY 2018 31| |David CockSystems Group, D-INFK, ETH Zürich

Sockeye Workfow

Sockeye Compiler

Page Tablesetc.

Page Tablesetc.

Runtme data structures and algorithms

Runtme data structures and algorithms

KnowledgeBase

KnowledgeBase

Sockeye Specifcaton

Sockeye Specifcaton

Compile tme

Prolog Engine +

Constraint Solver

Runtme

26.01.2018ENTROPY 2018 32| |David CockSystems Group, D-INFK, ETH Zürich

Headerfiles

Platorm model

Prologfacts

Proofs

FPGAcircuit

Programsketch of

device

Program synthesis

Theorem prover

Correct compiler

Runtimeassertions

Statich/w

config

Codefor

dynamic config

checking software

+

+

orFormal spec. of platform

Hardware discovery

Sockeyecompiler

26.01.2018ENTROPY 2018 33| |David CockSystems Group, D-INFK, ETH Zürich

Page Tablàe Generaton

bootDriver { target = "omap44xx", architectures = [ "armv7" ], cFiles = [ … ] kernelPageTable = pageTableWith { cpu = "CORTEXA9", mainMemory = "SDRAM", devices = [ "UART3", "SCU", …] },},

Specify the observer

Memory

Required devices

26.01.2018ENTROPY 2018 34| |David CockSystems Group, D-INFK, ETH Zürich

Applàicaton: Generaton of Kernelà Page Tablàes

SKBSKB GCCGCC

C page-table representaton for a partcular

platorm

omap4460_pt.cknc_225e_pt.c

x86_64_pc_pt.c

C page-table representaton for a partcular

platorm

omap4460_pt.cknc_225e_pt.c

x86_64_pc_pt.c

Binary page-table blob in ELF fle

omap4460_boot_ptknc_225e_boot_pt

x85_64_pc_boot_pt

Binary page-table blob in ELF fle

omap4460_boot_ptknc_225e_boot_pt

x85_64_pc_boot_pt

Specifcaton of SoC in Sockeye

Specifcaton of SoC in Sockeye

BSP Core IDBSP Core ID

RAM RegionsRAM Regions

List of DevicesList of Devices

26.01.2018ENTROPY 2018 35| |David CockSystems Group, D-INFK, ETH Zürich

A Generated Page Tablàe

union arm_l1_entry l1_table[ARM_L1_MAX_ENTRIES] __attribute__((aligned(ARM_L1_ALIGN), section(".boot.tables"))) ={

[L1_TABLE_INDEX(0x7FE00000)] = L1_DEVICE_ENTRY(0x7FE00000),[L1_TABLE_INDEX(0x7FF00000)] = L1_DEVICE_ENTRY(0x7FF00000),

….[L1_TABLE_INDEX(0x80000000)] = L1_MEMORY_ENTRY(0x80000000),[L1_TABLE_INDEX(0x80100000)] = L1_MEMORY_ENTRY(0x80100000),[L1_TABLE_INDEX(0x80200000)] = L1_MEMORY_ENTRY(0x80200000),[L1_TABLE_INDEX(0x80300000)] = L1_MEMORY_ENTRY(0x80300000),

…}

26.01.2018ENTROPY 2018 36| |David CockSystems Group, D-INFK, ETH Zürich

Formal Results

26.01.2018ENTROPY 2018 37| |David CockSystems Group, D-INFK, ETH Zürich

Headerfiles

Platorm model

Prologfacts

Proofs

FPGAcircuit

Programsketch of

device

Program synthesis

Theorem prover

Correct compiler

Runtimeassertions

Statich/w

config

Codefor

dynamic config

checking software

+

+

orFormal spec. of platform

Hardware discovery

Sockeyecompiler

26.01.2018ENTROPY 2018 38| |David CockSystems Group, D-INFK, ETH Zürich

Flàatening – Step 1: Splàit

T1-1 A1-1

T2-1

A3-1

Split

T1-1 A1-1

T2-1

A3-1

A4-1

26.01.2018ENTROPY 2018 39| |David CockSystems Group, D-INFK, ETH Zürich

Flàatening – Step 2: Flàaten

T1-1 A1-1

A4-1

A3-1

Flatten

T1-1 A1-1

T2-1

A3-1

A4-1

26.01.2018ENTROPY 2018 40| |David CockSystems Group, D-INFK, ETH Zürich

Recoiering the Simplàe View

(3, )

Any given observer has an equivalent flat view.

26.01.2018ENTROPY 2018 41| |David CockSystems Group, D-INFK, ETH Zürich

Where Are We Going with This?

Barrelfish All HW description and configuration is migrating to Sockeye.

More generated code, less written.

Models Validation with runtime verification.

Verified compilation.

Power and Clock networks.

26.01.2018ENTROPY 2018 42| |David CockSystems Group, D-INFK, ETH Zürich