面向多任务嵌入式系统的片上便笺式存储器管理方法
【专利摘要】本发明公开了面向多任务嵌入式系统的片上便笺式存储器管理方法,它的步骤为:对程序代码段进行预分析;对程序进行跟踪,得到其内存指令访问序列,从而获取内存代码块的访问次数和高速缓存Cache未命中信息,在高速缓存Cache访问时统计和记录内存代码块的时空冲突集;根据需要选择算法得到优化的SPM分配方案;生成代码布局分散加载文件,对程序代码段进行重新映射和布局,重新编译代码得到优化执行结果。通过综合考虑访问频率、缓存未命中频率以及任务间和任务内冲突,求得自己所需的最佳分配,使便签式存储器的利用率最大化,最终在保证程序实时性的前提下得到执行时间最优方案或者节能最优方案。
【专利说明】面向多任务嵌入式系统的片上便笺式存储器管理方法
【技术领域】:
[0001]本发明属于嵌入式实时系统领域,尤其涉及一种面向多任务嵌入式系统的片上便笺式存储器管理方法。
【背景技术】:
[0002]在嵌入式系统的发展过程中,由于主存储器的发展速度一直比中央处理器速度慢很多,主存的低读取速度与高能量消耗导致其成为现在很多嵌入式系统性能与能耗的瓶颈,而片上存储器则弥补了这种日益增长的主存和中央处理器速度的差距。
[0003]在嵌入式系统中,片上存储器主要包括便笺式存储器(SPM, Scratch Pad Memory)和高速缓存(Cache)两种。便笺式存储器SPM和高速缓存Cache本质上都是一种静态随机存储器(SRAM, Static Random Access Memory),存取速度很快,接近于CPU速度。高速缓存Cache由系统硬件控制,对于系统软件和程序员透明,基于程序执行时的时间与空间局部性来提高系统性能。相比传统的Cache,便笺式存储器SPM是由软件控制,在实时系统设计中能提供更好的时间预测性,并且由于便笺式存储器SPM由软件控制不需要地址比较电路,所以体积较高速缓存Cache小、功耗较高速缓存Cache低、访问速度较高速缓存Cache快。现在许多嵌入式系统如ARM公司的ARM11、Cortex-R系列等处理器芯片上都同时集成了这两种片上存储器。
[0004]在最近十几年有许多关于便笺式存储器SPM相关架构设计与管理的研究,它们或者优化性能、或者优化能耗、或者优化最坏执行时间(WCET, fforst-case Execution Time)。这些研究一般通过编译期代码选取和重新布局,静态或者动态的改变便笺式存储器SPM中的内容达到优化目的。但是现在的研究主要集中在仅有便笺式存储器SPM的系统,对使用便笺式存储器SPM+高速缓存Cache (如图1)存储体系的多任务系统的研究相对较少。现在仅有的针对便笺式存储器SPM+高速缓存Cache存储体系的多任务系统的优化算法中,算法以函数为基本分配单位,只考虑单个函数放入SPM所得到的能耗减少,对于多任务系统中任务间冲突以及任务内函数间的冲突没有考虑,而这些任务间以及任务内的冲突对系统的性能和能耗有很大的影响。
[0005]通过对多个程序执行过程的跟踪研究,发现在许多程序中,访问频率高或者高速缓存Cache未命中频率闻的函数不一定是造成任务间和任务内冲突最多的函数(如图2,其中访问频率最高的是Atl和B1,未命中频率最高的是Atl,但造成任务间和任务内冲突最多的是Btl),现有技术往往没有把访问频率、Cache未命中频率以及任务间和任务内冲突都考虑进去,更没有充分利用SPM。
[0006]中国专利(申请号:201310042340.6,专利名称:面向嵌入式片上异构存储器的细粒度数据分配方法),这篇专利虽然利用线性规划方法来解决便签式存储器SPM中的数据分配问题,但是I)它是讨论便签式存储器SPM中数据分配的问题,而数据分配与代码分配有极大的差别,因为多任务系统中代码之间的相关性,不能以内存块为单位来进行分配,2)它是利用线性规划方法来解决SPM分配问题,但是由于变量以及约束条件非常多,使用线性规划方法其计算时间复杂度是指数级的会消耗非常多的时间,根本无法满足实时系统的要求。
【发明内容】
:
[0007]本发明要解决的问题就是:(1)明确多任务系统中任务间以及任务内的冲突情况;(2)综合考虑访问频率、高速缓存Cache未命中频率以及任务间和任务内冲突情况,充分利用有限的便笺式存储器SPM空间,本发明通过提供一种面向多任务嵌入式系统的片上便笺式存储器管理方法,充分利用便笺式存储器SPM的优势来优化程序的代码段,提高系统性能,加快执行速度,减少系统能耗;通过对程序中指令进行细粒度分析,然后根据优化目的的不同综合考虑多种因素进行便笺式存储器SPM分配,以便使便笺式存储器SPM的利用率达到最大,最终使执行时间最小或者使能耗最小。
[0008]为实现上述目的,本发明采用如下技术方案:
[0009]一种面向多任务嵌入式系统的片上便笺式存储器管理方法,它的步骤为:
[0010]步骤(I):对程序代码段进行预分析,获取各个任务的各个函数在内存中的首尾地址和函数大小,并对所有函数进行统一编号;
[0011]步骤(2):在无便签式存储器SPM架构下对程序代码进行跟踪,得到其内存指令访问序列,从而获取内存代码块的访问次数和高速缓存Cache未命中次数,在高速缓存Cache访问时统计和记录内存代码块的时空冲突集;
[0012]步骤(3):根据需要选择算法得到优化的便笺式存储器SPM分配方案:
[0013]如果对分析时间没有要求就选择线性规划算法,根据步骤(I)中各个函数的首尾地址、大小和步骤(2)中访问次数以及时空冲突集来得到针对执行时间或者能耗的便笺式存储器SPM优化分配方案,记录应该放入便签式存储器SPM的函数编号;
[0014]如果要求最少的分析时间就选择背包近似算法,根据步骤(I)中各个函数的首尾地址、大小、步骤(2)中的访问次数和高速缓存Cache未命中次数以及时空冲突集来得到针对执行时间或者能耗的便笺式存储器SPM优化分配方案,记录应该放入便签式存储器SPM的函数编号;
[0015]步骤(4):生成代码布局分散加载文件,对程序代码段进行重新映射和布局,重新编译代码得到优化执行结果。
[0016]所述步骤(2)中,在无便签式存储器SPM架构下通过仿真器跟踪执行得到程序访问指令的序列,获取内存代码块的访问次数和高速缓存Cache未命中信息,统计每个内存块两次高速缓存Cache访问之间不重复的内存块序列,生成时空冲突集合TCS,时空冲突集合TCS在步骤(3)的两种方法中都要用到。
[0017]所述步骤(3)的线性规划方法中,由于每一个内存块miss减少分两种情况:
[0018]I).因为本身所在的函数被选取到SPM中,miss全部消失;
[0019]2).当自身所在的函数没被选取到SPM中但映射到同一 Cache组的其他内存块所在的函数被选取到SPM,由此可能导致自身一些TCS中的块数小于Cache的路数;统计SPM分配后的各个内存块的miss次数miss' i,然后根据不同的优化目标选择不同的目标函数:
[0020]如果需要优化执行时间,目标函数为:[0021 ]
【权利要求】
1.一种面向多任务嵌入式系统的片上便笺式存储器管理方法,其特征是,它的步骤为: 步骤(1):对程序代码段进行预分析,获取各个任务的各个函数在内存中的首尾地址和函数大小,并对所有函数进行统ー编号; 步骤(2):在无便签式存储器SPM架构下利用仿真器对程序代码进行跟踪,得到其内存指令访问序列,从而获取内存代码块的访问次数和高速缓存Cache未命中次数,在高速缓存Cache访问时统计和记录内存代码块的时空冲突集; 步骤(3):根据需要选择算法得到优化的便笺式存储器SPM分配方案: 如果对分析时间没有要求就选择线性规划算法,根据步骤(1)中各个函数的首尾地址、大小和步骤(2)中的访问次数以及时空冲突集来得到针对执行时间或者能耗的便笺式存储器SPM优化分配方案,记录应该放入便签式存储器SPM的函数编号; 如果要求最少的分析时间就选择背包近似算法,根据步骤(1)中各个函数的首尾地址、大小、步骤(2)中的访问次数和高速缓存Cache未命中次数以及时空冲突集来得到针对执行时间或者能耗的便笺式存储器SPM优化分配方案,记录应该放入便签式存储器SPM的函数编号; 步骤(4):针对步骤(3)的两种情况均生成代码布局分散加载文件,对程序代码段进行重新映射和布局,重新编译代码得到优化执行結果。
2.如权利要求1所述的ー种面向多任务嵌入式系统的片上便笺式存储器管理方法,其特征是,所述步骤(2)中,在无便签式存储器SPM架构下通过仿真器跟踪执行得到程序访问指令的序列,获取内存代码块的访问次数和高速缓存Cache未命中信息,统计每个内存块两次高速缓存Cache访问之间不重复的内存块序列,生成时空冲突集合TCS。
3.如权利要求1所述的ー种面向多任务嵌入式系统的片上便笺式存储器管理方法,其特征是,所述步骤(3)的线性规划方法中,由于每ー个内存块miss減少分两种情况: 1).因为本身所在的函数被选取到SPM中,miss全部消失; 2).当自身所在的函数没被选取到SPM中但映射到同一Cache组的其他内存块所在的函数被选取到SPM,由此会导致自身ー些TCS中的块数小于Cache的路数;统计SPM分配后的各个内存块的miss次数miss' i,然后根据不同的优化目标选择不同的目标函数: 如果需要优化执行时间,目标函数为:
4.如权利要求1所述的ー种面向多任务嵌入式系统的片上便笺式存储器管理方法,其特征是,所述步骤(3)的背包近似算法中,将内存块之间的冲突通过计算影响因子转化为各个任务的各个函数之间的冲突,然后就综合访问频率、Cache未命中频率以及任务冲突多方面因素来考虑将各个任务的各个函数中的任意一个函数放入SPM中得到的“收益”,然后利用近似背包算法来取得优化执行时间的分配或者优化能耗的分配。
5.如权利要求4所述的一种面向多任务嵌入式系统的片上便笺式存储器管理方法,其特征是,所述步骤(4)中,根据步骤(3)中得到的优化分配结果生成程序优化脚本,所述程序优化脚本即分散加载文件,根据步骤(3)中记录的函数编号在程序优化脚本中把步骤(3)中所记录的函数 编号对应的函数映射到SPM中,但在主存中仍保留一个备份,其他代码在主存中的位置不变,因此分配前后未分配到SPM中的代码映射的Cache组不变,就使步骤(2)中得到的针对无SPM架构程序执行跟踪结果是有效的。
【文档编号】G06F9/50GK103559148SQ201310572826
【公开日】2014年2月5日 申请日期:2013年11月15日 优先权日:2013年11月15日
【发明者】鞠雷, 贾智平, 周梓梦 申请人:山东大学