《点积处理器、方法、系统和指令.pdf》由会员分享,可在线阅读,更多相关《点积处理器、方法、系统和指令.pdf(63页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104137055A43申请公布日20141105CN104137055A21申请号201180076464522申请日20111229G06F9/06200601G06F9/30200601G06F13/1420060171申请人英特尔公司地址美国加利福尼亚州72发明人K克里希南E乌尔德阿迈德瓦尔V切瑞潘诺夫74专利代理机构上海专利商标事务所有限公司31100代理人张东梅54发明名称点积处理器、方法、系统和指令57摘要一方面的方法包括接收点积指令。该点积指令指示包括至少四个数据元素的第一源打包数据,指示包括至少八个数据元素的第二源打包数据,且指示目的地存储位置。响应于点积指。
2、令,将结果打包数据存储在目的地存储位置中。结果包括各自包括点积结果的多个数据元素。每个点积结果包括第一源打包数据的至少四个数据元素与第二源打包数据的至少四个数据元素的不同子集中的相应数据元素的乘积之和。公开了其它方法、装置、系统和指令。85PCT国际申请进入国家阶段日2014082886PCT国际申请的申请数据PCT/US2011/0677112011122987PCT国际申请的公布数据WO2013/101018EN2013070451INTCL权利要求书3页说明书31页附图28页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书31页附图28页10申请公布号CN104137。
3、055ACN104137055A1/3页21一种方法,包括接收点积指令,所述点积指令指示包括至少四个数据元素的第一源打包数据,指示包括至少八个数据元素的第二源打包数据,且指示目的地存储位置;以及响应于点积指令,将结果打包数据存储在目的地存储位置中,所述结果打包数据包括各自包括点积结果的多个数据元素,每个点积结果包括第一源打包数据的至少四个数据元素与第二源打包数据的至少四个数据元素的不同子集中的相应数据元素的乘积之和。2如权利要求1所述的方法,其特征在于,接收包括接收指定第二源打包数据的数据元素的尺寸的点积指令,且其中所述点积指令允许第二源打包数据的数据元素的尺寸为多个不同尺寸中的任一个。3如权。
4、利要求2所述的方法,其特征在于,接收包括接收具有立即数的点积指令,所述立即数指定第二源打包数据的数据元素的尺寸。4如权利要求1所述的方法,其特征在于,接收包括接收点积指令,所述点积指令指示包括具有仅二位尺寸的数据元素的第二源打包数据且指示包括具有最少八位尺寸的数据元素的第一源打包数据。5如权利要求1所述的方法,其特征在于,接收包括接收点积指令,所述点积指令指示包括具有仅四位尺寸的数据元素的第二源打包数据且指示包括具有最少八位尺寸的数据元素的第一源打包数据。6如权利要求1所述的方法,其特征在于,接收包括接收点积指令,所述点积指令指示包括至少十六个数据元素的第一源打包数据,且指示包括至少三十二个数。
5、据元素的第二源打包数据,且其中存储包括存储至少两个数据元素,每个数据元素包括基于至少十六个乘积之和的点积结果。7如权利要求1所述的方法,其特征在于,接收包括接收点积指令,所述点积指令指示包括至少十六个数据元素的第一源打包数据,且指示包括至少六十四个数据元素的第二源打包数据,且其中存储包括存储至少四个数据元素,每个数据元素包括基于至少十六个乘积之和的点积结果。8如权利要求1所述的方法,其特征在于,存储包括存储两个数据元素,每个数据元素包括点积结果,第一点积结果包括第一源打包数据的至少四个数据元素与第二源打包数据的较低半部分中的相应数据元素的乘积之和,且其中第二点积结果包括第一源打包数据的至少四个。
6、数据元素与第二源打包数据的较高半部分中的相应数据元素的乘积之和。9如权利要求1所述的方法,其特征在于,存储包括存储至少四个数据元素,每个数据元素包括点积结果,每个点积结果基于第二源打包数据的至少八个数据元素的至少四个子集中不同的一个。10如权利要求1所述的方法,其特征在于,存储包括当对应的点积结果超过饱和值时,在结果打包数据的数据元素的至少一个中存储饱和值。11如权利要求1所述的方法,其特征在于,接收包括接收指示断言掩码的点积指令,且其中存储包括根据断言掩码有条件地存储包括点积结果的数据元素。12一种装置,包括多个打包数据寄存器;以及与多个打包数据寄存器耦合的执行单元,所述执行单元操作用于响应。
7、于点积指令将结权利要求书CN104137055A2/3页3果打包数据存储在目的地存储位置中,所述点积指令指示包括至少四个数据元素的第一源打包数据,指示包括至少八个数据元素的第二源打包数据,且指示目的地存储位置,所述结果打包数据包括多个数据元素,每个数据元素包括点积结果,每个点积结果包括第一源打包数据的至少四个数据元素与第二源打包数据的至少四个数据元素的不同子集中的对应数据元素的乘积之和。13如权利要求12所述的装置,其特征在于,执行单元响应于指定第二源打包数据的数据元素的尺寸的点积指令存储结果打包数据,且其中所述点积指令允许第二源打包数据的数据元素的尺寸为多个不同尺寸中的任一个。14如权利要求。
8、13所述的装置,其特征在于,所述点积指令包括用于指定第二源打包数据的数据元素的尺寸的立即数。15如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令存储结果打包数据,所述点积指令指示包括具有仅二位尺寸的数据元素的第二源打包数据且指示包括具有最少八位尺寸的数据元素的第一源打包数据。16如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令存储结果打包数据,所述点积指令指示包括具有仅四位尺寸的数据元素的第二源打包数据且指示包括具有最少八位尺寸的数据元素的第一源打包数据。17如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令存储结果打包数据,所述点积指令指示包括至。
9、少十六个数据元素的第一源打包数据,且指示包括至少三十二个数据元素的第二源打包数据,且其中结果打包数据包括至少两个数据元素,每个数据元素包括基于至少十六个乘积之和的点积结果。18如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令存储结果打包数据,所述点积指令指示包括至少十六个数据元素的第一源打包数据,且指示包括至少六十四个数据元素的第二源打包数据,且其中结果打包数据包括至少四个数据元素,每个数据元素包括基于至少十六个乘积之和的点积结果。19如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令存储两个数据,每个数据元素包括点积结果,第一点积结果包括第一源打包数据的至少四个。
10、数据元素与第二源打包数据的较低半部分中的相应数据元素的乘积之和,第二点积结果包括第一源打包数据的至少四个数据元素与第二源打包数据的较高半部分中的相应数据元素的乘积之和。20如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令存储至少四个数据元素,每个数据元素包括点积结果,每个点积结果基于第二源打包数据的数据元素的至少四个子集中不同的一个。21如权利要求12所述的装置,其特征在于,所述执行单元响应于点积指令当对应的点积结果超过饱和值时,在结果打包数据的数据元素的至少一个中存储饱和值。22如权利要求12所述的装置,其特征在于,所述执行单元响应于指示断言掩码的点积指令存储结果打包数据,且。
11、其中执行单元根据断言掩码有条件地存储包括点积结果的数据元素。23一种处理器,包括互连;权利要求书CN104137055A3/3页4与互连耦合的处理器,所述处理器操作用于响应于点积指令将结果打包数据存储在目的地存储位置,所述点积指令指示包括至少四个数据元素A0、A1、A2、A3的第一源打包数据,指示包括至少八个数据元素B0、B1、B2、B3、C0、C1、C2、C3的第二源打包数据,且指示目的地存储位置,所述结果打包数据至少包括第一数据元素和第二数据元素,第一数据元素包括A0B0A1B1A2B2A3B3,第二数据元素包括A0C0A1C1A2C2A3C3;以及与所述互连耦合的动态随机存取存储器DRA。
12、M。24如权利要求23所述的系统,其特征在于,所述处理器响应于指定第二源打包数据的数据元素的尺寸的点积指令存储结果打包数据,且其中所述点积指令允许第二源打包数据的数据元素的尺寸为多个不同尺寸中的任一个。25如权利要求23所述的系统,其特征在于,所述处理器响应于点积指令存储结果打包数据,所述点积指令指示包括具有仅二位尺寸的数据元素的第二源打包数据且指示包括具有最少八位尺寸的数据元素的第一源打包数据。26一种制品,包括包括一种或多种固体数据存储材料的机器可读存储介质,所述机器可读存储介质存储点积指令,所述点积指令指示包括至少四个数据元素A0、A1、A2、A3的第一源打包数据,指示包括至少八个数据元。
13、素B0、B1、B2、B3、C0、C1、C2、C3的第二源打包数据,且指示目的地存储位置,所述点积指令如果被机器执行操作用于导致机器执行以下操作,包括将结果打包数据存储在目的地存储位置中,所述结果打包数据至少包括第一数据元素和第二数据元素,第一数据元素包括A0B0A1B1A2B2A3B3,而第二数据元素包括A0C0A1C1A2C2A3C3。27如权利要求25所述的制品,其特征在于,所述点积指令指定第二源打包数据的数据元素的尺寸,且其中所述点积指令允许第二源打包数据的数据元素的尺寸为多个不同尺寸中的任一个。28如权利要求26所述的制品,其特征在于,所述点积指令指示第二源打包数据包括具有选自仅二位和。
14、仅四位的尺寸的数据元素,且指示第一源打包数据包括具有至少八位尺寸的数据元素。权利要求书CN104137055A1/31页5点积处理器、方法、系统和指令0001背景技术领域0002实施例涉及处理器。具体地,实施例涉及操作用于响应于点积指令执行点积操作的处理器。0003背景信息0004许多处理器具有单指令多数据SIMD架构。在SIMD架构中,打包数据指令、向量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理器可具有并行执行硬件,该并行执行硬件响应于打包数据指令来同时或并行地执行多个操作。0005多个数据元素可在一个寄存器或存储器位置内被打包为打包数据或向量数据。在打包。
15、数据中,寄存器或者其他存储位置的位可逻辑地分成数据元素序列。例如,256位宽打包数据寄存器可具有四个64位宽数据元素、八个32位数据元素、十六个16位数据元素等。每一数据元素可表示分开独立的一段数据例如,像素、像素的颜色部分、复数的组成部分等,该段数据可单独地操作和/或与其他数据独立地操作。0006附图的若干视图的简要说明0007可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。在附图中0008图1是具有含一个或多个点积指令的指令集架构的处理器的实施例的框图。0009图2是具有执行单元的指令处理装置的实施例的框图,该执行单元可操作用于执行包含点积指令的一个或多个实施例的指令。0010。
16、图3是处理点积指令的实施例的方法的实施例的流程框图。0011图4是示出可响应于点积指令的第一实施例执行的点积操作的第一实施例的框图。0012图5是示出可响应于点积指令的第二实施例执行的点积操作的第二实施例的框图。0013图6是示出可响应于点积指令的第三实施例执行的点积操作的第三实施例的框图。0014图7是示出可响应于点积指令的第四实施例执行的点积操作的第四实施例的框图。0015图8是点积指令的指令格式的实施例的框图。0016图9是处理具有尺寸说明符的点积指令的实施例的方法的实施例的流程框图。0017图10是点积指令的指令格式的实施例的框图,该点积指令具有任选的掩码说明符和任选的掩码操作类型说明。
17、符。0018图11是一组合适的打包数据操作掩码寄存器的实施例的框图。0019图12是一组合适的打包数据寄存器的实施例的框图。0020图13是包括存储点积指令的一个或多个实施例的机器可读存储介质的制品的框说明书CN104137055A2/31页6图。0021图14B示出点积指令的实施例应用于垂直边缘解块滤波的详细示例。0022图15A是示出根据本发明的实施例的通用向量友好指令格式及其类A指令模板的框图。0023图15B是示出根据本发明的实施例的通用向量友好指令格式及其类B指令模板的框图。0024图16是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。0025图16B是示出根据本发明的一。
18、个实施例的构成完整操作码字段的具有专用向量友好指令格式的字段的框图。0026图16C是示出根据本发明的一个实施例的构成寄存器索引字段的具有专用向量友好指令格式的字段的框图。0027图16D是示出根据本发明的一个实施例的构成扩充AUGMENTATION操作字段的具有专用向量友好指令格式的字段的框图。0028图17是根据本发明的一个实施例的寄存器架构的框图。0029图18A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。0030图18B示出处理器核,该核包括耦合到执行引擎单元的前端单元,并且两者耦合到存储器单元。0031图19A是根据本发明实施例的单。
19、处理器核连同其到管芯上互连网络的连接以及其2级L2高速缓存的本地子集的框图。0032图19B是根据本发明的实施例的图19A中的处理器核的一部分的展开图。0033图20是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制器、并且可具有集成图形的处理器的框图。0034图21所示为根据本发明的一个实施例的系统的框图。0035图22所示为根据本发明的实施例的第一更具体示例性系统的框图。0036图23示出根据本发明的实施例的第二更具体的示例性系统的框图。0037图24所示为根据本发明的一实施例的SOC的框图。0038图25是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令。
20、转换成目标指令集中的二进制指令的框图。具体实施方式0039本文中公开的是点积指令,用于执行该点积指令的处理器,在处理或执行该点积指令时处理器执行的方法,以及合并一个或多个处理器以执行该点积指令的系统。本文中公开的各种处理器和系统中的任一者是合适的。在以下描述中,阐述众多具体细节例如,具体处理器配置、操作序列、指令格式、数据格式、微架构细节、点积指令的具体示例等。然而,在没有这些具体细节的情况下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术,以避免混淆对本描述的理解。0040点积被广泛用于各种不同的应用中。例如,点积通常用于信号处理、滤波、矩阵操作、像素处理、音频处理、计算相关序。
21、列、滤波像素例如在解块滤波中、当内插像素值以说明书CN104137055A3/31页7去除视觉伪像时、当计算矩阵的乘积时,等等。由于点积的广泛使用,计算点积的有效方式具有优势。0041点积操作表示在两个向量或数列上的代数操作,其中相应的条目相乘并且所有的乘积相加以产生单个数。两个向量AA1,A2,AN和BB1,B2,BN的点积由以下等式表达0042等式10043在该等式中,符号指示在从1到N的所有向量元素对上的求和操作。0044图1是具有含一个或多个点积指令103的指令集架构101的处理器100的示例实施例的框图。该处理器可以是各种复杂指令集计算CISC处理器、各种精简指令集计算RISC处理器。
22、、各种超长指令字VLIW处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,处理器可以是通用处理器例如,在台式、膝上型等计算机中使用的类型的通用微处理器。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器DSP以及控制器例如,微控制器,仅列举数例。0045处理器具有指令集架构ISA101。ISA表示处理器的架构中涉及编程的那部分。ISA通常包括原生指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以及处理器的外部输入和输出I/O。ISA与微架构不同,微架构。
23、通常表示被选择用于实现ISA的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的ISA。0046ISA包括架构可视的寄存器例如,架构寄存器组104。所示出的架构寄存器包括打包数据寄存器105。每个打包数据寄存器可操作用于存储打包数据、向量数据或者SIMD数据。在一些实施例中,架构可见的寄存器可任选地包括掩码寄存器106。架构可见的寄存器可表示处理器上例如管芯上的存储位置。架构寄存器此处也可以被简称为寄存器。短语架构寄存器、寄存器组、以及寄存器在本申请中用于表示对软件和/或程序器可见例如,软件可见的的寄存器和/或由通用宏指令指定用来标识操作数的寄存器,除非另外指定或清楚地明显可知。这些寄。
24、存器与给定微架构中的其他非架构的或非在架构上可见的寄存器例如,指令所使用的临时寄存器,重新排序缓冲器,引退寄存器等等不同。0047所示出的ISA包括处理器支持的指令集102。指令集的这些指令表示宏指令例如,提供给处理器以供执行的指令,与微指令或微操作例如,处理器的解码器解码宏指令而得到的微指令或微操作不同。所示的指令集包括一个或多个点积指令103。点积指令可以是本文中其它位置公开的点积指令的各种不同实施例中的任一个。自然,指令集通常包括其它指令未示出。0048处理器还包括执行逻辑107。执行逻辑可操作用于执行或处理指令集的指令例如,一个或多个点积指令。0049图2是具有执行单元207的指令处理。
25、装置200的示例实施例的框图,该执行单元210可操作用于执行包含点积指令203的示例实施例的指令。在一些实施例中,指令处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置可以是图1的处理器或类似设备,或者可被包括在图1的处理器或类似设备中。替代地,指令处理说明书CN104137055A4/31页8装置可被包括在不同的处理器或电子系统中。0050指令处理装置200可接收点积指令203。例如,可从指令取出单元、指令队列或存储器接收该指令。点积指令可表示由指令处理装置识别并控制该装置来执行特定操作例如,点积操作的机器指令、宏指令或控制信号。点积指令可明确指定例如,通过位或。
26、者一个或多个字段或以其他方式指示例如,隐含地指示包含至少四个数据元素的第一源打包数据210,可指定或以其他方式指示包括至少八个数据元素的第二源打包数据211,并且可指定或以其他方式指示其中将存储结果打包数据的目的地例如,目的地存储位置123。0051所示的指令处理装置包括指令解码单元或解码器207。解码器可接收和解码高级机器指令或宏指令,并且输出一个或多个较低级的微操作、微代码入口点、微指令或者反映和/或源自于原始较高级指令的其他较低级的指令或控制信号。这一个或多个较低级指令或控制信号可通过一个或多个较低级例如,电路级或硬件级操作来实现较高级指令的操作。解码器可以使用各种不同的机制来实现,包括。
27、但不限于,微代码只读存储器ROM、查找表、硬件实现、可编程逻辑阵列PLA和本领域已知的用于实现解码器的其他机制。0052在其他实施例中,取代具有解码器207,可使用指令仿真器、翻译器、变形器MORPHER、解释器、或者其他指令转换逻辑。各种不同类型的指令变换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可接收指令,并且仿真、翻译、变形、解释、或者以其他方式将接收的指令转换成一个或多个对应的导出指令或控制信号。在其他实施例中,可使用指令转换逻辑和解码器两者。例如,该装置可具有用于将接收到的指令转换成一个或多个中间指令的指令转换逻辑,以及用于将一个或多个中间指令解。
28、码成可由该指令处理装置的原生硬件执行的一个或多个较低级指令或控制信号的解码器。指令变换逻辑中的一些或全部可位于其余指令处理装置的管芯外,诸如在单独的管芯上或在管芯外的存储器中。0053指令处理装置还包括一组打包数据寄存器205。如所示,打包数据寄存器的集合可包括第一打包数据寄存器2051、第二打包数据寄存器2052和第三打包数据寄存器2053。打包数据寄存器可各自表示处理器上的例如管芯上处理器存储位置。打包数据寄存器可表示架构寄存器。打包数据寄存器中的每一个都可以是可操作以存储打包或向量数据。打包数据寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的电路。多种不同类。
29、型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、及其组合。0054再次参考图2,执行单元207与打包数据寄存器205耦合。执行单元还与解码器208耦合。执行单元可从解码器接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了点积指令或者是从点积指令导出的。0055执行单元207可操作用于,响应于点积指令203和/或作为其结果,在目的地存储位置213存储结果打包数据。如前所述,点积指令可指定或以其它方式指示包括至少四个数据元素的第一源打包数据210,指定或以其它方式指示包括至。
30、少八个数据元素的第二源打包数据211,并且指定或以其它方式指示目的地存储位置213。结果打包数据可包括至少两个数据元素。至少两个数据元素中的每一个可包括点积结果。在一些实施例中,每个点积说明书CN104137055A5/31页9结果可包括第一源打包数据的至少四个数据元素与第二源打包数据的至少四个数据元素的不同子集中的相应数据元素的乘积之和。如所示,在一些实施例中,第一源打包数据210可存储在第一打包数据寄存器2051中,第二源打包数据211可存储在第一打包数据寄存器2052中,且第三源打包数据212可存储在第一打包数据寄存器2053中。或者,可使用适用于打包数据的存储器位置或其它存储位置。00。
31、56作为示例,执行单元可包括算术逻辑单元、算术单元、乘法和加法单元、包括乘法和加法逻辑的执行单元等等。执行单元和/或装置可包括特定或具体的逻辑例如,可能与软件和/或固件组合的电路或其它硬件,操作用于执行和/或处理点积指令,并响应于指令例如,响应于从指令导出的一个或多个微指令或其它控制信号存储包括多个点积的结果。例如,如所示,执行单元可包括可操作用于计算点积的点积计算逻辑209。在一些实施例中,点积计算逻辑可包括一个或多个乘法器例如,乘法器电路和一个或多个加法器例如,加法器电路。0057在一些实施例中,第一源打包数据可包括至少四个数据元素A0、A1、A2、和A3,且第二源打包数据可包括至少八个数。
32、据元素B0、B1、B2、B3、C0、C1、C2和C3。当然,至少四个数据元素B0、B1、B2、B3可表示第二源打包数据的至少四个数据元素的第一子集,且至少四个数据元素C0、C1、C2和C3可表示第二源打包数据的至少四个数据元素的不同的第二子集。结果打包数据可包括至少第一数据元素和第二数据元素,第一数据元素包括A0B0A1B1A2B2A3B3,第二数据元素包括A0C0A1C1A2C2A3C3。0058在一些实施例中,结果打包数据可包括至少四个数据元素,每个数据元素表示点积结果。每个点积结果可基于第二源打包数据的至少八个数据元素的至少四个子集中的不同的一个。在一些实施例中,第二源打包数据可进一步包。
33、括至少八个附加数据元素D0,D1,D2,D3,E0,E1,E2和E3。对于这些,至少四个数据元素D0,D1,D2和D3可表示第二源打包数据的至少四个数据元素的亦不同的第三子集,且至少四个数据元素E0,E1,E2和E3可表示第二源打包数据的至少四个数据元素的亦不同的第四子集。结果打包数据可进一步包括至少第三数据元素和第四数据元素,第三数据元素包括A0D0A1D1A2D2A3D3,而第四数据元素包括A0E0A1E1A2E2A3E3。0059在一些实施例中,点积指令可指定第二源打包数据的数据元素的尺寸。点积指令和/或执行单元可允许第二源打包数据的数据元素的尺寸为多个不同尺寸中的任一个。在一些实施例中。
34、,点积指令可具有用于明确指定第二源打包数据的数据元素的尺寸的立即数,然而这不是必须的。或者,可在由指令指示的寄存器或其它存储位置中指定第二源打包数据的数据元素的尺寸。作为又一个选项,指令例如,指令的操作码可明确指示第二源打包数据的数据元素的尺寸。在一些实施例中,可任选地存在具有多种不同尺寸的多个指令。在一些实施例中,第一源打包数据可包括具有至少八位尺寸的数据元素,且第二源打包数据可包括具有仅两位或仅四位尺寸的数据元素。0060为了避免混淆描述,已示出和描述了相对简单的指令处理装置200。在其他实施例中,该指令处理装置可任选地包括其他公知组件,诸如举例而言,指令取出单元、指令调度单元、分支预测单。
35、元、指令和数据的高速缓存、指令和数据的转换后备缓冲器TRANSLATIONLOOKASIDEBUFFER、预取缓冲器、微指令队列、微指令定序器、总线接口单元、二级或更高级高速缓存、引退单元、寄存器重命名单元、处理器中包含的其他组件、以及上述的各种组说明书CN104137055A6/31页10合。实施例可具有多个核、逻辑处理器或执行引擎。可操作用于执行本申请中公开的指令实施例的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。0061图3是处理点积指令的示例实施例的方法315的示。
36、例实施例的流程框图。在各实施例中,方法可由通用处理器、专用处理器例如,图形处理器或数字信号处理器、或其他种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法315可由图1的处理器100或图2的指令处理装置200或类似装置来执行。替代地,方法315可由处理器或指令处理装置的不同实施例执行。此外,图1的处理器100和图2的指令处理装置200可执行与图3的方法315的操作和方法相同、类似或不同的操作和方法。0062该方法包括在框316接收点积指令。在各个方面,该指令可在处理器、指令处理装置或者其一部分例如,解码器、指令变换器等处接收。在各个方面,指令可从处理器外的源例如,从主存储器、盘、或总。
37、线或互连或者从处理器上的源例如,从指令高速缓存接收。点积指令可明确指定例如,通过位或者一个或多个字段或以其它方式指示例如,隐含地指示包括至少四个数据元素的第一源打包数据,明确指定或以其它方式指示包括至少八个数据元素的第二源打包数据,并且明确指定或以其它方式指示目的地存储位置。0063然后,在框317,响应于点积指令、作为点积指令的结果、和/或依照点积指令所指定的,结果打包数据被存储在目的地存储位置中。结果打包数据包括各自包括点积结果的至少两个数据元素。每个点积结果包括第一源打包数据的至少四个数据元素与第二源打包数据的至少四个数据元素的不同子集中的相应数据元素的乘积之和。在一些实施例中,结果打包。
38、数据可具有如本文的其它位置描述的结果打包数据的其它性质。作为示例,执行单元、指令处理装置或处理器可执行指令所指定的操作并存储结果。0064所示的方法包括从软件角度和/或从处理器外部可见的操作。在其他实施例中,该方法可任选地包括处理器内出现的一个或多个操作和/或一个或多个微架构操作。作为示例,可取出指令,然后可将该指令解码、转换、仿真或以其它方式转换成一个或多个其它指令或控制信号。可访问和/或接收源打包数据。可启用执行单元,以执行指令的操作,并且可执行该操作例如,可执行用于实现指令的操作的一个或多个微架构操作。0065图4是示出响应于点积指令的第一示例实施例执行的点积操作415的第一示例实施例的。
39、框图。点积指令指定或以其它方式指示具有至少四个数据元素A0AN的第一源打包数据410,其中N至少为四。点积指令指定或以其它方式指示具有至少八个数据元素B0BN和C0CN的第二源打包数据411。如所示,数据元素B0BN可以是连续的例如,在第二源打包数据的最低阶半部分内,且数据元素C0CN可以是连续的例如,在第二源打包数据的最高阶半部分内。至少四个数据元素B0BN表示第二源打包数据中的至少四个数据元素的第一集合,且数据元素C0CN表示第二源打包数据中的至少四个数据元素的不同的第二集合。在一些实施例中,第二源打包数据可包括至少四个数据元素未示出的附加的不同的非重叠集合。在一些实施例中,至少四个数据元。
40、素的不同的非重叠集合中的每一个可包括与第一源打包数据的数据元素的数量相同数量的数据元素。0066点积指令还指定或以其它方式指示目的地例如,目的地存储位置。响应于点积说明书CN104137055A107/31页11指令,生成结果打包数据412,并将其存储在目的地中。结果打包数据包括至少两个数据元素R0R1。至少两个数据元素中的每一个包括点积结果。每个点积结果可包括第一源打包数据的至少四个数据元素A0AN与第二源打包数据的至少四个数据元素的不同子集中的相应数据元素的乘积之和。如所示,在一些实施例中,第一较低阶的数据元素R0可包括等于A0B0A1B1A2B2ANBN的点积结果,或饱和SATURATE。
41、。此外,第二数据元素R1可包括等于A0C0A1C1A2C2ANCN的点积结果,或饱和。“或饱和”指示在一些实施例中,如果点积结果的值超过用于存储结果数据元素的可用数量的位中可存储的最大值,则存储饱和值。在所示的实施例中,形成相乘的对应对的数据元素之间的对应关系指的是集合内的数据元素的相对顺序即,A0对应于一个集合中的B0和另一个集合中的C0,A1对应于一个集合中的B1和另一个集合中的C1,A2对应于一个集合中的B2和另一个集合中的C2,AN对应于一个集合中的BN和另一个集合中的CN。如果A0AN包括多于四个数据元素,则B0BN和C0CN可各自包括多于四个数据元素,且每个点积结果可将对应数据元素。
42、的附加对的乘积求和。0067图5是示出响应于点积指令的第二示例实施例执行的点积操作515的第二示例实施例的框图。点积指令指定或以其它方式指示具有至少四个数据元素A0AN的第一源打包数据510,其中N至少为四。点积指令还指定或以其它方式指示具有至少十六个数据元素B0BN、C0CN、D0DN和E0EN的第二源打包数据511。如所示,数据元素B0BN可以是连续的例如,在第二源打包数据的最低阶四分之一部分中,数据元素C0CN可以是连续的例如,在第二源打包数据的次最低阶四分之一部分中,数据元素D0DN可以是连续的例如,在第二源打包数据的次最高阶四分之一部分中,数据元素E0EN可以是连续的例如,在第二源打。
43、包数据的最高阶四分之一部分中。至少四个数据元素的集合B0BN、C0CN、D0DN和E0EN中的每一个表示在第二源打包数据中的至少四个数据元素的不同非重叠集合。在一些实施例中,第二源打包数据可包括至少四个数据元素未示出的附加的不同的非重叠集合。在一些实施例中,至少四个数据元素的不同的非重叠集合中的每一个可包括与第一源打包数据的数据元素的数量相同数量的数据元素。0068点积指令还指定或以其它方式指示目的地例如,目的地存储位置。响应于点积指令,生成结果打包数据512,并将其存储在目的地中。在图示中,结果打包数据被分成第一部分512A和第二部分512B。结果打包数据包括至少四个数据元素R0R3。至少四。
44、个数据元素中的每一个可包括点积结果。每个点积结果可包括第一源打包数据的至少四个数据元素A0AN与第二源打包数据的至少四个数据元素的不同子集中的相应数据元素的乘积之和。如所示,在一些实施例中,第一较低阶的数据元素R0可包括等于A0B0A1B1A2B2ANBN的点积结果,或饱和。第二数据元素R1可包括等于A0C0A1C1A2C2ANCN的点积结果,或饱和。第三数据元素R2可包括等于A0D0A1D1A2D2ANDN的点积结果,或饱和。第四数据元素R3可包括等于A0E0A1E1A2E2ANEN的点积结果,或饱和。“或饱和”指示在一些实施例中,如果点积结果的值超过用于存储结果数据元素的可用数量的位中可存。
45、储的最大值,则存储饱和值。如果A0AN包括多于四个数据元素,则B0BN、C0CN、D0DN和E0EN可各自包括多于四个数据元素,且至少四个点积结果中的每一个可将对应数据元素的附加对的乘积求和。0069图6是示出响应于点积指令的第三示例实施例执行的点积操作615的第三示例实说明书CN104137055A118/31页12施例的框图。点积指令指定或其它方式指示具有十六个8位字节数据元素A0A15的第一128位源打包数据610。如图所示,A0在位70中,A1在位158中,A2在位2316中,A3在位3124中,A4在位3932中,A5在位4740中,A6在位5548中,A7在位6356中,A8在位7。
46、164中,A9在位7972中,A10在位8780中,A11在位9588中,A12在位10396中,A13在位111104中,A14在位119112中,且A15在位127120中。0070点积指令还指定或以其它方式指示具有三十二个4位宽数据元素B0B15和C0C15的第二128位源打包数据611。如所示,十六个数据元素B0B15可在第二源打包数据的最低阶半部分内即在位630内是连续的,且数据元素C0C15可在第二源打包数据的最高阶半部分内即在位12764内是连续的。B0在位30中;B1在位74中等。C0在位6764中;C1在位7168中等。十六个数据元素B0B15表示第二源打包数据中的十六个数据。
47、元素的第一集合,且数据元素C0C15表示第二源打包数据中的十六个数据元素的不同的第二集合。在一些实施例中,第一和第二源打包数据具有相同的宽度例如,存储在相同尺寸的打包数据寄存器中。0071点积指令还指定或以其它方式指示目的地例如,目的地存储位置。响应于点积指令,生成结果打包数据612,并将其存储在目的地中。结果打包数据包括两个16位数据元素R0R1。结果数据元素中的每一个包括的位数为第一源打包数据的每个数据元素位数的两倍,且为第二源打包数据的数据元素的位数的四倍。两个数据元素中的每一个包括基于至少十六个乘积之和的点积结果。每个点积结果可包括第一源打包数据的十六个数据元素A0A15与第二源打包数。
48、据的十六个数据元素的不同子集中的相应数据元素的乘积之和。如所示,在一些实施例中,在位150中的第一最低阶的数据元素R0可包括等于A0B0A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A10B10A11B11A12B12A13B13A14B14A15B15的点积结果,或饱和。此外,第二较高阶的数据元素R1可包括等于A0C0A1C1A2C2A3C3A4C4A5C5A6C6A7C7A8C8A9C9A10C10A11C11A12C12A13C13A14C14A15C15的点积结果,或饱和。结果打包数据的较高位12732可任选地被归零,或可表示不关心的值等。0072图7是示出响。
49、应于点积指令的第四示例实施例执行的点积操作715的第四示例实施例的框图。点积指令指定或其它方式指示具有十六个8位字节数据元素A0A15的第一128位源打包数据710。点积指令还指定或以其它方式指示具有六十四个2位宽数据元素B0B15、C0C15、D0D15和E0E15的第二128位源打包数据711。2位数据元素是第一源打包数据的8位字节数据元素的尺寸的四分之一。如所示,十六个数据元素B0B15可在第二源打包数据的最低阶四分之一部分中即,在位310中是连续的,十六个数据元素C0CN可在第二源打包数据的次最低阶四分之一部分中即,在位6332中是连续的,十六个数据元素D0DN可在第二源打包数据的次最高阶四分之一部分中即,在位9564中是连续的,且十六个数据元素E0EN可在第二源打包数据的最高阶四分之一部分中即,在位12796中是连续的。数据元素的集合B0B15、C0C15、D0D15和E0E15中的每一个表示在第二源打包数据中的十六个数据元素的不同非重叠集合。0073点积指令还指定或以其它方式指示目的地例如,目的地存储位置。响应于点积指令,生成结果打包数据712,并将其存储在目的地中。结果打包数据包括四个16位结果数据元素R0R3。结果数据元素中的每一个包括的位数为第一源打包数据的每个数据元素位数的两倍,且为第二源打包数据的数据元素的位数的八倍。四个结果数据元素中的每一个说。