CN102169427B - 实施混洗指令的设备、方法和操纵数据操作数的设备 - Google Patents
实施混洗指令的设备、方法和操纵数据操作数的设备 Download PDFInfo
- Publication number
- CN102169427B CN102169427B CN201110076943.9A CN201110076943A CN102169427B CN 102169427 B CN102169427 B CN 102169427B CN 201110076943 A CN201110076943 A CN 201110076943A CN 102169427 B CN102169427 B CN 102169427B
- Authority
- CN
- China
- Prior art keywords
- multiplexer
- level
- data
- data operand
- order
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000008878 coupling Effects 0.000 description 13
- 238000010168 coupling process Methods 0.000 description 13
- 238000005859 coupling reaction Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Abstract
本发明涉及实施混洗指令的设备、方法和操纵数据操作数的设备。根据本发明的方法包括:在第一级第一多路复用器中接收第二数据操作数的第一部分和第一数据操作数;在第一级第二多路复用器中接收第一数据操作数的第一部分和第二数据操作数的第二部分;在第二级第三多路复用器中接收来自第一级第一多路复用器的选择的部分;在第二级第四多路复用器中接收来自第一级第二多路复用器的选择的部分;基于局部控制信号在数据操纵器中操纵来自第二级第三多路复用器和第二级第四多路复用器的选择的部分;在第三级多路复用器中接收数据操纵器的输出,其中第三级多路复用器用于输出混洗指令的结果。
Description
本申请是申请号为200710129008.8、申请日为2007年6月30日、发明名称为“用于实施混洗和其他操作的执行单元”的发明专利申请的分案申请。
技术领域
本发明涉及基于处理器的系统,并且更具体地涉及处理器或其他处理引擎内的执行单元。
背景技术
微处理器可包括用于对数据实施操作的各种执行单元。这样的执行单元可包括算术逻辑单元(ALU)、浮点、整数和其他专用的执行单元。为了改进多媒体应用连同其他应用的效率,单指令多数据(SIMD)体系结构可使一个指令能够同时对若干数据、而不是对单个数据进行操作。在并行硬件执行的情况中,可以利用单个指令实施多个操作,从而改进了性能。
为了使各种操作能够利用这样的体系结构,可以对驻留在寄存器或其他位置的压缩数据实施所谓的混洗操作以在例如SIMD操作的其他操作之前重新布置数据元素。另外的指令使得一个或多个位置中的数据移位给定的量以提供期望的结果。一些处理器包括用于对例如128位操作数的较大的数据操作数实施混洗操作的多个单元。通过需要使用多个单元,产生以下结果:就芯片面积而言不动产增加以及在操作期间功耗增加。此外,在不同执行单元中实施例如移位操作的其他操作,从而需要面积和功耗方面的额外开支。
可利用例如一些指令集体系结构中的微操作(μop)的子指令操作来执行基于混洗的指令(连同其他指令),以使所需要的操作能够取得期望的结果。这样的μop可包括混洗、插入、移位、并置、压缩、解压缩以及诸如此类。此外,这样的指令的不同风格可用于支持数据的不同数据粒度。在假定所有这些的情况下,可能存在有控制变化和数据通路需求。因此,可能需要多个执行单元来实施这些操作并且实施这些操作可能会用多个μop和机器周期。因此,提高了功率需求并且出现了不希望的等待时间。
发明内容
本发明旨在解决上述问题。在本发明中,通过单个微操作(μop),单个执行单元可处理各种与混洗有关的指令和其他指令。
本发明提供一种方法,包括:在公共执行单元中接收第一压缩数据操作数和第二压缩数据操作数;以及响应于第一指令,在所述公共执行单元中操纵所述第一压缩数据操作数和所述第二压缩数据操作数以按照所述执行单元的局部控制器的局部控制信号生成输出。
本发明还提供一种设备,包括:用于对第一数据操作数和第二数据操作数实施操作的执行单元;以及耦合到所述执行单元的控制器,如果所述控制器将与所述操作相关联的输入全局控制信号映射到局部控制信号上,则所述控制器用于提供所述局部控制信号以控制所述执行单元。
本发明还提供一种系统,包括具有两条数据通路的执行单元和耦合到所述执行单元的动态随机存取存储器(DRAM),每条所述数据通路具有:用于接收第一源操作数和第二源操作数并且基于操作类型选择部分以输出的第一选择器级;用于接收所述第一选择器级的输出的第二选择器级,其中所述第二选择器级由局部控制信号来控制,每个所述局部控制信号与结果的多个数据字段的其中之一相关联;以及用于接收所述第二选择器级的输出的第三选择器级,其中所述第三选择器级用于在每数据字段的基础上于所述第二级选择器的输出或设定值之间选择以生成所述结果。
本发明还提供一种制品,包括机器可读存储介质,所述机器可读存储介质包括指令,在由机器执行时,所述指令使所述机器能够实施一种方法,所述方法包括:接收与指令相关联的控制信息;确定所述控制信息是全局的还是局部的;基于所述指令的类型,控制执行单元的第一级选择器;以及为所述控制信息解码,如果所述控制信息是局部的,则向所述执行单元的第二级选择器中的每个提供局部控制信号,否则为所述第二级选择器中的每个将所述控制信息映射到所述局部控制信号上。
本发明还提供一种用于对第一数据操作数和第二数据操作数实施混洗指令的设备,包括:处理器,所述处理器包括:用于实施所述混洗指令的第一执行单元,所述第一执行单元包括第一级第一多路复用器和第一级第二多路复用器,所述第一级第一多路复用器用于接收所述第二数据操作数的第一部分和所述第一数据操作数,而所述第一级第二多路复用器用于接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述第一级第一多路复用器和所述第一级第二多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;第二级第三多路复用器和第二级第四多路复用器,所述第二级第三多路复用器用于接收所述第一级第一多路复用器的输出,而所述第二级第四多路复用器用于接收所述第一级第二多路复用器的输出,所述第二级第三多路复用器和所述第二级第四多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;耦合到所述第二级第三多路复用器和所述第二级第四多路复用器的数据操纵器,所述数据操纵器用于基于局部控制信号操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的输出;以及耦合到所述数据操纵器的输出的第三级多路复用器,其中所述第三级多路复用器用于输出所述混洗指令的结果。
本发明还提供一种用于对第一数据操作数和第二数据操作数实施混洗指令的方法,包括:在第一级第一多路复用器中接收所述第二数据操作数的第一部分和所述第一数据操作数;在第一级第二多路复用器中接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述第一级第一多路复用器和所述第一级第二多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;在第二级第三多路复用器中接收来自所述第一级第一多路复用器的选择的部分;在第二级第四多路复用器中接收来自所述第一级第二多路复用器的选择的部分,所述第二级第三多路复用器和所述第二级第四多路复用器用于输出所述第一数据操作数和所述第二数据操作数的选择的部分;基于局部控制信号在数据操纵器中操纵来自所述第二级第三多路复用器和所述第二级第四多路复用器的选择的部分;在第三级多路复用器中接收所述数据操纵器的输出,其中所述第三级多路复用器用于输出所述混洗指令的结果。
本发明还提供一种用于操纵第一数据操作数和第二数据操作数的设备,包括:用于对所述第一数据操作数和所述第二数据操作数实施操作的执行单元;以及耦合到所述执行单元以提供局部控制信号来控制所述执行单元的控制器,其中所述执行单元包括第一级第一多路复用器和第一级第二多路复用器,所述第一级第一多路复用器用于接收所述第二数据操作数的第一部分和所述第一数据操作数,而所述第一级第二多路复用器用于接收所述第一数据操作数的第一部分和所述第二数据操作数的第二部分,所述设备还包括第二级第三多路复用器和第二级第四多路复用器,所述第二级第三多路复用器用于接收所述第一级第一多路复用器的输出,而所述第二级第四多路复用器用于接收所述第一级第二多路复用器的输出。
附图说明
图1是依照本发明一个实施例的混洗单元的高级视图的框图。
图2是依照本发明一个实施例的混洗单元的一部分的更详细视图的框图。
图3示出依照本发明实施例的、执行混洗指令的混洗单元的输入和输出的示例。
图4是依照本发明实施例的执行单元的第一级选择器的框图。
图5是依照本发明实施例的方法的流程图。
图6是依照本发明一个实施例的系统的框图。
具体实施方式
本发明的实施例涉及基于处理器的系统,并且更具体地涉及处理器或其他处理引擎内的执行单元。
在各种实施例中,通过单个微操作(μop),单个执行单元可处理各种与混洗有关的指令和其他指令。虽然本发明实施例的范围不限于此方面,但在各种实现中,执行单元可以被制造为处理128位操作数而且可以被配置为支持多个指令宽度,包括例如像64位多媒体扩展(MMX)指令这样的64位指令和128位单指令多数据(SIMD)指令。例如,取决于体系结构,利用该执行单元,可以响应一个μop或指令在单个机器周期内执行用于实施包括对各种形式的数据的混洗操作、移位操作以及其他算术运算的不的类混洗功能的各种指令。例如,在各种实施例中,可执行例如在Intel体系结构(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
为了实现此移位操作,可存在下面表2中示出的用于各种计数值的控制信号。具体地,示出了第一级控制和第三级控制。表2中列出为“2至1高”的列至列出为“3至1低”的列对应于第一级选择器,而列出为“3至1[15]”的列对应于用于第三级的控制。当然,其他实现是可能的。
表2
注意到,表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 (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所述的设备,其中所述局部控制信号在每字段的基础上用于所述第一数据操作数和所述第二数据操作数。
Applications Claiming Priority (3)
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 |
US11/478,884 | 2006-06-30 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101290088A Division CN101097512B (zh) | 2006-06-30 | 2007-06-30 | 用于实施混洗和移位操作的方法、设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102169427A 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 |
---|---|---|---|
CN201110076943.9A Active CN102169427B (zh) | 2006-06-30 | 2007-06-30 | 实施混洗指令的设备、方法和操纵数据操作数的设备 |
CN2007101290088A Active CN101097512B (zh) | 2006-06-30 | 2007-06-30 | 用于实施混洗和移位操作的方法、设备和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101290088A Active 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 (15)
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)
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)
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 |
AU2001288209A1 (en) * | 2000-05-05 | 2001-11-26 | 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 |
-
2006
- 2006-06-30 US US11/478,884 patent/US7761694B2/en active Active
-
2007
- 2007-06-30 CN CN201110076943.9A patent/CN102169427B/zh active Active
- 2007-06-30 CN CN2007101290088A patent/CN101097512B/zh active Active
Patent Citations (3)
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 |
---|---|
CN102169427A (zh) | 2011-08-31 |
US20080215855A1 (en) | 2008-09-04 |
CN101097512A (zh) | 2008-01-02 |
CN101097512B (zh) | 2011-05-18 |
US7761694B2 (en) | 2010-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102169427B (zh) | 实施混洗指令的设备、方法和操纵数据操作数的设备 | |
CN100394380C (zh) | 包括对准或者广播指令的多媒体协处理器控制机制 | |
CN100410919C (zh) | 处理器 | |
US6061780A (en) | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units | |
TWI471801B (zh) | 降低於一處理器之積和熔加運算(fma)單元中之功率消耗的技術 | |
TW202209157A (zh) | 向量處理器架構 | |
WO2001067235A2 (en) | Processing architecture having sub-word shuffling and opcode modification | |
CN103109261B (zh) | 用于通用逻辑操作的方法和设备 | |
JP7264897B2 (ja) | メモリ装置及びそれを制御するための方法 | |
CN110909883A (zh) | 用于执行指定三元片逻辑操作的指令的系统和方法 | |
US7013321B2 (en) | Methods and apparatus for performing parallel integer multiply accumulate operations | |
US20220206796A1 (en) | Multi-functional execution lane for image processor | |
US5119324A (en) | Apparatus and method for performing arithmetic functions in a computer system | |
US20210117375A1 (en) | Vector Processor with Vector First and Multiple Lane Configuration | |
US5053986A (en) | Circuit for preservation of sign information in operations for comparison of the absolute value of operands | |
CN107851007B (zh) | 宽数据类型的比较的方法和装置 | |
CN100422979C (zh) | 用于单指令、多数据执行引擎标志寄存器的评估单元 | |
CN109992299A (zh) | 用于计算两个区块操作数中的半字节的数量积的系统和方法 | |
CN113849769A (zh) | 矩阵转置和乘法 | |
US8108658B2 (en) | Data processing circuit wherein functional units share read ports | |
CN114924796A (zh) | 再生逻辑块以实现提高的吞吐量 | |
KR20010082524A (ko) | 디지털 신호처리기 | |
CN114691217A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 | |
CN101930355A (zh) | 实现寄存器文件分组编址、读写控制方法的寄存器电路 | |
EP1367483A2 (en) | Methods and systems for data manipulation |
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: 20190916 Address after: Tokyo, Japan, Japan Patentee after: Rakuten Inc. Address before: American California 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. |