
技术摘要:
本发明公开了一种基于DSP的复杂函数有限寄存器下的代码执行优化方法,包括步骤:选取DSP处理器型号,确定内核执行宏数量、寄存器数量和有效寄存器数量;对待执行复杂函数进行编程,获取算法执行流程中的全局变量数量,得到常数占用寄存器数量;确定一次算法执行流程所 全部
背景技术:
随着大规模集成电路和信息技术的飞速发展,数字信号处理技术应运而生并得到 迅速发展。DSP(数字信号处理)越来越显示出其优越性,得到日益广泛的应用。由于DSP具有 高性能、低功耗等特点被广泛应用。DSP应用领域呈现出终端产品种类的多样化,对其功耗 和性能等方面不断提出更高的要求。 目前DSP已经发展到了异构多核阶段,集成电路的加工工艺水平进一步提高,DSP 能力进一步加强,允许在一个芯片上集成CPU、DSP这两种不同类型的处理器。两者具有不同 的关注重点,CPU侧重于通用数据的处理,而DSP强调数据的实时计算。为了在更大应用范围 里有更大的数据处理效率,可以将两者进行结合。DSP产品将向着高性能化、可编程化和系 统级芯片化发展,追求更高的运算能力、更低的功耗。 DSP在算术密集性、实时性、特殊硬件逻辑等几个特征决定了DSP处理器在高速实 时信号处理和高性能实时计算领域的不可代替性。在实时性方面,数字信号处理中通常面 对的是大量的实时数据流,DSP芯片需要具备较小的延迟,数字信号处理必须及时地响应外 界系统的各种变化,从而调整系统工作状态。可编程DSP与FPGA相比,最大特点是结构灵活, 有很强的通用性,适用于模块化设计,从而能够提高算法效率,又由于其开发周期较短,系 统易于维护和扩展,适用于实时信号处理。 针对DSP处理器的发展趋势,根据信号处理领域对DSP处理器性能指标要求,目前 国内推出很多性能优越的DSP器件产品,根据DSP的内核资源,硬件资源和指令特点,一般配 套该产品的通用标准参数的优化算法函数库提供给用户使用,DSP的开发过程需要根据其 组织结构、流水线、内核架构、指令结构与特点以及编程约束条件等来进行函数库的开发工 作。根据标准优化算法和相关资源限制,在无特殊资源限制如寄存器资源不够的情况下,可 计算此函数的理论运行周期数。存在少数函数的算法复杂性较高(如三角函数、幂函数),即 使对各个资源充分利用,仍然存在无法循环展开的情况,在这种情况下就较难判断此函数 的理论运行周期数。也就是说,在现有资源的基础上为了使算法最高效的实现,在缺少寄存 器的情况下,就缺少了优化程序的理论判断标准。因此,在寄存器资源有限的条件下,对于 复杂函数的循环展开,目前还没有一个规范的最优化标准方法,现有的处理方法大多情况 下会导致资源的浪费,从而使整个的系统实时性较差,工作效率不高。
技术实现要素:
针对现有技术中存在的问题,本发明的目的在于提供一种基于DSP的复杂函数有 限寄存器下的代码执行优化方法,在寄存器资源有限的情况下,即不能保证编写函数执行 算法时能够将内层函数代码进行循环展开优化,能够最优化的使代码高效执行复杂算法、 4 CN 111553123 A 说 明 书 2/7 页 减少耗时、使后续的应用系统更具实时性;方法简单、实用性强。 为了达到上述目的,本发明采用以下技术方案予以实现。 基于DSP的复杂函数有限寄存器下的代码执行优化方法,包括以下步骤: 步骤1,选取DSP处理器型号,确定该DSP处理器内核执行宏数量、寄存器数量和有 效寄存器数量;确定执行结果为符合单精度标准; 步骤2,对待执行复杂函数进行编程,根据待执行复杂函数算法编写对应算法执行 流程;获取算法执行流程中的全局变量数量,得到常数占用寄存器数量;确定算法执行流程 中的最内层循环占用的寄存器数量,即得到一次算法执行流程所需的最小寄存器数量; 步骤3,根据DSP处理器的有效寄存器数量、常数占用寄存器数量和一次算法执行 流程所需的最小寄存器数量,计算并行执行的算法组数;根据DSP处理器的硬件执行特征, 确定并行执行的列数; 步骤4,根据DSP处理器的硬件资源在同一执行行中的限制,判断是否存在需要拆 分的执行行;若是,对需要拆分的执行行进行拆分;否则,完成代码执行的优化,且DSP内核 的所有执行宏同时参与运算;得到优化后的代码执行方案。 进一步地,所述有效寄存器数量为DSP处理器中的允许使用的最大寄存器数量。 进一步地,所述根据DSP处理器的有效寄存器数量、常数占用寄存器数量和一次算 法执行流程所需的最小寄存器数量,计算并行执行的算法组数,具体为: 其中,floor(·)为向下取整操作;y为DSP处理器一次并行执行的算法组数,X为 DSP处理器的有效寄存器数量,n为常数占用寄存器数量,m为一次算法执行流程所需的最小 寄存器数量; 进一步地,所述根据DSP处理器的硬件执行特征,确定并行执行的列数,具体为: 首先,查找该DSP处理器的用户手册,确定当前周期是否直接使用上一周期的计算 结果,若是,则转入步骤4,否则,确定当前周期获取的上一个执行行的计算结果时需要间隔 的周期数c; 然后,确定c 1组算法执行流程叠加成一列执行,则并行执行的列数为 其中,ceil(·)表示向上取整操作。 进一步地,所述根据DSP处理器的硬件资源在同一执行行中的限制,判断是否存在 需要拆分的执行行,具体为: 首先,查找该DSP处理器的用户手册,确定每个硬件资源在同一执行行中允许的最 大指令数ti; 然后,比较每个硬件资源在同一执行行中允许的最大指令数ti与并行执行的列数 d的大小,若ti<d,则为需要进行拆分,否则,不需要拆分; 其中,i=1,2,…,x,x为DSP处理器的硬件资源总数,所述硬件资源包含乘法器、算 术逻辑资源、移位器和超算器。 更进一步地,所述对需要拆分的执行行进行拆分为:将该执行行的指令拆分成 5 CN 111553123 A 说 明 书 3/7 页 个执行行执行。 与现有技术相比,本发明的有益效果为: 本发明针对DSP函数库开发过程中遇到的复杂函数执行效率低的问题,在系统寄 存器资源有限的情况下,确定一个代码执行的优化标准,实现代码执行的最优化方法,能够 充分利用系统硬件资源,同时实现算法的高效执行,避免资源浪费,提高系统实时性和工作 效率。 附图说明 下面结合附图和具体实施例对本发明做进一步详细说明。 图1是本发明基于DSP的复杂函数有限寄存器下的代码执行优化方法的实现流程 图; 图2是本发明实施例的代码优化布局图; 图3是本发明实施例的代码优化并行执行布局图; 图4是本发明实施例在某个指令存在限制情况下的代码排布图。