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

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

  • View
    235

  • Download
    6

Embed Size (px)

Citation preview

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

Introduction to VLSI Programming Lecture 6:

Resource sharing

(course 2IN30)

Prof. dr. ir.Kees van Berkel

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

04/18/23 Kees van Berkel 2

Time table 2005date class | lab subject

Aug. 30 2 | 0 hours intro; VLSI

Sep. 6 3 | 0 hours handshake circuits

Sep. 13 3 | 0 hours handshake circuits assignment

Sep. 20 3 | 0 hours Tangram

Sep. 27 no lecture

Oct. 4 no lecture

Oct. 11 1 | 2 hours demo, fifos, registers | deadline assignment

Oct. 18 1 | 2 hours design cases;

Oct. 25 1 | 2 hours DLX introduction

Nov. 1 1 | 2 hours low-cost DLX

Nov. 8 1 | 2 hours high-speed DLX

Nov. 29 deadline final report

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

04/18/23 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

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

04/18/23 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.

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

04/18/23 Kees van Berkel 5

VLSI programming of asynchronous circuits

expander

Tangram program

Handshake circuit

Asynchronous circuit(netlist of gates)

compilersimulator

feedback

behavior,

area, time, energy,

test coverage

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

04/18/23 Kees van Berkel 6

VLSI programming for …

• Low costs: – introduce resource sharing.

• Low delay (high throughput): – introduce parallelism.

• Low energy (low power):– reduce activity; …

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

04/18/23 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

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

04/18/23 Kees van Berkel 8

Command sharing

S ; … ; SP : proc(). S

P() ; … ; P()

S

0

S

1

|

S

0 1

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

04/18/23 Kees van Berkel 9

Command sharing: example

a?x ; … ; a?xax : proc(). a?x

ax() ; … ; ax()

1|

0

|

a xw

|

0 1

a xw

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

04/18/23 Kees van Berkel 10

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) odend

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

04/18/23 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

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

04/18/23 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.

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

04/18/23 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

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

04/18/23 Kees van Berkel 14

Expression sharing

x:=E ; … ; a!Ef : func(). E

x:=f() ; … ; a!f()

|

E

e0

e1

Ee0

Ee1

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

04/18/23 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.

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

04/18/23 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) .

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

04/18/23 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.

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

04/18/23 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) .

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

04/18/23 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

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

04/18/23 Kees van Berkel 20

Greatest Common Divisor

gcd: main proc (ab?chan <<byte,byte>> & c!chan byte).begin x,y: var byte| forever do

ab?<<x,y>>; do x<y then y:= y-x or x>y then x:= x-y

od; c!xod

end GCDab c

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

04/18/23 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 ff variables not allowed for this exercise.

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

04/18/23 Kees van Berkel 22

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.

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

04/18/23 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 and reduce its costs.