System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种DRAM行锤击实现方法技术_技高网

一种DRAM行锤击实现方法技术

技术编号:45021708 阅读:5 留言:0更新日期:2025-04-18 17:04
本发明专利技术提供一种DRAM行锤击实现方法,能在现实、实际的计算机平台上,快速、简易地触发行锤击错误。本发明专利技术包括如下步骤:(一)选取一内存区块;(二)确定N次读取两个大概率位于同一个内存模块但不同内存行的随机内存地址所需要的时钟数下限t<subgt;m</subgt;;(三)在内存区块内选择两个随机内存地址,并N次循环读取这两个随机内存地址,如果N次循环读取这两个随机内存地址的时钟数t大于t<subgt;m</subgt;,则进行行锤击测试;(四)通过查询虚拟地址到物理地址的映射表,将记录行锤击错误的地址值对转化为物理地址。

【技术实现步骤摘要】

本专利技术涉及一种dram行锤击实现方法。


技术介绍

1、dram是当前主流的内存存储器。每个dram存储单元包含一个晶体管和电容,大量的存储单元构成二维存储阵列,称为内存模块bank;内存模块bank是物理结构,每个内存模块bank包含大量横向的内存行row。读写数据时,目标数据所在的内存行row被激活后,存储单元导通,其中存储的数据被读取并加载到内存行缓冲器row buffer。在内存行缓冲器中完成数据读写,如果下一次要访问的目标数据不在当前内存行缓冲器中,则当前行缓冲器的数据写回到内存模块的原内存行,内存模块中的新内存行又被激活并读取加载到内存行缓冲器中。

2、随着dram存储单元尺寸的缩小,相邻的存储单元之间易干扰而导致数据位出错。当内存模块中的某个内存行因为读写而被高频地激活,由于耦合效应,就会对上下相邻的内存行存储单元产生扰动,使得个别存储单元中的值发生翻转,导致出现数据错误,成为行锤击错误。

3、行锤击错误的原理简单,但要在实际的系统上触发并捕捉到却存在相当的困难。由于各种底层体系结构的不透明,难以明确物理地址到内存行的映射关系,难以明确内存行之间的相邻关系。要测试dram的可靠性,并测试各种缓解行锤击的错误,首要就是能在现实、实际的计算机平台上,快速、简易地触发行锤击错误。


技术实现思路

1、本专利技术的目的在于克服现有技术中存在的上述不足,而提供一种dram行锤击实现方法,能在现实、实际的计算机平台上,快速、简易地触发行锤击错误。

<p>2、本专利技术解决上述问题所采用的技术方案是:一种基于x86架构的dram行锤击实现方法,其特征在于:包括如下步骤:

3、(一)选取一内存区块;

4、(二)确定n次读取两个大概率位于同一个内存模块但不同内存行的随机内存地址所需要的时钟数下限tm;

5、(三)在步骤(一)选取的内存区块内选择两个随机内存地址addr1和addr2,并n次循环读取这两个随机内存地址,如果n次循环读取这两个随机内存地址的时钟数t大于tm,则进行行锤击测试;

6、(四)行锤击测试的具体步骤包括:

7、对选择的两个随机内存地址进行行锤击,完毕后扫描所选定的内存区块,查看是否出现数据值翻转的情况;如果有,则记录数据值翻转所处的内存地址bfa,并且记录下地址值对(addr1,addr2,bfa);

8、(五)通过查询虚拟地址到物理地址的映射表,将记录行锤击错误的地址值对(addr1,addr2,bfa)转化为物理地址(paddr1,paddr2,pbfa),其中pbfa就是易发生行锤击错误的内存物理地址,而paddr1或者paddr2是其相邻内存行的物理地址。

9、本专利技术步骤(一)中,选取的内存区块大小为1g。

10、本专利技术步骤(一)中,将选取的内存区块的数据值全部初始化为1。

11、本专利技术步骤(二)中,每一次读取后立即刷新缓存,使得所述的两个随机内存地址在缓存中的数据备份无效,保证循环的每次迭代均从内存重新加载读取数据。

12、本专利技术步骤(三)包括如下过程:

13、(1)使用随机函数rand()生成随机内存地址;

14、(2)使用rdtsc指令获取当下的时钟数;

15、(3)利用rand函数获取两个随机内存地址addr1和addr2后,对这两个地址循环读取n次;

16、只需要在上述循环操作的前后运行rdtsc统计时钟数的指令,就可以获得起始时钟数和结束时钟数,然后结束时钟数减去起始时钟数就可以获取上述n次循环操作耗费的时钟数t;

17、(4)重复上述选取两个随机内存地址、循环n次读取数据及统计时钟数操作;获取m个时钟采样样本t1,t2,t3...tm;位于同一个内存模块但不同内存行的两个随机内存地址,由于内存行访问冲突,导致花费的时钟数远大于不位于同一内存模块的两个随机内存地址;找出m个样本的最大值tmax,并且时钟下限值tm设置为tmax-γ;其中的γ是经验参数,根据实际情况设定。

18、本专利技术步骤(四)中对选择的两个随机内存地址进行行锤击,即对选择的两个随机内存地址addr1和addr2进行循环k次的读取数据;每次读取后立即使用cflush指令刷新缓存,使得上述两个随机内存地址在缓存中的数据备份无效,保证下一次迭代从内存重新加载读取。

19、本专利技术出现数据值翻转的情况时,数据值由1翻转为0。

20、本专利技术步骤(五)的具体的步骤包括:

21、(1)获取当前操作系统的页大小page_size,打开linux操作系统的地址映射表/proc/self/pagemap文件,获取当前的页表信息,定位读取当前虚拟地址ptr对应的页条目;

22、(2)提取页框号,并根据页框号转化为物理地址;

23、(3)对于(addr1, addr2, bfa)三个虚拟地址分别使用上述步骤转化为对应的物理地址(paddr1,paddr2,pbfa)。

24、本专利技术步骤(三)中,如果t不大于tm,则重新选择两个新的随机内存地址,并重复本步骤。

25、本专利技术步骤(四)中,如果不存在翻转,则返回步骤(三)。

26、本专利技术与现有技术相比,具有以下优点和效果:1、本方法能在现实、实际的计算机平台上,快速、简易地触发行锤击错误;2、本方法可以快速上手,用户不需要对操作系统底层及硬件系统有精准的理解,只要足够的测试时间,就可以挖掘dram中易发生行锤击错误的数据位所在的地址,从而完成对dram可靠性的测试。

本文档来自技高网
...

【技术保护点】

1.一种DRAM行锤击实现方法,其特征在于:包括如下步骤:

2.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(一)中,选取的内存区块大小为1G。

3.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(一)中,将选取的内存区块的数据值全部初始化为1。

4.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(二)中,每一次读取后立即刷新缓存,使得所述的两个随机内存地址在缓存中的数据备份无效,保证循环的每次迭代均从内存重新加载读取数据。

5.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(三)包括如下过程:

6.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(四)中对选择的两个随机内存地址进行行锤击,即对选择的两个随机内存地址addr1和addr2进行循环K次的读取数据;每次读取后立即使用cflush指令刷新缓存,使得上述两个随机内存地址在缓存中的数据备份无效,保证下一次迭代从内存重新加载读取。

7.根据权利要求3所述的一种DRAM行锤击实现方法,其特征在于:出现数据值翻转的情况时,数据值由1翻转为0。

8.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(五)的具体的步骤包括:

9.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(三)中,如果t不大于tm,则重新选择两个新的随机内存地址,并重复本步骤。

10.根据权利要求1所述的一种DRAM行锤击实现方法,其特征在于:步骤(四)中,如果不存在翻转,则返回步骤(三)。

...

【技术特征摘要】

1.一种dram行锤击实现方法,其特征在于:包括如下步骤:

2.根据权利要求1所述的一种dram行锤击实现方法,其特征在于:步骤(一)中,选取的内存区块大小为1g。

3.根据权利要求1所述的一种dram行锤击实现方法,其特征在于:步骤(一)中,将选取的内存区块的数据值全部初始化为1。

4.根据权利要求1所述的一种dram行锤击实现方法,其特征在于:步骤(二)中,每一次读取后立即刷新缓存,使得所述的两个随机内存地址在缓存中的数据备份无效,保证循环的每次迭代均从内存重新加载读取数据。

5.根据权利要求1所述的一种dram行锤击实现方法,其特征在于:步骤(三)包括如下过程:

6.根据权利要求1所述的一种dram行锤击实现方法,其特征在于:步骤(四)中对选择的两个随机内...

【专利技术属性】
技术研发人员:章铁飞
申请(专利权)人:浙江工商大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1