Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to VLSI Programming Lecture 6: Resource sharing (course 2IN30) Prof. dr. ir.Kees van Berkel.

Similar presentations


Presentation on theme: "Introduction to VLSI Programming Lecture 6: Resource sharing (course 2IN30) Prof. dr. ir.Kees van Berkel."— Presentation transcript:

1 Introduction to VLSI Programming Lecture 6: Resource sharing (course 2IN30) Prof. dr. ir.Kees van Berkel

2 6/25/2015Kees van Berkel2 Time table 2005 dateclass | labsubject Aug. 302 | 0 hoursintro; VLSI Sep. 63 | 0 hourshandshake circuits Sep. 133 | 0 hourshandshake circuits assignment Sep. 203 | 0 hoursTangram Sep. 27no lecture Oct. 4 no lecture Oct. 111 | 2 hoursdemo, fifos, registers | deadline assignment Oct. 181 | 2 hoursdesign cases; Oct. 251 | 2 hoursDLX introduction Nov. 11 | 2 hourslow-cost DLX Nov. 81 | 2 hourshigh-speed DLX Nov. 29deadline final report

3 6/25/2015Kees van Berkel3 Lecture 6 Outline: Recapitulation of Lecture 5 Sharing of sequentially-used resources: –commands –auxiliary variables –expressions and operators Lab work: assignment GCD

4 6/25/2015Kees van Berkel4 Tangram Purpose: programming language for asynchronous VLSI circuits. Creator: Tangram team @ Philips Research Labs (proto-Tangram 1986; release 2 in 1998). Inspiration: Hoare’s CSP, Dijkstra’s GCL. Lectures: no formal introduction; manual hand-out (learn by example, learn by doing). Main tools: compiler, analyzer, simulator, viewer.

5 6/25/2015Kees van Berkel5 VLSI programming of asynchronous circuits expander Tangram program Handshake circuit Asynchronous circuit (netlist of gates) compiler simulator feedback behavior, area, time, energy, test coverage

6 6/25/2015Kees van Berkel6 VLSI programming for … Low costs: –introduce resource sharing. Low delay (high throughput): –introduce parallelism. Low energy (low power): –reduce activity; …

7 6/25/2015Kees van Berkel7 VLSI programming for low costs Keep it simple!! Introduce resource sharing: commands, auxiliary variables, expressions, operators. Enable resource sharing, by: –reducing parallelism –making similar commands equal

8 6/25/2015Kees van Berkel8 Command sharing S ; … ; S P : proc(). S P() ; … ; P() S 00 S 11 | S 00 11

9 6/25/2015Kees van Berkel9 Command sharing: example a?x ; … ; a?x ax : proc(). a?x ax() ; … ; ax()  11 | 00 |  axw | 00 11  a

10 6/25/2015Kees van Berkel10 Two-place wagging buffer ba  byte = type [0..255] & wag2: main proc (a?chan byte & b!chan byte). begin x,y: var byte & ax : proc(). a?x | ax() ; forever do (a?y || b!x) ; (ax() || b!y) od end

11 6/25/2015Kees van Berkel11 Procedure definition vs declaration Procedure definition: P = proc (). S –provides a textual shorthand (expansion) –each call generates copy of resource, i.e. no sharing Procedure declaration: P : proc (). S –defines a sharable resource –each call generates access to this resource

12 6/25/2015Kees van Berkel12 Command sharing Applies only to sequentially used commands. Saves resources, almost always (i.e. when command is more costly than a mixer). Impact on delay and energy often favorable. Introduced by means of procedure declaration. Makes Tangram program less well readable. Therefore, apply after program is correct & sound. Should really be applied by compiler.

13 6/25/2015Kees van Berkel13 Sharing of auxiliary variables x:=E is an auto assignment when E depends on x. This is compiled as aux:=E; x:= aux, where aux is a “fresh” auxiliary variable. With multiple auto assignments to x, as in: x:=E;... ; x:=F auxiliary variables can be shared, as in: aux:=E; aux2x();... ; aux:=F; aux2x() with aux2x(): proc(). x:=aux

14 6/25/2015Kees van Berkel14 Expression sharing x:=E ; … ; a!E f : func(). E x:=f() ; … ; a!f() | E e0e0 e1e1 E e0e0 E e1e1

15 6/25/2015Kees van Berkel15 Expression sharing Applies only to sequentially used expressions. Often saves resources, (i.e. when expression is more costly than the demultiplexer). Introduced by means of function declarations. Makes Tangram program less well readable. Therefore apply after program is correct & sound. Should really be applied by compiler.

16 6/25/2015Kees van Berkel16 Operator sharing Consider x0 := y0+z0 ; … ; x1 := y1+z1. Operator + can be shared by introducing add : func(a,b? var T): T. a+b and applying it as in x0 := add(y0, z0) ; … ; x1 := add(y1,z1).

17 6/25/2015Kees van Berkel17 Operator sharing: the costs Operator sharing may introduce multiplexers to (all) inputs of the operator and a demultiplexer to its output. This form of sharing only reduces costs when: –operator is expensive, –some input(s) and/or output are common.

18 6/25/2015Kees van Berkel18 Operator sharing: example Consider x := y+z0 ; … ; x := y+z1. Operator + can be shared by introducing add2y : proc(b? var T). x:=y+b and applying it as in add2y(z0) ; … ; add2y(z1).

19 6/25/2015Kees van Berkel19 Making similar equal: example Consider: x := y+z ; … ; x := y-z. Use : y-z = y + bitwise_complement(z) +1 condinv: func (f:bool & x:int8): int8. {  f  x | f  bwc(x)} begin y=val x cast bool8 | > cast int8 end addsub: func (f:bool & x:int8 & y:int8): int9. {  f  x+y | f  x-y } ( > cast int9 + > cast int9) cast >.1

20 6/25/2015Kees van Berkel20 Greatest Common Divisor gcd: main proc (ab?chan > & c!chan byte). begin x,y: var byte | forever do ab? > ; do x y then x:= x-y od ; c!x od end GCD abc

21 6/25/2015Kees van Berkel21 Assigment 3: make GCD smaller Both assignments (y:= y-x and x:= x-y) are auto assignments and hence require an auxiliary variable. Program requires 4 arithmetic resources (twice < and –). Reduce costs of GCD by saving on auxiliary variables and arithmetic resources. (Beware the costs of multiplexing!) Use of ff variables not allowed for this exercise.

22 6/25/2015Kees van Berkel22 Lab-work and report You are allowed to team up with a colleague. Report: more than listing of functional Tangram programs: –analyze the specifications and requirements; –present design options, alternatives, trade-offs; –motivate your design choices; –explain functional correctness of your Tangram programs; –analyze & explain {area, time, energy} of your programs.

23 6/25/2015Kees van Berkel23 Next week: lecture 7 Outline: Introduction to the DLX processor. Introduction to Tangram version of a sub-set DLX (executing a software GCD). Lab work: extend instruction set of Tangram DLX and reduce its costs.


Download ppt "Introduction to VLSI Programming Lecture 6: Resource sharing (course 2IN30) Prof. dr. ir.Kees van Berkel."

Similar presentations


Ads by Google