CN107835992A - Simd相乘和水平归约运算 - Google Patents

Simd相乘和水平归约运算 Download PDF

Info

Publication number
CN107835992A
CN107835992A CN201680040946.8A CN201680040946A CN107835992A CN 107835992 A CN107835992 A CN 107835992A CN 201680040946 A CN201680040946 A CN 201680040946A CN 107835992 A CN107835992 A CN 107835992A
Authority
CN
China
Prior art keywords
multiplier
value
multiplicand
instruction
multiplication
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.)
Pending
Application number
CN201680040946.8A
Other languages
English (en)
Inventor
艾瑞克·韦恩·马胡林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN107835992A publication Critical patent/CN107835992A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

***和方法涉及在例如数字滤波器中实施的相乘和水平归约运算。接收单指令多数据SMID指令,所述SMID指令包括:第一向量,其包括M+C个被乘数元素,其中M和C是正整数;以及第二向量,其包括M+C个对应的乘数元素,其中所述C个乘数元素具有值1。使用处理器中的M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的所述C个乘数元素。其对应的C个乘数元素具有值1的所述C个被乘数元素被加到所述M个乘积或与所述M个乘积竖直累加。

Description

SIMD相乘和水平归约运算
技术领域
本发明的各方面涉及减小某些相乘和水平归约运算的计算复杂性且增大其效率。更具体地说,示范性方面涉及相乘和水平归约运算的单指令多数据(SIMD)实施方案。
背景技术
单指令多数据(SIMD)指令可用于处理采用数据并行性的***。举例来说,当需要对数据向量的两个或更多个数据元素执行同一或共同任务时,存在数据并行性。可通过使用单个SIMD指令而非使用多个指令来对两个更多个数据元素并行地执行共同任务,所述单个SIMD指令限定待对对应的多个SIMD通道中的多个数据元素执行的相同指令。
SIMD指令可用于实施数字信号处理的某些功能,例如卷积、数字滤波器、离散傅里叶变换(DFT)、离散余弦变换(DCT)等,其中通过对应的系数加权或乘以一系列信号样本,且对结果进行累加或求和。因此,SIMD指令可用于执行乘法和水平归约运算来实施这些功能。举例来说,一个向量的数据元素可乘以另一向量中提供的对应的系数值,从而产生乘积项的所得向量,其可在后续运算中加在一起或归约以提供所要相乘和水平归约结果。
举例来说,设想用于对三个项执行相乘和水平归约运算的SIMD运算。第一向量运算数可具有三个数据元素X、Y和Z,且第二向量运算数可具有对应的三个系数c1、c2和c3。可通过以下方式实施SIMD运算:使用三个乘法器来并行计算第一向量中的数据元素与第二向量中对应的系数的乘积,即,X*c1、Y*c2和Z*c3,且接着在累加器(例如,其包含压缩器和加法器)中将所述乘积加在一起或将其“归约”以获得结果X*c1+Y*c2+Z*c3。
在数字信号处理中遇到的一些情况下,系数中的一个(例如,c3)可能是“1”,基于所涉及的计算的性质,所述系数中的一个也可能是“1”的隐式值。举例来说,为“1”的系数可以是可在应用于信号样本的系数的滑动窗口中发生的归一化值。
经配置以支持SIMD运算的处理器可具有支持某一数目的并行运算的功能性。所支持的所述数目的并行运算可以是常规实施方案中的二的幂。举例来说,在用于实施上文SIMD运算的常规处理器中可能有用以并行执行两个乘法的两个乘法器可供使用,且所述乘法器具有水平归约两个元素(例如,四个乘法的乘积或输出)的能力。
参考图1A,展示常规SIMD逻辑100支持两个并行乘法,随后是两个乘积项的水平归约。因此,可使得数据元素X和Y以及对应的系数c1和c2可供第一SIMD指令102使用,其中逻辑100并行执行X*c1和Y*c2的计算,且将乘积项X*c1和Y*c2相加或归约以获得第一结果(未具体说明)。接着,第二SIMD指令104接收具有对应的系数1的其余数据元素Z。然而,为了利用可供使用的逻辑,计算虚拟项。如所展示,计算乘积项Z*1和虚拟项Q*0,其中实际上,Q*0仅仅是任何项与0的乘法运算,其得到0。还计算Z*1+Q*0的和以完成相乘和水平归约运算。为了充分利用可供使用的逻辑100,常规实施方案涉及Z与1的乘法以及Q与0的乘法连同后续加法/归约过程,这产生增大的功率消耗。
可实施上文SIMD运算的另一常规处理器可具有四个乘法器以水平地归约四个元素(例如,四个乘法的乘积)的能力。举例来说,参考图1B,展示可存在于此类常规处理器中的SIMD逻辑101。SIMD逻辑101可支持四个并行的乘法,随后是四个乘积项的水平归约。在这种情况下,可使用SIMD指令106,其接收三个数据元素X、Y和Z以及对应的系数c1、c2和c3。然而,同样要执行Q*0的虚拟计算以利用第四乘法器,且实际上执行水平归约以计算X*c1+Y*c2+Z*1+Q*0。
因此,在由SIMD逻辑100和101表示的利用可供使用的SIMD逻辑和归约通道的这两个常规实施方案中,因使用乘法器计算项Z*1和Q*0以及使用累加器、压缩硬件、加法器等计算所述项的后续归约而引发不必要的功率消耗。
因此,需要避免SIMD相乘和水平归约运算中的低效率和功率/计算资源损耗。
发明内容
举例来说,示范性方面涉及数字滤波器中实施的相乘和水平归约运算。接收单指令多数据(SIMD)指令,其包括:第一向量,其包括M+C个被乘数元素,其中M和C是正整数;以及第二向量,其包括M+C个对应的乘数元素,其中所述C个乘数元素具有值1。使用处理器中的M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的C个乘数元素。其对应的C个乘数元素具有值1的所述C个被乘数元素被加到所述M个乘积或与所述M个乘积竖直累加。
举例来说,示范性方面涉及一种执行相乘和水平归约运算的方法,所述方法包括:接收单指令多数据(SIMD)指令,所述SIMD指令包括:第一向量,其包括M+C个被乘数元素,其中M和C是正整数;以及第二向量,其包括M+C个对应的乘数元素,其中C个乘数元素具有值1。所述方法包含:使用M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及将C个被乘数元素加到所述M个乘积以产生SIMD指令的结果,所述C个被乘数元素的对应的C个乘数元素具有值1。
另一示范性方面涉及一种包括逻辑的设备,所述逻辑经配置以接收:单指令多数据(SIMD)指令第一向量,其包括M+C个被乘数元素,其中M和C是正整数;以及第二向量,其包括M+C个对应的乘数元素,其中C个乘数元素具有值1。M个乘法器经配置以执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的C个乘数元素。竖直累加器经配置以将C个被乘数元素加到所述M个乘积以产生SIMD指令的结果,所述C个被乘数元素的对应的乘数元素具有值1。
又一示范性方面针对一种***,其包括:用于接收单指令多数据(SIMD)指令第一向量和第二向量的装置,所述第一向量包括M+C个被乘数元素,其中M和C是正整数,所述第二向量包括M+C个对应的乘数元素,其中C个乘数元素具有值1;用于执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积的装置,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及用于将C个被乘数元素加到所述M个乘积以产生SIMD指令的结果的装置,所述C个被乘数元素的对应的乘数元素具有值1。
又一示范性方面针对一种非暂时性计算机可读存储媒体,其包括可由处理器执行的指令,所述指令在由处理器执行时致使所述处理器执行相乘和水平归约运算,所述非暂时性计算机可读存储媒体包括:用于接收单指令多数据(SIMD)指令第一向量和第二向量的代码,所述第一向量包括M+C个被乘数元素,其中M和C是正整数,所述第二向量包括M+C个对应的乘数元素,其中C个乘数元素具有值1;用于使用M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积的代码,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及用于将C个被乘数元素加到所述M个乘积以产生SIMD指令的结果的代码,所述C个被乘数元素的对应的C个乘数元素具有值1。
附图说明
呈现附图以辅助描述本发明的方面,且提供所述附图仅用于说明所述方面而非对其加以限制。
图1A到B说明相乘和水平归约运算的常规实施方案。
图2A到B说明相乘、累加和归约运算的示范性实施方案。
图3说明根据示范性方面经配置以使用SIMD指令实施相乘、累加和归约运算的逻辑。
图4说明根据示范性方面的执行相乘、累加和归约运算的方法。
图5说明可在其中有利地使用本发明的一个方面的示范性无线装置500。
具体实施方式
在以下针对本发明的具体方面的描述和相关图式中揭示本发明的各方面。可在不脱离本发明的范围的情况下设计替代方面。另外,将不详细描述或将省略本发明的众所周知的元件,以免混淆本发明的相关细节。
词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面不必解释为比其它方面优选或有利。同样,用语“本发明的各方面”不要求本发明的所有方面都包含所论述的特征、优点或操作模式。
本文中所使用的术语仅出于描述特定方面的目的,且并不意图限制本发明的各方面。如本文所使用,单数形式“一”和“所述”意图还包含复数形式,除非上下文另外明确指示。应进一步理解,用语“包括”和/或“包含”在本文中使用时指定所叙述的特征、整体、步骤、操作、元件和/或组件的存在,但并不排除一或多个其它特征、整体、步骤、操作、元件、组件和/或其群组的存在或添加。
此外,描述了关于待由例如计算装置的元件执行的动作序列的许多方面。应认识到,本文所描述的各种动作可通过特定电路(例如,专用集成电路(ASIC))、通过正由一或多个处理器执行的程序指令或通过这两者的组合来执行。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内实施,所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行时将使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以许多不同形式来实施,已预期其全部属于所要求的主题的范围内。另外,对于本文所描述的各方面中的每一者,任何此类方面的对应形式可在本文中描述为例如“经配置以”执行所描述动作的“逻辑”。
本发明的示范性方面涉及通过避免上文所描述的常规实施方案中所见的不必要计算来高效实施相乘和水平归约运算。举例来说,当使多个项可供用于相乘和水平归约运算(其中所述项中的一或多个是1)时,示范性SIMD指令将所述相乘和水平归约运算转换到相乘、累加和归约运算或相乘、相加和归约,其中将系数为1的项(例如上文描述中的数据元素Z)加到剩余的乘积项而非首先在乘法器中乘以1。此外,还避免添加例如Q*0的虚拟项。
以此方式的水平归约与所属领域中已知的竖直累加形成对照。如本文所描述,虽然水平归约涉及使来自两个或更多个SIMD通道的元素(例如,乘法乘积)相加,但竖直累加可包含同一SIMD通道内的元素的相加。举例来说,如所属领域中已知,在相乘累加运算中,将乘法乘积加到累加器值,其中与累加器值的相加是竖直相加或竖直归约。相比之下,相乘和水平归约运算涉及水平归约或使来自两个或更多个SIMD通道的乘法乘积相加。
在示范性方面中,任何数目的乘法器可可供使用(例如在示范性处理器中)以执行并行乘法运算;但为了描述示范性方面,假设存在2的幂或2^N个乘法器,其中n是正整数。可根据示范性技术实施的运算可涉及两个或更多个乘法的相乘和水平归约,其中一或多个乘法涉及乘以1(即,数据元素与1的乘法)。对于涉及乘以1的乘法,可避免使用乘法器。实际上,预期的乘法可用加法运算替换。相比于存在SIMD通道或并行的乘法逻辑,这允许对更多项执行相乘和水平归约运算。在一些情况下,在对等于SIMD通道的数目的多个项执行相乘和水平归约运算但那些项中的一或多个乘以1、从而提供机会将那些乘以1的乘法替换为加法运算的情况下,可利用不到全部的可供用于并行运算的可用乘法器。
在此描述中,较详细地其中考虑了对与可供使用的SIMD通道(或并行乘法器)相比更多的项进行相乘、累加和归约运算的情况,从而说明对与并行乘法器的数目相比更多的项进行归约的能力。举例来说,可存在“M”个SIMD通道,其中M是正整数(且更具体地说,其值大于或等于2,与2个或更多个并行SIMD运算有关。在特定情况下,M可以是2的幂或2^N,其中N是正整数。在实例相乘、累加和归约运算中,可归约数目S=M+C项,其中C也是正整数且表示其中待乘的元素中的一个是1的一或多个乘法(例如,其中系数为1的乘法)。将系数为1的C个项(例如,上文描述中的数据元素Z)累加或加到通过M个乘法器计算出的M个项的乘积。在被水平归约之前,所述C个项并不在乘法器中乘以1。此外,还避免了无助于结果的例如虚拟项(例如,上文描述的Q*0)等项的水平归约。
虽然本文所描述的方面参考了包括数据元素的数据向量和包括系数元素的系数向量,但应理解,所述方面同样适用于其中第一向量包括第一组元素(例如被乘数,不失一般性)且第二向量包括第二组元素(例如对应的乘数)的任何两个向量。各项数据元素和系数用于表达在数字滤波器上的示范性应用。然而,示范性方面还可在其它处理应用中适用于相乘和水平归约运算。在一或多个方面中,针对第一/数据向量和第二/系数向量描述相乘和水平归约运算的示范性SIMD实施方案,所述第一/数据向量包括S=M+C(例如,2^N+C)个被乘数/数据元素,所述第二/系数向量包括S=M+C(例如,2^N+C)个对应的乘数/系数元素,其中C个系数是1,或替代地,M(例如2^N)个系数元素具有隐式额外C个值为1的系数。由于相乘和水平归约运算利用相乘运算、继之以系数为1的至少一个被乘数的累加、继之以归约或累加来实施,因此所述示范性运算也称为相乘、累加和归约运算。
下文参考图式更详细地解释示范性方面。
首先参考图2A到B,展示示范性方面的示意性表示。具体地说,图2A说明示范性实施方案200,其例如可通过经配置以实施SIMD指令的处理器(此视图中未展示)中的逻辑来实施。由此,实施方案200涉及接收包括三个数据元素X、Y和Z的数据向量以及包括系数c1、c2和值为“1”的隐式或显式系数的系数向量。在实施方案200的选项202a和202b中,执行计算X*c1+Y*c2+Z的SIMD指令,其中元素Z在乘法-相加或相乘-累加逻辑中加到Y*c2,其中乘法器用于计算Y*c2,且利用与所述乘法器共享累加逻辑、压缩器、加法器等的优化数据路径,加上数据元素Z。并行地,通过另一乘法器计算X*c1。接着将(Y*c2+Z)和X*c1的结果加在一起以便将项的数目“归约”到最终结果值X*c1+Y*c2+Z。在一些方面中,可使(Y*c2+Z)和X*c1的中间结果呈冗余格式(例如,作为一对求和进位向量),且其可在后续步骤中在全加法器(例如,进位传播加法器)中进行累加和相加。在本发明的范围内,使用所属领域中已知的相乘累加逻辑将Z包含在用于X*c1+Y*c2的累加或归约路径中的其它变型也是可能的。
选项202a与202b之间的差别可基于接收到的数据向量中的项Z和Y的相对位置。举例来说,基于数据元素具有表示为[X,Y,Z]或[X,Z,Y]的相对次序(其中系数分别遵循系数向量[c1,c2,1]或[c1,1,c2])中的对应次序),选择选项202a或202b。将观测到,这两个选项实际上都执行相同的计算而获得相同的结果。
参考图2B,实施方案201类似于实施方案200,其中变化为,Z可首先与X*c1累加,且其结果可与Y*c2累加。选项204a和204b可分别取决于数据向量中所接收的项的相对次序是[X,Z,Y]还是[Z,X,Y],同时记住,通过任一选项均获得相同的结果。此外,可例如取决于所述项由SIMD指令接收到的次序来选择选项202a、202b、204a和204b中的任一个,且最终结果相同,即,X*c1+Y*c2+Z。
因此,示范性方面可涉及用于通过并行实施M(例如2^N)个乘积的乘法且将C个被乘数加到其结果来计算S=M+C(例如,2^N+C)个乘积项的和的SIMD指令的实施方案,其中C个项具有与值为1的乘数运算数(例如,系数或权值)相乘的被乘数运算数。在上文图2A到B的实例中,M的值=2(或N=1)且C=1,其中执行了两个并行乘法且加上了一个被乘数Z。
现参考图3,参考示范性方面说明逻辑300。逻辑300可提供于例如经配置以支持对8位宽数据元素的四个或更多个SIMD运算的处理器(此视图中未展示)的设备中。所述设备还可包含存储器(此视图中未展示)。示范性SIMD指令可(例如从存储器)接收具有八个8位宽数据元素的32位数据向量Vuu。然而,出于此论述的目的,仅充分说明Vuu的具有四个8位元素[3:0]的下半部Vu 302。另外两个8位元素b[5]和b[4]可来源于Vuu的上半部,但并未充分说明Vuu的上半部。如果仅Vu 302而非64位宽向量Vuu被提供到逻辑300,则额外8位元素b[5]和b[4]可通过不同源供应。还展示具有四个8位宽元素或系数Rt.b[3]到Rt.b[0]的32位系数向量Rt 304和具有两个16位宽结果h[1]和h[0]的32位宽结果向量Vd 310。向量Vu302、Rt 304和Vd 310可以是提供于或以通信方式耦合到上文所提到的处理器的寄存器组(或其它存储器,此视图中未展示)的物理寄存器的逻辑寄存器名称。
在逻辑300的一方面,四个乘法器306a到b用于以SIMD方式执行作为被乘数的Vu302的8位元素b[3]到b[0]与作为乘数的8位元素Rt.b[3]到Rt.b[0]的四个并行8×8位乘法(如所见,在这种情况下,M=4或N=2)。四个乘积拆分成各自有两个乘积项的两个组,且额外项b[5]和b[4]分别加到这些组中的每一个。所述额外项不乘以系数,或换句话说,其实际上乘以隐式系数1(如所见,在这种情况下C=1)。
举例来说,在第一运算中,乘法器306a和306b用于提供乘积b[0]*Rt.b[0]和b[1]*Rt.b[1](类似于先前所描述的X*c1和Y*c2)。在一些方面中,可在此级中得到如所属领域中已知的呈冗余格式的乘积b[0]*Rt.b[0]和b[1]*Rt.b[1],其中所述乘积表达为一对求和进位向量而非使用例如进位传播加法器解算为最终值。不论其格式怎样,将b[0]*Rt.b[0]和b[1]*Rt.b[1]供应到加法器或竖直累加器308a。额外第三项b[4]也供应到竖直累加器308a,其接着加上b[0]*Rt.b[0]+b[1]*Rt.b[1]+b[4]且将结果存储于结果向量312a的元素h[0]中。在一些方面中,存储在寄存器的元素h[0](比如h[0]_old)中的包括结果向量312a的先前值可视需要通过路径312a在竖直累加器308a中累加(或竖直归约)以产生b[0]*Rt.b[0]+b[1]*Rt.b[1]+b[4]+h[0]_old,且最终结果可存储在h[0]中。在一些情况下,h[0]_old可在无额外项b[4]的情况下与b[0]*Rt.b[0]+b[1]*Rt.b[1]累加以获得不同结果b[0]*Rt.b[0]+b[1]*Rt.b[1]+h[0]_old,其也具有先前所描述的格式X*c1+Y*c2+Z。
并行于上文所描述的第一运算,逻辑300经配置以执行类似于所述第一运算的第二运算。在不重复类似过程的详尽描述的情况下,所述第二运算涉及通过路径312b使用乘法器306c到d、竖直累加器308b和任选的h[1]_old的累加来计算b[2]*Rt.b[2]+b[3]*Rt.b[3]+b[5]或b[2]*Rt.b[2]+b[3]*Rt.b[3]+b[5]+h[1]_old。因此,第一运算和第二运算可用于使用四个乘法器对两个三项的集合实施相乘、累加和归约运算。
尽管未具体说明,在本发明的范围内可能有各种替代性方面。举例来说,逻辑300的变型可涉及在单个累加器中相加所有四个乘法器306a到306d的结果且例如加上一个额外项以产生结果,例如,b[0]*Rt.b[0]+b[1]*Rt.b[1]+b[2]*Rt.b[2]+b[3]*Rt.b[3]+b[4]。以此方式,2^2+1个项可通过2^2个乘法的乘积与一个项(其隐式地乘以1)累加来进行归约。类似地,在运算数的位宽、并行SIMD计算的数目、所支持的数据路径的位宽等方面的变化也是可能的,从而支持广泛多种SIMD指令。
因此,在上文所论述的一或多个方面中,有可能通过实施M个乘法且将C个项与所述M个乘法的结果累加来对S=M+C(例如,2^n+c)数目个项实施相乘和水平归约运算,其中C个项将乘以1。
因此,应了解,各方面包含用于执行本文揭示的过程、功能和/或算法的各种方法。举例来说,如图4中所说明,一个方面可包含执行相乘和水平归约运算的方法400。
如所展示,方法400的框402包括:接收单指令多数据(SIMD)指令,所述SIMD指令包括:第一向量,其包括M+C个被乘数元素,其中M和C是正整数(例如,具有元素b[0]和b[1]的向量Vu 302和由b[4]供应的额外元素),其中M是正整数(例如,2);以及第二向量(例如,包括Rt.b[0]和Rt.b[1]的Rt 304以及C=1个隐式的额外系数1)。框402还包括接收第二向量,其包括M+C个对应的乘数元素,其中C个乘数元素具有值1。
在框404中,方法400包含使用处理器中的M个乘法器(例如,306a到b)执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的所述C个乘数元素。所述M个乘法可并行执行。
在框406中,方法400包含(例如在竖直累加器308a中)将其对应的C个乘数元素其值为1的C个被乘数元素(例如b[4])加到所述M个乘积以产生SIMD指令的结果。
在方法400中,M可具有值2^N,其中N是正整数。M的值可对应于由实施SIMD指令的处理器支持的SIMD通道的最大数目。在一些方面中,方法400可对应于在数字滤波器中实施相乘和水平归约运算,其中被乘数元素是数据元素且乘数元素是对应于所述数据元素的系数或权值。
参考图5,根据示范性方面的无线装置500的特定说明性方面的框图。无线装置500包含处理器502,其可包括图3的逻辑300(但为清楚起见,从此图解说明中省去逻辑300的细节)。在示范性方面中,无线装置500,且更具体地说,一些情况下的处理器502,可被配置成执行上文所描述的图4的方法400。如图5中所展示,处理器502可与存储器532通信。在一些方面中,向量302、304和310的值可存储在存储器532中和/或存储在提供于处理器502中的寄存器组(未展示)中。尽管未展示,但一或多个缓存或其它存储器结构也可包含在无线装置500中。
图5还展示耦合到处理器502和显示器528的显示控制器526。编解码器(CODEC)534(例如,音频和/或语音CODEC)可耦合到处理器502。还说明了其它组件,例如无线控制器540(其可包含调制解调器)。扬声器536和麦克风538可耦合到CODEC 534。图5还指示无线控制器540可耦合到无线天线542。在特定方面中,处理器502、显示控制器526、存储器532、CODEC534和无线控制器540包含在***级封装或芯片上***装置522中。
在特定方面中,输入装置530和电源544耦合到芯片上***装置522。此外,在特定方面中,如图5中所说明,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544在芯片上***装置522的外部。然而,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544中的每一个可耦合到芯片上***装置522的组件,例如接口或控制器。
应注意,尽管图5描绘无线通信装置,但处理器502和存储器532还可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或计算机中。此外,无线装置500的至少一或多个示范性方面可集成在至少一个半导体裸片中。
所属领域的技术人员应了解,可使用多种不同技术和技艺中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
此外,所属领域的技术人员应了解,结合本文所揭示的方面而描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的这种可互换性,上文已大体就其功能性来描述了各种说明性组件、块、模块、电路和步骤。此类功能性是实施为硬件还是软件取决于特定应用和外加于整个***的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但此类实施决策不应被解释为会引起脱离本发明的范围。
结合本文中所揭示的方面描述的方法、序列和/或算法可直接以硬件、以由处理器执行的软件模块或以硬件和软件模块的组合来实施。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或所属领域中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成整体。
因此,本发明的一方面可包含一种实施用于执行相乘和水平归约运算的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且任何用于执行本文中所描述的功能性的装置包含在本发明的方面中。
虽然前述揭示内容展示本发明的说明性方面,但应注意,可在不脱离如所附权利要求书界定的本发明的范围的情况下在其中做出各种改变和修改。不必以任何特定次序来执行根据本文中所描述的本发明的方面的方法权利要求的功能、步骤和/或动作。此外,尽管可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。

Claims (20)

1.一种执行相乘和水平归约运算的方法,所述方法包括:
接收单指令多数据SIMD指令,其包括:
第一向量,其包括M+C个被乘数元素,其中M和C是正整数;以及
第二向量,其包括M+C个对应的乘数元素,其中C个乘数元素具有值1;
使用M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及
将其对应的C个乘数元素具有值1的C个被乘数元素加到所述M个乘积以产生所述SIMD指令的结果。
2.根据权利要求1所述的方法,其中M=2^N,其中N是正整数。
3.根据权利要求1所述的方法,其进一步包括并行执行所述M个乘法。
4.根据权利要求1所述的方法,其进一步包括在竖直累加器中将所述C个被乘数元素加到所述M个乘积。
5.根据权利要求1所述的方法,其进一步包括将累加器值竖直累加到所述结果。
6.根据权利要求1所述的方法,其进一步包括在数字滤波器中实施所述相乘和水平归约运算,其中所述被乘数元素是数据元素且所述乘数元素是对应于所述数据元素的系数或权值。
7.根据权利要求1所述的方法,其中所述M的值等于SIMD通道的数目。
8.一种设备,其包括:
经配置以接收单指令多数据SMID指令第一向量和第二向量的逻辑,所述第一向量包括M+C个被乘数元素,其中M和C是正整数,所述第二向量包括M+C个对应的乘数元素,其中C个乘数元素具有值1;
m个乘法器,其经配置以执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及
竖直累加器,其经配置以将其对应的乘数元素具有值1的C个被乘数元素加到所述M个乘积以产生所述SIMD指令的结果。
9.根据权利要求8所述的设备,其中M=2^N,其中N是正整数。
10.根据权利要求8所述的设备,其中所述M个乘法器经配置以并行执行所述M个乘法。
11.根据权利要求8所述的设备,其中所述竖直累加器经进一步配置以将累加器值加到所述结果。
12.根据权利要求8所述的设备,其包括数字滤波器,其中所述被乘数元素是所述数字滤波器的数据元素且所述乘数元素是对应于所述数据元素的系数或权值。
13.根据权利要求8所述的设备,其中所述M的值等于SIMD通道的数目。
14.根据权利要求8所述的设备,其集成到选自由以下各者组成的群组的装置中:机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、个人数字助理PDA、固定位置数据单元及计算机。
15.一种***,其包括:
用于接收单指令多数据SMID指令第一向量和第二向量的装置,所述第一向量包括M+C个被乘数元素,其中M和C是正整数,所述第二向量包括M+C个对应的乘数元素,其中C个乘数元素具有值1;
用于执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积的装置,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及
用于将其对应的乘数元素具有值1的C个被乘数元素加到所述M个乘积以产生所述SIMD指令的结果的装置。
16.根据权利要求15所述的***,其中M=2^N,其中N是正整数。
17.根据权利要求15所述的***,其中所述用于执行M个乘法的装置包括用于并行执行所述M个乘法的装置。
18.根据权利要求15所述的***,其进一步包括用于将累加器值加到所述结果的装置。
19.一种包括可由处理器执行的指令的非暂时性计算机可读存储媒体,所述指令在由所述处理器执行时使所述处理器执行相乘和水平归约运算,所述非暂时性计算机可读存储媒体包括:
用于接收单指令多数据SMID指令第一向量和第二向量的代码,所述第一向量包括M+C个被乘数元素,其中M和C是正整数,所述第二向量包括M+C个对应的乘数元素,其中C个乘数元素具有值1;
用于使用M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积的代码,所述M个乘数元素并不包含其值为1的所述C个乘数元素;以及
用于将其对应的C个乘数元素具有值1的C个被乘数元素加到所述M个乘积以产生所述SIMD指令的结果的代码。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其进一步包括用于将累加器值加到所述结果的代码。
CN201680040946.8A 2015-08-14 2016-07-11 Simd相乘和水平归约运算 Pending CN107835992A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/826,196 US20170046153A1 (en) 2015-08-14 2015-08-14 Simd multiply and horizontal reduce operations
US14/826,196 2015-08-14
PCT/US2016/041717 WO2017030676A1 (en) 2015-08-14 2016-07-11 Simd multiply and horizontal reduce operations

Publications (1)

Publication Number Publication Date
CN107835992A true CN107835992A (zh) 2018-03-23

Family

ID=56511933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680040946.8A Pending CN107835992A (zh) 2015-08-14 2016-07-11 Simd相乘和水平归约运算

Country Status (6)

Country Link
US (1) US20170046153A1 (zh)
EP (1) EP3335127A1 (zh)
JP (1) JP2018523237A (zh)
KR (1) KR20180038455A (zh)
CN (1) CN107835992A (zh)
WO (1) WO2017030676A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2560159B (en) * 2017-02-23 2019-12-25 Advanced Risc Mach Ltd Widening arithmetic in a data processing apparatus
CN107358125B (zh) * 2017-06-14 2020-12-08 北京多思科技工业园股份有限公司 一种处理器
KR101981109B1 (ko) * 2017-07-05 2019-05-22 울산과학기술원 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기
US10678507B2 (en) 2017-12-22 2020-06-09 Alibaba Group Holding Limited Programmable multiply-add array hardware
US11579883B2 (en) * 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10824434B1 (en) * 2018-11-29 2020-11-03 Xilinx, Inc. Dynamically structured single instruction, multiple data (SIMD) instructions
US11216281B2 (en) 2019-05-14 2022-01-04 International Business Machines Corporation Facilitating data processing using SIMD reduction operations across SIMD lanes
US11403727B2 (en) 2020-01-28 2022-08-02 Nxp Usa, Inc. System and method for convolving an image

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
WO2004103056A2 (en) * 2003-05-09 2004-12-02 Sandbridge Technologies, Inc. Processor reduction unit for accumulation of multiple operands with or without saturation
CN1774709A (zh) * 2002-12-20 2006-05-17 英特尔公司 使用simd寄存器的小矩阵有效乘法
CN101187861A (zh) * 2006-09-20 2008-05-28 英特尔公司 用于执行点积运算的指令和逻辑
US20120173600A1 (en) * 2010-12-30 2012-07-05 Young Hwan Park Apparatus and method for performing a complex number operation using a single instruction multiple data (simd) architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5262973A (en) * 1992-03-13 1993-11-16 Sun Microsystems, Inc. Method and apparatus for optimizing complex arithmetic units for trivial operands
GB2447428A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt Processor having a trivial operand register

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
CN1774709A (zh) * 2002-12-20 2006-05-17 英特尔公司 使用simd寄存器的小矩阵有效乘法
WO2004103056A2 (en) * 2003-05-09 2004-12-02 Sandbridge Technologies, Inc. Processor reduction unit for accumulation of multiple operands with or without saturation
CN101187861A (zh) * 2006-09-20 2008-05-28 英特尔公司 用于执行点积运算的指令和逻辑
US20120173600A1 (en) * 2010-12-30 2012-07-05 Young Hwan Park Apparatus and method for performing a complex number operation using a single instruction multiple data (simd) architecture

Also Published As

Publication number Publication date
JP2018523237A (ja) 2018-08-16
KR20180038455A (ko) 2018-04-16
US20170046153A1 (en) 2017-02-16
EP3335127A1 (en) 2018-06-20
WO2017030676A1 (en) 2017-02-23

Similar Documents

Publication Publication Date Title
CN107835992A (zh) Simd相乘和水平归约运算
JP6865847B2 (ja) 処理装置、チップ、電子設備及び方法
US10909447B2 (en) Transposing neural network matrices in hardware
CN107533667B (zh) 神经网络处理器中的向量计算单元
CN110119809A (zh) 深度学习处理中乘法和累加运算的非对称量化
JP2019537139A (ja) ハードウェアにおけるカーネルストライドの実行
CN109284827A (zh) 神经网络计算方法、设备、处理器及计算机可读存储介质
US20220004858A1 (en) Method for processing artificial neural network, and electronic device therefor
CN114651260A (zh) 具有动态权重选择的相位选择性卷积
US10706353B2 (en) Integrated circuit
Meher Systolic designs for DCT using a low-complexity concurrent convolutional formulation
MXPA03011899A (es) Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica.
Choi et al. Tokenmixup: Efficient attention-guided token-level data augmentation for transformers
CN110109646A (zh) 数据处理方法、装置和乘加器及存储介质
JP7435602B2 (ja) 演算装置および演算システム
CN114556373A (zh) 用于大规模并行神经推理引擎的多模式低精度内积计算电路
Meher et al. High-throughput memory-based architecture for DHT using a new convolutional formulation
CN109389213B (zh) 存储装置及方法、数据处理装置及方法、电子装置
CN111445016B (zh) 加速非线性数学计算的***及方法
CN109933749B (zh) 用于生成信息的方法和装置
CN116400884A (zh) 乘加器的控制方法、装置、计算机设备和存储介质
CN109478199B (zh) 分段线性逼近的***及方法
CN111788567A (zh) 一种数据处理设备以及一种数据处理方法
CN110990776B (zh) 编码分布式计算方法、装置、计算机设备及存储介质
CN108229668B (zh) 基于深度学习的运算实现方法、装置和电子设备

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180323

WD01 Invention patent application deemed withdrawn after publication