CN117334242A - 内存判定方法及装置、存储介质及电子设备 - Google Patents
内存判定方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117334242A CN117334242A CN202210731466.3A CN202210731466A CN117334242A CN 117334242 A CN117334242 A CN 117334242A CN 202210731466 A CN202210731466 A CN 202210731466A CN 117334242 A CN117334242 A CN 117334242A
- Authority
- CN
- China
- Prior art keywords
- memory
- analysis result
- memory block
- result
- output information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 238
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 238000012360 testing method Methods 0.000 claims abstract description 83
- 238000004458 analytical method Methods 0.000 claims abstract description 80
- 230000006870 function Effects 0.000 claims description 25
- 238000007639 printing Methods 0.000 claims description 15
- 230000007334 memory performance Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010998 test method Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 35
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开是关于一种内存判定方法、内存判定装置、计算机可读存储介质及电子设备,涉及集成电路技术领域。该内存判定方法包括:将内存位宽余量测试程序运行后的输出信息导回第一内存区块;对输出信息进行解析,获得解析结果;将解析结果注册到服务表中;在内存测试阶段,从服务表中获取解析结果,并对解析结果进行判定,获得判定结果。本公开提供一种无需额外设置独立设备的RMT测试方法。
Description
技术领域
本公开涉及集成电路技术领域,具体而言,涉及一种内存判定方法、内存判定装置、计算机可读存储介质及电子设备。
背景技术
随着信息化时代的高速发展,互联网,人工智能等技术覆盖了社会的各个领域,这对服务器的数据处理能力及网络数据的传输能力都有了更高的要求。内存作为在服务器中负责如硬盘、主板、显卡等硬件与处理器之间数据交换和处理的“桥梁”,它对于服务器性能发挥着重要作用。
RMT(Rank Margin Tool)测试是对内存位宽余量的一种测试,它的测试结果直接反映了服务器主板上内存的性能。
现有的RMT测试中,需要有独立的设备进行测试和数据采集,无法与数据解析等过程共用一个设备,造成资源浪费。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种内存判定方法、内存判定装置、计算机可读存储介质及电子设备,提供一种无需额外设置独立设备的RMT测试方法。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种内存判定方法,包括:将内存位宽余量测试程序运行后的输出信息导回第一内存区块;对所述输出信息进行解析,获得解析结果;将所述解析结果注册到服务表中;在内存测试阶段,从所述服务表中获取所述解析结果,并对所述解析结果进行判定,获得判定结果。
在本公开的一种示例性实施方式中,将输出信息导回第一内存区块,包括:修改底层驱动,选取一块内存作为所述第一内存区块;将所述输出信息存入所述第一内存区块。
在本公开的一种示例性实施方式中,将所述输出信息存入所述第一内存区块,包括:调用用于打印输出信息的函数库;修改所述函数库中的打印部分,以将所述输出信息输出至所述第一内存区块。
在本公开的一种示例性实施方式中,对所述输出信息进行解析,获得解析结果,包括:在基本输入输出系统中新增解析程序,解析所述输出信息获得所述解析结果;将所述解析结果存在第二内存区块中。
在本公开的一种示例性实施方式中,所述解析结果包括内存性能数值。
在本公开的一种示例性实施方式中,所述将所述解析结果注册到服务表中,包括:将所述第二内存区块的所述解析结果复制至系统内存区块的所述服务表中。
在本公开的一种示例性实施方式中,所述方法包括:在所述服务表中注册驱动,用于后续所述解析结果的读取。
在本公开的一种示例性实施方式中,所述方法包括:将所述判定结果写入标识码位。
根据本公开的第二方面,提供一种内存判定装置,包括:信息导向模块,用于将内存位宽余量测试程序运行后的输出信息导回第一内存区块;解析模块,用于对所述输出信息进行解析,获得解析结果;注册模块,用于将所述解析结果注册到服务表中;判定模块,用于在内存测试阶段,从所述服务表中获取所述解析结果,并对所述解析结果进行判定,获得判定结果。
在本公开的一种示例性实施方式中,所述信息导向模块,用于修改底层驱动,选取一块内存作为所述第一内存区块;将所述输出信息存入所述第一内存区块。
在本公开的一种示例性实施方式中,所述信息导向模块,用于调用用于打印输出信息的函数库;修改所述函数库中的打印部分,以将所述输出信息输出至所述第一内存区块。
在本公开的一种示例性实施方式中,所述解析模块,用于在基本输入输出系统中新增解析程序,解析所述输出信息获得所述解析结果;将所述解析结果存在第二内存区块中。
在本公开的一种示例性实施方式中,所述解析结果包括内存性能数值。
在本公开的一种示例性实施方式中,所述注册模块,用于将所述第二内存区块的所述解析结果复制至系统内存区块的所述服务表中。
在本公开的一种示例性实施方式中,所述装置还包括:读取模块,用于在所述服务表中注册驱动,用于后续所述解析结果的读取。
在本公开的一种示例性实施方式中,所述装置还包括:标识模块,用于将所述判定结果写入标识码位。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的内存判定方法。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的内存判定方法。
本公开提供的技术方案可以包括以下有益效果:
本公开示例性实施方式中,通过将内存位宽余量测试程序运行后的输出信息重新导回至第一内存区块,也就是导回至运行内存位宽余量测试程序的第一内存区块中,可以在第一内存区块中对输出信息进行解析,获得解析结果后,并将解析结果注册到服务表中,以在内存测试阶段,可以直接从服务表中获取解析结果,并对解析结果进行判定,以获得判定结果。整个测试、解析以及结果判定过程均是在第一内存区块中完成的,无需额外设置上位机及其周边设备,在一个下位机中就可以完成所有测试过程,节约了资源;另外,整个测试、解析以及结果判定过程中,无需人工操作的介入,可以提高测试的效率,减少测试过程的用时,也能避免由于人为操作带来的错误,提高测试判定的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了现有技术中一种RMT测试过程示意图;
图2示意性示出了根据本公开的示例性实施例的一种内存判定方法的步骤流程图;
图3示意性示出了根据本公开的示例性实施例的一种RMT测试过程示意图;
图4示意性示出了根据本公开的示例性实施例的内存判定装置的方框图;
图5示意性示出了根据本公开的示例性实施例的一种电子设备的模块示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。内存是由内存芯片、电路板、金手指等部分组成的。
内存是服务器主板上的主要存储部件,在计算机存储层次结构中占有重要地位。内存的稳定性与可靠性,以及内存与主板的兼容性对于服务器设计至关重要。而在服务器的设计与生产过程中,不同品牌内存的差异性、服务器主板材质的差异性、PCB(PrintedCircuit Board)布局与走线设计等都是影响服务器主板与内存兼容性的因素。因此,RMT测试是服务器研发过程中必不可少的一环,其测试数据能在一定程度上反映服务器主板上内存的性能,研发人员可根据测试数据评估主板PCB器件布局与走线设计,降低项目风险。
RMT(Rank Margin Tool)是在开机时BIOS(Basic Input Output System,基本输入输出系统)自动运行的内存效能判定的程序,RMT程序运行后,会通过Debug Port调试端口输出训练的结果,从而得到内存的位宽余量。其中,BIOS是一组固化到计算机内主板上一个ROM(Read-Only Memory,只读存储器)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
在实际应用中,RMT测试的量测项目包括时序参数和电压参数,其中,时序参数包括读取时序容限、写入时序容限和命令时序容限;电压参数包括读取参考电压电压容限、写入参考电压电压容限和命令参考电压电压容限。并且每一个参数都有对应的基准,例如,读取时序容限有对应的最小读取基准,写入时序容限有对应的最小写入基准,命令时序容限有对应的最小命令基准;读取参考电压电压容限有对应的最小读取参考电压基准,写入参考电压电压容限有对应的最小写入参考电压基准,命令参考电压电压容限有对应的最小命令参考电压基准。
在实际测试结果中,如果有一项测试的参数值小于其对应的基准值,就说明此参数不合格,其对应的内存为不合格品。也只有所有的参数值均大于其对应的基准值时,才说明所对应的内存为合格品。
参照图1,示出了现有技术中一种RMT测试过程示意图。在图1中,示出了服务器101和PC机102,服务器101上设有测试主板,测试主板上设有BMC(Baseboard ManagementController,基板管理控制器),服务器101和PC机102通过串口线相连。其中,服务器101作为下位机,负责运行测试程序,并将测试数据通过串口线传出。PC机102作为上位机,通过串口线接收测试数据;接着,通过人工操作收集数据,并保存为RMT原始数据,再由人工操作将RMT原始数据导入到解析工具中,并由解析工具对RMT原始数据进行解析,获得RMT测试结果。最后,由人工操作来根据RMT测试结果中的内存位宽余量数值进行判断,并标示不良品。
由上述的测试过程可以看出,在RMT测试过程中,除过测试主板外,还需要设置独立的PC机102进行数据收集和解析分析,整个过程无法共用一个整体设备,造成资源的浪费。另外,在整个作业过程中,有多处需要人工操作,人工操作的效率较低,使得整个测试过程用时较长,并且容易发生人为操作上的错误采集或结果判读,例如,遗漏采集、重复采集或取错不良品等。
基于此,本公开的示例性实施方式首先提供一种内存判定方法,用于对内存进行RMT测试,以根据内存的位宽余量来判定内存的好坏。
参照图2,示出了本公开实施例的一种内存判定方法的步骤流程图。在一种可行的实施方式中,上述内存判定方法可以包括:
步骤S210、将内存位宽余量测试程序运行后的输出信息导回第一内存区块;
步骤S220、对输出信息进行解析,获得解析结果;
步骤S230、将解析结果注册到服务表中;
步骤S240、在内存测试阶段,从服务表中获取解析结果,并对解析结果进行判定,获得判定结果。
本公开实施例提供的内存判定方法,通过将内存位宽余量测试程序运行后的输出信息重新导回至第一内存区块,也就是导回至运行内存位宽余量测试程序的第一内存区块中,可以在第一内存区块中对输出信息进行解析,获得解析结果后,并将解析结果注册到服务表中,以在内存测试阶段,可以直接从服务表中获取解析结果,并对解析结果进行判定,以获得判定结果。整个测试、解析以及结果判定过程均是在第一内存区块中完成的,无需额外设置上位机及其周边设备,在一个下位机中就可以完成所有测试过程,节约了资源;另外,整个测试、解析以及结果判定过程中,无需人工操作的介入,可以提高测试的效率,减少测试过程的用时,也能避免由于人为操作带来的错误,提高测试判定的准确性。
下面将结合具体实施方式对内存判定方法进行详细说明:
在步骤S210中,将内存位宽余量测试程序运行后的输出信息导回第一内存区块。
本公开示例性实施方式中,上述的内存位宽余量测试程序就是前述的RMT测试程序,内存位宽余量测试程序是服务器在开机时,在基本输入输出系统BIOS中自动运行的进行内存效能判定的程序。
在实际应用中,可以在服务器的基本输入输出系统BIOS中设置控制执行RMT测试的菜单,在进行RMT测试之前可以在服务器的BIOS中设置RMT测试菜单,以在服务器开机过程中自动进行RMT测试。也可以在不需要测试RMT是关闭该选项,以减少RMT测试对系统开机时间的影响。
本公开示例性实施方式中,上述的内存位宽余量测试程序是在第一内存区块上运行的,而第一内存区块属于服务器。也就是说,上述的内存位宽余量测试程序是在服务器上运行的,在运行完内存位宽余量测试程序后,所获得的输出信息并没有通过串口导向外设的PC上位机中,而是重新导回至服务器,继续由服务器执行后续的操作。由此可见,本公开示例性实施方式提供的内存判定方法,无需额外地设置上位机及周边配备,只需要服务器就可以完成内存位宽余量测试到判定的整个过程,从而可以节省资源,简化测试设备。
在实际应用中,内存位宽余量测试程序运行后的输出信息,也就是RMT测试后的输出信息主要是在执行RMT测试过程中的日志信息,包括(但不限于)执行的动作与相对应的数值。例如包括时序参数和电压参数及其对应的数值,其中,时序参数包括读取时序容限、写入时序容限和命令时序容限;电压参数包括读取参考电压电压容限、写入参考电压电压容限和命令参考电压电压容限。
本公开示例性实施方式中,在将内存位宽余量测试程序运行后的输出信息导回第一内存区块的过程中,可以通过修改底层驱动或者底层BIOS代码的方式,将原先由串口进行输出的上述输出信息重新导回至第一内存区块中。其中,底层BIOS代码是基本的输入输出系统,它是一组固化到计算机内主板上的一个ROM存储芯片上的程序,保存着计算机最重要的节能输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。底层BIOS代码可以为计算机提供最底层的最直接的硬件设置和控制。
其中,底层驱动是程序以访问底层硬件的形式实现人机交互,驱动程序和应用程序之间需要实现相应的信息交互,一方面,应用程序通过对驱动程序发送相应的指令,实现硬件控制的动作指令,另一方面,驱动程序将硬件读写的状态、从硬件上获得的数据传送给应用程序,实现应用程序与驱动程序间的交互。底层驱动是让设备工作的基本程序,它给用户提供了一个使用这个设备的接口。底层驱动与硬件相关,可以给应用层提供API函数调用接口,应用层可以通过调用这些接口去访问硬件,而不需要了解具体的硬件工作情况。应用程序是根据实际应用需求去编写的程序,指的是代码的逻辑部分,直接去调用底层驱动预留的接口,而不需要关心硬件底层的实现方式及实现过程。
在实际应用中,可以通过修改底层驱动,选取一块内存作为第一内存区块,该第一内存区块可以作为信息缓存,可以将输出信息存入到第一内存区块中,从而将原先由串口输出的输出信息重新导向至该第一内存区块中。
具体的,在实际应用中,通过底层驱动修改内存,或者说选取内存的过程中可以使用分配内存的以下几个接口函数:
1、rbuff=kmalloc(len+4,GFP_KERNEL)
其中,GFP_KERNEL是flag,可以通过该flag来设定分配内存的方式,目前这个GFP_KERNEL就是可以睡眠的,优先级普通;如果是GFP_ATOMIC则优先级高,是原子的,不能睡眠,可以通过kfree(rbuff)来释放。
2、rbuff=vmalloc(len)
类似于kmalloc,只不过kmalloc分配的内存不管是虚拟地址还是物理地址都是连续的;而vmalloc分配的只是在虚拟地址是连续的,在物理地址上不一定是连续的,所以在需要一张表来建立虚拟地址和分散物理地址的关系,这样就会使效率降低很多,所以一般这个接口用于要分配大内存时。
3、data=devm_kzalloc(&dev,sizeof(struct fts_ts_data),GFP_KERNEL)
这个接口是具有资源管理的kzalloc()接口。使用资源管理(resource-managed)函数分配的内存,是会与所属设备相关联。当设备从系统中分离或者设备驱动被卸载,该内存会被自动释放。也可以通过devm_kfree()来释放内存。
在有些情况下,当频繁申请小内存,要频繁进出内存时,可能会造成系统消耗较大,则可以使用slab分配器进行内存分配,其中,slab相当于高速缓存。slab通常分成三种状态:满的slab、部分满的slab、空的slab。当下一次需要分配内存时会先去看slab里面是否有满足条件的,如果没有就创建一个新的slab。当调用kmalloc时就会先去看slab是否有满足条件的。
另外,如果需要频繁创建很多相同类型的对象,可以考虑使用高速缓存,步骤如下:
a.内核函数kmem_cache_create用来创建一个新缓存。这通常是在内核初始化时执行的,或者在首次加载内核模块时执行。
b.要从一个命名的缓存中分配一个对象,可以使用kmem_cache_alloc函数。调用者提供了从中分配对象的缓存以及一组标志:voidkmem_cache_alloc(struct kmem_cache*cachep,gfp_t flags=GFP_KERNEL)。
c.最后进行内存释放:kmem_cache_free。
通过a、b两步就可以创建一个具体对象structftp的高速缓存,如果后面要经常创建和释放struct fts分配的空间,用slab就不用频繁的申请释放内存,提高了效率。
另外,在实际操作过程中,修改底层驱动或者底层BIOS代码,以将原先由串口进行输出的上述输出信息重新导回至第一内存区块中的过程中,由于所有的外设硬件在系统中都是以一个地址的形态存在的,所以也可以通过将待修改的地址替换为内存,就能实现将原本由串口输出的输出信息导向第一内存区块中。
在实际应用中,通常打印信息会调用函数库中的功能,所以可以直接修改函数库的打印功能变成需要的打印方式。本公开示例性实施方式中,在将输出信息存入第一内存区块的过程中,可以调用用于打印输出信息的函数库,并通过修改函数库中的打印部分,以将输出信息输出至第一内存区块。其中,打印部分指的是信息输出部分。此处的打印输出信息属于RMT(Rank Margin Tool,排裕度工具)打印信息。修改函数库中的打印部分指的是找出底层BIOS代码的打印部分进行修改。
在步骤S220中,对输出信息进行解析,获得解析结果。
在实际应用中,由RMT测试所输出的输出信息是日志格式的,不方便进行直接使用,例如进行数值判定等。因此,需要获取特定的关键字,将有用的信息,例如数值等提取出来。
本公开示例性实施方式中,在将输出信息重新导向第一内存区块后,可以对第一内存区块中的输出信息进行解析,以将有用的信息提取出来。在具体解析过程中,可以通过在基本输入输出信息BIOS中新增解析程序,使用解析程序对输出信息进行解析,以获得解析结果。
其中,解析程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。解析程序是一种语言处理程序,在运行用户程序时,可以直接执行源程序或源程序的内部形式(中间代码)。解析程序的优点是:结构简单,易于实现,能方便地进行程序调度和修改,可进行人机对话,适于交互式会话方式下的程序编制和执行等。
解析程序由一个总控程序和若干个执行子程序组成。解析程序的工作过程如下:首先,由总控程序执行初始准备工作,配置工作初态;然后,从源程序中取一个语句,并进行语法检查。如果语法有错,则输出错误信息;否则,根据所确定的语句类型转去执行相应的执行子程序。返回后检查解析工作是否完成,如果未完成,则继续解析下一语句;否则,进行必要的善后处理工作。
参照表1,示出了一种对某一内存的输出信息进行解析后的解析结果:
表1
从表1可以看出,解析结果包括时序参数和电压参数对应的内存性能数值,包括:读取时序容限、写入时序容限、命令时序容限、读取参考电压电压容限、写入参考电压电压容限和命令参考电压电压容限等。
需要说明的是,本公开示例性实施方式中,在获得解析结果后,可以将解析结果存在第二内存区块中,其中,第二内存区块也是服务器中的内存,只是第二内存区块与第一内存区块属于不同的内存区块。
在步骤S230中,将解析结果注册到服务表中。
本公开示例性实施方式中,在对输出信息进行解析,获得解析结果之后,可以将第二内存区块取出,并搬移至一块系统保留的内存空间中。在系统中,内存区块区分为用户可用空间与系统保留空间,此处的搬移动作主要是减少占用用户可用的内存空间,以增加后续内存测试的可测试空间,此处的可测试空间即未被占用的用户可用空间。
需要说明的是,如果第二内存区块本身就是系统内存区块,则无需执行上述的搬移动作。
本公开示例性实施方式中,将第二内存区块搬移至系统保留的内存空间中的目的是,将所述第二内存区块的解析结果复制至系统内存区块的服务表中,其中,服务表可以如表1所示的表格。
在实际应用中,服务表的格式可以有多种,不限于表1所示的格式。本公开示例性实施方式对于服务表的格式不作特殊限定。
本公开示例性实施方式中,在将解析结果复制至系统内存区块的服务表中的同时,可以在服务表中注册一个驱动,用于后续的解析结果的读取。
在实际应用中,在服务表中注册驱动可以通过预设的GUID来注册,其中,GUID是全局唯一标识符(globally unique identifier),是一种由算法生成的二进制长度为128位的数字标识符,可用于所有需要唯一标识符的计算机和网络。驱动程序可以使用GUID标识各种项,驱动程序编写器可以针对设备接口类、自定义PnP事件和自定义WMI事件等项创建GUID。驱动程序包括定义其使用的GUID的头文件。
具体的,若要在驱动程序中使用GUID,必须执行两项操作:
1、包括Initguid.h头文件,该文件重新定义DEFINE_GUID宏。
Initguid.h头文件重新定义了DEFINE_GUID宏,以实例化GUID(而不是只声明EXTERN引用)。在驱动程序源文件中包括此头文件,应在其中实例化GUID。(用户模式应用程序包括Objbase.h,然后再包含GUID definitions)。
2、在定义GUID()标头文件。
在包含Initguid.h的语句之后,包含GUID定义的头文件。驱动程序可能包含多个包含GUID定义的头文件,包括系统提供的头文件和第三方头文件。
本公开示例性实施方式中,可以通过GUID对解析结果进行标识。具体的标识方式此处不再赘述。
步骤S240、在内存测试阶段,从服务表中获取解析结果,并对解析结果进行判定,获得判定结果。
本公开示例性实施方式中,在将解析结果注册到服务表中后,在内存测试阶段就可以直接从服务表中获取解析结果进行测试。此处的内存测试阶段可以包括对内存好坏进行判定的测试阶段,也就是根据解析结果对内存好坏进行判定的阶段。
在实际应用中,可以在进行内存测试的内存测试软件中,新增一个测试项目用来作为解析结果判定的触发点,以通过该测试项目来触发对解析结果进行判定。
本公开示例性实施方式中,在通过测试项目触发对解析结果的判定时,可以通过预设的GUID从服务表中取出解析结果,以进行解析结果的判定。
在实际应用中,在对解析结果进行判定的过程中,可以根据预设的规则进行判定,例如,以表1所示的解析结果为例对具体的判定过程进行简要说明如下:
表1中,每一个容限值都会对应一个基准值,例如,读取时序容限有对应的最小读取基准,写入时序容限有对应的最小写入基准,命令时序容限有对应的最小命令基准;读取参考电压电压容限有对应的最小读取参考电压基准,写入参考电压电压容限有对应的最小写入参考电压基准,命令参考电压电压容限有对应的最小命令参考电压基准。
本公开示例性实施方式中,对表1所示的解析结果的判定规则为:容限值大于或等于基准值,说明该项容限值达标,即PASS;若容限值小于基准值,则说明该项容限值不达标,即FAIL。对于一个内存而言,只要有一个容限值不达标,那么就认为该内存不达标。
从表1可以看出,除了读取参考电压容限中存在不达标的项目外,其他容限值均是达标的,但由于有一个不达标项,那么表1所代表的内存也不达标。
需要说明的是,表1所代表的内存只是一种示例,在实际应用中可以根据每个内存的实际情况进行解析结果的判定,此处不再一一列举。
本公开示例性实施方式中,在对解析结果进行判定,获得判定结果之后,可以将判定结果写入标识码位进行标识。例如,可以将判定结果写入SPD(Serial presence detect,串行存在检测)的特定码位中进行标识。其中,SPD是一种访问内存模块有关信息的标准化方式,SPD本身为电可擦除可编程只读存储器,除JEDEC规定的栏位外,还保留有其他栏位可供制造商使用,因此可以利用SPD中保留的栏位对判定结果进行标识。标识后,就可以通过对SPD特定码位内的信息进行读取,知悉该内存条是否漏测,以及对RMT测试结果值进行判断,得出内存条的质量好坏(排查不良产品),使得测试结果可追踪,可以达到防错的目的。
参照图3,示出了一种分阶段进行内存判定的框架图,即本公开示例性实施方式提供的RMT测试过程示意图。从图3可以看出,在初始化阶段,第①步,开机执行RMT测试,以获得测试结果,即内存位宽余量测试程序运行后的输出信息;第②步,将测试结果注册到Service Table服务表中;接着,进入到系统加载阶段,第③步,进入内存测试阶段,启动内存测试程序;同时,第④步,从Service Table服务表中取出测试结果(需要说明的是此处的测试结果为解析后的结果);第⑤步,在完成内存测试,即对解析结果进行判定之后,可以在SPD中写入判定结果。
综上所述,本公开实施例提供的内存判定方法,通过将内存位宽余量测试程序运行后的输出信息重新导回至第一内存区块,也就是导回至运行内存位宽余量测试程序的第一内存区块中,可以在第一内存区块中对输出信息进行解析,获得解析结果后,并将解析结果注册到服务表中,以在内存测试阶段,可以直接从服务表中获取解析结果,并对解析结果进行判定,以获得判定结果。整个测试、解析以及结果判定过程均是在第一内存区块中完成的,无需额外设置上位机及其周边设备,在一个下位机中就可以完成所有测试过程,节约了资源;另外,整个测试、解析以及结果判定过程中,无需人工操作的介入,可以提高测试的效率,减少测试过程的用时,也能避免由于人为操作带来的错误,提高测试判定的准确性;最后,通过对内存测试后的判定结果进行标识,标识后,就可以通过对SPD特定码位内的信息进行读取,知悉该内存条是否漏测,以及对RMT测试结果值进行判断,得出内存条的质量好坏(排查不良产品),使得测试结果可追踪,可以达到防错的目的。。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
此外,在本示例实施例中,还提供了一种内存判定装置。参照图4,该内存判定装置400可以包括:信息导向模块410、解析模块420、注册模块430、判定模块440、读取模块450和标识模块460,其中:
信息导向模块410,可以用于将内存位宽余量测试程序运行后的输出信息导回第一内存区块;
解析模块420,可以用于对输出信息进行解析,获得解析结果;
注册模块430,可以用于将解析结果注册到服务表中;
判定模块440,可以用于在内存测试阶段,从服务表中获取解析结果,并对解析结果进行判定,获得判定结果。
在本公开的一种示例性实施方式中,信息导向模块410,可以用于修改底层驱动,选取一块内存作为第一内存区块;将输出信息存入第一内存区块。
在本公开的一种示例性实施方式中,信息导向模块410,可以用于调用用于打印输出信息的函数库;修改函数库中的打印部分,以将输出信息输出至第一内存区块。
在本公开的一种示例性实施方式中,解析模块420,可以用于在基本输入输出系统中新增解析程序,解析输出信息获得解析结果;将解析结果存在第二内存区块中。
在本公开的一种示例性实施方式中,解析结果包括内存性能数值。
在本公开的一种示例性实施方式中,注册模块430,可以用于将第二内存区块的解析结果复制至系统内存区块的服务表中。
在本公开的一种示例性实施方式中,装置还包括:
读取模块450,可以用于在服务表中注册驱动,用于后续解析结果的读取。
在本公开的一种示例性实施方式中,装置还包括:
标识模块460,可以用于将判定结果写入标识码位。
上述中各内存判定装置的虚拟模块的具体细节已经在对应的内存判定方法中进行了详细的描述,因此,此处不再赘述。
应当注意,尽管在上文详细描述中提及了内存判定装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图5来描述根据本公开的这种实施方式的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:上述至少一个处理单元510、上述至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530、显示单元540。
其中,所述存储单元520存储有程序代码,所述程序代码可以被所述处理单元510执行,使得所述处理单元510执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元510可以执行如图2中所示的步骤S210、将内存位宽余量测试程序运行后的输出信息导回第一内存区块;步骤S220、对输出信息进行解析,获得解析结果;步骤S230、将解析结果注册到服务表中;步骤S240、在内存测试阶段,从服务表中获取解析结果,并对解析结果进行判定,获得判定结果。
存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备570(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器560通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
根据本公开的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。
Claims (18)
1.一种内存判定方法,其特征在于,包括:
将内存位宽余量测试程序运行后的输出信息导回第一内存区块;
对所述输出信息进行解析,获得解析结果;
将所述解析结果注册到服务表中;
在内存测试阶段,从所述服务表中获取所述解析结果,并对所述解析结果进行判定,获得判定结果。
2.根据权利要求1所述的方法,其特征在于,将输出信息导回第一内存区块,包括:
修改底层驱动,选取一块内存作为所述第一内存区块;
将所述输出信息存入所述第一内存区块。
3.根据权利要求2所述的方法,其特征在于,将所述输出信息存入所述第一内存区块,包括:
调用用于打印输出信息的函数库;
修改所述函数库中的打印部分,以将所述输出信息输出至所述第一内存区块。
4.根据权利要求1所述的方法,其特征在于,对所述输出信息进行解析,获得解析结果,包括:
在基本输入输出系统中新增解析程序,解析所述输出信息获得所述解析结果;
将所述解析结果存在第二内存区块中。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述解析结果包括内存性能数值。
6.根据权利要求4所述的方法,其特征在于,所述将所述解析结果注册到服务表中,包括:
将所述第二内存区块的所述解析结果复制至系统内存区块的所述服务表中。
7.根据权利要求1所述的方法,其特征在于,所述方法包括:
在所述服务表中注册驱动,用于后续所述解析结果的读取。
8.根据权利要求1所述的方法,其特征在于,所述方法包括:
将所述判定结果写入标识码位。
9.一种内存判定装置,其特征在于,包括:
信息导向模块,用于将内存位宽余量测试程序运行后的输出信息导回第一内存区块;
解析模块,用于对所述输出信息进行解析,获得解析结果;
注册模块,用于将所述解析结果注册到服务表中;
判定模块,用于在内存测试阶段,从所述服务表中获取所述解析结果,并对所述解析结果进行判定,获得判定结果。
10.根据权利要求9所述的装置,其特征在于,所述信息导向模块,用于修改底层驱动,选取一块内存作为所述第一内存区块;将所述输出信息存入所述第一内存区块。
11.根据权利要求10所述的装置,其特征在于,所述信息导向模块,用于调用用于打印输出信息的函数库;修改所述函数库中的打印部分,以将所述输出信息输出至所述第一内存区块。
12.根据权利要求9所述的装置,其特征在于,所述解析模块,用于在基本输入输出系统中新增解析程序,解析所述输出信息获得所述解析结果;将所述解析结果存在第二内存区块中。
13.根据权利要求9-12中任一项所述的装置,其特征在于,所述解析结果包括内存性能数值。
14.根据权利要求12所述的装置,其特征在于,所述注册模块,用于将所述第二内存区块的所述解析结果复制至系统内存区块的所述服务表中。
15.根据权利要求9所述的装置,其特征在于,所述装置还包括:
读取模块,用于在所述服务表中注册驱动,用于后续所述解析结果的读取。
16.根据权利要求9所述的装置,其特征在于,所述装置还包括:
标识模块,用于将所述判定结果写入标识码位。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任意一项所述的内存判定方法。
18.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-8中任意一项所述的内存判定方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731466.3A CN117334242A (zh) | 2022-06-24 | 2022-06-24 | 内存判定方法及装置、存储介质及电子设备 |
PCT/CN2022/105733 WO2023245779A1 (zh) | 2022-06-24 | 2022-07-14 | 内存判定方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731466.3A CN117334242A (zh) | 2022-06-24 | 2022-06-24 | 内存判定方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117334242A true CN117334242A (zh) | 2024-01-02 |
Family
ID=89288959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210731466.3A Pending CN117334242A (zh) | 2022-06-24 | 2022-06-24 | 内存判定方法及装置、存储介质及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117334242A (zh) |
WO (1) | WO2023245779A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739321A (zh) * | 2008-11-27 | 2010-06-16 | 英业达股份有限公司 | 硬件装置测试方法及硬件装置测试系统 |
CN106991026A (zh) * | 2017-04-28 | 2017-07-28 | 郑州云海信息技术有限公司 | 一种可批量通过网络进行服务器内存Rank margin test的方法 |
CN109901957B (zh) * | 2017-12-09 | 2020-12-25 | 英业达科技有限公司 | 以可扩展固件接口进行内存测试的计算装置及其方法 |
CN108958996A (zh) * | 2018-05-22 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种测试内存RankMargin优化方法及系统 |
CN111324502A (zh) * | 2018-12-13 | 2020-06-23 | 英业达科技有限公司 | 批量测试系统及其方法 |
-
2022
- 2022-06-24 CN CN202210731466.3A patent/CN117334242A/zh active Pending
- 2022-07-14 WO PCT/CN2022/105733 patent/WO2023245779A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023245779A1 (zh) | 2023-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021098148A1 (zh) | 一种软件编译方法、装置及电子设备和存储介质 | |
US10169199B2 (en) | Automatic model-specific debugger extensions | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
BR112015011537B1 (pt) | Método e dispositivo de armazenamento para associação de metadados com código fonte | |
US20050097399A1 (en) | Techniques for managed code debugging | |
CN106325970A (zh) | 编译方法和编译系统 | |
US9104804B2 (en) | Method and system for invoking just-in-time debugger | |
CN109508178A (zh) | 一种程序开发方法及装置 | |
CN112100072A (zh) | 应用程序代码的静态检测方法、装置、设备及介质 | |
US20060161896A1 (en) | Performing debug requests that are within the debug domain of a class loader | |
CN114765051A (zh) | 内存测试方法及装置、可读存储介质、电子设备 | |
US10839124B1 (en) | Interactive compilation of software to a hardware language to satisfy formal verification constraints | |
CN111967209A (zh) | 一种soc仿真验证方法、装置及存储介质 | |
CN112559088A (zh) | 配置文件的优化方法、装置、服务器以及存储介质 | |
CN113315675B (zh) | 一种白盒交换机U-Boot自动化测试方法、系统和存储介质 | |
CN112685210A (zh) | 一种外设故障原因定位方法、装置、设备及介质 | |
WO2023197851A9 (zh) | 异常组件的识别方法、装置、设备、存储介质及程序产品 | |
US8819494B2 (en) | Automatically changing parts in response to tests | |
CN117334242A (zh) | 内存判定方法及装置、存储介质及电子设备 | |
CN114816772B (zh) | 基于兼容层运行的应用的排错方法、排错系统及计算设备 | |
CN111240728A (zh) | 应用程序更新方法、装置、设备和存储介质 | |
US20220198112A1 (en) | Method, device, and storage medium for simulating a design | |
US9495278B2 (en) | Dynamic discovery of data segments within instrumented code | |
CN115437675A (zh) | 一种应用程序在线升级方法、装置、设备及介质 | |
US7318221B2 (en) | Windows™ F-language interpreter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |