System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及sm3算法实现,更具体地,涉及一种基于risc-v架构的sm3算法实现方法及装置。
技术介绍
1、sm3算法是一种杂凑算法,由国家密码管理局于2010年公布,于2012年发布为密码行业标准,2016年发布为国家密码杂凑算法标准。
2、当前对于sm3算法的实现方式主要集中于基于fpga的硬件逻辑实现以及基于编程语言的软件编程实现。硬件逻辑实现方式基于专用逻辑电路设计,能够获得相对较高的运行效率,但对于硬件资源开销的需求相对较大,且由于硬件逻辑实现方式的灵活性差导致对于数据处理的能力相对较弱,如针对sm3算法的数据填充过程实现开销大收益低。软件编程实现虽然具有相对更高的灵活性,但在执行效率方面相对较低。基于指令集扩展实现sm3算法能够兼顾硬件资源开销与算法执行性能,但由于sm3算法自身数据宽度以及运算逻辑等特性,对于基于扩展指令集的实现方式的研究相对较少。
技术实现思路
1、针对现有技术的至少一个缺陷或改进需求,本专利技术提供了一种基于risc-v架构的sm3算法实现方法、装置及存储介质,充分利用硬件逻辑结构运算速度快以及软件编程灵活程度高的特点,将基于sm3算法扩展指令集加入处理器的硬件逻辑结构中,使得处理器能够在指令集级别调用该扩展指令集,进而增加处理器指令集丰富度。
2、为实现上述目的,按照本专利技术的第一个方面,提供了一种基于risc-v架构的sm3算法实现方法,该方法包括:
3、设置用于sm3算法的数据装入操作的sm3writ
4、设置指令解析器,接收主处理器发送的上述三条指令,并对指令进行解析;
5、设置指令控制器,根据指令解析器对指令的解析结果调度算术逻辑单元执行逻辑运算过程,根据算术逻辑单元运算过程执行对内部存储器数据的读写以及调度流水线控制器在处理器流水线对应阶段完成运算结果的写回;
6、设置算术逻辑单元,与控制器及内部存储器连接,对内部存储器中的数据以及指令输入数据执行函数,并将所述函数的输出结果发送给内部存储器以更新内部存储器中的数据,将指令执行结果发送给流水线控制器实现指令调用的返回值输出;所述函数对应sm3算法实现原理;
7、设置内部存储器,与算数逻辑单元连接,包括多个内部寄存器,存储sm3算法执行过程中所需计算产生的数据和轮函数执行过程;
8、设置流水线控制器,与算数逻辑单元连接,控制算数逻辑单元运算过程与处理器流水线结构的逻辑关系。
9、进一步地,上述基于risc-v架构的sm3算法实现方法还包括:
10、所述sm3write指令、所述sm3round指令和所述sm3read指令是基于risc-v架构定义的用于sm3算法的三条扩展指令,均为基于rv32 r-type 指令格式,操作码选择custom-0指令类型。
11、进一步地,上述基于risc-v架构的sm3算法实现方法还包括:
12、所述sm3write指令的编码格式如下:
13、指令的第0位至第6位区间为opcode字段,其值为0001011,用于标志采用custom-0指令组;
14、指令的第7位至第11位区间为rd字段,其值为目的寄存器rd对应索引,用于标志数据装入操作是否成功;
15、指令的第12位至第14位区间为funct3字段,其值为000,用于作为三条扩展指令的分组码;
16、指令的第15位至第19位区间为rs1字段,其值为源寄存器rs1对应索引,用于存放当前执行指令所需装载的数据的部分值;
17、指令的第20位至第24位区间为rs2字段,其值为源寄存器rs2对应索引,用于存放当前执行指令所需装载的数据的部分值;
18、指令的第25位至第31位区间为funct7字段,编码格式为00phplchcmcl,其中,第30和31位的00用以标志指令类型,phpl用以标志载入数据来源为向量或运算数据,chcmcl用以标志当前载入数据与全部数据的对应关系;
19、所述sm3write指令的调用方式为,所述sm3write指令需读取源寄存器rs1的值、源寄存器rs2的值和标志位p、c,指令执行结果存放在rd索引的通用寄存器中。
20、进一步地,上述基于risc-v架构的sm3算法实现方法还包括:
21、若载入数据来源为初始向量时,phpl用以标志外部初始载入向量或运算过程中向量。
22、进一步地,上述基于risc-v架构的sm3算法实现方法还包括:
23、所述sm3round指令的编码格式如下:
24、指令的第0位至第6位区间为opcode字段,其值为0001011,用于标志采用custom-0指令组;
25、指令的第7位至第11位区间为rd字段,其值为目的寄存器rd对应索引,用于写回指令执行时产生的运算结果;
26、指令的第12位至第14位区间为funct3字段,其值为000,用于作为三条扩展指令的分组码;
27、指令的第15位至第19位区间为rs1字段,第20位至第24位区间为rs2字段,其值均为00000;
28、指令的第25位至第31位区间为funct7字段,编码格式为0100000,用于标记该值编码为sm3round指令;
29、所述sm3round指令的调用方式为,其中,定义指令有写回结果,指令执行结果存放在rd索引的通用寄存器中,指令不需读取操作数rs1、rs2。
30、进一步地,上述基于risc-v架构的sm3算法实现方法还包括:
31、所述sm3read指令的编码格式如下:
32、指令的第0位至第6位区间为opcode字段,其值为0001011,用于标志采用custom-0指令组;
33、指令的第7位至第11位区间为rd字段,其值为目的寄存器rd对应索引,用于写回指令执行时产生的运算结果;
34、指令的第12位至第14位区间为funct3字段,其值为000,用于作为三条扩展指令的分组码;
35、指令的第15位至第19位区间为rs1字段,第20位至第24位区间为rs2字段,其值均为00000;
36、指令的第25位至第31位区间为funct7字段,编码格式为1000chcmcl,用于标记该值编码为sm3read指令;
37、所述sm3read指令的调用方式为,其中,定义指令有写回结果,指令执行结果存放在rd索引的通用寄存器中,指令不需读取操作数rs1、rs2,指令需读取标志位c。
38、进一步地,上述基于risc-v架构的sm3算法实现方法还包括:
39、所述指令控制器获取所述sm3write指令、所述sm3round指令和所述sm3read指令中的本文档来自技高网...
【技术保护点】
1.一种基于RISC-V架构的SM3算法实现方法,其特征在于,包括:
2.如权利要求1所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
3.如权利要求2所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
4.如权利要求3所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
5.如权利要求2所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
6.如权利要求2所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
7.如权利要求1所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
8.如权利要求7所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
9.如权利要求8所述的基于RISC-V架构的SM3算法实现方法,其特征在于:
10.一种基于RISC-V架构的SM3算法实现装置,用于按照如权利要求1-9任一种方法的步骤实现SM3算法,包括:
【技术特征摘要】
1.一种基于risc-v架构的sm3算法实现方法,其特征在于,包括:
2.如权利要求1所述的基于risc-v架构的sm3算法实现方法,其特征在于:
3.如权利要求2所述的基于risc-v架构的sm3算法实现方法,其特征在于:
4.如权利要求3所述的基于risc-v架构的sm3算法实现方法,其特征在于:
5.如权利要求2所述的基于risc-v架构的sm3算法实现方法,其特征在于:
6.如权利要求2...
【专利技术属性】
技术研发人员:李晨琪,罗璋奇,汪沛然,黄秀,吴露露,刘晓俐,周思承,李瑞,高照,王江涛,黄哲,肖威,王隽,周浩宇,王庆年,张勋臣,万立,李杨,田宵,高子轩,
申请(专利权)人:武汉船舶通信研究所中国船舶集团有限公司第七二二研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。