320 likes | 434 Views
CSE 246: Computer Arithmetic Algorithms and Hardware Design. Fall 2006 Lecture 2: Redundant and residue number systems. Instructor: Prof. Chung-Kuan Cheng. Topics:. Redundant Number Systems Residue Number Systems
E N D
CSE 246: Computer Arithmetic Algorithms and Hardware Design Fall 2006 Lecture 2: Redundant and residue number systems Instructor: Prof. Chung-Kuan Cheng
Topics: • Redundant Number Systems • Residue Number Systems • Mixed Radix Number Systems (as they pertain to conversions of Residue Number Systems)
Redundant Number Systems • Examine number systems that can be characterized by the 3-tuple (r, , ) • r : radix, [, ] : set of digits • The redundancy of such a system is said to be • non-redundant if - + 1 = r • redundant if - + 1 >r • minimally redundant if - = r • maximally redundant if - =2r - 1 • over redundant if - > 2r - 1
4 2 1 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 0 1 2 2 3 4 4 5 6 4 Redundant Number Systems • Ex: (2,0,2) • Redundant - furthermore, minimally redundant Addition example: 1 0 2 (6) +1 1 1 (7) 2 1 3 [3 not in radix] + 1 1 2 2 1 = 4*2 + 2*2 +1 = 13 = 6+7
Redundant Number Systems • More addition examples: 110 121 101121 111222 +102 +101 +112210 +112222 212 222 111 20 11 20 11 20 21 11 222211 22 11220 11 2 1121220
Redundant Number Systems • What has redundancy bought us? • From the examples, it seems carry propagation has been somewhat reduced • Intuitively - redundancy acts as a buffer against carry propagation • However, carry propagation was not eliminated in (2,0,2) • Need to formalize the degree to which a particular degree of redundancy eliminates carry propagation
Redundant Number Systems • To formalize: xi+1 xi where xi + yi = r*ti+1 + wi + yi+1 yi ti+1 wi ti+2 wi+1 ti+1 + wi+1 we must bound ti+1 + wi+1 for all i to eliminate carry propagation
Redundant Number Systems As xi and yi are in [, ] and xi + yi = r * ti+1 + wi+1 • 2 r*ti+1 + wi 2 suppose there exist and such that • ti+1 we need • - wi+1 - to avoid propagation. Since this must be true for all i, whether the subscript is i or i+1 is not important. From 2 & 3 we have • r* + - r*ti+1 + wi+1 r* + - From 1 & 4 we have • 2 r* + -
Redundant Number Systems • 2 r* + - gives the following bounds for & to insure no propagation /(r-1) /(r-1) For (2,0,2): /(r-1) -> 2/(2-1) /(r-1) -> 0/(2-1) which, from 3 means all wi must be in the range [0,0] and there exist inputs requiring carry propagation
Redundant Number Systems • How then to ensure that no carry propagation is needed? • Change (r, , ) Consider (3,0,5) /(r-1) -> 5/(3-1) /(r-1) -> 0/(3-1) yields : 3 (first integer after 5/2) : 0 From 3, this gives a range on wi of [0,2] Thus, when presented with multiple possibilities for representing the sum of two digits, always choose terms in [0,2] and there will be no carry propagation
Redundant Number Systems Ex: for (3,0,5) 243 +435 5+3 = 8 could use 15, but choose from [0,2] 22 yielding 22 and no propagation 21 20 2232
Redundant Number Systems • Advantages • Constant time addition/subtraction! • Disadvantages • More space • Comparison • no unique forms/representations • conversion to canonical form as expensive as summation • Uses: • excellent for intermediate results of addition • Multiplication • DSP loops that have no comparisons
Residue Number Systems • Define a Residue Number System as follows For any given integer x, x=(x1|x2|...|xk)RNS(P1|P2|...|Pk) where xi = x mod Pi and i,j Pi is relatively prime to Pj EX: 84 = (0|4|0)RNS(7|5|3) 1 = (1|1|1)RNS(7|5|3) 2 = (2|2|2)RNS(7|5|3) 3 = (3|3|0)RNS(7|5|3) Residue numbers are not positional. Residue numbers have unique representations mod i.e. for (7|5|3) there are unique representations of 0-104.
Residue Number Systems • Need a conversion system to/from binary • What benefits of doing operations in RNS? Binary # RNS ops +,-,* RNS # Binary #
Residue Number Systems • Addition (subtraction is similar) x+y = ((x1+y1)p1| (x2+y2)p2| ... | (xk+yk)pk)RNS(P1|P2|...|Pk) where xi = (x)pi and yi = (y)pi • Multiplication x*y = ((x1*y1)p1| (x2*y2)p2| ... | (xk*yk)pk)RNS(P1|P2|...|Pk) where xi = (x)pi and yi = (y)pi • Division ? • Hard. What does a fraction look like in RNS?
Residue Number Systems • Advantages: • Parallel processing of +,*,- on smaller numbers • Adding more primes without increasing range allows for use of fields to assist in fault tolerance (Ex: go from (7|5|3) to (7|5|3|2) where last field is used for parity) • Disadvantages: • No division • Comparison non-trivial • Conversion costs • How to do conversion?
Residue Number Systems • Conversion: RNS -> Binary # Given (x1|x2|...|xk)RNS(P1|P2|..|Pk) Binary number x = mod where i = inv One may consider, for the purposes of computation, all i as being a pre-defined part of each particular RNS system See: Chinese Remainder Theorem
Residue Number Systems • Conversion -> Bin# example: 84 = (0|4|0)RNS(7|5|3) For (7|5|3): (1* 5*3)7 = 1 1 : 1 (2* 7*3)5 = 1 2 : 1 (3* 7*5)3 = 1 3 : 2 x = (0*1*5*3*7/7 + 4*2*7*3*5/5 + 0*3*7*5*3/3)105 x = (0 + 4*2*21 + 0)105 x = (4*1*21)105 = 84105
Residue Number Systems • Conversion -> Bin # example: 1 = (1|1|1)RNS(7|5|3) (1* 5*3)7 = 1 1 : 1 (2* 7*3)5 = 1 2 : 1 (3* 7*5)3 = 1 3 : 2 x = (1*1*5*3*7/7 + 1*2*7*3*5/5 + 1*3*7*5*3/3)105 x = (1*1*15 + 1*2*21 + 1*3*35)105 x = (1*1*15+1*1*21+1*2*35)105=(106)105 = 1105
Residue Number Systems • Minimize: • total length of primes (determining range) • max length of any prime (determining HW cost/delay per unit) • # of primes (determining # of parallel units) • Popular choices: 2r-1 (2,3 particularly popular) • Thm: 2a-1 & 2b-1 are relatively prime iff a & b are relatively prime Conversion -> Chinese remainder theorem Binary # RNS ops +,-,* How to choose primes? RNS # Binary # What about Bin -> RNS?
Residue Number Systems • Binary # to RNS conversion • Uses a lookup table Observation: for n digit binary number y (yn-1,yn-2,...,y0)pi= [(2n-1)pi*yn-1+ (2n-2)pi*yn-2+...+(20)pi*y0]pi Use a table to store (2i)pi Example for (7|5|3) (1011)=(x1|x2|x3)RNS(7|5|3) x1 = (1+2+1)7 = 4 x2 = (3+2+1)5 = 1 x3 = (2+2+1)3 = 2
Residue Number Systems • Comparison • Could convert back and forth to/from binary. • Another approach: convert to a mixed radix system, as numbers in a mixed radix system are comparable.
Mixed Radix Number Systems • We shall describe a Mixed Radix System as follows: x =(Zk-1|Zk-2|...Z0)MRS(Pk-1|Pk-2|...|P1) x = Zk-1Pk-1Pk-2...P1 + Zk-2Pk-2Pk-1...P0 + ... + Z1P1+Z0
Mixed Radix Number Systems • Conversion from RNS to MRS Given x = (xk-1|xk-2|...|x0)RNS(Pk-1|Pk-2|...|P0) We want x=(Zk-1|Zk-2|...|Z0)MRS(Pk-2|Pk-3|...|P0) Observation: The MRS digit Z0 is in units of 1, so fewer primes needed in MRS than in RNS
Mixed Radix Number Systems • Question: what is the relationship between x0 and Z0? • Can it be found by simple inspection? • Yes. • x0 = Z0. • Why? • x0 is the residue left from x mod P0 - all other terms are multiples of P0 -> x0 = Z0
Mixed Radix Number Systems • This yields • x-x0 = (x’k-1|x’k-2|...|x’1|-)RNS(Pk-1|Pk-2|...|P1|-) = (Zk-1|Zk-2|...|Z1|0)MRS(Pk-2|Pk-3|...|P0)where x’i = (xi-x0)pi Note that this is the only change in MRS
Mixed Radix Number Systems • Which leads to • (x-x0)/P0 = (x”k-1|x”k-2|...|x”1|-)RNS(Pk-1|Pk-2|...|P1|-) = (Zk-1|Zk-2|...|Z1) MRS (Pk-2|Pk-1|...|P1)Z1 = x”1and so forth. (Deduction, division, repeat) However, it was earlier noted that division in RNS is hard - yet here we are doing division. The trick? In this case, we know that we will always get integer results.
Back to RNS • Division in RNS x”i =xi * (P0-1)pi where (Pj-1)pi is the multiplicative inverse of Pj with respect to Pi Ex: (3-1)7 = 5 --> (3*(3-1)7)7 = 1 (3-1)5 = 2 --> (3*(3-1)5)5 = 1
Example: RNS -> MRS Y=(1|3|2)RNS(7|5|3) = (Z2|Z1|Z0)MRS(5|3) That is, Y = Z2*5*3+Z1*3+Z0 by 1 (see slide #25) Z0 = x0 = 2 from 2 (see slide #26) we have y-x0 = y-2 =(x’2|x’1|0)RNS(7|5|3) = (Z2|Z1|0)MRS(5|3) x’2 = (x2-x0)p2= (1-2)7 = 6 x’1 = (3-2)5 = 1 y-2 = (6|1|0)RNS(7|5|3)=(Z2|Z1|0)MRS(5|3)
Example continued. 3 (See slide #27) then gives (y-x0)/P0= (y-2)/3 = (x”2|x”1|-)RNS(7|5|3) = (Z2|Z1)MRS(5) then Q: How does one derive x”2 ? A: “It’s hard.” One has to try values one by one up to the modulus remembering that (3-1)7 = 5, (3-1)5 = 2 x”2= (5*6)7 = 2, x”1 =(1*2)5 = 2 (y-2)/3 = (2|2|-)RNS(7|5|3) = (Z2|Z1)MRS(5)
Ex. Cont. Apply 1 again, Z1=x”1=2 gives by 2 (y-x0)/P0 - x”1 = (x”’2|0|-)RNS(7|5|3) = (Z2|0)MRS(5) x”’2 =(x”2-2)7 = (2-2)7 = 0 (0|0|-)RNS(7|5|3)=(Z0|0)MRS(5) By 3 x””2 = (x”’2*(5-1)7)7 = 0 = Z2 Yields final result (0|2|2)MRS(5|3)
Ex. Concluded. Check correctness (0|2|2)MRS(5|3) = 0*5*3+2*3+2 = 8 87 = 1, 85 = 3,83 = 2 -> (1|3|2)RNS(7|5|3) Correct! • Closing remark /Moral of the examples -“Inversion is key”