CN103150265B - 面向嵌入式片上异构存储器的细粒度数据分配方法 - Google Patents
面向嵌入式片上异构存储器的细粒度数据分配方法 Download PDFInfo
- Publication number
- CN103150265B CN103150265B CN201310042340.6A CN201310042340A CN103150265B CN 103150265 B CN103150265 B CN 103150265B CN 201310042340 A CN201310042340 A CN 201310042340A CN 103150265 B CN103150265 B CN 103150265B
- Authority
- CN
- China
- Prior art keywords
- data
- spm
- cache
- internal storage
- data block
- 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.)
- Expired - Fee Related
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明是一种面向嵌入式片上异构存储器的细粒度数据分配方法,通过对程序中数据进行细粒度分割、精确选取和数据重新布局来提高便笺式存储器的利用效率。它把程序数据段分割成细粒度的内存数据块,并对执行期间的内存数据块访问序列进行跟踪,获取内存数据块的访问次数和Cache未命中信息,在Cache未命中时统计和记录内存数据块的时空冲突集(TCS,Temporal ConflictSet),再使用线性规划算法求的数据选取的最佳方案,对程序数据段的重新映射和布局,在程序中插入地址转换宏,重新编译代码。通过优化程序数据段的布局减少Cache的冲突,提高SPM的使用效率,最终在保证程序实时性的前提下提高程序的执行效率、减少平均执行时间。
Description
技术领域:
本发明属于嵌入式实时系统领域,尤其涉及一种面向嵌入式片上异构存储器的细粒度数据分配方法。
背景技术:
在计算机技术的发展过程中,主存储器的发展速度一直比中央处理器速度慢很多,主存和中央处理器的速度不匹配的矛盾造成了整个系统的瓶颈,随着高速片上存储器的使用,这种矛盾有所改善。在嵌入式系统中,便笺式存储器(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的引入有利于有效缓解这种问题。
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利用率从而提升系统的性能。
发明内容:
本发明要解决的问题就是:(1)在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为1的时候,表示Mi被选择放入SPM中,当xi为0时表示Mi不被选择放入SPM中;通过下面公式来求取某个数据选取方案优化后的miss次数:
mri=xi·miss(Mi)+cri
目标是使下面访存延迟计算函数即目标函数最小化,目标函数为:
所述步骤(4)中,通过步骤(3)获取到优化结果,通过这个优化结果生成程序优化脚本即分散加载文件,在脚本中为每一个数据在装载和执行时指定不同的存储区域地址,把上步选取的数据块映射到SPM中,其余数据块仍然布置在主存中,在主存中的数据块的相对位置不会因为SPM的映射而改变;在新代码中需要在每次数据访问前插入地址转换宏,地址转换宏用switch case语句,目的是通过数组索引找到数据的地址,switch case语句有固定的访问延迟时间,有利于保证嵌入式实时系统最差执行时间的可预测性并且保证地址转换的开销最小;
编译器会识别生成的分散加载文件,如果代码中被顺序访问的数组被分割,在编译时,需要特定方式对代码进行改写。
本发明采用的方法与现有技术相比有如下优点:
(1)使用SPM+Cache架构。在单独使用SPM的架构中,特别是使用静态布局的方法中,未布置在SPM中的数据的访问延迟太大,无法有效提高程序的运行速度。在SPM+Cache的架构中,我们在SPM空间有限的条件下,让剩余的数据可以利用Cache带来的好处。
(2)把不能一次性放入SPM的数组进行细粒度分割。现有的算法把数组当成一个整体,在数组大小大于SPM时,就无法对数组进行处理,这样就使对于有大量数组计算(如矩阵乘法)而且数组较大的程序无法使用SPM带来的优势,我们的优化策略基于同Cache行存储单元大小相同的细粒度处理单元。
(3)对已经精确分割数据的“获利”进行计算,在考虑数据的访问频率的同时,考虑如果在不放入SPM中的情况下数据在Cache中和其他数据块的冲突情况。内存数据单元的时 空冲突集(TCS)描述数据块冲突时Cache组中的其他数据块,通过选取他们到SPM中,可以减少TCS的元素个数,当TCS中元素个数少于Cache的相连的路数时,此次miss可以避免。
(4)本方法提供一种处理分割后数组连续访问时遇到的地址不连续问题的解决方法。这种方法把因为数组分割而造成访问时的额外开销最小化并保证每次访问的额外开销大小固定。
附图说明:
图1具有Cache+SPM结构系统连接逻辑图;
图2数据在Cache中冲突的局部性;
图3程序数据优化过程流程图;
图4映射到cahce相同组的内存数据块在Cache中的冲突序列;
图5内存数据块B被选取后的冲突序列。
具体实施方式:
下面给出本发明的一个实例并结合附图对本发明做进一步地说明。
(1)对程序数据段进行预分析
通过分析源程序代码,找出源程序的数据段,数据段包括全局(静态)变量、全局(静态)数组、程序堆栈,在栈数据段中我们主要关心存放程序局部变量的部分。分析数据段主要统计每个变量、数组的长度和类型,对于一个计算矩阵乘法程序获取到的数据段信息如下:
变量名 | 变量种类 | 变量长度 | 变量类型 |
A | 全局数组 | 1500 | Int |
B | 全局数组 | 600 | Int |
C | 全局数组 | 1000 | Int |
(2)对程序数据段执行轨迹进行跟踪,建立Cache冲突集合
把源文件编译成二进制文件,通过给定的输入,在指令仿真器中获取程序执行的跟踪信息。我们在逻辑上把数据段分成n个大小为Cache每行长度(比如32B)的内存数据块,数组的跟踪和统计信息基于内存数据块。跟踪信息中包含每个内存数据块的首地址、数据块的访问次数、数据块的未命中的次数和未命中时的时空冲突集合(TCS),TCS中包含在一次miss到上次访问之间不重复的映射到同一组的内存块集合,如图4,A、B、C、D为映射到同一个Cache组的内存块,假设Cache为2路相联的,对于A来说,TCS_1和TCS_3为属于A的一段冲突序列,所以A的两次时空冲突集合就为{B,C}和{D,C}。对于内存数据块C,TCS_2为C的冲 突序列,时空冲突集合为{A,D},时空冲突集合为后面求解0-1线性规划的输入。
(3)通过0-1线性规划求出数据选取的最优解
这一步骤的主要工作,通过线性约束条件和目标函数,使用LP_solve或者Cplex等整数线性规划求解工具,求出最优解。表格1列出整数线性规划中使用的符号和解释。
表格1
通过表格1可以看出xi表示内存数据块Mi是否在被选取放入SPM中,取值含义表示如下:
每一个内存数据块miss减少分两种情况:1.因为本身被选取到SPM中,miss全部消;2.当自身没被选取到SPM中时,因为映射到同一组的其他内存数据块被选取到SPM,造成自身一些TCS中的块数小于Cache的路数(如图5,当B被选取到SPM中时,TCS_1的块数少于2,所以内存数据块A会减少一次miss)。当内存数据块Mi没被选取到SPM中,Mj被选取到SPM,可以表示为:
转换成数学表达式为:
为了便于0-1线性规划求解,写成下面等价线性化公式:
当内存数据块Mj在块Mi的第p个TCS中时,为1,不在为0公式表示为:
在某个选取方案中,如果内存数据块Mi没被选取到SPM中,第p个TCS中留在主存中的内存数据块数量小于Cache组相连的路数时,第p次miss会被消除,会不会消除用表示,|Sk|表示与Mi同cache组的内存数据块数量。表示为公式为:
对于没被选取到SPM的内存数据块Mi所有可能被消除的miss为:
当考虑内存数据块Mi被选取或者不被选取到SPM中两种情况时,最终miss减少的数量可以表示为:
mri=xi·miss(Mi)+cri
最终程序中剩余数据Cache的miss数为:
加载到SPM中数据量大小必须小于SPM的大小,size(Mi)表示内存数据块Mi的大小,单位为字节,SPMsize表示SPM大小,单位为字节,|Mi|表示内存数据块数量。最终表示如下:
数据块Mi通过SPM被访问访问的次数可以表示为:
数据块Mi通过Cache被访问的次数可以表示为:
最终的目标是使优化后的程序访问数据的延迟最小化,下面为我们的目标函数,当latency的值最小时为最优化解,其中Tmiss、Thit、Tspm、Tsplit分别为Cache未命中、Cache命中、SPM命中和由于数据分割造成的多余开销的时间延迟。目标函数为:
latency=Miss·Tmiss+Acesscache·(Thit+Tsplit)+Acessspm·(Tspm+Tsplit)
展开式为:
(4)生成数据布局分散加载文件
分散加载文件是ARM编译器在链接时使用的输入文件,用来指定数据段的加载区域和地址。经过步骤(3)之后,我们可以得到需要加载到SPM中变量或者基本数据块的相对位置,在指定好SPM的初始位置和大小之后,我们很容易计算出变量或者基本块在SPM中的相对位置,如果指定SPM的初始地址为0x10000000,举例如下:
变量名 | 大小 | 在SPM中的位置 |
A | 4 | 0x10000000 |
B | 23 | 0x10000004 |
C | 1 | 0x1000001B |
...... | ...... | ...... |
在分散加载文件中描述如下:
(5)用优化编译器重新编译程序
如果一个数组被分成多个数据段,每段有可能加载在不同的地址上,在程序对数据进行连续访问时,会遇到地址转换的问题,发明通过修改编译器自动在需要地址转换的地方插入下面的宏。下面的宏可以保证每次访问都有固定的额外开销,而且如果我们把宏中使用的变量设置成寄存器变量,并把这段宏代码加载到SPM中,可以有效减少宏编译成的代码的执行时间。
。
Claims (3)
1.一种面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,它的步骤为:
(1)对程序数据段进行预分析,获取程序数据的在内存中的首地址、数据类型和数据长度,将程序数据段分割成细粒度的内存数据块,使其成为基本块,每块的大小取决于Cache每行的长度;
(2)对执行期间的内存数据块访问序列进行跟踪,获取内存数据块的访问次数和Cache未命中信息,在Cache未命中时统计和记录内存数据块的时空冲突集;
(3)使用线性规划算法求得数据分割和选取的最佳方案,进行数据分割的最小单位是内存数据块,其大小和所使用Cache的行存储单元的大小相同;所述步骤(3)中,每一个内存数据块miss减少分两种情况:
1)因为本身被选取到SPM中,miss全部消除;
2)当自身没被选取到SPM中时,因为映射到同一组的其他内存数据块被选取到SPM,造成自身一些TCS中的块数小于Cache的路数;对一个内存数据块是否被选择放入SPM中用xi表示,当xi为1的时候,表示Mi被选择放入SPM中,当xi为0时表示Mi不被选择放入SPM中;通过下面公式来求取某个数据选取方案优化后的miss次数:
Mri=xi·miss(Mi)+cri
目标是使下面访存延迟计算函数即目标函数最小化,目标函数为:
(4)生成数据布局分散加载文件,对程序数据段的重新映射和布局,在程序中插入地址转换宏,重新编译代码。
2.如权利要求1所述的面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,所述步骤(2)中,在给定输入的情况下获取到程序访问数据的序列,只统计Cache未命中到上次访问之间不重复的内存块序列,生成时空冲突集合TCS,TCS用于下一步中通过0-1整数线性规划算法精确计算由于内存数据块被选取到SPM中后造成miss减少数量。
3.如权利要求1所述的面向嵌入式片上异构存储器的细粒度数据分配方法,其特征是,所述步骤(4)中,通过步骤(3)获取到优化结果,通过这个优化结果生成程序优化脚本即分散加载文件,在脚本中为每一个数据在装载和执行时指定不同的存储区域地址,把上步选取的数据块映射到SPM中,其余数据块仍然布置在主存中,在主存中的数据块的相对位置不会因为SPM的映射而改变;在新代码中需要在每次数据访问前插入地址转换宏,地址转换宏用switch case语句,目的是通过数组索引找到数据的地址,switch case语句有固定的访问延迟时间,有利于保证嵌入式实时系统最差执行时间的可预测性并且保证地址转换的开销最小;
编译器会识别生成的分散加载文件,如果代码中被顺序访问的数组被分割,在编译时,编译器自动在需要地址转换的地方插入地址转换宏对代码进行改写。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310042340.6A CN103150265B (zh) | 2013-02-04 | 2013-02-04 | 面向嵌入式片上异构存储器的细粒度数据分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310042340.6A CN103150265B (zh) | 2013-02-04 | 2013-02-04 | 面向嵌入式片上异构存储器的细粒度数据分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150265A CN103150265A (zh) | 2013-06-12 |
CN103150265B true CN103150265B (zh) | 2015-10-21 |
Family
ID=48548358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310042340.6A Expired - Fee Related CN103150265B (zh) | 2013-02-04 | 2013-02-04 | 面向嵌入式片上异构存储器的细粒度数据分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150265B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559148B (zh) * | 2013-11-15 | 2016-03-23 | 山东大学 | 面向多任务嵌入式系统的片上便笺式存储器管理方法 |
CN103744791B (zh) * | 2013-12-20 | 2017-01-11 | 华为技术有限公司 | 一种内存迁移的方法和装置 |
CN103793339B (zh) * | 2014-01-13 | 2016-08-24 | 杭州电子科技大学 | 基于内存访问堆栈距离的数据Cache性能探索方法 |
CN105912405B (zh) * | 2016-04-28 | 2019-01-29 | 浪潮(北京)电子信息产业有限公司 | 一种任务部署方法及装置 |
CN108182084B (zh) * | 2017-12-28 | 2021-05-11 | 中国科学院计算技术研究所 | 哈希混合加速系统及应用其进行哈希连接的方法 |
CN108334337B (zh) * | 2018-01-30 | 2022-02-01 | 江苏华存电子科技有限公司 | 含自动管理功能的低延迟指令调度器及过滤猜测访问方法 |
CN108920276A (zh) * | 2018-06-27 | 2018-11-30 | 郑州云海信息技术有限公司 | Linux系统内存分配方法、系统及设备和存储介质 |
CN109471732B (zh) * | 2018-11-22 | 2021-06-01 | 山东大学 | 一种面向cpu-fpga异构多核系统的数据分配方法 |
CN113574982B (zh) * | 2019-03-25 | 2023-06-27 | 西门子股份公司 | 用于为给电路板装配电子构件的装配线确定装备族的方法 |
CN111798923B (zh) * | 2019-05-24 | 2023-01-31 | 中国科学院计算技术研究所 | 基因比对的细粒度负载特征分析方法、装置与存储介质 |
CN112214448B (zh) * | 2020-10-10 | 2024-04-09 | 声龙(新加坡)私人有限公司 | 异质集成工作量证明运算芯片的数据动态重构电路及方法 |
CN115421918B (zh) * | 2022-09-16 | 2023-05-12 | 河南省职工医院 | 一种基于RT-Linux的经颅磁刺激设备及系统 |
CN117312330B (zh) * | 2023-11-29 | 2024-02-09 | 中国人民解放军国防科技大学 | 基于便签式存储的向量数据聚集方法、装置及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615133A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于细粒度延迟写拷贝的装置和方法 |
CN102110058A (zh) * | 2009-12-25 | 2011-06-29 | 上海芯豪微电子有限公司 | 一种低缺失率、低缺失惩罚的缓存方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890702B2 (en) * | 2007-11-26 | 2011-02-15 | Advanced Micro Devices, Inc. | Prefetch instruction extensions |
-
2013
- 2013-02-04 CN CN201310042340.6A patent/CN103150265B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615133A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于细粒度延迟写拷贝的装置和方法 |
CN102110058A (zh) * | 2009-12-25 | 2011-06-29 | 上海芯豪微电子有限公司 | 一种低缺失率、低缺失惩罚的缓存方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103150265A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150265B (zh) | 面向嵌入式片上异构存储器的细粒度数据分配方法 | |
Qiu et al. | Data allocation for hybrid memory with genetic algorithm | |
Li et al. | Identifying opportunities for byte-addressable non-volatile memory in extreme-scale scientific applications | |
CN109002659B (zh) | 一种基于超级计算机的流体机械仿真程序优化方法 | |
Panda et al. | Local memory exploration and optimization in embedded systems | |
CN103559148B (zh) | 面向多任务嵌入式系统的片上便笺式存储器管理方法 | |
CN101556534A (zh) | 一种众核结构的大规模数据并行计算方法 | |
CN103226487A (zh) | 面向异构众核多级存储结构的数据分布与局部性优化方法 | |
Oukid et al. | Data structure engineering for byte-addressable non-volatile memory | |
Liu et al. | Scratchpad memory architectures and allocation algorithms for hard real-time multicore processors | |
Siddique et al. | Lmstr: Local memory store the case for hardware controlled scratchpad memory for general purpose processors | |
CN103150157B (zh) | 基于访存分歧的gpu核心程序重组优化方法 | |
Kuo et al. | Cache capacity aware thread scheduling for irregular memory access on many-core GPGPUs | |
Wang et al. | An automatic-addressing architecture with fully serialized access in racetrack memory for energy-efficient CNNs | |
Shekarisaz et al. | MASTER: Reclamation of hybrid scratchpad memory to maximize energy saving in multi-core edge systems | |
Poursafaei et al. | NPAM: NVM-aware page allocation for multi-core embedded systems | |
Xiao et al. | PASM: Parallelism Aware Space Management strategy for hybrid SSD towards in-storage DNN training acceleration | |
Umar et al. | Greenbst: Energy-efficient concurrent search tree | |
Du et al. | Optimization of data allocation on CMP embedded system with data migration | |
Zhan et al. | Branch-aware data variable allocation for energy optimization of hybrid SRAM+ NVM SPM☆ | |
CN106940682B (zh) | 一种基于片上可编程存储器的嵌入式系统优化方法 | |
Wang et al. | Packing narrow-width operands to improve energy efficiency of general-purpose GPU computing | |
Chen et al. | Unified-memory-based hybrid processing for partition-oriented subgraph matching on GPU | |
Zhang et al. | Improving the Performance of Lattice Boltzmann Method with Pipelined Algorithm on A Heterogeneous Multi-zone Processor | |
CN103246563B (zh) | 一种具有存储感知的多层分块调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151021 Termination date: 20160204 |