用于数据元素中的位填零的系统、设备和方法.pdf

上传人:b*** 文档编号:177562 上传时间:2018-01-31 格式:PDF 页数:33 大小:5.45MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410097122.7

申请日:

2014.03.14

公开号:

CN104133660A

公开日:

2014.11.05

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/38申请日:20140314|||公开

IPC分类号:

G06F9/38; G06F9/34

主分类号:

G06F9/38

申请人:

英特尔公司

发明人:

E·乌尔德-阿迈德-瓦尔; R·凡伦天

地址:

美国加利福尼亚州

优先权:

2013.03.15 US 13/840,669

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

张东梅

PDF下载: PDF下载
内容摘要

描述了用于执行NAME指令的系统、方法和装置的实施例。VPBZHI的执行导致在第二源的每数据元素基础上,比数据元素的开始点高(更高有效)的位的归零。开始点由第一源中的数据元素的内容限定。结果数据元素被存储在目的地的相对应数据元素位置中。

权利要求书

1.  一种设备,包括:
解码逻辑,用于解码从指定的位位置开始的向量打包零高位(VPBZHI)指令,所述VPBZHI指令包括第一和第二源操作数和目的地操作数;
执行逻辑,用于执行经解码的VPBZHI指令以导致,
对于第一源操作数的每个数据元素位置,确定用于对第二源在该开始位置的数据元素开始的值进行归零的开始位位置,
对于第二源操作数的每个对应的数据元素位置,比所述第一源操作数的相对应数据元素位置的开始位位置更高有效或与之相等的位位置中的位的归零,
将任何归零后的第二源的目的地操作数值存储在相应的数据元素位置中。

2.
  如权利要求1所述的设备,其特征在于,所述源和目的地操作数是打包数据寄存器。

3.
  如权利要求2所述的设备,其特征在于,所述打包数据寄存器的尺寸是128位、256位或512位。

4.
  如权利要求1所述的设备,其特征在于,所述指令还包括写掩码操作数。

5.
  如权利要求4所述的设备,其特征在于,目的地寄存器中的存储经受写掩码操作数的值。

6.
  如权利要求4所述的设备,其特征在于,写掩码操作数中有效位的数量等于源操作数中数据元素的数量。

7.
  如权利要求1所述的设备,其特征在于,所述第一源和目的地操作数是 打包数据寄存器,且第二源操作数是存储器位置。

8.
  一种在计算机处理器中执行从指定的位位置开始的向量打包零高位(VPBZHI)指令的方法,所述VPBZHI指令包括第一和第二源操作数和目的地操作数,所述方法包括:
对于第一源操作数的每个数据元素位置,确定用于对第二源在该开始位置的数据元素开始的值进行归零的开始位位置,
对于第二源操作数的每个对应的数据元素位置,将比所述第一源操作数的相对应数据元素位置的开始位位置更高有效或与之相等的位位置中的位归零,
将任何归零后的第二源的目的地操作数值存储在相应的数据元素位置中。

9.
  如权利要求8所述的方法,其特征在于,所述源和目的地操作数是打包数据寄存器。

10.
  如权利要求9所述的方法,其特征在于,所述打包数据寄存器的尺寸是128位、256位或512位。

11.
  如权利要求8所述的方法,其特征在于,所述指令还包括写掩码操作数。

12.
  如权利要求11所述的方法,其特征在于,目的地寄存器中的存储经受写掩码操作数的值。

13.
  如权利要求11所述的方法,其特征在于,写掩码操作数中有效位的数量等于源操作数中数据元素的数量。

14.
  如权利要求8所述的方法,其特征在于,所述第一源和目的地操作数是打包数据寄存器,且第二源操作数是存储器位置。

15.
  一种包括代码的有形机器可读介质,所述代码在由处理器执行时导致处理器执行一种方法,用于执行从指定的位位置开始的向量打包零高位(VPBZHI)指令,所述VPBZHI指令包括第一和第二源操作数和目的地操作数,所述方法包括:
对于第一源操作数的每个数据元素位置,确定用于对第二源在该开始位置的数据元素开始的值进行归零的开始位位置,
对于第二源操作数的每个对应的数据元素位置,将比所述第一源操作数的相对应数据元素位置的开始位位置更高有效或与之相等的位位置中的位归零,
将任何归零后的第二源的目的地操作数值存储在相应的数据元素位置中。

16.
  如权利要求15所述的方法,其特征在于,所述源和目的地操作数是打包数据寄存器。

17.
  如权利要求16所述的方法,其特征在于,所述打包数据寄存器的尺寸是128位、256位或512位。

18.
  如权利要求17所述的方法,其特征在于,所述指令还包括写掩码操作数。

19.
  如权利要求18所述的方法,其特征在于,目的地寄存器中的存储经受写掩码操作数的值。

20.
  如权利要求15所述的方法,其特征在于,所述第一源和目的地操作数是打包数据寄存器,且第二源操作数是存储器位置。

说明书

