RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt

上传人:b****9 文档编号:13881666 上传时间:2022-10-14 格式:PPT 页数:26 大小:299.50KB
下载 相关 举报
RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt_第1页
第1页 / 共26页
RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt_第2页
第2页 / 共26页
RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt_第3页
第3页 / 共26页
RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt_第4页
第4页 / 共26页
RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt

《RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt》由会员分享,可在线阅读,更多相关《RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt(26页珍藏版)》请在冰豆网上搜索。

RAM和DDR测试方法的原理与测试案例设计PPT资料.ppt

(对于这种存储颗粒我们称之为4194304x8模块或者4Mx8,注意这里的“M”不是“MByte”而是“Mbit”)。

RAM模块基础知识,关于Bank的问题前面我们讲述的都是8bit的内存,现在这种东西我们基本上都接触不到了,更常用的是32bit、64bit或者128bit。

由于前面我们已经讲到了4Mx1bit模块实现bit输入输出的方法,所以我们很容易想到我们把足够多的芯片放在一个模块中就可以了。

不过在实际应用中,仅仅这样做还是不行的,这里就需要引入bank的概念,bank是由多个模块组成的。

请看右边的示意图:

RAM模块基础知识,上面的示意图显示的是由4组8bit模块组成的一个bank,如果构成模块的是4194304x1芯片,那么每个模块的架构应该是4194304x8(4MB),这样4个模块就能组成一个位宽为32bit的bank,容量为16MB。

当存储数据的时候,第一模块存储字节1,第二个模块存储字节2,第三个模块存储字节3,第四个模块存储字节4,第五个模块存储字节5如此循环知道达到内存所能达到的最高容量到这里,我们应该能知道,当我们的系统使用这种类型的内存时,可以通过两种方式来增加这种类型内存的容量。

第一种就是通过增加每一个独立模块的容量来增加bank的容量,另外一个方法就是增加bank的数目。

这样如果让这种类型的内存的容量提升到32MB,可以把每个模块的容量从4MB提升到8MB或者增加bank的数目。

RAM测试的标准,对RAM的测试,业界有两大标准。

一、RST(RAMStressTest),它由Ultra-X公司开发,主要用于RAM制造厂商测试。

二、Memtest86,它是一个开源组织GPL公布的。

我们可以去它的网站(http:

/www.memtest.org/)了解详细信息。

其它的RAM测试程式或多或少的都带有这两者的印记。

RAM测试的标准,我们的RAM测试程式也是基于memtest86的标准开发的,所以下面我们着重介绍memtest86的标准。

Memtest86的思想,关于RAM测试的程式有很多,但大部分程式只是向RAM写入一个pattern再读出来检查而已,而没有考虑RAM的结构以及如何将错误侦测出来。

这些程式很难发现RAM的间歇性错误(intermittenterrors)。

基于RAM测试的BIOS功能,如果用来发现间歇性错误也是无效的。

Memtest86的思想,RAM由大量的排列整齐的memorycell组成,这些基本的cell对应着数据的bit位。

绝大多数的间歇性错误(intermittentfailures)都是由memorycell之间的的交互作用(interaction)引起的,温度高的时候尤其明显。

所以,当向cell写入一个值时,邻近的cell经常被写成相同的值。

Memtest86的思想,一个有效的RAM测试应该试着去测试这个条件。

所以一个理想的RAM测试策略应该试着去下面的事情。

writeacellwithazerowritealloftheadjacentcellswithaone,oneormoretimescheckthatthefirstcellstillhasazero,Memtest86的算法,为了达到上面讲的理想的RAM测试策略,Memtest86设计了两套算法。

MovinginversionsModulo-X,Memtest86的算法-Movinginversions,1)Fillmemorywithapattern2)Startingatthelowestaddress2acheckthatthepatternhasnotchanged2bwritethepatternscomplement2cincrementtheaddressrepeat2a-2c3)Startingatthehighestaddress3acheckthatthepatternhasnotchanged3bwritethepatternscomplement3cdecrementtheaddressrepeat3a-3c,Memtest86的算法-Movinginversions,这个算法已经很接近理想测试策略了,但它有一些局限性。

