CN102169427B - 实施混洗指令的设备、方法和操纵数据操作数的设备 - Google Patents

实施混洗指令的设备、方法和操纵数据操作数的设备 Download PDF

Info

Publication number
CN102169427B
CN102169427B CN 201110076943 CN201110076943A CN102169427B CN 102169427 B CN102169427 B CN 102169427B CN 201110076943 CN201110076943 CN 201110076943 CN 201110076943 A CN201110076943 A CN 201110076943A CN 102169427 B CN102169427 B CN 102169427B
Authority
CN
Grant status
Grant
Patent type
Prior art keywords
stage
multiplexer
data
operand
output
Prior art date
Application number
CN 201110076943
Other languages
English (en)
Other versions
CN102169427A (zh )
Inventor
M·阿布达拉
H·S·劳
S·-W·付
A·蒂莫尔
T·加特
Original Assignee
英特尔公司
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
Grant date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; 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 operations

Abstract

本发明涉及实施混洗指令的设备、方法和操纵数据操作数的设备。根据本发明的方法包括:在第一级第一多路复用器中接收第二数据操作数的第一部分和第一数据操作数;在第一级第二多路复用器中接收第一数据操作数的第一部分和第二数据操作数的第二部分;在第二级第三多路复用器中接收来自第一级第一多路复用器的选择的部分;在第二级第四多路复用器中接收来自第一级第二多路复用器的选择的部分;基于局部控制信号在数据操纵器中操纵来自第二级第三多路复用器和第二级第四多路复用器的选择的部分;在第三级多路复用器中接收数据操纵器的输出,其中第三级多路复用器用于输出混洗指令的结果。

Description

实施混洗指令的设备、方法和操纵数据操作数的设备

[0001] 本申请是申请号为200710129008.8、申请日为2007年6月30日、发明名称为“用

于实施混洗和其他操作的执行单元”的发明专利申请的分案申请。

技术领域

[0002] 本发明涉及基于处理器的系统,并且更具体地涉及处理器或其他处理引擎内的执行单元。

背景技术

[0003] 微处理器可包括用于对数据实施操作的各种执行单元。这样的执行单元可包括算术逻辑单元(ALU)、浮点、整数和其他专用的执行单元。为了改进多媒体应用连同其他应用的效率,单指令多数据(SIMD)体系结构可使一个指令能够同时对若干数据、而不是对单个数据进行操作。在并行硬件执行的情况中,可以利用单个指令实施多个操作,从而改进了性倉泛。

[0004]为了使各种操作能够利用这样的体系结构,可以对驻留在寄存器或其他位置的压缩数据实施所谓的混洗操作以在例如SIMD操作的其他操作之前重新布置数据元素。另外的指令使得一个或多个位置中的数据移位给定的量以提供期望的结果。一些处理器包括用于对例如128位操作数的较大的数据操作数实施混洗操作的多个单元。通过需要使用多个单元,产生以下结果:就芯片面积而言不动产增加以及在操作期间功耗增加。此外,在不同执行单元中实施例如移位操作的其他操作,从而需要面积和功耗方面的额外开支。

[0005] 可利用例如一些指令集体系结构中的微操作(μ op)的子指令操作来执行基于混洗的指令(连同其他指令),以使所需要的操作能够取得期望的结果。这样的μ op可包括混洗、插入、移位、并置、压缩、解压缩以及诸如此类。此外,这样的指令的不同风格可用于支持数据的不同数据粒度。在假定所有这些的情况下,可能存在有控制变化和数据通路需求。因此,可能需要多个执行单元来实施这些操作并且实施这些操作可能会用多个μ op和机器周期。因此,提高了功率需求并且出现了不希望的等待时间。

发明内容

[0006] 本发明旨在解决上述问题。在本发明中,通过单个微操作(μ op),单个执行单元可处理各种与混洗有关的指令和其他指令。

[0007] 本发明提供一种方法,包括:在公共执行单元中接收第一压缩数据操作数和第二压缩数据操作数;以及响应于第一指令,在所述公共执行单元中操纵所述第一压缩数据操作数和所述第二压缩数据操作数以按照所述执行单元的局部控制器的局部控制信号生成输出。

[0008] 本发明还提供一种设备,包括:用于对第一数据操作数和第二数据操作数实施操作的执行单元;以及耦合到所述执行单元的控制器,如果所述控制器将与所述操作相关联的输入全局控制信号映射到局部控制信号上,则所述控制器用于提供所述局部控制信号以控制所述执行单元。

[0009] 本发明还提供一种系统,包括具有两条数据通路的执行单元和耦合到所述执行单元的动态随机存取存储器(DRAM),每条所述数据通路具有:用于接收第一源操作数和第二源操作数并且基于操作类型选择部分以输出的第一选择器级;用于接收所述第一选择器级的输出的第二选择器级,其中所述第二选择器级由局部控制信号来控制,每个所述局部控制信号与结果的多个数据字段的其中之一相关联;以及用于接收所述第二选择器级的输出的第三选择器级,其中所述第三选择器级用于在每数据字段的基础上于所述第二级选择器的输出或设定值之间选择以生成所述结果。

[0010] 本发明还提供一种制品,包括机器可读存储介质,所述机器可读存储介质包括指令,在由机器执行时,所述指令使所述机器能够实施一种方法,所述方法包括:接收与指令相关联的控制信息;确定所述控制信息是全局的还是局部的;基于所述指令的类型,控制执行单元的第一级选择器;以及为所述控制信息解码,如果所述控制信息是局部的,则向所述执行单元的第二级选择器中的每个提供局部控制信号,否则为所述第二级选择器中的每个将所述控制信息映射到所述局部控制信号上。

[0011] 本发明还提供一种用于对第一数据操作数和第二数据操作数实施混洗指令的设备,包括:处理器,所述处理器包括:用于实施所述混洗指令的第一执行单元,所述第一执行单元包括第一级第一多路复用器和第一级第二多路复用器,所述第一级第一多路复用器用于接收所述第二数据操作数的第一部分和所述第一数据操作数,而所述第一级第二多路复用器用于接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述第一级第一多路复用器和所述第一级第二多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;第二级第三多路复用器和第二级第四多路复用器,所述第二级第三多路复用器用于接收所述第一级第一多路复用器的输出,而所述第二级第四多路复用器用于接收所述第一级第二多路复用器的输出,所述第二级第三多路复用器和所述第二级第四多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;耦合到所述第二级第三多路复用器和所述第二级第四多路复用器的数据操纵器,所述数据操纵器用于基于局部控制信号操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的输出;以及耦合到所述数据操纵器的输出的第三级多路复用器,其中所述第三级多路复用器用于输出所述混洗指令的结果。

[0012] 本发明还提供一种用于对第一数据操作数和第二数据操作数实施混洗指令的方法,包括:在第一级第一多路复用器中接收所述第二数据操作数的第一部分和所述第一数据操作数;在第一级第二多路复用器中接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述第一级第一多路复用器和所述第一级第二多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;在第二级第三多路复用器中接收来自所述第一级第一多路复用器的选择的部分;在第二级第四多路复用器中接收来自所述第一级第二多路复用器的选择的部分,所述第二级第三多路复用器和所述第二级第四多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;基于局部控制信号在数据操纵器中操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的选择的部分;在第三级多路复用器中接收所述数据操纵器的输出,其中所述第三级多路复用器用于输出所述混洗指令的结果。[0013] 本发明还提供一种用于操纵第一数据操作数和第二数据操作数的设备,包括:用于对所述第一数据操作数和所述第二数据操作数实施操作的执行单元;以及耦合到所述执行单元以提供局部控制信号来控制所述执行单元的控制器,其中所述执行单元包括第一级第一多路复用器和第一级第二多路复用器,所述第一级第一多路复用器用于接收所述第二数据操作数的第一部分和所述第一数据操作数,而所述第一级第二多路复用器用于接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述设备还包括第二级第三多路复用器和第二级第四多路复用器,所述第二级第三多路复用器用于接收所述第一级第一多路复用器的输出,而所述第二级第四多路复用器用于接收所述第一级第二多路复用器的输出。

附图说明

[0014] 图1是依照本发明一个实施例的混洗单元的高级视图的框图。

[0015] 图2是依照本发明一个实施例的混洗单元的一部分的更详细视图的框图。

[0016] 图3示出依照本发明实施例的、执行混洗指令的混洗单元的输入和输出的示例。

[0017] 图4是依照本发明实施例的执行单元的第一级选择器的框图。

[0018] 图5是依照本发明实施例的方法的流程图。

[0019] 图6是依照本发明一个实施例的系统的框图。

具体实施方式

[0020] 本发明的实施例涉及基于处理器的系统,并且更具体地涉及处理器或其他处理引擎内的执行单元。

[0021] 在各种实施例中,通过单个微操作(μ op),单个执行单元可处理各种与混洗有关的指令和其他指令。虽然本发明实施例的范围不限于此方面,但在各种实现中,执行单元可以被制造为处理128位操作数而且可以被配置为支持多个指令宽度,包括例如像64位多媒体扩展(MMX)指令这样的64位指令和128位单指令多数据(SMD)指令。例如,取决于体系结构,利用该执行单元,可以响应一个μ op或指令在单个机器周期内执行用于实施包括对各种形式的数据的混洗操作、移位操作以及其他算术运算的不的类混洗功能的各种指令。例如,在各种实施例中,可执行例如在Intel ®体系结构(ΙΑ-32)处理器或其扩展中可用的指令集体系结构(ISA)或其他ISA的指令。尤其如此的是,本发明的实施例提供了例如字节、字、双字和四字的不同数据粒度的指令的性能。在其中指令被解码为例如μ op的子指令的一个实施例中,通过在单个处理周期内于单个执行单元或多个并行执行单元中实施单个μορ,可执行指令。对该公开内容来说,可以交换使用术语“μορ”和“指令”,除非涉及特定的处理器体系结构,在该特定的处理器体系结构中,指令可以解码为例如μορ的子指令。

[0022] 现在参见图1,示出的是依照本发明一个实施例的混洗单元的高级视图的框图。如图1所示,混洗单元10包括例如多路复用器或其他选择机制的多级选择器。在图1的实施例中,混洗单元10可具有两条独立数据通路,即第一数据通路A和第二数据通路B。耦合每条独立数据通路以至少接收第一源操作数(即SI)和第二源操作数(即S2)的部分。具体地,如图1所示,第一级选择器包括第一选择器20a和第二选择器25a。虽然为了容易说明而示出为单独的选择器,但是将会理解,可以存在多个第一选择器20a和第二选择器25a。如图所示,耦合第一选择器20a以接收三个输入并提供单个输出(即3: I选择)。具体地,耦合第一选择器20a以接收第一源操作数SI的高部分和低部分以及第二源操作数S2的高部分。耦合第二选择器25a以接收第一源操作数SI的高部分和第二源操作数S2的低部分。类似地,第一级选择器包括第一选择器20b和第二选择器25b。如图所示,耦合这些选择器以分别接收第二源操作数S2的高部分和低部分以及第一操作数SI的低部分(在第一选择器20b中)、第一源操作数SI的高部分和第二源操作数S2的低部分(在第二选择器25b中)。虽然是利用图1实施例中的第一级选择器的该特定实现示出的,但是将会理解,本发明的范围不限于此方面。

[0023] 仍然参见图1,第一级的选择器的输出可耦合到第二级的多个选择器的输入。具体地,耦合第二级的第一选择器30a以接收第一级的第一选择器20a的输出,而耦合第二级的第二选择器35a以接收第一级的第二选择器25a的输出。如图所示,第二级的第一选择器30a和第二选择器35a可以是8: I选择器。可以耦合类似的第一选择器30b和第二选择器35b以接收第一级的第一选择器20b和第二选择器25b的输出。

[0024] 在各种实现中,为了放松定时约束并使基于混洗的操作在单个周期内能够执行,可以向两条数据通路提供数据操作数的完整长度,即源操作数SI和源操作数S2的所有位。这样,允许更多的时间用于解码对μ op和例如立即数据的相关控制信息的操作以控制数据通路的较低部分。另外,可基于将要实施的操作类型由控制信号来控制由第一级选择器实施的选择。也就是说,这些第一级选择器基于功能性的性质(例如混洗或移位)来准备输入数据,但并不基于例如立即数据的、与指令相关联的完整控制信息来选择数据。相反,立即数据的更大部分可用于控制在第二级选择器和更低级选择器中实施的选择。注意到,控制信息可采用全局控制信息或局部控制信息的形式。也就是说,取决于指令类型,可以全局或局部控制数据通路。例如,基于一条控制信息,可类似地控制所有数据字段。这种全局控制的一个示例是移位控制。立即数据或其他控制信息可提供应用于所有数据字段的移位量,并且相应地,可同样将这样的全局控制信号应用于混洗单元10的至少更低级的选择器。正如下文将进一步描述的,可将这样的全局控制信号映射到耦合至各种选择器的局部控制信号。

[0025] 对于例如混洗指令的其他指令,可使用例如来自立即数据的局部控制信息。更具体地,可提供局部控制信号,其中每个数据字段接收不同的控制信息。因此可按照这些局部信号控制混洗单元10的至少更低级的选择器。换句话说,全局控制信号匹配相对位置选择,而局部控制信号匹配绝对位置选择。为了在单个执行单元中实现这些根本不同的指令,可利用局部控制信号来控制混洗单元10的选择器,从而支持各种与混洗有关的指令。然而,为了进一步使类移位指令能够在混洗单元10中执行,可提供将全局信号映射到这些局部信号上的逻辑。相应地,提供可以在单个μ OP中执行各种不同指令的类属混洗体系结构。

[0026] 仍然参见图1,第二级选择器的输出可以耦合至第三级选择器的输入。具体地,如图1所示,耦合第三级选择器40以接收第二级的第一选择器30a和第二选择器35a的输出(即B2H和B1H)。此外,还耦合选择器40以接收常量值(即Const),可基于利用使选择的常量或特殊值能够通过的指令接收的控制信号来生成该常量值。虽然是利用单个选择器40示出的,但是将会理解,在给定的实现中,在第三级中可存在多个选择器以实现所示的3: I选择操作。在一些实现中,代替3: I选择器,可在第二级选择器和第三级选择器之间耦合数据操纵单元以使能够实现具有2: I选择器的第三级选择器。还如图1所示,第三级选择器45接收第二级选择器30b和35b的输出(即B2L和BlL)和常量值。虽然是利用图1实施例中的该特定实现示出的,但是将会理解,本发明的范围不限于此方面。

[0027] 虽然图1示出了混洗单元的整体结构的高级框图,现在参见图2,示出的是依照本发明一个实施例的混洗单元的一部分的更详细视图的框图。如图2所示,示出了执行单元100。在高级处,执行单元100包括第一级选择器,第一级选择器包括第一多路复用器120a-120h(从类属上说为第一多路复用器(mux) 120)和第二多路复用器125a_125h(从类属上说为第二多路复用器125)。在各种实现中,可基于将要执行的例如移位或混洗操作的指令的给定功能性来控制第一多路复用器120和第二多路复用器125。因此,这些多路复用器的控制不取决于例如利用指令提供的立即数据的全部控制位。如图所示,耦合第一多路复用器120和第二多路复用器125中的每个以接收第一源操作数SI和第二源操作数S2的各种字节级部分,通过一组旁路多路复用器IlOa-1lOp(从类属上说为旁路多路复用器110)将它们提供给这些多路复用器。注意到,旁路多路复用器110向第一级多路复用器提供了所有的第一源操作数和第二源操作数。注意到,如图2所示的混洗单元100仅仅是混洗单元的一半。也就是说,对于操作数SI和S2的其他部分,可存在相同的独立数据通路(如图2左侧的点表示的),如图1的高级数据通路A和B中所示的。

[0028] 仍然参见图2,第一多路复用器120和第二多路复用器125的输出耦合到多个第二级选择器,第二级选择器包括第三多路复用器130a-130h(从类属上说为第三多路复用器130)和第四多路复用器135a-135h(从类属上说为第四多路复用器135)。可以基于局部控制信号来控制这些第二级多路复用器以使得能够实现移位或混洗连同其他操作。

[0029] 对于由全局信号控制的操作,例如移位操作,可将全局信号映射到接着提供的局部信号上以控制第三多路复用器130和第四多路复用器135。更具体地,如图2所示,执行单元100包括控制器155。控制器155可以是微控制器、程控逻辑、固件、软件、硬件或其组合。控制器155可用于接收与指令(即μ op和完整控制信息(例如来自直接总线的立即数据))相关联的输入控制信号并生成用于控制第二级选择器以及第三级选择器(将在下面进一步描述)的控制信号。在各种实现中,控制器155可适于实施全局控制信号到局部控制信号上的映射。也就是说,取决于指令类型,控制器155可接收输入全局信号,又将接收的输入全局信号映射到局部控制信号上,局部控制信号耦合到第二级选择器和第三级选择器的各种选择器(即在数据字段的基础上)。

[0030] 第二级选择器的输出可耦合到数据操纵器150。在各种实现中,数据操纵器150可用于对输入数据实施各种逻辑操作。这样,可避免与将3: I多路复用器用于第三级选择器相关联的大小和开支(即功耗和定时)。一般地,可以实现数据操纵器150以选择输入数据或特殊值(例如常量)。也就是说,数据操纵器150可生成常量值以避免在第三级对

3: I多路复用器的需求。具体地,如图2所示,数据操纵器150包括第一逻辑门152a,第一逻辑门152a可以是耦合以接收来自第三多路复用器130中对应一个的输出和来自控制器155的输出的“与”门。该输出可对应于预定值,取决于所期望的特定操作,它可以全部为I或全部为O。逻辑门152a的输出耦合到第二逻辑门154a,第二逻辑门154a可以是耦合以在第一逻辑门152a的输出和特殊常量之间实施逻辑“或”的“或”门,取决于给定的实现,它可以全部为O或I。注意到,耦合类似的逻辑门152,和154b以接收来自对应的第四多路复用器135的输入和来自控制器155的输入。当然,耦合类似的逻辑电路以接收来自第三多路复用器130和第四多路复用器135中的其他多路复用器的输入。

[0031] 随后,可耦合包括第五多路复用器140a_140h(从类属上说为第五多路复用器140)的第三级选择器以接收来自数据操纵器150的输出并且可控制第三级选择器以向驱动器160提供输出。如图2所示,由于存在于数据操纵器150中的逻辑,第五多路复用器140可以是2: I多路复用器。在各种实现中,控制器155可提供控制信号以控制第五多路复用器 140。

[0032] 现在参见图3,示出的是依照本发明实施例的、执行混洗指令的混洗单元的输入和输出的示例。如图3的实施例所示,混洗指令可以是压缩的、基于字节的混洗指令PSHUFB。利用该指令,可实施基于字节的混洗。此外,可以针对结果的给定字节选择例如常量的预定值。

[0033] 具体地,如图3所示,可以从寄存器或从存储器获得的第一源操作数SI被表示为XMMl0在图3的实施例中,第一源操作数SI可以是128位,尽管本发明的范围不限于此方面。可以从寄存器或存储器获得的第二源操作数S2(在图3中表示为XMM2)可提供用于将第一源操作数SI的数据字节混洗到目的地中的位置中的控制,该目的地还可对应于XMMl。如图所示,可基于第二数据操作数的各个字节中的控制来混洗第一源操作数的各个对应字节。

[0034] 利用依照本发明实施例的混洗单元并且基于该指令的性质,可以在第一级选择器中选择第一源操作数Si的高部分和低部分。接着,第二级选择器中的每个字节级多路复用器可基于第二数据操作数S2 (它还可以作为立即数据来提供)中对应字节的低三位来实施选择。最后,可控制第三级选择器以从第二级为给定的字节选择第一字节多路复用器或第二字节多路复用器的输出。注意到,在图3的示例中,对于某些字节(即字节I和15),可按照控制第三级多路复用器的控制逻辑来应用常量。这样,可在单个周期内于执行单元中执行该局部控制类型的指令。

[0035] 在一个实施例中,另一混洗指令可以是SHUFPS,它可以将多个(例如四个)单浮点(FP)数中的任何一个从第一源操作数混洗到目的位置的低两个目的字段并且由来自第二源操作数的多个(例如四个)单FP数中的任何一个生成高两个目的字段。立即值可用作表示将如何混洗数据元素的控制字。更具体地,控制字的预定位可表示通过由局部控制器生成的局部控制信号将第一操作数中这四个数据元素中的哪个混洗到目的寄存器的第一或最低数据元素中。

[0036] 类似地,还可在单个周期内于执行单元中执行全局类型的指令。例如,如压缩数据移位对齐(PALIGNR)指令的对齐指令可用于并置两个128位源操作数并且在由立即数据携带的移位计数的控制下将它们移位到128位目的位置中。在一个实施例中,立即数据的一部分可用于选择更高位或更低位和第一级多路复用器中的第一源操作数或第二源操作数。

[0037] 注意到,因为该指令可同时使用第一源操作数的更高字节(即SlH)和第二源操作数的更低字节(即S2L),第一选择器级中3: I多路复用器(例如图1的第一级选择器20a)的实现可允许SlH数据和S2L数据的这种同时选择。[0038] 为了选择从第二级多路复用器和第三级多路复用器输出什么数据,可将对应于移位计数的附加立即数据、即全局控制映射到局部控制信号上以使能够从混洗单元中选择适当的数据。下面表1中所示的是压缩数据移位对齐操作的示例。在表1中,两个数据操作数,即可将具有字节0-15的第一数据操作数(SI)与具有字节16-31的第二数据操作数(S2)并置。特定输出取决于移位计数。因此,如表1所示,取决于移位计数(例如从O到31),可将选择的字节从混洗单元输出以生成128位结果。

[0039]表1

[0040]

Figure CN102169427BD00101

[0041] 为了实现此移位操作,可存在下面表2中示出的用于各种计数值的控制信号。具体地,示出了第一级控制和第三级控制。表2中列出为“2至I高”的列至列出为“3至I低”的列对应于第一级选择器,而列出为“3至I [15] ”的列对应于用于第三级的控制。当然,其他实现是可能的。

[0042]表 2

[0043]

Figure CN102169427BD00111

[0044] 注意到,表2所示的前四列(即“2至1高”至“3至I低”)的控制可映射以提供来自图4所示的第一级选择器的输出。具体地,图4示出了被配置得与图1的第一级多路复用器相同的第一级多路复用器和用于使源操作数的对应部分能够输出以执行移位对齐指令的各种控制信号的框图。

[0045] 现在参见图5,示出的是依照本发明实施例的方法的流程图。如图5所示,方法300可用于在执行单元中实施操作。方法300可通过在执行单元的第一级选择器中接收第一数据操作数和第二数据操作数而开始(块310)。源操作数可存在于处理器寄存器中或者总有一个源操作数可从存储器中获得。此数据可遵循指令的操作码。基于标识将要实施的操作类型的操作码,可在第一级选择器中选择操作数的给定部分。更具体地,可基于指令类型来选择第一和/或第二操作数的选择的高/低部分(块320)。接着可向第二级选择器提供选择的部分(块330)。接着,可确定指令类型是否是全局类型的(菱形340)。注意到,虽然示出为在块310-330之后发生,但是可与这些步骤并行实施操作类型的确定。

[0046] 如果确定操作是全局类型的操作,则控制转到块350,其中可将全局控制映射到局部控制。注意到,这样的映射可与第一级选择器中的处理并行发生。自块350和菱形340中的任何一个,控制转到块360。在此,可以按照局部控制来控制第二级选择器(块360)。为了获得期望的结果,可向第三级选择器提供第二级选择器的输出(块370)。最后,可以按照局部控制来确定第三级选择器的输出(块380)。这样,可以在单个周期内于执行单元中按照单个μ op执行各种指令。

[0047] 在各种实施例中,将要在执行单元中执行的指令可包括传送指令、混洗指令、加法指令、乘法指令等。虽然是对128位压缩数据操作数实施本文描述的操作,但执行单元可以对若干不同压缩数据格式的压缩数据进行操作。例如,在一个实施例中,可以对以下三种格式的其中一种格式的压缩数据进行操作:“压缩字节”格式(例如PADDb)、“压缩字”格式(例如PADDw)或“压缩双字”(dword)格式(例如PADDd)。压缩字节格式包括八个单独的8位数据元素;压缩字格式包括四个单独的16位数据元素;压缩dword格式包括两个单独的32位数据元素。虽然已经参考128位数据格式讨论了操作,但是可类似地将指令用于其他压缩数据格式以及其他类型的数据操作数。

[0048] 可在许多不同系统类型中实现实施例。现在参见图6,示出的是依照本发明实施例的系统的框图。如图6所示,多处理器系统500是点对点互连系统,并且包括通过点对点互连550耦合的第一处理器570和第二处理器580。如图6所示,处理器570和580各自可以是包括第一处理器核和第二处理器核的多核处理器(即处理器570包括处理器核574a和574b以及处理器580包括处理器核584a和584b)。各种核可包括依照本发明实施例的执行单元。第一处理器570还包括存储控制器中心(MCH) 572以及点对点(P-P)接口 576和578。类似地,第二处理器580包括MCH 582以及P-P接口 586和588。如图6所示,MCH572和582将处理器耦合到相应的存储器,即存储器532和存储器534,它们可以是本地连接到相应处理器的主存储器的部分。

[0049] 第一处理器570和第二处理器580可分别通过P_P互连552和554耦合到芯片组590。如图6所示,芯片组590包括P-P接口 594和598。此外,芯片组590包括使芯片组590与高性能图形引擎538耦合的接口 592。在一个实施例中,高级图形端口(AGP)总线539可用于将图形引擎538耦合到芯片组590。AGP总线539可符合加利福尼亚州圣克拉拉的 Intel 公司于 1998 年 5 月 4 日发布的 “Accelerated Graphics Port InterfaceSpecificat1n, Revis1n 2.0”。作为备选,点对点互连539可稱合这些部件。

[0050] 随后,芯片组590可通过接口 596耦合到第一总线516。在一个实施例中,第一总线 516 可以是如 1995 年 6 月的 “PCI Local Bus Specificat1n, Product1n Vers1n,Revis1n 2.1”所定义的外设部件互连(PCI)总线,或者可以是例如PCI Express总线的总线,或者可以是另一第三代输入/输出(1/0)互连总线,尽管本发明的范围不受限于此。

[0051] 如图6所不,各种1/0装置514连同总线桥518可稱合到第一总线516,总线桥518将第一总线516耦合到第二总线520。在一个实施例中,第二总线520可以是低引脚计数(LPC)总线。各种装置可以耦合到第二总线520,它们包括例如键盘/鼠标522、通信装置526和例如盘驱动器或其他大容量存储装置的数据存储单元528,在一个实施例中,数据存储单元528可包括代码530。另外,音频I/O 524可耦合到第二总线520。注意到,其他体系结构是可能的。例如,代替图6的点对点体系结构,系统可实现多点总线或另一这样的体系结构。

[0052] 实施例可用代码实现并且可存储在存储介质上,在存储介质上存储有可用于为系统编程以执行指令的指令。存储介质可包括但不限于任何类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体器件(例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM))、磁卡或光卡或适于存储电子指令的任何其他类型的介质。

[0053] 虽然已经相对于有限数量的实施例对本发明进行了描述,但本领域的技术人员将会意识到由此而来的许多修改和变更。所附权利要求书旨在包括落在本发明的实质精神和范围内的所有这样的修改和变更。

Claims (18)

1.一种用于对第一数据操作数和第二数据操作数实施混洗指令的设备,包括: 处理器,所述处理器包括:用于实施所述混洗指令的第一执行单元,所述第一执行单元包括第一级第一多路复用器和第一级第二多路复用器,所述第一级第一多路复用器用于接收所述第二数据操作数的第一部分和所述第一数据操作数,而所述第一级第二多路复用器用于接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述第一级第一多路复用器和所述第一级第二多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;第二级第三多路复用器和第二级第四多路复用器,所述第二级第三多路复用器用于接收所述第一级第一多路复用器的输出,而所述第二级第四多路复用器用于接收所述第一级第二多路复用器的输出,所述第二级第三多路复用器和所述第二级第四多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;耦合到所述第二级第三多路复用器和所述第二级第四多路复用器的数据操纵器,所述数据操纵器用于基于局部控制信号操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的输出;以及耦合到所述数据操纵器的输出的第三级多路复用器,其中所述第三级多路复用器用于输出所述混洗指令的结果。
2.如权利要求1所述的设备,其中,所述数据操纵器包括用于对来自所述第二级第三多路复用器和所述第二级第四多路复用器的所述输出实施逻辑操作的多个逻辑门。
3.如权利要求1所述的设备,其中,所述处理器包括用于提供所述局部控制信号以控制所述第一执行单元的控制器。
4.如权利要求 1所述的设备,其中所述处理器还包括存储控制器中心。
5.如权利要求1所述的设备,其中所述处理器包括多核处理器,所述多核处理器包括第一核和第二核,其中,所述第一执行单元包括在所述第一核内。
6.如权利要求1所述的设备,其中所述第一数据操作数和所述第二数据操作数包括压缩数据操作数。
7.如权利要求1所述的设备,其中所述混洗指令允许实施基于字节的混洗,并针对所述结果的给定字节提供常量的选择。
8.一种用于对第一数据操作数和第二数据操作数实施混洗指令的方法,包括: 在第一级第一多路复用器中接收所述第二数据操作数的第一部分和所述第一数据操作数; 在第一级第二多路复用器中接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述第一级第一多路复用器和所述第一级第二多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分; 在第二级第三多路复用器中接收来自所述第一级第一多路复用器的选择的部分; 在第二级第四多路复用器中接收来自所述第一级第二多路复用器的选择的部分,所述第二级第三多路复用器和所述第二级第四多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分; 基于局部控制信号在数据操纵器中操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的选择的部分; 在第三级多路复用器中接收所述数据操纵器的输出,其中所述第三级多路复用器用于输出所述混洗指令的结果。
9.如权利要求8所述的方法,还包括提供所述局部控制信号以控制所述数据操纵器。
10.如权利要求8所述的方法,其中所述第一数据操作数和所述第二数据操作数包括压缩数据操作数。
11.如权利要求8所述的方法,其中所述混洗指令允许实施基于字节的混洗,并针对所述结果的给定字节提供常量的选择。
12.一种用于操纵第一数据操作数和第二数据操作数的设备,包括: 用于对所述第一数据操作数和所述第二数据操作数实施操作的执行单元;以及 耦合到所述执行单元以提供局部控制信号来控制所述执行单元的控制器,其中所述执行单元包括第一级第一多路复用器和第一级第二多路复用器,所述第一级第一多路复用器用于接收所述第二数据操作数的第一部分和所述第一数据操作数,而所述第一级第二多路复用器用于接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述设备还包括第二级第三多路复用器和第二级第四多路复用器,所述第二级第三多路复用器用于接收所述第一级第一多路复用器的输出,而所述第二级第四多路复用器用于接收所述第一级第二多路复用器的输出。
13.如权利要求12所述的设备,还包括耦合到所述第二级第三多路复用器和所述第二级第四多路复用器的数据操纵器,所述数据操纵器用于基于局部控制信号操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的输出。
14.如权利要求13所述的设备,还包括耦合到所述数据操纵器的输出的第三级多路复用器,其中所述第三级多 路复用器用于输出所述操作的结果。
15.如权利要求12所述的设备,还包括用于向所述第一级第一多路复用器和所述第一级第二多路复用器提供所述第一数据操作数和所述第二数据操作数的一组选择器。
16.如权利要求12所述的设备,其中所述控制器用于接收多个不同指令并且为所述多个不同指令解码以在单个周期内于所述执行单元中执行所述多个不同指令中的每个。
17.如权利要求12所述的设备,其中所述执行单元包括用于实施混洗指令和移位指令的混洗单元,所述混洗单元具有至少两条独立数据通路,每条所述数据通路用于接收所述第一数据操作数和所述第二数据操作数。
18.如权利要求13所述的设备,其中所述局部控制信号在每字段的基础上用于所述第一数据操作数和所述第二数据操作数。
CN 201110076943 2006-06-30 2007-06-30 实施混洗指令的设备、方法和操纵数据操作数的设备 CN102169427B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US11/478884 2006-06-30
US11478884 US7761694B2 (en) 2006-06-30 2006-06-30 Execution unit for performing shuffle and other operations
US11/478,884 2006-06-30
CN200710129008.82007.06.30 2007-06-30

Publications (2)

Publication Number Publication Date
CN102169427A true CN102169427A (zh) 2011-08-31
CN102169427B true CN102169427B (zh) 2014-09-10

Family

ID=39011363

Family Applications (2)

Application Number Title Priority Date Filing Date
CN 201110076943 CN102169427B (zh) 2006-06-30 2007-06-30 实施混洗指令的设备、方法和操纵数据操作数的设备
CN 200710129008 CN101097512B (zh) 2006-06-30 2007-06-30 用于实施混洗和移位操作的方法、设备和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN 200710129008 CN101097512B (zh) 2006-06-30 2007-06-30 用于实施混洗和移位操作的方法、设备和系统

Country Status (2)

Country Link
US (1) US7761694B2 (zh)
CN (2) CN102169427B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US9086872B2 (en) 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same
US9600285B2 (en) 2011-12-22 2017-03-21 Intel Corporation Packed data operation mask concatenation processors, methods, systems and instructions
WO2013095668A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing vector packed compression and repeat
EP2798454A4 (en) * 2011-12-30 2016-08-17 Intel Corp Simd variable shift and rotate using control manipulation
CN105022609A (zh) * 2015-08-05 2015-11-04 浪潮(北京)电子信息产业有限公司 一种数据混洗方法和数据混洗单元
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115812A (en) 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6304956B1 (en) 1999-03-25 2001-10-16 Rise Technology Company Using two barrel shifters to implement shift, rotate, rotate with carry, and shift double as specified by the X86 architecture
CN1506807A (zh) 2002-10-25 2004-06-23 英特尔公司 用于数据的并行右移位合并的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3812467A (en) * 1972-09-25 1974-05-21 Goodyear Aerospace Corp Permutation network
US4139899A (en) * 1976-10-18 1979-02-13 Burroughs Corporation Shift network having a mask generator and a rotator
US5844825A (en) * 1996-09-03 1998-12-01 Wang; Song-Tine Bidirectional shifter circuit
US6041404A (en) * 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6122725A (en) * 1998-03-31 2000-09-19 Intel Corporation Executing partial-width packed data instructions
US6282770B1 (en) * 1999-06-09 2001-09-04 John E. Lyon Sliding door hardware assembly and method
US6243728B1 (en) * 1999-07-12 2001-06-05 Sony Corporation Of Japan Partitioned shift right logic circuit having rounding support
EP1261912A2 (en) 2000-03-08 2002-12-04 Sun Microsystems, Inc. Processing architecture having sub-word shuffling and opcode modification
WO2001089131A3 (en) * 2000-05-05 2002-06-13 Ruby B Lee A method and system for performing permutations using permutation instructions based on modified omega and flip stages
USD490283S1 (en) * 2003-07-15 2004-05-25 Oneida, Ltd. Spoon

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115812A (en) 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6304956B1 (en) 1999-03-25 2001-10-16 Rise Technology Company Using two barrel shifters to implement shift, rotate, rotate with carry, and shift double as specified by the X86 architecture
CN1506807A (zh) 2002-10-25 2004-06-23 英特尔公司 用于数据的并行右移位合并的方法和装置

Also Published As

Publication number Publication date Type
CN102169427A (zh) 2011-08-31 application
US7761694B2 (en) 2010-07-20 grant
US20080215855A1 (en) 2008-09-04 application
CN101097512A (zh) 2008-01-02 application
CN101097512B (zh) 2011-05-18 grant

Similar Documents

Publication Publication Date Title
US6539467B1 (en) Microprocessor with non-aligned memory access
US6061780A (en) Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
US6230253B1 (en) Executing partial-width packed data instructions
US20040054877A1 (en) Method and apparatus for shuffling data
US6192467B1 (en) Executing partial-width packed data instructions
US20050108312A1 (en) Bitstream buffer manipulation with a SIMD merge instruction
US6122725A (en) Executing partial-width packed data instructions
US20040054879A1 (en) Method and apparatus for parallel table lookup using SIMD instructions
US5053986A (en) Circuit for preservation of sign information in operations for comparison of the absolute value of operands
US6889318B1 (en) Instruction fusion for digital signal processor
US6230257B1 (en) Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US20120254592A1 (en) Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
US6453405B1 (en) Microprocessor with non-aligned circular addressing
JPH09311786A (ja) データ処理装置
US20080072011A1 (en) SIMD type microprocessor
US20140372727A1 (en) Instruction and logic to provide vector blend and permute functionality
US6438680B1 (en) Microprocessor
US20140189320A1 (en) Instruction for Determining Histograms
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US6343359B1 (en) Result forwarding cache
US6209080B1 (en) Constant reconstruction processor that supports reductions in code size and processing time
CN101488084A (zh) 执行屏蔽加载和存储操作的指令和逻辑
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US20140019732A1 (en) Systems, apparatuses, and methods for performing mask bit compression
US20120254589A1 (en) System, apparatus, and method for aligning registers

Legal Events

Date Code Title Description
C06 Publication
C10 Request of examination as to substance
C14 Granted