用于数据处理系统中的高速缓存的可编程错误动作的制作方法

文档序号:6595526阅读:108来源:国知局
专利名称:用于数据处理系统中的高速缓存的可编程错误动作的制作方法
技术领域
本公开一般地涉及数据处理系统,更具体地涉及用于高速缓存的可编程错误动作。
背景技术
随着尺寸缩小和存储器容量增加,高速缓存中的软错误正日益成为问题。这些软错误涉及诸如由于电离辐射的影响而导致的存储在高速缓存中的数据的改变。这些改变导致不太可靠的高速缓存,其可能特别是在安全关键的系统诸如防锁制动系统、驾驶辅助系统等中存在问题。即,在这种系统内,可能要求高标准或可靠性。


本发明通过举例示出并且不由附图限制,其中,类似参考数字表示类似元件。为了简单和清楚起见,图中的元件被示出并且不必须按照比例绘制。图1以框图形式示出根据本发明的一个实施例的数据处理系统;图2以框图形式示出根据本发明的一个实施例的图1的数据处理系统内的高速缓存的一部分;图3以示意图形式示出根据本发明的一个实施例的使用图2的高速缓存的错误动作控制寄存器;图4和图5以表格形式示出根据本发明的一个实施例的图3的错误动作控制寄存器的多种字段的描述;图6以框图形式示出根据本发明的一个实施例的图2的高速缓存的一部分;以及图7以流程图形式示出根据本发明的一个实施例的用于操作图1的数据处理系统的方法。
具体实施例方式在数据处理系统内,当检测到高速缓存中的软错误时,可以采用不同错误动作。在一个实施例中,高速缓存控制电路包括用户可编程控制寄存器,其包括高速缓存错误动作 (CEA)字段,该字段用于存储控制值,该控制值允许响应于检测到高速缓存软错误动态选择将采用的错误动作。例如,在一个实施例中,用户可以对CEA字段的控制值进行编程,以允许响应于检测到的错误执行透明操作或非透明操作。用户可编程控制寄存器用于响应于检测到的错误选择将被采用的不同错误动作提供了灵活机制,以评价和克服这些软错误。例如,在执行的关键领域中,诸如在执行安全关键的应用期间,可以希望软错误的透明修补, 而在执行其他类型的应用期间或在其他模式下,希望可以拦截和报告软错误用于改进的监控。从而,用户可编程控制寄存器允许在数据处理系统的操作期间,动态改变高速缓存错误对处理器的透明度。如在此使用的,术语“总线”用于指可以用于传送一种或多种类型的信息诸如数据、地址、控制、或状态的多个信号或导体。在此所述的导体可以关于单个导体、多个导体、 单向导体、或双向导体示出或描述。然而,不同实施例可以改变导体的实现。例如,可以使用独立单向导体而不是双向导体,反之亦然。而且,多个导体可以用连续或以时间复用方式传送多个信号的单个导体代替。类似地,承载多个信号的单个导体可以分为承载这些信号的子集的多个不同导体。从而,存在用于传送信号的多种选项。当涉及将信号、状态位、或类似装置分别译为其逻辑真或逻辑假状态时,在此使用术语“断言”或“设置”以及“否定”(或者“解除断言”或“清除”)。如果逻辑真状态是逻辑电平1,则逻辑假状态是逻辑电平0。并且,如果逻辑真状态是逻辑电平0,则逻辑假状态是逻辑电平1。图1以框图形式示出根据本发明的一个实施例的数据处理系统10。数据处理系统 10包括处理模块12、系统总线14、存储器16和多个外围设备,诸如外围设备18、外围设备 20,并且在一些实施例中,使外围设备18与外围设备20分离的由图1中的点表示的附加外围设备。存储器16是通过在一种形式中具有多个导体的双向导体连接至系统总线14的系统存储器。在所示的形式中,外围设备18和20中的每个都通过双向多个导体连接至系统总线14,处理模块12也是如此。处理模块12包括经由具有多个导体的双向总线连接至系统总线14的总线接口单元22。总线接口单元22经由双向导体连接至内部总线对。内部总线M是多个导体通信总线。经由相应双向导体连接至内部总线M的是高速缓存沈、存储器观、以及处理器30。处理器30实现数据处理操作。高速缓存沈、存储器观、以及处理器30中的每个都经由相应双向导体连接至内部总线。在一个实施例中,处理器30可以直接连接至高速缓存沈而不经由内部总线M。在另一实施例中,除经由内部总线M连接之外,处理器30可以经由专用接口直接连接。其他实施例可以使用连接处理器30、高速缓存 26、以及存储器观的不同方法。可替换地,存储器观可以不存在于处理模块12中。注意, 存储器观和存储器16可以是任何类型的存储器,并且外围设备18和20中的每个都可以是任何类型的外围设备或装置。在一个实施例中,所有数据处理系统10都在单个集成电路上。可替换地,数据处理系统10可以使用多于一个集成电路实现。在一个实施例中,至少所有处理模块12都在单个集成电路上。在操作中,处理模块12用于通过执行多个数据处理指令实现多种数据处理功能。 高速缓存26是用于处理器30所需的经常使用的信息的临时数据存储。在一个实施例中, 高速缓存26是组相关联的高速缓存。在一个实施例中,高速缓存沈可以是存储指令信息的指令高速缓存。在另一实施例中,高速缓存26可以是存储数据信息(例如,运算信息) 的数据高速缓存。在另一实施例中,高速缓存26可以是能够存储多种类型信息(诸如,指令信息和数据信息(例如,运算信息))的统一的高速缓存。不在高速缓存26内的由处理器30所需的信息被存储在存储器观或存储器16中。在一个实施例中,存储器观可以称为内部存储器,其中,其在处理模块12内部,而存储器16可以称为外部存储器,其中,其在处理模块12外部。总线接口单元22仅是处理模块12和系统总线14之间的多个接口单元中的一个。总线接口单元22用于协调与通过处理器30的指令执行相关的信息流。控制信息和从执行指令得到的数据经由总线接口单元22在处理器30和系统总线14之间交换。注意,处理模块12和数据处理系统10可以包括任意数量的高速缓存,其可以包括任何类型的高速缓存,诸如数据高速缓存、指令高速缓存、一级高速缓存、二级高速缓存等。在此提供的关于错误动作控制寄存器及其使用的描述可以应用于数据处理系统10内的任何高速缓存。在一个实施例中,每个高速缓存或者每个高速缓存子集都具有其自己的错误动作控制寄存器,或者用于当检测到软错误时,选择将被采用的错误动作的其自己的CEA 字段。在另一实施例中,一个或多个高速缓存可以共享错误动作控制寄存器或者错误动作控制寄存器内的CEA字段。图2示出根据一个实施例的图1的高速缓存沈的一部分。高速缓存沈的可选实施例可以使用与图2中所示不同的结构。图2中所示的高速缓存沈的部分具有“N”组和 8路,并且可以称为多路高速缓存或者多路组相关联的高速缓存。从而,高速缓存沈可以被描述为具有N组,每组都具有8路。在可选实施例中,高速缓存沈可以具有任意数量的组和任意数量的路。注意,如在此所述的,高速缓存行是指高速缓存路和组的交叉。例如, 路0包括N个高速缓存行,每个均对应于组0至组N-I中的一个。从而,当选择路用于代替时,一个或多个高速缓存行(其由索引部分四选择,将在以下描述)中的信息实际被替换。 即,整个路可以不被替换,而是仅一个或多个特定行。在所示实施例中,高速缓存电路21是在多个高速缓存行或条目中的每个中存储信息的存储电路。例如,高速缓存电路21包括标签、状态、高速缓存数据、以及用于高速缓存行或条目的保护字段。地址25从处理器30提供。地址25包括标签部分27、索引部分四、偏移量部分32。索引部分四被提供给高速缓存电路21,其指示特定高速缓存行(即, 组0至组N-I中的一个)。比较电路23被连接以接收标签部分27,并且被连接至高速缓存电路21,以接收标签和状态信息。基于所接收的该信息,比较电路23确定是否存在高速缓存命中或高速缓存丢失。在所示实施例中,被标记为HIT_WAY
34的多个命中/丢失信号被提供给高速缓存控制电路38。每个HIT_WAY
34信号都指示在高速缓存电路21中是否存在用于其相应路的高速缓存命中。除了或者代替高速缓存命中信号,可选实施例可以使用高速缓存丢失信号。高速缓存控制电路38通过导体或者信号36和39连接至高速缓存电路21。包括索引部分四的来自处理器30的地址25也被提供给高速缓存控制电路38,用于指示特定高速缓存行(即,组0至组N-I中的一个),以及用于提供用于其它控制操作的标签27和偏移量32部分。高速缓存控制电路38包括错误动作控制寄存器48、输出选择逻辑37、以及错误控制电路66。错误动作控制寄存器48连接至错误控制电路66,并且错误控制电路连接至输出选择逻辑37。错误控制电路66还将一个或多个错误指示符提供给总线M。输出选择逻辑将信息提供给总线对。高速缓存控制电路38也被连接以从总线M接收信息。错误控制电路66包括用于高速缓存电路21中的每路的错误控制电路路0错误控制电路至路7错误控制电路。以下将更详细描述的错误控制电路66执行用于高速缓存 26的错误检测和选择性错误校正。高速缓存控制电路38还可以包括执行其他高速缓存功能的其他电路,在本领域中应该很好理解,从而在此不更加详细地描述该其他电路。还参考图2,索引部分四被用于选择高速缓存电路21中的组。来自高速缓存电路21的标签信息与标签27进行比较,并且通过来自高速缓存电路21的状态信息(例如, 有效位)限定。比较和限定(例如,匹配和有效)的结果确定高速缓存命中是否发生。如上所述,每个HIT_WAY
34信号都指示在高速缓存电路21中是否存在用于其相应路的高速缓存命中。
在对高速缓存沈的读取访问的情况下,当高速缓存命中时,经由导体39将导致高速缓存命中的高速缓存数据和高速缓存行的保护字段提供给高速缓存控制电路38。在错误控制电路66内用于导致高速缓存命中的路的相应错误控制电路使用接收到的保护信息对接收到的高速缓存数据执行错误检测和/或校正。使用错误动作控制寄存器48内的设置, 选择使用的错误检测和/或校正方案,以下将参考图6更详细地描述。而且,如果检测到错误,则在错误控制电路66内用于导致高速缓存命中的路的相应错误控制电路使用错误动作控制寄存器48内的设置,以响应于检测到的错误确定将被采用的错误动作,以下将更详细地描述。然后,高速缓存数据可以经由输出选择逻辑被提供给总线对,其中,输出选择逻辑使用HIT_WAY
34来选择错误控制电路66内用于导致高速缓存命中的路的相应错误控制电路的输出。注意,如果还执行错误校正,则校正后的高速缓存数据将经由输出选择逻辑37输出,而不是从高速缓存电路21提供的数据。而且,注意,一个或多个错误指示符还可以经由输出选择逻辑37被提供给总线24,以指示错误是否已经发生。而且,如果提供校正后的高速缓存数据,则一个或多个错误指示符可以是否定的,以指示提供的高速缓存数据不存在错误(由于其已经被校正)。在这种情况下,检测到的错误对于处理器30是透明的。在对高速缓存沈写访问的情况下,当高速缓存命中时,可以通过高速缓存控制电路38从总线M接收信息(例如,用于存储到高速缓存电路21的高速缓存数据)。高速缓存数据可以通过经由导体39将新数据合并至高速缓存电路21的合适高速缓存行,由高速缓存控制电路38提供用于存储。而且,高速缓存控制电路38可以适当地更新高速缓存行的状态字段。状态信息可以包括状态,诸如指示高速缓存行有效的有效(V)标签,以及指示高速缓存行关于位于存储器16或存储器观中的副本被修改的脏(D)标签。如现有技术中已知的,还可以实现其他状态标签。(注意,由于在本领域中已经很了解,所以未示出用于接收高速缓存数据并且将其路由至导致命中的高速缓存电路21内的行并且更新状态信息的特定电路)。接收到的高速缓存数据还被提供给错误控制电路66,使得错误控制电路66(如由HIT_WAY
34选择的)内的相应错误控制电路可以生成合适的更新后的保护信息,以下将参考图6更详细地描述。还可以通过高速缓存控制电路38提供该相应的保护信息以及接收到的高速缓存数据,用于存储到导致高速缓存行命中的高速缓存电路21的合适高速缓存行。注意,如果还执行错误校正,则校正后的接收到的高速缓存数据(如果检测到错误)将被提供用于存储回高速缓存电路21,以与合并后的存储数据一起用于写访问。在高速缓存丢失的情况下,高速缓存控制电路38内的分配逻辑(未示出)识别用于替换的高速缓存行并且更新高速缓存行。高速缓存分配的任何已知方法可以被用于选择用于替换的高速缓存行,诸如,例如轮转方法、最近使用的伪最少(PLRU)方法等。当高速缓存丢失时,用于存储到新分配的高速缓存行的新高速缓存数据通过总线M被提供给高速缓存控制电路38。然后,新高速缓存数据经由导体39被提供以用于存储到高速缓存电路 21的新分配的高速缓存行。而且,高速缓存控制电路38可以适当地生成状态信息,用于存储到新分配的高速缓存行的状态字段的。(注意,用于接收高速缓存数据并将其路由到电路21中新分配的高速缓存行并且生成用于新分配的高速缓存行的状态信息的特定电路未示出,这是因为其在本领域中很好理解)。新高速缓存数据还被提供给错误控制电路66,使得错误控制电路66内的相应错误控制电路(对应于由代替逻辑49选择的路,其包括新分配的高速缓存行)可以生成合适的保护信息,以下将参考图6更详细地描述。该相应保护信息以及接收到的高速缓存数据还可以通过高速缓存控制电路38提供,用于存储到高速缓存电路21的新分配的高速缓存行。在所示的实施例中,高速缓存控制电路38还将控制信号36提供给高速缓存电路 21 (例如,用于读/写控制)。例如,在处理器30的控制下,高速缓存控制电路38可以更新高速缓存电路21。例如,处理器30可以执行特定高速缓存指令,以更新状态信息。而且,在一个实施例中,在处理器30的控制下,高速缓存控制电路38诸如经由特定高速缓存指令或者经由到特定目的寄存器指令的移动,可以更新错误动作控制寄存器48,例如以在检测到错误时动态地改变将执行的错误动作。虽然图2示出了可以用于实现图1的高速缓存沈的一部分的特定电路,但是可选实施例可以使用任何理想电路。可以使用多种电路实现。图 2中所示的电路仅用于示出一个可能实施例。图3以示意图形式示出错误动作控制寄存器48的一个实施例,其包括3位高速缓存错误动作(CEA)字段、1位高速缓存错误检验启用(CECE)字段、2位高速缓存错误检测类型(CEDT)字段、1位高速缓存无效(CINV)字段、以及1位高速缓存启用(CE)字段。图4和图5以表格形式示出图3中所示的错误动作控制寄存器48的字段的描述。例如,CEA是指示当高速缓存错误由错误控制电路66检测时,将采用什么错误动作的3位字段。图4示出用于CEA字段的多种编码的一个实例。在一个实施例中,当CEA字段具有值000时,错误检测导致机器检查异常,其然后可以由软件中断处理器处理。例如, 高速缓存26的内容可以由使用可用高速缓存阵列访问机制的软件检验。例如,在一个实施例中,对高速缓存阵列的访问可以通过对导致错误的高速缓存行的高速缓存标签、状态、保护和数据部分的内容的存储器映射访问而被作出。可替换地,对高速缓存阵列的访问可以通过一个或多个测试访问寄存器或者直接高速缓存访问控制和数据寄存器作出,以获得高速缓存行的状态。以此方式,错误的检测被报告给处理器30,导致处理器机器检查异常或软件处理的中断,并且从而错误的检测对于处理器30是非透明的。在一个实施例中,以不修改高速缓存的内容来生成机器检查异常,其中,异常允许登记检测到的错误并且检查高速缓存内的存储信息,以收集关于检测到的错误的信息。然后,软件可以登记任何期望的统计信息或关于错误的类型的其他信息、或者检测到的错误与数据处理系统10的其他状态的关系。在一个实施例中,据此,软件可以执行一个或多个校正操作,以允许通过中断程序的处理器继续执行。在一个实施例中,当CEA字段具有值001时,错误检测导致自动无效操作,其中,例如,导致高速缓存错误的高速缓存行被无效。在一个实施例中,即使导致高速缓存错误的高速缓存行不导致高速缓存命中,导致高速缓存错误的高速缓存行也被无效。这可以通过否定导致高速缓存错误的高速缓存行的状态字段的有效位而作出。而且,不生成机器检查异常,从而提供透明操作,其中,该错误动作对于处理器30是透明的。在该情况下,在一个实施例中,高速缓存行的无效导致发生高速缓存丢失,而不是发出软件异常的信号,并且高速缓存行可以从存储器16或存储器观重新填充,从而消除了软错误,并且允许处理以没有异常来正常进行,导致透明操作。在一个实施例中,当CEA字段具有值010时,错误检测导致机器检查异常和自动无效。该错误动作允许通过机器检查异常登记错误的发生,并且通过使导致高速缓存错误的高速缓存行无效,排除相同错误的再次发生。排除错误的再次发生可以防止机器检查异常处理器遭受相同错误并且在循环中变为阻塞的情况。在一个实施例中,CEA字段的该设置 (其导致机器检查异常和自动无效)被用作“重新执行”在产生问题的行(即,包括错误的高速缓存行)被无效之后检测错误的指令的机制。即,在一个实施例中,采用机器检查异常的效果导致正被执行的指令将被抑制,并且来自机器检查异常的正常软件返回机制导致在被无效之后指令被重新执行。这可以简化路线的一些实现,诸如对导致错误检测的数据高速缓存的访问,使得硬件不必须指出特定路,以在检测到错误之后重新执行指令。在一个实施例中,当CEA字段具有值011时,如果高速缓存行是干净高速缓存行 (其中,干净高速缓存行是与诸如存储器观或16这样的存储器一致的高速缓存行,从而包括与存储器中的相应位置相同的数据),则错误检测导致自动无效。然而,如果高速缓存行是脏高速缓存行时(即,修改后的高速缓存行,其中,高速缓存行与存储器不一致,从而包括关于存储在存储器观或16中的相应位置处的数据被修改的数据),则错误检测导致机器检查异常,并且高速缓存行保留不变。注意,在这种情况下,如果脏高速缓存行被无效,则由于存储器观或16中的相应存储器位置不包括存储在脏高速缓存行中的最新数据,失去存储器一致性。在一个实施例中,避免脏行的无效允许软件错误处理器尝试达到可恢复状态,用于脏行遇到软错误的情况,但是对于软错误发生在干净行上的正常情况,操作以透明方式继续进行。在一个实施例中,当CEA字段具有值100时,错误检测导致自动校正(诸如,通过错误校正方案)。在该实例中,错误动作不包括高速缓存行无效,并且不生成机器检查异常。 该错误动作提供错误发生的最透明。即,该错误动作提供高速缓存错误到处理器30的最大透明。在一个实施例中,当CEA字段具有值101时,错误检测导致自动校正(诸如,通过错误校正方案),并且导致机器检查异常。以此方式,即使错误可以被透明地校正,错误的可见性经由机器检查异常被提供给处理器30。在所示实施例中,用于CEA字段的值110和111被保留用于可能的未来使用。从而,可以看出CEA字段如何能够提供高速缓存错误到处理器30的透明度的变化等级。例如, 在图4的实施例中,提供最透明度的错误动作是与CEA值001或110相关的那些,其中,执行自动无效或者执行自动校正。在这些情况的一个中,错误检测对于处理器30是透明的, 其中,处理器30的操作不由于高速缓存错误而被中断或者干扰。然而,包括生成机器检查异常的错误动作是非透明的。这些非透明动作可以允许登记或者与将执行的错误发生相关的其他软件处理。还参考图4,CECE是禁用或启用高速缓存错误检验的1位字段。例如,当CECE字段具有值0时,禁用错误检验。例如,在这种情况下,所有错误控制电路66都可能不能执行任何错误检测和/或校正。例如,当CECE字段具有值1时,启用错误检验。在这种情况下,启用错误控制电路66,并且错误控制电路66根据错误动作控制寄存器48中的其他设置(诸如,CEA和CEDT字段)操作。CEDT是指示将执行的高速缓存错误检测的类型的2位字段。 例如,当CEDT字段具有值00时,选择奇偶检验错误检测(例如,单个位错误检测),并且当 CEDT字段具有值01时,选择错误检测码(EDC)错误检测(例如,多个位错误检测)。在EDC 的情况下,注意,可以执行或者可以不执行错误校正码(ECC)操作。例如,CEA字段的设置将帮助确定是否将执行错误校正。在图5中,CINV字段是指示高速缓存无效操作是否将被执行的1位字段。例如, 当CINV字段具有值0时,不执行高速缓存无效,但是当CINV字段具有值1时,执行高速缓存无效操作。例如,当设置为“1”时,高速缓存无效操作由硬件启动。一旦完成,该位就被重置为“0”。在一个实施例中,在无效操作进行中时写入“1”将导致未定义的操作,并且在无效操作进行中时将“0”写入该位将被忽略。而且,在一个实施例中,不管CE字段的值如何,高速缓存无效操作都发生。还参考图5,CE字段是指示高速缓存是否被启用的1位字段。例如,当CE字段具有值0时,高速缓存被禁用,并且高速缓存查找不被执行用于处理器访问。然而,其他高速缓存控制操作仍然可用。当CE字段具有值1时,高速缓存被启用。在可选实施例中,根据需要,错误动作控制寄存器48可以包括更多或更少字段, 并且每个字段可以包括更多或更少位。虽然图2中示出了高速缓存沈的一种类型的结构, 但是高速缓存26的可选实施例可以使用任何期望的或合适的结构。图2中所示的结构仅是一种可能的代表性结构。可以使用允许期望的高速缓存错误动作的任何高速缓存结构。图6示出根据本发明的一个实施例的表示高速缓存沈的一部分的电路31。电路 31包括存储器存储电路40,其表示高速缓存电路21的路0的部分。存储器存储电路40包括多个库和保护存储(protection storage) 45。在所示实施例中,存储器存储电路40包括 8个库库0 42,库1 43,…库7 44。可选实施例可以包括任何数量的库。在所示实施例中,库0-7表示路0的高速缓存数据部分,其中,每个库都是1字节宽,并且保护存储45表示路0的保护部分。库0-7中的每个都存储N个字节,一个字节对应于组0至N-I中的每个。从而,在所示实施例中,具有8个库,路0的每个高速缓存数据字段都存储双字。如果路0的每个高速缓存数据字段存储多于双字,则当需要时,电路40应该包括更多库、或者更宽库,并且当需要时,应该包括更大保护存储。还要注意,图3在此的描述类似地应用于路 0-7中的每个。电路31包括路0错误控制电路,其是错误控制电路66的一部分。路0错误控制电路双向连接至存储器存储电路40 (到高速缓存电路21的路0的部分),并且包括路0选择逻辑60、模式逻辑50 (其被连接以从错误动作控制寄存器48接收信息)、共享异-ORO(OR) 树52、以及错误检测和校正逻辑M (其也被连接,以从错误动作控制寄存器48接收信息)。 模式逻辑50基于错误动作控制寄存器48的CEDT字段的值,将模式指示符62输出至路0 选择逻辑60的控制输入。在一个实施例中,模式62指示什么错误检测模式电路31正在操作。例如,在所示实施例中,基于控制寄存器48中的CEDT控制字段的值,模式62指示电路 31是在EDC模式(多个位错误检测)下操作还是在奇偶检验模式(单个位错误检测)下操作。注意,在一个实施例中,当高速缓存错误检验被启用时(当CECE字段具有值1时),模式指示符62基于CEDT控制字段的值被输出。然而,在一个实施例中,当CECE控制字段指示高速缓存错误检验没有被启用时(当CECE字段具有值0时),模式62被设置成使得路0 选择逻辑60从电路40而不是错误检测和校正逻辑M选择输出,并且禁用错误检测和校正逻辑M。在EDC模式下,保护存储45的每个条目都为库0_7内的相应条目存储相应检验位。例如,保护存储45的第一条目存储与存储在库0-7中的每个的第一条目中的数据对应的检验位。在奇偶检验模式下,保护存储45的每个条目都存储与库0-7的每个中的条目对应的奇偶检验位。例如,在奇偶检验模式下,保护存储45的第一条目为库0-7的每个中的第一条目存储奇偶检验位。从而,在其中存在8个库的所示实施例中,保护存储45的每个条目都存储奇偶检验的8位,每一个用于库0-7中的每个。在一个实施例中,这些相同的8 位被用于在EDC模式下为在库0-7中的集体的64位数据存储检验位56。在EDC模式下,共享XOR树52被连接以从库0至库7中的每个并且从保护存储45 接收信息。在EDC模式下,共享XOR树52基于从高速缓存控制电路38的其他部分接收的信息(其可以来自总线对)、或者从库0-7中的每个中的特定条目接收的信息、或者两者的结合,生成被提供给保护存储45用于存储在相应条目中的检验位56。而且,在EDC模式下, 共享XOR树52基于从库0-7中的每个中的特定条目接收的信息和来自保护存储45的相应检验位,生成被提供给校正逻辑M的校正子位58。在EDC模式下,错误检测和校正逻辑M 还从库0-7中的每个中的特定条目接收信息,并且使用相应校正子位58执行多个位错误检测。如果检测到错误,则控制电路66执行由错误动作控制寄存器48的CEA字段指示的错误动作。如果CEA字段指示自动校正将发生(诸如,当CEA字段具有值100或101时),则错误检测和校正逻辑M还校正接收到的信息,并且将校正后的信息从库0-7的特定条目提供至路0选择逻辑60。从而,路0选择逻辑60基于模式62的值,将校正逻辑M的输出提供到输出选择逻辑37 (如果在自动校正将被执行的EDC模式下),或者直接将库0-7中的一个或多个的输出提供到输出选择逻辑37 (如果在自动校正将不执行的EDC模式下或者在奇偶检验模式下)。当高速缓存命中在路0中发生时,输出选择逻辑37选择路0选择逻辑60的输出以提供给总线对。注意,在奇偶检验模式下,相应奇偶检验位还可以从保护存储45提供给输出选择逻辑37。而且,错误检测和校正逻辑M可以将错误指示符提供给总线24,以指示错误是否发生。在一个实施例中,由CEA字段的值指示的错误动作的其他部分可以通过错误控制电路66的其他部分、高速缓存控制电路38、或处理器30或其结合执行。例如,基于错误指示符或者响应于错误指示符,当由CEA字段指示时,可以生成机器检查异常,或者可以执行自动无效。从而,对于在奇偶检验模式下的高速缓存命中读取操作,或者当用EDC操作时,选择逻辑60将库0-7中的一个或多个的访问条目的输出以及相应奇偶检验位提供给输出选择逻辑37。对于在ECC模式下的高速缓存命中读取操作,选择逻辑60将错误检测和校正逻辑M的输出提供给输出选择逻辑37。对于奇偶检验模式下的高速缓存命中写入操作或者当在奇偶检验模式下高速缓存丢失时执行的高速缓存分配操作,写入数据被直接提供给库 0-7中的一个或多个中的条目,其由写入操作访问地址寻址。即,可以对库0-7中的任何数量的库执行写入,并且在共享XOR树52中生成之后,在保护存储45的相应条目中的相应奇偶检验位还基于每位被更新。以此方式,如果仅一个库被写入以作为写入操作的结果,则仅保护存储45的相应条目中的一位被更新。在奇偶检验模式下奇偶检验位的更新可以以已知方式通过控制逻辑66 (未示出)内的逻辑执行。对于在EDC模式下的全部写入操作,其中,所有库0-7都被写入(即,其中,全部高速缓存数据字段被写入),不需要执行读取-修改-写入(RMW)操作。以此方式,可以通过一次或单次访问(例如,在单个处理器周期或者单个时钟周期)执行全部写入操作(写入到存储器存储电路40的所有库)。在这种情况下,写入数据被提供给由全部写入操作访问地址寻址的库0-7中的每个条目。写入数据还被提供给共享XOR树52,其生成相应检验位并且经由检验位56将它们提供给保护存储45,用于存储在相应条目中。在一个实施例中, 共享XOR树52是组合逻辑,其中,当将写入数据写入到库0-7时,在相同处理器或者时钟周期中可以完成检验位的生成和写回。对于EDC模式下的部分写入操作,其中,不是所有库0-7都被写入,需要读取_修改-写入(RMW)。从而,对不是所有库0-7(即,少于全部高速缓存数据字段)执行写入操作要求多次访问(例如,多个处理器周期或者时钟周期),并且不能像在全部写入操作的情况下一样通过单次访问执行。由于实现读取-修改-写入操作的复杂性,在一些实施例中可能不支持对不是所有库0-7的写入操作。图7以流程图形式示出根据本发明的一个实施例的用于操作图1的数据处理系统 10的方法。该方法开始于框70,错误动作被设置为执行自动校正并且不报告(关于以上关于图4提供的CEA字段的实例,在框70中,CEA字段可以被设置为控制值100)。然后,流程进行至框72,其中,执行关键应用部分。由于不报告错误(例如,不生成机器检查异常)并且不要求错误的登记,所以利用最大透明度执行关键应用部分。以此方式,错误检测和校正功能对处理器30是透明的。然后,流程进行至框74,其中,错误动作被设置成执行具有报告的自动校正(关于以上关于图4提供的CEA字段的实例,在框74中,CEA字段可以被设置为控制值101)。然后,流程进行至框76,其中,执行具有最大可见度(即,最小透明度)的诊断应用。在这种情况下,由于最小透明度,当这种错误通过例如生成机器检查异常发生时, 错误被校正但是处理器30被告知。例如,在一个实施例中,诊断应用可以通过改变电源电压(VDD)、频率、访问模式等来加压操作极限参数。从而,通过动态地改变CEA字段的值,可以为不同类型的应用实现多种等级的透明度(即,对处理器30的多种等级的可见度)。例如,在一个实施例中,可以限定时间间隔,其具有第一部分(从时间0到中间时间)以及第二部分(从中间时间到时间X),如沿着图7的流程图的左侧所示的。在一个实施例中,该时间间隔可以重复,使得每次重复时间间隔,利用最小可见度和最大透明度在时间间隔的第一部分期间执行关键应用部分,并且利用最大可见度和最小透明度在时间间隔的第二部分期间执行诊断应用。从而,CEA字段的设置可以被用于允许特定时间间隔(其然后可以重复)内的不同类型的应用之间的透明度和错误动作的改变。到现在,应该想到,已经提供了通过响应于高速缓存中的软错误的检测动态地改变将被执行的错误动作,来改变对处理器30的透明度的等级的方法。这可以例如通过寄存器内的用户可编程控制字段(诸如,CEA字段,当需要时,其可以被修改)的使用,以改变所采用的错误动作来实现。例如,可以在执行不同类型的应用之前改变错误动作,使得当在高速缓存中检测到软错误时,不同类型的应用涉及不同等级的透明度。从而,控制字段(诸如,CEA字段)的使用可以允许灵活机制估计并且克服软错误。由于在极大程度上,实现本发明的装置由本领域技术人员已知的电子组件和电路构成,所以如上所述,为于理解和判断本发明的基本概念并且为了不模糊或脱离本发明的教导,除了认为必须时,都不在任何更大范围内解释电路详情。在适当的时候,上述实施例中的一些可以使用多种不同信息处理系统实现。例如, 虽然图1及其论述描述典型信息处理结构,但是该典型结构仅用于在论述本发明的多个方面时提供有用参考。当然,为了论述的目的,该结构的描述已经被简化,并且其仅是可以根据本发明使用的多种不同类型的合适结构之一。本领域技术人员将认识到,逻辑框之间的边界仅是示意性的,并且可选实施例可以合并逻辑框或电路元件,或者强制将功能的可选分解加于多种逻辑块或电路元件。从而,将明白,在此描述的结构仅是实例,并且实际上,可以实现完成相同功能的多种其他结构。在理论上,但是仍然具有明确的意义,实现相同功能的组件的任何布置都有效地“相关”,使得实现期望的功能。因此,为了实现特定功能在此结合的任何两个组件都可以看做相互“相关”,使得实现期望的功能,而不管结构或中间组件如何。同样地,如此相关的任何两个组件也可以被看做相互“可操作地连接”、或者“可操作地耦合”以实现期望的功能。还例如,在一个实施例中,数据处理系统10的所示元件是位于单个集成电路或者相同设备内的电路。可替换地,数据处理系统10可以包括任何数量的独立集成电路或者相互互联的独立设备。例如,存储器16可以位于与处理模块12相同的集成电路上或者在独立集成电路上、或者位于分散地独立于数据处理系统10的其他元件的另一外围设备或者从属设备内。外围设备18和20还可以位于独立集成电路或设备上。还例如,数据处理系统10或其部分可以是物理电路的软件或代码表示或者可变换为物理电路的逻辑表示。这样,数据处理系统10可以以任何合适类型的硬件描述语言表达。而且,本领域技术人员将认识到,上述操作的功能之间的边界仅是示意性的。多个操作的功能可以结合到单个操作中,和/或单个操作的功能可以分配在另外的操作中。而且,可选实施例可以包括特定操作的多个实例,并且操作的顺序在多种其他实施例中可以改变。在此所述的所有或一些软件可以是例如从计算机可读介质诸如存储器16或其他计算机系统上的其他介质接收的数据处理系统10的元件。这种计算机可读介质可以永久地、可拆除地或者远程地连接至信息处理系统诸如数据处理系统10。计算机可读介质可以包括但不限于例如以下任何数量的介质磁性存储介质,包括光盘和磁带存储介质;光学存储介质,诸如,光盘介质(例如,CD-R0M、CD-R等)和数字视频盘存储介质;非易失性存储器存储介质,包括基于半导体的存储器单元,诸如,FLASH存储器、EEPROM、EPROM、ROM ;铁磁数字存储器;MRAM ;易失性存储介质,包括寄存器、缓存或高速缓存、主存储器、RAM等;以及数据发送介质,包括计算机网络、点到点电信设备、以及载波发送介质,仅以这些为例。在一个实施例中,数据处理系统10是计算机系统,诸如个人计算机系统。其他实施例可以包括不同类型的计算机系统。计算机系统是可以被设计成给一个或多个用户提供独立计算功率的信息处理系统。计算机系统可以以多种形式建立,包括但不限于主机、微型计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏、自动和其他嵌入式系统、手机和多种其他无线设备。典型计算机系统包括至少一个处理单元、相关存储器和多个输入/输出(I/O)设备。计算机系统根据程序处理信息并且经由I/O设备产生因此得到的输出信息。程序是指令的列表,诸如特定应用程序和/或操作系统。计算机程序通常被内部存储在计算机可读存储介质上或者经由计算机可读发送介质被发送至计算机系统。计算机进程通常包括执行(运行)程序或者程序的一部分、当前程序值和状态信息、以及由操作系统使用以管理处理的执行的资源。父进程可以创建其他子进程,以帮助执行父进程的整体功能。由于父进程特别创建子进程,以执行父进程的整体功能的一部分,所以由子进程(以及孙辈进程等) 执行的功能有时可以被描述为由父进程执行。虽然参考特定实施例描述了本发明,但是在不脱离在以下权利要求中阐述的本发明的范围内可以作出多种修改和改变。例如,在地址字段中使用的多个位可以根据系统要求被修改。从而,说明书和附图被认为是示意性的而不是限制性的,并且所有这种修改都旨在包括在本发明的范围内。在此关于特定实施例描述的任何益处、优点或问题的解决方案都不旨在构建为任何或所有权利要求的关键的所要求的或者基本的特征或元件。在此使用的术语“连接”不旨在限制为直接连接或者机械连接。而且,在此使用的术语“一个”被限定一个或多于一个。而且,权利要求中的引入语诸如“至少一个”和“一个或多个”的使用应该不被构建为暗示即使当相同权利要求包括引入语“一个或多个”或者“至少一个”以及诸如“一个”的不定冠词时,由不定冠词“一个”引入另一权利要求元件将包括这种引入的权利要求元件的任何特定权利要求限制到仅包括一个这种元件的发明。同样也适用于定冠词。除非另外说明,诸如“第一”和“第二”的术语被用于在这种术语描述的元件之间进行任意区分。从而,这些术语不必须用于指示这种元件的时间或其他优先顺序。以下是本发明的多种实施例。第1项包括数据处理系统,其包括处理器、连接至处理器的高速缓存、以及连接至高速缓存的高速缓存控制电路。高速缓存控制电路进一步包括用户可编程错误动作控制寄存器,用于存储用于当检测到高速缓存错误时选择将被采用的多个错误动作中的一个的控制值,其中,由用户选择的控制值的第一值以不发生异常来实现包括高速缓存错误的高速缓存行的自动无效,并且由用户选择的控制值的第二值以发生异常来执行包括高速缓存错误的高速缓存行的自动无效,并且其中,用户对确定将采用的错误动作是透明操作还是非透明操作的控制值进行动态编程。第2项包括第1项的数据处理系统,其中,用户可编程错误动作控制寄存器内的控制值的第三值以不修改高速缓存的内容来生成异常,该异常允许登记检测到的错误并且检查高速缓存内的存储信息,以收集关于检测到的错误的信息。 第3项包括第1项的数据处理系统,其中,用户可编程错误动作控制寄存器内的控制值的第三值以没有与检测到的错误相关的信息的无效并且不生成异常来实现检测到的错误的自动校正。第4项包括第1项的数据处理系统,其中,用户可编程错误动作控制寄存器内的控制值的第三值实现检测到的错误的自动校正并且生成异常。第5项包括第1项的数据处理系统,其中,当在时间间隔的第一部分期间,控制值被设置为第一值时,利用高速缓存错误对处理器的透明度执行应用的第一部分,并且当在时间间隔的第二部分期间,控制值被设置为第二值时,其中,以高速缓存错误对处理器可见来执行应用的第二部分。第6项包括第 1项的数据处理系统,其中,如果高速缓存行是干净高速缓存行,用户可编程错误动作控制寄存器内的控制值的第三值实现包括高速缓存错误的高速缓存行的自动无效,并且如果高速缓存行是脏高速缓存行,则生成异常并且高速缓存行保留不变。第7项包括第1项的数据处理系统,其中,用户可编程错误动作控制寄存器进一步包括第二控制值,第二控制值控制高速缓存控制电路的错误检测的启动。第8项包括以下方法,包括将处理器连接至高速缓存;将高速缓存控制电路连接
15至高速缓存,用于执行高速缓存内的信息的错误检测;以及将用户可编程错误动作控制寄存器连接至高速缓存控制电路。用户可编程错误动作控制寄存器存储用于当检测到高速缓存错误时选择将被采用的多个错误动作中的一个的控制值,其中,由用户选择的控制值的第一值以不发生异常来实现包括高速缓存错误的高速缓存行的自动无效,并且由用户选择的控制值的第二值以发生异常来实现包括高速缓存错误的高速缓存行的自动无效,并且其中,用户对确定将被采用的错误动作是透明操作还是非透明操作的控制值进行动态编程。 第9项包括第8项的方法,并且进一步包括分配用户可编程错误动作控制寄存器内的控制值的第三值,以在不修改高速缓存的内容的情况下生成异常,该异常允许登记检测到的错误并且检查高速缓存内的存储信息,以收集关于检测到的错误的信息。第10项包括第8项的方法,并且进一步包括分配用户可编程错误动作控制寄存器内的控制值的第三值,用于以没有与检测到的错误相关的信息的无效并且不生成异常来实现检测到的错误的自动校正。第11项包括第8项的方法,并且进一步包括分配用户可编程错误动作控制寄存器内的控制值的第三值,以实现检测到的错误的自动校正并且生成异常。第12项包括第8项的方法,并且进一步包括在时间间隔的第一部分期间将控制值设置为第一值,其中,利用高速缓存错误对处理器的透明度执行应用的第一部分;并且在时间间隔的第二部分期间将控制值设置为第二值,其中,以高速缓存错误对处理器可见来执行应用的第二部分。第13项包括第8项的方法,并且进一步包括在用户可编程错误动作控制寄存器中提供第二控制值,第二控制值控制高速缓存控制电路的错误检测的启动。第14项包括第8项的方法,并且进一步包括分配用户可编程错误动作控制寄存器内的控制值的第三值,从而,如果高速缓存行是干净高速缓存行,则实现包括高速缓存错误的高速缓存行的自动无效,并且如果高速缓存行是脏高速缓存行,则生成异常并且保留高速缓存行不变。
第15项包括数据处理系统,其包括处理器、连接至处理器的高速缓存、以及连接至高速缓存的高速缓存控制电路。高速缓存控制电路执行错误检测,并且进一步包括用户可编程错误动作控制寄存器,用于存储用于当检测到高速缓存错误时将选择被采用的一种类型的错误动作的控制值。第16项包括第15项的数据处理系统,其中,可编程错误动作控制寄存器的控制值进一步包括第一值,允许处理对处理器透明的高速缓存错误;以及第二值,允许通过采用控制器可见的异常来处理高速缓存错误。第17项包括第16项的数据处理系统,其中,用户可编程错误动作控制寄存器内的控制值的第三值以不修改高速缓存的内容来生成异常,该异常允许登记检测到的错误并且检查高速缓存内的存储信息,以收集关于检测到的错误的信息。第18项包括第16项的数据处理系统,其中,用户可编程错误动作控制寄存器内的控制值的第三值以没有与检测到的错误相关的信息的无效并且不生成异常来实现检测到的错误的自动校正。第19项包括第16项的数据处理系统,其中,用户可编程错误动作控制寄存器内的控制值的第三值实现检测到的错误的自动校正并且生成异常。第20项包括第16项的数据处理系统,其中,在时间间隔的第一部分期间,控制值被设置为第一值,其中,利用高速缓存错误对处理器的透明度执行应用的第一部分,并且在时间间隔的第二部分期间,控制值被设置为第二值,其中,以高速缓存错误对处理器可见来执行应用的第二部分。
权利要求
1.一种数据处理系统,包括处理器;高速缓存,连接至所述处理器;以及高速缓存控制电路,连接至所述高速缓存,所述高速缓存控制电路执行错误检测,所述高速缓存控制电路进一步包括用户可编程错误动作控制寄存器,用于存储控制值,所述控制值用于当检测到高速缓存错误时选择将被采用的多个错误动作中的一个,其中,由用户选择的所述控制值的第一值以不发生异常来实现包括所述高速缓存错误的高速缓存行的自动无效,并且由所述用户选择的所述控制值的第二值以发生异常来实现包括所述高速缓存错误的高速缓存行的自动无效,其中,所述用户对确定将被采用的错误动作是透明操作还是非透明操作的所述控制值进行动态编程。
2.根据权利要求1所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器内的所述控制值的第三值以不修改所述高速缓存的内容来生成异常,所述异常允许登记检测到的错误并且检查所述高速缓存内的存储信息,以收集关于所述检测到的错误的信息。
3.根据权利要求1所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器内的所述控制值的第三值以没有与检测到的错误相关的信息的无效并且不生成异常来实现所述检测到的错误的自动校正。
4.根据利要求1所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器内的所述控制值的第三值实现检测到的错误的自动校正并且生成异常。
5.根据权利要求1所述的数据处理系统,其中,当在时间间隔的第一部分期间,所述控制值被设置为所述第一值时,以高速缓存错误对所述处理器的透明来执行应用的第一部分,并且当在所述时间间隔的第二部分期间,所述控制值被设置为所述第二值时,以高速缓存错误对所述处理器可见来执行所述应用的第二部分。
6.根据权利要求1所述的数据处理系统,其中,如果包括所述高速缓存错误的所述高速缓存行是干净高速缓存行,则所述用户可编程错误动作控制寄存器内的所述控制值的第三值实现所述高速缓存行的自动无效,并且如果所述高速缓存行是脏高速缓存行,则生成异常并且保留所述高速缓存行不改变。
7.根据权利要求1所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器进一步包括第二控制值,所述第二控制值控制所述高速缓存控制电路的所述错误检测的启用。
8.一种方法,包括 将处理器连接至高速缓存;将高速缓存控制电路连接至所述高速缓存,用于执行所述高速缓存内的信息的错误检测;以及将用户可编程错误动作控制寄存器连接至所述高速缓存控制电路,所述用户可编程错误动作控制寄存器存储控制值,所述控制值用于当检测到高速缓存错误时选择将被采用的多个错误动作中的一个,其中,由用户选择的所述控制值的第一值以不发生异常来实现包括所述高速缓存错误的高速缓存行的自动无效,并且由所述用户选择的所述控制值的第二值以发生异常来实现包括所述高速缓存错误的高速缓存行的自动无效,其中,所述用户对确定将被采用的错误动作是透明操作还是非透明操作的所述控制值进行动态编程。
9.根据权利要求8所述的方法,进一步包括分配所述用户可编程错误动作控制寄存器内的所述控制值的第三值,以在不修改所述高速缓存的内容的情况下生成异常,所述异常允许登记检测到的错误并且检查所述高速缓存内的存储信息,以收集关于所述检测到的错误的信息。
10.根据权利要求8所述的方法,进一步包括分配在所述用户可编程错误动作控制寄存器内的所述控制值的第三值,以在没有与检测到的错误相关的信息的无效并且不生成异常的情况下,实现所述检测到的错误的自动校正。
11.根据权利要求8所述的方法,进一步包括分配在所述用户可编程错误动作控制寄存器内的所述控制值的第三值,以实现检测到的错误的自动校正并且生成异常。
12.根据权利要求8所述的方法,进一步包括在时间间隔的第一部分期间,将所述控制值设置为所述第一值,其中,以高速缓存错误对所述处理器的透明来执行应用的第一部分;以及在所述时间间隔的第二部分期间,将所述控制值设置为所述第二值,其中,以高速缓存错误对所述处理器可见来执行所述应用的第二部分。
13.根据权利要求8所述的方法,进一步包括在所述用户可编程错误动作控制寄存器中提供第二控制值,所述第二控制值控制所述高速缓存控制电路的所述错误检测的启用。
14.根据权利要求8所述的方法,进一步包括如果包括所述高速缓存错误的所述高速缓存行是干净高速缓存行,则分配所述用户可编程错误动作控制寄存器内的所述控制值的第三值,以实现所述高速缓存行的自动无效, 并且如果所述高速缓存行是脏高速缓存行,则生成异常并且保留所述高速缓存行不改变。
15.一种数据处理系统,包括处理器;高速缓存,连接至所述处理器;以及高速缓存控制电路,连接至所述高速缓存,所述高速缓存控制电路执行错误检测,所述高速缓存控制电路进一步包括用户可编程错误动作控制寄存器,用于存储控制值,所述控制值用于当检测到高速缓存错误时选择将被采用的一种类型的错误动作。
16.根据权利要求15所述的数据处理系统,其中,所述可编程错误动作控制寄存器的所述控制值进一步包括第一值,允许处理对所述处理器透明的高速缓存错误;以及第二值,允许通过采用对所述处理器可见的异常来处理所述高速缓存错误。
17.根据权利要求16所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器内的所述控制值的第三值以不修改所述高速缓存的内容来生成异常,所述异常允许登记检测到的错误,并且检查所述高速缓存内的存储信息,以收集关于所述检测到的错误的信肩、ο
18.根据权利要求16所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器内的所述控制值的第三值以没有与检测到的错误相关的信息的无效并且不生成异常来实现所述检测到的错误的自动校正。
19.根据权利要求16所述的数据处理系统,其中,所述用户可编程错误动作控制寄存器内的所述控制值的第三值实现检测到的错误的自动校正并且生成异常。
20.根据权利要求16所述的数据处理系统,其中,在时间间隔的第一部分期间,所述控制值被设置为第一值,其中,以高速缓存错误对所述处理器的透明来执行应用的第一部分, 并且在所述时间间隔的第二部分期间,所述控制值被设置为所述第二值,其中,以高速缓存错误对所述处理器可见来执行所述应用的第二部分。
全文摘要
数据处理系统(10)和操作方法,数据处理系统具有连接至高速缓存(26)的处理器(30)。高速缓存控制电路(38)连接至高速缓存并且执行错误检测。用户可编程错误动作控制寄存器(48)存储用于当检测到高速缓存错误时选择将被采用的一种类型的错误动作的控制值。控制值的第一值允许处理对处理器透明的高速缓存错误,并且第二值允许通过采用对处理器可见的异常来处理高速缓存错误。响应于控制值的其他值,可以采用对检测到的错误的多种代替动作,包括错误校正或高速缓存行无效。
文档编号G06F11/08GK102216904SQ200980146148
公开日2011年10月12日 申请日期2009年10月29日 优先权日2008年11月18日
发明者加里·L·惠森亨特, 威廉·C·莫耶 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1