[0121] 最佳SM3实现是目前FPGA或ASIC专用硬件。软件中的SM3的性能由于在每一 SM3轮次和消息扩展的计算中要求的依赖的操作的数量而较差。此处所描述的SM3RND指令 的添加允许在五个处理器周期内执行两轮次SM3散列压缩函数,或在S个处理器周期内完 成单轮次SM3。该估计提供相对于更好的软件实现的4倍W上的改善。
[0122] 在其他实施例中,立即数字节用于指定j(并非包含Tj.的YMM寄存器)。在该些实 施例中,YMM2可W包含W值,而YMM3可W包含W'。此外,可与上文所描述的同样的方 式定义YMM2,其还包括组合的W&W'值(而不要求YMM3)。
[0123] 在上述说明书中,已经参考特定示例性实施例描述了本发明。然而,显然可对该 些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范 围。因此,说明书和附图应被认为是说明性而非限制性意义。
[0124] 本发明的实施例可W包括W上描述的各个步骤。该些步骤可在用于致使通用或专 用处理器执行所述步骤的机器可执行指令中实现。另选地,该些步骤可由包含用于执行该 些步骤的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件 的任何组合来执行。
[01巧]如在此所述的,指令可W指硬件的具体配置,如被配置成执行特定操作或具有预 定功能的专用集成电路(ASIC)或者存储在嵌入非暂态计算机可读介质中的存储器中的软 件指令。如此,图形中所示出的技术可W使用在一个或多个电子设备(例如,终端站、网络 元件等等)上存储并执行的代码和数据来实现。此类电子设备通过使用诸如非暂态计算机 机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储 器)之类的计算机机器可读介质和暂态计算机机器可读通信介质(例如,电、光、声或其它 形式的传播信号一-诸如载波、红外信号、数字信号等)来(内部地和/或通过网络与其他 电子设备)存储和传递代码和数据。另外,该类电子设备一般包括与一个或多个其它组件 禪合的一组一个或多个处理器,所述一个或多个其它组件例如是一个或多个存储设备(非 暂态机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)W及网 络连接。该组处理器和其它组件的禪合一般是通过一个或多个总线和桥(也称总线控制 器)实现的。存储设备和携带网络流量的信号分别表示一个或多个机器可读存储介质W及 机器可读通信介质。因此,给定电子设备的存储设备通常存储代码和/或数据W供在该电 子设备的一个或多个处理器上执行。当然,本发明的实施例的一个或多个部分可使用软件、 固件和/或硬件的不同组合来实现。贯穿此详细描述,为解释起见,阐明了众多具体细节W 提供对本发明的全面理解。然而,本领域技术人员应当领会,没有该些具体细节中的一些细 节也可实践本发明。在某些实例中,并不详细描述众所周知的结构和功能W免模糊本发明 的主题。因此,本发明的范围和精神应根据所附权利要求书来判断。
【主权项】
1. 一种用于执行散列函数的方法,包括: 最初指定第一存储位置,用于存储用于计算所述散列函数的轮次的第一组状态值; 最初指定第二存储位置,用于存储也用于计算所述散列函数的轮次的第二组状态值; 以及 使用所述第一和第二组状态数据,执行多轮次的所述散列函数,其中执行包括交换所 述第一存储位置和第二存储位置的所述指定,以便所述第一存储位置被指定为存储用于第 一组轮次的所述第一组状态值和用于第二组轮次的所述第二组状态值,其中所述第二存储 位置被指定为存储用于所述第一组轮次的所述第二组状态值和用于所述第二组轮次的所 述第一组状态值。2. 如权利要求1所述的方法,其特征在于,所述第一组轮次包括偶数轮次,所述第二组 轮次包括奇数轮次。3. 如权利要求2所述的方法,其特征在于,执行进一步包括: 使用现有的第一组和第二组状态值,在每一轮中计算新的第一组状态值;以及 将所述第二组状态值设置为等于所述现有的第一组状态值。4. 如权利要求3所述的方法,其特征在于,将所述第二组状态值设置为等于所述现有 的第一组状态值的操作是借助于所述第一存储位置和所述第二存储位置的所述指定的所 述交换自动地执行的。5. 如权利要求4所述的方法,其特征在于,所述第一存储位置和第二存储位置各自包 括128位紧缩的寄存器。6. 如权利要求4所述的方法,其特征在于,所述第一存储位置和第二存储位置各自包 括256位紧缩的寄存器。7. 如权利要求3所述的方法,其特征在于,所述散列函数包括安全消息(SM)-3散列函 数,其中所述第一组状态值包括所述SM3散列函数的变量A,C,E和G,所述第二组状态值包 括所述SM3散列函数的变量B,D,F以及H。8. 如权利要求1所述的方法,其特征在于,所述第一和第二组的每一值都包括32位值。9. 如权利要求8所述的方法,其特征在于,所述第一组状态值包括四个32位值,所述第 二组状态值包括另外的四个32位值。10. -种处理器,包括: 包括其中将存储散列函数的状态变量的包括第一存储位置和第二存储位置的寄存器 组; 执行单元,用于执行所述散列函数,并最初指定所述第一存储位置,用于存储用于计算 所述散列函数的轮次的第一组状态值,并最初指定第二存储位置,用于存储也用于计算所 述散列函数的轮次的第二组状态值;以及 所述执行单元使用所述第一和第二组状态数据,执行多轮次的所述散列函数,其中执 行包括交换所述第一存储位置和第二存储位置的所述指定,以便所述第一存储位置被指定 为存储用于第一组轮次的所述第一组状态值和用于第二组轮次的所述第二组状态值,其中 所述第二存储位置被指定为存储用于所述第一组轮次的所述第二组状态值和用于所述第 二组轮次的所述第一组状态值。11. 如权利要求10所述的处理器,其特征在于,所述第一组轮次包括偶数轮次,所述第 二组轮次包括奇数轮次。12. 如权利要求11所述的处理器,其特征在于,执行进一步包括: 使用现有的第一组和第二组状态值,在每一轮中计算新的第一组状态值;以及 将所述第二组状态值设置为等于所述现有的第一组状态值。13. 如权利要求12所述的处理器,其特征在于,将所述第二组状态值设置为等于所述 现有的第一组状态值的操作是借助于所述第一存储位置和所述第二存储位置的所述指定 的所述交换自动地执行的。14. 如权利要求13所述的处理器,其特征在于,所述第一存储位置和第二存储位置各 自包括128位紧缩的寄存器。15. 如权利要求13所述的处理器,其特征在于,所述第一存储位置和第二存储位置各 自包括256位紧缩的寄存器。16. 如权利要求12所述的处理器,其特征在于,所述散列函数包括安全消息(SM)-3散 列函数,其中所述第一组状态值包括所述SM3散列函数的变量A,C,E和G,所述第二组状态 值包括所述SM3散列函数的变量B,D,F以及H。17. 如权利要求10所述的处理器,其特征在于,所述第一和第二组的每一值都包括32 位值。18. 如权利要求17所述的处理器,其特征在于,所述第一组状态值包括四个32位值,所 述第二组状态值包括另外的四个32位值。19. 一种系统,包括: 存储器,用于存储指令和数据; 具有用于高速缓存所述指令和数据的多个高速缓存级别的高速缓存子系统; 用于通过网络可通信地耦合所述系统的网络接口; 用于从一个或多个外围设备接收命令的至少一个输入/输出单元;以及 处理器,包括: 寄存器组,包括其中将存储散列函数的状态变量的第一存储位置和第二存储位置; 执行单元,用于执行所述散列函数,并最初指定所述第一存储位置,用于存储用于计算 所述散列函数的轮次的第一组状态值,并最初指定第二存储位置,用于存储也用于计算所 述散列函数的轮次的第二组状态值;以及 所述执行单元使用所述第一和第二组状态数据,执行多轮次的所述散列函数,其中执 行包括交换所述第一存储位置和第二存储位置的所述指定,以便所述第一存储位置被指定 为存储用于第一组轮次的所述第一组状态值和用于第二组轮次的所述第二组状态值,其中 所述第二存储位置被指定为存储用于所述第一组轮次的所述第二组状态值和用于所述第 二组轮次的所述第一组状态值。20. 如权利要求19所述的系统,其特征在于,所述第一组轮次包括偶数轮次,所述第二 组轮次包括奇数轮次。21. 如权利要求20所述的系统,其特征在于,执行进一步包括: 使用现有的第一组和第二组状态值,在每一轮中计算新的第一组状态值;以及 将所述第二组状态值设置为等于所述现有的第一组状态值。22. 如权利要求21所述的系统,其特征在于,将所述第二组状态值设置为等于所述现 有的第一组状态值的操作是借助于所述第一存储位置和所述第二存储位置的所述指定的 所述交换自动地执行的。23. 如权利要求22所述的系统,其特征在于,所述第一存储位置和第二存储位置各自 包括128位紧缩的寄存器。24. 如权利要求22所述的系统,其特征在于,所述第一存储位置和第二存储位置各自 包括256位紧缩的寄存器。25. 如权利要求21所述的系统,其特征在于,所述散列函数包括安全消息(SM)-3散列 函数,其中所述第一组状态值包括所述SM3散列函数的变量A,C,E和G,所述第二组状态值 包括所述SM3散列函数的变量B,D,F以及H。
【专利摘要】描述了用于在处理器上执行散列函数的设备和方法。例如,处理器的一个实施例包括:寄存器组,包括其中将存储散列函数的状态变量的第一存储位置和第二存储位置;执行单元,用于执行所述散列函数,并最初指定所述第一存储位置,用于存储用于计算所述散列函数的轮次的第一组状态值,并最初指定第二存储位置,用于存储也用于计算所述散列函数的轮次的第二组状态值;以及,所述执行单元使用所述第一和第二组状态数据,执行多轮次的所述散列函数,其中,执行包括交换所述第一存储位置和第二存储位置的所述指定,以便所述第一存储位置被指定为存储用于第一组轮次的所述第一组状态值和用于第二组轮次的所述第二组状态值,其中所述第二存储位置被指定为存储用于所述第一组轮次的所述第二组状态值和用于所述第二组轮次的所述第一组状态值。
【IPC分类】G06F21/60
【公开号】CN104951702
【申请号】CN201510096246
【发明人】G·M·沃尔里齐, V·戈帕尔, K·S·雅普, W·K·费格哈利
【申请人】英特尔公司
【公开日】2015年9月30日
【申请日】2015年3月4日
【公告号】DE102015002254A1, US20150280917