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

Slides:



Advertisements
Similar presentations
Introduction to VLSI Programming TU/e course 2IN30 Lecture 2: Control Handshake Circuits (1) Prof.dr.ir Kees van Berkel [Dr. Johan Lukkien] [Dr.ir. Ad.
Advertisements

ADSP Lecture2 - Unfolding VLSI Signal Processing Lecture 2 Unfolding Transformation.
EE 361 Fall 2003University of Hawaii1 Hardware Design Tips EE 361 University of Hawaii.
ECE 3110: Introduction to Digital Systems
Reading1: An Introduction to Asynchronous Circuit Design Al Davis Steve Nowick University of Utah Columbia University.
Introduction to VLSI Programming TU/e course 2IN30 Lecture 3: Control Handshake Circuits (2)
VLSI Programming of Asynchronous circuits for Low Power Kees van Berkel Philips Research Lab. Martin Rem Eindhoven University of Technology.
1 Discrete Structures Lecture 29 Predicates and Programming Read Ch
ECE 331 – Digital System Design
Slide 1 Summary Two basic concepts: variables and assignments Some C++ practical issues: division rule, operator precedence  Sequential structure of a.
Introduction to asynchronous circuit design: specification and synthesis Part IV: Synthesis from HDL Other synthesis paradigms.
Introduction to Computers and Programming Lecture 4: Mathematical Operators New York University.
1 ICS 51 Introductory Computer Organization Fall 2006 updated: Oct. 2, 2006.
1 Digital Logic
ECE 353 Computer Systems Lab I Verilog Hardware Description Language.
State Machines Timing Computer Bus Computer Performance Instruction Set Architectures RISC / CISC Machines.
Introduction to Silicon Programming in the Tangram/Haste language Material adapted from lectures by: Prof.dr.ir Kees van Berkel [Dr. Johan Lukkien] [Dr.ir.
Combinational Circuits
Combinational Circuits
Introduction to VHDL (part 2)
Some Useful Circuits Lecture for CPSC 5155 Edward Bosworth, Ph.D. Computer Science Department Columbus State University.
Combinational Circuit – Arithmetic Circuit
Combinational Circuits
CS 2104 Prog. Lang. Concepts Subprograms
E&CE % Final 30% Laboratory 20% Midterm ON LINE Course Notes! Lab Manual LabTechs/TAs Assignments extra probs/solns.
Combinational Logic. Digital Circuits Introduction Logic circuits for digital systems may be combinational or sequential. A combinational circuit.
CS100J Spring 2006 CS100J: 11 weeks of programming using Java and 2 weeks using Matlab. David Gries is teaching CS100J. Graeme Bailey is teaching a special.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
1 CSC 110AA Introduction to Computer Science for Majors - Spring 2003 Class 5 Chapter 2 Type Casting, Characters, and Arithmetic Operators.
Lecture 4: MIPS Instruction Set Reminders: –Homework #1 posted: due next Wed. –Midterm #1 scheduled Friday September 26 th, 2014 Location: TODD 430 –Midterm.
Reading1: An Introduction to Asynchronous Circuit Design Al Davis Steve Nowick University of Utah Columbia University.
ITEC 352 Lecture 3 Low level components(2). Low-level components Review Electricity Transistors Gates Really simple circuit.
ELEC Digital Logic Circuits Fall 2015 Introduction
In1200/04-PDS 1 TU-Delft Digital Logic. in1200/04-PDS 2 TU-Delft Unit of Information l Computers consist of digital (binary) circuits l Unit of information:
Chap 2. Combinational Logic Circuits
Computer programming Outline Functions [chap 8 – Kochan] –Defining a Function –Arguments and Local Variables Automatic Local.
CCSA 221 Programming in C CHAPTER 8 – PART 1 WORKING WITH FUNCTIONS 1.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
Spring 2009W. Rhett DavisNC State UniversityECE 406Slide 1 ECE 406 – Design of Complex Digital Systems Lecture 4: Testing, Dataflow Modeling Spring 2009.
Teaching Digital Logic courses with Altera Technology
Algebraic Thinking Chapter 12. Algebra Study of patterns and relationships Way of thinking An art—characterized by order and internal consistency Language.
Introduction to Verilog
Constructive Computer Architecture Sequential Circuits - 2 Arvind Computer Science & Artificial Intelligence Lab. Massachusetts Institute of Technology.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
Types and Programming Languages Lecture 16 Simon Gay Department of Computing Science University of Glasgow 2006/07.
OPERATORS IN C CHAPTER 3. Expressions can be built up from literals, variables and operators. The operators define how the variables and literals in the.
Combinational Design, Part 2: Procedure. 2 Topics Positive vs. negative logic Design procedure.
1 Introduction to Engineering Spring 2007 Lecture 18: Digital Tools 2.
CMSC201 Computer Science I for Majors Lecture 05 – Comparison Operators and Boolean (Logical) Operators Prof. Katherine Gibson Based on slides by Shawn.
Greatest Common Divisor
Greatest Common Divisor
Format of Assembly language
Synthesis from HDL Other synthesis paradigms
Part IV: Synthesis from HDL Other synthesis paradigms
Boolean Algebra.
Introduction to VLSI Programming Lecture 9: High Performance DLX
Basic Logic Gates 1.
Introduction to VLSI Programming Lecture 7: Introduction to the DLX
Introduction toVLSI Programming Lecture 4: Data handshake circuits
Introduction to VLSI Programming Lecture 8: High Performance (DLX)
Introduction to Silicon Programming in the Tangram/Haste language
Boolean Algebra.
Introduction to VLSI Programming Lecture 7: Introduction to the DLX
Reference: Moris Mano 4th Edition Chapter 5
Introduction to VLSI Programming High Performance DLX
Program correctness Axiomatic semantics
Introduction to VLSI Programming Lecture 5: Tangram & Tools
Introduction to Silicon Programming in the Tangram/Haste language
Presentation transcript:

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

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

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

6/25/2015Kees van Berkel4 Tangram Purpose: programming language for asynchronous VLSI circuits. Creator: Tangram 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.

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/25/2015Kees van Berkel6 VLSI programming for … Low costs: –introduce resource sharing. Low delay (high throughput): –introduce parallelism. Low energy (low power): –reduce activity; …

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

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

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

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

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

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.

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

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

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.

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

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.

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

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

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

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.

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.

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.