CN112099761B - 基于改进的二进制左移模逆算法的装置及其控制方法 - Google Patents

基于改进的二进制左移模逆算法的装置及其控制方法 Download PDF

Info

Publication number
CN112099761B
CN112099761B CN202010876884.2A CN202010876884A CN112099761B CN 112099761 B CN112099761 B CN 112099761B CN 202010876884 A CN202010876884 A CN 202010876884A CN 112099761 B CN112099761 B CN 112099761B
Authority
CN
China
Prior art keywords
bit
lza
diff
shift
multiplexer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010876884.2A
Other languages
English (en)
Other versions
CN112099761A (zh
Inventor
李树国
陆锦鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202010876884.2A priority Critical patent/CN112099761B/zh
Publication of CN112099761A publication Critical patent/CN112099761A/zh
Application granted granted Critical
Publication of CN112099761B publication Critical patent/CN112099761B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/721Modular inversion, reciprocal or quotient calculation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种基于改进的二进制左移模逆算法的装置及其控制方法,其中,装置包括:第一至第四寄存器、第一至第四加法器、第一至第三移位模块、第一至第三前导零计数模块、多个多路选择器和多个控制信号寄存器,其中,第一至第三前导零计数模块用于对寄存器U、V和第一加法器ADD1的输出进行前导零计数,以对U、V和ADD1的输入进行位数限制,并判断一个循环周期内进行左移的位数;在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移。该装置可以较大幅度提升运算速度,降低运算所需的时间,提升运算效率。

Description

基于改进的二进制左移模逆算法的装置及其控制方法
技术领域
本发明涉及公钥密码算法技术领域,特别涉及一种基于改进的二进制左移模逆算法的装置及其控制方法。
背景技术
公钥密码算法因在密钥分配问题以及“数字签名”问题上的突破和优势,在现代社会的信息安全领域占有重要地位。RSA密码算法、椭圆曲线密码算法均为目前被广泛应用的公钥密码算法。相比于传统的对称密码算法,公钥密码算法因其各种复杂的运算,计算时间较长,且由于安全度要求日益提高,运算的规模也在逐步增大。以RSA密码算法为例,目前需要使用至少1024位长度的密钥才能较好地保证安全性。若安全性要求提高,密钥长度还需要加倍,运算时间则会进一步加长。其中,模逆运算作为RSA密码算法、ECC密码算法的重要过程之一,在整个密码算法运算过程中占了不小的时间比例。提升模逆运算的速度是减少公钥密码算法的计算时间的一条重要途径。
目前,求解素数域上模逆的常见的算法包括扩展欧几里得算法、二进制右移算法和二进制左移算法等。扩展欧几里得算法是计算模逆的一种经典的方法,但因含有除法而对硬件实现不友好;二进制右移算法和二进制左移算法利用移位来代替扩展欧几里得算法中的除法操作,硬件实现上更加方便;另外,在模数为偶数的时候,传统的二进制右移算法无法直接得到模逆的结果,而二进制左移算法则对此没有要求。
因此,基于上述算法设计的电路运算耗时长,效率低,有待解决。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种基于改进的二进制左移模逆算法的装置,该装置可以较大幅度提升运算速度,降低运算所需的时间,提升运算效率。
本发明的另一个目的在于提出一种基于改进的二进制左移模逆算法的装置的控制方法。
为达到上述目的,本发明一方面实施例提出了一种基于改进的二进制左移模逆算法的装置,包括:第一至第四寄存器,所述第一至第四主操作数寄存器用于存储操作数;第一至第四加法器,所述第一至第四加法器用于执行逻辑操作、移位与指令调用;第一至第三移位模块,所述第一至第三移位模块用于对输入进行有最大位数限制的移位操作,其中,第一移位模块SHIFT1和第二移位模块SHIFT2L为多位移位的左移模块,第三移位模块SHIFT2R为多位移位的右移模块;第一至第三前导零计数模块,所述第一至第三前导零计数模块用于对第一主操作数寄存器U、第二主操作寄存器数V和第一加法器ADD1的输出进行前导零计数,以对U、V和ADD1的输入进行位数限制,并判断一个循环周期内进行左移的位数;多个多路选择器,用于输入数据的选择和移位位数的选择;多个控制信号寄存器,所述多个控制信号寄存器用于控制与控制信号寄存器相连的多路选择器的选择,以在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移。
本发明实施例的基于改进的二进制左移模逆算法的装置,设计增加了适用于二进制左移模逆算法的前导零计数模块,在进行移位操作时,相当于把多个周期的操作合并到一个周期内,操作数U,V可以在一个周期内执行多位的左移操作,R和S有可能在一个周期内同时分别发生左移和右移,从而可以较大幅度提升运算速度,降低运算所需的时间,提升运算效率。
另外,根据本发明上述实施例的基于改进的二进制左移模逆算法的装置还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述第一至第三前导零计数模块进一步用于对任意有符号输入数据的最多八位的前导零计数,输出结果表示可移动的最大位数,其中,前导零代表非负数的前导零,或代表负数的前导一。
进一步地,在本发明的一个实施例中,所述第一至第三前导零计数模块的结构相同,每个前导零计数模块均包括:八位多路选择器,所述八位多路选择器的第一输入端的输入为输入数据从最高位数起除符号位以外的第八位到第一位,所述八位多路选择器的第二输入端的输入为输入数据从最高位数起除符号位以外的第一位到第八位a[n-1:n-8];第一四位多路选择器和第二四位多路选择器,所述第二四位多路选择器输入数据的符号位与所述八位多路选择器的输入数据的符号位相连,所述第一四位多路选择器的输出端与所述第二四位多路选择器的第二输入端相连;八位前导零计数器LZC8,所述LZC8的输入端的输入为a[n-1:n-8];非门和四位加法器ADD,所述ADD的第一输入端分别与所述LZC8的输出端和所述第二四位多路选择器的第一输入端相连,所述ADD的第二输入端所述第一四位多路选择器的第一输入端相连,所述ADD的输出端与非门的输入端相连;八位前导一计数器LZC8_neg,所述LZC8_neg的输入端与所述八位多路选择器的第二输入端相连;四位减法器SUB,所述SUB的第一输入端分别与所述ADD的第二输入端、所述第一四位多路选择器的第一输入端和所述LZC8_neg的输出端相连,所述SUB的第二输入端输入为1,所述SUB的输出端与所述第一四位多路选择器的第二输入端相连;或非门,所述或非门的第一输入端的输入为输入数据的第九位到最低位的或运算结果ORa[n-9:0],所述或非门的第二输入端与所述非门的输出端相连,所述或非门的输出端与所述第一四位多路选择器输入数据的符号位相连。
进一步地,在本发明的一个实施例中,所述多个多路选择器包括:第一多路选择器MUX1,用于选择SHIFT1输入数据;第二多路选择器MUX1S,用于选择SHIFT1需要移位的位数;第三多路选择器MUX2L和第四多路选择器MUX2R,分别用于选择SHIFT2L和SHIFT2R的输入数据;第五多路选择器XMUX,用于选择SHIFT2L和SHIFT2R需要移位的位数;第六多路选择器MUX3和第七多路选择器MUX4,分别用于选择第二加法器ADD2和第三加法器ADD3的输入数据;第八多路选择器MUXR和第九多路选择器MUXS,分别用于选择第三主操作数寄存器R和第四主操作数寄存器S的输入数据。
进一步地,在本发明的一个实施例中,所述多个控制信号寄存器包括第一至第五控制信号寄存器。
进一步地,在本发明的一个实施例中,所述第一加法器ADD1和第二加法器ADD2均包括信号选择sel_add,以根据sel_add选择的信号实现加减法功能。
进一步地,在本发明的一个实施例中,所述循环周期为完成n位的模逆运算所用的时钟周期数。
进一步地,在本发明的一个实施例中,所述循环周期为0.8n。
为达到上述目的,本发明另一方面实施例提出了一种如上述实施例所述的基于改进的二进制左移模逆算法的装置的控制方法,所述方法用于对所述装置进行控制,以在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移,其中,所述循环周期为完成n位的模逆运算所用的时钟周期数;所述方法包括以下步骤:
输入:p,a;
输出:y,取值范围为[0,p-1],y为a对于模p的模逆;
步骤S1,U←p,V←a,S←1,m←-1;R、cu、cv和lzs置0;uv、t_pos和t_neg置1;
步骤S2,当t_neg=1且t_pos=1重复执行步骤S21至步骤S25:
步骤S21,若tu=1,则执行步骤S211,否则执行步骤S212;
步骤S211,若d=0或uv=0,则执行步骤S2111,否则执行步骤S2112;
步骤S2111,U←U<<lzu,R←R<<lzu;cu←cu+lzu;uv置0;
步骤S2112,若|diff|≤lzu,则:U←U<<lzu,R←R<<lzu–|diff|,S←S>>|diff|,m←m<<|diff|,cu←cu+lzu;uv置0;否则执行步骤2113;
步骤S213,U←U<<lzu,S←S>>lzu,m←m<<lzu;cu←cu+lzu;
步骤S212,若tv=1,则执行步骤S2121,否者执行步骤S213;
步骤S2121,若d=0或uv=1,则V←V<<lzv,S←S<<lzv;cv←cv+lzv;uv置1;否则执行步骤S2122;
步骤S2122,若|diff|≤lzv,则V←V<<lzv,S←S<<lzv–|diff|,R←R>>|diff|,m←m<<|diff|,cv←cv+lzv;uv置1;否则执行步骤S2123;
步骤S2123,V←V<<lzv,R←R>>lzv,m←m<<lzv;cv←cv+lzv;
步骤S213,若un=vn,则“±”←“–”,否则“±”←“+”;
若d=0,则U←U±V<<lza,R←R±S<<lza;cu←cu+lza;lzs←lza;uv置0;wu置1;更新t_pos,t_neg;否则执行步骤S214;
步骤S214,若uv=1,则执行步骤S2141,否则执行步骤S215
步骤S2141,若|diff|≤lza,则U←U±V<<lza,R←R±S<<lza–|diff|,S←S>>|diff|,m←m<<|diff|,cu←cu+lza;lzs←lza–|diff|;uv置0;wu置1;更新t_pos,t_neg;否则执行步骤S2142;
步骤S2142,U←U±V<<lza,R←R±S,S←S>>lza,m←m<<lza,cu←cu+lza;lzs←0;wu置1;更新t_pos,t_neg;
步骤S215,若|diff|≤lza则:V←V±U<<lza,S←S±R<<lza–|diff|,R←R>>|diff|,m←m<<|diff|,cv←cv+lza;lzs←lza–|diff|;uv置1;wu置0;更新t_pos,t_neg;
否则V←V±U<<lza,S←S±R,R←R>>lza,m←m<<lza,cv←cv+lza;lzs←0;wu置0;更新t_pos,t_neg;
步骤S3,若wu=1,则S←R>>lzs,否则S←S>>lzs;
步骤S4,R←0;
步骤S5,若t_cond=1,则执行步骤S51,否则执行步骤S52;
步骤S51,若t_neg=0,则y←R–S;否则y←R+S;
步骤S52,若t_neg=0,则y←p–S;否则y←p+S;
步骤S6,返回y。
本发明实施例的基于改进的二进制左移模逆算法的装置的控制方法,设计增加了适用于二进制左移模逆算法的前导零计数模块,在进行移位操作时,相当于把多个周期的操作合并到一个周期内,操作数U,V可以在一个周期内执行多位的左移操作,R和S有可能在一个周期内同时分别发生左移和右移,从而可以较大幅度提升运算速度,降低运算所需的时间,提升运算效率。
另外,根据本发明上述实施例的基于改进的二进制左移模逆算法的装置的控制方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,信号d用于判断用于记录U和V的左移次数的变量cu和cv的大小关系,cu和cv相等时d为0,否则为1;信号tu和tv表示U和V是否能在不造成溢出,即不超过±2n–1的情况下进行左移;t_pos和t_neg为判断循环结束的寄存器变量,当U或V等于2min(cu,cv)时,t_pos为0,当U或V等于-2min(cu,cv)时,t_neg为0;lzu、lzv和lza分别表示U,V和U与V相加减的结果的前导零计数;<<和>>符号分别表示左移和右移,+表示加法,-表示减法,←表示将右侧的值赋值给左侧的变量。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的改进的二进制左移模逆算法硬件结构示意图;
图2为根据本发明一个实施例的用于改进的左移模逆算法的前导零计数模块的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在如今广泛使用的公钥密码算法中,模逆运算是重要的核心运算之一。由于模逆运算的复杂性,其运算效率会较大程度影响到密码算法本身的性能。位宽较大的一些公钥密码算法,其计算时间通常较长。在现有的二进制左移模逆算法的基础上,本发明提出了一种改进的模逆算法,与原算法相比,本发明提出的新算法在运算周期数上进行了优化,提高了算法的效率。
因此,在介绍基于改进的二进制左移模逆算法的装置之前,先对改进的二进制左移模逆算法进行说明,具体如下:
SM2算法是一种椭圆曲线公钥密码算法,在数字签名、公钥加密等领域具有广泛应用。模逆运算是其中的一个关键的运算步骤,但通常其效率较低,从而影响整个SM2算法的效率。对于n位的模逆运算,若使用传统的二进制左移模逆算法,完成计算所用的时钟周期数一般接近2n,而改进后的二进制左移模逆算法理论上可以将该数字降低至0.8n左右。将改进后的二进制左移算法应用于SM2算法中,可较大幅度提升算法的运算速度。
本发明提出的改进的模逆算法在一个周期内进行多位的移位操作,在有较多可连续移位的情况下将会在较大程度上减少时钟周期数。原算法在进行移位操作时,每个循环周期内对操作数U,V只进行一次左移一位的操作,相对应的R或S也只进行一位的左移或右移操作。而改进的算法相当于把多个周期的操作合并到一个周期内,操作数U,V可以在一个周期内执行多位的左移操作,R和S有可能在一个周期内同时分别发生左移和右移,与原算法相比增加了分支,在下面的算法描述中的步骤(2)中可以体现。在硬件实现上,需要适用于二进制左移模逆算法的前导零计数模块用于判断一个周期内可以进行左移的位数,以及支持多位移位的左移和右移模块。
所述改进的二进制左移模逆算法按以下步骤进行,其中信号d用于判断用于记录U和V的左移次数的变量cu和cv的大小关系,cu和cv相等时d为0,否则为1;信号tu和tv表示U和V是否能在不造成溢出(即不超过±2n–1)的情况下进行左移;t_pos和t_neg为判断循环结束的寄存器变量,当U或V等于2min(cu,cv)时,t_pos为0,当U或V等于-2min(cu,cv)时,t_neg为0;lzu,lzv和lza分别表示U,V和U与V相加减的结果的前导零计数;“<<”和“>>”符号分别表示左移和右移:
输入:p,a
输出:y,取值范围为[0,p-1],y为a对于模p的模逆
(1)U←p,V←a,S←1,m←-1;R,cu,cv,lzs置0;uv,t_pos,t_neg置1
(2)当(t_neg=1)且(t_pos=1)重复执行
若(tu=1)则
若(d=0)或(uv=0)则
U←U<<lzu,R←R<<lzu;cu←cu+lzu;uv置0
否则,若(|diff|≤lzu)则
U←U<<lzu,R←R<<(lzu–|diff|),S←S>>|diff|,
m←m<<|diff|,cu←cu+lzu;uv置0
否则
U←U<<lzu,S←S>>lzu,m←m<<lzu;cu←cu+lzu
否则,若(tv=1)则
若(d=0)或(uv=1)则
V←V<<lzv,S←S<<lzv;cv←cv+lzv;uv置1
否则,若(|diff|≤lzv)则
V←V<<lzv,S←S<<(lzv–|diff|),R←R>>|diff|,
m←m<<|diff|,cv←cv+lzv;uv置1
否则
V←V<<lzv,R←R>>lzv,m←m<<lzv;cv←cv+lzv
否则
若(un=vn)则
“±”←“–”;
否则
“±”←“+”
若(d=0)则
U←(U±V)<<lza,R←(R±S)<<lza;cu←cu+lza;
lzs←lza;uv置0;wu置1;更新t_pos,t_neg
否则,若(uv=1)则
若(|diff|≤lza)则
U←(U±V)<<lza,R←(R±S)<<(lza–|diff|),
S←S>>|diff|,m←m<<|diff|
cu←cu+lza;lzs←(lza–|diff|);uv置0;
wu置1;更新t_pos,t_neg
否则
U←(U±V)<<lza,R←R±S,S←S>>lza,
m←m<<lza,cu←cu+lza;lzs←0;
wu置1;更新t_pos,t_neg
否则
若(|diff|≤lza)则
V←(V±U)<<lza,S←(S±R)<<(lza–|diff|),
R←R>>|diff|,m←m<<|diff|
cv←cv+lza;lzs←(lza–|diff|);uv置1;
wu置0;更新t_pos,t_neg
否则
V←(V±U)<<lza,S←S±R,R←R>>lza,
m←m<<lza,cv←cv+lza;lzs←0;
wu置0;更新t_pos,t_neg
(3)若(wu=1)则
S←R>>lzs
否则
S←S>>lzs
(4)R←0
(5)若(t_cond=1)则
若(t_neg=0)则
y←R–S
否则
y←R+S
否则
若(t_neg=0)则
y←p–S
否则
y←p+S
(6)返回y。
正是基于上述改进的二进制左移模逆算法,本发明提出了一种基于改进的二进制左移模逆算法的装置。
下面参照附图描述根据本发明实施例提出的基于改进的二进制左移模逆算法的装置及其控制方法,首先将参照附图描述根据本发明实施例提出的基于改进的二进制左移模逆算法的装置。
图1是本发明一个实施例的基于改进的二进制左移模逆算法的装置的结构示意图。
如图1所示,该基于改进的二进制左移模逆算法的装置包括:第一至第四寄存器、第一至第四加法器、第一至第三移位模块、第一至第三前导零计数模块、多个多路选择器和多个控制信号寄存器。
其中,所述第一至第四主操作数寄存器用于存储操作数;所述第一至第四加法器用于执行逻辑操作、移位与指令调用;所述第一至第三移位模块用于对输入进行有最大位数限制的移位操作,其中,第一移位模块SHIFT1和第二移位模块SHIFT2L为多位移位的左移模块,第三移位模块SHIFT2R为多位移位的右移模块;所述第一至第三前导零计数模块用于对第一主操作数寄存器U、第二主操作寄存器数V和第一加法器ADD1的输出进行前导零计数,以对U、V和ADD1的输入进行位数限制,并判断一个循环周期内进行左移的位数;多个多路选择器用于输入数据的选择和移位位数的选择;,所述多个控制信号寄存器用于控制与控制信号寄存器相连的多路选择器的选择,以在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移。
具体而言,如图1所示,U、V、R和S表示算法所用到的四个主操作数寄存器,P表示输入的模数p;ADD1、ADD2、ADD3和ADD4为加法器,其中ADD1和ADD2可实现加减法功能,由sel_add信号选择,SUB为减法器;LZCU、LZCV和LZCA均表示前导零计数模块,其实例的具体结构如图2所示,用于对U,V和加法器ADD1的输出进行前导零计数,实际应用时其输入有位数限制;SHIFT1、SHIFT2L和SHIFT2R表示移位模块,前二者为左移,后者为右移,用于对输入进行有最大位数限制的移位操作;含MUX字样的模块表示多路选择器,其中MUX1用于选择SHIFT1输入数据,MUX1S用于选择SHIFT1需要移位的位数,MUX2L和MUX2R分别用于选择SHIFT2L和SHIFT2R的输入数据,XMUX用于选择SHIFT2L和SHIFT2R需要移位的位数,MUX3和MUX4分别用于选择ADD2和ADD3的输入数据,MUXR和MUXS分别用于选择寄存器R和S的输入数据;cu、cv、lzs、uv和wu表示算法中所用到的控制信号寄存器。其中,cu、cv、lzs、uv和wu分别表示第一至第五控制信号寄存器
进一步地,在本发明的一个实施例中,所述第一至第三前导零计数模块的结构相同,每个前导零计数模块均包括:八位多路选择器,所述八位多路选择器的第一输入端的输入为输入数据从最高位数起除符号位以外的第八位到第一位,所述八位多路选择器的第二输入端的输入为输入数据从最高位数起除符号位以外的第一位到第八位a[n-1:n-8];第一四位多路选择器和第二四位多路选择器,所述第二四位多路选择器输入数据的符号位与所述八位多路选择器的输入数据的符号位相连,所述第一四位多路选择器的输出端与所述第二四位多路选择器的第二输入端相连;八位前导零计数器LZC8,所述LZC8的输入端的输入为a[n-1:n-8];非门和四位加法器ADD,所述ADD的第一输入端分别与所述LZC8的输出端和所述第二四位多路选择器的第一输入端相连,所述ADD的第二输入端所述第一四位多路选择器的第一输入端相连,所述ADD的输出端与非门的输入端相连;八位前导一计数器LZC8_neg,所述LZC8_neg的输入端与所述八位多路选择器的第二输入端相连;四位减法器SUB,所述SUB的第一输入端分别与所述ADD的第二输入端、所述第一四位多路选择器的第一输入端和所述LZC8_neg的输出端相连,所述SUB的第二输入端输入为1,所述SUB的输出端与所述第一四位多路选择器的第二输入端相连;或非门,所述或非门的第一输入端的输入为输入数据的第九位到最低位的或运算结果ORa[n-9:0],所述或非门的第二输入端与所述非门的输出端相连,所述或非门的输出端与所述第一四位多路选择器输入数据的符号位相连。
具体而言,如图2所示,图2为适用于本发明提出的改进的二进制左移模逆算法的前导零计数模块的结构图,该结构用于对任意有符号输入数据的最多八位的“前导零”计数,输出结果表示可移动的最大位数。“前导零”既代表非负数的前导零,又代表负数的前导一。其中LZC8表示八位前导零计数器,LZC8_neg表示八位前导一计数器,分别用于应对非负数和负数的输入数据;ADD和SUB分别表示四位的加法器和减法器,add[3]表示加法器输出的最高位;MUX1表示八位的多路选择器,MUX2和MUX3表示四位的多路选择器;sign bit表示输入数据的符号位,a[n-1:n-8]表示输入数据从最高位数起除符号位以外的第一位到第八位,a[n-8:n-1]表示前者的倒序排列,OR(a[n-9:0])表示输入数据的第九位到最低位的或运算结果。
根据本发明实施例提出的基于改进的二进制左移模逆算法的装置,设计增加了适用于二进制左移模逆算法的前导零计数模块,在进行移位操作时,相当于把多个周期的操作合并到一个周期内,操作数U,V可以在一个周期内执行多位的左移操作,R和S有可能在一个周期内同时分别发生左移和右移,从而可以较大幅度提升运算速度,降低运算所需的时间,提升运算效率。
其次本发明实施例还提出了一种基于改进的二进制左移模逆算法的装置的控制方法,所述方法用于对所述装置进行控制,以在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移,其中,所述循环周期为完成n位的模逆运算所用的时钟周期数;所述方法包括以下步骤:
输入:p,a;
输出:y,取值范围为[0,p-1],y为a对于模p的模逆;
步骤S1,U←p,V←a,S←1,m←-1;R、cu、cv和lzs置0;uv、t_pos和t_neg置1;
步骤S2,当t_neg=1且t_pos=1重复执行步骤S21至步骤S25:
步骤S21,若tu=1,则执行步骤S211,否则执行步骤S212;
步骤S211,若d=0或uv=0,则执行步骤S2111,否则执行步骤S2112;
步骤S2111,U←U<<lzu,R←R<<lzu;cu←cu+lzu;uv置0;
步骤S2112,若|diff|≤lzu,则:U←U<<lzu,R←R<<lzu–|diff|,S←S>>|diff|,m←m<<|diff|,cu←cu+lzu;uv置0;否则执行步骤2113;
步骤S213,U←U<<lzu,S←S>>lzu,m←m<<lzu;cu←cu+lzu;
步骤S212,若tv=1,则执行步骤S2121,否者执行步骤S213;
步骤S2121,若d=0或uv=1,则V←V<<lzv,S←S<<lzv;cv←cv+lzv;uv置1;否则执行步骤S2122;
步骤S2122,若|diff|≤lzv,则V←V<<lzv,S←S<<lzv–|diff|,R←R>>|diff|,m←m<<|diff|,cv←cv+lzv;uv置1;否则执行步骤S2123;
步骤S2123,V←V<<lzv,R←R>>lzv,m←m<<lzv;cv←cv+lzv;
步骤S213,若un=vn,则“±”←“–”,否则“±”←“+”;
若d=0,则U←U±V<<lza,R←R±S<<lza;cu←cu+lza;lzs←lza;uv置0;wu置1;更新t_pos,t_neg;否则执行步骤S214;
步骤S214,若uv=1,则执行步骤S2141,否则执行步骤S215
步骤S2141,若|diff|≤lza,则U←U±V<<lza,R←R±S<<lza–|diff|,S←S>>|diff|,m←m<<|diff|,cu←cu+lza;lzs←lza–|diff|;uv置0;wu置1;更新t_pos,t_neg;否则执行步骤S2142;
步骤S2142,U←U±V<<lza,R←R±S,S←S>>lza,m←m<<lza,cu←cu+lza;lzs←0;wu置1;更新t_pos,t_neg;
步骤S215,若|diff|≤lza则:V←V±U<<lza,S←S±R<<lza–|diff|,R←R>>|diff|,m←m<<|diff|,cv←cv+lza;lzs←lza–|diff|;uv置1;wu置0;更新t_pos,t_neg;
否则V←V±U<<lza,S←S±R,R←R>>lza,m←m<<lza,cv←cv+lza;lzs←0;wu置0;更新t_pos,t_neg;
步骤S3,若wu=1,则S←R>>lzs,否则S←S>>lzs;
步骤S4,R←0;
步骤S5,若t_cond=1,则执行步骤S51,否则执行步骤S52;
步骤S51,若t_neg=0,则y←R–S;否则y←R+S;
步骤S52,若t_neg=0,则y←p–S;否则y←p+S;
步骤S6,返回y。
另外,根据本发明上述实施例的基于改进的二进制左移模逆算法的装置的控制方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,信号d用于判断用于记录U和V的左移次数的变量cu和cv的大小关系,cu和cv相等时d为0,否则为1;信号tu和tv表示U和V是否能在不造成溢出,即不超过±2n–1的情况下进行左移;t_pos和t_neg为判断循环结束的寄存器变量,当U或V等于2min(cu,cv)时,t_pos为0,当U或V等于-2min(cu,cv)时,t_neg为0;lzu、lzv和lza分别表示U,V和U与V相加减的结果的前导零计数;<<和>>符号分别表示左移和右移,+表示加法,-表示减法,←表示将右侧的值赋值给左侧的变量。
需要说明的是,前述对基于改进的二进制左移模逆算法的装置实施例的解释说明也适用于该实施例的基于改进的二进制左移模逆算法的装置的控制方法,此处不再赘述。
本发明实施例的基于改进的二进制左移模逆算法的装置的控制方法,设计增加了适用于二进制左移模逆算法的前导零计数模块,在进行移位操作时,相当于把多个周期的操作合并到一个周期内,操作数U,V可以在一个周期内执行多位的左移操作,R和S有可能在一个周期内同时分别发生左移和右移,从而可以较大幅度提升运算速度,降低运算所需的时间,提升运算效率。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (9)

1.一种基于改进的二进制左移模逆算法的装置,其特征在于,包括:
第一至第四寄存器,所述第一至第四主操作数寄存器用于存储操作数;
第一至第四加法器,所述第一至第四加法器用于执行逻辑操作、移位与指令调用;
第一至第三移位模块,所述第一至第三移位模块用于对输入进行有最大位数限制的移位操作,其中,第一移位模块SHIFT1和第二移位模块SHIFT2L为多位移位的左移模块,第三移位模块SHIFT2R为多位移位的右移模块;
第一至第三前导零计数模块,所述第一至第三前导零计数模块用于对第一主操作数寄存器U、第二主操作寄存器数V和第一加法器ADD1的输出进行前导零计数,以对U、V和ADD1的输入进行位数限制,并判断一个循环周期内进行左移的位数;
多个多路选择器,用于输入数据的选择和移位位数的选择;以及
多个控制信号寄存器,所述多个控制信号寄存器用于控制与控制信号寄存器相连的多路选择器的选择,以在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移,其中,
所述第一至第三前导零计数模块的结构相同,每个前导零计数模块均包括:
八位多路选择器,所述八位多路选择器的第一输入端的输入为输入数据从最高位数起除符号位以外的第八位到第一位,所述八位多路选择器的第二输入端的输入为输入数据从最高位数起除符号位以外的第一位到第八位a[n-1:n-8];
第一四位多路选择器和第二四位多路选择器,所述第二四位多路选择器输入数据的符号位与所述八位多路选择器的输入数据的符号位相连,所述第一四位多路选择器的输出端与所述第二四位多路选择器的第二输入端相连;
八位前导零计数器LZC8,所述LZC8的输入端的输入为a[n-1:n-8];
非门和四位加法器ADD,所述ADD的第一输入端分别与所述LZC8的输出端和所述第二四位多路选择器的第一输入端相连,所述ADD的第二输入端所述第一四位多路选择器的第一输入端相连,所述ADD的输出端与非门的输入端相连;
八位前导一计数器LZC8_neg,所述LZC8_neg的输入端与所述八位多路选择器的第二输入端相连;
四位减法器SUB,所述SUB的第一输入端分别与所述ADD的第二输入端、所述第一四位多路选择器的第一输入端和所述LZC8_neg的输出端相连,所述SUB的第二输入端输入为1,所述SUB的输出端与所述第一四位多路选择器的第二输入端相连;
或非门,所述或非门的第一输入端的输入为输入数据的第九位到最低位的或运算结果ORa[n-9:0],所述或非门的第二输入端与所述非门的输出端相连,所述或非门的输出端与所述第一四位多路选择器输入数据的符号位相连。
2.根据权利要求1所述的装置,其特征在于,所述第一至第三前导零计数模块进一步用于对任意有符号输入数据的最多八位的前导零计数,输出结果表示可移动的最大位数,其中,前导零代表非负数的前导零,或代表负数的前导一。
3.根据权利要求2所述的装置,其特征在于,所述多个多路选择器包括:
第一多路选择器MUX1,用于选择SHIFT1输入数据;
第二多路选择器MUX1S,用于选择SHIFT1需要移位的位数;
第三多路选择器MUX2L和第四多路选择器MUX2R,分别用于选择SHIFT2L和SHIFT2R的输入数据;
第五多路选择器XMUX,用于选择SHIFT2L和SHIFT2R需要移位的位数;
第六多路选择器MUX3和第七多路选择器MUX4,分别用于选择第二加法器ADD2和第三加法器ADD3的输入数据;
第八多路选择器MUXR和第九多路选择器MUXS,分别用于选择第三主操作数寄存器R和第四主操作数寄存器S的输入数据。
4.根据权利要求1所述的装置,其特征在于,所述多个控制信号寄存器包括第一至第五控制信号寄存器。
5.根据权利要求1所述的装置,其特征在于,所述第一加法器ADD1和第二加法器ADD2均包括信号选择sel_add,以根据sel_add选择的信号实现加减法功能。
6.根据权利要求1所述的装置,其特征在于,所述循环周期为完成n位的模逆运算所用的时钟周期数。
7.根据权利要求6所述的装置,其特征在于,所述循环周期为0.8n。
8.一种如权利要求1-7任意一项所述的基于改进的二进制左移模逆算法的装置的控制方法,其特征在于,所述方法用于对所述装置进行控制,以在进行移位操作时,在每个循环周期内对U和V的操作数执行多位的左移操作,对第三主操作数寄存器R和第四主操作数寄存器S的操作数在一个周期内同时分别发生左移和右移,其中,所述循环周期为完成n位的模逆运算所用的时钟周期数;所述方法包括以下步骤:
输入:p,a;
输出:y,取值范围为[0,p-1],y为a对于模p的模逆;
步骤S1,U←p,V←a,S←1,m←-1;R、cu、cv和lzs置0;uv、t_pos和t_neg置1;
步骤S2,当t_neg=1且t_pos=1重复执行步骤S21至步骤S25:
步骤S21,若tu=1,则执行步骤S211,否则执行步骤S212;
步骤S211,若d=0或uv=0,则执行步骤S2111,否则执行步骤S2112;
步骤S2111,U←U<<lzu,R←R<<lzu;cu←cu+lzu;uv置0;
步骤S2112,若|diff|≤lzu,则:U←U<<lzu,R←R<<lzu–|diff|,S←S>>|diff|,m←m<<|diff|,cu←cu+lzu;uv置0;否则执行步骤2113;
步骤S213,U←U<<lzu,S←S>>lzu,m←m<<lzu;cu←cu+lzu;
步骤S212,若tv=1,则执行步骤S2121,否者执行步骤S213;
步骤S2121,若d=0或uv=1,则V←V<<lzv,S←S<<lzv;cv←cv+lzv;uv置1;否则执行步骤S2122;
步骤S2122,若|diff|≤lzv,则V←V<<lzv,S←S<<lzv–|diff|,R←R>>|diff|,m←m<<|diff|,cv←cv+lzv;uv置1;否则执行步骤S2123;
步骤S2123,V←V<<lzv,R←R>>lzv,m←m<<lzv;cv←cv+lzv;
步骤S213,若un=vn,则“±”←“–”,否则“±”←“+”;
若d=0,则U←U±V<<lza,R←R±S<<lza;cu←cu+lza;lzs←lza;uv置0;wu置1;更新t_pos,t_neg;否则执行步骤S214;
步骤S214,若uv=1,则执行步骤S2141,否则执行步骤S215
步骤S2141,若|diff|≤lza,则U←U±V<<lza,R←R±S<<lza–|diff|,S←S>>|diff|,m←m<<|diff|,cu←cu+lza;lzs←lza–|diff|;uv置0;wu置1;更新t_pos,t_neg;否则执行步骤S2142;
步骤S2142,U←U±V<<lza,R←R±S,S←S>>lza,m←m<<lza,cu←cu+lza;lzs←0;wu置1;更新t_pos,t_neg;
步骤S215,若|diff|≤lza则:V←V±U<<lza,S←S±R<<lza–|diff|,R←R>>|diff|,m←m<<|diff|,cv←cv+lza;lzs←lza–|diff|;uv置1;wu置0;更新t_pos,t_neg;
否则V←V±U<<lza,S←S±R,R←R>>lza,m←m<<lza,cv←cv+lza;lzs←0;wu置0;更新t_pos,t_neg;
步骤S3,若wu=1,则S←R>>lzs,否则S←S>>lzs;
步骤S4,R←0;
步骤S5,若t_cond=1,则执行步骤S51,否则执行步骤S52;
步骤S51,若t_neg=0,则y←R–S;否则y←R+S;
步骤S52,若t_neg=0,则y←p–S;否则y←p+S;
步骤S6,返回y。
9.根据权利要求8所述的方法,其特征在于,信号d用于判断用于记录U和V的左移次数的变量cu和cv的大小关系,cu和cv相等时d为0,否则为1;信号tu和tv表示U和V是否能在不造成溢出,即不超过±2n–1的情况下进行左移;t_pos和t_neg为判断循环结束的寄存器变量,当U或V等于2min(cu,cv)时,t_pos为0,当U或V等于-2min(cu,cv)时,t_neg为0;lzu、lzv和lza分别表示U,V和U与V相加减的结果的前导零计数;<<和>>分别表示左移和右移,+表示加法,-表示减法,←表示将右侧的值赋值给左侧的变量。
CN202010876884.2A 2020-08-27 2020-08-27 基于改进的二进制左移模逆算法的装置及其控制方法 Active CN112099761B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010876884.2A CN112099761B (zh) 2020-08-27 2020-08-27 基于改进的二进制左移模逆算法的装置及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010876884.2A CN112099761B (zh) 2020-08-27 2020-08-27 基于改进的二进制左移模逆算法的装置及其控制方法

Publications (2)

Publication Number Publication Date
CN112099761A CN112099761A (zh) 2020-12-18
CN112099761B true CN112099761B (zh) 2022-09-02

Family

ID=73757992

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010876884.2A Active CN112099761B (zh) 2020-08-27 2020-08-27 基于改进的二进制左移模逆算法的装置及其控制方法

Country Status (1)

Country Link
CN (1) CN112099761B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116974514B (zh) * 2023-07-21 2024-02-02 北京市合芯数字科技有限公司 位值计数电路装置、处理器芯片及位值计数方法
CN117014208B (zh) * 2023-08-09 2024-04-09 海光信息技术股份有限公司 数据加密方法、装置、系统、电子设备及存储介质
CN117573065B (zh) * 2024-01-17 2024-04-16 青岛本原微电子有限公司 一种处理器多功能移位运算装置及运算方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103336680A (zh) * 2013-06-27 2013-10-02 清华大学 改进的二进制左移模逆算法
CN103389965A (zh) * 2013-07-05 2013-11-13 福建升腾资讯有限公司 一种实现sm2密码体制的大整数求乘逆方法
CN104579656A (zh) * 2014-12-31 2015-04-29 北京时代民芯科技有限公司 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器
CN104699450A (zh) * 2015-03-18 2015-06-10 浪潮集团有限公司 一种基于进位保留加法器的基数-16定点除法器
CN105988771A (zh) * 2015-03-04 2016-10-05 上海复旦微电子集团股份有限公司 模逆运算器
CN111213122A (zh) * 2018-08-22 2020-05-29 深圳市汇顶科技股份有限公司 模逆运算器、模逆运算方法及安全系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CZ294898B6 (cs) * 2002-12-16 2005-04-13 České Vysoké Učení Technické Fakulta Elektrotechnická Zapojení pro generování multiplikativní inverze nad konečným tělesem GF(p)

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103336680A (zh) * 2013-06-27 2013-10-02 清华大学 改进的二进制左移模逆算法
CN103389965A (zh) * 2013-07-05 2013-11-13 福建升腾资讯有限公司 一种实现sm2密码体制的大整数求乘逆方法
CN104579656A (zh) * 2014-12-31 2015-04-29 北京时代民芯科技有限公司 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器
CN105988771A (zh) * 2015-03-04 2016-10-05 上海复旦微电子集团股份有限公司 模逆运算器
CN104699450A (zh) * 2015-03-18 2015-06-10 浪潮集团有限公司 一种基于进位保留加法器的基数-16定点除法器
CN111213122A (zh) * 2018-08-22 2020-05-29 深圳市汇顶科技股份有限公司 模逆运算器、模逆运算方法及安全系统

Also Published As

Publication number Publication date
CN112099761A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN112099761B (zh) 基于改进的二进制左移模逆算法的装置及其控制方法
US6349318B1 (en) Arithmetic processor for finite field and module integer arithmetic operations
US6009451A (en) Method for generating barrel shifter result flags directly from input data
US5289397A (en) High-speed modulo exponentiator device
JPH06208456A (ja) 集積化乗算/累算ユニットを有するcpu
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
US5957996A (en) Digital data comparator and microprocessor
US5715186A (en) Digital processing device with minimum and maximum search instructions
US8073891B2 (en) Method for implementing montgomery modular multiplication and device therefore
JP4883251B1 (ja) 半導体集積回路及び指数算出方法
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
JP3003467B2 (ja) 演算装置
RU2639645C1 (ru) Арифметико-логическое устройство для сложения и вычитания чисел по модулю
CN110336658B (zh) 基于aes算法的加密方法、用户设备、存储介质及装置
WO1998048518A1 (en) An apparatus and method for computing the result of a viterbi equation in a single cycle
WO2007083377A1 (ja) パリティ生成回路、計数回路および計数方法
CN109977701B (zh) 一种定浮点运算装置
US8933731B2 (en) Binary adder and multiplier circuit
CN106708467A (zh) 一种宽位累加器电路及其设计方法、可编程逻辑器件
KR20000065394A (ko) 실수 연산기
US5978826A (en) Adder with even/odd 1-bit adder cells
JP3912958B2 (ja) データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
US8447796B2 (en) Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ)
US20080208940A1 (en) Reconfigurable circuit
CN100530076C (zh) 数据饱和管理器及相应方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant