Vous êtes sur la page 1sur 58

Arithmetic & Logic

Unit
Arithmetic & Logic Unit
Arithmetic & logic unit hardware
implementation
Booths Algorithm
Restoring division & non
restoring division algorithm
IEEE floating point number
representation & operations

Arithmetic & Logic Unit
Does the calculations
Everything else in the computer is there
to service this unit
Handles integers
May handle floating point (real) numbers
May be separate FPU (maths co-
processor)
May be on chip separate FPU (486DX +)
ALU Inputs and Outputs
Integer Representation
Only have 0 & 1 to represent everything
Positive numbers stored in binary
e.g. 41=00101001
No minus sign
No period
Sign-Magnitude
Twos compliment
Sign-Magnitude Representation
Left most bit is sign bit
0 means positive
1 means negative
+18 = 00010010
-18 = 10010010
Problems
Need to consider both sign and magnitude in
arithmetic
Two representations of zero (+0 and -0)
Twos Compliment Representation
Two's compliment representation uses the
MSB as a sign bit.
Range: -2
n-1
through 2
n-1
-1
Twos compliment A= -2
n-1
a
n-1
+ 2
i
a
i
In case of positive integers, a
n-1
=0.
Twos Compliment
+3 = 00000011
+2 = 00000010
+1 = 00000001
+0 = 00000000
-1 = 11111111
-2 = 11111110
-3 = 11111101
Benefits
One representation of zero
Arithmetic works easily (see later)
Negating is fairly easy
3 = 00000011
Boolean complement gives 11111100
Add 1 to LSB 11111101

Geometric Depiction of Twos
Complement Integers
Negation Special Case 1
0 = 00000000
Bitwise not 11111111
Add 1 to LSB +1
Result 1 00000000
Overflow is ignored, so:
- 0 = 0
Negation Special Case 2
-128 = 10000000
bitwise not 01111111
Add 1 to LSB +1
Result 10000000
So:
Monitor MSB (sign bit)
It should change during negation


Range of Numbers
8 bit 2s compliment
+127 = 01111111 = 2
7
-1
-128 = 10000000 = -2
7
16 bit 2s compliment
+32767 = 011111111 11111111 = 2
15
- 1
-32768 = 100000000 00000000 = -2
15

Conversion Between Lengths
Positive number pack with leading zeros
+18 = 00010010
+18 = 00000000 00010010
Negative numbers pack with leading ones
-18 = 10010010
-18 = 11111111 10010010
i.e. pack with MSB (sign bit)
Integer Arithmetic
Addition and Subtraction
Normal binary addition
Monitor sign bit for overflow

Take twos compliment of subtrahend and
add to minuend
i.e. a - b = a + (-b)

So we only need addition and complement
circuits
Hardware for Addition and Subtraction
Multiplication
Complex
Work out partial product for each digit
Take care with place value (column)
Add partial products

Multiplication Example
1011 Multiplicand (11 dec)
x 1101 Multiplier (13 dec)
1011 Partial products
0000 Note: if multiplier bit is 1 copy
1011 multiplicand (place value)
1011 otherwise zero
10001111 Product (143 dec)
Note: need double length result
Unsigned Binary Multiplication
Execution of Example(11*13)
(product in A,Q)
Flowchart for Unsigned Binary Multiplication
Multiplying Negative Numbers
This does not work!
Solution 1
Convert to positive if required
Multiply as above
If signs were different, negate answer
Solution 2
Booths algorithm

Booths Algorithm
Example of Booths Algorithm (7*3)
Division
More complex than multiplication
Negative numbers are really bad!
Based on long division
001111
Division of Unsigned Binary Integers
1011
00001101
10010011
1011
001110
1011
1011
100
Quotient
Dividend
Remainder
Partial
Remainders
Divisor
Flowchart for Unsigned Binary Division
Floating-Point
Representation
Real Numbers
Numbers with fractions
Could be done in pure binary
1001.1010 = 2
3
+ 2
0
+2
-1
+ 2
-3
=9.625
Where is the binary point?
Fixed?
Very limited
Moving?
How do you show where it is?
Floating Point
+/- Significand x 2
Exponent
Point is actually fixed between sign bit and body
of mantissa
Exponent indicates place value (point position)
Known as biased representation.
A fixed value called bias, is subtracted from the
field to get true exponent value.
Floating Point Examples
Signs for Floating Point
Mantissa/Significand is stored in 2s
compliment
Exponent is in excess or biased notation
e.g. Excess (bias) 128 means
8 bit exponent field
Pure value range 0-255
Subtract 128 to get correct value
Range -128 to +127
Normalization
FP numbers are usually normalized
i.e. exponent is adjusted so that leading
bit (MSB) of mantissa is 1
Since it is always 1 there is no need to
store it
( Scientific notation where numbers are
normalized to give a single digit before
the decimal point e.g. 3.123 x 10
3
)
IEEE Standard For Binary
Floating-point
Representation
IEEE 754
Standard for floating point storage
32 and 64 bit double format,
8 and 11 bit exponent respectively
Extended formats (both mantissa and
exponent) for intermediate results

IEEE 754 Formats
Special classes of numbers
For single format 1 through 254
double format 1 through 2046
normalized nonzero floating-point numbers are
represented.
Exponent is biased.
For single format : -126 through +127
double format: -1022 through +1023.
A normalized number requires a 1-bit to the left
of the binary point, this bit is implied giving
24-bit or 53-bit significand/fraction.
Exponent
values

Special classes of numbers
Exponent: All zero
Fraction : All zero


Exponent: All one
Fraction : All zero
Represents +ve or ve
zero depending on sign
bit

Represents +ve or ve
infinity depending on sign
bit

Special classes of numbers
Exponent: All zero
Fraction : Nonzero


Exponent: All one
Fraction : Nonzero
Represents denormalized
number depending on
sign bit

Represents NaN, Not a
Number & is used to
signal various exception
conditions.

Floating-Point Arithmetic
Floating-point numbers & Arithmetic Operations
Floating-Point
numbers
Arithmetic Operations
X= Xs * B
XE

Y= Ys * B
YE


X+Y= (Xs * B
XE-YE
+ Ys)*B
YE
X-Y= (Xs * B
XE-YE
- Ys)*B
YE

X*Y= (Xs *Ys)* B
XE+YE

X/Y= (Xs/Ys) * B
XE-YE

XE<=YE
X=0.3*10
2
=30 Y=0.2*10
3
=200

X+Y=(0.3*10
2-3
+0.2)

*10
3
=230
X-Y=(0.3*10
2-3
-0.2) *10
3
=-170
X*Y=(0.3*0.2) *10
2+3
=6000
X/Y=(0.3/0.2) *10
2-3
=0.15
Conditions produced in floating-point
operations
Exponent overflow : +ve/-ve infinity
Exponent underflow: zero
Significand underflow: In aligning
significands, digits may flow off the right
end of the significand. Rounding is
required.
Significand overflow: In addition of
significands, carry out of MSB,
realignment is required.
FP Arithmetic +/-
Check for zeros
Align significands (adjusting exponents)
Add or subtract significands
Normalize result
Algorithm for addition & subtraction of FP
Numbers
Step 1: Zero Check
Addition & Subtraction are same except
for sign change.
If subtraction, change the sign of
subtrahend.
If either operand is 0, the other is
reported as result.

Algorithm for addition & subtraction of FP
Numbers
Step 2: Significant Alignment
Manipulate the numbers so that two
exponents are equal.
Eg. 123 * 10
0
+ 456 * 10
-2

=123 * 10
0
+ 4.56 * 10
0

= 123 + 4.56
= 127.56
Algorithm for addition & subtraction of FP
Numbers
Step 3: Addition
Add two significant; result may be zero
If significand overflow by 1 digit,
significand of result is shifted right &
exponent is incremented.
If exponent overflow occurs as a result,
this would be reported & operation is
halted.
Algorithm for addition & subtraction of FP
Numbers
Step 3: Normalization
Normalize the result.
Shift significant digits left till MSB is
nonzero. Decrement exponent, may cause
underflow.
Round off the result & report.
FP Addition & Subtraction Flowchart
FP Arithmetic x/
Check for zero
Add/subtract exponents
Multiply/divide significands (watch sign)
Normalize
Round
All intermediate results should be in
double length storage
A Multiplication Algorithm
Step 1: Zero check
If either operand is 0, the other is
reported as result.
Add exponent. If exponent are stored in
bias format, sum would have double bias,
so subtract bias value from sum.
If exponent overflow or underflow , report
& end algorithm

A Multiplication Algorithm
Step 2: Multiply
Multiply significands taking into account
their signs.

Step 3: Normalize
Normalize & round the result

Floating Point Multiplication
A Division Algorithm
Step 1: Zero check
If divisor is 0, an error report is issued or
result is set to infinity.
A dividend of 0 results in 0.
A divisor exponent is subtracted from
dividend exponent. This removes bias which
must be added back in.
Check for exponent overflow or underflow.

Step 2: Divide
Divide significands & normalize & round
result.

Floating Point Division
Questionnaire
Explain restoring division method. Hence
perform -7 -3.
Write algorithm for floating point addition.
Explain with an example an algorithm for
2s compliment multiplication.
Explain Booth Algorithm for 2s compliment
multiplication using flow-chart.
Explain Booth Algorithm for 2s compliment
multiplication using flow-chart. Hence
multiply 7 * -3 using Booth algorithm.

Explain floating point representation IEEE
standard 754.
Explain the principle of Booth Algorithm,
when it is less efficient.
A 8-bit register holds number in 2s
compliment form with leftmost bit as sign
bit.
i) What is the largest positive number can be
stored, express answer in binary & decimal
format.
ii) What is the largest negative number can be
stored, express answer in binary & decimal
mformat.

Vous aimerez peut-être aussi