+ All Categories
Home > Documents > Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear...

Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear...

Date post: 25-Mar-2020
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
32
Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphisms IFIP WG 2.8, Nov. 2012 1 / 29
Transcript
Page 1: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Circuit timing analysis, linear maps,and semantic morphisms

Conal Elliott

Tabula

IFIP WG 2.8, Nov. 2012

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 1 / 29

Page 2: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Outline

Timing analysis

Linear transformations

Semantics and implementation

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 2 / 29

Page 3: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

Timing analysis

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 3 / 29

Page 4: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

Simple timing analysis

Computation with a time delay:

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 4 / 29

Page 5: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

Trivial timings

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 5 / 29

Page 6: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

Sequential composition

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 6 / 29

Page 7: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

Parallel composition

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 7 / 29

Page 8: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

But ...

Oops: Same circuit (f × g), different timings.

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 8 / 29

Page 9: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

Multi-path analysis

I Max delay for each input/output pair

I How do delays compose?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 9 / 29

Page 10: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

How do delays compose?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 10 / 29

Page 11: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

How do delays compose?

V � U = W , where

Wi ,k = Maxj

(Ui ,j + Vj ,k)

Look familiar? Matrix multiplication?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 11 / 29

Page 12: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

How do delays compose?

V � U = W , where

Wi ,k = Maxj

(Ui ,j + Vj ,k)

Look familiar?

Matrix multiplication?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 11 / 29

Page 13: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

How do delays compose?

V � U = W , where

Wi ,k = Maxj

(Ui ,j + Vj ,k)

Look familiar? Matrix multiplication?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 11 / 29

Page 14: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

MaxPlus algebra

type Delay = MaxPlus Double

data MaxPlus a = MP a

instance Ord a⇒ AdditiveGroup (MaxPlus a) whereMP a +̂ MP b = MP (a ‘max ‘ b)

instance (Ord a,Num a)⇒ VectorSpace (MaxPlus a) wheretype Scalar (MaxPlus a) = aa ·MP b = MP (a + b)

Oops – We also need a zero.VectorSpace is overkill. Module over a semi-ring suffices.

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 12 / 29

Page 15: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Timing analysis

MaxPlus algebra

type Delay = MaxPlus Double

data MaxPlus a = −∞ | Fi a

instance Ord a⇒ AdditiveGroup (MaxPlus a) where0 = −∞MP a +̂ MP b = MP (a ‘max ‘ b)−∞ +̂ = −∞

+̂−∞ = −∞instance (Ord a,Num a)⇒ VectorSpace (MaxPlus a) where

type Scalar (MaxPlus a) = aa ·MP b = MP (a + b)· −∞ = −∞

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 13 / 29

Page 16: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Linear transformations

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 14 / 29

Page 17: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Representation?

How might we represent linear maps/transformations a ( b?

I Matrices

I Functions

I What else?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 15 / 29

Page 18: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Representation?

How might we represent linear maps/transformations a ( b?

I Matrices

I Functions

I What else?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 15 / 29

Page 19: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Matrices

a11 · · · a1m...

. . ....

an1 · · · anm

Static typing?

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 16 / 29

Page 20: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Statically sized matrices

type Mat m n a = Vec m (Vec n a)

(◦) :: (IsNat m, IsNat o)⇒Mat n o D → Mat m n D → Mat o m D

no ◦mn = crossF dot (transpose no) mn

crossF :: (IsNat m, IsNat o)⇒(a→ b → c)→ Vec o a→ Vec m b → Mat o m c

crossF f as bs = (λa→ f a <$> bs)<$> as

dot :: (Ord a,Num a)⇒Vec n a→ Vec n a→ a

u ‘dot‘ v = sum (zipWithV (∗) u v)

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 17 / 29

Page 21: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Generalizing

type Mat m n a = m (n a)

(◦) :: (Functor m,Applicative n,Traversable n,Applicative o)⇒Mat n o D → Mat m n D → Mat o m D

no ◦mn = crossF dot (sequenceA no) mn

crossF :: (Functor m,Functor o)⇒(a→ b → c)→ o a→ m b → Mat o m c

crossF f as bs = (λa→ f a <$> bs)<$> as

dot :: (Foldable n,Applicative n,Ord a,Num a)⇒n a→ n a→ a

u ‘dot‘ v = sum (liftA2 (∗) u v)

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 18 / 29

Page 22: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Represent via type family (old)

class VectorSpace v ⇒ HasBasis v wheretype Basis v :: ∗coord :: v → (Basis v → Scalar v)

Linear map as memoized function from basis:

newtype a ( b = L (Basis a→M b)

See Beautiful differentiation (ICFP 2009).

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 19 / 29

Page 23: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Linear transformations

Represent as GADT

data a ( b whereDot :: InnerSpace b ⇒

b → (b ( Scalar b)(:4) :: VS3 a c d ⇒ -- vector spaces with same scalar field

(a ( c)→ (a ( d)→ (a ( c × d)

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 20 / 29

Page 24: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Semantics and implementation

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 21 / 29

Page 25: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Semantics

[[·]] :: (a ( b)→ (a→ b)[[Dot b]] = dot b[[f :4 g ]] = [[f ]] 4[[g ]]

where, on functions,

(f 4 g) a = (f a, g a)

Recall:

data a ( b whereDot :: InnerSpace b ⇒ b → (b ( Scalar b)(:4) :: VS3 a c d ⇒ (a ( c)→ (a ( d)→ (a ( c × d)

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 22 / 29

Page 26: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Semantic type class morphisms

Category instance specification:

[[id ]] ≡ id[[g ◦ f ]] ≡ [[g ]] ◦ [[f ]]

Arrow instance specification:

[[f 4 g ]] ≡ [[f ]] 4[[g ]][[f × g ]] ≡ [[f ]]×[[g ]]

where

(4) :: Arrow (;)⇒ (a ; c)→ (a ; d)→ (a ; c × d)(×) :: Arrow (;)⇒ (a ; c)→ (b ; d)→ (a× b ; c × d)

The Category and Arrow laws then follow.

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 23 / 29

Page 27: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Deriving a Category instance

One case:

[[(f :4 g) ◦ h]]≡ ([[f ]] 4[[g ]]) ◦ [[h]]≡ [[f ]] ◦ [[h]] 4[[g ]] ◦ [[h]]≡ [[f ◦ h 4 g ◦ h]]

(where f ◦ h 4 g ◦ h ≡ (f ◦ h) 4(g ◦ h)). Uses:

(f 4 g) ◦ h ≡ f ◦ h 4 g ◦ h

Implementation:

(f :4 g) ◦ h = f ◦ h :4 g ◦ h

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 24 / 29

Page 28: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Deriving a Category instance

[[Dot s ◦ Dot b]]≡ dot s ◦ dot b≡ dot (s · b)≡ [[Dot (s · b)]]

[[Dot (a, b) ◦ (f :4 g)]]≡ dot (a, b) ◦ ([[f ]] 4[[g ]])≡ add ◦ (dot a ◦ [[f ]] 4 dot b ◦ [[g ]])≡ dot a ◦ [[f ]] +̂ dot b ◦ [[g ]]≡ [[Dot a ◦ f +̂ Dot b ◦ g ]]

Uses:

dot (a, b) ≡ add ◦ (dot a× dot b)

(k × h) ◦ (f 4 g) ≡ k ◦ f 4 h ◦ g

[[f +̂ g ]] ≡ [[f ]] +̂[[g ]]

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 25 / 29

Page 29: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Deriving an Arrow instance

[[f 4 g ]]≡ [[f ]] 4[[g ]]≡ [[f :4 g ]]

[[f × g ]]≡ [[f ]]×[[g ]]≡ [[f ]] ◦ fst 4[[g ]] ◦ snd≡ [[compFst f ]] 4[[compSnd g ]]≡ [[compFst f :4 compSnd g ]]

assuming

[[compFst f ]] ≡ [[f ]] ◦ fst[[compSnd g ]] ≡ [[g ]] ◦ snd

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 26 / 29

Page 30: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Composing with fst and snd

compFst :: VS3 a b c ⇒ a ( c → a× b ( ccompSnd :: VS3 a b c ⇒ b ( c → a× b ( c

Derivation:

dot a ◦ fst ≡ dot (a, 0)

(f 4 g) ◦ fst ≡ f ◦ fst 4 g ◦ fst

Implementation:

compFst (Dot a) = Dot (a, 0)compFst (f :4 g) = compFst f 4 compFst g

compSnd (Dot b) = Dot (0, b)compSnd (f :4 g) = compSnd f 4 compSnd g

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 27 / 29

Page 31: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

Adding linear maps

[[Dot b +̂ Dot c]]≡ dot b +̂ dot c≡ dot (b +̂ c)≡ [[Dot (b +̂ c)]]

[[(f :4 g) +̂(h :4 k)]]≡ ([[f ]] 4[[g ]]) +̂([[h]] 4[[k]])≡ ([[f ]] +̂[[h]]) 4([[g ]] +̂[[k]])≡ [[(f +̂ h) 4(g +̂ k)]]

Other cases don’t type-check.Uses (on functions):

(f 4 g) +̂(h 4 k) ≡ (f +̂ h) 4(g +̂ k)

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 28 / 29

Page 32: Circuit timing analysis, linear maps, and semantic morphisms · Circuit timing analysis, linear maps, and semantic morphisms Conal Elliott Tabula IFIP WG 2.8, Nov. 2012 Conal Elliott

Semantics and implementation

What next?

I Fancier timing analysis

I What else is linear?

I More examples of semantic type class morphisms

Conal Elliott (Tabula) Circuit timing analysis, linear maps, and semantic morphismsIFIP WG 2.8, Nov. 2012 29 / 29


Recommended