Clock Typing of n-Synchronous Programs Louis Mandel Florence - - PowerPoint PPT Presentation

clock typing of n synchronous programs
SMART_READER_LITE
LIVE PREVIEW

Clock Typing of n-Synchronous Programs Louis Mandel Florence - - PowerPoint PPT Presentation

Clock Typing of n-Synchronous Programs Louis Mandel Florence Plateau Marc Pouzet Laboratoire de Recherche en Informatique Universit e Paris-Sud 11 INRIA Saclay Ile-de-France DCC 20-21/03/2010 Kahn Process Networks [Gilles Kahn,


slide-1
SLIDE 1

Clock Typing of n-Synchronous Programs

Louis Mandel Florence Plateau Marc Pouzet Laboratoire de Recherche en Informatique Universit´ e Paris-Sud 11 INRIA Saclay – Ile-de-France DCC – 20-21/03/2010

slide-2
SLIDE 2

Kahn Process Networks [Gilles Kahn, 1974]

Q

  • x

i y

R P

Network of processes

  • concurrent execution
  • communication through buffers of sufficient size

If processes are deterministic then the network is deterministic

2

slide-3
SLIDE 3

Programming Kahn Process Networks

Problem: computation of sufficient buffer sizes

  • risk of data loss, of deadlock
  • sometimes, need of infinite buffers

Goal:

  • rejection of infinite buffers
  • automatic sizing of buffers

Related work:

  • Synchronous Data Flow and variants [Lee et al.] [Buck]
  • scheduling [Carlier, Chretienne] [Baccelli, Cohen, Quadrat]
  • Network Calculus [Cruz], Real-time Calculus [Thiele et al.]

3

slide-4
SLIDE 4

Dataflow Synchronous Model

Programming Kahn networks without buffers:

  • programming languages: Lustre, Signal, Lucid Synchrone
  • instantaneous consumption of produced data
  • strong guaranties: bounded memory, absence of deadlocks

But: communication without buffers sometimes too restrictive (e.g. multimedia applications)

4

slide-5
SLIDE 5

n-Synchronous Model: Programming Kahn Networks with Bounded Memory

  • accept to store data in buffers

Automatic methods at compile time to:

  • reject networks needing infinite memory
  • compute activation paces of computations nodes
  • compute sufficient buffers sizes

More flexibility with the same guaranties

5

slide-6
SLIDE 6

Overview

  • 1. Lucy-n: a n-Synchronous Extension of Lustre
  • 2. Clock Typing
  • 3. Application to Latency Insensitive Design

6

slide-7
SLIDE 7

Lucy-n: a n-Synchronous Extension of Lustre

slide-8
SLIDE 8

A Dataflow Synchronous Kernel

x

flow values clock x 5 7 3 6 2 8 1 ... 1111111...

8

slide-9
SLIDE 9

A Dataflow Synchronous Kernel

Sampling x c

when flow values clock x 5 7 3 6 2 8 1 ... 1111111... c 1 1 1 1 ... x when c 5 3 2 1 ... 1010101... clock(x when c) = clock(x) on c

  • n operator :

0.w1 on w2

def

= 0.(w1 on w2) 1.w1 on 1.w2

def

= 1.(w1 on w2) 1.w1 on 0.w2

def

= 0.(w1 on w2)

8

slide-10
SLIDE 10

A Dataflow Synchronous Kernel

Sampling x c

when

d

when flow values clock x 5 7 3 6 2 8 1 ... 1111111... c 1 1 1 1 ... x when c 5 3 2 1 ... 1010101... d 1 1 1 ... (x when c) when d 5 2 1 ... 1000101... clock((x when c) when d) = clock(x when c) on d

  • n operator :

0.w1 on w2

def

= 0.(w1 on w2) 1.w1 on 1.w2

def

= 1.(w1 on w2) 1.w1 on 0.w2

def

= 0.(w1 on w2)

8

slide-11
SLIDE 11

A Dataflow Synchronous Kernel

Merging x’ y’ c

merge flow value clock x’ 5 3 2 1 ... 1010101... y’ 2 5 1 ... 0101010... c 1 1 1 1 ... merge c x’ y’ 5 2 3 5 2 1 1 ... 1111111...

9

slide-12
SLIDE 12

A Dataflow Synchronous Kernel

Scalar Operators x y

+

z

flow values clock x 5 7 3 6 2 8 1 ... 111111... y 3 2 1 5 4 1 7 ... 111111... z = x + y 8 9 4 11 6 9 8 ... 111111...

10

slide-13
SLIDE 13

A Dataflow Synchronous Kernel

Scalar Operators x y

+

z c

when

t

flow values clock x 5 7 3 6 2 8 1 ... 111111... y 3 2 1 5 4 1 7 ... 111111... z = x + y 8 9 4 11 6 9 8 ... 111111... c 1 1 1 1 ... t = z when c 8 4 6 8 ... 101010...

10

slide-14
SLIDE 14

A Dataflow Synchronous Kernel

Scalar Operators x y

+

z c

when

t c

when

r

+

  • flow

values clock x 5 7 3 6 2 8 1 ... 111111... y 3 2 1 5 4 1 7 ... 111111... z = x + y 8 9 4 11 6 9 8 ... 111111... c 1 1 1 1 ... t = z when c 8 4 6 8 ... 101010... r = y when c 3 1 4 7 ... 101010...

  • = t + r

11 5 10 15 ... 101010...

10

slide-15
SLIDE 15

A Dataflow Synchronous Kernel

Scalar Operators x y

+

z c

when

t r

+

  • flow

values clock x 5 7 3 6 2 8 1 ... 111111... y 3 2 1 5 4 1 7 ... 111111... z = x + y 8 9 4 11 6 9 8 ... 111111... c 1 1 1 1 ... t = z when c 8 4 6 8 ... 101010... r = y 3 2 1 5 4 1 7 ... 111111...

  • = t + r

rejected

11

slide-16
SLIDE 16

A Dataflow Synchronous Kernel

Scalar Operators x y

+

z c

when

t c’

when

r

+

  • flow

values clock x 5 7 3 6 2 8 1 ... 111111... y 3 2 1 5 4 1 7 ... 111111... z = x + y 8 9 4 11 6 9 8 ... 111111... c 1 1 1 1 ... t = z when c 8 4 6 8 ... 101010... r = y when c’ 2 5 1 ... 010101...

  • = t + r

rejected

12

slide-17
SLIDE 17

n-Synchronous Extension: Bufferization Operator

x y

+

z c

when

t t’ c’

when

r

+

  • flow

values clock t = z when c 8 4 6 8 ... 101010... t’ = buffer(t) 8 4 6 ... 010101... r = y when c’ 2 5 1 ... 010101...

  • = t’ + r

10 9 7 ... 010101...

  • adaptability relation ⇒ communication through a bounded buffer
  • example : 101010... <: 010101...

13

slide-18
SLIDE 18

Adaptability Relation

Cumulative Function

Instants Number of ones 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 11 10 9 8 7 6 5 4 3 2 1

Ow1 w1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1

Ow1: cumulative function of the word w1

14

slide-19
SLIDE 19

Adaptability Relation

Instants Number of ones 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 11 10 9 8 7 6 5 4 3 2 1

Ow1 Ow2

Writings in the buffer Readings in the buffer

buffer size size(w1, w2) = maxi∈N(Ow1(i) − Ow2(i)) adaptability w1 <: w2

def

⇔ ∃n ∈ N, ∀i, 0 ≤ Ow1(i) − Ow2(i) ≤ n

15

slide-20
SLIDE 20

Ultimately Periodic Clocks

Example : 0(00111) = 0 00111 00111 ... Verification of relations on clocks

  • equality test: 0(00111 00111) = 0 00(111 00)
  • adaptability test: (11010) <: 0(00111)

Clock expressions

  • computation of on : 0(00111) on (101) = 0(00101)

16

slide-21
SLIDE 21

Clock Typing

slide-22
SLIDE 22

Typing

+

z c

when

t t’ r c’

when +

plus plus x y

  • 4

let node plus_plus (x,y) = o where

5

rec z = x + y

6

and t = z when c

7

and t’= buffer(t)

8

and r = y when c’

9

and o = t’ + r val plus_plus : (int * int) -> int val plus_plus :: forall ’a. (’a * ’a) -> ’a on c’ Buffer line 7, characters 10-19: size = 1

18

slide-23
SLIDE 23

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • x

αx y αy

C =        αx = = = αy       

19

slide-24
SLIDE 24

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • x

αx y αy z αz

C =        αx = = = αy = = = αz       

19

slide-25
SLIDE 25

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • x

αx y αy z αz t αz on c t’ r αy on c′

C =        αx = = = αy = = = αz       

19

slide-26
SLIDE 26

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • x

αx y αy z αz t αz on c t’ r αy on c′ t t’ αt′

C =        αx = = = αy = = = αz αz on c <: <: <: αt′       

19

slide-27
SLIDE 27

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • x

αx y αy z αz t αz on c t’ r αy on c′ t t’ αt′

  • αo

C =        αx = = = αy = = = αz αz on c <: <: <: αt′ αy on c′ = = = αt′ = = = αo       

19

slide-28
SLIDE 28

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(αx × αy) → αo such that C =        αx = = = αy = = = αz αz on c <: <: <: αt′ αy on c′ = = = αt′ = = = αo       

20

slide-29
SLIDE 29

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α ) → αo such that C =        α = = = α = = = α α on c <: <: <: αt′ α on c′ = = = αt′ = = = αo       

