一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

运行虚拟机的系统、操作其的方法、介质和存储器件与流程

2021-11-20 01:37:00 来源:中国专利 TAG:

运行虚拟机的系统、操作其的方法、介质和存储器件
1.相关申请的交叉引用
2.本技术要求于2020年5月15日在韩国知识产权局提交的韩国专利申请no.10

2020

0058448的权益,该专利申请的公开内容通过引用整体合并于此。
技术领域
3.本发明构思涉及数据处理系统,更具体地,涉及基于页面故障(page fault)来预测故障存储器并管理预测的故障存储器的系统以及处理该系统的操作系统的方法。


背景技术:

4.许多公司及其计算机系统托管诸如数据中心的数据处理系统。数据中心用于分配所托管的应用和/或业务,并且包括通常被称为云的网络计算机资源,例如服务器、磁盘、虚拟机等。在这种配置中,公司是数据中心的客户。数据中心为客户提供许多优势,包括降低成本、易于扩展和减轻管理负担。
5.数据中心对大容量存储器的需求已经增加,以对大量数据进行稳定和快速的实时处理。然而,存储器的性能质量可能会随时间而变化。例如,当应用和/或业务被分配并使用存储器时,由于存储器中的故障可能会发生页面故障。当这种页面故障频繁发生时,指令的正常流程执行可能会中断,因此可能会发生数据中心的可用性约束,例如中止并重启已启动的操作。页面故障可能是由单个位故障或者两个或更多个位故障引起的。因此,当可以基于页面故障识别出故障存储器时,将可以预测由于故障存储器而导致的存储故障(memory fault)。而且,为了维持数据中心的可用性,将需要预先管理预测的存储故障。


技术实现要素:

6.本发明构思提供了基于页面故障来预测存储故障并管理预测的存储故障的系统以及处理该系统的操作系统的方法。
7.根据本发明的示例性实施例,操作运行虚拟机(所述虚拟机执行应用和操作系统(os))的系统的方法包括:通过所述os,执行从由所述应用处理的多个第一虚拟地址到用于访问存储器的多个第一物理地址的第一地址转换;通过所述os,识别所述多个第一物理地址当中的多个故障物理地址,其中,所述多个故障物理地址中的每个故障物理地址对应于所述多个第一物理地址当中的与所述存储器的故障存储单元相关联的相应第一物理地址;通过所述os,分析所述多个故障物理地址中的每个故障物理地址的行地址和列地址,并且通过所述os,基于对所述多个故障物理地址中的每个故障物理地址的所述行地址和所述列地址的分析,指定所述多个故障物理地址的故障类型,其中,所述故障类型包括行故障、列故障或块故障;和通过所述os,基于故障地址,执行从多个第二虚拟地址到多个第二物理地址的第二地址转换,从而从所述多个第二物理地址中排除所述故障地址。所述故障地址对应于所述多个故障物理地址的所述故障类型,并且包括所述行故障的故障行地址、所述列故障的故障列地址或所述块故障的故障块地址。
8.根据本发明的示例性实施例,一种非暂时性计算机可读记录介质存储用于执行操作运行虚拟机的系统的方法的计算机可执行指令,所述虚拟机执行应用和操作系统(os),所述方法包括:使用所述系统的处理器和存储器执行所述应用;执行从分配给所述应用的多个第一虚拟地址到用于访问所述存储器的多个第一物理地址的第一地址转换;在执行所述应用期间,识别从所述多个第一虚拟地址转换的所述多个第一物理地址当中的多个故障物理地址;指定所述多个故障物理地址的故障类型,其中,所述故障类型包括行故障、列故障或块故障;和基于故障地址,执行从多个第二虚拟地址到多个第二物理地址的第二地址转换,从而从所述多个第二物理地址中排除所述故障地址。所述故障地址对应于所述多个故障物理地址的所述故障类型,并且包括所述行故障的故障行地址、所述列故障的故障列地址或所述块故障的故障块地址。
9.根据本发明的示例性实施例,一种在虚拟机环境中操作的系统包括:存储器;和处理器,所述处理器可操作地耦接到所述存储器。所述处理器与所述存储器合作执行应用;执行从由所述应用处理的多个第一虚拟地址到用于访问所述存储器的多个第一物理地址的第一地址转换;识别所述多个第一物理地址当中的多个故障物理地址,其中,所述多个故障物理地址中的每个故障物理地址对应于所述多个第一物理地址当中的与所述存储器的故障存储单元相关联的第一物理地址;指定所述存储器的所述多个故障物理地址的故障类型,其中,所述故障类型包括行故障、列故障或块故障;和基于故障地址,执行从多个第二虚拟地址到多个第二物理地址的第二地址转换,以防止所述故障地址被用于所述第二地址转换。所述故障地址对应于所述多个故障物理地址的所述故障类型,并且包括所述行故障的故障行地址、所述列故障的故障列地址或所述块故障的故障块地址。所述处理器还被配置为在不使得所述系统重启的情况下,指定所述故障类型,存储所述故障地址,以及执行所述第二地址转换。
10.根据本发明的示例性实施例,一种存储器件包括:存储单元阵列,所述存储单元阵列包括多个存储单元;和修复控制电路,所述修复控制电路被配置为通过使用所述存储单元阵列中的多个冗余存储单元来修复所述多个存储单元中的多个故障存储单元。所述修复控制电路被配置为在所述存储器件重启期间从所述存储器件可操作地耦接到的处理器接收所述多个故障存储单元的源地址,并且利用所述多个冗余存储单元的目标地址来修复所述源地址。所述多个故障存储单元的所述源地址对应于包括所述多个故障存储单元的公共行地址、所述多个故障存储单元的公共列地址或所述多个故障存储单元的块地址的故障地址。在运行在所述处理器上的虚拟机的执行期间,识别所述多个故障存储单元。所述多个故障存储单元的所述故障地址被包括在由包括所述存储器件的系统用来访问所述存储器件的多个物理地址中。所述多个物理地址是从由所述处理器使用的多个虚拟地址转换而来的。
附图说明
11.通过以下结合附图的详细描述,将更清楚地理解本发明构思的实施例,在附图中:
12.图1是概念性地示出根据本发明构思的实施例的系统的框图;
13.图2是用于描述由图1的处理器执行的用于地址转换的地址映射的示例的图;
14.图3是示出图2的地址映射表的示例的图;
15.图4是用于描述图3的地址映射表的页表项的示例的图;
16.图5是用于描述图3的地址映射表中所示的基于行的故障属性的图;
17.图6是用于描述图3的地址映射表中所示的基于列的故障属性的表;
18.图7是用于描述图3的地址映射表中所示的基于块(block

based)的故障属性的图;
19.图8是根据本发明构思的实施例的处理系统的正在运行的(runtime)os的方法的流程图;
20.图9是用于描述当图1的系统被启动时执行的修复操作的概念图;
21.图10至图12是用于描述在图1的存储器中执行的修复操作的图;和
22.图13是根据本发明构思的实施例的启动系统的方法的流程图。
具体实施方式
23.图1是概念性地示出根据本发明构思的实施例的可以用于基于页面故障来预测故障存储器并管理预测的故障存储器的示例系统的框图。
24.参照图1,系统100可以是包括用于执行数百个虚拟机vm的数十个主机或服务器的数据中心。尽管在图1中示出了下面将要描述的系统100的各个硬件组件,但是本发明构思不限于此,并且可以采用其他组件。系统100可以包括处理器110、存储器120和基本输入/输出系统(bios)存储器130。
25.处理器110可以通过存储器接口140通信地连接到存储器120。处理器110可以通过各种类型的接口150(例如,串行外围接口(spi)或低引脚数(lpc)总线)连接到bios存储器130。连接到处理器110的存储器120和bios存储器130可以被称为系统存储器。
26.可以通过使用表达“连接”和/或“耦接(couple)”及其派生词来描述一些示例。这些术语不一定是彼此的同义词。例如,使用术语“连接”和/或“耦接”的描述可以指示两个或更多个元件彼此直接物理或电接触。另外,术语“连接”和/或“耦接”还可以表示两个或更多个元件彼此不直接接触,但仍彼此协作或相互作用。
27.根据一些实施例,系统100可以是例如诸如膝上型计算机、台式计算机、服务器计算机、工作站、便携式通信终端、个人数字助理(pda)、便携式多媒体播放器(pmp)、智能电话或任何其他合适的计算机的计算设备、vm或其虚拟计算设备。或者,系统100可以是包括在计算系统中的组件之一,例如图形卡。
28.处理器110是用于在系统100中执行通用计算机操作的功能块,并且可以是诸如中央处理单元(cpu)、数字信号处理器(dsp)、网络处理器、应用处理器(ap)的处理器或任何其他用于执行代码的设备。
29.处理器110可以被配置为执行可以由一台或更多台机器执行的指令、软件、固件或它们的各种组合。处理器110可以包括任何数目的处理器核。例如,处理器110可以包括单核或诸如双核、四核和六核的多核。虽然图1示出了包括一个处理器110的系统100,但是根据实施例,系统100可以包括两个或更多个处理器。
30.处理器110可以在虚拟环境中执行软件。因此,系统100中的虚拟机vm可以包括应用app和操作系统(os)。由于虚拟机vm可以在用户开始和停止使用期间动态地变化,因此可以在处理器110上执行的虚拟机vm的数目可以变化。诸如os的软件实体将处理器110视为能
够同时执行若干虚拟机vm的逻辑处理器或处理元件。例如,n个(n是自然数)os可以将处理器110视为n个逻辑处理器或n个处理元件。
31.在虚拟机vm中,每个应用app使用虚拟地址空间,因此虚拟地址va(即,可以被软件使用的地址)被使用。每个虚拟机vm中的os可以控制特定应用app访问给定存储器120时的时间点,并且可以至少在某种程度上控制由应用app访问的地址。虚拟机vm中的os可以执行和管理虚拟机vm中的虚拟地址va与物理地址pa之间的映射。由os生成的物理地址pa是系统100的整个存储器120中的物理地址空间的系统物理地址pa(即,可以被存储器控制器112使用以访问存储器120的物理地址)。os可以执行虚拟地址va与系统物理地址pa之间的地址转换(例如,地址映射)。
32.为了简要地说明系统100中的机器虚拟化,图1示出了两个虚拟机160和161。虚拟机160和161均包括os和至少一个应用app。根据一些实施例,可以执行多个虚拟机vm,并且处理器110可以通过将硬件加速和软件进行组合,就时间和存储器占用面积而言执行和实现大量应用app和/或业务。在下文中,为了便于说明,将在系统100运行第一虚拟机160的假定下描述应用170和os 180访问存储器120。
33.bios存储器130可以存储用于启动系统100的bios代码。bios存储器130可以由非易失性存储器件来实现。非易失性存储器件可以由电可擦除可编程只读存储器(eeprom)、闪存、电阻ram(rram)、磁性ram(mram)、相变ram(pram)、铁电体ram(fram)、纳米浮栅存储器(nfgm)、聚合物ram(poram)或类似存储器来实现。
34.bios代码可以包括用于检测系统100的硬件组件(例如系统板、存储器120、磁盘驱动器和输入/输出(i/o)装置)并检查硬件组件是否正常工作的开机自检(post)代码和/或post代码的一部分。bios代码可以包括被配置为允许处理器110正常地与存储器120互操作的各种算法。
35.为了说明的简单起见,存储器接口140被示出为通过一条信号线连接在处理器110与存储器120之间,但是实际上可以通过多条信号线连接。存储器接口140包括用于将存储器控制器112和存储器120彼此连接的连接器。在示例实施例中,连接器可以被实现为引脚、球、信号线或其他硬件组件。例如,可以通过存储器接口140在存储器控制器112与存储器120之间交换时钟、命令、地址、数据等。存储器接口140可以被实现为包括多条信号线的一个信道,或者可以被实现为多个信道。而且,一个或更多个存储器120可以连接到多个信道中的相应信道。
36.处理器110可以包括存储器控制器112,该存储器控制器112控制发送到存储器120的数据/从存储器120接收的数据。存储器控制器112可以根据处理器110的存储请求来访问存储器120,并且系统物理地址可以被提供以访问存储器120。存储器控制器112可以包括存储器物理层接口,即,用于存储器接口例如选择与存储单元相对应的行和列、将数据写入存储单元或读取所写入的数据的存储器phy。执行上述功能的存储器控制器112可以以各种形式实现。例如,存储器控制器112可以由一个或更多个硬件组件(例如,模拟电路、逻辑电路)以及软件和/或固件的程序代码来实现。存储器控制器112可以被集成到处理器110中,使得处理器110可以以高速率和/或低功耗来访问存储器120。
37.用于系统100的操作的数据可以存储在存储器120中或从存储器120加载。处理器110处理或将要处理的数据可以存储在存储器120中或从存储器120读取。存储器120可以包
括诸如静态随机存取存储器(sram)和动态随机存取存储器(dram)的易失性存储器和/或诸如闪存、rram、mram、pram和fram的非易失性存储器。
38.存储器120可以包括用于存储数据的存储单元。可以使用地址来访问存储单元。可以将写入数据写入到由地址指示的存储单元,并且可以从由地址指示的存储单元加载读取数据。在本公开中,存储器120中的一个存储区域可以包括存储单元阵列,存储单元阵列具有使用多个地址被访问的多个存储单元。
39.存储器120可以被配置为当存储区域中的存储单元故障时用冗余单元来修复故障单元。存储器120能够用冗余单元执行封装后修复(ppr),该封装后修复修复由于连续使用而另外出现的故障单元。
40.处理器110可以向存储器120提供地址,以交换在应用170执行期间从存储器120读取以及存储在存储器120中的数据。存储器120可以基于从处理器110接收的请求(例如,命令和地址)来存储或读取数据。
41.同时,由应用170处理的地址可以被称为虚拟地址va,而用于访问存储器120的地址可以被称为系统物理地址pa(即,物理地址)。os 180可以执行由应用app处理的虚拟地址va与用于存储器120的系统物理地址pa之间的地址转换。在示例实施例中,由处理器110处理的应用170可以参考虚拟地址va进行操作,并且在访问存储器时,可以使用从虚拟地址va转换而来的系统物理地址pa。
42.图2是用于描述由图1的处理器110执行的用于地址转换的地址映射的示例的图。
43.参照图1和图2,存储器120的系统物理地址pa范围为从地址零(0)至上级(upper level)。应用170可以具有从存储器120的系统物理地址pa范围的上级开始的虚拟地址va范围。虚拟地址va的每个地址pa可以被映射到存储器120的系统物理地址pa的地址pg(或地址空间)。os 180可以将由应用170请求进行存储器访问的页面分配给存储器120的页面。这时,从虚拟地址pa指定给相应系统物理地址pg的编号(reference)可以作为页表项pte存储在地址映射表200中。页面可以是地址转换的单位。换句话说,虚拟页面中的地址可以被转换为相应物理页面中的地址。页面可以具有从4千字节到兆字节甚至千兆字节范围内的各种大小。
44.注意,图2中所示的地址的位置和大小仅是示例,并且不一定是针对实际存储器的地址的示例。而且,图2中所示的示例存储器不代表或暗示对本发明构思的限制。
45.图3是示出图2的地址映射表200的示例的图。
46.参照图2和图3,os 180可以管理地址映射表200。地址映射表200的页表项pte可以包括关于虚拟地址va与系统物理地址pa之间的映射关系的信息。例如,地址映射表200可以以查找表的形式实现。os 180可以通过参考地址映射表200的页表项pte将虚拟地址va转换为系统物理地址pa。
47.例如,虚拟地址va1可以对应于系统物理地址pa1。当os 180从应用170接收到虚拟地址va1时,os 180可以将虚拟地址va1映射到系统物理地址pa1。os 180可以与由系统物理地址pa1指示的存储单元相关联地处理和虚拟地址va1一起从应用170接收到的请求。
48.类似地,根据地址映射表200中的相应信息,os 180可以将虚拟地址va2和va3映射到系统物理地址pa2和pa3,将虚拟地址vb1、vb2和vb3映射到系统物理地址pb1、pb2、pb3以及将虚拟地址vc1、vc2、vc3、vc4和vc5映射到系统物理地址pc1、pc2、pc3、pc4和pc5。os 180
可以处理来自应用170的、与由对应于虚拟地址va2、va3、vb1、vb2、vb3、vc1、vc2和vc3的系统物理地址pa2、pa3、pb1、pb2、pb3、pc1、pc2、pc3、pc4和pc5指示的存储单元相关联的请求。
49.图4是用于描述图3的地址映射表200的页表项pte的示例的图。
50.参照图4,地址映射表200的页表项pte可以是包含转换数据的转换表,转换数据可以用于将虚拟地址va转换为系统物理地址pa。转换表可以以任何方式存储转换数据。例如,取决于转换级别(translation level),虚拟地址va位或系统物理地址pa的各种子集可以用于索引转换表的级别。而且,每个级别可以位于转换的末尾(即,存储用于转换的实际页号),或者可以以分层的方式指向另一个表(由另一组地址位索引)。
51.页表项pte可以以分层的方式包括指向其他页表的指针。页表项pte可以指示页表层结构中的级别,例如页面映射级别2、3或4,在该级别上需要针对映射到相应页表项pte的请求开始转换。因此,页面映射级别2、3或4的表的页表项pte可以包括任意数目的位项。
52.图4所示的页表项pte是第一级转换表。在第一级转换表中,提供了与地址转换有关的字段,以将虚拟地址映射到系统物理地址。然而,本发明不限于此。在示例实施例中,本发明可以应用于第二级地址转换表,第二级地址转换表中的单个位字段和/或多个位字段可以被提供,以用于转换级别标识、表的深度、转换无效/有效的指示等。参考一个位字段或更多个位字段可以发生进一步的操作,以完成地址转换。在本实施例中,页表项pte与虚拟页面地址位到实际系统物理页面地址位的转换有关,并且例如是64位项。
53.页表项pte可以包括虚拟地址va字段和系统物理地址pa字段。虚拟地址va字段被配置为增加要由应用170使用的虚拟地址空间,并且系统物理地址pa字段指示与虚拟地址va相对应的存储器120的地址。例如,系统物理地址pa字段可以包括pte[11:0]位,并且虚拟地址va字段可以包括pte[63:12]位。系统物理地址pa字段可以包括行地址r[5:0]位和列地址c[5:0]位。
[0054]
图5是用于描述图3的地址映射表中所示的基于行的故障属性的图。
[0055]
参照图5,根据在处理器110上执行的应用170的虚拟地址va1、va2和va3,os 180可以提供与虚拟地址va1、va2和va3相对应的系统物理地址pa1、pa2和pa3以用于访问存储器120。例如,与虚拟地址va1相对应的系统物理地址pa1可以被提供为行地址r[5:0]位011000和列地址c[5:0]位000001。处理器110可以通过存储器控制器112访问由行地址r[5:0]位011000和列地址c[5:0]位000001指示的存储单元来执行应用170。
[0056]
类似地,与虚拟地址va2相对应的系统物理地址pa2可以被提供为行地址r[5:0]位011000和列地址c[5:0]位000010,并且与虚拟地址va3的相对应的系统物理地址pa3可以被提供为011000的行地址r[5:0]位和000100的列地址c[5:0]位。处理器110可以通过存储器控制器112访问由系统物理地址pa2的行地址r[5:0]位011000和列地址c[5:0]位000010指示的存储单元以及由系统物理地址pa3的行地址r[5:0]位011000和列地址c[5:0]位000100指示的存储单元来执行应用170。
[0057]
然而,与存储器120的系统物理地址pa2相关联的执行不能正确地操作。而且,与存储器120的系统物理地址pa3相关联的执行不能正确地操作。换句话说,可能会发生页面故障。例如,在应用170的多个执行路径当中,在关于存储器120的执行路径中可能会发生错误。详细地,存储错误可能发生在系统物理地址pa2和pa3处。此类存储错误的主要原因之一是由系统物理地址pa2和pa3寻址的存储单元故障,即检测到硬件异常事件。
[0058]
通常,当此类异常事件频繁发生时,正在运行的系统100可能会停止,并且可能会尝试恢复系统100(即,重启系统100)。这样的解决方案不能实现系统100的加速。os 180可以在不停止系统100的情况下执行控制以处理异常事件。os 180可以通过将来自处理器110的硬件支持与os代码相结合来继续操作系统100。如下面更详细描述的,可以提供用于该功能的os 180的机制。
[0059]
os 180可以获知(即,识别)系统物理地址pa2和pa3的故障页面(即,故障物理地址)。在示例实施例中,故障地址可以指与故障存储单元相关联的物理地址。os 180可以观察(即,分析)在系统物理地址pa2和pa3处识别的行地址r[5:0]的位和列地址c[5:0]的位,从而确定系统物理地址pa2和pa3具有相同的行地址r[5:0]位011000。由于由系统物理地址pa2和pa3寻址的存储单元具有相同的行地址(即,共同的行地址),os 180可以预料通过该行地址访问的存储单元很可能出现故障。因此,os 180可以将存储器120的存储区域中的通过行地址r[5:0]位011000访问的存储单元的故障类型预测或认为是可能的基于行的故障。在下文中,行地址r[5:0]位011000可以被称为行故障的故障行地址fra。
[0060]
尽管通过存储器120的系统物理地址pa1的行地址r[5:0]位011000访问的存储单元没有故障,但是可以赋予os 180特权以指定通过行地址r[5:0]位011000访问的存储单元为基于行的故障。当os 180转换与在处理器110上执行的应用170的虚拟地址va相对应的系统物理地址pa时,os 180不将故障行地址fra提供为系统物理地址pa,从而基于行的故障存储单元不被选择。而且,os 180可以将故障行地址fra存储在bios存储器130(图1)中。
[0061]
图6是用于描述图3的地址映射表中所示的基于列的故障属性的表。
[0062]
参照图6,根据在处理器110上执行的应用170的虚拟地址vb1、vb2和vb3,os 180可以提供与虚拟地址vb1、vb2和vb3相对应的系统物理地址pb1、pb2和pb3以用于访问存储器120。例如,与虚拟地址vb1相对应的系统物理地址pb1可以被提供为行地址r[5:0]位100000和列地址c[5:0]位000011。处理器110可以通过存储器控制器112访问由系统物理地址pb1的行地址r[5:0]位100000和列地址c[5:0]位000011指示的存储单元来执行应用170。
[0063]
类似地,与虚拟地址vb2相对应的系统物理地址pb2可以被提供为行地址r[5:0]位010000和列地址c[5:0]位000011,并且与虚拟地址vb3相对应的地址pb3可以被提供为行地址r[5:0]位001000和列地址c[5:0]位000011。处理器110可以通过存储器控制器112访问由系统物理地址pb2的行地址r[5:0]位010000和列地址c[5:0]位000011指示的存储单元以及由系统物理地址pb3的行地址r[5:0]位001000和列地址c[5:0]位000011指示的存储单元来运行应用170。
[0064]
然而,与存储器120的系统物理地址pb2相关联的执行和与存储器120系统物理地址pb3相关联的执行无法正确地操作。在应用170的执行期间,在系统物理地址pb2和pb3处可能发生存储错误。os 180可以获知系统物理地址pb2和pb3的故障页面。os 180可以观察在系统物理地址pb2和pb3处识别的行地址r[5:0]的位和列地址c[5:0]的位。os 180可以确定系统物理地址pb2和pb3具有相同的列地址c[5:0]位000011。由于由系统物理地址pb2和pb3寻址的存储单元具有相同的列地址,所以os 180可以预料通过列地址访问的存储单元很可能出现故障。因此,os 180可以将存储器120的存储区域中的通过列地址c[5:0]位000011访问的存储单元的故障类型预测为或认为是可能的基于列的故障。在下文中,列地址c[5:0]位000011可以被称为列故障的故障列地址fra。
[0065]
尽管通过存储器120的系统物理地址pb1的列地址c[5:0]位000011访问的存储单元没有故障,但是os 180可以将通过列地址c[5:0]位000011访问的存储单元指定为基于列的故障。当os 180转换与在处理器110上执行的应用170的虚拟地址va相对应的系统物理地址pa时,os 180不将故障列地址fca提供为系统物理地址pa,使得该基于列的故障存储单元不被选择。而且,os 180可以将故障列地址fca存储在图1的bios存储器130中。
[0066]
如图5和图6所示,os 180可以将如上已经描述的两个故障页面指定为基于行的故障或基于列的故障。本发明不限于此。在示例实施例中,当故障页面的数目超过参考值时,os 180可以将三个或更多个故障页面指定为基于行的故障或基于列的故障。在该实施例中,参考值可以被设置为n(n是等于或大于2的自然数)。根据其他实施例,参考值可以被不同地设置并且也可以被改变。
[0067]
图7是用于描述图3的地址映射表中所示的基于块的故障属性的图。
[0068]
参照图7,根据在处理器110上执行的应用170的虚拟地址vc1、vc2、vc3、vc4和vc5,os 180可以提供与虚拟地址vc1、vc2、vc3、vc4和vc5相对应的系统物理地址pc1、pc2、pc3、pc4和pc5,以用于访问存储器120。例如,与虚拟地址vc1相对应的系统物理地址pc1可以被提供为行地址r[5:0]位110001和列地址c[5:0]位111000。与虚拟地址vc2相对应的系统物理地址pc2可以被提供为行地址r[5:0]位110010和列地址c[5:0]位111010,与虚拟地址vc3相对应的系统物理地址pc3可以被提供为行地址r[5:0]位110100和列地址c[5:0]位110000,与虚拟地址vc4相对应的系统物理地址pc4可以被提供为行地址r[5:0]位111000和列地址c[5:0]位110010,并且与虚拟地址vc5相对应的物理地址pc5可以被提供为行地址r[5:0]位111111和列地址c[5:0]位110100。处理器110可以通过存储器控制器112访问由系统物理地址pc1、pc2、pc3、pc4和pc5指示的存储单元,从而执行应用170。
[0069]
然而,与存储器120的系统物理地址pc1、pc2、pc3、pc4和pc5相关联的执行无法正确地操作。在应用170的执行期间,在系统物理地址pc1、pc2、pc3、pc4和pc5处可能发生存储错误。os 180可以获知系统物理地址pc1、pc2、pc3、pc4和pc5的故障页面。os 180可以观察在系统物理地址pc1、pc2、pc3、pc4和pc5处识别的行地址r[5:0]的位和列地址c[5:0]的位。os 180可以确定系统物理地址pc1、pc2、pc3、pc4和pc5的行地址r[5:0]的最高两个位(即,位r[5:4]11)相同并且列地址c[5:0]的最高两个位(即位c[5:4]11)相同。
[0070]
通常,为了访问存储单元,存储器120可以被配置为通过使用行译码器顺序地对行地址位进行译码,生成译码后的行地址信号,并且激活与译码后的行地址信号相对应的字线。这里,译码后的行地址信号线可以从存储区域的底部或顶部沿行方向布置,其中,行地址的高位可以用作基于存储区域的中央对上侧或下侧的特定区域进行寻址的信号。类似地,存储器120被配置为通过使用列译码器顺序地对列地址位进行译码,生成译码后的列地址信号,并且激活与译码后的列地址信号相对应的位线。这里,译码后的列地址信号线可以从存储区域的左侧或右侧沿列方向布置,其中列地址的高位可以用作基于存储区域的中央对左侧或右侧的特定区域进行寻址的信号。
[0071]
由于由系统物理地址pc1、pc2、pc3、pc4和pc5寻址的存储单元具有相同的高行地址位和相同的高列地址位,os 180可以预料通过相同的高行地址位和相同的高列地址位访问的存储单元很可能出现故障。因此,os 180可以将存储器120的存储区域中的通过高行地址位r[5:4]11和高列地址位c[5:4]11访问的存储单元的故障类型预测或认为是可能的基
于块的故障。在下文中,高行地址位r[5:4]11和高列地址位c[5:4]11可以被称为块故障的故障块地址(fba)。故障行地址、故障列地址、故障块地址可以被称为故障地址,其可以被存储在bios中,并且在封装后修复中,可以对应于将被冗余单元的目标地址替换或修复的源地址。
[0072]
os 180可以将通过高行地址位r[5:4]11和高列地址位c[5:4]11访问的存储单元指定为基于块的故障。当os 180转换与在处理器110上执行的应用170的虚拟地址va相对应的系统物理地址pa时,os 180不将故障块地址fba提供为系统物理地址pa,使得基于块的故障存储单元不被选择。而且,os 180可以将故障块地址fba存储在bios存储器130(图1)中。
[0073]
如图7所示,上面已经描述了os 180通过参考五个故障页面来处理os 180的基于块的故障的权限,但是当故障页面的数目超过参考值时,可以给予这种权限。在该实施例中,参考值可以被设置为n(n是等于或大于5的自然数)。根据其他实施例,参考值可以被不同地设置并且也可以被改变。
[0074]
图8是根据本发明构思的实施例的处理系统100的正在运行的os的方法的流程图。
[0075]
参照图1、图2和图8,当系统100正在工作时,可以在提供机器虚拟化以与处理器110协作执行应用170时执行os 180(操作s810)。虚拟机vm中的os 180可以执行要由应用170处理的虚拟地址va与用于存储器120的系统物理地址pa之间的第一地址转换。在示例实施例中,处理器110(即,在由处理器110执行的虚拟机vm中工作的os)可以使用虚拟地址va执行应用170,并且在访问存储器120时可以使用从虚拟地址va转换的系统物理地址pa。当在应用170的执行期间发生至少一个页面故障时,os 180可以获知(即,识别)系统物理地址pa当中的故障页面(操作s812)。
[0076]
os 180可以对故障页面进行计数并且判定故障页面的数目是否超过参考值(操作s813)。当判定出故障页面的数目超过参考值时,os 180可以观察(即,分析)从故障页面的系统物理地址pa识别的行地址ra的位和列地址ca的位(操作s814)。当判定出故障页面的数目不超过参考值时,os 180可以继续操作应用170并且进行到操作s812。
[0077]
os 180可以预测在故障页面的系统物理地址pa中的相同的不良地址位处出现的可能的故障地址属性(操作s815)。os 180可以将系统物理地址pa的可能的故障地址属性(即,故障类型)指定为基于行的故障、基于列的故障或基于块的故障。基于可能的故障地址属性的规范,当os 180执行虚拟地址与存储器120的系统物理地址之间的第二地址转换时,os 180不将特定故障类型的故障系统物理地址(例如,基于行的故障或行故障、基于列的故障或列故障、或者基于块的故障或块故障)提供为系统物理地址(操作s816)。本发明不限于此。在示例实施例中,当另一虚拟机与处理器110合作执行应用时,另一虚拟机的os可以基于故障系统物理地址来执行地址转换,以防止故障系统物理地址在转换中被使用。在示例实施例中,故障系统物理地址可以作为故障地址存储在处理器110的本地系统存储器中,并且可以被至少一个虚拟机参考,或者如果先前存储在bios存储器130中,则可以从bios存储器130被上传到本地系统存储器。而且,os 180可以将故障系统物理地址作为故障地址存储在bios存储器130中(操作s820)。
[0078]
在os 180处理页面故障时,系统100的操作不被中断或不被重启,并且该方法行进到操作s810。因此,可以维持系统100的可用性。
[0079]
图9是用于描述当图1的系统100被启动时执行的修复操作的概念图。
[0080]
参照图9,bios存储器130可以存储用于启动系统100的bios代码。而且,bios存储器130可以存储由os 180指定为故障行地址fra、故障列地址fca和/或故障块地址fba的故障地址。故障行地址fra、故障列地址fca和/或故障块地址fba可以存储在非易失性存储单元(nvm部件)930中。非易失性存储单元930是构成bios存储器130的非易失性存储器件的一部分。
[0081]
系统100可以在系统100通电时执行启动操作,该启动操作为由处理器110执行bios存储器130中的部分bios代码。用于存储器120的存储训练(memory training)可以被包括在由处理器110执行bios代码的启动操作中。可以对存储器控制器112执行存储训练,以确定存储器120的核参数和/或外围电路参数的优化参数。在下文中,为了便于说明,存储器120将被统称为动态随机存取存储器(dram)120。dram 120可以是同步dram(sdram)、双倍数据速率sdram(ddr sdram)、低功耗双倍数据速率sdram(lpddr sdram)、图形双倍数据速率sdram(gddr sdram)、ddr2sdram、ddr3 sdram、ddr4 sdram、ddr5 sdram、宽i/o dram、高带宽存储器(hbm)和混合存储器多维数据集(hmc)中的任意一种。
[0082]
当系统100启动时,存储器控制器112可以根据在寄存器控制字(rcw)中设置的算法来初始化dram 120,并且对dram 120执行存储训练。通过使用被提供有在存储器控制器112与dram 120之间进行有效通信所需的信号、频率、定时、驱动、详细的操作参数以及功能的存储器phy来执行存储训练。存储器控制器112可以在dram 120的存储训练之后将存储在bios存储器130的非易失性存储单元930中的故障行地址fra、故障列地址fca和/或故障块地址fra提供给dram 120。
[0083]
dram 120可以修复存储单元阵列中的显示故障特征的故障单元。存储单元阵列可以包括多条字线、多条位线以及形成在字线和位线彼此相交的点处的多个存储单元。dram 120可以包括被配置为用冗余单元来修复故障单元的修复控制电路920。修复控制电路920可以修复在dram 120的半导体制造过程之后通过测试检测到的故障单元。而且,修复控制电路920可以执行用冗余单元修复在dram 120的连续使用期间发生的故障单元的封装后修复(ppr)。
[0084]
修复控制电路920可以执行ppr以分别用冗余行地址rra、冗余列地址rca和/或冗余块地址rba替换故障行地址fra、故障列地址fca和/或故障块地址fba。修复控制电路920可以将关于替换了需要被修复的源地址s_addr(即,故障行地址fra、故障列地址fca和/或故障块地址fba)的目标地址d_addr(即,冗余行地址rra、冗余列地址rca和/或冗余块地址rba)的信息存储在地址存储表921(即,地址存储电路)中。在示例实施例中,地址存储表921可以被包括在修复控制电路920或存储器120中。
[0085]
地址存储表921可以包括例如反熔丝阵列或内容可寻址存储器(cam)。反熔丝是电特性与熔丝元件的电特性相反、在未被编程的状态下具有高电阻值并且在被编程的状态下具有低电阻值的电阻熔丝元件。cam是同时将输入地址与存储在各个cam项中的源地址s_addr进行比较的特殊存储结构,并且cam的输出指示源地址s_addr(如果有)与目标地址d_addr匹配。
[0086]
修复控制电路920可以将地址存储表921提供给存储器控制器112。在示例实施例中,存储器控制器112可以访问地址存储表921以更新存储在地址存储表921中的信息或从地址存储表921读取信息。存储器控制器112可以将地址存储表921信息存储为存储器管理
信息910,以用于至少一个处理器110对dram 120的一致访问。地址存储表921信息可以被至少一个处理器110共享。当至少一个处理器110在应用170的执行期间执行存储器分配的操作时,基于地址存储表921中的信息执行存储器分配操作。因此,至少一个处理器110可以通过使用存储器管理信息910来执行通常被称为存储器管理器的功能的功能,即,管理dram 120中的os 180的地址空间以及为使用dram 120的其他虚拟机vm均匀地分配存储区域。
[0087]
图10至图12是用于描述在图1的存储器120中执行的修复操作的图。
[0088]
在图10中,假定用冗余行地址rra修复故障行地址fra。存储单元阵列1000a可以包括普通单元阵列nmca和冗余单元阵列rmca。普通单元阵列nmca可以包括连接到字线和位线的存储单元,而冗余单元阵列rmca可以包括连接到冗余字线和冗余位线的存储单元(在本文中也称为冗余单元)。修复控制电路920可以包括行修复器922(即,行修复电路,也称为行修复部件),行修复器922确定冗余行地址rra,使得用于修复故障行地址fra的冗余资源彼此不重叠。
[0089]
行修复器922可以执行修复操作,使得选择冗余行地址rra而不是故障行地址fra。当施加到存储器的访问行地址指定普通单元阵列nmca的故障行地址fra时,选择与冗余单元阵列rmca的冗余行地址rra相对应的冗余单元。行修复器922停用与故障行地址fra相对应的字线,并且激活与冗余行地址rra相对应的冗余字线。因此,选择与冗余行地址rra相对应的冗余单元而不是与故障行地址fra相对应的存储单元。
[0090]
在图11中,假定用冗余列地址rca修复故障列地址fca。存储单元阵列1000b可以包括普通单元阵列nmca和冗余单元阵列rmca。普通单元阵列nmca可以包括连接到字线和位线的存储单元,而冗余单元阵列rmca可以包括连接到冗余字线和冗余位线的存储单元。修复控制电路920可以包括列修复器924(即,列修复部件),列修复器924确定冗余列地址rca,使得用于修复故障列地址fra的冗余资源彼此不重叠。
[0091]
列修复器924可以执行修复操作,使得选择冗余列地址rca而不是故障列地址fca。当施加到存储器的访问列地址指定普通单元阵列nmca的故障列地址fca时,选择与冗余单元阵列rmca的冗余列地址rca相对应的冗余单元。列修复器924防止与故障列地址fca相对应的位线被选择,而是选择与冗余列地址rca相对应的冗余位线。因此,选择与冗余列地址rca相对应的冗余单元而不是与故障列地址fca相对应的存储单元。
[0092]
在图12中,假定用冗余块地址rba修复故障块地址fba。存储单元阵列1000c可以包括普通单元阵列nmca和冗余单元阵列rmca。普通单元阵列nmca可以包括连接到字线和位线的存储单元,而冗余单元阵列rmca可以包括连接到冗余字线和冗余位线的存储单元。修复控制电路920可以包括块修复器926(即,块修复部件),块修复器926确定冗余块地址rba,使得用于修复故障块地址fba的冗余资源彼此不重叠。
[0093]
块修复器926可以执行修复操作,使得选择冗余块地址rba而不是故障块地址fba。当施加到存储器的访问行地址和访问列地址指定指示普通单元阵列nmca的某个区域的故障块地址fba时,选择与冗余单元阵列rmca的冗余块地址rba相对应的冗余单元区域。块修复器926防止与故障块地址fba相对应的存储区域中的存储单元被选择,而是选择与冗余块地址rba相对应的存储区域中的冗余单元。
[0094]
图13是根据本发明构思的实施例的启动系统100的方法的流程图。
[0095]
参照图1、图9和图13,当系统100通电时(操作s1310),存储器120可以执行启动操
作,以通过处理器110执行bios存储器130中的一部分bios代码。可以通过处理器110在执行bios代码的启动操作当中执行存储器120的存储训练(操作s1313)。可以对存储器控制器112执行存储训练,以确定存储器120的核参数和/或外围电路参数的优化参数。在存储训练(操作s1313)之后,可以向存储器120发送存储在bios存储器130中的故障系统物理地址(例如,故障行地址fra、故障列地址fca和/或故障块地址fba)(操作s1320)。
[0096]
存储器120可以执行用于修复故障系统物理地址的操作(操作s1314)。如上所述,存储器120可以用冗余行地址rra修复故障行地址fra。存储器可以用冗余列地址rca修复故障列地址fca。存储器可以用冗余块地址rba修复故障块地址fba。存储器120可以修复故障系统物理地址,从而以最大的效率使用存储器120的资源。
[0097]
本发明构思的实施例可以以许多不同类型的系统实现。此外,本发明构思的实施例可以用代码来实现并且可以被存储在包括非暂时性机器可读存储介质的物品中,该非暂时性机器可读存储介质存储可以被用来对系统进行编程以执行指令的指令。非暂时性存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、固态硬盘(ssd)、光盘只读存储器(cd

rom)、可擦写光盘(cd

rw)、磁光盘、rom、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)的随机存取存储器(ram)、诸如可擦除可编程只读存储器(eprom)、闪存和电可擦除可编程只读存储器(eeprom)的半导体型器件、磁卡或光卡、或者任何其他适合存储电子指令的介质。
[0098]
尽管已经参照本发明构思的实施例具体示出和描述了本发明构思,但是应当理解的是,在不脱离所附权利要求的精神和范围的情况下,可以对本文进行形式和细节上的各种改变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献