紧缩数据元素断定处理器、方法、系统和指令的制作方法

文档序号:9493646阅读:379来源:国知局
紧缩数据元素断定处理器、方法、系统和指令的制作方法
【技术领域】
[0001] 概括地说,本文所描述的实施例涉及处理器。更具体地说,本文所描述的实施例一 般涉及能够处理紧缩数据(packeddata)的处理器。
【背景技术】
[0002] 许多处理器具有单指令多数据(S頂D)架构。在S頂D架构中,替代仅对一个数据 元素或一对数据元素进行操作的标量指令,紧缩数据指令、矢量指令或SIMD指令可以对多 个数据元素或多对数据元素并发地(例如,并行)进行操作。所述处理器可以具有并行执 行硬件,其响应于紧缩数据指令,用于对多个数据元素并发地(例如,并行)执行多个操作。
[0003] 在SMD架构中,可以将多个数据元素紧缩在一个寄存器或存储器单元内,作为紧 缩数据或矢量数据。在紧缩数据中,可以逻辑地将寄存器或其他存储单元的位划分为多个 数据元素的序列。每个数据元素可以表示在寄存器或其他存储单元中与其他通常具有相同 尺寸的数据元素一起存储的单独数据片。例如,128位宽寄存器可以具有两个64位宽的紧 缩数据元素、四个32位宽的紧缩数据元素、八个16位宽的紧缩数据元素、或十六个8位宽 的紧缩数据元素。每个所述的紧缩数据元素通常表示分开的单独数据片(例如,像素颜色、 图形坐标等),其可以与其他的分开地进行操作。
[0004] 代表性地,一种类型的紧缩数据指令、矢量指令或SMD指令(例如,紧缩加法指 令)可以指定:对来自于两个源紧缩数据操作数的所有对应的数据元素对,以垂直方式执 行单个紧缩数据操作(例如,加法),以产生目的或结果紧缩数据。源紧缩数据操作数可以 是相同的尺寸,可以包含相同宽度的数据元素,因此可以每个包含相同数量的数据元素。在 两个源紧缩数据操作数中的相同的位位置中的源数据元素可以表示对应的数据元素对。可 以对这些对应的源数据元素对中的每一对分开地或基本上独立地执行紧缩数据操作,以产 生匹配数量的结果数据元素,因此每对对应的源数据元素可以具有对应的结果数据元素。 典型地,这样的指令的结果数据元素按照相同的顺序,并且它们通常具有相同的尺寸。
[0005] 除这种示例性类型的紧缩数据指令之外,还有各种其他类型的紧缩数据指令。例 如,有一些仅具有一个源紧缩数据操作数的。例如,紧缩数据移位指令可以独立地移动单个 源紧缩数据的每个数据元素以产生结果紧缩数据。其他紧缩数据指令可以对两个以上的源 紧缩数据操作数进行操作。此外,其他紧缩数据指令可以对在相同的紧缩数据操作数中的 数据元素(例如,对在两个源紧缩数据操作数之间的对应的数据元素)以水平方式代替以 垂直方式进行操作。尽管如此,其他紧缩数据指令可以产生不同尺寸的结果紧缩数据操作 数,其具有不同尺寸的数据元素、和/或具有不同的数据元素顺序。
【附图说明】
[0006] 通过参考用于说明实施例的以下描述和附图,可以最好地理解本发明。在附图 中:
[0007] 图1是处理器的实施例的框图。
[0008] 图2是处理器的另一个实施例的框图。
[0009] 图3是采取合并的经掩码的紧缩数据操作的示例实施例的框图。
[0010] 图4是采取归零的经掩码的紧缩数据操作的示例实施例的框图。
[0011] 图5是处理经掩码的紧缩数据指令的实施例的方法的实施例的流程框图。
[0012] 图6是示出紧缩数据操作掩码位的数量依赖于紧缩数据宽度和紧缩数据元素宽 度的表格。
[0013] 图7是一组合适的紧缩数据操作掩码寄存器的示例实施例的框图。
[0014] 图8是示出紧缩数据操作掩码寄存器的实施例,并且示出紧缩数据操作掩码位的 数量依赖于紧缩数据宽度和数据元素宽度的图。
[0015] 图9是示出了实施例的框图,其中,可以逻辑地将相同的物理寄存器看作紧缩数 据寄存器或紧缩数据操作掩码寄存器,和/或作为紧缩数据寄存器或紧缩数据操作掩码寄 存器来进行访问。
[0016] 图10是示出了实施例的框图,其中,可以逻辑地将相同的物理寄存器看作紧缩数 据寄存器或存储有多个紧缩数据操作掩码的紧缩数据操作掩码寄存器,和/或作为紧缩数 据寄存器或存储有多个紧缩数据操作掩码的紧缩数据操作掩码寄存器来进行访问。
[0017] 图11是示出了实施例的框图,其中,紧缩数据操作掩码的位被分布在紧缩数据的 数据元素中。
[0018] 图12是示出了实施例的框图,其中,具有分布在紧缩数据的数据元素中的紧缩数 据操作掩码位的一组寄存器可以从不同的视图中被看作存储有两个或多个较小的掩码或 单个较大的掩码,或作为存储有两个或多个较小的掩码或单个较大的掩码来进行访问。
[0019] 图13A是示出根据本发明的实施例的示例性有序(in-order)流水线和示例性寄 存器重命名无序(out-of-order)发布/执行流水线的方框图。
[0020] 图13B是示出根据本发明的实施例的被包括在处理器中的有序架构核心和示例 性寄存器重命名无序发布/执行架构核心的示例性实施例的方框图。
[0021] 图14A是根据本发明的实施例的单处理器核心连同它到管芯上互连网络的连接 及它的2级(L2)高速缓存的本地子集的方框图。
[0022] 图14B是根据本发明的实施例的在图14A中的处理器核心的部分的展开图。
[0023] 图15是根据本发明的实施例的可具有多于一个核心、可具有集成存储器控制器 以及可具有集成图形的处理器的方框图。
[0024] 图16示出根据本发明的一个实施例的系统的方框图。
[0025] 图17示出根据本发明的实施例的第一更具体的示例性系统的方框图。
[0026] 图18示出根据本发明的实施例的第二更具体的示例性系统的方框图。
[0027] 图19示出根据本发明的实施例的SoC的方框图。
[0028] 图20是根据本发明的实施例的对照将源指令集中的二进制指令转换成目标指令 集中的二进制指令的软件指令转换器的使用的方框图。
【具体实施方式】
[0029] 本文中公开的是对紧缩数据元素进行断定(predicate)或掩码操作的方法。在下 面的描述中,阐述了许多具体的细节(例如,实现掩码的具体方式、具体的掩码长度、数据 格式、处理器配置、微架构细节、操作序列等)。然而,可以不通过这些具体的细节来实施实 施例。在其他实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
[0030] 图1是处理器100的实施例的框图。该处理器表示可操作用于处理指令的指令处 理装置。在一些实施例中,所述处理器可以是通用处理器(例如,在台式、膝上型等计算机 中经常被用作中央处理单元(CPU)的类型的通用微处理器)。替代地,所述处理器可以是 专用处理器。合适的专用处理器的示例包括但不限于:网络处理器、通信处理器、加密处理 器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制 器),此处仅是列举数例。所述处理器可以是各种复杂指令集计算(CISC)处理器、各种精简 指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型 的处理器中的任何处理器。在一些实施例中,所述处理器可以表示能够利用紧缩数据操作 的断定或掩码的RISC处理器。
[0031] 所述处理器具有指令集102。指令集的指令表示宏指令、汇编语言指令或被提供给 处理器以供执行的机器级指令,与从所述指令集的指令解码或转换的微指令、微操作或其 他指令或控制信号相对。在一些实施例中(例如,如在某些RISC处理器的情况下),所述指 令可以具有基本上固定的指令长度(例如,所有或至少大部分的指令可以是32位或其他一 些长度),与具有可变指令长度相对。
[0032] 如图所示,在一些实施例中,所述指令集可以可选地包括一个或多个未经掩码的 紧缩数据指令106,用于一个或多个给定的未经掩码的紧缩数据操作。如图所示,所述指令 集还包括一个或多个经掩码的紧缩数据指令104,用于一个或多个给定的经掩码的紧缩数 据操作。合适的经掩码和未经掩码的紧缩数据指令/操作的一些说明性示例包括但不限 于:经掩码和未经掩码的紧缩加法指令/操作、经掩码和未经掩码的紧缩减法指令/操作、 经掩码和未经掩码的紧缩乘法指令/操作、经掩码和未经掩码的紧缩移位指令/操作、经掩 码和未经掩码的紧缩循环指令/操作、经掩码和未经掩码的紧缩比较指令/操作、经掩码和 未经掩码的紧缩逻辑或指令/操作、经掩码和未经掩码的紧缩逻辑与指令/操作、经掩码和 未经掩码的紧缩倒数指令/操作、经掩码和未经掩码的紧缩平均数指令/操作以及本领域 公知的其他经掩码和未经掩码的紧缩算术和/或逻辑指令/操作。
[0033] 所述处理器还包括一组紧缩数据寄存器108。紧缩数据寄存器通常表示管芯上的 处理器的存储单元,每个可操作用于存储紧缩数据、矢量数据或SB?数据。紧缩数据寄存 器可以表示对软件和/或程序员可见的寄存器,和/或由所述指令集的指令指定以标识操 作数(例如,源和目的操作数)的寄存器。所述寄存器可以使用公知技术以不同方式在不 同的微架构中实现,并且不限于任何特定类型的电路。寄存器的合适类型的示例包括但不 限于:专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器以及它们的组合。
[0034] 在一些实施例中,所述处理器可以可选地具有一组一个或多个在紧缩数据寄存器 108上实现的紧缩数据操作掩码寄存器 110,尽管这不是必需的。在一些实施例中,所述处 理器可以可选地具有一组一个或多个与所述紧缩数据寄存器108分开的分开专用紧缩数 据操作掩码寄存器112。紧缩数据操作掩码寄存器110和/或紧缩数据操作掩码寄存器112 可以被用来存储紧缩数据操作掩码。通过示例的方式,所述经掩码的紧缩数据指令可以具 有一个或多个位来指定紧缩数据操作掩码,例如,紧缩数据操作掩码寄存器112或紧缩数 据寄存器108。本文中紧缩数据操作掩码也可以被称作断定掩码,或简单地称作掩码。
[0035] 所述处理器还包括一个或多个执行单元114。所述一个或多个执行单元可操作用 于执行或处理所述指令集102的指令(例如,经掩码的紧缩数据指令104)。在一些实施例 中,执行单元可以包括特定的逻辑(例如,特定的集成电路或可能与固件结合的其他硬件) 来执行或处理指令。
[0036] 在一些实施例中,所述处理器可以具有不同的模式,其中掩码用于或不用于紧缩 数据指令/操作,尽管这不是必需的。例如,所述处理器可以具有第一模式,其中处理器不 使用紧缩数据操作掩码,以及第二模式,其中处理器使用紧缩数据操作掩码。通过示例的方 式,未经掩码的紧缩数据指令可以被取出、解码和执行,以在所述第一模式中不使用掩码或 紧缩数据操作掩码来执行未经掩码的紧缩数据操作。与此相反,经掩码的紧缩数据指令可 以被取出、解码和执行,以在所述第二模式中使用紧缩数据操作掩码和掩码来执行经掩码 的紧缩数据操作。所述第一和第二模式可以由所述处理器的寄存器中的一个或多个位来指 示(例如,控制寄存器、配置寄存器等)。这种不同模式的使用可以有助于在RISC处理器、 使用基本上固定指令长度的处理器(例如,从大多数到几乎所有的指令具有相同的指令长 度,例如32位)、具有有限操作码空间的处理器等中提供优势。通常,在这样的处理器中,可 用的操作码数量不足以支持给定的紧缩数据操作的未经掩码的和经掩码的版本。通过为经 掩码的紧缩数据操作提供不同的模式,可以包括额外的指令来执行经掩码的紧缩数据操作 而无需必然增加操作码的长度。其他实施例并不限于使用这样的模式。
[0037] 图2是处理器200的另一个实施例的框图。如之前,所述处理器可以表示通用处 理器或专用处理器,并且可以是各种RISC、CISC、VLIW、混合或其他类型的处理器中的任一 处理器。上面针对图1的处理器提到的任何细节和可选的细节也可以可选地应用于图2的 处理器。
[0038] 所述处理器200可以接收经掩码的紧缩数据指令204。例如,可以从指令取出单 元、指令队列等接收所述指令。所述经掩码的紧缩数据指令可以表示机器代码指令、汇编语 言指令、宏指令或处理器的指令集的控制信号。任何前面提到的类型的经掩码的紧缩数据 指令,以及其他类型的经掩码的紧缩数据指令,是合适的。
[0039] 所示出的处理器包括指令解码单元216。指令解码单元也可以被称作解码单元或 解码器。解码单元可以接收和解码相对较高级别的指令(例如,宏指令、机器代码指令、汇 编语言指令等),并且输出一个或多个相对较低级别的指令或控制信号(例如,微指令、微 操作、微代码入口点等),其反映、表示较高级别的指令,和/或从较高级别的指令导出。所 述一个或多个较低级别的指令或控制信号可以通过一个或多个较低级别的(例如,电路级 或硬件级)的操作实现更高级别的指令。可以使用各种不同的机制来实现解码单元,包括 但不限于:微码只读存储器(R0M)、查找表、硬件实现、可编程逻辑阵列(PLA),以及本领域 公知的用于实现解码单元的其他机制。
[0040] 在其他实施例中,可以使用指令模拟器、翻译器、变形器、解释器或其他指令转换 逻辑。各种不同类型的指令转换逻辑是本领域的公知技术,并且可以以软件、硬件、固件、或 其组合来实现。所述指令转换逻辑可以模拟、翻译、变形、解释、或以其他方式将指令转换成 一个或多个对应的导出的指令或控制信号。在一些实施例中,可以使用指令转换逻辑和解 码单元。例如,指令转换逻辑可以将指令转换成一个或多个中间指令,并且解码单元可以将 所述一个或多个中间指令解码成处理器的集成电路可执行的一个或多个较低级别的指令 或控制信号。所述指令转换逻辑可以位于处理器外部(例如,在分开的管芯上或在存储器 中)、在处理器上或在它们的组合上。
[0041] 所述处理器还包括一组紧缩数据寄存器208。这些紧缩数据寄存器可以类似于上 面所描述的紧缩数据寄存器108。所述经掩码的紧缩数据指令204可以显式地指定(例 如,通过一个或多个字段或一组位)、或以其他方式指示(例如,隐式指示)第一源紧缩数 据(例如,第一源紧缩数据寄存器218)。根据指令的类型,所述经掩码的紧缩数据指令可 以可选地显式地指定或以其他方式指示第二源紧缩数据(例如,第二源紧缩数据寄存器 220)。在一些情况下,经掩码的紧缩数据可以可选地指定或以其他方式指示目的紧缩数据 (例如,目的紧缩数据寄存器222)。在其他实施例中,可以将一个或多个这些紧缩数据操作 数存储在存储器单眼中或其他存储单元中。此外,在其他实施例中,可以复用一个源紧缩数 据存储单元作为目的紧缩数据存储单元。
[0042] 在一些实施例中,经掩码的紧缩数据指令还可以指定或以其他方式指示源紧缩数 据操作掩码212 (例如,源紧缩数据操作掩码寄存器)。在所示出的实施例中,源紧缩数据操 作掩码212可以表示与紧缩数据寄存器208分开的寄存器。在另一个实施例中,源紧缩数 据操作掩码可以在紧缩数据寄存器208上实现。
[0043] 再次参考图2,执行单元214耦合于解码单元216,耦合于紧缩数据寄存器208,并 且耦合于源紧缩数据操作掩码212。在一些实施例中,执行单元可以包括算术单元、算术逻 辑单元、功能单元、用于接收解码指令和执行操作的单元等。执行单元响应于经掩码的紧缩 数据指令204和/或作为该指令的结果(例如,响应于一个或多个经过解码或以其
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1