用于提供SIMDSM4加密块密码功能性的指令和逻辑的制作方法

文档序号:11288402阅读:348来源:国知局
用于提供SIMD SM4加密块密码功能性的指令和逻辑的制造方法与工艺

本发明涉及处理逻辑、微处理器和关联指令集体系结构(当由处理器或其它处理逻辑执行时,执行逻辑、数学或其它功能操作)的领域。具体地说,本公开涉及提供simdsm4加密块(cryptographicblock)密码功能性的指令和逻辑。



背景技术:

密码是一种依赖算法和密钥来保护信息的工具。所述算法是复杂的数学算法以及密钥是比特串。存在两种基本类型的密码学系统:秘密密钥系统以及公共密钥系统。秘密密钥系统也称为具有由两方或更多方共享的单个密钥(“秘密密钥”)的对称系统。单个密钥用于加密和解码信息。

例如,先进加密标准(aes),也称为rijndael,是由两个比利时密码学家开发的块密码且由美国政府采纳为密码标准。aes于2001年11月26日由国家标准技术局(nist)宣布为u.s.fipspub197(fips197)。其它的加密算法也是感兴趣的。

另一示例为sm4(以前也称为sms4),用于无线lanwapi(有线鉴别与保密基础设施)的中国国家标准中的块密码。其按轮(即,32轮)将明文数据处理为galois域28中的128比特块,也表示为gf(256)、取模不可约分多项式。sm4算法是由教授lushu-wang发明,并由中国政府撤销机密并于2006年1月发布。

sm4的输入、输出和密钥各为128比特。每一轮修改组成128比特块的4个32比特字符中的一个(通过利用其它三个字符的带密钥函数(keyedfunction)对其进行异或)。加密和解码具有相同的结构,不同的是用于解密的轮密钥调度是用于加密的轮密钥调度的反向(reverse)。sm4(在ansic中)的软件实现由freesoftwarefoundation在2009年12月在线发布。软件实现的一个缺陷是性能。软件运行成数量级比专门的硬件慢,因此期望具有硬件/固件实现的附加性能。

使用查找表存储器、真值表、二元判定图或256输入复用器的典型直接硬件实现在电路面积方面是昂贵的。使用对gf(256)有限域同构的备选方法可能是面积有效的,但也可能慢于直接硬件实现。

现代的处理器通常包括用于提供计算上密集,但提供高水平的数据平行处理的操作的指令,其中数据平行处理可通过使用各种数据存储装置的有效实现而被利用,例如诸如单指令多数据(simd)向量寄存器。中央处理单元(cpu)则可提供并行硬件以支持处理向量。向量为保持若干连续数据元素的数据结构。大小为m的向量寄存器(其中m为2k,例如512、256、128、64、32...4或2)可包含大小为0的n个向量元素,其中n=m/0。例如,64比特向量寄存器可被划分为(a)64个向量元素,其中每个元素保持占有1字节的数据条目、(b)32个向量元素以保持各占有2字节(或一个“字”)的数据条目、(c)16个向量元素以保持各占有4字节(或“双字”)的数据条目或(d)8个向量元素以保持各占有8字节(或“四字”)的数据条目。在simd向量寄存器中,平行处理的本质可能非常适合于块密码算法的处理。

至今,对这种复杂性、性能限制问题和其它瓶颈所提供的有效的时空的设计折衷和潜在的解决方法的选择还没有得到充分开发。

附图说明

本发明通过示例来示出并且不限制于附图的图形。

图1a为执行指令以提供simdsm4加密块密码功能性的系统的一个实施例的框图。

图1b为执行指令以提供simdsm4加密块密码功能性的系统的另一实施例的框图。

图1c为执行指令以提供simdsm4加密块密码功能性的系统的另一实施例的框图。

图2为执行指令以提供simdsm4加密块密码功能性的处理器的一个实施例的框图。

图3a示出了根据一个实施例的压缩数据类型。

图3b示出了根据一个实施例的压缩数据类型。

图3c示出了根据一个实施例的压缩数据类型。

图3d示出了用于提供根据一个实施例的simdsm4加密块密码功能性的指令编码。

图3e示出了用于提供根据另一实施例的simdsm4加密块密码功能性的指令编码。

图3f示出了用于提供根据另一实施例的simdsm4加密块密码功能性的指令编码。

图3g示出了用于提供根据另一实施例的simdsm4加密块密码功能性的指令编码。

图3h示出了用于提供根据另一实施例的simdsm4加密块密码功能性的指令编码。

图4a示出用于执行提供simdsm4加密块密码功能性的指令的处理器微体系结构的一个实施例的元素。

图4b示出用于执行提供simdsm4加密块密码功能性的指令的处理器微体系结构的另一实施例的元素。

图5为用于执行提供simdsm4加密块密码功能性的指令的处理器的一个实施例的框图。

图6为用于执行提供simdsm4加密块密码功能性的指令的计算机系统的一个实施例的框图。

图7为用于执行提供simdsm4加密块密码功能性的指令的计算机系统的另一实施例的框图。

图8为用于执行提供simdsm4加密块密码功能性的指令的计算机系统的另一实施例的框图。

图9为用于执行提供simdsm4加密块密码功能性的指令的片上系统的一个实施例的框图。

图10为用于执行提供simdsm4加密块密码功能性的指令的处理器的实施例的框图。

图11为提供simdsm4加密块密码功能性的ip核开发系统的一个实施例的框图。

图12示出了提供simdsm4加密块密码功能性的体系结构仿真系统的一个实施例。

图13示出用于转换提供simdsm4加密块密码功能性的指令的系统的一个实施例。

图14a示出执行用于提供simdsm4加密块密码功能性的指令的设备的一个实施例的图形。

图14b示出执行用于提供simdsm4加密块密码功能性的指令的设备的备选实施例的图形。

图14c示出执行用于提供simdsm4加密块密码功能性的指令的设备的另一备选实施例的图形。

图15a示出执行用于提供加密块密码功能性的simdsm4轮片的指令的过程的一个实施例的流程图。

图15b示出用于提供加密块密码函数的simdsm4轮片的指令的过程的备选实施例的流程图。

图15c示出执行用于提供加密块密码功能性的simdsm4轮片的指令的过程的另一备选实施例的流程图。

图16a示出使用用于提供加密块密码功能性的simdsm4轮片的指令来有效实现sm4加密块密码的过程的一个实施例的流程图。

图16b示出使用用于提供加密块密码功能性的simdsm4轮片的指令来有效实现sm4加密块密码的过程的备选实施例的流程图。

具体实施方式

以下描述公开了提供单指令多数据(simd)sm4轮片操作的指令和逻辑。指令的实施例指定第一和第二源数据操作数集合以及替换函数指示符,例如,在立即操作数中。处理器的实施例可包括加密单元,响应于第一指令而执行以下操作:在具有来自响应于指示第一替换函数的替换函数指示符的第二源数据操作数集合的对应密钥的第一源数据操作数集合的一部分上执行sm4轮交换的片、使用具有来自响应于指示第二替换函数的替换函数指示符的第二源数据操作数集合的对应常数的第一源数据操作数集合的另一部分执行sm4密钥生成的片、以及在simd目的地寄存器中存储第一指令的结果元素集合。

将意识到,通过利用相同simd指令执行sm4轮交换的片和sm4密钥生成的片,加密或解密可以利用在较小缓冲器(例如,256比特)中的密钥扩展而被同时处理。在一些实施例中,片可包括四轮的sm4轮交换和四轮的sm4密钥生成。对于这种实施例,32轮的sm4轮交换和sm4密钥生成可使用8(或9)个sm4轮片操作执行。在一些实施例中,每个256比特数据路径或512比特数据路径的128比特通道可基于在指示特定替换函数(例如,t或t’,或者l或l’)的指令的立即操作数中的对应的值,被选择用于处理sm4轮交换的片或用于处理sm4密钥生成的片。在一些被选实施例中,可预先确定和/或固定用于处理sm4轮交换的片与用于处理sm4密钥生成的片的数据路径的通道。在一些实施例中,片可通过微指令(或micro-op或u-op)实现且结果可从一个微指令旁路至下一个微指令。在一些可选实施例中,片可通过在硬件中的逻辑的多个层(例如,2个或4个或8个)或者备选地通过微指令和硬件中的逻辑的多个层的某个组合实现。在一些实施例中,片可包括通过在指令的立即操作数中的值指示的若干轮(例如,1、2、4、8、16或32)sm4轮交换和sm4密钥生成。在一些可选实施例中,片中的轮数可由指令记忆存储器和/或由操作编码(或操作码)指示。

在以下描述中,阐述了诸如处理逻辑、处理器类型、微体系结构条件、事件、使能机制等多种特定细节,以便提供对本发明实施例的更彻底理解。然而,本领域技术人员将意识到,可在没有此类特定细节的情况下实践本发明。另外,一些众所周知的结构、电路等并未详细地显示,以避免不必要地模糊本发明的实施例。

尽管参考处理器描述了以下实施例,但是其它实施例可适用于其它类型的集成电路和逻辑装置。本发明实施例的类似技术和教导可应用于受益于较高流水线吞吐量及改进的性能的其它类型的电路或半导体装置。本发明实施例的教导可适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512比特、256比特、128比特、64比特、32比特或16比特或8比特数据操作的处理器或机器,并可应用于任何处理器与机器(在其中执行数据的操纵或管理)。另外,以下描述提供了示例,并且附图显示出用于说明目的的各种示例。然而,不应以限制意义来理解这些示例,因为它们仅意图提供本发明实施例的示例而非提供本发明实施例的所有可能实现的详尽清单。

尽管以下示例在执行单元与逻辑电路的上下文中描述指令处理与分发,本发明的其它实施例可通过存储在机器可读的有形介质的数据和/或指令实现,所述数据和/或指令在由机器执行时使机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明实施例关联的功能体现在机器可执行指令中。指令可用于使通过指令编程的通用处理器或专用处理器执行本发明的步骤。本发明实施例可提供为计算机程序产品或软件,所述计算机程序产品或软件可包括机器或或计算机可读介质(具有指令存储在其上),所述指令可用于编程计算机(或其它电子装置)以执行根据本发明实施例的一个或多个操作。备选地,可通过包含用于执行步骤的固定功能逻辑的特定硬件组件,或通过编程的计算机组件和固定功能硬件组件的任何组合来执行本发明实施例的步骤。

用于编程执行本发明实施例的逻辑的指令可存储在系统中的存储器中,如dram、高速缓存、闪存或其它存储装置。此外,可经由网络或通过其它计算机可读媒体分发指令。因此,机器可读介质可包括用于存储或传送机器(例如,计算机)可读形式的信息的任何机制,但是不限于软盘、光盘、压缩盘、只读存储器(cd-rom)和磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁或光卡、闪存,或用于经由电、光、声信号或其它形式传播的信号(例如,载波、红外信号、数字信号等)在互联网上传送信息中使用的有形的机器可读存储装置。相应地,计算机可读机制包括适用于存储或传送以可由机器(例如,计算机)可读的形式电子指令或信息的任何类型的有形机器可读机制。

设计可经过各种阶段,从创建到模拟到制造。表示设计的数据可以以若干方式来表示设计。首先,如模拟中有用的,硬件可使用硬件描述语言或另一功能描述语言来表示。另外,可在设计过程的一些阶段产生具有逻辑门和/或晶体管门的电路级模型。此外,大多数设计在一些阶段达到表示各种装置在硬件模型中的物理放置的数据层。在使用公知半导体制造技术的情况下,表示硬件模型的数据可为指定用于产生集成电路的掩膜的不同掩膜层的各种特征的存在或缺失的数据。在设计的任何表示中,数据可以以机器可读介质的任何形式存储。诸如盘的存储器或磁存储装置或光存储装置可为用于存储信息的机器可读介质,所述信息由经光或电波调制或以其它方式生成来传送以传送此类信息。当传送指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重新传送的程度上,制造新拷贝。因此,通信提供商或网络提供商可将体现本发明实施例的技术的物品(如编码为载波的信息)至少暂时地存储在有形机器可读介质上。

在现代处理器中,若干不同的执行单元用于处理且执行多种代码与指令。并非所有指令被创造为相同,因为一些完成较快,而其它可花费若干时钟周期来完成。指令吞吐量越快,处理器的整体性能越好。因此,使尽可能多的指令尽可能快地执行会是有利的。然而,存在具有较大复杂性且在执行时间与处理器资源方面要求更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。

由于更多的计算机系统用于互联网、文本和多媒体应用中,所以已随着时间引入附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机体系结构关联,所述一个或多个计算机体系结构包括数据类型、指令、寄存器体系结构、寻址模式、存储器体系结构、中断和异常处理,以及外部输入和输出(i/o)。

在一个实施例中,指令集体系结构(isa)可由一个或多个微体系结构来实现,所述一个或多个微体系结构包括用于实现一个或多个指令集的处理器逻辑与电路。相应地,具有不同微体系结构的处理器可共享公共指令集的至少一部分。例如,pentium4处理器、coretm处理器和来自加利福尼亚州sunnyvale的advancedmicrodevices,inc的处理器实现x86指令集(具有一些扩展,较新版本已增加所述扩展)的几乎相同的版本,但具有不同的内部设计。类似地,由例如armholdings,ltd.,mips或他们的被许可方或采纳方的其它处理器开发公司设计的处理器可共享公共指令集的至少一部分,但可包括不同处理器设计。例如,isa的相同寄存器体系结构可使用新技术或众所周知技术以不同方式实现于不同微体系结构中,其中包括专用物理寄存器、使用寄存器重命名机制(例如,寄存器别名表(rat)、重新排序缓冲器(rob)和引退寄存器文件的使用)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器体系结构、寄存器文件或其它寄存器集合,所述其它寄存器集合可以由或可以不由所述软件程序器(programmer)可寻址。

在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示各种字段(比特的数量、比特的位置等)以在其它事情中指定要执行的操作和一个或多个操作数(操作将在其上被执行)。一些指令格式可由指令模板(或子格式)被进一步分解定义。例如,给定指令格式的指令模板可被定义为具有指令格式的字段的不同子集且/或定义为具有不同地解释的给定字段。在一个实施例中,指令使用指令格式(并且如果定义,以所述指令格式的指令模板中的给定一个指令模板)来表达,并指定或指示操作和操作数(在其上操作将被执行)。

科学、金融、自动向量化通用、rms(辨别(recognition)、挖掘和合成),以及视觉与多媒体应用(例如,2d/3d图形、图像处理、视频压缩/解压缩、语音辨别算法和音频操纵)可能要求对大量数据项执行相同操作。在一个实施例中,单指令多数据(simd)指代使处理器对多个数据元素执行操作的指令类型。simd技术可用于可逻辑地将寄存器中的比特划分为若干固定大小或可变大小的数据元素的处理器,所述数据元素中每一个表示独立值。例如,在一个实施例中,64比特寄存器中的比特可组织为包含四个独立的16比特数据元素的源操作数,所述四个独立的16比特数据元素中每个表示独立的16比特值。数据的所述类型可称为“压缩”数据类型或“向量”数据类型,并该数据类型的操作数称为压缩数据操作数或向量操作数。在一个实施例中,压缩数据项或向量可为存储在单个寄存器中的压缩数据元素的序列,并压缩数据操作数或向量操作数可为simd指令(或“压缩数据指令”或”向量指令”)的源操作数或目的地操作数。在一个实施例中,simd指令指定要在两个源向量操作数上被执行以生成相同大小或不同大小的目的地向量操作数(也称结果向量操作数)单个向量操作,所述目的地向量操作数具有相同或不同数量的数据元素,并处于相同数据元素顺序或不同数据元素顺序。

例如由具有包括x86、mmxtm、流播simd扩展(sse)、sse2、sse3、sse4.1及sse4.2指令的指令集的coretm处理器,诸如arm系列处理器的具有包括向量浮点(vfp)和/或neon指令的指令集的arm处理器和诸如由中国科学院的计算技术研究所(ict)开发的龙芯系列处理器的mips处理器采用的simd技术已经在应用性能方面实现了相当大的改进(coretm和mmxtm是加利福尼亚州santaclara的intelcorporation的注册商标或商标)。

在一个实施例中,目的地和源寄存器/数据是表示对应数据或操作的源和目的地的常规术语。在一些实施例中,它们可通过具有与描绘的那些名称或功能不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“dest1”可以是临时存储寄存器或其它存储区域,而“src1”和“src2”可以是第一和第二源存储寄存器或其它存储区域并以此类推。在其它实施例中,两个或更多个src和dest存储区域可对应于相同存储区域(例如,simd寄存器)内的不同数据存储元素。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果回写到用作目的地寄存器的两个源寄存器中的一个,源寄存器之一也可充当目的地寄存器。

图1a是根据本公开的一个实施例的用包括执行单元以执行指令的处理器形成的示范计算机系统的框图。根据本发明(例如本文描述的实施例中的),系统100包括诸如处理器102的组件,以采用包括执行用于处理数据的算法的逻辑的执行单元。系统100表示基于根据加利福尼亚州santaclara的intelcorporation可用的iii、4、xeontmxscaletm和/或strongarmtm微处理器的处理系统,尽管也可使用其它系统(包括具有其它微处理器的pc、工程工作站、机顶盒及诸等)。在一个实施例中,示例系统100可执行根据华盛顿redmond的microsoftcorporation可用的一版本的windowstm操作系统,尽管也可使用其它操作系统(例如,unix和linux)、嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。

实施例并不限于计算机系统。本发明的实施例可在诸如手持式装置和嵌入式应用的其它装置中使用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(pda)及手持式pc。嵌入式应用可包括微控制器、数字信号处理器(dsp)、片上系统、网络计算机(netpc)、机顶盒、网络集线器、宽域网(wan)交换机或可执行根据至少一个实施例的一个或多个指令的任何其它系统。

图1a为利用处理器102形成的计算机系统100的框图,所述处理器包括用于执行算法以根据本发明的一个实施例执行至少一个指令的一个或多个执行单元108。一个实施例可在单个处理器桌上型计算机或服务器系统的上下文中描述,但备选实施例可包括在多处理器系统中。系统100是“集线器”系统体系结构的示例。计算机系统100包含用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(cisc)微处理器、精简指令集运算(risc)微处理器、超长指令字(vliw)微处理器、实现指令集组合的处理器或任何其它处理器装置,诸如例如数字信号处理器。处理器102耦合到处理器总线110,其可在处理器102与系统100中的其它组件之间传送数据信号。系统100的元件执行本领域技术人员众所周知的其常规功能。

在一个实施例中,处理器102包含一级(l1)内部高速缓存存储器104。取决于体系结构,处理器102可具有单个内部高速缓存或多级内部高速缓存。备选地,在另一实施例中,高速缓存存储器可驻留在处理器102外部。取决于具体实现和需要,其它实施例也可包含内部和外部高速缓存的组合。寄存器文件106可将不同类型的数据存储在各种寄存器中,包含整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。

执行单元108(包含执行整数和浮点操作的逻辑)也驻留在处理器102中。处理器102也包含存储某些宏指令的微代码的微代码(ucode)rom。对于一个实施例,执行单元108包含处理压缩指令集109的逻辑。通过在通用处理器102的指令集中包括压缩指令集109,连同执行指令的关联电路,可使用通用处理器102中的压缩数据执行由许多多媒体应用使用的操作。从而,通过使用处理器的数据总线的完全宽度来对压缩数据执行操作,可加速和更有效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元来一次一个数据元素执行一个或多个操作的需要。

执行单元108的备选实施例也可用在微控制器、嵌入式处理器、图形装置、dsp以及其它类型逻辑电路中。系统100包含存储器120。存储器120可以为动态随机存取存储器(dram)装置、静态随机存取存储器(sram)装置、闪存装置或其它存储器装置。存储器120可存储由数据信号表示的可由处理器102执行的指令和/或数据。

系统逻辑芯片116耦合到处理器总线110和存储器120。在所示实施例中的系统逻辑芯片116是存储器控制器集线器(mch)。处理器102可经由处理器总线110与mch116通信。mch116提供到存储器120的高带宽存储器路径118,其用于指令和数据存储以及用于图形命令、数据和文本的存储。mch116在处理器102、存储器120和系统100中的其它组件之间引导数据信号,并在处理器总线110、存储器120和系统i/o122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合到图形控制器112的图形端口。mch116通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(agp)互连114耦合到mch116。

系统100使用专有集线器接口总线122将mch116耦合到i/o控制器集线器(ich)130。在一个实施例中,ich130经由本地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接收的指令解码成控制信号和/或微代码入口(entry)点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当操作。在一个实施例中,解码器用于解释指令的操作码,其将指示应该对在指令内指示的对应数据执行什么操作。

处理核159与总线141耦合,以便与各种其它系统装置通信,其例如可包含但不限于:同步动态随机存取存储器(sdram)控制146、静态随机存取存储器(sram)控制147、突发闪存接口148、个人计算机存储卡国际协会(pcmcia)/致密闪速(cf)卡控制149、液晶显示器(lcd)控制150、直接存储器存取(dma)控制器151以及备选总线主(master)接口152。在一个实施例中,数据处理系统140还可包括i/o桥154以便经由i/o总线153与各种i/o装置通信。此类i/o装置例如可包含但不限于通用异步接收器/传送器(uart)155、通用串行总线(usb)156、蓝牙无线uart157和i/o扩展接口158。

数据处理系统140的一个实施例提供移动、网络和/或无线通信以及能够执行包含文本字符串比较操作的simd操作的处理核159。处理核159可被编程具有各种音频、视频、成像和通信算法编程,包含:离散变换,诸如walsh-hadamard变换,快速傅里叶变换(fft)、离散余弦变换(dct)以及它们的相应逆变换;压缩/解压技术,诸如色彩空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(modem)功能,诸如脉冲编码调制(pcm)。

图1c示出了能够执行指令以提供simdsm4加密块密码功能性的数据处理系统的其它实施例。根据一个备选实施例,数据处理系统160可包含主处理器166、simd协处理器161、高速缓存存储器167和输入/输出系统168。输入/输出系统168可选地可耦合到无线接口169。simd协处理器161能够执行包含按照一个实施例的指令的操作。处理核170可适合于以一个或多个工艺技术的制造,并且通过充分详细地在机器可读媒体上表示,可适合于促进制造所有或部分数据处理系统160(包含处理核170)。

对于一个实施例,simd协处理器161包括执行单元162和一个或多个寄存器文件的集合164。主处理器166的一个实施例包括解码器165以辨别指令集163中的指令(包含按照一个实施例的指令)用于由执行单元162执行。对于其它实施例,simd协处理器161还包括至少部分解码器165以解码指令集163中的指令。处理核170还包含对理解本发明实施例不必要的附加电路(未示出)。

在操作中,主处理器166执行数据处理指令流,其控制通用类型的数据处理操作(包含与高速缓存存储器167和输入/输出系统168的交互)。嵌入在数据处理指令流内的是simd协处理器指令。主处理器166的解码器165将这些simd协处理器指令辨别为应该由附连的simd协处理器161执行的类型。相应地,主处理器166在协处理器总线171上发布这些simd协处理器指令(或表示simd协处理器指令的控制信号),从协处理器总线166,由任何附连的simd协处理器接收这些指令。在此情况下,simd协处理器161将接受并执行预期用于它的任何接收到simd协处理器指令。

数据可经由无线接口169接收以便由simd协处理器指令处理。对于一个示例,语音通信可以以数字信号形式接收,其可由simd协处理器指令处理以重新生成代表语音通信的数字音频样本。对于另一个示例,压缩的音频和/或视频可以以数字比特流形式接收,其可由simd协处理器指令处理以重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和simd协处理器161被集成到单个处理核170中,其包括执行单元162、一个或多个寄存器文件的集合164和辨别指令集163中的指令(包含按照一个实施例的指令)的解码器165。

图2是按照本发明的一个实施例的包含执行指令的逻辑电路的处理器200的微体系结构的框图。在一些实施例中,可实现按照一个实施例的指令,以对具有字节、字、双字、四字等大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端201是处理器200的一部分,该部分获取要执行的指令,并且准备在处理器流水线中以后要使用的该指令。前端201可包含几个单元。在一个实施例中,指令预获取器226从存储器中获取指令,并将指令馈送到指令解码器228,其又解码或解释这些指令。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也称为microop或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应的数据以及控制字段,它们由微体系结构使用以执行按照一个实施例的操作。在一个实施例中,追踪(trace)高速缓存230取得解码的uop并将解码的uop汇编成uop队列234中的程序排序的序列或追踪以便执行。当追踪高速缓存230遇到复杂指令时,微代码rom232提供完成该操作所需的uop。

一些指令被转化成单个微-op,而其它指令需要几个微-op来完成整个操作。在一个实施例中,如果需要多于四个微-op来完成指令,则解码器228访问微代码rom232以执行指令。对于一个实施例,指令可被解码成小数量的微-op,以便在指令解码器228进行处理。在另一实施例中,指令可被存储在微代码rom232内,如果需要若干微-op来完成操作的话。追踪高速缓存230指的是入口点可编程逻辑阵列(pla),以确定正确的微指令指针,以便读取微代码序列,以完成来自微代码rom232的按照一个实施例的一个或多个指令。在微代码rom232完成指令的微-op排序后,机器的前端201恢复从追踪高速缓存230获取微-op。

无序执行引擎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、agu214、快速alu216、快速alu218、慢速alu220、浮点alu222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、mmx、simd和sse或其它操作。一个实施例的浮点alu222包含64比特×64比特浮点除法器以执行除法、平方根和余数微-op。对于本发明的实施例,涉及浮点值的指令可用浮点硬件处理。在一个实施例中,alu操作去到高速alu执行单元216、218。一个实施例的快速alu216、218可以通过时钟周期一半的有效延时执行快速操作。对于一个实施例,最复杂的整数操作去到慢速alu220,因为慢速alu220包含用于长延时类型操作的整数执行硬件,如乘法器、位移、标记逻辑和分支处理。存储器加载/存储操作由agu212、214执行。在一个实施例中,整数alu216、218、220在对64比特数据操作数执行整数操作的上下文中描述。在备选实施例中,可实现alu216、218、220以支持各种数据比特大小,包含16、32、128、256等。类似地,可实现浮点单元222、224以支持具有各种宽度比特的一系列操作数。对于一个实施例,浮点单元222、224可结合simd和多媒体指令对128比特宽压缩数据操作数进行操作。

在一个实施例中,在父加载(parentload)已经完成执行之前,uop调度器202、204、206分派相关操作。当在处理器200中推测性地调度和执行uop时,处理器200还包含处理存储器丢失的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在执行中(inflight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。只需要重放相关操作,并且允许完成独立操作。处理器的一个实施例的调度器和重放机制也设计成捕捉提供simdsm4加密块密码功能性的指令。

术语“寄存器”可指代可用作识别操作数的部分指令的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从程序器的角度而言)。然而,实施例的寄存器不应当在意义上限于具体类型的电路。相反,实施例的寄存器能够存储数据,提供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术实现,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32比特整数数据。一个实施例的寄存器文件也包含用于压缩数据的8个多媒体simd寄存器。对于下面的讨论,将寄存器理解为设计成保持压缩数据的数据寄存器,如来自加利福尼亚州santaclara的intelcorporation的以mmx技术实现的微处理器中的64比特宽mmxtm寄存器(在一些实例中也称为“mm”寄存器)。在整数和浮点形式两者中可用的这些mmx寄存器可与伴随simd和sse指令的压缩数据元素一起操作。类似地,与sse2、sse3、sse4或更高版本(一般称为“ssex”,)技术有关的128比特宽xmm寄存器还可用于保持此类压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据中,寄存器无需区分两种数据类型。在一个实施例中,整数和浮点包含在相同寄存器文件或不同寄存器文件中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。

在以下图形的示例中,描述若干数据操作数。图3a示出根据本发明的一个实施例的在多媒体寄存器中的各种压缩数据类型表示。图3a示出用于128比特宽操作数的压缩字节310、压缩字320和压缩双字(dword)330的数据类型。此示例的压缩字节格式310为128比特长,并且包含16个压缩字节数据元素。字节此处定义为8比特的数据。用于每个字节数据元素的信息存储在针对字节0的比特7到比特0、针对字节1的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中使用所有可用比特。此存储布置增大了处理器的存储效率。此外,利用访问的16个数据元素,现在可并行对16个数据元素执行一个操作。

通常,数据元素是与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的单独数据段。在与ssex技术有关的压缩数据序列中,xmm寄存器中存储的数据元素的数量是128比特除以单独数据元素的以比特为单位的长度。类似地,在与mmx和sse技术有关的压缩数据序列中,mmx寄存器中存储的数据元素的数量是64比特除以单独数据元素的以比特为单位的长度。虽然图3a中示出的数据类型为128比特长,但本发明的实施例也可利用64比特宽、256比特宽、512比特宽或其它大小的操作数操作。此示例的压缩字格式320为128比特长,并且包含8个压缩字数据元素。每个压缩字包含16比特的信息。图3a的压缩双字格式330为128比特长,并且包含4个压缩双字数据元素。每个压缩双字数据元素包含32比特的信息。压缩四字为128比特长,并且包含2个压缩四字数据元素。

