CN104011709B - 在256位数据路径中执行jh加密散列的指令 - Google Patents

在256位数据路径中执行jh加密散列的指令 Download PDF

Info

Publication number
CN104011709B
CN104011709B CN201180075826.9A CN201180075826A CN104011709B CN 104011709 B CN104011709 B CN 104011709B CN 201180075826 A CN201180075826 A CN 201180075826A CN 104011709 B CN104011709 B CN 104011709B
Authority
CN
China
Prior art keywords
instruction
nibble
states
result
box
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
Application number
CN201180075826.9A
Other languages
English (en)
Other versions
CN104011709A (zh
Inventor
G·M·沃尔里齐
K·S·雅普
V·戈帕尔
J·D·吉尔福德
E·奥兹图科
S·M·格尔雷
W·K·费格哈利
M·G·迪克森
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104011709A publication Critical patent/CN104011709A/zh
Application granted granted Critical
Publication of CN104011709B publication Critical patent/CN104011709B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3239Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

描述了一种方法。该方法包括执行一个或多个JH_SBOX_L指令以在JH状态上执行S‑Box映射和线性(L)变换,且一旦已经执行了S‑Box映射和L变换则执行一个或多个JH_P指令来在JH状态上执行置换函数。

Description

在256位数据路径中执行JH加密散列的指令
技术领域
本公开涉及加密算法,且特定地涉及JH散列算法。
背景
密码学是依赖于算法的工具且是保护信息的密钥。算法是复杂的数学算法且密钥是位串(string of bits)。存在两个基本类型的加密系统:秘密密钥系统和公共密钥系统。秘密密钥系统也被称为对称系统,具有由两方或更多方共享的单个密钥(“秘密密钥”)。该单个密钥既用于加密信息也用于解密信息。
JH散列函数(JH)是加密函数,已经针对国家标准与技术协会(NIST) 散列函数竞争而提交该加密函数来发展新的SHA-3函数来替代较旧的SHA-1 和SHA-2。JH是基于包括四个变型(JH-224、JH-256、JH-384、和JH-512)的算法,可产生不同大小的摘要(digest)。然而,JH的每一个变型实现相同的压缩函数。
目前,可在通用目的处理器上使用流SIMD扩展(SSE)或高级向量扩展 (AVX)的指令来执行JH。无论如何,这样的应用可要求执行高达30个指令来执行JH算法。
附图说明
可结合附图从以下详细描述中获得对本发明的更好理解,其中:
图1是示出系统的一个实施例的框图;
图2是示出处理器的一个实施例的框图;
图3是示出打包数据寄存器的一个实施例的框图;
图4示出所得半字节置换的一个实施例;
图5A和5B是示出由指令执行的过程的一个实施例的流程图;
图6示出实现执行一轮次JH算法的指令的一个实施例;
图7示出使用指令的两轮次JH的实施例;
图8是根据本发明的一个实施例的寄存器架构的框图;
图9A是根据本发明的实施例的连接到管芯上互联网络且具有第二级(L2) 高速缓存的本地子集的单CPU核的框图;
图9B是根据本发明的各实施例的CPU核的一部分的展开图;
图10是示出根据本发明的实施例的示例性无序架构的框图;
图11示出根据本发明一个实施例的系统的框图;
图12示出根据本发明的实施例的第二系统的框图;
图13是根据本发明的实施例的第三系统的框图;
图14是根据本发明的实施例的片上系统(SoC)的框图;
图15是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器的框图;且
图16是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目的地指令集中的二进制指令的框图。
具体实施方式
在下文描述中,出于说明目的,阐述了众多具体细节以便提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的某些也可实施本发明。在其他实例中,众所周知的结构和设备以框图形式示出,以避免淡化本发明的底层原理。
在本说明书中,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
描述了包括处理JH散列算法的指令的机制。根据一个实施例,经由AVX 指令集内的指令来实现JH散列算法。AVX指令集是x86指令集架构(ISA) 的扩展,其将寄存器组从128位往上增加。
图1是系统100的一个实施例的框图,系统100包括用于在通用目的处理器中执行JH加密和解密的AVX指令集扩展。
系统100包括处理器101、存储控制集线器(MCH)102、和输入/输出(I/O) 控制器集线器(ICH)104。MCH 102包括控制处理器101和存储器108之间的通信的存储控制器106。处理器101和MCH 102在系统总线116上通信。
处理器101可以是多个处理器中的任一个,这些处理器诸如单核奔腾处理器、单核Intel Celeron处理器、处理器或多核处理器,诸如奔腾D、处理器i3,i5,i7,2Duo 和Quad、处理器、或者任何其他类型的处理器。
存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器 (SRAM)、同步动态随机存取存储器(SDRAM)、双数据率2(DDR2)RAM、或Rambus动态随机存取存储器(RDRAM)、或任何其他类型的存储器。
使用高速芯片-对-芯片互连114(诸如直接媒体接口(DMI)),ICH 104可耦合至MCH102。经由两个单向通道,DMI支持2吉位/秒的并发传输速率。
ICH 104可包括存储器I/O控制器110,用于控制与耦合至ICH 104的至少一个存储设备112的通信。存储设备可包括,例如,盘驱动器、数字多功能盘 (DVD)驱动器、紧凑盘(CD)驱动器、独立磁盘冗余阵列(RAID)、带驱动器、或其他存储设备。使用串行存储协议,诸如串行附接小型计算机系统接口(SAS)或串行高级技术附接(SATA),在存储协议互连118上,ICH 104 可与存储设备112通信。
在一个实施例中,处理器101包括JH函数103来执行JH加密和解密操作。可使用JH函数103来对存储于存储器108和/或存储于存储设备112内的信息进行加密或解密。
图2是示出处理器101的一个实施例的框图。处理器101包括获取与解码单元202,用于对从一级(L1)指令高速缓存202中接收到的处理器指令进行解码。用于执行该指令的数据可被存储于寄存器组208内。在一个实施例中,寄存器组208包括多个寄存器,其可由AVX指令用于存储由AVX指令使用的数据。
图3是寄存器组208内的一组合适的打包数据寄存器的示例实施例的方框图。所示打包数据寄存器包括三十二个512位打包数据或向量寄存器。这些三十二个512位寄存器被标记为ZMM0至ZMM31。在所示实施例中,这些寄存器中的较低十六个的较低阶256位(即,ZMM0-ZMM15)被混叠或者覆盖在相应256位打包数据或向量寄存器(标记为YMM0-YMM15)上,但是这不是必需的。
同样,在所示实施例中,YMM0-YMM15的较低阶128位被混叠或者覆盖在相应128位打包数据或向量寄存器(标记为XMM0-XMM1)上,但是这也不是必需的。512位寄存器ZMM0至ZMM31可操作用于保持512位打包数据、 256位打包数据或者128位打包数据。
256位寄存器YMM0-YMM15可操作用于保持256位打包数据或者128位打包数据。128位寄存器XMM0-XMM1可操作用于保持128位打包数据。每一寄存器可用于存储打包浮点数据或打包整数数据。支持不同数据元素尺寸,包括至少8位字节数据、16位字数据、32位双字或单精度浮点数据、以及64 位四倍字或双精度浮点数据。打包数据寄存器的替换实施例可包括不同数量的寄存器、不同尺寸的寄存器,并且可以或者可以不将较大寄存器重叠(alias)在较小寄存器上。
返回参看图2,取出和解码单元202从L1指令高速缓存202中取出宏指令、解码该宏指令、并将它们分为所谓微操作(μop)的简单操作。执行单元210 调度并执行该微操作。在所示实施例中,执行单元210内的JH函数103包括 AVX指令的微操作。引退单元212将所执行的指令的结果写入寄存器或存储器。
JH函数103执行压缩函数,包括运行42轮次的三个函数。第一个函数是 S-Box函数,包括实现两个变换(S0和S1)之一来变换相邻的4位半字节(4-bit nibble)。表1示出S-Box变换S0(x)和S1(x)的一个实施例。
表1
x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S0(x) 9 0 4 11 13 12 3 15 1 10 2 6 7 5 8 14
S1(x) 3 12 6 13 5 7 1 9 15 2 0 4 11 10 14 8
第二个函数是线性变换(L),在GF(24)上实现(4,2,3)最大可分距离(MDS) 码,其中GF 24被定义为二进制多项式模不可约多项式X4+X+1的倍数 (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)被计算为:
D0=B0⊕A1;D1=B1⊕A2;
D2=B2⊕A3⊕A0;D3=B3⊕A0;
C0=A0⊕D1;C1=A1⊕D2;
C2=A2⊕D3⊕D0;C3=A3⊕D0.
第三个函数是置换函数(Pd)。Pd是2d元素上的简单置换,由πd(交换交替的(alternating)半字节)、P′d(交换来自状态的低半和高半的半字节)、和(交换状态的高半内的半字节)构建而得。图4示出在64位数据路径中对于d=4的所得半字节置换的一个实施例,其中d是字节块的尺寸(dimension)。在一个实施例中,JH函数对于256个4位半字节(或1024 位)的数据宽度使用d=8。
在常规系统中,JH被“按位切片(bit sliced)”,而不是在字节中的半字节上操作。按位切片能使半字节的位被划分到分离的字中。因此,S-Box半字节允许经由SSE/AVX指令并行地执行所有的S-Box半字节。进一步,将按位切片与交替的奇偶SBOX寄存器组合能实现SBOX和L变换求值(evaluation)。在按位切片实现中,没有必要对于每一轮次进行完整的置换。特定地,合适的奇S-Box被输入就位,用于在下一轮次与合适的偶S-Box操作。通过使用7个交换置换,对于42个JH轮次重复6次,完成此举。
尽管按位切片方法能使得所有的SBOX计算和L变换并行执行,但是要求 20种指令来执行SBOX逻辑的23个逻辑函数,且对于包含L变换的10个XOR (异或)函数而言需要10种指令(用于2个操作数XOR)。这样的性能是可予以改进的。
根据一个实施例,可定义新的指令和数据路径,其在4位半字节(4bit nibbles)以及半字节对(pairs of nibbles)上操作来使用寄存器组208中的256位 YMM寄存器来执行SBOX和L变换函数。在这样的实施例中,实现新的指令 JH_SBOX_L和JH_PD来加速JH算法。
在一个实施例中,JH_SBOX_L创建指令和数据路径来在JH状态的四分之一上实现64个S-Box映射和32个L变换。在进一步的实施例中,JH_SBOX_L 被定义为JH_SBOX_L YMM0,YMM1,YMM2,其中YMM0是256位段目的地 /结果,YMM1是256位段源,且YMM2是用于S-Box0/S-Box1选择的64位常数。
图5A是示出由JH_SBOX_L指令执行的过程的一个实施例的流程图。在一个实施例中,1024状态位被连续地组织,在JH规范中表示为四个YMM寄存器内的从0到1023。在这样的实施例中,寄存器被组织如下:YMM0(0:255); YMM1(256:511);YMM2(512:767),YMM3(768:1023)。在又一个实施例中, YMM0(0:3)包括SBOX0,YMM0(4:7)包括SBOX1,YMM0(8:11)包括SBOX2,一直到表示从1020到1023的状态位的YMM3(252:255)。
在处理框510,从寄存器YMM0–YMM3之一中检取(retrieve)表示状态位的其中1/4的256位段。在处理框520,在检取的状态位上执行S-Box和L 变换。在处理框530,将变换的256位结果存储在目的地寄存器内。将 JH_SBOX_L指令执行四次来完成完全JH状态的一轮次S-Box和L变换。
JH_PD指令和数据路径对每一个保持JH状态的四分之一的YMM寄存器执行置换步骤Pd。在一个实施例中,JH_PD指令被定义为“JH_PD YMMdest, YMMsrcl,YMMsrc2,imm”,其中YMMdest是状态的经Pd置换的1/4、YMMsrc1 是JH状态的一个此前置换的1/4段、YMMsrc2是JH状态的第二个此前置换的 1/4段,且imm=0-3指定第一、第二、第三、和第四段。
图5B是示出由JH_PD指令执行的过程的一个实施例的流程图。在处理框 550,检取JH状态的此前置换的两个1/4段。在处理框560,对所检取的位执行置换处理。在一个实施例中,第一置换段(由imm0表示)包括在YMM1和 YMM2上执行的置换。在处理框570,将置换的结果存储于指定的目的地寄存器内。
JH_PD指令重复四次来完成一轮次置换,其中每一个后继执行内的imm 指定在哪个1/4段执行置换。例如,
YMM1←YMM1,YMM2imm=0
YMM2←YMM3,YMM4imm=1
YMM3←YMM1,YMM2imm=2
YMM4←YMM3,YMM4imm=3
从而第二置换段(由imm1表示)包括在YMM3和YMM4上执行的置换。类似地,第三置换段(由imm2表示)包括在YMM1和YMM2上执行的置换,且第四置换段(由imm3表示)包括在YMM3和YMM4上执行的置换。
JH_PD指令使用这样的关键性质(key property):当将JH状态分为四段时,仅由JH状态的两段中的状态位来确定每一段的Pd置换的结果。返回参看图4,可观察到,如果a0,a1,a2,a3是置换前JH状态的第一个1/4内的半字节;a4,a5,a6,a7是置换前JH状态的第一个2/4内的半字节;a8,a9,a10,a11是置换前JH状态的第一个3/4内的半字节;且a12,a13,a14,a15是置换前JH状态的第一个4/4内的半字节,则a0,a3,a4,a7置换到b0,b1,b2,b3(如,从段1 和段2输入获得段1输出),a8,a11,a12,a15置换到b4,b5,b6,b7(如,从段3和段4输入获得段2输出),a22,a1,a6,a5置换到b8,b9,b10,b11(如,从段1和段2输入获得段3输出),且a10,a9,a14,a13置换到b12,b13,b14,b45 (如,从段3和段4输入获得段4输出)。
JH_SBOX_L和JH_PD指令的实现不再必须执行与按位切片处理相关联的过度计算。
在可选实施例中,为S-Box和L变换函数指定指令。在这样的实施例中,通过将奇S-Box半字节分到两个256位YMM寄存器中且将偶S-Box半字节分到两个256位YMM寄存器、且在偶S-Box寄存器上执行交换(swapping)算法来配对合适的4位S-Box段用于接下来的JH轮次的L计算,在没有新指令的情况下,完成了Pd置换。
类似于用于置换的按位切片机制,交换算法避免建立类似于上述的JH_PD 指令。因此,奇S-Box计算被输入位置以与下一轮次的合适的偶S-Box一同操作。通过重复六次的交换(swapping)置换来完成此举,获得返回其原始位置的所有位。
交换轮次包括:
轮次0模7:交换相邻的偶半字节(奇/偶半字节,i,i+l);
轮次1模7交换偶半字节对;
轮次2模7交换4半字节的偶数组;
轮次3模7交换8半字节的偶数组;
轮次4模7交换16半字节的偶数组;
轮次5模7交换32半字节的偶数组;和
轮次6模7交换64半字节的偶数组。
根据一个实施例,实现三个新的指令用于该方法。这些指令包括在YMM1, YMM2,YMM3,YMM4上执行的JH_SBOX指令,用于处理具有奇半字节的两个YMM寄存器的L变换的JH_LTRANSFORM_ODD指令,以及用于处理具有偶半字节的两个YMM寄存器的L变换的JH_LTRANSFORM_EVEN指令。在这个实施例中,将JH状态的1024位存储如下:YMM1-奇半字节1-64,YMM2- 奇半字节65-128,YMM3-偶半字节1-64和YMM4-偶半字节65-128。
图6示出实现JH_SBOX指令、JH_LTRANSFORM_ODD指令、和 JH_LTRANSFORM_EVEN指令来执行JH算法的轮次的一个实施例。在处理框610,执行JH_SBOX YMM1,YMM2(常数)奇半字节低指令来对于存储于 YMM2内的奇半字节1-64执行S-Box映射。在一个实施例中,常数是为每一个半字节选择S-Box函数s1或s0的128位值。在JH_S-Box指令前将这些常数加载至YMM寄存器,以使得该指令显现为JH_SBOX YMM1、YMM2。
在处理框620,执行JH_SBOX YMM1,YMMn(常数)奇半字节高指令来对于存储于YMM2内的奇半字节65-128执行S-Box映射。在处理框630,执行JH_SBOX YMM3,YMMn(常数)偶半字节低指令来对于存储于YMM3 内的偶半字节1-64执行S-Box映射。在处理框640,执行JH_SBOX YMM4, YMMn常数偶半字节高指令来对于存储于YMM4内的偶半字节65-128执行 S-Box映射。在处理框650,执行JH_LTRANSFORM_EVEN YMM3,YMM1指令来在半字节1-64上执行L变换操作。在处理框660,执行 JH_LTRANSFORM_EVEN YMM4,YMM2来在半字节65-128上执行L变换操作。
在一个实施例中,首先对偶半字节执行L变换从而在偶半字节上执行置换同时为奇半字节执行L变换。在处理框660,执行JH_LTRANSFORM_ODD YMM1,YMM3指令来在半字节1-64上执行L变换操作。在处理框660,执行 JH_LTRANSFORM_ODD YMM2,YMM4指令来在半字节65-128上执行L变换操作。
在一个实施例中,在轮次0-4(模7)中对于偶半字节的置换与对于轮次 2-6的按位切片置换是相同的。轮次5是256位YMM内的128位的交换,且轮次6是256位偶YMM寄存器的交换,此举可通过改变轮次的交替模7步骤 (alternate mod7passes)的代码来用零(zero)指令完成。在又一个实施例中, JH_SBOX指令映射半字节S-Box函数且可在3-循环管道(3-cycle pipe)内完成。JH_TRANSFORM指令也可在3-循环管道(3-cycle pipe)内完成。
偶YMM寄存器的置换利用2SIMD端口使用平均每轮次4个指令或2个循环:轮次0,用于相邻半字节的2次5个指令;轮次1和2,用于8和16的组的2次3个指令;轮次3和4,用于32和64的组的2次混洗;轮次5,用于128的组的2次1个vperm128;对于256的组为0,全部的YMM寄存器重命名。图7示出使用上述指令的JH的42轮次中的两个。
示例性寄存器体系架构—图8
图8是示出根据本发明的一个实施例的寄存器体系结构800的框图。寄存器体系结构的寄存器组(register file)和寄存器列出如下:
向量寄存器组810—在所示出的实施例中,有32个512比特宽的向量寄存器;这些寄存器被引用为zmm0到zmm31。低位16个zmm寄存器的低阶856 个位覆盖在寄存器ymm0-16上。低位16个zmm寄存器的低阶128个位(ymm 寄存器的低阶128个位)覆盖在寄存器xmm0-15上。
写掩码寄存器815—在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的尺寸是64位。在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当正常可指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地停用该指令的写掩码。
多媒体扩展控制状态寄存器(MXCSR)1020—在所示的实施例中,这个 32位寄存器提供在浮点操作中使用的状态和控制位。
通用寄存器825—在所示出的实施例中,有十六个64位通用寄存器,这些寄存器连同现有的x86寻址模式被用来寻址存储器操作数。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP,以及R8到R15来引用。
扩展标志(EFLAGS)寄存器830—在所示实施例中,使用这个32位寄存器来记录很多指令的结果。
浮点控制字(FCW)寄存器835和浮点状态字(FSW)寄存器840—在所示实施例中,这些寄存器由x87指令集扩展使用来在FCW的情况下设置轮转 (rounding)模式、异常掩模和标志,且在FSW的情况下保持对于例外的追踪。
标量浮点堆栈寄存器组(x87堆栈)845,在其上面混叠有MMX打包整型平坦寄存器组1050—在所示出的实施例中,x87堆栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用MMX寄存器来对64位打包整型数据执行操作,以及为在MMX和XMM寄存器之间执行的某些操作保存操作数。
段寄存器855—在所示实施例中,存在六个16位寄存器,用于存储用于分段的地址生成的数据。
RIP寄存器865—在所示实施例中,这个64位寄存器存储指令指针。
本发明的替换实施例可以使用较宽的或较窄的寄存器。另外,本发明的替换实施例可以使用更多,更少或不同的寄存器组和寄存器。
示例性有序处理器体系结构—图9A -9B
图9A和9B示出示例性有序处理器体系结构的框图。这些示例性实施例是围绕由宽向量处理器(VPU)扩充的有序CPU核的多个实例而设计的。根据应用,核通过高带宽的互连网络与某些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。例如,这个实施例的作为独立GPU的实现将一般包括 PCIe总线。
图9A是根据本发明的实施例的连接到管芯上互联网络902且具有第二级 (L2)高速缓存的本地子集904的单个CPU核的框图。指令解码器900支持具有扩展的x86指令集。尽管在本发明的一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级 (L1)高速缓存906读回,但是可选实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L1高速缓存906允许对高速缓存存储器的低等待时间访问进入标量和向量单元中。与向量友好指令格式中的加载操作(load-op)指令一起,这意味着L1 高速缓存906可被视为某种程度上类似扩展的寄存器组。这显著改进了很多算法的性能。
L2高速缓存的本地子集904是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个CPU核一个本地子集。每个CPU 具有到其自己的L2高速缓存的本地子集904的直接访问路径。被CPU核读出的数据被存储在其L2高速缓存子集904中,并且可以被快速访问,该访问与其他CPU核访问其自己的本地L2高速缓存子集并行。被CPU核写入的数据被存储在其子集的L2高速缓存子集904中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。
图9B是根据本发明的各实施例的图9A中的CPU核的一部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分、以及关于向量单元910和向量寄存器1114的更多细节。具体地说,向量单元910是16宽向量处理单元(VPU)(见16宽ALU 928),该单元执行整型、单精度浮点以及双精度浮点指令。该VPU支持通过混合单元920混合(swizzling)寄存器输入、通过数值转换单元922A-B进行数值转换,和通过复制单元924进行对存储器输入的复制。写掩码寄存器926允许断言所得的向量写入。
可以各种方式混合寄存器数据,如,来支持矩阵乘法。来自存储器的数据可跨VPU通道地被复制。这是图形和非图形并行数据处理中的通用操作,这显著增加了高速缓存效率。
环形网络是双向的,以允许诸如CPU核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012比特宽。
示例性无序体系结构—图7
图10是示出根据本发明的实施例的示例性无序架构的框图。特定地,图 10示出公知的示例性无序架构,其已经被修改为结合了向量友好指令格式以及其执行。在图10中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示这些单元之间的数据流的方向。图10包括耦合到执行引擎单元1010和存储器单元1015的前端单元1005;执行引擎单元1010还耦合到存储器单元1015。
前端单元1005包括耦合到二级(L2)分支预测单元1022的一级(L1)分支预测单元1020。L1和L2分支预测单元1020和1022耦合到L1指令高速缓存单元1024。L1指令高速缓存单元1024耦合至指令翻译后备缓冲器(TLB) 1026,该TLB 1026进一步耦合至指令提取和预解码单元1028。指令提取和预解码单元1028耦合至指令队列单元1030,该单元1030进一步耦合至解码单元 1032。解码单元1032包括复杂解码器单元1034和三个简单解码器单元1036、 1038和1040。解码单元1032包括微代码ROM单元1042。在解码级段中,解码单元7可如上所述地操作。L1指令高速缓存单元1024还耦合到存储器单元 1015中的L2高速缓存单元1048。指令TLB单元1026还耦合到存储器单元1015 中的二级TLB单元1046。解码单元1032、微代码ROM单元1042、和环流检测器(LSD)单元1044各自耦合到执行引擎单元1010中的重命名/分配器单元 1056。
执行引擎单元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。
存储器单元1015包括耦合到数据TLB单元1052的二级TLB单元1046。数据TLB单元1052耦合到L1数据高速缓存单元1054。L1数据高速缓存单元 1054还耦合到L2高速缓存单元1048。在一些实施例中,L2高速缓存单元1048 还耦合到存储器单元1015内部和/或外部的L3和更高级高速缓存单元1050。
以示例的方式,示例性无序体系结构可如下实现过程流水线8200:1)指令提取和预解码单元728执行取指和长度解码级;2)解码单元732执行解码级; 3)重命名/分配器单元1056执行分配级和重命名级;4)统一调度器1058执行调度级;5)物理寄存器组单元1076、重排序缓冲器单元1078、和存储器单元1015 执行寄存器读取/存储器读取级;执行单元1060进行执行/数据转换级;6)存储器单元1015和重排序缓冲器单元1078执行写回/存储器写入级1960;7)引退单元1074执行ROB读取级;8)各单元可牵涉到异常处理级;以及9)引退单元 1074和物理寄存器组单元1076执行提交级。
示例性计算机系统和处理器-图8-10
图11-13示出适于包括处理器101的示例性系统。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够含有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
现在参考图11,所示出的是根据本发明实施例的系统1100的框图。系统 1100可包括耦合至图形存储器控制器中枢(GMCH)1110的一个或多个处理器 1115、1120。附加的处理器1115的任选性在图11中通过虚线来表示。
每一处理器1110、1115可以是处理器1100的某种版本。然而,应该注意,集成图形逻辑和集成存储器控制单元未必存在于处理器1110和1115中。
图11示出GMCH 1120可耦合至存储器1140,该存储器1140可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。
GMCH 1120可以是芯片组或芯片组的一部分。GMCH 1120可以与处理器 (多个)1110、1115进行通信,并控制处理器1110、1115与存储器1140之间的交互。GMCH 1120还可充当(各)处理器(多个)1110、1115和系统1100 的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 1120经由诸如前端总线(FSB)1195之类的多分支总线与处理器(多个)1110、1115进行通信。
此外,GMCH 1120耦合至显示器1145(诸如平板显示器)。GMCH 1120 可包括集成图形加速器。GMCH 1120还耦合至输入/输出(I/O)控制器中枢(ICH) 1150,该输入/输出(I/O)控制器中枢(ICH)1150可用于将各种外围设备耦合至系统1100。例如,在图11的实施例中示出了外部图形设备860以及另一外围设备1170,该外部图形设备860可以是耦合至ICH 1150的分立图形设备。
可选地,系统1100中还可存在附加或不同的处理器。例如,附加处理器 (多个)1115可包括与处理器1110相同的附加处理器(多个)、与处理器1110 异类或不对称的附加处理器(多个)、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。按照包括体系结构、微体系结构、热、功耗特征等等优点的度量谱,物理资源1110、1115之间存在各种差别。这些差别自身会有效显示为处理元件1110、1115之间的不对称性和相异性。对于至少一个实施例,各种处理元件1110、1115可驻留在同一管芯封装中。
现在参照图9,所示出的是根据本发明一实施例的第二系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,且包括经由点对点互连 1250耦合的第一处理器1270和第二处理器1280。如图12所示,处理器1270 和1280中的每个可以是处理器101的某一版本。
可选地,处理器1270、1280中的一个或多个可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。
虽然仅以两个处理器1270、1280来示出,但应理解本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理元件。
处理器1270还可包括集成存储器控制器中枢(IMC)1272和点对点(P-P) 接口1276和1278。类似地,第二处理器1280可包括IMC 1282和P-P接口1286 与1288。处理器1270、1280可以经由使用点对点(PtP)接口电路1278、1288的点对点(PtP)接口1250来交换数据。如图12所示,IMC的1272和1282将处理器耦合到相应的存储器,即存储器1242和存储器1244,这些存储器可以是本地附连到相应处理器的主存储器部分。
处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、和1298的各个P-P接口1252、1254与芯片组1290交换数据。芯片组1290还可经由高性能图形接口1239与高性能图形电路938交换数据。
共享高速缓存(未示出)可以被包括在两个处理器的任一个之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将处理器置于低功率模式,则可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。芯片组1290可以经由接口1296被耦合到第一总线1216。在一个实施例中,第一总线916可以是外围部件互连(PCI)总线,或诸如PCI Express 总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图12所示,各种I/O设备1214可连同总线桥1218一起耦合到第一总线 1216,总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,各设备可耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信设备1226、以及可包括代码1230的诸如盘驱动器或其它海量存储设备的数据存储单元1228。进一步地,音频I/O 1224可以耦合到第二总线1220。注意,其它体系结构是可能的。例如,代替图12的点对点架构,系统可实现多分支总线或者其他此类架构。
现在参照图13,所示出的是根据本发明实施例的第三系统1300的框图。图12和图13中的相同部件用相同附图标记表示,并从图13中省去了图12中的某些方面,以避免使图13的其它方面变得含糊不清。
图13示出处理元件1270、1280可分别包括集成存储器和I/O控制逻辑 (“CL”)1272和1282。对于至少一个实施例,CL 1272、1282可包括存储器控制器中枢逻辑(IMC)。此外,CL1272、1282还可包括I/O控制逻辑。图10示出:不仅存储器1242、1244耦合至CL 1272、1282,I/O设备1214也耦合至控制逻辑1272、1282。传统I/O设备1215被耦合至芯片组1290。
现在参照图14,所示出的是根据本发明实施例的SoC 1400的框图。图15 中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图14中,互连单元(多个)1402耦合至:应用处理器1410,包括一个或多个核1402A-N的集合和共享高速缓存单元(多个)1406;系统代理单元1410;总线控制器单元(多个)1414;集成存储器控制器单元(多个)1414;一个或多个媒体处理器1420的集合,可包括集成图形逻辑1408、用于提供静态和/或视频照相机功能的图像处理器1424、用于提供硬件音频加速的音频处理器1426、以及用于提供视频编码/解码加速的视频处理器1428;静态随机存取存储器 (SRAM)单元1430;直接存储器存取(DMA)单元1432;以及显示单元1440,用于耦合至一个或多个外部显示器。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用至输入数据以执行本文描述的功能并产生输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路 (ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易失性的有形装置,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器 (DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器 (EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含向量友好指令格式的指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形(morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图16是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。
图16示出可以使用x86编译器1604来编译高级语言1602的程序,以便生成可以由具有至少一个x86指令集核1616的处理器原生地执行的x86二进制代码1606(假设指令中的一些是以向量友好指令格式编译的)。具有至少一个x86指令集核1816的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分或(2)旨在在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的对象代码版本,从而执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。 x86编译器1804表示用于生成x86二进制代码1606(例如,对象代码)的编译器,该二进制代码1616可通过或不通过附加的可链接处理在具有至少一个 x86指令集核1016的处理器上执行。类似地,图16示出用高级语言1602的程序可以使用替代的指令集编译器1608来编译,以生成可以由不具有至少一个 x86指令集核的处理器1614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)来原生执行的替代指令集二进制代码1610。指令转换器1612被用来将x86二进制代码1606转换成可以由不具有x86指令集核1614的处理器原生执行的代码。该经转换的代码不大可能与替换性指令集二进制代码1610相同,因为难以制出能够这样做的指令转换器;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1612表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理器或核的处理器或其它电子设备得以执行x86二进制代码1606的软件、固件、硬件或其组合。
指令(多个)的某些操作可由硬件组件执行,且可体现在机器可执行指令中,该指令用于致使或至少导致以所述指令编程的电路或其它硬件组件执行所述操作。电路可包括通用或专用处理器、或逻辑电路,这里仅给出几个示例。这些操作还可任选地由硬件和软件的组合执行。执行逻辑和/或处理器可包括专用或特定电路或其它逻辑,其响应于机器指令或从机器指令导出的或一个或多个控制信号,而存储指令指定的结果操作数。例如,本文公开的指令(多个) 的实施例可在一个或多个系统中执行,且向量友好指令格式的指令(多个)的实施例可存储在将在系统中执行的程序代码中。另外这些附图的处理元件可利用本文详细描述的详细描述的流水线和/或架构(例如有序和无序架构)之一。例如,有序架构的解码单元可解码指令(多个)、将经解码的指令传送到向量或标量单元等。
上述描述旨在说明本发明的优选实施例。根据上述讨论,还应当显而易见的是,在发展迅速且进一步的进展难以预见的此技术领域中,本领域技术人员可在安排和细节上对本发明进行修改,而不背离落在所附权利要求及其等价方案的范围内的本发明的原理。例如,方法的一个或多个操作可组合或进一步分开。
可选实施例
尽管已经描述了将原生执行向量友好指令格式的实施例,但本发明的可选实施例可通过运行在执行不同指令集的处理器(例如,执行美国加利福亚州桑尼维尔的MIPS技术公司的MIPS指令集的处理器、执行加利福亚州桑尼维尔的ARM控股公司的ARM指令集的处理器)上运行的仿真层来执行向量友好指令格式。同样,尽管附图中的流程图示出本发明的某些实施例的特定操作顺序,但应理解该顺序是示例性的(例如,可选实施例可按不同顺序执行操作、组合某些操作、使某些操作重叠等)。
在以上描述中,出于解释的目的,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,对本领域技术人员而言将是明显的是,不用这些具体细节中的一些也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。

Claims (14)

1.一种用于在计算机处理器中执行过程的方法,包括:
将JH状态位存储于多个寄存器内;
解码一个或多个第一类型与第二类型的指令;
通过以下步骤执行一个或多个经解码的所述第一类型的指令从而在JH状态上执行S-Box映射和线性(L)变换:
第一次执行所述第一类型的单个指令以在存储于第一源寄存器内的所述JH状态的第一分量上执行S-Box映射和L变换,并且将结果在第一目的地寄存器内存储为第一JH状态结果,第二次执行所述第一类型的单个指令以在存储于第二源寄存器内的所述JH状态的第二分量上执行S-Box映射和L变换,并且将结果在第二目的地寄存器内存储为第二JH状态结果,第三次执行所述第一类型的单个指令以在存储于第三源寄存器内的所述JH状态的第三分量上执行S-Box映射和L变换,并且将结果在第三目的地寄存器内存储为第三JH状态结果,以及第四次执行所述第一类型的单个指令以在存储于第四源寄存器内的所述JH状态的第四分量上执行S-Box映射和L变换,并且将结果在第四目的地寄存器内存储为第四JH状态结果,其中,所述第一类型的指令的执行在JH状态的四分之一上实现64S-Box映射和32L变换,所述第一类型的指令的格式包括源向量寄存器操作数、目的地向量寄存器操作数以及用于存储用于S-Box选择的常数的操作数;以及
一旦已经由所述一个或多个第一类型的指令执行了S-Box映射和L变换,则通过以下步骤来执行一个或多个经解码的所述第二类型的指令来在所述JH状态上执行置换函数:从所述目的地寄存器的其中两个处检取JH状态结果;以及在来自所述两个目的地寄存器的JH结果上执行置换函数。
2.如权利要求1所述的方法,其特征在于,所述执行置换函数包括:
在所述第一JH状态结果和所述第二JH状态结果上执行第一置换函数;
在所述第三JH状态结果和所述第四JH状态结果上执行第二置换函数;
在所述第一JH状态结果和所述第二JH状态结果上执行第三置换函数;以及
在所述第三JH状态结果和所述第四JH状态结果上执行第四置换函数。
3.一种指令处理装置,包括:
多个数据寄存器;
用于解码第一类型与第二类型的指令的解码单元;以及
与所述多个数据寄存器耦合的执行单元,用于执行一个或多个经解码的所述第一类型的指令以在JH状态上执行S-Box映射和线性(L)变换,且一旦已经由所述一个或多个第一类型的指令执行了S-Box映射和L变换,则执行一个或多个经解码的所述第二类型的指令来在所述JH状态上执行置换函数,其中,所述第一类型的指令的执行在JH状态的四分之一上实现64S-Box映射和32L变换,所述第一类型的指令的格式包括源向量寄存器操作数、目的地向量寄存器操作数以及用于存储用于S-Box选择的常数的操作数,
其中,所述执行单元用于将第一次执行第一类型的指令的结果在第一目的地寄存器内存储为第一JH状态结果,将第二次执行第一类型的指令的结果在第二目的地寄存器内存储为第二JH状态结果,将第三次执行第一类型的指令的结果在第三目的地寄存器内存储为第三JH状态结果,且将第四次执行第一类型的指令的结果在第四目的地寄存器内存储为第四JH状态结果,
其中,所述执行单元用于第一次执行第一类型的单个指令以在存储于第一源寄存器内的所述JH状态的第一分量上执行S-Box映射和L变换,第二次执行第一类型的单个指令以在存储于第二源寄存器内的所述JH状态的第二分量上执行S-Box映射和L变换,第三次执行第一类型的单个指令以在存储于第三源寄存器内的所述JH状态的第三分量上执行S-Box映射和L变换,以及第四次执行第一类型的单个指令以在存储于第四源寄存器内的所述JH状态的第四分量上执行S-Box映射和L变换,
其中,所述执行单元用于从所述目的地寄存器其中两个处检取JH状态结果,且在来自所述两个目的地寄存器的JH状态结果上执行置换函数。
4.如权利要求3所述的指令处理装置,其特征在于,所述执行单元用于:在所述第一JH状态结果和所述第二JH状态结果上执行第一置换函数,在所述第三JH状态结果和所述第四JH状态结果上执行第二置换函数,在所述第一JH状态结果和所述第二JH状态结果上执行第三置换函数,且在所述第三JH状态结果和所述第四JH状态结果上执行第四置换函数。
5.一种用于执行JH加密散列的设备,包括:
第一指令执行装置,用于执行一个或多个经解码的第一类型的指令从而在JH状态上执行S-Box映射和线性(L)变换,其中,所述第一类型的指令的执行在JH状态的四分之一上实现64S-Box映射和32L变换,所述第一类型的指令的格式包括源向量寄存器操作数、目的地向量寄存器操作数以及用于存储用于S-Box选择的常数的操作数,其中所述第一指令执行装置进一步用于:第一次执行第一类型的单个指令以在存储于第一源寄存器内的所述JH状态的第一分量上执行S-Box映射和L变换,并且将结果在第一目的地寄存器内存储为第一JH状态结果,第二次执行第一类型的单个指令以在存储于第二源寄存器内的所述JH状态的第二分量上执行S-Box映射和L变换,并且将结果在第二目的地寄存器内存储为第二JH状态结果,第三次执行第一类型的单个指令以在存储于第三源寄存器内的所述JH状态的第三分量上执行S-Box映射和L变换,并且将结果在第三目的地寄存器内存储为第三JH状态结果,以及第四次执行第一类型的单个指令以在存储于第四源寄存器内的JH状态的第四分量上执行S-Box映射和L变换,并且将结果在第四目的地寄存器内存储为第四JH状态结果;以及
第二指令执行装置,用于一旦已经执行了S-Box映射和L变换,则执行一个或多个经解码的第二类型的指令来在所述JH状态上执行置换函数,其中,所述第二指令执行装置进一步用于:在所述第一JH状态结果和所述第二JH状态结果上执行第一置换函数,在所述第三JH状态结果和所述第四JH状态结果上执行第二置换函数,在所述第一JH状态结果和所述第二JH状态结果上执行第三置换函数,以及在所述第三JH状态结果和所述第四JH状态结果上执行第四置换函数。
6.一种用于在计算机处理器中执行过程的方法,包括:
在第一寄存器内存储JH状态的第一组奇半字节;
在第二寄存器内存储JH状态的第二组奇半字节;
在第三寄存器内存储JH状态的第一组偶半字节;
在第四寄存器内存储JH状态的第二组偶半字节;
解码一个或多个第一类型和第二类型的指令;
并且执行一个或多个第一类型的指令包括:
通过以下步骤执行一个或多个经解码的所述第一类型的指令从而在所述JH状态上执行S-Box映射:第一次执行第一类型的单个指令,从而在所述第一组奇半字节上执行S-Box映射,并且将结果在第一目的地寄存器内存储为第一奇半字节结果,第二次执行第一类型的单个指令,从而在所述第二组奇半字节上执行S-Box映射,并且将结果在第二目的地寄存器内存储为第二奇半字节结果,第三次执行第一类型的单个指令,从而在所述第一组偶半字节上执行S-Box映射,并且将结果在第三目的地寄存器内存储为第一偶半字节结果,以及第四次执行第一类型的单个指令,从而在所述第二组偶半字节上执行S-Box映射,并且将结果在第四目的地寄存器内存储为第二偶半字节结果;以及
通过执行以下步骤来执行一个或多个经解码的所述第二类型的指令来在所述JH状态的S-Box映射上执行线性(L)变换:在所述第一偶半字节结果上执行第一L变换,在所述第二偶半字节结果上执行第二L变换,在所述第一奇半字节结果上执行第三L变换,以及在所述第二奇半字节结果上执行第四L变换;并通过以下步骤来执行一个或多个经解码的第三类型的指令来执行置换函数:从所述目的地寄存器的其中两个处检取JH状态结果以及在来自所述两个目的地寄存器的JH结果上执行置换函数。
7.如权利要求6所述的方法,其特征在于,还包括执行交换操作,所述交换操作执行所述L变换。
8.如权利要求7所述的方法,其特征在于,所述交换操作包括以下项中的一项:交换相邻偶半字节、交换偶半字节对、交换4个半字节的偶数组、交换8个半字节的偶数组、交换16个半字节的偶数组、交换32个半字节的偶数组、和交换64个半字节的偶数组。
9.一种指令处理装置,包括:
多个数据寄存器;以及
与所述多个数据寄存器耦合的执行单元,用于在第一寄存器内存储JH状态的第一组奇半字节,用于在第二寄存器内存储JH状态的第二组奇半字节,用于在第三寄存器内存储JH状态的第一组偶半字节以及用于在第四寄存器内存储JH状态的第二组偶半字节,以及用于执行一个或多个经解码的第一类型的指令以在所述JH状态上执行S-Box映射,且执行一个或多个经解码的第二类型的指令来在所述JH状态的S-Box映射上执行线性(L)变换,
其中,所述执行单元用于:第一次执行第一类型的单个指令从而在所述第一组奇半字节上执行S-Box映射并且将结果在第一目的地寄存器内存储为第一奇半字节结果,第二次执行第一类型的单个指令从而在所述第二组奇半字节上执行S-Box映射并且将结果在第二目的地寄存器内存储为第二奇半字节结果,第三次执行第一类型的单个指令从而在所述第一组偶半字节上执行S-Box映射并且将结果在第三目的地寄存器内存储为第一偶半字节结果,且第四次执行第一类型的单个指令从而在所述第二组偶半字节上执行S-Box映射并且将结果在第四目的地寄存器内存储为第二偶半字节结果,
其中,所述执行单元用于:在所述第一偶半字节结果上执行第一L变换,在所述第二偶半字节结果上执行第二L变换,在所述第一奇半字节结果上执行第三L变换,且在所述第二奇半字节结果上执行第四L变换。
10.如权利要求9所述的指令处理装置,其特征在于,所述执行单元用于执行交换操作,所述交换操作执行所述L变换。
11.如权利要求10所述的指令处理装置,其特征在于,所述交换操作包括以下项中的一项:交换相邻偶半字节、交换偶半字节对、交换4个半字节的偶数组、交换8个半字节的偶数组、交换16个半字节的偶数组、交换32个半字节的偶数组、和交换64个半字节的偶数组。
12.一种计算机系统,包括:
互连;
与所述互连耦合的动态随机访问存储器(DRAM);以及
与所述互连耦合的处理器,所述处理器包括如权利要求3-4中任一项所述的指令处理装置,或者权利要求5中所述的设备。
13.一种机器可读存储介质,所述机器可读介质包括存储在其上的指令,所述指令在被处理器执行时,使得所述处理器执行如权利要求1-2,6-8中任一项所述的方法。
14.一种计算系统,包括多个装置,每个装置用于执行如权利要求1-2,6-8中任一项所述的方法的步骤。
CN201180075826.9A 2011-12-22 2011-12-22 在256位数据路径中执行jh加密散列的指令 Active CN104011709B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066719 WO2013112118A2 (en) 2011-12-22 2011-12-22 Instructions to perform jh cryptographic hashing in a 256 bit data path

Publications (2)

Publication Number Publication Date
CN104011709A CN104011709A (zh) 2014-08-27
CN104011709B true CN104011709B (zh) 2018-06-05

Family

ID=48874037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075826.9A Active CN104011709B (zh) 2011-12-22 2011-12-22 在256位数据路径中执行jh加密散列的指令

Country Status (4)

Country Link
US (1) US9270460B2 (zh)
CN (1) CN104011709B (zh)
TW (2) TWI661356B (zh)
WO (1) WO2013112118A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104012031B (zh) * 2011-12-22 2017-07-21 英特尔公司 用于执行jh加密散列的指令
WO2013112118A2 (en) * 2011-12-22 2013-08-01 Intel Corporation Instructions to perform jh cryptographic hashing in a 256 bit data path
US9659123B2 (en) 2014-10-17 2017-05-23 21, Inc. Systems and methods for flexibly optimizing processing circuit efficiency
US11032061B2 (en) * 2018-04-27 2021-06-08 Microsoft Technology Licensing, Llc Enabling constant plaintext space in bootstrapping in fully homomorphic encryption
KR102457166B1 (ko) * 2020-11-23 2022-10-20 부산대학교 산학협력단 ARIA의 암호화 및 복호화를 지원하는 프로세서용 32bit 확장 명령어 체계를 갖는 하드웨어 모듈 및 이의 제어 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1383648A (zh) * 2000-07-04 2002-12-04 皇家菲利浦电子有限公司 用于对称密钥密码的替换盒
CN1993922A (zh) * 2004-07-30 2007-07-04 英特尔公司 流密码组合系统和方法
CN101086769A (zh) * 2006-06-07 2007-12-12 三星电子株式会社 用于加密输入数据的密码系统、错误检测电路及操作方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030002668A1 (en) * 2001-06-30 2003-01-02 Gary Graunke Multi-level, multi-dimensional content protections
JP4800615B2 (ja) 2002-07-29 2011-10-26 クゥアルコム・インコーポレイテッド ディジタル画像の符号化
US7502470B2 (en) * 2003-01-13 2009-03-10 Silicon Image, Inc. Method and apparatus for content protection within an open architecture system
KR100996023B1 (ko) 2005-10-31 2010-11-22 삼성전자주식회사 다중 안테나 통신 시스템에서 데이터 송수신 장치 및 방법
US8036379B2 (en) * 2006-03-15 2011-10-11 Microsoft Corporation Cryptographic processing
TWI322613B (en) 2006-11-15 2010-03-21 Quanta Comp Inc 3d image adjusting apparatus and method of the same
US8655939B2 (en) * 2007-01-05 2014-02-18 Digital Doors, Inc. Electromagnetic pulse (EMP) hardened information infrastructure with extractor, cloud dispersal, secure storage, content analysis and classification and method therefor
US8675865B2 (en) * 2010-09-24 2014-03-18 Intel Corporation Method and apparatus for a high bandwidth stream cipher
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
CN104126174B (zh) * 2011-12-22 2017-06-06 英特尔公司 执行groestl散列的指令
WO2013112118A2 (en) * 2011-12-22 2013-08-01 Intel Corporation Instructions to perform jh cryptographic hashing in a 256 bit data path
CN104012031B (zh) 2011-12-22 2017-07-21 英特尔公司 用于执行jh加密散列的指令

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1383648A (zh) * 2000-07-04 2002-12-04 皇家菲利浦电子有限公司 用于对称密钥密码的替换盒
CN1993922A (zh) * 2004-07-30 2007-07-04 英特尔公司 流密码组合系统和方法
CN101086769A (zh) * 2006-06-07 2007-12-12 三星电子株式会社 用于加密输入数据的密码系统、错误检测电路及操作方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Hash Function JH;Hongjun Wu;《http://www3.ntu.edu.sg/home/wuhj/research/jh》;20110320;正文第10页第4.4节,第11页图6,第45页第B.2.9节,第46页图11 *
Low Power FPGA Implementations of JH and Fugue Hash Functions;George Provelengios等;《2011 14th Euromicro Conference on Digital System Design》;20110902;正文第418页第2栏第2段,图1 *
Performance improvements for SHA-3 finalists by exploiting microcontroller on-chip parallelism;Pal-Stefan Murvay等;《2011 6th International Conference on Risks and Security of Internet and System(CRiSIS)》;20110928;正文第1页第1栏第1段,第5页第1栏第2段,第6页第1栏第1段,图4 *

Also Published As

Publication number Publication date
TWI641991B (zh) 2018-11-21
TW201342211A (zh) 2013-10-16
US9270460B2 (en) 2016-02-23
CN104011709A (zh) 2014-08-27
TWI661356B (zh) 2019-06-01
WO2013112118A3 (en) 2013-10-24
WO2013112118A2 (en) 2013-08-01
TW201842442A (zh) 2018-12-01
US20140205084A1 (en) 2014-07-24

Similar Documents

Publication Publication Date Title
CN103975302B (zh) 矩阵乘法累加指令
US11849035B2 (en) Instructions and logic to provide SIMD SM4 cryptographic block cipher
CN104484284B (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN104126174B (zh) 执行groestl散列的指令
CN104025039B (zh) 打包数据操作掩码串接处理器、方法、系统及指令
CN104641346B (zh) 用于在128位数据路径上的sha1轮处理的指令集
CN105409158B (zh) 提供安全密码散列回合功能的处理器和方法
ES2886348T3 (es) Procedimiento y aparato para procesar un algoritmo de hashing seguro SHA-2
CN103562854B (zh) 用于对齐寄存器的系统、装置和方法
CN104011663B (zh) 掩码寄存器上的广播操作
CN104126170B (zh) 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令
CN104025024B (zh) 打包数据操作掩码移位处理器、方法及系统
CN104025502A (zh) 用于处理blake安全散列算法的指令处理器、方法以及系统
CN110138541A (zh) 用于对称密钥密码的统一硬件加速器
CN109313549A (zh) 用于向量的元素排序的装置、方法和系统
CN104583940B (zh) 用于skein256 sha3算法的处理器、方法、数据处理系统和设备
CN108830112A (zh) 用于处理安全哈希算法的指令处理器、方法、和系统
CN104011709B (zh) 在256位数据路径中执行jh加密散列的指令
CN110321157A (zh) 用于具有可变精度输入操作数的融合乘-加操作的指令
CN107924308A (zh) 数据元素比较处理器、方法、系统和指令
CN108196823A (zh) 用于执行双块绝对差求和的系统、装置和方法
CN107111554A (zh) 用于在加载数据元素以供执行时考虑空间局部性的装置和方法
CN104012031B (zh) 用于执行jh加密散列的指令

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