CN104699456A - 用于在单个指令中执行移位和异或运算的方法和装置 - Google Patents

用于在单个指令中执行移位和异或运算的方法和装置 Download PDF

Info

Publication number
CN104699456A
CN104699456A CN201410857443.2A CN201410857443A CN104699456A CN 104699456 A CN104699456 A CN 104699456A CN 201410857443 A CN201410857443 A CN 201410857443A CN 104699456 A CN104699456 A CN 104699456A
Authority
CN
China
Prior art keywords
instruction
xor
data
displacement
register
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
CN201410857443.2A
Other languages
English (en)
Other versions
CN104699456B (zh
Inventor
V·戈帕尔
J·D·吉尔福德
E·奥兹图科
W·K·费格哈利
G·M·沃尔里齐
M·G·迪克森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104699456A publication Critical patent/CN104699456A/zh
Application granted granted Critical
Publication of CN104699456B publication Critical patent/CN104699456B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/3001Arithmetic 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Abstract

一种用于在单个指令中执行移位和异或运算的方法和装置。描述了数据处理系统。在一个实施例中,数据处理系统包括:总线;显示控制单元;存储器接口;以及处理器,耦合到所述总线,处理器包括多级的高速缓存,包括一级(L1)高速缓存;多个寄存器;指令预取单元,解码器,耦合到所述指令预取单元,被配置为用于解码所预取的包括移位和异或指令的指令;以及执行单元,耦合到所述解码器,被配置为用于响应于所述移位和异或指令,执行移位和异或操作,以及浮点单元,被配置为在浮点数据元上进行操作。

Description

用于在单个指令中执行移位和异或运算的方法和装置
本申请是美国优先权号为US 12/653,704、优先权日为2009年12月17日、中国国家申请号为201010601696.5、题为“用于在单个指令中执行移位和异或运算的方法和装置”的申请的分案申请。
技术领域
本发明属于计算机处理领域。更具体地,各个实施例涉及用于执行移位和异或(XOR)运算的指令。
背景技术
单指令多数据(SIMD)指令在各种应用中可用于并行地处理多个数据元(压缩数据)。串行地执行诸如移位运算和异或(XOR)运算的运算会降低性能。
附图说明
本发明通过示例进行说明,且不受限于附图的各个图,其中:
图1A是根据本发明的一个实施例的计算机系统的框图,该计算机系统被形成为具有处理器,该处理器包括用于执行移位和异或运算指令的执行单元;
图1B是根据本发明的替代实施例的另一示例性计算机系统的框图;
图1C是根据本发明的另一替代实施例的又一示例性计算机系统的框图;
图2是根据本发明的一个实施例的处理器的微体系结构的框图,该处理器包括用于执行移位和异或运算的逻辑电路;
图3A示出根据本发明的一个实施例的多媒体寄存器中的各种压缩数据类型表示;
图3B示出根据替代实施例的压缩数据类型;
图3C示出根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号压缩数据类型表示;
图3D示出运算编码(运算码)格式的一个实施例;
图3E示出替代的运算编码(运算码)格式;
图3F示出又一替代的运算编码格式;
图4是根据本发明的用于执行指令的逻辑的一个实施例的框图。
图5是要与一个实施例协同执行的运算的流程图。
具体实施方式
以下说明书描述了一种用于在处理装置、计算机系统或软件程序中执行移位和异或运算的技术的实施例。在以下描述中,陈述了诸如处理器类型、微体系结构条件、事件、启用机制等来提供对本发明的更透彻理解。然而,本领域技术人员将理解,没有这些特定细节也可实施本发明。此外,未详细示出一些公知的结构、电路等,以避免不必要地混淆本发明的实施例。
虽然参照处理器描述了以下实施例,但其他实施例也可应用于其他类型的集成电路和逻辑器件。本发明的相同技术和示教能容易地应用于可受益于较高流水线吞吐量和改进性能的其他类型的电路或半导体器件。本发明的示教可应用于执行数据操纵的任何处理器或机器。然而,本发明的实施例不限于执行256位、128位、64位、32位或16位数据运算的处理器或机器,且可应用于其中需要运算压缩数据的任何处理器和机器。
虽然以下示例描述了执行单元和逻辑电路背景下的指令处理和分配,但本发明的其他实施例可通过存储于有形介质上的软件来实现。在一个实施例中,本发明的方法以机器可执行指令的方式具体化。这些指令可被用于使利用这些指令编程的通用或专用处理器执行本发明的步骤。本发明的多个实施例可作为计算机程序产品或软件提供,其可包括其上存储了计算机程序指令的计算机可读介质,这些计算机程序指令可用于对计算机(或其它电子设备)编程以执行根据本发明的过程。替代地,本发明的步骤可通过包含用于执行这些步骤的硬接线逻辑的特定硬件部件来执行,或通过已编程计算机部件和定制硬件部件的任何组合来执行。此类软件可被存储在系统中的存储器中。类似地,代码可经由网络分发,或通过其他计算机可读介质来分发。
因此,计算机可读介质可包括用于以机器(计算机)可读的形式存储或发送信息的任何机构,包括但不限于软盘、光盘、光盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存、经由因特网的传输、电形式、光形式、声音形式或其他形式的传播信号(例如载波、红外信号、数字信号等)等。因此,计算机可读介质包括适用于以机器(例如计算机)可读的形式存储或发送电子指令或信息的任何类型的介质/机器可读介质。此外,本发明也可被下载为计算机程序产品。同样,程序可从远程计算机(例如服务器)被传输至请求计算机(例如客户机)。该程序的传输可通过被具体化在经由通信链路(例如调制解调器、网络连接等)的载波或其它传输介质中的电、光、声音或其它形式的数据信号的方式。
一种设计可经过多个阶段,从创建到模拟到制造。表示设计的数据可按照多种方式来表示该设计。首先,因为在模拟中有用,该硬件可使用硬件描述语言或另一功能描述语言来表示。此外,可在设计过程的一些阶段制造具有逻辑和/或晶体管门电路的电路级模型。再者,在一些阶段,大多数设计达到表示各种器件在硬件模型中的物理布置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定各种功能部件在用于生产集成电路的掩模的不同掩模层上存在或不存在的数据。在该设计的任何表示中,该数据可以机器可读介质的任何形式来存储。经调制或其它方式生成的用于发送此类信息的光或电波、存储器、诸如盘的磁或光存储可以是该机器可读介质。这些介质中的任一种可“承载”或“表明”该设计或软件信息。当表明或承载该代码或设计的电载波被发送时,只要执行该电信号的复制、缓存或重新发送,就建立了新的副本。因此,通信提供商或网络提供商可建立具体化本发明技术的物品(载波)的副本。
在现代处理器中,多个不同执行单元被用于处理和执行各种代码和指令。并非所有指令都被等同地创建,因为一些指令较快地完成,而另一些会花费数目庞大的时钟周期。指令的吞吐越快,处理器的总体性能越好。因此,使许多指令尽可能快地执行会是有利的。然而,存在具有更高复杂度且在执行时间和处理器资源方面需要更多的某些指令。例如,存在浮点指令、装载/存储操作、数据移动等。
随着越来越多的计算机系统被用于因特网和多媒体应用,已随时间引入了附加的处理器支持。例如,单指令多数据(SIMD)整数/浮点指令和流送SIMD扩展(SSE)是减少执行特定程序任务所需的总指令数的指令,这又减少了功耗。这些指令可通过对多个数据元进行并行运算来加速软件性能。因此,可在包括视频、语音以及图像/照片处理的宽泛范围的应用中实现性能提高。SIMD指令在微处理器和相似类型的逻辑电路中的实现通常涉及多种问题。此外,SIMD运算的复杂度通常导致对用于正确处理和操纵数据的附加电路的需要。
当前,尚无SIMD移位和异或指令可用。在不存在SIMD移位和异或指令的情况下,根据本发明的实施例,可能需要大量指令和数据寄存器来在诸如音频/视频/图形压缩、处理以及操纵的应用中获得相同结果。因此,根据本发明的实施例的至少一个移位和异或指令可减少代码开销和资源要求。本发明的实施例提供利用SIMD相关硬件将移位和异或运算实现为算法的方法。当前,对SIMD寄存器中的数据执行移位和异或运算是有些困难和冗长的。相比于执行那些运算的实际指令数量,一些算法需要更多指令用于安排数据进行算术运算。通过实现根据本发明的实施例的移位和异或运算的实施例,实现移位和异或处理所需的指令的数量可显著减少。
本发明的实施例涉及用于实现移位和异或运算的指令。根据一个实施例对数据元进行的移位和异或运算可一般表示如下:
DEST1←SRC1[SRC2];
在一个实施例中,SRC1存储具有多个数据元的第一运算数,而SRC2包含表示要被该移位和异或指令移动多少值的值。在其它实施例中,移位和异或值指示符可被存储于紧邻的字段中。
在上述流程中,“DEST”(目地的)和“SRC”(源)是用于表示相应数据或运算的源和目的地的通用术语。在一些实施例中,它们可通过寄存器、存储器或具有与所描述的名称或功能不同的其它存储区来实现。例如,在一个实施例中,DEST1和DEST2可以是第一和第二临时存储区(例如“TEMP1”和“TEMP2”寄存器),SRC1和SRC3可以是第一和第二目的地存储区(例如“DEST1”和“DEST2”寄存器),如此等等。在其它实施例中,SRC和DEST存储区中的两个或更多个可与同一存储区(例如SIMD寄存器)内的不同数据存储元相对应。
图1A是根据本发明一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有处理器,该处理器包括用于执行移位和异或运算的指令的执行单元。根据本发明,系统100包括诸如处理器102的部件,该部件采用包括执行诸如本文所描述的实施例中的用于处理数据的算法的逻辑。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司买到的III、4、XeontmXScaletm和/或StrongARMtm微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStm操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。
诸实施例不限于计算机系统。本发明的替代实施例也可用于诸如手持设备和嵌入式应用的其它设备。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(网络PC)、机顶盒、网络集线器、广域网(WAN)交换机或对操作数执行移位和异或运算的任何其它系统。此外,已实现一些体系结构以使指令能同时运算若干数据,以提高多媒体应用的效率。随着数据类型和数据量增加,计算机和它们的处理器必须被增强以按照更高效的方法操纵数据。
图1A是根据本发明一个实施例的计算机系统100的框图,该计算机系统100被形成为具有处理器102,该处理器102包括用于执行对多个数据元的移位和异或算法的一个或更多个执行单元108。一个实施例可在单处理器桌面或服务器系统的背景下进行描述,但替代实施例可被包括在多处理器系统中。系统100是中枢体系结构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、简约指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或诸如例如数字信号处理器的任何其他处理器设备。处理器102耦合至处理器总线110,该处理器总线110可在处理器102与系统100中的其它部件之间传输数据信号。系统100的元件执行本领域技术人员熟知的它们的常规功能。
在一个实施例中,处理器102包括一级(L1)内部高速缓存104。取决于体系结构,处理器102可具有单级内部高速缓存或多级内部高速缓存。替代地,在另一实施例中,高速缓存可驻留在处理器102外部。取决于特定实现和需要,其它实施例也可包括内部和外部高速缓存的组合。寄存器文件106可在包括整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器的各种寄存器中存储不同类型的数据。
包括用于执行整数和浮点运算的逻辑的执行单元108也可驻留于处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)ROM。对于该实施例而言,执行单元108包括用于处理压缩指令集109的逻辑。在一个实施例中,压缩指令集109包括用于对多个运算数执行移位和异或的压缩移位和异或指令。通过将压缩指令集109包括在通用处理器102以及用于执行指令的关联电路的指令集中,许多多媒体应用所使用的操作可使用通用处理器102中的压缩数据来执行。因此,通过将处理器数据总线的全带宽用于对压缩数据执行运算,可使许多多媒体应用加速和更高效地执行。这样可消除在处理器数据总线上传输较小单位数据以在一个时刻对数据元执行一个或更多个运算的需要。
执行单元108的替代实施例也可在微控制器、嵌入式处理器、图形设备、DSP以及其它类型的逻辑电路中使用。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)器件、静态随机存取存储器(SRAM)器件、闪存器件或其它存储器件。存储器120可存储通过数据信号表示的可由处理器102执行的指令和/或数据。
系统逻辑芯片116耦合至处理器总线110和存储器120。所示实施例中的系统逻辑芯片116是存储器控制中枢(MCH)。处理器102可经由处理器总线110向MCH 116通信。MCH 116向存储器120提供高带宽存储器通道118,以用于存储指令和数据且用于存储图形命令、数据和纹理。MCH116用于在处理器102、存储器120以及系统100中的其它部件之间引导数据信号,并在处理器总线110、存储器120以及系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合至图形控制器112的图形端口。MCH 116通过存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH 116。
系统100使用专用中枢接口总线122将MCH 116耦合至I/O控制器中枢(ICH)130。ICH 130经由本地I/O总线向一些I/O设备提供直接连接。本地I/O总线是用于将外围设备连接至存储器120、芯片组以及处理器102的高速I/O总线。一些示例是音频控制器、固件集线器(闪存BIOS)128、无线收发器126、数据存储124、包含用户输入和键盘接口的传统I/O控制器、诸如通用串行总线(USB)的串行扩展端口以及网络控制器134。数据存储设备124可包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存器件或其它大容量存储设备。
对于系统的另一实施例而言,用于执行具有移位和异或指令的算法的执行单元可与芯片上系统一起使用。芯片上系统的一个实施例由处理器和存储器组成。用于一种此类系统的存储器是闪存。该闪存可位于与处理器和其它系统部件相同的同一管芯上。此外,诸如存储器控制器或图形控制器的其它逻辑块也可位于芯片上系统上。
图1B示出实现根据本发明一个实施例的原理的数据处理系统140。本领域技术人员将容易理解,本文所描述的实施例可与替代的处理系统一起使用,而不背离本发明的范围。
计算机系统140包括能执行包括移位和异或运算的SIMD操作的处理核159。对于一个实施例而言,处理核150表示具有任何类型的体系结构的处理单元,包括但不限于CISC、RISC或VLIW型体系结构。处理核159也可适用于以一种或更多种工艺技术来制造,而且通过以足够的细节被表示在机器可读介质上,处理核159可适合便于所述制造。
处理核159包括执行单元142、一组寄存器文件145以及解码器144。处理核159还包括对理解本发明而言不必要的附加电路(未示出)。执行单元142用于执行由处理核159接收的指令。除了识别典型的处理器指令之外,执行单元142可识别用于对压缩数据格式进行运算的压缩指令集143中的指令。压缩指令集143包括用于支持移位和异或运算的指令,且可包括其它压缩指令。执行单元142通过内部总线耦合至寄存器文件145。寄存器文件145表示处理核159上的用于存储包括数据的信息的存储区。如上所述,应理解用于存储压缩数据的存储区不是关键的。执行单元142耦合至解码器144。解码器144用于将处理核159所接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当的操作。
处理核159与总线141耦合以与各个其它系统设备通信,其它系统设备可包括但不限于,例如同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/紧致闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151以及替代的总线主接口152。在一个实施例中,数据处理系统140还可包括经由I/O总线153与各个I/O设备通信的I/O桥154。此类I/O设备可包括但不限于例如统一异步接收器/发射器(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例供移动、网络和/或无线通信之用,以及处理核159能执行包括移位和异或运算的SIMD操作。处理核159可用各种音频、视频、成像以及通信算法编程,包括:诸如沃尔什-哈达马德(Walsh-Hadamard)变换、快速傅立叶变换(FFT)、离散正弦变换(DCT)的离散变换以及它们各自的逆变换;诸如色空间变换、视频编码运动估计或视频解码运动补偿的压缩/解压缩技术;以及诸如脉冲编码调制(PCM)的调制/解调(MODEM)功能。本发明的一些实施例也可应用于图形应用,诸如三维(“3D”)建模、渲染、对象碰撞检测、3D对象变换和照明等。
图1C示出能执行SIMD移位和异或运算的数据处理系统的另一实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存167以及输入/输出系统168。输入/输出系统168可任选地耦合至无线接口169。SIMD协处理器161能执行包括移位和异或运算的SIMD运算。处理核170可适于以一种或更多种工艺技术来制造,且通过以足够的细节被表示在机器可读介质上,可适合便于包括处理核170的数据处理系统160的全部或一部分的制造。
对于一个实施例而言,SIMD协处理器161包括执行单元162和一组寄存器文件164。主处理器165的一个实施例包括解码器165,该解码器165用于识别指令集163中的指令,包括由执行单元162执行的SIMD移位和异或计算指令。对于替代实施例而言,SIMD协处理器161也包括用于解码指令集163中的指令的解码器的至少一部分165B。处理核170还包括对理解本发明的实施例而言不必要的附加电路(未示出)。
在操作时,主处理器166执行数据处理指令流,该数据处理指令流控制一般类型的数据处理操作,包括与高速缓存167以及输入/输出系统168的交互。数据处理指令流内嵌有SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161执行的类型。因此,主处理器166将这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)发送到协处理器总线166上,在该总线166处它们被任何附连的SIMD协处理器接收。在该情况下,SIMD协处理器161将接受并执行发送给它的任何已接收SIMD协处理器指令。
数据可经由无线接口169接收以通过SIMD协处理器指令进行处理。作为一个示例,可以数字信号的形式接收语音通信,该数字信号可由SIMD协处理器指令处理,以再生代表该语音通信的数字音频样本。作为另一示例,已压缩音频和/或视频可以数字比特流的形式接收,该数字比特流可由SIMD协处理器指令处理,以再生数字音频样本和/或运动视频帧。对于处理核170的一个实施例而言,主处理器166以及SIMD协处理器161被集成到单个处理核170中,该处理核170包括执行单元162、一组寄存器文件164以及用于识别包括SIMD移位和异或指令的指令集163中的指令的解码器165。
图2是根据本发明一个实施例的包括用于执行移位和异或指令的逻辑电路的处理器200的微体系结构的框图。对于移位和异或指令的一个实施例而言,该指令可将浮点尾数值向右移动由指数所表示的量,将经移位值与一个值进行异或运算,并产生最终结果。在一个实施例中,有序前端201是处理器200的一部分,其读取要执行的宏指令,并将它们准备就绪以便于后来在处理器流水线中使用。该前端201可包括若干单元。在一个实施例中,指令预取器226从存储器读取宏指令,并将它们馈送到指令解码器228中,指令解码器228又将它们解码成机器可执行的称为微指令或微运算(也称为微op或uop)的原语。在一个实施例中,追踪高速缓存(trace cache)230获取已解码的微指令,并将它们组装成微指令队列234中的程序有序序列或记录以供执行。当追踪高速缓存230遇到复杂宏指令时,微代码ROM232提供完成该运算所需的微指令。
许多宏指令被转换成单个微指令,而其它宏指令需要若干微指令来完成整个操作。在一个实施例中,如果需要四个以上微指令来完成宏指令,则解码器228访问微代码ROM 232来执行该宏指令。对于一个实施例而言,压缩移位和异或指令可被解码成少量微指令以供在指令解码器228处进行处理。在另一实施例中,如果需要多个微指令来完成该运算,则用于压缩移位和异或算法的指令可被存储在微代码ROM 232中。追踪高速缓存230指的是用于确定在微代码ROM 232中读取用于移位和异或算法的微代码序列的正确微指令指针的入口点可编程逻辑阵列(PLA)。在微代码ROM 232完成当前宏指令的微运算排序之后,机器的前端201恢复从追踪高速缓存230读取微运算。
一些SIMD和其它多媒体类型的指令被认为是复杂指令。许多浮点相关指令也是复杂指令。因而,当指令解码器228遇到复杂宏指令时,在适当的位置访问微代码ROM 232以取回用于该宏指令的微代码序列。用于执行该宏指令的各个微运算被传递至无序执行引擎203以在适当的整数和浮点执行单元处执行。
无序执行引擎203是微指令被准备好以供执行的地方。无序执行逻辑具有多个缓冲器,当微指令沿流水线向下并被排定以供执行时,这些缓冲器用于使微指令流平滑并对其重新排序以最优化性能。分配器逻辑分配每个微指令执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。该分配器还为两个微指令队列(一个用于存储器操作,另一个用于非存储器操作)之一中的每个微指令分配条目,该分配器在以下指令调度器之前:存储器调度器、快速调度器202、慢速/通用浮点调度器204以及简单浮点调度器206。微指令调度器202、204、206基于微指令的相关输入寄存器操作数源的就绪和微指令完成它们的操作所需的执行资源的可用性来确定微指令何时准备好执行。本实施例的快速调度器202可在主时钟周期的每半个周期时调度,而其它调度器在每个主处理器时钟周期仅调度一次。调度器仲裁分派端口来排定微指令以供执行。
寄存器文件208、210位于调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点运算的不同的寄存器文件208、210。本实施例的每个寄存器文件208、210还包括旁路网络,该旁路网络可将尚未写入寄存器文件的刚完成的结果通过旁路发送或转发至新的相关微指令。整数寄存器文件208和浮点寄存器文件210也能相互传递数据。对于一个实施例,整数寄存器文件208被分割成两个独立的寄存器文件,一个寄存器文件用于数据的低位32位,而第二寄存器文件用于数据的高位32位。一个实施例的浮点寄存器文件210具有128位宽条目,因为浮点指令通常具有从64到128位宽的运算数。
执行块211包含执行单元212、214、216、218、220、222、224,指令实际在这些执行单元中执行。该部分包括存储微指令需要执行的整数和浮点数据运算数值的寄存器文件208、210。本实施例的处理器200由多个执行单元组成:地址产生单元(AGU)212、AGU 214、快速ALU(算术逻辑单元)216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。对于该实施例,浮点执行块222、224执行浮点、MMX、SIMD以及SSE运算。本实施例的浮点ALU 222包括用于执行除法、平方根以及其它微运算的64位×64位浮点除法器。对于本发明的实施例而言,涉及浮点值的任何动作利用该浮点硬件进行。例如,整数格式和浮点格式之间的转换涉及浮点寄存器文件。类似地,浮点除法运算在浮点除法器处进行。另一方面,非浮点数和整数类型利用整数硬件资源进行处理。简单而非常频繁的ALU操作由高速ALU执行单元216、218完成。本实施例的快速ALU 216、218可在半个时钟周期的有效等待时间内执行快速运算。对于一个实施例而言,多数复杂整数运算由慢速ALU 220完成,因为慢速ALU 220包括用于长等待时间类型的运算的整数执行硬件,诸如乘法器、移位器、标记逻辑以及分支处理。存储器装载/存储操作由AGU 212、214执行。对于该实施例,整数ALU 216、218、220在对64位数据运算数执行整数运算的背景下进行描述。在替代实施例中,可实现ALU 216、218、220以支持包括16、32、128、256的各种数据位。类似地,可实现浮点单元222、224以支持具有各种位宽的多个运算数。对于一个实施例而言,浮点单元222、224可协同SIMD和多媒体指令对128位宽压缩数据运算数进行运算。
术语“寄存器”在本文中被用于指示处理器上的存储位置,这多个位置被用作用于标识运算数的宏指令的一部分。换言之,本文所指的寄存器是从处理器外部(从程序员角度)可见的寄存器。然而,实施例的寄存器在含义上不应限于特定类型的电路。相反,实施例的寄存器仅需要能存储和提供数据,并执行本文中所描述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还包含用于压缩数据的16个XMM和通用寄存器、8个多媒体(例如“EM64T”加法)多媒体SIMD寄存器。对于以下讨论,寄存器应被理解为设计成保存压缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXtm寄存器(在一些实例中也称为“mm”寄存器)。既有整数形式又有浮点形式的这些MMX寄存器可与伴随SIMD和SSE指令的压缩数据元一起运算。相似地,与SSE2、SSE3、SSE4或更高级技术(通称为“SSEx”)有关的128位宽XMM寄存器也可被用于保存此类压缩数据运算数。在该实施例中,在存储压缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,其它寄存器或寄存器组合可被用于存储256位或更多数据。
在以下附图的示例中,描述了多个数据运算数。图3A示出了根据本发明一个实施例的多媒体寄存器中的各种压缩数据类型表示。图3A示出128位宽运算数的压缩字节310、压缩字320以及压缩双字(dword)330的数据类型。该示例的压缩字节格式310是128位长度,且包含16个压缩字节数据元。一个字节在此被定义为8位数据。每个字节数据元的信息被存储在字节0的位7到位0、字节1的位15到位8、字节2的位23到位16、以及最终字节15的位120到位127中。因此,该寄存器中的所有可用位均被使用。该存储布置提高了处理器的存储效率。此外,在16个数据元被访问的情况下,现可对16个数据元并行地执行一个运算。
一般而言,数据元是与同样长度的其它数据元一起存储于单个寄存器或存储器位置中的单个数据片段。在与SSEx技术有关的压缩数据序列中,存储于XMM寄存器中的数据元数量为128位除以单个数据元的位长度。相似地,在与MMX和SSE技术有关的压缩数据序列中,存储于MMX寄存器中的数据元数量为64位除以单个数据元的位长度。虽然图3A中所示的数据类型是128位长度,但本发明的实施例也可运算64位宽或其它大小的运算数。该示例的压缩字格式320是128位长度,且包含8个压缩字数据元。每个压缩字包含16个信息位。图3A的压缩双字格式330是128位长,且包含四个压缩双字数据元。每个压缩双字数据元包含32位信息。压缩四倍长字(quadword)是128位长度,且包含两个压缩的四倍长字数据元。
图3B示出替代的寄存器内数据存储格式。每个压缩数据可包括一个以上独立数据元。示出了三种压缩数据格式:半压缩(packed half)341、单压缩(packed single)342以及双压缩(packed double)343。半压缩341、单压缩342以及双压缩343的一个实施例包含定点(fixed-point)数据元。对于一个或更多个半压缩341的替代实施例而言,单压缩342和双压缩343可包含浮点数据元。半压缩341的一个替代实施例是包含8个16位数据元的128位长度。单压缩342的一个实施例是128位长度,且包含4个32位数据元。双压缩343的一个实施例是128位长度,且包含2个64位数据元。将理解,此类压缩数据格式可进一步被扩展为其它寄存器长度,例如96位、160位、192位、224位、256位或更长。
图3C示出根据本发明一个实施例的多媒体寄存器中的各种有符号和无符号压缩数据类型表示。无符号压缩字节表示344示出了SIMD寄存器中的无符号压缩字节的存储。每个字节数据元的信息被按位存储于字节0的位7到位0、字节1的位15到位8、字节2的位23到位16以及最终字节15的位120到位127中。因此,该寄存器中的所有可用位均被使用。该存储布置可提高处理器的存储效率。此外,在16个数据元被访问的情况下,现可对16个数据元并行地执行一个运算。有符号压缩数据表示345示出了有符号压缩字节的存储。注意,每个字节数据元的第8位是符号指示符。无符号压缩字表示346示出了字7到字0如何被存储于SIMD寄存器中。有符号压缩字表示347与无符号压缩字寄存器内表示346相似。注意,每个字数据元的第16位是符号指示符。无符号压缩双字表示348示出双字数据元如何被存储。有符号压缩双字表示349与无符号压缩双字寄存器内表示348相似。注意,必需的符号位是每个双字数据元的第32位。
图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网intel.com/design/litcentr上获得的“IA-32英特尔体系结构软件开发者手册卷2:指令集参考(IA-32Intel Architecture Software Developer’s Manual Volume2:Instruction Set Reference)”中描述的运算码格式类型相对应的具有32或更多位的运算编码(运算码)格式360以及寄存器/存储器运算数寻址模式的一个实施例的描述。在一个实施例中,移位和异或运算可通过一个或更多个字段361和362来编码。对每个指令可标识多达两个运算数位置,包括多达两个源运算数标识符364和365。对于移位和异或指令的一个实施例而言,目的地运算数标识符366与源运算数标识符364相同,而在其它实施例中,它们不同。对于替代实施例,目的地运算数标识符366与源运算数标识符365相同,而在其它实施例中它们不同。在移位和异或指令的一个实施例中,由源运算数标识符364和365标识的源运算数之一被移位和异或运算的结果盖写,而在其它实施例中,标识符364与源寄存器相对应,而标识符365与目的地寄存器元相对应。对于移位和异或指令的一个实施例而言,运算数标识符364和365可被用于标识32位或64位源和目的地运算数。
图3E是具有40位或更多位的另一替代运算编码(运算码)格式370的描述。运算码格式370与运算码格式360相对应,且包括可任选的前置字节378。移位和异或运算的类型可通过一个或更多个字段378、371以及372来编码。每个指令的多达两个运算数位置可通过源运算数标识符374和375且通过前置字节378来标识。对于移位和异或指令的一个实施例而言,前置字节378可被用于标识32位或64位源和目的地运算数。对于移位和异或指令的一个实施例而言,目的地运算数标识符376与源运算数标识符374相同,而在其它实施例中,它们不同。对于替代实施例,目的地运算数标识符376与源运算数标识符375相同,而在其它实施例中它们不同。在一个实施例中,对由运算数标识符374和375标识的运算数之一移位并使其与由运算数标识符374和375标识的另一运算数进行异或运算被该移位和异或运算的结果覆盖,而在其它实施例中,对由标识符374和375标识的运算数进行的移位和异或运算的结果被写入另一寄存器中的另一数据元。运算码格式360和370允许部分地由MOD字段363和373以及可任选的缩放-指数-基(scale-index-base,SIB)和位移字节指定的寄存器到寄存器寻址、存储器到寄存器寻址、通过寄存器的寄存器寻址、直接寄存器寻址、寄存器到存储器寻址。
接着转到图3F,在一些替代实施例中,64位单指令多数据(SIMD)算术运算可通过协处理器数据处理(CDP)指令来执行。运算编码(运算码)格式380描述具有CDP运算码字段382和389的一个此类CDP指令。对于移位和异或运算的替代实施例而言,CDP指令的类型可通过一个或更多个字段383、384、387以及388来编码。对每个指令可标识多达三个运算数位置,包括多达两个源运算数标识符385和390以及一个目的地运算数标识符386。协处理器的一个实施例可对8、16、32以及64位值进行运算。对于一个实施例而言,对浮点数据元执行移位和异或运算。在一些实施例中,利用选择字段381,可有条件地执行移位和异或指令。对于一些移位和异或指令,源数据大小可通过字段383来编码。在移位和异或指令的一些实施例中,零(Z)、负(N)、进位(C)以及溢出(V)检测可在SIMD字段上进行。对于一些指令,饱和类型可通过字段384来编码。
图4是根据本发明的用于对压缩数据运算数执行移位和异或运算的逻辑的一个实施例的框图。可实现本发明的实施例以作用于诸如上述的各种类型的运算数。为简单起见,以下讨论和示例是在用于处理数据元的移位和异或指令的背景下进行的。在一个实施例中,第一运算数401被移位器410移动由输入405指定的量。在一个实施例中,它是右移。然而在其它实施例中,移位器执行左移运算。在一些实施例中,该运算数是标量值,而在其它实施例中,它是具有多种不同数据大小和类型(例如浮点、整数)的压缩数据值。在一个实施例中,移位计数405是压缩(或“矢量”)值,其每个元与要由相应移位计数元件移动的压缩运算数的元相对应。在其它实施例中,该移位计数应用于第一数据运算数的所有元。此外,在一些实施例中,移位计数由该指令中的字段(诸如立即数、r/m或其它字段)指定。在其它实施例中,移位计数由该指令指示的寄存器指定。
然后,经移位的运算数通过逻辑420与值430进行异或运算,且异或运算结果被存储于目的地存储位置(例如寄存器)425中。在一个实施例中,异或值430是压缩(或“矢量”)值,其每个元与要由相应异或元件进行异或运算的压缩运算数的元相对应。在其它实施例中,异或值430应用于第一数据运算数的所有元。此外,在一些实施例中,异或值由该指令中的字段(诸如立即数、r/m或其它字段)指定。在其它实施例中,异或值由该指令指示的寄存器指定。
图5示出根据本发明一个实施例的移位和异或指令的运算。在运算501,如果接收到移位和异或指令,则在运算505,将第一运算数移动移位数。在一个实施例中,它被右移。然而在其它实施例中,移位器执行左移运算。在一些实施例中,该运算数是标量值,而在其它实施例中,它是具有多种不同数据大小和类型(例如浮点、整数)的压缩数据值。在一个实施例中,移位计数值405是压缩(或“矢量”)值,其每个元与要由相应移位计数元件移动的压缩运算数的元相对应。在其它实施例中,该移位计数值应用于第一数据运算数的所有元。此外,在一些实施例中,移位计数值由该指令中的字段(诸如立即数、r/m或其它字段)指定。在其它实施例中,移位计数值由该指令指示的寄存器指定。
在运算510,经移位值与异或值进行异或运算。在一个实施例中,异或值430是压缩(或“矢量”)值,其每个元与要由相应异或元件进行异或运算的压缩运算数的元相对应。在其它实施例中,异或值430应用于第一数据运算数的所有元。此外,在一些实施例中,该异或值由该指令中的字段(诸如立即数、r/m或其它字段)指定。在其它实施例中,该异或值由该指令指示的寄存器指定。
在运算515,经移位和异或运算的值被存储于一个位置。在一个实施例中,该位置是标量寄存器。在另一个实施例中,该位置是压缩数据寄存器。在另一实施例中,目的地位置也被用作源位置,诸如由指令指定的压缩数据寄存器。在其它实施例中,目的地位置是与存储初始运算数或诸如移位计数或异或值的其它值的源位置不同的位置。
在一个实施例中,移位和异或指令可用于在各种计算机应用中执行数据去重复。数据去重复试图找出文件之间的共同数据块,以最优化磁盘存储和/或网络带宽。在一个实施例中,移位和异或指令通过利用诸如使用滚动散列、散列摘要(例如SHA1或MD5)找出组块边界、并(利用快速Lempel-Ziv方案)压缩与众不同的组块的运算,可用于提高数据去重复运算的性能。
例如,一种数据去重复算法可通过以下伪代码示出:
在上述算法中,加扰表(scramble table)是随机32位常数的256个条目的数组,而v是具有数据的前32个字节的散列值的滚动散列。当找出组块边界时,该算法返回ret=1,且位置p表示组块边界。值z可以是导致良好组块检测的诸如12-15的常数,且可以是应用特定的。在一个实施例中,移位和异或指令可帮助上述算法以约2循环/字节的速率运算。在其它实施例中,取决于用途,移位和异或指令帮助该算法执行得更快或更慢。
其中使用移位和异或指令的至少一个实施例可通过以下伪代码示出:
在上述算法中,brefl_scramble数组中的每个条目包含原始加扰数组中的相应条目的位折算版本。在一个实施例中,上述算法左移v而不是右移,且v包含滚动散列的位折算版本。在一个实施例中,检查组块边界通过检查前导零的最小数量来执行。
在其它实施例中,移位和异或指令可被用于其它有用的计算机运算和算法。此外,诸实施例有助于提高密集使用移位和异或运算的许多程序的性能。
因此,公开了用于执行移位和异或指令的技术。虽然已在附图中描述和示出了某些示例性实施例,但应理解,这些实施例仅仅是为了说明而非限制宽泛的本发明,且本发明不限于所示和所描述的特定构造和布置,因为本领域技术人员在学习本公开内容时能想到各种其它变型。在诸如本技术的发展迅速且进一步进步难以预见的技术领域中,所公开的实施例的布置和细节可能如实现技术进步所促进地容易被修改,但不背离本公开的原理或所附权利要求的范围。

Claims (11)

1.一种数据处理系统,包括:
总线;
显示控制单元,耦合到所述总线;
存储器接口,耦合到所述总线;以及
处理器,耦合到所述总线,所述处理器包括:
多级的高速缓存,包括一级(L1)高速缓存;
多个寄存器;
指令预取单元,被配置为获取指令,所述指令包括移位和异或(XOR)指令,其中所述移位和异或指令具有:用于指定第一源运算数的第一源运算数标识符、用于指定第二源运算数的第二源运算数标识符、用于指定目的地运算数的目的地运算数标识符、用于指定移位量的立即数字段、以及一字段用于标识所述第一源运算数、所述第二源运算数、所述目的地运算数是32位源运算数和目的地运算数以及64位源运算数和目的地运算数中的一个;
解码器,耦合到所述指令预取单元,被配置为用于解码所预取的包括移位和异或指令的指令;以及
执行单元,耦合到所述解码器,被配置为用于响应于所述移位和异或指令,执行移位和异或操作,以:
将所述第一源运算数移位由所述立即数字段指定的移位量,
将经移位的第一源运算数与所述第二源运算数进行异或运算,以及
将结果得到的经移位和异或的值存储在由所述目的地运算数指定的目的地寄存器中;以及
浮点单元,被配置为在浮点数据元上进行操作。
2.如权利要求1所述的数据处理系统,其特征在于,所述多个寄存器包括:
多个整数寄存器;
存储浮点数据元的多个寄存器,所述浮点数据元包括:128位压缩双运算数,包括两个64位双浮点数据元;
多个状态寄存器;以及
指令指针寄存器。
3.如权利要求1所述的数据处理系统,其特征在于,所述第一源运算数是标量值,所述目的地寄存器是标量寄存器。
4.如权利要求1所述的数据处理系统,其特征在于,所述执行单元执行移位和异或操作以逻辑地将所述第一源运算数移位所述移位量。
5.如权利要求1所述的数据处理系统,其特征在于,所述执行单元执行移位和异或操作以算术地将所述第一源运算数移位所述移位量。
6.如权利要求4或5所述的数据处理系统,其特征在于,所述执行单元执行移位和异或操作以算术地将所述第一源运算数右移所述移位量。
7.如权利要求4或5所述的数据处理系统,其特征在于,所述执行单元执行移位和异或操作以算术地将所述第一源运算数左移所述移位量。
8.如权利要求1所述的数据处理系统,其特征在于,所述指令具有一个或多个字段以编码所述移位和异或操作的类型。
9.如权利要求1所述的数据处理系统,其特征在于,所述浮点单元执行64位对64位浮点除法。
10.如权利要求1所述的数据处理系统,其特征在于,所述处理器是简约指令集计算(RISC)架构。
11.如权利要求1所述的数据处理系统,其特征在于,所述指令是包括移位和异或指令的单指令多数据(SIMD)指令。
CN201410857443.2A 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置 Active CN104699456B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/653,704 US9747105B2 (en) 2009-12-17 2009-12-17 Method and apparatus for performing a shift and exclusive or operation in a single instruction
US12/653,704 2009-12-17
CN201010601696.5A CN102103487B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201010601696.5A Division CN102103487B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置

