用于执行冲突检测并将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置...的制作方法

文档序号:8926990阅读:267来源:国知局
用于执行冲突检测并将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置 ...的制作方法
【技术领域】
[0001] 本发明的领域一般涉及计算机处理器架构,更具体地涉及在执行时导致特定结果 的指令。
【背景技术】
[0002] 指令集或指令集架构(ISA)是计算机架构中与编程有关的部分,并且可包括原生 数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输 出(I/O)。应该注意,术语指令在本文中一般是指宏指令一一即,提供给处理器供执行的指 令一一而不是由处理器的解码器解码宏指令所产生的微指令或微操作。
[0003] 指令集架构与微架构不同,微架构是实现ISA的处理器的内部设计。具有不同 的微架构的处理器可共享共同的指令集。例如,英特尔Pentium(奔腾)4处理器、英特尔 Core (酷眷)处理器、以及位于Sunnyvale CA的Advanced Micro Devices公司的处理器 实现x86指令集的几乎相同的版本(带有被添加到较新的版本中的某些扩展),但是,具有 不同的内部设计。例如,ISA的相同寄存器架构可以使用已知的技术,以不同的微型架构, 以不同的方式来实现,包括专用物理寄存器,使用寄存器重命名机制(例如,寄存器别名表 (RAT)的使用,重新排序缓冲器(ROB)以及退役寄存器文件,如美国专利No. 5, 446, 912所描 述的;使用多个图以及寄存器的池,如美国专利No. 5, 207, 132所描述的)的一个或多个动 态地分配的物理寄存器,等等。除非另作说明,短语寄存器架构、寄存器组以及寄存器是指 对软件/编程器以及指令指定寄存器的方式可见的东西。在需要特殊性的情况下,形容词 逻辑、架构、或软件可见的将用于表示寄存器架构中的寄存器/寄存器组,而不同的形容词 将用于指定给定微架构中的寄存器(例如,物理寄存器、重新排序缓冲器、引退寄存器、寄 存器池)。
[0004] 指令集包括一个或多个指令格式。给定指令格式定义各个字段(位的数量、位的 位置)以指定要执行的操作(操作码)以及对其要执行该操作的操作数等。给定指令是使 用给定指令格式来表达的,并指定操作和操作数。指令流是特定指令序列,其中该序列中的 每一指令都是指令格式的指令出现。
[0005] 科学、金融、自动向量化的通用、RMS(识别、挖掘以及合成)/可视和多媒体应用程 序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常需要 对大量的数据项执行相同操作(被称为"数据并行性")。单指令多数据(SMD)是指使处理 器对多个数据项执行相同操作的一种指令。SMD技术特别适于能够在逻辑上将寄存器中的 位分割为若干个固定尺寸的数据元素的处理器,其中每一个数据元素都表示单独的值。例 如,64位寄存器中的位可被指定为作为四个单独的16位数据元素的、将对其操作的源操作 数,每一个数据元素都表示单独的16位值。作为另一个示例,256位寄存器中的位可被指定 为作为四个单独的64位紧缩数据元素(四字(?尺寸的数据元素)、八个单独的32位紧缩 数据元素(双字(D)尺寸的数据元素)、十六个单独的16位紧缩数据元素(字(W)尺寸的 数据元素)、或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)的、将对其操作 的源操作数。这种类型的数据被称为紧缩数据类型或向量数据类型,这种数据类型的操作 数被称为紧缩数据操作数或向量操作数。换句话说,紧缩数据项或向量指的是紧缩数据元 素的序列;并且紧缩数据操作数或向量操作数是SMD指令(也称为紧缩数据指令或向量指 令)的源操作数或目的地操作数。
[0006] 作为示例,一种类型的SMD指令指定要以纵向方式对两个源向量操作数执行的 单个向量操作,以生成相同尺寸的、具有相同数量的数据元素、且有相同数据元素顺序的目 的地向量操作数(也称为结果向量操作数)。源向量操作数中的数据元素被称为源数据元 素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数 具有相同的尺寸,并包含相同宽度的数据元素,因此它们包含相同数量的数据元素。两个源 向量操作数中的相同的位的位置中的源数据元素形成数据元素对(也称为相对应的数据 元素;即,每个源操作数的数据元素位置〇中的数据元素相对应,每个源操作数的数据元素 位置1中的数据元素相对应,以此类推)。分别地对这些源数据元素对中的每一对执行由该 SMD指令所指定的操作,以生成匹配数量的结果数据元素,如此,每一对源数据元素都具有 对应的结果数据元素。由于操作是纵向的,并且由于结果向量操作数尺寸相同、具有相同数 量的数据元素、且结果数据元素以与源向量操作数相同的数据元素顺序来存储,因此,结果 数据元素处于与其对应的源数据元素对在源向量操作数中的位置相同的,结果向量操作数 的位的位置处。除此示例性类型的SMD指令之外,还有各种其他类型的SMD指令(例如, 仅有一个或具有两个以上的源向量操作数的SMD指令;以水平方式操作的SMD指令;生 成不同尺寸的结果向量操作数的SIMD指令;具有不同尺寸的数据元素的SIMD指令;和/或 具有不同的数据元素顺序的SIMD指令)。应该理解,术语目的地向量操作数摂(或目的地 操作数)被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某 一位置(寄存器或在由该指令所指定的存储器地址),以便它可以作为源操作数由另一指 令访问(由另一指令指定该同一个位置)。
[0007]诸如由具有包括 x86、MMX?、流式 SMD 扩展(SSE)、SSE2、SSE3、SSE4. 1 以及 SSE4. 2 指令的指令集的Intel?Core?处理器使用的技术之类的SMD技术,在应用性能方面实现了 显著的改善(Core?和MMX?是位于加利福尼亚州Santa Clara的Intel Corporation的注 册商标或商标。)。称为高级向量扩展(AVX) (AVX1和AVX2)又使用VEX编码方案的额外的 SMD扩展集已经被发布或出版(例如,参见2011年10月的丨ntel?64和IA-32架构软件 开发手册,并且参见2011年6月的丨ntel?高级向量扩展编程参考)。
【附图说明】
[0008] 本发明在附图中作为示例而非限制地示出,其中类似的附图标记指示相似的元 件,附图中:
[0009] 图1示出VPTESTCONF的操作的示例性图示。
[0010] 图2示出处理器中VPTESTCONF指令的执行的实施例。
[0011] 图3示出用于处理VPTESTCONF指令的方法的实施例。
[0012] 图4示出用于广播的示例性过程。
[0013] 图5示出VPBROADCASTM的操作的示例性图示。
[0014] 图6示出处理器中VPBROADCASTM指令的执行的实施例。
[0015] 图7示出处理VPBROADCASTM指令的方法的实施例。
[0016] 图8示出根据本发明的一个实施例的一个有效位向量写掩码元素的数量同向量 尺寸和数据元素尺寸之间的相关性。
[0017] 图9是根据本发明的一个实施例的寄存器架构900的框图。
[0018] 图10A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重 命名的无序发布/执行流水线的框图。
[0019] 图10B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例 性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。
[0020] 图11A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑 块之一(包括相同类型和/或不同类型的其他核)。
[0021] 图12是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制 器、以及可能具有集成图形器件的处理器1200的框图。
[0022] 图13-16是示例性计算机架构的框图。
[0023] 图17是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制 指令变换成目标指令集中的二进制指令的框图。
[0024] 图18示出比较的输出结果作为一组位向量。
【具体实施方式】
[0025] 在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细 节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模 糊对本描述的理解。
[0026] 说明书中对"一个实施例"、"实施例"、"示例实施例"等等的引用表示所描述的实 施例可包括特定特征、结构或特性,但是,每一个实施例可以不一定包括该特定特征、结构, 或特征。此外,这些短语不一定表示同一实施例。此外,当结合实施例描述特定的特征、结 构或特性时,认为本领域普通技术人员能够知晓结合其它实施例来实现这种特征、结构或 特性,无论是否明确描述。
[0027]概览
[0028] 在以下描述中,在描述该指令集架构中的该特定指令的操作之前,需要解释一些 项目。一个这样的项叫做"写掩码寄存器",其一般用于断定(predicate)操作数,以有条件 地控制每元素计算操作(下面,也可以使用术语掩码寄存器,是指诸如下面所讨论的"k"寄 存器之类的写掩码寄存器)。如下文中使用,写掩码寄存器存储多个位(16、32、64等等), 其中写掩码寄存器中的每个有效位控制向量寄存器的紧缩数据元素在SMD处理期间的操 作/更新。典型地,存在超过一个写掩码寄存器可供处理器核使用。
[0029] 该指令集架构包括至少一些SMD指令,该至少一些SMD指令指定向量操作并具 有用于从这些向量寄存器中选择源寄存器和/或目的地寄存器的字段(示例性的SMD指 令可指定要对向量寄存器中的一个或多个向量寄存器的内容执行的向量操作,并且将该向 量操作的结果存储在向量寄存器之一中)。本发明的不同实施例可具有不同尺寸的向量寄 存器,并支持更多/更少/不同尺寸的数据元素。
[0030] 由SIMD指令所指定的多位数据元素的尺寸(例如,字节、字、双字、四倍长字)确 定向量寄存器内的"数据元素位置"的位位置,而向量操作数的尺寸确定数据元素的数量。 紧缩数据元素指的是存储在特定位置中的数据。换言之,取决于目的地操作数中数据元素 的尺寸以及目的地操作数的尺寸(目的地操作数中位的总数)(或换言之,取决于目的地操 作数的尺寸和目的地操作数中数据元素的数量),所得到的向量操作数内多位数据元素位 置的位定位(bit location)改变(例如,如果所得到的向量操作数的目的地是向量寄存器 (在该讨论中,向量寄存器和紧缩数据元素寄存器互换地使用),则目的地向量寄存器内多 位数据元素位置的位定位改变)。例如,在对32位数据元素进行操作的向量操作(数据元 素位置0占据位位置31:0,数据元素位置1占据位位置63:32,以此类推)与对64位数据 元素进行操作的向量操作(数据元素位置〇占据位位置63:0,数据元素位置1占据位位置 127:64,以此类推)之间,多位数据元素的位位置不同。
[0031] 此外,根据本发明的一个实施例,在1有效位向量写掩码元素的数量与向量尺寸 和数据元素尺寸之间存在如图8所示的关联。示出了 128位、256位以及512位的向量尺 寸,不过其他宽度也是可能的。考虑了 8位字节(B)、16位字(W)、32位双字(D)或单精度 浮点以及64位四字(?或双精度浮点的数据元素尺寸,不过其他宽度也是可能的。如图所 示,当向量尺寸是128位时,当向量的数据元素尺寸是8位时16位可以用于掩码,当向量的 数据元素尺寸是16位时8位可以用于掩码,当向量的数据元素尺寸是32位时4位可以用 于掩码,且当向量的数据元素尺寸是64位时2位可以用于掩码。当向量尺寸是256位时, 当紧缩的数据元素宽度是8位时32位可以用于掩码,当向量的数据元素尺寸是16位时16 位可以
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1