




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向非规则数据的差别预取策略
1基于访存流模型的数据预取技术由于处理器和存储设备之间的速度差,存储墙问题一直是制约处理器性能的重要因素。由于存储墙问题的存在,cpu的操作能力由于等待内存数据而浪费,因此现代计算机系统中强大的处理器性能难以充分利用。数据预取技术是解决存储墙问题的重要研究领域之一.基于访存流模型的数据预取技术作为传统数据预取技术的扩展方案,是隐藏非规则数据访存延迟的常用实现方案.当前国内外基于访存流模型的数据预取技术的研究才刚刚起步,还存在很多不足之处:对存储空间划分区域后再构造时空局部性模型,容易把访存地址规律而间距大的访存行为划分为很多不同的访存区域,增加了模式及其识别的复杂度;对导致Cache访问失效的指令等同看待,只是部分地重构了访存流;对程序的所有Cache访问失效数据进行分析,一方面浪费了空间资源,另一方面有些随机的Cache访问失效会对主要关注数据造成不必要的干扰.因此,如何根据非规则计算的特性,基于访存流构建面向复杂数据结构的通用的、高效的预取模型,是本文研究的重点.2程序对地址序列的访问具有非连续局部性高速缓存Cache和数据预取技术之所以起到隐藏访存延迟的作用是因为程序运行时对存储器数据的访问具有局部性特征,局部用到的数据存放在缓存中,提高了缓存命中率.定义1时间局部性(TemporalLocality).指程序在运行时刚刚被访问过的数据很快又被访问到.当程序需要访问的数据不在Cache中时,就把相应的内容从内存取到Cache行中,这样在下一次访问它时就不会发生缓存失效了.定义2空间局部性(SpatialLocality).指在访问内存中一块数据后的极短时间段内,内存中与其邻接的一块内容也会被访问到.如果在访问内存中的一个数据块时,顺带把与其邻接的数据块也取到Cache中,这样在不久访问邻接数据块时就不会发生缓存失效了.定义3连续局部性(ContinuousLocality).时间局部性和空间局部性都是指运行程序在极短时间段内的数据访问局部性特征,因此,又称它们为连续局部性.定义4非连续局部性(DiscontinuousLocality).指程序在运行时,由于函数被重复调用,存在被重复访问的数据访问序列.如果在该数据访问序列被重复访问之前,利用数据预取技术把该数据访问序列要访问的数据提前取到Cache中,这样在该数据访问序列被重复访问时就不会发生缓存失效了.图1中显示的数据访问局部性特征示例说明了时间局部性、空间局部性和非连续局部性的区别.图1中,An表示的是访存地址,左边的地址序列Seq1={A1,A2,A7,A5,A3,A1,A2,A4,A6,A8}是程序运行过程中某一时间段的顺序访存流,右边的地址序列{A1,A2,A3,A4},{A5,A6}和{A7,A8}是该时间段内访问数据的几个连续存储空间.根据定义1,A1,A2是很短时间内被重复访问的数据地址,如果第一次访问A1,A2时发生了Cache失效,需要从内存中读取A1,A2的数据,则当下一次访问A1,A2的数据时,就可以直接从Cache而不需访问内存了.因此,程序对数据地址A1,A2的访问具有时间局部性特征.同样地,根据定义2,{A1,A2,A3,A4},{A5,A6}和{A7,A8}在内存中属于邻接的数据块,如果在访问其中一个数据块时(如A7)发生了Cache失效,需要从内存中读取数据(如A7),则当不久访问邻接数据块(如A8)时就不会发生缓存失效了.因此,程序对地址序列{A1,A2,A3,A4},{A5,A6}和{A7,A8}的访问具有空间局部性特征.最后,假如数据访问地址序列Seq1在程序运行过程中多次重复出现,当第一次访问Seq1时暂时把这个序列保存起来,则第二次访问Seq1时,利用数据预取技术提前把Seq1中的数据取回到Cache中,这样就避免了第二次访问Seq1的Cache失效.因此,程序对地址序列Seq1的访问具有非连续局部性特征.3差别化预取对象的选择基于访存流模型的数据预取技术是隐藏非规则数据访存延迟的有效措施.然而,已有的基于访存流模型的数据预取技术不是忽略了访存流中的时间顺序,就是忽略了各访存指令访存行为间的差别,造成由过早预取行为引起的缓存污染或由过晚预取行为引起的无效预取.因此,建立能反映时间顺序和行为差别的访存流模型对数据预取的有效性来说至关重要.为了保证差别预取策略的有效性,节约系统资源,本文选择位于程序关键执行路径上的,且其频繁缓存失效行为严重影响程序性能的热点循环作为差别预取对象.为了选择合适的差别预取对象,本文在应用差别预取策略前先使用动态剖析工具分析测试程序,并在频繁发生缓存失效行为的热点循环入口处做标记,当程序运行到标记处时启动差别预取策略.3.1访存指令的预取和预取本文采用与文献中类似的索引表IndexTable和全局历史表GlobalHistoryBuffer存储程序运行过程中热点循环的数据访问信息,如图2所示.其中,An,Bn,Cn和Dn分别表示与四条访存指令PC_A,PC_B,PC_C和PC_D对应的访存信息.由于程序热点循环中访存指令的执行顺序相似,如PC_A,PC_B,PC_C和PC_A,PC_B,PC_D,因此,与文献中的IndexTable不同,本文的IndexTable表中直接按热点循环中访存指令的执行顺序保存各指令的访存流信息,而无须额外的字段保存访存指令的执行顺序.另外,为了根据其访存行为特性区别对待各访存指令的预取操作,本文在文献中的GlobalHistoryBuffer基础上又增加了一个NextInterval字段,用来保存各访存指令相邻两次访存之间的距离.例如,PC_A指令在访问完A1后,要间隔B1,C1,D1这3个访存操作后才再次访问A2;PC_D指令在访问完D3后,要间隔A1,B1,C1,这3个访存操作后才再次访问D1(这里假设GlobalHistoryBuffer中保存的是某单次热点循环的数据访问信息,且下次循环的指令执行顺序相同),因此,A1和D3相对应的NextInterval字段的值都是3.IndexTable表和GlobalHistoryBuffer表的更新机制如下:①当程序执行到热点循环入口处时,初始化IndexTable表和GlobalHistoryBuffer表,即按执行顺序把第一次热点循环的访存指令保存到IndexTable表中,按数据访问顺序把相应的数据地址保存到GlobalHistoryBuffer表中,并依次更新NextInterval字段的值.②当单次热点循环的访存指令顺序没有发生改变时,只需更新GlobalHistoryBuffer表中的地址信息.③当单次热点循环的访存指令顺序改变但没有增加新的访存指令时,更新GlobalHistoryBuffer表中的地址信息和NextInterval字段值,并修改IndexTable表中相应指针的值.④当单次热点循环的访存指令顺序改变且增加新的访存指令时,重新初始化IndexTable表和GlobalHistoryBuffer表.3.2基于les的访存指令差别预取操作的执行过程如下:(1)根据当前访存指令索引IndexTable表,找到下一条访存指令和该指令的上一个访存地址;(2)根据GlobalHistoryBuffer表追溯下一条访存指令的访存地址信息,确定该访存指令的预取度,并按NextInterval字段值确定预取间隔;(3)把下一条访存指令作为当前指令,重复步骤(1)和(2),直至到达IndexTable表末尾.例如在图2中,当前访存指令是PC_D,当前访存地址是D3,则首先索引IndexTable表找到下一条访存指令是PC_A和它的上一个访存地址A3;接着,根据GlobalHistoryBuffer表追溯PC_A的访存地址信息A1-A2-A3,确定PC_A的预取度为3,并按NextInterval字段值确定A1-A2-A3之间的预取间隔分别为3和1;然后,按同样的方式处理PC_B和PC_C,确定PC_B和PC_C的预取度为1,不需考虑预取间隔,但因为上一条指令PC_A中A1-A2的预取间隔为3,所以PC_A,PC_B和PC_C处理后预取操作序列为{A1,B1,C2,A2,A3},且C2-A2与A2-A3之间分别还可插入一个预取操作;最后,同样道理处理PC_D,得到最后的预取操作序列为{A1,B1,C2,D1,A2,D2,A3}.这里A1,A2,B1,B2,D1,D2的值泛指各访存指令在单次热点循环中不同的访存信息,具体值可根据情况确定,如使用步长、关联信息等计算得到的访存地址.从差别预取操作的执行过程可以看出,差别预取策略不仅可以根据非规则计算的特性,把非连续局部性转换为连续局部性来提高缓存命中率,而且还根据各访存指令相邻两次访存之间的距离调整预取度,达到及时预取和消除无用预取的目的.4差别预取实验结果为了本文提出的差别预取策略的有效性,我们对测试程序的热点循环模拟实现了差别预取策略和文献提出的StreamChaining预取策略.实验中差别预取策略GlobalHistoryBuffer表中的地址信息为关联地址信息.StreamChaining预取策略中Ctr字段的阈值设置为3(即相邻访存指令重复出现超过3次时,认为这两个指令是一对强连接,并把此强连接加入到MissGraph中),预取度设为2.本文实验采用的是SimpleScalar3.0模拟器,模拟器的配置如表1所示.IndexTable表的大小是2KB,在差别预取策略中可以存储256条记录,在StreamChaining预取策略中可以存储128条记录;GlobalHistoryBuffer表的大小是8kB,在差别预取策略中可以存储256条记录,在StreamChaining预取策略中可以存储512条记录.本文根据在线剖析工具对Olden基准测试程序的分析结果,从中选择热点循环所消耗的CPU时钟周期数占总时钟周期数20%以上的5个非规则数据密集应用程序作为测试程序.这5个程序分别是:em3d,mst,tsp,gcc和health.本文中所有的应用程序都使用GCC4.1编译器进行编译,编译选项为“-O2”.实验结果如图3和图4所示.图3中显示了相对于源程序,应用差别预取和StreamChaining预取后测试程序L2Cache失效次数的规范化数值.从图3中可以看出,差别预取消除了各测试程序热点循环中80%以上的L2Cache失效行为,而StreamChaining预取消除了各测试程序热点循环中70%以上的L2Cache失效行为.除TSP和GCC外,其它程序在应用差别预取后的L2Cache失效次数都比在应用StreamChaining预取后时少.例如,MST在应用差别预取后,其L2Cache失效次数减少了约82.2%,而在应用StreamChaining预取后,只减少了约79.7%.这主要是由两个原因造成的.首先,差别预取策略根据访存指令的行为差别采取不同预取度,减少了无用预取,提高了预取及时性和缓存命中率.其次,差别预取根据访存指令相邻两次访存之间的距离确定预取间隔,避免了过早预取引起的无用预取和缓存污染,进一步提高了缓存命中率.图4中显示了相对于源程序,应用差别预取和StreamChaining预取后测试程序的CPI规范化数值.从图4中可以看出,在应用差别预取和StreamChaining预取后,测试程序的CPI都有所降低,差别预取比StreamChaining预取取得了更加明显的效果.尤其对于源热点循环所消耗的CPU时钟周期数占总时钟周期数70%以上的MST,TSP和HEALTH这3个测试程序来说,应用StreamChaining预取后,其CPI降低了25%以上;而应用差别预取后,其CPI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课文主题研讨:古诗文赏析:山水田园诗选高一语文
- 学习雷锋做好学生写人作文(13篇)
- 一碳化合物中试平台建设的市场需求与发展趋势分析
- 高校会计核算创新路径与业财融合模式探讨
- 2025年音乐表演专业考试试卷及答案
- 2025年医药营销与管理考试试卷及答案
- 2025年外语教学专业考试试卷及答案
- 2025年企业战略管理硕士入学考试试题及答案
- 2025年旅游经济与管理课程测试卷及答案
- 2025年计算机编程与算法基础测试题及答案
- 贵州国企招聘2025贵州省粮食储备集团有限公司招聘76人笔试参考题库附带答案详解析集合
- 3D打印食品安全标准-洞察及研究
- 广东省深圳市福田区2023-2024学年一年级下学期语文期末试卷(含答案)
- 2024-2025学年湘教版七年级数学下册期末素养测试卷(二)含答案
- DB31/T 1204-2020标准先进性评价通用要求
- 2025年中国半球谐振陀螺仪行业市场前景预测及投资价值评估分析报告
- 《奇异空间》课件 -2024-2025学年湘美版(2024)初中美术七年级下册
- 产品创新设计与实践完整版课件全套ppt教学教程电子教案讲义最全(最新)
- 汉字起源和发展
- 试运行方案计划-
- 规范学校中层机构和干部管理办法
评论
0/150
提交评论