低功耗的数据处理器及数据处理方法

文档序号:6578497阅读:183来源:国知局
专利名称:低功耗的数据处理器及数据处理方法
技术领域
本申请涉及电数据处理技术领域,特别涉及低功耗的数据处理器及数据处 理方法。
背景技术
快速傅立叶变换运算(Fast Fourier Transform Algorithm, FFT)是数字信 号处理中的一种非常重要的算法,它为频语分析、巻积与相关、数字滤波器的 设计与实现、功率谱计算、传递函数建模和图象处理等工作提供了快速运算方 法。而蝶形运算是FFT运算中必不可少的一部分,每个蝶形运算单元(以下筒 称为蝶形)的示意图如图1所示,其中,W为旋转因子,W的表达式如下
-j^2Ttk . . 2兀k
WN(k) = W(k,N) = e N =cos j-jsin n ,
其中,N为输入复数的数量,k为旋转因子的序号,ke[O, N/2-1], 通常情况下,根据蝶形运算的执行进程将蝶形运算分为不同级,如图2所 示,以N= 16的蝶形运算为例,其执行进程分为四级,分别为stageO、 stage 1、 stage 2和stage 3,而在每一级中,又根据蝶形的运算关系对蝶形进行分组,如 图3所示,在stage 0中,所有蝶形归属在同一组,称为group 0,而在stage 1 中,以四个蝶形为一组,分为group 0和group 1 ,同理,在stage2中,以两个 蝶形为 一组,分为group 0、 group 1 、 group2和group 3 。
基于上述分级分组方式,现有技术下,在进行蝶形运算时,需要预先计算 出W0和Wl的初始值并将其保存在存储器内,以便运算过程中随时读取调用。 例如,如图2和图3所示,对于N=16的蝶形运算,需要预先计算出W(0,16) 和W(l,16)的初始值,W(0,8)和W(l,8)的初始值,以及W(0,4)和W(l,4)的初始 值并进行保存,以便在采用递归方法计算stage 0、 stage 1和stage 2中使用的
5其他旋转因子的取值时,对上述各初始值进行读取调用。其中,递归方法的具
体内容如下
只预存W的前两个值(W0、 Wl )和递归参数(Step),再通过递归〃^式 计算出剩余的W;
预存W0和Wl时,使用公式1和公式2计算其取值,其中,fly_num为 每一组中蝶形的总数目,如图3所示,在stage 0中,fly—num = 8; t为旋转因 子的序号,te[O, fly—num-l]。
<formula>formula see original document page 6</formula>
而在FFT运算过程中,使用如公式3所示的递归公式,以及根据预存的 W0和W1,计算同组运算内剩余的W的取值。
W(t)=Wr(t)-j* Wi(t) Wr(t) = Wr (t-2) - Step*Wi (t-1) Wi(t) = Wi (t-2) + Step*Wr (t-1) 公式3
step = 2 * sin( PI / fly一num) 如图2和图3所示,以N-16的蝶形运算为例,在stageO中,有八个蝶 形,即fly—num = 8,那么需要使用八个旋转因子,分别为W0、 Wl、 W2、 W3、 W4、 W5、 W6、 W7,其中,W0和Wl已预先设置在存储器内,则可以 在运算过程中通过上述递归公式计算出W2、 W3、 W4、 W5、 W6、 W7的取 值并保存在緩存内,以及在后续的运算过程中随时读取调用。显然,基于预设 的W0和Wl采用递归方法推算W的其他取值,会在一定程度上节省存储器 的存储空间。
但是,采用上述方式进行FFT运算会存在过多冗余,从而导致处理器功 耗的上升,同时也降低了处理器针对FFT运算的执行效率
发明内容
本申请实施例提供一种数据处理器及数据处理方法,可以降低处理器的功耗。
本申请实施例提供的具体技术方案如下
一种可降低处理器功耗的数据处理方法,所述处理器针对快速傅立叶变换 运算中使用旋转因子的每一级运算,执行以下操作 确定本级运算中每组运算内的蝶形单元数目;
根据所获得的蝶形单元数目以及预设的蝶形单元数目与旋转因子获取方 式之间的对应关系,选择与所获得的蝶形单元数目相应的旋转因子获取方式; 执4亍选择的凝)争因子获取方式获^ 一种低功耗的数据处理器,包括
确定单元,用于确定快速傅立叶变换运算中使用旋转因子的每一级运算包 含的每组运算内的蝶形单元数目;
选择单元,用于根据所获得的蝶形单元数目以及预设的蝶形单元数目与旋 转因子获取方式之间的对应关系,选择与所获得的蝶形单元数目相应的旋转因 子获取方式;
执行单元,用于执行选择的旋转因子获取方式获得每组运算中使用的各旋 转因子的取值。
本申请实施例中,针对FFT运算中使用旋转因子的每一级运算,执行以下 操作确定本级运算中每组运算内的蝶形单元数目fly一num;根据所获得的 fly—num以及预设的fly—num与旋转因子获取方式之间的对应关系,选择与所 获得的£^_皿01相应的旋转因子获取方式;执行选择的旋转因子获取方式获得 每组运算中使用的各旋转因子的取值。这样,针对fly一num的不同取值,采用 不同的方式获取所需的旋转因子,可以在一定程度上避免运算过程中出现冗 余,有效地提高FFT运算的执行效率,从而降低处理器的功耗。


图1为现有技术下蝶形运算单元示意图2为现有技术下N46的蝶形运算分级示意图3为现有技术下N=16的蝶形运算分组示意图4A为本申请实施例中终端功能架构图4B为本申请实施例中控制单元功能架构图5为本申请实施例中计算FFT运算内使用的旋转因子取值流程图6A为本申请实施例中余弦函数示意图6B为本申请实施例中正弦函数示意图7A - 7C为本申请实施例中同 一 级中不同组之间旋转因子获取方式示意
具体实施例方式
为了减少快速1專立叶变换运算(Fast Fourier Transform Algorithm, FFT) 中计算旋转因子W所需的运算量,提高FFT运算的执行速率,本申请实施例 中,针对FFT运算中使用旋转因子的每一级运算,执行以下操作确定本级运 算中每组运算内的蝶形单元数目(fly一num);根据所获得的fly_num以及预设 的fly—num与旋转因子获取方式之间的对应关系,选择与所获得的fly—num相 应的旋转因子获取方式;执行选择的旋转因子获取方式获得每组运算中使用的 各旋转因子的取值。
实际应用中,旋转因子表示为W, W的表达式如下
2兀k . . 2兀k
WN(k) = W(k,N) = e N =cos:-jsin
N N ,
其中,N为输入复数的数量,k为旋转因子的序号,ke[o, N/2-1], 下面结合附图对本申请优选的实施方式进行详细说明。 参阅图4A所示,本实施例中,执行FFT运算的终端包括第一存储单元10、 第二存储单元ll、寻址单元12、控制单元13和运算单元14;其中,第一存储单元IO,用于保存预设的各种数值,例如,预设的旋转因子的取
值;
第二存储单元ll,用于緩存FFT运算过程中产生的各种数值,例如,FFT 运算中每一级运算内使用的非预设的旋转因子的取值;
寻址单元12,用于将数据存储至指定的存储位置,以及读取指定存储位置 的数据;
控制单元13,用于在FFT运算过程中获取每一级运算内使用的旋转因子 的取值;本实施例中,控制单元13可看作是一个4氐功耗的处理器;
运算单元14,用于根据控制单元13获取的旋转因子的取值,执行相应的 后续运算,以完成FFT运算。
参阅图4B所示,控制单元13包括确定单元130、选择单元131和执行单 元132,其中,
确定单元130,用于确定FFT运算中使用旋转因子的每一级运算包含的每 组运算内的蝶形单元数目fly一num;
选择单元131,用于根据所获得的fly_num以及预设的fly_num与旋转因 子获取方式之间的对应关系,选择与所获得的fly一num相应的旋转因子获取方 式;
执行单元132,用于执行选择的旋转因子获取方式获得每组运算中使用的 各旋转因子的取值。
在实际应用中,控制单元13既可以是终端装置中用于计算旋转因子取值 的功能模块,也可以是独立的计算旋转因子取值的装置,在此不再赘述。
基于上述终端,本实施例仍以N=16的FFT运算为例,那么,参阅图5 所示,终端执行FFT运算中某一级运算内的某一组运算的流程如下
步骤500:确定本组运算内的蝶形单元数目fly_num。
本实施例中,确定FFT运算中某一级运算内的某一组运算包含的fly—num, 只需参考该组内参与FFT运算的复数的数量M, fly—num = M/2,例如,N==16
9的FFT运算中,第 一级运算内的group 0中包含16个复数,则该group 0包含 的fly—num的取值为16/2 = 8。
步骤510:根据所获得的fly—num,以及fly—num与旋转因子获取方式之间 的对应关系,选择与所获得的fly—num相应的旋转因子获取方式。
步骤520:执行选择的旋转因子获取方式获得每组运算中使用的各旋转因 子的取值。
本实施例中,针对fly—num的不同取值,预设的旋转因子获取方式如下
1、 若fly—num ==2,则预设的旋转因子获取方式为 直接读取预设的W0(2)和Wl(2)。
实际应用中,预存W0和W1时,采用以下7>式计算其取值<formula>formula see original document page 10</formula>
其中,t为旋转因子的序号,tG[O, fly—num-1],
在以下实施例中,均采用上述方法计算旋转因子的预i殳值,将不再赘述。
2、 若fly—num ==4,则预设的旋转因子获取方式为
1) t = 0和1时,直接读取预设的W0(4)和Wl(4);
2) t = 2时,直接读取W(2) (4)= 1;
实际应用中,当t-2时,函数相位处在PI/2处,因此t对应的旋转因子取 极值,即直接读取W(2)(4尸1;
3 ) t = 3时,根据以下公式得到W(3) (4);<formula>formula see original document page 10</formula>
3、 若fly一num >8,则预设的旋转因子获取方式为根据旋转因子的序号(t)的不同取值,分别执行不同的获取方式,具体操
作如下
1) 当t = 0和1时,直接读取W0(fly—num)和Wl(fly—num);
2) 当2<t《fly—num/2 - 1时,根据预设的递归公式以及读取的W0(t)和 Wl(t)计算t对应的旋转因子的取值;
实际应用中,预i殳的递归/〉式为
W(t)=Wr(t)-j* Wi(t) Wr(t) = Wr (t画2) - Step*Wi (t國l) Wi(t) = Wi (t-2) + Step*Wr (t-l) step = 2 * sin( PI / fly一num )
3) 当t = fly—num/2时,此时,函数相位处在PI/2处,因此t对应的旋转 因子取极值,即直接读取W(t) (fly_num)= 1;
4) 当fly_num/2 + 1《t < fly—num-l时,根据以下乂>式得到W(t) (fly—num);
wr(t)= - wr(fly一num -1) wi(t) = wi(fly一num -1)
其中,W(t)(fly_num) = Wr(t)-j* Wi(t)
函数对称性得到的。以fly_num = 8为例
参阅图6A所示,当fly—num = 8时,根据Wr(t)的余弦函数对称性可以看 出,t-4时,Wr(4)取极值l,并且t-l、 2、 3时Wr(t)的取值,与t-5、 6、 7时Wr(t)的取值以Wi(4)为中心对称分布,即wr(t)= - wr(fly_num -1)。
同理,参阅图6B所示,当fly—num-8时,根据Wi(t)的正弦函数对称性 可以看出,t-4时,Wi(4)取极值l,并且t-l、 2、 3时Wi(t)的取值,与t =5、6、 7时Wi(t)的取值以Wi(4)为轴对称分布,即wi(t) = wi(fly—num -1)。
这样,fly—num-8时,W0(8)、 Wl(8)为预设值,可直4妄读取;W2(8)、 W3(8)
则需根据递归公式计算获得;W4(8)为极值,直接获得;而W5(8) 、 W6(s)和W7(8)则需要根据余弦函数和正弦函数的对称性,从W1(8)、 W2(8)和W3(8)的取 值推断得到,这样,实际需要计算的旋转因子只有W2(8)和W3(8),其他的旋转 因子皆可根据函数特性推断得出,而无需递归计算,这就大大缩减了执行FFT 运算所需的时间,有效地提高了 FFT运算的执行效率,降低了终端的功耗。 当然,fly—num>8时,处理方式与fly—num = 8时相同,在此不再赘述。 在上述实施例中,执行FFT运算时,针对每一级运算内fly—num的不同取 值,采用不同的方式获取所需的旋转因子,这样,可以在一定程度上避免运算 过程中出现冗余,从而有效地提高FFT运算的执行效率,降低终端中处理器的 功耗。
基于上述第一种情况下的实施例,在第二种情况下,为了进一步提高FFT
运算的执行效率,终端可以在计算旋转因子时,针对归属于同一级的各组,并 行计算其使用的旋转因子。具体流程如下
参阅图3所示,以计算stage 1中使用的旋转因子为例,现有技术下,终端 往往先计算出group 0中使用的W(O, 8)、 W(l, 8)、 W(2, 8)和W(3, 8),再计算 出group 1中使用的W(O, 8)、 W(l, 8)、 W(2, 8)和W(3, 8),显然,相同的W在 不同的组中需要被分别读取或计算一次,这在一定程度上增加了 FFT运算的执 行时间。那么,为了进一步节省FFT运算的执行时间,本实施例中,在执行 FFT运算内的各级运算时,若同一级运算中包含至少两组运算,则在获取第一 组运算中使用的旋转因子的取值时,每获得一个旋转因子的取值,便将其他组 中序号相同的旋转因子设置为相同的取值。
下面以stage 1中使用的旋转因子为例进行详细介绍。参阅图7A-图7C 所示,为了进一步在FFT运算中节省出不必要的运算时间,终端在计算stagel 中的旋转因子时,执行以下操作
第一步如图7A所示,先将group 0中的第一个旋转因子读取为W0,, 进行后续运算;再将group 1中的第一旋转因子设置为WO,进行后续运算;
第二步如图7A所示,先将group 0中的第二个旋转因子读取为Wl,,进行后续运算;再将group 1中的第一旋转因子设置为Wl,进行后续运算;
第三步如图7B所示,先根据递归公式计算出group 0中的第三个旋转因 子W2',进行后续运算;再将group 1中的第三旋转因子设置为W2,进行后续
运算;
第四步,如图7C所示,先根据递归公式计算出group 0中的第四个旋转因 子W3,,进行后续运算;再将group 1中的第四旋转因子设置为W3,进行后续运算。
上述实施例中,在stage 1中使用的四个旋转因子只需被计算一次即可完成 相关运算,这在一定程度上节省了 FFT运算所需的时间,对提高FFT运算的 执行效率起到了一定的作用。同理,在FFT运算的每一级运算中,均可采用上 述方式来计算各级运算中使用的旋转因子,以达到节省运算耗时,提高FFT运 算效率,降低处理器功耗的目的,在此不再赘述。
显然,本领域的4支术人员可以对本申请中的实施例进行各种改动和变型而 不脱离本申请的精神和范围。这样,倘若本申请实施例中的这些修改和变型属 于本申请权利要求及其等同技术的范围之内,则本申请中的实施例也意图包含 这些改动和变型在内。
权利要求
1、一种可降低处理器功耗的数据处理方法,其特征在于,所述处理器针对快速傅立叶变换运算中使用旋转因子的每一级运算,执行以下操作确定本级运算中每组运算内的蝶形单元数目;根据所获得的蝶形单元数目以及预设的蝶形单元数目与旋转因子获取方式之间的对应关系,选择与所获得的蝶形单元数目相应的旋转因子获取方式;执行选择的旋转因子获取方式获得每组运算中使用的各旋转因子的取值。
2、 如权利要求l所述的方法,其特征在于,当所述蝶形单元数目取值为2 时,相应的旋转因子获取方式为从预设的存储位置直接读取序号为0和1的 旋转因子的取值。
3、 如权利要求l所述的方法,其特征在于,当所述蝶形单元数目取值为4 时,相应的旋转因子获取方式为从预设的存储位置直接读取序号为0和1的旋转因子的取值; 将序号为2的旋转因子的取值读取为极值1; f wr(t)= - wr(flynum -1)根据公式iwi(t) = wi(fly;鹏_ t)获得序号为3的旋转因子的取值,其中,fly—num为蝶形单元数目,t为旋转因子的序号,W(t)表示旋转因子,且 W(t) = Wr(t)+Wi(t)。
4、 如权利要求1所述的方法,其特征在于,当所述蝶形单元数目取值为 大于或等于8时,相应的旋转因子获取方式为从预设的存储位置直接读取序号为0和1的旋转因子的取值; 根据预设的递归公式、序号为0和1的旋转因子的取值,计算出满足2《t《fly—num/2-1的旋转因子的取值,其中,fly—num为蝶形单元数目,t为旋转因子的序号;将满足t-fly—num/2的旋转因子的取值读取为极值1;wr(t)=画wr(fly一num -1) 根据公式1wi(t),i(fly—皿m-t),计算出满足fly-腿/2十l《"fly—num-l的旋转因子的取值,其中,W(t)表示》走转因子,且W(t) = Wr(t)+Wi(t)。
5、 如权利要求1-4任一项所述的方法,其特征在于,若同一级中包含至 少两组运算,则在获取第一组运算中使用的旋转因子的取值时,每获得一个旋 转因子的取值,便将其他组中序号相同的旋转因子设置为相同的取值。
6、 一种低功耗的数据处理器,其特征在于,包括确定单元,用于确定快速傅立叶变换运算中使用旋转因子的每一级运算包 含的每组运算内的蝶形单元数目;选择单元,用于根据所获得的蝶形单元数目以及预设的蝶形单元数目与旋 转因子获取方式之间的对应关系,选择与所获得的蝶形单元数目相应的旋转因 子获取方式;执行单元,用于执行选择的旋转因子获取方式获得每组运算中使用的各旋 转因子的取值。
7、 如权利要求6所述的装置,其特征在于,若所述确定单元确定蝶形单 元数目取值为2,则所述选择单元选择的与所获得的蝶形单元数目相应的旋转 因子获取方式为从预设的存储位置直接读取序号为0和1的旋转因子的取值。
8、 如权利要求6所述的装置,其特征在于,若所述确定单元确定蝶形单因子获取方式为从预设的存储位置直接读取序号为0和1的旋转因子的取值, 将序号为2的旋转因子的取值读取为极值1 ,以及根据公式 wr(t)= - wr(fly一num -1)wi(t) = wi(fly一mmi-t) 获得序号为3的旋转因子的取值,其中,fly—皿m为蝶形单元数目,t为旋转因子的序号,W(t)表示旋转因子,且W(t)= Wr(t)+Wi(t)。
9、 如权利要求7所述的装置,其特征在于,若所述确定单元确定蝶形单元数目取值为大于或等于8,则所述选择单元选择的与所获得的蝶形单元数目 相应的旋转因子获取方式为从预设的存储位置直接读取序号为0和1的旋转 因子的取值,根据预设的递归公式、序号为0和1的旋转因子的取值,计算出 满足2《t《fly—num/2-1的旋转因子的取值,其中,fly—num为蝶形单元数目, t为旋转因子的序号,以及将满足t = fly_num/2的旋转因子的取值读取为极值1 ,并根据公式lwi(t"W,y—num_t),计算出满足fly—皿m/2 + "t《fly—num-1的旋转因子的取值,其中,W(t)表示旋转因子,且W(t) = Wr(t)+Wi(t)。
10、如权利要求6-IO任一项所述的装置,其特征在于,若同一级中包含 至少两组运算,则所述执行单元在获取第 一组运算中使用的旋转因子的取值 时,每获得一个旋转因子的取值,便将其他组中序号相同的旋转因子设置为相 同的取值。
全文摘要
本申请公开了一种可降低处理器功耗的数据处理方法,该方法为确定本级运算中每组运算内的蝶形单元数目;根据所获得的蝶形单元数目以及预设的蝶形单元数目与旋转因子获取方式之间的对应关系,选择与所获得的蝶形单元数目相应的旋转因子获取方式;执行选择的旋转因子获取方式获得每组运算中使用的各旋转因子的取值。这样,针对蝶形单元数目的不同取值,采用不同的方式获取所需的旋转因子,可以在一定程度上避免运算过程中出现冗余,从而有效地提高快速傅立叶变换运算的执行效率,降低处理器的功耗。本申请同时公开了一种低功耗的数据处理器。
文档编号G06F17/14GK101556576SQ200910142938
公开日2009年10月14日 申请日期2009年5月14日 优先权日2009年5月14日
发明者张媛媛 申请人:炬力集成电路设计有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1