《用于数据元素中的位填零的系统、设备和方法.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的本地子集。。