多核架构适的FFT处理器的设计
- 格式:pdf
- 大小:667.48 KB
- 文档页数:8
Windows环境下FFT多核并行算法的设计实现
张燕燕;洪龙
【期刊名称】《计算机技术与发展》
【年(卷),期】2010(020)009
【摘要】多核技术的问世,使得人们在桌面计算机环境下研究并行算法,运行并行程序成为可能.与此同时,如何充分利用多核技术进行并行程序设计却是所面临的巨大挑战.在叙述了多核技术,并将其与超线程技术比较后,介绍了Windows环境下的常用的多核编程工具OpenMP,并重点描述了并行语句Fork/Join;在简述了信号处理中常用的FFT后,重点分析了FFT的按时间基2抽取形式,并据此利用OpenMP设计了一个n核环境下的FFT并行算法,通过对相应程序的运行,结果表明,该算法加速比接近n.
【总页数】5页(P74-77,82)
【作者】张燕燕;洪龙
【作者单位】南京邮电大学,计算机学院,江苏,南京,210003;南京邮电大学,计算机学院,江苏,南京,210003
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.PC-Cluster下的FFT并行算法分析 [J], 刘劲;杨平华
2.多核与多GPU系统下的一种矩阵三角分解并行算法 [J], 吴荣腾
3.多核架构下计算凸壳的并行算法 [J], 颜坚;毕硕本;汪大;郭忆
4.一种在多核嵌入式平台上实现FFT的快速并行算法 [J], 彭自然;王国军
5.Windows环境下CRNG多核并行算法的设计实现 [J], 沈春来;洪龙;胡俊
因版权原因,仅展示原文概要,查看原文内容请购买。
多核处理器设计与优化随着计算机技术的不断发展,多核处理器作为一种重要的计算机硬件技术,具有越来越广泛的应用和重要性。
多核处理器能够同时处理多个任务,提高计算机的运行效率。
本文将重点介绍多核处理器的设计原理和优化方法。
首先,多核处理器的设计需要考虑处理核心的数量和结构。
多核处理器通常由多个处理核心组成,每个处理核心都具有独立的寄存器、缓存和功能模块。
多核处理器的设计需要考虑处理核心之间的通信方式和数据共享机制,以及如何有效地分配任务给不同的处理核心。
同时,多核处理器的设计还需要考虑处理核心之间的性能平衡和负载均衡,确保每个处理核心都能充分利用计算资源,提高整体系统的性能。
其次,多核处理器的性能优化是一个重要的研究领域。
在多核处理器中,任务的分配和调度对系统性能的影响非常大。
合理的任务分配和调度策略可以充分利用处理核心的计算资源,提高系统的并行性和吞吐量。
常用的任务分配和调度策略包括静态分配、动态分配、负载平衡和任务迁移等。
静态分配是指在系统运行之前就确定任务分配方案,动态分配是根据系统运行时的负载情况动态调整任务分配方案。
负载平衡是指尽量均衡地分配任务给每个处理核心,防止某个处理核心过于繁忙而导致其他处理核心闲置。
任务迁移是指在系统运行过程中将任务从一个处理核心迁移到另一个处理核心,以实现负载均衡。
另外,多核处理器的能效优化也是一个重要的研究方向。
随着计算机系统规模的不断扩大,能源消耗成为计算机系统的一个主要问题。
多核处理器的能源消耗主要包括处理核心的功耗、内存访问的功耗和通信的功耗等。
为了降低多核处理器的能源消耗,可以采用一些方法和策略。
例如,可以对处理核心进行动态电压调节(Dyamic Voltage Scaling),根据任务的需求动态调整处理核心的工作电压和频率,从而降低功耗。
还可以采用节能技术来优化内存访问和通信,减少能源消耗。
此外,还可以采用一些节能的任务调度和任务迁移策略,根据处理核心的负载情况来动态调整任务的分配和调度,从而减少能源消耗。
多核并行的大点数 FFT、IFFT 设计夏际金;梁之勇;崔留争【期刊名称】《火控雷达技术》【年(卷),期】2016(045)001【摘要】FFT and IFFT are the most common algorithm for signal processing.With the increasing requirement of technique development,the point of FFT and IFFT become larger and larger.The signal processor is developed from single -core to multiprocessor parallel and multi -core parallel gradually.The method of parallel design for the large point FFT and IFFT is studied,transforming IFFT into FFT and splitting large point into small point.The buffer and bufferless large point FFT and IFFT are designed on TI C6678 eight -core processor.The eight -core parallel computing is realized through the parallel design.The processing performance is improved by calculation and transfer parallelism and multi -core parallel design.%FFT 和 IFFT 是信号处理最常用的算法。
随着技术发展需求的不断提高,FFT、IFFT 点数越来越大。
一种基于FPGA的双核FFT处理器的设计与实现的
开题报告
一、选题背景
傅里叶变换(Fourier Transform,FFT)是广泛应用于信号处理、图像处理、通信、雷达、声学、医学和金融等领域的一种重要算法。
它可以将时域信号转换为频域信号,方便信号的分析和处理。
FFT算法由于其高效性和稳定性,被广泛使用于现代通信技术和数字信号处理中。
随着数字信号处理技术的不断发展,单核FFT的处理速度已经不能满足实际需求。
因此,设计一种基于FPGA的双核FFT处理器,可以解决单核FFT算法的速度问题,使得FFT算法可以在短时间内得到实现。
二、研究内容和目标
本文旨在设计实现一种基于FPGA的双核FFT处理器。
主要包括以下研究内容:
1. 设计FFT算法的硬件实现,包括实现蝶形运算模块、计算和存储模块。
2. 设计多核加速FFT算法,实现FFT算法的并行运算。
3. 使用Verilog HDL编写硬件描述语言进行代码实现。
4. 对实现的FFT处理器进行性能测试和性能优化,包括实现峰值性能、功耗等方面的指标。
三、预期贡献和意义
本文将设计实现一种基于FPGA的双核FFT处理器。
该处理器采用了多核并行计算的设计,可以大大提高FFT算法的处理速度,并且有较低的功耗。
实现了FFT算法的加速,可以在信号处理领域加快数据处理的速度,提高数据分析的效率。
总之,本论文所设计实现的FFT处理器,具有较高的应用价值,在信号处理领域具有广泛的应用前景和发展潜力。
芯片设计中的多核处理器架构研究与优化在当今科技高速发展的时代,处理器技术的进步对于计算机性能的提升起到了至关重要的作用。
而在处理器设计中,多核处理器架构被广泛应用,它能够提供更高的计算性能和更好的能效比。
本文将围绕芯片设计中的多核处理器架构展开研究与优化的话题。
一、多核处理器架构概述多核处理器是指在一块芯片上集成了多个核心(Core),每个核心都有自己的运算单元、缓存和控制逻辑。
多核处理器采用了并行计算的思想,可以并发地执行多个线程或任务,从而提高了计算机的性能。
二、多核处理器架构的意义1. 提高计算性能:多核处理器能够同时处理多个任务,有效提高了计算机的计算性能,满足了现代应用对处理器计算能力的需求。
2. 提升能效比:相比于传统的单核处理器,多核处理器在相同的能耗下能够完成更多的任务,减少了能量的浪费,进而提高了能效比。
三、多核处理器架构的关键技术1. 核间通信技术:多核处理器中的各个核心需要进行信息的交流和协作,因此核间通信技术是多核处理器的关键。
常见的核间通信技术包括总线、互连网络等。
2. 调度与资源管理:多核处理器中的任务调度和资源管理是保证各核心高效协作的关键。
合理的调度策略和资源分配能够充分利用多核处理器的计算资源,提高系统的整体性能。
3. 数据一致性:多核处理器中,各个核心对共享数据的访问需要保持一致性,避免数据的不一致对计算结果造成影响。
因此,数据一致性协议成为多核处理器架构中的重要问题。
四、多核处理器架构的优化方向1. 并行编程模型:针对多核处理器的特点,采用合适的并行编程模型是优化多核处理器架构的重要手段。
常见的并行编程模型包括OpenMP、MPI等。
2. 物理布局优化:通过调整多核处理器的物理布局,减少核间通信的开销,优化核心之间的数据传输效率。
3. 调度算法优化:设计高效的任务调度算法,合理地将任务分配到各个核心上,充分发挥多核处理器的计算能力。
4. 计算资源管理优化:合理分配和管理各个核心的计算资源,避免资源竞争和浪费,提高系统的整体性能。
doi:10.3969/j.issn.1001-893x.2021.06.016引用格式:蔺丽华,李敏,苏涛,等.基于多核处理器BWDSP1042的FFT性能优化[J].电讯技术,2021,61(6):759-764.[LIN Lihua,LI Min, SU Tao,et al.Optimization of FFT performance based on BWDSP1042[J].Telecommunication Engineering,2021,61(6):759-764.]基于多核处理器BWDSP1042的FFT性能优化∗蔺丽华1,李㊀敏∗∗1,苏㊀涛2,张美春1,王佳仪1(1.西安科技大学通信与信息工程学院,西安710054;2.西安电子科技大学雷达信号处理国家重点实验室,西安710126)摘㊀要:博微DSP1042(BWDSP1042)是我国自主研发的一款高性能数字信号处理器㊂现阶段,由于BWDSP硬件计算资源和访存带宽限制,通过调优快速傅里叶变换(Fast Fourier Transform,FFT)算法结构运算时间仍可减少㊂基于高性能多核BWDSP1042体系架构以及指令编排原则,优化了基-2FFT算法结构,在充分利用硬件资源的同时减少了FFT算法的运算时间㊂使用Matlab程序验证FFT汇编算法的正确性,并与BWDSP100㊁C6678函数库中的FFT算法的实际运行周期进行对比㊂研究结果表明,512点㊁1024点㊁2048点定点复数FFT算法的运算时间比BWDSP100函数库中的FFT和C6678函数库中的FFT均缩短了一倍多㊂关键词:数字信号处理;BWDSP1042;快速傅里叶变换;运算时间开放科学(资源服务)标识码(OSID):微信扫描二维码听独家语音释文与作者在线交流享本刊专属服务中图分类号:TN911.72㊀㊀文献标志码:A㊀㊀文章编号:1001-893X(2021)06-0759-06 Optimization of FFT Performance Based on BWDSP1042 LIN Lihua1,LI Min1,SU Tao2,ZHANG Meichun1,WANG Jiayi1(1.College of Communication and Information Engineering,Xiᶄan University of Science and Technology,Xiᶄan710054,China;(2.State Key Laboratory of Radar Signal Processing,Xidian University,Xiᶄan710126,China) Abstract:Bo Wei DSP1042(BWDSP1042)is a high-performance digital signal processor independently developed by China.At present,due to the limitations of BWDSP hardware computing resources and memo-ry access bandwidth,the calculation time can still be reduced by tuning the fast Fourier transform(FFT) algorithm structure.This paper optimizes the radix-2FFT algorithm structure based on the high-perform-ance multi-core BWDSP1042architecture and instruction scheduling principles.While making full use of hardware resources,the calculation time of the FFT algorithm is reduced.Matlab program is used to verify the correctness of the FFT assembly algorithm,and it is compared with the actual operating cycle of the FFT algorithm in the BWDSP100and C6678function libraries.The research results show that the calculation time of the512-point,1024-point,and2048-point fixed-point complex FFT algorithm is more than twice as fast as the FFT in the BWDSP100library and the FFT in the C6678library.Key words:digital signal processing;BWDSP1042;fast Fourier transform;calculation time0㊀引㊀言快速傅里叶变换(Fast Fourier Transform,FFT)广泛应用于信号㊁音频㊁图像等领域的科学计算与处理,是这些领域时频转换的基本研究工具[1]㊂FFT算法㊃957㊃第61卷第6期2021年6月电讯技术Telecommunication Engineering Vol.61,No.6 June,2021∗∗∗收稿日期:2020-07-23;修回日期:2020-08-19基金项目:国家科技重大专项(2012ZX01034001-001)通信作者:xikeda1911@性能的优劣代表着DSP芯片处理能力的高低,FFT运算时间作为表征芯片性能的重要参数,各领域对于FFT计算与处理的实时性要求也越来越高[1-2]㊂为响应国家大力发展国内集成电路产业的号召,打破国外的高计算性能领域的核心技术对我国的垄断,中国电科38所自主研发了一款具有自主知识产权的BWDSP产品㊂BWDSP1042[3]是一款运算速度快㊁功耗低㊁实时性强㊁便携的高性能双核DSP,又名 魂芯二号 ,其底层架构㊁指令集和集成开发环境ECS都是38所自主设计与研发的㊂BWDSP1042是在第一代产品BWDSP100[4]的基础上所开发的,仍然是16条发射超长指令字(Very Long Instruction Word,VLIW)和4路单指令流多数据流(Single Instruction Multiple Data,SIMD)混合架构的数字信号处理器,但内核升级为eC104+,扩展了指令集,优化了存储空间,执行部件提升了运算性能,在物理存储空间上划分了程序空间和数据空间㊂本文基于BWDSP1042的体系结构和指令编排,在开发环境ECS下完成FFT带有C程序调用接口的汇编程序,基于按时间抽选的基-2FFT[5]算法进行结构优化,通过多阶合并㊁指令并行㊁循环展开㊁软件流水和高效寻址指令等方式进行并行计算,使用汇编程序的实际运行周期来衡量算法优化程度,并与BWDSP100和TMS320C6678函数库中的FFT 做对比,使用Matlab程序验证本文汇编程序的正确性,按照误差阈值来判定FFT算法功能编写是否准确㊂研究结果表明,512点㊁1024点㊁2048点定点复数FFT算法的实际运行周期分别为571㊁991㊁2112,比BWDSP100函数库中的FFT分别提升了1.12倍㊁1.18倍㊁1.27倍,比C6678函数库中的FFT分别提升了1.32倍㊁1.40倍㊁1.88倍㊂本文研究的基于BWDSP1042的FFT算法计算速度快,实时性高,对支持国产芯片BWDSP1042的商业应用具有一定的实际意义㊂1㊀基于BWDSP的FFT算法优化1.1㊀基-2时间抽取FFT算法快速傅里叶变换是离散傅里叶变换(Discrete Fourier Transform,DFT)的一种快速计算形式,可以很明显地减少计算量和运算时间㊂DFT正变换公式如式(1)所示:X(k)=DFT[x(n)]=ðN-1n=0x(n)W nk N,0ɤkɤN-1㊂(1)式中:W nk N=e-j2p N nk为旋转因子㊂根据欧拉公式e-j x=cos x-jsin x可知,旋转因子可简写为一个复数w=w r+j w i,一次复数乘法需要4次实数乘法和2次实数加法,一次复数加法则依靠2次实数加法实现㊂因此,完整计算出一个N点的DFT算法总共需要4N2次实数乘法与4N(N-1)加法,时间复杂度为o(N2)㊂基-2时域抽取FFT算法要求时域信号输入数据长度为N=2m,m=1,2,3 ㊂输入序列长度N按照奇偶数进行分解,得到两个子序列x(n)=x(2r)+x(2r+1),r=0, ,N2-1,最小运算单元是2点,因此称为按时间抽选的基-2FFT算法,其对应的DFT公式如式(2)所示:X(k)=X1(k)+W k N X1(k),k=0, ,N2-1X(k+N2)=X1(k)-W k N X1(k),k=0, ,N2-1ìîíïïïï㊂(2)N点的FFT算法一共有m阶的蝶形运算,每一阶都有N/2形结构参与运算,每个蝶形运算(a+b j)(w r+j w i)需要一次复数乘法和两次复数加法,如图1所示,每一阶的蝶形运算共需要N/2次复数乘法和N次复数加法,所以一个N点的完整FFT运算需要(N/2)m=(N/2)lb N次复数乘法和N lb N次复数加法,时间复杂度为o(N lb N)㊂但是参与蝶形运算的数据需要从内存中读取两个输入数据和相应的旋转因子,然后将计算结果写入到寄存器中,读取和存放的数据量是一样的,并不能充分使用BWDSP硬件资源,运算时间也得不到减少㊂图1㊀基-2时间抽取FFT蝶形运算单元1.2㊀并行结构FFT优化在按时间抽选的基-2FFT算法中,每级任意两个蝶形运算都是互相独立的,在正确读取其旋转因子的情况下,蝶形运算单元顺序可以并行执行㊂为了充分利用BWDSP1042的SIMD和VLIW混合架构,减少FFT算法的运算时间,在时间抽选的基-2FFT算法基础上进行结构调整,使用倒位序输入㊁自然序输出的FFT算法进行蝶形运算单元的并行处理,如图2所示㊂BWDSP中数据存储器划分为6个㊃067㊃电讯技术㊀㊀㊀㊀2021年block,每个block 大小为256KB㊂把旋转因子与输入数据保存到不同的block 块中,并且使用复数指令㊁位反序寻址指令㊁数据存储器读写指令等高效指令的特性来充分利用其带宽,有效减少旋转因子重复计算或访存,在充分发挥处理器优势的同时又能提高FFT 算法性能㊂按时间抽选的基-2FFT 实现的并行计算流程图如图3所示㊂图2㊀倒位序输入㊁自然序输出8点FFT流图图3㊀并行结构FFT 流程图1.2㊀1024点的定点FFT 算法优化实现1.2.1㊀寻址方式选择前四阶的蝶形运算合并时使用位反序寻址读操作㊁模八双字写操作的方式来优化㊂位反序寻址双字读访存指令来读取输入数据,读取指令为r7:6=br(N )[u0+=1,1]㊂在以上这一条读取指令中,在寄存器r7:6前没有指定宏,则默认是使用4个执行宏{x ,y ,z ,t }同时读数,一条指令能够读取8个定点数,利用4个执行宏同时读数可显著提高运行效率㊂位反序寻址指令是专门为FFT 算法设计的,它能够将u0的基地址若干位前后颠倒,生成算法所需要的实际地址来进行后续的数据访存操作,但是,一旦修改过的基地址不参与反序操作,这种位反序方式能够保证数据访存的正确性,也提高了数据高效访存的效率㊂位反序的位数N 是基于N 点FFT 算法的蝶形运算阶数lb N ,当阶数是偶数阶时进行合并前四阶,当阶数是奇数阶时,前四阶合并结束后单独执行第五阶运算,其余均是采用两阶合并㊂模八寻址方式将前四阶合并的计算结果按照顺序写入地址寄存器中,模八寻址指令为m [v0+=v10,v11]=xr41:40yr45:44zr43:42tr47:46<BB>㊂数据的写入是根据运算宏通用寄存器堆中的数据按照宏{x ,y ,z ,t }确定好的顺序存储到数据存储器中的,每条指令中4个宏中的通用寄存器堆的序号可以按照指令确定的数据各不相同㊂通过模八寻址写入的方式,能够改变不同宏之间不同的通用寄存器的值来改变前四阶合并结束后计算结果的顺序,从而保证输出的顺序是自然序㊂所以,本文在前四阶使用位反序寻址读操作㊁模八双字写操作,其他阶采用线性双字读写操作㊂只通过优化前四阶的寻址方式,是因为已经将倒位序输入的数据通过模八双字写入的操作将数据调整顺序,后面的蝶形运算将会按照模八寻址的写入数据顺序进行计算,所以前四阶寻址方式优化足以保证输出顺序是自然序,满足算法要求㊂1.2.2㊀复数运算指令充分利用宏资源BWDSP1042处理器提供了高效的16位定点复数同时做加/减以及除2操作指令,专门为定点数据运算设定的一种操作方式,大大减少了复数操作的指令周期㊂{x ,y ,z ,t }CHRm_Rn =(CHRm +/-CHRn),{x ,y ,z ,t }CHRm_Rn =(CHRm +/-CHRn)/2㊂一个16位定点复数同另一个16位定点复数进行加/减运算,运算结果直接送到结果存储器,或者除2后送到结果寄存器㊂通过定点复数指令来实现定点的蝶形运算㊂xCHRm_Rn =(CHRm +/-CHRn)这条指令只能完成1个定点复数的加减运算,结果存入到xCHRm _Rn 寄存器中,而指令CHRs =(CHRm +/-CHRn)能够计算4个定点复数,分别㊃167㊃第61卷蔺丽华,李敏,苏涛,等:基于多核处理器BWDSP1042的FFT 性能优化第6期将结果存入到4个执行宏{x,y,z,t}CHRm_Rn中㊂对比可知,定点复数进行蝶形运算时,充分利用4个执行宏计算可显著提高运行效率㊂2.2.3㊀多阶合并传统算法中,计算完每一阶的结果将保存到寄存器中,在下一阶运算时通过处理器的寻址方式再将结果读取出来,在中间结果的写入和读取期间进行了大量的数据访存过程,占用了运行算法大量时间㊂所以,为了实现高效的访存,采用多阶合并的方式来提升运算效率,减少数据输入输出的操作㊂N 点FFT共有lb N阶,每阶有N/2个蝶形运算,每个蝶形运算需要完成一次复数乘法,两次复数加法㊂由于1024点FFT算法共有10阶运算,前四阶的旋转因子较为特殊,不占用乘法器资源,所以蝶形运算只是使用加法器即可㊂假设点数N是大于等于64点的,在这里简单介绍一下多阶合并的思路:首先合并前四阶,然后根据N点FFT的阶数进行分支,若是偶数阶,直接跳转到两阶合并的模块;若是奇数阶,先计算第五阶的蝶形运算,再继续进行两阶合并模块㊂基于这个思路,1024点定点FFT汇编实现就是将前四阶合并运算写入一次,第五㊁六阶合并写入一次,七㊁八阶合并写入一次,九㊁十阶合并写入一次,即前四阶合并,其余两阶合并后将结果写入内存㊂简单说明前四阶蝶形运算合并思路:xr3=n||u2=u0+4||u4=u0+8||u6=u0+12xr4=r3lshift-7lc3=xr4_cfft4:读||定义旋转因子读||定义旋转因子||计算_cfftloop4:读||写||计算if lc3b_cfftloop4由于前四阶每次计算128个定点数,所以N点FFT算法所需要前四阶计算的循环次数是xr4= N/128㊂在_cfft4模块中,首先读取128个定点数,定义旋转因子,并进行合并第一次四阶蝶形运算㊂在_cfftloop4模块中继续读取输入,并行把在_cfft4模块中合并第一次四阶蝶形运算结果写入到存储器中,同时也并行读取的下一组128个定点数的蝶形运算㊂if lc3b_cfftloop4基于零开销循环寄存器lc3的条件跳转指令,只要lc3不等于0,零开销循环寄存器lc3就自动减1,而且将跳转到_cfftloop4模块循环执行四阶合并;若lc3等于0,说明N点的四阶合并已经全部完成,就顺序向下执行,不再执行跳转㊂用零开销循环来判断N点的四阶合并是否全部已经完成,可以大大减少代码量,同时增加程序循环执行的效率㊂其余的两阶合并与前四阶合并的思路是一致的,利用多阶合并的方式比每一阶都将中间结果写入内存中节省了输入输出的访存时间㊂1.2.4㊀指令并行㊁软件流水㊁循环展开在FFT算法优化时,指令并行㊁软件流水㊁循环展开这三种优化方法一般都是交叉使用的,在这里把两阶合并后的结果与旋转因子合并运算的汇编程序来具体介绍这三种优化方法㊂(1)指令并行r5:4=[u0+=u10,u11]r7:6=[u0+=u10,u11]r11:10=[w0+=w5,w6]chr17=chr7∗chr11chr16=chr6∗chr10chr23=(chr5+chr17)/2chr22=(chr4+chr16)/2考虑到指令并行的原则,将程序优化为r5:4=[u0+=u10,u11]||r11:10=[w0+=w5,w6]r7:6=[u0+=u10,u11]chr17=chr7∗chr11||chr16=chr6∗chr10chr23=(chr5+chr17)/2||chr22=(chr4+chr16)/2由此可见,原来占用7行指令行的程序现在值占用4行,一个蝶形运算就减少了3个实际运行周期㊂(2)软件流水㊁循环展开由编排规则可知,计算结果和读访存指令结果需要隔两行使用,等待写入寄存器的数据需要提前两行准备好,所以在这个规则下,仅仅进行指令并行远远不够,会存在许多气泡行使流水线出现卡拍问题㊂为了冲掉中间的气泡行使得流水线尽量不出现停顿,减少实际运行周期,程序基于软件流水㊁循环展开继续优化㊂r5:4=[u0+=u10,u11]||r11:10=[w0+=w5,w6]r7:6=[u0+=u10,u11]r13:12=[u0+=u10,u11]||r9:8=[w0+=w5,w6]|| chr17=chr7∗chr11||chr16=chr6∗chr10r15:14=[u0+=u10,u11]||chr23=(chr5+chr17)/2|| chr22=(chr4+chr16)/2r35:34=[u0+=u10,u11]||r3:2=[w0+=w5,w6]|| chr19=chr15∗chr9||chr18=chr14∗chr8r37:36=[u0+=u10,u11]||chr25=(chr13+chr19)/2|| chr24=(chr12+chr18)/2r5:4=[u0+=u10,u11]||r11:10=[w0+=w5,w6]||㊃267㊃电讯技术㊀㊀㊀㊀2021年chr21=chr37∗chr3||chr20=chr36∗chr2r7:6=[u0+=u10,u11]||chr27=(chr37+chr21)/2|| chr26=(chr36+chr20)/2_cfft1loop:[v0+=v10,v11]=r23:22||r13:12=[u0+=u10,u11]|| r9:8=[w0+=w5,w6]||chr17=chr7∗chr11||chr16=chr6∗chr10[v0+=v10,v11]=r25:24||r15:14=[u0+=u10,u11]|| chr23=(chr5+chr17)/2||chr22=(chr4+chr16)/2[v0+=v10,v11]=r27:26||r35:34=[u0+=u10,u11]|| r3:2=[w0+=w5,w6]||chr19=chr15∗chr9||chr18=chr14∗chr8r37:36=[u0+=u10,u11]||chr25=(chr13+chr19)/2|| chr24=(chr12+chr18)/2chr21=chr37∗chr3||chr20=chr36∗chr2chr27=(chr37+chr21)/2||chr26=(chr36+chr20)/2 .code_align16If lc0b_cfft1loop||r5:4=[u0+=u10,u11]||11:10= [w0+=w5,w6]优化后代码的指令并行性大大提高,充分利用核内的4个执行宏,循环核心代码并行执行写入结果指令,读取下一循环所用数据指令和点乘㊁叠加运算指令,充分利用了硬件资源,大大提高了程序运行效率㊂2㊀实验与分析实验平台为BWDSP1042,Win10系统,Matlab 版本为32位Matlab2012a,VS版本为VS2010,ECS 版本为ECS2.0㊂不同点数的输入数据来自于Mat-lab程序产生的数据文件以及相应的旋转因子文件㊂2.1㊀实验结果及分析汇编程序优化之前编写C语言程序,根据测试无误的C语言程序框架进行FFT汇编㊂本文重点介绍FFT基于BWDSP1042底层优化,C语言相关操作不再赘述㊂在BWDSP1042配套的集成开发环境ECS2.0中完成汇编程序,使用Matlab产生数据以及生成误差图㊂使用Matlab程序来验证FFT算法编写的正确性㊂将Matlab程序产生的输入数据和旋转因子加载到ECS中运行FFT汇编程序,将FFT汇编输出结果导出到一个指定的文本文件output.txt中,然后使用Matlab读取txt文件中存放的汇编输出数据,进行图形可视化,如图4所示㊂同时,Matlab调用自身FFT函数读取同样的输入数据,将计算结果进行可视化,如图5所示㊂图4㊀FFT汇编结果图图5㊀Matlab结果图由于Matlab中的函数库都已被广泛使用,其正确性毋庸置疑,所以将Matlab输出结果作为汇编优化函数的基本参照标准,将本文研究的算法与Mat-lab中FFT函数的输出结果进行对比,观察图4和图5,结果几乎一致,说明本文算法功能正确㊂为了进一步确定汇编算法的正确性,进行计算相对误差,如图6所示㊂图6㊀相对误差图观察图6可知,FFT汇编程序的输出结果与在Matlab中运行FFT函数的误差,大部分输入的计算结果基本一致,误差在0附近,在1350点左右出现-0.004左右偏差㊂由于输入数据都是Matlab随机生成的浮点数,需要通过格式转换为定点数,实现定㊃367㊃第61卷蔺丽华,李敏,苏涛,等:基于多核处理器BWDSP1042的FFT性能优化第6期点数FFT汇编,在数据转换时也会出现些许误差,对输出误差也有相应影响㊂由图可知,输出误差在10-3级别,也在函数开发误差要求范围之内,说明基于BWDSP1042的FFT算法汇编正确㊂测试基于不同点数的FFT实际运行周期,并与BWDSP100㊁TMS320C6678函数对比,结果如表1所示㊂表1㊀BWDSP1042实际周期比较FFT输入数据规格/点时钟周期/拍理论BWDS-P1042BWDS-P100C6678效率提升比BWDS-P100C6678512571365640754 1.12 1.32 102499162111761394 1.18 1.40 20482112138926863976 1.27 1.88由周期指标可知,基于BWDSP1042的FFT算法实际运行周期应小于理论时钟周期的1.5倍㊂由表1可知,512点㊁1024点㊁2048点的FFT的实际运行周期分别为571拍㊁991拍㊁2112拍,经计算该算法不同输入点数均满足函数库开发要求㊂本文将基于BWDSP1042的FFT算法与BWDSP100和TMS320C6678这两款高性能芯片应用函数库中的FFT算法的实际运行周期进行比较,运算效率均提升一倍以上,说明本文所研究的FFT算法在BWDSP1042的性能优化同时也体现了算法的实用性和优越性㊂2.2㊀硬件资源成本本文实现的N点的32位定点复数FFT共有lb(N)阶,每阶有N/2个蝶形运算,每个蝶形运算需要完成一次复数乘法㊁两次复数加法,所以完成一个蝶形运算需要4个加法器和4个乘法器㊂FFT函数主要是蝶形运算,从蝶形运算角度说明硬件资源消耗情况,如表2所示㊂表2㊀硬件资源消耗说明运算每个蝶形运算需要资源可用资源数ALU48ˑ4MUL48ˑ4 BWDSP1042中有4个增强的运算宏eC104+,每个宏中内部有8个加法器和8个乘法器,所以N/2个蝶形运算需要利用这些乘法器和加法器完成计算,大点数FFT运算对资源消耗的硬件成本更多㊂另外,FFT算法在实时性方面有一定要求,进而对BWDSP1042硬件性能具有较高要求,增加了硬件成本㊂3㊀结束语本文基于BWDSP1042的体系架构以及指令特点,改进了基-2时间抽取FFT算法结构,减少了FFT算法运算时间,优化了性能㊂定点格式的FFT 算法由于进行了数据缩放,导致精度降低,虽然并不影响正确性,但应用于要求高精度的领域仍需继续提升精度指标㊂本文研究不仅对数字信号处理相关应用领域时频转换时间有一定的改善,而且对国产化芯片BWDSP1042的商业化应用以及走向工程应用具有实际意义㊂高性能FFT运算是芯片走向实际应用的重要一环,接下来的工作是在本研究基础之上,开发国产多核处理器BWDSP1042具有通用标准参数的高效率底层其他优化算法函数库,实现函数库与软件开发环境的集成,满足大多数用户使用,为DSP核心器件国产化打下基础,为该芯片成功推向民用市场奠定基础㊂参考文献:[1]㊀林达.舰载火控雷达信号处理的软硬件实现[D].西安:西安电子科技大学,2019.[2]㊀于建.面向OFDM应用的低硬件开销低功耗64点FFT处理器设计[J].电讯技术,2020,60(3):338-343. [3]㊀中国电子科技集团公司第三十八研究所.BWDSP1042软件用户手册[M].合肥:中国电子科技集团公司第三十八研究所,2017.[4]㊀洪一,方体莲,赵斌,等. 魂芯一号 数字信号处理器及其应用[J].中国科学:信息科学,2015,04(3):574-586.[5]㊀宋宇鲲,曲双双,徐礼晗,等.混合基可重构FFT处理器的设计与实现[J].微电子学与计算机,2020,37(1):87-92.作者简介:蔺丽华㊀女,1968年生于山东临邑,2014年获工学博士学位,现为高级工程师,主要研究方向为信息系统与信息化㊂李㊀敏㊀女,1995年生于山东梁山,2017年获工学学士学位,现为硕士研究生,主要研究方向为电子科学技术㊂苏㊀涛㊀男,1968年生于陕西西安,1999年获工学博士学位,现为教授,主要研究方向为信息与信号处理㊂张美春㊀女,1993年生于山东菏泽,2018年获学士学位,现为硕士研究生,主要研究方向为电子科学技术㊂王佳仪㊀女,1995年生于陕西西安,2018年获学士学位,现为硕士研究生,主要研究方向为电子科学技术㊂㊃467㊃电讯技术㊀㊀㊀㊀2021年。
面向申威多核处理器的快速傅立叶变换并行算法与自适应调优框架研究近年来,随着科技的发展和计算机性能的不断提升,人们对于计算速度的要求也越来越高,以至于如何优化算法,提高计算效率已经成为了计算机领域中一个非常重要的研究方向。
其中,快速傅立叶变换(Fast Fourier Transform,FFT)算法是深入学习、信号处理等领域中广泛应用的算法之一。
面向申威多核处理器的快速傅立叶变换并行算法与自适应调优框架研究的重要性和现实意义也在逐渐凸显出来。
在当前的环境下,如何解决计算效率不足的问题是申威多核处理器快速傅立叶变换并行算法与自适应调优框架研究中需要解决的挑战之一。
通过对现有算法进行研究,研究者发现,在进行大规模计算时,矩阵列式算法存在内存开销大的问题,这才有了需要采用行式算法的一个认识。
通过将原有的迭代算法细改为递归算法并在计算复杂度的估算上加以分析,研究人员在理论上发现了改进后的算法所能实现的性能提升。
针对申威多核处理器快速傅立叶变换的特点,该研究团队提出了一种面向申威多核处理器的并行FFT算法设计方案,这种方案可以将算法过程并行执行,这样就能大大提高处理器的计算效率。
针对这一方案,研究团队还开发了一个自适应调优框架A-APFFT,该框架通过自适应地调整算法分治策略、优化通信模式和实时监测执行状态等多种手段来提升算法的性能。
在实验中,研究团队将该算法应用于三种不同场景下:小规模FFT、大规模FFT和并行FFT。
其中,小规模FFT的结果表明,该算法在处理短向量问题上的计算效率比较高,吞吐量可以达到非常理想的水平。
当进行大规模FFT 计算时,该算法的性能表现不平衡。
在并行FFT计算中,尝试采用A-APFFT框架调整算法的分治策略,发现可以大大提高计算性能,其计算效率的提高幅度比I-APFFT框架更为明显。
总之,在现实应用中,该算法为申威多核处理器快速傅立叶变换提供了一种非常优秀的并行算法设计方案以及智能化优化框架,可以实现快速、准确,能够大幅度提高计算机性能。
一种在多核嵌入式平台上实现FFT的快速并行算法彭自然;王国军【期刊名称】《计算机应用研究》【年(卷),期】2017(034)011【摘要】Fast Fourier transform algorithm is a basic method for fast analysis and processing of real time digital signals.In order to improve the speed of real-time signal processing,this paper studied the parallel FFT algorithm based on multi-core embedded real-time environment and put forward a new static FFT algorithm.The algorithm made full use of the different characteristics of the odd and even items of the static polynomial,to avoid the iterative calculation process of layers,reduce the communication operation in the process of improving the performance of parallel.This paper proved the algorithm in theory,and tested the operating efficiency of the algorithm on the embedded real-time platform.It is confirmed that the polynomial static algorithm has certain time complexity advantages for processing short data segment,compared to classical FFT algorithm.It concludes that polynomial static FFT algorithm can effectively improve the running speed of parallel FFT algorithm.%快速傅里叶变换(fast Fourier transform,FFT)算法是对实时数字信号进行快速分析处理的一种基本方法.针对多核嵌入式实时环境下并行FFT算法进行了研究,以有效提高实时信号处理的速度.提出了一种新的静态多项式FFT算法,充分利用静态多项式奇偶项的不同特点直接代入数据计算,免去了层层迭代的计算过程,减少了运算过程中的通信,提高了并行性能.对算法的理论进行了严密论证,通过嵌入式实时平台上运行测试和仿真实验,证实了在数据分段较短的约束条件下,提出算法较经典的FFT并行算法在时间复杂度上有一定优势.多项式静态FFT算法能够有效提高并行FFT运行速度.【总页数】5页(P3242-3246)【作者】彭自然;王国军【作者单位】中南大学信息科学与工程学院,长沙410083;广州大学计算机科学与教育软件学院,广州510006【正文语种】中文【中图分类】TP301.6【相关文献】1.多核CPU上快速傅里叶变换并行算法的优化 [J], 房爱东2.多核计算环境下快速排序并行算法的实现 [J], 游佐勇;罗省贤3.连通域标记并行算法在多核处理器上的设计和实现 [J], 张健;徐茂兴4.Windows环境下FFT多核并行算法的设计实现 [J], 张燕燕;洪龙5.一种面向MIMD并行机实现的FFT并行算法 [J], 林水生;黄顺吉因版权原因,仅展示原文概要,查看原文内容请购买。
高效多核处理器设计与优化方法研究随着计算机应用的广泛普及和计算需求的增加,对处理器性能的要求也越来越高。
传统的单核处理器已经无法满足大规模计算的需求,多核处理器应运而生。
高效多核处理器的设计与优化方法对于提高计算机系统的性能至关重要。
一、设计多核处理器的基本原理在多核处理器的设计中,首先要考虑的是核的数量和结构。
核的数量涉及到多核处理器的规模和并行计算的能力,而核的结构则涉及到核之间的协作和通信方式。
常见的多核处理器结构有对称多处理(SMP)和非对称多处理(AMP)。
1. 对称多处理(SMP)对称多处理是指多核处理器中的每个核都具有相同的处理能力,并且共享系统的总线和内存。
这种设计简单直观,易于实现和管理。
然而,SMP也存在一些缺点,例如总线的带宽瓶颈和内存一致性问题。
针对这些问题,可以采用高速缓存、非一致性存储访问(NUMA)等方法来优化SMP系统。
2. 非对称多处理(AMP)非对称多处理是指多核处理器中的每个核具有不同的处理能力和功能。
每个核可以根据任务需求进行专门处理,从而提高系统的整体性能。
AMP系统通常将任务分配给最适合的核,根据不同的需求进行负载均衡,提高效率。
二、多核处理器优化方法1. 任务划分与调度多核处理器的性能优化离不开合理的任务划分和调度策略。
任务划分是将计算任务划分成多个可并行执行的子任务,以实现任务的并行处理。
调度策略是将任务分配给不同的核,并确保任务之间的依赖关系得到满足。
常用的调度策略有静态调度和动态调度。
静态调度是在编译阶段确定任务的调度顺序,这样可以避免运行时的切换开销。
而动态调度则是在运行时根据任务的实时性和优先级进行调度,以实现更好的负载均衡和性能优化。
2. 数据通信与同步多核处理器中的核之间需要进行高效的数据通信和同步。
常见的通信方式有共享内存和消息传递。
共享内存通过共享内存区域来实现核之间的数据共享,消息传递则是通过消息队列或者邮件箱来实现核之间的数据传输。