CN104077107A - 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 - Google Patents

利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 Download PDF

Info

Publication number
CN104077107A
CN104077107A CN201410122763.3A CN201410122763A CN104077107A CN 104077107 A CN104077107 A CN 104077107A CN 201410122763 A CN201410122763 A CN 201410122763A CN 104077107 A CN104077107 A CN 104077107A
Authority
CN
China
Prior art keywords
packing data
mask
data
instruction
operand
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
CN201410122763.3A
Other languages
English (en)
Other versions
CN104077107B (zh
Inventor
E·T·格罗科斯基
S·Y·索托德
B·M·盖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201711135874.8A priority Critical patent/CN107918546B/zh
Publication of CN104077107A publication Critical patent/CN104077107A/zh
Application granted granted Critical
Publication of CN104077107B publication Critical patent/CN104077107B/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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders

Abstract

公开利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统。一种方法包括接收打包数据指令,该指令指示第一较窄的源打包数据操作数和较窄的目的地操作数。将该指令映射到经掩码的打包数据操作,该经掩码的打包数据操作指示比第一较窄的源操作数宽且包括第一较窄的源操作数的第一较宽的源打包数据操作数,且指示比较窄的目的地操作数宽且包括较窄的目的地操作数的较宽的目的地操作数。生成打包数据操作掩码,其包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素。与由经掩码的操作存储的、本来不会由打包数据指令存储的结果数据元素对应的所有掩码元素将被掩码掉。利用打包数据操作掩码执行经掩码的操作。将打包数据结果存储在较宽的目的地操作数中。

Description

利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
技术领域
本文所述的各实施例一般涉及处理器。特别地,本文所述的各实施例一般涉及访问处理器中的寄存器。
背景技术
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,打包数据指令、向量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理器可具有并行执行硬件,该并行执行硬件响应于打包数据指令来同时或并行地执行多个操作。
多个数据元素可在一个寄存器或存储器位置内被打包为打包数据。在打包数据中,寄存器或者其他存储位置的位可逻辑地分成数据元素序列。例如,128位宽的打包数据寄存器可具有两个64位宽的数据元素、四个32位数据元素、八个16位数据元素等。
在一些处理器架构中,多年来指令所使用的打包数据操作数的宽度已经增加。这种增加的打包数据宽度一般使得能够并发或并行处理更多的数据元素,这有助于改进性能。即使存在利用较宽的打包数据操作数的指令,但一般仍期望支持利用较窄打包数据操作数的旧指令,以例如提供向后兼容性。此外,通常用于存储较窄打包数据操作数的较窄寄存器可重叠(aliase)在用于存储较宽或扩展打包数据操作数的较宽寄存器上。
附图说明
通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1是处理器的实施例的框图。
图2是一组合适的打包数据寄存器的第一实施例的框图。
图3A是在一些处理器中现有的一组寄存器的框图。
图3B是一组合适的打包数据寄存器的第二实施例的框图。
图4是指令处理装置的实施例的框图。
图5是在处理器中的方法的实施例的流程框图。
图6是示出部分寄存器访问操作的框图,可响应于部分寄存器访问指令在重叠在较宽操作数上的较窄操作数上执行该部分寄存器访问操作。
图7是可响应于指示较窄操作数的部分寄存器访问打包数据指令在较宽操作数上执行的经掩码的全寄存器访问打包数据操作的示例实施例的框图。
图8是示出部分寄存器访问操作的框图,可响应于部分寄存器访问指令,在重叠在较宽操作数上的较窄操作数上执行该部分寄存器访问操作。
图9是可响应于指示较窄操作数的部分寄存器访问打包数据指令在较宽操作数上执行的经掩码的全寄存器访问打包数据操作的示例实施例的框图。
图10是示出部分寄存器访问操作的框图,可响应于部分寄存器访问指令,在重叠在较宽操作数上的较窄操作数的非对应数据元素上执行该部分寄存器访问操作。
图11是经掩码的全寄存器访问打包数据操作的示例实施例的框图,可在较宽操作数的对应数据元素上执行该经掩码的全寄存器访问打包数据操作,可响应于指示较窄操作数的非对应数据元素上的操作的部分寄存器访问打包数据指令执行该经掩码的全寄存器访问打包数据操作。
图12是示出打包数据操作掩码位的数目依赖于打包数据宽度和打包数据元素宽度的表格。
图13是一组合适的打包数据操作掩码寄存器的示例实施例的框图。
图14是示出用作打包数据操作掩码和/或用于进行掩码的位数可依赖于打包数据宽度和数据元素宽度的示图。
图15A是示出根据本发明实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。
图15B是示出根据本发明实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。
图16A是根据本发明实施例的单处理器核连同其到管芯上互连网络的连接以及其2级(L2)高速缓存的本地子集的框图。
图16B是根据本发明实施例的图16A中的处理器核的一部分的展开图。
图17是根据本发明实施例可具有一个以上的核、可具有集成存储器控制器以及可具有集成图形器件的处理器的框图。
图18所示为根据本发明的一个实施例的系统的框图。
图19所示为根据本发明的一实施例的第一更具体示例性系统的框图。
图20所示为根据本发明的一实施例的第二更具体示例性系统的框图。
图21所示为根据本发明的一实施例的SoC的框图。
图22是根据本发明实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文所公开的是部分寄存器访问方法、处理器和系统。在以下描述中,阐述了大量具体细节(例如,专用存储器、指令、掩码、用于执行部分寄存器访问的方法、逻辑实现、处理器架构、微架构细节、操作顺序、逻辑划分/集成细节、系统组件的类型和相互关系等)。然而,应当理解,本发明的各实施例可以在不具有这些具体细节的情况下得到实施。在其他实例中,公知的电路、结构和技术未被详细示出以免混淆对本描述的理解。
图1是处理器100的实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,在各种类型的计算机系统中用作中央处理单元的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。该处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。
处理器具有指令集102。指令集的指令表示被提供给处理器以供执行的宏指令、汇编语言指令或机器级指令。指令集包括一个或多个部分寄存器访问打包数据指令103。在一些实施例中,部分寄存器访问打包数据指令可表示访问一个或多个源和/或目的地操作数的指令,这些源和/或目的地操作数仅表示寄存器的一部分而不是寄存器的全部宽度。作为一个示例,部分寄存器访问打包数据指令可表示访问存储在512位寄存器中的128位源和目的地操作数的指令。指令集还任选地包括一个或多个经掩码打包数据指令104。任选地,经掩码打包数据指令包括一个或多个经掩码全寄存器访问指令104B。在一些实施例中,经掩码的全寄存器访问指令可表示访问表示或占据寄存器的全部宽度的一个或多个源和/或目的地操作数的指令。作为一个示例,经掩码的全寄存器访问指令可表示访问存储在512位寄存器中的512位源和目的地操作数的指令。
处理器包括架构级可见的寄存器(例如,架构寄存器文件)105。架构寄存器此处也可以被简称为寄存器。除非另外指定或显而易见,短语架构寄存器、寄存器文件以及寄存器在本文中用于表示对软件和/或编程器和/或由宏指令指定来标识操作数的寄存器而言可见的寄存器。这些寄存器与给定微架构中的其他非架构的或非架构级可见的寄存器(例如,指令所使用的临时寄存器,重新排序缓冲器,引退寄存器等等)相反。寄存器一般表示管芯上处理器存储器位置。所示的寄存器包括标量通用寄存器106、打包数据寄存器107和任选的打包数据操作掩码寄存器108。
处理器还包括执行逻辑109(例如,一个或多个执行单元)。执行逻辑可操作用于执行或处理指令集的指令。例如,执行逻辑可操作用于执行或处理部分寄存器访问打包数据指令103和经掩码的全寄存器访问打包数据指令104B。
图2是一组合适的打包数据寄存器207的第一实施例的框图。所示的打包数据寄存器包括三十二个512位宽的打包或向量寄存器。这些三十二个512位寄存器被标记为ZMM0至ZMM31。这些512位寄存器的较低十六个是ZMM0至ZMM15。如所示,在一些实施例中,ZMM0-ZMM15寄存器的较低阶256位被重叠或者覆盖在相应256位打包或向量寄存器YMM0-YMM15上,但是这不是必需的。同样,在一些实施例中,YMM0-YMM15寄存器的较低阶128位被重叠或者覆盖在相应128位打包或向量寄存器XMM0-XMM1上,但是这也不是必需的。
512位寄存器ZMM0至ZMM31各自可操作用于保持512位打包数据、256位打包数据或者128位打包数据。256位寄存器YMM0-YMM15各自可操作用于保持256位打包数据或者128位打包数据。128位寄存器XMM0-XMM1各自可操作用于保持128位打包数据。支持不同数据元素大小,包括至少8位字节数据、16位字数据、32位双字数据、32位单精度浮点数据、64位四倍字数据和64位双精度浮点数据。打包数据寄存器的替换实施例可包括不同数量的寄存器、不同大小的寄存器,并且可以或者可以不将较大寄存器重叠在较小寄存器上。
历史上,处理器最初仅包括XMM寄存器。指令集中的指令在XMM寄存器上操作。后来,YMM寄存器被添加,以增加打包或向量宽度以允许更多的数据元素被并发或并行处理。将新指令添加到指令集以在这些较宽的YMM寄存器上操作。最近,ZMM寄存器被添加,以进一步增加打包或向量宽度以允许更多的数据元素被并发或并行处理。将附加的新指令添加到指令集以在这些更宽的ZMM寄存器上操作。即使这些较新的指令和较宽的打包数据宽度是可用的,但一般仍期望提供向后兼容性且仍支持较旧的指令。例如,一般期望处理器继续支持在XMM和YMM寄存器上操作的较旧指令。然而,因为XMM和YMM寄存器重叠或覆盖在较宽的ZMM寄存器上,这些寄存器的使用通常涉及对存储在较宽的512位寄存器中的较窄XMM和/或YMM操作数的部分寄存器访问。
图3A是在一些处理器中现有的一组架构寄存器310的框图。所示的寄存器包括四个64位打包数据寄存器P0-P3,但可任选地包括更多。在示图中,这四个64位打包数据寄存器还可在逻辑上视为两个128位打包数据寄存器Q0-Q1的一分为二。128位寄存器Q0的较低阶64位(即,位63:0)对应于64位寄存器P0,而128位寄存器Q0的较高阶64位(即,位127:64)对应于64位寄存器P1。类似地,128位寄存器Q1的较低阶64位(即,位63:0)对应于64位寄存器P2,而128位寄存器Q1的较高阶64位(即,位127:64)对应于64位寄存器P3。
取代利用如图2的方法所示的重叠来增加打包数据寄存器的宽度,用于这些现有的寄存器的方法在逻辑上将相邻一对较窄的64位P0-P3寄存器组合起来以形成较宽的128位Q0-Q1寄存器。然而,这种逻辑组合多个较窄的打包数据寄存器以形成单个较宽的打包数据寄存器的方法的一个可能的缺点是较宽的打包数据寄存器的数量减少。128位寄存器的数量仅是64位寄存器的一半。此外,当考虑比128位更宽的打包数据宽度时,该问题可能会加剧,因为这可能会涉及在逻辑上组合三个或更多个较窄的寄存器以形成单个较宽的寄存器。例如,可能需要四个64位寄存器来形成每个256位寄存器。
图3B是一组合适的架构打包数据寄存器307的第二实施例的框图。在一个方面,寄存器307可表示图3A的现有寄存器310的加宽/扩展和兼容版本。寄存器307包括四个较宽的256位打包数据寄存器R0-R3。这四个较宽的256位打包数据寄存器R0-R3实现现有的寄存器P0-P3和Q0-Q1。如图所示,在一些实施例中,R0-R3寄存器的较低阶的64位覆盖相应的64位寄存器P0-P3,并且R0-R3寄存器的较低阶的128位覆盖相应的128位寄存器Q0-Q3,但这不是必须的。在各实施例中,可能存在任何期望数量的这种256位寄存器,诸如十六、三十二、六十四或一些其它数量的寄存器。在其它实施例中,取代256位寄存器、可使用512位寄存器、1024位寄存器或比256位宽或窄的其它宽度。可支持不同数据元素大小,包括例如8位字节、16位字、32位双字、32位单精度浮点、64位四倍字、64位双精度浮点或其各种组合。
因为现有/传统指令可能仍指定P0-P3和/或Q0-Q1寄存器,并且因为否决这些现有/传统指令可能要经历很多年或甚至几十年,所以重要的是提供向后兼容性并且允许也支持现有/传统指令。例如,重要的是仍允许现有/传统指令在P0-P3和/或Q0-Q1寄存器上操作。然而,如果P0-P3和/或Q0-Q1寄存器覆盖在较宽的寄存器上(例如,如图3B所示),则这种指令的执行可涉及部分寄存器访问,以从覆盖在较宽寄存器上的P0-P3和/或Q0-Q1寄存器读取数据和/或向其写入数据。
图4是指令处理装置400的实施例的框图。在一些实施例中,指令处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置可以是图1的处理器,或者可被包括在该处理器中。替换地,指令处理装置可被包括在类似或不同的处理器中。此外,图1的处理器可包括类似或不同的装置。
装置400包括架构寄存器405。寄存器中的每一个可表示可操作用于存储数据的管芯上存储位置。寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的电路。各种不同类型的寄存器是合适的。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及其组合。在一些实施例中,图2的打包数据寄存器207或图3的打包数据寄存器307可用于寄存器405。或者,可将其它寄存器用于寄存器405。
装置可接收部分寄存器访问指令403,该指令可指示一个或多个相对较窄的操作数。例如,可从指令提取单元、指令队列等接收该指令。在一些实施例中,部分寄存器访问指令可明确指定(例如,通过一个或多个字段或位集合)或以其它方式指示(例如,隐式指示)第一相对较窄的源操作数(例如,寄存器)422,并且可指定或以其它方式指示相对较窄的目的地操作数(例如,寄存器)424。在一些实施例中,第一较窄的源操作数422可以是第一较宽的源操作数423的一部分,和/或较窄的目的地操作数424可以是较宽的目的地操作数425的一部分。作为一个示例,第一较窄的源操作数422可以是第一128位XMM寄存器,第一较宽的源操作数423可以是第一512位ZMM寄存器,第一128位XMM寄存器覆盖在第一512位ZMM寄存器上,较窄的目的地操作数424可以是第二128位XMM寄存器,且较宽的目的地操作数425可以是第二512位ZMM寄存器,第二128位XMM寄存器覆盖在第二512位ZMM寄存器上。正如本文中所使用的,术语“较窄”和“较宽”是相对术语(即,不是绝对术语),它们是彼此相对的(例如,较窄的源操作数比较宽的源操作数窄,等等)。在其它实施例中,部分寄存器访问指令可指示少到单个相对较窄的寄存器。此外,在其它实施例中,一个或多个存储器位置可用于替换寄存器中的一个或多个,和/或目的地寄存器可与源寄存器相同。
装置400还包括解码逻辑420。解码逻辑也可以被称为解码单元或解码器。部分寄存器访问指令可表示机器代码指令、汇编语言指令、宏指令、或装置的指令集的指令和/或控制信号。解码器可解码、翻译、解释、变形或其它方式转换部分寄存器访问指令。例如,解码器可将相对较高级的部分寄存器访问指令解码成一个或多个对应的相对较低级的微指令、微操作、微代码入口点、或者反映、表示和/或源自较高级指令的其他相对较低级的指令或控制信号。该解码器可以使用各种不同的机制来实现,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域公知的用于实现解码器的其他机制。
在一些实施例中,解码逻辑420可包括逻辑421以将部分寄存器访问打包数据指令(指示第一较窄的源打包数据操作数422和较窄的目的地操作数424)映射到指示第一较宽的源打包数据操作数423和较宽的目的地操作数425的经掩码的全寄存器访问打包数据指令/操作。第一较宽的源打包数据操作数423比第一较窄的源打包数据操作数422宽且包括第一较窄的源打包数据操作数422(例如,较窄的操作数422可重叠在较宽的操作数423上)。较宽的目的地操作数425比较窄的目的地操作数424宽且包括较窄的目的地操作数424。在一些实施例中,部分寄存器访问指令和经掩码的全寄存器访问指令可具有相同或非常相似的算术、逻辑或其它操作(例如,二者可执行加法操作,二者可执行移位操作等)。在一些实施例中,经掩码的全寄存器访问指令可执行部分寄存器访问指令的所有操作加上可能被掩码掉的附加操作。术语“经掩码”指的是断言(predication)或条件执行,这将在下文中进一步讨论。有利地,在一些实施例中,全寄存器访问指令可执行全寄存器访问而不是部分寄存器访问。
再次参考图4,执行逻辑409与解码逻辑420和寄存器405耦合。作为示例,执行逻辑可包括执行单元、算法单元、算法逻辑单元、执行算法和逻辑操作的数字电路、功能单元、包括集成电路或硬件的单元等。执行单元和/或指令处理装置可包括可操作用于响应于部分寄存器访问指令403(例如,响应于由解码逻辑从部分寄存器访问指令403导出的一个或多个指令或控制信号)执行操作的专用或特定逻辑(例如与固件和/或软件潜在地组合的电路或其它硬件)。
在一些实施例中,执行单元可操作用于利用打包数据操作掩码408执行经掩码的全寄存器访问打包数据指令/操作。在一些实施例中,打包数据操作掩码可包括掩码元素,该掩码元素用于通过经掩码的全寄存器访问打包数据指令/操作存储的打包数据结果的每个对应结果数据元素。在一些实施例中,与由经掩码的全寄存器访问打包数据指令/操作存储的(本来不会由部分寄存器访问打包数据指令存储的)结果元素对应的所有掩码元素将被掩码掉。执行单元可将打包数据结果存储在较宽的目的地操作数425中。
在一些实施例中,部分寄存器访问指令可不指示打包数据操作掩码,但打包数据操作掩码408仍然可用于实现部分寄存器访问指令的执行。在其它实施例中,部分寄存器访问指令可指示打包数据操作掩码,但打包数据操作掩码408的位宽度宽于部分寄存器访问指令指示的打包数据操作掩码(例如,可具有均被故意掩码掉的附加掩码位)。
打包数据操作掩码可表示断言操作数或条件控制操作数。打包数据操作掩码在本文中还可被简单地称为掩码。每个掩码可断言、条件控制或掩码与指令相关联的操作是否要在源数据元素上执行和/或是否将操作的结果存储在打包数据结果中。每个掩码可各自包括多个掩码元素、断言元素或条件控制元素。
在一些实施例中,每个掩码可操作用于按结果数据元素粒度对操作进行掩码。在一个方面,可与结果数据元素的一对一对应地包括掩码元素(例如,可以有四个结果数据元素和四个对应的掩码元素)。每个不同的掩码元素可操作用于与其它元素分离或独立地掩码不同的对应打包数据操作、和/或掩码不同的对应结果数据元素的存储。例如,掩码元素可操作用于掩码是否在源打包数据的对应数据元素上(或在两个源打包数据的对应数据元素对上)执行打包数据操作,和/或是否将打包数据操作的结果存储在对应的结果数据元素中。
通常每个掩码元素可以是单个位。单个位可允许指定两种不同的可能性之一。作为一个示例,每个位可指定执行操作或不执行操作。作为另一个示例,每个位可指定存储操作结果或不存储操作结果。根据一个可能的协定,每个掩码位可具有第一值(例如,置位为二进制1)以允许将打包操作的结果存储在对应的结果数据元素中,或者可具有第二值(例如,被清除为二进制0)以防止将打包操作的结果存储在对应的结果数据元素中。相反协定也是可能的。
在一些实施例中,可任选地执行操作而不管对应的掩码位或元素,但该操作的对应结果依据对应的掩码位或元素的值而可以被存储或可以不被存储在结果打包数据中。或者,在其它实施例中,如果对应的掩码位或元素被掩码掉,则可任选地忽略(即,不执行)操作。在一些实施例中,可任选地对被掩码掉元素上的操作阻止异常或违规,或者被掩码掉元素上的操作可任选地不引起异常或违规。在一些实施例中,可任选地抑制或不引起与被掩码掉的数据元素对应的存储器故障。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置400。在其他实施例中,该装置可任选地包括在处理器中找到的其他公知组件。这些组件的示例包括但不限于,分支预测单元、指令提取单元、指令和数据的高速缓存、指令和数据的翻译后备缓冲器(translation lookaside buffer)、预取缓冲器、微指令队列、微指令定序器、寄存器重命名单元、指令调度单元、总线接口单元、第二或更高级高速缓存、引退单元、包括在处理器中的其他组件、以及上述的各种组合。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。实施例可被包括在具有多个核的处理器、逻辑处理器或者执行引擎中,其中至少一个具有可操作用于执行本文中所公开的指令实施例的执行逻辑。
图5是在处理器中的方法530的实施例的流程框图。在一些实施例中,图5的操作和/或方法可由图1的处理器和/或图4的装置执行,和/或在图1的处理器和/或图4的装置内执行。本文中所描述的用于图1的处理器和图4的装置的组件、特征、以及具体的任选细节还任选地应用于图5的操作和/或方法。替换地,图5的操作和/或方法可由类似的或完全不同的处理器或装置执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图1的处理器和/或图4的装置可执行与图5相似或者不同的操作和/或方法。
该方法包括在框531接收打包数据指令。在各个方面,可从管芯外的源(例如,从系统存储器、盘、或系统互连)或者从管芯上的源(例如,从指令高速缓存或指令提取单元)接收第一指令。在一些实施例中,打包数据指令可指示第一较窄的源打包数据操作数,任选的第二较窄的源打包数据操作数,和较窄的目的地操作数。
该方法包括在框532,将打包数据指令映射到经掩码打包数据操作。在一些实施例中,经掩码的打包数据操作可指示比第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数、任选的比第二较窄的源打包数据操作数宽且包括第二较窄的源打包数据操作数的第二较宽的源打包数据操作数、以及比较窄的目的地操作数宽且包括较窄的目的地操作数的较宽的目的地操作数。在一些实施例中,经掩码的打包数据操作可指示打包数据操作掩码,无论所接收的打包数据指令是否是经掩码的指令和/或指示打包数据操作掩码。在一些实施例中,解码逻辑(例如,解码单元)可执行映射。
该方法包括在框533生成打包数据操作掩码。在一些实施例中,打包数据操作掩码可包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素。在一些实施例中,与将由经掩码的打包数据操作存储的(本来不会由打包数据指令存储的)结果数据元素对应的所有掩码元素将被掩码掉。
该方法包括在框534利用打包数据操作掩码执行经掩码的打包数据操作。该方法包括在框535将打包数据结果存储在较宽的目的地操作数中。在一些实施例中,将打包数据结果存储在较宽的目的地操作数中可包括执行全寄存器写入而不是部分寄存器写入。在一些实施例中,较宽的目的地操作数可完全填充目的地寄存器,而较窄的目的地操作数可仅部分填充目的地寄存器,使得如果不执行映射则需要部分寄存器写入。
图6是示出部分寄存器访问操作603的框图,可响应于部分寄存器访问指令,在重叠在较宽操作数上的较窄操作数上执行该部分寄存器访问操作。部分寄存器访问指令可指定或以其它方式指示第一较窄的源打包数据622-1,可指定或以其它方式指示第二较窄的源打包数据622-2,可指定或以其它方式指示可存储结果打包数据的较窄的目的地操作数624(例如,存储位置)。在所示的示例中,第一较窄的源操作数、第二较窄的源操作数和较窄的目的地操作数中的每一个均是128位宽且包括四个32位数据元素。在图示中,第一较窄的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值A1、A2、A3和A4。类似地,第二较窄的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值B1、B2、B3和B4。其它示例可使用其它的打包数据宽度(例如,64位、256位、512位等),且具有较窄(例如,8位、16位等)或较宽(例如,64位)的数据元素。
较窄的128位操作数被存储在较宽的寄存器中。在图示中,较宽的寄存器是512位寄存器。具体地,第一较窄的源打包数据622-1被存储在第一512位寄存器607-1,第二较窄的源打包数据622-2被存储在第二512位寄存器607-2,较窄的目的地操作数624被存储在第三512位寄存器607-3。在其它实施例中,可使用其它寄存器宽度,例如256位寄存器或1024位寄存器。第一512位寄存器的位511:128存储值A5至A16。类似地,第二512位寄存器的位511:128存储值B5至B16。
响应于指令/操作生成结果打包数据,并将其存储在较窄的目的地操作数624中。结果打包数据可包括多个结果打包数据元素。在所示的示例中,结果打包数据是128位宽且包括四个32位结果数据元素。结果数据元素中的每一个包括操作结果,在这种情况下是在来自在对应相对位位置中第一和第二较窄的源打包数据的对应的源数据元素对上执行的加法操作或求和。例如,在图示中,结果打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值A1+B1、A2+B2、A3+B3和A4+B4。应意识到加法操作仅仅是一个说明性示例,且其它算法(例如,乘法、减法等)和/或逻辑(例如,移位、旋转、逻辑与、逻辑异或等)操作也是适当的。
因为128位第一和第二较窄的源打包数据622-1、622-2仅仅是较宽的第一和第二512位寄存器607-1、607-2的一部分,所以访问较窄的源操作数可涉及第一和第二512位寄存器的部分寄存器读取。例如,可在不读取值A5至A16的情况下读取值A1至A4。此外,因为较窄的128位结果打包数据和/或较窄的128位目的地操作数仅仅是较宽的第三512位寄存器607-3的一部分,所以存储结果可涉及对第三512位寄存器的部分寄存器写入。例如,可在不破坏第三512位寄存器的位511:128中的已有内容的情况下(例如,在不破坏A5至A16或B5至B16的值的情况下),将值A1+B1、A2+B2、A3+B3和A4+B4存储在第三512位寄存器中。在一些实施例中,可能期望避免或至少减少这种部分寄存器访问的数量。
图7是可响应于指示较窄操作数的部分寄存器访问打包数据指令在较宽操作数上执行的经掩码的全寄存器访问打包数据操作740的示例实施例的框图。在一些实施例中,处理器或其一部分(例如,解码单元)可将部分寄存器访问打包数据指令映射到经掩码的全寄存器访问打包数据操作,以用由经掩码的全寄存器访问打包数据操作执行的一个或多个对应全寄存器访问替换本来由部分寄存器访问打包数据指令执行的一个或多个部分寄存器访问。在一些实施例中,图7的经掩码的全寄存器访问打包数据操作可用于实现图6的部分寄存器访问指令和/或操作。
经掩码的全寄存器访问打包数据操作可使用具有由部分寄存器访问指令指示的第一较窄的源打包数据722-1的第一较宽的源打包数据723-1和具有由部分寄存器访问指令指示的第二较窄的源打包数据722-2的第二较宽的源打包数据723-2。在所示的实施例中,第一和第二较宽的源打包数据中的每一个是512位宽且具有十六个32位数据元素,且第一和第二较窄的源打包数据中的每一个是128位宽且具有四个32位数据元素,但本发明的范围不限于此。在图示中,第一较宽的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值A1、A2、A3、A4、A5、A6…A16。在图示中,第二较宽的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值B1、B2、B3、B4、B5、B6…B16。两个源打包数据内相同的相对位位置中(例如,如图所示的相同垂直位置中)的源数据元素表示对应数据元素对。在其它实施例中,可替代地使用任何其它适当的较宽和较窄源打包数据宽度(例如,128位、256位或1024位的较宽宽度,32位、64位或256位的较窄宽度)。此外,在其它实施例中,可任选地使用除32位外的其它数据元素宽度,诸如8位字节、16位字或64位双字或双精度浮点,仅仅举几个例子。
经掩码的全寄存器访问打包数据操作还可使用源打包数据操作掩码708。如例示中所示的,通常每个掩码元素可以是单个位。替代地,如果需要在多于两个的不同选项中进行选择,则可对每个掩码元素使用两个或更多位。还如图所示,可以存在一个掩码元素,在这种情况下,是用于每对对应的源数据元素和/或用于每个结果数据元素的单个位。在所示的实施例中,因为在第一和第二源打包数据中有十六对对应的数据元素,所以打包数据操作掩码包括十六个掩码元素或位。十六个掩码位中的每一个可对应于较宽的目的地操作数725中的打包数据结果的不同结果数据元素。在图示中,对应的数据元素及其对应的掩码位相对于彼此垂直对齐。每个掩码位被置位为二进制一(即,1)或清除为二进制零(即,0)。被置位为二进制一(即,1)掩码位表示未被掩码的位,而清除为二进制零(即,0)的掩码位表示被掩码的位。
响应于经掩码的全寄存器访问打包数据操作将512位结果打包数据存储在较宽的目的地操作数725中。在一些实施例中,通过全寄存器写入或存储将512位结果打包数据存储在较宽的目的地操作数(例如,512位寄存器)中。在一些实施例中,512位结果打包数据和/或较宽的目的地操作数725包括由对应的部分寄存器访问指令指示的较窄的128位目的地操作数724。在该特定示例中,经掩码的全寄存器访问打包数据操作是经掩码的打包数据加法操作,该操作基于来自打包数据操作掩码708的对应掩码位的断言将来自第一和第二较宽的源打包数据的对应数据元素对之和有条件地存储在较宽的目的地操作数725中作为结果打包数据。当给定的掩码位被置位(即,1)时,允许对应的源数据元素对之和存储在对应的结果数据元素中。相反,当给定的掩码位被清除(即,0)时,不允许对应的源数据元素对之和存储在对应的结果数据元素中。当然,在一些实施例中,该结果数据元素中的原始/开始值可保留或保持不变。
在一些实施例中,可使与较宽的目的地操作数中但不在较窄的目的地操作数中的结果数据元素对应的掩码元素均被故意掩码掉。在一些实施例中,可使与较窄的目的地操作数中但不在较宽的目的地操作数中的结果数据元素对应的所有掩码元素均不被掩码(例如,除非部分寄存器访问指令本身使用断言以掩码掉这些结果数据元素中的一些)。例如,与较窄的目的地操作数中的结果数据元素相同数量的最低阶或最低有效掩码位被置位为二进制一,而与较宽的目的地操作数中但不在较窄的目的地操作数中的结果数据元素相同数量的最高阶或最高有效掩码位可被清除为二进制零。再次参考所示的实施例,源打包数据操作掩码从最低有效位置(在右侧)至最高有效位置(在左侧)具有值1、1、1、1、0、0、…0。即,四个最低阶掩码位被置位,而十二个最高阶掩码位被清除。可在执行时动态确定掩码位,而一般在编译时静态固定部分寄存器访问。对于被置位的每个掩码位,可将和存储在对应的结果数据元素中。例如,如图所示,最低阶的四个结果数据元素存储值A1+B1、A2+B2、A3+B3和A4+B4。在该实施例中,属于原始部分寄存器访问指令/操作(例如,图6的指令/操作)的512位操作数的较低阶的128位部分内的所有数据元素均未被掩码。
相反,位511:128中的所有较高阶数据元素均被掩码掉,因为它们不属于仅使用128位操作数的原始部分寄存器访问指令/操作。对于被清除的每个掩码位,可将除和之外的另一个值存储在对应的结果数据元素中。例如,在源被重新用作目的地的一些实施例中,可执行合并-掩码,其中来自较宽的源打包数据的数据元素的对应值可被存储在给定的被掩码掉的结果数据元素中。例如,如图所示,来自第一较宽的源打包数据的位511:128的值A5至A16可被存储在较宽的目的地操作数的位511:128中。或者,在另一个实施例中,值B5至B16可被存储在较宽的目的地操作数的位511:128中。在其它实施例中,如果目的地是不同于源寄存器的寄存器,目的地的被掩码掉的结果数据元素中的原始内容可被保留或保持不变。有利地,这些被清除的最高有效掩码位可被用于掩码掉较宽的512位寄存器中(仅使用128位操作数的)原始部分寄存器访问指令(例如,图6的指令/操作)不需要的那部分。
掩码位可按不同方式实现。作为一个示例,在一些实施例中,可执行选择操作,其中操作的结果被选择成被写入对应的结果数据元素,或目的地中的对应结果数据元素的原始值(即原始/开始内容)可被选择成回写到对应的结果数据元素。作为另一个示例,在其它实施例中,可执行有条件写入,其中掩码位控制是否将操作的结果写入对应的结果数据元素,或不执行写,从而使结果数据元素保留其原始/开始内容。
应意识到这仅仅是在较宽的操作数上的经掩码的全寄存器访问打包数据操作的一个说明性示例,其可用于实现指示较窄操作数的部分寄存器访问打包数据指令。在两个源打包数据上的其它操作,诸如减法、乘法、除法、打包比较等,也是适当的。又一些其它适当的操作涉及单个源打包数据操作数。示例包括但不限于打包移位、打包旋转、打包量值缩放、打包平方根倒数等等。又一些其它适当的操作包括两个以上的源打包数据、不同尺寸的源打包数据、不同数量的数据元素的源打包数据上的操作、以水平或非垂直对准方式执行的操作、部分标量和部分打包操作、以及本领域中已知的又一些其它操作。
在其它实施例中,部分寄存器访问指令/操作和/或用于实现它们的对应的经掩码的全寄存器访问打包数据操作可以在寄存器中的中间位上操作。例如,中间位可表示最低有效的位范围(例如,一个或多个打包数据元素)和最高有效的位范围(例如,一个或多个打包数据元素)之间的连续的位范围(例如,一个或多个打包数据元素)。
图8是示出部分寄存器访问操作803的框图,可响应于部分寄存器访问指令,在重叠在较宽操作数上的较窄操作数上执行该部分寄存器访问操作。部分寄存器访问指令可指定或以其它方式指示第一较窄的源打包数据822-1,可指定或以其它方式指示第二较窄的源打包数据822-2,可指定或以其它方式指示可存储结果打包数据的较窄的目的地操作数824(例如,存储位置)。在所示的示例中,第一较窄的源操作数、第二较窄的源操作数和较窄的目的地操作数中的每一个均是128位宽且包括两个64位数据元素,但本发明的范围不限于此。在图示中,第一较窄的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值A1和A2。类似地,第二较窄的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值B1和B2。其它示例可使用其它的打包数据宽度(例如,64位、256位、512位等),且具有较窄(例如,8位、16位等)或较宽(例如,64位)的数据元素。
较窄的128位操作数被存储在较宽的寄存器中。在图示中,较宽的寄存器是256位寄存器。具体地,第一较窄的源打包数据822-1被存储在第一256位寄存器807-1,第二较窄的源打包数据822-2被存储在第二256位寄存器807-2,较窄的目的地操作数824被存储在第三256位寄存器807-3。在其它实施例中,可使用其它寄存器宽度,例如512位寄存器或1024位寄存器。第一256位寄存器的位255:128存储值A3和A4。类似地,第二256位寄存器的位255:128存储值B3和B4。
响应于指令/操作生成结果打包数据,并将其存储在较窄的目的地操作数824中。在所示的示例中,结果打包数据是128位宽且包括两个数据元素。位63:0中的最低阶数据元素包括来自第一源打包数据的对应数据元素的值A1。在这种情况下,不执行生成该数据元素的加法操作。位127:64中的较高阶数据元素包括和A2+B2,它表示来自第一和第二源打包数据的对应数据元素对之和。因为128位第一和第二较窄的源打包数据822-1、822-2仅仅是较宽的第一和第二256位寄存器807-1、807-2的一部分,所以访问较窄的源操作数可涉及部分寄存器读取。此外,因为较窄的128位结果打包数据和/或较窄的128位目的地操作数仅仅是较宽的第三256位寄存器807-3的一部分,所以存储结果可涉及部分寄存器写入。例如,在一些实施例中,第一256位寄存器可再次用作目的地操作数,且和A2+B2可被存储在该256位寄存器的位127:64中,而不覆写该寄存器的其它预先存在的内容(例如,不覆写A1、A3和A4)。这可涉及部分寄存器写入。在一些实施例中,可能期望避免或至少减少这种部分寄存器访问的数量。
图9是可响应于指示较窄操作数的部分寄存器访问打包数据指令在较宽操作数上执行的经掩码的全寄存器访问打包数据操作940的示例实施例的框图。在一些实施例中,处理器或其一部分(例如,解码单元)可将部分寄存器访问打包数据指令映射到经掩码的全寄存器访问打包数据操作,以用由经掩码的全寄存器访问打包数据操作执行的一个或多个对应的全寄存器访问替换本来由部分寄存器访问打包数据指令执行的一个或多个部分寄存器访问。在一些实施例中,图9的经掩码的全寄存器访问打包数据操作可用于实现图8的部分寄存器访问指令和/或操作。
经掩码的全寄存器访问打包数据操作可使用具有由部分寄存器访问指令指示的第一较窄的源打包数据922-1的第一较宽的源打包数据923-1和具有由部分寄存器访问指令指示的第二较窄的源打包数据922-2的第二较宽的源打包数据923-2。在所示的实施例中,第一和第二较宽的源打包数据中的每一个是256位宽且具有四个64位数据元素,且第一和第二较窄的源打包数据中的每一个是128位宽且具有两个64位数据元素,但本发明的范围不限于此。在图示中,第一较宽的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值A1、A2、A3和A4。在图示中,第二较宽的源打包数据从最低有效位置(在右侧)至最高有效位置(在左侧)具有值B1、B2、B3和B4。在其它实施例中,可替代地使用任何其它适当的较宽和较窄的源打包数据宽度。此外,在其它实施例中,可任选地使用其它数据元素宽度。
经掩码的全寄存器访问打包数据操作还可使用源打包数据操作掩码908。在所示的实施例中,因为目的地操作数中有四个数据元素,所以有四个对应的掩码位。在该示例中,源打包数据操作掩码从最低有效位置(在右侧)至最高有效位置(在左侧)具有值0、1、0、0。
响应于经掩码的全寄存器访问打包数据操作将256位结果打包数据存储在较宽的目的地操作数925中。在一些实施例中,通过全寄存器写入或存储将256位结果打包数据存储在较宽的目的地操作数(例如,256位寄存器)中。在一些实施例中,256位结果打包数据和/或较宽的目的地操作数925包括由对应的部分寄存器访问指令指示的较窄的128位目的地操作数924。如图所示,仅单个和可被存储在256位结果打包数据中。即,和A2+B2可被存储在目的地操作数925的位127:64中。与要存储和A2+B2的目的地操作数925的位127:64对应的仅单个掩码位被置位。所有其它的掩码位被清除。对于每个被清除的掩码位,来自第一较宽的源打包数据923-1的对应数据元素的值被存储在目的地操作数925中。具体地,值A1被存储在目的地操作数的位63:0中,值A3被存储在目的地操作数的位191:128中,且值A4被存储在目的地操作数的位255:192中。这些其它掩码位被掩码掉,因为它们不属于根据原始部分寄存器访问指令/操作的单个和A2+B2。有利地,这些被清除的最高有效掩码位可被用于掩码掉较宽的256位寄存器中原始部分寄存器访问指令(例如,图8的指令/操作)不需要的那部分,并且允许执行全寄存器访问而不是部分寄存器访问。如前,很多其它的算法和/或逻辑操作也是适当的。
图6-7示出较窄的操作数占据较宽的操作数的最低有效位的实施例。图8-9示出较窄的操作数或较窄操作数的至少感兴趣的部分占据较宽操作数的最低有效和最高有效端之间的中间部分的实施例。在又一些其它实施例中,较窄的操作数可占据较宽操作数的最高有效部分。在又一些其它实施例中,可任选地使用这些位置的组合。
在上述示例中,在对应的数据元素对上操作部分寄存器访问指令/操作(即,第一和第二源操作数内的对应相对位位置中的那些)。在图示中,这些对应的数据元素对垂直对齐。在其它实施例中,部分寄存器访问指令/操作可在至少一些非对应数据元素(即,不在第一和第二源操作数内的对应相对位位置中的那些)上操作。这些非对应的数据元素可被称为非对齐。在一些实施例中,可执行移位、混洗、置换或其它数据重排操作,以帮助对齐非对应的数据元素,使得它们处于第一和第二源操作数中的对齐/对应的相对位位置,使得可通过用于实现部分寄存器访问指令/操作的经掩码的全寄存器访问打包数据操作,在第一和第二源操作数中的对齐/对应数据元素上执行垂直SIMD操作。在一些实施例中,数据重排操作可用于将第一操作数或来自第一操作数的一个或多个数据元素与第二操作数或来自第二操作数的一个或多个数据元素和/或与目的地操作数或来自目的地操作数的一个或多个数据元素对齐。在一些实施例中,可由解码器在解码部分寄存器访问打包数据指令和确定通过数据重排操作和经掩码的全寄存器访问打包数据操作实现部分寄存器访问打包数据指令后,确定数据重排操作。
以下描述的图10和11分别具有与前面描述的图8和9某些类似性。为了避免混淆描述,以下的讨论倾向于强调图10和11的新的或不同的特征和/或方面,而不赘述可任选地相同或类似的所有特征和/或方面。然而,应意识到,之前针对图8和9描述的可任选特征和/或方法及变形一般也适用于图10和11,除非另外陈述或另外显而易见。
图10是示出部分寄存器访问操作1003的框图,可响应于部分寄存器访问指令,在重叠在较宽操作数上的较窄操作数的非对应和/或非对齐的数据元素上执行该部分寄存器访问操作。部分寄存器访问指令可指定或以其它方式指示第一较窄的源打包数据1022-1、第二较窄的源打包数据1022-2和较窄的目的地操作数1024。在所示的示例中,第一较窄的源操作数、第二较窄的源操作数和较窄的目的地操作数中的每一个均是128位宽且包括两个64位数据元素,但本发明的范围不限于此。在图示中,第一较窄的源打包数据具有值A1和A2。类似地,第二较窄的源打包数据具有值B1和B2。第一较窄的源打包数据1022-1被存储在第一较宽的256位寄存器1007-1中,第二较窄的源打包数据1022-2被存储在第二较宽的256位寄存器1007-2中,较窄的目的地操作数1024被存储在第三较宽的256位寄存器1007-3中。第一较宽的256位寄存器的位255:128存储值A3和A4。类似地,第二较宽的256位寄存器的位255:128存储值B3和B4。
响应于指令/操作生成结果打包数据,并将其存储在较窄的目的地操作数1024中。在所示的示例中,结果打包数据是128位宽且包括两个数据元素。位63:0中的最低阶数据元素包括来自第一源打包数据的对应数据元素的值A1。在这种情况下,不执行生成该数据元素的加法操作。位127:64中的较高阶的数据元素包括和A2+B1。注意,这是第一和第二较窄的源打包数据中的非对应数据元素之和。具体地,第一较窄的源打包数据的位127:64中的数据元素A2被加到第二较窄的源打包数据的位63:0中的数据元素B1。数据元素A2和B1占据第一和第二源打包数据中的非对应或非对齐位位置。
图11是经掩码的全寄存器访问打包数据操作1140的示例实施例的框图,可在较宽操作数的对应和/或对齐数据元素上执行该经掩码的全寄存器访问打包数据操作1140,可响应于指示较窄操作数的非对应和/或非对齐数据元素上的操作的部分寄存器访问打包数据指令执行该经掩码的全寄存器访问打包数据操作1140。在一些实施例中,处理器或其一部分(例如,解码单元)可将部分寄存器访问打包数据指令映射到经掩码的全寄存器访问打包数据操作,以用由经掩码的全寄存器访问打包数据操作执行的一个或多个对应的全寄存器访问替换本来由部分寄存器访问打包数据指令执行的一个或多个部分寄存器访问。在一些实施例中,涉及图11的对应和/或对齐数据元素的经掩码的全寄存器访问打包数据操作可用于实现涉及图10的非对应和/或非对齐数据元素的部分寄存器访问指令和/或操作。
经掩码的全寄存器访问打包数据操作可使用具有由部分寄存器访问指令指示的第一较窄的源打包数据1122-1的第一较宽的源打包数据1123-1和具有由部分寄存器访问指令指示的第二较窄的源打包数据1122-2的第二较宽的源打包数据1123-2。在所示的实施例中,第一和第二较宽的源打包数据中的每一个是256位宽且具有四个64位数据元素,且第一和第二较窄的源打包数据中的每一个是128位宽且具有两个64位数据元素,但本发明的范围不限于此。在图示中,第一较宽的源打包数据具有值A1、A2、A3和A4。第二较宽的源打包数据具有值B1、B2、B3和B4。在其它实施例中,替代地,可任选地使用任何其它适当的较宽和较窄的源打包数据宽度和/或任何其它适当的数据元素宽度。
在一些实施例中,可执行移位、混洗、置换或其它数据重排操作,以帮助对齐将由部分寄存器访问指令指示操作的非对应和/或非对齐的数据元素,使得以对齐方式通过在较宽的操作数上的经掩码的全寄存器访问打包数据操作对它们进行操作。例如,可执行移位、混洗、置换或其它数据重排操作,以帮助在图11的经掩码的全寄存器访问打包数据操作之前对齐图10的部分寄存器访问打包数据指令/操作的非对应和/或非对齐数据元素A2和B1。如图所示,在所示的实施例中,第二较宽的源打包数据1123-2可移位64位,使得具有值B1的数据元素在第二较宽的源打包数据的位127:64中,而不是在第二较宽的源打包数据的位63:0中。现在,值A2和B1在对应的位位置中的对应数据元素中,和/或彼此相对地对齐。有利地,这可允许执行垂直类型的SIMD操作(例如,打包加法)。在其它实施例中,取代移位,可执行其它数据重排操作,诸如旋转、混洗、置换或本领域中已知的且适用于实现对齐所需的特定重排的各种其它数据重排操作。
对于一些部分寄存器访问指令/操作(例如,图6和8所示的那些),不需要对齐或数据重排操作。在一些实施例中,如果处理器使用这种对齐或数据重排操作,则对齐或数据重排操作在不需要时可被取消。例如,取代实际的移位,可执行移位0位。作为另一个示例,混洗或置换操作可将数据元素混洗或置换到其原始开始位置。
经掩码的全寄存器访问打包数据操作还可使用源打包数据操作掩码1108。在所示的实施例中,因为目的地操作数中有四个数据元素,所以有四个对应的掩码位。在该示例中,源打包数据操作掩码从最低有效位置(在右侧)至最高有效位置(在左侧)具有值0、1、0、0。
响应于经掩码的全寄存器访问打包数据操作将256位结果打包数据存储在较宽的256位目的地操作数1125中。在一些实施例中,通过全寄存器写入或存储将256位结果打包数据存储在较宽的目的地操作数(例如,256位寄存器)中。在一些实施例中,256位结果打包数据和/或较宽的目的地操作数1125包括由对应的部分寄存器访问指令指示的较窄的128位目的地操作数1124。如图所示,仅单个和可被存储在256位结果打包数据中。即,和A2+B1可被存储在目的地操作数1125的位127:64中。与将存储和A2+B1的目的地操作数1125的位127:64对应的仅单个掩码位被置位。所有其它的掩码位被清除。对于每个被清除的掩码位,来自第一较宽的源打包数据1123-1的对应数据元素的值被存储在目的地操作数1125中。具体地,值A1被存储在目的地操作数的位63:0中,值A3被存储在目的地操作数的位191:128中,且值A4被存储在目的地操作数的位255:192中。这些其它掩码位被掩码掉,因为它们不属于根据原始部分寄存器访问指令/操作的单个和A2+B1。有利地,这些被清除的最高有效掩码位可被用于掩码掉较宽的256位寄存器中原始部分寄存器访问指令(例如,图10的指令/操作)不需要的那部分,并且允许执行全寄存器访问而不是部分寄存器访问。如前,除加法外的很多其它的算法和/或逻辑操作也是适当的/选择地适当的。
图12是示出打包数据操作掩码位的数目依赖于打包数据宽度和打包数据元素宽度的表格1250。示出128位、256位和512位的打包数据宽度,但是其它宽度也是可能的。8位字节、16位字、32位双字(dword)或单精度浮点、以及64位四倍字(Qword)或双精度浮点的打包数据元素宽度被考虑,然而其它宽度也是可能的。如图所示,当打包数据宽度是128位时,当打包数据元素宽度是8位时可将16位用于掩码,当打包数据元素宽度是16位时可将8位用于掩码,当打包数据元素宽度是32位时可将4位用于掩码,当打包数据元素宽度是64位时可将2位用于掩码。当打包数据宽度是256位时,当打包数据元素宽度是8位时可将32位用于掩码,当打包数据元素宽度是16位时可将16位用于掩码,当打包数据元素宽度是32位时可将8位用于掩码,当打包数据元素宽度是64位时可将4位用于掩码。当打包数据宽度是512位时,当打包数据元素宽度是8位时可将64位用于掩码,当打包数据元素宽度是16位时可将32位用于掩码,当打包数据元素宽度是32位时可将16位用于掩码,当打包数据元素宽度是64位时可将8位用于掩码。
图13是一组合适的打包数据操作掩码寄存器1308的示例实施例的框图。打包数据操作掩码寄存器中的每一个可用于存储打包数据操作掩码。在所例示的实施例中,该组包括标示为K0至k7的八个打包数据操作掩码寄存器。替代的实施例可包括比八个更少(例如,两个、四个、六个等)或比八个更多(例如,十个、十六个、三十二个等)打包数据操作掩码寄存器。在所例示的实施例中,打包数据操作掩码寄存器中的每一个为64位。在替代实施例中,打包数据操作掩码寄存器的宽度可以比64位更宽(例如,128位等)或比64位更窄(例如,8位、16位、32位等)。打包数据操作掩码寄存器可通过使用公知技术以不同方式实现,并且不限于任何已知的特定类型的电路。在一些实施例中,打包数据操作掩码寄存器可以是分开的专用架构寄存器集合。在一些实施例中,指令可按位或字段编码或指定打包数据操作掩码寄存器。作为示例,断言指令可使用三个位(例如,3位字段)来编码或指定八个打包数据操作掩码寄存器中的任一个。在替代实施例中,在分别有更少或更多打包数据操作掩码寄存器时,可使用更少或更多位。
图14是示出打包数据操作掩码寄存器1408的示例实施例并且示出可被用作打包数据操作掩码和/或用于进行掩码的位的数目依赖于打包数据宽度和数据元素宽度的示图。所示的掩码寄存器是64位宽,但这不是必须的。依据打包数据和数据元素的宽度,所有的64位或仅64位的子集可被用于掩码。一般而言,当单个每元素掩码位被使用时,用于进行掩码的掩码位的数目等于打包数据宽度除以打包数据元素宽度。示出针对512位宽度的打包数据的若干说明性示例。即,当打包数据宽度为512位而数据元素宽度为64位时,则仅寄存器的8位(例如,最低阶的8位)被用于掩码。当打包数据宽度是512位且数据元素宽度是32位时,仅16位用于掩码。当打包数据宽度是512位且数据元素宽度是16位时,仅32位用于掩码。当打包数据宽度是512位且数据元素宽度是8位时,所有的64位用于掩码。断言的指令可基于该指令相关联的打包数据和数据元素宽度,仅访问和/或利用掩码所需的位的子集(例如,最低阶或最低有效位子集)。在所例示的实施例中,寄存器的最低阶子集或部分被用于进行掩码,但是并不要求如此。在替代实施例中,可任选地使用最高阶子集或某一其他子集。此外,在所例示的实施例中,仅512位打包数据宽度被考虑,然而,相同的原理适用于其他打包数据宽度,诸如例如256位和128位宽度。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)主要预期用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:包括预期用于通用计算的一个或多个通用有序核和/或预期用于通用计算的一个或多个通用无序核的CPU;以及2)包括主要预期用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图15A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图15B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图15A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,无序方面将被描述。
在图15A中,处理器流水线1500包括提取级1502、长度解码级1504、解码级1506、分配级1508、重命名级1510、调度(也称为分派或发布)级1512、寄存器读取/存储器读取级1514、执行级1516、写回/存储器写入级1518、异常处理级1522和提交级1524。
图15B示出处理器核1590,该核1590包括耦合到执行引擎单元1550的前端单元1530,并且两者耦合到存储器单元1570。核1590可以是精简指令集合计算(RISC)核、复杂指令集合计算(CISC)核、非常长的指令字(VLIW)核或混合或替代核类型。作为又一选项,核1590可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元1530包括耦合到指令高速缓存单元1534的分支预测单元1532,该高速缓存单元1534被耦合到指令翻译后备缓冲器(TLB)1536,该指令翻译后备缓冲器被耦合到解码单元1540。解码单元1540(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1540可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(OLA)、微代码只读存储器(ROM)等。在一个实施例中,核1590包括存储(例如,在解码单元1540中或否则在前端单元1530内的)某些宏指令的微代码的微代码ROM或其他介质。解码单元1540耦合到执行引擎单元1550中的重命名/分配器单元1552。
执行引擎单元1550包括重命名/分配器单元1552,该重命名/分配器单元1552耦合至引退单元1554和一个或多个调度器单元1556的集合。调度器单元1556表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元1556被耦合到物理寄存器文件单元1558。每个物理寄存器文件单元1558表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元1558包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器文件单元1558被引退单元1554覆盖以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用记录器缓冲器和引退寄存器文件;使用将来的文件、历史缓冲器和引退寄存器文件;使用寄存器图和寄存器池等等)。引退单元1554和物理寄存器文件单元1558被耦合到执行群集1560。执行群集1560包括一个或多个执行单元1562的集合和一个或多个存储器访问单元1564的集合。执行单元1562可以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行。尽管某些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有函数的仅一个执行单元或多个执行单元。调度器单元1556、物理寄存器文件单元1558和执行群集1560被示为可能有多个,因为某些实施例为某些类型的数据/操作(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元1564的某些实施例)创建分开的流水线。还应当理解,在分开的流水线被使用的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元1564的集合被耦合到存储器单元1570,该存储器单元1570包括耦合到数据高速缓存单元1574的数据TLB单元1572,其中数据高速缓存单元1574耦合到二级(L2)高速缓存单元1576。在一个示例性实施例中,存储器存取单元1564可包括负载单元、存储地址单元、以及存储数据单元,这些单元中的每一个耦合到存储器单元1570中的数据TLB单元1572。指令高速缓存单元1534还耦合到存储器单元1570中的二级(L2)高速缓存单元1576。L2高速缓存单元1576被耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线1500:1)指令提取1538执行提取和长度解码级1502和1504;2)解码单元1540执行解码级1506;3)重命名/分配器单元1552执行分配级1508和重命名级1510;4)调度器单元1556执行调度级1512;5)物理寄存器文件单元1558和存储器单元1570执行寄存器读取/存储器读取级1514;执行群集1560执行执行级1516;6)存储器单元1570和物理寄存器文件单元1558执行写回/存储器写入级1518;7)各单元可牵涉到异常处理级1522;以及8)引退单元1554和物理寄存器文件单元1558执行提交级1524。
核1590可支持一个或多个指令集合(例如,x86指令集合(具有与较新版本一起添加的某些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集合;加利福尼州桑尼维尔市的ARM控股的ARM指令集合(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核1590包括支持打包数据指令集合扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作将使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分提取和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所解说的处理器的实施例还包括分开的指令和数据高速缓存单元1534/1574以及共享L2高速缓存单元1576,但替换实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部缓存。在某些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图16A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。这些逻辑块通过高带宽的互连网络(例如,环形网络)与某些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,这依赖于应用。
图16A是根据本发明的实施例的连接到管芯上互联网络1602且具有第二级(L2)高速缓存的本地子集1604的单一处理器核的框图。在一个实施例中,指令解码器1600支持具有打包数据指令集合扩展的x86指令集。L1高速缓存1606允许对标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1608和向量单元1610使用分开的寄存器集合(分别为标量寄存器1612和向量寄存器1614),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存1606读回,但是本发明的替换实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器文件之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1604是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存1604的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集1604中,并且可以被快速访问,该访问与其他处理器核访问其自己的本地L2高速缓存子集并行。被处理器核写入的数据被存储在其子集的L2高速缓存子集1604中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图16B是根据本发明的各实施例的图16A中的处理器核的一部分的展开图。图16B包括作为L1高速缓存1604的L1数据高速缓存1606A部分,以及关于向量单元1610和向量寄存器1614的更多细节。具体地说,向量单元1610是16宽向量处理单元(VPU)(见16宽ALU1628),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1620支持对寄存器输入的混合、通过数值转换单元1622A-B支持数值转换,并通过复制单元1624支持对存储器输入的复制。写掩码寄存器1626允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图17是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形器件的处理器1700的框图。图17中的实线框示出具有单一核1702A、系统代理1710、一组一个或多个总线控制器单元1716的处理器1700,而任选增加的虚线框示出具有多个核1702A-N、系统代理单元1710中的一组一个或多个集成存储器控制器单元1714、以及专用逻辑1708的替换处理器1700。
因此,处理器1700的不同实现可包括:1)CPU,其中专用逻辑1708是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1702A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1702A-N是主要预期用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1702A-N是大量通用有序核。因此,处理器1700可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1700可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1706的集合、以及耦合至集成存储器控制器单元1714的集合的外部存储器(未示出)。该共享高速缓存单元1706的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1712将集成图形逻辑1708、共享高速缓存单元1706的集合以及系统代理单元1710/集成存储器控制器单元1714互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,在一个或多个高速缓存单元1706与核1702A-N之间维持一致性。
在某些实施例中,核1702A-N中的一个或多个核能够多线程化。系统代理1710包括协调和操作核1702A-N的那些组件。系统代理单元1710可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调整核1702A-N和集成图形逻辑1708的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1702A-N在架构指令集合方面可以是同构的或异构的;即,这些核1702A-N中的两个或更多个核可能能够执行相同的指令集合,而其他核可能能够执行该指令集合的仅仅子集或不同的指令集合。
示例性计算机架构
图18-21是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够纳入本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
现在参考图18,示出了根据本发明的一个实施例的系统1800的框图。系统1800可以包括一个或多个处理器1810、1815,这些处理器耦合到控制器中枢1820。在一个实施例中,控制器中枢1820包括图形存储器控制器中枢(GMCH)1890和输入/输出中枢(IOH)1850(其可以在分开的芯片上);GMCH1890包括存储器1840和协处理器1845耦合到的存储器和图形控制器;IOH1850将输入/输出(I/O)设备1860耦合到GMCH1890。替换地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1840和协处理器1845直接耦合到处理器1810、以及在单一芯片中具有IOH1850的控制器中枢1820。
附加的处理器1815的任选性在图18中通过虚线来表示。每一处理器1810、1815可包括本文中描述的处理核中的一个或多个,并且可以是处理器1700的某一版本。
存储器1840可以是例如动态随机存取存储器(DRAM)、相变化存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1820经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1895与处理器1810、1815进行通信。
在一个实施例中,协处理器1845是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1820可以包括集成图形加速计。
在包括架构、微架构、热、功耗特性等的优点度量的范围方面,在物理资源1810之间可存在各种差异。
在一个实施例中,处理器1810执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1810识别如具有应当由附连的协处理器1845执行的类型的这些协处理器指令。因此,处理器1810在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1845。协处理器1845接受并执行所接收的协处理器指令。
现在参考图19,示出了根据本发明的一个实施例的第一更具体的示例性系统1900的框图。如图19所示,多处理器系统1900是点对点互连系统,且包括经由点对点互连1950耦合的第一处理器1970和第二处理器1980。处理器1970和1980中的每一个都可以是处理器1700的某一版本。在本发明的一个实施例中,处理器1970和1980分别是处理器1810和1815,而协处理器1938是协处理器1845。在另一实施例中,处理器1970和1980分别是处理器1810和协处理器1845。
处理器1970和1980被示为分别包括集成存储器控制器(IMC)单元1972和1982。处理器1970还包括作为其总线控制器单元的一部分的点对点(P-P)接口1976和1978;类似地,第二处理器1980包括点对点接口1986和1988。处理器1970、1980可以使用点对点(P-P)电路1978、1988经由P-P接口1950来交换信息。如图19所示,IMC1972和1982将处理器耦合到相应的存储器,即存储器1932和存储器1934,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1970、1980可各自经由使用点对点接口电路1976、1994、1986、1998的各个P-P接口1952、1954与芯片组1990交换信息。芯片组1990可以可选地经由高性能接口1939与处理器1938交换信息。在一个实施例中,协处理器1938是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1990可经由接口1996耦合至第一总线1916。在一个实施例中,第一总线1916可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图19所示,各种I/O设备1914可连同总线桥1918一起耦合到第一总线1916,总线桥1918将第一总线1916耦合到第二总线1920。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速计(诸如例如图形加速计或数字信号处理器(DSP)单元)、场可编程门阵列或任何其他处理器的一个或多个附加处理器1915被耦合到第一总线1916。在一个实施例中,第二总线1920可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1920,在一个实施例中这些设备包括例如键盘/鼠标1922、通信设备1927以及诸如可包括指令/代码和数据1930的盘驱动器或其它海量存储设备的存储单元1928。此外,音频I/O1924可以被耦合至第二总线1920。注意,其它架构是可能的。例如,代替图19的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图20,示出了根据本发明实施例的第二更具体的示例性系统2000的框图。图19和20中的相似元件具有相似的附图标记,并且图19的特定方面已经从图20中省略以避免混淆图20的其他方面。
图20示出处理器1970、1980可分别包括集成存储器和I/O控制逻辑(“CL”)1972和1982。因此,CL1972、1982包括集成存储器控制器单元并包括I/O控制逻辑。图20示出:不仅存储器1932、1934耦合至CL1972、1982,I/O设备2014也耦合至控制逻辑1972、1982。传统I/O设备2015被耦合至芯片组1990。
现在参考图21,示出了根据本发明实施例的SoC2100的框图。图17中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图21中,互连单元2102被耦合至:应用处理器2110,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元1706;系统代理单元1710;总线控制器单元1716;集成存储器控制器单元1714;一个或多个协处理器2120的集合,该集合可包括集成图形逻辑1214、图形处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2130;直接存储器存取(DMA)单元2132;以及用于耦合至一个或多个外部显示器的显示单元2140。在一个实施例中,协处理器2120包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图19所示的代码1930之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。”
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态、有形安排,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)的以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变化存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图22是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图22以高级语言2202示出了程序,该程序可使用x86编译器2204来编译以生成x86二进制代码2206,该二进制代码可原生地由具有至少一个x86指令集核心的处理器2216来执行。具有至少一个x86指令集核2216的处理器表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)被定向为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的对象代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器2204表示用于生成x86二进制代码2206(例如,对象代码)的编译器,该二进制代码2206可通过或不通过附加的关联处理在具有至少一个x86指令集核2216的处理器上执行。类似地,图22以高级语言2202示出了程序,该程序可使用替换指令集编译器2208来编译以生成替换性指令集二级制代码2210,替换性指令集二级制代码2210可由不具有至少一个x86指令集核2214的处理器(诸如,具有可执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)原生地执行。指令转换器2212被用来将x86二进制代码2206转换成可以由不具有x86指令集核2214的处理器原生执行的代码。该转换后的代码不大可能与替换性指令集二进制代码2210相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器2212通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码2206的软件、固件、硬件或其组合。
针对图2、3A、3B和6-14中的任一图所描述的组件、特征、以及细节还可任选地用于图4-5中的任一图中。此外,本文中针对这些装置中的任何一个描述的组件、特性和细节也可以可选地在本文中描述的各方法中的任何一种方法中被使用,这些方法在各实施例中可以由该装置和/或用该装置执行。
示例实施例
以下示例属于进一步的实施例。这些实施例中的细节可以在一个或多个实施例的任何地方被使用。
示例1是一种处理器,包括:解码单元,用于将打包数据指令映射到经掩码的打包数据操作,该打包数据指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数。经掩码的打包数据操作至少指示比第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比较窄的目的地操作数宽且包括较窄的目的地操作数的较宽的目的地操作数。该处理器还包括与解码单元耦合的执行单元。执行单元利用打包数据操作掩码执行经掩码的打包数据操作。打包数据操作掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素。与由经掩码的打包数据操作存储的、本来不会由打包数据指令存储的结果数据元素对应的所有掩码元素被掩码掉。执行单元将打包数据结果存储在较宽的目的地操作数中。
示例2包括任何前述示例的处理器,且任选地其中执行单元用于写入与较宽目的地操作数对应的寄存器的整个宽度,任选地其中较窄的目的地操作数仅对应于所述寄存器的宽度的一部分。
示例3包括任何前述示例的处理器,且任选地其中执行单元用于存储打包数据结果,其中要由与打包数据指令相关联的操作更新的结果数据元素仅占据在寄存器的最低有效部分和寄存器的最高有效部分之间的寄存器中间部分。
示例4包括任何前述示例的处理器,且任选地其中所述解码单元用于接收打包数据指令,打包数据指令还指示第二较窄的源打包数据操作数,且任选地其中解码单元用于将打包数据指令映射到经掩码的打包数据操作,经掩码的打包数据操作指示比第二较窄的源打包数据操作数宽且包括第二较窄的源打包数据操作数的第二较宽的源打包数据操作数。
示例5包括任何前述示例的处理器,且任选地其中所述解码单元用于接收打包数据指令,所述打包数据指令指示第一和第二较窄的源打包数据操作数中的至少一个非对应数据元素对上的操作,非对应数据元素不在对应的位位置中,且任选地其中所述处理器还用于执行将所述非对应数据元素对置于对应的位位置中的操作,以便由执行单元在执行经掩码的打包数据操作时对其进行操作。
示例6包括任何前述示例的处理器,且任选地其中所述处理器用于通过执行移位操作、混洗操作和置换操作之一来执行将所述非对应数据元素对置于对应的位位置中的操作
示例7包括任何前述示例的处理器,且任选地其中打包数据指令不指示打包数据操作掩码。
示例8包括任何前述示例的处理器,且任选地其中所述打包数据指令指示打包数据操作掩码,所述打包数据操作掩码具有比由所述执行单元用于执行经掩码的打包数据操作的打包数据操作掩码少的掩码元素。
示例9包括任何前述示例的处理器,且任选地其中执行单元用于存储打包数据结果,其中与被掩码掉的掩码元素对应的每个结果数据元素的值不变,且任选地其中与未被掩码的掩码元素对应的每个结果数据元素的值通过与打包数据指令相关联的操作更新。
示例10是一种处理器中的方法,包括接收打包数据指令,该指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数。该方法还包括将打包数据指令映射到经掩码的打包数据操作,经掩码的打包数据操作至少指示比第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比所述较窄的目的地操作数宽且包括所述较窄的目的地操作数的较宽的目的地操作数。该方法还包括生成打包数据操作掩码,打包数据操作掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素。与由经掩码的打包数据操作存储的、本来不会由打包数据指令存储的结果数据元素对应的所有掩码元素被掩码掉。该方法还包括利用打包数据操作掩码执行经掩码的打包数据操作。该方法还包括将打包数据结果存储在较宽的目的地操作数中。
示例11包括任何前述示例的方法,且任选地其中存储打包数据结果包括写入与较宽的目的地操作数对应的寄存器的整个宽度,任选地其中较窄的目的地操作数仅对应于寄存器的宽度的一部分。
示例12包括任何前述示例的方法,且任选地其中存储包括存储打包数据结果,其中由与打包数据指令相关联的操作更新的结果数据元素仅占据在寄存器的最低有效部分和寄存器的最高有效部分之间的寄存器的中间部分。
示例13包括任何前述示例的方法,且任选地其中接收包括接收所述打包数据指令,所述打包数据指令还指示第二较窄的源打包数据操作数,且任选地其中映射包括将所述打包数据指令映射到经掩码的打包数据操作,所述经掩码的打包数据操作指示比第二较窄的源打包数据操作数宽且包括第二较窄的源打包数据操作数的第二较宽的源打包数据操作数。
示例14包括任何前述示例的方法,且任选地其中接收包括接收打包数据指令,打包数据指令指示第一和第二较窄的源打包数据操作数中的至少一个非对应数据元素对上的操作,所述非对应数据元素不在对应的位位置中,且任选地还包括执行将所述非对应数据元素对置于对应的位位置中的操作,以便由经掩码的打包数据操作对其进行操作。
示例15包括任何前述示例的方法,且任选地其中执行将所述非对应数据元素对置于对应的位位置中的操作包括执行移位操作、混洗操作和置换操作之一。
示例16包括任何前述示例的方法,且任选地其中接收包括接收不指示打包数据操作掩码的打包数据指令。
示例17包括任何前述示例的方法,且任选地其中接收包括接收指示第二打包数据操作掩码的打包数据指令,所述第二打包数据操作掩码具有比所生成的打包数据操作掩码少的掩码元素。
示例18包括任何前述示例的方法,且任选地其中所述第一较窄的源打包数据操作数重叠在寄存器中的第一较宽的源打包数据操作数上。
示例19包括任何前述示例的方法,且任选地其中存储包括存储打包数据结果,其中与被掩码掉的掩码元素对应的每个结果数据元素的值不变,且任选地其中与未被掩码的掩码元素对应的每个结果数据元素的值由与打包数据指令相关联的操作更新。
示例20是处理指令的系统,该系统包括互连和与该互连耦合的处理器。该处理器包括第一单元,用于将打包数据指令映射到经掩码的打包数据操作,所述打包数据指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数,所述经掩码的打包数据操作至少指示比所述第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比所述较窄的目的地操作数宽且包括所述较窄的目的地操作数的较宽的目的地操作数。该处理器还包括与第一单元耦合的集成电路。该集成电路利用掩码执行经掩码的打包数据操作,掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应数据元素的掩码位。仅允许与由打包数据指令存储的数据元素对应的掩码位不被掩码掉。该系统还包括与所述互连耦合的动态随机存取存储器(DRAM)。
示例21包括示例20的系统,且任选地其中所述集成电路还用于执行数据重排操作,以使所述第一较窄的源打包数据操作数的数据元素与所述打包数据结果的数据元素对齐。
示例22是一种处理器,包括用于接收打包数据指令的装置,该指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数。该处理器还包括用于将打包数据指令映射到经掩码的打包数据操作的装置,经掩码的打包数据操作至少指示比第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比所述较窄的目的地操作数宽且包括所述较窄的目的地操作数的较宽的目的地操作数。该处理器还包括用于生成打包数据操作掩码的装置,打包数据操作掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素。与由经掩码的打包数据操作存储的、本来不会由打包数据指令存储的结果数据元素对应的所有掩码元素被掩码掉。
示例23包括示例22的系统,且任选地还包括用于将第一较窄的源打包数据操作数与打包数据结果的数据元素对齐的装置。
示例24包括一种执行示例10-19中的任一个的方法的设备。
示例25包括一种包括用于执行示例10-19中的任一个的方法的装置的设备。
示例26包括一种包括用于执行示例10-19中的任一个的方法的装置的处理器。
示例27包括计算机系统,包括动态随机存取存储器(DRAM)和与DRAM耦合的处理器,其包括用于执行示例10-19中的任一个的方法的装置。
示例28包括一种执行基本如本文中所描述的方法的装置。
示例29包括一种设备,该设备包括用于执行基本如本文中所描述的方法的装置。
在说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体实施例中,“连接的”用于指示两个或更多个要素彼此直接物理或电接触。“耦合的”可意味着两个或多个元件直接物理或电气接触。然而,“耦合的”也可表示两个或更多个要素可能并未彼此直接接触,但是仍然彼此协作、彼此作用。在附图中,箭头用于示出连接和耦合。
在说明书和权利要求书中,可能使用了术语“逻辑”。如本文中所使用,逻辑可包括硬件、固件、软件、或它们的组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在某些实施例中,硬件设备可包括晶体管和/或门控,并潜在地包括其他电路组件。
术语“和/或”可能已被使用。如本文中所使用的,术语“和/或”意指一个或其他或两者(例如,A和/或B意指A或B或者A和B两者)。
在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的各实施例的透彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了通过示例实施例来说明本发明。本发明的范围不是由具体示例来确定的,而是仅由权利要求书来确定的。在其它实例中,以方框图形式而非以细节地示出了公知的电路、结构、设备和操作以避免使说明书的理解变得晦涩。
在认为适宜之处,附图标记或附图标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特征的对应或类似的要素,除非以其他方式来指定或显而易见。在描述了多个组件的一些情况下,它们可被结合到单一组件中。在描述了单一组件的其他情况下,它可被分割成多个组件。
已描述了各种操作和方法。已经以流程图方式以相对基础的方式对一些方法进行了描述,但这些操作可选择地被添加至这些方法和/或从这些方法中移去。另外,尽管流程图示出根据示例实施例的操作的特定顺序,但该特定顺序是示例性的。替换实施例可任选地以不同方式执行这些操作、组合某些操作、覆盖某些操作等。
某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可包括或者已存储有一个或多个指令,这些指令如果被机器执行和/或在被机器执行时用于引起该机器执行和/或导致该机器执行本文中公开的一个或多个操作、方法或技术。
在某些实施例中,机器可读介质可包括有形的和/或无形的机器可读存储介质。例如,有形的和/或无形的机器可读存储介质可包括软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变化存储器、相变化数据存储材料、非易失性存储器、非易失性数据存储设备、非瞬时存储器、或非瞬时数据存储设备等。非瞬态机器可读存储介质不由瞬态传播的信号组成。在另一实施例中,机器可读介质可包括瞬态机器可读通信介质,例如电、光、声、或者其他形式的传播信号,诸如载波、红外信号、数字信号等。
合适机器的示例包括但不限于,通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。合适的机器的又一些示例包括合并有这样的处理器、指令处理装置、数字逻辑电路或集成电路的计算设备和其他电子设备。这样的计算设备和电子设备的示例包括但不限于台式机、膝上型计算机、笔记本电脑、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动网络设备(MID)、媒体播放器、智能电视、迷你桌上型设备、机顶盒和视频游戏控制器。
还应当理解,说明书全文对“一个实施例”、“一实施例”或“一个或多个实施例”的引用例如表示特定特征可包含在本发明实施例的实践中。类似地应当理解,在本说明书中,各个特征有时被一起编组在单个实施例、附图或其描述中以使本公开变得流畅并帮助理解各个创新性方面。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如下面权利要求反映的,各创新性方面可具有比单个公开的实施例的全部特征更少的特征。因此,说明书之后所附的权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。

Claims (21)

1.一种处理器,包括:
解码单元,用于将打包数据指令映射到经掩码的打包数据操作,所述打包数据指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数,所述经掩码的打包数据操作至少指示比所述第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比所述较窄的目的地操作数宽且包括所述较窄的目的地操作数的较宽的目的地操作数;以及
与所述解码单元耦合的执行单元,所述执行单元用于利用打包数据操作掩码执行所述经掩码的打包数据操作,所述打包数据操作掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素,其中与由经掩码的打包数据操作存储的、本来不会由打包数据指令存储的结果数据元素对应的所有掩码元素被掩码掉,所述执行单元用于将打包数据结果存储在较宽的目的地操作数中。
2.如权利要求1所述的处理器,其特征在于,所述执行单元用于写入与较宽的目的地操作数对应的寄存器的整个宽度,其中所述较窄的目的地操作数仅对应于所述寄存器的宽度的一部分。
3.如权利要求1所述的处理器,其特征在于,所述执行单元用于存储打包数据结果,其中将由与打包数据指令相关联的操作更新的结果数据元素仅占据在寄存器的最低有效部分和寄存器的最高有效部分之间的寄存器的中间部分。
4.如权利要求1所述的处理器,其特征在于,所述解码单元用于接收打包数据指令,所述打包数据指令还指示第二较窄的源打包数据操作数,且其中所述解码单元用于所述打包数据指令映射到经掩码的打包数据操作,所述经掩码的打包数据操作指示比第二较窄的源打包数据操作数宽且包括第二较窄的源打包数据操作数的第二较宽的源打包数据操作数。
5.如权利要求4所述的处理器,其特征在于,所述解码单元用于接收打包数据指令,所述打包数据指令指示第一和第二较窄的源打包数据操作数中的至少一个非对应数据元素对上的操作,所述非对应数据元素不在对应的位位置中,且其中所述处理器还用于执行将所述非对应数据元素对置于对应的位位置中的操作,以便由执行单元在执行经掩码的打包数据操作时对其进行操作。
6.如权利要求5所述的处理器,其特征在于,所述处理器用于通过执行移位操作、混洗操作和置换操作之一来执行将所述非对应数据元素对置于对应的位位置中的操作
7.如权利要求1所述的处理器,其特征在于,所述打包数据指令不指示打包数据操作掩码。
8.如权利要求1所述的处理器,其特征在于,所述打包数据指令指示打包数据操作掩码,所述打包数据操作掩码具有比由所述执行单元用于执行经掩码的打包数据操作的打包数据操作掩码少的掩码元素。
9.如权利要求1所述的处理器,其特征在于,所述执行单元用于存储打包数据结果,其中与被掩码掉的掩码元素对应的每个结果数据元素的值不变,且其中与未被掩码的掩码元素对应的每个结果数据元素的值由与打包数据指令相关联的操作更新。
10.一种在处理器中的方法,包括:
接收打包数据指令,所述打包数据指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数;
将所述打包数据指令映射到经掩码的打包数据操作,所述经掩码的打包数据操作至少指示比所述第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比所述较窄的目的地操作数宽且包括所述较窄的目的地操作数的较宽的目的地操作数;
生成打包数据操作掩码,所述打包数据操作掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码元素,其中与由经掩码的打包数据操作存储的、本来不会由打包数据指令存储的结果数据元素对应的所有掩码元素被掩码掉;
利用所述打包数据操作掩码执行经掩码的打包数据操作;以及
将打包数据结果存储在较宽的目的地操作数中。
11.如权利要求10所述的方法,其特征在于,存储所述打包数据结果包括写入与较宽的目的地操作数对应的寄存器的整个宽度,其中所述较窄的目的地操作数仅对应于所述寄存器的宽度的一部分。
12.如权利要求10所述的方法,其特征在于,存储包括存储所述打包数据结果,其中由与打包数据指令相关联的操作更新的结果数据元素仅占据在寄存器的最低有效部分和寄存器的最高有效部分之间的寄存器的中间部分。
13.如权利要求10所述的方法,其特征在于,接收包括接收所述打包数据指令,所述打包数据指令还指示第二较窄的源打包数据操作数,且其中映射包括将所述打包数据指令映射到经掩码的打包数据操作,所述经掩码的打包数据操作指示比第二较窄的源打包数据操作数宽且包括第二较窄的源打包数据操作数的第二较宽的源打包数据操作数。
14.如权利要求13所述的方法,其特征在于,接收包括接收打包数据指令,所述打包数据指令指示第一和第二较窄的源打包数据操作数中的至少一个非对应数据元素对上的操作,所述非对应数据元素不在对应的位位置中,且还包括执行将所述非对应数据元素对置于对应的位位置中的操作,以便由经掩码的打包数据操作对其进行操作。
15.如权利要求14所述的方法,其特征在于,执行将所述非对应数据元素对置于对应的位位置中的操作包括执行移位操作、混洗操作和置换操作之一。
16.如权利要求10所述的方法,其特征在于,接收包括接收不指示打包数据操作掩码的打包数据指令。
17.如权利要求10所述的方法,其特征在于,接收包括接收指示第二打包数据操作掩码的所述打包数据指令,所述第二打包数据操作掩码具有比所生成的打包数据操作掩码少的掩码元素。
18.如权利要求10所述的方法,其特征在于,所述第一较窄的源打包数据操作数重叠在寄存器中的第一较宽的源打包数据操作数上。
19.如权利要求10所述的方法,其特征在于,存储包括存储打包数据结果,其中与被掩码掉的掩码元素对应的每个结果数据元素的值不变,且其中与未被掩码的掩码元素对应的每个结果数据元素的值由与打包数据指令相关联的操作更新。
20.一种处理指令的系统,包括:
互连;
与所述互连耦合的处理器,所述处理器包括:
第一单元,用于将打包数据指令映射到经掩码的打包数据操作,所述打包数据指令至少指示第一较窄的源打包数据操作数和较窄的目的地操作数,所述经掩码的打包数据操作至少指示比所述第一较窄的源打包数据操作数宽且包括第一较窄的源打包数据操作数的第一较宽的源打包数据操作数,且指示比所述较窄的目的地操作数宽且包括所述较窄的目的地操作数的较宽的目的地操作数;以及
与第一单元耦合的集成电路,所述集成电路用于利用掩码执行经掩码的打包数据操作,所述掩码包括用于由经掩码的打包数据操作存储的打包数据结果的每个对应结果数据元素的掩码位,其中仅允许与由打包数据指令存储的数据元素对应的掩码位不被掩码掉;以及
与所述互连耦合的动态随机存取存储器(DRAM)。
21.如权利要求20所述的系统,其特征在于,所述集成电路还用于执行数据重排操作,以使所述第一较窄的源打包数据操作数的数据元素与所述打包数据结果的数据元素对齐。
CN201410122763.3A 2013-03-30 2014-03-28 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 Active CN104077107B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711135874.8A CN107918546B (zh) 2013-03-30 2014-03-28 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/854,089 2013-03-30
US13/854,089 US9477467B2 (en) 2013-03-30 2013-03-30 Processors, methods, and systems to implement partial register accesses with masked full register accesses

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201711135874.8A Division CN107918546B (zh) 2013-03-30 2014-03-28 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统

