面向嵌入式片上异构存储器的细粒度数据分配方法

文档序号:6399040阅读:301来源:国知局
专利名称:面向嵌入式片上异构存储器的细粒度数据分配方法
技术领域
:本发明属于嵌入式实时系统领域,尤其涉及一种面向嵌入式片上异构存储器的细粒度数据分配方法。
背景技术
:在计算机技术的发展过程中,主存储器的发展速度一直比中央处理器速度慢很多,主存和中央处理器的速度不匹配的矛盾造成了整个系统的瓶颈,随着高速片上存储器的使用,这种矛盾有所改善。在嵌入式系统中,便笺式存储器(SPM, Scratch Pad Memory)和高速缓存(Cache)是两种常见的片上异构存储器。在IBM公司的CellBroadband Engine系列和ARM公司的ARM9系列等处理器芯片上都集成了这两种片上异构存储器部件。SPM和Cache本质上都是一种静态随机存储器(SRAM, Static Random Access Memory),速度接近与CPU速度。Cache基于程序执行时的局部性原理:程序正在使用的主存某一单元附近的那些存储单元被用到的可能性很大。但在只有Cache的系统中,当程序中的数据量大于Cache的容量时,会造成Cache的数据冲突,在数据冲突时,Cache中的内容被替换,需要重新由主存加载数据到Cache,这样不但使程序的执行速度减慢,而且由于这种替换由硬件完成,是随机的,难以预测,所以很难对系统进行准确的实时性分析,这就降低了系统的实时性。而SPM的弓I入有利于有效缓解这种问题。SPM由于不需要地址比较电路,所以体积较小、功耗比较低、访问速度比Cache快,而且由于SPM和主存统一编址,程序员可以灵活控制SPM中的内容。为了充分利用SPM带来的优势,需要分析系统中代码块和数据块的执行频率等信息,在有SPM和Cache同时存在的系统中,还需要通过对程序执行轨迹的跟踪获取代码块和数据块加载到Cache时的冲突关系。现在针对SPM的研究比较多,有些研究目的是为了减少系统的能量消耗,有些研究是为了优化程序的执行时间,一般通过编译期代码(或数据)选取和重新布局,静态或者动态的改变SPM中的内容,但现在的研究主要集中在仅有SPM的系统,对使用SPM+Cache(如

图1)存储体系的研究相对较少。现仅有的针对SPM+Cache系统程序数据段的优化算法中,算法把数组当成一个不可拆分的整体,如果某个数组的长度大于SPM的容量,这个数组就没有机会放入SPM中,从而无法通过SPM对数组数据进行优化。我们通过对多个数据密集型程序的执行过程跟踪研究,发现有些程序执行过程中,数据Cache的冲突都基本集中在数组固定的局部某些块中(如图2,X轴为数据块编号,Y轴为Cache未命中的次数),如果能精确的找出这些潜在的Cache冲突严重的块,把他们重新布局到SPM中,就可以减少Cache冲突,以提高SPM利用率从而提升系统的性能
发明内容
:本发明要解决的问题就是:(I)在SPM空间一定的情况下精确的查找这种潜在的局部冲突率高的数据块;(2)通过数据的分割和重新布局,高效的利用有限的SPM空间,本发明通过提供一种面向嵌入式片上异构存储器的细粒度数据分配方法,充分利用SPM的优势来优化程序的数据段,改善程序的执行速度,提高系统性能;通过对程序中数据进行细粒度分割、精确选取和数据重新布局来提高便笺式存储器(SPM,Scratch Pad Memory)的利用效率,从而最大限度的减少Cache的冲突,最终提闻程序的执行效率、减少平均执行时间。为实现上述目的,本发明采用如下技术方案:—种面向嵌入式片上异构存储器的细粒度数据分配方法,它的步骤为:(1)对程序数据段进行预分析,获取数据的在内存中的首地址和数据类型和数据长度,将程序的数据段分割成细粒度的内存数据块,使其成为基本块,每块的大小取决于Cache每行的长度;(2)对执行期间的内存数据块访问序列进行跟踪,获取内存数据块的访问次数和Cache未命中信息,在Cache未命中时统计和记录内存数据块的时空冲突集;(3)使用线性规划算法求得数据分割和选取的最佳方案,进行数据分割的最小单位是内存数据块,其大小和所使用Cache的行存储单元的大小相同;(4)生成数据布局分散加载文件,对程序数据段的重新映射和布局,在程序中插入地址转换宏,重新编译代码。所述步骤(2)中,在给定输入的情况下获取到程序访问数据的序列,只统计Cache未命中到上次访问之 间不重复的内存块序列,生成时空冲突集合TCS,TCS用于下一步中通过0-1整数线性规划算法精确计算由于内存数据块被选取到SPM中后造成miss减少数量。所述步骤(3)中,每一个内存数据块miss减少分两种情况:1.因为本身被选取到SPM中,miss全部消;2.当自身没被选取到SPM中时,因为映射到同一组的其他内存数据块被选取到SPM,造成自身一些TCS中的块数小于Cache的路数;对一个内存数据块Mi是否被选择放入SPM中用Xi表示,当Xi为I的时候,表示Mi被选择放入SPM中,当Xi为0时表示Mi不被选择放入SPM中;通过下面公式来求取某个数据选取方案优化后的miss次数:
权利要求
1.一种面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,它的步骤为: (I)对程序数据段进行预分析,获取数据的在内存中的首地址和数据类型和数据长度,将程序的数据段分割成细粒度的内存数据块,使其成为基本块,每块的大小取决于Cache每行的长度; (2 )对执行期间的内存数据块访问序列进行跟踪,获取内存数据块的访问次数和Cache未命中信息,在Cache未命中时统计和记录内存数据块的时空冲突集; (3)使用线性规划算法求得数据分割和选取的最佳方案,进行数据分割的最小单位是内存数据块,其大小和所使用Cache的行存储单元的大小相同; (4)生成数据布局分散加载文件,对程序数据段的重新映射和布局,在程序中插入地址转换宏,重新编译代码。
2.如权利要求1所述的面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,所述步骤(2)中,在给定输入的情况下获取到程序访问数据的序列,只统计Cache未命中到上次访问之间不重复的内存块序列,生成时空冲突集合TCS,TCS用于下一步中通过0-1整数线性规划算法精确计算由于内存数据块被选取到SPM中后造成miss减少数量。
3.如权利要求1所述的面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,所述步骤(3)中,每一个内存数据块miss减少分两种情况:1.因为本身被选取到SPM中,miss全部消;2.当自身没被选取到SPM中时,因为映射到同一组的其他内存数据块被选取到SPM,造成自身一些TCS中的块数小于Cache的路数;对一个内存数据块Mi是否被选择放入SPM中用Xi表示,当Xi为I的时候,表示Mi被选择放入SPM中,当Xi为0时表示Mi不被选择放入SPM中;通过下面公式来求取某个数据选取方案优化后的miss次数:
4.如权利要求1所述的面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,所述步骤(4)中,通过步骤(3)获取到优化结果,通过这个优化结果生成程序优化脚本即分散加载文件,在脚本中为每一个数据在装载和执行时指定不同的存储区域地址,把上步选取的数据块映射到SPM中,其余数据块仍然布置在主存中,在主存中的数据块的相对位置不会因为SPM的映射而改变;在新代码中需要在每次数据访问前插入地址转换宏,地址转换宏用switch case语句,目的是通过数组索引找到数据的地址,switch case语句有固定的访问延迟时间,有利于保证嵌入式实时系统最差执行时间的可预测性并且保证地址转换的开销最小; 编译器会识别生成的分散加载文件,如果代码中被顺序访问的数组被分割,在编译时,编译器自动在需要地址转换的地方插入地址转换宏对代码进行改写。
全文摘要
本发明是一种面向嵌入式片上异构存储器的细粒度数据分配方法,通过对程序中数据进行细粒度分割、精确选取和数据重新布局来提高便笺式存储器的利用效率。它把程序数据段分割成细粒度的内存数据块,并对执行期间的内存数据块访问序列进行跟踪,获取内存数据块的访问次数和Cache未命中信息,在Cache未命中时统计和记录内存数据块的时空冲突集(TCS,Temporal ConflictSet),再使用线性规划算法求的数据选取的最佳方案,对程序数据段的重新映射和布局,在程序中插入地址转换宏,重新编译代码。通过优化程序数据段的布局减少Cache的冲突,提高SPM的使用效率,最终在保证程序实时性的前提下提高程序的执行效率、减少平均执行时间。
文档编号G06F9/50GK103150265SQ201310042340
公开日2013年6月12日 申请日期2013年2月4日 优先权日2013年2月4日
发明者鞠雷, 贾智平, 王冠华, 李阳 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1