CN109196467A - 将源封包数据划分为通路的处理器、方法、系统和指令 - Google Patents

将源封包数据划分为通路的处理器、方法、系统和指令 Download PDF

Info

Publication number
CN109196467A
CN109196467A CN201780014453.1A CN201780014453A CN109196467A CN 109196467 A CN109196467 A CN 109196467A CN 201780014453 A CN201780014453 A CN 201780014453A CN 109196467 A CN109196467 A CN 109196467A
Authority
CN
China
Prior art keywords
instruction
packet data
bit
data
access
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.)
Granted
Application number
CN201780014453.1A
Other languages
English (en)
Other versions
CN109196467B (zh
Inventor
A.贾
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
Publication of CN109196467A publication Critical patent/CN109196467A/zh
Application granted granted Critical
Publication of CN109196467B publication Critical patent/CN109196467B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30018Bit or string instructions
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Abstract

处理器包括解码指令的解码单元,该指令将指示将包括多个邻接数据元素的源封包数据、多个数据元素和目的地。处理器也包括与解码单元耦合的执行单元。执行单元响应该指令,将在目的地中存储结果封包数据。结果封包数据将具有多个通路,每个通路将存储与相应通路的最低有效端对齐的指示数量的邻接数据元素的不同非重叠集合。结果封包数据的邻接通路中指示数量的邻接数据元素的不同非重叠集合将通过较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。

Description

将源封包数据划分为通路的处理器、方法、系统和指令
技术领域
本文中描述的实施例一般涉及处理器。具体地说,本文中描述的实施例一般涉及响应于指令,对封包数据进行操作的处理器。
背景技术
许多处理器具有单指令、多数据(SIMD)架构。在SIMD架构中,多个数据元素可作为封包数据或矢量数据被封包在一个寄存器或存储器位置内。在封包或矢量数据中,寄存器或存储器位置的比特可在逻辑上被分割成数据元素的序列。例如,128比特宽封包数据寄存器可具有两个64比特数据元素、四个32比特数据元素、八个16比特数据元素或十六个8比特数据元素。数据元素中的每个可表示可对其单独操作和/或独立于其它数据元素对其操作的单独数据段(例如,像素颜色分量、浮点数等)。
在此类SIMD架构中,封包数据指令、矢量指令或SIMD指令可用于同时和/或并行对此类封包数据或矢量操作数的多个数据元素,或两个此类封包数据或矢量操作数的多对数据元素进行操作。处理器可具有响应指令的并行执行硬件,以同时和/或并行对数据进行操作。
附图说明
通过参照下面的描述和用于图示实施例的附图,可最好地理解本发明。在图中:
图1是操作以执行划分为通路(lane)指令的实施例的处理器的一实施例的框图。
图2是执行将源封包数据划分为通路指令的实施例的方法的实施例的流程框图。
图3是将源封包数据划分为通路操作的实施例的框图。
图4是将源封包数据划分为通路操作的第一特定示例实施例的框图。
图5是将源封包数据划分为通路操作的第二甚至更加特定的示例实施例的框图。
图6是将源封包数据划分为通路操作的第三特定示例实施例的框图。
图7是将源封包数据划分为通路操作的第四甚至更加特定的示例实施例的框图。
图8是适合的一组封包数据寄存器的示例实施例的框图。
图9是适合的一组封包数据操作掩码寄存器的示例实施例的框图。
图10A-10C是图示了根据本发明的实施例的一般矢量友好指令格式及其指令模板的框图。
图11A-B是图示了根据本发明的实施例的示范特定矢量友好指令格式和操作码字段的框图。
图12A-D是图示了根据本发明的实施例的示范特定矢量友好指令格式及其字段的框图。
图13是寄存器架构的实施例的框图。
图14A是图示了有序流水线的实施例和寄存器重命名乱序发布/执行流水线的实施例的框图。
图14B是包含两者均耦合到存储器单元的引擎单元和前端单元(且其中前端单元耦合到执行引擎单元)的处理器核的实施例的框图。
图15A是单个处理器核连同其到管芯上互连网络的连接及其2级(L2)高速缓存的本地子集的实施例的框图。
图15B是图15A的处理器核的一部分的扩展视图的实施例的框图。
图16是可具有不止一个核,可具有集成存储器控制器以及可具有集成图形的处理器的实施例的框图。
图17是计算机架构的第一实施例的框图。
图18是计算机架构的第二实施例的框图。
图19是计算机架构的第三实施例的框图。
图20是计算机架构的第四实施例的框图。
图21是根据本发明的实施例,将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文中公开的是划分为通路指令、执行指令的处理器、在处理或执行指令时由处理器执行的方法及结合一个或多个处理器以处理或执行指令的系统。在一些实施例中,处理器可具有接收和/或解码指令的解码单元或其它逻辑和执行或以其它方式执行指令的执行单元或其它逻辑。在下面的描述中,陈述了许多特定的细节(例如,特定指令操作,数据格式,处理器配置,微架构细节,操作的序列等)。然而,可在没有这些特定的细节的情况下实践实施例。在其它实例中,总所周知的电路、结构和技术未被详细示出以避免混淆对描述的理解。
图1是操作以执行划分为通路指令102的实施例的处理器100的实施例的框图。在一些实施例中,处理器可表示集成电路和/或可包括部署在半导体管芯上的集成电路系统或逻辑。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型或其它计算机中使用的类型的通用微处理器或中央处理单元(CPU))。备选的是,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可以具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、极长指令字(VLIW)架构、混合架构、其它类型的架构,或者具有不同架构的组合(例如,不同核可具有不同架构)。
在操作期间,处理器100可接收划分为通路指令102。例如,可通过总线或其它互连从存储器接收该指令。该指令可表示宏指令、机器代码指令或处理器的指令集的其它指令或控制信号。在一些实施例中,划分为通路指令可显式地指定(例如,通过一个或多个字段或一组比特)或以其它方式指示(例如,隐式地指示)将要包括多个邻接数据元素的源封包数据112,并且可显式地指定或以其它方式指示其中将响应该指令而存储结果封包数据118的目的地存储位置116(例如,目的地封包数据寄存器)。
如所示出的,在一些实施例中,源封包数据112可以可选地被存储在系统存储器108中。在此类实施例中,该指令可指定或以其它方式指示要用于寻址其中将存储源封包数据的存储器位置110的存储器地址信息。各种不同类型的地址信息是可能的。地址信息可表示绝对存储器地址信息或相对存储器地址信息,其可指示相对于基本存储器地址或其它存储器位置的存储器位置。另外,可以可选地使用各种不同间接存储器寻址模式。作为一个特定示例,获取指令可隐式指示用于存储相对存储器地址信息的寄存器(例如,通用寄存器),该相对存储器地址信息可与在另一隐式寄存器(例如,代码、数据或扩展段寄存器)中存储的额外存储器地址信息组合以生成用于标识其中将存储源封包数据的存储器位置。虽然未通过显式值来表达,但隐式指示的寄存器可被处理器理解。例如,处理器可在标识该指令的操作码后识别或者理解使用寄存器的是固有的或隐式的。这只是一个示例。其它形式的地址信息也是可能的。此外,不是在一个或多个寄存器中提供地址信息,而是潜在地一些或所有地址信息可由该指令的比特(例如,立即数)提供。
在其它实施例中,源封包数据112可以可选地被存储在处理器的封包数据寄存器114之一中。如进一步所示出的,在一些实施例中,目的地存储位置可以可选地作为处理器的封包数据寄存器114之一,但这不是要求的。在其它实施例中,其它存储位置可以可选地转而被用于这些操作数中的一个或多个。该指令可具有源和/或目的地操作数规范字段以指定封包数据寄存器、存储器位置或用于此类操作数的其它存储位置。备选的是,这些存储位置中的一个或多个可以可选地对该指令是隐式的(例如,对该指令的操作码是隐式的),而不是被显式指定。另外,在一些实施例中,用于源封包数据的封包数据寄存器或其它存储位置可以可选地被隐式再使用为用于结果封包数据的目的地存储位置,并且可只被指定一次。在一方面,源/目的地封包数据寄存器可被隐式地或隐含地理解成用于源操作数和结果操作数二者。
在各种实施例中,源封包数据的数据元素可以是8比特数据元素、16比特数据元素、32比特数据元素或64比特数据元素。数据元素可以是整数、固定点或浮点。在一些实施例中,数据元素可以可选地是浮点数据元素,诸如例如32比特单精度浮点数据元素或64比特双精度浮点数据元素,但本发明的范围不限于此。源封包数据的数据元素是邻接数据元素,表现在数据元素是连续的和/或相接的,和/或在邻接数据元素之间可以不存在额外的中介数据元素或比特。例如,每对邻接数据元素中较低有效数据元素的最高有效比特可以比每对邻接数据元素中较高有效数据元素的最低有效比特少一比特。
在一些实施例中,该指令还可指示数据元素的数量,其可用于划分、拆分或分割源封包数据。例如,该指令可将数据元素的数量指示为两个数据元素、三个数据元素、六个数据元素或某一其它数量的数据元素,以指示在其中源封包数据将被划分、拆分或分割成大小相等的非重叠段或部分的数据元素的点或几个点。该指令可在不同实施例中以不同方式指示数据元素的数量。在一些实施例中,该指令可具有立即数(例如,二、四、六或八比特立即数)或其它字段以具有指定或以其它方式指示数据元素的实际数量的值。在其它实施例中,该指令可具有立即数或其它字段以具有指定或以其它方式指示多个数据元素结构的数量(例如,二元素结构或三元素结构的数量)的值,以由此间接指示数据元素的实际数量。
再参见图1,处理器包括解码单元或解码器104。解码单元可接收和解码划分为通路指令。解码单元可输出一个或多个相对较低级别的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码的指令或控制信号等),其从相对较高级别中得出、反映和/或表示划分为通路指令。在一些实施例中,解码单元可包括:一个或多个输入结构(例如,端口、互连、接口),以接收划分为通路指令;与其耦合的指令识别和解码逻辑,以识别和解码划分为通路指令;以及与其耦合的一个或多个输出结构(例如,端口、互连、接口),以输出较低级别指令或控制信号。解码单元可使用各种不同机制被实现,各种不同机制包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)及适合实现解码单元的其它机制。在一些实施例中,解码单元可被包括在处理器的管芯上。
在一些实施例中,代替划分为通路指令被直接提供到解码单元,可以可选地使用指令仿真器、转化器、变形器、解译器或其它指令转换模块。各种类型的指令转换模块可在软件、硬件、固件或其组合中被实现。在一些实施例中,指令转换模块可位于处理器外,诸如例如在单独的管芯上和/或在存储器中(例如,作为静态、动态或运行时仿真模块)。通过示例方式,指令转换模块可接收划分为通路指令,其可属于第一指令集,并且可仿真,转化,变形,解译或以其它方式将划分为通路指令转换成可属于第二不同指令集的一个或多个对应中介指令或控制信号。第二指令集的一个或多个中介指令或控制信号可被提供到解码单元(例如,解码单元104),其可将它们解码成由处理器的原生硬件(例如,一个或多个执行单元)可执行的一个或多个较低级别指令或控制信号。
处理器100也包括一组封包数据寄存器114。每个封包数据寄存器可表示操作以存储封包数据、矢量数据或SIMD数据的管芯上存储位置。封包数据寄存器可表示对软件和/或编程器可视的架构上可视或架构式寄存器和/或是由处理器的指令集的指令指示以标识操作数的寄存器。这些架构式寄存器与在给定微架构中的其它非架构式寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对比。封包数据寄存器可在不同微架构中以不同方式被实现,并且不被限制于任何具体类型的设计。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
再次参考图1,执行单元106与解码单元104耦合,并且与封包数据寄存器114耦合。在一些实施例中,执行单元可以与解码单元一起在管芯上。在操作期间,如果源封包数据是在存储器中,则执行单元可与存储器耦合以便接收源封包数据。执行单元可通过其它中介组件(未示出)与这些组件耦合。执行单元可接收表示划分为通路指令和/或从其中导出的一个或多个解码的或以其它方式转换的指令或控制信号。执行单元还可接收源封包数据112。执行单元可响应划分为通路指令和/或作为其结果而操作(例如,响应从该指令解码的一个或多个指令或控制信号),以在由该指令指示的目的地存储位置(例如,目的地封包数据寄存器)中存储结果封包数据118。
在一些实施例中,结果封包数据118和/或目的地存储位置可具有多个通路。在各种实施例中,结果封包数据和/或目的地存储位置的通路可以是64比特通路、128比特通路、256比特通路或512比特通路,但本发明的范围不限于此。在一些实施例中,通路可具有与处理器的架构式封包数据寄存器的大小相同的大小。在一些实施例中,通路可以是处理器的最大架构式封包数据寄存器的大小的一半或四分之一。在一些实施例中,每个通路可足够大以存储多个32比特数据元素,或者可足够大以存储多个64比特数据元素。在一些实施例中,划分为通路指令可以可选地具有一个或多个比特或字段以指示通路的大小。例如,单一比特可将通路的大小指示为128比特或256比特,或者两个比特可用于指示多达四个不同通路大小。备选的是,通路的大小可以可选地对该指令是隐式的(例如,对操作码是隐式的)。
在一些实施例中,目的地存储位置和/或结果封包数据的每个通路可存储源封包数据的指示数量(即,由该指令指示的数量)的邻接数据元素的不同非重叠集合。换而言之,每个通路可存储源封包数据的不同非重叠的相同大小的部分。(指示数量的)邻接数据元素的这些不同非重叠集合中的每个(或源封包数据的不同非重叠的相同大小的部分)可与在其中存储它们的相应通路的最低有效端对齐。在一些实施例中,在(目的地存储位置或)结果封包数据的邻接通路中存储的(指示数量的)邻接数据元素的不同非重叠集合(或源封包数据的不同非重叠的相同大小的部分)可通过较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。例如,在结果封包数据的下一最低有效通路中存储的源封包数据的第二非重叠的相同大小的部分可与在结果封包数据的最低有效通路中存储的源封包数据的第一非重叠的相同大小部分通过未用于存储源封包数据的这两个非重叠的相同大小的部分的任一部分的最低有效通路的至少一个最高有效数据元素位置而被分隔。相反地,零、现有值或一些其它值可被存储在这些位置中。在一些实施例中,结果封包数据可以是针对图3-7所示出和描述的那些数据的任何数据,但本发明的范围不限于此。
在源封包数据中,将被存储到结果封包数据的所有数据元素可以是邻接的或连续的。在源封包数据是在存储器中的情况下,执行单元和/或处理器响应该指令,可操作以通过执行单个加载操作,从系统存储器加载源封包数据的每个数据元素(或至少将被存储到结果封包数据的那些)。执行单元响应该指令,可将源封包数据的数据元素拆分或划分为连续数据元素的多个非重叠段或部分,并且随后将这些不同段或部分中的每个分布或分摊到不同对应通路。这可对于各种不同目的是有用的。例如,源封包数据的全部不同数据元素段或部分如果它们沿通路边界被拆分和对齐,则这可变得更容易或更方便。
有利的是,将源封包数据划分为通路指令102可允许源封包数据112被拆分为两个或不止两个部分,并且在单个指令的性能的约束内沿相应通路边界使那些部分对齐。另外,在其中源封包数据最初被存储在存储器中(这不是要求的)的一些实施例中,该指令可允许通过也在执行相同单个指令的约束内的单个加载操作(例如,使用单个加载端口一次),从存储器加载每个部分。另一可能方案将是执行多个指令以模仿此操作。作为一个说明性示例,可执行第一指令以从存储器加载第一段或部分到第一封包数据寄存器,并且随后通过广播数据到第二封包数据寄存器的上通路和下通路两者中的加载,以及通过遮蔽(例如,在掩码寄存器中使用掩码)以遮掩掉第二封包数据寄存器的下通路以及合并第一和第二封包数据寄存器,可执行第二指令以从存储器加载第二段或部分。然而,对于此类备选方案的一个可能缺陷是使用了两个加载,而不是仅单个加载。这可趋向于不必要地消耗加载端口和其它资源和/或降低性能。另外,执行了两个指令,而不是仅单个指令,其也可能趋向于降低性能和/或增大功率消耗。此外,使用了多个封包数据寄存器和掩码寄存器,而不是仅单个目的地封包数据寄存器。此类寄存器通常趋向于成为可被替代地用于其它目的的某种程度稀少的资源。
在一些实施例中,将源操作数拆分为多个非重叠部分和将不同非重叠部分中的每个与相应通路的最低有效端对齐可对该指令是隐式的和/或对该指令是固定的(例如,对该指令的操作码是隐式或对该指令的操作码是固定的)。这可被处理器隐式或隐含地理解,但除通过操作码和任何操作码有关的比特外而未被显式表达。例如,处理器可在标识该指令的操作码后理解或者识别到此类操作是固有的或隐式的。备选的可能方案将是使用灵活的指令,诸如具有一组混洗或置换控制比特的混洗或置换指令,以根据控制比特来控制源数据元素灵活混洗或置换到目的地中的灵活位置中。混洗或置换指令可用于根据针对被混洗或置换的每个数据元素的对应混洗或置换控制比特,将来自一个或多个源封包数据的数据元素混洗或置换到结果封包数据中的不同数据元素位置。例如,可在该指令的立即数中或者在通常在寄存器中存储的另一源操作数中提供混洗或置换控制比特的这些集合。然而,至少对于某些应用,关于使用此类灵活混洗或置换指令的此类备选方案存在有潜在的缺陷。首先,通常生成混洗或置换控制比特的集合要花费额外的时间和/或努力。例如,编程器可能需要显式生成这些,或者编译器可能需要通过在编译器上的附加工作负载来生成它们。另外,在寄存器中存储混洗或置换控制比特可占用寄存器并且阻止其被用于另一目的。进一步,当该指令具有附加字段以指定寄存器来存储混洗或置换控制比特时,或者当混洗或置换控制比特由该指令的立即数提供时,该指令的长度可被增大。这可趋向于降低在指令束中能够被获取的指令的数量和/或增大解码指令的复杂性和/或解码该指令所需要的时间,其可趋向于降低前端吞吐量。这也可趋向于增大代码大小。另外,在立即数的情况下,通常仅一定数量的控制比特能够适配在立即数内,其可限制能够被混洗或置换的数据元素的数量。
执行单元和/或处理器可包括特定的或具体的逻辑(例如,潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的晶体管、集成电路系统或其它硬件),其操作以执行划分为通路指令和/或响应划分为通路指令和/或作为其结果(例如,响应从划分为通路指令解码的一个或多个指令或控制信号)而存储结果封包数据。在一些实施例中,执行单元可包括:接收源封包数据的一个或多个输入结构(例如端口、互连、接口)、与其耦合以将源封包数据拆分为每个具有指示数量的数ß据元素的部分的逻辑、以及与其耦合以分布、分摊或以其它方式输出这些部分到目的地存储位置和/或结果封包数据的对应不同通路的一个或多个输出结构(例如端口、互连、接口)。
为避免使描述混淆,已示出和描述了相对简单的处理器100。然而,处理器可以可选地包括其它处理器组件。例如,各种不同实施例可包括针对图13、14A/B、15A/B、16的任何图所示出和描述的组件的各种不同组合和配置。通过示例方式,考虑图14B,指令获取单元1438可获取该指令,解码单元1440可解码该指令,调度器单元1456可调度关联的操作,引退单元1454可引退该指令等。处理器的所有组件可被耦合在一起以允许它们如预期地操作。
图2是执行将源封包数据划分为通路指令的实施例的方法220的实施例的流程框图。在各种实施例中,方法可由处理器、指令处理设备、数字逻辑装置或集成电路执行。在一些实施例中,方法220可由和/或通过图1的处理器和/或使用图1的指令来执行。本文中为图1的处理器和/或指令描述的组件、特征和特定可选细节也可选地适用于方法220,其可以可选地由处理器执行和/或使用该指令来执行。备选的是,方法220可由类似或不同处理器或设备和/或在其内执行和/或使用类似或不同指令来执行。另外,图1的处理器可执行与图2的方法相同、类似或不同的方法。
方法包括在框221接收划分为通路指令。在各种方面中,可在处理器或其的一部分(例如,指令获取单元、解码单元、总线接口单元等)接收该指令。在各种方面中,可从处理器外和/或从管芯外的源(例如,从存储器、互连等)或者从处理器上和/或从管芯上的源(例如,从指令高速缓存、指令获取单元等)接收该指令。该指令可指定或以其它方式指示包括多个邻接数据元素的源封包数据。该指令也可指定或以其它方式指示数据元素的数量。该指令也可指定或以其它方式指示目的地封包数据寄存器或其它存储位置。
在框222,响应指令和/或作为其结果,可将结果封包数据存储在指示的目的地存储位置中。在一些实施例中,结果封包数据和/或目的地存储位置可具有多个通路。在一些实施例中,目的地存储位置和/或结果封包数据的每个通路可存储源封包数据的指示数量的邻接数据元素的不同非重叠集合。换而言之,每个通路可存储源封包数据的不同非重叠的相同大小的部分。数据元素的这些不同非重叠集合中的每个或源封包数据的不同非重叠的相同大小的部分可与在其中存储它们的相应通路的最低有效端对齐。在一些实施例中,在结果封包数据的邻接通路中存储的指示数量的邻接数据元素的不同非重叠集合可通过较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。例如,在结果封包数据的次最低有效(next-to-least significant)通路中存储的源封包数据的第二非重叠的相同大小的部分可与在结果封包数据的最低有效通路中存储的源封包数据的第一非重叠的相同大小部分通过未用于存储源封包数据的这两个非重叠的相同大小的部分的任一部分的最低有效通路的至少一个最高有效数据元素位置而被分隔。相反地,零、现有值或一些其它值可被存储在这些位置中。
图示的方法涉及架构操作(例如,从软件角度可见的那些)。在其它实施例中,方法可以可选地包括一个或多个微架构操作。通过示例方式,该指令可被获取,解码,乱序调度,源封包数据可被访问,执行单元可执行微架构操作以实现该指令等等。在一些实施例中,实现该指令的操作可包括生成存储器地址信息和使用生成的存储器地址信息从系统存储器访问源封包数据。在一些实施例中,实现该指令的操作也可包括将在每个通路中分隔存储的非重叠部分与源封包数据的至少一个最高有效数据元素位置归零。
图3是图示了将源封包数据划分为通路操作330的实施例的框图,该操作可响应将源封包数据划分为通路指令的实施例而被执行。该指令可指定或以其它方式指示将具有多个邻接数据元素的源封包数据312(例如,作为源操作数)。在一些实施例中,源封包数据可被存储在存储器中,而在其它实施例中,源封包数据可被存储在封包数据寄存器或其它存储位置中。该指令也可指定或以其它方式指示将拆分源封包数据的数据元素的数量。该指令也可指定或以其它方式指示在其中将存储结果封包数据318的目的地存储位置。
如所示出的,源封包数据可包括指示数量的邻接数据元素的至少两个,或者在一些情况下不止两个(例如,至少四个)不同非重叠集合。在特定图示的实施例中,源封包数据包括指示数量的邻接数据元素的第一集合332和指示数量的邻接数据元素的第二集合334。每个集合可包括由该指令指示的数据元素的数量。例如,如果由该指令指示的数据元素的数量是六,则每个集合可包括六个数据元素。源封包数据的数据元素是邻接数据元素,表现在数据元素是连续的和/或相接的,和/或在邻接数据元素之间不存在额外的中介数据元素或比特。另外,在源封包数据中,指示数量的邻接数据元素的第一集合332与指示数量的邻接数据元素的第二集合334是邻接的、连续的或相接的。例如,指示数量的邻接数据元素的第一集合332的最高有效数据元素的最高有效比特可以比指示数量的邻接数据元素的邻接第二集合334的最低有效数据元素的最低有效比特少一比特。在该图示中,源封包数据的最低有效比特(例如,标记为比特-0)是最右比特,而源封包数据的最高有效比特是最左比特。源封包数据也可以可选地包括一个或多个其它数据元素336,但这不是必需的。
通常,源封包数据312中的数据元素的数量可等于源封包数据的以比特表示的大小除以单数据元素的以比特表示的大小。在各种实施例中,源封包数据的宽度可以是128比特、256比特、512比特或1024比特,但本发明的范围不限于此。在各种实施例中,每个数据元素的大小可以是8比特、16比特、32比特或64比特,但本发明的范围不限于此。源封包数据和数据元素的其它大小或宽度也是适合的。在各种实施例中,在源封包数据中可存在至少四个、至少八个、至少十六个、至少三十二个或不止三十二个数据元素(例如,至少六十四个)。数据元素可以是整数、固定点或浮点。在一些实施例中,数据元素可以可选地是浮点数据元素,诸如例如32比特单精度浮点数据元素或64比特双精度浮点数据元素,但本发明的范围不限于此。
在划分源封包数据为通路操作期间,源封包数据312可被提供到执行单元306。执行单元可响应该指令和/或操作和/或作为该指令和/或操作的结果,生成和存储结果封包数据318。在一些实施例中,结果封包数据可被存储在由该指令指定或以其它方式指示的目的地封包数据寄存器或其它目的地存储位置中。在一些实施例中,结果封包数据可具有至少两个或者在一些情况下不止两个(例如,至少四个)不同非重叠通路。在特定图示的实施例中,结果封包数据可包括第一最低有效通路346和邻接的第二较高有效通路348。在其它实施例中,结果封包数据可以可选地包括另外的通路(例如,与源封包数据的指示数量的邻接数据元素的不同非重叠集合的数量相同数量的通路)。在一些实施例中,结果封包数据的每个通路可用于存储与相应通路的最低有效端对齐的源封包数据的指示数量的邻接数据元素的不同非重叠集合。例如,如在特定图示的实施例中所示出的,在结果封包数据中,指示数量的邻接数据元素的第一集合338可被存储在第一最低有效通路346中,并且指示数量的邻接数据元素的第二集合342可被存储在第二较高有效通路348中。
在一些实施例中,在结果封包数据中,在结果封包数据的邻接通路中存储的指示数量的邻接数据元素的不同非重叠集合可通过较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。例如,如在特定图示实施例中所示出的,第一最低有效通路的至少一个最高有效(例如,如所看到的最左)数据元素340可分隔指示数量的邻接数据元素的第一集合338的最高有效数据元素和指示数量的邻接数据元素的第二集合342的最低有效数据元素。类似地,第二较高有效通路的至少一个最高有效(例如,如所看到的最左)数据元素344将分隔指示数量的邻接数据元素的可选另外集合(即,如果存在了一个,其在图示的示例中未示出)。在源封包数据中,指示数量的邻接数据元素的第一集合332与指示数量的邻接数据元素的第二集合334是邻接的、连续的或相接的,而在结果封包数据中,指示数量的邻接数据元素的第一和第二集合已被拆分,使得它们不再是彼此邻接的、连续的或相接的,并且使得每个与在其中存储它们的对应通路的最低有效比特或端对齐。第一集合338与结果的比特-0对齐,并且第二集合342与第二通路348的最低有效比特(由参考数字349示出)对齐。由于这些集未完全填充对应通路,因此,在至少一些实施例中,在每个通路中的一个或多个另外的数据元素分隔指示数量的邻接数据元素的这些不同集合。
在一些实施例中,在源封包数据在存储器中时,该指令只不过可以不加载其它数据元素336。在其它实施例中,该指令可加载这些数据元素,但基于指示数量的数据元素,可隐式地或固有地不使用这些其它数据元素336。在还有的其它实施例中,该指令可指示掩码或掩码操作数,其可包括多个掩码比特或其它掩码元素。执行单元响应该指令,可从存储器只加载对应于掩码的未遮蔽掩码元素的源封包数据的数据元素。例如,与其它数据元素336对应的每个掩码元素可被遮掩掉(例如,清除为零),而与第一和第二集合332、334对应的每个掩码元素可未被遮蔽(例如,设成一)。
图4是图示了将源封包数据划分为通路操作450的第一特定示例实施例的框图,该操作可响应将源封包数据划分为通路指令的第一特定示例实施例而被执行。该指令可指定或以其它方式指示将具有多个邻接数据元素A1到A16的源封包数据412。源封包数据和数据元素可具有如前面所描述的各种大小或宽度。此外,数据元素可具有如前面描述的浮点、整数或固定点格式。在一些实施例中,该指令也可指定或以其它方式指示将拆分源封包数据的数据元素的数量。在此特定示例中,由该指令指示的数据元素的数量是六个数据元素,但这只是说明性的。该指令也可指定或以其它方式指示目的地存储位置。
在此特定示例中,由于由该指令指示的数据元素的数量是六个数据元素,因此源封包数据的数据元素A1-A6表示六个邻接数据元素的第一非重叠集合,并且数据元素A7-A12表示六个邻接数据元素的第二非重叠集合。在源封包数据中,数据元素A1-A6与数据元素A7-A12是邻接的、连续的或相接的(例如,数据元素A6的最高有效比特与数据元素A7的最低有效比特是邻接的、连续的或相接的)。
在划分源封包数据为通路操作期间,源封包数据412可被提供到执行单元406。执行单元可响应该指令和/或操作和/或作为该指令和/或操作的结果,生成和存储结果封包数据418。在一些实施例中,结果封包数据可被存储在由该指令指示的目的地封包数据寄存器或其它目的地存储位置中。结果封包数据包括第一最低有效通路446和邻接的第二较高有效通路448。在其它实施例中,结果封包数据可以可选地包括另外的通路。在此特定示例中,数据元素A1-A6的第一集合被存储在第一通路446中,并且数据元素A7-A12的第二集合被存储在第二邻接通路中。
在结果封包数据中,在第一通路中存储的数据元素A1-A6的第一集合在此特定示例中通过第一最低有效通路的两个最高有效(如所看到的最左)数据元素位置与在第二通路中存储的数据元素A7-A12的第二集合被分隔。尽管在源封包数据中,数据元素A1-A6与数据元素A7-A12是邻接的、连续的或相接的,但在结果封包数据中,元素A1-A6和A7-A12在此特定示例中通过部署在它们之间的两个中介数据元素位置而彼此被拆分或者被分隔。此外,数据元素A1-A6与第一通路的最低有效比特或端对齐,而数据元素A7-A12与第二通路的最低有效比特或端重新对齐。
如本文中所公开的划分为通路指令和/或操作的一个用途(但肯定不是唯一用途)是处理二数据元素、三数据元素、四数据元素或其它多个数据元素结构的矢量或阵列。复数是包括实数或分量与虚数或分量的二数据元素结构的一个示例。实数和虚数一起构成复数。三数据元素结构的一个示例是用于像素的红、绿和蓝色分量结构。各种其它类型的多个数据元素结构在技术领域中为人所熟知。
此类多个数据元素结构通常在各种不同算法中一起被移动和/或处理。此外,此类多个数据元素结构的阵列经常在算法中一起被移动和/或处理。例如,在加,乘或以其它方式处理复数的矩阵时,情况经常是如此。通过示例方式,算法可对具有作为复数的潜在地更大得多的矩阵的一部分的相对较小数量的复数(例如,经常在二到六的范围)的阵列进行操作。作为一个特定说明性示例,某些算法可处理每个有三个复数的阵列,在其中每个复数包括32比特单精度浮点实分量和32比特单精度浮点虚分量。此类阵列可表示复数的较大矩阵的不同邻接列的部分。其它算法可处理不同大小的复数的阵列。
处理多个数据元素结构和/或复数的阵列的某些算法可预期每个阵列将沿通路边界对齐。作为一个特定说明性示例,处理具有32比特实分量和虚分量的三个复数的阵列的某些算法可预期每个阵列沿256比特通路边界对齐,而不是跨越不同通路或者与通路边界偏移。在其它情况下,即使算法未预期或要求此类对齐,但对于给定算法或应用,基于由整体算法或诸如此类能够处理、移动、管理阵列的方式,使阵列沿通路边界对齐可以是方便的和/或高效的。
图5是图示了将源封包数据划分为通路操作552的第二甚至更加特定的示例实施例的框图,该操作可响应将源封包数据划分为通路指令的第二甚至更加特定的示例实施例而对三个复数的第一和第二阵列执行。该指令也可指定或以其它方式指示源封包数据512。在一些实施例中,源封包数据可以是在存储器中,而在其它实施例中,它可以是在封包数据寄存器中。在此特定示例中,源封包数据具有八对复数。每个复数包括实数(r)和虚数(i)。例如,最低有效(如所看到的最右)复数包括第一实数(r1)和第一虚数(i1),次最低有效复数包括第二实数(r2)和第二虚数(i2),并以此类推。按常规,复数经常被存储在存储器中,其中实数被存储在相对较低有效比特位置,并且对应虚数被存储在邻接的相对较高有效比特位置中,但这不是必需的。八个实数r1-r8和八个虚数i1-i8相应地形成八个复数。每个复数可从广义上表示二数据元素结构。在一些实施例中,源封包数据可包括两个阵列,每个具有三个复数。通过示例方式,这些阵列中的每个可表示复数的更大矩阵的不同邻接列的一部分,但本发明的范围不限于此。在此特定示例中,实数或虚数或分量每个由32比特单精度浮点数据元素表示,但在其它实施例中,可以可选地使用其它数据元素大小和格式。在此特定示例中,源封包数据是512比特源封包数据,但在其它实施例中,可以可选地使用其它大小。
如前面所提及的,在一些实施例中,该指令也可指定或以其它方式指示将拆分源封包数据的数据元素的数量(例如,通过立即数的值或在指定或隐式寄存器中的值)。在此特定示例中,由该指令指示的数据元素的数量是六个数据元素,但这只是一个说明性示例。对于结构,此数量可以以不同方式来指示。作为一个示例,该指令可指示六的值以指示六个数据元素。作为另一示例,该指令可指示三个二数据元素结构的值以指示六个数据元素。在此特定示例中,由于由该指令指示的数据元素的数量是六个数据元素,因此,最低有效六个实数和虚数(即,r1、i1、r2、i2、r3和i3)数据表示三个复数的第一阵列,并且邻接的较高有效六个实数和虚数(即,r4、i4、r5、i5、r6和i6)表示三个复数的第二阵列。在源封包数据中,复数(或二数据元素结构)的邻接第一和第二阵列彼此是邻接的、连续的或相接的。
在操作期间,源封包数据512可被提供到执行单元506。执行单元可响应该指令和/或操作和/或作为该指令和/或操作的结果,生成和存储结果封包数据518。在一些实施例中,结果封包数据可被存储在由该指令指示的目的地封包数据寄存器或其它目的地存储位置中。结果封包数据包括第一最低有效通路546和邻接的第二较高有效通路548。在其它实施例中,结果封包数据可以可选地包括另外的通路。如所示出的,在此特定示例中,每个通路是256比特通路,但本发明的范围不限于此。在此特定示例中,三个复数的第一阵列554(即,r1、i1、r2、i2、r3和i3)被存储在第一通路中,并且三个复数的第二阵列556(即,r4、i4、r5、i5、r6和i6)被存储在第二邻接通路中。
在结果封包数据中,在第一通路中的三个复数的第一阵列554在此特定示例中通过第一通路的两个最高有效(如所看到的最左)32比特数据元素位置与在第二通路中的三个复数的第二阵列556被分隔。尽管在源封包数据中,复数的第一和第二阵列是邻接的、连续的或相接的,但在结果封包数据中,复数的第一和第二阵列在此特定示例中通过部署在它们之间的两个中介32比特数据元素位置而被彼此分隔或者被拆分。在一些实施例中,拆分可以是沿整个复数或其它多数据元素结构边界,使得不拆分复数或其它多数据元素结构。此外,三个复数的第一和第二阵列中的每个与在其中存储它的相应通路的最低有效比特或端对齐。
要领会的是,这只是一个说明性示例,并且也设想了许多其它示例。作为一个示例,方案可被扩展到1024比特操作数,其中结果封包数据具有四个256比特通路。作为另一示例,类似的方案可与256比特、512比特或1024比特结果封包数据的128比特通路和16比特数据元素一起使用。备选的是,在16比特数据元素的情况下,每个256比特通路可用于存储十二个数据元素(例如,六个二数据元素结构的阵列)。作为另一示例,类似的方案可与128比特、256比特或512比特结果封包数据的64比特通路和8比特数据元素一起使用。作为还有的另外示例,三个二数据元素结构的阵列可每个被替换为两个三数据元素结构的阵列。对受益于本公开并熟悉本技术领域的人员将明白还有其它变体。另外,要领会的是,指令/操作并不限于对多个数据元素结构进行操作,而是在实施例中可表示可用于对并非多个数据元素结构的一部分的数据元素进行操作的通用指令/操作。
图6是图示了将源封包数据划分为通路操作660的第三特定示例实施例的框图,该操作可响应将源封包数据划分为通路指令的第三特定示例实施例而被执行。该指令可指定或以其它方式指示将具有多个邻接数据元素A1到A16的源封包数据612。源封包数据和数据元素可具有如前面所描述的各种大小或宽度。此外,数据元素可具有如前面描述的浮点、整数或固定点格式。在一些实施例中,该指令也可指定或以其它方式指示将拆分源封包数据的数据元素的数量。在此特定示例中,由该指令指示的数据元素的数量是两个数据元素,但这只是说明性的。该指令也可指定或以其它方式指示目的地存储位置。
在此特定示例中,由于由该指令指示的数据元素的数量是两个数据元素,因此源封包数据的数据元素A1-A2表示两个邻接数据元素的第一非重叠集合,数据元素A3-A4表示两个邻接数据元素的第二非重叠集合,源封包数据的数据元素A5-A6表示两个邻接数据元素的第三非重叠集合,并且数据元素A7-A8表示两个邻接数据元素的第四非重叠集合。在源封包数据中,数据元素A1-A2与数据元素A3-A4是邻接的、连续的或相接的,数据元素A3-A4与数据元素A5-A6是邻接的、连续的或相接的,并且数据元素A5-A6与数据元素A7-A8是邻接的、连续的或相接的。
在操作期间,源封包数据612可被提供到执行单元606。执行单元可响应该指令和/或操作和/或作为该指令和/或操作的结果,生成和存储结果封包数据618。在一些实施例中,结果封包数据可被存储在由该指令指示的目的地封包数据寄存器或其它目的地存储位置中。结果封包数据包括第一最低有效通路662、第二较高有效通路663、第三又更高有效通路664和第四最高有效通路665。在其它实施例中,结果封包数据可以可选地包括更少或更多的通路。在此特定示例中,数据元素A1-A2的第一集合被存储在第一通路662中,数据元素A3-A4的第二集合被存储在第二通路663中,数据元素A5-A6的第三集合被存储在第三通路664中,以及数据元素A7-A8的第四集合被存储在第四通路665中。
在结果封包数据中,数据元素A1-A2的第一集合在此特定示例中通过第一最低有效通路的两个最高有效(如所看到的最左)数据元素位置与数据元素A3-A4的第二集合被分隔。同样地,在结果封包数据中,数据元素A5-A6的第三集合在此特定示例中通过第二通路的两个最高有效(如所看到的最左)数据元素位置与数据元素A3-A4的第二集合被分隔。类似地,在结果封包数据中,数据元素A7-A8的第四集合在此特定示例中通过第三通路的两个最高有效(如所看到的最左)数据元素位置与数据元素A5-A6的第三集合被分隔。此外,数据元素A1-A2的第一集合与对应第一通路的最低有效比特或端对齐,数据元素A3-A4的第二集合与对应第二通路的最低有效比特或端对齐,数据元素A5-A6的第三集合与对应第三通路的最低有效比特或端对齐,以及数据元素A7-A8的第四集合与对应第四通路的最低有效比特或端对齐。
图7是图示了将源封包数据划分为通路操作770的第四甚至更加特定的示例实施例的框图,该操作可响应将源封包数据划分为通路指令的第四甚至更加特定的示例实施例而对复数执行。该指令可指定或以其它方式指示源封包数据712。在此特定示例中,源封包数据具有八个实数r1-r8和八个虚数i1-i8,其按对形成八个复数。在此特定示例中,实数或虚数或分量每个由32比特单精度浮点数据元素表示,但在其它实施例中,可选地可使用其它数据元素大小和格式。在此特定示例中,源封包数据是512比特源封包数据,但在其它实施例中,可选地可使用其它大小。
在一些实施例中,该指令可指定或以其它方式指示将拆分源封包数据的数据元素的数量。在此特定示例中,由该指令指示的数据元素的数量是两个数据元素,但这只是一个说明性示例。作为一个示例,该指令可指示二的值以指示两个数据元素,或者作为另一示例,该指令可指示一的值以指示一个二数据元素结构来指示两个数据元素。
在操作期间,源封包数据712可被提供到执行单元706。执行单元可响应该指令和/或操作和/或作为该指令和/或操作的结果,生成和存储结果封包数据718。在一些实施例中,结果封包数据可被存储在由该指令指示的目的地封包数据寄存器或其它目的地存储位置中。结果封包数据包括第一最低有效通路762、第二较高有效通路763、第三又更高有效通路764和第四最高有效通路765。在其它实施例中,结果封包数据可以可选地包括更少或更多的通路。在此特定示例中,每个通路是128比特通路,但本发明的范围不限于此。在此特定示例中,第一最低有效复数771(即,r1和i1)被存储在第一通路中,第二最低有效复数772(即,r2和i2)被存储在第二通路中,第三最低有效复数773(即,r3和i3)被存储在第三通路中,以及第四最低有效复数774(即,r4和i4)被存储在第四通路中。
在结果封包数据中,第一复数771在此特定示例中通过第一通路的两个最高有效32比特数据元素位置与第二复数772被分隔。同样地,在结果封包数据中,第三复数773在此特定示例中通过第二通路的两个最高有效32比特数据元素位置与第二复数773被分隔。类似地,在结果封包数据中,第四复数774在此特定示例中通过第三通路的两个最高有效32比特数据元素位置与第三复数773被分隔。此外,在结果封包数据中,第一复数与第一通路的最低有效比特或端对齐,第二复数与第二通路的最低有效比特或端对齐,第三复数与第三通路的最低有效比特或端对齐,以及第四复数与第四通路的最低有效比特或端对齐。
为避免使描述混淆,已主要描述了针对图3-7的相应操作的不同和/或附加特性,而不重复所有可选类似或共同的特性和细节。然而,要领会的是,除非与描述相反或者在其它方面是清楚明显的,否则,针对操作之一所描述的特性和细节也可以可选地适用于其它操作。
适合的封包数据格式的示例包括但不限于64比特宽、128比特宽、256比特宽和512比特宽封包数据格式。64比特封包字节格式可包括八个8比特字节数据元素。64比特封包字格式可包括四个16比特字数据元素。64比特封包双字格式可包括两个32比特双字数据元素。128比特封包字节格式可包括十六个8比特字节数据元素。128比特封包字格式可包括八个16比特字数据元素。128比特封包双字格式可包括四个32比特双字数据元素。128比特封包四字格式846可包括两个64比特四字数据元素。256比特封包字节格式可包括三十二个8比特字节数据元素。256比特封包字格式可包括十六个16比特字数据元素。256比特封包双字格式可包括八个32比特双字数据元素。256比特封包四字格式可包括四个64比特四字数据元素。512比特封包字节格式可包括六十四个8比特字节数据元素。512比特封包字格式可包括三十二个16比特字数据元素。512比特封包双字格式可包括十六个32比特双字数据元素。512比特封包四字格式可包括八个64比特四字数据元素。其它封包数据格式可包括封包32比特单精度浮点数据元素或封包64比特双精度浮点数据元素。另外,更宽的封包数据宽度(例如,1024比特宽封包数据)和/或更窄的封包数据宽度(例如,32比特宽封包数据)也是适合的。通常,在封包数据操作数中封包数据元素的数量等于封包数据操作数的以比特表示的大小除以封包数据元素中的每个的以比特表示的大小。
图8是适合的一组封包数据寄存器814的示例实施例的框图。封包数据寄存器包括标记为ZMM0到ZMM31的三十二个512比特封包数据寄存器。在图示的实施例中,较低阶256比特的较低的十六个寄存器,即ZMM0-ZMM15,被混叠或覆盖在标记为YMM0-YMM15的相应256比特封包数据寄存器上,但这不是必需的。同样地,在图示的实施例中,较低阶128比特的寄存器YMM0-YMM15被混叠或覆盖在标记为XMM0-XMM15的相应128比特封包数据寄存器上,但这也不是必需的。512比特寄存器ZMM0到ZMM31操作以保持512比特封包数据、256比特封包数据或128比特封包数据。256比特寄存器YMM0-YMM15操作以保持256比特封包数据或128比特封包数据。128比特寄存器XMM0-XMM15操作以保持128比特封包数据。在一些实施例中,每个寄存器可用于存储封包浮点数据或封包整数数据。支持不同的数据元素大小,包括至少8比特字节数据、16比特字数据、32比特双字、32比特单精度浮点数据、64比特四字和64比特双精度浮点数据。在备选实施例中,可使用不同数量的寄存器和/或不同大小的寄存器。在还有的其它实施例中,寄存器可或可不使用较大寄存器在较小寄存器上的混叠,和/或可或可不用于存储浮点数据。
图9是适合的一组封包数据操作掩码寄存器990的示例实施例的框图。在图示的实施例中,该组包括标记为k0到k7的八个寄存器。备选实施例可包括少于八个寄存器(例如,两个、四个、六个等)或多于八个寄存器(例如,十六个、三十二个等)。这些寄存器中的每个可用于存储封包数据操作掩码。在图示的实施例中,每个寄存器是64比特。在备选实施例中,寄存器的宽度可以比64比特更宽(例如,80比特、128比特等),或者比64比特更窄(例如,8比特、16比特、32比特等)。寄存器可以以不同方式被实现,并且不被限于任何具体类型的电路或设计。适合的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器及其组合。
在一些实施例中,封包数据操作掩码寄存器990可以是单独、专用的一组架构寄存器。在一些实施例中,指令可在与用于编码或指定其它类型的寄存器(例如,封包数据寄存器)的那些指令格式的比特或字段不同的比特或一个或多个不同的字段中编码或指定封包数据操作掩码寄存器。通过示例方式,指令可使用三个比特(例如,3比特字段)来编码或指定八个封包数据操作掩码寄存器k0到k7中的任何一个。在备选实施例中,当存在更少或更多封包数据操作掩码寄存器时,可相应地使用更少或更多的比特。在一个具体实现中,仅封包数据操作掩码寄存器k1到k7(但没有k0)可作为判定遮蔽的封包数据操作的判定操作数而被寻址。寄存器k0可被用作常规源或目的地,但不可被编码为判定操作数(例如,如果k0被指定,则它具有“无掩码”编码),但这不是必需的。
指令集包括一个或多个指令格式。给定的指令格式定义各种字段(比特数量、比特位置)以在其它事物中指定要被执行的操作(操作码)和操作数(在其上要执行操作)。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义以具有指令格式的字段的不同子集(包括的字段典型地采用相同顺序,但至少一些具有不同比特位置,因为包括有较少字段)和/或被定义以具有不同地解译的给定字段。因此,ISA的每个指令使用给定的指令格式来表示(并且如果被定义,则采用该指令格式的指令模板中的给定一个)并且包括用于指定操作和操作数的字段。例如,示范性ADD指令具有特定操作码和指令格式,其包括用于指定那个操作码的操作码字段和用于选择操作数的操作数字段(源1/目的地和源2));以及指令流中的该ADD指令的出现将具有选择特定操作数的操作数字段中的特定内容。SIMD扩展的集合(涉及高级矢量扩展(AVX)(AVX1和AVX2)以及使用矢量扩展(VEX)编码方案)已被发布和/或公布(例如见Intel® 64和IA-32架构软件开发者手册(Architectures Software Developers Manual),2011年10月;以及见Intel®高级矢量扩展编程参考(Advanced Vector Extensions Programming Reference),2011年6月)。
示范性指令格式
本文描述的指令的实施例可以采用不同格式实施。此外,示范性系统、架构和流水线在下文被详述。指令的实施例可在这样的系统、架构和流水线上执行,但不限于详述的那些。
VEX指令格式
VEX编码允许指令具有不止两个操作数,并且允许SIMD矢量寄存器长于128比特。VEX前缀的使用提供三操作数(或者更多)语法。例如,前面的二操作数指令执行的操作,诸如A=A+B,其改写源操作数。VEX前缀的使用使操作数能执行诸如A=B+C的非破坏性操作。
图10A图示了示范AVX指令格式,包括VEX前缀1002、实操作码字段1030、Mod R/M字节1040、SIB字节1050、位移字段1062及IMM8 1072。图10B图示了来自图10A的哪些字段构成完整操作码字段1074和基础操作字段1042。图10C图示了来自图10A的哪些字段构成寄存器索引字段1044。
VEX前缀(字节0-2)1002是以三字节形式来编码。第一字节是格式字段1040(VEX字节0,比特[7:0]),其包含显式C4字节值(用于区分C4指令格式的唯一值)。第二-三字节(VEX字节1-2)包括提供特定能力的多个比特字段。具体地说,REX字段1005(VEX字节1,比特[7-5])由VEX.R比特字段(VEX字节1,比特[7]–R)、VEX.X比特字段(VEX字节1,比特[6]–X)和VEX.B比特字段(VEX字节1,比特[5]–B)组成。指令的其它字段对如在本领域中已知的寄存器索引的较低三个比特(rrr、xxx和bbb)进行编码,以便Rrrr、Xxxx和Bbbb可通过添加VEX.R、VEX.X和VEX.B来形成。操作码映射字段1015(VEX字节1,比特[4:0]–mmmmm)包括对隐式的领先操作码字节进行编码的内容。W字段1064(VEX字节2,比特[7]–W)由记号VEX.W表示,并且提供取决于该指令的不同功能。VEX.vvvv 1020(VEX字节2,比特[6:3]-vvvv)的作用可包括以下各项:1)VEX.vvvv对以反转(1的补码)形式指定的第一源寄存器操作数进行编码,并且对带有2个或不止2个源操作数的指令有效;2)VEX.vvvv对以用于某些矢量移位的1的补码形式指定的目的地寄存器操作数进行编码;或者3)VEX.vvvv不对任何操作数进行编码,字段被保留并且应包含1011b。如果VEX.L 1068大小字段(VEX字节2,比特[2]-L)=0,则它指示128比特矢量;如果VEX.L=1,则它指示256比特矢量。前缀编码字段1025(VEX字节2,比特[1:0]-pp)提供用于基础操作字段的附加比特。
实操作码字段1030(字节3)也被称为操作码字节。在此字段中指定操作码的一部分。
MOD R/M字段1040(字节4)包括MOD字段1042(比特[7-6])、Reg字段1044(比特[5-3])和R/M字段1046(比特[2-0])。Reg字段1044的作用可包括如下:对目的地寄存器操作数或源寄存器操作数(rrr或Rrrr)进行编码,或者被视为操作码扩展,并且不用于对任何指令操作数进行编码。R/M字段1046的作用可包括如下:对引用存储器地址的指令操作数进行编码,或者对目的地寄存器操作数或源寄存器操作数进行编码。
缩放、索引、基址(SIB)- 缩放字段1050(字节5)的内容包括被用于存储器地址生成的SS1052(比特[7-6])。SIB.xxx 1054(比特[5-3])和SIB.bbb 1056(比特[2-0])的内容先前已针对于寄存器索引Xxxx和Bbbb被提及。
位移字段1062和立即数字段(IMM8)1072包含地址数据。
一般矢量友好指令格式
矢量友好指令格式是适合用于矢量指令的指令格式(例如特定于矢量操作存在某些字段)。虽然描述了实施例,其中通过矢量友好指令格式支持矢量和标量两者操作,但备选实施例仅使用矢量友好格式的矢量操作。
图11A-11B是框图,其示出根据本发明的实施例的一般矢量友好指令格式和其指令模板。图11A是框图,其示出根据本发明的实施例的一般矢量友好指令格式和其类别A指令模板;而图11B是框图,其示出根据本发明的实施例的一般矢量友好指令格式和其类别B指令模板。具体地,对于一般矢量友好指令格式1100,定义了类别A和类别B指令模板,它们两者包括无存储器访问1105指令模板和存储器访问1120指令模板。矢量友好指令格式的上下文中的术语“一般”指的是指令格式不被束缚于任何特定指令集。
虽然本发明的实施例将被描述,其中矢量友好指令格式支持以下项:带有32比特(4字节)或64比特(8字节)数据元素宽度(或大小)的64字节矢量操作数长度(或大小)(并且因此,64字节矢量由16个双字大小元素或备选地8个四字大小元素组成);带有16比特(2字节)或8比特(1字节)数据元素宽度(或大小)的64字节矢量操作数长度(或大小);带有32比特(4字节)、64比特(8字节)、16比特(2字节)、或8比特(1字节)数据元素宽度(或大小)的32字节矢量操作数长度(或大小);以及带有32比特(4字节)、64比特(8字节)、16比特(2字节)、或8比特(1字节)数据元素宽度(或大小)的16字节矢量操作数长度(或大小);但备选实施例可支持带有更多、更少、或不同数据元素宽度(例如,128比特(16字节)数据元素宽度)的更多、更少和/或不同矢量操作数大小(例如,256字节矢量操作数)。
图11A中的类别A指令模板包括:1)在无存储器访问1105指令模板内,示出了无存储器访问、完整舍入(full round)控制类型操作1110指令模板,和无存储器访问、数据变换类型操作1115指令模板;以及2)在存储器访问1120指令模板内,示出了存储器访问、暂时1125指令模板,和存储器访问、非暂时1130指令模板。图11B中的类别B指令模板包括:1)在无存储器访问1105指令模板内,示出了无存储器访问、写掩码控制、部分舍入控制类型操作1112指令模板,和无存储器访问、写掩码控制、vsize类型操作1117指令模板;以及2)在存储器访问1120指令模板内,示出了存储器访问、写掩码控制1127指令模板。
一般矢量友好指令格式1100包括图11A-11B中所示出的以下按顺序列出的以下字段。
格式字段1140—此字段中的特定值(指令格式标识符值)唯一地标识矢量友好指令格式,并因此标识指令流中矢量友好指令格式中的指令的出现。因而,此字段在它对于仅具有一般矢量友好指令格式的指令集不被需要的意义中是可选的。
基础操作字段1142—它的内容分辨出不同的基础操作。
寄存器索引字段1144—它的内容直接或通过地址生成来指定源和目的地操作数的位置(它们在寄存器中或在存储器中)。这些包括用于从PxQ(例如32x512、16x128、32x1024、64x1024)寄存器堆选择N个寄存器的比特的足够数量。虽然在一个实施例中N可多至三个源和一个目的地寄存器,但备选实施例可支持更多或更少的源和目的地寄存器(例如,可支持多至两个源,其中这些源之一还充当目的地;可支持多至三个源,其中这些源之一还充当目的地;可支持多至两个源和一个目的地)。
修改符(Modifier)字段1146—它的内容分辨出一般矢量指令格式中指定存储器访问的指令与不指定存储器访问的那些指令的出现;那就是说,在无存储器访问1105指令模板和存储器访问1120指令模板之间进行分辨。存储器访问操作对存储器层级进行读和/或写(在使用寄存器中的值来指定源和/或目的地地址的一些情况中),而非存储器访问操作不进行(例如,源和目的地是寄存器)。虽然在一个实施例中此字段还在三个不同方式之间选择以执行存储器地址运算,但备选实施例可支持用于执行存储器地址运算的更多、更少、或不同方式。
扩增(augmentation)操作字段1150—它的内容分辨出除了基础操作之外还要被执行的多种不同操作的哪一个。此字段是上下文特定的。在本发明的一个实施例中,此字段被划分成类别字段1168、α字段1152、和β字段1154。扩增操作字段1150允许操作的通用组在单个指令而不是2、3、或4个指令中被执行。
缩放(scale)字段1160—它的内容允许用于存储器地址生成(例如,用于使用2缩放*索引+基址的地址生成)的索引字段的内容的缩放。
位移(displacement)字段1162A—它的内容作为存储器地址生成(例如,用于使用2缩放*索引+基址+位移的地址生成)的部分被使用。
位移因子字段1162B(注意,直接在位移因子字段1162B上的位移字段1162A的并置指示一个或另一个被使用)—它的内容作为地址生成的部分被使用;它指定要通过存储器访问的大小(N)来缩放的位移因子—其中N是存储器访问中的字节的数量(例如,用于使用2缩放*索引+基址+缩放的位移的地址生成)。冗余低顺序比特被忽略,并且因此,位移因子字段的内容被乘以存储器操作数总大小(N)以便生成要在运算有效地址中被使用的最终位移。N的值由处理器硬件在运行时间基于完整操作码字段1174(本文中较后所描述)和数据操纵字段1154C来确定。位移字段1162A和位移因子字段1162B在它们不被用于无存储器访问1105指令模板和/或不同实施例可实现所述两个的仅一个或没有一个的意义中是可选的。
数据元素宽度字段1164—它的内容分辨出多个数据元素宽度的哪一个要被使用(在对于所有指令的一些实施例中;在对于指令的仅一些指令的其它实施例中)。此字段在以下意义上是可选的:如果仅一个数据元素宽度被支持和/或使用操作码的一些方面来支持数据元素宽度,则不需要此字段。
写掩码字段1170—它的内容在按数据元素位置的基础上控制目的地矢量操作数中的那个数据元素位置是否反映基础操作和扩增操作的结果。类别A指令模板支持合并写掩蔽,而类别B指令模板支持合并和归零写掩蔽两者。在合并时,矢量掩码允许目的地中的元素的任何集合被保护免于在任何操作(由基础操作和扩增操作所指定的)的执行期间更新;在另外一个实施例中,保存其中对应掩码比特具有0的目的地的每个元素的旧值。相比之下,在归零时,矢量掩码允许目的地中的元素的任何集合在任何操作(由基础操作和扩增操作所指定的)的执行期间被归零;在一个实施例中,在对应掩码比特具有0值时,目的地的元素被设置成0。此功能性的子集是用于控制正被执行的操作的矢量长度(那就是说,正被修改的元素的跨度,从第一个到最后一个)的能力;然而,被修改的元素不必要是连续的。因此,写掩码字段1170允许部分矢量操作,包括加载、存储、算术、逻辑、等等。虽然本发明的实施例被描述,其中写掩码字段1170的内容选择含有要被使用的写掩码的多个写掩码寄存器之一(并且因此写掩码字段1170的内容间接标识要被执行的掩蔽),但备选实施例转而或附加允许掩码写字段1170的内容直接指定要被执行的掩蔽。
立即数字段1172—它的内容允许立即数的规格。此字段在它在不支持立即数的一般矢量友好格式的实现中不存在和它在不使用立即数的指令中不存在的意义中是可选的。
类别字段1168—它的内容在指令的不同类别之间进行分辨。参考图11A-B,此字段的内容在类别A和类别B指令之间选择。在图11A-B中,圆角方形被用于指示在字段中呈现的特定值(例如,在图11A-B中相应对于类别字段1168的类别A 1168A和类别B 1168B)。
类别A的指令模板
在类别A的非存储器访问1105指令模板的情况中,α字段1152被解译为RS字段1152A,其内容分辨出不同扩增操作类型的哪一个要被执行(例如,舍入1152A.1和数据变换1152A.2对于无存储器访问、舍入类型操作1110,和无存储器访问、数据变换类型操作1115指令模板被相应指定),而β字段1154分辨出所指定的类型的操作的哪个要被执行。在无存储器访问1105指令模板中,缩放字段1160、位移字段1162A、和位移缩放字段1162B不存在。
无存储器访问指令模板—完整舍入控制类型操作
在无存储器访问完整舍入控制类型操作1110指令模板中,β字段1154被解译为舍入控制字段1154A,其内容提供静态舍入。虽然在本发明的所描述的实施例中,舍入控制字段1154A包括所有浮点异常(SAE)字段1156和舍入操作控制字段1158的抑制,但备选实施例可支持可将这些概念两者编码成相同字段,或仅具有这些概念/字段的一个或另一个(例如,可具有仅舍入操作控制字段1158)。
SAE字段1156—它的内容分辨出是否禁用异常事件报告;在SAE字段1156的内容指示抑制被启用时,给定的指令不报告任何种类的浮点异常标记且不唤起(raise)任何浮点异常处置器。
舍入操作控制字段1158—它的内容分辨出一组舍入操作的哪一个要执行(例如,上舍入、下舍入、朝零舍入和往最近舍入)。因此,舍入操作控制字段1158允许按指令的基础上的舍入模式的改变。在本发明的一个实施例中,其中处理器包括用于指定舍入模式的控制寄存器,舍入操作控制字段1150的内容覆盖那个寄存器值。
无存储器访问指令模板—数据变换类型操作
在无存储器访问数据变换类型操作1115指令模板中,β字段1154被解译为数据变换字段1154B,其内容分辨出多个数据变换的哪一个要被执行(例如,无数据变换、打乱(swizzle)、广播)。
在类别A的存储器访问1120指令模板的情况中,α字段1152被解译为驱逐提示字段1152B,其内容分辨出驱逐提示的哪一个要被使用(在图11A中,暂时1152B.1和非暂时1152B.2对于存储器访问、暂时1125指令模板,和存储器访问、非暂时1130指令模板被相应指定),而β字段1154被解译为数据操纵字段1154C,其内容分辨出多个数据操纵操作(还已知为原语(primitive))的哪一个要被执行(例如,无操纵;广播;源的上转换;以及目的地的下转换)。存储器访问1120指令模板包括缩放字段1160、并可选地包括位移字段1162A或位移缩放字段1162B。
矢量存储器指令通过转换支持来执行自存储器的矢量加载和往存储器的矢量存储。如通过常规矢量指令,矢量存储器指令以数据元素式的方式将数据转移自/往存储器,实际上被转移的元素由作为写掩码被选择的矢量掩码的内容来指示。
存储器访问指令模板—暂时
暂时数据是这样的数据,其有可能被足够快地再使用以受益于进行高速缓冲存储器。然而,这是提示,并且不同处理器可以采用不同方式来实现它,包括完全忽略该提示。
存储器访问指令模板—非暂时
非暂时数据是这样的数据,其不太可能被足够快地再使用以受益于在第1级高速缓冲存储器中进行高速缓冲存储器并应被给定用于驱逐的优先权。然而,这是提示,并且不同处理器可以采用不同方式来实现它,包括完全忽略该提示。
类别B的指令模板
在类别B的指令模板的情况中,α字段1152被解译为写掩码控制(Z)字段1152C,其内容分辨出由写掩码字段1170所控制的写掩蔽应是合并还是归零。
在类别B的非存储器访问1105指令模板的情况中,β字段1154的部分被解译为RL字段1157A,其内容分辨出不同扩增操作类型的哪一个要被执行(例如,舍入1157A.1和矢量长度(VSIZE)1157A.2对于无存储器访问、写掩码控制、部分舍入控制类型操作1112指令模板,和无存储器访问、写掩码控制、VSIZE类型操作1117指令模板被相应指定),而β字段1154的剩余部分分辨出指定类型的操作的哪个要被执行。在无存储器访问1105指令模板中,缩放字段1160、位移字段1162A、和位移缩放字段1162B不存在。
在无存储器访问、写掩码控制、部分舍入控制类型操作1110指令模板中,β字段1154的剩余部分被解译为舍入操作字段1159A,并且异常事件报告被禁用(给定的指令不报告任何种类的浮点异常标记且不唤起任何浮点异常处置器)。
舍入操作控制字段1159A—正如舍入操作控制字段1158,它的内容分辨出一组舍入操作的哪一个要执行(例如,上舍入、下舍入、朝零舍入和往最近舍入)。因此,舍入操作控制字段1159A允许在按指令的基础上的舍入模式的改变。在本发明的一个实施例中,其中处理器包括用于指定舍入模式的控制寄存器,舍入操作控制字段1150的内容覆盖那个寄存器值。
在无存储器访问、写掩码控制、VSIZE类型操作1117指令模板中,β字段的剩余部分1154被解译为矢量长度字段1159B,其内容分辨出多个数据矢量长度的哪一个要被执行(例如,128、256、或512字节)。
在类别B的存储器访问1120指令模板的情况中,β字段1154的部分被解译为广播字段1157B,其内容分辨出广播类型数据操纵操作是否要被执行,而β字段1154的剩余部分被解译为矢量长度字段1159B。存储器访问1120指令模板包括缩放字段1160、并可选地包括位移字段1162A或位移缩放字段1162B。
关于一般矢量友好指令格式1100,完整操作码字段1174被示出,包括格式字段1140、基础操作字段1142、和数据元素宽度字段1164。虽然一个实施例被示出,其中完整操作码字段1174包括所有这些字段,但在不支持所有这些字段的实施例中,完整操作码字段1174包括少于所有这些字段。完整操作码字段1174提供操作代码(操作码)。
扩增操作字段1150、数据元素宽度字段1164、和写掩码字段1170允许这些特征在一般矢量友好指令格式中在按指令的基础上被指定。
写掩码字段和数据元素宽度字段的组合创建分类的(typed)指令,因为它们允许掩码基于不同数据元素宽度而被应用。
在类别A和类别B内建立的各种指令模板在不同情境中是有益的。在本发明的一些实施例中,不同处理器或处理器内的不同核可支持仅类别A、仅类别B、或两个类别。例如,打算用于通用计算的高性能通用乱序核可支持仅类别B,打算主要用于图形和/或科学(吞吐量)计算的核可支持仅类别A,以及打算用于两者的核可支持两个类别(当然,具有来自两个类别的模板和指令但不是来自两个类别的所有模板和指令的某些混合的核在本发明的界限之内)。同样,单个处理器可包括多个核,其的所有支持相同类别或其中不同核支持不同类别。例如,在带有单独的图形和通用核的处理器中,打算主要用于图形和/或科学计算的图形核之一可支持仅类别A,而通用核的一个或多个通用核可以是支持仅类别B的打算用于通用计算的带有乱序运行和寄存器重命名的高性能通用核。不具有单独的图形核的另一个处理器可包括支持类别A和类别B两者的更多一个通用有序或乱序核。当然,来自一个类别的特征可还被实现于本发明的不同实施例中的另一类别中。以高等级语言所写的程序将被翻译(例如,准时编译或静态编译)成多种不同可运行的形式,包括:1)具有用于运行的由目标处理器所支持的类别的仅指令的形式;或2)具有使用所有类别的指令的不同组合所写的备选例程并具有选择例程以基于由处理器(其当前正运行代码)所支持的指令来运行的控制流程代码(control flow code)的形式。
示范性特定矢量友好指令格式
图12是框图,其示出根据本发明的实施例的示范性特定矢量友好指令格式。图12示出特定矢量友好指令格式1200,其在它指定位置、大小、解译、和字段的顺序、以及那些字段的一些字段的值的意义中是特定的。特定矢量友好指令格式1200可被用于扩展x86指令集,并且因此字段的一些字段与现存x86指令集和其扩展(例如,AVX)中所使用的那些字段类似或相同。此格式与带有扩展的现存x86指令集的前缀编码字段、真操作码字节字段、MOD R/M字段、SIB字段、位移字段,和立即数字段保持一致。来自图12的字段所映射到其中的来自图11的字段被示出。
应被理解的是,尽管本发明的实施例为了说明性目的而参考一般矢量友好指令格式1100的上下文中的特定矢量友好指令格式1200来描述,但除非在声明之处,本发明不限于特定矢量友好指令格式1200。例如,一般矢量友好指令格式1100对于各种字段设想多种可能大小,而特定矢量友好指令格式1200被示出为具有特定大小的字段。通过特定示例的方式,虽然数据元素宽度字段1164被示出为特定矢量友好指令格式1200中的一个比特字段,但本发明不被如此限制(那就是说,一般矢量友好指令格式1100设想数据元素宽度字段1164的其它大小)。
一般矢量友好指令格式1100包括图12A中所示出的以下按顺序列出的以下字段。
EVEX前缀(字节0-3)1202-以四字节形式来编码。
格式字段1140(EVEX字节0,比特[7:0])-第一字节(EVEX字节0)是格式字段1140,并且它含有0x62(被用于分辨出本发明的一个实施例中的矢量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供特定能力的多个比特字段。
REX字段1205(EVEX字节1,比特[7-5])—由以下项组成:EVEX.R比特字段(EVEX字节1,比特[7]—R)、EVEX.X比特字段(EVEX字节1,比特[6]—X)、和1157BEX字节1、比特[5]—B)。EVEX.R、EVEX.X、和EVEX.B比特字段提供与对应VEX比特字段相同的功能性,并使用1s补码形式来编码,即ZMM0被编码为1011B,ZMM15被编码为0000B。指令的其它字段编码如本领域中已知的寄存器索引的较低三个比特(rrr、xxx、和bbb),使得Rrrr、Xxxx、和Bbbb可通过添加EVEX.R、EVEX.X、和EVEX.B来形成。
REX'字段1110—这是REX'字段1110的第一部分并且是被用于编码扩展的32寄存器集合的较上16或较低16的EVEX.R'比特字段(EVEX字节1,比特[4]-R')。在本发明的一个实施例中,这个比特连同如以下所指示的其它比特以比特倒置的格式被存储以(在公知的x86 32-比特模式中)分辨出BOUND指令,其真操作码字节是62,但在MOD R/M字段(以下所描述的)中不接受MOD字段中的11的值;本发明的备选实施例不以倒置的格式来存储这个比特和以下所指示的另一个比特。1的值被用于编码较低16个寄存器。换句话说,R'Rrrr通过组合EVEX.R'、EVEX.R、和来自其它字段的另一个RRR来形成。
操作码映射字段1215(EVEX字节1,比特[3:0]—mmmm)—它的内容编码所暗示的前导操作码字节(0F,0F 38,或0F 3)。
数据元素宽度字段1164(EVEX字节2,比特[7]—W)-由符号EVEX.W来表示。EVEX.W被用于定义数据类型的粒度(大小)(32比特数据元素或64比特数据元素)。
EVEX.vvvv 1220(EVEX字节2,比特[6:3]-vvvv)-EVEX.vvvv的角色可包括以下项:1)EVEX.vvvv编码以倒置(1s补码)的形式所指定的第一源寄存器操作数,并对于带有2个或更多源操作数的指令有效;2)EVEX.vvvv编码对于某些矢量移位以1s补码形式所指定的目的地寄存器操作数;或者3)EVEX.vvvv不编码任何操作数,字段被保留并应含有1011b。因此,EVEX.vvvv字段1220编码以倒置(1s补码)的形式所存储的第一源寄存器指定符(specifier)的4个低顺序比特。取决于指令,额外不同EVEX比特字段被用于将指定符大小扩展到32个寄存器。
EVEX.U 1168类别字段(EVEX字节2,比特[2]-U)—如果EVEX.U=0,则它指示类别A或EVEX.U0;如果EVEX.U=1,则它指示类别B或EVEX.U1。
前缀编码字段1225(EVEX字节2,比特[1:0]-pp)—为基础操作字段提供附加比特。除了为EVEX前缀格式中的遗留SSE指令提供支持以外,这还具有紧致SIMD前缀的益处(而不是要求字节以表示SIMD前缀,EVEX前缀要求仅2比特)。在一个实施例中,为了支持在遗留格式中和在EVEX前缀格式中两者都使用SIMD前缀(66H,F2H,F3H)的遗留SSE指令,这些遗留SIMD前缀被编码到SIMD前缀编码字段中;并在运行时间在被提供给解码器的PLA之前被扩展到遗留SIMD前缀中(所以PLA能运行这些遗留指令的遗留和EVEX格式两者而不用修改)。尽管较新的指令能直接将EVEX前缀编码字段的内容用作操作码扩展,某些实施例为了一致性以类似方式来扩展但允许要由这些遗留SIMD前缀来指定的不同含意。备选实施例可将PLA重新设计成支持2比特SIMD前缀编码,并因此不要求扩展。
α字段1152(EVEX字节3,比特[7]—EH;还已知为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制、和EVEX.N;还通过α来示出)—如之前所描述的,此字段是上下文特定的。
β字段1154(EVEX字节3,比特[6:4]-SSS,还已知为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;还通过βββ来示出)—如之前所描述的,此字段是上下文特定的。
REX'字段1110—这是REX'字段的其余部分并且是可被用于编码扩展的32寄存器集合的较上16或较低16的EVEX.V'比特字段(EVEX字节3,比特[3]-V')。此比特以比特倒置的格式来存储。1的值被用于编码较低16个寄存器。换句话说,V'VVVV通过组合EVEX.V'、EVEX.vvvv来形成。
写掩码字段1170(EVEX字节3,比特[2:0]-kkk)—它的内容指定如之前所描述的写掩码寄存器中寄存器的索引。在本发明的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码被用于具体指令的特别行为(这可以以包括使用硬连线到所有寄存器的写掩码或绕过掩蔽硬件的硬件的多种方式来实现)。
真操作码字段1230(字节4)还已知为操作码字节。操作码的部分在此字段中被指定。
MOD R/M字段1240(字节5)包括MOD字段1242、Reg字段1244、和R/M字段1246。如之前所描述的,MOD字段1242的内容在存储器访问和非存储器访问操作之间进行分辨。Reg字段1244的角色能被概括成两种情境:编码目的地寄存器操作数或源寄存器操作数,或作为操作码扩展被对待并不被用于编码任何指令操作数。R/M字段1246的角色可包括以下项:编码引用存储器地址的指令操作数,或者编码目的地寄存器操作数或源寄存器操作数。
缩放、索引、基址(SIB)字节(字节6)—如之前所描述的,缩放字段1150的内容被用于存储器地址生成。SIB.xxx 1254和SIB.bbb 1256—这些字段的内容之前已关于寄存器索引Xxxx和Bbbb被提到。
位移字段1162A(字节7-10)—在MOD字段1242含有10时,字节7-10是位移字段1162A,并且它与遗留32比特位移(disp32)相同地工作并在字节粒度工作。
位移因子字段1162B(字节7)—在MOD字段1242含有01时,字节7是位移因子字段1162B。此字段的位置与遗留x86指令集8比特位移(disp8)的位置相同,其在字节粒度工作。由于disp8是扩展的记号,它能仅定址于-128和117字节偏移之间;在64字节高速缓冲存储器行方面,disp8使用能被设置成仅四个真正有用的值-128、-64、0、和64的8比特;由于更大的范围常常被需要,disp32被使用;然而,disp32要求4字节。与disp8和disp32对照,位移因子字段1162B是disp8的重新解译;在使用位移因子字段1162B时,实际位移由乘以存储器操作数访问的大小(N)的位移因子字段的内容来确定。此类型的位移被称为disp8*N。这减少平均指令长度(用于位移但带有大得多的范围的单个字节)。此类压缩的位移基于有效位移是存储器访问的粒度的倍数并且因此地址偏移的冗余低顺序比特不需要被编码的假定。换句话说,位移因子字段1162B替代遗留x86指令集8比特位移。因此,位移因子字段1162B以与x86指令集8比特位移相同的方式来编码(所以在ModRM/SIB编码规则中没有改变),带有disp8被过载到disp8*N的仅有例外。换句话说,在编码规则或编码长度中不存在改变,仅除了在通过硬件的位移值的解译中之外(其需要通过存储器操作数的大小来缩放位移以获得字节式地址偏移)。
立即数字段1172如之前所描述地操作。
完整操作码字段
图12B是框图,其示出根据本发明的一个实施例的构成完整操作码字段1174的特定矢量友好指令格式1200的字段。具体地,完整操作码字段1174包括格式字段1140、基础操作字段1142、和数据元素宽度(W)字段1164。基础操作字段1142包括前缀编码字段1225、操作码映射字段1215、和真操作码字段1230。
寄存器索引字段
图12C是框图,其示出根据本发明的一个实施例的构成寄存器索引字段1144的特定矢量友好指令格式1200的字段。具体地,寄存器索引字段1144包括REX字段1205、REX'字段1210、MODR/M.reg字段1244、MODR/M.r/m字段1246、VVVV字段1220、xxx字段1254、和bbb字段1256。
扩增操作字段
图12D是框图,其示出根据本发明的一个实施例的构成扩增操作字段1150的特定矢量友好指令格式1200的字段。在类别(U)字段1168含有0时,它象征EVEX.U0(类别A 1168A);在它含有1时,它象征EVEX.U1(类别B 1168B)。在U=0并且MOD字段1242含有11(象征无存储器访问操作)时,α字段1152(EVEX字节3,比特[7]—EH)被解译为rs字段1152A。在rs字段1152A含有1(舍入1152A.1)时,β字段1154(EVEX字节3,比特[6:4]-SSS)被解译为舍入控制字段1154A。舍入控制字段1154A包括一比特SAE字段1156和两比特舍入操作字段1158。在rs字段1152A含有0(数据变换1152A.2)时,β字段1154(EVEX字节3,比特[6:4]-SSS)被解译为三比特数据变换字段1154B。在U=0并且MOD字段1242含有00、01、或10(象征存储器访问操作)时,α字段1152(EVEX字节3,比特[7]—EH)被解译为驱逐提示(EH)字段1152B并且β字段1154(EVEX字节3,比特[6:4]-SSS)被解译为三比特数据操纵字段1154C。
在U=1时,α字段1152(EVEX字节3,比特[7]—EH)被解译为写掩码控制(Z)字段1152C。在U=1并且MOD字段1242含有11(象征无存储器访问操作)时,β字段1154的部分(EVEX字节3,比特[4]-S0)被解译为RL字段1157A;在它含有1(舍入1157A.1)时,β字段1154的剩余部分(EVEX字节3,比特[6-5]-S2-1)被解译为舍入操作字段1159A,而在RL字段1157A含有0(VSIZE 1157.A2)时,β字段1154的剩余部分(EVEX字节3,比特[6-5]-S2-1)被解译为矢量长度字段1159B(EVEX字节3,比特[6-5]-L1-0)。在U=1并且MOD字段1242含有00、01、或10(象征存储器访问操作)时,β字段1154(EVEX字节3,比特[6:4]-SSS)被解译为矢量长度字段1159B(EVEX字节3,比特[6-5]-L1-0)和广播字段1157B(EVEX字节3,比特[4]-B)。
示范性寄存器架构
图13是根据本发明的一个实施例的寄存器架构1300的框图。在所示出的实施例中,存在512比特宽的32个矢量寄存器1310;这些寄存器被引用为zmm0直到zmm31。较低的16个zmm寄存器的较低顺序256比特被覆载在寄存器ymm0-16上。较低的16个zmm寄存器的较低顺序128比特(ymm寄存器的较低顺序128比特)被覆载在寄存器xmm0-15上。特定矢量友好指令格式1200在如以下表中所示出的这些覆载寄存器堆上操作。
换句话说,矢量长度字段1159B在最大长度和一个或多个其它更短长度之间选择,其中每个此类更短长度是前述长度的一半长度;并且不带有矢量长度字段1159B的指令模板在最大矢量长度上操作。进一步地,在一个实施例中,特定矢量友好指令格式1200的类别B指令模板在封包的或标量的单/双精度浮点数据和封包的或标量的整数数据上操作。标量的操作是在zmm/ymm/xmm寄存器中最低顺序数据元素位置上执行的操作;更高顺序数据元素位置取决于实施例保持与它们在该指令之前一样或被归零。
写掩码寄存器1315-在所示出的实施例中,存在8个写掩码寄存器(k0直到k7),每个的大小是64比特。在备选实施例中,写掩码寄存器1315的大小是16比特。如之前所描述的,在本发明的一个实施例中,矢量掩码寄存器k0不能作为写掩码被使用;在将通常指示k0的编码被用于写掩码时,它选择0xFFFF的硬连线写掩码,对于那个指令有效地禁用写掩蔽。
通用寄存器1325-在所示出的实施例中,存在连同现存x86寻址模式被用于寻址存储器操作数的十六个64-比特通用寄存器。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8直到R15来引用。
标量浮点栈寄存器堆(x87栈)1345,在其上MMX封包整数平寄存器堆1350被别名化-在所示出的实施例中,x87栈是用于使用x87指令集扩展在32/64/80比特浮点数据上执行标量浮点操作的八元素栈;而MMX寄存器被用于在64-比特封包整数数据上执行操作,还被用于为在MMX和XMM寄存器之间所执行的一些操作来保存操作数。
本发明的备选实施例可使用更宽或更窄的寄存器。另外,本发明的备选实施例可使用更多、更少、或不同寄存器堆和寄存器。
示范性核架构、处理器、和计算机架构
处理器核可以不同方式、为了不同目的、以及在不同处理器中被实现。例如,此类核的实现可包括:1)打算用于通用计算的通用有序核;2)打算用于通用计算的高性能通用乱序核;3)打算主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括打算用于通用计算的一个或多个通用有序核和/或打算用于通用计算的一个或多个通用乱序核的CPU;以及2)包括打算主要用于图形和/或科学(吞吐量)的一个或多个专用核的协同处理器。此类不同处理器导致不同计算机系统架构,其可包括:1)在与所述CPU单独的芯片上的协同处理器; 2)在与CPU相同的封装中单独管芯上的协同处理器;3)在与CPU相同的管芯上的协同处理器(在该情况中,此类协同处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)在可在相同管芯上包括所描述的CPU(有时被称为应用核或应用处理器)、以上所描述的协同处理器、和附加功能性的芯片上系统。示范性核架构接下来被描述,继之以示范性处理器和计算机架构的描述。
示范性核架构
有序和乱序核框图
图14A是框图,其示出根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、乱序发布/运行流水线两者。图14B是框图,其示出根据本发明的实施例的要被包括在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、乱序发布/运行架构核两者。图14A-B中的实线框示出有序流水线和有序核,而虚线框的可选附加示出寄存器重命名、乱序发布/运行流水线和核。给定有序方面是乱序方面的子集,乱序方面将被描述。
在图14A中,处理器流水线1400包括取阶段1402、长度解码阶段1404、解码阶段1406、分配阶段1408、重命名阶段1410、调度(还已知为分派或发布)阶段1412、寄存器读/存储器读阶段1414、运行阶段1416、写回/存储器写阶段1418、异常处置阶段1422、和提交阶段1424。
图14B示出处理器核1490,其包括耦合到运行引擎单元1450的前端单元1430,并且两者被耦合到存储器单元1470。核1490可以是简化指令集计算(RISC)核、复杂指令集计算(CISC)核、非常长指令字(VLIW)核、或混合或备选核类型。如仍有的另一个选项,核1490可以是专用核,诸如例如网络或通信核、压缩引擎、协同处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元1430包括耦合到指令高速缓冲存储器单元1434的分支预测单元1432,所述指令高速缓冲存储器单元1434被耦合到指令翻译旁视(lookaside)缓冲器(TLB)1436,其被耦合到指令取单元1438,指令取单元1438被耦合到解码单元1440。解码单元1440(或解码器)可解码指令,并生成为输出一个或多个微操作、微代码条目点、微指令、其它指令、或其它控制信号,其被解码自、或其以其它方式反映、或被推导自原始指令。使用各种不同机制,解码单元1440可被实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)、等等。在一个实施例中,核1490包括存储用于某些宏指令的微代码的微代码ROM或另一介质(例如,在解码单元1440中或以别的方式在前端单元1430内)。解码单元1440被耦合到运行引擎单元1450中的重命名/分配器单元1452。
运行引擎单元1450包括耦合到引退单元1454和一个或多个调度器单元1456的集合的重命名/分配器单元1452。调度器单元1456代表任何数量的不同调度器,包括保留站、中央指令窗口、等等。调度器单元1456被耦合到物理寄存器堆单元1458。物理寄存器堆单元1458中的每个代表一个或多个物理寄存器堆,其不同物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、封包的整数、封包的浮点、矢量整数、矢量浮点、状态(例如,是要被运行的下一个指令的地址的指令指针)、等等。在一个实施例中,物理寄存器堆单元1458包括矢量寄存器单元、写掩码寄存器单元、和标量寄存器单元。这些寄存器单元可提供架构上的矢量寄存器、矢量掩码寄存器、和通用寄存器。物理寄存器堆单元1458通过引退单元1454来重叠以示出其中寄存器重命名和乱序运行可被实现的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来堆、历史缓冲器、和引退寄存器堆;使用寄存器映射和寄存器的池;等等)。引退单元1454和物理寄存器堆单元1458被耦合到运行集群1460。运行集群1460包括一个或多个运行单元1462的集合和一个或多个存储器访问单元1464的集合。运行单元1462可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、封包的整数、封包的浮点、矢量整数、矢量浮点)上执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个运行单元,其它实施例可包括都执行所有功能的多个运行单元或仅一个运行单元。调度器单元1456、物理寄存器堆单元1458、和运行集群1460被示出为可能是复数的,因为某些实施例对于某些类型的数据/操作来创建单独流水线(例如,标量整数流水线、标量浮点/封包的整数/封包的浮点/矢量整数/矢量浮点流水线、和/或存储器访问流水线,其各自具有它们自己的调度器单元、物理寄存器堆单元、和/或运行集群—并且在单独的存储器访问流水线的情况中,其中此流水线的仅运行集群具有存储器访问单元1464的某些实施例被实现)。还应被理解的是,在单独流水线被使用之处,这些流水线的一个或多个流水线可以是乱序发布/运行,并且剩余的是有序。
存储器访问单元1464的集合被耦合到存储器单元1470,存储器单元1470包括耦合到数据高速缓冲存储器单元1474的数据TLB单元1472,数据高速缓冲存储器单元1474耦合到2级(L2)高速缓冲存储器单元1476。在一个示范性实施例中,存储器访问单元1464可包括加载单元、存储地址单元、和存储数据单元,其的每个被耦合到存储器单元1470中的数据TLB单元1472。指令高速缓冲存储器单元1434被进一步耦合到存储器单元1470中的2级(L2)高速缓冲存储器单元1476。L2高速缓冲存储器单元1476被耦合到一个或多个其它级别的高速缓冲存储器并最终到主存储器。
通过示例的方式,示范性寄存器重命名、乱序发布/运行核架构可实现如下流水线1400:1)指令取1438执行取及长度解码阶段1402和1404;2)解码单元1440执行解码阶段1406;3)重命名/分配器单元1452执行分配阶段1408和重命名阶段1410;4)调度器单元1456执行调度阶段1412;5)物理寄存器堆单元1458和存储器单元1470执行寄存器读/存储器读阶段1414;运行集群1460执行运行阶段1416;6)存储器单元1470和物理寄存器堆单元1458执行写回/存储器写阶段1418;7)各种单元可在异常处置阶段1422中被涉及;以及8)引退单元1454和物理寄存器堆单元1458执行提交阶段1424。
核1490可支持一个或多个指令集(例如,x86指令集(带有已随较新版本被添加的一些扩展);MIPS Technologies of Sunnyvale,CA的MIPS指令集;ARM Holdings ofSunnyvale,CA的ARM指令集(带有诸如NEON的可选附加扩展)),包括本文中所描述的指令。在一个实施例中,核1490包括用于支持封包数据指令集扩展(例如,AVX1、AVX2)的逻辑,因此允许由许多多媒体应用来使用的操作使用封包的数据来执行。
应被理解的是,核可支持多线程(运行操作或线程的两个或更多并行集合),并可以多种方式来如此做,所述多种方式包括时间分段的多线程、同时多线程(在单个物理核为线程的每个提供逻辑核的情况中,那个物理核正进行同时多线程),或其组合(例如,诸如在Intel®超线程技术中的时间分段的取和解码以及其后的同时多线程)。
虽然寄存器重命名在乱序运行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。虽然处理器的所示出实施例还包括单独的指令和数据高速缓冲存储器单元1434/1474以及共享的L2高速缓冲存储器单元1476,但备选实施例可具有用于指令和数据两者的单个内部高速缓冲存储器,诸如例如,1级(L1)内部高速缓冲存储器、或多个级别的内部高速缓冲存储器。在一些实施例中,系统可包括内部高速缓冲存储器及外部于核和/或处理器的外部高速缓冲存储器的组合。备选地,所有高速缓冲存储器可外部于核和/或处理器。
特定示范性有序核架构
图15A-B示出核将是芯片中若干逻辑块之一(包括相同类型和/或不同类型的其它核)的更特定示范性有序核架构的框图。逻辑块通过高带宽互连网络(例如,环网络)取决于应用而通信于一些固定的功能逻辑、存储器I/O接口、和另一必要I/O逻辑。
图15A是根据本发明的实施例的单个处理器核连同到管芯上互连网络1502的它的连接并连同2级(L2)高速缓冲存储器1504的它的本地子集的框图。在一个实施例中,指令解码器1500支持带有封包的数据指令集扩展的x86指令集。L1高速缓冲存储器1506允许低等待时间访问以将存储器高速缓冲存储器到标量和矢量单元中。虽然在一个实施例中(为简化设计),标量单元1508和矢量单元1510使用单独的寄存器集合(相应地,是标量寄存器11512和矢量寄存器1514),并且在它们之间所转移的数据被写到存储器并然后从1级(L1)高速缓冲存储器1506读回,但本发明的备选实施例可使用不同手段(例如,使用单个寄存器集合或包括允许数据在所述两个寄存器堆之间被转移而不被写和读回的通信路径)。
L2高速缓冲存储器1504的本地子集是全局L2高速缓冲存储器的部分,所述全局L2高速缓冲存储器被划分成单独的本地子集,每处理器核一个。每个处理器核具有到L2高速缓冲存储器1504的它自己的本地子集的直接访问路径。由处理器核所读的数据被存储在其L2高速缓冲存储器子集1504中并能被快速地访问,并行于其它处理器核访问它们自己的本地L2高速缓冲存储器子集。由处理器核所写的数据被存储在其自己的L2高速缓冲存储器子集1504中并且如果必要则从其它子集中转储清除。环网络确保共享的数据的一致性。环网络是双向的以允许诸如处理器核、L2高速缓冲存储器、和其它逻辑块的代理在芯片内互相通信。每个环数据-路径每方向是1012-比特宽。
图15B是根据本发明的实施例的图15A中的处理器核的部分的扩展的视图。图15B包括L1高速缓冲存储器1504的L1数据高速缓冲存储器1506A部分,以及关于矢量单元1510和矢量寄存器1514的更多细节。具体地,矢量单元1510是16宽矢量处理单元(VPU)(见16宽ALU 1528),其运行整数、单精度浮动、和双精度浮动指令的一个或多个。VPU支持在存储器输入上通过打乱单元1520来打乱寄存器输入、通过数值转换单元1522A-B来进行数值转换、以及通过复制单元1524来进行复制。写掩码寄存器1526允许预测结果的矢量写。
具有集成存储器控制器和图形的处理器
图16是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器1600的框图。图16中的实线框示出带有单个核1602A、系统代理1610、一个或多个总线控制器单元1616的集合的处理器1600,而虚线框的可选附加示出带有多个核1602A-N、系统代理单元1610中的一个或多个集成存储器控制器单元1614的集合、和专用逻辑1608的备选处理器1600。
因此,处理器1600的不同实现可包括:1)CPU,带有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1608、以及是一个或多个通用核(例如,通用有序核、通用乱序核、所述两个核的组合)的核1602A-N;2)带有是打算主要用于图形和/或科学(吞吐量)的大量的专用核的核1602A-N的协同处理器;以及3)带有是大量的通用有序核的核1602A-N的协同处理器。因此,处理器1600可以是通用处理器、协同处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协同处理器(包括30或更多核)、嵌入式处理器等等。处理器可被实现在一个或多个芯片上。使用多个处理技术的任何个(诸如例如,BiCMOS、CMOS、或NMOS),处理器1600可被实现在一个或多个衬底上和/或是其部分。
存储器层级包括核内高速缓冲存储器的一个或多个级别、共享的高速缓冲存储器单元1606的集合或一个或多个、和耦合到集成存储器控制器单元1614的集合的外部存储器(未示出)。共享的高速缓冲存储器单元1606的集合可包括一个或多个中级别高速缓冲存储器,诸如2级(L2)、3级(L3)、4级(L4)、或其它级别的高速缓冲存储器、最后级别高速缓冲存储器(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元1612将集成图形逻辑1608、共享的高速缓冲存储器单元1606的集合、以及系统代理单元1610/集成存储器控制器单元1614互连,但备选实施例可使用用于互连此类单元的任何数量的公知技术。在一个实施例中,一个或多个高速缓冲存储器单元1606和核1602-A-N之间的一致性被维持。
在一些实施例中,核1602A-N的一个或多个核有多线程的能力。系统代理1610包括协调和操作核1602A-N的那些组件。系统代理单元1610可包括例如功率控制单元(PCU)和显示器单元。PCU可以是或包括为调节集成图形逻辑1608和核1602A-N的功率状态所需要的逻辑和组件。显示器单元用于驱动一个或多个外部连接的显示器。
核1602A-N可关于架构指令集是同质或异质的;那就是说,核1602A-N的两个或更多核可有运行相同指令集的能力,而其它的核可有运行不同指令集或那个指令集的仅子集的能力。
示范性计算机架构
图17-21是示范性计算机架构的框图。在对于膝上型计算机、桌上型计算机、手持型PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其它电子装置的领域中已知的其它系统设计和配置也是适合的。一般来说,能够合并如本文中所公开的处理器和/或其它运行逻辑的极多种的系统或电子装置一般是适合的。
现在参考图17,所示出的是根据本发明的一个实施例的系统1700的框图。系统1700可包括被耦合到控制器集线器1720的一个或多个处理器1710、1715。在一个实施例中,控制器集线器1720包括图形存储器控制器集线器(GMCH)1790和输入/输出集线器(IOH)1750(其可在单独的芯片上);GMCH 1790包括存储器1740和协同处理器1745被耦合到的存储器和图形控制器;IOH 1750将输入/输出(I/O)装置1760耦合到GMCH 1790。备选地,存储器和图形控制器之一或两者被集成在处理器(如本文中所描述的)内,存储器1740和协同处理器1745被直接耦合到处理器1710、和带有IOH 1750的单个芯片中的控制器集线器1720。
附加处理器1715的可选性质在图17中用断线来指代。每个处理器1710、1715可包括本文中所描述的处理核中的一个或多个,并可以是处理器1600的某版本。
存储器1740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或所述两个存储器的组合。对于至少一个实施例,控制器集线器1720经由诸如前侧总线(FSB)的多点总线、诸如快速路径互连(QPI)的点对点接口、或类似连接1795来与处理器1710、1715通信。
在一个实施例中,协同处理器1745是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器集线器1720可包括集成图形加速器。
物理资源1710、1715之间关于包括架构上、微架构上、热、功率耗用特性、和诸如此类的指标的规格的谱能存在多种不同。
在一个实施例中,处理器1710运行控制一般类型的数据处理操作的指令。指令内所嵌入的可以是协同处理器指令。处理器1710将这些协同处理器指令识别成是应由附连的协同处理器1745来运行的类型。因此,处理器1710在协同处理器总线或其它互连上将这些协同处理器指令(或代表协同处理器指令的控制信号)发布到协同处理器1745。协同处理器1745接受并运行所接收的协同处理器指令。
现在参考图18,所示出的是根据本发明的实施例的第一更特定示范性系统1800的框图。如图18中所示出的,多处理器系统1800是点对点互连系统,并包括经由点对点互连1850所耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每个可以是处理器1600的某版本。在本发明的一个实施例中,处理器1870和1880相应是处理器1710和1715,而协同处理器1838是协同处理器1745。在另一个实施例中,处理器1870和1880相应是处理器1710、协同处理器1745。
处理器1870和1880被示出相应包括集成存储器控制器(IMC)单元1872和882。处理器1870还包括作为它的总线控制器单元的部分的点对点(P-P)接口1876和1878;类似地,第二处理器1880包括P-P接口1886和1888。使用P-P接口电路1878、1888,处理器1870、1880可经由点对点(P-P)接口1850来互换信息。如图18中所示出的,IMC 1872和1882将处理器耦合到相应存储器(就是存储器1832和存储器1834),其可以是本地附连到相应处理器的主存储器的部分。
使用点对点接口电路1876、1894、1886、1898,处理器1870、1880可各自经由各个P-P接口1852、1854与芯片集1890互换信息。芯片集1890可以可选地经由高性能接口1839与协同处理器1838互换信息。在一个实施例中,协同处理器1838是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等
共享的高速缓冲存储器(未示出)可被包括在任一处理器中或在两个处理器之外,又经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓冲存储器信息可被存储在共享的高速缓冲存储器中。
芯片集1890可经由接口1896来耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围组件互连(PCI)总线、或诸如PCI高速总线或另一个第三代I/O互连总线的总线,尽管本发明的范畴未被如此限制。
如图18中所示出的,各种I/O装置1814可连同总线桥1818被耦合到第一总线1816,总线桥1818将第一总线1816耦合到第二总线1820。在一个实施例中,诸如协同处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其它处理器的一个或多个附加处理器1815被耦合到第一总线1816。在一个实施例中,第二总线1820可以是低管脚计数(LPC)总线。各种装置可被耦合到第二总线1820,包括例如键盘和/或鼠标1822、通信装置1827和诸如硬盘驱动器或其它大容量存储装置的存储单元1828,其可包括指令/代码和数据1830(在一个实施例中)。进一步地,音频I/O1824可被耦合到第二总线1820。注意,其它架构是可能的。例如,替代图18的点对点架构,系统可实现多点总线或另一此类架构。
现在参考图19,所示出的是根据本发明的实施例的第二更特定示范性系统1900的框图。图18和19中的相似元件标有相似附图标记,并且图18的某些方面已从图19中被省略以便避免使图19的其它方面难以理解。
图19示出了处理器1870、1880可相应包括集成存储器以及I/O控制逻辑(“CL”)1872和1882。因此,CL 1872、1882包括集成存储器控制器单元并包括I/O控制逻辑。图19示出了不仅存储器1832、1834被耦合到CL 1872、1882,而且I/O装置1914也被耦合到控制逻辑1872、1882。遗留I/O装置1915被耦合到芯片集1890。
现在参考图20,所示出的是根据本发明的实施例的SoC 2000的框图。图16中的类似元件标有相似附图标记。同样,虚线框在更高级的SoC上是可选特征。在图20中,互连单元2002被耦合到:应用处理器2010,其包括一个或多个核192A-N的集合和共享的高速缓冲存储器单元1606;系统代理单元1610;总线控制器单元1616;集成存储器控制器单元1614;协同处理器2020的集合或一个或多个,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元2030;直接存储器访问(DMA)单元2032;以及用于耦合到一个或多个外部显示器的显示器单元2040。在一个实施例中,协同处理器2020包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中所公开的机制的实施例可被实现在硬件、软件、固件、或此类实现手段的组合中。本发明的实施例可被实现为在可编程系统上运行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。
诸如图18中所示出的代码1830的程序代码可被应用于输入指令以执行本文中所描述的功能并生成输出信息。输出信息可以已知方式被应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有处理器(诸如例如:数字信号处理器(DSP)、微控制器、应用特定集成电路(ASIC)、或微处理器)的任何系统。
程序代码可被实现在高等级规程上(procedural)或面向对象的编程语言中以与处理系统通信。如果期望的话,则程序代码可还被实现在汇编或机器语言中。事实上,本文中所描述的机制不限于对任何具体编程语言的范畴中。在任何情况中,语言可以是编译或解译的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当由机器来读时促使该机器制作用于执行本文中所描述的技术的逻辑。此类表示(已知为“IP核”)可被存储在有形的、机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器。
此类机器可读存储介质可包括由机器或装置所制造或形成的物品(article)的非暂态、有形的布置而没有限制,包括存储介质(诸如硬盘、包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)、和磁光盘的任何其它类型的盘)、半导体装置(诸如只读存储器(ROM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM),可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡、或适合于存储电子指令的任何其它类型的介质)。
因此,本发明的实施例还包括非暂态、有形的机器可读介质,所述介质含有指令或含有设计数据,诸如硬件描述语言(HDL),其定义本文中所描述的结构、电路、设备、处理器和/或系统特征。此类实施例可还被称为程序产品。
仿真(包含二进制转化、代码变形等)
在一些情况中,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或以其它方式将指令转换成要由核来处理的一个或多个其它指令。指令转换器被实现在软件、硬件、固件、或其组合中。指令转换器可在处理器上、离开处理器、或部分在处理器上而部单独开处理器。
图21是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可被实现在软件、固件、硬件、或其各种组合中。图21示出使用x86编译器2104,用高等级语言2102的程序可被编译以生成x86二进制代码2106,其可由带有至少一个x86指令集核的处理器2116来原生运行。带有至少一个x86指令集核的处理器2116表示能如带有至少一个x86指令集核的Intel处理器一样大体上执行相同功能的任何处理器,这通过兼容地运行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分,或(2)针对于在带有至少一个x86指令集核的Intel处理器上运行的应用或另一软件的对象(object)代码版本,以便取得大体上与带有至少一个x86指令集核的Intel处理器相同的结果。x86编译器2104表示可操作以生成x86二进制代码2106(例如,对象代码)的编译器,x86二进制代码2106能通过或不通过附加联接处理而在带有至少一个x86指令集核的处理器2116上被运行。类似地,图21示出了使用备选指令集编译器2108,用高等级语言2102的程序可被编译以生成备选指令集二进制代码2110,其可由不带有至少一个x86指令集核的处理器2114(例如,带有运行MIPS Technologies of Sunnyvale,CA的MIPS指令集和/或运行ARM Holdings of Sunnyvale,CA的ARM指令集的核的处理器)来原生运行。指令转换器2112被用于将x86二进制代码12106转换成可由不带有x86指令集核的处理器2114来原生运行的代码。此被转换的代码不可能与备选指令集二进制代码2110相同,因为能够这样做的指令转换器难以做出;然而,被转换的代码将完成一般操作并由来自备选指令集的指令构成。因此,指令转换器2112表示软件、固件、硬件、或其组合,其通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核的处理器或另一电子装置运行x86二进制代码2106。
针对图3-9的任何图所描述的组件、特征和细节可以也可选地适用于图1-2的任何图。针对本文中公开任何处理器(例如处理器100)所描述的组件、特征和细节可以可选地适用于在实施例中可以可选地由和/或通过此类处理器执行的本文中公开的任何方法(例如,方法220)。在实施例中本文中描述的任何处理器(例如,处理器100)可以可选地被包括在本文中公开的任何系统中(例如,图17-20的任何系统)。在实施例中本文中描述的任何处理器(例如,处理器100)可以可选地具有本文中示出的任何微架构(例如,图14B、15A/B)。另外,本文中公开的任何指令可在一些实施例中可选地具有本文中示出的指令格式(例如,针对图10A/B/C、11A/B、12A/B/C/D所描述的格式)的任何特征或细节。
在描述和权利要求中,可使用术语“耦合”和“连接”及其衍生词。这些术语不旨在作为彼此的同义词。相反,在实施例中,“连接”可用于指示两个或不止两个元系与彼此进行直接物理和/或电接触。“耦合”可指两个或不止两个元素与彼此进行直接物理或电接触。然而,“耦合”也可指两个或不止两个元素彼此不直接接触,但仍彼此协作或交互。例如,执行单元可通过一个或多个中介组件与寄存器和/或解码单元耦合。在图中,箭头用于示出连接和耦合。
本文中公开的组件和在前面图中描绘的方法可通过包括硬件(例如,晶体管、栅极、电路系统等)、固件(例如,存储微代码或控制信号的非易失性存储器)、软件(例如,存储在非暂态计算机可读存储介质上)或其组合的逻辑、模块或单元来实现。在一些实施例中,逻辑、模块或单元可包括至少一些或主要是潜在地与一些可选软件组合的硬件和/或固件的混合。
术语“和/或”可已被使用。如在本文中所使用的,术语“和/或”表示一个或另一个或两者(例如,A和/或B表示A或B或A和B两者)。
在上面的描述中,已阐述了特定的细节以便提供对实施例的透彻理解。然而,可在没有这些特定的细节的情况下实践其它实施例。本发明的范围将不是由上面所提供的特定示例来确定,而仅由下面的权利要求来确定。在其它实例中,以框图形式和/或未详细地示出了公知的电路、结构、装置和操作以避免混淆对描述的理解。在认为适当之处,参考数字或参考数字的末端部分已在图之中被重复以指示对应的或类似的元素,其可以可选地具有类似或相同特性,除非另外指定或者是清楚明显的。
某些操作可由硬件组件来执行,或者可在机器可执行或电路可执行指令中被实施,这些机器可执行指令或电路可执行指令可用于促使和/或者使得机器、电路、或硬件组件(例如,处理器、处理器的部分、电路等)编程有执行这些操作的指令。操作还可以可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可包括特定或具体的电路系统或其它逻辑(例如,潜在地与固件和/或软件组合的硬件),其操作以执行和/或处理指令并且存储结果(响应于该指令)。
一些实施例包括制品(例如,计算机程序产品),其包括机器可读介质。介质可包括以通过机器可读形式提供(例如,存储)信息的机制。机器可读介质可提供或在其上存储有指令或指令的序列,其如果和/或在由机器执行时,操作以促使机器执行和/或使得机器执行本文中公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可包括有形和/或非暂态机器可读存储介质。例如,非暂态机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储装置、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除及可编程ROM(EPROM)、电可擦除及可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂态存储器、或非暂态数据存储装置或诸如此类。非暂态机器可读存储介质不包含有暂态传播信号。在一些实施例中,存储介质可包括:包括固态物质或材料的有形介质,诸如例如半导体材料、相变材料、磁性固态材料、固态数据存储材料等。备选地,可以可选地使用非有形暂态计算机可读传送介质,诸如例如电气、光学、声学或其它形式的传播信号—诸如载波、红外信号和数字信号。
适合的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路或诸如此类。适合的机器的还有的其它示例包括计算机系统或其它电子装置,其包括处理器、数字逻辑电路或集成电路。此类计算机系统或电子装置的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如,路由器和交换机)、移动互联网装置(MID)、媒体播放器、智能电视、上网机(nettop)、机顶盒及视频游戏控制器。
通篇此说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用例如指示具体特征可被包括在本发明的实践中,但不一定要求是如此。类似地,在描述中,为实现精简本公开和帮助理解各种新颖方面的目的,各种特征有时在单个实施例、图或其描述中被编组在一起。然而,此公开的方法将不被解释为反映本发明要求比在每个权利要求中所明确记载的特征要更多的特征的意图。相反,如下面的权利要求所反映的,发明性方面是在于少于单个公开的实施例的所有特征。因此,在具体实施方式后的权利要求由此明确被并入到本具体实施方式中,每个权利要求项独立地作为本发明的单独实施例。
示例实施例
以下示例涉及另外实施例。示例中的细节可在一个或多个实施例中的任意处使用。
示例1是一种处理器,包括:多个封包数据寄存器;以及解码指令的解码单元。所述指令指示将包含多个邻接数据元素的源封包数据,所述指令指示数据元素的数量,以及所述指令指示目的地存储位置。处理器还包含与所述多个封包数据寄存器耦合并且与所述解码单元耦合的执行单元。所述执行单元响应所述指令,在所述目的地存储位置中存储结果封包数据。所述结果封包数据具有多个通路。所述结果封包数据的每个所述通路存储与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合。所述结果封包数据的邻接通路中的所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。
示例2包含示例1所述的处理器,其中所述解码单元将解码所述指令,所述指令将具有指示所述数据元素的所述数量的立即数。
示例3包含示例1到2任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将通过每个将包含相同数量的数据元素的结构的数量的指示来指示数据元素的所述数量。
示例4包含示例1到3任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示在系统存储器中的所述源封包数据。另外,可选地其中所述执行单元响应所述指令,将通过单个加载操作,从所述系统存储器加载所述数据元素的所述不同非重叠集合中的至少每个。
示例5包含示例4任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含多个掩码元素的掩码。另外,可选地其中所述执行单元响应所述指令,将从所述系统存储器仅加载对应于所述掩码的未遮蔽掩码元素的所述源封包数据的数据元素。
示例6包含示例1到5任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含32比特单精度浮点数据元素的所述源封包数据,并且所述指令将指示512比特目的地封包数据寄存器。另外,可选地其中所述执行单元响应所述指令,将存储所述结果封包数据,所述结果封包数据将会是512比特结果封包数据,并且所述结果封包数据将具有两个256比特通路。另外,可选地其中所述256比特通路中的每个将存储与所述相应256比特通路的所述最低有效端对齐的所述邻接32比特单精度浮点数据元素的所述对应不同非重叠集合。另外,可选地其中在所述512比特结果封包数据的所述邻接256比特通路中的所述邻接32比特单精度浮点数据元素的所述不同非重叠集合将通过所述较低有效256比特通路的所述至少一个最高有效32比特数据元素位置而彼此被分隔。
示例7包含示例1到5任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含32比特单精度浮点数据元素的所述源封包数据,并且所述指令将指示至少256比特目的地封包数据寄存器。另外,可选地其中所述执行单元响应所述指令,将存储所述结果封包数据,所述结果封包数据将是至少256比特结果封包数据,并且所述结果封包数据将具有至少两个128比特通路。另外,可选地其中所述至少两个128比特通路中的每个将存储与所述相应128比特通路的所述最低有效端对齐的所述邻接32比特单精度浮点数据元素的所述对应不同非重叠集合。另外,可选地其中在所述至少256比特结果封包数据的所述邻接128比特通路中所述邻接32比特单精度浮点数据元素的所述不同非重叠集合将通过所述较低有效128比特通路的所述至少一个最高有效32比特数据元素位置而彼此被分隔。
示例8包含示例1到5任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含32比特数据元素的所述源封包数据。
示例9包含示例1到5任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含64比特数据元素的所述源封包数据。
示例10包含示例1到5任一项所述的处理器,其中所述执行单元响应所述指令,将存储所述结果封包数据,在所述结果封包数据中每个所述通路是128比特通路。
示例11包含示例1到5任一项所述的处理器,其中所述执行单元响应所述指令,将存储所述结果封包数据,在所述结果封包数据中每个所述通路是256比特通路。
示例12包含示例1到11任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将具有指示所述结果封包数据的所述通路的大小的字段。
示例13包含示例1到11任一项所述的处理器,其中将对所述指令是隐式的是将所述指示数量的邻接数据元素的每个不同非重叠集合与所述相应通路的所述最低有效端对齐。
示例14是一种由处理器执行的方法,所述方法包括:在所述处理器处接收指令,所述指令指示包含多个邻接数据元素的源封包数据。所述指令指示数据元素的数量,以及所述指令指示目的地存储位置所述方法还包含:响应所述指令,在所述目的地存储位置中存储结果封包数据。所述结果封包数据具有多个通路。所述结果封包数据的每个所述通路存储与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合。所述结果封包数据的邻接通路中的所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过所述较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。
示例15包含示例14所述的方法,其中接收包括接收具有指示所述数据元素的所述数量的立即数的所述指令。另外,可选地其中存储包括存储具有是128比特通路和256比特通路之一的所述多个通路的所述结果封包数据。
示例16包含示例14到15任一项所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含多个元素结构的第一阵列和多个元素结构的第二阵列。另外,可选地其中存储包括存储所述结果封包数据,在所述结果封包数据中所述多个元素结构的所述第一阵列被存储在所述结果封包数据的最低有效通路中,并且所述多个元素结构的所述第二阵列被存储在所述结果封包数据的邻接较高有效通路中,其中所述最低有效通路的所述至少一个最高有效数据元素位置分隔所述多个元素结构的所述第一阵列和所述多个元素结构的所述第二阵列。
示例17包含示例14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含实复数与虚复数的邻接对的第一阵列和实复数与虚复数的邻接对的第二阵列。另外,可选地其中存储包括存储所述结果封包数据,在所述结果封包数据中所述实复数与所述虚复数的所述邻接对的所述第一阵列被存储在所述结果封包数据的最低有效通路中,并且所述实复数与所述虚复数的所述邻接对的所述第二阵列被存储在所述结果封包数据的邻接较高有效通路中,其中所述最低有效通路的至少两个最高有效数据元素位置分隔所述实复数与所述虚复数的所述邻接对的所述第一和第二阵列。
示例18包含示例14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含32比特实复数与32比特虚复数的三个邻接对的第一阵列和32比特实复数与32比特虚复数的三个邻接对的第二阵列。另外,可选地其中存储包括存储至少512比特结果封包数据,在所述结果封包数据中所述32比特实复数与所述32比特虚复数的所述三个邻接对的所述第一阵列被存储在所述至少512比特结果封包数据的最低有效256比特通路中,并且所述32比特实复数与所述32比特虚复数的所述三个邻接对的所述第二阵列被存储在所述至少512比特结果封包数据的邻接较高有效256比特通路中,其中所述最低有效256比特通路的至少两个最高有效32比特数据元素位置分隔所述32比特实复数与所述32比特虚复数的所述三个邻接对的所述第一和第二阵列。
示例19包含示例14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含32比特实复数与32比特虚复数的第一邻接对和32比特实复数与32比特虚复数的第二邻接对。另外,可选地其中存储包括存储至少256比特结果封包数据,在所述结果封包数据中所述32比特实复数与所述32比特虚复数的所述第一邻接对被存储在所述至少256比特结果封包数据的最低有效128比特通路中,并且所述32比特实复数与所述32比特虚复数的所述第二邻接对被存储在所述至少256比特结果封包数据的邻接较高有效128比特通路中,其中所述最低有效128比特通路的至少两个最高有效32比特数据元素位置分隔所述32比特实复数与所述32比特虚复数的所述第一和第二邻接对。
示例20包含示例14到19任一项所述的方法,其中接收包括接收指示在系统存储器中的所述源封包数据的所述指令。另外,进一步可选地包括通过单个加载操作,从所述系统存储器加载所述数据元素的所述不同非重叠集合中的至少每个。
示例21包含示例14到19任一项所述的方法,其中存储包括存储所述结果,在所述结果中所述指示数量的所述邻接数据元素的每个不同非重叠集合与所述相应通路的所述最低有效端对齐对所述指令是隐式的。
示例22是一种处理指令的计算机系统,包括: 互连;与所述互连耦合的处理器。所述处理器接收指令,所述指令将指示将包含多个邻接数据元素的源封包数据,所述指令指示数据元素的数量,并且所述指令指示目的地封包数据寄存器。所述处理器响应所述指令,在所述目的地封包数据寄存器中存储结果封包数据,所述结果封包数据具有多个通路。所述结果封包数据的每个所述通路存储与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合。所述结果封包数据的邻接通路中的所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过所述较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。所述计算机系统还包含:与所述互连耦合的动态随机存取存储器(DRAM)。所述DRAM存储算法的指令集。所述算法的所述指令集将预计所述指示数量的所述邻接数据元素的所述不同非重叠集合与所述相应通路的所述最低有效端对齐。
示例23包含示例22任一项所述的计算机系统,其中所述处理器将存储所述结果封包数据,在所述结果封包数据中所述通路是128比特通路和256比特通路之一。
示例24是一种包括非暂态机器可读存储介质的制品。所述非暂态机器可读存储介质存储指令。所述指令指示将包含多个邻接数据元素的源封包数据,所述指令指示数据元素的数量,并且所述指令指示目的地封包数据寄存器。所述指令如果由机器执行,将促使所述机器执行操作,所述操作包括:在所述目的地封包数据寄存器中存储结果封包数据。所述结果封包数据具有多个通路。所述结果封包数据的每个所述通路存储将与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合。所述结果封包数据的邻接通路中所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过所述较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。
示例25包含示例24所述的制品,其中所述指令将具有指示所述数据元素的所述数量的立即数。另外,可选地其中所述通路将是128比特通路和256比特通路之一。另外,可选地其中将对所述指令是隐式的是将所述指示数量的邻接数据元素的每个不同非重叠集合与所述相应通路的所述最低有效端对齐。
示例26包括示例1到13的任一示例的处理器,进一步包括预测分支的可选分支预测单元和与该分支预测单元耦合的可选指令预获取单元,该指令预获取单元预获取包括该指令的指令。处理器可以也可选地包括与该指令预获取单元耦合的可选1级(L1)指令高速缓存(L1指令高速缓存存储指令)、存储数据的可选L1数据高速缓存和存储数据与指令的可选2级(L2)高速缓存。处理器可以也可选地包括与解码单元、L1指令高速缓存和L2高速缓存耦合的指令获取单元,以在一些情况下从L1指令高速缓存和L2高速缓存之一中获取指令,并且提供该指令到解码单元。处理器可以也可选地包括重命名寄存器的寄存器重命名单元、调度已从该指令解码以便执行的一个或多个操作的可选调度器和提交该指令的执行结果的可选提交单元。
示例27包括芯片上系统,其包括至少一个互连、与该至少一个互连耦合的示例1到13任一示例的处理器、与该至少一个互连耦合的可选图形处理单元(GPU)、与该至少一个互连耦合的可选数字信号处理器(DSP)、与该至少一个互连耦合的可选显示控制器、与该至少一个互连耦合的可选存储器控制器、与该至少一个互连耦合的可选无线调制解调器、与该至少一个互连耦合的可选图像信号处理器、与该至少一个互连耦合的可选通用串行总线(USB)3.0可兼容控制器、与该至少一个互连耦合的可选蓝牙4.1可兼容控制器及与该至少一个互连耦合的可选无线收发器控制器。
示例28是处理器或其它设备,其操作以执行示例14到21的任一示例的方法。
示例29是处理器或其它设备,其包括用于执行示例14到21的任一示例的方法的部件。
示例30是处理器或其它设备,其包括操作以执行示例14到21的任一示例的方法的模块和/或单元和/或逻辑和/或电路系统和/或部件的任何组合。
示例31是可选非暂态和/或有形机器可读介质,其可选地存储或以其它方式提供包括第一指令的指令,第一指令如果由处理器、计算机系统、电子装置或其它机器执行和/或在由它们执行时,操作以促使机器执行示例14到21的任一示例的方法。
示例32是基本上如本文中所描述的处理器或其它设备。
示例33是操作以执行基本上如本文中所描述的任何方法的处理器或其它设备。
示例34是操作以执行基本上如本文中所描述的任何划分为通路指令的处理器或其它设备。
示例35是包括具有操作以解码第一指令集的指令的解码单元的处理器的计算机系统或其它电子装置。处理器也具有一个或多个执行单元。电子装置也包括与处理器耦合的存储装置。存储装置操作以存储第一指令,其可以是基本上如本文中所公开的任何指令,并且其将属于第二不同指令集。存储装置也操作以存储指令,以便将第一指令转换为第一指令集的一个或多个指令。第一指令集的该一个或多个指令在由处理器执行时,操作以促使处理器存储将由第一指令存储的结果(例如,存储如本文中其它地方所描述的指令的任何结果)。

Claims (25)

1.一种处理器,包括:
多个封包数据寄存器;
解码指令的解码单元,所述指令指示将包含多个邻接数据元素的源封包数据,所述指令指示数据元素的数量,以及所述指令指示目的地存储位置;以及
与所述多个封包数据寄存器耦合并且与所述解码单元耦合的执行单元,所述执行单元响应所述指令,在所述目的地存储位置中存储结果封包数据,所述结果封包数据具有多个通路,所述结果封包数据的每个所述通路存储与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合,所述结果封包数据的邻接通路中的所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。
2.根据权利要求1所述的处理器,其中所述解码单元将解码所述指令,所述指令将具有指示所述数据元素的所述数量的立即数。
3.根据权利要求1所述的处理器,其中所述解码单元将解码所述指令,所述指令将通过每个将包含相同数量的数据元素的结构的数量的指示来指示数据元素的所述数量。
4.根据权利要求1所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示在系统存储器中的所述源封包数据,并且其中所述执行单元响应所述指令,将通过单个加载操作,从所述系统存储器加载所述数据元素的所述不同非重叠集合中的至少每个。
5.根据权利要求4所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含多个掩码元素的掩码,并且其中所述执行单元响应所述指令,将从所述系统存储器仅加载对应于所述掩码的未遮蔽掩码元素的所述源封包数据的数据元素。
6.根据权利要求1至5中任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含32比特单精度浮点数据元素的所述源封包数据,并且所述指令将指示512比特目的地封包数据寄存器,并且其中所述执行单元响应所述指令,将存储所述结果封包数据,所述结果封包数据将会是512比特结果封包数据,并且所述结果封包数据将具有两个256比特通路,其中所述256比特通路中的每个将存储与所述相应256比特通路的所述最低有效端对齐的所述邻接32比特单精度浮点数据元素的所述对应不同非重叠集合,其中在所述512比特结果封包数据的所述邻接256比特通路中的所述邻接32比特单精度浮点数据元素的所述不同非重叠集合将通过所述较低有效256比特通路的所述至少一个最高有效32比特数据元素位置而彼此被分隔。
7.根据权利要求1至5中任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含32比特单精度浮点数据元素的所述源封包数据,并且所述指令将指示至少256比特目的地封包数据寄存器,并且其中所述执行单元响应所述指令,将存储所述结果封包数据,所述结果封包数据将是至少256比特结果封包数据,并且所述结果封包数据将具有至少两个128比特通路,其中所述至少两个128比特通路中的每个将存储与所述相应128比特通路的所述最低有效端对齐的所述邻接32比特单精度浮点数据元素的所述对应不同非重叠集合,其中在所述至少256比特结果封包数据的所述邻接128比特通路中所述邻接32比特单精度浮点数据元素的所述不同非重叠集合将通过所述较低有效128比特通路的所述至少一个最高有效32比特数据元素位置而彼此被分隔。
8.根据权利要求1至5中任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含32比特数据元素的所述源封包数据。
9.根据权利要求1至5中任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将指示将包含64比特数据元素的所述源封包数据。
10.根据权利要求1至5中任一项所述的处理器,其中所述执行单元响应所述指令,将存储所述结果封包数据,在所述结果封包数据中每个所述通路是128比特通路。
11.根据权利要求1至5中任一项所述的处理器,其中所述执行单元响应所述指令,将存储所述结果封包数据,在所述结果封包数据中每个所述通路是256比特通路。
12.根据权利要求1至5中任一项所述的处理器,其中所述解码单元将解码所述指令,所述指令将具有指示所述结果封包数据的所述通路的大小的字段。
13.根据权利要求1至5中任一项所述的处理器,其中将对所述指令是隐式的是将所述指示数量的邻接数据元素的每个不同非重叠集合与所述相应通路的所述最低有效端对齐。
14.一种由处理器执行的方法,所述方法包括:
在所述处理器处接收指令,所述指令指示包含多个邻接数据元素的源封包数据,所述指令指示数据元素的数量,以及所述指令指示目的地存储位置;以及
响应所述指令,在所述目的地存储位置中存储结果封包数据,所述结果封包数据具有多个通路,所述结果封包数据的每个所述通路存储与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合,所述结果封包数据的邻接通路中的所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过所述较低有效通路的至少一个最高有效数据元素位置而彼此被分隔。
15.根据权利要求14所述的方法,其中接收包括接收具有指示所述数据元素的所述数量的立即数的所述指令,并且其中存储包括存储具有是128比特通路和256比特通路之一的所述多个通路的所述结果封包数据。
16.根据权利要求14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含多个元素结构的第一阵列和多个元素结构的第二阵列,并且其中存储包括存储所述结果封包数据,在所述结果封包数据中所述多个元素结构的所述第一阵列被存储在所述结果封包数据的最低有效通路中,并且所述多个元素结构的所述第二阵列被存储在所述结果封包数据的邻接较高有效通路中,其中所述最低有效通路的所述至少一个最高有效数据元素位置分隔所述多个元素结构的所述第一阵列和所述多个元素结构的所述第二阵列。
17.根据权利要求14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含实复数与虚复数的邻接对的第一阵列和实复数与虚复数的邻接对的第二阵列,并且其中存储包括存储所述结果封包数据,在所述结果封包数据中所述实复数与所述虚复数的所述邻接对的所述第一阵列被存储在所述结果封包数据的最低有效通路中,并且所述实复数与所述虚复数的所述邻接对的所述第二阵列被存储在所述结果封包数据的邻接较高有效通路中,其中所述最低有效通路的至少两个最高有效数据元素位置分隔所述实复数与所述虚复数的所述邻接对的所述第一和第二阵列。
18.根据权利要求14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含32比特实复数与32比特虚复数的三个邻接对的第一阵列和32比特实复数与32比特虚复数的三个邻接对的第二阵列,并且其中存储包括存储至少512比特结果封包数据,在所述结果封包数据中所述32比特实复数与所述32比特虚复数的所述三个邻接对的所述第一阵列被存储在所述至少512比特结果封包数据的最低有效256比特通路中,并且所述32比特实复数与所述32比特虚复数的所述三个邻接对的所述第二阵列被存储在所述至少512比特结果封包数据的邻接较高有效256比特通路中,其中所述最低有效256比特通路的至少两个最高有效32比特数据元素位置分隔所述32比特实复数与所述32比特虚复数的所述三个邻接对的所述第一和第二阵列。
19.根据权利要求14所述的方法,其中接收包括接收指示所述源封包数据的所述指令,所述源封包数据包含32比特实复数与32比特虚复数的第一邻接对和32比特实复数与32比特虚复数的第二邻接对,并且其中存储包括存储至少256比特结果封包数据,在所述结果封包数据中所述32比特实复数与所述32比特虚复数的所述第一邻接对被存储在所述至少256比特结果封包数据的最低有效128比特通路中,并且所述32比特实复数与所述32比特虚复数的所述第二邻接对被存储在所述至少256比特结果封包数据的邻接较高有效128比特通路中,其中所述最低有效128比特通路的至少两个最高有效32比特数据元素位置分隔所述32比特实复数与所述32比特虚复数的所述第一和第二邻接对。
20.根据权利要求14至19中任一项所述的方法,其中接收包括接收指示在系统存储器中的所述源封包数据的所述指令,并且进一步包括通过单个加载操作,从所述系统存储器加载所述数据元素的所述不同非重叠集合中的至少每个。
21.根据权利要求14至19中任一项所述的方法,其中存储包括存储所述结果,在所述结果中所述指示数量的所述邻接数据元素的每个不同非重叠集合与所述相应通路的所述最低有效端对齐对所述指令是隐式的。
22.一种处理指令的计算机系统,包括:
互连;
与所述互连耦合的处理器,所述处理器接收指令,所述指令将指示将包含多个邻接数据元素的源封包数据,所述指令指示数据元素的数量,并且所述指令指示目的地封包数据寄存器,所述处理器响应所述指令,在所述目的地封包数据寄存器中存储结果封包数据,所述结果封包数据具有多个通路,所述结果封包数据的每个所述通路存储与所述相应通路的最低有效端对齐的所述源封包数据的所述指示数量的邻接数据元素的不同非重叠集合,所述结果封包数据的邻接通路中的所述指示数量的所述邻接数据元素的所述不同非重叠集合将通过所述较低有效通路的至少一个最高有效数据元素位置而彼此被分隔;以及
与所述互连耦合的动态随机存取存储器(DRAM),所述DRAM存储算法的指令集,所述算法的所述指令集将预计所述指示数量的所述邻接数据元素的所述不同非重叠集合与所述相应通路的所述最低有效端对齐。
23.根据权利要求22所述的计算机系统,其中所述处理器将存储所述结果封包数据,在所述结果封包数据中所述通路是128比特通路和256比特通路之一。
24.一种设备,包括用于执行权利要求14至19中任一项所述的方法的部件。
25.一种提供指令的机器可读介质,所述指令如果由机器执行则操作以促使所述机器执行权利要求14至19中任一项所述的方法。
CN201780014453.1A 2016-03-31 2017-03-01 将源封包数据划分为通路的处理器、方法、系统和指令 Active CN109196467B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/087231 2016-03-31
US15/087,231 US11204764B2 (en) 2016-03-31 2016-03-31 Processors, methods, systems, and instructions to Partition a source packed data into lanes
PCT/US2017/020198 WO2017172212A1 (en) 2016-03-31 2017-03-01 Processors, methods, systems, and instructions to partition a source packed data into lanes

Publications (2)

Publication Number Publication Date
CN109196467A true CN109196467A (zh) 2019-01-11
CN109196467B CN109196467B (zh) 2024-01-02

Family

ID=59961528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780014453.1A Active CN109196467B (zh) 2016-03-31 2017-03-01 将源封包数据划分为通路的处理器、方法、系统和指令

Country Status (5)

Country Link
US (1) US11204764B2 (zh)
CN (1) CN109196467B (zh)
DE (1) DE112017001709T5 (zh)
TW (1) TWI747881B (zh)
WO (1) WO2017172212A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409601B2 (en) * 2017-12-29 2019-09-10 Intel Corporation Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline
US11789734B2 (en) * 2018-08-30 2023-10-17 Advanced Micro Devices, Inc. Padded vectorization with compile time known masks
US11397624B2 (en) * 2019-01-22 2022-07-26 Arm Limited Execution of cross-lane operations in data processing systems
US11442729B2 (en) * 2020-10-26 2022-09-13 Google Llc Bit-packed array processing using SIMD
US11328209B1 (en) 2021-06-02 2022-05-10 SambaNova Systems, Inc. Dual cycle tensor dropout in a neural network
US11256987B1 (en) 2021-06-02 2022-02-22 SambaNova Systems, Inc. Memory efficient dropout, with reordering of dropout mask elements

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707922A (zh) * 1995-08-31 2012-10-03 英特尔公司 控制移位分组数据的位校正的装置
US20130124835A1 (en) * 1994-12-02 2013-05-16 Alexander Peleg Method and Apparatus for Packing Packed Data
WO2013101234A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Unique packed data element identification processors, methods, systems, and instructions
CN104077107A (zh) * 2013-03-30 2014-10-01 英特尔公司 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
US20150186141A1 (en) * 2013-12-29 2015-07-02 Intel Corporation Versatile packed data comparison processors, methods, systems, and instructions
CN104951401A (zh) * 2014-03-28 2015-09-30 英特尔公司 排序加速处理器、方法、系统和指令

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141005A (en) * 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
US6275834B1 (en) 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
WO1998006042A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Wide instruction unpack method and apparatus
WO2001031475A1 (en) * 1999-10-26 2001-05-03 Arthur D. Little, Inc. Dual aspect ratio pe array with no connection switching
US6453405B1 (en) * 2000-02-18 2002-09-17 Texas Instruments Incorporated Microprocessor with non-aligned circular addressing
US7725521B2 (en) * 2001-10-29 2010-05-25 Intel Corporation Method and apparatus for computing matrix transformations
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
US7529918B2 (en) * 2006-07-21 2009-05-05 Broadcom Corporation System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US9378182B2 (en) * 2012-09-28 2016-06-28 Intel Corporation Vector move instruction controlled by read and write masks
US9697006B2 (en) 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9501276B2 (en) 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9323524B2 (en) * 2013-09-16 2016-04-26 Oracle International Corporation Shift instruction with per-element shift counts and full-width sources
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130124835A1 (en) * 1994-12-02 2013-05-16 Alexander Peleg Method and Apparatus for Packing Packed Data
CN102707922A (zh) * 1995-08-31 2012-10-03 英特尔公司 控制移位分组数据的位校正的装置
WO2013101234A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Unique packed data element identification processors, methods, systems, and instructions
CN104077107A (zh) * 2013-03-30 2014-10-01 英特尔公司 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
US20150186141A1 (en) * 2013-12-29 2015-07-02 Intel Corporation Versatile packed data comparison processors, methods, systems, and instructions
CN104951401A (zh) * 2014-03-28 2015-09-30 英特尔公司 排序加速处理器、方法、系统和指令
US20150277912A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Sort acceleration processors, methods, systems, and instructions

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
DEREK PAO等: ""Efficient packet classification using TCAMs"", 《COMPUTER NETWORKS》 *
DEREK PAO等: ""Efficient packet classification using TCAMs"", 《COMPUTER NETWORKS》, vol. 50, no. 18, 31 December 2006 (2006-12-31), pages 3523 - 3535 *
FREESCALE SEMICONDUCTOR: ""AltiVec Technology Programming Interface Manual"", 《无》 *
FREESCALE SEMICONDUCTOR: ""AltiVec Technology Programming Interface Manual"", 《无》, 30 June 1999 (1999-06-30), pages 176 - 177 *
基于WINDOWS平台的底层网络数据包捕获技术: ""基于Windows平台的底层网络数据包捕获技术"", 《计算机工程与设计》 *
基于WINDOWS平台的底层网络数据包捕获技术: ""基于Windows平台的底层网络数据包捕获技术"", 《计算机工程与设计》, vol. 26, no. 11, 30 November 2005 (2005-11-30), pages 3037 - 3038 *

Also Published As

Publication number Publication date
CN109196467B (zh) 2024-01-02
US11204764B2 (en) 2021-12-21
TWI747881B (zh) 2021-12-01
WO2017172212A1 (en) 2017-10-05
TW201741868A (zh) 2017-12-01
US20170286109A1 (en) 2017-10-05
DE112017001709T5 (de) 2018-12-20

Similar Documents

Publication Publication Date Title
CN104951401B (zh) 排序加速处理器、方法、系统和指令
CN109614076A (zh) 浮点到定点转换
CN105278917B (zh) 无局部性提示的向量存储器访问处理器、方法、设备、制品和电子设备
CN104781803B (zh) 用于架构不同核的线程迁移支持
CN104049943B (zh) 有限范围向量存储器访问指令、处理器、方法和系统
CN104094218B (zh) 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法
CN104137055B (zh) 点积处理器、方法、系统和指令
CN104137060B (zh) 高速缓存协处理单元
CN104115114B (zh) 经改进的提取指令的装置和方法
CN104040489B (zh) 多寄存器收集指令
CN104049954B (zh) 多数据元素与多数据元素比较处理器、方法、系统和指令
CN109791488A (zh) 用于执行用于复数的融合乘-加指令的系统和方法
CN104137059B (zh) 多寄存器分散指令
CN104011673B (zh) 向量频率压缩指令
CN104011652B (zh) 打包选择处理器、方法、系统和指令
CN104025024B (zh) 打包数据操作掩码移位处理器、方法及系统
CN109196467A (zh) 将源封包数据划分为通路的处理器、方法、系统和指令
CN107003844A (zh) 用于矢量广播和xorand逻辑指令的装置和方法
CN108292224A (zh) 用于聚合收集和跨步的系统、设备和方法
CN110321157A (zh) 用于具有可变精度输入操作数的融合乘-加操作的指令
CN106030514A (zh) 采用到被屏蔽结果元素的传播将源元素存储到对应未屏蔽结果元素的处理器、方法、系统和指令
CN108268244A (zh) 用于算术递归的系统、装置和方法
CN109643234A (zh) 用于合并数据元素并生成索引更新的处理器、方法、系统和指令
CN109313553A (zh) 用于跨步加载的系统、装置和方法
CN108780394A (zh) 用于转换编码格式的硬件装置和方法

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