[go: up one dir, main page]

CN102197369B - 用于执行simd乘法-累积运算的装置及方法 - Google Patents

用于执行simd乘法-累积运算的装置及方法 Download PDF

Info

Publication number
CN102197369B
CN102197369B CN200980139996.1A CN200980139996A CN102197369B CN 102197369 B CN102197369 B CN 102197369B CN 200980139996 A CN200980139996 A CN 200980139996A CN 102197369 B CN102197369 B CN 102197369B
Authority
CN
China
Prior art keywords
multiplication
data element
iteration
data processing
simd
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200980139996.1A
Other languages
English (en)
Other versions
CN102197369A (zh
Inventor
M·维尔德
D·H·赛姆斯
R·E·布鲁斯
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.)
U Blox AG
Original Assignee
U Blox AG
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 U Blox AG filed Critical U Blox AG
Publication of CN102197369A publication Critical patent/CN102197369A/zh
Application granted granted Critical
Publication of CN102197369B publication Critical patent/CN102197369B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8038Associative processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • 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
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种用于执行SIMD乘法-累积运算的装置及方法,其包括SIMD数据处理电路,其响应于控制信号而对多个数据元素并行执行数据处理运算。指令译码器电路耦合至该SIMD数据处理电路,且响应于程序指令而产生所需的控制信号。该指令译码器电路响应于将输入数据元素的第一向量、系数数据元素的第二向量、以及指示所需的多个迭代的标量值作为输入操作数的单一指令(此处被称为重复乘法-累积指令),而产生控制信号来控制该SIMD处理电路。响应于这些控制信号,该SIMD数据处理电路执行乘法-累积处理的这些多个迭代,每一迭代涉及并行执行N个乘法-累积运算以便产生N个乘法-累积数据元素。对于每一迭代,该SIMD数据处理电路决定来自所述第一向量的N个输入数据元素、以及来自所述第二向量的要与N个输入数据元素中的每一个相乘的单一系数数据元素。接着使用在该乘法-累积处理的最后迭代中产生的N个乘法-累积数据元素,来产生N个乘法-累积结果。此机制提供一种用于执行例如FIR滤波器处理所需的SIMD乘法-累积运算的尤其有能量效益的机制。

Description

用于执行SIMD乘法-累积运算的装置及方法
技术领域
本发明涉及用于执行SIMD(单一指令多重数据)乘法-累积(MAC)运算的装置及方法。
背景技术
当有必要对若干独立数据元素执行特定数据处理运算时,一种用于加速此运算的执行的已知方法是使用SIMD(单一指令多重数据)方法。根据SIMD方法,将多个这些数据元素并排置放于寄存器内,且接着并行地对这些数据元素执行运算。
可受益于SIMD方法的一种类型的运算为乘法-累积运算,该乘法-累积运算可采取A+B×C或A-B×C的形式。通常对B和C的不同值执行乘法运算B×C多次,其中接着将每一乘法结果相加至运行累积值(running accumulate value)A,或自运行累积值A减去。
考虑产生单一乘法-累积结果所需要的运算,自前文论述将了解,需要多个独立乘法运算,且通过使用SIMD数据处理电路,可并行执行多个这些所需乘法以增加乘法-累积运算的输出量。
然而,还存在某些类型的运算,其中需要执行多个独立乘法-累积运算以便产生多个乘法-累积结果,但每一乘法-累积运算所使用的输入数据之间存在显著重叠。需要多个乘法-累积运算的运算的一个特定实例为有限脉冲响应(FIR)滤波运算,该有限脉冲响应(FIR)滤波运算是在数字信号处理器(DSP)中实施的标准信号处理任务。FIR滤波运算通常用于许多信号处理应用中,诸如通信、音频处理、视频处理或图像处理。
许多当代数字信号处理器以及通用微处理器使用SIMD数据处理电路以便利用存在于运算(诸如FIR滤波运算)中的数据级并行性。然而,一个重要问题为如何有效地向量化FIR滤波运算以便利用数据处理装置的SIMD能力。
荷兰代尔夫特工业大学(Delft University of Technology)计算机工程实验室(Computer Engineering Laboratory)的Shahbahrami等人的论文“Efficient Vectorization of the FIR Filter”(出现在因特网上http://ce.et.tudelft.nl/publicationfiles/1090_509_shahbahrami_prorisc2005.pdf)概述了用于向量化FIR滤波运算的各种技术。根据第一技术,通过向量化内部循环(inner loop)来向量化FIR滤波器,以使得该内部循环并行计算单一输出的若干项。因此,通过此方法,在单一迭代期间在SIMD数据处理电路内并行执行形成单一乘法-累积结果所需的多个乘法运算,且因此依次决定每一乘法-累积结果,其中该处理电路的SIMD能力用于加快每一乘法-累积结果的计算。根据所描述的替代技术,向量化FIR滤波器的外部循环,使得内部循环并行计算若干输出中的一项。因此,根据此技术,在每一迭代中,关于所需乘法-累积结果中的每一个执行一个乘法-累积计算,以使得并行执行所有所需的乘法-累积运算,且在该过程的最后迭代之后可得到乘法-累积运算中的每一个的最后乘法-累积结果。该论文还描述第三机制,其中同时向量化内部循环与外部循环。
在克萨斯州(Texas)奥斯汀市(Austin)摩托罗拉公司(Motorola Inc)M Phillip的论文“AltiVec (TM) Technology: A second Generation SIMD Microprocessor Architecture”(出现在因特网上http://www.hotchips.org/archives/hc10/2_Mon/HC10.S5/HC10.5.3.pdf)中描述一种用于向量化内部循环的技术,其中使用跨越求和(sum-across)型指令。此文献描述使用AltiVec乘法指令来向量化内部FIR循环或外部FIR循环的技术。然而,外部循环技术使用向量乘法(或乘法-累积)运算,这些运算并不同时执行数据重配置功能。
挪威科技大学(Norwegian University of Science and Technology)电子及电信学院(Department of Electronics and Telecommunications)H Naess的公开“A Programmable DSP for Low-Power, Low-Complexity Baseband Processing”(出现在因特网上http://www.diva-portal.org/ntnu/abstract.xsql?dbid=1095)描述用于向量化外部循环从而得到重复的向量累积及移位运算的技术。特别地,此公开的图9示出使用两个向量输入及一个内部移位寄存器的运算。此运算经由在重复循环中发布多个指令而执行多次(例如,如该文献中的表10中所论述的那样)。尽管使用内部移位寄存器允许数据的一些内部重配置,但有必要通过重复循环迭代多次以便执行所要计算,且每次重复重复循环时,需要对指令进行译码及执行,且需要从存储器存取新数据值。
上文描述的现有技术通常旨在改良FIR计算的性能。然而,另一重要问题为功率消耗。本发明的发明者认识到,当执行一系列的MAC运算时(诸如当执行FIR运算时所需),存在三个主要活动,即指令提取及译码、乘法-累积计算,及在每一迭代之前对数据元素适当排序所需的向量数据重配置计算。此外,发明者注意到,在指令提取及译码以及向量数据重配置计算中消耗显著功率,例如所消耗总功率的25-40%。
因此,需要提供用于执行SIMD乘法-累积运算的经改良的技术,其与已知现有技术相比降低了功率消耗。
发明内容
从第一方面来看,本发明提供一种数据处理装置,其包含:SIMD数据处理电路,其响应于控制信号而对多个数据元素并行执行数据处理运算;指令译码器电路,其耦合至所述SIMD数据处理电路,且响应于程序指令而产生所述控制信号;所述指令译码器电路响应于将输入数据元素的第一向量、系数数据元素的第二向量以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令而产生控制信号以控制所述SIMD数据处理电路:执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算以便产生N个乘法-累积数据元素;对于每一迭代,决定来自所述第一向量的N个输入数据元素以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果。
根据本发明,提供单一指令(本文中称为重复MAC指令),其将输入数据元素的第一向量、系数数据元素的第二向量及指示所需的多个迭代M的标量值作为输入操作数。指令译码器电路响应于此重复MAC指令以产生控制信号,这些控制信号用于控制SIMD数据处理电路执行乘法-累积处理的多个迭代,其中每一迭代涉及并行执行N个乘法-累积运算。在每一迭代期间,SIMD数据处理电路决定来自第一向量的N个输入数据元素及来自第二向量的单一系数数据元素。在执行多个迭代之后,SIMD数据处理电路接着输出N个乘法-累积结果。
因此,使用本发明,可使用单一指令来使得SIMD数据处理电路执行乘法-累积处理的由作为该指令的输入操作数提供的标量值决定的多个迭代,以便直接产生多个乘法-累积结果。由于所有指定迭代所需的所有数据元素可直接从被作为指令的输入操作数提供的第一向量及第二向量导出,因此与已知现有技术相比,可实现能量消耗的显著降低,现有技术需要执行程序循环多次,且在每一次通过循环期间存取存储器。特别地,本发明提供可在无其它寄存器或指令读取的情况下执行以便产生多个乘法-累积结果的单一指令,从而与已知现有技术相比节省显著能量消耗。
本发明的重复MAC指令可用于多种目的。然而,在一个实施例中,使用重复MAC指令来执行FIR滤波运算,且所产生的N个乘法-累积结果形成N个FIR结果。因此,根据本发明的这样的实施例,可使用单一指令来使得SIMD数据处理电路执行乘法-累积处理的多个迭代以便从该单一指令直接产生多个FIR结果。此方法提供用于产生这样的FIR结果的特别具能量效益的机制。
SIMD数据处理电路可以以多种方式配置。然而,在一个实施例中,SIMD数据处理电路具有用于决定用于每一迭代的N个输入数据元素及单一系数数据元素的状态机。在一个特定实施例中,提供至SIMD数据处理电路的控制信号中的一个识别所需迭代的数目M,且状态机产生内部控制信号,这些内部控制信号取决于正执行的迭代而改变,且用于选择用于每一迭代的输入数据元素以及单一系数数据元素。
在一个特定实施例中,第一向量中的输入数据元素的数目为至少N+M-1,且状态机通过使得相对于用于迭代P-1的N个数据元素执行移位运算而决定用于迭代P的N个输入数据元素。在执行第一迭代时,选择初始的N个输入数据元素。
在一个实施例中,状态机对于每一迭代决定来自该第二向量的不同系数数据元素。然而,在一些实施例中,对于多于一个迭代保持系数数据元素相同。这样可(例如)使得能够响应于单一指令而执行若干独立乘法-累积处理,其中对于每一乘法-累积处理在最后迭代后产生N个乘法-累积结果。或者,可通过每一迭代改变系数数据元素,但对于多于一个迭代保持输入数据元素相同而响应于单一指令执行若干独立乘法-累积处理。
在一个实施例中,重复MAC指令还将初始乘法-累积数据元素的向量作为输入操作数。在替代实施例中,可能不提供这样的初始乘法-累积数据元素的向量,而替代地在开始该过程时将累积器初始化为零。
由于根据本发明,重复MAC指令指定指示所需的多个迭代的标量值作为其输入操作数中的一个,所以SIMD数据处理电路响应于重复MAC指令以执行所需计算而采取的时钟周期的数目并不是预定的,且将取决于对于重复MAC指令的任何特定示例所指定的标量值而显著改变。通常,在数据处理装置的各种其它组件的活动与由SIMD数据处理电路响应于该重复MAC指令而执行的计算之间存在某些相依性。举例而言,自程序存储器提取以供由SIMD数据处理电路执行的后续指令将不能够由SIMD数据处理电路执行,直至其已完成关于该重复MAC指令所需的计算为止。此外,被提取以由数据处理装置的其它组件执行的指令可能不能够被执行,直至SIMD数据处理电路已完成响应于该重复MAC指令所需的计算为止(举例而言,若这些指令指定N个乘法-累积结果中的任一个作为输入操作数)。
为减轻由这些问题导致的不必要的功率消耗,在一个实施例中,状态机根据标量值决定迭代的数目M,且在正执行该多个迭代中的至少一个时将停止信号(stall signal)断言(assert)至数据处理装置的一个或多个组件。在一个特定实例中,该停止信号用以在断言该停止信号时暂停指令提取。
考虑到诸如特定组件的管线深度等方面,发布停止信号的时间长度将取决于特定实施例。在一个实施例中,在多个迭代中的除一个以外的所有迭代期间发布该停止信号,藉此(例如)通过避免在指令提取活动中所消耗的任何不必要的功率而使得显著功率节省。
尽管在一个实施例中,每一时钟周期完成一迭代,但应了解,并不要求每一时钟周期完成一迭代,且在替代实施例中,可在每一迭代的完成之间存在多于一个时钟周期。
在一个实施例中,该数据处理装置进一步包含用于存储数据元素的SIMD寄存器组,该SIMD数据处理电路在执行该乘法-累积处理的所述多个迭代之前从该SIMD寄存器组的寄存器存取所述第一向量及第二向量,藉此在执行该乘法-累积处理的所述多个迭代期间无需关于该第一向量及该第二向量而对SIMD寄存器组进行进一步存取。通过避免在执行该乘法-累积处理的该多个迭代期间存取该SIMD暂存区组的需要,可实现显著功率节省。
在一个特定实施例中,输入数据元素的第一向量具有为N的倍数的若干输入数据元素,且SIMD数据处理电路通过存取SIMD寄存器组的多个寄存器而存取这些输入数据元素,所述多个寄存器中的每一个含有N个输入数据元素。在一个实施例中,系数数据元素的第二向量具有小于或等于N的若干系数数据元素,且这些系数数据元素是从该SIMD寄存器组的一个寄存器存取的。然而,在替代实施例中,系数数据元素的第二向量具有为N的倍数的若干系数数据元素,且该SIMD数据处理电路通过存取该SIMD寄存器组的多个寄存器而存取所述系数数据元素。
在一个实施例中,该数据处理装置进一步包含用于存储N个乘法-累积数据元素的乘法-累积寄存器。尽管在一个实施例中,此乘法-累积寄存器可由该SIMD寄存器组内的一个或多个寄存器提供,但在替代实施例中,该乘法-累积寄存器是独立于该SIMD寄存器组而提供。
在一个实施例中,这些输入数据元素中的每一个包含X个位,这些系数数据元素中的每一个包含Y个位,且存储于该乘法-累积寄存器中的每一乘法-累积数据元素在大小上为至少X+Y个位。由于该乘法-累积寄存器存储N个乘法-累积数据元素,所以应该了解,该乘法-累积寄存器需要比SIMD寄存器组中的用于存储输入数据元素或系数数据元素的寄存器宽。尽管X与Y可不同,但在一个实施例中,X与Y相同,使得输入数据元素与系数数据元素具有相同大小。
尽管每一乘法-累积数据元素在大小上可确切地为X+Y个位,但在一个实施例中,该乘法-累积寄存器以扩展形式存储这些乘法-累积数据元素,该扩展形式包括用于决定溢位(overflow)的额外位。因此,当自在乘法-累积处理的最后迭代中产生的N个乘法-累积数据元素导出N个乘法-累积结果时,可考虑这些额外位以便检测已发生溢位的情形,且相应地修改相关的乘法-累积数据元素。可以多种方式自该扩展形式导出N个乘法-累积结果。在一个实施例中,使扩展形式元素饱和至结果元素的大小,使得在结果元素的范围外的值由其在范围内最接近的值替换。在另一个实施例中,这些结果元素是通过采用扩展形式元素的选定部分且废弃其余位而形成。其它实施例可进行两者且使扩展形式元素的选定部分饱和。
尽管在一个实施例中,输入数据元素及系数数据元素为实数,但在其它实施例中,输入数据元素及系数数据元素中的至少一个为包含实部及虚部的复数(complex number)。在一个这样的复数实施例中,乘法-累积处理的每一迭代包含并行执行N个复数乘法-累积运算以便产生N个复数乘法-累积数据元素,且N个乘法-累积结果输出为复数。
在一个实施例中,输入数据元素及系数数据元素中的仅一个将为复数。举例而言,输入数据元素可为复数,而系数数据元素可为实数。在一个这样的实施例中,可在执行复数乘法-累积运算之前将系数数据元素转换为复数形式。
在另一个实施例中,输入数据元素及系数数据元素二者都为包含实部及虚部的复数。
在一个实施例中,每一复数乘法-累积运算涉及执行一系列的乘法、加法及减法运算,以便产生相应复数乘法-累积数据元素的实部及虚部。
在一个实施例中,系数数据元素为复数,且可在执行N个复数乘法-累积运算之前使该复数系数数据元素共轭。通常,此涉及对复数系数数据元素的虚部求反(negate)。执行此共轭的能力可以在乘法-累积处理的多个迭代期间处理复数的方式来提供灵活性。存在指定这样的共轭的多种方式,但在一个实施例中,可提供重复MAC指令的非共轭及共轭变数两者。响应于这样的共轭重复MAC指令,指令译码器电路被配置成产生额外控制信号来使得SIMD数据处理电路在执行N个复数乘法-累积运算之前对复数系数数据元素的虚部求反。
尽管在一个实施例中,乘法-累积运算可使得每一乘法结果相加至执行累积值,但在替代实施例中,这些乘法-累积运算可形成乘法-减法运算,其中每一乘法结果自运行累积值减去。在一个特定实施例中,使得执行乘法-累积处理的多个迭代(在其期间,这些乘法-累积运算使得将乘法结果相加至运行累积值)的重复MAC指令之后是另一使得执行乘法-累积处理的多个迭代的重复MAC指令,其中此时所执行的这些乘法-累积运算使得将乘法结果自运行累积值减去。指令的这样的组合可为有用的(例如,当对复数执行运算时)。
在一个实施例中,由指令译码器电路产生的控制信号中的一个指定是否需要舍入,且若需要舍入,则状态机被配置成使得将舍入增量注入在所述多个迭代中的一个(例如,该最后迭代)中执行的每一乘法-累积运算中。因此,重复乘法-累积指令可指定需要舍入,且在这种情况下,状态机被配置成允许除最后迭代外的所有迭代在无舍入的情况下进行,且使舍入增量接着注入在最后迭代中执行的每一乘法-累积运算中,以便实施所需舍入。作为实例来考虑输入数据元素及系数数据元素中的每一个在长度上为16位的情形,则所产生的乘法-累积数据元素在大小上将为32位。若不需要舍入,则将输出全32位结果。然而,若需要舍入,则需要输出16个最高有效位作为结果,但执行舍入运算以考虑将不直接包括于结果中的16个最低有效位。为执行所需舍入,在位位置15处注入舍入增量(假定32个位编号是通过位位置0至31给出,且位位置31为最高有效位)。当通过重复MAC指令指定舍入时,状态机确保仅在最后迭代期间应用舍入,以便确保舍入处理仅应用于用以形成最后乘法-累积结果的最后乘法-累积数据元素。
然而,尽管在前述实施例中,在最后迭代期间注入舍入增量,但在替代实施例中,可在任一迭代中注入舍入增量,因此舍入无需留至最后迭代。
在一个实施例中,由指令译码器电路产生的控制信号中的一个指定要产生的乘法-累积数据元素是饱和的还是非饱和的,且SIMD数据处理电路中的累积电路是取决于所述控制信号而加以配置。因此,在本发明的实施例中,可指定重复MAC指令的饱和及非饱和变数。
尽管加于标量值选择上的约束将取决于实施,但在一个实施例中,将标量值约束为小于或等于N。
在这样的实施例中,假定所需迭代的数目小于或等于N,则有可能经由单一重复MAC指令来执行乘法-累积处理的多个迭代以便产生N个乘法-累积结果,其中这些乘法-累积结果表示所要的实际最后结果。然而,若需要多于N个迭代,则此可通过使用一系列的重复MAC指令来达成,其中每一后续重复MAC指令采用来自先前重复MAC指令的乘法-累积结果作为输入。因此,在一个实施例中,若需要N+Q个迭代(其中Q小于或等于N),则第一重复MAC指令具有指示N个迭代的标量值,且之后是另一重复MAC指令,该另一重复MAC指令具有指示Q个迭代的标量值且将由SIMD数据处理电路响应于该第一重复MAC指令而产生的N个乘法-累积结果识别为初始乘法-累积数据元素的向量。
在一个实施例中,若如由该重复MAC重量指定的所述标量值大于可执行的迭代的最大数目(通常为第二向量中系数数据元素的数目),则将该标量值设定为等于所述最大数目,且所述SIMD数据处理电路执行所述乘法-累积处理的所述最大数目的迭代。
在一个实施例中,该指令译码器电路响应于一系列的重复MAC指令而产生控制信号来控制该SIMD数据处理电路执行一系列的乘法-累积级,每一乘法-累积级执行所述乘法-累积处理的所述多个迭代,且至少一个乘法-累积级使用由先前乘法-累积级所产生的N个乘法-累积结果作为输入。尽管可出于多种原因(例如,因为所需迭代的数目超过N)使用这样的方法,但在一个特定实施例中,使用该序列的乘法-累积级来对复数执行重复MAC运算。在这种情形中,输入数据元素及系数数据元素皆将包括实部及虚部,且需要四个乘法-累积级以便产生所需的实数及虚数乘法-累积结果。
在需要执行一系列的乘法-累积级的一个实施例中,则可布置指令译码器电路以响应于单一重复MAC指令而产生控制信号来控制所述SIMD数据处理电路执行至少两个乘法-累积级,每一乘法-累积级执行所述乘法-累积处理的所述多个迭代,其中每一乘法-累积级所需的输入数据元素及系数数据元素是根据该第一向量及该第二向量决定的。因此,响应于单一重复MAC指令,可并行执行多个乘法-累积级,在一个特定实施例中,能够并行执行两个乘法-累积级。这在其中对于这些级中的两个或更多个重复使用输入数据元素或系数数据元素的情况中是有用,因为其意谓这些数据元素仅需要自寄存器组/存储器存取一次,藉此得到进一步改良的能量节省。
在一个特定实施例中,输入数据元素在两个乘法-累积级之间重复使用,用于一个级的每一迭代之后是使用相同N个输入数据元素的另一级的对应迭代。系数数据元素的每一迭代被改变,使得不同系数数据元素用于该两个级中的每一个。在一特定实施例中,将标量值M约束为小于或等于N/2,以使得可通过含有N个系数数据元素的SIMD寄存器的内容来提供所需的系数数据元素。然而,替代地,可通过使用多于一个SIMD寄存器提供系数数据元素的第二向量来移除对M的此限制。
从第二方面来看,本发明提供一种使用SIMD数据处理电路及指令译码器电路来处理数据的方法,该SIMD数据处理电路响应于控制信号而对多个数据元素并行执行数据处理运算,并且该指令译码器电路耦合至所述SIMD数据处理电路且响应于程序指令而产生所述控制信号,所述方法包含以下步骤:对将输入数据元素的第一向量、系数数据元素的第二向量以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令进行译码,以产生控制信号;以及用这些控制信号控制所述SIMD数据处理电路以通过以下步骤产生乘法-累积结果:执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算以便产生N个乘法-累积数据元素;对于每一迭代,决定来自所述第一向量的N个输入数据元素以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果。
从第三方面来看,本发明提供一种数据处理装置的虚拟机实施,所述虚拟机实施响应于将输入数据元素的第一向量、系数数据元素的第二向量以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令而通过以下步骤产生乘法-累积结果:执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算以便产生N个乘法-累积数据元素;对于每一迭代,决定来自所述第一向量的N个输入数据元素以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果。
从第四方面来看,本发明提供一种数据处理装置,其包含:SIMD数据处理构件,其用于响应于控制信号而对多个数据元素并行执行数据处理运算;以及指令译码器构件,其耦合至所述SIMD数据处理构件,用于响应于程序指令而产生所述控制信号;其中所述指令译码器构件响应于将输入数据元素的第一向量、系数数据元素的第二向量以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令而产生控制信号来控制所述SIMD数据处理构件通过以下步骤产生乘法-累积结果:执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算以便产生N个乘法-累积数据元素;对于每一迭代,决定来自所述第一向量的N个输入数据元素以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果。
附图说明
图1A及图1B示意性地图示根据本发明的一个实施例的由SIMD数据处理电路响应于重复乘法-累积指令而执行的乘法-累积处理的迭代;
图2为示意性地说明可使用本发明的实施例的技术的数据处理装置的框图;
图3为更详细地说明本发明的一个实施例的SIMD MAC电路的图;
图4为说明图3中所示的状态机的操作的状态图;
图5为说明根据图3的实施例所产生的各种信号的时序图;
图6示意性地说明根据本发明的一个实施例的在每一迭代中执行的乘法-累积处理;
图7示意性地说明根据本发明的一个实施例的如何自输入数据元素的第一向量导出各迭代的N个输入数据元素;
图8示意性地说明根据本发明的一个实施例的如何自系数数据元素的第二向量导出每一迭代所用的系数向量;
图9示意性地图示如何利用本发明的实施例的一系列的重复MAC指令来对复数执行FIR滤波运算;
图10说明图3中所示实施例的本发明的替代实施例,其中SIMD MAC电路可响应于单一重复MAC指令而并行执行两个独立乘法-累积级;
图11为图10的电路的时序图;以及
图12为示意性地说明虚拟机实施的图,该虚拟机实施用于利用本发明的实施例的重复MAC指令来执行程序代码。
具体实施方式
根据本发明的实施例,提供重复乘法-累积(重复MAC)指令,其采用输入数据元素的第一向量(vd)、系数数据元素的第二向量(vc)及指示所需的多个迭代M的标量值作为输入操作数。可选地,该重复MAC指令也可采用初始乘法-累积数据元素(本文中也称为初始累积数据元素)的向量作为输入操作数。
当由指令译码器电路对此指令进行译码时,产生控制信号,该控制信号用以控制SIMD数据处理电路以便产生由以下方等式给出的向量累积器输出:
对于向量中的所有“i”
若指定初始乘法-累积数据元素的向量,则此等式变为:
  对于向量中的所有“i”
SIMD数据处理电路可视为提供N个并行处理路线(lane),且在一个实施例中,上述等式中的变量“i”采用0与N-1之间的所有值。因此,如图1A及图1B中所说明的那样,SIMD数据处理电路将产生含有N个乘法-累积结果的向量累积器输出10,其中这些N个乘法-累积结果是在执行图1A或图1B中所示的M个迭代之后产生的。图1A说明在未指定初始乘法-累积数据元素的向量的情况下执行的乘法-累积处理的迭代,且图1B说明在指定初始乘法-累积数据元素的向量的情况下执行的乘法-累积处理的迭代。
应注意,在图1A及图1B中,且实际上在先前提及的等式中,在vacc、vc或vd后的方括号中的数字指示这些向量的正被运算的特定数据元素。因此,如自图1A或图1B显而易见,在第一迭代期间,来自系数向量vc的第一系数数据元素用于所有N个并行处理路线中,其中每一路线采用来自输入数据元素的向量vd的不同输入数据元素(始于第一输入数据元素)。在迭代2中,在所有路线上使用下一系数数据元素,且所使用的输入数据元素的向量类似于第一迭代中所使用的输入数据元素的向量,但移位一个数据元素位置。在每一迭代之间改变系数数据元素及输入数据元素的方式是相同的,使得第M迭代所使用的系数数据元素及输入数据元素为示出于图1A或图1B中右手栏中的这些数据元素。
向量vacc、vc及vd中的数据元素可为实数或复数。因此,每一迭代可执行实数或复数乘法-累积运算,其中第M迭代产生N个实数或复数结果。当考虑执行复数乘法-累积运算的实例时,图1A及图1B中的框中的乘法中的每一个将涉及执行一系列的乘法、加法及减法运算,以便产生相应复数乘法结果数据元素的实部及虚部。特别地,考虑vc(k) * vd(l)的一般情况,将执行以下计算:
乘法实部结果 =
乘法虚部结果 =
(其中“R”表示实数分量,且“I”表示虚数分量)。
接着将这些实数及虚数乘法结果与先前实数及虚数累积结果进行累积。
尽管在以上实例中,输入数据元素及系数数据元素两者皆为复数,但在替代实施例中,可将这些数据元素中仅一个在输入向量中被提供为复数。举例而言,虽然可将输入数据元素提供为复数,可将系数数据元素提供为实数。
在一个实施例中,将此情形处理为上文所述的复数实施例的特殊情况,其中vd及vacc向量的数据元素为复数,而vc的系数数据元素为实数。为执行此运算,可如下将实数vc元素在内部转换为复数:
且接着可如上文所论述执行复数乘法-累积运算。
如先前所提及,根据本发明的实施例,图1A或图1B中所说明的所有运算可由SIMD数据处理电路响应于单一重复MAC指令而执行,且因此,该N个乘法-累积结果10所有均响应于该单一指令而产生。此外,在本发明的实施例中,在执行图第1A或图第1B中所示的计算之前将所有所需的输入数据元素及系数数据元素自SIMD寄存器组读取至SIMD数据处理电路的内部寄存器中,因此避免在执行图1A或图1B中所示的计算期间进一步存取SIMD寄存器组的需要。为实现此功能性,输入数据元素的第一向量将包括至少N+M-1个数据元素,且系数数据元素的第二向量将包括至少M个系数数据元素。在一个特定实施例中,将标量值M限制为小于或等于N,且通过提供两个N-元素SIMD寄存器的内容以形成输入数据元素的第一向量,且通过提供一个N-元素SIMD寄存器的内容以提供系数数据元素的第二向量来满足以上要求。
尽管响应于重复MAC指令而执行的运算可以在多种情形中有用,其提供用于执行FIR滤波运算的尤其有能量效益的机制,其中向量累积器输出10中的M个乘法-累积结果中的每一个形成FIR结果。
对于重复MAC功能模型的若干变数中的每一个,以下C代码根据标准向量抽取及向量与标量乘法提供图1A以及图1B的上述运算的功能模型。
1)重复MAC,其中初始累积器归零。
2)重复MAC,其中初始累积器作为输入向量。
3)使重复MAC饱和,其中初始累积器归零。
4)使重复MAC饱和,其中初始累积器作为输入向量。
5)使重复MAC饱和并舍入,其中初始累积器归零。
6)使重复MAC饱和并舍入,其中初始累积器作为输入向量。
7)重复乘法与减法,其中初始累积器归零。
8)重复乘法与减法,其中初始累积器作为输入向量。
9)使重复乘法与减法饱和,其中初始累积器归零。
10)使重复乘法与减法饱和,其中初始累积器作为输入向量。
11)使重复乘法与减法饱和并舍入,其中初始累积器归零。
12)使重复乘法与减法饱和并舍入,其中初始累积器作为输入向量。
13)复数重复MAC,其中初始累积器归零。
14)复数重复MAC,其中初始累积器作为输入向量。
15)复数共轭重复MAC,其中初始累积器归零。
16)复数共轭重复MAC,其中初始累积器作为输入向量。
考虑上文实例1,此C代码的第一行识别重复MAC指令,该重复MAC指令采用输入数据元素向量vd0及vd1(一起构成输入数据元素的第一向量vd)、形成系数数据元素的向量的系数向量vc以及形成指示所需迭代的数目的标量值的整数值M作为输入。接着在C代码的其余部分中开始响应于该指令而执行的运算。首先,初始化整数变量P,其后将乘法-累积向量vacc初始化为零(此由代码的第二行vint32L_t vacc=vdup_n_s32L(0)来执行)。然而,向量vd0、vd1及vc中的各个数据元素为16位宽,向量vacc内的各个数据元素为32位宽以便适应使16-位输入数据元素与16-位系数数据元素相乘而产生的乘法结果。
接下来,执行对标量值M的两个核查。特别地,若M大于或等于参数N(在C代码中称为ELEMENTS16),则将M设定为等于N,而否则标量值M保持不变。其次,若M小于1,则将其设定为等于零,而否则将其设定为等于M-1。
接着以P=0开始进入循环,且在P小于M时重复该循环(每次重复该循环时P递增)。在每一迭代中,执行乘法-累积运算(识别为vmlal_n_s16)。使用获得路线程序、自向量vc选择第P系数数据元素,连同接着将该单一系数数据元素广播至向量(即,形成所有皆相同的N个独立系数数据元素(此广播功能性由vmlal_n_s16运算中的“n”指示))而决定所使用的系数数据元素。如所示的那样,作为至MAC运算的输入的所需的N个输入数据元素是使用移位运算vext_s16而取决于P的值自vd0及vd1选出。最后,自向量vacc选取累积输入。
一旦已完成循环的所需数目的迭代,则执行最后vmlal_n_s16运算以便返回结果。假定在进入循环之前将M设定为等于M-1,则需要此最后迭代。
实例2类似于实例1,但此处初始乘法-累积向量vacc由指令指定。实例3至12说明饱和以及饱和并舍入变数,连同每一个的乘法-减法版本。
实例13类似于实例1,但向量vacc、vc及vd的数据元素为复数,且在每一迭代中,执行复数乘法-累积运算(识别为vmlal_n_c16)及复数移位运算(识别为vext_c16)。实例15类似于实例13,但使系数数据元素共轭以便在执行乘法-累积运算之前反转系数数据元素的虚部的正负号。实例14及16分别类似于实例13及15,但在此等实例中,初始乘法-累积向量vacc由指令指定。尽管实例13至16表示对应于实数实例1及2的复数变数(以非共轭及共轭形式两者),但将了解,可容易地提供所有实数实例1至12的复数变数。
图2说明根据本发明的一个实施例的数据处理装置,在此特定实例中,数据处理装置采用数字信号处理器(DSP)100的形式。尽管由DSP 100执行的运算可采用多种形式,但在一个实施例中,可使用DSP来执行无线基带处理功能。无线基带对这样的集成电路的处理能力要求很高。所需的数据输出量大,且使DSP内提供的不同元件平衡以使所有元件在高效率下使用是重要的。如图2中所示,该DSP包括SIMD部分105,该SIMD部分105包括SIMD乘法-累积电路110及各种其它SIMD处理电路120。SIMD MAC电路110及该其它SIMD处理电路120两者皆可存取SIMD寄存器组140,该SIMD寄存器组140存储SIMD处理电路所需的数据元素的向量。SIMD MAC电路110也可存取用以保持在MAC运算期间产生的累积数据元素的一个或多个SIMD累积寄存器130。
在一个实例中,SIMD MAC电路110及其它SIMD处理电路130具有32个并行处理路线,每一个为16位宽,其可用以对自SIMD寄存器组提供的算术值执行乘法、加法及混排(shuffle)运算。自SIMD寄存器组140内的一个或多个输入值寄存器中的各个元素选取16-位数据字,以便提供所需输入值至并行处理路线中的每一个。
通常,SIMD电路将被管线化,且在一个实施例中,SIMD MAC电路形成3级管线,使得在将计算发布至管线中三个周期之后可得到计算结果。
在一个实施例中,各个处理路线是由控制器160自程序存储器165检索的256-位极长指令字(VLIW)指令控制。此VLIW指令通常也将包括用以控制DSP 100的标量部分145内的标量处理电路150的标量指令,该标量处理电路150可存取一个或多个标量寄存器组155。控制器160将包括一个或多个指令译码器,该一个或多个指令译码器用以对VLIW指令内的指令进行译码,且将所需控制信号发送至SIMD部分105内的电路及标量部分145内的电路。控制器也将视需要且在需要时将控制信号发送至加载/存储单元170以使得从数据存储器175检索数据以供存储于SIMD寄存器组140或标量寄存器组155中,或用于使得数据从寄存器组存储回至数据存储器175。
标量处理电路150与上述SIMD处理电路并行操作且主要用以执行控制操作。标量处理电路中的一个也可控制地址产生单元,该地址产生单元负责产生用以存取数据存储器175中的数据值的存储器存取地址。在一个实施例中,标量处理电路150具有1至3个管线级,且数据存储器175具有3个周期或6个周期的等待时间。
考虑本发明的实施例的重复MAC指令,此指令可出现于由控制器160从程序存储器165检索的VLIW指令中,且在对该重复MAC指令进行译码后,即将控制信号发布至SIMD部分105,且特别地发布至SIMD MAC电路110以使得SIMD MAC电路110执行乘法-累积处理的多个迭代以便实施图1A或图1B中示意性说明的运算序列。
图3为更详细说明提供于SIMD MAC电路110中以提供所需功能性的组件的图。寄存器220及222被提供用于最初存储向量vd0及vd1(共同形成输入数据元素的第一向量vd),而寄存器246用以存储系数数据元素的第二向量。使用多路复用器248、1:N转换器250及多路复用器242,单一系数数据元素可被选择以用于每一迭代,且跨越N个路线广播以便形成存储于寄存器240中的系数的向量。在乘法-累积处理的第一迭代期间,此经由1:N转换器244达成,该1:N转换器244选取第一系数数据元素且将其在N个路线上广播,藉此避免使用寄存器246的1个周期的延迟。
尽管在第一迭代中,寄存器220含有向量vd0(即,向量vd的前N个输入数据元素),但对于每一后续迭代,寄存器220的内容可使用移位电路226加以改变,该移位电路226接纳来自寄存器组222的数据元素中的一个(经由多路复用器224)及寄存器220的当前内容,且执行移位(移位1个数据元素)以便建立下一迭代所需的输入数据元素,该结果接着经由多路复用器230路由回至寄存器220中。
如图3中接着示出,SIMD MAC电路110具有N个并行处理路线260,每一路线包括框260中所说明的组件(寄存器264可视为横跨所有路线),且每一路线对输入寄存器220、240中的每一个内的N个数据元素中的一个进行运算。特别地,乘法器电路262使寄存器220中的输入数据元素中的一个与来自寄存器240的系数数据元素相乘,结果存储于寄存器264中。在下一时钟周期中,加法器电路268使用自归零电路(set to zero circuitry)272提供的累积值及来自寄存器264的乘法结果来执行累积运算。通常,控制信号开启线(control signal on line)217将停用归零功能性,且因此,将自SIMD累积寄存器130接收累积结果。然而,可选择地,重复MAC指令可指定零值初始累积值,且在该情况下,在第一迭代期间,控制信号开启线217将启用归零功能性,因此确保在第一周期中不使用累积值。
尽管重复MAC指令通常将指定乘法加法运算(其中将每一迭代中的乘法结果相加至运行累积结果),但其可替代地指定乘法减法运算(其中自运行累积值减去每一迭代中的乘法结果)。在限定乘法减法运算的情况下,控制信号开启线216将使得求反电路266对寄存器264中的数据元素在输入至加法器268中之前求反。
类似地,重复MAC指令可指定所产生的乘法-累积数据元素是饱和还是非饱和的。若其为非饱和的,则通常,输入数据元素的大小及/或累积寄存器130的大小将被选择以使得累积结果不可能饱和。然而,若指令指定乘法-累积数据元素是饱和的,则饱和电路270经由路径219接收控制信号以使其能够在将来自加法器268的输出路由至SIMD累积寄存器130之前对该输出进行评估。特别地,饱和逻辑评估溢位位以决定输出乘法-累积数据元素是否跨越边界从最大正数转变至最小负数,或从最小负数转变至最大正数,且若如此,则修改结果,以使其分别保持处于该最大正数或最小负数。
还提供控制信号218以允许在最后迭代期间将可选舍入增量注入由加法器268执行的加法中,若重复MAC指令指定需要舍入,则使用此控制信号218。若需要舍入,则仅在最后迭代中执行舍入以便确保产生正确的数学结果,且因此仅在最后迭代期间注入可选舍入增量值是重要的,这将由在下文更详细论述的状态机200来控制。
上文论述的各种电路元件的操作由状态机200控制,当要由SIMD MAC电路110执行的每一SIMD指令由控制器160译码时,状态机200接收各种控制信号。
如图3中所示出,状态机在对指令进行译码后接收三个信号。第一信号为经由路径202发布的重复指示,且若设定此信号,则其指示正被译码的指令为重复MAC指令,而若未设定此信号,则其指示正被译码的指令为标准MAC指令。经由路径204接收的信号为给出迭代的数目的重复数信号,此信号由来自存储于标量寄存器组155中的标量值提供,且不用于标准MAC指令。所接收的最后信号为经由路径206接收的mult_cmd信号,且其提供标准乘法器命令信息,诸如乘法-累积为乘法加法还是乘法减法、累积值为饱和的还是非饱和的、是否需要舍入、是否指定初始累积值,或是否应在开始运算时清除累积,及任何其它相关控制信号。
在替代实施例中,可自形成重复MAC指令的输入操作数中的一个的标量值导出重复数信号,在该情况下,该重复数信号由控制器160而非自标量寄存器组155提供。
图4示出状态机的两个基本状态。在重设后,状态机处于无重复状态300且保持于无重复状态直至其在路径202上接收到处于设定状态的重复信号及经由路径204接收到指定若干迭代的重复数信号为止。在这些条件下,状态机的状态自无重复状态300转变至重复状态310。状态机发布若干控制信号至SIMD MAC电路110内的各种组件,该控制信号包括经由路径212的mcyc_en信号,该mcyc_en信号在状态机处于无重复状态300时设定为逻辑值0,且在状态机处于重复状态310时设定为逻辑1值。
在处于重复状态310时,状态机维持被称为mcyc_cnt信号的计数器,其在执行每一迭代时自初始重复数信号值M递减,且当mcyc_cnt信号小于或等于1时,状态机自重复状态310转变回至无重复状态300。
图5为说明由状态机200响应于其经由路径202、204及206接收的三个输入信号而产生的各种信号(在这些信号识别重复MAC指令的执行的情形中)的时序图。
考虑多路复用器230,由状态机200经由路径212发布的mcyc_en信号用以控制该多路复用器,使得一旦已断言该信号,则多路复用器将其在其左手侧(自移位电路226)接收的输入输出至寄存器220。因此,在第一周期中,在断言mcyc_en信号之前,来自SIMD寄存器组的输出经由多路复用器路由至寄存器220中,且如先前所提及,此意味将向量寄存器内容vd0置于寄存器220内。在随后周期中,多路复用器230将由所断言的mcyc_en信号来起动以选择左手输入,且如先前所论述,此左手输入将由移位电路226基于寄存器220的内容及在多路复用器224的控制下自寄存器222选择的数据元素中的一个而产生。多路复用器224接收如图5中所示的mcyc_elem_sel信号,且依据该信号自寄存器222选择相关数据元素。因此,参看图1A或图1B将可见,用于每一迭代的寄存器220的内容将为图1A或图1B中示意性示出的用于每一迭代的输入数据元素。
考虑多路复用器242,则在不存在重复MAC指令的情况下,多路复用器242的左手输入将传播至寄存器240中。特别地,多路复用器242接收两位控制信号,该两位控制信号是由状态机经由路径212输出的mcyc_en信号及由状态机经由路径202接收的重复信号形成。在不存在重复MAC指令的情况下,两个位皆被清除至逻辑零状态。在出现重复MAC指令时,重复信号将在第一时钟周期期间被设定为高,但在设定状态下将不由状态机212输出mcyc_en信号直至下一时钟周期。因此,在第一时钟周期期间,至寄存器240的输入将由至多路复用器242的中间输入给出,此中间输入由1:N转换器电路244使用系数的向量vc中的第一系数数据元素(即,vc[0])产生。对于重复MAC指令期间的每一随后周期,将设定经由路径212发布的mcyc_en信号,且因此,将自至多路复用器242的右手输入选取至寄存器240的输入,如先前所论述,该右手输入在多路复用器248的控制下自寄存器246的内容(即,系数数据元素的第二向量)产生。类似于多路复用器224,多路复用器248接收mcyc_elem_sel信号且因此依序步进通过系数数据元素中的每一个。考虑多路复用器248,若mcyc_elem_sel为i,则此多路复用器选择系数数据元素i+1。
为了完整起见,在图5中说明从寄存器D 240及寄存器A 220的输出,其中VC0指示用于第一迭代中的系数的向量,VD0指示用于第一迭代中的输入数据元素的向量,等等。
如图3中所示,经由路径206接收的mult_cmd信号锁存于寄存器205中,且接着随后路由至多路复用器210,在多路复用器210处,其可在各种命令信息接着在第三时钟周期中经由路径216、217、218及219传播之前传播至寄存器215。仅插入两个寄存器205、215以确保在传播命令信息时所需的三个周期的延迟,以使得该命令信息在正确周期传递至累积电路。如图5中所示,状态机还可产生mult_cmd信号的略加修改的版本以供经由路径208路由至多路复用器210的另一输入端,且接着发布控制信号(mult_cmd_ex控制信号)至多路复用器以指示应将左手输入还是右手输入作为mult_cmd_ex信号传播至多路复用器215。此控制信号设定为高,同时mcyc_en或mcyc_ex(图5中所示的mcyc_en的管线式版本)设定为高。
因此,对于第一迭代,如图5中所示,所接收的mult_cmd OP将作为OP0经由路径208输出,且被选择用于自多路复用器210输出,OP0与OP相同,除了在OP指定舍入的情形中,在该情况下,OP0将停用舍入以确保在第一迭代中不注入舍入增量。对于下一迭代直至最后迭代,状态机将经由路径208发布OP1,该OP1将与原始OP相同,但其中始终启用累积,且始终停用舍入,且将自多路复用器210传播OP1。如先前所提及,原始OP可识别应将初始累积归零,但显而易见,此情形应仅发生于第一迭代期间,且其后有必要启用累积。需要保持停用舍入直至最后周期,以便确保发生正确的数学舍入。如还在图5中所示,在最后迭代中,mult_cmd_ex信号将被设定为OP2,该OP2将与原始OP相同,但其中始终启用累积,且将从多路复用器210传播OP2。因此,此时,若原始OP指定舍入,则OP2还将指定舍入,且将使得经由路径218注入舍入增量。
图5中的mult_cmd_ex信号示出多路复用器210的输出,其将导致一个周期后自寄存器215发布信号mult_cmd_wb以控制运算的写回级。
如还在图3中所示,经由路径212发布的mcyc_en信号可可选择地锁存于寄存器214中,以产生图5中所示的停止信号。可使用此信号来使得控制器在断言停止信号时暂停指令提取,藉此降低功率消耗。
图6示意性说明由根据本发明的实施例中的N个路线260内的SIMD MAC电路110执行的乘法-累积运算。如图6中所示,多路复用器262内的该N个路线接收N个输入数据元素400及通过复制单一系数数据元素N次而形成的系数向量410,且基于所述输入数据元素400及系数向量410而执行所需的乘法,从而导致产生存储于寄存器264内的N个乘法数据元素420。假定所述输入数据元素及系数数据元素中的每一个为16位宽,则该乘法数据元素中的每一个将为至少32位宽。
此后,将该N个乘法数据元素420相加(或可选择地相减,若启动求反电路266的话)至从电路272输入的N个乘法-累积数据元素430。通常,此将为SIMD累积寄存器130的内容,其将为来自先前迭代的N个乘法-累积数据元素,或将为初始乘法-累积数据元素的向量。或者,对于第一迭代,该N个乘法-累积数据元素将均被归零。加法的结果为产生N个乘法-累积数据元素440,其存储回至SIMD累积寄存器130。
图7示意性地说明如何布置图3中的电路元件220、222、224及226以自输入数据元素的原始第一向量vd产生用于第一迭代的N个输入数据元素。特别地,最初,向量vd0 450存储于寄存器220中,且向量vd1 460存储于寄存器222中。在第一迭代上,寄存器220的内容不变,且因此,N个输入数据元素470路由至多路复用器262。在下一迭代中,移位电路226接收寄存器220的当前内容(即,向量vd0 450),且还从存储于寄存器222中的向量vd1接收第一数据元素(即,vd[N]),且执行移位一个数据元素的向右移位运算,使得所得N个输入数据元素480被产生且经由多路复用器230传回至寄存器220中。每一随后迭代以类似方式进行,以便产生图1A或图1B中所示的该系列N个输入数据元素向量。
图8示意性地说明如何自存储于寄存器246中的系数数据元素的第二向量vc导出用于每一迭代的系数向量。在第一迭代上,选择第一系数数据元素vc[0]且接着将其复制N次以形成系数向量510。如先前所论述,在一个实施例中,此实际上使用1:N转换电路244而非使用寄存器246的内容达成,以便避免一个周期的传播延迟。在下一周期中,选择第二系数数据元素vc[1]且将其复制N次以形成系数向量520,该系数向量520自1:N转换器250经由多路复用器242输入至寄存器240中。对于每一随后迭代,选择下一系数数据元素且以相同方式操纵以便产生图1A或图1B中所示的该系列系数向量。
在上述实施例中,重复MAC指令处理实数。然而,如先前所论述,在替代实施例中,重复MAC指令可能被布置成处理复数,其中(在输入数据的第一向量、系数的第二向量及N个乘法-累积结果中的)所有数据元素为复数且所有运算为复数运算。考虑图3的实例,此可通过将乘法电路262布置为复数乘法器来达成,复数乘法器可被布置成执行先前第11页所论述的实部及虚部的四个乘法,连同所需的加法及减法以便产生具有实部及虚部的乘法结果。可继而将加法器268布置为复数加法器以关于实部及虚部执行所需的累积运算以便产生被更新的复数累积值。若正执行乘法-减法运算,则求反电路266将对由乘法电路262产生的复数乘法结果在输入至加法器268之前进行求反。
在正处理复数共轭重复MAC指令的情况下,可将额外控制信号提供至乘法电路262以使其在执行所需乘法运算之前反转系数数据元素的虚部的正负号。
作为以以上方式处置复数的替代,如图9中示意性地说明,还可使用四个非复数重复MAC指令来合成复数FIR滤波器(FIR filter)。特别地,在图9的上部,示出产生乘法-累积结果的实数分量及虚数分量所需的等式(“R”指示实数分量,且“I”指示虚数分量)。在图9的下半部中,示出产生这些结果所需的一系列的四个指令,其中用于每一指令的输入操作数识别于方括号中。因此,第一重复MAC指令使用vdR及vcR作为输入向量执行乘法加法,且初始累积值为零。对于所有四个指令,将标量值设定为相同值M。第二重复MAC指令接着使用向量vdI及vcI作为输入且将由第一重复MAC指令产生的累积结果设定为初始累积结果而完成产生vaccR结果。应注意,第二重复MAC指令具有减法变型,且因此执行乘法减法运算。第三及第四重复MAC指令接着以类似方式产生vaccI结果,但此时该两个重复MAC指令中的第二个(重复MAC 4)再次为一加法变数。
尽管在本发明的上述实施例中,每一重复MAC指令接收输入数据元素的第一向量及系数数据元素的第二向量,且产生N个乘法-累积结果的一个集合,但在替代实施例中,一个重复MAC指令可被布置成产生N个乘法-累积结果的两个或更多个集合,其中输入操作数或系数数据元素在所执行的两个或更多个乘法-累积处理间重复使用。此实施例将参考图10的框图及图11的时序图加以论述。
用于图10中的装置用于启用SIMD MAC电路110以并行执行两个乘法-累积级,以便全部均响应于由控制器160译码的单一重复MAC指令产生N个乘法-累积结果的两个独立集合。如从图10与前述图3的比较所显而易见,电路基本上相同,经历少数修改。首先,提供两个SIMD累积寄存器600、610而非单一SIMD累积寄存器130,且提供某一些相关联的存取控制电路620,该存取控制电路620由状态机200所发布的控制信号控制,如下文将更详细论述。此外,在图3中用以决定至寄存器220的输入的多路复用器230现由三个输入多路复用器630替换,该输入多路复用器630由从由状态机200输出的控制信号导出的两位信号控制。仅需要注意的另一点是,尽管在图3中,多路复用器224及248两者由来自状态机的相同控制信号来控制,但如将参考图11的时序图更详细论述,其现由两个不同信号控制。
如从图11的时序图与图5的时序图的比较显而易见,图11类似于图5,但额外示出用于图10的电路中的额外控制信号。如图10中所示,多路复用器248由mcyc_c_sel信号控制,该mcyc_c_sel信号如图11中所示在每一迭代期间递增。尽管所指定的迭代的数目为M,但假定存在两个正被实施的独立乘法-累积级,则mcyc_count自2M-1递减。由于mcyc_c_sel信号在每一迭代期间递增,可以看到,从寄存器D 240输出的系数向量在每一迭代期间改变。
相比的下,多路复用器224由mcyc_b_sel信号控制,如从图11显见,该mcyc_b_sel信号仅每两个迭代递增。如图10中所示,来自寄存器A 220的输出作为中间输入路由回至多路复用器630。当设定mcyc_en信号时,多路复用器630将取决于由状态机200经由路径212输出的mcyc_a_en信号的值而将其中间输入或其左手输入输出至寄存器220。如图11中所示,此信号在每一迭代中在设定状态与清除状态间交替,藉此确保自寄存器220的输出对于两个迭代维持相同,因为其内容仅可响应于mcyc_a_en信号变高而正是两个迭代更新一次。
一旦已完成第一迭代所需的三个初始周期,则由存取控制电路620从状态机200接收的mcyc_acc_ctrl信号也在每一时钟周期振荡。当此信号处于逻辑零位准时,存取SIMD累积寄存器600,且当其处于逻辑1位准时,存取SIMD累积寄存器610。这确保对于独立乘法-累积级中的每一个维持的累积数据元素独立地留存于独立SIMD累积寄存器600、610内。
如从图10及图11的以上描述显而易见,在此实施例中,被选择用于每一迭代的输入数据元素的向量对于两个乘法-累积级都重新使用。然而,系数数据元素并未重新使用,并且相反,系数数据元素的不同向量用于乘法-累积级中的每一个,第一乘法-累积级使用向量VC0、VC2、VC4等,且第二乘法-累积级使用向量VC1、VC3、VC5等。因此,可见在此实施例中,如自SIMD寄存器组中的寄存器中的每一个提供的系数数据元素的第二向量含有被封装使得每一交替系数数据元素与相同乘法-累积级相关的各个系数数据元素。在此实施例中,将标量值M限制为小于或等于N/2,使得存储于寄存器246中的N个系数数据元素足以提供图11中所示的系数数据元素的2M个独立向量集合。然而,在替代实施例中,图10中的电路可被修改以使得可使用两个SIMD寄存器的内容来提供系数数据元素的第二向量,藉此允许标量值M为小于或等于N的任何值。
提供使得能够在SIMD MAC电路110内并行执行两个独立乘法-累积级的单一重复MAC指令在各种情形中可能是有用的。在一个实施例中,这样的指令用以降低在执行对复数执行FIR滤波运算时所需的各种乘法-累积级时的能量消耗。举例而言,考虑图9,可使用一个指令来执行级vaccR = vaccR+vdR.vcR及vaccI = vaccI+vdR.vcI两者。特别地,可显见,vdR分量可在两个级间共享,但使用先前参考图10及图11描述的机制来选择系数数据元素的不同向量。因此,实际上,可由图9中所示的两个重复MAC指令”重复MAC 1 ”及”重复MAC 3 ”执行的功能性可包含于单一重复MAC指令中。类似地,由两个重复MAC指令“重复MAC 2”及“重复MAC  4”执行的功能性也可包含在单一重复MAC指令中,但在此情况下,将需要在每一迭代间交替地启用及停用求反电路266,以使得在一累积寄存器中留存乘法减法程序的结果,而在另一累积寄存器中留存乘法加法程序的结果。
在所有以上实施例中,将了解,若将标量值限制为小于或等于N,仍有可能通过一个接一个地使用多个重复MAC指令执行计算(需要多于N个迭代),其中随后重复MAC指令采用由先前重复MAC指令产生的N个乘法-累积结果作为其初始乘法-累积数据元素。
尽管可通过执行一系列本地指令(包括以上提及的重复MAC指令)的硬件来执行上述技术,但将了解,在替代实施例中,这样的指令可执行于虚拟机环境中,其中该指令对于虚拟机为本地的,但虚拟机由执行于具有不同本地指令集合的硬件上的软件实施。虚拟机环境可提供仿真执行全指令集合的全虚拟机环境或可为部分的,例如,仅一些指令(包括本发明的技术的指令)由硬件捕集且由部分虚拟机模拟。
更具体言的,上述重复MAC指令可作为对于全虚拟机或部分虚拟机为本地的指令来执行,其中该虚拟机连同其基础硬件平台组合地操作以提供上述SIMD处理电路。
图12说明可使用的这种虚拟机实施。尽管前述实施例在用于操作支持相关指令的特定处理硬件的装置及方法方面实施本发明,但也有可能提供硬件器件的所谓的虚拟机实施。这些虚拟机实施在运行支持虚拟机程序880的主机操作系统860的主机处理器840上运行。通常,需要大的功率强大的处理器来提供以合理速度执行的虚拟机实施,但这样的方法在某些情境中可以是适当的,诸如当为兼容性或重新使用原因而想要运行对于另一处理器为本地的代码时。虚拟机程序880提供与应用程序900的应用程序接口,该应用程序接口与可真实硬件(由虚拟机程序880建模的器件)提供的应用程序接口相同。因此,程序指令(包括上述重复MAC指令)可使用虚拟机程序880自应用程序900内执行以建模其与虚拟机硬件的互动。
尽管已在本文中描述特定实施例,但将了解,本发明不限于此,且可在本发明的范畴内对其进行许多修改及添加。举例而言,可在不脱离本发明的范畴的情况下进行以下独立权利要求的特征与从属权利要求的特征的各种组合。

Claims (28)

1.一种数据处理装置,包含:
SIMD数据处理电路,其响应于控制信号而对多个数据元素并行执行数据处理运算;
指令译码器电路,其耦合至所述SIMD数据处理电路且响应于程序指令而产生所述控制信号;
所述指令译码器电路响应于将输入数据元素的第一向量、系数数据元素的第二向量、以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令,而产生控制信号以控制所述SIMD数据处理电路:
执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含:并行执行N个乘法-累积运算,以便产生N个乘法-累积数据元素;
对于每一迭代,决定来自所述第一向量的N个输入数据元素、以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及
输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果,
其中,该SIMD数据处理电路具有状态机,该状态机用于决定用于每一迭代的该N个输入数据元素及该单一系数数据元素,并且
所述数据处理装置进一步包含用于存储数据元素的SIMD寄存器组,该SIMD数据处理电路在执行该乘法-累积处理的所述多个迭代之前,自该SIMD寄存器组的寄存器存取所述第一向量及第二向量,藉此在执行该乘法-累积处理的所述多个迭代期间无需关于该第一向量及第二向量而对该SIMD寄存器组进行进一步存取。
2.如权利要求1所述的数据处理装置,其中该重复MAC指令用于执行FIR滤波运算,且产生的该N个乘法-累积结果形成N个FIR结果。
3.如权利要求1所述的数据处理装置,其中该第一向量中输入数据元素的数目至少为N+M-1,且该状态机通过使得相对于用于迭代P-1的该N个输入数据元素执行移位运算而决定用于迭代P的该N个输入数据元素。
4.如权利要求1所述的数据处理装置,其中该状态机对于每一迭代决定来自所述第二向量的不同系数数据元素。
5.如权利要求1所述的数据处理装置,其中该重复MAC指令也将初始乘法-累积数据元素的向量作为输入操作数。
6.如权利要求1所述的数据处理装置,其中未指定初始乘法-累积数据元素的向量,且该N个乘法-累积数据元素在该乘法-累积处理的第一迭代之前归零。
7.如权利要求1所述的数据处理装置,其中该状态机自该标量值决定迭代的数目M,且在正执行该多个迭代中的至少一个时,断言停止信号至该数据处理装置的一个或多个组件。
8.如权利要求7所述的数据处理装置,其中该停止信号在除该多个迭代中的一个迭代外的所有迭代期间被断言。
9.如权利要求1所述的数据处理装置,其中输入数据元素的该第一向量具有为N的倍数的若干输入数据元素,且该SIMD数据处理电路通过存取该SIMD寄存器组的多个寄存器而存取所述输入数据元素,所述多个寄存器中的每一个含有N个输入数据元素。
10.如权利要求1或9所述的数据处理装置,进一步包含用于存储N个乘法-累积数据元素的乘法-累积寄存器。
11.如权利要求10所述的数据处理装置,其中该输入数据元素中的每一个包含X个位,该系数数据元素中的每一个包含Y个位,且存储于该乘法-累积寄存器中的每一乘法-累积数据元素在大小上至少为X+Y个位。
12.如权利要求11所述的数据处理装置,其中该乘法-累积寄存器以扩展形式存储该乘法-累积数据元素,该扩展形式包括用于决定溢位的额外位。
13.如权利要求1所述的数据处理装置,其中:
该输入数据元素及该系数数据元素中的至少一个为包含实部及虚部的复数;
该乘法-累积处理的每一迭代包含并行执行N个复数乘法-累积运算以便产生N个复数乘法-累积数据元素;以及
该N个乘法-累积结果输出为复数。
14.如权利要求13所述的数据处理装置,其中该输入数据元素及该系数数据元素二者皆为包含实部及虚部的复数。
15.如权利要求13或14所述的数据处理装置,其中每一复数乘法-累积运算涉及执行一系列的乘法、加法,及减法运算,以便产生相应复数乘法-累积数据元素的实部及虚部。
16.如权利要求13所述的数据处理装置,其中所述系数数据元素为复数,且在每一迭代中,该复数系数数据元素在执行该N个复数乘法-累积运算之前取共轭。
17.如权利要求1所述的数据处理装置,其中所述乘法-累积运算为乘法-减法运算。
18.如权利要求1所述的数据处理装置,其中由该指令译码器电路产生的控制信号中的一个指定是否需要舍入,且若需要舍入,则该状态机被布置以使得将舍入增量注入在所述多个迭代中的一个中执行的每一乘法-累积运算中。
19.如权利要求1所述的数据处理装置,其中由该指令译码器电路产生的控制信号中的一个指定:要产生的乘法-累积数据元素是饱和的还是非饱和的,且该SIMD数据处理电路中的累积电路取决于所述控制信号而被配置。
20.如权利要求1所述的数据处理装置,其中所述标量值小于或等于N。
21.如权利要求20所述的数据处理装置,其中若需要N+Q个迭代,其中Q小于或等于N,则第一重复MAC指令具有指示N个迭代的标量值,且之后是另一重复MAC指令,该另一重复MAC指令具有指示Q个迭代的标量值,且将由该SIMD数据处理电路响应于该第一重复MAC指令而产生的该N个乘法-累积结果识别为初始乘法-累积数据元素的向量。
22.如权利要求1所述的数据处理装置,其中若由该重复MAC指令指定的所述标量值大于可被执行的迭代的最大数目,则该标量值被设定为等于所述最大数目,且所述SIMD数据处理电路执行所述乘法-累积处理的所述最大数目的迭代。
23.如权利要求1所述的数据处理装置,其中该指令译码器电路响应于一系列的重复MAC指令而产生控制信号,来控制所述SIMD数据处理电路以执行一系列的乘法-累积级,每一乘法-累积级执行所述乘法-累积处理的所述多个迭代,且至少一个乘法-累积级使用由先前乘法-累积级所产生的该N个乘法-累积结果作为输入。
24.如权利要求1所述的数据处理装置,其中该指令译码器电路响应于单一重复MAC指令而产生控制信号,来控制所述SIMD数据处理电路以执行至少两个乘法-累积级,每一乘法-累积级执行所述乘法-累积处理的所述多个迭代,其中每一乘法-累积级所需的输入数据元素及系数数据元素是根据该第一向量及该第二向量决定的。
25.如权利要求23或24所述的数据处理装置,其中该乘法-累积级用以对复数执行重复的MAC运算。
26.一种使用SIMD数据处理电路及指令译码器电路来处理数据的方法,该SIMD数据处理电路响应于控制信号而对多个数据元素并行执行数据处理运算,该指令译码器电路耦合至所述SIMD数据处理电路且响应于程序指令而产生所述控制信号,所述方法包含以下步骤:
对将输入数据元素的第一向量、系数数据元素的第二向量、以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令进行译码,以产生控制信号;以及用所述控制信号控制所述SIMD数据处理电路,以由下述步骤产生乘法-累积结果:
执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算,以便产生N个乘法-累积数据元素;
对于每一迭代,决定来自所述第一向量的N个输入数据元素、以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及
输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果,
其中,该SIMD数据处理电路具有状态机,该状态机用于决定用于每一迭代的该N个输入数据元素及该单一系数数据元素,并且
该SIMD数据处理电路在执行该乘法-累积处理的所述多个迭代之前,自该SIMD寄存器组的寄存器存取所述第一向量及第二向量,藉此在执行该乘法-累积处理的所述多个迭代期间无需关于该第一向量及第二向量而对该SIMD寄存器组进行进一步存取。
27.一种数据处理装置响应于将输入数据元素的第一向量、系数数据元素的第二向量、以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令,产生乘法-累积结果的方法,该方法包括:
执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算,以便产生N个乘法-累积数据元素;
对于每一迭代,决定来自所述第一向量的N个输入数据元素、以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及
输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果,
其中,每一迭代的该N个输入数据元素及该单一系数数据元素由该数据处理装置中的SIMD数据处理电路具有的状态机决定,并且
所述数据处理装置进一步包含用于存储数据元素的SIMD寄存器组,该SIMD数据处理电路在执行该乘法-累积处理的所述多个迭代之前,自该SIMD寄存器组的寄存器存取所述第一向量及第二向量,藉此在执行该乘法-累积处理的所述多个迭代期间无需关于该第一向量及第二向量而对该SIMD寄存器组进行进一步存取。
28.一种数据处理装置,包含:
SIMD数据处理构件,用于响应于控制信号而对多个数据元素并行执行数据处理运算;以及指令译码器构件,其耦合至所述SIMD数据处理构件,用于响应于程序指令而产生所述控制信号;
其中所述指令译码器构件响应于将输入数据元素的第一向量、系数数据元素的第二向量、以及指示所需的多个迭代M的标量值作为输入操作数的重复乘法-累积(重复MAC)指令,而产生控制信号来控制所述SIMD数据处理构件以由下述步骤产生乘法-累积结果:
执行乘法-累积处理的所述多个迭代,该乘法-累积处理的每一迭代包含并行执行N个乘法-累积运算,以便产生N个乘法-累积数据元素;
对于每一迭代,决定来自所述第一向量的N个输入数据元素、以及来自所述第二向量的要在该N个乘法-累积运算期间与该N个输入数据元素中的每一个相乘的单一系数数据元素;以及
输出自在该乘法-累积处理的最后迭代中产生的该N个乘法-累积数据元素导出的N个乘法-累积结果,
其中,该SIMD数据处理电路具有状态机构件,该状态机构件用于决定用于每一迭代的该N个输入数据元素及该单一系数数据元素,并且
所述数据处理装置进一步包含用于存储数据元素的SIMD寄存器组构件,该SIMD数据处理构件在执行该乘法-累积处理的所述多个迭代之前,自该SIMD寄存器组构件的寄存器存取所述第一向量及第二向量,藉此在执行该乘法-累积处理的所述多个迭代期间无需关于该第一向量及第二向量而对该SIMD寄存器组进行进一步存取。
CN200980139996.1A 2008-10-08 2009-09-16 用于执行simd乘法-累积运算的装置及方法 Active CN102197369B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0818491.3 2008-10-08
GB0818491A GB2464292A (en) 2008-10-08 2008-10-08 SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
GB0915208.3A GB2464178B (en) 2008-10-08 2009-09-01 Apparatus and method for performing simd multiply - accumulate operations
GB0915208.3 2009-09-01
PCT/GB2009/002225 WO2010040977A1 (en) 2008-10-08 2009-09-16 Apparatus and method for performing simd multiply-accumulate operations

