CN113258902B - 一种处理器、滤波方法及相关设备 - Google Patents

一种处理器、滤波方法及相关设备 Download PDF

Info

Publication number
CN113258902B
CN113258902B CN202110476078.0A CN202110476078A CN113258902B CN 113258902 B CN113258902 B CN 113258902B CN 202110476078 A CN202110476078 A CN 202110476078A CN 113258902 B CN113258902 B CN 113258902B
Authority
CN
China
Prior art keywords
filtering
memory
input samples
stage
output result
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
CN202110476078.0A
Other languages
English (en)
Other versions
CN113258902A (zh
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.)
Ruisixinke Shenzhen Technology Co ltd
Original Assignee
Ruisixinke Shenzhen Technology Co ltd
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 Ruisixinke Shenzhen Technology Co ltd filed Critical Ruisixinke Shenzhen Technology Co ltd
Priority to CN202110476078.0A priority Critical patent/CN113258902B/zh
Publication of CN113258902A publication Critical patent/CN113258902A/zh
Application granted granted Critical
Publication of CN113258902B publication Critical patent/CN113258902B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/04Recursive filters

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开了一种处理器、滤波方法及相关设备,其中处理器包括:第一存储器,用于存储目标滤波数据,目标滤波数据包括N个输入样本、以及对N个输入样本进行M级滤波所对应的M组滤波系数;控制器,用于根据M与X之间的大小关系,将第一存储器中的N个输入样本、M组滤波系数调度至运算器中;运算器,用于基于N个输入样本和M组滤波系数,计算得到N个输入样本经过M级滤波的最终输出结果,并存储至第一存储器中;其中,当X小于M时,X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;第二存储器,用于存储N个输入样本经过第i级滤波的中间输出结果。采用本申请,可以在通用处理器中实现灵活、高效的滤波功能。

Description

