Title: CS151B Computer Systems Architecture Winter 2002 TuTh 2-4pm - 2444 BH
1CS151BComputer Systems ArchitectureWinter 2002
TuTh 2-4pm - 2444 BH
Lecture 6 ALU Design II Multiply, Divide,
and Floating Point Operations
- Instructor Prof. Jason Cong
- ltcong_at_cs.ucla.edugt
2Review ALU Design
- Bit-slice plus extra on the two ends
- Overflow means number too large for the
representation - Carry-look ahead and other adder tricks
32
A
signed-arith and cin xor co
a0
b0
a31
b31
4
ALU0
ALU31
M
cin
co
cin
co
s0
s31
C/L to produce select, comp, c-in
32
Ovflw
S
3Review Elements of the Design Process
- Divide and Conquer (e.g., ALU)
- Formulate a solution in terms of simpler
components. - Design each of the components (subproblems)
- Generate and Test (e.g., ALU)
- Given a collection of building blocks, look for
ways of putting them together that meets
requirement - Successive Refinement (e.g., multiplier, divider)
- Solve "most" of the problem (i.e., ignore some
constraints or special cases), examine and
correct shortcomings. - Formulate High-Level Alternatives (e.g., shifter)
- Articulate many strategies to "keep in mind"
while pursuing any one approach. - Work on the Things you Know How to Do
- The unknown will become obvious as you make
progress.
4Review Summary of the Design Process
Hierarchical Design to manage complexity Top
Down vs. Bottom Up vs. Successive
Refinement Importance of Design
Representations Block Diagrams
Decomposition into Bit Slices Truth Tables,
K-Maps Circuit Diagrams Other
Descriptions state diagrams, timing diagrams,
reg xfer, . . . Optimization Criteria
Gate Count Package Count
top down
bottom up
Logic Levels Fan-in/Fan-out
Area
Power
Delay
Cost
Design time
Pin Out
5MIPS arithmetic instructions
- Instruction Example Meaning Comments
- add add 1,2,3 1 2 3 3 operands
exception possible - subtract sub 1,2,3 1 2 3 3 operands
exception possible - add immediate addi 1,2,100 1 2 100
constant exception possible - add unsigned addu 1,2,3 1 2 3 3
operands no exceptions - subtract unsigned subu 1,2,3 1 2 3 3
operands no exceptions - add imm. unsign. addiu 1,2,100 1 2 100
constant no exceptions - multiply mult 2,3 Hi, Lo 2 x 3 64-bit
signed product - multiply unsigned multu2,3 Hi, Lo 2 x 3
64-bit unsigned product - divide div 2,3 Lo 2 3, Lo quotient, Hi
remainder - Hi 2 mod 3
- divide unsigned divu 2,3 Lo 2
3, Unsigned quotient remainder - Hi 2 mod 3
- Move from Hi mfhi 1 1 Hi Used to get copy of
Hi - Move from Lo mflo 1 1 Lo Used to get copy of
Lo
6MULTIPLY (unsigned)
- Paper and pencil example (unsigned)
- Multiplicand 1000
Multiplier 1001 1000
0000 0000 1000 Product
01001000 - m bits x n bits mn bit product
- Binary makes it easy
- 0 gt place 0 ( 0 x multiplicand)
- 1 gt place a copy ( 1 x multiplicand)
- 4 versions of multiply hardware algorithm
- successive refinement
7Unsigned Combinational Multiplier
- Stage i accumulates A 2 i if Bi 1
- Q How much hardware for 32 bit multiplier?
Critical path?
8How does it work?
0
0
0
0
0
0
0
B0
B1
B2
B3
P0
P1
P2
P3
P4
P5
P6
P7
- at each stage shift A left ( x 2)
- use next bit of B to determine whether to add in
shifted multiplicand - accumulate 2n bit partial product at each stage
9Unisigned shift-add multiplier (version 1)
- 64-bit Multiplicand reg, 64-bit ALU, 64-bit
Product reg, 32-bit multiplier reg
Shift Left
Multiplicand
64 bits
Multiplier
Shift Right
64-bit ALU
32 bits
Write
Product
Control
64 bits
Multiplier datapath control
10Multiply Algorithm Version 1
Start
Multiplier0 1
Multiplier0 0
1a. Add multiplicand to product place
the result in Product register
- Product Multiplier Multiplicand 0000 0000
0011 0000 0010 - 0000 0010 0001 0000 0100
- 0000 0110 0000 0000 1000
- 0000 0110
2. Shift the Multiplicand register left 1 bit.
3. Shift the Multiplier register right 1 bit.
32nd repetition?
No lt 32 repetitions
Yes 32 repetitions
Done
11Observations on Multiply Version 1
- 1 clock per cycle gt ? 100 clocks per multiply
- Ratio of multiply to add 51 to 1001
- 1/2 bits in multiplicand always 0gt 64-bit adder
is wasted - 0s inserted in left of multiplicand as
shiftedgt least significant bits of product
never changed once formed - Instead of shifting multiplicand to left, shift
product to right?
12MULTIPLY HARDWARE Version 2
- 32-bit Multiplicand reg, 32 -bit ALU, 64-bit
Product reg, 32-bit Multiplier reg
Multiplicand
32 bits
Multiplier
Shift Right
32-bit ALU
32 bits
Shift Right
Product
Control
Write
64 bits
13How to think of this?
- Remember original combinational multiplier
14Simply warp to let product move right...
0
0
0
0
B0
B1
B2
B3
P0
P1
P2
P3
P4
P5
P6
P7
- Multiplicand stays still and product moves right
15Multiply Algorithm Version 2
Product Multiplier Multiplicand
0000 0000 0011 0010 1 0010
0000 0011 0010 2 0001 0000 0011
0010 3 0001 0000 0001 0010 1
0011 0000 0001 0010 2 0001 1000
0001 0010 3 0001 1000 0000
0010 1 0001 1000 0000 0010 2 0000
1100 0000 0010 3 0000 1100 0000
0010 1 0000 1100 0000 0010 2
0000 0110 0000 0010 3 0000 0110
0000 0010 0000 0110 0000
0010
16Still more wasted space!
Product Multiplier Multiplicand
0000 0000 0011 0010 1 0010 0000
0011 0010 2 0001 0000 0011
0010 3 0001 0000 0001 0010 1 0011
0000 0001 0010 2 0001 1000 0001
0010 3 0001 1000 0000 0010 1
0001 1000 0000 0010 2 0000 1100
0000 0010 3 0000 1100 0000
0010 1 0000 1100 0000 0010 2 0000
0110 0000 0010 3 0000 0110 0000
0010 0000 0110 0000 0010
17Observations on Multiply Version 2
- Product register wastes space that exactly
matches size of multipliergt combine Multiplier
register and Product register
18MULTIPLY HARDWARE Version 3
- 32-bit Multiplicand reg, 32 -bit ALU, 64-bit
Product reg, (0-bit Multiplier reg)
Multiplicand
32 bits
32-bit ALU
Shift Right
Product
(Multiplier)
Control
Write
64 bits
19Multiply Algorithm Version 3
Start
- Multiplicand Product0010 0000 0011
Product0 1
Product0 0
2. Shift the Product register right 1 bit.
32nd repetition?
No lt 32 repetitions
Yes 32 repetitions
Done
20Observations on Multiply Version 3
- 2 steps per bit because Multiplier Product
combined - MIPS registers Hi and Lo are left and right half
of Product - Gives us MIPS instruction MultU
- How can you make it faster?
- What about signed multiplication?
- easiest solution is to make both positive
remember whether tocomplement product when done
(leave out the sign bit, run for 31 steps) - apply definition of 2s complement
- need to sign-extend partial products and subtract
at the end - Booths Algorithm is elegant way to multiply
signed numbers using same hardware as before and
save cycles - can handle multiple bits at a time
21Motivation for Booths Algorithm
- Example 2 x 6 0010 x 0110
0010 x 0110 0000 shift (0 in
multiplier) 0010 add (1 in
multiplier) 0010 add (1 in
multiplier) 0000 shift (0 in
multiplier) 00001100 - ALU with add or subtract gets same result in more
than one way 6 2 8 0110 00010
01000 11110 01000 - For example
- 0010 x 0110 0000
shift (0 in multiplier) 0010 sub (first 1
in multpl.) . 0000 shift (mid
string of 1s) . 0010 add (prior step
had last 1) 00001100
22Booths Algorithm
middle of run
beginning of run
end of run
0 1 1 1 1 0
- Current Bit Bit to the Right Explanation Example O
p - 1 0 Begins run of 1s 0001111000 sub
- 1 1 Middle of run of 1s 0001111000 none
- 0 1 End of run of 1s 0001111000 add
- 0 0 Middle of run of 0s 0001111000 none
- Originally for Speed (when shift was faster than
add) - Replace a string of 1s in multiplier with an
initial subtract when we first see a one and then
later add for the bit after the last one
23Booths Example (2 x 7)
Operation Multiplicand Product next? 0. initial
value 0010 0000 0111 0 10 -gt sub
- 1a. P P - m 1110
1110 1110 0111 0 shift P (sign ext) - 1b. 0010 1111 0011 1 11 -gt nop, shift
- 2. 0010 1111 1001 1 11 -gt nop, shift
- 3. 0010 1111 1100 1 01 -gt add
- 4a. 0010 0010
- 0001 1100 1 shift
- 4b. 0010 0000 1110 0 done
24Booths Example (2 x -3)
Operation Multiplicand Product next? 0. initial
value 0010 0000 1101 0 10 -gt sub
- 1a. P P - m 1110
1110 1110 1101 0 shift P (sign ext) - 1b. 0010 1111 0110 1 01 -gt add
0010 - 2a. 0001 0110 1 shift P
- 2b. 0010 0000 1011 0 10 -gt sub
1110 - 3a. 0010 1110 1011 0 shift
- 3b. 0010 1111 0101 1 11 -gt nop
- 4a 1111 0101 1 shift
- 4b. 0010 1111 1010 1 done
25MIPS logical instructions
- Instruction Example Meaning Comment
- and and 1,2,3 1 2 3 3 reg.
operands Logical AND - or or 1,2,3 1 2 3 3 reg. operands
Logical OR - xor xor 1,2,3 1 2 ??3 3 reg. operands
Logical XOR - nor nor 1,2,3 1 (2 3) 3 reg.
operands Logical NOR - and immediate andi 1,2,10 1 2
10 Logical AND reg, constant - or immediate ori 1,2,10 1 2 10 Logical
OR reg, constant - xor immediate xori 1, 2,10 1 2
10 Logical XOR reg, constant - shift left logical sll 1,2,10 1 2 ltlt
10 Shift left by constant - shift right logical srl 1,2,10 1 2 gtgt
10 Shift right by constant - shift right arithm. sra 1,2,10 1 2 gtgt
10 Shift right (sign extend) - shift left logical sllv 1,2,3 1 2 ltlt 3
Shift left by variable - shift right logical srlv 1,2, 3 1 2 gtgt
3 Shift right by variable - shift right arithm. srav 1,2, 3 1 2 gtgt 3
Shift right arith. by variable
26Shifters
Two kinds logical-- value shifted in is
always "0" arithmetic-- on right
shifts, sign extend
msb
lsb
"0"
"0"
msb
lsb
"0"
Note these are single bit shifts. A given
instruction might request 0 to 32 bits to be
shifted!
27Combinational Shifter from MUXes
B
A
Basic Building Block
sel
D
8-bit right shifter
- What comes in the MSBs?
- How many levels for 32-bit shifter?
28Barrel Shifter
Technology-dependent solutions transistor per
switch
29Barrel Shifter (2)
- 2N-1 inputs (diagonal)
- N outputs (horizontal)
- N control signals (vertical) only one can be
true - Example 2-bit right logical shift
- SR21
- A0-A3 inputs
- A4 A5 1
30Divide Paper Pencil
- 1001 Quotient
- Divisor 1000 1001010 Dividend 1000
10 101 1010 1000 10
Remainder (or Modulo result) - See how big a number can be subtracted, creating
quotient bit on each step - Binary gt 1 divisor or 0 divisor
- Dividend Quotient x Divisor Remaindergt
Dividend Quotient Divisor - 3 versions of divide, successive refinement
31DIVIDE HARDWARE Version 1
- 64-bit Divisor reg, 64-bit ALU, 64-bit Remainder
reg, 32-bit Quotient reg
Shift Right
Divisor
64 bits
Quotient
Shift Left
64-bit ALU
32 bits
Write
Remainder
Control
64 bits
32Divide Algorithm Version 1
- Takes n1 steps for n-bit Quotient Rem.
- Remainder Quotient Divisor0000 0111
0000 0010 0000
Remainder lt 0
Test Remainder
Remainder ?? 0
No lt n1 repetitions
Yes n1 repetitions (n 4 here)
33Divide Algorithm I example (7 / 2)
- Remainder Quotient Divisor 0000
0111 00000 0010 0000 - 1 1110 0111 00000 0010 0000
- 2 0000 0111 00000 0010 0000
- 3 0000 0111 00000 0001 0000
- 1 1111 0111 00000 0001 0000
- 2 0000 0111 00000 0001 0000
- 3 0000 0111 00000 0000 1000
- 1 1111 1111 00000 0000 1000
- 2 0000 0111 00000 0000 1000
- 3 0000 0111 00000 0000 0100
- 1 0000 0011 00000 0000 0100
- 2 0000 0011 00001 0000 0100
- 3 0000 0011 00001 0000 0010
- 1 0000 0001 00001 0000 0010
- 2 0000 0001 00011 0000 0010
- 3 0000 0001 00011 0000 0010
-
Answer Quotient 3 Remainder 1
34Observations on Divide Version 1
- 1/2 bits in divisor always 0gt 1/2 of 64-bit
adder is wasted gt 1/2 of divisor is wasted - Instead of shifting divisor to right, shift
remainder to left? - 1st step cannot produce a 1 in quotient bit
(otherwise too big) gt switch order to shift
first and then subtract, can save 1 iteration
35Divide Algorithm I example wasted space
- Remainder Quotient Divisor 0000
0111 00000 0010 0000 - 1 1110 0111 00000 0010 0000
- 2 0000 0111 00000 0010 0000
- 3 0000 0111 00000 0001 0000
- 1 1111 0111 00000 0001 0000
- 2 0000 0111 00000 0001 0000
- 3 0000 0111 00000 0000 1000
- 1 1111 1111 00000 0000 1000
- 2 0000 0111 00000 0000 1000
- 3 0000 0111 00000 0000 0100
- 1 0000 0011 00000 0000 0100
- 2 0000 0011 00001 0000 0100
- 3 0000 0011 00001 0000 0010
- 1 0000 0001 00001 0000 0010
- 2 0000 0001 00011 0000 0010
- 3 0000 0001 00011 0000 0010
-
36Divide Paper Pencil
- 01010 Quotient
- Divisor 0001 00001010 Dividend
00001 0001 0000
0001 0001
0 00 Remainder
(or Modulo result) - Notice that there is no way to get a 1 in
leading digit!(this would be an overflow, since
quotient would haven1 bits)
37DIVIDE HARDWARE Version 2
- 32-bit Divisor reg, 32-bit ALU, 64-bit Remainder
reg, 32-bit Quotient reg
Divisor
32 bits
Quotient
Shift Left
32-bit ALU
32 bits
Shift Left
Remainder
Control
Write
64 bits
38Divide Algorithm Version 2
- Remainder Quotient Divisor 0000 0111
0000 0010
Remainder ? 0
Test Remainder
Remainder lt 0
No lt n repetitions
Yes n repetitions (n 4 here)
39Observations on Divide Version 2
- Eliminate Quotient register by combining with
Remainder as shifted left - Start by shifting the Remainder left as before.
- Thereafter loop contains only two steps because
the shifting of the Remainder register shifts
both the remainder in the left half and the
quotient in the right half - The consequence of combining the two registers
together and the new order of the operations in
the loop is that the remainder will shifted left
one time too many. - Thus the final correction step must shift back
only the remainder in the left half of the
register
40DIVIDE HARDWARE Version 3
- 32-bit Divisor reg, 32 -bit ALU, 64-bit Remainder
reg, (0-bit Quotient reg)
Divisor
32 bits
32-bit ALU
HI
LO
Shift Left
Remainder
(Quotient)
Control
Write
64 bits
41Divide Algorithm Version 3
- Remainder Divisor0000 0111 0010
Test Remainder
Remainder lt 0
Remainder ? 0
No lt n repetitions
Yes n repetitions (n 4 here)
42Observations on Divide Version 3
- Same Hardware as Multiply just need ALU to add
or subtract, and 64-bit register to shift left or
shift right - Hi and Lo registers in MIPS combine to act as
64-bit register for multiply and divide - Signed Divides Simplest is to remember signs,
make positive, and complement quotient and
remainder if necessary - Note Dividend and Remainder must have same sign
- Note Quotient negated if Divisor sign Dividend
sign disagreee.g., 7 2 3, remainder 1 - What about? 7 2 4, remainder 1
- Possible for quotient to be too large if divide
64-bit integer by 1, quotient is 64 bits (called
saturation)
43What is in a number?
- What can be represented in N bits?
- Unsigned 0 to 2N - 1
- 2s Complement - 2N-1 to 2N-1 - 1
- 1s Complement -2N-11 to 2N-1-1
- Excess M 2 -M to 2 N - M - 1
- (E e M)
- BCD 0 to 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
- irrationals
- transcendentals e, ?
44Recall Scientific Notation
exponent
decimal point
Sign, magnitude
23
-24
6.02 x 10 1.673 x 10
radix (base)
Mantissa
Sign, magnitude
e - 127
IEEE F.P. 1.M x 2
- Issues
- Arithmetic (, -, , / )
- Representation, Normal form
- Range and Precision
- Rounding
- Exceptions (e.g., divide by zero, overflow,
underflow) - Errors
- Properties ( negation, inversion, if A ?? B then
A - B ? 0 )
45Review from Prerequisties Floating-Point
Arithmetic
Representation of floating point numbers in IEEE
754 standard single precision
1
8
23
S
E
sign
M
mantissa sign magnitude, normalized binary
significand w/ hidden integer bit 1.M
exponent excess 127 binary integer
actual exponent is e E - 127
0 lt E lt 255
S
E-127
N (-1) 2 (1.M)
0 0 00000000 0 . . . 0 -1.5 1
01111111 10 . . . 0
Magnitude of numbers that can be represented is
in the range
-126
127
-23
)
2
(1.0)
(2 - 2
to
2
which is approximately
-38
38
to
3.40 x 10
1.8 x 10
(integer comparison valid on IEEE Fl.Pt. numbers
of same sign!)
46Basic Addition Algorithm/Multiply issues
For addition (or subtraction) this translates
into the following steps (1) compute Ye - Xe
(getting ready to align binary point) (2) right
shift Xm that many positions to form Xm 2 (3)
compute Xm 2 Ym if representation
demands normalization, then normalization step
follows (4) left shift result, decrement
result exponent (e.g., 0.001xx) right
shift result, increment result exponent (e.g.,
101.1xx) continue until MSB of data is 1
(NOTE Hidden bit in IEEE Standard) (5) for
multiply, doubly biased exponent must be
corrected Xe 7 Ye -3
Excess 8 extra subtraction
step of the bias amount (6) if result is 0
mantissa, may need to zero exponent by special
step
Xe-Ye
Xe-Ye
7 8 -3 8 4 8 8
Xe 1111 Ye 0101 10100
15 5 20
47Extra Bits for Rounding
"Floating Point numbers are like piles of sand
every time you move one you lose a little sand,
but you pick up a little dirt." How many extra
bits? IEEE As if computed the result exactly
and rounded.
Need of extra bits For addition 1.xxxxx 1.xxx
xx 1.xxxxx 1.xxxxx 0.001xxxxx 0.01xxxxx
1x.xxxxy 1.xxxxxyyy
1x.xxxxyyy
Needed post-normalization pre-normalization
pre and post
- Guard Digits digits to the right of the first p
digits of significand to guard against loss of
digits can later be shifted left into first P
places during normalization. - IEEE 754 keeps 2 extra bits guard bit and round
bit
48Rouding with Guard Digits
Example 2.56x100 2.34x102 (assuming 3
significant digits)
With guard digits
Without guard digits
2.3400 2.34 0.0256
0.02 --------------------
-------------
2.3656 2.36 Rounded to 2.37
- one round digit must be carried to the right of
the guard digit so that after a normalizing left
shift, the result can be rounded, according to
the value of the round digit - ulp units in the last place
- IEEE 754 guarantees the accuracy within one-half
ulp
49Sticky Bit
Additional bit to the right of the round digit to
better fine tune rounding d0 . d1 d2 d3 . . .
dp-1 0 0 0 0 . 0 0 X . . . X X
X S X X S
Sticky bit set to 1 if exist any 1 bit fall
off the end of the round digit
- Allow machine to see difference between 0.5000
vs 0.5001 - May set during addition when shifting the
smaller number to the right
50Rounding Methods
51Denormalized (Subnormal) Numbers
2-bias
denorm gap
1-bias
-bias
2
2
0
2
Suppose B 2, 3-bit mantissa
The gap between 0 and the next representable
number is much larger than the gaps between
nearby representable numbers. IEEE standard uses
denormalized numbers (exp. 0 significand
ltgt0) to fill in the gap, making the distances
between numbers near 0 more alike.
2-bias
1-bias
-bias
2
2
0
2
p-1 bits of precision
p bits of precision
same spacing, half as many values!
NOTE PDP-11, VAX cannot represent subnormal
numbers. These machines underflow
to zero instead.
52Infinity and NaNs
Not a number, but not infinity (e.q. sqrt(-4))
invalid operation exception (unless operation
is or )
S 1 . . . 1 non-zero
NaN
HW decides what goes here
NaNs propagate f(NaN) NaN
53Pentium Bug
- Some dont-care entry was introduced incorrectly
in a lookup-table for floating-point division - First 11 bits to right of decimal point always
correct bits 12 to 52 where bug can occur (4th
to 15th decimal digits) - FP divisors near integers 3, 9, 15, 21, 27 are
dangerous ones - 3.0 gt d ? 3.0 - 36 x 222 , 9.0 gt d ? 9.0 - 36 x
220 - 15.0 gt d ? 15.0 - 36 x 220 , 21.0 gt d ? 21.0 -
36 x 219 - 0.333333 x 9 could be problem
- In Microsoft Excel, try (4,195,835 / 3,145,727)
3,145,727 - 4,195,835 gt not a Pentium with bug
- 4,195,579 gt Pentium with bug(assuming Excel
doesnt already have SW bug patch) - Rarely noticed since error in 5th significant
digit - Success of IEEE standard made discovery possible
all computers should get same answer
54Pentium Bug Time line
- June 1994 Intel discovers bug in Pentium takes
months to make change, reverify, put into
production plans good chips in January 1995 4 to
5 million Pentiums produced with bug - Scientist suspects errors and posts on Internet
in September 1994 - Nov. 22 Intel Press release Can make errors in
9th digit ... Most engineers and financial
analysts need only 4 of 5 digits. Theoretical
mathematician should be concerned. ... So far
only heard from one. - Intel claims happens once in 27,000 years for
typical spread sheet user - 1000 divides/day x error rate assuming numbers
random - Dec 12 IBM claims happens once per 24 days Bans
Pentium sales - 5000 divides/second x 15 minutes 4,200,000
divides/day - IBM statement http//www.ibm.com/Features/pentium
.html - Intel said it regards IBM's decision to halt
shipments of its Pentium processor-based systems
as unwarranted.
55Pentium conclusion Dec. 21, 1994 500M write-off
- To owners of Pentium processor-based computers
and the PC community - We at Intel wish to sincerely apologize for our
handling of the recently - publicized Pentium processor flaw.
- The Intel Inside symbol means that your
computer has a microprocessor second to none in
quality and performance. Thousands of Intel
employees work very hard to ensure that this is
true. But no microprocessor is ever perfect. - What Intel continues to believe is technically
an extremely minor problem has taken on a life
of its own. Although Intel firmly stands behind
the quality of the current version of the Pentium
processor, we recognize that many users have
concerns. - We want to resolve these concerns.
- Intel will exchange the current version of the
Pentium processor for an - updated version, in which this floating-point
divide flaw is corrected, for - any owner who requests it, free of charge anytime
during the life of their - computer. Just call 1-800-628-8686.
- Sincerely,
- Andrew S. Grove Craig R. Barrett
Gordon E. Moore - President /CEO Executive Vice
President Chairman of the Board
56Summary
- Multiply successive refinement to see final
design - 32-bit Adder, 64-bit shift register, 32-bit
Multiplicand Register - Booths algorithm to handle signed multiplies
- There are algorithms that calculate many bits of
multiply per cycle (see exercises 4.36 to 4.39
in COD) - Shifter success refinement 1/bit at a time shift
register to barrel shifter - Divide can use same hardware as multiply Hi Lo
registers in MIPS - Bits have no inherent meaning operations
determine whether they are really ASCII
characters, integers, floating point numbers - Floating point basically follows paper and pencil
method of scientific notation using integer
algorithms for multiply and divide of
significands - IEEE 754 requires good rounding special values
for NaN, Infinity
57To Get More Information
- Chapter 4 of your text book
- David Patterson John Hennessy, Computer
Organization Design, Morgan Kaufmann
Publishers, 1994. - David Winkel Franklin Prosser, The Art of
Digital Design An Introduction to Top-Down
Design, Prentice-Hall, Inc., 1980. - Kai Hwang, Computer Arithmetic Principles,
architecture, and design, Wiley 1979
58Acknowledgements
- The majority of slides in this lecture are from
UC Berkeley for their CS152 course (David
Patterson, John Kubiatowicz, )