Connect public, paid and private patent data with Google Patents Public Datasets

用于实施混洗和其他操作的执行单元

Info

Publication number
CN101097512A
CN101097512A CN 200710129008 CN200710129008A CN101097512A CN 101097512 A CN101097512 A CN 101097512A CN 200710129008 CN200710129008 CN 200710129008 CN 200710129008 A CN200710129008 A CN 200710129008A CN 101097512 A CN101097512 A CN 101097512A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
operation
unit
execution
method
statement
Prior art date
Application number
CN 200710129008
Other languages
English (en)
Other versions
CN101097512B (zh )
Inventor
A·蒂莫尔
H·S·劳
M·阿布达拉
S·-W·付
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • 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
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • 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

用于实施混洗和其他操作的执行单元

技术领域

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

背景技术

微处理器可包括用于对数据实施操作的各种执行单元。这样的

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

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

可利用例如一些指令集体系结构中的微操作(pop)的子指令操 作来执行基于混洗的指令(连同其他指令),以使所需要的操作能 够取得期望的结果。这样的pop可包括混洗、插入、移位、并置、 压缩、解压缩以及诸如此类。此外,这样的指令的不同风格可(用于 支持数据的不同数据粒度。在^f叚定所有这些的情况下,可能存在有 控制变化和数据通路需求。因此,可能需要多个执行单元来实施这

些操作并且实施这些操作可能会用多个pop和机器周期。因此,提

高了功率需求并且出现了不希望的等待时间。 发明内容

本发明提供一种方法,包括:在公共执行单元中接收第一压缩 数据操作数和第二压缩数据操作数;以及响应于第一指令,在所述

公共执行单元中操纵所述第一压缩数据操作数和所述第二压缩数据 操作数以按照所述执行单元的局部控制器的局部控制信号生成输 出。

本发明还提供一种设备,包括:用于对第一数据操作数和第二 数据操作数实施操作的执行单元;以及耦合到所述执行单元的控制

器,如果所述控制器将与所述操作相关联的输入全局控制信号映射 到局部控制信号上,则所述控制器用于提供所述局部控制信号以控 制所述执行单元。

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

本发明还提供一种制品,包括机器可读存储介质,所述机器可 读存储介质包括指令,在由机器执行时,所述指令使所述机器能够 实施一种方法,所述方法包括:接收与指令相关联的控制信息;确 定所述控制信息是全局的还是局部的;基于所述指令的类型,控制

执行单元的第一级选择器;以及为所述控制信息解码,如果所述控 制信息是局部的,则向所述执行单元的第二级选择器中的每个提供 局部控制信号,否则为所述第二级选择器中的每个将所述控制信息 映射到所述局部控制信号上。

附图说明

图1是依照本发明一个实施例的混洗单元的高级^L图的框图。 图2是依照本发明一个实施例的混洗单元的一部分的更详细视 图的框图。

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

图4是依照本发明实施例的执行单元的第一级选择器的框图。 图5是依照本发明实施例的方法的流程图。 图6是依照本发明一个实施例的系统的框图。

具体实施方式

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

在各种实施例中,通过单个微操作(pop),单个执行单元可处 理各种与混洗有关的指令和其他指令。虽然本发明实施例的范围不 限于此方面,但在各种实现中,执行单元可以被制造为处理128位 操作数而且可以被配置为支持多个指令宽度,包括例如像64位多媒 体扩展(MMX)指令这样的64位指令和128位单指令多数据(SIMD) 指令。例如,取决于体系结构,利用该执行单元,可以响应一个p叩 或指令在单个机器周期内执行用于实施包括对各种形式的数据的混

洗操作、移位操作以及其他算术运算的不同的类混洗功能的各种指 令。例如,在各种实施例中,可执行例如在Intel⑧体系结构(IA-32) 处理器或其扩展中可用的指令集体系结构(ISA)或其他ISA的指令。

尤其如此的是,本发明的实施例提供了例如字节、字、双字和四字 的不同数据粒度的指令的性能。在其中指令被解码为例如p叩的子 指令的一个实施例中,通过在单个处理周期内于单个执行单元或多 个并行执行单元中实施单个pop,可执行指令。对该公开内容来说, 可以交换使用术语>op"和"指令",除非涉及特定的处理器体系 结构,在该特定的处理器体系结构中,指令可以解码为例如pop的

子指令。

现在参见图1,示出的是依照本发明一个实施例的混洗单元的高

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

仍然参见图1,第一级的选择器的输出可耦合到第二级的多个选 择器的输入。具体地,耦合第二级的第一选择器30a以接收第一级的 第一选择器20a的输出,而耦合第二级的第二选择器35a以接收第一

级的第二选择器25a的输出。如图所示,第二级的第一选择器30a和 第二选择器35a可以是8:1选择器。可以耦合类似的第一选择器30b 和第二选择器35b以接收第一级的第一选择器20b和第二选择器25b 的输出。

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

对于例如混洗指令的其他指令,可使用例如来自立即数据的局 部控制信息。更具体地,可提供局部控制信号,其中每个数据字段 接收不同的控制信息。因此可^"照这些局部信号控制混洗单元10的 至少更低级的选择器。换句话_沈,全局控制信号匹配相对位置选择, 而局部控制信号匹配绝对位置选择。为了在单个执行单元中实现这 些根本不同的指令,可利用局部控制信号来控制混洗单元10的选择

器,从而支持各种与混洗有关的指令。然而,为了进一步使类移位

指令能够在混洗单元10中执行,可提供将全局信号映射到这些局部

信号上的逻辑。相应地,提供可以在单个pop中执行各种不同指令

的类属混洗体系结构。

仍然参见图1,第二级选择器的输出可以耦合至第三级选择器的

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

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

多路复用器提供了所有的第 一 源操作数和第二源操作数。注意到,

如图2所示的混洗单元100仅仅是混洗单元的一半。也就是说,对 于操作数Sl和S2的其他部分,可存在相同的独立数据通路(如图2 左侧的点表示的),如图1的高级数据通路A和B中所示的。

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

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

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

操纵器150包括第一逻辑门152a,第一逻辑门152a可以是耦合以接 收来自第三多路复用器130中对应一个的输出和来自控制器155的 输出的"与"门。该输出可对应于预定值,取决于所期望的特定操 作,它可以全部为1或全部为0。逻辑门152a的输出耦合到第二逻辑 门154a,第二逻辑门15《可以是耦合以在第一逻辑门1523的输出和 特殊常量之间实施逻辑"或"的"或"门,取决于给定的实现,它 可以全部为0或1。注意到,耦合类似的逻辑门152b和154b以接收 来自对应的第四多路复用器135的输入和来自控制器155的输入。 当然,耦合类似的逻辑电路以^接收来自第三多路复用器130和第四 多路复用器135中的其他多路复用器的输入。

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

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

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

利用依照本发明实施例的混洗单元并且基于该指令的性质,可 以在第一级选择器中选择第一源操作数S1的高部分和低部分。接着,

第二级选择器中的每个字节级多路复用器可基于第二数据操作数S2 (它还可以作为立即数据来提供)中对应字节的低三位来实施选择。 最后,可控制第三级选择器以/人第二级为给定的字节选择第一字节 多路复用器或第二字节多路复用器的输出。注意到,在图3的示例 中,对于某些字节(即字节1和15),可按照控制第三级多路复用 器的控制逻辑来应用常量。这样,可在单个周期内于执行单元中执 行该局部控制类型的指令。

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

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

注意到,因为该指令可同时使用第一源操作数的更高字节(即 S1H)和第二源操作数的更低字节(即S2L),第一选择器级中3:1 多路复用器(例如图1的第一级选择器20a)的实现可允许S1H数 据和S2L数据的这种同时选择。

为了选择从第二级多路复用器和第三级多路复用器输出什么数 据,可将对应于移位计数的附加立即数据、即全局控制映射到局部

控制信号上以使能够从混洗单元中选择适当的数据。下面表1中所 示的是压缩数据移位对齐操作的示例。在表1中,两个数据操作数,

即可将具有字节0-15的第一数据操作数(Sl)与具有字节16-31 的第二数据操作数(S2)并置。特定输出取决于移位计数。因此, 如表1所示,取决于移位计数(例如从0到31 ),可将选择的字节 从混洗单元输出以生成128位结果。 表1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 s2

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 s1

SHR计数

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 00000

16 15 14 13 12 11 10 9 8 6 5 4 3 2 1 1 00001

17 16 15 14 13 12 11 10 9 8 6 5 3 2 2 00010

18 17 16 15 14 13 12 11 10 9 8 6 5 4 3 3 00011

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 4 00100

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 5 00101

21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 6 00110

22 21 20 19 18 17 16 16 14 13 12 11 10 9 8 7 7 00111

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 8 01000

24 23 22 21 20 19 18 17 16 1S 14 13 12 11 10 9 9 01001

25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 10 01010

26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 11 01011

27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 12 01100

28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 13 01101

29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 14 01110

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 15 011"

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 16 10000

0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 17 10001

0 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 18 簡o

0 0 0 31 30 29 28 27 26 25 24 23 22 21 20 19 19 100"

0 0 0 31 30 29 28 27 26 25 24 23 22 21 20 20 icnoo

0 0 0 0 0 31 30 29 28 27 26 25 24 23 22 21 21 10101

0 0 0 0 0 0 31 30 29 28 27 26 26 24 23 22 22 10110

0 0 0 0 0 0 31 30 29 28 27 26 25 24 23 23 10111

0 0 0 0 0 0 0 0 31 30 29 28 27 26 25 24 24 11000

0 0 0 0 0 0 0 0 0 31 30 29 28 27 26 25 25 11001

0 0 0 0 0 0 0 0 0 31 30 29 28 27 26 26 11010

0 0 0 0 0 0 0 0 0 0 0 31 30 29 28 27 27 11011

0 0 0 0 0 0 0 0 0 0 0 0 31 30 29 28 28 11100

0 0 0 0 0 0 0 0 0 0 0 0 0 31 30 29 29 11101

0 0 0 0 0 0 0 0 0 0 0 0 0 31 30 30 11110

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 31 11111

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >=32

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

表2 <table>table see original document page 16</column></row> <table>

的各种控制信号的框图。

现在参见图5,示出的是依照本发明实施例的方法的流程图。如

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

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

在各种实施例中,将要在执行单元中执行的指令可包括传送指 令、混洗指令、加法指令、乘法指令等。虽然是对128位压缩数据 操作数实施本文描述的操作,但执行单元可以对若干不同压缩数据 格式的压缩数据进行操作。例如,在一个实施例中,可以对以下三 种格式的其中一种格式的压缩数据进行操作:"压缩字节"格式(例 如PADDb )、"压缩字"格式(例如PADDw)或"压缩双字"(dword ) 格式(例如PADDd)。压缩字节格式包括八个单独的8位数据元素; 压缩字格式包括四个单独的16位数据元素;压缩dword格式包括两

个单独的32位数据元素。虽然已经参考128位数据格式讨论了操作, 但是可类似地将指令用于其他压缩数据格式以及其他类型的数据操 作数。

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

第一处理器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日发布的"力cce/erated G/'ap/n'"尸orf/"&//ace 5^ec^ca"ow, Aev/i7.o" 20" 。 4乍为备选,点只于 点互连539可耦合这些部件。

随后,芯片组590可通过接口 596耦合到第一总线516。在一个 实施例中,第一总线516可以是如1995年6月的"PC/ Loca/ Sm S/?e"ykaf/o",尸nx/wc"o" Ke^S7'ow, 2.7"戶斤定义的夕卜i殳部4牛互

连(PCI)总线,或者可以是例如PCI Express总线的总线,或者可 以是另一第三代输入/输出(1/0)互连总线,尽管本发明的范围不受

限于此。

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

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

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

Claims (21)

1.一种方法,包括: 在公共执行单元中接收第一压缩数据操作数和第二压缩数据操作数;以及 响应于第一指令,在所述公共执行单元中操纵所述第一压缩数据操作数和所述第二压缩数据操作数以按照所述执行单元的局部控制器的局部控制信号生成输出。
9. 如权利要求8所述的设备,其中所述执行单元包括第一级第 一多路复用器和第一级第二多路复用器,所述第一级第一多路复用 器用于接收所述第一数据操作数和所述第二数据操作数的第一部 分,而所述第一级第二多路复用器用于接收所述第一数据操作数的 第一部分和所述第二数据操作数的第二部分。
10. 如权利要求9所述的设备,还包括第二级第三多路复用器 和第二级第四多路复用器,所述第二级第三多路复用器用于接收所 述第一级第一多路复用器的输出,而所述笫二级第四多路复用器用 于接收所述第一级第二多路复用器的输出。
11. 如权利要求10所述的设备,还包括耦合到所述第二级第三 多路复用器和所述第二级第四多路复用器的数据操纵器,所述数据 操纵器用于基于所述局部控制信号操纵来自所述第二级第三多路复 用器和所述第二级第四多路复用器的输出。
12. 如权利要求11所述的设备,还包括耦合到所述数据操纵器 的输出的第三级多路复用器,其中所述第三级多路复用器输出所述 操作的结果。
13. 如权利要求9所述的设备,还包括用于向所述第一级第一 多路复用器和所述第 一级第二多路复用器提供所述第 一数据操作数 和所述第二数据操作数的一组选择器。
14. 如权利要求8所述的设备,其中所述控制器接收多个不同 指令并且为所述多个不同指令解码以在单个周期内于所述执行单元 中执行所述多个不同指令中的每个。
15. 如权利要求8所述的i殳备,其中所述执行单元包括用于执 行混洗指令和移位指令的混洗单元,所述混洗单元具有至少两条独立数据通路,每条所述数据通路用于接收所述第一数据操作数和所 述第二数据操作数。
16. 如权利要求8所述的设备,其中所述全局控制信号用于所 述第一数据操作数和所述第二数据操作数的所有字段。
17. 如权利要求16所述的设备,其中所述局部控制信号在每字 段的基础上用于所述第一数据操作数和所述第二数据操作数。
18. —种系统,包括:具有两条数据通路的执行单元,每条所述数据通路具有:用于接收第一源操作凄丈和第二源操作数并且基于操作类型 选择部分以输出的第一选择器级;用于接收所述第一选择器级的输出的第二选择器级,其中 所述第二选择器级由局部控制信号来控制,每个所述局部控制 信号与结果的多个数据字段的其中之一相关联;以及用于接收所述第二选择器级的输出的第三选择器级,其中 所述第三选择器级用于在每数据字段的基础上于所述第二级选 择器的输出或设定值之间选择以生成所述结果;以及 耦合到所述执行单元的动态随机存取存储器(DRAM)。
19. 如权利要求18所述的系统,还包括用于为立即值解码以生 成所述局部控制信号的控制器。
20. 如权利要求19所述的系统,其中所述控制器将输入全局控 制信号映射到所述局部控制信号上。
21. 如权利要求18所述的系统,其中所述执行单元在单个周期 内处理混洗操作或移位操作。
22. 如权利要求21所述的系统,还包括控制器,所述控制器用《/v爐娃& M M曰A •立即值解码以生成所述局部控制信号并且针对所述移位操作将移位计 数映射到所述局部控制信号上。
23. —种制品,包括机器可读存储介质,所述机器可读存储介 质包括指令,在由机器执行时,所述指令使所述机器能够实施一种 方法,所述方法包括:接收与指令相关联的控制信息;确定所述控制信息是全局的还是局部的;基于所述指令的类型,控制执行单元的第一级选择器;以及为所述控制信息解码,如果所述控制信息是局部的,则向所述 执行单元的第二级选择器中的每个提供局部控制信号,否则为所述 第二级选择器中的每个将所述控制信息映射到所述局部控制信号 上。
24. 如权利要求23所述的制品,其中所述方法还包括在单个周 期内于所述执行单元中执行所述指令。
25. 如权利要求23所述的制品,其中所述方法还包括接收与第 二指令相关联的控制信息并且在单个周期内于所述执行单元中执行 所述第二指令,其中所述第一指令包括混洗操作而所述第二指令包 括移位操作。
26. 如权利要求23所述的制品,其中所述方法还包括通过所述 局部控制信号独立地控制所述执行单元的第 一 数据通路和第二数据 通路。
27. 如权利要求23所述的制品,其中所述方法还包括在所述第 一级选择器中同时选择第一源操作数的高部分和第二源操作数的低 部分,其中所述指令的类型包括移位操作。
28. 如权利要求23所述的制品,其中所述指令包括压缩数据移 位对齐指令,所述压缩数据移位对齐指令用于响应于所述控制信息 将第一源操作数和第二源操作数并置到目的位置中。
CN 200710129008 2006-06-30 2007-06-30 用于实施混洗和移位操作的方法、设备和系统 CN101097512B (zh)

Priority Applications (2)

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

Publications (2)

Publication Number Publication Date
CN101097512A true true CN101097512A (zh) 2008-01-02
CN101097512B CN101097512B (zh) 2011-05-18

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 Before (1)

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

Country Status (2)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473093A (zh) * 2009-06-30 2012-05-23 英特尔公司 对多个通道中的紧缩数据解压缩
CN104025039A (zh) * 2011-12-22 2014-09-03 英特尔公司 打包数据操作掩码串接处理器、方法、系统及指令

Families Citing this family (6)

* 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
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
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 浪潮(北京)电子信息产业有限公司 一种数据混洗方法和数据混洗单元

Family Cites Families (14)

* 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
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
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
US7272622B2 (en) 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
USD490283S1 (en) * 2003-07-15 2004-05-25 Oneida, Ltd. Spoon

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473093A (zh) * 2009-06-30 2012-05-23 英特尔公司 对多个通道中的紧缩数据解压缩
US9081562B2 (en) 2009-06-30 2015-07-14 Intel Corporation Unpacking packed data in multiple lanes
US9086872B2 (en) 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
CN102473093B (zh) * 2009-06-30 2016-06-01 英特尔公司 对多个通道中的紧缩数据解压缩
CN104025039A (zh) * 2011-12-22 2014-09-03 英特尔公司 打包数据操作掩码串接处理器、方法、系统及指令
US9600285B2 (en) 2011-12-22 2017-03-21 Intel Corporation Packed data operation mask concatenation processors, methods, systems and instructions

Also Published As

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

Similar Documents

Publication Publication Date Title
US20050108312A1 (en) Bitstream buffer manipulation with a SIMD merge instruction
US20020133682A1 (en) System with wide operand architecture, and method
WO2013081588A1 (en) Instruction and logic to provide vector horizontal compare functionality
US20140372727A1 (en) Instruction and logic to provide vector blend and permute functionality
US20150046672A1 (en) Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
CN1577257A (zh) 具有取整和移位的单指令多数据整数高位乘法
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US20140189320A1 (en) Instruction for Determining Histograms
US20120254589A1 (en) System, apparatus, and method for aligning registers
US20140019732A1 (en) Systems, apparatuses, and methods for performing mask bit compression
CN101488084A (zh) 执行屏蔽加载和存储操作的指令和逻辑
US20130339649A1 (en) Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
US20050198474A1 (en) Bit field manipulation
US20080059764A1 (en) Integral parallel machine
US20080215855A1 (en) Execution unit for performing shuffle and other operations
US20140006756A1 (en) Systems, Apparatuses, and Methods for Performing a Shuffle and Operation (Shuffle-Op)
US20130275730A1 (en) Apparatus and method of improved extract instructions
US6128725A (en) Microprocessor with an instruction for setting or clearing a bit field
US20140189322A1 (en) Systems, Apparatuses, and Methods for Masking Usage Counting
WO2013095662A1 (en) Systems, apparatuses, and methods for performing vector packed unary encoding using masks
US20120254588A1 (en) Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US20140208065A1 (en) Apparatus and method for mask register expand operation
US6654870B1 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
US6976049B2 (en) Method and apparatus for implementing single/dual packed multi-way addition instructions having accumulation options
US20130283021A1 (en) Apparatus and method of improved insert instructions

Legal Events

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