CN110914801B - 在数据处理设备中的向量交叉 - Google Patents
在数据处理设备中的向量交叉 Download PDFInfo
- Publication number
- CN110914801B CN110914801B CN201880046751.3A CN201880046751A CN110914801B CN 110914801 B CN110914801 B CN 110914801B CN 201880046751 A CN201880046751 A CN 201880046751A CN 110914801 B CN110914801 B CN 110914801B
- Authority
- CN
- China
- Prior art keywords
- data items
- input data
- vector
- register
- source register
- 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 184
- 239000013598 vector Substances 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 7
- 238000004088 simulation Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 238000004378 air conditioning Methods 0.000 description 1
- 230000008045 co-localization Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction 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
- 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/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
-
- 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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
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)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开了在数据处理设备中的向量交叉技术,向量交叉技术包含设备、指令、操作设备的方法,及模拟器实施方式。向量交叉指令指定第一源寄存器、第二源寄存器及目的地寄存器。第一组输入数据项是从第一源寄存器提取,且第二组输入数据项是从第二源寄存器提取。对从第一及第二组输入数据项取得的所选择的输入数据项对执行数据处理运算以产生一组结果数据项,该组结果数据项作为结果数据向量存储于该目的地寄存器中。第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
Description
技术领域
本公开涉及一种数据处理设备。更具体地,本公开涉及数据处理设备可执行的向量处理运算。
背景技术
在对一组输入数据项执行数据处理运算的数据处理设备中,较大的处理效率及吞吐量在输入数据项可用向量化方式处理的情况下得到,其中跨越向量的宽度的数据项组并行地经历相同数据处理,而不是例如采取这些数据项将一个接一个地处理的顺序处理方法。然而,如果切实可行的数据处理设备将在无过度复杂性的情况下提供,则将数据处理施加至来自源寄存器的输入数据项且将结果存储于目的地寄存器中的向量化方法可对可执行的数据处理的种类及形成这些数据处理运算的操作数的输入数据项的组合强加某些限制,此情形可将向量化方法的优点呈现为不值得的。
发明内容
在一个示例实施例中,存在一种设备,该设备包含:指令解码器电路,该指令解码器电路用于对指令进行解码;以及数据处理电路,该数据处理电路用于将由指令指定的向量处理运算选择性地施加至输入数据向量,输入数据向量在输入数据向量中的相应位置处包含多个输入数据项,其中该指令解码器电路响应于指定第一源寄存器、第二源寄存器及目的地寄存器的向量交叉指令,以产生控制信号来控制该数据处理电路执行向量交叉处理以:从该第一源寄存器提取第一组输入数据项;从该第二源寄存器提取第二组输入数据项;对从该第一及第二组输入数据项取得的至少选择的输入数据项对执行数据处理运算,以产生一组结果数据项;以及将该一组结果数据项作为结果数据向量存储于该目的地寄存器中,其中具有第一源寄存器内容相依性的第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且其中具有第二源寄存器内容相依性的第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
在另一示例实施例中,存在一种操作数据处理设备的方法,该方法包含以下步骤:对指令进行解码;将由指令指定的向量处理运算选择性地施加至输入数据向量,输入数据向量在输入数据向量中的相应位置处包含多个输入数据项;响应于指定该设备的第一源寄存器、第二源寄存器及目的地寄存器的向量交叉指令而产生控制信号来控制该设备的数据处理电路执行向量交叉处理,该向量交叉处理包含:自该第一源寄存器提取第一组输入数据项;自该第二源寄存器提取第二组输入数据项;对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算,以产生一组结果数据项;及将该组结果数据项作为结果数据向量存储于该目的地寄存器中,其中具有第一源寄存器内容相依性的第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且其中具有第二源寄存器内容相依性的第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
在另一示例实施例中,存在一种设备,该设备包含:用于对指令进行解码的单元;用于将由指令所指定的向量处理运算选择性地施加至输入数据向量的单元,输入数据向量在输入数据向量中的相应位置处包含多个输入数据项;用于回应于指定该设备的第一源寄存器、第二源寄存器及目的地寄存器的向量交叉指令而产生控制信号来控制该设备的数据处理电路执行向量交叉处理的单元,该向量交叉处理包含:用于自该第一源寄存器提取第一组输入数据项的单元;用于自该第二源寄存器提取第二组输入数据项的单元;用于对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算以产生一组结果数据项的单元;及用于将该组结果数据项作为结果数据向量存储于该目的地寄存器中的单元,其中具有第一源寄存器内容相依性的第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且其中具有第二源寄存器内容相依性的第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
在另一示例实施例中,存在一种用于控制主机数据处理设备提供指令执行环境的计算机程序,该计算机程序包含:指令解码程序逻辑,该指令解码程序逻辑用于对指令进行解码;及数据处理程序逻辑,该数据处理程序逻辑用于将由指令所指定的向量处理运算选择性地施加至输入数据向量结构,输入数据向量结构在输入数据向量结构中的相应位置处包含多个输入数据项,其中该指令解码程序逻辑响应于指定第一源数据结构、第二源数据结构及目的地数据结构的向量交叉指令,以产生控制信号来控制该数据处理程序逻辑执行向量交叉处理以:自该第一源数据结构提取第一组输入数据项;自该第二源数据结构提取第二组输入数据项;对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算,以产生一组结果数据项;及将该组结果数据项作为结果数据向量结构存储于该目的地数据结构中,其中具有第一源数据结构内容相依性的第一源数据结构相依性结果数据项存储于目的地数据向量结构中的第一组交替位置中,且其中具有第二源数据结构内容相依性的第二源数据结构相依性结果数据项存储于该目的地数据向量结构中的第二组交替位置中。
在另一示例实施例中,存在一种计算机可读取存储介质,该计算机可读取存储介质以非暂时性型式存储上文所提及的计算机程序。
附图说明
仅通过实例,将参考如在随附图中说明的当前技术的实施例来进一步描述当前技术,其中:
图1示意性地示出可体现当前技术的各种实例的数据处理设备;
图2A示意性地示出数据处理电路对自两个源寄存器中的每一者所取得的元素对执行数据处理,且以交叉方式将元素对写入至目的地寄存器中;
图2B图示用于图2A的实例中的寄存器的元素的示例内容;
图3A示意性地示出数据处理电路对自第一及第二源寄存器所取得的数据元素对执行数据处理运算且以交叉方式将来自每一源寄存器的结果写入至目的地寄存器中,其中写入至目的地寄存器中的元素的数据大小可经指定;
图3B示出图3A的实例中的元素的示例内容;
图4A示意性地示出在源寄存器中的一者亦提供目的地寄存器的实例中的数据处理电路;
图4B示出图4A的实例中的示例内容;
图5A示出在指令指定用于选择性地启用/停用某些处理的谓词(predicate)值的一个实例中的数据处理电路及寄存器;
图5B给出图5A的实例中的寄存器的元素的示例内容及对应谓词值;
图6示意性地示出在将要经历数据处理运算的输入数据项对是从第一及第二源寄存器的对角邻近元素取得的一个实例中的数据处理电路;
图7图示用于多项式乘法的示例数据处理脉络(data processing context)的一些定义,其中当前技术的一些指令得以使用;
图8图示图7的多项式乘法实例的步进式寄存器内容,其中示例指令序列通过当前技术提供以执行此多项式乘法;
图9为一个实施例的方法中的步骤的序列;
图10为在一个实施例的方法中采取的步骤的序列;及
图11示意性地示出在一个实施例中的提供模拟器实施方式的系统的组件。
具体实施方式
至少一些实施例提供一种设备,该设备包含:指令解码器电路,该指令解码器电路用于对指令进行解码;及数据处理电路,该数据处理电路用于将由指令指定的向量处理运算选择性地施加至输入数据向量,输入数据向量在输入数据向量中的相应位置处包含多个输入数据项,其中该指令解码器电路响应于指定第一源寄存器、第二源寄存器及目的地寄存器的向量交叉指令,以产生控制信号来控制该数据处理电路执行向量交叉处理以:自该第一源寄存器提取第一组输入数据项;自该第二源寄存器提取第二组输入数据项;对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算,以产生一组结果数据项;及将该组结果数据项作为结果数据向量存储于该目的地寄存器中,其中具有第一源寄存器内容相依性的第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且其中具有第二源寄存器内容相依性的第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
当前技术认识到,在必要硬件中的处理效率及较小复杂性是在向量处理方法中得到,在该向量处理方法处存在经处理的输入数据项与所产生的结果数据项的共同定位。举例而言,此共同定位是在处理巷道(processing lane)(独立数据处理在处理巷道内发生)经良好界定且良好约束的实施方式中达成。换言之,此情形意谓:需要集合数据处理运算的所需操作数且将所得数据项传送至目的地寄存器中的所需位置的硬件的复杂性是受限的。在此上下文中,当前技术已发现提供向量交叉指令是有用的,该向量交叉指令一方面使所选择输入数据项对自提取自第一及第二源寄存器的第一及第二组输入数据项取得,且另一方面使结果数据项取决于其源寄存器相依性而存储于目的地寄存器中,使得第一源寄存器相依性结果数据项存储于目的地寄存器中的交替位置中而且第二源寄存器相依性结果数据项亦存储于目的地寄存器中的交替位置中。此组态在输入数据项的特定配对中启用有用灵活度,这些配对经定义且在结果数据项所写入至的目的地寄存器中的交替位置上为轮流的。的确,当前技术不限于严格输入数据项对,原因在于数据处理运算除核心对之外亦可具有一个或多个额外操作数。然而,此方法仍提供在向量化数据处理中所涉及的相关元素的上文所提及的共同定位,从而避免在必须提供的支持硬件中的过度复杂性,但仍使有用数据处理能够执行,针对该有用数据处理,另外的相关联数据处理运算(例如,置换或轮换内容)是不需要的。经实施的向量化数据处理的有用效率及吞吐量因此得以支持。
如上文所提及,所选择数据项对可以多种有用方式定义,但在一些实施例中,自第一及第二组输入数据项所取得的所选择输入数据项对包含:由第一源寄存器中的邻近输入数据项对形成的第一组输入数据项对;及由第二源寄存器中的邻近输入数据项对形成的第二组输入数据项对。因此,多对邻近元素(输入数据项)是自第一及第二源寄存器两者取得,从而意谓数据处理的输入数据项操作数经有用地共置,但此外从输入数据项操作数所产生的结果数据项与目的地寄存器中的其他项目交叉,因此最大化目的地寄存器利用率(由于目的地寄存器经完全“包装”)进一步支持正执行的向量化数据处理的效率及吞吐量。
确保目的地寄存器的此完全利用率的一种方式为将得自第一源寄存器内容的结果数据项与得自第二源寄存器内容的结果数据项交叉,且因此在一些实施例中,目的地数据向量中的第一组交替位置与目的地数据向量中的第二组交替位置交替。在一些实施例中,第一组交替位置为目的地数据向量中的偶数编号组的位置,且第二组交替位置为目的地数据向量中的奇数编号组的位置。或者在其他实施例中,第一组交替位置为目的地数据向量中的奇数编号组的位置,且第二组交替位置为目的地数据向量中的偶数编号组的位置。
然而,所选择输入数据对可在其他实施例中不同地定义,且在一些实施例中,自第一及第二组输入数据项所取得的所选择输入数据项对包含对角线输入数据项对,对角线输入数据项对由第一源寄存器中的交替输入数据项与第二源寄存器中的交替输入数据项配对而形成。换言之,在这些实施例中,输入数据项对横跨第一及第二源寄存器,原因在于该对中的一个输入数据项来自第一源寄存器,而该对中的另一输入数据项来自第二源寄存器。此外,此配对在如下意义上为“对角线的”:自第一源寄存器所取得的输入数据项相对于自第二源寄存器所取得的输入数据项处于第一源寄存器中的偏移位置处,此偏移为一个数据项位置。因此,来自第一源寄存器的交替输入数据项与第二源寄存器中的自邻近数据项位置所取得的交替输入数据项配对。各种数据处理脉络可得益于此“对角线输入数据项对”方法,如关于随后的其一些实例将变得更清楚。
因此,在所有结果数据项是取决于第一源寄存器及第二源寄存器两者的一些实施例中,由第一源寄存器相依性结果数据项及第二源寄存器相依性结果数据项所定义的这些组是相同的,且因此在一些实施例中,第一源寄存器相依性结果数据项及第二源寄存器相依性结果数据项为同一组结果数据项,且第一组交替位置及第二组交替位置为目的地数据向量中的同一组交替位置。因此,在结果数据项存储于目的地数据向量中的位置方面,在这些实施例中,此情形因此意谓上文所提及的第一组交替位置及第二组交替位置为目的地数据向量中的同一组交替位置。
因此,在这些实施例中,此情形意谓另外一组交替位置(亦即,结果数据项并未存储至其中的交替位置)是可利用的以由其他数据项占据。这些交替位置可取决于何种交替位置对于正执行的特定向量化数据处理有益而以各种方式选择,但在一些实施例中,第一组交替位置及第二组交替位置与一组先前数据项保留于目的地数据向量中的另外一组位置交替,其中该组先前数据项在数据处理电路开始向量交叉处理之前存在于目的地数据向量中的该另外一组位置中。换言之,在目的地数据向量中存在未由向量交叉处理改变(保持未修正)的一组先前数据项。
将认识到,取决于要求,目的地数据向量中的第一及第二组位置可在一些实施例中经选择,使得第一组位置为目的地数据向量中的偶数编号组的位置且该另外一组位置为目的地数据向量中的奇数编号组。或者在其他实施例中,第一组位置为目的地数据向量中的奇数编号组的位置,且该另外一组位置为目的地数据向量中的偶数编号组的位置。
同样地,亦将认识到,自第一及第二源寄存器所提取的交替输入数据项具有与其相关联的等效选择,且因此在一些实施例中,第一源寄存器中的交替输入数据项是自第一源寄存器中的偶数编号组的位置提取,且第二源寄存器中的交替输入数据项是自第二源寄存器中的奇数编号组的位置提取。或者在其他实施例中,第一源寄存器中的交替输入数据项是自第一源寄存器中的奇数编号组的位置提取,且第二源寄存器中的交替输入数据项是自第二源寄存器中的偶数编号组的位置提取。
对输入数据项所执行的特定数据处理运算可采取多种形式,但在各种实施例中,数据处理运算为算术运算、逻辑运算或移位运算。可选择任何此运算,该运算经合适地配置来遵守将要执行的向量化数据处理的向量化“巷道”的约束。
在一些实施例中,在向量交叉指令中所指定的目的地寄存器为相异于第一及第二源寄存器的寄存器,但在一些实施例中,在向量交叉指令中所指定的目的地寄存器为第一源寄存器及第二源寄存器中的一者。此情形因此提供可采取的至少部分地“破坏性”方法,其中该源寄存器的数据项中的至少一些数据项是由将该组结果数据项存储至此寄存器中而覆写。
当前技术将可配置性的另外方面提供至响应于向量交叉指令而执行的向量化数据处理,原因在于在一些实施例中,向量交叉指令进一步指定包含预测位的预测值,预测位对应于输入数据向量中的相应位置,且数据处理电路进一步响应于预测值中的取消设定预测位来以禁止第一组输入数据项及第二组输入数据项中对应于取消设定预测位的输入数据项涉及向量交叉处理。因此,另外特定控制可因此施加至由设定或取消设定预测值中的某些预测位的有效机制进行的处理。此预测值可以数种方式在向量交叉指令中指定,作为交叉指令自身内的实时值抑或由指示将发现预测值的存储位置的向量交叉指令,该存储位置例如为另外寄存器。
对当前技术的另一灵活度在实施例中得以提供,在这些实施例中,向量交叉指令进一步指定第一组输入数据项的第一数据项大小、第二组输入数据项的第二数据项大小,及该组结果数据项的结果数据项大小。此方法不仅仅为一般有用的,以便能够控制自第一及第二源寄存器所提取的特定输入数据项,且控制存储至目的地寄存器中的结果数据项的特定格式,但可在设法由指定将适当地遵守向量化巷道的数据大小而维持巷道内的处理的上下文中发现特定适用性。
此情形可例如包含缩窄结果数据项,但相反地亦可包含允许结果数据项的加宽(相对于输入数据项),因此例如使不损失精确度的“无进位”乘法能够执行,亦即,该乘法保留计算中的所有信息,该信息在某些上下文中(例如在密码学中)可为重要的。
因此,在一些实施例中,第一数据项大小及第二组输入数据项的第二数据项大小小于该组结果数据项的结果数据项大小。或者在其他实施例中,第一数据项大小及第二组输入数据项的第二数据项大小大于该组结果数据项的结果数据项大小。
至少一些实施例提供一种操作数据处理设备的方法,该方法包含以下步骤:对指令进行解码;将由指令所指定的向量处理运算选择性地施加至输入数据向量,输入数据向量在输入数据向量中的相应位置处包含多个输入数据项;响应于指定该设备的第一源寄存器、第二源寄存器及目的地寄存器的向量交叉指令而产生控制信号来控制该设备的数据处理电路执行向量交叉处理,该向量交叉处理包含:自该第一源寄存器提取第一组输入数据项;自该第二源寄存器提取第二组输入数据项;对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算,以产生一组结果数据项;及将该组结果数据项作为结果数据向量存储于该目的地寄存器中,其中具有第一源寄存器内容相依性的第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且其中具有第二源寄存器内容相依性的第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
至少一些实施例提供一种设备,该设备包含:用于对指令进行解码的单元;用于将由指令所指定的向量处理运算选择性地施加至输入数据向量的单元,输入数据向量在输入数据向量中的相应位置处包含多个输入数据项;用于回应于指定该设备的第一源寄存器、第二源寄存器及目的地寄存器的向量交叉指令而产生控制信号来控制该设备的数据处理电路执行向量交叉处理的单元,该向量交叉处理包含:用于自该第一源寄存器提取第一组输入数据项的单元;用于自该第二源寄存器提取第二组输入数据项的单元;用于对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算以产生一组结果数据项的单元;及用于将该组结果数据项作为结果数据向量存储于该目的地寄存器中的单元,其中具有第一源寄存器内容相依性的第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且其中具有第二源寄存器内容相依性的第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
至少一些实施例提供一种用于控制主机数据处理设备提供指令执行环境的计算机程序,该计算机程序包含:指令解码程序逻辑,该指令解码程序逻辑用于对指令进行解码;及数据处理程序逻辑,该数据处理程序逻辑用于将由指令指定的向量处理运算选择性地施加至输入数据向量结构,输入数据向量结构在输入数据向量结构中的相应位置处包含多个输入数据项,其中该指令解码程序逻辑响应于指定第一源数据结构、第二源数据结构及目的地数据结构的向量交叉指令,以产生控制信号来控制该数据处理程序逻辑执行向量交叉处理以:自该第一源数据结构提取第一组输入数据项;自该第二源数据结构提取第二组输入数据项;对自该第一及第二组输入数据项所取得的至少所选择输入数据项对执行数据处理运算,以产生一组结果数据项;及将该组结果数据项作为结果数据向量结构存储于该目的地数据结构中,其中具有第一源数据结构内容相依性的第一源数据结构相依性结果数据项存储于目的地数据向量结构中的第一组交替位置中,且其中具有第二源数据结构内容相依性的第二源数据结构相依性结果数据项存储于该目的地数据向量结构中的第二组交替位置中。
至少一些实施例提供一种计算机可读取存储介质,该计算机可读取存储介质以非暂时性型式存储上文所提及的计算机程序。
现参看诸图描述一些特定实施例。
图1示意性地示出可体现当前技术的各种实例的数据处理设备10。该设备包含数据处理电路12,数据处理电路12响应于其执行的指令序列对数据项执行数据处理运算。指令是自数据处理设备已存取的内存14提取,且以一般熟习此项技术者将熟悉的方式,撷取电路16为此目的得以提供。此外,由撷取电路16所提取的指令传递至指令解码器电路18,指令解码器电路18产生控制信号,控制信号经布置来控制数据处理电路12以及一组寄存器20及加载/存储单元22的组态及操作的各种态样。大体而言,数据处理电路12可以管线式型式布置,而其详情并不与当前技术相关。一般熟习此项技术者将熟悉图1表示的一般组态,且该组态的进一步详细描述仅为简要的目的而随其施配。如在图1中可见,寄存器20各自包含用于多个数据元素的存储件,使得处理电路可将数据处理运算施加至经指定寄存器内的经指定数据元素,抑或可将数据处理运算施加至经指定寄存器内的经指定群组的数据元素(“向量”)。具体地,所示出的数据处理设备与向量化数据处理运算相对于保持于寄存器20中的数据元素的执行相关,且特定地与向量交叉指令的执行相关,该数据处理设备的进一步解释将在下文参考一些特定实施例更详细地跟随。由数据处理电路12在指令的执行中所需的数据值,及由于数据处理指令所产生的数据值,由加载/存储单元22写入至内存14及自内存14读取。亦注意,大体而言,图1中的内存14作为计算机可读取存储介质的实例可见,在该计算机可读取存储介质上可存储有当前技术的指令,通常作为处理电路接着执行的预定义指令序列(“程序”)的部分。然而,处理电路可自多种不同来源存取此程序,诸如在RAM中、在ROM中、经由网络接口等。本公开描述数据处理电路12可执行的各种新颖指令及接下来提供指令的本质的进一步解释的诸图、数据处理电路中的变化以便支持指令的执行等。
图2A示意性地示出在一个实施例中的寄存器及数据处理电路。在此实例中,源寄存器30(来源0)及源寄存器32(来源1),以及目的地寄存器34得以示出。此组三个寄存器是在向量交叉指令中指定,该向量交叉指令使所示出的处理(由实现组件之间的适当连接)得以执行。如所示,输入数据元素对是自第一及第二源寄存器中的邻近位置提取,寄存器将操作数提供至在相应“运算”(OP)电路36、38、40及42中对每一输入数据元素对执行的数据处理运算。由数据处理电路的项目所执行的特定运算可采取多种形式,但如图2B中所示由三个寄存器的相应位置中对应于图2A中所示的处理的数据项的示例内容,在此实例中,运算为互斥OR。然而,在其他实例中,运算可为任何种类的算术运算(例如,加法、乘法等)、逻辑运算(例如,AND、OR等)或移位运算(左或右,及由任何合适数目个位位置)。如由自数据运算电路导向目的地寄存器34的结果数据路径所示,由此处理所产生的结果数据项取决于输入数据对所来自于的源寄存器而存储于目的地寄存器中的交替位置中。因此,在所示实例中,来自源寄存器30的结果数据项存储于奇数编号的位置1及3中,而得自源寄存器32的结果数据项存储于偶数编号的位置0及2中。应了解,此情形可响应于不同地配置的向量交叉指令而不同地提供,使得奇数及偶数位置得以颠倒。最终注意,图2A及图2B中的寄存器中的每一者经示出为示出两对数据输入值自每一源寄存器取得且四个结果数据项经写入至目的地寄存器中,但朝向该图的左手侧的线延伸部示出,在此向量化数据处理上下文中,所示出处理的进一步迭代可跨越所提供设备的向量处理性能的宽度来提供。
图3A示意性地示出在类似于图2A及图2B中所示的实施例的实施例中的数据处理电路及寄存器。第一源寄存器40及第二源寄存器42(源寄存器0及1)以及目的地寄存器44得以示出。用于执行所需数据处理运算(“OP”)46、48、50及52的数据处理电路亦得以示出。在此实例中,如由图3B中所给出的示例内容所示出,运算为乘法。如之前,此运算可按需要为任何所选算术、逻辑或移位运算。区分图3A及图2A为如下事实:图3A示出“加宽”运算的执行,其中自每一源寄存器所提取的每一数据项的大小为存储于目的地寄存器中的每一所得结果数据值的大小的一半。此处,实例经给出为输入数据项为双倍(d)且结果数据项为四倍(q)。此情形为二进制浮点格式,双倍输入数据项为各自64位值,而四倍值为各自128位值。此情形使所示的示例数据处理(亦指代图3B的示例内容)能够被执行,其中此实例中的运算为乘法,且因此此方法使不损失信息的加宽无进位乘法能够被执行。注意,亦在图3A的特定实例中,双倍是自源寄存器中的每一128位数据项的下半部取得,此在触发此数据处理的向量交叉指令中为可指定的。相反实例亦可被提供,其中数据项的上半部可被取得。在一个实例中,指令是以两个形式提供以支持此情形,“T”形式(其将使上半部内容得以使用)及“B”形式(其将使下半部内容得以使用)。的确,当前技术提供向量交叉指令,其中数据项的大小在格式中跨越宽范围为可指定的,这些格式例如8位字节、16位半部、32位单倍、64位双倍及128位四倍。随着这些源寄存器及数据处理电路的容量增加的进一步延伸当然是可能的。亦注意,在图3A及图3B的实例给出加宽数据处理运算的情况下,相反性能亦被提供,其中针对合适的数据处理运算,较窄的结果数据项是自较宽的源寄存器输入数据项产生。
图4A示出另一实例,其中仅两个寄存器得以使用,第一源寄存器60及亦为目的地寄存器的第二源寄存器62。换言之,由运算电路64、66、68及70的数据处理所产生的结果数据值存储回至源寄存器62中。因此,此实例可据称为“破坏性的”,原因在于第二源寄存器62的内容在一旦结果数据项已覆写其时丢失。针对此设立的示例内容在图4B中给出,图示来源0的内容,且在数据处理之前及之后均示出来源1的内容。在此实例中,数据处理为XOR运算,但如在上文所述的其他实例中,此按需要可为任何多种算术、逻辑或移位运算。
图5A示意性地示出另外示例实施例。在此实例中,源寄存器80及82以及目的地寄存器84得以示出。另外,在此实例中,谓词值86亦得以图示。此谓词值可作为实时值在指令中指定,否则可由其在数据处理设备中的存储位置指定,例如在另一寄存器中。谓词值对数据处理的影响在图5A中可见,原因在于在谓词值的位位置与数据处理的巷道之间存在对应性。因此,在谓词值的两个位经设定(1)且两个位经取消设定(0)的情况下,此情形有效地在适当时接通或断开由数据处理电路项目88、90、92、94、96、98、100及102所执行的处理。特定而言,在所示实例中,无处理由项目90、94、98及102执行,而88、92、96及100如上文参看图2A、图3A及图4A所述而操作。在图5A中所示的实例中,如图5B中所示出,处理为XOR运算,但如之前,任何算术、逻辑或移位运算可等效地执行。实际上,因此,目的地寄存器的内容仅在自有效数据处理电路(OP单元)接收结果数据项的位置中修改,在图5A中,目的地寄存器中的未修正位置为有阴影线的。图5B示出在数据处理之前及之后两者的目的地寄存器的内容,从而证明某些位置的内容并未改变。
图6示意性地示出采取了对于输入数据项的配对的不同方法的另外示例组态。源寄存器110及112以及目的地寄存器114得以示出。在此实例中,这些对横跨两个源寄存器,亦即,一个输入操作数数据项是自第一源寄存器取得,而另一输入操作数数据项是自另一源寄存器取得。因此,在图6的实例中,数据项A0及A2是自第一源寄存器取得且分别与来自第二源寄存器的数据项B1及B3配对。这些寄存器将输入提供至数据处理电路116及118,数据处理电路116及118如做标签可见执行XOR运算(如在先前实例中,此运算可以各种方式定义)。由数据处理电路的这些两个项所产生的结果数据项存储于目的地寄存器114中的两个位置中,这些位置与目的地寄存器114中的第二组位置交叉,该第二组位置由所执行的数据处理保持不变。关于图6中的实例,应了解,来自第一源寄存器的提供输入数据项的偶数编号的位置及第二源寄存器中的提供输入数据项的奇数编号的位置的选择可颠倒,亦即,奇数编号的项目来自第一源寄存器且偶数编号的项目来自第二源寄存器。类似地,将结果数据项写入至的偶数编号的位置的选择可替代地选择为在目的地寄存器中具有不变的数据项的该组奇数编号的位置,接着当然占据偶数编号的位置。由给定指令中的合适标记抑或由针对每一版本的单独定义的指令支持所有这些置换的指令可得以提供。
图7及图8示出且描述当前技术在用于多项式乘法的上下文中时的一个示例实施例。此处,当前技术尤其提供指定互斥OR运算的向量交叉指令,且此外此互斥OR运算是以两种格式提供,该等两种格式在图8的实例中称为EORBT及EORTB,其中后两个字母B及T指代“底部”及“顶部”,即给定数据项的下半部及上半部,这些半部指示应处置这些运算的方式,如下文将更详细地解释。这些特定指令有益于加快多项式乘法(在伽罗毕域中)。此外,此实例为无进位乘法中的一者。因此,以图7中所示的一些定义开始,采取卡拉楚巴方法以使得:
{X1,X0}*{Y1,Y0}=H_128{P1,P0^P1^Q1^R1},
L_128{Q1^P0^Q0^R0,Q0}
其中:
{P1,P0}=X1*Y1
{Q1,Q0}=X0*Y0
{R1,R0}=(X0^X1)*(Y0^Y1)
此外,使向量zX及zY得以定义:
zX={……X1,X0}且zY={……Y1,Y0}
以下指令序列(使用上文所提及的EORTB及EORBT指令)可接着用于执行所需计算。
PMULLB zl.q,zY.d,zX.d//z1={.....Q1,Q0}
PMULLT z2.q,zY.d,zX.d//z2={.....Pl,P0}
EORBT zX.q,zX.d,zX.d
EORBT zY.q,zY.d,zY.d
PMULLB z3.q,zX.d,zY.d//z3={.....Rl,R0}
EOR z3.d,z3.d,z2.d
EOR z3.d,z3.d,zl.d//z3={.....Pl^Ql^Rl,P0^Q0^R0}
EORTB zl.q,zl.d,z3.d
EORBT z2.q,z2.d,z3.d
因此注意,每一128位宽乘法的256位结果在寄存器z1与z2之间分离,其中z1含有底部128位且z2含有顶部128位。此情形可例如在最小向量长度为128位的实施方式中有效地工作,且因此此示例指令(程序代码)序列可针对此系统内的任何给定向量长度工作。图8随着这些指令经执行以产生这些相应底部128位(其最终导致寄存器z1)及顶部128位(其最终导致寄存器z2)而示出寄存器zX、zY、z1、z2及z3的相应数据项的内容。
图9图示在当前技术的向量交叉指令由设备遇到时在一个实施例的方法中所采取的步骤的序列。流程可被认为在步骤200处开始,其中对由指令解码器电路所接收的指令序列中的下一指令进行解码。接着在步骤202处判定此指令是否为向量交叉指令。若该指令并非向量交叉指令,则流程经由步骤204而进行,在步骤204处,在适当时处理此其他种类指令(本描述并不与其他类型的指令相关)。然而,若在步骤202处发现此指令为向量交叉指令,则流程进行至步骤206,在步骤206处自第一源寄存器提取输入数据项,且进行至步骤208,在步骤208处自第二源寄存器提取输入数据项。将了解,在阅读先前诸图的描述后发现,步骤206及208无需按顺序执行,且的确将通常并行地执行,但在图9中为简单性起见仅仅以此顺序型式示出。在步骤210处,使用如由向量交叉指令所定义的输入数据项对执行由此向量交叉指令所定义的数据处理运算,且在步骤212处,根据所遇到的向量交叉指令的特定类型在适当时将结果数据项存储至目的地寄存器中的交替位置中。流程接着返回至步骤200。
图10图示在另一实施例的方法中所采取的步骤的序列,从而给出可遇到不同类型的向量交叉指令的实施例的进一步细节。流程在步骤220处开始,在步骤220处对由指令解码器电路所接收的下一指令进行解码。若发现此指令并非(在步骤222处)向量交叉指令,则流程经由步骤224进行,在步骤224处在适当时处理此其他类型的指令(又,此指令在本公开中并非相关的)。当此指令为向量交叉指令时,流程进行至步骤224,在步骤224处判定此指令为“成对”或“对角线”样式的向量交叉指令。在此指令为成对向量交叉指令的情况下,则流程进行至步骤226,在步骤226处自第一源寄存器提取第一组数据项对且自第二源寄存器提取第二组数据项对(如在指令中指定)。接着在步骤228处,使这些对经历由指令所指定的所需数据处理运算。接着在步骤230处,将第一对数据项的结果存储至目的地寄存器中的奇数位置,而将来自第二组数据项对的结果存储至目的地寄存器中的偶数位置。如在步骤230中的括号中所示,可颠倒奇数及偶数的此选择(例如,由成对指令的两个变体)。流程接着返回至步骤220。返回至考虑步骤224,若此指令替代地为对角线向量交叉指令,则流程自步骤224进行至步骤232,在步骤232处提取来自第一及第二源寄存器中的对角邻近位置的输入数据项对,且在步骤234处使这些输入数据项对经历由向量交叉指令所定义的数据处理运算。接着在步骤236处,将数据处理运算的结果存储至目的地寄存器中的奇数位置,而偶数位置保持未修正(不变)。图10的步骤236中的加括号词“偶数”及“奇数”指示,奇数及偶数的此选择可颠倒(例如,由对角线指令的两个变体)。流程接着返回至步骤220。
图11示出出可使用的模拟器实施方式。尽管较早描述的实施例依据用于操作支持相关技术的特定处理硬件的设备及方法实施本发明,提供经由计算机程序的使用所实施的根据本文所述的实施例的指令执行环境亦为可能的。这些计算机程序常常称为模拟器,正如这些计算机程序提供硬件架构的基于软件的实施方式。多种多样的模拟器计算机程序包括模拟器、虚拟机、模型,及包括动态二进制转译器的二进制转译器。通常,模拟器实施方式可在支持模拟器程序710的主机处理器730上运行,主机处理器730可选地运行主机操作系统720。在一些布置中,在硬件与所提供的指令执行环境,及/或同一主机处理器上所提供的多个相异的指令执行环境之间可存在多个模拟层。历史上,已需要强大的处理器来提供在合理速度下执行的模拟器实施方式,但此方法可在某些情况下被证明正当,诸如当需要为了兼容性或再用原因而运行对于另一处理器为原生的代码时。举例而言,模拟器实施方式可向指令执行环境提供并不由主机处理器硬件支持的额外功能性,或提供通常与不同硬件架构相关联的指令执行环境。模拟的概述是在“Some Efficient ArchitectureSimulation Techniques”,Robert Bedichek,Winter 1990USENIX Conference,第53至63页中给出。
就实施例先前已参考特定硬件构造或特征描述而言,在经模拟实施例中,等效功能性可由合适的软件构造或特征来提供。举例而言,特定电路可在经仿真实施例中实施为计算机程序逻辑。类似地,诸如寄存器或高速缓存的内存硬件可在经仿真实施例中实施为软件数据结构。在先前描述的实施例中所参考的硬件组件中的一或多者存在于主机硬件(例如,主机处理器730)上的布置中,一些经模拟实施例可在合适的情况下利用主机硬件。
模拟器程序710可存储于计算机可读取存储介质(该计算机可读取存储介质可为非暂时性介质)上,且提供对目标代码700(其可包括应用程序、操作系统及超管理器)的程序接口(指令执行环境),该程序接口与正由模拟器程序710模型化的硬件架构的应用程序编程接口相同。因此,目标代码700的程序指令,包括上文所述的向量交叉指令,可使用模拟器程序710自指令执行环境内执行,使得并非实际上具有上文所论述的数据处理设备10的硬件特征的主机处理器730可模仿这些特征。
在简要的总体概述中,公开了在数据处理设备中的向量交叉技术,向量交叉技术包含设备、指令、操作设备的方法,及虚拟机实施方式。向量交叉指令指定第一源寄存器、第二源寄存器及目的地寄存器。第一组输入数据项是自该第一源寄存器提取,且第二组输入数据项是自该第二源寄存器提取。数据处理运算对自该第一及第二组输入数据项所取得的所选择输入数据项对执行以产生一组结果数据项,该组结果数据项作为结果数据向量存储于该目的地寄存器中。第一源寄存器相依性结果数据项存储于目的地数据向量中的第一组交替位置中,且第二源寄存器相依性结果数据项存储于该目的地数据向量中的第二组交替位置中。
在本申请案中,词语“经配置”用于意谓设备的组件具有能够执行所定义操作的组态。在此上下文中,“组态”意谓硬件或软件的互连的布置或方式。举例而言,设备可具有提供所定义操作的专用硬件,或处理器或其他处理装置可经程序化来执行功能。“经配置”并不暗示:设备组件需要以任何方式改变以便提供所定义操作。
尽管已在本文中参看随附图详细地描述了说明性实施例,但应理解,本发明不限于这些精确实施例,且在不脱离如由所附权利要求界定的本发明的范畴及精神的情况下,各种改变、添加及修改可在本发明中由本领域技术人员实现。举例而言,在不脱离本发明的范畴的情况下,附属权利要求的特征的各种组合可与独立权利要求的特征一起进行。
Claims (15)
1.一种数据处理设备,该设备包括:
指令解码器电路,该指令解码器电路用于对指令进行解码;以及
数据处理电路,该数据处理电路用于将由所述指令指定的向量处理运算选择性地施加至输入数据向量,所述输入数据向量在所述输入数据向量中的相应位置处包含多个输入数据项,
其中,所述指令解码器电路响应于指定第一源寄存器、第二源寄存器和目的地寄存器的向量交叉指令,以产生控制信号来控制所述数据处理电路执行向量交叉处理,以进行如下操作:
从所述第一源寄存器提取第一组输入数据项;
从所述第二源寄存器提取第二组输入数据项;
对从所述第一组输入数据项和所述第二组输入数据项取得的至少选择的输入数据项对执行数据处理运算,以产生一组结果数据项,其中,从所述第一组输入数据项和所述第二组输入数据项取得的所选择的输入数据项对包括对角线输入数据项对,所述对角线输入数据项对由所述第一源寄存器中的、与所述第二源寄存器中的交替输入数据项配对的交替输入数据项形成;以及
将所述一组结果数据项作为结果数据向量存储于所述目的地寄存器中,其中所述一组结果数据项存储于所述目的地寄存器中的一组交替位置中。
2.根据权利要求1所述的数据处理设备,其中,所述一组交替位置与所述目的地寄存器中的另外一组位置交替,一组先前数据项保留于所述另外一组位置处,其中,所述一组先前数据项在所述数据处理电路开始所述向量交叉处理之前存在于所述目的地寄存器中的所述另外一组位置中。
3.根据权利要求2所述的数据处理设备,其中,所述一组交替位置为所述目的地寄存器中的偶数编号组的位置,并且所述另外一组位置为所述目的地寄存器中的奇数编号组的位置。
4.根据权利要求2所述的数据处理设备,其中,所述一组交替位置为所述目的地寄存器中的奇数编号组的位置,并且所述另外一组位置为所述目的地寄存器中的偶数编号组的位置。
5.根据权利要求1至4中任一项所述的数据处理设备,其中,所述第一源寄存器中的所述交替输入数据项是从所述第一源寄存器中的偶数编号组的位置提取的,并且所述第二源寄存器中的所述交替输入数据项是从所述第二源寄存器中的奇数编号组的位置提取的。
6.根据权利要求1至4中任一项所述的数据处理设备,其中,所述第一源寄存器中的所述交替输入数据项是从所述第一源寄存器中的奇数编号组的位置提取的,并且所述第二源寄存器中的所述交替输入数据项是从所述第二源寄存器中的偶数编号组的位置提取的。
7.根据权利要求1至4中任一项所述的数据处理设备,其中,所述数据处理运算为算术运算、逻辑运算或移位运算。
8.根据权利要求1至4中任一项所述的数据处理设备,其中,在所述向量交叉指令中指定的所述目的地寄存器为所述第一源寄存器和所述第二源寄存器中的一者。
9.根据权利要求1至4中任一项所述的数据处理设备,其中,所述向量交叉指令还指定包括预测位的预测值,所述预测位对应于所述输入数据向量中的相应位置,并且所述数据处理电路还响应于所述预测值中的取消设定预测位以禁止所述第一组输入数据项和所述第二组输入数据项中与所述取消设定预测位相对应的输入数据项参与所述向量交叉处理。
10.根据权利要求1至4中任一项所述的数据处理设备,其中,所述向量交叉指令还指定所述第一组输入数据项的第一数据项大小、所述第二组输入数据项的第二数据项大小、以及所述一组结果数据项的结果数据项大小。
11.根据权利要求10所述的数据处理设备,其中,所述第一数据项大小和所述第二组输入数据项的所述第二数据项大小小于所述一组结果数据项的所述结果数据项大小。
12.根据权利要求10所述的数据处理设备,其中,所述第一数据项大小和所述第二组输入数据项的所述第二数据项大小大于所述一组结果数据项的所述结果数据项大小。
13.一种操作数据处理设备的方法,该方法包含以下步骤:
对指令进行解码;
将由所述指令指定的向量处理运算选择性地施加至输入数据向量,所述输入数据向量在所述输入数据向量中的相应位置处包括多个输入数据项;
响应于指定所述设备的第一源寄存器、第二源寄存器和目的地寄存器的向量交叉指令而产生控制信号来控制所述设备的数据处理电路执行向量交叉处理,包括:
从所述第一源寄存器提取第一组输入数据项;
从所述第二源寄存器提取第二组输入数据项;
对从所述第一组输入数据项和所述第二组输入数据项取得的至少选择的输入数据项对执行数据处理运算,以产生一组结果数据项,其中,从所述第一组输入数据项和所述第二组输入数据项取得的所选择的输入数据项对包括对角线输入数据项对,所述对角线输入数据项对由所述第一源寄存器中的、与所述第二源寄存器中的交替输入数据项配对的交替输入数据项形成;以及
将所述一组结果数据项作为结果数据向量存储于所述目的地寄存器中,其中所述一组结果数据项存储于所述目的地寄存器中的一组交替位置中。
14.一种数据处理设备,该设备包括:
用于对指令进行解码的单元;
用于将由所述指令指定的向量处理运算选择性地施加至输入数据向量的单元,所述输入数据向量在所述输入数据向量中的相应位置处包括多个输入数据项;
用于响应于指定所述设备的第一源寄存器、第二源寄存器和目的地寄存器的向量交叉指令而产生控制信号来控制所述设备的数据处理电路执行向量交叉处理的单元,该单元包括:
用于从所述第一源寄存器提取第一组输入数据项的单元;
用于从所述第二源寄存器提取第二组输入数据项的单元;
用于对从所述第一组输入数据项和所述第二组输入数据项取得的至少选择的输入数据项对执行数据处理运算以产生一组结果数据项的单元,其中,从所述第一组输入数据项和所述第二组输入数据项取得的所选择的输入数据项对包括对角线输入数据项对,所述对角线输入数据项对由所述第一源寄存器中的、与所述第二源寄存器中的交替输入数据项配对的交替输入数据项形成;以及
用于将所述一组结果数据项作为结果数据向量存储于所述目的地寄存器中的单元,其中所述一组结果数据项存储于所述目的地寄存器中的一组交替位置中。
15.一种计算机可读取存储介质,该计算机可读取存储介质以非暂时性方式存储用于控制主机数据处理设备提供指令执行环境的计算机程序,该计算机程序包含:
指令解码程序逻辑,所述指令解码程序逻辑用于对指令进行解码;以及
数据处理程序逻辑,所述数据处理程序逻辑用于将由所述指令指定的向量处理运算选择性地施加至输入数据向量结构,所述输入数据向量结构在所述输入数据向量结构中的相应位置处包括多个输入数据项,
其中所述指令解码程序逻辑响应于指定第一源数据结构、第二源数据结构和目的地数据结构的向量交叉指令,以产生控制信号来控制所述数据处理程序逻辑执行向量交叉处理以:
从所述第一源数据结构提取第一组输入数据项;
从所述第二源数据结构提取第二组输入数据项;
对从所述第一组输入数据项和所述第二组输入数据项取得的至少选择的输入数据项对执行数据处理运算,以产生一组结果数据项,其中,从所述第一组输入数据项和所述第二组输入数据项取得的所选择的输入数据项对包括对角线输入数据项对,所述对角线输入数据项对由所述第一源数据结构中的、与所述第二源数据结构中的交替输入数据项配对的交替输入数据项形成;以及
将所述一组结果数据项作为结果数据向量结构存储于所述目的地数据结构中,其中所述一组结果数据项存储于所述目的地数据结构中的一组交替位置中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1711707.8A GB2564853B (en) | 2017-07-20 | 2017-07-20 | Vector interleaving in a data processing apparatus |
GB1711707.8 | 2017-07-20 | ||
PCT/GB2018/051854 WO2019016508A1 (en) | 2017-07-20 | 2018-07-02 | INTERLACING VECTORS IN A DATA PROCESSING APPARATUS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110914801A CN110914801A (zh) | 2020-03-24 |
CN110914801B true CN110914801B (zh) | 2023-10-24 |
Family
ID=59771758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880046751.3A Active CN110914801B (zh) | 2017-07-20 | 2018-07-02 | 在数据处理设备中的向量交叉 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11093243B2 (zh) |
EP (1) | EP3655852B1 (zh) |
JP (1) | JP7186212B2 (zh) |
KR (1) | KR102591988B1 (zh) |
CN (1) | CN110914801B (zh) |
GB (1) | GB2564853B (zh) |
IL (1) | IL271636B2 (zh) |
TW (1) | TWI766056B (zh) |
WO (1) | WO2019016508A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449336B2 (en) | 2019-05-24 | 2022-09-20 | Texas Instmments Incorporated | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof |
US20240004648A1 (en) * | 2022-07-02 | 2024-01-04 | Intel Corporation | Vector unpack based on selection information |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845112A (en) * | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
CN103282876A (zh) * | 2010-10-12 | 2013-09-04 | Arm有限公司 | 数据元素的条件选择 |
WO2016195921A1 (en) * | 2015-06-02 | 2016-12-08 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
TW201643695A (zh) * | 2014-12-23 | 2016-12-16 | 英特爾股份有限公司 | 用於執行向量位元反轉和交叉的方法和設備 |
TW201721410A (zh) * | 2015-07-31 | 2017-06-16 | Arm股份有限公司 | 用於執行疊接操作的裝置和方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US6211892B1 (en) * | 1998-03-31 | 2001-04-03 | Intel Corporation | System and method for performing an intra-add operation |
US6115812A (en) * | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US9146738B2 (en) * | 2002-03-30 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Interleaving bits of multiple instruction results in a single destination register |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
GB2409065B (en) | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7555514B2 (en) * | 2006-02-13 | 2009-06-30 | Atmel Corportation | Packed add-subtract operation in a microprocessor |
US8255446B2 (en) * | 2006-12-12 | 2012-08-28 | Arm Limited | Apparatus and method for performing rearrangement and arithmetic operations on data |
JP2009048532A (ja) * | 2007-08-22 | 2009-03-05 | Nec Electronics Corp | マイクロプロセッサ |
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 |
PL3422178T3 (pl) * | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
US9021233B2 (en) * | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
CN104137053B (zh) * | 2011-12-23 | 2018-06-26 | 英特尔公司 | 用于响应于单个指令来执行蝴蝶横向和交叉加法或减法的系统、装置和方法 |
CN103999037B (zh) * | 2011-12-23 | 2020-03-06 | 英特尔公司 | 用于响应于单个指令来执行横向相加或相减的系统、装置和方法 |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
CN105335247B (zh) * | 2015-09-24 | 2018-04-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 高可靠系统芯片中Cache的容错结构及其容错方法 |
-
2017
- 2017-07-20 GB GB1711707.8A patent/GB2564853B/en active Active
-
2018
- 2018-07-02 KR KR1020207003377A patent/KR102591988B1/ko active IP Right Grant
- 2018-07-02 US US16/630,622 patent/US11093243B2/en active Active
- 2018-07-02 EP EP18739625.4A patent/EP3655852B1/en active Active
- 2018-07-02 WO PCT/GB2018/051854 patent/WO2019016508A1/en unknown
- 2018-07-02 CN CN201880046751.3A patent/CN110914801B/zh active Active
- 2018-07-02 JP JP2020501160A patent/JP7186212B2/ja active Active
- 2018-07-02 TW TW107122737A patent/TWI766056B/zh active
- 2018-07-02 IL IL271636A patent/IL271636B2/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845112A (en) * | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
CN103282876A (zh) * | 2010-10-12 | 2013-09-04 | Arm有限公司 | 数据元素的条件选择 |
TW201643695A (zh) * | 2014-12-23 | 2016-12-16 | 英特爾股份有限公司 | 用於執行向量位元反轉和交叉的方法和設備 |
WO2016195921A1 (en) * | 2015-06-02 | 2016-12-08 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
TW201721410A (zh) * | 2015-07-31 | 2017-06-16 | Arm股份有限公司 | 用於執行疊接操作的裝置和方法 |
Also Published As
Publication number | Publication date |
---|---|
IL271636B1 (en) | 2023-07-01 |
KR20200028965A (ko) | 2020-03-17 |
IL271636A (en) | 2020-02-27 |
TW201917710A (zh) | 2019-05-01 |
GB2564853A (en) | 2019-01-30 |
KR102591988B1 (ko) | 2023-10-20 |
GB201711707D0 (en) | 2017-09-06 |
JP2020527797A (ja) | 2020-09-10 |
EP3655852B1 (en) | 2023-09-13 |
US11093243B2 (en) | 2021-08-17 |
IL271636B2 (en) | 2023-11-01 |
WO2019016508A1 (en) | 2019-01-24 |
CN110914801A (zh) | 2020-03-24 |
JP7186212B2 (ja) | 2022-12-08 |
TWI766056B (zh) | 2022-06-01 |
GB2564853B (en) | 2021-09-08 |
EP3655852A1 (en) | 2020-05-27 |
US20210026629A1 (en) | 2021-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20130137697A (ko) | 레지스터 정렬을 위한 시스템, 장치 및 방법 | |
CN109992304A (zh) | 用于加载片寄存器对的系统和方法 | |
US20200134224A1 (en) | Instruction execution that broadcasts and masks data values at different levels of granularity | |
CN107851016B (zh) | 向量算术指令 | |
CN110058886A (zh) | 用于计算两个区块操作数中的半字节的数量积的系统和方法 | |
CN110914801B (zh) | 在数据处理设备中的向量交叉 | |
CN108292228B (zh) | 用于基于通道的步进收集的系统、设备和方法 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
CN109328333B (zh) | 用于累积式乘积的系统、装置和方法 | |
TWI773783B (zh) | 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體 | |
TWI842911B (zh) | 用於存取矩陣運算元的多變數跨步讀取操作 | |
WO2023199015A1 (en) | Technique for handling data elements stored in an array storage | |
WO2023199014A1 (en) | Technique for handling data elements stored in an array storage | |
WO2023148467A1 (en) | Technique for performing memory access operations | |
WO2023242531A1 (en) | Technique for performing outer product operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |