CN117390705A - 数据处理方法、处理器和电子装置 - Google Patents

数据处理方法、处理器和电子装置 Download PDF

Info

Publication number
CN117390705A
CN117390705A CN202311389080.XA CN202311389080A CN117390705A CN 117390705 A CN117390705 A CN 117390705A CN 202311389080 A CN202311389080 A CN 202311389080A CN 117390705 A CN117390705 A CN 117390705A
Authority
CN
China
Prior art keywords
operand
destination
register
destination operand
bit
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.)
Pending
Application number
CN202311389080.XA
Other languages
English (en)
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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202311389080.XA priority Critical patent/CN117390705A/zh
Publication of CN117390705A publication Critical patent/CN117390705A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme

Abstract

本公开提供了一种数据处理方法、处理器和电子装置。该数据处理方法包括:获取对象指令,其中,该对象指令包括第一目的操作数、第一源操作数、第二源操作数和第二目的操作数;对该对象指令进行译码以得到译码结果;根据该译码结果,使用该第一目的操作数、该第一源操作数、该第二源操作数、该第二目的操作数进行第一运算,其中,该第一运算为(c1,rp)=ap*w+rp+c1,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中,ap表示该第一源操作数,w表示该第二源操作数,rp表示该第一目的操作数,c1表示该第二目的操作数。该数据处理方法例如通过执行向量乘法,能够更好地实现并行运算,从而提高例如RSA算法的速度和效率。

Description

数据处理方法、处理器和电子装置
技术领域
本公开的实施例涉及一种数据处理方法、处理器和电子装置。
背景技术
RSA(Ron Rivest、Adi Shamir和Leonard Adleman)是一种公知且广泛使用的公钥密码算法。RSA算法由密匙生成、加密和解密构成。RSA基于包含RSA公钥和RSA私钥的RSA密钥对。RSA公钥可为公共所知并且可用于加密消息。RSA私钥用于解密消息。RSA私钥不应为公共所知,而是保密的,或者仅为意图解密加密的消息的人预留。RSA公钥通常包括两个大的素数和辅助值的乘积。素数因子保密且用于对加密的消息进行解密。由RSA算法提供的安全性基于如下假设:借助公钥加密的消息仅能够通过私钥在合理的时间内被解密。RSA是构建安全可靠网络平台和计算环境的必选的加密算法之一。
发明内容
本公开至少一实施例提供一种数据处理方法,包括:获取对象指令,其中,所述对象指令包括第一目的操作数、第一源操作数、第二源操作数和第二目的操作数;对所述对象指令进行译码以得到译码结果;根据所述译码结果,使用所述第一目的操作数、所述第一源操作数、所述第二源操作数、所述第二目的操作数进行第一运算,其中,所述第一运算为(c1,rp)=ap*w+rp+c1,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中,ap表示所述第一源操作数,w表示所述第二源操作数,rp表示所述第一目的操作数,c1表示所述第二目的操作数。
例如,在本公开至少一实施例提供的方法中,第一目的操作数是向量寄存器操作数或内存操作数;第一源操作数是标量寄存器操作数;第二源操作数是向量寄存器操作数;以及第二目的操作数是标量寄存器操作数。
例如,在本公开至少一实施例提供的方法中,第一目的操作数为128位XMM向量寄存器操作数或256位YMM向量寄存器操作数,或128位或256位内存操作数;第一源操作数为64位标量寄存器操作数,为64位整型数据;第二源操作数为128位XMM向量寄存器操作数或256位YMM向量寄存器操作数;以及第二目的操作数为64位标量寄存器操作数,为64位整型数据。
例如,在本公开至少一实施例提供的方法中,使用第一目的操作数、第一源操作数、第二源操作数、第二目的操作数进行所述第一运算包括:获得第一源操作数和第二源操作数的乘积与第一目的操作数之和,作为第一临时值。
例如,在本公开至少一实施例提供的方法中,使用第一目的操作数、第一源操作数、第二源操作数、第二目的操作数进行所述第一运算还包括:循环执行以下步骤:获得所述第一临时值的第i*128~i*128+127位与第二目的操作数之和,作为第二临时值;将所述第二临时值的低64位存储在第一目的操作数的第i*64~i*64+63位中;将所述第二临时值的高64位存储在第二目的操作数中;以及将i增加1,其中,i的初始值为0。
例如,在本公开至少一实施例提供的方法中,第一目的操作数为可读可写操作数;第一源操作数为只读操作数;第二源操作数为只读操作数;以及第二目的操作数为可读可写操作数。
例如,在本公开至少一实施例提供的方法中,所述译码结果包括微指令、微操作、伪代码输入点、译码指令或者控制信号。
本公开至少一实施例提供一种处理器,包括:取指单元,配置为获取对象指令,其中,所述对象指令包括第一目的操作数、第一源操作数、第二源操作数、第二目的操作数;译码单元,配置为对所述对象指令进行译码以得到译码结果;执行单元,包括多个执行子单元且配置为根据所述译码结果,接收所述第一目的操作数、所述第一源操作数、所述第二源操作数、所述第二目的操作数以进行第一运算,其中,所述第一运算为(c1,rp)=ap*w+rp+c1,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中,ap表示所述第一源操作数,w表示所述第二源操作数,rp表示所述第一目的操作数,c1表示所述第二目的操作数。
例如,本公开至少一实施例提供的处理器还包括第一向量寄存器、第二向量寄存器、第一标量寄存器和第二标量寄存器,其中,所述多个执行子单元包括第一执行子单元,所述第一执行子单元配置为:从所述第一向量寄存器或与所述处理器耦接的第一内存区域获取第一目的操作数;从所述第一标量寄存器获取第一源操作数;从所述第二向量寄存器获取第二源操作数;以及从所述第二标量寄存器获取第二目的操作数。
例如,在本公开至少一实施例提供的处理器中,所述第一向量寄存器为128位XMM向量寄存器或256位YMM向量寄存器,以及所述第一内存区域为128位或256位内存区域;所述第二向量寄存器为128位XMM向量寄存器或256位YMM向量寄存器;所述第一标量寄存器为64位标量寄存器;以及所述第二标量寄存器为64位标量寄存器。
例如,在本公开至少一实施例提供的处理器中,所述多个执行子单元还包括第二执行子单元,所述第二执行子单元配置为:获得第一源操作数和第二源操作数的乘积与第一目的操作数之和,作为第一临时值。
例如,在本公开至少一实施例提供的处理器中,所述多个执行子单元还包括第三执行子单元、第四执行子单元、第五执行子单元和第六执行子单元,配置为循环执行以下步骤:通过第三执行子单元获得所述第一临时值的第i*128~i*128+127位与第二目的操作数之和,作为第二临时值;通过第四执行子单元将所述第二临时值的低64位存储在第一目的操作数的第i*64~i*64+63位中;通过第五执行子单元将所述第二临时值的高64位存储在第二目的操作数中;以及通过第六执行子单元将i增加1,其中,i的初始值为0。
例如,在本公开至少一实施例提供的处理器中,所述第一向量寄存器为可读可写寄存器,以及所述第一内存区域为可读可写内存区域;所述第二向量寄存器为只读寄存器;所述第一标量寄存器为只读寄存器;以及所述第二标量寄存器为可读可写寄存器。
例如,在本公开至少一实施例提供的处理器中,所述译码结果包括微指令、微操作、伪代码输入点、译码指令或者控制信号。
本公开至少一实施例提供一种电子装置,包括前述处理器。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1是示出根据本公开至少一实施例的数据处理方法的流程图;
图2是示出根据本公开至少一实施例的执行RSA加速指令的方法的流程图;
图3是示出根据本公开至少一实施例的RSA加速指令格式的框图;
图4示出根据本公开至少一实施例的RSA加速指令VPRSAFMA的执行过程的伪代码;
图5是示出根据本公开至少一实施例的处理器的框图;
图6是示出根据本公开至少一实施例的执行RSA加速指令的系统的框图;
图7是示出根据本公开至少一实施例的执行单元的框图;
图8是示出根据本公开至少一实施例的执行RSA加速指令的过程的示意图;以及
图9是示出根据本公开至少一实施例的电子装置的框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
RSA算法不仅能够用于数据加密,而且还能够用于数字签名。多年来人们花费了大量努力来提高实现RSA算法的速度和效率。这是通过硬件和软件两个方面来完成的。一种更常见的实现RSA算法的方式就是用Openssl库。Openssl库是开源软件库,其支持包含RSA算法在内的各种密码算法。然而,即使努力提高实现RSA算法的速度和效率,RSA算法的实现的计算量往往仍然是相对较大的。因此,进一步提高实现RSA算法速度和效率的方法是有益的。
本公开的发明人通过perf工具分析Openssl库实现RSA算法后,发现RSA算法在一个热点函数耗时过高,该热点函数为bn_mul_mont,即蒙哥马利大数乘法相关函数。另外,构成热点函数bn_mul_mont的指令(代码)也被分析,从而发现这些指令(代码)的子集占据总执行时间的相对大的比例。为了提高RSA算法速度和效率,本公开的发明人设计了一种数据处理方法和处理器,例如该数据处理方法使用一种可用于对执行RSA算法进行加速的指令(RSA加速指令),以便通过这样的单个指令来实现热点函数bn_mul_mont中的多个指令(代码)。例如,可以通过单个RSA加速指令就可以实现热点函数bn_mul_mont中的核心函数bn_mul_add_words。这里,函数bn_mul_add_words对应的运算为(c1,rp)=ap*w+rp+c1,其中,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中。例如,在至少一个实施例中,RSA加速指令也可以以单指令多数据(single instruction multipledata,SIMD)指令的方式来实现。下面结合图1-9描述根据本公开的多个实施例。
图1是示出根据本公开至少一实施例的数据处理方法的流程图。如图1所示,该数据处理方法包括步骤S110、S120、S130。
在步骤S110,可以获取对象指令。该对象指令可以包括第一目的操作数、第一源操作数、第二源操作数和第二目的操作数。在该对象指令中,第一目的操作数和第二目的操作数既作为执行该对象指令的装置(例如,处理器、电子装置等等)的输入,又作为该装置的输出。因此,当第一目的操作数作为该装置的输入时,可以将第一目的操作数称为第三源操作数,并且第三源操作数是第一目的操作数的初始值。当第二目的操作数作为该装置的输入时,可以将第二目的操作数称为第四源操作数,并且第四源操作数是第二目的操作数的初始值。
在本公开至少一实施例中,该对象指令的一个示例可以是RSA加速指令。结合图2进一步描述步骤S110。图2是示出根据本公开至少一实施例的执行RSA加速指令的方法的流程图。获取对象指令的一个示例可以是如图2的步骤S210,即,接收具有第一源操作数、第二源操作数、第三源操作数(也可称为第一目的操作数的初始值)、第四源操作数(也可称为第一目的操作数的初始值)的RSA加速指令。
下面结合图3描述RSA加速指令的示例格式。图3是示出根据本公开至少一实施例的RSA加速指令格式300的框图。
如图3所示,RSA加速指令格式300可以包括操作码301。操作码301可以表示用于标识该RSA加速指令格式的多个位或者一个或多个字段。操作码301可以表示RSA加速操作或者与RSA加速操作相关联。
RSA加速指令格式300还可以包括四个字段:DEST1 302、SRC1 303、SRC2 304和DEST2 305。
DEST1 302可以是向量寄存器或内存地址,属性可以是可读可写,并且可以对应于前述的第一目的操作数的存储位置。也就是说,第一目的操作数可以是向量寄存器操作数或内存操作数,例如,可以是128位XMM向量寄存器操作数或256位YMM向量寄存器操作数,或128位或256位内存操作数。并且,第一目的操作数可以是可读可写操作数。这里,XMM表示x86架构中SSE、avx128、avx512vl.xmm指令集使用的逻辑(架构)寄存器名称(LRN),并且存储128位数据,而YMM表示x86架构中avx256、avx512vl.ymm指令集使用的LRN,并且存储256位数据。本公开的实施例并不限用于x86指令集或架构,同样可以用于Arm指令集或架构,用于MIPS指令集或架构,或用于RISC-V指令集或架构等。
SRC1 303可以是通用寄存器(也称为标量寄存器)。标量寄存器可以保存一个64位整型数据,即一个大数。SRC1 303的属性可以是只读,并且可以对应于第一源操作数的存储位置。也就是说,第一源操作数可以是标量寄存器操作数。例如,第一源操作数可以为64位标量寄存器操作数,可以为64位整型数据。并且,第一源操作数可以是只读操作数。
SRC2 304可以是向量寄存器或内存地址,属性可以是只读,并且可以对应于第二源操作数的存储位置。也就是说,第二源操作数可以是向量寄存器操作数。例如,第二源操作数可以是128位XMM向量寄存器操作数或256位YMM向量寄存器操作数。并且,第二源操作数可以是只读操作数。
DEST2 305可以是标量寄存器,属性可以是可读可写,并且可以对应于第二目的操作数的存储位置。也就是说,第二目的操作数可以是标量寄存器操作数。例如,第二目的操作数可以为64位标量寄存器操作数,可以是64位整型数据。并且,第二目的操作数可以是可读可写操作数。
在本公开至少一实施例中,寄存器(标量寄存器和向量寄存器)可以表示架构上可见的寄存器(例如,架构寄存器文件)。架构上可见的寄存器或者架构寄存器对软件和/或编程者可见和/或是指令(例如,RSA加速指令)指示的标识操作数的寄存器。这些架构寄存器与在给定微架构中的其他非架构或者非架构可见的寄存器(例如,临时寄存器、重定序缓冲器、引退寄存器等)形成对比。寄存器可以利用公知技术以不同方式实现在不同的微架构中并且不限于任何特定类型的电路。各种不同类型的寄存器是适用的。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器以及它们的组合。
前述四个字段DEST1 302、SRC1 303、SRC2 304和DEST2 305的图示次序/布置不是必需的,可以重新布置。前述四个字段的位可以是邻接的,也可以是非邻接或分开的。前述四个字段中的一些字段可以重叠。根据本公开至少一实施例,还可以向RSA加速指令格式300添加附加字段。例如,可以添加附加字段以用于规定操作数大小(例如,32位、64位、128位等等,但不限于此),或者用于将操作数定性为有符号的或无符号的等等。虽然图3示出了显式地规定RSA加速指令格式300的四个操作数的存储位置,然而,在本公开的至少一实施例中,RSA加速指令格式300也可以仅仅显式地规定RSA加速指令格式300的一个、两个或三个操作数的存储位置,而其余操作数的存储位置可以被隐式地规定。
继续返回图1,在步骤S120,可以对对象指令进行译码以得到译码结果。译码结果可以包括微指令、微操作、伪代码输入点、译码指令或者控制信号、或反映、表征和/或源自RSA加速指令的其他相对较低级指令或控制信号。例如,可以将较高级的RSA加速指令译码为可以通过一个或多个相对较低级(例如,电路级或硬件级)操作来实现的一个或多个相对较低级指令或控制信号。
在步骤S130,根据译码结果,可以使用第一目的操作数、第一源操作数、第二源操作数、第二目的操作数进行第一运算。第一运算可以涉及如前所述的核心函数bn_mul_add_words,即(c1,rp)=ap*w+rp+c1,其中,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中,其中,ap表示第一源操作数,w表示第二源操作数,rp表示第一目的操作数,c1表示第二目的操作数。
例如,使用第一目的操作数、第一源操作数、第二源操作数、第二目的操作数进行第一运算可以包括:首先,获得第一源操作数和第二源操作数的乘积与第一目的操作数之和,作为第一临时值。第一源操作数和第二源操作数相乘的乘法可以是通过使用向量寄存器执行的向量乘法,从而可以实现并行运算,提高RSA算法的速度和效率。然后,循环执行以下步骤:
(1)获得第一临时值的第i*128~i*128+127位与第二目的操作数之和,作为第二临时值;
(2)将第二临时值的低64位存储在第一目的操作数的第i*64~i*64+63位中;
(3)将第二临时值的高64位存储在第二目的操作数中;以及
(4)将i增加1,其中,i的初始值为0。
由此,可以得到第一目的操作数和第二目的操作数作为第一运算的结果,并对其进行存储,如图2的步骤S220所示。
下面结合图4更详细地描述第一运算的示例性过程。图4示出根据本公开至少一实施例的RSA加速指令(以下以VPRSAFMA指代)的执行过程的示例性伪代码。该伪代码能够更详细示出前述循环过程。
在图4中,TEMP0、TEMP1可以表示临时寄存器(例如,物理寄存器、微架构寄存器)。符号“←”表示存储。TEMP0中的128位的获取可以通过移位来实现。TEMP1中高64位和低64位的获取可以通过移位来实现。TEMP0[511:0]只是伪代码表示方式,在微处理器中可以使用2个YMM物理寄存器表示。在本公开的至少一实施例中,可以可选地使用更少或更多的临时寄存器。
如图4所示,RSA加速指令(标记为VPRSAFMA)可以包含操作数:DST(表示第一目的操作数)、SRC(表示第二源操作数)、RCX(表示第一源操作数)和RAX(表示第二目的操作数)。根据SRC和DST存储在256位的YMM向量寄存器还是128位的XMM向量寄存器,可以将伪代码分为YMM和XMM两部分。这是因为向量寄存器的位数不同,执行RSA加速指令的过程稍有不同。
接下来对伪代码YMM进行说明。伪代码YMM针对SRC和DST是256位操作数的情况。在伪代码YMM中,首先,获得RCX和SRC的乘积与DST之和,也就是前述第一临时值,将其存储在TEMP0[511:0]中。RCX和SRC相乘的乘法是通过使用向量寄存器执行的向量乘法,从而可以实现并行运算,提高RSA算法的速度和效率。接下来,执行总共4次循环。
第1次循环对应于步骤S130中i=0的循环。在第1次循环中,将TEMP0的从低位开始的第一个128位(即,TEMP0的最低128位,也就是第127:0位)与RAX相加,相加结果对应于步骤130中的第二临时值,将相加结果存储在TEMP1[127:0]中;然后,将TEMP1[127:0]的高64位存储到RAX中,将TEMP1[127:0]的低64位存储到DST的从低位开始的第一个64位(即,第63:0位)中;
第2次循环对应于步骤S130中i=1的循环。在第2次循环中,将TEMP0的从低位开始的第二个128位(也就是第255:128位)与RAX相加,相加结果对应于步骤130中的第二临时值,将相加结果存储在TEMP1[127:0]中;然后,将TEMP1[127:0]的高64位存储到RAX中,将TEMP1[127:0]的低64位存储到DST的从低位开始的第二个64位(即,第127:64位)中。
第3次循环对应于步骤S130中i=2的循环。在第3次循环中,将TEMP0的从低位开始的第三个128位(也就是第383:256位)与RAX相加,相加结果对应于步骤S130中的第二临时值,将相加结果存储在TEMP1[127:0]中;然后,将TEMP1[127:0]的高64位存储到RAX中,将TEMP1[127:0]的低64位存储到DST的从低位开始的第三个64位(即,第191:128位)中。
第4次循环对应于步骤S130中i=3的循环。在第4次循环中,将TEMP0的从低位开始的第四个128位(即,TEMP0的最高128位,也就是第511:384位)与RAX相加,相加结果对应于步骤S130中的第二临时值,将相加结果存储在TEMP1[127:0]中;然后,将TEMP1[127:0]的高64位存储到RAX中,将TEMP1[127:0]的低64位存储到DST的从低位开始的第四个64位(即,第255:192位)中。
4次循环后,DST的256位都被写入。DST的写入结果与RAX的最后一次写入结果一起作为RSA加速指令VPRSAFMA的输出结果。
伪代码XMM针对SRC和DST是128位操作数的情况,总共循环2次,每次循环的操作与伪代码YMM的循环中的操作相似,此处不再赘述。
前述第一运算可以通过处理器实现,例如,可以由处理器中的硬逻辑(即布线以及一些开关(例如控制寄存器)等)来实现,也可以通过处理器中的一个控制单元(例如,相当于一个内核处理器)来执行微代码来实现。
根据本公开至少一实施例,图1所示的方法可以在RSA算法的OpenSSL库实现期间执行。在本公开至少一实施例中,该方法可以在RSA算法的OpenSSL库实现的函数bn_mul_mont期间执行。图1所示的方法可以涉及到架构操作(例如,从软件视角可见的架构寄存器)。例如,该方法可以包括一个或多个微架构操作。在图1所示的数据处理方法中,通过使用向量寄存器执行向量乘法(即第一源操作数和第二源操作数的乘法),能够实现并行运算,从而提高RSA算法的速度和效率。
下面结合图5-图8描述能够执行图1所示的方法的处理器。
图5是示出根据本公开至少一实施例的处理器500的框图。
如图5所示,处理器500可以包括取指单元510、译码单元520和执行单元530。
取指单元710可以配置为获取对象指令。该对象指令包括第一目的操作数、第一源操作数、第二源操作数、第二目的操作数。
第一目的操作数可以是向量寄存器操作数或内存操作数,例如,可以是128位XMM向量寄存器操作数或256位YMM向量寄存器操作数,或128位或256位内存操作数。并且,第一目的操作数可以是可读可写操作数。
第一源操作数可以是标量寄存器操作数。第一源操作数可以为64位标量寄存器操作数,可以为64位整型数据。并且,第一源操作数可以是只读操作数。
第二源操作数可以是向量寄存器操作数。例如,第二源操作数可以是128位XMM向量寄存器操作数或256位YMM向量寄存器操作数。并且,第二源操作数可以是只读操作数。
第二目的操作数可以是标量寄存器操作数。例如,第二目的操作数可以为64位标量寄存器操作数,可以是64位整型数据。并且,第二目的操作数可以是可读可写操作数。
在本公开至少一实施例中,该对象指令的一个示例可以是前述RSA加速指令。该RSA加速指令可以具有图3所示的格式,此处不再赘述。取指单元510可以包括接收指令的一个或多个输入结构(例如,输入端口、输入互连、输入接口等)。根据本公开至少一实施例,取指单元510可以从片外源(例如,从存储器、互连等)或者从片上源(例如,从指令高速缓存、指令队列等)接收RSA加速指令。
译码单元520可以配置为对对象指令进行译码以得到译码结果。译码结果可以包括微指令、微操作、伪代码输入点、译码指令或者控制信号、或反映、表征和/或源自RSA加速指令的其他相对较低级指令或控制信号。
根据本公开至少一实施例,译码单元520可以包括识别对象指令的与取值单元510的一个或多个输入结构耦合的指令识别逻辑。指令识别逻辑可以利用各种不同的机制来实现,该机制包括但不限于微码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及用于实现本领域已知的译码单元的其他机制。
根据本公开至少一实施例,译码单元520还可以包括与识别逻辑耦合的、接收并译码RSA加速指令的译码逻辑。译码逻辑可以利用各种不同的机制来实现,该机制包括但不限于微码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及用于实现本领域已知的译码单元的其他机制。例如,通过译码单元520的译码功能,可以将较高级的RSA加速指令译码为可以通过一个或多个相对较低级(例如,电路级或硬件级)操作来实现的一个或多个相对较低级指令或控制信号。
根据本公开至少一实施例,译码单元520还可以包括与译码逻辑耦合的、输出译码结果(例如,一个或多个对应的较低级指令或控制信号)的一个或多个输出结构(例如,输出端口、输出互连、输出接口等)。
根据至少一实施例,可以将取指单元510和译码单元520的功能可以集成在一个单元/模块,例如,如图6所示的取指译码单元610。
图6是示出根据本公开至少一实施例的执行RSA加速指令的系统的框图。图6中的取指译码单元610接收RSA加速指令601并且对其进行译码,将译码结果传送到执行单元530,以便执行单元530从寄存器/内存640读取多个操作数并且对该多个操作数进行运算。
继续返回图5,执行单元530可以包括多个执行子单元且配置为根据译码结果,接收第一目的操作数、第一源操作数、第二源操作数、第二目的操作数以进行第一运算。第一运算可以是如前所述的核心函数bn_mul_add_words,即(c1,rp)=ap*w+rp+c1,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中。ap表示第一源操作数,w表示第二源操作数,rp表示第一目的操作数,c1表示第二目的操作数。
根据本公开至少一实施例,第一目的操作数和第二目的操作数既作为执行单元530的输入,又作为执行单元530的输出。当第一目的操作数作为执行单元530的输入时,可以将第一目的操作数称为第三源操作数(如图6中的“OUTPUT”643),并且第三源操作数是第一目的操作数的初始值。当第二目的操作数作为执行单元530的输入时,可以将第二目的操作数称为第四源操作数(如图6中的“CARRY”644),并且第四源操作数是第二目的操作数的初始值。因此,如图6所示,执行单元530可以接收第一源操作数(“WORD”641)、第二源操作数(“INPUT”642)、第三源操作数(“OUTPUT”643)、第四源操作数(“CARRY”644),并且输出第一目的操作数(“OUTPUT”645)和第二目的操作数(“CARRY”646)。
根据本公开至少一实施例,执行单元530可以包括算术单元、算术逻辑单元、执行算术和逻辑运算的模拟/数字电路、包括乘法器和加法器的模拟/数字电路等等。根据本公开至少一实施例,执行单元530可包括用于执行对象指令(例如,RSA加速指令)和/或响应于RSA加速指令(例如,响应于通过对RSA加速指令译码得到的一个或多个指令或控制信号)而存储结果的具体的或特定的逻辑(例如,晶体管、集成电路系统或其他可能与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的硬件)。根据本公开至少一实施例,执行单元530可以包括接收源操作数的一个或多个输入结构(例如,输入端口、输入互连、输入接口等);处理源操作数以及生成目的操作数的、与输入结构耦合的电路系统或逻辑(例如,至少一个乘法器以及至少一个加法器);以及输出结果操作数的、与电路系统或逻辑耦合的一个或多个输出结构(例如,输出端口、输出互连、输出接口等)。
下面结合图7进一步描述执行单元530。图7是示出根据本公开至少一实施例的执行单元530的框图。如图7所示,执行单元530可以包括第一执行子单元7301、第二执行子单元7302、第三执行子单元7303、第四执行子单元7304、第五执行子单元7305以及第六执行子单元7306。
第一执行子单元7301可以配置为:从第一向量寄存器或与处理器500耦接的第一内存区域获取第一目的操作数,第一向量寄存器可以为128位XMM向量寄存器或256位YMM向量寄存器,并且第一向量寄存器7401可以为可读可写寄存器,第一内存区域可以为128位或256位内存区域,第一内存区域可以为可读可写内存区域;从第一标量寄存器获取第一源操作数,第一标量寄存器可以为64位标量寄存器,并且第一标量寄存器可以为只读寄存器;从第二向量寄存器获取第二源操作数,第二向量寄存器可以为128位XMM向量寄存器或256位YMM向量寄存器,并且第二向量寄存器可以为只读寄存器;以及从第二标量寄存器获取第二目的操作数,第二标量寄存器可以为64位标量寄存器,并且第二标量寄存器7404可以为可读可写寄存器。根据本公开至少一实施例,第一向量寄存器、第一标量寄存器、第二向量寄存器、第二标量寄存器中的至少一个可以是处理器500内部的组件,也可以与处理器500分离。
第二执行子单元7302可以配置为:获得第一源操作数和第二源操作数的乘积与第一目的操作数之和,作为第一临时值。可以结合图8来描述第二执行子单元7302。
图8是示出根据本公开至少一实施例的执行RSA加速指令的过程的示意图。根据本公开的至少一实施例,第二执行子单元7302可以包括如图8所示的乘法器802和加法器803。
乘法器802可以是浮点计算单元(floating point unit,FPU)乘法器,以用于向量乘法。乘法器802可以接收第一源操作数(“WORD”641)和第二源操作数(“INPUT”642)。例如,可以先将第一源操作数(“WORD”641)广播(例如,加载(load,LD)/FPU广播)到(向量)寄存器801中,然后乘法器802从向量寄存器801获取第一源操作数(“WORD”641),以便与第二源操作数(“INPUT”642)进行(向量)乘法。加法器803可以是FPU加法器。加法器803可以将乘法器802的输出与第三源操作数(“OUTPUT”643)进行(向量)加法。
第三执行子单元7303、第四执行子单元7304、第五执行子单元7305和第六执行子单元7306可以配置为循环执行以下步骤:(1)通过第三执行子单元7303获得第一临时值的第i*128~i*128+127位与第二目的操作数之和,作为第二临时值;(2)通过第四执行子单元7304将第二临时值的低64位存储在第一目的操作数的第i*64~i*64+63位中;(3)通过第五执行子单元7305将第二临时值的高64位存储在第二目的操作数中;以及(4)通过第六执行子单元7306将i增加1,其中,i的初始值为0。下面以第二源操作数和第一目的操作数是256位操作数为例,结合图8描述该循环。
首先,第三执行子单元7303可以将第二执行子单元7302的输出(例如,加法器803的输出)中的最低128位(也就是第127:0位)与第四源操作数(“CARRY”644)相加。根据本公开至少一实施例,第三执行子单元7303通过如图8所示的加法器804进行该加法运算。加法器804可以是算数逻辑单元(arithmetic and logic unit,ALU)加法器。第四执行子单元7304可以将相加的结果的低64位放到第一目的操作数(“OUTPUT”645)的64位中。第五执行子单元7305可以将相加的结果的高64位放到第二目的操作数(“CARRY”646)的最低64位(也就是第63:0位)中。
其次,第三执行子单元7303可以将第二执行子单元7302的输出(例如,加法器803的输出)中的从低位开始的第二个128位(也就是第255:128位)与第二目的操作数(“CARRY”646)相加。第四执行子单元7304可以将相加的结果的低64位放到第一目的操作数(“OUTPUT”645)的64位中。第五执行子单元7305可以将相加的结果的高64位放到第二目的操作数(“CARRY”646)的从低位开始的第二个64位(也就是第127:64位)中。
然后,第三执行子单元7303可以将第二执行子单元7302的输出(例如,加法器803的输出)中的从低位开始的第三个128位(也就是第383:256位)与第二目的操作数(“CARRY”646)相加。第四执行子单元7304可以将相加的结果的低64位放到第一目的操作数(“OUTPUT”645)的64位中。第五执行子单元7305可以将相加的结果的高64位放到第二目的操作数(“CARRY”646)的从低位开始的第三个64位(也就是第191:128位)中。
最后,第三执行子单元7303可以将第二执行子单元7302的输出(例如,加法器803的输出)中的最高128位(也就是第511:384位)与第二目的操作数(“CARRY”646)相加。第四执行子单元7304可以将相加的结果的低64位放到第一目的操作数(“OUTPUT”645)的64位中。第五执行子单元7305可以将相加的结果的高64位放到第二目的操作数(“CARRY”646)的最高64位(也就是第255:192位)中。
在以上4次循环后,第二目的操作数(“CARRY”646)的256位都被写入。第二目的操作数(“CARRY”646)的写入结果与第一目的操作数(“OUTPUT”645)的最后一次写入结果一起作为第一运算的结果。
当第二源操作数和第一目的操作数是128位操作数时,执行单元530的操作与第二源操作数和第一目的操作数是256位操作数时执行单元530的的操作类似,总共循环2次,此处不再赘述。
以上结合图5-图8描述了处理器500。根据本公开至少一实施例,处理器500还可以可选地包括其他公知的处理器组件。这些组件的可能的示例包括但不限于指令取回单元、指令和数据高速缓存、第二或更高级高速缓存、无序执行逻辑、指令调度单元、寄存器重命名单元、引退单元、总线接口单元、指令与数据变换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、处理器包含的其他组件及其各种组合。
根据本公开至少一实施例,处理器500可以具有多个核、逻辑处理器或执行引擎,该多个核、逻辑处理器或执行引擎中的至少一个具有取指单元510、译码单元520和执行单元530。处理器500可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中常用的类型),例如,处理器500可以是通用处理器,例如是基于X86架构、ARM架构、MIPS架构或RISC-V架构等的中央处理单元(CPU)。例如,处理器500也可以是专用处理器,包括但不限于密码处理器、网络处理器、通信处理器、协处理器、图形处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。例如,处理器500可以是复杂指令集计算(CISC)处理器、精减指令集计算(RISC)处理器、极长指令字(VLIW)处理器、前述各种处理器的混合物、或其他类型的处理器中的任一种。
在结合图5-图8描述的处理器500中,通过使用向量寄存器执行向量乘法,能够利用FPU更好地实现并行运算,从而提高RSA算法的速度和效率。
本公开的至少一些实施例还提供了一种电子装置,该电子装置包括上述任一实施例的处理器。图9为本公开至少一个实施例提供的一种电子装置的示意框图。
本公开至少一实施例中的电子装置可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子装置900仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图6所示,在一些示例中,电子装置900包括处理装置(例如中央处理器、图形处理器等)901,该处理装置可以包括上述任一实施例的处理器,其可以根据存储在只读存储器(ROM)902中的程序或者从存储装置908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有计算机系统操作所需的各种程序和数据。处理器901、ROM 902以及RAM 903通过总线904被此相连。输入/输出(I/O)接口905也连接至总线904。
例如,以下部件可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡的通信装置909。通信装置909可以允许电子装置900与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储装置908。虽然图9示出了包括各种装置的电子装置900,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该电子装置900还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置909可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,该电子装置900可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪、服务器等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。
有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