一种处理器、滤波方法及相关设备
技术领域
本发明涉及处理器技术领域,尤其涉及一种处理器、滤波方法及相关设备。
背景技术
滤波器通常在数据或信号处理中使用,可以用于改变数据或信号,通常通过移除数据或信号的不期望的成分或部分,例如来改善数据或信号的质量、移除噪声或干扰成分、增强或引入数据或信号的某些属性等。
无限脉冲响应滤波器(Infinite impulse response filters,IIR)是数字信号处理的重要方法,是低通滤波的主要方法,常用于数字音频处理,包括但不限于耳机、助听器、音响、车载音频系统和主动降噪等算法。
双二阶滤波器是双二阶(两个极点和两个零点)的IIR滤波器,是最常用的滤波器之一。考虑到更高阶数的滤波器对系数敏感,双二阶可以单独使用,或者在更复杂的滤波器中作为基本的构建单元。IIR滤波通常是多块(Section)的,各个Section之间是串行的。一个IIR块(Section)的实现如图1所示,图1为现有技术中一种带负反馈的递归型滤波器的原理图,通过二阶差分方程可以表示为:y(n)=b0*xn+b1*x(n-1)+b2*x(n-2)-a1*y(n-1)-a2*y(n-2)。其中,{b0,b1,b2,a1,a2}是IIR系数,是提前由算法仿真确定出来的;{xn,x(n-1),x(n-2)}是输入序列,例如,在音频领域,可以是采样数据,也可以是经过其他滤波(如高通滤波)后的调制数据。而xn是当前时刻的输入,x(n-1)是前一个时刻的输入,x(n-2)前两个时刻的输入。{y(n-1),y(n-2)}是当前Section的输出信号。因为IIR是递归结构,所以较早时刻的输出,同时也是当前时刻的输入。其中,y(n-1)是前一个时刻的输出,y(n-2)是前两个时刻的输出。
在现有技术中,可以实现不同Section的并行处理,但是通用性较差。例如,M个Section是固定在芯片中的。而在数字信号处理,尤其是音频处理应用中,一般会有多个IIR低通滤波在用。这种情况下,一般M是变化的,当M变化时,现有技术不能满足灵活变化的需求。此外,现有技术中的芯片面积、功耗和成本都比较大,不适合在应用类产品中应用。
发明内容
本发明实施例提供一种处理器、滤波方法及相关设备,以在通用处理器中实现灵活、高效的滤波功能。
第一方面,本发明实施例提供了一种处理器,可包括:控制器、耦合于所述控制器的运算器、第一存储器和第二存储器,所述运算器包括X个运算单元,X为大于0的整数;
所述第一存储器,用于存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
所述控制器,用于根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
所述运算器,用于基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2;
所述第二存储器,用于存储所述N个输入样本经过第i级滤波的中间输出结果。
本发明实施例,提供了一种可实现高效、灵活多级滤波的处理器,具体地包括针对硬件以及软件的设计。其中,从硬件角度,本发明实施例通过复用当前通用处理器中已有的控制器、向量寄存器列表(即第一存储器)和运算器等部件用于逻辑控制和运算,且在处理器中增加中间结果寄存器(即第二存储器)用于暂存多级滤波的中间输出结果;从软件角度,控制器根据M与X之间的大小关系将待滤波的输入样本以及相应的滤波系数调度至运算器中进行运算,并控制将各级滤波的中间输出结果存储至新增的中间结果寄存器中,使得每级滤波可基于上一级滤波的中间输出结果作为输入,从而实现递归计算。其中,在控制器调度的过程中,当运算单元的数量X小于滤波级数M时,则控制器通过将多级滤波的计算分别于不同的时钟周期调度至同一个运算单元中进行计算,以实现运算单元个数和滤波级数的解耦。即无论运算单元数量的多少,都可以通过控制器的调度来实现滤波级数M的灵活配置,而不受限于运算单元数量X的限制。此外,由于本发明实施例复用了处理器内部现有的部件,仅增加了少量的存储和控制逻辑则实现了多级滤波的功能,对芯片面积、功耗和成本等几乎没有影响;进一步地,由于结果中间结果寄存器位于处理器内部,因此在将运算器中的中间输出结果暂存至中间结果寄存器,或者将中间输出结果读出至运算器中时,均属于处理器内部的读写流程,而无需通过访存单元通过总线读取,避免由于大量访存带来的总线压力,提升了处理器的滤波性能。综上,基于上述处理器的整体设计架构,本申请所提供的处理器除了具有原本通用的功能,还进一步实现了多级滤波的功能,并且支持滤波级数的动态配置,实现了灵活、高效的滤波功能。
在一种可能的实现方式中,所述第二存储器,还用于存储所述N个输入样本,以及用于存储所述N个输入样本经过第M-1级滤波的最终计算结果。本发明实施例,由于在第0级滤波的计算过程中,其需要用到初始的N个输入样本,且针对每个输入样本的第0级滤波都要用到上一个和上上一个输入样本,因此可以通过暂存需要使用的前两个输入样本(通过更新的方式,每计算完一个就更新下一个的方式,可以始终只保存其中相邻的两个输入样本);且由于在最后一级(M-1)级滤波的计算过程中,其会计算出针对N个输入样本中每个输入样本经过最后一级滤波的结果,该N个结果即为最终的输出结果,但是由于在串行计算该N个最终输出结果的过程中,会涉及到需要用到上一个和上上一个输入样本的计算结果,因此可以通过在第二存储器中始终存储上一个和上上一个输入样本的计算结果,并通过更新的方式,每计算完一个就更新下一个的方式,可以始终只保存其中相邻的两个最终输出结果以便于该最后一级滤波可以最终计算得到N个最终输出结果。
在一种可能的实现方式中,所述控制器,还用于将所述第二存储器中的所述N个输入样本经过第i级滤波的中间输出结果调度至所述运算器中;
所述运算器,具体用于基于第i+1级滤波的滤波系数和所述经过第i级滤波的中间输出结果,计算得到所述N个输入样本的第i+1级滤波的中间输出结果。
本发明实施例,在进行滤波的计算过程中控制器还用于将暂存在第二存储器(如中间结果寄存器)中的中间输出结果调度至运算器中,运算器则基于当前级滤波的滤波系数,和上一级的滤波的中间输出结果,计算得到当前级滤波的中间输出结果。
在一种可能的实现方式中,所述M级滤波为M级的双二阶滤波;将所述M级滤波中的第i级滤波中的第n个输入样本对应的中间输出结果记为ymi(n),i取0、1、2、3、……M-2,n取0、1、2、3、……N-1;
所述第二存储器,具体用于存储所述N个输入样本中第n-1个、第n-2个、第n-3个输入样本经过各级滤波的中间输出结果ymi(n-1)、ymi(n-2)、ymi(n-3)。
本发明实施例,在进行滤波的具体计算过程中,由于双二阶滤波计算公式为ymi(n)=b0*xn+b1*x(n-1)+b2*x(n-2)+a1*ymi(n-1)+a2*ymi(n-2);当i取0时,其中会涉及到xn、x(n-1)、x(n-2)。而当i取大于或者等于1的值时,其输出结果为ym(i+1)(n)=b0*ymi(n)+b1*ymi(n-1)+b2*ymi(n-2)+a1*ym(i+1)(n-1)+a2*ym(i+1)(n-2),也即是与b0、b1、b2相乘的项,为上一级滤波的中间输出结果,与a1、a2相乘的项,为当前级滤波的中间输出结果。综上,基于上述双二阶滤波的计算公式可知,计算当前级滤波的第n个输入样本的中间输出结果,具体需要基于上一级滤波的第n个输入样本、第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波的第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波对应的滤波系数。但是,由于多级滤波之间,当前级滤波和上一级滤波之间若要在不同的计算单元中并行执行,则必然导致当前级滤波和上一级滤波之间相差至少一个中间输出结果的时延(因为在并行处理过程中,上一级滤波的中间输出结果还未计算完成,因此当前级滤波还无法作为输入来计算)。因此,对于每一级滤波的Section来说,其存储的ymi(n-2)、ymi(n-1)、ymi(n),用于下一级滤波计算时,需要往回倒推一个输入样本,即第n-1个输入样本。因此针对每个Section来说,其相当于是存储了上一个输入样本所涉及的参数,也即是ymi(n-1)、ymi(n-2)、ymi(n-3)。
在一种可能的实现方式中,所述控制器,具体将所述第二存储器中的ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2)调度至所述运算器中;
所述运算器,具体用于根据第i+1级滤波的滤波系数和ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2),计算得到第n-1个输入样本的第i+1级滤波的中间输出结果Ym(i+1)(n-1)。
本发明实施例,基于上述双二阶滤波的计算公式可知,计算当前级滤波的第n个输入样本的中间输出结果,具体需要基于上一级滤波的第n个输入样本、第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波的第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波对应的滤波系数。但是,由于多级滤波之间,当前级滤波和上一级滤波之间若要在不同的计算单元中并行执行,则必然导致当前级滤波和上一级滤波之间相差至少一个中间输出结果的时延(因为在并行处理过程中,上一级滤波的中间输出结果还未计算完成,因此当前级滤波还无法作为输入来计算)。因此,对于每一级滤波的Section来说,其存储的ymi(n-2)、ymi(n-1)、ymi(n),用于下一级滤波计算时,需要往回倒推一个输入样本,即第n-1个输入样本。因此针对每个Section来说,其相当于是存储了上一个输入样本所涉及的参数,也即是ymi(n-1)、ymi(n-2)、ymi(n-3)。因此,对于任意一级滤波的Section(除最后一级section)来说,假设其当前计算的是ymi(n),则其需要存储的是ymi(n-3)、ymi(n-2)、ymi(n-1),而下一级滤波Section则可以基于该当前级滤波section存储的上述ymi(n-3)、ymi(n-2)、ymi(n-1)和自身当前存储的ym(i+1)(n-3)、ym(i+1)(n-2),并行计算得到第n-1个输入样本的第i+1级滤波的中间输出结果,也即是Ym(i+1)(n-1)。
在一种可能的实现方式中,当X小于M时;
所述控制器,具体用于将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的X个运算单元中;
所述运算器,具体用于基于所述N个输入样本和所述M组滤波系数,通过所述X个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,k取不同值时的第kX+L级滤波的中间输出结果,分别于不同的时钟周期由同一个运算单元计算得到;k取0、2、3……[M/X];L取0、1、2、3……X-1。
本发明实施例,当运算器中的运算单元的个数小于待滤波的滤波级数时,则相当于没有足够多的运算单元可以并行计算得到各级滤波的中间输出结果。本申请中通过将第0*X+L、1*X+L、2*X+L、……级的滤波的计算过程设置在同一个运算单元中进行计算,如此一来不仅可以解决运算单元数量小于滤波级数的问题,而且还可以达到中间输出结果的最大利用率。
在一种可能的实现方式中,当X大于或等于M时;
所述控制器,具体用于将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的M个运算单元中;
所述运算器,具体用于基于所述N个输入样本和所述M组滤波系数,通过所述M个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,所述M个运算单元中的每个运算单元用于计算其中一级滤波的中间输出结果。
本发明实施例,当运算器中的运算单元的个数大于或者等于待滤波的滤波级数时,则相当于有足够多的运算单元可以并行执行各级滤波的中间输出结果,此时可以从X个运算单元中选取M个运算单元,且每个运算单元用于计算M级滤波中的其中一级,以实现最大并行度的计算。
在一种可能的实现方式中,所述处理器还包括访存单元;所述处理器与外部存储器耦合;
所述访存单元,用于从所述外部存储器中读取所述目标滤波数据,并将所述目标滤波数据发送至所述第一存储器中进行存储。
本发明实施例,通过处理器内部的访存单元,从处理器的外部存储器(如内存)中将滤波系数和输入样本批量读取到处理器内部的第一存储器(如向量寄存器列表)中,从而实现了滤波计算的性能的提升,和降低了对总线的压力。
在一种可能的实现方式中,所述控制器、所述运算器、所述第一存储器和所述第二存储器集成在所述处理器的处理器核中。
本发明实施例,控制器、运算器、第一存储器和第二存储器均可以集成在处理器的处理器核中,以提升滤波计算过程中的通信效率。
在一种可能的实现方式中,所述第一存储器为向量寄存器列表,所述第二存储器为中间结果寄存器;所述控制器包括译码单元和译码单元。
本发明实施例,第一存储器可以复用处理器中的向量寄存器,第二存储器则可以为处理器中新增的中间结果寄存器,控制器则可以复用包括具有译码功能的译码单元,以及具有指令调度功能的调度单元等。
第二方面,本申请提供一种滤波方法,可应用于处理器,所述处理器包括:控制器、耦合于所述控制器的运算器、第一存储器和第二存储器,所述运算器包括X个运算单元,X为大于0的整数;所述方法,包括:
通过所述第一存储器存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2;
通过所述第二存储器,存储所述N个输入样本经过第i级滤波的中间输出结果。
在一种可能的实现方式中,所述方法还包括:
通过所述控制器,将所述第二存储器中的所述N个输入样本经过第i级滤波的中间输出结果调度至所述运算器中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于第i+1级滤波的滤波系数和所述经过第i级滤波的中间输出结果,计算得到所述N个输入样本的第i+1级滤波的中间输出结果。
在一种可能的实现方式中,所述M级滤波为M级的双二阶滤波;将所述M级滤波中的第i级滤波中的第n个输入样本对应的中间输出结果记为ymi(n),i取0、1、2、3、……M-2,n取0、1、2、3、……N-1;
所述通过所述第二存储器,存储所述N个输入样本经过第i级滤波的中间输出结果,包括:
通过所述第二存储器,存储所述N个输入样本中第n-1个、第n-2个、第n-3个输入样本经过各级滤波的中间输出结果ymi(n-1)、ymi(n-2)、ymi(n-3)。
在一种可能的实现方式中,所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第二存储器中的ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2)调度至所述运算器中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,根据第i+1级滤波的滤波系数和ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2),计算得到第n-1个输入样本的第i+1级滤波的中间输出结果Ym(i+1)(n-1)。
在一种可能的实现方式中,当X小于M时;
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的X个运算单元中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,通过所述X个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,k取不同值时的第kX+L级滤波的中间输出结果,分别于不同的时钟周期由同一个运算单元计算得到;k取0、1、2、3……[M/X];L取0、1、2、3……X-1。
在一种可能的实现方式中,当X大于或等于M时;
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的M个运算单元中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,通过所述M个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,所述M个运算单元中的每个运算单元用于计算其中一级滤波的中间输出结果。
在一种可能的实现方式中,所述处理器还包括访存单元;所述处理器与外部存储器耦合;所述方法,还包括:
通过所述访存单元,从所述外部存储器中读取所述目标滤波数据,并将所述目标滤波数据发送至所述第一存储器中进行存储。
在一种可能的实现方式中,所述控制器、所述运算器、所述第一存储器和所述第二存储器集成在所述处理器的处理器核中。
在一种可能的实现方式中,所述第一存储器为向量寄存器列表,所述第二存储器为中间结果寄存器;所述控制器包括译码单元和调度单元。
第三方面,本申请提供一种处理器,可包括:控制器、耦合于所述控制器的运算器、第一存储器,所述运算器包括X个运算单元,X为大于0的整数;
所述第一存储器,用于存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
所述控制器,用于根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
所述运算器,用于基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2。
第四方面,本申请提供一种滤波方法,可应用于处理器,所述处理器包括:控制器、耦合于所述控制器的运算器、第一存储器,所述运算器包括X个运算单元,X为大于0的整数;所述方法,可包括:
通过所述第一存储器存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2。
第五方面,本申请提供一种半导体芯片,可包括上述第一方面中的任意一种实现方式所提供的处理器。
第六方面,本申请提供一种半导体芯片,可包括:上述第一方面中的任意一种实现方式所提供的处理器、耦合于所述处理器的内部存储器以及外部存储器。
第七方面,本申请提供一种片上系统SoC芯片,该SoC芯片包括上述第一方面中的任意一种实现方式所提供的处理器、耦合于所述处理器的内部存储器和外部存储器。该SoC芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
第八方面,本申请提供了一种芯片系统,该芯片系统包括上述第一方面中的任意一种实现方式所提供的处理器。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存所述处理器在运行过程中所必要或相关的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其它分立器件。
第九方面,本申请提供一种处理装置,该处理装置具有实现上述第二面中的任意一种滤波方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第十方面,本申请提供一种终端,该终端包括处理器,该处理器为上述第一方面中的任意一种实现方式所提供的处理器。该终端还可以包括存储器,存储器用于与处理器耦合,其保存终端必要的程序指令和数据。该终端还可以包括通信接口,用于该终端与其它设备或通信网络通信。
第十一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述第二方面中任意一项所述的滤波方法流程。
第十二方面,本发明实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被处理器执行时,使得处理器可以执行上述第二方面中任意一项所述的滤波方法流程。
附图说明
图1为现有技术中一种带负反馈的递归型滤波器的原理图。
图2A是本发明实施例提供的一种处理器的结构示意图。
图2B是本发明实施例提供的另一种处理器的结构示意图。
图2C是本发明实施例提供的又一种处理器的结构示意图。
图3为本发明实施例提供的一种滤波数据结构示意图。
图4A为本发明实施例提供的一种对14个输入样本进行8级滤波的示意图。
图4B为本发明实施例提供的一种以最大并行度为3的运算单元对14个输入样本进行8级滤波的示意图。
图5是本发明实施例提供的一种滤波方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)单指令多数据(Single Instruction Multiple Data,SIMD),能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
(2)无限脉冲响应滤波器(Infinite impulse response filters,IIR),对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。即IIR滤波器的特征是其输出y(n)由当前的和过去的输入信号x(n)及过去的输出信号共同决定。
(3)有限状态机(Finite State Machine,FSM),有限状态机,其在任意时刻都处于有限状态集合中的某一状态。当其获得一个输入字符时,将从当前状态转换到另一个状态,或者仍然保持在当前状态。
(4)时钟周期,将一个机器周期分成若干个时间相等的时间段,这样的时间段称为节拍或者时钟周期,一个CPU时钟周期也称为一个节拍或一拍。
(5)计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。指令集(Instruction set),就是CPU中用来计算和控制计算机系统的一套指令的集合,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。
(6)集成电路(Integrated Circuit,IC),是一种微型电子器件或部件。采用一定的工艺,把一个电路中所需的晶体管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构;即IC芯片是将大量的微电子元器件(晶体管、电阻、电容等)形成的集成电路放在一块塑基上,做成一块芯片。
为了便于理解本发明实施例,本申请提供一种适用于本申请中处理器的流水线结构,该流水线结构中一条指令的生命周期可包括取指流水线→解码流水线→调度(发射)流水线→执行流水线→访存流水线→写回流水线,也即是该流水线结构将一条指令的执行过程至少分为如下六个阶段,其中,
取指流水线:指令取指(Instruction Fetch)是指将指令从存储器中读取出来的过程。
解码流水线:指令译码(Instruction Decode)是指将存储器中取出的指令进行翻译的过程。
调度(发射)流水线:指令调度和发射(Instruction Dispatch and Issue)是会读取寄存器而得到操作数,同时根据指令的类型,将指令发送到对应的执行单元(EU)中进行执行。
执行流水线:指令解码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,接下来便是根据指令的类型进行指令执行(InstructionExecute),以完成计算任务。指令执行是指对指令进行真正运算的过程。例如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则进行减法操作;如果是滤波计算则进行滤波计算操作。
访存流水线:访存(Memory Access)是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程,主要是执行读出/写入(load/store)指令。
写回流水线:写回(Write Back)是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
在上述流水线结构中,处理器中的每条指令均要经历上述操作步骤,但是多条指令的不同操作步骤可以同时执行,因而可以从总体上加快指令流速度,缩短了程序执行时间。可以理解的是,上述处理器架构和处理器的流水线结构只是本发明实施例提供的一些示例性的实施方式,本发明实施例中的处理器架构和处理器的流水线结构包括但不仅限于以上实现方式。
基于上述,下面对本发明实施例提供的处理器以及相关设备进行描述。
本申请提供一种处理器。请参见图2A-图2C,图2A-图2C是本发明实施例提供的一些处理器的结构示意图,该处理器10可以位于任意一个电子设备中,如电脑、计算机、手机、平板、耳机、助听器、音响、智能穿戴设备等各类设备中。该处理器10具体可以是芯片或芯片组或搭载有芯片或者芯片组的电路板。该芯片或芯片组或搭载有芯片或芯片组的电路板可在必要的软件驱动下工作。以下示例性示出本申请中的处理结构的几种实现方式。
请参见图2A,图2A是本发明实施例提供的一种处理器的结构示意图,该处理器10可执行通用处理器任务,也可以进一步执行本申请中所涉及的滤波任务。如图2A所示,处理器10可以包括控制器101、耦合于所述控制器101的运算器103、第一存储器102和第二存储器104,所述运算器103包括X个运算单元,X为大于0的整数。可选的,处理器10还可以包含其他功能模块。
进一步地,请参见图2B,图2B是本发明实施例提供的另一种处理器的结构示意图,该处理器10还可以包括访存单元105,该访存单元105耦接于处理器10外部的外部存储器20。可选的,处理器10和外部存储器20之间可通过处理器外部总线或其他方式耦合通信,以共同完成处理器10的计算任务。
再进一步地,请参见图2C,图2C是本发明实施例提供的又一种处理器的结构示意图,该处理器10中的控制器101可以包括译码单元(Decode Unit)1011和调度单元(Dispatch Unit)1012,第一存储器102具体可以为向量寄存器列表(VRF)102A,运算器103具体可以为累加树单元(SUM TREE)103A,访存单元105具体可以为向量读写单元(VLSU)105A,也即是本申请中可以通过复用处理器中已有的上述部件进一步实现滤波功能。可选的,第二存储器104具体可以为中间结果寄存器104A。
需要说明的是,图2A-图2C中的处理器内部的各个功能模块之间可通过处理器内部总线的方式或其他连接方式通信,图中所示意的连接关系并不对其之间的连接关系构成限制。后续实施例中将对各个功能模块进行进一步说明,此处不作详述。可以理解的是,图2A-图2C中处理器的结构只是本发明实施例提供的一些示例性的实施方式,本发明实施例中的处理器的结构包括但不仅限于以上实现方式。
基于上述图2A-图2C中处理器10多种可能的实现结构,下面对处理器10中各个部件进行说明。
控制器101,是用于控制整个处理器10的工作,包括分析指令并发出相应的控制信号,从而协调处理器10中的各个部件按照指令的功能要求协调工作。例如,其主要功能具体可包括指令控制功能,如完成取指令、分析指令等操作,然后交给执行单元(如运算器等)来执行,同时还要形成下一条指令的地址;时序控制功能,如为每条指令按时间顺序执行提供控制信号;总线控制功能,如控制处理器10的内部和外部总线,包括地址总线、数据总线、控制总线等;中断控制功能,用于控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给处理器。如图2C中所示,控制器10可以由多个功能单元组成,如译码单元1011和调度单元1012,可选的,还可以包括指令寄存器IR(Instruction Register)等。可以理解的是,控制器10主要是工作在取指流水线阶段、译码流水线阶段和调度(发射)流水线阶段,并完成对应的指令取指、指令译码和指令调度功能。
第一存储器102,是处理器10中暂时存放数据的地方,例如暂存着等待处理的数据、或已经处理过的数据。在本发明实施例中,第一存储器102可以批量存储N个输入样本和M组滤波系数。例如,如图2C所示,第一存储器102具体可以为向量寄存器列表(VectorRegister File,VRF),也可以称为寄存器堆,是处理器10中多个寄存器组成的阵列,可以由快速的静态随机读写存储器(SRAM)实现,此种RAM具有专门的读端口与写端口,可以多路并发访问不同的寄存器。
运算器103,可以执行算术运算(包括加减乘数除基本运算及其附加运算),和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制器101而言,运算器103接收控制器10(如调度单元1012)的命令而执行运算操作,即运算器103所进行的全部操作都是由控制器10发出的控制信号来指挥的,所以运算器103属于执行部件。可选的,本发明实施例中的运算器103可包括X个运算单元,每个运算单元可包含乘法、加法、减法的运算,用于计算输入样本经过M级滤波中每一级滤波后的中间输出结果、或最终输出结果。可以理解的是,运算器103运行在执行流水线阶段,完成对应的计算任务。
第二存储器104,可以为本申请中的中间结果寄存器104A,用于暂存滤波计算过程中的中间输出结果,该中间结果寄存器可集成在处理器10内部,由于处理器10访问寄存器所用的时间要比访问内存的时间短。因此本申请中,通过将中间输出结果暂存在中间结果寄存器中,可以减少处理器10在进行滤波计算过程中访问内存的次数,从而提高了处理器10的滤波效率。其中,第二存储器104的大小可以与输入样本的大小有关,例如,若输入样本是16位,则第二存储器104可以是多阶16位寄存器;若输入样本是32位,则第二存储器可以是多阶32位寄存器,本发明实施例对此不作具体限定。可选的,因为受到芯片面积和集成度所限,中间结果寄存器的容量可能较小,因此可以在存储中间输出结果时,通过移动的方式,只保存最新需要用的中间输出结果,而已经参与了计算的中间输出结果则会被新的中间输出结果更新替代。例如,针对某级滤波的Section来说,其上一个时钟周期存储的中间输出结果为y(7)、y(6)y(5),则下一个时钟周期则更新为y(8)、y(7)y(6),以此类推,此处不再一一列举。需要说明的是,虽然上述第一存储器102和第二存储器104都为寄存器,但是第一存储器102与第二存储器103功能的侧重点不一样。在一种可能的实现方式中,第一存储器101可以为处理器10中的固有存储器,即复用通用处理器中的已有的寄存器,而由于其结构可能不适合用作中间输出结果的存储或者说其存储结构不能与滤波的中间输出结果达到更好的匹配,因此,本发明实施例采用第二存储器104来进行中间输出结果的存储,为适应IIR滤波,第二存储器104可以是将三个操作数作为一组,组内有自动的固定移位操作。其中,三个操作数一组是因为在IIR的应用中最多只用到了三个过去值(历史值);固定的移位操作是在数据被运算器103取走运算的同时,组内的三个数据自动的更换位置,留出相应的空间用于存储当前级滤波的计算结果(即中间输出结果)。
访存单元105,可用于接收控制器101中调度单元1012发送的内存读写指令,并进行内存读写操作。例如,如图2C所示,访存单元105具体为内存读写单元(Load Store Unit,LSU),用来计算访问存储器类型的指令(一般指load/store)中所携带的存储器地址。本发明实施例中,访存单元105可根据访存指令从外部存储器20中读取目标滤波数据,即包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数,并将上述目标滤波数据存储至第一存储器102中,以便于后续调度单元1012可以分别将输入样本调度至中间结果寄存器104A,以及将IIR系数调度至累加树单元103A。即访存单元105可用于批量读取IIR操作数和IIR滤波系数,并将所述IIR操作数和IIR滤波系数暂存在向量寄存器列表102A中。可以理解的是,访存单元105工作在访存流水线阶段,完成对应的数据读出/写入的功能。
外部存储器20,可以为处理器10的可读可写的运行内存(Memory),也可以是处理器10的外存,当其为处理器10的内存时,其作用是用于暂时存放处理器10中的运算数据,以及与处理器10其他外部存储器(如外存/外存储器)交互数据,可作为操作系统或其他正在运行中的程序的临时数据的存储媒介。例如,运行于处理器10上的操作系统把需要运算的数据从外部存储器20调度到处理器10中进行运算,当运算完成后处理器10再将结果传送出来。可选的,该外部存储器20耦合在处理器10的外部,可挂在处理器10外的数据总线上,访问内存时要在处理器10的相关寄存器填上地址,再执行相应的汇编指令,这时处理器10会在数据总线上生成读取或写入内存数据的时钟信号,最终内存的内容会被处理器的寄存器的内容更新(写入)或者被读入处理器的寄存器(读取)。可选的,外部存储器20,可以为动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、一级缓存(L1 Cache)、二级缓存(L2 Cache)三级缓存(L3 Cache)等中的一种或多种。
基于上述处理器的软硬件架构,在本发明实施例中,该处理器10具体所实现的功能可包括如下:
所述第一存储器102,用于存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
所述控制器101,用于根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
所述运算器103,用于基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2;
所述第二存储器104,用于存储所述N个输入样本经过第i级滤波的中间输出结果。
具体地,本发明实施例中N个输入样本可以是音频领域的采样数据,也可以是经过其他滤波(如高通滤波)后的调制数据。在双二阶滤波中,一个IIR块(Section)也可以理解为每一级的双二阶滤波,可以用二阶差分方程表示:y(n)=b0*xn+b1*x(n-1)+b2*x(n-2)-a1*y(n-1)-a2*y(n-2)。其中,{b0,b1,b2,a1,a2}为一组滤波系数,并且在M级滤波中,每一级滤波中的N个输入样本对应相同一组滤波系数,而M级滤波之间的M组滤波系数可能是不同的,因此对所述N个输入样本进行M级滤波其所对应M组滤波系数。并且,在上述计算公式中,所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2;例如,第0个输入样本x(0)进行第0级滤波的中间输出结果ym0(0),将作为第1级滤波的输入参数xn,以此类推,此处不再一一举例。可以理解的是,当i取M-1时,则表示当前是进行M级滤波中最后一级滤波(i从0开始取值,则为第M-1级滤波),此时其输出的结果即为最终输出结果,因此需要将该最终输出结果存储至第一存储器102中,而无需存储至用于暂存中间输出结果的第二存储器104中。
由于在本发明实施例中,运算器103中所包含的运算单元数量X与进行滤波的级数M之间是解耦的关系,即进行滤波的级数M不受限于运算单元数量X的限制,因此通过控制器101根据M和X之间的大小关系,进行滤波计算的调度。例如,当X大于或者等于M时,则可以将每一级的滤波计算调度至一个运算单元中进行,从而可以实现并行度最高可达M;当X小于M时,则至少需要将多级(至少两级)的滤波计算调度至某一个运算单元中进行,因为从硬件角度该运算器103最大的运算并行度为X,但是通过本发明实施例中控制器101的调度,可以实现逻辑上的并行度M,从而最终也可以实现M级滤波的计算。
本发明实施例,提供了一种可实现高效、灵活多级滤波的处理器,具体地包括针对硬件以及软件的设计。其中,从硬件角度,本发明实施例通过复用当前通用处理器中已有的控制器、向量寄存器列表(即第一存储器)和运算器等部件用于逻辑控制和运算,且在处理器中增加中间结果寄存器(即第二存储器)用于暂存多级滤波的中间输出结果;从软件角度,控制器根据M与X之间的大小关系将待滤波的输入样本以及相应的滤波系数调度至运算器中进行运算,并控制将各级滤波的中间输出结果存储至新增的中间结果寄存器中,使得每级滤波可基于上一级滤波的中间输出结果作为输入,从而实现递归计算。其中,在控制器调度的过程中,当运算单元的数量X小于滤波级数M时,则控制器通过将多级滤波的计算分别于不同的时钟周期调度至同一个运算单元中进行计算,以实现运算单元个数和滤波级数的解耦。即无论运算单元数量的多少,都可以通过控制器的调度来实现滤波级数M的灵活配置,而不受限于运算单元数量X的限制。此外,由于本发明实施例复用了处理器内部现有的部件,仅增加了少量的存储和控制逻辑则实现了多级滤波的功能,对芯片面积、功耗和成本等几乎没有影响;进一步地,由于结果中间结果寄存器位于处理器内部,因此在将运算器中的中间输出结果暂存至中间结果寄存器,或者将中间输出结果读出至运算器中时,均属于处理器内部的读写流程,而无需通过访存单元通过总线读取,避免由于大量访存带来的总线压力,提升了处理器的滤波性能。综上,基于上述处理器的整体设计架构,本申请所提供的处理器除了具有原本通用的功能,还进一步实现了多级滤波的功能,并且支持滤波级数的动态配置,实现了灵活、高效的滤波功能。
在一种可能的实现方式中,第二存储器104,还用于存储所述N个输入样本,以及用于存储所述N个输入样本经过第M-1级滤波的最终计算结果。本发明实施例,由于在第0级滤波的计算过程中,其需要用到初始的N个输入样本,且针对每个输入样本的第0级滤波都要用到上一个和上上一个输入样本,因此可以通过暂存需要使用的前两个输入样本(通过更新的方式,每计算完一个就更新下一个的方式,可以始终只保存其中相邻的两个输入样本);且由于在最后一级(M-1)级滤波的计算过程中,其会计算出针对N个输入样本中每个输入样本经过最后一级滤波的结果,该N个结果即为最终的输出结果,但是由于在串行计算该N个最终输出结果的过程中,会涉及到需要用到上一个和上上一个输入样本的计算结果,因此可以通过在第二存储器中始终存储上一个和上上一个输入样本的计算结果,并通过更新的方式,每计算完一个就更新下一个的方式,可以始终只保存其中相邻的两个最终输出结果以便于该最后一级滤波可以最终计算得到N个最终输出结果。
在一种可能的实现方式中,控制器101,还用于将所述第二存储器中的所述N个输入样本经过第i级滤波的中间输出结果调度至所述运算器中;运算器103,具体用于基于第i+1级滤波的滤波系数和所述经过第i级滤波的中间输出结果,计算得到所述N个输入样本的第i+1级滤波的中间输出结果。本发明实施例,在进行滤波的计算过程中控制器还用于将暂存在第二存储器(如中间结果寄存器)中的中间输出结果调度至运算器中,运算器则基于当前级滤波的滤波系数,和上一级的滤波的中间输出结果,计算得到当前级滤波的中间输出结果。
在一种可能的实现方式中,所述M级滤波为M级的双二阶滤波;将所述M级滤波中的第i级滤波中的第n个输入样本对应的中间输出结果记为ymi(n),i取0、1、2、3、……M-2,n取0、1、2、3、……N-1;第二存储器104,具体用于存储所述N个输入样本中第n-1个、第n-2个、第n-3个输入样本经过各级滤波的中间输出结果ymi(n-1)、ymi(n-2)、ymi(n-3)。
本发明实施例,在进行滤波的具体计算过程中,由于双二阶滤波计算公式为ymi(n)=b0*xn+b1*x(n-1)+b2*x(n-2)+a1*ymi(n-1)+a2*ymi(n-2);当i取0时,其中会涉及到xn、x(n-1)、x(n-2)。而当i取大于或者等于1的值时,其输出结果为ym(i+1)(n)=b0*ymi(n)+b1*ymi(n-1)+b2*ymi(n-2)+a1*ym(i+1)(n-1)+a2*ym(i+1)(n-2),也即是与b0、b1、b2相乘的项,为上一级滤波的中间输出结果,与a1、a2相乘的项,为当前级滤波的中间输出结果。综上,基于上述双二阶滤波的计算公式可知,计算当前级滤波的第n个输入样本的中间输出结果,具体需要基于上一级滤波的第n个输入样本、第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波的第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波对应的滤波系数。但是,由于多级滤波之间,当前级滤波和上一级滤波之间若要在不同的计算单元中并行执行,则必然导致当前级滤波和上一级滤波之间相差至少一个中间输出结果的时延(因为在并行处理过程中,上一级滤波的中间输出结果还未计算完成,因此当前级滤波还无法作为输入来计算)。因此,对于每一级滤波的Section来说,其存储的ymi(n-2)、ymi(n-1)、ymi(n),用于下一级滤波计算时,需要往回倒推一个输入样本,即第n-1个输入样本。因此针对每个Section来说,其相当于是存储了上一个输入样本所涉及的参数,也即是ymi(n-1)、ymi(n-2)、ymi(n-3)。
在一种可能的实现方式中,控制器101,具体将第二存储器104中的ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2)调度至运算器103中;运算器103,具体用于根据第i+1级滤波的滤波系数和ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2),计算得到第n-1个输入样本的第i+1级滤波的中间输出结果Ym(i+1)(n-1)。本发明实施例,基于上述双二阶滤波的计算公式可知,计算当前级滤波的第n个输入样本的中间输出结果,具体需要基于上一级滤波的第n个输入样本、第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波的第n-1个输入样本、第n-2个输入样本的中间输出结果,以及当前级滤波对应的滤波系数。但是,由于多级滤波之间,当前级滤波和上一级滤波之间若要在不同的计算单元中并行执行,则必然导致当前级滤波和上一级滤波之间相差至少一个中间输出结果的时延(因为在并行处理过程中,上一级滤波的中间输出结果还未计算完成,因此当前级滤波还无法作为输入来计算)。因此,对于每一级滤波的Section来说,其存储的ymi(n-2)、ymi(n-1)、ymi(n),用于下一级滤波计算时,需要往回倒推一个输入样本,即第n-1个输入样本。因此针对每个Section来说,其相当于是存储了上一个输入样本所涉及的参数,也即是ymi(n-1)、ymi(n-2)、ymi(n-3)。因此,对于任意一级滤波的Section(除最后一级section)来说,假设其当前计算的是ymi(n),则其需要存储的是ymi(n-3)、ymi(n-2)、ymi(n-1),而下一级滤波Section则可以基于该当前级滤波section存储的上述ymi(n-3)、ymi(n-2)、ymi(n-1)和自身当前存储的ym(i+1)(n-3)、ym(i+1)(n-2),并行计算得到第n-1个输入样本的第i+1级滤波的中间输出结果,也即是Ym(i+1)(n-1)。
在一种可能的实现方式中,当X小于M时;控制器101,具体用于将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的X个运算单元中;运算器103,具体用于基于所述N个输入样本和所述M组滤波系数,通过所述X个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器102中;其中,k取不同值时的第kX+L级滤波的中间输出结果,分别于不同的时钟周期由同一个运算单元计算得到;k取0、1、2、3……[M/X];L取0、1、2、3……X-1。也即是,在该实现方式中,第二存储器(如中间结果寄存器)可以存储最少量的历史中间输出结果,也即是ymi(n-1)、ymi(n-2)、ymi(n-3),从而使得第二存储器可以有更小的面积和功耗。本发明实施例,当运算器中的运算单元的个数小于待滤波的滤波级数时,则相当于没有足够多的运算单元可以并行计算得到各级滤波的中间输出结果。本申请中通过将第0*X+L、1*X+L、2*X+L、……级的滤波的计算过程设置在同一个运算单元中进行计算,如此一来不仅可以解决运算单元数量小于滤波级数的问题,而且还可以达到中间输出结果的最大利用率。
在一种可能的实现方式中,当X大于或等于M时;控制器101,具体用于将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的M个运算单元中;运算器103,具体用于基于所述N个输入样本和所述M组滤波系数,通过所述M个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,所述M个运算单元中的每个运算单元用于计算其中一级滤波的中间输出结果。本发明实施例,当运算器中的运算单元的个数大于或者等于待滤波的滤波级数时,则相当于有足够多的运算单元可以并行执行各级滤波的中间输出结果,此时可以从X个运算单元中选取M个运算单元,且每个运算单元用于计算M级滤波中的其中一级,以实现最大并行度的计算。
在一种可能的实现方式中,所述处理器还包括访存单元105;所述处理器10与外部存储器20耦合;访存单元105,用于从所述外部存储器中读取所述目标滤波数据,并将所述目标滤波数据发送至所述第一存储器102中进行存储。本发明实施例,通过处理器内部的访存单元,从处理器的外部存储器(如内存)中将滤波系数和输入样本批量读取到处理器内部的第一存储器(如向量寄存器列表)中,从而实现了滤波计算的性能的提升,和降低了对总线的压力。
在一种可能的实现方式中,所述控制器101、所述运算器103、所述第一存储器102和所述第二存储器104集成在所述处理器的处理器核中。本发明实施例,控制器、运算器、第一存储器和第二存储器均可以集成在处理器的处理器核中,以提升滤波计算过程中的通信效率。
在一种可能的实现方式中,所述第一存储器102为向量寄存器列表102A,所述第二存储器104为中间结果寄存器104A;所述控制器101包括译码单元1011和调度单元1012。本发明实施例,第一存储器可以复用处理器中的向量寄存器,第二存储器则可以为处理器中新增的中间结果寄存器,控制器则可以具体包括具有译码功能的译码单元,以及具有指令调度功能的调度单元等。
为了便于理解本申请,下面基于上述图2A-图2C中的处理器10的具体结构和功能,并结合具体示例,对本申请中的处理器10对N个输入样本进行M级滤波的过程进行具体描述:
例如,以滤波为双二阶滤波为例,假设N=14,即n的取值为0、1、2、3、4、5、6、7、8、9、10、11、12、13,涉及的N个输入样本分别为:x0、x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13;涉及的中间输出结果为:y0、y1、y2、y3、y4、y5、y6、y7、y8、y9、y10、y11、y12,y13;
假设M=8,即i的取值为i取0、1、2、3、4、5、6、7(需要说明的是,i取7时为滤波的最后一级,即此时对应的是最终输出结果),涉及的M级滤波分别对应的M个Section,分别为M0、M1、M2、M3、M4、M5、M6、M7;M组IIR系数则对应8组IIR滤波系数,将任意一组IIR滤波系数表示为:b0、b1、b2、a1、a2;为了简化标记,针对M0、M1、M2、M3、M4、M5、M6、M7,均用相同的b0、b1、b2、a1、a2来表示,但是可以理解的是,相同的M中的不同x(n)其对应的滤波系数取值是相同的,而对于不同的M之间来说,其对应的滤波系数的取值是不同的。
由于,每级滤波双二阶滤波所基于的公式可以表示为:y(n)=b0*xn+b1*x(n-1)+b2*x(n-2)-a1*y(n-1)-a2*y(n-2)。其中,x(n-1)表示延迟一拍,在数字系统中表示对于输入信号而言,即为上一次采样值,对于输出而言,即为上一次的输出值。x(n-1)表示上一次的信号,可能是来自ADC的上次采样,而y(n-1)则为上一次滤波器的输出值。
需要说明的是在,在上述公式中,在一些情况下,当n取值为0(即第0个输入样本)时则x(n-1)、x(n-2)、y(n-1)、y(n-2)对应的样本均为负值,因此其本质是不存在,所以在上述计算公式中,当x(n)或y(n)的变量取负值时,则表明该输入样本或输出不存在。例如,ym0(0)=b0*x0+b1*x(-1)+b2*x(-2)-a1*ym0(-1)-a2*ym0(-2)。其中,b1*x(-1)、b2*x(-2)、a1*ym0(-1)、a2*ym0(-2)均为不存在项或者无效项(即对于这些不存在项或无效项来说,运算单元实际上是没有执行计算的)。以此类推,后续不再赘述。
如图3所示,图3为本发明实施例提供的一种滤波数据结构示意图,在图3中,N个输入样本经过M0、M1、M2、M3、M4、M5、M6、M7一共八级滤波。如图3中所示,针对每一级滤波(包括M0~M6,可选的还可以包括M7),第二存储器中都可以存储其深度为3的历史计算结果,用于实现滤波的计算;可选的,第二存储器中还可以用于存储第0级的输入样本(深度为2),具体可以参考上述相关实施例的描述,此处不再赘述。其中,
对于M0来说,若n取0~13,其N个输入样本x0、x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13经过第1级滤波M0的Section后,对应输出的中间输出结果为ym0(0)、ym0(1)、ym0(2)、ym0(3)、ym0(4)、ym0(5)、ym0(6)、ym0(7)、ym0(8)、ym0(9)、ym0(10)、ym0(11)、ym0(12)、ym0(13),其具体计算公式如下:
ym0(0)=b0*x(0)。
ym0(1)=b0*x(1)+b1*x(0)-a1*ym0(0)。
ym0(2)=b0*x(2)+b1*x(1)+b2*x(0)-a1*ym0(1)-a2*ym0(0)。
ym0(3)=b0*x(3)+b1*x(2)+b2*x(1)-a1*ym0(2)-a2*ym0(1)。
ym0(4)=b0*x(4)+b1*x(3)+b2*x(2)-a1*ym0(3)-a2*ym0(2)。
ym0(5)=b0*x(5)+b1*x(4)+b2*x(3)-a1*ym0(4)-a2*ym0(3)。
ym0(6)=b0*x(6)+b1*x(5)+b2*x(4)-a1*ym0(5)-a2*ym0(4)。
ym0(7)=b0*x(7)+b1*x(6)+b2*x(5)-a1*ym0(6)-a2*ym0(5)。
ym0(8)=b0*x(8)+b1*x(7)+b2*x(6)-a1*ym0(7)-a2*ym0(6)。
ym0(9)=b0*x(9)+b1*x(8)+b2*x(7)-a1*ym0(8)-a2*ym0(7)。
ym0(10)=b0*x(10)+b1*x(9)+b2*x(8)-a1*ym0(9)-a2*ym0(8)。
ym0(11)=b0*x(11)+b1*x(10)+b2*x(9)-a1*ym0(10)-a2*ym0(9)。
ym0(12)=b0*x(12)+b1*x(11)+b2*x(10)-a1*ym0(11)-a2*ym0(10)。
ym0(13)=b0*x(13)+b1*x(12)+b2*x(11)-a1*ym0(12)-a2*ym0(11)。
ym0(14)=b0*x(14)+b1*x(13)+b2*x(12)-a1*ym0(13)-a2*ym0(12)。
对于M1来说,若n取0~13,其N个输入样本ym0(0)、ym0(1)、ym0(2)、ym0(3)、ym0(4)、ym0(5)、ym0(6)、ym0(7)、ym0(8)、ym0(9)、ym0(10)、ym0(11)、ym0(12)、ym0(13)经过第2级滤波M1的Section后,对应输出的中间输出结果为ym1(0)、ym1(1)、ym1(2)、ym1(3)、ym1(4)、ym1(5)、ym1(6)、ym1(7)、ym1(8)、ym1(9)、ym1(10)、ym1(11)、ym1(12)、ym1(13),其具体计算公式如下:
ym1(0)=b0*ym0(0)。
ym1(1)=b0*ym0(1)+b1*ym0(0)-a1*ym1(0)。
ym1(2)=b0*ym0(2)+b1*ym0(1)+b2*ym0(0)-a1*ym1(1)-a2*ym1(0)。
ym1(3)=b0*ym0(3)+b1*ym0(2)+b2*ym0(1)-a1*ym1(2)-a2*ym1(1)。
ym1(4)=b0*ym0(4)+b1*ym0(3)+b2*ym0(2)-a1*ym1(3)-a2*ym1(2)。
ym1(5)=b0*ym0(5)+b1*ym0(4)+b2*ym0(3)-a1*ym1(4)-a2*ym1(3)。
ym1(6)=b0*ym0(6)+b1*ym0(5)+b2*ym0(4)-a1*ym1(5)-a2*ym1(4)。
ym1(7)=b0*ym0(7)+b1*ym0(6)+b2*ym0(5)-a1*ym1(6)-a2*ym1(5)。
ym1(8)=b0*ym0(8)+b1*ym0(7)+b2*ym0(6)-a1*ym1(7)-a2*ym1(6)。
ym1(9)=b0*ym0(9)+b1*ym0(8)+b2*ym0(7)-a1*ym1(8)-a2*ym1(7)。
ym1(10)=b0*ym0(10)+b1*ym0(9)+b2*ym0(8)-a1*ym1(9)-a2*ym1(8)。
ym1(11)=b0*ym0(11)+b1*ym0(10)+b2*ym0(9)-a1*ym1(10)-a2*ym1(9)。
ym1(12)=b0*ym0(12)+b1*ym0(11)+b2*ym0(10)-a1*ym1(11)-a2*ym1(10)。
ym1(13)=b0*ym0(13)+b1*ym0(12)+b2*ym0(11)-a1*ym1(12)-a2*ym1(11)。
ym1(14)=b0*ym0(14)+b1*ym0(13)+b2*ym0(12)-a1*ym1(13)-a2*ym1(12)。
对于M2来说,若n取0~13,其N个输入样本ym1(0)、ym1(1)、ym1(2)、ym1(3)、ym1(4)、ym1(5)、ym1(6)、ym1(7)、ym1(8)、ym1(9)、ym1(10)、ym1(11)、ym1(12)、ym1(13)经过第3级滤波M2的Section后,对应输出的中间输出结果为ym2(0)、ym2(1)、ym2(2)、ym2(3)、ym2(4)、ym2(5)、ym2(6)、ym2(7)、ym2(8)、ym2(9)、ym2(10)、ym2(11)、ym2(12)、ym2(13),其具体计算公式如下:
ym2(0)=b0*ym1(0)。
ym2(1)=b0*ym1(1)+b1*ym1(0)-a1*ym2(0)。
ym2(2)=b0*ym1(2)+b1*ym1(1)+b2*ym1(0)-a1*ym2(1)-a2*ym2(0)。
ym2(3)=b0*ym1(3)+b1*ym1(2)+b2*ym1(1)-a1*ym2(2)-a2*ym2(1)。
ym2(4)=b0*ym1(4)+b1*ym1(3)+b2*ym1(2)-a1*ym2(3)-a2*ym2(2)。
ym2(5)=b0*ym1(5)+b1*ym1(4)+b2*ym1(3)-a1*ym2(4)-a2*ym2(3)。
ym2(6)=b0*ym1(6)+b1*ym1(5)+b2*ym1(4)-a1*ym2(5)-a2*ym2(4)。
ym2(7)=b0*ym1(7)+b1*ym1(6)+b2*ym1(5)-a1*ym2(6)-a2*ym2(5)。
ym2(8)=b0*ym1(8)+b1*ym1(7)+b2*ym0(6)-a1*ym2(7)-a2*ym2(6)。
ym2(9)=b0*ym1(9)+b1*ym1(8)+b2*ym1(7)-a1*ym2(8)-a2*ym2(7)。
ym2(10)=b0*ym1(10)+b1*ym1(9)+b2*ym1(8)-a1*ym2(9)-a2*ym2(8)。
ym2(11)=b0*ym1(11)+b1*ym1(10)+b2*ym1(9)-a1*ym2(10)-a2*ym2(9)。
ym2(12)=b0*ym1(12)+b1*ym1(11)+b2*ym1(10)-a1*ym2(11)-a2*ym2(10)。
ym2(13)=b0*ym1(13)+b1*ym1(12)+b2*ym1(11)-a1*ym2(12)-a2*ym2(11)。
ym2(14)=b0*ym1(14)+b1*ym1(13)+b2*ym1(12)-a1*ym2(13)-a2*ym2(12)。
可以理解的是,关于M3、M4、M5、M6的输入输出计算公式,可以请参见上述M1、M2的计算公式,此处不再一一列举。
对于M6来说,若n取0~13,其N个输入样本ym5(0)、ym5(1)、ym5(2)、ym5(3)、ym5(4)、ym5(5)、ym5(6)、ym5(7)、ym5(8)、ym5(9)、ym5(10)、ym5(11)、ym5(12)、ym5(13)经过第7级滤波M6的Section后,对应输出的中间输出结果为ym6(0)、ym6(1)、ym6(2)、ym6(3)、ym6(4)、ym6(5)、ym6(6)、ym6(7)、ym6(8)、ym6(9)、ym6(10)、ym6(11)、ym6(12)、ym6(13),其具体计算公式如下:
ym6(0)=b0*ym5(0)。
ym6(1)=b0*ym5(1)+b1*ym5(0)-a1*ym6(0)。
ym6(2)=b0*ym5(2)+b1*ym5(1)+b2*ym5(0)-a1*ym6(1)-a2*ym6(0)。
ym6(3)=b0*ym5(3)+b1*ym5(2)+b2*ym5(1)-a1*ym6(2)-a2*ym6(1)。
ym6(4)=b0*ym5(4)+b1*ym5(3)+b2*ym5(2)-a1*ym6(3)-a2*ym6(2)。
ym6(5)=b0*ym5(5)+b1*ym5(4)+b2*ym5(3)-a1*ym6(4)-a2*ym6(3)。
ym6(6)=b0*ym5(6)+b1*ym5(5)+b2*ym5(4)-a1*ym6(5)-a2*ym6(4)。
ym6(7)=b0*ym5(7)+b1*ym5(6)+b2*ym5(5)-a1*ym6(6)-a2*ym6(5)。
ym6(8)=b0*ym5(8)+b1*ym5(7)+b2*ym5(6)-a1*ym6(7)-a2*ym6(6)。
ym6(9)=b0*ym5(9)+b1*ym5(8)+b2*ym5(7)-a1*ym6(8)-a2*ym6(7)。
ym6(10)=b0*ym5(10)+b1*ym5(9)+b2*ym5(8)-a1*ym6(9)-a2*ym6(8)。
ym6(11)=b0*ym5(11)+b1*ym5(10)+b2*ym5(9)-a1*ym6(10)-a2*ym6(9)。
ym6(12)=b0*ym5(12)+b1*ym5(11)+b2*ym5(10)-a1*ym6(11)-a2*ym6(10)。
ym6(13)=b0*ym5(13)+b1*ym5(12)+b2*ym5(11)-a1*ym6(12)-a2*ym6(11)。
ym6(14)=b0*ym5(14)+b1*ym5(13)+b2*ym5(12)-a1*ym6(13)-a2*ym6(12)。
需要说明的是,经过最后一级滤波的M7所输出的结果,即为N个初始输入样本x0、x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13的最终滤波结果。因此,对于M7来说,n取0~13,其N个输入样本ym6(0)、ym6(1)、ym6(2)、ym6(3)、ym6(4)、ym6(5)、ym6(6)、ym6(7)、ym6(8)、ym6(9)、ym6(10)、ym6(11)、ym6(12)、ym6(13)经过第8级滤波M7的Section后,对应输出的最终输出结果为ym7(0)、ym7(1)、ym7(2)、ym7(3)、ym7(4)、ym7(5)、ym7(6)、ym7(7)、ym7(8)、ym7(9)、ym7(10)、ym7(11)、ym7(12)、ym7(13),其具体计算公式如下:
ym7(0)=b0*ym6(0)。
ym7(1)=b0*ym6(1)+b1*ym6(0)-a1*ym7(0)。
ym7(2)=b0*ym6(2)+b1*ym6(1)+b2*ym6(0)-a1*ym7(1)-a2*ym7(0)。
ym7(3)=b0*ym6(3)+b1*ym6(2)+b2*ym6(1)-a1*ym7(2)-a2*ym7(1)。
ym7(4)=b0*ym6(4)+b1*ym6(3)+b2*ym6(2)-a1*ym7(3)-a2*ym7(2)。
ym7(5)=b0*ym6(5)+b1*ym6(4)+b2*ym6(3)-a1*ym7(4)-a2*ym7(3)。
ym7(6)=b0*ym6(6)+b1*ym6(5)+b2*ym6(4)-a1*ym7(5)-a2*ym7(4)。
ym7(7)=b0*ym6(7)+b1*ym6(6)+b2*ym6(5)-a1*ym7(6)-a2*ym7(5)。
ym7(8)=b0*ym6(8)+b1*ym6(7)+b2*ym6(6)-a1*ym7(7)-a2*ym7(6)。
ym7(9)=b0*ym6(9)+b1*ym6(8)+b2*ym6(7)-a1*ym7(8)-a2*ym7(7)。
ym7(10)=b0*ym6(10)+b1*ym6(9)+b2*ym6(8)-a1*ym7(9)-a2*ym7(8)。
ym7(11)=b0*ym6(11)+b1*ym6(10)+b2*ym6(9)-a1*ym7(10)-a2*ym7(9)。
ym7(12)=b0*ym6(12)+b1*ym6(11)+b2*ym6(10)-a1*ym7(11)-a2*ym7(10)。
ym7(13)=b0*ym6(13)+b1*ym6(12)+b2*ym6(11)-a1*ym7(12)-a2*ym7(11)。
ym7(14)=b0*ym6(14)+b1*ym6(13)+b2*ym6(12)-a1*ym7(13)-a2*ym7(12)。
进一步地,以运算器103中包括3个运算单元为例,该设计具体如下:
以运算器最多同时处理3个部分为例。对于M个部分,需要上限(M/3)次来处理一个IIR的所有操作。这里的一个IIR是指在所有部分中执行操作。对于一定数量的输入样本数据,处理过程如图4A所示,图4A为本发明实施例提供的一种对14个输入样本进行8级滤波的示意图。在图4A的示例中N=14,M=8。IIR操作的次数为(N+M-1),以获得14个输出结果数据序列即最终输出结果y0-y13。其中,N为14是指一共有14个初始输入样本数据即x0、x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13;而M为8是指一共经过8级滤波;最终M8所输出的y0、y1、y2、y3、y4、y5、y6、y7、y8、y9、y10、y11、y12、y13即为最终的输出结果。
如图4B所示,图4B为本发明实施例提供的一种以最大并行度为3的运算单元对14个输入样本进行8级滤波的示意图。在图4B中X个运算单元即3个运算单元分别对应图4B中的①、②和③。
在外部回路(outerloop)对应的T0,此时,只有运算单元①在计算输入样本x0,经过第1级滤0波M0的计算结果,即中间输出结果ym0(0);
在outerloop对应的T1,此时,有运算单元①在计算输入样本x1经过第0级滤波M0的计算结果(即中间输出结果ym0(1)),同时,还有运算单元②在计算输入样本x1经过第1级滤波M1的计算结果(即中间输出结果ym1(1));
在outerloop对应的T2,此时,有运算单元①在计算输入样本x2经过第0级滤波M0的计算结果(即中间输出结果ym0(2)),同时,还有运算单元②在计算输入样本x2经过第1级滤波M1的计算结果(即中间输出结果ym1(2)),此外还有运算单元③在计算输入样本x2经过第2级滤波M2的计算结果(即中间输出结果ym2(2));
在outerloop对应的T3,此时,有运算单元①在计算输入样本x3经过第0级滤波M0的计算结果(即中间输出结果ym0(3)),同时,还有运算单元②在计算输入样本x3经过第1级滤波M1的计算结果(即中间输出结果ym1(3)),此外还有运算单元③在计算输入样本x3经过第2级滤波M2的计算结果(即中间输出结果ym2(3)),另外在该outerloop对应的T3中,还有运算单元①在计算输入样本x3经过第3级滤波M3的计算结果(即中间输出结果ym3(3)),需要说明的是,该通过运算单元①计算样本x3经过第3级滤波M3的计算过程是在运算单元①计算完样本x3经过第0级滤波M0的计算过程(即计算得到ym0(3))之后执行的,也即是,该T3不是指一个计算周期(是指计算完一个输入样本经过一级滤波的计算周期),即outerloop对应的T可能对应多个计算周期。
以此类推,本申请中的处理器中的运算器所能达到的硬件最大并行度即为X,一个IIR中的操作数在不同的时隙中不一致。在此示例中,操作数将从T0到T7增加一个分段操作,并保持不变(也是最多的操作数),直到T13,然后从T14到T20减少一个分段操作。例如,如上述图4B所示,可通过在处理器10的控制器101中的控制逻辑如硬件有限状态机(Finitestate machine,FSM)中采用两个控制回路:外部回路(Outer loop)和内部回路(innerloop)。内循环号应小于或等于上限(M/3),在此示例中,每个外循环的内循环号如下表1所示。
表1
Outer loop inner loop number
0 1
1 1
2 1
3 2
4 2
5 2
6 3
7 3
8 3
9 3
10 3
11 3
12 3
13 3
14 3
15 2
16 2
17 2
18 1
19 1
20 1
即在上述表1中,例如,T0、T1和T2均分别对应1个计算周期,T3、T4和T5均对应2个计算周期,T6、T7、T8、T9、T10、T11、T12、T13、T14均对应3个计算周期,T6、T7、T8、T9、T10、T11、T12、T13、T14均对应3个计算周期,T15、T16、T17均对应2个计算周期,T18、T19、T20,均对应1个计算周期。
例如,结合上述图2C、图3以及上述表1,假设Mmax是M的最大值,在当前设计中例如Mmax是24。那么需要(Mmax+1)历史表来记录每个部分的输入数据和输出数据的历史值。每个历史记录表的深度为3。对于初始输入数据xn,在第二存储器104即中间结果寄存器只需要记录2个历史值即可。而对于每个部分的输出,需要跟踪3个历史值。以M0,M1为例,在T0,Xn,x(n-1),x(n-2),ym0(n-1),ym0(n-2)会与该部分的系数一起参与该部分的运算。
可选的,如果控制器101发出的是清晰类型的指令(例如,在编程阶段就已经确定好的),则x(n-1),x(n-2),ym0(n-1),ym0(n-2)将为零,因为这是零时间操作,因此没有历史记录有效。如果控制器101发出的是普通类型的指令,将从历史表中弹出x(n-1),x(n-2),ym0(n-1),ym0(n-2)。其中,ym0(n-1),ym0(n-2),ym0(n-3)将在M1部分中用作xn,x(n-1),x(n-2);而ym1(n-1),ym1(n-2)在M1部分中将分别用作y(n-1),y(n-2)。如果是清晰的类型指令,则在M1中不会执行任何操作。如果是普通类型的点对点指令,将从历史表中弹出ym0(n),ym0(n-1),ym0(n-2),ym1(n-1),ym1(n-2)。对于
Figure BDA0003047139050000211
将应用相同的分析,此处不再赘述。可以理解的是,所有历史表可以在T0的开始时刻进行更新。
其中,清晰指令是指示将第二存储器中的中间输出结果清零,普通指令是指示保留第二存储器中的中间输出结果。可以理解的是,清晰指令可用在一个IIR算法的第一次运算,其他时候都可用普通指令。本发明实施例中采用上述两种类型的指令的可以减少清零第二存储器的代价。
此外,从图4B中可以看出,在T6的末尾,将得到第一个输出结果y0;然后在T7的末尾,将得到第二个输出结果y1,以此类推,在T20的末尾,将获得最后的输出结果y13。由于最终输出结果被放入第一存储器102也即是向量寄存器列表VRF。而通常一个向量寄存器可能只能保存16个输出结果。因此,外环控制可以进一步分为两个级别的环控制:向量寄存器ID控制和元素ID增加控制。在每个外循环期间,调度单元1012将发送一个向量加载指令,加载一个32位数据。加载结果将更新输入数据历史表,在每三个并发段处理(TCSP)中,调度单元1012将调度一个dotiir指令。结果将更新部分结果历史表,如果输出结果也准备就绪,将更新向量寄存器列表VRF。
请参见图5,图5是本发明实施例提供的一种滤波方法的流程示意图,该滤波方法应用于处理器,所述处理器包括控制器、耦合于所述控制器的运算器、第一存储器和第二存储器,所述运算器包括X个运算单元,X为大于0的整数;且该滤波方法适用于上述图2A-图2C中的任意一种处理器以及包含所述处理器的设备(如手机、电脑、智能耳机、智能穿戴设备、服务器等)。该方法可以包括以下步骤S501-步骤S504,其中,
步骤S501:通过所述第一存储器存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
步骤S502:通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
步骤S503:通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取1、2、3、……M-2;
步骤S504:通过所述第二存储器,存储所述N个输入样本经过第i级滤波的中间输出结果。
在一种可能的实现方式中,所述方法还包括:
通过所述控制器,将所述第二存储器中的所述N个输入样本经过第i级滤波的中间输出结果调度至所述运算器中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于第i+1级滤波的滤波系数和所述经过第i级滤波的中间输出结果,计算得到所述N个输入样本的第i+1级滤波的中间输出结果。
在一种可能的实现方式中,所述M级滤波为M级的双二阶滤波;将所述M级滤波中的第i级滤波中的第n个输入样本对应的中间输出结果记为ymi(n),i取0、1、2、3、……M-2,n取0、1、2、3、……N-1;
所述通过所述第二存储器,存储所述N个输入样本经过第i级滤波的中间输出结果,包括:
通过所述第二存储器,存储所述N个输入样本中第n-1个、第n-2个、第n-3个输入样本经过各级滤波的中间输出结果ymi(n-1)、ymi(n-2)、ymi(n-3)。
在一种可能的实现方式中,所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第二存储器中的ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2)调度至所述运算器中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,根据第i+1级滤波的滤波系数和ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2),计算得到第n-1个输入样本的第i+1级滤波的中间输出结果Ym(i+1)(n-1)。
在一种可能的实现方式中,当X小于M时;
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的X个运算单元中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,通过所述X个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,k取不同值时的第kX+L级滤波的中间输出结果,分别于不同的时钟周期由同一个运算单元计算得到;k取0、1、2、3……[M/X];L取0、1、2、3……X-1。
在一种可能的实现方式中,当X大于或等于M时;
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的M个运算单元中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,通过所述M个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,所述M个运算单元中的每个运算单元用于计算其中一级滤波的中间输出结果。
在一种可能的实现方式中,所述处理器还包括访存单元;所述处理器与外部存储器耦合;所述方法,还包括:
通过所述访存单元,从所述外部存储器中读取所述目标滤波数据,并将所述目标滤波数据发送至所述第一存储器中进行存储。
在一种可能的实现方式中,所述控制器、所述运算器、所述第一存储器和所述第二存储器集成在所述处理器的处理器核中。
在一种可能的实现方式中,所述第一存储器为向量寄存器列表,所述第二存储器为中间结果寄存器;所述控制器包括译码单元和调度单元。
需要说明的是,本发明实施例中所描述的滤波方法的具体流程,可参见上述图2A-图4B中所述的发明实施例中的相关描述,此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序被处理器执行时,使得所述处理器可以执行上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被处理器执行时,使得所述处理器可以执行上述方法实施例中记载的任意一种的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (19)

