• Notice the following equality (Booth did)
• 2J + 2J–1 + 2J–2 + … + 2K = 2J+1 – 2K • Example: 0111 = 1000 - 0001 • We can exploit this to create a faster multiplier
• How?
• Sequence of N 1s in the multiplier yields sequence of N additions • Replace with one addition and one subtraction
© 2009 Daniel J. Sorin from Roth and Lebeck
ECE 152
44
Booth In Action
• For each multiplier bit, also examine bit to its right
• • • • 00: 10: 11: 01: middle of a run of 0s, do nothing beginning of a run of 1s, subtract multiplicand middle of a run of 1s, do nothing end of a run of 1s, add multiplicand
* + + +
43 12 0 0 172 0 688 516
= = = = = = = =
00000101011 00000001100 00000000000 00000000000 11101010100 00000000000 01010110000 01000000100
// // // // //
multiplier multiplier multiplier multiplier multiplier
bits bits bits bits bits
0_ (implicit 0) 00 10 11 01
ICQ: so why is Booth better?
© 2009 Daniel J. Sorin from Roth and Lebeck ECE 152 45
Booth Hardware
Multiplicand
16 16 + or – 16± Multiplier 16 16 Product 32>>1 control 2
16
• Control algorithm: repeat 16 times
• Multiplier LSBs == 10? Subtract multiplicand from product • Multiplier LSBs == 01? Add multiplicand to product • Shift product/multiplier right by 1 (not by 2!)
© 2009 Daniel J. Sorin from Roth and Lebeck ECE 152 46
Booth in Summary
• Performance/efficiency
+ Good for sequences of 3 or more 1s • Replaces 3 (or more) adds with 1 add and 1 subtract • Doesn’t matter for sequences of 2 1s • Replaces 2 adds with 1 add and 1 subtract (add = subtract) – Actually bad for singleton 1s • Replaces 1 add with 1 add and 1 subtract
• Bottom line
• Worst case multiplier (101010) requires N/2 adds + N/2 subs • What is the worst case multiplier for straight multiplication? • How is this better than normal multiplication?
© 2009 Daniel J. Sorin from Roth and Lebeck
ECE 152
47
Modified Booth’s Algorithm
• What if we detect