Claims (17)

1.一种数据处理方法,包括:
获取对象指令,其中,所述对象指令包括第一目的操作数、第一源操作数、第二源操作数和第二目的操作数;
对所述对象指令进行译码以得到译码结果;
根据所述译码结果,使用所述第一目的操作数、所述第一源操作数、所述第二源操作数、所述第二目的操作数进行第一运算。
2.根据权利要求1所述的数据处理方法,其中,所述第一运算为(c1,rp)=ap*w+rp+c1,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中,ap表示所述第一源操作数,w表示所述第二源操作数,rp表示所述第一目的操作数,c1表示所述第二目的操作数。
3.根据权利要求1所述的数据处理方法,其中,
第一目的操作数是向量寄存器操作数或内存操作数;
第一源操作数是标量寄存器操作数;
第二源操作数是向量寄存器操作数;以及
第二目的操作数是标量寄存器操作数。
4.根据权利要求2所述的数据处理方法,其中,
第一目的操作数为128位XMM向量寄存器操作数或256位YMM向量寄存器操作数,或128位或256位内存操作数;
第一源操作数为64位标量寄存器操作数,为64位整型数据;
第二源操作数为128位XMM向量寄存器操作数或256位YMM向量寄存器操作数;以及
第二目的操作数为64位标量寄存器操作数,为64位整型数据。
5.根据权利要求4所述的数据处理方法,其中,使用第一目的操作数、第一源操作数、第二源操作数、第二目的操作数进行所述第一运算包括:
获得第一源操作数和第二源操作数的乘积与第一目的操作数之和,作为第一临时值。
6.根据权利要求5所述的数据处理方法,其中,使用第一目的操作数、第一源操作数、第二源操作数、第二目的操作数进行所述第一运算还包括:
循环执行以下步骤:
获得所述第一临时值的第i*128~i*128+127位与第二目的操作数之和,作为第二临时值;
将所述第二临时值的低64位存储在第一目的操作数的第i*64~i*64+63位中;
将所述第二临时值的高64位存储在第二目的操作数中;以及
将i增加1,
其中,i的初始值为0。
7.根据权利要求1-4任一所述的数据处理方法,其中,
第一目的操作数为可读可写操作数;
第一源操作数为只读操作数;
第二源操作数为只读操作数;以及
第二目的操作数为可读可写操作数。
8.根据权利要求1-4任一所述的数据处理方法,其中,所述译码结果包括微指令、微操作、伪代码输入点、译码指令或者控制信号。
9.一种处理器,包括:
取指单元,配置为获取对象指令,其中,所述对象指令包括第一目的操作数、第一源操作数、第二源操作数、第二目的操作数;
译码单元,配置为对所述对象指令进行译码以得到译码结果;
执行单元,包括多个执行子单元且配置为根据所述译码结果,接收所述第一目的操作数、所述第一源操作数、所述第二源操作数、所述第二目的操作数以进行第一运算。
10.根据权利要求9所述的处理器,其中,所述第一运算为(c1,rp)=ap*w+rp+c1,ap与w乘累加且将得到结果保存到rp中且进位保存到c1中,ap表示所述第一源操作数,w表示所述第二源操作数,rp表示所述第一目的操作数,c1表示所述第二目的操作数。
11.根据权利要求9所述的处理器,还包括第一向量寄存器、第二向量寄存器、第一标量寄存器和第二标量寄存器,
其中,所述多个执行子单元包括第一执行子单元,所述第一执行子单元配置为:
从所述第一向量寄存器或与所述处理器耦接的第一内存区域获取第一目的操作数;
从所述第一标量寄存器获取第一源操作数;
从所述第二向量寄存器获取第二源操作数;以及
从所述第二标量寄存器获取第二目的操作数。
12.根据权利要求11所述的处理器,其中,
所述第一向量寄存器为128位XMM向量寄存器或256位YMM向量寄存器,以及所述第一内存区域为128位或256位内存区域;
所述第二向量寄存器为128位XMM向量寄存器或256位YMM向量寄存器;
所述第一标量寄存器为64位标量寄存器;以及
所述第二标量寄存器为64位标量寄存器。
13.根据权利要求12所述的处理器,其中,所述多个执行子单元还包括第二执行子单元,所述第二执行子单元配置为:
获得第一源操作数和第二源操作数的乘积与第一目的操作数之和,作为第一临时值。
14.根据权利要求13所述的处理器,其中,所述多个执行子单元还包括第三执行子单元、第四执行子单元、第五执行子单元和第六执行子单元,配置为:
循环执行以下步骤:
通过第三执行子单元获得所述第一临时值的第i*128~i*128+127位与第二目的操作数之和,作为第二临时值;
通过第四执行子单元将所述第二临时值的低64位存储在第一目的操作数的第i*64~i*64+63位中;
通过第五执行子单元将所述第二临时值的高64位存储在第二目的操作数中;以及
通过第六执行子单元将i增加1,
其中,i的初始值为0。
15.根据权利要求9-12任一所述的处理器,其中,
所述第一向量寄存器为可读可写寄存器,以及所述第一内存区域为可读可写内存区域;
所述第二向量寄存器为只读寄存器;
所述第一标量寄存器为只读寄存器;以及
所述第二标量寄存器为可读可写寄存器。
16.根据权利要求9-12任一所述的处理器,其中,所述译码结果包括微指令、微操作、伪代码输入点、译码指令或者控制信号。
17.一种电子装置,包括根据权利要求9-16任一所述的处理器。
CN202311389080.XA 2023-10-24 2023-10-24 数据处理方法、处理器和电子装置 Pending CN117390705A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311389080.XA CN117390705A (zh) 2023-10-24 2023-10-24 数据处理方法、处理器和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311389080.XA CN117390705A (zh) 2023-10-24 2023-10-24 数据处理方法、处理器和电子装置

Publications (1)

Publication Number Publication Date
CN117390705A true CN117390705A (zh) 2024-01-12

Family

ID=89467882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311389080.XA Pending CN117390705A (zh) 2023-10-24 2023-10-24 数据处理方法、处理器和电子装置

Country Status (1)

Country Link
CN (1) CN117390705A (zh)

Similar Documents

Publication Publication Date Title
US11849035B2 (en) Instructions and logic to provide SIMD SM4 cryptographic block cipher
TWI597620B (zh) 提供通用gf(256)simd密碼算術功能的指令與邏輯
JP6220453B2 (ja) セキュア暗号ハッシュラウンド機能を提供する命令およびロジック
US9658854B2 (en) Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US20130332707A1 (en) Speed up big-number multiplication using single instruction multiple data (simd) architectures
KR101334860B1 (ko) 고속 회전 연산들을 수행하기 위한 시스템 및 방법
US8838997B2 (en) Instruction set for message scheduling of SHA256 algorithm
TWI488475B (zh) 用以處理sha-1安全雜湊演算法之方法及裝置
US8856546B2 (en) Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
US10374793B2 (en) Simon-based hashing for fuse validation
CN109479003B (zh) 用于安全椭圆曲线密码指令的处理器、系统、方法和设备
KR101753467B1 (ko) 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직
US8856547B2 (en) Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
JP2013543175A (ja) 汎用論理演算の方法および装置
US20160266902A1 (en) Instruction and logic to provide vector linear interpolation functionality
JP2017503232A (ja) Rsaアルゴリズム加速プロセッサ、方法、システム、及び命令
US9473296B2 (en) Instruction and logic for a simon block cipher
US20190102198A1 (en) Systems, apparatuses, and methods for multiplication and accumulation of vector packed signed values
CN117390705A (zh) 数据处理方法、处理器和电子装置
Bartolini et al. Instruction set extensions for cryptographic applications
KR102456395B1 (ko) Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직
US10795677B2 (en) Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
US20190102186A1 (en) Systems, apparatuses, and methods for multiplication and accumulation of vector packed unsigned values
CN116339826A (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