基于tlb-miss的numa内存管理容错方法

文档序号:9489391阅读:302来源:国知局
基于tlb-miss的numa内存管理容错方法
【技术领域】
[0001]本发明涉及处理器技术领域,具体涉及一种基于TLB-MISS的NUMA内存管理容错方法。
【背景技术】
[0002]多核或者多处理器机器上具有多个内存节点时,可能由于内存控制器芯片或者内存颗粒故障导致某个或者某些内存节点无法使用,如果处理器存储控制器不具备自定义内存地址能力,而是根据内存控制器芯片编号或者内存颗粒位置固定编排内存物理地址,就将形成内存地址空洞。
[0003]NUMA (Non-Uniform Memory Access,非统一内存访问)指的是这样一种技术,其中多核或者多处理器机器上具有多个内存节点,从处理器发出的对不同内存节点的访问时间不相同。
[0004]NUMA操作系统一般提供了非连续物理地址的管理,但操作系统内核自身却必须处于从0开始的低段物理内存中。而操作系统内核引导对物理地址的地址编排较为敏感,尤其是系统内核自身所处内存的物理地址。操作系统内核通常假设自身所处的内存位于从0开始的物理内存的低段内存地址中,比如1MB的位置。如果机器上由于内存空洞没有配置这段物理地址,会导致内核引导的失败。

【发明内容】

[0005]本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提出了一种基于TLB-MISS的NUMA内存管理容错方法,从而解决了 NUMA操作系统上,由于内存控制器故障或者颗粒故障导致低段物理地址缺失时的操作系统引导问题。而且,根据本发明的基于TLB-MISS的NUMA内存管理容错方法可以由处理器微代码实现,且对操作系统内核完全透明。
[0006]根据本发明,提供了一种基于TLB-MISS的NUMA内存管理容错方法,其特征在于包括:
[0007]第一步骤:处理器上电进入微代码处理入口 ;
[0008]第二步骤:判断内存在位情况,计算在位内存物理地址中最低地址与0的差值;
[0009]第三步骤:保存所述差值;
[0010]第四步骤:清除处理器上所有TLB条目;
[0011]第五步骤:执行处理器内核的虚地址入口,以开始运行处理器内核代码;
[0012]第六步骤:在运行处理器内核代码的过程中触发处理器TLB-MISS异常,进入TLB-MISS异常处理入口以执行TLB-MISS异常处理程序;
[0013]第七步骤:在TLB-MISS异常处理程序中根据所述差值计算虚地址和物理地址的对应关系,并根据所述对应关系填入正确的TLB条目;
[0014]第八步骤:退出TLB-MISS异常处理程序,返回触发TLB-MISS异常的代码并重新执行所述触发TLB-MISS异常的代码。
[0015]优选地,在第三步骤将所述差值填入处理器内部寄存器。
[0016]由此,本发明能够有效地解决低段物理地址未配置的情况下操作系统内核引导的容错问题。具体地,根据本发明的基于TLB-MISS的NUMA内存管理容错方法解决了 NUMA操作系统上,由于内存控制器故障或者颗粒故障导致低段物理地址缺失时的操作系统引导问题。而且,根据本发明的基于TLB-MISS的NUMA内存管理容错方法可以由处理器微代码实现,且对操作系统内核完全透明。
【附图说明】
[0017]结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
[0018]图1示意性地示出了根据本发明优选实施例的基于TLB-MISS的NUMA内存管理容错方法的流程图。
[0019]需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
【具体实施方式】
[0020]为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
[0021 ] 操作系统所使用的内存从逻辑上看有两个方面,一是操作系统内核自身所处的内存,二是操作系统管理的可供分配的物理内存。操作系统内核自身也是一个可执行文件构成的,当处理器引导时,会有更加底层的Bootloader代码(操作系统内核运行之前运行的一段小程序)将内核可执行文件加载到固定的物理地址区域。通常情况下,Bootloader代码和内核均假设内核所处的内存物理地址是固定的,当该段物理地址由于某种原因不存在时,会发生引导故障。本发明提出的技术即针对上述情况。下面将描述本发明的具体优选实施例。
[0022]图1示意性地示出了根据本发明优选实施例的基于TLB-MISS的NUMA内存管理容错方法的流程图。
[0023]如图1所示,根据本发明优选实施例的基于TLB-MISS的NUMA内存管理容错方法包括:
[0024]第一步骤S1:处理器上电进入微代码处理入口 ;
[0025]第二步骤S2:判断内存的可访问情况(即,针对所有内存判断内存是否可访问),并且计算在位内存(即,可访问内存)的物理地址中最低地址与0的差值;
[0026]其中,例如,可能由于部分内存条未插在对应的内存插槽上而导致内存区域不可访问,或是例如由于某些焊接在PCB板上的内存颗粒因为某种故障导致的部分内存区域不可问。
[0027]第三步骤S3:保存所述差值;例如,可以在第三步骤S3将所述差值填入处理器内部寄存器;
[0028]第四步骤S4:清除处理器上所有TLB条目;
[0029]其中,TLB (Translat1n Lookaside Buffer,段表后备缓冲器或翻译后援缓冲器)是一种处理器内部缓存,用于存放虚拟地址到物理地址的映射关系,而且还可用于存储单元加速虚拟地址到物理地址的代换速度。
[0030]第五步骤S5:执行处理器内核程序的第一条指令,所述第一条指令的地址为虚地址(即,执行处理器内核的虚地址入口),由此开始运行处理器内核代码;
[0031]换言之,内核的虚地址入口指的是内核的第一条指令,该指令对应的地址为虚地址。
[0032]第六步骤S6:在运行处理器内核代码的过程中触发处理器TLB-MISS异常,进入TLB-MISS异常处理入口以执行TLB-MISS异常处理程序;
[0033]“TLB-MISS”指的是处理器将虚拟地址在代换到物理地址时,未在TLB中查找到代换关系。
[0034]第七步骤S7:在TLB-MISS异常处理程序中根据所述差值计算虚地址和物理地址的对应关系,并根据所述对应关系填入正确的TLB条目;
[0035]第八步骤S8:退出TLB-MISS异常处理程序,返回触发TLB-MISS异常的代码并重新执行所述触发TLB-MISS异常的代码。
[0036]上述处理流程的关键步骤有两处,一是第二步骤S2,一处是第七步骤S7。第二步骤S2是初始化时的“预处理”阶段,此时尚未运行内核代码。预先根据内存在位情况进行计算,得到在位物理地址中最低地址与0的差值。第七步骤S7是首次执行内核代码时触发,是运行时的“后处理”阶段,处理器会根据第二步骤S2中计算得到的差值装填正确的条目,确保内核可执行。
[0037]根据本发明优选实施例的基于TLB-MISS的NUMA内存管理容错方法结合采用“预处理”和“后处理”的方式,解决了 NUMA操作系统上,由于内存控制器故障或者颗粒故障导致低段物理地址缺失时的操作系统引导问题,操作系统内核无需修改虚地址入口,对操作系统内核透明。
[0038]本发明的优点在于针对内存控制器故障或者颗粒故障导致低段物理地址缺失时的操作系统引导问题,结合采用“预处理”和“后处理”的方式,预处理针对内存在位情况,预先计算出差值,“后处理”针对运行时的内核代码执行,触发TLB-MISS并装填正确的条目,保证内核正确执行。“预处理”和“后处理”结合进行,性能开销小。另外,该技术在处理器微代码中实现,对内核程序完全透明。
[0039]可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
【主权项】
1.一种基于TLB-MISS的NUMA内存管理容错方法,其特征在于包括: 第一步骤:处理器上电进入微代码处理入口 ; 第二步骤:判断内存在位情况,计算在位内存物理地址中最低地址与0的差值; 第三步骤:保存所述差值; 第四步骤:清除处理器上所有TLB条目; 第五步骤:执行处理器内核的虚地址入口,以开始运行处理器内核代码。2.根据权利要求1所述的基于TLB-MISS的NUMA内存管理容错方法,其特征在于还包括: 第六步骤:在运行处理器内核代码的过程中触发处理器TLB-MISS异常,进入TLB-MISS异常处理入口以执行TLB-MISS异常处理程序; 第七步骤:在TLB-MISS异常处理程序中根据所述差值计算虚地址和物理地址的对应关系,并根据所述对应关系填入正确的TLB条目; 第八步骤:退出TLB-MISS异常处理程序,返回触发TLB-MISS异常的代码并重新执行所述触发TLB-MISS异常的代码。3.根据权利要求1或2所述的基于TLB-MISS的NUMA内存管理容错方法,其特征在于,在第三步骤将所述差值填入处理器内部寄存器。
【专利摘要】本发明提供了一种基于TLB-MISS的NUMA内存管理容错方法,包括:处理器上电进入微代码处理入口;判断内存在位情况,计算在位内存物理地址中最低地址与0的差值;保存所述差值;清除处理器上所有TLB条目;执行处理器内核的虚地址入口,以开始运行处理器内核代码;在运行处理器内核代码的过程中触发处理器TLB-MISS异常,进入TLB-MISS异常处理入口以执行TLB-MISS异常处理程序;在TLB-MISS异常处理程序中根据所述差值计算虚地址和物理地址的对应关系,并根据所述对应关系填入正确的TLB条目;退出TLB-MISS异常处理程序,返回触发TLB-MISS异常的代码并重新执行所述触发TLB-MISS异常的代码。
【IPC分类】G06F12/0891, G06F12/0837
【公开号】CN105243029
【申请号】CN201510831797
【发明人】王星焱, 郑岩, 黄高阳, 陈斐, 朱蕾
【申请人】无锡江南计算技术研究所
【公开日】2016年1月13日
【申请日】2015年11月24日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1