CN108351779A - 用于安全指令执行流水线的指令和逻辑 - Google Patents

用于安全指令执行流水线的指令和逻辑 Download PDF

Info

Publication number
CN108351779A
CN108351779A CN201680067694.8A CN201680067694A CN108351779A CN 108351779 A CN108351779 A CN 108351779A CN 201680067694 A CN201680067694 A CN 201680067694A CN 108351779 A CN108351779 A CN 108351779A
Authority
CN
China
Prior art keywords
encrypted
operation code
instruction
processor
look
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
CN201680067694.8A
Other languages
English (en)
Other versions
CN108351779B (zh
Inventor
I·德赛
E·乌尔德-阿迈德-瓦尔
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 CN108351779A publication Critical patent/CN108351779A/zh
Application granted granted Critical
Publication of CN108351779B publication Critical patent/CN108351779B/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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

一种处理器包括前端,所述前端用于接收经加密指令序列。所述处理器还包括解码器,所述解码器包括:用于从所述经加密指令序列中的分组中标识经加密命令的逻辑;用于从所述分组中标识密钥索引的逻辑;用于确定具有所述密钥索引的经加密操作码查找表的逻辑;用于基于所述密钥索引从所述经加密操作码查找表中查找经解码操作码的逻辑;以及用于转发所述经解码操作码以供执行的逻辑。

Description

用于安全指令执行流水线的指令和逻辑
技术领域
本公开涉及处理逻辑、微处理器和相关联的指令集架构领域,所述指令集架构当由处理器或其他处理逻辑执行时执行逻辑、数学或其他功能操作。
相关技术说明
多处理器系统正变得越来越普遍。多处理器系统的应用包括动态域分区一直延续到桌面计算。为了利用多处理器系统,可以将有待执行的代码分成多个线程以供由各种处理实体执行。可以彼此并行地执行每个线程。另外,为了增加处理实体的效用,可采用无序执行。无序执行可以在使得对这样的指令的输入可用时执行指令。因此,可在较早出现在代码序列中的指令之前执行较晚出现在代码序列中的指令。
附图说明
实施例以举例的方式被展示并且不限于附图中的图:
图1A是根据本公开的实施例的形成有可以包括用于执行指令的执行单元的处理器的示例性计算机系统的框图;
图1B展示了根据本公开的实施例的数据处理系统;
图1C展示了用于执行文本串比较操作的数据处理系统的其他实施例;
图2是根据本公开的实施例的可以包括用于执行指令的逻辑电路的处理器的微架构的框图;
图3A展示了根据本公开的实施例的多媒体寄存器中的各种紧缩数据类型表示;
图3B展示了根据本公开的实施例的可能的寄存器中数据存储格式(in-registerdata storage format);
图3C展示了根据本公开的实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示;
图3D展示了操作编码格式的实施例;
图3E展示了根据本公开的实施例的具有四十个位或更多个位的另一种可能的操作编码格式;
图3F展示了根据本公开的实施例的又另一种可能的操作编码格式;
图4A是框图,展示了根据本公开的实施例的有序流水线和寄存器重命名级、乱序发布/执行流水线;
图4B是框图,展示了根据本公开的实施例的有待包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑;
图5A是根据本公开的实施例的处理器的框图;
图5B是根据本公开的实施例的核的示例实施方式的框图;
图6是根据本公开的实施例的系统的框图;
图7是根据本公开的实施例的第二系统的框图;
图8是根据本公开的实施例的第三系统的框图;
图9是根据本公开的实施例的片上系统的框图;
图10展示了根据本公开的实施例的包含可以执行至少一条指令的中央处理单元和图形处理单元的处理器;
图11是框图,展示了根据本公开的实施例的IP核的开发;
图12展示了根据本公开的实施例可以如何由不同类型的处理器对第一类型的指令进行仿真;
图13展示了对照根据本公开的实施例的用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图;
图14是根据本公开的实施例的处理器的指令集架构的框图;
图15是根据本公开的实施例的处理器的指令集架构的更详细框图;
图16是根据本公开的实施例的用于处理器的指令集架构的执行流水线的框图;
图17是根据本公开的实施例的用于利用处理器的电子装置的框图;
图18是根据本公开的实施例的具有安全指令流水线的系统的框图;
图19是根据本公开的实施例的用于在具有安全指令流水线的系统中使用的经加密代码分组的更详细展示;
图20是根据本公开的实施例的具有安全指令流水线的系统的展示;并且
图21是根据本公开的实施例的用于执行安全指令流水线的方法的流程图。
具体实施方式
以下说明描述了用于安全指令流水线的指令和处理逻辑。在以下具体实施方式中,阐述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等许多具体细节以便提供对本公开的实施例的更全面理解。然而,本领域技术人员应理解的是,可以在没有这些具体细节的情况下实践实施例。另外,未详细示出一些熟知的结构、电路等,从而避免不必要地模糊本公开的实施例。
虽然下面的实施例是参照处理器进行描述的,但是其他实施例适用于其他类型的集成电路和逻辑装置。本公开的实施例的类似技术和教导可以应用于可以从更高的流水线吞吐量和改进的性能受益的其他类型的电路或半导体装置。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可以应用于在其中可以执行数据的操纵或管理的任何处理器和机器。另外,以下描述提供了示例,并且附图示出了用于说明目的的各种示例。然而,这些示例不应在限制性意义上予以解释,因为它们仅旨在提供本公开的实施例的示例,而不是提供本公开的实施例的所有可能的实施方式的详尽列表。
虽然以下示例描述了在执行单元和逻辑电路的上下文中的指令处理和分配,但是本公开的其他实施例可以通过存储在机器可读有形介质上的数据或指令来实现,所述数据或指令当由机器执行时使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,在机器可执行指令中将与本公开的实施例相关联的功能具体化。指令可以用于使可利用这些指令编程的通用或专用处理器执行本公开中的步骤。本公开的实施例可以作为可包括机器或计算机可读介质的计算机程序产品或软件而提供,所述机器或计算机可读介质具有存储于其上的指令,所述指令可以用于对计算机(或其他电子装置)进行编程以便执行根据本公开的实施例的一个或多个操作。此外,本公开的实施例的步骤可以由包含用于执行所述步骤的固定功能逻辑的特定硬件组件或者由经编程的计算机组件与固定功能硬件组件的任何组合来执行。
用于对逻辑进行编程以执行本公开的实施例的指令可以存储在系统中的存储器内,例如,DRAM、高速缓存、闪存或其他存储设备。此外,指令可以经由网络或借助于其他计算机可读介质来分配。因此,机器可读介质可以包括用于存储或传输由机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软磁盘、光盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音、或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读存储设备。因此,计算机可读介质可以包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可以贯穿各个不同的阶段,从产生到仿真到制造。表示设计的数据可用若干方式来表示所述设计。首先,如可以在模拟中有用的,可使用硬件描述语言或其他功能描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,设计在一些阶段处可以达到代表在硬件模型中的不同装置的物理布局的数据水平。在使用一些半导体制造技术的情况下,表示硬件模型的数据可以是指示由用于产生集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在任何设计表示中,数据可以存储在任何形式的机器可读介质中。存储器或磁存储设备或光存储设备(如,盘)可以是用于存储信息的机器可读介质,所述信息是经由光波或电波来传输的,所述光波或电波被调制或以其他方式被生成以传输这类信息。当传输指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传情况的程度上,可以制作一个新的副本。因此,通信提供者或网络提供者可以在有形机器可读介质上至少暂时地存储诸如编码到载波中的信息等制品,从而将本公开的实施例的技术具体化。
在现代处理器中,多个不同的执行单元可以用于处理和执行各种代码和指令。一些指令可能更快地完成,而其他指令则可能花费多个时钟周期来完成。指令的吞吐量越快,处理器的整体性能就越好。因此,尽可能快地执行尽可能多的指令将是有利的。然而,可能存在具有更大的复杂性并且需要更多的执行时间和处理器资源的某些指令,诸如浮点指令、加载/存储操作、数据移动等。
随着更多的计算机系统被用于互联网、文本以及多媒体应用,已经随时间推移引入了附加处理器支持。在一个实施例中,指令集可以与一个或多个计算机架构相关联,包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置、以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可以由一个或多个微架构来实施,所述一个或多个微架构可以包括用于实施一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可共享公共指令集的至少一部分。例如,Pentium 4处理器、CoreTM处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(AdvancedMicroDevices,Inc.)的处理器实施几乎相同版本的x86指令集(在更新的版本中已加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的处理器可以共享公共指令集的至少一部分,但可以包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构中可以使用新的或已知的技术以不同的方式来实施,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)以及引退寄存器堆)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可以包括:可以或可以不由软件程序员寻址的一个或多个寄存器、寄存器架构、寄存器堆、或其他寄存器组。
指令集可以包括一种或多种指令格式。在一个实施例中,指令格式可以指示各个字段(位的数量、位的位置等)以便在其他事物中指明待执行的操作以及在其上待执行的那个操作的操作数。在进一步的实施例中,一些指令格式可以进一步由指令模板(或子格式)所进一步限定。例如,给定指令格式的指令模板可以被定义为具有指令格式字段的不同子集和/或被定义为具有不同解释的给定字段。在一个实施例中,指令可以使用指令格式(并且,如果定义过,则以所述指令格式的一个给定指令模板)来表示,并且所述指明或指示操作以及所述操作将进行操作的操作数。
科学、财务、自动向量化通用目的、RMS(标识、挖掘和综合)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音标识算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(Single InstructionMultiple Data,SIMD)指代使处理器对多个数据元素执行运算的指令类型。SIMD技术可以用于能够在逻辑上将寄存器中的位划分成多个固定大小或可变大小的数据元素的处理器,每个数据元素代表单独的值。例如,在一个实施例中,64位寄存器中的位可以被组织为包含四个单独的16位数据元素的源操作数,其中每个数据元素代表单独的16位值。这种数据类型可以被称为紧缩数据类型或向量数据类型,并且这种数据类型的操作数可以被称为紧缩数据操作数或向量操作数。在一个实施例中,紧缩数据项或向量可以是存储在单个寄存器内的紧缩数据元素的序列,并且紧缩数据操作数或向量操作数可以是SIMD指令(或紧缩数据指令或向量指令)的源或目的地操作数。在一个实施例中,SIMD指令指定单个向量操作,所述单个向量操作有待对两个源向量操作数执行,以便生成具有相同或不同大小、具有相同或不同的数据元素数量、并且具有相同或不同的数据元素顺序的目的地向量操作数(也称为结果向量操作数)。
SIMD技术(如具有包括x86、MMXTM、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的指令集的CoreTM处理器所采用的技术)、ARM处理器(如具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM处理器族)、以及MIPS处理器(如由中国科学院计算技术研究所(ICT)开发的龙芯族处理器)已经实现了应用性能的显著提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉的英特尔公司的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据可以是用于表示相应的数据或操作的源和目的地的通用术语。在一些实施例中,目的地和源寄存器/数据可以通过寄存器、存储器或具有与所描绘的名称或功能不同的名称或功能的其他存储区域来实施。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一源存储寄存器和第二源存储寄存器或其他存储区域等。在其他实施例中,SRC和DEST存储区域中的两个或更多个可以与同一存储区域内的不同数据存储元件(例如,SIMD寄存器)相对应。在一个实施例中,所述源寄存器中的一个源寄存器还可以用作目的地寄存器,通过例如将对第一源数据和第二源数据执行的操作的结果写回到这两个源寄存器中的一个源寄存器中,从而用作目的地寄存器。
图1A是根据本公开的实施例的形成有可以包括用于执行指令的执行单元的处理器的示例性计算机系统的框图。根据本公开,如在本文所描述的实施例中,系统100包括如处理器102之类的组件,所述处理器用于采用包括逻辑的执行单元以执行算法来对数据进行处理。系统100可以代表基于可从加利福尼亚州圣克拉拉市的英特尔公司获得的III、4、XeonTMXScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可以执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的一个版本,不过也可使用其他操作系统(例如,UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本公开的实施例不限于硬件和软件的任何具体组合。
实施例不限于计算机系统。本公开的实施例可用于其他装置,如手持式装置和嵌入式应用。手持式装置的一些示例包括:蜂窝电话、互联网协议装置、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用可包括:微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行根据至少一个实施例的一个或多个指令的任何其他系统。
计算机系统100可以包括处理器102,所述处理器可以包括根据本公开的一个实施例用于执行算法以便执行至少一条指令的一个或多个执行单元108。可以在单处理器桌面或服务器系统的背景下描述一个实施例,但其他实施例可包括在多处理器系统中。系统100可以是“中枢”系统架构的示例。系统100可以包括用于处理数据信号的处理器102。处理器102可以包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施指令集组合的处理器或任合其他处理器装置,例如,如数字信号处理器。在一个实施例中,处理器102可以耦合至处理器总线110,所述处理器总线可以在处理器102与系统100内的其他组件之间传输数据信号。系统100的元件可以执行对熟悉本领域的人而言是众所周知的常规功能。
在一个实施例中,处理器102可以包括1级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓存存储器可以驻留在处理器102外部。其他实施例还可以根据特定实施方式和需求包括内部高速缓存和外部高速缓存两者的组合。寄存器堆106可以将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器。
执行单元108(包括用于执行整数运算和浮点运算的逻辑)也驻留在处理器102中。处理器102还可以包括存储用于某些宏指令的微代码的微代码(u码)ROM。在一个实施例中,执行单元108可以包括用于处理紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102的指令集内,连同用于执行所述指令的相关联的电路系统,可使用通用处理器102中的紧缩数据来执行许多多媒体应用所使用的操作。因此,通过将处理器数据总线的全带宽用于对紧缩数据进行操作,许多多媒体应用可被加速并更高效地执行。这可以潜在地消除对跨处理器数据总线传送更小数据单元以一次对一个数据元素执行一个或多个操作的需要。
执行单元108的实施例还可用于微控制器、嵌入式处理器、图形装置、DSP以及其他类型的逻辑电路。系统100可以包括存储器120。存储器120可以被实施为动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置或其他存储器装置。存储器120可以存储由数据信号表示的可由处理器102执行的指令和/或数据。
系统逻辑芯片116可以耦合到处理器总线110和存储器120。系统逻辑芯片116可以包括存储器控制器中枢(MCH)。处理器102可以经由处理器总线110与MCH 116进行通信。MCH116可以向存储器120提供高带宽存储器路径118,以用于指令和数据存储以及用于存储图形命令、数据和纹理。MCH 116可以在处理器102、存储器120、以及系统100中的其他组件之间引导数据信号,并且在处理器总线110、存储器120、以及系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可以提供用于耦合到图形控制器112的图形端口。MCH116可以通过存储器接口118耦合到存储器120。图形卡112可以通过加速图形端口(AGP)互连114耦合到MCH 116。
系统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进行编程:各种音频、视频、成像和通信算法,包括离散变换,诸如Walsh Hadamard(沃尔什-哈达玛)变换、快速傅里叶变换(FFT)、离散余弦变换(DCT)及这些变换的对应逆变换;压缩/解压缩技术,诸如颜色空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)函数,诸如脉冲编码调制(PCM)。
图1C展示了执行SIMD文本串比较操作的数据处理系统的其他实施例。在一个实施例中,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓存存储器167和输入/输出系统168。输入/输出系统168可以可选地耦合至无线接口169。根据一个实施例,SIMD协处理器161可以执行包括指令的操作。在一个实施例中,处理核170可以适用于采用一种或多种工艺技术的制造,并且通过在机器可读介质上足够详细地表示,可以适用于促进全部或部分的数据处理系统160包括处理核170的制造。
在一个实施例中,SIMD协处理器161包括执行单元162和一组寄存器堆164。主处理器166的一个实施例包括用于识别包括根据一个实施例的指令的指令集163的指令以便由执行单元162来执行的解码器165。在其他实施例中,SIMD协处理器161还包括解码器165的至少一部分以对指令集163的指令进行解码。处理核170还可以包括附加电路系统(未示出),所述附加电路系统对于理解本公开的实施例可以是不必要的。
在操作中,主处理器166执行控制一般类型的数据处理操作的数据处理指令流,所述数据处理操作包括与高速缓存存储器167和输入输出系统168的交互。嵌入在数据处理指令流内的可以是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为属于应由附接的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)。可以由任何附接的SIMD协处理器从协处理器总线166接收这些指令。在这种情况下,SIMD协处理器161可以接受并执行任何旨在用于所述协处理器的所接收的SIMD协处理器指令。
可以经由无线接口169接收数据以供由SIMD协处理器指令进行处理。例如,可以以数字信号的形式接收语音通信,所述数字信号可以由SIMD协处理器指令进行处理以重新生成表示语音通信的数字音频样本。再例如,可以以数字比特流的形式接收压缩音频和/或视频,所述压缩音频和/或视频可以由SIMD协处理器指令进行处理以重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可以集成到包括执行单元162、一组寄存器堆164和解码器165的单处理核170中以便识别包括根据一个实施例的指令的指令集163的指令。
图2是根据本公开的实施例的可以包括用于执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,可以实施根据一个实施例的指令来对具有字节、字、双字、四字等大小以及如单倍和双倍精度整数和浮点数据类型等数据类型的数据元素进行操作。在一个实施例中,有序前端201可以实施处理器200的可以取出待执行的指令并将所述指令准备于稍后在处理器流水线中使用的部分。前端201可以包括若干个单元。在一个实施例中,指令预取器226从存储器取出指令并将所述指令馈送给指令解码器228,所述指令解码器进而对所述指令进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的称为“微指令”或“微运算”(也称为微op或uop)的一个或多个运算。在其他实施例中,根据一个实施例,解码器将指令解析为运算码和相应的数据以及可由微架构用于执行运算的控制字段。在一个实施例中,跟踪高速缓存230可以将经解码的uop汇编为程序有序序列或在uop队列234中跟踪以用于执行。当跟踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成运算所需的uop。
一些指令可以被转换为单个微op,而其他指令需要若干个微op来完成完整的运算。在一个实施例中,如果完成指令需要多于四个微op,则解码器228可以访问微代码ROM232以执行指令。在一个实施例中,指令可以被解码成用于在指令解码器228处进行处理的少量的微op。在另一实施例中,如果需要多个微op来完成运算,则指令可以存储在微代码ROM 232内。跟踪高速缓存230引用入口点可编程逻辑阵列(PLA),以确定用于从微代码ROM232读取微代码序列的正确微指令指针以便根据一个实施例完成一个或多个指令。在微代码ROM 232完成用于指令的排序微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可以被分成两个单独的寄存器堆,一个寄存器堆用于数据的低次序三十二位,并且第二寄存器堆用于数据的高次序三十二位。浮点寄存器堆210可以包括128位宽的条目,因为浮点指令通常具有宽度为从64位至128位的操作数。
执行块211包含执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可以执行指令。执行块211可以包括寄存器堆208、210,所述寄存器堆存储微指令执行所需的整数数据操作数值和浮点数据操作数值。在一个实施例中,处理器200可以包括多个执行单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一实施例中,浮点执行块222、224可以执行浮点、MMX、SIMD和SSE、或其他运算。在又另一实施例中,浮点ALU 222可以包括用于执行除法、平方根和剩余微op的64位乘64位浮点除法器。在各个实施例中,涉及浮点值的指令可以用浮点硬件来处理。在一个实施例中,ALU运算可以被传递至高速ALU执行单元216、218。高速ALU 216、218可以以半个时钟周期的有效等待时间执行快速运算。在一个实施例中,大多数复杂整数运算前往慢速ALU 220,因为慢速ALU 220可以包括用于长等待时间类型的运算的整数执行硬件,诸如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储运算可以由AGU 212、214来执行。在一个实施例中,整数ALU 216、218、220可以对64位数据操作数执行整数运算。在其他实施例中,ALU 216、218、220可以被实施为支持包括十六、三十二、128、256等的各种数据位大小。类似地,浮点单元222、224可以被实施为支持具有各种宽度的位的操作数范围。在一个实施例中,浮点单元222、224可以结合SIMD和多媒体指令来对128位宽度的紧缩数据操作数进行运算。
在一个实施例中,uop调度器202、204、206在父加载完成执行之前分派不独立运算。当uop可以在处理器200中推测性地调度和执行时,处理器200还可以包括用于处理存储器未命中的逻辑。如果数据高速缓存中的数据加载未命中,则可能存在流水线中飞行的已经因暂时不正确数据而离开调度器的不独立运算。回放机制跟踪并重新执行使用不正确数据的指令。仅仅不独立运算可能需要被重放,并且可以允许完成独立运算。处理器的一个实施例的调度器和回放机制还可以被设计成捕获用于文本串比较操作的指令序列。
术语“寄存器”可以指代可被用作指令的一部分以标识操作数的机载处理器存储位置。换言之,寄存器可以是可从处理器外部(从程序员的角度来看)可用的寄存器。然而,在一些实施例中,寄存器可能并不限于特定类型的电路。而是,寄存器可以存储数据、提供数据并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实施,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器可以被理解为被设计成保持紧缩数据的数据寄存器,比如,用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽MMXTM寄存器(在某些情况下也称为“mm”寄存器)。以整数和浮点形式可用的这些MMX寄存器可以用伴随SIMD和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器可以保持这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要对这两种数据类型进行区分。在一个实施例中,整数和浮点数据可以包含在同一寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或同一寄存器中。
在下图的示例中,可以描述多个数据操作数。图3A展示了根据本公开的实施例的多媒体寄存器中的各种紧缩数据类型表示。图3A展示了用于128位宽操作数的紧缩字节310、紧缩字320和紧缩双字(dword))330的数据类型。本示例的紧缩字节格式310可以为128位长,并且包含十六个紧缩字节数据元素。例如,字节可以被限定为八个数据位。每个字节数据元素的信息可以存储在字节0的位7到位0、字节1的位15到位8、字节2的位23至位16以及最后字节15的位120至位127中。因此,所有可用位都可以用于寄存器中。这种存储安排提高了处理器的存储效率。同样地,在访问了十六个数据元素的情况下,现在可以并行地对十六个数据元素执行一个操作。
通常,数据元素可以包括存储在具有相同长度的其他数据元素的单个寄存器或存储器位置中的单独的一条数据。在与SSEx技术有关的紧缩数据序列中,存储在XMM寄存器中的数据元素数量可以是128位除以单个数据元素的位长度。类似地,在与MMX和SSE技术有关的紧缩数据序列中,存储在XMM寄存器中的数据元素数量可以是64位除以单个数据元素的位长度。尽管在图3A中展示的数据类型可以是128位长,但本公开的实施例还可以用64位宽或其他大小的操作数进行操作。本示例的紧缩字格式320可以为128位长,并且包含八个紧缩字数据元素。每个紧缩字包含十六个信息位。图3A的紧缩双字格式330可以为128位长,并且包含四个紧缩双字数据元素。每个紧缩双字数据元素包含三十二个信息位。紧缩四字可以是128位长,并且包含两个紧缩四字数据元素。
图3B展示了根据本公开的实施例的可能的寄存器中数据存储格式。每个紧缩数据可以包括多于一个独立数据元素。展示了三种紧缩数据格式:半紧缩(packed half)341、单紧缩(packed single)342和双紧缩(packed double)343。半紧缩341、单紧缩342和双紧缩343的一个实施例包含定点数据元素。对于另一个实施例,半紧缩341、单紧缩342和双紧缩343中的一个或多个可以包含浮点数据元素。半紧缩341的一个实施例可以是包含八个16位数据元素的128位长。单紧缩342的一个实施例可以是128位长并且包含四个32位数据元素。双紧缩343的一个实施例可以是128位长并且包含两个64位数据元素。将理解的是,这种紧缩数据格式可以进一步扩展到其他寄存器长度,例如,96位、160位、192位、224位、256位或更多。
图3C展示了根据本公开的实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示。无符号紧缩字节表示344展示了无符号紧缩字节在SIMD寄存器中的存储。每个字节数据元素的信息可以存储在字节0的位7到位0、字节1的位15到位8、字节2的位23至位16以及最后字节15的位120至位127中。因此,所有可用位都可以用于寄存器中。这种存储安排可以提高处理器的存储效率。同样地,在访问了十六个数据元素的情况下,现在可以以并行方式对十六个数据元素执行一个操作。有符号紧缩字节表示345展示了有符号紧缩字节的存储。注意,每个字节数据元素的第八个位可以是符号指示符。无符号紧缩字表示346展示了可以如何将字七到字零存储在SIMD寄存器中。有符号紧缩字表示347可以类似于无符号紧缩字寄存器中表示346。注意,每个字数据元素的第十六个位可以是符号指示符。无符号紧缩双字表示348示出如何存储双字数据元素。有符号紧缩双字表示349可以类似于无符号紧缩双字寄存器中表示348。注意,必要的符号位可以是每个双字数据元素的第三十二位。
图3D展示了操作编码(操作码)的实施例。此外,格式360可以包括与可在万维网(www)上在intel.com/design/litcentr处从加利福尼亚州圣克拉拉市英特尔公司获得的“IA-32英特尔架构软件开发者手册第2卷:指令集参考(IA-32Intel ArchitectureSoftware Developer’s Manual Volume 2:Instruction Set Reference)”中描述的操作码格式类型相对应的寄存器/存储器操作数寻址模式。在一个实施例中,指令可以由字段361和362中的一个或多个进行编码。可以标识每条指令多达两个操作数位置,包括多达两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可以与源操作数标识符364相同,而在其他实施例中,它们可能不同。在另一实施例中,目的地操作数标识符366可以与源操作数标识符365相同,而在其他实施例中,它们可能不同。在一个实施例中,由源操作数标识符364和365标识的源操作数之一可以由文本串比较操作的结果所覆写,而在其他实施例中,标识符364对应于源寄存器元素并且标识符365对应于目的地寄存器元素。在一个实施例中,操作数标识符364和365可以标识32位或64位源操作数和目的地操作数。
图3E展示了根据本公开的实施例的具有四十个位或更多个位的另一种可能的操作编码(操作码)格式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位单指令多数据(SIMD)算术运算。操作编码(操作码)格式380描绘了具有CDP操作码字段382和389的一个这样的CDP指令。对于另一个实施例,这种类型的CDP指令操作可以由字段383、384、387和388中的一个或多个进行编码。可以标识每条指令多达三个操作数位置,包括多达两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可以对八位、十六位、三十二位和64位的值进行操作。在一个实施例中,可以对整数数据元素执行指令。在一些实施例中,可以使用条件字段381来有条件地执行指令。对于一些实施例,可以由字段383对源数据大小进行编码。在一些实施例中,可以在SIMD字段上完成零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,可以由字段384对饱和度的类型进行编码。
图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)核、超长指令字(VLIW)核、或混合或替代核类型。在一个实施例中,核490可以是专用核,如例如网络或通信核、压缩引擎、图形核等。
前端单元430可以包括耦合至指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可以耦合至指令转换后备缓冲器(TLB)436。TLB 436可以耦合至指令取出单元438,所述指令取出单元耦合至解码单元440。解码单元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,所述存储器单元可以包括耦合到数据高速缓存单元474的数据TLB单元472,所述数据高速缓存单元耦合到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技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)。
应当理解,核可以以各种方式来支持多线程化(执行两个或更多个并行操作或线程集)。多线程化支持可以通过例如包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)或其组合来执行。这种组合可以包括例如诸如超线程化技术中的时分取出并解码以及此后的同步多线程化。
尽管可以在乱序执行的上下文中描述寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还可以包括单独的指令和数据高速缓存单元434/474和共享的L2高速缓存单元476,但其他实施例可以具有用于指令和数据两者的单个内部高速缓存,如例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括内部高速缓存和可以在核和/或处理器外部的外部高速缓存的组合。在其他实施例中,所有高速缓存都可以在核和/或处理器的外部。
图5A是根据本公开的实施例的处理器500的框图。在一个实施例中,处理器500可以包括多核处理器。处理器500可以包括通信地耦合至一个或多个核502的系统代理510。此外,核502和系统代理510可以通信地耦合至一个或多个高速缓存506。核502、系统代理510和高速缓存506可以经由一个或多个存储器控制单元552通信地耦合。此外,核502、系统代理510和高速缓存506可以经由存储器控制单元552通信地耦合至图形模块560。
处理器500可以包括用于对核502、系统代理510和高速缓存506、以及图形模块560进行互连的任何合适的机制。在一个实施例中,处理器500可以包括用于对核502、系统代理510和高速缓存506、以及图形模块560进行互连的基于环的互连单元508。在其他实施例中,处理器500可以包括任何数量的用于互连这类单元的众所周知的技术。基于环的互连单元508可以利用存储器控制单元552来促进互连。
处理器500可以包括存储器层级结构,所述存储器层级结构包括所述核内的一个或多个层级的高速缓存、比如高速缓存506等一个或多个共享高速缓存单元、或耦合至所述一组集成存储器控制器单元552的外部存储器(未示出)。高速缓存506可以包括任何合适的高速缓存。在一个实施例中,高速缓存506可以包括诸如2级(L2)、3级(L3)、4级(L4)或其他级高速缓存等一个或多个中间级高速缓存、末级高速缓存(LLC)、和/或其组合。
在各个实施例中,核502中的一个或多个可以执行多线程化。系统代理510可以包括用于对核502进行协调和处理的组件。系统代理单元510可以包括例如功率控制单元(PCU)。PCU可以是或包括对核502的功率状态进行调节所需的逻辑和组件。系统代理510可以包括用于驱动一个或多个外部连接的显示器或图形模块560的显示引擎512。系统代理510可以包括用于图形的通信总线的接口514。在一个实施例中,接口514可以由PCIExpress(PCIe)来实施。在进一步的实施例中,接口514可以由PCI Express图形(PEG)来实施。系统代理510可以包括直接媒体接口(DMI)516。DMI 516可以在母板或计算机系统的其他部分上的不同桥之间提供链路。系统代理510可以包括用于向计算系统的其他元件提供PCIe链路的PCIe桥518。PCIe桥518可以使用存储器控制器520和一致性逻辑522来实施。
核502可以以任何合适的方式来实施。就架构和/或指令集而言,核502可以是同构或异构的。在一个实施例中,核502中的一些可以是有序的,而其他核可以是乱序的。在另一实施例中,核502中的两个或更多个核可以执行同一指令集,而其他核可以仅执行所述指令集的子集或执行不同的指令集。
处理器500可以包括通用处理器,如可从加利福尼亚州圣克拉拉市的Intel公司获得的CoreTMi3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器。处理器500可以从另一公司提供,比如ARM控股公司、MIPS等。处理器500可以是专用处理器,如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器500可以在一个或多个芯片上实施。处理器500可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种工艺技术中的任何一种技术在一个或多个衬底上被实施。
在一个实施例中,高速缓存506中给定高速缓存可以由核502中的多个核所共享。在另一实施例中,高速缓存506中给定高速缓存可以专用于核502中的一个核。高速缓存506到核502的分配可以由高速缓存控制器或其他适当的机制来处理。高速缓存506中的给定高速缓存可以由两个或多个核502通过对给定高速缓存506实施时间切片而共享。
图形模块560可以实施集成图形处理子系统。在一个实施例中,图形模块560可以包括图形处理器。此外,图形模块560可以包括媒体引擎565。媒体引擎565可以提供媒体编码和视频解码。
图5B是根据本公开的实施例的核502的示例实施方式的框图。核502可以包括通信地耦合至乱序引擎580的前端570。核502可以通过高速缓存层级结构503通信地耦合至处理器500的其他部分。
前端570可以以任何适当的方式来实施,比如如上所述的完全或部分地由前端201来实施。在一个实施例中,前端570可以通过高速缓存层级结构503与处理器500的其他部分进行通信。在进一步的实施例中,前端570可以从处理器500的一部分取出指令并且在有待稍后在处理器流水线中使用的指令被传递至乱序执行引擎580时准备所述指令。
乱序执行引擎580可以以任何适当的方式来实施,比如如上所述的完全或部分地由乱序执行引擎203来实施。乱序执行引擎580可以准备从前端570接收的指令以供执行。乱序执行引擎580可以包括分配模块582。在一个实施例中,分配模块582可以分配处理器500的资源或诸如寄存器或缓冲器等其他资源以便执行给定指令。分配模块582可以在诸如存储器调度器、快速调度器或浮点调度器等调度器中进行分配。这类调度器可以在图5B中由资源调度器584来表示。分配模块582可以完全或部分地由结合图2所描述的分配逻辑来实施。资源调度器584可以基于给定资源的源的准备状态、以及执行指令所需的执行资源的可用性来判定指令何时准备好执行。资源调度器584可以通过例如如上文讨论的调度器202、204、206来实施。资源调度器584可以对一个或多个资源调度指令的执行。在一个实施例中,这类资源可以在核502内部,并且可以展示为例如资源586。在另一实施例中,这类资源可以在核502外部,并且可以由例如高速缓存层级结构503访问。资源可以包括例如存储器、高速缓存、寄存器堆或寄存器。在核502内部的资源可以由图5B中的资源586来表示。在必要时,写入至资源586或从中读取的值可以通过例如高速缓存层级结构503与处理器500的其他部分协调。当指令被分配资源时,其可以被放置到重排序缓冲器588中。重排序缓冲器588在指令被执行时跟踪所述指令,并且可以基于处理器500的任何合适的标准来选择性地对所述指令的执行进行重新排序。在一个实施例中,重排序缓冲器588可以标识可以独立执行的指令或一系列指令。这类指令或一系列指令可以与其他的这类指令并行执行。核502中的并行执行可以由任何合适数量的单独执行块或虚拟处理器来执行。在一个实施例中,共享资源——诸如存储器、寄存器、和高速缓存——可以由给定核502内的多个虚拟处理器访问。在其他实施例中,共享资源可以由处理器500内的多个处理实体访问。
高速缓存层级结构503可以以任何合适的方式来实施。例如,高速缓存层级结构503可以包括一个或多个较低级或中级高速缓存,诸如高速缓存572、574。在一个实施例中,高速缓存层级结构503可以包括通信地耦合至高速缓存572、574的LLC 595。在另一实施例中,LLC 595可以在可由处理器500的所有处理实体访问的模块590中实施。在进一步的实施例中,模块590可以在来自英特尔公司的处理器的非核模块中实施。模块590可以包括处理器500中执行核502所必要但可能不在核502内实施的部分或子系统。除了LLC 595之外,模块590可以包括例如硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。可以通过模块590并且更具体地LLC 595来进行对可用于处理器500的RAM 599的访问。此外,核502的其他实例可以类似地访问模块590。可以部分地通过模块590来促进核502的实例的协调。
图6至图8可以展示适用于包括处理器500的示例性系统,而图9可以展示可以包括核502中的一个或多个的示例性片上系统(SoC)。本领域已知的用于膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其他电子装置的其他系统设计和实施方式也可以是合适的。一般而言,结合如本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子装置通常可以是合适的。
图6展示了根据本公开的实施例的系统600的框图。系统600可以包括可耦合到图形存储控制器中枢(GMCH)620的一个或多个处理器610、615。图6中用虚线表示附加处理器615的可选性质。
每个处理器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(如平板显示器)。在一个实施例中,GMCH620可以包括集成图形加速器。GMCH 620可以进一步地耦合到输入/输出(I/O)控制器中枢(ICH)650,所述ICH可以用于将各种外围装置耦合到系统600。外部图形装置660可以包括与另一个外围装置670一起耦合到ICH 650的独立图形装置。
在其他实施例中,在系统600中还可以存在附加或不同的处理器。例如,附加处理器610、615可以包括可以与处理器610相同的附加处理器、可以与处理器610异构或不对称的附加处理器、加速器(如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器。在包括架构、微架构、热学、功耗特性等的指标度量范围方面,在物理资源610、615之间可以存在各种差异。这些差异可以有效地将其本身表现为处理器610、615之间的不对称性和异构性。对于至少一个实施例,各处理器610、615可以驻留在相同裸片封装体中。
图7展示了根据本公开的实施例的第二系统700的框图。如图7中所示,多处理器系统700可以包括点对点互连系统,并且可以包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的某个版本,如处理器610、615中的一个或多个。
虽然图7可展示两个处理器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,所述总线桥可以将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各个装置可以耦合到第二总线720,所述装置包括例如键盘和/或鼠标722、多个通信装置727、以及可以包括指令/代码和数据730的存储单元728(如磁盘驱动器或者其他大容量存储设备)。进一步地,音频I/O 724可以耦合到第二总线720。应注意的是,其他架构可以是可能的。例如,替代图7的点对点架构,系统可以实施多点分支总线或其他这样的架构。
图8展示了根据本公开的实施例的第三系统800的框图。图7和图8中的相同元件具有相同的参考号,并且已经从图8中省略了图7的某些方面以避免使图8的其他方面模糊。
图8展示了处理器770、780可以分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可以包括集成存储器控制器单元,比如以上结合图5和图7所描述的集成存储器控制器单元。此外,CL 872、882还可以包括I/O控制逻辑。图8展示了不但存储器732、734可以耦合至CL 872、882,而且那个I/O装置814也可以耦合至控制逻辑872、882。传统I/O装置815可以耦合至芯片组790。
图9展示了根据本公开的实施例的SoC 900的框图。图5中的相似元件具有相同的参考号。而且,虚线框可以表示关于更先进的SoC的可选特征。互连单元902可以耦合至:应用处理器910,所述应用处理器可以包括一组一个或多个核502A至502N和共享高速缓存单元506;系统代理单元510;总线控制器单元916;集成存储器控制器单元914;一组或者一个或多个媒体处理器920,所述媒体处理器可以包括集成图形逻辑908、用于提供静物和/或视频相机功能的图像处理器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、存储器接口控制器1045、MIPI控制器1050、闪存控制器1055、双数据速率(DDR)控制器1060、安全引擎1065、以及I2S/I2C控制器1070。图10的处理器中可以包括其他逻辑和电路,包括更多CPU或GPU以及其他外围接口控制器。
可以由机器可读介质上所存储的表示性数据来实施至少一个实施例的一个或多个方面,所述数据代表处理器内的各种逻辑,所述指令当被机器读取时使所述机器制作用于执行本文中所描述的技术的逻辑。此类表示(称为“IP核”)可以被存储在有形的机器可读介质(“磁带”)上并提供给各顾客或制造设施以加载至实际制作所述逻辑或处理器的制作机器中。例如,IP核(诸如由ARM控股有限公司开发的处理器的CortexTM家族和中国科学院计算技术研究所(ICT)开发的龙芯IP核)可以被授权或销售给各类客户或许可证持有者(诸如德州仪器、高通、苹果或三星),并且在由这些客户或许可证持有者生产的处理器中实施。
图11展示了框图,展示了根据本公开的实施例的IP核的开发。存储设备1100可以包括模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可以经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160提供至存储设备1100。然后可以将由仿真工具和模型生成的IP核信息传输到制造设施1165,在所述制造设施中,所述信息可以由第三方制造以执行根据至少一个实施例的至少一条指令。
在一些实施例中,一条或多条指令可以与第一类型或架构(例如,x86)相对应,并且在属于不同类型或架构(例如,ARM)的处理器上进行转换或仿真。根据一个实施例,指令可以因此在包括ARM、x86、MIPS、GPU或其他处理器类型或架构在内的任何处理器或处理器类型上执行。
图12展示了根据本公开的实施例可以如何由不同类型的处理器对第一类型的指令进行仿真。在图12中,程序1205包含可以执行与根据一个实施例的指令相同或基本上相同功能的一些指令。然而,程序1205的指令可以具有与处理器1215不同或不兼容的类型和/或格式,这意味着属于程序1205中的类型的指令可能无法由处理器1215本机执行。然而,在仿真逻辑1210的帮助下,程序1205的指令可以被转换成可以由处理器1215本机执行的指令。在一个实施例中,仿真逻辑可以在硬件中实施。在另一实施例中,仿真逻辑可以在包含用于将属于程序1205中的类型的指令转换成可由处理器1215本机执行的类型的软件的有形机器可读介质中实施。在其他实施例中,仿真逻辑可以是固定功能或可编程硬件和存储在有形机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑存在于处理器外部并且可以由第三方提供。在一个实施例中,处理器可以通过执行包含在处理器中或与所述处理器相关联的微代码或固件来加载在包含软件的有形机器可读介质中实施的仿真逻辑。
图13展示了对照根据本公开的实施例的用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图。在所展示的实施例中,指令转换器可以是软件指令转换器,然而可以在软件、固件、硬件或其各种组合中实施指令转换器。图13示出了可以使用x86编译器1304来编译高级语言1302的程序以生成x86二进制代码1306,所述二进制代码可以由具有至少一个x86指令集核1316的处理器本机执行。具有至少一个x86指令集核1316的处理器表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同功能的任何处理器:(1)英特尔x86指令集核的指令集的实质部分,或(2)应用的目标代码版本或目标是在具有至少一个x86指令集核的英特尔处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1304表示可以可操作以生成x86二进制代码1306(例如,目标代码)的编译器,所述二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1316的处理器上执行。类似地,图13示出了可以使用替代性指令集编译器1308来编译高级语言1302的程序以生成替代性指令集二进制代码1310,可以由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代性指令集二进制代码。指令转换器1312可以用于将x86二进制代码1306转换为可由不具有x86指令集核1314的处理器本机执行的代码。这种经转换的代码可能与替代性指令集二进制代码1310不同;然而,经转换的代码将完成一般操作,并且由来自替代性指令集的指令构成。因此,指令转换器1312表示通过仿真、模拟或任何其他进程允许不具有x86指令集处理器或核的处理器或其他电子装置执行x86二进制代码1306的软件、固件、硬件或其组合。
图14是根据本公开的实施例的处理器的指令集架构1400的框图。指令集架构1400可以包括任何合适数量或种类的组件。
例如,指令集架构1400可以包括诸如一个或多个核1406、1407以及图形处理单元1415等处理实体。核1406、1407可以通过任何适当的机制(比如通过总线或高速缓存)通信地耦合至指令集架构1400的其余部分。在一个实施例中,核1406、1407可以通过L2高速缓存控制1408通信地耦合,所述L2高速缓存控制可以包括总线接口单元1409和L2高速缓存1410。核1406、1407和图形处理单元1415可以彼此通信地耦合并且通过互连1410耦合至指令集架构1400的其余部分。在一个实施例中,图形处理单元1415可以使用视频编码1420,所述视频编码限定特定视频信号将被编码和解码以供输出的方式。
指令集架构1400还可以包括任何数量或种类的接口、控制器或用于与电子装置或系统的其他部分接口连接或通信的其他机制。这种机制可以促进例如与外围装置、通信装置、其他处理器或存储器的交互。在图14的示例中,指令集架构1400可以包括液晶显示器(LCD)视频接口1425、订户接口模块(SIM)接口1430、引导ROM接口1435、同步动态随机存取存储器(SDRAM)控制器1440、闪存控制器1445、和串行外围接口(SPI)主机单元1450。LCD视频接口1425可以将例如来自GPU 1415的视频信号的输出并且通过例如移动行业处理器接口(MIPI)1490或高清晰度多媒体接口(HDMI)1495提供至显示器。这种显示器可以包括例如LCD。SIM接口1430可以提供对SIM卡或装置的访问或来自所述SIM或装置的访问。SDRAM控制器1440可以提供对诸如SDRAM芯片或模块1460等存储器的访问或来自所述存储器的访问。闪存控制器1445可以提供对诸如闪存1465或RAM的其他实例等存储器的访问或来自所述存储器的访问。SPI主机单元1450可以提供对通信模块或来自所述通信模块的访问,诸如蓝牙模块1470、高速3G调制解调器1475、全球定位系统模块1480或实施诸如802.11等通信标准的无线模块1485。
图15是根据本公开的实施例的处理器的指令集架构1500的更详细框图。指令架构1500可以实施指令集架构1400的一个或多个方面。此外,指令集架构1500可以展示用于执行处理器内的指令的模块和机制。
指令架构1500可以包括通信地耦合至一个或多个执行实体1565的存储器系统1540。此外,指令架构1500可以包括高速缓存和总线接口单元,比如通信地耦合至执行实体1565和存储器系统1540的单元1510。在一个实施例中,可以通过一个或多个执行级来执行将指令加载到执行实体1565中。这类级可以包括例如指令预取级1530、双指令解码级1550、寄存器重命名级1555、发布级1560以及回写级1570。
在一个实施例中,存储器系统1540可以包括被执行的指令指针1580。被执行的指令指针1580可以存储标识一批指令中的最早的、未被分派的指令的值。最早指令可以与最低程序顺序(PO)值相对应。PO可以包括指令的唯一编号。这种指令可以是在由多个指令串(strand)表示的线程内的单条指令。PO可以用于在排序指令时确保正确执行代码的语义。PO可以通过诸如对在指令中编码的PO的增量而非绝对值进行评估的机制来重建。这种重建的PO可以被称为“RPO”。尽管本文可以引用PO,但是这种PO可以与RPO互换地使用。指令串可以包括指令序列,这些指令为取决于彼此的数据。所述指令串可以在编译时由二进制转换器来安排。执行指令串的硬件可以根据各种指令的PO有序地执行给定指令串的指令。线程可以包括多个指令串,使得不同指令串的指令可以彼此依赖。给定指令串的PO可以是所述指令串中尚未分派以从发布级开始执行的最早指令的PO。因此,给定多个指令串的线程,每个指令串包括由PO排序的指令,被执行的指令指针1580可以将最早的——由最低编号所展示的——PO存储在线程中。
在另一实施例中,存储器系统1540可以包括引退指针1582。引退指针1582可以存储标识最后引退指令的PO的值。引退指针1582可以由例如引退单元54来设置。如果尚未引退任何指令,则引退指针1582可以包括空值。
执行实体1565可以包括处理器可以借助以执行指令的任何合适数量和种类的机制。在图15的示例中,执行实体1565可以包括ALU/乘法单元(MUL)1566、ALU 1567和浮点单元(FPU)1568。在一个实施例中,这类实体可以使用包含在给定地址1569内的信息。执行实体1565与级1530、1550、1555、1560、1570相结合可以共同形成执行单元。
单元1510可以以任何合适的方式来实施。在一个实施例中,单元1510可以执行高速缓存控制。在这种实施例中,单元1510可以因此包括高速缓存1525。在进一步的实施例中,高速缓存1525可以被实施为具有诸如零、128k、256k、512k、1M或2M字节存储器等任何合适大小的L2统一高速缓存。在另一个进一步的实施例中,高速缓存1525可以在误差校正代码存储器中实施。在另一实施例中,单元1510可以执行至处理器或电子装置的其他部分的总线接口连接。在这种实施例中,单元1510可以因此包括总线接口单元1520,所述总线接口单元用于通过互连、处理器内总线、处理器间总线或其他通信总线、端口或线路进行通信。总线接口单元1520可以提供接口连接以便执行例如用于在执行实体1565与系统中在指令架构1500外部的部分之间进行数据传送的存储器和输入/输出地址的生成。
为了进一步促进其功能,总线接口单元1520可以包括中断控制和分配单元1511,所述中断控制和分配单元用于生成到处理器或电子装置的其他部分的中断和其他通信。在一个实施例中,总线接口单元1520可以包括处理多个处理核的高速缓存访问和一致性的监听控制单元1512。在进一步的实施例中,为了提供这种功能,监听控制单元1512可以包括处理不同高速缓存之间的信息交换的高速缓存间传送单元。在另一个进一步的实施例中,监听控制单元1512可以包括一个或多个监听过滤器1514,所述监听过滤器监测其他高速缓存(未示出)的一致性以使得高速缓存控制器(诸如单元1510)不必直接执行这种监测。单元1510可以包括用于对指令架构1500的动作进行同步的任何合适数量的定时器1515。而且,单元1510可以包括AC端口1516。
存储器系统1540可以包括用于对指令架构1500的处理需求的信息进行存储的任何合适数量和种类的机制。在一个实施例中,存储器系统1540可以包括用于存储信息的加载存储单元1530,比如写入存储器或寄存器或者从存储器或寄存器读回的缓冲器。在另一实施例中,存储器系统1540可以包括转换后备缓冲器(TLB)1545,所述TLB提供物理地址与虚拟地址之间的地址值的查找。在又另一个实施例中,存储器系统1540可以包括用于促进对虚拟存储器的访问的存储器管理单元(MMU)1544。在还另一个实施例中,存储器系统1540可以包括预取器1543,所述预取器用于在实际需要执行来自存储器的指令之前请求这种指令以便减少等待时间。
指令架构1500用于执行指令的操作可以通过不同级来执行。例如,使用单元1510指令预取级1530可以通过预取器1543来访问指令。所检索的指令可以存储在指令高速缓存1532中。预取级1530可以启用用于快速循环模式的选项1531,其中,形成足够小以适应在给定高速缓存内的循环的一系列指令被执行。在一个实施例中,可以在无需访问来自例如高速缓存1532的附加指令的情况下执行这种执行。可以由例如分支预测单元1535来判定将预取什么指令,所述分支预测单元可以访问全局历史1536中的执行指示、目标地址1537的指示或返回堆栈1538的内容以判定接下来将执行代码分支1557中的哪个。这种分支可能有可能作为结果来预取。分支1557可以通过如下所述的操作的其他级来产生。指令预取级1530可以向双指令解码级1550提供指令以及关于未来指令的任何预测。
双指令解码级1550可以将所接收指令转换成可以执行的基于微代码的指令。双指令解码级1550每个时钟周期可以同时解码两条指令。此外,双指令解码级1550可以将其结果传递至寄存器重命名级1555。另外,双指令解码级1550可以根据其对微代码的解码和最终执行来确定任何所产生的分支。这种结果可以被输入到分支1557中。
寄存器重命名级1555可以将对虚拟寄存器或其他资源的引用转换为对物理寄存器或资源的引用。寄存器重命名级1555可以包括对寄存器池1556中的这种映射的指示。寄存器重命名级1555可以在接收到指令时改变所述指令并且将结果发送至发布级1560。
发布级1560可以将命令发布或分派至执行实体1565。这种发布可以以乱序的方式来执行。在一个实施例中,在发布级1560,多条指令可以在被执行之前被保持。发布级1560可以包括用于保持这种多个命令的指令队列1561。可以基于诸如用于执行给定指令的资源的可用性和适用性等任何可接受的标准通过发布级1560将指令发布至特定处理实体1565。在一个实施例中,发布级1560可以对指令队列1561内的指令重新排序,从而使得第一个所接收的指令可能不是第一个被执行的指令。基于对指令队列1561的排序,可以将附加分支信息提供至分支1557。发布级1560可以将指令传递至执行实体1565以供执行。
在执行时,回写级1570可将数据写入寄存器、队列或指令集架构1500的其他结构以传达给定命令的完成。取决于在发布级1560中安排的指令顺序,回写级1570的操作可以使附加指令能够被执行。可以由跟踪单元1575对指令集架构1500的执行进行监测或调试。
图16是根据本公开的实施例的用于处理器的指令集架构的执行流水线1600的框图。执行流水线1600可以展示例如图15的指令架构1500的操作。
执行流水线1600可以包括步骤或操作的任何合适的组合。在1605中,可以预测接下来将被执行的分支。在一个实施例中,这种预测可以基于之前对指令的执行及其结果。在1610中,与经预测的执行分支相对应的指令可以被加载到指令高速缓存中。在1615中,可以取出指令高速缓存中的一条或多条这种指令以供执行。在1620中,已经取出的指令可以被解码成微代码或更具体的机器语言。在一个实施例中,可以同时对多条指令进行解码。在1625中,可以重分配对寄存器或经解码指令内的其他资源的引用。例如,对虚拟寄存器的引用可以用对相应物理寄存器的引用来替代。在1630中,可以将指令分派至队列以供执行。在1640处,可以执行指令。这种执行可以以任何合适的方式来进行。在1650中,可以将指令发布至合适的执行实体。执行指令的方式可以取决于执行所述指令的具体实体。例如,在1655处,ALU可以执行算术功能。ALU可以利用单个时钟周期以及两个移位器来进行其操作。在一个实施例中,可以采用两个ALU,并且因此可以在1655处执行两条指令。在1660处,可以确定所产生分支。程序计数器可以用于指定所述分支将前往的目的地。可以在单个时钟周期内执行1660。在1665处,可以由一个或多个FPU来执行浮点算术。浮点运算可能需要多个时钟周期来执行,比如两个周期到十个周期。在1670处,可以执行乘法运算和除法运算。这种运算可以在四个时钟周期内执行。在1675处,可以执行对寄存器或流水线1600的其他部分的加载和存储操作。这种操作可以包括加载和存储地址。这种运算可以在四个时钟周期内执行。在1680处,可以按照所产生操作1655至1675所要求的那样来执行回写操作。
图17是根据本公开的实施例的用于利用处理器1710的电子装置1700的框图。电子装置1700可以包括例如笔记本、超极本、计算机、塔式服务器、机架式服务器、刀片服务器、膝上型计算机、台式机、平板计算机、移动装置、电话、嵌入式计算机或任何其他合适的电子装置。
电子装置1700可以包括通信地耦合至任何合适数量或种类的组件、外围装置、模块或装置的处理器1710。这种耦合可以通过任何合适种类的总线或接口来实现,诸如I2C总线、系统管理总线(SMBus)、低引脚数(LPC)总线、SPI、高清晰度音频(HDA)总线、串行高级技术附件(SATA)总线、USB总线(版本1、2、3)或通用异步接收器/发射器(UART)总线。
这样的组件可以包括例如显示器1724、触摸屏1725、触摸板1730、近场通信(NFC)单元1745、传感器中枢1740、热传感器1746、快速芯片组(EC)1735、可信平台模块(TPM)1738、BIOS/固件/闪存1722、数字信号处理器1760、驱动器1720(诸如固态盘(SSD)或硬盘驱动器(HDD))、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)1755、诸如USB 3.0相机等相机1754或例如以LPDDR3标准实施的低功率双倍速率(LPDDR)存储器单元1715。这些组件可以各自以任何合适的方式来实施。
此外,在各个实施例中,其他组件可以通过以上所讨论的组件通信地耦合至处理器1710。例如,加速度计1741、环境光传感器(ALS)1742、罗盘1743和陀螺仪1744可以通信地耦合至传感器中枢1740。热传感器1739、风扇1737、键盘1736和触摸板1730可以通信地耦合至EC 1735。扬声器1763、耳机1764和麦克风1765可以通信地耦合至音频单元1762,所述音频单元进而可以通信地耦合至DSP 1760。音频单元1762可以包括例如音频编解码器和D类放大器。SIM卡1757可以通信地耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756等组件可以以下一代形状因子(NGFF)来实施。
图18是根据本公开的实施例的用于实施用于安全指令执行流水线的指令和逻辑的系统1800的展示。在一个实施例中,系统1800可以包括在不公开代码中实施算法的代码的情况下通过安全指令执行流水线来执行代码。在其他系统中,可以通过专用知识产权核或现场可编程门阵列完成安全执行。然而,这些增加了复杂性和电力需求。系统1800可以利用主处理器1806来执行其自身内的安全指令执行流水线。此外,在其他系统中,代码可以被加密,但是在执行之前,代码可以不受阻碍地或者以受制于边信道泄漏的方式在系统的部分之间转移。例如,可以回归地或通过逆向工程学习单独操作码的功率特征。在进一步实施例中,系统1800可以利用专有的、经加密代码来防止边信道泄漏。系统1800可以通过处理器1806内的安全流水线执行来执行这种任务。
在一个实施例中,可以通过贯穿执行维持经加密的操作码来执行安全流水线执行。可以通过将操作码从默认(未经加密)操作码表重定向解码到多个不同经加密操作码表之一来实现对经加密操作码的翻译和解码。重定向可以基于密钥索引。每个密钥索引可以指向某个对称密钥,在系统1800上电时,使用所述对称密钥创建或加载经加密操作码表。
在一个实施例中,密钥可以包括由专有代码开发者拥有的加索引的对称密钥。代码开发者可以为经加密的所有命令分组选择单一密钥,或者选择将在每分组的基础上变化的密钥。在另一个实施例中,经加密的流或分组包括经加密的散列连同用于完整性验证的密钥。此密钥可以包括由专有代码开发者拥有的HMAC密钥。因此,在一些实施例中,代码开发者可以管理针对命令分组设置的对称密钥以及用于完整性验证的HMAC密钥两者。
在一个实施例中,可以通过待由处理器1806执行的代码内的开始图案触发安全流水线执行。可以通过待由处理器1806执行的代码内的结束图案停止安全流水线执行。在另一个实施例中,可以通过待由处理器1806执行的代码内的特定指令触发或停止安全流水线执行。
待执行的代码可以由处理器1806执行,这可以以任何合适的方式实施,包括部分地由如图1至图17中描述的元件实施。可以通过电路系统实施处理器1806的部件。处理器1806可以包括用于执行流水线的各种部件。处理器1806可以包括多个核1826、引擎和无序处理。处理器1806可以包括用于从包括指令流1804的存储器接收或取出指令的前端1808。前端1808可以包括用于使用要执行的可能指令有效地填充流水线的取出器1810。前端1808可以包括用于将指令解码成操作码以供执行,确定其意义,获得负面效应、所需数据、所消耗数据以及将产生数据的解码器1812。二进制转换器1814可以用于优化代码。用于压缩和旋转的指令可以驻留在如由编译器1804产生的指令流1802中,或者可以由二进制转换器1814创建。信息可以传送至执行流水线中的无序或有序执行引擎。执行流水线可以包括重命名和分配单元1818,所述重命名和分配单元用于重命名用于无序执行的指令、将这种重命名约定存储在与引退单元1824共同延伸的重排序缓冲器(ROB)中从而使得指令可以似乎以其被接收的顺序引退。重命名和分配单元1818可以进一步分配资源以便并行地执行指令。调度器1820可以调度指令以便在输入可用时在执行单元1822上执行。执行单元1822的输出可以在ROB中排队。前端1808可以尝试预期将防止指令以连续流执行的任何行为并且可以取出可以执行的指令流。当存在例如误预测时,ROB可以通知前端,并且不同指令集可以替代地被执行。前端1808可以存储数据,如用于分支预测的元数据。可以从包括多级高速缓存的存储器子系统中拉出指令和参数并且可以向其中写入结果。
在一个实施例中,安全或加密流水线可以包括解码器1812。解码器1812可以使用经加密操作码、密钥索引、现时数以及整个命令分组的经加密散列(HMAC)来解析命令分组。解码器1812可以然后使用HMAC和现时数验证或质询命令分组完整性。解码器1812可以然后将经加密命令操作码识别和重定向到由密钥索引标识的经加密操作码表。
代码的开发者可以使代码1802变成经加密代码1804。经加密代码1804可以包括将由处理器1806内的安全或经加密指令流水线执行的代码。代码1802可以以任何合适的方式转换成经加密代码1804。在一个实施例中,代码1802可以通过使用编译器1832转换成经加密代码1804。可以使用一组密钥对代码1802进行加密。这种密钥或其对可以存储在系统1800中以用于解码。密钥可以存储在例如非易失性区域1816或可编程熔丝区域1817中。这些存储位置可能仅可由处理器1806访问并且驻留在处理器1806内。密钥可以在制造或设置处理器1806期间存储,或者可以通过与代码1802的开发者的安全密钥交换过程而被更新。所述密钥可以被直接编程或者通过使用非对称密码建立信任协议。密钥可以对特定开发者或发行人是唯一的。密钥可以是非对称的。因此,n个密钥的组1828可以存储在处理器1806上。
在一个实施例中,代码1802的开发者可以使用带密钥散列消息认证代码(HMAC)密钥。HMAC密钥可以存储在处理器1802上的位置。HMAC密钥可以用于在命令执行期间进行完整性校验。
在处理器1806上电时,多个经加密操作码表1830可以生成并且对经加密指令流水线可用。每个操作码表1830可以对各种可用或允许的操作码(如NOP、HLT或其他合适的操作码)加索引。在另一个实施例中,可以针对在处理器1806上可用的n个密钥1828中的每一个生成操作码表1830。在各操作码表1830中,给定操作码(如NOP)可以具有不同的十六进制值。
在编译时间处,在一个实施例中,经加密代码可以被分成相同大小的分组。每个分组可以包括头部信息。头部信息可以包括对将用于执行而在给定时间处发送至处理器1806的分组当中的分组唯一的密钥编号。第一分组可以包括用于标识经加密分组的开始的开始图案或指令。最后分组可以包括用于标识经加密分组的结束的结束图案或指令。分组可以包括命令分组的待执行的经签名散列或者命令分组的使用HMAC的经加密散列。
处理器1806可以被中断或以其他方式表示指令将由解码器1812特别解码为经加密指令。取出器1810可以标识开始图案。密钥编号、HMAC密钥以及开始和结束数据图案或指令可以作为输入参数存储到处理器1806的指令流水线。
在指令流水线处,在解码器1812操作之前,命令分组的完整性可以被质询。可以使用HMAC密钥和命令头部中的散列校验完整性。可以执行重定向到与分组中的有效密钥相关联的查找操作码表1830。操作码可以被查找和执行。如果完整性失败,则可以调用威胁处理程序、中断或故障。
在一个实施例中,对操作码的执行可以被模糊化。为了在执行阶段期间模糊化功率特征,在寄存器中置位现时数量个位。这种寄存器可以被指定为功率模糊寄存器。随机位可以在执行阶段的每一阶段处被置位。模糊可以由在执行阶段中的每一阶段处写入现时数量个位所需要的随机功率耗散补偿引起。附加功率特征模糊寄存器可以添加到流水线的其他关键阶段。
在另一个实施例中,没有连续的命令分组可以具有同一密钥编号。在分派所有命令分组结束时,软件可以再次中断处理器以便通知取出电路系统查找结束图案。在检测结束图案时,处理器1806可以返回至正常执行,而解码器1812电路系统返回至默认解码查找值。
在又另一个实施例中,分组可以具有相同大小。可能更小的最后指令分组可以填充有NOP。
在解码查找期间,解码器1812可以检索作为输入的密钥索引、确定要访问操作码表1830中的哪个操作码表并且因此激活执行电路系统中的唯一操作码执行泳道。
图19是根据本公开的实施例的针对经加密代码1804生成的分组的更详细展示。经加密代码1804的片段可以包括一个或多个条目1914,每一个具有将根据给定密钥加密的一个或多个操作码1904。给定密钥可以在1906中被标识。在一个实施例中,密钥可能不直接指定,而是相反由与密钥1828中的条目相对应的密钥索引1906表示。条目1914还可以包括用于完整性验证的所生成的现时数1908。条目1914还可以包括命令分组的HMAC 1910。在一个实施例中,HMAC 1910是命令分组的经加密散列。经加密代码1804可以包括开始图案或指令1902以及结束图案或指令1912。
m个条目可以各自包括唯一密钥。这m个不同密钥可以选自n个不同密钥1828。
图20是根据本公开的实施例的由系统1800处理分组和操作的更详细展示。
在(1)处,取出器1810可以检测开始图案。取出器1810可以发送信号到解码器1812或执行流水线的经编码或经加密代码将被执行的其他部分。解码器1812可以转移到针对经加密代码的执行模式。
在(2)处,可以从例如存储设备1816、1817中加载HMAC密钥。
在(3)处,可以接收第一分组。分组可以包括条目1914。分组可以包括经加密命令、密钥索引、现时数和HMAC结果。在(4)处,HMAC结果可以用于评估分组。如果HMAC结果与实际执行HMAC过程的结果相匹配,则分组可以被验证。
在(5)处,解码器1812可以使用密钥索引来访问密钥1828以便选择适当的加密密钥。在(7)处,可以根据密钥索引选择操作码表1830。例如,如果密钥索引为一,并且因此为来自检索的密钥1828的第二密钥,则可以选择操作码表1830B。在(8)处,来自分组的经加密值可以用于查找操作码表中的值。例如,经加密值可以为0x00F4,这可以是操作码表1830B中针对HLT操作码的索引。在(9)处,可以返回操作码以供执行。
可以针对另外的分组重复(3)至(9)。取出器1810可以确定已经检测到结束图案或指令,并且解码器1812可以切换到正常模式。
图21是根据本公开的实施例的用于处理用于压缩和旋转的指令的方法2100的流程图。
可通过任何合适的准则来开始方法2100。此外,虽然方法2100描述特定元件的操作,但是方法2100可由任何合适的组合或类型的元件执行。例如,方法2100可由图1至图20中展示的元件或可操作用于实施方法2100的任何其他系统实施。如此,用于方法2100的优选初始化点和包括方法2100的元件的次序可以取决于选择的实施方式。在一些实施例中,一些元件可被可选地省略、重新组织、重复或组合。此外,方法2100的部分可以在其自身内并行地执行。
在2105处,可以接收经加密执行流水线操作的开始图案或指令。在2110处,作为响应,可以从存储器加载HMAC密钥。此外,可以加载经加密操作码表。在2115处,可以接收经加密分组。分组可以被解构以便获得经加密命令、密钥索引、现时数和HMAC结果。
在2120处,可以使用HMAC密钥和HMAC结果验证分组。还可以使用现时数。可以在发出质询之后应用验证。HMAC密钥可以应用于分组的部分以及与HMAC结果比较的结果。如果分组被验证,则方法2100可以继续。否则,可以生成中断、错误或其他故障。另外,现时数可以用于进一步质询分组的完整性或确保不可否认性。
在2125处,可以根据密钥索引标识密钥。密钥索引可以用于基于密钥索引查找由来自多个可能密钥的结构的密钥加密的操作码表。密钥可以对给定数据片段内的分组是唯一的。密钥可以与当前分组之前或之后紧接着接收的分组的密钥不同。
在2130处,来自命令分组的经加密操作码被重定向至使用由命令分组中的密钥索引引用的密钥加密的适当操作码表。
在2135处,在对应经加密操作码表中查找经加密操作码,并且将被分派的指令被唯一地标识。
在2140处,操作码可以被传递至执行流水线的剩余部分以供执行。随机位可以被写入寄存器以便模糊化由于执行特定操作码而产生的任何边信道特征。在2145处,可以判定是否已经接收到结束图案或指令。如果是,则方法2100可继续到2150。否则,方法2100可返回至2115。在2150处,可以重新开始正常取出和解码。在2155处,方法2100可以可选地在例如2105处重复或终止。
本文中公开的机制的实施例可以以硬件、软件、固件或这些实施途径的组合来实施。本公开的实施例可以被实施为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、以及至少一个输出装置。
可以将程序代码应用于输入指令以执行在此描述的功能并生成输出信息。所述输出信息可以以已知的方式应用于一个或多个输出装置。为了本申请的目的,处理系统可以包括具有处理器的任何系统,如例如;数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器。
程序代码可以以高级程序或面向对象的编程语言来实施,以与处理系统通信。如果需要,程序代码还可以以汇编或机器语言实施。事实上,在此描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。
可以由机器可读介质上所存储的表示性指令来实施至少一个实施例的一个或多个方面,所述指令代表处理器内的各种逻辑,所述指令当被机器读取时使所述机器制作用于执行本文中所描述的技术的逻辑。这种表示(被称为“IP核”)可以被存储在有形的机器可读介质上并提供给各顾客或制造设施以加载至实际制作所述逻辑或处理器的制作机器中。
这样的机器可读存储介质可以包括但不限于:由机器或设备制造或形成的制品的非暂态有形的安排,包括如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘;半导体设备,比如,只读存储器(ROM);随机存取存储器(RAM),比如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦除可编程只读存储器(EPROM);闪存存储器;电可擦除可编程只读存储器(EEPROM);磁或光卡;或者适合用于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还可以包括包含指令或包含设计数据(比如硬件描述语言(HDL))的非暂态有形机器可读介质,所述非暂态有形机器可读介质限定本文中描述的结构、电路、设备、处理器和/或系统特征。这类实施例也可以被称为程序产品。
在一些情况下,可以使用指令转换器将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真或以其他方式将指令转换为有待由核处理的一个或多个其他指令。可以在软件、硬件、固件或其组合中实施指令转换器。指令转换器可以处于处理器上、处理器外、或者部分地处于处理器上并且部分地处于处理器外。
因此,公开了用于执行根据至少一个实施例的一条或多条指令的技术。虽然已经描述并在附图中示出了某些示例性实施例,但应当理解的是,此类实施例仅是说明性的并且不限制其他实施例,并且这类实施例不限于所示和所描述的特定构造和安排,因为在研究本公开时本领域普通技术人员将想到各种其他修改。在发展迅速且无法轻易预见进一步改进的此技术领域中,在不违背本公开的原理或所附权利要求书的范围的情况下,在技术进步的帮助下,所公开的实施例在安排和细节上可轻易更改。
本公开的一些实施例包括一种处理器。在这些实施例中的至少一些实施例中,所述处理器可以包括:前端,用于接收经加密指令序列;以及解码器。所述解码器可以包括:第一逻辑,用于从所述经加密指令序列中的第一分组中标识第一经加密命令;第二逻辑,用于从所述第一分组中标识第一密钥索引;第三逻辑,用于确定具有所述第一密钥索引的第一经加密操作码查找表;第四逻辑,用于基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经加密操作码;以及第五逻辑,用于转发所述第一经加密操作码以供解码和执行。结合以上实施例中的任何实施例,所述处理器还可以包括第六逻辑,用于写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率。结合以上实施例中的任何实施例,所述经加密指令序列可以包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二年经加密命令,并且所述经加密指令序列的所述密钥索引和对应密钥关于彼此是唯一的。结合以上实施例中的任何实施例,所述处理器可以包括多个经加密操作码查找表,并且每个经加密操作码查找表可以包括针对所述第一经解码操作码的条目。所述第一密钥索引可以标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。结合以上实施例中的任何实施例,所述第一密钥索引可以标识结构中的多个加密密钥当中的加密密钥,并且所述加密密钥可以对所述第一经加密操作码查找表进行加密。结合以上实施例中的任何实施例,所述经加密指令序列可以包括:开始图案,用于指示经加密解码操作的启动;多个分组,每个分组包括经加密操作码;以及结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。结合以上实施例中的任何实施例,所述处理器可以包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目。所述第一密钥索引可以标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表,并且针对所述第一经解码操作码的所述条目可以在所述多个经加密操作码查找表之间被唯一地加索引。
本公开的一些实施例包括一种方法。在这些实施例中的至少一些实施例中,所述方法可以包括:接收经加密指令序列;从所述经加密指令序列中的第一分组中标识第一经加密命令;从所述第一分组中标识第一密钥索引;确定具有所述第一密钥索引的第一经加密操作码查找表;基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经解码操作码;以及转发所述第一经解码操作码以供执行。结合以上实施例中的任何实施例,所述方法还可以包括写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率。结合以上实施例中的任何实施例,所述经加密指令序列可以包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二经加密命令。所述经加密指令序列的所述密钥索引可以关于彼此是唯一的。结合以上实施例中的任何实施例,所述第一经加密操作码查找表可以在多个经加密操作码查找表当中,每个经加密操作码查找表包括针对所述第一经解码操作码的条目。所述第一密钥索引可以标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。结合以上实施例中的任何实施例,所述第一密钥索引可以标识结构中的多个加密密钥当中的加密密钥,并且所述加密密钥可以对所述第一经加密操作码查找表进行加密。结合以上实施例中的任何实施例,所述经加密指令序列可以包括:开始图案,用于指示经加密解码操作的启动;多个分组,每个分组具有经加密操作码;以及结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。
本公开的一些实施例包括一种系统。在这些实施例中的至少一些实施例中,所述系统可以包括:前端,用于接收经加密指令序列;以及解码器。所述解码器可以包括:第一逻辑,用于从所述经加密指令序列中的第一分组中标识第一经加密命令;第二逻辑,用于从所述第一分组中标识第一密钥索引;第三逻辑,用于确定具有所述第一密钥索引的第一经加密操作码查找表;第四逻辑,用于基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经解码操作码;以及第五逻辑,用于转发所述第一经解码操作码以供执行。结合以上实施例中的任何实施例,所述系统还可以包括第六逻辑,用于写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率。结合以上实施例中的任何实施例,所述经加密指令序列可以包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二经加密命令。所述经加密指令序列的所述密钥索引可以关于彼此是唯一的。结合以上实施例中的任何实施例,所述系统可以包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目。所述第一密钥索引可以标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。结合以上实施例中的任何实施例,所述第一密钥索引可以标识结构中的多个加密密钥当中的加密密钥,并且所述加密密钥可以对所述第一经加密操作码查找表进行加密。结合以上实施例中的任何实施例,所述经加密指令序列可以包括:开始图案,用于指示经加密解码操作的启动;多个分组,每个分组包括经加密操作码;以及结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。结合以上实施例中的任何实施例,所述系统可以包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目。所述第一密钥索引可以标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表,并且针对所述第一经解码操作码的所述条目可以在所述多个经加密操作码查找表之间被唯一地加索引。
本公开的一些实施例包括一种用于执行指令的系统。在这些实施例中的至少一些实施例中,所述系统可以包括:用于接收经加密指令序列的装置;用于从所述经加密指令序列中的第一分组中标识第一经加密命令的装置;用于从所述第一分组中标识第一密钥索引的装置;用于确定具有所述第一密钥索引的第一经加密操作码查找表的装置;用于基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经解码操作码的装置;以及用于转发所述第一经解码操作码以供执行的装置。结合以上实施例中的任何实施例,所述系统可以包括用于写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率的装置。结合以上实施例中的任何实施例,所述经加密指令序列可以包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二经加密命令。所述经加密指令序列的所述密钥索引可以关于彼此是唯一的。结合以上实施例中的任何实施例,所述第一经加密操作码查找表可以在多个经加密操作码查找表当中,每个经加密操作码查找表包括针对所述第一经解码操作码的条目。所述第一密钥索引可以标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。结合以上实施例中的任何实施例,所述第一密钥索引可以标识结构中的多个加密密钥当中的加密密钥,并且所述加密密钥可以对所述第一经加密操作码查找表进行加密。结合以上实施例中的任何实施例,所述经加密指令序列可以包括:开始图案,用于指示经加密解码操作的启动;多个分组,每个分组具有经加密操作码;以及结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。

Claims (21)

1.一种处理器,包括:
前端,用于接收经加密指令序列;
解码器,包括:
第一逻辑,用于从所述经加密指令序列中的第一分组中标识第一经加密命令;
第二逻辑,用于从所述第一分组中标识第一密钥索引;
第三逻辑,用于确定具有所述第一密钥索引的第一经加密操作码查找表;
第四逻辑,用于基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经加密操作码;以及
第五逻辑,用于转发所述第一经加密操作码以供解码和执行。
2.如权利要求1所述的处理器,其特征在于,所述处理器进一步包括第六逻辑,用于写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率。
3.如权利要求1所述的处理器,其特征在于:
所述经加密指令序列包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二经加密命令;并且
所述经加密指令序列的所述密钥索引和对应密钥关于彼此是唯一的。
4.如权利要求1所述的处理器,其特征在于:
所述处理器包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目;并且
所述第一密钥索引标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。
5.如权利要求1所述的处理器,其特征在于:
所述第一密钥索引标识结构中的多个加密密钥当中的加密密钥;并且
所述加密密钥对所述第一经加密操作码查找表进行加密。
6.如权利要求1所述的处理器,其特征在于,所述经加密指令序列包括:
开始图案,用于指示经加密解码操作的启动;
多个分组,每个分组包括经加密操作码;以及
结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。
7.如权利要求1所述的处理器,其特征在于:
所述处理器包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目;
所述第一密钥索引标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表;并且
针对所述第一经解码操作码的所述条目在所述多个经加密操作码查找表之间被唯一地加索引。
8.一种方法,包括:
接收经加密指令序列;
从所述经加密指令序列中的第一分组中标识第一经加密命令;
从所述第一分组中标识第一密钥索引;
确定具有所述第一密钥索引的第一经加密操作码查找表;
基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经解码操作码;以及
转发所述第一经解码操作码以供执行。
9.如权利要求8所述的方法,其特征在于进一步包括:写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率。
10.如权利要求8所述的方法,其特征在于:
所述经加密指令序列包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二经加密命令;并且
所述经加密指令序列的所述密钥索引关于彼此是唯一的。
11.如权利要求8所述的方法,其特征在于:
所述第一经加密操作码查找表在多个经加密操作码查找表当中,每个经加密操作码查找表包括针对所述第一经解码操作码的条目;并且
所述第一密钥索引标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。
12.如权利要求8所述的方法,其特征在于:
所述第一密钥索引标识结构中的多个加密密钥当中的加密密钥;并且
所述加密密钥对所述第一经加密操作码查找表进行加密。
13.如权利要求8所述的方法,其特征在于,所述经加密指令序列包括:
开始图案,用于指示经加密解码操作的启动;
多个分组,每个分组具有经加密操作码;以及
结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。
14.一种系统,包括:
前端,用于接收经加密指令序列;
解码器,包括:
第一逻辑,用于从所述经加密指令序列中的第一分组中标识第一经加密命令;
第二逻辑,用于从所述第一分组中标识第一密钥索引;
第三逻辑,用于确定具有所述第一密钥索引的第一经加密操作码查找表;
第四逻辑,用于基于所述第一密钥索引从所述第一经加密操作码查找表中查找第一经解码操作码;以及
第五逻辑,用于转发所述第一经解码操作码以供执行。
15.如权利要求14所述的系统,其特征在于,所述系统进一步包括第六逻辑,用于写入随机位连同执行所述第一经解码操作码以便模糊化执行所述第一经解码操作码所需要的功率。
16.如权利要求14所述的系统,其特征在于:
所述经加密指令序列包括多个第二分组,每个第二分组包括对应第二密钥索引和对应第二经加密命令;并且
所述经加密指令序列的所述密钥索引关于彼此是唯一的。
17.如权利要求14所述的系统,其特征在于:
所述系统包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目;并且
所述第一密钥索引标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表。
18.如权利要求14所述的系统,其特征在于:
所述第一密钥索引标识结构中的多个加密密钥当中的加密密钥;并且
所述加密密钥对所述第一经加密操作码查找表进行加密。
19.如权利要求14所述的系统,其特征在于,所述经加密指令序列包括:
开始图案,用于指示经加密解码操作的启动;
多个分组,每个分组包括经加密操作码;以及
结束图案,用于指示经加密解码操作的结束以及未经加密解码操作的重新开始。
20.如权利要求14所述的系统,其特征在于:
所述系统包括多个经加密操作码查找表,每个经加密操作码查找表包括针对所述第一经解码操作码的条目;
所述第一密钥索引标识所述多个经加密操作码查找表当中的所述第一经加密操作码查找表;并且
针对所述第一经解码操作码的所述条目在所述多个经加密操作码查找表之间被唯一地加索引。
21.一种设备,包括用于执行权利要求8至13的方法中的任一种的装置。
CN201680067694.8A 2015-12-18 2016-11-15 用于安全指令执行流水线的指令和逻辑 Active CN108351779B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/974,758 US10049057B2 (en) 2015-12-18 2015-12-18 Instruction and logic for secure instruction execution pipeline
US14/974,758 2015-12-18
PCT/US2016/061957 WO2017105714A1 (en) 2015-12-18 2016-11-15 Instruction and logic for secure instruction execution pipeline

Publications (2)

Publication Number Publication Date
CN108351779A true CN108351779A (zh) 2018-07-31
CN108351779B CN108351779B (zh) 2023-09-22

Family

ID=59057294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680067694.8A Active CN108351779B (zh) 2015-12-18 2016-11-15 用于安全指令执行流水线的指令和逻辑

Country Status (5)

Country Link
US (1) US10049057B2 (zh)
EP (1) EP3391196B1 (zh)
CN (1) CN108351779B (zh)
TW (1) TWI739772B (zh)
WO (1) WO2017105714A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614146A (zh) * 2018-11-14 2019-04-12 西安翔腾微电子科技有限公司 一种局部跳转指令取指方法及装置
CN110865946A (zh) * 2018-08-28 2020-03-06 联发科技股份有限公司 计算机网络管理方法和相应地计算机网络装置
CN113805942A (zh) * 2021-08-23 2021-12-17 北京奕斯伟计算技术有限公司 处理器核、处理器及指令处理方法
TWI779923B (zh) * 2021-11-11 2022-10-01 南亞科技股份有限公司 圖案驗證系統及其操作方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10049057B2 (en) 2015-12-18 2018-08-14 Intel Corporation Instruction and logic for secure instruction execution pipeline
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10452564B2 (en) * 2017-04-25 2019-10-22 Entit Software Llc Format preserving encryption of object code
US10467405B2 (en) 2017-04-25 2019-11-05 Micro Focus Llc Format preserving encryption of floating point data
US10623385B2 (en) * 2018-03-16 2020-04-14 At&T Mobility Ii Llc Latency sensitive tactile network security interfaces
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US11188681B2 (en) * 2019-04-08 2021-11-30 International Business Machines Corporation Malware resistant computer
US11157423B2 (en) * 2019-05-02 2021-10-26 Dell Products L.P. Pipelined-data-transform-enabled data mover system
US20220197658A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Isa opcode parameterization and opcode space layout randomization
US20220207155A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Instruction support for saving and restoring key information
US11895244B2 (en) * 2021-07-27 2024-02-06 Dell Products L.P. Secure high-speed communication interface between a basic input and output system and a service processor
US11934310B2 (en) 2022-01-21 2024-03-19 Centaur Technology, Inc. Zero bits in L3 tags

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779101B1 (en) * 2000-03-07 2004-08-17 University Of Washington Method and apparatus for processing compressed VLIW subinstruction opcodes
EP1855476A2 (en) * 2006-05-11 2007-11-14 Broadcom Corporation System and method for trusted data processing
US20070266438A1 (en) * 2006-05-09 2007-11-15 Stephane Rodgers Method and System For Memory Attack Protection To Achieve a Secure Interface
US20120260107A1 (en) * 2011-04-08 2012-10-11 Infineon Technologies Ag Instruction Encryption/Decryption Arrangement and Method with Iterative Encryption/Decryption Key Update
CN103761070A (zh) * 2010-05-25 2014-04-30 威盛电子股份有限公司 微处理器以及相关的操作方法、以及加密方法
CN104012030A (zh) * 2011-12-21 2014-08-27 英特尔公司 用于保护对称加密密钥的系统及方法
CN104050077A (zh) * 2013-03-15 2014-09-17 英特尔公司 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑
CN104252426A (zh) * 2013-06-28 2014-12-31 国际商业机器公司 利用自加密驱动器加密盘驱动器上的数据的方法和系统
US20150043729A1 (en) * 2013-08-08 2015-02-12 Vinodh Gopal Instruction and logic to provide a secure cipher hash round functionality
US20150100797A1 (en) * 2007-03-28 2015-04-09 Intel Corporation Flexible architecture and instruction for advanced encryption standard (aes)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735575B1 (en) * 1999-06-02 2004-05-11 Kara Technology Incorporated Verifying the authenticity of printed documents
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US9292290B2 (en) 2013-07-23 2016-03-22 International Business Machines Corporation Instruction set architecture with opcode lookup using memory attribute
US10049057B2 (en) 2015-12-18 2018-08-14 Intel Corporation Instruction and logic for secure instruction execution pipeline

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779101B1 (en) * 2000-03-07 2004-08-17 University Of Washington Method and apparatus for processing compressed VLIW subinstruction opcodes
US20070266438A1 (en) * 2006-05-09 2007-11-15 Stephane Rodgers Method and System For Memory Attack Protection To Achieve a Secure Interface
EP1855476A2 (en) * 2006-05-11 2007-11-14 Broadcom Corporation System and method for trusted data processing
US20150100797A1 (en) * 2007-03-28 2015-04-09 Intel Corporation Flexible architecture and instruction for advanced encryption standard (aes)
CN103761070A (zh) * 2010-05-25 2014-04-30 威盛电子股份有限公司 微处理器以及相关的操作方法、以及加密方法
US20140195822A1 (en) * 2010-05-25 2014-07-10 Via Technologies, Inc. Microprocessor that securely decrypts and executes encrypted instructions
US20120260107A1 (en) * 2011-04-08 2012-10-11 Infineon Technologies Ag Instruction Encryption/Decryption Arrangement and Method with Iterative Encryption/Decryption Key Update
CN104012030A (zh) * 2011-12-21 2014-08-27 英特尔公司 用于保护对称加密密钥的系统及方法
CN104050077A (zh) * 2013-03-15 2014-09-17 英特尔公司 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑
CN104252426A (zh) * 2013-06-28 2014-12-31 国际商业机器公司 利用自加密驱动器加密盘驱动器上的数据的方法和系统
US20150006910A1 (en) * 2013-06-28 2015-01-01 International Business Machines Corporation Multiple volume encryption of storage devices using self encrypting drive (sed)
US20150043729A1 (en) * 2013-08-08 2015-02-12 Vinodh Gopal Instruction and logic to provide a secure cipher hash round functionality

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
封斌等: "AES快速算法的扩展指令集实现", 《华南理工大学学报(自然科学版)》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110865946A (zh) * 2018-08-28 2020-03-06 联发科技股份有限公司 计算机网络管理方法和相应地计算机网络装置
CN110865946B (zh) * 2018-08-28 2023-11-03 联发科技股份有限公司 计算机网络管理方法和相应地计算机网络装置
CN109614146A (zh) * 2018-11-14 2019-04-12 西安翔腾微电子科技有限公司 一种局部跳转指令取指方法及装置
CN109614146B (zh) * 2018-11-14 2021-03-23 西安翔腾微电子科技有限公司 一种局部跳转指令取指方法及装置
CN113805942A (zh) * 2021-08-23 2021-12-17 北京奕斯伟计算技术有限公司 处理器核、处理器及指令处理方法
TWI779923B (zh) * 2021-11-11 2022-10-01 南亞科技股份有限公司 圖案驗證系統及其操作方法

Also Published As

Publication number Publication date
EP3391196A4 (en) 2019-11-13
EP3391196B1 (en) 2023-08-23
EP3391196A1 (en) 2018-10-24
CN108351779B (zh) 2023-09-22
US20170177504A1 (en) 2017-06-22
TW201725509A (zh) 2017-07-16
US10049057B2 (en) 2018-08-14
TWI739772B (zh) 2021-09-21
WO2017105714A1 (en) 2017-06-22

Similar Documents

Publication Publication Date Title
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
TWI733710B (zh) 用於重複發生相鄰聚集的處理器、方法和單元
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN108292232A (zh) 用于加载索引和分散操作的指令和逻辑
CN107209722A (zh) 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
CN108139905A (zh) 用于从持久存储器预取信息的指令和逻辑
CN108351863A (zh) 用于可编程结构层级结构和高速缓存的指令和逻辑
TW201729078A (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
CN105745630B (zh) 用于在集群宽执行机器中的存储器访问的指令和逻辑
CN108351835A (zh) 用于高速缓存控制操作的指令和逻辑
CN107003921A (zh) 具有有限状态机控制的可重配置测试访问端口
CN108369513A (zh) 用于加载-索引-和-收集操作的指令和逻辑
CN108351784A (zh) 用于在乱序处理器中进行有序处理的指令和逻辑
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
CN108292293A (zh) 用于得到多个向量元素操作的指令和逻辑
CN108369518A (zh) 用于位字段寻址和插入的指令和逻辑
CN108369571A (zh) 用于偶数和奇数向量get操作的指令和逻辑
CN108351785A (zh) 用于部分减少操作的指令和逻辑
CN109791493A (zh) 用于乱序集群化解码中的负载平衡的系统和方法
CN108431770A (zh) 用于加速集合运算的硬件内容关联数据结构
CN108292271A (zh) 用于向量置换的指令和逻辑
CN108701101A (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