蒙哥马利乘法的增强技术及硬件优化方法
1. 蒙哥马利乘法中的余数系统
常见的二进制、八进制、十进制等都是位置数系统,每个数字的权重由其所在位置决定。而余数系统(RNS)的数字没有明显的权重,这使得比较、除法和蒙哥马利乘法(MM)等基本数学运算变得复杂。蒙哥马利乘法严重依赖位置数系统,在循环的中间步骤中会使用到最低有效位(LSB)和最高有效位(MSB),因此RNS不太适合直接用于蒙哥马利乘法。
若要将RNS与蒙哥马利乘法结合,需要借助与RNS相关的混合基数表示中的一些操作数。改进方法的关键逻辑是,如果两个或多个余数系统基于相同的模数,我们可以选择混合基数表示的最低有效位作为RNS的任何一个余数。改进后的算法将乘法与约简步骤交错进行,同时在RNS的每个余数上执行。但每个步骤都需要用其中一个模数进行精确除法,这使算法变得复杂,因为其中一个余数会变得未定义。通过在辅助(冗余)基数中进行所有计算,结果仍可在扩展基数中获得,或者可以使用中国剩余定理来恢复丢失的余数。
1.1 余数系统
设 (x) 是要以RNS表示的整数,(a) 是一组 (n) 个基数,即 (a = {a_1, a_2, \cdots, a_n}),(n) 为基数大小。则 (x) 的RNS表示为:
(\langle x\rangle_a = (x[a_1], x[a_2], \cdots, x[a_n]))
其中 (x) 与 (a_i) 的关系为:
(x[a_i] = x \pmod{a_i})
并且基数集合中的成员应满足互质关系,即:
(\gcd(a_i, a_j) = 1),其中 (0 < i, j \leq n) 且 (i \neq j)。
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



