用于执行jh加密散列的指令的制作方法

文档序号:7978651阅读:472来源:国知局
用于执行jh加密散列的指令的制作方法
【专利摘要】描述了一种方法。该方法包括执行一个或多个JH_SBOX_L指令以在JH状态上执行S-Box映射和线性(L)变换,且一旦已经执行了S-Box映射和L变换就执行一个或多个JH_Permute指令来在JH状态上执行置换函数。
【专利说明】用于执行JH加密散列的指令
【技术领域】
[0001]本公开涉及加密算法,且特定地涉及JH散列算法。
【背景技术】
[0002]密码学是依赖于算法的工具且是保护信息的关键。算法是复杂的数学算法且密钥是位的串(string of bits)。有两种基本类型的加密系统:秘密密钥系统和公共密钥系统。秘密密钥系统也被称为对称系统,具有由两方或更多方共享的单个密钥(“秘密密钥”)。该单个密钥既用于加密信息也用于解密信息。
[0003]JH散列函数(JH)是一种加密函数,该加密函数已经针对国家标准与技术协会(NIST)散列函数竞争而提交来发展新的SHA-3函数以替代较旧的SHA-1和SHA-2。JH是基于包括四个变型(JH-224、JH-256、JH-384、和JH-512)的算法,可产生不同大小的摘要(digest)。然而,JH的每一个变型实现相同的压缩函数。
[0004]目前,可在通用目的处理器上使用流SMD扩展(SSE)或高级向量扩展(AVX)中的指令来执行JH。无论如何,这样的应用可要求实行高达30个指令来执行JH算法。
【专利附图】

【附图说明】
[0005]可结合附图从以下详细描述中获得对本发明的更好理解,其中:
[0006]图1是示出系统的一个实施例的框图;
[0007]图2是示出处理器的一个实施例的框图;
[0008]图3是示出打包数据寄存器的一个实施例的框图;
[0009]图4示出所得半字节置换的一个实施例;
[0010]图5是示出由指令执行的过程的一个实施例的流程图;
[0011]图6是示出由指令执行的过程的一个实施例的流程图;
[0012]图7示出使用指令的两轮次JH的实施例;
[0013]图8是根据本发明的一个实施例的寄存器架构的框图;
[0014]图9A是根据本发明的实施例的连接到管芯上互联网络且具有第二级(L2)高速缓存的本地子集的单CPU核的框图;
[0015]图9B是根据本发明的各实施例的CPU核的一部分的展开图;
[0016]图10是示出根据本发明的实施例的示例性无序架构的框图;
[0017]图11是根据本发明一个实施例的系统的框图;
[0018]图12是根据本发明的实施例的第二系统的框图;
[0019]图13是根据本发明的实施例的第三系统的框图;
[0020]图14是根据本发明的实施例的片上系统(SoC)的框图;
[0021]图15是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器的框图;且
[0022]图16是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制 指令转换成目标指令集中的二进制指令的框图。
【具体实施方式】
[0023]在下文描述中,出于说明目的,阐述了众多具体细节以便提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的某些也可实施本发明。在其他实例中,众所周知的结构和设备以框图形式示出,以避免淡化本发明的底层原理。
[0024]在本说明书中,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
[0025]描述了包括处理JH散列算法的指令的机制。根据一个实施例,经由AVX指令集内的指令来实现JH散列算法。AVX指令集是x86指令集架构(ISA)的扩展,这从128位增加了寄存器组。
[0026]图1是系统100的一个实施例的框图,系统100包括用于在通用目的处理器中执行JH加密和解密的AVX指令集扩展。
[0027]系统100包括处理器101、存储控制器中枢(MCH) 102、和输入/输出(I/O)控制器中枢(ICH) 104。MCH102包括控制处理器101和存储器108之间的通信的存储控制器106。处理器101和MCH102在系统总线116上通信。
[0028]处理器101可以是多个处理器中的任一个,这些处理器诸如单核Intel?奔腾IV?处理器、单核Intel Celeron处理器、Intel?: XScale处理器或多核处理器,诸如 Intel? 奔腾 D、Intel? Xeon? 处理器 Intel? Core? i3, i5, i7, 2Duo 和 Quad、Xeon?, Itanium R处理器、或者任何其他类型的处理器。
[0029]存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双数据率2 (DDR2) RAM、或Rambus动态随机存取存储器(RDRAM)、或任何其他类型的存储器。
[0030]使用高速芯片-对-芯片互连114 (诸如直接媒体接口(DMI)),ICH104可耦合至MCH102。经由两个单向通道,DMI支持2吉比特/秒的并发传输速率。
[0031]ICH104可包括存储器I/O控制器110,用于控制与耦合至ICH104的至少一个存储设备112的通信。存储设备可包括,例如,盘驱动器、数字多功能盘(DVD)驱动器、紧凑盘(CD)驱动器、独立磁盘冗余阵列(RAID)、磁带驱动器、或其他存储设备。使用串行存储协议,诸如串行附接小型计算机系统接口(SAS)或串行高级技术附接(SATA),在存储协议互连118上,ICH104可与存储设备112通信。
[0032]在一个实施例中,处理器101包括JH函数103,用于执行JH加密和解密操作。可使用JH函数103来对存储于存储器108和/或存储于存储设备112内的信息进行加密或解密。
[0033]图2是示出处理器101的一个实施例的框图。处理器101包括取指与解码单元202,用于对从级别I(Ll)指令高速缓存202中接收到的处理器指令进行解码。用于执行该指令的数据可被存储于寄存器组208内。在一个实施例中,寄存器组208包括多个寄存器,其可由AVX指令用于存储由AVX指令使用的数据。
[0034]图3是寄存器组208内的一组合适的打包数据寄存器的示例实施例的方框图。所示打包数据寄存器包括三十二个512位打包数据或向量寄存器。这些三十二个512位寄存器被标记为ZMMO至ZMM31。在所示实施例中,这些寄存器中的低位十六个的低阶256位(即,ZMM0-ZMM15)被混叠或者覆盖在相应256位打包数据或向量寄存器(标记为YMM0-YMM15)上,但是这不是必需的。
[0035]同样,在所示实施例中,YMM0-YMM15的低阶128位被重叠或者覆盖在相应128位打包数据或向量寄存器(标记为XMM0-XMM1)上,但是这也不是必需的。512位寄存器ZMMO至ZMM31可操作用于保持512位打包数据、256位打包数据或者128位打包数据。
[0036]256位寄存器YMM0-YMM15可操作用于保持256位打包数据或者128位打包数据。128位寄存器XMM0-XMM1可操作用于保持128位打包数据。每一寄存器可用于存储打包浮点数据或打包整型数据。支持不同数据元素尺寸,包括至少8位字节数据、16位字数据、32位双字或单精度浮点数据、以及64位四字或双精度浮点数据。打包数据寄存器的替换实施例可包括不同数量的寄存器、不同大小的寄存器,并且可以或者可以不将较大寄存器混叠(alias)在较小寄存器上。
[0037]返回参看图2,提取和解码单元202从LI指令高速缓存202中取出宏指令、解码该宏指令、并将它们分为所谓微操作(μορ)的简单操作。执行单元210调度并执行该微操作。在所示实施例中,执行单元210内的JH函数103包括AVX指令的微操作。引退单元212将所执行的指令的结果写入寄存器或存储器。 [0038]JH函数103执行压缩函数,包括运行42轮次的三个函数。第一个函数是S-Box函数,其包括实现两个变换(Sc^PS1)之一来变换相邻的4位半字节(nibble)。表1示出S-Box变换Stl(X)和S1 (X)的一个实施例。
[0039]表1
[0040]
X 1 Il |2 |3 |4 |5 |6 |7 丨8 丨9 IlO 111 Il2 Il3 Il4 Il5
S0(X) 9 0 4 11 13 12 3 15 I 10 2 6 7 5 8 14
S1(X) 3 12 6 13 5 7 I 9 15 2 0 4 11 10 14 8
[0041]第二个函数是线性变换(L),其在GF(24)上实现(4,2,3)最大可分离距离(MDS)码,其中GF24被定义为二进制多项式模不可约多项式X4+X+l的倍数(multiplication)。在相邻的8位字节(或两个相邻S-Box输出)上执行线性变换。使A、B、C、和D表示4位字,则 L 将(A, B)转换为(C,D),即(C,D) = L(A, B) = (5.A+2.B,2.A+B)。因此函数(C,D)=L(A, B)被计算为:
[0042]DO = BO ? Al ;D1 = BI ? A2 ;
[0043]D2 = B2 ? A3 ? AO ;D3 = B3 ? AO ;
[0044]CO = AO ? Dl ;C1 = Al ? D2 ;
[0045]C2 = A2 ? D3 ? DO ;C3 = A3 ? D0.[0046]第三个函数是置换函数(Pd)。Pd是2d元素上的简单置换,从Jid(交换交替的半字节)、P, d(交换来自状态的低半部和高半部的半字节)、和(交换状态的高半部内的半字节)构建而来。图4示出在64位数据路径中对于d = 4的所得半字节置换Pd( ^ d, d, Φ<ι)的一个实施例,其中d是位块的尺寸(dimension)。在一个实施例中,JH函数对于256个4位半字节(或1024位)的数据宽度使用d = 8。
[0047]在常规系统中,JH被“位切片”,而不是在字节中的半字节上操作。位切片能使半字节的位被分开为分离的字。因此,S-Box半字节允许经由SSE/AVX指令并行地执行所有的S-Box半字节。进一步,将位切片与交替的奇偶SBOX寄存器组合能实现SBOX和L变换估计(evaluation)。在位切片实现中,没有必要对于每一轮次进行完全置换。特定地,合适的奇S-Box被输入位置以用于 在下一轮次与下合适的偶S-Box操作。通过使用7个交换置换,对于42个JH轮次重复6次,完成此举。
[0048]尽管位切片方法能使得所有的SBOX计算和L变换并行执行,但是需要20个指令来执行SBOX逻辑的23个逻辑函数,且对于包含L变换的10个X0R(异或)函数而言需要10个指令(用于2个操作数X0R)。这样的性能是可予以改进的。
[0049]根据一个实施例,可定义两个新的指令和数据路径,其在4位半字节和半字节对上操作来使用寄存器组208中的512位ZMM寄存器来执行SBOX和L变换函数。在这样的实施例中,1024位状态被存储在两个ZMM寄存器中,其中半字节0-127在第一 ZMM寄存器中,而半字节128-255在第二 ZMM寄存器中。
[0050]新的指令和数据路径JH_SB0X_L被定义为JH_SB0X_L ZMM, ZMM掩码(ZMMmask)。图5是示出由JH_SB0X_L指令执行的过程的一个实施例的流程图。如上文所述的,1024状态位被从O到1023连续地组织(如JH规范中表示的)在两个ZMM寄存器内。
[0051]在处理框510,从ZMM寄存器检索表示状态位的72的512位段。在处理框520,在所检索的状态位上执行S-Box和L变换。在一个实施例中,使用来自ZMM掩码的掩码信息来执行S-Box函数。在一个实施例中,ZMM掩码表示来自JH规范的常数(A.2,在E8的位切片实现中的轮次常数)。使用ZMM,256位可通过对每一轮次进行奇偶位交错来导出。
[0052]一旦完成了 S-Box操作,在每个8位半字节对上进行L转换操作。在处理框530,将变换的512位结果存储在目的寄存器内。执行JH_SB0X_L指令两次(对于低512位,然后对于高512位)以完成对于完全JH状态的一轮次S-Box和L变换。
[0053]JH_Permute (JH_置换)指令和数据路径被实现为对保持S-Box和L变换的结果的ZMM寄存器中的每一个执行置换步骤Pd。在一个实施例中,JH_Permute指令被实现为,执行所定义为JH_Permute ZMM1、ZMM2、imm8,其中ZMMl存储低预置换128半字节(例如,512位),ZMM存储高预置换128半字节,且imm8 = 0/1,其指定低/高半字节。
[0054]图6是示出由JH_PD指令执行的过程的一个实施例的流程图。在处理框550,JH状态的预置换的1/2段被从imm8所指示的ZMM寄存器中检索。在处理框560,对所检索的位执行置换处理。在处理框570,置换的结果被存储。执行JH_Permute指令两次以完成一轮次置换。图7示出使用上述指令的JH的42轮次中的两个。
[0055]上述的JH指令实现三周期流水线数据路径。因此,在8个周期内完成一轮次的JH(例如,JH_SB0X_L和JH_Permute指令的每一个的两次执行)。这导致胜于位切片方法的2-3倍性能改进。
[0056]示例性寄存器体系架构一图8[0057]图8是示出根据本发明的一个实施例的寄存器体系结构800的框图。寄存器体系结构的寄存器组(register file)和寄存器列出如下:
[0058]向量寄存器组810—在所示出的实施例中,有32个512比特宽的向量寄存器;这些寄存器被引用为zmmO到zmm31。低位16个zmm寄存器的低阶856个位覆盖在寄存器ymmO-16上。低位16个zmm寄存器的低阶128个位(ymm寄存器的低阶128个位)覆盖在寄存器xmmO-15上。
[0059]写掩码寄存器815—在所示的实施例中,存在8个写掩码寄存器(kO至k7),每一写掩码寄存器的尺寸是64位。在本发明的一个实施例中,向量掩码寄存器kO无法用作写掩码;当正常可指示kO的编码用作写掩码时,它选择硬连线的写掩码OxFFFF,从而有效地停用该指令的写掩码。
[0060]多媒体扩展控制状态寄存器(MXCSR) 1020—在所示的实施例中,这个32位寄存器提供在浮点操作中使用的状态和控制位。
[0061 ] 通用寄存器825—在所示出的实施例中,有十六个64位通用寄存器,这些寄存器连同现有的x86寻址模式被用来寻址存储器操作数。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RS1、RD1、RSP,以及 R8 到 R15 来引用。
[0062]扩展标志(EFLAGS)寄存器830—在所示实施例中,使用这个32位寄存器来记录很多指令的结果。
[0063]浮点控制字(FCW)寄存器835和浮点状态字(FSW)寄存器840—在所示实施例中,这些寄存器由x87指令集扩展使用来在FCW的情况下设置轮转(rounding)模式、异常掩模和标志,且在FSW的情况下保持对于例外的追踪。
[0064]标量浮点堆栈寄存器组(x87堆栈)845,在其上面混叠有MMX打包整型平坦寄存器组1050—在所示出的实施例中,x87堆栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用MMX寄存器来对64位打包整型数据执行操作,以及为在MMX和XMM寄存器之间执行的某些操作保存操作数。
[0065]段寄存器855—在所示实施例中,存在六个16位寄存器,用于存储用于分段的地址生成的数据。
[0066]RIP寄存器865—在所示实施例中,这个64位寄存器存储指令指针。
[0067]本发明的替换实施例可以使用较宽的或较窄的寄存器。另外,本发明的替换实施例可以使用更多,更少或不同的寄存器组和寄存器。
[0068]示例性有序处理器体系结构一图6A-6B
[0069]图9A-B示出示例性有序处理器体系结构的框图。这些示例性实施例是围绕由宽向量处理器(VPU)扩充的有序CPU核的多个实例而设计的。根据应用,核通过高带宽的互连网络与某些固定的功能逻辑、存储器I/O接口和其它必要的1/0逻辑通信。例如,这个实施例的作为独立GPU的实现将一般包括PCIe总线。
[0070]图9A是根据本发明的实施例的连接到管芯上互联网络902且具有第二级(L2)高速缓存的本地子集904的单个CPU核的框图。指令解码器900支持具有扩展的x86指令集。尽管在本发明的一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(LI)高速缓存906读回,但是可选实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
[0071]LI高速缓存906允许对高速缓存存储器的低等待时间访问进入标量和向量单元中。与向量友好指令格式中的加载操作(load-op)指令一起,这意味着LI高速缓存906可被视为某种程度上类似扩展的寄存器组。这显著改进了很多算法的性能。
[0072]L2高速缓存的本地子集904是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个CPU核一个本地子集。每个CPU具有到其自己的L2高速缓存的本地子集904的直接访问路径。被CPU核读出的数据被存储在其L2高速缓存子集904中,并且可以被快速访问,该访问与其他CPU核访问其自己的本地L2高速缓存子集并行。被CPU核写入的数据被存储在其子集的L2高速缓存子集904中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。
[0073]图9B是根据本发明的各实施例的图9A中的CPU核的一部分的展开图。图9B包括LI高速缓存904的LI数据高速缓存906A部分、以及关于向量单元910和向量寄存器1114的更多细节。具体地说,向量单元910是16宽向量处理单元(VPU)(见16宽ALU928),该单元执行整型、单精度浮点以及双精度浮点指令。该VPU支持通过混合单元920混合(swizzling)寄存器输入、通过数值转换单元922A-B进行数值转换,和通过复制单元924进行对存储器输入的复制。写掩码寄存器926允许断言所得的向量写入。
[0074]可以各种方式混合寄存器数据,如,来支持矩阵乘法。来自存储器的数据可跨VPU通道地被复制。这是图形和非图形并行数据处理中的通用操作,这显著增加了高速缓存效率。
[0075]环形网络是双向的,以允许诸如CPU核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012比特宽。
[0076]示例性无序体系结构一图7
[0077]图10是示出根据本发明的实施例的示例性无序架构的框图。特定地,图10示出公知的示例性无序架构,其已经被修改为结合了向量友好指令格式以及其执行。在图10中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示这些单元之间的数据流的方向。图10包括耦合到执行引擎单元1010和存储器单元1015的前端单元1005 ;执行引擎单元1010还耦合到存储器单元1015。
[0078]前端单元1005包括耦合到二级(L2)分支预测单元1022的一级(LI)分支预测单元1020。LI和L2分支预测单元1020和1022耦合到LI指令高速缓存单元1024。LI指令高速缓存单元1024耦合至指令翻译后备缓冲器(TLB) 1026,该TLB1026进一步耦合至指令提取和预解码单元1028。指令提取和预解码单元1028耦合至指令队列单元1030,该单元1030进一步耦合至解码单元1032。解码单元1032包括复杂解码器单元1034和三个简单解码器单元1036、1038和1040。解码单元1032包括微代码ROM单元1042。在解码级段中,解码单元7可如上所述地操作。LI指令高速缓存单元1024还耦合到存储器单元1015中的L2高速缓存单元1048。指令TLB单元1026还耦合到存储器单元1015中的二级TLB单元1046。解码单元1032、微代码ROM单元1042、和环流检测器(LSD)单元1044各自耦合到执行引擎单元1010中的重命名/分配器单元1056。
[0079]执行引擎单元1010包括耦合到引退单元1074和统一调度器单元1058的重命名/分配器单元1056。引退单元1074还耦合到执行单元1060且包括重排序缓冲器单元1078。统一调度器单元1058还耦合到物理寄存器组单元1076,物理寄存器组单元1076耦合到执行单元1060。物理寄存器组单元1076包括向量寄存器单元1077A、写掩码寄存器单元1077B、和标量寄存器单元1077C ;这些寄存器单元可提供向量寄存器510、向量掩码寄存器515、以及通用目的寄存器825 ;且物理寄存器组单元1076可包括未示出的附加寄存器组(如,混叠在MMX打包整型平面寄存器组850上的标量浮点栈寄存器组845)。执行单元1060包括三个混合标量和向量单元单元1062、1064和1072 ;负载单元1066 ;存储地址单元1068 ;存储数据单元1070。负载单元1066、存储地址单元1068和存储数据单元1070各自进一步耦合到存储器单元1015中的数据TLB单元1052。
[0080]存储器单元1015包括耦合到数据TLB单元1052的二级TLB单元1046。数据TLB单元1052耦合到LI数据高速缓存单元1054。LI数据高速缓存单元1054还耦合到L2高速缓存单元1048。在一些实施例中,L2高速缓存单元1048还耦合到存储器单元1015内部和/或外部的L3和更高级高速缓存单元1050。
[0081]以示例的方式,示例性无序体系结构可如下实现过程流水线8200:1)指令提取和预解码单元728执行取指和长度解码级;2)解码单元732执行解码级;3)重命名/分配器单元1056执行分配级和重命名级;4)统一调度器1058执行调度级;5)物理寄存器组单元1076、重排序缓冲器单元1078、和存储器单元1015执行寄存器读取/存储器读取级;执行单元1060进行执行/数据转换级;6)存储器单元1015和重排序缓冲器单元1078执行写回/存储器写入级I960 ;7)引退单元1074执行ROB读取级;8)各单元可牵涉到异常处理级;以及9)引退单元1074和物理寄存器组单元1076执行提交级。
[0082]示例性计算机系统和处理器-图8-10
[0083]图11-13示出适于包括处理器101的示例性系统。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够含有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
[0084]现在参考图11,所示出的是根据本发明实施例的系统1100的框图。系统1100可包括耦合至图形存储器控制器中枢(GMCH) 1110的一个或多个处理器1115、1120。附加的处理器1115的任选性在图11中通过虚线来表示。
[0085]每一处理器1110、1115可以是处理器1100的某种版本。然而,应该注意,集成图形逻辑和集成存储器控制单元未必存在于处理器1110和1115中。
[0086]图11示出GMCH1120可耦合至存储器1140,该存储器1140可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。
[0087]GMCH1120可以是芯片组或芯片组的一部分。GMCH1120可以与处理器(多个)1110、1115进行通信,并控制处理器1110、1115与存储器1140之间的交互。GMCH1120还可充当(各)处理器(多个)1110、1115和系统1100的其它元件之间的加速总线接口。对于至少一个实施例,GMCH1120经由诸如前端总线(FSB) 1195之类的多分支总线与处理器(多个)1110、1115进行通信。[0088]此外,GMCHl 120耦合至显示器1145(诸如平板显示器)。GMCHl 120可包括集成图形加速器。GMCHl 120还耦合至输入/输出(I/O)控制器中枢(ICH) 1150,该输入/输出(I/O)控制器中枢(ICH) 1150可用于将各种外围设备耦合至系统1100。例如,在图11的实施例中示出了外部图形设备860以及另一外围设备1170,该外部图形设备860可以是耦合至ICH1150的分立图形设备。
[0089]可选地,系统1100中还可存在附加或不同的处理器。例如,附加处理器(多个)1115可包括与处理器1110相同的附加处理器(多个)、与处理器1110异类或不对称的附加处理器(多个)、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。按照包括体系结构、微体系结构、热、功耗特征等等优点的度量谱,物理资源1110、1115之间存在各种差别。这些差别自身会有效显示为处理元件1110、1115之间的不对称性和相异性。对于至少一个实施例,各种处理元件1110、1115可驻留在同一管芯封装中。
[0090]现在参照图9,所示出的是根据本发明一实施例的第二系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。如图12所示,处理器1270和1280中的每个可以是处理器101的某一版本。
[0091]可选地,处理器1270、1280中的一个或多个可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。
[0092]虽然仅以两个处理器1270、1280来示出,但应理解本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理元件。
[0093]处理器1270还可包括集成存储器控制器中枢(MC) 1272和点对点(P-P)接口1276和1278。类似地,第二处理器1280可包括MC1282和P-P接口 1286与1288。处理器1270、1280可以经由使用点对点(PtP)接口电路1278、1288的点对点(PtP)接口 1250来交换数据。如图12所示,MC的1272和1282将处理器耦合到相应的存储器,即存储器1242和存储器1244,这些存储器可以是本地附连到相应处理器的主存储器部分。
[0094]处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、和1298的各个P-P接口 1252、1254与芯片组1290交换数据。芯片组1290还可经由高性能图形接口1239与高性能图形电路938交换数据。
[0095]共享高速缓存(未示出)可以被包括在两个处理器的任一个之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将处理器置于低功率模式,则可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。芯片组1290可以经由接口 1296被耦合到第一总线1216。在一个实施例中,第一总线916可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
[0096]如图12所示,各种I/O设备1214可连同总线桥1218 —起耦合到第一总线1216,总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,各设备可耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信设备1226、以及可包括代码1230的诸如盘驱动器或其它海量存储设备的数据存储单元1228。进一步地,音频1/01224可以耦合到第二总线1220。注意,其它体系结构是可能的。例如,代替图12的点对点架构,系统可实现多分支总线或者其他此类架构。
[0097]现在参照图13,所示出的是根据本发明实施例的第三系统1300的框图。图12和图13中的相同部件用相同附图标记表示,并从图13中省去了图12中的某些方面,以避免使图13的其它方面变得含糊不清。
[0098]图13示出处理元件1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。对于至少一个实施例,CL1272、1282可包括存储器控制器中枢逻辑(IMC) ο此外,CL1272、1282还可包括I/O控制逻辑。图10示出:不仅存储器1242、1244耦合至CL1272、1282,I/0设备1214也耦合至控制逻辑1272、1282。传统I/O设备1215被耦合至芯片组1290。
[0099]现在参照图14,所示出的是根据本发明实施例的SoCHOO的框图。图15中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图14中,互连单元(多个)1402耦合至:应用处理器1410,包括一个或多个核1402A-N的集合和共享高速缓存单元(多个)1406 ;系统代理单元1410 ;总线控制器单元(多个)1414 ;集成存储器控制器单元(多个)1414 ;一个或多个媒体处理器1420的集合,可包括集成图形逻辑1408、用于提供静态和/或视频照相机功能的图像处理器1424、用于提供硬件音频加速的音频处理器1426、以及用于提供视频编码/解码加速的视频处理器1428 ;静态随机存取存储器(SRAM)单元1430 ;直接存储器存取(DMA)单元1432 ;以及显示单元1440,用于耦合至一个或多个外部显示器。
[0100]本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0101]可将程序代码应用至输入数据以执行本文描述的功能并产生输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
[0102]程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译
;五古
P口口 ο
[0103]至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0104]此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易失性的有形装置,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
[0105]因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含向量友好指令格式的指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
[0106]在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形(morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
[0107]图16是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。
[0108]图16示出可以使用x86编译器1604来编译高级语言1602的程序,以便生成可以由具有至少一个x86指令集核1616的处理器原生地执行的x86 二进制代码1606 (假设指令中的一些是以向量友好指令格式编译的)。具有至少一个x86指令集核1816的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(I)英特尔x86指令集核的指令集的大部分或(2)旨在在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的对象代码版本,从而执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1804表示用于生成x86 二进制代码1606(例如,对象代码)的编译器,该二进制代码1616可通过或不通过附加的可链接处理在具有至少一个x86指令集核1016的处理器上执行。类似地,图90示出用高级语言1602的程序可以使用替代的指令集编译器1608来编译,以生成可以由不具有至少一个x86指令集核的处理器1614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)来原生执行的替代指令集二进制代码1610。指令转换器1612被用来将x86 二进制代码1606转换成可以由不具有x86指令集核1614的处理器原生执行的代码。该经转换的代码不大可能与替换性指令集二进制代码1610相同,因为难以制出能够这样做的指令转换器;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1612表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理器或核的处理器或其它电子设备得以执行x86 二进制代码1606的软件、固件、硬件或其组合。
[0109]指令(多个)的某些操作可由硬件组件执行,且可体现在机器可执行指令中,该指令用于致使或至少导致以所述指令编程的电路或其它硬件组件执行所述操作。电路可包括通用或专用处理器、或逻辑电路,这里仅给出几个示例。这些操作还可任选地由硬件和软件的组合执行。执行逻辑和/或处理器可包括专用或特定电路或其它逻辑,其响应于机器指令或从机器指令导出的或一个或多个控制信号,而存储指令指定的结果操作数。例如,本文公开的指令(多个)的实施例可在一个或多个系统中执行,且向量友好指令格式的指令(多个)的实施例可存储在将在系统中执行的程序代码中。另外这些附图的处理元件可利用本文详细描述的详细描述的流水线和/或架构(例如有序和无序架构)之一。例如,有序架构的解码单元可解码指令(多个)、将经解码的指令传送到向量或标量单元等。
[0110]上述描述旨在说明本发明的优选实施例。根据上述讨论,还应当显而易见的是,在发展迅速且进一步的进展难以预见的此【技术领域】中,本领域技术人员可在安排和细节上对本发明进行修改,而不背离落在所附权利要求及其等价方案的范围内的本发明的原理。例如,方法的一个或多个操作可组合或进一步分开。
[0111]可选实施例
[0112]尽管已经描述了将原生执行向量友好指令格式的实施例,但本发明的可选实施例可通过运行在执行不同指令集的处理器(例如,执行美国加利福亚州桑尼维尔的MIPS技术公司的MIPS指令集的处理器、执行加利福亚州桑尼维尔的ARM控股公司的ARM指令集的处理器)上运行的仿真层来执行向量友好指令格式。同样,尽管附图中的流程图示出本发明的某些实施例的特定操作顺序,但应理解该顺序是示例性的(例如,可选实施例可按不同顺序执行操作、组合某些操作、使某些操作重叠等)。
[0113]在以上描述中,出于解释的目的,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,对本领域技术人员而言将是明显的是,不用这些具体细节中的一些也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。
【权利要求】
1.一种用于在计算机处理器中执行过程的方法,包括: 执行一个或多个JH_SBOX_L指令以在JH状态上执行S-Box映射和线性(L)变换;以及一旦已经执行了 S-Box映射和L变换,就执行一个或多个JH_Permute指令来在所述JH状态上执行置换函数。
2.如权利要求1所述的方法,其特征在于,在执行所述JH_SB0X_L指令前,JH状态位被连续存储在第一和第二寄存器中。
3.如权利要求2所述的方法,其特征在于,所述第一和第二寄存器是512位ZMM寄存器。
4.如权利要求3所述的方法,其特征在于,所述第一寄存器存储所述JH状态的低512位,且所述第二寄存器存储所述JH状态的高512位。
5.如权利要求2所述的方法,其特征在于,进一步包括: 第一次执行所述JH_SB0X_L指令,以在所述JH状态的存储于所述第一寄存器内的第一分量上执行S-Box映射和L变换;以及 第二次执行所述JH_SB0X_L指令,以在所述JH状态的存储于所述第二寄存器内的第二分量上执行S-Box映射和L变换。
6.如权利要求5所述的方法,其特征在于,使用掩码寄存器来第一次和第二次执行所述 JH_SB0X_L 指令。
7.如权利要求5所述的方法,其特征在于,进一步包括: 在第一目的寄存器内将第一次执行所述JH_SB0X_L指令的结果存储为第一 JH状态结果;以及 在第二目的寄存器内将第二次执行所述JH_SB0X_L指令的结果存储为第二 JH状态结果O
8.如权利要求7所述的方法,其特征在于,执行所述JH_Permute指令还包括: 从所述第一和第二目的寄存器检索JH状态结果; 在所述第一 JH状态结果上执行第一替换函数;以及 在所述第二 JH状态结果上执行第二替换函数。
9.一种装置,包括: 多个数据寄存器;以及 与所述多个数据寄存器耦合的执行单元,用于执行一个或多个JH_SB0X_L指令以在JH状态上执行S-Box映射和线性(L)变换,且一旦已经执行了 S-Box映射和L变换,就执行一个或多个JH_Permute指令来在JH状态上执行置换函数。
10.如权利要求9所述的装置,其特征在于,所述多个数据寄存器包括: 用于存储JH状态位的第一半部的第一寄存器;以及 用于存储所述JH状态位的第二半部的第二寄存器。
11.如权利要求10所述的装置,其特征在于,还包括:在执行所述JH_SB0X_I^g令前,将JH状态位连续地存储第一和第二寄存器内。
12.如权利要求11所述的装置,其特征在于,所述第一和第二寄存器是512位ZMM寄存器。
13.如权利要求10所述的装置,其特征在于,所述执行单元第一次执行所述JH_SB0X_L指令,以在所述JH状态位的第一半部上执行S-Box映射和L变换;并且第二次执行所述JH_SB0X_L指令,以在所述JH状态位的第二半部上执行S-Box映射和L变换。
14.如权利要求13所述的装置,其特征在于,使用掩码寄存器来第一次和第二次执行所述JH_SB0X_L指令。
15.如权利要求14所述的装置,其特征在于,所述执行单元在第一目的寄存器内将第一次执行所述JH_SB0X_L指令的结果存储为第一 JH状态结果,并在第二目的寄存器内将第二次执行所述JH_SB0X_L指令的结果存储为第二 JH状态结果。
16.如权利要求15所述的装置,其特征在于,所述执行单元通过以下步骤执行所述JH_Permute指令:从所述第一和第二目的寄存器检索JH状态结果,在所述第一 JH状态结果上执行第一置换函数,并在所述第二 JH状态结果上执行第二置换函数。
17.一种制品,包括: 机器可读存储介质,其包括一个或多个固态存储材料,所述机器可读存储介质存储有指令,当执行所述指令时,使得处理器: 执行一个或多个JH_SB0X_I^g令以在JH状态上执行S-Box映射和线性(L)变换;以及 一旦已经执行了 S-Box映射和L变换,就执行一个或多个JH_Permute指令来在所述JH状态上执行置换函数。
18.如权利要求17所述的制品,其特征在于,在执行所述JH_SB0X_L指令前,所述JH状态位被连续存储在第一 和第二寄存器中。
19.如权利要求17所述的制品,其特征在于,所述机器可读存储介质存储指令,当执行所述指令时,进一步使得处理器: 第一次执行所述JH_SB0X_L指令,以在所述JH状态的存储于所述第一寄存器内的第一分量上执行S-Box映射和L变换;以及 第二次执行所述JH_SB0X_L指令,以在所述JH状态的存储于所述第二寄存器内的第二分量上执行S-Box映射和L变换。
20.如权利要求19所述的制品,其特征在于,使用掩码寄存器来第一次和第二次执行所述JH_SB0X_L指令。
21.如权利要求19所述的制品,其特征在于,所述机器可读存储介质存储指令,当执行所述指令时,进一步使得处理器: 在第一目的寄存器内将第一次执行所述JH_SB0X_L指令的结果存储为第一 JH状态结果;以及 在第二目的寄存器内将第二次执行所述JH_SB0X_L指令的结果存储为第二 JH状态结果O
22.如权利要求21所述的制品,其特征在于,所述机器可读存储介质存储指令,当执行所述指令时,进一步使得处理器: 从所述第一和第二目的寄存器检索JH状态结果; 在第一 JH状态结果上执行第一替换函数;以及 在第二 JH状态结果上执行第二替换函数。
23.—种系统,包括: 互连;与所述互连耦合的处理器,用于执行一个或多个JH_SBOX_L指令以在JH状态上执行S-Box映射和线性(L)变换,且一旦已经执行了 S-Box映射和L变换,就执行一个或多个JH_Permute指令来在JH状态上执行置换函数; 与所述互连耦合的动态随机存取存储器(DRAM)。
24.如权利要求23所述的系统,其特征在于,所述多个数据寄存器包括: 用于存储JH状态位的第一半部的第一寄存器;以及 用于存储所述JH状态位的第二半部的第二寄存器。
25.如权利要求24所述的系统,其特征在于,所述处理器第一次执行所述JH_SB0X_I^^令,以在所述JH状态位的第一半部上执行S-Box映射和L变换;并且第二次执行所述JH_SB0X_L指令,以在所述JH状态位的第二半部上执行S-Box映射和L变换。
26.如权利要求25所述的系统,其特征在于,使用掩码寄存器来第一次和第二次执行所述JH_SB0X_L指令。
27.如权利要求25所述的系统,其特征在于,所述处理器在第一目的寄存器内将第一次执行所述JH_SB0X_l4g令的结果存储为第一 JH状态结果,并在第二目的寄存器内将第二次执行所述JH_SB0X_L指令的结果存储为第二 JH状态结果。
28.如权利要求27所述的系统,其特征在于,所述处理器通过以下步骤执行所述JH_Permute指令:从所述第一和第二目的寄存器检索JH状态结果,在所述第一 JH状态结果上执行第一置换函数,并在所述第二 JH状态结果上执行第二置换函数。
【文档编号】H04L9/12GK104012031SQ201180075719
【公开日】2014年8月27日 申请日期:2011年12月22日 优先权日:2011年12月22日
【发明者】K·S·雅普, G·M·沃尔里齐, V·戈帕尔, J·D·吉尔福德, E·奥兹图科, S·M·格尔雷, W·K·费格哈利, M·G·迪克森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1