CN101097512B - 用于实施混洗和移位操作的方法、设备和系统 - Google Patents

用于实施混洗和移位操作的方法、设备和系统 Download PDF

Info

Publication number
CN101097512B
CN101097512B CN2007101290088A CN200710129008A CN101097512B CN 101097512 B CN101097512 B CN 101097512B CN 2007101290088 A CN2007101290088 A CN 2007101290088A CN 200710129008 A CN200710129008 A CN 200710129008A CN 101097512 B CN101097512 B CN 101097512B
Authority
CN
China
Prior art keywords
data
level
instruction
performance element
selector
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.)
Active
Application number
CN2007101290088A
Other languages
English (en)
Other versions
CN101097512A (zh
Inventor
M·阿布达拉
H·S·劳
S·-W·付
A·蒂莫尔
T·加特
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.)
Lotte Group Co.,Ltd.
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 CN101097512A publication Critical patent/CN101097512A/zh
Application granted granted Critical
Publication of CN101097512B publication Critical patent/CN101097512B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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

Abstract

本发明涉及用于实施混洗和移位操作的方法、设备和系统。在一个实施例中,本发明包括在公共执行单元中接收第一数据操作数和第二数据操作数并且响应于指令而操纵这些操作数以按照执行单元的局部控制器的局部控制信号生成输出的方法。可在单个周期内于公共执行单元中执行例如混洗操作和移位操作的各种指令类型。还描述和要求保护其他实施例。

Description

用于实施混洗和移位操作的方法、设备和系统
技术领域
本发明涉及基于处理器的系统,并且更具体地涉及处理器或其他处理引擎内的执行单元。
背景技术
微处理器可包括用于对数据实施操作的各种执行单元。这样的执行单元可包括算术逻辑单元(ALU)、浮点、整数和其他专用的执行单元。为了改进多媒体应用连同其他应用的效率,单指令多数据(SIMD)体系结构可使一个指令能够同时对若干数据、而不是对单个数据进行操作。在并行硬件执行的情况中,可以利用单个指令实施多个操作,从而改进了性能。
为了使各种操作能够利用这样的体系结构,可以对驻留在寄存器或其他位置的压缩数据实施所谓的混洗操作以在例如SIMD操作的其他操作之前重新布置数据元素。另外的指令使得一个或多个位置中的数据移位给定的量以提供期望的结果。一些处理器包括用于对例如128位操作数的较大的数据操作数实施混洗操作的多个单元。通过需要使用多个单元,产生以下结果:就芯片面积而言不动产增加以及在操作期间功耗增加。此外,在不同执行单元中实施例如移位操作的其他操作,从而需要面积和功耗方面的额外开支。
可利用例如一些指令集体系结构中的微操作(μop)的子指令操作来执行基于混洗的指令(连同其他指令),以使所需要的操作能够取得期望的结果。这样的μop可包括混洗、插入、移位、并置、压缩、解压缩以及诸如此类。此外,这样的指令的不同风格可用于支持数据的不同数据粒度。在假定所有这些的情况下,可能存在有控制变化和数据通路需求。因此,可能需要多个执行单元来实施这些操作并且实施这些操作可能会用多个μop和机器周期。因此,提高了功率需求并且出现了不希望的等待时间。
发明内容
本发明旨在解决上述问题。在本发明中,通过单个微操作(μop),单个执行单元可处理各种与混洗有关的指令和其他指令。
本发明提供一种方法,包括:在公共执行单元中接收第一压缩数据操作数和第二压缩数据操作数;以及响应于第一指令,在所述公共执行单元中操纵所述第一压缩数据操作数和所述第二压缩数据操作数以按照所述执行单元的局部控制器的局部控制信号生成输出。
本发明还提供一种设备,包括:用于对第一数据操作数和第二数据操作数实施操作的执行单元;以及耦合到所述执行单元的控制器,如果所述控制器将与所述操作相关联的输入全局控制信号映射到局部控制信号上,则所述控制器用于提供所述局部控制信号以控制所述执行单元。
本发明还提供一种系统,包括具有两条数据通路的执行单元和耦合到所述执行单元的动态随机存取存储器(DRAM),每条所述数据通路具有:用于接收第一源操作数和第二源操作数并且基于操作类型选择部分以输出的第一选择器级;用于接收所述第一选择器级的输出的第二选择器级,其中所述第二选择器级由局部控制信号来控制,每个所述局部控制信号与结果的多个数据字段的其中之一相关联;以及用于接收所述第二选择器级的输出的第三选择器级,其中所述第三选择器级用于在每数据字段的基础上于所述第二级选择器的输出或设定值之间选择以生成所述结果。
本发明还提供一种制品,包括机器可读存储介质,所述机器可读存储介质包括指令,在由机器执行时,所述指令使所述机器能够实施一种方法,所述方法包括:接收与指令相关联的控制信息;确定所述控制信息是全局的还是局部的;基于所述指令的类型,控制执行单元的第一级选择器;以及为所述控制信息解码,如果所述控制信息是局部的,则向所述执行单元的第二级选择器中的每个提供局部控制信号,否则为所述第二级选择器中的每个将所述控制信息映射到所述局部控制信号上。
附图说明
图1是依照本发明一个实施例的混洗单元的高级视图的框图。
图2是依照本发明一个实施例的混洗单元的一部分的更详细视图的框图。
图3示出依照本发明实施例的、执行混洗指令的混洗单元的输入和输出的示例。
图4是依照本发明实施例的执行单元的第一级选择器的框图。
图5是依照本发明实施例的方法的流程图。
图6是依照本发明一个实施例的系统的框图。
具体实施方式
本发明的实施例涉及基于处理器的系统,并且更具体地涉及处理器或其他处理引擎内的执行单元。
在各种实施例中,通过单个微操作(μop),单个执行单元可处理各种与混洗有关的指令和其他指令。虽然本发明实施例的范围不限于此方面,但在各种实现中,执行单元可以被制造为处理128位操作数而且可以被配置为支持多个指令宽度,包括例如像64位多媒体扩展(MMX)指令这样的64位指令和128位单指令多数据(SIMD)指令。例如,取决于体系结构,利用该执行单元,可以响应一个μop或指令在单个机器周期内执行用于实施包括对各种形式的数据的混洗操作、移位操作以及其他算术运算的不同的类混洗功能的各种指令。例如,在各种实施例中,可执行例如在
Figure G200710129008801D00031
体系结构(IA-32)处理器或其扩展中可用的指令集体系结构(ISA)或其他ISA的指令。尤其如此的是,本发明的实施例提供了例如字节、字、双字和四字的不同数据粒度的指令的性能。在其中指令被解码为例如μop的子指令的一个实施例中,通过在单个处理周期内于单个执行单元或多个并行执行单元中实施单个μop,可执行指令。对该公开内容来说,可以交换使用术语“μop”和“指令”,除非涉及特定的处理器体系结构,在该特定的处理器体系结构中,指令可以解码为例如μop的子指令。
现在参见图1,示出的是依照本发明一个实施例的混洗单元的高级视图的框图。如图1所示,混洗单元10包括例如多路复用器或其他选择机制的多级选择器。在图1的实施例中,混洗单元10可具有两条独立数据通路,即第一数据通路A和第二数据通路B。耦合每条独立数据通路以至少接收第一源操作数(即S1)和第二源操作数(即S2)的部分。具体地,如图1所示,第一级选择器包括第一选择器20a和第二选择器25a。虽然为了容易说明而示出为单独的选择器,但是将会理解,可以存在多个第一选择器20a和第二选择器25a。如图所示,耦合第一选择器20a以接收三个输入并提供单个输出(即3:1选择)。具体地,耦合第一选择器20a以接收第一源操作数S1的高部分和低部分以及第二源操作数S2的高部分。耦合第二选择器25a以接收第一源操作数S1的高部分和第二源操作数S2的低部分。类似地,第一级选择器包括第一选择器20b和第二选择器25b。如图所示,耦合这些选择器以分别接收第二源操作数S2的高部分和低部分以及第一操作数S1的低部分(在第一选择器20b中)、第一源操作数S1的高部分和第二源操作数S2的低部分(在第二选择器25b中)。虽然是利用图1实施例中的第一级选择器的该特定实现示出的,但是将会理解,本发明的范围不限于此方面。
仍然参见图1,第一级的选择器的输出可耦合到第二级的多个选择器的输入。具体地,耦合第二级的第一选择器30a以接收第一级的第一选择器20a的输出,而耦合第二级的第二选择器35a以接收第一级的第二选择器25a的输出。如图所示,第二级的第一选择器30a和第二选择器35a可以是8:1选择器。可以耦合类似的第一选择器30b和第二选择器35b以接收第一级的第一选择器20b和第二选择器25b的输出。
在各种实现中,为了放松定时约束并使基于混洗的操作在单个周期内能够执行,可以向两条数据通路提供数据操作数的完整长度,即源操作数S1和源操作数S2的所有位。这样,允许更多的时间用于解码对μop和例如立即数据的相关控制信息的操作以控制数据通路的较低部分。另外,可基于将要实施的操作类型由控制信号来控制由第一级选择器实施的选择。也就是说,这些第一级选择器基于功能性的性质(例如混洗或移位)来准备输入数据,但并不基于例如立即数据的、与指令相关联的完整控制信息来选择数据。相反,立即数据的更大部分可用于控制在第二级选择器和更低级选择器中实施的选择。注意到,控制信息可采用全局控制信息或局部控制信息的形式。也就是说,取决于指令类型,可以全局或局部控制数据通路。例如,基于一条控制信息,可类似地控制所有数据字段。这种全局控制的一个示例是移位控制。立即数据或其他控制信息可提供应用于所有数据字段的移位量,并且相应地,可同样将这样的全局控制信号应用于混洗单元10的至少更低级的选择器。正如下文将进一步描述的,可将这样的全局控制信号映射到耦合至各种选择器的局部控制信号。
对于例如混洗指令的其他指令,可使用例如来自立即数据的局部控制信息。更具体地,可提供局部控制信号,其中每个数据字段接收不同的控制信息。因此可按照这些局部信号控制混洗单元10的至少更低级的选择器。换句话说,全局控制信号匹配相对位置选择,而局部控制信号匹配绝对位置选择。为了在单个执行单元中实现这些根本不同的指令,可利用局部控制信号来控制混洗单元10的选择器,从而支持各种与混洗有关的指令。然而,为了进一步使类移位指令能够在混洗单元10中执行,可提供将全局信号映射到这些局部信号上的逻辑。相应地,提供可以在单个μop中执行各种不同指令的类属混洗体系结构。
仍然参见图1,第二级选择器的输出可以耦合至第三级选择器的输入。具体地,如图1所示,耦合第三级选择器40以接收第二级的第一选择器30a和第二选择器35a的输出(即B2H和B1H)。此外,还耦合选择器40以接收常量值(即Const),可基于利用使选择的常量或特殊值能够通过的指令接收的控制信号来生成该常量值。虽然是利用单个选择器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中的每个以接收第一源操作数S1和第二源操作数S2的各种字节级部分,通过一组旁路多路复用器110a-110p(从类属上说为旁路多路复用器110)将它们提供给这些多路复用器。注意到,旁路多路复用器110向第一级多路复用器提供了所有的第一源操作数和第二源操作数。注意到,如图2所示的混洗单元100仅仅是混洗单元的一半。也就是说,对于操作数S1和S2的其他部分,可存在相同的独立数据通路(如图2左侧的点表示的),如图1的高级数据通路A和B中所示的。
仍然参见图2,第一多路复用器120和第二多路复用器125的输出耦合到多个第二级选择器,第二级选择器包括第三多路复用器130a-130h(从类属上说为第三多路复用器130)和第四多路复用器135a-135h(从类属上说为第四多路复用器135)。可以基于局部控制信号来控制这些第二级多路复用器以使得能够实现移位或混洗连同其他操作。
对于由全局信号控制的操作,例如移位操作,可将全局信号映射到接着提供的局部信号上以控制第三多路复用器130和第四多路复用器135。更具体地,如图2所示,执行单元100包括控制器155。控制器155可以是微控制器、程控逻辑、固件、软件、硬件或其组合。控制器155可用于接收与指令(即μop和完整控制信息(例如来自直接总线的立即数据))相关联的输入控制信号并生成用于控制第二级选择器以及第三级选择器(将在下面进一步描述)的控制信号。在各种实现中,控制器155可适于实施全局控制信号到局部控制信号上的映射。也就是说,取决于指令类型,控制器155可接收输入全局信号,又将接收的输入全局信号映射到局部控制信号上,局部控制信号耦合到第二级选择器和第三级选择器的各种选择器(即在数据字段的基础上)。
第二级选择器的输出可耦合到数据操纵器150。在各种实现中,数据操纵器150可用于对输入数据实施各种逻辑操作。这样,可避免与将3:1多路复用器用于第三级选择器相关联的大小和开支(即功耗和定时)。一般地,可以实现数据操纵器150以选择输入数据或特殊值(例如常量)。也就是说,数据操纵器150可生成常量值以避免在第三级对3:1多路复用器的需求。具体地,如图2所示,数据操纵器150包括第一逻辑门152a,第一逻辑门152a可以是耦合以接收来自第三多路复用器130中对应一个的输出和来自控制器155的输出的“与”门。该输出可对应于预定值,取决于所期望的特定操作,它可以全部为1或全部为0。逻辑门152a的输出耦合到第二逻辑门154a,第二逻辑门154a可以是耦合以在第一逻辑门152a的输出和特殊常量之间实施逻辑“或”的“或”门,取决于给定的实现,它可以全部为0或1。注意到,耦合类似的逻辑门152b和154b以接收来自对应的第四多路复用器135的输入和来自控制器155的输入。当然,耦合类似的逻辑电路以接收来自第三多路复用器130和第四多路复用器135中的其他多路复用器的输入。
随后,可耦合包括第五多路复用器140a-140h(从类属上说为第五多路复用器140)的第三级选择器以接收来自数据操纵器150的输出并且可控制第三级选择器以向驱动器160提供输出。如图2所示,由于存在于数据操纵器150中的逻辑,第五多路复用器140可以是2:1多路复用器。在各种实现中,控制器155可提供控制信号以控制第五多路复用器140。
现在参见图3,示出的是依照本发明实施例的、执行混洗指令的混洗单元的输入和输出的示例。如图3的实施例所示,混洗指令可以是压缩的、基于字节的混洗指令PSHUFB。利用该指令,可实施基于字节的混洗。此外,可以针对结果的给定字节选择例如常量的预定值。
具体地,如图3所示,可以从寄存器或从存储器获得的第一源操作数S1被表示为XMM1。在图3的实施例中,第一源操作数S1可以是128位,尽管本发明的范围不限于此方面。可以从寄存器或存储器获得的第二源操作数S2(在图3中表示为XMM2)可提供用于将第一源操作数S1的数据字节混洗到目的地中的位置中的控制,该目的地还可对应于XMM1。如图所示,可基于第二数据操作数的各个字节中的控制来混洗第一源操作数的各个对应字节。
利用依照本发明实施例的混洗单元并且基于该指令的性质,可以在第一级选择器中选择第一源操作数S1的高部分和低部分。接着,第二级选择器中的每个字节级多路复用器可基于第二数据操作数S2(它还可以作为立即数据来提供)中对应字节的低三位来实施选择。最后,可控制第三级选择器以从第二级为给定的字节选择第一字节多路复用器或第二字节多路复用器的输出。注意到,在图3的示例中,对于某些字节(即字节1和15),可按照控制第三级多路复用器的控制逻辑来应用常量。这样,可在单个周期内于执行单元中执行该局部控制类型的指令。
在一个实施例中,另一混洗指令可以是SHUFPS,它可以将多个(例如四个)单浮点(FP)数中的任何一个从第一源操作数混洗到目的位置的低两个目的字段并且由来自第二源操作数的多个(例如四个)单FP数中的任何一个生成高两个目的字段。立即值可用作表示将如何混洗数据元素的控制字。更具体地,控制字的预定位可表示通过由局部控制器生成的局部控制信号将第一操作数中这四个数据元素中的哪个混洗到目的寄存器的第一或最低数据元素中。
类似地,还可在单个周期内于执行单元中执行全局类型的指令。例如,如压缩数据移位对齐(PALIGNR)指令的对齐指令可用于并置两个128位源操作数并且在由立即数据携带的移位计数的控制下将它们移位到128位目的位置中。在一个实施例中,立即数据的一部分可用于选择更高位或更低位和第一级多路复用器中的第一源操作数或第二源操作数。
注意到,因为该指令可同时使用第一源操作数的更高字节(即S1H)和第二源操作数的更低字节(即S2L),第一选择器级中3:1多路复用器(例如图1的第一级选择器20a)的实现可允许S1H数据和S2L数据的这种同时选择。
为了选择从第二级多路复用器和第三级多路复用器输出什么数据,可将对应于移位计数的附加立即数据、即全局控制映射到局部控制信号上以使能够从混洗单元中选择适当的数据。下面表1中所示的是压缩数据移位对齐操作的示例。在表1中,两个数据操作数,即可将具有字节0-15的第一数据操作数(S1)与具有字节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  7  6  5  4  3  2  1         1 00001
17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2         2 00010
18 17 16 15 14 13 12 11 10  9  8  7  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 15 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 15 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 01111
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 10010
 0  0  0 31 30 29 28 27 26 25 24 23 22 21 20 19        19 10011
 0  0  0  0 31 30 29 28 27 26 25 24 23 22 21 20        20 10100
 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 25 24 23 22        22 10110
 0  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  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  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
Figure G200710129008801D00111
注意到,表2所示的前四列(即“2至1高”至“3至1低”)的控制可映射以提供来自图4所示的第一级选择器的输出。具体地,图4示出了被配置得与图1的第一级多路复用器相同的第一级多路复用器和用于使源操作数的对应部分能够输出以执行移位对齐指令的各种控制信号的框图。
现在参见图5,示出的是依照本发明实施例的方法的流程图。如图5所示,方法300可用于在执行单元中实施操作。方法300可通过在执行单元的第一级选择器中接收第一数据操作数和第二数据操作数而开始(块310)。源操作数可存在于处理器寄存器中或者总有一个源操作数可从存储器中获得。此数据可遵循指令的操作码。基于标识将要实施的操作类型的操作码,可在第一级选择器中选择操作数的给定部分。更具体地,可基于指令类型来选择第一和/或第二操作数的选择的高/低部分(块320)。接着可向第二级选择器提供选择的部分(块330)。接着,可确定指令类型是否是全局类型的(菱形340)。注意到,虽然示出为在块310-330之后发生,但是可与这些步骤并行实施操作类型的确定。
如果确定操作是全局类型的操作,则控制转到块350,其中可将全局控制映射到局部控制。注意到,这样的映射可与第一级选择器中的处理并行发生。自块350和菱形340中的任何一个,控制转到块360。在此,可以按照局部控制来控制第二级选择器(块360)。为了获得期望的结果,可向第三级选择器提供第二级选择器的输出(块370)。最后,可以按照局部控制来确定第三级选择器的输出(块380)。这样,可以在单个周期内于执行单元中按照单个μop执行各种指令。
在各种实施例中,将要在执行单元中执行的指令可包括传送指令、混洗指令、加法指令、乘法指令等。虽然是对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包括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日发布的“Accelerated GraphicsPort Interface Specification,Revision 2.0”。作为备选,点对点互连539可耦合这些部件。
随后,芯片组590可通过接口596耦合到第一总线516。在一个实施例中,第一总线516可以是如1995年6月的“PCI Local BusSpecification,Production Version,Revision 2.1”所定义的外设部件互连(PCI)总线,或者可以是例如PCI Express总线的总线,或者可以是另一第三代输入/输出(I/O)互连总线,尽管本发明的范围不受限于此。
如图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))、磁卡或光卡或适于存储电子指令的任何其他类型的介质。
虽然已经相对于有限数量的实施例对本发明进行了描述,但本领域的技术人员将会意识到由此而来的许多修改和变更。所附权利要求书旨在包括落在本发明的实质精神和范围内的所有这样的修改和变更。

