发明内容
本发明要解决的技术问题是提供一种并行结构的FIR滤波器及其处理方法,使得在多核处理器芯片中,多个核并行完成一个高阶数的FIR滤波运算。
为解决上述技术问题,本发明提供了一种并行结构的有限脉冲响应(FIR)滤波器的处理方法,涉及多核FIR滤波器,该方法包括:
所述多核FIR滤波器中设置多条FIR滤波并行支路;
当所述多核FIR滤波器接收到输入数据时,将所述输入数据分别发送给各条FIR滤波并行支路,各条FIR滤波并行支路按照并行支路控制开关组的控制策略进行FIR滤波处理,并将各条FIR滤波并行支路的输出数据进行组合,作为所述FIR滤波器的输出数据输出;其中,每条并行支路或相应的从核并不处理所有的输入数据,只按照控制开关的控制策略处理相应部分的输入数据。
进一步地,上述方法中,所述多核FIR滤波器将输入数据分别发送给各条FIR滤波并行支路时,按照发送顺序依次以中断方式启动各条FIR滤波并行支路进行FIR滤波处理。
其中,所述各条FIR滤波并行支路接收所述输入数据后,第X条FIR滤波并行支路仅对输入数据中采样值序号为n的数据进行FIR滤波处理,其中,X=n%m+1,m为所述多核FIR滤波器中滤波单元的数目。
所述多核FIR滤波器中设置的FIR滤波并行支路数目等于所述多核FIR滤波器中核数目减1。
所述多核FIR滤波器通过快速搬移工具将所述输入数据分别发送给各条FIR滤波并行支路。
本发明还公开了一种并行结构的FIR滤波器,该FIR滤波器为多核FIR滤波器,包括控制单元以及两个以上并行的滤波单元,其中:
所述控制单元,用于将接收的输入数据分别发送给各滤波单元,以及用于将各滤波单元的输出数据进行组合,作为所述FIR滤波器的输出数据输出;
所述滤波单元,用于按照并行支路控制开关组的控制策略对所述控制单元发送的数据进行FIR滤波处理,并将滤波后的数据作为输出数据发送给所述控制单元;其中,每个滤波单元或相应的从核并不处理所有的输入数据,只按照控制开关的控制策略处理相应部分的输入数据。
进一步地,上述滤波器中,所述控制单元,将输入数据分别发送给各条FIR滤波并行支路时,还按照发送顺序依次以中断方式启动各条FIR滤波并行支路进行FIR滤波处理。
其中,所述滤波单元,仅对输入数据中采样值序号为n的数据进行FIR滤波处理,所述滤波单元的序号满足如下要求:
X=n%m+1,
m为所述多核FIR滤波器中滤波单元的数目,X为该滤波单元的序号。
所述多核FIR滤波器中滤波单元数目等于所述多核FIR滤波器中核数目减1。
所述控制单元,通过快速搬移工具将所述输入数据分别发送给各滤波单元。
采用本发明技术方案使得,多核处理器芯片可以(使用多个核共同)完成一个高阶数的FIR滤波运算,且较单核处理器大大减少了FIR滤波器的总体运行时间。
具体实施方式
本发明的发明构思是:可以将FIR滤波器的运算任务分配到多个核上并行运行,以减少FIR滤波器总体运行时间。具体地,可以根据不同类型多核处理器芯片的内部硬件资源,来灵活设计和实现高阶数FIR滤波器的并行运行。其中,多核FIR滤波器并行结构中的并行支路数目和设定使用的从核数目相等,可以为2、3、4、5等等,即一个从核运行一条FIR滤波器的并行支路。当输入数据以数据块方式接收时,输入数据几乎是同时到达各条并行支路,也就是各个从核大体可以同时并行处理这些输入数据,使得处理时间减少。另外,在FIR滤波器并行结构中设置控制开关,每条并行支路或相应的从核并不处理所有的输入数据,只按照控制开关的控制策略处理一部分的输入数据。
下面结合附图及具体实施例对本发明技术方案作进一步详细说明。
一种并行结构的FIR滤波器,可并行完成高阶数的FIR滤波运算,其结构如图1所示,包括控制单元以及若干并行的滤波单元。下面介绍各单元的功能。
控制单元,用于将接收到的输入数据分别发送给各滤波单元,以及用于收集和组合各滤波单元处理后的数据,作为整个并行结构的FIR滤波器的输出数据;
本实施例中,控制单元由多核处理器中的主核(例如Core0)实现,其进一步可以包括数据分发模块、数据收集模块和数据组合模块,其中:
数据分发模块,将输入数据分别发送给各滤波单元的内存中去,并用核间中断方式启动各滤波单元运行FIR滤波程序;
数据收集模块,按照启动滤波单元的顺序,分别等待和查询各个滤波单元是否完成FIR滤波,如果完成,则将各滤波单元的输出数据搬移到控制单元的内存中;
本实施例中,数据收集通过查询各滤波单元的运行完成标志,如被置位,则认为各滤波单元完成FIR滤波;
数据组合模块,将各个滤波单元的输出数据按某种方式组合在一起,作为最后FIR滤波器的输出数据;
滤波单元,用于对所收到的数据进行FIR滤波处理;
本实施例中,每个滤波单元是由多核FIR滤波器中的一个从核(例如Core1、Core2、Core3等)实现的,滤波单元进一步包括控制开关、若干系数乘法器、若干加法器和若干移位逻辑单元,其中,加法器和移位逻辑单元的数目相等,并等于FIR滤波器阶数减1,而系数乘法器的数目则与FIR滤波器阶数相同。
控制开关,用以接通或断开输入数据到系数乘法器的连接通路;
其中,控制开关按照控制策略接通或断开,该控制策略是根据输入数据的采样值序号和滤波单元的序号数来联合制定。
移位逻辑单元,用于顺序存放输入的数据,本实施例中,移位逻辑单元按照采样值序号顺序存放各样值,并将存放的样值送到各自的系数乘法器,其中,第一个移位逻辑单元空出后,将接收一个新的从外部来的样值,而最后一个移位逻辑单元则将样值抛弃,接收前一个移位逻辑单元的样值;
系数乘法器,用于将收到的样值和系数相乘,然后将本单元的乘积值移送到其后面的加法器中;
加法器,用于将上一级的乘法结果或加法器的输出结果与本级的乘法结果相加,然后将加法结果再输出到下一级的加法器中,最后一个加法器将输出结果送到数据收集模块中;
本实施例中,FIR滤波器中并行结构的滤波单元的信号流向,如图2所示,图中的x(n)是输入数据,n是输入的样值顺序号,n=0、1、2、3等等,y(n)是输出数据,h(i)是滤波器系数,i=0,1,2,...N-1,其中,N是滤波器阶数。z-1是移位逻辑单元。m是并行的滤波单元数目(也可以称为并行FIR滤波支路数目),m=1、2、3等,分别称为滤波单元1,滤波单元2,滤波单元3等等,m的值应该等于FIR滤波器所使用的多核处理器中从核的个数(即每个滤波单元是由一个从核实现的)。k1、k2、k3......km分别是各滤波单元的控制开关组,每组开关的个数均相同并与FIR滤波器的系数个数相等。P1、P2、P3......Pm分别是各滤波单元的控制开关组的控制策略。
下面介绍上述FIR滤波器实现高阶FIR滤波处理的过程。
由于参与FIR滤波器运算的核的数量要按照具体多核处理器的硬件资源来定,本实施例中,设定FIR滤波器使用处理器核的个数为4,其中,从核的个数为3,即m=3,表示有3个滤波单元(即3条并行FIR滤波支路),其中,设定Core0作为控制单元(也称主核),Core1、Core2和Core3分别作为滤波单元(也称从核),设定进入多核处理器芯片的外部输入数据是以数据块的方式存放在主核的内存中,数据块的长度可自由设定,一般为16、32、64、128、256等等,但要满足数据块的长度远大于使用处理器核的个数。此外所述FIR滤波器的系数表格也被事先存放在所有使用的处理器从核内存中,下面介绍这四个核共同完成一个高阶数FIR滤波的过程是,先分发输入数据,再收集各并行滤波支路的输出数据,最后组合滤波数据作为输出数据。
其中,分发输入数据过程,可使用多核处理器芯片中自有的快速数据搬移功能模块实现,如DMA等,对各个从核的分发顺序不作要求,但每完成一个从核的数据分发之后,立即用核间中断方式启动该从核运行FIR滤波程序,当然在有些实施例中,也可以用核间中断方式以外的其他方式启动从核运行FIR滤波程序。具体实现过程,如图3所示,包括以下步骤:
步骤301:Core0将输入的数据块发送到Core1的内存中;
步骤302:Core0用核间中断方式启动从核Core1运行FIR滤波程序;
步骤303:Core0将输入的数据块发送到Core2的内存中;
步骤304:Core0用核间中断方式启动从核Core2运行FIR滤波程序;
步骤305:Core0将输入的数据块发送到Core3的内存中;
步骤306:Core0用核间中断方式启动从核Core3运行FIR滤波程序。
数据分发完成后,各个从核在中断服务程序中,按照并行支路控制开关组的控制策略来运行FIR滤波程序,本实施例中,Core1、Core2和Core3分别运行第一条并行FIR滤波支路、第二条并行FIR滤波支路和第三条并行FIR滤波支路;其中,各条并行FIR滤波支路的控制策略的逻辑表达式为n%m,其中,n是输入的样值顺序号,m是并行FIR滤波支路数。由于本实施例中,m=3,即余数只能是0、1、2三个值,当余数是0时,k1控制开关组闭合,其它控制开关组断开;当余数是1时,k2控制开关组闭合,其它控制开关组断开;当余数是2时,k3控制开关组闭合,其它控制开关组断开。即,第一条并行支路只计算余数是0的输入样值,第二条并行支路只计算余数是1的输入样值,第三条并行支路只计算余数是2的输入样值。
具体地,可通过软件实现上述的控制策略,即Core1只计算样值顺序号是0、3、6、9、12等等的输入数据,Core2只计算样值顺序号是1、4、7、10、13等等这些的输入数据,Core3只计算样值顺序号是2、5、8、11、14等等这些的输入数据。
其中,在某条并行FIR滤波支路中,当其控制开关组闭合时,有数据输出;但当其控制开关组断开时,它的移位功能照常进行,但所有其他计算功能均停止不做,等到其控制开关组再度闭合时,才开始计算。但要求当其控制开关组断开时,它的输出数据是0。
各个从核在其滤波计算完成之后,要将输出数据存放在各自核的内存中,将各自核的运行完成标志置位,并等待主核来查询完成标志置位和搬移输出数据。
收集数据的过程是,主核Core0分发完数据之后,按照启动从核运行的顺序,分别查询各个从核的运行完成标志,当某个从核的运行完成标志已经被置时,使用快速数据搬移功能模块,如DMA等,将该从核的输出数据搬移到主核的内存中,具体过程如图4所示,包括以下步骤:
步骤401:Core0分发完三个核的输入数据后,查询Core1运行完成标志是否置位,如果是,进入步骤402,否则继续等待;
步骤402:Core0将Core1的输出数据搬移到Core0的内存中;
步骤403:Core0查询Core2运行完成标志是否置位,如果是,进入步骤404,否则继续等待;
步骤404:Core0将Core2的输出数据搬移到Core0的内存中;
步骤405:Core0查询Core3运行完成标志是否置位,如果是,进入步骤406,否则继续等待;
步骤406:Core0将Core3的输出数据搬移到Core0的内存中。
组合数据的过程是,主核在退出数据收集模块,要组合数据,即将各个从核的输出数据的样值顺序号按某种方式组合在一起,成为最终的FIR滤波器输出数据。具体过程如图5所示,包括以下步骤:
步骤501:取Core1输出的0号样值;
步骤502:取Core2输出的1号样值;
步骤503:取Core3输出的2号样值;
步骤503执行完成后,再返回到Core1取出3号样值,到Core2取出4号样值,到Core3取出5号样值,余此类推,直至取完最后一个输出数据。到此为止,一个高阶数的FIR滤波器运行任务由四个处理器核以并行方式分别同时完成任务的不同部分而结束。
上述实施例中使用三个从核执行三条并行支路,根据一个实施例的实际测试结果表明,其总体FIR滤波运算时间被减少了2.7倍。
从上述实施例可以看出,本发明技术方案将FIR滤波器的运算任务分配到多个核上并行运行,并且在FIR滤波器并行结构中设置了控制开关,每条并行支路或相应的从核并不处理所有的输入数据,只按照控制开关的控制策略处理一部分的输入数据,因此,大大减少了FIR滤波器的运算时间。理论分析如下:假如一个输入数据的样值运行一次FIR滤波运算的时间是L,那么对于单核FIR滤波器而言,S个样值的总体FIR滤波运算的时间是S×L。而对于多核FIR滤波器,采用本发明技术方案时,若设定使用的从核数目为M时,并行支路数目也为M,由于一个并行支路只处理S/M个样值,而所有的并行支路都几乎同时运行,因此,S个样值的总体FIR滤波运算的时间就是(S/M)×L。显然,采用本发明技术方案的多核FIR滤波器并行处理的时间是单核的1/M,同时,随着FIR滤波器中从核数目的增加,总体FIR滤波运算的时间就越少。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。