掌桥专利:专业的专利平台
掌桥专利
首页

一种用于优化快速傅里叶变换的存内计算加速电路及方法

文献发布时间:2024-04-18 19:58:53


一种用于优化快速傅里叶变换的存内计算加速电路及方法

技术领域

本发明涉及数字信号处理技术领域,尤其涉及一种用于优化快速傅里叶变换的存内计算加速电路及方法。

背景技术

快速傅里叶变换是一种高并行度,大数据量的计算方式,随之而来的是计算中产生的巨大功耗,这在低功耗终端应用中显现出巨大的挑战。与此同时,在传统的冯洛伊曼计算架构中,由于存储和计算模块的分离,数据在存储和计算模块中不断进行传输和计算,产生了严重的“内存墙”效应。随着摩尔定律即将走向终结,通过半导体工艺升级来提升处理器性能的方法已经难以维持。智能时代终端数量的爆炸式增长使得传统计算模式高成本,高功耗,高延迟和低能耗效率等问题日益严重,低功耗和大数据量的矛盾日益突出,急需要新的硬件架构和软件算法来提升计算和存储能力的同时,减少计算所产生的功耗。

存内计算技术是一种采用新型存储单元同时实现存储和计算的一种技术,是神经形态计算电路的一种实现方式。存内计算技术通过给存储器赋予计算功能,从而解决了冯洛伊曼架构中存在的内存墙问题,是一种非常适合用于进行低功耗计算的神经形态处理芯片设计的异构计算方式。存内计算中并行的输入输出方式适合于大数据量的并行计算,大大降低了计算延迟。同时,存内计算中并行乘累加的计算方式很适合快速傅里叶变换计算中所使用到的矩阵乘法,则采用存内计算的快速傅里叶变换计算就可以获得高并行,低功耗,低延迟的效果,从而提升电路对于快速傅里叶变换计算的处理性能。

现有的技术方案提出了一种基于存内计算的混合基快速傅里叶变换计算电路(申请公布号为:CN 113378109 A),但是该电路仅支持混合基快速傅里叶变换算法,且存有高功耗和高延迟的技术问题。

发明内容

为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种用于优化快速傅里叶变换的存内计算加速电路及方法。

本发明所采用的技术方案是:

一种用于优化快速傅里叶变换的存内计算加速电路,包括:

总线接口转换模块,用于接收主机发出AHB协议格式的数据流,将数据流转换为整个任意点快速傅里叶变换计算电路计算所需的数据流控制时序信号,将数据流控制时序信号发送至行复制控制模块和存储模块;

存储模块,用于存储原始输入数据和经过存内计算阵列计算完毕所产生的数据;

存内计算阵列,与所述存储模块连接,用于接收来自存储模块的数据进行傅里叶变换运算,并将运算结果返回存储模块;

行复制控制模块,用于生成被复制数据的源行地址以及将被放置的目的地址,控制每一级的计算,并将每一级的计算结果复制到下一轮计算所需的存储阵列位置;以及生成原始输入数据在存算模块中的初始地址。

进一步地,所述存内计算阵列包括算术算子阵列、逻辑算子阵列、控制流算子阵列三部分阵列,这三部分阵列的大小均等,由多个存内计算单元以行、列的阵列连接构成,同一列的存内计算单元均连接到同一字线上,同一行的存内计算单元均连接到同一位线上;同一列的支持8点数、16点数、32点数和64点数或者其他点数所形成的相乘、相加或者相减关系,每一次只支持相同点数的快速傅里叶变换计算。

本发明所采用的另一技术方案是:

一种用于优化快速傅里叶变换的存内计算加速方法,包括以下步骤:

CPU主机以AHB协议格式发送FFT初始数据至存内计算加速电路;

存内计算加速电路将初始数据保存至存储模块中;

CPU主机以AHB协议格式发送启动计算指令至存内计算加速电路;

存内计算加速电路通过行复制控制模块分配的地址,将存储模块中的存储模块中的初始数据存入存内计算阵列中,并开始计算;

每当FFT完成—级运算之后,返回中断信号至行复制控制模块;

行复制控制模块分配行源地址和行目的地址,将计算结果复制至新行地址进行下一级计算;

直至完成计算,存内计算阵列输出计算结果至存储模块中;

存内计算电路输出中断信号,并等待CPU读取指令,以将计算结果传输至CPU主机。

本发明所采用的另一技术方案是:

一种用于优化快速傅里叶变换的存内计算加速装置,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上所述方法。

本发明所采用的另一技术方案是:

一种计算机可读存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于执行如上所述方法。

本发明的有益效果是:本发明通过存内计算技术在SRAM存储单元阵列中实现加减乘、与、或、非、异或等布尔运算以及比较运算,并通过行复制技术最大程度的在存储器内部完成复数乘法运算以及蝶形加法运算,减少存储器的读写频次,降低计算所需功耗和延时,同时适配任意点的快速傅里叶变换算法,有效地解决了传统快速傅里叶变换电路设计中高功耗,高延迟的技术问题。

附图说明

为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。

图1是本发明实施例中一种用于优化快速傅里叶变换的存内计算加速电路的结构框图;

图2是本发明实施例中一种用于优化快速傅里叶变换的存内计算加速方法的流程图;

图3是本发明实施例中存内计算阵列的示意图;

图4是本发明实施例中行复制控制模块的示意图;

图5是本发明实施例中实现存内计算加速电路的开发板的示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

此外,在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。

针对传统快速傅里叶变换电路设计中高功耗的特点,本发明提出了一种结合存内计算技术的快速傅里叶变换电路技术方案,本技术方案在实现低功耗计算的同时还可以实现高并行度和低延迟时间。本发明结合快速傅里叶变换矩阵计算和存内计算乘累加以及行复制技术,设计任意点快速傅里叶变换的处理电路,能够在降低功耗的同时,实现高并行和低延迟的信号快速傅里叶变换处理。

如图1所示,本实施例提供一种用于优化快速傅里叶变换的存内计算加速电路,包括:

总线接口转换模块,用于接收主机发出AHB(Advanced High-performance Bus)协议格式的数据流,将数据流转换为整个任意点快速傅里叶变换计算电路计算所需的数据流控制时序信号,将数据流控制时序信号发送至行复制控制模块和存储模块,由行复制控制模块结合存储模块控制计算数据经存内计算阵列的输入输出处理;

存储模块,用于存储原始输入数据和经过存内计算阵列计算完毕所产生的数据;

存内计算阵列,与所述存储模块连接,用于接收来自存储模块的数据进行傅里叶变换运算,并将运算结果返回存储模块;

行复制控制模块,用于生成被复制数据的源行地址以及将被放置的目的地址,控制每一级的计算,并将每一级的计算结果复制到下一轮计算所需的存储阵列位置;以及生成原始输入数据在存算模块中的初始地址。

作为一种可选的实施方式,参见图3,所述存内计算阵列从上到下分为算术算子阵列、逻辑算子阵列、控制流算子阵列三部分阵列,每部分阵列大小均等,由多个存内计算单元以行、列的阵列连接构成,同一列的存内计算单元均连接到同一字线上,同一行的存内计算单元均连接到同一位线上,同一列的支持8点数、16点数、32点数和64点数等任意点数所形成的相乘、相加或者相减关系,每一次只支持相同点数的快速傅里叶变换计算。

作为一种可选的实施方式,参见图4,行复制控制模块由一个内含一张可编程路由表的地址生成器构成。可编程路由表记录了完成一种算法计算需要的全部存算阵列地址及路径顺序,通过更改不同的指令激活不同的路由表,理论上可以实现任意种算法运算。数据在存算阵列中每进行一次算术运算或者逻辑运算或者比较运算,返回一次中断信号,该行复制控制模块接收中断信号并发出下一次运算所需要的新地址,指导数据在存算阵列中的移动,直至完成计算。

总的来说,本实施例的技术方案可以让任意点快速傅里叶变换得以在存内计算阵列中方便实现,从而达到低功耗,低延迟设计的目标。

基于上述的存内计算加速电路,如图2所示,本实施例还提供一种用于优化快速傅里叶变换的存内计算加速方法,包括以下步骤:

S1、CPU主机以AHB协议格式发送FFT初始数据至存内计算加速电路;

S2、存内计算加速电路将初始数据保存至存储模块中;

S3、CPU主机以AHB协议格式发送启动计算指令至存内计算加速电路;

S4、存内计算加速电路通过行复制控制模块分配的地址,将存储模块中的初始数据存入存内计算阵列中,并开始计算;

S5、每当FFT完成—级运算之后,返回中断信号至行复制控制模块;

S6、行复制控制模块分配行源地址和行目的地址,将计算结果复制至新行地址进行下一级计算;

S7、直至完成计算,存内计算阵列输出计算结果至存储模块中;

S8、存内计算电路输出中断信号,并等待CPU读取指令,以将计算结果传输至CPU主机。

作为一种可选的实施方式,基于FFT(Fast Fourier Transform,快速傅里叶转换)算法,假设FFT点数为1024点,开发一项基于C语言的程序,经过反汇编得到该程序的汇编代码,例如复数加法、复数乘法和复数减法,该计算过程是在RISCV32-UNKOWN-ELF-GCC-10.1.0编译工具的环境下进行。在一个蝶形运算当中,涉及到144个指令操作,其中有18个SW指令操作和36个LW指令操作。当FFT点数为8时,包含7个蝶形运算。假设该支持在内部执行一个蝶形运算过程,那么18个SW和36个LW就被简化为1个SW和1个LW操作,即输入原始数据和输出计算结果。假设每个指令执行一个时钟周期,该算法的改进比例为(18+36)/144=0.375,即37.5%。改进加速比可以考虑SW指令是寄存器写入,存储器读出,所以相较于LW指令耗时更短。SW指令大概是几纳秒到几十纳秒之间,LW指令耗时大概几十纳秒到几百纳秒之间,所以18次SW+36次LW取值范围在1100纳秒到26000纳秒之间,即0.001毫秒到0.02毫秒之间。一次SW+LW为0.00001ms,改进加速比为100倍。所以根据总加速比的公式得出,总加速比约为1.6,即改进了160%。

上述的C语言的程序代码如下所示:

经过反汇编得到该程序的汇编代码如下所示:

/>

/>

/>

/>

/>

/>

/>

/>

/>

/>

/>

/>

/>

作为一种可选的实施方式,参见图5,本实施例利用黑金基于XILINX ZYNQ7020开发平台的开发板实现。它采用ARM+FPGA SOC技术将双核ARM Cortex-A9和FPGA可编程逻辑集成在一颗芯片上。它采用的是Xilinx的Zynq7000系列XC7Z020-2CLG400I作为核心处理器。将该存内计算电路以协处理器的形式与PS(Processing System)端相连,用Xilinx工具链中的Vivado SDK平台在PS端输入指令进行计算。

本实施例还提供一种用于优化快速傅里叶变换的存内计算加速装置,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如图2所示方法。

本实施例的一种用于优化快速傅里叶变换的存内计算加速装置,可执行本发明方法实施例所提供的一种用于优化快速傅里叶变换的存内计算加速方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。

本申请实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图2所示的方法。

本实施例还提供了一种存储介质,存储有可执行本发明方法实施例所提供的一种用于优化快速傅里叶变换的存内计算加速方法的指令或程序,当运行该指令或程序时,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。

在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

相关技术
  • 一种飞行指挥系统配套设施的测试设备
  • 一种基于存内计算的混合基快速傅里叶变换计算电路
技术分类

06120116512176