21

slide-30
SLIDE 30

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α ) → αo such that C =        α on c <: <: <: αt′ α on c′ = = = αt′ = = = αo       

22

slide-31
SLIDE 31

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α) → α on c′ such that C =        α on c <: <: <: α on c′ α on c′ = = = α on c′ = = = α on c′       

23

slide-32
SLIDE 32

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α) → α on c′ such that C =        α on c <: <: <: α on c′       

24

slide-33
SLIDE 33

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α) → α on c′ such that C =        α on c <: <: <: α on c′        Subtyping constraint solving

  • simple case:

α on w1 <: <: <: α on w2 ⇔ w1 <: w2

25

slide-34
SLIDE 34

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α) → α on c′ such that C =        c <: c′        Subtyping constraint solving

  • simple case:

α on w1 <: <: <: α on w2 ⇔ w1 <: w2

26

slide-35
SLIDE 35

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α) → α on c′ such that C =        (10) <: (01)        Subtyping constraint solving

  • simple case:

α on w1 <: <: <: α on w2 ⇔ w1 <: w2

27

slide-36
SLIDE 36

Clock Calculus

Example

+

z c

when

t t’ r c’

when +

plus plus x y

  • z

αz x αx y αy t αz on c t’ r αy on c′ t t’ αt′

  • αo

(α × α) → α on c′ such that C =               Subtyping constraint solving

  • simple case:

α on w1 <: <: <: α on w2 ⇔ w1 <: w2

28

slide-37
SLIDE 37

Paces Inference

Example of a more complex system:        α1 on (011) <: <: <: α2 on (10) α1 on (1) <: <: <: α3 on (01) α3 on (010) <: <: <: α2 on (01)       

  • 1. Instantiation of type variables

α1 ← α on c1, α2 ← α on c2, α3 ← α on c3        α on c1 on (011) <: <: <: α on c2 on (10) α on c1 on (1) <: <: <: α on c3 on (01) α on c3 on (010) <: <: <: α on c2 on (01)       

29

slide-38
SLIDE 38

Paces Inference

Example of a more complex system:        α1 on (011) <: <: <: α2 on (10) α1 on (1) <: <: <: α3 on (01) α3 on (010) <: <: <: α2 on (01)       

  • 1. Instantiation of type variables

α1 ← α on c1, α2 ← α on c2, α3 ← α on c3        c1 on (011) <: c2 on (10) c1 on (1) <: c3 on (01) c3 on (010) <: c2 on (01)       

30

slide-39
SLIDE 39

Paces Inference

  • 2. Transformation into linear inequations on indexes of 1s in clock variables ci

source I_c3(1) 1 I_c1(1) 1 I_c2(1) 1 I_c3(2) 1 I_c3(3) 1 I_c2(2) I_c3(4) 1 I_c3(5) 1 I_c3(6) 1 I_c2(4) size I_c1(2) 1 I_c1(3) 1 I_c2(3) 1 1 1

  • 3. Resolution using standard techniques (e.g. Glpk)

31

slide-40
SLIDE 40

Latency Insensitive Design

slide-41
SLIDE 41

Latency Insensitive Design [CMSV01]

Method used to design synchronous circuits that tolerate data transfer latency

  • design synchronous IPs and interconnect them
  • add relay stations and buffers on the wires
  • analysing the sum of delays and initial values on each cycle indicates

whether the system is alive [KCKO08]

  • elastic circuits dynamic schedule [KCKO06]: every wire is transformed into a

channel carrying data and control bits

  • k-periodic static schedule [BdSM07]: maximize rate and minimize storage

elements by insertion of fractional registers and computation of an explicit schedule

slide-42
SLIDE 42

Jean-Vivien Millo Example [Mil08]

34

slide-43
SLIDE 43

Strict Buffers

Example: let node f x = strict_buffer (x when (100))

val f :: forall ’a. ’a -> ’a on (010)

LID encoding:

  • uninitialised relay station:

x’ = strict_buffer x

  • initialised relay station:

x’ = (merge 1(0) init (strict_buffer x))

35

slide-44
SLIDE 44

Jean-Vivien Millo Example [Mil08]

x4’ x4’ x1’ x2’ x3’ y3’ y2’ y1’ x4’’ y2 i x1 x2 x3 x4

  • y1

y3

1 ’a on 000(10) ’a on 1(10) 2 1 1 1 1 1 1 1

let node f i = o where rec x1 = ip2(i, y3’) and x1’ = (merge 1(0) 42 (strict_buffer x1)) and x2 = ip2(x4’’, x1’) and x2’ = (merge 1(0) 42 (strict_buffer x2)) and x3 = ip1(x2’) and x3’ = (merge 1(0) 42 (strict_buffer x3)) and x4 = ip1(x3’) and x4’ = (merge 1(0) 42 (strict_buffer x4)) and x4’’ = (merge 1(0) 42 (strict_buffer x4)) and o = ip1(x4’) and o’ = (merge 1(0) 42 (strict_buffer o)) and y1 = ip1(o’) and y1’ = strict_buffer y1 and y2 = ip1(y1’) and y2’ = strict_buffer y2 and y3 = ip1(y2’) and y3’ = strict_buffer y3 36

slide-45
SLIDE 45

Contribution of our method about scheduling LID (temporary conclusion)

Static schedules computed automatically

  • some existing semi-automatic techniques find better schedules [Mil08]
  • other automatic techniques do not find better schedules [Bou07]

Modularity

  • statically scheduled IPs can be composed in a latency insensitive way

37

slide-46
SLIDE 46

Conclusion and Future Work

slide-47
SLIDE 47

Conclusion

Summary

  • n-synchronous model:

more flexible composition of nodes without loss of guaranties

  • two clocks languages studied: periodic clocks and abstract clocks [MPP10]
  • algorithms implemented in Lucy-n
  • first experiments about static scheduling in Latency Insensitive Design

Future Work

  • find better schedulings
  • more efficient resolution algorithms
  • code generation

39

slide-48
SLIDE 48

References

[BdSM07] Julien Boucaron, Robert de Simone, and Jean-Vivien Millo. Formal methods for scheduling of latency-insensitive designs. EURASIP Journal on Embedded Systems, Issue 1(ISSN:1687-3955):8 – 8, January 2007. [Bou07] Julien Boucaron. Mod´ elisation formelle de syst` emes Insensibles ` a la Latence et

  • rdonnancement. PhD thesis, Universit´

e de Nice Sophia-Antipolis, 2007. [CMSV01] L. P. Carloni, K. L. McMillan, and A. L. Sangiovanni-Vincentelli. Theory of latency-insensitive design. IEEE Trans. on CAD of Integrated Circuits and Systems, 20(9):1059–1076, 2001. [KCKO06] S. Krstic, J. Cortadella, M. Kishinevsky, and J. O’Leary. Synchronous elastic

  • networks. In Proceedings of the Formal Methods in Computer Aided Design, 2006.

[KCKO08] Sava Krstic, Jordi Cortadella, Mike Kishinevsky, and John O’Leary. Defining elastic circuits with negative delays. In Designing Correct Circuits (DCC 2008), Budapest, Hungary, March 2008. [Mil08] Jean-Vivien Millo. Ordonnancements p´ eriodiques dans les r´ eseaux de processus : Application ` a la conception insensible aux latences. PhD thesis, Universit´ e de Nice-Sophia Antipolis, D´ ecembre 2008. [MPP10] Louis Mandel, Florence Plateau, and Marc Pouzet. Lucy-n: a n-synchronous extension of Lustre. In Tenth International Conference on Mathematics of Program Construction (MPC 2010), Qu´ ebec, Canada, June 2010.