1 Lecture 7: Computer Arithmetic Today’s topics:  Chapter 2 wrap-up  Numerical representations  Addition and subtraction Reminder: Assignment 3 will.

Slides:



Advertisements
Similar presentations
1 Lecture 3: MIPS Instruction Set Today’s topic:  More MIPS instructions  Procedure call/return Reminder: Assignment 1 is on the class web-page (due.
Advertisements

Control-Flow Graphs & Dataflow Analysis CS153: Compilers Greg Morrisett.
1 Lecture 4: Procedure Calls Today’s topics:  Procedure calls  Large constants  The compilation process Reminder: Assignment 1 is due on Thursday.
Lecture 6: MIPS Instruction Set Today’s topic –Control instructions –Procedure call/return 1.
10/9: Lecture Topics Starting a Program Exercise 3.2 from H+P Review of Assembly Language RISC vs. CISC.
Computer Architecture CSCE 350
1 Lecture 9: Floating Point Today’s topics:  Division  IEEE 754 representations  FP arithmetic Reminder: assignment 4 will be posted later today.
CS 61C L02 Number Representation (1)Harvey / Wawrzynek Fall 2003 © UCB 8/27/2003  Brian Harvey ( John Wawrzynek  (Warznek) (
Arithmetic CPSC 321 Computer Architecture Andreas Klappenecker.
COMP3221 lec06-numbers-II.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 6: Number Systems - II
1 Representing Numbers Using Bases Numbers in base 10 are called decimal numbers, they are composed of 10 numerals ( ספרות ) = 9* * *10.
Assembly Language and Computer Architecture Using C++ and Java
CS 61C L02 Number Representation (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
1 Lecture 5: MIPS Examples Today’s topics:  the compilation process  full example – sort in C Reminder: 2 nd assignment will be posted later today.
Assembly Language and Computer Architecture Using C++ and Java
1 Lecture 15: Recap Today’s topics:  Recap for mid-term Reminders:  no class Thursday  office hours on Monday (10am-4pm)  mid-term Tuesday (arrive.
1 Lecture 8: Binary Multiplication & Division Today’s topics:  Addition/Subtraction  Multiplication  Division Reminder: get started early on assignment.
Arithmetic I CPSC 321 Andreas Klappenecker. Administrative Issues Office hours of TA Praveen Bhojwani: M 1:00pm-3:00pm.
COMP3221 lec07-numbers-III.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 7: Number Systems - III
1  1998 Morgan Kaufmann Publishers Chapter Four Arithmetic for Computers.
1 Lecture 6: Compilers, the SPIM Simulator Today’s topics:  SPIM simulator  The compilation process Additional TA hours: Liqun Cheng, legion at.
Chapter 3 Arithmetic for Computers. Arithmetic Where we've been: Abstractions: Instruction Set Architecture Assembly Language and Machine Language What's.
Lecture 7: MIPS Instruction Set Today’s topic –Procedure call/return –Large constants Reminders –Homework #2 posted, due 9/17/
Lecture 12: Computer Arithmetic Today’s topic –Numerical representations –Addition / Subtraction –Multiplication / Division 1.
Arithmetic for Computers
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
CENG 311 Machine Representation/Numbers
CMPE 325 Computer Architecture II Cem Ergün Eastern Mediterranean University Integer Representation and the ALU.
1 CS/COE0447 Computer Organization & Assembly Language Chapter 3.
2-1 Chapter 2 - Data Representation Principles of Computer Architecture by M. Murdocca and V. Heuring © 1999 M. Murdocca and V. Heuring Chapter Contents.
IT253: Computer Organization
Computing Systems Basic arithmetic for computers.
1 Digital Systems and Binary Numbers EE 208 – Logic Design Chapter 1 Sohaib Majzoub.
Digital Logic Design Lecture 3 Complements, Number Codes and Registers.
ECE 301 – Digital Electronics Unsigned and Signed Numbers, Binary Arithmetic of Signed Numbers, and Binary Codes (Lecture #2)
COSC 2021: Computer Organization Instructor: Dr. Amir Asif Department of Computer Science York University Handout # 3: MIPS Instruction Set I Topics: 1.
Lecture 11: Chapter 2 Today’s topic –Numerical representations Reminders –Homework 3 posted, due 9/29/2014 –Homework 4 posted, due 10/6/2014 –Midterm 1.
1 Code optimization “Code optimization refers to the techniques used by the compiler to improve the execution efficiency of the generated object code”
Lecture 4: MIPS Instruction Set
Digital Logic Lecture 3 Binary Arithmetic By Zyad Dwekat The Hashemite University Computer Engineering Department.
1 Lecture 7: MARS, Computer Arithmetic Today’s topics:  MARS intro  Numerical representations  Addition and subtraction.
CHAPTER 3 Arithmetic For Computers 1/31/ Topics for discussion 1/31/ Number system: { radix/base, a set of distinct digits, operations} Radix.
Tokens in C  Keywords  These are reserved words of the C language. For example int, float, if, else, for, while etc.  Identifiers  An Identifier is.
CML CML CS 230: Computer Organization and Assembly Language Aviral Shrivastava Department of Computer Science and Engineering School of Computing and Informatics.
COMPUTER ORGANIZATION LECTURE 3: ISA YASSER MOHAMMAD.
In decimal we are quite familiar with placing a “-” sign in front of a number to denote that it is negative The same is true for binary numbers a computer.
MicroProcessors Lec. 4 Dr. Tamer Samy Gaafar. Course Web Page —
9/23/2004Comp 120 Fall September Chapter 4 – Arithmetic and its implementation Assignments 5,6 and 7 posted to the class web page.
EE204 L03-ALUHina Anwar Khan EE204 Computer Architecture Lecture 03- ALU.
May 2, 2001System Architecture I1 Systems Architecture I (CS ) Lecture 11: Arithmetic for Computers * Jeremy R. Johnson May 2, 2001 *This lecture.
Lecture 4: Digital Systems & Binary Numbers (4)
Representing Positive and Negative Numbers
Based on slides from D. Patterson and www-inst.eecs.berkeley.edu/~cs152/ COM 249 – Computer Organization and Assembly Language Chapter 3 Arithmetic For.
Lecture 5: Procedure Calls
Lecture 6: Assembly Programs
Lecture 7: MARS, Computer Arithmetic
Morgan Kaufmann Publishers
Lecture 2 Topics Binary Arithmetic (Unsigned binary operands)
Lecture 8: Addition, Multiplication & Division
Lecture 8: Addition, Multiplication & Division
Data Representation Data Types Complements Fixed Point Representation
The University of Adelaide, School of Computer Science
Lecture 7: Examples, MARS, Arithmetic
CS/COE0447 Computer Organization & Assembly Language
CS/COE0447 Computer Organization & Assembly Language
Lecture 6: Assembly Programs
Computer Organization COMP 210
ECE 331 – Digital System Design
Lecture 4: Instruction Set Design/Pipelining
COMS 361 Computer Organization
Presentation transcript:

1 Lecture 7: Computer Arithmetic Today’s topics:  Chapter 2 wrap-up  Numerical representations  Addition and subtraction Reminder: Assignment 3 will be posted by tomorrow

2 Compilation Steps The front-end: deals mostly with language specific actions  Scanning: reads characters and breaks them into tokens  Parsing: checks syntax  Semantic analysis: makes sure operations/types are meaningful  Intermediate representation: simple instructions, infinite registers, makes few assumptions about hw The back-end: optimizations and code generation  Local optimizations: within a basic block  Global optimizations: across basic blocks  Register allocation

3 Dataflow Control flow graph: each box represents a basic block and arcs represent potential jumps between instructions For each block, the compiler computes values that were defined (written to) and used (read from) Such dataflow analysis is key to several optimizations: for example, moving code around, eliminating dead code, removing redundant computations, etc.

4 Register Allocation The IR contains infinite virtual registers – these must be mapped to the architecture’s finite set of registers (say, 32 registers) For each virtual register, its live range is computed (the range between which the register is defined and used) We must now assign one of 32 colors to each virtual register so that intersecting live ranges are colored differently – can be mapped to the famous graph coloring problem If this is not possible, some values will have to be temporarily spilled to memory and restored (this is equivalent to breaking a single live range into smaller live ranges)

5 Graph Coloring VR1 VR2 VR3 VR4 VR1 VR2 VR4 VR3 VR1 VR2 VR4 VR3

6 High-Level Optimizations High-level optimizations are usually hardware independent Procedure inlining Loop unrolling Loop interchange, blocking (more on this later when we study cache/memory organization)

7 Low-Level Optimizations Common sub-expression elimination Constant propagation Copy propagation Dead store/code elimination Code motion Induction variable elimination Strength reduction Pipeline scheduling

8 Saves on Stack Caller saved  $a0-a3 -- old arguments must be saved before setting new arguments for the callee  $ra -- must be saved before the jal instruction over-writes this value  $t0-t9 -- if you plan to use your temps after the return, save them note that callees are free to use temps as they please  You need not save $s0-s7 as the callee will take care of them Callee saved  $s0-s7 -- before the callee uses such a register, it must save the old contents since the caller will usually need it on return  local variables -- space is also created on the stack for variables local to that procedure

9 Binary Representation The binary number represents the quantity 0 x x x … + 1 x 2 0 A 32-bit word can represent 2 32 numbers between 0 and … this is known as the unsigned representation as we’re assuming that numbers are always positive Most significant bitLeast significant bit

10 ASCII Vs. Binary Does it make more sense to represent a decimal number in ASCII? Hardware to implement arithmetic would be difficult What are the storage needs? How many bits does it take to represent the decimal number 1,000,000,000 in ASCII and in binary?

11 ASCII Vs. Binary Does it make more sense to represent a decimal number in ASCII? Hardware to implement arithmetic would be difficult What are the storage needs? How many bits does it take to represent the decimal number 1,000,000,000 in ASCII and in binary? In binary: 30 bits (2 30 > 1 billion) In ASCII: 10 characters, 8 bits per char = 80 bits

12 Negative Numbers 32 bits can only represent 2 32 numbers – if we wish to also represent negative numbers, we can represent 2 31 positive numbers (incl zero) and 2 31 negative numbers two = 0 ten two = 1 ten … two = two = two = -(2 31 – 1) two = -(2 31 – 2) … two = two = -1

13 2’s Complement two = 0 ten two = 1 ten … two = two = two = -(2 31 – 1) two = -(2 31 – 2) … two = two = -1 Why is this representation favorable? Consider the sum of 1 and -2 …. we get -1 Consider the sum of 2 and -1 …. we get +1 This format can directly undergo addition without any conversions! Each number represents the quantity x x x … + x x 0 2 0

14 2’s Complement two = 0 ten two = 1 ten … two = two = two = -(2 31 – 1) two = -(2 31 – 2) … two = two = -1 Note that the sum of a number x and its inverted representation x’ always equals a string of 1s (-1). x + x’ = -1 x’ + 1 = -x … hence, can compute the negative of a number by -x = x’ + 1 inverting all bits and adding 1 Similarly, the sum of x and –x gives us all zeroes, with a carry of 1 In reality, x + (-x) = 2 n … hence the name 2’s complement

15 Example Compute the 32-bit 2’s complement representations for the following decimal numbers: 5, -5, -6

16 Example Compute the 32-bit 2’s complement representations for the following decimal numbers: 5, -5, -6 5: : : Given -5, verify that negating and adding 1 yields the number 5

17 Signed / Unsigned The hardware recognizes two formats: unsigned (corresponding to the C declaration unsigned int) -- all numbers are positive, a 1 in the most significant bit just means it is a really large number signed (C declaration is signed int or just int) -- numbers can be +/-, a 1 in the MSB means the number is negative This distinction enables us to represent twice as many numbers when we’re sure that we don’t need negatives

18 MIPS Instructions Consider a comparison instruction: slt $t0, $t1, $zero and $t1 contains the 32-bit number …01 What gets stored in $t0?

19 MIPS Instructions Consider a comparison instruction: slt $t0, $t1, $zero and $t1 contains the 32-bit number …01 What gets stored in $t0? The result depends on whether $t1 is a signed or unsigned number – the compiler/programmer must track this and accordingly use either slt or sltu slt $t0, $t1, $zero stores 1 in $t0 sltu $t0, $t1, $zero stores 0 in $t0

20 The Bounds Check Shortcut Suppose we want to check if 0 <= x < y and x and y are signed numbers (stored in $a1 and $t2) The following single comparison can check both conditions sltu $t0, $a1, $t2 beq $t0, $zero, EitherConditionFails We know that $t2 begins with a 0 If $a1 begins with a 0, sltu is effectively checking the second condition If $a1 begins with a 1, we want the condition to fail and coincidentally, sltu is guaranteed to fail in this case

21 Sign Extension Occasionally, 16-bit signed numbers must be converted into 32-bit signed numbers – for example, when doing an add with an immediate operand The conversion is simple: take the most significant bit and use it to fill up the additional bits on the left – known as sign extension So 2 10 goes from to and goes from to

22 Alternative Representations The following two (intuitive) representations were discarded because they required additional conversion steps before arithmetic could be performed on the numbers  sign-and-magnitude: the most significant bit represents +/- and the remaining bits express the magnitude  one’s complement: -x is represented by inverting all the bits of x Both representations above suffer from two zeroes

23 Addition and Subtraction Addition is similar to decimal arithmetic For subtraction, simply add the negative number – hence, subtract A-B involves negating B’s bits, adding 1 and A

24 Overflows For an unsigned number, overflow happens when the last carry (1) cannot be accommodated For a signed number, overflow happens when the most significant bit is not the same as every bit to its left  when the sum of two positive numbers is a negative result  when the sum of two negative numbers is a positive result  The sum of a positive and negative number will never overflow MIPS allows addu and subu instructions that work with unsigned integers and never flag an overflow – to detect the overflow, other instructions will have to be executed

25 Title Bullet