依存储器模块的物理地址范围测试存储器的系统及方法与流程

文档序号:14623314发布日期:2018-06-08 03:24阅读:278来源:国知局

本发明涉及一种存储器测试系统及方法,特别是指一种依存储器模块的物理地址范围测试存储器的系统及其方法。



背景技术:

不论是简单的可携式计算机或是复杂的多处理器服务器,就目前的存储器测试技术而言,关键点在两个方面,第一个方面是测试演算法,第二个方面是对待测存储器的精确筛选以及对问题区段的精确定位。

其中,目前对存储器检测的演算法目前已经完全标准化、公开化、透明化,所以任何厂商都可以实现所有的测试内容;因此,如何精确筛选出有问题的待测存储器以及如何精确定位出问题区段的技术才是目前存储器检测的核心,不同的厂商之间差别较大。

然而,目前所有厂商对存储器的检测仅仅是依靠操作系统随机分配存储器的机制来进行测试,因此,可能发生待测存储器有错误,但在测试时没有分配到会发生错误的存储器范围而没有检测出存储器有问题,又或是即使检测出存储器有问题也无法给出明确的错误位置。这样的测试方式导致无法确认存储器的测试覆盖率与测试效率,进而导致测试过程没有参考意义且测试结果充满不可靠性。

综上所述,可知现有技术中长期以来一直存在没有待测存储器的有效错误筛选机制及错误区段定位机制的问题,因此有必要提出改进的技术手段,来解决此一问题。



技术实现要素:

有鉴于现有技术存在没有待测存储器的有效错误筛选机制及错误区段定位机制的问题,本发明遂揭露一种依存储器模块的物理地址范围测试存储器的系统及方法,其中:

本发明所揭露的依存储器模块的物理地址范围测试存储器的系统,应用于计算机,计算机中安装存储器模块,该系统至少包含:地址获取模块,用以获取存储器模块的物理地址范围;空间配置模块,用以依据物理地址范围于存储器模块所提供的储存空间中配置内存区段;测试模块,用以测试内存区段。

本发明所揭露的依存储器模块的物理地址范围测试存储器的方法,应用于计算机,计算机中安装存储器模块,其步骤至少包括:获取存储器模块的物理地址范围;依据物理地址范围于存储器模块所提供的储存空间中配置内存区段;测试内存区段。

本发明所揭露的系统与方法如上,与现有技术之间的差异在于本发明通过获取特定存储器模块的物理地址范围后,依据所取得的物理地址范围配置内存区段,并对所配置的内存区段进行测试以测试特定存储器模块,藉以解决现有技术所存在的问题,并可以达成减少存储器测试时间的技术功效。

附图说明

图1为本发明所述的依存储器模块的物理地址范围测试存储器的系统架构图。

图2为本发明所述的依存储器模块的物理地址范围测试存储器的方法流程图。

【符号说明】

100 计算机

101 存储器模块

103 存储器管理系统

110 地址获取模块

120 空间配置模块

130 测试模块

140 互动模块

具体实施方式

以下将配合图式及实施例来详细说明本发明的特征与实施方式,内容足以使任何本领域技术人员能够轻易地充分理解本发明解决技术问题所应用的技术手段并据以实施,藉此实现本发明可达成的功效。

本发明可以获取特定存储器模块(Dual In-line Memory Module,DIMM)的物理地址(physical address)范围,并依据所取得的物理地址范围配置内存区段,使得被配置的内存区段与特定存储器模块的物理地址范围完全相符,藉以由测试所配置的内存区段来完成特定存储器模块的测试。

以下先以「图1」本发明所述的依存储器模块的物理地址范围测试存储器的系统架构图来说明本发明的系统运作。如「图1」所示,本发明的系统含有地址获取模块110、空间配置模块120、测试模块130、以及可附加的互动模块140。

地址获取模块110负责获取与安装于计算机100内的主机板(图中未示)上的插槽(slot)连接的各个存储器模块101的物理地址范围。一般而言,地址获取模块110可以根据插槽识别码(Socket ID)、存储器控制器识别码(MC ID)、存储器通道识别码(Channel ID)、存储器模块识别码(DIMM ID)、存储芯片区块识别码(Rank ID)判断出安装于计算机100内的各个存储器模块101的物理地址范围,也就是各个存储器模块101的起始物理地址与结束物理地址。在部分的实施例中,地址获取模块110可以先由插槽识别码、存储器控制器识别码、存储器通道识别码、存储器模块识别码、以及存储芯片区块识别码判断存储芯片区块地址(Rank Address),并由存储芯片区块地址、存储器通道识别码、存储器模块识别码、以及存储芯片区块识别码判断存储器通道地址(Channel Address),再由存储器通道地址、插槽识别码、存储器控制器识别码、以及存储器通道识别码判断物理地址。但地址获取模块110获取存储器模块101的物理地址范围的方式并不以上述为限。

空间配置模块120负责依据地址获取模块110所获取的物理地址范围于安装于计算机100内的存储器模块101所产生的存储器中配置内存区段。如此,空间配置模块120所配置的内存区段便会符合地址获取模块110所获取的物理地址范围,也就是空间配置模块120所配置的内存区段会对应到拥有地址获取模块110所获取的物理地址范围的存储器模块101。

一般而言,空间配置模块120包含于核心程序(kernel)中,可以遍历(traversal)计算机100的存储器管理系统103所使用的存储器管理结构,藉以搜寻符合地址获取模块110所获取的物理地址范围的一个或多个页面(page),并将所搜寻到的页面的识别数据由计算机100的存储器管理系统103所管理的可用内存(available memory)链表中移除。如此,符合地址获取模块110所获取的物理地址范围将不再是可被配置与写入的内存区段,而是仅有记录地址获取模块110所获取的物理地址范围的本发明的系统可以存取。

测试模块130负责测试空间配置模块120所配置的内存区段,通常也就是对地址获取模块110所获取的物理地址范围进行读取与写入的操作,如此即可以对拥有地址获取模块110所获取的物理地址范围的存储器模块101进行读写的测试。

测试模块130可以将对地址获取模块110所获取的物理地址范围(也就是空间配置模块120所配置的内存区段)分割为多个内存区段,测试模块130所分割出的内存区段的数量小于或等于计算机100内的所有中央处理器的处理核心(core)总数(例如,计算机100内有两个中央处理器,且每一个中央处理器分别有八个处理核心,则测试模块130可以分割出十六个内存区段或少于十六个内存区段),且各个被分割出的内存区段的大小通常相同或相近。测试模块130也可以分别为多个处理核心配置测试线程(thread),每一个测试线程对应一个测试模块130所分割出的内存区段,且每一个测试线程所对应的内存区段不同,所有的测试线程可以对应到全部的内存区段。其中,配置有测试线程的处理核心的数量通常与测试模块130所分割出的内存区段的数量相同,在配置有测试线程的处理核心执行测试线程时,测试线程所对应的内存区段代表的物理位置范围(内存区段)将会被测试。由于计算机100内的所有的处理核心可以同时运作,因此,当所有配置有测试线程的处理核心同时执行测试线程时,地址获取模块110所获取的物理地址范围(也就是空间配置模块120所配置的所有内存区段)便可以在一个处理核心执行一次测试线程的时间上完成,也就是说,本发明测试特定存储器所需的时间可以只是一个测试线程测试特定存储器的部分内存区段的时间,数倍快于传统对一整个存储器测试所需的时间。

在部分的实施例中,测试模块130也可以在完成测试后产生相对应的测试报告,藉以明确的指出特定插槽上的特定存储器模块的状况,例如某个插槽上的某个存储器模块有错误等。

互动模块140可以提供选择进行测试的存储器模块101。一般而言,互动模块140包含显示单元(图中未示)与输入单元(图中未示),其中,显示单元可以显示文字描述或图形使得使用者了解计算机100上有多少插槽与多少存储器模块、以及插槽与存储器模块的连接关系等,方便使用者使用输入单元选择预测式的存储器模块101,但本发明并不以此为限。

接着以一个实施例来解说本发明的运作系统与方法,并请参照「图2」本发明所述的依存储器模块的物理地址范围测试存储器的方法流程图。

首先,在计算机100启动后,核心程序可以载入存储器模块的驱动程序。

之后,地址获取模块110可以获取特定存储器模块的物理地址范围(步骤220)。在本实施例中,若计算机100上安装有两条存储器模块,每条存储器模块可提供2GB的储存空间,假设地址获取模块110获取第二条存储器模块的物理地址范围。

在地址获取模块110获取存储器模块的物理地址范围(步骤220)后,空间配置模块120可以依据地址获取模块110所获取的物理地址范围在所有存储器模块所提供的储存空间中配置内存区段(步骤230)。在本实施例中,假设计算机100的操作系统为Linux,Linux的存储器管理系统使用五个阶层的存储器管理结构,由最上层至最底层分别为node、zone、migrationType、order、page,其中,所有存储器模块所提供的储存空间被格式化成多个进行管理,每一个页面根据相对应的真实存储器的物理位置以及相邻页面的逻辑连结状况被归入相对应的zone中的migrationType的order链表中,而每一个zone又被划归入更高层次的node进行管理。因此,空间配置模块120首先可以遍历node层,并在遍历的过程中判断地址获取模块110获取存储器模块的物理地址范围与当前遍历到的node所辖的存储器范围的匹配程度。如果没有交集,继续遍历下一个node;如果存在交集,则遍历存在交集的node下一层的各个zone。如果地址获取模块110获取存储器模块的物理地址范围和当前遍历到的zone所辖存储器范围不存在交集则继续遍历下一个zone,否则遍历该zone下一层的所有migrationType。如果地址获取模块110获取存储器模块的物理地址范围和当前遍历到的migrationType所辖存储器范围不存在交集则继续遍历下一个migrationType,否则遍历该migrationType下一层的所有order。如果地址获取模块110获取存储器模块的物理地址范围和当前遍历到的order所辖存储器范围不存在交集则继续遍历下一个order,否则将当前遍历到的order中所辖存储器范围与地址获取模块110获取存储器模块的物理地址范围相符的page从可用内存链表中删除并接回删除page后的内存链表即完成内存区段的配置。

在空间配置模块120在所有存储器模块所提供的储存空间中配置内存区段(步骤230)后,测试模块130可以对空间配置模块120所配置的内存区段进行测试(步骤240),也就是对地址获取模块110获取存储器模块的物理地址范围进行测试,并可以在完成测试后产生相对应的测试报告(步骤250)。在本实施例中,假设计算机100配置有一个中央处理器,且该中央处理器有四个处理核心,则测试模块130可以将地址获取模块110获取的物理地址范围分割为大小相同的四个内存区段,并为四个处理核心分别配置一个对应至不同内存区段的测试线程,使得各个处理核心在执行测试线程后便可以完成对空间配置模块120所配置的内存区段的测试。如此,在本实施例中,本发明测试存储器的速度将比传统测试存储器的速度快上四倍。

上述的实施例中,若计算机100包含互动模块140,则在地址获取模块110获取特定存储器模块的物理地址范围(步骤220)前,互动模块140可以提供使用者选择欲进行测试的存储器模块(步骤210)。

综上所述,可知本发明与现有技术之间的差异在于具有获取特定存储器模块的物理地址范围后,依据所取得的物理地址范围配置内存区段,并对所配置的内存区段进行测试以测试特定存储器模块的技术手段,藉由此一技术手段可以解决现有技术所存在没有待测存储器的有效错误筛选机制及错误区段定位机制的问题,进而达成减少存储器测试时间的技术功效。

再者,本发明的依存储器模块的物理地址范围测试存储器的方法,可实现于硬件、软件或硬件与软件的组合中,亦可在计算机系统中以集中方式实现或以不同元件散布于若干互连的计算机系统的分散方式实现。

虽然本发明所揭露的实施方式如上,惟所述的内容并非用以直接限定本发明的专利保护范围。任何本发明所属技术领域中的技术人员,在不脱离本发明所揭露的精神和范围的前提下,对本发明的实施的形式上及细节上作些许的更动润饰,均属于本发明的专利保护范围。本发明的专利保护范围,仍须以所附的权利要求书所界定者为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1