CN1853164A - 用于开发dsp编译器构件块的组合方法 - Google Patents
用于开发dsp编译器构件块的组合方法 Download PDFInfo
- Publication number
- CN1853164A CN1853164A CNA2004800270151A CN200480027015A CN1853164A CN 1853164 A CN1853164 A CN 1853164A CN A2004800270151 A CNA2004800270151 A CN A2004800270151A CN 200480027015 A CN200480027015 A CN 200480027015A CN 1853164 A CN1853164 A CN 1853164A
- Authority
- CN
- China
- Prior art keywords
- code
- instruction
- source code
- signal processor
- digital signal
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种方法是使用通过采用自然语言处理以及有限态词法(FSM)应用的组合方法将源代码转换成有效汇编码。在一个实施例中,这些可以通过对每条指令使用词法功能语法分析(LFGA)来修改包括了多条指令的源代码以作为数字信号处理器体系结构的一个函数而实现。随后通过使用有限态词法(FSM)和动态指令置换(DIR)的多次迭代来改变被修改源代码的结构,从而生成所述有效的源代码。
Description
技术领域
在此描述的本发明主题大致涉及计算机的编译器,尤其涉及数字信号处理器(DSP)。
背景技术
优化编译器是用于将程序从更高级语言转换成等效汇编码(也指用于在计算机上执行的汇编码)的软件系统。优化通常要求找到降低程序运行时间的计算有效转换。这样的优化包括改进型循环处理、失效代码排除、软件流水线、改进的寄存器分配、指令预取、指令调度和/或与将数据从存储器送入处理器相关联的通信成本的降低。此外,优化要求编译器执行诸如内容和上下文分析、实况调查、转换等任务以提供有效的汇编码。
当前的DSP(数字信号处理器)编译器不生成有效的汇编码,因为当前的方法没有利用DSP的固有特性,诸如多累加(MAC)单元、专用寄存器、带有受限连通性的多总线、流水线级的数目等等。甚至一个有经验的程序员手动地通过结合DSP函数固有特性的诸多排列组合在一些迭代之后,为给定的应用程序生成优化的汇编码。这一手动的方法耗费了大量的时间并且也大大影响了有效DSP编译器投放市场的时机(上市时间)。通常DSP是用于实时应用的专用处理器,诸如用于要求优化汇编码以最有效的方式处理信息的无线通信中,使其能耗更少、速度更快并且信道容量更大。
因此就需要能够捕获体系结构的具体函数以有效生成汇编码的DSP编译器。还需要能够有效地把高级编程语言映射至目标DSP的汇编码的DSP编译器。此外,还需要编译器的快速发展以处理日益复杂的现代DSP。
附图说明
图1是根据在此描述的本发明主题的一个实施例,示出了生成用于DSP(数字信号处理器)的汇编码的方法的流程图。
图2是根据在此描述的本发明主题的一个实施例,示出了使用LFGA(词法功能语法分析)生成修改的源代码的方法的流程图。
图3是根据在此描述的本发明主题的一个实施例,示出了在图2所示修改的源代码中生成的重新安排的指令块的方法的流程图。
图4是根据在此描述的本发明主题的一个实施例,示出了对一系列要求在修改的源代码中并发分布指令的乘法实例使用佩特里网(Petri Nets)算法的框图。
图5是根据在此描述的本发明主题的一个实施例,示出了使用修改的源代码生成包括了图3所示的重新安排的指令块的有效代码的方法的流程图。
图6是根据在此描述的本发明主题的一个实施例,示出了使用遗传算法找出最优指令的方法的流程图。
图7是根据在此描述的本发明主题的一个实施例的DSP编译器的示意图。
图8是用于实现在此描述的本发明主题的实施例的合适计算环境的实例。
具体实施方式
在此描述的本发明主题的一个实施例通过利用诸如多累加(MAC)单元、专用寄存器、带有受限连通性的多总线、流水线级的数目等等的DSP固有特性,提供了一种生成用于DSP(数字信号处理器)的有效汇编码的方法。在此描述的各示例实施例中实现的本方法通过采用自然语言处理与有限态词法(FSM)应用而使用的组合方法来获取有效的汇编码。
根据一个示例实施例,本方法或技术为编译器开发提供基本的构件块或框架以支持带有可在现代DSP中找到的异类寄存器、存储器、MAC单元、流水线结构的非标准数字信号处理器(DSP)。它也支持使用LFGA(词法功能语法分析)和FSM引擎生成优化汇编码所需的复杂指令集和算法转换。本方法还研究寄存器分配、指令调度、指令选择和通过佩特里网算法和遗传算法的更换。此外,根据其它的示例实施例,本方法还提供通过DIR(动态指令置换)捕获体系结构具体优化的方法。此外,本方法还允许开发者将高级语言描述(诸如在信号处理算法/程序中的C语言描述)有效映射至编码指令。根据又一些示例实施例,本方法还包括提供构件块以支持对现代DSP编译器的快速发展。
在随后各实施例的详细描述中可参考组成本说明的附图,其中通过图示示出可实践发明主题的各特定实施例。对示出的实施例做出足够详尽的解释使得本领域普通技术人员能够实现发明的主题,并且应该理解可也可利用其他的实施例,并且可做出改变而不背离本发明的范围。因此如下的描述并非出于限制性的意义,而且本发明主题的范围仅由所附权利要求来限定。
术语“更高级语言”、“高级语言”、“高级编程语言”和“源代码”在本文中可以交替使用。此外,术语“汇编码”和“源代码”在本文中也可交替使用。
图1示出了根据在此描述的本发明主题的方法100的第一个示例实施例。此实施例的目标是将DSP的源代码转换成用于在DSP上处理的有效汇编码。
在110,接收到形式为诸如C程序的高级语言的源代码。在120,使用词法功能语法分析(LFGA)语法分析以上接收到的源代码,以修改该源代码使其适合目标DSP体系结构。在某些实施例中,包括多条指令的源代码是通过对作为具体DSP体系结构函数的每条指令执行LFGA运算而修改的。随后示出的一个源代码的示例修改包括了使用所述LFGA运算的39次循环:
For(j=0;j<39;j++)
{
Scratch[j]=Mult(Scratch[j],11);}}
如果具体的DSP体系结构的MAC大小是n,则上述39次循环就是必须是n的倍数。例如在IntelIXS媒体信号处理器中的MAC大小是4而上述循环次数不是4的倍数。因此,在此情况下通过增加缓冲大小来增加所述循环次数,通过添加空指令来使得所述循环次数是4的倍数。如下修改源代码:
For (j=0;j<40;j++)
{
Scratch[j]=Mult(Scratch[j],11);}
运算期间,上述空指令保留在源代码内并且当存取数据时仅有首先的39个值会被存取。在上述实例中添加空指令导致了降低存储器的使用和增加执行相同计算所需的循环次数,从而生成了有效的源代码。
现参见图2,示出了对源代码内每条指令执行LFGA运算的示例方法200。在210,基于存储在数据库220内的目标DSP体系结构来对源代码内的每条指令执行词法分析。数据库220可以包括DSP资源信息,诸如寄存器、流水线结构、指令调度、存储器、MAC单元等等。在230和240,还对所述被修改的源代码分别做出进一步的句法和语义分析,并且还基于所述句法和语义分析的结果对所述源代码做出进一步的修改和/或更新。
现在参考图1,在130使用上述被修改的源代码生成中间码。在一个示例实施例中,通过使用佩特里网算法生成中间码。佩特里网是能够用于分析源代码中指令流并且基于目标DSP体系结构的执行资源指定一个最为有效的流型的数学工具。佩特里网能够考虑所有的DSP资源结果并且能够提供用于源代码的有效流型。佩特里网是当存在多种具体用于目标DSP的独立执行资源(诸如考虑到的资源分配、流水线结构、指令调度、存储器、ALU(算术逻辑单元)、MAC单元)时生成有效代码以形成所述源代码的工具。佩特里网在包括了并发分布指令的源代码中的流动一流型中尤为有效。佩特里网工具可如下使用:
PN=(P,T,I,O,M);where
PN=Petri Net
P={p1,p2,p3,...,pm}is a finite set of places
T={te1,t2,t3,...,tn}is a finite set of transitions
I=Inputfunction
O=Outputfunction
M=Initial marking
现在参考图3,示出了使用佩特里网算法用于在被修改的源代码内重新安排并发分布指令的示例方法300。在310,接收到上述被修改的源代码。在320,对并发分布指令检查所述接收到的被修改源代码。如果在被修改源代码中没有并发分布指令,该过程就在330处停止。如果在被修改源代码中有任何并发分布指令,就基于执行资源,特别是基于存储在数据库350内的DSP体系结构,在340处审查该并发分布指令。在360,重新安排所述并发分布指令以基于被存储的执行资源提供最有效的流型。为在所述被修改的源代码中找到的每条并发分布指令重复上述过程,直到所述被修改源代码中所有的并发分布指令都被重新安排,并且该过程在330处停止以形成所述中间码。
现在参见图4,示出了为一组请求并发分布指令以执行所述源代码的等式401-406使用佩特里网算法的示例框图400。在图4中示出的运算1和2描述了分别将佩特里网算法施加到方程401和402。410上t1、t2等的参数是转移并且它们分别表示了乘法和加法的执行。圆圈内的单个黑点420表示资源的可用性。为了执行第一个等式401,需要所有三个参数b、c和d。输入参数b、c和d分别存储在寄存器R0、R1和R2内。在图4所示的示例实施例中,参数a是寄存器R3内的第一等式401的输出,并且这是用于b在运算2470的输入参数之一。因此,直到参数a可用时才能执行等式402。当形成源代码时有一个条件需要满足。如果指令是独立的,它们就可被并行地执行,但是在此实例中是有依赖关系的,因此不能并行地执行指令。在圆圈内的两个黑点425表示需要两个参数b和c以在430完成等式401的执行。在运算1460所示的实例中,需要参数b和c以执行参数d。在任何时刻,在执行等式401和402期间所使用的存储器在运算1和2中都是已知的。
在图4中可见,乘法比加法占用更多的执行周期,这是因为参数b和c必须首先被相乘并在随后与d相加以执行第一等式401。在图4所示的实例中,参数b和c的乘法需要两个循环,以及在添加该乘法结果到参数d之前的一个在430处等待乘法的结果可用的额外等待时间循环。能够使用佩特里网算法寻址该流水线发布。从上述实例可见所述佩特里网寻址执行资源的结果,诸如在所述源代码内的寄存器分配、流水线结果等等。同样还可见,通过在任何给定时间使用佩特里网算法就可得知正在使用哪些寄存器以及哪些寄存器可用于存储。图4还进一步示出了使用佩特里网算法在运算2470中执行等式402。使用类似的过程执行等式403-406。
参见图1,在操作140,使用遗传算法生成第一有效代码。遗传算法能够通过模仿自然进化过程来解决复杂的优化问题。通常遗传算法的总体能够包括若干个体,个体由给定的随后可细分为基因的染色体表示。基因被用于编码优化问题中的变量。通过施加遗传算子(诸如选择、变异、交叉等)就可仅用几步迭代选出总体中的最佳个体。
现在参考图5,示出的是使用遗传算法生成有效源代码的示例方法500。在510,初始化上述中间码。在520,从所述中间码中选出被优化的指令并且计算执行所选指令所需的时钟周期数。在530,计算减少的时钟周期数。在540,检查算出的减少的时钟周期数以了解它是否少于预定减少的时钟周期数。
如果计算出减少的时钟周期数不小于预定减少的时钟周期数,就可基于具体的DSP体系结构选择另一个类似的和/或相关的指令。在580,为所选的指令施加交叉。在590,变异所选指令并重复上述过程。
如果计算出减少的时钟周期数小于预定减少的时钟周期数,就在550处使用所选指令生成所述第一有效代码。在560,再次检查所述中间码来看是否有任何其他的指令需要使用遗传算法进行优化。如果在所述中间码中存在需要优化的指令,则过程行进到520并重复上述过程。如果在所述中间码中如果没有需要优化的指令,则过程在565处停止。
以下的实例进一步地示出了使用遗传算法找出全局最优的方法:
考虑一条请求乘法的指令,诸如中间码中的a=b*c。假设c等于2,就可使用以下三种方法执行上述乘法:
(i)a=b*2
(ii)a=b<<1
(iii)a=b+b
以下的表格示出了对于上述三种方法的每一种执行源代码所需的资源数目和时间周期数。
方法 | 资源 | 周期 |
a=b*2 | 2个寄存器 | 2个周期 |
a=b<<1 | 2个寄存器 | 2个周期 |
a=b+b | 1个寄存器 | 1个周期 |
从上述表格中可见,第一种和第二中方法需要2个寄存器和2个周期以执行源代码内的指令,即用1个周期将数据载入2个寄存器并另加1个周期执行1个加法周期。然而第三种方法要求最少的周期数以执行源代码内的指令,因此就是优选的方法。诸如上述计算的指令以及其他这些指令,可如上所述参考图5由使用遗传算法而被处理,以选择使用最少处理器资源的最优指令。
现在参见图6,示出的是对方程式605的实例使用如上所述的遗传算法的最优指令的选择。在610,初始化中间码。在620,检查所选指令以基于预定资源和执行该指令所需周期数来确定它是否是最优的。如果所选指令符合上述标准,则该过程就在670处停止。如果所选指令不符合上述标准,随后就在630处选择一种不同的方法来执行该等式。在640,对所选方法应用交叉。在650出,对所选方法执行变异并且如图6所示重复该过程直到如以上表格中所示为实例等式605添加的最优指令被选择。
现在参见图1,在150处通过对第一有效码内的一条或多条所选指令执行动态指令替换(DIR)来生成第二有效码。例如在诸如IntelIXS 1000媒体信号处理器的处理器中,就在使用最小量处理器资源(诸如执行源代码所需的周期数的)的RISC资源内在执行期间完成移位操作。上述执行的一部分可以在DSP中通过与一预定义数相乘以间接方式得以完成。在160处,通过把第二有效码映射至汇编码而生成汇编码。
虽然流程图100、200、300、500和600包括了在示例实施例中被串行排列的动作,但是本主题的其他实施例也可使用多处理器或组织成两个或更多虚拟机或子处理器的单个处理器并行地执行两个或更多的动作。此外,再一些实施例可将这些动作实现成带有相关控制和在模块之间并通过模块通信的数据信号的两个或更多具体互连的硬件模块,或者作为专用集成电路的一部分。这样,示例过程的流程图就适用于软件、固件和/或硬件实现。
现在参考图7,示出的是根据在此描述的本发明主题的编译器700的示例实施例。编译器700包括输入模块710、LFGA模块720、FSM模块730和输出模块740。如图7所示,LFGA模块耦合至数据库725。图7还示出了包括遗传和佩特里网的算法模块735。此外,算法模块735包括了具有DIR算法的DIR模块737。算法模块735和737在中间码以及第一和第二有效码生成期间可由FSM模块访问。
在操作中,输入模块710接收包括了多条指令的源代码。LFGA模块720随后对源代码内的每条指令执行LFGA运算作为具体DSP系统结构的一个函数。LFGA运算通过对源代码内每条指令执行词法分析来分析所述源代码。在某些实施例中,LFGA运算还包括对被分析的源代码进行句法和语义分析,并且更新和/或修改该源代码。对源代码内每条指令的LFGA运算的性能参考图1和图2作更详细的解释。
FSM模块730随后通过使用佩特里网算法为每条指令分配DSP资源从而生成中间码。佩特里网算法存储在算法模块735中。使用佩特里网算法生成中间码参考图3和图4作更详细解释。使用佩特里网算法为每条指令分配DSP资源能够包括诸如寄存器、流水线结构、指令调度、存储器、ALU和MAC单元的资源。目标DSP体系结构的DSP资源被存储在数据库725内。
FSM模块730还通过使用遗传算法选择中间码内的每条指令并将其与一条或多条其他类似的可用指令相比较而生成第一有效码。通过使用遗传算法生成第一有效码参考图5作更详细解释。
FSM模块730随后从所述第一有效码内具有类似可用指令集的多个指令中选择一条或多条指令。FSM模块730随后对所述一条或多条所选指令执行DIR以进一步生成第二有效码。同样地,使用DIR算法生成第二有效码的更详细解释参考图5。输出模块740通过把所述第二有效码映射至汇编码来生成汇编码。
图8示出了用于实现在此描述的本发明主题实施例的合适的计算系统环境的实例的框图800。图8和随后的讨论旨在提供对其中能够实现包含在此的本发明概念的某些实施例的合适计算环境的简明、通用的描述。
以计算机810形式的通用计算设备可以包括处理单元802、存储器804、可移动存储装置812以及不可移动存储装置814。计算机810还可包括总线805和网络接口(NI)801。
计算机810可以包括或具有对其中包括了一个或多个输入元件816、一个或多个输出元件818以及一个或多个通信连接820的计算环境的访问。计算机810可以使用通信连接820连接至一个或多个远程计算机而在网络环境中操作。远程计算机可以包括个人计算机、服务器、路由器、网络PC、对等设备或其他网络节点等等。通信连接可包括局域网(LAN)、广域网(WAN)和/或其他网络。
存储器804可以包括易失性存储器806和非易失性存储器808。各种计算机可读介质可由诸如易失性存储器806和非易失性存储器808、可移动存储812和不可移动存储814等的计算机810的存储器元件访问和存取。
计算机存储器元件可以不可用于存储数据和机器可读指令的任何合适的存储器设备,诸如只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM);硬盘驱动;用于处理致密盘(CD)、数字视频盘(DVD)、软盘、磁带盒、存储卡、记忆棒的可移动媒体驱动;化学存储;生物存储以及其他类型的数据存储装置。
在此使用的“处理器”或“处理单元”或“计算机”或“DSP”指任何类型的计算电路,诸如但不限于微处理器、微控制器、复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字显式并行指令计算(EPIC)微处理器、图形处理器、数字信号处理器或任何其他类型的处理器或处理线路。该术语还包括嵌入式控制器,诸如遗传或可编程逻辑器件或阵列、专用集成电路、单片机、智能卡等等。
该主题的实施例可结合包括了函数、过程、数据结构、应用程序等等的程序模块实现,用于执行任务或定义抽象数据类型或低级别硬件内容。
存储在上述任何存储介质中的机器可读指令都可由计算机810的处理单元802执行。例如,计算机程序825可以包括能够根据在此描述的本发明主题的教示将源代码转换成汇编码的机器可读指令。在一个实施例中,计算机程序825还可包括在CD-ROM内并从CD-ROM载入非易失性存储器808内的硬盘中。机器可读指令使计算机810根据在此描述的本发明主题的教示将高级语言的程序转换成有效汇编码。
在此描述的DSP编译器以及将源代码转换成汇编码的方法的各实施例一般可应用于减少程序运行时间的任何计算有效转换,并且在此描述的实施例绝不限制本发明的主题的可应用性。此外,各示例实施例的方法对程序从高级语言到等效汇编码的转换、程序、软件、固件和算法转换的任何硬件实现都十分有用。因此,本发明主题的方法和装置可应用于那些应用并且绝不限于在此描述的实施例。
Claims (30)
1.一种方法,包括:
通过对一条或多条指令执行词法功能语法分析(LFGA)运算以作为数字信号处理器(DSP)体系结构的一个函数来修改包括多条指令的源代码;以及
使用所述被修改的源代码生成汇编码。
2.如权利要求1所述的方法,其特征在于,通过执行词法功能语法分析运算修改所述源代码还包括:
分析所述被修改的源代码的句法和语义;以及
基于所述分析的结果进一步地修改所述源代码。
3.如权利要求2所述的方法,其特征在于,还包括:
通过使用有限态词法(FSM)的一系列迭代生成有效源代码来改变所述被修改源代码的结构。
4.如权利要求3所述的方法,其特征在于,使用有限态词法修改所述被修改源代码的结构包括:
基于数字信号处理器资源通过使用佩特里网算法重新安排并发分布指令来生成中间码;以及
通过使用遗传算法在所述中间码内选择一条或多条指令并将其与一条或多条类似可用指令相比较来生成所述有效码。
5.如权利要求4所述的方法,其特征在于,所述数字信号处理器资源是从由寄存器、流水线结构、指令调度、存储器和MAC单元组成的组中选出的。
6.如权利要求4所述的方法,其特征在于,使用所述遗传算法选择和比较所述中间码内的一条或多条指令包括:
在所述中间码内选择一条指令来生成所述有效码;
计算执行当前被选指令所需的时钟周期数;
使用所述当前和先前算出的时钟周期数来计算减少的时钟周期数;
比较所述减少的时钟周期数与预定减少的时钟周期数;
如果所述减少的时钟周期数大于所述预定减少的时钟周期数,则基于具体的数字信号处理器体系结构来选择一相关的指令并对所选指令应用交叉以及重复计算时钟周期数、计算减少的时钟周期数以及比较运算直到所述减少的时钟周期数小于或等于预定减少的时钟周期数;以及
如果所述减少的时钟周期数小于所述预定减少的时钟周期数,就选择用于所述有效码的所述指令并且为所述中间码内的下一个指令重复上述操作。
7.如权利要求4所述的方法,其特征在于,使用有限态词法修改所述被修改的源代码的结构包括:
从具有类似可用指令集的多条指令中选择一条或多条指令;以及
对所述一条或多条指令执行动态指令置换。
8.一种生成汇编码的方法,包括:
接收包括了多条指令的高级语言程序;
通过对一条或多条指令执行词法功能语法分析操作来分析所述程序,以使得所述程序用具体的数字信号处理器体系结构编译;以及
为了在DSP上的执行,使用被分析的程序生成汇编码。
9.如权利要求8所述的方法,其特征在于,所述数字信号处理器体系结构包括从由寄存器、流水线结构、指令调度、存储器、ALU(算术逻辑单元)以及MAC(多累加)单元组成的组选出的执行资源限制。
10.如权利要求8所述的方法,其特征在于,分析所述程序中的一条或多条指令还包括
分析所述被分析的程序的句法和语义;以及
基于所述分析的结果更新所述被分析的程序。
11.如权利要求10所述的方法,其特征在于,还包括:
基于数字信号处理器资源通过使用佩特里网算法重新安排并发分布指令来生成中间码;
通过使用遗传算法在所述中间码内选择一条或多条指令并将其与一条或多条类似可用指令相比较来生成第一有效码;以及
使用所述第一有效码生成所述汇编码。
12.如权利要求11所述的方法,其特征在于,还包括:
从所述在第一有效码内具有类似可用指令集的多条指令中选择一条或多条指令;
通过对所述一条或多条被选指令执行动态指令置换来生成第二有效码;以及
通过把所述第二有效码映射至汇编语言码来生成所述汇编码。
13.一种生成由DSP执行的汇编码的方法,包括:
接收包括了多条指令的高级语言源代码;
使用词法功能语法分析来分析所述源代码以修改所述程序中的一条或多条指令,使得所述被修改的指令符合具体的数字信号处理器资源;
分析所述被分析的源代码的句法;
基于所述分析更新所述被分析的源代码的句法。
基于数字信号处理器资源通过使用佩特里网算法重新安排并发分布指令来生成中间码;
通过使用遗传算法在所述中间码内选择一条或多条指令并将其与可在所述具体DSP上处理的一条或多条类似可用指令相比较来生成第一有效码;
从在所述第一有效码内具有类似可用指令集的多条指令中选择一条或多条指令;
通过对所述一条或多条被选指令执行动态指令置换来生成第二有效码;以及
通过把所述第二有效码映射至汇编语言码来生成所述汇编码。
14.如权利要求13所述的方法,其特征在于,所述数字信号处理器资源是从由寄存器、流水线结构、指令调度、存储器、ALU和MAC单元组成的所述组中选出的。
15.如权利要求13所述的方法,其特征在于,使用所述遗传算法选择并比较所述中间码内的一条或多条指令包括:
在所述中间码内选择一条指令以生成所述有效码;
计算执行当前被选指令所需的时钟周期数;
使用所述当前和先前算出的时钟周期数来计算减少的时钟周期数;
比较所述减少的时钟周期数与预定减少的时钟周期数;
如果所述减少的时钟周期数大于所述预定减少的时钟周期数,随后就基于具体的数字信号处理器体系结构来选择类似于所述被选指令的另一个指令并对被选指令应用交叉以及重复计算时钟周期数、计算减少的时钟周期数以及比较运算直到所述减少的时钟周期数小于或等于预定减少的时钟周期数;以及
如果所述减少的时钟周期数小于所述预定减少的时钟周期数,就选择用于所述有效码用于所述指令并且对所述中间码内的下一个指令重复上述操作。
16.一种用于开发汇编码的编译器,包括:
输入模块,所述模块接收包括多条指令的源代码;
词法功能语法分析模块,所述模块通过对一条或多条指令执行词法功能语法分析操作来修改所述源代码作为数字信号处理器体系结构的一个函数;以及
输出模块,该模块使用所述被修改的源代码生成汇编码。
17.如权利要求16所述的编译器,其特征在于,所述词法功能语法分析模块,通过对一条或多条指令执行词法分析作为数字信号处理器体系结构的一个函数来分析所述源代码。
18.如权利要求17所述的编译器,其特征在于,所述词法功能语法分析模块还包括:
句法和语义分析器,用于所述被分析的源代码的句法和语义分析并且基于所述分析进一步地修改所述源代码。
19.如权利要求18所述的编译器,其特征在于,所述编译器还包括:
有限态词法模块,所述模块通过使用佩特里网算法把数字信号处理器资源分配给一条或多条指令来生成中间码,其中所述有限态词法模块通过使用遗传算法在所述中间码内选择一条或多条指令并将其与一条或多条类似可用指令相比较来生成第一有效码,并且其中所述有限态词法模块从所述第一有效码内具有类似可用指令集的多条指令中选择一条或多条指令并且还通过对所述一条或多条被选指令执行动态指令置换来生成第二有效码,其中所述输出模块通过把所述第二有效码映射至汇编语言码来生成所述汇编码。
20.如权利要求19所述的编译器,其特征在于,所述数字信号处理器资源是从由寄存器、流水线结构、指令调度、存储器和MAC单元组成的所述组中选出的。
21.如权利要求20所述的编译器,其特征在于,还包括存储所述数字信号处理器资源的数据库。
22.一种包括其中存储了计算机可执行指令的计算机可读介质的物品,所述指令使得所述计算机执行:
接收包括了多条指令的高级语言程序;
通过对一条或多条指令执行词法功能语法分析操作来分析所述程序,以使得所述程序用具体的数字信号处理器体系结构编译;以及
为了在DSP上的执行,使用被分析的程序生成汇编码。
23.如权利要求22所述的包括其中存储了计算机可执行指令的计算机可读介质的物品,其特征在于,使用所述词法功能语法分析来分析所述程序还包括:
分析所述生成的汇编码的句法和语义;以及
基于所述分析修改所述生成的汇编码。
24.如权利要求22所述的包括其中存储了计算机可执行指令的计算机可读介质的物品,其特征在于,使用所述词法功能语法分析来分析所述程序还包括:
通过使用有限态词法(FSM)的一系列迭代生成有效源代码来修改所述被分析程序的结构。
25.如权利要求24所述的包括其中存储了计算机可执行指令的计算机可读介质的物品,其特征在于,使用有限态词法修改所述程序的结构还包括:
基于数字信号处理器资源通过使用佩特里网算法重新安排并发分布指令来生成中间码;以及
通过使用遗传算法在所述中间码内选择一条或多条指令并将其与一条或多条类似可用指令相比较来生成第一有效码;
使用所述第一有效码生成所述汇编码。
26.如权利要求25所述的包括其中存储了计算机可执行指令的计算机可读介质的物品,其特征在于,生成所述汇编码还包括:
从在所述第一有效码内具有类似可用指令集的多条指令中选择一条或多条指令;
通过对所述一条或多条被选指令执行动态指令置换来生成第二有效码;以及
通过把所述第二有效码映射至汇编语言码来生成所述汇编码。
27.一种系统,包括:
总线;
耦合至所述总线的数字信号处理器;
耦合至所述DSP的存储器;
耦合至所述数字信号处理器和所述存储器的网络接口,用于接收包括了多条指令的源代码;以及
编译器,所述编译器通过对一条或多条指令执行词法功能语法分析操作作为数字信号处理器体系结构的一个函数来修改所述源代码,并且使用所述被修改的源代码生成汇编码。
28.如权利要求27所述的系统,其特征在于,所述编译器还包括:
词法功能语法分析模块,所述模块通过对一条或多条指令执行词法功能语法分析操作来分析所述源代码作为具体的数字信号处理器体系结构的一个函数。
29.如权利要求28所述的系统,其特征在于,所述词法功能语法分析模块还包括:
句法和语义分析器,用于分析所述被分析的源代码的句法和语义,并且基于所述分析修改所述源代码。
30.如权利要求29所述的系统,其特征在于,所述编译器还包括:
有限态词法(FSM)模块,所述模块通过使用佩特里网算法把数字信号处理器资源分配给一条或多条指令来生成中间码,其中所述有限态词法模块通过使用遗传算法在所述中间码内选择一条或多条指令并将其与一条或多条类似可用指令相比较来生成第一有效码,并且其中所述有限态词法模块从在所述第一有效码内具有类似可用指令集的多条指令中选择一条或多条指令并且还通过对所述一条或多条被选指令执行动态指令置换来生成第二有效码,其中所述编译器通过把所述第二有效码映射至汇编语言码来生成所述汇编码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/675,910 US7437719B2 (en) | 2003-09-30 | 2003-09-30 | Combinational approach for developing building blocks of DSP compiler |
US10/675,910 | 2003-09-30 | ||
PCT/US2004/031776 WO2005033929A2 (en) | 2003-09-30 | 2004-09-29 | Combinational approach for developing building blocks of dsp compiler |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1853164A true CN1853164A (zh) | 2006-10-25 |
CN1853164B CN1853164B (zh) | 2010-10-13 |
Family
ID=34377307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800270151A Expired - Fee Related CN1853164B (zh) | 2003-09-30 | 2004-09-29 | 用于开发dsp编译器构件块的组合方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7437719B2 (zh) |
EP (1) | EP1668499A1 (zh) |
CN (1) | CN1853164B (zh) |
WO (1) | WO2005033929A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201750B (zh) * | 2006-12-13 | 2010-09-08 | 西安大唐电信有限公司 | 利用语法词法分析工具为编解码提供数据的方法 |
CN103440155A (zh) * | 2013-07-05 | 2013-12-11 | 万高(杭州)科技有限公司 | 一种数字信号处理器的编译器 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024703B2 (en) * | 2004-10-22 | 2011-09-20 | International Business Machines Corporation | Building an open model driven architecture pattern based on exemplars |
US20070203871A1 (en) * | 2006-01-23 | 2007-08-30 | Tesauro Gerald J | Method and apparatus for reward-based learning of improved systems management policies |
US8341597B2 (en) * | 2007-01-17 | 2012-12-25 | International Business Machines Corporation | Editing source code |
US8276124B2 (en) | 2007-06-20 | 2012-09-25 | Microsoft Corporation | Constructing petri nets from traces for diagnostics |
CN101369233A (zh) * | 2007-08-14 | 2009-02-18 | 国际商业机器公司 | 程序编译方法和编译器 |
JP2009076002A (ja) * | 2007-09-25 | 2009-04-09 | Nec Electronics Corp | 制御タイミング調整方法、コンパイルプログラム、コンパイル装置、及び情報処理装置 |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
CN102422263B (zh) * | 2009-05-07 | 2016-03-30 | 赛普拉斯半导体公司 | 开发、编程和除错环境 |
US8972961B2 (en) | 2010-05-19 | 2015-03-03 | International Business Machines Corporation | Instruction scheduling approach to improve processor performance |
US8656376B2 (en) * | 2011-09-01 | 2014-02-18 | National Tsing Hua University | Compiler for providing intrinsic supports for VLIW PAC processors with distributed register files and method thereof |
US9280322B2 (en) * | 2012-09-27 | 2016-03-08 | Intel Corporation | Generating source code |
US10133557B1 (en) * | 2013-01-11 | 2018-11-20 | Mentor Graphics Corporation | Modifying code to reduce redundant or unnecessary power usage |
WO2014151017A1 (en) * | 2013-03-15 | 2014-09-25 | Arganteal, Llc | Method of taking a computer architecture representation and generating manufaturing method capable of manufacturing computer systems in a specification |
US10204387B2 (en) | 2013-05-08 | 2019-02-12 | Nmetric, Llc | Sequentially configuring manufacturing equipment to reduce reconfiguration times |
CN105335129B (zh) * | 2014-06-23 | 2019-03-29 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
WO2017123367A1 (en) * | 2016-01-11 | 2017-07-20 | Siemens Aktiengesellschaft | Program randomization for cyber-attack resilient control in programmable logic controllers |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0281230A (ja) | 1988-09-19 | 1990-03-22 | Hitachi Ltd | 構文解析および言語処理システム |
CN1223402A (zh) * | 1998-01-12 | 1999-07-21 | 日本电气株式会社 | 在优化中能减少中断处理的编译器及其优化方法 |
US6467082B1 (en) * | 1998-12-02 | 2002-10-15 | Agere Systems Guardian Corp. | Methods and apparatus for simulating external linkage points and control transfers in source translation systems |
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
JP2001166947A (ja) * | 1999-12-06 | 2001-06-22 | Nec Corp | コンパイル処理方式 |
US6643630B1 (en) * | 2000-04-13 | 2003-11-04 | Koninklijke Philips Electronics N.V. | Apparatus and method for annotating an intermediate representation of an application source code |
US6598221B1 (en) * | 2000-04-13 | 2003-07-22 | Koninklijke Philips Electronics N.V. | Assembly code performance evaluation apparatus and method |
US20030023950A1 (en) * | 2001-01-10 | 2003-01-30 | Wei Ma | Methods and apparatus for deep embedded software development |
JP2004013603A (ja) * | 2002-06-07 | 2004-01-15 | Sony Corp | アセンブリコード変換方法及び装置 |
US20040025151A1 (en) * | 2002-07-31 | 2004-02-05 | Shan-Chyun Ku | Method for improving instruction selection efficiency in a DSP/RISC compiler |
US20040068716A1 (en) * | 2002-10-04 | 2004-04-08 | Quicksilver Technology, Inc. | Retargetable compiler for multiple and different hardware platforms |
US7386441B2 (en) * | 2003-11-14 | 2008-06-10 | Xerox Corporation | Method and apparatus for processing natural language using auto-intersection |
-
2003
- 2003-09-30 US US10/675,910 patent/US7437719B2/en not_active Expired - Fee Related
-
2004
- 2004-09-29 EP EP04785187A patent/EP1668499A1/en not_active Withdrawn
- 2004-09-29 CN CN2004800270151A patent/CN1853164B/zh not_active Expired - Fee Related
- 2004-09-29 WO PCT/US2004/031776 patent/WO2005033929A2/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201750B (zh) * | 2006-12-13 | 2010-09-08 | 西安大唐电信有限公司 | 利用语法词法分析工具为编解码提供数据的方法 |
CN103440155A (zh) * | 2013-07-05 | 2013-12-11 | 万高(杭州)科技有限公司 | 一种数字信号处理器的编译器 |
CN103440155B (zh) * | 2013-07-05 | 2016-08-31 | 万高(杭州)科技有限公司 | 一种数字信号处理器的编译器 |
Also Published As
Publication number | Publication date |
---|---|
US20050071825A1 (en) | 2005-03-31 |
CN1853164B (zh) | 2010-10-13 |
WO2005033929A2 (en) | 2005-04-14 |
WO2005033929A8 (en) | 2006-01-19 |
US7437719B2 (en) | 2008-10-14 |
EP1668499A1 (en) | 2006-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1853164B (zh) | 用于开发dsp编译器构件块的组合方法 | |
US20210224185A1 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
Lu et al. | Optimizing depthwise separable convolution operations on gpus | |
Bae et al. | {FlashNeuron}:{SSD-Enabled}{Large-Batch} training of very deep neural networks | |
US11803736B1 (en) | Fine-grained sparsity computations in systolic array | |
US20200326938A1 (en) | Processor for sparse matrix computation | |
KR101553652B1 (ko) | 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법 | |
US11500962B1 (en) | Emulating fine-grained sparsity in a systolic array | |
Jeon et al. | Loop pipelining in hardware-software partitioning | |
US20120096247A1 (en) | Reconfigurable processor and method for processing loop having memory dependency | |
Giesemann et al. | Using a genetic algorithm approach to reduce register file pressure during instruction scheduling | |
Mattson Jr | An effective speculative evaluation technique for parallel supercombinator graph reduction | |
US12039330B1 (en) | Programmable vector engine for efficient beam search | |
Minnella et al. | Design and Optimization of Residual Neural Network Accelerators for Low-Power FPGAs Using High-Level Synthesis | |
CN118043821A (zh) | 混合稀疏压缩 | |
Cardoso et al. | Modeling loop unrolling: Approaches and open issues | |
Wernsing et al. | The RACECAR heuristic for automatic function specialization on multi-core heterogeneous systems | |
Du et al. | Scientific computing applications on the imagine stream processor | |
EP1828889A1 (en) | Compiling method, compiling apparatus and computer system for a loop in a program | |
US12008469B1 (en) | Acceleration of neural networks with stacks of convolutional layers | |
US11782706B1 (en) | Reconfigurable neural network processing based on subgraph recognition | |
US11625269B1 (en) | Scheduling for locality of reference to memory | |
She et al. | A co-design framework with opencl support for low-energy wide simd processor | |
US12008368B2 (en) | Programmable compute engine having transpose operations | |
US11775299B1 (en) | Vector clocks for highly concurrent execution engines |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101013 Termination date: 20130929 |