Publications (2)

Publication Number Publication Date
CN104077107A true CN104077107A (zh) 2014-10-01
CN104077107B CN104077107B (zh) 2017-12-22

Family

ID=50686951

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201711135874.8A Active CN107918546B (zh) 2013-03-30 2014-03-28 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN201410122763.3A Active CN104077107B (zh) 2013-03-30 2014-03-28 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201711135874.8A Active CN107918546B (zh) 2013-03-30 2014-03-28 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统

Country Status (6)

Country Link
US (2) US9477467B2 (zh)
JP (1) JP5829714B2 (zh)
KR (1) KR101597774B1 (zh)
CN (2) CN107918546B (zh)
DE (1) DE102014004564A1 (zh)
GB (1) GB2515862B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107592924A (zh) * 2015-06-11 2018-01-16 英特尔公司 用于对由处理器执行的指令进行优化的方法和装置
CN108027773A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 存储器访问指令顺序编码的生成和使用
CN108292225A (zh) * 2015-12-30 2018-07-17 英特尔公司 用于提高向量吞吐量的系统、方法和设备
CN108521817A (zh) * 2014-12-22 2018-09-11 英特尔公司 用于执行反离心操作的指令和逻辑
CN109196467A (zh) * 2016-03-31 2019-01-11 英特尔公司 将源封包数据划分为通路的处理器、方法、系统和指令

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI681300B (zh) * 2014-11-14 2020-01-01 美商凱為有限責任公司 在64位元資料路徑上實行128位元simd操作之方法、系統及電腦可讀取媒體
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US9779469B2 (en) 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
US10846087B2 (en) * 2016-12-30 2020-11-24 Intel Corporation Systems, apparatuses, and methods for broadcast arithmetic operations
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
GB2568230B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Processing in neural networks
JPWO2020066375A1 (ja) * 2018-09-25 2021-08-30 日本電気株式会社 情報処理装置、情報処理方法、プログラム
CN111443948B (zh) * 2020-03-30 2022-09-09 龙芯中科技术股份有限公司 指令执行方法、处理器和电子设备
US11494190B2 (en) 2021-03-31 2022-11-08 Arm Limited Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122725A (en) * 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US6334183B1 (en) * 1997-11-18 2001-12-25 Intrinsity, Inc. Method and apparatus for handling partial register accesses
CN1656444A (zh) * 2002-05-22 2005-08-17 皇家飞利浦电子股份有限公司 用于解码指令序列的方法和设备
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
US20120233443A1 (en) * 2001-10-29 2012-09-13 Julien Sebot Processor to execute shift right merge instructions
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
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN102841776A (zh) * 1994-12-02 2012-12-26 英特尔公司 可以对复合操作数进行压缩操作的微处理器

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092094A (en) * 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6442676B1 (en) * 1999-06-30 2002-08-27 Bull Hn Information Systems Inc. Processor with different width functional units ignoring extra bits of bus wider than instruction width
JP3857614B2 (ja) 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7251722B2 (en) * 2004-05-11 2007-07-31 Mistletoe Technologies, Inc. Semantic processor storage server architecture
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US20120254589A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
EP2739076B1 (en) * 2011-08-31 2016-08-03 Huawei Technologies Co., Ltd. Method, system and device for implementing multicast in shared network
CN106445469B (zh) * 2011-12-22 2019-03-08 英特尔公司 处理器、机器可读存储介质和计算机实现的系统
WO2013095521A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Instructions processors, methods, and systems to process blake secure hashing algorithm
CN104011668B (zh) * 2011-12-22 2017-03-22 英特尔公司 用于将源操作数映射到不同范围的系统、装置和方法
US9632777B2 (en) * 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9665368B2 (en) * 2012-09-28 2017-05-30 Intel Corporation Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US9189398B2 (en) * 2012-12-28 2015-11-17 Intel Corporation Apparatus and method for memory-mapped register caching
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9442731B2 (en) * 2014-03-13 2016-09-13 Intel Corporation Packed two source inter-element shift merge processors, methods, systems, and instructions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841776A (zh) * 1994-12-02 2012-12-26 英特尔公司 可以对复合操作数进行压缩操作的微处理器
US6334183B1 (en) * 1997-11-18 2001-12-25 Intrinsity, Inc. Method and apparatus for handling partial register accesses
US6122725A (en) * 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US20120233443A1 (en) * 2001-10-29 2012-09-13 Julien Sebot Processor to execute shift right merge instructions
CN1656444A (zh) * 2002-05-22 2005-08-17 皇家飞利浦电子股份有限公司 用于解码指令序列的方法和设备
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
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108521817A (zh) * 2014-12-22 2018-09-11 英特尔公司 用于执行反离心操作的指令和逻辑
CN107592924A (zh) * 2015-06-11 2018-01-16 英特尔公司 用于对由处理器执行的指令进行优化的方法和装置
CN107592924B (zh) * 2015-06-11 2022-03-22 英特尔公司 用于对由处理器执行的指令进行优化的方法和装置
CN108027773A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 存储器访问指令顺序编码的生成和使用
CN108027773B (zh) * 2015-09-19 2022-09-20 微软技术许可有限责任公司 存储器访问指令顺序编码的生成和使用
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
CN108292225A (zh) * 2015-12-30 2018-07-17 英特尔公司 用于提高向量吞吐量的系统、方法和设备
CN109196467A (zh) * 2016-03-31 2019-01-11 英特尔公司 将源封包数据划分为通路的处理器、方法、系统和指令
CN109196467B (zh) * 2016-03-31 2024-01-02 英特尔公司 将源封包数据划分为通路的处理器、方法、系统和指令

Also Published As

Publication number Publication date
US9477467B2 (en) 2016-10-25
GB2515862A (en) 2015-01-07
US20140297994A1 (en) 2014-10-02
JP2014199663A (ja) 2014-10-23
US9934032B2 (en) 2018-04-03
KR101597774B1 (ko) 2016-02-26
JP5829714B2 (ja) 2015-12-09
GB201405413D0 (en) 2014-05-07
CN107918546A (zh) 2018-04-17
CN104077107B (zh) 2017-12-22
DE102014004564A1 (de) 2014-10-02
CN107918546B (zh) 2022-02-22
KR20140118924A (ko) 2014-10-08
GB2515862B (en) 2016-11-02
US20170109164A1 (en) 2017-04-20

Similar Documents

Publication Publication Date Title
CN104077107A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
JP6238497B2 (ja) プロセッサ、方法、及びシステム
JP6025986B2 (ja) 装置、方法、およびシステム
CN104603745A (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
CN104049953A (zh) 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令
CN104603746A (zh) 由读和写掩码控制的向量移动指令
CN104025020A (zh) 用于执行掩码位压缩的系统、装置以及方法
JP6092904B2 (ja) プロセッサおよび方法
CN104025039A (zh) 打包数据操作掩码串接处理器、方法、系统及指令
CN104011663A (zh) 掩码寄存器上的广播操作
CN104040487A (zh) 用于合并掩码模式的指令
KR101966713B1 (ko) 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법
CN105247475A (zh) 紧缩数据元素断定处理器、方法、系统和指令
CN104081336A (zh) 用于检测向量寄存器内的相同元素的装置和方法
CN104011652A (zh) 打包选择处理器、方法、系统和指令
CN104011653A (zh) 打包数据操作掩码比较处理器、方法、系统及指令
CN104025067A (zh) 具有由向量冲突指令和置换指令共享的全连接互连的处理器
CN104919432A (zh) 用于将多个位向左移并将多个1拉入较低有效位的指令
CN105453030A (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN104903867A (zh) 用于执行冲突检测并将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置和方法
CN113885833A (zh) 用于经融合的乘加的系统、装置和方法
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
CN105264489A (zh) 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统
CN106030514A (zh) 采用到被屏蔽结果元素的传播将源元素存储到对应未屏蔽结果元素的处理器、方法、系统和指令
CN104025024A (zh) 打包数据操作掩码移位处理器、方法、系统及指令

Legal Events

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