Publications (2)

Publication Number Publication Date
CN102197369A CN102197369A (zh) 2011-09-21
CN102197369B true CN102197369B (zh) 2015-04-22

Family

ID=40042526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980139996.1A Active CN102197369B (zh) 2008-10-08 2009-09-16 用于执行simd乘法-累积运算的装置及方法

Country Status (9)

Country Link
US (1) US8443170B2 (zh)
EP (1) EP2350813B1 (zh)
JP (1) JP5619751B2 (zh)
KR (1) KR20110090915A (zh)
CN (1) CN102197369B (zh)
GB (2) GB2464292A (zh)
IL (1) IL211767A0 (zh)
TW (1) TW201020805A (zh)
WO (1) WO2010040977A1 (zh)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484443B2 (en) * 2008-08-15 2013-07-09 Apple Inc. Running multiply-accumulate instructions for processing vectors
GB2483902B (en) * 2010-09-24 2018-10-24 Advanced Risc Mach Ltd Vector floating point argument reduction
US8725989B2 (en) * 2010-12-09 2014-05-13 Intel Corporation Performing function calls using single instruction multiple data (SIMD) registers
KR20120077164A (ko) * 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
CN102231624B (zh) * 2011-07-28 2014-02-12 中国人民解放军国防科学技术大学 面向向量处理器的浮点复数块fir的向量化实现方法
US9021233B2 (en) * 2011-09-28 2015-04-28 Arm Limited Interleaving data accesses issued in response to vector access instructions
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN103959237B (zh) 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
CN107153524B (zh) 2011-12-22 2020-12-22 英特尔公司 用于给出相应复数的复共轭的计算设备和计算机可读介质
CN104011664B (zh) 2011-12-23 2016-12-28 英特尔公司 使用三个标量项的超级乘加(超级madd)指令
US9733935B2 (en) 2011-12-23 2017-08-15 Intel Corporation Super multiply add (super madd) instruction
US9483810B2 (en) 2011-12-28 2016-11-01 Intel Corporation Reducing the number of IO requests to memory when executing a program that iteratively processes contiguous data
US10095516B2 (en) * 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
US9355068B2 (en) 2012-06-29 2016-05-31 Intel Corporation Vector multiplication with operand base system conversion and re-conversion
US9256480B2 (en) 2012-07-25 2016-02-09 Mobileye Vision Technologies Ltd. Computer architecture with a hardware accumulator reset
EP2690548B1 (en) * 2012-07-26 2018-08-29 Mobileye Vision Technologies Ltd. Computer architecture with a hardware accumulator reset
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9411592B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
CN103077008B (zh) * 2013-01-30 2014-12-03 中国人民解放军国防科学技术大学 数组相加运算汇编库程序的地址对齐simd加速方法
US11593357B2 (en) * 2013-03-15 2023-02-28 Datatempest, Llc Databases and methods of storing, retrieving, and processing data
US9619227B2 (en) * 2013-11-15 2017-04-11 Qualcomm Incorporated Vector processing engines (VPEs) employing tapped-delay line(s) for providing precision correlation / covariance vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
US9684509B2 (en) 2013-11-15 2017-06-20 Qualcomm Incorporated Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods
US9977676B2 (en) 2013-11-15 2018-05-22 Qualcomm Incorporated Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
US20150143076A1 (en) * 2013-11-15 2015-05-21 Qualcomm Incorporated VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS
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
US9792118B2 (en) * 2013-11-15 2017-10-17 Qualcomm Incorporated Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
GB2522990B (en) * 2013-12-20 2016-08-03 Imagination Tech Ltd Processor with virtualized instruction set architecture and methods
US10671387B2 (en) 2014-06-10 2020-06-02 International Business Machines Corporation Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data
US20160026607A1 (en) * 2014-07-25 2016-01-28 Qualcomm Incorporated Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
US9519460B1 (en) 2014-09-25 2016-12-13 Cadence Design Systems, Inc. Universal single instruction multiple data multiplier and wide accumulator unit
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
CN104880694A (zh) * 2015-06-04 2015-09-02 南车株洲电力机车研究所有限公司 一种信号处理的方法及系统
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
EP3125109B1 (en) 2015-07-31 2019-02-20 ARM Limited Vector length querying instruction
GB2540943B (en) * 2015-07-31 2018-04-11 Advanced Risc Mach Ltd Vector arithmetic instruction
US10101997B2 (en) 2016-03-14 2018-10-16 International Business Machines Corporation Independent vector element order and memory byte order controls
US10459700B2 (en) 2016-03-14 2019-10-29 International Business Machines Corporation Independent vector element order and memory byte order controls
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply
GB2548908B (en) * 2016-04-01 2019-01-30 Advanced Risc Mach Ltd Complex multiply instruction
CN107315715B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
WO2018012828A1 (ko) * 2016-07-13 2018-01-18 김태형 다기능 연산 장치 및 고속 푸리에 변환 연산 장치
GB2553783B (en) * 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US11023231B2 (en) * 2016-10-01 2021-06-01 Intel Corporation Systems and methods for executing a fused multiply-add instruction for complex numbers
KR101971173B1 (ko) * 2016-11-23 2019-04-22 주식회사 모르미 병렬 처리부 및 병렬 처리 장치
US10216479B2 (en) * 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
EP3336692B1 (en) 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
EP3336691B1 (en) 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
GB2558220B (en) * 2016-12-22 2019-05-15 Advanced Risc Mach Ltd Vector generating instruction
US10846087B2 (en) * 2016-12-30 2020-11-24 Intel Corporation Systems, apparatuses, and methods for broadcast arithmetic operations
GB2560159B (en) 2017-02-23 2019-12-25 Advanced Risc Mach Ltd Widening arithmetic in a data processing apparatus
JP7148526B2 (ja) * 2017-02-23 2022-10-05 アーム・リミテッド データ処理装置におけるベクトルによる要素演算
CN107085827B (zh) * 2017-04-27 2020-06-16 中国电子科技集团公司第二十八研究所 基于硬件平台实现的超分辨力图像复原方法
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
WO2019005130A1 (en) * 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND ACCUMULATION OF COMPLEX VALUES
KR101981109B1 (ko) * 2017-07-05 2019-05-22 울산과학기술원 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기
GB2564696B (en) * 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing
US11042375B2 (en) * 2017-08-01 2021-06-22 Arm Limited Counting elements in data items in a data processing apparatus
US10749502B2 (en) * 2017-09-29 2020-08-18 Intel Corporation Apparatus and method for performing horizontal filter operations
US10795676B2 (en) 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US10664277B2 (en) 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US11243765B2 (en) 2017-09-29 2022-02-08 Intel Corporation Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US20190102186A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Systems, apparatuses, and methods for multiplication and accumulation of vector packed unsigned values
US20190102198A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Systems, apparatuses, and methods for multiplication and accumulation of vector packed signed values
US10552154B2 (en) 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US11074073B2 (en) * 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US10795677B2 (en) 2017-09-29 2020-10-06 Intel Corporation Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
KR102586173B1 (ko) * 2017-10-31 2023-10-10 삼성전자주식회사 프로세서 및 그 제어 방법
US10346163B2 (en) 2017-11-01 2019-07-09 Apple Inc. Matrix computation engine
US20190196829A1 (en) * 2017-12-21 2019-06-27 Elmoustapha Ould-Ahmed-Vall Apparatus and method for vector multiply and subtraction of signed doublewords
US10705839B2 (en) * 2017-12-21 2020-07-07 Intel Corporation Apparatus and method for multiplying, summing, and accumulating sets of packed bytes
US10970078B2 (en) 2018-04-05 2021-04-06 Apple Inc. Computation engine with upsize/interleave and downsize/deinterleave options
US10642620B2 (en) 2018-04-05 2020-05-05 Apple Inc. Computation engine with strided dot product
US10884976B2 (en) 2018-05-22 2021-01-05 Morumi Co., Ltd. Parallel processing unit and device for parallel processing
CN109214273A (zh) * 2018-07-18 2019-01-15 平安科技(深圳)有限公司 人脸图像比对方法、装置、计算机设备及存储介质
US10754649B2 (en) 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes
WO2020027785A1 (en) * 2018-07-31 2020-02-06 The University Of Tokyo Data processing apparatus
US10831488B1 (en) 2018-08-20 2020-11-10 Apple Inc. Computation engine with extract instructions to minimize memory access
CA3135145A1 (en) * 2019-03-28 2020-10-01 Kabushiki Kaisha Toshiba Information processing device, information processing system, information processing method, storage medium, and program
US20200341772A1 (en) * 2019-04-29 2020-10-29 DeGirum Corporation Efficient Architectures For Deep Learning Algorithms
US11347511B2 (en) * 2019-05-20 2022-05-31 Arm Limited Floating-point scaling operation
WO2020247077A1 (en) * 2019-06-04 2020-12-10 Micron Technology, Inc. Bit string accumulation in memory array periphery
US11481223B2 (en) * 2019-08-08 2022-10-25 Blaize, Inc. Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions
US11416261B2 (en) * 2019-08-08 2022-08-16 Blaize, Inc. Group load register of a graph streaming processor
US11947959B2 (en) * 2019-09-10 2024-04-02 Micron Technology, Inc. Re-using processing elements of an artificial intelligence processor
US11762658B2 (en) 2019-09-24 2023-09-19 Advanced Micro Devices, Inc. Matrix multiplication unit with flexible precision operations
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US11010862B1 (en) 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
US11307860B1 (en) 2019-11-22 2022-04-19 Blaize, Inc. Iterating group sum of multiple accumulate operations
US12061910B2 (en) * 2019-12-05 2024-08-13 International Business Machines Corporation Dispatching multiply and accumulate operations based on accumulator register index number
EP4449241A2 (en) * 2021-12-15 2024-10-23 Flex Logix Technologies, Inc. Multiply-accumulate with broadcast data
CN118946874A (zh) * 2022-02-21 2024-11-12 弗莱克斯-罗技克斯技术公司 广播数据、共享权重乘法-累加
US12236245B2 (en) 2023-06-12 2025-02-25 Blaize Inc. Group thread dispatch for graph streaming processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596760A (en) * 1991-12-09 1997-01-21 Matsushita Electric Industrial Co., Ltd. Program control method and program control apparatus
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
CN1573686A (zh) * 2003-06-03 2005-02-02 松下电器产业株式会社 信息处理装置以及机器语言程序变换装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3658072B2 (ja) * 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
JP3767085B2 (ja) * 1996-09-04 2006-04-19 セイコーエプソン株式会社 情報処理回路及びマイクロコンピュータ
GB2317469B (en) * 1996-09-23 2001-02-21 Advanced Risc Mach Ltd Data processing system register control
DE69832985T2 (de) * 1998-10-06 2006-08-17 Texas Instruments Inc., Dallas Multiplizier-Akkumulatorschaltungen
JP2000187583A (ja) * 1998-12-22 2000-07-04 Toshiba Corp プロセッサ
FR2790322A1 (fr) * 1999-02-26 2000-09-01 Koninkl Philips Electronics Nv Recepteur, circuit programmable et procede de calcul de filtres numeriques
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置
US20020010848A1 (en) * 2000-05-29 2002-01-24 Shoichi Kamano Data processing system
US7054895B2 (en) * 2001-06-21 2006-05-30 Ligos Corporation System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
JP4141673B2 (ja) * 2001-10-18 2008-08-27 シャープ株式会社 データ処理装置
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7480690B2 (en) * 2003-12-29 2009-01-20 Xilinx, Inc. Arithmetic circuit with multiplexed addend inputs
US7434034B2 (en) * 2004-09-13 2008-10-07 Ati Technologies Inc. SIMD processor executing min/max instructions
JP4349265B2 (ja) * 2004-11-22 2009-10-21 ソニー株式会社 プロセッサ
EP2000973B1 (en) * 2006-03-30 2013-05-01 NEC Corporation Parallel image processing system control method and apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596760A (en) * 1991-12-09 1997-01-21 Matsushita Electric Industrial Co., Ltd. Program control method and program control apparatus
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
CN1573686A (zh) * 2003-06-03 2005-02-02 松下电器产业株式会社 信息处理装置以及机器语言程序变换装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
a programmable DSP for low-power,low-complexity baseband processing;Naess;《NTNU》;20061231;正文第20-29页 *

Also Published As

Publication number Publication date
GB2464292A (en) 2010-04-14
IL211767A0 (en) 2011-06-30
EP2350813B1 (en) 2017-04-12
KR20110090915A (ko) 2011-08-10
TW201020805A (en) 2010-06-01
WO2010040977A1 (en) 2010-04-15
GB2464178B (en) 2012-08-08
JP2012505455A (ja) 2012-03-01
JP5619751B2 (ja) 2014-11-05
GB0818491D0 (en) 2008-11-12
US8443170B2 (en) 2013-05-14
EP2350813A1 (en) 2011-08-03
GB0915208D0 (en) 2009-10-07
GB2464178A (en) 2010-04-14
CN102197369A (zh) 2011-09-21
US20100274990A1 (en) 2010-10-28

Similar Documents

Publication Publication Date Title
CN102197369B (zh) 用于执行simd乘法-累积运算的装置及方法
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
Waidyasooriya et al. OpenCL-based FPGA-platform for stencil computation and its optimization methodology
JP2007519052A (ja) 命令制御式データ処理装置
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
CN1853164B (zh) 用于开发dsp编译器构件块的组合方法
JP2019511056A (ja) 複素数乗算命令
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
Turkington et al. Outer loop pipelining for application specific datapaths in FPGAs
JP2018005369A (ja) 演算処理装置及び演算処理装置の制御方法
CN101615113A (zh) 一条指令完成一次蝶形运算的微处理器实现方法
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
Ezer Xtensa with user defined DSP coprocessor microarchitectures
CN112074810B (zh) 并行处理设备
Javaid et al. Optimal synthesis of latency and throughput constrained pipelined mpsocs targeting streaming applications
Ye et al. High level tranforms toreduce energy consumption of signal and image processing operators
JP2009025973A (ja) 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体
Togawa et al. A hardware/software cosynthesis system for digital signal processor cores
Cheema et al. Application-specific SIMD synthesis for reconfigurable architectures
CN102231624A (zh) 面向向量处理器的浮点复数块fir的向量化实现方法
Ahmad et al. TLS: A tabu search based scheduling algorithm for behavioral synthesis of functional pipelines
KR102025694B1 (ko) 재구성 가능한 프로세서의 검증 방법
Galanis et al. Speedups in embedded systems with a high-performance coprocessor datapath
Bhargavi et al. Optimizing LU Decomposition with RISC-V Based Hardware Acceleration
Wenqi et al. Speeding Up Convolution on Multi-cluster DSP in Deep Learning Scenarios

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SWITZERLAND U-BLOX HOLDING AG

Free format text: FORMER OWNER: ADVANCED RISC MACHINES LTD.

Effective date: 20141224

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20141224

Address after: Swiss Tulsa

Applicant after: Ublox AG

Address before: Cambridge County

Applicant before: Advanced Risc Machines Ltd.

C14 Grant of patent or utility model
GR01 Patent grant