CN106575216B - 数据元素选择和合并处理器、方法、系统和指令 - Google Patents
数据元素选择和合并处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN106575216B CN106575216B CN201580044339.4A CN201580044339A CN106575216B CN 106575216 B CN106575216 B CN 106575216B CN 201580044339 A CN201580044339 A CN 201580044339A CN 106575216 B CN106575216 B CN 106575216B
- Authority
- CN
- China
- Prior art keywords
- operand
- data
- packed data
- source
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims description 58
- 230000004044 response Effects 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 27
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 77
- 238000010586 diagram Methods 0.000 description 45
- 238000007667 floating Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000000873 masking effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000005056 compaction Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一种处理器,包括压缩数据寄存器以及用于对数据元素选择和合并指令进行解码的解码单元。指令要具有第一源压缩数据操作数(其要具有多个数据元素)和第二源操作数(其要具有多个屏蔽元素)。各屏蔽元素对应于相同相对位置中的不同数据元素。执行单元与解码单元耦合。执行单元响应指令而要在要通过指令所指示的目的地存储位置中存储结果压缩数据操作数。结果压缩数据操作数要包括第一源压缩数据操作数的所有数据元素,其对应于在结果压缩数据操作数的一部分中合并在一起的第二源操作数的未屏蔽的屏蔽元素。
Description
技术领域
本文所描述的实施例一般涉及处理器。具体来说,本文所描述的实施例一般涉及在处理器中处理打包数据元素。
背景技术
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,多个数据元素可作为打包数据或向量数据来打包在一个寄存器或存储器位置内。在打包数据中,寄存器或其他存储位置的位可在逻辑上划分为数据元素序列。例如,128位宽打包数据寄存器可具有两个64位数据元素、四个32位数据元素、八个16位数据元素或十六个8位数据元素。数据元素中的每个可表示独立的单独数据片(例如像素颜色、复数的分量等),可独立地和/或与其他数据片无关地对其进行操作。
在SIMD架构中,打包数据指令、向量指令或SIMD指令可同时和/或并行地对打包数据操作数的多个数据元素或者两个打包数据操作数中的多对数据元素进行操作。处理器可具有响应打包数据指令以同时或并行地执行多个操作的并行执行硬件。
各种不同类型的打包数据指令是本领域已知的。一类打包数据指令是混洗(shuffle)指令。混洗指令可用来通过使用所混洗的各数据元素的混洗控制位的对应集合将数据元素从源打包数据操作数混洗到结果打包数据操作数中的不同位置。但是,对某些应用使用这类混洗指令的一个缺点在于,对混洗的各数据元素需要混洗控制的多个位。这可趋向于将这种混洗控制所需的位的数量增加到超过某些应用的极限(例如超过能够适应指令的立即数的位的数量)。另外,它花费额外时间来创建或生成混洗控制位。
附图说明
通过参照用来示出实施例的以下描述和附图,可以最好地理解本发明。在附图中:
图1是可操作以执行数据元素选择和合并指令的实施例的处理器的实施例的框图。
图2是执行数据元素选择和合并指令的实施例的处理器中的方法的实施例的块流程图。
图3是数据元素选择和合并操作的实施例的框图。
图4是采用位屏蔽(mask)和合并操作的字节选择的具体示例实施例的框图。
图5是采用字节屏蔽操作数和合并操作的字节选择的具体示例实施例的框图。
图6是示出数据元素选择和合并指令在一些实施例中可如何用来处理网络分组的数据元素的框图。
图7A-7C是数据元素选择和合并指令的若干实施例的框图。
图8是打包数据寄存器的适当集合的示例实施例的框图。
图9是打包数据操作屏蔽寄存器的适当集合的示例实施例的框图。
图10是打包数据操作屏蔽寄存器的示例实施例的简图,并且示出用作打包数据操作屏蔽和/或用于屏蔽的位数取决于打包数据宽度和数据元素宽度。
图11A是示出有序流水线的实施例和寄存器重命名无序发出(issue)/执行流水线的实施例的框图。
图11B是包括耦合到执行引擎单元并且均耦合到存储器单元的前端单元的处理器核的实施例的框图。
图12A是单个处理器核连同其到管芯上互连网络的连接并且连同其2级(L2)高速缓存的本地子集的实施例的框图。
图12B是图12A的处理器核的部分的扩大视图的实施例的框图。
图13是可具有一个以上核、可具有集成存储器控制器并且可具有集成图形的处理器的实施例的框图。
图14是计算机架构的第一实施例的框图。
图15是计算机架构的第二实施例的框图。
图16是计算机架构的第三实施例的框图。
图17是片上系统架构的实施例的框图。
图18是按照本发明的实施例的软件指令转换器用来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文所公开的是数据元素选择和合并指令、执行指令的处理器、由处理器在处理或执行指令时执行的方法以及结合一个或多个处理器以处理或执行指令的系统。在以下描述中,阐述许多具体细节(例如具体指令操作、数据格式、处理器配置、微架构细节、操作序列等)。但是,在没有这些具体细节的情况下也可实施实施例。在其他实例中,没有详细示出众所周知的电路、结构和技术,以免模糊对本描述的理解。
图1是可操作以执行数据元素选择和合并指令102的实施例的处理器100的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如用于台式、膝上型或其他计算机中的类型的通用微处理器或中央处理单元(CPU))。在一个方面,处理器可表示集成网络和/或分组相关处理的片上系统的通用核。在一个方面,数据元素选择和合并指令可允许通用处理器或核更有效地执行网络和/或分组处理。备选地,处理器可以是专用处理器。适当专用处理器的示例包括但不限于网络处理器、通信处理器、分组处理器、嵌入式分组处理引擎、交换(switch)芯片、数据平面处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如微控制器)。处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构或者具有不同架构的组合(例如,不同核可具有不同架构)的任一项。
在操作期间,处理器100可接收数据元素选择和合并指令102。例如,指令可在互连上从存储器接收。指令可表示宏指令、汇编语言指令、机器代码指令或者处理器的指令集的其他指令或控制信号。在一些实施例中,数据元素选择和合并指令可显式(explicitly)指定(例如经过一个或多个字段或位集合)、以其他方式指示(例如隐式(implicitly)指示)或者以其他方式具有第一源打包数据操作数112(其要具有多个数据元素)。在一些实施例中,数据元素选择和合并指令可显式指定(例如经过一个或多个字段或位集合)、以其他方式指示(例如隐式指示)或者以其他方式具有(作为立即数而具有)第二源操作数104(其要具有对应多个屏蔽元素)。在所示的实施例中,第二源操作数104包括指令的立即数,诸如,例如4位立即数(imm4)、8位立即数(imm8)、16位立即数(imm16)或者32位立即数(imm32),这里只列举几个示例。立即数可具有作为屏蔽元素的屏蔽位。每个未屏蔽的屏蔽位可具有第一值(例如按照一种可能惯例(convention)的二进制一),而每个被屏蔽出的(masked-out)屏蔽位可具有第二不同值(例如按照一种可能惯例的二进制零)。在其他实施例中,第二源操作数104可选地可以是源打包数据操作屏蔽116,其可选地可存储在打包数据操作屏蔽寄存器118集合中。在又其他实施例中,第二源操作数104可选地可存储在通用寄存器119集合中。在又其他实施例中,第二源操作数104可选地可以是第二源打包数据操作数,其可选地存储在打包数据寄存器110集合中。指令还可指定或者以其他方式指示将要存储结果打包数据操作数114的目的地存储位置。作为一个示例,指令可具有源和/或目的地操作数指定字段,以指定用于操作数的寄存器、存储器位置或其他存储位置。备选地,这些操作数的一个或多个可选地可对指令是隐式的(例如对指令的操作码是隐式的)。
再次参照图1,处理器包括解码单元或解码器106。解码单元可对数据元素选择和合并指令进行接收和解码。解码单元可输出一个或多个相对低级指令或控制信号(例如一个或多个微指令、微操作、微码入口点、解码指令或控制信号等),其反映、表示相对高级数据元素选择和合并指令和/或从其中导出。在一些实施例中,解码单元可包括用于接收数据元素选择和合并指令的一个或多个输入结构(例如(一个或多个)端口、(一个或多个)互连、接口)、与其耦合以便对数据元素选择和合并指令进行辨别和解码的指令辨别和解码逻辑以及与其耦合以输出(一个或多个)低级指令或(一个或多个)控制信号的一个或多个输出结构(例如(一个或多个)端口、(一个或多个)互连、接口)。解码单元可使用各种不同机制来实现,包括但不限于微码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域已知的用来实现解码单元的其他机制。
在一些实施例中,数据元素选择和合并指令不是直接提供给解码单元,而是可选地可使用指令模拟器、转化器、变形器(morpher)、解释器或其他指令转换模块。各种类型的指令转换模块是本领域已知的,并且可通过软件、硬件、固件或者其组合来实现。在一些实施例中,指令转换模块可位于处理器外部,例如诸如独立管芯上和/或存储器(例如静态、动态或运行时间模拟模块)中。作为示例,指令转换模块可接收可属于第一指令集的数据元素选择和合并指令,并且可对数据元素选择和合并指令进行模拟、转化、变形、解释或者以其他方式将数据元素选择和合并指令转换为一个或多个对应中间指令或控制信号,其可属于第二不同指令集。第二指令集的一个或多个中间指令或控制信号可提供给解码单元(例如解码单元106),其可将中间指令或控制信号解码为由处理器的本机硬件(例如一个或多个执行单元)可执行的一个或多个低级指令或控制信号。
再次参照图1,处理器100还包括打包数据寄存器110的集合。在一些实施例中,处理器可包括通用寄存器119的集合。在一些实施例中,处理器还可选地可包括打包数据操作屏蔽寄存器118的集合。这些寄存器的每个可表示管芯上存储位置,其操作以存储数据。例如,打包数据寄存器的每个可存储打包数据、向量数据或者单指令多数据(SIMD)数据。这些寄存器可表示在架构上可见或架构寄存器,其是对软件和/或编程人员可见的,和/或是通过识别操作数的处理器的指令集的指令所指示的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器(例如暂时寄存器、重排序缓冲器、引退寄存器等)形成对照。这些寄存器可在不同微架构中使用众所周知的技术按照不同方式来实现,而并不局限于任何特定类型的设计。适当类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
在一些实施例中,第一源打包数据操作数112可选地可存储在打包数据寄存器中,以及目的地存储位置(将要存储结果打包数据操作数114在其中)可选地可以是相同或者不同的打包数据寄存器。备选地,存储器位置或其他存储位置可选地可用于这些操作数的一个或多个。在一些实施例中,用于源打包数据操作数(例如第一源打包数据操作数112)的打包数据寄存器可选地可再用作结果打包数据操作数114的目的地存储位置。例如,单个源/目的地寄存器可隐式或隐含地理解为用于源和结果打包数据操作数。
再次参照图1,执行单元108与解码单元106和打包数据寄存器110耦合。执行单元可接收一个或多个解码的或者以其他方式转换的指令或控制信号,其表示数据元素选择和合并指令和/或从其中导出。执行单元还可接收第一源打包数据操作数112和具有多个屏蔽元素的第二源操作数104(例如立即数104)。执行单元可以是响应数据元素选择和合并指令和/或作为数据元素选择和合并指令的结果(例如响应从指令所解码的一个或多个指令或控制信号)操作以将结果打包数据操作数114存储在指令所指示的目的地存储位置中。在一些实施例中,结果打包数据操作数114可包括在结果打包数据操作数114的一部分中合并在一起的对应于立即数104或者其他第二源操作数104的未屏蔽的屏蔽元素的第一源打包数据操作数112的所有数据元素。在一些实施例中,结果打包数据操作数可省略与第二源操作数的被屏蔽出的屏蔽元素对应的第一源打包数据操作数的所有数据元素。在一些实施例中,第一源打包数据操作数的未屏蔽的数据元素可在结果打包数据操作数的最低有效部分中合并在一起。在其他实施例中,第一源打包数据操作数的未屏蔽的数据元素可在结果打包数据操作数的最高有效部分中合并在一起。在一些实施例中,结果打包数据操作数可以是对图3-5所示出和所描述的操作数的任一个,但是本发明的范围并不这样限制。
在一些实施例中,结果打包数据操作数中的未屏蔽的数据元素的合并对指令(例如指令的操作码)可以是隐式的和/或固定的,而不是对指令是显式指定和/或灵活的。例如,指令可具有操作码,其指示或指定未屏蔽的数据元素要在结果打包数据操作数中合并。也就是说,操作码和/或指令可具体专用于结果打包数据操作数中的未屏蔽的数据元素的合并。操作码和/或指令的这种专用和/或固定和/或隐式特征的使用可帮助避免需要生成和使用要与灵活指令(例如全混洗或置换(permute)指令)一起使用的显式控制(例如显式控制字段)。在一个方面,未屏蔽的数据元素可在结果打包数据操作数中合并,而不管第一源打包数据操作数中的数据元素的任何特定布置,并且不管第二源操作数中的屏蔽元素的任何特定布置。
有利地,数据元素选择和合并指令/操作允许数据元素的子集被选择并且在单个指令的执行的限制之内紧致在一起。在仅期望源数据元素的所选子集用于进一步处理的实施例中,紧致操作是有利的。作为一个示例,在初始分组解码之后,只有某些流字节(例如定义源和目的地地址以及源和目的地端口的四元组)可被选择并且对后续分组合并在一起,使得可执行快速校验以确认这些分组属于相同流。作为另一个示例,只有(例如分组的)相对较多熵的源数据元素的子集可被选择并且合并在一起,使得哈希、校验和和或其他密码功能可对这些相对较多熵的字节来执行。这样,密码功能无需对相对较小熵的数据元素(其可以不被选择)来执行。另一种可能的使用会是图形数据的二次取样。其他使用将对本领域的技术人员显而易见并且具有本公开的有益效果。还会可能使用一个指令来选择期望源数据元素并且使用附加指令将所选源数据元素合并在一起(例如通过使整个操作数移位的一个或多个指令、执行屏蔽逻辑操作的一个或多个指令等)。但是,单个数据元素选择和合并指令可帮助增加关于涉及多个或者潜在的许多指令的软件实现的性能(尤其在大量数据元素的情况下)。
执行单元和/或处理器可包括特定或具体逻辑(例如晶体管、集成电路或者潜在地与固件(例如非易失性存储器中存储的指令)和/或软件相结合的其他硬件),其可操作以执行数据元素选择和合并指令,和/或响应数据元素选择和合并指令(例如响应从数据元素选择和合并指令所解码的一个或多个指令或控制信号)和/或作为数据元素选择和合并指令的结果来存储结果。作为示例,执行单元可包括算术逻辑单元、逻辑单元等。在一些实施例中,执行单元可包括用于接收源操作数的一个或多个输入结构(例如(一个或多个)端口、(一个或多个)互连、接口)、与其耦合以接收和处理源操作数并且生成结果操作数的电路或逻辑以及与其耦合以输出结果操作数的一个或多个输出结构(例如(一个或多个)端口、(一个或多个)互连、接口)。在一些实施例中,处理源操作数并且生成结果操作数的电路或逻辑可选地可包括数据元素选择和路由选择逻辑。例如,用于选择数据元素的复用器和用于路由所选数据元素的互连。
为了避免模糊对本描述,示出和描述相对简单的处理器。但是,处理器可选地可包括其他众所周知的处理器组件。这类组件的可能示例包括但不限于通用寄存器、状态寄存器(有时称作标志寄存器)、系统控制寄存器、指令获取(fetch)单元、预获取缓冲器、一级或多级高速缓存(例如1级(L1)指令高速缓存、L1数据高速缓存和L2数据/指令高速缓存)、指令转化后备缓冲器(TLB)、数据TLB、分支预测单元、无序执行单元(例如指令调度单元、寄存器重命名和/或分配单元、指令分派单元、重排序缓冲器(ROB)、保留站、存储器排序缓冲器、引退单元等)、总线接口单元、地址生成单元、调试单元、性能监测单元、电源管理单元、处理器中包含的其他组件及其各种组合。这类组件可按照本领域已知的各种不同适当组合和/或配置耦合在一起。实施例并不局限于任何已知的这种组合或配置。此外,实施例可包含在具有多个核(其至少一个操作以执行数据元素选择和合并指令)的处理器中。
图2是执行数据元素选择和合并指令的实施例的处理器中的方法220的实施例的块流程图。在一些实施例中,方法220可由图1的处理器100来执行和/或在其内执行。本文对于处理器100所描述的组件、特征和具体可选细节可选地也适用于方法220。备选地,方法220可由相似或不同的处理器或其他设备来执行和/或在其内执行。此外,处理器100可执行与方法220的那些方法相同、相似或不同的方法。
该方法包括在框221接收数据元素选择和合并指令。在各种方面,指令可在处理器或者其一部分(例如指令获取单元、解码单元、总线接口单元等)来接收。在各种方面,指令可从处理器外和/或管芯外的源(例如从存储器、互连等)或者从处理器上和/或管芯上的源(例如从指令高速缓存、指令队列等)来接收。数据元素选择和合并指令可指定或者以其他方式指示或者以其他方式具有第一源打包数据操作数(其具有多个数据元素),并且可指定、以其他方式指示或者以其他方式具有第二源操作数(其具有多个屏蔽元素)。第二源操作数的各屏蔽元素可对应于第一源打包数据操作数的不同数据元素(例如在相同位位置、在操作数内的相同相对位置等)。
在框222结果打包数据操作数可响应数据元素选择和合并指令和/或作为数据元素选择和合并指令的结果来存储在目的地存储位置中。目的地存储位置可通过数据元素选择和合并指令来指定或者以其他方式指示。在一些实施例中,结果打包数据操作数可包括在结果打包数据操作数的一部分中合并在一起的对应于第二源操作数的未屏蔽的屏蔽元素的第一源打包数据操作数的所有数据元素。
所示的方法涉及架构操作(例如从软件角度可见的那些操作)。在其他实施例中,该方法可选地可包括一个或多个微架构操作。作为示例,可对指令进行获取、解码、无序调度,可存取源操作数,执行单元可执行微架构操作以实现指令,等。在一些实施例中,实现指令的微架构操作可选地可将位屏蔽的每个位扩大到与第一源打包数据操作数的数据元素相同的大小,并且对扩大的数据元素屏蔽和第一源打包数据操作数执行逻辑运算(例如逻辑AND)(尽管这是要求的)。
图3是示出可响应数据元素选择和合并指令的实施例而执行的数据元素选择和合并操作330的实施例的框图。指令可显式指定(例如经过一个或多个字段或位集合)、以其他方式指示(例如隐式指示)或者以其他方式具有第一源打包数据操作数312(其要具有多个打包数据元素E0-EN)。
第一源打包数据操作数312中的数据元素E0至EN的数量可改变。通常,数据元素E0-EN的数量可等于第一源打包数据操作数的位的大小除以单个数据元素(例如E0)的位的大小。在各种实施例中,第一源打包数据操作数的大小或者位宽度可以是64位、128位、256位、512位或1024位(尽管本发明的范围并不这样限制)。在各种实施例中,各数据元素(例如E0)的大小或者位宽度可以是8位、16位、32位或64位(尽管本发明的范围并不这样限制)。作为几个代表性示例,128位打包8位字节格式可包括十六个8位字节数据元素,128位打包16位数据元素格式可包括八个16位数据元素,256位打包字节格式可包括三十二个8位字节数据元素,256位打包16位数据元素格式可包括十六个16位数据元素,以及256位打包32位数据元素格式可包括八个32位数据元素,这里只列举几个示例。在各种实施例中,为了实现对数据元素选择和合并操作的最大效率增强,第一源打包数据操作数中可存在至少八个、至少十六个或者多于十六个(例如三十二个、六十四个等)数据元素E0-EN。
在一些实施例中,指令可具有一个或多个位集合和/或字段,以指示第一源打包数据操作数的数据元素的大小或位宽度。例如,2位字段可具有四个不同值以指示数据元素的四个不同大小(例如,00用于8位、01用于16位、10用于32位以及11用于64位)。在其他实施例中,第一源打包数据操作数的数据元素的大小或位宽度可选地可在寄存器(例如模式寄存器)中指定或指示。例如,模式寄存器中的第一值可指示打包数据寄存器的数据元素要被解释为8位字节元素,而模式寄存器中的第二值可指示打包数据寄存器的数据元素要被解释为16位数据元素。
指令还可显式指定(例如经过一个或多个字段或位集合)、以其他方式指示(例如隐式指示)或者以其他方式具有(作为立即数而具有)第二源操作数304(其要具有对应多个掩蔽元素M0至MN)。第二源操作数可对第一源打包数据操作数的各对应不同数据元素(E)具有不同屏蔽元素(M)。第二源操作数的各屏蔽元素(M)可对应于第一源打包数据操作数中的不同数据元素(E)(例如在操作数中的相同相对位置和/或在相同位位置)。例如,E0可对应于M0,E1可对应于M1,依此类推。使对应数据元素和屏蔽元素处于操作数内的对应相对位置常常是便利的(尽管这不是要求的),并且可选地也可使用对应性的其他惯例。
在一些实施例中,各屏蔽元素可以是单个屏蔽位。备选地,两个或更多位可选地可用于各屏蔽元素。例如,各屏蔽元素可具有与第一源打包数据操作数中的各对应数据元素相同数量的位(例如8位、16位、32位等)。实际上,任何数量的位可用于屏蔽元素(如特定实现期望的),包括辨别为屏蔽位但是包含在数据元素中的单个位(例如数据元素的最高有效或最低有效位)。在一些实施例中,第二源操作数可表示位屏蔽操作数,并且可具有作为屏蔽元素的屏蔽位。这种位屏蔽操作数在不同实施例中可按照不同方式来提供。在一些实施例中,第二源位屏蔽操作数可表示指令的立即数。在其他实施例中,第二源位屏蔽操作数可存储在打包数据操作屏蔽寄存器(例如寄存器118和/或918其中之一)中。在又其他实施例中,第二源位屏蔽操作数可存储在通用寄存器(例如寄存器119之一)中。备选地,代替位屏蔽操作数,第二源操作数可表示打包数据元素屏蔽操作数,并且可具有作为屏蔽元素的数据元素。例如,第二源打包数据元素屏蔽操作数可存储在打包数据寄存器(例如打包数据寄存器110和/或810其中之一)中。
各屏蔽元素可以操作以有条件地控制或屏蔽来自第一源打包数据操作数的对应数据元素是否要被选择或配置成出现在结果打包数据操作数中。屏蔽可按照每数据元素粒度,使得可独立地和/或与其他数据元素无关地屏蔽出或者不屏蔽各不同数据元素。每个未屏蔽的屏蔽元素可具有第一值(例如按照一种可能惯例的值一(1))以选择对应数据元素供包含在结果打包数据操作数314的数据元素的合并或编组的集合中,而每个被屏蔽出的屏蔽元素可具有第二不同值(例如按照一种可能惯例的值零(0))以省略对应数据元素而不包含在结果打包数据操作数的数据元素的合并或编组的集合中。图示采用这种惯例。对于选择对应数据元素供合并或省略对应数据元素不合并的值,各种其他惯例也是可能的。
结果打包数据操作数314可响应数据元素选择和合并指令/操作而被生成(例如由执行单元308)并且存储在目的地存储位置中。目的地存储位置可通过指令来指定或者以其他方式指示。在各种实施例中,目的地存储位置可以是打包数据寄存器、存储器位置或者其他存储位置。在一些实施例中,结果打包数据操作数314可包括在结果打包数据操作数314的一部分中合并在一起的对应于第二源操作数304的未屏蔽的屏蔽元素的第一源打包数据操作数312的所有数据元素。按照图示中采用的惯例,被屏蔽出的屏蔽元素具有值零(0),而未屏蔽的屏蔽元素具有值一(1),尽管本发明的范围并不这样限制。在所示示例中,数据元素E1、E2、E3和E5对应于未屏蔽的屏蔽元素M1、M2、M3和M5,而数据元素E0、E4和EN对应于被屏蔽出的屏蔽元素M0、M4和MN。如所示的,在一些实施例中,未屏蔽或选择的数据元素(例如E1、E2、E3和E5)可在结果打包数据操作数的最低有效部分中作为合并的所选的或者未屏蔽的数据元素的集合来合并在一起,并且可按照它们在第一源打包数据操作数中出现或布置的相同顺序出现或布置。备选地,未屏蔽或所选的数据元素可选地可在结果打包数据操作数的最高有效部分中合并在一起,并且可按照它们在第一源打包数据操作数中出现或布置的相同顺序出现或布置。预期实现这个方面的各种方式(包括经过(though)路由选择、移动、重新布置、复制或者以其他方式将未屏蔽或所选的数据元素存储到适当位置中)。
在结果打包数据操作数中,合并在一起的未屏蔽的数据元素(例如E1、E2、E3和E5)可省略所有被屏蔽出的数据元素(例如E0、E4和EN)。也就是说,合并的未屏蔽的数据元素可以没有设置在它们之间的任何被屏蔽出的数据元素。例如,在第一源操作数中,E4设置在E3与E5之间,但是在结果打包数据操作数中,E5和E3合并在一起并且彼此相邻,而没有设置在它们之间的E4。相应地,具有其之间散布的被屏蔽出的数据元素的未屏蔽的数据元素的潜在非毗连子集可合并或紧致在一起,并且存储在结果操作数的最低位(lowest order)或最高位部分中。在一些实施例中,被屏蔽出的数据元素(例如E0、E4和EN)可以只被丢弃或删除,而可以无需被传送到目的地。在这类情况下,并且当合并的未屏蔽的数据元素存储在结果操作数的最低有效部分中时,比存储未屏蔽的数据元素的总数所需的位更为有效的位可选地可存储预定值。例如,如图示中所示的,这些位或数据元素可选地可在结果打包数据操作数中归零。作为另一个选项,现有位或数据可保持不变,而不是在这些位中存储零。这可帮助减少存储器带宽访问。处理器可知道被合并的数据元素的数量,并且由此知道所产生的合并元素的界限。作为又一个选项,在其他实施例中,被屏蔽出的数据元素(例如E0、E4和EN)可选地可被路由、移动、复制或者以其他方式存储到没有用来存储合并在一起的未屏蔽的数据元素的结果打包数据操作数的另一个部分。
在一些实施例中,指示在结果中合并在一起的未屏蔽的数据元素的数量的值可选地可响应指令而被存储(例如在通用或其他寄存器中)。例如,在图4中,可选地可存储指示八的值,以指示在结果中已经合并八个未屏蔽的数据元素。这可帮助仅允许结果中的合并未屏蔽的数据元素的数量被存取,而无需独立计算这个数量(这是可选的不是要求的)。这个方面也可与本文所公开的其他实施例(例如图1-5)一起使用。
图4是示出采用位屏蔽和合并操作430的字节选择的具体示例实施例(其可响应采用位屏蔽和合并指令的字节选择的实施例而执行)的框图。图4的示例操作与图3的更一般化操作具有某些相似性。为了避免模糊本描述,将主要描述图4的示例操作的不同和/或附加特性,而没有重复相对于图3的更一般化操作的所有可选相似或共同特性和细节。但是要意识到,图3的更一般化操作的先前所描述特性和细节可选地也可适用于图4的示例操作,除非以其它方式陈述或以其它方式清楚地显而易见的(例如,如果它们涉及数据元素屏蔽而不是位屏蔽)。
在这个示例实施例中,指令指定或者以其他方式指示或者以其他方式具有第一128位源打包字节操作数412,其具有十六个8位字节数据元素B0至B15。这只是一个示例。其他实施例可具有更窄(例如64位)或更宽(例如256位、512位、1024位)操作数,并且可具有其他大小数据元素(例如16位数据元素、32位数据元素、64位数据元素等)。
在图4的示例实施例中,指令指定或者以其他方式指示或者以其他方式具有第二16位源位屏蔽操作数404,其具有十六个屏蔽位。这些位的每个对应于操作数内的相同相对位置中的第一源打包字节操作数的字节(例如图示中的垂直对齐的数据元素)。每个未屏蔽的屏蔽位可具有第一值(例如按照图示中采用的一种可能惯例的二进制一),而每个被屏蔽出的屏蔽位可具有第二不同值(例如按照图示中采用的惯例的二进制零)。具体来说,在所示示例中,这些位的值从在右边的最低有效端到在左边的最高有效端为[0011101010001101]。这只是位值的一个示例集合。按照这个示例,字节B0、B1、B5、B7、B9、B10、B11和B14是被屏蔽出的字节,而字节B2、B3、B4、B6、B8、B12、B13和B15是未屏蔽的字节。要意识到,其他实施例可使用更窄或更宽的位屏蔽操作数(例如对于其他源打包数据操作数中的各数据元素的一位)。
与数据元素屏蔽(例如字节屏蔽)相比的位屏蔽的一个潜在优点在于,它可帮助降低与传递和/或利用屏蔽关联的资源利用/消耗。代表性地,取决于具体实现可潜在降低的可能类型的资源利用/消耗的示例包括但不限于与存储器总线、中央处理单元(CPU)、图形处理单元(GPU)、片上系统(SoC)互连、网络接口、通用输入和/或输出(I/O)总线、高速缓存端口带宽、处理器重排序缓冲器、加载缓冲器、存储器组合缓冲器、高速缓存线、物理和虚拟存储器等关联的资源利用/消耗。
在一些实施例中,第二16位源位屏蔽操作数404可表示指令的立即数。例如,十六个屏蔽位可选地可存储在16位、20位、32位或其大小的立即数中。在一些实施例中,立即数的屏蔽位可在运行时间确定(例如,通过如下面将进一步论述的分组协议解码器、通过运行时间编译器等)。在其他实施例中,第二16位源位屏蔽操作数可选地可存储在打包数据操作屏蔽寄存器(例如寄存器118和/或918其中之一)中。在一个方面,打包数据操作屏蔽寄存器可主要专用于判定。在一个方面,处理器的指令集的其他指令可指示作为判定操作数的打包数据操作屏蔽寄存器,以判定打包数据操作(例如打包乘法操作、打包加法操作、打包旋转操作、打包比较操作等)。在又其他实施例中,第二16位源位屏蔽操作数可选地可存储在通用寄存器(例如寄存器119之一)中。
结果打包数据操作数414可响应指令/操作而被生成(例如由执行单元408)并且存储在目的地存储位置中。在一些实施例中,结果打包数据操作数可包括第一源打包字节操作数412的所有数据元素,其对应于在结果打包数据操作数414的一部分中合并在一起的第二源位屏蔽操作数404的未屏蔽的屏蔽位。如所示的,未屏蔽的字节(例如B2、B3、B4、B6、B8、B12、B13和B15)可在结果打包数据操作数的最低有效部分(例如八个最低有效字节)中合并在一起。不是存储所有未屏蔽的字节(例如,在这种情况下的八个最高有效字节)所需的结果打包数据操作数的最高有效字节可选地可具有预定值(例如清除为全零)。作为另一个选项,现有位或数据可保持不变,而不是在这些位中存储零。这可帮助减少存储器带宽访问。处理器可知道被合并的数据元素的数量,并且由此知道所产生的合并元素的界限。备选地,未屏蔽的字节可选地可一起合并到结果打包数据操作数的最高有效部分或其他部分。在所示的实施例中,从结果打包数据操作数中省略被屏蔽出的字节(例如B0、B1、B5、B7、B9、B10、B11和B14)。备选地,在其他实施例中,被屏蔽出的字节可选地可合并在一起,并且存储在没有用来存储未屏蔽的字节的结果打包数据操作数的另一部分中。
图5是示出采用字节屏蔽操作数和合并操作530的字节选择的具体示例实施例(其可响应采用位屏蔽和合并指令的字节选择的实施例而执行)的框图。图5的示例操作与图3的更一般化操作具有某些相似性。为了避免模糊本描述,将主要描述图5的示例操作的不同和/或附加特性,而没有重复相对于图3的更一般化操作的所有可选相似或共同特性和细节。但是要意识到,图3的更一般化操作的先前所描述特性和细节可选地也可适用于图5的示例操作,除非以其它方式陈述或以其它方式清楚地显而易见的(例如,如果它们涉及位屏蔽而不是字节屏蔽)。
在这个示例实施例中,指令指定或者以其他方式指示或者以其他方式具有第一128位源打包字节操作数512,其具有十六个8位字节数据元素。其他实施例可具有更窄(例如64位)或更宽(例如256位、512位、1024位)操作数,并且可具有其他大小数据元素(例如16位数据元素、32位数据元素、64位数据元素等),如先前所描述的。
在这个示例实施例中,指令指定或者以其他方式指示或者以其他方式具有第二128位源打包字节屏蔽操作数504,其具有十六个屏蔽字节。这些屏蔽字节的每个对应于操作数内的相同相对位置的第一源打包字节操作数的字节(例如相同位位置并且在图示中在垂直对齐中所示的)。每个未屏蔽的屏蔽字节可具有第一值(例如按照图示中采用的一种可能惯例的全一[11111111]),而每个被屏蔽出的屏蔽位可具有第二不同值(例如按照图示中采用的惯例的全零[00000000])。在所示示例中,第一源打包字节操作数的位[7:0]中的最低有效字节以及位[127:120]中的最高有效字节是被屏蔽出的字节,而位[15:8]和[23:16]中的字节是未屏蔽的字节。在一些实施例中,第二128位源字节屏蔽操作数504可选地可存储在打包数据寄存器(例如寄存器110和/或810其中之一)中。备选地,可选地可使用存储器位置或其他存储位置。
结果打包数据操作数514可响应指令/操作而被生成(例如由执行单元508)并且存储在目的地存储位置中。在一些实施例中,结果打包数据操作数可包括在结果打包数据操作数514的一部分中合并在一起的对应于第二源字节屏蔽操作数504的未屏蔽的屏蔽字节的第一源打包字节操作数512的所有数据元素。如所示的,位[15:8]和[23:16]中的未屏蔽的字节可在结果打包数据操作数的最低有效部分中合并在一起。不是存储所有未屏蔽的字节所需的结果打包数据操作数的最高有效字节可选地可具有预定值(例如清除为全零)。备选地,未屏蔽的字节可选地可一起合并到结果打包数据操作数的最高有效部分或其他部分。在所示实施例中,结果打包数据操作数可排除或省略所有被屏蔽出的字节。备选地,被屏蔽出的字节可选地可合并在一起,并且存储在没有用来存储未屏蔽的字节的结果打包数据操作数的另一部分。
本文所公开的数据元素选择和合并指令是通用指令,并且可用于各种不同目的。这些指令可单独地或者与其他指令结合用来按照对特定应用、算法或代码是有用的各种不同方式来选择和合并数据元素。这些指令的一种可能使用是要选择和合并网络分组的数据元素。例如,可提取表示定义网络分组的数据流的源和目的地地址以及源和目的地端口的数据元素的四元组的分组的流数据元素。这些流元素的提取对组网中的各种不同目的,诸如例如对执行上下文查找会是有用的。结合分组处理和/或组网的各种其他使用包括但不限于为了报头校验和的一个或多个的目的而选择和合并分组的各种部分、计算部分数字签名、ARP高速缓存、分组交换或其他转发、过滤、基于内容的负荷平衡、哈希分组内容、分组分类和面向应用的组网。在另一方面,这些指令可在组网或其他应用中用来选择和合并数据元素(例如相对较多熵的数据元素)供输入到密码功能(例如哈希、校验和等)。这些指令的又一种可能使用是要选择和合并数据元素供图形二次取样。又一使用是要加速可扩展标记语言(XML)处理、数据库应用、图像处理和压缩。各种其他应用将对本领域的技术人员是显而易见的并且具有本公开的有益效果。为了进一步示出某些概念,将提供处理网络分组中的数据元素选择和合并指令602的使用的详细示例,尽管本发明的范围并不这样限制。
图6是处理器600的示例实施例的框图,并且示出数据元素选择和合并指令602在一些实施例中可如何用来处理网络分组的数据元素。处理器包括协议解码器662。协议解码器经耦合以接收网络分组(例如从网络接口)。协议解码器操作以对这些网络分组的网络协议进行解码。这可按照常规方式进行。在一些实施例中,协议解码器可实现为软件模块(例如存储在处理器外部的存储器中)。这类协议解码器模块常常用来更灵活地对更大量协议进行解码。在其他实施例中,协议解码器可通过管芯上和/或处理器上硬件来实现。例如,对于相对更常用协议,可选地可包含硬件协议解码器。
再次参照图6,协议解码器可接收第一分组660-1。协议解码器可对第一分组的协议严格地解码或确定第一分组的协议。协议解码的输出是在所有相关层(例如TCP/IPV4)的协议的确定。基于此,协议解码器可生成屏蔽。例如,协议解码器可生成并且向解码单元606提供立即数位屏蔽604(例如与立即数104相似)。立即数位屏蔽或其他屏蔽可以可操作以选择相同流的分组的某些感兴趣数据元素和/或使用(一个或多个)相同网络协议作为第一分组。
随后,相同流或连接的第二分组660-2可由协议解码器来接收。协议解码器或报头提取组件或其他组件(未示出)可存储作为打包数据操作数612的第二分组的报头的至少一部分。打包数据操作数612可具有第二分组报头的多个打包数据元素。操作数可存储在打包数据寄存器610的集合中,如先前所描述的。
指示打包数据操作数612的数据元素选择和合并指令602可在解码单元606来接收。解码单元还可接收屏蔽(例如立即数位屏蔽604)。解码单元可对指令进行解码(如先前所描述的),并且控制或者使执行单元608能够使用源打包数据操作数612和屏蔽来执行数据元素选择和合并操作,并且存储结果打包数据操作数614。结果打包数据操作数可具有第二分组的报头的合并的所选/未屏蔽的数据元素。
选择第二分组的报头的哪些特定数据元素取决于具体实现。在一些实施例中,可选择和合并流字节或元素。例如,基于协议解码,协议解码器能够知道流字节的位置(例如TCP/IP源/目的地地址和源/目的地端口号)驻留在第二分组的报头内。协议解码器可生成屏蔽,使得这些流字节未屏蔽或选择(例如,用于流字节的每个的未屏蔽的屏蔽元素以及用于其他字节的被屏蔽出的屏蔽元素)。这些流字节的提取和合并可促进其他操作。例如,另一个组件664可使用这些流字节来执行上下文查找、用于RSS哈希等。这可帮助加速流提取,其常常趋向于是分组处理中的在计算上开销大操作。在其他实施例中,可选择和合并协议字节或其他元素。这可允许随后分组的协议的快速测试,而无需经过这种严格协议解码。在又一些实施例中,可选择和合并第二分组报头中感兴趣的其他字节或数据元素。例如,可提取报头的相对熵元素,并且然后其他组件664,例如密码模块可对相对熵元素执行哈希或其他密码操作。
图7A是数据元素选择和合并指令702A的第一实施例的框图。指令包括操作代码或操作码740A。操作码可表示多个位或一个或多个字段,其可操作以识别将要执行的指令和/或操作(例如数据元素选择和合并操作)。指令还包括第一源打包数据操作数指定符(specifier)742A,以指定第一源打包数据操作数。指令可选地可包括目的地指定符744A,以指定目的地存储位置(结果打包数据操作数要存储在其处)。作为示例,这些指定符(742A、744A)的每个可包括位的集合或一个或多个字段,以显式指定关联操作数的寄存器、存储器位置或其他存储位置的地址。备选地,在另一个实施例中,指定符的一个或多个可选地可对指令是隐式的(例如对操作码是隐式的)而不是显式指定的。例如,指令可具有隐式固定寄存器作为源和/或目的地(其无需显式指定)。作为另一个示例,在一些实施例中,代替目的地指定符744A,用于第一源打包数据操作数的相同寄存器或其他存储位置可选地可隐式用作目的地存储位置。作为示例,指令可采用单个源/目的地指定符(其识别最初用于源操作数并且随后用来存储结果操作数的寄存器或其他存储位置)来取代独立源和目的地指定符742A、744A。在这个实施例中,指令还具有立即数704,以提供源位屏蔽操作数。在一些实施例中,指令还可具有可选数据元素大小指定符746A,以指定或至少指示第一源打包数据操作数的数据元素的大小。数据元素大小指定符可包括一个或多个位或字段。
图7B是数据元素选择和合并指令702B的第二实施例的框图。指令包括操作代码或操作码740B、第一源打包数据操作数指定符742B、可选目的地指定符744B以及可选数据元素大小指定符746B。这些的每个可与指令702A的对应命名的组件相同或相似,并且可具有相同变化和备选。在这个实施例中,代替立即数704,指令702B可选地包括打包数据操作屏蔽指定符748。打包数据操作屏蔽指定符可指定打包数据操作屏蔽寄存器。备选地,可隐式地指示打包数据操作屏蔽寄存器。
图7C是数据元素选择和合并指令702C的第三实施例的框图。指令包括操作代码或操作码740C、第一源打包数据操作数指定符742C、可选目的地指定符744C以及可选数据元素大小指定符746C。这些的每个可与指令702A的对应命名组件相同或相似,并且可具有相同变化和备选。在这个实施例中,代替立即数704和/或打包数据操作屏蔽指定符748,指令702C可选地包括第二源打包数据操作数指定符750。第二源打包数据操作数指定符750可显式指定将要存储打包数据元素屏蔽的第二源打包数据寄存器或者其他打包数据操作数存储位置。备选地,隐式存储位置可选地可用于打包数据元素屏蔽。
要意识到,这些只是适当指令的几个说明性示例实施例。备选实施例可包括指定符的子集,可添加附加指定符或字段。另外,字段的所示顺序/布置不是要求的,而是可按各种方式重新布置字段。此外,字段无需包括位的毗连序列,而是可包括非毗连或独立位等。一些字段潜在地可重叠。在一些实施例中,指令格式可具有如本文其他位置所描述的指令格式(例如VEX或EVEX编码或指令格式),尽管本发明的范围并不这样限制。
图8是打包数据寄存器810的适当集合的示例实施例的框图。打包数据寄存器包括三十二个512位打包数据寄存器(标记为ZMM0至ZMM31)。在所示实施例中,下方(lower)十六个寄存器、即ZMM0-ZMM15的低位256位混叠或覆盖在相应256位打包数据寄存器(标记为YMM0-YMM15)上(尽管这不是要求的)。同样,在所示实施例中,寄存器YMM0-YMM15的低位128位混叠或覆盖在相应128位打包数据寄存器(标记为XMM0-XMM15)上(尽管这也不是要求的)。512位寄存器ZMM0至ZMM31可操作以保持512位打包数据、256位打包数据或128位打包数据。256位寄存器YMM0-YMM15可操作以保存256位打包数据或128位打包数据。128位寄存器XMM0-XMM15可操作以保存128位打包数据。在一些实施例中,寄存器的每个可用来存储打包浮点数据或打包整数数据。支持不同的数据元素大小,包括至少8位字节数据、16位字数据、32位双字、32位单精度浮点数据、64位四字和64位双精度浮点数据。在备选实施例中,可使用不同数量的寄存器和/或不同大小的寄存器。在又其他实施例中,寄存器可以或者可以不使用较大寄存器对较小寄存器的混叠,和/或可以或者可以不用来存储浮点数据。
图9是打包数据操作屏蔽寄存器918的适当集合的示例实施例的框图。在所示实施例中,集合包括标记为k0至k7的八个寄存器。备选实施例可包括少于八个寄存器(例如二、四、六个等)或者多于八个寄存器(例如十六、三十二个等)。这些寄存器的每个可用来存储打包数据操作屏蔽。在所示实施例中,寄存器的每个为64位。在备选实施例中,寄存器的宽度可宽于64位(例如80位、128位等)或者窄于64位(例如8位、16位、32位等)。寄存器可使用众所周知的技术按照不同方式来实现,而并不局限于任何已知的特定类型的电路。适当寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
在一些实施例中,打包数据操作屏蔽寄存器918可以是架构寄存器的独立专用集合,其主要专用于判定(例如判定以数据元素粒度的打包数据操作)。在一些实施例中,指令可编码或指定与用来编码或指定其他类型的寄存器(例如打包数据寄存器、通用寄存器等)所不同的指令格式的不同位或一个或多个不同字段中的打包数据操作屏蔽寄存器。作为示例,指令可使用三位(例如3位字段)来编码或指定八个打包数据操作屏蔽寄存器k0至k7的任一个。在备选实施例中,当存在更少或更多打包数据操作屏蔽寄存器时,可分别使用更少或更多位。在一个具体实现中,只有打包数据操作屏蔽寄存器k1至k7(但不是k0)可作为判定操作数来寻址,以判定被屏蔽的打包数据操作。寄存器k0可用作常规源或目的地,但是可不编码为判定操作数(例如,如果指定k0,则它具有“无屏蔽”编码),尽管这不是要求的。
图10是示出打包数据操作屏蔽寄存器1018的示例实施例并且示出用作打包数据操作屏蔽和/或用于屏蔽的位数取决于打包数据宽度和数据元素宽度的简图。打包数据操作屏蔽寄存器的所示示例实施例为64位宽(尽管这不是要求的)。取决于打包数据宽度和数据元素宽度的组合,全部64位或者仅64位的子集可用作用于屏蔽的打包数据操作屏蔽。一般来说,当使用单个每元素屏蔽控制位时,用于屏蔽的打包数据操作屏蔽寄存器中的位数等于打包数据宽度(以位为单位)除以打包数据元素宽度(以位为单位)。在所示实施例中,寄存器的最低位子集或部分用于屏蔽,尽管这不是要求的。在备选实施例中,可选地可使用最高位子集或另外其他子集。
示范核架构、处理器和计算机架构
处理器核可按照不同方式为了不同目的并且在不同的处理器中实现。例如,这类核的实现可包括:1) 预计用于通用计算的通用有序核;2) 预计用于通用计算的高性能通用无序核;3) 主要预计用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1) CPU,包括预计用于通用计算的一个或多个通用有序核和/或预计用于通用计算的一个或多个通用无序核;以及2) 协处理器,包括主要预计用于图形和/或科学(吞吐量)的一个或多个专用核。这类不同的处理器导致不同的计算机系统架构,其可包括:1) 与CPU分开的芯片上的协处理器;2) 与CPU相同的封装中的独立管芯上的协处理器;3) 与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时称作专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者称作专用核);以及4) 可在相同管芯上包括所描述的CPU(有时称作(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器和附加功能性的片上的系统。接下来描述示范核架构,之后接着示范处理器和计算机架构的描述。
示范核架构
有序和无序核框图
图11A是示出按照本发明的实施例的示范有序流水线和示范寄存器重命名、无序发出/执行流水线的框图。图11B是示出按照本发明的实施例的要包含在处理器中的有序架构核和示范寄存器重命名、无序发出/执行架构核的框图。图11A-B中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名、无序发出/执行流水线和核。给定有序方面是无序方面的子集,将描述无序方面。
图11 A中,处理器流水线1100包括获取阶段1102、长度解码阶段1104、解码阶段1106、分配阶段1108、重命名阶段1110、调度(又称作分派或发出)阶段1112、寄存器读/存储器读阶段1114、执行阶段1116、写回/存储器写阶段1118、异常处置阶段1122和提交阶段1124。
图11B示出包括耦合到执行引擎单元1150并且均耦合到存储器单元1170的前端单元1130的处理器核1190。核1190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或备选核类型。作为又一个选项,核1190可以是专用核(例如诸如网络或通信核)、打包引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1130包括耦合到指令高速缓存单元1134的分支预测单元1132,指令高速缓存单元1134耦合到指令转换后备缓冲器 (TLB)1136,指令转化后备缓冲器(TLB)1136耦合到指令获取单元1138,指令获取单元1138耦合到解码单元1140。解码单元1140(或解码器)可对指令进行解码,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其从原始指令来解码或导出或者以其他方式反映原始指令。解码单元1140可使用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1190包括微代码ROM或其他介质,其存储某些宏指令的微代码(例如在解码单元1140中或者在前端单元1130内)。解码单元1140耦合到执行引擎单元1150中的重命名/分配器单元1152。
执行引擎单元1150包括重命名/分配器单元1152,其耦合到引退单元1154和一个或多个调度器单元1156的集合。(一个或多个)调度器单元1156表示任何数量的不同调度器,包括保留站、中心指令窗口等。(一个或多个)调度器单元1156耦合到(一个或多个)物理寄存器堆(register file)单元1158。(一个或多个)物理寄存器堆单元1158的每个表示一个或多个物理寄存器堆,其中不同的寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一个指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元1158包括向量寄存器单元、写屏蔽寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量屏蔽寄存器和通用寄存器。(一个或多个)物理寄存器堆单元1158被引退单元1154重叠,以示出可实现寄存器重命名和无序执行的各种方式(例如使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)将来文件(file)、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元1154和(一个或多个)物理寄存器堆单元1158耦合到(一个或多个)执行集群1160。(一个或多个)执行集群1160包括一个或多个执行单元1162的集合和一个或多个存储器存取单元1164的集合。执行单元1162可执行各种操作(例如移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)来执行。虽然一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可以仅包括一个执行单元或多个执行单元,其全部执行全部功能。(一个或多个)调度器单元1156、(一个或多个)物理寄存器堆单元1158和(一个或多个)执行集群1160示为可能是多个的,因为某些实施例创建某些类型的数据/操作的独立流水线(例如标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器存取流水线(其各具有其自己的调度器单元)、(一个或多个)物理寄存器堆单元和/或执行集群—以及在独立存储器存取流水线的情况下,实现只有这个流水线的执行集群具有(一个或多个)存储器存取单元1164的某些实施例)。还应当理解,在使用独立流水线的情况下,这些流水线的一个或多个可以是无序发出/执行,而其余的是有序的。
存储器存取单元1164的集合耦合到存储器单元1170,其包括耦合到数据高速缓存单元1174(其耦合到2级(L2)高速缓存单元1176)的数据TLB单元1172。在一个示范实施例中,存储器存取单元1164可包括加载单元、存储地址单元和存储数据单元,其各耦合到存储器单元1170中的数据TLB单元1172。指令高速缓存单元1134还耦合到存储器单元1170中的2级(L2)高速缓存单元1176。L2高速缓存单元1176耦合到一个或多个其他等级的高速缓存,并且最终耦合到主存储器。
作为示例,示范寄存器重命名、无序发出/执行核架构可按如下所述实现流水线1100:1) 指令获取1138执行获取和长度解码阶段1102和1104;2) 解码单元1140执行解码阶段1106;3) 重命名/分配器单元1152执行分配阶段1108和重命名阶段1110;4) (一个或多个)调度器单元1156执行调度阶段1112;5) (一个或多个)物理寄存器堆单元1158和存储器单元1170执行寄存器读/存储器读阶段1114;执行集群1160执行执行阶段1116;6) 存储器单元1170和(一个或多个)物理寄存器堆单元1158执行写回/存储器写阶段1118;7) 各种单元可涉及异常处置阶段1122;以及8) 引退单元1154和(一个或多个)物理寄存器堆单元1158执行提交阶段1124。
核1190可支持一个或多个指令集(例如x86指令集(具有随较新版本已经添加的一些扩展);Sunnyvale,CA的MIPS Technologies的MIPS指令集;Sunnyvale,CA的ARMHoldings的ARM指令集(具有可选附加扩展,例如NEON)),包括本文所描述的(一个或多个)指令。在一个实施例中,核1190包括支持打包数据指令集扩展的逻辑(例如AVX1、AVX2),由此允许许多多媒体应用所使用的操作使用打包数据来执行。
应当理解,核可支持多线程(执行操作或线程的两个或更多并行集合),并且可按照多种方式这样做,包括时间切片多线程、同时多线程(其中单个物理核为物理核同时多线程的线程的每个提供逻辑核)或者其组合(例如,诸如在Intel®超线程技术中的时间切片获取和解码以及此后的同时多线程)。
虽然在无序执行的上下文中描述寄存器重命名,但是应当理解,寄存器重命名可用于有序架构中。虽然处理器的所示实施例还包括独立指令和数据高速缓存单元1134/1174和共享L2高速缓存单元1176,但是备选实施例可具有用于指令和数据的单个内部高速缓存,例如诸如1级(L1)内部高速缓存或者多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存以及核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存全部可以是核和/或处理器外部的。
特定示范有序核架构
图12A-B示出更具体的示范有序核架构的框图,该核会是芯片中的若干逻辑块其中之一(包括相同类型和/或不同类型的其他核)。逻辑块经过具有某种固定功能逻辑、存储器I/O接口和其他必要I/O逻辑(这取决于应用)的高带宽互连网络(例如环形网络)进行通信。
图12A是按照本发明的实施例的单个处理器核连同到管芯上互连网络1202的其连接并且与其2级(L2)高速缓存1204的本地子集的连接的框图。在一个实施例中,指令解码器1200支持具有打包数据指令集扩展的x86指令集。L1高速缓存1206允许对高速缓冲存储器的低等待时间存取到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1208和向量单元1210使用独立寄存器集合(分别为标量寄存器1212和向量寄存器1214),以及在它们之间所传递的数据被写到存储器并且然后从1级(L1)高速缓存1206读回,但是本发明的备选实施例可使用不同方式(例如使用单个寄存器集合,或者包括允许数据在两个寄存器堆之间来传递的通信通路(而没有被写和读回))。
L2高速缓存1204的本地子集是全局L2高速缓存(其划分为独立本地子集,每处理器核一个)的部分。各处理器核具有到L2高速缓存1204的其自己的本地子集的直接存取通路。由处理器核所读取的数据存储在其L2高速缓存子集1204中,并且能够被与存取其自己的本地L2高速缓存子集的其他处理器核并行地快速存取。由处理器核所写入的数据存储在其自己的L2高速缓存子集1204中,并且如果需要则从其他子集来刷新。环形网络确保共享数据的相干性。环形网络是双向的,以便允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内相互通信。各环形数据通路每方向为1012位宽。
图12B是按照本发明的实施例的图12A中的处理器核的部分的扩大视图。图12B包括L1高速缓存1204的L1数据高速缓存1206A部分以及与向量单元1210和向量寄存器1214有关的更多细节。具体来说,向量单元1210是16宽向量处理单元(VPU)(参见16宽ALU 1228),其执行整数、单精度浮点和双精度浮点指令的一个或多个。VPU支持采用拌和(swizzle)单元1220来拌和寄存器输入、采用数字转换单元1222A-B的数字转换以及采用复制单元1224对存储器输入的复制。写屏蔽寄存器1226允许判定所产生向量写。
具有集成存储器控制器和图形的处理器
图13是按照本发明的实施例的可具有一个以上核、可具有集成存储器控制器并且可具有集成图形的处理器1300的框图。图13中的实线框示出具有单个核1302A、系统代理1310、一个或多个总线控制器单元1316的集合的处理器1300,而虚线框的可选添加示出具有多个核1302A-N、系统代理单元1310中的一个或多个集成存储器控制器单元1314的集合和专用逻辑1308的备选处理器1300。
因此,处理器1300的不同实现可包括:1) 具有作为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1308和作为一个或多个通用核(例如通用有序核、通用无序核、两者的组合)的核1302A-N的CPU;2) 具有作为主要预计用于图形和/或科学(吞吐量)的大量专用核的核1302A-N的协处理器;以及3) 具有作为大量通用有序核的核1302A-N的协处理器。因此,处理器1300可以是通用处理器、协处理器或专用处理器,例如诸如网络或通信处理器、打包引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器1300可以是一个或多个衬底的一部分和/或可使用多种工艺技术的任一种(例如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现。
存储器分级结构包括核内的一级或多级高速缓存、一个或多个共享高速缓存单元1306的集合以及耦合到集成存储器控制器单元1314的集合的外部存储器(未示出)。共享高速缓存单元1306的集合可包括一个或多个中间级高速缓存,例如2级(L2)、3级(L3)、4级(L4)或者其他高速缓存级、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环的互连单元1312互连集成图形逻辑1308、共享高速缓存单元1306的集合和系统代理单元1310/(一个或多个)集成存储器控制器单元1314,但是备选实施例可将任何数量的众所周知技术用于互连这类单元。在一个实施例中,在一个或多个高速缓存单元1306与核1302A-N之间保持相干性。
在一些实施例中,核1302A-N的一个或多个能够进行多线程。系统代理1310包括协调和操作核1302A-N的那些组件。系统代理单元1310可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括用于调节核1302A-N和集成图形逻辑1308的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1302A-N在架构指令集方面可以是同构或异构的;也就是说,核1302A-N的两个或更多可以能够执行相同指令集,而其他核可以能够仅执行那个指令集的子集或者不同的指令集。
示范计算机架构
图14-17是示范计算机架构的框图。用于膝上型、台式、手持PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器,数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器,蜂窝电话、便携媒体播放机、手持装置和各种其他电子装置的本领域已知的其他系统设计和配置也是适合的。一般来说,能够结合本文所公开的处理器和/或其他执行逻辑的大量系统或电子装置一般是适合的。
现在参照图14,所示的是按照本发明的一个实施例的系统1400的框图。系统1400可包括一个或多个处理器1410、1415,其耦合到控制器集线器1420。在一个实施例中,控制器集线器1420包括图形存储器控制器集线器(GMCH)1490和输入/输出集线器(IOH)1450(其可在独立芯片上);GMCH 1490包括存储器和图形控制器(存储器1440和协处理器1445与其耦合);IOH 1450将输入/输出(I/O)装置1460耦合到GMCH 1490。备选地,存储器和图形控制器的一个或两者集成在处理器内(如本文所描述的),存储器1440和协处理器1445直接耦合到处理器1410以及具有IOH 1450的单个芯片中的控制器集线器1420。
附加处理器1415的可选性质在图14中采用虚线表示。各处理器1410、1415可包括本文所描述的处理核的一个或多个,并且可以是处理器1300的某个版本。
存储器1440可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器集线器1420经由多点总线(例如前侧总线(FSB))、点对点接口(例如快速通路互连(QPI))或者类似连接1495与(一个或多个)处理器1410、1415进行通信。
在一个实施例中,协处理器1445是专用处理器,例如诸如高吞吐量MIC处理器、网络或通信处理器、打包引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1420可包括集成图形加速器。
在包括架构、微架构、热、功率消耗特性等的优点的衡量标准范围方面,在物理资源1410、1415之间存在各种差异。
在一个实施例中,处理器1410执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1410将这些协处理器指令辨别为应当由所附连的协处理器1445来执行的类型。相应地,处理器1410在协处理器总线或其他互连上向协处理器1445发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1445接受和执行所接收的协处理器指令。
现在参照图15,所示的是按照本发明的实施例的第一更具体示范系统1500的框图。如图15中所示的,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550所耦合的第一处理器1570和第二处理器1580。处理器1570和1580的每个可以是处理器1300的某种版本。在本发明的一个实施例中,处理器1570和1580分别是处理器1410和1415,而协处理器1538是协处理器1445。在另一个实施例中,处理器1570和1580分别是处理器1410、协处理器1445。
示出处理器1570和1580,其分别包括集成存储器控制器(IMC)单元1572和1582。处理器1570还包括作为其总线控制器单元的部分的点对点(P-P)接口1576和1578;类似地,第二处理器1580包括P-P接口1586和1588。处理器1570、1580可使用点对点(P-P)接口电路1578、1588经由P-P接口1550来交换数据。如图15中所示的,IMC 1572和1582将处理器耦合到相应存储器(即存储器1532和存储器1534),其可以是本地附连到相应处理器的主存储器的部分。
处理器1570、1580每个可使用点对点接口电路1576、1594、1586、1598经由单独P-P接口1552、1554与芯片集1590交换信息。芯片集1590可选地可经由高性能接口1539与协处理器1538交换信息。在一个实施例中,协处理器1538是专用处理器,例如诸如高吞吐量MIC处理器、网络或通信处理器、打包引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可包含在处理器中或者两个处理器外部,但是仍然经由P-P互连与处理器连接,使得如果将处理器置入低功耗模式,则任一个或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集1590可经由接口1596耦合到第一总线1516。在一个实施例中,第一总线1516可以是外设组件互连(PCI)总线或者例如PCI Express总线等总线或另一种第三代I/O互连总线(尽管本发明的范围并不这样限制)。
如图15中所示的,各种I/O装置1514可连同总线桥1518(其将第一总线1516耦合到第二总线1520)一起耦合到第一总线1516。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器之类的一个或多个附加处理器1515耦合到第一总线1516。在一个实施例中,第二总线1520可以是低引脚数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线1520,包括例如键盘和/或鼠标1522、通信装置1527以及可包括指令/代码和数据1530的诸如磁盘驱动器或其他大容量存储装置之类的存储单元1528。此外,音频I/O 1524可耦合到第二总线1520。注意,其他架构是可能的。例如,代替图15的点对点架构,系统可实现多点总线或其他这种架构。
现在参照图16,所示的是按照本发明的实施例的第二更具体示范系统1600的框图。图15和图16中的相同元件具有相同参考标号,并且从图16中省略图15的某些方面,以避免模糊图16的其他方面。
图16示出处理器1570、1580可分别包括集成存储器和I/O控制逻辑(“CL”)1572和1582。因此,CL 1572、1582包括集成存储器控制器单元,并且包括I/O控制逻辑。图16示出不仅存储器1532、1534耦合到CL 1572、1582,而且还示出I/O装置1614也耦合到控制逻辑1572、1582。传统I/O装置1615耦合到芯片集1590。
现在参照图17,所示的是按照本发明的实施例的SoC 1700的框图。图13中的相似元件具有相同参考标号。而且,虚线框是更高级SoC上的可选特征。图17中,(一个或多个)互连单元1702耦合到:应用处理器1710,其包括一个或多个核202A-N和(一个或多个)共享高速缓存单元1306的集合;系统代理单元1310;(一个或多个)总线控制器单元1316;(一个或多个)集成存储器控制器单元1314;一个或多个协处理器1720的集合,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1730;直接存储器存取(DMA)单元1732;以及显示单元1740,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1720包括专用处理器,例如诸如网络或通信处理器、打包引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文所公开的机制的实施例可通过硬件、软件、固件或者这类实现方式的组合来实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,其中可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
例如图15中所示的代码1530的程序代码可应用于输入指令,以执行本文所描述的功能并且生成输出信息。输出信息可按照已知方式应用于一个或多个输出装置。为了本申请的目的,处理系统包括具有例如诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器的处理器的任何系统。
程序代码可通过高级过程或面向对象的编程语言来实现,以便与处理系统进行通信。如果期望,程序代码也可通过汇编或机器语言来实现。实际上,本文所描述的机制在范围方面并不局限于任何具体编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过机器可读介质上存储的、表示处理器中的各种逻辑的代表性指令来实现,其在由机器读取时使机器制作执行本文所描述的技术的逻辑。称作“IP核”的这类表示可存储在有形机器可读介质上,并且供应给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
这种机器可读存储媒体可以非限制性地包括通过机器或装置所制造或形成的产品的非暂时有形布置,其中包括:例如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘;半导体器件(例如只读存储器(ROM))、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SARAM))、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的媒体。
相应地,本发明的实施例还包括非暂时有形机器可读媒体,其包含指令或者包含定义本文所描述的结构、电路、设备、处理器和/或系统特征的设计数据(例如硬件描述语言(HDL))。这类实施例又可称作程序产品。
模拟(包括二进制转化、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换成目标指令集。例如,指令转换器可将指令转化(例如使用静态二进制转化、包括动态编译的动态二进制转化)、变形、模拟或者以其他方式将指令变换成将要由核来处理的一个或多个其他指令。指令转换器可通过软件、硬件、固件或其何组合来实现。指令转换器可以在处理器上、处理器外或者部分处理器上和部分处理器外。
图18是按照本发明的实施例的与软件指令转换器用来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对照的框图。在所示实施例中,指令转换器是软件指令转换器,尽管备选地,指令转换器可通过软件、固件、硬件或者其各种组合来实现。图18示出以高级语言1802的程序可使用x86编译器1804来编译,以生成x86二进制代码1806,其可由具有至少一个x86指令集核的处理器1816本机执行。具有至少一个x86指令集核的处理器1816表示任何处理器,其能够通过兼容地执行或者以其他方式处理下列方面来执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能:(1) Intel x86指令集核的指令集的相当大部分;或者(2) 针对在具有至少一个x86指令集核的Intel处理器上运行的应用或其他软件的对象代码版本,以便实现与具有至少一个x86指令集核的Intel处理器基本上相同的结果。x86编译器1804表示可操作以生成x86二进制代码1806(例如对象代码)(其能够在具有或没有附加链接处理的情况下在具有至少一个x86指令集核的处理器1816上执行)的编译器。类似地,图18示出以高级语言1802的程序可使用备选指令集编译器1808来编译,以便生成备选指令集二进制代码1810,其可由没有至少一个x86指令集核的处理器1814(例如具有执行Sunnyvale,CA的MIPS Technologies的MIPS指令集和/或执行Sunnyvale,CA的ARM Holdings的ARM指令集的核的处理器)本机执行。指令转换器1812用来将x86二进制代码1806转换为可由没有x86指令集核的处理器1814本机执行的代码。这个转换的代码不可能与备选指令集二进制代码1810是相同的,因为能够进行这个操作的指令转换器难以制作;但是,转换的代码将实现一般操作,并且由来自备选指令集的指令来组成。因此,指令转换器1812表示软件、固件、硬件或者其组合,其经过模拟、仿真或者任何其他过程允许处理器或者没有x86指令集处理器或核的其他电子装置执行x86二进制代码1806。
对图3-10的任何一个所描述的组件、特征和细节可选地也可适用于图1-2的任何一个。此外,对设备的任何一个所描述的组件、特征和细节可选地也可适用于方法的任何一个,其在实施例中可由和/或采用这种设备来执行。本文所描述处理器的任何一个可包含在本文所公开的计算机系统的任何一个中。在一个方面,系统可用作组网设备,例如诸如交换机、路由器、其他网络设备(例如防火墙、嗅探器(sniffer)等),其可利用本文所公开指令用于分组处理相关的活动(尽管本发明的范围并不这样限制)。在一些实施例中,指令可具有本文所公开指令格式的特征或细节(尽管是这是要求的)。
在本描述和权利要求中,可使用术语“耦合”和/或“连接”连同其派生。这些术语不预计作为彼此的同义词。而是,在实施例中,“连接”可用来指示两个或更多元件相互直接物理和/或电接触。“耦合”可表示两个或更多元件相互直接物理和/或电接触。但是,“耦合”也可表示两个或更多元件不是相互直接接触,但是仍然还与彼此合作或交互。例如,执行单元可经过一个或多个居间组件与寄存器和/或解码单元耦合。附图中,箭头用来示出连接和耦合。
可使用术语“和/或”。如本文所使用的,术语“和/或”表示一个或另一个或者两者(例如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包括示例1的处理器,其中解码单元要对于要具有第二源操作数(其要具有作为屏蔽位的多个屏蔽元素)的指令进行解码。
示例5包括示例1的处理器,其中解码单元要对要具有第二源操作数(其要作为打包数据操作数)的指令进行解码,并且其中屏蔽元素要作为屏蔽数据元素。
示例6包括示例1的处理器,其中执行单元响应指令而要存储结果打包数据操作数,其要包括在结果打包数据操作数的最低有效部分中并且按照与第一源打包数据操作数中相同的顺序合并在一起的所述所有数据元素。
示例7包括示例1的处理器,其中执行单元响应指令而要存储结果打包数据操作数,其要包括在结果打包数据操作数的最高有效部分中并且按照与第一源打包数据操作数中相同的顺序合并在一起的所述所有数据元素。
示例8包括示例1的处理器,其中执行单元响应指令而要存储结果打包数据操作数,所述结果打包数据操作数要具有要省略第一源打包数据操作数的所有数据元素(其对应于第二源操作数的被屏蔽出的屏蔽元素)的合并数据元素。另外,可选地,其中第一源打包数据操作数要具有至少一个数据元素,其对应于与未屏蔽的屏蔽元素对应的数据元素之间的被屏蔽出的屏蔽元素。
示例9包括示例1至8中的任一个的处理器,其中解码单元要对指令(其要具有指示第一源打包数据操作数的数据元素的大小的一个或多个位)进行解码。
示例10包括示例1至8的任一个的处理器,其中解码单元要对要具有第一源打包数据操作数(其要具有至少128位的位宽度,并且可选地其要具有从多个8位数据元素和多个16位数据元素中选取的多个数据元素)的指令进行解码。另外,可选地,其中目的地存储位置包括处理器的打包数据寄存器。
示例11包括示例1至8的任一个的处理器,其中,所述解码单元要对要具有操作码的所述指令进行解码,所述操作码要指示对应于所述第二源操作数的所述未屏蔽的屏蔽元素的所述第一源打包数据操作数的所述所有数据元素要在所述结果打包数据操作数的所述部分中合并在一起的,而不管所述第一源打包数据操作数中的所述数据元素的任何特定布置,并且不管所述第二源操作数中的所述屏蔽元素的任何特定布置。
示例12包括示例1至8的任一个的处理器,其中处理器包括通用处理器。另外,可选地,其中目的地存储位置包括处理器的打包数据寄存器。
示例13是一种在处理器中的方法,其包括接收数据元素选择和合并指令。数据元素选择和合并指令具有第一源打包数据操作数(其具有多个数据元素),并且具有第二源操作数(其具有多个屏蔽元素)。第二源操作数的各屏蔽元素对应于相同相对位置中的第一源打包数据操作数的不同数据元素。该方法还包括响应数据元素选择和合并指令而在目的地存储位置中存储结果打包数据操作数。目的地存储位置通过数据元素选择和合并指令来指示。结果打包数据操作数包括在结果打包数据操作数的一部分中合并在一起的对应于第二源操作数的未屏蔽的屏蔽元素的第一源打包数据操作数的所有数据元素。
示例14包括示例13的方法,其中接收包括接收具有作为第二源操作数(其具有屏蔽元素)的立即数的指令。
示例15包括示例13的方法,其中接收包括接收具有第二源操作数(其是用于判定的打包数据操作屏蔽寄存器的专用集合的打包数据操作屏蔽寄存器)的指令。
示例16包括示例13的方法,还包括存取第二源操作数,其具有作为屏蔽元素的屏蔽位。
示例17包括示例13的方法,其中接收包括接收具有指示第一源打包数据操作数的数据元素的大小的一个或多个位的指令。
示例18包括示例13的方法,其中接收包括接收指示第一源打包数据操作数(其具有至少128位并且可选地包括作为8位数据元素和16位数据元素其中之一的数据元素)的指令。另外,可选地,其中存储包括存储具有在结果打包数据操作数的最低有效部分中并且按照与它们出现在第一源打包数据操作数中的相同顺序合并在一起的所有数据元素的结果打包数据操作数。
示例19包括示例13的方法,还包括接收来自网络的分组,并且存储作为第一源打包数据操作数的分组的一部分。该方法可选地还可包括对分组的协议进行解码,并且可选地基于分组的协议的解码来确定分组的部分中的流字节的位置。该方法可选地还可包括对流字节的每个存储第二源操作数中的未屏蔽的屏蔽元素,并且对分组的部分中的其他字节存储第二源操作数中的被屏蔽出的元素。
示例20包括示例13的方法,其中第一源打包数据操作数具有来自从网络已经接收的分组的数据元素。可选地,该方法还可包括对结果打包数据操作数的合并数据元素执行密码操作。
示例21是用于处理指令的系统,其包括互连以及与互连耦合的处理器。处理器要接收数据元素选择和合并指令,其要具有第一源打包数据操作数(其要具有多个数据元素)。指令要具有第二源操作数,其要具有多个屏蔽元素。第二源操作数的各屏蔽元素要对应于相同相对位置中的第一源打包数据操作数的不同数据元素。指令还要指示目的地存储位置。处理器响应指令而要将结果打包数据操作数存储在目的地存储位置中。结果打包数据操作数包括在结果打包数据操作数的一部分中合并在一起的对应于第二源操作数的未屏蔽的屏蔽元素的第一源打包数据操作数的所有数据元素。系统还包括与互连耦合的动态随机存取存储器(DRAM)。DRAM存储协议解码指令集,指令集在由处理器执行时使处理器执行包括对第一网络分组的协议进行解码以及生成第二源操作数以不屏蔽存储在第一源打包数据操作数中的第二网络分组的报头的至少一部分中流元素并且屏蔽非流元素的操作。
示例22包括示例21的系统,其中第二源操作数包括立即数。
示例23是一种制造产品,其包括非暂时机器可读存储介质。非暂时机器可读存储介质存储数据元素选择和合并指令。指令具有第一源打包数据操作数(其要具有多个数据元素),并且具有第二源操作数(其要具有多个屏蔽元素)。第二源操作数的各屏蔽元素要对应于相同相对位置中的第一源打包数据操作数的不同数据元素。指令要指示目的地存储位置。指令如果由机器执行则要使机器执行操作,所述操作包括将结果打包数据操作数存储在目的地存储位置中。结果打包数据操作数要包括在结果打包数据操作数的一部分中合并在一起的对应于第二源操作数的未屏蔽的屏蔽元素的第一源打包数据操作数的所有数据元素。
示例24包括示例23的制造产品,其中第二源操作数是用于判定的打包数据操作屏蔽寄存器的专用集合的打包数据操作屏蔽寄存器。
示例25是操作以执行示例13至20的任一个的方法的处理器或其他设备。
示例26是包括用于执行示例13至20的任一个的方法的部件的处理器或其他设备。
示例27是包括执行示例13至20的任一个的方法的模块的处理器或其他设备。
示例28是一种处理器,其包括用于执行示例13至20的任一个的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
示例29是一种包括可选的非暂时机器可读介质的制造产品,非暂时机器可读介质可选地存储或者以其他方式提供指令,其如果和/或在由处理器、计算机系统、电子装置或其他机器执行时操作以使机器执行示例13至20的任一个的方法。
示例30是一种包括总线或其他互连、与互连所耦合的示例1至12的任一个的处理器以及与互连所耦合的至少一个组件(其从动态随机存取存储器(DRAM)、网络接口、图形芯片、无线通信芯片、全球移动通信系统(GSM)天线、相变存储器和摄像机中选取)的计算机系统、其他电子装置或其他设备。
示例31是基本上如本文所描述的处理器或其他设备。
示例32是操作以执行基本上如本文所描述的任何方法的处理器或其他设备。
示例33是操作以执行基本上如本文所描述的任何数据元素选择和紧致指令的处理器或其他设备。
示例34是包括用于对第一指令集的指令进行解码的解码单元的处理器或其他设备。解码单元要接收模拟第一指令的第一指令集的一个或多个指令。第一指令可以是基本上如本文所公开的任何数据元素选择和紧致指令,并且要属于第二不同指令集。处理器或其他设备还包括与解码单元耦合的一个或多个执行单元,以执行第一指令集的一个或多个指令。一个或多个执行单元响应第一指令集的一个或多个指令而要将结果存储在目的地中。结果可包括基本上如本文所公开的数据元素选择和紧致指令的任何结果。
示例35是包括具有用于对第一指令集的指令进行解码的解码单元的处理器的一种计算机系统或其他电子装置。处理器还具有一个或多个执行单元。电子装置还包括与处理器耦合的存储装置。存储装置要存储第一指令,其可以是基本上如本文所公开的任何数据元素选择和紧致指令,并且其要属于第二不同指令集。存储装置还要存储指令,以便将第一指令转换为第一指令集的一个或多个指令。第一指令集的一个或多个指令在由处理器执行时要使处理器将结果存储在目的地中。结果可包括基本上如本文所公开的数据元素选择和紧致指令的任何结果。
Claims (35)
1.一种处理器,包括:
多个打包数据寄存器;
解码单元,用于对数据元素选择和合并指令进行解码,所述数据元素选择和合并指令具有第一源打包数据操作数,所述第一源打包数据操作数具有多个数据元素,并且所述数据元素选择和合并指令具有第二源操作数,所述第二源操作数要具有多个屏蔽元素,其中所述第二源操作数的各屏蔽元素对应于相同相对位置中的所述第一源打包数据操作数的不同数据元素;以及
与所述解码单元耦合的执行单元,所述执行单元响应所述数据元素选择和合并指令而在要通过所述数据元素选择和合并指令所指示的目的地存储位置中存储结果打包数据操作数,所述结果打包数据操作数包括在所述结果打包数据操作数的最低有效部分和最高有效部分中之一中合并在一起的对应于所述第二源操作数的未屏蔽的屏蔽元素的所述第一源打包数据操作数的所有数据元素,其中所述所有数据元素要在所述结果打包数据操作数的最低有效部分和最高有效部分中所述之一中被合并在一起对于所述指令的操作码是隐式的;且
所述执行单元响应所述数据元素选择和合并指令,要存储指示合并在一起的所述第一源打包数据操作数的所述所有数据元素的数量的值。
2.如权利要求1所述的处理器,其中,所述解码单元要对要具有作为所述第二源操作数的立即数的所述指令进行解码,所述第二源操作数要具有所述屏蔽元素,并且其中所述屏蔽元素是屏蔽位。
3.如权利要求1所述的处理器,其中,所述解码单元要对要具有所述第二源操作数的所述指令进行解码,所述第二源操作数要作为所述处理器的打包数据操作屏蔽寄存器集合的打包数据操作屏蔽寄存器,其中所述处理器的指令集的多个其他指令指定所述打包数据操作屏蔽寄存器集合的寄存器以提供判定操作数。
4.如权利要求1所述的处理器,其中,所述解码单元要对要具有所述第二源操作数的所述指令进行解码,所述第二源操作数要具有作为屏蔽位的所述多个屏蔽元素。
5.如权利要求1所述的处理器,其中,所述解码单元要对要具有所述第二源操作数的所述指令进行解码,所述第二源操作数要作为打包数据操作数,并且其中所述屏蔽元素要作为屏蔽数据元素。
6.如权利要求1所述的处理器,其中,所述执行单元响应所述指令而要存储所述结果打包数据操作数,其要包括在所述结果打包数据操作数的所述最低有效部分中并且按照与所述第一源打包数据操作数中相同的顺序合并在一起的所述所有数据元素。
7.如权利要求1所述的处理器,其中,所述执行单元响应所述指令而要存储所述结果打包数据操作数,其要包括在所述结果打包数据操作数的所述最高有效部分中并且按照与所述第一源打包数据操作数中相同的顺序合并在一起的所述所有数据元素。
8.如权利要求1所述的处理器,其中,所述执行单元响应所述指令而要存储所述结果打包数据操作数,所述结果打包数据操作数要具有要省略对应于所述第二源操作数的被屏蔽出的屏蔽元素的所述第一源打包数据操作数的所有数据元素的所述合并的数据元素,并且其中所述第一源打包数据操作数要具有至少一个数据元素,所述至少一个数据元素对应于与未屏蔽的屏蔽元素对应的数据元素之间的被屏蔽出的屏蔽元素。
9.如权利要求1至8中的任一项所述的处理器,其中,所述解码单元要对要具有指示所述第一源打包数据操作数的所述数据元素的大小的一个或多个位的所述指令进行解码。
10.如权利要求1至8中的任一项所述的处理器,其中,所述解码单元要对要具有所述第一源打包数据操作数的所述指令进行解码,所述第一源打包数据操作数要具有至少128位的位宽度,并且要具有从多个8位数据元素和多个16位数据元素中选取的多个数据元素,并且其中所述目的地存储位置包括所述处理器的打包数据寄存器。
11.如权利要求1至8中的任一项所述的处理器,其中,所述解码单元要对要具有所述操作码的所述指令进行解码,所述操作码要指示对应于所述第二源操作数的所述未屏蔽的屏蔽元素的所述第一源打包数据操作数的所述所有数据元素要在所述结果打包数据操作数的所述最低有效部分或所述最高有效部分中合并在一起,而不管所述第一源打包数据操作数中的数据元素的任何特定布置,并且不管所述第二源操作数中的屏蔽元素的任何特定布置。
12.如权利要求1至8中的任一项所述的处理器,其中,所述处理器包括通用处理器,并且其中所述目的地存储位置包括所述处理器的打包数据寄存器。
13.如权利要求1至8中的任一项所述的处理器,其中所述值要被存储在通用寄存器中,其中所述指令要指示所述通用寄存器,其中所述第二源操作数要被存储在具有至少64位的架构掩蔽寄存器中,并且其中所述第二源操作数具有小于64位。
14.一种处理器,包括:
多个打包数据寄存器;
解码单元,用于对数据元素选择和合并指令进行解码,所述数据元素选择和合并指令具有第一源打包数据操作数,所述第一源打包数据操作数具有多个数据元素,并且所述数据元素选择和合并指令具有第二源操作数,所述第二源操作数要具有多个屏蔽元素,其中所述第二源操作数的各屏蔽元素对应于相同相对位置中的所述第一源打包数据操作数的不同数据元素;以及
与所述解码单元耦合的执行单元,所述执行单元响应所述数据元素选择和合并指令而在要通过所述数据元素选择和合并指令所指示的目的地存储位置中存储结果打包数据操作数,所述结果打包数据操作数包括在所述结果打包数据操作数的最低有效部分中合并在一起的对应于所述第二源操作数的未屏蔽的屏蔽元素的所述第一源打包数据操作数的所有数据元素,其中要使用所述最低有效部分存储所述所有数据元素要对所述数据元素选择和合并指令的操作码是隐示的,且
所述执行单元响应所述数据元素选择和合并指令,要存储指示合并在一起的所述第一源打包数据操作数的所述所有数据元素的数量的值。
15.一种在处理器中的方法,包括:
接收数据元素选择和合并指令,所述数据元素选择和合并指令具有第一源打包数据操作数,所述第一源打包数据操作数具有多个数据元素,并且所述数据元素选择和合并指令具有第二源操作数,所述第二源操作数具有多个屏蔽元素,所述第二源操作数的各屏蔽元素对应于相同相对位置中的所述第一源打包数据操作数的不同数据元素;以及
响应所述数据元素选择和合并指令而在目的地存储位置中存储结果打包数据操作数,所述目的地存储位置通过所述数据元素选择和合并指令指示,所述结果打包数据操作数包括在所述结果打包数据操作数的最低有效部分和最高有效部分中之一中合并在一起的对应于所述第二源操作数的未屏蔽的屏蔽元素的所述第一源打包数据操作数的所有数据元素,其中所述所有数据元素要在所述结果打包数据操作数的最低有效部分和最高有效部分中所述之一中被合并在一起对于所述指令的操作码是固定的;
响应所述数据元素选择和合并指令,要存储指示合并在一起的所述第一源打包数据操作数的所述所有数据元素的数量的值。
16.如权利要求15所述的方法,其中,接收包括接收具有作为所述第二源操作数的立即数的所述指令,所述第二源操作数具有所述屏蔽元素。
17.如权利要求15所述的方法,其中,接收包括接收具有所述第二源操作数的所述指令,所述第二源操作数是用于判定的打包数据操作屏蔽寄存器的专用集合的打包数据操作屏蔽寄存器。
18.如权利要求15所述的方法,还包括存取所述第二源操作数,所述第二源操作数具有作为所述屏蔽元素的屏蔽位。
19.如权利要求15所述的方法,其中,接收包括接收具有指示所述第一源打包数据操作数的所述数据元素的大小的一个或多个位的所述指令。
20.如权利要求15所述的方法,其中,接收包括接收指示所述第一源打包数据操作数的所述指令,所述第一源打包数据操作数具有至少128位,并且包括8位数据元素和16位数据元素中的一个的数据元素,并且其中存储包括存储所述结果打包数据操作数,所述结果打包数据操作数具有在所述结果打包数据操作数的所述最低有效部分中合并在一起的所述所有数据元素并且所述所有数据元素按照与它们出现在所述第一源打包数据操作数中的相同顺序被合并在一起。
21.如权利要求15所述的方法,还包括:
接收来自网络的分组;
存储作为所述第一源打包数据操作数的所述分组的一部分;
对所述分组的协议进行解码;
基于所述分组的所述协议的所述解码来确定所述分组的所述部分中的流字节的位置;
对所述流字节的每个存储所述第二源操作数中的未屏蔽的屏蔽元素,并且对所述分组的所述部分中的其他字节存储所述第二源操作数中的被屏蔽出的元素。
22.如权利要求15所述的方法,其中,所述第一源打包数据操作数具有来自从网络已经接收到的分组的数据元素,并且还包括对所述结果打包数据操作数的所述合并的数据元素来执行密码操作。
23.一种用于处理指令的系统,包括:
互连;
与所述互连所耦合的处理器,所述处理器接收要具有第一源打包数据操作数并且要具有第二源操作数的数据元素选择和合并指令,所述第一源打包数据操作数要具有多个数据元素,所述第二源操作数要具有多个屏蔽元素,其中所述第二源操作数的各屏蔽元素要对应于相同相对位置中的所述第一源打包数据操作数的不同数据元素,并且所述指令指示目的地存储位置,所述处理器响应所述指令而在所述目的地存储位置中存储结果打包数据操作数,所述结果打包数据操作数包括在所述结果打包数据操作数的最低有效部分和最高有效部分中之一中合并在一起的对应于所述第二源操作数的未屏蔽的屏蔽元素的所述第一源打包数据操作数的所有数据元素,其中所述所有数据元素要在所述结果打包数据操作数的最低有效部分和最高有效部分中所述之一中被合并在一起对于所述指令的操作码是固定的,其中所述处理器响应所述数据元素选择和合并指令,要存储指示合并在一起的所述第一源打包数据操作数的所述所有数据元素的数量的值;以及
与所述互连所耦合的动态随机存取存储器DRAM,所述DRAM存储协议解码指令的集合,所述指令的集合在由所述处理器执行时使所述处理器执行包括下列步骤的操作:
对第一网络分组的协议进行解码;以及
生成所述第二源操作数以不屏蔽所述第一源打包数据操作数中存储的第二网络分组的报头的至少一部分中的流元素并且屏蔽非流元素。
24.如权利要求23所述的系统,其中,所述第二源操作数包括立即数。
25.一种包括用于执行如权利要求15-22中的任一项所述的方法的部件的设备。
26.一种制造产品,包括非暂时机器可读介质,其存储指令,所述指令如果由机器执行则操作以使所述机器执行如权利要求15-22中的任一项所述的方法。
27.一种处理器,包括:
多个打包数据寄存器;
解码部件,用于对数据元素选择和合并指令进行解码,所述数据元素选择和合并指令具有第一源打包数据操作数,所述第一源打包数据操作数具有多个数据元素,并且所述数据元素选择和合并指令具有第二源操作数,所述第二源操作数要具有多个屏蔽元素,其中所述第二源操作数的各屏蔽元素对应于相同相对位置中的所述第一源打包数据操作数的不同数据元素;以及
与所述解码部件耦合的执行部件,所述执行部件响应所述数据元素选择和合并指令而在要通过所述数据元素选择和合并指令所指示的目的地存储位置中存储结果打包数据操作数,所述结果打包数据操作数包括在所述结果打包数据操作数的最低有效部分和最高有效部分中之一中合并在一起的对应于所述第二源操作数的未屏蔽的屏蔽元素的所述第一源打包数据操作数的所有数据元素,其中所述所有数据元素要在所述结果打包数据操作数的最低有效部分和最高有效部分中所述之一中被合并在一起对于所述指令的操作码是隐式的,并且所述执行部件响应所述数据元素选择和合并指令,要存储指示合并在一起的所述第一源打包数据操作数的所述所有数据元素的数量的值。
28.一种处理器中的设备,包括:
用于接收数据元素选择和合并指令的部件,所述数据元素选择和合并指令具有第一源打包数据操作数,所述第一源打包数据操作数具有多个数据元素,并且所述数据元素选择和合并指令具有第二源操作数,所述第二源操作数具有多个屏蔽元素,所述第二源操作数的各屏蔽元素对应于相同相对位置中的所述第一源打包数据操作数的不同数据元素;以及
用于响应所述数据元素选择和合并指令而在目的地存储位置中存储结果打包数据操作数的部件,所述目的地存储位置通过所述数据元素选择和合并指令指示,所述结果打包数据操作数包括在所述结果打包数据操作数的最低有效部分和最高有效部分中之一中合并在一起的对应于所述第二源操作数的未屏蔽的屏蔽元素的所述第一源打包数据操作数的所有数据元素,其中所述所有数据元素要在所述结果打包数据操作数的最低有效部分和最高有效部分中所述之一中被合并在一起对于所述指令的操作码是固定的,并且用于响应所述数据元素选择和合并指令存储结果打包数据操作数的所述部件要存储指示合并在一起的所述第一源打包数据操作数的所述所有数据元素的数量的值。
29.如权利要求28所述的设备,其中,接收包括接收具有作为所述第二源操作数的立即数的所述指令,所述第二源操作数具有所述屏蔽元素。
30.如权利要求28所述的设备,其中,接收包括接收具有所述第二源操作数的所述指令,所述第二源操作数是用于判定的打包数据操作屏蔽寄存器的专用集合的打包数据操作屏蔽寄存器。
31.如权利要求28所述的设备,还包括用于存取所述第二源操作数的部件,所述第二源操作数具有作为所述屏蔽元素的屏蔽位。
32.如权利要求28所述的设备,其中,接收包括接收具有指示所述第一源打包数据操作数的所述数据元素的大小的一个或多个位的所述指令。
33.如权利要求28所述的设备,其中,接收包括接收指示所述第一源打包数据操作数的所述指令,所述第一源打包数据操作数具有至少128位,并且包括8位数据元素和16位数据元素中的一个的数据元素,并且其中存储包括存储所述结果打包数据操作数,所述结果打包数据操作数具有在所述结果打包数据操作数的所述最低有效部分中合并在一起的所述所有数据元素并且所述所有数据元素按照与它们出现在所述第一源打包数据操作数中的相同顺序被合并在一起。
34.如权利要求28所述的设备,还包括:
用于接收来自网络的分组的部件;
用于存储作为所述第一源打包数据操作数的所述分组的一部分的部件;
用于对所述分组的协议进行解码的部件;
用于基于所述分组的所述协议的所述解码来确定所述分组的所述部分中的流字节的位置的部件;
用于对所述流字节中的每个存储所述第二源操作数中的未屏蔽的屏蔽元素的部件,以及用于对所述分组的所述部分中的其他字节存储所述第二源操作数中的被屏蔽出的元素的部件。
35.如权利要求28所述的设备,其中,所述第一源打包数据操作数具有来自从网络已经接收的分组的数据元素,并且还包括用于对所述结果打包数据操作数的所述合并的数据元素来执行密码操作的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/491,548 US10133570B2 (en) | 2014-09-19 | 2014-09-19 | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
US14/491548 | 2014-09-19 | ||
PCT/US2015/045827 WO2016043908A1 (en) | 2014-09-19 | 2015-08-19 | Data element selection and consolidation processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106575216A CN106575216A (zh) | 2017-04-19 |
CN106575216B true CN106575216B (zh) | 2019-12-10 |
Family
ID=55525804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580044339.4A Active CN106575216B (zh) | 2014-09-19 | 2015-08-19 | 数据元素选择和合并处理器、方法、系统和指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10133570B2 (zh) |
EP (1) | EP3195111B1 (zh) |
JP (1) | JP6465527B2 (zh) |
KR (1) | KR20170035974A (zh) |
CN (1) | CN106575216B (zh) |
TW (1) | TWI598747B (zh) |
WO (1) | WO2016043908A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606961B2 (en) * | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US10162752B2 (en) * | 2016-09-22 | 2018-12-25 | Qualcomm Incorporated | Data storage at contiguous memory addresses |
US10891131B2 (en) * | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
US11232347B2 (en) * | 2017-04-17 | 2022-01-25 | Cerebras Systems Inc. | Fabric vectors for deep learning acceleration |
GB2568230B (en) * | 2017-10-20 | 2020-06-03 | Graphcore Ltd | Processing in neural networks |
CN111381876B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | move指令译码方法、数据移动方法、译码器及数据存取装置 |
US11379420B2 (en) * | 2019-03-08 | 2022-07-05 | Nvidia Corporation | Decompression techniques for processing compressed data suitable for artificial neural networks |
US11720159B2 (en) * | 2019-07-01 | 2023-08-08 | Texas Instruments Incorporated | Unified bus architecture for a voltage regulator |
CN112559037B (zh) * | 2019-09-25 | 2024-04-12 | 阿里巴巴集团控股有限公司 | 一种指令执行方法、单元、装置及系统 |
TWI806804B (zh) * | 2021-12-23 | 2023-06-21 | 國立陽明交通大學 | 具有自單一puf電路來源所得多重硬體簽章之裝置及相關方法、系統與應用 |
CN114416180B (zh) * | 2022-03-28 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
CN114579583B (zh) * | 2022-05-05 | 2022-08-05 | 杭州太美星程医药科技有限公司 | 表单数据的处理方法、装置和计算机设备 |
CN115098165B (zh) * | 2022-06-13 | 2023-09-08 | 昆仑芯(北京)科技有限公司 | 数据处理方法、装置、芯片、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446198B1 (en) * | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
CN1391668A (zh) * | 1999-09-20 | 2003-01-15 | 英特尔公司 | 使用推测、基于掩码、由打包数据选择写入数据元素 |
CN1552149A (zh) * | 2001-09-06 | 2004-12-01 | ض� | 用于卸载对多个网络业务流的密码处理的技术 |
CN103793201A (zh) * | 2012-10-30 | 2014-05-14 | 英特尔公司 | 提供向量压缩和旋转功能的指令和逻辑 |
CN104011652A (zh) * | 2011-12-30 | 2014-08-27 | 英特尔公司 | 打包选择处理器、方法、系统和指令 |
CN104025023A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行使用掩码的向量打包一元解码的系统、装置和方法 |
CN104025024A (zh) * | 2011-12-22 | 2014-09-03 | 英特尔公司 | 打包数据操作掩码移位处理器、方法、系统及指令 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052769A (en) | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US20120216011A1 (en) | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
US20120254589A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
US9280342B2 (en) * | 2011-07-20 | 2016-03-08 | Oracle International Corporation | Vector operations for compressing selected vector elements |
US20140208065A1 (en) | 2011-12-22 | 2014-07-24 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for mask register expand operation |
CN107220027A (zh) | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN104011649B (zh) | 2011-12-23 | 2018-10-09 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
WO2013101124A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Packed data operation mask comparison processors, methods, systems, and instructions |
EP2798476B1 (en) | 2011-12-30 | 2018-09-19 | Intel Corporation | Vector frequency expand instruction |
US20140059271A1 (en) | 2012-08-27 | 2014-02-27 | Apple Inc. | Fast execution of flush commands using adaptive compaction ratio |
US8959275B2 (en) * | 2012-10-08 | 2015-02-17 | International Business Machines Corporation | Byte selection and steering logic for combined byte shift and byte permute vector unit |
US9411593B2 (en) | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US9256631B2 (en) * | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
US20150186136A1 (en) | 2013-12-27 | 2015-07-02 | Tal Uliel | Systems, apparatuses, and methods for expand and compress |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
-
2014
- 2014-09-19 US US14/491,548 patent/US10133570B2/en active Active
-
2015
- 2015-08-13 TW TW104126393A patent/TWI598747B/zh not_active IP Right Cessation
- 2015-08-19 EP EP15841425.0A patent/EP3195111B1/en active Active
- 2015-08-19 CN CN201580044339.4A patent/CN106575216B/zh active Active
- 2015-08-19 JP JP2017506911A patent/JP6465527B2/ja active Active
- 2015-08-19 WO PCT/US2015/045827 patent/WO2016043908A1/en active Application Filing
- 2015-08-19 KR KR1020177004342A patent/KR20170035974A/ko not_active Application Discontinuation
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1391668A (zh) * | 1999-09-20 | 2003-01-15 | 英特尔公司 | 使用推测、基于掩码、由打包数据选择写入数据元素 |
US6446198B1 (en) * | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
CN1552149A (zh) * | 2001-09-06 | 2004-12-01 | ض� | 用于卸载对多个网络业务流的密码处理的技术 |
CN104025024A (zh) * | 2011-12-22 | 2014-09-03 | 英特尔公司 | 打包数据操作掩码移位处理器、方法、系统及指令 |
CN104025023A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行使用掩码的向量打包一元解码的系统、装置和方法 |
CN104011652A (zh) * | 2011-12-30 | 2014-08-27 | 英特尔公司 | 打包选择处理器、方法、系统和指令 |
CN103793201A (zh) * | 2012-10-30 | 2014-05-14 | 英特尔公司 | 提供向量压缩和旋转功能的指令和逻辑 |
Also Published As
Publication number | Publication date |
---|---|
JP6465527B2 (ja) | 2019-02-06 |
KR20170035974A (ko) | 2017-03-31 |
TW201629793A (zh) | 2016-08-16 |
EP3195111B1 (en) | 2019-09-25 |
JP2017528810A (ja) | 2017-09-28 |
WO2016043908A1 (en) | 2016-03-24 |
US20160085547A1 (en) | 2016-03-24 |
TWI598747B (zh) | 2017-09-11 |
EP3195111A4 (en) | 2018-05-23 |
US10133570B2 (en) | 2018-11-20 |
CN106575216A (zh) | 2017-04-19 |
EP3195111A1 (en) | 2017-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575216B (zh) | 数据元素选择和合并处理器、方法、系统和指令 | |
US10963257B2 (en) | Packed data element predication processors, methods, systems, and instructions | |
US10372449B2 (en) | Packed data operation mask concatenation processors, methods, systems, and instructions | |
CN107094369B (zh) | 用于提供simd sm3密码散列函数的指令和逻辑 | |
US10503510B2 (en) | SM3 hash function message expansion processors, methods, systems, and instructions | |
US9411600B2 (en) | Instructions and logic to provide memory access key protection functionality | |
US10387149B2 (en) | Apparatus and method to reverse and permute bits in a mask register | |
US9760371B2 (en) | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
US10228941B2 (en) | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register | |
WO2016077018A1 (en) | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions | |
EP2889755A2 (en) | Systems, apparatuses, and methods for expand and compress | |
US10545757B2 (en) | Instruction for determining equality of all packed data elements in a source operand | |
US20140189322A1 (en) | Systems, Apparatuses, and Methods for Masking Usage Counting | |
US9207942B2 (en) | Systems, apparatuses,and methods for zeroing of bits in a data element |
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 |