CN102110036B - 控制系统中的存储器冗余度 - Google Patents

控制系统中的存储器冗余度 Download PDF

Info

Publication number
CN102110036B
CN102110036B CN201010625095.8A CN201010625095A CN102110036B CN 102110036 B CN102110036 B CN 102110036B CN 201010625095 A CN201010625095 A CN 201010625095A CN 102110036 B CN102110036 B CN 102110036B
Authority
CN
China
Prior art keywords
memory
node
page
memory node
access request
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.)
Active
Application number
CN201010625095.8A
Other languages
English (en)
Other versions
CN102110036A (zh
Inventor
R·C·斯旺森
M·S·纳图
R·卡纳
M·K·纳奇穆图
S·贾亚库马尔
A·S·克沙夫阿穆蒂
N·兰加纳萨恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102110036A publication Critical patent/CN102110036A/zh
Application granted granted Critical
Publication of CN102110036B publication Critical patent/CN102110036B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一个实施例,本发明提供处理在高可用性系统中的存储器迁移操作期间出现的错误的能力。另外,一种方法可用于将存储在存储器的非镜像存储器区域中的存储器页面动态地再映射到镜像存储器区域。这种动态再映射可以响应于确定访问该存储器页面超过指示关于该页面的信息的临界状态的阈值次数。还描述其它实施例并要求其它实施例的权利。

Description

控制系统中的存储器冗余度
技术领域
本发明涉及控制系统中的存储器冗余度。
背景技术
在现今的无处不在的服务器世界中,保持良好的服务器可靠性和正常运行时间几乎是强制性的。为了保持重要的系统正常运行时间,系统设计者构建了可靠性、可用性、可服务器性、可管理性(RASM)特征以改善总体系统可靠性和可用性。因此,常见的是寻找在系统层级中的不同级上所采用的各种冗余程度、错误校正、错误检测和错误遏制技术。最常见的系统故障类型之一归因于系统存储器错误。因此,存储器子系统(特别是双列直插式存储器模块(DIMM))在这点上受到特别的关注。
尽管现代存储器采用错误校正码(ECC)来检测和/或校正单位和双位错误,但是高阶多位错误仍会对系统可靠性和可用性造成显著的问题。因此,利用像存储器镜像和存储器迁移的技术来减少由于存储器错误引起系统故障的可能性。镜像通常是通过系统硬件和固件来静态地执行的,由此以对于基本的操作系统/虚拟机监视器(OS/VMM)在很大程度上透明的方式来对整个存储器范围提供完全冗余度。但是,这非常不具有成本效益,并且因此往往只部署在非常高端和关键任务的系统上。之所以这样是因为,生效的可用存储器减少到大约一半,而相同量的可用存储器的功率消耗则实际上加倍。并且,由于存储器的成本占总硬件成本的相当大百分比,所以仅仅出于冗余度的目的而使它加倍会对广泛采用造成实际挑战。
在关键任务的服务器上,系统决不应停机或经历操作状态丧失,以使得服务器可实现99.999%的正常运行时间。存储器迁移是在存储器镜像替换时或在控制器级存储器备援(sparing)操作期间触发的另一个平台RAS流。对于存储器镜像替换,假设将存储器节点X和存储器节点Y设置为镜像对,这是因为这两个节点存储相同的数据,例如,X为主节点,Y为从节点。由于各种原因,系统软件可停止镜像,使主节点停电,并令管理员替换主节点的存储器节点。一经替换,便可使主节点和从节点的存储器内容重新同步。这个过程是经由存储器迁移(其中,将存储在节点Y上的信息复制到节点X)来完成的。在控制器级存储器备援中,系统中也可存在非镜像配置的备用存储器节点。如果另一个节点发生故障,则可将这个备用节点“备援”到这另一个节点中。在这种情况下,经由存储器迁移来将退出的存储器节点的内容复制到备用节点。
在存储器镜像模式中,存储器读请求前往主节点,并且存储器写请求送往主节点和从节点。如果主节点上存在不可校正的错误,则从节点将满足该请求。基本上,从节点具有准确的数据副本并提供冗余度。在迁移的情况下,所有读请求送往主节点,而写请求则送往主节点和从节点,这与镜像类似。但是,如果在迁移过程期间在主节点上存在不可校正的错误,则由于从节点没有数据可用,所以从节点将不能满足该读请求,从而导致致命错误并使系统停下(take down)。对于大型存储器配置,存储器迁移会并且确实要花费相当大量的时间。有一种合理的可能是,已经经历造成迁移事件的某些可校正错误的主节点将遇到不可校正的错误,并且在迁移模式中,这种不可校正的错误将使系统死机。
发明内容
本发明涉及一种方法,包括:
将存储在系统的第一存储器节点中的信息迁移到所述系统的第二存储器节点;
在完成所述信息迁移之前,更新与所述第一存储器节点相关联的第一存储器控制器的冗余存储器孔存储(memory aperture storage)以指示从所述第一存储器节点迁移到所述第二存储器节点的所述信息的量;以及
在完成所述存储器迁移之前在所述系统的处理器上执行操作系统(OS)控制的线程,并确定在所述OS控制的线程对所述第一存储器节点的存储器访问请求期间所招致的错误是否是出现在已迁移到所述第二存储器节点的所述第一存储器节点的区域中,如果是,则对所述第二存储器节点重试所述存储器访问请求,否则用信号通知不可校正的存储器错误。
本发明涉及一种包括包含指令的机器可访问存储介质的物品,所述指令在执行时使系统:
确定在第一时间段期间访问存储在存储器的非镜像存储器区域中的第一存储器页面超过第一阈值次数;
将所述第一存储器页面的标识符插入到将迁移到镜像存储器区域的页面的列表中;以及
将来自所述非镜像存储器区域的所述第一存储器页面再映射到所述镜像存储器区域。
本发明涉及一种系统,包括:
多个处理器,所述多个处理器中的每一个耦合到所述处理器中的至少一个其它处理器并且还耦合到系统存储器的一部分,所述系统存储器的所述部分本地耦合到所对应的处理器;以及
所述系统存储器,耦合到所述多个处理器并且为局部镜像配置,其中耦合到第一处理器的所述系统存储器的第一部分将与耦合到第二处理器的所述系统存储器的第二部分局部镜像,其中所述系统存储器包括使得所述系统能够执行以下操作的指令:确定存储在非镜像存储器区域中的第一存储器页面是热页面并将来自所述非镜像存储器区域的所述第一存储器页面动态地再映射到所述第一部分。
附图说明
图1是根据本发明一个实施例的方法的流程图。
图2是根据本发明一个实施例与两个插槽相关联的存储器的框图。
图3是根据本发明一个实施例在插槽之间的通信的框图。
图4是根据本发明一个实施例的系统的框图。
图5是根据本发明一个实施例用于将数据动态地再映射到镜像存储器区域的高级方法的流程图。
图6是根据本发明一个实施例用于选择页面以插入到镜像存储器区域中的示范方法的流程图。
图7是根据本发明一个实施例用于执行页面迁移的方法的流程图。
图8是根据本发明一个实施例的再映射操作的流程图。
具体实施方式
在各种实施例中,在迁移操作期间,管理软件(例如,基本输入输出系统(BIOS))可与系统硬件交互,以便在迁移模式中时在存储器迁移过程期间在主节点遭受不可校正的错误时使得从存储器节点能够处理访问请求。在存储器迁移期间,BIOS可读取高速缓存行(由主节点填充),并将它写回(到主节点和从节点)。以此方式,最终可逐个高速缓存行地将主节点的内容复制到从节点。这称为写上写(WOW,write-on-write)复制。注意,读上写(WOR,write-on-read)以类似方式进行处理,但在BIOS读取高速缓存行之后由硬件本身完成这些写。在迁移期间,由于管理软件开始复制存储器,所以它可区分(disambiguate)已经复制(并且现在冗余)的存储器范围和有待复制(并且仍易有错误)的范围。如果对于主节点在已经复制的范围内出现不可校正的存储器错误,则可校正该错误,并且系统可继续操作。
实施例提供这样一种机制,管理软件可通过该机制来向主节点存储器控制器提供关于已将多少内容复制到从节点的信息。如果出现任何不可校正的错误并且该错误落在已经复制的范围内,则控制器可就像存在镜像配置一样对待它(这就是它的目的),并使从节点满足该请求(如同镜像情形一样)。以此方式,系统可将这种情形作为可校正的错误来对待并继续操作。
在各种实施例中,BIOS或进行WOW(或WOR)复制的其它管理软件可关于已经复制到从节点的范围更新主节点存储器控制器中的寄存器。在一些实现中,为了保护,只可在系统管理模式(SMM)中写入这个寄存器。在存储器迁移操作期间,存储器控制器可利用存在于寄存器中的这个信息来确定在主节点遭受不可校正的错误时从节点是否能够满足该请求。如果能,则存储器控制器请求从节点来满足该请求。换句话说,已经复制的范围将充当镜像对(具有冗余度),而尚未复制的范围将在迁移模式中起作用并且仍易有致命错误,直到经由WOW或WOR复制引擎迁移更多的存储器。
现在参考图1,示出根据本发明一个实施例的方法的流程图。如图1所示,方法100可利用在系统级执行的各种软件并进一步利用例如存储器控制器的硬件来实现以使得能够在存储器迁移操作期间处理有故障的存储器请求。在图1中可见,方法100可在越过错误阈值时(方框105)开始。例如,BIOS可具有阈值集合,存储器迁移应当在该阈值集合内实现。例如,阈值可以是在给定插槽上出现的可校正错误的数量。当越过该阈值时,这指示可能出现存储器镜像系统中的冗余度丧失并且因而应当进行存储器迁移。因此,在方框110,可启动从越过阈值的系统(其可包括备用存储器节点)的插槽(即,第一插槽)到第二插槽的迁移。在一个实施例中,BIOS可启动该迁移。因此,可生成诸如系统管理中断(SMI)的中断以开始迁移(方框115)。
在一个实施例中,迁移操作可以采用时间切片的SMI方式来进行。即,由于要花费相对较长的时间量(例如,一个小时或更长时间)来执行迁移,所以可以采用时间切片的方式来执行迁移以使得能够同时执行有用的工作。因此,控制从方框115转到方框120,在方框120,进行到备用节点的数据迁移。在给定时间切片(在一个实施例中,可以约为32毫秒(ms))结束时,控制转到方框125,在方框125,可在与第一插槽相关联的存储器控制器上进行信息更新。更具体来说,可在例如一个或多个寄存器(一般称为冗余存储器孔寄存器)中设置冗余存储器孔以指示已经成功迁移的冗余数据的量,以便在需要时可以进行访问。然后,控制转到菱形框130,在菱形框130,可确定复制是否完成。如果是,则控制转到方框140,在方框140,系统可继续正常操作。
如果相反,在时间切片结束时迁移未完成,则控制转到方框145,在方框145,OS可在系统的其它时间切片中执行各种有用的工作。在该时间切片中如此执行OS控制的线程期间,可确定是否出现错误(菱形框150)。如果没有,则在给定时间切片结束时,可触发SMI以如上所述那样继续方框115处的迁移。
否则,如果出现错误,则控制可转到系统软件,例如响应SMI中断而触发的SMI处理程序(方框155)。在一个实施例中,早期BIOS处理程序可区分该SMI与其它SMI。如果确定SMI与存储器错误无关(菱形框160),则控制可转到方框165,在方框165,可利用合适的处理程序来处理该错误。如果相反,确定该错误是存储器错误,则控制可转到菱形框170,在菱形框170,可确定该错误是否是出现在镜像区域中。该确定可基于与出错的存储器请求相关联的地址以及对第一插槽的存储器控制器的冗余存储器孔寄存器的分析。
如果这个错误确实是出现在镜像区域、即已经复制到第二节点的区域中,则控制转到方框175,在方框175,存储器控制器可利用第二节点上的数据来重试存储器事务。因此,第一存储器控制器可将存储器事务转发到与第二节点相关联的第二存储器控制器,以便访问已经镜像的部分中的请求数据。这个第二存储器控制器因而可检索该数据并将它发送回到第一插槽的存储器控制器,而第一插槽的存储器控制器又可将所请求的数据转发给寄存器,从而完成事务。以此方式,可校正在存储器迁移期间出现的错误,从而无需为了在存储器迁移期间出现不可校正的错误而重设系统。如果这个错误因而得到校正,则可为存储器请求将经过校正的错误事件记入日志(方框180)。在一个实施例中,BIOS可通过例如断言机器检查来将该错误记入日志。否则,在菱形框170,如果该错误不是出现在已经复制的区域中,则错误可存留,并且控制转到方框165以在合适时处理该错误。例如,在方框165,可以采用常规方式来处理该错误,其中将机器检查用信号通知OS,OS可开始系统的故障转储。尽管在图1的实施例中用该特定实现示出,但本发明的范围在这一点上不受限制。
现在参考图2,示出与两个不同插槽、即第一插槽和第二插槽相关联的存储器的框图。可见,第一插槽存储器210可以处于迁移到第二插槽存储器220的过程中。由于存储器迁移的可能中断的性质以及进行迁移的较长时间段,所以在给定时刻,只有一部分迁移完成。因此,如图2所示,第一插槽存储器210的第一部分215已经成功复制到第二插槽存储器220的部分225中。因此,在复制额外存储器以前,只有当第一存储器210的第一区域215中出现错误时,第二存储器220才可提供数据以解决在第一存储器210上出现的访问错误。
现在参考图3,示出根据本发明一个实施例在插槽之间的通信的框图。如图3所示,第一插槽310可以是包括故障存储器的插槽。具体来说,根据本发明的一个实施例,第一插槽310包括第一存储器控制器320,第一存储器控制器320可包括本地代理325或与本地代理325相关联,而本地代理325又可包括存储区328。在一些实施例中,本地代理325可以是存储器控制器的前端。在一个实施例中,存储区328可以是冗余存储器孔寄存器(memory aperture register),它包括指示在第一系统310与第二系统350之间成功迁移的数据量的各种信息。可见,存储器控制器320可控制对包括模块330a和330b在内的各种存储器模块的访问。第二插槽350中可存在类似硬件,包括可包括第二本地代理365或与第二本地代理365相关联的第二存储器控制器360,并且存储器控制器360也可与诸如模块370a和370b的各种存储器模块通信。可见,模块370b的一部分可包括例如从存储器模块330b迁移过来的冗余数据。因此,在迁移过程期间,如果在已经复制过的存储器330a的这部分中出现访问错误,则可通过存储器控制器360从存储器370b的冗余部分而从第二插槽350获得该数据。否则,可能会出现不可校正的错误。
实施例还可通过利用OS对与页面分配、再映射和使用相关联的信息的了解来控制存储器镜像。存储器错误通常是在存储器读/写周期期间发生的,并且软错误率(SER)随存储器速度和使用强度而增加。例如,100纳秒的存储器循环生成的软错误率可以是刷新模式中的存储器闲置的软错误率的100倍。换句话说,存储器使用的强度可增加软错误的机会。并且,从OS/VMM的观点来看,在任何给定时间,存在密集地读/写的活动页面(称为热页面)的非常小的子集,而剩余页面很大程度上是不活动的(称为冷页面)。此外,OS/VMM控制应用/访客地址空间(即,虚拟地址)到真实系统存储器地址空间(即,物理地址)的映射。实施例可提供OS/VMM支持以利用以上事实通过跟踪频繁使用的页面(即,热页面)并将它们动态地再映射到存储器的镜像区域来提高总体系统可用性。
在许多实现中,不是利用完全存储器镜像,而是可利用局部平台存储器镜像方案来增加总的平台存储器的可用使用率。因此,出于论述的目的,假定系统存储器的至少一些但不是所有区域可配置成启用存储器镜像。例如,镜像可局限于多插槽系统上的单个通道。当只有镜像存储器备援地可用时,需要高效地利用它以便具有更好的系统可用性。系统可在OS/VMM帮助下选择性地镜像对应于软件栈的关键组件的存储器区域。系统固件可将平台配置成将对镜像存储器区域的所有访问冗余地引导向主节点和从节点(例如,镜像)存储器。对于软件栈,这些镜像存储器访问与对存储器的非镜像区域的访问没有什么不同。在主节点上出现存储器错误的情况下,系统将故障透明地转移到镜像存储器(从节点)。
平台可经由例如静态高级配置和电源接口(ACPI)表向OS/VMM提供关于镜像存储器区域的可用性的先验知识。OS/VMM可在引导时间经与表或存储器控制器的类似机制磋商来剖析该表,构造可在该镜像区域内供其使用的物理地址范围。另外,其它表可提供关于镜像和非镜像存储器范围的信息。这样的表可提供从OS角度看可用和预定的存储器地址范围。在一个实施例中,这些表可存在于BIOS中并在引导时间经由ACPI接口提供给OS。注意,尽管OS/VMM知道系统地址空间的哪些部分对应于镜像存储器,但无需OS/VMM介入,平台/硬件便可执行实际的镜像操作。
在操作期间,OS/VMM可出于各种原因而保持内核和应用/访客页面访问的统计。例如,在非均匀存储器体系结构(NUMA)系统上,OS/VMM可利用页面统计信息来将页面移动到更靠近所访问的存储器节点的位置。类似地,OS/VMM可利用页面统计并将活动物理存储器合并到DIMM的子集,并且在自刷新模式中保留不活动的DIMM以实现更好的总体功率节省。实施例可通过定义高和低阈值来类似地将页面分类为热(例如,较密集访问的页面)或冷(例如,不太密集访问的页面)。在一个实施例中,OS/VMM与镜像-非镜像存储器可用性的量成比例地确定阈值。例如,如果系统存储器的x%是镜像存储器,则OS/VMM可将具有所有页面访问计数的高达封顶x%的页面动态地映射到镜像区域。一旦对某个页面的访问(读或写)的频率达到高阈值,便将该页面标记为热页面。类似地,当访问频率下降到低于低阈值时,将该页面标记为冷页面。然后,OS/VMM可在一个或多个迁移列表(例如,分别在“迁移到冷”和“迁移到热”列表)中跟踪从热到冷以及反之的页面转变。在不同实现中,这些列表可作为单独的列表或页面表的部分来实现。
在一些实施例中,知道镜像的页面再映射器(和迁移分析器,如下所述)可作为OS/VMM内的软件线程来执行。它可在后台运行以扫描“迁移到热”和“迁移到冷”列表,并再映射页面,以使得热页面驻存在存储器的镜像区中,而冷页面驻存在存储器的非镜像区中。在一个实施例中,再映射器可首先扫描“迁移到热”列表,“迁移到热”列表包含驻存在非镜像区域中但具有已命中高阈值标记的访问频率的页面。该再映射器进行操作以将存在于“迁移到热”列表中的页面再映射到存储器的镜像区域。如果没有足够的空间用于这些“新的”热页面,则它将扫描包含驻存在镜像区域中并且其访问频率下降到低于低阈值标记的页面的“迁移到冷”列表,并且通过将来自镜像区域的这些页面再映射到存储器的某个非镜像区来试图使镜像区域中的空间可用。一旦将“迁移到热”列表中的页面成功设置在镜像存储器中,平台便将透明地镜像对这些热页面的随后访问。以此方式,有效增加较频繁访问的页面(并且因此较易出错的页面)的可用性,从而改善系统可用性并使系统对于存储器错误更具弹性。
因此,实施例可使用OS/VMM镜像-存储器-区域-知道动态页面再映射技术来在镜像存储器区域中设置活动(热)页面,由此可通过在镜像存储器区域中保持活跃使用的页面来提供更好的系统可用性。并且,由于不活动的存储器页面驻存在非镜像存储器区域上,所以那些区域的存储器访问带宽将降低,从而允许它们进入到较低功率状态。这总的来说将导致更好的存储器功率管理,并且还将降低非镜像存储器区域上的存储器错误(软错误)的可能性。
现在参考图4,示出根据本发明一个实施例的系统的框图。如图4所示,系统400可以是包括多个处理器410a-410d的高可用性服务器。在一个实施例中,每个处理器可以是多核处理器,并且还可包括额外的组件,例如集成式存储器控制器、外围控制器等。可见,每个处理器耦合到系统存储器的本地部分。例如,处理器410a耦合到本地存储器420a1和420a2,本地存储器420a1和420a2可以是由DIMM形成的存储器模块。而处理器410c可耦合到本地存储器420a3和420a4。类似地,处理器410b可耦合到本地存储器420b1-b2,而处理器410d可耦合到本地处理器420b3-b4。可见,这些处理器可经由点对点(PtP)互连耦合。
在图4的实施例中,不是具有可减少真实存储器容量的可用量、同时增加复杂度和功率消耗的全镜像存储器系统,而是存在局部镜像方案。因此,可见,本地存储器420a1和420b1可以是镜像的,而其它任何存储器都不包含冗余数据。根据本文描述的实施例,与较频繁访问的数据相关联的数据可存储在热页面430中,热页面可存储在存储器模块420a1中并镜像在存储器模块420b1中。在图4中还可见,外围控制器集线器425可耦合到处理器410c,并且还可耦合到各种外围装置,例如输入/输出(I/O)装置、大容量存储设备等。尽管在图4的实施例中用这个特定实现示出,但本发明的范围在这一点上不受限制。
现在参考图5,示出根据本发明一个实施例用于确定是否将数据动态地再映射到镜像存储器区域的高级方法的流程图。如图5所示,可在OS或其它管理软件内实现的方法500可确定是否应将存储在非镜像存储器区域中的给定页面存储在镜像存储器区域中(菱形框510)。该确定可以采用各种形式,如下文所描述。注意,在一些实施例中,可对于在给定时间间隔内访问的每个页面迭代地执行方法500。在一些实施例中,该间隔可介于约1-10ms之间,这是检查访问指示符的状态和更新页面访问计数的采样间隔,但本发明的范围在这一点上不受限制。在该时间间隔期间,如果访问该页面,则可更新该访问指示符,例如该页面的页面表条目的访问位。一般来说,每个页面表条目还可包括访问计数,它可以是访问该访问指示符的次数的累积。注意,该计数可基于时期。即,在一个时期内可以有多个采样间隔,并且在每个时期开始时会重设访问计数。可在每个这样的时期开始时执行镜像与非镜像之间的实际迁移。此外,OS/VMM可动态地调整采样间隔以及时期的持续时间以便平衡与迁移相关联的开销。在一个实施例中,镜像与非镜像区域之间的过度迁移可提示OS/VMM增大采样频率和/或延长时期。如果不应迁移给定页面,则控制转到方框515,在方框515,可对下一个访问的页面执行分析。
仍然参考图5,如果确定应将页面存储在镜像存储器区域中,则控制转到菱形框520,在菱形框520,可确定在镜像存储器区域中是否有可用空间。如果没有,则控制转到方框530,在方框530,可从镜像存储器区域中逐出具有低于第二阈值的访问计数的至少一个页面。如上所述,这个第二阈值可以是低阈值标记。然后,控制转到方框540,在方框540,可将期望的页面从非镜像区域再映射到镜像存储器区域。
如上文所论述,可以有不同的实现来确定是否应将给定存储器页面再映射到镜像存储器区域。现在参考图6,示出用于选择页面以插入到镜像存储器区域中的示范方法的流程图。可见,同样可由OS或其它管理软件执行的方法600可通过更新访问中的页面的访问指示符(方框610)而开始。另外,还可更新(例如,递增)该页面的访问计数以阐明该页面的访问次数。然后,可确定该页面的访问计数是否大于第一热列表阈值(菱形框620)。这个第一阈值可以是高阈值标记,它可用作用于确定应将页面迁移到镜像区域的代理。如果给定页面的访问计数大于该阈值,则控制转到方框630,在方框630,可将该页面添加到“迁移到热”列表中(如果该页面没有存在于该列表中,也没有存在于镜像存储器区域中所存在的页面列表(即,热列表)中)。如果相反,在菱形框620,确定为否定,则方法600可结束。
现在参考图7,示出用于确定是否应将存在于镜像存储器区域中的页面迁移到非镜像存储器区域的方法。可见,方法650可通过确定存在于镜像存储器区域中(并且因而存在于热列表上)的页面的页面访问指示符是否指示没有访问而开始。即,可确定在给定时间间隔期间是否没有访问位于镜像存储器区域中的这个页面。如果没有访问该页面,则可将热值递减(方框665),该热值可对应于页面被视为是热(并且因而应在镜像存储器区域中)的最小级。然后,控制转到菱形框670,在菱形框670,可确定该热值是否小于第二热列表阈值。这个第二热列表阈值可以是低阈值,低于该低阈值,应将页面从镜像存储器区域中移除。如果是,则控制转到方框675,在方框675,可将该页面添加到“迁移到冷”列表中,否则该方法可关于该页面结束。这个列表可以是当前存储在镜像存储器区域中、但应当改为存储在非镜像存储器区域中的页面的列表。
仍然参考图7,如果相反,菱形框660的确定指示访问了该页面,则控制转到方框680,在方框680,可将该页面的热值递增。然后,控制转到菱形框685,在菱形框685,可确定热值是否大于第一热列表阈级,如上文所论述,第一热列表阈级可以是高级阈值。如果是,则存储器页面可将它的访问计数设置为热值(方框690),否则方法可对该页面结束。以此方式,热值可保持在高与低阈值之间并避免滞后效应。
现在参考表1,示出根据本发明一个实施例的迁移分析器的伪代码,在一个实现中,可对该分析器使用OS线程。一般来说,迁移分析器可如图6和图7所描述地那样执行。
表1
For访问位==1的每个页面
    将page.Acount递增
    if page.Acount>Hot-list-high-threshold,并且
               热列表中不存在页面,并且
               “迁移到热”列表中不存在页面
                     则将页面添加到“迁移到热”列表中
    endif
endfor
For热列表中的每一个页面H
   if pageH.accessBit==0
          将pageH.HotLife递减
          if pageH.HotLife<Hot-list-low-threshold,
                 将页面添加到“迁移到冷”列表中
          endif
     else
          将pageH.HotLife递增
          if pageH.HotLife>Hot-list-high-threshold
                 pageH.HotLife=Hot-list-high-Threshold
          endif
     endif
endfor
将所有page.accessBits清零
现在参考图8,示出根据本发明一个特定实施例的再映射操作的流程图。如图8所示,可执行方法700以基于例如可供OS访问的各种列表或表格(例如,“迁移到热”列表和“迁移到冷”列表)中的信息动态地再映射各个值。在图8中可见,方法700可通过确定在镜像存储器区域中是否有空间可用(菱形框710)而开始。如果有,则迁移可在如下所述的方框750中继续进行。如果没有,则控制转到菱形框720,在菱形框720,可确定在非镜像存储器区域中是否有可用空间。如果有,则控制转到方框730,在方框730,可将来自“迁移到冷”列表的一个或多个页面再映射到非镜像存储器区域中的自由页面。否则,如果在菱形框720确定不存在可用的自由页面,则可改为将这一个或多个页面存储在交换文件中(方框735)。在一个实施例中,这个交换文件可存储在诸如硬盘或固态盘的次级存储设备中。
在图8中可见,从方框730和735,控制转到方框740,在方框740,可将“迁移到冷”列表清零(在所有冷页面均已迁移到非镜像存储器区域中的情况下)。因此,在这个时间之后,镜像存储器区域中有空间可用。因此,在方框750,可将存在于“迁移到热”列表中的一个或多个页面再映射到镜像存储器区域,即,镜像存储器区域的可用存储器页面。然后,控制转到方框760,在方框760,可从“迁移到热”列表中移除这一个或多个页面。尽管在图8的实施例中用这个特定实现示出,但本发明的范围在这一点上不受限制。
现在参考表2,示出根据本发明一个实施例的再映射器的伪代码。在一个实现中,可对该再映射器使用OS线程。一般来说,再映射器可根据图8的流程图执行。
表2
For  “迁移到热”列表中的每个页面H
    if镜像存储器区域中没有空间可用,并且
        “迁移到冷”列表不为空
             for  “迁移到冷”列表中的每个页面C
                  if非镜像存储器区域中有可用的自由页面
                      将页面C再映射到非镜像区域
                  else
                      将页面C保存到页面交换区(即,交换文件)
             endfor
             将“迁移到冷”列表清零
    endif
    if镜像存储器区域中有空间可用
        再映射页面H,以使得它在物理上驻存在镜像区域中
        从“迁移到热”列表中删除页面H
    endif
endfor
实施例可以用代码来实现,并且可存储在存储介质上,在该存储介质上存储有指令,这些指令可用于将系统编程为执行这些指令。存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、光盘、固态驱动器(SSD)、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁-光盘;半导体装置,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁或光卡;或任何其它类型的适于存储电子指令的介质。
尽管关于有限数量的实施例描述了本发明,但本领域技术人员将由此明白众多修改和改变。随附权利要求要涵盖所有这些落在本发明真实精神和范围内的修改和改变。

Claims (14)

1.一种用于控制系统中存储器冗余度的方法,包括:
将存储在系统的第一存储器节点中的信息迁移到所述系统的第二存储器节点;
在完成所述信息迁移之前,更新与所述第一存储器节点相关联的第一存储器控制器的冗余存储器孔存储以指示从所述第一存储器节点迁移到所述第二存储器节点的所述信息的量;以及
在完成所述信息迁移之前在所述系统的处理器上执行操作系统OS控制的线程,并确定在所述OS控制的线程对所述第一存储器节点的存储器访问请求期间所招致的错误是否是出现在已迁移到所述第二存储器节点的所述第一存储器节点的区域中,如果是,则对所述第二存储器节点重试所述存储器访问请求,否则用信号通知不可校正的存储器错误。
2.如权利要求1所述的方法,还包括:响应确定已达到所述第一存储器节点的错误阈值,触发所述信息的迁移。
3.如权利要求1所述的方法,还包括:采用时间切片的方式在系统管理模式中执行所述信息的迁移,其中所述OS共享切片,其中在所述OS共享的切片的至少一个中执行所述OS控制的线程。
4.如权利要求3所述的方法,还包括:当在所述系统管理模式中迁移所述信息时,在退出每个时间切片之前,更新所述冗余存储器孔存储。
5.如权利要求1所述的方法,还包括:如果与所述存储器访问请求相关联的地址小于存储在所述第一存储器控制器的所述冗余存储器孔存储中的地址,则确定所述错误出现在所述第一存储器节点的所述迁移区域中。
6.如权利要求5所述的方法,还包括:将来自所述第一存储器控制器的第一本地代理的所述存储器访问请求发送到与所述第二存储器节点相关联的第二存储器控制器的第二本地代理;从所述第二存储器控制器接收所述第一本地代理中的请求数据;以及将所述请求数据转发给请求者以完成所述存储器访问请求。
7.如权利要求6所述的方法,还包括:响应所述存储器访问请求完成,将经过校正的存储器错误写入到日志。
8.一种用于控制系统中存储器冗余度的装置,包括:
用于将存储在系统的第一存储器节点中的信息迁移到所述系统的第二存储器节点的部件;
用于在完成所述信息迁移之前,更新与所述第一存储器节点相关联的第一存储器控制器的冗余存储器孔存储以指示从所述第一存储器节点迁移到所述第二存储器节点的所述信息的量的部件;以及
用于在完成所述信息迁移之前在所述系统的处理器上执行操作系统OS控制的线程,并确定在所述OS控制的线程对所述第一存储器节点的存储器访问请求期间所招致的错误是否是出现在已迁移到所述第二存储器节点的所述第一存储器节点的区域中,如果是,则对所述第二存储器节点重试所述存储器访问请求,否则用信号通知不可校正的存储器错误的部件。
9.如权利要求8所述的装置,还包括:用于响应确定已达到所述第一存储器节点的错误阈值,触发所述信息的迁移的部件。
10.如权利要求8所述的装置,还包括:用于采用时间切片的方式在系统管理模式中执行所述信息的迁移的部件,其中所述OS共享切片,其中在所述OS共享的切片的至少一个中执行所述OS控制的线程。
11.如权利要求10所述的装置,还包括:用于当在所述系统管理模式中迁移所述信息时,在退出每个时间切片之前,更新所述冗余存储器孔存储的部件。
12.如权利要求8所述的装置,还包括:用于如果与所述存储器访问请求相关联的地址小于存储在所述第一存储器控制器的所述冗余存储器孔存储中的地址,则确定所述错误出现在所述第一存储器节点的所述迁移区域中的部件。
13.如权利要求12所述的装置,还包括:用于将来自所述第一存储器控制器的第一本地代理的所述存储器访问请求发送到与所述第二存储器节点相关联的第二存储器控制器的第二本地代理、从所述第二存储器控制器接收所述第一本地代理中的请求数据以及将所述请求数据转发给请求者以完成所述存储器访问请求的部件。
14.如权利要求13所述的装置,还包括:用于响应所述存储器访问请求完成,将经过校正的存储器错误写入到日志的部件。
CN201010625095.8A 2009-12-23 2010-12-23 控制系统中的存储器冗余度 Active CN102110036B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/645,778 US8407516B2 (en) 2009-12-23 2009-12-23 Controlling memory redundancy in a system
US12/645778 2009-12-23

Publications (2)

Publication Number Publication Date
CN102110036A CN102110036A (zh) 2011-06-29
CN102110036B true CN102110036B (zh) 2015-04-08

Family

ID=43770461

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010625095.8A Active CN102110036B (zh) 2009-12-23 2010-12-23 控制系统中的存储器冗余度

Country Status (4)

Country Link
US (2) US8407516B2 (zh)
EP (1) EP2348413B1 (zh)
JP (1) JP5265654B2 (zh)
CN (1) CN102110036B (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832390B1 (en) 2010-07-12 2014-09-09 Vmware, Inc. Online classification of memory pages based on activity level using dynamically adjustable scan rates
US9063866B1 (en) 2010-07-12 2015-06-23 Vmware, Inc. Page table data structure for online classification of memory pages based on activity level
US9032398B2 (en) 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US8990531B2 (en) * 2010-07-12 2015-03-24 Vmware, Inc. Multiple time granularity support for online classification of memory pages based on activity level
TW201220186A (en) * 2010-11-04 2012-05-16 Inventec Corp Data protection method for damaged memory cells
US8667325B2 (en) * 2011-03-29 2014-03-04 Intel Corporation Method, apparatus and system for providing memory sparing information
JP5914660B2 (ja) 2011-08-23 2016-05-11 華為技術有限公司Huawei Technologies Co.,Ltd. データ信頼性を検出するための方法及び装置
WO2013081616A1 (en) * 2011-12-01 2013-06-06 Intel Corporation Hardware based memory migration and resilvering
EP2605132B1 (de) * 2011-12-13 2018-05-09 Siemens Aktiengesellschaft Verfahren für eine Verwaltung von Speicher eines Computers mit zumindest einer virtuellen Maschine
CN104115132B (zh) 2011-12-22 2018-02-06 英特尔公司 借助于存储器通道关闭的功率节约
US8719493B2 (en) * 2012-03-21 2014-05-06 Dell Products L.P. Memory controller-independent memory sparing
US9753831B2 (en) * 2012-05-30 2017-09-05 Red Hat Israel, Ltd. Optimization of operating system and virtual machine monitor memory management
US9110795B2 (en) 2012-12-10 2015-08-18 Qualcomm Incorporated System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US8959298B2 (en) 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9823986B2 (en) 2013-04-30 2017-11-21 Hewlett Packard Enterprise Development Lp Memory node error correction
US9524113B2 (en) * 2013-05-24 2016-12-20 Seagate Technology Llc Variable redundancy in a solid state drive
US9235485B2 (en) 2013-07-22 2016-01-12 International Business Machines Corporation Moving objects in a primary computer based on memory errors in a secondary computer
US9063667B2 (en) * 2013-08-13 2015-06-23 Utah State University Dynamic memory relocation
EP2913754B1 (en) * 2013-11-22 2016-11-09 Huawei Technologies Co., Ltd. Memory data migration computer and method
US9411695B2 (en) * 2013-12-04 2016-08-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Provisioning memory in a memory system for mirroring
US9921865B2 (en) 2014-01-30 2018-03-20 Red Hat Israel, Ltd. Population of system tables by hypervisor
US11099763B1 (en) 2014-06-30 2021-08-24 Pure Storage, Inc. Migrating generational storage to a decentralized agreement protocol paradigm
US10042564B2 (en) * 2014-06-30 2018-08-07 International Business Machines Corporation Accessing data while migrating storage of the data
US10459797B2 (en) 2014-06-30 2019-10-29 Pure Storage, Inc. Making trade-offs between rebuild scanning and failing memory device flexibility
US10440105B2 (en) 2014-06-30 2019-10-08 Pure Storage, Inc. Using a decentralized agreement protocol to rank storage locations for target width
US10026420B1 (en) 2014-11-24 2018-07-17 Seagate Technology Llc Data storage device with cold data migration
US20160098203A1 (en) * 2014-12-18 2016-04-07 Mediatek Inc. Heterogeneous Swap Space With Dynamic Thresholds
CN106155923B (zh) * 2015-04-08 2019-04-12 华为技术有限公司 内存共享的方法和装置
US9715268B2 (en) 2015-05-08 2017-07-25 Microsoft Technology Licensing, Llc Reducing power by vacating subsets of CPUs and memory
CN106294440B (zh) * 2015-05-27 2019-06-07 阿里巴巴集团控股有限公司 数据实时迁移的方法和装置
JP6540334B2 (ja) * 2015-07-29 2019-07-10 富士通株式会社 システム、情報処理装置、および情報処理方法
CN105095022B (zh) * 2015-07-31 2018-06-08 北京金山安全软件有限公司 一种数据备份方法及装置
WO2017078679A1 (en) * 2015-11-03 2017-05-11 Hewlett Packard Enterprise Development Lp Recovery from data corruption in a storage array
US10534720B2 (en) * 2016-05-26 2020-01-14 Vmware, Inc. Application aware memory resource management
US10346177B2 (en) 2016-12-14 2019-07-09 Intel Corporation Boot process with parallel memory initialization
US10387072B2 (en) * 2016-12-29 2019-08-20 Intel Corporation Systems and method for dynamic address based mirroring
US20200050913A1 (en) * 2017-04-19 2020-02-13 Sensormatic Electronics, LLC Systems and methods for providing a security tag with synchronized display
US10613951B2 (en) 2017-09-13 2020-04-07 International Business Machines Corporation Memory mirror invocation upon detecting a correctable error
US11972140B2 (en) 2021-04-26 2024-04-30 Apple Inc. Hashing with soft memory folding
US11693585B2 (en) 2021-04-26 2023-07-04 Apple Inc. Address hashing in a multiple memory controller system
US11934313B2 (en) 2021-08-23 2024-03-19 Apple Inc. Scalable system on a chip
US12019503B2 (en) 2022-05-18 2024-06-25 Samsung Electronics Co., Ltd. Systems and methods for expandable memory error handling

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1555604A2 (en) * 2004-01-13 2005-07-20 Hitachi, Ltd. Data-migration method
CN101271409A (zh) * 2007-03-23 2008-09-24 国际商业机器公司 用于迁移逻辑分区的装置和方法以及产品

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295258A (en) 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
JP3485598B2 (ja) * 1993-05-27 2004-01-13 株式会社日立製作所 ファイルの配置方法、データ多重化方法及びデータ処理システム
JP3436974B2 (ja) * 1994-06-27 2003-08-18 三菱電機株式会社 二重化メモリシステム
US5974506A (en) * 1996-06-28 1999-10-26 Digital Equipment Corporation Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system
US6076143A (en) * 1997-09-02 2000-06-13 Emc Corporation Method and apparatus for managing the physical storage locations for blocks of information in a storage system to increase system performance
US6295591B1 (en) * 1999-03-30 2001-09-25 International Business Machines Corporation Method of upgrading and/or servicing memory without interrupting the operation of the system
US6820182B1 (en) * 2000-10-18 2004-11-16 International Business Machines Corporation Support for exhaustion recovery in a data processing system with memory mirroring
US6633955B1 (en) * 2001-09-27 2003-10-14 Emc Corporation Four way support for dynamic mirror service policy
JP2003162378A (ja) * 2001-11-26 2003-06-06 Hitachi Ltd データ複写方法
TW200417851A (en) 2003-03-07 2004-09-16 Wistron Corp Computer system capable of maintaining system's stability while memory is unstable and memory control method
JP4352224B2 (ja) * 2003-08-07 2009-10-28 日本電気株式会社 二重化系におけるデータ救済方法およびシステム
US7693880B1 (en) * 2004-05-06 2010-04-06 Symantec Operating Corporation Mirrored storage at the file system level
US7062628B2 (en) * 2004-09-28 2006-06-13 Hitachi, Ltd. Method and apparatus for storage pooling and provisioning for journal based storage and recovery
US7739685B2 (en) * 2005-01-06 2010-06-15 International Business Machines Corporation Decoupling a central processing unit from its tasks
US7281104B1 (en) 2005-03-21 2007-10-09 Acronis Inc. System and method for online data migration
US20070079170A1 (en) * 2005-09-30 2007-04-05 Zimmer Vincent J Data migration in response to predicted disk failure
US7941624B2 (en) * 2006-09-28 2011-05-10 Intel Corporation Parallel memory migration
JP5057741B2 (ja) * 2006-10-12 2012-10-24 株式会社日立製作所 ストレージ装置
US7877358B2 (en) * 2006-11-21 2011-01-25 Microsoft Corporation Replacing system hardware
TW200900961A (en) 2007-06-26 2009-01-01 Inventec Corp Method for simulating thermal resistance value of thermal test die
US7890811B2 (en) 2007-06-29 2011-02-15 Intel Corporation Method and apparatus for improved memory reliability, availability and serviceability
US8028137B2 (en) * 2007-12-20 2011-09-27 Seagate Technology Llc System and method of selective data mirroring in a data storage device
US7900084B2 (en) 2007-12-21 2011-03-01 Intel Corporation Reliable memory for memory controller with multiple channels
US7949850B2 (en) * 2007-12-28 2011-05-24 Intel Corporation Methods and appratus for demand-based memory mirroring
US8407515B2 (en) * 2008-05-06 2013-03-26 International Business Machines Corporation Partition transparent memory error handling in a logically partitioned computer system with mirrored memory
US8151138B2 (en) * 2008-10-31 2012-04-03 Dell Products L.P. Redundant memory architecture management methods and systems
US8090977B2 (en) * 2009-12-21 2012-01-03 Intel Corporation Performing redundant memory hopping

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1555604A2 (en) * 2004-01-13 2005-07-20 Hitachi, Ltd. Data-migration method
CN101271409A (zh) * 2007-03-23 2008-09-24 国际商业机器公司 用于迁移逻辑分区的装置和方法以及产品

Also Published As

Publication number Publication date
US8751864B2 (en) 2014-06-10
US20110154104A1 (en) 2011-06-23
US20130212426A1 (en) 2013-08-15
EP2348413A2 (en) 2011-07-27
JP5265654B2 (ja) 2013-08-14
EP2348413B1 (en) 2014-09-24
JP2011134327A (ja) 2011-07-07
EP2348413A3 (en) 2013-01-23
CN102110036A (zh) 2011-06-29
US8407516B2 (en) 2013-03-26

Similar Documents

Publication Publication Date Title
CN102110036B (zh) 控制系统中的存储器冗余度
US7493441B2 (en) Mass storage controller with apparatus and method for extending battery backup time by selectively providing battery power to volatile memory banks not storing critical data
US6330642B1 (en) Three interconnected raid disk controller data processing system architecture
US10061534B2 (en) Hardware based memory migration and resilvering
US7681089B2 (en) Redundant storage controller system with enhanced failure analysis capability
TWI385523B (zh) 用於快閃記憶體的資料備份方法及其控制器與儲存系統
CN101288052B (zh) 存储数据的方法和系统
US6243827B1 (en) Multiple-channel failure detection in raid systems
US20160378344A1 (en) Processor and platform assisted nvdimm solution using standard dram and consolidated storage
US20120079316A1 (en) Performing Redundant Memory Hopping
US20040073829A1 (en) Fail-over of multiple memory blocks in multiple memory modules in computer system
US20100146328A1 (en) Grid storage system and method of operating thereof
US8516298B2 (en) Data protection method for damaged memory cells
CN107430585B (zh) 用于远程直接存储器访问的系统和方法
JPH07500203A (ja) ロールバックのためのデータ・バックアップ・システム
CN109313593B (zh) 存储系统
US20230251931A1 (en) System and device for data recovery for ephemeral storage
CN113641528A (zh) 用于数据恢复的系统、方法和装置
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
KR101526110B1 (ko) 증명 가능하고 정확한 오류 복구를 위한 플래시 변환 계층 설계 프레임워크
US11922020B2 (en) Read-disturb-based read temperature information persistence system
TWI728634B (zh) 在儲存伺服器中進行資料存取管理的方法與裝置
JP4146045B2 (ja) 電子計算機
CN114610235A (zh) 分布式存储集群、存储引擎、两副本存储方法及设备
Koob File memory for extended storage disk caches

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant