* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Residue Number Systems
List of prime numbers wikipedia , lookup
Approximations of π wikipedia , lookup
Location arithmetic wikipedia , lookup
Elementary arithmetic wikipedia , lookup
Quadratic reciprocity wikipedia , lookup
Proofs of Fermat's little theorem wikipedia , lookup
Positional notation wikipedia , lookup
Coping With the Carry Problem 1. Limit Carry to Small Number of Bits • Hybrid Redundant • Residue Number Systems 2. Detect the End of Propagation Rather Than Wait for Worst-case Time • Asynchronous (Self-Timed) Design 3. Speed-up Propagation Using Carry Lookahead and Other Methods • Lookahead • Carry-skip • Ling Adder • Carry-select • Prefix Adders • Conditional Sum 4. Eliminate Carry Propagation Altogether • Redundant Number Systems • Signed-Digit Representations Residue Number Systems (RNS) • Convert Arithmetic on Large Numbers to Arithmetic on Small Numbers • Significant Speedup in Some Signal Processing Algorithms • Valuable Tool for Theoretical Studies of the Limits of Fast Arithmetic Residue Number Systems (RNS) • Integer System • Addition, Subtraction, Multiplication Carry Free !!! • Division, Comparison, Sign Detection Complex and Slow • Inconvenient For Fractional Representations • Generally Used For Special Purpose Applications such as DSP Filters Residue Number Systems (RNS) • Radix is n-tuple of Integers (mn,mn-1,...,m1) Not a Single Base Value • Integer X Represented by n-tuple (xn,xn-1,...,x1) X mi qi xi • qi is Largest Integer Such That: 0 xi (mi 1) • xi is the Residue of X mod mi RNS Example Problem Chinese Scholar, Sun Tzu wrote (1500 years ago): What number has the remainders of 2, 3 and 2 when divided by the values 7, 5 and 3 respectively? NOTATION: xi X mod mi xi mi Sun Tzu’s Problem: X 2 | 3 | 2 RNS (7|5|3) Residue (Modulo) of a Number 11mod 3 2 1mod 3 (1 3) mod 3 2 mod 3 (2 3) mod 3 5 mod 3 2 Many Examples in Chapter 4 of Text Use: RNS 8 | 7 | 5 | 3 Moduli Selection • Dynamic Range – Product of k Relatively Prime Moduli • Product, M, is Number of Different Representable Values in the RNS DEFINITON mi and mj are Relatively Prime if gcd(mi,mj) = 1 EXAMPLE mi = 4 and mj = 9, gcd(4,9) = 1 Although Neither 4 Nor 9 is Prime, They are Relatively Prime RNS Representation • Consider RNS(8|7|5|3) (our default RNS in this class) M 8 7 5 3 840 • 840 Distinct Representable Values • Since X mi M X mi • Can Represent X [0,839],[ 420, 419], • Any Interval of 840 Consecutive Values Example RNS Values RNS=(8|7|5|3) (0 | 0 | 0 | 0) RNS 0,840,1680, (1|1|1|1) RNS 1,841,1681, (2 | 2 | 2 | 2) RNS 2,842,1682, (0 |1| 3 | 2) RNS 8,848,1696, (5 | 0 |1| 0) RNS 21,861,1701, (0 |1| 4 |1) RNS 64,904,1744, (2 | 0 | 0 | 2) RNS 70, 770,1610, (7 | 6 | 4 | 2) RNS 1,839,1679, RNS Example 170110 RNS=(8|7|5|3) 170110 / 810 q 21210 remainder 510 170110 / 710 q 24310 remainder 010 170110 / 510 q 34010 remainder 110 170110 / 310 q 56710 remainder 010 RNS Complementation • Given RNS Representation of X, -X is Obtained by Complementing Each Digit. Zero Digits are unchanged. EXAMPLE 2110 (5 | 0 |1| 0) RNS 2110 (8 5 | 0 | 5 1| 0) RNS (3 | 0 | 4 | 0) RNS CHECK 2110 / 810 q 2 remainder 5, 5 mod8 3 2110 / 710 q 3 remainder 0 2110 / 510 q 4 remainder 1, 1mod5 4 2110 / 310 q 7 remainder 0 Chinese Remainder Theorem • RNS can be viewed as a weighted system. EXAMPLE RNS (8 | 7 | 5 | 3) wi (10510 ,12010 ,33610 , 28010 ) (1| 2 | 4 | 0)RNS (1105) (2 120) (4 336) (0 280) 1689 840 9 840 RNS Encoding Efficiency • Example Requires 11 Bits mod 8 mod 7 mod 5 mod 3 • 840 Different Values Represented • 211=2048 840 41% Efficiency 2048 lg2(840)=9.71411-9.714=1.3 Bits Wasted RNS Arithmetic • Addition, Subtraction, Multiplication Can be Performed with Independent Operations on Each Digit • Following Examples Show This Process X 510 (5 | 5 | 0 | 2) RNS Y 110 (7 | 6 | 4 | 2) RNS X Y ( 5 7 8 | 5 6 7 | 0 4 5 | 2 2 3) (4 | 4 | 4 |1) RNS X Y ( 5 7 8 | 5 6 7 | 0 4 5 | 2 2 3) (6 | 6 |1| 0) RNS X Y ( 5 7 8 | 5 6 7 | 0 4 5 | 2 2 3) (3 | 2 | 0 |1) RNS • For Subtraction, Can Complement the Number and Add Also RNS Circuit Structure mod-8 unit mod 8 mod-7 unit mod 7 mod-5 unit mod-3 unit mod 5 mod 3 Choosing RNS Moduli • Assume we wish to represent 100,00010 Values • Standard Binary lg2(100,000)10 = 16.609610 =17 bits • RNS(13|11|7|5|3|2), Dynamic RangeM=30,03010 –Insufficient Dynamic Range –Maximum Digit Width = 4 bits, Total = 17 bits • RNS(17|13|11|7|5|3|2), Dynamic RangeM=510,51010 – Dynamic Range 5.1 Times Too Large – Maximum Digit Width = 5 bits, Total = 22 bits • Adding More Prime Moduli is Inefficient Choosing RNS Moduli • Remove mi=5 From RNS(17|13|11|7|5|3|2) • RNS(17|13|11|7|3|2), Dynamic RangeM=102,10210 • Still Have Relatively Prime Moduli – Maximum Digit Width = 5 bits, Total = 19 bits – 1 5-bit, 2 4-bit, 1 3-bit, 1 2-bit and 1 1-bit Modulo Units Required • Maximum Delay 5-bit Carry-Propagate • Can Combine (3,7) and (2,13) Moduli With no Speed Penalty • RNS(26|21|17|11), Dynamic RangeM=102,10210 – Maximum Digit Width = 5 bits, Total = 19 bits – 3 5-bit and 1 4-bit Modulo Units Required Relatively Prime Values • Powers of Smaller Primes are Relatively Prime Example • gcd(32, 22) = 1 But gcd(32,3) = 3 – Can REPLACE a Modulus With its Power – Try Use Sequence of SMALLEST Valued Moduli RNS(22 |3), Dynamic RangeM=1210 RNS(32 |23 |7|5), Dynamic RangeM=2,52010 RNS(11|32 |23 |7|5), Dynamic RangeM=27,72010 RNS(13|11|32 |23 |7|5), Dynamic RangeM=360,36010 – Maximum Digit Width = 4 bits, Total = 21 bits – Dynamic Range 3.6 times that Needed Relatively Prime Values RNS(13|11|32 |23 |7|5), Dynamic RangeM=360,36010 – Maximum Digit Width = 4 bits, Total = 21 bits – Dynamic Range 3.6 times that Needed • Reduce the Above by Factor of 3 • Replace 32 with 3 and Combine 3 and 5 to Get 15 RNS(15|13|11 |23 |7), Dynamic RangeM=120,12010 – Maximum Digit Width = 4 bits, Total = 18 bits – Dynamic Range 1.2 times that Needed • Using This Strategy Can Generally Find the “Best” Moduli in Terms of Speed and Representation Efficiency Moduli Choice for Simple Arithmetic Unit Design • Simple Units Also Lead to Speed and Cost Benefits • Modulo-ADD,SUBTRACT, MULTIPLY Units Simple to Design if mi=2ai or 2ai-1 • Power of 2 Moduli Lead to Simple Design – Standard a-bit Binary Adder – Example: Use 16 Instead of 13 – Exception in Case of Lookup Table Implementation •Power of 2a-1 Moduli Lead to Simple Design – Standard a-bit Binary Adder with End-around Carry – Referred to as “Low-cost” Moduli RNS Low-Cost Moduli Theorem: A sufficient condition for 2a-1 and 2b-1 to be a relatively prime pair is that a and b are relatively prime. • Any List of Relatively Prime Numbers: ak-2> ...>a1>a0 • Can be Used as a BASIS of k-modulus RNS: RNS(2ak-2|2ak-2 -1|...|2a1-1|2a0-1) • Widest Residues (Longest Carry-chain) is ak-2-bit Values Low-Cost Moduli Example • Consider the Example From Earlier X=[0,100,000] • Choosing the Moduli From Smallest to Largest: RNS(23 | 23 -1| 22 -1) Basis:3, 2 M=16810 RNS(24 | 24 -1| 23 -1) Basis:4, 3 M=168010 RNS(25 | 25 -1 | 23 -1| 22 -1) Basis:5, 3, 2 M=20,83210 RNS(25 | 25 -1 | 24 -1| 23 -1) Basis:5, 4, 3 M=104,16010 • Can’t Include 2 and 4 in Same Basis Set, gcd(2,4)=2 Low-Cost Moduli Example RNS(25 | 25 -1 | 24 -1| 23 -1) Basis:5, 4, 3 M=104,16010 = RNS(32 | 31 | 15| 7) • Requires 5+5+4+3=17 bits • Requires 2 5-bit, 1 4-bit and 1 3-bit Module • 4 RNS Digits • Efficiency = (100,001/104,160)=0.96004100% • Comparing With Unrestricted Moduli: RNS(25 | 25 -1 | 24 -1| 23 -1) 17 bits M=104,16010 5-bit Carry-ripple but Simpler Circuit, Fewer Digits RNS(15|13|11 |23 |7) 18 bits 4-bit Carry-ripple , 1 Extra Digit M=120,12010 Encoding and Decoding • Advantages of Alternative Number Systems Must Not be Outweighed By Conversions to/from the System • Encoding From Fixed Positional System to RNS Easily Accomplished Using a TableLookup and Modulo Addition Circuits Encoding with Lookup Table • Conversion of Signed-Magnitude or 2’s Complement Accomplished by Converting Magnitude and Taking RNS Complement • Consider the Following Identity: yk 1 yk 2 y1 y0 2 mi 2k 1 yk 1 mi 21 y1 mi 20 y0 • Idea is to Compute a Table of All Terms and Store in a Table for all i, j Then Add 2j mi mi mi Example Lookup Table • Use Default RNS=(8|7|5|3) j 0 1 2 3 4 5 6 7 8 9 2j 2j 1 2 4 8 16 32 64 128 256 512 1 2 4 1 2 4 1 2 4 1 7 2j 1 2 4 3 1 2 4 3 1 2 5 2j 3 1 2 1 2 1 2 1 2 1 2 • For mi=8 We Can Use 3 LSbs of Value Example Encoding yk 1 yk 2 y1 y0 2 mi 2k 1 yk 1 mi Y 101001002 16410 21 y1 mi 20 y0 RNS (8 | 7 | 5 | 3) x3 Y mod 8 ( y2 y1 y0 ) 2 1002 410 Y 2 7 25 2 2 j 7,5, 2 x2 Y mod 7 2 4 4 7 310 x1 Y mod 5 3 2 4 5 410 x0 Y mod 3 2 2 1 3 210 Y ( x3 | x2 | x1 | x0 ) RNS (4 | 3 | 4 | 2) RNS mi mi RNS to Mixed-Radix Form • CRT States That a Mixed-Radix Number System (MRS) is Associated with any RNS • Solves comparison, sign detection, and overflow problems • MRS is k-digit Weighted Positional Number System (mk-1|mk-2|...|m2|m1|m0) • MRS Weights are Products: (mk-2...m2m1m0, ...,m2m1m0, m1m0, m0,1) • MRS Digit Sets in Each of k Positions: [0, mk-1-1],...,[0, m2-1],[0, m1-1],[0, m0-1] • MRS Digits in Same Range as RNS Digits RNS to MRS Example • Example Position Weights MRS (8|7|5|3) (7)(5)(3)=105, (5)(3)=15, 3, 1 • (0|3|1|0)MRS(8|7|5|3) =(0)(105)+(3)(15)+(1)(3)+(0)(1)=4810 • RNS to MRS Conversion Requires Finding the zi that Correspond to the yi in: Y ( yk 1 | | y2 | y1 | y0 )RNS ( zk 1 | | z2 | z1 | z0 )MRS RNS to MRS Conversion • From MRS Definition we Have: Y zk 1 (mk 2 m2 m1m0 ) z2 (m1m0 ) z1 (m1 ) (1) z0 • Easy to See that z0 = y0, Subtracting This Value From RNS and MRS Values Results in: Y y0 ( y 'k 1 | | y '2 | y '1 | 0)RNS ( zk 1 | y ' j y j y0 mj | z2 | z1 | 0) MRS RNS to MRS Conversion (cont) • Next, Divide Both Representations by m0: ( y ''k 1 | | y ''2 | y ''1 ) RNS ( zk 1 | | z2 | z1 ) MRS • Thus, if We Can Divide by m0, We Have an Iterative Approach for Conversion • Dividing y' (a Multiple of m0) by m0 is SCALING Easier Than Normal RNS Division • Accomplished by Multiplying by Muliplicative Inverse of m0 Multiplicative Inverses • Multiplicative Inverse is a Value When Multiplied by Given Quantity Yields a Product of 1 • Example Multiplicative Inverses of 3 Relative to mi=8, 7, 5: 3 3 8 1 3 5 7 1 3 2 5 1 • Thus, Multiplicative Inverses are 3, 5 and 2 • Can Build a Lookup Table Circuit to Store Inverses CRT LUT i mi 3 8 2 7 1 5 0 3 xi 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 0 1 2 3 4 0 1 2 M i i xi 0 105 210 315 420 525 630 735 0 120 240 360 480 600 720 0 336 672 168 504 0 280 560 mi M Multiplicative Inverses Example • Divide the Number Y' = (0|6|3|0)RNS by 3 • Accomplish Through Multiplication by (3|5|2|-)RNS (0 | 6 | 3 | 0) RNS (0 | 6 | 3 | 0) RNS (3 | 5 | 2 | ) RNS 3 ( 0 3 8 | 6 5 7 | 3 2 5 | ) (0 | 2 |1| ) RNS RNS/MRS Conversion Example • Convert Y=(0|6|3|0)RNS to MRS z0 = y0 = 0 • Divide by 3 (0 | 6 | 3 | 0) RNS (0 | 2 |1| ) RNS 3 • Now, We Have z1=1, Subtract by 1 and Divide by 5 (7 |1| 0 | )RNS (7 |1| 0 | )RNS (5 | 3 | | ) RNS 5 (3 | 3 | | ) RNS • This Gives z2 = 3, Subtract by 3 and Divide by 7 RNS/MRS Conversion Example (0 | 0 | | ) RNS (0 | 0 | | ) RNS 7 • Thus Y=(0|6|3|0)RNS is (0|3|1|0)MRS • Position Weights MRS (8|7|5|3) (7)(5)(3)=105, (5)(3)=15, 3, 1 So, Y=(0|6|3|0)RNS = (0|3|1|0)MRS = (48)10 RNS/MRS Conversion •Consider Conversion of (3|2|4|2)RNS from RNS(8|7|5|3) to Decimal (3 | 2 | 4 | 2) RNS (3 | 0 | 0 | 0) RNS + (0 | 2 | 0 | 0) RNS + (0 | 0 | 4 | 0) RNS + (0 | 0 | 0 | 2) RNS = 3× (1| 0 | 0 | 0) RNS + 2× (0 |1| 0 | 0) RNS + 4× (0 | 0 |1| 0) RNS + 2× (0 | 0 | 0 |1) RNS •Need to Determine Values of (1|0|0|0)RNS, (0|1|0|0)RNS, (0|0|1|0)RNS and (0|0|0|1)RNS RNS/MRS Conversion •From Definition of RNS, Positions with 0 are Multiples of RNS(8|7|5|3) and Position with 1 are <Y>mi=1 (1| 0 | 0 | 0) RNS = 105 (0 |1| 0 | 0) RNS = 120 (0 | 0 |1| 0) RNS = 336 (0 | 0 | 0 |1) RNS = 280 (3 | 2 | 4 | 2) RNS 3 105 2 120 4 336 2 280 779 840 Chinese Remainder Theorem • How Did We Find w3 = (1|0|0|0)RNS = 105? • Since Digits in 7, 5, 3 Places are 0, w3 Must be a Multiple of (7)(5)(3)=105 • Must Pick the Multiple of 105 Such That its Residue With Respect to 8 is 1 • Accomplished by Multiplying 105 by its’ Multiplicative Inverse with Respect to 8 • This Process is Formalized in Chinese Remainder Theorem Chinese Remainder Theorem THEOREM: Chinese Remainder Theorem (CRT) The magnitude of an RNS number can be obtained from the CRT formula: Y ( yk 1 | | y2 | y1 | y0 )RNS k 1 M i 0 i i yi mi M where, by definition, Mi = M/mi and i = < Mi-1>mi is the multiplicative inverse of Mi with respect to mi. Chinese Remainder Theorem Y ( yk 1 | | y2 | y1 | y0 )RNS k 1 M i 0 i i yi mi M • Can Avoid Multiplications in Conversion Process by Storing <Mi<iyi>mi>M in a Table • Example Table Given on page 64 of Textbook (and also in slide 33) Difficult RNS Operations • Sign Test • Magnitude Comparison • Overflow Detection • Generalized Division Suffices to discuss first three in context of being able to do magnitude comparison since they are essentially same if M is such that M=N+P+1 where the values represented are in interval [-N,P]. Difficult RNS Operations • Sign Test same as Comparison with P • Overflow Detection accomplished using Signs of Operands and Results Focus On: • Magnitude Comparison • Generalized Division Magnitude Comparison •Could Convert to Weighted Representation Using CRT Too Complicated – too much Overhead Use Approximate CRT Instead Divide CRT Equality by M Y ( yk 1 | Y ( yk 1 | M | y2 | y1 | y0 )RNS | y2 | y1 | y0 )RNS M M i M / mi k 1 M i 0 i i yi mi M k 1 1 m i i yi i 0 by Definition mi 1 Approximate CRT Y ( yk 1 | M | y2 | y1 | y0 )RNS M k 1 1 m i i yi i 0 mi 1 • Addition of Terms is Modulo-1 • All mi-1<iyi>mi Are in [0,1) • Whole Part of Result Discarded and Fractional Part Kept • Much Easier than CRT Modulo-M Addition • mi-1<iyi>mi Can be Precomputed for all y and i • Use Table Lookup Circuit and Fractional Adder (ignore carry-outs) Approximate CRT LUT i mi yi 3 8 2 7 1 5 0 3 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 0 1 2 3 4 0 1 2 mi 1 i yi .0000 .1250 .2500 .3750 .5000 .6250 .7500 .8750 .0000 .1429 .2857 .4286 .5714 .7143 .8571 .0000 .4000 .8000 .2000 .6000 .0000 .3333 .6667 mi Magnitude Comparison Example Use approximate CRT decoding to determine the larger of the two numbers. X (0 | 6 | 3 | 0)RNS Y (5 | 3 | 0 | 0) RNS Reading the Values from the Tables: X .0000 .8571 .2000 .0000 1 .0571 M Y .6250 .4286 .0000 .0000 1 .0536 M Thus, we conclude that: X Y Approximate CRT Error If Maximum Error in Approximate CRT Table is , then Approximate CRT Decoding Yields Scaled Value of RNS Number with Error No Greater than k Previous Example Table Entries Rounded to 4 Digits Maximum Error in Each Entry is = 0.00005 k = 4 Digits Error is 4 = 0.0002 0.0571 - 0.0536 = 0.0035 > 4 = 0.0002, so X > Y is Safe Redundant RNS Representations • Do Not Have Restrict Digits in RNS to Set [0, mi -1] • If [0, i] Where i mi Then RNS is Redundant • Redundant RNS Simplifies Modular Reduction Step for Each Arithmetic Operation Redundant RNS Example • Consider mod-13 with [0,15] • Redundant since: 0 mod13 0 1 mod13 1 0 mod13 13 1 mod13 14 2 mod13 2 2 mod13 15 • Addition Using Pseudo-redundancies Can be Done with Two 4-bit Adders X Y Cout 00 Ignore SUM 1 1 0 1 (13) 1 1 1 1 0 0 1 1 0 (13) (26) 0 0 1 1 1 1 0 1 1 0 0 1 (13)