CN107094369A - 用于提供simd sm3密码散列函数的指令和逻辑 - Google Patents

用于提供simd sm3密码散列函数的指令和逻辑 Download PDF

Info

Publication number
CN107094369A
CN107094369A CN201580045924.6A CN201580045924A CN107094369A CN 107094369 A CN107094369 A CN 107094369A CN 201580045924 A CN201580045924 A CN 201580045924A CN 107094369 A CN107094369 A CN 107094369A
Authority
CN
China
Prior art keywords
instruction
simd
circle
operand
processor
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.)
Granted
Application number
CN201580045924.6A
Other languages
English (en)
Other versions
CN107094369B (zh
Inventor
G·M·沃尔里克
V·戈帕尔
S·M·格利
K·S·叶
W·K·费加利
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 CN107094369A publication Critical patent/CN107094369A/zh
Application granted granted Critical
Publication of CN107094369B publication Critical patent/CN107094369B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Abstract

指令和逻辑提供SIMD SM3密码散列函数。一些实施例包括一种处理器,包括:解码器,用于解码针对SIMD SM3消息扩展的指令,该指令指定第一源数据操作数集合和第二源数据操作数集合以及扩展范围。响应于该指令,处理器执行单元根据由指定的扩展范围确定的第一源数据操作数集合和第二源数据操作数集合,执行多个SM3消息扩展,并将结果存储到SIMD目的寄存器中。一些实施例还根据中间散列值输入、源数据集合和圈常数集合执行散列算法的SIMD SM3散列圈片部分的指令。处理器执行单元应用中间散列值输入和圈常数集合来对源数据集合执行一组SM3散列圈迭代,并将新的散列值结果存储在SIMD目的寄存器中。

Description

用于提供SIMD SM3密码散列函数的指令和逻辑
技术领域
本公开内容涉及处理逻辑、微处理器和相关联的指令集架构的领域,其在由处理器或其它处理逻辑执行时,执行逻辑、数学或其它功能操作。具体而言,本公开内容涉及用于提供SIMD SM3密码散列函数的指令和逻辑。
背景技术
密码散列函数是散列函数,即采用任意数据块并返回固定大小的位串——(加密的)散列值的算法,使得对数据的(意外的或有意的)改变将(以非常高的概率)改变散列值。要编码的数据通常被称为“消息”,并且散列值有时被称为消息摘要或“摘要”。
密码散列函数具有许多信息安全应用,尤其是在数字签名、消息认证代码(MAC)和其它形式的认证中。它们还可以用作普通散列函数以在散列表中索引数据,用于采指纹以检测重复数据或唯一地识别文件,以及用作校验和以检测意外数据损坏。在信息安全上下文中,密码散列值有时被称为(数字)指纹、校验和、或仅仅散列值,尽管所有这些术语代表具有截然不同的特性和目的的功能。
密码散列函数设计中的两个主要权衡,对于程序员是可见的:(1)计算的复杂性--太简单并且散列容易破碎,太复杂并且散列花费太长时间来计算;以及(2)输出的大小——太小以及暴力攻击太容易,太大以及存储和发送散列值的成本太大。最著名的密码散列函数中的一个是由Ronald Rivest开发的MD5(消息摘要算法5)算法。其它常见算法是作为美国联邦信息处理标准(FIPS)的由国家标准和技术研究所(NIST)发布的SHA-1(安全散列算法1)以及变体SHA-2和SHA-3。另一种感兴趣的密码散列算法是由Xiaoyun Wang等人发明的,是由中国商用密码管理办公室发布的SM3密码散列函数,并作为互联网草案提交给互联网工程任务组(IETF)以用于电子认证服务系统的使用。
通常,不需要散列算法的硬件加速,因为它们不被设计为对计算要求特别高。但是一个专用的动态口令加密芯片是由中国深圳同方电子设备有限公司生产的,其在硬件中实现了SM3密码散列算法。
使用查找存储器、真值表、二进制决策图或现场可编程门阵列(FPGA)的典型直接的硬件实现在电路面积方面是昂贵的。使用与GF(256)同构的有限域的替代方案在面积上可能是有效的,但也可以比直接的硬件实现更慢。
完整的硬件方案的一个缺点是,它不容易装入现代微处理器的标准执行流水线中,而不特别考虑诸如特别处理中断或其他指令的并发超标量执行等事情。与标准执行流水线的另一不匹配是执行整个散列算法所需的延迟。
现代处理器通常包括提供计算密集的操作而提供高水平的数据并行性的指令,其可以通过使用各种数据存储设备(诸如,举例来说,单指令多数据(SIMD)向量寄存器)的有效实现来利用。中央处理单元(CPU)然后可以提供并行硬件以支持处理向量。向量是保存多个连续数据元素的数据结构。大小为M的向量寄存器可以包含大小为O的N个向量元素,其中N=M/O。例如,64字节的向量寄存器可以被划分为(a)64个向量元素,每个元素保存占用1个字节的数据项,(b)32个向量元素,每个元素用于保存占用2字节(或一个“字”)的数据项,(c)16个向量元素,每个元素用于保存占用4字节(或一个”双字”)的数据项,或(d)8个向量元素,每个元素用于保存占用8字节(或一个“四倍字”)的数据项。SIMD向量寄存器中的并行性的性质可以非常适合于处理安全散列算法。
到目前为止,还没有充分探索这些复杂性、不匹配、性能限制问题和其它瓶颈的潜在解决方案。
附图说明
在附图的图形中通过示例而非限制的方式例示了本发明。
图1A是执行用于提供SIMD SM3密码散列函数的指令的系统的一个实施例的框图。
图1B是执行用于提供功能的指令的系统的另一实施例的框图。
图1C是执行用于提供SIMD SM3密码散列函数的指令的系统的另一实施例的框图。
图2是执行用于提供SIMD SM3密码散列函数的指令的处理器的一个实施例的框图。
图3A例示了根据一个实施例的打包数据类型。
图3B例示了根据一个实施例的打包数据类型。
图3C例示了根据一个实施例的打包数据类型。
图3D例示了根据一个实施例的用于提供SIMD SM3密码散列函数的指令编码。
图3E例示了根据另一实施例的用于提供SIMD SM3密码散列函数的指令编码。
图3F例示了根据另一实施例的用于提供SIMD SM3密码散列函数的指令编码。
图3G例示了根据另一实施例的用于提供SIMD SM3密码散列函数的指令编码。
图3H例示了根据另一实施例的用于提供SIMD SM3密码散列函数的指令编码。
图4A例示了执行提供SIMD SM3密码散列函数的指令的处理器微架构的一个实施例的元件。
图4B例示了执行提供SIMD SM3密码散列函数的指令的处理器微架构的另一实施例的元件。
图5是用于执行提供SIMD SM3密码散列函数的指令的处理器的一个实施例的框图。
图6是用于执行提供SIMD SM3密码散列函数的指令的计算机系统的一个实施例的框图。
图7是用于执行提供SIMD SM3密码散列函数的指令的计算机系统的另一实施例的框图。
图8是用于执行提供SIMD SM3密码散列函数的指令的计算机系统的另一实施例的框图。
图9是用于执行提供SIMD SM3密码散列函数的指令的芯片上系统的一个实施例的框图。
图10是用于执行提供SIMD SM3密码散列函数的指令的处理器的实施例的框图。
图11是提供SIMD SM3密码散列函数的IP核开发系统的一个实施例的框图。
图12例示了提供SIMD SM3密码散列函数的架构仿真系统的一个实施例。
图13例示了用于转换提供SIMD SM3密码散列函数的指令的系统的一个实施例。
图14A例示了用于执行提供SIMD SM3密码散列函数的指令的装置的一个实施例的图。
图14B例示了用于执行提供SIMD SM3密码散列函数的指令的装置的替代实施例的图。
图15例示了用于执行提供SIMD SM3密码散列函数的指令的装置的另一替代实施例的图。
图16例示了用于执行提供SIMD SM3密码散列函数的指令的装置的另一替代实施例的图。
图17A例示了用于执行提供SIMD SM3密码散列函数的另一指令的装置的一个实施例的图。
图17B例示了用于执行提供SIMD SM3密码散列函数的另一指令的装置的替代实施例的图。
图18A例示了用于执行提供SIMD SM3密码散列函数的另一指令的装置的另一替换实施例的图。
图18B例示了用于执行提供SIMD SM3密码散列函数的另一指令的装置的又一替代实施例的图。
图19例示了用于执行提供SIMD SM3密码散列函数的指令的过程的实施例的流程图。
图20例示了用于执行提供SIMD SM3密码散列函数的指令的过程的另一实施例的流程图。
图21例示了用于执行提供SIMD SM3密码散列函数的替代指令的过程的实施例的流程图。
具体实施方式
下文描述公开了用于在处理器、计算机系统或其它处理装置内或与其相关联地提供SIMD SM3密码散列函数的指令和处理逻辑。一些实施例包括处理器,其包括解码器以解码用于SIMD SM3消息扩展的指令,该指令指定第一和第二源数据操作数集合以及扩展范围。响应于该指令,处理器执行单元根据由指定的扩展范围确定的第一和第二源数据操作数集合,执行多个SM3消息扩展,并将结果存储到SIMD目的寄存器中。一些实施例还根据中间散列值输入、源数据集和圈常数(round constant)集合执行散列算法的SIMD SM3散列圈片(round-slice)部分的指令。处理器执行单元对源数据集执行一组SM3散列圈迭代(hashing round iteration),应用中间散列值输入和圈常数集合,并将新的散列值结果存储在SIMD目的寄存器中。SM3密码散列算法的细节可以在“SM3Hash Function”,IETFInternet-Draft,Chinese Academy of Science,2014年2月14日,版本01中找到,可以在万维网上的tools.ietf.org/pdf/draft-shen-sm3-hash-01.pdf处获得。
应当理解,SIMD SM3密码散列指令可以用于在诸如密码协议和互联网通信的应用中提供SIMD SM3密码散列函数,以确保数据完整性、数字签名、身份验证、用于金融交易、电子商务、电子邮件、软件分发、数据存储、随机数生成等的消息内容认证和消息起源认证。
对于提供SM3密码散列函数的SIMD指令和处理逻辑的一些实施例,SM3消息扩展和SM3密码散列圈可以在现代微处理器的标准执行流水线中并发地和/或并行地在迭代片中执行。将理解,可以方便地选择每个片的迭代次数,以便通过与执行SM3消息扩展的片和/或SM3密码散列圈的片相关联的延迟来为其它并发飞行指令提供充分的覆盖。因此,还将理解,提供用于SIMD SM3密码散列算法圈片的指令的执行,该圈片具有多次迭代(例如每个片两次、四次或八次迭代),但小于散列算法的圈迭代的总次数,允许在超标量执行流水线中和/或在无序处理器流水线中并发执行这样的其它所需指令(例如,SM3消息扩展指令),从而显着地提高大量应用的处理吞吐量,以及利用与通用处理器相关联的制造工艺改进的频率缩放。
在下文的描述中,阐述了许多具体细节(诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等),以便提供对本发明的实施例的更透彻的理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。另外,一些公知的结构、电路等没有详细示出以避免不必要地模糊本发明的实施例。
尽管参考处理器描述了以下的实施例,但是其它实施例适用于其它类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可以应用于可以受益于更高的流水线吞吐量和改进性能的其它类型的电路或半导体设备。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可以应用于执行数据的操纵或管理的任何处理器和机器。此外,下文描述提供示例,并且附图出于说明的目的示出了各种示例。然而,这些示例不应被解释为限制意义,因为它们仅旨在提供本发明的实施例的示例,而不是提供本发明的实施例的所有可能实现方式的穷尽列表。
尽管以下示例描述了在执行单元和逻辑电路的上下文中的指令处理和分配,但是本发明的其它实施例可以通过存储在机器可读的有形介质上的数据和/或指令来实现,当其由机器执行时,使得机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明的实施例相关联的功能体现在机器可执行指令中。指令可以用于使得用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器或计算机可读介质,该指令可以用于对计算机(或其它电子设备)进行编程以执行根据本发明的实施例的一个或多个操作。可替代地,本发明的实施例的步骤可以由包含用于执行步骤的固定功能逻辑的特定硬件部件执行,或者由编程的计算机部件和固定功能硬件部件的任何组合来执行。
用于编程逻辑以执行本发明的实施例的指令可以存储在系统中的存储器(诸如DRAM、高速缓存、闪存或其它存储设备)内。此外,指令可以经由网络或通过其它计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读形式存储或传输信息的任何机制,但不限于,软盘、光盘、压缩盘只读存储器(CD-ROM)以及磁光盘、只读存储器、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或用于经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形的机器可读存储设备。因此,计算机可读介质包括适于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中的各种设备的物理布置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可以以任何形式的机器可读介质存储。诸如盘的存储器或磁或光存储设备可以是用于存储经由光或电波传输的信息的机器可读介质,光波或电波经调制或以其它方式生成以传输这种信息。当发送指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传的范围内,进行新的复制。因此,通信提供商或网络提供商可以在有形的机器可读介质上至少临时地存储体现本发明的实施例的技术的诸如编码到载波中的信息的物品。
在现代处理器中,许多不同的执行单元用于处理和执行各种代码和指令。并非所有指令都创建相等,因为有些指令更快完成,而其它指令可能需要多个时钟周期才能完成。指令的吞吐量越快,处理器的整体性能越好。因此,尽可能快地执行尽可能多的指令将是有利的。然而,存在具有更大复杂性并且在执行时间和处理器资源方面需要更多的某些指令。例如,有浮点指令、加载/存储操作、数据移动等。
随着更多的计算机系统用于互联网、文本和多媒体应用,随着时间的推移已经引入了附加的处理器支持。在一个实施例中,指令集可以与一个或多个计算机架构(包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O))相关联。
在一个实施例中,指令集架构(ISA)可以由一个或多个微架构实现,其包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可以共享公共指令集的至少一部分。例如,Pentium 4处理器、CoreTM处理器和来自Sunnyvale CA的Advanced Micro Devices公司的处理器实现了几乎相同的x86指令集版本(添加了具有更新版本的一些扩展),但是有不同的内部设计。类似地,由其他处理器开发公司(诸如ARM Holdings,Ltd.,MIPS或其许可者或采用者)设计的处理器可以共享公共指令集的至少一部分,但是可以包括不同的处理器设计。例如,可以使用新的或公知的技术以不同的方式在不同的微架构中实现ISA的相同寄存器架构,其包括专用物理寄存器、使用寄存器重命名机制的一个或多个动态分配的物理寄存器(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)和引退寄存器文件)。在一个实施例中,寄存器可以包括一个或多个寄存器、寄存器架构、寄存器文件,或者可以或不能由软件编程器寻址的其它寄存器组。
在一个实施例中,指令可以包括一个或多个指令格式。在一个实施例中,指令格式可以指示各种字段(位数、位的位置等)以指定要执行的操作和对其执行该操作的操作数,等。一些指令格式可以进一步被指令模板(或子格式)分解定义。例如,给定指令格式的指令模板可以被定义为具有指令格式字段的不同子集和/或被定义为具有不同解释的给定字段。在一个实施例中,使用指令格式(并且如果被定义,则在该指令格式的指令模板中的给定指令模板中)来表达指令,并且指定或指示操作和将在其上操作该操作的操作数。
科学、金融、自动向量化通用目的、RMS(识别、挖掘和合成)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使处理器对多个数据元素执行操作的一种类型的指令。SIMD技术可以用在可以逻辑地将寄存器中的位划分成多个固定大小或可变大小的数据元素的处理器中,每个数据元素表示单独的值。例如,在一个实施例中,64位寄存器中的位可以被组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位值。这种类型的数据可以被称为“打包”数据类型或“向量”数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可以是存储在单个寄存器内的打包数据元素的序列,打包数据操作数或向量操作数可以是SIMD指令的源或目的操作数(或“打包数据指令”或“向量指令”)。在一个实施例中,SIMD指令指定要对两个源向量操作数执行的单个向量操作,以利用相同或不同数目的数据元素,并且以相同或不同的数据元素顺序生成相同或不同大小的目的向量操作数(也称为结果向量操作数)。
SIMD技术(诸如具有包括x86、MMXTM、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的指令集的CoreTM处理器,诸如具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM系列处理器的ARM处理器,以及诸如由中国科学院计算技术研究所(ICT)开发的Loongson系列处理器的MIPS处理器所采用的SIMD技术)已经使应用性能得到显著改进(CoreTM和MMXTM是Intel Corporation of Santa Clara,Calif.的注册商标或商标)。
在一个实施例中,目的和源寄存器/数据是表示相应数据或操作的源和目的的通用术语。在一些实施例中,它们可以通过寄存器、存储器或具有与所描绘的名称或功能不同的名称或功能的其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域等等。在其它实施例中,SRC和DEST存储区域中的两个或更多个可以对应于相同存储区域(例如,SIMD寄存器)内的不同数据存储元件。在一个实施例中,源寄存器中的一个还可以通过例如将对第一和第二源数据执行的操作的结果回写到作为目的寄存器的两个源寄存器中的一个来充当目的寄存器。
图1A是形成有处理器的示例性计算机系统的框图,处理器包括执行单元以执行根据本发明的一个实施例的指令。根据本发明(例如在本文所描述的实施例中),系统100包括诸如处理器102的部件,以采用包括逻辑来执行用于过程数据的算法的执行单元。系统100代表基于可从Intel Corporation of Santa Clara,California获得的 XeonTMXScaleTM和/或StrongARMTM微处理器的处理系统,尽管还可以使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,示例系统100可以执行可从Microsoft Corporation of Redmond,Washington获得的WINDOWSTM操作系统的版本,尽管还可以用其它操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本发明的替代实施例可以用于其它设备、例如手持设备和嵌入式应用程序。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用程序可以包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其它系统。
图1A是形成有处理器102的计算机系统100的框图,处理器102包括一个或多个执行单元108以执行算法来执行根据本发明的一个实施例的至少一个指令。一个实施例可以在单处理器桌面或服务器系统的上下文中描述,但是替代实施例可以包括在多处理器系统中。系统100是“中心”系统架构的示例。计算机系统100包括处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任何其它处理器设备(例如,诸如数字信号处理器)。处理器102耦合到处理器总线110,处理器总线110可以在处理器102与系统100中的其它部件之间传输数据信号。系统100的元件执行其为熟悉本领域的技术人员所熟知的常规功能。
在一个实施例中,处理器102包括1级(L1)内部高速缓存存储器104。根据架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。可替代地,在另一实施例中,高速缓存存储器可以驻留在处理器102外部。其它实施例还可以根据特定的实现方式和需要包括内部和外部高速缓存的组合。寄存器文件106可以存储不同类型的各种寄存器(包括整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)的数据。
包括用于执行整数和浮点运算的逻辑的执行单元108也驻留在处理器102中。处理器102还包括存储某些宏指令的微码的微码(ucode)ROM。对于一个实施例,执行单元108包括用于处理打包指令集109的逻辑。通过将打包指令集109包括在通用处理器102的指令集中以及用于执行指令的相关电路中,可以使用通用处理器102中的打包数据来执行许多多媒体应用程序所使用的操作。因此,通过使用用于对打包数据执行操作的处理器的数据总线的全宽度,可以更有效地加速和执行许多多媒体应用程序。这可以消除跨处理器的数据总线传送较小单位的数据以对数据元素一次执行一个或多个操作的需要。
执行单元108的替代实施例也可以用在微控制器、嵌入式处理器、图形设备、DSP和其它类型的逻辑电路中。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其它存储器设备。存储器120可以存储由可以由处理器102执行的数据信号表示的指令和/或数据。
系统逻辑芯片116耦合到处理器总线110和存储器120。在例示的实施例中的系统逻辑芯片116是存储器控制器中心(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116向存储器120提供高带宽存储器路径118,用于指令和数据存储以及用于存储图形命令、数据和纹理。MCH 116用于在处理器102、存储器120和系统100中的其它部件之间引导数据信号,并桥接处理器总线110、存储器120和系统I/O 122之间的数据信号。在一些实施例中,系统逻辑芯片116可以提供用于耦合到图形控制器112的图形端口。MCH 116通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH116。
系统100使用专有的中心接口总线122来将MCH 116耦合到I/O控制器中心(ICH)130。ICH 130经由本地I/O总线向一些I/O设备提供直接连接。本地I/O总线是用于将外围设备连接到存储器120、芯片组和处理器102的高速I/O总线。一些示例是音频控制器、固件中心(闪速BIOS)128、无线收发机126、数据存储设备124、包含用户输入和键盘接口的旧有I/O控制器、诸如通用串行总线(USB)的串行扩展端口以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其它大容量存储设备。
对于系统的另一实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以位于与处理器和其它系统部件相同的管芯上。另外,诸如存储器控制器或图形控制器的其它逻辑块也可以位于芯片上的系统上。
图1B例示了实现本发明的一个实施例的原理的数据处理系统140。本领域技术人员将容易理解,本文描述的实施例可以在不脱离本发明的实施例的范围的情况下与替代处理系统一起使用。
计算机系统140包括能够执行根据一个实施例的至少一个指令的处理核159。对于一个实施例,处理核159表示任何类型架构(包括但不限于CISC、RISC或VLIW类型架构)的处理单元。处理核159还可以适于以一种或多种工艺技术制造,并且通过以足够详细的方式表示在机器可读介质上,可以适于促进该制造。
处理核159包括执行单元142、一组寄存器文件145和解码器144。处理核159还包括对于理解本发明的实施例不是必需的附加的电路(未示出)。执行单元142用于执行由处理核159接收的指令。除了执行典型的处理器指令之外,执行单元142可以执行打包指令集143中的指令,以用于对打包数据格式执行操作。打包指令集143包括用于执行本发明的实施例的指令和其它打包指令。执行单元142通过内部总线耦合到寄存器文件145。寄存器文件145表示用于存储包括数据的信息的处理核159上的存储区域。如先前所描述,应当理解,用于存储打包数据的存储区域不是关键的。执行单元142耦合到解码器144。解码器144用于将由处理核159接收的指令解码为控制信号和/或微码入口点。响应于这些控制信号和/或微码入口点,执行单元142执行适当的操作。在一个实施例中,解码器用于解释指令的操作码,其将指示应当对在指令内指示的相应数据执行什么操作。
处理核159与总线141耦合,用于与各种其它系统设备通信,其可以包括但不限于例如同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、突发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/紧凑型闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器访问(DMA)控制器151和替代总线主接口152。在一个实施例中,数据处理系统140还可以包括用于经由I/O总线153与各种I/O设备通信的I/O桥154。这样的I/O设备可以包括但不限于例如通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供移动、网络和/或无线通信以及能够执行包括文本串比较操作的SIMD操作的处理核159。处理核159可以用各种音频、视频、成像和通信算法编程,该算法包括诸如沃尔什-哈达玛变换、快速傅里叶变换(FFT)、离散余弦变换(DCT)等离散变换及其相应的逆变换;诸如颜色空间变换、视频编码运动估计或视频解码运动补偿的压缩/解压缩技术;以及诸如脉冲编码调制(PCM)的调制/解调(MODEM)功能。
图1C例示了能够执行指令以提供SIMD SM3密码散列函数的数据处理系统的另一替代实施例。根据一个替代实施例,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓存存储器167和输入/输出系统168。输入/输出系统168可以可选择地耦合到无线接口169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核170可以适合于以一种或多种处理技术制造,并且通过以足够详细的方式表示在机器可读介质上,可以适合于促进包括处理核170的数据处理系统160的全部或一部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162和一组寄存器文件164。主处理器166的一个实施例包括解码器165以识别指令集163的指令,指令集163包括根据一个实施例的指令,该指令用于由执行单元162执行。对于替代实施例,SIMD协处理器161还包括解码器165B的至少一部分以解码指令集163的指令。处理核170还包括附加的电路(未示出),其对于理解本发明的实施例不是必要的。
在操作中,主处理器166执行控制包括与高速缓存存储器167和输入/输出系统168的交互的一般类型的数据处理操作的数据处理指令流。嵌入在数据处理指令流内的是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应该由附接的SIMD协处理器161执行的类型。因此,主处理器166在协处理器总线171上发出这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),其中由任何附接的SIMD协处理器接收这些SIMD协处理器指令。在这种情况下,SIMD协处理器161将接受并执行任何接收到的用于它的SIMD协处理器指令。
可以经由无线接口169接收数据,以便由SIMD协处理器指令进行处理。例如,可以以数字信号的形式接收语音通信,其可以由SIMD协处理器指令处理以重新生成表示语音通信的数字音频样本。对于另一个示例,可以以数字位流的形式接收压缩的音频和/或视频,其可以由SIMD协处理器指令处理以重新生成数字音频样本和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成到单个处理核170中,单个处理核170包括执行单元162、一组寄存器文件164和解码器165,以识别包括根据一个实施例的指令的指令集163的指令。
图2是根据本发明的一个实施例的包括用于执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,根据一个实施例的指令可以被实现为对具有字节、字、双字、四字等的大小的数据元素以及诸如单精度和双精度整数和浮点数据类型的数据类型进行操作。在一个实施例中,有序前端201是处理器200的一部分,其获取要执行的指令并且准备它们以稍后在处理器流水线中使用。前端201可以包括几个单元。在一个实施例中,指令预取器226从存储器提取指令并将该指令馈送到指令解码器228,指令解码器228进而解码或解释该指令。例如,在一个实施例中,解码器将接收到的指令解码为机器可以执行的称为“微指令”或“微操作”(也称为op或uop)的一个或多个操作。在其它实施例中,解码器将指令解析为操作码以及由微架构使用以执行根据一个实施例的操作的对应的数据和控制字段。在一个实施例中,跟踪高速缓存230获取解码的uop并将它们汇集成uop队列234中的程序有序序列或跟踪(trace)以供执行。当跟踪高速缓存230遇到复杂指令时,微码ROM 232提供完成操作所需的uop。
一些指令被转换为单个微操作,而其它指令需要几个微操作来完成完整的操作。在一个实施例中,如果需要多于四个的微操作来完成指令,则解码器228访问微码ROM 232以执行指令。对于一个实施例,指令可以被解码为小数目的微操作,用于在指令解码器228处进行处理。在另一个实施例中,如果需要多个微操作来完成操作,则可以将指令存储在微码ROM 232内。跟踪高速缓存230参考入口点可编程逻辑阵列(PLA)来确定用于从微码ROM232读取微码序列以完成根据一个实施例的一个或多个指令的正确微指令指针。在微码ROM232完成用于指令的微操作的排序后,机器的前端201继续从跟踪缓存230提取微操作。
无序执行引擎203是准备指令用于执行的地方。无序执行逻辑具有多个缓冲区以平滑和重新排序指令流,以便在指令流沿着流水线下行并且被调度用于执行时优化性能。分配器逻辑分配每个uop需要的机器缓冲区和资源以便执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器文件中的条目。分配器还在指令调度器:存储器调度器、快速调度器202、慢/通用浮点调度器204以及简单浮点调度器206之前,为两个uop队列中的一个分配用于每个uop的条目,一个用于存储器操作,一个用于非存储器操作。uop调度器202、204、206基于其从属的输入寄存器操作数源的准备状态和uop需要以完成其操作的执行资源的可用性来确定uop何时准备好执行。一个实施例的快速调度器202可以在主时钟周期的每一半上调度,而其它调度器只能在每个主处理器时钟周期调度一次。调度器对分派端口进行仲裁以调度uop用于执行。
寄存器文件208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。存在单独的寄存器文件208、210,分别用于整数和浮点运算。一个实施例的每个寄存器文件208、210还包括旁路网络,其可以将尚未写入寄存器文件中的刚完成的结果绕过或转发到新的从属uop。整数寄存器文件208和浮点寄存器文件210也能够与另一个进行数据通信。对于一个实施例,整数寄存器文件208被分成两个单独的寄存器文件,用于低阶32位数据的一个寄存器文件和用于高阶32位数据的第二寄存器文件。一个实施例的浮点寄存器文件210具有128位宽的条目,因为浮点指令通常具有宽度从64位到128位的操作数。
执行块211包含执行单元212、214、216、218、220、222、224,其中实际执行指令。该部分包括寄存器文件208、210,其存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200包括多个执行单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD和SSE或其它操作。一个实施例的浮点ALU 222包括64位乘64位浮点除法器,以执行除法、平方根和剩余微操作。对于本发明的实施例,涉及浮点值的指令可以用浮点硬件处理。在一个实施例中,ALU操作转到高速ALU执行单元216、218。一个实施例的快速ALU 216、218可以以半个时钟周期的有效延迟执行快速操作。对于一个实施例,最复杂的整数操作进入慢速ALU 220,因为慢速ALU 220包括用于长延迟类型的操作(诸如乘法器、移位、标志逻辑和分支处理)的整数执行硬件。存储器加载/存储操作由AGU 212、214执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述整数ALU 216、218、220。在替代实施例中,ALU 216、218、220可以被实现为支持包括16、32、128、256等的各种数据位。类似地,浮点单元222、224可以被实现为支持具有各种宽度的位的操作数的范围。对于一个实施例,浮点单元222、224可以结合SIMD和多媒体指令对128位宽的打包数据操作数进行操作。
在一个实施例中,uop调度器202、204、206在父负载已经完成执行之前分派从属操作。由于uop被推测性地调度并在处理器200中执行,因此处理器200还包括处理存储器丢失的逻辑。如果在数据高速缓存中数据加载丢失,则在流水线中可能存在飞行中的从属操作,其已经使调度器具有暂时不正确的数据。重放机制跟踪并重新执行使用不正确数据的指令。只有从属操作需要被重放,并且独立操作被允许完成。处理器的一个实施例的调度器和重放机制还被设计为捕获提供SIMD SM3密码散列函数的指令。
术语“寄存器”可以指用作识别操作数的指令的一部分的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可用的(从程序员的角度)的那些寄存器。然而,实施例的寄存器的含义不应限于特定类型的电路。相反,实施例的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文描述的寄存器可以由处理器内的电路使用任何数量的不同技术(诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等)来实现。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含用于打包数据的八个多媒体SIMD寄存器。对于下文的讨论,寄存器被理解为被设计为在使用来自Intel Corporation of Santa Clara,California的MMX技术实现的微处理器中保存打包数据的数据寄存器(诸如64位宽的MMXTM寄存器(在某些情况下也称为“mm”寄存器))。这些MMX寄存器以整数和浮点形式都可用,可以与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高(通常被称为“SSEx”)的技术相关的128位宽的XMM寄存器也可以用于保存这样的打包数据操作数。在一个实施例中,在存储打包数据和整数数据时,寄存器不需要在两种数据类型之间进行区分。在一个实施例中,整数和浮点要么被包含在相同的寄存器文件中要么被包含在不同的寄存器文件中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或相同的寄存器中。
在以下附图的示例中,描述了多个数据操作数。图3A例示了根据本发明的一个实施例的多媒体寄存器中的各种打包数据类型表示。图3A例示了用于128位宽操作数的打包字节310、打包字320和打包双字(dword)330的数据类型。该示例的打包字节格式310为128位长并且包含十六个打包字节数据元素。一个字节在这里定义为8位数据。每个字节数据元素的信息存储在字节0的位7到位0、字节1的位15到位8、字节2的位23到位16以及最后字节15的位120到位127。因此,在寄存器中使用所有可用位。这种存储布置提高了处理器的存储效率。同样地,在访问的十六个数据元素的情况下,现在可以并行地对十六个数据元素执行一个操作。
通常,数据元素是存储在单个寄存器或存储器位置中的具有相同长度的其它数据元素的单独条的数据。在与SSEx技术有关的打包数据序列中,存储在XMM寄存器中的数据元素的数量是128位除以单个数据元素的位长度。类似地,在与MMX和SSE技术有关的打包数据序列中,存储在MMX寄存器中的数据元素的数量是64位除以单个数据元素的位长度。虽然图3A中例示的数据类型是128位长,本发明的实施例也可以用64位宽、256位宽、512位宽或其它大小的操作数来操作。该示例的打包字格式320为128位长并且包含八个打包字数据元素。每个打包字包含16位信息。图3A的打包双字格式330为128位长,并且包含四个打包双字数据元素。每个打包双字数据元素包含32位信息。打包的四字为128位长并且包含两个打包的四字数据元素。
图3B例示了替代的寄存器内数据存储格式。每个打包数据可以包括多于一个的独立数据元素。例示了三种打包数据格式:打包半体341、打包单体342和打包双体343。打包半体341、打包单体342和打包双体343的一个实施例包含定点数据元素。对于替代实施例,打包半体341、打包单体342和打包双体343中的一个或多个可以包含浮点数据元素。打包半体341的一个替代实施例为128位长,其包含8个16位数据元素。打包单体342的一个实施例为128位长,并包含4个32位数据元素。打包双体343的一个实施例是128位长,并且包含2个64位数据元素。将理解,这样的打包数据格式可以进一步扩展到其它寄存器长度(例如96位、160位、192位、224位、256位、512位或更多)。
图3C例示了根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号打包数据类型表示。无符号打包字节表示344例示了在SIMD寄存器中存储无符号打包字节。每个字节数据元素的信息存储在字节零的位7到位0、字节1的位15到位8、字节2的位23到位16,等等,最后是字节15的位120到位127。因此,在寄存器中使用所有可用的位。这种存储布置可以提高处理器的存储效率。同样地,在访问16个数据元素的情况下,现在可以以并行方式对16个数据元素执行一个操作。带符号的打包字节表示345例示了带符号的打包字节的存储。注意,每个字节数据元素的第8位是符号指示符。无符号打包字表示346例示了字7到字0如何存储在SIMD寄存器中。有符号的打包字表示347类似于无符号打包字寄存器内表示346。注意,每个字数据元素的第16位是符号指示符。无符号打包双字表示348示出如何存储双字数据元素。带符号的打包双字表示349类似于无符号打包双字寄存器内表示348。注意,必要的符号位是每个双字数据元素的第32位。
图3D是操作编码(操作码)格式360的一个实施例的描绘,其具有32位或更多位,以及对应于在“和IA-32Intel体系结构软件开发人员手册组合卷2A和2B:指令集参考A-Z”(其可从Intel Corporation,Santa Clara,CA获得,在万维网(www)上在intel.com/products/processor/manuals/处)中描述的操作码格式的类型的寄存器/存储器操作数寻址模式。在一个实施例中,可以由字段361和362中的一个或多个来编码指令。可以标识每个指令的至多两个操作数位置(包括至多两个源操作数标识符364和365)。对于一个实施例,目的操作数标识符366与源操作数标识符364相同,而在其它实施例中它们不同。对于替代实施例,目的操作数标识符366与源操作数标识符365相同,而在其它实施例中它们不同。在一个实施例中,由源操作数标识符364和365标识的源操作数中的一个源操作数被指令的结果覆写,而在其它实施例中,标识符364对应于源寄存器元素,标识符365对应于目的寄存器元素。对于一个实施例,操作数标识符364和365可以用于标识32位或64位源和目的操作数。
图3E是具有40或更多位的另一替代操作编码(操作码)格式370的描绘。操作码格式370对应于操作码格式360,并且包括可选的前缀字节378。根据一个实施例的指令可以由字段378、371和372中的一个或多个编码。每个指令至多有两个操作数位置可以由源操作数标识符374和375以及前缀字节378识别。对于一个实施例,前缀字节378可以用于标识32位或64位源和目的操作数。对于一个实施例,目的操作数标识符376与源操作数标识符374相同,而在其它实施例中,它们不同。对于替代实施例,目的操作数标识符376与源操作数标识符375相同,而在其它实施例中,它们不同。在一个实施例中,指令对由操作数标识符374和375标识的操作数中的一个或多个操作数进行操作,并且由操作数标识符374和375标识的一个或多个操作数被指令的结果覆写,而在其它实施例中,由标识符374和375标识的操作数被写入另一个寄存器中的另一个数据元素。操作码格式360和370允许寄存器至寄存器,存储器至寄存器,由存储器对寄存器,由寄存器对寄存器,立即寄存器,寄存器至存储器寻址,部分由MOD字段363和373指定以及由可选的缩放索引基和位移字节指定。
接下来转到图3F,在一些替代实施例中,可以通过协处理器数据处理(CDP)指令执行64位(或128位,或256位,或512位或更多)单指令多数据(SIMD)算术运算。操作编码(操作码)格式380描绘了具有CDP操作码字段382和389的一个这样的CDP指令。对于替代实施例,CDP指令的类型,操作可以由字段383、384、387和388中的一个或多个字段编码。至多每个指令三个操作数位置(包括至多两个源操作数标识符385和390以及一个目的操作数标识符386)可以被标识。协处理器的一个实施例可以对8、16、32和64位值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可以使用条件字段381有条件地执行指令。对于一些实施例,可以由字段383编码源数据大小。在一些实施例中,可以在SIMD字段上进行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可以由字段384编码。
接下来转到图3G,是对应于在“高级向量扩展编程参考”(其可从IntelCorp.,Santa Clara,CA获得,在万维网(www)上的intel.com/products/processor/manuals/处)中描述的类型的操作码格式的根据另一实施例的另一替代操作编码(操作码)格式397的描述,以提供SIMD SM3密码散列函数。
原始x86指令集提供1字节操作码,其具有各种格式的地址音节和立即操作数,其包含在从第一“操作码”字节知道其存在的附加字节中。此外,还有一些字节值被保留为操作码的修饰符(称为前缀,因为它们必须放在指令之前)。当256个操作码字节(包括这些特殊前缀值)的原始调色板被耗尽时,单个字节被专用作为一组新的256个操作码的转义(escape)。随着向量指令(例如,SIMD)被添加,生成对更多操作码的需要,并且即使当通过使用前缀扩展时,“两字节”操作码映射也是不足的。为此,在附加的映射中添加了新指令,其使用2字节加上可选前缀作为标识符。
此外,为了便于64位模式中的附加的寄存器,可以在前缀与操作码(以及确定操作码所需的任何转义字节)之间使用附加的前缀(称为“REX”)。在一个实施例中,REX可以具有4个“有效载荷”位以指示在64位模式中使用附加的寄存器。在其它实施例中,它可以具有更少或多于4位。至少一个指令集(其通常对应于格式360和/或格式370)的一般格式通常由以下式子示出:
[prefixes][rex]escape[escape2]opcode modrm(etc.)
操作码格式397对应于操作码格式370,并且包括可选的VEX前缀字节391(在一个实施例中从十六进制C4开始)以替换大多数其它常用的传统指令前缀字节和转义码。例如,下面例示了使用两个字段来编码指令的实施例,其可以在原始指令中存在第二转义代码时使用,或者当需要使用REX字段中的附加位(例如,XB和W字段)时使用。在下文例示的实施例中,旧有的转义由新的转义值表示,旧有的前缀被完全压缩为“有效载荷”字节的一部分,旧有的前缀被回收并且可供将来扩展使用,第二转义代码在“映射”字段中被压缩,其中将来映射或特征空间可用,并且添加新特征(例如,增加的向量长度和附加的源寄存器指定符)。
根据一个实施例的指令可以由字段391和392中的一个或多个字段编码。每个指令多达四个操作数位置可以由字段391结合源操作数标识符374和375并结合可选的缩放索引基(SIB)标识符393、可选的位移标识符394以及可选的立即字节395来标识。对于一个实施例,VEX前缀字节391可以用于标识32位或64位源和目的操作数和/128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397提供的功能可以与操作码格式370冗余,而在其它实施例中,它们是不同的。操作码格式370和397允许寄存器至寄存器,存储器至寄存器,由存储器对寄存器,由寄存器对寄存器,立即寄存器,寄存器至存储器寻址,部分由MOD字段373指定并且由可选(SIB)标识符393,可选的位移标识符394和可选的立即字节395指定。
接下来转到图3H,描绘了根据另一实施例的另一替代操作编码(操作码)格式398,以提供SIMD SM3密码散列函数。操作码格式398对应于操作码格式370和397,并且包括可选的EVEX前缀字节396(在一个实施例中从十六进制62开始),以替换大多数其它常用的旧有的指令前缀字节和转义码并提供附加功能。根据一个实施例的指令可以由字段396和392中的一个或多个字段编码。每个指令多达四个操作数位置和掩码可以由字段396结合源操作数标识符374和375标识,并结合可选缩放索引基(SIB)标识符393、可选位移标识符394和可选立即字节395标识。对于一个实施例,EVEX前缀字节396可以用于标识32位或64位源和目的操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398提供的功能可以与操作码格式370或397冗余,而在其它实施例中,它们是不同的。操作码格式398允许寄存器至寄存器,存储器至寄存器,由存储器对寄存器,由寄存器对寄存器,立即寄存器,寄存器至存储器寻址,带有掩码,部分由MOD字段373指定并且由可选(SIB)标识符393,可选的位移标识符394和可选的立即字节395指定。至少一个指令集(其通常对应于格式360和/或格式370)的一般格式通常由以下式子示出:
evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
对于一个实施例,根据EVEX格式398编码的指令可以具有附加的“有效负载”位,其可以用于提供具有附加新特征(诸如,举例来说用户可配置的掩码寄存器,或附加操作数或者从128位、256位或512位向量寄存器或从中选择的更多寄存器等的选择)的SIMD SM3密码散列函数。
例如,在VEX格式397可以用于利用隐式掩码提供SIMD SM3密码散列函数的情况下,EVEX格式398可以用于利用明确的用户可配置阀掩码来提供SIMD SM3密码散列函数。另外,在VEX格式397可以用于在128位或256位向量寄存器上提供SIMD SM3密码散列函数的情况下,EVEX格式398可以用于在128位、256位、512位或更大(或更小)的向量寄存器上提供SIMD SM3密码散列函数。
通过以下示例来说明提供SIMD SM3密码散列函数的示例指令:
将理解,如上文的示例中的SIMD SM3密码散列指令可以用于在诸如密码协议和互联网通信的应用中提供SIMD SM3密码散列函数,以确保用于金融交易,电子商务,电子邮件,软件分发,数据存储,随机数生成等的数据完整性,数字签名,身份验证,消息内容认证和消息起源认证。
还将理解,提供执行散列圈的预指定数量的迭代的SIMD SM3密码散列指令可以与其它SIMD处理和标量处理并行地在处理器流水线中实现散列算法(例如根据特定散列算法实现的消息“组块”的预处理和准备预旋转的圈常数(例如,Tj<<<j))的SIMD执行。也就是说,在散列圈的单次迭代可能具有三个周期(例如,每个圈3个周期)的流水线延迟的情况下,通过将结果绕回到流水线,两次迭代可以具有仅四个周期的延迟(例如,每个圈2个周期),四次迭代可具有仅六个周期的延迟(例如每个圈1.5个周期)。在具有四个或六个周期的那些流水线延迟期间,可以与散列的圈片并行或并发地执行其它有用的处理。因此,为SIMD安全散列算法圈片提供指令,其具有多次迭代(例如每片两次、四次或八次迭代)但小于散列算法的圈迭代的总数,允许在超标量执行流水线和/或无序处理器流水线中并发执行其它指令,从而显著提高处理吞吐量,以及利用与通用处理器相关联的制造工艺改进的频率缩放。
一些实施例包括处理器,其包括解码器以解码用于SIMD SM3消息扩展的指令,指定第一和第二源数据操作数集合以及扩展范围。响应于该指令,处理器执行单元根据由指定的扩展范围确定的第一和第二源数据操作数集合执行多个SM3消息扩展,并将结果存储到SIMD目的寄存器中。一些实施例还根据中间散列值输入、源数据集和圈常数集(例如,具有一个或多个预先旋转的常数Tj<<<j)执行散列算法的SIMD SM3散列圈片部分的指令。处理器执行单元对源数据集执行一组SM3散列圈迭代,应用中间散列值输入和圈常数集合,并将新的散列值结果存储在SIMD目的寄存器中。
对于提供SM3密码散列函数的SIMD指令和处理逻辑的一些实施例,SM3消息扩展和SM3密码散列圈可以在现代微处理器的标准执行流水线中并发和/或并行地在迭代片中执行。将理解,可以方便地选择每片的迭代次数,以便通过与执行SM3消息扩展的片和/或SM3密码散列圈的片相关联的延迟来为其它并发飞行指令提供充分的覆盖。因此,还将理解,提供用于SIMD SM3密码散列算法圈片的指令的执行,其具有多次迭代(例如每片两次、四次或八次迭代),但小于散列算法的圈迭代总数,允许在超标量执行流水线中和/或在无序处理器流水线中并发执行这样的其它所需指令(例如,SM3消息扩展指令),从而显著地提高大量应用的处理吞吐量,以及利用与通用处理器相关联的制造工艺改进的频率的缩放。
图4A是例示根据本发明的至少一个实施例的有序流水线和寄存器重命名级、无序发布/执行流水线的框图。图4B是例示根据本发明的至少一个实施例的包括在处理器中的有序架构核和寄存器重命名逻辑、无序发布/执行逻辑的框图。图4A中的实线框例示了有序流水线、而虚线框例示了寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框例示了有序架构逻辑,而虚线框例示了寄存器重命名逻辑和无序发布/执行逻辑。
在图4A中,处理器流水线400包括提取级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422和提交级424。
在图4B中,箭头表示两个或更多个单元之间的耦合,并且箭头的方向表示这些单元之间的数据流的方向。图4B示出了处理器核490,其包括耦合到执行引擎单元450的前端单元430,并且前端单元430和执行引擎单元450都耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选择,核490可以是专用核(诸如,举例来说,网络或通信核、压缩引擎、图形核等)。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,指令高速缓存单元434耦合到指令转译后备缓冲器(TLB)436,指令转译后备缓冲器436耦合到指令提取单元438,指令提取单元438耦合到解码单元440。解码单元或解码器可以对指令进行解码,并且生成从原始指令解码或以其它方式反应原始指令或从原始指令导出的一个或多个微操作、微码入口点、微指令、其它指令或其它控制信号作为输出。可以使用各种不同的机制来实现解码器。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。指令高速缓存单元434还耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到引退单元454的重命名/分配器单元452和一组一个或多个调度器单元456。调度器单元456表示任意数量的不同调度器(包括保留站、中央指令窗口等)。调度器单元456耦合到物理寄存器文件单元458。每个物理寄存器文件单元458表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点等)、状态(例如,作为待执行的下一指令的地址的指令指针)等。物理寄存器文件单元458被引退单元454重叠,以例示可以实施寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用将来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是适当的,只要它们能够存储和提供如本文所描述的数据。适当的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元454和物理寄存器文件单元458耦合到执行群集460。执行群集460包括一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可以执行各种操作(例如,移位、加法、减法、乘法)和对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能组的多个执行单元,但是其它实施例可以仅包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458和执行群集460被示为可能是多个,因为某些实施例为某些类型的数据/操作创建独立的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线,其每个具有其自己的调度器单元、物理寄存器文件单元和/或执行群集,并且在单独的存储器访问流水线的情况下,实现某些实施例,其中只有该流水线的执行群集具有存储器访问单元464)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序的发布/执行,其余的是有序的。
存储器存取单元464的集合耦合到存储器单元470,存储器单元470包括数据TLB单元472,数据TLB单元472耦合到数据高速缓存单元474,数据高速缓存单元474耦合到2级(L2)高速缓存单元476。在一个示范性实施例中,存储器存取单元464可以包括加载单元、存储地址单元和存储数据单元,它们中的每一个耦合到存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合到一个或多个其它级别的高速缓存并最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可以如下实现流水线400:1)指令提取438执行提取和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460执行执行级416;6)存储器单元470和物理寄存器文件单元458执行写回/存储器写入级418;7)在异常处理级422中可以涉及各种单元;以及8)引退单元454和物理寄存器文件单元458执行提交级424。
核490可以支持一个或多个指令集(例如,x86指令集(具有已经用较新版本添加的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(具有可选的诸如NEON的附加扩展))。
应当理解,核可以支持多线程(执行两个或更多个并行的操作或线程集合),并且可以以各种方式这样做,包括时间分片多线程、同步多线程(其中单个物理核提供物理核同步多线程的每个线程的逻辑核)或其组合(例如,时间分片提取和解码以及此后的同步多线程(例如在超线程技术中))。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解,可以在有序架构中使用寄存器重命名。尽管处理器的例示实施例还包括单独的指令和数据高速缓存单元434/474以及共享L2高速缓存单元476,但是替代实施例可以具有用于指令和数据的单个内部高速缓存(诸如,举例来说1级(L1)内部高速缓存或多级内部高速缓存)。在一些实施例中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存可以在核和/或处理器外部。
图5是根据本发明的实施例的具有集成存储器控制器和图形的单核处理器和多核处理器500的框图。图5中的实线框例示了处理器500,其具有单个核502A、系统代理510、一个或多个总线控制器单元516的集合,而虚线框的可选添加例示了替代处理器500,其具有多个核502A-N、系统代理单元510中的一个或多个集成存储器控制器单元514的集合以及集成图形逻辑508。
存储器层级包括核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元506以及耦合到该组集成存储器控制器单元514的外部存储器(未示出)。该组共享高速缓存单元506可以包括一个或多个中级高速缓存(诸如2级(L2)、3级(L3)、4级(L4)或其它级别的高速缓存、最后级高速缓存(LLC)和/或其组合)。虽然在一个实施例中,基于环的互连单元512互连集成图形逻辑508、共享高速缓存单元506的集合和系统代理单元510,但是替代实施例可以使用任意数量的公知技术来互连这些单元。
在一些实施例中,一个或多个核502A-N能够多线程。系统代理510包括协调和操作核502A-N的那些部件。系统代理单元510可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核502A-N和集成图形逻辑508的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核502A-N在架构和/或指令集方面可以是同构的或异构的。例如,核502A-N中的一些可以是有序的,而其它是无序的。作为另一示例,核502A-N中的两个或更多个能够执行相同的指令集,而其它仅能够执行该指令集的子集或不同的指令集。
处理器可以是通用处理器(诸如可从Intel Corporation,of Santa Clara,Calif.获得的CoreTM i3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器,或者,处理器可以来自诸如ARM Holdings,Ltd,MIPS等的另一公司)。处理器可以是专用处理器(诸如,举例来说,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等)。处理器可以在一个或多个芯片上实现。处理器500可以是使用多种处理技术(诸如,举例来说,BiCMOS、CMOS或NMOS)中的任何技术的一个或多个衬底的一部分和/或可以在一个或多个衬底上实现。
图6-8是适于包括处理器500的示例性系统,而图9是可以包括一个或多个核502的示例性芯片上系统(SoC)。本领域已知的其它系统设计和配置对于膝上型计算机、台式计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其他电子设备也是适当的。一般来说,能够并入如本文所公开的处理器和/或其它执行逻辑的各种各样的系统或电子设备通常是适当的。
现在参考图6,示出了根据本发明的一个实施例的系统600的框图。系统600可以包括耦合到图形存储器控制器中心(GMCH)620的一个或多个处理器610、615。附加处理器615的可选性质在图6中用虚线表示。
每个处理器610、615可以是处理器500的某一版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不可能存在于处理器610、615中。图6例示了GMCH 620可以耦合到存储器640,其可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的一部分。GMCH 620可以与处理器610、615通信并且控制处理器610、615与存储器640之间的交互。GMCH 620还可以作为处理器610、615与系统600的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由多分支总线(例如前端总线(FSB)695)与处理器610、615通信。
此外,GMCH 620耦合到显示器645(例如平板显示器)。GMCH 620可以包括集成图形加速器。GMCH 620还耦合到输入/输出(I/O)控制器中心(ICH)650,其可用于将各种外围设备耦合到系统600。例如在图6的实施例中示出的是外部图形设备660,其可以是与另一外围设备670一起耦合到ICH 650的离散图形设备。
可替代地,附加或不同的处理器也可以存在于系统600中。例如,附加处理器615可以包括与处理器610相同的附加处理器、与处理器610异构或不对称的附加处理器、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在包括架构、微架构、热、功率消耗特性等的优点的度量谱方面,在物理资源610、615之间可以存在各种差异。这些差异可以有效地表现为处理器610、615之间的不对称和异质性。对于至少一个实施例,各种处理器610、615可以驻留在相同的管芯封装中。
现在参考图7,示出了根据本发明的实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并且包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和处理器780中的每一个处理器可以是处理器500的一些版本,作为处理器610、615中的一个或多个。
虽然仅示出了两个处理器770、780,但是应当理解,本发明的范围不限于此。在其它的实施例中,一个或多个附加的处理器可以存在于给定的处理器中。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用P-P接口电路778、788经由点对点(P-P)接口750交换信息。如图7所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,其可以是本地附接到相应处理器的主存储器的部分。
处理器770、780可以各自使用点对点接口电路776、794、786、798经由独自的P-P接口752、754与芯片组790交换信息。芯片组790还可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可以被包括在处理器中或者在两个处理器的外部,但是仍然经由P-P互连与处理器连接,使得如果处理器被置于低功率模式,则一个或两个处理器的本地高速缓存信息被存储在该共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PCI)总线或诸如PCI Express总线或另一第三代I/O互连总线的总线,尽管本发明的范围不限于此。
如图7所示,各种I/O设备714可以与总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线720,该各种设备包括例如键盘和/或鼠标722、通信设备727和诸如磁盘驱动器或其他大容量存储设备的存储单元728,存储单元728可以包括指令/代码和数据730。此外,音频I/O 724可以耦合到第二总线720。注意,其它架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其它这样的架构。
现在参考图8,示出了根据本发明的实施例的第三系统800的框图。图7和图8中的相似元件具有相似的附图标记,并且图7的某些方面已从图8中省略,以避免模糊图8的其它方面。
图8例示了处理器870、880可以分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可以包括诸如上文结合图5和图7所描述的集成存储器控制器单元。此外,CL 872、882还可以包括I/O控制逻辑。图8例示了不仅存储器832、834耦合到CL 872、882,而且I/O设备814也耦合到控制逻辑872、882。旧有I/O设备815耦合到芯片组890。
现在参考图9,示出了根据本发明的实施例的SoC 900的框图。图5中的类似元件具有相似的附图标记。此外,虚线框是更先进的SoC上的可选特征。在图9中,互连单元902耦合到:应用处理器910,其包括一个或多个核502A-N的集合和共享高速缓存单元506;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一个或多个媒体处理器920的集合,其可以包括集成图形逻辑508、用于提供静止和/或视频摄像机功能的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。
图10例示了根据一个实施例的包含中央处理单元(CPU)和图形处理单元(GPU)的处理器,其可以执行至少一个指令。在一个实施例中,根据至少一个实施例的执行操作的指令可以由CPU执行。在另一个实施例中,指令可以由GPU执行。在又一个实施例中,可以通过由GPU和CPU执行的操作的组合来执行指令。例如,在一个实施例中,可以接收和解码根据一个实施例的指令以在GPU上执行。然而,经解码的指令内的一个或多个操作可以由CPU执行,并且结果返回到GPU以用于指令的最后引退。相反,在一些实施例中,CPU可以作为主处理器,并且GPU可以作为协处理器。
在一些实施例中,受益于高度并行的吞吐量处理器的指令可以由GPU执行,而受益于处理器(其受益于深度流水线架构)的性能的指令可以由CPU执行。例如,图形、科学应用、金融应用和其它并行工作负载可以受益于GPU的性能并且相应地执行,而诸如操作系统内核或应用代码的更多顺序应用程序可以更好地适合于CPU。
在图10中,处理器1000包括CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、高清晰度多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪存控制器1055、双数据速率(DDR)控制器1060、安全引擎1065和I2S/I2C(集成芯片间声音/集成电路间)接口1070。其它逻辑和电路可以包括在图10的处理器中,该处理器包括更多的CPU或GPU和其它外围接口控制器。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性数据来实现,该代表性数据表示处理器内的各种逻辑,当由机器读取时,该代表性数据使机器制造逻辑以执行本文所描述的技术。称为“IP核”的这种表示可以存储在有形的机器可读介质(“磁带”)上,并提供给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。例如,诸如由ARM Holdings,Ltd开发的CortexTM系列处理器和由中国科学院计算技术研究所(ICT)开发的Loongson IP核等IP核可以被许可或出售给各种客户或被许可商(诸如德州仪器、高通、苹果或三星),并在这些客户或被许可商生产的处理器中实现。
图11示出了根据一个实施例的IP核的开发的框图。存储设备1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可以经由存储器1140(例如硬盘)、有线连接(例如,互联网)1150或无线连接1160提供给存储设备1130。随后,由仿真工具和模型生成的IP核信息可以被传送到制造设施,在那里IP核可以由第三方制造以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可以对应于第一类型或架构(例如,x86),并且可以在不同类型或架构(例如,ARM)的处理器上被转换或仿真。因此,根据一个实施例,可以在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU或其它处理器类型或架构)上执行指令。
图12例示了根据一个实施例如何由不同类型的处理器仿真第一类型的指令。在图12中,程序1205包含可以执行与根据一个实施例的指令相同或基本上相同的功能的一些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,意味着程序1205中的类型的指令不能由处理器1215原生地执行。然而,在仿真逻辑1210的帮助下,程序1205的指令被转换为能够由处理器1215原生地执行的指令。在一个实施例中,仿真逻辑体现在硬件中。在另一个实施例中,仿真逻辑体现在包含软件的有形机器可读介质中,以将程序1205中的类型的指令转换成可由处理器1215原生地执行的类型。在其它实施例中,仿真逻辑是固定功能或可编程硬件以及存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器之外并且由第三方提供。在一个实施例中,处理器能够通过执行包含在处理器中或与处理器相关联的微码或固件来加载体现在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在例示的实施例中,指令转换器是软件指令转换器,尽管指令转换器替代地可以以软件、固件、硬件或其各种组合来实现。图13示出了高级语言1302中的程序可以使用x86编译器1304编译以生成x86二进制代码1306,其可以由具有至少一个x86指令集核1316的处理器原生地执行。具有至少一个x86指令集核1316的处理器表示可以通过兼容地执行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分或(2)目标代码版本的应用程序或目标为在具有至少一个x86指令集核的Intel处理器上运行的其它软件,来执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能的任何处理器,以便实现与具有至少一个x86指令集核的Intel处理器基本相同的结果。x86编译器1304表示编译器,其适用于产生可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1316的处理器上执行的x86二进制代码1306(例如,目标代码)。类似地,图13示出了高级语言1302中的程序可以使用替代指令集编译器1308来编译,以生成替代指令集二进制代码1310,其可以由没有至少一个x86指令集核1314的处理器原生地执行(例如,具有执行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或执行ARMHoldings of Sunnyvale,CA的ARM指令集的核的处理器)。指令转换器1312用于将x86二进制代码1306转换为可以由没有x86指令集核1314的处理器原生地执行的代码。该转换的代码不太可能与替代指令集二进制代码1310相同,因为难以制作能够进行这种操作的指令转换器;然而,转换的代码将完成一般操作并且由来自替代指令集的指令组成。因此,指令转换器1312表示通过仿真、模拟或任何其它过程,允许处理器或其它电子设备(其不具有x86指令集处理器或核)执行x86二进制代码1306的软件、固件、硬件或其组合。
图14A例示了用于执行提供SIMD SM3密码散列函数的指令的装置1401的一个实施例的图。装置1401的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400的一部分(例如执行级416)或者核490的一部分(例如执行单元462)。装置1401的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMD SM3密码散列算法圈片的指令,该圈片具有的迭代次数小于散列算法的圈迭代的总数(例如,两次或四次迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定中间散列值输入操作数1410、源数据操作数1415集合和散列算法的圈片部分(例如作为初始圈j,和/或迭代次数i,在可选的立即操作数1418中,或在指令助记符和/或操作代码中)。指令的实施例还可以指定圈常数操作数集合(例如,用于初始圈j和可选的立即操作数1418中的迭代次数i的Tj…Tj+i-1)。响应于经解码的指令的一个或多个执行单元(例如,执行装置1405)应用中间散列值输入操作数1410和圈常数操作数集合对源数据操作数集合1415执行圈迭代的SM3散列圈片集合,并将第一指令的结果1480存储在SIMD目的寄存器中。
将理解,提供执行散列圈的预定次数的迭代的SIMD SM3密码散列指令,可以与其它SIMD处理和标量处理(诸如根据特定散列算法实现的消息“组块”的预处理和准备预旋转的圈常数(例如,Tj<<<j))并行地在处理器流水线中实现散列算法的SIMD执行。也就是说,在散列圈的单次迭代可能具有三个周期(例如,每个圈3个周期)的流水线延迟的情况下,通过执行指定数量的迭代和/或绕过结果返回通过流水线,两次迭代可以具有仅四个周期的延迟(例如每圈2个周期),四次迭代可以具有仅六个周期的延迟(例如每圈1.5个周期)。在具有四个或六个周期的那些流水线延迟期间,可以与散列圈片并行或并发地执行其它有用的处理。因此,为SIMD SM3密码散列算法圈片提供指令,该圈片具有多次迭代(例如每个片两次、四次或八次迭代等)但小于散列算法的圈迭代的总数,允许超标量执行流水线和/或无序处理器流水线中的其它指令的并发执行,从而显著地提高处理吞吐量,并且利用与具有向量寄存器的通用处理器相关联的制造过程改进的频率缩放。
例如,装置1401的实施例可以与包括可变m多个可变大小数据字段的向量寄存器(例如物理寄存器文件单元458)耦合,以存储可变m多个可变大小数据元素的值。提供SIMDSM3密码散列算法圈片的指令的实施例指定中间散列值输入状态操作数1410,其指定向量寄存器、立即操作数1418和源数据操作数1415集合中的一个。装置1401的实施例可以包括与寄存器文件(例如,物理寄存器文件单元458)耦合的执行单元1405,并且响应于经解码的指令来提供SIMD SM3密码散列算法圈片功能,以接收中间散列值输入状态操作数1410和消息源数据操作数1415集合,并且为多个迭代的每次迭代生成输出状态1480。随后,可以将经解码的指令的结果1480存储在SIMD目的寄存器中(例如,在物理寄存器文件单元458中)。
图14B例示了用于执行提供SIMD SM3密码散列函数的指令的装置1402的替代实施例的图。装置1402的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400的一部分(例如执行级416)或核490的一部分(例如执行单元462)。装置1402的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMD SM3密码散列算法圈片的指令,该圈片具有的迭代次数小于散列算法的圈迭代的总数(例如,两次或四次迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定中间散列值输入操作数1410、源数据操作数1415集合、圈常数操作数1412集合(例如,用于初始圈的单个预旋转Tj,或可选地一组四个预旋转Tj…Tj+3)和散列算法的圈片部分(例如,作为初始圈j,和/或立即操作数1418中的迭代次数i)。响应于解码的指令的一个或多个执行单元(例如执行装置1405)应用中间散列值输入操作数1410和圈常数操作数1412集合对源数据操作数1415集合执行圈迭代的SM3散列圈片集合,并且将第一指令的结果1480存储在SIMD目的寄存器(例如,在一些实施例中,用于中间散列值输入操作数1410的相同SIMD寄存器)中。
图15例示了用于执行提供SIMD SM3密码散列函数的指令的装置1501的另一替代实施例的图。装置1501的实施例可以与解码级(例如解码406)或解码器(例如解码单元440)耦合,以解码用于具有多次迭代(例如两次或四次迭代,尽管仅例示了一次迭代)的SIMDSM3密码散列算法圈片的指令,其可以允许在超标量执行流水线中并发地执行其它指令,该指令指定中间散列值输入操作数1510,源数据操作数集合(例如,包括消息字Wj和Wj+4)、圈常数操作数集合(例如,包括预先旋转的Tj)和散列算法的圈片部分(例如,包括初始圈j的指示符和/或迭代次数i,可选地在立即数操作数中)。响应于经解码的指令的一个或多个执行单元(例如,包括执行装置1501)应用中间散列值输入操作数1510和一个或多个圈常数1512操作数集合对源数据操作数集合(例如,包括1514和1516)执行圈迭代的SM3散列圈片集合,并且将经解码的指令的结果1580存储在SIMD目的寄存器(例如,在一些实施例中,用于中间散列值输入操作数1510的相同SIMD寄存器)中。
如执行装置1501中所例示,可以根据散列算法的指定的圈片部分(例如,包括初始圈j的指示符)来选择布尔函数FFj 1522和GGj 1524,用于分别处理中间散列值32位数据字段输入A、B、C和E、F、G。根据一个实施例,当j小于16时,则布尔函数FFj和GGj可以分别选择为A⊕B⊕C和E⊕F⊕G,或者当j大于15时,则分别选择为(A∧B)∨(A∧C)∨(B∧C)以及在SM3散列圈切片的每次迭代中,圈常数操作数集合的相应圈常数1512,Tj与中间散列值向量1520的左旋转的相应数据字段A(例如经由旋转器1526,旋转量1525)和中间散列值向量1520的第二未旋转数据字段E相加(例如经由加法器1530)。在SM3散列圈片的每次迭代中,源数据操作数集合的相应数据字段1514,Wj与布尔函数GGj 1524的输出、中间散列值向量1520的相应数据字段H和加法器1530的左旋转输出SS1(例如经由旋转器1532,旋转量1531)相加(例如经由加法器1540)。在SM3散列圈片的每次迭代中,对源数据操作数集合的相应数据字段1514,Wj和1516,Wj+4进行异或(XOR)以产生相应数据字段1534,W'j,以及左旋转相应数据字段A与所述加法器1530的左旋转输出SS1异或,以产生相应的数据字段SS2。两个相应数据字段1534,W'j和SS2与布尔函数FFj 1522的输出以及中间散列值向量1520的相应数据字段D相加(例如,经由加法器1550),以在初步输出状态1570中产生新的相应数据字段A。中间散列值向量1520的未旋转的相应数据字段A变为初步输出状态1570的新的相应数据字段B。中间散列值向量1520的左旋转的相应数据字段B(例如经由旋转器1562,旋转量1561)变为初步输出状态1570的新的相应数据字段C。中间散列值向量1520的未旋转的相应数据字段C变为初步输出状态1570的新的相应数据字段D。加法器1540的输出经由置换1542,P0被置换,以产生初步输出状态1570的新的相应数据字段E。中间散列值向量1520的未旋转的相应数据字段E变成初步输出状态1570的新的相应数据字段F。中间散列值向量1520的左旋转的相应数据字段F(例如,经由旋转器1566,旋转量1565)变成初步输出状态1570的新的相应数据字段G。中间散列值向量1520的未旋转的相应数据字段G变成初步输出状态1570的新的相应数据字段H。
最后,在SM3散列圈切片的每次迭代中,初步输出状态1570被存储为新的输出状态1580,Vj+1。在一些实施例中,输出状态锁存器存储作为迭代的结果而产生的输出状态1580(例如,新的Vj+1个值)。在一些实施例中,可以通过来自输出状态1580锁存器的旁路(例如,旁路网络208或210)来执行绕过散列值输出状态1580到中间散列值输入状态,以针对SM3散列圈片的多个迭代中的每个下一迭代绕过输出状态1580到输入状态1520。布尔函数、置换、圈常数参数和消息扩展等的进一步细节可以在“SM3 Hash Function”,IETF Internet-Draft,中国科学院,2014年2月14日,版本01中找到,可以在万维网上的tools.ietf.org/pdf/draft-shen-sm3-hash-01.pdf处获得。
图16例示了用于执行提供SIMD SM3密码散列函数的指令的装置1601的另一替代实施例的图。装置1601的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400的一部分(例如执行级416)或核490的一部分(例如执行单元462)。装置1601的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMD SM3密码散列算法圈片的指令,该圈片具有小于散列算法的圈迭代的总数的迭代数(例如,四个迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定中间散列值输入操作数1610、源数据操作数1615集合、可选的圈常数操作数1612集合(例如包括单个初始预旋转的Tj或可选地一组四个预旋转的Tj…Tj+3)和散列算法的圈片部分(例如,可选地作为初始圈j,和/或在立即操作数1418中的迭代次数i)。用于SIMD SM3密码散列算法圈片的指令的一些实施例可以指定单个初始预旋转常数Tj,并且在该片的每一圈中内部旋转该单个初始常数一比特。用于SIMD SM3密码散列算法圈片的指令的其它替代实施例可以仅指定j的值(例如在立即操作数1618中),并在内部查找或生成每个旋转常数Tj<<<j。用于SIMD SM3密码散列算法圈片的指令的其它替代实施例可以将多个预先旋转的常数指定为一组(例如四个预旋转的Tj…Tj+3)。一个或多个执行单元(例如执行装置1601)响应于经解码的指令,应用立即散列值输入操作数1610以及SM3 roundj 1605中的一个或多个圈常数操作数1612集合(例如Tj)对源数据操作数1615集合(例如相应的数据字段Wj和Wj+4)执行圈迭代的SM3散列圈片集合,以产生初步输出状态1681,Vj+1。进一步响应于经解码的指令,应用第二中间散列值输入1681,Vj+1和SM3 roundj+1 1606中的一个或多个圈常数操作数1612集合(例如Tj+1)对源数据操作数1615集合(例如,相应的数据字段Wj+1和Wj+5)执行第二SM3散列圈迭代,以产生初步输出状态1682,Vj+2;…并且应用第四中间散列值输入Vj+3(未示出)和SM3 roundj+31608中的一个或多个圈常数操作数1612集合(例如Tj+3)对源数据操作数1615集合(例如,各个数据字段Wj+3和Wj+7),执行第四SM3散列圈迭代,以产生作为指令的结果的新输出状态1684,Vj+4,并将指令的结果1684存储在SIMD目的地寄存器(例如,在一些实施例中,用于中间散列值输入操作数1610的相同SIMD寄存器)中。
一些实施例还可以包括处理器,其包括解码器以解码用于SIMD SM3消息扩展的指令,该指令指定第一和第二源数据操作数集合以及扩展范围。响应于该指令,处理器执行单元从由指定的扩展范围确定的第一和第二源数据操作数集合中执行多个SM3消息扩展,并将结果存储到SIMD目的寄存器中。对于提供SM3密码散列函数的SIMD指令和处理逻辑的一些实施例,SM3消息扩展和SM3密码散列圈可以在现代微处理器的标准执行流水线中的迭代片中并发地和/或并行地执行。将理解,可以方便地选择每个片的迭代次数,以便通过与执行SM3消息扩展的片和/或SM3密码散列圈的片相关联的延迟来为其他并发飞行指令提供足够的覆盖。
图17A例示了用于执行另一指令以提供SIMD SM3密码散列函数的装置1701的一个实施例的图。装置1701的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400的一部分(例如,执行级416)或核490的一部分(例如执行单元462)。装置1701的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMD SM3密码散列算法消息扩展的指令,该指令具有小于散列算法的消息扩展迭代(例如,少于五十二个消息扩展迭代)的总数的迭代数(例如,两次或四次迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定第一源数据操作数1719集合(例如,Wj-16,Wj-15,...Wj-9)和第二源数据操作数1711集合(例如,Wj-8,Wj-7,...Wj-1),以及扩展范围(例如,可选地在立即操作数1718中或在指令助记符和/或操作代码中作为扩展范围的迭代数目e)。响应于经解码的指令的一个或多个执行单元(例如执行装置1704),在第一源数据操作数1719集合和第二源数据操作数1711集合上执行消息扩展迭代的SM3散列算法片集合,SM3消息扩展的数量由指定的扩展范围确定,并且将指令的结果1790(例如,Wj-4,…Wj-1,Wj,…Wj+3)存储在SIMD目的寄存器中。
图17B例示了用于执行另一指令以提供SIMD SM3密码散列函数的装置1702的替代实施例的图。装置1702的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400一部分(例如执行级416)或核490的一部分(例如执行单元462)。装置1702的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMD SM3密码散列算法消息扩展的指令,该扩展具有小于散列算法的消息扩展迭代的总数(例如,少于五十二个消息扩展迭代)的迭代数(例如,两次或四次迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定第一源数据操作数1719集合(例如,Wj-16,Wj-15,...Wj-9)和第二数据源数据操作数1711集合(例如,Wj-8,Wj-7,...Wj-1)以及扩展范围(例如,可选地作为在立即操作数1718中,或在指令助记符和/或操作代码中的扩展范围的迭代的数目e+1)。响应于解码的指令的一个或多个执行单元(例如执行装置1703),对第一源数据操作数1719集合和第二源数据操作数1711集合执行消息扩展迭代的SM3散列算法片集合,SM3消息扩展的数目由指定的扩展范围确定,并且将指令的结果1792(例如,Wj+e-7,…Wj-1,Wj,…Wj+e)存储在SIMD目的寄存器(例如,在一些实施例中,用于第一源数据操作数1719或用于第二源数据操作数1711的相同SIMD寄存器)中。
图18A例示了用于执行另一指令以提供SIMD SM3密码散列函数的装置1801的另一替代实施例的图。装置1801的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400的一部分(例如执行级416)或核490的一部分(例如执行单元462)。装置1801的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMDSM3密码散列算法消息扩展的指令,该扩展具有小于散列算法的消息扩展迭代的总数(例如少于五十二个消息扩展迭代)的迭代数(例如,两个或四个迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定第一源数据操作数1819集合(例如,W0,W1,…W7)和第二源数据操作数1811集合(例如W8,W9,…W15)以及扩展范围(例如,可选地作为在未示出的立即操作数中,或在指令助记符和/或操作代码中的扩展范围的迭代的数或迭代减1,e)。响应于经解码的指令的一个或多个执行单元(例如,执行装置1808),对第一源数据操作数1819集合和第二源数据操作数1811集合执行消息扩展迭代的SM3散列算法片集合,SM3消息扩展的数目由指定的扩展范围确定。例如,在一个实施例中,在1804处,作为指令的结果1890的元素,产生新扩展(或延伸)消息字W16,如下:W16=P1(W0⊕W7⊕(W13<<<15))⊕(W3<<<7)⊕W10,其中置换1803,P1被定义为P1(X)=X⊕(X<<<15)⊕(X<<<23)。在1805处,作为指令的结果1890的元素,产生新扩展(或延伸)消息字W17,如下:W17=P1(W1⊕W8⊕(W14<<<15))⊕(W4<<<7)⊕W11。在1806处,作为指令的结果1890的元素,产生新扩展(或延伸)消息字W18:W18=P1(W2⊕W9⊕(W15<<<15))⊕(W5<<<7)⊕W12。四个新的32位字中的一个字的消息扩展W19除了第一(即1819)和第二(即1811)源数据操作数集合的32位字数据元素之外还需要四个新的32位字(即W16)中的另一个元素。因此,在一个实施例中,可以如处理块1802中所示产生置换P1(W3⊕W10⊕(W16<<<15)),作为P1(W3)⊕P1(W10)⊕P1(W16<<<15),并与(W6<<<7)进行异或以及与W13进行异或,以在1807处产生新扩展(或延伸)的消息字W19作为指令的结果1890的元素。然后可以将指令的结果1890(例如W12,…W15,W16,…W19)存储在SIMD目的寄存器中。在一些实施例中,输出锁存器存储作为迭代的中间结果而生成的结果1890。在一些实施例中,可以通过旁路(例如,旁路网络208或210)来执行绕过中间结果1890到另一个微指令(或微操作或者uop)的一个或者多个输入源数据操作数。
图18B例示了用于执行另一指令以提供SIMD SM3密码散列函数的装置1810的又一替代实施例的图。装置1810的实施例可以是用于执行提供SIMD SM3密码散列函数的指令的流水线400的一部分(例如执行级416)或核490的一部分(例如执行单元462)。装置1810的实施例可以与解码级(例如,解码406)或解码器(例如,解码单元440)耦合,以解码用于SIMDSM3密码散列算法消息扩展的指令,该扩展具有小于散列算法的消息扩展迭代(例如,小于五十二个消息扩展迭代)的总数的迭代数目(例如,八个迭代,其可以允许在超标量执行流水线中并发执行其它指令),该指令指定第一源数据操作数1819集合(例如,W0,W1,…W7)和第二源数据操作数1811集合(例如W8,W9,…W15)以及扩展范围(例如,可选地作为在立即操作数1818,或者在指令助记符和/或操作代码中扩展范围的迭代的数目或迭代减1,e)。响应于解码的指令的一个或多个执行单元(例如执行装置1809),对第一源数据操作数1819集合和第二源数据操作数1811集合执行消息扩展迭代的SM3散列算法片集合,SM3消息扩展的数目由指定的扩展范围确定。在一个实施例中,中间结果1821(例如W12,…W15,W16,…W19)可以由响应于经解码的指令的一个或多个执行单元(例如执行装置1808)产生(例如,作为微指令、微操作或uop)。然后,中间结果1821可以与第一源数据操作数1819集合(例如W4,W5,…W7)的元素和第二源数据操作数1811集合(例如,W8,W9,…W11)的元素一起被提供给随后的逻辑层(例如执行装置1808),以产生响应于经解码的指令(例如,作为第二微指令、微操作或uop)的扩展(或延伸)消息结果1890(例如W16,…W19,W20,…W23)。然后,可以将指令的结果1890(例如,W16,…W19,W20,…W23)存储在SIMD目的寄存器(例如,在一些实施例中,用于第一源数据操作数1719的相同SIMD寄存器)中。
图19例示了用于执行提供SIMD SM3密码散列函数的指令的过程1901的实施例的流程图。过程1901和本文公开的其它过程由处理块执行,处理块可以包括能够由通用机器或由专用机器或由两者的组合执行的专用硬件或软件或固件操作代码。
在过程1901的处理块1910中,将SM3散列算法的中间散列值输入状态源操作数存储在第一SIMD向量寄存器中(例如,在多个m个数据字段的第一部分中)。在处理块1920中,源数据操作数集合(例如,在多个m个数据字段的第二部分中)存储在第二SIMD向量寄存器中。在处理块1925中,接收用于SM3散列算法的SIMD SM3散列圈片部分的指令。在处理块1950中,作为SIMD SM3散列圈片的迭代的结果,生成散列值输出状态。在处理块1960中,确定散列圈片的所有迭代是否已完成。如果否,则输出状态结果可选地在处理块1970中被绕过,到用于散列圈片的下一次迭代的输入状态,并且处理在处理块1950开始重复。否则,处理前进到处理块1980,其中散列值输出状态结果被存储到第一SIMD寄存器中的目的操作数。
将理解,虽然过程1901的处理块和本文公开的其它过程被例示为以迭代方式执行,但是在可能的时候可以优选地进行,以可替代的顺序,或并发地或并行地执行。
图20例示了用于执行提供SIMD SM3密码散列函数的指令的过程2001的另一实施例的流程图。在处理2001的处理块2010中,将SM3散列算法的中间散列值输入状态源操作数存储在第一SIMD向量寄存器中(例如,在多个m个数据字段的第一部分中)。在处理块2015中,消息块被扩展用于圈片源数据操作数集合。在处理块2020中,源数据操作数集合(例如,在多个m个数据字段的第二部分中)存储在第二SIMD向量寄存器中或存储器中。在处理块2025中,针对SM3散列算法的SIMD SM3散列圈片部分解码指令,该指令在立即操作数中指定该圈片部分。在处理块2030中,从第二SIMD寄存器或从用于当前迭代的存储器中选择一对圈片源数据(例如,Wj和Wj+4)。在处理块2035中,为当前圈片部分迭代选择圈常数(例如Tj)。在处理块2040中,为当前迭代选择一对布尔函数(例如,FFj和GGj)。在处理块2045中,对所选择的源数据和中间散列值输入状态执行SM3散列圈。在处理块2050中,作为SIMD SM3散列圈片的迭代的结果,生成散列值输出状态。在处理块2060中,确定散列圈片的所有迭代是否已完成。如果否,则输出状态结果在处理块2070中可选地绕过用于散列圈片的下一次迭代的输入状态,并且处理重复,在处理块2030中开始。否则,处理前进到处理块2080,其中散列值输出状态结果被存储到第一SIMD寄存器中的目的操作数。在一些替代实施例中,散列值输出状态结果可以存储到除第一SIMD寄存器之外的SIMD寄存器中的目的操作数或存储器中。
图21例示了用于执行替代指令以提供SIMD SM3密码散列函数的过程2101的实施例的流程图。在处理2101的处理块2110中,将SM3散列算法的第一源数据操作数集存储在第一SIMD向量寄存器中(例如,在多个m个数据字段的第一部分中)。在处理块2120中,将第二源数据操作数集合(例如,在多个m个数据字段的第二部分中)存储在第二SIMD向量寄存器中。在处理块2130中,接收用于SM3散列算法的SIMD SM3消息扩展(或延伸)片的指令。在处理块2140中,作为SIMD SM3消息扩展片的迭代的结果,生成新的消息字。在处理块2150中,确定消息扩展片的所有迭代是否已经完成。如果否,则在处理块2160中可选地绕过扩展消息块结果到用于消息扩展片的下一次迭代的输入状态,并且处理重复,在处理块2140中开始。否则,处理前进到处理块2170,其中扩展消息块结果被存储到第一SIMD寄存器中的目的操作数。在一些替代实施例中,扩展消息块结果可以存储到除第一SIMD寄存器之外的SIMD寄存器中的目的操作数或存储器中。
将理解,如本文所公开的SIMD SM3密码散列指令可以用于在诸如密码协议和互联网通信的应用中提供SIMD SM3密码散列函数,以确保数据完整性、数字签名、身份验证、消息内容认证和消息源认证,用于金融交易、电子商务、电子邮件、软件分发、数据存储、随机数生成等。
对于提供SM3密码散列函数的SIMD指令和处理逻辑的一些实施例,SM3消息扩展和SM3密码散列圈可以在现代微处理器的标准执行流水线中的迭代片中并发地和/或并行地执行。将理解,可以方便地选择每个片的迭代次数,以便通过与执行SM3消息扩展的片和/或SM3密码散列圈的片相关联的延迟来为其它并发飞行指令提供足够的覆盖。
因此,还将理解,提供用于SIMD SM3密码散列算法圈片的指令的执行,其具有多次迭代(例如每片两次、四次或八次迭代),但小于散列算法的圈迭代的总的数目,允许在超标量执行流水线和/或无序处理器流水线中并发执行其它指令(例如,SM3消息扩展指令),从而显著提高大量应用的处理吞吐量,并利用与通用处理器相关联的制造工艺改进的频率缩放。
本文公开的机制的实施例可以在硬件、软件、固件或这些实现方法的组合中实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
程序代码可以应用于输入指令以执行本文所描述的功能并生成输出信息。可以以已知的方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如,举例来说数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器的处理器的任何系统。
程序代码可以以高级程序上的或面向对象的编程语言来实现,以与处理系统通信。如果需要,程序代码还可以用汇编语言或机器语言来实现。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该代表性指令表示处理器内的各种逻辑,当由机器读取时,使机器制造逻辑以执行本文所描述的技术。称为“IP核”的这样的表示可以存储在有形的机器可读介质上,并且提供给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。
这种机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性、有形布置,包括存储介质,诸如硬盘、任何其它类型的的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘、诸如只读存储器(ROM)的半导体器件、随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡或任何其它类型的适合于存储电子指令的介质。
因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或包含诸如硬件描述语言(HDL)的设计数据,设计数据定义了本文中描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、模拟或以其它方式将指令转换为将由核处理的一个或多个其它指令。指令转换器可以在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、处理器外,或部分在处理器上和部分在处理器外。
因此,公开了用于执行根据至少一个实施例的一个或多个指令的技术。虽然已经在附图中描述和示出了某些示例性实施例,但是应当理解,这些实施例仅仅是对宽泛发明的说明而不是限制,并且本发明不限于所示和所描述的具体结构和布置,因为本领域普通技术人员在研究本公开内容时可以进行各种其它修改。在诸如此类的技术领域中,其中发展快并且不容易预见进一步的进展,在不脱离本公开内容的原理或所附权利要求的范围情况下,由实现技术进步促进容易地对所公开的实施例在布置和细节上进行修改。

Claims (46)

1.一种处理器,包括:
解码级,所述解码级用于解码针对SIMD SM3散列圈片的第一指令,所述第一指令指定所述散列算法的圈片部分、中间散列值输入操作数、源数据操作数集合和圈常数操作数集合;以及
一个或多个执行单元,响应于经解码的第一指令,执行以下操作:
应用所述中间散列值输入操作数和所述圈常数操作数集合,对所述源数据操作数集合执行圈迭代的SM3散列圈片集合;
将所述第一指令的结果存储在SIMD目的寄存器中。
2.根据权利要求1所述的处理器,其中,所述第一指令还将所述SIMD目的寄存器指定为所述中间散列值输入操作数。
3.根据权利要求1所述的处理器,其中,所述第一指令通过立即操作数中的第一字段来指定所述散列算法的所述圈片部分。
4.根据权利要求3所述的处理器,其中,所述第一指令至少部分地通过所述立即操作数中的第二字段来指定所述圈常数操作数集合。
5.根据权利要求4所述的处理器,其中,所述第一指令还通过所述立即操作数中的所述第二字段来指定布尔函数FFj和GGj选择器。
6.根据权利要求1所述的处理器,其中,所述第一指令将第一指令助记符中的所述散列算法的所述圈片部分指定为四个圈。
7.根据权利要求6所述的处理器,其中,所述圈常数操作数集合包括四个预旋转的32位常数值。
8.根据权利要求1所述的处理器,其中,所述第一指令将第一指令助记符中的所述散列算法的所述圈片部分指定为两个圈。
9.根据权利要求1所述的处理器,其中,所述第一指令将第一指令助记符中的所述散列算法的所述圈片部分指定为一个圈。
10.根据权利要求1所述的处理器,其中,所述第一指令将所述源数据操作数集合指定为包括八个32位值的SIMD寄存器。
11.根据权利要求1所述的处理器,其中,所述第一指令将所述源数据操作数集合指定为包括八个32位值的存储器位置。
12.根据权利要求1所述的处理器,其中,所述第一指令将所述源数据操作数集合指定为两个SIMD寄存器,每个SIMD寄存器包含四个32位值。
13.根据权利要求1所述的处理器,其中,所述第一指令通过立即操作数中的第一字段来指定所述散列算法的所述圈片部分以存储0至63之间的圈数目,并且通过第二字段来存储0至3之间的迭代计数。
14.一种处理器,包括:
解码级,所述解码级用于解码针对SIMD SM3消息扩展的第一指令,所述第一指令指定第一源数据操作数集合、第二源数据操作数集合以及扩展范围;以及
一个或多个执行单元,响应于所述经解码的第一指令,执行以下操作:
根据所述第一源数据操作数集合和所述第二源数据操作数集合执行多个SM3消息扩展,所述SM3消息扩展的数目由所述指定的扩展范围来确定;以及
将所述第一指令的结果存储在SIMD目的寄存器中。
15.根据权利要求14所述的处理器,其中,所述第一指令将所述SIMD目的寄存器指定为目的操作数。
16.根据权利要求14所述的处理器,其中,所述第一指令将所述第一源数据操作数集合和所述第二源数据操作数集合指定为两个SIMD寄存器,每个SIMD寄存器包括八个32位值。
17.根据权利要求14所述的处理器,其中,所述第一指令通过立即操作数中的第一字段来指定所述扩展范围。
18.根据权利要求14所述的处理器,其中,所述第一指令在第一指令助记符中指定所述扩展范围,以指示四个新的32位字的消息扩展。
19.根据权利要求18所述的处理器,其中,除了所述第一源数据操作数集合和所述第二源数据操作数集合之外,所述四个新的32位字中的一个32位字的消息扩展还需要所述四个新的32位字中的另一个32位字。
20.根据权利要求14所述的处理器,其中,所述第一指令指定在第一指令助记符中的所述扩展范围,以指示两个新的32位字的消息扩展。
21.根据权利要求14所述的处理器,其中,所述第一指令指定在第一指令助记符中的所述扩展范围,以指示一个新的32位字的消息扩展。
22.根据权利要求14所述的处理器,其中,所述第一指令指定在第一指令助记符中的所述扩展范围,以指示四个新的32位字的消息扩展。
23.一种方法,包括:
在第一向量寄存器的多个m数据字段的第一部分中存储SM3散列算法的中间散列值输入状态源操作数;
在第二向量寄存器的多个m数据字段的第二部分中存储源数据操作数集合;
在处理器中执行针对所述SM3散列算法的SM3散列圈片部分的SIMD指令,所述SM3散列算法的SM3散列圈片部分具有小于所述SM3散列算法的圈迭代的总数的多个迭代;以及
针对所述SM3散列圈片的每次迭代,生成迭代的结果,存储作为所述迭代的结果而生成的散列值输出状态,以及绕过所述散列值输出状态到所述多个迭代的每个下一个迭代的所述中间散列值输入状态。
24.根据权利要求23所述的方法,还包括:
在第三向量寄存器的所述多个m数据字段的第三部分中存储圈常数操作数集合;以及
针对所述SM3散列圈片的每次迭代,读取所述圈常数操作数集合的相应圈常数Tj,并将所述相应圈常数与所述第一向量寄存器的左旋转的相应数据字段A和所述第一向量寄存器的第二未旋转的数据字段E相加。
25.据权利要求24所述的方法,其中,所述第三部分包括所述第三向量寄存器的所述多个m数据字段中的四个,并且所述存储的圈常数操作数集合的每个圈常数Tj向左预旋转j位。
26.根据权利要求23所述的方法,还包括:
针对所述SM3散列圈片的每次迭代,读取所述第二向量寄存器的相应数据字段Wj,并且将所述第二向量寄存器的相应数据字段与所述第二向量寄存器的第二数据字段Wj+4进行异或操作。
27.根据权利要求26所述的方法,其中,所述第二部分包括所述第二向量寄存器的所述多个m数据字段中的八个。
28.根据权利要求23所述的方法,其中,所述第一部分包括所述第一向量寄存器的所述多个m数据字段中的八个。
29.根据权利要求23所述的方法,其中,所述SIMD指令通过立即操作数中的第一字段来指定所述SM3散列算法的所述圈片部分。
30.根据权利要求29所述的方法,其中,所述SIMD指令至少部分地通过所述立即操作数中的第二字段来指定圈常数操作数集合。
31.根据权利要求30所述的方法,其中,所述SIMD指令还通过所述立即操作数中的所述第二字段来指定布尔函数FFj和GGj选择器。
32.一种方法,包括:
在第一向量寄存器的多个m数据字段的第一部分中存储第一源数据操作数集合;
在第二向量寄存器的多个m数据字段的第二部分中存储第二源数据操作数集合;
在处理器中,执行指定所述SM3散列算法的SM3消息扩展片部分的扩展范围的SIMD指令,所述SM3散列算法的SM3消息扩展片部分具有多个来自所述第一源数据操作数集合和所述第二源数据操作数集合的SM3消息扩展,所述SM3消息扩展的数目由所述指定的扩展范围来确定;以及
将所述SIMD指令的结果存储在SIMD目的寄存器中。
33.根据权利要求32所述的方法,其中,所述SIMD指令将所述第一源数据操作数集合和所述第二源数据操作数集合指定为两个SIMD寄存器,每个SIMD寄存器包括八个32位值。
34.根据权利要求32所述的方法,其中,所述SIMD指令通过立即操作数中的第一字段来指定所述扩展范围。
35.根据权利要求32所述的方法,其中,所述SIMD指令在第一指令助记符中指定所述扩展范围,以指示四个新的32位字的消息扩展。
36.根据权利要求35所述的方法,其中,除了所述第一源数据操作数集合和所述第二源数据操作数集合之外,所述四个新的32位字中的一个32位字的消息扩展需要所述四个新的32位字中的另一个32位字。
37.一种处理系统,包括:
存储器,用于存储针对SIMD SM3散列算法圈片的第一指令和针对所述SM3散列算法的SM3消息扩展片的第二指令;以及
处理器,包括:
指令提取级,用于提取所述第一指令;
解码级,用于对所述第一指令进行解码,所述第一指令指定所述散列算法的圈片部分、中间散列值输入操作数、圈片源数据操作数集合和圈常数操作数集合;所述解码级对所述第二指令进行解码,所述第二指令指定第一源数据操作数集合、第二源数据操作数集合和扩展范围;以及
一个或多个执行单元,响应于所述经解码的第一指令,执行以下操作:
应用所述中间散列值输入操作数和所述圈常数操作数集合对所述圈片源数据操作数集合执行圈迭代的SM3散列圈片集合,以及将所述第一指令的第一结果存储在第一SIMD目的寄存器中;以及
所述一个或多个执行单元响应于所述经解码的第二指令,执行以下操作:
根据所述第一源数据操作数集合和所述第二源数据操作数集合执行多个SM3消息扩展,所述SM3消息扩展的数目由所述指定的扩展范围确定,以及将所述第二指令的第二结果存储在第二SIMD目的寄存器中。
38.根据权利要求37所述的处理系统,其中,所述第一指令通过立即操作数中的第一字段指定所述散列算法的所述圈片部分。
39.根据权利要求37所述的处理系统,其中,所述第一指令至少部分地通过所述立即操作数中的第二字段来指定所述圈常数操作数集合。
40.根据权利要求39所述的处理系统,其中,所述第一指令还通过所述立即操作数中的所述第二字段来指定布尔函数FFj和GGj选择器。
41.根据权利要求37所述的处理系统,其中,所述第一指令将所述第一指令助记符中的所述散列算法的所述圈片部分指定为四个圈。
42.根据权利要求41所述的处理系统,其中,所述圈常数操作数集合包括初始预旋转的32位常数值。
43.根据权利要求42所述的处理系统,其中,所述圈常数操作数集合包括四个预旋转的32位常数值。
44.根据权利要求37所述的处理系统,其中,所述第二指令将所述第一源数据操作数集合和所述第二源数据操作数集合指定为两个SIMD寄存器,每个SIMD寄存器包括八个32位值。
45.根据权利要求37所述的处理系统,其中所述第二指令通过立即操作数中的第一字段来指定所述扩展范围。
46.根据权利要求37所述的处理系统,其中,所述第二指令在第一指令助记符中指定所述扩展范围,以指示四个新的32位字的消息扩展。
CN201580045924.6A 2014-09-26 2015-12-10 用于提供simd sm3密码散列函数的指令和逻辑 Active CN107094369B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/498,931 US9658854B2 (en) 2014-09-26 2014-09-26 Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
PCT/US2015/065134 WO2017030600A1 (en) 2014-09-26 2015-12-10 Instructions and logic to provide simd sm3 cryptographic hashing functionality

Publications (2)

Publication Number Publication Date
CN107094369A true CN107094369A (zh) 2017-08-25
CN107094369B CN107094369B (zh) 2021-06-25

Family

ID=55584768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580045924.6A Active CN107094369B (zh) 2014-09-26 2015-12-10 用于提供simd sm3密码散列函数的指令和逻辑

Country Status (5)

Country Link
US (2) US9658854B2 (zh)
JP (1) JP6535972B2 (zh)
CN (1) CN107094369B (zh)
TW (1) TWI550433B (zh)
WO (1) WO2017030600A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107748674A (zh) * 2017-09-07 2018-03-02 中国科学院微电子研究所 面向比特粒度的信息处理系统
CN108427575A (zh) * 2018-02-01 2018-08-21 深圳市安信智控科技有限公司 全流水结构sha-2消息扩展优化方法
CN110086602A (zh) * 2019-04-16 2019-08-02 上海交通大学 基于gpu的sm3密码散列算法的快速实现方法
CN110990896A (zh) * 2019-12-03 2020-04-10 成都卫士通信息产业股份有限公司 基于sm2白盒的数字签名装置、方法、存储介质及设备
CN112367158A (zh) * 2020-11-06 2021-02-12 海光信息技术股份有限公司 一种加速sm3算法的方法、处理器、芯片及电子设备
CN112612518A (zh) * 2020-12-08 2021-04-06 麒麟软件有限公司 一种基于飞腾平台的网络checksum算法优化方法
CN113741972A (zh) * 2021-08-20 2021-12-03 深圳市风云实业有限公司 一种sm3算法的并行处理方法及电子设备
CN113794552A (zh) * 2021-09-14 2021-12-14 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统
CN114095149A (zh) * 2021-11-12 2022-02-25 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质
CN115412890A (zh) * 2021-05-28 2022-11-29 中移物联网有限公司 一种数据传输方法、装置和终端设备

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) * 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10387888B2 (en) 2016-07-08 2019-08-20 Asapp, Inc. Assisting entities in responding to a request of a user
US10083451B2 (en) 2016-07-08 2018-09-25 Asapp, Inc. Using semantic processing for customer support
CN106230581B (zh) * 2016-09-09 2019-05-21 杭州华为数字技术有限公司 Sm3消息处理方法和装置
TWI632799B (zh) * 2016-11-16 2018-08-11 黃冠寰 An accountable handshake data transfer protocol
US10650311B2 (en) * 2016-12-19 2020-05-12 Asaap, Inc. Suggesting resources using context hashing
US10109275B2 (en) 2016-12-19 2018-10-23 Asapp, Inc. Word hash language model
US10762423B2 (en) 2017-06-27 2020-09-01 Asapp, Inc. Using a neural network to optimize processing of user requests
US10497004B2 (en) 2017-12-08 2019-12-03 Asapp, Inc. Automating communications using an intent classifier
US10489792B2 (en) 2018-01-05 2019-11-26 Asapp, Inc. Maintaining quality of customer support messages
US10210244B1 (en) 2018-02-12 2019-02-19 Asapp, Inc. Updating natural language interfaces by processing usage data
US10169315B1 (en) 2018-04-27 2019-01-01 Asapp, Inc. Removing personal information from text using a neural network
CN108768615B (zh) * 2018-05-16 2021-04-13 济南蓝剑钧新信息科技有限公司 散列算法在同一框架下的asic芯片实现方法
US11216510B2 (en) 2018-08-03 2022-01-04 Asapp, Inc. Processing an incomplete message with a neural network to generate suggested messages
CN109547192B (zh) * 2018-11-08 2020-11-03 北京大学 Sm3密码杂凑算法的并行化优化方法
US10747957B2 (en) 2018-11-13 2020-08-18 Asapp, Inc. Processing communications using a prototype classifier
US11551004B2 (en) 2018-11-13 2023-01-10 Asapp, Inc. Intent discovery with a prototype classifier
US10824428B2 (en) * 2019-03-29 2020-11-03 Intel Corporation Apparatuses, methods, and systems for hashing instructions
US11425064B2 (en) 2019-10-25 2022-08-23 Asapp, Inc. Customized message suggestion with user embedding vectors
CN111612622B (zh) 2020-05-20 2021-03-23 深圳比特微电子科技有限公司 用于执行散列算法的电路和方法
CN114978473B (zh) * 2022-05-07 2024-03-01 海光信息技术股份有限公司 一种sm3算法的处理方法、处理器、芯片及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140019693A1 (en) * 2012-07-11 2014-01-16 Sean M. Gulley Parallel processing of a single data buffer
US20140189368A1 (en) * 2012-12-29 2014-07-03 Gilbert M. Wolrich Instruction and logic to provide simd secure hashing round slice functionality
US20140195782A1 (en) * 2012-03-30 2014-07-10 Kirk S. Yap Method and apparatus to process sha-2 secure hashing algorithm
US20150043729A1 (en) * 2013-08-08 2015-02-12 Vinodh Gopal Instruction and logic to provide a secure cipher hash round functionality
US20150186139A1 (en) * 2013-12-27 2015-07-02 Intel Corporation Sm3 hash function message expansion processors, methods, systems, and instructions

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
US4250483A (en) 1978-01-30 1981-02-10 Rubner Anthony C System for signalized intersection control
DE68926200T2 (de) 1988-08-11 1996-10-17 Ibm Geheime Datenübertragung mittels Steuervektoren
US5339398A (en) 1989-07-31 1994-08-16 North American Philips Corporation Memory architecture and method of data organization optimized for hashing
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5608801A (en) 1995-11-16 1997-03-04 Bell Communications Research, Inc. Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions
JPH1049369A (ja) 1996-08-07 1998-02-20 Ricoh Co Ltd データ処理装置
US5920900A (en) 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US5897637A (en) 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6067547A (en) 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US5960434A (en) 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US6260055B1 (en) 1997-10-15 2001-07-10 Kabushiki Kaisha Toshiba Data split parallel shifter and parallel adder/subtractor
US6226710B1 (en) 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6360218B1 (en) 1998-10-26 2002-03-19 Microsoft Corporation Compact record format for low-overhead databases
US6307955B1 (en) 1998-12-18 2001-10-23 Topaz Systems, Inc. Electronic signature management system
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6578131B1 (en) 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6631419B1 (en) 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US6594665B1 (en) 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
US6952770B1 (en) 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US7917647B2 (en) 2000-06-16 2011-03-29 Mcafee, Inc. Method and apparatus for rate limiting
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020032551A1 (en) 2000-08-07 2002-03-14 Jabari Zakiya Systems and methods for implementing hash algorithms
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
WO2002056538A2 (en) 2001-01-12 2002-07-18 Broadcom Corporation Implementation of the shai algorithm
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7249255B2 (en) 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US20040015579A1 (en) 2001-06-14 2004-01-22 Geoffrey Cooper Method and apparatus for enterprise management
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
KR100423811B1 (ko) 2001-12-12 2004-03-22 한국전자통신연구원 카스미 암호화 알고리즘을 응용한 암호화 장치
US7395412B2 (en) 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7165135B1 (en) 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
DE60311441T2 (de) 2002-04-18 2007-11-08 Advanced Micro Devices Inc., Sunnyvale Initialisierung eines rechnersystems mit einem für einen sicheren ausführungsmodus geeigneten prozessor
JP2004109420A (ja) 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7921300B2 (en) 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US7684563B1 (en) 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7599489B1 (en) 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
US7602905B2 (en) 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
EP1672831A1 (fr) 2004-12-16 2006-06-21 Nagravision S.A. Méthode de transmission de données numériques dans un réseau local
CN101044535B (zh) 2005-03-16 2011-06-15 三菱电机株式会社 数据变换装置以及数据变换方法
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US8020142B2 (en) 2006-12-14 2011-09-13 Intel Corporation Hardware accelerator
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US20100250965A1 (en) 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8832464B2 (en) 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US8995663B2 (en) 2010-03-31 2015-03-31 Feitian Technologies Co., Ltd. Method for implementing an encryption engine by smart key device
US8583902B2 (en) 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
WO2012135958A1 (en) 2011-04-06 2012-10-11 Certicom Corp. Efficient implementation of hash algorithm on a processor
JP2012252281A (ja) 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
US8855302B2 (en) 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
CN102412971B (zh) 2011-11-30 2015-04-29 西安西电捷通无线网络通信股份有限公司 基于sm2密钥交换协议的密钥协商方法及装置
CN104012032B (zh) 2011-12-22 2017-04-19 英特尔公司 处理sha‑1安全散列算法的方法和设备
CN102420834A (zh) 2011-12-29 2012-04-18 公安部第三研究所 网络电子身份证中网络身份标识码的生成和校验控制方法
US8856546B2 (en) 2012-06-07 2014-10-07 Intel Corporation Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
US8856547B2 (en) 2012-06-07 2014-10-07 Intel Corporation Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
GB2496934B (en) 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US8874933B2 (en) 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US8838997B2 (en) 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US20140362098A1 (en) * 2013-06-10 2014-12-11 Sharp Laboratories Of America, Inc. Display stream compression
CN103457719B (zh) 2013-07-23 2016-06-08 国家密码管理局商用密码检测中心 一种对sm3密码算法hmac模式的侧信道能量分析方法
CN103427997B (zh) 2013-08-16 2016-06-22 西安西电捷通无线网络通信股份有限公司 一种生成数字签名的方法及装置
CN103490895B (zh) 2013-09-12 2016-09-14 电小虎能源科技(北京)有限公司 一种应用国密算法的工业控制身份认证方法及装置
US9424209B2 (en) 2013-09-19 2016-08-23 Intel Corporation Dynamic heterogeneous hashing functions in ranges of system memory addressing space
US9390246B2 (en) 2013-09-25 2016-07-12 Intel Corporation Creating secure original equipment manufacturer (OEM) identification
US9425953B2 (en) 2013-10-09 2016-08-23 Intel Corporation Generating multiple secure hashes from a single data buffer
US9250914B2 (en) 2013-12-20 2016-02-02 Intel Corporation Method and apparatus for selecting cache locality for atomic operations
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9317719B2 (en) * 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) * 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140195782A1 (en) * 2012-03-30 2014-07-10 Kirk S. Yap Method and apparatus to process sha-2 secure hashing algorithm
US20140019693A1 (en) * 2012-07-11 2014-01-16 Sean M. Gulley Parallel processing of a single data buffer
US20140189368A1 (en) * 2012-12-29 2014-07-03 Gilbert M. Wolrich Instruction and logic to provide simd secure hashing round slice functionality
US20150043729A1 (en) * 2013-08-08 2015-02-12 Vinodh Gopal Instruction and logic to provide a secure cipher hash round functionality
US20150186139A1 (en) * 2013-12-27 2015-07-02 Intel Corporation Sm3 hash function message expansion processors, methods, systems, and instructions

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107748674B (zh) * 2017-09-07 2021-08-31 中国科学院微电子研究所 面向比特粒度的信息处理系统
CN107748674A (zh) * 2017-09-07 2018-03-02 中国科学院微电子研究所 面向比特粒度的信息处理系统
CN108427575B (zh) * 2018-02-01 2022-03-15 深圳市安信智控科技有限公司 全流水结构sha-2消息扩展优化方法
CN108427575A (zh) * 2018-02-01 2018-08-21 深圳市安信智控科技有限公司 全流水结构sha-2消息扩展优化方法
CN110086602A (zh) * 2019-04-16 2019-08-02 上海交通大学 基于gpu的sm3密码散列算法的快速实现方法
CN110990896A (zh) * 2019-12-03 2020-04-10 成都卫士通信息产业股份有限公司 基于sm2白盒的数字签名装置、方法、存储介质及设备
CN110990896B (zh) * 2019-12-03 2023-01-06 成都卫士通信息产业股份有限公司 基于sm2白盒的数字签名装置、方法、存储介质及设备
CN112367158A (zh) * 2020-11-06 2021-02-12 海光信息技术股份有限公司 一种加速sm3算法的方法、处理器、芯片及电子设备
CN112612518A (zh) * 2020-12-08 2021-04-06 麒麟软件有限公司 一种基于飞腾平台的网络checksum算法优化方法
CN112612518B (zh) * 2020-12-08 2022-04-01 麒麟软件有限公司 一种基于飞腾平台的网络checksum算法优化方法
CN115412890A (zh) * 2021-05-28 2022-11-29 中移物联网有限公司 一种数据传输方法、装置和终端设备
CN113741972A (zh) * 2021-08-20 2021-12-03 深圳市风云实业有限公司 一种sm3算法的并行处理方法及电子设备
CN113741972B (zh) * 2021-08-20 2023-08-25 深圳市风云实业有限公司 一种sm3算法的并行处理方法及电子设备
CN113794552A (zh) * 2021-09-14 2021-12-14 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统
CN113794552B (zh) * 2021-09-14 2023-07-07 山东省计算中心(国家超级计算济南中心) 一种基于simd的sm3并行数据加密运算方法及系统
CN114095149A (zh) * 2021-11-12 2022-02-25 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质
CN114095149B (zh) * 2021-11-12 2023-05-30 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2017030600A1 (en) 2017-02-23
JP2017531853A (ja) 2017-10-26
TW201626283A (zh) 2016-07-16
CN107094369B (zh) 2021-06-25
US10592245B2 (en) 2020-03-17
JP6535972B2 (ja) 2019-07-03
US20160092688A1 (en) 2016-03-31
US9658854B2 (en) 2017-05-23
TWI550433B (zh) 2016-09-21
US20170255469A1 (en) 2017-09-07

Similar Documents

Publication Publication Date Title
CN107094369A (zh) 用于提供simd sm3密码散列函数的指令和逻辑
CN104919416B (zh) 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑
CN105409158B (zh) 提供安全密码散列回合功能的处理器和方法
CN103793201B (zh) 提供向量压缩和旋转功能的指令和逻辑
CN104484284B (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
KR102562111B1 (ko) Simd sm4 암호화 블록 암호 기능성을 제공하는 명령어 및 로직
CN104321741B (zh) 双舍入组合浮点乘法和加法
CN104011662B (zh) 用于提供向量混合和置换功能的指令和逻辑
CN103827813B (zh) 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN105607890B (zh) 处理器和响应于单个simd紧缩比较指令而执行的方法
CN102103487B (zh) 用于在单个指令中执行移位和异或运算的方法和装置
CN103959236B (zh) 用于提供向量横向多数表决功能的处理器、设备和处理系统
CN107209722A (zh) 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
CN108351839A (zh) 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN107430508A (zh) 用于提供原子范围操作的指令和逻辑
CN105302522B (zh) 提供通用gf(256)simd密码算法功能性的指令和逻辑
CN105955704A (zh) 用于提供向量横向比较功能的指令和逻辑
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN108292229A (zh) 用于重新出现的相邻聚集的指令和逻辑
CN108228960A (zh) 用于熔丝验证的基于Simon的散列
CN105204820B (zh) 用于提供通用gf(256)simd加密算术功能的指令和逻辑
CN107003854A (zh) 提供向量包装元组交叉比较功能的方法、装置、指令和逻辑
CN104025033A (zh) 利用控制操纵的simd可变移位和循环
CN103988173B (zh) 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑
CN104011658B (zh) 用于提供向量线性内插功能的指令和逻辑

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant