集成电路的处理级内的系统和随机差错检测及恢复的制作方法

文档序号:6479522阅读:222来源:国知局
专利名称:集成电路的处理级内的系统和随机差错检测及恢复的制作方法
技术领域
本发明涉及集成电路领域。更具体来说,本发明涉及包括随机差错和系统差错的差错的检测以及从集成电路的处理级内的这类差错的恢复。
已知提供可认为由一系列串联处理级(例如流水线电路)组成的集成电路。在各级之间是信号捕捉元件、例如一个或多个信号值存储到其中的锁存器或读出放大器。各处理级的处理逻辑响应从在前处理级或其它地方接收的输入值,产生要存储在关联输出锁存器中的输出信号值。处理逻辑完成其处理操作所用的时间决定集成电路可工作的速度。如果所有级的处理逻辑能够在短时间周期中完成其处理操作,则可迅速推进信号值通过输出锁存器,得到高速处理。系统不能在各级之间比最慢处理逻辑能够执行它接收输入信号并产生适当输出信号的处理操作的速度更快地推进信号。这限制了系统的最大性能。
在一些情况下,希望尽快地处理数据,因此处理级将被驱动,以便以尽快的速率推进其处理操作,直到最慢的处理级无法保持同步。在另一些情况下,集成电路的功耗比处理速率更重要,以及集成电路的工作电压将被减小,以便使功耗降低到最慢的处理级又不再能够保持同步的点。最慢的处理级无法保持同步的这些情况都将导致处理差错(即系统差错)的出现。
避免处理差错出现的一种方式是采用频率已知为小于容差范围允许的最小值的处理时钟来驱动集成电路,所述容差范围考虑了不同集成电路之间的最坏情况制造变化、工作环境状况、所处理信号的数据相关性等等。在电压电平的上下文中,通常以充分高于最小电压电平的电压电平来操作集成电路,以便确保所有处理级能够始终保持考虑最坏情况制造变化、环境状况、数据相关性等等。可以理解,传统方法在限制最大工作频率和最小工作电压方面是谨慎的,从而考虑最坏情况状况。
除了在处理器以过高频率或过低工作电压运行时能够保持同步的最慢处理级产生的系统处理差错之外,集成电路还遇到称作单个事件扰乱(SEU)的随机差错。SEU是由诸如宇宙射线或器件中的质子之类的离子化粒子导致的随机差错(比特倒转)。状态的变化是瞬时的、即类似脉冲,因此器件的重置或重写产生此后的正常行为。已知的是利用纠错码来检测和纠正随机差错。但是,由于检错和纠错所需的处理时间,这类纠错技术必然带来延迟。在诸如差错率高但将所处理接收数据中的差错抑制到预定差错率以内仍然重要的有噪通信信道之类的环境下,这个处理延迟是合理的。相反,在一般希望尽快处理数据的集成电路的情况下,由于纠错电路引起的延迟及相关负面性能影响,不希望对数据处理操作的关键通路引入纠错。
从一个方面来看,本发明提供一种用于执行数据处理的集成电路,所述集成电路包括多个处理级,来自至少一个处理级的处理级输出信号作为后续处理级的处理级输入信号来提供,其中所述至少一个处理级包括处理逻辑,可用于对至少一个编码输入值执行处理操作,从而产生处理逻辑输出信号,所述编码输入值是纠错码已经应用到其中的输入值;不延迟信号捕捉元件,可用于在不延迟捕捉时间捕捉所述处理逻辑输出信号的不延迟值,所述不延迟值在所述不延迟捕捉时间之后作为所述处理级输出信号被提供给所述后续处理级;延迟信号捕捉元件,可用于在迟于所述不延迟捕捉时间的延迟捕捉时间捕捉所述处理逻辑输出信号的延迟值;纠错逻辑,可用于检测所述处理逻辑输出信号的所述延迟值中的随机差错的出现,从而确定所述检测的随机差错是否可利用所述纠错码纠正,并且或者产生差错校验延迟值或者表明所述检测的随机差错不可纠正;比较器,可用于将所述不延迟值与所述差错校验延迟值比较,以便检测所述处理逻辑输出信号在所述不延迟捕捉时间之后的时间的变化,所述变化表明使所述处理逻辑因此在所述不延迟捕捉时间未完成所述处理操作的系统差错,或者表明所述不延迟值中的随机差错;以及差错修复逻辑,可用于在所述比较器检测到所述处理逻辑输出信号的所述变化时执行差错修复操作,通过在后续处理级中用所述差错校验延迟值替代所述不延迟值,或者如果所述纠错逻辑表明所述检测的随机差错不可纠正,则通过发起所述处理操作和后续处理级的处理操作的重复,来抑制所述不延迟值的使用。
本技术认识到,可直接监测处理级本身的操作,以便查找它们出故障的限制条件。当实际故障出现时,则可纠正这些故障,使得不正确操作完全不会产生。与本方法中的故障点的直接观察相比,通过避免先前方法中过分谨慎的性能余量所得到的优点不只是补偿当故障出现时恢复系统所消耗的附加时间及功率。故意允许这种处理差错出现、使得关键通路无法满足其定时要求,这在本技术领域中是很反直觉的,在本技术领域中,通常是耗费大量努力来确保所有关键通路始终满足其定时要求。
此外,本发明认识到,延迟值中的随机差错可通过部署在数据处理操作的关键通路之外的纠错逻辑来检测和纠正。这样,当比较器没有检测到系统处理差错时,纠错逻辑对计算的快速进行没有负面影响。但是,在处理差错实际上被比较器检测到的情况下,可供差错修复逻辑用来确保计算向前进行的延迟值是一个可靠值,对它已经进行了随机差错校验以及在适当之处已经进行了随机差错纠正。不管在延迟信号值的通路中是否存在纠错逻辑,当比较器检测到处理差错时,因执行差错修复操作的需要而在处理中存在延迟。因此,在允许修复故意引入的系统处理差错的延迟信号捕捉元件的提供与纠正延迟信号值中的随机差错的纠错编码的应用之间存在意外的协同作用。纠错逻辑通过检测和纠正随机差错而没有明显延迟计算的进行,提供了改进延迟值的可靠性的优点。
可以理解,处理逻辑执行的处理操作可能是一种不寻常的处理操作,它例如在处理操作是具有不寻常操作数的乘法运算或除法运算的情况下导致输入信号值相对输出信号值改变。但是,根据一个优选配置,处理逻辑执行的处理操作是这样一种操作,即,当所述处理操作中没有出现差错时,处理逻辑输出信号实际上等于处理级输入值。
例如,根据第一优选配置,通常没有改变输入值的数据处理操作可以是存储电路执行的读或写操作。根据一个备选优选配置,至少一个处理级由寄存器来执行,以及所述处理操作是读、写或移动操作。根据其中输出信号值应当等于输入信号值的另一个备选优选配置,至少一个处理级由复用器执行,以及处理操作是复用操作。
虽然本技术适用于同步和异步数据处理电路,但本发明很适合其中多个处理级是同步流水线内各个流水线级的同步数据处理电路。
可以理解,各种不同的纠错码可用于对输入值进行纠错编码,例如线性分组码、卷积码或特播码。但是,对于其中输出值实质上等于处理逻辑的输入值的配置,优选的是,利用汉明码对输入值进行纠错编码,以及差错修复逻辑利用所述汉明码执行所述纠正和所述检测。汉明码实现起来简单,并且适合于检测和纠正例如通常由SEU产生的那些单位差错。
虽然一些优选配置包括诸如读/写操作和数据移动操作之类的值保持处理操作,但是在备选优选配置中,处理逻辑执行的处理操作是值改变操作,对于这种操作,即使当所述处理操作中没有出现差错时,处理逻辑输出信号也可能不同于所述处理级输入值。因此,本技术适合应用于诸如加法器、乘法器和移位器之类的处理逻辑元件。
在处理操作是值改变处理操作的配置中,优选的是,利用包括下列各项之一的算术码对输入值进行纠错编码AN码、剩余码、反剩余码或者剩余数字码。这类算术码有助于涉及算术运算符的处理操作中的随机差错的检测和纠正。
可以理解,可单独依靠比较器来检测系统差错的存在。但是,在优选配置中,集成电路包括元稳定性检测器,可用于检测不延迟值中的元稳定性,以及若发现为元稳定的,则触发差错修复逻辑来抑制不延迟值的使用。
经由比较器检测到系统差错出现之后,有各种不同方式可对它进行纠正或补偿。在一个优选类型的实施例中,差错恢复逻辑可用于采用差错校验延迟值取代不延迟值作为处理级输出信号。当用于即使在差错出现并要求补偿的情况下确保数据处理操作的向前进行时,采用从差错校验延迟值样本提取的正确值取代已知的缺陷处理级输出信号是强烈推荐的。
一个优选配置是这样的,其中,差错修复逻辑用于迫使延迟值被存储在不延迟锁存器中替代不延迟值。
虽然本技术适用于同步和异步数据处理电路,但是本发明很适合于其中在处理级内的处理操作由不延迟时钟信号驱动的同步数据处理电路。
在其中处理级由不延迟时钟信号驱动的系统的上下文中,差错修复逻辑可通过选通不延迟时钟信号以提供充分时间让后续处理级从不正确的不延迟值的输入恢复并改为采用正确的差错校验延迟值,来利用这帮助从差错中恢复。
在利用不延迟时钟信号的实施例的上下文中,捕捉时间可从不延迟时钟信号和源自不延迟时钟信号的延迟时钟信号中的预定相位点得到。不延迟捕捉与延迟捕捉之间的延迟可由这两个时钟信号之间的相移来定义。
对系统差错的检测以及从中恢复可用于各种不同的情况,但特别适合于其中希望根据这类差错的检测来动态控制集成电路的工作参数的情况。以反直觉的方式,本技术可用来控制工作参数,使得系统以作为目标比率保持的非零系统差错率进行工作,因为这可能对应于无论在速度还是在功耗方面改进的整体性能,甚至考虑了从系统和随机差错的出现中恢复所需的措施。
可能改变的工作参数包括工作电压、工作频率、集成电路体偏压(它控制门限电平)以及温度等等。
为了确保在延迟锁存器中捕捉的数据始终正确,任何级的处理逻辑中的最大延迟的上限是这样的,使得在任何工作点,任何级的处理逻辑的延迟不可超过时钟周期加上延迟捕捉被延迟的量的和。作为任何处理延迟的下限,存在以下要求任何级的处理逻辑应当具有超过延迟捕捉在不延迟捕捉之后的时间的处理时间,从而确保沿短通路传播的后续数据不会不适当地损坏延迟捕捉值。这可通过根据需要采用一个或多个延迟元件插入短通路来保证。
本技术适用于各种各样不同类型的集成电路、如通用数字处理电路,但特别适合其中处理级是数据处理器或微处理器的一部分的系统。
为了有助于控制算法用于控制工作参数,优选实施例包括差错计数器电路,它可用于存储对应于与不延迟值相比的延迟值的变化的差错的检测计数。这个差错计数器可通过软件来实现以执行工作参数的控制。
可以理解,以上所述的延迟信号捕捉元件和不延迟信号捕捉元件可具有各种各样不同的形式。具体来说,这些可被认为包括触发器、D型锁存器、时序元件、存储单元、寄存器元件、读出放大器、它们的组合以及各种其它能够存储信号值的存储器件的形式的实施例。
从另一方面来看,本发明提供一种控制用于执行数据处理的集成电路的方法,所述方法包括以下步骤从多个处理级中的至少一个处理级提供处理级输出信号作为后续处理级的处理级输入信号,所述至少一个处理级用于采用处理逻辑对至少一个编码输入值执行处理操作,从而产生处理逻辑输出信号,所述编码输入值是纠错码已经应用到其中的输入值;在不延迟捕捉时间捕捉所述处理逻辑输出信号的不延迟值,所述不延迟值在所述不延迟捕捉时间之后被提供给所述后续处理级,作为所述处理级输出信号;在迟于所述不延迟捕捉时间的延迟捕捉时间捕捉所述处理逻辑输出信号的延迟值;利用纠错逻辑检测所述处理逻辑输出信号的所述延迟值中的随机差错的出现,从而确定所述检测的随机差错是否可利用所述纠错码纠正,并且或者产生差错校验延迟值或者表明所述检测的随机差错不可纠正;将所述不延迟值与所述差错校验延迟值比较,以便在所述不延迟捕捉时间之后的时间检测所述处理逻辑输出信号的变化,所述变化表明使所述处理逻辑因此在所述不延迟捕捉时间未完成所述处理操作的系统差错,或者表明所述不延迟值中的随机差错;以及在检测到所述变化时,利用差错修复逻辑执行差错修复操作,从而通过在后续处理级中用所述差错校验延迟值替代所述不延迟值,或者如果所述纠错逻辑表明所述检测的随机差错不可纠正,则通过发起所述处理操作和后续处理级的处理操作的重复,来抑制所述不延迟值的使用。
现在仅通过示例、参照附图来描述本发明的实施例,其中