Claims (24)

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

Applications Claiming Priority (2)

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

Related Child Applications (1)

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

Publications (2)

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

Family

ID=39011363

Family Applications (2)

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

Family Applications Before (1)

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

Country Status (2)

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

Families Citing this family (15)

* 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
WO2013095513A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
WO2013095510A1 (en) 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask concatenation processors, methods, systems, and instructions
CN104011648B (zh) * 2011-12-23 2018-09-11 英特尔公司 用于执行向量打包压缩和重复的系统、装置以及方法
CN104025033B (zh) * 2011-12-30 2017-11-21 英特尔公司 利用控制操纵的simd可变移位和循环
US10459731B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated Sliding window operation
CN105022609A (zh) * 2015-08-05 2015-11-04 浪潮(北京)电子信息产业有限公司 一种数据混洗方法和数据混洗单元
US10620957B2 (en) * 2015-10-22 2020-04-14 Texas Instruments Incorporated Method for forming constant extensions in the same execute packet in a VLIW processor
US10592468B2 (en) * 2016-07-13 2020-03-17 Qualcomm Incorporated Shuffler circuit for lane shuffle in SIMD architecture
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
CN115061731B (zh) * 2022-06-23 2023-05-23 摩尔线程智能科技(北京)有限责任公司 混洗电路和方法、以及芯片和集成电路装置

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
US6952478B2 (en) * 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages

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
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
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
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
WO2001067235A2 (en) 2000-03-08 2001-09-13 Sun Microsystems, Inc. Processing architecture having sub-word shuffling and opcode modification
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

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
US6952478B2 (en) * 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
全文.
说明书第8栏第18-27行,第45-53行、附图1,3B,13.

Also Published As

Publication number Publication date
CN102169427B (zh) 2014-09-10
CN102169427A (zh) 2011-08-31
US20080215855A1 (en) 2008-09-04
CN101097512A (zh) 2008-01-02
US7761694B2 (en) 2010-07-20

Similar Documents

Publication Publication Date Title
CN101097512B (zh) 用于实施混洗和移位操作的方法、设备和系统
CN100410919C (zh) 处理器
US9135003B2 (en) Reconfigurable processor and reconfigurable processing method of vector operation using vector lane configuration information
US6816961B2 (en) Processing architecture having field swapping capability
TWI450192B (zh) 用於處理器中之控制處理的裝置及方法
US20110213952A1 (en) Methods and Apparatus for Dynamic Instruction Controlled Reconfigurable Register File
KR100227277B1 (ko) 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법
US8959276B2 (en) Byte selection and steering logic for combined byte shift and byte permute vector unit
CN103109261B (zh) 用于通用逻辑操作的方法和设备
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
CN110909883A (zh) 用于执行指定三元片逻辑操作的指令的系统和方法
US7013321B2 (en) Methods and apparatus for performing parallel integer multiply accumulate operations
CN100422979C (zh) 用于单指令、多数据执行引擎标志寄存器的评估单元
CN107851010B (zh) 针对宽数据元素使用寄存器对的具有偶数元素和奇数元素运算的混合宽度simd运算
US20210117375A1 (en) Vector Processor with Vector First and Multiple Lane Configuration
CN109992299A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
US8108658B2 (en) Data processing circuit wherein functional units share read ports
US7558816B2 (en) Methods and apparatus for performing pixel average operations
CN108139886B (zh) 用于图像处理器的多功能执行通道
CN100444107C (zh) 优化的处理器和指令对准
US20140181164A1 (en) Selectively combinable shifters
CN114691217A (zh) 用于8位浮点矩阵点积指令的装置、方法和系统
JP2003196246A (ja) データ処理システム、アレイ型プロセッサ、データ処理装置、コンピュータプログラム、情報記憶媒体
US7454594B2 (en) Processor for realizing software pipelining with a SIMD arithmetic unit simultaneously processing each SIMD instruction on a plurality of discrete elements
WO2007099950A1 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190918

Address after: Tokyo, Japan

Patentee after: Rakuten Inc.

Address before: California, USA

Patentee before: Intel Corporation

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Tokyo, Japan

Patentee after: Lotte Group Co.,Ltd.

Address before: Tokyo, Japan

Patentee before: Rakuten, Inc.