图3b示出备选的寄存器中的数据存储格式。每个压缩数据可包括多于一个独立数据元素。示出了三个压缩数据格式;压缩半(half)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寄存器中的无符号的压缩字节的存储。每个字节数据元素的信息存储在针对字节0的比特7到比特0、针对字节1的比特15到比特8、针对字节2的比特23到比特16及最后针对字节15的比特120到比特127。因此,在寄存器中使用所有可用比特。此存储布置可增大处理器的存储效率。此外,利用访问的16个数据元素,现在可以以并行方式对16个数据元素执行一个操作。有符号的压缩字节表示345示出有符号的压缩字节的存储。要注意的是,每一个字节数据元素的第8比特是符号指示符。无符号的压缩字表示346示出在simd寄存器中如何存储字7到字0。有符号的压缩字表示347类似于无符号的压缩字寄存器中的表示346。要注意的是,每个字数据元素的第16比特是符号指示符。无符号的压缩双字表示348显示如何存储双字数据元素。有符号的压缩双字表示349类似于无符号的压缩双字寄存器中的表示348。要注意的是,必需的符号比特是每个双字数据元素的第32比特。

图3d示出操作编码(操作码)格式360的一个实施例,格式360具有32或更多比特以及寄存器/存储器操作数寻址模式,格式360与在intel.com/products/processor/manuals/的万维网(www)上从加利福尼亚州santaclara的intelcorporation可获得的“64和ia-32intel体系结构软件开发员手册组合的卷2a和2b:指令集参考(ia-32intelarchitecturesoftwaredeveloper′smanualcombinedvolume2a和2b:instructionsetreference)”中描述的操作码格式的类型相对应。在一个实施例中,并且指令可通过字段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和由可选比例-索引-基础和位移字节部分指定的寄存器到寄存器、存储器到寄存器、通过存储器的寄存器、通过寄存器的寄存器、通过立即数(immediate)的寄存器、寄存器到存储器寻址。

接下来转到图3f,在一些备选实施例中,64比特(或128比特或256比特或512比特或更多)单指令多数据(simd)算术操作可通过协处理器数据处理(cdp)指令执行。操作编码(操作码)格式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,图3g是根据另一实施例的用于提供simdsm4加密块密码功能性的另一备选操作编码(操作码)格式397的描绘,所示格式397其与在intel.com/products/processor/manuals/的万维网(www)上从加利福尼亚州santaclara的intelcorporation可获得的“advancedvectorextensionsprogrammingreference”中描述的操作码格式类型一致。

原始x86指令集提供具有包含在附加字节中的地址字节与立即操作数的各种格式的1字节操作码,其的出现从第一“操作码”字节已知。另外,存在保留作为操作码的修饰符(称为前缀,因为其必须放置在指令前)的某些字节值。当256个操作码字节(包括这些特殊前缀值)的原始调色板(palette)用尽时,将单个字节专门用于256个操作码的新集合的逸出。当增加向量指令(例如,simd)时,生成对更多操作码的需要,并“两字节”操作码映射也不足够,即使在通过前缀的使用进行扩展时。为此,将新指令增加到附加映射中,所述附加映射使用2个字节加上可选前缀作为标识符。

另外,为促进64比特模式中的附加寄存器,可在前缀与操作码(和确定该操作码所必需的任何逸出字节)之间使用附加前缀(称为“rex”)。在一个实施例中,rex可具有4个“有效载荷”比特,以指示64比特模式中的附加寄存器的使用。在其它实施例中,rex可具有少于或多于4比特。至少一个指令集的通用格式(其通常与格式360和/或格式370对应)通过以下一般地示出:

[prefixes][rex]escape[escape2]opcodemodrm(等)

操作码格式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,其为用于根据另一实施例提供simdsm4加密块密码功能性的另一备选操作编码(操作码)格式398的描绘。操作码格式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对应)通过以下一般地示出:

evex1rxbmmmmmwvvvlppevex4opcodemodrm[sib][disp][imm]

对于一个实施例,根据evex格式398编码的指令可具有附加“有效载荷”比特,所述附加”有效载荷”比特可用于提供具有附加新特征的simdsm4加密块密码功能性,所述附加新特征例如诸如用户可配置的掩码寄存器或附加操作数或从128比特、256比特或512比特向量寄存器中的选择,或用于从中选择的更多寄存器等。

例如,在vex格式397可用于提供具有隐式掩码的simdsm4加密块密码功能性的情况下,evex格式398可用于提供具有显示用户可配置掩码的simdsm4加密块密码函数。另外,在vex格式397可用于在128比特或256比特向量寄存器上提供simdsm4加密块密码功能性的情况下,evex格式398可用于在128比特、256比特、512比特或更大(或更小)向量寄存器上提供simdsm4加密块密码功能性。

用于提供simdsm4加密块密码功能性的示例指令由以下示例示出:

上面示出的示例指令可指定第一和第二源数据操作数集合(例如,作为vmm1和vmm2/mem-v,其可能为256比特或512比特等),以及替换函数指示符(例如,在立即操作数中,imm8)。用于执行上面示出的示例指令的处理器的实施例可包括加密单元,其响应于指令以执行以下操作:在具有来自响应于指示第一替换函数的替换函数指示符的第二源数据操作数集合的对应密钥的第一源数据操作数集合的一部分执行sm4轮交换的片(例如,基于imm8中相应的值1的t或l);使用具有来自响应于指示第二替换函数的替换函数指示符的第二源数据操作数集合的对应常数的第一源数据操作数集合的另一部分执行sm4密钥生成的片(例如,基于imm8中相应的值0的t’或l’),以及在simd目的地寄存器中存储第一指令的结果元素集合。

将意识到,通过使用相同simd指令执行sm4轮交换和sm4密钥生成,加密或解密可通过较小缓冲器(例如,256比特)中的密钥扩展而同时被处理。因为128比特(例如,四个32比特字元素)为每个新轮交换或密钥生成所要求,所以每一轮最新128比特形式(form)可被流水线输送或旁路至下一个连续轮。在一些实施例中,片可包括4轮的sm4轮交换和4轮的sm4密钥生成。对于此类实施例,32轮的sm4轮交换与sm4密钥生成可使用8(或9)个sm4轮片操作执行。在一些实施例中,256比特数据路径或512比特数据路径的每个128比特通道可基于指示特定替换函数(例如,t或t’,或者备选地l或l’)的指令的立即操作数中的对应值,被选择用于处理sm4轮交换的片或用于处理sm4密钥生成的片。在一些备选实施例中,用于处理sm4轮交换的片与用于处理sm4密钥生成的片的数据路径的通道可预先确定和/或固定。在一些实施例中,片可通过微指令(或micro-op或u-op)实现并且结果可从一个微指令旁路至下一个微指令。在一些备选实施例中,片可通过在硬件中的逻辑的多个层(例如,2或4或8)或者备选地通过微指令和硬件中的逻辑的多个层的某个组合实现。在一些实施例中,片可包括通过在指令的立即操作数中的值指示的若干轮(例如,1、2、4、8、16或32)sm4轮交换和sm4密钥生成。在一些备选实施例中,片中的轮数可通过指令记忆存储器和/或通过与操作编码(或操作码)指示。在其中片可包括多个轮(例如,4、8、16、32等)的一些实施例中,在源操作数中的密钥信息可在每一轮被更新并供应至下一轮的块处理逻辑,并常数可被读取(例如,从128比特、256比特、512比特、1024比特等的存储器操作数中)以供应至用于每个连续的轮的密钥处理逻辑。

图4a是根据本发明的至少一个实施例的示出有序流水线和寄存器重命名级、无序发布/执行流水线的框图。图4b是根据本发明的至少一个实施例的示出要包括在处理器中的无序发布/执行逻辑、寄存器重命名逻辑和有序体系结构核的框图。图4a中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图4b中的实线框示出有序体系结构逻辑,而虚线框示出寄存器重命名和无序发布/执行逻辑。

在图4a中,处理器流水线400包括获取级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、回写/存储器写入级418、异常处理级422及提交级424。

在图4b中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图4b显示处理器核490,包括耦合到执行引擎单元450的前端单元430,并且两者均耦合到存储器单元470。

核490可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vlim)核或混合或备选核类型。作为又一选项,核490可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核或诸如此类。

前端单元430包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434耦合到指令转换后备缓冲器(tlb)436。tlb436耦合到指令获取单元438,其耦合到解码单元440。解码单元或解码器可将指令解码,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们从原始指令解码或者以其它方式反映原始指令或者从原始指令得到。解码器可使用各种不同机制实现。适合机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。指令高速缓存单元434还耦合到存储器单元470中的2级(l2)高速缓存单元476。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。

执行引擎单元450包括耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。一个或多个调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。一个或多个调度器单元456耦合到一个或多个物理寄存器文件单元458。一个或多个物理寄存器文件单元458的每个表示一个或多个物理寄存器文件,这些文件的不同文件存储一个或多个不同数据类型,如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、等,状态(例如,作为要执行的下一指令的地址的指令指针)等。一个或多个物理寄存器文件单元458由引退单元454重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用一个或多个重新排序缓冲器和一个或多个引退寄存器文件;使用一个或多个将来文件、一个或多个历史缓冲器和一个或多个引退寄存器文件;使用寄存器映射和寄存器池等)。通常,体系结构寄存器从处理器外部或者从程序器的角度而言是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器只要它们能够如本文中所描述地那样存储和提供数据,它们便是适合的。适合寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元454和一个或多个物理寄存器文件单元458耦合到一个或多个执行集群460。一个或多个执行集群460包括一个或多个执行单元集合462和一个或多个存储器存取单元集合464。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据执行(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)。虽然一些实施例可包括专用于特定功能或功能的集合的若干执行单元,但其它实施例可只包括一个执行单元或全部执行所有功能的多个执行单元。一个或多个调度器单元456、一个或多个物理寄存器文件单元458和一个或多个执行集群460示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建独立流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器存取流水线,每个流水线具有其自己的调度器单元、一个或多个物理寄存器文件单元和/或执行集群-并且在独立存储器存取流水线的情况下,实现其中仅此流水线的执行集群具有一个或多个存储器存取单元464的某些实施例)。还应理解的是,在使用独立流水线的情况下,一个或多个这些流水线可以是无序发布/执行,并且其余的流水线是有序的。

