CN105574269B - 一种专用指令处理器的设计验证方法 - Google Patents
一种专用指令处理器的设计验证方法 Download PDFInfo
- Publication number
- CN105574269B CN105574269B CN201510944833.8A CN201510944833A CN105574269B CN 105574269 B CN105574269 B CN 105574269B CN 201510944833 A CN201510944833 A CN 201510944833A CN 105574269 B CN105574269 B CN 105574269B
- Authority
- CN
- China
- Prior art keywords
- instruction
- design
- processor
- dedicated
- algorithm
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种专用指令处理器的设计验证方法,该方法包括:对目标算法进行优化;将所述目标算法划分为多个基本指令块;将所述基本指令块转化为数据流图,采用近似最优解的方法,根据预设的指令设计规则在所述基本指令块中查找出可优化指令块;为查找到的所述可优化指令块设计专用指令,对原始指令集进行扩展;建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证。本发明所提供的专用指令处理器的设计验证方法,通过指令集自扩展的方法来提高目标算法实现过程中执行复杂度较高模块的运算速度,提高了算法的执行效率。
Description
技术领域
本发明涉及嵌入式技术领域,特别是涉及一种专用指令处理器的设计验证方法。
背景技术
与其他公钥密码算法相比,椭圆曲线密码算法(Elliptic curve cryptography,ECC)具有抗攻击能力强、计算量小以及处理速度快等优点,已成为下一代公钥密码体制的标准。相比于被广泛使用的公钥密码算法RSA,ECC在相同的安全强度下所要求的密钥强度仅是RSA的1/6。即对于q元有限域上的ECC,当q为160bit时(该模数目前仍然是安全的),RSA需要1024bit的模数才能达到同等的安全强度。该优势使得ECC能够获得更快的处理速度、更少的网络带宽和存储空间需求,在实际应用中具有更大的潜在使用价值。
处理器的性能是公钥密码算法高效运行的瓶颈,尤其在嵌入式应用背景下,较低的处理器性能和有限的可用资源进一步降低了公钥密码算法的运算速度和执行效率。随着ECC在嵌入式领域的广泛应用,如何提高其执行效率成为目前研究的热点问题。
发明内容
本发明的目的是提供一种专用指令处理器的设计验证方法,目的在于以牺牲少量硬件资源为代价大幅提升算法的执行效率并大幅降低指令代码的存储空间。
为解决上述技术问题,本发明提供一种专用指令处理器的设计验证方法,包括:
对目标算法进行优化;
将所述目标算法划分为多个基本指令块;
将所述基本指令块转化为数据流图,采用近似最优解的方法,根据预设的指令设计规则在所述基本指令块中查找出可优化指令块;
为查找到的所述可优化指令块设计专用指令,对原始指令集进行扩展;
建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证。
可选地,所述将所述目标算法划分为多个基本指令块包括:
对LD/ST类访存指令进行单独划分。
可选地,所述预设的指令设计规则为:扩展后的指令集兼容原有处理器模型的指令格式;新指令操作码长度与所述原有处理器模型中指令操作码长度相同,并且新指令操作码和操作数的总和不超出所述原始指令集的指令位数;指令设计过程中采用连续寄存器存储;新指令在单个时钟周期内执行完成。
可选地,所述根据预设的指令设计规则在所述基本指令块中查找出可优化指令块包括:
从所述数据流图的叶子节点开始查找,把所有(G-G')中有边指向的节点加入到G’中进行判断;如果新加入的节点使图G满足预设的约束条件,则将所述新加入的节点加入到G’图中;
所述约束条件为:查找到的所述可优化指令块的输入数据的元素个数不大于用户定义的新设计指令的最大输入数个数;查找到的所述可优化指令块内输出数据的数目不大于用户定义的新设计指令的最大输出数据个数;通过所述数据流图查找所述可优化指令块不允许有一条从vi到vi+1的有向边;
其中,G为经转换后得到的数据流图,G’为已查找到的可优化指令图,vi∈G',为可优化指令块内的节点,并且至少有一条可优化指令块外节点指向该节点集合内的任意一个节点。
可选地,在所述对目标算法进行优化之前还包括:
根据处理器模型的特点,对目标算法进行实现。
可选地,所述对目标算法进行优化包括:
通过混合坐标系、Montgomery曲线、多项式平方优化运算、模约减优化运算和Montgomery优化运算的方法对所述目标算法进行优化。
可选地,在所述建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证之后还包括:
将所述专用指令处理器模型转换为Verilog/VHDL RTL级描述的处理器模型;
对所述处理器模型进行RTL级仿真,以验证模型设计的正确性。
可选地,在对所述处理器模型进行RTL级仿真之后还包括:
将RTL级描述的处理器模型转换为处理器模型对应的门级电路,烧录到FPGA中。
可选地,在烧录到FPGA之后还包括:
在FPGA上对所述专用指令处理器模型的正确性进行验证。
本发明所提供的专用指令处理器的设计验证方法,对目标算法进行优化;将目标算法划分为多个基本指令块;将基本指令块转化为数据流图,采用近似最优解的方法,根据预设的指令设计规则在基本指令块中查找出可优化指令块;为查找到的可优化指令块设计专用指令,对原始指令集进行扩展;建立专用指令处理器模型,对专用指令处理器模型进行仿真验证。本发明所提供的专用指令处理器的设计验证方法,通过指令集自扩展的方法来提高目标算法实现过程中执行复杂度较高模块的运算速度,提高了算法的执行效率。
附图说明
图1为本发明所提供的专用指令处理器的设计验证方法的一种具体实施方式的流程图;
图2为本发明所提供的专用指令处理器的设计验证方法的另一种具体实施方式的流程图
图3为EXT1的DFG图;
图4为EXT1的RDFG图;
图5为EXT1指令的扩展指令执行部件硬件模型示意图;
图6为EXT2指令的扩展指令执行部件硬件模型示意图;
图7为EXT3指令的扩展指令执行部件硬件模型示意图;
图8为EXT4指令的扩展指令执行部件硬件模型示意图;
图9为EXT5指令的扩展指令执行部件硬件模型示意图;
图10为EXT6指令的扩展指令执行部件硬件模型示意图;
图11为EXT7指令的扩展指令执行部件硬件模型示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所提供的专用指令处理器的设计验证方法的一种具体实施方式的流程图如图1所示,该方法包括:
步骤S101:对目标算法进行优化;
该过程的核心是优化目标算法的实现流程,使得流程更加合理,运行更加高效。
对目标算法进行优化具体可以采用但并不限于采用混合坐标系、Montgomery曲线,多项式平方优化运算、模约减优化运算或Montgomery优化运算等优化方法。
步骤S102:将所述目标算法划分为多个基本指令块;
基本指令块(Basic Instruction Block,BIB)是查找可优化指令块的基本单元。作为一种具体实施方式,可具体结合下述约束条件做出判断。一般情况下,一个目标算法的实现可以划分出多个基本指令块即BIBn BIBn-1…BIB1BIB0。
在基本指令块的划分过程中,可以具体根据算法的功能模块进行划分(如AES的Sbox字节置换),也可以根据算法实现语句进行划分(如for循环语句会单独划分为一个基本指令块,因循环内语句重复且使用频繁)。这均不影响本发明的实现。
作为一种优选实施方式,本实施例在BIB的划分过程中,可以将LD/ST类访存指令进行单独划分,避免与其他运算指令划分到一个BIB内。因为这类访存指令的执行时间较长,往往决定了处理器的最坏路径执行时间,进而影响处理器的最高运行频率。因此这样的设置可以在一定程度上提高处理器的性能,降低对处理器运行频率的影响。
步骤S103:将所述基本指令块转化为数据流图,采用近似最优解的方法,根据预设的指令设计规则在所述基本指令块中查找出可优化指令块;
针对新指令设计,指令设计规则可以具体包括:(1)扩展后指令集兼容原有处理器模型的指令格式,保证译码部件的正常运行;(2)新指令操作码长度和原有处理器模型中指令操作码长度相同,并且新指令操作码和操作数的总和不能超出原指令集的指令位数;(3)指令设计过程中可采用连续寄存器存储方法,即只需知道指令的第一个寄存器位置,通过连续的寄存器存储其他输入输出数据,以此来解决指令位数不足的问题;(4)新指令需要在单个时钟周期内执行完成;(5)新指令的执行结构或部件不能过于复杂,否则难以实现并且会引起较大时延,降低算法的执行效率;(6)新指令条数不宜过多,即指令集扩展后占用的硬件资源数不能过多,否则难以满足特定应用背景的需求;(7)不应对重复的语句进行重复优化,否则会造成硬件资源的浪费。
首先将基本指令块(BIB)转换成数据流图数据流图(Data Flow Graph,DFG),本实施例中可具体采用在DFG图中根据指令设计规则,引入近似最优解方法来查找可优化指令块。
假设BIB经转换后得到的DFG图为G=(V,E),G为一个有向无环图,节点集合V表示BIB内的某一步操作,边集合E表示BIB内每一步操作的数据依赖关系。简单举例,一个加法操作c=a+b可以转换成DFG图的一部分,其中+号表示操作节点,整个操作对应3条有向边,在图中表示为产生a和b的节点到操作节点(+)的有向边和操作节点到其他需要使用变量c的节点的有向边。
为了详细阐释可优化指令块查找过程,给出以下定义:(1)假设已找到的可优化指令图即G’是G的一个子图,图中节点Vb表示可优化指令块内的节点,并且没有可优化指令块外部节点(图(G-G')所包含的节点)指向该节点的边;(2)表示可优化指令块内的节点,并且至少有一条可优化指令块外节点指向该节点集合内的任意一个节点;(3)边集合Eb代表Vb组成的节点的边集合,表示从到Vb的边的集合;(4)额外定义两类节点:和表示从可优化指令图G’到图(G-G')有边指向的点的集合,如果集合内的任意一个节点加入G’中,则G’边不满足指令设计规则。
结合新指令设计规则,可形成以下三个约束条件:(1)该约束条件定义了可优化指令块的输入约束,为DFG图查找到的可优化指令块的输入数据的元素个数,即新设计指令的输入数据个数。Nin为用户定义的新设计指令的最大输入数个数,在查找到的可优化指令块内输入数据的数目不能大于用户规定的Nin的数目;(2)该约束条件是针对新设计指令的输出数据的约束,为DFG图查找到的可优化指令块的输出数据的元素个数,即新设计指令的输出数据个数。Nout为用户规定的新设计指令的最大输出数据个数,在查找到的可优化指令块内输出数据的数目不能大于用户规定的Nout的数目;(3)G’为一个凸包,该约束条件规定通过DFG图查找到的可优化指令块不允许发生如下情况:vi→vi+1→…vj→…→vk,vi→vi+1表示有一条从vi到vi+1的有向边,而且vi∈G',vj∈(G-G')。
基于上述约束条件,可优化指令块的查找过程可以具体为:从DFG图的叶子节点开始查找,然后把所有(G-G')中有边指向的节点加入到G’中进行判断。如果新加入的节点使图G依然满足之前提到的三个约束条件,则将该节点加入到G’图中。否则将该节点属性置为并且将路径可达边到该节点的所有节点属性置为为了减少算法的执行时间,属性为的节点不再被考虑加入G’图中。
步骤S104:为查找到的所述可优化指令块设计专用指令,对原始指令集进行扩展;
在算法的实际执行过程中,规定Nin=+∞,Nout=1,通过上述算法,从基本指令块中查找最大多入单出(Max Multi Input Single Outputs,denoted as MM)指令簇,将DFG图划分为若干个MM。将每一个MM看做一个图节点,并根据MM之间的数据依赖关系对原始DFG图进行精简,绘制出相应的RDFG(Reduced-DFG)图。随后对RDFG图进行分层,同一层的MM相互之间没有数据依赖关系,因此可以进行指令的合并操作,通过设计新指令来实现。将新指令加入原有处理器模型基础指令集完成指令集的扩展。
在处理器模型原有基础指令集扩展过程中,指令优化的程度越深,使用的硬件资源数越多,算法的加速效果越好,但硬件设计成本越高;反之,指令的优化程度越浅,使用的硬件资源数越少,算法的加速效果越差,相应硬件设计成本越低。结合嵌入式应用背景,考虑到硬件资源的有限性和设计成本,不能一味地以消耗硬件资源(即不断增加新指令的数量)为代价换取算法执行效率的提升。因此,在实际中,需要综合考虑各种环境因素,结合具体的应用背景进行基础指令集的扩展。
步骤S105:建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证。
本实施例中,可具体引入电子系统级(ESL)设计方法,基于LISA语言工具建立系统级处理器模型;对处理器模型进行高层指令仿真,以验证模型设计的正确性。
本发明所提供的专用指令处理器的设计验证方法,对目标算法进行优化;将目标算法划分为多个基本指令块;将基本指令块转化为数据流图,采用近似最优解的方法,根据预设的指令设计规则在基本指令块中查找出可优化指令块;为查找到的可优化指令块设计专用指令,对原始指令集进行扩展;建立专用指令处理器模型,对专用指令处理器模型进行仿真验证。本发明所提供的专用指令处理器的设计验证方法,通过指令集自扩展的方法来提高目标算法实现过程中执行复杂度较高模块的运算速度,提高了算法的执行效率。
在上一实施例的基础上,本发明实施例在对目标算法进行优化之前还包括:
根据处理器模型的特点,对目标算法进行实现。
具体可结合处理器模型的特点,例如指令字长、寄存器存储长度等,选取适合该处理器执行的算法实现。本实施例中基于ARM处理器,选取C语言进行实现。
如图2本发明所提供的专用指令处理器的设计验证方法的另一种具体实施方式的流程图所示,在上述任一实施例的基础上,在建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证之后还包括:
步骤S106:将所述专用指令处理器模型转换为Verilog/VHDL RTL级描述的处理器模型;
步骤S107:对所述处理器模型进行RTL级仿真,以验证模型设计的正确性。
在对处理器模型进行RTL级仿真之后还包括:
步骤S108:对RTL级描述的处理器模型进行综合地布局、布线,转换成处理器模型对应的门级电路,并对模型进行资源的统计和分析,最终烧录到FPGA中。
在烧录到FPGA之后还包括:
步骤S109:借助目标算法在FPGA上执行的实验结果,验证ASIP模型整体设计思路和流程的正确性。
上述高层处理器模型的设计过程,在每一级都设有专门的验证机制,不仅保证了该级模型设计的正确性,同样也提高了ASIP整体设计方案的效率。其有益效果是:可以直接在存在问题的级别中查找错误出现的原因,不需要反馈到更高的级别,提高了模型设计的效率。
基于本发明所提供的专用指令处理器的设计验证方法,本申请还提供了一种应用于ECC专用指令处理器的方法。下面对其的设计过程进行详细阐述。
步骤S201:对ECC算法进行优化;
本实施例中融合了5种优化方法对ECC算法实现进行优化,下面分别对5种方法进行介绍。
(1)混合坐标系;
与其他运算相比,有限域上的求逆/除法运算是算术复杂度最高、最耗时的运算。在仿射坐标系中,许多运算都包含该运算,导致运算过程非常复杂。结合仿射坐标系和射影坐标系可以消除大部分的求逆运算,当椭圆曲线上的点用雅克比射影坐标系中的点表示时,点加和倍点运算不需要求逆运算操作。因此每一次标量乘运算中的求逆运算将会减少1次,大大降低了标量乘运算的复杂度。
(2)Montgomery曲线
该曲线族具有一个特殊的性质,即点乘运算可以只用x坐标来实现,速率比用Weierstrass公式运算有非常显著的提高。
(3)多项式平方运算优化
多项式平方运算优化二进制多项式的平方运算可通过将两个相同的多项式相乘的方式来实现,因为二进制平方运算是线性操作,因此比两个多项式相乘速度快得多。
假设a(z)=am-1zm-1+…+a2z2+a1z+a0,a(z)平方后的奇数次项全为0,即c(z)=a(z)2=am-1z2m-2+…+a2z4+a1z2+a0,系数的顺序也没有发生变化am-1,…,a2,a1,a0。通过隔项插0的方法实现平方运算,提出了算法1。
Algorithm1:Polynomial squaring(with word length W=32)
INPUT:A binary polynomial a(z)of degree at most m-1
OUTPUT:c(z)=a(z)2
1.Pre-computation.For each byte d=(d7,...,d1,d0),compute the 16-bitquantity T(d)=(0,d7,...,0,d1,0,d0)
2.For i from 0to t-1,do
2.1Let A[i]=(u3,u2,u1,u0)where each u is a byte
2.2C[2i]←(T(u1),T(u0)),C[2i+1]←(T(u3),T(u2))
Return(c)
本实施例使用预存储的思想。首先存储具有256个元素的表T,该表按下述方式进行构造:首先将u表示成二进制,然后将此二进制数进行隔项插零得到数Tu,将Tu存储在T[u]中。在实际运算过程中,从最低位开始按字进行。对于A的第i个字。让该字与0X000000FF进行&操作,得到8-bit数u0,然后将该字向右平移8个bit位后再次与0X000000FF进行&操作,得到8-bit数u1,重复上述操作依次得到另外两个8-bit数u2和u3,在表T中取出以u3,u2,u1,u0为下标的元素T[u3],T[u2],T[u1],T[u0],并按照算法1步骤进行赋值操作,循环结束后所得到的结果c=a(z)2。
(4)模约减运算优化
对于二进制域GF(2m),其既约多项式可表示为f(z)=zm+r(z),其中r(z)的次数最高为(m-1)次,c(z)=c2m-2z2m-2+...+cmzm+cm-1zm-1+...+c1z+c0≡[(c2m-2zm-2+...+cm)r(z)+(cm-1zm -1+...+c1z+c0)](modf(z))≡[(c2m-2zm-2+...+cm)r(z)+(cm-1zm-1+...+c1z+c0)](modf(z))。对于次数小于m的项,(cm-1zm-1+...+c1z+c0)(modf(z))=cm-1zm-1+...+c1z+c0
对于次数大于等于m的项,
c2m-2z2m-2+...+cmzm≡[(c2m-2zm-2+...+cm)r(z)](modf(z))
这样可以降低多项式的次数,提出了算法2:
Algorithm2:Modular reduction(one bit at a time)
INPUT:A binary polynomial c(z)of degree at most(2m-2)
OUTPUT:c(z)mod f(z)
1.split(c)then
high=c2m-2z2m-2+...+cmzm
deg(high)=2m-2
low=cm-1zm-1+...+c0
2.while(deg(high)>=m)do
2.1for i from deg(high)down to m do
If ci=1,then cimi-mr(z)←cimi
2.2split(high)
2.3Add low to low
3.Return(high+low).
本文使用分割的思想,在对c(z)进行求模时,首先通过移位操作将c(z)分解为两部分high=c2m-2z2m-2+...+cmzm,low=cm-1zm-1+...+c0。其中lowmodf(z)=low,
high≡[(c2m-2zm-2+...+cm)r(z)]mod(f(z)),使用同样的方法对high循环分解,直到其次数小于m为止。最后将high和low相加,即可得到求模的结果。
(5)Montgomery方法优化
为了提高标量乘运算的执行速度,本实施例可进一步采用并行处理技术。在投影坐标下Montgomery方法的基础上合理规划各运算间的逻辑关系,提出了算法3:
Algorithm3:Montgomery method optimization
INPUT:Integer k>0,point P
OUTPUT:Q=kP
3.if xp=0then
return Q←(0,0)
stop
end if
set k←(kl-1…k1k0)
set X1←1,Z1←0,X2←xp,Z2←1
for i from l-1downto 0do
T1←X1·Z2
T2←X2·Z1
if ki=1then
X1←T1·T2,Z1←(T1+T2)2
else
X2←T1·T2,Z2←(T1+T2)2
end if
end for
X1←X1/Z1
X2←X2/Z2
Z1←Z1·(X1+xP)
Z1←Z1/xP+yP
Q←(X1,Z1)
return Q
算法3共分为三个步骤:仿射坐标转化为投影坐标、主循环以及投影坐标转化为仿射坐标。算法的主循环部分包含l次循环,l即为二进制表示的k的长度,每次循环处理k中的一位。每一次循环包含有限域上的8次乘法、6次平方和3次加法运算。完成一次乘法运算所消耗的时间多于其他运算,这使得其他运算可以并行与乘法运算执行。该算法对标量乘算法的内部模块进行了并行处理,缩短了该算法的最大延迟路径。
步骤S202:将ECC算法实现划分成基本指令块BIB单元,将每个BIB都转换成相对应的DFG图;
具体地,在ARM11单片机上使用IAR执行ECC算法程序,查找程序中执行频率或调用频率最高的功能模块,从这些模块中找出多个BIB,并将每个BIB都转换成相对应的DFG图。
步骤S203:查找出可优化指令块;
下面以新指令EXT1为例阐述新指令的产生过程。基本指令块BIB为多精度乘法运算模块(对应大数库函数为mp_mul_d)中的1个子模块,将其转换成DFG图,如图3EXT1的DFG图所示,进而将其精简为RDFG图,如图4EXT1的RDFG图所示。图中MMi表示最大多入单出指令簇。
步骤S204:生成新指令;
本实施例中实现了7条新指令的设计,完成对处理器基础指令集的扩展,并提供了对应7个指令执行部件的硬件模型。
(1)EXT1新指令设计
可优化指令块是原始大数库(ECC算法实现基于TomMath大数库)多精度乘法运算的一部分,对应的汇编语句执行频率较高,将其合并转换成一条新的汇编指令ETX1:
可优化指令块伪代码(位于函数模块mp_mul_d函数中):
c=r&(mp_word)MP_MASK
u=r>>(mp_word)DIGIT_BIT
相应的汇编语句为:
MOVS R7,R0,LSL#4
MOVS R7,R7,LSR#4
MOVS R0,R0,LSR#28
ORRS R0,R0,R1,LSL#4
MOVS R1,R1,LSR#28
新指令EXT1 R0,R1,R7=R0,R1
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图5所示,R0、R1、R7表示输入,R0、R1表示输出。A_EXT1_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT1_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。
(2)EXT2新指令设计
可优化指令块伪代码(位于函数模块s_mp_add函数中):
c=a+++b+++u
u=c>>(mp_digit)DIGIT_BIT
相应的汇编语句为:
ADDS R5,R6,R5
ADDS R3,R3,R5
MOVS R3,R3,LSR#28
新指令EXT2 R3=R3,R5,R6
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图6所示,R3表示输入,R3,R5,R6表示输出。A_EXT2_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT2_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。
(3)EXT3新指令设计
可优化指令块伪代码(位于函数模块mp_mul_2函数中):
rr=a>>((mp_digit)(DIGIT_BIT-1));
b=(a<<((mp_digit)1))&MP_MASK;
相应的汇编语句为:
MOVS R12,R12,LSR#27
ORRS R3,R3,R6,LSL#1
MOVS R3,R3,LSL#4
MOVS R3,R3,LSR#4
ADDS R1,R1#0x4
新指令EXT3 R1,R3,R6,R12=R1,R3,R12
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图7所示,R1,R3,R6,R12表示输入,R1,R3,R12表示输出。A_EXT3_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT3_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。(4)EXT4新指令设计
可优化指令块伪代码(位于函数模块mp_div_2中):
rr=a&1
b--=(a-->>1)|(r<<(DIGIT_BIT-1))
相应的汇编语句为:
ANDS LR,LR,#0x1
MOVS R12,R12,LSL#27
ORRS R12,R12,R6,LSR#1
SUBS R2,R2,#0x4
SUBS R3,R3,#0x1
新指令EXT4 R2,R3,R6,R12,LR=R2,R3,R12,LR
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图8所示,R2,R3,R6,R12,LR表示输入,R2,R3,R12,LR表示输出。A_EXT4_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT4_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。(5)EXT5新指令设计
可优化指令块伪代码(位于函数模块s_mp_sub):
u=c>>((mp_digit)(CHAR_BIT*sizeof(mp_digit)-1))
c&=MP_MASK
相应的汇编语句为:
MOVS LR,LR,LSR#31
MOVS R7,R7,LSL#4
MOVS R7,R7,LSR#4
新指令EXT5 R7,LR=R7,LR
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图9所示,R7,LR表示输入,R7,LR表示输出。A_EXT5_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT5_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。
(6)EXT6新指令设计
可优化指令块伪代码(位于函数模块fast_s_mp_mul_dig):
W[i]=((mp_digit)W)&MP_MASK
W=W>>((mp_word)DIGIT_BIT)
i++
相应的汇编语句为:
MLA LR,R1,R12,LR
MOVS R3,R0,LSL#4
MOVS R3,R3,LSR#4
MOVS R0,R0,LSR#28
ORR R0,R0,R1,LSL#4
MOVS R1,R1,LSR#28
ADDS R2,R2,#0x1
新指令EXT6 R0,R2,R3,R12=R0,R1,R2,R3,R12,LR
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图10所示,R0,R2,R3,R12表示输入,R0,R1,R2,R3,R12,LR表示输出。A_EXT6_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT6_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。
(7)EXT7新指令设计
可优化指令块伪代码(位于函数模块fast_s_mp_sqr中):
W1=W>>((mp_word)DIGIT_BIT)
ix++
相应的汇编语句为:
MOVS R10,R10,LSR#28
MOVS R11,R11,LSL#4
ORR R10,R10,R11
MOVS R11,R11,LSR#28
ADDS R2,R2#0x1
新指令EXT7 R2,R10,R11=R2,R10,R11
经过ESL工具自动分析后,扩展指令执行部件硬件模型如图11所示,R2,R10,R11表示输入,R2,R10,R11表示输出。A_EXT7_EX_in是控制信号,在解码过程完成后控制输出结果。如果控制信号A_EXT7_EX_in值为0,相关寄存器的地址均无效,运算结果将不会导入任何寄存器。相反,如果控制信号值为1,多路复用器将对寄存器的地址进行验证,并将值传入寄存器中。
ECC专用指令处理器可具体由1个64MB的RAM,40个寄存器(除了33通用寄存器外,以及7个专用寄存器,包括指令寄存器IR,堆栈指针寄存器SPR和链接寄存器LR)构成。为了统计算法的执行时间,还可以进一步设定时钟计数器CCR,每次取址时将寄存器的数值加1。处理器采用8级流水线架构,包含2个取址部件(Fetch stage),1个译码部件(Decodestage),1个事件发生器部件(Issue stage)和4级整型执行流水(Integer Executionpipeline),通过流水线控制器Pipeline Control对8级流水线的各部件进行控制。通过新增7条新指令对基础指令集架构进行了扩展。
以Xilinx的Virtex5LX110T为目标芯片,对ECC(2163)_ASIP处理器模型进行综合模拟仿真,处理器执行频率为233MHz。通过模拟仿真可以得出:本发明所提供的ECC专用指令处理器的设计方法,极大地提高了算法的执行效率,并且节省了代码内存空间。
综上,本发明所提供的专用指令处理器的设计验证方法不但能够以较小的硬件资源换取较大的算法执行效率的提升,而且能够大量地减少算法代码的存储空间。新方法具有较强的设计灵活性,能够方便和灵活地移植到嵌入式平台其它算法的分析与设计中。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种专用指令处理器的设计验证方法,其特征在于,包括:
对目标算法进行优化;
将所述目标算法划分为多个基本指令块;
将所述基本指令块转化为数据流图,采用近似最优解的方法,根据预设的指令设计规则在所述基本指令块中查找出可优化指令块;
为查找到的所述可优化指令块设计专用指令,对原始指令集进行扩展;
建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证;
所述对目标算法进行优化包括:
通过混合坐标系、Montgomery曲线、多项式平方优化运算、模约减优化运算和Montgomery优化运算的方法对所述目标算法进行优化;
其中,多项式平方运算优化二进制多项式的平方运算通过将两个相同的多项式相乘的方式来实现,
假设a(z)=am-1zm-1+…+a2z2+a1z+a0,a(z)平方后的奇数次项全为0,c(z)=a(z)2=am- 1z2m-2+…+a2z4+a1z2+a0,系数的顺序也没有发生变化am-1,…,a2,a1,a0,通过隔项插0的方法实现平方运算,算法1为:
Algorithm1:Polynomial squaring(with word length W=32)
INPUT:A binary polynomial a(z)of degree at most m-1
OUTPUT:c(z)=a(z)2
Pre-computation.For each byte d=(d7,...,d1,d0),compute the 16-bitquantityT(d)=(0,d7,...,0,d1,0,d0)
For i from 0to t-1,do
Let A[i]=(u3,u2,u1,u0)where each u is a byte
C[2i]←(T(u1),T(u0)),C[2i+1]←(T(u3),T(u2))
Return(c);
使用预存储的思想,首先存储具有256个元素的表T,表T按下述方式进行构造:首先将u表示成二进制,然后将二进制数进行隔项插零得到数Tu,将Tu存储在T[u]中;在实际运算过程中,从最低位开始按字进行;对于A的第i个字,让该字与0X000000FF进行&操作,得到8-bit数u0,然后将该字向右平移8个bit位后再次与0X000000FF进行&操作,得到8-bit数u1,重复上述操作依次得到另外两个8-bit数u2和u3,在表T中取出以u3,u2,u1,u0为下标的元素T[u3],T[u2],T[u1],T[u0],并按照算法1进行赋值操作,循环结束后所得到的结果c=a(z)2;
模约减优化运算中,对于二进制域GF(2m),既约多项式表示为f(z)=zm+r(z),其中r(z)的次数最高为(m-1)次,c(z)=c2m-2z2m-2+...+cmzm+cm-1zm-1+...+c1z+c0
≡[(c2m-2zm-2+...+cm)r(z)+(cm-1zm-1+...+c1z+c0)](modf(z))
≡[(c2m-2zm-2+...+cm)r(z)+(cm-1zm-1+...+c1z+c0)](modf(z));对于次数小于m的项,
(cm-1zm-1+...+c1z+c0)(modf(z))=cm-1zm-1+...+c1z+c0
对于次数大于等于m的项,
c2m-2z2m-2+...+cmzm≡[(c2m-2zm-2+...+cm)r(z)](modf(z))
算法2为:
Algorithm2:Modular reduction(one bit at a time)
INPUT:A binary polynomial c(z)of degree at most(2m-2)
OUTPUT:c(z)mod f(z)
split(c)then
high=c2m-2z2m-2+...+cmzm
deg(high)=2m-2
low=cm-1zm-1+...+c0
while(deg(high)>=m)do
for i from deg(high)down to m do
If ci=1,thencimi-mr(z)←cimi
split(high)
Add low to low
Return(high+low)
使用分割的思想,在对c(z)进行求模时,首先通过移位操作将c(z)分解为两部分high=c2m-2z2m-2+...+cmzm,low=cm-1zm-1+...+c0;其中lowmodf(z)=low,
lowmodf(z)=low,使用同样的方法对high循环分解,直到其次数小于m为止,最后将high和low相加,得到求模的结果。
2.如权利要求1所述的专用指令处理器的设计验证方法,其特征在于,所述将所述目标算法划分为多个基本指令块包括:
对LD/ST类访存指令进行单独划分。
3.如权利要求2所述的专用指令处理器的设计验证方法,其特征在于,所述预设的指令设计规则为:扩展后的指令集兼容原有处理器模型的指令格式;新指令操作码长度与所述原有处理器模型中指令操作码长度相同,并且新指令操作码和操作数的总和不超出所述原始指令集的指令位数;指令设计过程中采用连续寄存器存储;新指令在单个时钟周期内执行完成。
4.如权利要求3所述的专用指令处理器的设计验证方法,其特征在于,所述根据预设的指令设计规则在所述基本指令块中查找出可优化指令块包括:
从所述数据流图的叶子节点开始查找,把所有(G-G')中有边指向的节点加入到G’中进行判断;如果新加入的节点使图G满足预设的约束条件,则将所述新加入的节点加入到G’图中;
所述约束条件为:查找到的所述可优化指令块的输入数据的元素个数不大于用户定义的新设计指令的最大输入数个数;查找到的所述可优化指令块内输出数据的数目不大于用户定义的新设计指令的最大输出数据个数;通过所述数据流图查找所述可优化指令块不允许有一条从vi到vi+1的有向边;
其中,G为经转换后得到的数据流图,G’为已查找到的可优化指令图,vi∈G',为可优化指令块内的节点,并且至少有一条可优化指令块外节点指向该节点集合内的任意一个节点。
5.如权利要求4所述的专用指令处理器的设计验证方法,其特征在于,在所述对目标算法进行优化之前还包括:
根据处理器模型的特点,对目标算法进行实现。
6.如权利要求1至5任一项所述的专用指令处理器的设计验证方法,其特征在于,在所述建立专用指令处理器模型,对所述专用指令处理器模型进行仿真验证之后还包括:
将所述专用指令处理器模型转换为Verilog/VHDL RTL级描述的处理器模型;
对所述处理器模型进行RTL级仿真,以验证模型设计的正确性。
7.如权利要求6所述的专用指令处理器的设计验证方法,其特征在于,在对所述处理器模型进行RTL级仿真之后还包括:
将RTL级描述的处理器模型转换为处理器模型对应的门级电路,烧录到FPGA中。
8.如权利要求7所述的专用指令处理器的设计验证方法,其特征在于,在烧录到FPGA之后还包括:
在FPGA上对所述专用指令处理器模型的正确性进行验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510944833.8A CN105574269B (zh) | 2015-12-16 | 2015-12-16 | 一种专用指令处理器的设计验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510944833.8A CN105574269B (zh) | 2015-12-16 | 2015-12-16 | 一种专用指令处理器的设计验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105574269A CN105574269A (zh) | 2016-05-11 |
CN105574269B true CN105574269B (zh) | 2019-02-12 |
Family
ID=55884399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510944833.8A Expired - Fee Related CN105574269B (zh) | 2015-12-16 | 2015-12-16 | 一种专用指令处理器的设计验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105574269B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108667623B (zh) * | 2018-05-28 | 2021-10-19 | 广东工业大学 | 一种sm2椭圆曲线签名验证算法 |
CN110210046B (zh) * | 2019-02-20 | 2023-04-07 | 芯易荟(上海)芯片科技有限公司 | 应用程序及专用指令集处理器一体化敏捷设计方法 |
CN110363700A (zh) * | 2019-07-12 | 2019-10-22 | 辽宁工程技术大学 | 一种基于深度图分割的自定义指令并行枚举方法 |
CN113076135B (zh) * | 2021-04-06 | 2023-12-26 | 谷芯(广州)技术有限公司 | 一种针对专用指令集处理器的逻辑资源共享方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826142A (zh) * | 2010-04-19 | 2010-09-08 | 中国人民解放军信息工程大学 | 一种可重构椭圆曲线密码处理器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006139729A (ja) * | 2004-11-15 | 2006-06-01 | Sharp Corp | ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体 |
-
2015
- 2015-12-16 CN CN201510944833.8A patent/CN105574269B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826142A (zh) * | 2010-04-19 | 2010-09-08 | 中国人民解放军信息工程大学 | 一种可重构椭圆曲线密码处理器 |
Non-Patent Citations (5)
Title |
---|
AES专用指令处理器的研究与实现;夏辉 等;《计算机研究与发展》;20111231;第48卷(第8期);1554-1562 |
可信嵌入式平台中无线局域网传输协议加解密算法的研究;李振周;《中国优秀硕士学位论文全文数据库 信息科技辑》;20141015(第10期);I136-411 |
基于椭圆曲线密码体系的RFID硬件加密器研究;刘小瑜;《中国优秀硕士学位论文全文数据库 信息科技辑》;20121015(第10期);I136-637 |
嵌入式可信计算平台中加解密算法的研究;陈仁海;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120115(第1期);I139-88 |
椭圆曲线密码算法的硬件加速研究;刘帅;《万方数据》;20151012;4,29,36 |
Also Published As
Publication number | Publication date |
---|---|
CN105574269A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Songhori et al. | Tinygarble: Highly compressed and scalable sequential garbled circuits | |
Drechsler et al. | Fast exact minimization of BDDs | |
CN105574269B (zh) | 一种专用指令处理器的设计验证方法 | |
Ashar et al. | Fast functional simulation using branching programs | |
Turan et al. | Compact and flexible FPGA implementation of Ed25519 and X25519 | |
JP7132926B2 (ja) | コンパイルデバイス及びコンパイル方法 | |
CN103677736A (zh) | 数字信号处理器的数据路径电路 | |
Bos et al. | Exponentiating in pairing groups | |
Tafertshofer et al. | Factored edge-valued binary decision diagrams | |
Dal Lago et al. | On constructor rewrite systems and the lambda-calculus | |
Liu et al. | Reverse product-scanning multiplication and squaring on 8-bit AVR processors | |
Manor et al. | Using HW/SW codesign for deep neural network hardware accelerator targeting low-resources embedded processors | |
Hvass et al. | High-assurance field inversion for curve-based cryptography | |
Strehl et al. | Interval diagrams for efficient symbolic verification of process networks | |
CN103150219B (zh) | 在异构资源系统上避免死锁的快速任务分配方法 | |
CN109284085A (zh) | 一种基于fpga的高速模乘和模幂运算方法及模型 | |
Safey el Din et al. | A baby steps/giant steps probabilistic algorithm for computing roadmaps in smooth bounded real hypersurface | |
Arora et al. | Instruction selection in asip synthesis using functional matching | |
Vansteenkiste et al. | Maximizing the reuse of routing resources in a reconfiguration-aware connection router | |
Gallin et al. | Architecture level optimizations for Kummer based HECC on FPGAs | |
Saito et al. | A graph-based approach to designing multiple-valued arithmetic algorithms | |
Andrzejczak | An Improved Architecture of a Hardware Accelerator for Factoring Integers with Elliptic Curve Method | |
Fit-Florea et al. | A discrete logarithm number system for integer arithmetic modulo 2^{k}: algorithms and lookup structures | |
Han et al. | Design and Implementation of High Performance Elliptic Curve Coprocessor Based on Dual Finite Field | |
Shirase et al. | An architecture for elliptic curve cryptograph computation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190212 Termination date: 20211216 |