掌桥专利:专业的专利平台
掌桥专利
首页

基于KO-8算法的高性能模乘器

文献发布时间:2023-06-19 10:32:14



技术领域

本发明涉及一种模乘器,尤其涉及一种基于KO-8算法的高性能模乘器。

背景技术

自1984年Hendrik Lenstra给出基于椭圆曲线的整数因子分解算法之后,椭圆曲线在密码学和计算机数论中的应用已经得到了很大的发展。

在模乘器的性能是椭圆曲线上点乘运算的瓶颈所在,其中大整数乘法是模乘器中的基本单元,大数乘法器的性能决定了模乘器的性能,实现运算快速的大数乘法单元是ECC中急需解决的问题之一。在实现大数乘法时,有时我们并不需要得到乘数乘积的所有位数,也即其中存在输入数据的冗余,这在一定程度上降低了模乘器的速度,增大了面积和功耗。

ECC算法的架构可分为四层:对外接口层、ECC顶层协议层、ECC点运算层、有限域运算层。ECC顶层协议层为最高层:这个层次将根据椭圆曲线算法应用或密码协议所规定的运算规程,完成各种运算,实现协议目标。ECC顶层协议包括:ECC数字签名,ECC密钥交换协议,ECC加密机制等;ECC点运算层包括椭圆曲线上的标量乘法运算,将标量乘法分解为一系列椭圆曲线上的点加和倍点运算实现。标量乘法算法,直接影响标量乘法的运行周期数和关键路径;有限域运算层,位于ECC层级结构的最底层:算法所有的计算最终分解成有限域上的基本算术运算,有限域运算则要转换为二进制流来实现。硬件设计中,域运算的设计方案很大程度上影响关键路径的长度,进而影响系统的主频。

综上,降低ECC算法的功耗提高性能,主要问题就是降低模乘运算的功耗。在基于椭圆曲线的密码算法中,模乘运算占到了整体翻转功耗的90%左右,如ECDH算法中,模乘器部分的Switch Power占到ECC整体模块的98%,ECDSA_verify算法中,模乘器部分的SwitchPower占到ECC整体模块的92%。所以模乘器的低功耗高性能设计对整个ECC模块工作状态下的能效比提升有决定性作用。

发明内容

发明目的:针对以上问题,本发明提出一种基于KO-8算法的高性能模乘器,设计实现了一种四级流水线的蒙哥马利模乘器,其中KO-8乘法器可以根据我们后续工作中对数据结果的需求,对KO-8乘法器进行改进,只选取数据位的一部分进行部分积的运算,最后得到最终所需结果。

技术方案:为实现本发明的目的,本发明所采用的技术方案是:一种基于KO-8算法的高性能模乘器,包括步骤:

(1)利用KO-8算法计算输入a、b的乘积T;其中,T_l为T的低256bit;

T=mul_ko8(a,b),T_l=T[lowbit]

(2)计算T_l、invp的乘积m,改进KO-8算法仅计算m的低256位m_l;

m_l=mul_ko8_lowbit(T_l,invp)

(3)利用KO-8算法计算m_l、p的乘积c;

c=mul_ko8(m_l,p)

(4)将步骤(3)中计算出的c与步骤(1)中计算出的T相加,并判断其是否大于p,若大于p则输出res=c-p,若不大于p则输出res=c。

进一步地,所述步骤(1)中,KO-8算法,使用36个32bit乘法器实现该计算模块。

进一步地,所述步骤(2)中,改进KO-8算法只计算输出结果的低256bit,使用24个32bit乘法器实现该计算模块。

进一步地,KO-8算法通过36个N-bit乘法器来实现8N-bit乘法,数据进入乘法器之后先进行分割求和,然后计算出36个部分积,然后36个部分积通过部分积压缩模块计算出乘法结果。

进一步地,KO-8算法的计算过程:

(1)获取乘数X和乘数Y,并确定乘数中每位的权重;

x=x

y=y

(2)根据步骤(1)中确定的权重,将乘数与被乘数逐位相乘得到计算部分积;

p

p

p

……

p

(3)将步骤(2)中逐位相乘得到的部分积进行压缩,得出最终得结果。

r=p

进一步地,改进KO-8算法的计算过程:

(1)获取乘数X和乘数Y,并确定乘数中每位的权重;

x=x

y=y

(2)根据步骤(1)中确定的权重,并根据最终数据结果的位数需要,有选择的计算乘数与被乘数的位数从而得到计算部分积;

p

p

p

p

p

p

p

p

p

p

p

(3)将步骤(2)中逐位相乘得到的部分积进行压缩,得出最终得结果。

r=(p

+(p

有益效果:本发明设计不仅可以降低计算过程中的复杂度和时间,降低功耗,面积开销小,同时也满足在优化模乘器时对计算结果的需求。

本发明设计扩展的KO-8乘法器,以增加部分加减电路为代价大幅降低了电路中乘法器的数量,大大减少了乘法器中硬件电路的复杂程度。

与现有技术相比,电路设计简单,功耗面积大大减少,且不影响电路的数据通量,同时针对模乘器电路的特殊性对每一步计算进行全订制的设计。通过这种方式的设计,可以实现每个时钟周期均可输出一次模乘的计算结果,保证了数据通量,且对每一级计算均进行了定制化设计,保证在面积和功耗上的优势,在一定程度上优化了模乘器的性能。

附图说明

图1是本发明所述的基于KO-8算法的高性能模乘器的流程图;

图2是regular算法的流程图;

图3是KO算法的流程图;

图4是KO-8算法的流程图;

图5是lowbit KO-8算法的流程图;

图6是lowbit KO-8算法的原理图;

图7是KO-8乘法器的流程图。

具体实施方式

下面结合附图和实施例对本发明的技术方案作进一步的说明。

如图1所示,本发明所述的基于KO-8算法的高性能模乘器,为四级流水线蒙哥马利模乘器,输入为a、b、p、invp,输出为res。包括步骤:

(1)利用KO-8算法计算输入a、b的乘积T,其中,T_l为T的低256bit,T_h为T的高256bit;

T=mul_ko8(a,b),T_l=T[lowbit]

(2)计算T_l、invp的乘积m,后续计算的过程中仅使用m的低256位结果,所以进一步地利用基于KO-8算法,仅计算m的低256位,即为m_l;

m_l=mul_ko8_lowbit(T_l,invp)

对于256bit蒙哥马利模乘器,一共有三次256bit乘法计算,每个256bit乘法器可以通过KO-8算法利用36个32bit乘法器实现。在蒙哥马利模乘器中第三次256bit乘法中仅使用了第二次乘法计算结果的低256bit,所以可以对第二次乘法计算中的乘法器进行全定制设计,使其只计算输出结果的低256bit,仅需24个32bit乘法器就可以实现该计算模块,从而进一步降低电路的面积与功耗。

(3)利用KO-8算法计算m_l、p的乘积c;

c=mul_ko8(m_l,p)

(4)将步骤(3)中计算得出的c与步骤(1)中计算的出的T相加,并判断其是否大于p,若大于p则输出res=c-p,若不大于p则输出res=c。

通过本发明的设计,可以实现每个时钟周期均可输出一次模乘的计算结果,保证数据通量,且对每一级计算均进行定制化设计,保证在面积和功耗上的优势。

如图2所示,regular算法的计算过程:

(1)获取乘数X和乘数Y,并确定乘数中每位的权重;

x=x

y=y

(2)根据步骤(1)中确定的权重,将乘数与被乘数逐位相乘得到计算部分积;

p

P

(3)将步骤(2)中逐位相乘得到的部分积进行压缩,得出最终得结果。

r=p

如图3所示,KO算法的计算过程,regular乘法器中p

a*b=(a[N]*b[N]*22

+a[N-1:0]*b[N-1:0]

应用KO乘法器在N较大时可以大大降低硬件开销,对于此算法拆分的部分越多,则节省的面积、功耗越大,且不影响算核的运算效率。

如图4所示,KO-8算法的计算过程:

(1)获取乘数X和乘数Y,并确定乘数中每位的权重;

x=x

y=y

(2)根据步骤(1)中确定的权重,将乘数与被乘数逐位相乘得到计算部分积;

p

p

p

……

p

(3)将步骤(2)中逐位相乘得到的部分积进行压缩,得出最终得结果。

r=p

本发明采用KO-8乘法器,理论上可以通过36个N-bit乘法器来实现8N-bit乘法,而常规条件下需要64个N-bit乘法器才能实现,数据进入乘法器之后先进行分割求和,然后计算出36个部分积,然后36个部分积通过部分积压缩模块计算出乘法结果。

如图5所示,对四级流水线蒙哥马利模乘器的第二次乘法计算中的KO-8乘法器进行全定制设计,使其只计算输出结果的低256bit,仅需24个32bit乘法器就可以实现该计算模块。

lowbit KO-8算法的计算过程:

(1)获取乘数X和乘数Y,并确定乘数中每位的权重;

x=x

y=y

(2)根据步骤(1)中确定的权重,并根据最终数据结果的位数需要,有选择的计算乘数与被乘数的位数从而得到计算部分积;

p

p

p

p

p

p

p

p

p

p

p

(3)将步骤(2)中逐位相乘得到的部分积进行压缩,得出最终得结果。

r=(p

+(p

如图6所示,本发明采用基于KO-8乘法器,数据进入乘法器之后先进行分割求和,然后计算出低位的24个部分积,然后24个部分积通过部分积压缩模块计算出乘法结果。

如图7所示,KO-8乘法器的实现流程,首先将两个8n-bit的数据,分别按权重从低到高每n个数据分为一组,其N值依次为1,2,3......N;之后根据最后结果的需求分别对两个乘数进行处理,选组我们之前的数据组数,保证两乘数选择组数的N值相同,对不需要的数据组数做忽略;根据选择的数据,两乘数中N值相同的组,采用KO-8算法,计算出每组的结果。

本发明基于KO算法,并将其扩展为KO-8算法,之后通过对该算法进行处理,使其只计算得出乘积的低位数,对高位数进行忽略,从而达到降低功耗的目的。本发明设计的KO-8乘法器以加法器为代价,减少操作数的位数等,从而大大降低硬件开销,面积功耗都得到降低,同时满足优化模乘器性能的需求,提高模乘器在面积和功耗上的优势。

相关技术
  • 基于KO-8算法的高性能模乘器
  • 一种基于改进的Montgomery模乘算法的可扩展模乘器电路
技术分类

06120112587974