CN101154154A - 用于执行选择操作的方法和装置 - Google Patents

用于执行选择操作的方法和装置 Download PDF

Info

Publication number
CN101154154A
CN101154154A CNA2007101701530A CN200710170153A CN101154154A CN 101154154 A CN101154154 A CN 101154154A CN A2007101701530 A CNA2007101701530 A CN A2007101701530A CN 200710170153 A CN200710170153 A CN 200710170153A CN 101154154 A CN101154154 A CN 101154154A
Authority
CN
China
Prior art keywords
data
operand
register
data element
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007101701530A
Other languages
English (en)
Inventor
R·佐哈
M·阿布达拉
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 CN201610615381.3A priority Critical patent/CN106155631A/zh
Publication of CN101154154A publication Critical patent/CN101154154A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Abstract

一种方法和装置,包括用于对紧缩或非紧缩数据执行选择操作的处理器指令。在一个实施例中,处理器连接到存储器。所述存储器已将第一紧缩数据存储在源操作数中并将第二紧缩数据存储在目标操作数中。如果源操作数的控制位被设置为“1”,则处理器选择第一紧缩数据并且将所述数据存储到目标操作数中。否则,处理器保持目标操作数中的数据。目标操作数的最终值被存储在存储器中。

Description

用于执行选择操作的方法和装置
技术领域
本发明涉及计算机系统,更具体地说,涉及用于执行选择操作的方法和装置。
背景技术
在典型的计算机系统中,处理器被实现为使用指令在由大量位(例如,64)所表示的值上进行操作以产生一个结果。例如,执行加法指令会将第一个64位值与第二个64位值加在一起,并且将结果存储为第三个64位值。多媒体应用(例如,以计算机支持的协作为目标的应用(CSC-具有混合媒体数据操作的远程电信会议集合)、2D/3D图形、图像处理、视频压缩/解压缩、识别算法和音频操作)要求大量的数据操作。数据可以由单个大值(例如,64位或128位)表示,或者可以替代地以少量位(例如,8或16或32位)来表示。例如,图形数据可以由8或16位表示,声音数据可以由8或16位表示,整数数据可以由8、16或32位表示,而浮点数据可以由32或64位表示。
为了改善多媒体应用(以及具有相同特性的其它应用)的效率,处理器可以提供紧缩数据格式。紧缩数据格式是其中通常被用于表示单个值的位被分为多个固定大小的数据元素的数据格式,其中每个数据元素表示一个分离值。例如,128位寄存器可以被分为四个32位元素,其中每个32位元素表示一个分离的32位值。以这种方式,这些处理器能够更有效地处理多媒体应用。
发明内容
根据本发明的一个方面,公开一种方法,包括:接收指令代码,所述指令代码的指令格式包括第一字段和第二字段,第一字段指示第一多位操作数,且第二字段指示第二多位操作数;以及当第一操作数中的一个或多个数据元素的符号位非0时,响应于与第一操作数相关联的符号位修改第二操作数。
根据本发明的另一方面,公开一种用于执行上述方法的装置,包括:执行单元;以及包括数据的机器可存取介质,当所述数据被所述执行单元存取时,使所述执行单元执行上述方法。
根据本发明的又一方面,公开一种装置,包括:第一输入,接收第一数据;第二输入,接收包括与第一数据相同位数的第二数据;电路,响应于第一处理器指令,基于控制位从第一操作数选择第一数据元素,其中所述控制位用于当所述控制位非0时选择第一数据元素。
根据本发明的再一方面,公开一种计算机系统,包括:可寻址存储器,用于存储数据;处理器,包括:体系结构可见的存储区域,用于存储控制位;解码器,用于解码指令,所述指令的第一字段用于指定N位的源操作数,且第二字段用于指定N位的目标操作数;和执行单元,响应于所述解码器解码所述指令,基于控制位从所述源操作数选择第一数据元素,其中所述控制位用于当所述控制位非0时选择第一数据元素。
附图说明
通过附图中图的例子对本发明进行说明,而并不是限制本发明。
图1a-1c示出根据本发明备选实施例的示例计算机系统。
图2a-2b示出根据本发明备选实施例的处理器的寄存器堆。
图3示出处理器执行来操作数据的过程的至少一个实施例的流程图。
图4示出根据本发明备选实施例的紧缩数据类型。
图5示出根据本发明至少一个实施例的寄存器内紧缩字节和寄存器内紧缩字数据表示。
图6示出根据本发明至少一个实施例的寄存器内紧缩双字和寄存器内紧缩四字数据表示。
图7是示出用于执行选择操作的过程实施例的流程图。
图8是示出用于执行立即选择操作的过程实施例的流程图。
图9a-9c示出用于执行立即选择操作的电路的各种实施例。
图10是示出用于执行可变选择操作的过程实施例的流程图。
图11a-11c示出用于执行可变选择操作的电路的各种实施例。
图12是示出处理器指令的操作代码格式的各种实施例的框图。
具体实施方式
在此公开的方法、系统和电路的实施例包括用于响应控制信号而在数据的多位上执行选择操作的处理器指令。包括在选择操作中的数据可以是紧缩或非紧缩的数据。对于至少一个实施例,处理器被连接到存储器。存储器已经在其中存储有第一数据和第二数据。所述处理器基于控制信号,响应于接收到一个指令,在第一数据和第二数据中的数据元素上执行选择操作,并且将结果存储在第二数据中。
本发明的这些和其它实施例可以依照以下示教而实现,并且明显的是,在以下示教中可以进行各种修改和变化,并没有背离本发明的较宽精神和范围。因此,说明书和附图应当被认为是说明性的,而不是限制意义,并且本发明仅依据权利要求书进行衡量。
计算机系统
图1a示出根据本发明一个实施例的示例计算机系统100。计算机系统100包括用于传递信息的互连101。互连101可以包括多点总线、一个或多个点到点互连或二者的任意组合,以及任意其它通信硬件和/或软件。
图1a示出了用于处理信息的处理器109,其与互连101连接。处理器109代表任意类型体系结构的中央处理单元,包括CISC或RISC类型体系结构。
计算机系统100还包括连接到互连101的用于存储信息和要被处理器109执行的指令的随机存取存储器(RAM)或其它动态存储设备(称作主存储器104)。在处理器109执行指令期间,主存储器104还可以用于存储临时变量或其它中间信息。
计算机系统100还包括连接到互连101的用于为处理器109存储静态信息和指令的只读存储器(ROM)106和/或其它静态存储设备。数据存储设备107连接到互连101用于存储信息和指令。
图1a还示出了处理器109包括执行单元130、寄存器堆150、高速缓存160、解码器165和内部互连170。当然,处理器109还包括对于理解本发明不需要的额外电路。
解码器165用于解码由处理器109接收的指令,并且执行单元130用于执行由处理器109接收的指令。除了识别通常在通用处理器中执行的指令之外,如这里所描述的,解码器165和执行单元130还识别用于执行条件复制操作(BLEND)操作的指令。解码器165和执行单元130识别用于对紧缩或非紧缩数据执行BLEND操作的指令。
执行单元130通过内部互连170连接到寄存器堆150。此外,内部互连170不需要必需是多点总线,在备选实施例中,可以是点到点互连和其它类型的通信路径。
寄存器堆150表示处理器109的用于存储信息包括数据的存储区域。要理解的是,本发明的一个方面是所描述的用于对紧缩或非紧缩数据执行BLEND操作的指令实施例。根据本发明的该方面,用于存储数据的存储区域不是关键的。然而,寄存器堆150的实施例在后面参考图2a-2b进行描述。
执行单元130连接到高速缓存160和解码器165。高速缓存160被用于高速缓存数据和/或例如来自主存储器104的控制信号。解码器165用于将处理器109所接收的指令解码为控制信号和/或微代码进入点。这些控制信号和/或微代码进入点可以从解码器165转发至执行单元130。执行单元130响应于这些控制信号和/或微代码进入点而执行适当的操作。
可以使用任意数量的不同机制(例如,查找表、硬件实现、PLA等)来实现解码器165。由此,尽管在此可以用一系列如果/则(if/then)语句来表示由解码器165和执行单元130进行的各种指令执行,但是要理解的是,指令的执行不需要串行处理这些如果/则语句。而是,用于逻辑执行该如果/则处理的任何机制都被认为处于本发明的范围之内。
图1a额外地示出了能够连接到计算机系统100的数据存储设备107(例如,磁盘、光盘和/或其它机器可读介质)。此外,数据存储设备107显示为包括用于由处理器109执行的代码195。代码195能够包括一个或多个BLEND指令142的实施例,并且能够被写入,以使处理器109为了任意数量的目的(例如,运动视频压缩/解压缩、图像滤波、音频信号压缩、滤波或合成、调制/解调等)而用BLEND指令142来执行位测试。
计算机系统100还能够经由互连101连接到用于向计算机用户显示信息的显示设备121。显示设备121能够包括帧缓冲器、专用图形再现设备、液晶显示器(LCD)和/或平板显示器。
包括字母数字和其它键的输入设备122可以连接到互连101,用于向处理器109传递信息和命令选择。另一种类型的用户输入设备是光标控制123,例如鼠标、跟踪球、笔、触摸屏或用于向处理器109传递方向信息和命令选择并用于控制显示设备121上光标移动的光标方向键。该输入设备通常在两个轴即第一轴(例如,x)和第二轴(例如,y)具有两种自由度,其允许该设备在平面中指定位置。然而,本发明不应当局限于仅具有两种自由度的输入设备。
可以连接到互连101的另一种设备是硬复制设备124,其可以被用于打印指令、数据或诸如纸、胶片或相似类型介质的介质上的其它信息。此外,计算机系统100能够连接到用于声音记录和/或重放的设备125,例如连接到麦克风的用于记录信息的音频数字转换器。此外,设备125可以包括连接到数模(D/A)转换器的用于重放数字化声音的扬声器。
计算机系统100能够是计算机网络(例如,LAN)中的终端。那么计算机系统100可以是计算机网络的计算机子系统。计算机系统100任选地包括视频数字化设备126和/或通信设备190(例如,串行通信芯片、无线接口、以太网芯片或调制解调器,其提供与外部设备或网络的通信)。视频数字化设备126能够被用于捕捉视频图像,该视频图像能够被传送至计算机网络上的其它设备。
对于至少一个实施例,处理器109支持与加利福尼亚圣塔克拉拉的Intel公司制造的现有处理器(例如,比如IntelPentium处理器、IntelPentiumPro处理器、IntelPentiumII处理器、IntelPentiumIII处理器、IntelPentium4处理器、IntelItanium处理器、IntelItanium2处理器或IntelCoreTM Duo处理器)所使用的指令集相兼容的指令集。结果,除了本发明的操作之外,处理器109还能够支持现有的处理器操作。处理器109还可以适于以一种或多种处理技术来制造,并且通过被足够详细地表示在机器可读介质上可能适于方便所述制造。尽管本发明在下面结合了基于x86的指令集进行描述,但是备选实施例能够将本发明与其它指令集相结合。例如,本发明能够结合于使用不同于基于x86的指令集的指令集的64位处理器。
图1b示出了实现本发明原理的数据处理系统102的备选实施例。数据处理系统102的一个实施例是采用Intel XScaleTM技术的应用处理器。本领域技术人员将容易理解的是,在此描述的实施例能够采用备选处理系统,并没有背离本发明的范围。
计算机系统102包括能够执行BLEND操作的处理核心110。对于一个实施例,处理核心110代表任意类型体系结构的处理单元,包括但不限于CISC、RISC或VLIW类型体系结构。处理核心110还可适于以一种或多种处理技术进行制造,并且通过将其足够详细地表示在机器可读介质上可能适于方便所述制造。
处理核心110包括执行单元130、一组寄存器堆150和解码器165。处理核心110还包括对于理解本发明不需要的额外电路(未示出)。
执行单元130被用于执行由处理核心110所接收的指令。除了识别典型的处理器指令之外,执行单元130还识别用于对紧缩和非紧缩数据格式执行BLEND操作的指令。由解码器165和执行单元130所识别的指令集可以包括一个或多个用于BLEND操作的指令,并且还可以包括其它紧缩指令。
执行单元130通过内部总线(再者,其可以是包括多点总线、点到点互连等的任意类型的通信路径)连接到寄存器堆150。寄存器堆150代表处理核心110用于存储信息包括数据的存储区域。如之前所述,要理解的是,用于存储数据的存储区域不是关键的。执行单元130连接到解码器165。解码器165被用于将处理核心110所接收的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点。这些控制信号和/或微代码进入点可以被转发至执行单元130。响应于接收到控制信号和/或微代码进入点,执行单元130可执行适当的操作。例如,对于至少一个实施例,执行单元130可执行在此所述的逻辑比较,并且还可设置如在此所述的状态标志或到指定代码位置的分支,或二者。
处理核心110与总线214连接,用于与各种其它系统设备进行通信,例如,所述系统设备可以包括同步动态随机存取存储器(SDRAM)控制器271、静态随机存取存储器(SRAM)控制器272、突发闪存接口273、个人计算机存储卡国际协会(PCMCIA)/小型闪存(CF)卡控制器274、液晶显示器(LCD)控制器275、直接存储器存取(DMA)控制器276和备选总线主接口277,但并不局限于此。
对于至少一个实施例,数据处理系统102还可以包括用于经由I/O总线295与各种I/O设备进行通信的I/O桥290。例如,这样的I/O设备可以包括例如通用异步接收器/发送器(UART)291、通用串行总线(USB)292、蓝牙无线UART293和I/O扩展接口294,但并不局限于此。如上述的其它总线,I/O总线295可以是包括多点总线、点到点互连等的任意类型的通信路径。
数据处理系统102的至少一个实施例为移动应用提供网络和/或无线通信,并且处理核心110能够对紧缩和非紧缩数据执行BLEND操作。处理核心110可以用各种音频、视频、成像和通信算法进行编程,包括离散变换、滤波器或卷积;例如色空间变换、视频编码运动估计或视频解码运动补偿的压缩/解压缩技术;以及例如脉冲编码调制(PCM)的调制/解调(MODEM)功能。
图1c示出了能够对紧缩和非紧缩数据执行BLEND操作的数据处理系统103的备选实施例。依据一个备选实施例,数据处理系统103可以包括包含主处理器224以及一个或多个协处理器226的芯片包310。附加的协处理器226的可选特性在图1c中由虚线表示。例如,一个或多个协处理器226可以是例如能够执行SIMD指令的图形协处理器。
图1c示出了数据处理系统103还可以包括高速缓存存储器278和输入/输出系统295,二者均连接到芯片包310。输入/输出系统295可以可选择地连接到无线接口296。
协处理器226能够执行通用计算操作,并且还能够执行SIMD操作。对于至少一个实施例,协处理器226能够对紧缩和非紧缩数据执行BLEND操作。
对于至少一个实施例,协处理器226包括执行单元130和寄存器堆209。主处理器224的至少一个实施例包括对指令集的指令进行识别和解码的解码器165,该指令集包括由执行单元130执行的BLEND指令。对于备选实施例,协处理器226还包括对包括BLEND指令的指令集的指令进行解码的至少一部分解码器166。数据处理系统103还包括对于理解本发明不需要的额外电路(未示出)。
在运行中,主处理器224执行控制包括与高速缓存存储器278和输入/输出系统295的交互的通用类型的数据处理操作的数据处理指令流。嵌入在数据处理指令流中的是协处理器指令。主处理器224的解码器165将这些协处理器指令识别为应当由所附的协处理器226执行的类型。相应地,主处理器224在任何附加的协处理器从其接收指令的协处理器互连236上发出这些协处理器指令(或表示协处理器指令的控制信号)。对于图1c中所示的单个协处理器实施例,协处理器226接受并执行所接收的供其使用的任何协处理器指令。协处理器互连可以是包括多点总线、点到点互连等的任意类型的通信路径。
数据可以通过无线接口296接收,以由协处理器指令进行处理。对于一个示例,语音通信可以数字信号形式被接收,这种形式可以由协处理器指令处理以再生成表示语音通信的数字音频采样。对于另一个示例,压缩的音频和/或视频可以数字位流形式被接收,这种形式可以由协处理器指令处理以再生成数字音频采样和/或运动视频帧。
对于至少一个备选实施例,主处理器224和协处理器226可以被集成到单个处理核心中,所述处理核心包括执行单元130、寄存器堆209和解码器165以识别包括由执行单元130执行的BLEND指令的指令集的指令。
图2a示出根据本发明一个实施例的处理器的寄存器堆。寄存器堆150可以用于存储信息,包括控制/状态信息、整数数据、浮点数据和紧缩数据。本领域技术人员将认识到,前述的信息和数据列表不是详尽的、全包含在内的列表。
对于图2a所示的实施例,寄存器堆150包括整数寄存器201、寄存器209、状态寄存器208和指令指针寄存器211。状态寄存器208指示处理器109的状态,并且可以包括各种状态寄存器。指令指针寄存器211存储下一个要被执行的指令的地址。整数寄存器201、寄存器209、状态寄存器208和指令指针寄存器211均连接到内部互连170。附加的寄存器也可以连接到内部互连170。内部互连170可以是多点总线,但并非必须如此。作为替代,内部互连170还可以是任意其它类型的通信路径,包括点到点互连。
对于一个实施例,寄存器209可以被用于紧缩数据和浮点数据二者。在一个这样的实施例中,在任意给定时刻,处理器109将寄存器209视为堆栈参考的浮点寄存器或非堆栈参考的紧缩数据寄存器。在该实施例中,包括一种机制以允许处理器109在操作在作为堆栈参考的浮点寄存器和非堆栈参考的紧缩数据寄存器的寄存器209上之间进行切换。在另一个这样的实施例中,处理器109可以同时操作在作为非堆栈参考的浮点和紧缩数据寄存器的寄存器209上。作为另一个示例,在另一个实施例中,这些相同的寄存器可以用于存储整数数据。
当然,备选实施例可以实现包含更多或更少的寄存器集合。例如,一个备选实施例可包括一个单独的浮点寄存器集合用于存储浮点数据。作为另一个示例,备选实施例可以包括第一寄存器集合,其中每个寄存器用于存储控制/状态信息,以及第二寄存器集合,其中每个寄存器能够存储整数、浮点和紧缩数据。为了清楚起见,实施例的寄存器不应局限于是指特定类型的电路。而是,实施例的寄存器仅需要能够存储和提供数据,并且执行在此所描述的功能。
各种寄存器集合(例如,整数寄存器201、寄存器209)可以被实现为包括不同数量的寄存器和/或不同大小的寄存器。例如,在一个实施例中,整数寄存器201被实现为存储32位,而寄存器209被实现为存储80位(所有的80位被用于存储浮点数据,而仅有64被用于紧缩数据)。此外,寄存器209可以包含8个寄存器,R0212a到R7212h。R1212b、R2212c和R3212d是寄存器209中的个别寄存器的示例。寄存器209中寄存器的32位能够被移至整数寄存器201中的整数寄存器。相似地,整数寄存器中的值能够被移至寄存器209中寄存器的32位。在另一个实施例中,整数寄存器201各包含64位,并且数据的64位可以在整数寄存器201和寄存器209之间移动。在另一个备选实施例中,寄存器209各包含64位,并且寄存器209包含16个寄存器。在另一个备选实施例中,寄存器209包含32个寄存器。
图2b示出了根据本发明一个备选实施例的处理器的寄存器堆。寄存器堆150可以被用于存储信息,包括控制/状态信息、整数数据、浮点数据和紧缩数据。在图2b所示的实施例中,寄存器堆150包括整数寄存器201、寄存器209、状态寄存器208、扩展寄存器210和指令指针寄存器211。状态寄存器208、指令指针寄存器211、整数寄存器201、寄存器209全都连接到内部互连170。此外,扩展寄存器210也连接到内部互连170。内部互连170可以是多点总线,但并非必须如此。作为替代,内部互连170还可以是任意其它类型的通信路径,包括点到点互连。
对于至少一个实施例,扩展寄存器210被用于紧缩的整数数据和紧缩的浮点数据。对于备选实施例,扩展寄存器210可以被用于标量数据、紧缩的布尔数据、紧缩的整数数据和/或紧缩的浮点数据。当然,备选实施例可以被实现为包含更多或更少的寄存器集合、每个集合中更多或更少的寄存器或者每个寄存器中更多或更少的数据存储位,并不背离本发明的较宽范围。
对于至少一个实施例,整数寄存器201被实现为存储32位,寄存器209被实现为存储80位(所有的80位被用于存储浮点数据,而仅有64被用于紧缩数据),并且扩展寄存器210被实现为存储128位。此外,扩展寄存器210可以包括8个寄存器,XR0213a到XR7213h。XR0213a、XR1213b和XR2213c是寄存器210中个别寄存器的示例。对于另一个实施例,整数寄存器201各包含64位,扩展寄存器210各包含64位,并且扩展寄存器210包含16个寄存器。对于一个实施例,扩展寄存器210的两个寄存器可以成对操作。对于另一个备选实施例,扩展寄存器210包含32个寄存器。
图3示出了根据本发明一个实施例用于操作数据的过程300的一个实施例的流程图。也就是说,图3示出了在对紧缩数据执行BLEND操作、对非紧缩数据执行BLEND操作或执行一些其它操作时例如处理器109(例如,见图1a)所进行的过程。在此所公开的过程300和其它过程由处理块执行,所述处理块可以包括专用硬件或者可由通用机器或专用机器或这二者的组合执行的软件或固件操作代码。
图3示出了方法的处理在“开始”处开始,并且进行至处理块301。在处理块301,解码器165(例如,见图1a)从高速缓存160(例如,见图1a)或互连101(例如,见图1a)接收控制信号。对于至少一个实施例,在块301所接收的控制信号可以是通常被称作软件“指令”的控制信号类型。解码器165对控制信号进行解码以确定将要执行的操作。处理从处理块301进行至处理块302。
在处理块302,解码器165存取寄存器堆150(图1a)或存储器(例如,见图1a的主存储器104或高速缓存存储器160)中的位置。寄存器堆150中的寄存器或存储器中的存储器位置根据控制信号中所指定的寄存器地址进行存取。例如,用于操作的控制信号能够包括SRC1、SRC2和DEST寄存器地址。SRC1是第一源寄存器的地址。SRC2是第二源寄存器的地址。在一些情形下,由于并非所有操作都需要两个源地址,所以SRC2地址是可选的。如果操作不需要SRC2地址,则仅使用SRC1地址。DEST是存储结果数据的目标寄存器的地址。对于至少一个实施例,在由解码器165所识别的至少一个控制信号中,SRC1或SRC2也可以被用作DEST。
存储在对应寄存器中的数据分别被称作Source1、Source2和Result。在一个实施例中,这些数据中的每一个的长度均可以是64位。对于备选实施例,这些数据中的一个或多个可以是其它长度,例如长度为128位。
对于本发明的另一个实施例,SRC1、SRC2和DEST中的任意一个或全部能够定义处理器109(图1a)或处理核心110(图1b)的可寻址存储空间中的存储器位置。例如,SRC1可以标识主存储器104中的存储器位置,而SRC2标识整数寄存器201中的第一寄存器,并且DEST标识寄存器209中的第二寄存器。为了在此简要说明,本发明将结合存取寄存器堆150进行描述。然而,本领域技术人员将认识到,作为替代,这些所描述的存取也可以对存储器进行。
处理从块302进行至处理块303。在处理块303,执行单元130(例如,见图1a)能够对所存取的数据执行操作。
处理从处理块303进行至处理块304。在处理块304,根据控制信号的要求,将结果存储回寄存器堆150或存储器。然后,处理在“停止”处结束。
数据存储格式
图4示出了根据本发明一个实施例的紧缩数据类型。示出了四个紧缩和一个非紧缩数据格式,包括紧缩字节421、紧缩半倍422、紧缩单倍423、紧缩双倍424和非紧缩双四字412。
对于至少一个实施例,紧缩字节格式421为包含16个数据元素(B0-B15)的128位长。每个数据元素(B0-B15)为1字节(例如,8位)长度。
对于至少一个实施例,紧缩半倍格式422为包含8个数据元素(Half0至Half7)的128位长。每个数据元素(Half0至Half7)可以保存16位信息。作为选择,这些16位数据元素中的每一个可以被称作“半字”或“短字”,或者简单地称作“字”。
对于至少一个实施例,紧缩单倍格式423可以为128位长,且可以保存4个423数据元素(Single0至Single3)。数据元素(Single0至Single3)中的每一个可以保存32位信息。作为选择,32位数据元素中的每一个可以被称作“dword”或“双字”。例如,数据元素(Single0至Single3)中的每一个可以表示32位单精度浮点值,因而称作“紧缩单倍”格式。
对于至少一个实施例,紧缩双倍格式424可以为128位长,并且可以保存2个数据元素。紧缩双倍格式424的每个数据元素(Double0,Double1)可以保存64位信息。作为选择,64位数据元素中的每一个可以被称作“qword”或“四字”。例如,数据元素(Double0,Double1)中的每一个可以表示64位双精度浮点值,因而称作“紧缩双倍”格式。
非紧缩双四字格式412可以保存高达128位的数据。所述数据不需要必需为紧缩数据。例如,对于至少一个实施例,非紧缩双四字格式412的128位信息可以表示单个标量数据,例如字符、整数、浮点值或二进制位屏蔽值。作为选择,非紧缩双四字格式412的128位可以表示不相关位的集合(例如每一位或位组表示不同标志的状态寄存器值)等。
对于本发明的至少一个实施例,紧缩单倍423和紧缩双倍424格式的数据元素可以是上面指示的紧缩浮点数据元素。在本发明的备选实施例中,紧缩单倍423和紧缩双倍424格式的数据元素可以是紧缩整数、紧缩布尔或紧缩浮点数据元素。对于本发明的另一个备选实施例,紧缩字节421、紧缩半倍422、紧缩单倍423和紧缩双倍424格式的数据元素可以是紧缩整数或紧缩布尔数据元素。对于本发明的备选实施例,并非全部的紧缩字节421、紧缩半倍422、紧缩单倍423和紧缩双倍424数据格式都可以被允许或支持。
图5和6示出了根据本发明至少一个实施例的寄存器内紧缩数据存储表示。
图5分别示出了无符号和有符号的紧缩字节寄存器内格式510和511。例如,无符号紧缩字节寄存器内表示510示出了在128位扩展寄存器XR0213a到XR7213h(例如,见图2b)之一中无符号紧缩字节数据的存储。每个16字节数据元素的信息存储在字节0的位7至位0、字节1的位15至位8、字节2的位23至位16、字节3的位31至位24、字节4的位39至位32、字节5的位47至位40、字节6的位55至位48、字节7的位63至位56、字节8的位71至位64、字节9的位79至位72、字节10的位87至位80、字节11的位95至位88、字节12的位103至位96、字节13的位111至位104、字节14的位119至位112和字节15的位127至位120。
因此,在寄存器中所有可用位都被使用。这样的存储配置增加了处理器的存储效率。而且,用所存取的16个数据元素,现在能够同时在16个数据元素上执行一个操作。
有符号紧缩字节寄存器内表示511示出了有符号紧缩字节的存储。注意,每字节数据元素的第8位(MSB)为符号指示(“s”)。
图5还分别示出了无符号和有符号紧缩字寄存器内表示512和513。
无符号紧缩字寄存器内表示512示出了扩展寄存器210如何存储8个字(每个16位)数据元素。字0存储在寄存器的位15到位0。字1存储在寄存器的位31到位16。字2存储在寄存器的位47到位32。字3存储在寄存器的位63到位48。字4存储在寄存器的位79到位64。字5存储在寄存器的位95到位80。字6存储在寄存器的位111到位96。字7存储在寄存器的位127到位112。
有符号紧缩字寄存器内表示513与无符号紧缩字寄存器内表示512相似。注意,符号位(“s”)存储在每个字数据元素的第16位(MSB)。
图6分别示出了无符号和有符号紧缩双字寄存器内格式514和515。无符号紧缩双字寄存器内表示514示出了扩展寄存器210如何存储4个双字(每个32位)数据元素。双字0存储在寄存器的位31至位0。双字1存储在寄存器的位63至位32。双字2存储在寄存器的位95至位64。双字3存储在寄存器的位127至位96。
有符号紧缩双字寄存器内表示515与无符号紧缩双字寄存器内表示514相似。注意,符号位(“s”)是每个双字数据元素的第32位(MSB)。
图6还分别示出了无符号和有符号紧缩四字寄存器内格式516和517。无符号紧缩四字寄存器内表示516示出了扩展寄存器210如何存储2个四字(每个64位)数据元素。四字0存储在寄存器的位63至位0。四字1存储在寄存器的位127至位64。
有符号紧缩四字寄存器内表示517与无符号紧缩四字寄存器内表示516相似。注意,符号位(“s”)是每个四字数据元素的第64位(MSB)。
BLEND操作
图7是根据本发明至少一个实施例用于执行BLEND操作的一般方法700的流程图。在此所公开的过程700和其它过程由处理块执行,所述处理块可以包括专用硬件或者可由通用机器或专用机器或这二者的组合执行的软件或固件操作代码。
图7示出了所述方法在“开始”处开始,并且进行至处理块705。在处理块705,解码器165对处理器109所接收的控制信号进行解码。这样,解码器165对BLEND指令的操作代码进行解码。处理接着从处理块705进行至处理块710。
在处理块710,给定在指令中编码的SRC1和DEST地址,解码器165经由内部总线170存取寄存器堆150中的寄存器209。对于至少一个实施例,在指令中编码的地址各指示一个扩展寄存器(例如,见图2b的扩展寄存器210)。对于这样的实施例,在块710存取所指示的扩展寄存器210,以便向执行单元130提供在SRC1寄存器(Sourcel)中存储的数据以及在DEST寄存器(Dest)中存储的数据。对于至少一个实施例,扩展寄存器210经由内部总线170向执行单元130传递数据。
处理从处理块710进行至处理块715。在处理块715,解码器165使执行单元130能够执行指令。对于至少一个实施例,通过向执行单元发送一个或多个控制信号来指示所希望的操作(BLEND),而执行这种使能715。
处理从处理块715进行至处理块720。在处理块720,所希望的操作获取在指令中存储的数据。
处理从处理块720进行至处理块725。在处理块725,处理器确定该数据元素的控制位是否被设置为“1”。所述数据元素可以基于数据存储格式而变化。如图4所示,有各种紧缩数据类型。
对于至少一个实施例,紧缩字节格式421为包含16个数据元素(B0-B15)的128位长度。每个数据元素(B0-B15)为1字节(例如,8位)长度。
对于至少一个实施例,紧缩半倍格式422为包含8个数据元素(Half0至Half7)的128位长度。每个数据元素(Half0至Half7)可以保存16位信息。作为选择,这些16位数据元素中的每一个可以被称作“半字”或“短字”,或者简单地被称作“字”。
对于至少一个实施例,紧缩单倍格式423可以为128位长,且可以保存4个423数据元素(Single0至Single3)。数据元素(Single0至Single3)中的每一个可以保存32位信息。作为选择,32位数据元素中的每一个可以被称作“dword”或“双字”。例如,数据元素(Single0至Single3)中的每一个可以表示32位单精度浮点值,因而称作“紧缩单倍”格式。
对于至少一个实施例,紧缩双倍格式424可以为128位长,并且可以保存2个数据元素。紧缩双倍格式424的每个数据元素(Double0,Double1)可以保存64位信息。作为选择,64位数据元素中的每一个可以被称作“qword”或“四字”。例如,数据元素(Double0,Double1)中的每一个可以表示64位双精度浮点值,因而称作“紧缩双倍”格式。
对于本发明的至少一个实施例,紧缩423和紧缩双倍424格式的数据元素可以是上面指示的紧缩浮点数据元素。在本发明的备选实施例中,紧缩单倍423和紧缩双倍424格式的数据元素可以是紧缩的整数、紧缩的布尔或紧缩的浮点数据元素。
对于本发明的至少一个实施例,控制位可以指的是数据元素的MSB。MSB还可以被称为符号指示或符号位。例如,每字节数据元素的第8位(MSB)是符号指示;每个字数据元素的第16位(MSB)是符号位;每个双字数据元素的第32位(MSB)是符号位;并且每个四字数据元素的第64位(MSB)是符号位。
如果Source1数据元素的控制位是“1”,则处理进行至处理块730。在处理块730,多路复用器选择控制位为“1”的Source1数据元素。多路复用器的数量取决于指令的粒度。SRC1中的数据元素被复制到DEST。处理进行至处理块735。在块735,存储器将所选择的数据元素存储至DEST寄存器。一旦存储了,则所述处理结束。
如果控制位是“0”,则处理结束。DEST中的数据元素保持原样,并且不被复制。
立即BLEND操作
图8示出了图7所示一般方法700的立即选择操作800过程的至少一个实施例的流程图。对于图8所示的具体实施例800,立即BLEND操作在128位长的Source1和Dest数据值上执行,且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员会认识到,图8所示的操作还能够对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
立即BLEND指令使用位屏蔽而不是字节、字或双字屏蔽。通过使用位屏蔽,这考虑到小的立即操作数(而不是64位或128位),从而可以发生更小的代码大小和更有效的解码。
方法800的处理块805至820的操作实质上与以上结合图7所示的方法700所描述的处理块705至720的操作相同。在块815解码器165使执行单元130能够执行指令时,所述指令是用于选择Source1和Dest值的相应数据元素的BLEND指令。
处理从处理块820进行至处理块825。在处理块825,执行以下内容。
对于立即BLEND指令,助记术如下:BLEND xmm1,xmm2/ml28,imm8。指令取3个操作数。第一操作数可以是源操作数,第二操作数可以是目标操作数,并且第三操作数可以是立即位。立即BLEND指令基于位屏蔽从Source1(xmm1)和Dest(xmm2)中选择值。位屏蔽可以是存储在数据元素立即字段中的位。立即位(Ib[])可以被用于控制目的,并且在指令内进行编码,并被用作控制位。
处理从处理块825进行至处理块830。在处理块830,如果Source1的立即位中的位屏蔽是“1”,则来自Source1的输入被多路复用器选择。如之前所提到的,多路复用器的数量取决于指令的粒度。处理接着进行至处理块835。在处理块835,所选择的输入被存储在最终Dest。这样,如果Source1的立即位是“1”,则该数据值被存储在最终Dest。
如果Source1的立即位中的位屏蔽是“0”,则处理从处理块825进行至“停止”,则Dest中的值没有变化。Source1数据值未存储在Dest中。
由于立即BLEND指令使用立即操作数,其允许使用静态屏蔽模式的图形应用被编码,而无需模式数据的任何加载。例如,在像Powerpoint之类的图形应用中的模式填充,或纹理映射,或水面上的阳光闪烁或其它动画效果。
立即BLEND指令还提供结果的快速紧缩,其中各成分必须被区别对待,并且模式是事先已知的。例如,复数或红-绿-蓝-α像素格式。
有利地,由于立即BLEND指令不需要加载操作或比较操作来设置屏蔽,所以指令可以两倍速度运行。
图9a示出了用于图8所示的立即选择操作800的过程的至少一个具体实施例的电路图。对于图9a所示的具体实施例,指令是BLEND紧缩双精度浮点值(BLENDPD)。BLENDPD操作在128位长度的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将认识到,图9a所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
现在参考图9a,对于BLENDPD操作,根据立即操作数915a中的位,来自例如xmm1 905a的源操作数的双精度浮点值可以被有条件地写入例如xmm2 910a的目标操作数。如之前所提及的,立即位确定目标操作数中的对应双精度浮点值是否从源操作数选择和/或复制。如果屏蔽中的立即位对应于一个字是“1”,则双精度浮点值被选择和/或复制,否则目标中的值保持不变。
由于BLENDPD是紧缩双精度浮点元素类型,所以其可以为28位长并且可以为每个xmm寄存器保存两个数据元素。例如,源操作数xmm1寄存器可以保存数据元素920a和925a,而目标操作数xmm2寄存器可以保存数据元素930a和935a。紧缩双倍格式424的每个数据元素可以保存64位信息。该实例的立即位是每个数据元素的Ib[]915a。基于xmm1寄存器905a中每个数据元素的立即位915a,多路复用器940a选择目标值是否从xmm1寄存器905a进行复制。
参考图9a,如果操作如下:BLENDPD xmm1,xmm2,01b。该操作表示将数据元素从立即位为“1”的源操作数放到目标寄存器中。由于Ib[0]915a包含位“1”,所以数据元素925a被MUX940a选择并且存储在目标寄存器910a中。由于Ib[1]915a包含位“0”,所以数据元素930a在目标寄存器910a中保持原样。一旦操作完成,最终目标寄存器910a就包含数据元素930a和925a。该值现在可以被存储在存储器中。
图9b示出了用于图8所示的立即选择操作800的过程的至少一个具体实施例的电路图。对于图9b所示的具体实施例,指令是BLEND紧缩单精度浮点值(BLENDPS)。BLENDPS操作在128位长度的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将认识到,图9b所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
现在参考图9b,对于BLENDPS操作,基于立即操作数915b中的位,来自诸如xmm1 905b的源操作数的单精度浮点值可以被有条件地写入例如xmm2 910b的目标操作数。如之前所提及的,立即位确定目标操作数中的对应单精度浮点值是否从源操作数选择和/或复制。如果屏蔽中的立即位对应于一个字是“1”,则单精度浮点值被MUX940b选择和/或复制,否则目标中的值保持不变。
由于BLENDPS是紧缩单精度浮点元素类型,所以其可以为28位长并且可以为每个xmm寄存器保存4个423数据元素。例如,源操作数xmm1寄存器可以保存数据元素920b、925b、926b和927b。目标操作数xmm2寄存器可以保存数据元素930b、935b、936b和937b。紧缩单倍格式423的每个数据元素可以保存32位信息。该实例的立即位是每个数据元素的Ib[]915b。基于xmm1寄存器905b中每个数据元素的立即位915b,多路复用器940b选择目标值是否从xmm1寄存器905b进行复制。
参考图9b,如果操作如下:BLENDPS xmm1,xmm2,0101b。该操作表示将数据元素从立即位为“1”的源操作数放到目标寄存器中。由于Ib[0]915b包含位“1”,所以数据元素927b被选择并且存储在目标寄存器910b中。由于Ib[1]915b包含位“0”,所以数据元素936b在目标寄存器910b中保持原样。Ib[2]915b包含位“1”,数据元素925b被选择并且存储在目标寄存器910b中。最后,Ib[3]包含位“0”,数据元素930b在目标寄存器910b中保持原样。一旦操作完成,最终目标寄存器910b就包含数据元素930b、925b、936b和927b。该值现在可被存储在存储器中。
图9c示出了用于图8所示的立即选择操作800的过程的至少一个具体实施例的电路图。对于图9c所示的具体实施例,指令是BLEND紧缩字(PBLENDDW)。PBLENDDW操作在128位长度的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将会认识到,图9c所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
现在参考图9c,对于PBLENDDW操作,基于立即操作数915c中的位,来自诸如xmm1 905c的源操作数的字值可以被有条件地写入例如xmm2 910c的目标操作数。如之前所提及的,立即位确定目标操作数中的对应字值是否从源操作数被多路复用器选择。如果屏蔽中的立即位对应于一个字是“1”,则字值被选择和/或复制,否则目标中的值保持不变。
由于PBLENDDW是紧缩字元素类型,所以其可以为28位长并且可以为每个xmm寄存器保存8个数据元素。例如,源操作数xmm1寄存器可以保存数据元素920c、925c、926c、927c、928c、929c、921c和922c。目标操作数xmm2寄存器可以保存数据元素930c、935c、936c、937c、938c、939c、931c和932c。紧缩双倍格式422的每个数据元素可以保存16位信息。该实例的立即位是每个数据元素的Ib[]915c。基于xmm1寄存器905c中每个数据元素的立即位915c,多路复用器940c选择目标值是否从xmm1寄存器905c进行复制。
参考图9c,如果操作如下:PBLENDDW xmm1,xmm2,00001111b。该操作表示将数据元素从立即位为“1”的源操作数放到目标寄存器中。由于Ib[0]915c包含位“1”,所以数据元素922c被MUX940c选择并且存储在目标寄存器910c中。Ib[1]915c包含位“1”,数据元素921c被MUX940c选择并且存储在目标寄存器910c中。由于Ib[2]915c包含位“1”,所以数据元素929c被MUX940c选择并且存储在目标寄存器910c中。Ib[3]915c包含位“1”,数据元素928c被MUX940c选择并且存储在目标寄存器910c中。由于Ib[4]915c包含位“0”,所以数据元素937c在目标寄存器910c中保持原样。Ib[5]915c包含位“0”,数据元素936c在目标寄存器910c中保持原样。由于Ib[6]915c包含位“0”,所以数据元素935c在目标寄存器910c中保持原样。由于Ib[7]915c包含位“0”,所以数据元素930c在目标寄存器910c中保持原样。一旦操作完成,最终目标寄存器910c就包含数据元素930c、935c、936c、937c、928c、929c、921c和922c。该值现在可以被存储在存储器中。
可变BLEND操作
图10示出了图7所示的一般方法700的立即选择操作1000的过程的至少一个实施例的流程图。对于图10所示的具体实施例1000,可变BLEND操作在128位长的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将认识到,图10所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。此外,可变BLEND指令对每个数据元素使用符号位,或最高有效位(MSB)。
方法1000的处理块1005至1020的操作实质上与以上结合图7所示方法700所描述的处理块705至720的操作相同。当在块1015解码器165使执行单元130能够执行指令时,所述指令是用于选择Source1和Dest值的相应数据元素的BLEND指令。
处理从处理块1020进行至处理块1025。在处理块1025,执行以下内容。
对于可变BLEND指令,助记术如下:BLEND xmm1,xmm2/ml28,<XMM0>。所述指令取3个操作数。第一操作数可以是源操作数,第二操作数可以是目标操作数,并且第三操作数可以是控制寄存器。可变BLEND指令基于隐式寄存器xmm0中的最高有效位从Source1(xmm1)和Dest(xmm2)中选择值。控制来源于每个字段的MSB。字段宽度对应于指令类型的字段。
处理从处理块1025进行至处理块1030。在处理块1030,如果Source1的xmm0寄存器中的MSB是“1”,则来自Source1的输入被多路复用器选择。如之前所提到的,多路复用器的数量取决于指令的粒度。处理接着进行至处理块1035。在处理块1035,所选择的输入被存储在最终Dest。这样,如果Source1的MSB是“1”,则该数据值被存储在最终Dest。
如果Source1的MSB是“0”,则处理从处理块1025进行至“停止”,则Dest中的值没有变化。Source1数据值没有存储在Dest中。
由于可变BLEND操作使用每个字段的MSB,其允许将任何算术结果(浮点或整数)用作屏蔽。其还允许使用比较结果(例如,32位浮点z缓冲器操作能够被用于屏蔽32位像素)。
有利地,可变BLEND操作允许为多种目的(例如动画效果)设计屏蔽。可以首先使用最高有效位,接着将屏蔽向左移,并且使用第二最高有效位,接着是第三,等等。通过利用该技术,能够大大减少屏蔽的预计算序列、加载操作和存储。
图11a示出了用于图10所示可变选择操作1000的过程的至少一个具体实施例的电路图。对于图11a所示的具体实施例,指令是可变BLEND紧缩双精度浮点值(BLENDVPD)。BLENDVPD操作在128位长的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将认识到,图11a所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
现在参考图11a,对于BLENDVPD操作,根据隐式第三寄存器xmm01115a中的MSB,来自例如xmm1 1105a的源操作数的双精度浮点值可以被有条件地写入例如xmm2 1110a的目标操作数。第三操作数的寄存器分配可以是体系结构寄存器XMM0。如之前所提及的,每个Source1的隐式第三寄存器中的MSB确定目标操作数中的对应双精度浮点值是否从源操作数选择和/或复制。如果屏蔽中的MSB对应于“1”,则双精度浮点值被选择和/或复制,否则目标中的值保持不变。
由于BLENDVPD是紧缩双精度浮点元素类型,所以其可以为28位长并且可以为每个xmm寄存器保存两个数据元素。例如,源操作数xmm1寄存器1105a可以保存数据元素1120a和1125a,而目标操作数xmm2寄存器1110a可以保存数据元素1130a和1135a。紧缩双倍格式424的每个数据元素可以保存64位信息。基于xmm1寄存器1105中每个数据元素的寄存器1115a中的MSB,多路复用器1140a选择目标值是否从xmm1寄存器1105a被选择。
参考图11a,如果操作如下:BLENDVPD xmm1,xmm2,<XMM0>。该操作表示将数据元素从隐式寄存器XMM0中的MSB为“1”的源操作数放到目标寄存器中。由于寄存器XMM0 1117a的MSB包含位“0”,所以数据元素1125a没有被MUX 1140a选择。寄存器xmm2 1110a中的数据元素1135a保持在目标寄存器中。然而,寄存器XMM0 1116a的MSB包含位“1”,数据元素1120a被MUX 1140a选择并且存储在目标寄存器1110a中。一旦操作完成,最终目标寄存器1110a就包含数据元素1120a和1135a。该值现在可以被存储在存储器中。
图11b示出了用于图10所示可变选择操作1000的过程的至少一个具体实施例的电路图。对于图11b所示的具体实施例,指令是可变BLEND紧缩单精度浮点值(BLENDVPS)。BLENDVPS操作在128位长的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将认识到,图11b所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
现在参考图11b,对于BLENDVPS操作,根据隐式第三寄存器xmm01115b中的MSB,来自例如xmm1 1105b的源操作数的单精度浮点值可以被有条件地写入例如xmm2 1110b的目标操作数。第三操作数的寄存器分配可以是体系结构寄存器XMM0。如之前所提及的,每个Source1的隐式第三寄存器中的MSB确定目标操作数中的对应单精度浮点值是否从源操作数被选择和/或复制。如果屏蔽中的MSB对应于“1”,则单精度浮点值被MUX 1140b选择和/或复制,否则目标中的值保持不变。
由于BLENDVPS是紧缩单精度浮点元素类型,所以其可以为28位长并且可以为每个xmm寄存器保存4个423数据元素。例如,源操作数xmm1寄存器可以保存数据元素1120b、1125b、1126b和1127b,而目标操作数xmm2寄存器可以保存数据元素1130b、1135b、1136b和1137b。紧缩单倍格式423的每个数据元素可以保存32位信息。基于xmm1寄存器1105b中每个数据元素的寄存器1115b中的MSB,多路复用器1140b选择目标值是否从xmm1寄存器1105b被选择。
参考图11b,如果操作如下:BLENDVPS xmm1,xmm2,<XMM0>。该操作表示将数据元素从隐式寄存器XMM0中的MSB为“1”的源操作数放到目标寄存器中。由于寄存器XMM0 1117b的MSB包含位“0”,所以数据元素1127b没有被MUX 1140b选择。目标寄存器1137b的值保持不变。由于寄存器XMM0 1118b的MSB包含位“1”,所以数据元素1126b被MUX 1140b选择并且存储在目标寄存器1110b中。目标寄存器1136b中的值被源操作数置换。寄存器XMM0 1117b的MSB包含位“0”,所以数据元素1125b没有被MUX 1140b选择。目标寄存器1135b的值保持不变。最后,寄存器XMM0 1116b的MSB包含位“1”,数据元素1120b被MUX 1140b选择。目标寄存器1130b的值被源操作数置换。一旦操作完成,最终目标寄存器1110b就包含数据元素1120b、1135b、1126b和1137b。该值现在可以被存储在存储器中。
图11c示出了用于图10所示可变选择操作1000的过程的至少一个具体实施例的电路图。对于图11c所示的具体实施例,指令是可变BLEND紧缩字节(PBLENDVB)。PBLENDVB操作在128位长的Source1和Dest数据值上执行,并且所述数据值可以是或可以不是紧缩数据。而且,本领域技术人员将认识到,图11c所示的操作还可对于其它长度的数据值执行,包括更小或更大长度的那些数据值。
现在参考图11c,对于PBLENDVB操作,根据隐式第三寄存器xmm01115c中的MSB,来自例如xmm1 1105c的源操作数的字节值可以被有条件地写入例如xmm2 1110c的目标操作数。第三操作数的寄存器分配可以是体系结构寄存器XMM0。如之前所提及的,每个Source1的隐式第三寄存器中的MSB确定目标操作数中的对应字节值是否从源操作数被选择和/或复制。如果屏蔽中的MSB对应于“1”,则字节值被MUX 1140c选择并复制,否则目标中的值保持不变。
由于PBLENDVB是紧缩字节元素类型,所以其可以为28位长并且可以为每个xmm寄存器保存16个数据元素。例如,源操作数xmm1寄存器可以保存数据元素1120c1至1120c16。其中c1至c16表示:寄存器xmm1 1105c的16个数据元素;寄存器xmm2 1110c的16个数据元素;16个多路复用器1140c;和16个隐式寄存器XMM0 1115c。
目标操作数xmm2寄存器可以保存数据元素1130c1至1130c16。紧缩字节格式421的每个数据元素可以保存16位信息。基于xmm1寄存器1105c中每个数据元素的寄存器1115c中的MSB,多路复用器1140c选择目标值是否从xmm1寄存器1105c被选择。
参考图11c,如果操作如下:PBLENDVB xmm1,xmm2,<XMM0>。该操作表示将数据元素从隐式寄存器XMM0中的MSB为“1”的源操作数放到目标寄存器中。如之前所提及的,源操作数1120c由MUX 1140c基于隐式寄存器1115c中的MSB进行选择。如果MSB是“1”,则源操作数被选择并复制到目标寄存器1110c中。如果MSB是“0”,则目标寄存器保持不变。值然后被存储在存储器中。
参考图12,其示出了可以用于对BLEND指令的控制信号(操作代码)进行编码的操作代码的各种实施例。图12示出了根据本发明一个实施例的指令格式1200。指令格式1200包括各种字段;这些字段可以包括前缀字段1210、操作码字段1220和操作数说明符字段(例如,modR/M、比例-变址-基址、位移、立即等)。操作数说明符字段是可选的,并且包括modR/M字段1230、SIB字段1240、位移字段1250和立即字段1260。
本领域技术人员将认识到,图12中所阐述的格式1200是说明性的,并且所公开的实施例可以利用指令代码内的其它数据组织形式。例如,字段1210、1220、1230、1240、1250、1260无需以所示的顺序进行组织,而是可以相对于彼此重新组织在其它位置,并且无需是连续的。而且,在此讨论的字段长度不应当被认为是限定性的。在备选实施例中,作为特定字节数讨论的字段可以被实现为更大或更小的字段。而且,尽管在此使用的术语“字节”表示8位的分组,但在其它实施例中可以被实现为任意其它大小的分组,包括4位、16位和32位。
如这里所使的,为了指示所希望的操作,诸如BLEND指令的指令的特定实例的操作码可在指令格式200的字段中包括某些值。这种指令有时被称作“实际指令”。实际指令的位值有时在此共同称作“指令代码”。
对于每个指令代码,对应的解码指令代码唯一地表示要由执行单元(比如,例如图1a的130)响应于指令代码而执行的操作。解码的指令代码可以包括一个或多个微操作。
操作码字段1220的内容规定操作。对于至少一个实施例,在此所讨论的BLEND指令的实施例的操作码字段1220为3字节长。操作码字段1220可以包括1个、2个或3个字节的信息。对于至少一个实施例,操作码字段1220的2字节转义字段118c中的3字节转义操作码值与操作码字段1220的第三字节1225的内容组合来规定BLEND操作。该第三字节1225在此被称作指令特定操作码。
对于至少一个实施例,前缀值0x66置于前缀字段1210中,并且被用作定义所希望操作的指令操作码的一部分。也就是说,前缀字段1210中的值被解码为操作码的一部分,而不是被解释为仅仅对后续的操作码进行限定。例如,对于至少一个实施例,前缀值0x66被用于指示BLEND指令的目标和源操作数存在于128位IntelSSE2 XMM寄存器中。可以相似地使用其它前缀。然而,对于BLEND指令的至少一些实施例,在一些操作条件下,替代地,前缀可以被用于传统的增强操作码或限定操作码的作用。
指令格式的第一实施例1226和第二实施例1228均包括3字节转义操作码字段118c和指令特定操作码字段1225。对于至少一个实施例,3字节转义操作码字段118c为2字节长。指令格式1226使用称为3字节转义操作码的4个特殊转义操作码中的一个。3字节转义操作码为2字节长,并且它们指示解码器硬件该指令使用操作码字段1220中的第三字节来定义指令。3字节转义操作码字段118c可以处于指令操作码内的任意位置,并且不需要必需是指令内的最高阶或最低阶字段。
以下表1阐述了使用前缀和3字节转义操作码的BLEND指令代码的示例。
表1
  指令   定义
  BLENDPD xmm1,xmm2/m128,imm8   根据imm8中指定的屏蔽从源xmm1和目标xmm2/m128选择紧缩双精度浮点值。一旦选定,将值存储在xmm1中。
  BLENDPS xmm1,xmm2/m128,imm8   根据imm8中指定的屏蔽从源xmm1和目标xmm2/m128选择紧缩单精度浮点值。一旦选定,将值存储在xmm1中。
  PBLENDDW xmm1,xmm2/m128,imm8   根据imm8中指定的屏蔽从xmm1和xmm2/m128选择字。一旦选定,将值存储在xmm1中。
  BLENDVPD xmm1,xmm2/m128,<XMM0>   根据XMM0中指定的屏蔽从源xmm1和目标xmm2/m128选择紧缩双精度浮点值。一旦选定,将值存储在xmm1中。
  BLENDVPS xmm1,xmm2/m128,<XMM0>   根据XMM0中每个单精度浮点数的高位中指定的屏蔽从源xmm1和目标xmm2/m128选择紧缩单精度浮点值。一旦选定,将值存储在xmm1中。
  PBLENDVB xmm1,xmm2/m128,<XMM0>   根据XMM0中每个字节的高位中指定的屏蔽从xmm1和xmm2/m128选择字节值。一旦选定,将值存储在xmm1中。
为了执行以上结合图7-11所讨论的紧缩BLEND指令的至少一些实施例的等同物,需要向操作增加机器周期等待时间的额外指令。例如,以下在表2中阐述的伪代码表示BLEND指令的这种使用。
表2
  BLEND指令-
  movapd  xmm0,xmm7∥xpmaxd   xmm7,XMMWORD PTR_a[eax}psubd   xmm0,xmm7psrad   xmm0,31pblendv xmm2,xmm5paddd   xmm5,xmm3
表2所阐述的伪代码有助于说明所描述的BLEND指令实施例能够被用于改善软件代码的性能。结果,BLEND指令能够被用在通用处理器中来改进较以前更多数量的算法的性能。
备选实施例
尽管所描述的实施例使用MSB为BLEND指令紧缩实施例的各种大小的数据元素发信号通知,但是备选实施例可以使用不同大小的输入、不同大小的数据元素和/或不同位(例如,数据元素的LSB)的比较。此外,尽管在一些所描述的实施例中,Source1和Dest各包含128位数据,但是备选实施例可以在具有更多或更少数据的紧缩数据上进行操作。例如,一个备选实施例在具有64位数据的紧缩数据上进行操作。
尽管已经依照几个实施例对本发明进行了描述,但是本领域技术人员将将认识到,本发明并不局限于所描述的实施例。可以在所附权利要求的精神和范围内,利用修改和改变来实施本发明的方法和装置。因此,该说明书应当被看成是说明性的,而不是对本发明的限制。
以上描述旨在说明本发明的优选实施例。由以上讨论,还应当明显的是,尤其在这种技术领域中,发展是快速的并且进一步的进步并不易于预见,本领域技术人员可以在配置和细节上对本发明进行修改,而不会背离所附权利要求书范围内的本发明的原理。

Claims (36)

1.一种方法,包括:
接收指令代码,所述指令代码的指令格式包括第一字段和第二字段,第一字段指示第一多位操作数,且第二字段指示第二多位操作数;和
当第一操作数中的一个或多个数据元素的符号位非0时,响应于与第一操作数相关联的符号位修改第二操作数。
2.如权利要求1所述的方法,还包括:如果所述符号位为0,则保持第二操作数的数据元素不变。
3.如权利要求2所述的方法,其中第一操作数还包括第一组多个数据元素,第一组多个数据元素至少包括A1和A2作为数据元素,A1和A2各具有N位长度;并且
第二操作数还包括第二组多个数据元素,第二组多个数据元素至少包括B1和B2,B1和B2各具有N位长度。
4.如权利要求3所述的方法,其中所述符号位是存储在第一操作数的数据元素的立即字段中的立即位。
5.如权利要求3所述的方法,其中所述符号位是与第一操作数相关联的第三操作数中的最高有效位。
6.如权利要求5所述的方法,其中第三操作数是隐式寄存器。
7.如权利要求1所述的方法,其中所述符号位控制第一和第二操作数之间的数据流。
8.如权利要求2所述的方法,还包括:如果所述符号位非0,则将第一数据元素从第一操作数存储到第二操作数。
9.如权利要求1所述的方法,其中第一和第二操作数各包括128位。
10.如权利要求3所述的方法,其中N为64。
11.如权利要求1所述的方法,其中所述一个或多个数据元素被视为紧缩字节。
12.如权利要求1所述的方法,其中所述一个或多个数据元素被视为紧缩字。
13.如权利要求1所述的方法,其中所述一个或多个数据元素被视为双字。
14.如权利要求1所述的方法,其中所述一个或多个数据元素被视为四字。
15.一种用于执行权利要求1的方法的装置,包括:
执行单元;和
包括数据的机器可存取介质,当所述数据被所述执行单元存取时,使所述执行单元执行权利要求1的方法。
16.一种装置,包括:
第一输入,接收第一数据;
第二输入,接收包括与第一数据相同位数的第二数据;
电路,响应于第一处理器指令,基于控制位从第一操作数选择第一数据元素,其中所述控制位用于当所述控制位非0时选择第一数据元素。
17.如权利要求16所述的装置,其中所选择的第一数据元素要被复制到第二操作数中。
18.如权利要求16所述的装置,其中所述控制位是符号位。
19.如权利要求17所述的装置,其中所述控制位是存储在第一操作数的第一数据元素的立即字段中的立即位。
20.如权利要求17所述的装置,其中所述符号位是与第一操作数相关联的第三操作数中的最高有效位。
21.如权利要求20所述的装置,其中第三操作数是隐式寄存器。
22.如权利要求16所述的装置,其中第一和第二数据各包括至少128位数据。
23.如权利要求16所述的装置,其中第一数据还包括至少2个数据元素。
24.如权利要求23所述的装置,其中所述数据元素各包括64位。
25.如权利要求16所述的装置,其中第一数据还包括至少4个数据元素。
26.如权利要求25所述的装置,其中所述数据元素各包括32位。
27.如权利要求16所述的装置,其中第一数据还包括至少8个数据元素。
28.如权利要求27所述的装置,其中所述数据元素各包括16位。
29.如权利要求16所述的装置,其中第一数据还包括至少16个数据元素。
30.如权利要求29所述的装置,其中所述数据元素各包括8位。
31.一种计算机系统,包括:
可寻址存储器,用于存储数据;
处理器,包括:
体系结构可见的存储区域,用于存储控制位;
解码器,用于解码指令,所述指令的第一字段用于指定N位的源操作数,且第二字段用于指定N位的目标操作数;和
执行单元,响应于所述解码器解码所述指令,基于控制位从所述源操作数选择第一数据元素,其中所述控制位用于当所述控制位非0时选择第一数据元素。
32.如权利要求31所述的计算机系统,其中N为128。
33.如权利要求31所述的计算机系统,其中所述处理器用于将第一数据元素存储在所述目标操作数中。
34.如权利要求31所述的计算机系统,其中所述控制位是第一数据元素中的立即位。
35.如权利要求31所述的计算机系统,其中所述控制位是第三操作数中的最高有效位。
36.如权利要求35所述的计算机系统,其中第三操作数是隐式寄存器。
CNA2007101701530A 2006-09-22 2007-09-21 用于执行选择操作的方法和装置 Pending CN101154154A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610615381.3A CN106155631A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/526065 2006-09-22
US11/526,065 US20080077772A1 (en) 2006-09-22 2006-09-22 Method and apparatus for performing select operations

Related Child Applications (3)

Application Number Title Priority Date Filing Date
CN201610615381.3A Division CN106155631A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置
CN201010535590XA Division CN101980148A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置
CN2012103265645A Division CN102915226A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置

Publications (1)

Publication Number Publication Date
CN101154154A true CN101154154A (zh) 2008-04-02

Family

ID=39226408

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201010535590XA Pending CN101980148A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置
CNA2007101701530A Pending CN101154154A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置
CN201610615381.3A Pending CN106155631A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置
CN2012103265645A Pending CN102915226A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201010535590XA Pending CN101980148A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201610615381.3A Pending CN106155631A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置
CN2012103265645A Pending CN102915226A (zh) 2006-09-22 2007-09-21 用于执行选择操作的方法和装置

Country Status (7)

Country Link
US (1) US20080077772A1 (zh)
JP (2) JP5383021B2 (zh)
KR (1) KR20090042333A (zh)
CN (4) CN101980148A (zh)
BR (1) BRPI0718446A2 (zh)
DE (2) DE112007002146T5 (zh)
WO (1) WO2008039354A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104011662A (zh) * 2011-12-23 2014-08-27 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
CN104679478A (zh) * 2009-12-17 2015-06-03 英特尔公司 用于在单个指令中执行移位和异或运算的方法和装置
CN106681693A (zh) * 2011-04-01 2017-05-17 英特尔公司 使用写掩码将两个源操作数混合进单个目的地的系统、装置和方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095535A1 (en) 2011-12-22 2013-06-27 Intel Corporation Floating point rounding processors, methods, systems, and instructions
US9395988B2 (en) 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10120680B2 (en) * 2016-12-30 2018-11-06 Intel Corporation Systems, apparatuses, and methods for arithmetic recurrence
CN111078291B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
JP2001142694A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7853778B2 (en) * 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US7441104B2 (en) * 2002-03-30 2008-10-21 Hewlett-Packard Development Company, L.P. Parallel subword instructions with distributed results
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2414308B (en) * 2004-05-17 2007-08-15 Advanced Risc Mach Ltd Program instruction compression

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679478A (zh) * 2009-12-17 2015-06-03 英特尔公司 用于在单个指令中执行移位和异或运算的方法和装置
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
CN104679478B (zh) * 2009-12-17 2019-03-15 英特尔公司 用于在单个指令中执行移位和异或运算的方法和装置
US10684855B2 (en) 2009-12-17 2020-06-16 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
CN106681693A (zh) * 2011-04-01 2017-05-17 英特尔公司 使用写掩码将两个源操作数混合进单个目的地的系统、装置和方法
CN106681693B (zh) * 2011-04-01 2019-07-23 英特尔公司 使用写掩码将两个源操作数混合进单个目的地的处理器
CN104011662A (zh) * 2011-12-23 2014-08-27 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
TWI550509B (zh) * 2011-12-23 2016-09-21 英特爾公司 提供向量混合與置換功能的指令與邏輯
CN104011662B (zh) * 2011-12-23 2017-05-10 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
CN107092465A (zh) * 2011-12-23 2017-08-25 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
US10037205B2 (en) 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
CN107092465B (zh) * 2011-12-23 2021-06-29 英特尔公司 用于提供向量混合和置换功能的指令和逻辑

Also Published As

Publication number Publication date
DE112007003786A5 (de) 2012-11-15
US20080077772A1 (en) 2008-03-27
BRPI0718446A2 (pt) 2013-11-19
DE112007002146T5 (de) 2009-07-02
WO2008039354A1 (en) 2008-04-03
JP2008140372A (ja) 2008-06-19
CN102915226A (zh) 2013-02-06
KR20090042333A (ko) 2009-04-29
CN101980148A (zh) 2011-02-23
JP5383021B2 (ja) 2014-01-08
CN106155631A (zh) 2016-11-23
JP5709775B2 (ja) 2015-04-30
JP2012119009A (ja) 2012-06-21

Similar Documents

Publication Publication Date Title
CN101154154A (zh) 用于执行选择操作的方法和装置
US11748103B2 (en) Systems and methods for performing matrix compress and decompress instructions
US11507376B2 (en) Systems for performing instructions for fast element unpacking into 2-dimensional registers
CN102207849B (zh) 用于执行逻辑比较操作的方法和装置
JP5926754B2 (ja) 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム
CN100440138C (zh) 使用推测、基于掩码、由打包数据选择写入数据元素的方法、系统和处理器
KR102354842B1 (ko) 비트 셔플 프로세서, 방법, 시스템, 및 명령어
TWI462007B (zh) 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法
TWI489383B (zh) 遮蔽排列指令的裝置及方法
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
CN108292228B (zh) 用于基于通道的步进收集的系统、设备和方法
EP4020169A1 (en) Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions
TW201810034A (zh) 用於累和的系統、設備及方法
TW201810020A (zh) 用於累乘的系統、設備及方法
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20080402