存储器存取单元464的集合耦合到存储器单元470,其包括耦合到数据高速缓存单元474的数据tlb单元472,数据高速缓存单元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指令集(其中更新版本已添加一些扩展)、加利福尼亚州sunnyvale的mipstechnologies的mips指令集、加利福尼亚州sunnyvale的armholdings的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中两个或更多个可以能够执行相同指令集,而其它核可以仅能够执行指令集的子集或不同指令集。

处理器可为通用处理器,例如coretm,i3、i5、i7、2核和四核、xeontm、itaniumtm、xscaletm或strongarmtm处理器,其可从加利福尼亚州,santaclara的intelcorporation获得。备选地,处理器可来自另一公司,如armholdings,ltd,mips等。处理器可为专用处理器,例如诸如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器可实现在一个或多个芯片上。处理器500可为一个或多个衬底的部分和/或可使用若干工艺技术(例如诸如,bicmos、cmos或nmos)中的任一个将处理器500实现在一个或多个衬底上。

图6-8是适合于包含处理器500的示范系统,而图9是包含一个或多个核502的示范片上系统(soc)。在本领域已知的用于膝上型计算机、桌面型计算机、手持pc、个人数字助理、工程设计工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置的其它系统设计和配置也是适合的。一般而言,能够结合处理器和/或本文所公开的其它执行逻辑的大量系统或电子装置通常是适合的。

现在参考图6,示出了按照本发明的一个实施例的系统600的框图。系统600可包含一个或多个处理器610、615,它们耦合到图形存储器控制器集线器(gmch)620。在图6中用虚线表示附加处理器615的可选性质。

每个处理器610、615可以是某一版本的处理器500。然而,应该指出,在处理器610、615中不可能存在集成图形逻辑和集成存储器控制单元。图6示出了gmch620可耦合到存储器640,存储器640例如可以是动态随机存取存储器(dram)。对于至少一个实施例,dram可与非易失性高速缓存关联。

gmch620可以是芯片集,或者芯片集的一部分。gmch620可与一个或多个处理器610、615通信,并控制一个或多个处理器610、615与存储器640之间的交互。gmch620也可充当一个或多个处理器610、615与系统600其它元件之间的加速总线接口。对于一个实施例,gmch620经由多点总线(诸如前侧总线(fsb)695)与一个或多个处理器610、615通信。

更进一步,gmch620耦合到显示器645(诸如平板显示器)。gmch620可包含集成图形加速器。gmch620进一步耦合到输入/输出(i/o)控制器集线器(ich)650,其可用于将各种外设装置耦合到系统600。例如在图6的实施例中示出外部图形装置660,其可以是耦合到ich650的分立图形装置,连同另一外设装置670。

备选地,在系统600中也可存在附加的或不同的处理器。例如,一个或多个附加处理器610、615可包含与处理器610相同的一个或多个附加处理器、与处理器610异构或不对称的一个或多个附加处理器、加速器(诸如例如图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其它处理器。在品质度量谱(包含体系结构、微体系结构、热、功耗特性等)方面,在物理资源610、615之间可能存在各种差异。这些差异在处理器610、615之间可有效地将它们自己标明为不对称并且异构。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。

现在参考图7,示出了按照本发明的实施例的第二系统700的框图。如图7中所示的,多处理器系统700是点对点互连系统,并且包含经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以如一个或多个处理器610,615一样,是某一版本的处理器500。

虽然示出只有两个处理器770、780,但要理解到,本发明的范围不那样限。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。

分别示出处理器770和780包含集成存储器控制器单元772和782。处理器770还包含点对点(p-p)接口776和778作为其总线控制器单元的一部分;类似地,第二处理器780包含p-p接口786和788。处理器770、780可经由点对点(p-p)接口750使用p-p接口电路778、788交换信息。如图7中所示的,imc772和782将处理器耦合到相应存储器,即存储器732和存储器734,它们可以是本地附连到相应处理器的主存储器的部分。

处理器770、780可各经由单独p-p接口752、754使用点对点接口电路776、794、786、798与芯片集790交换信息。芯片集790还可经由高性能图形接口739与高性能图形电路738交换信息。

共享高速缓存(未示出)可被包含在任一处理器中或两个处理器外,仍经由p-p互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中,如果处理器被置于低功率模式的话。

芯片集790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外设组件互连(pci)总线,或诸如pciexpress总线的总线,或另一个第三代i/o互连总线,尽管本发明的范围不那样限制。

如图7中所示的,各种i/o装置714可耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低管脚计数(lpc)总线。在一个实施例中,各种装置可耦合到第二总线720,例如包含键盘和/或鼠标722、通信装置727和存储单元728,诸如盘驱动器或可包含指令/代码和数据730的其它大容量存储装置。进一步说,音频i/o724可耦合到第二总线720。要指出,其它体系结构是可能的。例如,代替图7的点对点体系结构,系统可实现多点总线或其它此类体系结构。

现在参考图8,示出了按照本发明的实施例的第三系统800的框图。图7和图8中的相同的元件带有相同的附图标记,并且已经从图8中省略了图7的某些方面,以便避免使图9的其它方面模糊不清。

图8示出处理器870、880可分别包含集成存储器和i/o控制逻辑(“cl”)872和882。对于至少一个实施例,cl872、882可包含集成存储器控制器单元,诸如上面结合图5和图7所描述的集成存储器控制器单元。此外,cl872、882也可包含i/o控制逻辑。图8不仅示出了存储器832、834可耦合到cl872、882,而且i/o装置814也耦合到控制逻辑872、882。传统i/o装置815耦合到芯片集890。

现在参考图9,示出了按照本发明实施例的soc900的框图。图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执行的操作组合执行。例如,在一个实施例中,按照一个实施例的指令可被接收和解码以便在cpu上执行。然而,解码指令内的一个或多个操作可由cpu执行,并且结果返回到gpu用于指令的最后引退。相反,在一些实施例中,cpu可充当主处理器,并且gpu充当协处理器。

在一些实施例中,受益于高度并行吞吐量处理器的指令可由gpu执行,而受益于处理器(其受益于深度流水线化体系结构)执行的指令可由cpu执行。例如,图形、科学应用、金融应用和其它并行工作负荷可受益于gpu的执行,并相应地执行,而更多顺序应用(诸如操作系统内核或应用代码)可更适合于cpu。

在图10中,处理器1000包含cpu1005、gpu1010、图像处理器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核”的此类表示可存储在有形机器可读介质(“带”)上,并供应给各种客户或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。例如,诸如由armholdings,ltd.开发的cortextm系列处理器和中国科学院计算技术研究所(ict)开发的龙芯ip核的ip核可许可或销售到各种客户或被许可方,如texasinstruments、qualcomm、apple或samsung,并且在由这些客户或被许可人生产的处理器中实现。

图11示出了按照一个实施例示出ip核开发的框图。存储装置1130包含模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示ip核设计的数据可经由存储器1140(例如硬盘)、有线连接(例如因特网)1150或无线连接1160提供给存储装置1130。由模拟工具和模型生成的ip核信息然后可被传送到制造设施,在其中它可由第三方制造以执行按照至少一个实施例的至少一个指令。

在一些实施例中,一个或多个指令可对应于第一类型或体系结构(例如x86),并且在不同类型或体系结构(例如arm)的处理器上转换或仿真。根据一个实施例,指令因此可在任何处理器或处理器类型(包含arm、x86、mips、gpu)或其它处理器类型或体系结构上执行。

图12示出了按照一个实施例的由不同类型的处理如何仿真第一类型的指令。在图12中,程序1205包含可与根据一个实施例的指令执行相同或基本上相同功能的一些指令。然而,程序1205的指令可属于与处理器1215不同或不兼容的类型和/或格式,意味着,程序1205中的类型的指令可能不能够由处理器1215本机(natively)执行。然而,在仿真逻辑1210的帮助下,程序1205的指令可被转换成能够由处理器1215本机执行的指令。在一个实施例中,仿真逻辑可体现在硬件中。在另一实施例中,仿真逻辑可体现在有形、机器可读介质中,其包含将程序1205中的类型的指令转换成由处理器1215本机可执行的类型。在其它实施例中,仿真逻辑是固定功能或可编程硬件以及存储在有形、机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部,并且由第三方提供。在一个实施例中,处理器能够通过执行在处理器中包含的或与处理器关联的微代码或固件来加载体现在包含软件的有形、机器可读介质中的仿真逻辑。

图13是按照本发明的实施例的对比使用软件指令转化器将源指令集中的二进制指令转化成目标指令集中的二进制指令的框图。在所示出的实施例中,指令转化器是软件指令转化器,尽管备选地,指令转化器可以用软件、固件、硬件或它们的各种组合实现。图13示出以可使用x86编译器1304编译高级语言1302的程序以生成x86二进制代码1306,其可由具有至少一个x86指令集核的处理器1316本机执行。具有至少一个x86指令集核的处理器1316表示可通过兼容执行或以其它方式处理(1)intelx86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的intel处理器上运行的应用或其它软件的对象代码版本,与具有至少一个x86指令集核的intel处理器执行基本上相同功能,以便与具有至少一个x86指令集核的intel处理器实现基本上相同结果的任何处理器。x86编译器1304表示可操作以生成x86二进制代码1306(例如对象代码)的编译器,二进制代码1306可在具有或没有附加连锁处理的情况下在具有至少一个x86指令集核1316的处理器上执行。类似地,图13示出以高级语言1302的程序可使用备选指令集编译器1308编译以生成备选指令集二进制代码1310,其可由没有至少一个x86指令集核1314的处理器(例如,具有执行加利福尼亚州sunnyvale的mipstechnologies的mips指令集,和/或执行加利福尼亚州sunnyvale的armholdings的arm指令集的核的处理器)本机执行。指令转化器1312用于将x86二进制代码1306转化成可由没有x86指令集核1314的处理器本机执行的代码。这个转化的代码可能不与备选指令集二进制代码1310相同,因为能够进行此操作的指令转化器难以制作;然而,转化的代码将完成通用操作,并且由来自备选指令集的指令组成。从而,指令转化器1312表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1306的软件、固件、硬件或其组合。

图14a示出了用于执行提供simdsm4加密块密码功能性的指令的设备1402的一个实施例的图形。设备1402包括元素的第一源数据操作数1410集合、元素的第二源数据操作数1420集合、和一个或多个在8比特立即操作数1430中的替换函数指示符。在设备1401中,响应于指示在复用器1412的块替换函数t的立即操作数1430中的一个或多个替换函数指示符的第一指示符,执行具有来自第二源数据操作数1420集合的对应第一一个或多个密钥(rki)的所述第一源数据操作数1410集合的一部分(xi-xi+3)的第一一个或多个sm4轮交换。块替换函数t是包括非线性替换τ(tau)和线性替换l(即,t(.)=l(τ(.)))的可反相混合器(mixer)替换,其中

以及

b=(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3)),

