CN102231624B - 面向向量处理器的浮点复数块fir的向量化实现方法 - Google Patents

面向向量处理器的浮点复数块fir的向量化实现方法 Download PDF

Info

Publication number
CN102231624B
CN102231624B CN201110213358.9A CN201110213358A CN102231624B CN 102231624 B CN102231624 B CN 102231624B CN 201110213358 A CN201110213358 A CN 201110213358A CN 102231624 B CN102231624 B CN 102231624B
Authority
CN
China
Prior art keywords
data
real part
address
vector
imaginary part
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
CN201110213358.9A
Other languages
English (en)
Other versions
CN102231624A (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201110213358.9A priority Critical patent/CN102231624B/zh
Publication of CN102231624A publication Critical patent/CN102231624A/zh
Application granted granted Critical
Publication of CN102231624B publication Critical patent/CN102231624B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种面向向量处理器的浮点复数块FIR的向量化实现方法,包括以下步骤:(1)输入向量数据x,系数数据h;将向量数据x的虚部和实部分别连续存放,将系数数据h的虚部和实部分别连续存放;向量处理器包括p个处理单元;(2)将向量数据x的实部和虚部、系数数据h的实部和虚部并行加载到向量处理器的同一个处理单元的不同局部寄存器中;(3)p个处理单元中的每个处理单元在本单元内执行向量数据x和系数数据h的复数乘法并将乘法的结果进行累加;(4)p个处理单元的计算完成,输出p个结果。本发明具有原理简单、操作方便、能够高效计算并能缩短整个算法的运算时间、能提高处理器计算资源使用效率等优点。

Description

面向向量处理器的浮点复数块FIR的向量化实现方法
技术领域
本发明涉及FIR滤波器向量化领域,特指一种浮点复数块FIR向量化实现方法。
背景技术
随着4G无线通信、雷达信号处理、高清视频和数字图像处理等计算密集型应用的计算需求越来越高,单芯片难以满足应用需求,多核处理器尤其是其中的向量处理器得到了广泛的应用。如图1所示,是向量处理器的一般结构示意图,向量处理器一般由p个处理单元(PE)组成,通常支持基于向量的数据加载和存储。每个PE包含独立的多个功能部件,一般包括移位部件(BP)、算术部件(ALU)、乘法部件(MUL)等,每个PE包行一组局部寄存器,所有PE的同一编号的局部寄存器在逻辑上又组成一个向量寄存器。例如图1所示PE0-PEp-1的R0寄存器在逻辑上组成了向量寄存器VR0,每个PE所对应的R0称为向量寄存器的一个元素。向量处理器采用SIMD的方式,在同一条向量指令的控制下,p个PE同时对各自的局部寄存器进行相同操作,用以开发应用程序的数据级并行性。每个PE对应多个存储体(bank0,bank1,bank2,bank3),数据映射到不同的存储体能够避免存储冲突。
向量处理器包含大量功能单元,适合处理包含大量高密集运算的任务,如矩阵分解、FFT运算、FIR(Finite Impulse Response)滤波运算等。然而,很多高密集运算的任务由于算法本身的特性,向量化处理困难,如何将这些算法高效的映射到向量处理器,即这些算法的向量化方法,是提高向量处理器使用效率的关键。例如,浮点复数块FIR的向量化,浮点复数的实部与虚部都是32位,如果按照通常的实部与虚部相间隔的方法放置数据,那么,一个复数的实部与虚部被分别加载到不同PE的局部寄存器,后续的复数乘法和累加非常困难,系数长度与PE数量的不匹配导致不能充分利用向量处理器所有可并行的运算资源。
FIR滤波器是输入信号流x[n]与冲击响应h[n]的离散卷积,一个系数长度为v的FIR滤波器计算公式如下:
y n = Σ k = 0 v - 1 h k x n - k - - - ( 1 )
其中hk(0≤k≤v-1)是滤波器系数,xn-k是输入信号。每一输出yn的计算需要v次乘法和v-1次加法。
FIR滤波器的计算包括两层循环,通常的向量化方法是向量化内循环,即计算每个输出值所需要的内循环计算向量化,分配到各个PE并行执行,将方程(1)展开得到方程(2)所示:
yn=xnh0+xn-1h1+…+xn-l+1hl-1                                        (2)
其中的xnh0,xn-1h1,…,xn-l+1hl-1分别在每个PE并行执行,执行完以后,对所有PE执行规约求和操作,得到一个输出值yn
这种方法的优点是程序简单,只有一层循环,尤其是当系数长度v是PE数量p的整数倍时,且向量处理器提供规约求和操作,能够取得较高效的计算性能。但是,存在的缺点是非常明显的:(1)向量处理器一般只支持定点加法规约,而浮点加法规约的硬件成本高,一般不支持;(2)对于浮点复数滤波数据,由于复数的实部与虚部在不同PE的局部寄存器中,实现复数的乘法和累加困难;(3)当系数v不是PE数量p的整数倍时,难以充分发挥全部PE的并行计算能力,编程控制和软件流水困难,限制了许多FIR的应用。
发明内容
本发明所要解决的技术问题是:针对现有技术存在的问题,本发明提供一种原理简单、操作方便、能够高效计算并能缩短整个算法的运算时间、提高处理器计算资源使用效率的面向向量处理器的浮点复数块FIR的向量化实现方法。
为解决上述技术问题,本发明采用以下技术方案:
一种面向向量处理器的浮点复数块FIR的向量化实现方法,包括以下步骤:
(1)输入向量数据x、系数数据h;将所述向量数据x的虚部和实部分别连续存放,将所述系数数据h的虚部和实部分别连续存放;所述向量处理器包括p个处理单元;
(2)将向量数据x的实部和虚部、系数数据h的实部和虚部并行加载到向量处理器的同一个处理单元的不同局部寄存器中;
(3)所述p个处理单元中的每个处理单元在本单元内执行向量数据x和系数数据h的复数乘法并将乘法的结果进行累加;
(4)p个处理单元的计算完成,输出p个结果。
作为本发明的进一步改进:
所述向量数据x的实部存放在地址VAR1开始的连续区域;输入向量数据x的虚部存放在地址VAR2开始的连续区域;系数数据h的实部存放在地址VAR3开始的连续区域,并且每个实部重复存储p个;系数数据h的虚部存放在地址VAR4开始的连续区域,并且每个虚部重复存储p个,所述VAR1、VAR2、VAR3和VAR4分别映射到不同的存储体中。
与现有技术相比,本发明的优点在于:
1、本发明的面向向量处理器的浮点复数块FIR的向量化实现方法,能够适用于各种系数长度的FIR计算,不受限于系数长度是否是PE数量的整数倍,不受限于向量处理器是否支持PE间的加法归约,能够充分挖掘向量处理器的指令级和数据级并行性,发挥向量处理器的所有处理单元的并行计算性能,缩短浮点复数块FIR的计算时间,可高效的支持各种系数长度的浮点复数块FIR向量化;
2、本发明的面向向量处理器的浮点复数块FIR的向量化实现方法,实现简单、成本低廉、操作十分方便、可靠性好;在实现相同功能的情况下,可降低硬件的功耗。
附图说明
图1是向量处理器的一般结构示意图;
图2是本发明具体实施例的总流程示意图;
图3是本发明的向量数据x和系数数据h的初始存放地址示意图;
图4是本发明的向量处理器的浮点复数块FIR向量化的伪代码段。
具体实施方式
以下将结合说明书附图和具体实施例对本发明作进一步详细说明。
如图2所示,本发明的面向向量处理器的浮点复数块FIR的向量化实现方法,包括以下步骤:
1、输入向量数据x,长度为n;系数数据h,长度为v;将向量数据x的虚部和实部分别连续存放,将系数数据h的虚部和实部分别连续存放;向量处理器包括p个处理单元,每个处理单元对应多个存储体;
如图3所示,向量数据x的实部存放在地址VAR1开始的连续区域;输入向量数据x的虚部存放在地址VAR2开始的连续区域;系数数据h的实部存放在地址VAR3开始的连续区域,并且每个实部重复存储p个,如图3中的连续p个h[0].r;系数数据h的虚部存放在地址VAR4开始的连续区域,并且每个虚部重复存储p个,即图3中的连续p个h[0].i;VAR1、VAR2、VAR3和VAR4分别映射到不同的存储体中。
VAR1、VAR2、VAR3和VAR4的计算方法为:图3显示每一行的数据宽度是p个字,即4*p字节,假定每个PE对应b个存储体(图1中的bank数量),则与PE0的第1个存储体地址对齐的地址为4p*b*s,其中s是整数。选择合适的整数s使得4s*p*b是空闲的存储地址。由此确定VAR1=4s*p*b,使得VAR1是空闲的,且与PE0的第1个存储体地址对齐。
VAR1作为输入向量数据x的实部存放在地址;
VAR2作为输入向量数据x的虚部存放在地址,它与VAR1的间隔至少是输入向量数据x的实部数据长度4*n,为确保VAR1与VAR2对应到PE0的不同存储体,可选择一定的偏移量4*m1,即VAR2=VAR1+4*n+4*m1=VAR1+4*(n+m1);
VAR3作为系数数据h的实部存放在地址,它与VAR1的间隔至少是输入向量数据x的虚部数据长度4*n,即VAR3=VAR2+4*n;
VAR4作为系数数据h的虚部存放在地址,它与VAR3的间隔至少是系数数据h的实部数据长度4*v*p,为确保VAR4与VAR3对应到PE0的不同存储体,可选择一定的偏移量4*m2,即VAR4=VAR3+4*v*p+4*m2=VAR3+4*(v*p+m2)。
设置外循环计数器n,其初值为输入数据x的长度n,外循环计数器用于控制FIR计算是否结束,每次外循环一次,计算出p个结果,令n=n-p。
2、设置内循环计数器k(内循环计数器k用于控制每一批FIR计算所需要的向量乘法次数,每次内循环开始时,设置k的初值为:k=v,v是系数h的长度。每一次循环,令k=k-1;直至k=0时,重新赋初值k=v),设置k的初值为系数h的长度v;输入向量数据x的实部和虚部地址指针、系数数据h的实部和虚部地址指针,四者的地址指针分别为上述得到的VAR1,VAR2,VAR3,VAR4。
3、更新向量数据x的实部和虚部地址指针、系数数据h的实部和虚部地址指针,每次更新地址指针如下:
VAR1=VAR1+p;
VAR2=VAR2+p;
VAR3=VAR3+p;
VAR4=VAR4+p。
4、向量处理器将向量数据x的实部和虚部、系数数据h的实部和虚部并行加载到向量处理器的同一个处理单元的不同局部寄存器中;
如图4所示,可用下面的伪代码段实现一次数据加载:
VLDWVAR1,R0
VLDWVAR2,R1
VLDWVAR3,R2
VLDWVAR4,R3
加载数据以后,每个PE的R0,R1分别存放xi的实部与虚部,每个PE的R2,R3分别存放hi的实部与虚部。
即:for(i=0,i<p,i++){
    PEi.R0=xi.实部
    PEi.R1=xi.虚部
    PEi.R2=hi.实部
    PEi.R3=hi.虚部
}
5、p个处理单元中的每个处理单元在本单元内执行向量数据x和系数数据h的复数乘法并将乘法的结果进行累加;
如图4所示,下面的伪代码片段可实现复数乘法与结果累加:
VFMULS R0,R2,R4
VFMULS R1,R3,R5
VFMULS R0,R3,R6
VFMULS R1,R2,R7
VFSUBS R5,R4,R5
VFADDS R6,R7,R6
VFADDS R8,R5,R8
VFADDS R9,R6,R9
则每个处理单元在R8,R9分别保存输出值的实部与虚部。
6、更新内循环计数器,即令k=k-1,返回步骤4;当内循环计数器k等于0时,向量处理器的每个处理单元并行输出p个计算结果。由于每次内循环结束,可同时计算出p个结果,所以输出p个计算结果时,更新外循环计算器n,即令n=n-p,若n不等于0,则返回步骤2;当外循环计算器n=0时,结束计算。
如图3所示,下面的伪代码片段示例向量处理器并行输出p个计算结果:
VSTW R8,VAR5
VSTW R9,VAR6
其中p个输出值实部保存在VAR5起始的连续区域,p个输出值虚部保存在VAR6起始的连续区域。
综上,本发明的方法,可以充分发挥向量处理器的全部PE的并行计算能力,有效避免存储体访问冲突,不受限于向量处理器是否支持加法规约,不受限于系数是否是PE数量的整数倍,提高了浮点复数块FIR等算法在向量处理器中的执行效率。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (1)

1.一种面向向量处理器的浮点复数块FIR的向量化实现方法,其特征在于包括以下步骤:
(1)输入向量数据x、系数数据h;将所述向量数据x的虚部和实部分别连续存放,将所述系数数据h的虚部和实部分别连续存放;所述向量处理器包括p个处理单元;
(2)将向量数据x的实部和虚部、系数数据h的实部和虚部并行加载到向量处理器的同一个处理单元的不同局部寄存器中;
(3)所述p个处理单元中的每个处理单元在本单元内执行向量数据x和系数数据h的复数乘法并将乘法的结果进行累加;
(4)p个处理单元的计算完成,输出p个结果;
所述向量数据x的实部存放在地址VAR1开始的连续区域;输入向量数据x的虚部存放在地址VAR2开始的连续区域;系数数据h的实部存放在地址VAR3开始的连续区域,并且每个实部重复存储p个;系数数据h的虚部存放在地址VAR4开始的连续区域,并且每个虚部重复存储p个,所述VAR1、VAR2、VAR3和VAR4分别映射到不同的存储体中;
所述步骤(1)中,假设每一行的数据宽度是p个字,即4*p字节,假定每个PE对应b个存储体,则与PE0的第1个存储体地址对齐的地址为4p*b*s,其中s是整数;选择合适的整数s使得4s*p*b是空闲的存储地址,由此确定VAR1=4s*p*b,使得VAR1是空闲的,且与PE0的第1个存储体地址对齐;设置外循环计数器n,其初值为输入数据x的长度n,外循环计数器用于控制FIR计算是否结束,每次外循环一次,计算出p个结果,令n=n-p;设置内循环计数器k,内循环计数器k用于控制每一批FIR计算所需要的向量乘法次数,每次内循环开始时,设置k的初值为:k=v,v是系数h的长度;每一次循环,令k=k-1;直至k=0时,重新赋初值k=v;设置k的初值为系数h的长度v;输入向量数据x的实部和虚部地址指针、系数数据h的实部和虚部地址指针,四者的地址指针分别为上述得到的VAR1,VAR2,VAR3,VAR4;更新向量数据x的实部和虚部地址指针、系数数据h的实部和虚部地址指针,每次更新地址指针如下:
VAR1 = VAR1+p;
VAR2 = VAR2+p;
VAR3 = VAR3+p;
VAR4 = VAR4+p。
CN201110213358.9A 2011-07-28 2011-07-28 面向向量处理器的浮点复数块fir的向量化实现方法 Active CN102231624B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110213358.9A CN102231624B (zh) 2011-07-28 2011-07-28 面向向量处理器的浮点复数块fir的向量化实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110213358.9A CN102231624B (zh) 2011-07-28 2011-07-28 面向向量处理器的浮点复数块fir的向量化实现方法

Publications (2)

Publication Number Publication Date
CN102231624A CN102231624A (zh) 2011-11-02
CN102231624B true CN102231624B (zh) 2014-02-12

Family

ID=44844167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110213358.9A Active CN102231624B (zh) 2011-07-28 2011-07-28 面向向量处理器的浮点复数块fir的向量化实现方法

Country Status (1)

Country Link
CN (1) CN102231624B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722472B (zh) * 2012-05-28 2015-04-08 中国科学技术大学 一种复数矩阵的优化方法
CN103973264B (zh) * 2013-01-29 2017-02-22 中兴通讯股份有限公司 一种滤波方法和滤波器
CN104866278B (zh) * 2014-02-21 2018-05-18 北京国睿中数科技股份有限公司 用于浮点复数平行加减的装置和方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1627639A (zh) * 2003-12-09 2005-06-15 华为技术有限公司 精确实现信号微分的滤波器及使用其实现信号微分的方法
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
CN1627639A (zh) * 2003-12-09 2005-06-15 华为技术有限公司 精确实现信号微分的滤波器及使用其实现信号微分的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陆必应,宋千,周智敏.《一种在复频域设计FIR滤波器的算法》.《信号处理》.2000,第十六卷(第二期),131-135. *

Also Published As

Publication number Publication date
CN102231624A (zh) 2011-11-02

Similar Documents

Publication Publication Date Title
KR102443546B1 (ko) 행렬 곱셈기
CN102197369B (zh) 用于执行simd乘法-累积运算的装置及方法
CN102043761B (zh) 一种基于可重构技术的傅立叶变换的实现方法
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN111381880B (zh) 一种处理器、介质和处理器的操作方法
CN111381939B (zh) 多线程处理器中的寄存器文件
CN110415157A (zh) 一种矩阵乘法的计算方法及装置
CN102012893B (zh) 一种可扩展向量运算装置
CN102200964B (zh) 基于并行处理的fft装置及其方法
CN103984560A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN102510273B (zh) 一种有限脉冲响应滤波器
CN109144469A (zh) 流水线结构神经网络矩阵运算架构及方法
CN102360281B (zh) 用于微处理器的多功能定点乘加单元mac运算装置
CN102231624B (zh) 面向向量处理器的浮点复数块fir的向量化实现方法
CN104182207A (zh) 处理器中的移动平均处理及处理器
CN106325812B (zh) 一种针对乘累加运算的处理方法及装置
WO2016024508A1 (ja) マルチプロセッサ装置
Kim et al. Memory-aware application mapping on coarse-grained reconfigurable arrays
CN202217276U (zh) 基于并行处理的fft装置
CN102012802B (zh) 面向向量处理器数据交换的方法及装置
CN101615113A (zh) 一条指令完成一次蝶形运算的微处理器实现方法
CN112074810A (zh) 并行处理设备
CN101477456B (zh) 一种自相关运算单元及处理器
CN116301920B (zh) 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统
CN203276276U (zh) 一种实时数据处理单元及处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant