专利名称::计算机设备的制作方法
技术领域:
:本申请讨论的实施例涉及一种计算机设备以及一种诊断存储器的方法。
背景技术:
:计算机设备使用许多种类的诊断测试来诊断每个内置装置的缺陷部分。作为计算机设备的一个例子,公开了一种诊断工具,其运行存储器诊断测试程序来诊断内置存储器中的存储功能是否正常工作,例如是否可以正常地从存储器读出预定数据、向存储器正常写入预定数据。例如参见日本特开专利公开号H6-4413。在最简单的诊断测试中,存储器诊断程序被预先存储在计算机设备的基本输入/输出系统(BIOS)的一部分中。当计算机设备启动时,存储器诊断程序与BIOS—起运行。然而,BIOS通常具有非常有限的存储能力,其中存储了如初始程序装入程序(initialprogramloaderIPL)之类的另一程序。因此,BIOS仅能包含简单的存储器诊断程序。因此,在传统的计算机设备中,在运行BIOS且启动操作系统之后,用于执行复杂存储器检查的存储器诊断程序通常被操作系统(OS)加载到如随机存取存储器(RAM)类的主存储器中并被执行。顺便提一下,只有在主存储器的所有地址中没有发现故障时,传统的计算机才能工作正常。但是即使通过预先检查主存储器发现了主存储器中有一些故障区,目前还是期望有一种不使用故障区而能正常运行的新型计算机设备。为了当在主存储器中存在故障区的情况下仍正常运行计算机设备,就需要在操作系统启动之前对故障区进行检测。但是,BI0S中存储的存储器诊断程序不能执行使OS能够正常工作的存储器诊断。在这种情况下可以考虑如下的技术。传统上由OS处理的复杂存储器诊断程序被存储在除BIOS之外的存储器中,如存储在只读存储器(ROM)中。同时,在主存储器的预定地址加载复杂存储器诊断程序的加载程序被存储在BIOS中。这使计算机设备在引导(bootup)时能够启动复杂的存储器诊断程序。然而,该结构会导致出现这种情形,即在存储器诊断之前,存储器诊断程序被加载到主存储器中。也就是说,存储器诊断程序被加载到主存储器中的时候,并不知道加载了存储器诊断程序的主存储器的区域是否是有故障的。因此,存在存储器诊断程序本身无法被执行的可能性。
发明内容根据本发明的一个方面,一种具有主存储器的计算机设备包括第一存储器诊断单元,用于通过执行第一存储器诊断程序来确定所述主存储器中的故障区;存储单元,用于存储可重定位的第二存储器诊断程序;以及第二存储器诊断单元,用于将所述第二存储器诊断程序加载到所述主存储器中除了由所述第一存储器诊断单元确定的所述故障区之外的区域中。根据本发明的另一个方面,一种诊断计算机设备中的主存储器的方法,包括以下步骤通过执行第一存储器诊断程序来确定所述主存储器中的故障区;以及将第二存储器诊断程序加载到所述主存储器中除了通过确定故障区的步骤而确定的故障区之外的其它区域中。根据本发明的再一个方面,一种计算机可读存储介质,其中存储有用来诊断计算机设备中的主存储器的计算机程序,所述计算机程序使得所述计算机设备执行以下步骤:通过执行第一存储器诊断程序来确定所述主存储器中的故障区;以及将第二存储器诊断程序加载到所述主存储器中除了通过确定故障区的步骤确定的故障区之外的区域中。本发明在未确定主存储器是否包含故障区的情况下,不必将存储器诊断程序加载到主存储器中。这样可避免不能正常执行存储器诊断程序的情况。因此,简化了无故障区和故障区的确定,实现了高效的存储器诊断处理。借助权利要求中具体指出的元件及组合可实现和达到本发明的目的和优点。应该理解,前述概括性描述和下文的详细描述都是示例性及解释性的,不是对本发明保护范围加以限制。图1是示出根据本发明实施例的计算机设备的结构的方框图;图2是示出图1的动态随机存取存储器(DRAM)的细节;图3是示出图1的BIOS程序的细节的功能框图;图4A是在已经执行存储器诊断程序32a之后的存储器品质评估表(memory-qualityevaluationtable)5图4B是示出当将存储器诊断程序32b加载DRAM中时DRAM上的分配区;图4C是在已经执行存储器诊断程序32b之后的存储器品质评估表;图4D是示出当将存储器诊断程序32c加载DRAM中时DRAM上的分配区;图4E是在已经执行存储器诊断程序32c之后的存储器品质评估表;图4F示出通过对DRAM进行诊断得出的结果;以及图5是示出根据本发明实施例的计算机设备执行的存储器诊断处理的步骤流程图。具体实施例方式将参考附图对本发明的优选实施例进行解释。下面描述根据一实施例的计算机设备的特征。计算机设备包括主存储器;第一存储器诊断单元,其通过执行第一存储器诊断程序来识别出主存储器的故障区或缺陷区;存储单元,其存储可重定位的第二存储器诊断程序;以及第二存储器诊断单元,其将存储在存储单元中的第二存储器诊断程序加载到除由第一主存储器诊断单元识别出的主存储器缺陷区之外的其它区域(称为"非故障"或"非缺陷"区)中,并执行该第二存储器诊断程序。也就是说,根据该实施例的计算机设备通过执行多个存储器诊断程序来对计算机设备中诸如动态随机存取存储器(DRAM)等主存储器进行诊断。具体而言,计算机设备中诸如只读存储器(ROM)等存储单元预先存储有多个不同的存储器诊断程序。第一存储器诊断单元通过运行多个存储器诊断程序中的第一存储器诊断程序来对主存储器进行诊断。多个存储器诊断程序各自诊断不同的存储功能,并根据存储功能的诊断级别具有不同的程序规模。也就是说,用于诊断较高级存储功能的存储器诊断程序具有较大的程序规模。第一存储器诊断程序属于存储功能中的最低诊断级别,具有最小的程序规模。根据该实施例的第一存储器诊断单元执行第一存储器诊断程序,而不将第一存储器诊断程序加载到主存储器中。因此,首先由第一存储器诊断单元不使用主存储器而执行对存储功能的简单诊断。然后,由第二存储器诊断单元执行对存储功能的更高级别的诊断。因此,在不清楚主存储器中是否有缺陷区的阶段,存储器诊断程序不必被加载到主存储器中。这避免了存储器诊断程序变成不可执行的情况。如果第一存储器诊断程序被加载到主存储器中,以占据其上相对小的区域,则可以由第一存储器诊断单元将第一存储器诊断程序加载到主存储器中。第二存储器诊断单元将存储在诸如ROM等存储单元中的第二存储器诊断程序加载到主存储器中除由第一存储器诊断单元识别出的缺陷区之外的其它区域中,并执行该第二存储器诊断程序。也就是说,第二存储器诊断单元将由第一存储器诊断单元识别出的缺陷区从主存储器的用来加载第二存储器诊断程序的区域中排除。在主存储器的所有区域中,缺陷区被定义为诸如读出和写入功能等存储功能不能正常工作的区域。第二存储器诊断程序执行较高级别的存储功能诊断,并且规模比第一存储器诊断程序规模更大。这样,根据该实施例的计算机设备可以避免这样的情况第二诊断程序被错误地加载缺陷区,从而不能正常执行第二诊断程序。然后,第二存储器诊断单元通过执行已经被加载到非缺陷区的部分区域中的第二存储器诊断程序对主存储器再次进行诊断。接着,第二存储器诊断单元基于由第二存储器诊断程序诊断的主存储器的结果在除之前识别为缺陷区之外的区域中识别新的缺陷区。而且,第二存储器诊断单元将最新和之前发现的缺陷区作为缺陷区而从待加载下一存储器诊断程序(即,第三存储器诊断程序和之后的程序)的区域中排除。重复这些处理,直到存储在诸如ROM等存储单元中的所有存储器诊断程序已经结束运行。因此,第二存储器诊断程序之后的存储器诊断程序总是被加载到主存储器的非故障区中。因此,这些存储器诊断程序可以被正常执行。以这种方式,根据该实施例,首先执行不使用主存储器或者仅占据主存储器的小部分的第一存储器诊断程序,以便对主存储器进行简单诊断。然后,利用诊断结果,对需要被加载到主存储器中且可以提供对存储器的详细诊断的第二存储器诊断程序的设置位置进行识别。因此,这就降低了第二存储器诊断程序之后的存储器诊断程序因被加载到主存储器中存储功能不能正常工作的缺陷区的可能性,并且避免了第二存储器诊断程序之后的存储器诊断程序变成不可执行的情况。参照图l,对根据本发明的实施例的计算机设备的结构进行解释。图1是示出根据一实施例的计算机设备的结构的方框图。图2是示出图1中示出的DRAM的细节。如图1中所示,计算机设备1包括中央处理单元(CPU)10、DRAM20、ROM30、显示器控制器40和连接上述元件的总线60.CPU10控制计算机设备1的整体运行。具体地,当计算机设备1启动时,CPU10从ROM30中读取基本输入输出系统(BIOS)程序31(将在后文描述),并执行BIOS程序31以检查诸如DRAM20等装置中是否有错误。CPU10还通过执行BI0S程序31来执行操作系统(OS)的启动以及对各装置的控制。DRAM20是计算机设备1的主存储器(主存储单元)。具体而言,DRAM20是其中加载了待由CPUIO执行的程序(包括BI0S程序31)的装置,并且被用作工作存储器以暂时存储与程序相关的各种数据。而且,如图2中所示,DRAM20被划分成多个区(1)至(20),以便加载待由CPU10执行的程序。用作存储单元的ROM30存储CPU10执行的数据和各种程序。ROM30存储的程序包括BIOS程序31和多个存储器诊断程序32。BI0S程序31是基本输入输出程序。具体而言,在计算机设备l被打开时,BIOS程序31开始运行,所述BIOS程序31是控制0S、应用程序、DRAM20和外围装置(显示器、键盘等)之间的输入和输出数据的控制程序。而且,BI0S程序31执行存储器诊断处理,以确认可以从DRAM20中正常读取数据和向DRAM20正常写入数据,并确认与存储器保护功能和错误校正功能相关的功能能正常工作。下文详细描述BI0S程序31执行存储器诊断处理的具体结构。当BIOS程序31对DRAM20执行存储器诊断处理时执行多个存储器诊断程序32,多个存储器诊断程序32是检查DRAM20的各个存储功能是否正常工作(例如,预定数据是否能正常写入存储器中及从存储器中正常读出)的程序集合。在此实施例中,存储器诊断程序32包括三个存储器诊断程序32a,32b和32c。存储器诊断程序32a,32b和32c分别是为诊断截然不同的存储功能而设计的,根据存储功能的诊断级别具有不同的程序规模。例如,在此实施例中,32a具有最低的存储功能诊断级别,然后依次是32b及32c,它们的程序规模也以相同次序增加。在三个存储器诊断程序中,存储器诊断程序32a具有最低的存储功能诊断级别以及最小的程序规模。显示器控制器40连接到显示器50,向其提供诸如DRAM20的存储器诊断结果等输出。显示器50是图像显示装置,能可视地显示来自显示器控制器40的输出。参照图3,详细描述使BIOS程序31能够在DRAM20上执行存储器诊断处理的具体结构。图3的方框图示出了图1的BI0S程序31的细节,并示出了由CPUIO执行存储在ROM30中的BIOS程序31时可以实现的功能。BIOS程序31包括存储器诊断单元311、存储器品质评估表制备单元312、故障区确定单元313、诊断程序加载单元314、OS错误检测单元315和诊断结果报告单元316。在BIOS程序31启动(被执行)时,执行这些功能单元311-316。如上所述,当计算机设备1启动时,首先执行BIOS程序31。因此,在OS引导之前执行DRAM20的存储器诊断处理,使得即使在OS没有启动的情况下存储器诊断程序也能正常运行。存储器诊断单元311通过运行存储器诊断程序32a而开始对DRAM20进行诊断,存储器诊断程序32a是存储器诊断程序32的第一存储器诊断程序。而且,存储器诊断单元311不用将存储器诊断程序32a加载到DRAM20中,就能运行存储器诊断程序32a。如上所述,在存储器诊断程序32中,存储器诊断程序32a包含最低的存储功能诊断级别,具有最小的程序规模。存储器诊断程序32a的程序规模被设置的小,就消除了将存储器诊断程序32a加载到DRAM20中的必要。这可避免在不清楚DRAM20是否有缺陷区时将存储器诊断程序加载到DRAM20中。存储器品质评估表制备单元312生成存储器品质评估表,该表将存储器诊断单元311的诊断结果和DRAM20上的地址信息相关联。在下文解释存储器诊断处理的步骤时,再详细解释存储器品质评估表。故障区确定单元313基于存储器诊断单元311的诊断结果确定DRAM20中的故障区或缺陷区。具体而言,故障区确定单元313参照由存储器品质评估表制备单元312生成的存储器品质评估表,提取DRAM20上被存储器诊断单元311诊断为错误的地址信息,从而基于所提取的地址信息确定DRAM20中的故障区。在这种情况下,存储器诊断单元311和故障区确定单元313作为第一存储器诊断单元,通过执行第一存储器诊断程序32a来确定DRAM20(主存储器)中的故障区。诊断程序加载单元314将存储器诊断程序32b加载到DRAM20的所有区域(1)至(20)中除由故障区确定单元313确定的故障区之外的区域中,其中该储器诊断程序32b是存储在ROM30中的第二存储器诊断程序。更具体讲,诊断程序加载单元314参照由存储器品质评估表制备单元312制备的存储器品质评估表,提取被存储器诊断单元311诊断为错误的DRAM20的地址信息。然后,诊断程序加载单元314将与所提取的作为故障区的地址信息对应的区域从用于加载存储器诊断程序32b的区域中排除。换言之,诊断程序加载单元314将除故障区之外的一部分区域设置为用于加载第二存储器诊断程序32b的区域。然后,存储器诊断单元311通过执行由诊断程序加载单元314加载的存储器诊断程序32b,重新对DRAM20的所有区域(1)至(20)中除由故障区确定单元313确定的故障区之外的区域进行诊断。在这种情况下,诊断程序加载单元314和存储器诊断单元311用作第二存储器诊断单元,它们将第二存储器诊断程序32b加载到除由故障区确定单元313确定的故障区之外的其它区域中,并执行第二存储器诊断程序32b。接着,基于存储器诊断单元311的新诊断结果,故障区确定单元313确定DRAM20的所有区域(1)至(20)中除之前被故障区确定单元313确定为故障区之外的新的故障区。诊断程序加载单元314从用于加载由存储器诊断单元311接着执行的存储器诊断程序32c的区域中将由故障区确定单元313先前确定和新确定的故障区作为故障区而排除。重复由功能单元311-314执行的处理,直到存储器诊断单元311执行完所有的存储器诊断程序32(32a-32c)。由于此原因,存储器诊断程序32总是被加载到DRAM20中的故障区之外的非故障区。因此,就可以正常执行存储器诊断程序。OS错误检测单元315检测在OS启动时的错误。这类OS启动错误包括计算机设备1停止工作,和不接收键盘或鼠标输入的状态(称作挂起,h皿g-up),以及OS本身不能连续处理的状态(称作蓝屏和黑屏)。当事先测量计算机设备l在正常操作中的启动时间时,确定超时持续时间(timeoutduration)并将其存储在ROM30的预定区域中,即使在过了超时持续时间后,也可发现挂起、蓝屏或黑屏,OS错误检测单元315被设计为对OS启动错误进行检测。当OS错误检测单元315检测到OS启动错误时,诊断结果报告单元316以可视方式向显示器控制器40输出由存储器诊断单元311诊断的DRAM20的存储器诊断结果。诊断结果报告单元316作为报告由存储器诊断单元311诊断的DRAM20的存储器诊断结果的装置。该诊断结果报告单元316还被配置为输出由存储器品质评估表制备单元312制备的存储器品质评估表,作为由存储器诊断单元311对DRAM20执行存储器诊断的结果。参照图4A到图4F,具体描述了BIOS程序31如何对DRAM20执行存储器诊断处理的步骤。图4A到图4F示出了BIOS程序31在DRAM20上执行存储器诊断处理的步骤。图4A和图4C分别示出在执行存储器诊断程序32a和32b之后由存储器品质评估表制备单元312制备的存储器品质评估表。图4B和图4D分别示出DRAM20中将要加载由诊断程序加载单元314设置的后继的存储器诊断程序32b和32c的区域。而且,图4E示出在执行存储器诊断程序32c之后由存储器品质评估表制备单元312制备的存储器品质评估表,而图4F示出DRAM20的存储器诊断的最终结果。如图4A所示,当存储器诊断单元311执行存储器诊断程序32a时,存储器品质评估表制备单元312产生存储器品质评估表,该表将存储器诊断单元311的诊断结果和DRAM20的地址信息相关联。在此情况下,存储器诊断程序32a不被加载到DRAM20中就被存储器诊断单元311执行。在由存储器品质评估表制备单元312制备的存储器品质评估表中,数值"l"作为DRAM20的存储器诊断结果被分配给存储器诊断单元311诊断为非故障的DRAM20的地址,而数值"O"作为DRAM20的存储器诊断结果被分配给由存储器诊断单元311诊断为错误的DRAM20的地址。在图4B中,区域(3)和(19)被分配了"0",它们被诊断为错误。接着,如图4B所示,故障区确定单元313参照图4A中示出的存储器品质评估表确定DRAM20中的故障区。在图4A中,在DRAM20的所有区域(1)至(20)中,被诊断为错误的区域(3)和(19)被确定为有故障。如图4B中所示,诊断程序加载单元314将DRAM20的所有区域中除去由故障区确定单元313确定的故障区之外的一部分区域选择为用于加载存储器诊断单元311接下来要执行的存储器诊断程序32b的区域。在图4A和图4B中,在DRAM20的所有区域(1)至(20)中,除故障区(3)和(19)之外的一部分区域被选择为用于加载接下来待执行的存储器诊断程序32b的区域。接着,当存储器诊断单元311执行存储器诊断程序32b时,在DRAM20的所有区域(1)至(20)中除故障区(3)和(19)之外的区域被重新诊断。如图4C中所示,存储器品质评估表制备单元312使用由存储器诊断单元311得到的新的诊断结果来更新存储器品质评估表。即,在存储器品质评估表中,在DRAM20的所有区域(1)至(20)中,数值"2"作为存储器诊断结果被重新分配给存储器诊断单元311新诊断为正常的区域的地址。相反,对于存储器诊断单元311已经诊断为错误的区域地址,保持数值"l"作为存储器诊断结果。在图4C和图4D中,分别被分配了作为存储器诊断结果的数值"l"的区域(5)和(20)被重新诊断为错误。如图4D中所示,参照图4C中的存储器品质评估表,故障区确定单元313确定在DRAM20的所有区域(1)至(20)中除旧的故障区(3)和(19)之外的新故障区。在图4C和图4D中,在DRAM20的所有区域(1)至(20)中,除旧的故障区(3)和(19)之外,被重新诊断为错误的区域(5)和(20)被重新确定为故障区。如图4D中所示,在DRAM20的所有区域中除被故障区确定单元313确定为故障区之外的一部分区域被诊断程序加载单元314重新选择为用于加载存储器诊断单元311接下来要执行的存储器诊断程序32c的区域。在图4C和图4D中,在DRAM20的所有区域(1)至(20)中除故障区(3)、(5)、(19)和(20)之外的一部分区域被重新选择为用于加载存储器诊断程序32c的区域。当存储器诊断单元311执行存储器诊断程序32c时,在DRAM20的所有区域(1)至(20)中除故障区(3)、(5)、(19)和(20)之外的其它区域被重新诊断。如图4E中所示,存储器品质评估表制备单元312使用存储器诊断单元311得到的新的诊断结果更新存储器品质评估表。即,在存储器品质评估表中,在DRAM20的所有区域中,数值"3"作为存储器诊断结果被重新分配给存储器诊断单元311重新诊断为正常的区域地址。相反,对于存储器诊断单元311已经诊断为错误的区域的地址,保持数值"2"作为存储器诊断结果。在图4E和图4F中,分配了作为存储器诊断结果的数值"2"的区域(4)被重新诊断为错误。通过执行上述处理,如图4F中所示,所获得的存储器诊断的最终结果与由BIOS程序31执行的存储器诊断处理一致。参照图5描述图1中计算机设备1的存储器诊断处理。图5是示出图1中计算机设备1的存储器诊断处理的流程图。图5的存储器诊断处理是在计算机设备1被打开后,通过运行CPU10从ROM30中读出的BIOS程序31而执行的处理。如图5中所示,BIOS程序31的存储器诊断单元311执行多个存储器诊断程序32中的存储器诊断程序32a,如步骤S10,并逐个诊断DRAM20的所有区域,如步骤Sll。存储器诊断单元311在没有将存储器诊断程序32a加载DRAM20的情况下运行存储器诊断程序32a。然后,存储器诊断单元311将存储器诊断结果和DRAM20的地址信息存储到DRAM20的每一区域中,且存储器诊断结果和DRAM20的地址信息彼此关联,如步骤S12。接着,存储器诊断单元311确定在DRAM20的所有区域中是否存在未诊断的区域,如步骤S13。所述确定是基于存储器诊断结果是否已经与DRAM20的每个区域的地址信息相关联而做出的。如果确定在DRAM20的所有区域中在某处存在有未诊断的区域,即步骤S13中为是,则存储器诊断单元311重复步骤Sll到步骤S13的处理,直到在DRAM20的所有区域中没有未诊断的区域。如果确定在DRAM20的所有区域中没有未诊断的区域,即步骤S13中为否,则存储器诊断单元311请求存储器品质评估表制备单元312来制作存储器品质评估表。一旦接收到该请求,存储器品质评估表制备单元312制备存储器品质评估表,其中存储器诊断单元311的存储器诊断结果与DRAM20的地址信息相关联,如步骤S14,并且存储器品质评估表制备单元312将制备好的存储器品质评估表发送给故障区确定单元313。然后,参照所接收的存储器品质评估表,故障区确定单元313提取DRAM20上被存储器诊断单元311确定为错误的地址信息,以根据所提取的地址信息确定DRAM20中的故障区,如步骤S15。诊断程序加载单元314将DRAM20的所有区域中除在步骤S15由故障区确定单元313确定为故障区之外的区域的一部分或多个部分确定为一个或多个加载区,如步骤S16,并且将下一存储器诊断程序32b加载到所述加载区中,如步骤S17。接着,存储器诊断单元311通过执行所加载的存储器诊断程序32b,逐个诊断DRAM20中除故障区之外的所有区域,如步骤S18。然后,存储器诊断单元311将存储器诊断结果和DRAM20上的地址信息存储在DRAM20的每个区域中,所述存储器诊断结果和DRAM20上的地址信息彼此相关联,如步骤S19。然后,存储器诊断单元311确定在DRAM20的所有区域中除故障区之外的区域中是否存在未诊断的区域,如步骤S20。如果存储器诊断单元311确定存在未诊断区域,即步骤S20中为是,则存储器诊断单元311重复步骤S18到S20的处理,直到在DRAM20的所有区域中除故障区之外的区域中不再发现未诊断区域。相反,如果存储器诊断单元311确定在DRAM20的所有区域中除故障区之外的区域中不存在未诊断区域,即步骤S20中为否,则存储器诊断单元311请求存储器品质评估表制备单元312更新存储器品质评估表。一旦接收到该请求,存储器品质评估表制备单元312就更新存储器品质评估表,如步骤S21。之后,存储器诊断单元311确定是否已经执行了所有存储器诊断程序32a、32b和32c,如步骤S22。如果存储器诊断单元311确定还未执行完所有存储器诊断程序,即步骤S22中为否,则处理返回步骤S15。然后,重复步骤S15到S22的过程,直到执行完所有的存储器诊断程序32a、32b和32c。如果存储器诊断单元311确定已经执行完所有存储器诊断程序,即步骤S22中为是,则存储器诊断单元311进到步骤S23。在步骤S23中,0S错误检测单元315检测启动时是否有0S错误,或者是否有0S启动错误。如果其结果是检测到OS启动错误,即步骤S23中为是,则OS错误检测单元315向诊断结果报告单元316发出检测信号。一旦接收到来自0S错误检测单元315的检测信号,诊断结果报告单元316就向显示器控制器40输出存储器品质评估表作为DRAM20的存储器诊断结果,其中该存储器品质评估表由存储器品质评估表制备单元312在步骤S21中更新。随后,在显示器50上显示存储器品质评估表,如步骤S24,以此结束存储器诊断处理。相反,如果未检测到OS启动错误,即步骤S23中为否,则OS错误检测单元315完成存储器诊断处理。如上所述,在此实施例中,存储器诊断单元311执行存储器诊断程序32a(即第一存储器诊断程序),以对DRAM20进行诊断。故障区确定单元313基于存储器诊断单元311的诊断结果确定DRAM20中的故障区。存储器诊断单元311和故障区确定单元313用作第一存储器诊断单元。此外,诊断程序加载单元314将存储器诊断单元311接着将要执行的存储器诊断程序32b加载到DRAM20中除了故障区之外的部分区域中。存储器诊断单元311通过执行由诊断程序加载单元314加载的存储器诊断程序32b,重新诊断DRAM20中除了由故障区确定单元313确定的故障区之外的区域。诊断程序加载单元314和存储器诊断单元311用作第二存储器诊断单元。因此,该实施例可以避免将存储器诊断程序加载主存储器的故障区中(在故障区中存储功能不能正常工作),以此防止出现不能正常执行存储器诊断程序的情形。而且,用作第一存储器诊断单元的存储器诊断单元311在没有将存储器诊断程序32a加载到DRAM20的情况下运行存储器诊断程序32a。因此,在未确定主存储器是否包含故障区的情况下,不必将存储器诊断程序加载到主存储器中。这可避免不能正常执行存储器诊断程序的情况。作为结果,这样就简化了对无故障区(healthyarea)和故障区的确定,实现了高效的存储器诊断处理。由于存储器品质评估表制备单元312制备的存储器品质评估表将由存储器诊断单元311进行的存储器诊断的结果与DRAM20的地址信息相关联,所以可容易地区分故障区和除故障区之外的区域。这样就能够实现更高效的存储器诊断处理。故障区确定单元313在用作第二存储器诊断单元时,提取DRAM20上被存储器诊断单元311诊断为错误的区域的地址信息。从DRAM20的用来加载第二存储器诊断程序32b的区域中排除与所提取的地址信息对应的有故障的区域。结果,就能很容易地区分故障区和除故障区之外的区域,从而很容易地确定故障区,以此实现更高效的存储器诊断处理。0S错误检测单元315检测0S启动错误。当OS错误检测单元315检测OS启动错误时,诊断结果报告单元316报告存储器诊断单元311的诊断结果。结果,由于用户可以确认存储器诊断单元311的诊断结果,所以用户可以立即找到DRAM20中的故障区并采取适当措施,如将故障区进行调换。每个功能单元311-316都在通电时启动,并被并入到BIOS程序31中,BIOS程序31控制将被输入到DRAM20和从DRAM20输出的数据。而且,在BIOS程序31启动时,这些功能单元都被执行。因此,在OS启动之前,可以执行DRAM20的存储器诊断处理。即使在OS不启动时,也可以正常执行存储器诊断程序。到此描述了根据本发明的多个实施例。在权利要求所公开的概念范围内,本发明还可以涵盖与上述描述有所区别的各种实施例。例如,在实施例中,第一存储器诊断程序在没有被第一存储器诊断单元加载到主存储器的情况下即可被执行。但这并不是唯一的单个实施例。本发明还涵盖下面的实施例。若第一存储器诊断程序当被加载到主存储器中时占据的是较小的区域,则由第一存储器诊断单元加载到主存储器中。这样,可以首先执行对主存储器的简单诊断。在这种情况下,使用第一存储器诊断单元的诊断结果,分别由第二存储器诊断单元和第三存储器诊断单元将第二和第三存储器诊断程序连续加载到主存储器中,其中所述第二和第三存储器诊断程序当被加载到主存储器中时会占据较大的区域。这样就能够实现高级存储器诊断功能。在实施例中,描述的是对DRAM、主存储器进行诊断的存储器诊断处理。但这并不是唯一的单个实施例。本发明还涵盖下面的实施例。还可以应用用来诊断设置在CPU内部并能够高速读出、写入的高速缓冲存储器(cashmemory)的存储器诊断处理。实施例中的BIOS程序31和存储器诊断程序32不一定必须存储在R0M30中。例如,这些程序可以存储在诸如闪存等可重写、非易失性存储器中,并且可以被CPU10读出和执行。BIOS程序31和存储器诊断程序32还可以从经互联网连接的服务器下载到闪存中。而且,这些程序可以存储在诸如CD-ROM等存储介质中,并且可以通过其驱动器从存储介质读入到闪存中。根据本发明的所述实施例,执行第一存储器诊断程序以便执行对主存储器的简单诊断,其中第一存储器诊断程序不使用主存储器或者只占据主存储器的一小部分。利用诊断结果可以识别出第二诊断程序的设置位置,其中该第二诊断程序需要被加载到主存储器12中并且能够执行详细诊断。结果,所述实施例可以降低第二存储器诊断程序被加载到主存储器的故障区中的可能性,并避免无法执行第二存储器诊断程序的情况。本文记载的所有例子和条件性语言都旨在用于教示目的,以帮助读者理解发明者为改进现有技术而提出的发明和概念,应将所有例子和条件性语言解读为不局限于这些具体记载的例子和条件,说明书中对这些例子的组织也不涉及对本发明的优点和缺点的示意。尽管已经详细描述了本发明的实施例,但应理解在不偏离本发明的精神和范围的情况下,可对其进行各种变化、替代和更改。权利要求一种包括主存储器的计算机设备,该计算机设备包括第一存储器诊断单元,用于通过执行第一存储器诊断程序来确定所述主存储器中的故障区;存储单元,用于存储可重定位的第二存储器诊断程序;以及第二存储器诊断单元,用于将所述第二存储器诊断程序加载到所述主存储器中除了由所述第一存储器诊断单元确定的所述故障区之外的区域中。2.根据权利要求1所述的计算机设备,其中,所述第一存储器诊断单元执行所述第一存储器诊断程序,所述第一存储器诊断程序不被加载到所述主存储器中。3.根据权利要求1所述的计算机设备,还包括存储器品质评估表制备单元,用于制备存储器品质评估表,其中由所述第一存储器诊断单元进行的所述主存储器的诊断的结果与所述主存储器的地址信息相关联。4.根据权利要求3所述的计算机设备,其中,所述第二存储器诊断单元参照所述存储器品质评估表提取所述主存储器上被所述第一存储器诊断单元诊断为错误的地址信息,并且将与所提取的地址信息对应的区域作为故障区从用于加载所述第二存储器诊断程序的区域中排除。5.根据权利要求1所述的计算机设备,还包括操作系统错误检测单元,用于检测操作系统启动时的错误;以及诊断结果报告单元,用于在所述操作系统错误检测单元已经检测到启动错误时,报告由所述第二存储器诊断单元进行的所述主存储器的诊断的结果。6.根据权利要求1所述的计算机设备,其中,被并入到基本输入输出程序中的所述第一存储器诊断单元、第二存储器诊断单元、存储器品质评估表制备单元、操作系统错误检测单元和诊断结果报告单元的每一个均在通电时启动,并且在所述基本输入输出程序已经启动时被执行,其中所述基本输入输出程序是用来控制将要输入到所述主存储器和从所述主存储器输出的数据的控制程序。7.—种诊断计算机设备中的主存储器的方法,包括以下步骤通过执行第一存储器诊断程序来确定所述主存储器中的故障区;以及将第二存储器诊断程序加载到所述主存储器中除了通过确定故障区的步骤而确定的故障区之外的其它区域中。8.根据权利要求7所述的方法,其中,所述确定故障区的步骤执行所述第一存储器诊断程序,而所述第一存储器诊断程序不被加载到所述主存储器中。9.根据权利要求7所述的方法,还包括以下步骤制备存储器品质评估表,其中通过所述确定故障区的步骤进行的所述主存储器的诊断的结果与所述主存储器的地址信息相关联。10.根据权利要求9所述的方法,其中,参照所述存储器品质评估表,加载所述第二存储器诊断程序的步骤提取所述主存储器上通过所述确定故障区的步骤而被诊断为错误的地址信息,并且将与所提取的地址信息对应的区域作为故障区从用于加载所述第二存储器诊断程序的区域中排除。11.根据权利要求7所述的方法,还包括以下步骤检测操作系统启动时的错误;以及当检测错误的步骤已经检测到启动错误时,报告通过加载所述第二存储器诊断程序的步骤进行的所述主存储器的诊断的结果。12.根据权利要求7所述的方法,其中,被并入到基本输入输出程序中的所述确定故障区的步骤、加载第二存储器诊断程序的步骤、制备存储器品质评估表的步骤、检测启动错误的步骤以及报告诊断结果的步骤的每一个均在通电时启动,并且在所述基本输入输出程序已经启动时执行,其中所述基本输入输出程序是用来控制将要输入到所述主存储器和从所述主存储器输出的数据的控制程序。13.—种计算机可读存储介质,其中存储有用来诊断计算机设备中的主存储器的计算机程序,所述计算机程序使得所述计算机设备执行以下步骤通过执行第一存储器诊断程序来确定所述主存储器中的故障区;以及将第二存储器诊断程序加载到所述主存储器中除了通过确定故障区的步骤而确定的故障区之外的区域中。14.根据权利要求13所述的计算机可读存储介质,其中,在所述确定故障区的步骤中执行的所述第一存储器诊断程序不被加载到所述主存储器中。15.根据权利要求13所述的计算机可读存储介质,还包括以下步骤制备存储器品质评估表,其中通过所述确定故障区的步骤而进行的所述主存储器的诊断的结果与所述主存储器的地址信息相关联。16.根据权利要求15所述的计算机可读存储介质,其中,在加载所述第二存储器诊断程序的步骤中,参照所述存储器品质评估表,提取所述主存储器上通过所述确定故障区的步骤而被诊断为错误的地址信息,并且将与所提取的地址信息对应的区域作为故障区从用于加载所述第二存储器诊断程序的区域中排除。17.根据权利要求13所述的计算机可读存储介质,还包括以下步骤检测操作系统启动时的错误;以及在已经检测到启动错误时,报告通过加载所述第二存储器诊断程序的步骤进行的所述主存储器的诊断的结果。18.根据权利要求13所述的计算机可读存储介质,其中,被并入基本输入输出程序中的所述确定故障区的步骤、加载第二存储器诊断程序的步骤、制备存储器品质评估表的步骤、检测启动错误的步骤以及报告诊断结果的步骤在通电时启动,并且在所述基本输入输出程序已经启动时执行,其中所述基本输入输出程序是用来控制将要输入到所述主存储器和从所述主存储器输出的数据的控制程序。全文摘要本发明涉及一种包括主存储器的计算机设备,该计算机设备包括第一存储器诊断单元,用于通过执行第一存储器诊断程序来确定主存储器中的故障区;以及存储单元,用于存储可重定位的第二存储器诊断程序。而且,该计算机设备包括第二存储器诊断单元,用于将第二存储器诊断程序加载到主存储器的除了由第一存储器诊断单元确定的故障区之外的其它区域中。本发明在未确定主存储器是否包含故障区的情况下,不必将存储器诊断程序加载到主存储器中。这可避免不能正常执行存储器诊断程序的情况。因此,简化了无故障区和故障区的确定,实现了高效的存储器诊断处理。文档编号G06F11/22GK101714112SQ20091017064公开日2010年5月26日申请日期2009年9月1日优先权日2008年10月3日发明者目崎义宪,石桥修,菱沼武夫申请人:富士通株式会社