CN105247475A - 紧缩数据元素断定处理器、方法、系统和指令 - Google Patents
紧缩数据元素断定处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN105247475A CN105247475A CN201480030905.1A CN201480030905A CN105247475A CN 105247475 A CN105247475 A CN 105247475A CN 201480030905 A CN201480030905 A CN 201480030905A CN 105247475 A CN105247475 A CN 105247475A
- Authority
- CN
- China
- Prior art keywords
- mask
- instruction
- processor
- compressed data
- packed data
- 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
Links
- 238000000034 method Methods 0.000 title claims description 71
- 230000004044 response Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 19
- 230000000873 masking effect Effects 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 24
- 238000003860 storage Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 14
- 241001269238 Data Species 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- JAWMENYCRQKKJY-UHFFFAOYSA-N [3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-ylmethyl)-1-oxa-2,8-diazaspiro[4.5]dec-2-en-8-yl]-[2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidin-5-yl]methanone Chemical compound N1N=NC=2CN(CCC=21)CC1=NOC2(C1)CCN(CC2)C(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F JAWMENYCRQKKJY-UHFFFAOYSA-N 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 244000045947 parasite Species 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000000162 simple eye Anatomy 0.000 description 1
- 241000894007 species Species 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Abstract
一种处理器,包括:所述处理器不使用紧缩数据操作掩码的第一模式,以及所述处理器使用紧缩数据操作掩码的第二模式。解码单元用于在所述第一模式中为给定的紧缩数据操作解码未经掩码的紧缩数据指令,并且用于在所述第二模式中为所述给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令。所述指令具有相同的指令长度。所述经掩码的指令具有(多个)位以指定掩码。(多个)执行单元耦合到所述解码单元。所述(多个)执行单元,响应于所述解码单元在所述第一模式中解码所述未经掩码的指令,执行所述给定的紧缩数据操作。所述(多个)执行单元,响应于所述解码单元在所述第二模式中解码所述经掩码的指令,执行所述给定的紧缩数据操作的经掩码的版本。
Description
技术领域
概括地说,本文所描述的实施例涉及处理器。更具体地说,本文所描述的实施例一般涉及能够处理紧缩数据(packeddata)的处理器。
背景技术
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,替代仅对一个数据元素或一对数据元素进行操作的标量指令,紧缩数据指令、矢量指令或SIMD指令可以对多个数据元素或多对数据元素并发地(例如,并行)进行操作。所述处理器可以具有并行执行硬件,其响应于紧缩数据指令,用于对多个数据元素并发地(例如,并行)执行多个操作。
在SIMD架构中,可以将多个数据元素紧缩在一个寄存器或存储器单元内,作为紧缩数据或矢量数据。在紧缩数据中,可以逻辑地将寄存器或其他存储单元的位划分为多个数据元素的序列。每个数据元素可以表示在寄存器或其他存储单元中与其他通常具有相同尺寸的数据元素一起存储的单独数据片。例如,128位宽寄存器可以具有两个64位宽的紧缩数据元素、四个32位宽的紧缩数据元素、八个16位宽的紧缩数据元素、或十六个8位宽的紧缩数据元素。每个所述的紧缩数据元素通常表示分开的单独数据片(例如,像素颜色、图形坐标等),其可以与其他的分开地进行操作。
代表性地,一种类型的紧缩数据指令、矢量指令或SIMD指令(例如,紧缩加法指令)可以指定:对来自于两个源紧缩数据操作数的所有对应的数据元素对,以垂直方式执行单个紧缩数据操作(例如,加法),以产生目的或结果紧缩数据。源紧缩数据操作数可以是相同的尺寸,可以包含相同宽度的数据元素,因此可以每个包含相同数量的数据元素。在两个源紧缩数据操作数中的相同的位位置中的源数据元素可以表示对应的数据元素对。可以对这些对应的源数据元素对中的每一对分开地或基本上独立地执行紧缩数据操作,以产生匹配数量的结果数据元素,因此每对对应的源数据元素可以具有对应的结果数据元素。典型地,这样的指令的结果数据元素按照相同的顺序,并且它们通常具有相同的尺寸。
除这种示例性类型的紧缩数据指令之外,还有各种其他类型的紧缩数据指令。例如,有一些仅具有一个源紧缩数据操作数的。例如,紧缩数据移位指令可以独立地移动单个源紧缩数据的每个数据元素以产生结果紧缩数据。其他紧缩数据指令可以对两个以上的源紧缩数据操作数进行操作。此外,其他紧缩数据指令可以对在相同的紧缩数据操作数中的数据元素(例如,对在两个源紧缩数据操作数之间的对应的数据元素)以水平方式代替以垂直方式进行操作。尽管如此,其他紧缩数据指令可以产生不同尺寸的结果紧缩数据操作数,其具有不同尺寸的数据元素、和/或具有不同的数据元素顺序。
附图说明
通过参考用于说明实施例的以下描述和附图,可以最好地理解本发明。在附图中:
图1是处理器的实施例的框图。
图2是处理器的另一个实施例的框图。
图3是采取合并的经掩码的紧缩数据操作的示例实施例的框图。
图4是采取归零的经掩码的紧缩数据操作的示例实施例的框图。
图5是处理经掩码的紧缩数据指令的实施例的方法的实施例的流程框图。
图6是示出紧缩数据操作掩码位的数量依赖于紧缩数据宽度和紧缩数据元素宽度的表格。
图7是一组合适的紧缩数据操作掩码寄存器的示例实施例的框图。
图8是示出紧缩数据操作掩码寄存器的实施例,并且示出紧缩数据操作掩码位的数量依赖于紧缩数据宽度和数据元素宽度的图。
图9是示出了实施例的框图,其中,可以逻辑地将相同的物理寄存器看作紧缩数据寄存器或紧缩数据操作掩码寄存器,和/或作为紧缩数据寄存器或紧缩数据操作掩码寄存器来进行访问。
图10是示出了实施例的框图,其中,可以逻辑地将相同的物理寄存器看作紧缩数据寄存器或存储有多个紧缩数据操作掩码的紧缩数据操作掩码寄存器,和/或作为紧缩数据寄存器或存储有多个紧缩数据操作掩码的紧缩数据操作掩码寄存器来进行访问。
图11是示出了实施例的框图,其中,紧缩数据操作掩码的位被分布在紧缩数据的数据元素中。
图12是示出了实施例的框图,其中,具有分布在紧缩数据的数据元素中的紧缩数据操作掩码位的一组寄存器可以从不同的视图中被看作存储有两个或多个较小的掩码或单个较大的掩码,或作为存储有两个或多个较小的掩码或单个较大的掩码来进行访问。
图13A是示出根据本发明的实施例的示例性有序(in-order)流水线和示例性寄存器重命名无序(out-of-order)发布/执行流水线的方框图。
图13B是示出根据本发明的实施例的被包括在处理器中的有序架构核心和示例性寄存器重命名无序发布/执行架构核心的示例性实施例的方框图。
图14A是根据本发明的实施例的单处理器核心连同它到管芯上互连网络的连接及它的2级(L2)高速缓存的本地子集的方框图。
图14B是根据本发明的实施例的在图14A中的处理器核心的部分的展开图。
图15是根据本发明的实施例的可具有多于一个核心、可具有集成存储器控制器以及可具有集成图形的处理器的方框图。
图16示出根据本发明的一个实施例的系统的方框图。
图17示出根据本发明的实施例的第一更具体的示例性系统的方框图。
图18示出根据本发明的实施例的第二更具体的示例性系统的方框图。
图19示出根据本发明的实施例的SoC的方框图。
图20是根据本发明的实施例的对照将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的方框图。
具体实施方式
本文中公开的是对紧缩数据元素进行断定(predicate)或掩码操作的方法。在下面的描述中,阐述了许多具体的细节(例如,实现掩码的具体方式、具体的掩码长度、数据格式、处理器配置、微架构细节、操作序列等)。然而,可以不通过这些具体的细节来实施实施例。在其他实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
图1是处理器100的实施例的框图。该处理器表示可操作用于处理指令的指令处理装置。在一些实施例中,所述处理器可以是通用处理器(例如,在台式、膝上型等计算机中经常被用作中央处理单元(CPU)的类型的通用微处理器)。替代地,所述处理器可以是专用处理器。合适的专用处理器的示例包括但不限于:网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器),此处仅是列举数例。所述处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,所述处理器可以表示能够利用紧缩数据操作的断定或掩码的RISC处理器。
所述处理器具有指令集102。指令集的指令表示宏指令、汇编语言指令或被提供给处理器以供执行的机器级指令,与从所述指令集的指令解码或转换的微指令、微操作或其他指令或控制信号相对。在一些实施例中(例如,如在某些RISC处理器的情况下),所述指令可以具有基本上固定的指令长度(例如,所有或至少大部分的指令可以是32位或其他一些长度),与具有可变指令长度相对。
如图所示,在一些实施例中,所述指令集可以可选地包括一个或多个未经掩码的紧缩数据指令106,用于一个或多个给定的未经掩码的紧缩数据操作。如图所示,所述指令集还包括一个或多个经掩码的紧缩数据指令104,用于一个或多个给定的经掩码的紧缩数据操作。合适的经掩码和未经掩码的紧缩数据指令/操作的一些说明性示例包括但不限于:经掩码和未经掩码的紧缩加法指令/操作、经掩码和未经掩码的紧缩减法指令/操作、经掩码和未经掩码的紧缩乘法指令/操作、经掩码和未经掩码的紧缩移位指令/操作、经掩码和未经掩码的紧缩循环指令/操作、经掩码和未经掩码的紧缩比较指令/操作、经掩码和未经掩码的紧缩逻辑或指令/操作、经掩码和未经掩码的紧缩逻辑与指令/操作、经掩码和未经掩码的紧缩倒数指令/操作、经掩码和未经掩码的紧缩平均数指令/操作以及本领域公知的其他经掩码和未经掩码的紧缩算术和/或逻辑指令/操作。
所述处理器还包括一组紧缩数据寄存器108。紧缩数据寄存器通常表示管芯上的处理器的存储单元,每个可操作用于存储紧缩数据、矢量数据或SIMD数据。紧缩数据寄存器可以表示对软件和/或程序员可见的寄存器,和/或由所述指令集的指令指定以标识操作数(例如,源和目的操作数)的寄存器。所述寄存器可以使用公知技术以不同方式在不同的微架构中实现,并且不限于任何特定类型的电路。寄存器的合适类型的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器以及它们的组合。
在一些实施例中,所述处理器可以可选地具有一组一个或多个在紧缩数据寄存器108上实现的紧缩数据操作掩码寄存器110,尽管这不是必需的。在一些实施例中,所述处理器可以可选地具有一组一个或多个与所述紧缩数据寄存器108分开的分开专用紧缩数据操作掩码寄存器112。紧缩数据操作掩码寄存器110和/或紧缩数据操作掩码寄存器112可以被用来存储紧缩数据操作掩码。通过示例的方式,所述经掩码的紧缩数据指令可以具有一个或多个位来指定紧缩数据操作掩码,例如,紧缩数据操作掩码寄存器112或紧缩数据寄存器108。本文中紧缩数据操作掩码也可以被称作断定掩码,或简单地称作掩码。
所述处理器还包括一个或多个执行单元114。所述一个或多个执行单元可操作用于执行或处理所述指令集102的指令(例如,经掩码的紧缩数据指令104)。在一些实施例中,执行单元可以包括特定的逻辑(例如,特定的集成电路或可能与固件结合的其他硬件)来执行或处理指令。
在一些实施例中,所述处理器可以具有不同的模式,其中掩码用于或不用于紧缩数据指令/操作,尽管这不是必需的。例如,所述处理器可以具有第一模式,其中处理器不使用紧缩数据操作掩码,以及第二模式,其中处理器使用紧缩数据操作掩码。通过示例的方式,未经掩码的紧缩数据指令可以被取出、解码和执行,以在所述第一模式中不使用掩码或紧缩数据操作掩码来执行未经掩码的紧缩数据操作。与此相反,经掩码的紧缩数据指令可以被取出、解码和执行,以在所述第二模式中使用紧缩数据操作掩码和掩码来执行经掩码的紧缩数据操作。所述第一和第二模式可以由所述处理器的寄存器中的一个或多个位来指示(例如,控制寄存器、配置寄存器等)。这种不同模式的使用可以有助于在RISC处理器、使用基本上固定指令长度的处理器(例如,从大多数到几乎所有的指令具有相同的指令长度,例如32位)、具有有限操作码空间的处理器等中提供优势。通常,在这样的处理器中,可用的操作码数量不足以支持给定的紧缩数据操作的未经掩码的和经掩码的版本。通过为经掩码的紧缩数据操作提供不同的模式,可以包括额外的指令来执行经掩码的紧缩数据操作而无需必然增加操作码的长度。其他实施例并不限于使用这样的模式。
图2是处理器200的另一个实施例的框图。如之前,所述处理器可以表示通用处理器或专用处理器,并且可以是各种RISC、CISC、VLIW、混合或其他类型的处理器中的任一处理器。上面针对图1的处理器提到的任何细节和可选的细节也可以可选地应用于图2的处理器。
所述处理器200可以接收经掩码的紧缩数据指令204。例如,可以从指令取出单元、指令队列等接收所述指令。所述经掩码的紧缩数据指令可以表示机器代码指令、汇编语言指令、宏指令或处理器的指令集的控制信号。任何前面提到的类型的经掩码的紧缩数据指令,以及其他类型的经掩码的紧缩数据指令,是合适的。
所示出的处理器包括指令解码单元216。指令解码单元也可以被称作解码单元或解码器。解码单元可以接收和解码相对较高级别的指令(例如,宏指令、机器代码指令、汇编语言指令等),并且输出一个或多个相对较低级别的指令或控制信号(例如,微指令、微操作、微代码入口点等),其反映、表示较高级别的指令,和/或从较高级别的指令导出。所述一个或多个较低级别的指令或控制信号可以通过一个或多个较低级别的(例如,电路级或硬件级)的操作实现更高级别的指令。可以使用各种不同的机制来实现解码单元,包括但不限于:微码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA),以及本领域公知的用于实现解码单元的其他机制。
在其他实施例中,可以使用指令模拟器、翻译器、变形器、解释器或其他指令转换逻辑。各种不同类型的指令转换逻辑是本领域的公知技术,并且可以以软件、硬件、固件、或其组合来实现。所述指令转换逻辑可以模拟、翻译、变形、解释、或以其他方式将指令转换成一个或多个对应的导出的指令或控制信号。在一些实施例中,可以使用指令转换逻辑和解码单元。例如,指令转换逻辑可以将指令转换成一个或多个中间指令,并且解码单元可以将所述一个或多个中间指令解码成处理器的集成电路可执行的一个或多个较低级别的指令或控制信号。所述指令转换逻辑可以位于处理器外部(例如,在分开的管芯上或在存储器中)、在处理器上或在它们的组合上。
所述处理器还包括一组紧缩数据寄存器208。这些紧缩数据寄存器可以类似于上面所描述的紧缩数据寄存器108。所述经掩码的紧缩数据指令204可以显式地指定(例如,通过一个或多个字段或一组位)、或以其他方式指示(例如,隐式指示)第一源紧缩数据(例如,第一源紧缩数据寄存器218)。根据指令的类型,所述经掩码的紧缩数据指令可以可选地显式地指定或以其他方式指示第二源紧缩数据(例如,第二源紧缩数据寄存器220)。在一些情况下,经掩码的紧缩数据可以可选地指定或以其他方式指示目的紧缩数据(例如,目的紧缩数据寄存器222)。在其他实施例中,可以将一个或多个这些紧缩数据操作数存储在存储器单眼中或其他存储单元中。此外,在其他实施例中,可以复用一个源紧缩数据存储单元作为目的紧缩数据存储单元。
在一些实施例中,经掩码的紧缩数据指令还可以指定或以其他方式指示源紧缩数据操作掩码212(例如,源紧缩数据操作掩码寄存器)。在所示出的实施例中,源紧缩数据操作掩码212可以表示与紧缩数据寄存器208分开的寄存器。在另一个实施例中,源紧缩数据操作掩码可以在紧缩数据寄存器208上实现。
再次参考图2,执行单元214耦合于解码单元216,耦合于紧缩数据寄存器208,并且耦合于源紧缩数据操作掩码212。在一些实施例中,执行单元可以包括算术单元、算术逻辑单元、功能单元、用于接收解码指令和执行操作的单元等。执行单元响应于经掩码的紧缩数据指令204和/或作为该指令的结果(例如,响应于一个或多个经过解码或以其他方式转换的指令或表示经掩码的紧缩数据指令204和/或从经掩码的紧缩数据指令204导出的控制信号),可以操作来执行经掩码的紧缩数据操作并且在目的紧缩数据操作数或寄存器222中存储结果紧缩数据。执行单元和/或处理器可以包括具体的或特定的逻辑(例如,集成电路或可能与固件和/或软件结合的其他硬件),其响应于所述经掩码的紧缩数据指令来执行经掩码的紧缩数据操作。
在一些实施例中,所述处理器还可以可选地接收未经掩码的紧缩数据指令206。未经掩码的紧缩数据指令可以类似于先前描述的经掩码的紧缩数据指令204,除了它不需要指定或以其他方式指示紧缩数据操作掩码,以及除了它不会导致处理器使用掩码。相反,响应于未经掩码的紧缩数据指令,执行未经掩码的紧缩数据操作。如先前描述的,在一些实施例中,处理器可以具有不同的模式,其中掩码被用于或不被用于紧缩数据指令/操作,尽管这不是必需的。例如,未经掩码的紧缩数据指令206可以被解码和执行,以在第一模式中不使用掩码或紧缩数据操作掩码来执行未经掩码的紧缩数据操作。与此相反,经掩码的紧缩数据指令204可以被解码和执行,以在第二模式中执行经掩码的紧缩数据操作所述紧缩数据操作掩码212。代表性地,所述第一和第二模式可以由所述处理器的寄存器中的一个或多个位来指示(例如,控制寄存器、配置寄存器等)。这种不同模式的使用可以有助于在RISC处理器、使用基本上固定指令长度的处理器(例如,从大多数到几乎所有的指令具有相同的指令长度,例如32位)、具有有限操作码空间的处理器等中提供优势。通常,在这样的处理器中,可用的操作码的数量不足以支持给定的紧缩数据操作的未经掩码的和经掩码的版本。通过为经掩码的紧缩数据操作提供不同的模式,可以包括额外的指令来执行经掩码的紧缩数据操作而无需必然增加操作码的长度。其他实施例并不限于使用这样的模式。
所述紧缩数据操作掩码可以表示断定操作数或条件控制操作数、或条件矢量操作控制操作数。本文中紧缩数据操作掩码也被简称为掩码。所述掩码可以断定、有条件地控制或掩码:是否要对源数据元素执行与经掩码的紧缩数据指令相关联的操作,和/或是否将操作结果存储在所述紧缩数据结果中。掩码可以每个包括多个掩码元素、断定元素或条件控制元素。
在一些实施例中,所述掩码可操作用于在每结果数据元素的粒度上对操作进行掩码。在一个方面,可以包括的所述掩码元素与结果数据元素一一对应(例如,可以有八个结果数据元素和八个对应的掩码元素)。每个不同的掩码元素可操作用于对不同的对应的紧缩数据操作进行掩码,和/或对不同的对应的结果数据元素的存储进行掩码,分开地和/或基本上独立于其他的掩码元素。例如,掩码元素可操作用于掩码:是否在源紧缩数据的对应的数据元素上(或在两个源紧缩数据的对应的一对数据元素上)执行紧缩数据操作,和/或是否将紧缩数据操作的结果存储在对应的结果数据元素中。
通常每个掩码元素可以是单个位。单个位可以允许指定两种不同的可能性中的任意一个。例如,每个位可以指定执行操作或不执行操作。又例如,每个位可以指定存储操作的结果或不存储操作的结果。根据一个可能的惯例,每个掩码位可以具有第一值(例如,设置为二进制1),以允许紧缩操作的结果被存储在对应的结果数据元素中,或者可以具有第二值(例如,清零为二进制0),以防止紧缩操作的结果被存储在对应的结果数据元素中。相反的惯例也是可能的。在另一些情况下,每个掩码元素可以具有两个或更多个位(例如,用于指定两种以上不同的可能性)。
在一些实施例中,可以可选地执行操作,而无需考虑对应的掩码位或元素,但是操作的对应的结果可被存储或可不被存储在结果紧缩数据中,这取决于对应的掩码位或元素的值。替代地,在其他实施例中,如果对应的掩码位或元素被掩码出(maskedout),则可以可选地略去该操作(即,不被执行)。在一些实施例中,异常或违例(violation)可以被可选地抑制,或者在被掩码掉(masked-off)的元素上的操作不引起异常或违例。在一些实施例中,对应于被掩码掉的数据元素的存储器故障可以可选地被抑制或不被引起。
为了避免混淆描述,已经示出和描述了相对简单的处理器200。在其他实施例中,该装置可以可选地包括处理器中找到的其他公知的部件。这样的部件的示例包括但不限于:分支预测单元、指令取出单元、指令和数据高速缓存、指令和数据转换旁视缓冲器、预取缓冲器、微指令队列、微指令序列发生器、寄存器重命名单元、指令调度单元、总线接口单元、二级或更高级高速缓存、引退单元、处理器中包括的其他部件以及它们的各种组合。实际上在处理器中存在部件的多种不同的组合和配置,并且实施例不限于任何特定的组合或配置。实施例可以包括在:具有多个核心的处理器、逻辑处理器、或执行引擎,其中至少一个具有可操作用于执行本文公开的经掩码的紧缩数据指令的实施例的执行逻辑。
图3是采取合并的经掩码的紧缩数据操作326的示例实施例的框图。可以响应于经掩码的紧缩数据指令(例如,指令104和/或204)或者作为该指令的结果来执行经掩码的紧缩数据操作。经掩码的紧缩数据指令可以指示第一源紧缩数据318和第二源紧缩数据320。其他经掩码的紧缩数据指令可以指示仅单个源紧缩数据,或两个以上的源紧缩数据。在例示中,第一和第二源紧缩数据具有相同的尺寸,包含相同宽度的数据元素,并且因此每个包含相同数量的数据元素,尽管这不是必需的。在例示中,第一和第二源紧缩数据中的每一个具有八个数据元素。作为示例,第一和第二源紧缩数据可以每个为128位宽,并且可以每个包括八个16位数据元素,尽管这不是必需的。在两个源紧缩数据中相同的相对位置中(例如,在相同垂直位置中)的源数据元素表示对应的数据元素的对。每个数据元素具有在方框内显示的表示该数据元素的数值。例如,第一源紧缩数据318从右侧的最低位(lowestorder)位置到左侧的最高位(highestorder)位置具有值“3、7、66、55、12、11、90、89”。
所述指令还指示源紧缩数据操作掩码312。在这个示例中,所述掩码包括八个掩码元素、断定元素、或条件控制元素,在这个示例中它们每个都是单个位。所包括的位与所述第一和第二源紧缩数据中对应的一对源数据元素存在有序的一一对应关系。例如,最低位掩码位(右侧)对应于最低位对应的数据元素对,最高位掩码位(左侧)对应于最高位对应的数据元素对,依此类推。每个掩码位允许分开地且与其他的掩码位相独立地断定或有条件地控制对对应的源数据元素对执行所述紧缩数据操作。
示例性的经掩码的紧缩数据操作是经掩码的紧缩数据加法操作,用于根据所述紧缩数据操作掩码,将来自所述第一和第二源紧缩数据的对应数据元素对之和有条件地存储在紧缩数据结果中或目的操作数322中。紧缩数据操作掩码的八个掩码位中的每一个被置位(即,具有二进制值1)或被清零(即,具有二进制值0)。根据所示出的约定,每个位被分别置位(即,1)或清零(即,0),以允许或不允许将在对应的源紧缩数据元素对上执行的紧缩数据操作(在这个案例中为加法)的结果存储在紧缩数据结果的对应的数据元素中。被置位的位(即,1)表示未经掩码的位或元素,而被清零的位(即,0)表示经掩码的位或元素。在说明性的示例中,八个掩码位的值从右侧的最低位位置到左侧的最高位位置为“1、1、0、1、0、1、1、0”。对那些被置位(即,1)的掩码位,对应的和被存储在对应的结果数据元素中。在例示中,和被标以下划线。相反,对那些被清零(即,0)的掩码位,对对应的源数据元素对的紧缩数据操作的结果不被存储在对应的结果数据元素中。相反,在说明性的示例中,来自第二源紧缩数据320的对应的数据元素的值被合并存储在对应的结果数据元素中。这种版本的掩码被称作合并-掩码。应当理解的是,相反的约定也是可能的,其中位被清零(即,0)以允许存储结果,或被置位(即,1)以不允许存储结果。
图4是采取归零的经掩码的紧缩数据操作426的示例实施例的框图。可以响应于经掩码的紧缩数据指令(例如,指令104和/或204)或者作为该指令的结果来执行经掩码的紧缩数据操作。所述指令可以指示第一源紧缩数据418、第二源紧缩数据420、源紧缩数据操作掩码412和目的存储单元422。采取归零的经掩码的紧缩数据操作类似于前述的采取合并的经掩码的紧缩数据操作。为了避免使描述变得模糊,不再重复相似之处,而是将主要提及不同之处。
一个显著的不同之处在于,与将源紧缩数据(例如,图3中的第二源紧缩数据320)的数据元素的值合并或存储到对应的结果数据元素中不同,当对应的掩码位被掩码掉或被归零(例如,清零为二进制0)时,对应的结果数据元素被归零。例如,结果紧缩数据元素的所有位可以被赋予零值。这被称为归零-掩码。替代地,也可以可选地使用除零之外的其他预定值。
应当理解的是,这些只是合适的经掩码的紧缩数据操作的几个说明性示例。在其他实施例中,代替加法,所述操作可以是乘法操作、比较操作、减法操作、求平均操作、移位操作、循环操作等。此外,在其他实施例中,所述操作可以涉及单个源紧缩数据操作数、两个以上的源紧缩数据操作数、不同尺寸的源紧缩数据操作数、具有不同尺寸和/或数量的数据元素的源紧缩数据、水平而不是垂直的操作等。
在一些实施例中,图3和/或图4的操作可以由图1的处理器和/或图2的处理器执行,和/或在图1的处理器和/或图2的处理器之内执行。替代地,图3和/或图4的操作可以由类似的或不同的处理器执行。此外,图1的处理器和/或图2的处理器可以执行与图3和/或图4的操作相同、相似或不同的操作。
图5是处理经掩码的紧缩数据指令的实施例的方法530的实施例的流程框图。在各种实施例中,该方法可以由处理器或其他指令处理装置执行,和/或在处理器或其他指令处理装置之内执行。在一些实施例中,该方法可以由图1和/或图2的处理器执行。替代地,该方法可以由类似的或不同的处理器执行。此外,图1和/或图2的处理器可以执行与图5的操作和方法相同、相似或不同的操作和方法。
在方框531处,该方法包括接收所述经掩码的紧缩数据指令。在各个方面,可以在处理器或其一部分(例如,取出单元、解码单元、指令队列等)处接收所述指令。在各个方面,可以从管芯外的源(例如,从主存储器、盘、互连等)或者从管芯上的源(例如,从指令高速缓存)接收所述指令。所述经掩码的紧缩数据指令可以指定或以其他方式指示具有第一多个紧缩数据元素的第一源紧缩数据,可以指定或以其他方式指示具有第二多个紧缩数据元素的第二源紧缩数据,可以指定或以其他方式指示具有多个掩码元素的紧缩数据操作掩码、以及可以指定或以其他方式指示目的存储单元。
在方框532处,响应于经掩码的紧缩数据指令和/或作为经掩码的紧缩数据指令的结果,可以将结果紧缩数据存储在所指示的目的存储单元。结果紧缩数据包括多个结果数据元素,每个对应于对应的相对位置中的不同的一个掩码元素。未由对应的掩码元素掩码出的结果数据元素包括对来自于第一和第二源紧缩数据的对应的源紧缩数据元素对执行的紧缩数据操作的结果。由对应的掩码元素掩码出的结果数据元素包括掩码出的值,例如,归零值或来自第一和第二源紧缩数据中的一个的合并值。
图6是示出紧缩数据操作掩码位的数量依赖于紧缩数据宽度和紧缩数据元素宽度的表格636。显示了64位、128位、256位和512位的紧缩数据宽度。在其他实施例中,可以使用这些宽度的子集或超集,或者完全可以使用其他宽度(例如,32位、1024位等)。考虑了8位字节、16位字、32位双字(dwords)或单精度浮点(SP)、以及64位四字(Qwords)或双精度浮点(DP)的紧缩数据元素宽度,尽管其他宽度也是可能的。
如所示,当紧缩数据宽度是64位时,当紧缩数据元素宽度是8位时可以将8位用于掩码,当紧缩数据元素宽度是16位时可以将4位用于掩码,以及当紧缩数据元素宽度是32位时可以将2位用于掩码。如所示,当紧缩数据宽度是128位时,当紧缩数据元素宽度是8位时可以将16位用于掩码,当紧缩数据元素宽度是16位时可以将8位用于掩码,当紧缩数据元素宽度是32位时可以将4位用于掩码,以及当紧缩数据元素宽度是64位时可以将2位用于掩码。当紧缩数据宽度是256位时,当紧缩数据元素宽度是8位时可以将32位用于掩码,当紧缩数据元素宽度是16位时可以将16位用于掩码,当紧缩数据元素宽度是32位时可以将8位用于掩码,以及当紧缩数据元素宽度是64位时可以将4位用于掩码。当紧缩数据宽度是512位时,当紧缩数据元素宽度是8位时可以将64位用于掩码,当紧缩数据元素宽度是16位时可以将32位用于掩码,当紧缩数据元素宽度是32位时可以将16位用于掩码,以及当紧缩数据元素宽度是64位时可以将8位用于掩码。可以在一些实施例中使用任何这些宽度的掩码或这些宽度的任何组合的掩码。
图7是一组合适的紧缩数据操作掩码寄存器712的示例实施例的框图。每个紧缩数据操作掩码寄存器可以用于存储紧缩数据操作掩码。在一些实施例中,紧缩数据操作掩码寄存器可以是一组分开的专用架构的寄存器。在所例示的实施例中,每个紧缩数据操作掩码寄存器是64位宽。在替代实施例中,紧缩数据操作掩码寄存器的宽度可以比64位更窄(例如,8位、16位、20位、32位等)或比64位更宽(例如,128位)。在所例示的实施例中,该组包括标示为M0至M7的八个紧缩数据操作掩码寄存器。替代的实施例可以包括比八个更少(例如,一个、两个、三个、四个、五个、六个等)或比八个更多(例如,十二个、十六个、二十个、三十二个等)的紧缩数据操作掩码寄存器。通过示例的方式,经掩码的紧缩数据指令可以使用三个位(例如,3位字段)来编码或指定八个紧缩数据操作掩码寄存器M0至M7中的任一个。在替代实施例中,在有更少或更多紧缩数据操作掩码寄存器时,可以分别使用更少或更多位。紧缩数据操作掩码寄存器可以通过使用公知技术以不同方式而被实现,并且不限于任何已知的特定类型的电路。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及其组合。
图8是示出了紧缩数据操作掩码寄存器812的示例实施例以及显示了被用作紧缩数据操作掩码和/或根据紧缩数据宽度和数据元素宽度用于掩码操作的位的数量的示图。所例示的紧缩数据操作掩码寄存器的示例实施例为64位宽,尽管可以使用更窄(例如,16位、8位等)或更宽的寄存器来代替。根据紧缩数据宽度和数据元素宽度的组合,可以将全部64位或仅64位的子集用作紧缩数据操作掩码以供进行掩码操作。一般而言,当单个、每元素掩码控制位被使用时,紧缩数据操作掩码寄存器中用于掩码操作的位的数量等于以位计的紧缩数据操作数宽度除以以位计的紧缩数据元素宽度。
显示了若干示例性示例。即,当紧缩数据宽度为128位而紧缩数据元素宽度为16位时,则仅寄存器的最低位8位被用作紧缩数据操作掩码。当紧缩数据宽度为128位而紧缩数据元素宽度为8位时,则仅寄存器的最低位16位被用作紧缩数据操作掩码。当紧缩数据宽度为256位而紧缩数据元素宽度为8位时,则仅寄存器的最低位32位被用作紧缩数据操作掩码。当紧缩数据宽度为512位而紧缩数据元素宽度为8位时,则寄存器的全部64位被用作紧缩数据操作掩码。根据所例示的实施例,经掩码的紧缩数据指令可以基于该指令的相关联紧缩数据宽度和数据元素宽度而仅利用寄存器中所述数量的被用于紧缩数据操作掩码的最低位或最低有效位。在所例示的实施例中,寄存器的最低位子集或部分被用于掩码操作,尽管这不是必需的。在替代实施例中,可以可选地使用最高位子集或某一其他子集。
图9是示出了实施例的框图,其中,可以逻辑地将相同的物理寄存器看作紧缩数据寄存器908或紧缩数据操作掩码寄存器912和/或作为紧缩数据寄存器908或紧缩数据操作掩码寄存器912来进行访问。在第一视图940中,寄存器可以被看作紧缩数据寄存器908和/或作为紧缩数据寄存器908来进行访问。所例示的寄存器是64位宽。在例示中,作为示例,四个16位数据元素A0-A3被存储在64位紧缩数据寄存器中。在其他实施例中,可以使用更窄(例如,32位)或更宽(例如,128位、256位等)的寄存器。此外,在其他实施例中,可以将更窄(例如,8位字节)或更宽(例如,32位或64位)数据元素作为紧缩数据存储在寄存器中。
在第二视图941中,相同的寄存器可以被看作紧缩数据操作掩码寄存器912和/或作为紧缩数据操作掩码寄存器912来进行访问,其可操作用于存储紧缩数据操作掩码。在例示中,32位紧缩数据操作掩码M0被存储在寄存器的最低位32位(即,位[31:0])中。32位中的每个位可以表示掩码元素或用于断定的元素。所有的掩码位是连续的或彼此相邻的。寄存器的剩余的最高有效位32位(即,位[63:32])不被用于掩码。这些位可以表示不关心值(*),例如,全零、全一、简单略去的值、任何可能的值等。在其他实施例中,可以可选地使用更窄(例如,8位、16位等)或更宽(例如,64位等)的掩码。可以使用寄存器中的全部位用于掩码操作,或者仅使用这些位的子集用于掩码操作。在例示的示例中,使用位的最低位子集用于掩码操作。替代地可以使用位的最高位子集或其他子集用于掩码操作。
图10是示出了实施例的框图,其中,可以逻辑地将相同的物理寄存器看作紧缩数据寄存器1008或存储有多个(例如,两个或多个)紧缩数据操作掩码的紧缩数据操作掩码寄存器1012,和/或作为紧缩数据寄存器1008或存储有多个(例如,两个或多个)紧缩数据操作掩码的紧缩数据操作掩码寄存器1012来进行访问。在第一视图1042中,寄存器可以被看作紧缩数据寄存器1008和/或作为紧缩数据寄存器1008来进行访问。所例示的寄存器是64位宽。在例示中,作为示例,四个16位数据元素A0-A3被存储在64位紧缩数据寄存器中。在其他实施例中,可以使用更窄(例如,32位)或更宽(例如,128位、256位等)的寄存器。此外,在其他实施例中,可以将更窄(例如,8位字节)或更宽(例如,32位或64位)数据元素作为紧缩数据存储在寄存器中。
在一些实施例中,也可以有一个或多个其他视图,其中可以将相同的寄存器看作存储有多个(例如,两个或多个)紧缩数据操作掩码的紧缩数据操作掩码寄存器1012,和/或作为存储有多个(例如,两个或多个)紧缩数据操作掩码的紧缩数据操作掩码寄存器1012来进行访问。在例示的实施例中,有第二视图1043、第三视图1044、以及第四视图1045。第二至第四视图中的每一个具有不同的数量的掩码和不同尺寸的掩码。在其他实施例中,除第一视图之外,可以仅有单个视图,其中可以逻辑地将相同的寄存器看作存储有多个紧缩数据操作掩码的紧缩数据操作掩码寄存器1012,和/或作为存储有多个紧缩数据操作掩码的紧缩数据操作掩码寄存器1012来进行访问。
在第二视图1043中,八个不同的8位掩码M0-M7被存储在相同的紧缩数据操作掩码寄存器1012-1中。例如,第一掩码M0被存储在寄存器最低位的8位(即,位[7:0])中,第二掩码M1被存储在寄存器最低位的8位的下一8位(即,位[15:8])中等。在第三视图1044中,四个不同的16位掩码M0-M3被存储在相同的紧缩数据操作掩码寄存器1012-2中。例如,第一掩码M0被存储在寄存器的最低位的16位(即,位[15:0])中,第二掩码M1被存储在寄存器的最低位16位的下一16位(即,位[31:16])中等。在第四视图1045中,两个不同的32位掩码M0-M1被存储在相同的紧缩数据操作掩码寄存器1012-3中。例如,第一掩码M0被存储在寄存器的最低位的32位(即,位[31:0])中,第二掩码M1被存储在寄存器的最低位32位的下一32位(即,位[64:32])中。这些仅是掩码的几个示例。在其他实施例中,可以使用更窄(例如,两位、四位等)或更宽(例如,64位)的掩码。
在一些实施例中,对于所述第二至第四视图中的每一个,每个掩码可以用于分开的或不同的经掩码的紧缩数据操作。例如,掩码M0可以由第一经掩码的紧缩数据指令来指示,并且可以用于对对应的紧缩数据操作进行掩码,另一掩码M1可以由不同的经掩码的紧缩数据指令来指示,并且可以用于对不同的对应的紧缩数据操作进行掩码,等等。每个掩码可以包括连续/相邻的掩码位。在经掩码的紧缩数据操作中,如先前所描述的,每个位可以对应于一个或多个不同的紧缩数据元素(例如,一对对应的紧缩数据元素)。
在例示中,寄存器的整个宽度(即,在这个示例中是64位)被用于存储多个掩码,尽管这不是必需的。在其他实施例中,仅有寄存器宽度的子集(例如,最高位子集、最低位子集等)可以被用于存储多个掩码。例如,只有四个8位掩码可以被存储在64位寄存器的最低位32位中,四个8位掩码可以被存储在128位寄存器的最低位32位中,等等。未用于掩码操作的位可以具有不关心值。
图11是示出了实施例的框图,其中,紧缩数据操作掩码1112的位被分布在紧缩数据1108的数据元素中。通过几个示例32位双字(dword)格式示出了这个概念。64位紧缩双字格式1146是64位宽,并且包括紧缩数据1108-1的两个32位双字(dword)数据元素。在例示中,两个32位双字数据元素从最低到最高有效位的位置被标记为DWORD0至DWORD1。DWORD0被存储在位[31:0]并且DWORD1被存储在位[63:32]。每个双字数据元素的最高有效位表示用于对紧缩数据操作进行掩码的紧缩数据操作掩码1112-1的掩码位。特别地,在这种格式中,位[31]和位[63]是掩码位,而这些掩码位共同表示紧缩数据操作掩码M01112-1。
128位紧缩双字格式1147是128位宽,并且包括紧缩数据1108-2的四个32位双字(dword)数据元素。在例示中,四个32位双字数据元素从最低到最高有效位的位置被标记为DWORD0至DWORD3。每个双字数据元素的最高有效位表示用于对紧缩数据操作进行掩码的紧缩数据操作掩码1112-2的掩码位。特别地,在这种格式中,位[31]、位[63]、位[95]和位[127]是掩码位,而这些掩码位共同表示紧缩数据操作掩码M01112-2。
256位紧缩双字格式1148是256位宽,并且包括紧缩数据1108-3的八个32位双字(dword)数据元素。在例示中,八个32位双字数据元素从最低到最高有效位的位置被标记为DWORD0至DWORD7。每个双字数据元素的最高有效位表示用于对紧缩数据操作进行掩码的紧缩数据操作掩码1112-3的掩码位。特别地,在这种格式中,位[31]、位[63]、位[95]、位[127]、位[159]、位[191]、位[223]和位[255]是掩码位,而这些掩码位共同表示紧缩数据操作掩码M01112-3。
在一些情况下,掩码可以在操作数中实现,该操作数的尺寸与在经掩码的紧缩数据操作数中涉及到的紧缩数据操作数相同,尽管在许多情况下,掩码位的总数可以等于数据元素的总数。在这些示例中,每个数据元素的最高有效位表示掩码位。在其他实施例中,每个数据元素内的另一个位可以表示掩码位(例如,最低有效位等)。
应当理解的是,这些仅是合适的紧缩数据格式的几个示例。更窄(例如,32位)或更宽(例如,512位)的紧缩数据格式也是合适的。此外,对于任何这些紧缩数据格式的数据元素,比32位更窄(例如,8位字节、16位字等)或比32位更宽(例如,64位的四字、64位双精度浮点等)也是合适的。紧缩8位字节格式可以具有所显示的示例32位双字格式四倍的数据元素和对应的掩码位。紧缩16位字格式可以具有所显示的示例32位双字格式两倍的数据元素和对应的掩码位。紧缩64位四字格式可以具有所显示的示例32位双字格式一半的数据元素和对应的掩码位。作为一个示例,128位的紧缩8位字节格式可以具有十六个紧缩8位字节的数据元素,每个字节的最高有效位表示不同的掩码位,并且全部的十六个位共同表示紧缩数据操作掩码。一般而言,紧缩数据元素和对应掩码位的数量可以等于以位计的紧缩数据的尺寸除以以位计的紧缩数据元素的尺寸。
图12是示出了实施例的框图,其中,具有分布在紧缩数据的数据元素中的紧缩数据操作掩码位的一组寄存器,可以从不同的视图中被看作存储有两个或更多个较小的掩码或单个较大的掩码,或作为存储有两个或更多个较小的掩码或单个较大的掩码来进行访问。在第一视图1249中,该组的两个寄存器(例如,两个64位物理寄存器)被逻辑地看作标记为X0-X1的两个64位紧缩数据寄存器,或作为标记为X0-X1的两个64位紧缩数据寄存器来进行访问。寄存器X0-X1可以是由指令集的指令指定以标识操作数的寄存器。两个紧缩数据寄存器X0-X1中的每个可操作用于存储不同的64位紧缩数据操作数。例如,在例示实施例中,64位寄存器X0用于存储具有两个32位数据元素A0-A1的第一紧缩数据操作数,并且64位寄存器X1用于存储具有两个32位数据元素B0-B1的第二紧缩数据操作数。在这些紧缩数据操作数中,每个紧缩数据元素可以具有对应的掩码位。例如,在例示实施例中,每个32位数据元素的最高有效位表示掩码位。在其他实施例中,可以使用更窄或更宽的数据元素尺寸来代替,和/或可以将除最高有效位外的其他位用作掩码位(例如,每个数据元素内的最低有效位或任何其他期望的位)。在例示的示例实施例中,对于紧缩数据寄存器X0,最低位32位数据元素具有掩码位M0a,并且最高位32位数据元素具有掩码位M0b。掩码位M0a和M0b表示紧缩数据操作掩码M0。类似地,对于紧缩数据寄存器X1,最低位32位数据元素具有掩码位M1a,并且最高位32位数据元素具有掩码位M1b。掩码位M1a和M1b表示紧缩数据操作掩码M1。在该第一视图中,两个64位寄存器X0-X1(即,M0a、M0b、M1a和M1b)中的掩码位被逻辑地看作两个不同的紧缩数据操作掩码(例如,可以被不同的经掩码的紧缩数据指令用于不同的经掩码的紧缩数据操作)。
在第二视图1250中,相同组的两个寄存器(例如,两个64位物理寄存器)被逻辑地看作单个128位紧缩数据寄存器Y0,或作为单个128位紧缩数据寄存器Y0来进行访问。寄存器Y0可以是由指令集的指令指定以标识操作数的寄存器。在第二视图1250中,128位寄存器Y0的最低位的64位(即,位63:0)映射或对应于64位寄存器X0,而128位寄存器Y0的最高位的64位(即,位127:64)映射或对应于64位寄存器X1。多个(在此情况下为两个)更小(在此情况下为64位)的寄存器被逻辑地组合或分组以形成单个更大(在此情况下为128位)的寄存器。紧缩数据寄存器Y0可操作用于存储具有四个32位数据元素A0-A3的128位紧缩数据操作数。每个紧缩数据元素可以具有对应的掩码位。例如,在例示实施例中,每个32位数据元素的最高有效位表示掩码位。在其他实施例中,可以使用更窄或更宽的数据元素尺寸来代替,和/或可以将除最高有效位外的其他位用作掩码位。在例示的示例实施例中,最低位32位数据元素A0具有掩码位M0a,32位数据元素A1具有掩码位M0b,32位数据元素A2具有掩码位M0c,并且最高位32位数据元素A3具有掩码位M0d。掩码位M0a、M0b、M0c和M0d表示紧缩数据操作掩码M0。在该第二视图中,128位寄存器Y0(即,M0a、M0b、M0c和M0d)中的掩码位被逻辑地看作单个紧缩数据操作掩码(例如,可以被相同的单个经掩码的紧缩数据指令用于相同的单个经掩码的紧缩数据操作)。
在例示实施例中有两个不同的视图。在其他实施例中,可以有三个或更多个不同的视图。例如,第三视图可以将四个64位寄存器X0-X3看作单个256位寄存器Z0。在各种实施例中,用于实现所述视图的实际物理寄存器可以是32位寄存器、64位寄存器、或128位寄存器,尽管本发明的范围并不局限于此。可以使用比64位和128位更宽或更窄的逻辑寄存器。在例示实施例中使用相邻或连续的寄存器,尽管这不是必需的。在其他实施例中,可以组合不相邻的寄存器(例如,在不同库(bank)中的非相邻的寄存器、交替寄存器等)。
如在图9-12中所显示的,在一些实施例中,一组紧缩数据寄存器可以被用作掩码寄存器。在一些实施例中,只有紧缩数据寄存器的总数的子集可以被用作掩码寄存器。例如,在一个特定实施例中,只有一大组紧缩数据寄存器的八个紧缩数据寄存器可以被用于使用图9-12中所显示的方法之一进行掩码操作。有利的是,这可以允许一个给定的寄存器被指定为一个或多个的紧缩数据操作掩码的源,需要较少的位用于规范(例如,在八个寄存器的情况下需要三个位)。在一些实施例中,用于指定掩码寄存器的一组位中的给定或预定值(例如,零值),可以被用于禁用掩码,以便在不需要时通过避免不必要的断定来获得提高的效率。
示例性核心架构、处理器和计算机架构
可以用不同的方式、为了不同的目的和在不同的处理器中实现处理器核心。例如,这样的核心的实现可包括:1)为通用计算而设计的通用有序(in-order)核心;2)为通用计算而设计的高性能通用无序(out-of-order)核心;3)主要为图形和/或科学(吞吐量)计算而设计的专用核心。不同处理器的实现可包括:1)包括为通用计算而设计的一个或多个通用有序核心和/或为通用计算而设计的一个或多个通用无序核心的CPU;以及2)包括主要为图形和/或科学(吞吐量)而设计的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分离的芯片上的协处理器;2)在与CPU相同的封装中的单独管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑或作为专用核心);以及4)可在同一管芯上包括所述CPU(有时被称为应用核心或应用处理器)、上面描述的协处理器和额外的功能的片上系统。示例核心架构被接着描述,后面是示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心方框图
图13A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发布/执行流水线的方框图。图13B是示出根据本发明的实施例的被包括在处理器中的有序架构核心和示例性寄存器重命名无序发布/执行架构核心的示例性实施例的方框图。在图13A-B中的实线框示出有序流水线和有序核心,而虚线框的可选添加示出寄存器重命名无序发布/执行流水线和核心。假定有序方面是无序方面的子集,将描述无序方面。
在图13A中,处理器流水线1300包括取出级1302、长度解码级1304、解码级1306、分配级1308、重命名级1310、调度(也被称为分派或发布)级1312、寄存器读取/存储器读取级1314、执行级1316、写回/存储器写入级1318、异常处理级1322和提交级1324。
图13B示出包括耦合到执行引擎单元1350的前端单元1330的处理器核心1390,且两者都耦合到存储器单元1370。核心1390可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或混合或可选的核心类型。作为又一选择,核心1390可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元1330包括耦合到指令高速缓存单元1334的分支预测单元1332,指令高速缓存单元1334耦合到指令翻译旁视缓冲器(TLB)1336,指令翻译旁视缓冲器(TLB)1336耦合到指令取出单元1338,指令取出单元1338耦合到解码单元1340。解码单元1340(或解码器)可对指令解码,并产生一个或多个微操作、微代码输入点、微指令、其它指令或从原始指令被解码或反映原始指令或从原始指令得到的其它控制信号作为输出。可使用各种不同的机制来实现解码单元1340。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心1390包括微代码ROM或存储某些宏指令的微代码(例如在解码单元1340中或在前端单元1330内)的其它介质。解码单元1340耦合到在执行引擎单元1350中的重命名/分配器单元1352。
执行引擎单元1350包括耦合到引退单元1354的重命名/分配器单元1352和一组一个或多个调度器单元1356。调度器单元1356代表任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元1356耦合到物理寄存器文件单元1358。每一个物理寄存器文件单元1358代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点、状态(例如指令指针,其为待执行的下一指令的地址)等。在一个实施例中,物理寄存器文件单元1358包括矢量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。物理寄存器文件单元1358由引退单元1354重叠以示出寄存器重命名和无序执行可被实现(例如使用记录器缓冲器和引退寄存器文件;使用未来的文件、历史缓冲器和引退寄存器文件;使用寄存器地图和一池寄存器;等等)的各种方式。引退单元1354和物理寄存器文件单元1358耦合到执行群集1360。执行群集1360包括一组一个或多个执行单元1362和一组一个或多个存储器访问单元1364。执行单元1062可对各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点)执行各种操作(例如移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定的功能或功能组的多个执行单元,其它实施例可包括仅仅一个执行单元或都执行所有功能的多个执行单元。调度器单元1356、物理寄存器文件单元1358和执行群集1360被示为可能多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如标量整数流水线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,每一个流水线具有它们自己的调度器单元、物理寄存器文件单元和/或执行群集,且在单独的存储器访问流水线的情况下,实现某些实施例,其中只有这个流水线的执行群集具有存储器访问单元1364)。也应理解,在单独的流水线被使用的场合,这些流水线中的一个或多个可以是无序发布/执行,而其余是有序的。
这组存储器访问单元1364耦合到存储器单元1370,其包括耦合到数据高速缓存单元1374的数据TLB单元1372,数据高速缓存单元1374耦合到2级(L2)高速缓存单元1376。在一个示例性实施例中,存储器访问单元1364可包括装入单元、存储地址单元和存储数据单元,其中每一个耦合到在存储器单元1370中的数据TLB单元1372。指令高速缓存单元1334进一步耦合到在存储器单元1370中的2级(L2)高速缓存单元1376。L2高速缓存单元1376耦合到高速缓存的一个或多个其它级并最终耦合到主存储器。
作为示例,示例性寄存器重命名无序发布/执行核心架构可如下实现流水线1300:1)指令取出1338执行取出和长度解码级1302和1304;2)解码单元1340执行解码级1306;3)重命名/分配器单元1352执行分配级1308和重命名级1310;4)调度器单元1356执行调度器级1312;5)物理寄存器文件单元1358和存储器单元1370执行寄存器读取/存储器读取级1314;执行群集1360执行执行级1316;6)存储器单元1370和物理寄存器文件单元1358执行写回/存储器写入级1318;7)在异常处理级1322中涉及各种单元;以及8)引退单元1354和物理寄存器文件单元1358执行提交级1324。
核心1390可支持一个或多个指令集(例如x86指令集(具有添加了较新版本的一些扩展);MIPSTechnologiesofSunnyvale,CA的MIPS指令集;ARMHoldingsofSunnyvale,CA的ARM指令集(具有可选的额外扩展例如NEON)),包括本文所述的指令。在一个实施例中,核心1390包括支持紧缩数据指令集扩展(例如AVX1、AVX2)的逻辑,从而允许使用紧缩数据执行由很多多媒体应用使用的操作。
应理解,核心可支持多线程(执行两个或多个并行组的操作或线程),并可以用各种方式来这么做,包括时间分片多线程、同时多线程(其中单个物理核心为每一个线程提供逻辑核心,物理核心是同时多线程的)或其组合(例如其后例如在Hyperthreading技术中的时间分片取出和解码和同时多线程)。
虽然在无序执行的上下文中描述了寄存器重命名,应理解,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元1334/1374和共享L2高速缓存单元1376,可选的实施例可具有指令和数据的单个内部高速缓存,例如1级(L1)内部高速缓存或内部高速缓存的多个级。在一些实施例中,系统可包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可选地,所有高速缓存可以在核心和/或处理器外部。
特定的示例性有序核心架构
图14A-B示出更具体的示例性有序核心架构的方框图,该核心将是在芯片中的几个逻辑块之一(包括相同类型和/或不同类型的其它核心)。逻辑块通过高带宽互联网络(例如环形网络)与某个固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,取决于应用。
图14A是根据本发明的实施例的单处理器核心连同它到管芯上互连网络1402的连接及它的2级(L2)高速缓存1404的本地子集的方框图。在一个实施例中,指令解码器1400支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1406允许对在标量和矢量单元内的高速缓存存储器的低时延访问。虽然在一个实施例中(为了简化设计)标量单元1408和矢量单元1410使用单独的寄存器组(分别为标量寄存器1412和矢量寄存器1414)且在它们之间传输的数据被写到存储器并接着从1级(L1)高速缓存1406被读回,本发明的可选实施例可使用不同的方法(例如使用单个寄存器组或包括允许数据在这两个寄存器文件之间传输而没有被写入和读回的通信路径)。
L2高速缓存1404的本地子集是被分成单独的本地子集的全局L2高速缓存的部分,每处理器核心一个本地子集。每一个处理器核心具有到L2高速缓存1404的它自己的本地子集的直接访问路径。由处理器核心读取的数据存储在它的L2高速缓存子集1404中并可与访问它们自己的本地L2高速缓存子集的其它处理器一起并行地被快速访问。由处理器核心写入的数据存储在它自己的L2高速缓存子集1404中并从其它子集清除,如果必要。环形网络确保共享数据的一致性。环形网络是双向的以允许代理例如处理器核心、L2高速缓存和其它逻辑块在芯片内与彼此通信。每一个环形数据路径是每方向1012位宽。
图14B是根据本发明的实施例的在图14A中的处理器核心的部分的展开图。图14B包括L1高速缓存1404的L1数据高速缓存1406A部分以及关于矢量单元1410和矢量寄存器1414的更多细节。具体地,矢量单元1410是16宽矢量处理单元(VPU)(见16宽ALU1428),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持使用拌合(swizzle)单元1420拌合寄存器输入,使用数字转换单元1422A-B进行的数字转换以及使用复制单元1424对存储器输入的复制。写入掩码寄存器1426允许断定因而产生的矢量写入。
具有集成存储器控制器和图形的处理器
图15是根据本发明的实施例的可具有多于一个核心、可具有集成存储器控制器、并可具有集成图形的处理器1500的方框图。在图15中的实线框示出具有单个核心1502A、系统代理1510、一组一个或多个总线控制器单元1516的处理器1500,而虚线框的可选添加示出具有多个核心1502A-N、在系统代理单元1510中的一组一个或多个集成存储器控制器单元1514和专用逻辑1508的可选处理器1500。
因此,处理器1500的不同实现可包括:1)CPU,其具有作为集成图形和/或科学(吞吐量)逻辑的专用逻辑1508(其可包括一个或多个核心)和作为一个或多个通用核心(例如通用有序核心、通用无序核心、这两者的组合)的核心1502A-N;2)协处理器,其具有主要为图形和/或科学(吞吐量)设计的作为大量专用核心的核心1502A-N;以及3)协处理器,其具有作为大量通用有序核心的核心1502A-N。因此,处理器1500可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核心(MIC)协处理器(包括30或更多核心)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器1500可以是一个或多个衬底的一部分和/或可使用多种处理器技术中的任一个(例如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现。
存储器等级结构包括在核心内的高速缓存的一个或多个级、一组或一个或多个共享高速缓存单元1506和耦合到这组集成存储器控制器单元1514的外部存储器(未示出)。这组共享高速缓存单元1506可包括一个或多个中级高速缓存,例如第2级(L2)、第3级(L3)、第4级(L4)或高速缓存的其它级、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环的互连单元1512将集成图形逻辑1508、这组共享高速缓存单元1506和系统代理单元1510/集成存储器控制器单元1514互连,可选的实施例可使用用于将这样的单元互连的任何数量的公知技术。在一个实施例中,在一个或多个高速缓存单元1506和核心1502-A-N之间维持一致性。
在一些实施例中,一个或多个核心1502A-N有多线程的能力。系统代理1510包括协调和操作核心1502A-N的那些部件。系统代理单元1510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核心1502A-N和集成图形逻辑1508的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核心1502A-N从架构指令集方面来说可以是同构的或异构的;也就是说,两个或更多个核心1502A-N可能能够执行相同的指令集,而其它核心可能能够只执行那个指令集的子集或不同的指令集。
示例性计算机架构
图16-19是示例性计算机架构的方框图。膝上型计算机、台式计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的在本领域中已知的其它系统设计和配置也是合适的。通常,能够合并处理器和/或如本文公开的其它执行逻辑的多种系统或电子设备通常是合适的。
现在参考图16,其示出根据本发明的一个实施例的系统1600的方框图。系统1600可包括耦合到控制器中心1620的一个或多个处理器1610、1615。在一个实施例中,控制器中心1620包括图形存储器控制器中心(GMCH)1690和输入/输出中心(IOH)1650(其可以在单独的芯片上);GMCH1690包括存储器1640和协处理器1645耦合到的存储器和图形控制器;IOH1650将输入/输出(I/O)设备1660耦合到GMCH1690。可选地,存储器和图形控制器中的一个或两个集成在处理器(如在本文所述的)内,存储器1640和协处理器1645在单个芯片中与IOH1650一起直接耦合到处理器1610和控制器中心1620。
在图16中用虚线表示额外的处理器1615的可选性质。每一个处理器1610、1615可包括在本文所述的一个或多个处理核心,且可以是处理器1500的某个版本。
存储器1640可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中心1620经由多点总线例如前端总线(FSB)、点对点接口例如QuickPath互连(QPI)或类似的连接1695与处理器1610、1615通信。
在一个实施例中,协处理器1645是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中心1620可包括集成图形加速器。
从包括架构、微架构、热、功率消耗特性等的一系列优点的度量方面,在物理资源1610、1615之间可以有各种差异。
在一个实施例中,处理器1610执行控制一般类型的数据处理操作的指令。嵌入指令内的可以是协处理器指令。处理器1610将这些协处理器指令识别为具有应由附加的协处理器1645执行的类型。对应地,处理器1610向协处理器1645发出在协处理器总线或其它互连上的这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1645接受并执行所接收的协处理器指令。
现在参考图17,其示出根据本发明的实施例的第一更具体的示例性系统1700的方框图。如图17所示,多处理器系统1700是点对点互连系统,并包括经由点对点互连1750耦合的第一处理器1770和第二处理器1780。每一个处理器1770和1780可以是处理器1500的某个版本。在本发明的一个实施例中,处理器1770和1780分别是处理器1610和1615,而协处理器1738是协处理器1645。在另一实施例中,处理器1770和1780分别是处理器1610和协处理器1645。
示出分别包括集成存储器控制器(IMC)单元1772和1782的处理器1770和1780。处理器1770还包括点对点(P-P)接口1776和1778作为它的总线控制器单元的部分;类似地,第二处理器1780包括P-P接口1786和1788。处理器1770、1780可经由点对点(P-P)接口1750使用P-P接口电路1778、1788来交换信息。如在图17中所示的,IMC1772和1782将处理器耦合到对应的存储器,即存储器1732和存储器1734,其可以是在本地附接到对应的处理器的主存储器的部分。
处理器1770、1780可每一个经由单独的P-P接口1752、1752使用点对点接口电路1776、1794、1786、1798与芯片组1790交换信息。芯片组1790可以可选地经由高性能接口1739与协处理器1738交换信息。在一个实施例中,协处理器1738是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可包括在任一处理器中或在这两个处理器之外,还经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中(如果处理器被置于低功率模式中)。
芯片组1790可经由接口1796耦合到第一总线1716。在一个实施例中,第一总线1716可以是外围部件互连(PCI)总线或诸如PCIExpress总线或另一第三代I/O互连总线的总线,虽然本发明的范围不被如此限制。
如图17所示,各种I/O设备1714可连同将第一总线1716耦合到第二总线1720的总线桥1718一起耦合到第一总线1716。在一个实施例中,一个或多个额外的处理器1715,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器,耦合到第一总线1716。在一个实施例中,第二总线1720可以是低管脚计数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1720,包括例如键盘和/或鼠标1722、通信设备1727和存储单元1728例如磁盘驱动器或可包括指令/代码和数据1730的其它大容量存储设备。此外,音频I/O1724可耦合到第二总线1720。注意,其它架构是可能的。例如,不是图17的点对点架构,系统可实现多点总线或其它这样的架构。
现在参考图18,其示出根据本发明的实施例的第二更具体的示例性系统1800的方框图。图17-18中的相似元件具有相似的参考数字,且图17的某些方面从图18省略,以便避免使图18的其它方面难理解。
图18示出处理器1770、1780可分别包括集成存储器和I/O控制逻辑(“CL”)1772和1782。因此,CL1772、1782包括集成存储器控制器单元并包括I/O控制逻辑。图18示出不仅存储器1732、1734耦合到CL1772、1782,而且I/O设备1814也耦合到控制逻辑1772、1782。旧有I/O设备1815耦合到芯片组1790。
现在参考图19,其示出根据本发明的实施例的SoC1900的方框图。在图15中的相似元件具有相似的参考数字。此外,虚线框是在更高级的SoC上的可选特征。在图19中,互连单元1902耦合到:包括一组一个或多个核心202A-N和共享高速缓存单元1506的应用处理器1910;系统代理单元1510;总线控制器单元1516;集成存储器控制器单元1514;可包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一组或一个或多个协处理器1920;静态随机存取存储器(SRAM)单元1930;直接存储器存取(DMA)单元1932;以及用于耦合到一个或多个外部显示器的显示单元1940。在一个实施例中,协处理器1920包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可在硬件、软件、固件或这样的实现方法的组合中实现。本发明的实施例可被实现为在包括至少一个处理器、存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码,例如图17所示的代码1730可应用于输入指令以执行本文所述的功能并产生输出信息。输出信息可以用已知的方式应用于一个或多个输出设备。为了这个申请的目的,处理系统包括具有处理器(例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
程序代码可以用高级过程或面向对象的编程语言来实现以与处理系统通信。如果需要,程序代码也可以用汇编或机器语言来实现。事实上,本文所述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可由存储在代表在处理器内的各种逻辑的机器可读介质上的代表性指令实现,指令当被机器读取时使机器制造执行本文所述的技术的逻辑。被称为“IP核心”的这样的代表可存储在有形机器可读介质上并被提供到各种消费者或制造设施以装入实际上制造逻辑或处理器的制造机器内。
这样的机器可读存储介质可没有限制地包括由机器或设备制造或形成的物品的非暂时有形布置,包括存储介质例如硬盘、任何其它类型的磁盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体设备例如只读存储器(ROM)、随机存取存储器(RAM)例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡或适合于存储电子指令的任何其它类型的介质。
对应地,本发明的实施例还包括包含指令或包含设计数据(例如硬件描述语言(HDL))的非暂时有形机器可读介质,其定义本文所述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可被称为程序产品。仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换成目标指令集。例如,指令转换器可将指令翻译(例如使用静态二进制翻译、动态二进制翻译,包括动态编译)、变形、仿真或转换成由核心处理的一个或多个其它指令。指令转换器可在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、处理器外或部分在处理器上和部分在处理器外。
图20是根据本发明的实施例的对照将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的方框图。在所示实施例中,指令转换器是软件指令转换器,虽然可选地,指令转换器可在软件、固件、硬件或其各种组合中实现。图20示出用高级语言2002的程序可使用x86编译器2004来编译以产生可本机地由具有至少一个x86指令集核心2016的处理器执行的x86二进制代码2006。具有至少一个x86指令集核心2016的处理器代表可执行与具有至少一个x86指令集核心的英特尔处理器实质上相同的功能的任何处理器,是通过兼容地执行或处理(1)英特尔x86指令集核心的指令集的实质的部分或(2)以在具有至少一个x86指令集核心的英特尔处理器上运行为目标的应用或其它软件的对象代码版本,以便实现与具有至少一个x86指令集核心的英特尔处理器实质上相同的结果。x86编译器2004代表可操作来产生可在有或没有额外的连接处理的情况下在具有至少一个x86指令集核心2016的处理器上执行的x86二进制代码2006(例如对象代码)的编译器。类似地,图20示出可使用可选的指令集编译器2008来编译以产生可本机地由没有至少一个x86指令集核心2014的处理器(例如具有执行MIPSTechnologiesofSunnyvale,CA的MIPS指令集和/或执行ARMHoldingsofSunnyvale,CA的ARM指令集的核心的处理器)执行的可选的指令集二进制代码2010的用高级语言2002的程序。指令转换器2012用于将x86二进制代码2006转换成可本机由没有x86指令集核心2014的处理器执行的代码。这个所转换的代码不太可能与可选的指令集二进制代码2010相同,因为有此能力的指令转换器难以制造;然而,所转换的代码将实现一般操作并由来自可选的指令集的指令构成。因此,指令转换器2012代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其它过程允许处理器或没有x86指令集处理器或核心的其他电子设备执行x86二进制代码2006。
在图1-2和/或图5的任一个中也可以可选地使用为图3-4和/或图6-12的任一个描述的部件、特征和细节。而且,在本文所述的任何方法中也可以可选地使用在本文为任何装置描述的部件、特征和细节,这些方法在实施例中可由这样的装置执行和/或用这样的装置执行。
在描述和权利要求中,使用术语“耦合”和/或“连接”连同其衍生词。应当理解这些术语不旨在作为彼此的同义词。更确切地,在特定的实施例中,“连接”可用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可意指两个或更多个元件直接物理或电接触。然而,“耦合”也可意指两个或更多个元件彼此不直接接触,但仍然彼此协作或交互作用。例如,执行单元可通过一个或多个介入部件与寄存器或解码单元耦合。在附图中,箭头用于显示连接和耦合。
在描述和权利要求中,可能使用术语“逻辑”。如在本文使用的,逻辑可包括硬件、固件、软件或其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在一些实施例中,硬件逻辑可包括晶体管和/或门,可能连同其它电路部件。在一些实施例中,逻辑可以体现为部件、单元或其他模块。
在上面的描述中,阐述了特定的细节以便提供对实施例的彻底理解。然而,其它实施例可在没有这些特定细节的情况下被实施。本发明的范围不应由上面提供的特定示例确定,而只由下面的权利要求确定。在其它实例中,以方框图形式或没有详细地示出公知的电路、结构、设备和操作以便避免使描述的理解模糊。在多个部件被示出和描述的场合,在一些情况下,这些多个部件可合并到一个部件内。在单个部件被示出和描述的场合,在一些情况下,这个单个部件可分成两个或更多个部件。
描述了各种操作和方法。在相对基本的形式中在流程图中描述了一些方法,但操作可以可选地被添加到方法和/或从方法移除。此外,虽然流程图示出根据示例实施例的操作的特定顺序,那个特定的顺序是示例性的。可选的实施例可以可选地以不同的顺序执行操作,组合某些操作,使某些操作重叠,等等。
某些操作可由硬件部件执行,或可体现在机器可执行或电路可执行指令中,这些指令可用于使和/或导致使用指令编程的机器、电路或硬件部件(例如处理器、处理器的部分、电路等)执行操作。操作也可以可选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括特定的或特有的电路或可操作来执行和/或处理指令并响应于指令而存储结果的其它逻辑(例如可能与固件和/或软件组合的硬件)。
一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括提供例如存储机器可读的形式的信息的机制。机器可读介质可提供或在其上存储有指令或指令的序列,其如果和/或当被机器执行时可操作来使机器执行和/或导致机器执行本文所公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可包括有形和/或非暂时机器可读存储介质。例如,有形和/或非暂时机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时存储器、非暂时数据存储设备等。非暂时机器可读存储介质不由暂时传播信号组成。
适当的机器的示例包括但不限于通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。适当的机器的又一些其它示例包括计算设备和合并这样的处理器、指令处理装置、数字逻辑电路或集成电路的其它电子设备。这样的计算设备和电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本计算机、智能电话、服务器、网络设备(例如路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视机、上网机、机顶盒和视频游戏控制器。
在整个这个说明书中对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的提及例如指示特定的特征可被包括在本发明的实践中,而不一定需要是这样。类似地,在描述中,为了使本公开合理化并帮助理解各种创造性方面的目的,各种特征有时在单个实施例、附图或其描述中被集中在一起。然而,公开的这个方法并不应被解释为反映本发明需要比在每一个权利要求中明确列举的更多的特征的意图。更确切地,如下面的权利要求反映的,创造性方面在于少于单个所公开的实施例的所有特征。因此,在具体实施方式之后的权利要求特此明确地合并到这个具体实施方式内,每一个权利要求独立地作为本发明的单独的实施例。
示例实施例
下面的示例涉及到进一步的实施例。可以在一个或多个实施例中的任何地方使用所述示例中的细节。
示例1是一种处理器,包括:可选地第一模式,其中,所述处理器不使用紧缩数据操作掩码,以及可选地第二模式,其中,所述处理器使用紧缩数据操作掩码。所述处理器包括解码单元,用于在所述第一模式中为给定的紧缩数据操作解码未经掩码的紧缩数据指令,并且用于在所述第二模式中为所述给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令。所述未经掩码的和经掩码的紧缩数据指令具有相同的指令长度。所述经掩码的紧缩数据指令具有一个或多个位以指定紧缩数据操作掩码。耦合到所述解码单元的一个或多个执行单元。所述一个或多个执行单元,响应于所述解码单元在所述第一模式中解码所述未经掩码的紧缩数据指令,执行所述给定的紧缩数据操作。所述一个或多个执行单元,响应于所述解码单元在所述第二模式中解码所述经掩码的紧缩数据指令,使用所述指定的紧缩数据操作掩码执行给定的紧缩数据操作的经掩码的版本。
示例2包括示例1所述的处理器,其中可选地所述指令长度是32位。
示例3包括示例1所述的处理器,其中可选地所述处理器包括精简指令集计算(RISC)处理器。
示例4包括示例1所述的处理器,进一步包括多个紧缩数据寄存器。其中同样可选地所述经掩码的紧缩数据指令的一个或多个位指定所述多个紧缩数据寄存器的紧缩数据寄存器作为所述紧缩数据操作掩码的源。
示例5包括示例4所述的处理器,其中可选地所述紧缩数据操作掩码包括来自于所述紧缩数据寄存器的多个数据元素中的每一个的位。
示例6包括示例4所述的处理器,其中可选地所述紧缩数据寄存器存储所述紧缩数据操作掩码和至少一个其他紧缩数据操作掩码。
示例7包括示例6所述的处理器,其中可选地在第一视图中所述紧缩数据寄存器存储较大数量的相对较小的紧缩数据操作掩码并且在第二视图中存储较小数量的相对较大的紧缩数据操作掩码。
示例8包括示例1所述的处理器,进一步包括多个紧缩数据操作掩码寄存器。其中同样可选地所述经掩码的紧缩数据指令的一个或多个位指定所述多个紧缩数据操作掩码寄存器中的紧缩数据操作掩码寄存器作为所述紧缩数据操作掩码的源。
示例9包括示例1-8中任一所述的处理器,其中可选地所述第一和第二模式由所述处理器的寄存器中的一个或多个位来指示。
示例10包括示例1-8中任一所述的处理器,其中可选地所述给定的紧缩数据操作和给定的紧缩数据操作的经掩码的版本包括以下之一:(1)紧缩乘法操作和经掩码的紧缩乘法操作;(2)紧缩加法操作和经掩码的紧缩加法操作;(3)紧缩逻辑与操作和经掩码的紧缩逻辑与操作;(4)紧缩逻辑或操作和经掩码的紧缩逻辑或操作;以及(5)紧缩比较操作和经掩码的紧缩比较操作。
示例11是由处理器执行的方法。所述方法包括在所述处理器不使用紧缩数据操作掩码的第一模式中,为给定的紧缩数据操作解码未经掩码的紧缩数据指令。所述方法包括响应于在所述第一模式中解码所述未经掩码的紧缩数据指令,执行所述给定的紧缩数据操作。所述方法包括在所述处理器使用紧缩数据操作掩码的第二模式中,为给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令。所述未经掩码的和经掩码的紧缩数据指令具有相同的指令长度。所述经掩码的紧缩数据指令具有一个或多个位以指定紧缩数据操作掩码。所述方法包括响应于在所述第二模式中解码所述经掩码的紧缩数据指令,使用所述指定的紧缩数据操作掩码,执行给定的紧缩数据操作的经掩码的版本。
示例12包括示例11所述的方法,其中可选地解码包括解码所述未经掩码的和经掩码的紧缩数据指令,其中所述每个指令具有32位指令长度。
示例13包括示例11所述的方法,进一步包括访问来自紧缩数据寄存器的所述紧缩数据操作掩码,所述紧缩数据寄存器由所述经掩码的紧缩数据指令的一个或多个位指定。
示例14包括示例13所述的方法,其中可选地访问包括将来自所述紧缩数据寄存器的多个数据元素中的每一个的位作为所述紧缩数据操作掩码来进行访问。
示例15包括示例13所述的方法,其中可选地访问包括访问来自所述紧缩数据寄存器的所述紧缩数据操作掩码,所述紧缩数据寄存器还存储至少一个其他紧缩数据操作掩码。
示例16包括示例15所述的方法,其中可选地访问包括访问来自所述紧缩数据寄存器的所述紧缩数据操作掩码,所述紧缩数据寄存器在第一视图中存储较大数量的相对较小的紧缩数据操作掩码并且在第二视图中存储较小数量的相对较大的紧缩数据操作掩码。
示例17包括示例11所述的方法,进一步包括访问来自多个紧缩数据操作掩码寄存器中的一个的所述紧缩数据操作掩码,所述紧缩数据操作掩码寄存器的一个由所述经掩码的紧缩数据指令的一个或多个位来指定。
示例18包括示例11所述的方法,其中可选地所述方法在精简指令集计算(RISC)处理器中被执行。
示例19包括示例11所述的方法,进一步包括改变所述处理器的寄存器中的一个或多个位,以致使所述处理器处于所述第二模式中。
示例20包括示例11所述的方法,其中可选地执行所述给定的紧缩数据操作和所述给定的紧缩数据操作的经掩码的版本包括以下之一:(1)执行紧缩乘法操作和经掩码的紧缩乘法操作;(2)执行紧缩加法操作和经掩码的紧缩加法操作;(3)执行紧缩逻辑与操作和经掩码的紧缩逻辑与操作;(4)执行紧缩逻辑或操作和经掩码的紧缩逻辑或操作;以及(5)执行紧缩比较操作和经掩码的紧缩比较操作。
示例21是一种处理指令的系统。所述系统包括互连、耦合到所述互连的动态随机存取存储器(DRAM)、以及耦合到所述互连的处理器。所述处理器包括:第一模式,其中,所述处理器不使用紧缩数据操作掩码,以及第二模式,其中,所述处理器使用紧缩数据操作掩码。所述处理器包括解码单元,用于在所述第一模式中为给定的紧缩数据操作解码未经掩码的紧缩数据指令,并且用于在所述第二模式中为所述给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令。所述未经掩码的和经掩码的紧缩数据指令具有相同的指令长度。所述经掩码的紧缩数据指令具有一个或多个位,以指定紧缩数据操作掩码。所述处理器包括耦合到所述解码单元的一个或多个执行单元。所述一个或多个执行单元,响应于所述解码单元在所述第一模式中解码所述未经掩码的紧缩数据指令,执行所述给定的紧缩数据操作。所述一个或多个执行单元,响应于所述解码单元在所述第二模式中解码所述经掩码的紧缩数据指令,使用所述指定的紧缩数据操作掩码,执行所述给定的紧缩数据操作的经掩码的版本。
示例22包括权利要求21所述的系统,其中可选地所述指令长度是32位,并且其中可选地所述处理器包括精简指令集计算(RISC)处理器。
示例23是一种存储指令的机器可读存储介质,其中当所述指令由机器执行时,致使所述机器执行示例11-20中任一所述的方法。
示例24是一种处理器,用于执行示例11-20中任一所述方法。
示例25是一种处理器,包括用于执行示例11-20中任一所述方法的单元。
示例26是一种处理器,包括集成电路和/或逻辑和/或单元和/或部件和/或模块,或它们的任意组合,以执行示例11-20中任一所述的方法。
示例27是一种计算机系统,包括至少一个处理器和可选地动态随机存取存储器(DRAM),所述计算机系统执行示例11-20中任一所述的方法。
示例28是一种处理器,用于执行如本文实质上所描述的一个或多个操作或方法。
示例29是一种处理器,包括用于执行如本文实质上所描述的一个或多个操作或方法的单元。
Claims (25)
1.一种处理器,包括:
第一模式,在所述第一模式中所述处理器不使用紧缩数据操作掩码;
第二模式,在所述第二模式中所述处理器使用紧缩数据操作掩码;
解码单元,用于在所述第一模式中为给定的紧缩数据操作解码未经掩码的紧缩数据指令,并且用于在所述第二模式中为所述给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令,所述未经掩码的紧缩数据指令和所述经掩码的紧缩数据指令具有相同的指令长度,所述经掩码的紧缩数据指令具有一个或多个位以指定紧缩数据操作掩码;以及
耦合到所述解码单元的一个或多个执行单元,所述一个或多个执行单元,响应于所述解码单元在所述第一模式中解码所述未经掩码的紧缩数据指令,执行所述给定的紧缩数据操作,并且所述一个或多个执行单元,响应于所述解码单元在所述第二模式中解码所述经掩码的紧缩数据指令,使用所指定的紧缩数据操作掩码,执行所述给定的紧缩数据操作的所述经掩码的版本。
2.如权利要求1所述的处理器,其中,所述指令长度是32位。
3.如权利要求1所述的处理器,其中,所述处理器包括精简指令集计算(RISC)处理器。
4.如权利要求1所述的处理器,进一步包括多个紧缩数据寄存器,并且其中所述经掩码的紧缩数据指令的所述一个或多个位指定所述多个紧缩数据寄存器的紧缩数据寄存器作为所述紧缩数据操作掩码的源。
5.如权利要求4所述的处理器,其中,所述紧缩数据操作掩码包括来自所述紧缩数据寄存器的多个数据元素中的每一个数据元素的位。
6.如权利要求4所述的处理器,其中,所述紧缩数据寄存器存储所述紧缩数据操作掩码和至少一个其他紧缩数据操作掩码。
7.如权利要求6所述的处理器,其中,在第一视图中所述紧缩数据寄存器存储较大数量的相对较小的紧缩数据操作掩码并且在第二视图中存储较小数量的相对较大的紧缩数据操作掩码。
8.如权利要求1所述的处理器,进一步包括多个紧缩数据操作掩码寄存器,并且其中所述经掩码的紧缩数据指令的所述一个或多个位指定所述多个紧缩数据操作掩码寄存器中的紧缩数据操作掩码寄存器作为所述紧缩数据操作掩码的源。
9.如权利要求1-8中任一项所述的处理器,其中,所述第一和第二模式由所述处理器的寄存器中的一个或多个位来指示。
10.如权利要求1-8中任一项所述的处理器,其中,所述给定的紧缩数据操作和所述给定的紧缩数据操作的所述经掩码的版本包括以下之一:
紧缩乘法操作和经掩码的紧缩乘法操作;
紧缩加法操作和经掩码的紧缩加法操作;
紧缩逻辑与操作和经掩码的紧缩逻辑与操作;
紧缩逻辑或操作和经掩码的紧缩逻辑或操作;以及
紧缩比较操作和经掩码的紧缩比较操作。
11.一种由处理器执行的方法,包括:
在所述处理器不使用紧缩数据操作掩码的第一模式中,为给定的紧缩数据操作解码未经掩码的紧缩数据指令;
响应于在所述第一模式中解码所述未经掩码的紧缩数据指令,执行所述给定的紧缩数据操作;
在所述处理器使用紧缩数据操作掩码的第二模式中,为所述给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令,所述未经掩码的紧缩数据指令和所述经掩码的紧缩数据指令具有相同的指令长度,所述经掩码的紧缩数据指令具有一个或多个位以指定紧缩数据操作掩码;以及
响应于在所述第二模式中解码所述经掩码的紧缩数据指令,使用所指定的紧缩数据操作掩码,执行所述给定的紧缩数据操作的所述经掩码的版本。
12.如权利要求11所述的方法,其中,解码包括解码各自具有32位指令长度的所述未经掩码的紧缩数据指令和所述经掩码的紧缩数据指令。
13.如权利要求11所述的方法,进一步包括访问来自紧缩数据寄存器的所述紧缩数据操作掩码,所述紧缩数据寄存器由所述经掩码的紧缩数据指令的所述一个或多个位指定。
14.如权利要求13所述的方法,其中,访问包括将来自所述紧缩数据寄存器的多个数据元素中的每一个的位作为所述紧缩数据操作掩码来进行访问。
15.如权利要求13所述的方法,其中,访问包括访问来自所述紧缩数据寄存器的所述紧缩数据操作掩码,所述紧缩数据寄存器还存储至少一个其他紧缩数据操作掩码。
16.如权利要求15所述的方法,其中,访问包括访问来自所述紧缩数据寄存器的所述紧缩数据操作掩码,所述紧缩数据寄存器在第一视图中存储较大数量的相对较小的紧缩数据操作掩码并且在第二视图中存储较小数量的相对较大的紧缩数据操作掩码。
17.如权利要求11所述的方法,其中,进一步包括访问来自多个紧缩数据操作掩码寄存器中的一个的所述紧缩数据操作掩码,所述紧缩数据操作掩码寄存器的所述一个由所述经掩码的紧缩数据指令的一个或多个位来指定。
18.如权利要求11所述的方法,其中,所述方法在精简指令集计算(RISC)处理器中被执行。
19.如权利要求11所述的方法,进一步包括改变所述处理器的寄存器中的一个或多个位,以致使所述处理器处于所述第二模式中。
20.如权利要求11所述的方法,其中,执行所述给定的紧缩数据操作和所述给定的紧缩数据操作的所述经掩码的版本包括以下之一:
执行紧缩乘法操作和经掩码的紧缩乘法操作;
执行紧缩加法操作和经掩码的紧缩加法操作;
执行紧缩逻辑与操作和经掩码的紧缩逻辑与操作;
执行紧缩逻辑或操作和经掩码的紧缩逻辑或操作;以及
执行紧缩比较操作和经掩码的紧缩比较操作。
21.一种处理指令的系统,包括:
互连;
耦合到所述互连的动态随机存取存储器(DRAM);以及
耦合到所述互连的处理器,所述处理器包括:
第一模式,在所述第一模式中所述处理器不使用紧缩数据操作掩码;
第二模式,在所述第二模式中所述处理器使用紧缩数据操作掩码;
解码单元,用于在所述第一模式中为给定的紧缩数据操作解码未经掩码的紧缩数据指令,并且用于在所述第二模式中为所述给定的紧缩数据操作的经掩码的版本解码经掩码的紧缩数据指令,所述未经掩码的紧缩数据指令和所述经掩码的紧缩数据指令具有相同的指令长度,所述经掩码的紧缩数据指令具有一个或多个位以指定紧缩数据操作掩码;以及
耦合到所述解码单元的一个或多个执行单元,所述一个或多个执行单元,响应于所述解码单元在所述第一模式中解码所述未经掩码的紧缩数据指令,执行所述给定的紧缩数据操作,并且所述一个或多个执行单元,响应于所述解码单元在所述第二模式中解码所述经掩码的紧缩数据指令,使用所述指定的紧缩数据操作掩码,执行所述给定的紧缩数据操作的所述经掩码的版本。
22.如权利要求21所述的系统,其中,所述指令长度是32位,并且其中所述处理器包括精简指令集计算(RISC)处理器。
23.一种处理器,包括用于执行权利要求11-20中任一项所述方法的单元。
24.一种存储指令的机器可读存储介质,其中当所述指令由机器执行时,致使所述机器执行权利要求11-20中任一项所述的方法。
25.一种系统,包括权利要求1-8中任一项所述的处理器以及耦合到所述处理器的动态随机存取存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,739 US9990202B2 (en) | 2013-06-28 | 2013-06-28 | Packed data element predication processors, methods, systems, and instructions |
US13/931,739 | 2013-06-28 | ||
PCT/US2014/042797 WO2014209687A1 (en) | 2013-06-28 | 2014-06-17 | Packed data element predication processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105247475A true CN105247475A (zh) | 2016-01-13 |
CN105247475B CN105247475B (zh) | 2019-11-15 |
Family
ID=52116850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480030905.1A Active CN105247475B (zh) | 2013-06-28 | 2014-06-17 | 紧缩数据元素断定处理器、方法、系统和指令 |
Country Status (8)
Country | Link |
---|---|
US (5) | US9990202B2 (zh) |
EP (1) | EP3014418B1 (zh) |
KR (2) | KR20150141999A (zh) |
CN (1) | CN105247475B (zh) |
BR (1) | BR112015030098B1 (zh) |
RU (1) | RU2612597C1 (zh) |
TW (1) | TWI536187B (zh) |
WO (1) | WO2014209687A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643234A (zh) * | 2016-09-22 | 2019-04-16 | 英特尔公司 | 用于合并数据元素并生成索引更新的处理器、方法、系统和指令 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477467B2 (en) | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US9990202B2 (en) * | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
US10459723B2 (en) * | 2015-07-20 | 2019-10-29 | Qualcomm Incorporated | SIMD instructions for multi-stage cube networks |
US9785800B2 (en) | 2015-12-23 | 2017-10-10 | Intel Corporation | Non-tracked control transfers within control transfer enforcement |
US20170185400A1 (en) | 2015-12-23 | 2017-06-29 | Intel Corporation | Mode-specific endbranch for control flow termination |
US20170192781A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Strided Loads |
US11204764B2 (en) | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
CA3046803C (en) | 2016-12-14 | 2023-01-10 | Novetechnologies, LLC | Livestock biosecurity system and method of use |
RU2659492C1 (ru) * | 2017-08-18 | 2018-07-02 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" (ВятГУ) | Блок унификации с параллельным сопоставлением термов |
US10678540B2 (en) * | 2018-05-08 | 2020-06-09 | Arm Limited | Arithmetic operation with shift |
DE102018113475A1 (de) * | 2018-06-06 | 2019-12-12 | Infineon Technologies Ag | Rechenwerk zum rechnen mit maskierten daten |
US11256987B1 (en) | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
US11328209B1 (en) | 2021-06-02 | 2022-05-10 | SambaNova Systems, Inc. | Dual cycle tensor dropout in a neural network |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367705A (en) * | 1990-06-29 | 1994-11-22 | Digital Equipment Corp. | In-register data manipulation using data shift in reduced instruction set processor |
EP1267258A2 (en) * | 2001-06-11 | 2002-12-18 | Broadcom Corporation | Setting up predicates in a processor with multiple data paths |
CN101013359A (zh) * | 2006-02-06 | 2007-08-08 | 威盛电子股份有限公司 | 在双模式计算机处理环境下的指令集编码 |
US20090172365A1 (en) * | 2007-12-27 | 2009-07-02 | Doron Orenstien | Instructions and logic to perform mask load and store operations |
CN102163142A (zh) * | 2010-02-24 | 2011-08-24 | 英特尔公司 | 使用写入掩码的具有simd架构的寄存器分配 |
WO2013095510A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask concatenation processors, methods, systems, and instructions |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4903228A (en) * | 1988-11-09 | 1990-02-20 | International Business Machines Corporation | Single cycle merge/logic unit |
US5787303A (en) * | 1991-10-31 | 1998-07-28 | Kabushiki Kaisha Toshiba | Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture |
US5606677A (en) * | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
US5781457A (en) * | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
CA2156889C (en) | 1994-09-30 | 1999-11-02 | Edward L. Schwartz | Method and apparatus for encoding and decoding data |
CN103064650B (zh) | 1995-08-31 | 2016-02-24 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
US6052769A (en) | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6484255B1 (en) * | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
US6629115B1 (en) * | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method and apparatus for manipulating vectored data |
US7127593B2 (en) * | 2001-06-11 | 2006-10-24 | Broadcom Corporation | Conditional execution with multiple destination stores |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7002595B2 (en) * | 2002-10-04 | 2006-02-21 | Broadcom Corporation | Processing of color graphics data |
US20050149701A1 (en) | 2003-12-24 | 2005-07-07 | Inching Chen | Method, apparatus and system for pair-wise minimum and minimum mask instructions |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
US8180998B1 (en) * | 2007-09-10 | 2012-05-15 | Nvidia Corporation | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations |
US8156391B2 (en) | 2008-05-27 | 2012-04-10 | Lsi Corporation | Data controlling in the MBIST chain architecture |
US8667042B2 (en) * | 2010-09-24 | 2014-03-04 | Intel Corporation | Functional unit for vector integer multiply add instruction |
JP2013186547A (ja) * | 2012-03-06 | 2013-09-19 | Fujitsu Ltd | 演算処理装置、携帯端末および演算処理方法 |
US20130339680A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9256427B2 (en) * | 2012-12-11 | 2016-02-09 | International Business Machines Corporation | Tracking multiple conditions in a general purpose register and instruction therefor |
US9990202B2 (en) | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
-
2013
- 2013-06-28 US US13/931,739 patent/US9990202B2/en active Active
-
2014
- 2014-06-17 CN CN201480030905.1A patent/CN105247475B/zh active Active
- 2014-06-17 KR KR1020157031830A patent/KR20150141999A/ko active Application Filing
- 2014-06-17 RU RU2015151171A patent/RU2612597C1/ru not_active IP Right Cessation
- 2014-06-17 EP EP14818406.2A patent/EP3014418B1/en active Active
- 2014-06-17 BR BR112015030098-7A patent/BR112015030098B1/pt active IP Right Grant
- 2014-06-17 WO PCT/US2014/042797 patent/WO2014209687A1/en active Application Filing
- 2014-06-17 KR KR1020187000578A patent/KR20180006501A/ko not_active Application Discontinuation
- 2014-06-23 TW TW103121588A patent/TWI536187B/zh active
-
2018
- 2018-06-01 US US15/995,736 patent/US10430193B2/en active Active
-
2019
- 2019-09-28 US US16/586,977 patent/US10963257B2/en active Active
-
2021
- 2021-03-29 US US17/216,580 patent/US11442734B2/en active Active
-
2022
- 2022-08-29 US US17/898,418 patent/US20230108016A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367705A (en) * | 1990-06-29 | 1994-11-22 | Digital Equipment Corp. | In-register data manipulation using data shift in reduced instruction set processor |
EP1267258A2 (en) * | 2001-06-11 | 2002-12-18 | Broadcom Corporation | Setting up predicates in a processor with multiple data paths |
CN101013359A (zh) * | 2006-02-06 | 2007-08-08 | 威盛电子股份有限公司 | 在双模式计算机处理环境下的指令集编码 |
US20090172365A1 (en) * | 2007-12-27 | 2009-07-02 | Doron Orenstien | Instructions and logic to perform mask load and store operations |
CN102163142A (zh) * | 2010-02-24 | 2011-08-24 | 英特尔公司 | 使用写入掩码的具有simd架构的寄存器分配 |
WO2013095510A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask concatenation processors, methods, systems, and instructions |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643234A (zh) * | 2016-09-22 | 2019-04-16 | 英特尔公司 | 用于合并数据元素并生成索引更新的处理器、方法、系统和指令 |
CN109643234B (zh) * | 2016-09-22 | 2024-01-23 | 英特尔公司 | 用于合并数据元素并生成索引更新的处理器、方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2014209687A1 (en) | 2014-12-31 |
BR112015030098A2 (pt) | 2017-07-25 |
KR20180006501A (ko) | 2018-01-17 |
US20230108016A1 (en) | 2023-04-06 |
KR20150141999A (ko) | 2015-12-21 |
TW201508521A (zh) | 2015-03-01 |
US20180293074A1 (en) | 2018-10-11 |
RU2612597C1 (ru) | 2017-03-09 |
US20200026518A1 (en) | 2020-01-23 |
US9990202B2 (en) | 2018-06-05 |
US20150006858A1 (en) | 2015-01-01 |
BR112015030098B1 (pt) | 2022-04-26 |
TWI536187B (zh) | 2016-06-01 |
US20210216325A1 (en) | 2021-07-15 |
EP3014418B1 (en) | 2020-11-18 |
EP3014418A1 (en) | 2016-05-04 |
US10430193B2 (en) | 2019-10-01 |
EP3014418A4 (en) | 2017-03-08 |
US11442734B2 (en) | 2022-09-13 |
CN105247475B (zh) | 2019-11-15 |
US10963257B2 (en) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105247475A (zh) | 紧缩数据元素断定处理器、方法、系统和指令 | |
CN112099852A (zh) | 可变格式、可变稀疏矩阵乘法指令 | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
CN111177647A (zh) | 实行16位浮点矩阵点积指令的系统和方法 | |
JP5829714B2 (ja) | マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム | |
CN104603745A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN104603766A (zh) | 经加速的通道间的向量归约指令 | |
CN104011672A (zh) | 转置指令 | |
CN104603748A (zh) | 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器 | |
KR102592056B1 (ko) | 패킹된 데이터 정렬 플러스 계산 명령어, 프로세서,방법, 및 시스템 | |
CN104137060A (zh) | 高速缓存协处理单元 | |
CN105278917A (zh) | 无局部性提示的向量存储器访问处理器、方法、系统和指令 | |
CN105453030A (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN104350492A (zh) | 在大寄存器空间中利用累加的向量乘法 | |
CN104603746A (zh) | 由读和写掩码控制的向量移动指令 | |
CN104040487A (zh) | 用于合并掩码模式的指令 | |
CN104919432A (zh) | 用于将多个位向左移并将多个1拉入较低有效位的指令 | |
JP2019197531A (ja) | 連鎖タイル演算を実施するためのシステムおよび方法 | |
JP5806748B2 (ja) | 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法 | |
CN104813279A (zh) | 用于减少具有步幅式访问模式的向量寄存器中的元素的指令 | |
CN104321740A (zh) | 利用操作数基础系统转换和再转换的向量乘法 | |
CN105264489A (zh) | 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 | |
CN105814536A (zh) | Rsa算法加速处理器、方法、系统以及指令 | |
JP2018500659A (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
CN105278916A (zh) | 用于生成被抑制的地址踪迹的设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |