CN105302522B - 提供通用gf(256)simd密码算法功能性的指令和逻辑 - Google Patents
提供通用gf(256)simd密码算法功能性的指令和逻辑 Download PDFInfo
- Publication number
- CN105302522B CN105302522B CN201510272957.6A CN201510272957A CN105302522B CN 105302522 B CN105302522 B CN 105302522B CN 201510272957 A CN201510272957 A CN 201510272957A CN 105302522 B CN105302522 B CN 105302522B
- Authority
- CN
- China
- Prior art keywords
- instruction
- simd
- processor
- source data
- data operation
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开涉及提供通用GF(256)SIMD密码算法功能性的指令和逻辑。指令和逻辑提供通用GF(28)SIMD密码算法功能性。实施例包括处理器,用于对SIMD仿射变换的指令解码,该指令规定源数据操作数、变换矩阵操作数和平移向量。变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个。指令的结果存储在SIMD目的地寄存器中。一些实施例还对SIMD二进制有限域乘法逆的指令解码来对源数据操作数中的每个元素计算以不可约多项式为模的二进制有限域中的逆。一些实施例还对SIMD二进制有限域乘法的指令(其规定第一和第二源数据操作数)解码,来以不可约多项式为模使第一和第二源数据操作数的每个对应元素对相乘。
Description
技术领域
本公开关于处理逻辑、微处理器和关联指令集架构的领域,该指令集架构在由处理器或其他处理逻辑执行时执行逻辑、数学或其他功能操作。特别地,本公开涉及提供通用GF(256)SIMD密码算法功能性的指令和逻辑。
背景技术
密码术(cryptology)是依靠算法和密钥来保护信息的工具。该算法是复杂的数学算法并且密钥是位串。存在两个基本类型的密码术系统:私钥系统(secret key)和公钥系统。私钥系统也称为对称系统,其具有被两个或以上团体共享的单个密钥(“私钥”)。该单个密钥用于既加密信息又对信息解密。
例如,高级加密标准(AES)(也称为Rijndael)是由两个比利时译码者Joan Daemen和Vincent Rijmen开发并且作为加密标准被美国政府采用的分组密码(block cipher)。AES由美国国家标准和技术研究所(NIST)在2001年11月26日作为U.S.FIPS PUB 197(FIPS197)宣布。
AES具有128位的固定块大小和128、192或256位的密钥大小。使用Rijndael的密钥调度的密钥扩展将大小为128、192或256位的密钥变换成具有128个位的10、12或14个轮回密钥(round key)。轮回密钥用于轮回处理明文数据作为128位块(看作4x4字节阵列)并且将它们转换成密文块。典型地,对于对轮回的128位输入(16个字节),每个字节根据叫作S盒的查找表而被另一个字节取代。分组密码的该部分叫作SubBytes。接着,字节的行(看作4x4阵列)被循环移位并且左旋特定偏移(即,行0是0个字节、行一是1个字节、行二是2个字节并且行三是3个字节)。分组密码的该部分叫作ShiftRows。然后,字节列中的每个看作有限域中的多项式GE(256)(也叫作伽罗瓦域28)的四个系数,并且乘以可逆线性变换。分组密码的该部分叫作MixColumns。最后,128位块与轮回密钥异或(XOR)来产生具有16个字节的密文块,其叫作AddRoundKey。
在具有32位或更大字的系统上,通过将SubBytes、ShiftRows和MixColumns变换转换成四个256条目32位的表(其使用存储器的4096个字节)来实现AES密码,这是可能的。软件实现的一个缺点是性能。软件运行起来比专门硬件要慢若干数量级,因此具有增加的硬件/固件实现性能,这是可取的。
使用查找存储器、真值表、二元决策图或256个输入复用器的典型简单硬件实现从电路面积方面是昂贵的。使用与GF(256)同构的有限域的备选方法在面积上可以是高效的,但也可比简单硬件实现更慢。
现代的处理器通常包括指令,用于提供计算密集的操作,但提供高级数据并行,其可以通过使用各种数据存储设备(例如,单指令多数据(SIMD)向量寄存器)的高效实现而被利用。中央处理单元(CPU)然后可提供并行硬件来支持处理向量。向量是持有许多连续数据元素的数据结构。大小为M的向量寄存器(其中M是2k,例如256、128、64、32、…4或2)可包含大小为O的N个向量元素,其中N=M/O。例如,64字节向量寄存器可分成(a)64个向量元素,其中每个元素持有占据1个字节的数据项,(b)32个向量元素,用于持有数据项,每个占据2个字节(或一个“字”),(c)16个向量元素,用于持有数据项,每个占据4个字节(或一个“双字”),或(d)8个向量元素,用于持有数据项,每个占据8个字节(或一个“四字”)。SIMD向量寄存器中的并行性质可以很好地适应安全散列算法的处理。
也对其他相似加密算法感兴趣。例如,Rijndael规范本质上用各种块和密钥大小(其可以是32位的任意倍数,两者都具有128位的最小值和256位的最大值)来规定。另一个示例是SMS4:在中国无线LAN WAPI(有线认证和私密基础设施)国家标准中使用的分组密码。它还轮回处理明文数据(即,32)作为GF(256)中的128位块,但执行以不同多项式为模的归约。
迄今为止,提供高效空间-时间设计权衡的选项和对于这样的复杂性、性能限制问题和其他瓶颈的潜在技术方案还未被完全探究。
附图说明
本发明通过示例并且没有限制地在附图的图中图示。
图1A是执行指令来提供通用GF(256)SIMD密码算法功能性的系统的一个实施例的框图。
图1B是执行指令来提供通用GF(256)SIMD密码算法功能性的系统的另一个实施例的框图。
图1C是执行指令来提供通用GF(256)SIMD密码算法功能性的系统的另一个实施例的框图。
图2是执行指令来提供通用GF(256)SIMD密码算法功能性的处理器的另一个实施例的框图。
图3A图示根据一个实施例的封装数据类型。
图3B图示根据一个实施例的封装数据类型。
图3C图示根据一个实施例的封装数据类型。
图3D图示根据一个实施例提供通用GF(256)SIMD密码算法功能性的指令编码。
图3E图示根据另一个实施例提供通用GF(256)SIMD密码算法功能性的指令编码。
图3F图示根据另一个实施例提供通用GF(256)SIMD密码算法功能性的指令编码。
图3G图示根据另一个实施例提供通用GF(256)SIMD密码算法功能性的指令编码。
图3H图示根据另一个实施例提供通用GF(256)SIMD密码算法功能性的指令编码。
图4A图示执行指令来提供通用GF(256)SIMD密码算法功能性的处理器微架构的一个实施例的元素。
图4B图示执行指令来提供通用GF(256)SIMD密码算法功能性的的处理器微架构的另一个实施例的元素。
图5图示执行指令来提供通用GF(256)SIMD密码算法功能性的处理器的一个实施例的元素。
图6是执行指令来提供通用GF(256)SIMD密码算法功能性的计算机系统的一个实施例的框图。
图7是执行指令来提供通用GF(256)SIMD密码算法功能性的计算机系统的另一个实施例的框图。
图8是执行指令来提供通用GF(256)SIMD密码算法功能性的计算机系统的另一个实施例的框图。
图9是执行指令来提供通用GF(256)SIMD密码算法功能性的芯片上系统的一个实施例的框图。
图10是执行指令来提供通用GF(256)SIMD密码算法功能性的处理器的实施例的框图。
图11是提供通用GF(256)SIMD密码算法功能性的IP核开发系统的一个实施例的框图。
图12图示提供通用GF(256)SIMD密码算法功能性的架构仿真系统的一个实施例。
图13图示转换指令提供通用GF(256)SIMD密码算法功能性的系统的一个实施例。
图14图示用于高效实现高级加密标准(AES)加密/解密标准的过程的一个实施例的流程图。
图15图示用于高效实现AES S盒的乘法逆的过程的一个实施例的流程图。
图16A图示用于执行仿射映射指令(affine map instruction)来提供通用GF(256)SIMD密码算法功能性的装置的一个实施例的图。
图16B图示用于执行仿射逆指令来提供通用GF(256)SIMD密码算法功能性的装置的一个实施例的图。图16C图示用于执行逆仿射指令以用于计算乘法逆、后跟结果的仿射变换来提供通用GF(256)SIMD密码算法功能性的装置的实施例的图。
图17A图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的装置的一个实施例的图。
图17B图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的装置的备选实施例的图。
图17C图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的装置的另一个备选实施例的图。
图18A图示用于执行特定模归约指令(modulus reduction instruction)来提供通用GF(256)SIMD密码算法功能性的装置的一个实施例的图。
图18B图示用于执行特定模归约指令来提供通用GF(256)SIMD密码算法功能性的装置的备选实施例的图。
图18C图示用于执行特定AES伽罗瓦计数器模式(GCM)模归约指令来提供GF(2128)SIMD密码算法功能性的装置的另一个备选实施例的图。
图18D图示用于执行特定模归约指令来提供通用GF(2t)SIMD密码算法功能性的装置的一个实施例的图。
图19A图示用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性的装置的一个实施例的图。
图19B图示用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性的装置的备选实施例的图。
图20A图示用于执行仿射映射指令来提供通用GF(256)SIMD密码算法功能性的过程的一个实施例的流程图。
图20B图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的过程的一个实施例的流程图。
图20C图示用于执行仿射逆指令来提供通用GF(256)SIMD密码算法功能性的过程的一个实施例的流程图。
图20D图示用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性的过程的一个实施例的流程图。
具体实施方式
下列描述公开用于提供通用GF(2n)SIMD密码算法功能性的指令和处理逻辑,特别地其中n可等于2m(例如,GF(28)、GF(216)、GF(232)、…GF(2128),等)。实施例包括处理器,用于解码指令用于SIMD仿射变换,其规定源数据操作数、变换矩阵操作数和平移向量(translation vector)。变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个。指令的结果存储在SIMD目的地寄存器中。一些实施例还解码指令,用于SIMD二进制有限域乘法逆,用于对于源数据操作数的每个元素计算以不可约多项式为模的二进制有限域中的逆。一些实施例还解码指令,用于SIMD仿射变换和乘法逆(或乘法逆和仿射变换),其中在乘法逆运算之前或之后,变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个。一些实施例还解码指令,用于SIMD模归约,用于计算以特定模多项式ps为模的归约,该特定模多项式ps选自二进制有限域中的多项式(对其的模归约由该指令(或微指令)提供)。一些实施例还解码指令,用于SIMD二进制有限域乘法,其规定第一和第二源数据操作数,用于以不可约多项式为模将第一和第二源数据操作数的每个对应元素对相乘。
将意识到通用GF(2n)SIMD密码算法指令如与本文描述的实施例中的一样可用于在例如密码协议和互联网通信等应用中提供密码算法功能性来对于金融交易、电子商务、电子邮件、软件分发、数据存储等确保隐私、数据完整性、身份证实、消息内容验证和报文源验证。
还将意识到至少对于以下各项提供指令的执行:(1)规定源数据操作数、变换矩阵操作数和平移向量的SIMD仿射变换,其中变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个;(2)SIMD二进制有限域乘法逆,用于对于源数据操作数中的每个元素计算以不可约多项式为模的二进制有限域中的逆;(3)规定源数据操作数、变换矩阵操作数和平移向量的SIMD仿射变换和乘法逆(或乘法逆和仿射变换),其中在乘法逆运算之前或之后,变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个;(4)模归约,用于计算以特定模多项式ps为模的归约,该特定模多项式ps选自二进制有限域中的多项式(对于其的模归约由该指令(或微指令)提供);(5)规定第一和第二源数据操作数的SIMD二进制有限域乘法,用于以不可约多项式为模使第一和第二源数据操作数的每个对应元素对相乘;其中指令的结果存储在SIMD目的地寄存器中;可在硬件和/或微代码序列中提供通用GF(256)和/或其他备选二进制有限域SIMD密码算法功能性以便支持对于若干重要性能关键应用的显著性能提高,而无需要求额外电路、面积或功率的过多或过度功能单元。
在下列描述中,阐述许多特定细节,例如处理逻辑、处理器类型、微架构条件、事件、使能机构及类似物,以便提供对本发明的实施例的更全面理解。然而,本领域内技术人员将意识到本发明可在没有这样的特定细节的情况下实践。另外,未详细示出一些众所周知的结构、电路及类似物以避免不必要地混淆本发明的实施例。
尽管下列实施例参考处理器描述,其他实施例能适用于其他类型的集成电路和逻辑设备。本发明的实施例的相似技术和教导可以适用于其他类型的电路或半导体器件,其可以从较高流水线吞吐量和提高的性能中获益。本发明的实施例的教导能适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、16位或8位数据操作的处理器或机器并且可以应用于其中执行数据操纵或管理的任何处理器和机器。另外,下列描述提供示例,并且附图为了说明目的示出各种示例。然而,因为这些示例仅规定成提供本发明的实施例的示例而不提供本发明的实施例的所有可能实现的详尽列表,不应在限制性意义上解释它们。
尽管下面的示例在执行单元和逻辑电路的上下文中描述指令处理和分发,本发明的其他实施例可以通过存储在机器可读、有形介质上的数据和/或指令来完成,这些数据和/或指令在由机器执行时促使该机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明的实施例关联的功能在机器可执行指令中体现。指令可以用于促使用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可作为计算机程序产品或软件提供,其可包括具有存储在其上的指令的机器或计算机可读介质,这些指令可用于对计算机(或其他电子设备)编程来执行根据本发明的实施例的一个或多个操作。备选地,本发明的实施例的步骤可由特定硬件部件(其包含用于执行步骤的固定功能逻辑)或由编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑编程来执行本发明的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪存或其他存储。此外,这些指令可以经由网络或通过其他计算机可读介质而分发。从而机器可读介质可包括用于采用可由机器(例如,计算机)读取的形式存储或传送信息的任何机构,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存或有形的机器可读存储,其在经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传送信息中使用。因此,计算机可读介质包括任何类型的有形机器可读介质,其适合于采用可由机器(例如,计算机)读取的形式存储或传送电子指令或信息。
设计可历经各种阶段,从创建到模拟到制造。代表设计的数据可采用许多方式代表数据。首先,如在模拟中有用的,硬件可使用硬件描述语言或另一个功能描述语言来表示。另外,具有逻辑和/或晶体管门的电路级模型可在设计过程的某些阶段产生。此外,大部分设计在某一阶段达到代表硬件模型中各种设备的物理布局的数据级别。在使用常规半导体制造技术的情况下,代表硬件模型的数据可以是规定对于用于产生集成电路的掩模的不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,数据可采用机器可读介质的任何形式存储。存储器或磁或光存储(例如盘)可以是用于存储经由光或电波传送的信息的机器可读介质,调制或用别的方式产生该光或电波来传送这样的信息。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重传来说,做出新的复制。从而,通信提供商或网络提供商可将例如编码到载波内的信息等体现本发明的实施例的技术的物品至少暂时存储在有形的机器可读介质上。
在现代处理器中,许多不同的执行单元用于处理并且执行多种代码和指令。不是所有的指令创建时都相同,因为一些完成起来更快而其他可以花费许多时钟周期来完成。指令的吞吐量越快,处理器的总性能越好。从而,使尽可能多的指令尽可能快地执行,这将是有利的。然而,存在某些指令,其具有较大复杂性并且从执行时间和处理器资源方面需要更多。例如,存在浮点指令、加载/存储操作、数据移动等。
因为更多的计算机系统在互联网、文本和多媒体应用中使用,随时间引入额外处理器支持。在一个实施例中,指令集可与一个或多个计算机架构关联,其包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,其包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可以共享共同指令集的至少一部分。例如,Pentium 4处理器、CoreTM处理器和来自加利福尼亚州Sunnyvale的Advanced Micro Devices,Inc.的处理器实现x86指令集的几乎相同版本(具有增加有较新版本的一些扩展),但具有不同的内部设计。相似地,由其他处理器开发公司(例如ARM Holdings,Ltd.、MIPS,或它们的被许可方或采纳者)设计的处理器可共享共同指令集的至少一部分,但可包括不同的处理器设计。例如,ISA的相同寄存器架构可采用不同方式在不同微架构中使用新的或众所周知的技术实现,其包括专用物理寄存器、一个或多个动态分配物理寄存器,其使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器文件)。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器架构、寄存器文件或可能被或不能被软件程序员寻址的其他寄存器组。
在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示各种字段(位数量、位位点,等),以除其他外还规定要执行的操作和要执行操作所针对的操作数。一些指令格式可被指令模板(或子格式)进一步分开定义。例如,指定指令格式的指令模板可定义成具有指令格式字段的不同子集和/或定义成具有不同解释的指定字段。在一个实施例中,指令使用指令格式(并且,如果被定义的话,在该指令格式的指令模板中的指定模板中)来表达并且规定或指示操作以及操作将作用于其上的操作数。
科学、金融、自动向量化通用RMS(识别、采掘和合成)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压、视频识别算法和音频操纵)可需要对大量数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)指的是促使处理器对多个数据元素执行操作的指令类型。SIMD技术可在可以将寄存器中的位逻辑划分成许多大小固定或大小可变的数据元素(其中的每个代表独立值)的处理器中使用。例如,在一个实施例中,64位寄存器中的位可组织为源操作数,其包含四个独立16位数据元素,其中的每个代表独立16位值。该类型的数据可称为‘封装’数据类型或‘向量’数据类型,并且具有该数据类型的操作数称为封装数据操作数或向量操作数。在一个实施例中,封装数据项或向量可以是存储在单个寄存器内的封装数据元素序列,并且封装数据操作数或向量操作数可以是SIMD指令(或‘封装数据指令’或‘向量指令’)的源或目的地操作数。在一个实施例中,SIMD指令规定要对两个源向量操作数执行来生成具有相同或不同大小、相同或不同数量的数据元素并且处于相同或不同数据元素顺序的目的地向量操作数(也称为结果向量操作数)的单向量运算。
例如由具有指令集(其包括x86、MMXTM、流播SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令)的CoreTM处理器、ARM处理器(例如ARM系列处理器(具有包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(例如由中国科学院计算技术研究所(ICT)开发的Loongson系列处理器)采用的SIMD技术实现应用性能的显著提高(CoreTM和CoreTM是加利福尼亚州Santa Clara的Intel Corporation的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据是表示对应数据或操作的源和目的地的通称。在一些实施例中,它们可由寄存器、存储器或具有除描述的那些以外的名称或功能的其他存储区实现。例如,在一个实施例中,“DEST1”可以是暂时存储寄存器或其他存储区,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区,等等。在其他实施例中,SRC和DEST存储区中的两个或以上可对应于相同存储区(例如,SIMD寄存器)内的不同数据存储元素。在一个实施例中,源寄存器中的一个还可通过例如将对第一和第二源数据执行的操作的结果写回充当目的地寄存器的两个源寄存器中的一个而充当目的地寄存器。
图1A是用包括执行单元来执行根据本发明的一个实施例的指令的处理器形成的示范性计算机系统的框图。系统100包括例如处理器102的部件,用于采用执行单元(其包括逻辑)以根据本发明(例如在本文描述的实施例中)对于过程数据执行算法。系统100代表基于III、4、XeonTM、XScaleTM和/或StrongARMTM微处理器(从加利福尼亚州Santa Clara的Intel Corporation可获得)的处理系统,但还可使用其他系统(其包括具有其他微处理器、工程化工作站、机顶盒及类似物的PC)。在一个实施例中,样本系统100可执行从华盛顿州Redmond的Microsoft Corporation可获得的WINDOWSTM操作系统的版本,但还可使用其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面。从而,本发明的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本发明的备选实施例可以在例如手持设备和嵌入式应用等其他设备中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字拍摄装置、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其他系统。
图1A是用包括一个或多个执行单元108来执行算法以执行根据本发明的一个实施例的至少一个指令的处理器102形成的计算机系统100的框图。一个实施例可在单处理器台式机或服务器系统的上下文中描述,但备选实施例可以包括在多处理器系统中。系统100是‘中枢’系统架构的示例。计算机系统100包括处理器102,用于处理数据信号。该处理器102可以是例如复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。处理器102耦合于处理器总线110,其可以在处理器102与系统100中的其他部件之间传送数据信号。系统100的元件执行熟悉本领域的人员众所周知的它们的常规功能。
在一个实施例中,处理器102包括一级(L1)内部高速缓存存储器104。根据架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。备选地,在另一个实施例中,高速缓存存储器可以驻存在处理器102外部。其他实施例还可以包括内部和外部高速缓存的组合,这取决于特定实现和需要。寄存器文件106可以将不同类型的数据存储在各种寄存器中,其包括整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
执行单元108(其包括用于执行整数和浮点操作的逻辑)也驻存在处理器102中。处理器102还包括微代码(u码)ROM,其存储对于某些微指令的微代码。对于一个实施例,执行单元108包括用于处理封装指令集109的逻辑。通过在通用处理器102的指令集中包括封装指令集109,连同关联电路来执行指令,由许多多媒体应用使用的操作可使用通用处理器102中的封装数据执行。从而,许多多媒体应用可以被加速并且通过使用全宽处理器数据总线而更高效执行以用于对封装数据执行操作。这可以消除跨处理器数据总线来传输较小数据单位以每次对一个数据元素执行一个或多个操作的需要。
执行单元108的备选实施例也可以在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中使用。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可以存储由可以被处理器102执行的数据信号所代表的指令和/或数据。
系统逻辑芯片116耦合于处理器总线110和存储器120。系统逻辑芯片116在图示的实施例中是存储器控制器中枢(MCH)。处理器102可以经由处理器总线110传达到MCH116。MCH 116为了指令和数据的存储并且为了图形命令、数据和纹理的存储而提供到处理器120的高带宽存储器路径118。MCH 116在处理器102、存储器120与系统100中的其他部件之间引导数据信号并且还在处理器总线110、存储器120与系统I/O 122之间为数据信号搭桥。在一些实施例中,系统逻辑芯片116可以提供图形端口用于耦合于图形控制器112。MCH 116通过存储器接口118耦合于存储器120。图形卡112通过加速图形端口(AGP)互连114耦合于MCH116。
系统100使用专用中枢接口总线122以使MCH 116耦合于I/O控制器中枢(ICH)130。ICH 130经由本地I/O总线提供到一些I/O设备的直接连接。本地I/O总线是高速I/O总线,用于使外设连接到存储器120、芯片集和处理器102。一些示例是音频控制器、固件中枢(闪速BIOS)128、无线收发器126、数据存储124、遗留I/O控制器(其包含用户输入和键盘接口)、串行扩展端口(例如通用串行总线(USB))和网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例,指令可以与芯片上系统一起使用。芯片上系统的一个实施例由处理器和存储器组成。对于一个这样的系统的存储器是闪存。该闪存可以定位在与处理器和其他系统部件相同的晶片(die)上。另外,例如存储器控制器或图形控制器等其他逻辑块也可以定位在芯片上系统上。
图1B图示数据数据处理系统140,其实现本发明的一个实施例的原理。本领域内技术人员将容易意识到本文描述的实施例可以与备选处理系统一起使用而不偏离本发明的实施例的范围。
计算机系统140包括能够执行根据一个实施例的至少一个指令的处理核159。对于一个实施例,处理核159代表任何类型的架构的处理单元,其包括但不限于CISC、RISC或VLIW型架构。处理核159还可适合于在一个或多个工艺技术中制造,并且通过足够详细地在机器可读介质上表示而可适合于使所述制造便利化。
处理核159包括执行单元142、寄存器文件的集145和解码器144。处理核159还包括额外电路(未示出),其对于理解本发明的实施例不是必需的。执行单元142用于执行由处理核159接收的指令。除执行典型处理器指令外,执行单元142可以执行封装指令集143中的指令用于对封装数据格式执行操作。封装指令集143包括用于执行本发明的实施例的指令和其他封装指令。执行单元142通过内部总线耦合于寄存器文件145。寄存器文件145代表处理核159上的存储区用于存储信息,其包括数据。如之前提到的,理解到,用于存储封装数据的存储区不是关键的。执行单元142耦合于解码器144。解码器144用于将由处理核159接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行合适的操作。在一个实施例中,解码器用于解释指令的操作码,其将指示应对在指令内指示的对应数据执行什么操作。
处理核159与总线141耦合用于与各种其他系统设备通信,这些系统设备可包括但不限于例如同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/快闪(CF)卡控制149、液晶显示器(LCD)控制150、直接存储器访问(DMA)控制器151和备选总线主接口152。在一个实施例中,数据处理系统140还可包括I/O桥154,用于经由I/O总线153与各种I/O设备通信。这样的I/O设备可包括但不限于例如通用异步接收器/传送器(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供移动、网络和/或无线通信和能够执行SIMD操作(其包括文本串比较操作)的处理核159。处理核159可用以下来编程:各种音频、视频、成像和通信算法,其包括离散变换,例如沃尔什-哈达玛变换(Walsh-Hadamard transform)、快速傅里叶变换(FFT)、离散余弦变换(DCT)和它们相应的逆变换;压缩/解压技术,例如彩色空间变换、视频编码运动估计或视频解码运动补偿;和调制/解调(MODEM)功能,例如脉冲编码调制(PCM)。
图1C图示能够执行指令来提供通用GF(256)SIMD密码算法功能性的数据处理系统的另一个备选实施例。根据一个备选实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存存储器167和输入/输出系统168。该输入/输出系统168可可选地耦合于无线接口169。SIMD协处理器161能够执行这样的操作,其包括根据一个实施例的指令。处理核170可适合于在一个或多个工艺技术中制造,并且通过足够详细地在机器可读介质上表示而可适合于使数据处理系统160(其包括处理核170)中的全部或部分的制造便利化。
对于一个实施例,SIMD协处理器161包括执行单元162和寄存器文件的集164。主处理器166的一个实施例包括解码器165,用于识别指令集163的指令(其包括根据一个实施例的指令)用于由执行单元162执行。对于备选实施例,SIMD协处理器161还包括解码器165B的至少部分,用于对指令集163的指令解码。处理核170还包括额外电路(未示出),其对于理解本发明的实施例不是必需的。
在操作中,主处理器166执行数据处理指令流,其控制通用型数据处理操作,这些操作包括与高速缓存存储器167和输入/输出系统168的交互。SIMD协处理器指令嵌入数据处理指令流内。主处理器166的解码器165将这些SIMD协处理器指令识别为是应由附连SIMD协处理器161执行的类型。因此,主处理器166在协处理器总线171上发出这些SIMD协处理器指令(或代表SIMD协处理器指令的控制信号),从该协处理器总线171,这些指令由任何附连SIMD协处理器接收。在该情况下,SIMD协处理器161将接受并且执行送往它的任何接收的SIMD协处理器指令。
数据可经由无线接口169接收用于由SIMD协处理器指令处理。对于一个示例,语音通信可采用数字信号的形式接收,该数字信号可由SIMD协处理器指令处理来重新生成代表语音通信的数字音频样本。对于另一个示例,压缩音频和/或视频可采用数字位流的形式接收,该数字位流可由SIMD协处理器指令处理来重新生成数字音频样本和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161集成到单个处理核170内,其包括执行单元162、寄存器文件的集164和解码器165,用于识别指令集163的指令,其包括根据一个实施例的指令。
图2是包括逻辑电路用于执行根据本发明的一个实施例的指令的处理器200的微架构的框图。在一些实施例中,可以实现根据一个实施例的指令来对具有字节、字、双字、四字等大小以及数据类型(例如单和双精度整数和浮点数据类型)的数据元素操作。在一个实施例中,有序前端201是提取要执行的指令并且使它们准备稍后在处理器流水线中使用的处理器200的一部分。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器提取指令并且将它们馈送到指令解码器228,其进而对它们解码或解释它们。例如,在一个实施例中,解码器将接收的指令解码为机器可以执行的一个或多个操作,叫作“微指令”或“微操作”(也叫作微op或uop)。在其他实施例中,解码器将指令解析成操作码和对应数据和控制字段,其由微架构使用来执行根据一个实施例的操作。在一个实施例中,跟踪高速缓存230取解码的uop并且将它们组装到uop队列234中的程序排序序列或痕迹以供执行。当跟踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需要的uop。
一些指令转换成单微op,而其他需要若干微op来完成全操作。在一个实施例中,如果需要超过四个微op来完成指令,解码器228访问微代码ROM 232来完成指令。对于一个实施例,指令可以解码成少量微op用于在指令解码器228处处理。在另一个实施例中,如果需要许多微op来完成操作,指令可以存储在微代码ROM 232内。跟踪高速缓存230指的是入口点可编程逻辑阵列(PLA),用于确定用于从微代码ROM 232读取微代码序列来完成根据一个实施例的一个或多个指令的正确微指令指针。在微代码ROM 232完成对于指令的序列微op之后,机器的前端201恢复从跟踪高速缓存230提取微op。
无序执行引擎203是指令被准备用于执行的地方。无序执行逻辑具有许多缓冲器以在指令沿流水线向下并且被调度以供执行时平滑它们并且对其重新排序来优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑对逻辑寄存器重命名到寄存器文件中的条目上。在以下指令调度器的前面,分配器还对两个uop队列中的一个中的每个uop分配条目,一个针对存储器操作并且一个针对非存储器操作:存储器调度器、快速调度器202、慢/一般浮点调度器204和简单浮点调度器206。uop调度器202、204、206基于它们的相关输入寄存器操作数源的准备就绪和uop完成它们的操作所需要的执行资源的可用性来确定何时uop准备执行。一个实施例的快速调度器202可以在每半个主时钟周期上调度而其他调度器每主处理器时钟周期仅可以调度一次。调度器仲裁调派端口来调度uop以供执行。
寄存器文件208、210位于调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。相应地存在用于整数和浮点操作的独立寄存器文件208、210。一个实施例的每个寄存器文件208、210还包括旁路网络,其可以绕过或将刚刚完成的还未写入寄存器文件的结果转发到新的相关uop。整数寄存器文件208和浮点寄存器文件210也能够与另一个传达数据。对于一个实施例,整数寄存器文件208分成两个独立寄存器文件,一个寄存器文件针对低阶32位数据并且第二寄存器文件针对高阶32位数据。因为浮点指令典型地具有在宽度上从64至128位的操作数,一个实施例的浮点寄存器文件210具有128位宽的条目。
执行块211包含执行单元212、214、216、218、220、222、224,实际上在这里执行指令。该段包括寄存器文件208、210,其存储微指令执行所需要的整数和浮点数据操作数值。一个实施例的处理器200由许多执行单元组成:地址生成单元(AGU)212、AGU214、快速ALU216、快速ALU 218、慢ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD和SSE或其他操作。一个实施例的浮点ALU 222包括64位x 64位浮点除法器(divider),用于执行除法、平方根和余数微op。对于本发明的实施例,牵涉浮点值的指令可用浮点硬件来处理。在一个实施例中,ALU操作转到高速ALU执行单元216、218。一个实施例的快速ALU 216、218可以以半个时钟周期的高效延迟来执行快速操作。对于一个实施例大部分复杂整数操作转到慢ALU 220,因为慢ALU 220包括对于长延迟类型操作(例如乘数、移位、标志逻辑和分支处理)的整数执行硬件。存储器加载/存储操作由AGU212、214执行。对于一个实施例,整数ALU 216、218、220在对64位数据操作数执行整数操作的上下文中描述。在备选实施例中,可以实现ALU 216、218、220来支持多种数据位,其包括16、32、128、256等。相似地,可以实现浮点单元222、224来支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元222、224可以结合SIMD和多媒体指令对128位宽的封装数据操作数操作。
在一个实施例中,uop调度器202、204、206在父加载完成执行之前调派相关操作。因为在处理器200中推测地调度和执行uop,处理器200还包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,在流水线中可以存在运行中的相关操作,使得对调度器留下暂时不正确的数据。回放机构跟踪并且重新执行使用不正确数据的指令。仅相关操作需要被回放并且允许完成不相关的操作。处理器的一个实施例的调度器和回放机构还设计成捕捉提供通用GF(256)SIMD密码算法功能性的指令。
术语“寄存器”可指的是板载处理器存储位点,其用作用于识别操作数的指令的部分。就是说,寄存器可以是来自处理器外部的能使用的那些(从程序员的角度来看)。然而,实施例的寄存器在意思上不应局限于特定类型的电路。相反,实施例的寄存器能够存储并且提供数据,并且执行本文描述的功能。本文描述的寄存器可以由处理器内的电路使用许多不同技术实现,例如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含对于封装数据的八个多媒体SIMD寄存器。对于下文的论述,寄存器理解为设计成持有封装数据的数据寄存器,例如用来自加利福尼亚州Santa Clara的Intel Corporation的MMX技术启用的微处理器中的64位宽MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。这些MMX寄存器(采用整数和浮点形式都可用)可以用伴随SIMD和SSE指令的封装数据元素来操作。相似地,涉及SSE2、SSE3、SSE4或以后(一般称为“SSEx”)技术的128位宽XMM寄存器也可以用于持有这样的封装数据操作数。在一个实施例中,在存储封装数据和整数数据中,寄存器不必区分这两个数据类型。在一个实施例中,整数和浮点包含在相同寄存器文件或不同寄存器文件中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
在下列图的示例中,描述许多数据操作数。图3A图示根据本发明的一个实施例在多媒体寄存器中的各种封装数据类型表示。图3A图示对于128位宽操作数的封装字节310、封装字320和封装双字(dword)330的数据类型。该示例的封装字节格式310是128位长并且包含十六个封装字节数据元素。字节在这里定义为8位数据。对于每个字节数据元素的信息存储在位7至位0(对于字节0)、位15至位8(对于字节1)、位23至位16(对于字节2)和最后位120至位127(对于字节15)中。从而,所有可用位在寄存器中使用。该存储设置使处理器的存储效率增加。随着访问十六个数据元素,现在也可以并行对十六个数据元素执行一个操作。
一般,数据元素是存储在单个寄存器或存储器位点(具有相同长度的其他数据元素)中的个体数据片段。在涉及SSEx技术的封装数据序列中,存储在XMM寄存器中的数据元素的数量是128位除以个体数据元素的以位计算的长度。相似地,在涉及MMX和SSE技术的封装数据序列中,存储在MMX寄存器中的数据元素的数量是64位除以个体数据元素的以位计算的长度。尽管在图3A中图示的数据类型是128位长,本发明的实施例还可以用64位宽、256位宽、512位宽或其他大小的操作数来操作。该示例的封装字格式320是128位长并且包含八个封装字数据元素。每个封装字包含十六位的信息。图3A的封装双字格式330是128位长并且包含四个封装双字数据元素。每个封装双字数据元素包含三十二位的信息。封装四字是128位长并且包含两个封装四字数据元素。
图3B图示备选寄存器中数据存储格式。每个封装数据可以包括超过一个独立数据元素。图示三个封装数据格式:封装半部341、封装单个342和封装双343。封装半部341、封装单个342和封装双343的一个实施例包含固定点数据元素。对于备选实施例,封装半部341、封装单个342和封装双343中的一个或多个可包含浮点数据元素。封装半部341的一个备选实施例是一百二十八位长,其包含八个16位数据元素。封装单个342的一个实施例是一百二十八位长并且包含四个32位数据元素。封装双343的一个实施例是一百二十八位长并且包含两个64位数据元素。将意识到这样的封装数据格式可进一步扩展到其他寄存器长度,例如到96位、160位、192位、224位、256位、512位或更多。
图3C图示根据本发明的一个实施例在多媒体寄存器中的各种有符号和无符号封装数据类型表示。无符号封装字节表示344图示SIMD寄存器中无符号封装字节的存储。对于每个字节数据元素的信息存储在位七至位零(对于字节零)、位十五至位八(对于字节一)、位二十三至位十六(对于字节二)等,并且最后位一百二十至位一百二十七(对于字节十五)。从而,所有可用位在寄存器中使用。该存储设置可以使处理器的存储效率增加。随着访问十六个数据元素,现在也可以采用并行方式对十六个数据元素执行一个操作。有符号封装字节表示345图示有符号封装字节的存储。注意每个字节数据元素的第八位是符号指示符。无符号封装字表示346图示字七至字零如何存储在SIMD寄存器中。有符号封装字表示347与寄存器中无符号封装字表示346相似。注意每个字数据元素的第十六位是符号指示符。无符号封装双字表示348示出如何存储双字数据元素。有符号封装双字表示349与寄存器中无符号封装双字表示348相似。注意必需的符号位是每个双字数据元素的第三十二个位。
图3D是操作编码(操作码)格式360的一个实施例的描绘,该格式360具有三十二个或以上的位,和寄存器/存储器操作数寻址模式,其与在“64and IA-32IntelArchitecture Software Developer’s Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z”中描述的操作码格式类型相对应,在万维网(www)intel.com/products/processor/manuals/上从加利福尼亚州Santa Clara的IntelCorporation可获得。在一个实施例中,指令可由字段361和362中的一个或多个编码。可识别每指令多至两个操作数位点,其包括多至两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们是不同的。对于备选实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们是不同的。在一个实施例中,由源操作数标识符364和365识别的源操作数中的一个被指令的结果覆盖,而在其他实施例中标识符364对应于源寄存器元素并且标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可用于识别32位或64位源和目的地操作数。
图3E是另一个备选操作编码(操作码)格式370的描绘,该格式370具有四十个或以上的位。操作码格式370与操作码格式360相对应并且包括可选的前缀字节378。根据一个实施例的指令可由字段378、371和372中的一个或多个编码。由源操作数标识符374和375并且由前缀字节378可识别每指令多至两个操作数位点。对于一个实施例,前缀字节378可用于识别32位或64位源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其他实施例中它们是不同的。对于备选实施例,目的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们是不同的。在一个实施例中,指令对由操作数标识符374和375识别的操作数中的一个或多个操作并且由操作数标识符374和375识别的一个或多个操作数被指令的结果覆盖,而在其他实施例中,由标识符374和375识别的操作数写入另一个寄存器中的另一个数据元素。操作码格式360和370允许部分由MOD字段363和373并且由可选的规格索引基础(scale-index-base)和位移字节规定的寄存器到寄存器、存储器到寄存器、按照存储器的寄存器、按照寄存器的寄存器、接近的寄存器、寄存器到存储器的寻址。
接着转向图3F,在一些备选实施例中,64位(或128位或256位,或512位或更多)单指令多数据(SIMD)算法操作可通过协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380描绘一个这样的CDP指令,其具有CDP操作码字段382和389。对于备选实施例,该类CDP指令操作可由字段383、384、387和388中的一个或多个编码。可识别每指令多至三个操作数位点,其包括多至两个源操作数标识符385和390和一个目的地操作数标识符386。协处理器的一个实施例可以对8、16、32和64位值操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,指令可使用条件字段381有条件地执行。对于一些实施例,源数据大小可由字段383编码。在一些实施例中,零(Z)、负(N)、进位(C)和溢出(V)检测可以在SIMD字段上进行。对于一些指令,饱和类型可由字段384编码。
接着转向图3G,其是根据另一个实施例用于提供通用GF(256)SIMD密钥算法功能性的另一个备选操作编码(操作码)格式397的描绘,该格式397与在“AdvancedVector Extensions Programming Reference(高级向量扩展编程参考)”中描述的操作码格式类型相对应,在万维网(www)intel.com/products/processor/manuals/上从加利福尼亚州Santa Clara的Intel Corp.可获得。
原始x86指令集提供具有各种格式的地址音节(address syllable)和包含在额外字节(其的存在从第一“操作码”字节获知)中的立即操作数的1字节操作码。另外,存在某些字节值,其作为对操作码的修改符而预留(叫作前缀,因为它们必须放置在指令之前)。在256个操作码字节(其包括这些特殊前缀值)的原始调色板被耗尽时,单字节专门作为到新的256个操作码的集的转义(escape)。在添加向量指令(例如,SIMD)时,产生对更多操作码的需要,并且“两字节”操作码映射也是不足的,即使在通过使用前缀而扩展时也如此。为此,在使用2个字节加上可选前缀作为标识符的额外映射中添加新的指令。
另外,为了促进采用64位模式的额外寄存器,可在前缀和操作码(和确定操作码所必需的任何转义字节)之间使用额外前缀(叫作“REX”)。在一个实施例中,REX可具有4个“有效载荷”位来指示采用64位模式的额外寄存器的使用。在其他实施例中,它可具有少于或超过4个位。至少一个指令集的通用格式(其一般与格式360和/或格式370相对应)一般通过以下图示:
[prefixes][rex]escape[escape2]opcode modrm(等)
操作码格式397与操作码格式370相对应并且包括可选的VEX前缀字节391(在一个实施例中以C4hex开始)来替换大部分其他常用遗留指令前缀字节和转义代码。例如,下面图示使用两个字段来对指令编码的实施例,其可在在原始指令中存在第二转义代码时或在需要使用REX字段中的附加位(例如,XB和W字段)时使用。在下文图示的实施例中,遗留转义由新的转义值表示,遗留前缀完全压缩为“有效载荷”字节的部分,遗留前缀被收回并且可用于未来扩展,第二转义代码在“映射”字段中压缩,其中未来映射或特征空间可用,并且添加新的特征(例如,增加的向量长度和额外的源寄存器说明符)。
根据一个实施例的指令可由字段391和392中的一个或多个编码。可由字段391结合源操作数标识符374和375并且结合可选的规格-索引-基础(SIB)标识符393、可选的位移标识符394和可选的立即字节395识别每指令多至四个操作数位点。对于一个实施例,VEX前缀字节391可用于识别32位或64位源和目的地操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397提供的功能性具有操作码格式370可是冗余的,而在其他实施例中它们是不同的。操作码格式370和397允许部分由MOD字段373并且由可选的(SIB)标识符393、可选的位移标识符394和可选的立即字节395规定的寄存器到寄存器、存储器到寄存器、按照存储器的寄存器、按照寄存器的寄存器、立即寄存器、寄存器到存储器寻址。
接着转向图3H,其是根据另一个实施例用于提供通用GF(256)SIMD密码算法功能性的另一个备选操作编码(操作码)格式398的描绘。操作码格式398与操作码格式370和397相对应并且包括可选的EVEX前缀字节396(在一个实施例中以62hex开始)来替换大部分其他常用遗留指令前缀字节和转义代码并且提供额外功能性。根据一个实施例的指令可由字段396和392中的一个或多个编码。可由字段396结合源操作数标识符374和375并且结合可选的规格-索引-基础(SIB)标识符393、可选的位移标识符394和可选的立即字节395识别每指令多至四个操作数位点和掩码。对于一个实施例,EVEX前缀字节396可用于识别32位或64位源和目的地操作数和/或128位或256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398提供的功能性具有操作码格式370或397可是冗余的,而在其他实施例中它们是不同的。操作码格式398允许部分由MOD字段373并且由可选的(SIB)标识符393、可选的位移标识符394和可选的立即字节395规定的寄存器到寄存器、存储器到寄存器、按照存储器的寄存器、按照寄存器的寄存器、立即寄存器、寄存器到存储器寻址(具有掩码)。至少一个指令集的通用格式(其一般与格式360和/或格式370相对应)一般通过以下图示:
evex1RXBmmmmm WvvvLpp evex4opcode modrm[sib][disp][imm]
对于一个实施例,根据EVEX格式398编码的指令可具有额外的“有效载荷”位,其可用于提供具有额外新特征(例如用户可配置掩码寄存器或额外操作数或在128位、256位或512位向量寄存器或要从中选择的更多寄存器等之中的选择)的通用GF(256)SIMD密码算法功能性。
例如,在VEX格式397可用于提供具有隐式掩码的通用GF(256)SIMD密码算法功能性的情况下,EVEX格式398可用于提供具有显式用户可配置掩码的通用GF(256)SIMD密码算法功能性。另外,在VEX格式397可用于在128位或256位向量寄存器上提供通用GF(256)SIMD密码算法功能性的情况下,EVEX格式398可用于在128位、256位、512位或更大(或更小)向量寄存器上提供通用GF(256)SIMD密码算法功能性。
用于提供通用GF(256)SIMD密码算法功能性的示例指令通过下列示例图示:
将意识到通用GF(2n)SIMD密码算法指令与在本文描述的实施例中一样可用于在例如密码协议和互联网通信等应用中提供密码算法功能性来对于金融交易、电子商务、电子邮件、软件分发、数据存储等确保隐私、数据完整性、身份证实、消息内容验证和报文源验证。
还将意识到至少对于以下各项提供指令的执行:(1)规定源数据操作数、变换矩阵操作数和平移向量的SIMD仿射变换,其中变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个;(2)SIMD二进制有限域乘法逆,用于对于源数据操作数中的每个元素计算以不可约多项式为模的在二进制有限域中的逆;(3)规定源数据操作数、变换矩阵操作数和平移向量的SIMD仿射变换和乘法逆(或乘法逆和仿射变换),其中在乘法逆运算之前或之后,变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个;(4)模归约,用于计算以从二进制有限域中的多项式(对于其的模归约由指令(或微指令)提供)选择的特定模多项式ps为模的归约;(5)规定第一和第二源数据操作数的SIMD二进制有限域乘法,用于以不可约多项式为模使第一和第二源数据操作数中的每个对应元素对相乘;其中指令的结果存储在SIMD目的地寄存器中;可在硬件和/或微代码序列中提供通用GF(256)和/或其他备选二进制有限域SIMD密码算法功能性以便支持对于若干重要性能关键应用的显著性能提高,而没有需要额外电路、面积或功率的过多或过度功能单元。
图4A是图示根据本发明的至少一个实施例的有序流水线和寄存器重命名段、无序发出/执行流水线的框图。图4B是图示根据本发明的至少一个实施例要包括在处理器中的有序架构核和寄存器重命名逻辑、无序发出/执行逻辑的框图。图4A中的实线框图示有序流水线,而虚线框图示寄存器重命名、无序发出/执行流水线。相似地,图4B中的实线框图示有序架构逻辑,而虚线框图示寄存器重命名逻辑和无序发出/执行逻辑。
在图4A中,处理器流水线400包括提取段402、长度解码段404、解码段406、分配段408、重命名段410、调度(也称为调派或发出)段412、寄存器读取/存储器读取段414、执行段416、写回/存储器写段418、异常处理段422和提交段424。
在图4B中,箭头指示两个或以上单元之间的耦合并且箭头方向指示那些单元之间的数据流的方向。图4B示出处理器核490,其包括耦合于执行引擎单元450的前端单元430,两者都耦合于存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算机(CISC)核、超长指令字(VLIW)核或混合或备选核类型。作为再另一个选项,核490可以是专用核,例如网络或通信核、压缩引擎、图形核或类似物。
前端单元430包括分支预测单元432,其耦合于指令高速缓存单元434,该指令高速缓存单元434耦合于指令转换后备缓冲器(TLB)436,其耦合于指令提取单元438,该指令提取单元438耦合于解码单元440。解码单元或解码器可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,它们从原始指令解码或用别的方式反映原始指令或从原始指令得到。解码器可使用各种不同的机构实现。适合机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434进一步耦合于存储器单元470中的2级(L2)高速缓存单元476。解码单元440耦合于执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,其耦合于引退单元454和一组一个或多个调度器单元456。调度器单元456代表许多不同的调度器,其包括预留站、中央指令窗口等。调度器单元456耦合于物理寄存器文件单元458。物理寄存器文件单元458中的每个代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同数据类型,例如标量整数、标量浮点、封装整数、封装浮点、向量整数、向量浮点等、状态(例如,是要执行的下一个指令的地址的指令指针)等。物理寄存器文件单元458被引退单元454重叠来说明可实现寄存器重命名和无序执行所采用的多种方式(例如,使用重排序缓冲器和引退寄存器文件、使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等)。一般,架构寄存器从处理器外部或从程序员的角度可见。寄存器不限于任何已知特定类型的电路。各种不同类型的寄存器是适合的,只要它们能够存储并且提供如本文描述的数据即可。适合寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等。引退单元454和物理寄存器文件单元458耦合于执行集群460。执行集群460包括一组一个或多个执行单元462和一组一个或多个存储器访问单元464。执行单元462可对各种类型的数据(例如,标量浮点、封装整数、封装浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可包括专用于特定功能或功能集的许多执行单元,其他实施例可仅包括一个执行单元或多个执行单元,其全部执行所有功能。因为某些实施例对某些类型的数据/操作(例如,标量整数流水线、标量浮点/封装整数/封装浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,每个具有它们自己的调度器单元、物理寄存器文件单元和/或执行集群,并且在独立存储器访问流水线的情况下,实现某些实施例,其中仅该流水线的执行集群具有存储器访问单元464)创建独立流水线,调度器单元456、物理寄存器文件单元458和执行集群460示出为可能是复数。还应理解在使用独立流水线的情况下,这些流水线中的一个或多个可以是无序发出/执行并且余下的是有序的。
存储器访问单元464组耦合于存储器单元470,其包括耦合于数据高速缓存单元474的数据TLB单元472,该数据高速缓存单元474耦合于2级(L2)高速缓存单元476。在一个示范性实施例中,存储器访问单元464可包括负载单元、存储地址单元和存储数据单元,其中的每个耦合于存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合于一个或多个其他级高速缓存并且最终耦合于主存储器。
通过示例,示范性寄存器重命名、无序发出/执行核架构可如下实现流水线400:1)指令提取438执行提取和长度解码段402和404;2)解码单元440执行解码段406;3)重命名/分配器单元452执行分配段408和重命名段410;4)调度器单元456执行调度段412;5)物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取段414;执行集群460执行执行段416;6)存储器单元470和物理寄存器文件单元458执行写回/存储器写段418;7)在异常处理段422中可牵涉各种单元;以及8)引退单元454和物理寄存器文件单元458执行提交段424。
核490可支持一个或多个指令集(例如,x86指令集(具有添加有较新版本的扩展));加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(具有可选的额外扩展,例如NEON)。
应理解核可支持多线程化(执行两个或以上并行的操作或线程集),并且可采用多种方式来这样做,其包括时间分片多线程化、同时多线程化(其中单个物理核对物理核正同时多线程化的线程中的每个提供逻辑核)或其组合(例如时间分片提取和解码以及之后的同时多线程化,例如在Hyperthreading技术中)。
尽管寄存器重命名在无序执行的上下文中描述,应理解寄存器重命名可在有序架构中使用。尽管处理器的图示实施例还包括独立指令和数据高速缓存单元434/474和共享L2高速缓存单元476,备选实施例可具有对于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存,或多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存中的全部可在核和/或处理器外部。
图5是根据本发明的实施例具有集成存储器控制器和图形的单核处理器和多核处理器500的框图。图5中的实线框图示具有单核502A、系统代理510、一组一个或多个总线控制器单元516的处理器500,而虚线框的可选增加图示具有多个核502A-N、系统代理单元510中的一组一个或多个集成存储器控制器单元514和集成图形逻辑508的备选处理器500。
存储器层级包括核内的一级或多级高速缓存、一组一个或多个共享高速缓存单元506和耦合于该组集成存储器控制器单元514的外部存储器(未示出)。该组共享高速缓存单元506可包括一个或多个中间级高速缓存(例如2级(L2)、3级(L3)、4级(L4))或其他级高速缓存)、最后级高速缓存(LLC)和/或其组合。尽管在一个实施例中,基于环的互连单元512使集成图形逻辑508、该组共享高速缓存单元506和系统代理单元510互连,备选实施例可使用许多众所周知的技术用于使这样的单元互连。
在一些实施例中,核502A-N中的一个或多个能够多线程化。系统代理510包括协调并且操作核502A-N的那些部件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核502A-N和集成图形逻辑508的功率状态所需要的逻辑和部件。显示单元用于驱动一个或多个外部连接显示器。
核502A-N从架构和/或指令集方面可是同构或异构的。例如,核502A-N中的一些可是有序的,而其他是无序的。作为另一个示例,核502A-N中的两个或以上可能够执行相同指令集,而其他可能够仅执行该指令集的子集或不同的指令集。
处理器可以是通用处理器,例如CoreTMi3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器,其从加利福尼亚州Santa Clara的Intel Corporation可获得。备选地,处理器可以来自另一个公司,例如ARM Holdings,Ltd、MIPS等。处理器可以是专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或类似物。处理器可在一个或多个芯片上实现。处理器500可以是一个或多个衬底的一部分和/或可使用许多工艺技术(例如,BiCMOS、CMOS或NMOS)中的任一个在一个或多个衬底上实现。
图6-8是适合于包括处理器500的示范性系统,而图9是示范性芯片上系统(SoC),其可包括核502中的一个或多个。本领域内已知的对于膝上型电脑、台式机、手持PC、个人数字助理、工程化工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适合的。一般,能够包含如本文公开的处理器和/或其他执行逻辑的很多种系统或电子设备一般是适合的。
现在参考图6,示出根据本发明的一个实施例的系统600的框图。该系统600可包括一个或多个处理器610、615,其耦合于图形存储器控制器中枢(GMCH)620。额外处理器615的可选性质在图6中用虚线指示。
每个处理器610、615可以是处理器500的某一版本。然而,应注意集成图形逻辑和集成存储器控制单元将在处理器610、615中存在,这是不可能的。图6图示GMCH 620可耦合于存储器640,其例如可以是动态随机存取存储器(DRAM)。DRAM对于至少一个实施例可与非易失性高速缓存关联。
GMCH 620可以是芯片集或芯片集的一部分。GMCH 620可与处理器610、615通信并且控制处理器610、615与存储器640之间的交互。GMCH 620还可充当处理器610、615与系统600的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由多点总线(例如前端总线(FSB)695)而与处理器610、615通信。
此外,GMCH 620耦合于显示器645(例如平板显示器)。GMCH 620可包括集成图形加速器。GMCH 620进一步耦合于输入/输出(I/O)控制器中枢(ICH)650,其可用于使各种外围设备耦合于系统600。在图6的实施例中示出例如外部图形设备660(其可以是耦合于ICH650的分立图形设备),连同另一个外围设备670。
备选地,在系统600中还可存在额外或不同的处理器。例如,额外处理器615可包括与处理器610相同的额外处理器、与处理器610异构或不对称的额外处理器、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。从品质(其包括架构、微架构、热、功耗特性及类似物)的度量谱方面来看,在物理资源610、615之间可以存在多种差异。这些差异可使它们自身有效地表现为处理器610、615之中的不对称和异构性。对于至少一个实施例,各种处理器610、615可驻存在相同的芯片封装中。
现在参考图7,示出根据本发明的实施例的第二系统700的框图。如在图7中示出的,多处理器系统700是点到点互连系统,并且包括经由点到点互连750而耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以是处理器500的某一版本(作为处理器610、615中的一个或多个)。
尽管仅示出有两个处理器770、780,要理解本发明的范围不受此限制。在其他实施例中,在指定处理器中可存在一个或多个额外处理器。
示出处理器770和780,其分别包括集成存储器控制器单元772和782。处理器770还包括点到点(P-P)接口776和778作为它的总线控制器单元的部分;相似地,第二处理器780包括P-P接口786和788。处理器770、780可使用P-P接口电路778、788经由点到点(P-P)接口750来交换信息。如在图7中示出的,IMC 772和782使处理器耦合于相应存储器,即存储器732和存储器734,其可以是本地附连到相应处理器的主存储器的部分。
处理器770、780每个可使用点到点接口电路776、794、786、798经由个体P-P接口752、754而与芯片集790交换信息。芯片集790还可经由高性能图形接口739而与高性能图形电路738交换信息。
共享高速缓存(未示出)可包括在任一处理器中或在两个处理器外部,然而经由P-P互连与处理器连接,使得如果处理器被置于低功率模式则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集790可经由接口796耦合于第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线,或例如PCI Express总线或另一个第三代I/O互连总线等总线,但本发明的范围不受此限制。
如在图7中示出的,各种I/O设备714连同总线桥718可耦合于第一总线716,该总线桥718使第一总线716耦合于第二总线720。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。各种设备可耦合第二总线720,其包括例如键盘和/或鼠标722、通信设备727和存储单元728,例如盘驱动器或其他大容量存储设备,其在一个实施例中可包括指令/代码和数据730。此外,音频I/O 724可耦合于第二总线720。注意其他架构是可能的。例如,代替图7的点到点架构,系统可实现多点总线或其他这样的架构。
现在参考图8,示出根据本发明的实施例的第三系统800的框图。图7和图8中的类似元件承载类似的标号,并且图7的某些方面已经从图8省略以避免掩盖图8的其他方面。
图8图示处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可包括集成存储器控制器单元,例如在上文连同图5和7描述的。另外,CL 872、882还可包括I/O控制逻辑。图8图示不仅存储器832、834耦合于CL872、882,而且I/O设备814也耦合于控制逻辑872、882。遗留I/O设备815耦合于芯片集890。
现在参考图9,示出根据本发明的实施例的SoC 900的框图。图5中的相似元件承载类似的标号。虚线框也是更先进SoC上的可选特征。在图9中,互连单元902耦合于:应用处理器910,其包括一组一个或多个核502A-N和共享高速缓存单元506;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一组一个或多个媒体处理器920,其可包括集成图形逻辑508、用于提供静物和/或视频拍摄装置功能性的图像处理器924、用于提供硬件音频加速的音频处理器926和用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器访问(DMA)单元932;和显示单元940,用于耦合于一个或多个外部显示器。
图10图示包括中央处理单元(CPU)和图形处理单元(GPU)的处理器,其可执行根据一个实施例的至少一个指令。在一个实施例中,执行根据至少一个实施例的操作的指令可以由CPU执行。在另一个实施例中,指令可以由GPU执行。在再另一个实施例中,指令可通过由GPU和CPU执行的操作的组合执行。例如,在一个实施例中,根据一个实施例的指令可被接收和解码以供在GPU上执行。然而,解码指令内的一个或多个操作可由CPU执行并且结果返回GPU用于指令的最后引退。相反,在一些实施例中,CPU可充当主处理器并且GPU充当协处理器。
在一些实施例中,从高度并行吞吐量处理器获益的指令可由GPU执行,而从处理器(其从深度流水化架构获益)的性能获益的指令可由CPU执行。例如,图形、科学应用、金融应用和其他并行工作负载可从GPU的性能获益并且相应地被执行,而更多的序列应用(例如操作系统内核或应用代码)可更适合CPU。
在图10中,处理器1000包括CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、高清晰度多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪存控制器1055、双数据速率(DDR)控制器1060、安全引擎1065和I2S/I2C(集成芯片间音频/相互间集成电路)接口1070。其他逻辑和电路可包括在图10的处理器中,其包括更多CPU或GPU和其他外围接口控制器。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令实现,代表处理器内的各种逻辑,其在被机器读取时促使该机器制造逻辑来执行本文描述的技术。这样的表示(称为“IP核”)可存储在有形的机器可读介质(“带”)上并且供应给各种客户或制造设施来装入实际上制作逻辑或处理器的制造机器。例如,IP核(例如由ARMHoldings,Ltd.开发的CortexTM系列处理器和中国科学院计算技术研究所(ICT)开发的Loongson IP核)可被授权或出售给各种客户或被许可方(例如Texas Instruments、Qualcomm,、Apple或Samsung)并且在由这些客户或被许可方生产的处理器中实现。
图11示出这样的框图,其图示根据一个实施例的IP核的开发。存储1130包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,代表IP核设计的数据可以经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160提供给存储1130。由模拟工具和模型生成的IP核信息然后可以传送到制造设施,在这里它可以由第三方制造来执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可对应于第一类型或架构(例如,x86)并且在具有不同类型或架构(例如,ARM)的处理器上转换或仿真。根据一个实施例的指令可因此在任何处理器或处理器类型上执行,其包括ARM、x86、MIPS、GPU或其他处理器类型或架构。
图12图示根据一个实施例、不同类型的处理器如何仿真第一类型的指令。在图12中,程序1205包含可执行与根据一个实施例的指令相同或大致相同功能的一些指令。然而,程序1205的指令可具有与处理器1215不同或不兼容的类型和/或格式,这意指程序1205中该类型的指令可不能由处理器1215本机执行。然而,借助于仿真逻辑1210,程序1205的指令被转换成能够被处理器1215本机执行的指令。在一个实施例中,仿真逻辑在硬件中体现。在另一个实施例中,仿真逻辑在有形的机器可读介质中体现,该有形的机器可读介质包含用于将程序1205中该类型的指令转换成可由处理器1215本机执行的类型的软件。在其他实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器外部存在并且由第三方提供。在一个实施例中,处理器能够通过执行处理器中包含或与处理器关联的微代码或固件而加载有形的机器可读介质(其包含软件)中体现的仿真逻辑。
图13是根据本发明的实施例对比用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在图示的实施例中,指令转换器是软件指令转换器,但备选地,指令转换器可在软件、固件、硬件或其各种组合中实现。图13示出采用高级语言1302的程序可使用x86编译器1304编译来生成x86二进制代码1306,其可由具有至少一个x86指令集核1316的处理器本机执行。具有至少一个x86指令集核1316的处理器代表任何处理器,其可以通过以下步骤而执行与具有至少一个x86指令集核的Intel处理器大致相同的功能以便实现与具有至少一个x86指令集核的Intel处理器大致相同的结果:(1)兼容地执行或用别的方式处理Intel x86指令集核的指令集的相当大一部分或(2)兼容地执行或用别的方式处理以在具有至少一个x86指令集核的Intel处理器上运行为目标的应用或其他软件的目标代码版本。x86编译器1304代表能操作成生成x86二进制代码1306(例如,目标代码)的编译器,这些x86二进制代码1306可以在具有或没有额外链接处理的情况下在具有至少一个x86指令集核1316的处理器上执行。相似地,图13示出采用高级语言1302的程序可使用备选指令集编译器1308编译来生成备选指令集二进制代码1310,其可由没有至少一个x86指令集核1314的处理器(例如,具有执行加利福尼亚州Sunnyvale的MIPSTechnologies的MIPS指令集和/或执行加利福尼亚州Sunnyvale的ARMHoldings的ARM指令集的核的处理器)本机执行。指令转换器1312用于将x86二进制代码1306转换成可由没有x86指令集核1314的处理器本机执行的代码。该转换代码不可能与备选指令集二进制代码1310相同,因为有此能力的指令转换器难以制造;然而,转换代码将完成一般操作并且由来自备选指令集的指令构成。从而,指令转换器1312代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1306。
图14图示用于高效实现高级加密标准(AES)加密/解密标准的过程1401的一个实施例的流程图。过程1401和本文公开的其他过程通过处理可包括专用硬件或软件或固件操作代码(其可由通用机器或专用机器或两者的组合执行)的块而执行。在一个实施例中,对于AES逆-列-混合变换,合成域GF((24)2)可与不可约多项式x4+x2+x+1和x2+2x+0xE一起使用。
在处理块1411中,包括16个字节值的128位输入块与轮回密钥被逻辑异或(XOR)。在处理块1412中,确定过程是否在加密,在该情况下处理从点1418继续,或如果过程在解密,在该情况下处理在处理块1413中恢复。
在处理块1413中,域转换电路用于将16个字节值中的每个分别从GF(256)中的对应多项式表示转换成合成域GF((24)2)中的另一个对应多项式表示。对于处理块1413的一个实施例,GF(256)中的多项式表示[a7,a6,a5,a4,a3,a2,a1,a0]可以通过使每个字节值乘以8位x8位转换矩阵而转换成合成域GF((24)2)中的对应多项式表示[b7,b6,b5,b4,b3,b2,b1,b0],这可通过一系列XOR如下实现:
b1=a7,
此时,16个字节可视为具有四行并且具有四列的4x4字节块。在处理块1414中,确定当前轮回是否是最后/特殊轮回,在该情况下不执行逆列混合,或否则在处理块1415中,逆-列-混合电路用于计算16个字节值在GF((24)2)中的逆-列-混合变换来获得在GF((24)2)中的对应变换多项式表示。对于一个实施例,16个字节输入值在GF((24)2)中的逆-列-混合变换可以执行如下:
将意识到这样的矩阵乘法可以通过在第一阶段中计算执行乘以对于每个结果的表达式中的矩阵常数所需要的唯一项并且然后对唯一项求和来生成每个结果而在GF((24)2)中对[a3,a2,a1,a0,b3,b2,b1,b0]执行。例如,从半字节[a3,a2,a1,a0]用于计算上面的矩阵乘法所必需的唯一项是:
从半字节[b3,b2,b1,b0]用于计算上面的矩阵乘法所必需的唯一项是:
在处理块1414中所确定的任意情况下,在处理块1416中,对16个字节值执行行的硬接线置换,其对应于逆行混合变换。在处理块1417中,第二域转换电路用于转换GF((24)2)中的每个对应变换多项式表示并且还应用逆仿射变换以相应地在除GF((24)2)以外的有限域中生成第三对应多项式表示。在过程1401的一个实施例中,除GF((24)2)以外的新的有限域是合成域GF((22)4)。该实施例在下文关于图2更详细描述。在过程1401的备选实施例中,新的有限域是原始域GF(256)。这些实施例在下文关于图3A和3B更详细描述。
从点1418继续,乘法逆电路在处理块120中使用来对于16个字节值的第三对应多项式表示中的每个分别计算在除GF((24)2)以外的该新的有限域中的对应乘法逆多项式表示。在处理块1421中,确定过程是否在解码,在该情况下完成轮回处理并且在处理块1426中输出结果,或如果过程在加密,在该情况下处理在处理块1422中恢复。
在处理块1422中,电路用于对16个字节值的对应乘法逆多项式表示中的每个应用仿射变换以在除GF((24)2)以外的该新的有限域中分别生成变换的对应多项式表示。如果该新的有限域不是原始域GF(256),则另一个域转换可以与框1422中的电路组合来将每个对应变换多项式表示转换回原始域GF(256)。因此,可假设对于过程1401的余下部分的多项式表示是在原始域GF(256)中。
在处理块1423中,对16个字节值执行行的硬接线置换,其对应于前向行混合变换(forward row mixing transformation)。在处理块1424中,确定当前轮回是否是最后/特殊轮回,在该情况下不执行列混合,或否则在处理块1425中,前向-列-混合电路用于计算16个字节值在GF(256)中的前向-列-混合变换来获得在GF(256)中的对应变换多项式表示。将意识到因为系数在GF(256)中的前向-列-混合变换中是相对小的,在处理块1425中未使用备选域表示。最后,完成过程1401的轮回处理并且16字节结果在处理块1426中输出。
图15图示用于高效实现AES S盒的乘法逆的过程1501的一个实施例的流程图。在下文图示的一个实施例中,对于S盒变换,合成域GF((22)4)可与不可约多项式x4+x3+x2+2一起使用。
从过程1401的点1418继续,在处理块1518处,确定过程是否在加密,在该情况下处理在处理块1519中继续。否则如果过程在解密,域转换已经在处理块1417中执行并且16个字节值的第三对应多项式表示在合成域GF((22)4)中。对于处理块1417的一个实施例,可以应用逆仿射变换并且合成域GF((24)2)中的多项式表示[a7,a6,a5,a4,a3,a2,a1,a0]可以通过使每个字节值乘以8位x 8位转换矩阵和一些常数的XOR(即,逐位逆变(bitwiseinversion))而转换成合成域GF((22)4)中的对应多项式表示[b7,b6,b5,b4,b3,b2,b1,b0],这可通过一系列XOR如下实现:
在处理块1519中,对于加密过程需要域转换并且因此域转换电路用于将16个字节值中的每个从GF(256)中的对应多项式表示分别转换成合成域GF((22)4)中的对应多项式表示。对于处理块1519的一个实施例,GF(256)中的多项式表示[a7,a6,a5,a4,a3,a2,a1,a0]可以通过使每个字节值乘以8位x 8位转换矩阵而转换成合成域GF((22)4)中的对应多项式表示[b7,b6,b5,b4,b3,b2,b1,b0],这可通过一系列XOR如下实现:
在处理块1520中,逆变电路用于对16个字节值在GF((22)4)中的多项式表示中的每个分别计算在GF((22)4)中的乘法逆多项式表示。对于一个实施例,对应于合成域GF((22)4)中的多项式表示的输入[a,b,c,d]和乘法逆[A,B,C,D]如下相关:
其中和‘·’分别指示GF(22)加法和乘法。
解是:A=Δ-1·Δa,B=Δ-1·Δb,C=Δ-1·Δc,D=Δ-1·Δd,其中行列式Δ由以下给出:
并且行列式Δa、Δb、Δc和Δd通过用{0,0,0,1}分别取代Δ的第一、第二、第三和第四列而由Δ产生。将再次意识到这样的计算可通过扩展行列式计算、计算硬件中的唯一项(例如a2、b2、a3、3·b2等)和需要的项的唯一和并且然后对特定项组合求和而在GF(22)中实施来生成必需的结果。
在处理块1521中,确定过程是否在解密,在该情况下处理在处理块1522中继续。在处理块1522中,另一个域转换电路用于将16个字节值中的每个从合成域GF((22)4)中的对应多项式表示分别转换成GF(256)中的对应多项式表示。对于处理块1522的一个实施例,合成域GF((22)4)中的多项式表示[a7,a6,a5,a4,a3,a2,a1,a0]可以通过使每个字节值乘以8位x8位转换矩阵而转换成GF(256)中的对应多项式表示[b7,b6,b5,b4,b3,b2,b1,b0],这可通过一系列XOR如下实现:
否则如果过程在加密,处理行进到过程1401的处理块1421。如将关于过程1401的处理块1422解释的,用于在处理块1422中向16个字节应用仿射变换的电路可以与该实施例的域转换电路组合来将16个字节值从GF((22)4)中的多项式表示转换成在GF(256)中的对应多项式表示。对于处理块1422的一个实施例,可以应用仿射变换并且合成域GF((22)4)中的多项式表示[a7,a6,a5,a4,a3,a2,a1,a0]可以通过使每个字节值乘以8位x8位转换矩阵和与一些常数的XOR(即,逐位逆变)而转换成GF(256)中的对应多项式表示[b7,b6,b5,b4,b3,b2,b1,b0],这可通过一系列XOR如下实现:
图16A图示用于执行对于仿射变换的仿射映射指令来提供通用GF(256)SIMD密码算法功能性的装置1601的一个实施例的图。在一些实施例中,装置1601可被复制十六次,每个装置1601包括用于对128位块(其包括16个字节值)高效实现仿射变换的硬件处理块,每个字节具有在GF(256)中的多项式表示。在仿射映射指令(或微指令)的其他实施例中,还可规定元素大小,并且/或可选择装置1601的复制次数来对128位块或256位块或512位块等实现仿射变换。装置1601的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行仿射映射指令来提供通用GF(256)SIMD密码算法功能性。装置1601的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于GF(256)中的仿射变换。在一些实施例中,仿射映射指令可由微指令(或微操作、微op或uop)—例如,有限域矩阵-向量乘法微指令(后跟有限域向量加法(XOR)微指令)实现。
例如,装置1601的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD仿射变换功能性的仿射映射指令的一些实施例规定元素1612的源数据操作数集、变换矩阵1610操作数和平移向量1614操作数。响应于解码的仿射映射指令,一个或多个执行单元(例如,执行单元462)通过处理块1602的GF(256)字节乘法器阵列的八个逐位AND 1627-1620来对源数据操作数集中(例如,在16个字节元素的128位块中)的每个元素1612应用变换矩阵1610操作数并且通过处理块1603的GF(256)位加法器阵列的八个9-输入XOR 1637-1630来对源数据操作数集中的每个变换元素应用平移向量1614操作数而执行SIMD仿射变换。对于仿射映射指令的源数据操作数集中的每个元素1612的仿射变换结果元素1618存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图16B图示用于执行对于仿射变换后跟计算结果的乘法逆的仿射逆指令来提供通用GF(256)密码算法功能性的装置1605的一个实施例的图。装置1605的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行仿射逆指令来提供通用GF(256)SIMD密码算法功能性。装置1605的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于在GF(256)中的仿射变换和逆变。在一些实施例中,仿射逆指令可由微指令(或微操作、微op或uop)-例如,仿射映射1601微指令(后跟有限域乘法逆微指令1604)实现。在备选实施例中,仿射逆指令可由不同的微指令-例如,有限域矩阵-向量乘法微指令(后跟字节广播微指令、有限域向量加法(XOR)微指令和有限域乘法逆微指令)实现。
装置1605的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD仿射变换功能性、后跟计算结果的乘法逆的仿射逆指令的一些实施例规定元素1612的源数据操作数集、变换矩阵1610操作数、平移向量1614操作数和可选地首一不可约多项式。响应于解码的仿射逆指令,一个或多个执行单元(例如,执行单元462)通过处理块1602的GF(256)字节乘法器阵列的八个逐位AND 1627-1620来对源数据操作数集中(例如,在16个字节元素的128位块中)的每个元素1612应用变换矩阵1610操作数并且通过处理块1603的GF(256)位加法器阵列的八个9-输入XOR 1637-1630来对源数据操作数集中的每个变换元素应用平移向量1614操作数而执行SIMD仿射变换。将意识到计算中的该点可对应于过程1403的点1418。以不可约多项式为模的有限域乘法逆元素1648通过乘法逆单元1640从仿射变换结果元素1618对于源数据操作数据中的每个元素1612来计算。对于仿射逆指令的每个仿射变换结果元素1618的乘法逆结果元素1648存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
将意识到仿射逆指令的一些实施例可用于执行过程,例如过程1403。其他实施例用于执行例如过程1402等过程。
图16C图示用于执行逆仿射指令以用于计算乘法逆、后跟结果的仿射变换来提供通用GF(256)SIMD密码算法功能性的装置1606的备选实施例的图。装置1606的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行逆仿射指令来提供通用GF(256)SIMD密码算法功能性。装置1606的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于在GF(256)中的逆变和仿射变换。在一些实施例中,逆仿射指令可由微指令(或微操作、微op或uop)-例如,有限域乘法逆微指令1604(后跟仿射映射1601微指令)实现。在备选实施例中,逆仿射指令可由不同的微指令-例如,有限域乘法逆微指令(后跟有限域矩阵-向量乘法微指令和有限域向量标量转换(例如,广播和XOR)微指令)实现。
装置1606的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供乘法逆后跟仿射变换功能性的通用GF(256)SIMD计算的逆仿射指令的一些实施例规定元素1612的源数据操作数集、变换矩阵1610操作数、平移向量1614操作数和可选地首一不可约多项式。在处理块1604中,响应于解码的逆仿射指令,一个或多个执行单元(例如,执行单元462)通过乘法逆单元1640对于源数据操作数集中的每个元素1612计算以不可约多项式为模的SIMD二进制有限域乘法逆元素1616。所述一个或多个执行单元然后通过处理块1602的GF(256)字节乘法器阵列的八个逐位AND 1627-1620来对源数据操作数集(例如,在16个字节元素的128位块中)的元素1612的每个乘法逆元素1616应用变换矩阵1610操作数并且通过处理块1603的GF(256)位加法器阵列的八个9-输入XOR 1637-1630来对源数据操作数集中的每个变换逆元素应用平移向量1614操作数而执行SIMD仿射变换。对于逆仿射指令的源数据操作数集的元素1612中的每个乘法逆元素1616的仿射变换结果元素1638存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图17A图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的装置1701的一个实施例的图。在一些实施例中,装置1701可被复制十六次,每个装置1701包括用于对128位块(其包括16个字节值)高效实现AES S盒的乘法逆的硬件处理块,每个字节具有在GF(256)中的多项式表示。在有限域乘法逆指令(或微指令)的其他实施例中,还可规定元素大小,并且/或可选择装置1701的复制次数来对128位块或256位块或512位块等实现有限域乘法逆。装置1701的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性。装置1701的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于GF(256)中的乘法逆。在装置1701中,我们认为每个字节x是来自过程1401的点1418的输入,因此装置1701通过访问包含x的源数据操作数集而开始。处理块1711-1717包括一个字节片的多项式幂生成电路,用于对16个字节值中的每个分别计算字节值,其具有在GF(256)中的对应于它们的相应字节值x的多项式表示的幂x2、x4、x8、x16、x32、x64和x128的多项式表示。处理块1718-1720和1728-1730包括一个字节片的乘法器电路,用于分别对于16个字节值中的每个使对应于多项式表示的幂的字节值在一起相乘(在GF(256)中),来产生16个字节值,其每个具有在GF(256)中的对应于它们的相应字节值x的乘法逆x-1=x254的多项式表示。然后存储这16个乘法逆字节值(例如,在物理寄存器文件单元458中)或将其输出到过程1401的框1421,其中仿射变换电路(例如,1601)可选地在处理块1422中使用以根据过程1401是执行加密还是解密来应用仿射变换。
图17B图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的装置1702的备选实施例的图。在一些实施例中,装置1702可被复制十六次,每个装置1702包括用于对128位块(其包括16个字节值)高效实现AES S盒的乘法逆的硬件处理块,每个字节具有在GF(256)中的多项式表示。在有限域乘法逆指令(或微指令)的其他实施例中,还可规定元素大小,并且/或可选择装置1702的复制次数来对128位块或256位块或512位块等实现有限域乘法逆。装置1702的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性。装置1702的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于GF(256)中的乘法逆。在装置1702中,我们再次认为每个字节x是来自过程1401的点1418的输入,因此装置1702通过访问包含x的源数据操作数集而开始。将意识到过程1401的点1418可代表在处理块1417中仿射变换电路(例如,1601)或仿射映射指令的输出。处理块1721-1727包括一个字节片的多项式幂生成电路,用于对16个字节值中的每个分别计算字节值,其具有在GF(256)中的对应于它们的相应字节值x的多项式表示的幂x6、x24、x96和x128的多项式表示。处理块1728-1730包括一个字节片的乘法器电路,用于分别对于16个字节值中的每个使对应于多项式表示的幂的字节值在GF(256)中一起相乘,来产生16个字节值,其每个具有在GF(256)中的对应于它们的相应字节值x的乘法逆x-1=x254的多项式表示。存储这16个乘法逆字节值(例如,在物理寄存器文件单元458中)或将其输出到过程1401的框1421,其中仿射变换电路(例如,1601)可选地在处理块122中使用以根据过程1401是执行加密还是解密来应用仿射变换。
图17C图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的装置1703的另一个备选实施例的图。在一些实施例中,装置1703可被复制十六次,每个装置1703包括用于对128位块(其包括16个字节值)高效实现有限域乘法逆的硬件处理块,每个字节具有在GF(256)中的多项式表示。在有限域乘法逆指令(或微指令)的其他实施例中,还可规定元素大小,并且/或可选择装置1703的复制次数来对128位块或256位块或512位块等实现有限域乘法逆。装置1703的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性。装置1703的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于GF(256)中的乘法逆。
装置1703的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD乘法逆功能性的有限域乘法逆指令的一些实施例规定元素1710的源数据操作数集和首一不可约多项式1740。响应于解码的有限域乘法逆指令,一个或多个执行单元(例如,执行单元462)对于源数据操作数集的每个元素1710计算以不可约多项式为模的SIMD二进制有限域乘法逆。装置1703的一些实施例在合成域GF((24)2)中执行有限域乘法逆运算。源数据操作数集的每个元素1710在处理块1734中映射到合成域GF((24)2),该处理块1734输出4位域元素zH 1735和zL 1736。对于一个实施例,逆域元素zL - 11746计算如下:(1)在合成域中添加(逐位XOR 1737)域元素zH 1735和zL1736;(2)在处理块1739中域元素zH 1735和逐位XOR 1737的输出相乘(以不可约多项式p为模)。在一个实施例中,可使用多项式p=z4+z3+1,但在备选实施例中,可使用其他4次不可约多项式。继续计算逆域元素zL -11746:(3)在处理块1738中,域元素zH 1735平方并且乘以十六进制值8(以p为模),其结果与合成域中处理块1739的输出相加(逐位XOR1741);(4)在处理块1742中计算逐位XOR 1741的输出的逆以及(5)在处理块1744中与域元素zL1736相乘(以p为模)来产生逆域元素zL -11746。对于一个实施例,逆域元素zH -11745计算如下:如上文描述的步骤(1)至(4);和(5)处理块1742的输出在处理块1743中与域元素zH 1735相乘(以p为模)来产生逆域元素zH -11745。每对4位域元素zH -11745和zL -11746然后在处理块1747中从合成域GF((24)2)逆映射来产生在GF(256)中的乘法逆结果元素1750。对于有限域乘法逆指令的源数据操作数集的每个元素1710的乘法逆结果元素1750最后存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图18A图示用于执行特定模归约指令来提供通用GF(256)SIMD密码算法功能性的装置1801的一个实施例的图。在当前图示的示例中,特定模多项式1811B在GF(256)中是p=x8+x4+x3+x+1。在一些实施例中,装置1801可被复制十六次,每个装置1801包括用于对两个128位块(或一个256位块)(其包括16个双字节值)高效实现特定模归约的硬件处理块,来产生128位块(其包括16个字节值),所得的16个字节值中的每个具有在GF(256)中的多项式表示。装置1801的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行特定模归约指令来提供通用GF(256)SIMD密码算法功能性。装置1801的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来解码指令用于GF(256)中的特定模归约。
装置1801的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD模归约功能性的特定模归约指令的一些实施例规定元素1810的源数据操作数集和首一不可约多项式1811B。响应于解码的模归约指令,一个或多个执行单元(例如,执行单元462)对于源数据操作数集中的每个元素1810计算以不可约多项式为模的SIMD二进制有限域归约。具有双字节值的源数据操作数集的元素1810作为qH1828和qL 1820输入处理块1821。装置1801的一些实施例在处理块1821中执行处理块1825中的12位操作,这等同于:
处理块1825的所得元素T(具有部分归约的12位值)作为TH 1838和TL 1830输入处理块1831。装置1801的一些实施例在处理块1831中执行处理块1835中的8位操作,这也等同于:
将意识到在XOR运算中,可消除0输入,由此进一步使装置1801的逻辑复杂度减少。对于特定模归约指令的源数据操作数集的每个元素1810的特定模归约结果元素1850存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图18B图示用于执行特定模归约指令来提供通用GF(256)SIMD密码算法功能性的装置1802的备选实施例的图。在当前图示的示例中,特定模多项式1811B在GF(256)中也是p=x8+x4+x3+x+1。将意识到还可应用相似的技术来实现如在SMS4(中国国家无线LANWAPI(有线认证和私密基础设施)标准的分组密码)中使用的对于GF(256)中的其他模多项式(例如f5=x8+x7+x6+x5+x4+x2+1)的不同的特定模归约指令(或微指令)。在一些实施例中,装置1802可被复制十六次,每个装置1802包括用于对两个128位块(或一个256位块)(其包括16个双字节值)高效实现特定模归约的硬件处理块,来产生128位块(其包括16个字节值),所得的16个字节值中的每个具有在GF(256)中的多项式表示。装置1802的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行特定模归约指令来提供通用GF(256)SIMD密码算法功能性。装置1802的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来对GF(256)中的特定模归约的指令解码。
装置1802的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD模归约功能性的特定模归约指令的一些实施例规定元素1810的源数据操作数集和首一不可约多项式1811B。响应于解码的模归约指令,一个或多个执行单元(例如,执行单元462)对于源数据操作数集中的每个元素1810计算以不可约多项式为模的SIMD二进制有限域归约。具有双字节值的源数据操作数集的元素1810作为q[15:8]1828和q[7:0]1820输入处理块1861。装置1802的一些实施例在处理块1861中执行XOR逻辑门1867-1860中的逻辑运算,这等同于:
对于特定模归约指令的源数据操作数集的每个元素1810的特定模归约结果元素(q mod p)1850存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)
图18C图示用于执行特定AES伽罗瓦计数器模式(GCM)模归约指令来提供GF(2128)SIMD密码算法功能性的装置1803的另一个备选实施例的图。在当前图示的示例中,特定模多项式1887在GF(256)中是p=x128+x7+x2+x+1。装置1803的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行特定模归约指令来提供GF(2128)SIMD密码算法功能性。装置1803的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来对GF(2128)中的特定模归约的指令解码。
装置1803的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供在GF(2128)中的AES GCM模归约功能性的特定指令的一些实施例规定元素1813的源数据操作数集和首一不可约多项式1887。响应于解码的有限域模归约指令,一个或多个执行单元(例如,执行单元462)对于源数据操作数集中的每个元素1813计算以不可约多项式为模的SIMD有限域归约。
具有32字节值的源数据操作数集的元素1813输入处理块1871。装置1803的一些实施例在处理块1871中执行关于非位反映归约多项式的非位反映运算,这等同于如下的位反映乘积的位反映模归约:
(i)[X3,X2,X1,X0]=q[255:0]<<1;
(i)A=X0<<63;B=X0<<62;C=X0<<57;
(iv)[E1,E0]=[D,X0]>>1;[F1,F0]=[D,X0]>>2;[G1,G0]=[D,X0]>>7;
因此,方程(i)由移位器1870从元素1813实现来生成[X3,X2,X1,X0]1872。方程(ii)由移位器1873-1875实现。方程(iii)由处理块1876实现。方程(iv)由移位器1877-1879实现。方程(v)由处理块1885实现,并且方程(vi)由处理块1880实现。对于特定模归约指令的源数据操作数集的每个元素1813的特定模归约结果元素(q mod p)1853存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图18D图示用于执行模归约指令来提供通用二进制有限域GF(2t)SIMD密码算法功能性的装置1804的一个实施例的图。在目前图示的示例中,特定模多项式ps可从特定模多项式(对于其的模归约由指令(或微指令)提供)选择,例如p0、p1、…pn。在其中t=8的一些实施例中,装置1804可被复制十六次,每个装置1804包括用于对两个128位块(或一个256位块)(其包括16个双字节值)高效实现特定模归约的硬件处理块,来产生128位块(其包括16个字节值),所得的16个字节值中的每个具有在GF(256)中或备选地在某一合成域(例如GF((24)2)或GF((22)4)等)中的多项式表示。在模归约指令(或微指令)的其他实施例中,还可规定大小t,并且/或可选择装置1804的复制次数来产生128位块或256位块或512位块,等。装置1804的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行模归约指令来提供通用二进制有限域GF(2t)SIMD密码算法功能性。装置1804的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来对在二进制有限域GF(2t)中或备选地在某一合成域(例如GF((2u)v),其中t=u+v)中的模归约的指令解码。
图19A图示用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性的装置1901的一个实施例的图。在一些实施例中,装置1901可被复制十六次,每个装置1901包括用于对两个128位块(每个包括16个字节值)高效实现二进制有限域乘法的硬件处理块,每个字节具有在GF(256)中的多项式表示。在二进制有限域乘法指令(或微指令)的其他实施例中,还可规定元素大小,并且/或可选择装置1901的复制次数来对两个128位块或两个256位块或两个512位块等实现二进制有限域乘法。装置1901的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性。装置1901的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来对GF(256)中的有限域乘法的指令解码。
装置1901的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD二进制有限域乘法计算功能性的二进制有限域乘法指令的一些实施例规定元素1910和1912的两个源数据操作数集和首一不可约多项式。在处理块1902中,响应于解码的二进制有限域乘法指令,一个或多个执行单元(例如,执行单元462)对于源数据操作数集中的每对元素1910和1912计算SIMD无进位8x8乘法来产生15位乘积元素1915和通过模归约单元1917以选择(例如,通过选择器1916)的不可约多项式为模的归约积1918。对于源数据操作数集的元素对1910和1912的每个二进制有限域乘法的归约积1918结果存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图19B图示用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性的装置1903的备选实施例的图。在一些实施例中,装置1903可被复制两次,每个装置1903包括用于对两个128位块(每个包括16个字节值)高效实现二进制有限域乘法的硬件处理块,每个字节具有在GF(256)中的多项式表示。在二进制有限域乘法指令(或微指令)的其他实施例中,还可规定元素大小,并且/或可选择装置1903的复制次数来对两个128位块或两个256位块或两个512位块等实现二进制有限域乘法。装置1903的实施例可以是流水线400的部分(例如,执行段416)或核490的部分(例如,执行单元462),用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性。装置1903的实施例可与解码段(例如,解码406)或解码器(例如,解码单元440)耦合来对GF(256)中的有限域乘法的指令解码。
装置1903的实施例可与SIMD向量寄存器(例如,物理寄存器文件单元458)耦合,其包括可变的多个m个大小可变的数据字段,用于存储可变的多个m个大小可变的数据元素的值。用于提供通用GF(256)SIMD二进制有限域乘法计算功能性的二进制有限域乘法指令的一些实施例规定两个源数据操作数集(例如,1920和1922)和首一不可约多项式p。在阵列1925的每个处理块1902中,响应于解码的二进制有限域乘法指令,一个或多个执行单元(例如,执行单元462)对于源数据操作数集1920和1922中的每对元素计算SIMD无进位8x8乘法来产生乘积元素1915和通过模归约单元1917以选择的(例如,通过选择器1916)不可约多项式为模的归约积1918。对于源数据操作数集1920和1922的SIMD二进制有限域乘法的归约积集1928结果存储在SIMD目的地寄存器中(例如,在物理寄存器文件单元458中)。
图20A图示用于执行仿射映射指令来提供通用GF(256)SIMD密码算法功能性的过程2001的一个实施例的流程图。过程2001和本文公开的其他过程由处理块执行,这些处理块可包括可由通用机器或专用机器或两者的组合执行的专用硬件或软件或固件操作代码。
在处理块2011中,对有限域中的SIMD仿射变换的处理器仿射映射指令解码。在处理块2016中,仿射映射指令的解码可选地生成微指令,例如对于有限域矩阵-向量乘法1602的第一微指令,和对于有限域向量加法(或XOR)1603的第二微指令。在处理块2021中,访问元素的源数据操作数集。在处理块2031中,访问变换矩阵操作数。在处理块2041中,访问平移向量操作数。在处理块2051中,将变换矩阵操作数应用于源数据操作数集的每个元素。在处理块2061中,将平移向量操作数应用于源数据操作数集的每个变换元素。在处理块2081中,做出关于是否完成源数据操作数集中的每个元素的处理的确定。如果未完成,SIMD仿射变换的处理在处理块2051中反复开始。否则在处理块2091中,SIMD仿射变换的结果存储在SIMD目的地寄存器中。
图20B图示用于执行有限域乘法逆指令来提供通用GF(256)SIMD密码算法功能性的过程2002的一个实施例的流程图。在处理块2012中,对有限域中的SIMD乘法逆的处理器乘法逆指令解码。在处理块2016中,乘法逆指令的解码可选地生成微指令,例如对于乘法逆的第一微指令,和对于模归约(例如1801-1804中的一个)的第二微指令。在处理块2022中,访问元素的源数据操作数集。在处理块2032中,可选地明确识别不可约多项式。在一个实施例中,不可约多项式可例如在指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(256)中的多项式x8+x4+x3+x+1。在另一个实施例中,不可约多项式可例如在指令的立即操作数中规定为十六进制控制值FA来指示在GF(256)中的多项式x8+x7+x6+x5+x4+x2+1或备选地指示另一个多项式。在另一个备选实施例中,不可约多项式可在指令助记符中规定和/或明确识别。在处理块2042中,对源数据操作数集的每个元素计算二进制有限域乘法逆,并且在处理块2052中,对于源数据操作数集的每个元素的逆,可选地以不可约多项式为模来归约。在处理块2082中,做出关于是否完成源数据操作数集中的每个元素的处理的确定。如果未完成,SIMD有限域乘法逆的处理在处理块2042中反复开始。否则在处理块2092中,SIMD仿射变换的结果存储在SIMD目的地寄存器中。
图20C图示用于执行仿射逆指令来提供通用GF(256)SIMD密码算法功能性的过程2003的一个实施例的流程图。在处理块2013中,对有限域中的SIMD仿射变换和逆的处理器仿射逆指令被解码。在处理块2016中,仿射逆指令的解码可选地生成微指令,例如对于有限域仿射映射1601的第一微指令,和对于有限域乘法逆1604的第二微指令;或备选地,对于有限域矩阵-向量乘法的第一微指令1601,后跟对于字节广播的第二微指令、对于有限域向量加法(XOR)1602的第三微指令和对于有限域乘法逆1604的第四微指令。在处理块2023中,访问元素的源数据操作数集。在处理块2033中,访问变换矩阵操作数。在处理块2043中,访问平移向量操作数。在处理块2053中,将变换矩阵操作数应用于源数据操作数集的每个元素。在处理块2063中,将平移向量操作数应用于源数据操作数集的每个变换元素。在处理块2073中,对源数据操作数集的每个仿射变换元素计算二进制有限域乘法逆。在处理块2083中,做出关于是否完成源数据操作数集中的每个元素的处理的确定。如果未完成,SIMD仿射变换和逆的处理在处理块2053中反复开始。否则在处理块2093中,SIMD仿射变换和乘法逆的结果存储在SIMD目的地寄存器中。
图20D图示用于执行二进制有限域乘法指令来提供通用GF(256)SIMD密码算法功能性的过程2004的一个实施例的流程图。在处理块2014中,对有限域中的SIMD乘法的处理器乘法指令解码。在处理块2016中,仿射逆指令的解码可选地生成微指令,例如对于有限域无进位乘法1913的第一微指令,和对于有限域模归约1917(例如1801-1804中的一个)的第二微指令。在处理块2024中,访问元素的第一源数据操作数集。在处理块2034中,访问元素的第二源数据操作数集。在处理块2044中,可选地明确识别不可约多项式。在一个实施例中,不可约多项式可例如在指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(256)中的多项式x8+x4+x3+x+1。在另一个实施例中,不可约多项式可例如在指令的立即操作数中规定为十六进制控制值FA来指示在GF(256)中的多项式x8+x7+x6+x5+x4+x2+1。在另一个备选实施例中,不可约多项式可在指令助记符中规定和/或明确识别。在处理块2054中,对于第一和第二源数据操作数集的对应元素中的每个计算对于对应元素对的乘积,并且在处理块2064中,对于第一和第二源数据操作数集的对应元素中的每个的乘积可选地以不可约多项式为模来归约。在处理块2084中,做出关于是否完成第一和第二源数据操作数集的对应元素中的每个的处理的确定。如果未完成,SIMD有限域乘法的处理在处理块2054中反复开始。否则在处理块2094中,SIMD有限域乘法的结果存储在SIMD目的地寄存器中。
将意识到尽管用于执行指令来提供通用SIMD密码算法功能性的过程可在上文图示为迭代的,各种处理块的一个或多个例示可并且优选地并发和/或并行执行(只要可能的话)以便增加执行性能和吞吐量。
将意识到通用GF(256)SIMD密码算法指令可用于在例如密码协议和互联网通信等应用中提供通用GF(256)SIMD密码算法功能性来对于金融交易、电子商务、电子邮件、软件分发、数据存储等确保数据完整性、身份证实、消息内容验证和报文源验证。
因此,还将意识到至少对于以下各项提供指令的执行:(1)规定源数据操作数、变换矩阵操作数和平移向量的SIMD仿射变换,其中变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个;(2)SIMD二进制有限域乘法逆,用于对于源数据操作数中的每个元素计算以不可约多项式为模的二进制有限域中的逆;(3)规定源数据操作数、变换矩阵操作数和平移向量的SIMD仿射变换和乘法逆(或乘法逆和仿射变换),其中在乘法逆运算之前或之后,变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用于变换元素中的每个;(4)模归约,用于计算以从二进制有限域中的多项式(对于其的模归约由指令(或微指令)提供)选择的特定模多项式ps为模的归约;(5)规定第一和第二源数据操作数的SIMD二进制有限域乘法,用于以不可约多项式为模使第一和第二源数据操作数中的每个对应元素对相乘;其中指令的结果存储在SIMD目的地寄存器中;可在硬件和/或微代码序列中提供通用GF(256)和/或其他备选二进制有限域SIMD密码算法功能性以便支持对于若干重要性能关键应用的显著性能提高,而没有需要额外电路、面积或功率的过多或过度功能单元。
本文公开的机构的实施例可在硬件、软件、固件或这样的实现方法的组合中实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(其包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
程序代码可应用于输入指令来执行本文描述的功能并且生成输出信息。该输出信息可采用已知方式应用于一个或多个输出设备。为了本应用,处理系统包括具有处理器的任何系统;例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可采用高级程序式或面向对象的编程语言实现来与处理系统通信。根据期望,程序代码还可采用汇编或机器语言实现。实际上,本文描述的机构在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,其代表处理器内的各种逻辑,其在被机器读取时促使该机器制造逻辑来执行本文描述的技术。这样的表示(称为“IP核”)可存储在有形的机器可读介质上并且供应给各种客户或制造设施来装入实际上制作逻辑或处理器的制造机器。
这样的机器可读存储介质可无限制地包括由机器或设备制造或形成的物品的非暂时性有形设置,其包括存储介质,例如硬盘、任何其他类型的盘(其包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘)、半导体器件例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁或光卡等,或适合于存储电子指令的任何类型的介质。
因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其限定本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可称作程序产品。
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、动态二进制翻译,其包括动态编译)、变换、仿真或用别的方式转换成要由核处理的一个或多个其他指令。指令转换器可在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、离开处理器或部分在处理器上并且部分离开处理器。
从而,公开用于执行根据至少一个实施例的一个或多个指令的技术。尽管某些示范性实施例已经在附图中描述和示出,要理解这样的实施例仅仅说明而不限制广义说明,并且本发明不限于示出和描述的特定构造和设置,因为在本领域内技术人员研究该公开时可想到各种其他修改。在像这样的技术的领域中,增长是快速的并且不容易预见进一步发展,公开的实施例通过实现技术发展而便利化从而从设置和细节方面能容易修改而不偏离本公开的原理或附上的权利要求的范围。
Claims (58)
1.一种处理器,其包括:
解码段,用于对单指令多数据SIMD仿射变换的第一指令解码,所述第一指令规定源数据操作数集、变换矩阵操作数和平移向量操作数;以及
一个或多个执行单元,其响应于解码的第一指令而用于:
通过对所述源数据操作数集中的每个元素应用所述变换矩阵操作数并且对所述源数据操作数集的每个变换元素应用所述平移向量操作数而执行SIMD仿射变换;以及
将所述第一指令的结果存储在SIMD目的地寄存器中。
2.如权利要求1所述的处理器,其中所述一个或多个执行单元响应于解码的第一指令而进一步用于:
对于所述源数据操作数集的每个仿射变换元素计算以特定不可约多项式为模的SIMD二进制有限域乘法逆。
3.如权利要求2所述的处理器,其中所述特定不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
4.如权利要求1所述的处理器,其中所述第一指令规定所述SIMD目的地寄存器作为目的地操作数。
5.如权利要求1所述的处理器,其中所述第一指令规定SIMD寄存器持有16个字节元素作为所述源数据操作数集。
6.如权利要求1所述的处理器,其中所述第一指令规定SIMD寄存器持有32个字节元素作为所述源数据操作数集。
7.如权利要求1所述的处理器,其中所述第一指令规定SIMD寄存器持有64个字节元素作为所述源数据操作数集。
8.如权利要求1所述的处理器,其中所述第一指令规定SIMD寄存器持有至少64个1位元素作为所述变换矩阵操作数。
9.如权利要求1所述的处理器,其中所述第一指令规定所述平移向量操作数作为立即操作数中的8位向量。
10.如权利要求1所述的处理器,其中对所述源数据操作数集中的每个元素应用所述变换矩阵操作数作为伽罗瓦域GF(28)中的矩阵乘法而执行。
11.如权利要求1所述的处理器,其中对所述源数据操作数集的每个变换元素应用所述平移向量操作数作为伽罗瓦域GF(28)中的向量加法而执行。
12.一种处理器,其包括:
解码段,用于对单指令多数据SIMD二进制有限域乘法逆的第一指令解码来生成第一微指令和第二微指令,所述第一指令规定源数据操作数集和首一不可约多项式;以及
一个或多个执行单元,其响应于解码的第一指令而用于:
根据所述第一微指令对所述源数据操作数集中的每个元素计算二进制有限域乘法逆元素;
根据所述第二微指令以所述首一不可约多项式为模使所述源数据操作数集的每个元素的二进制有限域乘法逆元素归约;以及
将所述第一指令的结果存储在SIMD目的地寄存器中。
13.如权利要求12所述的处理器,其中所述第一指令规定所述SIMD目的地寄存器作为目的地操作数。
14.如权利要求12所述的处理器,其中所述第一指令规定SIMD寄存器持有16个字节元素作为所述源数据操作数集。
15.如权利要求12所述的处理器,其中所述第一指令规定SIMD寄存器持有32个字节元素作为所述源数据操作数集。
16.如权利要求12所述的处理器,其中所述第一指令规定SIMD寄存器持有64个字节元素作为所述源数据操作数集。
17.如权利要求12所述的处理器,其中计算所述SIMD二进制有限域乘法逆通过使所述源数据操作数集中的每个元素提升到伽罗瓦域GF(28)中的以所述首一不可约多项式为模的幂254而执行。
18.如权利要求12所述的处理器,其中所述首一不可约多项式在所述第一指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
19.如权利要求12所述的处理器,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
20.如权利要求12所述的处理器,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值F5来指示在伽罗瓦域GF(28)中的x8+ x7+ x6+ x5+x4+x2+1。
21.一种处理器,其包括:
解码段,用于对单指令多数据SIMD二进制有限域乘法的第一指令解码,所述第一指令规定第一源数据操作数集、第二源数据操作数集和首一不可约多项式;以及
一个或多个执行单元,其响应于解码的第一指令而用于:
对于所述第一和第二源数据操作数集的每个对应元素对计算以所述首一不可约多项式为模的SIMD二进制有限域乘法;以及
将所述第一指令的结果存储在SIMD目的地寄存器中。
22.如权利要求21所述的处理器,其中所述第一指令规定所述SIMD目的地寄存器作为目的地操作数。
23.如权利要求21所述的处理器,其中所述第一指令规定SIMD寄存器持有16个字节元素作为所述第一和第二源数据操作数集。
24.如权利要求21所述的处理器,其中所述第一指令规定SIMD寄存器持有32个字节元素作为所述第一和第二源数据操作数集。
25.如权利要求21所述的处理器,其中所述第一指令规定SIMD寄存器持有64个字节元素作为所述第一和第二源数据操作数集。
26.如权利要求21所述的处理器,其中所述首一不可约多项式在所述第一指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
27.如权利要求21所述的处理器,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
28.如权利要求21所述的处理器,其中所述第一指令规定两个SIMD寄存器持有一个16字节元素作为所述第一和第二源数据操作数集中的每个。
29.如权利要求21所述的处理器,其中所述第一指令规定两个SIMD寄存器持有两个16字节元素作为所述第一和第二源数据操作数集中的每个。
30.如权利要求21所述的处理器,其中所述第一指令规定两个SIMD寄存器持有四个16字节元素作为所述第一和第二源数据操作数集中的每个。
31.如权利要求21所述的处理器,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值87来指示在伽罗瓦域GF(2128)中的x128+x7+x2+x+1。
32.一种提供密码算法功能性的方法,其包括:
由处理器对单指令多数据SIMD仿射变换的第一指令解码,所述第一指令规定源数据操作数集、变换矩阵操作数和平移向量操作数;
由处理器响应于解码的第一指令通过对所述源数据操作数集中的每个元素应用所述变换矩阵操作数并且对所述源数据操作数集的每个变换元素应用所述平移向量操作数而执行SIMD仿射变换;以及
由处理器将所述第一指令的结果存储在SIMD目的地寄存器中。
33.如权利要求32所述的方法,其进一步包括:
对于所述源数据操作数集的每个仿射变换元素计算以特定不可约多项式为模的SIMD二进制有限域乘法逆。
34.如权利要求32所述的方法,其中对所述源数据操作数集中的每个元素应用所述变换矩阵操作数作为伽罗瓦域GF(28)中的矩阵乘法而执行。
35.如权利要求32所述的方法,其中对所述源数据操作数集中的每个变换元素应用所述平移向量操作数作为伽罗瓦域GF(28)中的向量加法而执行。
36.一种提供密码算法功能性的方法,其包括:
由处理器对单指令多数据SIMD二进制有限域乘法逆的第一指令解码来生成第一微指令和第二微指令,所述第一指令规定源数据操作数集和首一不可约多项式;
由处理器根据所述第一微指令对所述源数据操作数集中的每个元素计算二进制有限域乘法逆元素;
由处理器根据所述第二微指令以所述首一不可约多项式为模使所述源数据操作数集中的每个元素的二进制有限域乘法逆元素归约;以及
由处理器将所述第一指令的结果存储在SIMD目的地寄存器中。
37.如权利要求36所述的方法,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
38.如权利要求36所述的方法,其中所述首一不可约多项式在所述第一指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
39.一种提供密码算法功能性的方法,其包括:
由处理器对单指令多数据SIMD二进制有限域乘法的第一指令解码,所述第一指令规定第一源数据操作数集、第二源数据操作数集和首一不可约多项式;
由处理器响应于解码的第一指令,对于所述第一和第二源数据操作数集的每个对应元素对计算以所述首一不可约多项式为模的SIMD二进制有限域乘法;以及
由处理器将所述第一指令的结果存储在SIMD目的地寄存器中。
40.如权利要求39所述的方法,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
41.如权利要求39所述的方法,其中所述首一不可约多项式在所述第一指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
42.一种处理系统,其包括:
存储器,用于存储对于SIMD安全散列算法轮转片的第一指令;以及
处理器,其包括:
指令提取段,用于提取所述第一指令;
解码段,用于对单指令多数据SIMD仿射变换的第一指令解码,所述第一指令规定源数据操作数集、变换矩阵操作数和平移向量操作数;
一个或多个执行单元,其响应于解码的第一指令而用于:
通过对所述源数据操作数集中的每个元素应用所述变换矩阵操作数并且对所述源数据操作数集的每个变换元素应用所述平移向量操作数而执行SIMD仿射变换;以及
将所述第一指令的结果存储在SIMD目的地寄存器中。
43.如权利要求42所述的处理系统,其中所述一个或多个执行单元响应于所述解码的第一指令而进一步用于:
对于所述源数据操作数集的每个仿射变换元素计算以特定不可约多项式为模的SIMD二进制有限域乘法逆。
44.如权利要求42所述的处理系统,其中所述解码段对SIMD二进制有限域乘法逆的第二指令解码来生成第一微指令和第二微指令,所述第二指令规定第二源数据操作数集和首一不可约多项式;并且
所述一个或多个执行单元,响应于解码的第二指令而用于:
根据所述第一微指令对所述源数据操作数集中的每个元素计算二进制有限域乘法逆元素;
根据所述第二微指令以所述首一不可约多项式为模使所述源数据操作数集中的每个元素的二进制有限域乘法逆元素归约;以及
将所述第二指令的结果存储在第二SIMD目的地寄存器中。
45.如权利要求44所述的处理系统,其中所述首一不可约多项式在所述第二指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
46.如权利要求42所述的处理系统,其中所述解码段对SIMD二进制有限域乘法的第二指令解码,所述第二指令规定第二源数据操作数集、第三源数据操作数集和首一不可约多项式;并且
所述一个或多个执行单元,响应于解码的第二指令而用于:
对于所述第二和第三源数据操作数集的每个对应元素对计算以所述首一不可约多项式为模的SIMD二进制有限域乘法;以及
将所述第二指令的结果存储在第二SIMD目的地寄存器中。
47.如权利要求46所述的处理系统,其中所述首一不可约多项式在所述第二指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
48.一种提供密码算法功能性的装置,其包括:
用于对单指令多数据SIMD仿射变换的第一指令解码的部件,所述第一指令规定源数据操作数集、变换矩阵操作数和平移向量操作数;
用于响应于解码的第一指令通过对所述源数据操作数集中的每个元素应用所述变换矩阵操作数并且对所述源数据操作数集的每个变换元素应用所述平移向量操作数而执行SIMD仿射变换的部件;以及
用于将所述第一指令的结果存储在SIMD目的地寄存器中的部件。
49.如权利要求48所述的装置,其进一步包括:
对于所述源数据操作数集的每个仿射变换元素计算以特定不可约多项式为模的SIMD二进制有限域乘法逆。
50.如权利要求48所述的装置,其中对所述源数据操作数集中的每个元素应用所述变换矩阵操作数作为伽罗瓦域GF(28)中的矩阵乘法而执行。
51.如权利要求48所述的装置,其中对所述源数据操作数集中的每个变换元素应用所述平移向量操作数作为伽罗瓦域GF(28)中的向量加法而执行。
52.一种提供密码算法功能性的装置,其包括:
用于对单指令多数据SIMD二进制有限域乘法逆的第一指令解码来生成第一微指令和第二微指令,所述第一指令规定源数据操作数集和首一不可约多项式的部件;
用于根据所述第一微指令对所述源数据操作数集中的每个元素计算二进制有限域乘法逆元素的部件;
用于根据所述第二微指令以所述首一不可约多项式为模使所述源数据操作数集中的每个元素的二进制有限域乘法逆元素归约的部件;以及
用于将所述第一指令的结果存储在SIMD目的地寄存器中的部件。
53.如权利要求52所述的装置,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
54.如权利要求52所述的装置,其中所述首一不可约多项式在所述第一指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
55.一种提供密码算法功能性的装置,其包括:
用于对单指令多数据SIMD二进制有限域乘法的第一指令解码,所述第一指令规定第一源数据操作数集、第二源数据操作数集和首一不可约多项式的部件;
用于响应于解码的第一指令,对于所述第一和第二源数据操作数集的每个对应元素对计算以所述首一不可约多项式为模的SIMD二进制有限域乘法的部件;以及
用于将所述第一指令的结果存储在SIMD目的地寄存器中的部件。
56.如权利要求55所述的装置,其中所述首一不可约多项式在所述第一指令的立即操作数中规定为十六进制控制值1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
57.如权利要求55所述的装置,其中所述首一不可约多项式在所述第一指令助记符中规定为1B来指示在伽罗瓦域GF(28)中的x8+x4+x3+x+1。
58.一种存储介质,具有存储在其上的指令,所述指令在执行时促使处理器执行如权利要求32-41中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/316,624 US9960907B2 (en) | 2007-12-28 | 2014-06-26 | Instruction for Performing SIMD affine transformation |
US14/316624 | 2014-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302522A CN105302522A (zh) | 2016-02-03 |
CN105302522B true CN105302522B (zh) | 2019-07-26 |
Family
ID=55169499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510272957.6A Active CN105302522B (zh) | 2014-06-26 | 2015-05-26 | 提供通用gf(256)simd密码算法功能性的指令和逻辑 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR101753467B1 (zh) |
CN (1) | CN105302522B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857819B (zh) * | 2016-04-26 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
US20180088946A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatuses, methods, and systems for mixing vector operations |
WO2018174931A1 (en) * | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and appartus for tile configuration |
US10534838B2 (en) * | 2017-09-29 | 2020-01-14 | Intel Corporation | Bit matrix multiplication |
FR3076925B1 (fr) * | 2018-01-16 | 2020-01-24 | Proton World International N.V. | Fonction cryptographique |
CN110278070B (zh) * | 2018-03-13 | 2022-07-15 | 中国科学技术大学 | 一种sm4算法中s盒的实现方法及装置 |
CN111384971B (zh) * | 2018-12-29 | 2023-09-01 | 泰斗微电子科技有限公司 | 有限域中的数据处理方法、装置和解码器 |
CN116458119B (zh) * | 2020-11-19 | 2024-09-10 | 日本电信电话株式会社 | 估计装置、估计方法以及记录介质 |
CN113642056B (zh) * | 2021-07-08 | 2024-03-26 | 安徽省水利水电勘测设计研究总院股份有限公司 | 用于MicroStation平台的参数化构件生成、修改方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081514A (zh) * | 2011-01-24 | 2011-06-01 | 山东大学 | AES加密算法中Sbox生成指令优化方法及其指令集处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6766344B2 (en) * | 2001-05-08 | 2004-07-20 | International Business Machines Corporation | Processing Galois Field arithmetic |
US7343389B2 (en) * | 2002-05-02 | 2008-03-11 | Intel Corporation | Apparatus and method for SIMD modular multiplication |
US7254679B2 (en) | 2004-08-04 | 2007-08-07 | Infineon Technologies Ag | Computer system for data processing and method for the transfer of an array segment of an affine-indexed multi-dimensional array referenced in a loop nest from a first memory to a second memory |
US8923510B2 (en) | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
-
2015
- 2015-05-26 KR KR1020150073217A patent/KR101753467B1/ko active IP Right Grant
- 2015-05-26 CN CN201510272957.6A patent/CN105302522B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081514A (zh) * | 2011-01-24 | 2011-06-01 | 山东大学 | AES加密算法中Sbox生成指令优化方法及其指令集处理器 |
Also Published As
Publication number | Publication date |
---|---|
KR101753467B1 (ko) | 2017-07-03 |
CN105302522A (zh) | 2016-02-03 |
KR20160001623A (ko) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302522B (zh) | 提供通用gf(256)simd密码算法功能性的指令和逻辑 | |
TWI595376B (zh) | 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統 | |
US11849035B2 (en) | Instructions and logic to provide SIMD SM4 cryptographic block cipher | |
CN105409158B (zh) | 提供安全密码散列回合功能的处理器和方法 | |
TWI550433B (zh) | 用以提供simd sm3密碼雜湊函數的指令與邏輯 | |
CN104641346B (zh) | 用于在128位数据路径上的sha1轮处理的指令集 | |
CN104484284B (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN105190535B (zh) | 执行伪随机数产生操作的指令 | |
CN104126174B (zh) | 执行groestl散列的指令 | |
CN110233720A (zh) | Sm4加速处理器、方法和系统 | |
CN107667499A (zh) | 带密钥散列消息认证码处理器、方法、系统和指令 | |
CN105204820B (zh) | 用于提供通用gf(256)simd加密算术功能的指令和逻辑 | |
CN110138541A (zh) | 用于对称密钥密码的统一硬件加速器 | |
CN106802788A (zh) | 用于处理sha‑2安全散列算法的方法和设备 | |
CN108228960A (zh) | 用于熔丝验证的基于Simon的散列 | |
CN109479003A (zh) | 安全椭圆曲线密码指令 | |
KR102456395B1 (ko) | Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직 |
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 |