嵌入式系统中将数组分配到片上可控存储器的方法

文档序号:6612432阅读:153来源:国知局

专利名称::嵌入式系统中将数组分配到片上可控存储器的方法
技术领域
:本发明涉及嵌入式程序优化方法,特别是涉及一种嵌入式系统中将数组分配到片上可控存储器的方法。
背景技术
:在最近二、三十年嵌入式领域取得了长足的发展,许多行业的发展已经离不开嵌入式领域的参与,如汽车、航空、重工、机器人、智能管家等不一而足。这些产业嵌入式领域的需求,促使了嵌入式系统的发展,同时也提出了越来约高的要求。为应对高性能、低功耗的市场要求,嵌入式系统已由过去的低端逐步的走向高端,很多的嵌入式系统里已经加入了高端的器件,这些器件无疑是为了提高系统性能,如Intel的pxa27x系列就加入了sram作为辅助存储器,它是低功耗、高速度的器件。这种片上的sram是作为非cache的存储器使用,由于它是程序员可以通过编译器来控制使用的,因此,称为片上可控存储器。在使用极其广泛的ARM系列的处理器上也采用了片上可控存储器。系统中有了高端的器件而没有很好的应用就不会最大限度的发挥端器件的作用。通常,在嵌入式系统中片上可控存储器被用作节能器件,对它的读写是低功耗操作所以在一定的程度上是起到了的降低功耗的作用,这方面的应用如片上可控存储器作为视频帧缓冲,视频数据的读写操作都在片上可控存储器中进行,所以较之在内存中就在能耗上有了大的降低。在片上可控存储器的应用目前很多在探索阶段,许多想法很好但不能实现或不实用,这是有很多方面原因的,如片上可控存储器目前在嵌入式的空间数量比内存还少的太多,空间限制过大。比如有个想法,就是把代码都放到片上可控存储器中运行,但显然是不合适的,因为片上可控存储器太小了,很多程序在空间尺寸上遇到瓶颈。片上可控存储器空间有限性在一定程度上限制了它的应用范围,但是它的空间大小在做局部变量支持方面真可以尽现其才,如在intdpxa27x系列的嵌入式系统内有256K的片上可控存储器,这样的空间长度已经足够作为程序局部变量支持了。用C语言所也成的程序基本上有函数所构成,函数中的变量即为局部变量,所以在一个应用程序中对局部变量的操作是占大部分的,应此在局部变量上的性能优化和功耗优化是对整个程序性能优化和功耗优化的主要部分。
发明内容本发明的目的在于提供一种嵌入式系统中将数组分配到片上可控存储器的方法。本发明解决其技术问题采用的技术方案如下1)记录程序中的数组的信息对程序的源代码进行初次编译,获取程序中数组的信息,对于程序,这些信息分别包括程序中的数组的个数,用常数n表示,由于程序编写完成后,在编译时数组的个数不会再变化,因此程序中数组的个数用常数表示;数组的名称,用变量a表示;数组的大小,表示在程序中,某一数组a的大小,用Size(a)表示,即数组a的大小;Size(a)的值越大,表示数组a的大小越大;数组的生命周期,表示在程序中,某一数组a的生命周期,用LT(a)表示,即数组a的生命周期;LT(a)的值越大,表示数组a的生命周期越长;数组的访问次数,表示在程序中,某一数组a在a的生命周期当中,访问的次数,用AT(a)表示;AT(a)的值越大,表示数组a的访问次数越多;2)对数组进行排序-按照数组的访问次数、数组的生命周期和数组的大小对数组进行排序。排序后形成有序的数组序列是一个升序的排序队列,用Sec^P()表示,即程序中,全部数组的排序结果为SeqJ>()。对于升序的数组序列Seq_P()中,对于数组a,定义Seq_P(a)为数组a在升序的数组序列Seq_P()中的位置,Seq_P(a)的值是一个整数值Seq_P(a)=i,i是正整数。同时,i值也表示了数组在程序中的权值,i值越大表示该数组在程序中的权越高,说明了数组在程序中的重要性。3)确认片上可控存储器的大小通过确认目标嵌入式处理器,为编译器提供片上可控存储器的大小的信息;4)确定分配到片上可控存储器上的数组分配到片上可控存储器上的数组满足条件对于分配到片上可控存储器上的L个数组ESize()《M"(1)同时,T^"os^一尸("m))〉A^cs^—尸("》)(2)综合不等式(1)和不等式(2)就可以确定分配到片上可控存储器上的数组。5)通过重编译将数组分配到片上可控存储器在重编译的过程中,步骤4)中确定的分配到片上可控存储器上的数组将被编译器分离出来,将这些数组的地址编入片上可控存储器地址,该步骤采用通用的编译分配方法。本发明与
背景技术
相比,具有的有益的效果是-本发明是一种嵌入式系统中将数组分配到片上可控存储器的方法,其主要功能是利用了在嵌入式系统中通过编译方式将程序的数组分配到嵌入式处理器上的片上可控存储器中,从而能够利用片上可控存储器低延迟和低能耗的特点。本方法实现了嵌入式系统中将数组分配到片上可控存储器的方法,有利于降低嵌入式系统中程序运行的能耗,提高程序运行的效率。(1)低功耗。本方法实现了嵌入式系统中将数组分配到片上可控存储器的方法,有利于利用片上可控存储器的低功耗特点,降低程序运行的功耗。(2)高效性。本方法实现了嵌入式系统中将数组分配到片上可控存储器的方法,有利于利用片上可控存储器的低延迟特点,提高程序运行效率。附图是本发明的实施过程示意图。具体实施例方式本发明是一种嵌入式系统中将数组分配到片上可控存储器的方法,下面结合其具体实施过程。1)记录程序中的数组的信息对程序的源代码进行初次编译,获取程序中数组的信息,对于程序,这些信息分别包括-.程序中的数组的个数,用常数n表示,由于程序编写完成后,在编译时数组的个数不会再变化,因此程序中数组的个数用常数表示;数组的名称,用变量a表示;数组的大小,表示在程序中,某一数组a的大小,用Size(a)表示,即数组a的大小;Size(a)的值越大,表示数组a的大小越大;数组的生命周期,表示在程序中,某一数组a的生命周期,用LT(a)表示,即数组a的生命周期;LT(a)的值越大,表示数组a的生命周期越长;数组的访问次数,表示在程序中,某一数组a在a的生命周期当中,访问的次数,用AT(a)表示;AT(a)的值越大,表示数组a的访问次数越多;2)对数组进行排序-按照数组的访问次数、数组的生命周期和数组的大小对数组进行排序。排序后形成有序的数组序列是一个升序的排序队列,用Sec^P()表示,即程序中,全部数组的排序结果为Seq_P()。对于升序的数组序列Seq_P()中,对于程序中的某一数组a,定义Seq_P(a)为数组a在升序的数组序列SecLP()中的位置,Seq_P(a)的值是一个整数值Seq_P(a)=i,i是正整数。同时,i值也表示了数组在程序中的权值,i值越大表示该数组在程序中的权越高,说明了数组在程序中的重要性。按照数组的访问次数、数组的生命周期和数组的大小的权重的不同,有不同的排序方法。其中一种确定数组次序的方法为首先按照数组的访问次数从大到小进行排序,其次对于具有相同数组的访问次数的数组,按照数组的生命周期从长到短进行排序,然后对于具有相同生命周期的数组,按照数组大小从小到大进行排序。根据上述的排序方式,最终形成一个有序的数组序列,用Sec^P()表示,即程序中,数组的排序结果为Seq_P()。在SecLP()中,某个数组a在Se(LP()中的位置为SecLP(a)。同时,Seq_P()是一个升序的序列,因此具有最大的SecUP()值的数组,是程序中访问次数最多,生命周期最长而且数组大小最小的数组。例如,程序P1,初次编译过程中,发现P1中有5个数组,其中根据步骤1),这5个数组的信息如下表所示<table>tableseeoriginaldocumentpage8</column></row><table>首先按照访问次数进行排序为e,d,a,b,c;由于数组a,b,c具有相同的访问次数,再根据生命周期对数组a,b,c进行排序为e,d,a,c,b;由于数组b,c具有相同生命周期,再根据数组的大小对数组b,c进行排序为e,d,a,b,c。则最终排序结果为Seq_P()=e,d,a,b,c;其中Seq_P(a)=3,Seq_P(b)=4,Seq_P(c)=5,Seq_P(d)=2,Seq_P(e)=1。数组的访问次数、数组的生命周期和数组的大小的权重可以根据嵌入式应用环境的不同和程序的不同进行改变。在上述示例中,采用的是数组的访问次数优先,数组的生命周期其次,数组的大小权重最小的方法进行排序。根据嵌入式应用环境的不同和程序的不同,当然也可以采用其他的方法,比如数组的生命周期优先,数组的访问次数其次,数组的大小权重最小的方法。在本步骤中,通过编写代码进行实现的时候,具体的排序算法,可以采用已有的公开的排序方法,比如气泡法,二分法等。3)确认片上可控存储器的大小通过确认目标嵌入式处理器,为编译器提供片上可控存储器的大小的信息;不同的嵌入式处理器所提供的片上可控存储器的大小可能是不同的,例如,Intelpxa272所提供的片上可控存储器与Intelpxa320所提供的片上可控存储器的大小是不同的。确认目标嵌入式处理器后,可以通过目标嵌入式处理器的信息获得片上可控存储器的大小,并将片上可控存储器的大小提供给编译器。目标嵌入式处理器的片上可控存储器的大小标记为M;4)确定分配到片上可控存储器上的数组由于目标嵌入式处理器的片上可控存储器的大小有限,因此,只能将数组大小之和小于目标嵌入式处理器的片上可控存储器的大小的数组分配到目标嵌入式处理器的片上可控存储器。分配到片上可控存储器上的数组满足条件对于分配到片上可控存储器上的L个数组<formula>formulaseeoriginaldocumentpage9</formula>(1)同时,<formula>formulaseeoriginaldocumentpage9</formula>(2)不等式(1)中,按照步骤l)和步骤3)中的定义,am是L个分配到片上可控存储器上的数组中的某一个,Size(am)是数组am的大小,fes^(。一是L个数组的大小之和,M是目标嵌入式处理器的片上可控存储器的大小,不等式(l)的含义是分配到目标嵌入式处理器的片上可控存储器上的L个数组的大小之和要小于或者等于目标嵌入式处理器的片上可控存储器的大小。不等式(2)中,Min()表示计算机程序中常用的求最小值的函数,表示求出在L个数组中的最小的SecLP(am)值,Max()表示计算机程序中常用的求最大值的函数,<formula>formulaseeoriginaldocumentpage9</formula>表示求出在程序的n个数组中剩下的n-L个数组中;的最小的Se^P(am)值不等式(2)的含义是这L个数组,是程序的全部数组里Seq_P()值最高的L个数组。因此,综合等式(1)和等式(2)就可以确定分配到片上可控存储器上的数组。例如,对于步骤2)中的程序l,假定从步骤3)中获得的目标嵌入式处理器的片上可控存储器的大小标记为M=40;那么根据步骤2)的排序结果和表1中的数据,当L=2日寸,i22size("j)=》ize(。.)=版(办)+=20+15=35<tW=40乂=0产0满足不等式(O,同时i2J^/w(Se《—户(a^))=i\^>i(Seg一P(Z)),Seg一P(c))=JV^>(5,4)=4>w=l附=1"-丄3她x(納—PO))=Max(&g—P(cr),~—户(e),&g—P(力)=Mw:(1,2,3)=3产l-7,1---满足不等式(2)。这样确定数组b,c分配到目标嵌入式处理器的片上可控存储器。5)通过重编译将数组分配到片上可控存储器在重编译的过程中,步骤4)中确定的分配到片上可控存储器上的数组将被编译器分离出来,将这些数组的地址编入片上可控存储器地址,该步骤采用通用的编译分配方法。由于在嵌入式系统中,本步骤的编译方法与通用的嵌入式系统的程序编译方法是相同的,因此,本步骤不再具体说明。权利要求1.嵌入式系统中将数组分配到片上可控存储器的方法,其特征在于1)记录程序中的数组的信息对程序的源代码进行初次编译,获取程序中数组的信息,对于程序,这些信息分别包括程序中的数组的个数,用常数n表示,由于程序编写完成后,在编译时数组的个数不会再变化,因此程序中数组的个数用常数表示;数组的名称,用变量a表示;数组的大小,表示在程序中,某一数组a的大小,用Size(a)表示,即数组a的大小;Size(a)的值越大,表示数组a的大小越大;数组的生命周期,表示在程序中,某一数组a的生命周期,用LT(a)表示,即数组a的生命周期;LT(a)的值越大,表示数组a的生命周期越长;数组的访问次数,表示在程序中,某一数组a在a的生命周期当中,访问的次数,用AT(a)表示;AT(a)的值越大,表示数组a的访问次数越多;2)对数组进行排序按照数组的访问次数、数组的生命周期和数组的大小对数组进行排序。排序后形成有序的数组序列是一个升序的排序队列,用Seq_P()表示,即程序中,全部数组的排序结果为Seq_P()。对于升序的数组序列Seq_P()中,对于数组a,定义Seq_P(a)为数组a在升序的数组序列Seq_P()中的位置,Seq_P(a)的值是一个整数值Seq_P(a)=i,i是正整数。同时,i值也表示了数组在程序中的权值,i值越大表示该数组在程序中的权越高,说明了数组在程序中的重要性。3)确认片上可控存储器的大小通过确认目标嵌入式处理器,为编译器提供片上可控存储器的大小的信息;4)确定分配到片上可控存储器上的数组分配到片上可控存储器上的数组满足条件对于分配到片上可控存储器上的L个数组全文摘要本发明公开了一种嵌入式系统中将数组分配到片上可控存储器的方法。本发明是利用了在嵌入式系统中通过编译方式将程序的数组分配到嵌入式处理器上的片上可控存储器中,从而能够利用片上可控存储器低延迟和低能耗的特点。本发明实现了嵌入式系统中将数组分配到片上可控存储器的方法,有利于降低嵌入式系统中程序运行的能耗,提高程序运行的效率。文档编号G06F1/32GK101178614SQ20071015718公开日2008年5月14日申请日期2007年11月27日优先权日2007年11月27日发明者楠张,威胡,斌谢,陈天洲申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1