CN101727513A - 一种超长指令字处理器的设计和优化方法 - Google Patents
一种超长指令字处理器的设计和优化方法 Download PDFInfo
- Publication number
- CN101727513A CN101727513A CN200810224966A CN200810224966A CN101727513A CN 101727513 A CN101727513 A CN 101727513A CN 200810224966 A CN200810224966 A CN 200810224966A CN 200810224966 A CN200810224966 A CN 200810224966A CN 101727513 A CN101727513 A CN 101727513A
- Authority
- CN
- China
- Prior art keywords
- processor
- vliw
- current
- software code
- vliw processor
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种超长指令字处理器的设计和优化方法。本发明所述方法包括:步骤A,接收利用高级编程语言开发出的针对具体应用的软件代码作为当前软件代码,进入步骤B;步骤B,将当前软件代码交叉编译到当前VLIW处理器架构上,生成所述当前软件代码的机器码;步骤C,在所述机器码的性能分析结果表明满足所述具体应用的要求时,输出当前软件代码的机器码和当前VLIW处理器架构;否则,根据所述性能分析结果对当前VLIW处理架构进行硬件优化,得到VLIW处理器优化架构,并将所述VLIW处理优化架构作为当前VLIW处理器架构并返回步骤B。按照本发明,可以实现面向最终应用的VLIW处理器开发,提高了VLIW处理器的系统性能并降低了VLIW处理器的成本。
Description
技术领域
本发明涉及处理器技术领域,具体涉及一种超长指令字(VLIW,Very LongInstruction Word)处理器的设计和优化方法。
背景技术
数字信号处理(DSP,Digital Signal Processing)理论和技术是目前电子技术和IT领域中的一个基本工程理论和核心技术。DSP技术已经深入到了各个工业应用技术中,成为21世纪初各种新技术的一个共同基础。数字信号处理的实现方法大体上有如下5种方法。
(1)在通用计算机上用软件实现。软件可以自己编写,也可使用现成的软件包,如Matlab工具。Matlab几乎可以实现所有数字信号处理的仿真,而且部分仿真程序还可以转化为C语言,再通过DSP的C编译器直接在DSP硬件上运行。这对非实时系统或准实时系统很有吸引力,但缺点是速度太慢。
(2)用单片机实现。某些单片机具有16位×16位的乘法运算和内积运算功能,CPU时钟可达到几十MHz,在处理复杂的数字信号方面可以和低端DSP芯片相媲美,价格却要比专用的DSP芯片廉价。
(3)用各种型号的通用DSP芯片实现。
(4)用现场可编程门阵列(FPGA)或复杂可编程逻辑器件(CPLD)开发特定用途集成电路(ASIC)芯片实现数字信号处理算法。通过软件编程用硬件实现特定的数字信号处理算法,可以实现算法的并行运算,既可以作为独立的数字信号处理器,也可以作为DSP芯片的协处理器。
(5)用通用计算机系统+加速卡的方法来实现。由于大数据量处理时,加速卡和计算机之间的数据交换速度比较慢,因而通用计算机只能起到管理者的作用,而不能参与实时处理。
在上述五种实现数字信号处理的方法中,第3种基于通用(或专用)DSP处理器的DSP设计是DSP开发者最常选用的设计方法。用DSP芯片来构成DSP应用系统,其主要优势是DSP芯片具有很好的通用性和可靠性,又适用于各种DSP算法实现的通用硬件结构,并且开发工具链完善,开发难度低。
当前主流的DSP芯片都是采用哈佛体系结构,数据存储器与指令存储器分开保存且独立编址。部分高端的DSP处理器还采用VLIW体系结构,它能够在一个周期内使多个数据处理单元并行工作,即执行一条包含多个微指令的超长指令,其中每个微指令控制一个数据处理单元工作。复杂的数字信号处理任务就是分配在这些并行数据处理单元上完成的。
基于通用DSP芯片的典型开发流程,如图1所示,主要包括如下几个开发阶段:
步骤10,开发者利用MATLAB等数学工具对DSP算法进行优化设计和仿真,以获得满足功能要求和适应硬件特点的算法模型。
步骤11,根据DSP目标系统的功能要求、技术指标、系统升级可行性、性能标准可能的变化以及成本限制等因素,具体确定并行使用的DSP处理器的数量和型号。
步骤12,根据选定的DSP处理器和系统功能要求,完成应用系统评估板或测试板的设计,以便调试DSP软件程序,验证实际系统中各项指标的可实现性及应用系统的可行性。
步骤13~16,根据MATLAB的算法模型和DSP评估板的硬件结构,编写C、C++程序或汇编程序。在DSP开发环境(如CCS)中进行编译、仿真,然后通过DSP硬件仿真器在应用板或评估板上进行调试和实时仿真。
步骤17,完成DSP应用系统。
上述的设计流程对于固定架构的VLIW体系结构是完全适用的,这也得到了无数成功设计的检验。但是面对体系结构可变的DSP处理器,上述设计流程就不能发挥可变架构的优势,也不能提供可能的优化建议,不利于系统性能的提高和成本的降低。
发明内容
本发明所要解决的技术问题是提供一种超长指令字处理器的设计和优化方法,按照本发明所述方法,设计者可以从任意处理器出发,弥补了传统开发流程不能发挥可变VLIW体系结构优势的不足,实现了面向最终应用的VLIW处理器开发,提高了VLIW处理器的系统性能并降低了VLIW处理器的成本。
为解决上述技术问题,本发明提供方案如下:
一种面向应用的超长指令字VLIW处理器的设计和优化方法,包括:
步骤A,接收利用高级编程语言开发出的针对具体应用的软件代码作为当前软件代码,进入步骤B;
步骤B,将当前软件代码交叉编译到当前VLIW处理器架构上,生成所述当前软件代码的机器码并进入步骤C,其中,所述当前VLIW处理器架构是通过处理器架构参数描述文件指定的;
步骤C,当所述机器码的性能分析结果表明满足所述具体应用的要求时,将当前软件代码的机器码和当前VLIW处理器架构分别作为最终的机器码和最终的VLIW处理器架构输出;否则,根据所述性能分析结果对当前VLIW处理架构进行硬件优化,得到VLIW处理器优化架构,并将所述VLIW处理优化架构作为当前VLIW处理器架构并返回步骤B。
较佳的,上述方法还包括:
根据所述最终的VLIW处理器架构,生成对应的硬件描述文件,并根据该硬件描述文件,生成运行所述最终的机器码的VLIW处理器芯片。
较佳的,上述方法中,所述步骤C中,在所述机器码的性能分析结果表明不满足所述具体应用的要求时,进一步根据所述性能分析结果对当前软件代码进行软件优化,得到优化后的软件代码,并将所述优化后的软件代码作为当前软件代码并返回步骤B。
较佳的,上述方法中,所述性能分析结果具体包括:固定算法代码执行所需的时间、各个运算单元的利用率和各个存储器的使用量。
较佳的,上述方法中,所述步骤C中,进一步通过修改或重新编写当前VLIW处理架构的处理器架构参数描述文件,进行所述硬件优化。
较佳的,上述方法中,所述步骤C中,所述硬件优化具体包括:增加或减少运算单元,调整运算单元之间的连接关系,以及增加或减少寄存器。
较佳的,上述方法中,所述步骤C中,所述增加或减少运算单元包括:在多个运算功能相同的运算单元中删除其中利用率低于预定第一门限值的运算单元;增加与利用率高于预定第二门限值的运算单元功能相同的运算单元。
较佳的,上述方法中,所述软件优化包括:减少所述软化代码中的分支判断操作,减少所述软件代码中语句间的数据相关性,以及减少所述软件代码中的多重循环操作。
较佳的,上述方法中,所述步骤A中,所述针对具体应用的软件代码,是利用所述高级编程语言中的能够被进行交叉编译的编译器理解的数据类型和程序控制语句开发得到的。
较佳的,上述方法中,所述高级编程语言包括C语言和Java语言。
从以上所述可以看出,本发明提供的一种超长指令字处理器的设计和优化方法,避免了传统设计流程初期的处理器选型,本发明可以从具体应用出发,设计初期可以使用任意处理器,从而规避了传统的设计流程需要从硬件选型出发,根据对算法运算量的粗略估计,并极大的依靠设计人员的经验选择某种确定架构的处理器而带来的产品开发的风险,提高了设计工作的效率。本发明所述方法,通过若干次交叉编译、性能分析和硬件优化后逐步确定最终的处理器架构,避免了传统设计方法中处理器选型容易发生处理器运算资源不足或过多的情况,实现了面向最终应用的VLIW处理器开发,提高了VLIW处理器的系统性能并降低了VLIW处理器的成本。
附图说明
图1为现有技术的基于通用DSP芯片的典型开发流程示意图;
图2为本发明实施例所述VLIW处理器的设计和优化方法的流程图。
具体实施方式
本发明提出的VLIW处理器的设计和优化方法,弥补了传统开发流程不能发挥可变VLIW体系结构优势的不足。该方法相对于传统的设计流程,充分发挥了可变VLIW体系结构硬件可配置的巨大优势,真正做到面向最终应用的软件编程和硬件配置。以下结合附图通过具体实施例对本发明作进一步说明。
可变VLIW架构是未来DSP的主要架构,也是一种面向应用最优化的硬件解决方案。可变VLIW架构通常指处理器的体系结构是可变的,能够针对不同的算法由设计者改变处理器本身的硬件结构和指令集。可变的VLIW结构又称为可重构或可裁减的VLIW体系结构,主要分为异构多处理器,处理器核可裁减和基本数据处理单元可重构三个层面。
可变VLIW体系结构为设计者提供了进行硬件优化的可能。传统DSP软件开发流程主要包括处理器选型和软件开发两大阶段,可变VLIW体系结构除了提供设计者使用软件(指令)实现具体算法的平台外,还提供了面向算法的优化空间。设计者除了能够进行软件开发以实现算法,还能够面向应用调整和改变处理器的架构,实现面向应用的处理器架构优化。
如图2所示,本实施例所述VLIW处理器的设计和优化方法包括以下步骤:
步骤20,接收利用高级编程语言开发出的针对具体应用的软件代码作为当前软件代码,进入步骤21。
本步骤中,所述高级编程语言包括C语言和Java语言等高级语言,通过利用高级编程语言中的能够被进行交叉编译的编译器理解的数据类型和程序控制语句开发得到针对具体应用的软件代码。
步骤21,将当前软件代码交叉编译到当前VLIW处理器架构上,生成所述当前软件代码的机器码并进入步骤22,其中,所述当前VLIW处理器架构是通过处理器架构参数描述文件指定的。
本步骤中,在第一次进行交叉编译时,所使用的当前VLIW处理器架构是预定的VLIW处理器架构。所述处理器架构参数描述文件是提供给交叉编译的编译器使用的中间文件,包括VLIW处理器的所有配置项信息,例如,处理器所有运算资源和内部寄存器的类型、个数以及连接关系等参数。
步骤22,对所述机器码进行性能分析:在所述机器码的性能分析结果表明满足所述具体应用的要求时,进入步骤24;否则,进入步骤23。
本步骤中,所述的性能分析结果具体包括:固定算法代码执行所需的时间、各个运算单元的利用率和各个存储器的使用量等参数。
步骤23,根据所述性能分析结果对当前VLIW处理架构进行硬件优化,得到VLIW处理器优化架构,并将所述VLIW处理优化架构作为当前VLIW处理器架构并返回步骤21。
本步骤中,所述硬件优化具体包括:增加或减少运算单元,调整运算单元之间的连接关系,以及增加或减少寄存器等。本步骤中,还可以进一步根据所述性能分析结果对当前软件代码进行软件优化,得到优化后的软件代码,并将所述优化后的软件代码作为当前软件代码并返回步骤21。
步骤24,将当前软件代码的机器码和当前VLIW处理器架构分别作为最终的机器码和最终的VLIW处理器架构输出,进入步骤25。
步骤25,根据步骤24得到的最终的VLIW处理器架构,生成对应的硬件描述文件,并根据该硬件描述文件,通过数字集成电路的设计和实现流程,生成运行所述最终的机器码的VLIW处理器芯片。
以下对上述步骤20~25进行更为具体的说明。
本实施例所述VLIW处理器的设计和优化方法,根据设计流程,主要包括算法软件实现、算法软件验证、交叉编译、性能分析、软件优化、硬件优化和硬件生成七个主要设计环节,与传统的DSP设计流程相比,删去了硬件选型环节,增加了软件验证和硬件优化环节,编译和性能分析的内容也有部分改变。
这种设计流程包括软件设计与优化、硬件设计与优化两个部分。设计者从具体应用出发,首先完成第一轮的算法软件实现和验证。当算法软件验证完成后,设计者可以选用一个预定的VLIW处理器架构。该预定的VLIW处理器架构通常有以下两种选择:第一种是具有最小配置的VLIW处理器,即该处理器中的运算资源个数最少,例如,运算单元只包括一个算术逻辑单元(ALU)、一个乘法累加单元(MAC)和一个桶形移位器单元(Shift),内部寄存器堆的数量也是最少的;另一种VLIW处理器架构是该VILW处理器所有配置项与针对该具体应用已开发出的其它处理器相同。
上述预定的VLIW处理器架构的选择通常并不是最终选择,选择的目的只是为了进行第一轮的交叉编译。在第一轮的交叉编译时,设计者需要向编译器明确指出编译所用的处理器架构(即上述预定的VLIW处理器架构,以处理器架构参数描述文件的形式指明),同一段软件的实现代码对不同的处理器架构将会得到不同的交叉编译结果,交叉编译生成的机器码与此时使用的硬件平台密切相关。通过分析第一轮交叉编译所得到的机器码,设计者可以选择软件优化和/或硬件优化。如果选择软件优化,设计者将开始第二轮的软件算法实现(改进)、软件验证、交叉编译和性能分析。如果设计者选择硬件优化,设计者所需要完成的是硬件的优化与配置。不论选择软件优化或硬件优化,在优化之后都需要再次进行交叉编译,从而将优化后的软件代码指定编译到优化后的硬件平台上,生成机器码。当算法实现的功能正确并性能满足具体应用的要求时,VLIW处理器架构得以确定,此时可以根据最终确定的VLIW处理器架构通过生成器生成对应于上述处理器架构的硬件描述文件。通过上面的设计流程,设计者最终将得到面向应用的软件算法实现(机器码)和面向应用的硬件处理器架构(硬件描述文件)。带有处理器架构信息的硬件描述文件通过数字集成电路的设计和实现流程,可以生成面向具体应用优化的专用处理器芯片,这样的处理器运行特定软件实现的机器码,即可完成具体的应用。与基于固定架构的DSP开发不同,上述设计流程能够从应用出发,生成面向应用的专用处理器,从而其性能和成本都能达到最优。
基于可变VLIW体系结构的设计和优化方法,其具体步骤也与传统的基于固定处理器架构的设计方法有所不同。传统的设计方法在具体应用确定后通常从处理器选型出发,根据对算法运算量的粗略估计,并极大的依靠设计人员的经验,选择某种确定架构的处理器。处理器的选型是决定性能的关键因素之一,对于设计来说具有极大风险。处理器的选型偏低会导致性能无法满足要求,选型较高会导致处理器运算资源的极大浪费,产品成本大大增高。由于传统的开发流程通常使用与处理器架构关系密切的较低级别的开发语言进行开发,故而设计迭代难度较大。并且,传统的设计流程从硬件选型出发,此时仅仅有估算的性能需求,此数据与设计者的经验密切相关,大大增加了产品开发的风险,不利于产品性能的提高和成本降低。
基于可变VLIW体系结构的设计和优化方法要求设计者从软件实现出发。当具体应用确定后,设计者首先从算法软件出发,使用与硬件无关的高级编程语言描述算法的实现,得到针对具体应用的软件代码。之所以使用高级编程语言(如C或Java语言等),是因为在没有确定处理器架构之前,用户不应该使用与处理器架构和指令集关系密切的编程语言来实现具体的算法。虽然使用高级语言开发算法程序,设计者也不能随意使用高级语言中的类库或头文件。设计者被严格限制在交叉编译的编译器能够理解的高级语言程序的一个子集中,这个子集仅仅包括一些最基本的数据类型和程序控制语句。
完成软件代码开发后,设计者需要进行软件代码的验证。这里的验证是一种纯软件的验证,是独立于处理器结构和指令集的验证。使用纯软件的验证有两个主要原因,一是可以使用高级语言自带的编译器和计算机的强大的运算能力,较为方便的发现软件代码中的错误;二是可以使用计算机上众多专用程序分析软件代码实现的功能和性能。此时VLIW处理器的架构尚未确定,设计者并不需要关心软件代码在特定的处理器架构上的实现性能,而仅仅需要关心软件代码的功能正确。事实上,不论采用任何具体架构的处理器,都不应该也不会影响软件代码的实现功能。
交叉编译是指将软件代码编译到另外一种处理器架构上(不是运行编译器的计算机)。由于使用交叉编译的编译器所规定的算法开发语言(高级编程语言的一个子集),该编译器能够正确的分析软件代码的词法和语法。同时,该编译器又定义了一套处理器架构和指令集的参数描述规则(用于将软件代码转换成机器码的规则),凡是使用此描述规则的处理器均可以被该编译器理解。编译器的主要工作是将设计者的软件代码分配和调度到设计者的硬件平台上,并完成一定的优化,生成针对设计者提出的处理器架构和指令集的机器码。可变VLIW体系结构的处理器通常基于一个固定的处理器核框架,由设计者定义并行运算的能力和数据处理单元的数量,这种架构的变化也同时带来了指令集的变化。这种架构的变换对于交叉编译的编译器来说,仅仅是运算硬件资源的变化,该编译器只需将用户的软件代码分配和调度到对应的硬件资源上即可。
交叉编译完成后,设计者得到了对应于特定VLIW结构的软件算法实现(机器码)。由于基于VLIW结构的处理器主要针对计算密集型数学运算,通常不支持中断和片外存储器访问,其程序执行所需的时间能够精确而严格的保证。可以通过以下性能参数对得到的机器码进行性能分析:
固定算法代码执行所需的时间,表示此段代码的性能,以时钟周期数描述,可以通过根据有多少条机器码,每条机器码循环多少次,累加每条机器码的循环次数得到该参数;
每个运算资源的利用率,通过将每个运算资源占用的周期数除以全部代码执行的周期数得到该参数;
存储器的使用量,通过计算在不同生存周期内分配在存储器中变量所占用的存储器容量得到该参数。
上述三个参数能够在交叉编译后精确地得到,因此设计者可以用这些参数为参考,作为优化的依据和优化的侧重方向。
软件优化通常是所有基于处理器实现必需的一种优化方法。在对基于可变VLIW处理器进行软件优化时可以主要考虑如下几点:
1)算法调整,使用计算规模较小的算法。
2)任务调整,减少不必要的任务及中间数据。
3)分支调整,减少分支判断操作,分支判断较难并行处理,会极大损失并行系统的性能。尤其要避免循环体内的判断语句。
4)循环调整,控制循环次数,应尽量减少多重循环操作。当有二重以上循环时,优先减少外层循环次数,展开规模较小的循环。
5)语句调整,尽量减少语句间的数据相关性,提高并行运算效率。
6)中间变量调整,控制中间变量规模,使中间变量存储在内部寄存器中,减少中间变量访问存储器的次数。
硬件优化是可变VLIW体系结构处理器独有的优化方法。可变VLIW体系结构是未来高端处理器的发展趋势,其处理器的本质特征就是能够任意增减运算单元的数量,为不同的算法(应用)提供较好的支持。图3是一种可变VLIW体系结构处理器的框架,此框架中包含四个运算单元,这四个运算单元能够同时进行计算,即同时执行四条微指令。事实上,该处理器中的运算单元的数量是可变的。这就给设计者提供了另一种优化手段,即硬件优化。
通过上述三个性能参数,设计者对算法在某个特定的处理器上的运行性能有了精确的了解。硬件优化就是针对上一次编译所使用的VLIW处理器进行裁减和重构的,具体包括:增加或减少运算单元,调整运算单元之间的连接关系,以及增加或减少寄存器等。例如,如果VLIW处理器中某个运算单元有两个以上,其中某一个利用率很低(通常在10%以下),则可以尝试将这个运算单元从VLIW处理器中删除(具体可以通过修改或重新编写处理器架构参数描述文件来实现)。一般来说,删除利用率较低的运算单元不会对算法实现的性能带来较大的影响,是否带来影响和影响的程度则需要再次交叉编译和性能分析得知。又例如,如果某一步运算对某个或某几个运算单元利用率很高,设计者可以考虑向VLIW处理器中增加相同功能的运算单元以分担瓶颈运算单元的计算量(具体可以通过修改或重新编写处理器架构参数描述文件来实现)。当然,这是一种性能与成本的折衷。增加运算单元固然能够带来性能的提升,但同时也带来了成本的提高,是否要进行增加运算单元还需要对性能与成本作折衷考虑。
不论是软件优化还是硬件优化,只要更改了软件代码或硬件平台,都必须重新进行交叉编译、再分析算法的性能。由于使用高级语言开发和统一的可变VLIW体系结构,大量的工作由编译器完成。虽然设计迭代的次数增多,但每一次迭代的工作量和复杂程度都大大减少,总的设计周期将会缩短。另外,由于避免了设计初期的处理器选型,设计者理论上可以从任意处理器出发,经过几次交叉编译、性能分析和硬件优化后,对算法的计算规模和所需的处理器有层层深入的了解,避免了经验和估算的风险,大大规避了设计的风险,提高了设计工作的效率。
综上,可变VLIW体系结构提供了硬件运算资源可增删的特性。这种特性需要改进的设计和优化方法与其配合。本实施例提供了一种这样的设计方法和优化方法。这种方法回避了处理器选型的风险,从软件开发入手,使用高级语言开发,并依靠编译器和性能分析得到精确的算法实现性能。除了软件优化的方式外,本实施例还提供了可变VLIW结构硬件优化的方式,是完整和改进的VLIW设计和优化方法。
本实施例所述设计和优化方法,适用于各种可变VLIW处理器。最后,为了帮助理解本实施例所述设计和优化方法,以下对其中一种可变的VLIW处理器的结构进行简单说明。
一种可变VLIW处理器,包括:控制路径、数据交换网络和多个数据处理单元;
所述控制路径包括:
指令存储器控制单元,用于根据处理器状态机的控制,提供对外部的指令存储器的访问控制;
指令译码单元,用于对所述指令存储器控制单元读取的VLIW指令进行指令译码,并将译码得到的微指令发送给处理器状态机、数据交换网络和各个数据处理单元,其中,所述VLIW指令包括指令标志位、指令立即数、数据交换网络控制指令、主控指令和各个并行数据处理单元的微指令;
处理器状态机,用于根据接收到的微指令执行处理器的控制操作;
所述数据处理单元,包括:
数据处理逻辑单元,与所述数据交换网络连接,用于根据接收到的本数据处理单元的微指令,对本数据处理单元的数据输入线上输入的数据执行相应的数据运算操作,所述数据输入线为全局数据输入线、常数数据输入线、左操作数输入线和右操作数输入线中的至少一种;
分布式寄存器堆,用于根据接收到的本数据处理单元的微指令,保存本数据处理单元的数据处理逻辑单元的数据处理结果,和/或将自身保存的数据通过本数据处理单元的数据输出线输出至数据交换网络,所述数据输出线为左操作数输出线和右操作数输出线中的至少一种;
所述数据交换网络,用于将所有数据处理单元中的每一个数据输出线都分别连接至各个数据处理单元的每一操作数输入线,并根据接收到的数据交换网络控制指令,控制各个数据处理单元的操作数输入线所连接的各个数据输出线的选通或阻断,所述操作数输入线包括左操作数输入线和右操作数输入线。
上述可变VLIW处理器中,所述处理器的控制操作包括:处理器的运行状态控制,处理器的循环控制,处理器的常数寄存器及全局寄存器读写控制。
上述可变VLIW处理器中,所述处理器状态机,进一步通过所述数据交换网络与数据处理逻辑单元连接,用于根据接收到的微指令将本处理器的常数寄存器和/或全局寄存器中的数据发送至数据处理单元的数据输入线。
上述可变VLIW处理器中,数据处理单元的微指令包括操作码、源操作数地址,目的操作数地址和寄存器输出选择地址;
所述数据处理逻辑单元进一步用于根据所述操作码和源操作数地址执行数据运算操作;所述分布式寄存器堆进一步用于根据所述目的操作数地址确定所述数据处理结果的暂存地址,以及根据所述寄存器输出选择地址,将该寄存器输出选择地址对应的数据输出至数据交换网络。
上述可变VLIW处理器中,所述数据处理单元为运算单元或数据存储器控制单元。
最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种面向应用的超长指令字VLIW处理器的设计和优化方法,其特征在于,包括:
步骤A,接收利用高级编程语言开发出的针对具体应用的软件代码作为当前软件代码,进入步骤B;
步骤B,将当前软件代码交叉编译到当前VLIW处理器架构上,生成所述
当前软件代码的机器码并进入步骤C,其中,所述当前VLIW处理器架构是通
过处理器架构参数描述文件指定的;
步骤C,当所述机器码的性能分析结果表明满足所述具体应用的要求时,将当前软件代码的机器码和当前VLIW处理器架构分别作为最终的机器码和最终的VLIW处理器架构输出;否则,根据所述性能分析结果对当前VLIW处理架构进行硬件优化,得到VLIW处理器优化架构,并将所述VLIW处理优化架构作为当前VLIW处理器架构并返回步骤B。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述最终的VLIW处理器架构,生成对应的硬件描述文件,并根据该硬件描述文件,生成运行所述最终的机器码的VLIW处理器芯片。
3.如权利要求1所述的方法,其特征在于,所述步骤C中,在所述机器码的性能分析结果表明不满足所述具体应用的要求时,进一步根据所述性能分析结果对当前软件代码进行软件优化,得到优化后的软件代码,并将所述优化后的软件代码作为当前软件代码并返回步骤B。
4.如权利要求1所述的方法,其特征在于,所述性能分析结果具体包括:固定算法代码执行所需的时间、各个运算单元的利用率和各个存储器的使用量。
5.如权利要求4所述的方法,其特征在于,所述步骤C中,进一步通过修改或重新编写当前VLIW处理架构的处理器架构参数描述文件,进行所述硬件优化。
6.如权利要求5所述的方法,其特征在于,
所述步骤C中,所述硬件优化具体包括:增加或减少运算单元,调整运算单元之间的连接关系,以及增加或减少寄存器。
7.如权利要求6所述的方法,其特征在于,
所述步骤C中,所述增加或减少运算单元包括:在多个运算功能相同的运算单元中删除其中利用率低于预定第一门限值的运算单元;增加与利用率高于预定第二门限值的运算单元功能相同的运算单元。
8.如权利要求3所述的方法,其特征在于,所述软件优化包括:减少所述软化代码中的分支判断操作,减少所述软件代码中语句间的数据相关性,以及减少所述软件代码中的多重循环操作。
9.如权利要求1所述的方法,其特征在于,所述步骤A中,所述针对具体应用的软件代码,是利用所述高级编程语言中的能够被进行交叉编译的编译器理解的数据类型和程序控制语句开发得到的。
10.如权利要求1所述的方法,其特征在于,所述高级编程语言包括C语言和Java语言。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810224966A CN101727513A (zh) | 2008-10-28 | 2008-10-28 | 一种超长指令字处理器的设计和优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810224966A CN101727513A (zh) | 2008-10-28 | 2008-10-28 | 一种超长指令字处理器的设计和优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101727513A true CN101727513A (zh) | 2010-06-09 |
Family
ID=42448399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810224966A Pending CN101727513A (zh) | 2008-10-28 | 2008-10-28 | 一种超长指令字处理器的设计和优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101727513A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593220A (zh) * | 2012-06-22 | 2014-02-19 | 阿尔特拉公司 | Opencl编译 |
CN103901810A (zh) * | 2012-12-31 | 2014-07-02 | 施耐德电器工业公司 | 可编程控制器用户应用的优化系统及方法 |
CN105164667A (zh) * | 2013-06-26 | 2015-12-16 | 惠普发展公司,有限责任合伙企业 | 修改分析流 |
CN106709116A (zh) * | 2015-11-17 | 2017-05-24 | 深圳市博巨兴实业发展有限公司 | 一种生成rtl级ip核方法及装置 |
CN111428327A (zh) * | 2018-12-24 | 2020-07-17 | 深圳市中兴微电子技术有限公司 | 一种指令硬件架构的构建方法、装置及存储介质 |
-
2008
- 2008-10-28 CN CN200810224966A patent/CN101727513A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593220A (zh) * | 2012-06-22 | 2014-02-19 | 阿尔特拉公司 | Opencl编译 |
CN103593220B (zh) * | 2012-06-22 | 2017-05-10 | 阿尔特拉公司 | Opencl编译 |
CN103901810A (zh) * | 2012-12-31 | 2014-07-02 | 施耐德电器工业公司 | 可编程控制器用户应用的优化系统及方法 |
CN103901810B (zh) * | 2012-12-31 | 2017-04-12 | 施耐德电器工业公司 | 可编程控制器用户应用的优化系统及方法 |
CN105164667A (zh) * | 2013-06-26 | 2015-12-16 | 惠普发展公司,有限责任合伙企业 | 修改分析流 |
CN105164667B (zh) * | 2013-06-26 | 2018-09-28 | 安提特软件有限责任公司 | 修改分析流 |
CN106709116A (zh) * | 2015-11-17 | 2017-05-24 | 深圳市博巨兴实业发展有限公司 | 一种生成rtl级ip核方法及装置 |
CN106709116B (zh) * | 2015-11-17 | 2019-12-10 | 深圳市博巨兴微电子科技有限公司 | 一种生成rtl级ip核方法及装置 |
CN111428327A (zh) * | 2018-12-24 | 2020-07-17 | 深圳市中兴微电子技术有限公司 | 一种指令硬件架构的构建方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Marwedel et al. | Code generation for embedded processors | |
Callahan et al. | Instruction-level parallelism for reconfigurable computing | |
EP2707797B1 (en) | Automatic load balancing for heterogeneous cores | |
CN101763265B (zh) | 一种过程级软硬件协同设计自动化开发方法 | |
CN103329132A (zh) | 架构优化器 | |
CN101727513A (zh) | 一种超长指令字处理器的设计和优化方法 | |
Huang et al. | The design of dynamically reconfigurable datapath coprocessors | |
Chapuis et al. | Gpu performance prediction through parallel discrete event simulation and common sense | |
Jin et al. | Towards dataflow-based graph accelerator | |
Lee et al. | Reconfigurable SoC design with hierarchical FSM and synchronous dataflow model | |
Vander An et al. | Instruction buffering exploration for low energy vliws with instruction clusters | |
EP4211553A1 (en) | Method of interleaved processing on a general-purpose computing core | |
Van Praet et al. | Processor modeling and code selection for retargetable compilation | |
US20230116546A1 (en) | Method for compilation, electronic device and storage medium | |
Yu et al. | Mercury: Instruction Pipeline Aware Code Generation for Simulink Models | |
Xie et al. | MPU: Towards bandwidth-abundant SIMT processor via near-bank computing | |
Zhou et al. | Dp-sim: A full-stack simulation infrastructure for digital processing in-memory architectures | |
Posadas et al. | Single source design environment for embedded systems based on SystemC | |
Ping Seng et al. | Flexible instruction processors | |
Raghavan et al. | Distributed loop controller for multithreading in unithreaded ILP architectures | |
Gu et al. | Case study of gate-level logic simulation on an extremely fine-grained chip multiprocessor | |
Qiu et al. | FDRA: A Framework for a Dynamically Reconfigurable Accelerator Supporting Multi-Level Parallelism | |
Choudhary | FabScalar: Automating the design of superscalar processors | |
Khouri et al. | Memory binding for performance optimization of control-flow intensive behaviors | |
Steinke et al. | Moving program objects to scratch-pad memory for energy reduction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20100609 |