CN115913176A - 用于iir滤波器的滤波处理的处理器、组件、设备和方法 - Google Patents
用于iir滤波器的滤波处理的处理器、组件、设备和方法 Download PDFInfo
- Publication number
- CN115913176A CN115913176A CN202211650474.1A CN202211650474A CN115913176A CN 115913176 A CN115913176 A CN 115913176A CN 202211650474 A CN202211650474 A CN 202211650474A CN 115913176 A CN115913176 A CN 115913176A
- Authority
- CN
- China
- Prior art keywords
- coefficient
- matrix
- order
- input
- multiply
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本申请涉及一种用于IIR滤波器的滤波处理的处理器、组件、设备和方法。该处理器包括第一配置寄存器、第二配置寄存器、通用寄存器和矩阵乘法累加单元。通用寄存器对于IIR滤波器的各阶的系数矩阵的各行系数,依序读取并存储该行系数。矩阵乘法累加单元在第一配置寄存器配置广播模式时,获取存储的当前行系数对应的同个输入元素;在第一配置寄存器配置复制模式时,复制所存储的当前行系数;将当前行系数并行与对应的输入元素相乘得到对应乘积;对各行系数的乘积结果逐次累加以得到最终的输出值,使得每次得出至少4个顺序采样时刻的输出变量。如此,能够显著缩短IIR滤波运算的耗时,提供充分的加速效果。
Description
技术领域
本申请涉及无线通信领域的滤波器和滤波处理,更具体地,涉及用于IIR滤波器的滤波处理的处理器、组件、设备和方法。
背景技术
在数字信号处理领域,IIR滤波器与FIR滤波器相比,具有相位特性差的缺点,但它的结构简单、运算量小,具有经济、高效的特点,并且可以用较少的阶数获得很高的选择性,因此得到了广泛应用。IIR滤波器差分方程的一般表达式如下公式(a)所示:
其中,x(n)为输入序列,y(n)为输出序列,ai和bi表示滤波系数,N为IIR滤波器的阶数。IIR滤波器具有无限长度的单位脉冲响应,在结果上存在反馈回路,具有递归性,即IIR滤波器的输出序列不仅与过去时刻的输入有关,而且与过去时刻的输出有关,从如上公式(a)中也可以看到,这会导致信号滤波的计算效率不高。
业内一般通过CMSIS(即ARM CortexTM微控制器软件接口标准)中的如arm_biquad_cascade_df1_fast_q15函数来进行IIR滤波器的滤波处理运算,该函数利用二阶单元(Biquad)的级联实现。具体说来,arm_biquad_cascade_df1_fast_q15函数将滤波器的系数按照一定方式排序,按照顺序计算两个系数对应的乘法并进行累加,加速效果不足。尤其在需要处理视频、图像类的海量多媒体数据的应用场景下,加速效果不明显,计算效率存在改进空间。
发明内容
提供了本申请以解决现有技术中存在的上述缺陷。需要一种用于IIR滤波器的滤波处理的处理器、组件、设备和方法,其能够在需要处理视频、图像类的海量多媒体数据的应用场景下,相较CMSIS及其现有的IIR滤波计算方式能够显著缩短IIR滤波运算的耗时,提供充分的加速效果。
根据本申请的第一方案,提供了一种用于IIR滤波器的滤波处理的处理器。该处理器包括第一配置寄存器、第二配置寄存器、至少一个通用寄存器和矩阵乘法累加单元。第二配置寄存器用于配置输出数据的读出方式。所述第一配置寄存器用于配置包括矩阵乘法累加单元在内的算术逻辑单元的数据类型,以及配置输入数据到所述矩阵乘法累加单元的输入模式为复制模式或广播模式。所述至少一个通用寄存器配置为:对于IIR滤波器的各阶的系数矩阵的各行系数,依序读取并存储该行系数。所述矩阵乘法累加单元配置为,对于同个输入向量:以各行系数分别作为当前行系数,在所述第一配置寄存器配置输入模式为广播模式的情况下,获取所述当前行系数对应的所述输入向量中对应的单个输入元素;在所述第一配置寄存器配置输入模式为复制模式的情况下,复制所存储的当前行系数;将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积;对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量。这满足IIR滤波器的滤波系数的数据类型为q15类型时候的计算需求。
根据本申请的第二方案,提供了一种IIR滤波器组件,其包括根据本申请各个实施例的处理器。该处理器包括第一配置寄存器、第二配置寄存器、至少一个通用寄存器和矩阵乘法累加单元。第二配置寄存器用于配置输出数据的读出方式。所述第一配置寄存器用于配置包括矩阵乘法累加单元在内的算术逻辑单元的数据类型,以及配置输入数据到所述矩阵乘法累加单元的输入模式为复制模式或广播模式。所述至少一个通用寄存器配置为:对于IIR滤波器的各阶的系数矩阵的各行系数,依序读取并存储该行系数。所述矩阵乘法累加单元配置为,对于同个输入向量:以各行系数分别作为当前行系数,在所述第一配置寄存器配置输入模式为广播模式的情况下,获取所述当前行系数对应的所述输入向量中对应的单个输入元素;在所述第一配置寄存器配置输入模式为复制模式的情况下,复制所存储的当前行系数;将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积;对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量,这满足IIR滤波器的滤波系数的数据类型为q15类型时候的计算需求。
根据本申请的第三方案,提供了一种具有IIR滤波器组件的智能便携式设备。该智能便携式设备包括NPU,其配置为处理包括音频、视频和图像中的至少一种的多媒体数据。该智能便携式设备还包括根据本申请各个实施例的处理器,作为NPU协处理器。该处理器包括第一配置寄存器、第二配置寄存器、至少一个通用寄存器和矩阵乘法累加单元。第二配置寄存器用于配置输出数据的读出方式。所述第一配置寄存器用于配置包括矩阵乘法累加单元在内的算术逻辑单元的数据类型,以及配置输入数据到所述矩阵乘法累加单元的输入模式为复制模式或广播模式。所述至少一个通用寄存器配置为:对于IIR滤波器的各阶的系数矩阵的各行系数,依序读取并存储该行系数。所述矩阵乘法累加单元配置为,对于同个输入向量:以各行系数分别作为当前行系数,在所述第一配置寄存器配置输入模式为广播模式的情况下,获取所述当前行系数对应的所述输入向量中的单个输入元素;在所述第一配置寄存器配置输入模式为复制模式的情况下,复制所存储的当前行系数;将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积;对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量,这满足IIR滤波器的滤波系数的数据类型为q15类型时候的计算需求。
根据本申请的第四方案,提供了一种IIR滤波器的滤波处理方法。该滤波处理方法包括如下步骤。确定IIR滤波器的各阶的系数矩阵。依序读取并存储IIR滤波器的各阶的系数矩阵的各行系数。利用矩阵乘法累加单元,对于同个输入向量,以各行系数分别作为当前行系数,获取所述当前行系数对应的所述输入向量中的单个输入元素,将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积;对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量,这满足IIR滤波器的滤波系数的数据类型为q15类型时候的计算需求。
利用本申请各个实施例提供的用于IIR滤波器的滤波处理的处理器、组件、设备和方法,其预先将系数矩阵按行展开,配合所述矩阵乘法累加单元的配置,使得能够一次计算至少4个点积,这满足IIR滤波器的滤波系数的数据类型为q15类型时候的计算需求,并且能够直接累加,能够在需要智能便携式设备处理视频、图像类的海量多媒体数据的应用场景下,相较CMSIS及其现有的IIR滤波计算方式能够显著缩短IIR滤波运算的耗时,可缩短25%左右的耗时,提供充分的加速效果。
附图说明
下面将参照附图描述本发明的示例性实施例的特征、优势以及技术和工业意义,其中相同的附图标记表示相同的元件,并且其中:
图1示出根据本申请实施例的用于IIR滤波器的滤波处理的处理器的构造图;
图2示出根据本申请实施例的利用矩阵乘法累加单元执行的运算处理的流程图;
图3示出根据本申请实施例的由处理器执行IIR滤波器的加速滤波处理方法的流程图;以及
图4示出根据本申请实施例的IIR滤波器的滤波处理方法的流程图。
具体实施方式
为使本领域技术人员更好的理解本申请的技术方案,下面结合附图和具体实施方式对本申请作详细说明。下面结合附图和具体实施例对本申请的实施例作进一步详细描述,但不作为对本申请的限定。
本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分。“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。在附图中的箭头并不用于限定箭头所连接的步骤的执行顺序,各个实施例中步骤的执行顺序也可以用不同于箭头所示的其他顺序来执行,只要使得各个步骤逻辑上不产生矛盾即可。
图1示出根据本申请实施例的用于IIR滤波器的滤波处理的处理器的构造图。如图1所示,该处理器100包括第一配置寄存器101、第二配置寄存器102、至少一个通用寄存器103和矩阵乘法累加单元104。
例如,第一配置寄存器101和第二配置寄存器102可以是两个分立的全局配置寄存器,用于控制处理器100的操作。所述第一配置寄存器101主要用于配置包括矩阵乘法累加单元104在内的算术逻辑单元(ALU)的数据类型。算术逻辑单元(ALU)是能实现多组算术运算和逻辑运算的组合逻辑电路,本申请中的矩阵乘法累加单元104作为一种ALU,实现为能够执行矩阵乘法运算和累加加法运算的组合逻辑电路。具体说来,矩阵乘法累加单元104可以形成为运算基本单元乘法器和累加器的阵列,用于执行矩阵乘法运算,也就是并行的多个乘法运算,将矩阵乘法的乘积结果和累加器的值相加,再存入累加器。
第二配置寄存器102用于配置输出数据的读出方式,例如将输出数据打包为多少位的数等。
所述第一配置寄存器101还用于配置输入数据到所述矩阵乘法累加单元104的输入模式为复制模式或广播模式。所述至少一个通用寄存器103用于存储写入的数据,例如下文中的IIR滤波器的各阶的系数矩阵的各行系数等等。注意,输入向量不存入第一配置寄存器101中,而是直接广播到矩阵乘法累加单元104内做并行的乘法运算。
所述至少一个通用寄存器103配置为:对于IIR滤波器的各阶的系数矩阵的各行系数,依序读取并存储该行系数。如图2所示,所述矩阵乘法累加单元104配置为对于各个输入向量执行如下步骤,来完成该输入向量与系数矩阵的完整乘法运算。具体说来,对于同个输入向量来说,以各行系数分别作为当前行系数来执行步骤201。在步骤201,在所述第一配置寄存器101配置输入模式为广播模式的情况下,所述矩阵乘法累加单元104通过接收广播而获取当前行系数对应的所述输入向量中的单个输入元素,下文中会详述。注意,所述至少一个通用寄存器103可以预设两个数值,第一数值对应于A模式也就是所述广播模式,也可以称为A模式参数,第二数值对应于B模式也就是复制模式,也可以称为B模式参数。
在步骤202,所述矩阵乘法累加单元104在所述第一配置寄存器101配置输入模式为复制模式的情况下,复制所存储的当前行系数。在步骤203,所述矩阵乘法累加单元104将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积。在步骤204,所述矩阵乘法累加单元104对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量。这可以满足目前很多场景下广泛使用的IIR滤波器的滤波系数的数据类型Q15所需的计算要求。
具体说来,所述第一配置寄存器101可以使用A模式参数来控制输入向量的各个元素到矩阵乘法累加单元104的输入方式为广播模式,即所连接的矩阵乘法累加单元104内的值均通过广播同一个输入向量中的输入元素得来;可以使用B模式参数来控制系数矩阵到矩阵乘法累加单元104的输入方式为复制模式,即将所述至少一个通用寄存器103中存储的数据直接复制到所连接的矩阵乘法累加单元104中。
首先,由所述至少一个通用寄存器103读取系数矩阵的第一行系数,通过让第一配置寄存器101分别设置A模式参数和B模式参数,可以将同一个输入向量的第一个元素广播输入到矩阵乘法累加单元104并将第一行系数复制到矩阵乘法累加单元104中,执行并行的矩阵相乘,得到第一行系数对应的第一个乘积,存入累加器。然后,由所述至少一个通用寄存器103(可以是同个的通用寄存器103)再读取系数矩阵的第二行系数,再通过让第一配置寄存器101分别设置A模式参数和B模式参数,可以将该同个输入向量的下一个元素(作为第二行系数的共同的乘数)广播输入到矩阵乘法累加单元104并将第二行系数复制到矩阵乘法累加单元104中,执行并行的矩阵相乘,得到第二行系数对应的第二个乘积,与累加器的当前值累加,存入累加器。如此依序执行,直到至少一个通用寄存器103取完系数矩阵的所有行的系数,每行系数对应的乘积结果在矩阵乘法累加单元104中的对应位置进行累加,将最终的累加结果读出,即得到最终的输出变量。处理器100中的各个构件的上述操作和互动可以通过汇编指令来实现。
通过将IIR滤波器的系数矩阵展开为各行系数,设置通用寄存器103能够存下一行系数,配合矩阵乘法累加单元104高速读入各行系数和共同的输入变量,并执行各行系数与共同输入变量的并行矩阵乘法及累加运算,一次计算多个乘法,例如对于数据类型为Q15格式的情况则一次计算4个乘法,能够实现IIR滤波器的滤波处理的显著加速,例如,在数据类型为Q15格式时,所述至少一个通用寄存器为64位,可以一次读取并存储4个16位的数,恰好是一行4个系数,每次完整的乘法累加运算得出4个顺序采样时刻的输出变量。
具体说来,对IIR滤波器的滤波处理进行了改进,利用前两个时刻(对于当前时刻m来说是m-1和m-2)的输入xm-1、xm-2和输出ym-1、ym-2以及从当前时刻起n个时刻的输入xm~xm+n-1来表示从当前时刻起的n项输出ym~ym+n-1,来计算得到对应的系数矩阵,就可以让该系数矩阵直接用于同阶内后续的每个n项输出的计算,使得每次完整的乘法累加运算得出n个顺序采样时刻的输出变量。
在一些实施例中,对于同阶的每次完整的乘法累加运算,也就是对于同阶的每个输入变量来说,所述系数矩阵是相同的,且可以利用如下公式(1)来计算:
yn = b0xn + b1xn-1 + b2xn-2 – a1yn-1 – a2yn-2 公式(1)
其中,每次完整的乘法累加运算得出n个顺序采样时刻的输出变量,xn、xn-1和xn-2分别为n、n-1和n-2时刻的输入变量,yn、yn-1和yn-2分别为n、n-1和n-2时刻的输出变量,b0、b1、b2、a1和a2为该阶下的滤波系数,所述系数矩阵具体通过如下步骤来计算:通过让公式(1)中未出现的变量的系数设为0来计算得到y0和y1的值,然后代入公式(1)逐次计算,从而得到从y0、y1以及x0到xn+1共n+4个输入变量到n个时刻的输出变量y2到yn+1的用滤波系数b0、b1、b2、a1和a2表示的映射矩阵,也就是当前时刻m=2的映射矩阵,作为所述系数矩阵。该系数矩阵适用于同阶的当前时刻m=2以后的各个时刻的输出变量的计算,直到同阶的所有输出变量(例如N个输出变量)计算完,进行到下一阶的乘法累加运算。对于当前时刻m=2以后的各个时刻的输出变量的计算采用相同的系数矩阵,而只是迭代改变输入向量,这是考虑到对于同阶,滤波系数固定,且用前两个时间的输入变量和输出变量表示当前和后面时间的输出变量的映射关系(影响作用)对于推进的不同时刻来说也是稳定不变的,从而做出的简化高效设计,显著提升了加速效果。
具体说来,对于当前时刻m=2来说,当前次就是第一次n个输出变量的的完整的乘法累加运算,该运算可以用公式(2)来表示:
等号左侧的第一项为这次乘法累加运算的同个输入向量,维度为[1,n+4],等号左侧的第二项为系数矩阵,维度为[n+4,n],可以看到对于系数矩阵的各行系数来说,相乘的为同一个输入向量中对应的各个输入元素,依次为y0(对应第一行系数)、y1(对应第二行系数)、x0(对应第三行系数)、x1(对应第四行系数)等,等号右侧的即为一次完整乘积累加运算的最终输出向量,维度为[1,n],在当前时刻为2且n=4时,也就是数据类型为Q15时,一次完整乘积累加运算的最终输出向量为{y2 y3 y4 y5},即时刻2、3、4、5的输出。这相对于现有的CMSIS及其IIR滤波计算方式耗时能够缩短25%左右。
在一些实施例中,可以在IIR滤波器组件中包括根据本申请各个实施例所述的处理器100,以高效且迅速地执行IIR滤波器组件的IIR滤波处理运算。
在一些实施例中,所述处理器100可以在各种具有IIR滤波器组件的智能便携式设备中广泛使用。该智能便携式设备可以包括但不限于耳机、手表、音响、眼镜、头盔中的至少一种,包括NPU(嵌入式神经网络处理器),采用数据驱动并行计算的架构,其配置为处理包括音频、视频和图像中的至少一种的多媒体数据,以应对用户对处理音频、视频、图像类的海量多媒体数据的处理负荷和处理效率的日渐增加的需求。在一些实施例中,这些智能便携式设备可协助用户在VR(虚拟现实)和AR(增强现实)环境中自如地处理海量多媒体数据,以及各种交互数据,以得到身临其境的真实感受。在这些智能便携式设备中,通常运行总线受限系统,本申请各个实施例的处理器100可以作为NPU协处理器,以高效且迅速地应对各种并行乘法累加的工作负载。
在一些实施例中,所述数据类型包括Q15格式和Q7格式,在IIR滤波器的滤波系数的数据类型为Q15格式时,每次完整的乘法累加运算得出4个顺序采样时刻的输出变量,而数据类型为Q7格式时,每次完整的乘法累加运算得出8个顺序采样时刻的输出变量。所述至少一个通用寄存器103为64位,这样的存储量对于Q15格式来说,每次并行乘积累加只需动用1个通用寄存器103就够了,对于IIR滤波器的滤波系数的数据类型为Q7时,也仅需动用1个通用寄存器就够了。在一些实施例中,所述矩阵乘法累加单元至少包括4个累加器以并行执行至少4个点积,从而满足Q15格式的数据类型的加速需求。
在一些实施例中,所述至少一个通用寄存器包括8个64位的通用寄存器,所述矩阵乘法累加单元包括64个累加器以能够并行计算多达64个点积。如此,可以为处理器100就存储空间和并行乘法累加运算提供裕量,以便除了IIR滤波器的滤波处理以外,还可以用于执行其他的并行乘法累加运算,或者其他数据类型的滤波处理(例如Q7格式等需要并行执行8个甚至更多的点积运算累加),以及存储其他运行参数等。
在一些实施例中,不同阶具有独立且不同的系数矩阵,各阶的系数矩阵基于该阶的滤波系数来计算。
在一些实施例中,对于同阶的每次完整的乘法累加运算,所述系数矩阵是相同的,且利用所述公式(1)来计算:
yn = b0xn + b1xn-1 + b2xn-2 – a1yn-1 – a2yn-2 公式(1)
其中,每次完整的乘法累加运算得出n个顺序采样时刻的输出变量,xn、xn-1和xn-2分别为n、n-1和n-2时刻的输入变量,yn、yn-1和yn-2分别为n、n-1和n-2时刻的输出变量,b0、b1、b2、a1和a2为该阶下的滤波系数,所述系数矩阵具体通过如下步骤来计算:通过让公式(1)中未出现的变量的系数设为0来计算得到y0和y1的值,然后代入公式(1)逐次计算,从而得到从y0、y1以及x0到xn+1共n+4个输入变量到n个时刻的输出变量y2到yn+1的用滤波系数b0、b1、b2、a1和a2表示的映射矩阵,作为所述系数矩阵。
在一些实施例中,对于多阶的IIR滤波处理,所述矩阵乘法累加单元进一步配置为,对于当前阶:基于上一阶最后两个时刻N-2、N-1的输入变量xN-2、xN-1和上一阶最后两个时刻的输出变量yN-2、yN-1,并以上一阶计算得到的输出变量y0到yN-1作为当前阶的输入变量x0到xN-1,利用本阶的系数矩阵执行乘法累加计算,使得每次完整的乘法累加运算得出n个顺序采样时刻的输出变量,其中,N为上一阶的采样时刻总数。
下面结合图3对多阶的IIR滤波处理过程进行详细说明。
在步骤301,可以利用公式(1)得到输出变量y0和y1。具体说来,对于各阶,b0、b1、b2、a1和a2为该阶下的滤波系数,不同阶的滤波系数会不同,相应地,为各阶基于该阶下的滤波系数来得到输出变量y0和y1,以在步骤302中用于预先计算得到所有阶的系数矩阵。具体说来,各阶下的滤波系数b0、b1、b2、a1和a2,为了便于描述,统一表示为b0、b1、b2、a1和a2,其数值可以在不同阶之间不同。可以将公式(1)中未出现的变量系数设为0,令n=0,则y0=b0x0,进一步地,令n=1,则y1=b0x1+b1x0-a1y0。
在步骤302,可以利用各阶的滤波系数b0、b1、b2、a1和a2,以及输入x0~xn+1和输出y0、y1表示第一个n项输出y2~yn+1,预先计算该阶的系数矩阵,类似地可以预先计算得到所有阶的系数矩阵。
根据公式(1),可以得到y2的计算表达式如下公式(3)所示:
y2 = b0x2 + b1x1 + b2x0 – a1y1 – a2y0 公式(3)
根据公式(1),可以得到y3的计算表达式如下公式(4)所示:
y3 = b0x3 + b1x2 + b2x1 – a1y2 – a2y1 公式(4),
可以将公式(3)代入公式(4),得到y3的用输入变量x0~x3和输出变量y0、y1以及滤波系数b0、b1、b2、a1和a2的计算表达式,如下公式(5)所示:
y3=b0x3+b1x2+b2x1–a1(b0x2+b1x1+b2x0–a1y1–a2y0)–a2y1公式(5)。
如此依序将yt的用输入变量x0~xt和输出变量y0、y1以及滤波系数b0、b1、b2、a1和a2的计算表达式,代入yt+1=b0xt+1+b1xt+b2xt-1–a1yt–a2yt-1,t=2,3,……,n,最终可以得到由y0、y1以及x0到xn+1共n+4个变量和滤波系数b0、b1、b2、a1和a2表示的n个时刻的输出值y2到yn+1的计算公式,该计算公式可以整理为由滤波系数b0、b1、b2、a1和a2表示的系数矩阵。例如,回到公式(2),等号左侧的第二项为系数矩阵,维度为[n+4,n],该系数矩阵的各个元素都仅用滤波系数b0、b1、b2、a1和a2表示。
在步骤303,将第一阶的系数矩阵依序输入到通用寄存器中,用通用寄存器中的行系数与对应的变量做并行乘法,直至所有的变量x0~xn+1和y0、y1做完乘法计算为止,并且该系数矩阵保持不变,保留上一次计算最后两个时刻的输入xn、xn+1和输出yn、yn+1,继续与下一轮n个时刻的输入组成长度为n+4的数组,按照上述方式进行迭代计算,直至取完所有输入数据完成计算为止。
例如,下一轮的n个时刻的输出变量可以根据公式(6)来计算:
注意,公式(6)中等号左边第二项就是系数矩阵,该系数矩阵与公式(2)中对于上一轮(第一轮)n个时刻的输出变量的计算使用的系数矩阵是相同的,这显著加快了运算速度。
在步骤304,对于多阶的IIR滤波,保留上一阶最后两个时刻的输入xN-2、xN-1和输出yN-2、yN-1,并将上一阶计算得到的输出y0~yN-1作为下一阶的输入x0~xN-1,利用本阶的系数矩阵,继续按照上一步骤进行计算,直至完成该阶的计算为止。完成本阶的计算之后,继续按照这种方式进入下一阶的计算,直到完成所有阶的滤波处理运算为止。
图4示出根据本申请实施例的IIR滤波器的滤波处理方法的流程图。如图4所示,在步骤401,确定IIR滤波器的各阶的系数矩阵。
在步骤402,依序读取并存储IIR滤波器的各阶的系数矩阵的各行系数。
在步骤403,利用矩阵乘法累加单元,对于同个输入向量,以各行系数分别作为当前行系数,获取当前行系数对应的所述输入向量中的单个输入元素,将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积。
在步骤404,利用矩阵乘法累加单元,对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量。这可以满足目前很多场景下广泛使用的IIR滤波器的滤波系数的数据类型Q15所需的计算要求。
通过以上滤波处理方法,预先为同阶的滤波运算适用同一个系数矩阵,将系数矩阵按行展开,配合所述矩阵乘法累加单元的配置,使得能够一次计算至少4个点积,并且能够直接累加,能够在需要处理视频、图像类的海量多媒体数据的应用场景下,相较CMSIS及其现有的IIR滤波计算方式能够显著缩短IIR滤波运算的耗时,可缩短25%左右的耗时,提供充分的加速效果。
根据本申请各个实施例结合处理器、组件、装置和设备描述的处理过程的各个步骤也可以独立地或者组合地结合于此,作为配置方法的实施例,在此不赘述。
此外,尽管已经在本文中描述了示例性实施例,其范围包括任何和所有基于本申请的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,真正的范围和精神由以下权利要求以及其等同物的全部范围所指示。
以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本申请。这不应解释为一种不要求保护的申请的特征对于任一权利要求是必要的意图。相反,本申请的主题可以少于特定的申请的实施例的全部特征。从而,权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本发明的范围应参照所附权利要求以及这些权利要求赋权的等同形式的全部范围来确定。
以上实施例仅为本申请的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
Claims (10)
1.一种用于IIR滤波器的滤波处理的处理器,其特征在于,包括第一配置寄存器、第二配置寄存器、至少一个通用寄存器和矩阵乘法累加单元,
第二配置寄存器用于配置输出数据的读出方式;
所述第一配置寄存器用于配置包括矩阵乘法累加单元在内的算术逻辑单元的数据类型,以及配置输入数据到所述矩阵乘法累加单元的输入模式为复制模式或广播模式;
所述至少一个通用寄存器配置为:对于IIR滤波器的各阶的系数矩阵的各行系数,依序读取并存储该行系数;
所述矩阵乘法累加单元配置为,对于同个输入向量:以各行系数分别作为当前行系数,在所述第一配置寄存器配置输入模式为广播模式的情况下,获取所述当前行系数对应的所述输入向量中的单个输入元素;在所述第一配置寄存器配置输入模式为复制模式的情况下,复制所存储的当前行系数;将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积;对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量。
2.根据权利要求1所述的处理器,其特征在于,所述处理器为NPU协处理器。
3.根据权利要求1所述的处理器,其特征在于,所述至少一个通用寄存器为64位,所述数据类型包括Q15格式和Q7格式,在所述IIR滤波器的滤波系数的数据类型为Q15格式时,每次完整的乘法累加运算得出4个顺序采样时刻的输出变量,而在所述IIR滤波器的滤波系数的数据类型为Q7格式时,每次完整的乘法累加运算得出8个顺序采样时刻的输出变量。
4.根据权利要求1所述的处理器,其特征在于,对于同阶的每次完整的乘法累加运算,所述系数矩阵是相同的,且利用如下公式(1)来计算:
yn = b0xn + b1xn-1 + b2xn-2 – a1yn-1 – a2yn-2 公式(1)
其中,每次完整的乘法累加运算得出n个顺序采样时刻的输出变量,xn、xn-1和xn-2分别为n、n-1和n-2时刻的输入变量,yn、yn-1和yn-2分别为n、n-1和n-2时刻的输出变量,b0、b1、b2、a1和a2为该阶下的滤波系数,所述系数矩阵具体通过如下步骤来计算:通过让公式(1)中未出现的变量的系数设为0来计算得到y0和y1的值,然后代入公式(1)逐次计算,从而得到从y0、y1以及x0到xn+1共n+4个输入变量到n个时刻的输出变量y2到yn+1的用滤波系数b0、b1、b2、a1和a2表示的映射矩阵,作为所述系数矩阵。
5.根据权利要求4所述的处理器,其特征在于,不同阶具有独立且不同的系数矩阵,各阶的系数矩阵基于该阶的滤波系数来计算。
6.根据权利要求4所述的处理器,其特征在于,对于多阶的IIR滤波处理,所述矩阵乘法累加单元进一步配置为,对于当前阶:基于上一阶最后两个时刻N-2、N-1的输入变量xN-2、xN-1和上一阶最后两个时刻的输出变量yN-2、yN-1,并以上一阶计算得到的输出变量y0到yN-1作为当前阶的输入变量x0到xN-1,利用本阶的系数矩阵执行乘法累加计算,使得每次完整的乘法累加运算得出n个顺序采样时刻的输出变量,其中,N为上一阶的采样时刻总数。
7.根据权利要求4所述的处理器,其特征在于,所述矩阵乘法累加单元至少包括4个累加器以并行执行至少4个点积。
8.一种IIR滤波器组件,其包括根据权利要求1-7中任何一项所述的处理器。
9.一种具有IIR滤波器组件的智能便携式设备,其特征在于,包括:
NPU,其配置为处理包括音频、视频和图像中的至少一种的多媒体数据;以及
根据权利要求1-7中任何一项所述的处理器,作为NPU协处理器。
10.一种IIR滤波器的滤波处理方法,其特征在于,包括如下步骤:
确定IIR滤波器的各阶的系数矩阵;
依序读取并存储IIR滤波器的各阶的系数矩阵的各行系数;
利用矩阵乘法累加单元,对于同个输入向量,
以各行系数分别作为当前行系数,获取当前行系数对应的所述输入向量中的单个输入元素,将当前行系数并行与对应的输入元素相乘得到当前行系数的对应乘积;
对各行系数的乘积结果进行逐次累加以得到最终的输出值,使得每次完整的乘法累加运算得出至少4个顺序采样时刻的输出变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211650474.1A CN115913176A (zh) | 2022-12-21 | 2022-12-21 | 用于iir滤波器的滤波处理的处理器、组件、设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211650474.1A CN115913176A (zh) | 2022-12-21 | 2022-12-21 | 用于iir滤波器的滤波处理的处理器、组件、设备和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115913176A true CN115913176A (zh) | 2023-04-04 |
Family
ID=86485900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211650474.1A Pending CN115913176A (zh) | 2022-12-21 | 2022-12-21 | 用于iir滤波器的滤波处理的处理器、组件、设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115913176A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116961622A (zh) * | 2023-09-21 | 2023-10-27 | 灿芯半导体(苏州)有限公司 | 一种可动态调整计算速度的iir滤波器 |
-
2022
- 2022-12-21 CN CN202211650474.1A patent/CN115913176A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116961622A (zh) * | 2023-09-21 | 2023-10-27 | 灿芯半导体(苏州)有限公司 | 一种可动态调整计算速度的iir滤波器 |
CN116961622B (zh) * | 2023-09-21 | 2023-12-26 | 灿芯半导体(苏州)有限公司 | 一种可动态调整计算速度的iir滤波器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111758106B (zh) | 用于大规模并行神经推理计算元件的方法和系统 | |
CN111465924B (zh) | 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法 | |
US6901422B1 (en) | Matrix multiplication in a vector processing system | |
JPS6125188B2 (zh) | ||
Dawid et al. | CORDIC algorithms and architectures | |
CN105260773A (zh) | 一种图像处理装置以及图像处理方法 | |
TWI780116B (zh) | 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN115913176A (zh) | 用于iir滤波器的滤波处理的处理器、组件、设备和方法 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
US20200104669A1 (en) | Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations | |
JP2960086B2 (ja) | 最小2乗平均アルゴリズムを実施するためのパイプライン式プロセッサ | |
CN112528219A (zh) | 存储器装置及其运算方法、计算设备 | |
EP3794443A1 (en) | System and method of loading and replication of sub-vector values | |
CN111242286A (zh) | 一种数据格式变换方法、装置及计算机可读存储介质 | |
US20210295140A1 (en) | Neural network processing | |
CN114764615A (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
CN111125617A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2000039926A1 (en) | Efficient convolution method and apparatus | |
CN112765540B (zh) | 数据处理方法、装置及相关产品 | |
CN112784951B (zh) | Winograd卷积运算方法及相关产品 | |
CN111222090A (zh) | 卷积计算模块、神经网络处理器、芯片和电子设备 | |
CN114022366B (zh) | 基于数据流架构的图像尺寸调整装置、调整方法及设备 | |
CN112766471B (zh) | 运算装置及相关产品 | |
US20230039892A1 (en) | Operation apparatus |
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 |