使用存储器映射函数来映射存储器缺陷的系统和方法

文档序号:6466410阅读:148来源:国知局
专利名称:使用存储器映射函数来映射存储器缺陷的系统和方法
技术领域
本发明主要涉及计算机系统和信息处理系统,以及更具体地,涉及通过 电脑系统或者信息处理系统来创建管理存储器的使用的存储器映射表的系 统和方法。
背景技术
随着信息的价值和使用的持续增加,个人和商务寻求额外的方式来处理 和存储信息。对于这些用户来说一个可行的选择是信息处理系统。信息处理 系统通常为商务、个人或者其它目的处理、编译、和/或传输信息或数据从而 允许用户利用信息的价值。因为不同用户或应用之间的技术和信息处理的需 要和要求不同,所述信息处理系统根据处理信息的类型,处理信息的方法, 用于处理、存储或传输信息的方法,处理、存储或传输的信息量,以及处理、 存储或传输信息的速度和效率可能不同。信息处理系统的变化允许信息处理 系统通用或者为特定用户或者特定使用来设置,所述特定使用例如金融交易 处理、机票预定、企业数据存储或全球通信。另外,信息处理系统可以包括 或包含可以被配置用于处理、存储和传输信息的多种硬件或者软件组件,以 及可以包括一个或者多个计算机系统、数据存储系统和网络系统。
信息处理系统通常包括多种临时信息存储介质,例如随机存取存储器。 在目前的计算机中,信息处理系统包含的存储量可以是千兆字节级的。随着 存储器大小的增加,存储器的部分制造有缺陷或者使用一段时间而产生缺陷 的可能性大大增加。如果不进行管理,无论有缺陷的存储器单元的大小是多 少,有缺陷的存储器单元的存在可能会引起信息处理系统故障。该故障可能 会引起信息处理系统的当前操作的突然终止,造成关键数据的丢失,或者可
能阻碍信息处理系统完全启动。
随着系统的持续发展和计算机技术的进步,CPU和存储器之间的操作关 系变得更加重要。现代系统的许多属性(特别是多核处理器和虚拟化的全面 引入)都迫使存储器容量不断增长。因此,不只是系统存储器占整个解决方 案成本的比重变得更大,而且存储器中的错误行为可能会在与服务相关的生 命周期成本上具有更大的不利影响。传统地,嵌入的缺陷纠正方案被成功用
来避免单字节错误的"碰撞(crash)"并用来检测多字节败坏(multi-bit corruption)。然而,随着存储器的体积变小以及存储器容量增大,有必要增 加可以被快速利用并安在存储器模块本身上的其它级别的服务保护。

发明内容
本发明公开了用于在信息处理系统中管理存储器缺陷的系统和方法。更 具体地,本发明包括用来产生可用存储器映射表的系统和方法,该存储器映 射表排除包括缺陷存储部分的存储器位置。在信息处理系统中,本地存储器 缺陷映射表与存储器设备相连接,该本地存储器缺陷映射表包括存储器设备 中的缺陷存储部分的位置的信息。随着系统可用存储器映射表的创建,包括 缺陷存储部分的可用存储器区域从可用存储器映射表被排除。所述可用存储 器映射表被逐渐地传送到操作系统中,所述操作系统只使用那些被指定为可 用的或者无缺陷的存储器区域。
由于提供了减少缺陷存储部分的功能和经济上的影响的机制,所以这里 公开的系统和方法具有技术上的优势。具体地,本发明提供了一种使得信息 处理系统正常操作的方法,该方法在存在一个或者多个缺陷存储部分时,对 系统的性能有最小的影响。通过有效地隐藏操作系统的缺陷存储块,更好地 避免了信息处理系统的碰撞。而且,通过隔离缺陷存储部分,本发明延长了 存储器的寿命。由于即使在发现多个存储部分有缺陷后也不需要更换存储
器,信息处理系统的整个系统的成本也相应地减少。


通过结合附图参考下面的描述,可以获得对本发明实施方式及其优点的 更完整的理解,其中相同的参考标记代表相同的特征,其中 图1是一般的信息处理系统的结构图2A显示了用于一般信息处理系统的可寻址的存储器空间; 图2B显示了不包括缺陷块的可用存储器映射表的存储器空间; 图3是描述了存储器映射函数的执行的流程图; 图4显示了用于存储器映射调用(call)的执行的编码流程。
具体实施例方式
为了公开的目的,信息处理系统可以包括任何手段或者手段的集合,所 述手段用于计算、分类、处理、发送、接收、获取、创建、交换、存储、显 示、声明、检测、记录、复制、操作或者利用任何形式的用于商业、科学、 控制或者其他目的的信息、指令或者数据。例如,信息处理系统可以是个人 计算机、网络存储设备或者其他合适的设备,并且可以在大小、形状、性能、 功能和价格上有所不同。所述信息处理系统可以包括随机存取存储器 (RAM)、 一个或者多个诸如中央处理单元(CPU)或者硬件或软件控制逻 辑的处理资源、ROM、和/或其他类型的非易失性存储器。所述信息处理系 统的附加组件可以包括一个或者多个磁盘驱动器、 一个或者多个用于与外部 设备进行通信的网络端口以及各种输入和输出(I/O)设备,例如键盘、鼠 标和视频显示器。所述信息处理系统还可以包括一个或者多个用于在所述各 种硬件组件之间发送通信信息的总线。
图1显示了一般的信息处理系统的结构图。所述一般的信息处理系统5
的处理器或CPU 10通信连接到存储器控制中心或北桥30。存储器控制中心 30与存储器20和图形处理单元40连接。存储器控制中心30还连接I/O控 制中心或南桥60。 I/O中心60连接到计算机系统的存储元件,所述存储元 件包括诸如用于计算机系统的基本输入/输出系统(BIOS)的快闪ROM的 存储元件50和计算机系统的硬盘驱动器112。I/0中心60还可以连接到新一 代I/O芯片80,该芯片自身连接到计算机系统的许多I/O端口 ,包括键盘90、 鼠标100和并行端口。
在信息处理系统10的启动期间,系统的组件在BIOS启动期间被初始 化。初始化过程包括完成初始化后映射操作系统(OS)可用的系统存储器。 系统存储器映射表由BIOS创建并通过存储器映射调用传输到OS,所述存 储器映射调用例如INTI5-E820。在BIOS初始化期间,存储在本地存储器缺 陷映射表的存储器缺陷信息被翻译成系统存储器缺陷映射表。操作系统利用 对BIOS存储器映射函数的迭代调用来产生完整的可用存储器映射表。完整 的可用、不可用的映射表细节,以及可收回的高级配置与电源接口 (ACPI) 被写入地址范围。
图2A是在信息处理系统内被存储器映射调用检查的存储器空间的框 图,所述存储器映射调用例如E820调用。信息处理系统10可以包括多个不
同的能够作为存储器被寻址的组件,所述组件包括双列直插式存储模块 (DIMM) 120和PCI设备130,例如独立显卡。在BIOS初始化期间检查包 括寻址存储器的设备,并在存储器扫描操作期间在这些设备中扫描和确定系 统可用的存储器。所述存储器扫描操作从系统中具有最低的可能地址110的 存储器开始,并反复询问可能的存储器位置。存储器扫描操作连续检查所有 可寻址的存储器位置,包括存储块124、 125和126,即使存储块125包括存 储器缺陷。随着系统可用存储器的定位,包括DIMM 120,基于存储器区域 中的存储器类型确定该存储器区域。这些基于类型的存储器区域名称可以被
存储在多个位置,包括CMOS或RAM。
与本发明一致,所述BIOS在启动自检(POST)期间也基于已知的存储 器缺陷生成系统存储器缺陷映射表。关于先前检测的存储器缺陷的信息可以 被存储在多个位置,包括DIMM模块的串行存在检査(SPD)电可擦除可编 程只读存储器(EEPROM),所述SPD EEPROM包括相关的缺陷存储器单元。 在BIOS初始化期间,读取存储的本地缺陷映射表来确定相应的DIMM中的 存储器缺陷块的位置。然后,该信息被转化为系统存储器缺陷映射表,所述 系统存储器缺陷映射表用来存储在系统级确定缺陷存储块的信息。在系统存 储器缺陷映射表中,例如,存储器缺陷块可以用系统存储器地址空间中的起 始地址、存储块的长度、以及指示存储块是否包括缺陷存储器的标记来表示。 相比而言,用于每个存储设备的本地存储器缺陷映射表可以简单地为在相应 的存储设备的连续确定的块中的一系列代表缺陷存储器存在的或不存在的 标记。可能存在更复杂的本地存储器缺陷映射表,但不考虑复杂程度,本地 存储器缺陷映射表中的信息应该被转化到被OS使用的系统存储器地址空间 中。该函数可以被BIOS最好地执行,尽管OS也可以执行该函数。
OS通过调用存储器映射函数来最终确定其可用的存储器,所述存储器 映射函数例如INT15-E820调用。与本发明一致,存储器映射函数读取被存 储器扫描操作确定的存储器区域的存储器类型,并且也读取系统存储器缺陷 映射表。存储器映射函数可以检查重叠部分来确定系统存储器缺陷映射表所 指示的存储器检测块是否符合被存储器扫描操作所确定的存储器类型区域 的边界。然后存储器映射函数将信息返回到指示可用存储器的下一个区域的 0S。因为在E820调用期间参考系统存储器缺陷映射表,缺陷存储块不会被 确定为可用存储器。因此,操作系统不知道或者无法进入缺陷存储器,而是 只看到可用的和无缺陷的存储器。从而,缺陷存储器被有效的隔离而不用使 用软件并且不会有任何硬件性能的降低。
图2B是可用存储器映射表的框图,其中计算机系统的存储器中的不可 用或者缺陷位置从电脑系统中被逻辑地映射出(mapout)。例如,在可用存 储器映射表中包括存储块124和126,但是不包括含有缺陷存储部分的存储 块125。
映射出缺陷存储块的一种方法包括在BIOS启动自检(POST)期间创建 完整的系统存储器缺陷映射表以及存储每个存储器映射表的项(entry)直到 OS请求它。因为每个标准E820项是20字节,然而,使用该方法映射任何 大量的缺陷需要大量存储空间。例如,因为8DIMM系统支持每个DIMM8 个缺陷,该方法可以创建64个保留项和64个可用项,以及用于基本存储器、 信头差错控制基(HECBase)、回收区域以及低于4GB的保留区域的标准项。 BIOS运行时间区域中这些总计132个项或2640个字节。该存储器的数量足 够大从而需要放置在F000之外的保留存储区域,减慢了映射表信息的读取 并阻碍了有限的存储资源。
映射存储器的另一种方法可以在E820项的创建期间负责扫描本地存储 器缺陷映射表,例如从DIMM的SPD中扫描,在OS调用存储器映射函数 时翻译本地存储器缺陷映射表并实时返回漏洞。该方法需要大量的时间来处 理数据,从而造成了更长的启动时间。
在用缺陷信息创建系统存储器缺陷映射表的第三种方法中,映射表可以 在POST期间被创建来用于DIMM缺陷数据中描述的全部保留区域。使用有 效的寻址技术,每项的大小可以被减小到8字节。在先前描述的8 DIMM系 统中,整个映射表可以小到512字节,在大小上縮小了 5倍。该方法比E820 调用的当前版本需要更智能的存储器映射函数,以及可以执行诸如保留存储 器缺陷映射表中的指针偏移的算法(例如,位于DIMMSPD中),所述存储 器缺陷映射表是在POST以及在结构中向前和向后扫描来确定下一项的类 型、重叠部分等的期间创建的。
在更有效的存储器映射算法的一个实施例中,延拓值(continuation value)会临时存储关于迭代调用存储器映射函数的过程的信息。延拓值可以 被存储在例如一般的信息处理系统的BX寄存器中。图3描述了执行有效的 存储器映射算法的一种可能的事件次序。初始化启动系统305和开始POST 过程310。作为POST的一部分,扫描存储器空间315来确定哪些位置被保 留用于其它设备,哪些位置是可收回的,以及哪些位置是可用的。然后,读 取本地存储器缺陷映射表317,之后创建系统存储器缺陷映射表318。在 POST过程结束后319, OS初始化第一存储器映射调用320。
在存储器映射调用期间,BIOS首先检查延拓值来确定如果有先前调用, 先前调用在哪里停止325。如果没有进行先前调用,延拓值仍会处于初始状 态,指向存储器缺陷映射表的零地址。BIOS读取延拓值指示的偏移量处的 存储器缺陷映射表的项330,以及将该存储器位置与保留的和可收回的存储 器地址比较335,所述存储器地址在先前的存储器扫描315中被确定并存储 在CMOS或存储器中。在使任何重叠部分一致后,BIOS产生存储器映射函 数调用所需要的存储器映射表的项340。然而在将存储器映射表的项传到OS 350之前,BIOS更新延拓值来通过存储器缺陷映射表反映其过程345。 一旦 存储器映射表的项被发送到OS 350, OS确定延拓值是否指示可用存储器空 间的末尾355。如果延拓值指示可用存储器空间的末尾,则在迭代过程的终 止处完成存储器映射函数360。如果延拓值不指示可用存储器空间的末尾, 则以BIOS检査延拓值来确定该延拓值在哪里停止325为起始,重复存储器 映射调用。
本领域的技术人员可以理解能用多种方法构造延拓值来执行上述存储 器映射算法。在一个执行方式中,可以使用单个比特来确定下一个存储器映 射表的项是否落入缺陷存储块。假设大小是128项或者更小的存储器缺陷映 射表,7比特足够用来将偏移量存储到在存储器映射迭代期间从存储器缺陷 映射表中读取的当前或者先前的位置。可以使用另一个比特来确定当前存储
位置是否大于4GB的阈值,以及另外两个比特可以用作计数器来指示从超 过4GB阈值开始多少项被创建。
为了进一步减小单个存储器映射表的项的大小,可以调整每个存储器映 射的项的字段的过量寻址能力。例如,在传统的E820映射表中,每个存储 器映射表的项包括基本地址、被传送到存储器映射表的存储块的大小以及存 储器的类型。当从存储器映射表中排除缺陷存储部分时,由于具有大于1GB 容量的DIMM仍然非常少见,正在讨论的对应于存储块的大小的存储器映 射表的项的字段长度能够被减小到兆比特的范围。同样地,由于只有3个普 通类型的存储器被返回到0S,表示存储器类型的存储器映射表的项的字段 长度可以被减小到两比特。
图4显示了用来执行上述第三种方法的可能的编码次序,其中,在POST 期间创建系统存储器缺陷映射表来用于在本地存储器缺陷映射表中发现的 项。首先,项处理器400使用延拓值来确定特定处理程序用于调用特定程序 和基本缺陷检査。接下来,进行第一次INT15 E820调用410。在第一次INT15 调用410期间,将偏移量初始化到表格和返回的项中并返回标准基本存储器 区域。第二次INT15调用430包括5个步骤。第一,信息处理系统检查可用 的存储器缺陷项和用于起始地址的重叠部分。然后,检查无效的范围和大小 的结构数据。第三,信息处理系统检查下一项的类型和与保留区域重叠的部 分。第四,为下一项的类型设置标记和偏移量以及进行程序调用。最后,将 需要的项的类型以及相关的地址和范围一起返回。
后面的INT15调用对于大于4千兆比特和小于4千兆比特的存储器范围 而有所不同。如果存储器范围小于4千兆比特,INT15调用460首先检查偏 移量和标记来确定需要的项的注册类型。然后,检查结构数据的不可用范围 和大小。第三,信息处理系统检査重叠部分和需要的范围。第四,信息处理
系统通过进行结构扫描来确定下一个项、设置标记和偏移量。第五,将需要 项的类型和相关的地址和范围一起返回。最后,系统检查当前项是否为小于
4GB的最后的项。对于大于4GB的INT15调用480,信息处理系统首先检 査可用的结构项和重叠部分。接着信息处理系统检查结构数据的不可用范围 和大小。第三,为下一项设置标记和偏移量。最后,将需要项的类型以及计 算的地址和范围一起返回。
尽管该发明描述了信息处理系统中的可用存储器映射表的创建,所述可 用存储器映射表例如E820映射表,应该理解这里描述的存储器映射系统和 方法可以用任何具有潜在缺陷的物理存储器设备执行。虽然已经详细描述了 本发明,但可以理解在不背离所附的权利要求所限定的本发明的实质和范围 的情况下可以做出各种改变、替换和修改。
权利要求
1.一种用于管理存储器缺陷的系统,该系统包括信息处理系统;操作系统;存储器;存储器缺陷映射表,其中所述存储器缺陷映射表包括关于所述存储器的区域位置的信息,所述存储器包括缺陷存储部分;存储器映射函数,其中所述存储器映射函数可操作用来创建可用存储器映射表并将所述可用存储器的映射表发送到所述操作系统,以及其中所述存储器映射函数还可操作用来参考所述存储器缺陷映射表并将包括缺陷存储部分的存储器区域从所述可用存储器映射表中排除。
2、 根据权利要求1所述的系统,其中存储所述存储器缺陷映射表的设 备物理地连接到所述存储器。
3、 根据权利要求1所述的系统,其中所述存储器映射函数是ITN15-E820 存储器描述调用的修改。
4、 根据权利要求1所述的系统,其中所述存储器映射函数在所述操作 系统被初始化之前被调用。
5、 根据权利要求1所述的系统,其中在所述信息处理系统的启动自检 周期期间创建完整的可用存储器映射表。
6、 根据权利要求1所述的系统,其中在所述可用存储器映射表中创建 每一项的期间通过扫描所述存储器缺陷映射表来产生所述可用存储器映射表。
7、 根据权利要求1所述的系统,其中在所述存储器缺陷映射表中指示 的每个被保留的存储器区域的启动自检期间创建所述可用存储器映射表。
8、 根据权利要求1所述的系统,其中所述存储器映射表的项的大小通 过参考存储器经由偏移量而被减少。
9、 根据权利要求1所述的系统,其中所述存储器映射表的项的大小通 过限制对应于存储块的大小的字段的长度而被减小。
10、 根据权利要求1所述的系统,其中所述存储器映射表的项的大小通 过限制对应于在所述调用期间被映射的存储器类型的字段的长度而被减小。
11、 根据权利要求1所述的系统,其中延拓值寄存器存储关于所述存储 器映射函数的过程的信息。
12、 根据权利要求11所述的系统,其中所述延拓值寄存器包括指向所 述存储器缺陷映射表中的位置的偏移量值。
13、 根据权利要求11所述的系统,其中所述延拓值寄存器包括关于被 随后的可用存储器映射表的项所确定的存储器类型的信息。
14、 一种用于管理信息处理系统中的存储器缺陷的方法,该方法包括以 下步骤存储存储器缺陷映射表,所述存储器缺陷映射表包括关于缺陷存储部分 的位置的信息;创建用来由所述信息处理系统使用的可用存储器映射表; 从所述可用存储器映射表中排除包括缺陷存储部分的存储器区域; 使得所述可用存储器映射表能接入所述操作系统。
15、 根据权利要求14所述的方法,其中在所述信息处理系统的启动自 检周期期间创建所述可用存储器的全部映射表。
16、 根据权利要求14所述的方法,其中在创建所述可用存储器映射表 中的每一项期间通过扫描所述存储器缺陷映射表来产生可用存储器映射表。
17、 根据权利要求14所述的方法,其中为在所述存储器缺陷映射表中 指示的每个被保留的存储器区域的启动自检期间创建所述可用存储器映射表。
18、 一种用于创建可用存储器映射表的方法,该方法包括以下步骤 调用存储器映射函数;读取延拓值;基于所述延拓值从存储器缺陷映射表中读取信息; 返回关于可用和无缺陷存储器的位置的信息。
19、 根据权利要求18所述的方法,该方法还包括确定在从所述存储器 缺陷映射表中读取的存储器范围和关于所述存储器范围中的存储器类型的 其它信息之间是否存在重叠。
20、 根据权利要求18所述的方法,其中所述延拓值包括关于所述存储 器映射函数通过所述存储器缺陷映射表迭代的过程的信息。
全文摘要
本发明公开了一种用于管理信息处理系统中的存储器缺陷的系统和方法。更具体地,本发明包括用来产生可用存储器映射表的系统和方法,所述可用存储器映射表排除包括缺陷存储部分的存储器位置。在信息处理系统中,包括有关缺陷存储部分的位置的信息的存储器缺陷映射表被连接到存储设备上。由于系统可用的存储器映射表的创建,包括缺陷存储部分的可用存储器区域从存储器映射表中被排除。存储器映射表被传送到操作系统中,所述操作系统只使用那些被指定为可用的和无缺陷的存储器区域。
文档编号G06F11/22GK101369246SQ20081014571
公开日2009年2月18日 申请日期2008年8月11日 优先权日2007年8月14日
发明者F·E·诺罗德, J·D·派克, M·P·哈尔特里, M·谢泼德, P·D·斯塔尔兹 申请人:戴尔产品有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1