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
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
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.
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
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; …
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
04/18/23 Kees van Berkel 8
Command sharing
S ; … ; SP : proc(). S
P() ; … ; P()
S
0
S
1
|
S
0 1
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
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
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
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.
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
04/18/23 Kees van Berkel 14
Expression sharing
x:=E ; … ; a!Ef : func(). E
x:=f() ; … ; a!f()
|
E
e0
e1
Ee0
Ee1
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.
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) .
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.
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) .
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
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
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.
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.
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.
Top Related