在存储器错误检测和存储器错误校正之间动态选择的制作方法

文档序号:8491814阅读:571来源:国知局
在存储器错误检测和存储器错误校正之间动态选择的制作方法
【专利说明】
【背景技术】
[0001]计算机存储器易受错误侵害。例如,电气和/或磁干扰可引起存储在存储器(例如动态随机存取存储器(DRAM))内的位非有意改变状态。为了减轻这样的存储器错误,可在DRAM内存储附加的错误保护位,并且存储器控制器可使用这些附加错误保护位来检测和校正这样的存储器错误。可以利用这些附加位的存储来提供不同水平的错误保护。例如,错误检测的基本形式包含在存储器内存储奇偶位。存储奇偶位允许存储器控制器检测单个位的错误。尽管奇偶性使能单个位的简单错误检测,但是可通过存储附加错误保护位来实施更复杂的错误保护。例如,存储在存储器中的附加位内的纠错码(ECC) —般使能检测和校正错误。示例的纠错码是单错误校正双错误检测(SECDED)码。
【附图说明】
[0002]图1A描绘了根据本文公开的教导实施的示例计算系统。
[0003]图1B是图1A的示例系统的示例实施方式。
[0004]图2描绘了可以结合图1A和IB的示例系统使用以在存储器错误检测和存储器错误校正之间动态选择的示例装置。
[0005]图3A是表示可被执行以实施图2的示例装置以最初写到存储器页的示例机器可读指令的流程图。
[0006]图3B是表示图3A的示例指令的详细实施方式的流程图。
[0007]图4是表示可被执行以实施图2的示例装置以从存储器页进行读取的示例机器可读指令的流程图。
[0008]图5是表示可被执行以实施图2的示例装置以写到存储器页的示例机器可读指令的流程图。
【具体实施方式】
[0009]本文公开的示例方法、装置和制品可以用于针对存储器页,在使能不具有校正的存储器错误检测与使能存储器错误检测和校正之间动态选择。错误检测当与错误校正相比时提供相对较少的错误保护。然而,错误校正在能量、存储和/或处理延迟方面比错误检测更昂贵。本文公开的示例使能对存储器的不同部分(例如不同存储器页)的不同水平的保护。S卩,本文公开的示例有用于选择性提供存储器的一些存储器页,其具有使能错误检测而不具有存储在那些存储器页中的数据的错误校正的错误保护信息,同时选择性提供其它存储器页,其具有使能错误检测以及存储在那些存储器页中的数据的错误校正的错误保护信息。选择性提供具有较少错误保护位以使能错误检测而不具有错误校正的一些存储器页以及具有相对更多的错误保护位以使能错误检测和错误校正的其它存储器页,这减小了能量、存储和/或处理成本并且提高了总体系统性能。本文公开的示例还可用于将被使能用于错误检测和校正的存储器页切换到包含不具有校正的错误检测的更低水平保护,并且将被使能用于不具有校正的错误检测的存储器页切换到包含错误检测和错误校正的更高水平错误保护。本文公开的在存储器错误检测和存储器错误校正之间动态切换还减小了能量、存储和/或处理成本并且提高了总体系统性能。
[0010]减轻存储器错误的现有技术包括在存储器中存储附加的错误保护位,并且将存储器控制器配置为使用这些附加错误保护位来检测和校正这样的存储器错误。例如,存储器芯片可存储包括八个数据位和单个错误保护位的九个位。可以通过存储更少或更多的错误保护位来提供不同水平的错误保护。例如,错误检测的基本形式包含在存储器内存储奇偶位。奇偶位允许存储器控制器检测单个位错误。与对应组的η位(例如八位)结合存储奇偶位,并且取决于η位组是具有奇数或还是偶数量的被设定为“I”的值的位来将其值设定为一“I”或零“O”。在存储器事务期间,如果存储器控制器基于对应奇偶位预期看到偶数数量的具有“I”的值的位,但是相反看到奇数数量的具有“I”的值的位,则存储器控制器检测到在对应η位中存储错误。尽管奇偶性允许存储器控制器检测存储的数据中的错误,但是存储器控制器不能校正错误,因为存储器控制器基于奇偶位不知道哪个位包含错误。错误检测的其它类型包括循环冗余校验、校验和等。
[0011]比奇偶位相对更加鲁棒的错误保护可以通过在存储器中存储附加的错误保护位来实施。可以在存储器的附加位中存储纠错码(ECC)来使能检测和校正错误。单错误校正双错误检测(SECDED)码是使能64位字(每个贡献八个数据位的八个存储器芯片)内的单个位错误被校正并且64位字内的双位错误(例如在两个位中的错误)被检测到的ECC。为了实施该形式的错误校正,跨存储64位字的多个芯片或存储模块的阵列散布SECDED码(例如八个存储器芯片中的每个存储SECDED码的单个位),从而任何一个存储器芯片的故障将仅影响SECDED码的一个位。使用SECDED的一些形式的错误校正包括“chipkill”和“chipkill-2”。可使用更先进的纠错码来校正多个位。
[0012]纠错码(例如SECDED码)在能量、存储和/或处理方面是成本高的。例如,访问SECDED保护的存储器中的64个数据位包含检索72个位(例如64个数据位加上八个SECDED位)来读取64位的数据。为了使用SE⑶ED码实施单个chipkill,每个芯片可以贡献仅一个位,因为SE⑶ED码可仅校正在72位中的单个位。在基于动态随机存取存储器(DRAM)的系统中,对使用汉明码(一种类型的ECC)的ECC保护的存储器的访问激活72个DRAM芯片以检索64字节的缓存行。激活所有这些芯片意味着当使用X8DIMM和封闭的页策略时针对每个缓存行访问,读取64千字节(kB)的数据(加上8kB的ECC)到行缓冲器。chipkill的更多近来的实施方式采用基于符号的里德-所罗门码(另一类型的ECC),其激活16个芯片并且将最小缓存行大小限制在128字节。相比之下,不具有chipkill的典型系统要求激活仅8个芯片。激活和读取数据以实施纠错码(例如chipkill)消耗显著量的功率,并且大多数数据读取对于除了执行错误校正之外的任何目的通常是没用的。而且,较大量的芯片的激活(例如比不具有错误校正的系统更大)以支持错误校正可减小在存储器内的并行性。例如,在实施错误校正的系统内,存储器芯片可能变成暂时不可用于支持其它数据访问,这可能导致排队延迟。
[0013]很多存储器系统是基于硬件的并且被实施为使得提供纠错码用于存储在存储器中的所有数据。针对存储器中存储的所有数据实施纠错码的这样的系统使用显著量的能量、存储和/或处理。不同于这样的现有技术,本文公开的示例选择性存储与纠错码结合的一些数据,同时选择性存储与不使能错误校正的相对更简单的检错码结合的其它数据,因此减小要求的能量、存储和/或处理,因为更简单的检错码需要激活存储器模块的较少存储器芯片(例如具有单个子阵列访问(SSA)以从存储器模块的单个DARAM芯片检索整个缓存行和/或具有多个子阵列访问(MSA)能力以从存储器模块的少于所有DRAM芯片检索整个缓存行的存储器模块)和/或激活单个芯片内的较少字线和/或位线。本文公开的示例可使用不同标准来确定哪些存储器页提供有错误检测和错误校正位(例如ECC)并且哪些存储器页提供有相对更简单的错误检测位,其不提供错误校正能力。例如,存储在存储器中的一些数据可包括不可重建内容(例如脏文件I/O缓冲器)并且因此应当被存储在具有使能错误检测和校正的错误保护位的存储器中。然而,存储在存储器中的其它数据可能是更容易可重建的(例如可从数据源再读取的干净文件缓冲器),并且因此可被存储在被提供有使能错误检测但不具有错误校正的成本较低的错误保护位(例如奇偶性)的存储器中。附加地,在本文公开的一些示例中,可以将存储使能错误检测和校正的错误保护位的存储器页改变为存储使能错误检测但不具有校正的成本较低的错误保护位,并且可将存储使能错误检测但不具有校正的成本较低的错误保护位的存储器页改变为存储使能错误检测和错误校正能力的错误保护位。虽然本文讨论了错误保护和/或纠错码的具体类型(例如ECC、奇偶性),任何适当类型的错误保护和/或检错码和技术可与本文公开的选择性提供不具有校正的错误检测以及错误检测和校正能力的示例一起使用。例如,可以在本文公开的示例中使用任何类型的纠错码,例如里德-所罗门码(例如基于符号的保护、BCH码等)、汉明码、双重奇偶性(例如第一重指出哪个芯片失效并且第二重全局奇偶性恢复失效的位)等。可以在本文公开的示例中使用任何次数的检错码,例如简单的奇偶性、校验和、循环冗余校验(CRC)等。
[0014]图1A图示了可以用于在与存储器页结合的存储器错误检测和存储器错误校正之间动态选择的示例计算系统100。在图示的示例中,缓冲器120 (例如转译后备缓冲器)存储可被设定为第一值以指示存储器页存储错误保护信息来检测但不校正存储器页中的错误的标志。由图示的示例的缓冲器120存储的标志可被设定为第二值以指示错误保护信息用于检测和校正存储器页的错误。在图示的示例中,存储器控制器126接收基于该标志的请求以当该标志被设定为第一值时使能不具有校正的错误检测用于存储器页。图示的示例的存储器控制器126接收基于该标志的请求以当该标志被设定为第二值时使能错误检测和校正用于存储器页。
[0015]图1B是可用于在与存储器页结合的实施存储器错误检测和实施存储器错误校正之间动态选择的图1A的示例系统100的示例实施方式。在图示的示例中,操作系统102使能存储器页被实施有不同水平的错误保护(例如不具有校正的存储器错误检测或存储器错误检测和校正),并且在逐个页的基础上使能保护水平在不具有校正的错误检测与错误检测和校正之间切换。
[0016]在图1B的图示示例中,存储器控制器126与一个或多个动态随机存取存储器(DRAM)储存设备(例如一个或多个DRAM芯片)通信。为了容易图示,在图1B的示例中,示出一个DRAM 108。图示的示例的存储器控制器126还与处理器134通信。图示的示例的处理器134与非易失性存储器136和大容量储存存储器138通信。图示的示例的DRAM 108被用作页存储器来存储最近和/或频繁访问的数据。在一些例子中,从诸如非易失性存储器136、大容量储存存储器138和/或任何其它本地和/或远程数据源的数据源检索DRAM108中的数据。在图示的示例中,DRAM 108在诸如图1B中示出的存储器页104之类的存储器页中存储这样的数据。当处理器134执行对对应的数据被存储在DRAM 108中的存储器地址的访问时,存储器控制器126引起存储器访问以从DRAM 108中的对应存储器页(例如存储器页104)检索所请求的数据。
[0017]在图示的示例中,存储器页(页-1 )104将数据106存储在物理存储器(例如示例的DRAM 108)中的物理存储器地址处。通过操作系统102使用虚拟存储器来执行对程序和/或应用的存储器分配。虚拟存储器中的页映射到被存储在DRAM 108中的物理地址处的物理页(例如存储器页104)。在图示的示例中,示例处理器104被提供有示例页表110,其将由操作系统102使用以存储在虚拟存储器地址(由程序和/或应用涉及)与物理存储器(例如DRAM 108)的物理存储器地址之间的映射。图示的示例的页表110包括用于页1-4的映射条目112-118,页1-4中的存储器页(页-1)104在图1B中详细示出。尽管图示的示例的页表110示出映射
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1