Rosemount罗斯蒙特248HANAN***
在嵌入式系统中,设内存块大小为S,某段时间内内存块个数为T,块中每页的大小为p*q*w,其中p为行数,q为列数,w为每个字的位数。在某个应用中有N个变量{ni,i=1,……,N},已知变量被访问的次序为njnknl……nm,则首先寻找块存储的相对位置,使得内存访问延迟函数 Latency1***小(假设两个块相邻,访问需要1个时钟周期;相隔1个块,访问需要2个时钟周期;第i个块和第j个块间访问需要i-j个时钟访问延迟):
Latency1={Sum|∑z*(i-j)/z,z=1....m} (1)
其中:z是访问顺序表中内存块的位置,如第3个位置(z=3)访问的是bi,下一个位置存放的是bj,i和j是内存块访问顺序中相邻块标号,是块在内存中存储的相对位置,m是访问内存块的顺序排列长度。其次寻找N个变量在内存块内的存储相对位置的一种规划{nxnynz……nt},使得内存访问延迟函数Latency2***小,块内规划目标函数为:
Min:Latency2=5*#P+3*#R+#C (2)
其中:#P是规划中访问的页间转换的次数,#R是行间转换的次数,#C是列间转换的次数。N个变量的排列方法的数目共有N!种,要在如此多的情况下寻找某种***优的排列,这是NP问题。解决这类优化问题有很多方法,如模拟退火算法、演化算法等一些启发算法,也可以用曲线图划分问题(graph partitioning problem)的方法来解决此问题。本文采用了***近几年发展很快的遗传算法来解决此规划问题。遗传算法是解决NP问题的有效方法。本文的研究目的在于内存规划的意义,而不是遗传算法,所以采用经典遗传算法[8],以此来验证内存规划的有效性。本文的算法可记为LBP(LBP-Layout of Block and Page)。
2.1 算法的前提条件
在解决问题之前,要给出解决问题的前提。
(1)对块内访问时,通常是先寻找页,再找到行,***后找列,则对页访问的耗时(一般称为内存访问延迟)大于对同页中的行,行访问耗时大于同行中的列。同时在相距较远的块间访问耗时大于相邻块间访问。
(2)减少内存访问中块和页的转换次数,可以减少延迟和节省能量。
(3)在页/行/列之间转换没有优先级,也就是从1~3页和从1~2页耗时是相同的。
(4)内存单元阵列是矩形,p和q代表内存块单元的行数和列数,w代表内存字的长度,则p*q*w代表了内存的大小。
(5)数据访问顺序是已知的。
(6)每个数据都分配给***的内存单元,基本单元的大小与要分配的数据刚好匹配。
前面四个假设是解决问题的必要条件,而后面两条假设是为了简化解决的问题。如果没有特别的说明,这些假设在本文都是适用的。
2.2 遗传算法
遗传算法的基本步骤是确定适应度函数,然后对问题进行编码和寻找***优解。下面给出解决块内规划问题算法第二步的基本步骤。***步与第二步相似,本文省略。
(1)适应度函数是目标函数,即Latency。依据假设,如果页访问模式延迟时间是5个时钟周期,记为Delay(P)=5cycles,则行延迟Delay(R)=3cycles,列延迟Delay(C)=1cycles,适应度函数为:latency(cycles)=#P*5+#R*3 +#C*1。
(2)解决的问题是内存变量的存放次序,由于字母的数目有限,所以可用十进制编码来表示变量(如把图1中abcdefgh编码为12345678)。
(3)杂交过程选择同一代中的某些位进行交换,不同代的交换容易产生***个体, 所以在某代个体内部进行交换,可以提高算法的有效性。选取某代杂交的概率为Pc=0.08。
(4)算法的终止是在某两代适应度函数之间相对误差小于0.001时,程序终止,并给出***优的内存规划方法。如果内存单元数目有p*q个,则取串中每q个为一行(分为一组),间隔n*(q-1)为一列,存放在内存中供程序使用。
2.3 实验结果
图像处理系统的处理对象是象素,处理过程中使用大量的内存,造成了嵌入式系统图像处理应用中的瓶颈。经过近几十年的发展,图像处理算法也有很多成熟的算法。可以把这些算法经过改造,使之适应嵌入式系统体积小、容量小的特点。本文算法的提出是针对使用大量内存,同时处理步骤相对简单的系统设计的。本文采用一些标准(benchmark)系统,提高嵌入式系统有限的内存资源的利用率。基于内存的规划算法,用几个内存访问序列验证内存规划对嵌入式系统性能的改变。实验中使用IFA(Image Flip Algorithm)、GSR(Gauss-Seidel formula)、CA(Compress Algorithm)、BIQUAD(Biquad_one_section)和FIR。后两个例子是为了验证非图像处理的系统使用本算法的情况,说明算法的应用具有一定的普遍意义。
表1和表2是用随机访问方法和本文的访问方法进行实验的结果。从表中可以看出,规划后的延迟时间都缩短了,另外还验证了规划内存方法的使用减少了嵌入式系统能耗。能耗的计算采用文献[2]中的算法,如图3(a)所示。
文献[1]中的算法是对页进行规划时,寻找页访问次数***大,对列进行规划时,寻找列访问次数***大。在具体应用中,只能用一种方法。而本文同时对内存中页和行进行规划,所以对系统性能的提高更有效。图3(b)是与文献[1]算法的结果比较(仅给出能量消耗图),前者平均能量提高了大约10%。

用随机访问方法和本文的访问方法进行实验的结果


能量消耗比较
把本文的算法应用于自行开发的嵌入式图像处理系统中,获得了良好的系统性能。
3 结论和展望
本文提出了一个通过减少对内存访问时块间和块内页间交换的次数和行间转换的次数,使嵌入式系统内存和能量资源能够有效利用的方法。该方法可以直接应用到嵌入式系统的内存管理器中。因为随着用户需求和功能的增加,越来越多的嵌入式系统需要处理大量的数据,所以对嵌入式系统的内存采取管理是必要的。尤其对一些不带MMU单元的操作系统来说,应用中加入内存管理程序对系统性能的提高起到很大的作用。本文给出的内存规划策略能有效地减轻嵌入式系统负担。本文是针对非数组的变量来讨论的,但是也可以应用到数组变量中。尽管使用的算法有可能没有找到系统的***优解,但使用这个算法,一定可以提高系统的性能。
本文提出的算法不但可以应用到嵌入式系统中的DRAMs,也可以应用到其他支持行和列内存访问的存储设备上,如flash存储器。虽然目前一些多组SRAM的系统还不支持此算法,但是在将来的基于功耗设计的系统中,这种访问模式是会被支持的。
本文方法同流行操作系统内存管理相比更简单,更加适合嵌入式系统,同时弥补了现用嵌入式操作系统CLinux等在内存管理方面的不足。
1756-L55
1756-L55M12
1756-L55M13
1756-L55M14
1756-L55M16
1756-L55M22
1756-L55M23
1756-L55M24
1756-L60M03SE
1756-L61
1756-L61S
1756-L62
1756-L62S
1756-L63
1756-L63S_______
1756-L64_________
1756-LSP
1756-M12
1756-M13
1756-M14
1756-M16
1756-M22
1756-M23
1756-M24
1756-IF16
1756-IF4FXOF2F
1756-IF6CIS
1756-IF6I
1756-IR6I
1756-IT6I
1756-IT6I2
1756-OF6CI
1756-OF6VI
1756-OF8
1756-OF8H
1756-CFM
1756-HYD02
1756-PLS
1756-M02AE
1756-M02AS
1756-M08SE
1756-M16SE
1756-CN2
1756-CN2R
1756-CNBR
1756-EN2T
1756-ENBT
1756-EWEB
1756-DHRIO
1756-PBR2
1756-SYNCH
1756-STRT4
1756-PAR2
1756-EN2TR
1756-RM
1756sc-CTR8
1756sc-IF8H
1756sc-IF8u
1756sc-OF8H
1756L56
1756L57
1756L58
1756L59
1756L60
1756L61
1756L62________________________________________________________
1756L63
1756L64
1756L65
1756L66
1756L62S
1756L63
1756L64
1756L65
1756LSP
1785L60L
1785L40L
1785L80E
1785L86B
1785L80C15
1785L80B
1785L60B
1785L46C15
1785L40E
1785L46B
1785L40C15
1785L40B
1785L30B
1785L26B
1785L20E
1785L20C15
1785L20B
1785BCM
1785BEM
1785L11B
1785KA
1785CHBM
1785KE
1785KA3
1785ENET
1785KA5P
1785M100
1785ME64
1785ME32
1785ME16
1785TAM
1785TBM
1785TAS
1785TBS
1785TR10B5
1785ACC5LA
1785ACC5LB
1785-L11B
1785-L20B
1785-L20C15
1785-L20E
1785-L26B
1785-L30B
1785-L40B
1785-L40C
1785-L40C15
1785-L40E
1785-L40L
1785-L46B
1785-L46C15
1785-L60B
1785-L60L
1785-L80B
1785-L80C
1785-L80C15
1785-L80E
1785-L86B
1747-L542
1747-L543
1747-L551
1747-L552
1747-L553
1747-L553P
1756-L1
1756-L1M1
1756-L1M2
1756-L1M3
1756-L55
1756-DNB
1756-IB16
1756-IB16D
1756-IB16I
1756-IB32
1756-IC16
1756-IH16I
1756-IM16I
1756-IN16
1756-IV16
1756-OB16D
1756-OB16E
1756-OB16I
1756-OB32
1756-OB8
1756-OB8EI
1756-OC8
1756-ON8
1756-OV16E
1756-OW16I
1756-OX8I
1756-IF16
1756-IF6I
1756-IF8
1756-IR6I
1756-IT6I
1756-OF4
1756-OF6CI
1756-OF6VI
1756-OF8
1756-HSC
1756-CNB
1756-CNBR
1756-ENBT
1756-DHRIO
1756-DNB
1756-L61
1756-L61S
1756-L62
1756-L62S
1756-L63
1756-L63S
1756-L63XT
1756-L64
1756-L65
1756-L73
1756-L75
1756-L55