用于数据元素中的位填零的系统、设备和方法
发明领域
本发明领域一般涉及计算机处理器架构,尤其涉及在被执行时产生特定结果的指令。
背景
指令集或指令集架构(ISA)是与编程有关的计算机架构的一部分,且可包括本机数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。应注意术语指令在本文中一般指的是宏指令——提供给处理器以供执行的指令——与从处理器的解码器解码宏指令得到的微指令或微操作相反。
附图简述
在附图各图中通过示例而不是限制说明了本发明,其中类似标记指示相似元件,且其中:
图1示出根据本发明的一个实施例的一个有效位向量写掩码元素的数量和向量尺寸和数据元素尺寸之间的相关性。
图2是用于执行一个或多个指令的处理器(处理器核)的示例性实施例的框图。
图3示出VPBZHI的操作的示例性图示。
图4示出处理器中VPBZHI指令的执行的实施例。
图5示出处理VPBZHI指令的方法的实施例。
图6是根据本发明的一个实施例的寄存器架构600的框图。
图7A是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。
图7B是示出根据本发明的实施例的有序流水线以及示例性寄存器重命 名、无序发布/执行流水线的框图。
图8A-B示出更特定的示例性有序核架构的框图,其核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。
图9是根据本发明的实施例的处理器900的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形。
图10-13是示例性计算机架构的框图。
图14是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
在下面的描述中,阐述了很多具体细节。然而,应当理解,本发明的实施例可在没有这些具体细节的情况下实践。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使本描述变得模糊。
在说明书中对“一个实施例”、“一实施例”、“示例实施例”等的参考指示所描述的实施例可包括特定特征、结构或特性,但并不一定每个实施例都包括该特定特征、结构或特性。此外,这样的短语不一定是指同一个实施例。此外,当结合实施例描述特定特征、结构或特性时,认为本领域技术人员知道结合无论是否明显描述的其他实施例来实现这些特征、结构或特性。
概览
指令集架构与微架构不同,微架构是实现ISA的处理器的内部设计。具有不同微架构的处理器可共享公共指令集。例如,英特尔奔腾四(Pentium4)处理器、英特尔酷睿(Core)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的高级微设备有限公司(Advanced Micro Devices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,ISA的相同寄存器体系结构在不同的微体系结构中使用已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,如美国专利No.5,446,912所述,使用寄存器假名表(RAT)、重排序缓冲器(ROB)、以及引退寄存器文件;如果美国专利No.5,207,132所述,使用多个寄存器映射和池)的一个或多个动态分配物理寄存器等。除非明确指出,否则短语寄存器 架构、寄存器文件和寄存器指的是对软件/程序员可见的那些以及指令指定寄存器的方式。在期望特殊性的情况下,形容词逻辑、架构或软件可见物可用于指示寄存器架构中的寄存器/文件,同时不同的形容词将用于指定给定微架构中的寄存器(例如,物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。
指令集包括一个或多个指令格式。给定的指令格式定义多个字段(位数、位的位置)以特别指定将要被执行的操作以及将要被执行的操作的操作数。给定的指令利用给定的指令格式来表达,并且指定操作和操作数。指令流是特定的指令序列,其中序列中的每个指令是指令按照指令格式的存在。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用/视觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)通常需要对大量数据项(称为“数据并行性”)进行相同的操作。单指令多数据(SIMD)指的是使得处理器在多个数据项目上执行相同操作的一种类型的指令。SIMD技术尤其适用于处理器,这些处理器将寄存器中的诸个位(bit)逻辑地划分入多个固定大小的数据元素,每个数据元素表示单独的值。例如,64位寄存器中的诸个位可被指定为源操作数,该源操作数被操作为四个单独的16位数据元素,每个数据元素表示单独的16位值。作为另一个示例,256位寄存器中的位可被指定为源操作数,该源操作数被操作为四个单独的64位打包数据元素(四字(Q)尺寸数据元素)、该源操作数被操作为八个单独的32位打包数据元素(双字(D)尺寸数据元素)、该源操作数被操作为十六个单独的16位打包数据元素(字(W)尺寸数据元素)、或该源操作数被操作为三十二个单独的8位打包数据元素(字节(B)尺寸数据元素)。该数据类型可被称为打包数据类型或向量数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列;并且打包数据操作数或向量操作数是SIMD指令(也称为打包数据指令或向量指令)的源操作数或目的地操作数。
作为示例,一种类型的SIMD指令指定将要以垂直方式在两个源向量操作数上执行的单个向量操作,以生成相同大小的、具有相同数量的数据元素、具有相同数据元素次序的目的地向量操作数(也被称为是结果向量操作数)。源向量操作数中的数据元素被称为源数据元素,而目的地向量操作数中的数据元 素被称为目的地或结果数据元素。这些源向量操作数具有相同尺寸且包含相同宽度的数据元素,因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数的数据元素位置1中的数据元素相对应,等等)。SIMD指令指定的操作在这些源数据元素对中的每对上单独执行,以生成匹配数量的结果数据元素,并且因此每对源数据元素具有相对应的结果数据元素。因为操作是垂直的,且因为结果向量操作数尺寸相同,具有相同数量的数据元素,且结果数据元素以与源向量操作数相同的数据元素顺序存储,结果数据元素在结果向量操作数中的位位置与源向量操作数中的相对应源数据元素对相同。除SIMD指令的这种示例性类似外,存在各种其它类型的SIMD指令(例如,仅具有一个源向量操作数或具有两个以上的源向量操作数;以水平方式操作;生成不同尺寸的结果向量操作数,具有不同尺寸的数据元素和/或具有不同的数据元素顺序)。应理解,术语目的地向量操作数(或目的地操作数)被定义为执行由指令指定的操作的直接结果,包括该目的地操作数在位置处的存储(在寄存器中或在该指令指定的存储器地址处),使得它可由另一个指令访问作为源操作数(通过另一个指令对该相同位置的指定)。
例如由CoreTM处理器(具有包括x86、MMX、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)所使用的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的intel公司的注册商标或商标)。另外的SIMD扩展集称为高级向量扩展(AVX)(AVX1和AVX2)并且使用VEX编码方案,已经被发行和/或出版(例如,参见64and IA-32Architectures Software Developers Manual,October2011;以及Advanced Vector Extensions Programming Reference,June2011)。
在以下的描述中,在描述指令集架构中的该特定指令的操作之前需要解释一些项。一个这样的项被称为“写掩码寄存器”,它通常用于断言操作数以有条件地控制每个元素的计算操作(下文中,还使用术语掩码寄存器,且它指写掩码寄存器,诸如以下讨论的“k”寄存器)。如下文所使用的,写掩码寄存器存储多个位(16、32、64等),其中写掩码寄存器的每个有效位在SIMD处 理期间控制向量寄存器的打包数据元素的操作/更新。典型地,具有一个以上的可用于处理器核使用的写掩码寄存器。
指令集架构包括至少一些SIMD指令,这些指令指定向量操作且具有用于从这些向量寄存器中选择源寄存器和/或目的地寄存器的字段(示例性SIMD指令可指定将在一个或多个向量寄存器的内容上执行的向量操作,且向量操作的结果被存储在向量寄存器之一中)。本发明的不同实施例可具有不同尺寸的向量寄存器且支持更多/更少/不同尺寸的数据元素。
由SIMD指令指定的多位数据元素的尺寸(例如,字节、字、双字、四字)确定向量寄存器内“数据元素位置”的位定位,并且向量操作数的尺寸确定数据元素的数量。打包数据元素指的是存储在特定位置中的数据。换言之,取决于目的地操作数中数据元素的尺寸以及目的地操作数的尺寸(目的地操作数中位的总数)(或换言之,取决于目的地操作数的尺寸和目的地操作数中数据元素的数量),所得到的向量操作数内多位数据元素位置的位定位(bit location)改变(例如,如果所得到的向量操作数的目的地是向量寄存器(在该讨论中,向量寄存器和打包数据元素寄存器互换地使用),则目的地向量寄存器内多位数据元素位置的位定位改变)。例如,多位数据元素的位定位在操作在32位数据元素(数据元素位置0占据位定位31:0,数据元素位置1占据位定位63:32等等)上的向量操作和操作在64位数据元素(数据元素位置0占据位定位63:0,数据元素位置1占据位定位137:64等等)上的向量操作之间是不同的。
另外,如图1所示,根据本发明的一个实施例的一个有效位向量写掩码元素的数量和向量尺寸和数据元素尺寸之间的相关性。示出128位、256位和512位的向量尺寸,但是其它宽度也是也能的。8位字节(B)、16位字节(W)、32位字节(D)或单精度浮点、64位四字(Q)或双精度浮点的数据元素尺寸被考虑,然而其它宽度也是可能的。如所示,当向量尺寸是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位用于掩蔽。
取决于向量尺寸和数据元素尺寸的组合,可将全部64位或仅64位的子集用作写掩码。一般而言,当使用单个每元素掩蔽控制位时,向量写掩码寄存器中用于掩蔽(有效位)的位数等于按位计的向量尺寸除以按位计的向量数据元素尺寸。
如上所指出的,写掩码寄存器包含掩码位,该掩码位对应于向量寄存器(或存储器位置)中的元素并且跟踪应对其进行操作的元素。出于此原因,期望具有通用的操作,这些操作在这些掩码位上复制类似于向量寄存器的行为,并且通常运行调节写掩码寄存器中的这些掩码位。
以下描述的是使用控制向量来使源的每个数据元素中的特定位置处开始的位归零的指令的实施例。该指令可用于使很多位操作任务有效地向量化,包括提取向量寄存器的数据元素中的位以及将位插入每个数据元素中。以下是指令集的一般称为从指定的位位置开始的向量打包零高位(“VPBZHI”)指令的指令实施例,以及可用于这一指令的系统、架构、指令格式等的实施例。VPBZHI的执行导致在第二源的每数据元素基础上,比数据元素的开始点高(更高有效)的位的归零。开始点由第一源中的数据元素的内容限定。结果数据元素被存储在目的地的相对应数据元素位置中。
图2是用于执行一个或多个VPBZHI指令204的处理器(处理器核)200的示例性实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,用在台式机、膝上型计算机、服务器等计算机中的类型)。替代地,处理器可以是专用处理器。合适的专用处理器的例子包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)、以及控制器,这里仅给出几个示例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合或全部其它类型的处理器中的任一个。
处理器200包括架构上可见寄存器(例如,架构寄存器文件)205。架构 寄存器在本文中也可简称为寄存器。除非另外指定或显见地,短语架构寄存器、寄存器文件和寄存器在本文中被用于指代这样的寄存器:该寄存器对于被宏指令或汇编语言指令指定来标识操作数的软件和/或编程器和/或寄存器而言是可见。这些寄存器与给定微架构的非架构或非架构上可见的寄存器(例如,指令所用的临时寄存器、重排序缓冲器、引退寄存器等)形成对比。寄存器一般表示管芯上处理器存储位置。所例示的架构寄存器包括打包数据寄存器206。打包数据寄存器中的每一个可操作用于存储打包或向量数据。所例示的架构寄存器还包括打包数据操作掩码寄存器207。打包数据操作掩码寄存器中的每一个可操作用于存储打包数据操作掩码。在本说明书中这些寄存器可被称为写掩码寄存器。打包数据操作数可被存储在打包数据寄存器207中。
处理器还包括执行逻辑208。执行逻辑可操作用于执行或处理一个或多个VPBZHI指令204。在一些实施例中,执行逻辑可包括用于执行这些指令的特定逻辑(例如,与固件潜在组合的特定电路或硬件)。
图3示出VPBZHI的操作的示例性图示。在所示的示例3(A)中,来自第一源寄存器301的数据元素以每数据元素为基础提供用于第二源寄存器/存储器位置303中的相应数据元素中的位归零的开始点。在该示例中,第一和第二源301、303在位置0-3(右侧的最低有效)具有四个数据元素。在数据元素位置0,第一源301具有十六进制格式的值00000002。这是十进制记数法中的2,并且指示第二源302的位位置(bit position)2是归零可能开始的点。然而,在该图示中使用写掩蔽,且由于在该位置处写掩码305的值,在第二源中没有发生位归零,并且被保存在相应的目的地309中。在该示例中,目的地309的内容与指令被执行之前相同。
在数据元素位置1,第一源301具有十六进制格式的值00000010。这是十进制记数法中的16,并且指示第二源303的位位置16是归零可能开始的点。而且,在该图示中使用写掩蔽,但此时,写掩码305的该位位置中的值指示发生归零和写。如此,在位位置16开始第二源303的数据将被归零且新的值将被存储在目的地309的数据元素位置1中。
在所示的示例3(B)中,来自第一源寄存器311的数据元素以每数据元素为基础提供用于第二源寄存器/存储器位置313中的相应数据元素中的位归 零的开始点。在该示例中,第一和第二源311、313在位置0-3(右侧的最低有效)具有四个数据元素。在数据元素位置0,第一源311具有十六进制格式的值00000002。这是十进制记数法中的2,并且指示第二源313的位位置2是归零可能开始的点。然而,在该图示中使用写掩蔽,且由于在该位置处写掩码315的值,在第二源中没有发生位归零,并且被保存在相应的目的地319中。在该示例中,目的地319的内容被完全归零。
在数据元素位置1,第一源311具有十六进制格式的值00000010。这是十进制记数法中的16,并且指示第二源313的位位置16是归零可能开始的点。而且,在该图示中使用写掩蔽,但此时,写掩码315的该位位置中的值指示发生归零和写。如此,在位位置16开始第二源313的数据将被归零且新的值将被存储在目的地319的数据元素位置1中。
示例性VPBZHI格式
该指令的示例性格式是“VPBZHI{K1}R1,R2/MEM,R3”,其中目的地操作数K1是可选写掩码寄存器,R1是打包数据源寄存器(诸如128-、256-、512-位寄存器等),R2是打包数据目的地寄存器(诸如128-、256-、512-位寄存器等)或存储器位置,且R3是目的地寄存器(诸如128-、256-、512-位寄存器等),且VPBZHI是指令的操作码。操作码还可标明源的数据元素的尺寸。例如,VPBZHID指示数据元素是32位,VPBZHIB是8位等。数据元素和源操作数的尺寸还确定写掩码寄存器中的有效位的数量。
执行VPBZHI的示例性方法
图4示出处理器中VPBZHI指令的执行的实施例。在401,获取具有第一和第二源操作数、目的地操作数、可选写掩码操作数和操作码的VPBZHI指令。
在403,通过解码逻辑解码VPBZHI指令。取决于指令的格式,在该阶段可解释各种数据,诸如如果有数据变换,则写入和/或检索哪些寄存器、访问哪些存储器地址等。
在405,检索/读取源操作数的值。例如,读取源向量寄存器。如果源操作数是存储器操作数,则与该操作数相关联的数据元素被检索。在一些实施例中,来自存储器的数据元素被存储在临时寄存器中。
在407,通过诸如一个或多个功能单元之类的执行资源执行VPBZHI指令 (或包括诸如微操作之类的指令的操作),从而对于第一源操作数的每个数据元素位置确定开始位位置,用于在该位位置的数据元素开始使第二源操作数的值归零。指令的执行还导致对于第二源操作数的每个相对应的数据元素位置,在大于(更高有效)或等于第一源中的相对应数据元素位置中得到的开始位位置的位位置中的位的归零。在图3中得到该示例。在一些实施例中,并行评估每个数据元素位置。在其它实施例中,串行评估数据元素位置。
在409,已经被修改的第二源的数据元素被写入目的地的相对应数据元素位置。在一些实施例中,当使用写掩码时,取决于在位位置处写掩码的值,可以不对相对应的数据元素位置进行写入。在一些实施例中,当写掩码指示数据元素位置应被写入,则目的地的数据元素位置被设置为全0。在其它实施例中,当写掩码指示数据元素位置不应被写入,则目的地的数据元素位置不变。尽管已经单独地示出407和409,但在一些实施例中,它们可作为指令执行的一部分一起执行。
在一些实施例中,在数据元素的任何修改之前将第二源的数据存储在目的地寄存器中。例如,如果不使用写掩蔽,则来自第二源所有数据元素将被存储到目的地中然后被修改。如果使用写掩蔽,则根据写掩码仅所选的数据元素将被移动。
在一些实施例中,将临时存储位置用于修改,使得第二源寄存器的数据在对其进行归零操作时不被破坏。
图5示出处理VPBZHI指令的方法的实施例。在该实施例中,假设之前已经执行操作401-405中的一些而非全部,然而未示出它们以免混淆以下给出的细节。例如,未示出获取和解码,也未示出操作数检索。在该示例中,并行处理每个数据元素位置,然而,也可串行评价数据元素位置。
在501,对于第一源的每个数据元素位置,确定用于第二源的相对应数据元素位置中数据元素的(潜在)归零的开始位位置。例如,在图3中,在数据元素位置0,该值是2,且在数据元素位置1,它是16。如此,对于第二源的相对应的数据元素位置的数据元素,用于潜在的归零的开始位位置是2和16。在本讨论中,使用潜在,因为在归零可能发生时,改变的数据元素取决于写掩码使用而可能不被存储在目的地寄存器中。
对于第二源的每个数据元素位置,在503,第二源的相对应的数据元素位置中的数据元素的开始位位置处和之上的所有位位置被归零。例如,在图3中,在该值的数据元素位置0,归零在位2开始,并且继续到数据元素的最高有效位。
对于每个数据元素位置,在505,确定数据元素位置是否被写掩蔽。例如,在图3中,在数据位位置0,该值指示将没有写入。
在507,没有受到写掩码阻挡的第二源的值被存储在目的地中相对应的位置处。
在一些实施例中,在509,目的地中未被写入的所有数据元素位置的数据元素被归零。
尽管以上已经描述为以确定的开始位位置开始并且向上,然而能构想到其它变型。例如,在一些实施例中,操作在开始位位置开始并且向下。在其它实施例中,开始位位置不被归零,但下一行被归零。
在一些实施例中,在503数据元素的任何修改之前,将第二源的数据存储在目的地寄存器中。例如,如果不使用写掩蔽,则来自第二源所有数据元素将被存储到目的地中然后被修改。如果使用写掩蔽,则根据写掩码仅所选的数据元素将被移动。
在一些实施例中,将临时存储位置用于修改,使得第二源寄存器的数据在对其进行归零操作时不被破坏。
示例性寄存器架构
图6是根据本发明的一个实施例的寄存器架构600的框图。在所示的实施例中,具有512位宽的32个向量寄存器610;这些寄存器引用为zmm0到zmm31。较低的16个zmm寄存器的较低阶256位重叠在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)重叠在寄存器xmm0-15上。
通用寄存器625——在所示的实施例中,存在与现有的用于寻址存储器操作数的x86寻址模式一起使用的16个64位通用寄存器。这些寄存器以名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8到R15引用。
混叠在MMX打包整数平坦寄存器文件650上的标量浮点栈寄存器文 件(x87栈)645——在所示实施例中,x87栈是使用x87指令集扩展在32/64/80位浮点数据上执行标量浮点操作的八元素栈;而MMX寄存器用于在64位打包整数数据上执行操作,以及保持用于在MMX和XMM寄存器之间执行的一些操作的操作数。
本发明的替换实施例可使用较宽或较窄的寄存器。另外,本发明的替换实施例可使用更多、更少或不同的寄存器文件和寄存器。
示例性核架构、处理器和计算机架构
处理器核可以不同方式实现、用于不同目的以及在不同的处理器中。例如,这些核的实现可包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括一个或多个旨在用于通用计算的通用有序核和/或一个或多个旨在用于通用计算的通用无序核的CPU;以及2)包括一个或多个旨在主要用于图形和/或科学(吞吐量)的专用核的协处理器。这些不同的处理器导致不同的计算机系统架构,其可包括:1)在来自CPU的单独芯片上的协处理器;2)与CPU处于同一封装中的单独管芯上的协处理器;3)与CPU处于同一管芯上协处理器(在这种情况下,这一协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或称为专用核);以及4)在同一管芯上可包括所述CPU的芯片上的系统(有时称为应用核或应用处理器)、上述协处理器以及附加功能。接下来描述示例性核架构、然后是示例性处理器和计算机架构的描述。
示例性核架构
有序和无序核框图
图7A是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图7B是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图7A-B中的实现框示出有序流水线和有序核,而虚线框的可选增加示出寄存器重命名、无序发布/执行流水线和核。假定有序方面是无序方面的子集,则将描述无序方面。
在图7A中,处理器流水线700包括获取级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也被称为指派或发布)级712、寄存 器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处理级722以及提交级724。
图7B示出处理器核心790,包括:前端单元730,耦合至执行引擎单元750,两者均耦合至存储器单元770。核心790可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或其他核心类型。作为另一个选项,核心790可以是专用核心,诸如,例如,网络或通信核心、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核或类似物。
前端单元730包括分支预测单元732,耦合至指令缓存单元734,该指令缓存单元734耦合至指令翻译查找缓冲器(TLB)736、该指令翻译查找缓冲器(TLB)736耦合至指令获取单元738,该指令获取单元738耦合至解码单元740。解码单元740(解码器)可解码指令,并生成一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出是从原始指令中解码出的,或是以其他方式反映原始指令,或是从原始指令中推导而出的。解码单元740可使用各种不同的机制来实现。合适的机制的示例包括,但不限于,查找表、硬件实现方案、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括微代码ROM或存储用于某些宏指令的微代码的其它介质(例如,在解码单元740或在前端单元730内)。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到引退单元754和一组一个或多个调度器单元756的重命名/分配器单元752。调度器单元756表示任何数量的不同调度器,包括:预约站、中央指令窗口等等。调度器单元756耦合至物理寄存器文件单元758。每个物理寄存器文件单元758表示一个或多个物理寄存器文件、其中不同的物理寄存器文件保存一个或多个不同的数据类型(诸如:标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元758被引退单元754覆盖,以示出可实现寄存器重命名和无序执行的各种方式(例如,使 用重排序缓冲器和引退寄存器文件;使用未来的文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等等)。引退单元754和物理寄存器文件单元758耦合到执行群集760。执行群集760包括一组一个或多个执行单元762以及一组一个或多个存储器访问单元764。执行单元762可执行多种操作(包括:移位、加法、减法、乘法)并可在多种数据类型(诸如、标量浮点、打包整数、打包浮点、向量整数、向量浮点)上执行。尽管一些实施例可包括专用于特定功能或功能组的多个执行单元,然而其他实施例可包括仅仅一个执行单元或全部执行所有功能的多个执行单元。调度单元756、物理寄存器文件单元758、执行群集760被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度单元、物理寄存器文件单元和/或执行群集的标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元764)。可以理解到,在使用诸个单独流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余的是有序的。
一组存储器访问单元764被耦合至存储器单元770,存储器单元770包括数据TLB单元772,数据TLB单元772耦合至缓存单元774,缓存单元774耦合至第二级(L2)缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令缓存单元734还耦合到存储器单元770中的二级(L2)缓存单元776。L2缓存单元776耦合至一个或多个其他级别的缓存,并最终耦合至主存储器。
作为示例,示例性的寄存器重命名无序发布/执行核心体系结构可以如下所述地实现流水线700:1)指令获取器738执行获取和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取级714;执行群集760执行执行级716;6)存储器单元770和物理寄存器文件单元758执行写回/存储器写入级718;7)多个单元可被牵涉在异常处理级722中;以及8)引退单元754和 物理寄存器文件单元758执行提交级724。
核心790可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼威尔的ARM控股公司ARM指令集(具有可选附加扩展,诸如NEON)),包括本文中描述的指令。在一个实施例中,核790包括支持打包数据指令集扩展(例如,AVX1、AVX2和/或先前描述的一些形式的一般向量友好指令格式(U=0和/或U=1))的逻辑,从而允许很多多媒体应用使用的操作能够使用打包数据来执行。
应当理解到,核心可支持多线程(执行两个或多个并行的操作或线程集),并且可以多种方式实现,包括:时间切割多线程、同时多线程(其中单个物理核心为该物理核心同时多线程执行的每一个线程提供逻辑核心)、或以上的组合(诸如,时间切割获取和解码及之后的同时多线程,诸如超线程Hyperthreading技术)。
虽然寄存器重命名在无序执行的背景下进行描述,但可以理解,寄存器重命名可被用于有序体系结构中。虽然处理器的所示出的实施例也包括单独的指令和数据缓存单元734/774以及共享的L2缓存单元776,但替换的实施例也可为指令和数据具有单个的内部缓存,诸如例如,第一级(L1)缓存、或多个级别的内部缓存。在一些实施例中,系统可包括内部缓存和外部缓存的组合,外部缓存位于核心和/或处理器之外。或者,所有的缓存都可位于核心和/或处理器之外。
特定的示例性有序核架构
图8A-B示出更特定的示例性有序核架构的框图,其核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,这取决于应用。
图8A是根据本发明的实施例的单个处理器核,连同其至管芯上互连网络802的连接以及其二级(L2)缓存804的本地子集。在一个实施例中,指令解码器800支持具有打包数据指令集扩展的x86指令集。L1缓存806允许对缓存存储器的标量和向量单元的低等待时间访问。虽然在一个实施例中(为了简化 设计),标量单元808和向量单元810使用单独的寄存器集(分别是标量寄存器812和向量寄存器814)并且它们之间传送的数据被写入存储器然后从一级(L1)缓存806读回,但本发明的替换实施例可使用不同的方法(例如,使得单个寄存器集或包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2缓存804的本地子集是全局L2缓存的一部分,该全局L2缓存被分成单独的本地子集,每处理器核一个。每个处理器核对L2缓存804的其自身的本地子集具有直接访问路径。由处理器核读取的数据被存储在其L2缓存子集804中,且可被快速地、与其它处理器核访问它们自身的本地L2缓存子集并行地访问。如果必要的话,由处理器核写入的数据被存储在其自身的L2缓存子集804中并且从其它子集转储清除(flush)。环形网络确保对于共享数据的一致性。环形网络是双向以允许诸如处理器核、L2缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径在每个方向上是1012位宽。
图8B是根据本发明的实施例的图8A的处理器核的一部分的扩展视图。图8B包括L1缓存804的L1数据缓存806A部分,以及关于向量单元810和向量寄存器814的更多细节。具体地,向量单元810是16宽向量处理单元(VPU)(参见16宽ALU828),其执行一个或多个整数、单精度浮点和双精度浮点指令。VPU支持在存储器输入上利用搅合(swizzle)单元820搅合寄存器输入、利用数字转换单元822A-B的数字转换以及利用复制单元824的复制。
具有集成存储器控制器和图形的处理器
图9是根据本发明的实施例的处理器900的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形。图9的实线框示出了处理器900,处理器910具有单个核心902A、系统代理910、一组一个或多个总线控制器单元916,而可选附加的虚线框示出了替代的处理器910,具有多个核心902A-N、系统代理单元910中的一组一个或多个集成存储器控制器单元914以及专用逻辑908。
因此,处理器900的不同实现可包括:1)具有专用逻辑908和核902A-N的CPU,专用逻辑908是集成图形和/或科学(吞吐量)逻辑(可包括一个或多个核),核902A-N是一个或多个通用核(例如,通用有序核、通用无序核、 两者的组合);2)具有核902A-N的协处理器,核902A-N是大量旨在主要用于图形和/或科学(吞吐量)的专用核;以及3)具有核902A-N的协处理器,核902A-N是大量通用有序核。因此,处理器900是通用处理器、协处理器或专用处理器,诸如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量大量集成核(MIC)协处理器(包括30或更多核)、嵌入式处理器等等。处理器可以实现在一个或多个芯片上。处理器900可以是一个或多个基板的一部分,和/或使用多种制程技术(诸如,BiCMOS、CMOS、或NMOS)中的任意技术被实现在一个或多个基板上。
存储器层级包括核心内的一个或多个缓存级、一组一个或多个共享缓存单元906、以及耦合至该组集成存储器控制器单元914的外部存储器(没有示出)。该组共享缓存单元906可包括一个或多个中级缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的缓存、末级缓存(LLC)和/或以上的组合。虽然在一个实施例中,基于环形的互连单元912将集成图形逻辑908、该组共享缓存单元906和系统代理单元910/集成存储器控制器单元914进行互连,但替换的实施例也使用任何数量的已知技术来互连这些单元。在一个实施例中,在一个或多个缓存单元906和核902-A-N之间维持一致性。
在一些实施例中,一个或多个核心902A-N能够实现多线程。系统代理910包括这些组件配合和操作核心902A-N。这些系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核心902A-N以及集成图形逻辑908的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N可以是在架构指令集上同构的或异构的;即,核902A-N中的两个或多个核能够执行相同的指令集,而其他核能够执行该指令集中的一个子集或执行不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。本领域内已知的用于以下对象的其他系统设计和配置也可适用:膝上计算机、台式机、手持PC、个人数字助理、工程师工作站、服务器、网络设备、网络集线器、交换器、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝 电话、便携式媒体播放器、手持设备以及各种其它电子设备。一般而言,本文中公开的各种能够合并处理器和/或其它执行逻辑的系统或电子设备一般是适用的。
现在参考图10,所示出的是根据本发明一实施例的系统1000的框图。系统1000可包括耦合至控制器中枢1020的一个或多个处理器1010、1015。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(可以在单独芯片上);GMCH1090包括存储器和图形控制器,存储器1040和协处理器1045与之耦合;IOH1050将输入输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制中的一个或两个集成在处理器内(如本文所述),存储器1040和协处理器1045直接耦合到处理器1010和具有IOH1050的单个芯片中的控制器中枢102。
附加的处理器1015的任选性在图10中通过虚线来表示。每个处理器1010、1015可包括本文描述的处理核中的一个或多个,且可以是处理器900的一些版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或二者的组合。对于至少一个实施例,控制器中枢1020经由诸如前侧总线(FSB)之类的多点总线、诸如快速通路互连(QPI)之类的点对点接口或类似的连接1095与处理器1010、1015通信。
在一个实施例中,协处理器1045可以是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1020可包括集成图形加速器。
按照包括体系结构、微体系结构、热、功耗特征等等优点的度量谱,物理资源1010、1015之间存在各种差别。
在一个实施例中,处理器1010执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为应有附连协处理器1045执行的类型。另外,处理器1010在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器1045。协处理器1045接受并执行所接收的协处理器指令。
现在参照图11,所示出的是根据本发明实施例的更具体的第一示例性系 统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可以是某一版本的处理器900。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一个实施例中,处理器1170和1180分别是处理器1010、协处理器1045。
处理器1170和1180被示为分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以经由使用点对点(P-P)接口电路1178、1188的P-P接口1150来交换信息。如图11所示,IMC1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可经由高性能接口1139与协处理器1138任选地交换信息。在一个实施例中,协处理器1138可以是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享缓存(未示出)可被包括在任一处理器中或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地缓存信息可被存储在该共享的缓存中。
芯片组1190可以经由接口1196耦合至第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图11所示,各种I/O设备1114可连同总线桥1118一起耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,一个或多个附加处理器1115,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其它处理器被耦合到第一总线1116。在一个实施例中,第二总线1120 可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信设备1127以及可以包括指令/代码和数据1130的存储单元1128(诸如盘驱动器或其它海量存储设备)。进一步地,音频I/O1124可以耦合到第二总线1120。注意,其它架构是可能的。例如,代替图11的点对点体系结构,系统可实现多点总线或另一此类体系结构。
现在参照图12,所示出的是根据本发明实施例的更具体的第二示例性系统1200的框图。图11和12中的类似元件使用类似附图标记,且在图12中省略了图11的某些方面以避免混淆图12的其它方面。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL1172和1182包括集成存储器控制器单元且包括I/O控制逻辑。图12示出不仅存储器1132、1134耦合至CL1172、1182,而且I/O设备1214也耦合至控制逻辑1172、1182。传统I/O设备1215耦合至芯片组1190。
现在参照图13,所示出的是根据本发明一个实施例的SoC1300的框图。图9中的相似组件具有相同的标号。同样,虚线框是在更为先进的SoC上的可选特征。在图13中,互连单元1302耦合至:应用处理器1310,包括一组一个或多个核心202A-N以及共享缓存单元906;系统代理单元910;总线控制单元916;集成存储器控制器单元914;一组一个或多个协处理器1320,可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及显示单元1340,用于耦合至一个或多个外部显示器。在一个实施例中,协处理器1320包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可实现在硬件、软件、固件或这些实现手法的组合中。本发明的实施例可被实现为在包括至少一个处理器、储存器系统(包括易失性和非易失性存储器和/或储存元件)、至少一个输入设备以及至少一个输出设备的可编程系统上执行的计算机程序。
可将诸如图11中所示的代码1130的程序代码应用于输入指令以执行本文 中所描述的功能,并产生输出信息。输出信息可以已知形式被施加至一个或多个输出设备。为本申请的目的,处理系统包括任何具有下列特征的系统:其具有例如数字信号处理器(DSP)的处理器、微控制器、专用集成电路(ASIC)或微处理器。
程序可按照高级过程或面向对象的高级编程语言来实现,以与处理系统通信。程序代码在需要时还可按照汇编或机器语言来实现。事实上,本文描述的机制不仅限于任何具体的编程语言的范围。在任一情形下,语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。”
此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的物品的有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的实施例也包括非易失性有形机器可读介质,该介质包含诸如硬件描述语言(HDL)之类的设计数据,该设计数据限定本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制转换、代码变形等)
在一些情况中,指令转换器可被用于将指令从源指令集转换为目标指令集。例如,指令转换器可将指令翻译(诸如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变体、仿真或以其他方式转换为有待核心处理的一个或多个其他指令。指令转换器可用硬件、固件、软件或其组合来实现。指令 转换器可以位于处理器上,位于处理器外,或部分位于处理器上且部分位于处理器外。
图14是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是作为替代,指令转换器可以以软件、固件、硬件或其各种组合来实现。图14示出高级语言1402的程序可以通过使用x86编译器1404来编译,以生成可由具有至少一个x86指令集核的处理器1406直接执行的x86二进制代码1416。具有至少一个x86指令集核1416的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分或(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1404表示可操作用于x86二进制代码1406(例如目标代码)的编译器,该x86二进制代码1416能够通过或无需附加的链接处理而在具有至少一个x86指令集核的处理器1316上执行。类似地,图14以高级语言1402示出了程序,该程序可使用替换指令集编译器1408来编译以生成替换指令集二级制代码1410,替换指令集二级制代码1410可由不具有至少一个x86指令集核心的处理器1414(诸如,具有可执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)来天然地执行。该指令转换器1412被用于将x86二进制代码1406转换为可由不具有x86指令集核心的处理器1414所天然地执行的代码。该经变换的代码不太可能与替换指令集二进制代码1410一样,因为难以制造能完成这样的指令转换器;然而,经变换的代码将完成通用操作,并由替换指令集的指令所构成。因此,指令转换器1412表示软件、固件、硬件或它们的组合,通过仿真、模拟或任何其他处理允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1406。

用于数据元素中的位填零的系统、设备和方法.pdf_第1页
第1页 / 共33页
用于数据元素中的位填零的系统、设备和方法.pdf_第2页
第2页 / 共33页
用于数据元素中的位填零的系统、设备和方法.pdf_第3页
第3页 / 共33页
点击查看更多>>
资源描述

《用于数据元素中的位填零的系统、设备和方法.pdf》由会员分享,可在线阅读,更多相关《用于数据元素中的位填零的系统、设备和方法.pdf(33页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104133660A43申请公布日20141105CN104133660A21申请号201410097122722申请日2014031413/840,66920130315USG06F9/38200601G06F9/3420060171申请人英特尔公司地址美国加利福尼亚州72发明人E乌尔德阿迈德瓦尔R凡伦天74专利代理机构上海专利商标事务所有限公司31100代理人张东梅54发明名称用于数据元素中的位填零的系统、设备和方法57摘要描述了用于执行NAME指令的系统、方法和装置的实施例。VPBZHI的执行导致在第二源的每数据元素基础上,比数据元素的开始点高(更高有效)的位的归零。开。

2、始点由第一源中的数据元素的内容限定。结果数据元素被存储在目的地的相对应数据元素位置中。30优先权数据51INTCL权利要求书2页说明书14页附图16页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书14页附图16页10申请公布号CN104133660ACN104133660A1/2页21一种设备,包括解码逻辑,用于解码从指定的位位置开始的向量打包零高位(VPBZHI)指令,所述VPBZHI指令包括第一和第二源操作数和目的地操作数;执行逻辑,用于执行经解码的VPBZHI指令以导致,对于第一源操作数的每个数据元素位置,确定用于对第二源在该开始位置的数据元素开始的值进行归零的开始。

3、位位置,对于第二源操作数的每个对应的数据元素位置,比所述第一源操作数的相对应数据元素位置的开始位位置更高有效或与之相等的位位置中的位的归零,将任何归零后的第二源的目的地操作数值存储在相应的数据元素位置中。2如权利要求1所述的设备,其特征在于,所述源和目的地操作数是打包数据寄存器。3如权利要求2所述的设备,其特征在于,所述打包数据寄存器的尺寸是128位、256位或512位。4如权利要求1所述的设备,其特征在于,所述指令还包括写掩码操作数。5如权利要求4所述的设备,其特征在于,目的地寄存器中的存储经受写掩码操作数的值。6如权利要求4所述的设备,其特征在于,写掩码操作数中有效位的数量等于源操作数中数。

4、据元素的数量。7如权利要求1所述的设备,其特征在于,所述第一源和目的地操作数是打包数据寄存器,且第二源操作数是存储器位置。8一种在计算机处理器中执行从指定的位位置开始的向量打包零高位(VPBZHI)指令的方法,所述VPBZHI指令包括第一和第二源操作数和目的地操作数,所述方法包括对于第一源操作数的每个数据元素位置,确定用于对第二源在该开始位置的数据元素开始的值进行归零的开始位位置,对于第二源操作数的每个对应的数据元素位置,将比所述第一源操作数的相对应数据元素位置的开始位位置更高有效或与之相等的位位置中的位归零,将任何归零后的第二源的目的地操作数值存储在相应的数据元素位置中。9如权利要求8所述的。

5、方法,其特征在于,所述源和目的地操作数是打包数据寄存器。10如权利要求9所述的方法,其特征在于,所述打包数据寄存器的尺寸是128位、256位或512位。11如权利要求8所述的方法,其特征在于,所述指令还包括写掩码操作数。12如权利要求11所述的方法,其特征在于,目的地寄存器中的存储经受写掩码操作数的值。13如权利要求11所述的方法,其特征在于,写掩码操作数中有效位的数量等于源操作数中数据元素的数量。14如权利要求8所述的方法,其特征在于,所述第一源和目的地操作数是打包数据寄存器,且第二源操作数是存储器位置。15一种包括代码的有形机器可读介质,所述代码在由处理器执行时导致处理器执行一种方法,用于。

6、执行从指定的位位置开始的向量打包零高位(VPBZHI)指令,所述VPBZHI指令包括第一和第二源操作数和目的地操作数,所述方法包括权利要求书CN104133660A2/2页3对于第一源操作数的每个数据元素位置,确定用于对第二源在该开始位置的数据元素开始的值进行归零的开始位位置,对于第二源操作数的每个对应的数据元素位置,将比所述第一源操作数的相对应数据元素位置的开始位位置更高有效或与之相等的位位置中的位归零,将任何归零后的第二源的目的地操作数值存储在相应的数据元素位置中。16如权利要求15所述的方法,其特征在于,所述源和目的地操作数是打包数据寄存器。17如权利要求16所述的方法,其特征在于,所述。

7、打包数据寄存器的尺寸是128位、256位或512位。18如权利要求17所述的方法,其特征在于,所述指令还包括写掩码操作数。19如权利要求18所述的方法,其特征在于,目的地寄存器中的存储经受写掩码操作数的值。20如权利要求15所述的方法,其特征在于,所述第一源和目的地操作数是打包数据寄存器,且第二源操作数是存储器位置。权利要求书CN104133660A1/14页4用于数据元素中的位填零的系统、设备和方法发明领域0001本发明领域一般涉及计算机处理器架构,尤其涉及在被执行时产生特定结果的指令。0002背景0003指令集或指令集架构(ISA)是与编程有关的计算机架构的一部分,且可包括本机数据类型、指。

8、令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。应注意术语指令在本文中一般指的是宏指令提供给处理器以供执行的指令与从处理器的解码器解码宏指令得到的微指令或微操作相反。0004附图简述0005在附图各图中通过示例而不是限制说明了本发明,其中类似标记指示相似元件,且其中0006图1示出根据本发明的一个实施例的一个有效位向量写掩码元素的数量和向量尺寸和数据元素尺寸之间的相关性。0007图2是用于执行一个或多个指令的处理器(处理器核)的示例性实施例的框图。0008图3示出VPBZHI的操作的示例性图示。0009图4示出处理器中VPBZHI指令的执行的实施例。0010图。

9、5示出处理VPBZHI指令的方法的实施例。0011图6是根据本发明的一个实施例的寄存器架构600的框图。0012图7A是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。0013图7B是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。0014图8AB示出更特定的示例性有序核架构的框图,其核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。0015图9是根据本发明的实施例的处理器900的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形。0016图1013是示例性计算机架构的框。

10、图。0017图14是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。具体实施方式0018在下面的描述中,阐述了很多具体细节。然而,应当理解,本发明的实施例可在没有这些具体细节的情况下实践。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使本描述变得模糊。0019在说明书中对“一个实施例”、“一实施例”、“示例实施例”等的参考指示所描述的实施例可包括特定特征、结构或特性,但并不一定每个实施例都包括该特定特征、结构或特说明书CN104133660A2/14页5性。此外,这样的短语不一定是指同一个实施例。此外,当结合实施例描述特定特。

11、征、结构或特性时,认为本领域技术人员知道结合无论是否明显描述的其他实施例来实现这些特征、结构或特性。0020概览0021指令集架构与微架构不同,微架构是实现ISA的处理器的内部设计。具有不同微架构的处理器可共享公共指令集。例如,英特尔奔腾四(PENTIUM4)处理器、英特尔酷睿(CORE)处理器、以及来自加利福尼亚州桑尼威尔(SUNNYVALE)的高级微设备有限公司(ADVANCEDMICRODEVICES,INC)的诸多处理器执行几乎相同版本的X86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,ISA的相同寄存器体系结构在不同的微体系结构中使用已知的技术以不同方法来实现。

12、,包括专用物理寄存器、使用寄存器重命名机制(诸如,如美国专利NO5,446,912所述,使用寄存器假名表(RAT)、重排序缓冲器(ROB)、以及引退寄存器文件;如果美国专利NO5,207,132所述,使用多个寄存器映射和池)的一个或多个动态分配物理寄存器等。除非明确指出,否则短语寄存器架构、寄存器文件和寄存器指的是对软件/程序员可见的那些以及指令指定寄存器的方式。在期望特殊性的情况下,形容词逻辑、架构或软件可见物可用于指示寄存器架构中的寄存器/文件,同时不同的形容词将用于指定给定微架构中的寄存器(例如,物理寄存器、重排序缓冲器、引退寄存器、寄存器池)。0022指令集包括一个或多个指令格式。给定。

13、的指令格式定义多个字段(位数、位的位置)以特别指定将要被执行的操作以及将要被执行的操作的操作数。给定的指令利用给定的指令格式来表达,并且指定操作和操作数。指令流是特定的指令序列,其中序列中的每个指令是指令按照指令格式的存在。0023科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用/视觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)通常需要对大量数据项(称为“数据并行性”)进行相同的操作。单指令多数据SIMD指的是使得处理器在多个数据项目上执行相同操作的一种类型的指令。SIMD技术尤其适用于处理器,这些处理器将寄存器中的诸个位(BI。

14、T)逻辑地划分入多个固定大小的数据元素,每个数据元素表示单独的值。例如,64位寄存器中的诸个位可被指定为源操作数,该源操作数被操作为四个单独的16位数据元素,每个数据元素表示单独的16位值。作为另一个示例,256位寄存器中的位可被指定为源操作数,该源操作数被操作为四个单独的64位打包数据元素(四字(Q)尺寸数据元素)、该源操作数被操作为八个单独的32位打包数据元素(双字(D)尺寸数据元素)、该源操作数被操作为十六个单独的16位打包数据元素(字(W)尺寸数据元素)、或该源操作数被操作为三十二个单独的8位打包数据元素(字节(B)尺寸数据元素)。该数据类型可被称为打包数据类型或向量数据类型,并且该数。

15、据类型的操作数被称为打包数据操作数或向量操作数。换句话说,打包数据项或向量指的是打包数据元素的序列;并且打包数据操作数或向量操作数是SIMD指令(也称为打包数据指令或向量指令)的源操作数或目的地操作数。0024作为示例,一种类型的SIMD指令指定将要以垂直方式在两个源向量操作数上执行的单个向量操作,以生成相同大小的、具有相同数量的数据元素、具有相同数据元素次序的目的地向量操作数(也被称为是结果向量操作数)。源向量操作数中的数据元素被称为源说明书CN104133660A3/14页6数据元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数具有相同尺寸且包含相同宽度的数据。

16、元素,因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置0中的数据元素相对应,每个源操作数的数据元素位置1中的数据元素相对应,等等)。SIMD指令指定的操作在这些源数据元素对中的每对上单独执行,以生成匹配数量的结果数据元素,并且因此每对源数据元素具有相对应的结果数据元素。因为操作是垂直的,且因为结果向量操作数尺寸相同,具有相同数量的数据元素,且结果数据元素以与源向量操作数相同的数据元素顺序存储,结果数据元素在结果向量操作数中的位位置与源向量操作数中的相对应源数据元素对相同。除SIMD指令的这种示例性。

17、类似外,存在各种其它类型的SIMD指令(例如,仅具有一个源向量操作数或具有两个以上的源向量操作数;以水平方式操作;生成不同尺寸的结果向量操作数,具有不同尺寸的数据元素和/或具有不同的数据元素顺序)。应理解,术语目的地向量操作数(或目的地操作数)被定义为执行由指令指定的操作的直接结果,包括该目的地操作数在位置处的存储(在寄存器中或在该指令指定的存储器地址处),使得它可由另一个指令访问作为源操作数(通过另一个指令对该相同位置的指定)。0025例如由CORETM处理器(具有包括X86、MMX、流SIMD扩展(SSE)、SSE2、SSE3、SSE41、SSE42指令的指令集)所使用的SIMD技术在应用。

18、性能上带来了极大的提高(CORETM和MMXTM是加利福尼亚州圣克拉拉市的INTEL公司的注册商标或商标)。另外的SIMD扩展集称为高级向量扩展(AVX)AVX1和AVX2并且使用VEX编码方案,已经被发行和/或出版(例如,参见64ANDIA32ARCHITECTURESSOFTWAREDEVELOPERSMANUAL,OCTOBER2011;以及ADVANCEDVECTOREXTENSIONSPROGRAMMINGREFERENCE,JUNE2011)。0026在以下的描述中,在描述指令集架构中的该特定指令的操作之前需要解释一些项。一个这样的项被称为“写掩码寄存器”,它通常用于断言操作数以有。

19、条件地控制每个元素的计算操作(下文中,还使用术语掩码寄存器,且它指写掩码寄存器,诸如以下讨论的“K”寄存器)。如下文所使用的,写掩码寄存器存储多个位(16、32、64等),其中写掩码寄存器的每个有效位在SIMD处理期间控制向量寄存器的打包数据元素的操作/更新。典型地,具有一个以上的可用于处理器核使用的写掩码寄存器。0027指令集架构包括至少一些SIMD指令,这些指令指定向量操作且具有用于从这些向量寄存器中选择源寄存器和/或目的地寄存器的字段(示例性SIMD指令可指定将在一个或多个向量寄存器的内容上执行的向量操作,且向量操作的结果被存储在向量寄存器之一中)。本发明的不同实施例可具有不同尺寸的向量。

20、寄存器且支持更多/更少/不同尺寸的数据元素。0028由SIMD指令指定的多位数据元素的尺寸(例如,字节、字、双字、四字)确定向量寄存器内“数据元素位置”的位定位,并且向量操作数的尺寸确定数据元素的数量。打包数据元素指的是存储在特定位置中的数据。换言之,取决于目的地操作数中数据元素的尺寸以及目的地操作数的尺寸(目的地操作数中位的总数)(或换言之,取决于目的地操作数的尺寸和目的地操作数中数据元素的数量),所得到的向量操作数内多位数据元素位置的位定位(BITLOCATION)改变(例如,如果所得到的向量操作数的目的地是向量寄存器(在该讨论中,向量寄存器和打包数据元素寄存器互换地使用),则目的地向量寄。

21、存器内多位数据元素说明书CN104133660A4/14页7位置的位定位改变)。例如,多位数据元素的位定位在操作在32位数据元素(数据元素位置0占据位定位310,数据元素位置1占据位定位6332等等)上的向量操作和操作在64位数据元素(数据元素位置0占据位定位630,数据元素位置1占据位定位13764等等)上的向量操作之间是不同的。0029另外,如图1所示,根据本发明的一个实施例的一个有效位向量写掩码元素的数量和向量尺寸和数据元素尺寸之间的相关性。示出128位、256位和512位的向量尺寸,但是其它宽度也是也能的。8位字节(B)、16位字节(W)、32位字节(D)或单精度浮点、64位四字(Q)。

22、或双精度浮点的数据元素尺寸被考虑,然而其它宽度也是可能的。如所示,当向量尺寸是128位时,当向量的数据元素尺寸是8位时可将16位用于掩蔽,当向量的数据元素尺寸是16位时可将8位用于掩蔽,当向量的数据元素尺寸是32位时可将4位用于掩蔽,当向量的数据元素尺寸是64位时可将2位用于掩蔽。当向量尺寸是256位时,当打包数据元素宽度是8位时可将32位用于掩蔽,当向量的数据元素尺寸是16位时可将16位用于掩蔽,当向量的数据元素尺寸是32位时可将8位用于掩蔽,当向量的数据元素尺寸是64位时可将4位用于掩蔽。如所示,当向量尺寸是512位时,当向量的数据元素尺寸是8位时可将64位用于掩蔽,当向量的数据元素尺寸是。

23、16位时可将32位用于掩蔽,当向量的数据元素尺寸是32位时可将16位用于掩蔽,当向量的数据元素尺寸是64位时可将8位用于掩蔽。0030取决于向量尺寸和数据元素尺寸的组合,可将全部64位或仅64位的子集用作写掩码。一般而言,当使用单个每元素掩蔽控制位时,向量写掩码寄存器中用于掩蔽(有效位)的位数等于按位计的向量尺寸除以按位计的向量数据元素尺寸。0031如上所指出的,写掩码寄存器包含掩码位,该掩码位对应于向量寄存器(或存储器位置)中的元素并且跟踪应对其进行操作的元素。出于此原因,期望具有通用的操作,这些操作在这些掩码位上复制类似于向量寄存器的行为,并且通常运行调节写掩码寄存器中的这些掩码位。003。

24、2以下描述的是使用控制向量来使源的每个数据元素中的特定位置处开始的位归零的指令的实施例。该指令可用于使很多位操作任务有效地向量化,包括提取向量寄存器的数据元素中的位以及将位插入每个数据元素中。以下是指令集的一般称为从指定的位位置开始的向量打包零高位(“VPBZHI”)指令的指令实施例,以及可用于这一指令的系统、架构、指令格式等的实施例。VPBZHI的执行导致在第二源的每数据元素基础上,比数据元素的开始点高(更高有效)的位的归零。开始点由第一源中的数据元素的内容限定。结果数据元素被存储在目的地的相对应数据元素位置中。0033图2是用于执行一个或多个VPBZHI指令204的处理器(处理器核)200。

25、的示例性实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,用在台式机、膝上型计算机、服务器等计算机中的类型)。替代地,处理器可以是专用处理器。合适的专用处理器的例子包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)、以及控制器,这里仅给出几个示例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合或全部其它类型的处理器中的任一个。0034处理器200包括架构上可见寄存器(例如,架构寄存器文件)205。架构寄存器在本文中也可简称为寄存器。除非另外。

26、指定或显见地,短语架构寄存器、寄存器文件和寄存器说明书CN104133660A5/14页8在本文中被用于指代这样的寄存器该寄存器对于被宏指令或汇编语言指令指定来标识操作数的软件和/或编程器和/或寄存器而言是可见。这些寄存器与给定微架构的非架构或非架构上可见的寄存器(例如,指令所用的临时寄存器、重排序缓冲器、引退寄存器等)形成对比。寄存器一般表示管芯上处理器存储位置。所例示的架构寄存器包括打包数据寄存器206。打包数据寄存器中的每一个可操作用于存储打包或向量数据。所例示的架构寄存器还包括打包数据操作掩码寄存器207。打包数据操作掩码寄存器中的每一个可操作用于存储打包数据操作掩码。在本说明书中这些。

27、寄存器可被称为写掩码寄存器。打包数据操作数可被存储在打包数据寄存器207中。0035处理器还包括执行逻辑208。执行逻辑可操作用于执行或处理一个或多个VPBZHI指令204。在一些实施例中,执行逻辑可包括用于执行这些指令的特定逻辑(例如,与固件潜在组合的特定电路或硬件)。0036图3示出VPBZHI的操作的示例性图示。在所示的示例3(A)中,来自第一源寄存器301的数据元素以每数据元素为基础提供用于第二源寄存器/存储器位置303中的相应数据元素中的位归零的开始点。在该示例中,第一和第二源301、303在位置03(右侧的最低有效)具有四个数据元素。在数据元素位置0,第一源301具有十六进制格式的。

28、值00000002。这是十进制记数法中的2,并且指示第二源302的位位置(BITPOSITION)2是归零可能开始的点。然而,在该图示中使用写掩蔽,且由于在该位置处写掩码305的值,在第二源中没有发生位归零,并且被保存在相应的目的地309中。在该示例中,目的地309的内容与指令被执行之前相同。0037在数据元素位置1,第一源301具有十六进制格式的值00000010。这是十进制记数法中的16,并且指示第二源303的位位置16是归零可能开始的点。而且,在该图示中使用写掩蔽,但此时,写掩码305的该位位置中的值指示发生归零和写。如此,在位位置16开始第二源303的数据将被归零且新的值将被存储在目的。

29、地309的数据元素位置1中。0038在所示的示例3(B)中,来自第一源寄存器311的数据元素以每数据元素为基础提供用于第二源寄存器/存储器位置313中的相应数据元素中的位归零的开始点。在该示例中,第一和第二源311、313在位置03(右侧的最低有效)具有四个数据元素。在数据元素位置0,第一源311具有十六进制格式的值00000002。这是十进制记数法中的2,并且指示第二源313的位位置2是归零可能开始的点。然而,在该图示中使用写掩蔽,且由于在该位置处写掩码315的值,在第二源中没有发生位归零,并且被保存在相应的目的地319中。在该示例中,目的地319的内容被完全归零。0039在数据元素位置1,。

30、第一源311具有十六进制格式的值00000010。这是十进制记数法中的16,并且指示第二源313的位位置16是归零可能开始的点。而且,在该图示中使用写掩蔽,但此时,写掩码315的该位位置中的值指示发生归零和写。如此,在位位置16开始第二源313的数据将被归零且新的值将被存储在目的地319的数据元素位置1中。0040示例性VPBZHI格式0041该指令的示例性格式是“VPBZHIK1R1,R2/MEM,R3”,其中目的地操作数K1是可选写掩码寄存器,R1是打包数据源寄存器(诸如128、256、512位寄存器等),R2是打包数据目的地寄存器(诸如128、256、512位寄存器等)或存储器位置,且R。

31、3是目的地寄存器(诸如128、256、512位寄存器等),且VPBZHI是指令的操作码。操作码还可标明源的数说明书CN104133660A6/14页9据元素的尺寸。例如,VPBZHID指示数据元素是32位,VPBZHIB是8位等。数据元素和源操作数的尺寸还确定写掩码寄存器中的有效位的数量。0042执行VPBZHI的示例性方法0043图4示出处理器中VPBZHI指令的执行的实施例。在401,获取具有第一和第二源操作数、目的地操作数、可选写掩码操作数和操作码的VPBZHI指令。0044在403,通过解码逻辑解码VPBZHI指令。取决于指令的格式,在该阶段可解释各种数据,诸如如果有数据变换,则写入和。