图1示意说明本技术应用到其中的多个处理级;图2是电路框图,示意说明用于本技术的电路;图3是电路图,示意说明不延迟锁存器和延迟锁存器以及关联的比较器和差错恢复逻辑;图4A和图4B是流程图,示意说明图1的电路的工作;图5示意说明包括快速读取机构和慢速读取机构的存储电路;图6说明图5的电路的一部分的一种备选电路配置;
图7是流程图,示意说明图5的存储电路的工作;图8说明流水线总线,其中包括总线级之间的不延迟锁存器和延迟锁存器;图9是流程图,示意说明图8的流水线总线的工作;图10示意说明用于控制微处理器、经过不延迟锁存和输出以及延迟锁存和输出的控制信号的产生;图11是流程图,示意说明图10的电路的工作的一个实例;图12说明一种处理流水线,包括不延迟锁存器和延迟锁存器,其中那些延迟锁存器在较低工作功率期间再用作数据保持锁存器;图13是流程图,示意说明图12的电路的工作;图14示意说明纠错和延迟锁存器应用到其中的多个处理级;图15示意说明经过仅传递当没有出现差错时从输入到输出未改变的数据值的通道的数据的纠错;图16示意说明如何对诸如加法器、乘法器或移位器之类的值改变逻辑元件执行纠错;图17是流程图,示意说明图14的电路的工作;图18示意说明延迟和不延迟锁存器可如何用于控制处理流水线中的时钟信号的相对相位;图19和图20示意说明从差错中恢复时暂停和空泡插入的相应使用;以及图21说明在处理级之间使用的不延迟和延迟锁存器,其中的延迟锁存器再用作串行扫描链锁存器。
图1说明集成电路的一部分,它可能是如ARM limited ofCambridge,England制造的ARM处理器核心之类的处理器核心中的同步流水线的一部分。同步流水线由多个相似处理级组成。第一级包括处理逻辑2和其后跟随的触发器形式的不延迟锁存器4以及比较器6和延迟锁存器8。本文所用的术语“锁存器”包括可用于与触发、时钟及其它要求无关地存储信号值的任何电路元件。后续处理级以类似方式组成。不延迟时钟信号10驱动处理逻辑和所有处理级内的不延迟锁存器4作为同步流水线的组成部分同步工作。延迟时钟信号12提供给各个处理级的延迟锁存器8。延迟时钟信号12是不延迟时钟信号10的相移形式。相移的程度控制不延迟锁存器4对处理逻辑2的输出的捕捉与稍后由延迟锁存器8执行的处理逻辑2的输出的捕捉之间的延迟周期。如果处理逻辑2在给定现有不延迟时钟信号频率、提供给集成电路的工作电压、体偏压、温度等的限制内工作,则处理逻辑2到不延迟锁存器4被触发以捕捉其值时已经完成它的处理操作。因此,当延迟锁存器8稍后捕捉处理逻辑2的输出时,这将具有与在不延迟锁存器4内捕捉的值相同的值。因此,比较器6将检测到延迟周期中没有出现变化,以及差错恢复操作不会被触发。相反,如果集成电路的工作参数使得处理逻辑2到不延迟锁存器4捕捉其值时未完成它的处理操作,则延迟锁存器8将捕捉不同的值,这将由比较器6检测,从而迫使差错恢复操作被执行。将会看到,差错恢复操作可以是采用存储于延迟锁存器8内的延迟值取代不延迟锁存器4的输出,该输出在其捕捉之后的时间中被提供给后续处理级。这个延迟值还可能被迫存储在不延迟锁存器4中,取代其中存储的先前错误捕捉的值。
元稳定性检测器7用来检测不延迟锁存器4的输出中的元稳定性,即不是处于明确定义的逻辑状态。如果检测到这种元稳定性,则这被当作差错来处理,且采用延迟锁存器6的值来代替。
在检测到差错时,整个流水线可能通过在附加延迟周期里选通不延迟时钟信号10而被暂停,以便提供充分时间让后续处理级中的处理逻辑正确地响应提供给它的已校正输入信号值。或者,根据采用逆流体系结构的标准流水线处理技术,通过把空泡插入流水线,可以暂停上游处理级而允许后续处理级继续工作(参见图2的空泡和刷新锁存器)。另一个备选方案是,整个处理流水线可采用被推入各级的不延迟锁存器的延迟锁存器值来重置,以及处理被恢复。延迟锁存器值代替错误值来再用而不是尝试重新计算,这确保了即使已经出现差错,也会向前进行各个处理操作。
存在与处理级内处理逻辑耗用的处理时间与不延迟捕捉时间和延迟捕捉时间之间的延迟之间的关系相关的约束。具体来说,任何处理级的最小处理时间不应当小于此延迟,以便确保所捕捉的延迟值未被从短延迟处理级输出的新数据破坏。可能需要采用额外的延迟元件插入短延迟处理级来确保它们不小于这个最小处理时间。在另一个极端,需要确保在任何工作参数的任何工作点可能出现的处理级内处理逻辑的最大处理延迟不大于正常不延迟工作时钟周期与延迟值之和,以便确保在延迟值锁存器中捕捉的延迟值是稳定和正确的。
有多种备选方式可控制系统调整功耗和性能。根据一个配置,提供差错计数器电路(未示出)对比较器6进行的不相等检测的数量计数。这个所检测且从中恢复的差错的计数可用于利用硬件实现或软件实现的算法来控制工作参数。计数器是软件可读的。无论在最大速度还是最低功耗方面的最佳整体性能可通过有意采用保持差错的非零水平的参数操作集成电路来实现。来自在这类情况中操作不谨慎工作参数的增益超过了从差错中恢复的需要所导致的损失。
根据一个备选配置,硬件计数器作为性能监测模块提供,并且可用于跟踪有用的工作以及差错恢复工作。具体来说,计数器计算用来进行所执行的处理操作的有用指令的数目,并且还计算被运行以执行差错恢复的指令和空泡的数目。软件可用于读取硬件计数器,以及使用计数值适当地平衡差错恢复的开销以及它对系统性能的影响与通过以非零差错率运行集成电路所实现的降低的功耗。
图2是电路框图,示意说明用于本技术的电路。图2的上部说明各处理级中提供的电路元件,即,不延迟锁存器4、延迟锁存器8和比较器6。元稳定性检测器7用来检测不延迟锁存器4的输出中的元稳定性,并且这还触发差错信号的产生。来自多个这类级的差错信号提供给“或”门100的相应输入,在其中,如果在任何处理级检测到差错,则产生全局差错信号。全局差错信号可用来触发刷新和空泡插入信号,如图所示。电路102检测差错信号本身是否为元稳定的。差错信号采用以高电压表示的正偏斜锁存器以及以低电压表示的负偏斜锁存器来锁存。如果这两者的锁存值不符,则这表明差错信号是元稳定的,以及应急信号被取出。通过在抽样前对差错信号进行锁存以及等待整个时钟周期(即串联的两个锁存器),应急信号为元稳定的概率是可忽略的。重要的是,如果应急信号被取出,则来自延迟锁存器的恢复值可能因差错信号的元稳定性而受到破坏。在这种情况下,还使指令无效,并且没有向前进行。因此,刷新流水线重新启动指令以及降低时钟频率来确保差错信号在重试同一指令时不是元稳定的(否则可能导致重试的无限循环)。
图3是电路,更详细地说明不延迟锁存器、延迟锁存器、比较器以及差错恢复电路的至少一部分。可以看到,不延迟锁存器4为两个锁存器14、16所提供的触发器的形式。延迟锁存器8为单反馈元件的形式。“异或”门18用作比较器。差错信号20自图3的电路出现,以及可如前面所述被提供给差错计数器电路或者提供给其它工作参数调整电路或系统。差错信号20用来切换复用器22,它迫使存储在延迟锁存器8中的延迟值被存储在不延迟锁存器4的锁存器14中。元稳定性检测电路24用来检测不延迟锁存器4中的元稳定性的出现,并且还利用这来触发差错信号,该差错信号将导致错误的元稳定值被存储在延迟锁存器8中的延迟值取代。
图4A和图4B是流程图,示意说明图1、图2和图3的电路的工作。
在步骤26,来自级i的处理逻辑在时间Ti产生其输出信号。在步骤28,这由不延迟锁存器捕捉,并形成不延迟值。在步骤30,来自不延迟锁存器的不延迟值开始被传递给后续处理级i+1,后续处理级根据这个值开始处理。如果检测到差错,则这个处理的结果可能是错误的并且需要从中恢复。
步骤32允许处理逻辑继续在另一个时间周期、即延迟时间里处理,以便在时间Ti+d产生输出信号。这个输出信号在步骤34在延迟锁存器中被锁存。延迟锁存器以及不延迟锁存器中的值在步骤36进行比较。如果它们相等,则没有出现差错,正常处理在步骤37继续进行。如果它们不相等,则这表明当不延迟锁存器捕捉其值并开始将那个值提供给后续处理级i+1时,处理逻辑在时间Ti未完成其处理操作。因此,差错状况已经出现,并要求纠正。在步骤38,这个纠正通过将流水线空泡转送到级i之后的流水线级中开始。在步骤40,在前级至级i+1全部暂停。这包括其中出现差错的级i。在步骤42,级i+1利用延迟锁存器值作为它的输入重新执行其操作。在步骤44,集成电路的工作参数可根据需要修改。举例来说,工作频率可减小,工作电压增加,体偏压增加,等等。处理则继续进行到步骤46。
如果检测到不足数量的差错,则工作参数控制电路和算法可有意调整工作参数,从而降低功耗以及引起非零差错率。
图5说明包含存储单元阵列102的存储器100。在这个实例中,图解说明了单行存储单元,但本技术领域的人员熟悉,这类存储单元阵列通常是包含成千上万存储单元的大型二维阵列。根据常规存储器操作,解码器104用来接收待访问的存储地址,以及对这个存储地址解码,以便激活字线106之一。字线用于将那条线中的存储单元102耦合到相应的位线对108。根据所涉及的存储单元102中存储的位值,这将引起这时与它耦合的位线108中的电变化(例如电压和/或电流的变化),该变化由读出放大器110读出。读出放大器110的输出在第一时间存储于不延迟锁存器112内,并且随后在延迟时间存储于延迟锁存器114内。存储在不延迟锁存器112内的不延迟值经由复用器116在延迟值被存储到延迟锁存器114之前直接传递出去到另一个处理电路118。当已经在延迟锁存器114中捕捉延迟值之后,比较器120用来比较不延迟值和延迟值。如果它们不相等,则延迟值由复用器116转变成对于所涉及的特定位来自存储器100的输出值。抑制信号也从比较器120发送到另一个处理电路118,由该另一个处理电路118根据这时已经被替换的错误不延迟值来抑制处理。这个实例中的这种抑制采取控制提供给另一个处理电路118的时钟信号CLK的形式,从而延长所涉及的时钟周期以及延迟那个另一个处理电路的新结果的锁存,直至延迟值有机会经过所涉及的处理电路到达那个另一个处理电路的输出端的锁存器时。
可以看到,读出放大器110和不延迟锁存器112形成快速读取机构的一部分。读出放大器110和延迟锁存器114形成慢速读取机构的一部分。在大多数情况下,在不延迟锁存器112内锁存的快速读取结果将是正确的,并且不需要校正动作。在少量情况下,快速读取结果将不同于延迟锁存器114中锁存的慢速读取结果,以及在这种情况下,慢速读取结果被认为正确,以及用来取代快速读取结果,其中基于快速读取结果的处理被抑制。与纠正错误的快速读取结果的较少发生的需要关联的损失超过了通过更接近其极限状况来运行存储器100所实现的提高的性能(在速度、较低电压工作、较低能量消耗和/或其它性能参数方面)进行的补偿。
图6说明图5的电路的组成部分的变体。在这个变体中,提供两个读出放大器110’和110”。这些不同的读出放大器110’、110”被制作成具有不同的工作速度,其中一个110’较快而不太可靠,另一个110”则较慢但更可靠。这些不同的特性可通过改变读出放大器110’、110”的参数、例如诸如晶体管大小、掺杂等级、增益等构造参数来实现。比较器120’用来比较这两个输出。来自快速读出放大器110’的输出通常在可用的慢速读出放大器110”的输出之前经由复用器116’传出。当慢速读出放大器110”的输出可用并且比较器120检测到这不等于快速读出放大器110’的输出时,它控制复用器116’将输出值转变成慢速读出放大器110”所产生的值。比较器120还触发抑制信号的产生,使得基于错误的快速读取结果的下游处理被抑制。
图7是流程图,说明图5的电路的工作。在步骤122,对地址解码,从而使相应的存储单元利用字线所传递的信号被耦合到其相邻的位线。在步骤124,所选存储单元中所存储的位值及其补码被驱动到位线对上。这产生位线中的电流以及位线的电压变化。读出放大器110响应所检测电流和/或电压电平变化。
在步骤126,快速数据读取机构对于在那个时间从存储单元输出的值进行抽样。在步骤128,这个快速读取数据值被传递给后续处理电路,以便在假定它是正确的情况下作进一步处理。在步骤130,慢速数据读取机构对慢速读取数据值进行抽样。步骤132比较快速读取值和慢速读取值。如果它们相同,则正常处理在步骤134继续进行。但是,如果抽样值不同,则步骤136用于向快速读取值已被传递到的其它电路发出抑制信号,并且还向那些其它电路发出慢速读取值取代快速读取值,使得校正的处理可以进行。
图8说明本技术在流水线总线140中的使用。流水线总线140包含多个锁存器142,它们用来存储沿总线传递的数据值。作为这种流水线总线140的一个实例,已知的是由ARM Limited of Cambridge,England设计的AXI总线。在这种配置中,沿流水线总线140传递的数据值的目的地是数字信号处理电路144。这个数字信号处理(DSP)电路144本身没有实现前面所述的不延迟锁存和延迟锁存技术。在备选配置中,沿流水线总线传递的数据值的目的地可能是DSP电路之外的器件,例如其本身没有实现延迟和不延迟锁存技术的标准ARM处理器核心。
与每个不延迟锁存器142关联的是相应的延迟锁存器146。这些延迟锁存器146用于对总线上的信号值进行抽样,其时间迟于这由与其对应的不延迟锁存器142抽样并锁存的时间。因此,沿总线传递的数据值因无论什么原因(例如所使用的工作电压过低、时钟速度过高、来自相邻数据值的耦合影响等)导致的延迟将导致不延迟锁存器142与延迟锁存器146中所存储的值之间出现差异的可能性。流水线总线140中的最后级表示为包括比较器147,它比较不延迟值和延迟值。如果它们不相等,则延迟值用来取代不延迟值,以及基于不延迟值的处理被抑制,使得可实行校正(总线时钟周期可被延伸)。可以理解,这些比较器和复用电路元件将沿流水线总线140在每个锁存器级提供,但为了简洁起见,它们在图8中被省略。
由于DSP电路144本身不支持不延迟和延迟锁存机制与其关联的校正可能性,因此提供给DSP电路144的数据值经过了任何必要校正是重要的。为此,在流水线总线140的末端提供了附加缓冲锁存器级148,使得提供给那个锁存器以及附属DSP电路144的数据值所需的任何校正可在DSP电路144对数据值起作用之前被执行。缓冲锁存器148可设置成充分接近DSP电路144,使得不存在导致从缓冲锁存器148传递到DSP电路144的数据值中差错的不足的可用传播时间等问题。
可以理解,各个不延迟锁存器142之间的总线连接可被认为是仅传递未改变数据的处理逻辑的形式。这样,图8的流水线总线实施例与前面所述的实施例(例如图1)之间的等效对于本技术领域的技术人员是非常明显的。
图9是流程图,说明图8的操作。在级150,从总线线路中捕捉不延迟信号值。在步骤152,不延迟值则被传递到下一个总线流水线级。在步骤154,相应的延迟锁存器146捕捉延迟总线信号。在步骤156,比较器147将延迟值与不延迟值进行比较。如果它们相等,则正常处理在步骤158继续进行。如果两个比较的值不相等,则步骤160用来延迟总线时钟,以及利用图8所示的复用器采用延迟值取代不延迟值。
图10说明利用本技术的另一个示例实施例。在这个示例实施例中,来自处理器核心中的指令寄存器的指令在指令锁存器162中被锁存。从这个指令锁存器162,指令被传递给其中包括微码ROM的解码器164,用于产生处理器控制信号的适当集合,这些处理器控制信号存储在不延迟控制信号锁存器166中,以及随后用来控制由处理器核心根据指今锁存器162中锁存的指令所执行的处理。从解码器164输出的控制信号也在它们被锁存在不延迟控制信号锁存器166中时稍后的时间被锁存在延迟控制信号锁存器168中。延迟控制信号值和不延迟控制信号值则可进行比较。如果它们不相等,则这表明需要校正动作。抑制操作通过检测到这种差异来触发,并用于根据不适当的锁存器控制信号值来暂停后续处理。可能是在某些情况下,唯一的有效恢复选项是总体上重置处理器。这可能是可接受的。在其它情况下,控制信号中的差错可能使得不太急剧的抑制和恢复机制是可行的。举例来说,可能仍然未对特定的错误控制信号起作用,例如在多周期程序指令的情况下,其中某些处理操作直到多周期指令的整体执行中的稍后时间才开始。这种情况的一个实例是乘法-累加运算,其中,在最终累加进行之前,乘法部分耗用若干时钟周期。如果在与累加关联的控制信号中存在差错,并且累加实际上并不需要,而只是纯乘法,则有可能通过在加法器设法执行累加运算之前校正应用于累加器的控制信号,来抑制累加。
图11说明图10的电路的工作的一个实例。在步骤170,乘法-累加控制信号从解码器164(微码ROM)中被读取。在步骤172,这个乘法-累加控制信号被锁存在不延迟控制信号锁存器166中,并输出到处理器核心中的各种处理元件。在步骤174,乘法操作数从寄存器文件中被读取,并开始乘法运算。在步骤176,由指令解码器164输出的控制信号由延迟控制信号锁存器168重新抽样。在步骤178,不延迟控制信号和延迟控制信号进行比较。如果它们相等,则正常处理在步骤180继续进行。但是,如果它们不相等,则处理进入步骤182,在其中确定乘法运算是否已经完成。如果乘法运算已经完成,则错误累加运算将已经开始,以及恢复的最佳选项是在步骤184在总体上重置系统。但是,如果乘法运算仍然在进行,则步骤186可用来重置加法器并取消累加运算,其中的预期乘法运算输出结果在步骤188产生,如指令锁存器162中所存储的程序指令最初预计的那样。
图12说明图1所示的电路的修改。在这个实施例中,延迟锁存器190用于数据保持(气球)锁存器的附加功能,供操作的待机/睡眠模式(低功耗模式)期间使用。在正常处理操作过程中,延迟锁存器190的功能如前面所述。但是,当睡眠控制器192用于发起进入操作的低功耗模式时,它停止不延迟时钟以及延迟时钟,使得延迟锁存器190全部存储与其相应的不延迟锁存器对应的数据值。在这点,不延迟锁存器及关联处理电路的电压电源被移去,使得它们断电并丢失其状态。但是,提供给不延迟锁存器190的电压被保持,使得它们用来保持所涉及的处理电路的状态。当系统退出低功耗模式时,处理逻辑和不延迟锁存器在比较器检测到不延迟锁存器与延迟锁存器190中的值的差异时再次被加电,它触发采用关联延迟锁存器190中保存的正确值取代不延迟锁存器中的错误值。可以理解,由于延迟锁存器190受到比它们的不延迟对应物更不严格的定时要求,因此它们可按照它们可能具有低速操作但在低功耗模式中更好地适合低功耗的方式来形成(例如产生更慢的转换但具有降低的泄漏电流的高门限电压)。这样,在正常处理中使用的纠错延迟锁存器可在低功耗模式中再用作数据保持锁存器,从而有利地减小所涉及电路的整体门计数。
图13是流程图,示意说明图12的电路的工作。在步骤194,集成电路处于其正常工作处理模式。在步骤196,处理逻辑级在不延迟时间产生输出信号。在步骤198,不延迟锁存器捕捉那个输出信号。在步骤200,不延迟锁存器中的不延迟信号被传递到下一个处理级。在步骤202,在延迟时间来自处理级的输出被产生,并可用于由延迟锁存器进行的捕捉。在步骤204,集成电路被触发从而采用低功耗模式,以及速度控制器192用于发起处理电路的断电,同时保持到延迟锁存器190的电力。在步骤206,延迟锁存器190捕捉延迟信号值。情况可能是,由延迟锁存器在步骤206进行的延迟信号值的捕捉在步骤204中转换到低功率模式之前发生。在步骤208,不延迟锁存器断电,以及它的存储值丢失。集成电路可在长时间周期保持这种状态。需要时,步骤210触发睡眠控制器192退出低功耗模式,并回复到工作模式。在步骤212,对不延迟锁存器和关联处理逻辑恢复电力,其中在延迟锁存器190中的延迟数据值用来根据需要重新装入流水线级,以便使系统恢复到它在进入低功耗模式之前的状况。
图14示意说明纠错控制和延迟锁存器应用到其中的多个处理级。处理级形成可作为处理器核心中的同步流水线的一部分、通信总线的一部分或存储器系统的一部分的集成电路的一部分。第一处理级包括用于数据传递的通道或处理逻辑1014、不延迟锁存器1016、延迟锁存器1018以及比较器1024,比较器1024比较延迟锁存器和不延迟锁存器的输出并且向复用器1020输出控制信号,确定延迟信号值还是不延迟信号值作为输入提供给后续处理级或通道1016。通道/逻辑1014和不延迟锁存器1016由不延迟时钟信号驱动,而延迟锁存器1019则由作为不延迟时钟信号的相移形式的延迟时钟信号驱动。
如果比较器1024检测到不延迟信号值与延迟信号值之间的差值,则这表明在元件1014表示处理逻辑的情况下处理操作在不延迟捕捉时间未完成,或者表明在元件1014表示数据通道的情况下来自前一个流水线级的信号仍未到达当前级。如果实际上检测到这种差异,则延迟锁存器1018中所存储的值是更可靠的数据值,因为它在处理操作更可能已完成或者来自前一级的数据更可能已经通过数据通道到达时的稍后时间被捕捉。通过将结果从延迟锁存器提供到下一个处理级1030,以及抑制后续处理级中的不延迟值的使用,计算的向前进行可得到保证。但是,如果单事件干扰出现并损坏延迟值,则延迟锁存器1018中存储的延迟信号值的可靠性可能被折衷。单事件干扰实际上是脉冲,因此它可能刚好被不延迟锁存器遗漏,但被延迟锁存器拾取。作为单事件干扰的直接结果,这种单事件干扰将使比较器检测延迟与不延迟值之间的差异,并且将损坏的延迟值传播到后续处理级。损坏不延迟值的单事件干扰不会成为问题,因为它将引起抑制错误的不延迟值的使用并将延迟值传送到后续级。
通过提供检错模块1026、纠错模块1028以及由检错模块1026控制以便将延迟值从延迟锁存器直接提供给比较器1024或者提供纠错模块1028所输出的已纠错值的复用器1022来提供数据完整性的交叉校验,图14的配置减小了损坏的延迟值经过计算的可能性。在通道/逻辑单元1014的上游,八位数据净荷经过纠错编码,以及四个冗余位被添加到数据净荷,从而形成十二位信号。十二位信号经过通道/逻辑单元1014,以及它的值由不延迟锁存器1016以及延迟锁存器1018来捕捉。但是,从延迟锁存器1018得到的信号的延迟值还作为输入提供给检错模块1026,它从12位纠错编码信号确定是否已经出现影响延迟值的任何差错。在一个备选配置中,提供另一个锁存器以便将信号值提供给检错模块1018,该模块在略迟于延迟锁存器1018的时间捕捉信号值。差错校验必须在与延迟值被捕捉的相同时间或稍后时间对所捕捉的值来执行,以便确保检测到不延迟值的捕捉与延迟值的捕捉之间出现的任何随机差错。
给定的纠错码能够检测预定数量的差错以及纠正给定数量的差错。因此,检错模块1026检测是否已经出现任何差错,以及如果是,则确定差错的数量是否足够小,使得它们全部可纠正。如果检测到可纠正差错,则信号值提供给纠错模块1028,在其中利用纠错码来纠正差错,以及纠正的延迟值提供给比较器1024。如果比较器1024确定纠正的延迟值不同于不延迟值,则差错恢复程序被调用,使得不延迟值的进一步传播在后续处理级中被抑制,以及操作改用纠正的延迟值来进行。另一方面,如果比较器1024确定纠正的延迟值与延迟值相同,则对于进行计算存在两种备选可能性。首先,差错恢复机制仍然可被调用,使得不延迟值在后续处理级中被抑制,并由纠正的延迟值取代。或者,由于不延迟值被确定为正确(如通过不延迟值和纠正的延迟值的相等来证明),因此差错恢复机制可被抑制(尽管检测到延迟值中的差错),从而允许不延迟值继续通过后续处理级。但是,如果检错模块1026在延迟值中检测到不可纠正的差错,则提供控制信号来抑制损坏的延迟值的使用。在这种情况下,计算的向前进行无法实现。所应用的纠错编码类型根据通道/处理逻辑1014的性质而有所不同。
处理逻辑可分类为值传递或者值改变。属于值传递的处理逻辑的实例为存储器、寄存器和复用器。值改变处理逻辑元件的实例为加法器、乘法器和移位器。值改变处理逻辑元件的检错和纠错比值传递处理逻辑元件更为复杂,因为即使在没有出现差错时,逻辑级1014输出的值也可能不同于输入的十二位信号1013。
图15示意说明经过仅传递当没有出现差错时从输入到输出未改变的数据值的通道的数据的纠错。在这种值传递处理逻辑的情况下,将诸如汉明码等线性分组码用于纠错和检错是方便的。线性分组码通常涉及形成码字,其中原始数据净荷位在码字中保持不变,但添加一些奇偶校验位(或冗余位)。汉明码是简单的单位纠错码,以及对于(N,K)代码,N为码字中的位的总数,以及K为待编码的数据位的数量。差错的存在及位置通过对输出码字执行多个奇偶校验来检测。汉明码包括N-K奇偶校验位,其中每个从数据中的位的不同组合来计算。汉明码能够纠正一个差错或者检测两个差错。所需的奇偶校验位(或者冗余位)的数量由汉明规则K+p+1≤2P给出,其中,p为奇偶校验位的数量以及N=K+p。
如图15所示,对通道的输入为12位码字,其中包含八个数据位以及四个奇偶校验或冗余位。奇偶校验由检错/纠错模块1116对来自通道1114的输出执行。12位码字中的任何单位差错在检错/纠错模块1116进行的码字输出之前被检测和纠正。如果检测的差错是不可纠正的,则检错/纠错模块1116输出表明情况是这样的信号。虽然简单代码、如汉明码结合图11被描述成与值传递处理逻辑配合使用,但可以理解,或者还可使用其它纠错码、如卷积码。
图16示意说明如何对诸如加法器、乘法器或移位器之类的值改变逻辑元件执行纠错。在值改变处理逻辑的情况下,诸如AN码、剩余码、反剩余码或剩余数字码之类的算术码可用来检测和纠正处理逻辑的输出中的随机差错。
算术码可用来校验算术运算符。在表示待校验的运算符的情况下,必须满足下列关系代码(XY)=代码X代码YAN码是涉及将数据字与恒定因子相乘的算术码,例如3N码可用于通过执行以下比较来校验加法运算的有效性3N(X)+3N(Y)?=3N(X+Y)3X+3Y?=3(X+Y)。
算术码的类的另一个实例是剩余码,其中,余数(除以常数的余数)添加到数据位作为校验位,例如3R码涉及模(MOD)3运算,以及应用以下校验X MOD 3+Y MOD 3?=(X+Y)MOD 3考虑X=14和Y=7的数值实例14MOD 3=2(码字111010,其中最后两位为余数);7MOD 3=1(码字011101);X+Y=21(10101);以及21MOD 3=0;余数之和MOD 3=(2+1)MOD 3=0=(X+Y)的余数。
图16示意说明用于图10的通道/逻辑单元1014中的加法运算的校验的7R算术码的使用。待校验的加法运算为X+Y,其中X和Y为八位数据字。各数据字包含分别具有值X MOD 7和Y MOD 7的四个校验位。X MOD 7和Y MOD 7作为操作数提供给第一加法器1210,以及这个加法器的输出提供给确定值(X MOD 7+Y MOD 7)MOD 7并将结果作为第一输入提供给比较器1250的逻辑。第二加法器1230执行加法(X+Y),将结果提供给计算(X+Y)MOD 7并将结果作为第二输入提供给比较器1250的逻辑单元1240。如果比较器检测到两个输入值之间的任何差异,则已经出现差错。
图17是流程图,示意说明包括延迟锁存器值的纠错控制的图14的电路的操作。在级1310,十二位纠错编码的信号值被输入通道/逻辑单元1014。接下来,在级1320,不延迟锁存器1016在时间Ti捕捉来自通道/逻辑单元1014的输出,以及捕捉值在级1330转发到后续处理逻辑级I+1。在级1340,延迟锁存器1018在时间Ti+d捕捉输出信号。在级1350,检错逻辑在时间Ti+(d+δ)捕捉来自通道/逻辑单元1014的输出。虽然在优选配置中δ为零,使得延迟值本身输出的值实际上经过差错校验,此输出或者可在延迟锁存器在时间Ti+d捕捉输出信号之后短时间里就捕捉。用于提供给检错电路的值的捕捉经过适当定时,从而确保延迟值中的任何随机差错被检测。在级1360,检错模块1026利用冗余位来确定延迟输出信号是否有差错。如果检测到差错,则在级1370确定差错是否可纠正,这将取决于多少位受到影响。例如,汉明码只能纠正单位差错。如果在级1370确定差错可纠正,则过程进入级1390,在此差错被纠正,以及纠正的延迟值在复用器1022被选取并提供给比较器1024。但是,如果在级1370确定所检测差错不是可纠正的,则产生控制信号,表明已经出现不可纠正的差错。在这种情况下,计算的向前进行无法可靠执行。在级1392,比较器1024确定差错校验的延迟值是否等于不延迟值,以及如果是,则计算的向前进行会继续。否则,执行对于图4B所述的步骤序列的过程,其中包括抑制不延迟值以及在后续处理级由延迟值取代。
图18说明使用本技术来动态调整处理级之间的相对定时。大家知道,在流水线处理环境中,处理级可耗用不同时间来完成它们相应的操作。在理论上,处理级全部经过平衡以耗用同样时间,以及对于它们各自的时间,以相同方式随周围条件的变化而改变。但是,这在许多情况下都不是可行的,情况可能是,在一个工作电压或温度上经过平衡的处理级的集合在另一个工作电压或温度上未经过平衡。此外,制造变化及其它特性可能导致处理级定时之间的相当大的差异,这干扰在其间所设计的平衡。在这些情况下,时钟频率和其它工作参数相对最坏情况来选取,使得处理级充分接近平衡,以便在所有条件下都是可工作的。
本技术允许采取更有选择性并且实际上是动态的方法。流水线处理电路2000包括延迟锁存器2002,它可用来检测由不延迟锁存器所捕捉的信号值中的差错的出现。这些差错的出现被反馈给时钟相位控制电路204,它用来调整提供给主通路中的各锁存器、即不延迟锁存器的时钟信号的相对相位。这样,可进行调整,从而有效地借用一个处理级的时间,并将它分配给另一个处理级。这可通过分接由来自基本时钟信号沿其中传播的延迟线中的可选位置的相应不延迟锁存器所使用的时钟信号来实现。
所述实例,即锁存器LA与锁存器LB之间的处理逻辑在操作上比后续级中的处理逻辑更慢。因此,提供给不延迟锁存器LB的时钟信号可经过相移,以便延迟那个时钟信号的上升沿(假定上升沿锁存器捕捉),从而延伸可用于慢速处理逻辑的时间。这减少了可用于后续处理级中的处理逻辑的时间,假定这以与除锁存器LB之外的其它级元件相同的基本时钟信号工作。
处理级之间的这种定时平衡可在电路的正进行操作期间利用来自使用延迟锁存器所检测的操作中的差错的反馈动态执行。或者,平衡可作为一次性操作在制造测试阶段或者在集成电路的“金靴”过程中执行。图18所示的延迟锁存器用于处理级之间的定时平衡,以及此后可用于工作参数和纠错的控制,如以上例如对于图1所述。这样,延迟锁存器的提供还进一步用来控制相对时钟定时。
图19说明基于全局时钟选通的流水线差错恢复的简单方法。如果任何级检测到差错,则通过对下一个全局时钟边沿进行选通,整个流水线暂停一个周期。附加时钟周期允许每一级利用延迟锁存器作为输入重新计算其结果。因此,任何先前转发的错误值将由来自延迟锁存器的正确值取代。由于所有级采用延迟锁存器输入重新评估其结果,因此,任何数量的差错在单周期中可能被容许,以及向前进行得到保证。如果所有级每个周期产生一个差错,则流水线将继续运行,但以正常速度的1/2进行。
重要的是,错误流水线结果在由比较器进行检验之前不写入体系结构化状态。由于延迟值的检验耗用两个附加周期(即一个用于检错以及一个用于应急检测),因此在最后的延迟锁存器与回写(WB)级之间必须存在两个非推测级。在我们的设计中,对数据高速缓存的存储访问是非推测的,因此,在回写(WB)之前只要求一个标记为ST用于稳定的附加级。ST级引入寄存器旁路的附加级。由于存储指令必须以非推测方式执行,因此它们在流水线的WB级执行。
图19给出在流水线的EX级失败的指令的流水线恢复的流水线时序图。第一次失败的级计算出现在第4周期,但仅在MEM级之后才利用从EX级转发的错误值计算不正确的结果。在检测到差错之后,全局时钟暂停出现在第6周期,允许Razor影子锁存器中的正确的EX结果由MEM级来评估。在第7周期,恢复正常的流水线操作。
在积极式定时设计中,不可能在没有明显影响处理器周期时间的情况下实现全局时钟选通。因此,已经实现基于逆流流水线技术的完全流水线差错恢复机制。图20中所示的方法以在几个周期上延长流水线恢复为代价对基线流水线设计施加了微不足道的定时约束。当检测到不延迟值差错时,必须采取两个特定动作。首先,出故障的不延迟锁存器之后的错误级计算必须被废弃。这个动作采用空泡信号来实现,它向下一个以及后续级表明流水线槽位为空。第二,刷新链通过断言故障级的级ID来触发。在随后的周期中,来自延迟锁存器数据的正确值重新注入流水线,允许错误指令对其正确输入继续进行。另外,还存在逆流流水线,刷新链由此开始以指令的相反方向传播故障级的ID。在激活的刷新链访问的各级,相应的流水线级和一个直接在前级由空泡取代。(两个级必须被废弃,以便考虑到主流水线的两倍相对速度。)当刷新ID到达流水线的开头时,刷新控制逻辑以错误指令之后的指令重新启动流水线。如果多级在同一个周期中遇到差错,则它们将全部开始恢复,但只有最接近回写(WB)的不延迟差错将完成。先前的恢复将被稍后的恢复刷新。注意,逆流流水线可能与前向流水线不是相同长度,使得例如逆流流水线的刷新链的深度可能为两个流水线级,而前向流水线的深度可能为十二级。
图20表示在EX级失败的指令的流水线恢复的流水线时序图。如前一个实例中那样,当第二指令计算流水线的EX级中的不正确结果时,第一个出故障的级计算出现在第4周期。这个差错在第5周期被检测,导致空泡从MEM级被传播出来以及刷新链的开始。EX、ID和IF级中的指令分别在第6、第7和第8周期被刷新。最后,流水线在错误指令之后、在周期9重新启动,此后恢复正常的流水线操作。
回忆以上图2的描述,如果电路102检测到差错信号中的元稳定性,则应急信号被断言。在这种情况下,当前指令(而不是下一个指令)应当重新运行。当这种应急信号被断言时,所有流水线状态被刷新,以及流水线在至少指令回写之后立即重新启动。应急情况使向前进行的保证复杂化,因为检测情况中的延迟可能导致正确的结果在延迟锁存器中被盖写。因此,在遇到紧急情况之后,电源电压重置到已知的安全工作电平,以及流水线重新启动。一旦重新调整,错误指令应当无误地完成,只要在这个指令完成之前禁止返回。
流水线恢复控制的主要要求在于,它即使在最坏工作条件(例如低电压、高温以及高过程变化)下也不会失败。这个要求通过保守的设计方法来满足,它确认最坏情况亚临界电压下的差错恢复电路的定时。
图21示意说明延迟锁存器2100再用作串行扫描链锁存器。这通过提供由允许串行扫描数据值根据需要被写入延迟锁存器或者从延迟锁存器顺序读取的扫描使能信号所控制的复用器2102来实现。此外,允许延迟锁存器值取代不延迟锁存器值的常规机制被利用以允许串行扫描链值被插入工作通路。
权利要求
1.一种用于执行数据处理的集成电路,所述集成电路包括多个处理级,提供来自至少一个处理级的处理级输出信号作为后续处理级的处理级输入信号,其中所述至少一个处理级包括处理逻辑,可用于对至少一个编码输入值执行处理操作,从而产生处理逻辑输出信号,所述编码输入值是纠错码已经应用到其中的输入值;不延迟信号捕捉元件,可用于在不延迟捕捉时间捕捉所述处理逻辑输出信号的不延迟值,所述不延迟值在所述不延迟捕捉时间之后作为所述处理级输出信号被提供给所述后续处理级;延迟信号捕捉元件,可用于在迟于所述不延迟捕捉时间的延迟捕捉时间捕捉所述处理逻辑输出信号的延迟值;纠错逻辑,可用于检测所述处理逻辑输出信号的所述延迟值中的随机差错的出现,从而确定所述检测的随机差错是否可利用所述纠错码纠正,并且或者产生差错校验延迟值或者表明所述检测的随机差错不可纠正;比较器,可用于将所述不延迟值与所述差错校验延迟值比较,以便检测所述处理逻辑输出信号在所述不延迟捕捉时间之后的时间的变化,所述变化表明使所述处理逻辑因此在所述不延迟捕捉时间未完成所述处理操作的系统差错,或者表明所述不延迟值中的随机差错;以及差错修复逻辑,可用于在所述比较器检测到所述处理逻辑输出信号的所述变化时执行差错修复操作,通过在后续处理级中用所述差错校验延迟值替代所述不延迟值,或者如果所述纠错逻辑表明所述检测的随机差错不可纠正,则通过发起所述处理操作和后续处理级的处理操作的重复,来抑制所述不延迟值的使用。
2.如权利要求1所述的集成电路,其特征在于,在所述纠错逻辑检测到所述延迟值中的可纠正随机差错并且所述比较器检测到所述不延迟值与所述差错校验延迟值之间没有差异时,所述差错修复逻辑可用于通过采用所述差错校验延迟值替代所述不延迟值来抑制所述不延迟值的使用。
3.如权利要求1和2所述的集成电路,其特征在于,所述处理逻辑执行的所述处理操作是一种操作,对于这种操作,当所述处理操作中没有出现差错时,所述处理逻辑输出信号实际上等于所述处理级输入值。
4.如权利要求3所述的集成电路,其特征在于,所述至少一个处理级由存储电路来执行,以及所述处理操作是读或写操作。
5.如权利要求3所述的集成电路,其特征在于,所述至少一个处理级由寄存器来执行,以及所述处理操作是读、写或移动操作。
6.如权利要求3所述的集成电路,其特征在于,所述至少一个处理级由复用器来执行,以及所述处理操作是复用操作。
7.如以上权利要求中的任一项所述的集成电路,其特征在于,所述多个处理级是同步流水线内的各个流水线级。
8.如权利要求3至7中的任一项所述的集成电路,其特征在于,利用汉明码对所述输入值进行纠错编码,以及所述差错修复逻辑利用所述汉明码来执行所述纠正和所述检测。
9.如以上权利要求中的任一项所述的集成电路,其特征在于,所述处理逻辑执行的所述处理操作是一种值改变操作,对于所述操作,即使当所述处理操作中没有出现差错时,所述处理逻辑输出信号也可能不同于所述处理级输入值。
10.如权利要求9所述的集成电路,其特征在于,所述处理逻辑是下列各项其中之一加法器、乘法器或移位器。
11.如权利要求8所述的集成电路,其特征在于,利用包括以下各项其中之一的算术码对所述输入值进行纠错编码AN码、剩余码、反剩余码或者剩余数字码。
12.如以上权利要求中的任一项所述的集成电路,其特征在于包括元稳定性检测器,可用于检测所述不延迟值中的元稳定性,以及若发现为元稳定的,则触发所述差错修复逻辑来抑制所述不延迟值的使用。
13.如以上权利要求中的任一项所述的集成电路,其特征在于,当所述比较器检测到所述变化时,所述差错修复逻辑可用于采用所述差错校验延迟值取代所述不延迟值作为所述处理级输出信号。
14.如权利要求13所述的集成电路,其特征在于,向所述后续处理级提供所述差错校验延迟值迫使处理操作向前进行。
15.如以上权利要求中的任一项所述的集成电路,其特征在于,当所述比较器检测到所述变化时,所述差错修复逻辑可用于迫使所述差错校验延迟值存储在所述不延迟信号捕捉元件中以取代所述不延迟值。
16.如以上权利要求中的任一项所述的集成电路,其特征在于,所述至少一个处理级和所述后续处理级内的处理操作由不延迟时钟信号驱动。
17.如权利要求16所述的集成电路,其特征在于,当所述比较器检测到所述变化时,所述差错修复逻辑可用于选通所述不延迟时钟信号,以便提供时间让所述后续处理级从所述不延迟值的输入进行恢复,以及改为使用所述差错校验延迟值。
18.如权利要求16所述的集成电路,其特征在于,所述不延迟捕捉时间从所述不延迟时钟信号的预定相位点导出,所述不延迟时钟信号的相位延迟形式被用作延迟时钟信号,以及所述延迟捕捉时间从所述延迟时钟信号的预定相位点导出。
19.如以上权利要求中的任一项所述的集成电路,其特征在于,根据与所述变化对应的所述系统差错的检测来控制所述集成电路的一个或多个工作参数。
20.如权利要求19所述的集成电路,其特征在于,所述一个或多个工作参数经过控制,从而具有保持非零系统差错率的等级。
21.如权利要求19和20所述的集成电路,其特征在于,所述一个或多个工作参数包括以下各项中的至少一项工作电压;工作频率;集成电路体偏压;以及温度。
22.如以上权利要求中的任一项所述的集成电路,其特征在于,所述处理操作耗用的最小处理时间大于分开所述延迟捕捉时间与所述不延迟捕捉时间的时间,使得所述差错校验延迟值没有受到对不同输入值所执行的处理操作的影响。
23.如权利要求22所述的集成电路,其特征在于,所述处理逻辑包括一个或多个延迟元件以确保超过所述最小处理时间。
24.如以上权利要求中的任一项所述的集成电路,其特征在于,所述处理操作耗用的最大处理时间小于分开所述延迟捕捉时间与所述不延迟捕捉时间的时间以及不延迟捕捉时间之间的时间之和,使得所述处理逻辑到所述延迟捕捉时间已经完成所述处理操作。
25.如以上权利要求中的任一项所述的集成电路,其特征在于,所述处理级是数据处理器的一部分。
26.如以上权利要求中的任一项所述的集成电路,其特征在于包括可用于存储与所述变化对应的差错的检测的计数的差错计数器电路。
27.如权利要求26所述的集成电路,其特征在于,所述计数可由软件读取。
28.一种控制用于执行数据处理的集成电路的方法,所述方法包括以下步骤从多个处理级中的至少一个处理级提供处理级输出信号作为后续处理级的处理级输入信号,所述至少一个处理级用于采用处理逻辑对至少一个编码输入值执行处理操作,从而产生处理逻辑输出信号,所述编码输入值是纠错码已经应用到其中的输入值;在不延迟捕捉时间捕捉所述处理逻辑输出信号的不延迟值,所述不延迟值在所述不延迟捕捉时间之后作为所述处理级输出信号被提供给所述后续处理级;在迟于所述不延迟捕捉时间的延迟捕捉时间捕捉所述处理逻辑输出信号的延迟值;利用纠错逻辑检测所述处理逻辑输出信号的所述延迟值中的随机差错的出现,从而确定所述检测的随机差错是否可利用所述纠错码纠正,并且或者产生差错校验延迟值或者表明所述检测的随机差错不可纠正;将所述不延迟值与所述差错校验延迟值比较,以便检测所述处理逻辑输出信号在所述不延迟捕捉时间之后的时间的变化,所述变化表明使所述处理逻辑因此在所述不延迟捕捉时间未完成所述处理操作的系统差错,或者表明所述不延迟值中的随机差错;以及在检测到所述变化时,利用差错修复逻辑执行差错修复操作,通过在后续处理级中用所述差错校验延迟值替代所述不延迟值,或者如果所述纠错逻辑表明所述检测的随机差错不可纠正,则通过发起所述处理操作和后续处理级的处理操作的重复,来抑制所述不延迟值的使用。
29.如权利要求28所述的方法,其特征在于,在所述纠错逻辑检测到所述延迟值中的可纠正随机差错并且所述比较器检测到所述不延迟值与所述差错校验延迟值之间没有差异时,所述差错修复逻辑可用于通过采用所述差错校验延迟值替代所述不延迟值来抑制所述不延迟值的使用。
30.如以上权利要求中的任一项所述的方法,其特征在于,所述处理逻辑执行的所述处理操作是一种操作,对于所述操作,当所述处理操作中没有出现差错时,所述处理逻辑输出信号实际上等于所述处理级输入值。
31.如权利要求30所述的方法,其特征在于,所述至少一个处理级由存储电路来执行,以及所述处理操作是读或写操作。
32.如权利要求30所述的方法,其特征在于,至少一个处理级由寄存器来执行,以及所述处理操作是读、写或移动操作。
33.如权利要求30所述的方法,其特征在于,所述至少一个处理级由复用器来执行,以及所述处理操作是复用操作。
34.如以上权利要求中的任一项所述的方法,其特征在于,所述多个处理级是同步流水线内的各个流水线级。
35.如权利要求30至34中的任一项所述的方法,其特征在于,利用汉明码对所述输入值进行纠错编码,以及所述差错修复逻辑利用所述汉明码来执行所述纠正和所述检测。
36.如以上权利要求中的任一项所述的方法,其特征在于,所述处理逻辑执行的所述处理操作是一种值改变操作,对于所述操作,即使当所述处理操作中没有出现差错时,所述处理逻辑输出信号也可能不同于所述处理级输入值。
37.如权利要求36所述的方法,其特征在于,所述处理逻辑是下列各项其中之一加法器、乘法器或移位器。
38.如权利要求36所述的方法,其特征在于,利用包括以下各项其中之一的算术码对所述输入值进行纠错编码AN码、剩余码、反剩余码或者剩余数字码。
39.如以上权利要求中的任一项所述的方法,其特征在于包括所述不延迟值中的元稳定性检测,以及若发现为元稳定的,则触发所述差错修复逻辑来抑制所述不延迟值的使用。
40.如权利要求28至39中的任一项所述的方法,其特征在于,当所述比较器检测到所述变化时,所述差错修复逻辑可用于采用所述差错校验延迟值取代所述不延迟值作为所述处理级输出信号。
41.如权利要求28至40中的任一项所述的方法,其特征在于,向所述后续处理级提供所述差错校验延迟值迫使处理操作向前进行。
42.如权利要求28至41中的任一项所述的方法,其特征在于,当所述比较器检测到所述变化时,所述差错修复逻辑可用于迫使所述差错校验延迟值存储在所述不延迟信号捕捉元件中以取代所述不延迟值。
43.如权利要求28至42中的任一项所述的方法,其特征在于,所述至少一个处理级和所述后续处理级内的处理操作由不延迟时钟信号驱动。
44.如权利要求43所述的方法,其特征在于,当所述比较器检测到所述变化时,所述差错修复逻辑可用于选通所述不延迟时钟信号,以便提供时间让所述后续处理级从所述不延迟值的输入进行恢复,以及改为使用所述差错校验延迟值。
45.如权利要求43和44所述的方法,其特征在于,所述不延迟捕捉时间从所述不延迟时钟信号的预定相位点导出,所述不延迟时钟信号的相位延迟形式被用作延迟时钟信号,以及所述延迟捕捉时间从所述延迟时钟信号的预定相位点导出。
46.如权利要求28至45中的任一项所述的方法,其特征在于,根据与所述变化对应的所述系统差错的检测来控制所述集成电路的一个或多个工作参数。
47.如权利要求46所述的方法,其特征在于,所述一个或多个工作参数经过控制,从而具有保持非零系统差错率的等级。
48.如权利要求46和47所述的方法,其特征在于,所述一个或多个工作参数包括以下各项中的至少一项工作电压;工作频率;集成电路体偏压;以及温度。
49.如权利要求28至48中的任一项所述的方法,其特征在于,所述处理操作耗用的最小处理时间大于分开所述延迟捕捉时间与所述不延迟捕捉时间的时间,使得所述差错校验延迟值没有受到对不同输入值执行的处理操作的影响。
50.如权利要求49所述的方法,其特征在于,所述处理逻辑包括一个或多个延迟元件以确保超过所述最小处理时间。
51.如权利要求28至50中的任一项所述的方法,其特征在于,所述处理操作耗用的最大处理时间小于分开所述延迟捕捉时间与所述不延迟捕捉时间的时间以及不延迟捕捉时间之间的时间之和,使得所述处理逻辑到所述延迟捕捉时间已经完成所述处理操作。
52.如权利要求28至51中的任一项所述的方法,其特征在于,所述处理级是数据处理器的一部分。
53.如权利要求28至52中的任一项所述的方法,其特征在于包括可用于存储与所述变化对应的差错的检测的计数的差错计数器电路。
54.如权利要求53所述的方法,其特征在于,所述计数可由软件读取。
全文摘要
集成电路包括多个处理级,其中每个包括处理逻辑(1014)、不延迟信号捕捉元件(1016)、延迟信号捕捉元件(1018)以及比较器(1024)。不延迟信号捕捉元件(1016)在不延迟捕捉时间捕捉来自处理逻辑(1014)的输出。在稍后的延迟捕捉时间,延迟信号捕捉元件(1018)也捕捉来自处理逻辑(1014)的值。检错电路(1026)和纠错电路(1028)检测及纠正延迟值中的随机差错,并向比较器(1024)提供差错校验延迟值。比较器(1024)比较差错校验延迟值与不延迟值,如果它们不相等,则这表明不延迟值被过快捕捉并且应由差错校验延迟值来取代。不延迟值在其捕捉之后立即被传递给后续处理级,以及差错恢复机制相应地用来抑制已经由后续处理级进行的错误处理,例如选通时钟以及在重启时钟之前允许正确信号值经过后续处理逻辑。诸如时钟频率、工作电压、体偏压、温度等集成电路工作参数经过调整,从而以提高整体性能的方式来保持有限非零差错率。
文档编号G06F1/32GK1761945SQ200480007372
公开日2006年4月19日 申请日期2004年3月17日 优先权日2003年3月20日
发明者T·M·奥斯丁, D·T·布劳夫, T·N·马奇, K·弗劳特纳 申请人:Arm有限公司, 密执安大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1