在具有高速缓存的SMP计算机系统中恢复硬件的方法转让专利

申请号 : CN200610059500.8

文献号 : CN1835125B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 帕特里克·詹姆斯·米尼布莱恩·李·米奇特里戴维·詹姆斯·伦德托马斯·约翰·尼普斯威廉·文森特·霍特普拉迪普·帕特尔

申请人 : 国际商业机器公司

摘要 :

一种用于保护计算机系统以防止阵列可靠性故障的设备和方法,使用阵列内置自测试逻辑与代码和硬件一起来删除有缺陷的高速缓存线或者集合,标识相应的熔丝修复值,如果没有多余的熔丝可用则主动呼叫总部,为下一次系统重新启动调度软熔丝修复,在下一次重新启动时调度线删除,在表格中存储删除和熔丝修复(该表格用电子序列id、删除或者ABIST故障事件的时戳、地址、以及故障类型进行标记),并且如果存在有任何未被记录的遗漏的删除则主动呼叫总部。还可以将熔丝信息更永久地存储在硬件电子熔丝和/或EPROM中。在重新启动期间,能够将先前的修复应用到机器中,以便ABIST成功地运行,而且利用检查来维护先前的删除,以允许某些由线删除所保护的ABIST故障通过。

权利要求 :

1.一种在具有高速缓存的SMP计算机系统中恢复硬件的方法,包含步骤:a)执行高速缓存线删除以避免使用有缺陷的高速缓存线条目,b)在系统重新启动期间重新加载高速缓存线删除,c)-通过分析阵列内置自测试结果,以确定故障是否对应于线删除条目,以及d)如果所有的阵列内置自测试故障都对应于线删除条目,则允许系统重新启动以便继续进行。

说明书 :

在具有高速缓存的SMP计算机系统中恢复硬件的方法

技术领域

[0001] 这个发明涉及具有高速缓存设计的SMP计算机系统,并且尤其涉及在故障之后恢复硬件。
[0002] 背景技术
[0003] 随着SMP计算机系统继续提高性能,高速缓存设计以指数形式增长。这些较大的高速缓存大小正使得它非常有可能具有软和硬阵列故障。先前,添加一种称为集合删除(set delete)的功能以删除具有已知缺陷的高速缓存部分。然而,大部分的现有技术从高速缓存中删除大量的集合或者隔间(compartment)。在优选实施例中使用的现有技术允许删除在同余类内的一个隔间而不是全部删除隔间。
[0004] 这个发明的现有技术中的另一个方面允许清除已经遇到错误的高速缓存线。如果错误是可校正的,则重新校正该数据,并且将其作为干净的数据在原有位置或者不同位置处再次输入高速缓存中。如果相同的集合/隔间再次发生故障(即硬故障),则进行系统日志记录,注销所有发生故障的数据,并且清除和删除那个位置以避免其在将来的使用。优选实施例使用硬件来进行这个清除/删除。通过软件代码进行日志记录。
[0005] 即使这些硬件特征提供了可靠性的益处,但是通常必须在可以尝试重新启动之前替换有缺陷的部分。原因是因为当还没有为阵列中发生故障的部分熔断(blow)熔丝时,通常将不会经过阵列内置自测试(Array Built-In Self-Test,ABIST)检查逻辑。ABIST逻辑将使发生故障的(一个或多个)地址是可用的。即使当如Huott等人在美国专利5,805,789中所描述的那样应用加电修复时,也存在有没有更多的熔丝可用于修复而且在客户可以再次启用机器之前将需要订购该部分的 可能性。

发明内容

[0006] 这个发明在具有高速缓存设计的SMP(对称计算机)系统中是有用的,并且使得能够恢复硬件。它通常可应用于包括具有熔丝、熔丝控制和线删除的高速缓存设计在内的各种类型的高速缓存设计,而且尤其可应用于这样的设备和方法,所述设备和方法用于在重复的阵列故障时删除线、记录故障地址和单元信息、确定和保留熔丝信息以用于将来重新启动硬件、当熔丝不可用时呼叫总部(call home)、在重新启动时运行阵列内置自测试(ABIST)、以及在重新启动期间使用熔断熔丝信息、保留熔丝信息和新标识的ABIST故障信息来设置软熔丝,以允许高速缓存即使在出现几个可靠性问题之后也可以进行操作。 [0007] 本发明还允许在下一次重新启动时保存线删除信息,运行ABIST以测试阵列,并且允许如果通过线删除仅仅保护了ABIST故障的话则进行重新启动。
[0008] 本发明还提供了一种在软件表格、可编程电子熔丝、和/或EPROM硬件中永久地保存熔丝结果的方法。
[0009] 通过本发明的技术实现了另外的特征和优点。此处详细描述了本发明的其它实施例和方面,而且这些其它实施例和方面被认为是所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,可参考该描述和附图。