1.一种处理器,其特征在于,包括:控制器、耦合于所述控制器的运算器、第一存储器和第二存储器,所述运算器包括X个运算单元,X为大于0的整数;
所述第一存储器,用于存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
所述控制器,用于根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
所述运算器,用于基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2;
所述第二存储器,用于存储所述N个输入样本经过第i级滤波的中间输出结果。
2.根据权利要求1所述的处理器,其特征在于,
所述控制器,还用于将所述第二存储器中的所述N个输入样本经过第i级滤波的中间输出结果调度至所述运算器中;
所述运算器,具体用于基于第i+1级滤波的滤波系数和所述经过第i级滤波的中间输出结果,计算得到所述N个输入样本的第i+1级滤波的中间输出结果。
3.根据权利要求1或2所述的处理器,其特征在于,所述M级滤波为M级的双二阶滤波;将所述M级滤波中的第i级滤波中的第n个输入样本对应的中间输出结果记为ymi(n),i取0、1、2、3、……M-2,n取0、1、2、3、……N-1;
所述第二存储器,具体用于存储所述N个输入样本中第n-1个、第n-2个、第n-3个输入样本经过各级滤波的中间输出结果ymi(n-1)、ymi(n-2)、ymi(n-3)。
4.根据权利要求3所述的处理器,其特征在于,
所述控制器,具体将所述第二存储器中的ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2)调度至所述运算器中;
所述运算器,具体用于根据第i+1级滤波的滤波系数和ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2),计算得到第n-1个输入样本的第i+1级滤波的中间输出结果Ym(i+1)(n-1)。
5.根据权利要求1或2所述的处理器,其特征在于,当X小于M时;
所述控制器,具体用于将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的X个运算单元中;
所述运算器,具体用于基于所述N个输入样本和所述M组滤波系数,通过所述X个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,k取不同值时的第kX+L级滤波的中间输出结果,分别于不同的时钟周期由同一个运算单元计算得到;k取0、1、2、3……[M/X];L取0、1、2、3……X-1。
6.根据权利要求1或2所述的处理器,其特征在于,当X大于或等于M时;
所述控制器,具体用于将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的M个运算单元中;
所述运算器,具体用于基于所述N个输入样本和所述M组滤波系数,通过所述M个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,所述M个运算单元中的每个运算单元用于计算其中一级滤波的中间输出结果。
7.根据权利要求1或2所述的处理器,其特征在于,所述处理器还包括访存单元;所述处理器与外部存储器耦合;
所述访存单元,用于从所述外部存储器中读取所述目标滤波数据,并将所述目标滤波数据发送至所述第一存储器中进行存储。
8.根据权利要求1或2所述的处理器,其特征在于,所述控制器、所述运算器、所述第一存储器和所述第二存储器集成在所述处理器的处理器核中。
9.根据权利要求1或2所述的处理器,其特征在于,所述第一存储器为向量寄存器列表,所述第二存储器为中间结果寄存器;所述控制器包括译码单元和调度单元。
10.一种滤波方法,其特征在于,应用于处理器,所述处理器包括:控制器、耦合于所述控制器的运算器、第一存储器和第二存储器,所述运算器包括X个运算单元,X为大于0的整数;所述方法,包括:
通过所述第一存储器存储目标滤波数据,所述目标滤波数据包括N个输入样本、以及对所述N个输入样本进行M级滤波所对应的M组滤波系数;其中,N和M均为大于0的整数;
通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中;
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,当X小于M时,所述X个运算单元中至少一个运算单元用于计算至少两级滤波的中间输出结果;所述N个输入样本经过第i级滤波的中间输出结果作为第i+1级滤波的输入参数,i取0、1、2、3、……M-2;
通过所述第二存储器,存储所述N个输入样本经过第i级滤波的中间输出结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
通过所述控制器,将所述第二存储器中的所述N个输入样本经过第i级滤波的中间输出结果调度至所述运算器中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于第i+1级滤波的滤波系数和所述经过第i级滤波的中间输出结果,计算得到所述N个输入样本的第i+1级滤波的中间输出结果。
12.根据权利要求10或11所述的方法,其特征在于,所述M级滤波为M级的双二阶滤波;将所述M级滤波中的第i级滤波中的第n个输入样本对应的中间输出结果记为ymi(n),i取0、1、2、3、……M-2,n取0、1、2、3、……N-1;
所述通过所述第二存储器,存储所述N个输入样本经过第i级滤波的中间输出结果,包括:
通过所述第二存储器,存储所述N个输入样本中第n-1个、第n-2个、第n-3个输入样本经过各级滤波的中间输出结果ymi(n-1)、ymi(n-2)、ymi(n-3)。
13.根据权利要求12所述的方法,其特征在于,
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第二存储器中的ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2)调度至所述运算器中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,根据第i+1级滤波的滤波系数和ymi(n-3)、ymi(n-2)、ymi(n-1),以及ym(i+1)(n-3)、ym(i+1)(n-2),计算得到第n-1个输入样本的第i+1级滤波的中间输出结果Ym(i+1)(n-1)。
14.根据权利要求10或11所述的方法,其特征在于,当X小于M时;
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的X个运算单元中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,通过所述X个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,k取不同值时的第kX+L级滤波的中间输出结果,分别于不同的时钟周期由同一个运算单元计算得到;k取0、1、2、3……[M/X];L取0、1、2、3……X-1。
15.根据权利要求10或11所述的方法,其特征在于,当X大于或等于M时;
所述通过所述控制器,根据M与X之间的大小关系,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中,包括:
通过所述控制器,将所述第一存储器中的所述N个输入样本、所述M组滤波系数调度至所述运算器中的M个运算单元中;
所述通过所述运算器,基于所述N个输入样本和所述M组滤波系数,计算得到所述N个输入样本经过所述M级滤波的最终输出结果,包括:
通过所述运算器,基于所述N个输入样本和所述M组滤波系数,通过所述M个运算单元计算得到所述N个输入样本经过所述M级滤波的最终输出结果,并存储至所述第一存储器中;其中,所述M个运算单元中的每个运算单元用于计算其中一级滤波的中间输出结果。
16.根据权利要求10或11所述的方法,其特征在于,所述处理器还包括访存单元;所述处理器与外部存储器耦合;所述方法,还包括:
通过所述访存单元,从所述外部存储器中读取所述目标滤波数据,并将所述目标滤波数据发送至所述第一存储器中进行存储。
17.根据权利要求10或11所述的方法,其特征在于,所述控制器、所述运算器、所述第一存储器和所述第二存储器集成在所述处理器的处理器核中。
18.根据权利要求10或11所述的方法,其特征在于,所述第一存储器为向量寄存器列表,所述第二存储器为中间结果寄存器;所述控制器包括译码单元和调度单元。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求10-18任意一项所述的方法。
CN202110476078.0A 2021-04-29 2021-04-29 一种处理器、滤波方法及相关设备 Active CN113258902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110476078.0A CN113258902B (zh) 2021-04-29 2021-04-29 一种处理器、滤波方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110476078.0A CN113258902B (zh) 2021-04-29 2021-04-29 一种处理器、滤波方法及相关设备

Publications (2)

Publication Number Publication Date
CN113258902A CN113258902A (zh) 2021-08-13
CN113258902B true CN113258902B (zh) 2022-02-22

Family

ID=77223307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110476078.0A Active CN113258902B (zh) 2021-04-29 2021-04-29 一种处理器、滤波方法及相关设备

Country Status (1)

Country Link
CN (1) CN113258902B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102510273B (zh) * 2011-12-27 2014-05-07 中国科学院自动化研究所 一种有限脉冲响应滤波器
TWI538000B (zh) * 2012-05-10 2016-06-11 杜比實驗室特許公司 多階段過濾器,音頻編碼器,音頻解碼器,施行多階段過濾的方法,用以編碼音頻資料的方法,用以將編碼音頻資料解碼的方法,及用以處理編碼位元流的方法和裝置
CN104901651A (zh) * 2015-06-25 2015-09-09 福州瑞芯微电子有限公司 一种数字滤波器的实现电路及方法
US9985608B2 (en) * 2015-09-24 2018-05-29 Analog Devices Global Small area and low power IIR filter structure

Also Published As

Publication number Publication date
CN113258902A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN107316078B (zh) 用于执行人工神经网络自学习运算的装置和方法
US20200097792A1 (en) Processing apparatus and processing method
CN107704267B (zh) 一种卷积神经网络运算指令及其方法
US7062526B1 (en) Microprocessor with rounding multiply instructions
JP6243000B2 (ja) マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
US6714956B1 (en) Hardware accelerator for normal least-mean-square algorithm-based coefficient adaptation
US9164763B2 (en) Single instruction group information processing apparatus for dynamically performing transient processing associated with a repeat instruction
CN107833176A (zh) 一种信息处理方法及相关产品
US20140365548A1 (en) Vector matrix product accelerator for microprocessor integration
JPH10187438A (ja) 乗算器の入力に対する遷移を減少させる方法
US11372804B2 (en) System and method of loading and replication of sub-vector values
WO2023226802A1 (zh) Risc架构处理器的寄存器架构、寄存器组及risc架构处理器
CN112528219A (zh) 存储器装置及其运算方法、计算设备
CN113258902B (zh) 一种处理器、滤波方法及相关设备
JP2000322235A (ja) 情報処理装置
US5931892A (en) Enhanced adaptive filtering technique
US8972471B2 (en) Arithmetic module, device and system
US6766440B1 (en) Microprocessor with conditional cross path stall to minimize CPU cycle time length
Fridman Data alignment for sub-word parallelism in DSP
GB2582868A (en) Hardware implementation of convolution layer of deep neural network
CN114510217A (zh) 处理数据的方法、装置和设备
US5204962A (en) Processor with preceding operation circuit connected to output of data register
Kularatna Digital Signal Processors
US6745314B1 (en) Circular buffer control circuit and method of operation thereof
JPH0616287B2 (ja) マスク付きベクトル演算処理装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant