Lecture 6 Instruction Set Architectures
Download
Report
Transcript Lecture 6 Instruction Set Architectures
Topic 3d
Representation of Real
Numbers
Introduction to Computer
Systems Engineering
(CPEG 323)
2015/7/21
cpeg323-08F\Topic3d-323
1
Recap
What can be represented in n bits?
Unsigned
2’s Complement
BCD
0
-2n-1
0
to
to
to
2n - 1
2n-1 - 1
10n/4 - 1
But, what about?
very large numbers
9,349,398,989,787,762,244,859,087,678
very small number
0.0000000000000000000000045691
rationals
2/3
2
Irrationals 2.71828…., 3.1415926…..,
2015/7/21
cpeg323-08F\Topic3d-323
2
Conceptual Overview: Finite-precision
numbers
Negative Positive
underflow underflow
Negative
overflow
Expressible
negative
numbers
zero
……………….
Expressible
positive
numbers
Positive
overflow
……………….
• Is there any “underflow” region in integer representation?
• Between two adjacent integer numbers, there is no other
integer.
2015/7/21
cpeg323-08F\Topic3d-323
3
Representing Real Numbers
How to represent fractional parts to the
right of the ``decimal'' point?
A number like 0.12 (i.e., (1/2)10) not
represented well by integers 0 or 1!
Two ways to represent real numbers
better:
2015/7/21
Fixed point
Floating point
cpeg323-08F\Topic3d-323
4
Fixed-Point Data Format
4
2
1
1/2
……
S
Sign
1
0
0
Integer
0
1
1
.
0
0
1/4
0
1/8
0
1
0
Fractional
hypothetical binary point
2015/7/21
cpeg323-08F\Topic3d-323
5
Fixed Point
Pros
Add two reals just by adding the integers
Much less logic than floating point
Faster
Often used in digital signal processing
Cons
The range of numbers is narrow
number=400 000 000 000 000 000 000 000 000. 000
It is much more economical to represent as 4*1026
2015/7/21
cpeg323-08F\Topic3d-323
6
Recall Scientific Notation
decimal point
exponent
-23
6.02 x 10
Significand
radix (base)
Issues:
Arithmetic (+, -, *, / )
Representation, Normal form
Range and Precision(Determined by?)
Rounding and errors
Exceptions (e.g., divide by zero, overflow, underflow)
Properties
2015/7/21
cpeg323-08F\Topic3d-323
7
Scientific Notation: Normalized
12.35 x 10^-9 ?
1.235 x 10^-8 ?
scientific notation: has a single digit to
the left of the decimal point
Normalized scientific notation: such a
single digit must be non-zero.
2015/7/21
cpeg323-08F\Topic3d-323
8
Floating Point Representation
Numerical Form: (–1)s M 2E
Sign bit s determines whether number is
negative or positive
Significand M normally a fractional value in
range [1.0,2.0).
Exponent E weights value by power of two
Encoding
s
exp
MSB is sign bit: S=0/1
exp field encodes E
frac field encodes M
2015/7/21
cpeg323-08F\Topic3d-323
frac
9
IEEE 754 standard
Three formats: single/double/extended
precision (32,64,80 bits).
Single precision:
s
exp
1 bit
8 bits
frac
23 bits
Double precision: see page 192 in P&H book
2015/7/21
cpeg323-08F\Topic3d-323
10
IEEE 754 Standard Floating Point
Representation
the representation:
(–1)s (1+ Fraction) 2E-bias
where E is the exponent
part in the notation
Sign bit s determines whether number is negative or positive
Fraction is normally a fractional value in range between 0 and
1
A leading 1 added to the fraction is “implicit”
Exponent using a “biased” notation”
For single precision – the bias is 127
That is, when you convert the notation to the number it represents, the exponential part used should be
reading E out from the IEEE 754 notation, and calculated as E-127.
2015/7/21
cpeg323-08F\Topic3d-323
11
Advantage of using the biased
notation for exponents
Under the single-precision IEEE 754
standard: bias = 127
If the real exponent is +1, what is the
biased exponent ? Answer: 1+127 = 128!
(Note 128-127 = +1!)
How about if the real exponent is -1 ?
Answer: -1+127 = 126! (Note 126-127 = -1!)
How about if the real exponent is -127 ?
E -127 = -127, then E = ?
2015/7/21
cpeg323-08F\Topic3d-323
12
Observations
Using biased notation, the exponential
part in the single-precision IEEE 754
notation itself never get nagative.
2015/7/21
cpeg323-08F\Topic3d-323
13
Normalized Encoding Example
Value: Float F = 15213.010;
1521310 = 1.1101101101101 X 213
Significand
M
= 1.1101101101101
= 11011011011010000000000
(23 bits! With leading 1 hiding!)
frac
Exponent
E =
Exp =
1310, Bias =
12710
14010 = 10001100
Floating Point Representation:
Binary:01000110011011011011010000000000
exp
2015/7/21
frac
cpeg323-08F\Topic3d-323
14
Denormalized Values
Condition
exp = 000…0
Significand value M = 0.xxx…x
xxx…x: bits of frac
Cases
frac = 000…0
Represents value 0
Note that have distinct values +0 and –0
frac 000…0
Numbers very close to 0.0
Lose precision as get smaller
“Gradual underflow”
2015/7/21
cpeg323-08F\Topic3d-323
15
Special Values
Condition
exp = 111…1
(infinity)
Operation that overflows
Both positive and negative
E.g., 1.0/0.0 = 1.0/0.0 = +, 1.0/0.0 =
Not-a-Number (NaN)
2015/7/21
Represents case when no numeric value can be
determined
E.g., sqrt(–1),
cpeg323-08F\Topic3d-323
16
IEEE 754: Summary
Normalized:
±
0<exp<max
Any bit pattern
Denormalized:
±
0
Any nonzero bit pattern
zero:
±
0
0
Infinite:
±
11…1
0
NaN:
±
11…1
Any nonzero bit pattern
2015/7/21
cpeg323-08F\Topic3d-323
17
IEEE754: Summary (Cont.)
-Normalized -Denorm
NaN
Negative
overflow
2015/7/21
+Denorm
+Normalized +
NaN
0 +0
Negative
underflow
cpeg323-08F\Topic3d-323
Positive
underflow
Positive
overflow
18
FP Addition
Operands
(–1)s1 M1 2E1
(–1)s2 M2 2E2
Assume E1 > E2
Exact Result: (–1)s M 2E
Exponent E: E1
Sign s, significand M: Result of signed align & add
E1–E2
(–1)s1 M1
(–1)s2 M2
+
(–1)s M
2015/7/21
cpeg323-08F\Topic3d-323
19
Decimal Number Conversion
Convert Binary to Decimal (base 2 to
base 10)
x x x x x. d d d d d d …2
24 23 22 21 20
2-1 2-2 2-3 2-4 2-5 2-6 … …
1101.0112 = 1*23+1*22+0*21+1*20+0*2-1+1*2-2+1*2-3 = 13.37510
2015/7/21
cpeg323-08F\Topic3d-323
20
Decimal Number Conversion (Cont.)
Convert Decimal Integer to binary Integer
divide the decimal value by 2 and then write down the
remainder from bottom to top (Divide 2 and Get
the Remainders)
3710 = ?2
Quotient reminder
37÷2 = 18 … 1
18÷2 = 9 … 0
9÷2 = 4 … 1
4÷2 = 2 … 0
2÷2=
1 … 0
1÷2 = 0 … 1
1001012
Can it always be converted into an accurate binary number?
2015/7/21
YES!
cpeg323-08F\Topic3d-323
21
Decimal Number Conversion (Cont.)
Convert Decimal Fraction to Binary Fraction
multiply the decimal value by 2 and then write down
the integer number from top to bottom (Multiply 2
and Get the Integers) .
0.37510 = ?2
.375 * 2 =
.75 * 2 =
.5 * 2 =
0.75
1.5
1.0
Where to put the binary point? Prior to the First number!
0.0112
Can it always be converted into an accurate binary number?
2015/7/21
NO!
cpeg323-08F\Topic3d-323
22
Decimal Number Conversion (Cont.)
Convert Decimal Number to Binary Binary
Put Together: Integer Part . Fraction Part
37.37510 = 100101.011
2015/7/21
cpeg323-08F\Topic3d-323
23
Summary
Computer arithmetic is constrained by limited
precision
Bit patterns have no inherent meaning but
standards do exist
two’s complement
IEEE 754 floating point
OPcode determines “meaning” of the bit
patterns
Performance and accuracy are important so
there are many complexities in real machines
(i.e., algorithms and implementation).
2015/7/21
cpeg323-08F\Topic3d-323
24