CN114661346A - 用于平方差之和的指令和逻辑 - Google Patents

用于平方差之和的指令和逻辑 Download PDF

Info

Publication number
CN114661346A
CN114661346A CN202111353168.7A CN202111353168A CN114661346A CN 114661346 A CN114661346 A CN 114661346A CN 202111353168 A CN202111353168 A CN 202111353168A CN 114661346 A CN114661346 A CN 114661346A
Authority
CN
China
Prior art keywords
instruction
ssd
vector
processor
offset
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.)
Pending
Application number
CN202111353168.7A
Other languages
English (en)
Inventor
迪普蒂·阿加瓦尔
迈克尔·埃斯皮格
切奇博·努拉
罗伯特·瓦伦泰恩
马克·查尼
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 CN114661346A publication Critical patent/CN114661346A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Nonlinear Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Power Sources (AREA)

Abstract

本公开涉及用于平方差之和的指令和逻辑。在一实施例中,一种处理器包括:取得电路,用于取得指令,这些指令包括平方差之和(SSD)指令;解码电路,用于对SSD指令进行解码;以及执行电路,用于在解码的SSD指令的执行期间,基于多个输入向量生成SSD输出向量,该SSD输出向量包括多个平方差值。描述和要求保护了其他实施例。

Description

用于平方差之和的指令和逻辑
技术领域
实施例概括而言涉及计算机处理器。更具体而言,实施例涉及处理逻 辑、微处理器和关联的指令集体系结构,它们当被处理器或其他处理逻辑 执行时,执行平方差之和(sum of square differences)计算。
背景技术
指令集,或者说指令集体系结构(instruction set architecture,ISA), 是与编程有关的计算机体系结构的一部分,并且可包括原生数据类型、指 令、寄存器体系结构、寻址模式、存储器体系结构、中断和异常处理、以 及外部输入和输出(I/O)。ISA与微体系结构是有区别的,微体系结构是 实现指令集的处理器的内部设计。具有不同的微体系结构的处理器可以共 享共同的指令集。在一些示例中,ISA可包括用于存储器操作、算术操作、 逻辑操作、控制操作等等的指令。
发明内容
根据本公开的一个实施例,提供了一种用于执行指令的处理器,包括: 取得电路,用于取得指令,所述指令包括平方差之和(SSD)指令;解码 电路,用于对所述SSD指令进行解码;以及执行电路,用于在解码的SSD 指令的执行期间,基于多个输入向量生成SSD输出向量,所述SSD输出 向量包括多个平方差值。
根据本公开的另一个实施例,提供了一种用于执行指令的方法,包括: 由处理器取得软件程序中包括的平方差之和(SSD)指令;由所述处理器 对所述SSD指令进行解码,以获得解码的SSD指令;并且由所述处理器 执行所述解码的SSD指令以基于多个输入向量生成SSD输出向量,所述 SSD输出向量包括多个平方差值。
根据本公开的另一个实施例,提供了一种计算设备,包括:一个或多 个处理器;以及存储器,在其中存储有多个指令,所述多个指令在由所述 一个或多个处理器执行时,使得所述计算设备执行上述方法。
根据本公开的另一个实施例,提供了至少一个机器可读介质,在其上 存储有数据,所述数据在由至少一个机器使用时,使得所述至少一个机器 执行上述方法。
根据本公开的另一个实施例,提供了一种电子设备,包括用于执行上 述方法的装置。
根据本公开的另一个实施例,提供了一种用于执行指令的系统,包括: 处理器,包括:取得电路,用于取得指令,所述指令包括平方差之和 (SSD)指令;解码电路,用于对所述SSD指令进行解码;以及执行电路, 用于在解码的SSD指令的执行期间,基于多个输入向量生成SSD输出向 量,所述SSD输出向量包括多个平方差值;以及外部存储器,与所述处理 器相耦合。
附图说明
图1是根据本发明的实施例的系统的一部分的框图。
图2是根据本发明的实施例的处理器的框图。
图3是根据本发明的另一实施例的多域处理器的框图。
图4是包括多个核心的处理器的实施例。
图5是根据本发明的一个实施例的处理器核心的微体系结构的框图。
图6是根据另一实施例的处理器核心的微体系结构的框图。
图7是根据又一实施例的处理器核心的微体系结构的框图。
图8是根据另外一个实施例的处理器核心的微体系结构的框图。
图9是根据本发明的另一实施例的处理器的框图。
图10是根据本发明的实施例的代表性SoC的框图。
图11是根据本发明的实施例的另一示例SoC的框图。
图12是可与实施例一起使用的示例系统的框图。
图13是可与实施例一起使用的另一示例系统的框图。
图14是代表性计算机系统的框图。
图15A-图15B是根据本发明的实施例的系统的框图。
图16是根据实施例图示出IP核心开发系统的框图,该IP核心开发系 统被用于制造集成电路以执行操作。
图17A-图17B是根据本发明的实施例图示出通用向量友好指令格式 及其指令模板的框图。
图18A-图18D是根据本发明的实施例图示出示范性特定向量友好指 令格式的框图。
图19是根据本发明的一个实施例的寄存器体系结构的框图。
图20A是根据本发明的实施例图示出示范性有序流水线和示范性寄存 器重命名、乱序发出/执行流水线两者的框图。
图20B是根据本发明的实施例图示出要被包括在处理器中的有序体系 结构核心的示范性实施例和示范性寄存器重命名、乱序发出/执行体系结构 核心两者的框图。
图21A-图21B图示出更具体的示范性有序核心体系结构的框图,该 核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心) 之一。
图22是根据本发明的实施例的处理器的框图,该处理器可具有多于 一个核心、可具有集成的存储器控制器并且可具有集成的图形。
图23-图24是示范性计算机体系结构的框图。
图25是根据本发明的实施例与使用软件指令转换器来将源指令集中 的二进制指令转换成目标指令集中的二进制指令相对比的框图。
图26是根据一个或多个实施例的示例系统的图。
图27是根据一个或多个实施例的示例操作的图示。
图28A-图28B是根据一个或多个实施例的示例系统的图。
图29是根据一个或多个实施例的示例数据结构的图。
图30是根据一个或多个实施例的示例方法的流程图。
具体实施方式
接下来的说明书描述了要被处理器、虚拟处理器、封装、计算机系统 或者其他处理装置执行的平方差之和计算的指令和处理逻辑。在接下来的 描述中,记载了诸如处理逻辑、处理器类型、微体系结构条件、事件、使 能机制之类的许多具体细节,以便提供对本公开的实施例的更透彻理解。 然而,本领域技术人员将会清楚,没有这样的具体细节也可实现实施例。 此外,一些公知的结构、电路之类的没有被详细示出,以避免不必要地模 糊本公开的实施例。
一些计算机应用可能涉及平方差之和(sum of square differences,SSD) 的计算。例如,图像处理应用可通过在两幅图像的像素集合之间执行SSD 计算来确定两幅图像之间的相似性得分。这种计算可用于视频处理中的滤 波和运动估计应用。传统上,这些SSD计算可能要求使用多个离散指令来 执行各种数据组织和操作步骤,并且可能涉及大量的编程时间和精力。此 外,这种传统技术可能会消耗大量的计算资源,并且可能因此降低计算系 统的性能。
根据一些实施例,可以提供指令集体系结构(ISA)的指令来执行多 个SSD计算。在一些实施例中,可以执行单个SSD指令以生成包括多个 SSD值的向量。因此,使用SSD指令可以加快和简化对软件应用编程的任 务。另外,与传统技术(例如,使用包括多个离散指令的代码函数)相比, 处理器可以按相对更快、更高效的方式执行SSD指令,并且可因此提高程序执行的性能。此外,在一些实施例中,SSD指令可以按允许对与传统方 法中可处理的相比更多的输入向量进行处理的方式来编码偏移量值。下文 参考图26-图30进一步描述一些实施例的各种细节。另外,下文参考图1- 图25来描述示范性系统和体系结构。
示范性系统和体系结构
虽然参考特定实现方式描述了以下实施例,但实施例在这个方面不受 限制。具体地,设想了本文描述的实施例的类似技术和教导可被应用到其 他类型的电路、半导体器件、处理器、系统,等等。例如,公开的实施例 可被实现在任何类型的计算机系统中,包括服务器计算机(例如,塔式、 机架式、刀片式、微服务器等等),通信系统、存储系统、任何配置的桌 面型计算机、膝上型电脑、笔记本电脑、以及平板计算机(包括2:1平板、 平板手机等等)。
此外,公开的实施例也可被用在其他设备中,例如手持设备、片上系 统(systemson chip,SoC)、以及嵌入式应用。手持设备的一些示例包括 诸如智能电话之类的蜂窝电话、互联网协议设备、数字相机、个人数字助 理(personal digital assistant,PDA)、以及手持PC。嵌入式应用通常可包 括微控制器、数字信号处理器(digital signal processor,DSP)、网络计算 机(NetPC)、机顶盒、网络集线器、广域网(wide area network,WAN) 交换机、可穿戴设备、或者能够执行下面教导的功能和操作的任何其他系 统。另外,实施例可被实现在具有标准语音功能的移动终端中,例如移动 电话、智能电话和平板手机,和/或被实现在没有标准无线语音功能通信能 力的非移动终端中,例如许多可穿戴设备、平板设备、笔记本电脑、桌面 电脑、微服务器、服务器等等。
现在参考图1,示出了根据本发明的实施例的系统的一部分的框图。 如图1中所示,系统100可包括各种组件,其中包括处理器110,该处理 器110如图所示是多核心处理器。处理器110可经由外部电压调节器160 耦合到电力供应150,该外部电压调节器160可执行第一电压转换以向处 理器110提供主调节电压Vreg。
可以看出,处理器110可以是包括多个核心120a-120n的单管芯处理 器。此外,每个核心可与集成电压调节器(integrated voltage regulator, IVR)125a-125n相关联,该集成电压调节器接收主调节电压并且生成要被 提供给与该IVR相关联的处理器的一个或多个代理的操作电压。因此,可 提供IVR实现方式来允许对电压进行细粒度控制并从而允许对每个个体核 心的功率和性能进行细粒度控制。这样,每个核心可按独立的电压和频率进行操作,这使能了很大的灵活性并且提供了很宽的机会来平衡功率消耗 与性能。在一些实施例中,对多个IVR的使用使得能够将组件分组到分开 的电力平面中,使得电力被IVR调节并且只供应给群组中的那些组件。在 功率管理期间,一个IVR的给定电力平面在处理器被置于某个低功率状态 中时可被掉电或断电,而另一IVR的另一电力平面保持活跃或者被完全供 电。类似地,核心120可包括独立的时钟生成电路(例如,一个或多个锁 相环(phaselock loop,PLL))或者与独立的时钟生成电路相关联,来独 立地控制每个核心120的操作频率。
仍参考图1,额外的组件可存在于处理器内,包括输入/输出接口 (interface,IF)132、另一接口134、以及集成存储器控制器(integrated memory controller,IMC)136。可以看出,这些组件中的每一者可由另一 集成电压调节器125x来供电。在一个实施例中,接口132可针对
Figure BDA0003356533580000061
快 速路径互连(Quick Path Interconnect,QPI)互连使能操作,该互连提供包 括多个层的缓存一致性协议中的点到点(point-to-point,PtP)链路,所述 多个层包括物理层、链路层和协议层。进而,接口134可经由快速外围组 件互连(PeripheralComponent Interconnect Express,PCIeTM)协议来通信。
还示出了功率控制单元(power control unit,PCU)138,该PCU 138 可包括电路,该电路包括硬件、软件和/或固件来执行关于处理器110的功 率管理操作。可以看出,PCU138经由数字接口162向外部电压调节器 160提供控制信息,以使得电压调节器生成适当的经调节电压。PCU 138 还经由另一数字接口163向IVR 125提供控制信息以控制生成的操作电压 (或者使得相应的IVR在低功率模式中被禁用)。在各种实施例中,PCU 138可包括多种功率管理逻辑单元来执行基于硬件的功率管理。这种功率 管理可以是完全受处理器控制的(例如,由各种处理器硬件控制,并且可 由工作负载和/或功率约束、热约束或其他处理器约束所触发),和/或功 率管理可响应于外部源(例如,平台或功率管理源或系统软件)而被执行。
在图1中,PCU 138被示为作为处理器的单独逻辑而存在。在其他情 况下,PCU 138可在核心120中给定的一个或多个上执行。在一些情况下, PCU 138可被实现为被配置为执行其自己的专用功率管理代码(有时称为 P代码)的微控制器(专用或通用)或者其他控制逻辑。在另外的其他实 施例中,PCU 138要执行的功率管理操作可被实现在处理器外部,例如借 由单独的功率管理集成电路(power management integrated circuit,PMIC) 或者在处理器外部的另一组件来实现。在另外的其他实施例中,PCU 138 要执行的功率管理操作可被实现在BIOS或其他系统软件内。
实施例可尤其适合于多核心处理器,其中多个核心中的每一者可在独 立的电压和频率点操作。就本文使用的而言,术语“域”用于意指在相同 的电压和频率点操作的硬件和/或逻辑的集合。此外,多核心处理器还可包 括其他非核心处理引擎,例如固定功能单元、图形引擎,等等。这种处理 器可包括除了核心以外的独立域,例如,与图形引擎相关联的一个或多个 域(本文中称为图形域),以及与非核心电路相关联的一个或多个域(本 文中称为系统代理)。虽然多域处理器的许多实现方式可被形成在单个半 导体管芯上,但其他实现方式可由多芯片封装实现,在该多芯片封装中, 不同的域可存在于单个封装的不同半导体管芯上。
虽然为了图示的容易而没有示出,但要理解在处理器110内可存在额 外的组件,例如非核心逻辑,以及诸如内部存储器之类的其他组件,例如 缓存存储器层次体系的一个或多个级别,等等。此外,虽然在图1的实现 方式中是用集成电压调节器示出的,但实施例不限于此。例如,可从外部 电压调节器160或者调节电压的一个或多个额外的外部源向片上资源提供 其他调节电压。
注意,本文描述的功率管理技术可独立于基于操作系统(operating system,OS)的功率管理(operating system-based power management, OSPM)机制并且与其互补。根据一个示例OSPM技术,处理器可按各种 性能状态或水平——所谓的P状态——操作,即从P0至PN。一般而言, P1性能状态可对应于OS可请求的最高保证性能状态。除了这个P1状态以外,OS还可请求更高的性能状态,即P0状态。这个P0状态因而可以 是机会模式、超频模式、或极速(turbo)模式状态,在这些模式状态中, 当功率和/或热预算可用时,处理器硬件可将处理器或者其至少一些部分配 置为按高于保证频率的频率进行操作。在许多实现方式中,处理器可包括 高于P1保证最大频率的、超出到特定处理器最大峰值频率的多个所谓的 分段频率(bin frequency),这些分段频率在制造期间被烧熔或以其他方 式写入到处理器中。此外,根据一个OSPM机制,处理器可按各种功率状 态或水平操作。关于功率状态,OSPM机制可指定不同的功率消耗状态, 一般称为C状态,C0、C1至Cn状态。当核心活跃时,该核心按C0状态 运行,并且当核心空闲时,其可被置于核心低功率状态中,也被称为核心 非零C状态(例如,C1-C6状态),其中每个C状态处于更低的功率消耗 水平(使得C6是比C1更深的低功率状态,等等依此类推)。
要理解,许多不同类型的功率管理技术在不同的实施例中可被单独或 者组合使用。作为代表性示例,功率控制器可控制处理器按某种形式的动 态电压频率缩放(dynamicvoltage frequency scaling,DVFS)来被功率管 理,在该动态电压频率缩放中,一个或多个核心或其他处理器逻辑的操作 电压和/或操作频率可被动态地控制以在某些情形中降低功率消耗。在一示 例中,可利用可从加州圣克拉拉的英特尔公司获得的增强型英特尔SpeedStepTM技术来执行DVFS,来以最低的功率消耗水平提供最优的性能。 在另一示例中,可利用英特尔TurboBoostTM技术来执行DVFS,以使得一个 或多个核心或其他计算引擎能够基于状况(例如,工作负载和可用性)来 以高于保证操作频率的频率进行操作。
在某些示例中可使用的另一种功率管理技术是工作负载在不同计算引 擎之间的动态调换。例如,处理器可包括以不同的功率消耗水平操作的非 对称核心或其他处理引擎,使得在功率受约束的情形中,一个或多个工作 负载可被动态切换来在更低功率的核心或其他计算引擎上执行。另一种示 范性功率管理技术是硬件工作周期循环(hardwareduty cycling,HDC), 其可使得核心和/或其他计算引擎根据工作周期被周期性地启用和禁用,使 得一个或多个核心可在工作周期的非活跃时段期间被设为不活跃并且在工 作周期的活跃时段期间被设为活跃。
当在操作环境中存在约束时也可使用功率管理技术。例如,当遇到功 率约束和/或热约束时,可通过降低操作频率和/或电压来降低功率。其他 功率管理技术包括扼制指令执行速率或者限制指令的调度。此外,给定的 指令集体系结构的指令有可能包括关于功率管理操作的明确或隐含指引。 虽然是利用这些特定示例来描述的,但要理解在特定实施例中可使用许多 其他功率管理技术。
实施例可被实现在针对各种市场的处理器中,包括服务器处理器、桌 面处理器、移动处理器等等。现在参考图2,示出了根据本发明的实施例 的处理器的框图。如图2中所示,处理器200可以是包括多个核心210a- 210n的多核心处理器。在一个实施例中,每个这种核心可以是独立的电力 域的并且可被配置为基于工作负载而进入和退出活跃状态和/或最大性能状 态。一个或多个核心210可与其他核心是异构的,例如具有不同的微体系 结构、指令集体系结构、流水线深度、功率和性能能力。各种核心可经由 互连215耦合到包括各种组件的系统代理220。可以看出,系统代理220 可包括共享缓存230,该共享缓存230可以是最后一级缓存。此外,系统 代理可包括集成存储器控制器240来例如经由存储器总线与系统存储器 (图2中未示出)通信。系统代理220还包括各种接口250和功率控制单 元255,功率控制单元255可包括逻辑来执行本文描述的功率管理技术。
此外,通过接口250a-250n,可进行到各种芯片外组件的连接,例如 外围设备、大容量存储装置等等。虽然在图2的实施例中是利用这个特定 实现方式示出的,但本发明的范围在这个方面不受限制。
现在参考图3,示出了根据本发明的另一实施例的多域处理器的框图。 如图3的实施例中所示,处理器300包括多个域。具体而言,核心域310 可包括多个核心3100-310n,图形域320可包括一个或多个图形引擎,并且 系统代理域350可进一步存在。在一些实施例中,系统代理域350可按独 立于核心域的频率执行并且可在所有时间保持通电以应对功率控制事件和 功率管理,使得域310和320可被控制来动态地进入和退出高功率和低功 率状态。域310和320中的每一者可按不同的电压和/或功率来操作。注意, 虽然只示出了三个域,但要理解本发明的范围在这个方面不受限制,在其 他实施例中可存在额外的域。例如,多个核心域可存在,每个核心域包括 至少一个核心。
一般而言,核心310a-310n中的每一者除了各种执行单元和额外的处 理元件以外还可包括低级别缓存。进而,各种核心可耦合到彼此并且耦合 到由最后一级缓存(lastlevel cache,LLC)340a-340n的多个单元形成的 共享缓存存储器。在各种实施例中,LLC340可被共享于核心和图形引擎, 以及各种媒体处理电路之间。可以看出,环状互连330从而将核心耦合在 一起,并且在核心、图形域320和系统代理域350之间提供互连。在一个 实施例中,互连330可以是核心域的一部分。然而,在其他实施例中,环 状互连可以是其自己的域的。
还可以看出,系统代理域350可包括显示控制器352,该显示控制器 352可提供对关联的显示器的控制和到关联的显示器的接口。还可以看出, 系统代理域350可包括功率控制单元355,该功率控制单元355可包括逻 辑来执行本文描述的功率管理技术。
从图3中还可看出,处理器300还可包括集成存储器控制器 (integrated memorycontroller,IMC)370,该IMC 370可提供到诸如动态 随机访问存储器(dynamic randomaccess memory,DRAM)之类的系统存 储器的接口。多个接口380a-380n可存在来使能处理器和其他电路之间的 互连。例如,在一个实施例中,可提供至少一个直接媒体接口(directmedia interface,DMI)接口,以及一个或多个PCIeTM接口。此外,为了 提供诸如额外的处理器或其他电路之类的其他代理之间的通信,也可提供 一个或多个QPI接口。虽然在图3的实施例中是在这个高级别示出的,但 要理解本发明的范围在这个方面不受限制。
参考图4,图示了包括多个核心的处理器的实施例。处理器400包括 任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器 (digital signal processor,DSP)、网络处理器、手持处理器、应用处理器、 协处理器、片上系统(system on a chip,SoC)、或者用于执行代码的其 他设备。处理器400在一个实施例中包括至少两个核心——核心401和 402,它们可包括非对称核心或对称核心(图示的实施例)。然而,处理 器400可包括可以是对称或非对称的任何数目的处理元件。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。 硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、情境、 情境单元、逻辑处理器、硬件线程、核心、和/或能够为处理器保持状态 (例如执行状态或体系结构状态)的任何其他元件。换言之,处理元件在 一个实施例中指的是能够独立地与诸如软件线程、操作系统、应用或其他 代码之类的代码相关联的任何硬件。物理处理器通常指的是可能包括任何 数目的其他处理元件(例如核心或硬件线程)的集成电路。
核心经常指能够维持独立体系结构状态的、位于集成电路上的逻辑, 其中每个被独立维持的体系结构状态与至少一些专用执行资源相关联。与 核心形成对比,硬件线程通常指能够维持独立体系结构状态的、位于集成 电路上的任何逻辑,其中被独立维持的体系结构状态共享对执行资源的访 问。可以看出,当某些资源被共享并且其他资源被专用于体系结构状态时, 硬件线程和核心的命名法之间的界线会重叠。然而经常,核心和硬件线程被操作系统看作单独的逻辑处理器,其中操作系统能够单独调度每个逻辑 处理器上的操作。
如图4中所示,物理处理器400包括两个核心,即核心401和402。 这里,核心401和402被认为是对称核心,即具有相同的配置、功能单元 和/或逻辑的核心。在另一实施例中,核心401包括乱序处理器核心,而核 心402包括有序处理器核心。然而,核心401和402可以是单独从任何类 型的核心中选择的,例如,原生核心、受软件管理的核心、被适配为执行原生指令集体系结构(instruction set architecture,ISA)的核心、被适配为 执行经转化的ISA的核心、共同设计的核心,或者其他已知的核心。再进 一步讨论,下文更详细描述在核心401中图示的功能单元,因为核心402 中的单元以类似的方式操作。
如图所描绘的,核心401包括两个体系结构状态寄存器401a和401b, 它们可与两个硬件线程(也称为硬件线程槽)相关联。因此,软件实体 (例如操作系统)在一个实施例中可能将处理器400视为四个分开的处理 器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上 文提到的,第一线程与体系结构状态寄存器401a相关联,第二线程与体系 结构状态寄存器401b相关联,第三线程可与体系结构状态寄存器402a相 关联,并且第四线程可与体系结构状态寄存器402b相关联。这里,体系 结构状态寄存器(401a、401b、402a和402b)可与处理元件、线程槽或者 线程单元相关联,如上所述。如图所示,体系结构状态寄存器401a被复制 在体系结构状态寄存器401b中,因此能够为逻辑处理器401a和逻辑处理 器401b存储个体的体系结构状态/情境。在核心401中,也可针对线程401a和401b复制其他更小的资源,例如分配器和重命名器块430中的指 令指针和重命名逻辑。通过分区可共享一些资源,例如重排序/引退单元 435中的重排序缓冲器、分支目标缓冲器和指令转化后备缓冲器(BTB和 I-TLB)420、加载/存储缓冲器、以及队列。其他资源(例如,通用内部寄 存器、(一个或多个)页表基址寄存器、低级别数据缓存和数据TLB 450、 (一个或多个)执行单元440、以及重排序/引退单元435的一些部分)可 能被完全共享。
处理器400经常包括其他资源,这些资源可被完全共享、通过分区被 共享、或者被处理元件专用或者专用于处理元件。在图4中,图示了具有 处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意,处理器 可包括或者省略这些功能单元中的任何一者,以及包括没有描绘的任何其 他已知的功能单元、逻辑或者固件。如图所示,核心401包括简化的、代 表性乱序(out-of-order,OOO)处理器核心。但在不同的实施例中可利用 有序处理器。
核心401还包括耦合到取得单元的解码模块425以对取得的元素解码。 取得逻辑在一个实施例中包括分别与线程槽401a、401b相关联的个体定序 器。通常核心401与第一ISA相关联,该第一ISA定义/指定在处理器400 上可执行的指令。经常,作为第一ISA的一部分的机器代码指令包括指令 的一部分(称为操作码),该部分引用/指定要执行的指令或操作。解码模 块425包括这样的电路:该电路从这些指令的操作码识别这些指令并且在 流水线中传递经解码的指令来按第一ISA所定义的那样进行处理。例如, 解码器模块425在一个实施例中包括被设计或适配为识别诸如事务性指令 之类的特定指令的逻辑。作为解码器模块425进行的识别的结果,体系结 构或核心401采取特定的预定义动作来执行与适当的指令相关联的任务。 注意以下这点是重要的:本文描述的任何任务、块、操作和方法可响应于 单个或多个指令而被执行;这些指令中的一些可以是新的或者旧的指令。
在一个示例中,分配器和重命名器块430包括分配器来预留资源,例 如预留寄存器文件来存储指令处理结果。然而,线程401a和401b可能能 够进行乱序执行,其中分配器和重命名器块430也预留其他资源,例如预 留重排序缓冲器来跟踪指令结果。重命名器块430还可包括寄存器重命名 器,以将程序/指令引用寄存器重命名到在处理器400内部的其他寄存器。 重排序/引退单元435包括组件(例如,上文提及的重排序缓冲器、加载缓 冲器和存储缓冲器),来支持对被乱序执行的指令进行的乱序执行和之后 的有序引退。
(一个或多个)调度器和执行单元块440在一个实施例中包括调度器 单元来调度执行单元上的指令/操作。例如,在执行单元的端口上调度浮点 指令,其中该执行单元具有可用的浮点执行单元。也包括与执行单元相关 联的寄存器文件来存储信息指令处理结果。示范性执行单元包括浮点执行 单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元、和 其他已知的执行单元。
较低级别数据缓存和数据转化后备缓冲器(data translation lookasidebuffer,D-TLB)450耦合到(一个或多个)执行单元440。数据缓存还用 于存储最近使用/操作的元素(例如数据操作对象),这些元素可能被保持 在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转 化。作为具体示例,处理器可包括页表结构来将物理存储器分解成多个虚 拟页。
这里,核心401和402共享对更高级别或更远缓存410的访问,该缓 存用于缓存最近取得的元素。注意,更高级别或者更远指的是缓存级别增 大或者变得更远离(一个或多个)执行单元。在一个实施例中,更高级别 缓存410是最后一级数据缓存——处理器400上的存储器层次体系中的最 后缓存——例如第二或第三级别数据缓存。然而,更高级别缓存410不限 于此,因为其可与指令缓存相关联或者包括指令缓存。取而代之,踪迹缓 存——一种类型的指令缓存——可被耦合在解码器模块425之后来存储最 近解码的踪迹。
在描绘的配置中,处理器400还包括总线接口405和功率控制单元 460,其可根据本发明的实施例执行功率管理。在此场景中,总线接口405 用于与在处理器400外部的设备(例如,系统存储器和其他组件)通信。
存储器控制器470可与诸如一个或许多存储器之类的其他设备相接口。 在一示例中,总线接口405包括环状互连,该环状互连具有用于与存储器 相接口的存储器控制器和用于与图形处理器相接口的图形控制器。在SoC 环境中,甚至更多的设备(例如,网络接口、协处理器、存储器、图形处 理器、和任何其他已知的计算机设备/接口)可被集成在单个管芯或集成电 路上,以提供具有高功能和低功率消耗的小外形参数。
现在参考图5,示出了根据本发明的一个实施例的处理器核心的微体 系结构的框图。如图5中所示,处理器核心500可以是多级流水线式乱序 处理器。核心500可基于接收到的操作电压来按各种电压操作,其中接收 到的操作电压可以是从集成电压调节器或者外部电压调节器接收的。
从图5中可见,核心500包括前端单元510,前端单元510可用于取 得要执行的指令并且使它们为以后用在处理器流水线中做好准备。例如, 前端单元510可包括取得单元501、指令缓存503、和指令解码器505。在 一些实现方式中,前端单元510还可包括踪迹缓存,连同微代码存储以及 微操作存储。取得单元501可取得宏指令(例如从存储器或指令缓存503 取得)并且将它们馈送到指令解码器505来将其解码成基元(即,供处理 器执行的微操作)。
耦合在前端单元510和执行单元520之间的是乱序(OOO)引擎515, 该OOO引擎515可用于接收微指令并且使它们为执行做好准备。更具体 而言,OOO引擎515可包括各种缓冲器,用于重排序微指令流并且分配执 行所需要的各种资源,并且用于提供逻辑寄存器到(诸如寄存器文件530 和扩展寄存器文件535之类的)各种寄存器文件内的存储位置上的重命名。 寄存器文件530可包括用于整数操作和浮点操作的分开的寄存器文件。为 了配置、控制和额外的操作,一组特定于机器的寄存器(machine specific register,MSR)538也可存在并且是核心500内(以及核心外部)的各种 逻辑可访问的。
各种资源可存在于执行单元520中,包括例如各种整数、浮点、和单 指令多数据(single instruction multiple data,SIMD)逻辑单元,以及其他 专门的硬件。例如,这种执行单元可包括一个或多个算术逻辑单元 (arithmetic logic unit,ALU)522以及一个或多个向量执行单元524,以 及其他这种执行单元。
来自执行单元的结果可被提供到引退逻辑,即,重排序缓冲器 (reorder buffer,ROB)540。更具体而言,ROB 540可包括各种阵列和逻 辑以接收与被执行的指令相关联的信息。此信息随后被ROB 540考查来确 定是否指令可被有效地引退并且结果数据可被提交给处理器的体系结构状 态,或者确定是否发生了阻止指令的适当引退的一个或多个异常。当然, ROB 540可应对与引退相关联的其他操作。
如图5中所示,ROB 540耦合到缓存550,缓存550在一个实施例中 可以是低级别缓存(例如,L1缓存),不过本发明的范围在这个方面不受 限制。另外,执行单元520可直接耦合到缓存550。从缓存550,数据通 信可与更高级别缓存、系统存储器等等发生。虽然在图5的实施例中是以 这个高级别示出的,但要理解本发明的范围在这个方面不受限制。例如,虽然图5的实现方式是关于诸如
Figure BDA0003356533580000151
x86指令集体系结构(ISA)之类的 乱序机器的,但本发明的范围在这个方面不受限制。也就是说,其他实施 例可被实现在有序处理器、诸如基于ARM的处理器之类的精简指令集计 算(reduced instruction set computing,RISC)处理器、或者可经由仿真引 擎和关联的逻辑电路来对不同ISA的指令和操作进行仿真的另一类型的 ISA的处理器中。
现在参考图6,示出了根据另一实施例的处理器核心的微体系结构的 框图。在图6的实施例中,核心600可以是不同微体系结构的低功率核心, 例如,基于
Figure BDA0003356533580000152
AtomTM的处理器,其具有被设计为降低功率消耗的、相 对有限的流水线深度。可以看出,核心600包括被耦合来向指令解码器 615提供指令的指令缓存610。分支预测器605可耦合到指令缓存610。注 意,指令缓存610还可耦合到另一级别的缓存存储器,例如L2缓存(在 图6中为了图示的容易而没有示出)。进而,指令解码器615将经解码的 指令提供到发出队列(issuequeue,IQ)620以便存储和输送到给定的执行 流水线。微代码ROM 618耦合到指令解码器615。
浮点流水线630包括浮点(floating point,FP)寄存器文件632,该浮 点寄存器文件632可包括具有诸如128、256或512比特之类的给定比特宽 度的多个体系结构寄存器。流水线630包括浮点调度器634来调度指令以 供在流水线的多个执行单元之一上执行。在示出的实施例中,这种执行单 元包括算术逻辑单元(arithmetic logic unit,ALU)635、打乱单元636、 和浮点(FP)加法器638。进而,在这些执行单元中生成的结果可被提供 回到寄存器文件632的缓冲器和/或寄存器。当然要理解,虽然是以这几个 示例执行单元示出的,但在另一实施例中可存在额外的或者不同的浮点执 行单元。
也可提供整数流水线640。在示出的实施例中,流水线640包括整数 (INT)寄存器文件642,该整数寄存器文件642可包括具有诸如128或 256比特之类的给定比特宽度的多个体系结构寄存器。流水线640包括整 数执行(integer execution,IE)调度器644来调度指令以供在流水线的多 个执行单元之一上执行。在示出的实施例中,这种执行单元包括ALU 645、 移位器单元646、以及跳转执行单元(jump execution unit,JEU)648。进 而,在这些执行单元中生成的结果可被提供回到寄存器文件642的缓冲器 和/或寄存器。当然要理解,虽然是以这几个示例执行单元示出的,但在另 一实施例中可存在额外的或者不同的整数执行单元。
存储器执行(memory execution,ME)调度器650可调度存储器操作 以在地址生成单元(address generation unit,AGU)652中执行,该地址生 成单元652也耦合到TLB 654。可以看出,这些结构可耦合到数据缓存 660,数据缓存660可以是L0和/或L1数据缓存,该L0和/或L1数据缓存 进而耦合到缓存存储器层次体系的额外级别,包括L2缓存存储器。
为了提供对乱序执行的支持,除了重排序缓冲器680以外还可提供分 配器/重命名器670,该重排序缓冲器680被配置为对被乱序执行的指令重 排序以便有序引退。虽然在图6的图示中是以这个特定的流水线体系结构 示出的,但要理解许多变化和替换是可能的。
注意,在(例如根据图5和图6的微体系结构)具有非对称核心的处 理器中,可出于功率管理原因在核心之间动态地调换工作负载,因为这些 核心虽然具有不同的流水线设计和深度,但可具有相同或相关的ISA。这 种动态的核心调换可以按对于用户应用而言透明(并且可能对于内核也透 明)的方式来被执行。
参考图7,示出了根据又一实施例的处理器核心的微体系结构的框图。 如图7中所示,核心700可包括多级有序流水线来以非常低的功率消耗水 平执行。作为一个这种示例,核心700可具有微体系结构,该微体系结构 根据可从加州森尼维尔市的ARM控股有限公司获得的ARM Cortex A53 设计。在一种实现方式中,可提供被配置为既执行32比特代码也执行64 比特代码的8级流水线。核心700包括取得单元710,该取得单元710被 配置为取得指令并将它们提供给解码单元715,其中解码单元715可对指 令(例如,诸如ARMv8 ISA之类的给定ISA的宏指令)进行解码。还要 注意,队列730可耦合到解码单元715以存储经解码的指令。经解码的指 令被提供到发出逻辑725,其中在发出逻辑725处,经解码的指令可被发 出到多个执行单元中的给定一个。
还参考图7,发出逻辑725可将指令发出到多个执行单元之一。在示 出的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向 量单元750、双重发出单元760、以及加载/存储单元770。这些不同执行 单元的结果可被提供到写回(WB)单元780。要理解,虽然为了图示的容 易而示出了单个写回单元,但在一些实现方式中,分开的写回单元可与每 个执行单元相关联。此外,要理解虽然图7中所示的每个单元和逻辑是以 高级别表示的,但特定的实现方式可包括更多的或不同的结构。利用一个 或多个(如图7中所示的)具有流水线的核心来设计的处理器可被实现在 许多不同的最终产品中,从移动设备延伸到服务器系统。
参考图8,示出了根据另外一个实施例的处理器核心的微体系结构的 框图。如图8中所示,核心800可包括多级多发出乱序流水线以按非常高 的性能水平执行(这可以按比图7的核心700更高的功率消耗水平发生)。 作为一个这种示例,处理器800可具有根据ARMCortex A57设计的微体 系结构。在一种实现方式中,可提供被配置为既执行32比特代码也执行 64比特代码的15(或更多)级流水线。此外,流水线可提供3宽(或更 宽)和3发出(或更多发出)操作。核心800包括取得单元810,取得单 元810被配置为取得指令并且将它们提供给耦合到缓存820的解码器/重命 名器/调遣器单元815。单元815可对指令(例如,ARMv8指令集体系结 构的宏指令)进行解码,对指令内的寄存器引用进行重命名,并且(最终) 将指令调遣到所选择的执行单元。经解码的指令可被存储在队列825中。 注意,虽然在图8中为了图示的容易而示出了单个队列结构,但要理解可 针对多个不同类型的执行单元中的每一者提供分开的队列。
图8中还示出了发出逻辑830,其中,被存储在队列825中的经解码 指令可从该发出逻辑830被发出到所选择的执行单元。发出逻辑830也可 被实现特定实施例中,其中,针对发出逻辑830所耦合到的多种不同类型 的执行单元中的每一者有单独的发出逻辑。
经解码的指令可被发出到多个执行单元中的给定一个。在示出的实施 例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/ 向量单元850、分支单元860、以及加载/存储单元870。在一实施例中, 浮点/向量单元850可被配置为应对128或256比特的SIMD或向量数据。 此外,浮点/向量执行单元850可执行IEEE-754双精度浮点操作。这些不 同执行单元的结果可被提供到写回单元880。注意,在一些实现方式中, 分开的写回单元可与执行单元中的每一者相关联。此外,要理解虽然图8 中所示的每个单元和逻辑是以高级别表示的,但特定的实现方式可包括更 多的或不同的结构。
注意在(例如根据图7和图8的微体系结构)具有非对称核心的处理 器中,可出于功率管理原因而动态地调换工作负载,因为这些核心虽然具 有不同的流水线设计和深度,但可具有相同或相关的ISA。这种动态的核 心调换可以按对于用户应用而言透明(并且可能对于内核也透明)的方式 来被执行。
利用一个或多个(如图5-图8中的任何一个或多个图中所示的)具有 流水线的核心来设计的处理器可被实现在许多不同的最终产品中,从移动 设备延伸到服务器系统。现在参考图9,示出了根据本发明的另一实施例 的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的 SoC,每个域可被控制来按独立的操作电压和操作频率操作。作为具体的 说明性示例,处理器900可以是可从英特尔公司获得的基于
Figure BDA0003356533580000181
ArchitectureCoreTM的处理器(例如,i3、i5、i7或另外的这种处理器)。然 而,其他低功率处理器(例如,可从加州森尼维尔市的超微半导体公司 (AMD)获得的低功率处理器,来自ARM控股有限公司或其被许可方的 基于ARM的设计,或者来自加州森尼维尔市的MIPS技术公司或者其被许可方或采用者的基于MIPS的设计)可取而代之存在于其他实施例中, 例如苹果A7处理器、高通骁龙处理器或者德州仪器OMAP处理器。这种 SoC可用于低功率系统(例如,智能电话、平板计算机、平板手机计算机、 UltrabookTM计算机、或者其他便携式计算设备)中,该低功率系统可包含 具有基于异构系统体系结构的处理器设计的异构系统体系结构。
在图9中所示的高级别视图中,处理器900包括多个核心单元9100- 910n。每个核心单元可包括一个或多个处理器核心、一个或多个缓存存储 器和其他电路。每个核心单元910可支持一个或多个指令集(例如,x86 指令集(带有已随着较新版本添加的一些扩展);MIPS指令集;ARM指 令集(带有诸如NEON之类的可选附加扩展)或者其他指令集或者其组合。 注意,核心单元中的一些可以是异构资源(例如,具有不同的设计)。此 外,每个这种核心可耦合到缓存存储器(未示出),该缓存存储器在实施 例中可以是共享级别二(L2)缓存存储器。非易失性存储装置930可用于 存储各种程序和其他数据。例如,此存储装置可用于存储微代码的至少一 些部分、诸如BIOS之类的引导信息、其他系统软件,等等。
每个核心单元910还可包括接口(例如,总线接口单元),来使得能 够互连到处理器的额外电路。在一实施例中,每个核心单元910耦合到可 充当主缓存一致片上互连的一致架构,该互连进而耦合到存储器控制器 935。进而,存储器控制器935控制与诸如DRAM之类的存储器(在图9 中为了图示的容易而没有示出)的通信。
除了核心单元以外,还有额外的处理引擎存在于处理器内,包括至少 一个图形单元920,该图形单元920可包括一个或多个图形处理单元 (graphics processing unit,GPU)来执行图形处理以及可能执行图形处理 器上的通用操作(所谓的GPGPU操作)。此外,至少一个图像信号处理 器925可存在。信号处理器925可被配置为处理从在SoC内部或者在片外 的一个或多个捕捉设备接收的传入图像数据。
其他加速器也可存在。在图9的图示中,视频编码器950可执行编码 操作,这些操作包括对视频信息的编码和解码,例如为高清晰度视频内容 提供硬件加速支持。还可提供显示控制器955来加速显示操作,包括为系 统的内部和外部显示器提供支持。此外,安全性处理器945可存在来执行 诸如安全引导操作、各种密码操作等等之类的安全性操作。
每个单元可让其功率消耗经由功率管理器940来被控制,该功率管理 器940可包括控制逻辑来执行本文描述的各种功率管理技术。
在一些实施例中,处理器900还可包括耦合到一致架构的非一致架构, 其中各种外围设备可耦合到该一致架构。一个或多个接口960a-960d使能 与一个或多个片外设备的通信。这种通信可经由各种通信协议,例如 PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI, 以及其他类型的通信协议。虽然在图9的实施例中是在这个高级别示出的, 但要理解本发明的范围在这个方面不受限制。
现在参考图10,示出了代表性SoC的框图。在示出的实施例中,SoC 1000可以是多核心SoC,该多核心SoC被配置用于低功率操作以针对包含 到智能电话或(诸如平板计算机或其他便携式计算设备之类的)其他低功 率设备中而被优化。作为示例,可利用非对称的或不同类型的核心来实现 SoC 1000,例如更高功率和/或低功率核心的组合,例如乱序核心和有序核 心。在不同的实施例中,这些核心可基于
Figure BDA0003356533580000201
ArchitectureTM核心设计或者ARM体系结构设计。在另外的其他实施例中,在给定的SoC中可实现 Intel和ARM核心的混合。
从图10中可看出,SoC 1000包括具有多个第一核心10120-10123的第 一核心域1010。在一示例中,这些核心可以是诸如有序核心之类的低功率 核心。在一个实施例中,这些第一核心可被实现为ARM Cortex A53核心。 进而,这些核心耦合到核心域1010的缓存存储器1015。此外,SoC 1000 包括第二核心域1020。在图10的图示中,第二核心域1020具有多个第二 核心1022a-1022d。在一示例中,这些核心可以是比第一核心1012更高功 率消耗的核心。在一实施例中,第二核心可以是乱序核心,这些乱序核心 可被实现为ARM CortexA57核心。进而,这些核心耦合到核心域1020的 缓存存储器1025。注意,虽然图10中所示的示例在每个域中包括4个核 心,但要理解在其他示例中在给定的域中可存在更多或更少核心。
进一步参考图10,还提供了图形域1030,该图形域1030可包括被配 置为独立地执行(例如,由核心域1010和1020的一个或多个核心提供的) 图形工作负载的一个或多个图形处理单元(GPU)。作为示例,除了提供 图形和显示渲染操作以外,GPU域1030还可用于为各种屏幕大小提供显 示支持。
可以看出,各种域耦合到一致互连1040,该一致互连1040在一实施 例中可以是缓存一致互连架构,该缓存一致互连架构进而耦合到集成存储 器控制器1050。在一些示例中,一致互连1040可包括共享缓存存储器, 例如L3缓存。在一实施例中,存储器控制器1050可以是直接存储器控制 器以提供与片外存储器的通信的多个通道,例如DRAM的多个通道(在 图10中为了图示的容易没有示出)。
在不同的示例中,核心域的数目可变化。例如,对于适合于包含到移 动计算设备中的低功率SoC,例如图10中所示的有限数目的核心域可存 在。此外,在这种低功率SoC中,包括更高功率核心的核心域1020可具 有更少数目的这种核心。例如,在一个实现方式中,可提供两个核心1022 来使得能够以降低的功率消耗水平进行操作。此外,不同的核心域也可耦 合到中断控制器,以使得能够在不同的域之间进行对工作负载的动态调换。
在另外的其他实施例中,更大数目的核心域以及额外的可选IP逻辑可 存在,因为SoC可被缩放到更高性能(以及功率)水平,以便包含到其他 计算设备中(例如,桌面型电脑、服务器、高性能计算系统、基站等等)。 作为一个这种示例,可提供4个核心域,每个具有给定数目的乱序核心。 此外,除了可选的GPU支持以外(其作为示例可采取GPGPU的形式),也可提供一个或多个加速器来提供对特定功能(例如,web服务、网络处 理、交换等等)的优化硬件支持。此外,输入/输出接口也可存在来将这种 加速器耦合到片外组件。
现在参考图11,示出了另一示例SoC的框图。在图11的实施例中,SoC 1100可包括各种电路来针对多媒体应用、通信和其他功能使能高性能。 这样,SoC 1100适合于包含到各种各样的便携设备和其他设备中,例如智 能电话、平板计算机、智能TV等等。在示出的示例中,SoC 1100包括中 央处理器单元(central processor unit,CPU)域1110。在一实施例中,多 个个体处理器核心可存在于CPU域1110中。作为一个示例,CPU域1110 可以是具有4个多线程核心的四核心处理器。这种处理器可以是同构或异 构处理器,例如低功率和高功率处理器核心的混合。
进而,提供GPU域1120来在一个或多个GPU中执行高级图形处理以 应对图形并计算API。除了可发生在多媒体指令的执行期间的高级计算以 外,DSP单元1130还可提供一个或多个低功率DSP来应对低功率多媒体 应用,例如音乐重放、音频/视频等等。进而,通信单元1140可包括各种 组件来经由各种无线协议提供连通性,例如,蜂窝通信(包括3G/4GLTE)、诸如BluetoothTM之类的无线局域协议、IEEE 802.11,等等。
此外,多媒体处理器1150可用于执行对高清晰度视频和音频内容的 捕捉和重放,包括对用户姿态的处理。传感器单元1160可包括多个传感 器和/或传感器控制器来接口到存在于给定平台中的各种片外传感器。图像 信号处理器(image signal processor,ISP)1170可执行关于来自平台的一 个或多个相机(包括静态相机和视频相机)的捕捉内容的图像处理。
显示处理器1180可提供对到给定像素密度的高清晰度显示器的连接 的支持,包括无线地传输内容以便在这种显示器上重放的能力。此外,位 置单元1190可包括全球定位系统(Global Positioning System,GPS)接收 器,该GPS接收器带有对多个GPS星座的支持以向应用提供利用这种 GPS接收器获得的高度准确的定位信息。要理解,虽然在图11的示例中 是以这组特定的组件示出的,但许多变化和替换是可能的。
现在参考图12,示出了可与实施例一起使用的示例系统的框图。可以 看出,系统1200可以是智能电话或其他无线通信器。基带处理器1205被 配置为关于要从系统发送或者被系统接收的通信信号执行各种信号处理。 进而,基带处理器1205耦合到应用处理器1210,应用处理器1210可以是 系统的主CPU,以执行OS和其他系统软件,以及诸如许多公知的社交媒 体和多媒体app之类的用户应用。应用处理器1210还可被配置为针对设备 执行各种其他计算操作。
进而,应用处理器1210可耦合到用户界面/显示器1220,例如触摸屏 显示器。此外,应用处理器1210可耦合到存储器系统,该存储器系统包 括非易失性存储器(即,闪速存储器1230)以及系统存储器(即,动态随 机访问存储器(DRAM)1235)。还可看出,应用处理器1210还耦合到 捕捉设备1241,例如可记录视频和/或静态图像的一个或多个图像捕捉设备。
仍参考图12,通用集成电路卡(universal integrated circuit card,UICC)1246也耦合到应用处理器1210,该通用集成电路卡1246包括订户身份模 块并且可能包括安全存储及密码处理器。系统1200还可包括安全性处理 器1250,该安全性处理器1250可耦合到应用处理器1210。多个传感器 1225可耦合到应用处理器1210以使得能够输入各种感测到的信息,例如 加速度计和其他环境信息。音频输出设备1295可提供接口来输出声音,例如以语音通信、播放的或流媒体音频数据等等的形式。
如还图示的,提供了近场通信(near field communication,NFC)无接 触接口1260,其经由NFC天线1265在NFC近场中通信。虽然在图12中 示出了分开的天线,但要理解在一些实现方式中,可提供一个天线或者不 同组天线来使能各种无线功能。
功率管理集成电路(power management integrated circuit,PMIC)1215 耦合到应用处理器1210以执行平台级功率管理。为此,PMIC 1215可向应 用处理器1210发出功率管理请求以根据需要进入某些低功率状态。此外, 基于平台约束,PMIC 1215也可控制系统1200的其他组件的功率水平。
为了使得通信能够被发送和接收,各种电路可被耦合在基带处理器 1205和天线1290之间。具体而言,射频(radio frequency,RF)收发器 1270和无线局域网(wirelesslocal area network,WLAN)收发器1275可 存在。一般而言,RF收发器1270可用于根据给定的无线通信协议(例如 3G或4G无线通信协议)接收和发送无线数据和呼叫,例如根据码分多路 接入(code division multiple access,CDMA)、全球移动通信系统(global systemfor mobile communication,GSM)、长期演进(long term evolution, LTE)或其他协议。此外,GPS传感器1280可存在。也可提供其他无线通 信,例如对无线电信号(例如AM/FM)和其他信号的接收或发送。此外, 经由WLAN收发器1275,也可实现本地无线通信。
现在参考图13,示出了可与实施例一起使用的另一示例系统的框图。 在图13的图示中,系统1300可以是移动低功率系统,例如,平板计算机、 2:1平板设备、平板手机或其他可转换的或独立的平板系统。如图所示, SoC 1310存在并且可被配置为作为设备的应用处理器进行操作。
各种设备可耦合到SoC 1310。在示出的图示中,存储器子系统包括耦 合到SoC1310的闪速存储器1340和DRAM 1345。此外,触摸面板1320 耦合到SoC 1310以提供显示能力和经由触摸的用户输入,包括在触摸面 板1320的显示器上提供虚拟键盘。为了提供有线网络连通性,SoC 1310 耦合到以太网接口1330。外设中枢(peripheral hub)1325耦合到SoC 1310以使能与各种外围设备相接口,例如可通过各种端口或其他连接器中 的任何一者耦合到系统1300。
除了SoC 1310内的内部功率管理电路和功能以外,PMIC 1380也耦合 到SoC 1310以提供基于平台的功率管理,例如基于系统是被电池1390供 电还是经由AC适配器1395被AC电力供电。除了这个基于电源的功率管 理以外,PMIC 1380还可基于环境和使用状况来执行平台功率管理活动。 此外,PMIC 1380可向SoC 1310传达控制和状态信息以引起SoC1310内 的各种功率管理动作。
仍参考图13,为了提供无线能力,WLAN单元1350耦合到SoC 1310 并且进而耦合到天线1355。在各种实现方式中,WLAN单元1350可根据 一个或多个无线协议提供通信。
如还图示的,多个传感器1360可耦合到SoC 1310。这些传感器可包 括各种加速度计、环境和其他传感器,包括用户姿态传感器。最后,音频 编解码器1365耦合到SoC 1310以提供到音频输出设备1370的接口。当然 要理解,虽然在图13中是以这个特定实现方式示出的,但许多变化和替 换是可能的。
现在参考图14,示出了诸如笔记本、UltrabookTM或其他小外形参数 系统之类的代表性计算机系统1400的框图。处理器1410在一个实施例中 包括微处理器、多核心处理器、多线程处理器、超低电压处理器、嵌入式 处理器、或者其他已知的处理元件。在图示的实现方式中,处理器1410 充当主处理单元和中央中枢来与系统1400的各种组件中的许多进行通信, 并且可包括如本文所述的功率管理电路。作为一个示例,处理器1410被 实现为SoC。
处理器1410在一个实施例中与系统存储器1415通信。作为说明性示 例,系统存储器1415是经由多个存储器设备或模块实现的,以提供给定 量的系统存储器。
为了提供对诸如数据、应用、一个或多个操作系统等等之类的信息的 持续性存储,大容量存储装置1420也可耦合到处理器1410。在各种实施 例中,为了使能更薄和更轻的系统设计以及为了改善系统响应能力,可经 由SSD来实现这个大容量存储装置或者可主要利用硬盘驱动器(hard disk drive,HDD)来实现该大容量存储装置,其中较小量的SSD存储充当 SSD缓存来使得能够在掉电事件期间对情境状态和其他这种信息进行非易 失性存储,从而使得在系统活动重发起时可发生快速加电。图14中还示 出的是,闪速设备1422可耦合到处理器1410,例如经由串行外围接口 (serial peripheral interface,SPI)。这个闪速设备可提供对系统软件的非 易失性存储,包括基本输入/输出软件(basic input/output software,BIOS) 以及系统的其他固件。
各种输入/输出(I/O)设备可存在于系统1400内。具体而言,在图14 的实施例中示出的是显示器1424,其可以是还提供触摸屏1425的高清晰 度LCD或LED面板。在一个实施例中,显示器1424可经由显示互连耦合 到处理器1410,该显示互连可被实现为高性能图形互连。触摸屏1425可 经由另一互连耦合到处理器1410,该另一互连在一实施例中可以是I2C互 连。如图14中还示出的,除了触摸屏1425以外,借由触摸的用户输入也 可经由触摸板1430发生,该触摸板1430可被配置在机壳内并且也可耦合 到与触摸屏1425相同的I2C互连。
为了感知计算和其他目的,各种传感器可存在于系统内并且可按不同 的方式耦合到处理器1410。某些惯性和环境传感器可通过传感器中枢 1440(例如经由I2C互连)耦合到处理器1410。在图14所示的实施例中, 这些传感器可包括加速度计1441、环境光传感器(ambient light sensor, ALS)1442、罗盘1443、以及陀螺仪1444。其他环境传感器可包括一个或 多个热传感器1446,该热传感器1446在一些实施例中经由系统管理总线 (SMBus)总线耦合到处理器1410。
在图14中还可看出,各种外围设备可经由低引脚数(low pin count, LPC)互连耦合到处理器1410。在示出的实施例中,各种组件可通过嵌入 式控制器1435被耦合。这种组件可包括键盘1436(例如,经由PS2接口 耦合)、风扇1437、以及热传感器1439。在一些实施例中,触摸板1430 也可经由PS2接口耦合到EC 1435。此外,诸如可信平台模块(trustedplatform module,TPM)1438之类的安全性处理器也可经由这个LPC互连 耦合到处理器1410。
系统1400可通过各种方式与外部设备进行通信,包括无线地进行通 信。在图14所示的实施例中,存在各种无线模块,其中每一者可对应于 被配置用于特定的无线通信协议的无线电装置。用于诸如近场之类的短距 离中的无线通信的一种方式可经由NFC单元1445,该NFC单元1445在 一个实施例中可经由SMBus与处理器1410通信。注意,经由此NFC单元 1445,彼此近邻的设备可通信。
从图14中还可看出,额外的无线单元可包括其他短距离无线引擎, 包括WLAN单元1450和BluetoothTM单元1452。利用WLAN单元1450, 可以实现Wi-FiTM通信,而经由BluetoothTM单元1452,短距离 BluetoothTM通信可发生。这些单元可经由给定的链路与处理器1410通信。
此外,(例如,根据蜂窝或其他无线广域协议的)无线广域通信可经 由WWAN单元1456发生,该WWAN单元1456进而可耦合到订户身份 模块(subscriber identity module,SIM)1457。此外,为了使能对位置信 息的接收和使用,GPS模块1455也可存在。注意,在图14所示的实施例 中,WWAN单元1456和诸如相机模块1454之类的集成捕捉设备可经由 给定的链路通信。
为了提供音频输入和输出,可经由数字信号处理器(digital signal processor,DSP)1460来实现音频处理器,该DSP 1460可经由高清晰度 音频(high definition audio,HDA)链路耦合到处理器1410。类似地, DSP 1460可与集成编码器/解码器(CODEC)及放大器1462通信,该集 成CODEC及放大器1462进而可耦合到输出扬声器1463,该输出扬声器 1463可被实现在机壳内。类似地,放大器及CODEC 1462可被耦合以从麦 克风1465接收音频输入,该麦克风1465在一实施例中可经由双阵列麦克 风(例如,数字麦克风阵列)来实现,以提供高质量音频输入,从而使能 对系统内的各种操作的由语音激活的控制。还要注意,音频输出可从放大 器/CODEC 1462被提供到耳机插孔1464。虽然在图14的实施例中是以这些特定组件示出的,但要理解本发明的范围在这个方面不受限制。
实施例可被实现在许多不同的系统类型中。现在参考图15A,示出了 根据本发明的实施例的系统的框图。如图15A中所示,多处理器系统 1500是点到点互连系统,并且包括经由点到点互连1550耦合的第一处理 器1570和第二处理器1580。如图15A中所示,处理器1570和1580中的 每一者可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心1574a和1574b以及处理器核心1584a和1584b),不过可能多得多的 核心可以在处理器中存在。每个处理器可包括PCU或其他功率管理逻辑来 执行如本文所述的基于处理器的功率管理。
仍参考图15A,第一处理器1570还包括集成存储器控制器 (integrated memorycontroller,IMC)1572和点到点(point-to-point,P-P) 接口1576和1578。类似地,第二处理器1580包括IMC 1582和P-P接口 1586和1588。如图15中所示,IMC 1572和1582将处理器耦合到相应的 存储器,即存储器1532和存储器1534,存储器1532和存储器1534可以 是在本地附接到相应处理器的系统存储器(例如,DRAM)的一部分。第 一处理器1570和第二处理器1580可分别经由P-P互连1562和1564耦合 到芯片组1590。如图15A中所示,芯片组1590包括P-P接口1594和 1598。
此外,芯片组1590包括接口1592,用于通过P-P互连1539将芯片组 1590与高性能图形引擎1538耦合。进而,芯片组1590可经由接口1596 耦合到第一总线1516。如图15A中所示,各种输入/输出(I/O)设备1514 可以与总线桥1518一起耦合到第一总线1516,其中总线桥1518将第一总 线1516耦合到第二总线1520。各种设备可耦合到第二总线1520,例如包括键盘/鼠标1522、通信设备1526和数据存储单元1528(例如,盘驱动器 或者其他大容量存储设备),其中该数据存储单元1528在一个实施例中 可包括代码1530。另外,音频I/O 1524可耦合到第二总线1520。实施例 可被包含到其他类型的包括移动设备的系统中,该移动设备比如是智能蜂 窝电话、平板计算机、上网本、UltrabookTM,等等。
现在参考图15B,示出了根据本发明的实施例的第二更具体示范性系 统1501的框图。图15A和图15B中的相似元素带有相似的标号,并且图 15A的某些方面被从图15B中省略以避免模糊图15B的其他方面。
图15B图示出处理器1570、1580可分别包括集成存储器和I/O控制逻 辑(“CL”)1571和1581。从而,控制逻辑1571和1581包括集成存储 器控制器单元并且包括I/O控制逻辑。图15B图示出不仅存储器1532、 1534耦合到控制逻辑1571和1581,而且I/O设备1513也耦合到控制逻辑 1571和1581。传统I/O设备1515耦合到芯片组1590。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表 性代码实现,该代表性代码表示和/或定义诸如处理器之类的集成电路内的 逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。当被 机器读取时,指令可使得该机器制作逻辑来执行本文描述的技术。这种被 称为“IP核心”的表现形式是针对集成电路的逻辑的可重复使用单元,这 些单元可作为描述该集成电路的结构的硬件模型被存储在有形机器可读介 质上。该硬件模型可被提供给各种客户或制造设施,它们在制造集成电路 的制作机器上加载该硬件模型。可以制作集成电路,使得该电路执行与本 文描述的任何实施例关联描述的操作。
图16是图示出IP核心开发系统1600的框图,该IP核心开发系统 1600可用于制造集成电路来执行根据实施例的操作。IP核心开发系统1600可用于生成模块化的、可重复使用的设计,这些设计可被包含到更大 的设计中或者被用于构造整个集成电路(例如,SoC集成电路)。设计设 施1630可以以高级别编程语言(例如,C/C++)生成IP核心设计的软件 模拟1610。软件模拟1610可用于设计、测试和验证IP核心的行为。然后 可从模拟模型创建或合成寄存器传送级(register transfer level,RTL)设计。 RTL设计1615是对硬件寄存器之间的数字信号的流动进行建模的集成电 路的行为的抽象,其包括利用经建模的数字信号执行的关联逻辑。除了 RTL设计1615以外,也可创建、设计或者合成在逻辑级或晶体管级的更 低级别设计。从而,初始设计和模拟的具体细节可变化。
RTL设计1615或等同物还可被设计设施合成为硬件模型1620,该硬 件模型1620可采取硬件描述语言(hardware description language,HDL) 或者物理设计数据的某种其他表现形式。HDL可被进一步模拟或测试来验 证IP核心设计。IP核心设计可被存储来利用非易失性存储器1640(例如, 硬盘、闪速存储器、或者任何其他非易失性存储介质)输送到第三方制作 设施1665。或者,IP核心设计可通过有线连接1650或无线连接1660(例 如,经由互联网)被传输。制作设施1665随后可制作至少部分基于该IP 核心设计的集成电路。制作出的集成电路可被配置为根据本文描述的组件 和/或过程来执行操作。
下文描述的图17A-图25详述了用于实现本文描述的组件和/或过程的 实施例的示范性体系结构和系统。在一些实施例中,本文描述的一个或多 个硬件组件和/或指令被如下详述那样来仿真,或者被实现为软件模块。
可按下文详述的“通用向量友好指令格式”来实现上文详述的(一个 或多个)指令的实施例。在其他实施例中,这种格式不被利用并且另一指 令格式被使用,然而,下面对于写入掩码寄存器、各种数据变换(调配、 广播等等)、寻址等等的描述一般适用于对以上(一个或多个)指令的实 施例的描述。此外,下文详述了示范性系统、体系结构和流水线。以上(一个或多个)指令的实施例可在这种系统、体系结构和流水线上被执行, 但不限于详述的那些。
指令集可包括一个或多个指令格式。给定的指令格式可定义各种字段(例如,比特的数目、比特的位置)来指定要执行的操作(例如,操作码) 和要在其上执行该操作的(一个或多个)操作对象和/或其他(一个或多个) 数据字段(例如,掩码),等等。一些指令格式通过指令模板(或子格式) 的定义被进一步分解。例如,给定的指令格式的指令模板可被定义为具有 该指令格式的字段的不同子集(包括的字段通常是按相同顺序的,但至少 一些具有不同的比特位置,因为包括的字段更少)和/或被定义为具有以不 同方式被解读的给定字段。从而,ISA的每个指令利用给定的指令格式被 表达(并且如果定义了的话,以该指令格式的指令模板中的给定一个指令 模板来被表达)并且包括用于指定操作和操作对象的字段。例如,示范性 ADD指令具有特定的操作码和指令格式,该指令格式包括操作码字段来指 定该操作码并且包括操作对象字段来选择操作对象(源1/目的地和源2); 并且此ADD指令在指令流中的出现将在选择特定操作对象的操作对象字 段中具有特定内容。被称为高级向量扩展(Advanced Vector Extension, AVX)(AVX1和AVX2)并且使用向量扩展(VectorExtension,VEX) 编码方案的SIMD扩展的集合已被发布和/或发表(例如,参见
Figure BDA0003356533580000301
64和IA-32体系结构软件开发者手册,2014年9月;以及参见
Figure BDA0003356533580000302
高级向 量扩展编程参考,2014年10月)。
示范性指令格式
可按不同的格式来实现本文描述的(一个或多个)指令的实施例。此 外,下文详述了示范性系统、体系结构和流水线。(一个或多个)指令的 实施例可在这种系统、体系结构和流水线上被执行,但不限于详述的那些。
通用向量友好指令格式
向量友好指令格式是适合于向量指令的指令格式(例如,有某些特定 于向量操作的字段)。虽然描述了其中向量和标量操作两者通过向量友好 指令格式受到支持的实施例,但替换实施例只使用向量友好指令格式的向 量操作。
图17A-图17B是根据本发明的实施例图示出通用向量友好指令格式 及其指令模板的框图。图17A是根据本发明的实施例图示出通用向量友好 指令格式及其类别A指令模板的框图;而图17B是根据本发明的实施例图 示出通用向量友好指令格式及其类别B指令模板的框图。具体而言,针对 通用向量友好指令格式1700定义了类别A和类别B指令模板,这两个指 令模板都包括无存储器访问1705指令模板和存储器访问1720指令模板。 术语“通用”在向量友好指令格式的情境中指的是该指令格式不被绑定到 任何特定的指令集。
虽然将描述其中向量友好指令格式支持以下项目的本发明的实施例: 64字节向量操作对象长度(或大小),其具有32比特(4字节)或64比 特(8字节)的数据元素宽度(或大小)(从而,64字节向量由16个双字 大小的元素或者8个四字大小的元素构成);64字节向量操作对象长度 (或大小),其具有16比特(2字节)或8比特(1字节)的数据元素宽 度(或大小);32字节向量操作对象长度(或大小),其具有32比特(4 字节)、64比特(8字节)、16比特(2字节)、或者8比特(1字节) 的数据元素宽度(或大小);以及16字节向量操作对象长度(或大小), 其具有32比特(4字节)、64比特(8字节)、16比特(2字节)、或者 8比特(1字节)的数据元素宽度(或大小);但替换实施例可支持具有 更多、更少或不同的数据元素宽度(例如,128比特(16字节)的数据元 素宽度)的更多、更少和/或不同的向量操作对象大小(例如,256字节向 量操作对象)。
图17A中的类别A指令模板包括:1)在无存储器访问1705指令模板 内,示出了无存储器访问、完全舍入控制型操作1710指令模板和无存储 器访问、数据变换型操作1715指令模板;以及2)在存储器访问1720指 令模板内,示出了存储器访问、暂态1725指令模板和存储器访问、非暂 态1730指令模板。图17B中的类别B指令模板包括:1)在无存储器访问 1705指令模板内,示出了无存储器访问、写入掩码控制、部分舍入控制型 操作1712指令模板和无存储器访问、写入掩码控制、vsize型操作1717指 令模板;以及2)在存储器访问1720指令模板内,示出了存储器访问、写 入掩码控制1727指令模板。
通用向量友好指令格式1700包括下面按图17A-17B中所示的顺序列 出的以下字段。
格式字段1740—此字段中的特定值(指令格式标识符值)唯一地标 识向量友好指令格式,从而标识出采取向量友好指令格式的指令出现在指 令流中。这样,此字段是可选的,因为它对于只具有通用向量友好指令格 式的指令集而言是不需要的。
基本操作字段1742—其内容区分不同的基本操作。
寄存器索引字段1744—其内容直接地或者通过地址生成指定源和目 的操作对象的位置,无论它们在寄存器中还是在存储器中。这些包括充分 数目的比特来从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存 器文件中选择N个寄存器。虽然在一个实施例中N可以是多达三个源和一 个目的寄存器,但替换实施例可支持更多或更少的源和目的寄存器(例如, 可支持多达两个源,其中这些源之一也充当目的地;可支持多达三个源, 其中这些源之一也充当目的地;可支持多达两个源和一个目的地)。
修饰字段1746—其内容区分通用向量指令格式中指定存储器访问的 指令与那些不指定存储器访问的指令的出现;也就是说,区分无存储器访 问1705指令模板与存储器访问1720指令模板。存储器访问操作读取和/或 写入到存储器层次体系(在一些情况下利用寄存器中的值指定源和/或目的 地址),而非存储器访问操作不读取和/或写入存储器层次体系(例如,源 和目的地是寄存器)。虽然在一个实施例中这个字段也在执行存储器地址计算的三种不同方式之间进行选择,但替换实施例可支持更多、更少或不 同的方式来执行存储器地址计算。
增强操作字段1750—其内容区分除了基本操作以外还要执行各种不 同操作中的哪一种。此字段是依情境而定的。在本发明的一个实施例中, 此字段被划分成类别字段1768、阿尔法字段1752、以及贝塔字段1754。 增强操作字段1750允许了在单个指令而不是2、3或4个指令中执行共同 的操作群组。
缩放比例字段1760—其内容允许了缩放索引字段的内容以进行存储 器地址生成(例如,对于使用2缩放比例*索引+基址的地址生成)。
位移字段1762A—其内容被用作存储器地址生成的一部分(例如, 对于使用2缩放比例*索引+基址+位移的地址生成)。
位移因子字段1762B(注意,将位移字段1762A并列在位移因子字段 1762B的正上方表明一者或另一者被使用)—其内容被用作地址生成的一 部分;其指定要被存储器访问的大小(N)缩放的位移因子—其中N是存 储器访问中的字节的数目(例如,对于使用2缩放比例*索引+基址+经缩放 的位移的地址生成)。冗余的低阶比特被忽略,并且因此,位移因子字段的内容被乘以存储器操作对象总大小(N)以便生成要被用于计算有效地 址的最终位移。N的值由处理器硬件在运行时基于完整操作码字段1774 (本文中稍后描述)和数据操纵字段1754C来确定。位移字段1762A和位 移因子字段1762B是可选的,因为它们不被用于无存储器访问1705指令 模板,和/或不同的实施例可只实现两者中的一者或者两者都不实现。
数据元素宽度字段1764—其内容区分若干个数据元素宽度中的哪一 个要被使用(在一些实施例中是对于所有指令;在其他实施例中只对于指 令中的一些)。此字段是可选的,因为在只有一个数据元素宽度受到支持 和/或数据元素宽度是利用操作码的某个方面来受到支持的情况下,则不需 要该字段。
写入掩码字段1770—其内容基于每数据元素位置来控制目的向量操 作对象中的该数据元素位置是否反映基本操作和增强操作的结果。类别A 指令模板支持合并-写入掩蔽,而类别B指令模板支持合并-写入掩蔽和归 零-写入掩蔽两者。当合并时,向量掩码允许了目的地中的任何元素集合被 保护免于在(由基本操作和增强操作指定的)任何操作的执行期间的更新; 在其他的一个实施例中,保留目的地的相应的掩码比特具有0的每个元素的旧值。与之不同,归零向量掩码允许了目的地中的任何元素集合在(由 基本操作和增强操作指定的)任何操作的执行期间被归零;在一个实施例 中,目的地的元素在相应的掩码比特具有0值时被设置到0。此功能的子 集是控制被执行的操作的向量长度(即,被修改的元素的跨度,从第一个 到最后一个)的能力;然而,被修改的元素不是必须要连续。从而,写入 掩码字段1770允许了部分向量操作,包括加载、存储、算术、逻辑,等 等。虽然描述了其中写入掩码字段1770的内容选择若干个写入掩码寄存 器中包含要使用的写入掩码的那一个(从而写入掩码字段1770的内容间 接识别要执行的该掩蔽)的本发明实施例,但替换实施例作为替代或附加 允许掩码写入字段1770的内容直接指定要执行的掩蔽。
立即数字段1772—其内容允许对立即数(immediate)的指定。此字 段是可选的,因为在不支持立即数的通用向量友好格式的实现方式中该字 段不存在并且在不使用立即数的指令中该字段不存在。
类别字段1768—其内容区分指令的不同类别。参考图17A-17B,此 字段的内容在类别A和类别B指令之间进行选择。在图17A-17B中,圆 角方形被用于表明特定的值存在于一字段中(例如,分别在图17A-17B中 针对类别字段1768的类别A 1768A和类别B 1768B)。
类别A的指令模板
在类别A的非存储器访问1705指令模板的情况下,阿尔法字段1752 被解读为RS字段1752A,其内容区分不同的增强操作类型中的哪一个要 被执行(例如,对于无存储器访问舍入型操作1710和无存储器访问数据 变换型操作1715指令模板分别指定舍入1752A.1和数据变换1752A.2), 而贝塔字段1754区分指定类型的操作中的哪一个要被执行。在无存储器 访问1705指令模板中,缩放比例字段1760、位移字段1762A和位移缩放 比例字段1762B不存在。
无存储器访问指令模板—完全舍入控制型操作
在无存储器访问完全舍入控制型操作1710指令模板中,贝塔字段 1754被解读为舍入控制字段1754A,其(一个或多个)内容提供静态舍入。 虽然在本发明的描述实施例中舍入控制字段1754A包括抑制所有浮点异常 (suppress all floating pointexceptions,SAE)字段1756和舍入操作控制字 段1758,但替换实施例可支持可将这两个概念都编码到同一字段中或者可 只具有这些概念/字段中的一者或另一者(例如,可只具有舍入操作控制字 段1758)。
SAE字段1756—其内容区分是否禁用异常事件报告;当SAE字段 1756的内容指示抑制被启用时,给定的指令不报告任何种类的浮点异常标 志并且不引发任何浮点异常处理程序。
舍入操作控制字段1758—其内容区分要执行一组舍入操作中的哪一 个(例如,向上舍入、向下舍入、朝零舍入和朝最近舍入)。从而,舍入 操作控制字段1758允许了基于每指令改变舍入模式。在其中处理器包括 用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制 字段1750的内容覆写该寄存器值。
无存储器访问指令模板—数据变换型操作
在无存储器访问数据变换型操作1715指令模板中,贝塔字段1754被 解读为数据变换字段1754B,其内容区分若干个数据变换中的哪一个要被 执行(例如,无数据变换、调配、广播)。
在类别A的存储器访问1720指令模板的情况下,阿尔法字段1752被 解读为逐出提示字段1752B,其内容区分要使用逐出提示中的哪一个(在 图17A中,对于存储器访问暂态1725指令模板和存储器访问非暂态1730 指令模板分别指定暂态1752B.1和非暂态1752B.2),而贝塔字段1754被 解读为数据操纵字段1754C,其内容区分若干个数据操纵操作(也称为基 元)中的哪一个要被执行(例如,无操纵;广播;源的向上转换;以及目 的地的向下转换)。存储器访问1720指令模板包括缩放比例字段1760, 并且可选地包括位移字段1762A或者位移缩放比例字段1762B。
向量存储器指令执行从存储器的向量加载和向存储器的向量存储,带 有转换支持。与常规向量指令一样,向量存储器指令以按数据元素的方式 从/向存储器传送数据,其中被实际传送的由元素向量掩码的内容来规定, 该元素向量掩码被选择作为写入掩码。
存储器访问指令模板—暂态
暂态数据是可能很快就被再使用、快到足以受益于缓存的数据。然而, 这是一种提示,并且不同的处理器可按不同的方式实现它,包括完全忽略 该提示。
存储器访问指令模板—非暂态
非暂态数据是这样的数据:该数据不太可能很快被再使用、快到足以 受益于在第1级缓存中进行缓存,而应当被优先逐出。然而,这是一种提 示,并且不同的处理器可按不同的方式实现它,包括完全忽略该提示。
类别B的指令模板
在类别B的指令模板的情况下,阿尔法字段1752被解读为写入掩码 控制(Z)字段1752C,其内容区分由写入掩码字段1770控制的写入掩蔽 应当是合并还是归零。
在类别B的非存储器访问1705指令模板的情况下,贝塔字段1754的 一部分被解读为RL字段1757A,其内容区分不同增强操作类型中的哪一 个要被执行(例如,对于无存储器访问、写入掩码控制、部分舍入控制型 操作1712指令模板和无存储器访问、写入掩码控制、VSIZE型操作1717 指令模板分别指定舍入1757A.1和向量长度(VSIZE)1757A.2),而贝塔字段1754的其余部分区分所指定类型的操作中的哪一个要被执行。在无 存储器访问1705指令模板中,缩放比例字段1760、位移字段1762A和位 移缩放比例字段1762B不存在。
在无存储器访问、写入掩码控制、部分舍入控制型操作1710指令模 板中,贝塔字段1754的其余部分被解读为舍入操作字段1759A并且异常 事件报告被禁用(给定的指令不报告任何种类的浮点异常标志并且不引发 任何浮点异常处理程序)。
舍入操作控制字段1759A—正如舍入操作控制字段1758一样,其内 容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、朝 零舍入和朝最近舍入)。从而,舍入操作控制字段1759A允许了基于每指 令改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本 发明的一个实施例中,舍入操作控制字段1750的内容覆写该寄存器值。
在无存储器访问、写入掩码控制、VSIZE型操作1717指令模板中, 贝塔字段1754的其余部分被解读为向量长度字段1759B,其内容区分要在 若干个数据向量长度中的哪一个上执行(例如,128、256或512字节)。
在类别B的存储器访问1720指令模板的情况下,贝塔字段1754的一 部分被解读为广播字段1757B,其内容区分是否要执行广播型数据操纵操 作,而贝塔字段1754的其余部分被解读为向量长度字段1759B。存储器访 问1720指令模板包括缩放比例字段1760,并且可选地包括位移字段 1762A或者位移缩放比例字段1762B。
关于通用向量友好指令格式1700,完整操作码字段1774被示为包括 格式字段1740、基本操作字段1742、以及数据元素宽度字段1764。虽然 示出了其中完整操作码字段1774包括所有这些字段的一个实施例,但完 整操作码字段1774在不支持所有这些字段的实施例中包括比所有这些字 段更少的字段。完整操作码字段1774提供操作代码(操作码)。
增强操作字段1750、数据元素宽度字段1764以及写入掩码字段1770 允许了这些特征在通用向量友好指令格式中基于每指令被指定。
写入掩码字段和数据元素宽度字段的组合创建了类型化指令,因为它 们允许基于不同的数据元素宽度来应用掩码。
在类别A和类别B内找到的各种指令模板在不同的情形中是有益的。 在本发明的一些实施例中,不同的处理器或处理器内不同的核心可只支持 类别A、只支持类别B、或者支持两个类别。例如,打算用于通用计算的 高性能通用乱序核心可只支持类别B,打算主要用于图形和/或科学(吞吐 量)计算的核心可只支持类别A,并且打算用于两者的核心可支持这两个 类别(当然,具有来自两个类别的模板和指令的某种混合、但不具有来自 两个类别的所有模板和指令的核心是在本发明的范围内的)。另外,单个 处理器可包括多个核心,所有这些核心支持相同类别或者其中不同的核心 支持不同的类别。例如,在具有分开的图形和通用核心的处理器中,打算 主要用于图形和/或科学计算的图形核心之一可只支持类别A,而通用核心 中的一个或多个可以是只支持类别B的打算用于通用计算的具有乱序执行 和寄存器重命名的高性能通用核心。不具有单独的图形核心的另一处理器 可包括支持类别A和类别B两者的一个或多个通用有序或乱序核心。当然, 在本发明的不同实施例中,来自一个类别的特征也可被实现在另一类别中。 以高级别语言编写的程序将被置于(例如,被及时编译或静态编译到)各 种不同的可执行形式中,包括:1)只具有受到目标处理器支持的(一个 或多个)类别的指令以便执行的形式;或者2)具有利用所有类别的指令 的不同组合编写的替换例程并且具有控制流程代码的形式,该控制流程代 码基于当前在执行代码的处理器所支持的指令来选择要执行的例程。
示范性特定向量友好指令格式
图18A-图18C是根据本发明的实施例图示出示范性特定向量友好指 令格式的框图。图18A示出了在如下意义上特定的特定向量友好指令格式 1800:其指定字段的位置、大小、解读、以及顺序,以及这些字段中的一 些的值。特定向量友好指令格式1800可被用于扩展x86指令集,从而字 段中的一些与现有的x86指令集及其扩展(例如,AVX)中使用的那些相 似或相同。此格式与带有扩展的现有x86指令集的前缀编码字段、真实操 作码字节字段、MOD R/M字段、SIB字段、位移字段以及立即数字段保持 一致。图示出了来自图18A-18C的字段所映射到的来自图17A-17B的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式1700的情 境中参考特定向量友好指令格式1800描述了本发明的实施例,但除非有 声明,否则本发明不限于特定向量友好指令格式1800。例如,通用向量友 好指令格式1700对于各种字段设想了各种可能的大小,而特定向量友好 指令格式1800被示为具有特定大小的字段。作为具体示例,虽然数据元 素宽度字段1764在特定向量友好指令格式1800中被示为一比特字段,但 本发明不限于此(也就是说,通用向量友好指令格式1700设想了数据元 素宽度字段1764的其他大小)。
通用向量友好指令格式1700包括按图18A中所示的顺序的下面列出 的以下字段。
EVEX前缀(字节0-3)1802—被编码为四字节形式。
格式字段1740(EVEX字节0,比特[7:0])—第一字节(EVEX字节 0)是格式字段1740并且其包含0x62(在本发明的一个实施例中用于区分 向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供特定能力的若干个比特字 段。
REX字段1805(EVEX字节1,比特[7-5])—由EVEX.R比特字段 (EVEX字节1,比特[7]–R)、EVEX.X比特字段(EVEX字节1,比 特[6]–X)、和EVEX.B字节1,比特[5]–B)构成。EVEX.R、 EVEX.X和EVEX.B比特字段提供与相应的VEX比特字段相同的功能,并 且被利用反码(1s complement)形式来编码,即,ZMM0被编码为1111B, ZMM15被编码为0000B。指令的其他字段如本领域中已知的那样对寄存 器索引的较低三个比特进行编码(rrr、xxx和bbb),从而Rrrr、Xxxx和 Bbbb可通过添加EVEX.R、EVEX.X和EVEX.B来被形成。
REX'字段1810—这是REX'字段1810的第一部分并且是用于对扩展 32寄存器集合的高16或低16进行编码的EVEX.R'比特字段(EVEX字节 1,比特[4]-R')。在本发明的一个实施例中,此比特以及如下所示的其他 比特被以比特反转格式来存储以与BOUND指令相区分(在公知的x86 32 比特模式中),BOUND指令的真实操作码字节是62,但不在MOD R/M 字段(下文描述)中接受MOD字段中的11的值;本发明的替换实施例不 以反转格式存储这个比特和下面指示的其他比特。值1被用于对低16寄 存器编码。换言之,R'Rrrr是通过组合EVEX.R'、EVEX.R和来自其他字 段的其他RRR来形成的。
操作码映射字段1815(EVEX字节1,比特[3:0]–mmmm)—其内 容编码了所暗示的前导操作码字节(0F、0F 38、或0F 3)。
数据元素宽度字段1764(EVEX字节2,比特[7]–W)—由符号 EVEX.W表示。EVEX.W被用于定义数据类型的粒度(大小)(32比特数 据元素或64比特数据元素)。
EVEX.vvvv 1820(EVEX字节2,比特[6:3]-vvvv)—EVEX.vvvv的 作用可包括以下的:1)EVEX.vvvv编码了以反转(反码)形式指定的第 一源寄存器操作对象,并且对于具有2个或更多个源操作对象的指令是有 效的;2)EVEX.vvvv编码了对于某些向量移位以反码形式指定的目的寄 存器操作对象;或者3)EVEX.vvvv不编码任何操作对象,该字段被预留 并且应当包含1111b。从而,EVEX.vvvv字段1820编码了以反转(反码) 形式存储的第一源寄存器指定符的4个低阶比特。取决于指令,一额外的 不同EVEX比特字段被用于将指定符大小扩展到32个寄存器。
EVEX.U 1768类别字段(EVEX字节2,比特[2]-U)—如果EVEX.U =0,则其指示类别A或EVEX.U0;如果EVEX.U=1,则其指示类别B 或者EVEX.U1。
前缀编码字段1825(EVEX字节2,比特[1:0]-pp)—为基本操作字 段提供额外比特。除了针对采取EVEX前缀格式的传统SSE指令提供支持 以外,这还具有使SIMD前缀紧缩的益处(EVEX前缀只要求2个比特, 而不是要求一字节来表达SIMD前缀)。在一个实施例中,为了支持使用 采取传统格式和采取EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H) 的传统SSE指令,这些传统SIMD前缀被编码到SIMD前缀编码字段中; 并且在运行时被扩展成传统SIMD前缀,然后才被提供到解码器的PLA (因此PLA可执行这些传统指令的传统和EVEX格式两者,而无需修 改)。虽然较新的指令可直接使用EVEX前缀编码字段的内容作为操作码 扩展,但某些实施例为了一致性以类似的方式扩展,但允许这些传统 SIMD前缀指定不同的含义。替换实施例可重设计PLA来支持2比特 SIMD前缀编码,从而不要求扩展。
阿尔法字段1752(EVEX字节3,比特[7]–EH;也称为EVEX.EH、 EVEX.rs、EVEX.RL、EVEX.写入掩码控制、以及EVEX.N;也用α来图 示)—如前所述,此字段是依情境而定的。
贝塔字段1754(EVEX字节3,比特[6:4]–SSS;也称为EVEX.s2-0、 EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ来图示)— 如前所述,此字段是依情境而定的。
REX'字段1810—这是REX'字段的剩余部分并且是可用于对扩展32 寄存器集合的高16或低16进行编码的EVEX.V'比特字段(EVEX字节3, 比特[3]-V')。此比特被以比特反转格式来存储。值1被用于对低16寄存 器编码。换言之,V'VVVV是通过组合EVEX.V'、EVEX.vvvv来形成的。
写入掩码字段1770(EVEX字节3,比特[2:0]-kkk)—其内容指定如 前所述的写入掩码寄存器中的寄存器的索引。在本发明的一个实施例中, 特定值EVEX.kkk=000具有暗示对于特定指令没有使用写入掩码的特殊行 为(这可通过各种方式来实现,包括使用被硬连线到全一的写入掩码或者 绕过掩蔽硬件的硬件)。
真实操作码字段1830(字节4)也被称为操作码字节。在此字段中指 定操作码的一部分。
MOD R/M字段1840(字节5)包括MOD字段1842、Reg字段1844、 以及R/M字段1846。如前所述,MOD字段1842的内容区分存储器访问 和非存储器访问操作。Reg字段1844的作用可被总结成两个情形:编码目 的寄存器操作对象或者源寄存器操作对象,或者被作为操作码扩展来对待 并且不被用于编码任何指令操作对象。R/M字段1846的作用可包括以下 的:编码引用存储器地址的指令操作对象,或者编码目的寄存器操作对象 或源寄存器操作对象。
缩放比例、索引、基数(Scale,Index,Base,SIB)字节(字节6)— 如前所述,缩放比例字段1850的内容被用于存储器地址生成。SIB.xxx 1854和SIB.bbb 1856—先前已关于寄存器索引Xxxx和Bbbb提及了这些 字段的内容。
位移字段1762A(字节7-10)—当MOD字段1842包含10时,字节 7-10是位移字段1762A,并且其工作方式与传统32比特位移(disp32)相 同并且以字节粒度工作。
位移因子字段1762B(字节7)—当MOD字段1842包含01时,字 节7是位移因子字段1762B。此字段的位置与传统x86指令集8比特位移 (disp8)的相同,其以字节粒度工作。由于disp8被符号扩展,所以其只 能在-128和127字节偏移量之间寻址;就64字节缓存线而言,disp8使用 8个比特,这8个比特可被设置到仅四个真正有用的值-128、-64、0和64; 由于经常需要更大的范围,所以使用disp32;然而,disp32要求4个字节。 与disp8和disp32不同,位移因子字段1762B是对disp8的重解读;当使 用位移因子字段1762B时,实际位移由位移因子字段的内容乘以存储器操 作对象访问的大小(N)来确定。这种类型的位移被称为disp8*N。这减小 了平均指令长度(单个字节被用于位移,但具有大得多的范围)。这种压缩的位移是基于如下假设的:有效位移是存储器访问的粒度的倍数,并且 因此,地址偏移量的冗余低阶比特不需要被编码。换言之,位移因子字段 1762B代替了传统x86指令集8比特位移。从而,位移因子字段1762B被 按与x86指令集8比特位移相同的方式编码(因此在ModRM/SIB编码规 则中没有变化),唯一例外是disp8被超载到disp8*N。换言之,在编码规则或编码长度方面没有变化,而只在硬件对位移值的解读方面有变化(硬 件需要按存储器操作对象的大小来缩放位移以获得按字节的地址偏移量)。 立即数字段1772如前所述那样操作。
完整操作码字段
图18B是根据本发明的一个实施例图示出构成完整操作码字段1774 的特定向量友好指令格式1800的字段的框图。具体而言,完整操作码字 段1774包括格式字段1740、基本操作字段1742、以及数据元素宽度(W) 字段1764。基本操作字段1742包括前缀编码字段1825、操作码映射字段 1815、以及真实操作码字段1830。
寄存器索引字段
图18C是根据本发明的一个实施例图示出构成寄存器索引字段1744 的特定向量友好指令格式1800的字段的框图。具体而言,寄存器索引字 段1744包括REX字段1805、REX'字段1810、MODR/M.reg字段1844、 MODR/M.r/m字段1846、VVVV字段1820、xxx字段1854、以及bbb字 段1856。
增强操作字段
图18D是根据本发明的一个实施例图示出构成增强操作字段1750的 特定向量友好指令格式1800的字段的框图。当类别(U)字段1768包含0 时,其表示EVEX.U0(类别A1768A);当其包含1时,其表示 EVEX.U1(类别B 1768B)。当U=0并且MOD字段1842包含11时(表 示无存储器访问操作),阿尔法字段1752(EVEX字节3,比特[7]–EH) 被解读为rs字段1752A。当rs字段1752A包含1时(舍入1752A.1),贝 塔字段1754(EVEX字节3,比特[6:4]-SSS)被解读为舍入控制字段 1754A。舍入控制字段1754A包括一比特SAE字段1756和两比特舍入操 作字段1758。当rs字段1752A包含0时(数据变换1752A.2),贝塔字段 1754(EVEX字节3,比特[6:4]-SSS)被解读为三比特数据变换字段 1754B。当U=0并且MOD字段1842包含00、01或10时(表示存储器访 问操作),阿尔法字段1752(EVEX字节3,比特[7]–EH)被解读为逐 出提示(eviction hint,EH)字段1752B并且贝塔字段1754(EVEX字节3, 比特[6:4]-SSS)被解读为三比特数据操纵字段1754C。
当U=1时,阿尔法字段1752(EVEX字节3,比特[7]–EH)被解读 为写入掩码控制(Z)字段1752C。当U=1并且MOD字段1842包含11 时(表示无存储器访问操作),贝塔字段1754的一部分(EVEX字节3, 比特[4]–S0)被解读为RL字段1757A;当其包含1(舍入1757A.1)时, 贝塔字段1754的其余部分(EVEX字节3,比特[6-5]-S2-1)被解读为舍入 操作字段1759A,而当RL字段1757A包含0(VSIZE 1757.A2)时,贝塔 字段1754的其余部分(EVEX字节3,比特[6-5]-S2-1)被解读为向量长度 字段1759B(EVEX字节3,比特[6-5]-L1-0)。当U=1并且MOD字段1842包含00、01或10时(表示存储器访问操作),贝塔字段1754 (EVEX字节3,比特[6:4]-SSS)被解读为向量长度字段1759B(EVEX 字节3,比特[6-5]-L1-0)和广播字段1757B(EVEX字节3,比特[4]-B)。
示范性寄存器体系结构
图19是根据本发明的一个实施例的寄存器体系结构1900的框图。在 图示的实施例中,存在32个512比特宽的向量寄存器1910;这些寄存器 被称为zmm0至zmm31。低16zmm寄存器的低阶256比特被覆盖在寄存 器ymm0-16上。低16zmm寄存器的低阶128比特(ymm寄存器的低阶 128比特)被覆盖在寄存器xmm0-15上。特定向量友好指令格式1800如 以下表格中所示在这些覆盖的寄存器文件上进行操作。
Figure BDA0003356533580000431
Figure BDA0003356533580000441
换言之,向量长度字段1759B在最大长度和一个或多个其他更短长度 之间做出选择,其中每个这种更短长度是前一长度的一半长度;并且没有 向量长度字段1759B的指令模板按最大向量长度进行操作。另外,在一个 实施例中,特定向量友好指令格式1800的类别B指令模板在紧缩或标量 单/双精度浮点数据和紧缩或标量整数数据上进行操作。标量操作是在 zmm/ymm/xmm寄存器中的最低阶数据元素位置上执行的操作;更高阶数 据元素位置或者被保持与其在该指令之前相同,或者被归零,这取决于实 施例。
写入掩码寄存器1915—在图示的实施例中,有8个写入掩码寄存器 (k0至k7),每个的大小是64比特。在替换实施例中,写入掩码寄存器 1915的大小是16比特。如前所述,在本发明的一个实施例中,向量掩码 寄存器k0不能被用作写入掩码;当通常将会指示k0的编码被用于写入掩 码时,其选择硬连线的写入掩码0xFFFF,这实际上针对该指令禁用了写入掩蔽。
通用寄存器1925—在图示的实施例中,有十六个64比特通用寄存器, 它们与现有的x86寻址模式一起被用于寻址存储器操作对象。这些寄存器 被用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至 R15来引用。
标量浮点堆栈寄存器文件(x87堆栈)1945(在其上化名了MMX紧 缩整数平坦寄存器文件1950)—在图示的实施例中,x87堆栈是用于利 用x87指令集扩展在32/64/80比特浮点数据上执行标量浮点操作的八元素 堆栈;而MMX寄存器被用于在64比特紧缩整数数据上执行操作,以及 针对在MMX和XMM寄存器之间执行的一些操作保持操作对象。
本发明的替换实施例可使用更宽或更窄的寄存器。此外,本发明的替 换实施例可使用更多、更少或不同的寄存器文件和寄存器。
示范性核心体系结构、处理器和计算机体系结构
可按不同的方式、为了不同的目的、在不同的处理器中实现处理器核 心。例如,这种核心的实现方式可包括:1)打算用于通用计算的通用有 序核心;2)打算用于通用计算的高性能通用乱序核心;3)主要打算用于 图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括: 1)包括打算用于通用计算的一个或多个通用有序核心和/或打算用于通用 计算的一个或多个通用乱序核心的CPU;以及2)包括主要打算用于图形 和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理 器导致不同的计算机系统体系结构,这些体系结构可包括:1)协处理器 在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中、分开的管 芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有 时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为 专用核心);以及4)片上系统,其可在同一管芯上包括所描述的CPU (有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、 上述的协处理器以及额外的功能。接下来描述示范性核心体系结构,然后 是对示范性处理器和计算机体系结构的描述。
示范性核心体系结构
有序和乱序核心框图
图20A是根据本发明的实施例图示出示范性有序流水线和示范性寄存 器重命名、乱序发出/执行流水线两者的框图。图20B是根据本发明的实施 例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范 性寄存器重命名、乱序发出/执行体系结构核心两者的框图。图20A-图 20B中的实线框图示了有序流水线和有序核心,而虚线框的可选添加图示 了寄存器重命名、乱序发出/执行流水线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图20A中,处理器流水线2000包括取得级2002、长度解码级2004、 解码级2006、分配级2008、重命名级2010、调度(也称为调遣或发出) 级2012、寄存器读取/存储器读取级2014、执行级2016、写回/存储器写入 级2018、异常处理级2022、以及提交级2024。
图20B示出了处理器核心2090包括耦合到执行引擎单元2050的前端 单元2030,并且两者都耦合到存储器单元2070。核心2090可以是精简指 令集计算(reducedinstruction set computing,RISC)核心、复杂指令集计 算(complex instruction setcomputing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替换核心类型。作为另外 一个选项,核心2090可以是专用核心,例如,网络或通信核心、压缩引 擎、协处理器核心、通用计算图形处理单元(general purpose computinggraphics processing unit,GPGPU)核心、图形核心,等等。
前端单元2030包括分支预测单元2032,其耦合到指令缓存单元2034, 指令缓存单元2034耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)2036,该TLB2036耦合到指令取得单元2038,该指令取得 单元2038耦合到解码单元2040。解码单元2040(或解码器)可对指令解 码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其 他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或 其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或 者是从原始指令得出的。可利用各种不同的机制来实现解码单元2040。适 当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列 (programmable logic array,PLA)、微代码只读存储器(read onlymemory,ROM),等等。在一个实施例中,核心2090包括微代码ROM 或其他介质,其为某些宏指令存储微代码(例如,在解码单元2040中或 者以其他方式在前端单元2030内)。解码单元2040耦合到执行引擎单元 2050中的重命名/分配器单元2052。
执行引擎单元2050包括重命名/分配器单元2052,其耦合到引退单元 2054和一组一个或多个调度器单元2056。(一个或多个)调度器单元 2056表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。 (一个或多个)调度器单元2056耦合到(一个或多个)物理寄存器文件 单元2058。物理寄存器文件单元2058中的每一者表示一个或多个物理寄 存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个 不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量 整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指 针),等等。在一个实施例中,物理寄存器文件单元2058包括向量寄存 器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可 提供体系结构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个 或多个)物理寄存器文件单元2058与引退单元2054重叠以示出可用来实 现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排 序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文 件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件; 利用寄存器图谱和寄存器的池;等等)。引退单元2054和(一个或多个) 物理寄存器文件单元2058耦合到(一个或多个)执行集群2060。(一个 或多个)执行集群2060包括一组一个或多个执行单元2062和一组一个或 多个存储器访问单元2064。执行单元2062可在各种类型的数据(例如, 标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作 (例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定 功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元 或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元2056、 (一个或多个)物理寄存器文件单元2058、以及(一个或多个)执行集群 2060被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单 独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量 整数/向量浮点流水线和/或存储器访问流水线,它们各自具有其自己的调 度器单元、物理寄存器文件单元和/或执行集群—并且在单独的存储器访 问流水线的情况下,实现了某些实施例,其中只有此流水线的执行集群具 有(一个或多个)存储器访问单元2064)。还应当理解,在使用分开流水 线的情况下,这些流水线中的一个或多个可以是乱序发出/执行,并且其余 的是有序的。
存储器访问单元2064的集合耦合到存储器单元2070,存储器单元 570包括数据TLB单元2072,数据TLB单元2072耦合到数据缓存单元 2074,数据缓存单元2074耦合到第2级(L2)缓存单元2076。在一个示 范性实施例中,存储器访问单元2064可包括加载单元、存储地址单元、 以及存储数据单元,它们中的每一者耦合到存储器单元2070中的数据 TLB单元2072。指令缓存单元2034进一步耦合到存储器单元2070中的第 2级(L2)缓存单元2076。L2缓存单元2076耦合到一个或多个其他级别 的缓存并且最终耦合到主存储器。
作为示例,示范性寄存器重命名、乱序发出/执行核心体系结构可实现 流水线2000如下:1)指令取得2038执行取得和长度解码级2002和2004; 2)解码单元2040执行解码级2006;3)重命名/分配器单元2052执行分 配级2008和重命名级2010;4)(一个或多个)调度器单元2056执行调 度级2012;5)(一个或多个)物理寄存器文件单元2058和存储器单元2070执行寄存器读取/存储器读取级2014;执行集群2060执行执行级 2016;6)存储器单元2070和(一个或多个)物理寄存器文件单元2058 执行写回/存储器写入级2018;7)在异常处理级2022中可涉及各种单元; 并且8)引退单元2054和(一个或多个)物理寄存器文件单元2058执行 提交级2024。
核心2090可支持一个或多个指令集(例如,x86指令集(带有已随着 较新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS 指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的 额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一 个实施例中,核心2090包括逻辑来支持紧缩数据指令集扩展(例如, AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用紧缩数 据来执行。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个 并行集合),并且可按各种方式来支持多线程处理,包括时间切片式多线 程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时多线 程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式 取得和解码,然后是同时多线程处理,例如像
Figure BDA0003356533580000481
Hyperthreading技术 中那样)。
虽然是在乱序执行的情境中描述寄存器重命名的,但应当理解寄存器 重命名可被用在有序体系结构中。虽然处理器的图示实施例还包括分开的 指令和数据缓存单元2034/2074和共享的L2缓存单元2076,但替换实施 例可针对指令和数据两者具有单个内部缓存,例如,第1级(L1)内部缓 存或者多级别的内部缓存。在一些实施例中,系统可包括内部缓存与在核 心和/或处理器外部的外部缓存的组合。或者,所有缓存可在核心和/或处理器外部。
具体示范性有序核心体系结构
图21A-图21B图示出更具体的示范性有序核心体系结构的框图,该 核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心) 之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻 辑、存储器I/O接口和其他必要I/O逻辑进行通信,这取决于应用。
图21A是根据本发明的实施例的单个处理器核心及其与片上互连网络 2102以及与其第2级(L2)缓存本地子集2104的连接的框图。在一个实 施例中,指令解码器2100支持具有紧缩数据指令集扩展的x86指令集。 L1缓存2106允许低时延访问以将存储器缓存到标量和向量单元中。虽然 在一个实施例中(为了简化设计),标量单元2108和向量单元2110使用 分开的寄存器集合(分别是标量寄存器2112和向量寄存器2114)并且在 它们之间传送的数据被写入到存储器,然后被从第1级(L1)缓存2106 读回,但本发明的替换实施例可使用不同的方案(例如,使用单个寄存器 集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通 信路径)。
L2缓存的本地子集2104是全局L2缓存的一部分,全局L2缓存被划 分成单独的本地子集,每处理器核心有一个。每个处理器核心具有到其自 己的L2缓存本地子集2104的直接访问路径。处理器核心所读取的数据被 存储在其L2缓存子集2104中并且可被迅速访问,所述访问与其他处理器 核心访问其自己的本地L2缓存子集并行进行。处理器核心所写入的数据 被存储在其自己的L2缓存子集2104中并且在必要时被从其他子集冲刷出。 环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理 器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个环状 数据路径在每方向上是1012比特宽的。
图21B是根据本发明的实施例的图21A中的处理器核心的一部分的扩 展视图。图21B包括L1缓存2104的L1数据缓存2106A部分,以及关于 向量单元2110和向量寄存器2114的更多细节。具体而言,向量单元2110 是16宽向量处理单元(vector processing unit,VPU)(参见16宽ALU 2128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元2120调配寄存器输入,利用数值转换单元2122A- B进行的数值转换,以及利用复制单元2124对存储器输入进行的复制。写 入掩码寄存器2126允许断言结果向量写入。
图22是根据本发明的实施例的处理器2200的框图,处理器2200可具 有多于一个核心,可具有集成的存储器控制器并且可具有集成的图形。图 22中的实线框图示了具有单个核心2202A、系统代理2210和一组一个或 多个总线控制器单元2216的处理器2200,而虚线框的可选添加图示了具 有多个核心2202A-N、系统代理单元2210中的一组一个或多个集成存储 器控制单元2214、以及专用逻辑2208的替换处理器2200。
从而,处理器2200的不同实现方式可包括:1)其中专用逻辑2208 是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心)并且核 心2202A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心 或者两者的组合)的CPU;2)其中核心2202A-N是大量的主要打算用于 图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心2202A-N是大量的通用有序核心的协处理器。从而,处理器2200可以是 通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引 擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核 (many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌 入式处理器,等等。处理器可被实现在一个或多个芯片上。处理器2200 可以是一个或多个衬底的一部分和/或可利用若干个工艺技术中的任何一者 被实现在一个或多个衬底上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系包括核心内的一级或多级缓存、一组或一个或多个共 享缓存单元2206、以及耦合到该组集成存储器控制器单元2214的外部存 储器(未示出)。该组共享缓存单元2206可包括一个或多个中间级别缓 存(例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓 存),最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在 一个实施例中基于环的互连单元2212互连集成图形逻辑2208、该组共享 缓存单元2206以及系统代理单元2210/(一个或多个)集成存储器控制器 单元2214,但替换实施例也可使用任何数目的公知技术来互连这种单元。 在一个实施例中,在一个或多个缓存单元2206和核心2202A-N之间维持 一致性。
在一些实施例中,核心2202A-N中的一个或多个能够进行多线程处理。 系统代理2210包括协调和操作核心2202A-N的那些组件。系统代理单元 2210可包括例如功率控制单元(power control unit,PCU)和显示单元。 PCU可以是或者可以包括对核心2202A-N和集成图形逻辑2208的功率状 态进行调节所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接 的显示器。
核心2202A-N就体系结构指令集而言可以是同构的或者异构的;也就 是说,核心2202A-N中的两个或更多个可以能够执行同一指令集,而其他 的核心可以能够只执行该指令集的子集或者不同的指令集。
示范性计算机体系结构
图23-图24是示范性计算机体系结构的框图。本领域中已知的用于膝 上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、 网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器 (digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微 控制器、蜂窝电话、便携式媒体播放器、手持设备、和各种其他电子设备的其他系统设计和配置,也是适当的。总之,能够包含本文公开的处理器 和/或其他执行逻辑的各种各样的系统或电子设备一般是适当的。
现在参考图23,示出了根据本发明的一个实施例的系统2300的框图。 系统2300可包括一个或多个处理器2310、2315,它们耦合到控制器中枢 2320。在一个实施例中,控制器中枢2320包括图形存储器控制器中枢 (graphics memory controller hub,GMCH)2390和输入/输出中枢 (Input/Output Hub,IOH)2350(它们可在分开的芯片上);GMCH 2390 包括与存储器2340和协处理器2345耦合的存储器和图形控制器;IOH 2350将输入/输出(I/O)设备2360耦合到GMCH 2390。或者,存储器和 图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器 2340和协处理器2345直接耦合到处理器2310,并且控制器中枢2320与 IOH 2350在单个芯片中。
额外的处理器2315的可选性在图23中用虚线表示。每个处理器2310、 2315可包括本文描述的处理核心中的一个或多个并且可以是处理器2200 的某个版本。
存储器2340可例如是动态随机访问存储器(dynamic random access memory,DRAM)、相变存储器(phase change memory,PCM)、或者两 者的组合。对于至少一个实施例,控制器中枢2320经由多点分支总线 (例如前端总线(frontside bus,FSB))、点到点接口(例如QuickPath 互连(QuickPath Interconnect,QPI))、或者类似的连接2395与(一个 或多个)处理器2310、2315通信。
在一个实施例中,协处理器2345是专用处理器,例如,高吞吐量 MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入 式处理器,等等。在一个实施例中,控制器中枢2320可包括集成的图形 加速器。
在物理资源2310、2315之间,就包括体系结构特性、微体系结构特 性、热特性、功率消耗特性等等在内的价值度量的范围而言可以有各种差 异。
在一个实施例中,处理器2310执行控制一般类型的数据处理操作的 指令。嵌入在这些指令内的可以是协处理器指令。处理器2310将这些协 处理器指令识别为应当由附接的协处理器2345执行的类型。因此,处理 器2310在协处理器总线或其他互连上向协处理器2345发出这些协处理器 指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器 2345接受并且执行接收到的协处理器指令。
现在参考图24,其中示出了根据本发明的实施例的SoC 2400的框图。 图22中的相似元素带有相似的标号。另外,虚线框是更先进SoC上的可 选特征。在图24中,(一个或多个)互连单元2402耦合到:应用处理器2410,其包括一组一个或多个核心202A-N和(一个或多个)共享缓存单 元2206;系统代理单元2210;(一个或多个)总线控制器单元2216; (一个或多个)集成存储器控制器单元2214;一组或一个或多个协处理器 2420,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理 器;静态随机访问存储器(static randomaccess memory,SRAM)单元 2430;直接存储器访问(direct memory access,DMA)单元2432;以及显 示单元2440,用于耦合到一个或多个外部显示器。在一个实施例中,(一 个或多个)协处理器2420包括专用处理器,例如网络或通信处理器、压 缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的 机制的实施例。本发明的实施例可被实现为在包括至少一个处理器、存储 系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、 以及至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码可被应用到输入指令以执行本文描述的功能并且生成输出信 息。输出信息可按已知的方式被应用到一个或多个输出设备。对于本申请 而言,处理系统包括任何具有处理器的系统,例如;数字信号处理器 (digital signal processor,DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)、或者微处理器。
可以用高级别过程式或面向对象的编程语言来实现程序代码以与处理 系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实 际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况 下,该语言可以是经编译或者解译的语言。
至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表 示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读 取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心” 的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造 设施以加载到实际制作该逻辑或处理器的制作机器中。
这种机器可读存储介质可包括但不限于由机器或设备制造或形成的物 品的非暂态有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他 类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compactdisk rewritable,CD-RW)、 以及磁光盘),半导体设备(诸如,只读存储器(read-onlymemory, ROM),诸如动态随机访问存储器(dynamic random access memory, DRAM)、静态随机访问存储器(static random access memory,SRAM) 之类的随机访问存储器(randomaccess memory,RAM),可擦除可编程 只读存储器(erasable programmable read-onlymemory,EPROM),闪速 存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory, PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介 质。
因此,本发明的实施例还包括非暂态有形机器可读介质,其包含指令 或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计 数据,例如硬件描述语言(Hardware Description Language,HDL)。这种 实施例也可被称为程序产品。
用于平方差之和计算的指令和逻辑
图26—示例计算系统
现在参考图26,示出了根据一个或多个实施例的计算系统2600的框 图。在一些实施例中,系统2600可以是电子设备或组件的全部或一部分。 例如,系统2600可以是蜂窝电话、计算机、服务器、网络设备、片上系 统(SoC)、控制器、无线收发器、电力供应单元,等等。此外,在一些 实施例中,系统2600可以是相关的或者互连的设备的群组的一部分,例 如数据中心、计算集群,等等。
如图26所示,系统2600可包括处理器2610、存储器2604、以及存 储装置2670。另外,虽然在图26中没有示出,但系统2600可包括其他组 件。在一个或多个实施例中,可以用任何(一个或多个)类型的计算机存 储器(例如,动态随机访问存储器(DRAM)、静态随机访问存储器 (SRAM)、非易失性存储器(NVM)、DRAM和NVM的组合,等等) 来实现存储器2640。可利用一个或多个持续性(例如,非易失性)存储设 备来实现存储装置2670,例如(一个或多个)基于盘的存储设备(例如, (一个或多个)硬盘驱动器(hard disk drive,HDD))、(一个或多个) 固态设备(solid state device,SSD)(例如,闪速存储设备)、光盘,等 等。
在一个或多个实施例中,处理器2610可以是硬件处理设备(例如, 中央处理单元(CPU)、片上系统(SoC),等等)。如图所示,处理器 2610可包括任何数目的处理引擎2620A-2620N(也统称为处理引擎 2620)。每个处理引擎2620可包括平方差之和(SSD)电路2630。
在一个或多个实施例中,SSD电路2630可包括执行在指令集体系结 构(ISA)中定义的SSD指令的功能。在一些实施例中,SSD电路2630可 执行单个SSD指令来处理多个输入向量,并且生成包括多个SSD值的输 出向量(本文中称为“SSD向量”)。例如,SSD指令的输出可被用于运 动估计内核、速率失真优化模式决策、滤波/检测算法,等等。在一些实施 例中,与传统技术(例如,使用包括多个离散指令的代码函数)相比, SSD电路2630可以按相对更快、更高效的方式执行SSD指令,并且可因 此提高程序执行的性能。另外,使用SSD指令可以简化和加快对软件应用 编程的任务。下文参考图27-图30进一步描述SSD电路2630的各种细节。
图27—示例处理系统
现在参考图27,示出了根据一个或多个实施例的示例处理系统2700。 处理系统2700可包括各种硬件组件,即,取得单元2710、解码单元2720、 调度器/分配器单元2730、以及(一个或多个)执行单元2740。在一些实 施例中,图27中所示的全部或部分硬件组件可被包括在处理器(例如, 图26中所示的处理器2610)或者其任何部分(例如,图26中所示的处理 引擎2620和/或SSD电路2630)中。
如图27所示,取得单元2710可取得包括在指令流中的SSD指令。解 码单元2720可对SSD指令进行解码。计划/分配单元2730可将SSD指令 分配(一个或多个)执行单元2740中的一个或多个。另外,(一个或多 个)执行单元2740可使用多个输入向量来执行SSD指令。SSD指令的单 个执行可生成一个或多个SSD向量。在一些实施例中,SSD指令可指定两 个或更多个输入向量。每个输入向量可包括多个值。
在一些实施例中,指令集体系结构(ISA)可定义各种类型的多个 SSD指令(例如,比特宽度、数据类型、字大小,等等)。例如,ISA的 128比特SSD指令可处理两个输入向量(本文中称为“向量通道”),每 个输入向量包括16字节(即,128比特)。128比特SSD指令可计算输出 向量,该输出向量包括第一输入向量中的两个或更多个字节的所选群组和 来自第二输入向量的两个或更多个字节的所选群组的四个或更多个平方差 之和。第一和第二输入向量中的起始位置(本文中称为“偏移量”)可被 编码在128比特SSD指令的8比特立即数中。第一和第二输入向量中的两 个或更多个字节的所选群组可按顺序(例如,按连续顺序)、按跨度等等 来选择。
在另一示例中,ISA的256比特SSD指令可处理两个向量通道,每个 向量通道包括两个128比特输入向量。256比特SSD指令可计算两个输出 向量,每个输出向量包括八个平方差之和。四个输入向量中的偏移量可被 编码在256比特SSD指令的8比特立即数中。
在另外一示例中,ISA的512比特SSD指令可处理四个向量通道,每 个向量通道包括两个128比特输入向量。512比特SSD指令可计算四个输 出向量,每个输出向量包括八个平方差之和。八个输入向量中的偏移量可 被编码在256比特SSD指令的8比特立即数中。下面参考图28A论述8比 特立即数的编码。
图28A-图28B—示例SSD操作
现在参考图28A-28B,示出了根据一些实施例的示例SSD操作。示例 SSD操作可由SSD电路2630(在图26中示出)执行。在一些实施例中, 图28A-28B中所示的示例SSD操作可对应于示例512比特SSD指令的执 行。
在一些实施例中,如图28A所示,512比特SSD指令的执行可处理第 一向量通道(标记为“通道1”),其中包括两个128比特输入向量,即 向量A 2810和向量B 2811(在图28A中示出)。向量2810和2811的每 一者包括16个字节(在图28A中编号为0至15)。另外,如图28B所示,512比特SSD指令的同一执行也可处理三个额外的向量通道(标记为“通 道2”、“通道3”和“通道4”),每个通道包括两个128比特输入向量 (即,向量2812和2813、向量2814和2815、以及向量2816和2817)。
在一些实施例中,可在八个计算步骤(标记为“S1”至“S8”)中执 行512比特SSD指令的执行。每个计算步骤S1-S8可包括,对于两个输入 向量中的每一个,使用偏移量值来识别包括四个连续字节的窗口部分的开 始。例如,如图28A所示,计算步骤S1可包括使用偏移量1(指向字节0) 来识别包括向量A 2810中的字节0、1、2和3的第一窗口部分的开始,并 且还使用偏移量2(指向字节0)来识别包括向量B 2811中的字节0、1、 2和3的第二窗口部分的开始。注意,虽然在本示例操作中,偏移量1和2 都等于0,但在其他示例操作中,这种偏移量值可能不同。
每个计算步骤还可包括,对于两个窗口部分中的每个有序的字节位置 (即,第一、第二、第三或第四字节位置),计算两个窗口部分的字节之 间的差异的平方。然后可将这四个平方差求和,以获得输出向量的单字。 例如,在计算步骤S1中,每个窗口部分的第一位置的字节(即,向量 2810的字节0和向量2811的字节0)之间的差异可被平方,每个窗口部分的第二位置(即,向量2810的字节1和向量2811的字节1)之间的差异 可被平方,等等依此类推。在计算步骤S1中确定的四个平方差可被求和 以生成输出向量2830的字0。
在一些实施例中,每个后续的计算步骤(即,S2-S8)可包括将向量 A 2810中的窗口部分的起始点递增一个字节。例如,对于计算步骤S2, 向量A 2810中的窗口部分现在包括字节1、2、3和4。另外,计算步骤2 可包括对向量2810的字节1和向量2811的字节0之间的差异求平方,对 向量2810的字节2和向量2811的字节1之间的差异求平方,等等依此类 推。在计算步骤S2中确定的四个平方差可被求和以生成输出向量2830的 字1。计算步骤S3至S8可按类似于对计算步骤S2所描述的方式执行,以 生成通道1的输出向量2830的字2至7。在一些实施例中,输出向量2830 可被直接存储,或者可被变换(例如,求和、舍入、截断、饱和,等等) 以匹配所要求的输出数据宽度。
在一些实施例中,如上所述,512比特SSD指令的执行也可处理向量 通道2-4(如图28B所示)。例如,对通道2-4的处理可包括执行与上文 对于通道1所述类似的计算步骤S1-S8(为清晰起见,未在图28B中示 出)。然而,在一些实施例中,512比特SSD指令可为不同通道指定不同 的偏移量。例如,如图28B所示,处理通道2可包括使用偏移量3(指向 字节4)来识别包括向量C 2812中的字节4、5、6和7的窗口部分的开始, 并且使用偏移量4(指向字节0)来识别包括向量D 2813中的字节0、1、 2和3的窗口部分的开始。另外,处理通道3可包括使用偏移量5和6,并 且处理通道4可包括使用偏移量7和8。
在一个或多个实施例中,512比特SSD指令可使用8比特立即数2840 来指定偏移量1-4(例如,用于通道1和2)。可通过将立即数2840中的 一个或两个比特的比特值乘以一个乘数(例如,4)来确定每个偏移量。 例如,立即数2840的比特2的值(例如,“0”)可被乘以4,以获得向 量A 2810的偏移量1(例如,“0”),并且立即数2840的比特0-1的值 可被乘以4,以获得向量B 2811的偏移量2。在另一示例中,立即数2840 的比特5的值(例如,“1”)可被乘以4,以获得向量C 2812的偏移量3 (例如,“4”),并且立即数2840的比特3-4的值可被乘以4,以获得 向量D 2813的偏移量4。
在一些实施例中,偏移量5-8的值(例如,用于通道3和4)可分别 被设置为等于偏移量1-4的值。例如,立即数2840的比特2的值可用于获 得偏移量1和5,立即数2840的比特0-1的值可用于获得偏移量2和6。 另外,立即数2840的比特5的值可用于获得偏移量3和7,并且立即数 2840的比特3-4的值可用于获得偏移量4和8。以这种方式,一个或多个 实施例可允许在SSD指令的8比特立即数中编码八个偏移量值。因此,一 些实施例可允许SSD指令处理四个不同的向量通道,而不要求指令的立即 数中的额外比特。
在一些实施例中,对于16比特数据类型执行512比特SSD指令可能 导致被计算的连续SSD块的数目减少到四个。因此,为了跨越八个连续的 SSD块,512比特SSD指令可被修改或扩展为在两个256比特通道上操作。 例如,第一和第二128比特通道(即,通道1和2)可被组合成第一256 比特通道,并且第三和第四128比特通道(即,通道3和4)可被组合成 第二256比特通道。另外,设想到了可以对不同的数据类型(例如,浮点、 32比特,等等)以及对于更大的立即数操作对象执行SSD指令的类似变 换或修改。
注意,虽然图28A-28B图示了示例实现方式,但实施例在这个方面不 受限制。例如,设想到了立即数2840可包括任何数目的比特(例如,16 比特,32比特,等等)。在另一示例中,设想到了将八个输入向量中的偏 移量编码在立即数2840的不同比特中,与图28A所示的编码中不同。
图29—示例方法
现在参考图29,根据一个或多个实施例示出了用于使用平方差之和指 令的方法2900的流程图。在各种实施例中,方法2900可由处理逻辑来执 行,处理逻辑可包括硬件(例如,处理设备、电路、专用逻辑、可编程逻 辑、微代码,等等)、软件(例如,在处理设备上运行的指令)、或者其 组合。在固件或软件实施例中,方法2900可由存储在非暂态机器可读介质(例如光学、半导体、或者磁存储设备)中的计算机执行指令来实现。 机器可读介质可存储数据,该数据如果被至少一个机器使用则会使得该至 少一个机器制作至少一个集成电路来执行一种方法。为了说明起见,下文 可参考图26-图28B来描述方法2900中涉及的动作,这些图示出了根据一 个或多个实施例的示例。然而,本文论述的各种实施例的范围在这个方面 不受限制。
块2910可包括取得软件程序中包括的平方差之和(SSD)指令。块 2920可包括对SSD指令进行解码,以获得解码的SSD指令。例如,参考 图27,取得单元2710取得包括在指令流中的SSD指令(例如,在程序执 行期间),并且解码单元2720对SSD指令进行解码。
块2930可包括执行解码的SSD指令以基于多个输入向量生成SSD输 出向量,其中SSD输出向量包括多个平方差值。例如,参考图27和图 28A-28B,解码的SSD指令可被(一个或多个)执行单元2730执行。在 一些实施例中,SSD指令可以是512比特SSD指令,该指令可被执行以处 理向量通道1-4,其中每个向量通道包括两个128比特输入向量(即,通 道1中的向量2810和2811)。512比特SSD指令的执行可在八个计算步 骤S1-S8中来执行,其中第一个计算步骤S1使用偏移量值(即,偏移量 1-8)来识别每个输入向量中的窗口部分的开始。随后的每个计算步骤S2- S8可包括将窗口的开始递增一个字节。另外,计算步骤S1-S8中的每一个 可包括计算窗口部分的相应字节之间的差异的平方,并且将平方差求和以 获得输出向量2830的相应字。在一些实施例中,可通过将立即数2840中 的一个或两个比特的比特值乘以乘数(例如,4)来确定偏移量1-4。另外, 可通过分别拷贝偏移量1-4来确定偏移量5-8。在块2930之后,可完成方 法2900。
图30—示例存储介质
现在参考图30,示出了存储可执行指令3010的存储介质3000。在一 些实施例中,存储介质3000可以是非暂态机器可读介质,例如光介质、 半导体、磁存储设备,等等。可执行指令3010可由处理设备执行。另外, 可执行指令3010可被至少一个机器用于制作至少一个集成电路以执行图 29所示的方法。
以下条款和/或示例属于进一步实施例。
在示例1中,一种用于执行指令的处理器可包括:取得电路,用于取 得指令,所述指令包括平方差之和(SSD)指令;解码电路,用于对所述 SSD指令进行解码;以及执行电路,用于在解码的SSD指令的执行期间, 基于多个输入向量生成SSD输出向量,所述SSD输出向量包括多个平方 差值。
在示例2中,示例1的主题可以可选地包括,所述多个输入向量包括 第一向量通道中包括的第一输入向量和第二输入向量,其中所述第一输入 向量和所述第二输入向量包括相等数目的数据单元。
在示例3中,示例1-2的主题可以可选地包括,所述执行电路用于: 基于所述SSD指令的立即数来确定第一偏移量和第二偏移量;基于所述第 一偏移量来识别所述第一输入向量的第一窗口部分;并且基于所述第二偏 移量来识别所述第二输入向量的第二窗口部分。
在示例4中,示例1-3的主题可以可选地包括,所述执行电路用于: 对于所述第一窗口部分中的每个字节,对所述第一窗口部分中的该字节和 所述第二窗口部分中的相应字节之间的差异求平方以获得平方差值;对于 所述第一窗口部分中的字节对所获得的平方差值求和以计算所述SSD输出 向量的第一字节;并且将所述第一窗口部分的开始位置递增一个字节。
在示例5中,示例1-4的主题可以可选地包括,所述多个输入向量包 括第二向量通道中包括的第三输入向量和第四输入向量,并且所述执行电 路用于:基于所述SSD指令的立即数来确定第三偏移量和第四偏移量;基 于所述第三偏移量来识别所述第三输入向量的第三窗口部分;并且基于所 述第四偏移量来识别所述第四输入向量的第四窗口部分。
在示例6中,示例1-5的主题可以可选地包括,所述多个输入向量包 括第三向量通道中包括的第五输入向量和第六输入向量,并且所述执行电 路用于:基于所述第一偏移量来识别所述第五输入向量的第五窗口部分; 并且基于所述第二偏移量来识别所述第六输入向量的第六窗口部分。
在示例7中,示例1-6的主题可以可选地包括,所述执行电路用于: 将所述第一偏移量确定为所述立即数的第一比特集合的值乘以乘数的乘积; 将所述第二偏移量确定为所述立即数的第二比特集合的值乘以所述乘数的 乘积;将所述第三偏移量确定为所述立即数的第三比特集合的值乘以所述 乘数的乘积;并且将所述第四偏移量确定为所述立即数的第四比特集合的 值乘以所述乘数的乘积。
在示例8中,示例1-7的主题可以可选地包括,所述立即数是包括比 特0-7的8比特立即数;所述第一比特集合包括所述立即数的比特2;所 述第二比特集合包括所述立即数的比特0和1;所述第三比特集合包括所 述立即数的比特5;所述第四比特集合包括所述立即数的比特3和4;并 且所述乘数是4。
在示例9中,一种用于执行指令的方法可包括:由处理器取得软件程 序中包括的平方差之和(SSD)指令;由所述处理器对所述SSD指令进行 解码,以获得解码的SSD指令;并且由所述处理器执行所述解码的SSD 指令以基于多个输入向量生成SSD输出向量,所述SSD输出向量包括多 个平方差值。
在示例10中,示例9的主题可以可选地包括,所述多个输入向量包 括第一向量通道中包括的第一输入向量和第二输入向量,其中所述第一输 入向量和所述第二输入向量包括相等数目的数据单元。
在示例11中,示例9-10的主题可以可选地包括:基于所述SSD指令 的立即数来确定第一偏移量和第二偏移量;基于所述第一偏移量来识别所 述第一输入向量的第一窗口部分;并且基于所述第二偏移量来识别所述第 二输入向量的第二窗口部分。
在示例12中,示例9-11的主题可以可选地包括:对于所述第一窗口 部分中的每个字节,对所述第一窗口部分中的字节和所述第二窗口部分中 的相应字节之间的差异求平方以获得平方差值;对于所述第一窗口部分中 的字节对所获得的平方差值求和以计算所述SSD输出向量的第一字节;并 且将所述第一窗口部分的开始位置递增一个字节。
在示例13中,示例9-12的主题可以可选地包括,所述多个输入向量 包括第二向量通道中包括的第三输入向量和第四输入向量,并且所述方法 包括:基于所述SSD指令的立即数来确定第三偏移量和第四偏移量;基于 所述第三偏移量来识别所述第三输入向量的第三窗口部分;并且基于所述 第四偏移量来识别所述第四输入向量的第四窗口部分。
在示例14中,示例9-13的主题可以可选地包括:将所述第一偏移量 确定为所述立即数的第一比特集合的值乘以乘数的乘积;将所述第二偏移 量确定为所述立即数的第二比特集合的值乘以所述乘数的乘积;将所述第 三偏移量确定为所述立即数的第三比特集合的值乘以所述乘数的乘积;并 且将所述第四偏移量确定为所述立即数的第四比特集合的值乘以所述乘数 的乘积。
在示例15中,示例9-14的主题可以可选地包括,所述SSD指令是 512比特SSD指令,所述多个输入向量中的每个输入向量包括128比特, 并且所述方法包括:基于所述SSD指令的立即数的比特值来确定第一和第 二向量通道中的第一偏移量集合;并且基于所述第一偏移量集合来确定第 三和第四向量通道中的第二偏移量集合。
在示例16中,一种计算设备可包括:一个或多个处理器;以及存储 器,其中存储有多个指令,所述多个指令当被所述一个或多个处理器执行 时,使得所述计算设备执行如示例9至15中的任一项所述的方法。
在示例17中,至少一个机器可读介质上存储有数据,所述数据如果 被至少一个机器使用,则使得所述至少一个机器执行如示例9至15中的 任一项所述的方法。
在示例18中,一种电子设备包括用于执行如示例9至15中的任一项 所述的方法的装置。
在示例19中,一种用于执行指令的系统可包括与外部存储器相耦合 的处理器。所述处理器可包括:取得电路,用于取得指令,所述指令包括 平方差之和(SSD)指令;解码电路,用于对所述SSD指令进行解码;以 及执行电路,用于在解码的SSD指令的执行期间,基于多个输入向量生成 SSD输出向量,所述SSD输出向量包括多个平方差值。
在示例20中,示例19的主题可以可选地包括,所述多个输入向量包 括第一向量通道中包括的第一输入向量和第二输入向量,并且所述第一输 入向量和所述第二输入向量包括相等数目的数据单元。
在示例21中,示例19-20的主题可以可选地包括,所述执行电路用于: 基于所述SSD指令的立即数来确定第一偏移量和第二偏移量;基于所述第 一偏移量来识别所述第一输入向量的第一窗口部分;并且基于所述第二偏 移量来识别所述第二输入向量的第二窗口部分。
在示例22中,示例19-21的主题可以可选地包括,所述执行电路用于: 对于所述第一窗口部分中的每个字节,对所述第一窗口部分中的该字节和 所述第二窗口部分中的相应字节之间的差异求平方以获得平方差值;对于 所述第一窗口部分中的字节对所获得的平方差值求和以计算所述SSD输出 向量的第一字节;并且将所述第一窗口部分的开始位置递增一个字节。
在示例23中,示例19-22的主题可以可选地包括,所述多个输入向量 包括第二向量通道中包括的第三输入向量和第四输入向量,并且所述执行 电路用于:基于所述SSD指令的立即数来确定第三偏移量和第四偏移量; 基于所述第三偏移量来识别所述第三输入向量的第三窗口部分;并且基于 所述第四偏移量来识别所述第四输入向量的第四窗口部分。
在示例24中,一种用于执行指令的装置可包括:用于取得软件程序 中包括的平方差之和(SSD)指令的装置;用于对所述SSD指令进行解码 以获得解码的SSD指令的装置;以及用于执行所述解码的SSD指令以基 于多个输入向量生成SSD输出向量的装置,所述SSD输出向量包括多个 平方差值。
在示例25中,示例24的主题可以可选地包括,所述多个输入向量包 括第一向量通道中包括的第一输入向量和第二输入向量,并且所述第一输 入向量和所述第二输入向量包括相等数目的数据单元。
在示例26中,示例24-25的主题可以可选地包括,用于进行以下操作 的装置:基于所述SSD指令的立即数来确定第一偏移量和第二偏移量;基 于所述第一偏移量来识别所述第一输入向量的第一窗口部分;并且基于所 述第二偏移量来识别所述第二输入向量的第二窗口部分。
在示例27中,示例24-26的主题可以可选地包括,用于进行以下操作 的装置:对于所述第一窗口部分中的每个字节,对所述第一窗口部分中的 字节和所述第二窗口部分中的相应字节之间的差异求平方以获得平方差值; 对于所述第一窗口部分中的字节对所获得的平方差值求和以计算所述SSD 输出向量的第一字节;并且将所述第一窗口部分的开始位置递增一个字节。
在示例28中,示例24-27的主题可以可选地包括,所述多个输入向量 包括第二向量通道中包括的第三输入向量和第四输入向量,并且可以可选 地包括用于进行以下操作的装置:基于所述SSD指令的立即数来确定第三 偏移量和第四偏移量;基于所述第三偏移量来识别所述第三输入向量的第 三窗口部分;并且基于所述第四偏移量来识别所述第四输入向量的第四窗 口部分。
在示例29中,示例24-28的主题可以可选地包括,用于进行以下操作 的装置:将所述第一偏移量确定为所述立即数的第一比特集合的值乘以乘 数的乘积;将所述第二偏移量确定为所述立即数的第二比特集合的值乘以 所述乘数的乘积;将所述第三偏移量确定为所述立即数的第三比特集合的 值乘以所述乘数的乘积;并且将所述第四偏移量确定为所述立即数的第四 比特集合的值乘以所述乘数的乘积。
在示例30中,示例24-29的主题可以可选地包括,所述SSD指令是 512比特SSD指令并且所述多个输入向量中的每个输入向量包括128比特, 并且可以可选地包括用于进行以下操作的装置:基于所述SSD指令的立即 数的比特值来确定第一和第二向量通道中的第一偏移量集合;并且基于所 述第一偏移量集合来确定第三和第四向量通道中的第二偏移量集合。
根据一些实施例,可以提供指令集体系结构(ISA)的指令来执行 SSD计算。在一些实施例中,可以执行单个SSD指令以生成包括多个 SSD值的向量。因此,使用SSD指令可以加快和简化对软件应用编程的任 务。另外,与传统技术(例如,使用包括多个离散指令的代码函数)相比, 处理器可以按相对更快、更高效的方式执行SSD指令,并且可因此提高程 序执行的性能。此外,在一些实施例中,SSD指令可以按允许对与传统方 法中可处理的相比更多的输入向量进行处理的方式来编码偏移量值。
注意,虽然图26-图30图示了各种示例实现方式,但其他变化是可能 的。例如,设想到了一个或多个实施例可被实现在参考图1-图25描述的 示例设备和系统中。注意,在图1-图30中示出的示例是为了举例说明而 提供的,而并不打算限制任何实施例。具体而言,虽然为了清晰起见可按 简化形式示出实施例,但实施例可包括任何数目和/或布置的组件。例如, 设想到了一些实施例除了示出的那些以外还可包括任何数目的组件,并且 示出的组件的不同布置在某些实现方式中可发生。此外,设想到了图1-图 30中示出的示例中的具体细节可被用在一个或多个实施例中的任何地方。
要理解,上述示例的各种组合是可能的。实施例可被用于许多不同类 型的系统中。例如,在一个实施例中,通信设备可被布置为执行本文描述 的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施 例可指向其他类型的用于处理指令的装置,或者包括指令的一个或多个机 器可读介质,这些指令响应于在计算设备上被执行而使得该设备实现本文 描述的一个或多个方法和技术。
本说明书中各处提及“一个实施例”或“一实施例”的意思是联系该 实施例描述的特定特征、结构或特性被包括在本发明内涵盖的至少一个实 现方式中。从而,短语“一个实施例”或者“在一实施例中”的出现不一 定指的是同一实施例。此外,特定的特征、结构或特性可被设置为除了图 示的特定实施例以外的其他适当形式,并且所有这种形式都可被涵盖在本 申请的权利要求内。
虽然已关于有限数目的实施例描述了本发明,但本领域技术人员将会 明白从这些实施例进行的许多修改和变化。希望所附权利要求覆盖落在本 发明的真实精神和范围内的所有这种修改和变化。

Claims (23)

1.一种用于执行指令的处理器,包括:
取得电路,用于取得指令,所述指令包括平方差之和SSD指令;
解码电路,用于对所述SSD指令进行解码;以及
执行电路,用于在解码的SSD指令的执行期间,基于多个输入向量生成SSD输出向量,所述SSD输出向量包括多个平方差值。
2.如权利要求1所述的处理器,其中,所述多个输入向量包括第一向量通道中包括的第一输入向量和第二输入向量,所述第一输入向量和所述第二输入向量包括相等数目的数据单元。
3.如权利要求2所述的处理器,所述执行电路用于:
基于所述SSD指令的立即数来确定第一偏移量和第二偏移量;
基于所述第一偏移量来识别所述第一输入向量的第一窗口部分;并且
基于所述第二偏移量来识别所述第二输入向量的第二窗口部分。
4.如权利要求3所述的处理器,所述执行电路用于:
对于所述第一窗口部分中的每个字节,对所述第一窗口部分中的该字节和所述第二窗口部分中的相应字节之间的差异求平方以获得平方差值;
对于所述第一窗口部分中的字节对所获得的平方差值求和,以计算所述SSD输出向量的第一字节;并且
将所述第一窗口部分的开始位置递增一个字节。
5.如权利要求3所述的处理器,其中,所述多个输入向量包括第二向量通道中包括的第三输入向量和第四输入向量,并且所述执行电路还用于:
基于所述SSD指令的立即数来确定第三偏移量和第四偏移量;
基于所述第三偏移量来识别所述第三输入向量的第三窗口部分;并且
基于所述第四偏移量来识别所述第四输入向量的第四窗口部分。
6.如权利要求5所述的处理器,其中,所述多个输入向量包括第三向量通道中包括的第五输入向量和第六输入向量,并且所述执行电路还用于:
基于所述第一偏移量来识别所述第五输入向量的第五窗口部分;并且
基于所述第二偏移量来识别所述第六输入向量的第六窗口部分。
7.如权利要求5所述的处理器,所述执行电路还用于:
将所述第一偏移量确定为所述立即数的第一比特集合的值乘以乘数的乘积;
将所述第二偏移量确定为所述立即数的第二比特集合的值乘以所述乘数的乘积;
将所述第三偏移量确定为所述立即数的第三比特集合的值乘以所述乘数的乘积;并且
将所述第四偏移量确定为所述立即数的第四比特集合的值乘以所述乘数的乘积。
8.如权利要求7所述的处理器,其中:
所述立即数是包括比特0-7的8比特立即数;
所述第一比特集合包括所述立即数的比特2;
所述第二比特集合包括所述立即数的比特0和1;
所述第三比特集合包括所述立即数的比特5;
所述第四比特集合包括所述立即数的比特3和4;并且
所述乘数是4。
9.一种用于执行指令的方法,包括:
由处理器取得软件程序中包括的平方差之和SSD指令;
由所述处理器对所述SSD指令进行解码,以获得解码的SSD指令;并且
由所述处理器执行所述解码的SSD指令以基于多个输入向量生成SSD输出向量,所述SSD输出向量包括多个平方差值。
10.如权利要求9所述的方法,其中,所述多个输入向量包括第一向量通道中包括的第一输入向量和第二输入向量,所述第一输入向量和所述第二输入向量包括相等数目的数据单元。
11.如权利要求10所述的方法,包括:
基于所述SSD指令的立即数来确定第一偏移量和第二偏移量;
基于所述第一偏移量来识别所述第一输入向量的第一窗口部分;并且
基于所述第二偏移量来识别所述第二输入向量的第二窗口部分。
12.如权利要求11所述的方法,包括:
对于所述第一窗口部分中的每个字节,对所述第一窗口部分中的该字节和所述第二窗口部分中的相应字节之间的差异求平方以获得平方差值;
对于所述第一窗口部分中的字节对所获得的平方差值求和,以计算所述SSD输出向量的第一字节;并且
将所述第一窗口部分的开始位置递增一个字节。
13.如权利要求11所述的方法,其中,所述多个输入向量包括第二向量通道中包括的第三输入向量和第四输入向量,并且所述方法包括:
基于所述SSD指令的立即数来确定第三偏移量和第四偏移量;
基于所述第三偏移量来识别所述第三输入向量的第三窗口部分;并且
基于所述第四偏移量来识别所述第四输入向量的第四窗口部分。
14.如权利要求13所述的方法,包括:
将所述第一偏移量确定为所述立即数的第一比特集合的值乘以乘数的乘积;
将所述第二偏移量确定为所述立即数的第二比特集合的值乘以所述乘数的乘积;
将所述第三偏移量确定为所述立即数的第三比特集合的值乘以所述乘数的乘积;并且
将所述第四偏移量确定为所述立即数的第四比特集合的值乘以所述乘数的乘积。
15.如权利要求9所述的方法,其中,所述SSD指令是512比特SSD指令,其中,所述多个输入向量中的每个输入向量包括128比特,并且所述方法包括:
基于所述SSD指令的立即数的比特值来确定第一向量通道和第二向量通道中的第一偏移量集合;并且
基于所述第一偏移量集合来确定第三向量通道和第四向量通道中的第二偏移量集合。
16.一种计算设备,包括:
一个或多个处理器;以及
存储器,在其中存储有多个指令,所述多个指令在由所述一个或多个处理器执行时,使得所述计算设备执行如权利要求9至15中任一项所述的方法。
17.至少一个机器可读介质,在其上存储有数据,所述数据在由至少一个机器使用时,使得所述至少一个机器执行如权利要求9至15中任一项所述的方法。
18.一种电子设备,包括用于执行如权利要求9至15中任一项所述的方法的装置。
19.一种用于执行指令的系统,包括:
处理器,包括:
取得电路,用于取得指令,所述指令包括平方差之和SSD指令;
解码电路,用于对所述SSD指令进行解码;以及
执行电路,用于在解码的SSD指令的执行期间,基于多个输入向量生成SSD输出向量,所述SSD输出向量包括多个平方差值;以及
外部存储器,与所述处理器相耦合。
20.如权利要求19所述的系统,其中,所述多个输入向量包括第一向量通道中包括的第一输入向量和第二输入向量,所述第一输入向量和所述第二输入向量包括相等数目的数据单元。
21.如权利要求20所述的系统,所述执行电路用于:
基于所述SSD指令的立即数来确定第一偏移量和第二偏移量;
基于所述第一偏移量来识别所述第一输入向量的第一窗口部分;并且
基于所述第二偏移量来识别所述第二输入向量的第二窗口部分。
22.如权利要求21所述的系统,所述执行电路用于:
对于所述第一窗口部分中的每个字节,对所述第一窗口部分中的该字节和所述第二窗口部分中的相应字节之间的差异求平方以获得平方差值;
对于所述第一窗口部分中的字节对所获得的平方差值求和,以计算所述SSD输出向量的第一字节;并且
将所述第一窗口部分的开始位置递增一个字节。
23.如权利要求21所述的系统,其中,所述多个输入向量包括第二向量通道中包括的第三输入向量和第四输入向量,并且所述执行电路还用于:
基于所述SSD指令的立即数来确定第三偏移量和第四偏移量;
基于所述第三偏移量来识别所述第三输入向量的第三窗口部分;并且
基于所述第四偏移量来识别所述第四输入向量的第四窗口部分。
CN202111353168.7A 2020-12-23 2021-11-16 用于平方差之和的指令和逻辑 Pending CN114661346A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/132,464 US20220197635A1 (en) 2020-12-23 2020-12-23 Instruction and logic for sum of square differences
US17/132,464 2020-12-23

Publications (1)

Publication Number Publication Date
CN114661346A true CN114661346A (zh) 2022-06-24

Family

ID=77951483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111353168.7A Pending CN114661346A (zh) 2020-12-23 2021-11-16 用于平方差之和的指令和逻辑

Country Status (3)

Country Link
US (1) US20220197635A1 (zh)
EP (1) EP4020183A1 (zh)
CN (1) CN114661346A (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120030451A1 (en) * 2010-07-28 2012-02-02 Broadcom Corporation Parallel and long adaptive instruction set architecture
US9424039B2 (en) * 2014-07-09 2016-08-23 Intel Corporation Instruction for implementing vector loops of iterations having an iteration dependent condition
US11579883B2 (en) * 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US11868777B2 (en) * 2020-12-16 2024-01-09 Advanced Micro Devices, Inc. Processor-guided execution of offloaded instructions using fixed function operations

Also Published As

Publication number Publication date
US20220197635A1 (en) 2022-06-23
EP4020183A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US11093278B2 (en) Modifying processor frequency based on interrupt rate
US20200218677A1 (en) Management of Processor Performance Based on User Interrupts
CN113272889A (zh) 基于用户活动调整显示刷新率
US10921872B2 (en) Performing soft throttling and hard throttling in a processor
US11886884B2 (en) Branch prediction based on coherence operations in processors
EP3674847B1 (en) Controlling power state demotion in a processor
WO2019067126A1 (en) CONTROL BLOCKS FOR PROCESSOR FEED MANAGEMENT
US20210064110A1 (en) Control blocks for processor power management
US11188138B2 (en) Hardware unit for controlling operating frequency in a processor
EP4155914A1 (en) Caching based on branch instructions in a processor
US20200004584A1 (en) Hardware Queue Manager for Scheduling Requests in a Processor
US20230100693A1 (en) Prediction of next taken branches in a processor
CN115857649A (zh) 针对主机系统选择电源
US20220197635A1 (en) Instruction and logic for sum of square differences
US20240111598A1 (en) Sequencing circuit for a processor
US20220308881A1 (en) Instruction and logic for sum of absolute differences
US11514551B2 (en) Configuration profiles for graphics processing unit
US11354213B2 (en) Utilization metrics for processing engines
CN115525135A (zh) 处理器中的虚拟分区的功率限制
CN113396375A (zh) 调整处理器中的扼制阈值
CN113849869A (zh) 为持续性存储器生成密钥
CN116303210A (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