Residue Number Systems

Download Report

Transcript Residue Number Systems

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
 (1105)  (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.71411-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 RangeM=30,03010
–Insufficient Dynamic Range
–Maximum Digit Width = 4 bits, Total = 17 bits
• RNS(17|13|11|7|5|3|2), Dynamic RangeM=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 RangeM=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 RangeM=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 RangeM=1210
RNS(32 |23 |7|5), Dynamic RangeM=2,52010
RNS(11|32 |23 |7|5), Dynamic RangeM=27,72010
RNS(13|11|32 |23 |7|5), Dynamic RangeM=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 RangeM=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 RangeM=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.96004100%
• 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
2 mod13  2
0 mod13  13
1 mod13  14
2 mod13  15
• Addition Using Pseudo-redundancies Can be Done
with Two 4-bit Adders
X
Y
Cout
00
Ignore
SUM
1
1
1
1
0
0
1
1
1
1
0
1
1
0
0
1
1
1
0
0
0
1
1
1
0
(13)
(13)
(26)
(13)