提供通用gf(256)simd密码算法功能性的指令和逻辑的制作方法

文档序号:9546907阅读:525来源:国知局
提供通用gf(256)simd密码算法功能性的指令和逻辑的制作方法
【技术领域】
[0001] 本公开关于处理逻辑、微处理器和关联指令集架构的领域,该指令集架构在由处 理器或其他处理逻辑执行时执行逻辑、数学或其他功能操作。特别地,本公开涉及提供通用 GF (256) S頂D密码算法功能性的指令和逻辑。
【背景技术】
[0002] 密码术(cryptology)是依靠算法和密钥来保护信息的工具。该算法是复杂的数 学算法并且密钥是位串。存在两个基本类型的密码术系统:私钥系统(secret key)和公钥 系统。私钥系统也称为对称系统,其具有被两个或以上团体共享的单个密钥("私钥")。该 单个密钥用于既加密信息又对信息解密。
[0003] 例如,高级加密标准(AES)(也称为Ri jndael)是由两个比利时译码者Joan Daemen 和Vincent Rijmen开发并且作为加密标准被美国政府采用的分组密码(block cipher)。 AES由美国国家标准和技术研究所(NIST)在2001年11月26日作为U. S. FIPS PUB 197 (FIPS 197)宣布。
[0004] AES具有128位的固定块大小和128、192或256位的密钥大小。使用Ri jndael的 密钥调度的密钥扩展将大小为128、192或256位的密钥变换成具有128个位的10、12或14 个轮回密钥(round key)。轮回密钥用于轮回处理明文数据作为128位块(看作4x4字节阵 列)并且将它们转换成密文块。典型地,对于对轮回的128位输入(16个字节),每个字节根 据叫作S盒的查找表而被另一个字节取代。分组密码的该部分叫作SM办?α。接着,字节 的行(看作4x4阵列)被循环移位并且左旋特定偏移(即,行0是0个字节、行一是1个字节、 行二是2个字节并且行三是3个字节)。分组密码的该部分叫作5^了沈 〇^。然后,字节列 中的每个看作有限域中的多项式GE(256)(也叫作伽罗瓦域2s)的四个系数,并且乘以可逆 线性变换。分组密码的该部分叫作MixColumns。最后,128位块与轮回密钥异或(XOR)来 产生具有16个字节的密文块,其叫作
[0005] 在具有32位或更大字的系统上,通过将SubBytes、ShiftRows和MixColumns变换 转换成四个256条目32位的表(其使用存储器的4096个字节)来实现AES密码,这是可能 的。软件实现的一个缺点是性能。软件运行起来比专门硬件要慢若干数量级,因此具有增 加的硬件/固件实现性能,这是可取的。
[0006] 使用查找存储器、真值表、二元决策图或256个输入复用器的典型简单硬件实现 从电路面积方面是昂贵的。使用与GF(256)同构的有限域的备选方法在面积上可以是高效 的,但也可比简单硬件实现更慢。
[0007] 现代的处理器通常包括指令,用于提供计算密集的操作,但提供高级数据并行,其 可以通过使用各种数据存储设备(例如,单指令多数据(SMD)向量寄存器)的高效实现而被 利用。中央处理单元(CPU)然后可提供并行硬件来支持处理向量。向量是持有许多连续数 据元素的数据结构。大小为M的向量寄存器(其中M是2 k,例如256、128、64、32、"·4或2) 可包含大小为0的N个向量元素,其中Ν=Μ/0。例如,64字节向量寄存器可分成(a)64个向 量元素,其中每个元素持有占据1个字节的数据项,(b)32个向量元素,用于持有数据项,每 个占据2个字节(或一个"字"),(c)16个向量元素,用于持有数据项,每个占据4个字节(或 一个"双字"),或(d) 8个向量元素,用于持有数据项,每个占据8个字节(或一个"四字")。 SHffi向量寄存器中的并行性质可以很好地适应安全散列算法的处理。
[0008] 也对其他相似加密算法感兴趣。例如,Rijndael规范本质上用各种块和密钥大小 (其可以是32位的任意倍数,两者都具有128位的最小值和256位的最大值)来规定。另一 个示例是SMS4 :在中国无线LAN WAPI (有线认证和私密基础设施)国家标准中使用的分组 密码。它还轮回处理明文数据(即,32)作为GF(256)中的128位块,但执行以不同多项式为 模的归约。
[0009] 迄今为止,提供高效空间-时间设计权衡的选项和对于这样的复杂性、性能限制 问题和其他瓶颈的潜在技术方案还未被完全探究。
【附图说明】
[0010] 本发明通过示例并且没有限制地在附图的图中图示。
[0011] 图IA是执行指令来提供通用GF (256) SHffi密码算法功能性的系统的一个实施例 的框图。
[0012] 图IB是执行指令来提供通用GF (256) S頂D密码算法功能性的系统的另一个实施 例的框图。
[0013] 图IC是执行指令来提供通用GF (256) SHffi密码算法功能性的系统的另一个实施 例的框图。
[0014] 图2是执行指令来提供通用GF (256) S頂D密码算法功能性的处理器的另一个实 施例的框图。
[0015] 图3A图示根据一个实施例的封装数据类型。
[0016] 图3B图示根据一个实施例的封装数据类型。
[0017] 图3C图示根据一个实施例的封装数据类型。
[0018] 图3D图示根据一个实施例提供通用GF(256) S頂D密码算法功能性的指令编码。
[0019] 图3E图示根据另一个实施例提供通用GF(256) SHffi密码算法功能性的指令编 码。
[0020] 图3F图示根据另一个实施例提供通用GF(256) S頂D密码算法功能性的指令编 码。
[0021] 图3G图示根据另一个实施例提供通用GF(256) SHffi密码算法功能性的指令编 码。
[0022] 图3H图示根据另一个实施例提供通用GF(256) S頂D密码算法功能性的指令编 码。
[0023] 图4A图示执行指令来提供通用GF (256) S頂D密码算法功能性的处理器微架构的 一个实施例的元素。
[0024] 图4B图示执行指令来提供通用GF(256) SHffi密码算法功能性的的处理器微架构 的另一个实施例的元素。
[0025] 图5图示执行指令来提供通用GF(256) S頂D密码算法功能性的处理器的一个实 施例的元素。
[0026] 图6是执行指令来提供通用GF (256) S頂D密码算法功能性的计算机系统的一个 实施例的框图。
[0027] 图7是执行指令来提供通用GF(256) S頂D密码算法功能性的计算机系统的另一 个实施例的框图。
[0028] 图8是执行指令来提供通用GF(256) S頂D密码算法功能性的计算机系统的另一 个实施例的框图。
[0029] 图9是执行指令来提供通用GF (256) S頂D密码算法功能性的芯片上系统的一个 实施例的框图。
[0030] 图10是执行指令来提供通用GF (256) SHffi密码算法功能性的处理器的实施例的 框图。
[0031] 图11是提供通用GF(256) S頂D密码算法功能性的IP核开发系统的一个实施例 的框图。
[0032] 图12图示提供通用GF(256) SHffi密码算法功能性的架构仿真系统的一个实施 例。
[0033] 图13图示转换指令提供通用GF(256) SHffi密码算法功能性的系统的一个实施 例。
[0034] 图14图示用于高效实现高级加密标准(AES)加密/解密标准的过程的一个实施 例的流程图。
[0035] 图15图示用于高效实现AES S盒的乘法逆的过程的一个实施例的流程图。
[0036] 图16A图示用于执行仿射映射指令(affine map instruction)来提供通用 GF (256) SHffi密码算法功能性的装置的一个实施例的图。
[0037] 图16B图示用于执行仿射逆指令来提供通用GF (256) S頂D密码算法功能性的装 置的一个实施例的图。
[0038] 图17A图示用于执行有限域乘法逆指令来提供通用GF(256) S頂D密码算法功能 性的装置的一个实施例的图。
[0039] 图17B图示用于执行有限域乘法逆指令来提供通用GF(256) S頂D密码算法功能 性的装置的备选实施例的图。
[0040] 图17C图示用于执行有限域乘法逆指令来提供通用GF(256) S頂D密码算法功能 性的装置的另一个备选实施例的图。
[0041] 图18A图不用于执行特定模归约指令(modulus reduction instruction)来提供 通用GF (256) SHffi密码算法功能性的装置的一个实施例的图。
[0042] 图18B图示用于执行特定模归约指令来提供通用GF (256) S頂D密码算法功能性 的装置的备选实施例的图。
[0043] 图18C图示用于执行特定AES伽罗瓦计数器模式(GCM)模归约指令来提供GF(2128) SIMD密码算法功能性的装置的另一个备选实施例的图。
[0044] 图18D图示用于执行特定模归约指令来提供通用GF (2, S頂D密码算法功能性的 装置的一个实施例的图。
[0045] 图19A图示用于执行二进制有限域乘法指令来提供通用GF (256) S頂D密码算法 功能性的装置的一个实施例的图。
[0046] 图19B图示用于执行二进制有限域乘法指令来提供通用GF (256) S頂D密码算法 功能性的装置的备选实施例的图。
[0047] 图20A图示用于执行仿射映射指令来提供通用GF (256) S頂D密码算法功能性的 过程的一个实施例的流程图。
[0048] 图20B图示用于执行有限域乘法逆指令来提供通用GF(256) S頂D密码算法功能 性的过程的一个实施例的流程图。
[0049] 图20C图示用于执行仿射逆指令来提供通用GF (256) S頂D密码算法功能性的过 程的一个实施例的流程图。
[0050] 图20D图示用于执行二进制有限域乘法指令来提供通用GF (256) S頂D密码算法 功能性的过程的一个实施例的流程图。
【具体实施方式】
[0051] 下列描述公开用于提供通用GF(2n) SHffi密码算法功能性的指令和处理逻辑,特 别地其中11可等于2"1(例如,6?(28)、6?(216)、6?(2 32)、~6?(2128),等)。实施例包括处理 器,用于解码指令用于SHffi仿射变换,其规定源数据操作数、变换矩阵操作数和平移向量 (translation vector)。变换矩阵应用于源数据操作数中的每个元素,并且平移向量应用 于变换元素中的每个。指令的结果存储在SHffi目的地寄存器中。一些实施例还解码指令, 用于SHffi二进制有限域乘法逆,用于对于源数据操作数的每个元素计算以不可约多项式 为模的二进制有限域中的逆。一些实施例还解码指令,用于SHffi仿射变换和乘法逆(或乘 法逆和仿射变换),其中在乘法逆运算之前或之后,变换矩阵应用于源数据操作数中的每个 元素,并且平移向量应用于变换元素中的每个。一些实施例还解码指令,用于SHffi模归约, 用于计算以特定模多项式ps为模的归约,该特定模多项式ps选自二进制有限域中的多项 式(对其的模归约由该指令(或微指令)提供)。一些实施例还解码指令,用于S頂D二进制有 限域乘法,其规定第一和第二源数据操作数,用于以不可约多项式为模将第一和第二源数 据操作数的每个对应元素对相乘。
[0052] 将意识到通用GF (2n) S頂D密码算法指令如与本文描述的实施例中的一样可用于 在例如密码协议和互联网通信等应用中提供密码算法功能性来对于金融交易、电子商务、 电子邮件、软件分发、数据存储等确保隐私、数据完整性、身份证实、消息内容验证和报文源 验证。
[0053] 还将意识到至少对于以下各项提供指令的执行:(1)规定源数据操作数、变换矩 阵操作数和平移向量的SIMD仿射变换,其中变换矩阵应用于源数据操作数中的每个元素, 并且平移向量应用于变换元素中的每个;(2) SHffi二进制有限域乘法逆,用于对于源数据 操作数中的每个元素计算以不可约多项式为模的二进制有限域中的逆;(3)规定源数据操 作数、变换矩阵操作数和平移向量的SHffi仿射变换和乘法逆(或乘法逆和仿射变换),其中 在乘法逆运算之前或之后,变换矩阵应用于源数据操作数中的每个元素,并且平移向量应 用于变换元素中的每个;(4)模归约,用于计算以特定模多项式p s为模的归约,该特定模多 项式?;3选自二进制有限域中的多项式(对于其的模归约由该指令(或微指令)提供);(5)规 定第一和第二源数据操作数的SHffi二进制有限域乘法,用于以不可约多项式为模使第一 和第二源数据操作数的每个对应元素对相乘;其中指令的结果存储在sn?目的地寄存器 中;可在硬件和/或微代码序列中提供通用GF(256)和/或其他备选二进制有限域SHffi 密码算法功能性以便支持对于若干重要性能关键应用的显著性能提高,而无需要求额外电 路、面积或功率的过多或过度功能单元。
[0054] 在下列描述中,阐述许多特定细节,例如处理逻辑、处理器类型、微架构条件、事 件、使能机构及类似物,以便提供对本发明的实施例的更全面理解。然而,本领域内技术人 员将意识到本发明可在没有这样的特定细节的情况下实践。另外,未详细示出一些众所周 知的结构、电路及类似物以避免不必要地混淆本发明的实施例。
[0055] 尽管下列实施例参考处理器描述,其他实施例能适用于其他类型的集成电路和逻 辑设备。本发明的实施例的相似技术和教导可以适用于其他类型的电路或半导体器件,其 可以从较高流水线吞吐量和提高的性能中获益。本发明的实施例的教导能适用于执行数据 操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、16 位或8位数据操作的处理器或机器并且可以应用于其中执行数据操纵或管理的任何处理 器和机器。另外,下列描述提供示例,并且附图为了说明目的示出各种示例。然而,因为这 些示例仅规定成提供本发明的实施例的示例而不提供本发明的实施例的所有可能实现的 详尽列表,不应在限制性意义上解释它们。
[0056] 尽管下面的示例在执行单元和逻辑电路的上下文中描述指令处理和分发,本发明 的其他实施例可以通过存储在机器可读、有形介质上的数据和/或指令来完成,这些数据 和/或指令在由机器执行时促使该机器执行与本发明的至少一个实施例一致的功能。在一 个实施例中,与本发明的实施例关联的功能在机器可执行指令中体现。指令可以用于促使 用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可作为计算机程序产 品或软件提供,其可包括具有存储在其上的指令的机器或计算机可读介质,这些指令可用 于对计算机(或其他电子设备)编程来执行根据本发明的实施例的一个或多个操作。备选 地,本发明的实施例的步骤可由特定硬件部件(其包含用于执行步骤的固定功能逻辑)或由 编程计算机部件和固定功能硬件部件的任何组合执行。
[0057]用于对逻辑编程来执行本发明的实施例的指令可以存储在系统中的存储器内,例 如DRAM、高速缓存、闪存或其他存储。此外,这些指令可以经由网络或通过其他计算机可读 介质而分发。从而机器可读介质可包括用于采用可由机器(例如,计算机)读取的形式存储 或传送信息的任何机构,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读 存储器(R0M)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPR0M)、电可擦除可编程 只读存储器(EEPR0M)、磁或光卡、闪存或有形的机器可读存储,其在经由电、光、声或其他形 式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传送信息中使用。因此,计算 机可读介质包括任何类型的有形机器可读介质,其适合于采用可由机器(例如,计算机)读 取的形式存储或传送电子指令或信息。
[0058] 设计可历经各种阶段,从创建到模拟到制造。代表设计的数据可采用许多方式代 表数据。首先,如在模拟中有用的,硬件可使用硬件描述语言或另一个功能描述语言来表 示。另外,具有逻辑和/或晶体管门的电路级模型可在设计过程的某些阶段产生。此外,大 部分设计在某一阶段达到代表硬件模型中各种设备的物理布局的数据级别。在使用常规半 导体制造技术的情况下,代表硬件模型的数据可以是规定对于用于产生集成电路的掩模的 不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,数据可采用机器可 读介质的任何形式存储。存储器或磁或光存储(例如盘)可以是用于存储经由光或电波传送 的信息的机器可读介质,调制或用别的方式产生该光或电波来传送这样的信息。当传送指 示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重传来说,做出新的复制。 从而,通信提供商或网络提供商可将例如编码到载波内的信息等体现本发明的实施例的技 术的物品至少暂时存储在有形的机器可读介质上。
[0059] 在现代处理器中,许多不同的执行单元用于处理并且执行多种代码和指令。不是 所有的指令创建时都相同,因为一些完成起来更快而其他可以花费许多时钟周期来完成。 指令的吞吐量越快,处理器的总性能越好。从而,使尽可能多的指令尽可能快地执行,这将 是有利的。然而,存在某些指令,其具有较大复杂性并且从执行时间和处理器资源方面需要 更多。例如,存在浮点指令、加载/存储操作、数据移动等。
[0060] 因为更多的计算机系统在互联网、文本和多媒体应用中使用,随时间引入额外处 理器支持。在一个实施例中,指令集可与一个或多个计算机架构关联,其包括数据类型、指 令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
[0061] 在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,其包括用于实现 一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可以共享共同指 令集的至少一部分。例如,Intel? Pentium 4处理器、Intel? Core?处理器和来自加利福 尼亚州Sunnyvale的Advanced Micro Devices, Inc.的处理器实现x86指令集的几乎相 同版本(具有增加有较新版本的一些扩展),但具有不同的内部设计。相似地,由其他处理器 开发公司(例如ARM Holdings, Ltd.、MIPS,或它们的被许可方或采纳者)设计的处理器 可共享共同指令集的至少一部分,但可包括不同的处理器设计。例如,ISA的相同寄存器架 构可采用不同方式在不同微架构中使用新的或众所周知的技术实现,其包括专用物理寄存 器、一个或多个动态分配物理寄存器,其使用寄存器重命名机制(例如,使用寄存器别名表 (RAT )、重排序缓冲器(ROB )和引退寄存器文件)。在一个实施例中,寄存器可包括一个或多 个寄存器、寄存器架构、寄存器文件或可能被或不能被软件程序员寻址的其他寄存器组。 [0062] 在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可 指示各种字段(位数量、位位点,等),以除其他外还规定要执行的操作和要执行操作所针对 的操作数。一些指令格式可被指令模板(或子格式)进一步分开定义。例如,指定指令格式 的指令模板可定义成具有指令格式字段的不同子集和/或定义成具有不同解释的指定字 段。在一个实施例中,指令使用指令格式(并且,如果被定义的话,在该指令格式的指令模板 中的指定模板中)来表达并且规定或指示操作以及操作将作用于其上的操作数。
[0063] 科学、金融、自动向量化通用RMS (识别、采掘和合成)以及视觉和多媒体应用(例 如,2D/3D图形、图像处理、视频压缩/解压、视频识别算法和音频操纵)可需要对大量数据 项执行相同操作。在一个实施例中,单指令多数据(S頂D)指的是促使处理器对多个数据元 素执行操作的指令类型。SHffi技术可在可以将寄存器中的位逻辑划分成许多大小固定或 大小可变的数据元素(其中的每个代表独立值)的处理器中使用。例如,在一个实施例中,64 位寄存器中的位可组织为源操作数,其包含四个独立16位数据元素,其中的每个代表独立 16位值。该类型的数据可称为'封装'数据类型或'向量'数据类型,并且具有该数据类型 的操作数称为封装数据操作数或向量操作数。在一个实施例中,封装数据项或向量可以是 存储在单个寄存器内的封装数据元素序列,并且封装数据操作数或向量操作数可以是sn? 指令(或'封装数据指令'或'向量指令')的源或目的地操作数。在一个实施例中,SIMD指 令规定要对两个源向量操作数执行来生成具有相同或不同大小、相同或不同数量的数据元 素并且处于相同或不同数据元素顺序的目的地向量操作数(也称为结果向量操作数)的单 向量运算。
[0064] 例如由具有指令集(其包括x86、MMXTM、流播S頂D扩展(SSE)、SSE2、SSE3、SSE4.1 和SSE4. 2指令)的Intel? Core ?处理器、ARM处理器(例如ARM Cortex?系列处理器(具有 包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(例如由中国科学院计算技 术研究所(ICT)开发的Loongson系列处理器)采用的SHffi技术实现应用性能的显著提高 (Core?和Core?是加利福尼亚州Santa Clara的Intel Corporation的注册商标或商标)。 [0065] 在一个实施例中,目的地和源寄存器/数据是表示对应数据或操作的源和目的地 的通称。在一些实施例中,它们可由寄存器、存储器或具有除描述的那些以外的名称或功能 的其他存储区实现。例如,在一个实施例中," DEST1"可以是暂时存储寄存器或其他存储区, 而"SRC1"和"SRC2"可以是第一和第二源存储寄存器或其他存储区,等等。在其他实施例 中,SRC和DEST存储区中的两个或以上可对应于相同存储区(例如,SHffi寄存器)内的不同 数据存储元素。在一个实施例中,源寄存器中的一个还可通过例如将对第一和第二源数据 执行的操作的结果写回充当目的地寄存器的两个源寄存器中的一个而充当目的地寄存器。 [0066] 图IA是用包括执行单元来执行根据本发明的一个实施例的指令的处理器形成的 示范性计算机系统的框图。系统100包括例如处理器102的部件,用于采用执行单元(其包 括逻辑)以根据本发明(例如在本文描述的实施例中)对于过程数据执行算法。系统100代表 基于 PENTIUM? III、PENTIU]\f 4、Xeon
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1