一种内存测试方法及设备.pdf

上传人:le****a 文档编号:5258276 上传时间:2018-12-30 格式:PDF 页数:12 大小:546.02KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210416948.6

申请日:

2012.10.26

公开号:

CN102930903A

公开日:

2013.02.13

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G11C 29/56申请日:20121026|||公开

IPC分类号:

G11C29/56

主分类号:

G11C29/56

申请人:

华为技术有限公司

发明人:

宋东匡; 李龙壮; 游相斌

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

广州三环专利代理有限公司 44202

代理人:

郝传鑫;熊永强

PDF下载: PDF下载
内容摘要

本发明公开了一种内存测试方法及设备,该方法包括:执行内存测试程序对第一部分内存进行测试,并在所述第一部分内存测试完毕之后重启设备,其中,所述执行内存测试程序对所述第一部分内存进行测试时,所述第一部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在第二部分内存中;所述设备重启后,执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第一部分内存中。本发明能够实现快速全覆盖的内存测试。

权利要求书

权利要求书一种内存测试方法,其特征在于,所述内存被划分成第一部分内存和第二部分内存,所述方法包括:
执行内存测试程序对所述第一部分内存进行测试,并在所述第一部分内存测试完毕之后重启设备,其中,所述执行内存测试程序对所述第一部分内存进行测试时,所述第一部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第二部分内存中;
所述设备重启后,执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第一部分内存中。
根据权利要求1所述的方法,其特征在于,所述执行内存测试程序对所述第一部分内存进行测试包括:
所述内存测试程序获取所述第一部分内存的地址和长度,并根据所述第一部分内存的地址和长度对所述第一部分内存进行测试。
根据权利要求1所述的方法,其特征在于,执行所述内存测试程序对所述第二部分内存进行测试包括:
所述内存测试程序获取所述第二部分内存的地址和长度,并根据所述第二部分内存的地址和长度对所述第二部分内存进行测试。
根据权利要求1所述的方法,其特征在于,若所述执行内存测试程序对所述第一部分内存进行测试时出现异常,则停止执行所述内存测试程序并重启设备,从而执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留。
一种内存测试设备,其特征在于,包括存储器,处理器,输入单元,输出单元,所述存储器包括内存,所述内存被划分成第一部分内存和第二部分内存,所述处理器用于执行以下操作:
执行内存测试程序对所述第一部分内存进行测试,并在所述第一部分内存测试完毕之后重启设备,其中,所述执行内存测试程序对所述第一部分内存进行测试时,所述第一部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第二部分内存中;
所述设备重启后,执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第一部分内存中。
根据权利要求5所述的设备,其特征在于,所述执行内存测试程序对第一部分内存进行测试包括:
所述内存测试程序获取所述第一部分内存的地址和长度,并根据所述第一部分内存的地址和长度对所述第一部分内存进行测试。
根据权利要求5所述的设备,其特征在于,所述执行所述内存测试程序对所述第二部分内存进行测试包括:
所述内存测试程序获取所述第二部分内存的地址和长度,并根据所述第二部分内存的地址和长度对所述第二部分内存进行测试。
根据权利要求5所述的设备,其特征在于,若所述执行内存测试程序对第一部分内存进行测试时出现异常,则停止执行所述内存测试程序并重启设备,从而执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留。

说明书

说明书一种内存测试方法及设备
技术领域
本发明涉及计算机领域,具体涉及一种内存测试方法及设备。
背景技术
内存是计算机最重要的部件之一,计算机中所有程序的运行都是在内存中进行的。鉴于内存的重要性,计算机运行过程中必须要保证内存可靠,因此内存测试是必不可少的。目前,常见的内存测试方法主要有两种:
一是在操作系统(Operation system,OS)中执行内存测试程序测试内存。内存测试必须要改写内存中的数据,如果内存已经在使用,测试过程中修改已使用部分的内存将导致不可预知的后果,因此,内存测试一般在内存被使用前进行。但由于OS运行在内存中,OS本身会占用部分的内存,因此即使在内存被使用前进行测试,这种测试方法也无法实现内存的全覆盖测试。
另一种测试方法是在基本输入输出系统(Basic Input Output System,BIOS)中执行内存测试程序测试内存。这种测试方法在系统开机后内存使用前进行内存测试,此时代码尚未在内存中(还在ROM中),因此能够实现内存的全覆盖测试,但由于代码在ROM中运行,执行性能远低于在内存中运行,测试时间长。随着技术的不断发展,内存容量越来越大,这种测试方法测试速度慢,运行效率低的缺点将更加突出。
发明内容
本发明所要解决的技术问题是提供一种内存测试方法及设备,用于解决现有技术内存测试无法实现全覆盖测试,测试速度慢,运行效率低的问题。
本申请第一方面提供一种内存测试方法,所述内存被划分成第一部分内存和第二部分内存,所述方法包括:
执行内存测试程序对所述第一部分内存进行测试,并在所述第一部分内存测试完毕之后重启设备,其中,所述执行内存测试程序对所述第一部分内存进行测试时,所述第一部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第二部分内存中;
所述设备重启后,执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第一部分内存中。
在本申请第一方面的第一种可能的实现方式中,所述执行内存测试程序对所述第一部分内存进行测试包括:
所述内存测试程序获取所述第一部分内存的地址和长度,并根据所述第一部分内存的地址和长度对所述第一部分内存进行测试。
在本申请第一方面的第二种可能的实现方式中,执行所述内存测试程序对所述第二部分内存进行测试包括:
所述内存测试程序获取所述第二部分内存的地址和长度,并根据所述第二部分内存的地址和长度对所述第二部分内存进行测试。
在本申请第一方面的第三种可能的实现方式中,若所述执行内存测试程序对所述第一部分内存进行测试时出现异常,则停止执行所述内存测试程序并重启设备,从而执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留。
本申请第二方面提供一种内存测试设备,包括存储器,处理器,输入单元,输出单元,所述存储器包括内存,所述内存被划分成第一部分内存和第二部分内存,所述处理器用于执行以下操作:
执行内存测试程序对所述第一部分内存进行测试,并在所述第一部分内存测试完毕之后重启设备,其中,所述执行内存测试程序对所述第一部分内存进行测试时,所述第一部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第二部分内存中;
所述设备重启后,执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留,所述内存测试程序运行在所述第一部分内存中。
在本申请第二方面的第一种可能的实现方式中,所述执行内存测试程序对第一部分内存进行测试包括:
所述内存测试程序获取所述第一部分内存的地址和长度,并根据所述第一部分内存的地址和长度对所述第一部分内存进行测试。
在本申请第二方面的第二种可能的实现方式中,执行所述内存测试程序对所述第二部分内存进行测试包括:
所述内存测试程序获取所述第二部分内存的地址和长度,并根据所述第二部分内存的地址和长度对所述第二部分内存进行测试。
在本申请第二方面的第三种可能的实现方式中,若所述执行内存测试程序对第一部分内存进行测试时出现异常,则停止执行所述内存测试程序并重启设备,从而执行所述内存测试程序对所述第二部分内存进行测试,其中,所述执行所述内存测试程序对所述第二部分内存进行测试时,所述第二部分内存的属性在BIOS程序执行阶段被设置为保留。
本申请系统开机后首先将内存分成两部分,并将第一部分内存的属性设置为保留,第二部分内存的属性设置为可用,然后对保留部分内存进行测试;对第一部分内存的测试完成后重启设备,设备重启后系统再次对内存进行与上次的划分区域相同的划分,区别在于将上次可用的第二部分内存的属性设置为保留,上次保留的第一部分内存属性设置为可用,然后再次执行内存测试程序对保留部分内存进行测试。通过这种方法能够实现内存的全覆盖测试,而且由于内存测试程序的代码是在内存中运行的,测试速度快、代码的运行效率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请第一实施例提供的一种内存测试方法的流程图;
图2是本申请第二实施例提供的一种内存测试方法的流程图;
图3是本申请第三实施例提供的一种内存测试装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中计算机开机后,BIOS开始运行,此时BIOS运行在ROM中,BIOS会按流程完成基本硬件初始化,再完成内存初始化,内存初始化完成后,内存就可以被软件读写了。为了避免内存使用混乱而导致问题,BIOS中有专门的内存管理程序,根据内存的不同属性来区分管理内存,后续程序都通过内存管理程序来申请、释放内存。BIOS在完成内存初始化后会对内存进行分块并对每块设置属性,提供给内存管理程序使用。
请参考图1,图1是本申请第一实施例提供的一种内存测试方法的流程图,包括:
S101、执行内存测试程序对第一部分内存进行测试,并在第一部分内存测试完毕之后重启设备,其中,执行内存测试程序对第一部分内存进行测试时,第一部分内存的属性在BIOS程序执行阶段被设置为保留,内存测试程序运行在第二部分内存中。
S102、设备重启后,OS执行内存测试程序对第二部分内存进行测试,其中,OS执行内存测试程序对第二部分内存进行测试时,第二部分内存的属性在BIOS程序执行阶段被设置为保留,内存测试程序运行在第一部分内存中。
在BIOS对内存进行分块并对每块设置属性阶段,BIOS将内存分为两部分,包括第一部分内存和第二部分内存,这两部分内存可以是均等划分,也可以是不均等划分,本实施例优选均等的划分方式。
当设备(这里的设备指计算机或者其它开机时需要进行内存测试的设备)开机时BIOS首次对内存进行划分,并将第一部分内存的属性设置为保留,第二部分内存的属性设置为可用。BIOS按常规方式对第二部分内存进行分块并对每块设置属性,从而提供给内存管理程序使用。接下来BIOS会在第二部分内存中运行,OS也运行在第二部分内存中,进行内存测试时,可以由BIOS运行内存测试程序对第一部分内存进行测试。由于第一部分内存的属性设置为保留时程序不会加载到这部分内部中,BIOS可以安全地对该部分内存进行测试。BIOS执行内存测试程序首先对第一部分内存进行测试,并在第一部分内存测试完毕之后重启设备,如步骤S101中描述。设备重启后会再次运行到BIOS对内存进行分块并对每块设置属性阶段,这时BIOS再次对内存进行划分,内存区域的划分与首次划分一样,区别在于这次划分是将第二部分内存的属性设置为保留,将第一部分内存的属性设置为可用,BIOS按常规方式对第一部分内存进行分块并对每块设置属性,从而提供给内存管理程序使用。接下来BIOS会在第一部分内存中运行,OS也运行在第一部分内存中,BIOS执行内存测试程序对第二部分内存进行测试。由于此时第二部分内存的属性被设置为保留,程序不会加载到这部分内部中,BIOS可以安全地对该部分内存进行测试,如步骤S102中描述。通过执行两次内存测试,分别对第一部分内存和第二部分内存进行测试可以实现全覆盖的测试内存的目的。
其中,执行内存测试程序对第一部分内存进行测试时,先获取第一部分内存的地址和长度,然后根据第一部分内存的地址和长度对第一部分内存进行测试。执行内存测试程序对第二部分内存进行测试时,先获取第二部分内存的地址和长度,然后根据第二部分内存的地址和长度对第二部分内存进行测试。
其中,如果在对第一部分内存进行测试时出现异常,则说明第二部分内存问题可能存在问题,此时停止执行当前的内存测试程序并重启设备,从而使BIOS重新运行到对内存进行分块并对每块设置属性的阶段,将可能存在问题的第二部分内存的属性设备为保留,并对第二部分内存进行测试,达到快速无遗漏的测试效果。
本实施例中设备开机后首先将内存分成两部分,并将第一部分内存的属性设置为保留,第二部分内存的属性设置为可用,然后对保留部分内存进行测试;对第一部分内存的测试完成后重启设备,设备重启后系统再次对内存进行与上次的划分区域相同的划分,区别在于将上次可用的第二部分内存的属性设置为保留,上次保留的第一部分内存属性设置为可用,然后再次执行内存测试程序对保留部分内存进行测试。通过这种方法能够实现内存的全覆盖测试,而且由于内存测试程序的代码是在内存中运行的,测试速度快、代码的运行效率高。
请参考图2,图2是本申请第二实施例提供的一种内存测试方法的流程图,包括:
S201、开机。
S202、内存初始化。
S203、将内存划分为第一部分内存和第二部分内存。
S204、判断内存区域标志是否为待切换。
S205、将第一部分内存属性设置为保留,将第二部分内存的属性设置为可用。若步骤S204中内存区域标志不是待切换,则BIOS将第一部分内存属性设置为保留,将第二部分内存的属性设置为可用。
S206、修改内存区域标志为待切换。
S207、代码加载到第二部分内存。此时第二部分内存的属性为可用,BIOS按常规方式对第二部分内存进行分块并对每块设置属性,从而提供给内存管理程序使用。BIOS和OS会运行在第二部分内存,接下来BIOS会执行内存测试程序首先对第一部分内存进行测试。
S208、将第二部分内存属性设置为保留,将第一部分内存的属性设置为可用。若步骤S204中内存区域标志为待切换,则BIOS将第二部分内存属性设置为保留,将第一部分内存的属性设置为可用。
S209、修改内存区域标志为已切换。
S210、代码加载到第一部分内存。此时第一部分内存的属性为可用,BIOS按常规方式对第一部分内存进行分块并对每块设置属性,从而提供给内存管理程序使用。BIOS和OS会运行在第一部分内存,接下来BIOS会执行内存测试程序对第二部分内存进行测试。
S211、执行内存测试。对内存属性为保留的那部分内存进行内存测试。其中,内存测试可以为单线程也可以为多线程。
S212、判断内存区域标志是否为已切换。
S213、重启设备。若内存区域标志不是已切换,则重启设备,从而可以对内存重新划分并重新设置属性,以将原来未进行测试的第二部分内存设置为保留,从而对其进行测试,实现全覆盖测试的目的。
S214、输出内存测试结果。
本实施例通过两次内存测试,实现了内存的全覆盖测试,中间重启等过程自动完成,用户无感知且无需参与,真正实现了快速全覆盖的内存测试。以Intel SandyBridge–EP(2.1GHz,8核)CPU,三星DDR3‑1333(ECC)内存条,4通道插满为例,比较BIOS中用现有技术和本实施例方法的内存测试效率(指写一遍内存的速度,与内存测试算法无关),当测试程序在ROM中执行时(参考背景技术中描述),其速率是0.18GB/s;当测试程序在内存中执行时(本实施例方法),单核执行内存测试,速率是6.5GB/s,多核(7个)同时执行内存测试,速率是16.4GB/s。
请参考图3,图3是本申请第三实施例提供的一种内存测试装置的结构图,包括:存储器301、处理器302、输入单元303、输出单元304,其中,存储器301中包括内存,内存被划分成第一部分内存和第二部分内存,处理器302执行以下操作:
执行内存测试程序对第一部分内存进行测试,并在第一部分内存测试完毕之后重启设备,其中,执行内存测试程序对第一部分内存进行测试时,第一部分内存的属性在BIOS程序执行阶段被设置为保留,内存测试程序运行在第二部分内存中;
设备重启后,执行内存测试程序对第二部分内存进行测试,其中,执行内存测试程序对第二部分内存进行测试时,第二部分内存的属性在BIOS程序执行阶段被设置为保留,内存测试程序运行在第一部分内存中。
其中,执行内存测试程序对第一部分内存进行测试时,内存测试程序获取第一部分内存的地址和长度,并根据第一部分内存的地址和长度对第一部分内存进行测试。执行内存测试程序对第二部分内存进行测试时,内存测试程序获取第二部分内存的地址和长度,并根据第二部分内存的地址和长度对第二部分内存进行测试。
其中,若执行内存测试程序对第一部分内存进行测试时出现异常,则停止执行内存测试程序并重启设备,从而执行内存测试程序对第二部分内存进行测试,其中,执行内存测试程序对第二部分内存进行测试时,第二部分内存的属性被设置为保留。
本实施例中设备开机后首先将内存分成两部分,并将第一部分内存的属性设置为保留,第二部分内存的属性设置为可用,然后对保留部分内存进行测试;对第一部分内存的测试完成后重启设备,设备重启后系统再次对内存进行与上次的划分区域相同的划分,区别在于将上次可用的第二部分内存的属性设置为保留,上次保留的第一部分内存属性设置为可用,然后再次执行内存测试程序对保留部分内存进行测试。通过这种方法能够实现内存的全覆盖测试,而且由于内存测试程序的代码是在内存中运行的,测试速度快、代码的运行效率高。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存取存储器(Random Access Memory,简称RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

一种内存测试方法及设备.pdf_第1页
第1页 / 共12页
一种内存测试方法及设备.pdf_第2页
第2页 / 共12页
一种内存测试方法及设备.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《一种内存测试方法及设备.pdf》由会员分享,可在线阅读,更多相关《一种内存测试方法及设备.pdf(12页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102930903 A (43)申请公布日 2013.02.13 CN 102930903 A *CN102930903A* (21)申请号 201210416948.6 (22)申请日 2012.10.26 G11C 29/56(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 (72)发明人 宋东匡 李龙壮 游相斌 (74)专利代理机构 广州三环专利代理有限公司 44202 代理人 郝传鑫 熊永强 (54) 发明名称 一种内存测试方法及设备 (57) 摘要 本发明公开了一种内存测试方法及设备, 该 方法。

2、包括 : 执行内存测试程序对第一部分内存进 行测试, 并在所述第一部分内存测试完毕之后重 启设备, 其中, 所述执行内存测试程序对所述第一 部分内存进行测试时, 所述第一部分内存的属性 在 BIOS 程序执行阶段被设置为保留, 所述内存 测试程序运行在第二部分内存中 ; 所述设备重启 后, 执行所述内存测试程序对所述第二部分内存 进行测试, 其中, 所述执行所述内存测试程序对所 述第二部分内存进行测试时, 所述第二部分内存 的属性在 BIOS 程序执行阶段被设置为保留, 所述 内存测试程序运行在所述第一部分内存中。本发 明能够实现快速全覆盖的内存测试。 (51)Int.Cl. 权利要求书 2 。

3、页 说明书 6 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 6 页 附图 3 页 1/2 页 2 1. 一种内存测试方法, 其特征在于, 所述内存被划分成第一部分内存和第二部分内存, 所述方法包括 : 执行内存测试程序对所述第一部分内存进行测试, 并在所述第一部分内存测试完毕之 后重启设备, 其中, 所述执行内存测试程序对所述第一部分内存进行测试时, 所述第一部分 内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第二部分 内存中 ; 所述设备重启后, 执行所述内存测试程序对所述第二部分内存进行测试, 其。

4、中, 所述执 行所述内存测试程序对所述第二部分内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第一部分内存中。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述执行内存测试程序对所述第一部分 内存进行测试包括 : 所述内存测试程序获取所述第一部分内存的地址和长度, 并根据所述第一部分内存的 地址和长度对所述第一部分内存进行测试。 3. 根据权利要求 1 所述的方法, 其特征在于, 执行所述内存测试程序对所述第二部分 内存进行测试包括 : 所述内存测试程序获取所述第二部分内存的地址和长度, 并根据所述第二部分内存的 地址和长度对。

5、所述第二部分内存进行测试。 4. 根据权利要求 1 所述的方法, 其特征在于, 若所述执行内存测试程序对所述第一部 分内存进行测试时出现异常, 则停止执行所述内存测试程序并重启设备, 从而执行所述内 存测试程序对所述第二部分内存进行测试, 其中, 所述执行内存测试程序对所述第二部分 内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留。 5. 一种内存测试设备, 其特征在于, 包括存储器, 处理器, 输入单元, 输出单元, 所述存 储器包括内存, 所述内存被划分成第一部分内存和第二部分内存, 所述处理器用于执行以 下操作 : 执行内存测试程序对所述第一部分内存进行测试。

6、, 并在所述第一部分内存测试完毕之 后重启设备, 其中, 所述执行内存测试程序对所述第一部分内存进行测试时, 所述第一部分 内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第二部分 内存中 ; 所述设备重启后, 执行所述内存测试程序对所述第二部分内存进行测试, 其中, 所述执 行所述内存测试程序对所述第二部分内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第一部分内存中。 6. 根据权利要求 5 所述的设备, 其特征在于, 所述执行内存测试程序对第一部分内存 进行测试包括 : 所述内存测试程序获取所述第一。

7、部分内存的地址和长度, 并根据所述第一部分内存的 地址和长度对所述第一部分内存进行测试。 7. 根据权利要求 5 所述的设备, 其特征在于, 所述执行所述内存测试程序对所述第二 部分内存进行测试包括 : 所述内存测试程序获取所述第二部分内存的地址和长度, 并根据所述第二部分内存的 地址和长度对所述第二部分内存进行测试。 权 利 要 求 书 CN 102930903 A 2 2/2 页 3 8. 根据权利要求 5 所述的设备, 其特征在于, 若所述执行内存测试程序对第一部分内 存进行测试时出现异常, 则停止执行所述内存测试程序并重启设备, 从而执行所述内存测 试程序对所述第二部分内存进行测试, 。

8、其中, 所述执行所述内存测试程序对所述第二部分 内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留。 权 利 要 求 书 CN 102930903 A 3 1/6 页 4 一种内存测试方法及设备 技术领域 0001 本发明涉及计算机领域, 具体涉及一种内存测试方法及设备。 背景技术 0002 内存是计算机最重要的部件之一, 计算机中所有程序的运行都是在内存中进行 的。 鉴于内存的重要性, 计算机运行过程中必须要保证内存可靠, 因此内存测试是必不可少 的。目前, 常见的内存测试方法主要有两种 : 0003 一是在操作系统 (Operation system, OS) 。

9、中执行内存测试程序测试内存。内存测 试必须要改写内存中的数据, 如果内存已经在使用, 测试过程中修改已使用部分的内存将 导致不可预知的后果, 因此, 内存测试一般在内存被使用前进行。但由于 OS 运行在内存中, OS 本身会占用部分的内存, 因此即使在内存被使用前进行测试, 这种测试方法也无法实现 内存的全覆盖测试。 0004 另一种测试方法是在基本输入输出系统 (Basic Input Output System, BIOS) 中 执行内存测试程序测试内存。这种测试方法在系统开机后内存使用前进行内存测试, 此时 代码尚未在内存中 (还在 ROM 中) , 因此能够实现内存的全覆盖测试, 但由。

10、于代码在 ROM 中运 行, 执行性能远低于在内存中运行, 测试时间长。 随着技术的不断发展, 内存容量越来越大, 这种测试方法测试速度慢, 运行效率低的缺点将更加突出。 发明内容 0005 本发明所要解决的技术问题是提供一种内存测试方法及设备, 用于解决现有技术 内存测试无法实现全覆盖测试, 测试速度慢, 运行效率低的问题。 0006 本申请第一方面提供一种内存测试方法, 所述内存被划分成第一部分内存和第二 部分内存, 所述方法包括 : 0007 执行内存测试程序对所述第一部分内存进行测试, 并在所述第一部分内存测试完 毕之后重启设备, 其中, 所述执行内存测试程序对所述第一部分内存进行测试。

11、时, 所述第一 部分内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第二 部分内存中 ; 0008 所述设备重启后, 执行所述内存测试程序对所述第二部分内存进行测试, 其中, 所 述执行所述内存测试程序对所述第二部分内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第一部分内存中。 0009 在本申请第一方面的第一种可能的实现方式中, 所述执行内存测试程序对所述第 一部分内存进行测试包括 : 0010 所述内存测试程序获取所述第一部分内存的地址和长度, 并根据所述第一部分内 存的地址和长度对所述第一部分内存。

12、进行测试。 0011 在本申请第一方面的第二种可能的实现方式中, 执行所述内存测试程序对所述第 二部分内存进行测试包括 : 说 明 书 CN 102930903 A 4 2/6 页 5 0012 所述内存测试程序获取所述第二部分内存的地址和长度, 并根据所述第二部分内 存的地址和长度对所述第二部分内存进行测试。 0013 在本申请第一方面的第三种可能的实现方式中, 若所述执行内存测试程序对所述 第一部分内存进行测试时出现异常, 则停止执行所述内存测试程序并重启设备, 从而执行 所述内存测试程序对所述第二部分内存进行测试, 其中, 所述执行内存测试程序对所述第 二部分内存进行测试时, 所述第二部。

13、分内存的属性在 BIOS 程序执行阶段被设置为保留。 0014 本申请第二方面提供一种内存测试设备, 包括存储器, 处理器, 输入单元, 输出单 元, 所述存储器包括内存, 所述内存被划分成第一部分内存和第二部分内存, 所述处理器用 于执行以下操作 : 0015 执行内存测试程序对所述第一部分内存进行测试, 并在所述第一部分内存测试完 毕之后重启设备, 其中, 所述执行内存测试程序对所述第一部分内存进行测试时, 所述第一 部分内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第二 部分内存中 ; 0016 所述设备重启后, 执行所述内存测试程序对所述第二部分内存进行。

14、测试, 其中, 所 述执行所述内存测试程序对所述第二部分内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留, 所述内存测试程序运行在所述第一部分内存中。 0017 在本申请第二方面的第一种可能的实现方式中, 所述执行内存测试程序对第一部 分内存进行测试包括 : 0018 所述内存测试程序获取所述第一部分内存的地址和长度, 并根据所述第一部分内 存的地址和长度对所述第一部分内存进行测试。 0019 在本申请第二方面的第二种可能的实现方式中, 执行所述内存测试程序对所述第 二部分内存进行测试包括 : 0020 所述内存测试程序获取所述第二部分内存的地址和长度, 并根据所。

15、述第二部分内 存的地址和长度对所述第二部分内存进行测试。 0021 在本申请第二方面的第三种可能的实现方式中, 若所述执行内存测试程序对第一 部分内存进行测试时出现异常, 则停止执行所述内存测试程序并重启设备, 从而执行所述 内存测试程序对所述第二部分内存进行测试, 其中, 所述执行所述内存测试程序对所述第 二部分内存进行测试时, 所述第二部分内存的属性在 BIOS 程序执行阶段被设置为保留。 0022 本申请系统开机后首先将内存分成两部分, 并将第一部分内存的属性设置为保 留, 第二部分内存的属性设置为可用, 然后对保留部分内存进行测试 ; 对第一部分内存的测 试完成后重启设备, 设备重启后。

16、系统再次对内存进行与上次的划分区域相同的划分, 区别 在于将上次可用的第二部分内存的属性设置为保留, 上次保留的第一部分内存属性设置为 可用, 然后再次执行内存测试程序对保留部分内存进行测试。通过这种方法能够实现内存 的全覆盖测试, 而且由于内存测试程序的代码是在内存中运行的, 测试速度快、 代码的运行 效率高。 附图说明 0023 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 说 明 书 CN 102930903 A 5 3/6 页 6 发明的一些实施例, 对于本领域普通技术人员来。

17、讲, 在不付出创造性劳动的前提下, 还可以 根据这些附图获得其他的附图。 0024 图 1 是本申请第一实施例提供的一种内存测试方法的流程图 ; 0025 图 2 是本申请第二实施例提供的一种内存测试方法的流程图 ; 0026 图 3 是本申请第三实施例提供的一种内存测试装置的结构图。 具体实施方式 0027 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 002。

18、8 现有技术中计算机开机后, BIOS 开始运行, 此时 BIOS 运行在 ROM 中, BIOS 会按 流程完成基本硬件初始化, 再完成内存初始化, 内存初始化完成后, 内存就可以被软件读写 了。为了避免内存使用混乱而导致问题, BIOS 中有专门的内存管理程序, 根据内存的不同 属性来区分管理内存, 后续程序都通过内存管理程序来申请、 释放内存。 BIOS在完成内存初 始化后会对内存进行分块并对每块设置属性, 提供给内存管理程序使用。 0029 请参考图 1, 图 1 是本申请第一实施例提供的一种内存测试方法的流程图, 包括 : 0030 S101、 执行内存测试程序对第一部分内存进行测试。

19、, 并在第一部分内存测试完毕 之后重启设备, 其中, 执行内存测试程序对第一部分内存进行测试时, 第一部分内存的属性 在 BIOS 程序执行阶段被设置为保留, 内存测试程序运行在第二部分内存中。 0031 S102、 设备重启后, OS 执行内存测试程序对第二部分内存进行测试, 其中, OS 执行 内存测试程序对第二部分内存进行测试时, 第二部分内存的属性在 BIOS 程序执行阶段被 设置为保留, 内存测试程序运行在第一部分内存中。 0032 在 BIOS 对内存进行分块并对每块设置属性阶段, BIOS 将内存分为两部分, 包括第 一部分内存和第二部分内存, 这两部分内存可以是均等划分, 也可。

20、以是不均等划分, 本实施 例优选均等的划分方式。 0033 当设备 (这里的设备指计算机或者其它开机时需要进行内存测试的设备) 开机时 BIOS 首次对内存进行划分, 并将第一部分内存的属性设置为保留, 第二部分内存的属性设 置为可用。BIOS 按常规方式对第二部分内存进行分块并对每块设置属性, 从而提供给内存 管理程序使用。接下来 BIOS 会在第二部分内存中运行, OS 也运行在第二部分内存中, 进行 内存测试时, 可以由 BIOS 运行内存测试程序对第一部分内存进行测试。由于第一部分内存 的属性设置为保留时程序不会加载到这部分内部中, BIOS 可以安全地对该部分内存进行测 试。BIOS。

21、 执行内存测试程序首先对第一部分内存进行测试, 并在第一部分内存测试完毕之 后重启设备, 如步骤 S101 中描述。设备重启后会再次运行到 BIOS 对内存进行分块并对每 块设置属性阶段, 这时 BIOS 再次对内存进行划分, 内存区域的划分与首次划分一样, 区别 在于这次划分是将第二部分内存的属性设置为保留, 将第一部分内存的属性设置为可用, BIOS 按常规方式对第一部分内存进行分块并对每块设置属性, 从而提供给内存管理程序使 用。接下来 BIOS 会在第一部分内存中运行, OS 也运行在第一部分内存中, BIOS 执行内存测 试程序对第二部分内存进行测试。由于此时第二部分内存的属性被设置。

22、为保留, 程序不会 说 明 书 CN 102930903 A 6 4/6 页 7 加载到这部分内部中, BIOS 可以安全地对该部分内存进行测试, 如步骤 S102 中描述。通过 执行两次内存测试, 分别对第一部分内存和第二部分内存进行测试可以实现全覆盖的测试 内存的目的。 0034 其中, 执行内存测试程序对第一部分内存进行测试时, 先获取第一部分内存的地 址和长度, 然后根据第一部分内存的地址和长度对第一部分内存进行测试。执行内存测试 程序对第二部分内存进行测试时, 先获取第二部分内存的地址和长度, 然后根据第二部分 内存的地址和长度对第二部分内存进行测试。 0035 其中, 如果在对第一。

23、部分内存进行测试时出现异常, 则说明第二部分内存问题可 能存在问题, 此时停止执行当前的内存测试程序并重启设备, 从而使 BIOS 重新运行到对 内存进行分块并对每块设置属性的阶段, 将可能存在问题的第二部分内存的属性设备为保 留, 并对第二部分内存进行测试, 达到快速无遗漏的测试效果。 0036 本实施例中设备开机后首先将内存分成两部分, 并将第一部分内存的属性设置为 保留, 第二部分内存的属性设置为可用, 然后对保留部分内存进行测试 ; 对第一部分内存的 测试完成后重启设备, 设备重启后系统再次对内存进行与上次的划分区域相同的划分, 区 别在于将上次可用的第二部分内存的属性设置为保留, 上。

24、次保留的第一部分内存属性设置 为可用, 然后再次执行内存测试程序对保留部分内存进行测试。通过这种方法能够实现内 存的全覆盖测试, 而且由于内存测试程序的代码是在内存中运行的, 测试速度快、 代码的运 行效率高。 0037 请参考图 2, 图 2 是本申请第二实施例提供的一种内存测试方法的流程图, 包括 : 0038 S201、 开机。 0039 S202、 内存初始化。 0040 S203、 将内存划分为第一部分内存和第二部分内存。 0041 S204、 判断内存区域标志是否为待切换。 0042 S205、 将第一部分内存属性设置为保留, 将第二部分内存的属性设置为可用。 若步 骤S204中内。

25、存区域标志不是待切换, 则BIOS将第一部分内存属性设置为保留, 将第二部分 内存的属性设置为可用。 0043 S206、 修改内存区域标志为待切换。 0044 S207、 代码加载到第二部分内存。 此时第二部分内存的属性为可用, BIOS按常规方 式对第二部分内存进行分块并对每块设置属性, 从而提供给内存管理程序使用。BIOS 和 OS 会运行在第二部分内存, 接下来 BIOS 会执行内存测试程序首先对第一部分内存进行测试。 0045 S208、 将第二部分内存属性设置为保留, 将第一部分内存的属性设置为可用。 若步 骤S204中内存区域标志为待切换, 则BIOS将第二部分内存属性设置为保留。

26、, 将第一部分内 存的属性设置为可用。 0046 S209、 修改内存区域标志为已切换。 0047 S210、 代码加载到第一部分内存。此时第一部分内存的属性为可用, BIOS 按常规 方式对第一部分内存进行分块并对每块设置属性, 从而提供给内存管理程序使用。BIOS 和 OS 会运行在第一部分内存, 接下来 BIOS 会执行内存测试程序对第二部分内存进行测试。 0048 S211、 执行内存测试。对内存属性为保留的那部分内存进行内存测试。其中, 内存 测试可以为单线程也可以为多线程。 说 明 书 CN 102930903 A 7 5/6 页 8 0049 S212、 判断内存区域标志是否为已。

27、切换。 0050 S213、 重启设备。若内存区域标志不是已切换, 则重启设备, 从而可以对内存重新 划分并重新设置属性, 以将原来未进行测试的第二部分内存设置为保留, 从而对其进行测 试, 实现全覆盖测试的目的。 0051 S214、 输出内存测试结果。 0052 本实施例通过两次内存测试, 实现了内存的全覆盖测试, 中间重启等过程自动完 成, 用户无感知且无需参与, 真正实现了快速全覆盖的内存测试。以 Intel SandyBridge EP(2.1GHz, 8核)CPU, 三星DDR3-1333(ECC)内存条, 4通道插满为例, 比较BIOS中用现有技 术和本实施例方法的内存测试效率 。

28、(指写一遍内存的速度, 与内存测试算法无关) , 当测试 程序在 ROM 中执行时 (参考背景技术中描述) , 其速率是 0.18GB/s ; 当测试程序在内存中执 行时 (本实施例方法) , 单核执行内存测试, 速率是 6.5GB/s, 多核 (7 个) 同时执行内存测试, 速率是 16.4GB/s。 0053 请参考图 3, 图 3 是本申请第三实施例提供的一种内存测试装置的结构图, 包括 : 存储器 301、 处理器 302、 输入单元 303、 输出单元 304, 其中, 存储器 301 中包括内存, 内存被 划分成第一部分内存和第二部分内存, 处理器 302 执行以下操作 : 005。

29、4 执行内存测试程序对第一部分内存进行测试, 并在第一部分内存测试完毕之后重 启设备, 其中, 执行内存测试程序对第一部分内存进行测试时, 第一部分内存的属性在 BIOS 程序执行阶段被设置为保留, 内存测试程序运行在第二部分内存中 ; 0055 设备重启后, 执行内存测试程序对第二部分内存进行测试, 其中, 执行内存测试程 序对第二部分内存进行测试时, 第二部分内存的属性在 BIOS 程序执行阶段被设置为保留, 内存测试程序运行在第一部分内存中。 0056 其中, 执行内存测试程序对第一部分内存进行测试时, 内存测试程序获取第一部 分内存的地址和长度, 并根据第一部分内存的地址和长度对第一部。

30、分内存进行测试。执 行内存测试程序对第二部分内存进行测试时, 内存测试程序获取第二部分内存的地址和长 度, 并根据第二部分内存的地址和长度对第二部分内存进行测试。 0057 其中, 若执行内存测试程序对第一部分内存进行测试时出现异常, 则停止执行内 存测试程序并重启设备, 从而执行内存测试程序对第二部分内存进行测试, 其中, 执行内存 测试程序对第二部分内存进行测试时, 第二部分内存的属性被设置为保留。 0058 本实施例中设备开机后首先将内存分成两部分, 并将第一部分内存的属性设置为 保留, 第二部分内存的属性设置为可用, 然后对保留部分内存进行测试 ; 对第一部分内存的 测试完成后重启设备。

31、, 设备重启后系统再次对内存进行与上次的划分区域相同的划分, 区 别在于将上次可用的第二部分内存的属性设置为保留, 上次保留的第一部分内存属性设置 为可用, 然后再次执行内存测试程序对保留部分内存进行测试。通过这种方法能够实现内 存的全覆盖测试, 而且由于内存测试程序的代码是在内存中运行的, 测试速度快、 代码的运 行效率高。 0059 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以 通过计算机程序来指令相关的硬件来完成, 所述的程序可存储于一计算机可读取存储介质 中, 该程序在执行时, 可包括如上述各方法的实施例的流程。其中, 所述的存储介质可为磁 碟、 光盘、 只。

32、读存储记忆体 (Read-Only Memory, ROM) 或随机存取存储器 (Random Access 说 明 书 CN 102930903 A 8 6/6 页 9 Memory, 简称 RAM) 等。 0060 以上所揭露的仅为本发明较佳实施例而已, 当然不能以此来限定本发明之权利范 围, 因此依本发明权利要求所作的等同变化, 仍属本发明所涵盖的范围。 说 明 书 CN 102930903 A 9 1/3 页 10 图 1 说 明 书 附 图 CN 102930903 A 10 2/3 页 11 图 2 说 明 书 附 图 CN 102930903 A 11 3/3 页 12 图 3 说 明 书 附 图 CN 102930903 A 12 。

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

当前位置:首页 > 物理 > 信息存储


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1