每一个a0-a3和b0-b3具有8比特,算子表示逐比特异或(异或)而算子<<<表示左旋。sbox函数的进一步细节(常数参数、密钥扩展和加密等)可在版本1.03,2008年5月15日的由sunmicrosystem的whitfielddiffie和sonoma州立大学的georgerledin翻译和排版的在eprint.iacr.org/2008/329.pdf.的万维网可获取的“sm4encryptionalgorithmforwirelessnetworks”中找到。

在设备1401中,响应于指示在复用器1414的密钥替换函数t’的立即操作数1430中所述一个或多个替换函数指示符的第二指示符,使用具有来自第二源数据操作数1420集合的对应第一一个或多个常数(cki)的第一源数据操作数1410集合的所述部分(rki-rki+3)的第一一个或多个sm4密钥生成。块替换函数t’是包括相同非线性替换τ(tau)但不同的线性替换l’(即,t’(.)=l’(τ(.)))的可反相混合器替换,其中

以及

b=(b0,b1,b2,b3)=τ(a0,a1,a2,a3)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3))。

将意识到,在立即操作数1430中的一个或多个替换函数指示符可在备选的优选实施例中被选择以分别指示块和密钥替换函数l和l’而不是t和t’(例如,如在处理块1403的设备中所示的),以提供进一步电路的精简而没有对设备1401或设备1402要求任何体系结构上可见变化,或对提供simdsm4加密块密码功能性的特定指令的精简。对设备1401中的t和t’的输入分别为复用器1412和1414的输出则分别与xi和rki进行异或,以分别生成xi+4和rki+4。根据设备1401的一个实施例,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1440集合可存储在simd寄存器中(例如,如果仅要求单个轮或如果微指令用于产生中间结果)。

在设备1402中,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1440的集合连同元素的另一源数据操作数1420集合和立即操作数1430中的一个或多个替换函数指示符被访问(例如,在simd寄存器中)。在设备1402中,响应于指示在复用器1432的块替换函数t的立即操作数1430中的所述一个或多个替换函数指示符的第三指示符,执行具有来自源数据操作数1420集合的对应第二一个或多个密钥(rki+1)的结果元素1440的集合的一部分(xi+1-xi+4)的第二一个或多个sm4轮交换。至在设备1402的第二一个或多个sm4轮交换中的t和t’的输入为:

在设备1402的处理块1403中,响应于指示在复用器1434的密钥替换函数l’的立即操作数1430中的另一一个或多个替换函数指示符的第四指示符,执行使用具有来自源数据操作数1420集合的对应第二一个或多个常数(cki+1)的结果元素1440的集合的所述部分(rki+1-rki+4)的第二一个或多个sm4密钥生成。至处理块1403的设备中的τ1433的输入为:(例如,如在异或电路1431所示的)。在设备1403中的τ1433的输出是至t1435和t’1436的输入。复用器1432和1434的所选择输出然后与xi+1以及与rki+1进行异或(例如,如在处理块1403的异或电路1437所示的)以分别产生xi+5以及rki+5。根据设备1402的一个实施例,第二一个或多个sm4轮交换和第二一个或多个sm4密钥生成的结果元素1450的另一集合可存储在simd寄存器中(例如,如果只要求两轮或如果另一微指令用于产生另一中间结果)。

将意识到,通过利用相同simd指令执行sm4轮交换和sm4密钥生成,加密或解密可与较小缓冲器(例如,256比特)中其相应的后续密钥扩展同时被处理。因为对于每个新轮交换或密钥生成要求128比特(例如,四个32比特字元素),每个轮形成的最新的128比特结果可被流水线输送或旁路至下一个连续的轮。在一些实施例中,片可包括两轮的sm4轮交换以及两轮的sm4密钥生成。对于此类实施例,32轮的sm4轮交换和sm4密钥生成可使用16(或17)个sm4轮片操作被执行。在一些实施例中,256比特数据路径或512比特数据路径的每个128比特通道可基于在指示特定替换函数(例如,t或t’,或者备选地l或l’)的指令的立即操作数中的对应的值,被选择用于处理sm4轮交换或用于处理sm4密钥生成的片。在备选实施例中,256比特数据路径或512比特数据路径的128比特通道可基于指令存储器或指令的操作编码(或操作码),被确定用于处理sm4轮交换的片或用于处理sm4密钥生成的片。也将意识到,sm4算法的加密和解码方法具有相同结构(除了其中轮密钥相反使用的顺序)。例如,用于加密的密钥顺序为(rk0、rk1、rk2...rk31),而用于解密的密钥顺序为(rk31、rk30、rk29...rk0)。

图14b示出了用于执行提供simdsm4加密块密码功能性的指令的设备的备选实施例的图形。设备1404包括元素的第一源数据操作数1410集合、元素的第二源数据操作数1420集合、和8比特立即操作数1430中的一个或多个替换函数指示符。在设备1401的备选实施例中,响应于在指示块替换函数作为至对应的处理块1403的输入的立即操作数1430中的一个或多个替换函数指示符的第一指示符,执行具有来自所述第二源数据操作数1420集合的对应第一一个或多个密钥(rki)的所述第一源数据操作数1410集合的一部分(xi-xi+3)的第一一个或多个sm4轮交换。在设备1401的该备选实施例中,响应于在指示密钥替换函数作为至第二对应的处理块1403的输入的立即操作数1430中的所述一个或多个替换函数指示符的第二指示符,使用具有来自第二源数据操作数1420集合的对应第一一个或多个的常数(cki)的第一源数据操作数1410集合的所述部分(rki-rki+3)的第一一个或多个sm4密钥生成。根据设备1401的一个备选实施例,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1440集合可存储在simd寄存器中(例如,如果仅要求单个轮或如果微指令用于产生中间结果)。在设备1401的其它备选实施例中,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1440集合可被锁定用于旁路至或存储在用于附加的处理层的临时中间存储装置中。例如,设备1401的一些实施例也可包括元素的中间源数据操作数1440集合。在设备1404中,响应于在指示块替换函数作为至另一对应的处理块1403的输入的立即操作数1430中的一个或多个替换函数指示符的第一指示符,执行具有来自第二源数据操作数1420集合的对应第一一个或多个密钥(rki+1)的中间源数据操作数1440集合的一部分(xi+1-xi+4)的第二一个或多个sm4轮交换。在设备1404的一个实施例中,第一指示符中的1(1)值指示块替换函数要被用在对应128比特通道上。在设备1404中,响应于在指示密钥替换函数作为至另一第二对应的处理块1403的输入的立即操作数1430中的所述一个或多个替换函数指示符的第二指示符,使用具有来自第二源数据操作数1420集合的对应第二一个或多个常数(cki+1)的中间源数据操作数1440集合的一部分(rki+1-rki+4)的第二一个或多个sm4密钥生成。在设备1404的一个实施例中,第二指示符中的0(0)值指示密钥替换函数要用在对应128比特通道上。根据设备1404的一个实施例,一个或多个sm4轮交换和一个或多个sm4密钥产生的结果元素1450的集合可存储在simd寄存器中(例如,如果仅要求两轮或如果微指令用于产生中间结果)。在设备1404的备选实施例中,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1450的集合可被锁定用于旁路至或存储在用于附加的处理层的临时中间存储装置中。

例如,设备1404的实施例也可包括元素的第二中间源数据操作数1450集合。在设备1404中,响应于在指示块替换函数作为至又一对应的处理块1403的输入的立即操作数1430中的一个或多个替换函数指示符的第一指示符,执行具有来自第二源数据操作数1420集合的对应第三一个或多个密钥(rki+2)的中间源数据操作数1450集合的一部分(xi+2-xi+5)的第三一个或多个sm4轮交换。而且在设备1404中,响应于在指示密钥替换函数作为至又一第二对应处理块1403的输入的立即操作1430中的所述一个或多个替换函数指示符的第二指示符,使用具有来自第二源数据操作数1420集合的对应第三一个或多个常数(cki+2)的中间源数据操作数1450集合的一部分(rki+2-rki+5)的第三一个或多个sm4密钥生成。根据设备1404的一个实施例,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1450的集合可存储在simd寄存器中(例如,如果仅要求三轮或如果微指令用于产生中间结果)。在设备1404的备选实施例中,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1460的集合可再次被锁定用于旁路至或存储在用于附加的处理层的临时中间存储装置中。因而设备1404的实施例也可包括元素的第三中间源数据操作数1460集合。在设备1404的此类实施例中,响应于在指示块替换函数作为至又一对应的处理块1403的输入的立即操作数1430中的一个或多个替换函数指示符的第一指示符,执行具有来自第二源数据操作数1420集合的对应第四一个或多个密钥(rki+3)的中间源数据操作数1460集合的一部分(xi+3-xi+6)的第四一个或多个sm4轮交换。而且在设备1404中,响应于在指示密钥替换函数作为至又一第二对应的处理块1403的输入的立即操作数1430中的所述一个或多个替换函数指示符的第二指示符,使用具有来自第二源数据操作数1420集合的对应第四一个或多个常数(cki+3)的中间源数据操作数1460集合的一部分(rki+3-rki+6)的第四一个或多个sm4密钥生成。根据设备1404的一个实施例,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1470的集合可存储在simd寄存器中(例如,如果仅要求四轮或如果微指令用于产生中间结果)。在设备1404的备选实施例,一个或多个sm4轮交换和一个或多个密钥生成的结果元素1470的集合可被锁定用于旁路至或存储在用于附加的处理层的临时中间存储装置中。

将意识到,在一些实施例中,片可包括四轮的sm4轮交换和四轮的sm4密钥生成。对于此类实施例,可使用8(或9)个sm4轮片操作执行32轮的sm4轮交换和sm4密钥生成。在一些实施例中,256比特数据路径或512比特数据路径的每个128比特通道可基于指令的立即操作数中的对应值被选择用于处理sm4轮交换的片或用于处理sm4密钥生成的片。在一些备选实施例中,用于处理sm4轮交换的片和用于sm4密钥生成的片的数据路径的通道可根据操作码(或操作码)被预先确定和/或固定。

还将意识到,在一些实施例中,片可通过微指令(或micro-op或u-op)实现且结果可从一个微指令旁路至下一个微指令。在一些备选实施例中,片可通过在硬件中的逻辑的多个层(例如,2或4或8等)或者备选地通过微指令和硬件中的逻辑的多个层的某个组合实现。在一些实施例中,片可包括由指令的立即操作数中的值指示的若干轮(例如,1、2、4、8、16或32)的sm4轮交换和sm4密钥生成。在一些备选实施例中,片中的轮数可通过指令存储器和/或通过以及操作编码(或操作码)指示。

图14c示出用于执行提供simdsm4加密块密码功能性的指令的设备1406的另一备选实施例的图形。设备1406包括元素的第一源数据操作数1410集合、元素的第二源数据操作数1420集合和一个或多个替换函数指示符(例如,可选地,在可选8比特立即操作数1430中)。在设备1405的一个实施例中,响应于在指示块替换函数作为至对应的处理块1403的输入的控制块1455中(和/或可选地也在可选立即操作数1430中)的一个或多个替换函数指示符1452的第一指示符,部分(xi-xi+3)根据来自第一源数据操作数1410集合的操作数选择控制1451首先被选择,第一源数据操作数1410集合具有根据来自用于执行第一一个或多个sm4轮交换的第二源数据操作数1420集合的元素选择控制1457选择的对应第一一个或多个密钥(rki)。在设备1405的该实施例中,响应于在指示密钥替换函数作为至第二对应的处理块1403的输入的控制块1455中(和/或可选地也在可选立即操作数1430中)的所述一个或多个替换函数指示符1452的第二指示符,部分(rki-rki+3)可根据来自第一源数据操作数1410集合的操作数选择控制1451被首先选择,第一源数据操作数1410集合具有根据来自用于执行第一一个或多个sm4密钥生成的第二源数据操作数1420集合的元素选择控制1457选择的对应第一一个或多个常数(cki)。根据设备1406的一个备选实施例,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1480的集合可存储在simd寄存器1490中(例如,如果用于片的要求的轮数已完成或如果微指令用于产生中间结果)。在设备1406的其它备选实施例中,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1480的集合可被锁定用于旁路1453至或存储在用于附加的处理层的临时中间存储装置中。

例如,设备1406的实施例还包括元素的中间源数据操作数1480集合。在设备1405中,响应于在指示块替换函数作为至对应的处理块1403的输入的控制块1455中(和/或可选地,也在可选立即操作数1430中)的一个或多个替换函数指示符1452的第一指示符,后续部分(xj+1-xj+4)根据来自中间源数据操作数1480集合的操作数选择控制1451被选择,中间源数据操作数1480集合具有根据来自用于执行后续一个或多个sm4轮交换的第二源数据操作数1420集合的元素选择控制1457而选择的对应后续一个或多个密钥(rki+j+1)。在设备1405的一个实施例中,第一指示符中的1(1)值指示块替换函数要用在对应的128比特通道上。在设备1406的一个实施例中,可选地响应于立即操作数1430中的对应的值(其可以为一(1)或可以不同于1),一个或多个替换函数指示符1452的第一指示符中的1值(其可以不同于1)指示块替换函数要用在对应128比特通道上。在设备1405中,响应于在指示秘钥替换函数作为至第二对应处理块1403的控制块1455中(和/或还可选地在可选的立即操作数1430中)的所述一个或多个替换函数指示符1452的第二指示符,后续部分(rkj+1-rkj+4)根据来自中间源数据操作数1480集合而选择连同对应的后续一个或多个常数(cki+j+1)根据来自用于执行后续一个或多个sm4密钥生成的第二源数据操作数1420集合的元素选择控制1457而选择。在设备1405的一个实施例中,第二指示符中的0(0)值指示密钥替换函数要用在对应的128比特通道上。在设备1406的一个实施例中,可选地响应于在立即操作数1430中对应的值(其可以为0(0)或可以不同于0),一个或多个替换函数指示符1452的第二指示符中的值(其可能不同于0)指示密钥替换函数要用在在对应的128比特通道上。根据设备1406的一个实施例,一个或多个sm4轮交换和一个或多个sm4密钥生成的结果元素1480的集合可存储在simd寄存器1490中(例如,当用于片的要求的轮数已完成时)。

图15a示出用于执行提供加密块密码功能性的simdsm4的轮片的指令的过程1501的实施例的流程图。本文所公开的过程1501和其它过程通过可包括专用的硬件或软件或由通用机器或由专用机器或由两者组合的可执行的固件操作码的处理块执行。

在处理块1531中,指令被解码用于操作的simdsm4轮片,所述指令指定块和/或密钥操作。例如,指令的实施例可指定第一源数据操作数集合、第二源数据操作数集合和一个或多个替换函数指示符,其中替换函数指示符可被选择以指定在第一和第二源数据操作数集合(例如,其可存储在256比特或512比特simd寄存器中)的相应部分(例如,诸如128比特通道)上的块或密钥操作。响应于解码的指令,多个微指令(或micro-op或u-op)可以可选地在处理块1536中被生成(例如,用于执行片的单独轮或备选地用于执行指定的块或指定的密钥操作)。在处理块1541中,第一源数据操作数集合被访问(例如,从256比特或512比特的simd寄存器)。在处理块1551中,第二源数据操作数集合被访问(从256比特或512比特的simd寄存器或存储器位置)。在处理块1561中,响应于指示(例如,通过具有第一值的立即操作数中的比特)用于块操作的替换函数的一个或多个替换函数指示符的指示符,sm4轮交换在关联于指定的块操作和来自第二源数据操作数集合的对应一个或多个密钥的第一源数据操作数集合的部分上被执行。在处理块1571中,响应于指示(例如,通过具有第二值的立即操作数中的比特)用于密钥操作的替换函数的一个或多个替换函数指示符的另一指示符,使用关联于指定的密钥操作和来自第二源数据操作数集合的对应一个或多个常数的第一源数据操作数集合的第二部分执行sm4密钥生成。在处理块1581中,进行确定关于是否片的全部sm4轮操作已完成。如果没有,则处理重新迭代开始于处理块1541。否则处理进行到处理块1591,其中指令的结果元素集合存储在simd目的地寄存器中。

将意识到,尽管本文所公开的过程1501和其它过程的处理块示出为以迭代方式执行,无论何时可能,可以优选地以备选顺序或同时或并行执行运行。

图15b示出用于执行提供加密块密码函数的simdsm4的轮片的指令的过程1502的备选实施例的流程图。在处理块1532中,指令被解码用于操作的simdsm4轮片,所述指令指定替换函数的集合(例如,用于块和/或密钥操作)。例如,指令的实施例可指定第一源数据操作数集合、第二源数据操作数集合和一个或多个替换函数指示符,其中替换函数指示符可被选择以指定在第一和第二源数据操作数集合(例如,其可被存储在256比特或512比特simd寄存器中)的相应部分(例如,诸如128比特通道)上的块或密钥操作。响应于解码的指令,多个微指令(或micro-op或u-op)可以可选地在处理块1537中生成(例如,用于执行片的单独轮或备选地用于执行指定的块或指定的密钥操作)。在处理块1542中,第一源数据操作数集合被访问(例如,从256比特或512比特的simd寄存器)。在处理块1552中,第二源数据操作数集合被访问(从256比特或512比特的simd寄存器或存储器位置)。在处理块1562中,响应于指示(例如,通过具有第一值的立即操作数中的比特)第一替换函数用于块操作的一个或多个替换函数指示符的指示符,在关联于第一替换函数以及来自第二数据操作数集合的对应一个或多个密钥的第一源数据操作数集合的部分上执行一个或多个sm4轮交换。在处理块1572中,响应于指示(例如,通过具有第二值的立即操作数中的比特)第二替换函数用于密钥操作的一个或多个替换函数指示符的另一指示符,使用关联于第二替换函数和来自第二源数据操作数集合的对应一个或多个常数的第一数据操作数集合的一部分来执行一个或多个sm4密钥生成。在处理块1582,进行确定关于是否操作的sm4轮片已完成。如果没有,处理重新迭代开始于处理块1562。否则处理进行到处理块1592,其中指令的结果元素集合存储在simd目的地寄存器中。

图15c示出用于执行提供加密块密码功能性的simdsm4的轮片的指令过程1503的另一备选实施例的流程图。在处理块1513中,包括一个或多个输入块和/或密钥调度的第一源数据操作数集合存储在第一simd寄存器(例如,256比特或512比特的simd寄存器)中。在处理块1523中,包括一个或多个轮密钥和/或常数的集合的第二源数据操作数集合存储在第二simd寄存器(例如,256比特或512比特的simd寄存器)中。在处理块1533中,接收指令用于操作的simdsm4轮片,所述指令指定替换函数(例如,用于块和/或密钥操作)的集合。例如,指令的实施例可指定第一源数据操作数集合、第二源数据操作数集合和一个或多个替换函数指示符,其中替换函数指示符的一些实施例可被选择以指定在第一和第二源数据操作数集合的相应部分(例如,如128比特通道)上的块或密钥操作。在响应于用于操作的simdsm4轮片的指令的过程1504中,多个微指令(或micro-op或u-op)可以可选地在处理块1538中生成(例如,用于执行片的单独轮或备选地用于执行指定的块或指定的密钥操作)。在过程1504的处理块1563中,响应于指示(例如,通过具有第一值的立即操作数中的比特)用于块操作的第一替换函数的一个或多个替换函数指示符,在关联于第一替换函数和来自第二源数据操作数集合的对应一个或多个密钥的第一源数据操作数集合的相应通道上执行一个或多个sm4轮交换。在过程1504的处理块1573中,响应于指示(例如,通过具有第二值的立即操作数中相应的比特)用于密钥操作的第二替换函数的一个或多个替换函数指示符,使用关联于第二替换函数指令和来自第二源数据操作数集合的对应一个或多个常数的第一源数据操作数集合的相应通道执行一个或多个sm4密钥生成。在过程1504的处理块1583中,进行确定关于是否操作的sm4轮片已完成。如果没有,处理重新迭代开始于处理块1563。否则过处理进行到过程1504的处理块1593,其中指令的结果元素集合存储在simd目的地寄存器中。

图16a示出使用提供加密块密码功能性的simdsm4轮片的指令有效实现sm4加密块密码(例如,用于加密)的过程1601的一个实施例的流程图。在处理块1610中,第一源操作数集合(例如,包含从128比特加密密钥得到的初始密钥值)存储在第一simd寄存器中。在处理块1620中,第二源操作数集合(例如,包含常数参数值ck0-ck3)存储在第二simd寄存器中。将意识到,第一源操作数集合和第二源操作数集合的初始准备(未示出)根据用于无线网络标准的sm4加密算法的定义被执行(英文描述在万维网在eprint.iacr.org/2008/329.pdf可获得)。在处理块1630中,使用关联于密钥替换函数和来自第二源操作数集合的对应常数(例如,来自第二simd寄存器的一个或多个对应128比特通道的ck0-ck3)的第一源操作数集合的一个或多个通道生成sm4密钥调度(例如,rk0-rk3)。在处理块1640中,新的第一源操作数(例如,1410)集合存储在第三simd寄存器中(在一些实施例中,其可以是与第一simd寄存器相同的寄存器)。在处理块1650中,新的第二源操作数(例如,1420)集合存储在第四simd寄存器中(在一些实施例中,其可以是与第二simd寄存器相同的寄存器)。将意识到,可通过将用于重新布置sm4调度(例如,来自操作数1470的rki+4-rki+7)和对应的常数(例如,来自存储器的cki+4-cki+7)的一个或多个指令(例如用于置换元素、混洗元素、混合元素等的指令)用在新的第二源操作数(例如,1420)集合中以供通过执行指令在过程1603中处理以执行sm4加密块密码的simdsm4轮片来实现。

在过程1603的处理块1660中,响应于指示(例如,通过具有第一值的立即操作数1430中的比特)用于块操作的替换函数的一个或多个替换函数指示符的指示符,在关联于指定的块替换函数和来自第二源数据操作数(例如,1420)集合的对应一个或多个密钥调度的第一源数据操作数(例如,1410)集合的一个或多个通道上执行sm4轮交换。在处理块1670中,响应于指示(例如,通过具有第二值的立即操作数1430中的比特)用于密钥操作的替换函数的一个或多个替换函数指示符的另一指示符,使用关联于指定密钥替换函数和来自第二源数据操作数(例如,1420)集合的对应一个或多个常数的第一源数据操作数(例如,1410)集合的一个或多个通道执行sm4密钥生成。在处理块1680中,指令的结果元素集合存储在simd寄存器中的simd目的地操作数(例如,1470)中。

在处理块1690中,进行确定关于是否全部sm4轮片操作已完成。如果没有,处理重新迭代开始于处理块1640。否则过程1601结束于处理块1699。

图16b示出使用提供加密块密码功能性的simdsm4轮片的指令有效实现sm4加密块密码的过程1602的备选实施例的流程图。将意识到,根据sm4加密算法的定义执行第一源操作数集合和第二源操作数集合的初始准备(未示出)。在处理块1610中,第一源操作数集合(例如,包含从128比特加密密钥得到的初始密钥值)存储在第一simd寄存器中。在处理块1620中,第二源操作数集合(例如,包含常数参数值ck0-ck3)存储在第二simd寄存器中。在处理块1630中,使用关联于密钥替换函数和来自第二源操作数集合的对应常数(例如,来自第二simd寄存器的一个或多个对应128比特通道的ck0-ck3)的第一源操作数集合的一个或多个通道生成sm4密钥调度(例如,rk0-rk3)。在处理块1640中,新的第一源操作数(例如,1410)集合存储在第三simd寄存器中(在一些实施例中,其可以是或可以不是与第一simd寄存器相同的寄存器)。在处理块1650中,新的第二源操作数(例如,1420)集合存储在第四simd寄存器中(在一些实施例中,其可以是或可以不是与第二simd寄存器相同的寄存器)。将意识到,可通过将用于重新布置sm4输入块和/或密钥调度(例如,来自操作数1470的rki-rki+3和/或x0-x3)和对应的常数(例如,来自存储器的cki-cki+3)的一个或多个指令(例如用于置换元素、混洗元素、混合元素等的指令)用在新的第二源操作数(例如,1420)集合中以供通过执行指令在过程1604中处理以执行sm4加密块密码的simdsm4轮片来实现。

在过程1604的处理块1660中,响应于指示(例如,通过操作码中的或具有第一值的立即操作数1430中或操作码中的比特)用于块操作的替换函数的一个或多个替换函数指示符的指示符,在关联于指定的块替换函数和来自第二源数据操作数(例如,1420)集合的对应一个或多个密钥调度的第一源数据操作数(例如,1410)集合的一个或多个通道上执行sm4轮交换。在处理块1670中,响应于指示(例如,通过操作码中的或具有第二值的立即操作数1430中或操作码中的比特)用于密钥操作的替换函数的一个或多个替换函数指示符的另一指示符,使用关联于指定的密钥替换函数和来自第二源数据操作数(例如,1420)集合的对应一个或多个常数的第一源数据操作数(例如,1410)集合的一个或多个通道执行sm4密钥生成。在处理块1682中,指令的结果元素集合存储在目的地和第三simd寄存器中新的第一源操作数(例如,1470)集合中。

在处理块1690中,进行确定关于是否全部sm4轮片操作已完成。如果没有,处理重新迭代开始于处理块1650。否则过程1601在处理块1699结束。

本文公开的机制的实施例可以以硬件、软件、固件或者此类实现的组合来实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性与非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。

可将程序代码应用于输入指令,以执行本文所描述的功能且生成输出信息。可将输出信息以已知方式应用于一个或多个输出装置。为了本申请的目的,处理系统包括具有处理器的任何系统,例如诸如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。

程序代码可以以高级面向过程或面向对象的编程语言来实现,以与处理系统通信。如果期望,程序代码还可以汇编语言或机器语言实现。事实上,本文所描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可为编译语言或解释语言。

至少一个实施例的一个或多个方面可通过存储在机器可读媒体上的代表性指令来实现,所述指令表示处理器内的多种逻辑,所述指令在由机器读取时使机器制造逻辑以执行本文所描述的技术。此类表示,称为“ip核”,可存储在有形的机器可读介质上,并供应给各种客户或制造设施以加载至实际制造所述逻辑或处理器的制造机器中。

此类机器可读存储媒体可包括但不限于,由机器或装置制造或形成的物品的非暂态有形布置,其中包括:存储媒体,如硬盘、任何其它类型盘,包括软盘、光盘、光盘只读存储器(cd-rom)、可重写光盘(cd-rw)和磁光盘;半导体装置,如只读存储器(rom)、随机存取存储器(ram),如动态随机存取存储器(dram)、静态随机存取存储器(sram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom)、磁或光卡;或者适用于存储电子指令的任何其它类型的媒体。

相应地,本发明实施例还包括包含指令或包含如硬件描述语言(hdl)的设计数据的非暂态有形机器可读媒体,其中设计数据定义本文所描述的结构、电路、设备、处理器和/或系统特征。此类实施例还可称为程序产品。

在一些情况下,可使用指令转化器将指令从源指令集转化成目标指令集。例如,指令转化器可将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真或以其它方式转化成由核处理的一个或多个其它指令。指令转化器可以以软件、硬件、固件或其组合来实现。指令转化器可位于处理器上、处理器外部,或部分位于处理器上而部分位于处理器外部。

因此,公开了用于根据至少一个实施例执行一个或多个指令的技术。虽然某些示范实施例在附图中描述并显示,但要理解,此类实施例仅仅是对广义发明的说明而非限制,以及本发明不限于所显示和描述的特定构造和布置,因为本领域技术人员在学习本公开后可想到各种其它修改。在如发展迅速而且进一步进步不容易预见的技术领域中,所公开的实施例在布置和细节方面是容易修改的(如通过实现技术发展所促进的),而不脱离本公开的原理或所附权利要求的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1