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

上传人:1****2 文档编号:4039374 上传时间:2018-08-12 格式:PDF 页数:24 大小:1.38MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410857443.2

申请日:

2010.12.15

公开号:

CN104699456A

公开日:

2015.06.10

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/30申请日:20101215|||公开

IPC分类号:

G06F9/30; G06F9/38

主分类号:

G06F9/30

申请人:

英特尔公司

发明人:

V·戈帕尔; J·D·吉尔福德; E·奥兹图科; W·K·费格哈利; G·M·沃尔里齐; M·G·迪克森

地址:

美国加利福尼亚州

优先权:

12/653,704 2009.12.17 US

专利代理机构:

上海专利商标事务所有限公司31100

代理人:

毛力

PDF下载: PDF下载
内容摘要

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

权利要求书

权利要求书
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)指令。

说明书

说明书用于在单个指令中执行移位和异或运算的方法和装置
本申请是美国优先权号为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、Xeontm、XScaletm和/或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,以用于存储指令和数据且用于存储图形命令、数据和纹理。MCH 116用于在处理器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遇到复杂宏指令时,微代码ROM 232提供完成该运算所需的微指令。
许多宏指令被转换成单个微指令,而其它宏指令需要若干微指令来完 成整个操作。在一个实施例中,如果需要四个以上微指令来完成宏指令, 则解码器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 Volume 2: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包含滚动散列的位折算版本。在一个实施例中,检查组块边界通过检 查前导零的最小数量来执行。
在其它实施例中,移位和异或指令可被用于其它有用的计算机运算和 算法。此外,诸实施例有助于提高密集使用移位和异或运算的许多程序的 性能。
因此,公开了用于执行移位和异或指令的技术。虽然已在附图中描述 和示出了某些示例性实施例,但应理解,这些实施例仅仅是为了说明而非 限制宽泛的本发明,且本发明不限于所示和所描述的特定构造和布置,因 为本领域技术人员在学习本公开内容时能想到各种其它变型。在诸如本技 术的发展迅速且进一步进步难以预见的技术领域中,所公开的实施例的布 置和细节可能如实现技术进步所促进地容易被修改,但不背离本公开的原 理或所附权利要求的范围。

用于在单个指令中执行移位和异或运算的方法和装置.pdf_第1页
第1页 / 共24页
用于在单个指令中执行移位和异或运算的方法和装置.pdf_第2页
第2页 / 共24页
用于在单个指令中执行移位和异或运算的方法和装置.pdf_第3页
第3页 / 共24页
点击查看更多>>
资源描述

《用于在单个指令中执行移位和异或运算的方法和装置.pdf》由会员分享,可在线阅读,更多相关《用于在单个指令中执行移位和异或运算的方法和装置.pdf(24页珍藏版)》请在专利查询网上搜索。

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1