CN104081373B - 单芯片和双芯片备援 - Google Patents
单芯片和双芯片备援 Download PDFInfo
- Publication number
- CN104081373B CN104081373B CN201280068687.1A CN201280068687A CN104081373B CN 104081373 B CN104081373 B CN 104081373B CN 201280068687 A CN201280068687 A CN 201280068687A CN 104081373 B CN104081373 B CN 104081373B
- Authority
- CN
- China
- Prior art keywords
- memorizer
- area
- cache lines
- chip
- redundant
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/808—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a flexible replacement scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于克服存储器中的故障的技术。存储器的一个部分可以采用单芯片备援模式操作。当检测到存储器的部分中的单芯片中的错误时,存储器的部分的区域可以被转换为以双芯片备援模式操作。存储器可以被采用单芯片和双芯片备援模式二者来访问。
Description
背景技术
计算设备可能遭受任何数量的不同类型的故障。一个特定类型的故障是组成存储器系统的存储器芯片中的故障。单独存储器芯片的故障可以减少对系统可用的存储器的量。因为存储器芯片通常不是单独可维修的,所以替换故障存储器芯片可能需要完整替换存储器模块,其可能包含许多非故障芯片。此外,在计算机操作时存储器典型地不可维修,并且因此可能需要停机时间来实施故障存储器模块的替换。
附图说明
图1描绘了存储器系统的示例的框图。
图2描绘了具有芯片故障的存储器系统的示例的另一个框图。
图3(a-b)描绘了具有芯片故障的存储器系统的附加示例。
图4(a-c)描绘了具有多个芯片故障的存储器系统的示例。
图5描绘了从芯片故障恢复的示例流程图。
图6描绘了从芯片故障恢复的另一个示例流程图。
图7描绘了从芯片故障恢复的示例流程图。
图8描绘了从多个芯片故障恢复的示例流程图。
具体实施方式
由于需要替换有故障的存储器部件,所以计算系统中的存储器故障可以导致意外的系统停机时间。当今计算环境中的意外停机时间(其中计算系统的高可用性被预期)可能是无法忍受的。当故障在服务器系统中发生时,由于存储器故障所引起的问题可能进一步被恶化,因为许多不同的用户可以被系统停机时间影响。此外,许多组织依赖于在其计算机上运行的应用的连续可用性,以实现组织的目标。由于存储器故障引起的意外停机时间对于那些目标可能是不利的。
为了缓解存储器故障的影响,数个技术是可用的。一个这种技术可以被称为单芯片备援(SCS)。在SCS系统中,存储器控制器可以在存储器中存储缓存行,使得任何单个存储器芯片的故障不导致缓存行变为不可用。例如,缓存行可以被存储在具有错误修正代码(ECC)保护的存储器中。能够检测和修正单芯片的故障的ECC可以从多个可用错误修正代码中被选择。当存储器中的芯片故障时,ECC可以被用于确保缓存行仍然可用。
SCS系统能够继续运行,甚至在ECC码字内的单个存储器芯片故障的情形下。此外,SCS系统能够以高效的方式利用存储器和存储器控制器之间的带宽。然而,SCS系统遭受它们仅能够从ECC码字内的单芯片故障恢复的固有问题。码字内的第二存储器芯片的故障最低可以导致对替换故障存储器的系统停机时间的需求。
可以被用来缓解存储器中的故障的另一个技术可以被称为双芯片备援(DCS)。在DCS中,缓存行再次被存储在具有许多已知错误修正代码中的一个的保护的存储器中,所述错误修正代码能够在每个ECC码字内检测和修正最多两个存储器芯片故障。与SCS相比较,能够在两个错误芯片中修正故障的错误修正代码典型地横跨大量芯片分布缓存行,从而当芯片故障时减少被损坏的位的数量。例如,缓存行可以在两个分离的存储器总线上包含的芯片之间被分布,或在单个总线上的芯片之间被分布但在单个总线上的地址之间分布,使得存储缓存行的两个芯片的任何错误不使所述行不可用。缓存行的分布可以在不同总线上的存储器模块、相同总线上的不同存储器模块、或相同存储器模块上的不同排列(rank)之间发生。
DCS具有如下优点:在需要停机时间以便修理之前,能够经受住ECC码字内的两个存储器芯片中的故障。因此,第一故障可以发生,并且系统可以继续操作。甚至当第二故障发生时,系统继续操作。因此,与SCS相比较,系统管理员可以被给予更宽的机会窗口来在计划维护时段期间致力于解决存储器故障。第一存储器芯片的故障不导致其中接下来的故障可能导致系统不可用的情形。可能不需要维修直到第二芯片故障,第二芯片故障直到第一芯片故障之后的相当大的时间量才可能会发生。
然而,由DCS提供的增加的保护是要付出代价的。如所提及的,DCS通过横跨多个总线或单个总线内的存储器地址的多个不同范围存储缓存行进行操作。访问多个总线或地址范围的需求导致从存储器到存储器控制器的数据转移的低效率,因为需要额外的周期来配置从不同总线或单个总线上的不同范围读取/写入到不同总线或单个总线上的不同范围。为获取DCS的保护,多达40%的总线带宽可能被损失。即使还不具有任何存储器芯片的故障,总线带宽的损失也发生。
在此提供的技术克服了由SCS和DCS所产生的问题,而同时保留了由那两个机制提供的优点。存储器最初可以在SCS模式中操作,提供以上所描述的益处,诸如,全总线利用。当存储器中的单芯片中的故障发生时,由故障影响的存储器的部分可以被转换为DCS模式。未被影响的存储器的部分仍然以SCS模式进行操作。因此,全带宽被维持以用于未被存储器芯片的故障所影响的存储器的那些部分,从而尽可能地维持SCS的优点。同样地,对于包含故障存储器芯片的存储器的部分,转换到DCS保留了存储器芯片的接下来的故障不是关键性的优点,因为附加的存储器芯片的故障可以被适应。以上的技术被在下面进一步详细地并且结合附图地描述。
图1描绘了存储器系统的示例的框图。系统可以包括存储器控制器110、存储器115-0, 115-1、以及把存储器控制器连接到存储器的总线120-0, 120-1。存储器控制器可以接收请求125以从外部源读取/写入存储器中的缓存行。例如,存储器请求可以来自源,诸如,处理器、直接存储器访问控制器、或其它这种设备。
存储器控制器可以典型地以硬件实现。由于当今计算环境中所需的处理速度需求,存储器控制器可以通常被实现为应用特定集成电路(ASIC),或可以作为较大设备(诸如,处理器)的一部分被包括。存储器控制器可以包括存储器、通用处理器、和专用控制逻辑。此外,存储器控制器可以执行软件或固件以助于提供在此所描述的功能性。所描述的各种功能可以被使用所需的存储器、处理器、软件、固件和逻辑的任何组合来实现。
存储器控制器110可以通过一个或多个总线访问存储器115。当接收存储器请求时,存储器控制器可以访问所述存储器以服务请求。例如,在从存储器读取缓存行的请求的情形下,存储器控制器可以通过总线从所述存储器检索所述缓存行、基于操作的模式计算适合的ECC、比较所计算的ECC与采用所述缓存行检索的ECC、在给定ECC类型的情形下尽可能地修正任何错误、以及把缓存行提供到请求者。在写入存储器的请求的情形下,存储器控制器可以接收请求以写入缓存行、计算适合的ECC、并且在存储器中存储缓存行。
在以上描述中,参考了适合的ECC。如以上所提及的,错误修正代码对于SCS和DCS二者是可用的。缓存行可以被在SCS模式130-0,1或DCS模式135下存储在存储器中。当读取或写入缓存行时,存储器控制器可以基于所述缓存行是否被包含在存储器的SCS或DCS部分中而选择适合的ECC来使用。因此,存储器控制器能够以SCS模式访问存储器中的一些部分并且以DCS模式访问存储器中的其它部分。此外,当存储器的SCS部分中的芯片故障时,存储器控制器可以把存储器的区域从SCS模式转换到DCS模式。以SCS和DCS模式访问存储器,连同从一个模式到另一个模式的转换一起,在下面被进一步详细地描述。
图2描绘了具有芯片故障的存储器系统的示例的另一个框图。在典型的存储器系统中,包含64字节数据205的缓存行可以被使用。半缓存行(如名称暗示的)是完整缓存行的一半。例如,如示出的,64字节缓存行283可以由半缓存行283-a, b组成。对于这个公开的其余部分来说,仅以数字对缓存行的参考指示完全缓存行,而对数字和字母的参考指示对单个半缓存行的参考。
半缓存行可以被存储在存储器215-0, 1中。使用18 x 4动态随机访问存储器(DRAM)芯片208的存储器的典型芯片布局的示例被示出。在这种实现方式中,16个存储器芯片可以被用于存储数据,而2个存储器芯片被用于存储ECC。在给定总共18个芯片的情形下,具有许多已知的单芯片错误修正代码,该单芯片错误修正代码可以检测和修正单芯片中的故障。
缓存行280-283可以被存储在存储器215-0中。缓存行280-283可以由能够检测和修正单芯片错误的任何可用ECC保护。缓存行280-283可以形成第一SCS区域230-0。同样地,缓存行290-293可以被存储在存储器215-1中。缓存行290-293还可以由单芯片备援ECC保护,并且形成第二SCS区域230-1。这些组缓存行中的每一个以单芯片备援模式操作,因为在这些区域中的任何单芯片的故障不使在其中存储的缓存行不可用。两个SCS区域230-0,1是彼此独立的。
双芯片备援区域235是由ECC保护的区域的示例,所述ECC能够检测和修正最多两个芯片中的故障。这个DCS区域包括两个地址范围内的缓存行:240-241和250-251。如示出的,每个缓存行横跨两个存储器总线分布。例如,半缓存行(240,250,241,251)-a被存储在存储器215-0中,而半缓存行(240,250,241,251)-b被存储在存储器215-1中。因此,DCS区域中的给定缓存行被横跨总共36个芯片存储,其中32个芯片用于数据,以及4个芯片用于存储ECC。在给定这个数量的芯片的情形下,能够检测和修正用于最多两个芯片的故障的错误修正代码是可用的。缓存行240-241和250-251由这种ECC保护。
当SCS区域中的单芯片故障时,所述区域可以从SCS模式转换到DCS模式,因此保护所述区域中的缓存行免于后续芯片故障。当SCS区域中的单芯片故障时,DCS基础236-0可以被确定。此外,DCS限界238-0可以被确定。DCS基础和限界的选择将在下面进一步详细地描述,但现在,DCS基础和限界确定了将被转换到DCS的存储器的SCS区域的开始和结束。为了这个描述的目的,假设在总线220-0上的存储器215-0内已具有单芯片的故障,并且那个故障影响DCS基础236-0和DCS限界238-0之间的区域,并且将被称为第一区域。
可以选择大小上等于包含故障的区域的第二区域。第二区域还可以由DCS基础236-1和DCS限界238-1来标识。在一个示例中,除了在不同总线220-1上之外,第二区域可以是第一区域的相同地址范围。然而,不需要这个特定的安排。附加可能性的示例被相对于图3(a-b)来描述。两组DCS基础和DCS限界地址一起定义了DCS区域。
转换指针237-0,1可以被设置成分别指向DCS基础236-0,1。转换指针可以从DCS基础推进到DCS限界,随着它们推进,把缓存行从SCS模式转换到DCS模式。转换缓存行的过程可以通过示例的使用而被最佳地解释。如示出的,转换指针237-0当前指向缓存行262。对应的转换指针237-1当前指向缓存行272。存储器控制器210可以交换第一和第二区域之间的每个缓存行的一半。例如,如示出的,半缓存行272-a可以使用接下来的过程与半缓存行262-b交换。缓存行262和272均被从存储器读取,并且使用其对应的SCS ECC修正(如果需要的话)。然后,DCS ECC被针对每个缓存行计算。由此得到的缓存行然后向回写入到存储器。当缓存行被向回写入到存储器时,它们横跨第一和第二区域分布。转换指针然后可以被推进一个缓存行。所述缓存行262, 272的这种交换的最终结果现在横跨存储器的两个区域分布。所述过程可以重复直到转换指针指向DCS转换限界。已经被交换的缓存行的示例是缓存行260, 261, 270, 271。等待被转换的缓存行是行263, 273。
在以上描述的交换缓存行的过程中,新的错误修正代码被计算。然而,因为所述缓存行现在横跨增加数量的芯片分布,所以DCS错误修正代码可以被使用。一旦一对缓存行到DCS模式的转换完成,所述缓存行则能够抵挡任何附加芯片的故障。
尽管所述转换在进行之中,但对总线地址(其在DCS基础之上,但在DCS转换指针之下)的任何存储器访问请求将被像对DCS区域的访问请求一样处理。同样地,对总线地址(其在转换指针之上,但在DCS限界之下)的任何存储器访问请求将被像对SCS区域的访问请求一样处理。对总线地址(其由转换指针指向,意味着所述地址处于被转换的过程中)的存储器请求将停止并将在随后的时间退出。到所述请求退出时为止,所述转换将很可能已完成。如果所述转换未完成,则所述请求将继续停止直到诸如总线地址转换完成的时间。
DCS基础和限界以上被简洁地提及。DCS基础和限界确定了将被从SCS模式转换到DCS模式的区域的范围。如以上所提及的,DCS的使用不是没有损失的。特别地,由于需要重新配置存储器控制器以访问不同总线上的位置,故DCS区域遭受减少的带宽利用。如此,令人期望的是:限制被转换到DCS的区域的大小,从而使减少的总线利用的影响最小化。
在此描述的技术基于存储器芯片故障的范围选择转换区域的大小。例如,单个存储器芯片可以包括可能独立故障的单独库(bank)。在单个芯片内的单个库故障的情形下,第一区域可以被选择为仅包括那个库。如果多个连续的库故障,则第一区域可以包括多个库。如果整个芯片故障,则第一区域可以包括整个芯片。应被理解的是:第一区域可以被选择为尽可能地小,而仍然覆盖被故障影响的全部存储器位置。
图2就典型地用于计算系统的存储器系统的示例实现方式被呈现,然而应被理解的是:在此描述的技术不限于任何特定芯片配置、缓存行大小、或总线的数量。
图3(a-b)描绘了具有芯片故障的存储器系统的附加示例。在图2的描述中,假设两个SCS区域到DCS区域的转换在位于两个分离总线上的存储器之间,并且两个SCS区域在其总线上处于相同的相对存储器地址。然而,在此描述的技术不限于这种配置,并且可以与任何数量的其它配置一起使用。应被理解的是:存储器、总线和地址的任何配置可以被使用,只要附加芯片故障将不影响ECC修正错误的能力。一般地说,其中缓存行被通过存储器芯片的集合重新分布从而增加可检测和/或可修正存储器芯片的错误的数量的任何存储器配置是可接受的。
图3(a)描绘了双芯片备援区域335的示例,其被包含在单个存储器总线320-0上的存储器315-0中。如示出的,半缓存行(360, 370, 361, 371)-a 被存储在一个范围的总线地址中。半缓存行(360, 370, 361, 371)-b被存储在不同范围的总线地址中。图3(a)中示出的配置可与在此描述的技术一起使用,只要任何存储器芯片故障将不影响缓存行的两个一半。配置有效的原因是:当依据所描述的技术以DCS模式进行操作时,缓存行已经历了仅影响缓存行的一半的一个芯片中的错误。如果附加的芯片故障,故障还将仅影响缓存行的一半。因此,整个缓存行将经历最多两个芯片故障,它们当使用DCS错误修正代码时可以由存储器控制器310修正。
图3(b)描绘了双芯片备援区域335的另一个示例,其被包含在两个存储器总线320-0,1上的存储器315-0,1中,但在那些总线上的地址不是相同的。如示出的,半缓存行(380, 390, 381, 391)-a被存储在一个总线上的存储器中。半缓存行(380, 390, 381,391)-b被存储在不同总线上的存储器中。应当明确的是:因为在不同总线上的芯片中存储的半缓存行是彼此独立的,所以任何附加芯片故障将最多影响缓存行的一半。此外,总线地址范围未必是相同的(如相对于图2所描述的)。存储器控制器310可以存储形成DCS区域的地址范围。因此,当存储器请求被接收时,可以访问正确总线地址以提供完整的缓存行。
图4(a-c)描绘了具有多个芯片故障的存储器系统的示例,如以上提及的,在此描述的技术在需要修理之前考虑到最多两个存储器芯片故障。然而,在一些情形下,重新配置DCS区域使得附加芯片故障可以发生并且又仍然允许系统保持操作可以是可能的。
图4(a)描绘了其中存储器区域已被转换为依据以上呈现的技术以DCS模式操作的系统。如示出的,半缓存行(460, 470, 461, 471)-a被存储在一个总线420-0上的存储器中,并且半缓存行(460, 470, 461, 471)-b被存储在不同总线420-1上的存储器中。为了这个描述的目的,假设到目前为止仅具有一个芯片故障,因此由DCS提供的保护仍然是可用的。换言之,假设仅具有单个总线上的单芯片故障,并且存储器控制器410可以使用DCS ECC修正错误。
在某个时间点上,可能具有第二芯片故障。在其中第二芯片故障在与包含第一芯片故障的总线相对的总线上发生的情形下,DCS区域可以向回转换到两个SCS区域,因为用于两个SCS区域的ECC将足以修正由两个故障的芯片导致的错误。两个SCS区域中的每一个现在可以被使用另一个无错误SCS区域转换成分离的DCS区域,因此扩展了DCS保护的时段。
如在图4(b)中示出的,假设具有总线420-0上的单芯片故障以及总线420-1上的单芯片故障。把区域转换到DCS的过程然后可以被相反地执行,导致两个SCS区域。如示出的,半缓存行被交换,使得缓存行的两个一半被包含在单个SCS区域中。如示出的,缓存行460,461现在被包含在第一SCS区域中,而缓存行470,471被包含在第二SCS区域中。应被理解的是:SCS区域中的每一个现在具有一个单芯片故障,并且如此,附加芯片的故障可以导致缓存行变为不可用。
然而,如果能够发现不包含任何芯片错误的另一个区域,则把SCS区域向回转换到DCS区域的过程可以再次发生。如在图4(c)中示出的,包含缓存行480,481的第三无错误区域可以被识别。组成缓存行480,481的半缓存行可以依据以上所描述的过程与组成缓存行470, 471的半缓存行互换以形成新的DCS区域。同样地,最初包含缓存行490, 491的第四无错误区域可以被识别。再次,以上描述的用于在最初包含缓存行460, 461的区域和包含缓存行490, 491的区域之间交换缓存行的过程可以被执行。如虚线示出的,结果是新的双芯片备援区域。
把DCS区域向回转换成两个SCS区域并且然后重新向回转换成DCS区域的过程可以继续,只要无错误区域可以被发现。如此,在由于存储器故障需要修理之前所需的时间量可以被扩展直到发现无错误SCS区域不再是可能的,假设半缓存行从未被一个以上的芯片故障影响。
图5描绘了从芯片故障恢复的示例流程图。在块510中,检测以单芯片备援模式操作的存储器的第一区域中的单芯片错误。这种错误可以通过使用错误修正代码由存储器控制器检测。在块520中,选择大小上等于存储器的第一区域的存储器的第二区域。存储器的第二区域还可以采用单芯片备援模式进行操作。在一些情形下,存储器的第二区域可以是不同总线上的存储器地址的相同范围。在其它情形下,存储器的第二区域可以是相同或不同总线上的存储器地址的不同范围。在块530中,可以把存储器的第一和第二区域从单芯片备援模式转换到双芯片备援模式。
图6描绘了从芯片故障恢复的另一个示例流程图。在块605中,检测以单芯片备援模式操作的存储器的第一区域中的单芯片错误。在块610中,确定第一双芯片备援基础。第一双芯片备援基础标识存储器的第一区域的开始。在块615中,确定第一双芯片备援限界。第一双芯片备援限界标识存储器的第一区域的结束。
在块620中,选择大小上等于存储器的第一区域的存储器的第二区域。存储器的第二区域以单芯片备援模式进行操作。存储器的第二区域可以由第二双芯片备援基础和第二双芯片备援限界标识。在块625中,把转换指针设置到第一和第二双芯片备援基础。在块630中,读取由转换指针指向的两个缓存行,并且使用单芯片备援错误修正代码修正任何错误。在块635中,针对存储器的第一和第二区域中的缓存行,计算双芯片备援错误修正代码。例如,可以读取两个缓存行,并且使用SCS ECC执行任何必需的修正。新的DCS ECC然后可以被针对每个缓存行计算。如下面所描述的,存储缓存行以及新计算的DCS ECC。
在块640中,把缓存行和所计算的错误修正代码存储到存储器的第一和第二区域中。缓存行和所计算的错误修正代码跨越存储器的第一和第二区域。在块645中,把转换指针推进到下一个缓存行。在块650中,确定转换指针是否等于双芯片备援限界。如果否,则所述过程返回到块630。否则,所述过程移动到块655,其中所述转换完成。
应注意的是:在转换处于进行中的时候,缓存行可以继续被访问。缓存行基于双芯片备援基础、限界、和转换指针被访问。如以上所解释的,转换指针以上的缓存行被以SCS模式访问,那些以下的被以DCS模式访问,并且如果相等,访问请求被停止。
图7描绘了从芯片故障恢复的示例流程图。在块710中,检测以单芯片备援模式操作的存储器的部分中的错误。所述错误可以通过使用错误修正代码被检测。在块720中,可以确定完全覆盖所述错误的存储器的第一区域。例如,错误可以在存储器芯片的单个库上,导致所述库的大小是所述区域的大小。作为另一个示例,错误可以在整个芯片上。在块730中,把第一区域转换为以双芯片备援模式操作。
图8描绘了从多个芯片故障恢复的示例流程图。在块805中,检测以单芯片备援模式操作的存储器的部分中的错误。在块810中,确定被所述错误影响的存储器的第一区域。在块815中,确定大小上等于第一区域的存储器的第二区域。存储器的第二区域不包含错误,并且正以单芯片备援模式操作着。
在块820中,针对第一和第二区域中的每个缓存行计算双芯片备援错误修正代码。例如,可以读取每个缓存行,并且使用SCS ECC执行任何必需的修正。然后,DCS ECC可以被针对每个缓存行计算。在块825中,把每个缓存行和所计算的错误修正代码存储在组合区域中。所述组合区域包括第一和第二区域。在块830中,检测组合区域中的第二单芯片错误。第二错误在第二区域中发生。在块835中,把组合区域向回转换成第一存储器区域和第二存储器区域。第一和第二存储器区域以单芯片备援模式操作。
在块840中,确定大小上等于第一区域、不包含错误、并且以单芯片备援模式操作的存储器的第三区域。在块845中,针对第一和第三区域中的每个缓存行计算双芯片备援错误修正代码。再次,可以读取每个缓存行,并且使用SCS ECC执行任何必需的修正。然后,DCSECC可以被针对每个缓存行计算。在块850中,把每个缓存行和所计算的错误修正代码存储在包括第一和第三区域的组合区域中。
在块855中,确定大小上等于第二区域、不包含错误、并且以单芯片备援模式操作的存储器的第四区域。在块860中,针对第二和第四区域中的每个缓存行计算双芯片备援错误修正代码。再次,可以读取每个缓存行,并且使用SCS ECC执行任何必需的修正。然后,DCSECC可以被针对每个缓存行计算。在块865中,把每个缓存行和所计算的错误修正代码存储在包括第二和第四区域的组合区域中。
Claims (13)
1.一种设备,包括:
存储器控制器,用于:
访问存储器的第一部分,存储器的第一部分以单芯片备援模式操作;以及
访问存储器的第二部分,存储器的第二部分以双芯片备援模式操作;
其中存储器的第一部分包括第一区域和第二区域,并且第一区域在第一存储器总线上,第二区域在第二存储器总线上。
2.如权利要求1所述的设备,其中存储器控制器是用于下述各项的存储器控制器:
检测存储器的第一部分的第一区域中的错误;以及
把包含错误的第一区域转换为以双芯片备援模式操作。
3.如权利要求1所述的设备,其中存储器控制器是用于下述各项的存储器控制器:
检测存储器的第一部分的第一区域中的错误;
选择存储器的第一部分中的第二区域,所述第二区域在大小上等于第一区域;以及
在第一和第二区域之间转换缓存行以形成第三区域,所述第三区域以双芯片备援模式操作。
4.一种方法,包括:
检测存储器的第一区域中的单芯片错误,存储器的第一区域以单芯片备援模式操作;
选择大小上等于存储器的第一区域的存储器的第二区域,存储器的第二区域以单芯片备援模式操作;以及
把存储器的第一和第二区域从单芯片备援模式转换到双芯片备援模式。
5.如权利要求4所述的方法,其中转换存储器的第一和第二区域进一步包括:
针对存储器的第一和第二区域中的缓存行计算双芯片备援错误修正代码;以及
把缓存行以及所计算的错误修正代码存储到存储器的第一和第二区域中,其中每个缓存行以及所计算的错误修正代码跨越存储器的第一和第二区域。
6.如权利要求5所述的方法,进一步包括:
确定第一双芯片备援基础,第一双芯片备援基础标识存储器的第一区域的开始;
确定第一双芯片备援限界,所述双芯片备援限界标识存储器的第一区域的结束;
确定第二双芯片备援基础,第二双芯片备援基础标识存储器的第二区域的开始;
确定第二双芯片备援限界,第二双芯片备援限界标识存储器的第二区域的结束;
把转换指针设置为指向第一和第二双芯片备援基础;以及
当转换指针小于第一和第二双芯片备援限界时:
读取由转换指针指向的缓存行,并且使用单芯片备援错误修正代码修正任何错误;以及
把转换指针推进到第一和第二区域中的下一个缓存行。
7.如权利要求6所述的方法,其中双芯片备援基础以上和转换指针以下的缓存行的访问处于双芯片备援模式。
8.如权利要求6所述的方法,其中转换指针以上和双芯片备援限界以下的缓存行的访问处于单芯片备援模式。
9.如权利要求6所述的方法,其中由转换指针指向的缓存行的访问被拒绝并且在随后的时间退出。
10.一种方法,包括:
检测以单芯片备援模式操作的存储器的部分中的错误;
确定被所述错误影响的存储器的第一区域;以及
把第一区域转换为以双芯片备援模式操作。
11.如权利要求10所述的方法,其中转换第一区域进一步包括:
确定大小上等于第一区域的存储器的第二区域,所述第二区域不包含错误并且以单芯片备援模式操作;
针对第一和第二区域中每个缓存行计算双芯片备援错误修正代码;
把每个缓存行以及所计算的错误修正代码存储在包括第一和第二区域的组合区域中。
12.如权利要求11所述的方法,进一步包括:
检测组合区域中的第二单芯片错误,第二错误在第二区域中发生;
把组合区域向回转换成第一存储器区域和第二存储器区域,其中第一和第二区域以单芯片备援模式操作;
确定大小上等于第一区域的存储器的第三区域,所述第三区域不包含错误并且以单芯片备援模式操作;
针对第一和第三区域中的每个缓存行计算双芯片备援错误修正代码;
把每个缓存行以及所计算的错误修正代码存储在包括第一和第三区域的组合区域中。
13.如权利要求12所述的方法,进一步包括:
确定大小上等于第二区域的存储器的第四区域,所述第四区域不包含错误并且以单芯片备援模式操作;
针对第二和第四区域中的每个缓存行计算双芯片备援错误修正代码;
把每个缓存行以及所计算的错误修正代码存储在包括第二和第四区域的组合区域中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/023313 WO2013115790A1 (en) | 2012-01-31 | 2012-01-31 | Single and double chip spare |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104081373A CN104081373A (zh) | 2014-10-01 |
CN104081373B true CN104081373B (zh) | 2016-09-21 |
Family
ID=48905649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280068687.1A Active CN104081373B (zh) | 2012-01-31 | 2012-01-31 | 单芯片和双芯片备援 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9690673B2 (zh) |
EP (2) | EP2810176B1 (zh) |
CN (1) | CN104081373B (zh) |
TW (1) | TWI556095B (zh) |
WO (1) | WO2013115790A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017131700A1 (en) * | 2016-01-28 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Row repair of corrected memory address |
KR20230003766A (ko) * | 2021-06-30 | 2023-01-06 | 삼성전자주식회사 | 메모리 컨트롤러의 구동 방법, 이를 수행하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150690A (zh) * | 1994-05-20 | 1997-05-28 | 夏普公司 | 数字式记录和再现设备 |
US7292950B1 (en) * | 2006-05-08 | 2007-11-06 | Cray Inc. | Multiple error management mode memory module |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4608687A (en) | 1983-09-13 | 1986-08-26 | International Business Machines Corporation | Bit steering apparatus and method for correcting errors in stored data, storing the address of the corrected data and using the address to maintain a correct data condition |
US5917838A (en) | 1998-01-05 | 1999-06-29 | General Dynamics Information Systems, Inc. | Fault tolerant memory system |
US6996766B2 (en) * | 2002-06-28 | 2006-02-07 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects a first failing component and optionally a second failing component |
US7096407B2 (en) * | 2003-02-18 | 2006-08-22 | Hewlett-Packard Development Company, L.P. | Technique for implementing chipkill in a memory system |
JP2008511929A (ja) | 2004-08-30 | 2008-04-17 | シリコン ストレージ テクノロジー、 インク. | 携帯電話の不揮発性メモリを管理するシステムおよび方法 |
US7523364B2 (en) | 2005-02-09 | 2009-04-21 | International Business Machines Corporation | Double DRAM bit steering for multiple error corrections |
US7379368B2 (en) | 2005-02-25 | 2008-05-27 | Frankfurt Gmbh, Llc | Method and system for reducing volatile DRAM power budget |
US7802169B2 (en) | 2005-12-12 | 2010-09-21 | Mediatek Inc. | Error correction devices and correction methods |
KR100823170B1 (ko) | 2007-01-31 | 2008-04-21 | 삼성전자주식회사 | 배드 블록을 싱글 레벨 셀 모드로 사용하는 메모리 시스템및 메모리 카드 |
US8010875B2 (en) | 2007-06-26 | 2011-08-30 | International Business Machines Corporation | Error correcting code with chip kill capability and power saving enhancement |
US8041990B2 (en) | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US7796451B2 (en) * | 2007-12-10 | 2010-09-14 | Unity Semiconductor Corporation | Integrated circuits and methods to compensate for defective memory in multiple layers of memory |
US8181094B2 (en) * | 2008-01-31 | 2012-05-15 | International Business Machines Corporation | System to improve error correction using variable latency and associated methods |
US20090217281A1 (en) | 2008-02-22 | 2009-08-27 | John M Borkenhagen | Adaptable Redundant Bit Steering for DRAM Memory Failures |
US8358548B2 (en) | 2009-10-19 | 2013-01-22 | Avago Technologies Enterprise IP (Singapore) Pte. Ltd. | Methods for efficiently repairing embedded dynamic random-access memory having marginally failing cells |
US8631271B2 (en) * | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8898511B2 (en) * | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
-
2012
- 2012-01-31 EP EP12867410.8A patent/EP2810176B1/en active Active
- 2012-01-31 EP EP15198293.1A patent/EP3009932A1/en not_active Withdrawn
- 2012-01-31 WO PCT/US2012/023313 patent/WO2013115790A1/en active Application Filing
- 2012-01-31 CN CN201280068687.1A patent/CN104081373B/zh active Active
- 2012-01-31 US US14/365,191 patent/US9690673B2/en active Active
-
2013
- 2013-01-09 TW TW102100702A patent/TWI556095B/zh not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150690A (zh) * | 1994-05-20 | 1997-05-28 | 夏普公司 | 数字式记录和再现设备 |
US7292950B1 (en) * | 2006-05-08 | 2007-11-06 | Cray Inc. | Multiple error management mode memory module |
Also Published As
Publication number | Publication date |
---|---|
US9690673B2 (en) | 2017-06-27 |
WO2013115790A1 (en) | 2013-08-08 |
EP2810176A4 (en) | 2015-09-09 |
TW201346528A (zh) | 2013-11-16 |
EP2810176B1 (en) | 2016-12-07 |
US20150006977A1 (en) | 2015-01-01 |
EP3009932A1 (en) | 2016-04-20 |
CN104081373A (zh) | 2014-10-01 |
EP2810176A1 (en) | 2014-12-10 |
TWI556095B (zh) | 2016-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9916116B2 (en) | Memory access and detecting memory failures using dynamically replicated memory based on a replication policy | |
US8255742B2 (en) | Dynamically replicated memory | |
CN101379566B (zh) | 用于修复高速缓存阵列中单元的装置、系统和方法 | |
EP2311043B1 (en) | Method and apparatus for repairing high capacity/high bandwidth memory devices | |
US8099570B2 (en) | Methods, systems, and computer program products for dynamic selective memory mirroring | |
CN110111834A (zh) | 半导体存储器装置及其修复方法 | |
CN103019873A (zh) | 一种存储器故障单元的替换方法及装置、数据存储系统 | |
US20090187806A1 (en) | System and method for error detection in a redundant memory system | |
CN104871137A (zh) | 高可靠性存储器控制器 | |
US20160117221A1 (en) | Error detection and correction utilizing locally stored parity information | |
JP2000311497A (ja) | 半導体記憶装置 | |
CN104081373B (zh) | 单芯片和双芯片备援 | |
US9106260B2 (en) | Parity data management for a memory architecture | |
US8230277B2 (en) | Storage of data in data stores having some faulty storage locations | |
US7404118B1 (en) | Memory error analysis for determining potentially faulty memory components | |
US10726939B2 (en) | Memory devices having spare column remap storages | |
US11030061B2 (en) | Single and double chip spare | |
EP1622034B1 (en) | Apparatus and method for controlling address conversion buffer | |
CN101145135B (zh) | 集成存储保护键数据的方法和存储器 | |
CN101751295A (zh) | 多核架构下核间线程迁移的实现方法 | |
CN104575619A (zh) | 一种dram芯片的修复方法 | |
CN114333941B (zh) | 三维堆叠的存储芯片、数据读写方法以及电子设备 | |
CN103514961B (zh) | 自修复存储器、包含该存储器的计算装置以及操作存储器的方法 | |
US20230079020A1 (en) | Memory device capable of repairing defective word lines | |
KR20070074322A (ko) | 메모리 시스템에 있어서 메모리 미러링 방법 |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20161229 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Patentee before: Hewlett-Packard Development Company, L.P. |