32、/或检索哪些寄存器、访问哪些存储器地址等。0045在405,检索/读取源操作数的值。例如,读取源向量寄存器。如果源操作数是存储器操作数,则与该操作数相关联的数据元素被检索。在一些实施例中,来自存储器的数据元素被存储在临时寄存器中。0046在407,通过诸如一个或多个功能单元之类的执行资源执行VPBZHI指令(或包括诸如微操作之类的指令的操作),从而对于第一源操作数的每个数据元素位置确定开始位位置,用于在该位位置的数据元素开始使第二源操作数的值归零。指令的执行还导致对于第二源操作数的每个相对应的数据元素位置,在大于(更高有效)或等于第一源中的相对应数据元素位置中得到的开始位位置的位位置中的位的归。

33、零。在图3中得到该示例。在一些实施例中,并行评估每个数据元素位置。在其它实施例中,串行评估数据元素位置。0047在409,已经被修改的第二源的数据元素被写入目的地的相对应数据元素位置。在一些实施例中,当使用写掩码时,取决于在位位置处写掩码的值,可以不对相对应的数据元素位置进行写入。在一些实施例中,当写掩码指示数据元素位置应被写入,则目的地的数据元素位置被设置为全0。在其它实施例中,当写掩码指示数据元素位置不应被写入,则目的地的数据元素位置不变。尽管已经单独地示出407和409,但在一些实施例中,它们可作为指令执行的一部分一起执行。0048在一些实施例中,在数据元素的任何修改之前将第二源的数据存。

34、储在目的地寄存器中。例如,如果不使用写掩蔽,则来自第二源所有数据元素将被存储到目的地中然后被修改。如果使用写掩蔽,则根据写掩码仅所选的数据元素将被移动。0049在一些实施例中,将临时存储位置用于修改,使得第二源寄存器的数据在对其进行归零操作时不被破坏。0050图5示出处理VPBZHI指令的方法的实施例。在该实施例中,假设之前已经执行操作401405中的一些而非全部,然而未示出它们以免混淆以下给出的细节。例如,未示出获取和解码,也未示出操作数检索。在该示例中,并行处理每个数据元素位置,然而,也可串行评价数据元素位置。0051在501,对于第一源的每个数据元素位置,确定用于第二源的相对应数据元素位。

35、置中数据元素的(潜在)归零的开始位位置。例如,在图3中,在数据元素位置0,该值是2,且在数据元素位置1,它是16。如此,对于第二源的相对应的数据元素位置的数据元素,用于潜在的归零的开始位位置是2和16。在本讨论中,使用潜在,因为在归零可能发生时,改变的数据元素取决于写掩码使用而可能不被存储在目的地寄存器中。0052对于第二源的每个数据元素位置,在503,第二源的相对应的数据元素位置中的数据元素的开始位位置处和之上的所有位位置被归零。例如,在图3中,在该值的数据元素位置0,归零在位2开始,并且继续到数据元素的最高有效位。说明书CN104133660A7/14页100053对于每个数据元素位置,在。

36、505,确定数据元素位置是否被写掩蔽。例如,在图3中,在数据位位置0,该值指示将没有写入。0054在507,没有受到写掩码阻挡的第二源的值被存储在目的地中相对应的位置处。0055在一些实施例中,在509,目的地中未被写入的所有数据元素位置的数据元素被归零。0056尽管以上已经描述为以确定的开始位位置开始并且向上,然而能构想到其它变型。例如,在一些实施例中,操作在开始位位置开始并且向下。在其它实施例中,开始位位置不被归零,但下一行被归零。0057在一些实施例中,在503数据元素的任何修改之前,将第二源的数据存储在目的地寄存器中。例如,如果不使用写掩蔽,则来自第二源所有数据元素将被存储到目的地中然。

37、后被修改。如果使用写掩蔽,则根据写掩码仅所选的数据元素将被移动。0058在一些实施例中,将临时存储位置用于修改,使得第二源寄存器的数据在对其进行归零操作时不被破坏。0059示例性寄存器架构0060图6是根据本发明的一个实施例的寄存器架构600的框图。在所示的实施例中,具有512位宽的32个向量寄存器610;这些寄存器引用为ZMM0到ZMM31。较低的16个ZMM寄存器的较低阶256位重叠在寄存器YMM016上。较低的16个ZMM寄存器的较低阶128位(YMM寄存器的较低阶128位)重叠在寄存器XMM015上。0061通用寄存器625在所示的实施例中,存在与现有的用于寻址存储器操作数的X86寻址。

38、模式一起使用的16个64位通用寄存器。这些寄存器以名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8到R15引用。0062混叠在MMX打包整数平坦寄存器文件650上的标量浮点栈寄存器文件X87栈645在所示实施例中,X87栈是使用X87指令集扩展在32/64/80位浮点数据上执行标量浮点操作的八元素栈;而MMX寄存器用于在64位打包整数数据上执行操作,以及保持用于在MMX和XMM寄存器之间执行的一些操作的操作数。0063本发明的替换实施例可使用较宽或较窄的寄存器。另外,本发明的替换实施例可使用更多、更少或不同的寄存器文件和寄存器。0064示例性核架构、处理器和计算机架构0。

39、065处理器核可以不同方式实现、用于不同目的以及在不同的处理器中。例如,这些核的实现可包括1旨在用于通用计算的通用有序核;2旨在用于通用计算的高性能通用无序核;3旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括1包括一个或多个旨在用于通用计算的通用有序核和/或一个或多个旨在用于通用计算的通用无序核的CPU;以及2包括一个或多个旨在主要用于图形和/或科学(吞吐量)的专用核的协处理器。这些不同的处理器导致不同的计算机系统架构,其可包括1在来自CPU的单独芯片上的协处理器;2)与CPU处于同一封装中的单独管芯上的协处理器;3与CPU处于同一管芯上协处理器(在这种情况下,这一协。

40、处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或称为专用核);以及4在同一管芯上可包括所述CPU的芯片上的系统(有时称为应用核或应用处理器)、上述协处理器以及附加功能。接下来描述示例性核架构、然后是示例性处理器和计算机架构的描述。说明书CN104133660A108/14页110066示例性核架构0067有序和无序核框图0068图7A是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图7B是示出根据本发明的实施例的有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图7AB中的实现框示出有序流水线和有序核,而虚线框的可选增加示出。

41、寄存器重命名、无序发布/执行流水线和核。假定有序方面是无序方面的子集,则将描述无序方面。0069在图7A中,处理器流水线700包括获取级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也被称为指派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处理级722以及提交级724。0070图7B示出处理器核心790,包括前端单元730,耦合至执行引擎单元750,两者均耦合至存储器单元770。核心790可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或其他核心类型。作为另一个选。

42、项,核心790可以是专用核心,诸如,例如,网络或通信核心、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核或类似物。0071前端单元730包括分支预测单元732,耦合至指令缓存单元734,该指令缓存单元734耦合至指令翻译查找缓冲器TLB736、该指令翻译查找缓冲器TLB736耦合至指令获取单元738,该指令获取单元738耦合至解码单元740。解码单元740(解码器)可解码指令,并生成一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出是从原始指令中解码出的,或是以其他方式反映原始指令,或是从原始指令中推导而出的。解码单元740可使用各种不同的机。

43、制来实现。合适的机制的示例包括,但不限于,查找表、硬件实现方案、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括微代码ROM或存储用于某些宏指令的微代码的其它介质(例如,在解码单元740或在前端单元730内)。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。0072执行引擎单元750包括耦合到引退单元754和一组一个或多个调度器单元756的重命名/分配器单元752。调度器单元756表示任何数量的不同调度器,包括预约站、中央指令窗口等等。调度器单元756耦合至物理寄存器文件单元758。每个物理寄存器文件单元758表示一个或多个物理寄存器文件。

44、、其中不同的物理寄存器文件保存一个或多个不同的数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元758被引退单元754覆盖,以示出可实现寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用未来的文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等等)。引退单元754和物理寄存器文件单元758耦合到执行群集760。执行群集7。

45、60包括一组一个或多个执行单元762以及一组一个或多个存储器访问单元764。执行单元762可执行多种操作(包括移位、加法、减法、乘法)并可在多种数据类型(诸如、标量浮点、打包整数、打包浮点、向量整数、向量浮点)上执行。尽管一些实施例可包括专用于特定功能或功能组的多说明书CN104133660A119/14页12个执行单元,然而其他实施例可包括仅仅一个执行单元或全部执行所有功能的多个执行单元。调度单元756、物理寄存器文件单元758、执行群集760被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度单元、物理寄存器文件单元和/或执行群集的标量整数流水。

46、线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元764)。可以理解到,在使用诸个单独流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余的是有序的。0073一组存储器访问单元764被耦合至存储器单元770,存储器单元770包括数据TLB单元772,数据TLB单元772耦合至缓存单元774,缓存单元774耦合至第二级(L2)缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器。

47、单元770中的数据TLB单元772。指令缓存单元734还耦合到存储器单元770中的二级(L2)缓存单元776。L2缓存单元776耦合至一个或多个其他级别的缓存,并最终耦合至主存储器。0074作为示例,示例性的寄存器重命名无序发布/执行核心体系结构可以如下所述地实现流水线7001)指令获取器738执行获取和长度解码级702和704;2解码单元740执行解码级706;3重命名/分配器单元752执行分配级708和重命名级710;4调度器单元756执行调度级712;5物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取级714;执行群集760执行执行级716;6存储器单元770和物理寄。

48、存器文件单元758执行写回/存储器写入级718;7多个单元可被牵涉在异常处理级722中;以及8引退单元754和物理寄存器文件单元758执行提交级724。0075核心790可支持一个或多个指令集(诸如,X86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼威尔的ARM控股公司ARM指令集(具有可选附加扩展,诸如NEON),包括本文中描述的指令。在一个实施例中,核790包括支持打包数据指令集扩展(例如,AVX1、AVX2和/或先前描述的一些形式的一般向量友好指令格式(U0和/或U1)的逻辑,从而允许很多多媒体应用使用的操作能够使用打包。

49、数据来执行。0076应当理解到,核心可支持多线程(执行两个或多个并行的操作或线程集),并且可以多种方式实现,包括时间切割多线程、同时多线程(其中单个物理核心为该物理核心同时多线程执行的每一个线程提供逻辑核心)、或以上的组合(诸如,时间切割获取和解码及之后的同时多线程,诸如超线程HYPERTHREADING技术)。0077虽然寄存器重命名在无序执行的背景下进行描述,但可以理解,寄存器重命名可被用于有序体系结构中。虽然处理器的所示出的实施例也包括单独的指令和数据缓存单元734/774以及共享的L2缓存单元776,但替换的实施例也可为指令和数据具有单个的内部缓存,诸如例如,第一级L1缓存、或多个级别的内部缓存。在一些实施例中,系统可包括内部缓存和外部缓存的组合,外部缓存位于核心和/或处理器之外。或者,所有的缓存都可位于核心和/或处理器之外。0078特定的示例性有序核架构0079图8AB示出更特定的示例性有序核架构的框图,其核可以是芯片中的若干逻辑说明书CN104133660A1210/14页13块之一(包括相同类型和/或不同类型的其它核)。逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,这取决于应用。0080图8A是根据本发明的实施例的单个处理器核,连同其至管芯上互连网络802的连接以及其二级(L2)缓存804的本地子集。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1