版权归原作者所有,如有侵权,请联系我们

[科普中国]-内存测试

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

内存测试的需求来源

作为计算机不可缺少的一部分,内存性能的好坏对整个计算机系统有着极其重要的影响,随着电子技术的不断革新,计算机CPU的性能、总线带宽和主频不断提高,而CPU所需的处理数据是直接从内存中获取的,为了匹配CPU的运行速率,不让CPU长时间处于等待状态,造成硬件资源浪费,就需要内存不断更新换代,不断提高工作速度和存储容量。

随着内存条的不断更新换代,高性能的内存已经成为存储器发展的主流,然而随着内存颗粒容量的增大,单元密度增加,生产制造工艺越来越复杂,生产出的内存产品良率明显下降。因此,必须对内存条进行故障检测,测试的意义:一方面判断DDR2及DDR3 SDRAM内存条产品质量的好坏;另一方面对计算机内存系统的设计也很关键,内存条质量的好坏直接影响到内存系统的稳定性和可靠性。只有一个性能优良的DDR2 SDRAM或DDR3 SDRAM内存条才能使服务器、PC等各种高速系统工作正常[。由此可见对DDR2及DDR3 SDRAM内存的故障测试是极其重要的。

内存测试方法的发展趋势随着DDR2和DDR3 SDRAM的广泛应用,方便快捷的检测内存系统成为了行业需求,内存在生产过程中经历了很多次检测,这些检测包括:焊接检测、PCB外观检测、功能检测和整体外观检测。焊接检测是在内存基本成型时利用X光线检测WLCSP(晶圆级芯片封装)或BGA(球珊阵列结构)封装的内存颗粒的锡球;PCB外观检测是人工以目测方式在放大镜下进行;功能检测的测试内容有容量、数据存取、SPD信息等;整体外观检测是对内存的整体外观进行的最后一次检测。这样就完成了内存出厂前的整个测试工序,当然不同的厂家在功能测试方面采用的方法不同。

现在内存厂商,大多采用内存自动测试设备(Automated Test Equipment, ATE)对内存条进行测试1,目前运用最多的是Advantest测试系统。例如在内存市场一直有较好声誉的宇瞻(Apacer),就是通过最高端的Advantest测试系统进行检测。除了Advantest测试系统以外,还有Keysight的V5500测试系统,它们都是检测SDRAM芯片或内存条的性能和质量的设备。ATE测试设备测试项目包括交、直流参数测试及功能测试。其中的功能测试是对SDRAM芯片的读、写及数据保持等功能的检测,可以通过改变数据读、写的寻址顺序以及数据图案信息来检测这些功能是否正确。

目前高档的ATE测试设备有:Verigy公司的93K系统、Advantest公司的T5581/T5585/T5592系统以及KINGTIGER公司的KT-2APR0系统。这些测试系统的特点为:测试速度快;测试精度高;具有完整的时序、电性能和功能测试及分析;供专业的厂商使用;购买价格昂贵。以Advantest公司生产的T5592为例,该测试系统能够对各种专用存储器进行测试,最高可达到1.066GHz的测试频率,最大可测64颗存储芯片,同时还对存储器的驱动口与双向口分开测试进行了专门的设计,降低测试成本。

除了ATE测试设备测试内存以外,还有一些软件工具能够测试内存,如RST ( Ram Stress Test)内存测试软件,RST是美国Ultra-X公司的一个维修级系统检测工具,此检测工具是专门给内存生产厂商使用的,RST在目前内存生产业使用非常普遍,因为此工具能检测出内存出现的大部分问题,所以是非常好用的一个测试工具,同时此测试软件与x86系列计算机相匹配,只要BIOS系统能识别的内存容量它都能检测,但是只能检测DDR内存;如果要检测DDR2内存,需要“微软内存检测工具”,此测试工具对内存有6项测试方法,每项都有其独特的测试算法来测试内存故障,但是一般情况下,一项测试就能检测出内存是否有故障四。

另外还有一款优秀的基于Linux核心的内存测试软件Memtest86,该软件对内存故障的检测准确率较高,其测试不仅仅局限于检测内存条的好与坏,还能检测出内存的隐性问题以及内存和系统的稳定性。

与此同时,板载BIOS固化的内存测试程序、以及基于ISA或PCI总线的内存测试卡也可对内存进行测试,但这几种测试方法的缺点是需计算机主板芯片组支持,且必须要在能点亮的情况下才能进行测试。

基于嵌入式的软件内存测试研究嵌入式软件内存测试的背景软件内存测试2是提高软件质量的一个重要手段,据统计,国外软件开发机构40%的工作量花在软件测试上,软件开发费用的近1/2用于软件测试。对于一些要求高可靠、高安全的软件,如核反应监控软件、航天软件,测试费用可能相当于软件工程其它费用总和的3-5倍。

嵌入式软件和一般的应用软件测试相比,具有自身的特点(特别是对于没有操作系统的嵌入式应用软件而言):

1)嵌入式软件是在特定的硬件环境下才能运行的软件。因此,嵌入式软件测试最重要的目的就是保证嵌入式软件能在其特定的硬件环境下更可靠地运行。

2)嵌入式软件测试除了要保证嵌入式软件在特定硬件环境中运行的高可靠性,还要保证嵌入式软件的实时性。比如在工业控制中,如果某些特定环境下的嵌入式软件不具备实时响应的能力,就可能造成巨大的损失。

3)嵌入式软件产品为了满足高可靠性的要求,不允许内存在运行时有泄漏等情况发生,因此嵌入式软件测试除了对软件进行性能测试、GUI测试、覆盖分析测试之外,还需要对内存进行测试。

内存测试需要测试软件中的内存越界访问、内存资源泄漏情况。内存越界主要包括数组越界读写、“野指针操作”和堆栈溢出等几种。内存资源泄漏情况则包含较多的种类,如分配的内存没有释放、打开的文件没有关闭、socket没有关闭、Windows窗口句柄没有关闭等。内存越界和内存资源泄漏是普遍存在的严重问题,可以说如果解决了内存越界和内存资源泄漏问题,软件中的Bug就消除了一大半以上。

内存测试还需要测试软件的最大内存等资源的占用率,防止软件使用的资源超出系统的限制。同时还需要测试系统资源在极端情况下的软件行为如系统内存资源被别的应用程序消耗时程序长时间运行后的情况等。

传统软件内存测试技术限制传统软件内存测试技术分为静态测试和动态测试。

静态测试可以检查软件代码的编程规范,分析程序的静态结构,对软件进行质量度量(如Testbed等)。借助于静态测试技术,可以使代码更加规范,结构更加清晰,但不能分析各个变量之间的关系,当程序动态运行时,可能出现的运行时错误不能检查出来。因此,传统测试时静态测试要和动态测试结合起来做。但动态测试具有太大的人为因素,导致动态测试不可能达到完全测试,只能达到测试用例覆盖的程度,保证测试过的用例输入不会出问题。同时,动态测试发现的问题仅局限于现象,测试人员提交BUG后,开发人员还需要对BUG进行重现并使用调试工具对BUG进行定位,这需要一定的时间。尤其对于偶出现的问题,需要更多的时间去调试、定位。

PolySpace的语义分析技术PolySpace使用的是目前最新的语义分析技术,它依靠大量的数学定理提供的规则去分析软件的动态行为。语义分析技术没有使用简单的穷举法,却有能力在更普通的模式下去表达程序的状态,还能提供规则巧妙的去处理它。当应用在运行时错误的检测时,语义分析技术会对所有危险的操作,执行一个详细的分析,尽早发现其中的运行时错误。

语义分析检查包括如下几个方面:

1)类型检查。如果操作符作用于不相容的操作数,编译程序必须报告出错信息。

2)控制流检查。控制流语句必须使控制转移到合法的地方。例如,在C语言中break语句使控制跳离包括该语句的最小while ,for或switch语句。如果不存在包括它的这样的语句,则应报错。

3)一致性检查。在很多场合要求对象只能被定义一次。

4)相关名字检查。有时,同一名字必须出现两次或多次,此时必须要检查这几个地方用的名字是相同的。

5)作用域分析。对元素的作用域分析,确保元素使用不出现问题。