1 / 23

Introduction to VLSI Programming Lecture 6 : Resource sharing

Introduction to VLSI Programming Lecture 6 : Resource sharing. (course 2 IN3 0) Prof. dr. ir. Kees van Berkel. Time table 2005. Lecture 6. Outline: Recapitulation of Lecture 5 Sharing of sequentially-used resources: commands auxiliary variables expressions and operators

souellette
Download Presentation

Introduction to VLSI Programming Lecture 6 : Resource sharing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Time table 2005 Kees van Berkel

  3. Lecture 6 Outline: • Recapitulation of Lecture 5 • Sharing of sequentially-used resources: • commands • auxiliary variables • expressions and operators • Lab work: assignment GCD Kees van Berkel

  4. 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. Kees van Berkel

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

  6. VLSI programming for … • Low costs: • introduce resource sharing. • Low delay (high throughput): • introduce parallelism. • Low energy (low power): • reduce activity; … Kees van Berkel

  7. 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 Kees van Berkel

  8. 0 1 0 1 | S S S Command sharing S ; … ; S P : proc(). S P() ; … ; P() Kees van Berkel

  9. 0  0 1 1 a xw | | |  a  xw Command sharing: example a?x ; … ; a?x ax : proc(). a?x ax() ; … ; ax() Kees van Berkel

  10. a b Two-place wagging buffer 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)odend Kees van Berkel

  11. 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 Kees van Berkel

  12. 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. Kees van Berkel

  13. 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 Kees van Berkel

  14. e0 E e1 E E Expression sharing x:=E ; … ; a!E f : func(). E x:=f() ; … ; a!f() e0 | e1 Kees van Berkel

  15. 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. Kees van Berkel

  16. 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) . Kees van Berkel

  17. 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. Kees van Berkel

  18. Operator sharing: example • Consider x := y+z0 ; … ; x := y+z1 . • Operator + can be shared by introducingadd2y : proc(b? var T). x:=y+b and applying it as inadd2y(z0) ; … ; add2y(z1) . Kees van Berkel

  19. 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 | <<f#y.0,f#y.1,f#y.2,f#y.3,f#y.4,f#y.5,f#y.6,f#y.7>> cast int8 end addsub: func (f:bool & x:int8 & y:int8): int9. {f  x+y | f  x-y } (<<f,x>> cast int9 + <<f,condinv(f, y)>> cast int9) cast <<bool,int9>>.1 Kees van Berkel

  20. GCD ab c Greatest Common Divisor gcd: main proc (ab?chan <<byte,byte>> & c!chan byte).begin x,y: var byte| forever doab?<<x,y>> ; do x<y then y:= y-xorx>y then x:= x-yod ; c!xodend Kees van Berkel

  21. 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 ffvariables not allowed for this exercise. Kees van Berkel

  22. Lab-work and report • You are allowed to team up with a colleague. • Report: more thanlisting 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. Kees van Berkel

  23. 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 andreduce its costs. Kees van Berkel

More Related