CN107667345B - 打包数据对齐加计算指令、处理器、方法和系统 - Google Patents

打包数据对齐加计算指令、处理器、方法和系统 Download PDF

Info

Publication number
CN107667345B
CN107667345B CN201680032567.4A CN201680032567A CN107667345B CN 107667345 B CN107667345 B CN 107667345B CN 201680032567 A CN201680032567 A CN 201680032567A CN 107667345 B CN107667345 B CN 107667345B
Authority
CN
China
Prior art keywords
data
packed data
instruction
processor
source packed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680032567.4A
Other languages
English (en)
Other versions
CN107667345A (zh
Inventor
E.J.范达伦
A.奥古斯泰恩
M.C.韦策伦伯格
S.罗斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202210154160.6A priority Critical patent/CN114816523A/zh
Publication of CN107667345A publication Critical patent/CN107667345A/zh
Application granted granted Critical
Publication of CN107667345B publication Critical patent/CN107667345B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一种处理器包含解码单元,其用来对打包数据对齐加计算指令解码。该指令要指示一个或多个源打包数据操作数的第一集、一个或多个源打包数据操作数的第二集、至少一个数据元素偏移,该第一集要包含第一数据元素,该第二集将包含第二数据元素。运行单元响应于指令要存储结果打包数据操作数,其要包含结果数据元素,各具有利用一对的源打包数据操作数的第一集的数据元素和源打包数据操作数的第二集的数据元素执行的运算的值。运行单元要将至少一个数据元素偏移应用于源打包数据操作数的第一和第二集中的至少对应一个。至少一个数据元素偏移要抵消源打包数据操作数的第一和第二集中每对的数据元素之间的对应的任何缺乏。

Description

打包数据对齐加计算指令、处理器、方法和系统
技术领域
本文描述的实施例一般涉及处理器。特别地,本文描述的实施例一般涉及具有单指令、多数据(SIMD)架构的处理器。
背景技术
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,多个数据元素可被打包在一个寄存器或存储器位置内以作为打包数据或SIMD数据。在打包或SIMD数据中,寄存器或存储器位置的位可以逻辑分成数据元素序列。例如,128位宽的打包数据寄存器可以具有两个64位数据元素、四个32位数据元素、八个16位数据元素或十六个8位数据元素。打包数据或SIMD指令可以用来在打包或SIMD数据的多个数据元素或多对对应数据元素上同时且并行运算。处理器可以响应于打包数据或SIMD指令而具有并行或SIMD运行逻辑(例如,一个或多个SIMD运行单元)来在打包或SIMD数据同时且并行运算。
附图说明
可以通过参考下列描述以及用来图示实施例的附图而最好地理解本发明。在图中:
图1是操作以执行打包数据对齐加计算指令的实施例的处理器的实施例的框图。
图2是执行打包数据对齐加计算指令的实施例的方法的实施例的方块流程图。
图3是图示打包数据对齐加计算操作的第一实施例的框图。
图4是操作以执行打包数据对齐加计算操作的实施例的运行单元的示例实施例的框图。
图5是图示打包数据对齐加计算操作的第二实施例的框图。
图6是图示打包数据对齐加计算操作的第三实施例的框图。
图7是适合于实现本发明的实施例的处理器的详细示例实施例的框图。
图8A是图示有序流水线(pipeline)的实施例和寄存器重命名乱序发出/运行流水线的实施例的框图。
图8B是处理器核的实施例的框图,该处理器核包含耦合于运行引擎单元的前端单元,并且该前端单元和运行引擎单元都耦合于存储器单元。
图9A是单个处理器核连同它到管芯上互连网络的连接以及它的等级2(L2)高速缓存的本地子集的实施例的框图。
图9B是图9A的处理器核的部分的展开图的实施例的框图。
图10是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的实施例的框图。
图11是计算机架构的第一实施例的框图。
图12是计算机架构的第二实施例的框图。
图13是计算机架构的第三实施例的框图。
图14是计算机架构的第四实施例的框图。
图15是根据本发明的实施例用来将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文公开的是打包数据对齐加计算指令、用来运行这些指令的处理器、在处理或运行指令时由处理器执行的方法以及结合一个或多个处理器来处理或运行指令的系统。在下列描述中,阐述许多具体细节(例如,具体指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,实施例可以在没有这些具体细节的情况下实践。在其他实例中,未详细地示出众所周知的电路、结构和技术以免使本描述的理解模糊。
在一些实施例中,打包数据对齐加计算指令可以在具有SIMD架构的处理器中执行。在SIMD架构中,并行或SIMD运行逻辑(例如,一个或多个SIMD运行单元)通常设计成在打包或SIMD数据的相对于彼此具有特定数据元素对齐的数据元素上执行运算。作为示例,SIMD加法器单元可以设计成使第一和第二源打包数据中的处于相同的相对数据元素位置中的对应数据元素相加。类似地,各种各样的其他类型的SIMD运行单元(例如,SIMD乘法单元、SIMD比较单元、SIMD移位单元等)可以设计成在第一和第二源打包数据中处于相同的相对数据元素位置中的对应数据元素上运算。在对应数据元素上的这样的运算有时称为“垂直”SIMD运算。
其他SIMD运行单元不限于只在对应数据元素上运算和/或只执行“垂直”SIMD运算。相反,一些SIMD运行单元可以在非对应的数据元素上运算。作为一个示例,执行复数乘法指令的运行单元可以操作以使对应数据元素和非对应数据元素(例如,对角数据元素)都相乘,并且使乘法的积组合。然而,SIMD运行单元通常设计成在源打包数据中具有特定固定且不变的相对数据元素对齐的数据元素上运算。在没有本文公开的打包数据对齐加计算指令的情况下,如果预期在还未展现特定固定且不变的相对数据元素对齐的数据元素上运算,则一个或多个打包数据对齐操作通常需要在SIMD运行单元能够在预期的数据元素上运算之前执行。例如,可以在第一源打包数据操作数上执行初始移位、旋转、移位-合并或其他打包数据对齐指令以在执行另一个指令来在第一源打包数据操作数的被移动或对齐的数据元素上执行运算之前使第一源打包数据操作数的数据元素移动或对齐。
然而,执行一个或多个单独打包数据对齐指令的需要可能趋向于具有一个或多个缺点。一个可能缺点是一个或多个打包数据对齐指令是单独指令,其可能趋向于花费附加时间来执行(例如,一个或多个时钟周期)和/或可能趋向于使用附加资源(例如,取单元、解码器、运行单元等)并且由此增加功率消耗。另一个可能缺点是打包数据对齐指令通常将它们的结果存回到架构寄存器(例如,打包数据寄存器),这可能使寄存器不可用于存储其他数据。有利地,本文公开的打包数据对齐加计算指令可以在相同的单指令的执行限度内组合打包数据对齐操作和计算操作两者。这可以有助于避免需要执行单独的打包数据对齐和计算指令,并且由此通常有助于提高性能、提高架构寄存器的可用性等。
图1是操作以执行打包数据对齐加计算指令102的实施例的处理器100的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。备选地,处理器可以是专用处理器。适合的专用处理器的示例包含但不限于数字信号处理器(DSP)、图像处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器和控制器(例如,微控制器)。处理器可以具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任何,或具有不同架构(例如,不同的核可以具有不同架构)的组合。在一个具体示例实施例中,处理器可以是用作图像处理器单元的DSP,但本发明的范围不被如此限制。
在操作期间,处理器100可以接收打包数据对齐加计算指令102。例如,指令可以通过总线或其他互连从存储器接收。指令可以代表宏指令、汇编语言指令、机器代码指令或处理器的指令集的其他指令或控制信号。在一些实施例中,打包数据对齐加计算指令可以显式指定(例如,通过一个或多个字段或位集)或以其他方式指示(例如,隐式指示)一个或多个源打包数据操作数112的第一集,其要包含第一多个数据元素(例如,在图示的示例中标记为数据元素A1至A4),可以显式指定或以其他方式指示一个或多个源打包数据操作数的第二集,其要包含第二多个数据元素(例如,在图示的实施例中标记为数据元素B1至B8),并且可以显式指定或以其他方式指示目的地存储位置118,在所述目的地存储位置118处要存储结果打包数据操作数120。作为一个示例,指令可以具有源和/或目标操作数规范字段,来显式指定操作数的寄存器、存储器位置或其他存储位置。备选地,这些操作数中的一个或多个尽管未显式表达(例如,隐式的或由指令的操作码来暗示),但可以可选地是隐式的或由指令来暗示。例如,处理器可以基于操作码理解特定固定寄存器或其他存储位置要用于这些操作数中的一个。在一个方面中,尽管这不被要求,但源操作数的数据可以从输入/输出设备(例如,网络接口、数字图像采集设备、视频输入设备、无线接口、音频输入设备等)接收。
如示出的,在一些实施例中,打包数据对齐加计算指令也可以显式指定或以其他方式指示至少一个数据元素偏移122。如将在下文进一步解释的,至少一个数据元素偏移可以用来执行打包数据对齐操作来使源打包数据操作数的第一和第二集中的源打包数据操作数对齐。至少一个数据元素偏移可以在不同实施例中代表各种不同类型的偏移。仅举几个示例,适合的偏移的示例包含但不限于数据元素数量的指定或指示、位数量(例如,以数据元素大小增量)的指定或指示、预定数量的数据元素中一个的选择、预定位数量(例如,以数据元素大小增量)中一个的选择、数据元素或位中的指定或指示的旋转量(例如,以数据元素大小增量)以及数据元素或位中的指定或指示的移位量(例如,以数据元素大小增量)。如示出的,在一些实施例中,至少一个数据元素偏移可以可选地存储在通用寄存器或其他标量寄存器124中。备选地,指令的立即数(immediate)可以可选地用来提供至少一个数据元素偏移,或可以可选地使用这样的方法的组合。有利地,这样的实施例允许指令指示灵活或可变偏移(例如,在一个方面中,偏移可以是-4、-3、-2、-1、0、1、2、3或4数据元素偏移位置中的任一个,其中负整数(例如,-2)用来指示在一个方向上的偏移并且非负整数(例如,2)用来指示在相反方向上的偏移)。在还有其他实施例中,固定偏移可以可选地对于指令(例如,其操作码)是隐式的,而不是通过指令的非操作码字段灵活或可变地指示。
再次参考图1,处理器包含解码单元或解码器104。该解码单元可以接收打包数据对齐加计算指令并且对其解码。解码单元可以输出一个或多个相对较低级指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等),其反映、代表相对较高级打包数据对齐加计算指令和/或从该较高级打包数据对齐加计算指令得到该一个或多个相对较低级指令或控制信号。在一些实施例中,解码单元可以包含:一个或多个输入结构(例如,端口、互连、接口),其用来接收打包数据对齐加计算指令;与之耦合的指令识别和解码逻辑,其用来识别打包数据对齐加计算指令并且对其解码;以及与之耦合的一个或多个输出结构(例如,端口、互连、接口),其用来输出较低级指令或控制信号。解码单元可以使用各种不同机制实现,其包含但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和适合于实现解码单元的其他机制。
在一些实施例中,代替向解码单元直接提供打包数据对齐加计算指令,可以可选地使用指令仿真器、翻译器、变形器、解释器或其他指令转换模块。各种类型的指令转换模块可以在软件、硬件、固件或其组合中实现。在一些实施例中,指令转换模块可以位于处理器外部,例如比如在单独管芯上和/或在存储器中(例如,作为静态、动态或运行时仿真模块)。作为示例,指令转换模块可以接收打包数据对齐加计算指令(其可以属于第一指令集),并且可以将打包数据对齐加计算指令仿真、翻译、变形、解释或以其他方式转换成一个或多个对应中间指令或控制信号,其可以属于第二不同的指令集。第二指令集的一个或多个中间指令或控制信号可以提供给解码单元(例如,解码单元104),该解码单元可以将它们解码为由处理器的本机硬件(例如,一个或多个运行单元)可运行的一个或多个较低级指令或控制信号。
再次参考图1,处理器100还包含打包数据寄存器108的集。这些打包数据寄存器中的每个可以代表管芯上存储位置,其操作以存储打包数据或SIMD数据。该打包或SIMD数据可以展现“空间”SIMD,其中元素可以通过总线或其他互连而一起接收、一起作为打包或SIMD数据存储在寄存器中(其中在数据元素的进位链(carry chain)中可能存在中断)等。打包数据寄存器可以代表对软件和/或编程器可见的架构上可见或架构寄存器,和/或是由处理器的指令集的指令所指示来识别操作数的寄存器。这些架构寄存器与给定的微架构中的其他非架构寄存器(例如,临时寄存器、重排序寄存器、引退寄存器等)形成对比。打包数据寄存器可以在不同微架构中采用不同方式实现并且不限于任何特定类型的设计。适合类型的寄存器的示例包含但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
在一些实施例中,一个或多个源打包数据操作数112的第一集可以可选地存储在一个或多个打包数据寄存器110中的第一集中(例如,单个寄存器可以用来存储单个操作数或不同打包数据寄存器可以用来存储两个不同操作数中的每个),并且一个或多个源打包数据操作数116的第二集可以可选地存储在一个或多个打包数据寄存器114的第二集中(例如,单个寄存器可以用来存储单个操作数或不同的打包数据寄存器可以用来存储两个不同操作数中的每个)。在一些实施例中,目的地存储位置118可以可选地是第三打包数据寄存器。备选地,存储器位置或其他存储位置可以可选地用于这些操作数中的一个或多个。此外,在一些实施例中,用于源打包数据操作数中的一个的源/目的地打包数据寄存器可以可选地重新用作目的地存储位置以用于结果打包数据操作数的存储。例如,指令可以指定源/目的地寄存器并且处理器可以隐式或隐含地理解到源/目的地寄存器初始要用来检索源操作数并且后来随后结果操作数要存储在源/目的地寄存器中,从而覆写源操作数。另外,在一些实施例中,指令可以指示仅一个或多个源打包数据操作数的一个集(例如,集112而不是集116)。
再次参考图1,运行单元106与解码单元104耦合。运行单元可以接收一个或多个解码或以其他方式转换的指令或控制信号,其代表打包数据对齐加计算指令或从该指令得到。运行单元例如通过与打包数据寄存器108耦合而也与源打包数据操作数112、116的第一和第二集耦合。运行单元可以接收源打包数据操作数的第一和第二集。运行单元响应于和/或由于打包数据对齐加计算指令(例如,响应于从其中解码的一个或多个指令或控制信号)而运算来将结果打包数据操作数120存储在由指令所指示的目的地存储位置118中。
在一些实施例中,结果打包数据操作数可以包含多个结果数据元素(例如,在图示的示例中标记为数据元素R1至R4)。在一些实施例中,结果数据元素中的每个可以具有利用一对的源打包数据操作数112的第一集中的数据元素和源打包数据操作数116的第二集中的数据元素执行的运算的值。例如,如在图示的示例实施例中示出的,R1可以具有利用一对的源打包数据操作数的第一集中的数据元素A1和源打包数据操作数的第二集中的非对应数据元素B4执行的运算(OP)的值。同样,R2可以具有利用A2和B5执行的运算(OP)的值,R3可以具有利用A3和B6执行的运算(OP)的值,并且R4可以具有利用A4和B7执行的运算(OP)的值。这对于应用于操作数116的三个数据元素位置的示例偏移仅仅是一个说明性示例。
在一些实施例中,例如当至少一个数据元素偏移共同或累计达到至少一个(leastone)非零数据元素偏移时,每对中的数据元素可以是源操作数中的非对应数据元素。例如,A1和B4在源打包数据操作数的第一和第二集中处于非对应数据元素位置中(即,在源打包数据操作数的第一和第二集中,A1处于与B1而不与B4对应的数据元素位置中)。同样,A2和B5、A3和B6以及A4和B7各自在源打包数据操作数的第一和第二集中处于非对应数据元素位置中。
运行单元可以将至少一个数据元素偏移应用于源打包数据操作数的第一和第二集中的至少对应一个,并且至少一个数据元素偏移可以否定、消除、取消或以其他方式抵消源打包数据操作数的第一和第二集中每对的数据元素之间的对应的任何缺乏。对源打包数据操作数的第一和第二集中的至少一个应用至少一个数据元素偏移可以使每对的数据元素对应(例如,相同的相对数据元素位置)或使它们在运行单元内的中间或微架构寄存器或电路系统中对齐。在一些实施例中,非对应数据元素位置可以基于由打包数据对齐加计算指令所指示的至少一个数据元素偏移而不同。在单个非零偏移的情况下,非对应数据元素可以相差非零偏移。例如,在图示的示例实施例中,非对应数据元素位置相差三个数据元素位置。例如,B4在说明中可以向左旋转、移位或以其他方式移动或偏移三个数据元素位置(其根据实现可以朝向最低或最高有效位位置)使得它将处于与A1对应的数据元素位置中。在一些实施例中,该三个数据元素位置差异(在该特定示例中)可以等于三个数据元素位置的单个数据元素偏移。在其他实施例中,在两个偏移的情况下,非对应数据元素可以相差两个偏移或基于两个偏移的组合或两个偏移的应用而不同。例如,图示的三个数据元素位置差异(在该特定示例中)可以等于待应用于一个或多个源打包数据操作数的第一集的第一数据元素偏移与待应用于一个或多个源打包数据操作数的第二集的第二数据元素偏移之间的差异。作为示例,在说明中,A1未示出为已被移动,这能够利用待应用于打包数据操作数的第一集的零数据元素偏移和待应用于打包数据操作数的第二集的三个数据元素偏移而执行。在其他实施例中,非对应数据元素位置可以基于正或负数据元素偏移之间的其他差异而不同,例如比如负四与四数据元素位置(即,-4、-3、-2、-1、0、1、2、3、4)之间的差异、负二与二数据元素位置(例如,-2、-1、0、1、2)之间的差异、零与四数据元素位置(即,0、1、2、3、4)之间的差异、零与二数据元素位置(即,0、1、2)之间的差异、零与一数据元素位置之间的差异、负六与六数据元素位置之间的差异、零与六数据元素位置之间的差异等。
在图示的实施例中,示出且描述源和结果操作数的特定示例,但本发明的范围不被如此限制。在图示的示例实施例中,源打包数据操作数的第一集可选地具有至少四个数据元素,源打包数据操作数的第二集可选地具有八个数据元素,并且结果打包数据操作数可选地具有四个数据元素,但在其他实施例中更少或更多的数据元素可以可选地用于这些操作数。作为一个其他说明性示例,源打包数据操作数的第一和第二集中的每个可以可选地具有六十四个数据元素,并且结果打包数据操作数可以可选地具有一半那么多或三十二个数据元素。在其他实施例中,本文公开的数据元素的其他数量也是适合的。而且为了便于说明,结果数据元素在物理上大于源数据元素,但结果数据元素可以具有与源数据元素相同或不同数量的位。此外,源打包数据操作数的第一和第二集的数据元素可以具有相同或不同数量的位。在一些实施例中,结果打包数据操作数可以是对图3-6中任何示出且描述的那些中的任何,包含其变化和备选实施例。
运行单元和/或处理器可以包含具体或特定逻辑(例如,晶体管、集成电路系统或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其他硬件),其操作以执行打包数据对齐加计算指令和/或响应于和/或由于打包数据对齐加计算指令(例如,响应于从打包数据对齐加计算指令解码的一个或多个指令或控制信号)来存储结果。在一些实施例中,运行单元可以包含用来接收源操作数的一个或多个输入结构(例如,端口、互连、接口)、用来在源操作数上执行算术运算的打包数据对齐电路系统或逻辑(例如,移位或旋转电路系统或逻辑)、与之耦合来在对齐的中间操作数上执行算术或逻辑运算并且生成结果操作数的算术或逻辑运算电路系统或逻辑以及与之耦合来输出结果操作数的一个或多个输出结构(例如,端口、互连、接口)。在一些实施例中,运行单元可以包含对图4示出且描述的电路系统或逻辑,或其变化或备选方案,它们是适合的微架构布置的说明性示例,但本发明的范围不被如此限制。在一些实施例中,运行单元可以包含在数字信号处理器的图像处理器单元中并且用来处理图像的像素,但本发明的范围不被如此限制。
为了避免混淆描述,示出且描述相对简单的处理器100。然而,处理器可以可选地包含其他处理器组件。例如,各种不同的实施例可以包含对图7和/或图8-10中的任何示出且描述的组件的各种不同组合和配置。处理器的全部组件可以耦合在一起以允许它们如意图的那样操作。
图2是执行打包数据对齐加计算指令的实施例的方法230的实施例的方块流程图。在各种实施例中,方法可以由处理器、指令处理装置或其他数字逻辑设备执行。在一些实施例中,图2的方法可以由图1的处理器执行和/或在其内执行。本文对于图1的处理器描述的组件、特征和具体可选细节也可选地应用于图2的方法。备选地,图2的方法可以由不同的处理器或装置执行和/或在其内执行。此外,图1的处理器可以执行与图2的那些不同的方法。
方法包含在框231处接收打包数据对齐加计算指令。在各种方面中,指令可以在处理器或其一部分(例如,指令取单元、解码单元、总线接口单元等)处接收。在各种方面中,指令可以从处理器外和/或管芯外源(例如,从处理器、互连等)或从处理器上和/或管芯上源(例如,从指令高速缓存、指令队列等)接收。打包数据对齐加计算指令可以指定或以其他方式指示包含第一多个数据元素的一个或多个源打包数据操作数的第一集、可以指定或以其他方式指示包含第二多个数据元素的一个或多个源打包数据操作数的第二集、可以指定或以其他方式指示至少一个数据元素偏移并且可以指定或以其他方式指示目的地存储位置。
在框232处,结果打包数据操作数可以响应于和/或由于打包数据对齐加计算指令存储在目的地存储位置中。结果打包数据操作数可以包含多个结果数据元素。在一些实施例中,结果数据元素中的每个可以具有利用一对的源打包数据操作数的第一集中的数据元素和源打包数据操作数的第二集中的非对应数据元素执行的运算的值。在一些实施例中,每对的非对应数据元素在源打包数据操作数的第一和第二集中处于非对应数据元素位置中。在一些实施例中,非对应数据元素位置基于由打包数据对齐加计算指令所指示的至少一个数据元素偏移而不同。在一些实施例中,方法可以在图像处理期间的像素滤波期间利用数字信号处理器来执行,但本发明的范围不被如此限制。
图示的方法涉及架构操作(例如,从软件角度可见的那些)。在其他实施例中,方法可以可选地包含一个或多个微架构操作。作为示例,指令可以被乱序取、解码、调度,可以访问源操作数,运行单元可以执行微架构操作来实现指令(例如,基于至少一个偏移使数据元素移位、旋转或以其他方式使其移动)等。
图3是图示可以响应于打包数据对齐加计算指令302的第一示例实施例而执行的打包数据对齐加计算操作348的第一示例实施例的框图。指令包含操作代码或操作码336。操作码可以代表可操作来识别待执行的指令和/或操作(例如,打包数据对齐和具体类型的计算操作(例如,平均、乘法、加法、移位等))的多个位或一个或多个字段。
指令还可选地包含用来指定第一源打包数据操作数312-1的第一源规范字段(SRC1)338和用来指定第二源打包数据操作数312-2的第二源规范字段(SRC2)340。该第一和第二源打包数据操作数代表源打包数据操作数的第一集。指令还可选地包含用来指定第三源打包数据操作数316-1的第三源规范字段(SRC3)342、用来指定第四源打包数据操作数316-2的第四源规范字段(SRC4)344。该第三和第四源打包数据操作数代表源打包数据操作数的第二集。指令还可选地包含用来指定其中待存储结果打包数据操作数320的目的地存储位置的目的地规范字段(DEST)346。
作为示例,源和目的地规范字段中的每个可以包含用来显式指定待存储关联操作数的寄存器的地址、存储器位置或其他存储位置的位(通常但不一定连续)。备选地,在另一个实施例中,规范字段中的任何可以可选地被省略,并且寄存器或其他存储位置可以可选地是隐式的或由指令暗示。例如,在对操作码解码时,它可以是固有的或理解成(尽管未显式表达)对操作数中的一个使用固定寄存器。作为另一个示例,代替具有目的地规范字段,源规范字段中的一个可以代表用来指定源/目的地寄存器的源/目的地规范字段。源打包数据操作数可以初始存储在源/目的地寄存器中,并且然后它可以是隐式的或固有的,以重新使用源/目的地寄存器来以在初始源打包数据操作数之上存储结果打包数据操作数。
指令还指示至少一个数据元素偏移。在图示的示例实施例中,指令具有:第一偏移规范字段322-1,用来指定或以其他方式指示要对应于且待应用于源打包数据操作数(在该实施例中是操作数312-1、312-2)的第一集的第一偏移;和可选第二偏移规范字段322-2,用来指定或以其他方式指示要对应于或待应用于源打包数据操作数(在该实施例中是操作数316-1、316-2)的第二集的可选第二偏移。在一些实施例中,这些偏移规范字段中的每个的位可以指定或以其他方式指示其中存储偏移的值的寄存器(例如,通用寄存器或其他标量寄存器)或其他存储位置。在其他实施例中,这些偏移规范字段中的每个的位可以指定偏移的值,或以其他方式对偏移的值编码或指示它(例如,具有用来在多个预定偏移之间选择的值)。在一些实施例中,指令的立即数可以可选地具有第一以及可选的第二偏移。方法的组合也是适合的。
在图示的示例实施例中,第一偏移指示一个数据元素位置的偏移,并且第二偏移指示两个数据元素位置的偏移,但这只是一个说明性示例。在其他实施例中,第一和第二偏移中的每个可以是-8、-7、-6、-5、-4、-3、-2、-1、0、1、2、3、4、5、7或8数据元素位置中的任何。在其他实施例中可以可选地支持更少或更多的数据元素偏移。在其他实施例中,指令可以具有仅单个偏移规范字段来提供单个偏移。另外,在其他实施例中,一个或多个偏移可以可选地对指令(例如,操作码)是隐式的或固有的并且是不变的或固定的。打包数据对齐加计算指令的其他实施例可以可选地省略所描述的字段中的一些、添加附加字段(例如,添加与特定类型操作关联的字段(例如,用来提供移位量、指示是否执行饱和等))并且可以在指令内不同地重新布置字段。
在说明中,示出合适的源操作数集的示例,但本发明的范围不限于这些特定源操作数。具体地,第一源打包数据操作数312-1(例如,由SRC1指示)具有四个打包数据元素A1-A4,第二源打包数据操作数312-2(例如,由SRC2指示)具有四个打包数据元素A5-A8。类似地,第三源打包数据操作数316-1(例如,由SRC3指示)具有四个打包数据元素B1-B4,并且第四源打包数据操作数316-2(例如,由SRC4指示)具有四个打包数据元素B5-B8。在其他实施例中,源打包数据操作数可以可选地包含不同数量的打包数据元素。通常,每个源打包数据操作数中数据元素的数量可以等于源打包数据操作数的位中的大小除以单个数据元素的位中的大小。在各种实施例中,每个源打包数据操作数可以是64位、128位、256位、512位或1024位,但本发明的范围不被如此限制。在各种实施例中,每个数据元素可以是8位、16位、32位或64位,但本发明的范围不被如此限制。在各种实施例中,在操作数中的每个中可以存在四个、八个、十六个、三十二个或六十四个数据元素,但本发明的范围不被如此限制。不要求操作数具有相同数量的数据元素。通常,操作数中数据元素的数量是2的幂的数,但并不要求这样。
在图示的示例实施例中,最低有效数据元素在左边,并且最高有效数据元素在右边,但相反布置也是可能的。操作数312-1、312-2的第一集中和操作数316-1、316-2的第二集中处于相同的相对数据元素位置中的数据元素处于对应位置中和/或是对应数据元素。例如,A1和B1是对应数据元素,A2和B2是对应数据元素,依此类推。相比之下,A2和B3处于非对应数据元素位置中和/或A2和B3是非对应数据元素。此外,第一和第二源打包数据操作数可以逻辑级联或以其他方式一起考虑,使得A5和B5相对应但A5和B1不对应,使得A7和B7相对应但A7和B3不对应,依此类推。
打包数据对齐加计算操作348可以响应于打包数据对齐加计算指令302的实施例而执行。这可以包含从源操作数关联的寄存器或其他存储位置检索或以其他方式接收源操作数,并且将它们提供给运行单元306。由指令所指示的至少一个偏移(在该实施例中是第一偏移和可选的第二偏移)也可以提供给运行单元。运行单元响应于打包数据对齐加计算指令可以操作以生成结果打包数据操作数320并且将其存储在目的地存储位置(例如,由DEST指示)中。结果打包数据操作数可以包含多个结果数据元素。在图示的示例实施例中,结果打包数据操作数具有四个结果数据元素,但其他实施例可以具有比四个更少或更多的结果数据元素。在一些实施例中,结果数据元素中的每个可以具有利用至少一对的源打包数据操作数(例如,操作数312-1、312-2)的第一集中的数据元素和源打包数据操作数(例如,操作数316-1、316-2)的第二集中的非对应数据元素执行的运算(OP)的值,其中每对的非对应数据元素在源打包数据操作数的第一和第二集中处于非对应数据元素位置中。例如,在图示的示例实施例中,第一结果数据元素可以具有在A2和B3上执行的运算(OP)的值,第二结果数据元素可以具有在A3和B4上执行的运算(OP)的值,第三结果数据元素可以具有在A4和B5上执行的运算(OP)的值,并且第四结果数据元素可以具有在A5和B6上执行的运算(OP)的值。
在一些实施例中,每对的非对应数据元素可以在源打包数据操作数的第一和第二集中的非对应数据元素位置中,其基于由指令所指示的至少一个数据元素偏移(例如,第一偏移322-1和第二偏移322-2)而不同。非对应数据元素位置可以是这样的,以致于运行单元操作以响应于打包数据对齐加计算指令向源操作数应用第一和第二偏移,并且在打包数据对齐加计算指令的执行限度内,将非对应数据元素带入对应数据元素位置中。例如,B3可以通过将一个数据元素位置的第一偏移322-1应用于第一和第二源打包数据操作数(例如,其逻辑级联)并且通过将两个数据元素位置的第二偏移322-2应用于第三和第四源打包数据操作数(例如,其逻辑级联)而偏移或以其他方式移入相对于A2的对应数据元素位置中(例如移入相同的相对数据元素位位置中)。在图示的示例实施例中,第一偏移是一个数据元素位置,并且第二偏移是两个数据元素位置,因此应用第一和第二偏移共同使数据元素的相对位置偏移或移动了一个数据元素位置。两个偏移共同操作以在运行单元内使A2和B3成为对应数据元素、使A3和B4成为对应数据元素、使A5和B6成为对应数据元素依此类推。数据元素偏移在不同实施例中可以采用不同方式应用,例如比如作为移位、作为旋转、作为移位合并运算等。注意B2和B3(及类似物)通常将不是架构上可见的打包数据寄存器内的对应数据元素,而相反一旦从打包数据寄存器访问则将被带入内部电路系统和/或运行单元内部内的暂时/中间非架构可见寄存器内的对应数据元素。
运行单元可以操作以在对齐的数据元素上执行各种各样的不同类型的运算(OP)的任何。本发明的范围不限于任何已知的特定类型的这样的运算(OP)。适合类型的运算的示例包含但不限于算术运算(例如,加法、减法、乘法、除法、乘加、乘累加、点积等)、逻辑运算(例如,移位、旋转、逻辑AND、逻辑OR、逻辑XOR、逻辑AND NOT等)、其他运算(例如,比较运算、平方根、反平方根、位计数、位倒置、饱和半宽(saturate to half width)等)及其组合。在一些实施例中,运行单元可以仅在处于相同的相对数据元素位置中的对应数据元素上执行“垂直”SIMD计算操作(例如,利用“垂直”SIMD通道(lane)或运行单元的部分),但本发明的范围不被如此限制。例如,运行单元可以仅在源操作数的第一和第二集中的对应数据元素上执行打包加法、打包减法、打包乘法、打包除法、打包平均、打包饱和半宽、打包平方根、打包反平方根、打包移位、打包旋转、打包逻辑AND、打包逻辑OR、打包逻辑XOR、打包逻辑ANDNOT、打包比较或类似物。
在一些实施例中,运行单元可以执行垂直和非垂直SIMD计算操作的组合,其涉及对应数据元素和非对应数据元素的组合。作为一个示例,运行单元可以执行复数乘法运算,其涉及使对应和非对应数据元素的两种积相加。这样的更详尽的垂直加非垂直SIMD运算的各种其他示例也是合适的。在任何情况下,数据元素已对齐到执行单元预期或对它们设计所处的意图的位置以便在预期的数据元素集上执行运算。有利地,对齐操作可以允许重新使用或利用各种各样的不同类型的现有垂直和/或垂直和非垂直SIMD运行单元或逻辑而不需要执行单独的打包数据对齐指令(例如,移位合并指令)来实现相同打包数据对齐。在特定示例实施例中,运算可以是乘法、加法、平均和乘累加中的一个,但本发明的范围不被如此限制。
图4是操作以执行打包数据对齐加计算操作的实施例的运行单元的示例实施例的框图。运行单元可以用来执行本文描述的不同操作(例如,图3和5-6的那些)。运行单元包含第一对齐单元460和第二对齐单元467。运行单元还包含垂直SIMD计算单元466。
第一对齐单元耦合以接收一个或多个源打包数据操作数的第一集,一个或多个源打包数据操作数在图示的实施例中包含第一源打包数据操作数412-1和第二源打包数据操作数412-2。第一对齐单元包含第一级联和旋转单元CR1、第二级联和旋转单元CR2以及第三级联和旋转单元CR3。CR1操作以执行朝零数据元素位置的最低有效位位置的右旋(尽管在说明中示出向左)并且输出零数据元素偏移中间操作数461-0。因为旋转了零数据元素位置,CR1单元可以可选地被更简单的级联单元替代。CR2操作以执行朝一个数据元素位置的最低有效位位置的右旋并且输出一个数据元素偏移中间操作数461-1。CR2操作以执行朝两个数据元素位置的最低有效位位置的右旋并且输出两个数据元素偏移中间操作数461-2。中间操作数461中的每个可以作为输入提供给第一乘法器(MUX)或其他选择器单元464。在其他实施例中,可以可选地支持附加和/或不同数量的数据元素位置。例如,在一个备用实施例中,可以可选地生成五个或九个不同数据元素偏移中间操作数并且将其输入到选择器单元。而且,在其他实施例中,可以可选地使用移位来代替旋转。由指令所指示的第一数据元素偏移422-1可以输入到选择器单元464并且可以用来选择输入中的一个。在该示例实施例中,第一数据元素偏移是一个数据元素位置,因此可以选择一个数据元素偏移中间操作数461-1并且将其作为第一选择的操作数465而输出。
第二对齐单元467耦合以接收一个或多个源打包数据操作数的第二集,一个或多个源打包数据操作数在图示的实施例中包含第三源打包数据操作数416-1和第四源打包数据操作数416-2。第二对齐单元包含第四级联和旋转单元CR4、第五级联和旋转单元CR5以及第六级联和旋转单元CR6。CR4操作以执行朝零数据元素位置的最低有效位位置的右旋(尽管在说明中示出向左)并且输出零数据元素偏移中间操作数468-0。因为旋转了零数据元素位置,CR4单元可以可选地被更简单的级联单元替代。CR5操作以执行朝一个数据元素位置的最低有效位位置的右旋并且输出一个数据元素偏移中间操作数468-1。CR6操作以执行朝两个数据元素位置的最低有效位位置的右旋并且输出两个数据元素偏移中间操作数468-2。中间操作数468中的每个可以作为输入提供给第二乘法器(MUX)或其他选择器单元469。在其他实施例中,可以可选地支持附加和/或不同数量的数据元素位置。例如,在一个备用实施例中,可以可选地生成五个或九个不同数据元素偏移中间操作数并且将其输入到选择器单元。而且,在其他实施例中,可以可选地使用移位来代替旋转。由指令所指示的第二数据元素偏移422-2可以输入到第二选择器单元469并且可以用来选择输入中的一个。在该示例实施例中,第二数据元素偏移是两个数据元素位置,因此可以选择两个数据元素偏移中间操作数461-2并且将其作为第二选择的操作数470而输出。
第一选择的操作数465和第二选择的操作数470都可以输入到垂直SIMD计算单元466(例如,SIMD加法单元、SIMD乘法单元等)。垂直SIMD计算单元可以操作以在第一和第二选择的操作数的对应数据元素上执行垂直SIMD计算操作。之前描述的运算类型中的任何是适合的,例如比如打包加法、乘法、平均、除法或本文描述的其他运算。垂直SIMD计算单元可以输出并且存储结果打包数据操作数420。在图示的示例实施例中,因为第一偏移是一个数据元素位置,并且第二偏移是两个数据元素位置,结果打包数据操作数可以具有带有在A2和B3上执行的运算的值的第一结果数据元素、带有在A3和B4上执行的运算的值的第二结果数据元素、带有在A4和B5上执行的运算的值的第三结果数据元素以及带有在A5和B6上执行的运算的值的第四结果数据元素。
这只是适合的运行单元的一个说明性示例。在其他实施例中,第一和第二对齐单元相反可以基于对应偏移而不是多个移位操作和选择操作来执行移位合并型操作。在还有其他实施例中,单个可变移位或旋转单元可以基于偏移而不是创建多个可能性且选择它们中的一个来使操作数移位或旋转。此外,在其他实施例中,如果仅要使用单个数据元素偏移,则可以可选地包含第一和第二对齐单元中的仅一个。
图5是图示可以响应于打包数据对齐加计算指令502的第二示例实施例执行的打包数据对齐加计算操作548的第二示例实施例的框图。图5的指令和操作具有与图3的指令和操作的某些类似性。为了避免混淆描述,将主要描述图5的指令和操作的不同和/或附加特性而不重复所有关于图3的指令和操作的可选类似或共同特性、细节、变化和备选方案。然而,要领会,之前描述的图3的指令和操作的特性、细节、变化和备选方案也可以可选地应用于图5的指令和操作,除非另外规定或显而易见。
指令502包含操作码536、用来指定第一源打包数据操作数512的第一源规范字段(SRC1)538、用来指定第二源打包数据操作数516-1的第二源规范字段(SRC2)540以及用来指定第三源打包数据操作数516-2的第三源规范字段(SRC3)542。在该实施例中,与图3的实施例中的两个源打包数据操作数相比之下,第一源打包数据操作数512是仅单个源打包数据操作数的第一集。第二和第三源打包数据操作数516代表两个源打包数据操作数的第二集。指令还可选地包含用来指定其中待存储结果打包数据操作数520的目的地存储位置的目的地规范字段(DEST)546。这些字段和操作数中的每个可以具有之前描述的特性、细节、变化和备选方案。
在该实施例中,与图3的实施例中的两个数据元素偏移相比之下,指令还仅指示单个数据元素偏移。指令具有用来指定或以其他方式指示要对应于且待应用于源打包数据操作数(在该实施例中是操作数516-1、516-2)的第二集的单个偏移的单个偏移规范字段522。数据元素偏移和它的规范字段可以具有之前描述的特性、细节、变化和备选方案。存在各种情形,其中执行仅在第二和第三源打包数据操作数与第一源打包数据操作数之间的相对偏移而不使第一源打包数据操作数的数据元素偏移或移动,这是有用的。单个数据元素偏移足以实现这个。而且,仅应用单个数据元素偏移可以有助于减少运行单元的复杂性,例如比如通过消除对齐单元中的一个(例如,消除图4中的第一对齐单元)。在图示的示例实施例中,单个偏移指示三个数据元素位置的偏移,但这只是一个说明性示例。在其他实施例中,单个偏移可以是-4至4、0至4、-2至2、0至2或一些其他数量的数据元素位置中的任一个,这取决于特定实现。与之前一样,偏移可以指定为数据元素数量、位数量、移位量、旋转量或类似物。备选地,在其他实施例中,如果预期的话,可以可选地使用第二数据元素偏移。在备选实施例中,可以可选地使用固定偏移来代替偏移规范字段,并且可以对操作码是隐式的,如之前描述的。
在图示的实施例中,一个或多个源打包数据操作数的第一集具有仅单个第一源打包数据操作数512(例如,由SRC1指示),其在该示例实施例中具有四个打包数据元素A1-A4。第二源打包数据操作数516-1(例如,由SRC2指示)具有四个打包数据元素B1-B4,并且第三源打包数据操作数516-2(例如,由SRC3指示)具有四个打包数据元素B5-B8。因为在图示的示例实施例中仅第二和第三源打包数据元素要偏移,不存在用于附加数据元素的需要来替代或替换由于如由图3中的数据元素A5所示出的那样使第一源打包数据操作数偏移而引起的失去的数据元素。其他数量的数据元素相反可以如之前描述的那样使用。另外,在图示的实施例中,源打包数据操作数的第二集具有第二和第三源打包数据操作数,但在另一个实施例中,相反可以可选地使用具有比第一源打包数据操作数要多的数据元素(例如,根据所支持的偏移量而多达两倍或至少多一个)的单个源打包数据操作数。
第一源打包数据操作数512以及第二和第三源打包数据操作数516-1、516-2的第二集中处于相同的相对数据元素位置中的数据元素处于对应位置中和/或是对应数据元素。例如,A1和B1相对应,A4和B4相对应,依此类推。相比之下,A1和B4处于非对应数据元素位置中和/或A1和B4是源操作数中的非对应数据元素。此外,第一和第二源打包数据操作数可以逻辑级联或以其他方式一起考虑使得A1和B5不对应。
打包数据对齐加计算操作548的第二实施例可以响应于打包数据对齐加计算指令502的第二实施例而执行。运行单元响应于打包数据对齐加计算指令可以操作以生成结果打包数据操作数520并且将其存储在目的地存储位置中。在图示的示例实施例中,结果打包数据操作数具有四个结果数据元素,但其他实施例可具有比四个更少或更多的结果数据元素。在一些实施例中,结果数据元素中的每个可以具有利用至少一对的源打包数据操作数(例如,单个源打包数据操作数512)的第一集中的数据元素和源打包数据操作数(例如,第二和第三源打包数据操作数516-1、516-2)的第二集中的非对应数据元素执行的运算(OP)的值。每对的非对应数据元素在第一源打包数据操作数以及第二和第三打包数据操作数中可以处于非对应数据元素位置中。例如,在图示的示例实施例中,第一结果数据元素可以具有在A1和B4上执行的运算(OP)的值,第二结果数据元素可以具有在A2和B5上执行的运算(OP)的值,第三结果数据元素可以具有在A3和B6上执行的运算(OP)的值,并且第四结果数据元素可以具有在A4和B7上执行的运算(OP)的值。这只是一个说明性示例。
如与之前一样,在一些实施例中,每对的非对应数据元素在源打包数据操作数中可以处于非对应数据元素位置,其基于单个数据元素偏移而不同。非对应数据元素位置可以是这样的,以致于运行单元操作以响应于打包数据对齐加计算指令将单个数据元素偏移应用于第二和第三源打包数据操作数,并且在打包数据对齐加计算指令的执行限度内,将非对应数据元素带入对应数据元素位置中。例如,B4可以偏移或以其他方式移动了三个数据元素位置使得它通过向第二和第三源打包数据操作数(例如,其逻辑级联)应用单个数据元素偏移522而对应于A1(例如,具有相同的相对数据元素位置)。运行单元可以操作以如之前描述的那样在对齐的数据元素上执行各种不同类型的运算(OP)中的任何。在一些实施例中,运行单元可以仅在对应数据元素上执行“垂直”SIMD计算操作。在其他实施例中,运行单元可以执行垂直和非垂直SIMD计算操作的组合,其涉及对应数据元素和非对应数据元素的组合。
图6是图示可以响应于打包数据对齐加计算指令602的第三示例实施例而执行的打包数据对齐加计算操作648的第三示例实施例的框图。图6的指令和操作具有与图3的指令和操作的某些类似性。为了避免混淆描述,将主要描述图6的指令和操作的不同和/或附加特性,而不重复关于图3的指令和操作的所有可选的类似或共同特性、细节、变化和备选方案。然而,要领会,之前描述的图3的指令和操作的特性、细节、变化和备选方案也可以可选地应用于图6的指令和操作,除非另外规定或显而易见。
指令602包含操作码636、用来指定第一源打包数据操作数612的第一源规范字段(SRC1)638和用来指定第二源打包数据操作数616的第二源规范字段(SRC2)640。在该实施例中,第一源打包数据操作数612代表仅单个源打包数据操作数的第一集。同样,第二源打包数据操作数616代表仅单个源打包数据操作数的第二集。指令还可选地包含用来指定结果打包数据操作数620要存储的目的地存储位置的目的地规范字段(DEST)646。这些字段和操作数中的每个可以具有之前描述的特性、细节、变化和备选方案。
在该实施例中,指令还指示第一数据元素偏移622-1和第二数据元素偏移622-2。第一数据元素偏移要对应于且待应用于第一源打包数据操作数612并且第二数据元素偏移要对应于且待应用于第二源打包数据操作数616。在其他实施例中,如果预期的话则可以仅使用单个数据元素偏移(例如,如联合图5描述的)。数据元素偏移以及它们的规范字段可以具有之前描述的特性、细节、变化和备选方案。在图示的示例实施例中,第一数据元素偏移指示零数据元素位置的偏移,并且第二数据元素偏移是三个数据元素位置的偏移,但这只是一个说明性示例。在其他实施例中,数据元素偏移中的每个(彼此独立)可以是-4至4、0至4、-2至2、0至2中的任一个或一些其他数量的数据元素位置(例如,如果存在更多数据元素则也可以使用更大数量的偏移),这取决于特定实现。如与之前一样,每个数据元素偏移可以指定为数据元素数量、位数量、位或数据元素中的移位量、位或数据元素中的旋转量或类似物。
在图示的示例实施例中,第一源打包数据操作数612(例如,由SRC1指示)具有八个打包数据元素A1-A8。第二源打包数据操作数616(例如,由SRC2指示)具有八个打包数据元素B1-B8。在其他实施例中,相反可以可选地使用其他数量的数据元素。在第一源打包数据操作数612和第二源打包数据操作数616中处于相同的相对数据元素位置中的数据元素处于对应位置中和/或是对应数据元素。例如,A1和B1相对应,A7和B7相对应,依此类推。相比之下,A1和B4处于非对应数据元素位置中和/或A1和B4是源操作数中的非对应数据元素。在图示的实施例中,源操作数中的每个具有比结果打包数据操作数更多的数据元素(例如,在该示例中是两倍那样多的数据元素)。
打包数据对齐加计算操作648的第三实施例可以响应于打包数据对齐加计算指令602的第三实施例而执行。运行单元响应于打包数据对齐加计算指令可以操作以生成结果打包数据操作数620并且将其存储在目的地存储位置中。在图示的示例实施例中,结果打包数据操作数具有四个结果数据元素,但其他实施例可以具有比四个更少或更多的结果数据元素。在一些实施例中,结果数据元素中的每个可以具有利用至少一对的第一源打包数据操作数612中的数据元素和第二源打包数据操作数616中的非对应数据元素执行的运算(OP)的值。每对的非对应数据元素在第一和第二源打包数据操作数中可以处于非对应数据元素位置中。例如,在图示的示例实施例中,第一结果数据元素可以具有在A1和B4上执行的运算(OP)的值,第二结果数据元素可以具有在A2和B5上执行的运算(OP)的值,第三结果数据元素可以具有在A3和B6上执行的运算(OP)的值,并且第四结果数据元素可以具有在A4和B7上执行的运算(OP)的值。这只是一个说明性示例。在其他说明性示例中,第一偏移相反可以是一个、三个(例如,与第二偏移相同)、四个、十个等。
如与之前一样,在一些实施例中,每对的非对应数据元素在第一和第二源打包数据操作数中可以处于非对应数据元素位置中,其中非对应位置基于应用第一和第二数据元素偏移而不同。非对应数据元素位置可以是这样的,以致于运行单元操作以分别将第一和第二数据元素偏移应用于第一和第二源打包数据操作数以使非对应数据元素对应。例如,B4可以偏移或以其他方式移动了三个数据元素位置使得它对应于A1(例如,具有相同的相对数据元素位置)。运行单元可以操作以如之前描述的那样在对齐的数据元素上执行各种不同类型的运算(OP)中的任何。在一些实施例中,运行单元可以仅在对应数据元素上执行“垂直”SIMD计算操作。在其他实施例中,运行单元可以执行垂直和非垂直SIMD计算操作的组合,其涉及对应数据元素和非对应数据元素的组合。
在一些实施例中,本文公开的指令可以在图像处理的图像滤波中使用,但本发明的范围不被如此限制。在滤波中,非常常见的是,从给定输入像素以及与该给定输入像素相邻的一个或多个像素计算结果滤波像素。作为示例,一行像素中的给定像素可以利用在该给定像素的两侧上的邻近的相邻像素滤波(例如,利用归一化卷积1、2、1系数滤波器)。在SIMD向量处理器中实现滤波器传统上使用数据的反复对齐来完成,每次后跟SIMD运算。在成像和视觉中,这样的滤波器采用大小为3x3、5x5、7x7等二维(2D)形式大量使用,其分别可涉及九个、二十五个和四十九个对齐操作,每个潜在地是单独的打包数据对齐指令(除非使用本文公开的指令)。尤其当在嵌入式数字信号处理器或其他通常资源约束环境中实现时,周期中执行额外对齐操作的成本和/或存储对齐指令的中间结果所需要的额外寄存器空间可明显影响整体效率。
在上文描述的许多实施例中,示出且描述一个或多个源打包数据操作的不同集(例如,图1中的集112和116)。在一些使用和实现中,相同数据(例如,一个或多个源打包数据操作数的一个单集中)可以用于操作。实现此的一个方式是对一个或多个源打包数据操作数的两个集指定相同的寄存器或其他存储位置。例如,指令可以对集112指定一对寄存器R1和R2并且还可以对集116指定寄存器R1和R2。备选地,一个或多个打包数据操作数的单个集(例如,集112)可以由指令指定(例如,可以指定寄存器R1和R2)并且它可以是隐式的或由指令(例如,其操作码)暗示以便对源打包数据操作数112、116的第一和第二集使用源打包数据操作数112的单个集。指令可以省略额外源规范字段(例如,SRC2、SRC3)。在一些实施例中,所有源操作数的数据元素可以可选地全部是图像的相同行像素中的像素。例如,在图像处理中的像素滤波中以便对像素与其邻域求平均(例如,为了实现利用滤波系数1、2、1实现像素的归一化卷积),以及在各种其他应用中,能够随着应用于每个副本或复制品的不同偏移(例如,在利用滤波系数1、2、1对像素归一化卷积的情况下应用于三个复制品的零、一和两个数据元素偏移)而使源打包数据操作数的相同集的不同副本或复制品偏移多次,这通常是有用的。因此,上文公开的那些的备选实施例可以指示仅一个或多个源打包数据操作数的单个集(例如,112)并且隐式或固有地重新使用那个指示的集(例如,代替显式集116)的副本或复制品。
图7是适合于实现本发明的实施例的处理器700的详细示例实施例的框图。该处理器包含至少一个核780,其能够执行打包数据对齐加计算指令的实施例。核包含分支预测单元781,其用来预测程序流中的分支。分支预测单元与指令预取单元782耦合。指令预取单元可以从存储器(例如,通过存储器单元790)预取或以其他方式接收指令,其包含打包数据对齐加计算指令。等级1(L1)指令高速缓存783与指令预取单元耦合。L1指令高速缓存可以缓存(cache)或以其他方式存储指令,其包含打包数据对齐加计算指令。处理器还包含L1数据高速缓存791,其用来缓存或以其他方式存储数据,其包含指令的数据元素和/或操作数。处理器还可选地包含等级2(L2)高速缓存792。L2高速缓存可以专用于核,或被核和一个或多个其他可选核(未示出)共享。L2高速缓存可以存储数据和指令,其包含打包数据对齐加计算指令。指令取单元784与L1指令高速缓存、L2高速缓存和解码单元704耦合。指令取单元可以取或以其他方式接收指令,其包含打包数据对齐加计算指令(例如,来自L1指令高速缓存或L2高速缓存),并且可以向解码单元提供指令。解码单元可以对指令解码,该指令包含打包数据对齐加计算指令,如在本文在别处描述的。
处理器还包含一个或多个寄存器堆单元788。该寄存器堆单元可以包含各种不同类型的寄存器,例如比如打包数据寄存器、通用寄存器、状态或标志寄存器、控制或配置寄存器等。在其中核可选地支持乱序(OOO)运行的实施例中,核也可以可选地包含与寄存器堆单元耦合以便分配资源并且在寄存器(例如,与打包数据对齐加计算指令关联的打包数据寄存器)上执行寄存器重命名的寄存器重命名/分配器单元785。此外,对于OOO运行,核可以可选地包含与解码单元、重命名/分配器单元和一个或多个运行单元706、789耦合的一个或多个调度器单元786。调度器单元可以调度与解码指令关联的一个或多个操作,其包含从打包数据对齐加计算指令解码的一个或多个操作,以供在运行单元上运行。核可以可选地具有多个不同类型的运行单元,例如比如整数运行单元、浮点运行单元、向量运行单元、一个或多个存储器访问单元789及类似物。对于OOO运行,核可以可选地包含与运行单元、寄存器堆单元和重命名/分配器单元耦合的引退或提交单元787。引退或提交单元可以操作以引退或提交指令。
要领会,这只是适合的处理器的一个说明性示例。在备选实施例中,处理器可以包含更少或更多的组件。可以可选地包含的其他组件的示例是一个或多个指令和/或数据翻译后备缓冲器(TLB)、一个或多个重排序缓冲器(ROB)、保留站、地址生成单元、调试单元、性能监测单元、功率管理单元。此外,处理器可以可选地具有多个核(例如,至少两个、至少四个、至少八个、至少三十个等)。在一些情况下,全部的核可以具有与核780相同的组件并且支持与核780相同的指令集。备选地,核中的至少一些可以具有不同组件和/或可以支持不同指令集。
示范性核架构、处理器和计算机架构
处理器核可以为了不同目的采用不同方式以及在不同处理器中实现。例如,这样的核的实现可以包含:1)意图用于通用计算的通用有序核;2)意图用于通用计算的高性能通用乱序核;3)主要意图用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可以包含:1)CPU,其包含意图用于通用计算的一个或多个通用有序核和/或意图用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包含主要意图用于图形和/或科学(吞吐量)的一个或多个专用核。这样的不同处理器导致不同的计算机系统架构,其可以包含:1)来自CPU的单独芯片上的协处理器;2)处于与CPU相同的封装中的单独管芯上的协处理器;3)处于与CPU相同的管芯上的协处理器(在所述情况下,这样的协处理器有时称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或称为专用核);以及4)芯片上系统,其在相同管芯可以包含所描述的CPU(有时称为专用核或专用处理器)、上文描述的协处理器以及附加功能性。接着描述示例核架构,后跟示范性处理器和计算机架构的描述。
示范性核架构
有序和乱序核框图
图8A是图示根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、乱序发出/运行流水线的框图。图8B是图示根据本发明的实施例在处理器中要包含的有序架构核的示范性实施例和示范性寄存器重命名、乱序发出/运行架构核两者的框图。图8A-B中的虚线框图示有序流水线和有序核,而虚线框的可选附加图示寄存器重命名、乱序发出/运行流水线和核。给定有序方面是乱序方面的子集,将描述乱序方面。
在图8A中,处理器流水线800包含取级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为调派或发出)级812、寄存器读取/存储器读取级814、运行级816、写回/存储器写入级818、异常处理级822和提交级824。
图8B示出处理器核890,其包含耦合于运行引擎单元850的前端单元830,并且这两者都耦合于存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选核类型。作为又一个选项,核890可以是专用核,例如比如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核或类似物。
前端单元830包含分支预测单元832,其耦合于指令高速缓存单元834,该指令高速缓存单元834耦合于指令翻译后备缓冲器(TLB)836,其耦合于指令取单元838,该指令取单元838耦合于解码单元840。解码单元840(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,其从原始指令解码或以其他方式反映原始指令或从原始指令得到。解码单元840可以使用各种不同机制实现。适合机制的示例包含但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包含微代码ROM或存储对于某些宏指令的微代码(例如,在解码单元840中或以其他方式在前端单元830内)的其他媒介。解码单元840耦合于运行引擎单元850中的重命名/分配器单元852。
运行引擎单元850包含重命名/分配器单元852,其耦合于引退单元854和一个或多个调度器单元856的集。调度器单元856代表任何数量的不同调度器,其包含保留站、中央指令窗口等。调度器单元856耦合于物理寄存器堆单元858。物理寄存器堆单元858中的每个代表一个或多个物理寄存器堆,其中的不同物理寄存器堆存储一个或多个不同数据类型,例如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,指令指针,其是要运行的下一个指令的地址)等。在一个实施例中,物理寄存器堆单元858包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器堆单元858被引退单元854叠覆来图示可以实现寄存器重命名和乱序运行所采用的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来堆、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池;等)。引退单元854和物理寄存器堆单元858耦合于运行集群860。运行集群860包含一个或多个运行单元862的集和一个或多个存储器访问单元864的集。运行单元862可以在各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)上执行各种运算(例如,移位、加法、减法、乘法)。尽管一些实施例可以包含专用于特定功能或功能集的许多运行单元,其他实施例可以包含仅一个运行单元或多个运行单元,其全部执行所有功能。因为某些实施例对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,每个具有它们自身的调度器单元、物理寄存器堆单元和/或运行集群-并且在单独存储器访问流水线的情况下,实现其中仅该流水线的运行集群具有存储器访问单元864的某些实施例),调度器单元856、物理寄存器堆单元858和运行集群860示出为可能是复数的。还应理解,在使用单独流水线的情况下,这些流水线中的一个或多个可以是乱序发出/运行并且余下的是有序的。
存储器访问单元864的集耦合于存储器单元870,其包含耦合于数据高速缓存单元874的数据TLB单元872,该数据高速缓存单元874耦合于等级2(L2)高速缓存单元876。在一个示范性实施例中,存储器访问单元864可以包含负载单元、存储地址单元和存储数据单元,其中的每个耦合于存储器单元870中的数据TLB单元872。指令高速缓存单元834进一步耦合于存储器单元870中的等级2(L2)高速缓存单元876。L2高速缓存单元876耦合于一个或多个其他等级的高速缓存并且最终耦合于主存储器。
作为示例,示范性寄存器重命名乱序发出/运行核架构可以如下实现流水线800:1)指令取838执行取和长度解码级802和804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)调度器单元856执行调度级812;5)物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取级814;运行集群860执行运行级816;6)存储器单元870和物理寄存器堆单元858执行写回/存储器写入级818;7)在异常处理级822中可以涉及各种单元;以及8)引退单元854和物理寄存器堆单元858执行提交级824。
核890可以支持一个或多个指令集(例如,x86指令集(具有添加有较新版本的一些扩展);加利福尼亚州Sunnyvale市的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale市的ARM Holdings的ARM指令集(具有可选的附加扩展,例如NEON)),其包含本文描述的指令。在一个实施例中,核890包含支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作使用打包数据来执行。
应理解,核可以支持多线程(multithreading)(运行两个或以上并行操作或线程集),并且可以采用多种方式这样做,其包含时间分片多线程、同时多线程(在单个物理核对线程中的每个提供逻辑核的情况下,那个物理核正在同时多线程)或其组合(例如,时间分片取和解码以及之后的同时多线程,例如在Intel® Hyperthreading技术中)。
尽管在乱序运行的上下文中描述寄存器重命名,应理解寄存器重命名可以在有序架构中使用。尽管处理器的图示实施例还包含单独指令和数据高速缓存单元834/874和共享L2高速缓存单元876,备选实施例可以对于指令和数据两者都具有单个内部高速缓存,例如比如等级1(L1)内部高速缓存,或多级内部高速缓存。在一些实施例中,系统可以包含内部高速缓存以及核和/或处理器外部的外部高速缓存的组合。备选地,所有高速缓存可以在核和/或处理器外部。
特定示范性有序核架构
图9A-B图示更特定的示范性有序核架构的框图,所述核将是芯片中的若干逻辑块(其包含相同类型和/或不同类型的其他核)中的一个。逻辑块根据应用通过具有一些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑的高带宽互连网络(例如,环形网络)来通信。
图9A是根据本发明的实施例的单个处理器核连同它到管芯上互连网络902的连接以及它的等级2(L2)高速缓存904的本地子集的框图。在一个实施例中,指令解码器900支持具有打包数据指令集扩展的x86指令集。L1高速缓存906允许对高速缓存存储器的低等待访问进入标量和向量单元中。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用单独寄存器集(分别是标量寄存器912和向量寄存器914)并且在它们之间传输的数据被写入到存储器并且然后从等级1(L1)高速缓存906读回,本发明的备选实施例可以使用不同的方法(例如,使用单个寄存器集或包含通信路径,其允许数据在两个寄存器堆之间传输而不被写回和读回)。
L2高速缓存904的本地子集是全局L2高速缓存的部分,其分成单独本地子集,每个处理器核一个。每个处理器核具有到它自己的L2高速缓存904的本地子集的直接访问路径。由处理器核读取的数据存储在它的L2高速缓存子集904中并且能够与其他处理器核访问它们自己的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据存储在它自己的L2高速缓存子集904中并且如果必要的话则从其他子集刷新。环形网络对共享数据确保一致性。环形网络是双向的,以允许例如处理器核、L2高速缓存和其他逻辑块的代理在芯片内彼此通信。每个环形数据路径每个方向是1012位宽。
图9B是根据本发明的实施例的图9A中的处理器核的部分的展开图。图9B包含L1高速缓存904的L1数据高速缓存906A部分,以及关于向量单元910和向量寄存器914的更多细节。具体地,向量单元910是16宽向量处理单元(VPU)(参见16宽ALU 928),其运行整数、单精度浮动和双精度浮动指令中的一个或多个。VPU支持利用混合(swizzle)单元920混合寄存器输入、利用数值转换单元922A-B的数值转换以及在存储器输入上利用复制单元924的复制。写入掩码寄存器926允许断定(predicating)所得的向量写入。
具有集成存储器控制器和图形的处理器
图10是根据实施例可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器1000的框图。图10中的实线框图示处理器1000,其具有单核1002A、系统代理1010、一个或多个总线控制器单元1016的集,而虚线框的可选添加图示备选处理器1000,其具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元1014的集和专用逻辑1008。
因而,处理器1000的不同实现可以包含:1)CPU,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可以包含一个或多个核),并且核1002A-N是一个或多个通用核(例如,通用有序核、通用乱序核、两者的组合);2)协处理器,其中核1002A-N是主要意图用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1002A-N是大量通用有序核。因而,处理器1000可以是通用处理器、协处理器或专用处理器,例如比如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的许多集成核(MIC)协处理器(其包含30个或以上的核)、嵌入式处理器或类似物。处理器可以在一个或多个芯片上实现。处理器1000可以是一个或多个衬底的一部分和/或可以在一个或多个衬底上使用许多工艺技术中的任何(例如BiCMOS、CMOS或NMOS)来实现。
存储器层级包han 在核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1006的集和耦合于集成存储器控制器单元1014的集的外部存储器(未示出)。共享高速缓存单元1006的集可以包含一个或多个中间级别的高速缓存,例如等级2(L2)、等级3(L3)、等级4(L4)或其他等级的高速缓存、最后等级的高速缓存(LLC)和/或其组合。尽管在一个实施例中基于环的互连单元1012使集成图形逻辑1008、共享高速缓存单元1006的集和系统代理单元1010/集成存储器控制器单元1014互连,备选实施例可以使用任何数量的众所周知的技术用于互连这样的单元。在一个实施例中,维持一个或多个高速缓存单元1006与核1002-A-N之间的一致性。
在一些实施例中,核1002A-N中的一个或多个能够多线程。系统代理1010包含协调并且操作核1002A-N的那些组件。系统代理单元1010可包含例如功率控制单元(PCU)和显示单元。PCU可以是或包含用于调节核1002A-N和集成图形逻辑1008的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N从架构指令集方面来看可以是同构或异构的;即,核1002A-N中的两个或多个可以能够运行相同指令集,而其他可以能够运行仅那个指令集的子集或不同指令集。
示范性计算机架构
图11-21是示范性计算机架构的框图。本领域中已知的对于膝上型计算机、台式计算机、手持PC、个人数字助理、工程化工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适合的。一般来说,能够结合如本文公开的处理器和/或其他运行逻辑的很多种系统或电子设备一般是适合的。
现在参考图11,示出的是根据本发明的一个实施例的系统1100的框图。该系统1100可以包含一个或多个处理器1110、1115,其耦合于控制器集线器1120。在一个实施例中,控制器集线器1120包含图形存储器控制器集线器(GMCH)1190和输入/输出集线器(IOH)1150(其可以在单独芯片上);GMCH 1190包含存储器和图形控制器,存储器1140和协处理器1145耦合于这些存储器和图形控制器;IOH 1150使输入/输出(I/O)设备1160耦合于GMCH1190。备选地,存储器和图形控制器中的一个或两个在处理器内集成(如本文描述的),存储器1140和协处理器1145直接耦合于处理器1110和在具有IOH 1150的单个芯片中的控制器集线器1120。
附加处理器1115的可选性质在图11中利用折线指示。每个处理器1110、1115可以包含本文描述的处理核中的一个或多个并且可以是某一版本的处理器1000。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器1120经由多点总线(例如前端总线(FSB))、点到点接口(例如快速路径互连(QPI))或类似连接1195与处理器1110、1115通信。
在一个实施例中,协处理器1145是通用处理器,例如比如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器或类似物。在一个实施例中,控制器集线器1120可以包含集成图形加速器。
在优点(其包含架构、微架构、热、功率消耗特性及类似物)的度量谱方面中,在物理资源1110、1115之间能够存在各种差异。
在一个实施例中,处理器1110运行指令,其控制通用类型的数据处理操作。协处理器指令可以嵌入指令内。处理器1110将这些协处理器指令辨认为应由附连协处理器1145运行的类型。因此,处理器1110在协处理器总线或其他互连上向协处理器1145发出这些协处理器指令(或代表协处理器指令的控制信号)。协处理器1145接受并且运行所接收的协处理器指令。
现在参考图12,示出的是根据本发明的实施例的第一更具体示范性系统1200的框图。如在图12中示出的,多处理器系统1200是点到点互连系统,并且包含经由点到点互连1250而耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每个可以是某一版本的处理器1000。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一个实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
示出处理器1270和1280,其分别包含集成存储器控制器(IMC)单元1272和1282。处理器1270还包含点到点(P-P)接口1276和1278以作为它的总线控制器单元的部分;类似地,第二处理器1280包含P-P接口1286和1288。处理器1270、1280可经由点到点(P-P)接口1250使用P-P接口电路1278、1288交换信息。如在图12中示出的,IMC 1272和1282使处理器耦合于相应的存储器,即存储器1232和存储器1234,其可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280每个可以使用点到点接口电路1276、1294、1286、1298经由个别P-P接口1252、1254与芯片集1290交换信息。芯片集1290可以可选地经由高性能接口1239与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,例如比如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器或类似物。
共享高速缓存(未示出)可以包含在任一处理器中或在两个处理器外部,然而经由P-P互连与处理器连接,使得如果处理器被放置到低功率模式中则任一或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片集1290可以经由接口1296耦合于第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线,或例如PCI Express总线或另一个第三代I/O互连总线的总线,但本发明的范围不被如此限制。
如在图12中示出的,各种I/O设备1214连同总线桥1218可以耦合于第一总线1216,该总线桥1218使第一总线1216耦合于第二总线1220。在一个实施例中,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如比如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1215耦合于第一总线1216。在一个实施例中,第二总线1220可以是低引脚计数(LPC)总线。各种设备可以耦合于第二总线1220,其包含例如键盘和/或鼠标1222、通信设备1227和存储单元1228,例如盘驱动或其他大容量存储设备,其在一个实施例中可以包含指令/代码和数据1230。此外,音频I/O 1224可以耦合于第二总线1220。注意其他架构是可能的。例如,代替图12的点到点架构,系统可以实现多点总线或其他这样的架构。
现在参考图13,示出的是根据本发明的实施例的第二更具体的示范性系统1300的框图。图12和图13中的相似元件具有相似的参考数字,并且图12的某些方面已经从图13省略以避免混淆图13的其他方面。
图13图示处理器1270、1280可以分别包含集成存储器和I/O控制逻辑(“CL”)1272和1282。因而,CL 1272、1282包含集成存储器控制器单元并且包含I/O控制逻辑。图13图示不仅存储器1232、1234耦合于CL 1272、1282,而且I/O设备1314也耦合于控制逻辑1272、1282。遗留I/O设备1315耦合于芯片集1290。
现在参考图14,示出的是根据本发明的实施例的SoC 1400的框图。图10中的类似元件具有相似的参考数字。而且,虚线框是更先进SoC上的可选特征。在图14中,互连单元1402耦合于:应用处理器1410,其包含共享高速缓存单元1006和一个或多个核132A-N的集;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一个或多个协处理器1420的集,其可以包含集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器访问(DMA)单元1432;和显示单元1440,用于耦合于一个或多个外部显示器。在一个实施例中,协处理器1420包含专用处理器,例如比如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器或类似物。
本文公开的机制的实施例可以在硬件、软件、固件或这样的实现方法的组合中实现。本发明的实施例可以实现为在可编程系统上运行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(其包含易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
程序代码(例如在图12中图示的代码1230)可以应用于输入指令来执行本文描述的功能并且生成输出信息。该输出信息可以采用已知方式应用于一个或多个输出设备。为了该申请的目的,处理系统包含:例如比如具有处理器的任何系统;数字信号处理器(DSP);微控制器;专用集成电路(ASIC);或微处理器。
程序代码可以采用高级规程式或面向对象的编程语言实现来与处理系统通信。如果预期的话,程序代码还可以采用汇编或机器语言实现。实际上,本文描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读媒介上的代表性指令来实现,该机器可读媒介代表处理器内的各种逻辑,其在被机器读取时促使该机器制造逻辑来执行本文描述的技术。这样的表示(称为“IP核”)可以存储在有形的机器可读媒介上并且供应给各种客户或制造设施来加载到实际上制作逻辑或处理器的制造机器。
这样的机器可读存储媒体可以包含但不限于由机器或设备制造或形成的物品的非暂时性有形布置,其包含存储媒体,例如硬盘、任何其他类型的盘(其包含软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘)、例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡的半导体设备,或适合于存储电子指令的任何其他类型的媒体。
因此,本发明的实施例还包含非暂时性有形机器可读媒体,其包含指令或包含设计数据,例如硬件描述语言(HDL),其定义本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以称作程序产品。
仿真(包含二进制翻译、代码变形等)
在一些情况下,指令转换器可以用来将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、动态二进制翻译,其包含动态编译)、变形、仿真或以其他方式转换成要由核处理的一个或多个其他指令。指令转换器可在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、处理器外或部分在处理器上且部分在处理器外。
图15是根据本发明的实施例与将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用相对照的框图。在图示的实施例中,指令转换器是软件指令转换器,但备选地,指令转换器可以在软件、固件、硬件或其各种组合中实现。图15示出采用高级语言1502的程序可使用x86编译器1504编译来生成x86二进制代码1506,其可以由具有至少一个x86指令集核1516的处理器本机执行。具有至少一个x86指令集核1516的处理器代表任何处理器,其能够通过以下而执行与具有至少一个x86指令集核的Intel处理器大致相同的功能以便实现与具有至少一个x86指令集核的Intel处理器大致相同的结果:兼容地运行或以其他方式处理(1)Intel x86指令集核的指令集的相当大一部分或(2)以在具有至少一个x86指令集核的Intel处理器上运行为目标的应用或其他软件的目标代码版本。x86编译器1504代表可操作成生成x86二进制代码1506(例如,目标代码)的编译器,这些x86二进制代码1506能够在具有或没有附加链接处理的情况下在具有至少一个x86指令集核1516的处理器上运行。类似地,图15示出采用高级语言1502的程序可使用备选指令集编译器1508编译来生成备选指令集二进制代码1510,其可以由没有至少一个x86指令集核1514的处理器(例如,具有运行加利福尼亚州Sunnyvale市的MIPS Technologies的MIPS指令集和/或运行加利福尼亚州Sunnyvale市的ARM Holdings的ARM指令集的核的处理器)本机执行。指令转换器1512用来将x86二进制代码1506转换成可以由没有x86指令集核1514的处理器本机运行的代码。该转换代码因为有此能力的指令转换器难以制造而不可能与备选指令集二进制代码1510相同;然而,所转换的代码将完成一般操作并且由来自备选指令集的指令构成。因而,指令转换器1512代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核的处理器或其他电子设备运行x86二进制代码1506。
对图3-7中的任何描述的组件、特征和细节也可以可选地应用于图1-2中的任何。此外,对装置中的任何描述的组件、特征和细节也可以可选地应用于方法中的任何,这些方法在实施例中可以由和/或利用这样的装置执行。本文描述的处理器中的任何可以包含在本文公开的计算机系统(例如,图11-14)中的任何中。在一些实施例中,计算机系统可以包含动态随机存取存储器(DRAM)。备选地,计算机系统可以包含闪速存储器或不需要刷新的一类非易失性存储器。本文公开的指令可以利用本文示出的处理器(具有本文示出的微架构中的任何)中的任何在本文示出的系统中的任何上执行。
在描述和权利要求中,可以使用术语“耦合”和/或“连接”连同它们的派生词。这些术语不意图为彼此的同义词。相反,在实施例中,“连接”可以用来指示两个或以上的元件彼此直接物理或电接触。“耦合”可以意味着两个或以上的元件彼此直接物理或电接触。然而,“耦合”也可以意味着两个或以上的元件彼此不直接接触,但彼此仍共同操作或相互作用。例如,运行单元可以通过一个或多个介入组件而与寄存器和/或解码单元耦合。在图中,箭头用来示出连接和耦合。
可使用术语“和/或”。如本文使用的,术语“和/或”意味着一个或另一个或两者(例如,A和/或B意味着A或B或A和B两者)。
在上文的描述中,阐述许多具体细节以便提供对实施例的彻底理解。然而,其他实施例可以在没有这些具体细节中的一些的情况下实践。本发明的范围不是由上面提供的具体示例而仅仅由下文的权利要求确定。在其他实例中,采用框图形式或未详细示出众所周知的电路、结构、设备和操作以避免使描述的理解模糊。在认为适当的地方,参考数字或参考数字的端部在图之中重复来指示对应或类似元件,其可以可选地具有类似或相同特性,除非另外指定或显而易见。
某些操作可以由硬件组件执行,或可以体现在机器可运行或电路可运行指令中,其可以用来促使和/或导致利用指令编程的机器、电路或硬件组件(例如,处理器、处理器的部分、电路等)执行操作。操作还可以可选地由硬件和软件的组合执行。处理器、机器、电路或硬件可以包含具体或特定电路系统或其他逻辑(例如,潜在地与固件和/或软件组合的硬件),其操作以运行和/或处理指令并且响应于指令存储结果。
一些实施例包含制造物品(例如,计算机程序产品),其包含机器可读媒介。媒介可以包含采用由机器可读形式提供(例如存储)信息的机构。机器可读媒介可提供或具有存储在其上的指令或指令序列,其如果由机器运行和/或在由机器运行时操作以促使机器执行和/或导致机器执行本文公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读媒介可以包含非暂时性机器可读存储媒介。例如,非暂时性机器可读存储媒介可以包含软盘、光存储媒介、光盘、光数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪速存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂时性存储器、非暂时性数据存储设备或类似物。非暂时性机器可读存储媒介并没有由暂时性传播信号组成。在一些实施例中,存储媒介可以包含有形媒介,其包含固体物质。
适合的机器的示例包含但不限于通用处理器、专用处理器、数字逻辑电路、集成电路或类似物。适合的机器的还有其他示例包含计算机系统或其他电子设备,其包含处理器、数字逻辑电路或集成电路。这样的计算机系统或电子设备的示例包含但不限于台式计算机、便携式计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
在该整个说明书中对例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例“的提及指示特定特征可包含在本发明的实践中但不一定要求这样。类似地,在描述中,为了使本公开流水线化并且有助于理解各种发明性方面,各种特征有时在单个实施例、图或其描述中组合在一起。然而,公开的该方法不解释为反映本发明要求比在每个权利要求中专门叙述的更多特征这一意向。相反,如下面的权利要求所反映,发明性方面在于比单个公开实施例的所有特征要少。因而,详细描述之后的权利要求由此特别结合该详细描述,其中每个权利要求作为本发明的单独实施例依靠它自身。
示例实施例
下列示例属于另外的实施例。该示例中的细节在一个或多个实施例中可以在任何地方使用。
示例1是处理器或其他装置,其包含用来对打包数据对齐加计算指令解码的解码单元。该打包数据对齐加计算单元要指示一个或多个源打包数据操作数的第一集、要指示一个或多个源打包数据操作数的第二集、要指示至少一个数据元素偏移以及要指示目的地存储位置,该第一集要包含第一多个数据元素,该第二集要包含第二多个数据元素。装置还包含与解码单元耦合的运行单元。该运行单元响应于打包数据对齐加计算指令要将结果打包数据操作数存储在目的地存储位置中。该结果打包数据操作数要包含多个结果数据元素,其各自具有利用一对的源打包数据操作数的第一集的数据元素和源打包数据操作数的第二集的数据元素执行的运算的值。运行单元要将至少一个数据元素偏移应用于源打包数据操作数的第一和第二集中至少对应的一个。至少一个数据元素偏移要抵消源打包数据操作数的第一和第二集中每对的数据元素之间的对应的任何缺乏。
示例2包含示例1的处理器,其中解码单元要对指令解码,该指令要指示仅要对应于一个或多个源打包数据操作数的第二集的单个数据元素偏移。而且,可选地,其中每对的数据元素要具有要被至少一个数据元素偏移抵消的对应的缺乏。
示例3包含示例1的处理器,其中解码单元要对指令解码,该指令要指示要对应于一个或多个源打包数据操作数的第一集的第一数据元素偏移和要对应于一个或多个源打包数据操作数的第二集的第二数据元素偏移。
示例4包含示例3的处理器,其中每对的数据元素要具有要通过将第一数据元素偏移应用于一个或多个源打包数据操作数的第一集以及将第二数据元素偏移应用于一个或多个源打包数据操作数的第二集而抵消的对应的缺乏。
示例5包含示例1的处理器,其中解码单元要对指令解码,该指令要指示要包含第一源打包数据操作数和第二源打包数据操作数的源打包数据操作数的第一集以及要包含第三源打包数据操作数和第四源打包数据操作数的源打包数据操作数的第二集。
示例6包含示例1的处理器,其中解码单元要对指令解码,该指令要指示要包含仅单个第一源打包数据操作数的一个或多个源打包数据操作数的第一集以及要包含第二源打包数据操作数和第三源打包数据操作数的源打包数据操作数的第二集。
示例7包含示例6的处理器,其中结果打包数据操作数可选地要包含与第一源打包数据操作数和第二源打包数据操作数每个相同数量的数据元素。
示例8包含示例1的处理器,其中解码单元要对指令解码,该指令要指示要包含仅单个第一源打包数据操作数的一个或多个源打包数据操作数的第一集以及要包含仅单个第二源打包数据操作数的一个或多个源打包数据操作数的第二集,并且其中运行单元要存储结果打包数据操作数,与第二源打包数据操作数相比,其可选地要具有较少的数据元素。
示例9包含示例1至8中的任一个的处理器,其中解码单元要对指令解码,该指令要指示能够具有多个不同数据元素偏移值中的任一个的至少一个数据元素偏移的数据元素偏移。
示例10包含示例1至8中的任一个的处理器,其中解码单元要对指令解码,该指令要指示具有以下中的任一个的能力的至少一个数据元素偏移的数据元素偏移:(1)在朝至少一个和两个数据元素位置中的任一个的最低有效位位置的方向上的偏移;(2)零数据元素位置的偏移;以及(3)在朝至少一个和两个数据元素位置中的任一个的最高有效位位置的方向上的偏移。
示例11包含示例1至8中的任一个的处理器,其中解码单元要对指令解码,该指令要指示具有以下中的任一个的能力的至少一个数据元素偏移的数据元素偏移:(1)在朝至少一个、两个、三个和四个数据元素位置中的任一个的最低有效位位置的方向上的偏移;(2)零数据元素位置的偏移;以及(3)在朝至少一个、两个、三个和四个数据元素位置中的任一个的最高有效位位置的方向上的偏移。
示例12包含示例1至8中的任一个的处理器,其中运行单元响应于指令要存储结果打包数据操作数,其要具有结果数据元素,其各自要具有利用所述一对数据元素执行的运算的值,其中运算可选地要是加法、减法、乘法、除法和平均运算中的一个。
示例13包含示例1至8中的任一个的处理器,其中运行单元响应于指令被解码而要在每对的数据元素上执行垂直单指令多数据(SIMD)运算。
示例14包含示例1至8中的任一个的处理器,其中解码单元要对指令解码,该指令可选地要具有要指示至少一个数据元素偏移的数据元素偏移的值的立即数。
示例15包含示例1至8中的任一个的处理器,其中解码单元要对指令解码,该指令可选地要指示要存储某个值的标量寄存器,该值要指示至少一个数据元素偏移的数据元素偏移的值。
示例16包含示例1至8中的任一个的处理器,进一步包含具有运行单元的数字信号处理器的图像处理器单元。
示例17包含示例1至8中的任一个的处理器,进一步包含可选的分支预测单元,其用来预测分支。处理器还可以包含可选的指令预取单元,其与分支预测单元耦合来预取包含打包数据对齐加计算指令的指令。处理器还可以包含可选的等级1(L1)指令高速缓存,其与指令预取单元耦合来存储指令。处理器还可以包含可选的L1数据高速缓存,其用来存储数据。处理器还可以包含可选的等级2(L2)高速缓存,其用来存储数据和指令。处理器还可以包含指令取单元,其与解码单元、L1指令高速缓存和L2高速缓存耦合以从L1指令高速缓存和L2高速缓存中的一个取打包数据对齐加计算指令,并且向解码单元提供打包数据对齐加计算指令。处理器还可以包含可选的寄存器重命名单元,其用来对寄存器重命名。处理器还可以包含可选的调度器,其用来调度已从打包数据对齐加计算指令解码的一个或多个操作以供运行。处理器还可以包含可选的提交单元,其用来提交打包数据对齐加计算指令的运行结果。
示例18是处理器中的方法,其包含接收打包数据对齐加计算指令。打包数据对齐加计算指令可以指示包含第一多个数据元素的一个或多个源打包数据操作数的第一集、指示包含第二多个数据元素的一个或多个源打包数据操作数的第二集、指示至少一个数据元素偏移以及指示目的地存储位置。方法还包含响应于打包数据对齐加计算指令将结果打包数据操作数存储在目的地存储位置中。结果打包数据操作数包含多个结果数据元素,其各自具有利用一对的来自源打包数据操作数的第一集的数据元素和来自源打包数据操作数的第二集的数据元素执行的运算的值。每对的数据元素在第一和第二集的源打包数据操作数中处于非对应数据元素位置中。非对应数据元素位置基于由打包数据对齐加计算指令所指示的至少一个数据元素偏移而不同。
示例19包含示例18的方法,其中接收包含接收指示仅单个数据元素偏移的指令,并且其中非对应数据元素位置相差该单个数据元素偏移。
示例20包含示例18的方法,其中接收包含接收指令,该指令指示对应于一个或多个源打包数据操作数的第一集的第一数据元素偏移,和对应于一个或多个源打包数据操作数的第第二集的二数据元素偏移。非对应数据元素位置可选地相差第一与第二数据元素偏移之间的差异。
示例21包含示例18的方法,其中接收包含接收指令,该指令指示源打包数据操作数的第一集的第一源打包数据操作数和第二源打包数据操作数两者,并且指示源打包数据操作数的第二集的第三源打包数据操作数和第四源打包数据操作数两者。
示例22包含示例18的方法,其中接收包含接收指令,该指令指示数据元素偏移,该数据元素偏移能够是多个不同数据元素偏移值中的任一个。
示例23包含示例18至22中的任一个的方法,其中存储包含存储结果数据元素,其各自具有利用所述一对数据元素执行的运算的值,其中运算可选地是加法运算、减法运算、乘法运算、除法运算和平均运算中的一个。
示例24包含示例18至22中的任一个的方法,进一步包括利用所述一对数据元素执行作为垂直单指令多数据(SIMD)运算的运算。
示例25包含示例18至22中的任一个的方法,在图像处理期间的像素滤波期间利用数字信号处理器执行。
示例26是处理指令的系统,其包含互连和与该互连耦合的处理器。处理器要接收打包数据对齐加计算指令,其要指示一个或多个源打包数据操作数的第一集、要指示一个或多个源打包数据操作数的第二集、要指示至少一个数据元素偏移以及要指示目的地存储位置,该第一集要包含第一多个数据元素,该第二集要包含第二多个数据元素。处理器响应于指令而将结果打包数据操作数存储在目的地存储位置中。结果打包数据操作数要包含多个结果数据元素,其各自具有利用一对的源打包数据操作数的第一集的数据元素和源打包数据操作数的第二集的数据元素执行的运算的值。处理器要将至少一个数据元素偏移应用于源打包数据元素的第一和第二集中的至少对应一个。至少一个数据元素偏移要抵消源打包数据操作数的第一和第二集中每对的数据元素之间的对应的任何缺乏。系统还包含与互连耦合的动态随机存取存储器(DRAM)。DRAM存储指令集来执行像素滤波算法。指令集在由处理器运行时促使处理器执行打包数据对齐加计算指令的多个实例,每个具有不同偏移。
示例27包含示例26的系统,其中指令指示第一数据元素偏移,其能够是多个不同值中的任一个。每对的数据元素可以可选地在源操作数的第一和第二集中处于非对应数据元素位置中。
示例28是制造物品,其包含非暂时性机器可读存储媒介,该非暂时性机器可读存储媒介存储打包数据对齐加计算指令。指令要指示一个或多个源打包数据操作数的第一集、要指示一个或多个源打包数据操作数的第二集、要指示至少一个数据元素偏移以及要指示目的地存储位置,该第一集要包含第一多个数据元素,该第二集要包含第二多个数据元素。指令如果由机器运行则要促使该机器执行操作,其包含将结果打包数据操作数存储在目的地存储位置中。结果打包数据操作数要包含多个结果数据元素,其各自具有利用一对的来自源打包数据操作数的第一集的数据元素和来自源打包数据操作数的第二集的数据元素执行的运算的值。每对的数据元素在源打包数据操作数的第一和第二集中要处于非对应数据元素位置中。非对应数据元素位置要基于由打包数据对齐加计算指令所指示的至少一个数据元素偏移而不同。
示例29包含示例28的制造物品,其中指令要指示具有以下中的任一个的能力的至少一个数据元素偏移的数据元素偏移:(1)在朝至少一个和两个数据元素位置中的任一个的最低有效位位置的方向上的偏移;(2)零数据元素位置的偏移;以及(3)在朝至少一个和两个数据元素位置中的任一个的最高有效位位置的方向上的偏移。
示例30包含处理器或其他装置,其包含解码单元,其用来对打包数据对齐加计算指令解码。该打包数据对齐加计算指令要指示一个或多个源打包数据操作数的第一集、要指示一个或多个源打包数据操作数的第二集、要指示至少一个数据元素偏移以及要指示目的地存储位置,该第一集要包含第一多个数据元素,该第二集要包含第二多个数据元素。处理器还包含与解码单元耦合的运行单元。运行单元响应于打包数据对齐加计算指令而要将结果打包数据操作数存储在目的地存储位置中。结果打包数据操作数要包含多个结果数据元素,其各自具有利用一对的源打包数据操作数的第一集的数据元素和源打包数据操作数的第二集的非对应数据元素执行的运算的值。每对的非对应数据元素要在源打包数据操作数的第一和第二集中处于非对应数据元素位置中。非对应数据元素位置要基于由打包数据对齐加计算指令所指示的至少一个数据元素偏移而不同。
示例31是执行或操作以执行示例18至25中的任一个的方法的处理器或其他装置。
示例32是处理器或其他装置,其包含用于执行示例18至25中的任一个的方法的部件。
示例33是制造物品,其包含可选的非暂时性机器可读媒介,该非暂时性机器可读媒介可选地存储或以其他方式提供指令,该指令如果被处理器、计算机系统、电子设备或其他机器运行和/或在由处理器、计算机系统、电子设备或其他机器运行时促使机器执行示例18至25中的任一个的方法。
示例34是大致如本文描述的处理器或其他装置。
示例35是操作以执行大致如本文描述的任何方法的处理器或其他装置。
示例36是执行(例如,其具有组件来执行或操作来执行)大致如本文描述的任何打包数据对齐加计算指令的处理器或其他装置。
示例37是计算机系统或其他电子设备,其包含处理器,该处理器具有解码单元来对第一指令集的指令解码。处理器还具有一个或多个运行单元。电子设备还包含与处理器耦合的存储设备。该存储设备要存储第一指令,其可以是大致如本文公开的打包数据对齐加计算指令中的任何并且要属于第二指令集。存储设备还要存储指令来将第一指令转换成第一指令集的一个或多个指令。指令集的一个或多个指令在由处理器执行时要促使处理器具有如第一指令所指定的架构影响。

Claims (25)

1.一种处理器,包括:
解码单元,用来对打包数据对齐加计算指令解码,所述打包数据对齐加计算指令用来指示一个或多个源打包数据操作数的第一集、指示一个或多个源打包数据操作数的第二集、指示至少一个数据元素偏移以及指示目的地存储位置,所述第一集要包含第一多个数据元素,所述第二集要包含第二多个数据元素;以及
与所述解码单元耦合的运行单元,所述运行单元响应于所述打包数据对齐加计算指令用来将结果打包数据操作数存储在所述目的地存储位置中,所述结果打包数据操作数用来包含多个结果数据元素,所述多个结果数据元素各自要具有利用一对源打包数据操作数的所述第一集的数据元素和源打包数据操作数的所述第二集的数据元素执行的运算的值,其中所述运行单元要将所述至少一个数据元素偏移应用于源打包数据操作数的所述第一集和所述第二集中至少对应的一个,并且其中所述至少一个数据元素偏移要抵消源打包数据操作数的所述第一集和所述第二集中每对的数据元素之间的对应的任何缺乏。
2.如权利要求1所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示仅要对应于一个或多个源打包数据操作数的所述第二集的单个数据元素偏移,并且其中每对中的所述数据元素要具有被所述至少一个数据元素偏移抵消的对应的缺乏。
3.如权利要求1所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示要对应于一个或多个源打包数据操作数的所述第一集的第一数据元素偏移和要对应于一个或多个源打包数据操作数的所述第二集的第二数据元素偏移。
4.如权利要求3所述的处理器,其中每对中的所述数据元素具有待通过将所述第一数据元素偏移应用于一个或多个源打包数据操作数的所述第一集以及将所述第二数据元素偏移应用于一个或多个源打包数据操作数的所述第二集而抵消的对应的缺乏。
5.如权利要求1所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示要包含第一源打包数据操作数和第二源打包数据操作数的所述源打包数据操作数的所述第一集以及要包含第三源打包数据操作数和第四源打包数据操作数的所述源打包数据操作数的所述第二集。
6.如权利要求1所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示要包含仅单个第一源打包数据操作数的所述一个或多个源打包数据操作数的所述第一集以及要包含第二源打包数据操作数和第三源打包数据操作数的所述源打包数据操作数的所述第二集。
7.如权利要求6所述的处理器,其中所述结果打包数据操作数要包含与所述第一源打包数据操作数和所述第二源打包数据操作数中的每个相同数量的数据元素。
8.如权利要求1所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示要包含仅单个第一源打包数据操作数的所述一个或多个源打包数据操作数的所述第一集以及要包含仅单个第二源打包数据操作数的所述一个或多个源打包数据操作数的所述第二集,并且其中所述运行单元要存储结果打包数据操作数,其与所述第二源打包数据操作数相比要具有较少的数据元素。
9.如权利要求1至8中任一项所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示能够具有多个不同数据元素偏移值中的任一个的所述至少一个数据元素偏移的数据元素偏移。
10.如权利要求1至8中任一项所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示具有以下中的任一个的能力的所述至少一个数据元素偏移的数据元素偏移:
在朝至少一个和两个数据元素位置中的任一个的最低有效位位置的方向上的偏移;
零数据元素位置的偏移;以及
在朝至少一个和两个数据元素位置中的任一个的最高有效位位置的方向上的偏移。
11.如权利要求1至8中任一项所述的处理器,其中所述解码单元要对所述指令解码,所述指令要指示具有以下中的任一个的能力的所述至少一个数据元素偏移的数据元素偏移:
在朝至少一个、两个、三个和四个数据元素位置中的任一个的最低有效位位置的方向上的偏移;
零数据元素位置的偏移;以及
在朝至少一个、两个、三个和四个数据元素位置中的任一个的最高有效位位置的方向上的偏移。
12.如权利要求1至8中任一项所述的处理器,其中所述运行单元响应于所述指令要存储结果打包数据操作数,其要具有所述结果数据元素,其各自要具有利用所述一对的所述数据元素执行的运算的所述值,其中所述运算要是加法、减法、乘法、除法和平均运算中的一个。
13.如权利要求1至8中任一项所述的处理器,其中所述运行单元响应于所述指令被解码而要在每对的数据元素上执行垂直单指令多数据SIMD运算。
14.如权利要求1至8中任一项所述的处理器,其中所述解码单元要对所述指令解码,所述指令要具有用来指示所述至少一个数据元素偏移的数据元素偏移的值的立即数中的一个并且要指示要存储某个值的标量寄存器,所述值要指示所述至少一个数据元素偏移的数据元素偏移的值。
15.如权利要求1至8中任一项所述的处理器,进一步包括具有所述运行单元的数字信号处理器的图像处理器单元。
16.一种处理器中的方法,其包括:
接收打包数据对齐加计算指令,所述打包数据对齐加计算指令指示包含第一多个数据元素的一个或多个源打包数据操作数的第一集、指示包含第二多个数据元素的一个或多个源打包数据操作数的第二集、指示至少一个数据元素偏移以及指示目的地存储位置;以及
响应于所述打包数据对齐加计算指令而将结果打包数据操作数存储在所述目的地存储位置中,所述结果打包数据操作数包含多个结果数据元素,其各自具有利用一对来自源打包数据操作数的所述第一集的数据元素和来自源打包数据操作数的所述第二集的数据元素执行的运算的值,其中每对中的数据元素处于源打包数据操作数的所述第一集和所述第二集中的非对应数据元素位置,并且其中所述非对应数据元素位置基于由所述打包数据对齐加计算指令所指示的所述至少一个数据元素偏移而不同。
17.如权利要求16所述的方法,其中接收包括接收指示仅单个数据元素偏移的所述指令,并且其中所述非对应数据元素位置相差所述单个数据元素偏移。
18.如权利要求16所述的方法,其中接收包括接收所述指令,其指示对应于所述一个或多个源打包数据操作数的所述第一集的第一数据元素偏移,和对应于所述一个或多个源打包数据操作数的所述第二集的第二数据元素偏移,并且其中所述非对应数据元素位置相差所述第一与第二数据元素偏移之间的差异。
19.如权利要求16所述的方法,其中接收包括接收所述指令,其指示所述源打包数据操作数的所述第一集的第一源打包数据操作数和第二源打包数据操作数两者,并且指示所述源打包数据操作数的所述第二集的第三源打包数据操作数和第四源打包数据操作数两者。
20.如权利要求16所述的方法,其中存储包括存储所述结果数据元素,其各自具有利用所述一对的所述数据元素执行的运算的所述值,其中所述运算是加法运算、减法运算、乘法运算、除法运算和平均运算中的一个。
21.如权利要求16所述的方法,进一步包括利用所述一对的所述数据元素执行作为垂直单指令多数据SIMD运算的所述运算,并且其中所述方法在图像处理期间的像素滤波期间利用数字信号处理器来执行。
22.一种装置,包括用于执行如权利要求16至21中任一项所述的方法的部件。
23.一种制造物品,包括机器可读存储媒介,所述机器可读存储媒介存储指令,其包含第一指令,所述第一指令如果由机器运行则操作以促使所述机器执行如权利要求16至21中任一项所述的方法。
24.一种系统,包括:
互连;
与所述互连耦合的如权利要求1至8中任一项所述的处理器;以及
与所述互连耦合的动态随机存取存储器DRAM,所述DRAM存储用来执行像素滤波算法的指令集,所述指令集在由所述处理器运行时用来促使所述处理器执行打包数据对齐加计算指令的多个实例,各自具有不同偏移。
25.一种处理器,包括
用于对打包数据对齐加计算指令解码的部件,所述打包数据对齐加计算指令用来指示一个或多个源打包数据操作数的第一集、指示一个或多个源打包数据操作数的第二集、指示至少一个数据元素偏移以及指示目的地存储位置,所述第一集要包含第一多个数据元素,所述第二集要包含第二多个数据元素;以及
用于运行所述打包数据对齐加计算指令的部件,用于运行所述打包数据对齐加计算指令的所述部件响应于所述打包数据对齐加计算指令用来将结果打包数据操作数存储在所述目的地存储位置中,所述结果打包数据操作数用来包含多个结果数据元素,所述多个结果数据元素各自要具有利用一对源打包数据操作数的所述第一集的数据元素和源打包数据操作数的所述第二集的数据元素执行的运算的值,其中所述用于运行所述打包数据对齐加计算指令的部件要将所述至少一个数据元素偏移应用于源打包数据操作数的所述第一集和所述第二集中至少对应的一个,并且其中所述至少一个数据元素偏移要抵消源打包数据操作数的所述第一集和所述第二集中每对的数据元素之间的对应的任何缺乏。
CN201680032567.4A 2015-06-02 2016-05-09 打包数据对齐加计算指令、处理器、方法和系统 Active CN107667345B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210154160.6A CN114816523A (zh) 2015-06-02 2016-05-09 打包数据对齐加计算指令、处理器、方法和系统

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/728693 2015-06-02
US14/728,693 US10001995B2 (en) 2015-06-02 2015-06-02 Packed data alignment plus compute instructions, processors, methods, and systems
PCT/US2016/031422 WO2016195921A1 (en) 2015-06-02 2016-05-09 Packed data alignment plus compute instructions, processors, methods, and systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210154160.6A Division CN114816523A (zh) 2015-06-02 2016-05-09 打包数据对齐加计算指令、处理器、方法和系统

Publications (2)

Publication Number Publication Date
CN107667345A CN107667345A (zh) 2018-02-06
CN107667345B true CN107667345B (zh) 2022-03-04

Family

ID=57441550

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210154160.6A Pending CN114816523A (zh) 2015-06-02 2016-05-09 打包数据对齐加计算指令、处理器、方法和系统
CN201680032567.4A Active CN107667345B (zh) 2015-06-02 2016-05-09 打包数据对齐加计算指令、处理器、方法和系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210154160.6A Pending CN114816523A (zh) 2015-06-02 2016-05-09 打包数据对齐加计算指令、处理器、方法和系统

Country Status (7)

Country Link
US (2) US10001995B2 (zh)
EP (1) EP3304284B1 (zh)
JP (1) JP6814369B2 (zh)
KR (2) KR102592056B1 (zh)
CN (2) CN114816523A (zh)
TW (1) TWI697835B (zh)
WO (1) WO2016195921A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
EP3971711A1 (en) * 2016-10-20 2022-03-23 INTEL Corporation Systems, apparatuses, and methods for fused multiply add
WO2018154273A1 (en) * 2017-02-23 2018-08-30 Arm Limited Element by vector operations in a data processing apparatus
EP3428792B1 (en) * 2017-07-10 2022-05-04 Arm Ltd Testing bit values inside vector elements
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation
US10678540B2 (en) * 2018-05-08 2020-06-09 Arm Limited Arithmetic operation with shift
US11048509B2 (en) * 2018-06-05 2021-06-29 Qualcomm Incorporated Providing multi-element multi-vector (MEMV) register file access in vector-processor-based devices
GB2589334B (en) * 2019-11-26 2022-01-05 Advanced Risc Mach Ltd Register-provided-opcode instruction

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103487A (zh) * 2009-12-17 2011-06-22 英特尔公司 用于在单个指令中执行移位和异或运算的方法和装置
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
CN103119579A (zh) * 2010-09-24 2013-05-22 英特尔公司 用于向量整数乘加指令的功能单元
CN104011652A (zh) * 2011-12-30 2014-08-27 英特尔公司 打包选择处理器、方法、系统和指令
CN104025033A (zh) * 2011-12-30 2014-09-03 英特尔公司 利用控制操纵的simd可变移位和循环
CN104126168A (zh) * 2011-12-22 2014-10-29 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
CN104321741A (zh) * 2012-06-29 2015-01-28 英特尔公司 双舍入组合浮点乘法和加法
CN104350461A (zh) * 2011-12-23 2015-02-11 英特尔公司 具有不同的读和写掩码的多元素指令

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009505A (en) * 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6446195B1 (en) * 2000-01-31 2002-09-03 Intel Corporation Dyadic operations instruction processor with configurable functional blocks
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7373369B2 (en) 2003-06-05 2008-05-13 International Business Machines Corporation Advanced execution of extended floating-point add operations in a narrow dataflow
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
US7328230B2 (en) * 2004-03-26 2008-02-05 Intel Corporation SIMD four-data element average instruction
US7257695B2 (en) * 2004-12-28 2007-08-14 Intel Corporation Register file regions for a processing system
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US20120254589A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
WO2013101124A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
US9152382B2 (en) * 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values
US9513906B2 (en) * 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9632781B2 (en) 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9329865B2 (en) * 2013-06-11 2016-05-03 Intel Corporation Context control and parameter passing within microcode based instruction routines
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9552205B2 (en) 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
CN102103487A (zh) * 2009-12-17 2011-06-22 英特尔公司 用于在单个指令中执行移位和异或运算的方法和装置
CN103119579A (zh) * 2010-09-24 2013-05-22 英特尔公司 用于向量整数乘加指令的功能单元
CN104126168A (zh) * 2011-12-22 2014-10-29 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
CN104350461A (zh) * 2011-12-23 2015-02-11 英特尔公司 具有不同的读和写掩码的多元素指令
CN104011652A (zh) * 2011-12-30 2014-08-27 英特尔公司 打包选择处理器、方法、系统和指令
CN104025033A (zh) * 2011-12-30 2014-09-03 英特尔公司 利用控制操纵的simd可变移位和循环
CN104321741A (zh) * 2012-06-29 2015-01-28 英特尔公司 双舍入组合浮点乘法和加法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SIMD自动向量化编译优化概述;高伟等;《软件学报》;20150202;全文 *

Also Published As

Publication number Publication date
US10936312B2 (en) 2021-03-02
TW201710886A (zh) 2017-03-16
US20160357563A1 (en) 2016-12-08
EP3304284A1 (en) 2018-04-11
KR102556033B1 (ko) 2023-07-17
EP3304284A4 (en) 2019-03-20
KR20230109791A (ko) 2023-07-20
CN114816523A (zh) 2022-07-29
KR20180014690A (ko) 2018-02-09
WO2016195921A1 (en) 2016-12-08
JP2018516400A (ja) 2018-06-21
TWI697835B (zh) 2020-07-01
US20190012172A1 (en) 2019-01-10
CN107667345A (zh) 2018-02-06
US10001995B2 (en) 2018-06-19
EP3304284B1 (en) 2020-12-09
KR102592056B1 (ko) 2023-10-23
JP6814369B2 (ja) 2021-01-20

Similar Documents

Publication Publication Date Title
US11442734B2 (en) Packed data element predication processors, methods, systems, and instructions
CN107667345B (zh) 打包数据对齐加计算指令、处理器、方法和系统
JP6351682B2 (ja) 装置および方法
US9934032B2 (en) Processors, methods, and systems to implement partial register accesses with masked full register accesses
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
US10929143B2 (en) Method and apparatus for efficient matrix alignment in a systolic array
US10761757B2 (en) Apparatus and method for coherent, accelerated conversion between data representations
CN106030514B (zh) 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法
CN107533460B (zh) 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令
US10552154B2 (en) Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11474825B2 (en) Apparatus and method for controlling complex multiply-accumulate circuitry

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant