Modelling with Streams in Daisy and The SchemEngine Project Steven - - PowerPoint PPT Presentation

modelling with streams in daisy and the schemengine
SMART_READER_LITE
LIVE PREVIEW

Modelling with Streams in Daisy and The SchemEngine Project Steven - - PowerPoint PPT Presentation

Modelling with Streams in Daisy and The SchemEngine Project Steven D Johnson Indiana University Computer Science Department System Design Methods Laboratory sjohnson@cs.indiana.edu www.cs.indiana.edu/~sjohnson Eric Jeschke Computer Science


slide-1
SLIDE 1

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 1

Modelling with Streams in Daisy and The SchemEngine Project

Steven D Johnson Indiana University Computer Science Department System Design Methods Laboratory sjohnson@cs.indiana.edu www.cs.indiana.edu/~sjohnson Eric Jeschke Computer Science Department The Univerisity of Hawaii, Hilo jeschke@hawaii.edu uhhach.uhh.hawaii.edu/~jeschke/

slide-2
SLIDE 2

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 2

Outline

  • I. Background and context
  • II. Modeling with streams in Daisy
  • A. Lazy CONS demand-oriented computation, stream I/O, concurrency.
  • B. Stream systems.
  • C. Some modeling techniques.
  • D. Distributed extensions.
  • III. The SchemEngine Project
  • A. Design derivation
  • B. Previous studies, Schemachine
  • C. VLISP [Guttman, Ramsdell, Wand, L&SC 95]
  • D. SchemEngine objectives in integrated formal analysis
  • E. Toward an integrated codesign enviornment
slide-3
SLIDE 3

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 3

  • I. Background and context, 1975–now

Systems C

  • m

p i l e r s Languages Methods

slide-4
SLIDE 4

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 4

Background (languages) 75-80 Functional programming languages Fridman & Wise, “CONS should not evaluate its arguments” Applicative programming for systems Extensions for indeterminacy, set:[α β · · ·] Suspending construction model [continuations, engines in Scheme] Semantics ?! 80-85 Daisy/DSI in Unix Stream-based I/O From concurrency to parallelism O’Donnell, programming environments, hardware models 85-90 Parallel DSI [Jeschke95] Language-driven architecture ⇒ design derivation 90-95 Bounded speculation Windows on the data space Daisy/DSI for small-scale MIMD? 95-00 Distributed demand propagation HW models as case studies

slide-5
SLIDE 5

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 5

Background (methods) 75-80 Functional programming methods Prosser & Winkel, structured digital design, ASMs 80-85 Compiler derivation [Wand] Combinator factorization ⇒ “machine” Stream systems and synchronous hardware Formalized synthesis 85-90 Digital design derivation Functional/algebraic formalism GC-PLD, GC-VLSI, SECD 90-95 DDD ⇒ · · · [Bose, Tuna, Rath, W.Hunt] Heterogeneous reasoning FM8502, FM9001-DDD, Schemachine DDD vis-a-vis PVS, coinductive types [Minor] 95-00 Tools Behavior tables etc.

slide-6
SLIDE 6

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 6

  • II. Modeling with streams in Daisy

Animation is a key aspect of functional formalism.

  • Suspending CONS, demand oriented computation.
  • List (stream) representation of I/O
  • Concurrency construct, set
  • Windowing support
slide-7
SLIDE 7

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 7

Suspending CONS

[A]* [B]*

Delays? No. Futures? No. Engines? Almost. Demand driven computation? No. Demand oriented computation · · · bounded speculation DSI: ⋄ Heap based symbolic multiprocessing ⋄ Transparent process management

slide-8
SLIDE 8

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 8

Processes as streams

input N; N := N+1 } { output N; cycle

. . . 4 3 2 1 0

Zs:

inc N . . . 4 3 2 1 0

F:n = [n ! F:inc:n] N = [0 ! (map:inc):N]

F:inc:n 1 2

slide-9
SLIDE 9

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 9

Stream (i.e. lazy-list) based I/O I/O synchronization and suspension coercion use the same synchronization mechanism (e.g. a presence bit)

stream of tokens stream of characters stream of characters stream of tokens stream of s−expressions stream of values display events keyboard events prompts screen scnos prsos evlst prsis scnis console

  • i

g l

screen:console:prompt

slide-10
SLIDE 10

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 10

bit−filter = \[C ! Cs]. if:[ same?:[C "0"] [0 ! bit−filter:Cs] same?:[C "1"] [1 ! bit−filter:Cs] bit−filter:Cs ] RSFF = \[S R]. rec in [Qh Ql] Qh = [0 ! OR:[S NOT:Ql]] Ql = [1 ! OR:[S NOT:Qh]]

NL

bit−filter:console:" R: "]

NL

RSFF:[bit−filter:console:" S: " xps: OR = (mapxps:or) NOT = (map:not) S R Q.l Q.h

slide-11
SLIDE 11

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 11

NL

bit−filter:console:" R: "]

NL

RSFF:[bit−filter:console:" S: " & xps: S: [ [1 0] [ S: 0 0 0 0 0 0 0 0 R: 0 0 0 1 1 1 0 0 S: 0 0 0 1 1 1 0 0 0 R: 0 0 0 0 0 0 0 0 0 0] [1 0] [1 0] [1 1] [0 1] [0 1] [0 1] [0 1] [0 1] [0 1] [0 1] [1 1] [1 0] [1 0] [1 0] [1 0]

Q.h Q.l S R

slide-12
SLIDE 12

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 12

wndo:[ "[Qh Ql]" prsos: scnos: bitfilter:wndi:"R" ]] RSFF:[ bitfilter:wndi:"S" xps:

Widget devices: wndi: name → char ∗ wndo: [name, char ∗] → [] Also: filei/o, socketi/o∗, execi/o∗, . . .

slide-13
SLIDE 13

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 13

Concurrency Implicit through bounded speculation Explicit through (constructs such as) set

  • Notation: expression A, computation α, result a.
  • set:[A B C] constructs list object L = [α β γ]
  • L becomes manifest as [a b c], or [b a c], or [b c a], etc.,
  • There is an imprecise operational relationship with computational effort.
  • Semantics (?!)
slide-14
SLIDE 14

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 14

B = [b ! AND:[CLK AND:[NOT:A NOT:C]]] C = [c ! AND:[CLK NOT:E]] E = [e ! AND:[NOT:C A = [a ! AND:[D NOT:B]] F = [f ! OR:[C NOT:G]] G = [g ! OR:[NOT:F B]] in [CLK D A B C E F G [NL *]] rec \[CLK D]. NOT:A]] DFF = \[a b c e f g]. D CLK

C B E

Q.L Q.H

F G A

slide-15
SLIDE 15

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 15

let [CLK D A B C E Ql Qh NLs] = (DFF:[2 2 2 2 1 0]): ] in head: set: ] s−p−x s−p−x s−p−x :["A_B_C_D_E" :[NLs A B C D E]] :["F=Qh" :[NLs Qh]] :["G=Ql" :[NLs Ql]] wndo wndo wndo [ : :"CLK" f−t wndi f−t wndi : :"D" [ consume:wndi:"DFF model" consume = \Cs. if:[ nil?:Cs [] consume:tail:Cs ]

slide-16
SLIDE 16

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 16

Asynchronous interactions The pseudo-function gif (“guarded” if) takes a list of guarded expressions, [ ... [gk vk] ... ] and returns one of the values, vj, whose guard is true.

| FAIL: a distinguished value | guard:[Bool Value] --> Value + %FAIL% | gif:{[Bool , Value] ... [Bool, Value]} --> Value + %FAIL% def gif = \Guards. rec GUARD = \[Test Result]. if Test then [Result] else FAIL LOOP = \Guards = [G ! Gs]. if nil?:Guards then FAIL else if fail?:G then LOOP:Gs else head:G in LOOP:set:(map:GUARD):Guards

slide-17
SLIDE 17

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 17

Sx = \[ [Xh ! Xt] = Xs [Yh ! Yt] = Ys ]. Se Ce = rec Se = \[ [Xh ! Xt] = Xs [Yh ! Yt] = Ys ]. gif:[ [present?:Xh Sy:[Xt Ys]] [present?:Yh Sx:[Xs Yt]] gif:[ [present?:Xh [Xh ! Se:[Xt Ys]]] [present?:Yh Se:[Xs Yt]] SY = \[ [Xh ! Xt] = Xs [Yh ! Yt] = Ys ]. gif:[ [present?:Xh Se:[Xt Ys]] [present?:Yh [Yh ! Se:[Xs Yt]]] in

Y

X ! !

slide-18
SLIDE 18

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 18

slide-19
SLIDE 19

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 19

Interaction refinements

wndo:[ "OUT" interleave_prompts:[ [NL ! wndi:"IN"] ints:1]] rec insert_prompts: [NL ! Cs] ints:0]] in wndo:["OUT" Cs] Cs = :["IN" wnd

slide-20
SLIDE 20

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 20

Refinements

rec CLK = wndi:"CLK" INA = source:["?" wndi:"INA" CLK] INB = source:["?" wndi−lg:"INB" CLK] in wndo:["OUTAB" s−p−x:[INA INB NLs]] source = \[D Vs CLKs]. gif:[ [ present?:head:Vs [head:Vs ! source:[head:Vs tail:Vs CLKs]]] [present?:head:CLKs [D ! source:[D Vs tail:CLKs]]]] ]

slide-21
SLIDE 21

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 21

Modeling systems with Daisy, conclusions Daisy/DSI is not a production language. It is an experimental vehicle. A central motivation of the work has been to explore implications of demand-

  • riented computation on architecture.

We are currently looking at distributed modeling and demand propagation across networks. We would like to contribute to a modeling methodology based on functional expressions and streams. One topic of interest is the proper abstraction of devices (given that they have effects).

  • utput: a (unit?) function that

merges all streams it is applied to? input: an (nullary?) function that splits on demand? Is bidirectionality basic (sockets, dialogues [O’Donnell])?

slide-22
SLIDE 22

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 22

  • III. The SchemEngine Project

Objectives [Johnson, IUTR 544]

  • Advancing design derivation
  • System-level formal analysis
  • From semantics to hardware
  • Heterogeneous reasoning
  • Embedded applications (!?)
  • Foundations for high-confidence
slide-23
SLIDE 23

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 23

DDD studies in language-driven architecture www.cs.indiana.edu/hmg/

  • Garbage collectors in PLDs, VLSI, FPGAs [Boyer 86-90]
  • SECD computer [Wehrmeister 89]
  • Schemachine [Burger 94]

The bigger picture

  • Compiler correctness [Wand, Clinger 80-85]
  • Compiler derivation [Wand 80-85]
  • Scheme based methodology and pedagogy
  • Codesign tools
slide-24
SLIDE 24

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 24

PC I/F Project area Logic Engine Prototyping System

CPU swap semispace DRAM memory ALLOCATOR PROCESSOR INITIALIZER COLLECTOR semispace OLD NEW HEAP

data addr OLD data addr NEW wtite data read data

NEW addr OLD addr

250 ns 32 bits

  • CPU, GC, ALLOC, INIT derived

with DDD

  • CPU is naive
  • Memory system tuned to GC
  • PLDs, mux-based FPGAs,

DRAM simms.

  • Codesign using Scheme and

Logic Engine – Spec. models – Derived models – Staging to hardware

slide-25
SLIDE 25

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 25

Relationshop to VLISP [Guttman, Ramsdell, Wand, L&SC 95]

Scheme Semantics Compiler Machine Machine + heap Target architecture System model Hardware implementation (formalized synthesis) (system factorization) (data refinement) (combinator factorization)

slide-26
SLIDE 26

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 26

Pending issues CPU: The architecture is naive; it needs retiming. The specification could be at a much higher level, closer to VLISP/EoPL.

init active active init trailer collector cpu allocate copy

GC: Non-interference verification at the system, algorithm verificaiton. In- vestigation of caching and incremental variants.

slide-27
SLIDE 27

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 27

addr data OLD NEW addr data 250 ns read data OLD NEW addr addr write data 32 bits

Bus timing: Redesign needed for current memory architectures. Could model checking have found the killer bug? Large read(NEW, a) write(OLD, b, c) write(NEW, a, b) read(OLD, c) read(NEW, a) mark-next(OLD) write(NEW, a, b) mark-next(OLD)

slide-28
SLIDE 28

Indiana University Computer Science Department System Design Methods Laboratory Steven D Johnson DCC 2002 28

Synchronization: Hierarchical clocking was used. Other pending issues

  • Retargetting Schemachine (Virtex, SDRAM?), cores
  • Behavior table case study
  • Interface abstraction
  • Software factorization
  • Integrating modeling, derivation, and co-design
  • Close with VLISP
  • Embedded resource management
  • . . . Java (?!)