附图说明

[0010] 在权利要求书中特别地指出和清楚地要求了被认为是本发明的主题。通过以下结合附图的详细说明,本发明的上述及其它目的、特征、和优点将变得明显,其中: [0011] 图1说明了本发明中的部件的高级设计;
[0012] 图2示出了高速缓存线修复表格的示例;
[0013] 图3说明了L1高速缓存线删除流程图;
[0014] 图4说明了L2高速缓存线删除流程图;
[0015] 图5示出了高速缓存线删除表格的示例;
[0016] 图6示出了重新启动修复流程;
[0017] 图7示出了重新启动删除/修复流程;
[0018] 图8a示出了将可编程熔丝信息扫描到锁存器中的步骤;
[0019] 图8b示出了将修复信息烧入电子熔丝中的步骤;以及
[0020] 图8c示出了将修复信息写入到可擦可编程序只读存储器(EPROM)中的步骤。 [0021] 详细说明参考附图通过举例解释了本发明的优选实施例以及优点和特征。 具体实施方式
[0022] 为了展开本发明的详细说明,读者应该记住,这里的优选实施例允许高速缓存熔丝信息的自管理,以允许高速缓存通过代码和硬件支持对其自身进行自修复。 [0023] 在优选实施例中,使用代码将“熔断”或者“硬”熔丝数据从硬件读到表格中。这通常在机器的初始启动时完成。如果表格已经存在了,则不必将条目重读到表格中。 [0024] 记录的故障数据用于确定可能需要哪个熔丝值集合以重定位发生故障的阵列段。在表格中保留这些熔丝值。如果没有剩余的熔丝可用于重定位,则代码可以可选地通知客户不要重新启动(即IML)机器,并且呼叫总部要求另一个部分/模块来替换有缺陷的部分。原因是因为运行ABIST的重新启动将不会具有足够的熔丝来运行,而且ABIST逻辑将指示用完熔丝的、不匹配的发生故障的分段的失败。
[0025] 代码可以可选地保留线删除信息用于在下一次IML期间使用,而不是将它们转换为修复。在ABIST完成之后,将任何故障与已知的线删除进行比较,以确保在ABIST中没有还未被线删除所涵盖的发生故障的区域。
[0026] 如果存在有因为删除在时间上太接近而无法同时记录它们而导致在日志中遗漏的删除的话,则代码也呼叫总部。这是非常不可能的事情,但是代码允许保护客户,从而在下一次重新启动期间不会有无熔丝的奇怪故障的风险。
[0027] 另一个方面出现在IML或者重新启动序列期间。经由扫描,而不是严格地依赖于硬熔丝设置,将熔丝表格加载到设计中。这允许重定位在初始熔丝熔断之后发生故障的故障分段。这个特征使得具有缺陷的硬件能够现场进行自修复。
[0028] 优选实施例使用电子熔丝,并且它们可以现场在芯片内熔断,以利用硬件永久地保存新熔丝信息,而不是在单独的表格中保存该信息。
[0029] 在替换实施例中,可以利用称为EPROM(可擦可编程只读存储器)的单独硬件保存熔丝信息。
[0030] 熔丝表格的软件版本具有故障出现时的时戳,什么事件首先检测到问题(例如,ABIST、线删除等),以及其它关于故障来源的有用信息。这可以以文本形式进行以便更容易读取。熔丝修复表格用模块序列号进行标记,而且使用模块内的电子序列号相对于该模块序列号进行跟踪。如果插入了新的模块,则根据需要从硬熔丝信息中重新创建该表格。 [0031] 还有一个为了线删除而存在的、具有序列号跟踪的删除表格。当没有与线删除相对应的熔丝可用时,更新该熔丝表格。本发明允许在下一次重新启动时更新这些删除,以便重新应用未用熔丝进行修复的删除。可选地,如果代码用于分析ABIST故障以确保这些线删除将避免这些有缺陷的区域,则可以应用全部的删除来代替软或者硬熔丝修复。 [0032] 当读者阅读说明了本发明优选实施例的各个附图的更完整描述时,可以想到这些特征和优点。
[0033] 现在转向图1,注意到,其中有对称多处理器SMP硬件11,其包含时钟芯片12、一个或多个CP芯片13、以及一个或多个高速缓存芯片14。在每个所述高速缓存芯片14内,存在一个或多个高速缓存 阵列24,阵列内置自测试(ABIST)逻辑15,熔丝控制逻辑16,以及设陷(trap)、清除、删除逻辑17。在所述一个或多个CP芯片13内,存在有:记录代码(例如,CP微码)18,其可以传送来自所述高速缓存芯片14的发生故障的阵列的信息;以及服务单元19,其运行服务单元代码20,该代码20对修复表格21和删除表格22进行读写,并且可以进行呼叫总部的动作23。还可选地具有电子熔丝25,其可以被熔断以保存熔丝信息。还可选地具有可擦可编程只读存储器(EPROM)26,其还可以用于存储熔丝和修复信息。 [0034] 当在高速缓存阵列24中出现错误时,设陷、清除、删除逻辑17收集有关该故障的信息。如果故障是新的(即,之前没有遇到该特定高速缓存位置),则清除该高速缓存条目。
如果发生故障的阵列位置先前早已经发生过故障,则清除该高速缓存条目,而且硬件删除该高速缓存位置以便不会再次使用该位置。所述记录代码18通过时钟芯片12将这个故障信息传送到服务单元19。服务单元代码20在读取发生故障的高速缓存信息时,基于是否有任何未被记录的遗漏的删除来确定是否呼叫总部23。代码20还确定将需要哪些熔丝用于修复缺陷,并且将这些熔丝与所述修复表格21进行比较。如果在该表格中没有剩余足够的修复用于该给定的缺陷,则代码20呼叫总部,并且通知系统操作员不要重新启动机器。当没有找到用于该缺陷的修复时,代码20将在删除表格22中构造用于该删除的条目。这个删除可以在下一次重新启动时重新应用于硬件。代码20还可以一般在下一次IML窗口期间,更永久地将熔丝信息存储在电子熔丝25中。这通常通过将期望的熔丝信息扫描到扫描环(例如软熔丝逻辑16)中、并且施加更新电子熔丝信息的写电压来实现。代码20还可以使用传统方法在称为EPROM(可擦可编程只读存储器)26的单独的硬件存储区域中存储熔丝信息。
[0035] 应当注意到,高速缓存阵列24的优选实施例包含用于检测发生故障的校正子(syndrome)的错误校正逻辑。设陷、清除、删除逻辑17跟踪该发生故障的地址、集合或者隔间、以及在该阵列中使用的 ECC的发生故障的校正子。如果出现可校正的错误,则校正子可用于检测阵列中发生故障的位,并且因此检测发生故障的熔丝位置。然而,当出现无法校正的错误(UE)时,对发生故障的熔丝的隔离未必是精确的(即,可能有一个以上的可能熔丝)。因此,对于高速缓存中的UE来说,优选实施例将一个故障映射到四个熔丝,每个熔丝用于高速缓存的、各个位可能已经来源于其中的每个区域。
[0036] 图2所示的修复表格是在优选实施例中使用的修复表格的示例。所述修复表格21包含一个ASCII、列相关的可读表格,该表格由各个芯片和阵列上的修复位置、修复的时戳、导致修复的错误类型、以及熔丝是否是坏的构成。它还包含硬件的序列号以及最初创建该文件时的时戳。
[0037] 转向图3,注意到,当处理L1高速缓存故障时,代码实现了以下步骤:接收有关故障的信息(31),保留执行删除的重新启动处理(32),以及确定这是否是这种类型的第一次删除(33)。如果这是这种类型的第一次删除,则将单元id及其他信息添加到删除表格中(34)。将结果写入到删除表格中(35)。
[0038] 转向图4,注意到,当处理L2高速缓存故障时,代码实现了以下步骤:接收有关故障的信息(41),确定其是否为替换(42),以及在替换的情况下、保留该替换(49)。 [0039] 如果事件不是替换,则确定其是否是清除或者删除(43)。如果事件是清除,则执行以下步骤:递增清除计数(50),确定清除计数是否超过阈值(51),以及如果其超过阈值则呼叫总部(52),而如果没有超过阈值则没有错误地退出(53)。
[0040] 如果事件是删除,则执行以下步骤:保留执行删除的重新启动处理(44),将删除条目和时戳一起添加到删除表格22中(45),检查遗漏的删除(46),以及如果从记录的数据中遗漏了删除则呼叫总部(48),而如果没有遗漏的删除则没有错误地退出(47)。 [0041] 图5所示的删除表格是在优选实施例中使用的删除表格的示例。所述删除表格22包含PU部分(用于Cp),该部分是ASCII、列相 关的可读表格,其由各个L1芯片与阵列上的删除位置、删除时戳及其它删除信息构成。此外,还具有L2部分,该部分是ASCII、列相关的可读表格,其由各个L2芯片与阵列上的删除位置、删除时戳、发生故障的交错、校正子、隔间、地址以及该故障的时戳构成。
[0042] 转向图6,注意到其是带有修复的、用于重新启动系统的过程。当重新启动该系统(61)时,重置高速缓存及其他阵列(62)。然后,根据表格应用阵列修复(63)。运行ABIST(64),以测试该阵列。分析ABIST故障(65)。如果没有故障,则IML成功地完成(66)。然而,如果存在有故障,则检查可用的修复(67)。如果没有可用的修复,则IML失败并且呼叫总部以获得支持(68)。如果有可用的熔丝,则将新的熔丝修复添加到修复的阵列中(69)。然后再次运行ABIST(64)。此后,IML应该是成功的。
[0043] 转向图7,注意到其是带有删除和修复的、用于重新启动系统的过程。当重新启动系统(71)时,重置高速缓存及其他阵列(72)。然后,根据表格应用阵列修复和删除(73)。运行ABIST(74),以测试该阵列。分析ABIST故障(75)。如果没有故障,则IML成功地完成(76)。然而,如果存在有故障,则将每个故障与线删除列表进行比较(77)。当然,这要求ABIST结果具有足够的信息可用于确定将影响哪些线。如果确定所有的故障都由线删除保护了,则IML成功地完成(76)。如果存在有任何未被线删除所涵盖的故障,则检查修复的可用性(78)。如果没有相应的修复可用,则IML失败而且将为这些部分呼叫总部(79)。如果有修复可用,则应用新的修复(80),并且再次运行ABIST(74)。这个时候,应该没有剩余的未被线删除所涵盖的故障。
[0044] 转向图8a,注意到其是带有软寄存器修复的、用于重新启动系统的过程。当重新启动系统(90)时,有这样一个步骤:用期望的修复值扫描熔丝环(91),由此更新锁存器以便保持熔丝值。保持这些熔丝修复值,并且向阵列提供所需的冗余编程以便绕过(workaround)阵列的损坏部分。
[0045] 转向图8b,注意到其是带有电子熔丝修复的、用于重新启动系统的过程。当重新启动系统(94)时,有这样一个步骤:利用期望的修复值将电子熔丝信息烧入电子熔丝中(95),由此建立永久的修理设置。存在有各种烧制电子熔丝的方法。优选实施例包括设置较高的“烧制”电压,当施加该电压时,其可用于永久地熔断电子熔丝。保持这些熔丝修复值,并且向阵列提供所需的冗余编程以便绕过阵列的损坏部分。即使系统掉电时,这个电子熔丝修复信息也将保持在硬件中。
[0046] 转向图8c,注意到,其为具有可擦可编程只读存储器(EPROM)熔丝修复的、用于重新启动系统的过程。当重新启动系统(98)时,有这样一个步骤:利用熔丝修复信息写EPROM(99),由此建立永久修复设置。保持这些熔丝修复值,并且可以稍后读出这些值并将其扫描到系统软熔丝锁存器中,以向阵列提供所需要的冗余编程以绕过阵列的损坏部分。即使系统掉电时,这个EPROM熔丝修复信息也将保持在硬件中。一般地,可以把这个信息压缩到EPROM中。
[0047] 虽然已经描述了本发明的优选实施例,但是本领域技术人员应当理解:不管是现在还是将来,都可以在权利要求的范围内进行各种改进和提高。应该将这些权利要求解释为保持对首先描述的本发明的恰当保护。