CN104281437B - 具有单指令多数据处理电路的数据处理装置 - Google Patents
具有单指令多数据处理电路的数据处理装置 Download PDFInfo
- Publication number
- CN104281437B CN104281437B CN201410320577.0A CN201410320577A CN104281437B CN 104281437 B CN104281437 B CN 104281437B CN 201410320577 A CN201410320577 A CN 201410320577A CN 104281437 B CN104281437 B CN 104281437B
- Authority
- CN
- China
- Prior art keywords
- simd
- operand
- data
- data element
- source
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 133
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000006073 displacement reaction Methods 0.000 claims description 109
- 241001269238 Data Species 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 14
- 238000005259 measurement Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 8
- 238000007792 addition Methods 0.000 description 4
- 230000005611 electricity Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及具有单指令多数据处理电路的数据处理装置。该数据处理装置具有:置换电路,执行用来改变至少一个源操作数的数据元素尺寸或数据元素位置的置换操作,以生成第一和第二SIMD操作数;以及SIMD处理电路,对第一和第二SIMD操作数执行SIMD操作。响应于需要置换操作的第一SIMD指令,指令解码器控制置换电路执行置换操作,以生成第一和第二SIMD操作数,然后控制SIMD处理电路使用这些操作数执行SIMD操作。响应于不需要置换操作的第二SIMD指令,指令解码器控制SIMD处理电路使用由该指令识别的第一和第二SIMD操作数执行SIMD操作,而不需要使它们经过置换电路。
Description
技术领域
本发明涉及数据处理领域。更具体地,本发明涉及具有单指令多数据(SIMD)处理电路的数据处理装置。
背景技术
一种数据处理装置可以具有用于对包含多个数据元素的第一操作数和第二操作数执行SIMD操作的SIMD处理电路。SIMD处理电路具有多个并行的处理的通道(lane),这些通道各自对第一操作数和第二操作数的相应数据元素执行特定操作。例如,第一操作数和第二操作数各自可以包括32位数据值,每个操作数包括4个8位数据元素。SIMD加法操作可以对各对8位数据元素并行执行4组8位加法。
有时,数据元素出现在操作数内的顺序可能与将由SIMD操作结合的数据元素的顺序不同,因此,在执行SIMD操作之前对数据元素执行一些重新排列可能是必要的。本技术试图提高这种重新排列的实现,来提高SIMD处理操作的性能。
发明内容
从一个方面来看,本发明提供了一种数据处理装置,包括:
单指令多数据(SIMD)处理电路,被配置为对包括多个数据元素的第一SIMD操作数和第二SIMD操作数执行SIMD操作,该SIMD处理电路具有多个用于处理第一SIMD操作数和第二SIMD操作数的相应数据元素的并行处理通道;
置换电路,被配置为对包括多个源数据元素的至少一个源操作数执行置换操作,以生成所述第一SIMD操作数和所述第二SIMD操作数,所述置换操作生成所述第一SIMD操作数和所述第二SIMD操作数中的至少一个,所述第一SIMD操作数和所述第二SIMD操作数中的所述至少一个与所述至少一个源操作数具有不同数据元素尺寸和不同数据元素位置中的至少一种;以及
指令解码器,被配置为对需要由SIMD处理电路执行SIMD操作的SIMD指令进行解码;
其中,响应于需要置换操作和识别所述至少一个源操作数的第一SIMD指令,指令解码器被配置为控制置换电路对所述至少一个源操作数执行置换操作以生成第一SIMD操作数和第二SIMD操作数,并且,指令解码器被配置为控制SIMD处理电路使用由置换电路生成的第一SIMD操作数和第二SIMD操作数执行SIMD操作;并且
响应于不需要置换操作和识别第一SIMD操作数和第二SIMD操作数的第二SIMD指令,指令解码器被配置为控制SIMD处理电路使用由第二SIMD指令识别的第一SIMD操作数和第二SIMD操作数执行SIMD操作,而不需要使第一SIMD操作数和第二SIMD操作数经过置换电路。
现有的SIMD处理单元通常具有用于对两个输入操作数执行重新排列操作以生成与这些输入操作数相比具有不同数据元素顺序的SIMD操作数的初始阶段,以便后续的处理阶段然后可以对所重新排列的操作数执行SIMD操作。即使不需要重新排列,这些输入操作数将仍经过重新排列阶段,而不改变这些数据元素的位置。然而,这通常意味着需要两个处理周期来执行所有的SIMD操作,一个用于执行重新排列,另一个用于执行SIMD操作本身。第一周期主要专用于对输入操作数的数据元素进行复用,以便这些数据元素正确对齐以进行第二周期或进一步处理周期中的SIMD操作。然而,本技术的发明人意识到,对于许多SIMD指令,这种排列周期是不必要的。然而,在传统的装置中,所有的SIMD指令都要为元素重新排列付出代价。因此,大多数现有SIMD操作需要比它们需要执行的更多的周期。
相比之下,本技术提供了单独的置换电路和SIMD处理电路,所述置换电路执行用于改变数据元素的数据元素顺序和/或数据元素尺寸的置换操作,而所述SIMD处理电路执行SIMD操作。置换电路和SIMD处理电路可以由指令解码器独立控制,以便使用置换电路和SIMD处理电路来执行需要置换和SIMD操作的第一SIMD指令,同时,单独使用SIMD处理电路来执行不需要任何置换的第二SIMD指令,而不需要使其第一SIMD操作数和第二SIMD操作数经过置换电路。从而,第二SIMD指令不需要执行第一SIMD指令所需要的置换。实际上,大多数SIMD操作不需要置换,因此,在许多情况下,本技术能够使得性能提高。通常,第二SIMD指令可以在单个处理周期期间被执行。也就是说,与置换操作和SIMD操作一起对应于单个不能被划分的微操作的先前的实施方式相比较,在本技术中,置换操作可以从SIMD操作隔离出来,以提供两个能够被独立调度的单独的微操作。
本技术是违反直觉的,因为人们会认为仅当将要执行后续的SIMD操作时才需要进行置换操作,因此,将置换操作作为独立的微操作提供会是有用的,这并不是显而易见的。由于SIMD操作通常会跟随在置换操作之后,因此,现有系统将置换操作和SIMD操作结合到单个多周期操作。然而,本发明的发明人认识到,事实上,就其本身而言通常只需要SIMD操作,而不需要置换操作。如果将置换操作和SIMD操作结合到单个操作中,那么,所有的SIMD操作为在SIMD操作之前偶尔执行置换操作的需要付出代价,这是不必要的。通过将置换操作同SIMD操作隔离,第二SIMD指令可以以比第一SIMD指令少的处理周期执行,以减少处理SIMD指令而采用的平均周期数。
指令解码器可以控制是使用置换电路和SIMD处理电路二者,还是单独使用SIMD处理电路来执行特定SIMD指令。例如,第一SIMD指令和第二SIMD指令可以具有不同操作码,允许指令解码器区别哪个指令需要置换操作。替代地,第一SIMD指令和第二SIMD指令可以具有相同的操作码,但是可以具有指定是否需要置换和何种类型的置换的字段。
指令解码器可以以各种方式来实现。指令解码器可以是只用于对SIMD指令进行解码的仅SIMD解码器,而另一种指令解码器可以被提供为对其他类型的指令进行解码。替代地,单个指令解码器可以对SIMD指令和非SIMD指令二者进行解码。指令解码器可以用从指令解码器发送至置换电路或SIMD处理电路的信号来直接控制置换电路和SIMD处理电路,或者,指令解码器可以通过将指示包含在解码的指令中来间接控制置换电路或SIMD处理电路,解码的指令控制其他电路(例如,流水线(pipeline)的发布阶段(issue stage))来确定置换电路是否应该用于特定SIMD指令。
为允许不需要置换的SIMD指令尽快被执行,SIMD处理电路可以将其所有处理操作严格保持在相同的SIMD处理通道内。因此,SIMD处理电路可能不支持置换操作。SIMD处理电路的每个并行处理通道可以只处理出现在由SIMD处理单元接收到的第一SIMD操作数和第二SIMD操作数内预定数据元素位置处的数据元素,并且不能重新排列这些数据元素或者处理出现在接收到的操作数中、与其他并行处理通道相应的数据元素位置处的数据元素。通过阻止SIMD处理单元中的交叉通道交换,避免了在对于SIMD处理电路需要一些处理时间来确定哪些数据元素应该被各自通道处理的先前的系统中引发的性能代价。
第一SIMD操作数和第二SIMD操作数的数据元素可以具有多种不同数据元素尺寸中的一种。用于给定SIMD操作的数据元素尺寸和数据元素的数目可以基于正在被执行的SIMD指令的参数来选择。对于给定的数据元素尺寸,可以建立处理通道的相应配置,以便每个通道对来自第一SIMD操作数的一个数据元素和来自第二SIMD操作数的一个数据元素执行并行操作。例如,SIMD处理电路可以支持用于对8对8位数据元素、4对16位数据元素、2对32位数据元素或1对64位数据元素进行处理的处理通道。
置换电路能够执行多个不同类型的置换操作。所执行的特定的置换可以基于正被执行的第一SIMD指令的参数来选择。例如,不同操作码可以被分配给代表不同类型的置换操作的指令,基于该操作码来确定将要执行的置换操作的类型。替代地,具有不同置换操作的指令可以共享相同的操作码,而指令的另一个字段代表将要执行的置换。
通常,置换操作可以接收至少一个源操作数,并且生成由后续的SIMD操作来处理的第一SIMD操作数和第二SIMD操作数。置换操作可以生成与所述至少一个源操作数具有不同数据元素尺寸和/或数据元素位置的第一SIMD操作数和第二SIMD操作数中的至少一个。对于一些置换操作,可以提供两个源操作数,并且将其转换为两个SIMD操作数。
在一个示例中,置换电路可以执行元素重新排列置换操作,该元素重新排列置换操作将源数据元素中的至少一些源数据元素映射到第一SIMD操作数和第二SIMD操作数中的不同数据元素位置。这当有两个源操作数时特别有用,因为元素重新排列可以改变哪些元素被一起安排成一对以用于后续的SIMD操作。尤其有用的示例是将所述至少一个源操作数的一对相邻的源数据元素分别映射到第一SIMD操作数和第二SIMD操作数中相应数据元素位置的成对元素重新排列。因此,如果将SIMD操作应用到原始的源操作数中,由于会在相同的操作数内因而本不会被加到一起的数据元素可以被重新排列,从而它们现在可以被加到一起。成对重新排列可用于确定数据值的列表的和。之前的SIMD操作可以将该列表的各部分加到一起来产生具有多个数据元素的SIMD操作数,每个数据元素与该列表的不同部分的和相应。通过在另一个SIMD操作之前执行成对元素重新排列,部分和值可以被放置在第一SIMD操作数和第二SIMD操作数的相应数据元素位置,因此,这些部分和值可以被加到一起。通过多次重复成对置换和SIMD相加,最终,该列表中的所有数据值可以被加到一起。
在另一个示例中,置换电路可以执行元素扩展置换操作,该元素扩展置换操作生成具有比至少一个源操作数更大的数据元素尺寸的第一SIMD操作数和第二SIMD操作数中的至少一个。
可以以不同方式执行元素扩展操作。在一个示例中,扩展的SIMD操作数中的每个数据元素可以通过将该数据元素的第一部分设置为相应源数据元素的数据值,并使用相应源数据元素的数据值的符号扩展(或者如果使用无符号值,则采用零扩展)填充该数据元素的第二部分来生成。通常,第二部分将比第一部分更重要。在符号扩展中,第二部分被与相应源数据元素的原始数据值的符号位具有相同值的位填充,而在零扩展中,第二部分被具有零值的位填充。这样,较小的源数据元素可以被插入到第一SIMD操作数或第二SIMD操作数的较大的数据元素中,而剩余部分被符号扩展或零扩展以保留其原始数值。
当执行元素扩展时,将所述至少一个源操作数的所有源数据元素映射为SIMD操作数之一内的相应数据元素是不必要的。扩展这些数据元素的尺寸的结果是,可能没有针对所有源数据元素的空间,因此,可能需要丢弃一些源数据元素。为了允许所有的原始源数据元素被处理,可能需要执行多个SIMD操作,每个SIMD操作对来自原始源操作数的数据元素的子集的扩展的版本进行操作。
在一个示例中,元素扩展操作可以包括元素加长,在元素加长中,具有M位数据元素的第一源操作数和第二源操作数被转换为具有N位数据元素的第一SIMD操作数和第二SIMD操作数,其中N>M。因此,第一源操作数和第二源操作数均以相应方式被扩展,而后续的SIMD操作对N位SIMD操作数执行以产生具有N位数据元素的结果值。
替代地,元素加宽置换操作可以被执行,在该元素加宽置换操作中,源操作数之一的数据元素被扩展,但是其他源操作数没有被扩展。例如,这在对具有不同数据元素尺寸的源操作数执行SIMD操作可以是有用的。加宽置换操作可以扩展具有较小数据元素尺寸的源操作数的数据元素,以在对具有相应数据元素尺寸的SIMD操作数执行SIMD操作之前,与其他源操作数的较大数据元素尺寸相匹配。
此外,置换操作可以执行元素扩展和元素重新排列二者,以在从至少一个源操作数映射到SIMD操作数时,改变数据元素尺寸和数据元素位置二者。例如,成对重新排列扩展操作可以对具有M位数据元素的源操作数进行操作以生成具有N位数据元素的第一SIMD操作数和第二SIMD操作数,而与该源操作数的相邻源数据元素相应的扩展的数据元素被放置在第一SIMD操作数和第二SIMD操作数的相应位置。
另一种可以由置换电路来执行的置换操作是标量元素(scalar-by-element)置换操作,该标量元素置换操作对两个源操作数执行以将第一源操作数的一个数据元素映射到第一SIMD操作数的每个数据元素,并且将第二源操作数的各个数据元素映射到第二SIMD操作数的相应数据元素。因此,第二源操作数可以被直接映射到第二SIMD操作数,而第一源操作数的相同的数据元素被复制到第一SIMD操作数的每个通道中。这允许后续的SIMD操作将所复制的第一源操作数的数据元素与第二源操作数的每个数据元素组成一对。例如,这可以用来将向量的每个元素与标量值相结合。如果需要,那么标量元素置换操作还可以包括通过上面讨论的加长或加宽来扩展数据元素尺寸。
由每个数据元素代表的数据值可以是整数值或浮点值。
SIMD操作包括每个并行处理通道对第一SIMD操作数的数据元素和第二SIMD操作数的相应数据元素执行处理操作。该处理操作可以包括许多不同类型的操作。例如,该处理操作可以包括将相应数据元素相加或相减、确定相应数据元素对的最小值或最大值、确定数据元素间的绝对差或确定数据元素间的绝对差之后将该绝对差加到存储在存储位置的值上(绝对差积累)。这些处理操作中的每个处理操作可以与指令集合内的不同指令相应,而每条指令具有不同版本,这些版本中的一些版本需要置换而一些版本不需要置换。需要置换的版本可以使用置换电路和SIMD处理电路二者进行处理,而不需要置换的版本可以使用SIMD处理电路来更快地处理。应该明白的是,许多其他类型的处理操作可以由SIMD处理电路来执行。
置换电路可以将所生成的第一SIMD操作数和第二SIMD操作数直接提供给SIMD处理电路。替代地,置换电路可以将所生成的第一SIMD操作数和第二SIMD操作数写入诸如寄存器组之类的数据存储器中,并且,SIMD处理单元然后可以从该数据存储器中读取所生成的SIMD操作数。第一SIMD指令和第二SIMD指令可以使用寄存器组中的寄存器的寄存器标识符来指定各自源操作数或SIMD操作数。
从另一个方面来看,本发明提供了一种数据处理装置,包括:
单指令多数据(SIMD)处理装置,用于对包括多个数据元素的第一SIMD操作数和第二SIMD操作数执行SIMD操作,该SIMD处理装置具有多个用于处理第一SIMD操作数和第二SIMD操作数的相应数据元素的并行处理通道;
置换装置,用于对包括多个源数据元素的至少一个源操作数执行置换操作,以生成所述第一SIMD操作数和所述第二SIMD操作数,所述置换操作生成所述第一SIMD操作数和所述第二SIMD操作数中的至少一个,所述第一SIMD操作数和所述第二SIMD操作数中的所述至少一个与至少一个源操作数具有不同数据元素尺寸和不同数据元素位置中的至少一种;以及
指令解码装置,用于对需要由SIMD处理装置执行SIMD操作的SIMD指令进行解码;
其中,响应于需要置换操作和识别所述至少一个源操作数的第一SIMD指令,该指令解码装置被配置为控制置换装置对所述至少一个源操作数执行置换操作以生成第一SIMD操作数和第二SIMD操作数,并且,该指令解码装置被配置为控制SIMD处理装置使用由置换装置生成的第一SIMD操作数和第二SIMD操作数来执行SIMD操作;并且
响应于不需要置换操作和识别第一SIMD操作数和第二SIMD操作数的第二SIMD指令,该指令解码装置被配置为控制SIMD处理装置使用由第二SIMD指令识别的第一SIMD操作数和第二SIMD操作数来执行SIMD操作,而不需要使第一SIMD操作数和第二SIMD操作数经过置换装置。
从进一步的方面来看,本发明提供了一种处理数据的方法,包括:
对需要由SIMD处理电路对包括多个数据元素的第一SIMD操作数和第二SIMD操作数执行的SIMD操作的单指令多数据(SIMD)指令进行解码,其中,SIMD处理电路具有多个用于处理第一SIMD操作数和第二SIMD操作数的相应数据元素的并行处理通道;
响应于对需要置换操作和识别包括多个源数据元素的至少一个源操作数的第一SIMD指令进行解码,控制置换电路对所述至少一个源操作数执行置换操作以生成与所述至少一个源操作数具有不同数据元素尺寸和不同数据元素位置中的至少一种的所述第一SIMD操作数和所述第二SIMD操作数,并且控制SIMD处理电路使用由置换电路生成的第一SIMD操作数和第二SIMD操作数执行SIMD操作;并且
响应于对不需要置换操作和识别第一SIMD操作数和第二SIMD操作数的第二SIMD指令进行解码,控制SIMD处理电路使用由第二SIMD指令识别的第一SIMD操作数和第二SIMD操作数来执行SIMD操作,而不需要使第一SIMD操作数和第二SIMD操作数经过置换电路。
从另一个方面来看,本发明提供了一种数据处理装置,包括:
置换电路,被配置为响应于程序指令对包括多个源数据元素的至少一个源操作数执行置换操作,以生成包括多个置换的数据元素的至少一个置换的操作数;
所述置换操作通过以下步骤生成所述至少一个置换的操作数的多个置换的数据元素中的每个置换的数据元素:
(i)将置换的数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充置换的数据元素的第二部分;
其中,对于至少一个置换的数据元素,所述至少一个置换的操作数内的数据元素位置与所述至少一个源操作数内的相应源数据元素的数据元素位置不同。
如上面所讨论的,置换电路可以提供至少一种置换操作,该置换操作提供至少一些数据元素的重新排列和源数据元素的符号扩展或零扩展,以产生具有较大数据元素尺寸的置换的数据元素。这避免了用于执行这些操作的单独的指令的需要,从而提高了置换和任意相应SIMD操作的速度。
从进一步的方面来看,本发明提供了一种数据处理装置,包括:
置换装置,用于响应于程序指令,对包括多个源数据元素的至少一个源操作数执行置换操作,以生成包括多个置换的数据元素的至少一个置换的操作数,
所述置换操作通过以下步骤生成所述至少一个置换的操作数的多个置换的数据元素中的每个置换的数据元素:
(i)将置换的数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充置换的数据元素的第二部分;
其中,对于至少一个置换的数据元素,所述至少一个置换的操作数内的数据元素位置与所述至少一个源操作数内的相应源数据元素的数据元素位置不同。
从另一个方面来看,本发明提供了一种处理数据的方法,包括:
响应于程序指令,对包括多个源数据元素的至少一个源操作数执行置换操作,以生成包括多个置换的数据元素的至少一个置换的操作数,
所述置换操作通过以下步骤生成所述至少一个置换的操作数的多个置换的数据元素中的每个置换的数据元素:
(i)将置换的数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充置换的数据元素的第二部分;
其中,对于至少一个置换的数据元素,所述至少一个置换的操作数内的数据元素位置与所述至少一个源操作数内的相应源数据元素的数据元素位置不同。
使用具有用于执行置换操作的置换电路的计算机或其他数据处理装置来执行处理数据的方法。
本发明的上述内容和其他目的、特征以及优点将从下面结合附图来阅读的说明性的实施例的详细描述中变得显而易见。
附图说明
图1示意性地示出了数据处理装置的一部分;
图2示出了具有用于对第一SIMD操作数和第二SIMD操作数的各个数据元素并行执行操作的并行处理通道的SIMD处理单元;
图3示出了用于对至少一个源操作数执行置换操作以生成第一SIMD操作数和第二SIMD操作数的置换电路的示例;
图4A至图4C示出了成对元素重新排列的示例;
图5A和图5B示出了用于加长数据元素的置换操作的示例;
图6A至图6C显示了用于数据元素的成对加长的置换的示例;
图7A至图7C示出了用于加宽一个源的操作数以与另一个源的操作数的数据元素尺寸相对应的置换的示例;
图8示出了用于将第一源操作数的一个所选的数据元素映射到第一SIMD操作数的每个数据元素的标量元素置换操作的示例;以及
图9示出了显示执行置换指令以及第一SIMD指令和第二SIMD指令所需周期数目的示例的时序图。
具体实施例
图1示意性地示出了包括处理电路4、指令解码器6以及寄存器8的数据处理装置2的一部分。应当理解的是,处理装置2还可以具有为了简明而没有在图1中示出的其他部件。指令解码器6对将由处理电路4执行的指令进行解码。可以将指令的结果放置于当执行其他指令时处理电路4可以从其读取指令的结果的寄存器8中。指令解码器6可以将一些指令划分成将要由处理电路4的不同单元执行的微操作。微操作可以由处理电路4单独调度。处理电路4包括可以响应于单个SIMD指令来执行分离的微操作的单指令多数据(SIMD)处理单元10和置换单元12。替代地,单独的置换指令可以由置换单元12来实施,而单独的SIMD指令可以由SIMD处理单元10来实施。
图2显示了SIMD处理单元10的示例。SIMD处理单元10具有多个并行的处理的通道,这些通道相互并行地处理SIMD操作数op1、op2的各对数据元素12。在该示例中,并行处理通道由加法器14来代表,每个加法器将来自第一SIMD操作数op1的一个数据元素12与第二操作数op2的一个数据元素12相加,并将和放置于结果值res的结果数据元素16中。该结果值可以被写回到寄存器8中。处理14的每个通道可以只处理在输入操作数op1、op2内的预定数据元素位置处的数据元素12。例如,右边的加法器14-0可以只处理各个操作数的最右边的元素12-0,从右面数的第二个加法器14-1处理第二最右边的数据元素12-1,等等。处理14的通道不能处理来自其他通道的数据元素。由于SIMD单元10中没有交叉通道操作,因此,处理14的通道不需要花时间来确定它们应该处理哪些数据元素,因此,通过SIMD单元10的SIMD处理可以被快速执行。每个并行的操作可以在单个周期内完成。
图2显示了两个SIMD操作数op1、op2具有8个数据元素并且结果值也具有8个数据元素的示例。然而,SIMD单元10可配置为处理具有不同数据元素尺寸的数据值。例如,如果图2中显示的操作数op1、op2是64位值,那么图2显示8对8位数据元素由各自加法器14来处理的示例。在另一个配置中,加法器14可以是两个一对来提供4个处理的通道,每个通道处理一对16位数据元素的加法。类似地,SIMD单元10可以被配置为提供两个并行的处理的通道,每个通道处理一对32位操作数,或者SIMD单元10可以被配置为提供一个处理一对64位数据元素的通道。可以基于由指令解码器6解码的指令的参数来选择用于给定SIMD操作的数据元素尺寸。尽管图2显示在每个处理的通道中执行的SIMD操作是相加的示例,但是每个通道还可以处理其他类型的处理操作。
图3中显示出置换单元12的示例。置换单元12用于执行置换操作来改变数据元素的排列。置换单元12接收一个或多个包括多个数据元素的源操作数A、B,并且置换单元12包括复用电路20,复用电路20将这些数据元素中的至少一些数据元素映射到将由SIMD单元10来处理的SIMD操作数op1、op2的相应部分。复用电路20可以将输入操作数A、B的任意数据元素映射到SIMD操作数op1、op2的数据元素的任意部分。基于由指令解码器6所解码的指令来执行复用器的控制。例如,复用电路20可以具有多个将输入操作数A、B的不同部分连接至SIMD操作数op1、op2的各部分的预定线路配置。可以基于所解码的指令的参数来选择特定的配置。
尽管图3显示了两个输入操作数A、B,但是对于一些置换操作,SIMD操作数op1、op2可以均基于单个源操作数A的数据元素来确定,而输入到复用电路20的B被忽略。此外,源操作数和SIMD操作数间的数据元素的数目和数据元素的尺寸不需要相同。如图3所示,复用电路20可以输入与各个源数据元素相对应的符号扩展位22,并且将这些符号位放置于SIMD操作数op1、op2的各部分中。对于有符号的值,符号扩展位22等同于相应源数据元素的符号位(0为正值,1为负值)。另一方面,如果源操作数A、B的数据值是无符号的,那么对于所有的数据元素,符号位可以是0。符号扩展位22(或对于无符号值的零扩展位)用来加长或加宽数据元素,以便对于该数据元素,在保持正确数值的同时,可以扩展数据元素尺寸。
图4A显示了可以由置换单元12执行的成对元素重新排列置换操作的示例。如图4A的部分30中所示,一些寄存器M、N原始地存储两个源操作数A、B,每个源操作数具有4个16位数据元素。可以在置换单元12不执行任何置换的情况下通过单独使用SIMD单元10以这些操作数的当前的形式来对它们执行SIMD操作。在该情形中,操作数A的元素0将被加到操作数B的元素0,操作数A的元素1将被加到操作数B的元素1,等等,如图4A的部分30中所示。
然而,可能期望将操作数A的元素3和元素2加到一起,并且对操作数A和B的剩余部分中的相邻元素执行类似的成对相加。这在图4A的底部处的部分40中显示。为此,由置换单元12来执行元素重新排列,以使用图4A中所显示的转移的序列来在寄存器间转移值。也就是说,复用电路20将源操作数A、B的数据元素映射到SIMD操作数op1、op2内的不同数据元素位置,以便SIMD单元10可以执行SIMD操作以将元素的不同组合加到一起。类似地,可以将成对置换提供给除SIMD相加外的多种类型的SIMD操作。图4B和图4C显示了为分别具有两个和八个数据元素的操作数执行的类似的成对重新排列。在图4A至图4C中所显示的成对重新排列中,数据元素的数目和数据元素的尺寸在置换的过程中保持不变。
图5A和图5B显示了在置换过程中数据元素尺寸改变的加长置换操作的示例。置换单元12对源操作数A、B内每个数据元素的尺寸进行扩展,以产生更大的SIMD操作数op1、op2。在该示例中,第一源操作数A和第二源操作数B的每个M位数据元素被符号扩展,并且被映射到第一SIMD操作数op1、第二SIMD操作数op2的相应位置,以形成N位数据元素(N>M)。该符号扩展利用与原始数据值的最高有效位具有相同值的位对原始数据值进行扩展。如果该原始数据值是无符号的,那么其将被零扩展,而不是被符号扩展。因此,置换单元12可以生成具有比源操作数更大的数据元素的SIMD操作数。图5A和图5B显示了分别扩大具有两个和四个数据元素的操作数的示例。
图6A至图6C显示了执行成对加长相加的置换操作4的另一个示例。在该情形中,提供了单个源操作数A,并且该源操作数的各个数据元素的位置在SIMD操作数op1、op2中被重新安排,还被从M位符号扩展到N位(N>M)。成对重新排列将源操作数的相邻M位元素放置于两个SIMD操作数内的相应位置处。例如,操作数A的源数据元素OpA.1和OpA.0现处于两个SIMD操作数op1、op2的相同的通道中的相应位置处。再次,对于无符号值,零扩展可以代替符号扩展来使用。图6A、图6B和图6C分别显示了对于两个、四个和八个元素操作数的成对加长。
图7A至图7C显示了用于加宽一对源操作数中的一个源操作数的数据元素以与另一个源操作数的数据元素的尺寸相匹配的置换的另一个示例。在该情形中,源操作数A被直接映射到SIMD操作数op1,而源操作数B使每个M位数据元素被符号扩展(或零扩展)并将其放置于第二SIMD操作数op2内的相应位置中。该类型的置换允许操作数A和操作数B使用单个SIMD指令来进行结合,尽管它们具有不同数据元素尺寸。然后每个SIMD处理通道将第一SIMD操作数op1和第二SIMD操作数op2的相应数据元素对相结合。图7A-7C显示了该置换被应用到分别具有一个、两个或四个数据元素的源操作数的示例。
图8显示了置换操作的另一个示例。在该情形中,源操作数B被直接映射到第二SIMD操作数op2。另一方面,源操作数A的一个元素(在该示例中是OpA.2)被选择并被复制到第一SIMD操作数op1的每个通道中。通过将相同的源数据元素复制到SIMD操作数的多个通道中,后续的标量元素向量SIMD操作可以将由op2所代表的向量的每个元素与由op1的复制的元素OpA.2所代表的标量相结合。
尽管图2和图4A-8显示了在每个处理通道中执行的SIMD操作是操作数op1、op2的相应数据元素的相加,但是也可以执行其他类型的处理操作。例如,本技术可以被应用到下述各种有符号或无符号SIMD指令中的任意一种:
·ADD:每个处理通道将两个相应数据元素相加,可选的置换包括成对置换、加长、加宽、以及成对加长;
·SUB:每个处理通道将两个相应数据元素相减,可选的置换包括加长和加宽;
·MIN:每个处理通道确定两个相应数据元素中的最小值,可选的是成对置换;
·MAX:每个处理通道确定两个相应数据元素中的最大值,可选的是成对置换;
·ABD:每个处理通道确定两个相应数据元素的绝对差,可选的是加长置换;
·ABA:每个处理通道确定两个相应数据元素的绝对差,然后将该绝对差累积到寄存器中,可选的是加长置换。
此外,标量元素置换还可以被应用到所有这些指令中。许多其他类型的处理操作和置换也可以被执行。
图9显示了显示用于执行不同指令的处理周期的时序图。如图9中所示,需要置换操作的第一类型SIMD指令50在两个周期中被执行,一个周期用来执行置换,一个周期用来对使用该置换生成的操作数op1、op2执行SIMD操作。
此外,图9显示了不需要置换的第二类型SIMD指令52。该指令由SIMD单元10来处理,SIMD单元10直接对由指令52指定的操作数op1、op2执行SIMD操作,而不需要使这些操作数经过置换单元12。这与先前即使SIMD指令不需要置换也要使这些操作数经过置换阶段的实现方式形成对照。因而,本技术节省了处理周期,因此,SIMD指令52现在可以在一个处理周期内被执行。实际上,大多数SIMD指令是第二类52,需要置换的指令50很少。因此,对于大多数SIMD指令,可以避免置换需要的附加的处理周期,从而提供了显著的性能节省。
图9还显示了只需要执行置换操作而不需要执行后续的SIMD操作的单独的置换指令54。该指令54可以使用置换单元12在单个周期中被执行。
尽管本文已经参照附图详细描述了本发明的说明性的实施例,但是应当明白,本发明不局限于那些精确的实施例,并且,在不背离所附权利要求限定的本发明的范围和精神的情况下,本领域的技术人员可以在此实施各种变化和修改。
Claims (23)
1.一种数据处理装置,包括:
单指令多数据SIMD处理电路,被配置为对包括多个数据元素的第一SIMD操作数和第二SIMD操作数执行SIMD操作,所述SIMD处理电路具有多个用于处理所述第一SIMD操作数和所述第二SIMD操作数的相应数据元素的并行处理通道;
置换电路,被配置为对包括多个源数据元素的至少一个源操作数执行置换操作,以生成所述第一SIMD操作数和所述第二SIMD操作数,所述置换操作生成所述第一SIMD操作数和所述第二SIMD操作数中的至少一个,所述第一SIMD操作数和所述第二SIMD操作数中的所述至少一个与所述至少一个源操作数具有不同数据元素尺寸和不同数据元素位置中的至少一种;以及
指令解码器,被配置为对需要由所述SIMD处理电路执行SIMD操作的SIMD指令进行解码;
其中,响应于需要置换操作和识别所述至少一个源操作数的第一SIMD指令,所述指令解码器被配置为控制所述置换电路对所述至少一个源操作数执行置换操作以生成所述第一SIMD操作数和所述第二SIMD操作数,并且,所述指令解码器被配置为控制所述SIMD处理电路使用由所述置换电路生成的第一SIMD操作数和第二SIMD操作数执行SIMD操作;并且
响应于不需要置换操作和识别所述第一SIMD操作数和所述第二SIMD操作数的第二SIMD指令,所述指令解码器被配置为控制所述SIMD处理电路使用由所述第二SIMD指令识别的所述第一SIMD操作数和所述第二SIMD操作数执行所述SIMD操作,而不需要使所述第一SIMD操作数和所述第二SIMD操作数经过置换电路。
2.如权利要求1所述的数据处理装置,其中,所述处理装置被配置为以比所述第一SIMD指令更少的处理周期来处理第二SIMD指令。
3.如权利要求1所述的数据处理装置,其中,所述SIMD处理电路不支持所述置换操作。
4.如权利要求1所述的数据处理装置,其中,每个并行处理通道只能够处理出现在由所述SIMD处理电路接收的第一SIMD操作数和第二SIMD操作数内的预定数据元素位置处的数据元素,而不能处理出现在所接收的第一SIMD操作数和第二SIMD操作数中其他数据元素位置处的数据元素。
5.如权利要求1所述的数据处理装置,其中,所述第一SIMD操作数和所述第二SIMD操作数的所述数据元素具有多种不同数据元素尺寸中的一种。
6.如权利要求1所述的数据处理装置,其中,所述置换电路被配置为执行多种不同种类的所述置换操作。
7.如权利要求1所述的数据处理装置,其中,对于至少一种置换操作,所述置换电路被配置为对各自包括多个源数据元素的第一源操作数和第二源操作数执行所述置换操作,以生成所述第一SIMD操作数和所述第二SIMD操作数。
8.如权利要求1所述的数据处理装置,其中,所述置换电路被配置为执行元素重新排列置换操作,以将所述多个源数据元素中的至少一些源数据元素映射到所述第一SIMD操作数和所述第二SIMD操作数中的不同数据元素位置。
9.如权利要求8所述的数据处理装置,其中,所述元素重新排列置换操作包括用于将所述至少一个源操作数的一对相邻的源数据元素分别映射到所述第一SIMD操作数和所述第二SIMD操作数中相应数据元素位置的成对元素重新排列操作。
10.如权利要求1所述的数据处理装置,其中,所述置换电路被配置为执行元素扩展置换操作,以生成具有比所述至少一个源操作数中的一个源操作数更大的数据元素尺寸的所述第一SIMD操作数和所述第二SIMD操作数中的至少一个。
11.如权利要求10所述的数据处理装置,其中,当执行所述元素扩展置换操作时,所述置换电路被配置为通过以下操作生成所述第一SIMD操作数和所述第二SIMD操作数中的所述至少一个的每个数据元素:
(i)将所述数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充所述数据元素的第二部分。
12.如权利要求10所述的数据处理装置,其中,所述元素扩展置换操作包括元素加长置换操作,所述元素加长置换操作对各自具有M位源数据元素的第一源操作数和第二源操作数执行以生成各自具有N位数据元素的第一SIMD操作数和第二SIMD操作数,其中,M和N是整数,并且,N>M。
13.如权利要求10所述的数据处理装置,其中,所述元素扩展置换操作包括元素加宽置换操作,所述元素加宽置换操作对具有N位源数据元素的第一源操作数和具有M位源数据元素的第二源操作数执行以生成各自具有N位数据元素的第一SIMD操作数和第二SIMD操作数,其中,M和N是整数,并且,N>M。
14.如权利要求10所述的数据处理装置,其中,所述元素扩展置换操作包括元素扩展并重新排列置换操作,所述元素扩展并重新排列置换操作对具有M位源数据元素的至少一个源操作数执行以将所述源数据元素中的至少一些源数据元素映射到所述第一SIMD操作数和所述第二SIMD操作数中不同数据元素位置,所述第一SIMD操作数和所述第二SIMD操作数具有N位数据元素,其中,M和N是整数,并且,N>M。
15.如权利要求1所述的数据处理装置,其中,所述置换电路被配置为对第一源操作数和第二源操作数执行标量元素置换操作,以生成所述第一SIMD操作数和所述第二SIMD操作数,
所述标量元素置换操作包括将所述第一源操作数的所选源数据元素映射到所述第一SIMD操作数的每个数据元素,并且,将所述第二源操作数的各个数据元素映射到所述第二SIMD操作数的相应数据元素。
16.如权利要求1所述的数据处理装置,其中,所述SIMD操作包括每个并行处理通道对所述第一SIMD操作数和所述第二SIMD操作数的所述相应数据元素执行处理操作,所述处理操作包括下述操作中的一种操作:
将所述相应数据元素相加;
将所述相应数据元素之一从所述相应数据元素的另一个中减去;
确定所述相应数据元素的最小值;
确定所述相应数据元素的最大值;
确定所述相应数据元素间的绝对差;以及
确定所述相应数据元素间的绝对差,并且将所述绝对差加到存储在存储位置中的值上。
17.如权利要求1所述的数据处理装置,其中,所述置换电路被配置为将所生成的第一SIMD操作数和第二SIMD操作数写入数据存储器。
18.如权利要求1所述的数据处理装置,其中,响应于指定所述至少一个源操作数并且不需要所述SIMD处理电路执行所述SIMD操作的置换指令,所述指令解码器被配置为控制所述置换电路执行所述置换操作。
19.一种数据处理装置,包括:
单指令多数据SIMD处理装置,用于对包括多个数据元素的第一SIMD操作数和第二SIMD操作数执行SIMD操作,所述SIMD处理装置具有多个用于处理所述第一SIMD操作数和所述第二SIMD操作数的相应数据元素的并行处理通道;
置换装置,用于对包括多个源数据元素的至少一个源操作数执行置换操作,以生成所述第一SIMD操作数和所述第二SIMD操作数,所述置换操作生成所述第一SIMD操作数和所述第二SIMD操作数中的至少一个,所述第一SIMD操作数和第二SIMD操作数中的所述至少一个与所述至少一个源操作数具有不同数据元素尺寸和不同数据元素位置中的至少一种;以及
指令解码装置,用于对需要由所述SIMD处理装置执行SIMD操作的SIMD指令进行解码;
其中,响应于需要置换操作和识别所述至少一个源操作数的第一SIMD指令,所述指令解码装置被配置为控制所述置换装置对所述至少一个源操作数执行置换操作以生成所述第一SIMD操作数和所述第二SIMD操作数,并且,所述指令解码装置被配置为控制所述SIMD处理装置使用由置换装置生成的所述第一SIMD操作数和所述第二SIMD操作数来执行SIMD操作;并且
响应于不需要置换操作和识别所述第一SIMD操作数和所述第二SIMD操作数的第二SIMD指令,所述指令解码装置被配置为控制SIMD处理装置使用由所述第二SIMD指令识别的第一SIMD操作数和第二SIMD操作数来执行SIMD操作,而不需要使所述第一SIMD操作数和所述第二SIMD操作数经过置换装置。
20.一种处理数据的方法,包括:
对需要由SIMD处理电路对包括多个数据元素的第一SIMD操作数和第二SIMD操作数执行SIMD操作的单指令多数据(SIMD)指令进行解码,其中,所述SIMD处理电路具有多个用于处理所述第一SIMD操作数和所述第二SIMD操作数的相应数据元素的并行处理通道;
响应于对需要置换操作和识别包括多个源数据元素的至少一个源操作数的第一SIMD指令进行解码,控制置换电路对所述至少一个源操作数执行置换操作,以生成与所述至少一个源操作数具有不同数据元素尺寸和不同数据元素位置中的至少一种的所述第一SIMD操作数和所述第二SIMD操作数,并且,控制所述SIMD处理电路使用由所述置换电路生成的所述第一SIMD操作数和所述第二SIMD操作数来执行SIMD操作;并且
响应于对不需要置换操作和识别所述第一SIMD操作数和所述第二SIMD操作数的第二SIMD指令进行解码,控制所述SIMD处理电路使用由所述第二SIMD指令识别的所述第一SIMD操作数和所述第二SIMD操作数执行SIMD操作,而不需要使所述第一SIMD操作数和所述第二SIMD操作数经过置换电路。
21.一种数据处理装置,包括:
置换电路,被配置为响应于程序指令对包括多个源数据元素的至少一个源操作数执行置换操作,以生成包括多个置换的数据元素的至少一个置换的操作数;
所述置换操作通过以下操作生成所述至少一个置换的操作数的多个置换的数据元素中的每个置换的数据元素:
(i)将置换的数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充所述置换的数据元素的第二部分;
其中,对于至少一个置换的数据元素,所述至少一个置换的操作数内的数据元素位置与所述至少一个源操作数内相应源数据元素的数据元素位置不同。
22.一种数据处理装置,包括:
置换装置,用于响应于程序指令对包括多个源数据元素的至少一个源操作数执行置换操作,以生成包括多个置换的数据元素的至少一个置换的操作数,
所述置换操作通过以下操作生成所述至少一个置换的操作数的多个置换的数据元素中的每个置换的数据元素:
(i)将所述置换的数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充所述置换的数据元素的第二部分;
其中,对于至少一个置换的数据元素,所述至少一个置换的操作数内的数据元素位置与所述至少一个源操作数内相应源数据元素的数据元素位置不同。
23.一种处理数据的方法,包括:
响应于程序指令,对包括多个源数据元素的至少一个源操作数执行置换操作,以生成包括多个置换的数据元素的至少一个置换的操作数,
所述置换操作通过以下步骤生成所述至少一个置换的操作数的多个置换的数据元素中的每个置换的数据元素:
(i)将置换的数据元素的第一部分设置为相应源数据元素的数据值;并且
(ii)用所述相应源数据元素的所述数据值的符号扩展或零扩展填充所述置换的数据元素的第二部分;
其中,对于至少一个置换的数据元素,所述至少一个置换的操作数内的数据元素位置与所述至少一个源操作数内相应源数据元素的数据元素位置不同。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/936,576 US9292298B2 (en) | 2013-07-08 | 2013-07-08 | Data processing apparatus having SIMD processing circuitry |
US13/936,576 | 2013-07-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104281437A CN104281437A (zh) | 2015-01-14 |
CN104281437B true CN104281437B (zh) | 2018-09-18 |
Family
ID=51214738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410320577.0A Active CN104281437B (zh) | 2013-07-08 | 2014-07-07 | 具有单指令多数据处理电路的数据处理装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9292298B2 (zh) |
CN (1) | CN104281437B (zh) |
GB (1) | GB2517254B (zh) |
TW (1) | TWI622934B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9880845B2 (en) * | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
US9965275B2 (en) * | 2015-07-31 | 2018-05-08 | Arm Limited | Element size increasing instruction |
GB2540943B (en) * | 2015-07-31 | 2018-04-11 | Advanced Risc Mach Ltd | Vector arithmetic instruction |
US10970081B2 (en) * | 2017-06-29 | 2021-04-06 | Advanced Micro Devices, Inc. | Stream processor with decoupled crossbar for cross lane operations |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US10970078B2 (en) * | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US11294678B2 (en) * | 2018-05-29 | 2022-04-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
US10620958B1 (en) | 2018-12-03 | 2020-04-14 | Advanced Micro Devices, Inc. | Crossbar between clients and a cache |
US11442729B2 (en) * | 2020-10-26 | 2022-09-13 | Google Llc | Bit-packed array processing using SIMD |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1662904A (zh) * | 2002-06-26 | 2005-08-31 | 国际商业机器公司 | 具有级联simd结构的数字信号处理器 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU556521B2 (en) | 1981-06-11 | 1986-11-06 | Data General Corporation | Arithmetic unit |
US4785393A (en) | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6223320B1 (en) | 1998-02-10 | 2001-04-24 | International Business Machines Corporation | Efficient CRC generation utilizing parallel table lookup operations |
US6338136B1 (en) | 1999-05-18 | 2002-01-08 | Ip-First, Llc | Pairing of load-ALU-store with conditional branch |
JP3779540B2 (ja) * | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
US6718504B1 (en) * | 2002-06-05 | 2004-04-06 | Arc International | Method and apparatus for implementing a data processor adapted for turbo decoding |
US6915411B2 (en) * | 2002-07-18 | 2005-07-05 | International Business Machines Corporation | SIMD processor with concurrent operation of vector pointer datapath and vector computation datapath |
US6954841B2 (en) | 2002-06-26 | 2005-10-11 | International Business Machines Corporation | Viterbi decoding for SIMD vector processors with indirect vector element access |
US7191432B2 (en) | 2003-06-05 | 2007-03-13 | International Business Machines Corporation | High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7721069B2 (en) | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
TWI361379B (en) | 2006-02-06 | 2012-04-01 | Via Tech Inc | Dual mode floating point multiply accumulate unit |
US8909901B2 (en) * | 2007-12-28 | 2014-12-09 | Intel Corporation | Permute operations with flexible zero control |
US8423983B2 (en) | 2008-10-14 | 2013-04-16 | International Business Machines Corporation | Generating and executing programs for a floating point single instruction multiple data instruction set architecture |
US9652231B2 (en) | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US9529571B2 (en) * | 2011-10-05 | 2016-12-27 | Telefonaktiebolaget Lm Ericsson (Publ) | SIMD memory circuit and methodology to support upsampling, downsampling and transposition |
CN108681465B (zh) * | 2011-12-22 | 2022-08-02 | 英特尔公司 | 用于产生整数序列的处理器、处理器核及系统 |
CN104025067B (zh) * | 2011-12-29 | 2017-12-26 | 英特尔公司 | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 |
US20140013082A1 (en) * | 2011-12-30 | 2014-01-09 | Intel Corporation | Reconfigurable device for repositioning data within a data word |
US10038550B2 (en) * | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
-
2013
- 2013-07-08 US US13/936,576 patent/US9292298B2/en active Active
-
2014
- 2014-05-27 TW TW103118467A patent/TWI622934B/zh active
- 2014-06-05 GB GB1409947.7A patent/GB2517254B/en active Active
- 2014-07-07 CN CN201410320577.0A patent/CN104281437B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1662904A (zh) * | 2002-06-26 | 2005-08-31 | 国际商业机器公司 | 具有级联simd结构的数字信号处理器 |
Also Published As
Publication number | Publication date |
---|---|
US9292298B2 (en) | 2016-03-22 |
GB2517254A (en) | 2015-02-18 |
CN104281437A (zh) | 2015-01-14 |
TWI622934B (zh) | 2018-05-01 |
GB2517254B (en) | 2021-03-31 |
TW201502995A (zh) | 2015-01-16 |
US20150012724A1 (en) | 2015-01-08 |
GB201409947D0 (en) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104281437B (zh) | 具有单指令多数据处理电路的数据处理装置 | |
KR100715055B1 (ko) | Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법 | |
US9424045B2 (en) | Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit | |
US9965275B2 (en) | Element size increasing instruction | |
KR20180039645A (ko) | 메모리와 복수의 벡터 레지스터와의 사이에서 복수의 데이터 구조체를 전송하는 장치 및 방법 | |
EP2796990A2 (en) | Apparatus and method for supporting multi-modes of processor | |
CN110300956B (zh) | 数据处理装置中的乘-累加 | |
US8959276B2 (en) | Byte selection and steering logic for combined byte shift and byte permute vector unit | |
CN104899181B (zh) | 用于处理向量操作数的数据处理装置和方法 | |
US11036502B2 (en) | Apparatus and method for performing a rearrangement operation | |
JP2005227942A (ja) | プロセッサ及びコンパイラ | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
RU2006135629A (ru) | Вставка битов в слово данных | |
EP1267255A2 (en) | Conditional branch execution in a processor with multiple data paths | |
US9933996B2 (en) | Selectively combinable shifters | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
US10963251B2 (en) | Vector register access | |
EP3655852B1 (en) | Vector interleaving in a data processing apparatus | |
EP1299803B1 (en) | Register addressing | |
US8560811B2 (en) | Lane crossing instruction selecting operand data bits conveyed from register via direct path and lane crossing path for execution | |
KR102252600B1 (ko) | 데이터 처리장치 및 데이터 요소들의 인터리브된 기억을 위한 방법 | |
US8892623B2 (en) | Data processing apparatus and method | |
US20240111529A1 (en) | Vector processing unit with programmable multicycle shuffle unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |