RAM和DDR测试方法的原理与测试案例设计

上传人:e****s 文档编号:241653256 上传时间:2024-07-13 格式:PPT 页数:26 大小:85KB
返回 下载 相关 举报
RAM和DDR测试方法的原理与测试案例设计_第1页
第1页 / 共26页
RAM和DDR测试方法的原理与测试案例设计_第2页
第2页 / 共26页
RAM和DDR测试方法的原理与测试案例设计_第3页
第3页 / 共26页
点击查看更多>>
资源描述
RAM test method-Warrior Zhu目录目录lRAM模块根底知识lRAM测试的标准lMemtest86的思想lMemtest86的算法l测试工程的描述l测试程式的使用及注意点RAM模块根底知识模块根底知识l在正式讲RAM的测试方法之前,我们先了解一下RAM模块的根底知识,它对我们理解后面的测试原理局部非常有帮助。l当然关于RAM的知识还有很多,限于篇幅和讲课时间,我们只介绍对理解测试原理有用的局部,其余的可以到网上查找学习。RAM模块根底知识模块根底知识l在RAM的每一个根本存储单位都只能存储0或者1这样的数据,而CPU存取数据的时候是按照字节也就是8bit来存储的,那么RAM究竟如何满足CPU的这样的要求呢?l首先为了能存储1字节(8 bit)的信息,就需要8个1bit RAM根本存储单元堆叠在一起,这也意味着这8颗芯片被赋予了同样的地址。下面的示意图可以帮助你比较形象的了解这一点以下图所示的图例中仅仅画了4个存储单元,大家当成8个来看就可以了RAM模块根底知识模块根底知识l通常这8颗1bit芯片是通过地址总线和数据总线在PCB印刷电路板上连接而成的,对于CPU来说它就是一颗8bit的RAM芯片,而不再是独立的8个1 bit芯片。在上图所示的地址总线位宽是22bit,这样这个地址总线所能控制的存储模块的容量应该是222=4194304bit,也就是4MB的容量;数据总线的位宽是8bit,就是通过刚刚提到的8个1bit的根本存储单元的Dout并联在一起实现的这样也能够满足CPU的要求了。对于这种存储颗粒我们称之为4194304 x 8模块或者4Mx8,注意这里的“M不是“MByte而是“Mbit。RAM模块根底知识模块根底知识l关于关于Bank的问题的问题l前面我们讲述的都是前面我们讲述的都是8bit的内存,的内存,现在这种东西我们根本上都接触现在这种东西我们根本上都接触不到了,更常用的是不到了,更常用的是32bit、64bit或者或者128bit。由于前面我们。由于前面我们已经讲到了已经讲到了4Mx1bit模块实现模块实现bit输入输出的方法,所以我们很容输入输出的方法,所以我们很容易想到我们把足够多的芯片放在易想到我们把足够多的芯片放在一个模块中就可以了。不过在实一个模块中就可以了。不过在实际应用中,仅仅这样做还是不行际应用中,仅仅这样做还是不行的,这里就需要引入的,这里就需要引入bank的概念,的概念,bank是由多个模块组成的。请看是由多个模块组成的。请看右边的示意图:右边的示意图:RAM模块根底知识模块根底知识l上面的示意图显示的是由4组8bit模块组成的一个bank,如果构成模块的是4194304 x 1芯片,那么每个模块的架构应该是4194304x8(4MB),这样4个模块就能组成一个位宽为32bit的bank,容量为16MB。当存储数据的时候,第一模块存储字节1,第二个模块存储字节2,第三个模块存储字节3,第四个模块存储字节4,第五个模块存储字节5如此循环知道到达内存所能到达的最高容量 l到这里,我们应该能知道,当我们的系统使用这种类型的内存时,可以通过两种方式来增加这种类型内存的容量。第一种就是通过增加每一个独立模块的容量来增加bank的容量,另外一个方法就是增加bank的数目。这样如果让这种类型的内存的容量提升到32MB,可以把每个模块的容量从4MB提升到8MB或者增加bank的数目。RAM测试的标准测试的标准l对RAM的测试,业界有两大标准。l一、RSTRAM Stress Test,它由Ultra-X公司开发,主要用于RAM制造厂商测试。l二、Memtest86,它是一个开源组织GPL公布的。我们可以去它的网站(:/memtest.org/)了解详细信息。l其它的RAM测试程式或多或少的都带有这两者的印记。RAM测试的标准测试的标准l我们的RAM测试程式也是基于memtest86的标准开发的,所以下面我们着重介绍memtest86的标准。Memtest86的思想的思想l关于RAM测试的程式有很多,但大局部程式只是向RAM写入一个pattern再读出来检查而已,而没有考虑RAM的结构以及如何将错误侦测出来。这些程式很难发现RAM的间歇性错误intermittent errors。l基于RAM测试的BIOS功能,如果用来发现间歇性错误也是无效的。Memtest86的思想的思想lRAM由大量的排列整齐的memory cell组成,这些根本的cell对应着数据的bit位。l绝大多数的间歇性错误intermittent failures都是由memory cell之间的的交互作用interaction引起的,温度高的时候尤其明显。l所以,当向cell写入一个值时,邻近的cell经常被写成相同的值。Memtest86的思想的思想l一个有效的RAM测试应该试着去测试这个条件。l所以一个理想的RAM测试策略应该试着去下面的事情。write a cell with a zerowrite all of the adjacent cells with a one,one or more timescheck that the first cell still has a zeroMemtest86的算法的算法l为了到达上面讲的理想的RAM测试策略,Memtest86设计了两套算法。lMoving inversionslModulo-XMemtest86的算法的算法 -Moving inversionsl 1)Fill memory with a patternl 2)Starting at the lowest addressl2a check that the pattern has not changedl2b write the patterns complementl2c increment the addresslrepeat 2a-2cl 3)Starting at the highest addressl3a check that the pattern has not changedl3b write the patterns complementl3c decrement the addresslrepeat 3a-3cMemtest86的算法的算法 -Moving inversionsl这个算法已经很接近理想测试策略了,但它有一些局限性。l今天大局部的存储chip可以存储4-16bit的数据,这些chip不能一次只读或写一个bit的数据,我们就不能保证所有邻近cell都测试到了interaction,我们只能设计特殊的pattern来邻近的cell。Memtest86的算法的算法 -Moving inversionsl还有caching,buffering,以及指令的非顺序执行也会降低Moving inversions算法的有效性。l我们可以关闭cache,但高性能chip的buffer却没方法关闭。l于是就有了下面的算法Modulo-X。Memtest86的算法的算法 -Modulo-Xl 1)For starting offsets of 0-20 dol1a write every 20th location with a patternl1b write all other locations with the patterns complementl repeat 1b one or more timesl1c check every 20th location for the patternMemtest86的算法的算法 -Modulo-Xl这个算法和Moving inversions的邻近测试的水准很接近,但它不受cache和buffer的影响。l1a和1b分开,1c完成时,我们可以确保所有cache和buffer被清空。l选择20作为跳跃的点,是因为它是速度和完整性之间的一个折中点。测试工程的描述测试工程的描述l1.Address test,walking onesl2.Moving inversions,ones&zerosl3.Address test,own addressl4.Moving inversions,8 bit patternl5.Moving inversions,32 bit patternl6.Block move,64 movesl7.Modulo 20,ones&zerosl8.Moving inversions,0&1,uncached测试工程的描述测试工程的描述l1.Address test,walking onesl用填“1的方式快速测试每一个bank中测试所有地址位,只用于报告错误地址。l2.Moving inversions,ones&zeroslMoving inversions算法的直接展示,分别全部填入“0和“1测试两次。这时cache是翻开的,用于快速检查一些严重的错误。测试工程的描述测试工程的描述l3.Address test,own addressl向所有的地址位写入它自己的值,再读出来检查,用于检查第一项不能检查的寻址错误。l4.Moving inversions,8 bit patternl是对第二项测试的补充,填入8bit宽的pattern80h和7Fh,用于检查一些狡猾的宽度引起的错误。测试工程的描述测试工程的描述l5.Moving inversions,32 bit patternl对Moving inversions算法作了变更,写入每个连续的地址位中的pattern都会左移1位,每32位上下位作转换,同时每个循环pattern自己也在变化,这样就能很有效的检查每个cell的错误,当然这个测试耗的时间也很长。l6.Block move,64 movesl有点像RST,先用每8Byte倒置的pattern对RAM作初始化。然后以8MB为单位,将最下面的64bit8B移到最上面,剩余的8MB-8B数据整体向下移动64bit。检查两通道的RAM错误有奇效。这个工程完成后,RAM的温度会升得很高。测试工程的描述测试工程的描述l7.Modulo 20,ones&zerosl就是用Modulo-X算法来检查Moving inversions没方法发现的错误,分别填入“00000000h和“FFFFFFFFh,检查两次。l8.Moving inversions,0&1,uncachedl与第二项测试相同,只是将cache关了,但可以发现的错误大大增加了。测试程式的使用及注意点测试程式的使用及注意点lDOS环境下键入memtest/?得到帮助信息:lMemTest V2.10(C)2006 Arima Computer Corp,Ltd.lAuthor:Warrior ZhulUsage:MEMTEST/I=/L=/T=/F=l1.Address test,walking onesl2.Moving inversions,ones&zerosl3.Address test,own addressl4.Moving inversions,8 bit patternl5.Moving inversions,32 bit patternl6.Block move,64 movesl7.Modulo 20,ones&zerosl8.Moving inversions,0&1,uncachedlTest the memory above 1M,the upper bound is 4G.Return 1 if any error found.l/I=assign test item(1,2,3,4,5,6,7,8)l/L=assign loops between 1.65535l/T=force process to exit after elapsedl/F=assigned log filename测试程式的使用及注意点测试程式的使用及注意点l参数的注意点/I=参数次序颠倒的话,仍然是从低向高执行;参数重复,只算一次。/T=运行时间超过这个时间点就强行退出;运行时间不到这个时间点的话,这个参数就无效。l其他的参数,我想大家都能看明白。测试程式的使用及注意点测试程式的使用及注意点l运行时的注意点l不要加载任何内存管理类的程式,否那么无法正确测试。l不要运行时间和键盘类的TSR程式,因为此程式已将时钟和键盘中断替换了。l有个小秘密,程序运行时,可以按键退出。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!