CN103975302B - 矩阵乘法累加指令 - Google Patents
矩阵乘法累加指令 Download PDFInfo
- Publication number
- CN103975302B CN103975302B CN201180075233.2A CN201180075233A CN103975302B CN 103975302 B CN103975302 B CN 103975302B CN 201180075233 A CN201180075233 A CN 201180075233A CN 103975302 B CN103975302 B CN 103975302B
- Authority
- CN
- China
- Prior art keywords
- matrix
- value
- register
- stored
- xor
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims description 26
- 238000003860 storage Methods 0.000 claims description 19
- 235000013399 edible fruits Nutrition 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims 1
- 230000015654 memory Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 25
- 238000006243 chemical reaction Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 22
- 210000004027 cell Anatomy 0.000 description 15
- 238000011049 filling Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 238000002156 mixing Methods 0.000 description 9
- 230000004087 circulation Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000011068 loading method Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000003756 stirring Methods 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101001122448 Rattus norvegicus Nociceptin receptor Proteins 0.000 description 1
- 235000013290 Sagittaria latifolia Nutrition 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 235000015246 common arrowhead Nutrition 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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
-
- 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
- G06F9/3001—Arithmetic instructions
-
- 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
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Abstract
描述了一种方法。该方法包括对存储在第三寄存器中的结果矩阵中的每个位置迭代地执行下列步骤:将存储在第一寄存器中的矩阵位置处的值与存储在第二寄存器中的矩阵位置处的值相乘以获得第一乘法值,其中第一寄存器和第二寄存器中的位置是通过结果矩阵中的位置确定的;并与该第一乘法值和存储在第三寄存器中的结果矩阵位置处的值执行异或(XOR)运算以获得结果值。
Description
发明领域
本公开涉及密码学算法,并尤其涉及Groestl安全散列算法。
背景技术
密码术是依赖于算法和密钥来保护信息的工具。该算法是复杂的数学算法并且密钥是一串位。存在两种基本类型的密码术系统:秘密密钥系统和公共密钥系统。秘密密钥系统也称为具有由两方或更多方共享的单个密钥(“秘密密钥”)的对称系统。该单个密钥既用于加密又用于解密信息。
由国家标准和技术机构(NIST)发布作为联邦信息处理标准(FIPS)197的先进加密标准(AES)是秘密密钥系统。AES是加密和解密信息的对称块密码。Groestl算法是基于AES的迭代散列函数,其具有从两个固定的、大型的、相异的排列(P和Q)建立的压缩函数。
压缩函数(f)是经由P和Q的排列定义的,以使:f(h,m)=P(h XOR m)XOR Q(m)XORh,其中函数P和Q是排列函数而hi-1是输入状态,mi是消息块数据,而hi是结果状态。加密(密码)使用秘密密钥(密码密钥)执行一系列变换以将被称为“明文”的可理解数据转换成被称为“密文”的不可理解形式。密码的变换包括:(1)使用异或(XOR)操作将轮次(round)常数(从P函数和Q函数导出的值)加至状态(二维字节阵列);(2)使用非线性字节替换表(S-盒)来处理该状态;(3)将状态的最后三行循环移位不同的偏移量;以及(4)取状态的所有列并混合它们的数据(彼此独立地)以产生新的列。
解密(逆密码)使用密码密钥执行一些列变换以将“密文”块变换成相同大小的“明文”块。逆密码中的变换是密码中的逆变换。
Groestl算法在10或14个连续轮次内将明文变换成密文或将密文变换成明文,轮次数依赖于密钥的长度。
附图简述
结合附图从下面的详细说明中可获得本发明的更好理解,在附图中:
图1是示出系统的一个实施例的框图;
图2是示出处理器的一个实施例的框图;
图3是示出填充的数据寄存器的一个实施例的框图;
图4A和4B示出通过MUL_ACCUMULATE_BYTE_GF2指令执行的过程的实施例;
图5是根据本发明一个实施例的寄存器架构的框图;
图6A是根据本发明实施例的单个CPU核连同它与管芯上互连网络的连接以及其级2(L2)高速缓存的局部子集的框图;
图6B是根据本发明实施例的CPU核的一部分的分解图;
图7是示出根据本发明实施例的示例性无序架构的框图;
图8是根据本发明一个实施例的系统的框图;
图9是根据本发明实施例的第二系统的框图;
图10是根据本发明实施例的第三系统的框图;
图11是根据本发明实施例的片上系统(SoC)的框图;
图12是根据本发明实施例的具有集成的存储器控制器和图形设备的单核处理器和多核处理器的框图;以及
图13是根据本发明的实施例对照使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在下面的描述中,出于说明目的阐述了众多具体细节以便提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实施本发明。在其它实例中,公知的结构和设备以框图形式被示出以避免混淆本发明的基础原理。
在本说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。在本说明书各处出现的短语“在一个实施例中”并不一定均指代同一实施例。
描述了包括指令以处理Groestl安全散列算法的机制。如前所述,Groestl算法是密码学散列函数,它基于在AES标准中规定的Rijindael算法。AES标准包括指令集(例如AES指令集),它提供指令集扩展以在通用处理器中执行AES加密和解密。
AES指令集是对x86指令集架构(ISA)的扩展,它使用AES算法提高了应用的速度。根据一个实施例,AES指令集扩展被实现以执行Groestl算法。图1是包括AES指令集扩展以在通用处理器中执行Groestl加密和解密的系统100的一个实施例的框图。
系统100包括处理器101、存储器控制器中枢(MCH)102和输入/输出(I/O)控制器中枢(ICH)104。MCH102包括存储器控制器106,其控制处理器101和存储器108之间的通信。处理器101和MCH102在系统总线116之上通信。
处理器101可以是多个处理器中的任何一个,例如单核Pentium处理器、单核英特尔Celeron处理器、XScale处理器或诸如Pentium D、processor、i3、i5、i7、2Duo和Quad,处理器之类的多核处理器,或者任何其它类型的处理器。
存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、双倍数据率(DDR2)RAM或Rambus动态随机存取存储器(RDRAM)或任何其它类型的存储器。
ICH104可使用诸如直接媒体接口(DMI)之类的高速芯片-芯片互连114耦合至MCH102。DMI支持经由两个单向通道的2吉比特/秒并发传输率。
ICH104可包括存储I/O控制器110,用于控制与耦合至ICH104的至少一个存储设备112的通信。存储设备可以是例如盘驱动器、数字视频盘(DVD)驱动器、压缩盘(CD)驱动器、独立盘冗余阵列(RAID)、磁带驱动器或其它存储设备。ICH104可使用串行存储协议在存储协议互连118上与存储设备112通信,该串行存储协议例如是串行附属小型计算机系统接口(SAS)或串行高级技术附件(SATA)。
在一个实施例中,处理器101包括Groestl函数103以执行Groestl加密和解密操作。Groestl函数103可用于对存储在存储器108和/或存储在存储设备112内的信息进行加密或解密。
图2是示出处理器101的一个实施例的框图。处理器101包括提取和解码单元202,用于解码从1级(L1)指令高速缓存202接收的处理器指令。用于执行指令的数据可被存储在寄存器文件208中。在一个实施例中,寄存器文件208包括多个寄存器,这些寄存器由AES指令使用以存储由AES指令使用的数据。
图3是寄存器文件208中适当的一组填充数据寄存器的示例性实施例的框图。所示出的填充数据寄存器包括32个512位填充数据或向量寄存器。这些32个512位寄存器被标记为ZMM0-ZMM31。在图示实施例中,这些寄存器中较低的十六个(即ZMM0-ZMM15)的较低阶256位重叠或覆盖在被标记为YMM0-YMM15的相应256位填充数据或向量寄存器上,尽管这不是必需的。
同样,在图示实施例中,YMM0-YMM15的较低阶128个位重叠或覆盖在被标记为XMM0-XMM1相应128位填充数据或向量寄存器上,尽管这不是必需的。512位寄存器ZMM0-ZMM31可操作用于保持512位填充数据、256位填充数据或128位填充数据。
256位寄存器YMM0-YMM15可操作用于保持256位填充数据,或128位填充数据。128位寄存器XMM0-XMM1可操作用于保持128位填充数据。这些寄存器中的每一个可被用来存储填充的浮点数据或填充的整数数据。支持不同的数据元素大小,包括至少8位字节数据、16位字数据、32位双字或单精度浮点数据以及64位四字或双精度浮点数据。填充数据寄存器的替代实施例可包括不同数量的寄存器、不同大小的寄存器,并可以或可以不在较小寄存器上重叠的较大寄存器。
回来参见图2,提取和解码单元202从L1指令高速缓存202提取宏指令,解码这些宏指令并将它们分解成被称为微操作(μop)的简单操作。执行单元210调度和执行微操作。在图示实施例中,执行单元210中的Groestl函数103包括AES指令的微操作。引退单元212将已执行指令的结果写入寄存器或存储器。
Groestl函数103执行压缩函数f(h,m)=P(h XOR m)XOR Q(m)XOR h,其中使用轮次数R来设计P和Q的排列,轮次数R包括轮次变换的次数。在Groestl函数103中,对每次排列定义总共四个轮次变换。变换在状态上操作,表示为8位字节的矩阵(例如矩阵A)。在一个实施例中,矩阵具有8行和8列。然而,其它实施例可实现其它变型(例如8行和16列)。
在一个实施例中,由Groestl函数103执行的变换序列包括轮次常数加(AC)变换、子字节(SubBytes)变换、字节移位(ShiftBytes)变换和混合字节(MixBytes)变换。
AC变换将依赖轮次的常数(例如A←A XOR c[i],其中c[i]是在轮次i中使用的轮次常数)加到状态矩阵A。P和Q具有不同的轮次常数。
子字节变换以另一值替换状态矩阵中的每个字节。使用非线性比特替换表(S-盒)来处理状态。子字节是通过将S盒变换施加至每一个16字节来定义的16字节-16字节(逐字节)变换。
S盒变换可经由查找表表示如下:对查找表的输入是字节B[7:0],其中x和y代表低和高半字节x[3:0]=B[7:4],y[3:0]=B[3:0]。输出字节在表中被编码成十六进制(H)标记的两位数。在一个实施例中,AES-NI指令集提供精确功能以执行Groestl的子字节。在这一实施例中,子字节变换是使用AES-NI指令AESENCLAST来计算的。
字节移位变换在行中循环地将字节左移位一定数量的位置。在一个实施例中,字节移位执行AES-NI指令PSHUFB以快速地重排序XMM寄存器中的字节。
当P和Q矩阵在XMM/YMM寄存器中按行组织时,AC和字节移位操作不是计算密集的,而同时可使用AES-NI指令AESENCLAST对于高达16个字节计算子字节操作。由此,AES指令集中的大多数复杂性和循环归因于混合字节操作。
混合字节变换独立地变换矩阵中的每个列。混合字节实现有限字段F256,它经由对F2不可约的多项式x8XOR x4XOR x3XOR x XOR1来定义。状态矩阵A的字节可被视为F256的元,(例如被视为具有系数{0,1}的最多7阶多项式)。每个字节的最低有效位确定x0的系数等。
混合字节将矩阵A中的每个列乘以F256中的常数8X8矩阵B。由此,在整个矩阵A上的变换可被写成矩阵乘A←B x A。在一个实施例中,矩阵B是循环的(例如每个行等于上一行向右循环一个位置并被规定为:
由此,B=circ(02;02;03;04;05;03;05;07)。状态矩阵的每个行在F256中与循环B矩阵的8个行相乘并累加,以每次一行地发展混合字节变换。这种操作取8个指令(F256中的64乘/累加)。对于Groestl-224/256,实现总共64x8Galois字段(GF)256乘/累加(具有02,03,04,05,07的乘数)。
由于Groestl状态是按行组织的,因此更新的状态矩阵每次一行地形成,由此:结果行1=A行1*02+A行2*02+A行3*03+A行4*04+A行5*05+A行6*03+A行7*05+A行8*07
结果行2=A行1*07+A行2*02+A行3*02+A行4*03+A行5*04+A行6*05+A行7*03+A行8*05
结果行3=A行1*05+A行2*07+A行3*02+A行4*02+A行5*03+A行6*04+A行7*05+A行8*03
结果行4=A行1*03+A行2*05+A行3*07+A行4*02+A行5*02+A行6*03+A行7*04+A行8*05
结果行5=A行1*05+A行2*03+A行3*05+A行4*07+A行5*02+A行6*02+A行7*03+A行8*04
结果行6=A行1*04+A行2*05+A行3*03+A行4*05+A行5*07+A行6*02+A行7*02+A行8*03
结果行7=A行1*03+A行2*04+A行3*05+A行4*03+A行5*05+A行6*07+A行7*02+A行8*02
结果行8=A行1*02+A行2*03+A行3*04+A行4*05+A行5*03+A行6*05+A行7*07+A行8*02
当前,与02,03,04,05和07的GF乘法是通过每行与2的八次GF乘法和双倍行乘积与2的另外八次GF乘法来实现的,同样产生每行4次乘积。这导致16次GF乘法。03因数被形成为行XOR2*行,05因数被形成为行XOR4*行,而07因数为行XOR2*row XOR4*行。此外,在传统系统中执行的XOR操作的总数从48至108变化。
在使用AES指令的传统系统,与2的GF乘法是通过创建寄存器来完成的,该寄存器具有用于被乘数字节的十六进制FF的字节,被乘数字节的最高有效位(msb)(例如=1)对超出256的每个字节乘积作实现1B的加法(XOR)。在该系统中,pcmpgtb指令被用来形成FF字节掩码寄存器。由此,与2的乘法需要四个或五个SIMD指令。由此,混合字节对于当前指令的预期表现是(16*4)+58=122次操作,这些操作需要每循环引退2个SIMD指令的61个循环。
根据一个实施例,实现新指令MAC_BYTE_MATRIX_GF2以通过执行两个矩阵的乘法累加操作来加速混合字节变换。在这一实施例中,MAC_BYTE_MATRIX_GF2被定义为MAC_BYTE_MATRIX_GF2ZMM1,ZMM2,imm8,其中ZMM2=在8字节行的64位部分中组织的最初8x8状态矩阵;ZMM3=乘法常数;ZMM1=新的8x8矩阵(例如结果矩阵);并且imm8表示8阶多项式。
图4A是示出对于结果矩阵中的每个字节位置8*i+j(ZMM1[i][j])通过MAC_BYTE_MATRIX_GF2指令执行的过程的一个实施例的流程图,其中索引i、j在范围[0–7]内。在处理框410,状态矩阵(例如矩阵A)中在8位位置(ZMM2[i][k])的值与常数矩阵(例如矩阵B)中的8位位置(ZMM3[k][j])相乘,其中k表示该过程中的迭代(0-7)以将每个多项式项考虑在内。
在一个实施例中,乘法结果值是16位值,它经由处理框420简化至8位值。在处理框430,乘法/简化结果值与当前位置值ZMM1[i][j]异或XOR。在处理框430,结果值被存储在ZMM1[i][j]中。在判定框440,判断在ZMM2和ZMM3中是否存在附加的行位置以进行处理以考虑附加的多项式迭代。
如果是,控制返回到处理框410,在那里重复该过程。否则,过程对于当前ZMM1位置结束(例如ZMM1[i0][j0]),并对于接下来的位置(例如ZMM1[i1][j0]、ZMM1[i1][j1]等)重复。图4B示出MAC_BYTE_MATRIX_GF2指令的伪代码的一个实施例。
在其它实施例中,过程可以以不同顺序执行。例如,简化运算在过程中可作为最后的步骤来执行(例如在已对该矩阵执行了所有乘法和XOR函数之后)。MAC_BYTE_MATRIX_GF2指令在3循环流水线中被实现,这允许在4个循环中计算P&Q矩阵。对于该指令的结果性能提升是对于两个P&Q8x8Groestl状态矩阵的混合字节计算从60个循环减小至4个循环。
在其它实施例中,Groestl-1024使用相同的指令以在P1024和Q1024状态矩阵上执行混合字节操作,对于矩阵的左8x8侧使用2MUL_BYTE_GF2指令而对矩阵的右8x8侧使用2MUL_BYTE_GF2指令。
尽管在Groestl算法的背景下进行了描述,然而MAC_BYTE_MATRIX_GF2指令可在实现矩阵乘法累加函数的任何类型应用(例如里德所罗门码(Reed Solomon Codes))中使用。在该实施例中,状态矩阵和Groestl常数矩阵被一般矩阵值代替。示例性寄存器架构-图5
图5是根据本发明一个实施例的寄存器架构500的框图。寄存器架构的寄存器文件和寄存器如下列出:
向量寄存器文件510-在图示实施例中,存在32个512位宽的向量寄存器;这些寄存器被标识为zmm0-zmm31。较低的16个zmm寄存器的较低阶856位覆盖在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)覆盖在寄存器xmm0-15上。
写掩码寄存器515-在图示实施例中,存在8个写掩码寄存器(k0-K7),每个具有64位的大小。如之前描述的,在本发明的一个实施例中,向量掩码寄存器k0无法被用作写掩码;当对写掩码使用正常将表示k0的编码时,它选择0xFFFF的硬线写掩码,从效果上禁用对该指令的写掩码。
多媒体扩展控制状态寄存器(MXCSR)1020-在图示实施例中,该32位寄存器提供用于浮点操作的状态和控制位。
通用寄存器525-在图示实施例中,存在16个64位通用寄存器,它们与现有的x86寻址模式一起使用以寻址存储器操作数。这些寄存器通过名称RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP和R8-R15被引用。
扩展标志(EFLAGS)寄存器530-在图示实施例中,该32位寄存器被用来记录许多指令的结果。
浮点控制字(FCW)寄存器535和浮点状态字(FSW)寄存器540-在图示实施例中,这些寄存器由x87指令集扩展使用以在FCW的情形下设定循环模式、异常掩码和标志,并在FSW的情形下保持跟踪异常。
标量浮点堆栈寄存器文件(x87堆栈)545,在其上重叠MMX填充整数平坦寄存器文件1050-在图示实施例中,x87堆栈是八元素堆栈,其用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点运算;而MMX寄存器被用来对64位填充整数数据执行操作以及为在MMX和XMM寄存器之间执行的一些操作保持操作数。
段寄存器555-在图示实施例中,存在六个16位寄存器,用于存储用于分段地址生成的数据。
RIP寄存器565-在图示实施例中,该64位寄存器存储指令指针。
本发明的替代实施例可使用更宽或更窄的寄存器。附加地,本发明的替代实施例可使用更多、更少或不同的寄存器文件和寄存器。
示例性有序处理器架构-图6A-6B
图6A-B示出示例性有序处理器架构的框图。这些示例性实施例是围绕有序CPU核的多个实例设计的,该有序CPU核扩充有宽向量处理器(VPU)。根据场合,核通过高带宽互连网络与一些固定函数逻辑、存储器I/O接口和其它必要的I/O逻辑通信。例如,该实施例作为自立式GPU的实现一般包括PCIe总线。
图6A是根据本发明实施例的单个CPU核连同它与管芯上互连网络602的连接以及其2级(L2)高速缓存1104的局部子集的框图。指令解码器600支持具有扩展的x86指令集。尽管在本发明的一个实施例中(为简化设计),标量单元608和向量单元610使用单独的寄存器集合(分别是标量寄存器612和向量寄存器614)并且两者之间传输的数据被写入存储器并随后从1级(L1)高速缓存606读回,本发明的替代实施例可使用不同的方法(例如使用单个寄存器集合或包括允许数据在两寄存器文件之间传输而不会被写入和读回的通信路径)。
L1高速缓存606允许标量和向量单元对高速缓存存储器的低等待时间访问。结合向量友好指令格式中的操作数加载指令,这意味着L1高速缓存606某种程度上可被视为扩展的寄存器文件。这显著地提高了许多算法的性能。
L2高速缓存604的本地子集是全局L2高速缓存的一部分,全局L2高速缓存被划分成独立的本地子集,每个CPU核一个。每个CPU对其L2高速缓存604的自身本地子集具有直接访问路径。由CPU核读取的数据被存储在其L2高速缓存子集604中并可被快速访问,这与其它CPU访问其自身的本地L2高速缓存子集并行。由CPU核写入的数据被存储在其自身的L2高速缓存子集604中并从其它子集(如果需要)清除。环网络确保对共享数据的一致性。
图6B是根据本发明实施例图6A中的CPU核的一部分的分解图。图6B包括L1高速缓存604的L1数据高速缓存606A部分,并更详细地涉及向量单元610和向量寄存器1114。具体地说,向量单元610是16宽的向量处理单元(VPU)(参见16宽ALU1128),它执行整数、单精度浮点和双精度浮点指令。VPU支持通过拌和单元620对寄存器输入的拌和、通过数值转换单元622A-B的数值转换以及通过复制单元624对存储器输入的复制。写掩码寄存器626允许断言结果向量写入。
寄存器数据可以多种方式被拌和,例如以支持矩阵乘法。来自存储器的数据可跨VPU通道地被复制。这在图形和非图形并行数据处理两者中是常见操作,这显著地提高了高速缓存效率。
环网络是双向的,以允许诸如CPU核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环数据路径是每方向1012位宽。
示例性无序架构-图7
图7是示出根据本发明实施例的示例性无序架构的框图。具体地说,图7示出一种公知示例性无序架构,这种架构已被修改以纳入向量友好指令格式及其执行。在图7中,箭头表示两个或更多个单元之间的耦合并且箭头方向表示这些单元之间的数据流的方向。图7包括前端单元705,其耦合至执行引擎单元710和存储器单元715;执行引擎单元710进一步耦合至存储器单元715。
前端单元705包括1级(L1)分支预测单元720,其耦合至2级(L2)分支预测单元722。L1和L2分支预测单元720、722耦合至L1指令高速缓存单元724。L1指令高速缓存单元724耦合至指令翻译后备缓冲器(TLB)726,TL726被进一步耦合至指令提取和预解码单元728。指令提取和预解码单元728耦合至指令队列单元730,该指令队列单元730进一步耦合解码单元732。解码单元732包括复杂解码器单元734和三个简单解码器单元736、738和740。解码单元732包括微代码ROM单元742。解码单元7可在解码级部分如前所述地工作。L1指令高速缓存单元724进一步耦合至存储器单元715中的L2高速缓存单元748。指令TLB单元726进一步耦合至存储器单元715中的二级TLB单元746。解码单元732、微代码ROM单元742和环流检测器单元744各自耦合至执行引擎单元710中的重命名/分配单元756。
执行引擎单元710包括重命名/分配单元756,该重命名/分配单元756耦合至引退单元774和统一调度器单元758。引退单元774进一步耦合至执行单元760并包括重排序缓冲单元778。统一调度器单元758进一步耦合至物理寄存器文件单元776,物理寄存器文件单元776耦合至执行单元760。物理寄存器文件单元776包括向量寄存器单元777A、写掩码寄存器单元777B以及标量寄存器单元777C;这些寄存器单元可提供向量寄存器510、向量掩码寄存器515以及通用寄存器525;并且物理寄存器文件单元776可包括未示出的附加寄存器文件(例如在MMX填充的整数平坦寄存器文件550上重叠的标量浮点堆栈寄存器文件545)。执行单元1260包括:三个混合的标量和向量单元762、764和772;加载单元766、存储地址单元768、存储数据单元770。加载单元766、存储地址单元768和存储数据单元770各自进一步耦合至存储器单元715中的数据TLB单元752。
存储器单元715包括二级TLB单元746,其耦合至数据TLB单元752。数据TLB单元752耦合至L1数据高速缓存单元754。L1数据高速缓存单元754进一步耦合至L2高速缓存单元748。在一些实施例中,L2高速缓存单元748进一步耦合至在存储器单元715内部和/或外部的L3或更高高速缓存单元750。
例如,示例性无序架构可实现过程流水线8200如下:1)指令提取和预解码单元728执行提取和长度解码级;2)解码单元732执行解码级;3)重命名/分配单元756执行分配级和重命名级;4)统一调度器758执行调度级;5)物理寄存器文件单元776、重排序缓冲单元778和存储器单元715执行寄存器读取/存储器读取级;执行单元760履行执行/数据变换级;6)存储器单元715和重排序缓冲单元778执行回写/存储器写入级1960;7)引退单元774执行ROB读取级;8)各单元可涉及异常处理级;以及9)引退单元1274和物理寄存器文件单元776执行提交级。
示例性计算机系统和处理器-图8-10
图8-10是适于包括处理器101的示例性系统。对于膝上计算机、台式机、手持PC、个人数字助理、工程设计工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放机、手持设备和多种其它电子设备的业内已知的其它系统设计和配置也可适用。一般来说,能够纳入本文披露的处理器和/或其它执行逻辑的大量系统或电子设备通常是适用的。
现在参照图8,其中示出了根据本发明一个实施例的系统800的框图。系统800可包括一个或多个处理器800、815,它们耦合至图形存储器控制器中枢(GMCH)820。附加处理器815的选择性属性用虚线表示在图8中。
每个处理器810、815可以是处理器1700的某一版本。然而应当注意,集成的图形逻辑和集成的存储器控制单元未必出现在处理器810、815中。
图8示出GMCH820可耦合至存储器840,该存储器840例如可以是动态随机存取存储器(DRAM)。DRAM对于至少一个实施例可关联于非易失性高速缓存。
GMCH820可以是芯片集,或芯片集的一部分。GMCH820可与处理器810、815通信并控制处理器810、815和存储器840之间的交互。GMCH820也可充当处理器810、815和系统800的其它元件之间的加速总线接口。对于至少一个实施例,GMCH820经由例如前侧总线(FSB)895之类的多点总线与处理器810、815通信。
此外,GMCH820耦合至显示器845(例如平板显示器)。GMCH820可包括集成的图形加速器。GMCH820进一步耦合至输入/输出(I/O)控制器中枢(ICH)850,该ICH850可用来将多个外围设备耦合至系统800。例如图8的实施例中示出可以是耦合至ICH850的分立图形设备的外部图形设备860以及另一外围设备870。
替代地,附加或不同的处理器也可出现在系统800中。例如,附加处理器815可包括与处理器810相同的附加处理器、与处理器810异质或不对称的附加处理器、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。就优点度量谱而言物理资源810、815之间可能有多种差异,优点度量谱包括架构、微架构、热、功耗特性等等。这些差异可有效地将它们本身表现为在处理元件810、815之中的不对称性和异质性。对于至少一个实施例,多种处理元件810、815可留驻在同一管芯封装件内。
现在参照图9,其中示出了根据本发明实施例的第二系统900的框图。如图9所示,多处理器系统900是点对点互连系统,且包括经由点对点互连950耦合的第一处理器970和第二处理器980。如图9所示,处理器970、980中的每一个可以是处理器101的某一版本。
替代地,处理器970、980中的一个或多个可以是处理器以外的元件,例如加速器或现场可编程门阵列。
尽管图中仅示出两个处理器970、980,但要理解本发明的范围不限于此。在其它实施例中,一个或多个附加处理元件可出现在给定的处理器中。
处理器970可进一步包括集成的存储器控制器中枢(IMC)972和点对点(P-P)接口976、978。类似地,第二处理器980可包括IMC982和P-P接口986、988。处理器970、980可使用点对点(PtP)接口电路978、988经由PtP接口950交换数据。如图9所示,IMC972、982将处理器耦合至相应存储器,即存储器942和存储器944,这些存储器可以是本地附连至相应处理器的主存储器的一部分。
处理器970、980可各自使用点对点接口电路976,994,986,998经由各P-P接口952、954与芯片集990交换数据。芯片集990也可经由高性能图形接口939与高性能图形电路938交换数据。
可在任一个处理器中或在两个处理器外部包括共享的高速缓存(未示出),仍然经由P-P互连与处理器连接,从而如果将处理器置于低功率模式时,可将任一个或两个处理器的本地高速缓存信息存储在共享的高速缓存中。芯片集990可经由接口996耦合至第一总线916。在一个实施例中,第一总线916可以是外设组件互连(PCI)总线或者是例如快速PCI总线或另一第三代I/O互连总线之类的总线,但是本发明的实施例的范围不仅限于此。
如图9所示,各I/O设备99可耦合至第一总线916以及总线桥918,该总线桥918将第一总线916耦合至第二总线920。在一个实施例中,第二总线920可以是低引脚数(LPC)总线。在一个实施例中,各设备可耦合至第二总线920,包括例如键盘/鼠标922、通信设备926以及数据存储单元928,数据存储单元928例如是盘驱动器或可包括代码930的其它大容量存储设备。此外,音频I/O924可耦合至第二总线920。注意,其它架构也是可能的。例如,代替图9的点对点架构,系统可采用多点总线或其它类似架构。
现在参照图10,其中示出了根据本发明实施例的第三系统1500的框图。图9和图10中的相似要素用相似附图标记表示,并且图9的某些方面已从图10中省去以避免混淆图10的其它方面。
图10示出,处理元件970、980可分别包括集成的存储器和I/O控制逻辑(CL)972和982。对于至少一个实施例,CL972、982可包括存储器控制器中枢逻辑(IMC)。另外,CL972、982也可包括I/O控制逻辑。图10示出,不仅存储器942、944耦合至CL972、982,还有I/O设备914也耦合至控制逻辑972、982。传统I/O设备915耦合至芯片集990。
现在参照图11,其示出了根据本发明实施例的SoC1100的框图。图12中相似的要素用相似附图标记表示。另外,虚线框是更高级SoC上的可选特征。在图11中,互连单元1102耦合至:应用处理器1110,其包括一组一个或多个核1102A-N和共享高速缓存单元1106;系统代理单元1110;总线控制器单元1111;集成存储器控制器单元1114;一组一个或多个媒体处理器1120,它可包括集成图形逻辑1108、用于提供静止和/或视频相机功能的图像处理器1124;用于提供硬件音频加速的音频处理器1126以及用于提供视频编码/解码加速的视频处理器1128;静态随机存取存储器(SRAM)单元1130;直接存储器访问(DMA)单元1132;以及耦合至一个或多个外部显示器的显示单元1140。
本文披露的机构的实施例可以硬件、软件、固件或这些实现方法的组合来实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
程序代码可被应用以输入数据从而执行本文描述的功能并产生输出信息。输出信息可以已知方式被应用至一个或多个输出设备。为了本申请目的,处理系统包括具有处理器的任何系统,例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可实现在高级进程或面向对象的编程语言中,以与处理系统通信。如果需要,程序代码也可实现在汇编语言或机器语言中。事实上,本文描述的机制的范围不限于任何具体的编程语言。在任何情形下,语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表征性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的、机器可读的介质上,并被提供给各个消费者或生产设施以加载到实际制造该逻辑或处理器的制造机中。”
该机器可读存储介质可包括但不限于,通过机器或设备制作或形成的制品的非瞬态有形配置,包括:存储介质,例如硬盘、包含软盘、光盘(紧凑盘只读存储器(CD-ROM))、可重写紧凑盘(CD-RW)以及磁光盘的任何其他类型的盘;半导体设备,诸如只读存储器(ROM)、例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡或者适于存储电子指令的任何其它类型的介质。
因此,本发明的实施例也包括非瞬态、有形机器可读介质,其包含向量友好指令格式的指令或包含设计数据,例如硬件描述语言(HDL),它定义本文描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情形下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可翻译(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或以其它方式将指令转换成拟由核处理的一个或多个其它指令。该指令转换器可以以软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、在处理器外、或部分地在处理器上且部分地在处理器外。
图13是根据本发明的实施例对照使用软件指令转换器以将源指令集中的二进制指令转换至目标指令集中的二进制指令的框图。在图示实施例中,指令转换器是软件指令转换器,但是该指令转换器可替代地实现在软件、固件、硬件或其各种组合中。
图13示出,高级语言1302的程序可使用x86编译器1304编译以产生x86二进制代码1306,该x86二进制代码1306可通过具有至少一个x86指令集核的处理器1316在本机执行(假设被编译的这些指令中的一些指令采用向量友好指令格式)。具有至少一个x86指令集核的处理器1316代表具有下述特征的任何处理器:即能够通过可兼容地执行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分或(2)旨在运行在具有至少一个x86指令集核的Intel处理器上的应用或其它软件的目标代码版本,来执行与具有至少一个x86指令集核的Intel处理器基本相同的功能,以取得与具有至少一个x86指令集核的Intel处理器基本相同的结果。X86编译器1804代表可操作用于产生x86二进制代码1306(例如目标代码)的编译器,x86二进制代码1306可经过或不经过附加的链接处理,在具有至少一个x86指令集核的处理器1316上被执行。类似地,图90示出,高级语言1302的程序可使用替代的指令集编译器1308被编译以产生替代的指令集二进制代码1310,该替代的指令集二进制代码1310可通过没有至少一个x86指令集核的处理器1314(例如具有执行加利福尼亚州的桑尼维尔的MIPS科技的MIPS指令集的核的处理器和/或执行加利福尼亚州的桑尼维尔的ARM控股公司的ARM指令集的核的处理器)本机地执行。指令转换器1312被用来将x86二进制代码1306转换成可由不具有x86指令集核的处理器1314本机地执行的代码。这种经转换的代码未必与替代的指令集二进制代码1310相同,因为能够如此的指令转换器是难以制造的;然而,经转换的代码可完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1312代表软件、固件、硬件或其组合,它们通过仿真、模拟或任何其它过程使得不具有x86指令集处理器或核的处理器或其它电子设备能够执行x86二进制代码1306。
指令的某些操作可通过硬件组件执行,并可体现为机器可执行指令,机器可执行指令被用来致使、或至少导致用该指令编程的电路或其它硬件组件执行这些操作。电路可包括通用或专用处理器或逻辑电路,这里仅给出少数几个例子。这些操作也可通过硬件和软件的组合来选择地执行。执行逻辑和/或处理器可包括对机器指令作出响应的专门或特定的电路或其它逻辑、或者从机器指令衍生出的一个或多个控制信号,以存储指令特定的结果操作数。例如,本文披露的指令的实施例可在图13-16的一个或多个系统中执行,并且向量友好指令格式的指令的实施例可被存储在拟在系统中执行的程序代码中。附加地,这些附图中的处理元件可利用本文详述的详细流水线和/或架构(例如有序和无序架构)中的一个。例如,有序架构的解码单元可对指令进行解码,将经解码的指令传至向量或标量单元等。
前面的描述旨在解说本发明的优选实施例。从前面的讨论来看,应当清楚的是,尤其在增长快速并且进一步的发展不容易预见的这一技术领域,本发明可由本领域内技术人员对配置和细节进行修正,而不脱离本发明在所附权利要求书及其等效物的范围内的原理。例如,方法的一个或多个操作可被组合或进一步拆分。
替代实施例
尽管已描述了本机地执行向量友好指令格式的实施例,然而本发明的替代实施例可通过运行在执行不同指令集的处理器(例如执行加利福尼亚州的桑尼维尔的MIPS科技的MIPS指令集的处理器、执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的处理器)上的仿真层执行向量友好指令格式。另外,尽管附图中的流程图示出由本发明的某些实施例执行的具体操作顺序,然而应当理解,这些顺序是示例性的(例如替代实施例可执行不同顺序的操作、组合某些操作、重叠某些操作等)。
在上面的描述中,出于说明目的阐述了众多具体细节以便提供对本发明的实施例的透彻理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实施一个或多个其它实施例。所描述的特定实施例不是为了限制本发明而是为了解说本发明的实施例而提供的。本发明的范围并非由上面提供的特定示例确定,而是仅由下面的权利要求书确定。
Claims (30)
1.一种在计算机处理器中执行单个指令的方法,包括:
解码所述单个指令;
通过迭代地对存储在第三寄存器中的结果矩阵中的每个位置执行下列步骤来执行所述单个指令:
将存储在第一寄存器中的第一矩阵的矩阵位置处的值与存储在第二寄存器中的第二矩阵的矩阵位置处的值相乘以获得第一乘法值,其中所述第一寄存器和所述第二寄存器中的位置是通过结果矩阵中的位置确定的,其中所述第一乘法值的位宽度大于存储在第一寄存器中的第一矩阵的矩阵位置处的值的位宽度;
简化所述第一乘法值的位宽度以获得具有与存储在第一寄存器中的第一矩阵的矩阵位置处的值的位宽度相同的位宽度的经简化的乘法值;以及
对所述经简化的第一乘法值和存储在第三寄存器中的结果矩阵位置处的值执行异或XOR运算以获得结果值。
2.如权利要求1所述的方法,其特征在于,执行所述单个指令还包括将结果值存储在保存在第三寄存器中的结果位置。
3.如权利要求2所述的方法,其特征在于,执行所述单个指令还包括在执行异或XOR运算之前对所述乘法值执行简化运算。
4.如权利要求2所述的方法,其特征在于,执行所述单个指令还包括确定在所述第一矩阵和所述第二矩阵中是否存在附加的位置以进行处理。
5.如权利要求4所述的方法,其特征在于,执行所述单个指令进一步包括:
将存储在第一寄存器中的附加矩阵位置处的值与存储在第二寄存器中的附加矩阵位置处的值相乘以获得附加乘法值;以及
对所述附加乘法值和存储在保存在第三寄存器中的结果矩阵位置处的结果值执行附加异或XOR运算,以获得更新的结果值。
6.如权利要求5所述的方法,其特征在于,执行所述单个指令还包括将更新的结果值存储在保存在第三寄存器中的结果位置。
7.如权利要求6所述的方法,其特征在于,执行所述单个指令还包括在执行异或XOR运算之前对所述附加乘法值执行简化运算。
8.如权利要求6所述的方法,其特征在于,执行所述单个指令进一步包括在更新的结果值上执行简化运算。
9.如权利要求1所述的方法,其特征在于,存储在第一寄存器中的矩阵是状态矩阵,且存储在第二寄存器中的矩阵是groestl常数的矩阵。
10.如权利要求1所述的方法,其特征在于,执行所述单个指令进一步包括:
将存储在第一寄存器中的第二矩阵位置处的值与存储在第二寄存器中的第二矩阵位置处的值相乘以获得第二乘法值,其中所述第二乘法值的位宽度大于存储在第一寄存器中的第二矩阵位置处的值的位宽度;
简化所述第二乘法值的位宽度以获得具有与存储在第一寄存器中的第二矩阵位置处的值的位宽度相同的位宽度的第二经简化乘法值;以及
对所述第二乘法值和存储在保存在第三寄存器中的第二结果矩阵位置处的值执行第二异或XOR运算以获得第二结果值。
11.如权利要求1所述的方法,其特征在于,所述第一矩阵、第二矩阵和结果矩阵是具有8位位置的8×8矩阵。
12.如权利要求1所述的方法,其特征在于,所述第一矩阵、第二矩阵和结果矩阵是具有8位位置的8×16矩阵。
13.如权利要求1所述的方法,其特征在于,所述第一、第二和第三寄存器是512位寄存器。
14.一种指令处理装置,包括:
多个数据寄存器;以及
执行单元,与所述多个数据寄存器耦合并被配置成用于执行单个指令以对 存储在第三寄存器中的结果矩阵中的每个位置迭代地执行以执行:
将存储在第一寄存器中的第一矩阵的矩阵位置处的值与存储在第二寄存器中的第二矩阵的矩阵位置处的值相乘以获得第一乘法值,所述第一乘法值的位宽度大于存储在第一寄存器中的第一矩阵的矩阵位置处的值的位宽度,其中第一寄存器和第二寄存器中的位置是通过结果矩阵中的位置确定的;
简化运算以获得具有与存储在第一寄存器中的第一矩阵的矩阵位置处的值的位宽度相同的位宽度的经简化的第一乘法值;以及
对所述经简化的第一乘法值和存储在保存在第三寄存器中的结果矩阵位置处的值执行异或XOR运算以获得结果值。
15.如权利要求14所述的指令处理装置,其特征在于,所述执行单元被配置成用于将结果值存储在保存在第三寄存器中的结果位置。
16.如权利要求15所述的指令处理装置,其特征在于,所述执行单元被配置成用于在执行异或XOR运算前对所述乘法值执行简化运算。
17.如权利要求15所述的指令处理装置,其特征在于,所述执行单元被配置成用于确定在所述第一矩阵和第二矩阵中是否存在附加位置以进行处理。
18.如权利要求17所述的指令处理装置,其特征在于,所述执行单元进一步被配置成用于将存储在第一寄存器中的附加矩阵位置处的值与存储在第二寄存器中的附加矩阵位置处的值相乘以获得附加乘法值,并对所述附加乘法值和存储在保存在第三寄存器中的结果矩阵位置处的结果值执行附加异或XOR运算,以获得更新的结果值。
19.如权利要求14所述的指令处理装置,其特征在于,存储在第一寄存器中的矩阵是状态矩阵,且存储在第二寄存器中的矩阵是groestl常数的矩阵。
20.如权利要求14所述的指令处理装置,其特征在于,所述执行单元进一步被配置成用于将存储在第一寄存器中的第二矩阵位置处的值与存储在第二寄存器中的第二矩阵位置处的值相乘以获得附加乘法值,并对所述附加乘法值和存储 在保存在第三寄存器中的第二结果矩阵位置处的值执行第二异或XOR运算,以获得附加结果值。
21.一种计算机系统,包括:
互连;
处理器,与所述互连耦合,并包括:
多个数据寄存器;以及
执行单元,与所述多个数据寄存器耦合并被配置成用于执行单个指令以对存储在第三寄存器中的结果矩阵中的每个位置迭代地执行以执行:
将存储在第一寄存器中的第一矩阵的矩阵位置处的值与存储在第二寄存器中的第二矩阵的矩阵位置处的值相乘以获得第一乘法值,所述第一乘法值的位宽度大于存储在第一寄存器中的第一矩阵的矩阵位置处的值的位宽度,其中第一寄存器和第二寄存器中的位置是通过结果矩阵中的位置确定的;
简化运算以获得具有与存储在第一寄存器中的第一矩阵的矩阵位置处的值的位宽度相同的位宽度的经简化的第一乘法值;以及
对所述经简化的第一乘法值和存储在保存在第三寄存器中的结果矩阵位置处的值执行异或XOR运算以获得结果值;以及
动态随机存取存储器(DRAM),与所述互连耦合。
22.如权利要求21所述的计算机系统,其特征在于,所述执行单元被配置成用于将结果值存储在保存在第三寄存器中的结果位置。
23.如权利要求22所述的计算机系统,其特征在于,所述执行单元被配置成用于在执行异或XOR运算前对所述乘法值执行简化运算。
24.如权利要求22所述的计算机系统,其特征在于,所述执行单元被配置成用于确定在所述第一矩阵和第二矩阵中是否存在附加位置以进行处理。
25.如权利要求24所述的计算机系统,其特征在于,所述执行单元被配置成用于进一步将存储在第一寄存器中的附加矩阵位置处的值与存储在第二寄存器中的附加矩阵位置处的值相乘以获得附加乘法值,并对所述附加乘法值和存储在 保存在第三寄存器中的第一结果矩阵位置处的结果值执行附加异或XOR运算,以获得更新的结果值。
26.如权利要求21所述的计算机系统,其特征在于,所述执行单元被配置成用于进一步将存储在第一寄存器中的第二矩阵位置处的值与存储在第二寄存器中的第二矩阵位置处的值相乘以获得第二乘法值,并对所述第二乘法值和存储在保存在第三寄存器中的第二结果矩阵位置处的值执行第二异或XOR运算,以获得第二结果值。
27.一种指令处理装置,包括:
解码单元,被配置成用于解码单个指令;以及
执行单元,与所述解码单元耦合并被配置成用于执行所述单个指令以对存储在第三寄存器中的结果矩阵中的每个位置迭代地执行:
将存储在第一寄存器中的矩阵位置处的值与存储在第二寄存器中的矩阵位置处的值相乘以获得第一乘法值,所述第一乘法值的位宽度大于存储在第一寄存器中的矩阵位置处的值的位宽度,其中所述第一寄存器和所述第二寄存器中的位置是通过结果矩阵中的位置确定的;
简化所述第一乘法值的位宽度以获得具有与第一矩阵的矩阵位置处的第一值的位宽度相同的位宽度的经简化的第一乘法值;以及
对所述经简化的第一乘法值和存储在保存在第三寄存器中的结果矩阵位置处的值执行异或XOR运算以获得结果值。
28.如权利要求27所述的指令处理装置,其特征在于,所述执行单元进一步被配置成用于将结果值存储在保存于第三寄存器的结果位置。
29.如权利要求28所述的指令处理装置,其特征在于,所述执行单元进一步被配置成用于在执行异或XOR运算前对乘法值执行简化运算。
30.如权利要求27所述的指令处理装置,其特征在于,所述执行单元进一步被配置成用于:
将存储在第一寄存器中的附加矩阵位置处的值与存储在第二寄存器中的附加矩阵位置处的值相乘以获得附加乘法值;以及
对所述附加乘法值和存储在保存在第三寄存器中的第一结果矩阵位置处的结果值执行附加异或XOR运算,以获得更新的结果值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066814 WO2013095504A1 (en) | 2011-12-22 | 2011-12-22 | Matrix multiply accumulate instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103975302A CN103975302A (zh) | 2014-08-06 |
CN103975302B true CN103975302B (zh) | 2017-10-27 |
Family
ID=48669145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075233.2A Active CN103975302B (zh) | 2011-12-22 | 2011-12-22 | 矩阵乘法累加指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9960917B2 (zh) |
CN (1) | CN103975302B (zh) |
TW (1) | TWI489380B (zh) |
WO (1) | WO2013095504A1 (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133018B (zh) * | 2011-12-22 | 2020-12-22 | 英特尔公司 | 执行groestl散列的指令 |
US8914706B2 (en) | 2011-12-30 | 2014-12-16 | Streamscale, Inc. | Using parity data for concurrent data authentication, correction, compression, and encryption |
US8683296B2 (en) | 2011-12-30 | 2014-03-25 | Streamscale, Inc. | Accelerated erasure coding system and method |
US9646105B2 (en) * | 2012-11-08 | 2017-05-09 | Texas Instruments Incorporated | Reduced complexity hashing |
US20160179523A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Apparatus and method for vector broadcast and xorand logical instruction |
US9996320B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Fused multiply-add (FMA) low functional unit |
CN108475192B (zh) * | 2015-12-24 | 2023-06-02 | 英特尔公司 | 分散减少指令 |
US10061523B2 (en) * | 2016-01-15 | 2018-08-28 | Samsung Electronics Co., Ltd. | Versioning storage devices and methods |
US9870341B2 (en) * | 2016-03-18 | 2018-01-16 | Qualcomm Incorporated | Memory reduction method for fixed point matrix multiply |
US10275243B2 (en) * | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
US10855443B2 (en) * | 2016-07-29 | 2020-12-01 | Cryptography Research Inc. | Protecting polynomial hash functions from external monitoring attacks |
WO2018118569A1 (en) | 2016-12-21 | 2018-06-28 | Cryptography Research, Inc. | Protecting parallel multiplication operations from external monitoring attacks |
US10228937B2 (en) * | 2016-12-30 | 2019-03-12 | Intel Corporation | Programmable matrix processing engine |
US10037804B1 (en) * | 2017-01-27 | 2018-07-31 | Hewlett Packard Enterprise Development Lp | Adjusting target values of resistive memory devices |
WO2018174936A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
US10409614B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10474458B2 (en) * | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
TW202024961A (zh) * | 2017-05-17 | 2020-07-01 | 美商谷歌有限責任公司 | 低延遲矩陣乘法單元 |
WO2018213636A1 (en) * | 2017-05-17 | 2018-11-22 | Google Llc | Performing matrix multiplication in hardware |
GB2563878B (en) * | 2017-06-28 | 2019-11-20 | Advanced Risc Mach Ltd | Register-based matrix multiplication |
CN107844322B (zh) * | 2017-07-20 | 2020-08-04 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN109522254B (zh) | 2017-10-30 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
US10346163B2 (en) * | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
CN108763653B (zh) * | 2018-04-30 | 2022-04-22 | 南京大学 | 基于fpga的可重构线性方程组求解加速器 |
US10929143B2 (en) * | 2018-09-28 | 2021-02-23 | Intel Corporation | Method and apparatus for efficient matrix alignment in a systolic array |
US11093250B2 (en) | 2018-09-29 | 2021-08-17 | Intel Corporation | Apparatus and method for gang invariant operation optimizations using dynamic evaluation |
US10831505B2 (en) | 2018-09-29 | 2020-11-10 | Intel Corporation | Architecture and method for data parallel single program multiple data (SPMD) execution |
US10776110B2 (en) * | 2018-09-29 | 2020-09-15 | Intel Corporation | Apparatus and method for adaptable and efficient lane-wise tensor processing |
US10915328B2 (en) | 2018-12-14 | 2021-02-09 | Intel Corporation | Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency |
US20200210517A1 (en) * | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US20220114096A1 (en) | 2019-03-15 | 2022-04-14 | Intel Corporation | Multi-tile Memory Management for Detecting Cross Tile Access Providing Multi-Tile Inference Scaling and Providing Page Migration |
WO2020190809A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Architecture for block sparse operations on a systolic array |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
US11861761B2 (en) | 2019-11-15 | 2024-01-02 | Intel Corporation | Graphics processing unit processing and caching improvements |
US11182458B2 (en) | 2019-12-12 | 2021-11-23 | International Business Machines Corporation | Three-dimensional lane predication for matrix operations |
US11561794B2 (en) | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5931892A (en) * | 1996-12-20 | 1999-08-03 | Compaq Computer Corporation | Enhanced adaptive filtering technique |
CN1774709A (zh) * | 2002-12-20 | 2006-05-17 | 英特尔公司 | 使用simd寄存器的小矩阵有效乘法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US6470370B2 (en) * | 1995-09-05 | 2002-10-22 | Intel Corporation | Method and apparatus for multiplying and accumulating complex numbers in a digital filter |
US6496920B1 (en) | 1998-03-18 | 2002-12-17 | Qiuzhen Zou | Digital signal processor having multiple access registers |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US7013321B2 (en) * | 2001-11-21 | 2006-03-14 | Sun Microsystems, Inc. | Methods and apparatus for performing parallel integer multiply accumulate operations |
US20030219118A1 (en) * | 2002-05-23 | 2003-11-27 | Beverly Harlan T. | Optimized multiplicative inverse |
US20040120518A1 (en) * | 2002-12-20 | 2004-06-24 | Macy William W. | Matrix multiplication for cryptographic processing |
US20040202317A1 (en) | 2002-12-20 | 2004-10-14 | Victor Demjanenko | Advanced encryption standard (AES) implementation as an instruction set extension |
KR100610367B1 (ko) | 2004-06-19 | 2006-08-10 | 삼성전자주식회사 | 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치 |
TWI309364B (en) | 2005-09-02 | 2009-05-01 | Infortrend Technology Inc | Method and controller for processing data multiplication in raid system |
US20070067643A1 (en) | 2005-09-21 | 2007-03-22 | Widevine Technologies, Inc. | System and method for software tamper detection |
KR100901697B1 (ko) | 2007-07-09 | 2009-06-08 | 한국전자통신연구원 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
-
2011
- 2011-12-22 US US13/995,453 patent/US9960917B2/en active Active
- 2011-12-22 CN CN201180075233.2A patent/CN103975302B/zh active Active
- 2011-12-22 WO PCT/US2011/066814 patent/WO2013095504A1/en active Application Filing
-
2012
- 2012-12-07 TW TW101146189A patent/TWI489380B/zh not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5931892A (en) * | 1996-12-20 | 1999-08-03 | Compaq Computer Corporation | Enhanced adaptive filtering technique |
CN1774709A (zh) * | 2002-12-20 | 2006-05-17 | 英特尔公司 | 使用simd寄存器的小矩阵有效乘法 |
Also Published As
Publication number | Publication date |
---|---|
CN103975302A (zh) | 2014-08-06 |
WO2013095504A1 (en) | 2013-06-27 |
US9960917B2 (en) | 2018-05-01 |
US20140006753A1 (en) | 2014-01-02 |
TWI489380B (zh) | 2015-06-21 |
TW201344564A (zh) | 2013-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103975302B (zh) | 矩阵乘法累加指令 | |
CN104126174B (zh) | 执行groestl散列的指令 | |
US11849035B2 (en) | Instructions and logic to provide SIMD SM4 cryptographic block cipher | |
TWI595376B (zh) | 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統 | |
JP5301675B2 (ja) | Raid処理を実行するための方法及び装置 | |
CN110233720A (zh) | Sm4加速处理器、方法和系统 | |
CN110138541A (zh) | 用于对称密钥密码的统一硬件加速器 | |
CN105302522B (zh) | 提供通用gf(256)simd密码算法功能性的指令和逻辑 | |
CN105204820B (zh) | 用于提供通用gf(256)simd加密算术功能的指令和逻辑 | |
CN104583980B (zh) | 用于响应于单个指令来执行循环和异或的系统、装置和方法 | |
CN104011709B (zh) | 在256位数据路径中执行jh加密散列的指令 | |
CN104012031B (zh) | 用于执行jh加密散列的指令 | |
US20240146521A1 (en) | Instructions and logic to provide simd sm4 cryptographic block cipher functionality | |
TWI610231B (zh) | 用於向量水平邏輯指令的裝置及方法 |
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 |