今天大部分的存储chip可以存储4-16bit的数据,这些chip不能一次只读或写一个bit的数据,我们就不能保证所有邻近cell都测试到了interaction,我们只能设计特殊的pattern来邻近的cell。

Memtest86的算法-Movinginversions,还有caching,buffering,以及指令的非顺序执行也会降低Movinginversions算法的有效性。

我们可以关闭cache,但高性能chip的buffer却没办法关闭。

于是就有了下面的算法Modulo-X。

Memtest86的算法-Modulo-X,1)Forstartingoffsetsof0-20do1awriteevery20thlocationwithapattern1bwriteallotherlocationswiththepatternscomplementrepeat1boneormoretimes1ccheckevery20thlocationforthepattern,Memtest86的算法-Modulo-X,这个算法和Movinginversions的邻近测试的水准很接近,但它不受cache和buffer的影响。

1a和1b分开,1c完成时,我们可以确保所有cache和buffer被清空。

选择20作为跳跃的点,是因为它是速度和完整性之间的一个折中点。

测试项目的描述,1.Addresstest,walkingones2.Movinginversions,ones&

zeros3.Addresstest,ownaddress4.Movinginversions,8bitpattern5.Movinginversions,32bitpattern6.Blockmove,64moves7.Modulo20,ones&

zeros8.Movinginversions,0&

1,uncached,测试项目的描述,1.Addresstest,walkingones用填“1”的方式快速测试每一个bank中测试所有地址位,只用于报告错误地址。

2.Movinginversions,ones&

zerosMovinginversions算法的直接展示,分别全部填入“0”和“1”测试两次。

这时cache是打开的,用于快速检查一些严重的错误。

测试项目的描述,3.Addresstest,ownaddress向所有的地址位写入它自己的值,再读出来检查,用于检查第一项不能检查的寻址错误。

4.Movinginversions,8bitpattern是对第二项测试的补充,填入8bit宽的pattern(80h和7Fh),用于检查一些狡猾的宽度引起的错误。

测试项目的描述,5.Movinginversions,32bitpattern对Movinginversions算法作了变更,写入每个连续的地址位中的pattern都会左移1位,每32位高低位作转换,同时每个循环pattern自己也在变化,这样就能很有效的检查每个cell的错误,当然这个测试耗的时间也很长。

6.Blockmove,64moves有点像RST,先用每8Byte倒置的pattern对RAM作初始化。

然后以8MB为单位,将最下面的64bit(8B)移到最上面,剩余的8MB-8B数据整体向下移动64bit。

检查两通道的RAM错误有奇效。

这个项目完成后,RAM的温度会升得很高。

测试项目的描述,7.Modulo20,ones&

zeros就是用Modulo-X算法来检查Movinginversions没办法发现的错误,分别填入“00000000h”和“FFFFFFFFh”,检查两次。

8.Movinginversions,0&

1,uncached与第二项测试相同,只是将cache关了,但可以发现的错误大大增加了。

测试程式的使用及注意点,DOS环境下键入memtest/?

得到帮助信息:

MemTestV2.10(C)2006ArimaComputerCorp,Ltd.Author:

WarriorZhuUsage:

MEMTEST/I=/L=/T=/F=1.Addresstest,walkingones2.Movinginversions,ones&

1,uncachedTestthememoryabove1M,theupperboundis4G.Return1ifanyerrorfound./I=assigntestitem(1,2,3,4,5,6,7,8)/L=assignloopsbetween1.65535/T=forceprocesstoexitafterelapsed/F=assignedlogfilename,测试程式的使用及注意点,参数的注意点/I=参数次序颠倒的话,仍然是从低向高执行;

参数重复,只算一次。

/T=运行时间超过这个时间点就强行退出;

运行时间不到这个时间点的话,这个参数就无效。

其他的参数,我想大家都能看明白。

测试程式的使用及注意点,运行时的注意点不要加载任何内存管理类的程式,否则无法正确测试。

不要运行时间和键盘类的TSR程式,因为此程式已将时钟和键盘中断替换了。

有个小秘密,程序运行时,可以按键退出。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1