Publications (2)

Publication Number Publication Date
CN104699456A true CN104699456A (zh) 2015-06-10
CN104699456B CN104699456B (zh) 2019-02-15

Family

ID=44152595

Family Applications (7)

Application Number Title Priority Date Filing Date
CN201510098293.6A Active CN104679478B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201410857443.2A Active CN104699456B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201010601696.5A Active CN102103487B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201510098269.2A Active CN104699457B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201510098245.7A Active CN104699459B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201410855924.XA Active CN104598203B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201410855932.4A Active CN104598204B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510098293.6A Active CN104679478B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置

Family Applications After (5)

Application Number Title Priority Date Filing Date
CN201010601696.5A Active CN102103487B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201510098269.2A Active CN104699457B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201510098245.7A Active CN104699459B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201410855924.XA Active CN104598203B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的方法和装置
CN201410855932.4A Active CN104598204B (zh) 2009-12-17 2010-12-15 用于在单个指令中执行移位和异或运算的装置

Country Status (8)

Country Link
US (5) US9747105B2 (zh)
JP (5) JP5567668B2 (zh)
KR (1) KR101411064B1 (zh)
CN (7) CN104679478B (zh)
DE (1) DE112010004887T5 (zh)
GB (2) GB2483575B (zh)
TW (5) TWI575456B (zh)
WO (1) WO2011084214A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110058884A (zh) * 2019-03-15 2019-07-26 佛山市顺德区中山大学研究院 用于计算型存储指令集运算的优化方法、系统及存储介质

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4930251B2 (ja) * 2007-07-31 2012-05-16 富士通セミコンダクター株式会社 誤り訂正装置及びデスクランブル回路
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
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
US9665371B2 (en) * 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN106445469B (zh) * 2011-12-22 2019-03-08 英特尔公司 处理器、机器可读存储介质和计算机实现的系统
WO2013095607A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
US9424327B2 (en) 2011-12-23 2016-08-23 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
CN104012059B (zh) * 2011-12-26 2017-09-01 英特尔公司 协处理器之间的直接链路同步通信
CN104025033B (zh) * 2011-12-30 2017-11-21 英特尔公司 利用控制操纵的simd可变移位和循环
US9128698B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
JP6219631B2 (ja) * 2013-07-29 2017-10-25 学校法人明星学苑 論理演算装置
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10423411B2 (en) * 2015-09-26 2019-09-24 Intel Corporation Data element comparison processors, methods, systems, and instructions
US9916159B2 (en) * 2016-01-14 2018-03-13 International Business Machines Corporation Programmable linear feedback shift register
JP6420489B2 (ja) * 2016-04-19 2018-11-07 華為技術有限公司Huawei Technologies Co.,Ltd. セグメント化ハッシュ値計算のためのベクトル処理
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US20180121202A1 (en) * 2016-11-02 2018-05-03 Intel Corporation Simd channel utilization under divergent control flow
CN107145334B (zh) * 2017-04-26 2020-10-09 龙芯中科技术有限公司 常量获取方法、装置、处理器及计算机可读存储介质
WO2019027415A1 (en) 2017-07-31 2019-02-07 Hewlett-Packard Development Company, L.P. TREATMENT OR EXCLUSIVE VOXELS OF MODELS IN THREE DIMENSIONS
CN107612684B (zh) * 2017-10-20 2020-09-15 中博龙辉装备集团股份有限公司 基于国产化处理器平台专有指令集的数据对称加密方法
CN109976705B (zh) * 2019-03-20 2020-06-02 上海燧原智能科技有限公司 浮点格式数据处理装置、数据处理设备及数据处理方法
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
US11269631B2 (en) 2020-07-29 2022-03-08 Ghost Locomotion Inc. Extending fused multiply-add instructions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040267858A1 (en) * 2003-06-30 2004-12-30 Macy William W Method, apparatus, and instruction for performing a sign operation that multiplies
US20080077773A1 (en) * 2006-09-22 2008-03-27 Julier Michael A Instruction and logic for processing text strings
CN101187861A (zh) * 2006-09-20 2008-05-28 英特尔公司 用于执行点积运算的指令和逻辑
US7395294B1 (en) * 2003-01-10 2008-07-01 Altera Corporation Arithmetic logic unit

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781819A (en) * 1971-10-08 1973-12-25 Ibm Shift unit for variable data widths
JPS53147593A (en) 1977-05-27 1978-12-22 Hitachi Ltd Oxygen density measuring device
US4356549A (en) * 1980-04-02 1982-10-26 Control Data Corporation System page table apparatus
US4467444A (en) 1980-08-01 1984-08-21 Advanced Micro Devices, Inc. Processor unit for microcomputer systems
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
US5504914A (en) * 1993-06-23 1996-04-02 National Science Council Multi-level instruction boosting method using plurality of ordinary registers forming plurality of conjugate register pairs that are shadow registers to each other with different only in MSB
US5559730A (en) * 1994-02-18 1996-09-24 Matsushita Electric Industrial Co., Ltd. Shift operation unit and shift operation method
JPH08137666A (ja) 1994-11-14 1996-05-31 Matsushita Electric Ind Co Ltd 演算装置およびその演算方法
ZA9510127B (en) 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
KR100329338B1 (ko) 1994-12-02 2002-07-18 피터 엔. 데트킨 복합피연산자의팩연산을수행하는마이크로프로세서
US5864344A (en) * 1995-07-03 1999-01-26 Ikedo; Tsuneo Computer graphics circuit
CN103092564B (zh) 1995-08-31 2016-04-06 英特尔公司 执行乘加指令的处理器和对分组数据执行乘加操作的系统
JPH09115298A (ja) * 1995-10-19 1997-05-02 Mitsubishi Electric Corp 半導体記憶装置
JPH1040078A (ja) 1996-07-24 1998-02-13 Hitachi Ltd 先行0、1数予測回路、浮動小数点演算装置、マイクロプロセッサおよび情報処理装置
TW325552B (en) 1996-09-23 1998-01-21 Advanced Risc Mach Ltd Data processing condition code flags
US6009451A (en) * 1996-11-22 1999-12-28 Lucent Technologies Inc. Method for generating barrel shifter result flags directly from input data
US5896406A (en) 1997-03-31 1999-04-20 Adaptec, Inc. Shift register-based XOR accumulator engine for generating parity in a data processing system
GB9707861D0 (en) 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5917914A (en) 1997-04-24 1999-06-29 Cirrus Logic, Inc. DVD data descrambler for host interface and MPEG interface
US6134597A (en) 1997-05-28 2000-10-17 International Business Machines Corporation CRC hash compressed server object identifier
US5909520A (en) 1997-08-25 1999-06-01 The United States Of America As Represented By The Secretary Of The Navy Noise coding processor
US6223320B1 (en) 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
JP2001142694A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
US6539467B1 (en) 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7046802B2 (en) 2000-10-12 2006-05-16 Rogaway Phillip W Method and apparatus for facilitating efficient authenticated encryption
US6810398B2 (en) 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
AU2002213658B2 (en) 2000-11-15 2009-10-08 Indoaust Investments Ltd A method of updating a shift register
TWI261968B (en) 2001-09-13 2006-09-11 Macronix Int Co Ltd Shifting apparatus for bit-shifting manipulation in a digital processor device
DE10201441A1 (de) 2002-01-16 2003-08-14 Infineon Technologies Ag Schiebevorrichtung und Verfahren zum Verschieben
US7114116B2 (en) 2002-09-13 2006-09-26 Sun Microsystems, Inc. Accelerated Galois data integrity crosscheck system and method
AU2002335247A1 (en) * 2002-10-11 2004-05-04 Fujitsu Limited Pn code generator, gold code generator, pn code despreading device, pn code generation method, gold code generation method, pn code despreading method, and computer program
JP4057876B2 (ja) 2002-10-11 2008-03-05 フリースケール セミコンダクター インコーポレイテッド ガロア体掛け算器の制御方法
JP4228728B2 (ja) 2003-03-06 2009-02-25 日立工機株式会社 遠心分離機及び遠心分離機用スイングロ−タ
KR100960095B1 (ko) 2003-10-23 2010-05-31 마이크로칩 테크놀로지 인코포레이티드 마이크로컨트롤러 명령어 셋트
GB2411975B (en) 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
JP3845636B2 (ja) * 2004-01-21 2006-11-15 株式会社東芝 関数近似値の演算器
JP4418713B2 (ja) * 2004-06-11 2010-02-24 キヤノン株式会社 乱数発生方法及び乱数発生装置
US7653674B2 (en) * 2004-10-07 2010-01-26 Infoprint Solutions Company Llc Parallel operations on multiple signed elements in a register
US8209366B2 (en) * 2005-02-28 2012-06-26 Hitachi Global Storage Technologies Netherlands B.V. Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7590930B2 (en) 2005-05-24 2009-09-15 Intel Corporation Instructions for performing modulo-2 multiplication and bit reflection
US8253751B2 (en) 2005-06-30 2012-08-28 Intel Corporation Memory controller interface for micro-tiled memory access
JP2007174312A (ja) * 2005-12-22 2007-07-05 Sanyo Electric Co Ltd 符号化回路およびデジタル信号処理回路
CN100495322C (zh) 2006-05-18 2009-06-03 中国科学院计算技术研究所 对预处理微指令发生异常多层嵌套进行处理的设备及方法
US7941435B2 (en) 2006-08-01 2011-05-10 Cisco Technology, Inc. Substring search algorithm optimized for hardware acceleration
US20080077772A1 (en) 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US7886255B2 (en) * 2007-01-22 2011-02-08 Texas Instruments Incorporated Method for design of programmable data processors
DK176721B1 (da) 2007-03-06 2009-04-27 I/S Boewind V/Chr. I S Boewind V Chr Fremgangsmode til akkumulering og udnyttelse af vedvarende energi
US8762345B2 (en) 2007-05-31 2014-06-24 Netapp, Inc. System and method for accelerating anchor point detection
US7774399B2 (en) 2007-09-24 2010-08-10 Vns Portfolio Llc Shift-add based parallel multiplication
US7729185B2 (en) * 2007-11-01 2010-06-01 Arm Limited Apparatus and method for detection of address decoder open faults
IL188089A (en) * 2007-12-12 2013-02-28 Nds Ltd Bit generator
US7689816B2 (en) 2008-01-31 2010-03-30 International Business Machines Corporation Branch prediction with partially folded global history vector for reduced XOR operation time
KR101616478B1 (ko) * 2008-05-12 2016-04-28 퀄컴 인코포레이티드 프로그램가능한 프로세서 상에서의 임의의 갈루아 필드 산술연산의 구현
US8340280B2 (en) * 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
JP2012516393A (ja) 2009-01-28 2012-07-19 ナムローゼ・フェンノートシャップ・ベーカート・ソシエテ・アノニム 楕円形コードの芯として構成された波形状偏平ワイヤ
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395294B1 (en) * 2003-01-10 2008-07-01 Altera Corporation Arithmetic logic unit
US20040267858A1 (en) * 2003-06-30 2004-12-30 Macy William W Method, apparatus, and instruction for performing a sign operation that multiplies
CN101187861A (zh) * 2006-09-20 2008-05-28 英特尔公司 用于执行点积运算的指令和逻辑
US20080077773A1 (en) * 2006-09-22 2008-03-27 Julier Michael A Instruction and logic for processing text strings

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SUNG DAE KIM 等: "NOVEL BIT MANIPULATION UNIT FOR COMMUNICATION DIGITAL SIGNAL PROCESSORS", 《PROCEEDINGS ISCAS 2004,VANCOUVER, BC, IEEE 2004》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110058884A (zh) * 2019-03-15 2019-07-26 佛山市顺德区中山大学研究院 用于计算型存储指令集运算的优化方法、系统及存储介质
CN110058884B (zh) * 2019-03-15 2021-06-01 佛山市顺德区中山大学研究院 用于计算型存储指令集运算的优化方法、系统及存储介质

Also Published As

Publication number Publication date
JP5941493B2 (ja) 2016-06-29
CN104679478B (zh) 2019-03-15
JP2015164061A (ja) 2015-09-10
CN104598204A (zh) 2015-05-06
TW201533662A (zh) 2015-09-01
KR101411064B1 (ko) 2014-06-27
US20110153700A1 (en) 2011-06-23
CN104699456B (zh) 2019-02-15
US20150089197A1 (en) 2015-03-26
CN104598203B (zh) 2019-02-15
JP2014160500A (ja) 2014-09-04
TW201533661A (zh) 2015-09-01
GB2552117A (en) 2018-01-10
US9495166B2 (en) 2016-11-15
TW201123008A (en) 2011-07-01
TWI562067B (en) 2016-12-11
CN104598204B (zh) 2018-01-02
GB2483575A (en) 2012-03-14
TW201533660A (zh) 2015-09-01
GB201715480D0 (en) 2017-11-08
TWI575456B (zh) 2017-03-21
GB2483575B (en) 2017-11-01
CN102103487B (zh) 2017-08-01
US20150089196A1 (en) 2015-03-26
WO2011084214A3 (en) 2011-09-01
JP5941498B2 (ja) 2016-06-29
US20150089195A1 (en) 2015-03-26
JP6126162B2 (ja) 2017-05-10
CN102103487A (zh) 2011-06-22
US9495165B2 (en) 2016-11-15
US9747105B2 (en) 2017-08-29
KR20120099236A (ko) 2012-09-07
US9501281B2 (en) 2016-11-22
JP6615819B2 (ja) 2019-12-04
JP2012530978A (ja) 2012-12-06
JP2017152016A (ja) 2017-08-31
TWI610235B (zh) 2018-01-01
GB2552117B (en) 2018-07-18
CN104598203A (zh) 2015-05-06
JP5567668B2 (ja) 2014-08-06
CN104699459A (zh) 2015-06-10
CN104699459B (zh) 2018-01-09
TWI531969B (zh) 2016-05-01
TW201730760A (zh) 2017-09-01
JP2014194825A (ja) 2014-10-09
DE112010004887T5 (de) 2012-09-20
CN104679478A (zh) 2015-06-03
US20170351519A1 (en) 2017-12-07
GB201119720D0 (en) 2011-12-28
US10684855B2 (en) 2020-06-16
CN104699457B (zh) 2019-02-15
CN104699457A (zh) 2015-06-10
TWI575455B (zh) 2017-03-21
WO2011084214A2 (en) 2011-07-14

Similar Documents

Publication Publication Date Title
CN104699456A (zh) 用于在单个指令中执行移位和异或运算的方法和装置
JP7052171B2 (ja) プロセッサ、システム及び方法
US20210357217A1 (en) Systems and methods for executing a fused multiply-add instruction for complex numbers
CN102004628B (zh) 用于执行点积运算的指令和逻辑
CN111177647A (zh) 实行16位浮点矩阵点积指令的系统和方法
EP3929732A1 (en) Matrix data scatter and gather by row
CN116097212A (zh) 用于16比特浮点矩阵点积指令的装置、方法和系统
CN108268279B (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